pax_global_header00006660000000000000000000000064145314565370014527gustar00rootroot0000000000000052 comment=9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03 json-3.11.3/000077500000000000000000000000001453145653700125655ustar00rootroot00000000000000json-3.11.3/.cirrus.yml000066400000000000000000000006201453145653700146730ustar00rootroot00000000000000arm_container: image: gcc:latest check_task: check_script: - wget https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz - tar xfz cmake-3.20.2.tar.gz - cd cmake-3.20.2 - ./configure - make cmake ctest -j4 - cd .. - mkdir build - cd build - ../cmake-3.20.2/bin/cmake .. -DJSON_FastTests=ON - make -j4 - cd tests - ../../cmake-3.20.2/bin/ctest -j4 json-3.11.3/.clang-format000066400000000000000000000046121453145653700151430ustar00rootroot00000000000000#AccessModifierOffset: 2 AlignAfterOpenBracket: Align AlignConsecutiveAssignments: false #AlignConsecutiveBitFields: false AlignConsecutiveDeclarations: false AlignConsecutiveMacros: false AlignEscapedNewlines: Right #AlignOperands: AlignAfterOperator AlignTrailingComments: true AllowAllArgumentsOnNextLine: false AllowAllConstructorInitializersOnNextLine: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: Empty AllowShortCaseLabelsOnASingleLine: false #AllowShortEnumsOnASingleLine: true AllowShortFunctionsOnASingleLine: Empty AllowShortIfStatementsOnASingleLine: Never AllowShortLambdasOnASingleLine: Empty AllowShortLoopsOnASingleLine: false AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes BinPackArguments: false BinPackParameters: false #BitFieldColonSpacing: Both BreakBeforeBraces: Custom # or Allman BraceWrapping: AfterCaseLabel: true AfterClass: true AfterControlStatement: Always AfterEnum: true AfterFunction: true AfterNamespace: false AfterStruct: true AfterUnion: true AfterExternBlock: false BeforeCatch: true BeforeElse: true #BeforeLambdaBody: false #BeforeWhile: false SplitEmptyFunction: false SplitEmptyRecord: false SplitEmptyNamespace: false BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeComma BreakStringLiterals: false ColumnLimit: 0 CompactNamespaces: false ConstructorInitializerIndentWidth: 2 Cpp11BracedListStyle: true PointerAlignment: Left FixNamespaceComments: true IncludeBlocks: Preserve #IndentCaseBlocks: false IndentCaseLabels: true IndentGotoLabels: false IndentPPDirectives: BeforeHash IndentWidth: 4 KeepEmptyLinesAtTheStartOfBlocks: false MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ReflowComments: false SortIncludes: true SortUsingDeclarations: true SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: false SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: false SpaceBeforeParens: ControlStatements SpaceBeforeRangeBasedForLoopColon: true SpaceBeforeSquareBrackets: false SpaceInEmptyBlock: false SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 2 SpacesInAngles: false SpacesInCStyleCastParentheses: false SpacesInConditionalStatement: false SpacesInContainerLiterals: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: c++11 TabWidth: 4 UseTab: Never json-3.11.3/.clang-tidy000066400000000000000000000046561453145653700146340ustar00rootroot00000000000000Checks: '*, -altera-id-dependent-backward-branch, -altera-struct-pack-align, -altera-unroll-loops, -android-cloexec-fopen, -bugprone-easily-swappable-parameters, -cert-err58-cpp, -concurrency-mt-unsafe, -cppcoreguidelines-avoid-const-or-ref-data-members, -cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-goto, -cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-avoid-non-const-global-variables, -cppcoreguidelines-macro-usage, -cppcoreguidelines-pro-bounds-array-to-pointer-decay, -cppcoreguidelines-pro-bounds-constant-array-index, -cppcoreguidelines-pro-bounds-pointer-arithmetic, -cppcoreguidelines-pro-type-reinterpret-cast, -cppcoreguidelines-pro-type-union-access, -cppcoreguidelines-rvalue-reference-param-not-moved, -cppcoreguidelines-virtual-class-destructor, -fuchsia-default-arguments-calls, -fuchsia-default-arguments-declarations, -fuchsia-overloaded-operator, -google-explicit-constructor, -google-readability-function-size, -google-runtime-int, -google-runtime-references, -hicpp-avoid-goto, -hicpp-explicit-conversions, -hicpp-function-size, -hicpp-no-array-decay, -hicpp-no-assembler, -hicpp-signed-bitwise, -hicpp-uppercase-literal-suffix, -llvm-header-guard, -llvm-include-order, -llvmlibc-*, -misc-use-anonymous-namespace, -misc-confusable-identifiers, -misc-include-cleaner, -misc-no-recursion, -misc-non-private-member-variables-in-classes, -modernize-concat-nested-namespaces, -modernize-type-traits, -modernize-use-constraints, -modernize-use-nodiscard, -modernize-use-trailing-return-type, -performance-enum-size, -readability-function-cognitive-complexity, -readability-function-size, -readability-identifier-length, -readability-magic-numbers, -readability-redundant-access-specifiers, -readability-simplify-boolean-expr, -readability-uppercase-literal-suffix' CheckOptions: - key: hicpp-special-member-functions.AllowSoleDefaultDtor value: 1 WarningsAsErrors: '*' #HeaderFilterRegex: '.*nlohmann.*' HeaderFilterRegex: '.*hpp$' json-3.11.3/.github/000077500000000000000000000000001453145653700141255ustar00rootroot00000000000000json-3.11.3/.github/CODEOWNERS000066400000000000000000000004131453145653700155160ustar00rootroot00000000000000# JSON for Modern C++ was originally written by Niels Lohmann. # Since 2013, over 250 contributors have helped to improve the library. # This CODEOWNERS file is only to make sure that @nlohmann is requested # for a code review in case of a pull request. * @nlohmann json-3.11.3/.github/CODE_OF_CONDUCT.md000066400000000000000000000062151453145653700167300ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mail@nlohmann.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ json-3.11.3/.github/CONTRIBUTING.md000066400000000000000000000200221453145653700163520ustar00rootroot00000000000000[![Issue Stats](http://issuestats.com/github/nlohmann/json/badge/pr?style=flat)](http://issuestats.com/github/nlohmann/json) [![Issue Stats](http://issuestats.com/github/nlohmann/json/badge/issue?style=flat)](http://issuestats.com/github/nlohmann/json) # How to contribute This project started as a little excuse to exercise some of the cool new C++11 features. Over time, people actually started to use the JSON library (yey!) and started to help improve it by proposing features, finding bugs, or even fixing my mistakes. I am really [thankful](https://github.com/nlohmann/json/blob/master/README.md#thanks) for this and try to keep track of all the helpers. To make it as easy as possible for you to contribute and for me to keep an overview, here are a few guidelines which should help us avoid all kinds of unnecessary work or disappointment. And of course, this document is subject to discussion, so please [create an issue](https://github.com/nlohmann/json/issues/new/choose) or a pull request if you find a way to improve it! ## Private reports Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to . ## Prerequisites Please [create an issue](https://github.com/nlohmann/json/issues/new/choose), assuming one does not already exist, and describe your concern. Note you need a [GitHub account](https://github.com/signup/free) for this. ## Describe your issue Clearly describe the issue: - If it is a bug, please describe how to **reproduce** it. If possible, attach a complete example which demonstrates the error. Please also state what you **expected** to happen instead of the error. - If you propose a change or addition, try to give an **example** how the improved code could look like or how to use it. - If you found a compilation error, please tell us which **compiler** (version and operating system) you used and paste the (relevant part of) the error messages to the ticket. Please stick to the provided issue template ([bug report](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE/bug.yml) if possible. For questions, feature or support requests, please [open a discussion](https://github.com/nlohmann/json/discussions/new). ## Files to change :exclamation: Before you make any changes, note the single-header files [`single_include/nlohmann/json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) and [`single_include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json_fwd.hpp) are **generated** from the source files in the [`include/nlohmann` directory](https://github.com/nlohmann/json/tree/develop/include/nlohmann). Please **do not** edit the files `single_include/nlohmann/json.hpp` and `single_include/nlohmann/json_fwd.hpp` directly, but change the `include/nlohmann` sources and regenerate the files by executing `make amalgamate`. To make changes, you need to edit the following files: 1. [`include/nlohmann/*`](https://github.com/nlohmann/json/tree/develop/include/nlohmann) - These files are the sources of the library. Before testing or creating a pull request, execute `make amalgamate` to regenerate `single_include/nlohmann/json.hpp` and `single_include/nlohmann/json_fwd.hpp`. 2. [`tests/src/unit-*.cpp`](https://github.com/nlohmann/json/tree/develop/tests/src) - These files contain the [doctest](https://github.com/onqtam/doctest) unit tests which currently cover [100 %](https://coveralls.io/github/nlohmann/json) of the library's code. Before creating a pull request, execute `make pretty` to make sure that the style is correct, as this will be checked by the CI. If you add or change a feature, please also add a unit test to this file. The unit tests can be compiled and executed with ```sh $ mkdir build $ cd build $ cmake .. $ cmake --build . $ ctest ``` The test cases are also executed with several different compilers on [Travis](https://travis-ci.org/nlohmann/json) once you open a pull request. ## Note - If you open a pull request, the code will be automatically tested with [Valgrind](http://valgrind.org)'s Memcheck tool to detect memory leaks. Please be aware that the execution with Valgrind _may_ in rare cases yield different behavior than running the code directly. This can result in failing unit tests which run successfully without Valgrind. - There is a Makefile target `make pretty` which runs [Artistic Style](http://astyle.sourceforge.net) to fix indentation. If possible, run it before opening the pull request. Otherwise, we shall run it afterward. ## Please don't - The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means. - Specifically, I am aware of compilation problems with **Microsoft Visual Studio** (there even is an [issue label](https://github.com/nlohmann/json/issues?utf8=✓&q=label%3A%22visual+studio%22+) for this kind of bug). I understand that even in 2016, complete C++11 support isn't there yet. But please also understand that I do not want to drop features or uglify the code just to make Microsoft's sub-standard compiler happy. The past has shown that there are ways to express the functionality such that the code compiles with the most recent MSVC - unfortunately, this is not the main objective of the project. - Please refrain from proposing changes that would **break [JSON](https://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension. - We shall not extend the library to **support comments**. There is quite some [controversy](https://www.reddit.com/r/programming/comments/4v6chu/why_json_doesnt_support_comments_douglas_crockford/) around this topic, and there were quite some [issues](https://github.com/nlohmann/json/issues/376) on this. We believe that JSON is fine without comments. - We do not preserve the **insertion order of object elements**. The [JSON standard](https://tools.ietf.org/html/rfc8259.html) defines objects as "an unordered collection of zero or more name/value pairs". To this end, this library does not preserve insertion order of name/value pairs. (In fact, keys will be traversed in alphabetical order as `std::map` with `std::less` is used by default.) Note this behavior conforms to the standard, and we shall not change it to any other order. If you do want to preserve the insertion order, you can specialize the object type with containers like [`tsl::ordered_map`](https://github.com/Tessil/ordered-map) or [`nlohmann::fifo_map`](https://github.com/nlohmann/fifo_map). - Please do not open pull requests that address **multiple issues**. ## Wanted The following areas really need contribution: - Extending the **continuous integration** toward more exotic compilers such as Android NDK, Intel's Compiler, or the bleeding-edge versions Clang. - Improving the efficiency of the **JSON parser**. The current parser is implemented as a naive recursive descent parser with hand coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep the parser inside the `json.hpp` header, and I am not aware of approaches similar to [`re2c`](http://re2c.org) for parsing. - Extending and updating existing **benchmarks** to include (the most recent version of) this library. Though efficiency is not everything, speed and memory consumption are very important characteristics for C++ developers, so having proper comparisons would be interesting. json-3.11.3/.github/FUNDING.yml000066400000000000000000000000631453145653700157410ustar00rootroot00000000000000github: nlohmann custom: http://paypal.me/nlohmann json-3.11.3/.github/ISSUE_TEMPLATE/000077500000000000000000000000001453145653700163105ustar00rootroot00000000000000json-3.11.3/.github/ISSUE_TEMPLATE/bug.yaml000066400000000000000000000064031453145653700177540ustar00rootroot00000000000000name: Bug Report description: Create a bug report labels: - 'kind: bug' body: - type: markdown attributes: value: > Thanks for taking the time to fill out this bug report! Make sure you give it a short and specific **title** so that the report is searchable and uniquely identifiable. Note that this form is for bug reports only. Please [open a discussion](https://github.com/nlohmann/json/discussions/new) for questions, feature requests, or support requests - type: textarea id: summary attributes: label: Description description: > Please provide an abstract description of the issue to the developers, and why you consider it to be a bug. Please include any specific links to the documentation, JSON specification, or code. validations: required: true - type: textarea id: reproduce attributes: label: Reproduction steps description: > How do you trigger the bug? Please walk us through step by step. Be as specific as possible. validations: required: true - type: textarea id: results attributes: label: Expected vs. actual results description: > Please describe what you expected to happen after the steps above and what actually happened. validations: required: true - type: textarea id: code attributes: label: Minimal code example description: > If possible, provide a small and self-contained example that triggers the bug. Please understand that we cannot analyze and debug large code bases. Please do not paste screenshots here. render: Shell - type: textarea id: output attributes: label: Error messages description: > Please provide any kind of error output (compilation errors, exception messages, stack traces, etc.) which can help to diagnose the error. render: Shell - type: input id: compiler attributes: label: Compiler and operating system description: > On which operating systems and compilers have you observed the issue? Include as many relevant details about the environment you experienced the bug in. Make sure you use a [supported compiler](https://github.com/nlohmann/json#supported-compilers). validations: required: true - type: input id: version attributes: label: Library version description: > Which version of the library did you use? If it is a released version, please enter the version number (e.g., 3.11.3). Otherwise, please enter the commit hash. If you got the library from another source as the GitHub repository (e.g., via a package manager), please also state this. validations: required: true - type: checkboxes id: validation attributes: label: Validation description: > Please check these additional steps: options: - label: The bug also occurs if the latest version from the [`develop`](https://github.com/nlohmann/json/tree/develop) branch is used. - label: I can successfully [compile and run the unit tests](https://github.com/nlohmann/json#execute-unit-tests). json-3.11.3/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000002741453145653700203030ustar00rootroot00000000000000blank_issues_enabled: false contact_links: - name: Ask a question url: https://github.com/nlohmann/json/discussions about: Ask questions and discuss with other community members json-3.11.3/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000047131453145653700177330ustar00rootroot00000000000000[Describe your pull request here. Please read the text below the line, and make sure you follow the checklist.] * * * ## Pull request checklist Read the [Contribution Guidelines](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) for detailed information. - [ ] Changes are described in the pull request, or an [existing issue is referenced](https://github.com/nlohmann/json/issues). - [ ] The test suite [compiles and runs](https://github.com/nlohmann/json/blob/develop/README.md#execute-unit-tests) without error. - [ ] [Code coverage](https://coveralls.io/github/nlohmann/json) is 100%. Test cases can be added by editing the [test suite](https://github.com/nlohmann/json/tree/develop/test/src). - [ ] The source code is amalgamated; that is, after making changes to the sources in the `include/nlohmann` directory, run `make amalgamate` to create the single-header files `single_include/nlohmann/json.hpp` and `single_include/nlohmann/json_fwd.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change). ## Please don't - The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means. - Specifically, I am aware of compilation problems with **Microsoft Visual Studio** (there even is an [issue label](https://github.com/nlohmann/json/issues?utf8=✓&q=label%3A%22visual+studio%22+) for this kind of bug). I understand that even in 2016, complete C++11 support isn't there yet. But please also understand that I do not want to drop features or uglify the code just to make Microsoft's sub-standard compiler happy. The past has shown that there are ways to express the functionality such that the code compiles with the most recent MSVC - unfortunately, this is not the main objective of the project. - Please refrain from proposing changes that would **break [JSON](https://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension. - Please do not open pull requests that address **multiple issues**. json-3.11.3/.github/SECURITY.md000066400000000000000000000006761453145653700157270ustar00rootroot00000000000000# Security Policy ## Reporting a Vulnerability Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to . You can use [this key](https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69) for encryption. json-3.11.3/.github/config.yml000066400000000000000000000021431453145653700161150ustar00rootroot00000000000000# Configuration for sentiment-bot - https://github.com/behaviorbot/sentiment-bot # *Required* toxicity threshold between 0 and .99 with the higher numbers being the most toxic # Anything higher than this threshold will be marked as toxic and commented on sentimentBotToxicityThreshold: .7 # *Required* Comment to reply with sentimentBotReplyComment: > Please be sure to review the [code of conduct](https://github.com/nlohmann/json/blob/develop/CODE_OF_CONDUCT.md) and be respectful of other users. cc/ @nlohmann # Configuration for request-info - https://github.com/behaviorbot/request-info # *Required* Comment to reply with requestInfoReplyComment: > We would appreciate it if you could provide us with more info about this issue or pull request! Please check the [issue template](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE.md) and the [pull request template](https://github.com/nlohmann/json/blob/develop/.github/PULL_REQUEST_TEMPLATE.md). # *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given requestInfoLabelToAdd: "state: needs more info" json-3.11.3/.github/external_ci/000077500000000000000000000000001453145653700164225ustar00rootroot00000000000000json-3.11.3/.github/external_ci/appveyor.yml000066400000000000000000000056511453145653700210210ustar00rootroot00000000000000version: '{build}' # only build PRs and commits to develop branch # (see https://help.appveyor.com/discussions/questions/55079-two-builds-per-commit-to-pull-request) branches: only: - develop only_commits: files: - .github/external_ci/appveyor.yml - cmake/ - include/ - tests/ - CMakeLists.txt environment: matrix: - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 configuration: Debug platform: x86 CXX_FLAGS: "/W4 /WX" CMAKE_OPTIONS: "" GENERATOR: Visual Studio 14 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 configuration: Release platform: x86 CXX_FLAGS: "/W4 /WX" CMAKE_OPTIONS: "" GENERATOR: Visual Studio 14 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 configuration: Release platform: x86 name: with_win_header CXX_FLAGS: "/W4 /WX" CMAKE_OPTIONS: "" GENERATOR: Visual Studio 14 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 configuration: Release platform: x86 CXX_FLAGS: "/permissive- /std:c++latest /utf-8 /W4 /WX" CMAKE_OPTIONS: "" GENERATOR: Visual Studio 15 2017 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 configuration: Release platform: x86 CXX_FLAGS: "/W4 /WX" CMAKE_OPTIONS: "-DJSON_ImplicitConversions=OFF" GENERATOR: Visual Studio 16 2019 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 configuration: Release platform: x64 CXX_FLAGS: "/W4 /WX" CMAKE_OPTIONS: "" GENERATOR: Visual Studio 14 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 configuration: Release platform: x64 CXX_FLAGS: "/permissive- /std:c++latest /Zc:__cplusplus /utf-8 /W4 /WX" CMAKE_OPTIONS: "" GENERATOR: Visual Studio 15 2017 init: - cmake --version - msbuild /version install: - if "%platform%"=="x86" set GENERATOR_PLATFORM=Win32 before_build: # for with_win_header build, inject the inclusion of Windows.h to the single-header library - ps: if ($env:name -Eq "with_win_header") { $header_path = "single_include\nlohmann\json.hpp" } - ps: if ($env:name -Eq "with_win_header") { "#include `n" + (Get-Content $header_path | Out-String) | Set-Content $header_path } - cmake . -G "%GENERATOR%" -A "%GENERATOR_PLATFORM%" -DCMAKE_CXX_FLAGS="%CXX_FLAGS%" -DCMAKE_IGNORE_PATH="C:/Program Files/Git/usr/bin" -DJSON_BuildTests=On "%CMAKE_OPTIONS%" build_script: - cmake --build . --config "%configuration%" --parallel 2 test_script: - if "%configuration%"=="Release" ctest -C "%configuration%" --parallel 2 --output-on-failure # On Debug builds, skip test-unicode_all # as it is extremely slow to run and cause # occasional timeouts on AppVeyor. # More info: https://github.com/nlohmann/json/pull/1570 - if "%configuration%"=="Debug" ctest --exclude-regex "test-unicode" -C "%configuration%" --parallel 2 --output-on-failure json-3.11.3/.github/labeler.yml000066400000000000000000000007361453145653700162640ustar00rootroot00000000000000version: 1 labels: - label: "documentation" files: - "README.md" - label: "documentation" files: - "docs/.*" - label: "tests" files: - "tests/.*" - label: "CMake" files: - ".*CMakeLists.txt" - label: "CMake" files: - "cmake/.*" - label: "CI" files: - "github/workflows/.*" - label: "CI" files: - "github/external_ci/.*" - label: "S" size-below: 10 - label: "M" size-above: 9 size-below: 100 - label: "L" size-above: 100 json-3.11.3/.github/stale.yml000066400000000000000000000012631453145653700157620ustar00rootroot00000000000000# Number of days of inactivity before an issue becomes stale daysUntilStale: 30 # Number of days of inactivity before a stale issue is closed daysUntilClose: 7 # Issues with these labels will never be considered stale exemptLabels: - pinned - security # Label to use when marking an issue as stale staleLabel: "state: stale" # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: false json-3.11.3/.github/workflows/000077500000000000000000000000001453145653700161625ustar00rootroot00000000000000json-3.11.3/.github/workflows/check_amalgamation.yml000066400000000000000000000045071453145653700225020ustar00rootroot00000000000000name: "Check amalgamation" on: pull_request: permissions: read-all jobs: save: runs-on: ubuntu-latest steps: - name: Save PR number run: | mkdir -p ./pr echo ${{ github.event.number }} > ./pr/number echo ${{ github.event.pull_request.user.login }} > ./pr/author - uses: actions/upload-artifact@v2 with: name: pr path: pr/ check: runs-on: ubuntu-latest env: MAIN_DIR: ${{ github.workspace }}/main INCLUDE_DIR: ${{ github.workspace }}/main/single_include/nlohmann TOOL_DIR: ${{ github.workspace }}/tools/tools/amalgamate ASTYLE_FLAGS: > --style=allman --indent=spaces=4 --indent-modifiers --indent-switches --indent-preproc-block --indent-preproc-define --indent-col1-comments --pad-oper --pad-header --align-pointer=type --align-reference=type --add-brackets --convert-tabs --close-templates --lineend=linux --preserve-date --formatted steps: - name: Checkout pull request uses: actions/checkout@v3 with: path: main ref: ${{ github.event.pull_request.head.sha }} - name: Checkout tools uses: actions/checkout@v3 with: path: tools ref: develop - name: Install astyle run: | sudo apt-get update sudo apt-get install astyle - name: Check amalgamation run: | cd $MAIN_DIR rm -fr $INCLUDE_DIR/json.hpp~ $INCLUDE_DIR/json_fwd.hpp~ cp $INCLUDE_DIR/json.hpp $INCLUDE_DIR/json.hpp~ cp $INCLUDE_DIR/json_fwd.hpp $INCLUDE_DIR/json_fwd.hpp~ python3 $TOOL_DIR/amalgamate.py -c $TOOL_DIR/config_json.json -s . python3 $TOOL_DIR/amalgamate.py -c $TOOL_DIR/config_json_fwd.json -s . echo "Format (1)" astyle $ASTYLE_FLAGS --suffix=none --quiet $INCLUDE_DIR/json.hpp $INCLUDE_DIR/json_fwd.hpp diff $INCLUDE_DIR/json.hpp~ $INCLUDE_DIR/json.hpp diff $INCLUDE_DIR/json_fwd.hpp~ $INCLUDE_DIR/json_fwd.hpp astyle $ASTYLE_FLAGS $(find docs/examples include tests -type f \( -name '*.hpp' -o -name '*.cpp' -o -name '*.cu' \) -not -path 'tests/thirdparty/*' -not -path 'tests/abi/include/nlohmann/*' | sort) echo Check find $MAIN_DIR -name '*.orig' -exec false {} \+ json-3.11.3/.github/workflows/cifuzz.yml000066400000000000000000000013251453145653700202200ustar00rootroot00000000000000name: CIFuzz on: [pull_request] permissions: contents: read jobs: Fuzzing: runs-on: ubuntu-latest steps: - name: Build Fuzzers id: build uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master with: oss-fuzz-project-name: 'json' dry-run: false language: c++ - name: Run Fuzzers uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: oss-fuzz-project-name: 'json' fuzz-seconds: 300 dry-run: false language: c++ - name: Upload Crash uses: actions/upload-artifact@v3 if: failure() && steps.build.outcome == 'success' with: name: artifacts path: ./out/artifacts json-3.11.3/.github/workflows/codeql-analysis.yml000066400000000000000000000017161453145653700220020ustar00rootroot00000000000000name: "Code scanning - action" on: push: branches: - develop - master - release/* pull_request: schedule: - cron: '0 19 * * 1' workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: CodeQL-Build: runs-on: ubuntu-latest permissions: security-events: write steps: - name: Checkout repository uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: c-cpp # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild uses: github/codeql-action/autobuild@v2 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 json-3.11.3/.github/workflows/comment_check_amalgamation.yml000066400000000000000000000053471453145653700242270ustar00rootroot00000000000000name: Comment Check Amalgamation on: workflow_run: workflows: ["Check amalgamation"] types: - completed permissions: {} jobs: comment: if: ${{ github.event.workflow_run.conclusion == 'failure' }} runs-on: ubuntu-latest permissions: contents: read actions: read issues: read pull-requests: write steps: - name: 'Download artifact' uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0 with: script: | var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, run_id: ${{github.event.workflow_run.id }}, }); var matchArtifact = artifacts.data.artifacts.filter((artifact) => { return artifact.name == "pr" })[0]; var download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, artifact_id: matchArtifact.id, archive_format: 'zip', }); var fs = require('fs'); fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data)); - run: unzip pr.zip - name: 'Comment on PR' uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | var fs = require('fs'); const author = fs.readFileSync('./author') const issue_number = Number(fs.readFileSync('./number')); const opts = github.rest.issues.listForRepo.endpoint.merge({ owner: context.repo.owner, repo: context.repo.repo, creator: author, state: 'all' }) let first = true const issues = await github.paginate(opts) for (const issue of issues) { if (issue.number === issue_number) { continue } if (issue.pull_request) { first = false break } } await github.rest.issues.createComment({ issue_number: issue_number, owner: context.repo.owner, repo: context.repo.repo, body: '## 🔴 Amalgamation check failed! 🔴\nThe source code has not been amalgamated.' + (first ? ' @' + author + ' Please read and follow the [Contribution Guidelines]' + '(https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change).' : '') }) json-3.11.3/.github/workflows/labeler.yml000066400000000000000000000005141453145653700203130ustar00rootroot00000000000000name: "Pull Request Labeler" on: pull_request_target: types: [opened, synchronize] permissions: {} jobs: label: permissions: contents: read pull-requests: write runs-on: ubuntu-latest steps: - uses: srvaroa/labeler@master env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" json-3.11.3/.github/workflows/macos.yml000066400000000000000000000033671453145653700200200ustar00rootroot00000000000000name: macOS on: push: branches: - develop - master - release/* pull_request: workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: xcode_1: runs-on: macos-11 strategy: matrix: xcode: ['11.7', '12.4', '12.5.1', '13.0'] env: DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON - name: Build run: cmake --build build --parallel 10 - name: Test run: cd build ; ctest -j 10 --output-on-failure xcode_2: runs-on: macos-12 strategy: matrix: xcode: ['13.1', '13.2.1', '13.3.1', '13.4.1', '14.0', '14.0.1', '14.1'] env: DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON - name: Build run: cmake --build build --parallel 10 - name: Test run: cd build ; ctest -j 10 --output-on-failure xcode_standards: runs-on: macos-latest strategy: matrix: standard: [11, 14, 17, 20, 23] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_TestStandards=${{ matrix.standard }} - name: Build run: cmake --build build --parallel 10 - name: Test run: cd build ; ctest -j 10 --output-on-failure json-3.11.3/.github/workflows/publish_documentation.yml000066400000000000000000000020051453145653700233010ustar00rootroot00000000000000name: Publish documentation # publish the documentation on every merge to develop branch on: push: branches: - develop paths: - docs/mkdocs/** - docs/examples/** workflow_dispatch: permissions: contents: read # we don't want to have concurrent jobs, and we don't want to cancel running jobs to avoid broken publications concurrency: group: documentation cancel-in-progress: false jobs: publish_documentation: if: github.repository == 'nlohmann/json' runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: Install and update PlantUML run: sudo apt-get update ; sudo apt-get install -y plantuml - name: Install virtual environment run: make install_venv -C docs/mkdocs - name: Build documentation run: make build -C docs/mkdocs - name: Deploy documentation uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs/mkdocs/site json-3.11.3/.github/workflows/ubuntu.yml000066400000000000000000000172721453145653700202400ustar00rootroot00000000000000name: Ubuntu on: push: branches: - develop - master - release/* pull_request: workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: ci_test_clang: runs-on: ubuntu-latest container: silkeh/clang:dev steps: - name: Install git and unzip run: apt-get update ; apt-get install -y git unzip - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_clang ci_test_gcc: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_gcc ci_static_analysis: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 strategy: matrix: target: [ci_cppcheck, ci_test_valgrind, ci_test_amalgamation, ci_test_single_header, ci_single_binaries, ci_infer] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} ci_static_analysis_ubuntu: runs-on: ubuntu-latest strategy: matrix: target: [ci_cpplint, ci_reproducible_tests, ci_non_git_tests, ci_offline_testdata] steps: - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} ci_static_analysis_clang: runs-on: ubuntu-latest container: silkeh/clang:dev strategy: matrix: target: [ci_clang_tidy, ci_test_clang_sanitizer, ci_clang_analyze] steps: - name: Install git, clang-tools, and unzip run: apt-get update ; apt-get install -y git clang-tools unzip - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} ci_cmake_options: runs-on: ubuntu-latest container: ubuntu:focal strategy: matrix: target: [ci_cmake_flags, ci_test_diagnostics, ci_test_noexceptions, ci_test_noimplicitconversions, ci_test_legacycomparison, ci_test_noglobaludls] steps: - name: Install build-essential run: apt-get update ; apt-get install -y build-essential unzip wget git - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} ci_test_coverage: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 permissions: contents: read checks: write steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_coverage - name: Archive coverage report uses: actions/upload-artifact@v3 with: name: code-coverage-report path: ${{ github.workspace }}/build/html - name: Publish report to Coveralls uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: ${{ github.workspace }}/build/json.info.filtered.noexcept ci_test_compilers_gcc: runs-on: ubuntu-latest strategy: matrix: compiler: ['4', '5', '6', '7', '8', '9', '10', '11', '12', 'latest'] container: gcc:${{ matrix.compiler }} steps: - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_default ci_test_compilers_clang: runs-on: ubuntu-latest strategy: matrix: compiler: ['3.5', '3.6', '3.7', '3.8', '3.9', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15-bullseye', 'latest'] container: silkeh/clang:${{ matrix.compiler }} steps: - name: Install unzip and git run: apt-get update ; apt-get install -y unzip git - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Set env FORCE_STDCPPFS_FLAG for clang 7 / 8 / 9 / 10 run: echo "JSON_FORCED_GLOBAL_COMPILE_OPTIONS=-DJSON_HAS_FILESYSTEM=0;-DJSON_HAS_EXPERIMENTAL_FILESYSTEM=0" >> "$GITHUB_ENV" if: ${{ matrix.compiler == '7' || matrix.compiler == '8' || matrix.compiler == '9' || matrix.compiler == '10' }} - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_default ci_test_compilers: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 strategy: matrix: compiler: [g++-4.8] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_compiler_${{ matrix.compiler }} ci_test_standards_gcc: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 strategy: matrix: standard: [11, 14, 17, 20, 23] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_gcc_cxx${{ matrix.standard }} ci_test_standards_clang: runs-on: ubuntu-latest container: silkeh/clang:latest strategy: matrix: standard: [11, 14, 17, 20, 23] steps: - name: Install git and unzip run: apt-get update ; apt-get install -y git unzip - uses: actions/checkout@v3 - name: Get latest CMake and ninja uses: lukka/get-cmake@v3.27.7 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_test_clang_cxx${{ matrix.standard }} ci_cuda_example: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.4.0 steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ci_cuda_example ci_icpc: runs-on: ubuntu-latest container: ghcr.io/nlohmann/json-ci:v2.2.0 steps: - uses: actions/checkout@v2 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: | . /opt/intel/oneapi/setvars.sh cmake --build build --target ci_icpc ci_reuse_compliance: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v3 - name: Install REUSE tool run: python -m pip install reuse - name: Run REUSE lint run: reuse lint ci_test_documentation: runs-on: ubuntu-latest strategy: matrix: target: [ci_test_examples, ci_test_api_documentation] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -DJSON_CI=On - name: Build run: cmake --build build --target ${{ matrix.target }} json-3.11.3/.github/workflows/windows.yml000066400000000000000000000110071453145653700203760ustar00rootroot00000000000000name: Windows on: push: branches: - develop - master - release/* pull_request: workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: mingw: runs-on: windows-2019 strategy: matrix: architecture: [x64, x86] steps: - uses: actions/checkout@v3 - name: Set up MinGW uses: egor-tensin/setup-mingw@v2 with: platform: ${{ matrix.architecture }} version: 12.2.0 # https://github.com/egor-tensin/setup-mingw/issues/14 - name: Run CMake run: cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On - name: Build run: cmake --build build --parallel 10 - name: Test run: cd build ; ctest -j 10 -C Debug --output-on-failure msvc2019: runs-on: windows-2019 strategy: matrix: build_type: [Debug, Release] architecture: [Win32, x64] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX" if: matrix.build_type == 'Release' - name: Run CMake run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX" if: matrix.build_type == 'Debug' - name: Build run: cmake --build build --config ${{ matrix.build_type }} --parallel 10 - name: Test run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure msvc2019_latest: runs-on: windows-2019 steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -G "Visual Studio 16 2019" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX" - name: Build run: cmake --build build --config Release --parallel 10 - name: Test run: cd build ; ctest -j 10 -C Release --output-on-failure msvc2022: runs-on: windows-2022 strategy: matrix: build_type: [Debug, Release] architecture: [Win32, x64] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX" if: matrix.build_type == 'Release' - name: Run CMake run: cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX" if: matrix.build_type == 'Debug' - name: Build run: cmake --build build --config ${{ matrix.build_type }} --parallel 10 - name: Test run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure msvc2022_latest: runs-on: windows-2022 steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -G "Visual Studio 17 2022" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX" - name: Build run: cmake --build build --config Release --parallel 10 - name: Test run: cd build ; ctest -j 10 -C Release --output-on-failure clang: runs-on: windows-2019 strategy: matrix: version: [11, 12, 13, 14, 15] steps: - uses: actions/checkout@v3 - name: Install Clang run: curl -fsSL -o LLVM${{ matrix.version }}.exe https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ matrix.version }}.0.0/LLVM-${{ matrix.version }}.0.0-win64.exe ; 7z x LLVM${{ matrix.version }}.exe -y -o"C:/Program Files/LLVM" - name: Run CMake run: cmake -S . -B build -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On - name: Build run: cmake --build build --parallel 10 - name: Test run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure clang-cl-11: runs-on: windows-2019 strategy: matrix: architecture: [Win32, x64] steps: - uses: actions/checkout@v3 - name: Run CMake run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -T ClangCL -DJSON_BuildTests=On - name: Build run: cmake --build build --config Debug --parallel 10 - name: Test run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure json-3.11.3/.gitignore000066400000000000000000000012201453145653700145500ustar00rootroot00000000000000*.dSYM *.o *.gcno *.gcda .DS_Store .wsjcpp-logs/* .wsjcpp/* /.idea /cmake-build-* # Visual Studio / Visual Studio Code /.vs/ /.vscode/ /out/ # clangd cache /.cache/ # build directories (vscode-cmake-tools, user-defined, ...) /build*/ # fuzzers /tests/corpus_* /tests/parse_*_fuzzer # documentation /docs/docset/docSet.dsidx /docs/docset/JSON_for_Modern_C++.docset/ /docs/docset/JSON_for_Modern_C++.tgz /docs/mkdocs/docs/__pycache__/ /docs/mkdocs/docs/examples/ /docs/mkdocs/docs/images/json.gif /docs/mkdocs/site/ /docs/mkdocs/venv/ # serve_header /localhost.pem /localhost-key.pem /serve_header.yml # Swift Package Manager build directory /.buildjson-3.11.3/.lgtm.yml000066400000000000000000000001151453145653700143260ustar00rootroot00000000000000path_classifiers: thirdparty: - /tools/amalgamate - /tools/cpplint json-3.11.3/.reuse/000077500000000000000000000000001453145653700137665ustar00rootroot00000000000000json-3.11.3/.reuse/README.md000066400000000000000000000004231453145653700152440ustar00rootroot00000000000000# REUSE Software This directory contains supporting files to make the project compliant with the REUSE specification. The root `Makefile` contains a target `reuse` that updates copyright headers and checks for compliance. See for more information. json-3.11.3/.reuse/dep5000066400000000000000000000014761453145653700145560ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: json Upstream-Contact: Niels Lohmann Source: https://github.com/nlohmann/json Files: * Copyright: 2013-2022 Niels Lohmann License: MIT Files: tests/thirdparty/doctest/* Copyright: 2016-2021 Viktor Kirilov License: MIT Files: tests/thirdparty/fifo_map/* Copyright: 2015-2017 Niels Lohmann License: MIT Files: tests/thirdparty/Fuzzer/* Copyright: 2003-2022, LLVM Project. License: Apache-2.0 Files: tests/thirdparty/imapdl/* Copyright: 2017 Georg Sauthoff License: GPL-3.0-only Files: tools/amalgamate/* Copyright: 2012 Erik Edlund License: BSD-3-Clause Files: tools/gdb_pretty_printer Copyright: 2020 Hannes Domani License: MIT json-3.11.3/.reuse/templates/000077500000000000000000000000001453145653700157645ustar00rootroot00000000000000json-3.11.3/.reuse/templates/json.jinja2000066400000000000000000000005351453145653700200370ustar00rootroot00000000000000 __ _____ _____ _____ __| | __| | | | JSON for Modern C++ | | |__ | | | | | | version 3.11.3 |_____|_____|_____|_|___| https://github.com/nlohmann/json {% for copyright_line in copyright_lines %} {{ copyright_line }} {% endfor %} {% for expression in spdx_expressions %} SPDX-License-Identifier: {{ expression }} {% endfor %} json-3.11.3/.reuse/templates/json_support.jinja2000066400000000000000000000005571453145653700216370ustar00rootroot00000000000000 __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (supporting code) | | |__ | | | | | | version 3.11.3 |_____|_____|_____|_|___| https://github.com/nlohmann/json {% for copyright_line in copyright_lines %} {{ copyright_line }} {% endfor %} {% for expression in spdx_expressions %} SPDX-License-Identifier: {{ expression }} {% endfor %} json-3.11.3/BUILD.bazel000066400000000000000000000051121453145653700144420ustar00rootroot00000000000000cc_library( name = "json", hdrs = [ "include/nlohmann/adl_serializer.hpp", "include/nlohmann/byte_container_with_subtype.hpp", "include/nlohmann/detail/abi_macros.hpp", "include/nlohmann/detail/conversions/from_json.hpp", "include/nlohmann/detail/conversions/to_chars.hpp", "include/nlohmann/detail/conversions/to_json.hpp", "include/nlohmann/detail/exceptions.hpp", "include/nlohmann/detail/hash.hpp", "include/nlohmann/detail/input/binary_reader.hpp", "include/nlohmann/detail/input/input_adapters.hpp", "include/nlohmann/detail/input/json_sax.hpp", "include/nlohmann/detail/input/lexer.hpp", "include/nlohmann/detail/input/parser.hpp", "include/nlohmann/detail/input/position_t.hpp", "include/nlohmann/detail/iterators/internal_iterator.hpp", "include/nlohmann/detail/iterators/iter_impl.hpp", "include/nlohmann/detail/iterators/iteration_proxy.hpp", "include/nlohmann/detail/iterators/iterator_traits.hpp", "include/nlohmann/detail/iterators/json_reverse_iterator.hpp", "include/nlohmann/detail/iterators/primitive_iterator.hpp", "include/nlohmann/detail/json_custom_base_class.hpp", "include/nlohmann/detail/json_pointer.hpp", "include/nlohmann/detail/json_ref.hpp", "include/nlohmann/detail/macro_scope.hpp", "include/nlohmann/detail/macro_unscope.hpp", "include/nlohmann/detail/meta/call_std/begin.hpp", "include/nlohmann/detail/meta/call_std/end.hpp", "include/nlohmann/detail/meta/cpp_future.hpp", "include/nlohmann/detail/meta/detected.hpp", "include/nlohmann/detail/meta/identity_tag.hpp", "include/nlohmann/detail/meta/is_sax.hpp", "include/nlohmann/detail/meta/std_fs.hpp", "include/nlohmann/detail/meta/type_traits.hpp", "include/nlohmann/detail/meta/void_t.hpp", "include/nlohmann/detail/output/binary_writer.hpp", "include/nlohmann/detail/output/output_adapters.hpp", "include/nlohmann/detail/output/serializer.hpp", "include/nlohmann/detail/string_concat.hpp", "include/nlohmann/detail/string_escape.hpp", "include/nlohmann/detail/value_t.hpp", "include/nlohmann/json.hpp", "include/nlohmann/json_fwd.hpp", "include/nlohmann/ordered_map.hpp", "include/nlohmann/thirdparty/hedley/hedley.hpp", "include/nlohmann/thirdparty/hedley/hedley_undef.hpp", ], includes = ["include"], visibility = ["//visibility:public"], alwayslink = True, ) json-3.11.3/CITATION.cff000066400000000000000000000006321453145653700144600ustar00rootroot00000000000000cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: Lohmann given-names: Niels orcid: https://orcid.org/0000-0001-9037-795X email: mail@nlohmann.me website: https://nlohmann.me title: "JSON for Modern C++" version: 3.11.3 date-released: 2023-11-28 license: MIT repository-code: "https://github.com/nlohmann" url: https://json.nlohmann.me json-3.11.3/CMakeLists.txt000066400000000000000000000160141453145653700153270ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.1...3.14) ## ## PROJECT ## name and version ## project(nlohmann_json VERSION 3.11.3 LANGUAGES CXX) ## ## MAIN_PROJECT CHECK ## determine if nlohmann_json is built as a subproject (using add_subdirectory) or if it is the main project ## set(MAIN_PROJECT OFF) if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(MAIN_PROJECT ON) endif() ## ## INCLUDE ## ## set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) include(ExternalProject) ## ## OPTIONS ## if (POLICY CMP0077) # Allow CMake 3.13+ to override options when using FetchContent / add_subdirectory. cmake_policy(SET CMP0077 NEW) endif () # VERSION_GREATER_EQUAL is not available in CMake 3.1 if(${MAIN_PROJECT} AND (${CMAKE_VERSION} VERSION_EQUAL 3.13 OR ${CMAKE_VERSION} VERSION_GREATER 3.13)) set(JSON_BuildTests_INIT ON) else() set(JSON_BuildTests_INIT OFF) endif() option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ${JSON_BuildTests_INIT}) option(JSON_CI "Enable CI build targets." OFF) option(JSON_Diagnostics "Use extended diagnostic messages." OFF) option(JSON_GlobalUDLs "Place use-defined string literals in the global namespace." ON) option(JSON_ImplicitConversions "Enable implicit conversions." ON) option(JSON_DisableEnumSerialization "Disable default integer enum serialization." OFF) option(JSON_LegacyDiscardedValueComparison "Enable legacy discarded value comparison." OFF) option(JSON_Install "Install CMake targets during install step." ${MAIN_PROJECT}) option(JSON_MultipleHeaders "Use non-amalgamated version of the library." ON) option(JSON_SystemInclude "Include as system headers (skip for clang-tidy)." OFF) if (JSON_CI) include(ci) endif () ## ## CONFIGURATION ## include(GNUInstallDirs) set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME}) set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}" CACHE INTERNAL "") set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}") set(NLOHMANN_JSON_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") set(NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE "cmake/config.cmake.in") set(NLOHMANN_JSON_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}") set(NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}ConfigVersion.cmake") set(NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Config.cmake") set(NLOHMANN_JSON_CMAKE_PROJECT_TARGETS_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Targets.cmake") set(NLOHMANN_JSON_PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/pkgconfig") if (JSON_MultipleHeaders) set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/include/") message(STATUS "Using the multi-header code from ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}") else() set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/single_include/") message(STATUS "Using the single-header code from ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}") endif() if (NOT JSON_ImplicitConversions) message(STATUS "Implicit conversions are disabled") endif() if (JSON_DisableEnumSerialization) message(STATUS "Enum integer serialization is disabled") endif() if (JSON_LegacyDiscardedValueComparison) message(STATUS "Legacy discarded value comparison enabled") endif() if (JSON_Diagnostics) message(STATUS "Diagnostics enabled") endif() if (JSON_SystemInclude) set(NLOHMANN_JSON_SYSTEM_INCLUDE "SYSTEM") endif() ## ## TARGET ## create target and add include path ## add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE) add_library(${PROJECT_NAME}::${NLOHMANN_JSON_TARGET_NAME} ALIAS ${NLOHMANN_JSON_TARGET_NAME}) if (${CMAKE_VERSION} VERSION_LESS "3.8.0") target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_range_for) else() target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_std_11) endif() target_compile_definitions( ${NLOHMANN_JSON_TARGET_NAME} INTERFACE $<$>:JSON_USE_GLOBAL_UDLS=0> $<$>:JSON_USE_IMPLICIT_CONVERSIONS=0> $<$:JSON_DISABLE_ENUM_SERIALIZATION=1> $<$:JSON_DIAGNOSTICS=1> $<$:JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON=1> ) target_include_directories( ${NLOHMANN_JSON_TARGET_NAME} ${NLOHMANN_JSON_SYSTEM_INCLUDE} INTERFACE $ $ ) ## add debug view definition file for msvc (natvis) if (MSVC) set(NLOHMANN_ADD_NATVIS TRUE) set(NLOHMANN_NATVIS_FILE "nlohmann_json.natvis") target_sources( ${NLOHMANN_JSON_TARGET_NAME} INTERFACE $ $ ) endif() # Install a pkg-config file, so other tools can find this. CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkg-config.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" ) ## ## TESTS ## create and configure the unit test target ## if (JSON_BuildTests) include(CTest) enable_testing() add_subdirectory(tests) endif() ## ## INSTALL ## install header files, generate and install cmake config files for find_package() ## include(CMakePackageConfigHelpers) # use a custom package version config file instead of # write_basic_package_version_file to ensure that it's architecture-independent # https://github.com/nlohmann/json/issues/1697 configure_file( "cmake/nlohmann_jsonConfigVersion.cmake.in" ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE} @ONLY ) configure_file( ${NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE} ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} @ONLY ) if(JSON_Install) install( DIRECTORY ${NLOHMANN_JSON_INCLUDE_BUILD_DIR} DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR} ) install( FILES ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE} DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR} ) if (NLOHMANN_ADD_NATVIS) install( FILES ${NLOHMANN_NATVIS_FILE} DESTINATION . ) endif() export( TARGETS ${NLOHMANN_JSON_TARGET_NAME} NAMESPACE ${PROJECT_NAME}:: FILE ${NLOHMANN_JSON_CMAKE_PROJECT_TARGETS_FILE} ) install( TARGETS ${NLOHMANN_JSON_TARGET_NAME} EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME} INCLUDES DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR} ) install( EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME} NAMESPACE ${PROJECT_NAME}:: DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR} ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" DESTINATION ${NLOHMANN_JSON_PKGCONFIG_INSTALL_DIR} ) endif() json-3.11.3/ChangeLog.md000066400000000000000000011233611453145653700147450ustar00rootroot00000000000000# Changelog All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [3.11.2](https://github.com/nlohmann/json/releases/tag/3.11.2) (2022-08-12) [Full Changelog](https://github.com/nlohmann/json/compare/v3.11.1...3.11.2) - MSVC natvis visualizer does not work after introduction of inline ABI namespace [\#3696](https://github.com/nlohmann/json/issues/3696) - The use of parenthesis gives compilation errors in some situations [\#3682](https://github.com/nlohmann/json/issues/3682) - extern from/to\_json result in linker error [\#3657](https://github.com/nlohmann/json/issues/3657) - json\_fwd.hpp no longer standalone [\#3656](https://github.com/nlohmann/json/issues/3656) - regression: `.value` is compilation error. [\#3655](https://github.com/nlohmann/json/issues/3655) - Regression: no match for 'operator!=' comparing json\_pointer and const char \*/string\_t [\#3654](https://github.com/nlohmann/json/issues/3654) - Regression: call to member function 'value' is ambiguous [\#3652](https://github.com/nlohmann/json/issues/3652) - macOS 10.15 Actions runner image deprecation [\#3612](https://github.com/nlohmann/json/issues/3612) - generate\_natvis.py: validate version number; cleanup [\#3698](https://github.com/nlohmann/json/pull/3698) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add Python script for generating Natvis file and update file for 3.11.2 [\#3697](https://github.com/nlohmann/json/pull/3697) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - fix typo in json\_pointer.md [\#3692](https://github.com/nlohmann/json/pull/3692) ([eltociear](https://github.com/eltociear)) - Add amalgamated json-fwd.hpp to release [\#3687](https://github.com/nlohmann/json/pull/3687) ([nlohmann](https://github.com/nlohmann)) - Documentation updates for 3.11.2 [\#3686](https://github.com/nlohmann/json/pull/3686) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Make json\_pointer usable as map key \(again\) [\#3685](https://github.com/nlohmann/json/pull/3685) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Deprecate json\_pointer/string\_t comparisons [\#3684](https://github.com/nlohmann/json/pull/3684) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Restructure inline namespace and allow version component to be disabled [\#3683](https://github.com/nlohmann/json/pull/3683) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Properly constrain non-string json\_pointer overloads [\#3681](https://github.com/nlohmann/json/pull/3681) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Amalgamate the forward declaration header [\#3679](https://github.com/nlohmann/json/pull/3679) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix 'const' qualifier on bool& has no effect [\#3678](https://github.com/nlohmann/json/pull/3678) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix whitespace in workflow files [\#3675](https://github.com/nlohmann/json/pull/3675) ([nlohmann](https://github.com/nlohmann)) - Attempt to fix labeler permissions [\#3674](https://github.com/nlohmann/json/pull/3674) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Refine 'Publish documentation' workflow [\#3673](https://github.com/nlohmann/json/pull/3673) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Documentation change [\#3672](https://github.com/nlohmann/json/pull/3672) ([nlohmann](https://github.com/nlohmann)) - Add labeler action [\#3671](https://github.com/nlohmann/json/pull/3671) ([nlohmann](https://github.com/nlohmann)) - Complete contributor list [\#3670](https://github.com/nlohmann/json/pull/3670) ([nlohmann](https://github.com/nlohmann)) - Add json\_pointer/string\_t equality comparison operators [\#3664](https://github.com/nlohmann/json/pull/3664) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Reimplement value\(\) access functions [\#3663](https://github.com/nlohmann/json/pull/3663) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Complete contributor list [\#3662](https://github.com/nlohmann/json/pull/3662) ([nlohmann](https://github.com/nlohmann)) - Adjust naming of GitHub action jobs [\#3661](https://github.com/nlohmann/json/pull/3661) ([nlohmann](https://github.com/nlohmann)) - Publish documentation on push to develop branch [\#3660](https://github.com/nlohmann/json/pull/3660) ([nlohmann](https://github.com/nlohmann)) - Add Discord badge to README [\#3651](https://github.com/nlohmann/json/pull/3651) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Miscellaneous small fixes [\#3643](https://github.com/nlohmann/json/pull/3643) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Minor BJData fixes [\#3637](https://github.com/nlohmann/json/pull/3637) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Update CI [\#3626](https://github.com/nlohmann/json/pull/3626) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) ## [v3.11.1](https://github.com/nlohmann/json/releases/tag/v3.11.1) (2022-08-01) [Full Changelog](https://github.com/nlohmann/json/compare/v3.11.0...v3.11.1) - Regression: no matching literal operator for call to 'operator""\_json' [\#3645](https://github.com/nlohmann/json/issues/3645) - \_json operator""\(\) [\#3644](https://github.com/nlohmann/json/issues/3644) - Fix global UDLs [\#3646](https://github.com/nlohmann/json/pull/3646) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) ## [v3.11.0](https://github.com/nlohmann/json/releases/tag/v3.11.0) (2022-08-01) [Full Changelog](https://github.com/nlohmann/json/compare/v3.10.5...v3.11.0) - ICPC: warning \#1098: the qualifier on this friend declaration is ignored [\#3632](https://github.com/nlohmann/json/issues/3632) - Starting with 3.10.4, just adding `\#include json.hpp` causes compile error: `overload resolution selected deleted operator '=' [\#3620](https://github.com/nlohmann/json/issues/3620) - xwidgets doesn't compile with version \>3.10.3 [\#3602](https://github.com/nlohmann/json/issues/3602) - json\_pointer\_\_pop\_back.cpp example does not compile [\#3600](https://github.com/nlohmann/json/issues/3600) - nlohmann::json::array 'push\_back' is ambiguous [\#3589](https://github.com/nlohmann/json/issues/3589) - Multiple versions causing conflict [\#3588](https://github.com/nlohmann/json/issues/3588) - ERROR: ThreadSanitizer: SEGV on unknown address [\#3584](https://github.com/nlohmann/json/issues/3584) - unicode4 test consistently fails on RISC-V hardware [\#3579](https://github.com/nlohmann/json/issues/3579) - sax\_parse\(iterator, json\_sax\_t \*\) string callback clobbers spaces [\#3574](https://github.com/nlohmann/json/issues/3574) - Nlohmann JSON Parse crash with raylib-cpp [\#3570](https://github.com/nlohmann/json/issues/3570) - ordered\_json doesn't accept keys of types other than string\_t \(e.g., string\_view\) [\#3558](https://github.com/nlohmann/json/issues/3558) - turning an object into an array [\#3547](https://github.com/nlohmann/json/issues/3547) - json:parse\_bjdata\_fuzzer: ASSERT: ref\_stack.back\(\)-\>is\_array\(\) [\#3541](https://github.com/nlohmann/json/issues/3541) - Warning about potential null dereference in GCC 12.1 \(Fedora 36\) [\#3525](https://github.com/nlohmann/json/issues/3525) - Enable 32bit unit test in CI [\#3524](https://github.com/nlohmann/json/issues/3524) - Error when roundtripping BJData [\#3519](https://github.com/nlohmann/json/issues/3519) - ASSERT error while parsing BJData [\#3513](https://github.com/nlohmann/json/issues/3513) - An exception occurred when sending a string with double quotes [\#3504](https://github.com/nlohmann/json/issues/3504) - Binary reader for BJData creates incorrect SAX events [\#3503](https://github.com/nlohmann/json/issues/3503) - It can't support "nan", "inf", "-inf" for float type [\#3494](https://github.com/nlohmann/json/issues/3494) - ASAN error while parsing BJData \(Heap-buffer-overflow READ 1\) [\#3492](https://github.com/nlohmann/json/issues/3492) - UBSAN error while parsing BJData \(Null-dereference\) [\#3491](https://github.com/nlohmann/json/issues/3491) - UBSAN error while parsing BJData \(Invalid-bool-value\) [\#3490](https://github.com/nlohmann/json/issues/3490) - json:parse\_bjdata\_fuzzer reaches assertion [\#3475](https://github.com/nlohmann/json/issues/3475) - Compilation with -fmodules-ts and use inside of a module [\#3472](https://github.com/nlohmann/json/issues/3472) - json.exception.parse\_error.101 only occurs outside of IDE [\#3467](https://github.com/nlohmann/json/issues/3467) - json:parse\_bjdata\_fuzzer reaches assertion [\#3461](https://github.com/nlohmann/json/issues/3461) - NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE\_WITH\_DEFAULT can not parse { "key" : null} [\#3458](https://github.com/nlohmann/json/issues/3458) - Unable to compile when using Microsoft's \_CRTDBG [\#3457](https://github.com/nlohmann/json/issues/3457) - Compilation errors when including `` and using `--std=c++17` or above \(MinGW/Win10\) [\#3449](https://github.com/nlohmann/json/issues/3449) - Weird things on for statement [\#3447](https://github.com/nlohmann/json/issues/3447) - Parsing error when there is a json string within a Json [\#3445](https://github.com/nlohmann/json/issues/3445) - ordered\_json vs json types comparison [\#3443](https://github.com/nlohmann/json/issues/3443) - Error occurred when converting nlohmann::json to std::any [\#3428](https://github.com/nlohmann/json/issues/3428) - I was forced to report an assertion error when copying an array of strings [\#3419](https://github.com/nlohmann/json/issues/3419) - About Serialization Error invalid UTF-8 byte at index [\#3414](https://github.com/nlohmann/json/issues/3414) - Comparison of NaN differs between json and float [\#3409](https://github.com/nlohmann/json/issues/3409) - when i use it in C++ sserver,it it constantly show that fatal error: adl\_serializer.hpp: No such file or directory [\#3404](https://github.com/nlohmann/json/issues/3404) - parse error [\#3403](https://github.com/nlohmann/json/issues/3403) - CMake script MAIN\_PROJECT always OFF [\#3390](https://github.com/nlohmann/json/issues/3390) - Parser unable to handle large floating point numbers [\#3389](https://github.com/nlohmann/json/issues/3389) - Compilation error if json\_pointer is used with alternative string type [\#3388](https://github.com/nlohmann/json/issues/3388) - Unit tests conversions & items fail to build \(Clang \<4.0/C++14 only\) [\#3384](https://github.com/nlohmann/json/issues/3384) - Regression test for \#3070 is not being run and fails when enabled [\#3377](https://github.com/nlohmann/json/issues/3377) - Refactor unit tests to use more convenient doctest assertion macros [\#3365](https://github.com/nlohmann/json/issues/3365) - An json.h issue reported in a static code analyzer [\#3361](https://github.com/nlohmann/json/issues/3361) - Mixing different JSON\_DIAGNOSTICS settings in separately compiled units leads to core [\#3360](https://github.com/nlohmann/json/issues/3360) - json::out\_of\_range exception matches against lot of others while testing [\#3352](https://github.com/nlohmann/json/issues/3352) - use mipsel-openwrt-linux-g++ -std=c++11 to compile, it has some errors "error: 'snprintf' is not a member of 'std'" [\#3349](https://github.com/nlohmann/json/issues/3349) - Add proper issue templates [\#3348](https://github.com/nlohmann/json/issues/3348) - switch from json to ordered\_json [\#3343](https://github.com/nlohmann/json/issues/3343) - Json dump use to compilation errors [\#3339](https://github.com/nlohmann/json/issues/3339) - Ambiguous conversion from nlohmann::basic\_json\<\> to custom class. [\#3333](https://github.com/nlohmann/json/issues/3333) - Iterator doesn't satisfy std::incrementable because post-increment may change constness [\#3331](https://github.com/nlohmann/json/issues/3331) - Inconsistent handling of floating point numbers after parse\(\) [\#3329](https://github.com/nlohmann/json/issues/3329) - Documentation for `ordered_json` should show proper use of the `parse()` function. [\#3325](https://github.com/nlohmann/json/issues/3325) - "type must be boolean, but is object" error thrown on non-boolean object [\#3319](https://github.com/nlohmann/json/issues/3319) - Incomplete Type in request parms [\#3318](https://github.com/nlohmann/json/issues/3318) - 小米 MIX4 MIUI13 bug [\#3316](https://github.com/nlohmann/json/issues/3316) - json.exception.parse\_error.101 when parsing data received over a socket [\#3313](https://github.com/nlohmann/json/issues/3313) - Parse to custom class from unordered\_json breaks on G++11.2.0 with C++20 [\#3312](https://github.com/nlohmann/json/issues/3312) - try to assign dumped string to a class member varible [\#3300](https://github.com/nlohmann/json/issues/3300) - includedir in pkgconfig is error if install\_headers\(\) has subdir argument. [\#3284](https://github.com/nlohmann/json/issues/3284) - SHA-256 sum of json-3.10.5.tar.xz changes over time \(but not the content itself\) [\#3281](https://github.com/nlohmann/json/issues/3281) - items\(\) method does not follow order of json message [\#3278](https://github.com/nlohmann/json/issues/3278) - Perplexing template deduction failure serialising a 3rd party type using base class [\#3267](https://github.com/nlohmann/json/issues/3267) - json.hpp 'isfinite' is not a member of 'std' also isinf; snprintf; stoull and to\_string members of std [\#3263](https://github.com/nlohmann/json/issues/3263) - JSON build fails for C++ cmake [\#3256](https://github.com/nlohmann/json/issues/3256) - Unexpected implicit conversion [\#3254](https://github.com/nlohmann/json/issues/3254) - Add a function that checks for valid json in a C++ string [\#3245](https://github.com/nlohmann/json/issues/3245) - Replace use of standard IO from error handling [\#3239](https://github.com/nlohmann/json/issues/3239) - Use Catch for unit tests [\#3232](https://github.com/nlohmann/json/issues/3232) - Exception thrown during initialization causes a memory leak [\#3215](https://github.com/nlohmann/json/issues/3215) - Tests failing when compiling with c++20 [\#3207](https://github.com/nlohmann/json/issues/3207) - ambiguous regression [\#3204](https://github.com/nlohmann/json/issues/3204) - Deserialization: if class is\_constructible from std::string wrong from\_json overload is being selected, compilation failed [\#3171](https://github.com/nlohmann/json/issues/3171) - 'clang++ ./json.hpp' with no usage: Compiler syntax problem in clang 3.7.0 \(tizen :/ \) [\#3153](https://github.com/nlohmann/json/issues/3153) - build failure on upcoming gcc-12: test/src/unit-regression1.cpp:392:22: error: ambiguous overload for 'operator=' [\#3138](https://github.com/nlohmann/json/issues/3138) - Applying JSON patch creates parent object [\#3134](https://github.com/nlohmann/json/issues/3134) - Iterators cannot be used with range-v3 [\#3130](https://github.com/nlohmann/json/issues/3130) - std::shared\_ptr\ == nlohmann::json compiles, which seem undesirable [\#3026](https://github.com/nlohmann/json/issues/3026) - Error in test\download\_test\_data.vcxproj custom build step when compiling with Visual Studio 2019 16.7.7 msbuild on Windows 10 [\#2593](https://github.com/nlohmann/json/issues/2593) - Consider putting the user-defined literals in a namespace [\#1682](https://github.com/nlohmann/json/issues/1682) - Using versioned namespaces [\#1539](https://github.com/nlohmann/json/issues/1539) - How can I use std::string\_view as the json\_key to "operator \[\]" ? [\#1529](https://github.com/nlohmann/json/issues/1529) - serialize std::variant\<...\> [\#1261](https://github.com/nlohmann/json/issues/1261) - Prepare 3.11.0 release [\#3635](https://github.com/nlohmann/json/pull/3635) ([nlohmann](https://github.com/nlohmann)) - Fix warning [\#3634](https://github.com/nlohmann/json/pull/3634) ([nlohmann](https://github.com/nlohmann)) - Add license header to new files [\#3633](https://github.com/nlohmann/json/pull/3633) ([nlohmann](https://github.com/nlohmann)) - Add a unit test including windows.h [\#3631](https://github.com/nlohmann/json/pull/3631) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fixed latest build error in msvc platform [\#3630](https://github.com/nlohmann/json/pull/3630) ([KsaNL](https://github.com/KsaNL)) - Add regression tests for \#3204 and \#3333 [\#3629](https://github.com/nlohmann/json/pull/3629) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix patch::add creating nonexistent parents [\#3628](https://github.com/nlohmann/json/pull/3628) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Adjust JSON Pointer examples [\#3622](https://github.com/nlohmann/json/pull/3622) ([nlohmann](https://github.com/nlohmann)) - Disable exceptions on ICPC [\#3621](https://github.com/nlohmann/json/pull/3621) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - build: install .pc and .cmake files to share/ [\#3619](https://github.com/nlohmann/json/pull/3619) ([Tachi107](https://github.com/Tachi107)) - Fix MinGW CI failures [\#3618](https://github.com/nlohmann/json/pull/3618) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix Unicode test timeout \(for real this time!\) [\#3614](https://github.com/nlohmann/json/pull/3614) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Use 'concurrency' in GitHub workflows [\#3610](https://github.com/nlohmann/json/pull/3610) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Use swap\(\) by ADL [\#3609](https://github.com/nlohmann/json/pull/3609) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Move UDLs out of the global namespace [\#3605](https://github.com/nlohmann/json/pull/3605) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Re-add value\_type detection to distinguish string types [\#3604](https://github.com/nlohmann/json/pull/3604) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add operator\<\<\(json\_pointer\) [\#3601](https://github.com/nlohmann/json/pull/3601) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add documentation for comparing json and ordered\_json [\#3599](https://github.com/nlohmann/json/pull/3599) ([nlohmann](https://github.com/nlohmann)) - Clean up after \#3581 [\#3596](https://github.com/nlohmann/json/pull/3596) ([nlohmann](https://github.com/nlohmann)) - Add assertion if nullptr is passed to parse function [\#3593](https://github.com/nlohmann/json/pull/3593) ([nlohmann](https://github.com/nlohmann)) - Minor documentation fixes [\#3592](https://github.com/nlohmann/json/pull/3592) ([nlohmann](https://github.com/nlohmann)) - Add versioned, ABI-tagged inline namespace and namespace macros [\#3590](https://github.com/nlohmann/json/pull/3590) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add badge for https://repology.org/project/nlohmann-json/versions [\#3586](https://github.com/nlohmann/json/pull/3586) ([nlohmann](https://github.com/nlohmann)) - Add error message if test suite cannot be found [\#3585](https://github.com/nlohmann/json/pull/3585) ([nlohmann](https://github.com/nlohmann)) - add patch\_inplace function [\#3581](https://github.com/nlohmann/json/pull/3581) ([wolfv](https://github.com/wolfv)) - Enable overriding test properties and set Unicode test timeouts [\#3580](https://github.com/nlohmann/json/pull/3580) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Ignore output directory [\#3572](https://github.com/nlohmann/json/pull/3572) ([NN---](https://github.com/NN---)) - Optimize output vector adapter write [\#3569](https://github.com/nlohmann/json/pull/3569) ([romainreignier](https://github.com/romainreignier)) - Add overloads for more key types to ordered\_map and fix ordered\_map::erase\(first, last\) with first == last [\#3564](https://github.com/nlohmann/json/pull/3564) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Make certain usage patterns more prominent in the README [\#3557](https://github.com/nlohmann/json/pull/3557) ([jez](https://github.com/jez)) - CI: fix "JSON\_MultipleHeaders" option spelling [\#3555](https://github.com/nlohmann/json/pull/3555) ([karzhenkov](https://github.com/karzhenkov)) - More documentation updates for 3.11.0 [\#3553](https://github.com/nlohmann/json/pull/3553) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Use DOCTEST\_\* compiler macros and suppress pragmas warning [\#3550](https://github.com/nlohmann/json/pull/3550) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add unit test to make sure iterator\_input\_adapter advances iterators correctly [\#3548](https://github.com/nlohmann/json/pull/3548) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Use REUSE framework [\#3546](https://github.com/nlohmann/json/pull/3546) ([nlohmann](https://github.com/nlohmann)) - Use `std::iterator_traits` to extract `iterator_category` [\#3544](https://github.com/nlohmann/json/pull/3544) ([Mike-Leo-Smith](https://github.com/Mike-Leo-Smith)) - BJData dimension length can not be string\_t::npos, fix \#3541 [\#3543](https://github.com/nlohmann/json/pull/3543) ([fangq](https://github.com/fangq)) - Allow disabling default enum conversions [\#3536](https://github.com/nlohmann/json/pull/3536) ([zxey](https://github.com/zxey)) - Add to\_json\(\) for std::vector\::reference [\#3534](https://github.com/nlohmann/json/pull/3534) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - CI: Enable 32bit unit test \(3\) [\#3532](https://github.com/nlohmann/json/pull/3532) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Use new CI image [\#3528](https://github.com/nlohmann/json/pull/3528) ([nlohmann](https://github.com/nlohmann)) - Fix ndarray dimension signedness, fix ndarray length overflow \(2\); add 32bit unit test [\#3523](https://github.com/nlohmann/json/pull/3523) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Small documentation fixes [\#3520](https://github.com/nlohmann/json/pull/3520) ([nlohmann](https://github.com/nlohmann)) - Add assertion to converting constructor [\#3517](https://github.com/nlohmann/json/pull/3517) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - CI: Remove -Wstrict-overflow [\#3516](https://github.com/nlohmann/json/pull/3516) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix nlohmann/json\#3513, explain is\_ndarray flag [\#3514](https://github.com/nlohmann/json/pull/3514) ([fangq](https://github.com/fangq)) - Prevent ndarray size vector from recursive use, fix nlohmann/json\#3503 [\#3505](https://github.com/nlohmann/json/pull/3505) ([fangq](https://github.com/fangq)) - prevent ndarray dimension vector from recusive array, nlohmann/json\#3500 [\#3502](https://github.com/nlohmann/json/pull/3502) ([fangq](https://github.com/fangq)) - Discard optimized containers with negative counts in UBJSON/BJData \(\#3491,\#3492,\#3490\) [\#3500](https://github.com/nlohmann/json/pull/3500) ([fangq](https://github.com/fangq)) - Update json.hpp [\#3499](https://github.com/nlohmann/json/pull/3499) ([ivanovmp](https://github.com/ivanovmp)) - Add assertion for invariant in SAX-DOM parser [\#3498](https://github.com/nlohmann/json/pull/3498) ([nlohmann](https://github.com/nlohmann)) - Add more macOS builders [\#3485](https://github.com/nlohmann/json/pull/3485) ([nlohmann](https://github.com/nlohmann)) - change bjdata ndarray flag to detect negative size, as part of \#3475 [\#3479](https://github.com/nlohmann/json/pull/3479) ([fangq](https://github.com/fangq)) - Document fuzzer usage [\#3478](https://github.com/nlohmann/json/pull/3478) ([nlohmann](https://github.com/nlohmann)) - Add build step for ICPC \(with fixes\) [\#3465](https://github.com/nlohmann/json/pull/3465) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Complete documentation for 3.11.0 [\#3464](https://github.com/nlohmann/json/pull/3464) ([nlohmann](https://github.com/nlohmann)) - Handle invalid BJData optimized type, fix \#3461 [\#3463](https://github.com/nlohmann/json/pull/3463) ([fangq](https://github.com/fangq)) - Reorganize directories [\#3462](https://github.com/nlohmann/json/pull/3462) ([nlohmann](https://github.com/nlohmann)) - Enable rapid testing and development on Compiler Explorer [\#3456](https://github.com/nlohmann/json/pull/3456) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - cpplint 1.6.0 [\#3454](https://github.com/nlohmann/json/pull/3454) ([nlohmann](https://github.com/nlohmann)) - Disable regression test for \#3070 on GCC \<8.4 [\#3451](https://github.com/nlohmann/json/pull/3451) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix C++20/gcc-12 issues \(Part 2\) [\#3446](https://github.com/nlohmann/json/pull/3446) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Overwork documentation [\#3444](https://github.com/nlohmann/json/pull/3444) ([nlohmann](https://github.com/nlohmann)) - Fix typo in basic\_json documentation [\#3439](https://github.com/nlohmann/json/pull/3439) ([jhnlee](https://github.com/jhnlee)) - Exclude std::any from implicit conversion \(fixes \#3428\) [\#3437](https://github.com/nlohmann/json/pull/3437) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Document which version introduced the macros [\#3431](https://github.com/nlohmann/json/pull/3431) ([nlohmann](https://github.com/nlohmann)) - Fix constraints on from\_json\(\) for strings \(fixes \#3171, \#3267, \#3312, \#3384\) [\#3427](https://github.com/nlohmann/json/pull/3427) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - at.md: fix typo [\#3426](https://github.com/nlohmann/json/pull/3426) ([heinemml](https://github.com/heinemml)) - Implement support for string\_view \(attempt no. 3\) [\#3423](https://github.com/nlohmann/json/pull/3423) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - CI: speedup AppVeyor builds by ~30% [\#3422](https://github.com/nlohmann/json/pull/3422) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Restore disabled check for \#3070 \(except on MSVC\) [\#3421](https://github.com/nlohmann/json/pull/3421) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Update CI image [\#3420](https://github.com/nlohmann/json/pull/3420) ([nlohmann](https://github.com/nlohmann)) - Add check if different version is also included [\#3418](https://github.com/nlohmann/json/pull/3418) ([nlohmann](https://github.com/nlohmann)) - Report the right \_\_cplusplus value for MSVC in basic\_json meta\(\) [\#3417](https://github.com/nlohmann/json/pull/3417) ([flagarde](https://github.com/flagarde)) - CI: windows-2016 has been deprecated; remove jobs [\#3416](https://github.com/nlohmann/json/pull/3416) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Re-template json\_pointer on string type [\#3415](https://github.com/nlohmann/json/pull/3415) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Refactor unit tests to use more convenient doctest assertion macros \(Part 2\) [\#3405](https://github.com/nlohmann/json/pull/3405) ([kkarbowiak](https://github.com/kkarbowiak)) - Refactor unit tests to use more convenient doctest assertion macros [\#3393](https://github.com/nlohmann/json/pull/3393) ([kkarbowiak](https://github.com/kkarbowiak)) - Improve unit testing \(Part 1\) [\#3380](https://github.com/nlohmann/json/pull/3380) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix C++20/gcc-12 issues \(Part 1\) [\#3379](https://github.com/nlohmann/json/pull/3379) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add clarification to avoid misunderstanding that cause \#3360 [\#3378](https://github.com/nlohmann/json/pull/3378) ([puffetto](https://github.com/puffetto)) - Fix ordered\_map ctor with initializer\_list \(fixes \#3343\) [\#3370](https://github.com/nlohmann/json/pull/3370) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Fix and update CI [\#3368](https://github.com/nlohmann/json/pull/3368) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - FetchContent\_MakeAvailable [\#3351](https://github.com/nlohmann/json/pull/3351) ([nlohmann](https://github.com/nlohmann)) - Avoid clash with Arduino defines [\#3338](https://github.com/nlohmann/json/pull/3338) ([DarkZeros](https://github.com/DarkZeros)) - Support UBJSON-derived Binary JData \(BJData\) format [\#3336](https://github.com/nlohmann/json/pull/3336) ([fangq](https://github.com/fangq)) - Make iterator operator++/--\(int\) equality-preserving [\#3332](https://github.com/nlohmann/json/pull/3332) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - Add note on parsing ordered\_json [\#3326](https://github.com/nlohmann/json/pull/3326) ([nlohmann](https://github.com/nlohmann)) - Fix CITATION.cff and add automatic validation of your citation metadata [\#3320](https://github.com/nlohmann/json/pull/3320) ([fdiblen](https://github.com/fdiblen)) - .github/workflows/windows.yml: Add support for Visual Studio 2022 [\#3295](https://github.com/nlohmann/json/pull/3295) ([t-b](https://github.com/t-b)) - Add maintainer targets to create source archive [\#3289](https://github.com/nlohmann/json/pull/3289) ([nlohmann](https://github.com/nlohmann)) - Fix a typo [\#3265](https://github.com/nlohmann/json/pull/3265) ([fhuberts](https://github.com/fhuberts)) - Fix typo [\#3249](https://github.com/nlohmann/json/pull/3249) ([rex4539](https://github.com/rex4539)) - Add documentation for JSON Lines [\#3247](https://github.com/nlohmann/json/pull/3247) ([nlohmann](https://github.com/nlohmann)) - Improve documentation InputType and IteratorType [\#3246](https://github.com/nlohmann/json/pull/3246) ([nlohmann](https://github.com/nlohmann)) - Remove stringstream [\#3244](https://github.com/nlohmann/json/pull/3244) ([nlohmann](https://github.com/nlohmann)) - fix \_MSC\_VER version to check for std::filesystem [\#3240](https://github.com/nlohmann/json/pull/3240) ([gcerretani](https://github.com/gcerretani)) - Add macros NLOHMANN\_DEFINE\_TYPE\_INTRUSIVE\_WITH\_DEFAULT and ...\_NON\_INTRUSIVE\_WITH\_DEFAULT [\#3143](https://github.com/nlohmann/json/pull/3143) ([pketelsen](https://github.com/pketelsen)) ## [v3.10.5](https://github.com/nlohmann/json/releases/tag/v3.10.5) (2022-01-03) [Full Changelog](https://github.com/nlohmann/json/compare/v3.10.4...v3.10.5) - \#include \ doesn't work with gcc-7 when `-std=c++17` is specified. [\#3203](https://github.com/nlohmann/json/issues/3203) - Not able to use nlohmann json with c++ code built using emscripten to wasm [\#3200](https://github.com/nlohmann/json/issues/3200) - Warning for shadowed variables [\#3188](https://github.com/nlohmann/json/issues/3188) - Accessing missing keys on const json object leads to assert [\#3183](https://github.com/nlohmann/json/issues/3183) - Data member is available, but null is reported, and program throws error [\#3173](https://github.com/nlohmann/json/issues/3173) - serialization problem, from\_json need construct new object [\#3169](https://github.com/nlohmann/json/issues/3169) - std::filesystem unavailable on macOS lower deployment targets [\#3156](https://github.com/nlohmann/json/issues/3156) - \[json.exception.type\_error.305\] cannot use operator\[\] with a string argument with string [\#3151](https://github.com/nlohmann/json/issues/3151) - json::dump\(\) is not compatible with C++ standards [\#3147](https://github.com/nlohmann/json/issues/3147) - Issue with json::parse decoding codepoints [\#3142](https://github.com/nlohmann/json/issues/3142) - Simple parse of json object thinks it should be an array [\#3136](https://github.com/nlohmann/json/issues/3136) - How to properly read a Json string that may be null in some cases? [\#3135](https://github.com/nlohmann/json/issues/3135) - Deadlock on create json - windows only [\#3129](https://github.com/nlohmann/json/issues/3129) - Wrong parsing of int64 values nearest of limit [\#3126](https://github.com/nlohmann/json/issues/3126) - ordered\_json doesn't support range based erase [\#3108](https://github.com/nlohmann/json/issues/3108) - Apple build failed with json/single\_include/nlohmann/json.hpp:4384:57: 'path' is unavailable [\#3097](https://github.com/nlohmann/json/issues/3097) - GCC 7.5.0 with --std=c++17: filesystem: No such file or directory [\#3090](https://github.com/nlohmann/json/issues/3090) - Drop Travis CI [\#3087](https://github.com/nlohmann/json/issues/3087) - ordered\_json::reset\(\) compile error with nvcc [\#3013](https://github.com/nlohmann/json/issues/3013) - Support for unordered\_map as object\_t [\#2932](https://github.com/nlohmann/json/issues/2932) - Compiler warning with Intel compiler, same as \#755 [\#2712](https://github.com/nlohmann/json/issues/2712) - Compiler warnings with NVCC 11.2 [\#2676](https://github.com/nlohmann/json/issues/2676) - some static analysis warning at line 11317 [\#1390](https://github.com/nlohmann/json/issues/1390) - Compiling with icpc [\#755](https://github.com/nlohmann/json/issues/755) - Fix compilation error with NVCC [\#3234](https://github.com/nlohmann/json/pull/3234) ([nlohmann](https://github.com/nlohmann)) - Remove Travis CI [\#3233](https://github.com/nlohmann/json/pull/3233) ([nlohmann](https://github.com/nlohmann)) - Add build step for NVCC and fix a warning [\#3227](https://github.com/nlohmann/json/pull/3227) ([nlohmann](https://github.com/nlohmann)) - Update cpplint [\#3225](https://github.com/nlohmann/json/pull/3225) ([nlohmann](https://github.com/nlohmann)) - Fix: Warning for shadowed variables \(\#3188\) [\#3193](https://github.com/nlohmann/json/pull/3193) ([kernie](https://github.com/kernie)) - Fix FAQ hyperlink typo in readme [\#3148](https://github.com/nlohmann/json/pull/3148) ([Prince-Mendiratta](https://github.com/Prince-Mendiratta)) - Docs: Update `skip_comments` to `ignore_comments` [\#3145](https://github.com/nlohmann/json/pull/3145) ([daniel-kun](https://github.com/daniel-kun)) - fix typos in documentation [\#3140](https://github.com/nlohmann/json/pull/3140) ([striezel](https://github.com/striezel)) - Fix spelling [\#3125](https://github.com/nlohmann/json/pull/3125) ([axic](https://github.com/axic)) - Extend std specializations [\#3121](https://github.com/nlohmann/json/pull/3121) ([nlohmann](https://github.com/nlohmann)) - Add missing erase\(first, last\) function to ordered\_map [\#3109](https://github.com/nlohmann/json/pull/3109) ([nlohmann](https://github.com/nlohmann)) - Fix typos in operator\[\] documentation [\#3102](https://github.com/nlohmann/json/pull/3102) ([axnsan12](https://github.com/axnsan12)) - Add C++17 copies of the test binaries [\#3101](https://github.com/nlohmann/json/pull/3101) ([nlohmann](https://github.com/nlohmann)) - Add examples for parsing from iterator pair [\#3100](https://github.com/nlohmann/json/pull/3100) ([nlohmann](https://github.com/nlohmann)) - Update CI [\#3088](https://github.com/nlohmann/json/pull/3088) ([nlohmann](https://github.com/nlohmann)) - Consolidate documentation [\#3071](https://github.com/nlohmann/json/pull/3071) ([nlohmann](https://github.com/nlohmann)) - Add recursive update function [\#3069](https://github.com/nlohmann/json/pull/3069) ([nlohmann](https://github.com/nlohmann)) ## [v3.10.4](https://github.com/nlohmann/json/releases/tag/v3.10.4) (2021-10-16) [Full Changelog](https://github.com/nlohmann/json/compare/v3.10.3...v3.10.4) - Compiler error in output serializer due to 'incompatible initializer' [\#3081](https://github.com/nlohmann/json/issues/3081) - Strange behaviour when using std::sort on std::vector\ [\#3080](https://github.com/nlohmann/json/issues/3080) - Unhandled exception: nlohmann::detail::parse\_error [\#3078](https://github.com/nlohmann/json/issues/3078) - explicit constructor with default does not compile [\#3077](https://github.com/nlohmann/json/issues/3077) - Parse an object but get an array using GCC [\#3076](https://github.com/nlohmann/json/issues/3076) - Version 3.10.3 breaks backward-compatibility with 3.10.2 [\#3070](https://github.com/nlohmann/json/issues/3070) - Feature request, Add to\_json/from\_json to align with other to/from binary api. [\#3067](https://github.com/nlohmann/json/issues/3067) - vcpkg is out of date [\#3066](https://github.com/nlohmann/json/issues/3066) - Revert invalid fix [\#3082](https://github.com/nlohmann/json/pull/3082) ([nlohmann](https://github.com/nlohmann)) - Allow to use get with explicit constructor [\#3079](https://github.com/nlohmann/json/pull/3079) ([nlohmann](https://github.com/nlohmann)) - fix std::filesystem::path regression [\#3073](https://github.com/nlohmann/json/pull/3073) ([theodelrieu](https://github.com/theodelrieu)) ## [v3.10.3](https://github.com/nlohmann/json/releases/tag/v3.10.3) (2021-10-08) [Full Changelog](https://github.com/nlohmann/json/compare/v3.10.2...v3.10.3) - Parsing an emtpy string returns a string with size 1 instead of expected 0 [\#3057](https://github.com/nlohmann/json/issues/3057) - Linking error "duplicate symbol: std::type\_info::operator==" on static build with MinGW [\#3042](https://github.com/nlohmann/json/issues/3042) - Yet another assertion failure when inserting into arrays with JSON\_DIAGNOSTICS set [\#3032](https://github.com/nlohmann/json/issues/3032) - accept and parse function not work well with a pure number string [\#3029](https://github.com/nlohmann/json/issues/3029) - push\_back doesn't work for serializing containers [\#3027](https://github.com/nlohmann/json/issues/3027) - Strange behaviour when creating array with single element [\#3025](https://github.com/nlohmann/json/issues/3025) - Input ordered\_json doesn't work [\#3023](https://github.com/nlohmann/json/issues/3023) - Issue iterating through 'items' [\#3021](https://github.com/nlohmann/json/issues/3021) - Cannot spell the namespace right [\#3015](https://github.com/nlohmann/json/issues/3015) - JSON Parse error when reading json object from file [\#3011](https://github.com/nlohmann/json/issues/3011) - Parent pointer not properly set when using update\(\) [\#3007](https://github.com/nlohmann/json/issues/3007) - Overwriting terminated null character [\#3001](https://github.com/nlohmann/json/issues/3001) - 'operator =' is ambiguous on VS2017 [\#2997](https://github.com/nlohmann/json/issues/2997) - JSON Patch for Array Elements [\#2994](https://github.com/nlohmann/json/issues/2994) - JSON Parse throwing error [\#2983](https://github.com/nlohmann/json/issues/2983) - to\_{binary format} does not provide a mechanism for specifying a custom allocator for the returned type. [\#2982](https://github.com/nlohmann/json/issues/2982) - 3.10.1 zip json.hpp has version number 3.10.0 instead of 3.10.1 [\#2973](https://github.com/nlohmann/json/issues/2973) - Assertion failure when serializing array with JSON\_DIAGNOSTICS set [\#2926](https://github.com/nlohmann/json/issues/2926) - Fix Clang version [\#3040](https://github.com/nlohmann/json/pull/3040) ([nlohmann](https://github.com/nlohmann)) - Fix assertion failure for JSON\_DIAGNOSTICS [\#3037](https://github.com/nlohmann/json/pull/3037) ([carlsmedstad](https://github.com/carlsmedstad)) - meta: fix is\_compatible/constructible traits [\#3020](https://github.com/nlohmann/json/pull/3020) ([theodelrieu](https://github.com/theodelrieu)) - Set parent pointers for values inserted via update\(\) \(fixes \#3007\). [\#3008](https://github.com/nlohmann/json/pull/3008) ([AnthonyVH](https://github.com/AnthonyVH)) - Allow allocators for output\_vector\_adapter [\#2989](https://github.com/nlohmann/json/pull/2989) ([nlohmann](https://github.com/nlohmann)) - Re-add Clang 12 [\#2986](https://github.com/nlohmann/json/pull/2986) ([nlohmann](https://github.com/nlohmann)) - Use new Docker image [\#2981](https://github.com/nlohmann/json/pull/2981) ([nlohmann](https://github.com/nlohmann)) - Update docset generation script [\#2967](https://github.com/nlohmann/json/pull/2967) ([nlohmann](https://github.com/nlohmann)) ## [v3.10.2](https://github.com/nlohmann/json/releases/tag/v3.10.2) (2021-08-26) [Full Changelog](https://github.com/nlohmann/json/compare/v3.10.1...v3.10.2) - Annoying -Wundef on new JSON\_DIAGNOSTICS macro [\#2975](https://github.com/nlohmann/json/issues/2975) - += issue with multiple redirection. [\#2970](https://github.com/nlohmann/json/issues/2970) - "incomplete type ‘nlohmann::detail::wide\_string\_input\_helper" compilation error [\#2969](https://github.com/nlohmann/json/issues/2969) - Fix -Wunused warnings on JSON\_DIAGNOSTICS [\#2976](https://github.com/nlohmann/json/pull/2976) ([gcerretani](https://github.com/gcerretani)) ## [v3.10.1](https://github.com/nlohmann/json/releases/tag/v3.10.1) (2021-08-24) [Full Changelog](https://github.com/nlohmann/json/compare/v3.10.0...v3.10.1) - JSON\_DIAGNOSTICS assertion for ordered\_json [\#2962](https://github.com/nlohmann/json/issues/2962) - Inserting in unordered json using a pointer retains the leading slash [\#2958](https://github.com/nlohmann/json/issues/2958) - Test \#9: test-cbor test case sample.json fails in debug mode - Stack overflow [\#2955](https://github.com/nlohmann/json/issues/2955) - 3.10.0 broke at least the Bear project [\#2953](https://github.com/nlohmann/json/issues/2953) - 2 tests fail in 3.10.0: cmake\_fetch\_content\_configure, cmake\_fetch\_content\_build [\#2951](https://github.com/nlohmann/json/issues/2951) - ctest \(58+60,/67 cmake\_import\_configure\) fails when build with -D JSON\_Install:BOOL=OFF because of missing nlohmann\_jsonTargets.cmake [\#2946](https://github.com/nlohmann/json/issues/2946) - Document vcpkg usage [\#2944](https://github.com/nlohmann/json/issues/2944) - Linker error LNK2005 when compiling \(x64\) json-3.10.0.zip with Visual Studio 2019 16.11.1 [\#2941](https://github.com/nlohmann/json/issues/2941) - Move Travis jobs to travis-ci.com [\#2938](https://github.com/nlohmann/json/issues/2938) - Fixed typo in docs/api/basic\_json/parse.md [\#2968](https://github.com/nlohmann/json/pull/2968) ([mbadhan](https://github.com/mbadhan)) - Add link to Homebrew package [\#2966](https://github.com/nlohmann/json/pull/2966) ([nlohmann](https://github.com/nlohmann)) - Fix parent update for diagnostics with ordered\_json [\#2963](https://github.com/nlohmann/json/pull/2963) ([nlohmann](https://github.com/nlohmann)) - Set stack size for some unit tests when using MSVC [\#2961](https://github.com/nlohmann/json/pull/2961) ([nlohmann](https://github.com/nlohmann)) - Add regression test [\#2960](https://github.com/nlohmann/json/pull/2960) ([nlohmann](https://github.com/nlohmann)) - Update Travis badge [\#2959](https://github.com/nlohmann/json/pull/2959) ([nlohmann](https://github.com/nlohmann)) - Fix some extra ";" clang warnings [\#2957](https://github.com/nlohmann/json/pull/2957) ([Hallot](https://github.com/Hallot)) - Add documentation for integration via vcpkg [\#2954](https://github.com/nlohmann/json/pull/2954) ([nlohmann](https://github.com/nlohmann)) - Avoid duplicate AppVeyor builds [\#2952](https://github.com/nlohmann/json/pull/2952) ([nlohmann](https://github.com/nlohmann)) - 🚨 fix gdb\_pretty\_printer failure on basic types [\#2950](https://github.com/nlohmann/json/pull/2950) ([senyai](https://github.com/senyai)) - Add header to use value\_t [\#2948](https://github.com/nlohmann/json/pull/2948) ([nlohmann](https://github.com/nlohmann)) - Skip some tests if JSON\_Install is not set [\#2947](https://github.com/nlohmann/json/pull/2947) ([nlohmann](https://github.com/nlohmann)) - Remove outdated json\_unit test binary [\#2945](https://github.com/nlohmann/json/pull/2945) ([nlohmann](https://github.com/nlohmann)) - Updating the Homebrew Command [\#2943](https://github.com/nlohmann/json/pull/2943) ([amirmasoudabdol](https://github.com/amirmasoudabdol)) ## [v3.10.0](https://github.com/nlohmann/json/releases/tag/v3.10.0) (2021-08-17) [Full Changelog](https://github.com/nlohmann/json/compare/v3.9.1...v3.10.0) - Latest version 3.9.1 uses throw instead of JSON\_THROW in the amalgamated json.hpp file [\#2934](https://github.com/nlohmann/json/issues/2934) - Copy to a variable inside a Structure [\#2933](https://github.com/nlohmann/json/issues/2933) - warning C4068: unknown pragma 'GCC' on MSVC/cl [\#2924](https://github.com/nlohmann/json/issues/2924) - Errors during ninja test [\#2918](https://github.com/nlohmann/json/issues/2918) - compiler warning: "not return a value" [\#2917](https://github.com/nlohmann/json/issues/2917) - Comparison floating points causes warning [\#2909](https://github.com/nlohmann/json/issues/2909) - Why can't I have std::vector\ testList? [\#2900](https://github.com/nlohmann/json/issues/2900) - \[json.hpp\] from releases doesnt work [\#2897](https://github.com/nlohmann/json/issues/2897) - g++ \(11\) -Wuseless-cast gives lots of warnings [\#2893](https://github.com/nlohmann/json/issues/2893) - Cannot serialize and immediatly deserialize json to/from bson [\#2892](https://github.com/nlohmann/json/issues/2892) - Floating-point precision conversion error [\#2876](https://github.com/nlohmann/json/issues/2876) - How to avoid escaping for an already escaped string in .dump\(\) [\#2870](https://github.com/nlohmann/json/issues/2870) - can't parse std::vector\ [\#2869](https://github.com/nlohmann/json/issues/2869) - ASAN detects memory leaks [\#2865](https://github.com/nlohmann/json/issues/2865) - Binary subtype field cannot represent all CBOR tags [\#2863](https://github.com/nlohmann/json/issues/2863) - string literals possibly being parsed as another type due to the presence of only digits and full-stops [\#2852](https://github.com/nlohmann/json/issues/2852) - json::parse\(\) works only with absolute paths [\#2851](https://github.com/nlohmann/json/issues/2851) - Compiler Warnings on Raspberry Pi OS [\#2850](https://github.com/nlohmann/json/issues/2850) - Braced initialization and aggregate initialization behavior is different for `json::array()` function call. [\#2848](https://github.com/nlohmann/json/issues/2848) - 3.9.1: test suite is failing [\#2845](https://github.com/nlohmann/json/issues/2845) - Documentation for macro JSON\_NO\_IO is missing [\#2842](https://github.com/nlohmann/json/issues/2842) - Assertion failure when inserting into arrays with JSON\_DIAGNOSTICS set [\#2838](https://github.com/nlohmann/json/issues/2838) - HELP! There is a memory leak in the code?! [\#2837](https://github.com/nlohmann/json/issues/2837) - Elegant conversion of a 2-D-json array to a standard C++ array [\#2805](https://github.com/nlohmann/json/issues/2805) - Swift Package Manager support [\#2802](https://github.com/nlohmann/json/issues/2802) - Referencing a subkey which doesn't exist gives crash [\#2797](https://github.com/nlohmann/json/issues/2797) - Failed benchmark due to renamed branch [\#2796](https://github.com/nlohmann/json/issues/2796) - Build Errors with VS 2019 and json Version 3.9.1 when attempting to replicate SAX Example [\#2782](https://github.com/nlohmann/json/issues/2782) - Value with spaces cannot be parsed [\#2781](https://github.com/nlohmann/json/issues/2781) - \[Question\] CBOR rfc support. [\#2779](https://github.com/nlohmann/json/issues/2779) - Using JSON.hpp header file in Visual Studio 2013 \(C++ Project\) [\#2775](https://github.com/nlohmann/json/issues/2775) - compilation error on clang-8 + C++17 [\#2759](https://github.com/nlohmann/json/issues/2759) - Undefined symbol EOF [\#2755](https://github.com/nlohmann/json/issues/2755) - Parsing a string into json object behaves differently under g++ and MinGW compilers. [\#2746](https://github.com/nlohmann/json/issues/2746) - big git history size [\#2742](https://github.com/nlohmann/json/issues/2742) - How to get reference of std::vector\ [\#2735](https://github.com/nlohmann/json/issues/2735) - CMake failure in VS2019 Community [\#2734](https://github.com/nlohmann/json/issues/2734) - Possibility to use with custom c++ version to use in intel sgx enclaves [\#2730](https://github.com/nlohmann/json/issues/2730) - Possibility to use without the dependency to file io and streams to use in intel sgx enclaves [\#2728](https://github.com/nlohmann/json/issues/2728) - error C2784& error C2839... in my visual studio 2015 compiler [\#2726](https://github.com/nlohmann/json/issues/2726) - `-fno-expection` not respected anymore in 3.9.1 [\#2725](https://github.com/nlohmann/json/issues/2725) - When exceptions disabled with JSON\_NOEXCEPTION, lib just aborts without any message [\#2724](https://github.com/nlohmann/json/issues/2724) - Critical error detected c0000374 on windows10 msvc 2019 16.8.5 [\#2710](https://github.com/nlohmann/json/issues/2710) - unused parameter error/warning [\#2706](https://github.com/nlohmann/json/issues/2706) - How to store data into a Map from json file [\#2691](https://github.com/nlohmann/json/issues/2691) - Tests do not compile with pre-release glibc [\#2686](https://github.com/nlohmann/json/issues/2686) - compile errors .... chromium-style [\#2680](https://github.com/nlohmann/json/issues/2680) - .dump\(\) not allowing compact form [\#2678](https://github.com/nlohmann/json/issues/2678) - error: no matching function for call to ‘nlohmann::basic\_json\<\>::value\(int, std::set\&\)’ [\#2671](https://github.com/nlohmann/json/issues/2671) - Compiler warning: unused parameter [\#2668](https://github.com/nlohmann/json/issues/2668) - Deserializing to a struct as shown on the project homepage throws compile time errors [\#2665](https://github.com/nlohmann/json/issues/2665) - Unable to compile on MSVC 2019 with SDL checking enabled: This function or variable may be unsafe [\#2664](https://github.com/nlohmann/json/issues/2664) - terminating with uncaught exception of type nlohmann::detail::type\_error: \[json.exception.type\_error.302\] type must be array, but is object [\#2661](https://github.com/nlohmann/json/issues/2661) - unused-parameter on OSX when Diagnostics is off [\#2658](https://github.com/nlohmann/json/issues/2658) - std::pair wrong serialization [\#2655](https://github.com/nlohmann/json/issues/2655) - The result of json is\_number\_integer\(\) function is wrong when read a json file [\#2653](https://github.com/nlohmann/json/issues/2653) - 2 backslash cause problem [\#2652](https://github.com/nlohmann/json/issues/2652) - No support for using an external/system copy of Hedley [\#2651](https://github.com/nlohmann/json/issues/2651) - error: incomplete type 'qfloat16' used in type trait expression [\#2650](https://github.com/nlohmann/json/issues/2650) - Unused variable in exception class when not using improved diagnostics [\#2646](https://github.com/nlohmann/json/issues/2646) - I am trying to do this - converting from wstring works incorrectly! [\#2642](https://github.com/nlohmann/json/issues/2642) - Exception 207 On ARM Processor During Literal String Parsing [\#2634](https://github.com/nlohmann/json/issues/2634) - double free or corruption \(!prev\) error on Json push\_back and write [\#2632](https://github.com/nlohmann/json/issues/2632) - nlohmann::detail::parse\_error: syntax error while parsing CBOR string: expected length specification \(0x60-0x7B\) or indefinite string type \(0x7F\) [\#2629](https://github.com/nlohmann/json/issues/2629) - please allow disabling implicit conversions in non-single-file use [\#2621](https://github.com/nlohmann/json/issues/2621) - Preserve decimal formatting [\#2618](https://github.com/nlohmann/json/issues/2618) - Visual Studio Visual Assist code issues reported by VA code inspection of file json.hpp [\#2615](https://github.com/nlohmann/json/issues/2615) - Missing get function and no viable overloaded '=' on mac [\#2610](https://github.com/nlohmann/json/issues/2610) - corruption when parse from string [\#2603](https://github.com/nlohmann/json/issues/2603) - Parse from byte-vector results in compile error [\#2602](https://github.com/nlohmann/json/issues/2602) - Memory leak when working on ARM Linux [\#2601](https://github.com/nlohmann/json/issues/2601) - Unhandled exception in test-cbor.exe Stack overflow when debugging project with Visual Studio 2019 16.7.7 compiled with c++17 or c++latest [\#2598](https://github.com/nlohmann/json/issues/2598) - Error in download\_test\_data.vcxproj when compiling with Visual Studio 2019 16.7.7 Professional msbuild on Windows 10 2004 Professional [\#2594](https://github.com/nlohmann/json/issues/2594) - Warnings C4715 and C4127 when building json-3.9.1 with Visual Studio 2019 16.7.7 [\#2592](https://github.com/nlohmann/json/issues/2592) - I tried some change to dump\(\) for \[1,2,3...\] [\#2584](https://github.com/nlohmann/json/issues/2584) - try/catch block does not catch parsing error [\#2579](https://github.com/nlohmann/json/issues/2579) - Serializing uint64\_t is broken for large values [\#2578](https://github.com/nlohmann/json/issues/2578) - deserializing arrays should be part of the library [\#2575](https://github.com/nlohmann/json/issues/2575) - Deserialization to std::array with non-default constructable types fails [\#2574](https://github.com/nlohmann/json/issues/2574) - Compilation error when trying to use same type for number\_integer\_t and number\_unsigned\_t in basic\_json template specification. [\#2573](https://github.com/nlohmann/json/issues/2573) - compiler error: directive output may be truncated writing between 2 and 8 bytes [\#2572](https://github.com/nlohmann/json/issues/2572) - Incorrect convert map to json when key cannot construct an string i.e. int [\#2564](https://github.com/nlohmann/json/issues/2564) - no matching function for call to ‘nlohmann::basic\_json\<\>::basic\_json\(\\)’ [\#2559](https://github.com/nlohmann/json/issues/2559) - type\_error factory creates a dangling pointer \(in VisualStudio 2019\) [\#2535](https://github.com/nlohmann/json/issues/2535) - Cannot assign from ordered\_json vector\ to value in not ordered json [\#2528](https://github.com/nlohmann/json/issues/2528) - Qt6: Break changes [\#2519](https://github.com/nlohmann/json/issues/2519) - valgrind memcheck Illegal instruction when use nlohmann::json::parse [\#2518](https://github.com/nlohmann/json/issues/2518) - Buffer overflow [\#2515](https://github.com/nlohmann/json/issues/2515) - Including CTest in the top-level CMakeLists.txt sets BUILD\_TESTING=ON for parent projects [\#2513](https://github.com/nlohmann/json/issues/2513) - Compilation error when using NLOHMANN\_JSON\_SERIALIZE\_ENUM ordered\_json on libc++ [\#2491](https://github.com/nlohmann/json/issues/2491) - Missing "void insert\( InputIt first, InputIt last \);" overload in nlohmann::ordered\_map [\#2490](https://github.com/nlohmann/json/issues/2490) - Could not find a package configuration file provided by "nlohmann\_json" [\#2482](https://github.com/nlohmann/json/issues/2482) - json becomes empty for unknown reason [\#2470](https://github.com/nlohmann/json/issues/2470) - Using std::wstring as StringType fails compiling [\#2459](https://github.com/nlohmann/json/issues/2459) - Sample code in GIF slide outdated \(cannot use emplace\(\) with array\) [\#2457](https://github.com/nlohmann/json/issues/2457) - from\_json\ is treated as an array on latest MSVC [\#2453](https://github.com/nlohmann/json/issues/2453) - MemorySanitizer: use-of-uninitialized-value [\#2449](https://github.com/nlohmann/json/issues/2449) - I need help [\#2441](https://github.com/nlohmann/json/issues/2441) - type conversion failing with clang ext\_vector\_type [\#2436](https://github.com/nlohmann/json/issues/2436) - json::parse\(\) can't be resolved under specific circumstances [\#2427](https://github.com/nlohmann/json/issues/2427) - from\_\*\(ptr, len\) deprecation [\#2426](https://github.com/nlohmann/json/issues/2426) - Error ONLY in release mode [\#2425](https://github.com/nlohmann/json/issues/2425) - "Custom data source" exemple make no sense [\#2423](https://github.com/nlohmann/json/issues/2423) - Refuses to compile in project [\#2419](https://github.com/nlohmann/json/issues/2419) - Compilation failure of tests with C++20 standard \(caused by change of u8 literals\) [\#2413](https://github.com/nlohmann/json/issues/2413) - No matching function for call to 'input\_adapter' under Xcode of with nlohmann version 3.9.1 [\#2412](https://github.com/nlohmann/json/issues/2412) - Git tags are not valid semvers [\#2409](https://github.com/nlohmann/json/issues/2409) - after dump, stderr output disappear [\#2403](https://github.com/nlohmann/json/issues/2403) - Using custom string. [\#2398](https://github.com/nlohmann/json/issues/2398) - value\(\) throws unhandled exception for partially specified json object [\#2393](https://github.com/nlohmann/json/issues/2393) - assertion on runtime causes program to stop when accessing const json with missing key [\#2392](https://github.com/nlohmann/json/issues/2392) - Usage with -fno-elide-constructors causes dump\(\) output to be array of `null`s [\#2387](https://github.com/nlohmann/json/issues/2387) - Build fails with clang-cl due to override of CMAKE\_CXX\_COMPILER\(?\) [\#2384](https://github.com/nlohmann/json/issues/2384) - std::optional not working with primitive types [\#2383](https://github.com/nlohmann/json/issues/2383) - Unexpected array when initializing a json const& on gcc 4.8.5 using uniform syntax [\#2370](https://github.com/nlohmann/json/issues/2370) - setprecision support [\#2362](https://github.com/nlohmann/json/issues/2362) - json::parse\(allow\_exceptions = false\) documentation is misleading. [\#2360](https://github.com/nlohmann/json/issues/2360) - std::begin and std::end usage without specifying std namespace [\#2359](https://github.com/nlohmann/json/issues/2359) - Custom object conversion to json hangs in background thread [\#2358](https://github.com/nlohmann/json/issues/2358) - Add support of nullable fields to NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE and NLOHMANN\_DEFINE\_TYPE\_INTRUSIVE [\#2356](https://github.com/nlohmann/json/issues/2356) - the portfile for the vcpkg is not working. [\#2351](https://github.com/nlohmann/json/issues/2351) - Compiler warns of implicit fallthrough when defining preprocessor macro NDEBUG [\#2348](https://github.com/nlohmann/json/issues/2348) - Compile error on Intel compiler running in Windows [\#2346](https://github.com/nlohmann/json/issues/2346) - Build error caused by overwriting CMAKE\_CXX\_COMPILER [\#2343](https://github.com/nlohmann/json/issues/2343) - Error: an attribute list cannot appear here JSON\_HEDLEY\_DEPRECATED\_FOR [\#2342](https://github.com/nlohmann/json/issues/2342) - compiler warning [\#2341](https://github.com/nlohmann/json/issues/2341) - 3.9.0: tests make build non-reproducible [\#2324](https://github.com/nlohmann/json/issues/2324) - Initialization different between gcc/clang [\#2311](https://github.com/nlohmann/json/issues/2311) - Attempt to `get()` a numeric value as a type which cannot represent it should throw [\#2310](https://github.com/nlohmann/json/issues/2310) - Surprising behaviour with overloaded operators [\#2256](https://github.com/nlohmann/json/issues/2256) - ADL issue in input\_adapter [\#2248](https://github.com/nlohmann/json/issues/2248) - Output adapters should be templated. [\#2172](https://github.com/nlohmann/json/issues/2172) - error when using nlohmann::json, std::function and std::bind [\#2147](https://github.com/nlohmann/json/issues/2147) - Remove undefined behavior for const operator\[\] [\#2111](https://github.com/nlohmann/json/issues/2111) - json\({}\) gives null instead of empty object with GCC and -std=c++17 [\#2046](https://github.com/nlohmann/json/issues/2046) - GDB pretty printing support [\#1952](https://github.com/nlohmann/json/issues/1952) - Always compile tests with all warnings enabled and error out on warnings [\#1798](https://github.com/nlohmann/json/issues/1798) - Fixes Cppcheck warnings [\#1759](https://github.com/nlohmann/json/issues/1759) - How to get position info or parser context with custom from\_json\(\) that may throw exceptions? [\#1508](https://github.com/nlohmann/json/issues/1508) - Suggestion to improve value\(\) accessors with respect to move semantics [\#1275](https://github.com/nlohmann/json/issues/1275) - Add Key name to Exception [\#932](https://github.com/nlohmann/json/issues/932) - Overwork warning flags [\#2936](https://github.com/nlohmann/json/pull/2936) ([nlohmann](https://github.com/nlohmann)) - Treat MSVC warnings as errors [\#2930](https://github.com/nlohmann/json/pull/2930) ([nlohmann](https://github.com/nlohmann)) - All: fix warnings when compiling with -Wswitch-enum [\#2927](https://github.com/nlohmann/json/pull/2927) ([fhuberts](https://github.com/fhuberts)) - Guard GCC pragmas [\#2925](https://github.com/nlohmann/json/pull/2925) ([nlohmann](https://github.com/nlohmann)) - Supress -Wfloat-equal on intended float comparisions [\#2911](https://github.com/nlohmann/json/pull/2911) ([Finkman](https://github.com/Finkman)) - Fix binary subtypes [\#2908](https://github.com/nlohmann/json/pull/2908) ([nlohmann](https://github.com/nlohmann)) - Fix useless-cast warnings [\#2902](https://github.com/nlohmann/json/pull/2902) ([nlohmann](https://github.com/nlohmann)) - Add regression test [\#2898](https://github.com/nlohmann/json/pull/2898) ([nlohmann](https://github.com/nlohmann)) - Refactor Unicode tests [\#2889](https://github.com/nlohmann/json/pull/2889) ([nlohmann](https://github.com/nlohmann)) - CMake cleanup [\#2885](https://github.com/nlohmann/json/pull/2885) ([nlohmann](https://github.com/nlohmann)) - Avoid string in case of empty CBOR objects [\#2879](https://github.com/nlohmann/json/pull/2879) ([nlohmann](https://github.com/nlohmann)) - Suppress C4127 warning in unit-json\_pointer.cpp [\#2875](https://github.com/nlohmann/json/pull/2875) ([nlohmann](https://github.com/nlohmann)) - Fix truncation warning [\#2874](https://github.com/nlohmann/json/pull/2874) ([nlohmann](https://github.com/nlohmann)) - Fix memory leak in to\_json [\#2872](https://github.com/nlohmann/json/pull/2872) ([nlohmann](https://github.com/nlohmann)) - Fix assertion failure in diagnostics [\#2866](https://github.com/nlohmann/json/pull/2866) ([nlohmann](https://github.com/nlohmann)) - Update documentation [\#2861](https://github.com/nlohmann/json/pull/2861) ([nlohmann](https://github.com/nlohmann)) - Consistency with `using` in README.md [\#2826](https://github.com/nlohmann/json/pull/2826) ([justanotheranonymoususer](https://github.com/justanotheranonymoususer)) - Properly constrain the basic\_json conversion operator [\#2825](https://github.com/nlohmann/json/pull/2825) ([ldionne](https://github.com/ldionne)) - Fix CI [\#2817](https://github.com/nlohmann/json/pull/2817) ([nlohmann](https://github.com/nlohmann)) - Specified git branch for google benchmark fetch in benchmark test [\#2795](https://github.com/nlohmann/json/pull/2795) ([grafail](https://github.com/grafail)) - Add C++ standards to macOS matrix [\#2790](https://github.com/nlohmann/json/pull/2790) ([nlohmann](https://github.com/nlohmann)) - Update URLs to HTTPS [\#2789](https://github.com/nlohmann/json/pull/2789) ([TotalCaesar659](https://github.com/TotalCaesar659)) - Link to Conan Center package added [\#2771](https://github.com/nlohmann/json/pull/2771) ([offa](https://github.com/offa)) - Keep consistent formatting [\#2770](https://github.com/nlohmann/json/pull/2770) ([jasmcaus](https://github.com/jasmcaus)) - Add a cmake option to use SYSTEM in target\_include\_directories [\#2762](https://github.com/nlohmann/json/pull/2762) ([jpl-mac](https://github.com/jpl-mac)) - replace EOF with std::char\_traits\::eof\(\) [\#2756](https://github.com/nlohmann/json/pull/2756) ([nlohmann](https://github.com/nlohmann)) - Fix typo in README [\#2754](https://github.com/nlohmann/json/pull/2754) ([mortenfyhn](https://github.com/mortenfyhn)) - Update documentation [\#2749](https://github.com/nlohmann/json/pull/2749) ([nlohmann](https://github.com/nlohmann)) - Add documentation for numbers [\#2747](https://github.com/nlohmann/json/pull/2747) ([nlohmann](https://github.com/nlohmann)) - Use Clang 12 in CI [\#2737](https://github.com/nlohmann/json/pull/2737) ([nlohmann](https://github.com/nlohmann)) - Fixes \#2730 [\#2731](https://github.com/nlohmann/json/pull/2731) ([theShmoo](https://github.com/theShmoo)) - Possibility to use without the dependency to file io and streams to use in intel sgx enclaves [\#2729](https://github.com/nlohmann/json/pull/2729) ([theShmoo](https://github.com/theShmoo)) - Update json.hpp [\#2707](https://github.com/nlohmann/json/pull/2707) ([raduteo](https://github.com/raduteo)) - pkg-config.pc.in: Don't concatenate paths [\#2690](https://github.com/nlohmann/json/pull/2690) ([doronbehar](https://github.com/doronbehar)) - add more CI steps [\#2689](https://github.com/nlohmann/json/pull/2689) ([nlohmann](https://github.com/nlohmann)) - Update doctest from 2.4.4 to 2.4.6 \(fixes \#2686\) [\#2687](https://github.com/nlohmann/json/pull/2687) ([musicinmybrain](https://github.com/musicinmybrain)) - License fix [\#2683](https://github.com/nlohmann/json/pull/2683) ([nlohmann](https://github.com/nlohmann)) - Update parse\_exceptions.md - correct `json::exception::parse_error` [\#2679](https://github.com/nlohmann/json/pull/2679) ([frasermarlow](https://github.com/frasermarlow)) - Remove HEDLEY annotation from exception::what\(\) [\#2673](https://github.com/nlohmann/json/pull/2673) ([remyjette](https://github.com/remyjette)) - Fix amount of entries in the json object [\#2659](https://github.com/nlohmann/json/pull/2659) ([abbaswasim](https://github.com/abbaswasim)) - Fix missing 1.78 in example in README.md [\#2625](https://github.com/nlohmann/json/pull/2625) ([wawiesel](https://github.com/wawiesel)) - Add GDB pretty printer [\#2607](https://github.com/nlohmann/json/pull/2607) ([nlohmann](https://github.com/nlohmann)) - readme: fix tilde character display [\#2582](https://github.com/nlohmann/json/pull/2582) ([bl-ue](https://github.com/bl-ue)) - Add support for deserialization of STL containers of non-default constructable types \(fixes \#2574\). [\#2576](https://github.com/nlohmann/json/pull/2576) ([AnthonyVH](https://github.com/AnthonyVH)) - Better diagnostics [\#2562](https://github.com/nlohmann/json/pull/2562) ([nlohmann](https://github.com/nlohmann)) - CI targets [\#2561](https://github.com/nlohmann/json/pull/2561) ([nlohmann](https://github.com/nlohmann)) - Add switch to skip non-reproducible tests. [\#2560](https://github.com/nlohmann/json/pull/2560) ([nlohmann](https://github.com/nlohmann)) - Fix compilation of input\_adapter\(container\) in edge cases [\#2553](https://github.com/nlohmann/json/pull/2553) ([jasujm](https://github.com/jasujm)) - Allow parsing from std::byte containers [\#2550](https://github.com/nlohmann/json/pull/2550) ([nlohmann](https://github.com/nlohmann)) - Travis doesn't run any tests in C++17 mode [\#2540](https://github.com/nlohmann/json/pull/2540) ([karzhenkov](https://github.com/karzhenkov)) - Doctest is updated to v2.4.3 [\#2538](https://github.com/nlohmann/json/pull/2538) ([YarikTH](https://github.com/YarikTH)) - Fix warnings [\#2537](https://github.com/nlohmann/json/pull/2537) ([nlohmann](https://github.com/nlohmann)) - Fix a shadowing warning [\#2536](https://github.com/nlohmann/json/pull/2536) ([nlohmann](https://github.com/nlohmann)) - Clarify license of is\_complete\_type implementation [\#2534](https://github.com/nlohmann/json/pull/2534) ([nlohmann](https://github.com/nlohmann)) - Do not unconditionally redefine C++14 constructs [\#2533](https://github.com/nlohmann/json/pull/2533) ([nlohmann](https://github.com/nlohmann)) - Doctest is updated to v2.4.1 [\#2525](https://github.com/nlohmann/json/pull/2525) ([YarikTH](https://github.com/YarikTH)) - Add MAIN\_PROJECT check for test and install options [\#2514](https://github.com/nlohmann/json/pull/2514) ([globberwops](https://github.com/globberwops)) - Ranged insert test section is added in unit-ordered\_json.cpp [\#2512](https://github.com/nlohmann/json/pull/2512) ([YarikTH](https://github.com/YarikTH)) - Add asserts to suppress C28020 [\#2447](https://github.com/nlohmann/json/pull/2447) ([jbzdarkid](https://github.com/jbzdarkid)) - Change argument name "subtype" in byte\_container\_with\_subtype [\#2444](https://github.com/nlohmann/json/pull/2444) ([linev](https://github.com/linev)) - 📝 add CPM.Cmake example [\#2406](https://github.com/nlohmann/json/pull/2406) ([leozz37](https://github.com/leozz37)) - Fix move constructor of json\_ref [\#2405](https://github.com/nlohmann/json/pull/2405) ([karzhenkov](https://github.com/karzhenkov)) - Properly select "Release" build for Travis [\#2375](https://github.com/nlohmann/json/pull/2375) ([karzhenkov](https://github.com/karzhenkov)) - Update Hedley [\#2367](https://github.com/nlohmann/json/pull/2367) ([nlohmann](https://github.com/nlohmann)) - Fix and extend documentation of discarded values [\#2363](https://github.com/nlohmann/json/pull/2363) ([nlohmann](https://github.com/nlohmann)) - Fix typos in documentation [\#2354](https://github.com/nlohmann/json/pull/2354) ([rbuch](https://github.com/rbuch)) - Remove "\#define private public" from tests [\#2352](https://github.com/nlohmann/json/pull/2352) ([nlohmann](https://github.com/nlohmann)) - Remove -Wimplicit-fallthrough warning [\#2349](https://github.com/nlohmann/json/pull/2349) ([nlohmann](https://github.com/nlohmann)) - Fix code to work without exceptions [\#2347](https://github.com/nlohmann/json/pull/2347) ([nlohmann](https://github.com/nlohmann)) - fix cmake script overwriting compiler path [\#2344](https://github.com/nlohmann/json/pull/2344) ([ongjunjie](https://github.com/ongjunjie)) ## [v3.9.1](https://github.com/nlohmann/json/releases/tag/v3.9.1) (2020-08-06) [Full Changelog](https://github.com/nlohmann/json/compare/v3.9.0...v3.9.1) - Can't parse not formatted JSON. [\#2340](https://github.com/nlohmann/json/issues/2340) - parse returns desired array contained in array when JSON text begins with square bracket on gcc 7.5.0 [\#2339](https://github.com/nlohmann/json/issues/2339) - Unexpected deserialization difference between Mac and Linux [\#2338](https://github.com/nlohmann/json/issues/2338) - Reading ordered\_json from file causes compile error [\#2331](https://github.com/nlohmann/json/issues/2331) - ignore\_comment=true fails on multiple consecutive lines starting with comments [\#2330](https://github.com/nlohmann/json/issues/2330) - Update documentation about Homebrew installation and CMake integration - Homebrew [\#2326](https://github.com/nlohmann/json/issues/2326) - Chinese character initialize error [\#2325](https://github.com/nlohmann/json/issues/2325) - json.update and vector\does not work with ordered\_json [\#2315](https://github.com/nlohmann/json/issues/2315) - Ambiguous call to overloaded function [\#2210](https://github.com/nlohmann/json/issues/2210) - Fix fallthrough warning [\#2333](https://github.com/nlohmann/json/pull/2333) ([nlohmann](https://github.com/nlohmann)) - Fix lexer to properly cope with repeated comments [\#2332](https://github.com/nlohmann/json/pull/2332) ([nlohmann](https://github.com/nlohmann)) - Fix name of Homebrew formula in documentation [\#2327](https://github.com/nlohmann/json/pull/2327) ([nlohmann](https://github.com/nlohmann)) - fix typo [\#2320](https://github.com/nlohmann/json/pull/2320) ([wx257osn2](https://github.com/wx257osn2)) - Fix a bug due to missing overloads in ordered\_map container [\#2319](https://github.com/nlohmann/json/pull/2319) ([nlohmann](https://github.com/nlohmann)) - cmake: install pkg-config file relative to current\_binary\_dir [\#2318](https://github.com/nlohmann/json/pull/2318) ([eli-schwartz](https://github.com/eli-schwartz)) - Fixed installation of pkg-config file on other than Ubuntu [\#2314](https://github.com/nlohmann/json/pull/2314) ([xvitaly](https://github.com/xvitaly)) ## [v3.9.0](https://github.com/nlohmann/json/releases/tag/v3.9.0) (2020-07-27) [Full Changelog](https://github.com/nlohmann/json/compare/v3.8.0...v3.9.0) - Unknown Type Name clang error when using NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE [\#2313](https://github.com/nlohmann/json/issues/2313) - Clang 10.0 / GCC 10.1 warnings on disabled exceptions [\#2304](https://github.com/nlohmann/json/issues/2304) - Application stalls indefinitely with message byte size 10 [\#2293](https://github.com/nlohmann/json/issues/2293) - linker error [\#2292](https://github.com/nlohmann/json/issues/2292) - Add support for high-precision numbers in UBJSON encoding [\#2286](https://github.com/nlohmann/json/issues/2286) - NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE fails if the length of the argument is 10 [\#2280](https://github.com/nlohmann/json/issues/2280) - Custom types : MACRO expansion bug [\#2267](https://github.com/nlohmann/json/issues/2267) - to/from\_json Failing To Convert String [\#2238](https://github.com/nlohmann/json/issues/2238) - clang 9.0 report warning: unused type alias 'size\_type' \[-Wunused-local-typedef\] [\#2221](https://github.com/nlohmann/json/issues/2221) - Enormous array created when working with map\ [\#2220](https://github.com/nlohmann/json/issues/2220) - Can I disable sorting of json values [\#2219](https://github.com/nlohmann/json/issues/2219) - Getting Qt types to work [\#2217](https://github.com/nlohmann/json/issues/2217) - Convert to Qt QVariant [\#2216](https://github.com/nlohmann/json/issues/2216) - How to custom serialize same data type of vector? [\#2215](https://github.com/nlohmann/json/issues/2215) - json constructor does not support std::optional [\#2214](https://github.com/nlohmann/json/issues/2214) - Failing to Parse Valid JSON [\#2209](https://github.com/nlohmann/json/issues/2209) - \(De-\)Serialization of std::variant with namespaces [\#2208](https://github.com/nlohmann/json/issues/2208) - Addint support for complex type [\#2207](https://github.com/nlohmann/json/issues/2207) - array\_index possible out of range [\#2205](https://github.com/nlohmann/json/issues/2205) - Object deserialized as array [\#2204](https://github.com/nlohmann/json/issues/2204) - Sending to a function a reference to a sub-branch [\#2200](https://github.com/nlohmann/json/issues/2200) - How to Serialize derived class to JSON object? [\#2199](https://github.com/nlohmann/json/issues/2199) - JSON incorrectly serialized [\#2198](https://github.com/nlohmann/json/issues/2198) - Exception Unhandled out\_of\_range error [\#2197](https://github.com/nlohmann/json/issues/2197) - msgpack serialisation : float is treated as 64bit float, not 32bit float. [\#2196](https://github.com/nlohmann/json/issues/2196) - Is it possible to use compile-time type guarantees for JSON structures? [\#2195](https://github.com/nlohmann/json/issues/2195) - Question : performance against python dict [\#2194](https://github.com/nlohmann/json/issues/2194) - vs2017 compile error [\#2192](https://github.com/nlohmann/json/issues/2192) - Check if a key exists [\#2191](https://github.com/nlohmann/json/issues/2191) - Failed to run tests due to missing test data on builders without Internet access [\#2190](https://github.com/nlohmann/json/issues/2190) - 3.8.0: unit-cbor.cpp test failures [\#2189](https://github.com/nlohmann/json/issues/2189) - 'nlohmann/json.hpp' file not found [\#2188](https://github.com/nlohmann/json/issues/2188) - How to send json data over the wire? [\#2185](https://github.com/nlohmann/json/issues/2185) - Ubuntu 16 not supporting nlohmann/json? [\#2184](https://github.com/nlohmann/json/issues/2184) - .get\ causing emdash errors [\#2180](https://github.com/nlohmann/json/issues/2180) - Object properties should not be re-sorted alphabetically [\#2179](https://github.com/nlohmann/json/issues/2179) - Custom type registration : instrusive API [\#2175](https://github.com/nlohmann/json/issues/2175) - Many version of the function "void to\_json\(json& j, const MyStruct& struct\)" [\#2171](https://github.com/nlohmann/json/issues/2171) - How should strings be escaped? [\#2155](https://github.com/nlohmann/json/issues/2155) - Adding a value to an existing json puts it at the beginning instead of the end [\#2149](https://github.com/nlohmann/json/issues/2149) - The header file is big, can we use what we need. [\#2134](https://github.com/nlohmann/json/issues/2134) - Changing the default format for unordered\_map \(or other set\) [\#2132](https://github.com/nlohmann/json/issues/2132) - Getting size of deserialized bson document [\#2131](https://github.com/nlohmann/json/issues/2131) - implicit conversion failure [\#2128](https://github.com/nlohmann/json/issues/2128) - Error thrown when parsing in a subclass [\#2124](https://github.com/nlohmann/json/issues/2124) - explicit conversion to string not considered for std::map keys in GCC8 [\#2096](https://github.com/nlohmann/json/issues/2096) - Add support for JSONC [\#2061](https://github.com/nlohmann/json/issues/2061) - Library provides template arg for string\_type but assumes std::string in some places [\#2059](https://github.com/nlohmann/json/issues/2059) - incremental parsing with sax\_parser [\#2030](https://github.com/nlohmann/json/issues/2030) - Question about flatten and unflatten [\#1989](https://github.com/nlohmann/json/issues/1989) - CBOR parser doesn't skip tags [\#1968](https://github.com/nlohmann/json/issues/1968) - Compilation failure using Clang on Windows [\#1898](https://github.com/nlohmann/json/issues/1898) - Fail to build when including json.hpp as a system include [\#1818](https://github.com/nlohmann/json/issues/1818) - Parsing string into json doesn't preserve the order correctly. [\#1817](https://github.com/nlohmann/json/issues/1817) - \[C++17\] Allow std::optional to convert to nlohmann::json [\#1749](https://github.com/nlohmann/json/issues/1749) - How can I save json object in file in order? [\#1717](https://github.com/nlohmann/json/issues/1717) - Support for Comments [\#1513](https://github.com/nlohmann/json/issues/1513) - clang compiler: error : unknown type name 'not' [\#1119](https://github.com/nlohmann/json/issues/1119) - dump\(\) without alphabetical order [\#1106](https://github.com/nlohmann/json/issues/1106) - operator T\(\) considered harmful [\#958](https://github.com/nlohmann/json/issues/958) - Order of the elements in JSON object [\#952](https://github.com/nlohmann/json/issues/952) - How to prevent alphabetical sorting of data? [\#727](https://github.com/nlohmann/json/issues/727) - Why is an object ordering values by Alphabetical Order? [\#660](https://github.com/nlohmann/json/issues/660) - Feature request: Comments [\#597](https://github.com/nlohmann/json/issues/597) - Head Elements Sorting [\#543](https://github.com/nlohmann/json/issues/543) - Automatic ordered JSON [\#424](https://github.com/nlohmann/json/issues/424) - Support for comments. [\#376](https://github.com/nlohmann/json/issues/376) - Optional comment support. [\#363](https://github.com/nlohmann/json/issues/363) - Strip comments / Minify [\#294](https://github.com/nlohmann/json/issues/294) - maintaining order of keys during iteration [\#106](https://github.com/nlohmann/json/issues/106) - Update documentation [\#2312](https://github.com/nlohmann/json/pull/2312) ([nlohmann](https://github.com/nlohmann)) - Fix bug in CBOR tag handling [\#2308](https://github.com/nlohmann/json/pull/2308) ([nlohmann](https://github.com/nlohmann)) - added inline to NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE macro [\#2306](https://github.com/nlohmann/json/pull/2306) ([jwittbrodt](https://github.com/jwittbrodt)) - fixes unused variable 'ex' for \#2304 [\#2305](https://github.com/nlohmann/json/pull/2305) ([AODQ](https://github.com/AODQ)) - Cleanup [\#2303](https://github.com/nlohmann/json/pull/2303) ([nlohmann](https://github.com/nlohmann)) - Add test with multiple translation units [\#2301](https://github.com/nlohmann/json/pull/2301) ([nlohmann](https://github.com/nlohmann)) - Merge GitHub actions [\#2300](https://github.com/nlohmann/json/pull/2300) ([nlohmann](https://github.com/nlohmann)) - Fix unused parameter [\#2299](https://github.com/nlohmann/json/pull/2299) ([nlohmann](https://github.com/nlohmann)) - Add support for high-precision numbers in UBJSON encoding [\#2297](https://github.com/nlohmann/json/pull/2297) ([nlohmann](https://github.com/nlohmann)) - fix eof for get\_binary and get\_string [\#2294](https://github.com/nlohmann/json/pull/2294) ([jprochazk](https://github.com/jprochazk)) - Serialisation macros: increase upper bound on number of member variables [\#2287](https://github.com/nlohmann/json/pull/2287) ([pfeatherstone](https://github.com/pfeatherstone)) - add inline specifier for detail::combine [\#2285](https://github.com/nlohmann/json/pull/2285) ([T0b1-iOS](https://github.com/T0b1-iOS)) - Add static assertion for missing binary function in SAX interface [\#2282](https://github.com/nlohmann/json/pull/2282) ([nlohmann](https://github.com/nlohmann)) - Add test for target\_include\_directories [\#2279](https://github.com/nlohmann/json/pull/2279) ([nlohmann](https://github.com/nlohmann)) - Clean up maintainer Makefiles and fix some linter warnings [\#2274](https://github.com/nlohmann/json/pull/2274) ([nlohmann](https://github.com/nlohmann)) - Add option to ignore CBOR tags [\#2273](https://github.com/nlohmann/json/pull/2273) ([nlohmann](https://github.com/nlohmann)) - Hash function without allocation [\#2269](https://github.com/nlohmann/json/pull/2269) ([nlohmann](https://github.com/nlohmann)) - Add ClangCL for MSVC [\#2268](https://github.com/nlohmann/json/pull/2268) ([t-b](https://github.com/t-b)) - Makefile: Always use SED variable [\#2264](https://github.com/nlohmann/json/pull/2264) ([t-b](https://github.com/t-b)) - Add Xcode 12 CI [\#2262](https://github.com/nlohmann/json/pull/2262) ([nlohmann](https://github.com/nlohmann)) - Make library work with Clang on Windows [\#2259](https://github.com/nlohmann/json/pull/2259) ([nlohmann](https://github.com/nlohmann)) - Add ordered\_json specialization with ordered object keys [\#2258](https://github.com/nlohmann/json/pull/2258) ([nlohmann](https://github.com/nlohmann)) - Add pkg-config file [\#2253](https://github.com/nlohmann/json/pull/2253) ([ericonr](https://github.com/ericonr)) - Fix regression from \#2181 [\#2251](https://github.com/nlohmann/json/pull/2251) ([nlohmann](https://github.com/nlohmann)) - Tag binary values in cbor if set [\#2244](https://github.com/nlohmann/json/pull/2244) ([matthewbauer](https://github.com/matthewbauer)) - Make assert configurable via JSON\_ASSERT [\#2242](https://github.com/nlohmann/json/pull/2242) ([nlohmann](https://github.com/nlohmann)) - Add specialization of get\_to [\#2233](https://github.com/nlohmann/json/pull/2233) ([nlohmann](https://github.com/nlohmann)) - Refine documentation of error\_handler parameter [\#2232](https://github.com/nlohmann/json/pull/2232) ([nlohmann](https://github.com/nlohmann)) - Simplify conversion from/to custom types [\#2225](https://github.com/nlohmann/json/pull/2225) ([nlohmann](https://github.com/nlohmann)) - Remove unused typedefs [\#2224](https://github.com/nlohmann/json/pull/2224) ([nlohmann](https://github.com/nlohmann)) - Enable CMake policy CMP0077 [\#2222](https://github.com/nlohmann/json/pull/2222) ([alexreinking](https://github.com/alexreinking)) - Add option to ignore comments in parse/accept functions [\#2212](https://github.com/nlohmann/json/pull/2212) ([nlohmann](https://github.com/nlohmann)) - Fix Clang-Tidy warnings [\#2211](https://github.com/nlohmann/json/pull/2211) ([nlohmann](https://github.com/nlohmann)) - Simple ordered\_json that works on all supported compilers [\#2206](https://github.com/nlohmann/json/pull/2206) ([gatopeich](https://github.com/gatopeich)) - Use unsigned indizies for array index in json pointer [\#2203](https://github.com/nlohmann/json/pull/2203) ([t-b](https://github.com/t-b)) - Add option to not rely on Internet connectivity during test stage [\#2202](https://github.com/nlohmann/json/pull/2202) ([nlohmann](https://github.com/nlohmann)) - Serialize floating-point numbers with 32 bit when possible \(MessagePack\) [\#2201](https://github.com/nlohmann/json/pull/2201) ([nlohmann](https://github.com/nlohmann)) - Fix consistency in function `int_to_string()` [\#2193](https://github.com/nlohmann/json/pull/2193) ([dota17](https://github.com/dota17)) - Fix issue\#1275 [\#2181](https://github.com/nlohmann/json/pull/2181) ([dota17](https://github.com/dota17)) - C++20 support by removing swap specialization [\#2176](https://github.com/nlohmann/json/pull/2176) ([gracicot](https://github.com/gracicot)) - Feat/explicit conversion operator [\#1559](https://github.com/nlohmann/json/pull/1559) ([theodelrieu](https://github.com/theodelrieu)) ## [v3.8.0](https://github.com/nlohmann/json/releases/tag/v3.8.0) (2020-06-14) [Full Changelog](https://github.com/nlohmann/json/compare/v3.7.3...v3.8.0) - sorry delete this issue, i'm stupid [\#2187](https://github.com/nlohmann/json/issues/2187) - Append to a std::nlohmann::json type [\#2186](https://github.com/nlohmann/json/issues/2186) - Some troubles to compile the last revision [\#2177](https://github.com/nlohmann/json/issues/2177) - ​\#​ Top level CMakeLists.txt​ ​project​\(FOO\) ... ​option​\(FOO\_USE\_EXTERNAL\_JSON ​"Use an external JSON library"​ ​OFF​\) ... ​add\_subdirectory​\(thirdparty\) ... ​add\_library​\(foo ...\) ... ​\#​ Note that the namespaced target will always be available regardless of the​ ​\#​ import method​ ​target\_link\_libraries​\(foo ​PRIVATE​ nlohmann\_json::nlohmann\_json\) [\#2170](https://github.com/nlohmann/json/issues/2170) - https://www.github.com/nlohmann/json/tree/develop/include%2Fnlohmann%2Fjson\_fwd.hpp [\#2169](https://github.com/nlohmann/json/issues/2169) - templated from\_json of non primitive types causes gcc error [\#2168](https://github.com/nlohmann/json/issues/2168) - few warnings/errors in copy assignment [\#2167](https://github.com/nlohmann/json/issues/2167) - Different output when upgrading from clang 9 to clang 10 [\#2166](https://github.com/nlohmann/json/issues/2166) - Cannot build with VS 2019 / C++17 [\#2163](https://github.com/nlohmann/json/issues/2163) - Q: When I received an illegal string,How the program knows? [\#2162](https://github.com/nlohmann/json/issues/2162) - Problem while reading a json file [\#2161](https://github.com/nlohmann/json/issues/2161) - converting std::chrono::system\_clock::time\_point to json. [\#2159](https://github.com/nlohmann/json/issues/2159) - how to parse vector\ format [\#2157](https://github.com/nlohmann/json/issues/2157) - nlohmann::json and =nullptr [\#2156](https://github.com/nlohmann/json/issues/2156) - test-cbor fails [\#2154](https://github.com/nlohmann/json/issues/2154) - Accessing array inside array syntax? [\#2151](https://github.com/nlohmann/json/issues/2151) - Best way to catch errors when querying json [\#2150](https://github.com/nlohmann/json/issues/2150) - JSON Data Mapping Key-Value from other Key-Value [\#2148](https://github.com/nlohmann/json/issues/2148) - Conflicts with std \ compiling with GCC 10 [\#2146](https://github.com/nlohmann/json/issues/2146) - Incorrect CMake FetchContent example [\#2142](https://github.com/nlohmann/json/issues/2142) - Help for a Beginner? [\#2141](https://github.com/nlohmann/json/issues/2141) - Read Json from File [\#2139](https://github.com/nlohmann/json/issues/2139) - How to feed a predefined integer value into json string [\#2138](https://github.com/nlohmann/json/issues/2138) - getting json array inside json object [\#2135](https://github.com/nlohmann/json/issues/2135) - Add .contains example to doc [\#2133](https://github.com/nlohmann/json/issues/2133) - Is it safe to return string.c\_str\(\) received from get\(\)? [\#2130](https://github.com/nlohmann/json/issues/2130) - GCC 10: Compilation error when including any before including json header in C++17 mode [\#2129](https://github.com/nlohmann/json/issues/2129) - Intersection of two json files [\#2127](https://github.com/nlohmann/json/issues/2127) - App crashes when dump method called for non ascii chars. [\#2126](https://github.com/nlohmann/json/issues/2126) - iterator based erase method [\#2122](https://github.com/nlohmann/json/issues/2122) - quick and convenient api to get/set nested json values [\#2120](https://github.com/nlohmann/json/issues/2120) - assigning nullptr to std::string [\#2118](https://github.com/nlohmann/json/issues/2118) - usless\_cast warnings with gcc 9.3 and 10.1 \(C++17\) [\#2114](https://github.com/nlohmann/json/issues/2114) - clang 10 warning [\#2113](https://github.com/nlohmann/json/issues/2113) - Possible incorrect \_MSC\_VER reference [\#2112](https://github.com/nlohmann/json/issues/2112) - warning under gcc 10.1 [\#2110](https://github.com/nlohmann/json/issues/2110) - Wdeprecated-declarations from GCC v10.1.0 [\#2109](https://github.com/nlohmann/json/issues/2109) - Global std::vector from json [\#2108](https://github.com/nlohmann/json/issues/2108) - heap-buffer-overflow when using nlohmann/json, ASAN, and gtest [\#2107](https://github.com/nlohmann/json/issues/2107) - exception 0x770DC5AF when i read an special char in json file [\#2106](https://github.com/nlohmann/json/issues/2106) - json::parse\(\) fails to parse a dump\(2,' '\) output, yet does successfully parse dump\(\) [\#2105](https://github.com/nlohmann/json/issues/2105) - run test-udt error in MSVC 19.16.27034.0 [\#2103](https://github.com/nlohmann/json/issues/2103) - Unable to dump to stringstream [\#2102](https://github.com/nlohmann/json/issues/2102) - Can't ad an object in another objet [\#2101](https://github.com/nlohmann/json/issues/2101) - Implicit conversion causes "cannot use operator\[\] with a string argument with string" [\#2098](https://github.com/nlohmann/json/issues/2098) - C++20: char8\_t [\#2097](https://github.com/nlohmann/json/issues/2097) - Compilation issues when included in project [\#2094](https://github.com/nlohmann/json/issues/2094) - string value with null character causes infinite loop [\#2093](https://github.com/nlohmann/json/issues/2093) - corrupted size vs. prev\_size \(aborted\) [\#2092](https://github.com/nlohmann/json/issues/2092) - Get string field content without return std::string copy [\#2091](https://github.com/nlohmann/json/issues/2091) - JSON Comments \(JSON 5\) [\#2090](https://github.com/nlohmann/json/issues/2090) - Remove \#include \ [\#2089](https://github.com/nlohmann/json/issues/2089) - JSON library as a git submodule [\#2088](https://github.com/nlohmann/json/issues/2088) - Apple Clang 11.0.3 on MacOS Catalina 10.15.4 not compiling [\#2087](https://github.com/nlohmann/json/issues/2087) - Value function return empty object even if it exist [\#2086](https://github.com/nlohmann/json/issues/2086) - Cannot debug but Run works [\#2085](https://github.com/nlohmann/json/issues/2085) - Question about serialization. [\#2084](https://github.com/nlohmann/json/issues/2084) - How to include in an external project [\#2083](https://github.com/nlohmann/json/issues/2083) - Missing tests for binary values [\#2082](https://github.com/nlohmann/json/issues/2082) - How to override default string serialization? [\#2079](https://github.com/nlohmann/json/issues/2079) - Can't have a json type as a property in an arbitrary type [\#2078](https://github.com/nlohmann/json/issues/2078) - New release? [\#2075](https://github.com/nlohmann/json/issues/2075) - CMake FetchContent \> Updating the documentation? [\#2073](https://github.com/nlohmann/json/issues/2073) - How to convert STL Vector \(of user defined type\) to Json [\#2072](https://github.com/nlohmann/json/issues/2072) - how to make an array of objects [\#2070](https://github.com/nlohmann/json/issues/2070) - ‘\_\_int64’ was not declared [\#2068](https://github.com/nlohmann/json/issues/2068) - \[json.exception.type\_error.317\] cannot serialize binary data to text JSON [\#2067](https://github.com/nlohmann/json/issues/2067) - Unexpected end of input; expected '\[', '{', or a literal [\#2066](https://github.com/nlohmann/json/issues/2066) - Json structure can be nested? [\#2065](https://github.com/nlohmann/json/issues/2065) - Bug: returning reference to local temporary object [\#2064](https://github.com/nlohmann/json/issues/2064) - Allow to use non strict parsing [\#2063](https://github.com/nlohmann/json/issues/2063) - Crashing on json::at [\#2062](https://github.com/nlohmann/json/issues/2062) - How to convert a const std::vector\ message to a json, to be able to parse it and extract information from it? Can you point to any examples? [\#2058](https://github.com/nlohmann/json/issues/2058) - Nice library [\#2057](https://github.com/nlohmann/json/issues/2057) - json.hpp:15372:22: error: expected unqualified-id if \(not std::isfinite\(x\)\): Started getting this bug after updating my XCode [\#2056](https://github.com/nlohmann/json/issues/2056) - Confused as how I can extract the values from the JSON object. [\#2055](https://github.com/nlohmann/json/issues/2055) - Warnings with GCC 10 [\#2052](https://github.com/nlohmann/json/issues/2052) - Warnings with Clang 10 [\#2049](https://github.com/nlohmann/json/issues/2049) - Update doctest [\#2048](https://github.com/nlohmann/json/issues/2048) - Unclear error message: "cannot use operator\[\] with a string argument with array" [\#2047](https://github.com/nlohmann/json/issues/2047) - Serializing std::variant\\> [\#2045](https://github.com/nlohmann/json/issues/2045) - Crash when parse big jsonfile [\#2042](https://github.com/nlohmann/json/issues/2042) - How to check if a key exists without silently generating null objects on the path [\#2041](https://github.com/nlohmann/json/issues/2041) - Crash when traversing over items\(\) of temporary json objects [\#2040](https://github.com/nlohmann/json/issues/2040) - How to parse multiple line value ? [\#2039](https://github.com/nlohmann/json/issues/2039) - SAX API uses unsigned std::size\_t but -1 if element size is not known; [\#2037](https://github.com/nlohmann/json/issues/2037) - How to parse big decimal data [\#2036](https://github.com/nlohmann/json/issues/2036) - how use template \ struct adl\_serializer [\#2035](https://github.com/nlohmann/json/issues/2035) - auto iterator returned by find to handle value depending if is string or numeric. [\#2032](https://github.com/nlohmann/json/issues/2032) - pass find returned iterator to numeric variable. [\#2031](https://github.com/nlohmann/json/issues/2031) - Parse error on valid json file [\#2029](https://github.com/nlohmann/json/issues/2029) - Is here any elegant way to combine serialization and deserialization code? [\#2028](https://github.com/nlohmann/json/issues/2028) - Notes about dump function [\#2027](https://github.com/nlohmann/json/issues/2027) - Different JSON printouts for empty dictionary on Linux and Mac. [\#2026](https://github.com/nlohmann/json/issues/2026) - easier way to get exception reason out of json\_sax\_dom\_callback\_parser without exceptions [\#2024](https://github.com/nlohmann/json/issues/2024) - Using fifo\_map with base class and derived class [\#2023](https://github.com/nlohmann/json/issues/2023) - Error reading JSON File [\#2022](https://github.com/nlohmann/json/issues/2022) - Parse causing crash on android. Cannot catch. [\#2021](https://github.com/nlohmann/json/issues/2021) - Extra backslashes in nested json [\#2020](https://github.com/nlohmann/json/issues/2020) - How to create patch for merge\_patch input ? [\#2018](https://github.com/nlohmann/json/issues/2018) - CppUTest/include/CppUTestExt/MockSupport.h:40: error: default argument for ‘MockFailureReporter\* failureReporterForThisCall’ has type ‘void\*’ [\#2017](https://github.com/nlohmann/json/issues/2017) - including another file [\#2016](https://github.com/nlohmann/json/issues/2016) - GNU PREREQ Error with gcc 9.3.0 [\#2015](https://github.com/nlohmann/json/issues/2015) - Parse error: json.exception.parse\_error.101 - invalid string: ill-formed UTF-8 byte [\#2014](https://github.com/nlohmann/json/issues/2014) - Add more flexibility to basic\_json's ObjectType \(and ArrayType\) [\#2013](https://github.com/nlohmann/json/issues/2013) - afl persistent mode [\#2012](https://github.com/nlohmann/json/issues/2012) - Compiler Errors under VS2019 in Appveyor CI [\#2009](https://github.com/nlohmann/json/issues/2009) - Another compilation failure with Visual Studio [\#2007](https://github.com/nlohmann/json/issues/2007) - Implicit cast to std::string broken again with VS2019 16.5.0 [\#2006](https://github.com/nlohmann/json/issues/2006) - error: no matching member function for call to 'AddRaw' [\#2005](https://github.com/nlohmann/json/issues/2005) - When I re-create an object again after the network request, an error is reported [\#2003](https://github.com/nlohmann/json/issues/2003) - How to merge \(and not replace\) different Json::Value objects in jsoncpp [\#2001](https://github.com/nlohmann/json/issues/2001) - scalar transforms to list [\#2000](https://github.com/nlohmann/json/issues/2000) - Dump JSON containing multibyte characters [\#1999](https://github.com/nlohmann/json/issues/1999) - Build error when modify value [\#1998](https://github.com/nlohmann/json/issues/1998) - How do i include a vector of pointers in my json? [\#1997](https://github.com/nlohmann/json/issues/1997) - Compiler error wrt incomplete types changed in gcc8.3.0-26 [\#1996](https://github.com/nlohmann/json/issues/1996) - NaN-like comparison behavior of discarded is inconvenient [\#1988](https://github.com/nlohmann/json/issues/1988) - Maintaining JSON package in my CMake [\#1987](https://github.com/nlohmann/json/issues/1987) - reading int number and string number [\#1986](https://github.com/nlohmann/json/issues/1986) - Build error: keyword is hidden by macro definition! [\#1985](https://github.com/nlohmann/json/issues/1985) - JSON patch diff for op=add formation is not as per standard \(RFC 6902\) [\#1983](https://github.com/nlohmann/json/issues/1983) - json\_pointer.contains\(\) exception is incorrectly raised [\#1982](https://github.com/nlohmann/json/issues/1982) - Error with non existing key [\#1981](https://github.com/nlohmann/json/issues/1981) - Closed [\#1978](https://github.com/nlohmann/json/issues/1978) - Where is the library built and what is the name? [\#1977](https://github.com/nlohmann/json/issues/1977) - The cmake\_import example does not build [\#1976](https://github.com/nlohmann/json/issues/1976) - Dumping core when reading invalid file [\#1975](https://github.com/nlohmann/json/issues/1975) - Abort in dump\(\) method [\#1973](https://github.com/nlohmann/json/issues/1973) - Unclear docs regarding parser\_callback\_t callbacks [\#1972](https://github.com/nlohmann/json/issues/1972) - Possible memory leak on push\_back [\#1971](https://github.com/nlohmann/json/issues/1971) - Is it possible to get a safe mutable reference/pointer to internal variant used in nlohmann json? [\#1970](https://github.com/nlohmann/json/issues/1970) - Getting a flatten json to map\ [\#1957](https://github.com/nlohmann/json/issues/1957) - forced type conversion or lexical cast without exception. [\#1955](https://github.com/nlohmann/json/issues/1955) - Add json\_view type support to avoid excessive copying [\#1954](https://github.com/nlohmann/json/issues/1954) - Adding "examples" section for real-life usages [\#1953](https://github.com/nlohmann/json/issues/1953) - Add nlohmann::json::key\_type [\#1951](https://github.com/nlohmann/json/issues/1951) - cannot use operator\[\] with a string argument with string [\#1949](https://github.com/nlohmann/json/issues/1949) - std::ifstream \>\> json error [\#1948](https://github.com/nlohmann/json/issues/1948) - Cannot update json data in an iterator? [\#1947](https://github.com/nlohmann/json/issues/1947) - How can i build this library in VS 2017? [\#1943](https://github.com/nlohmann/json/issues/1943) - json\_pointer.contains\(\) exceptions when path not found [\#1942](https://github.com/nlohmann/json/issues/1942) - Nested objects serialize/deserialize [\#1941](https://github.com/nlohmann/json/issues/1941) - Compile warning on architectures that are not x86 [\#1939](https://github.com/nlohmann/json/issues/1939) - Version of nlohmann-json-dev in debian packages [\#1938](https://github.com/nlohmann/json/issues/1938) - Create a json object for every cycle [\#1937](https://github.com/nlohmann/json/issues/1937) - How to get the object name? [\#1936](https://github.com/nlohmann/json/issues/1936) - Reserve and resize function for basic json [\#1935](https://github.com/nlohmann/json/issues/1935) - How to use json parse in tsl::ordread\_map? [\#1934](https://github.com/nlohmann/json/issues/1934) - C++14 support is not enabled with msvc2015 [\#1932](https://github.com/nlohmann/json/issues/1932) - Need help with to\_json for derived class, keep getting "cannot use operator" [\#1931](https://github.com/nlohmann/json/issues/1931) - How to handle std::vector\ [\#1930](https://github.com/nlohmann/json/issues/1930) - Heap corruption issue [\#1929](https://github.com/nlohmann/json/issues/1929) - Add `std::wistream` support. [\#1928](https://github.com/nlohmann/json/issues/1928) - This i can write and read any file thanks [\#1927](https://github.com/nlohmann/json/issues/1927) - How can I get this simple example working? [\#1926](https://github.com/nlohmann/json/issues/1926) - emplace\_back does not seems to work with the int 0 [\#1925](https://github.com/nlohmann/json/issues/1925) - Why nlohmann does not release memory [\#1924](https://github.com/nlohmann/json/issues/1924) - Is it possible to have template `json::parse` with `noexcept` specifier? [\#1922](https://github.com/nlohmann/json/issues/1922) - JSON to wstring? [\#1921](https://github.com/nlohmann/json/issues/1921) - GCC 10 tests build failure [\#1920](https://github.com/nlohmann/json/issues/1920) - Size of binary json representations [\#1919](https://github.com/nlohmann/json/issues/1919) - Accessing strings \(for example in keys or values\) without having the lib create a copy of it. [\#1916](https://github.com/nlohmann/json/issues/1916) - operator== documentation should show how to apply custom comparison function [\#1915](https://github.com/nlohmann/json/issues/1915) - char8\_t and std::u8string support [\#1914](https://github.com/nlohmann/json/issues/1914) - std::is\_pod is deprecated in C++20 [\#1913](https://github.com/nlohmann/json/issues/1913) - Incomplete types reported by \(experimental\) GCC10 [\#1912](https://github.com/nlohmann/json/issues/1912) - Compile warnings on MSVC 14.2 [\#1911](https://github.com/nlohmann/json/issues/1911) - How to parse json file with type composition of std::optional and std::variant [\#1910](https://github.com/nlohmann/json/issues/1910) - why root\_schema be implemented as unique\_ptr in json-validator.cpp,could I use it as shared\_ptr? [\#1908](https://github.com/nlohmann/json/issues/1908) - compile error in gcc-6.3.0 [\#1906](https://github.com/nlohmann/json/issues/1906) - Scalar constexpr is odr-used when used as json initializer [\#1905](https://github.com/nlohmann/json/issues/1905) - install Slack app [\#1904](https://github.com/nlohmann/json/issues/1904) - typo in a comment [\#1903](https://github.com/nlohmann/json/issues/1903) - Watch JSON variables in Debug [\#1902](https://github.com/nlohmann/json/issues/1902) - does Json sdk cares about dfc dfd utf8 issue? [\#1901](https://github.com/nlohmann/json/issues/1901) - Allow multiple line string value in JSON [\#1897](https://github.com/nlohmann/json/issues/1897) - Writing map to json file [\#1896](https://github.com/nlohmann/json/issues/1896) - Small documentation mistake [\#1895](https://github.com/nlohmann/json/issues/1895) - why static function `parse` cann't find in visual studio 2019 [\#1894](https://github.com/nlohmann/json/issues/1894) - Best way to handle json files with missing key value pairs. [\#1893](https://github.com/nlohmann/json/issues/1893) - accessing json object as multimap [\#1892](https://github.com/nlohmann/json/issues/1892) - What is the best way to parse vec3s into glm::vec3 [\#1891](https://github.com/nlohmann/json/issues/1891) - Get array of items without using vector [\#1890](https://github.com/nlohmann/json/issues/1890) - Build errors \(clang 11.0.0\) on macOS 10.15.2 [\#1889](https://github.com/nlohmann/json/issues/1889) - Multiple arrays to vectors help [\#1888](https://github.com/nlohmann/json/issues/1888) - json::parse\(begin, end\) parse error on first character using uchar\* [\#1887](https://github.com/nlohmann/json/issues/1887) - issue in free\(\) [\#1886](https://github.com/nlohmann/json/issues/1886) - is\_number\_unsigned\(\) returns false for positive integers \(int or 0 or 1 literals\) [\#1885](https://github.com/nlohmann/json/issues/1885) - MSVC build failure with /Zc:\_\_cplusplus and C++17 [\#1883](https://github.com/nlohmann/json/issues/1883) - RFC 6901 op:replace & arrays [\#1882](https://github.com/nlohmann/json/issues/1882) - Problem with serialization of my custom template doubly-linked list [\#1881](https://github.com/nlohmann/json/issues/1881) - is\_array\(\) is True, but raise 'cannot use operator\[\] for object iterators' [\#1880](https://github.com/nlohmann/json/issues/1880) - Serialize dynamic array [\#1879](https://github.com/nlohmann/json/issues/1879) - Serialization of struct object. [\#1877](https://github.com/nlohmann/json/issues/1877) - warning:c4503 [\#1875](https://github.com/nlohmann/json/issues/1875) - Why are flattened empty objects/arrays not representable? [\#1874](https://github.com/nlohmann/json/issues/1874) - Container Overflow \(ASAN\) when using operator \>\> on an ifs [\#1873](https://github.com/nlohmann/json/issues/1873) - Sub-array to vector or map object? [\#1870](https://github.com/nlohmann/json/issues/1870) - WIP: QT \(cute\) type supports [\#1869](https://github.com/nlohmann/json/issues/1869) - Compiler flags to disable features and shrink code size [\#1868](https://github.com/nlohmann/json/issues/1868) - null strings [\#1867](https://github.com/nlohmann/json/issues/1867) - Struct with array of struct and \_\_attribute\_\_\(\(packed\)\) [\#1866](https://github.com/nlohmann/json/issues/1866) - Best way to extract numbers in the string? [\#1865](https://github.com/nlohmann/json/issues/1865) - Displaying \\?\Volume{guid} from string to json giving error [\#1864](https://github.com/nlohmann/json/issues/1864) - not working when compiling as x86 [\#1863](https://github.com/nlohmann/json/issues/1863) - Skipping evaluation of log line expressions with a macro, is it possible? [\#1862](https://github.com/nlohmann/json/issues/1862) - Suppress warnings [\#1861](https://github.com/nlohmann/json/issues/1861) - conflit with g++ compile option -mwindows [\#1860](https://github.com/nlohmann/json/issues/1860) - How to serialize nested classes to semi-flat JSON object? [\#1859](https://github.com/nlohmann/json/issues/1859) - Memory Requirement for large json file [\#1858](https://github.com/nlohmann/json/issues/1858) - Query a binary format \(BSON, CBOR, MessagePack, UBJSON\) [\#1856](https://github.com/nlohmann/json/issues/1856) - Documentation on operator\[\] behavior with missing keys [\#1855](https://github.com/nlohmann/json/issues/1855) - Problem in converting string into JSON; Can't parse successfully. [\#1854](https://github.com/nlohmann/json/issues/1854) - json.at\_or\_default\(key, defaultval\) [\#1852](https://github.com/nlohmann/json/issues/1852) - please improve the enum conversion documentation \(my example gist provided\) [\#1851](https://github.com/nlohmann/json/issues/1851) - Default value returned on ValueType nlohmann::basic\_json::value \(const typename object\_t::key\_type& key, const ValueType& default\_value\) [\#1850](https://github.com/nlohmann/json/issues/1850) - Accounting for arbitrary precision numerical literals [\#1849](https://github.com/nlohmann/json/issues/1849) - While trying to make a simple array, I get a nested array instead [\#1848](https://github.com/nlohmann/json/issues/1848) - How to reuse the parser and serializer intermediate storage? [\#1847](https://github.com/nlohmann/json/issues/1847) - Too much content in json.hpp leads to slow compilation [\#1845](https://github.com/nlohmann/json/issues/1845) - Cannot read some data in json file [\#1843](https://github.com/nlohmann/json/issues/1843) - Precompiled JSON library? [\#1842](https://github.com/nlohmann/json/issues/1842) - Please change assert into throw\(maybe\) in line 17946 [\#1841](https://github.com/nlohmann/json/issues/1841) - JSON for modern C++ ECCN information [\#1840](https://github.com/nlohmann/json/issues/1840) - CI: reduce build time for Travis valgrind [\#1836](https://github.com/nlohmann/json/issues/1836) - How do I traverse a json object and add new elements into the hierarchy [\#1834](https://github.com/nlohmann/json/issues/1834) - Invalid UTF-8 byte at index 1: 0x65 [\#1831](https://github.com/nlohmann/json/issues/1831) - Serialize big data in json [\#1828](https://github.com/nlohmann/json/issues/1828) - Backslash '\' in value causes exception [\#1827](https://github.com/nlohmann/json/issues/1827) - from\_json for non default constructible class with dependency injection [\#1819](https://github.com/nlohmann/json/issues/1819) - Semi-frequent timeouts in `test-unicode_all` with 3.6.1 \(aarch64\) [\#1816](https://github.com/nlohmann/json/issues/1816) - input\_adapter not user extensible [\#1813](https://github.com/nlohmann/json/issues/1813) - crash at json::destroy on android [\#1812](https://github.com/nlohmann/json/issues/1812) - Logs are repeating while cmake [\#1809](https://github.com/nlohmann/json/issues/1809) - Add a the possibility to add dynamic json objects [\#1795](https://github.com/nlohmann/json/issues/1795) - Unnecessary test data file in the release [\#1790](https://github.com/nlohmann/json/issues/1790) - Add support for parse stack limiting [\#1788](https://github.com/nlohmann/json/issues/1788) - GCC -Wuseless-cast warnings [\#1777](https://github.com/nlohmann/json/issues/1777) - compilation issue with NVCC 9.0 [\#1773](https://github.com/nlohmann/json/issues/1773) - Unexpected behavior with fifo\_map json when copy and append [\#1763](https://github.com/nlohmann/json/issues/1763) - Parse error [\#1761](https://github.com/nlohmann/json/issues/1761) - Assignment \(using value\(\)\) to nonexistent element behaves differently on Xcode 8 vs Xcode 10 [\#1758](https://github.com/nlohmann/json/issues/1758) - Readme out of date [\#1756](https://github.com/nlohmann/json/issues/1756) - cmake\_\* tests don't use the build system's compiler [\#1747](https://github.com/nlohmann/json/issues/1747) - Static assertions for template type properties required [\#1729](https://github.com/nlohmann/json/issues/1729) - Use float and possibly half in json::to\_cbor [\#1719](https://github.com/nlohmann/json/issues/1719) - json::from\_cbor does not respect allow\_exceptions = false when input is string literal [\#1715](https://github.com/nlohmann/json/issues/1715) - /Zc:\_\_cplusplus leads to C2416 [\#1695](https://github.com/nlohmann/json/issues/1695) - `unflatten` vs objects with number-ish keys [\#1575](https://github.com/nlohmann/json/issues/1575) - A "thinner" source code tar as part of release? [\#1572](https://github.com/nlohmann/json/issues/1572) - Repository is almost 450MB [\#1497](https://github.com/nlohmann/json/issues/1497) - Substantial performance penalty caused by polymorphic input adapter [\#1457](https://github.com/nlohmann/json/issues/1457) - Move tests to a separate repo [\#1235](https://github.com/nlohmann/json/issues/1235) - reduce repos size [\#1185](https://github.com/nlohmann/json/issues/1185) - CMakeLists.txt in release zips? [\#1184](https://github.com/nlohmann/json/issues/1184) - Minimal branch? [\#1066](https://github.com/nlohmann/json/issues/1066) - Move test blobs to a submodule? [\#732](https://github.com/nlohmann/json/issues/732) - \[Question\] When using this as git submodule, will it clone the whole thing include test data and benchmark? [\#620](https://github.com/nlohmann/json/issues/620) - Need to improve ignores.. [\#567](https://github.com/nlohmann/json/issues/567) - Minimal repository \(current size very large\) [\#556](https://github.com/nlohmann/json/issues/556) - For a header-only library you have to clone 214MB [\#482](https://github.com/nlohmann/json/issues/482) - 17 MB / 90 MB repo size!? [\#96](https://github.com/nlohmann/json/issues/96) - Improve parse\_ubjson\_fuzzer [\#2182](https://github.com/nlohmann/json/pull/2182) ([tanuj208](https://github.com/tanuj208)) - Add input adapter tests [\#2178](https://github.com/nlohmann/json/pull/2178) ([nlohmann](https://github.com/nlohmann)) - Fix warnings [\#2174](https://github.com/nlohmann/json/pull/2174) ([nlohmann](https://github.com/nlohmann)) - Fix PR\#1006 [\#2158](https://github.com/nlohmann/json/pull/2158) ([dota17](https://github.com/dota17)) - Fix issue\#1972 [\#2153](https://github.com/nlohmann/json/pull/2153) ([dota17](https://github.com/dota17)) - Update URLs to HTTPS [\#2152](https://github.com/nlohmann/json/pull/2152) ([TotalCaesar659](https://github.com/TotalCaesar659)) - Fix Issue\#1813: user defined input adapters [\#2145](https://github.com/nlohmann/json/pull/2145) ([FrancoisChabot](https://github.com/FrancoisChabot)) - Fix issue\#1939: Cast character to unsigned for comparison [\#2144](https://github.com/nlohmann/json/pull/2144) ([XyFreak](https://github.com/XyFreak)) - Fix issue\#2142: readme: fix typo in CMake FetchContent example [\#2143](https://github.com/nlohmann/json/pull/2143) ([quentin-dev](https://github.com/quentin-dev)) - Respect allow\_exceptions=false for binary formats [\#2140](https://github.com/nlohmann/json/pull/2140) ([nlohmann](https://github.com/nlohmann)) - Fix issue 2112 [\#2137](https://github.com/nlohmann/json/pull/2137) ([dota17](https://github.com/dota17)) - Add bleeding edge GCC to CI [\#2136](https://github.com/nlohmann/json/pull/2136) ([aokellermann](https://github.com/aokellermann)) - Clean up implementation of binary type [\#2125](https://github.com/nlohmann/json/pull/2125) ([nlohmann](https://github.com/nlohmann)) - Fixed a compilation error in MSVC [\#2121](https://github.com/nlohmann/json/pull/2121) ([gistrec](https://github.com/gistrec)) - Overwork CI [\#2119](https://github.com/nlohmann/json/pull/2119) ([nlohmann](https://github.com/nlohmann)) - Fix warnings from Clang 10 and GCC 9 [\#2116](https://github.com/nlohmann/json/pull/2116) ([nlohmann](https://github.com/nlohmann)) - Do not include \ when using C++17 [\#2115](https://github.com/nlohmann/json/pull/2115) ([nlohmann](https://github.com/nlohmann)) - Fix issue\#2086: disallow json::value\_t type parameter in value\(\) [\#2104](https://github.com/nlohmann/json/pull/2104) ([dota17](https://github.com/dota17)) - Fix Coveralls integration [\#2100](https://github.com/nlohmann/json/pull/2100) ([nlohmann](https://github.com/nlohmann)) - Add tests for binary values [\#2099](https://github.com/nlohmann/json/pull/2099) ([nlohmann](https://github.com/nlohmann)) - Use external test data [\#2081](https://github.com/nlohmann/json/pull/2081) ([nlohmann](https://github.com/nlohmann)) - Remove Doozer CI [\#2080](https://github.com/nlohmann/json/pull/2080) ([nlohmann](https://github.com/nlohmann)) - Fix README.md. Missing ``` [\#2077](https://github.com/nlohmann/json/pull/2077) ([ArthurSonzogni](https://github.com/ArthurSonzogni)) - Fix error message about invalid surrogate pairs [\#2076](https://github.com/nlohmann/json/pull/2076) ([rmisev](https://github.com/rmisev)) - Add CMake fetchcontent documentation and tests [\#2074](https://github.com/nlohmann/json/pull/2074) ([ArthurSonzogni](https://github.com/ArthurSonzogni)) - Properly pass serialize\_binary to dump function [\#2071](https://github.com/nlohmann/json/pull/2071) ([nlohmann](https://github.com/nlohmann)) - Fix returning reference to local temporary object [\#2069](https://github.com/nlohmann/json/pull/2069) ([nlohmann](https://github.com/nlohmann)) - updated wandbox link [\#2060](https://github.com/nlohmann/json/pull/2060) ([alexandermyasnikov](https://github.com/alexandermyasnikov)) - Fix bug in diff function [\#2054](https://github.com/nlohmann/json/pull/2054) ([nlohmann](https://github.com/nlohmann)) - Fix GCC compiler warnings [\#2053](https://github.com/nlohmann/json/pull/2053) ([nlohmann](https://github.com/nlohmann)) - Fix Clang compiler warnings [\#2051](https://github.com/nlohmann/json/pull/2051) ([nlohmann](https://github.com/nlohmann)) - Update doctest to 2.3.7 [\#2050](https://github.com/nlohmann/json/pull/2050) ([nlohmann](https://github.com/nlohmann)) - Fix issue\#1719 [\#2044](https://github.com/nlohmann/json/pull/2044) ([dota17](https://github.com/dota17)) - Add missing testcase about NaN in unit-constructor1.cpp [\#2043](https://github.com/nlohmann/json/pull/2043) ([dota17](https://github.com/dota17)) - Templatize basic\_json constructor from json\_ref [\#2034](https://github.com/nlohmann/json/pull/2034) ([ArtemSarmini](https://github.com/ArtemSarmini)) - Replace deprecated std::is\_pod [\#2033](https://github.com/nlohmann/json/pull/2033) ([nlohmann](https://github.com/nlohmann)) - Fixes \#1971 \(memory leak in basic\_json::push\_back\) [\#2025](https://github.com/nlohmann/json/pull/2025) ([ArtemSarmini](https://github.com/ArtemSarmini)) - fix \#1982:json\_pointer.contains\(\) exception is incorrectly raised [\#2019](https://github.com/nlohmann/json/pull/2019) ([dota17](https://github.com/dota17)) - Update LICENSE.MIT [\#2010](https://github.com/nlohmann/json/pull/2010) ([magamig](https://github.com/magamig)) - PR for \#2006 to test in AppVeyor. [\#2008](https://github.com/nlohmann/json/pull/2008) ([garethsb](https://github.com/garethsb)) - Added wsjcpp.yml [\#2004](https://github.com/nlohmann/json/pull/2004) ([sea-kg](https://github.com/sea-kg)) - fix error 'setw' is not a member of 'std' in Wandbox example [\#2002](https://github.com/nlohmann/json/pull/2002) ([alexandermyasnikov](https://github.com/alexandermyasnikov)) - catch exceptions for json\_pointer : ..../+99 [\#1990](https://github.com/nlohmann/json/pull/1990) ([dota17](https://github.com/dota17)) - Modify the document about operator== [\#1984](https://github.com/nlohmann/json/pull/1984) ([dota17](https://github.com/dota17)) - Rename argument array\_index to array\_indx in json\_pointer methods [\#1980](https://github.com/nlohmann/json/pull/1980) ([linev](https://github.com/linev)) - README: Fix string representation of `dump`ed `json` [\#1979](https://github.com/nlohmann/json/pull/1979) ([alexweej](https://github.com/alexweej)) - fix warnings in serializer.hpp for VS2019 [\#1969](https://github.com/nlohmann/json/pull/1969) ([dota17](https://github.com/dota17)) - Fix C26451 warnnings in to\_chars.hpp [\#1967](https://github.com/nlohmann/json/pull/1967) ([dota17](https://github.com/dota17)) - appveyor.yml: Compile and test with latest version for \_\_cplusplus ma… [\#1958](https://github.com/nlohmann/json/pull/1958) ([t-b](https://github.com/t-b)) - Fix typo in examples [\#1956](https://github.com/nlohmann/json/pull/1956) ([dota17](https://github.com/dota17)) - templated input adapters [\#1950](https://github.com/nlohmann/json/pull/1950) ([FrancoisChabot](https://github.com/FrancoisChabot)) - Update README.md : add a FAQ about memory release [\#1933](https://github.com/nlohmann/json/pull/1933) ([dota17](https://github.com/dota17)) - Some typos [\#1923](https://github.com/nlohmann/json/pull/1923) ([Coeur](https://github.com/Coeur)) - Fix link to parse function in README [\#1918](https://github.com/nlohmann/json/pull/1918) ([kastiglione](https://github.com/kastiglione)) - Readme: Updated links to hunter repo & docs [\#1917](https://github.com/nlohmann/json/pull/1917) ([jothepro](https://github.com/jothepro)) - Adds instruction for using Build2's package manager [\#1909](https://github.com/nlohmann/json/pull/1909) ([Klaim](https://github.com/Klaim)) - Update README.md [\#1907](https://github.com/nlohmann/json/pull/1907) ([pauljurczak](https://github.com/pauljurczak)) - Fix warning: ignoring return value [\#1871](https://github.com/nlohmann/json/pull/1871) ([sonulohani](https://github.com/sonulohani)) - docs: add central repository as conan source to readme [\#1857](https://github.com/nlohmann/json/pull/1857) ([gocarlos](https://github.com/gocarlos)) - README: Package in MSYS2 renamed to nlohmann-json [\#1853](https://github.com/nlohmann/json/pull/1853) ([podsvirov](https://github.com/podsvirov)) - Fix msvc warnings [\#1846](https://github.com/nlohmann/json/pull/1846) ([MBalszun](https://github.com/MBalszun)) - Update tests that generate CMake projects to use main project's C++ compiler [\#1844](https://github.com/nlohmann/json/pull/1844) ([Tridacnid](https://github.com/Tridacnid)) - make CMake's version config file architecture-independent [\#1746](https://github.com/nlohmann/json/pull/1746) ([uhoreg](https://github.com/uhoreg)) - Add binary type support to all binary file formats, as well as an internally represented binary type [\#1662](https://github.com/nlohmann/json/pull/1662) ([OmnipotentEntity](https://github.com/OmnipotentEntity)) ## [v3.7.3](https://github.com/nlohmann/json/releases/tag/v3.7.3) (2019-11-17) [Full Changelog](https://github.com/nlohmann/json/compare/v3.7.2...v3.7.3) - Project branches [\#1839](https://github.com/nlohmann/json/issues/1839) - Quadratic destruction complexity introduced in \#1436 [\#1837](https://github.com/nlohmann/json/issues/1837) - Trying to open a file [\#1814](https://github.com/nlohmann/json/issues/1814) - Comparing data type with value\_t::number\_integer fails [\#1783](https://github.com/nlohmann/json/issues/1783) - CMake version config file is architecture-dependent [\#1697](https://github.com/nlohmann/json/issues/1697) - Fix quadratic destruction complexity [\#1838](https://github.com/nlohmann/json/pull/1838) ([nickaein](https://github.com/nickaein)) ## [v3.7.2](https://github.com/nlohmann/json/releases/tag/v3.7.2) (2019-11-10) [Full Changelog](https://github.com/nlohmann/json/compare/v3.7.1...v3.7.2) - Segmentation fault in destructor in case of large inputs [\#1835](https://github.com/nlohmann/json/issues/1835) - type\_name\(\) is not consistent with type\(\) [\#1833](https://github.com/nlohmann/json/issues/1833) - json::parse is not a member [\#1832](https://github.com/nlohmann/json/issues/1832) - How do you deal with json\* ? [\#1829](https://github.com/nlohmann/json/issues/1829) - Combined find\_package/add\_subdirectory not linking libraries [\#1771](https://github.com/nlohmann/json/issues/1771) - example code for ifstream reading a json file results in no operator error [\#1766](https://github.com/nlohmann/json/issues/1766) - Warning: unsequenced modification and access to 'range' [\#1674](https://github.com/nlohmann/json/issues/1674) - Segmentation fault \(stack overflow\) due to unbounded recursion [\#1419](https://github.com/nlohmann/json/issues/1419) - Stack-overflow \(OSS-Fuzz 4234\) [\#832](https://github.com/nlohmann/json/issues/832) - Configure WhiteSource Bolt for GitHub [\#1830](https://github.com/nlohmann/json/pull/1830) ([mend-bolt-for-github[bot]](https://github.com/apps/mend-bolt-for-github)) - Prevent stackoverflow caused by recursive deconstruction [\#1436](https://github.com/nlohmann/json/pull/1436) ([nickaein](https://github.com/nickaein)) ## [v3.7.1](https://github.com/nlohmann/json/releases/tag/v3.7.1) (2019-11-06) [Full Changelog](https://github.com/nlohmann/json/compare/v3.7.0...v3.7.1) - std::is\_constructible is always true with tuple [\#1825](https://github.com/nlohmann/json/issues/1825) - Can't compile from\_json\(std::valarray\\). [\#1824](https://github.com/nlohmann/json/issues/1824) - json class should have a get\_or member function [\#1823](https://github.com/nlohmann/json/issues/1823) - NLOHMANN\_JSON\_SERIALIZE\_ENUM macro capture's json objects by value [\#1822](https://github.com/nlohmann/json/issues/1822) - Parse fails when number literals start with zero [\#1820](https://github.com/nlohmann/json/issues/1820) - Weird behaviour of `contains` with `json_pointer` [\#1815](https://github.com/nlohmann/json/issues/1815) - strange behaviour with json\_pointer and .contains\(\) [\#1811](https://github.com/nlohmann/json/issues/1811) - Can \#1695 be re-opened? [\#1808](https://github.com/nlohmann/json/issues/1808) - Merge two json objects [\#1807](https://github.com/nlohmann/json/issues/1807) - std::is\_constructible\\> when to\_json not defined [\#1805](https://github.com/nlohmann/json/issues/1805) - Private data on parsing [\#1802](https://github.com/nlohmann/json/issues/1802) - Capturing Line and Position when querying [\#1800](https://github.com/nlohmann/json/issues/1800) - json error on parsing DBL\_MAX from string [\#1796](https://github.com/nlohmann/json/issues/1796) - De/Serialisation of vector of tupple object with nested obect need Help please [\#1794](https://github.com/nlohmann/json/issues/1794) - Output json is corrupted [\#1793](https://github.com/nlohmann/json/issues/1793) - variable name byte sometimes used as a \#define [\#1792](https://github.com/nlohmann/json/issues/1792) - Can't read json file [\#1791](https://github.com/nlohmann/json/issues/1791) - Problems with special German letters [\#1789](https://github.com/nlohmann/json/issues/1789) - Support for trailing commas [\#1787](https://github.com/nlohmann/json/issues/1787) - json\_pointer construction bug [\#1786](https://github.com/nlohmann/json/issues/1786) - Visual Studio 2017 warning [\#1784](https://github.com/nlohmann/json/issues/1784) - ciso646 header become obsolete [\#1782](https://github.com/nlohmann/json/issues/1782) - Migrate LGTM.com installation from OAuth to GitHub App [\#1781](https://github.com/nlohmann/json/issues/1781) - JSON comparison, contains and operator& [\#1778](https://github.com/nlohmann/json/issues/1778) - pass a json object to a class contructor adds an array around the object [\#1776](https://github.com/nlohmann/json/issues/1776) - 'Float' number\_float\_function\_t template parameter name conflicts with C '\#define Float float' [\#1775](https://github.com/nlohmann/json/issues/1775) - A weird building problem :-\( [\#1774](https://github.com/nlohmann/json/issues/1774) - What is this json\_ref? [\#1772](https://github.com/nlohmann/json/issues/1772) - Interoperability with other languages [\#1770](https://github.com/nlohmann/json/issues/1770) - Json dump [\#1768](https://github.com/nlohmann/json/issues/1768) - json\_pointer\<\>::back\(\) should be const [\#1764](https://github.com/nlohmann/json/issues/1764) - How to get value from array [\#1762](https://github.com/nlohmann/json/issues/1762) - Merge two jsons [\#1757](https://github.com/nlohmann/json/issues/1757) - Unable to locate nlohmann\_jsonConfig.cmake [\#1755](https://github.com/nlohmann/json/issues/1755) - json.hpp won;t compile VS2019 CLR/CLI app but does in console app [\#1754](https://github.com/nlohmann/json/issues/1754) - \[Nested Json Objects\] Segmentation fault [\#1753](https://github.com/nlohmann/json/issues/1753) - remove/replace assert with exceptions [\#1752](https://github.com/nlohmann/json/issues/1752) - Add array support for update\(\) function [\#1751](https://github.com/nlohmann/json/issues/1751) - Is there a reason the `get_to` method is defined in `include/nlohmann/json.hpp` but not in `single_include/nlohmann/json.hpp`? [\#1750](https://github.com/nlohmann/json/issues/1750) - how to validate json object before calling dump\(\) [\#1748](https://github.com/nlohmann/json/issues/1748) - Unable to invoke accessors on json objects in lldb [\#1745](https://github.com/nlohmann/json/issues/1745) - Escaping string before parsing [\#1743](https://github.com/nlohmann/json/issues/1743) - Construction in a member initializer list using curly braces is set as 'array' [\#1742](https://github.com/nlohmann/json/issues/1742) - Read a subkey from json object [\#1740](https://github.com/nlohmann/json/issues/1740) - Serialize vector of glm:vec2 [\#1739](https://github.com/nlohmann/json/issues/1739) - Support nlohmann::basic\_json::value with JSON\_NOEXCEPTION [\#1738](https://github.com/nlohmann/json/issues/1738) - how to know the parse is error [\#1737](https://github.com/nlohmann/json/issues/1737) - How to check if a given key exists in a JSON object [\#1736](https://github.com/nlohmann/json/issues/1736) - Allow The Colon Key-Value Delimiter To Have A Space Before It \[@ READ ONLY\] [\#1735](https://github.com/nlohmann/json/issues/1735) - Allow Tail { "Key": "Value" } Comma \[@ READ ONLY\] [\#1734](https://github.com/nlohmann/json/issues/1734) - No-throw json::value\(\) [\#1733](https://github.com/nlohmann/json/issues/1733) - JsonObject.dump\(\) [\#1732](https://github.com/nlohmann/json/issues/1732) - basic\_json has no member "parse" [\#1731](https://github.com/nlohmann/json/issues/1731) - Exception "type must be string, but is array" [\#1730](https://github.com/nlohmann/json/issues/1730) - json::contains usage to find a path [\#1727](https://github.com/nlohmann/json/issues/1727) - How to create JSON Object from my Structures of Data and Json File from that Object [\#1726](https://github.com/nlohmann/json/issues/1726) - please provide an API to read JSON from file directly. [\#1725](https://github.com/nlohmann/json/issues/1725) - How to modify a value stored at a key? [\#1723](https://github.com/nlohmann/json/issues/1723) - CMake not correctly finding the configuration package for 3.7.0 [\#1721](https://github.com/nlohmann/json/issues/1721) - name typo in the "spack package management" section of README.md [\#1720](https://github.com/nlohmann/json/issues/1720) - How to add json to another json? [\#1718](https://github.com/nlohmann/json/issues/1718) - json::parse\(\) ubsan regression with v3.7.0 [\#1716](https://github.com/nlohmann/json/issues/1716) - What I am doing wrong?!? [\#1714](https://github.com/nlohmann/json/issues/1714) - Potential memory leak detected by Valgrind [\#1713](https://github.com/nlohmann/json/issues/1713) - json::parse is not thread safe? [\#1712](https://github.com/nlohmann/json/issues/1712) - static analysis alarm by cppcheck [\#1711](https://github.com/nlohmann/json/issues/1711) - The compilation time is slow [\#1710](https://github.com/nlohmann/json/issues/1710) - not linking properly with cmake [\#1709](https://github.com/nlohmann/json/issues/1709) - Error in dump\(\) with int64\_t minimum value [\#1708](https://github.com/nlohmann/json/issues/1708) - Crash on trying to deserialize json string on 3ds homebrew [\#1707](https://github.com/nlohmann/json/issues/1707) - Can't compile VS2019. 13 Errors [\#1706](https://github.com/nlohmann/json/issues/1706) - find an object that matches the search criteria [\#1705](https://github.com/nlohmann/json/issues/1705) - IntelliSense goes crazy on VS2019 [\#1704](https://github.com/nlohmann/json/issues/1704) - Installing on Ubuntu 16.04 [\#1703](https://github.com/nlohmann/json/issues/1703) - Where is json::parse now? [\#1702](https://github.com/nlohmann/json/issues/1702) - Forward header should't be amalgamated [\#1700](https://github.com/nlohmann/json/issues/1700) - Json support for Cmake version 2.8.12 [\#1699](https://github.com/nlohmann/json/issues/1699) - Intruisive scientific notation when using .dump\(\); [\#1698](https://github.com/nlohmann/json/issues/1698) - Is there support for automatic serialization/deserialization? [\#1696](https://github.com/nlohmann/json/issues/1696) - on MSVC dump\(\) will hard crash for larger json [\#1693](https://github.com/nlohmann/json/issues/1693) - puzzled implicit conversions [\#1692](https://github.com/nlohmann/json/issues/1692) - Information: My project uses this awesome library [\#1691](https://github.com/nlohmann/json/issues/1691) - Consider listing files explicitly instead of using GLOB [\#1686](https://github.com/nlohmann/json/issues/1686) - Failing tests on MSVC with VS2019 15.9.13 x64 [\#1685](https://github.com/nlohmann/json/issues/1685) - Change from v2 to v3. Encoding with cp1252 [\#1680](https://github.com/nlohmann/json/issues/1680) - How to add Fifo\_map into json using Cmake [\#1679](https://github.com/nlohmann/json/issues/1679) - include.zip should contain meson.build [\#1672](https://github.com/nlohmann/json/issues/1672) - \[Question\] How do I parse JSON into custom types? [\#1669](https://github.com/nlohmann/json/issues/1669) - Binary \(0x05\) data type for BSON to JSON conversion [\#1668](https://github.com/nlohmann/json/issues/1668) - Possible to call dump from lldb? [\#1666](https://github.com/nlohmann/json/issues/1666) - Segmentation fault when linked with libunwind [\#1665](https://github.com/nlohmann/json/issues/1665) - Should I include single-header after my to\_json and from\_json custom functions declaration? Why not? [\#1663](https://github.com/nlohmann/json/issues/1663) - Errors/Warnings in VS 2019 when Including Header File [\#1659](https://github.com/nlohmann/json/issues/1659) - Return null object from object's const operator\[\] as well. [\#1658](https://github.com/nlohmann/json/issues/1658) - Can't stream json object in to std::basic\_stringstream\ [\#1656](https://github.com/nlohmann/json/issues/1656) - C2440 in vs2015 cannot convert from 'initializer-list' to nlohmann::basic\_json [\#1655](https://github.com/nlohmann/json/issues/1655) - Issues around get and pointers [\#1653](https://github.com/nlohmann/json/issues/1653) - Non-member operator== breaks enum \(de\)serialization [\#1647](https://github.com/nlohmann/json/issues/1647) - Valgrind: bytes in 1 blocks are definitely lost [\#1646](https://github.com/nlohmann/json/issues/1646) - Convenient way to make 'basic\_json' accept 'QString' as an key type as well? [\#1640](https://github.com/nlohmann/json/issues/1640) - mongodb: nan, inf [\#1599](https://github.com/nlohmann/json/issues/1599) - Error in adl\_serializer [\#1590](https://github.com/nlohmann/json/issues/1590) - Injecting class during serialization [\#1584](https://github.com/nlohmann/json/issues/1584) - output\_adapter not user extensible [\#1534](https://github.com/nlohmann/json/issues/1534) - Inclusion of nlohmann/json.hpp causes OS/ABI to change on Linux [\#1410](https://github.com/nlohmann/json/issues/1410) - Add library versioning using inline namespaces [\#1394](https://github.com/nlohmann/json/issues/1394) - CBOR byte string support [\#1129](https://github.com/nlohmann/json/issues/1129) - How to deserialize array with derived objects [\#716](https://github.com/nlohmann/json/issues/716) - Add restriction for tuple specialization of to\_json [\#1826](https://github.com/nlohmann/json/pull/1826) ([cbegue](https://github.com/cbegue)) - Fix for \#1647 [\#1821](https://github.com/nlohmann/json/pull/1821) ([AnthonyVH](https://github.com/AnthonyVH)) - Fix issue \#1805 [\#1806](https://github.com/nlohmann/json/pull/1806) ([cbegue](https://github.com/cbegue)) - Fix some spelling errors - mostly in comments & documentation. [\#1803](https://github.com/nlohmann/json/pull/1803) ([flopp](https://github.com/flopp)) - Update Hedley to v11. [\#1799](https://github.com/nlohmann/json/pull/1799) ([nemequ](https://github.com/nemequ)) - iteration\_proxy: Fix integer truncation from std::size\_t to int [\#1797](https://github.com/nlohmann/json/pull/1797) ([t-b](https://github.com/t-b)) - appveyor.yml: Add MSVC 16 2019 support [\#1780](https://github.com/nlohmann/json/pull/1780) ([t-b](https://github.com/t-b)) - test/CMakeLists.txt: Use an explicit list instead of GLOB [\#1779](https://github.com/nlohmann/json/pull/1779) ([t-b](https://github.com/t-b)) - Make json\_pointer::back const \(resolves \#1764\) [\#1769](https://github.com/nlohmann/json/pull/1769) ([chris0x44](https://github.com/chris0x44)) - did you mean 'serialization'? [\#1767](https://github.com/nlohmann/json/pull/1767) ([0xflotus](https://github.com/0xflotus)) - Allow items\(\) to be used with custom string [\#1765](https://github.com/nlohmann/json/pull/1765) ([crazyjul](https://github.com/crazyjul)) - Cppcheck fixes [\#1760](https://github.com/nlohmann/json/pull/1760) ([Xav83](https://github.com/Xav83)) - Fix and add test's for SFINAE problem [\#1741](https://github.com/nlohmann/json/pull/1741) ([tete17](https://github.com/tete17)) - Fix clang sanitizer invocation [\#1728](https://github.com/nlohmann/json/pull/1728) ([t-b](https://github.com/t-b)) - Add gcc 9 and compile with experimental C++20 support [\#1724](https://github.com/nlohmann/json/pull/1724) ([t-b](https://github.com/t-b)) - Fix int64 min issue [\#1722](https://github.com/nlohmann/json/pull/1722) ([t-b](https://github.com/t-b)) - release: add singleinclude and meson.build to include.zip [\#1694](https://github.com/nlohmann/json/pull/1694) ([eli-schwartz](https://github.com/eli-schwartz)) ## [v3.7.0](https://github.com/nlohmann/json/releases/tag/v3.7.0) (2019-07-28) [Full Changelog](https://github.com/nlohmann/json/compare/v3.6.1...v3.7.0) - How can I retrieve uknown strings from json file in my C++ program. [\#1684](https://github.com/nlohmann/json/issues/1684) - contains\(\) is sometimes causing stack-based buffer overrun exceptions [\#1683](https://github.com/nlohmann/json/issues/1683) - How to deserialize arrays from json [\#1681](https://github.com/nlohmann/json/issues/1681) - Compilation failed in VS2015 [\#1678](https://github.com/nlohmann/json/issues/1678) - Why the compiled object file is so huge? [\#1677](https://github.com/nlohmann/json/issues/1677) - From Version 2.1.1 to 3.6.1 serialize std::set [\#1676](https://github.com/nlohmann/json/issues/1676) - Qt deprecation model halting compiltion [\#1675](https://github.com/nlohmann/json/issues/1675) - Build For Raspberry pi , Rapbery with new Compiler C++17 [\#1671](https://github.com/nlohmann/json/issues/1671) - Build from Raspberry pi [\#1667](https://github.com/nlohmann/json/issues/1667) - Can not translate map with integer key to dict string ? [\#1664](https://github.com/nlohmann/json/issues/1664) - Double type converts to scientific notation [\#1661](https://github.com/nlohmann/json/issues/1661) - Missing v3.6.1 tag on master branch [\#1657](https://github.com/nlohmann/json/issues/1657) - Support Fleese Binary Data Format [\#1654](https://github.com/nlohmann/json/issues/1654) - Suggestion: replace alternative tokens for !, && and || with their symbols [\#1652](https://github.com/nlohmann/json/issues/1652) - Build failure test-allocator.vcxproj [\#1651](https://github.com/nlohmann/json/issues/1651) - How to provide function json& to\_json\(\) which is similar as 'void to\_json\(json&j, const CObject& obj\)' ? [\#1650](https://github.com/nlohmann/json/issues/1650) - Can't throw exception when starting file is a number [\#1649](https://github.com/nlohmann/json/issues/1649) - to\_json / from\_json with nested type [\#1648](https://github.com/nlohmann/json/issues/1648) - How to create a json object from a std::string, created by j.dump? [\#1645](https://github.com/nlohmann/json/issues/1645) - Problem getting vector \(array\) of strings [\#1644](https://github.com/nlohmann/json/issues/1644) - json.hpp compilation issue with other typedefs with same name [\#1642](https://github.com/nlohmann/json/issues/1642) - nlohmann::adl\_serializer\::to\_json no matching overloaded function found [\#1641](https://github.com/nlohmann/json/issues/1641) - overwrite adl\_serializer\ to change behaviour [\#1638](https://github.com/nlohmann/json/issues/1638) - json.SelectToken\("Manufacturers.Products.Price"\); [\#1637](https://github.com/nlohmann/json/issues/1637) - Add json type as value [\#1636](https://github.com/nlohmann/json/issues/1636) - Unit conversion test error: conversion from 'nlohmann::json' to non-scalar type 'std::string\_view' requested [\#1634](https://github.com/nlohmann/json/issues/1634) - nlohmann VS JsonCpp by C++17 [\#1633](https://github.com/nlohmann/json/issues/1633) - To integrate an inline helper function that return type name as string [\#1632](https://github.com/nlohmann/json/issues/1632) - Return JSON as reference [\#1631](https://github.com/nlohmann/json/issues/1631) - Updating from an older version causes problems with assing a json object to a struct [\#1630](https://github.com/nlohmann/json/issues/1630) - Can without default constructor function for user defined classes when only to\_json is needed? [\#1629](https://github.com/nlohmann/json/issues/1629) - Compilation fails with clang 6.x-8.x in C++14 mode [\#1628](https://github.com/nlohmann/json/issues/1628) - Treating floating point as string [\#1627](https://github.com/nlohmann/json/issues/1627) - error parsing character å [\#1626](https://github.com/nlohmann/json/issues/1626) - \[Help\] How to Improve Json Output Performance with Large Json Arrays [\#1624](https://github.com/nlohmann/json/issues/1624) - Suggested link changes for reporting new issues \[blob/develop/REAME.md and blob/develop/.github/CONTRIBUTING.md\] [\#1623](https://github.com/nlohmann/json/issues/1623) - Broken link to issue template in CONTRIBUTING.md [\#1622](https://github.com/nlohmann/json/issues/1622) - Missing word in README.md file [\#1621](https://github.com/nlohmann/json/issues/1621) - Package manager instructions in README for brew is incorrect [\#1620](https://github.com/nlohmann/json/issues/1620) - Building with Visual Studio 2019 [\#1619](https://github.com/nlohmann/json/issues/1619) - Precedence of to\_json and builtin harmful [\#1617](https://github.com/nlohmann/json/issues/1617) - The type json is missing from the html documentation [\#1616](https://github.com/nlohmann/json/issues/1616) - variant is not support in Release 3.6.1? [\#1615](https://github.com/nlohmann/json/issues/1615) - Replace assert with throw for const operator\[\] [\#1614](https://github.com/nlohmann/json/issues/1614) - Memory Overhead is Too High \(10x or more\) [\#1613](https://github.com/nlohmann/json/issues/1613) - program crash everytime, when other data type incomming in json stream as expected [\#1612](https://github.com/nlohmann/json/issues/1612) - Improved Enum Support [\#1611](https://github.com/nlohmann/json/issues/1611) - is it possible convert json object back to stl container ? [\#1610](https://github.com/nlohmann/json/issues/1610) - Add C++17-like emplace.back\(\) for arrays. [\#1609](https://github.com/nlohmann/json/issues/1609) - is\_nothrow\_copy\_constructible fails for json::const\_iterator on MSVC2015 x86 Debug build [\#1608](https://github.com/nlohmann/json/issues/1608) - Reading and writing array elements [\#1607](https://github.com/nlohmann/json/issues/1607) - Converting json::value to int [\#1605](https://github.com/nlohmann/json/issues/1605) - I have a vector of keys and and a string of value and i want to create nested json array [\#1604](https://github.com/nlohmann/json/issues/1604) - In compatible JSON object from nlohmann::json to nohman::json - unexpected end of input; expected '\[', '{', or a literal [\#1603](https://github.com/nlohmann/json/issues/1603) - json parser crash if having a large number integer in message [\#1602](https://github.com/nlohmann/json/issues/1602) - Value method with undocumented throwing 302 exception [\#1601](https://github.com/nlohmann/json/issues/1601) - Accessing value with json pointer adds key if not existing [\#1600](https://github.com/nlohmann/json/issues/1600) - README.md broken link to project documentation [\#1597](https://github.com/nlohmann/json/issues/1597) - Random Kudos: Thanks for your work on this! [\#1596](https://github.com/nlohmann/json/issues/1596) - json::parse return value and errors [\#1595](https://github.com/nlohmann/json/issues/1595) - initializer list constructor makes curly brace initialization fragile [\#1594](https://github.com/nlohmann/json/issues/1594) - trying to log message for missing keyword, difference between \["foo"\] and at\("foo"\) [\#1593](https://github.com/nlohmann/json/issues/1593) - std::string and std::wstring `to_json` [\#1592](https://github.com/nlohmann/json/issues/1592) - I have a C structure which I need to convert to a JSON. How do I do it? Haven't found proper examples so far. [\#1591](https://github.com/nlohmann/json/issues/1591) - dump\_escaped possible error ? [\#1589](https://github.com/nlohmann/json/issues/1589) - json::parse\(\) into a vector\ results in unhandled exception [\#1587](https://github.com/nlohmann/json/issues/1587) - push\_back\(\)/emplace\_back\(\) on array invalidates pointers to existing array items [\#1586](https://github.com/nlohmann/json/issues/1586) - Getting nlohmann::detail::parse\_error on JSON generated by nlohmann::json not sure why [\#1583](https://github.com/nlohmann/json/issues/1583) - getting error terminate called after throwing an instance of 'std::domain\_error' what\(\): cannot use at\(\) with string [\#1582](https://github.com/nlohmann/json/issues/1582) - how i create json file [\#1581](https://github.com/nlohmann/json/issues/1581) - prevent rounding of double datatype values [\#1580](https://github.com/nlohmann/json/issues/1580) - Documentation Container Overview Doesn't Reference Const Methods [\#1579](https://github.com/nlohmann/json/issues/1579) - Writing an array into a nlohmann::json object [\#1578](https://github.com/nlohmann/json/issues/1578) - compilation error when using with another library [\#1577](https://github.com/nlohmann/json/issues/1577) - Homebrew on OSX doesn't install cmake config file [\#1576](https://github.com/nlohmann/json/issues/1576) - JSON Parse Out of Range Error [\#1574](https://github.com/nlohmann/json/issues/1574) - Integrating into existing CMake Project [\#1573](https://github.com/nlohmann/json/issues/1573) - conversion to std::string failed [\#1571](https://github.com/nlohmann/json/issues/1571) - jPtr operation does not throw [\#1569](https://github.com/nlohmann/json/issues/1569) - How to generate dll file for this project [\#1568](https://github.com/nlohmann/json/issues/1568) - how to pass variable data to json in c [\#1567](https://github.com/nlohmann/json/issues/1567) - I want to achieve an upgraded function. [\#1566](https://github.com/nlohmann/json/issues/1566) - How to determine the type of elements read from a JSON array? [\#1564](https://github.com/nlohmann/json/issues/1564) - try\_get\_to [\#1563](https://github.com/nlohmann/json/issues/1563) - example code compile error [\#1562](https://github.com/nlohmann/json/issues/1562) - How to iterate over nested json object [\#1561](https://github.com/nlohmann/json/issues/1561) - Build Option/Separate Function to Allow to Throw on Duplicate Keys [\#1560](https://github.com/nlohmann/json/issues/1560) - Compiler Switches -Weffc++ & -Wshadow are throwing errors [\#1558](https://github.com/nlohmann/json/issues/1558) - warning: use of the 'nodiscard' attribute is a C++17 extension [\#1557](https://github.com/nlohmann/json/issues/1557) - Import/Export compressed JSON files [\#1556](https://github.com/nlohmann/json/issues/1556) - GDB renderers for json library [\#1554](https://github.com/nlohmann/json/issues/1554) - Is it possible to construct a json string object from a binary buffer? [\#1553](https://github.com/nlohmann/json/issues/1553) - json objects in list [\#1552](https://github.com/nlohmann/json/issues/1552) - Matrix output [\#1550](https://github.com/nlohmann/json/issues/1550) - Using json merge\_patch on ordered non-alphanumeric datasets [\#1549](https://github.com/nlohmann/json/issues/1549) - Invalid parsed value for big integer [\#1548](https://github.com/nlohmann/json/issues/1548) - Integrating with android ndk issues. [\#1547](https://github.com/nlohmann/json/issues/1547) - add noexcept json::value\("key", default\) method variant? [\#1546](https://github.com/nlohmann/json/issues/1546) - Thank you! 🙌 [\#1545](https://github.com/nlohmann/json/issues/1545) - Output and input matrix [\#1544](https://github.com/nlohmann/json/issues/1544) - Add regression tests for MSVC [\#1543](https://github.com/nlohmann/json/issues/1543) - \[Help Needed!\] Season of Docs [\#1542](https://github.com/nlohmann/json/issues/1542) - program still abort\(\) or exit\(\) with try catch [\#1541](https://github.com/nlohmann/json/issues/1541) - Have a json::type\_error exception because of JSON object [\#1540](https://github.com/nlohmann/json/issues/1540) - Quoted numbers [\#1538](https://github.com/nlohmann/json/issues/1538) - Reading a JSON file into an object [\#1537](https://github.com/nlohmann/json/issues/1537) - Releases 3.6.0 and 3.6.1 don't build on conda / windows [\#1536](https://github.com/nlohmann/json/issues/1536) - \[Clang\] warning: use of the 'nodiscard' attribute is a C++17 extension \[-Wc++17-extensions\] [\#1535](https://github.com/nlohmann/json/issues/1535) - wchar\_t/std::wstring json can be created but not accessed [\#1533](https://github.com/nlohmann/json/issues/1533) - json stringify [\#1532](https://github.com/nlohmann/json/issues/1532) - How can I use it from gcc on RPI [\#1528](https://github.com/nlohmann/json/issues/1528) - std::pair treated as an array instead of key-value in `std::vector>` [\#1520](https://github.com/nlohmann/json/issues/1520) - Excessive Memory Usage for Large Json File [\#1516](https://github.com/nlohmann/json/issues/1516) - SAX dumper [\#1512](https://github.com/nlohmann/json/issues/1512) - Conversion to user type containing a std::vector not working with documented approach [\#1511](https://github.com/nlohmann/json/issues/1511) - Inconsistent use of type alias. [\#1507](https://github.com/nlohmann/json/issues/1507) - Is there a current way to represent strings as json int? [\#1503](https://github.com/nlohmann/json/issues/1503) - Intermittent issues with loadJSON [\#1484](https://github.com/nlohmann/json/issues/1484) - use json construct std::string [\#1462](https://github.com/nlohmann/json/issues/1462) - JSON Creation [\#1461](https://github.com/nlohmann/json/issues/1461) - Null bytes in files are treated like EOF [\#1095](https://github.com/nlohmann/json/issues/1095) - Feature: to\_string\(const json& j\); [\#916](https://github.com/nlohmann/json/issues/916) - Use GNUInstallDirs instead of hard-coded path. [\#1673](https://github.com/nlohmann/json/pull/1673) ([ghost](https://github.com/ghost)) - Package Manager: MSYS2 \(pacman\) [\#1670](https://github.com/nlohmann/json/pull/1670) ([podsvirov](https://github.com/podsvirov)) - Fix json.hpp compilation issue with other typedefs with same name \(Issue \#1642\) [\#1643](https://github.com/nlohmann/json/pull/1643) ([kevinlul](https://github.com/kevinlul)) - Add explicit conversion from json to std::string\_view in conversion unit test [\#1639](https://github.com/nlohmann/json/pull/1639) ([taylorhoward92](https://github.com/taylorhoward92)) - Minor fixes in docs [\#1625](https://github.com/nlohmann/json/pull/1625) ([nickaein](https://github.com/nickaein)) - Fix broken links to documentation [\#1598](https://github.com/nlohmann/json/pull/1598) ([nickaein](https://github.com/nickaein)) - Added to\_string and added basic tests [\#1585](https://github.com/nlohmann/json/pull/1585) ([Macr0Nerd](https://github.com/Macr0Nerd)) - Regression tests for MSVC [\#1570](https://github.com/nlohmann/json/pull/1570) ([nickaein](https://github.com/nickaein)) - Fix/1511 [\#1555](https://github.com/nlohmann/json/pull/1555) ([theodelrieu](https://github.com/theodelrieu)) - Remove C++17 extension warning from clang; \#1535 [\#1551](https://github.com/nlohmann/json/pull/1551) ([heavywatal](https://github.com/heavywatal)) - moved from Catch to doctest for unit tests [\#1439](https://github.com/nlohmann/json/pull/1439) ([onqtam](https://github.com/onqtam)) ## [v3.6.1](https://github.com/nlohmann/json/releases/tag/v3.6.1) (2019-03-20) [Full Changelog](https://github.com/nlohmann/json/compare/3.6.1...v3.6.1) ## [3.6.1](https://github.com/nlohmann/json/releases/tag/3.6.1) (2019-03-20) [Full Changelog](https://github.com/nlohmann/json/compare/v3.6.0...3.6.1) - Failed to build with \ [\#1531](https://github.com/nlohmann/json/issues/1531) - Compiling 3.6.0 with GCC \> 7, array vs std::array \#590 is back [\#1530](https://github.com/nlohmann/json/issues/1530) - 3.6.0: warning: missing initializer for member 'std::array\::\_M\_elems' \[-Wmissing-field-initializers\] [\#1527](https://github.com/nlohmann/json/issues/1527) - unable to parse json [\#1525](https://github.com/nlohmann/json/issues/1525) ## [v3.6.0](https://github.com/nlohmann/json/releases/tag/v3.6.0) (2019-03-19) [Full Changelog](https://github.com/nlohmann/json/compare/v3.5.0...v3.6.0) - How can I turn a string of a json array into a json array? [\#1526](https://github.com/nlohmann/json/issues/1526) - Minor: missing a std:: namespace tag [\#1521](https://github.com/nlohmann/json/issues/1521) - how to precision to four decimal for double when use to\_json [\#1519](https://github.com/nlohmann/json/issues/1519) - error parse [\#1518](https://github.com/nlohmann/json/issues/1518) - Compile error: template argument deduction/substitution failed [\#1515](https://github.com/nlohmann/json/issues/1515) - std::complex type [\#1510](https://github.com/nlohmann/json/issues/1510) - CBOR byte string support [\#1509](https://github.com/nlohmann/json/issues/1509) - Compilation error getting a std::pair\<\> on latest VS 2017 compiler [\#1506](https://github.com/nlohmann/json/issues/1506) - "Integration" section of documentation needs update? [\#1505](https://github.com/nlohmann/json/issues/1505) - Json object from string from a TCP socket [\#1504](https://github.com/nlohmann/json/issues/1504) - MSVC warning C4946 \("reinterpret\_cast used between related classes"\) compiling json.hpp [\#1502](https://github.com/nlohmann/json/issues/1502) - How to programmatically fill an n-th dimensional JSON object? [\#1501](https://github.com/nlohmann/json/issues/1501) - Error compiling with clang and `JSON_NOEXCEPTION`: need to include `cstdlib` [\#1500](https://github.com/nlohmann/json/issues/1500) - The code compiles unsuccessfully with android-ndk-r10e [\#1499](https://github.com/nlohmann/json/issues/1499) - Cmake 3.1 in develop, when is it likely to make it into a stable release? [\#1498](https://github.com/nlohmann/json/issues/1498) - Some Help please object inside array [\#1494](https://github.com/nlohmann/json/issues/1494) - How to get data into vector of user-defined type from a Json object [\#1493](https://github.com/nlohmann/json/issues/1493) - how to find subelement without loop [\#1490](https://github.com/nlohmann/json/issues/1490) - json to std::map [\#1487](https://github.com/nlohmann/json/issues/1487) - Type in README.md [\#1486](https://github.com/nlohmann/json/issues/1486) - Error in parsing and reading msgpack-lite [\#1485](https://github.com/nlohmann/json/issues/1485) - Compiling issues with libc 2.12 [\#1483](https://github.com/nlohmann/json/issues/1483) - How do I use reference or pointer binding values? [\#1482](https://github.com/nlohmann/json/issues/1482) - Compilation fails in MSVC with the Microsoft Language Extensions disabled [\#1481](https://github.com/nlohmann/json/issues/1481) - Functional visit [\#1480](https://github.com/nlohmann/json/issues/1480) - \[Question\] Unescaped dump [\#1479](https://github.com/nlohmann/json/issues/1479) - Some Help please [\#1478](https://github.com/nlohmann/json/issues/1478) - Global variables are stored within the JSON file, how do I declare them as global variables when I read them out in my C++ program? [\#1476](https://github.com/nlohmann/json/issues/1476) - Unable to modify one of the values within the JSON file, and save it [\#1475](https://github.com/nlohmann/json/issues/1475) - Documentation of parse function has two identical @pre causes [\#1473](https://github.com/nlohmann/json/issues/1473) - GCC 9.0 build failure [\#1472](https://github.com/nlohmann/json/issues/1472) - Can we have an `exists()` method? [\#1471](https://github.com/nlohmann/json/issues/1471) - How to parse multi object json from file? [\#1470](https://github.com/nlohmann/json/issues/1470) - How to returns the name of the upper object? [\#1467](https://github.com/nlohmann/json/issues/1467) - Error: "tuple\_size" has already been declared in the current scope [\#1466](https://github.com/nlohmann/json/issues/1466) - Checking keys of two jsons against eachother [\#1465](https://github.com/nlohmann/json/issues/1465) - Disable installation when used as meson subproject [\#1463](https://github.com/nlohmann/json/issues/1463) - Unpack list of integers to a std::vector\ [\#1460](https://github.com/nlohmann/json/issues/1460) - Implement DRY definition of JSON representation of a c++ class [\#1459](https://github.com/nlohmann/json/issues/1459) - json.exception.type\_error.305 with GCC 4.9 when using C++ {} initializer [\#1458](https://github.com/nlohmann/json/issues/1458) - API to convert an "uninitialized" json into an empty object or empty array [\#1456](https://github.com/nlohmann/json/issues/1456) - How to parse a vector of objects with const attributes [\#1453](https://github.com/nlohmann/json/issues/1453) - NLOHMANN\_JSON\_SERIALIZE\_ENUM potentially requires duplicate definitions [\#1450](https://github.com/nlohmann/json/issues/1450) - Question about making json object from file directory [\#1449](https://github.com/nlohmann/json/issues/1449) - .get\(\) throws error if used with userdefined structs in unordered\_map [\#1448](https://github.com/nlohmann/json/issues/1448) - Integer Overflow \(OSS-Fuzz 12506\) [\#1447](https://github.com/nlohmann/json/issues/1447) - If a string has too many invalid UTF-8 characters, json::dump attempts to index an array out of bounds. [\#1445](https://github.com/nlohmann/json/issues/1445) - Setting values of .JSON file [\#1444](https://github.com/nlohmann/json/issues/1444) - alias object\_t::key\_type in basic\_json [\#1442](https://github.com/nlohmann/json/issues/1442) - Latest Ubuntu package is 2.1.1 [\#1438](https://github.com/nlohmann/json/issues/1438) - lexer.hpp\(1363\) '\_snprintf': is not a member | Visualstudio 2017 [\#1437](https://github.com/nlohmann/json/issues/1437) - Static method invites inadvertent logic error. [\#1433](https://github.com/nlohmann/json/issues/1433) - EOS compilation produces "fatal error: 'nlohmann/json.hpp' file not found" [\#1432](https://github.com/nlohmann/json/issues/1432) - Support for bad commas [\#1429](https://github.com/nlohmann/json/issues/1429) - Please have one base exception class for all json exceptions [\#1427](https://github.com/nlohmann/json/issues/1427) - Compilation warning: 'tuple\_size' defined as a class template here but previously declared as a struct template [\#1426](https://github.com/nlohmann/json/issues/1426) - Which version can be used with GCC 4.8.2 ? [\#1424](https://github.com/nlohmann/json/issues/1424) - Ignore nullptr values on constructing json object from a container [\#1422](https://github.com/nlohmann/json/issues/1422) - Support for custom float precision via unquoted strings [\#1421](https://github.com/nlohmann/json/issues/1421) - It is possible to call `json::find` with a json\_pointer as argument. This causes runtime UB/crash. [\#1418](https://github.com/nlohmann/json/issues/1418) - Dump throwing exception [\#1416](https://github.com/nlohmann/json/issues/1416) - Build error [\#1415](https://github.com/nlohmann/json/issues/1415) - Append version to include.zip [\#1412](https://github.com/nlohmann/json/issues/1412) - error C2039: '\_snprintf': is not a member of 'std' - Windows [\#1408](https://github.com/nlohmann/json/issues/1408) - Deserializing to vector [\#1407](https://github.com/nlohmann/json/issues/1407) - Efficient way to set a `json` object as value into another `json` key [\#1406](https://github.com/nlohmann/json/issues/1406) - Document return value of parse\(\) when allow\_exceptions == false and parsing fails [\#1405](https://github.com/nlohmann/json/issues/1405) - Unexpected behaviour with structured binding [\#1404](https://github.com/nlohmann/json/issues/1404) - Which native types does get\\(\) allow? [\#1403](https://github.com/nlohmann/json/issues/1403) - Add something like Json::StaticString [\#1402](https://github.com/nlohmann/json/issues/1402) - -Wmismatched-tags in 3.5.0? [\#1401](https://github.com/nlohmann/json/issues/1401) - Coverity Scan reports an UNCAUGHT\_EXCEPT issue [\#1400](https://github.com/nlohmann/json/issues/1400) - fff [\#1399](https://github.com/nlohmann/json/issues/1399) - sorry this is not an issue, just a Question, How to change a key value in a file and save it ? [\#1398](https://github.com/nlohmann/json/issues/1398) - appveyor x64 builds appear to be using Win32 toolset [\#1374](https://github.com/nlohmann/json/issues/1374) - Serializing/Deserializing a Class containing a vector of itself [\#1373](https://github.com/nlohmann/json/issues/1373) - Retrieving array elements. [\#1369](https://github.com/nlohmann/json/issues/1369) - Deserialize [\#1366](https://github.com/nlohmann/json/issues/1366) - call of overloaded for push\_back and operator+= is ambiguous [\#1352](https://github.com/nlohmann/json/issues/1352) - got an error and cann't figure it out [\#1351](https://github.com/nlohmann/json/issues/1351) - Improve number-to-string conversion [\#1334](https://github.com/nlohmann/json/issues/1334) - Implicit type conversion error on MSVC [\#1333](https://github.com/nlohmann/json/issues/1333) - NuGet Package [\#1132](https://github.com/nlohmann/json/issues/1132) - Change macros to numeric\_limits [\#1514](https://github.com/nlohmann/json/pull/1514) ([naszta](https://github.com/naszta)) - fix GCC 7.1.1 - 7.2.1 on CentOS [\#1496](https://github.com/nlohmann/json/pull/1496) ([lieff](https://github.com/lieff)) - Update Buckaroo instructions in README.md [\#1495](https://github.com/nlohmann/json/pull/1495) ([njlr](https://github.com/njlr)) - Fix gcc9 build error test/src/unit-allocator.cpp \(Issue \#1472\) [\#1492](https://github.com/nlohmann/json/pull/1492) ([stac47](https://github.com/stac47)) - Fix typo in README.md [\#1491](https://github.com/nlohmann/json/pull/1491) ([nickaein](https://github.com/nickaein)) - Do proper endian conversions [\#1489](https://github.com/nlohmann/json/pull/1489) ([andreas-schwab](https://github.com/andreas-schwab)) - Fix documentation [\#1477](https://github.com/nlohmann/json/pull/1477) ([nickaein](https://github.com/nickaein)) - Implement contains\(\) member function [\#1474](https://github.com/nlohmann/json/pull/1474) ([nickaein](https://github.com/nickaein)) - Add operator/= and operator/ to construct a JSON pointer by appending two JSON pointers [\#1469](https://github.com/nlohmann/json/pull/1469) ([garethsb](https://github.com/garethsb)) - Disable Clang -Wmismatched-tags warning on tuple\_size / tuple\_element [\#1468](https://github.com/nlohmann/json/pull/1468) ([past-due](https://github.com/past-due)) - Disable installation when used as meson subproject. \#1463 [\#1464](https://github.com/nlohmann/json/pull/1464) ([elvisoric](https://github.com/elvisoric)) - docs: README typo [\#1455](https://github.com/nlohmann/json/pull/1455) ([wythe](https://github.com/wythe)) - remove extra semicolon from readme [\#1451](https://github.com/nlohmann/json/pull/1451) ([Afforix](https://github.com/Afforix)) - attempt to fix \#1445, flush buffer in serializer::dump\_escaped in UTF8\_REJECT case. [\#1446](https://github.com/nlohmann/json/pull/1446) ([scinart](https://github.com/scinart)) - Use C++11 features supported by CMake 3.1. [\#1441](https://github.com/nlohmann/json/pull/1441) ([iwanders](https://github.com/iwanders)) - :rotating\_light: fixed unused variable warning [\#1435](https://github.com/nlohmann/json/pull/1435) ([pboettch](https://github.com/pboettch)) - allow push\_back\(\) and pop\_back\(\) calls on json\_pointer [\#1434](https://github.com/nlohmann/json/pull/1434) ([pboettch](https://github.com/pboettch)) - Add instructions about using nlohmann/json with the conda package manager [\#1430](https://github.com/nlohmann/json/pull/1430) ([nicoddemus](https://github.com/nicoddemus)) - Updated year in README.md [\#1425](https://github.com/nlohmann/json/pull/1425) ([jef](https://github.com/jef)) - Fixed broken links in the README file [\#1423](https://github.com/nlohmann/json/pull/1423) ([skypjack](https://github.com/skypjack)) - Fixed broken links in the README file [\#1420](https://github.com/nlohmann/json/pull/1420) ([skypjack](https://github.com/skypjack)) - docs: typo in README [\#1417](https://github.com/nlohmann/json/pull/1417) ([wythe](https://github.com/wythe)) - Fix x64 target platform for appveyor [\#1414](https://github.com/nlohmann/json/pull/1414) ([nickaein](https://github.com/nickaein)) - Improve dump\_integer performance [\#1411](https://github.com/nlohmann/json/pull/1411) ([nickaein](https://github.com/nickaein)) - buildsystem: relax requirement on cmake version [\#1409](https://github.com/nlohmann/json/pull/1409) ([yann-morin-1998](https://github.com/yann-morin-1998)) - CMake: Optional Install if Embedded [\#1330](https://github.com/nlohmann/json/pull/1330) ([ax3l](https://github.com/ax3l)) ## [v3.5.0](https://github.com/nlohmann/json/releases/tag/v3.5.0) (2018-12-21) [Full Changelog](https://github.com/nlohmann/json/compare/v3.4.0...v3.5.0) - Copyconstructor inserts original into array with single element [\#1397](https://github.com/nlohmann/json/issues/1397) - Get value without explicit typecasting [\#1395](https://github.com/nlohmann/json/issues/1395) - Big file parsing [\#1393](https://github.com/nlohmann/json/issues/1393) - Adding Structured Binding Support [\#1388](https://github.com/nlohmann/json/issues/1388) - map\ exhibits unexpected behavior [\#1387](https://github.com/nlohmann/json/issues/1387) - Error Code Return [\#1386](https://github.com/nlohmann/json/issues/1386) - using unordered\_map as object type [\#1385](https://github.com/nlohmann/json/issues/1385) - float precision [\#1384](https://github.com/nlohmann/json/issues/1384) - \[json.exception.type\_error.316\] invalid UTF-8 byte at index 1: 0xC3 [\#1383](https://github.com/nlohmann/json/issues/1383) - Inconsistent Constructor \(GCC vs. Clang\) [\#1381](https://github.com/nlohmann/json/issues/1381) - \#define or || [\#1379](https://github.com/nlohmann/json/issues/1379) - How to iterate inside the values ? [\#1377](https://github.com/nlohmann/json/issues/1377) - items\(\) unable to get the elements [\#1375](https://github.com/nlohmann/json/issues/1375) - conversion json to std::map doesn't work for types \ [\#1372](https://github.com/nlohmann/json/issues/1372) - A minor issue in the build instructions [\#1371](https://github.com/nlohmann/json/issues/1371) - Using this library without stream ? [\#1370](https://github.com/nlohmann/json/issues/1370) - Writing and reading BSON data [\#1368](https://github.com/nlohmann/json/issues/1368) - Retrieving array elements from object type iterator. [\#1367](https://github.com/nlohmann/json/issues/1367) - json::dump\(\) silently crashes if items contain accented letters [\#1365](https://github.com/nlohmann/json/issues/1365) - warnings in MSVC \(2015\) in 3.4.0 related to bool... [\#1364](https://github.com/nlohmann/json/issues/1364) - Cant compile with -C++17 and beyond compiler options [\#1362](https://github.com/nlohmann/json/issues/1362) - json to concrete type conversion through reference or pointer fails [\#1361](https://github.com/nlohmann/json/issues/1361) - the first attributes of JSON string is misplaced [\#1360](https://github.com/nlohmann/json/issues/1360) - Copy-construct using initializer-list converts objects to arrays [\#1359](https://github.com/nlohmann/json/issues/1359) - About value\(key, default\_value\) and operator\[\]\(key\) [\#1358](https://github.com/nlohmann/json/issues/1358) - Problem with printing json response object [\#1356](https://github.com/nlohmann/json/issues/1356) - Serializing pointer segfaults [\#1355](https://github.com/nlohmann/json/issues/1355) - Read `long long int` data as a number. [\#1354](https://github.com/nlohmann/json/issues/1354) - eclipse oxygen in ubuntu get\ is ambiguous [\#1353](https://github.com/nlohmann/json/issues/1353) - Can't build on Visual Studio 2017 v15.8.9 [\#1350](https://github.com/nlohmann/json/issues/1350) - cannot parse from string? [\#1349](https://github.com/nlohmann/json/issues/1349) - Error: out\_of\_range [\#1348](https://github.com/nlohmann/json/issues/1348) - expansion pattern 'CompatibleObjectType' contains no argument packs, with CUDA 10 [\#1347](https://github.com/nlohmann/json/issues/1347) - Unable to update a value for a nested\(multi-level\) json file [\#1344](https://github.com/nlohmann/json/issues/1344) - Fails to compile when std::iterator\_traits is not SFINAE friendly. [\#1341](https://github.com/nlohmann/json/issues/1341) - EOF flag not set on exhausted input streams. [\#1340](https://github.com/nlohmann/json/issues/1340) - Shadowed Member in merge\_patch [\#1339](https://github.com/nlohmann/json/issues/1339) - Periods/literal dots in keys? [\#1338](https://github.com/nlohmann/json/issues/1338) - Protect macro expansion of commonly defined macros [\#1337](https://github.com/nlohmann/json/issues/1337) - How to validate an input before parsing? [\#1336](https://github.com/nlohmann/json/issues/1336) - Non-verifying dump\(\) alternative for debugging/logging needed [\#1335](https://github.com/nlohmann/json/issues/1335) - Json Libarary is not responding for me in c++ [\#1332](https://github.com/nlohmann/json/issues/1332) - Question - how to find an object in an array [\#1331](https://github.com/nlohmann/json/issues/1331) - Nesting additional data in json object [\#1328](https://github.com/nlohmann/json/issues/1328) - can to\_json\(\) be defined inside a class? [\#1324](https://github.com/nlohmann/json/issues/1324) - CodeBlocks IDE can't find `json.hpp` header [\#1318](https://github.com/nlohmann/json/issues/1318) - Change json\_pointer to provide an iterator begin/end/etc, don't use vectors, and also enable string\_view [\#1312](https://github.com/nlohmann/json/issues/1312) - Xcode - adding it to library [\#1300](https://github.com/nlohmann/json/issues/1300) - unicode: accept char16\_t, char32\_t sequences [\#1298](https://github.com/nlohmann/json/issues/1298) - unicode: char16\_t\* is compiler error, but char16\_t\[\] is accepted [\#1297](https://github.com/nlohmann/json/issues/1297) - Dockerfile Project Help Needed [\#1296](https://github.com/nlohmann/json/issues/1296) - Comparisons between large unsigned and negative signed integers [\#1295](https://github.com/nlohmann/json/issues/1295) - CMake alias to `nlohmann::json` [\#1291](https://github.com/nlohmann/json/issues/1291) - Release zips without tests [\#1285](https://github.com/nlohmann/json/issues/1285) - separate object\_t::key\_type from basic\_json::key\_type, and use an allocator which returns object\_t::key\_type [\#1274](https://github.com/nlohmann/json/issues/1274) - Is there a nice way to associate external values with json elements? [\#1256](https://github.com/nlohmann/json/issues/1256) - Delete by json\_pointer [\#1248](https://github.com/nlohmann/json/issues/1248) - Expose lexer, as a StAX parser [\#1219](https://github.com/nlohmann/json/issues/1219) - Subclassing json\(\) & error on recursive load [\#1201](https://github.com/nlohmann/json/issues/1201) - Check value for existence by json\_pointer [\#1194](https://github.com/nlohmann/json/issues/1194) - Feature/add file input adapter [\#1392](https://github.com/nlohmann/json/pull/1392) ([dumarjo](https://github.com/dumarjo)) - Added Support for Structured Bindings [\#1391](https://github.com/nlohmann/json/pull/1391) ([pratikpc](https://github.com/pratikpc)) - Link to issue \#958 broken [\#1382](https://github.com/nlohmann/json/pull/1382) ([kjpus](https://github.com/kjpus)) - readme: fix typo [\#1380](https://github.com/nlohmann/json/pull/1380) ([manu-chroma](https://github.com/manu-chroma)) - recommend using explicit from JSON conversions [\#1363](https://github.com/nlohmann/json/pull/1363) ([theodelrieu](https://github.com/theodelrieu)) - Fix merge\_patch shadow warning [\#1346](https://github.com/nlohmann/json/pull/1346) ([ax3l](https://github.com/ax3l)) - Allow installation via Meson [\#1345](https://github.com/nlohmann/json/pull/1345) ([mpoquet](https://github.com/mpoquet)) - Set eofbit on exhausted input stream. [\#1343](https://github.com/nlohmann/json/pull/1343) ([mefyl](https://github.com/mefyl)) - Add a SFINAE friendly iterator\_traits and use that instead. [\#1342](https://github.com/nlohmann/json/pull/1342) ([dgavedissian](https://github.com/dgavedissian)) - Fix EOL Whitespaces & CMake Spelling [\#1329](https://github.com/nlohmann/json/pull/1329) ([ax3l](https://github.com/ax3l)) ## [v3.4.0](https://github.com/nlohmann/json/releases/tag/v3.4.0) (2018-10-30) [Full Changelog](https://github.com/nlohmann/json/compare/v3.3.0...v3.4.0) - Big uint64\_t values are serialized wrong [\#1327](https://github.com/nlohmann/json/issues/1327) - \[Question\] Efficient check for equivalency? [\#1325](https://github.com/nlohmann/json/issues/1325) - Can't use ifstream and .clear\(\) [\#1321](https://github.com/nlohmann/json/issues/1321) - \[Warning\] -Wparentheses on line 555 on single\_include [\#1319](https://github.com/nlohmann/json/issues/1319) - Compilation error using at and find with enum struct [\#1316](https://github.com/nlohmann/json/issues/1316) - Parsing JSON from a web address [\#1311](https://github.com/nlohmann/json/issues/1311) - How to convert JSON to Struct with embeded subject [\#1310](https://github.com/nlohmann/json/issues/1310) - Null safety/coalescing function? [\#1309](https://github.com/nlohmann/json/issues/1309) - Building fails using single include file: json.hpp [\#1308](https://github.com/nlohmann/json/issues/1308) - json::parse\(std::string\) Exception inside packaged Lib [\#1306](https://github.com/nlohmann/json/issues/1306) - Problem in Dockerfile with installation of library [\#1304](https://github.com/nlohmann/json/issues/1304) - compile error in from\_json converting to container with std::pair [\#1299](https://github.com/nlohmann/json/issues/1299) - Json that I am trying to parse, and I am lost Structure Array below top level [\#1293](https://github.com/nlohmann/json/issues/1293) - Serializing std::variant causes stack overflow [\#1292](https://github.com/nlohmann/json/issues/1292) - How do I go about customising from\_json to support \_\_int128\_t/\_\_uint128\_t? [\#1290](https://github.com/nlohmann/json/issues/1290) - merge\_patch: inconsistent behaviour merging empty sub-object [\#1289](https://github.com/nlohmann/json/issues/1289) - Buffer over/underrun using UBJson? [\#1288](https://github.com/nlohmann/json/issues/1288) - Enable the latest C++ standard with Visual Studio [\#1287](https://github.com/nlohmann/json/issues/1287) - truncation of constant value in to\_cbor\(\) [\#1286](https://github.com/nlohmann/json/issues/1286) - eosio.wasmsdk error [\#1284](https://github.com/nlohmann/json/issues/1284) - use the same interface for writing arrays and non-arrays [\#1283](https://github.com/nlohmann/json/issues/1283) - How to read json file with optional entries and entries with different types [\#1281](https://github.com/nlohmann/json/issues/1281) - merge result not as espected [\#1279](https://github.com/nlohmann/json/issues/1279) - how to get only "name" from below json [\#1278](https://github.com/nlohmann/json/issues/1278) - syntax error on right json string [\#1276](https://github.com/nlohmann/json/issues/1276) - Parsing JSON Array where members have no key, using custom types [\#1267](https://github.com/nlohmann/json/issues/1267) - I get a json exception periodically from json::parse for the same json [\#1263](https://github.com/nlohmann/json/issues/1263) - GCC 8.2.1. Compilation error: invalid conversion from... [\#1246](https://github.com/nlohmann/json/issues/1246) - BSON support [\#1244](https://github.com/nlohmann/json/issues/1244) - enum to json mapping [\#1208](https://github.com/nlohmann/json/issues/1208) - Soften the landing when dumping non-UTF8 strings \(type\_error.316 exception\) [\#1198](https://github.com/nlohmann/json/issues/1198) - Add macro to define enum/JSON mapping [\#1323](https://github.com/nlohmann/json/pull/1323) ([nlohmann](https://github.com/nlohmann)) - Add BSON support [\#1320](https://github.com/nlohmann/json/pull/1320) ([nlohmann](https://github.com/nlohmann)) - Properly convert constants to CharType [\#1315](https://github.com/nlohmann/json/pull/1315) ([nlohmann](https://github.com/nlohmann)) - Allow to set error handler for decoding errors [\#1314](https://github.com/nlohmann/json/pull/1314) ([nlohmann](https://github.com/nlohmann)) - Add Meson related info to README [\#1305](https://github.com/nlohmann/json/pull/1305) ([koponomarenko](https://github.com/koponomarenko)) - Improve diagnostic messages for binary formats [\#1303](https://github.com/nlohmann/json/pull/1303) ([nlohmann](https://github.com/nlohmann)) - add new is\_constructible\_\* traits used in from\_json [\#1301](https://github.com/nlohmann/json/pull/1301) ([theodelrieu](https://github.com/theodelrieu)) - add constraints for variadic json\_ref constructors [\#1294](https://github.com/nlohmann/json/pull/1294) ([theodelrieu](https://github.com/theodelrieu)) - Improve diagnostic messages [\#1282](https://github.com/nlohmann/json/pull/1282) ([nlohmann](https://github.com/nlohmann)) - Removed linter warnings [\#1280](https://github.com/nlohmann/json/pull/1280) ([nlohmann](https://github.com/nlohmann)) - Thirdparty benchmark: Fix Clang detection. [\#1277](https://github.com/nlohmann/json/pull/1277) ([Lord-Kamina](https://github.com/Lord-Kamina)) ## [v3.3.0](https://github.com/nlohmann/json/releases/tag/v3.3.0) (2018-10-05) [Full Changelog](https://github.com/nlohmann/json/compare/3.3.0...v3.3.0) ## [3.3.0](https://github.com/nlohmann/json/releases/tag/3.3.0) (2018-10-05) [Full Changelog](https://github.com/nlohmann/json/compare/v3.2.0...3.3.0) - When key is not found print the key name into error too [\#1273](https://github.com/nlohmann/json/issues/1273) - Visual Studio 2017 15.8.5 "conditional expression is constant" warning on Line 1851 in json.hpp [\#1268](https://github.com/nlohmann/json/issues/1268) - how can we get this working on WSL? [\#1264](https://github.com/nlohmann/json/issues/1264) - Help needed [\#1259](https://github.com/nlohmann/json/issues/1259) - A way to get to a JSON values "key" [\#1258](https://github.com/nlohmann/json/issues/1258) - While compiling got 76 errors [\#1255](https://github.com/nlohmann/json/issues/1255) - Two blackslashes on json output file [\#1253](https://github.com/nlohmann/json/issues/1253) - Including nlohmann the badwrong way. [\#1250](https://github.com/nlohmann/json/issues/1250) - how to build with clang? [\#1247](https://github.com/nlohmann/json/issues/1247) - Cmake target\_link\_libraries unable to find nlohmann\_json since version 3.2.0 [\#1243](https://github.com/nlohmann/json/issues/1243) - \[Question\] Access to end\(\) iterator reference [\#1242](https://github.com/nlohmann/json/issues/1242) - Parsing different json format [\#1241](https://github.com/nlohmann/json/issues/1241) - Parsing Multiple JSON Files [\#1240](https://github.com/nlohmann/json/issues/1240) - Doesn't compile under C++17 [\#1239](https://github.com/nlohmann/json/issues/1239) - Conversion operator for nlohmann::json is not SFINAE friendly [\#1237](https://github.com/nlohmann/json/issues/1237) - Custom deserialization of number\_float\_t [\#1236](https://github.com/nlohmann/json/issues/1236) - deprecated-declarations warnings when compiling tests with GCC 8.2.1. [\#1233](https://github.com/nlohmann/json/issues/1233) - Incomplete type with json\_fwd.hpp [\#1232](https://github.com/nlohmann/json/issues/1232) - Parse Error [\#1229](https://github.com/nlohmann/json/issues/1229) - json::get function with argument [\#1227](https://github.com/nlohmann/json/issues/1227) - questions regarding from\_json [\#1226](https://github.com/nlohmann/json/issues/1226) - Lambda in unevaluated context [\#1225](https://github.com/nlohmann/json/issues/1225) - NLohmann doesn't compile when enabling strict warning policies [\#1224](https://github.com/nlohmann/json/issues/1224) - Creating array of objects [\#1223](https://github.com/nlohmann/json/issues/1223) - Somewhat unhelpful error message "cannot use operator\[\] with object" [\#1220](https://github.com/nlohmann/json/issues/1220) - single\_include json.hpp [\#1218](https://github.com/nlohmann/json/issues/1218) - Maps with enum class keys which are convertible to JSON strings should be converted to JSON dictionaries [\#1217](https://github.com/nlohmann/json/issues/1217) - Adding JSON Array to the Array [\#1216](https://github.com/nlohmann/json/issues/1216) - Best way to output a vector of a given type to json [\#1215](https://github.com/nlohmann/json/issues/1215) - compiler warning: double definition of macro JSON\_INTERNAL\_CATCH [\#1213](https://github.com/nlohmann/json/issues/1213) - Compilation error when using MOCK\_METHOD1 from GMock and nlohmann::json [\#1212](https://github.com/nlohmann/json/issues/1212) - Issues parsing a previously encoded binary \(non-UTF8\) string. [\#1211](https://github.com/nlohmann/json/issues/1211) - Yet another ordering question: char \* and parse\(\) [\#1209](https://github.com/nlohmann/json/issues/1209) - Error using gcc 8.1.0 on Ubuntu 14.04 [\#1207](https://github.com/nlohmann/json/issues/1207) - "type must be string, but is " std::string\(j.type\_name\(\) [\#1206](https://github.com/nlohmann/json/issues/1206) - Returning empty json object from a function of type const json& ? [\#1205](https://github.com/nlohmann/json/issues/1205) - VS2017 compiler suggests using constexpr if [\#1204](https://github.com/nlohmann/json/issues/1204) - Template instatiation error on compiling [\#1203](https://github.com/nlohmann/json/issues/1203) - BUG - json dump field with unicode -\> array of ints \(instead of string\) [\#1197](https://github.com/nlohmann/json/issues/1197) - Compile error using Code::Blocks // mingw-w64 GCC 8.1.0 - "Incomplete Type" [\#1193](https://github.com/nlohmann/json/issues/1193) - SEGFAULT on arm target [\#1190](https://github.com/nlohmann/json/issues/1190) - Compiler crash with old Clang [\#1179](https://github.com/nlohmann/json/issues/1179) - Custom Precision on floating point numbers [\#1170](https://github.com/nlohmann/json/issues/1170) - Can we have a json\_view class like std::string\_view? [\#1158](https://github.com/nlohmann/json/issues/1158) - improve error handling [\#1152](https://github.com/nlohmann/json/issues/1152) - We should remove static\_asserts [\#960](https://github.com/nlohmann/json/issues/960) - Fix warning C4127: conditional expression is constant [\#1272](https://github.com/nlohmann/json/pull/1272) ([antonioborondo](https://github.com/antonioborondo)) - Turn off additional deprecation warnings for GCC. [\#1271](https://github.com/nlohmann/json/pull/1271) ([chuckatkins](https://github.com/chuckatkins)) - docs: Add additional CMake documentation [\#1270](https://github.com/nlohmann/json/pull/1270) ([chuckatkins](https://github.com/chuckatkins)) - unit-testsuites.cpp: fix hangup if file not found [\#1262](https://github.com/nlohmann/json/pull/1262) ([knilch0r](https://github.com/knilch0r)) - Fix broken cmake imported target alias [\#1260](https://github.com/nlohmann/json/pull/1260) ([chuckatkins](https://github.com/chuckatkins)) - GCC 48 [\#1257](https://github.com/nlohmann/json/pull/1257) ([henryiii](https://github.com/henryiii)) - Add version and license to meson.build [\#1252](https://github.com/nlohmann/json/pull/1252) ([koponomarenko](https://github.com/koponomarenko)) - \#1179 Reordered the code. It seems to stop clang 3.4.2 in RHEL 7 from crash… [\#1249](https://github.com/nlohmann/json/pull/1249) ([LEgregius](https://github.com/LEgregius)) - Use a version check to provide backwards comatible CMake imported target names [\#1245](https://github.com/nlohmann/json/pull/1245) ([chuckatkins](https://github.com/chuckatkins)) - Fix issue \#1237 [\#1238](https://github.com/nlohmann/json/pull/1238) ([theodelrieu](https://github.com/theodelrieu)) - Add a get overload taking a parameter. [\#1231](https://github.com/nlohmann/json/pull/1231) ([theodelrieu](https://github.com/theodelrieu)) - Move lambda out of unevaluated context [\#1230](https://github.com/nlohmann/json/pull/1230) ([mandreyel](https://github.com/mandreyel)) - Remove static asserts [\#1228](https://github.com/nlohmann/json/pull/1228) ([theodelrieu](https://github.com/theodelrieu)) - Better error 305 [\#1221](https://github.com/nlohmann/json/pull/1221) ([rivertam](https://github.com/rivertam)) - Fix \#1213 [\#1214](https://github.com/nlohmann/json/pull/1214) ([simnalamburt](https://github.com/simnalamburt)) - Export package to allow builds without installing [\#1202](https://github.com/nlohmann/json/pull/1202) ([dennisfischer](https://github.com/dennisfischer)) ## [v3.2.0](https://github.com/nlohmann/json/releases/tag/v3.2.0) (2018-08-20) [Full Changelog](https://github.com/nlohmann/json/compare/3.2.0...v3.2.0) ## [3.2.0](https://github.com/nlohmann/json/releases/tag/3.2.0) (2018-08-20) [Full Changelog](https://github.com/nlohmann/json/compare/v3.1.2...3.2.0) - Am I doing this wrong? Getting an empty string [\#1199](https://github.com/nlohmann/json/issues/1199) - Incompatible Pointer Type [\#1196](https://github.com/nlohmann/json/issues/1196) - json.exception.type\_error.316 [\#1195](https://github.com/nlohmann/json/issues/1195) - Strange warnings in Code::Blocks 17.12, GNU GCC [\#1192](https://github.com/nlohmann/json/issues/1192) - \[Question\] Current place in code to change floating point resolution [\#1191](https://github.com/nlohmann/json/issues/1191) - Add key name when throwing type error [\#1189](https://github.com/nlohmann/json/issues/1189) - Not able to include in visual studio code? [\#1188](https://github.com/nlohmann/json/issues/1188) - Get an Index or row number of an element [\#1186](https://github.com/nlohmann/json/issues/1186) - Difference between `merge_patch` and `update` [\#1183](https://github.com/nlohmann/json/issues/1183) - Is there a way to get an element from a JSON without throwing an exception on failure? [\#1182](https://github.com/nlohmann/json/issues/1182) - to\_string? [\#1181](https://github.com/nlohmann/json/issues/1181) - How to cache a json object's pointer into a map? [\#1180](https://github.com/nlohmann/json/issues/1180) - Can this library work within a Qt project for Android using Qt Creator? [\#1178](https://github.com/nlohmann/json/issues/1178) - How to get all keys of one object? [\#1177](https://github.com/nlohmann/json/issues/1177) - How can I only parse the first level and get the value as string? [\#1175](https://github.com/nlohmann/json/issues/1175) - I have a query regarding nlohmann::basic\_json::basic\_json [\#1174](https://github.com/nlohmann/json/issues/1174) - unordered\_map with vectors won't convert to json? [\#1173](https://github.com/nlohmann/json/issues/1173) - return json objects from functions [\#1172](https://github.com/nlohmann/json/issues/1172) - Problem when exporting to CBOR [\#1171](https://github.com/nlohmann/json/issues/1171) - Roundtripping null to nullptr does not work [\#1169](https://github.com/nlohmann/json/issues/1169) - MSVC fails to compile std::swap specialization for nlohmann::json [\#1168](https://github.com/nlohmann/json/issues/1168) - Unexpected behaviour of is\_null - Part II [\#1167](https://github.com/nlohmann/json/issues/1167) - Floating point imprecision [\#1166](https://github.com/nlohmann/json/issues/1166) - Combine json objects into one? [\#1165](https://github.com/nlohmann/json/issues/1165) - Is there any way to know if the object has changed? [\#1164](https://github.com/nlohmann/json/issues/1164) - Value throws on null string [\#1163](https://github.com/nlohmann/json/issues/1163) - Weird template issue in large project [\#1162](https://github.com/nlohmann/json/issues/1162) - \_json returns a different result vs ::parse [\#1161](https://github.com/nlohmann/json/issues/1161) - Showing difference between two json objects [\#1160](https://github.com/nlohmann/json/issues/1160) - no instance of overloaded function "std::swap" matches the specified type [\#1159](https://github.com/nlohmann/json/issues/1159) - resize\(...\)? [\#1157](https://github.com/nlohmann/json/issues/1157) - Issue with struct nested in class' to\_json [\#1155](https://github.com/nlohmann/json/issues/1155) - Deserialize std::map with std::nan [\#1154](https://github.com/nlohmann/json/issues/1154) - Parse throwing errors [\#1149](https://github.com/nlohmann/json/issues/1149) - cocoapod integration [\#1148](https://github.com/nlohmann/json/issues/1148) - wstring parsing [\#1147](https://github.com/nlohmann/json/issues/1147) - Is it possible to dump a two-dimensional array to "\[\[null\],\[1,2,3\]\]"? [\#1146](https://github.com/nlohmann/json/issues/1146) - Want to write a class member variable and a struct variable \( this structure is inside the class\) to the json file [\#1145](https://github.com/nlohmann/json/issues/1145) - Does json support converting an instance of a struct into json string? [\#1143](https://github.com/nlohmann/json/issues/1143) - \#Most efficient way to search for child parameters \(recursive find?\) [\#1141](https://github.com/nlohmann/json/issues/1141) - could not find to\_json\(\) method in T's namespace [\#1140](https://github.com/nlohmann/json/issues/1140) - chars get treated as JSON numbers not JSON strings [\#1139](https://github.com/nlohmann/json/issues/1139) - How do I count number of objects in array? [\#1137](https://github.com/nlohmann/json/issues/1137) - Serializing a vector of classes? [\#1136](https://github.com/nlohmann/json/issues/1136) - Compile error. Unable convert form nullptr to nullptr&& [\#1135](https://github.com/nlohmann/json/issues/1135) - std::unordered\_map in struct, serialization [\#1133](https://github.com/nlohmann/json/issues/1133) - dump\(\) can't handle umlauts [\#1131](https://github.com/nlohmann/json/issues/1131) - Add a way to get a key reference from the iterator [\#1127](https://github.com/nlohmann/json/issues/1127) - can't not parse "\\“ string [\#1123](https://github.com/nlohmann/json/issues/1123) - if json file contain Internationalization chars , get exception [\#1122](https://github.com/nlohmann/json/issues/1122) - How to use a json::iterator dereferenced value in code? [\#1120](https://github.com/nlohmann/json/issues/1120) - Disable implicit conversions from json to std::initializer\_list\ for any T [\#1118](https://github.com/nlohmann/json/issues/1118) - Implicit conversions to complex types can lead to surprising and confusing errors [\#1116](https://github.com/nlohmann/json/issues/1116) - How can I write from\_json for a complex datatype that is not default constructible? [\#1115](https://github.com/nlohmann/json/issues/1115) - Compile error in VS2015 when compiling unit-conversions.cpp [\#1114](https://github.com/nlohmann/json/issues/1114) - ADL Serializer for std::any / boost::any [\#1113](https://github.com/nlohmann/json/issues/1113) - Unexpected behaviour of is\_null [\#1112](https://github.com/nlohmann/json/issues/1112) - How to resolve " undefined reference to `std::\_\_throw\_bad\_cast\(\)'" [\#1111](https://github.com/nlohmann/json/issues/1111) - cannot compile on ubuntu 18.04 and 16.04 [\#1110](https://github.com/nlohmann/json/issues/1110) - JSON representation for floating point values has too many digits [\#1109](https://github.com/nlohmann/json/issues/1109) - Not working for classes containing "\_declspec\(dllimport\)" in their declaration [\#1108](https://github.com/nlohmann/json/issues/1108) - Get keys from json object [\#1107](https://github.com/nlohmann/json/issues/1107) - Cannot deserialize types using std::ratio [\#1105](https://github.com/nlohmann/json/issues/1105) - i want to learn json [\#1104](https://github.com/nlohmann/json/issues/1104) - Type checking during compile [\#1103](https://github.com/nlohmann/json/issues/1103) - Iterate through sub items [\#1102](https://github.com/nlohmann/json/issues/1102) - cppcheck failing for version 3.1.2 [\#1101](https://github.com/nlohmann/json/issues/1101) - Deserializing std::map [\#1100](https://github.com/nlohmann/json/issues/1100) - accessing key by reference [\#1098](https://github.com/nlohmann/json/issues/1098) - clang 3.8.0 croaks while trying to compile with debug symbols [\#1097](https://github.com/nlohmann/json/issues/1097) - Serialize a list of class objects with json [\#1096](https://github.com/nlohmann/json/issues/1096) - Small question [\#1094](https://github.com/nlohmann/json/issues/1094) - Upgrading to 3.x: to\_/from\_json with enum class [\#1093](https://github.com/nlohmann/json/issues/1093) - Q: few questions about json construction [\#1092](https://github.com/nlohmann/json/issues/1092) - general crayCC compilation failure [\#1091](https://github.com/nlohmann/json/issues/1091) - Merge Patch clears original data [\#1090](https://github.com/nlohmann/json/issues/1090) - \[Question\] how to use nlohmann/json in c++? [\#1088](https://github.com/nlohmann/json/issues/1088) - C++17 decomposition declaration support [\#1087](https://github.com/nlohmann/json/issues/1087) - \[Question\] Access multi-level json objects [\#1086](https://github.com/nlohmann/json/issues/1086) - Serializing vector [\#1085](https://github.com/nlohmann/json/issues/1085) - update nested value in multi hierarchy json object [\#1084](https://github.com/nlohmann/json/issues/1084) - Overriding default values? [\#1083](https://github.com/nlohmann/json/issues/1083) - detail namespace collision with Cereal? [\#1082](https://github.com/nlohmann/json/issues/1082) - Error using json.dump\(\); [\#1081](https://github.com/nlohmann/json/issues/1081) - Consuming TCP Stream [\#1080](https://github.com/nlohmann/json/issues/1080) - Compilation error with strong typed enums in map in combination with namespaces [\#1079](https://github.com/nlohmann/json/issues/1079) - cassert error [\#1076](https://github.com/nlohmann/json/issues/1076) - Valid json data not being parsed [\#1075](https://github.com/nlohmann/json/issues/1075) - Feature request :: Better testing for key existance without try/catch [\#1074](https://github.com/nlohmann/json/issues/1074) - Hi, I have input like a.b.c and want to convert it to \"a\"{\"b\": \"c\"} form. Any suggestions how do I do this? Thanks. [\#1073](https://github.com/nlohmann/json/issues/1073) - ADL deserializer not picked up for non default-constructible type [\#1072](https://github.com/nlohmann/json/issues/1072) - Deserializing std::array doesn't compiler \(no insert\(\)\) [\#1071](https://github.com/nlohmann/json/issues/1071) - Serializing OpenCV Mat problem [\#1070](https://github.com/nlohmann/json/issues/1070) - Compilation error with ICPC compiler [\#1068](https://github.com/nlohmann/json/issues/1068) - Not existing value, crash [\#1065](https://github.com/nlohmann/json/issues/1065) - cyryllic symbols [\#1064](https://github.com/nlohmann/json/issues/1064) - newbie usage question [\#1063](https://github.com/nlohmann/json/issues/1063) - Trying j\["strTest"\] = "%A" produces "strTest": "-0X1.CCCCCCCCCCCCCP+205" [\#1062](https://github.com/nlohmann/json/issues/1062) - convert json value to std::string??? [\#1061](https://github.com/nlohmann/json/issues/1061) - Commented out test cases, should they be removed? [\#1060](https://github.com/nlohmann/json/issues/1060) - different behaviour between clang and gcc with braced initialization [\#1059](https://github.com/nlohmann/json/issues/1059) - json array: initialize with prescribed size and `resize` method. [\#1057](https://github.com/nlohmann/json/issues/1057) - Is it possible to use exceptions istead of assertions? [\#1056](https://github.com/nlohmann/json/issues/1056) - when using assign operator in with json object a static assertion fails.. [\#1055](https://github.com/nlohmann/json/issues/1055) - Iterate over leafs of a JSON data structure: enrich the JSON pointer API [\#1054](https://github.com/nlohmann/json/issues/1054) - \[Feature request\] Access by path [\#1053](https://github.com/nlohmann/json/issues/1053) - document that implicit js -\> primitive conversion does not work for std::string::value\_type and why [\#1052](https://github.com/nlohmann/json/issues/1052) - error: ‘BasicJsonType’ in namespace ‘::’ does not name a type [\#1051](https://github.com/nlohmann/json/issues/1051) - Destructor is called when filling object through assignement [\#1050](https://github.com/nlohmann/json/issues/1050) - Is this thing thread safe for reads? [\#1049](https://github.com/nlohmann/json/issues/1049) - clang-tidy: Call to virtual function during construction [\#1046](https://github.com/nlohmann/json/issues/1046) - Using STL algorithms with JSON containers with expected results? [\#1045](https://github.com/nlohmann/json/issues/1045) - Usage with gtest/gmock not working as expected [\#1044](https://github.com/nlohmann/json/issues/1044) - Consequences of from\_json / to\_json being in namespace of data struct. [\#1042](https://github.com/nlohmann/json/issues/1042) - const\_reference operator\[\]\(const typename object\_t::key\_type& key\) const throw instead of assert [\#1039](https://github.com/nlohmann/json/issues/1039) - Trying to retrieve data from nested objects [\#1038](https://github.com/nlohmann/json/issues/1038) - Direct download link for json\_fwd.hpp? [\#1037](https://github.com/nlohmann/json/issues/1037) - I know the library supports UTF-8, but failed to dump the value [\#1036](https://github.com/nlohmann/json/issues/1036) - Putting a Vec3-like vector into a json object [\#1035](https://github.com/nlohmann/json/issues/1035) - Ternary operator crash [\#1034](https://github.com/nlohmann/json/issues/1034) - Issued with Clion Inspection Resolution since 2018.1 [\#1033](https://github.com/nlohmann/json/issues/1033) - Some testcases fail and one never finishes [\#1032](https://github.com/nlohmann/json/issues/1032) - Can this class work with wchar\_t / std::wstring? [\#1031](https://github.com/nlohmann/json/issues/1031) - Makefile: Valgrind flags have no effect [\#1030](https://github.com/nlohmann/json/issues/1030) - 「==」 Should be 「\>」 [\#1029](https://github.com/nlohmann/json/issues/1029) - HOCON reader? [\#1027](https://github.com/nlohmann/json/issues/1027) - add json string in previous string?? [\#1025](https://github.com/nlohmann/json/issues/1025) - RFC: fluent parsing interface [\#1023](https://github.com/nlohmann/json/issues/1023) - Does it support chinese character? [\#1022](https://github.com/nlohmann/json/issues/1022) - to/from\_msgpack only works with standard typization [\#1021](https://github.com/nlohmann/json/issues/1021) - Build failure using latest clang and GCC compilers [\#1020](https://github.com/nlohmann/json/issues/1020) - can two json objects be concatenated? [\#1019](https://github.com/nlohmann/json/issues/1019) - Erase by integer index [\#1018](https://github.com/nlohmann/json/issues/1018) - Function find overload taking a json\_pointer [\#1017](https://github.com/nlohmann/json/issues/1017) - I think should implement an parser function [\#1016](https://github.com/nlohmann/json/issues/1016) - Readme gif [\#1015](https://github.com/nlohmann/json/issues/1015) - Python bindings [\#1014](https://github.com/nlohmann/json/issues/1014) - how to add two json string in single object?? [\#1012](https://github.com/nlohmann/json/issues/1012) - how to serialize class Object \(convert data in object into json\)?? [\#1011](https://github.com/nlohmann/json/issues/1011) - Enable forward declaration of json by making json a class instead of a using declaration [\#997](https://github.com/nlohmann/json/issues/997) - compilation error while using intel c++ compiler 2018 [\#994](https://github.com/nlohmann/json/issues/994) - How to create a json variable? [\#990](https://github.com/nlohmann/json/issues/990) - istream \>\> json --- 1st character skipped in stream [\#976](https://github.com/nlohmann/json/issues/976) - Add a SAX parser [\#971](https://github.com/nlohmann/json/issues/971) - How to solve large json file? [\#927](https://github.com/nlohmann/json/issues/927) - json\_pointer public push\_back, pop\_back [\#837](https://github.com/nlohmann/json/issues/837) - Using input\_adapter in a slightly unexpected way [\#834](https://github.com/nlohmann/json/issues/834) - Fix -Wno-sometimes-uninitialized by initializing "result" in parse\_sax [\#1200](https://github.com/nlohmann/json/pull/1200) ([thyu](https://github.com/thyu)) - \[RFC\] Introduce a new macro function: JSON\_INTERNAL\_CATCH [\#1187](https://github.com/nlohmann/json/pull/1187) ([simnalamburt](https://github.com/simnalamburt)) - Fix unit tests that were silently skipped or crashed \(depending on the compiler\) [\#1176](https://github.com/nlohmann/json/pull/1176) ([grembo](https://github.com/grembo)) - Refactor/no virtual sax [\#1153](https://github.com/nlohmann/json/pull/1153) ([theodelrieu](https://github.com/theodelrieu)) - Fixed compiler error in VS 2015 for debug mode [\#1151](https://github.com/nlohmann/json/pull/1151) ([sonulohani](https://github.com/sonulohani)) - Fix links to cppreference named requirements \(formerly concepts\) [\#1144](https://github.com/nlohmann/json/pull/1144) ([jrakow](https://github.com/jrakow)) - meson: fix include directory [\#1142](https://github.com/nlohmann/json/pull/1142) ([jrakow](https://github.com/jrakow)) - Feature/unordered map conversion [\#1138](https://github.com/nlohmann/json/pull/1138) ([theodelrieu](https://github.com/theodelrieu)) - fixed compile error for \#1045 [\#1134](https://github.com/nlohmann/json/pull/1134) ([Daniel599](https://github.com/Daniel599)) - test \(non\)equality for alt\_string implementation [\#1130](https://github.com/nlohmann/json/pull/1130) ([agrianius](https://github.com/agrianius)) - remove stringstream dependency [\#1117](https://github.com/nlohmann/json/pull/1117) ([TinyTinni](https://github.com/TinyTinni)) - Provide a from\_json overload for std::map [\#1089](https://github.com/nlohmann/json/pull/1089) ([theodelrieu](https://github.com/theodelrieu)) - fix typo in README [\#1078](https://github.com/nlohmann/json/pull/1078) ([martin-mfg](https://github.com/martin-mfg)) - Fix typo [\#1058](https://github.com/nlohmann/json/pull/1058) ([dns13](https://github.com/dns13)) - Misc cmake packaging enhancements [\#1048](https://github.com/nlohmann/json/pull/1048) ([chuckatkins](https://github.com/chuckatkins)) - Fixed incorrect LLVM version number in README [\#1047](https://github.com/nlohmann/json/pull/1047) ([jammehcow](https://github.com/jammehcow)) - Fix trivial typo in comment. [\#1043](https://github.com/nlohmann/json/pull/1043) ([coryan](https://github.com/coryan)) - Package Manager: Spack [\#1041](https://github.com/nlohmann/json/pull/1041) ([ax3l](https://github.com/ax3l)) - CMake: 3.8+ is Sufficient [\#1040](https://github.com/nlohmann/json/pull/1040) ([ax3l](https://github.com/ax3l)) - Added support for string\_view in C++17 [\#1028](https://github.com/nlohmann/json/pull/1028) ([gracicot](https://github.com/gracicot)) - Added public target\_compile\_features for auto and constexpr [\#1026](https://github.com/nlohmann/json/pull/1026) ([ktonon](https://github.com/ktonon)) ## [v3.1.2](https://github.com/nlohmann/json/releases/tag/v3.1.2) (2018-03-14) [Full Changelog](https://github.com/nlohmann/json/compare/3.1.2...v3.1.2) ## [3.1.2](https://github.com/nlohmann/json/releases/tag/3.1.2) (2018-03-14) [Full Changelog](https://github.com/nlohmann/json/compare/v3.1.1...3.1.2) - STL containers are always serialized to a nested array like \[\[1,2,3\]\] [\#1013](https://github.com/nlohmann/json/issues/1013) - The library doesn't want to insert an unordered\_map [\#1010](https://github.com/nlohmann/json/issues/1010) - Convert Json to uint8\_t [\#1008](https://github.com/nlohmann/json/issues/1008) - How to compare two JSON objects? [\#1007](https://github.com/nlohmann/json/issues/1007) - Syntax checking [\#1003](https://github.com/nlohmann/json/issues/1003) - more than one operator '=' matches these operands [\#1002](https://github.com/nlohmann/json/issues/1002) - How to check if key existed [\#1000](https://github.com/nlohmann/json/issues/1000) - nlohmann::json::parse exhaust memory in go binding [\#999](https://github.com/nlohmann/json/issues/999) - Range-based iteration over a non-array object [\#998](https://github.com/nlohmann/json/issues/998) - get\ for types that are not default constructible [\#996](https://github.com/nlohmann/json/issues/996) - Prevent Null values to appear in .dump\(\) [\#995](https://github.com/nlohmann/json/issues/995) - number parsing [\#993](https://github.com/nlohmann/json/issues/993) - C2664 \(C++/CLR\) cannot convert 'nullptr' to 'nullptr &&' [\#987](https://github.com/nlohmann/json/issues/987) - Uniform initialization from another json object differs between gcc and clang. [\#985](https://github.com/nlohmann/json/issues/985) - Problem with adding the lib as a submodule [\#983](https://github.com/nlohmann/json/issues/983) - UTF-8/Unicode error [\#982](https://github.com/nlohmann/json/issues/982) - "forcing MSVC stacktrace to show which T we're talking about." error [\#980](https://github.com/nlohmann/json/issues/980) - reverse order of serialization [\#979](https://github.com/nlohmann/json/issues/979) - Assigning between different json types [\#977](https://github.com/nlohmann/json/issues/977) - Support serialisation of `unique_ptr<>` and `shared_ptr<>` [\#975](https://github.com/nlohmann/json/issues/975) - Unexpected end of input \(not same as one before\) [\#974](https://github.com/nlohmann/json/issues/974) - Segfault on direct initializing json object [\#973](https://github.com/nlohmann/json/issues/973) - Segmentation fault on G++ when trying to assign json string literal to custom json type. [\#972](https://github.com/nlohmann/json/issues/972) - os\_defines.h:44:19: error: missing binary operator before token "\(" [\#970](https://github.com/nlohmann/json/issues/970) - Passing an iteration object by reference to a function [\#967](https://github.com/nlohmann/json/issues/967) - Json and fmt::lib's format\_arg\(\) [\#964](https://github.com/nlohmann/json/issues/964) - Allowing for user-defined string type in lexer/parser [\#1009](https://github.com/nlohmann/json/pull/1009) ([nlohmann](https://github.com/nlohmann)) - dump to alternative string type, as defined in basic\_json template [\#1006](https://github.com/nlohmann/json/pull/1006) ([agrianius](https://github.com/agrianius)) - Fix memory leak during parser callback [\#1001](https://github.com/nlohmann/json/pull/1001) ([nlohmann](https://github.com/nlohmann)) - fixed misprinted condition detected by PVS Studio. [\#992](https://github.com/nlohmann/json/pull/992) ([bogemic](https://github.com/bogemic)) - Fix/basic json conversion [\#986](https://github.com/nlohmann/json/pull/986) ([theodelrieu](https://github.com/theodelrieu)) - Make integration section concise [\#981](https://github.com/nlohmann/json/pull/981) ([wla80](https://github.com/wla80)) ## [v3.1.1](https://github.com/nlohmann/json/releases/tag/v3.1.1) (2018-02-13) [Full Changelog](https://github.com/nlohmann/json/compare/v3.1.0...v3.1.1) - Updation of child object isn't reflected in parent Object [\#968](https://github.com/nlohmann/json/issues/968) - How to add user defined C++ path to sublime text [\#966](https://github.com/nlohmann/json/issues/966) - fast number parsing [\#965](https://github.com/nlohmann/json/issues/965) - With non-unique keys, later stored entries are not taken into account anymore [\#963](https://github.com/nlohmann/json/issues/963) - Timeout \(OSS-Fuzz 6034\) [\#962](https://github.com/nlohmann/json/issues/962) - Incorrect parsing of indefinite length CBOR strings. [\#961](https://github.com/nlohmann/json/issues/961) - Reload a json file at runtime without emptying my std::ifstream [\#959](https://github.com/nlohmann/json/issues/959) - Split headers should be part of the release [\#956](https://github.com/nlohmann/json/issues/956) - Coveralls shows no coverage data [\#953](https://github.com/nlohmann/json/issues/953) - Feature request: Implicit conversion to bool [\#951](https://github.com/nlohmann/json/issues/951) - converting json to vector of type with templated constructor [\#924](https://github.com/nlohmann/json/issues/924) - No structured bindings support? [\#901](https://github.com/nlohmann/json/issues/901) - \[Request\] Macro generating from\_json\(\) and to\_json\(\) [\#895](https://github.com/nlohmann/json/issues/895) - basic\_json::value throws exception instead of returning default value [\#871](https://github.com/nlohmann/json/issues/871) - Fix constraints on from\_json\(CompatibleArrayType\) [\#969](https://github.com/nlohmann/json/pull/969) ([theodelrieu](https://github.com/theodelrieu)) - Make coveralls watch the include folder [\#957](https://github.com/nlohmann/json/pull/957) ([theodelrieu](https://github.com/theodelrieu)) - Fix links in README.md [\#955](https://github.com/nlohmann/json/pull/955) ([patrikhuber](https://github.com/patrikhuber)) - Add a note about installing the library with cget [\#954](https://github.com/nlohmann/json/pull/954) ([pfultz2](https://github.com/pfultz2)) ## [v3.1.0](https://github.com/nlohmann/json/releases/tag/v3.1.0) (2018-02-01) [Full Changelog](https://github.com/nlohmann/json/compare/3.1.0...v3.1.0) ## [3.1.0](https://github.com/nlohmann/json/releases/tag/3.1.0) (2018-02-01) [Full Changelog](https://github.com/nlohmann/json/compare/v3.0.1...3.1.0) - I have a proposal [\#949](https://github.com/nlohmann/json/issues/949) - VERSION define\(s\) [\#948](https://github.com/nlohmann/json/issues/948) - v3.0.1 compile error in icc 16.0.4 [\#947](https://github.com/nlohmann/json/issues/947) - Use in VS2017 15.5.5 [\#946](https://github.com/nlohmann/json/issues/946) - Process for reporting Security Bugs? [\#945](https://github.com/nlohmann/json/issues/945) - Please expose a NLOHMANN\_JSON\_VERSION macro [\#943](https://github.com/nlohmann/json/issues/943) - Change header include directory to nlohmann/json [\#942](https://github.com/nlohmann/json/issues/942) - string\_type in binary\_reader [\#941](https://github.com/nlohmann/json/issues/941) - compile error with clang 5.0 -std=c++1z and no string\_view [\#939](https://github.com/nlohmann/json/issues/939) - Allow overriding JSON\_THROW to something else than abort\(\) [\#938](https://github.com/nlohmann/json/issues/938) - Handle invalid string in Json file [\#937](https://github.com/nlohmann/json/issues/937) - Unused variable 'kMinExp' [\#935](https://github.com/nlohmann/json/issues/935) - yytext is already defined [\#933](https://github.com/nlohmann/json/issues/933) - Equality operator fails [\#931](https://github.com/nlohmann/json/issues/931) - use in visual studio 2015 [\#929](https://github.com/nlohmann/json/issues/929) - Relative includes of json\_fwd.hpp in detail/meta.hpp. \[Develop branch\] [\#928](https://github.com/nlohmann/json/issues/928) - GCC 7.x issue [\#926](https://github.com/nlohmann/json/issues/926) - json\_fwd.hpp not installed [\#923](https://github.com/nlohmann/json/issues/923) - Use Google Benchmarks [\#921](https://github.com/nlohmann/json/issues/921) - Move class json\_pointer to separate file [\#920](https://github.com/nlohmann/json/issues/920) - Unable to locate 'to\_json\(\)' and 'from\_json\(\)' methods in the same namespace [\#917](https://github.com/nlohmann/json/issues/917) - \[answered\]Read key1 from .value example [\#914](https://github.com/nlohmann/json/issues/914) - Don't use `define private public` in test files [\#913](https://github.com/nlohmann/json/issues/913) - value\(\) template argument type deduction [\#912](https://github.com/nlohmann/json/issues/912) - Installation path is incorrect [\#910](https://github.com/nlohmann/json/issues/910) - H [\#909](https://github.com/nlohmann/json/issues/909) - Build failure using clang 5 [\#908](https://github.com/nlohmann/json/issues/908) - Amalgate [\#907](https://github.com/nlohmann/json/issues/907) - Update documentation and tests wrt. split headers [\#906](https://github.com/nlohmann/json/issues/906) - Lib not working on ubuntu 16.04 [\#905](https://github.com/nlohmann/json/issues/905) - Problem when writing to file. [\#904](https://github.com/nlohmann/json/issues/904) - C2864 error when compiling with VS2015 and VS 2017 [\#903](https://github.com/nlohmann/json/issues/903) - \[json.exception.type\_error.304\] cannot use at\(\) with object [\#902](https://github.com/nlohmann/json/issues/902) - How do I forward nlohmann::json declaration? [\#899](https://github.com/nlohmann/json/issues/899) - How to effectively store binary data? [\#898](https://github.com/nlohmann/json/issues/898) - How to get the length of a JSON string without retrieving its std::string? [\#897](https://github.com/nlohmann/json/issues/897) - Regression Tests Failure using "ctest" [\#887](https://github.com/nlohmann/json/issues/887) - Discuss: add JSON Merge Patch \(RFC 7396\)? [\#877](https://github.com/nlohmann/json/issues/877) - Discuss: replace static "iterator\_wrapper" function with "items" member function [\#874](https://github.com/nlohmann/json/issues/874) - Make optional user-data available in from\_json [\#864](https://github.com/nlohmann/json/issues/864) - Casting to std::string not working in VS2015 [\#861](https://github.com/nlohmann/json/issues/861) - Sequential reading of JSON arrays [\#851](https://github.com/nlohmann/json/issues/851) - Idea: Handle Multimaps Better [\#816](https://github.com/nlohmann/json/issues/816) - Floating point rounding [\#777](https://github.com/nlohmann/json/issues/777) - Loss of precision when serializing \ [\#360](https://github.com/nlohmann/json/issues/360) - Templatize std::string in binary\_reader \#941 [\#950](https://github.com/nlohmann/json/pull/950) ([kaidokert](https://github.com/kaidokert)) - fix cmake install directory \(for real this time\) [\#944](https://github.com/nlohmann/json/pull/944) ([theodelrieu](https://github.com/theodelrieu)) - Allow overriding THROW/CATCH/TRY macros with no-exceptions \#938 [\#940](https://github.com/nlohmann/json/pull/940) ([kaidokert](https://github.com/kaidokert)) - Removed compiler warning about unused variable 'kMinExp' [\#936](https://github.com/nlohmann/json/pull/936) ([zerodefect](https://github.com/zerodefect)) - Fix a typo in README.md [\#930](https://github.com/nlohmann/json/pull/930) ([Pipeliner](https://github.com/Pipeliner)) - Howto installation of json\_fwd.hpp \(fixes \#923\) [\#925](https://github.com/nlohmann/json/pull/925) ([zerodefect](https://github.com/zerodefect)) - fix sfinae on basic\_json UDT constructor [\#919](https://github.com/nlohmann/json/pull/919) ([theodelrieu](https://github.com/theodelrieu)) - Floating-point formatting [\#915](https://github.com/nlohmann/json/pull/915) ([abolz](https://github.com/abolz)) - Fix/cmake install [\#911](https://github.com/nlohmann/json/pull/911) ([theodelrieu](https://github.com/theodelrieu)) - fix link to the documentation of the emplace function [\#900](https://github.com/nlohmann/json/pull/900) ([Dobiasd](https://github.com/Dobiasd)) - JSON Merge Patch \(RFC 7396\) [\#876](https://github.com/nlohmann/json/pull/876) ([nlohmann](https://github.com/nlohmann)) - Refactor/split it [\#700](https://github.com/nlohmann/json/pull/700) ([theodelrieu](https://github.com/theodelrieu)) ## [v3.0.1](https://github.com/nlohmann/json/releases/tag/v3.0.1) (2017-12-29) [Full Changelog](https://github.com/nlohmann/json/compare/3.0.1...v3.0.1) ## [3.0.1](https://github.com/nlohmann/json/releases/tag/3.0.1) (2017-12-29) [Full Changelog](https://github.com/nlohmann/json/compare/v3.0.0...3.0.1) - Problem parsing array to global vector [\#896](https://github.com/nlohmann/json/issues/896) - Invalid RFC6902 copy operation succeeds [\#894](https://github.com/nlohmann/json/issues/894) - How to rename a key during looping? [\#893](https://github.com/nlohmann/json/issues/893) - clang++-6.0 \(6.0.0-svn321357-1\) warning [\#892](https://github.com/nlohmann/json/issues/892) - Make json.hpp aware of the modules TS? [\#891](https://github.com/nlohmann/json/issues/891) - All enum values not handled in switch cases. \( -Wswitch-enum \) [\#889](https://github.com/nlohmann/json/issues/889) - JSON Pointer resolve failure resulting in incorrect exception code [\#888](https://github.com/nlohmann/json/issues/888) - Unexpected nested arrays from std::vector [\#886](https://github.com/nlohmann/json/issues/886) - erase multiple elements from a json object [\#884](https://github.com/nlohmann/json/issues/884) - Container function overview in Doxygen is not updated [\#883](https://github.com/nlohmann/json/issues/883) - How to use this for binary file uploads [\#881](https://github.com/nlohmann/json/issues/881) - Allow setting JSON\_BuildTests=OFF from parent CMakeLists.txt [\#846](https://github.com/nlohmann/json/issues/846) - Unit test fails for local-independent str-to-num [\#845](https://github.com/nlohmann/json/issues/845) - Another idea about type support [\#774](https://github.com/nlohmann/json/issues/774) - Includes CTest module/adds BUILD\_TESTING option [\#885](https://github.com/nlohmann/json/pull/885) ([TinyTinni](https://github.com/TinyTinni)) - Fix MSVC warning C4819 [\#882](https://github.com/nlohmann/json/pull/882) ([erengy](https://github.com/erengy)) - Merge branch 'develop' into coverity\_scan [\#880](https://github.com/nlohmann/json/pull/880) ([nlohmann](https://github.com/nlohmann)) - :wrench: Fix up a few more effc++ items [\#858](https://github.com/nlohmann/json/pull/858) ([mattismyname](https://github.com/mattismyname)) ## [v3.0.0](https://github.com/nlohmann/json/releases/tag/v3.0.0) (2017-12-17) [Full Changelog](https://github.com/nlohmann/json/compare/3.0.0...v3.0.0) ## [3.0.0](https://github.com/nlohmann/json/releases/tag/3.0.0) (2017-12-17) [Full Changelog](https://github.com/nlohmann/json/compare/v2.1.1...3.0.0) - unicode strings [\#878](https://github.com/nlohmann/json/issues/878) - Visual Studio 2017 15.5 C++17 std::allocator deprecations [\#872](https://github.com/nlohmann/json/issues/872) - Typo "excpetion" [\#869](https://github.com/nlohmann/json/issues/869) - Explicit array example in README.md incorrect [\#867](https://github.com/nlohmann/json/issues/867) - why don't you release this from Feb. ? [\#865](https://github.com/nlohmann/json/issues/865) - json::parse throws std::invalid\_argument when processing string generated by json::dump\(\) [\#863](https://github.com/nlohmann/json/issues/863) - code analysis: potential bug? [\#859](https://github.com/nlohmann/json/issues/859) - MSVC2017, 15.5 new issues. [\#857](https://github.com/nlohmann/json/issues/857) - very basic: fetching string value/content without quotes [\#853](https://github.com/nlohmann/json/issues/853) - Ambiguous function call to get with pointer type and constant json object in VS2015 \(15.4.4\) [\#852](https://github.com/nlohmann/json/issues/852) - How to put object in the array as a member? [\#850](https://github.com/nlohmann/json/issues/850) - misclick, please ignore [\#849](https://github.com/nlohmann/json/issues/849) - Make XML great again. [\#847](https://github.com/nlohmann/json/issues/847) - Converting to array not working [\#843](https://github.com/nlohmann/json/issues/843) - Iteration weirdness [\#842](https://github.com/nlohmann/json/issues/842) - Use reference or pointer as Object value [\#841](https://github.com/nlohmann/json/issues/841) - Ambiguity in parsing nested maps [\#840](https://github.com/nlohmann/json/issues/840) - could not find from\_json\(\) method in T's namespace [\#839](https://github.com/nlohmann/json/issues/839) - Incorrect parse error with binary data in keys? [\#838](https://github.com/nlohmann/json/issues/838) - using dump\(\) when std::wstring is StringType with VS2017 [\#836](https://github.com/nlohmann/json/issues/836) - Show the path of the currently parsed value when an error occurs [\#835](https://github.com/nlohmann/json/issues/835) - Repetitive data type while reading [\#833](https://github.com/nlohmann/json/issues/833) - Storing multiple types inside map [\#831](https://github.com/nlohmann/json/issues/831) - Application terminating [\#830](https://github.com/nlohmann/json/issues/830) - Missing CMake hunter package? [\#828](https://github.com/nlohmann/json/issues/828) - std::map\ from json object yields C2665: 'std::pair\::pair': none of the 2 overloads could convert all the argument types [\#827](https://github.com/nlohmann/json/issues/827) - object.dump gives quoted string, want to use .dump\(\) to generate javascripts. [\#826](https://github.com/nlohmann/json/issues/826) - Assertion failed on \["NoExistKey"\] of an not existing key of const json& [\#825](https://github.com/nlohmann/json/issues/825) - vs2015 error : static member will remain uninitialized at runtime but use in constant-expressions is supported [\#824](https://github.com/nlohmann/json/issues/824) - Code Checking Warnings from json.hpp on VS2017 Community [\#821](https://github.com/nlohmann/json/issues/821) - Missing iostream in try online [\#820](https://github.com/nlohmann/json/issues/820) - Floating point value loses decimal point during dump [\#818](https://github.com/nlohmann/json/issues/818) - Conan package for the library [\#817](https://github.com/nlohmann/json/issues/817) - stream error [\#815](https://github.com/nlohmann/json/issues/815) - Link error when using find\(\) on the latest commit [\#814](https://github.com/nlohmann/json/issues/814) - ABI issue with json object between 2 shared libraries [\#813](https://github.com/nlohmann/json/issues/813) - scan\_string\(\) return token\_type::parse\_error; when parse ansi file [\#812](https://github.com/nlohmann/json/issues/812) - segfault when using fifo\_map with json [\#810](https://github.com/nlohmann/json/issues/810) - This shit is shit [\#809](https://github.com/nlohmann/json/issues/809) - \_finite and \_isnan are no members of "std" [\#808](https://github.com/nlohmann/json/issues/808) - how to print out the line which causing exception? [\#806](https://github.com/nlohmann/json/issues/806) - {} uses copy constructor, while = does not [\#805](https://github.com/nlohmann/json/issues/805) - json.hpp:8955: multiple definition of function that is not defined twice or more. [\#804](https://github.com/nlohmann/json/issues/804) - \[question\] to\_json for base and derived class [\#803](https://github.com/nlohmann/json/issues/803) - Misleading error message - unexpected '"' - on incorrect utf-8 symbol [\#802](https://github.com/nlohmann/json/issues/802) - json data = std::string\_view\("hi"\); doesn't work? [\#801](https://github.com/nlohmann/json/issues/801) - Thread safety of parse\(\) [\#800](https://github.com/nlohmann/json/issues/800) - Numbers as strings [\#799](https://github.com/nlohmann/json/issues/799) - Tests failing on arm [\#797](https://github.com/nlohmann/json/issues/797) - Using your library \(without modification\) in another library [\#796](https://github.com/nlohmann/json/issues/796) - Iterating over sub-object [\#794](https://github.com/nlohmann/json/issues/794) - how to get the json object again from which printed by the method of dump\(\) [\#792](https://github.com/nlohmann/json/issues/792) - ppa to include source [\#791](https://github.com/nlohmann/json/issues/791) - Different include paths in macOS and Ubuntu [\#790](https://github.com/nlohmann/json/issues/790) - Missing break after line 12886 in switch/case [\#789](https://github.com/nlohmann/json/issues/789) - All unit tests fail? [\#787](https://github.com/nlohmann/json/issues/787) - More use of move semantics in deserialization [\#786](https://github.com/nlohmann/json/issues/786) - warning C4706 - Visual Studio 2017 \(/W4\) [\#784](https://github.com/nlohmann/json/issues/784) - Compile error in clang 5.0 [\#782](https://github.com/nlohmann/json/issues/782) - Error Installing appium\_lib with Ruby v2.4.2 Due to JSON [\#781](https://github.com/nlohmann/json/issues/781) - ::get\\(\) fails in new\(er\) release \[MSVC\] [\#780](https://github.com/nlohmann/json/issues/780) - Type Conversion [\#779](https://github.com/nlohmann/json/issues/779) - Segfault on nested parsing [\#778](https://github.com/nlohmann/json/issues/778) - Build warnings: shadowing exception id [\#776](https://github.com/nlohmann/json/issues/776) - multi-level JSON support. [\#775](https://github.com/nlohmann/json/issues/775) - SIGABRT on dump\(\) [\#773](https://github.com/nlohmann/json/issues/773) - \[Question\] Custom StringType template parameter \(possibility for a KeyType template parameter\) [\#772](https://github.com/nlohmann/json/issues/772) - constexpr ALL the Things! [\#771](https://github.com/nlohmann/json/issues/771) - error: ‘BasicJsonType’ in namespace ‘::’ does not name a type [\#770](https://github.com/nlohmann/json/issues/770) - Program calls abort function [\#769](https://github.com/nlohmann/json/issues/769) - \[Question\] Floating point resolution config during dump\(\) ? [\#768](https://github.com/nlohmann/json/issues/768) - make check - no test ran [\#767](https://github.com/nlohmann/json/issues/767) - The library cannot work properly with custom allocator based containers [\#766](https://github.com/nlohmann/json/issues/766) - Documentation or feature request. [\#763](https://github.com/nlohmann/json/issues/763) - warnings in msvc about mix/max macro while windows.h is used in the project [\#762](https://github.com/nlohmann/json/issues/762) - std::signbit ambiguous [\#761](https://github.com/nlohmann/json/issues/761) - How to use value for std::experimental::optional type? [\#760](https://github.com/nlohmann/json/issues/760) - Cannot load json file properly [\#759](https://github.com/nlohmann/json/issues/759) - Compilation error with unordered\_map\< int, int \> [\#758](https://github.com/nlohmann/json/issues/758) - CBOR string [\#757](https://github.com/nlohmann/json/issues/757) - Proposal: out\_of\_range should be a subclass of std::out\_of\_range [\#756](https://github.com/nlohmann/json/issues/756) - Getter is setting the value to null if the key does not exist [\#754](https://github.com/nlohmann/json/issues/754) - parsing works sometimes and crashes others [\#752](https://github.com/nlohmann/json/issues/752) - Static\_assert failed "incompatible pointer type" with Xcode [\#751](https://github.com/nlohmann/json/issues/751) - user-defined literal operator not found [\#750](https://github.com/nlohmann/json/issues/750) - getting clean string from it.key\(\) [\#748](https://github.com/nlohmann/json/issues/748) - Best method for exploring and obtaining values of nested json objects when the names are not known beforehand? [\#747](https://github.com/nlohmann/json/issues/747) - null char at the end of string [\#746](https://github.com/nlohmann/json/issues/746) - Incorrect sample for operator \>\> in docs [\#745](https://github.com/nlohmann/json/issues/745) - User-friendly documentation [\#744](https://github.com/nlohmann/json/issues/744) - Retrieve all values that match a json path [\#743](https://github.com/nlohmann/json/issues/743) - Compilation issue with gcc 7.2 [\#742](https://github.com/nlohmann/json/issues/742) - CMake target nlohmann\_json does not have src into its interface includes [\#741](https://github.com/nlohmann/json/issues/741) - Error when serializing empty json: type must be string, but is object [\#740](https://github.com/nlohmann/json/issues/740) - Conversion error for std::map\ [\#739](https://github.com/nlohmann/json/issues/739) - Dumping Json to file as array [\#738](https://github.com/nlohmann/json/issues/738) - nesting json objects [\#737](https://github.com/nlohmann/json/issues/737) - where to find general help? [\#736](https://github.com/nlohmann/json/issues/736) - Compilation Error on Clang 5.0 Upgrade [\#735](https://github.com/nlohmann/json/issues/735) - Compilation error with std::map\ on vs 2015 [\#734](https://github.com/nlohmann/json/issues/734) - Benchmarks for Binary formats [\#733](https://github.com/nlohmann/json/issues/733) - Support \n symbols in json string. [\#731](https://github.com/nlohmann/json/issues/731) - Project's name is too generic and hard to search for [\#730](https://github.com/nlohmann/json/issues/730) - Visual Studio 2015 IntelliTrace problems [\#729](https://github.com/nlohmann/json/issues/729) - How to erase nested objects inside other objects? [\#728](https://github.com/nlohmann/json/issues/728) - Serialization for CBOR [\#726](https://github.com/nlohmann/json/issues/726) - Using json Object as value in a map [\#725](https://github.com/nlohmann/json/issues/725) - std::regex and nlohmann::json value [\#724](https://github.com/nlohmann/json/issues/724) - Warnings when compiling with VisualStudio 2015 [\#723](https://github.com/nlohmann/json/issues/723) - Has this lib the unicode \(wstring\) support? [\#722](https://github.com/nlohmann/json/issues/722) - When will be 3.0 in master? [\#721](https://github.com/nlohmann/json/issues/721) - Determine the type from error message. [\#720](https://github.com/nlohmann/json/issues/720) - Compile-Error C2100 \(MS VS2015\) in line 887 json.hpp [\#719](https://github.com/nlohmann/json/issues/719) - from\_json not working for boost::optional example [\#718](https://github.com/nlohmann/json/issues/718) - about from\_json and to\_json function [\#717](https://github.com/nlohmann/json/issues/717) - How to detect parse failure? [\#715](https://github.com/nlohmann/json/issues/715) - Parse throw std::ios\_base::failure exception when failbit set to true [\#714](https://github.com/nlohmann/json/issues/714) - Is there a way of format just making a pretty print without changing the key's orders ? [\#713](https://github.com/nlohmann/json/issues/713) - Serialization of array of not same model items [\#712](https://github.com/nlohmann/json/issues/712) - pointer to json parse vector [\#711](https://github.com/nlohmann/json/issues/711) - Gtest SEH Exception [\#709](https://github.com/nlohmann/json/issues/709) - broken from\_json implementation for pair and tuple [\#707](https://github.com/nlohmann/json/issues/707) - Unevaluated lambda in assert breaks gcc 7 build [\#705](https://github.com/nlohmann/json/issues/705) - Issues when adding values to firebase database [\#704](https://github.com/nlohmann/json/issues/704) - Floating point equality - revisited [\#703](https://github.com/nlohmann/json/issues/703) - Conversion from valarray\ to json fails to build [\#702](https://github.com/nlohmann/json/issues/702) - internal compiler error \(gcc7\) [\#701](https://github.com/nlohmann/json/issues/701) - One build system to rule them all [\#698](https://github.com/nlohmann/json/issues/698) - Generated nlohmann\_jsonConfig.cmake does not set JSON\_INCLUDE\_DIR [\#695](https://github.com/nlohmann/json/issues/695) - support the Chinese language in json string [\#694](https://github.com/nlohmann/json/issues/694) - NaN problem within develop branch [\#693](https://github.com/nlohmann/json/issues/693) - Please post example of specialization for boost::filesystem [\#692](https://github.com/nlohmann/json/issues/692) - Impossible to do an array of composite objects [\#691](https://github.com/nlohmann/json/issues/691) - How to save json to file? [\#690](https://github.com/nlohmann/json/issues/690) - my simple json parser [\#689](https://github.com/nlohmann/json/issues/689) - problem with new struct parsing syntax [\#688](https://github.com/nlohmann/json/issues/688) - Parse error while parse the json string contains UTF 8 encoded document bytes string [\#684](https://github.com/nlohmann/json/issues/684) - \[question\] how to get a string value by pointer [\#683](https://github.com/nlohmann/json/issues/683) - create json object from string variable [\#681](https://github.com/nlohmann/json/issues/681) - adl\_serializer and CRTP [\#680](https://github.com/nlohmann/json/issues/680) - Is there a way to control the precision of serialized floating point numbers? [\#677](https://github.com/nlohmann/json/issues/677) - Is there a way to get the path of a value? [\#676](https://github.com/nlohmann/json/issues/676) - Could the parser locate errors to line? [\#675](https://github.com/nlohmann/json/issues/675) - There is performance inefficiency found by coverity tool json2.1.1/include/nlohmann/json.hpp [\#673](https://github.com/nlohmann/json/issues/673) - include problem, when cmake on osx [\#672](https://github.com/nlohmann/json/issues/672) - Operator= ambiguous in C++1z and GCC 7.1.1 [\#670](https://github.com/nlohmann/json/issues/670) - should't the cmake install target be to nlohman/json.hpp [\#668](https://github.com/nlohmann/json/issues/668) - deserialise from `std::vector` [\#667](https://github.com/nlohmann/json/issues/667) - How to iterate? [\#665](https://github.com/nlohmann/json/issues/665) - could this json lib work on windows? [\#664](https://github.com/nlohmann/json/issues/664) - How does from\_json work? [\#662](https://github.com/nlohmann/json/issues/662) - insert\(or merge\) object should replace same key , not ignore [\#661](https://github.com/nlohmann/json/issues/661) - Parse method doesn't handle newlines. [\#659](https://github.com/nlohmann/json/issues/659) - Compilation "note" on GCC 6 ARM [\#658](https://github.com/nlohmann/json/issues/658) - Adding additional push\_back/operator+= rvalue overloads for JSON object [\#657](https://github.com/nlohmann/json/issues/657) - dump's parameter "ensure\_ascii" creates too long sequences [\#656](https://github.com/nlohmann/json/issues/656) - Question: parsing `void *` [\#655](https://github.com/nlohmann/json/issues/655) - how should I check a string is valid JSON string ? [\#653](https://github.com/nlohmann/json/issues/653) - Question: thread safety of read only accesses [\#651](https://github.com/nlohmann/json/issues/651) - Eclipse: Method 'size' could not be resolved [\#649](https://github.com/nlohmann/json/issues/649) - Update/Add object fields [\#648](https://github.com/nlohmann/json/issues/648) - No exception raised for Out Of Range input of numbers [\#647](https://github.com/nlohmann/json/issues/647) - Package Name [\#646](https://github.com/nlohmann/json/issues/646) - What is the meaning of operator\[\]\(T\* key\) [\#645](https://github.com/nlohmann/json/issues/645) - Which is the correct way to json objects as parameters to functions? [\#644](https://github.com/nlohmann/json/issues/644) - Method to get string representations of values [\#642](https://github.com/nlohmann/json/issues/642) - CBOR serialization of a given JSON value does not serialize [\#641](https://github.com/nlohmann/json/issues/641) - Are we forced to use "-fexceptions" flag in android ndk project [\#640](https://github.com/nlohmann/json/issues/640) - Comparison of objects containing floats [\#639](https://github.com/nlohmann/json/issues/639) - 'localeconv' is not supported by NDK for SDK \<=20 [\#638](https://github.com/nlohmann/json/issues/638) - \[Question\] cLion integration [\#637](https://github.com/nlohmann/json/issues/637) - How to construct an iteratable usage in nlohmann json? [\#636](https://github.com/nlohmann/json/issues/636) - \[Question\] copy assign json-container to vector [\#635](https://github.com/nlohmann/json/issues/635) - Get size without .dump\(\) [\#634](https://github.com/nlohmann/json/issues/634) - Segmentation fault when parsing invalid json file [\#633](https://github.com/nlohmann/json/issues/633) - How to serialize from json to vector\? [\#632](https://github.com/nlohmann/json/issues/632) - no member named 'thousands\_sep' in 'lconv' [\#631](https://github.com/nlohmann/json/issues/631) - \[Question\] Any fork for \(the unsupported\) Visual Studio 2012 version? [\#628](https://github.com/nlohmann/json/issues/628) - Dependency injection in serializer [\#627](https://github.com/nlohmann/json/issues/627) - from\_json for std::array [\#625](https://github.com/nlohmann/json/issues/625) - Discussion: How to structure the parsing function families [\#623](https://github.com/nlohmann/json/issues/623) - Question: How to erase subtree [\#622](https://github.com/nlohmann/json/issues/622) - Insertion into nested json field [\#621](https://github.com/nlohmann/json/issues/621) - Question: return static json object from function [\#618](https://github.com/nlohmann/json/issues/618) - icc16 error [\#617](https://github.com/nlohmann/json/issues/617) - \[-Wdeprecated-declarations\] in row `j >> ss;` in file `json.hpp:7405:26` and FAILED unit tests with MinGWx64! [\#616](https://github.com/nlohmann/json/issues/616) - to\_json for pairs, tuples [\#614](https://github.com/nlohmann/json/issues/614) - Using uninitialized memory 'buf' in line 11173 v2.1.1? [\#613](https://github.com/nlohmann/json/issues/613) - How to parse multiple same Keys of JSON and save them? [\#612](https://github.com/nlohmann/json/issues/612) - "Multiple declarations" error when using types defined with `typedef` [\#611](https://github.com/nlohmann/json/issues/611) - 2.1.1+ breaks compilation of shared\_ptr\ == 0 [\#610](https://github.com/nlohmann/json/issues/610) - a bug of inheritance ? [\#608](https://github.com/nlohmann/json/issues/608) - std::map key conversion with to\_json [\#607](https://github.com/nlohmann/json/issues/607) - json.hpp:6384:62: error: wrong number of template arguments \(1, should be 2\) [\#606](https://github.com/nlohmann/json/issues/606) - Incremental parsing: Where's the push version? [\#605](https://github.com/nlohmann/json/issues/605) - Is there a way to validate the structure of a json object ? [\#604](https://github.com/nlohmann/json/issues/604) - \[Question\] Issue when using Appveyor when compiling library [\#603](https://github.com/nlohmann/json/issues/603) - BOM not skipped when using json:parse\(iterator\) [\#602](https://github.com/nlohmann/json/issues/602) - Use of the binary type in CBOR and Message Pack [\#601](https://github.com/nlohmann/json/issues/601) - Newbie issue: how does one convert a map in Json back to std::map? [\#600](https://github.com/nlohmann/json/issues/600) - Plugin system [\#599](https://github.com/nlohmann/json/issues/599) - Using custom types for scalars? [\#596](https://github.com/nlohmann/json/issues/596) - Issues with the arithmetic in iterator and reverse iterator [\#593](https://github.com/nlohmann/json/issues/593) - not enough examples [\#592](https://github.com/nlohmann/json/issues/592) - in-class initialization for type 'const T' is not yet implemented [\#591](https://github.com/nlohmann/json/issues/591) - compiling with gcc 7 -\> error on bool operator \< [\#590](https://github.com/nlohmann/json/issues/590) - Parsing from stream leads to an array [\#589](https://github.com/nlohmann/json/issues/589) - Buggy support for binary string data [\#587](https://github.com/nlohmann/json/issues/587) - C++17's ambiguous conversion [\#586](https://github.com/nlohmann/json/issues/586) - How does the messagepack encoding/decoding compare to msgpack-cpp in terms of performance? [\#585](https://github.com/nlohmann/json/issues/585) - is it possible to check existence of a value deep in hierarchy? [\#584](https://github.com/nlohmann/json/issues/584) - loading from a stream and exceptions [\#582](https://github.com/nlohmann/json/issues/582) - Visual Studio seems not to have all min\(\) function versions [\#581](https://github.com/nlohmann/json/issues/581) - Supporting of the json schema [\#580](https://github.com/nlohmann/json/issues/580) - Stack-overflow \(OSS-Fuzz 1444\) [\#577](https://github.com/nlohmann/json/issues/577) - Heap-buffer-overflow \(OSS-Fuzz 1400\) [\#575](https://github.com/nlohmann/json/issues/575) - JSON escape quotes [\#574](https://github.com/nlohmann/json/issues/574) - error: static\_assert failed [\#573](https://github.com/nlohmann/json/issues/573) - Storing floats, and round trip serialisation/deserialisation diffs [\#572](https://github.com/nlohmann/json/issues/572) - JSON.getLong produces inconsistent results [\#571](https://github.com/nlohmann/json/issues/571) - Request: Object.at\(\) with default return value [\#570](https://github.com/nlohmann/json/issues/570) - Internal structure gets corrupted while parsing [\#569](https://github.com/nlohmann/json/issues/569) - create template \ basic\_json from\_cbor\(Iter begin, Iter end\) [\#568](https://github.com/nlohmann/json/issues/568) - Conan.io [\#566](https://github.com/nlohmann/json/issues/566) - contradictory documentation regarding json::find [\#565](https://github.com/nlohmann/json/issues/565) - Unexpected '\"' in middle of array [\#564](https://github.com/nlohmann/json/issues/564) - Support parse std::pair to Json object [\#563](https://github.com/nlohmann/json/issues/563) - json and Microsoft Visual c++ Compiler Nov 2012 CTP [\#562](https://github.com/nlohmann/json/issues/562) - from\_json declaration order and exceptions [\#561](https://github.com/nlohmann/json/issues/561) - Tip: Don't upgrade to VS2017 if using json initializer list constructs [\#559](https://github.com/nlohmann/json/issues/559) - parse error - unexpected end of input [\#558](https://github.com/nlohmann/json/issues/558) - Cant modify existing numbers inside a json object [\#557](https://github.com/nlohmann/json/issues/557) - Better support for SAX style serialize and deserialize in new version? [\#554](https://github.com/nlohmann/json/issues/554) - Cannot convert from json array to std::array [\#553](https://github.com/nlohmann/json/issues/553) - Do not define an unnamed namespace in a header file \(DCL59-CPP\) [\#552](https://github.com/nlohmann/json/issues/552) - Parse error on known good json file [\#551](https://github.com/nlohmann/json/issues/551) - Warning on Intel compiler \(icc 17\) [\#550](https://github.com/nlohmann/json/issues/550) - multiple versions of 'vsnprintf' [\#549](https://github.com/nlohmann/json/issues/549) - illegal indirection [\#548](https://github.com/nlohmann/json/issues/548) - Ambiguous compare operators with clang-5.0 [\#547](https://github.com/nlohmann/json/issues/547) - Using tsl::ordered\_map [\#546](https://github.com/nlohmann/json/issues/546) - Compiler support errors are inconvenient [\#544](https://github.com/nlohmann/json/issues/544) - Duplicate symbols error happens while to\_json/from\_json method implemented inside entity definition header file [\#542](https://github.com/nlohmann/json/issues/542) - consider adding a bool json::is\_valid\(std::string const&\) non-member function [\#541](https://github.com/nlohmann/json/issues/541) - Help request [\#539](https://github.com/nlohmann/json/issues/539) - How to deal with missing keys in `from_json`? [\#538](https://github.com/nlohmann/json/issues/538) - recursive from\_msgpack implementation will stack overflow [\#537](https://github.com/nlohmann/json/issues/537) - Exception objects must be nothrow copy constructible \(ERR60-CPP\) [\#531](https://github.com/nlohmann/json/issues/531) - Support for multiple root elements [\#529](https://github.com/nlohmann/json/issues/529) - Port has\_shape from dropbox/json11 [\#528](https://github.com/nlohmann/json/issues/528) - dump\_float: truncation from ptrdiff\_t to long [\#527](https://github.com/nlohmann/json/issues/527) - Make exception base class visible in basic\_json [\#525](https://github.com/nlohmann/json/issues/525) - msgpack unit test failures on ppc64 arch [\#524](https://github.com/nlohmann/json/issues/524) - How about split the implementation out, and only leave the interface? [\#523](https://github.com/nlohmann/json/issues/523) - VC++2017 not enough actual parameters for macro 'max' [\#522](https://github.com/nlohmann/json/issues/522) - crash on empty ifstream [\#521](https://github.com/nlohmann/json/issues/521) - Suggestion: Support tabs for indentation when serializing to stream. [\#520](https://github.com/nlohmann/json/issues/520) - Abrt in get\_number \(OSS-Fuzz 885\) [\#519](https://github.com/nlohmann/json/issues/519) - Abrt on unknown address \(OSS-Fuzz 884\) [\#518](https://github.com/nlohmann/json/issues/518) - Stack-overflow \(OSS-Fuzz 869\) [\#517](https://github.com/nlohmann/json/issues/517) - Assertion error \(OSS-Fuzz 868\) [\#516](https://github.com/nlohmann/json/issues/516) - NaN to json and back [\#515](https://github.com/nlohmann/json/issues/515) - Comparison of NaN [\#514](https://github.com/nlohmann/json/issues/514) - why it's not possible to serialize c++11 enums directly [\#513](https://github.com/nlohmann/json/issues/513) - clang compile error: use of overloaded operator '\<=' is ambiguous with \(nlohmann::json{{"a", 5}}\)\["a"\] \<= 10 [\#512](https://github.com/nlohmann/json/issues/512) - Why not also look inside the type for \(static\) to\_json and from\_json funtions? [\#511](https://github.com/nlohmann/json/issues/511) - Parser issues [\#509](https://github.com/nlohmann/json/issues/509) - I may not understand [\#507](https://github.com/nlohmann/json/issues/507) - VS2017 min / max problem for 2.1.1 [\#506](https://github.com/nlohmann/json/issues/506) - CBOR/MessagePack is not read until the end [\#505](https://github.com/nlohmann/json/issues/505) - Assertion error \(OSS-Fuzz 856\) [\#504](https://github.com/nlohmann/json/issues/504) - Return position in parse error exceptions [\#503](https://github.com/nlohmann/json/issues/503) - conversion from/to C array is not supported [\#502](https://github.com/nlohmann/json/issues/502) - error C2338: could not find to\_json\(\) method in T's namespace [\#501](https://github.com/nlohmann/json/issues/501) - Test suite fails in en\_GB.UTF-8 [\#500](https://github.com/nlohmann/json/issues/500) - cannot use operator\[\] with number [\#499](https://github.com/nlohmann/json/issues/499) - consider using \_\_cpp\_exceptions and/or \_\_EXCEPTIONS to disable/enable exception support [\#498](https://github.com/nlohmann/json/issues/498) - Stack-overflow \(OSS-Fuzz issue 814\) [\#497](https://github.com/nlohmann/json/issues/497) - Using in Unreal Engine - handling custom types conversion [\#495](https://github.com/nlohmann/json/issues/495) - Conversion from vector\ to json fails to build [\#494](https://github.com/nlohmann/json/issues/494) - fill\_line\_buffer incorrectly tests m\_stream for eof but not fail or bad bits [\#493](https://github.com/nlohmann/json/issues/493) - Compiling with \_GLIBCXX\_DEBUG yields iterator-comparison warnings during tests [\#492](https://github.com/nlohmann/json/issues/492) - crapy interface [\#491](https://github.com/nlohmann/json/issues/491) - Fix Visual Studo 2013 builds. [\#490](https://github.com/nlohmann/json/issues/490) - Failed to compile with -D\_GLIBCXX\_PARALLEL [\#489](https://github.com/nlohmann/json/issues/489) - Input several field with the same name [\#488](https://github.com/nlohmann/json/issues/488) - read in .json file yields strange sizes [\#487](https://github.com/nlohmann/json/issues/487) - json::value\_t can't be a map's key type in VC++ 2015 [\#486](https://github.com/nlohmann/json/issues/486) - Using fifo\_map [\#485](https://github.com/nlohmann/json/issues/485) - Cannot get float pointer for value stored as `0` [\#484](https://github.com/nlohmann/json/issues/484) - byte string support [\#483](https://github.com/nlohmann/json/issues/483) - https://github.com/nlohmann/json\#execute-unit-tests [\#481](https://github.com/nlohmann/json/issues/481) - Remove deprecated constructor basic\_json\(std::istream&\) [\#480](https://github.com/nlohmann/json/issues/480) - writing the binary json file? [\#479](https://github.com/nlohmann/json/issues/479) - CBOR/MessagePack from uint8\_t \* and size [\#478](https://github.com/nlohmann/json/issues/478) - Streaming binary representations [\#477](https://github.com/nlohmann/json/issues/477) - Reuse memory in to\_cbor and to\_msgpack functions [\#476](https://github.com/nlohmann/json/issues/476) - Error Using JSON Library with arrays C++ [\#475](https://github.com/nlohmann/json/issues/475) - Moving forward to version 3.0.0 [\#474](https://github.com/nlohmann/json/issues/474) - Inconsistent behavior in conversion to array type [\#473](https://github.com/nlohmann/json/issues/473) - Create a \[key:member\_pointer\] map to ease parsing custom types [\#471](https://github.com/nlohmann/json/issues/471) - MSVC 2015 update 2 [\#469](https://github.com/nlohmann/json/issues/469) - VS2017 implicit to std::string conversion fix. [\#464](https://github.com/nlohmann/json/issues/464) - How to make sure a string or string literal is a valid JSON? [\#458](https://github.com/nlohmann/json/issues/458) - basic\_json templated on a "policy" class [\#456](https://github.com/nlohmann/json/issues/456) - json::value\(const json\_pointer&, ValueType\) requires exceptions to return the default value. [\#440](https://github.com/nlohmann/json/issues/440) - is it possible merge two json object [\#428](https://github.com/nlohmann/json/issues/428) - Is it possible to turn this into a shared library? [\#420](https://github.com/nlohmann/json/issues/420) - Further thoughts on performance improvements [\#418](https://github.com/nlohmann/json/issues/418) - nan number stored as null [\#388](https://github.com/nlohmann/json/issues/388) - Behavior of operator\>\> should more closely resemble that of built-in overloads. [\#367](https://github.com/nlohmann/json/issues/367) - Request: range-based-for over a json-object to expose .first/.second [\#350](https://github.com/nlohmann/json/issues/350) - feature wish: JSONPath [\#343](https://github.com/nlohmann/json/issues/343) - UTF-8/Unicode escape and dump [\#330](https://github.com/nlohmann/json/issues/330) - Serialized value not always can be parsed. [\#329](https://github.com/nlohmann/json/issues/329) - Is there a way to forward declare nlohmann::json? [\#314](https://github.com/nlohmann/json/issues/314) - Exception line [\#301](https://github.com/nlohmann/json/issues/301) - Do not throw exception when default\_value's type does not match the actual type [\#278](https://github.com/nlohmann/json/issues/278) - dump\(\) method doesn't work with a custom allocator [\#268](https://github.com/nlohmann/json/issues/268) - Readme documentation enhancements [\#248](https://github.com/nlohmann/json/issues/248) - Use user-defined exceptions [\#244](https://github.com/nlohmann/json/issues/244) - Incorrect C++11 allocator model support [\#161](https://github.com/nlohmann/json/issues/161) - :white\_check\_mark: re-added tests for algorithms [\#879](https://github.com/nlohmann/json/pull/879) ([nlohmann](https://github.com/nlohmann)) - Overworked library toward 3.0.0 release [\#875](https://github.com/nlohmann/json/pull/875) ([nlohmann](https://github.com/nlohmann)) - :rotating\_light: remove C4996 warnings \#872 [\#873](https://github.com/nlohmann/json/pull/873) ([nlohmann](https://github.com/nlohmann)) - :boom: throwing an exception in case dump encounters a non-UTF-8 string \#838 [\#870](https://github.com/nlohmann/json/pull/870) ([nlohmann](https://github.com/nlohmann)) - :memo: fixing documentation \#867 [\#868](https://github.com/nlohmann/json/pull/868) ([nlohmann](https://github.com/nlohmann)) - iter\_impl template conformance with C++17 [\#860](https://github.com/nlohmann/json/pull/860) ([bogemic](https://github.com/bogemic)) - Std allocator conformance cpp17 [\#856](https://github.com/nlohmann/json/pull/856) ([bogemic](https://github.com/bogemic)) - cmake: use BUILD\_INTERFACE/INSTALL\_INTERFACE [\#855](https://github.com/nlohmann/json/pull/855) ([theodelrieu](https://github.com/theodelrieu)) - to/from\_json: add a MSVC-specific static\_assert to force a stacktrace [\#854](https://github.com/nlohmann/json/pull/854) ([theodelrieu](https://github.com/theodelrieu)) - Add .natvis for MSVC debug view [\#844](https://github.com/nlohmann/json/pull/844) ([TinyTinni](https://github.com/TinyTinni)) - Updated hunter package links [\#829](https://github.com/nlohmann/json/pull/829) ([jowr](https://github.com/jowr)) - Typos README [\#811](https://github.com/nlohmann/json/pull/811) ([Itja](https://github.com/Itja)) - add forwarding references to json\_ref constructor [\#807](https://github.com/nlohmann/json/pull/807) ([theodelrieu](https://github.com/theodelrieu)) - Add transparent comparator and perfect forwarding support to find\(\) and count\(\) [\#795](https://github.com/nlohmann/json/pull/795) ([jseward](https://github.com/jseward)) - Error : 'identifier "size\_t" is undefined' in linux [\#793](https://github.com/nlohmann/json/pull/793) ([sonulohani](https://github.com/sonulohani)) - Fix Visual Studio 2017 warnings [\#788](https://github.com/nlohmann/json/pull/788) ([jseward](https://github.com/jseward)) - Fix warning C4706 on Visual Studio 2017 [\#785](https://github.com/nlohmann/json/pull/785) ([jseward](https://github.com/jseward)) - Set GENERATE\_TAGFILE in Doxyfile [\#783](https://github.com/nlohmann/json/pull/783) ([eld00d](https://github.com/eld00d)) - using more CMake [\#765](https://github.com/nlohmann/json/pull/765) ([nlohmann](https://github.com/nlohmann)) - Simplified istream handing \#367 [\#764](https://github.com/nlohmann/json/pull/764) ([pjkundert](https://github.com/pjkundert)) - Add info for the vcpkg package. [\#753](https://github.com/nlohmann/json/pull/753) ([gregmarr](https://github.com/gregmarr)) - fix from\_json implementation for pair/tuple [\#708](https://github.com/nlohmann/json/pull/708) ([theodelrieu](https://github.com/theodelrieu)) - Update json.hpp [\#686](https://github.com/nlohmann/json/pull/686) ([GoWebProd](https://github.com/GoWebProd)) - Remove duplicate word [\#685](https://github.com/nlohmann/json/pull/685) ([daixtrose](https://github.com/daixtrose)) - To fix compilation issue for intel OSX compiler [\#682](https://github.com/nlohmann/json/pull/682) ([kbthomp1](https://github.com/kbthomp1)) - Digraph warning [\#679](https://github.com/nlohmann/json/pull/679) ([traits](https://github.com/traits)) - massage -\> message [\#678](https://github.com/nlohmann/json/pull/678) ([DmitryKuk](https://github.com/DmitryKuk)) - Fix "not constraint" grammar in docs [\#674](https://github.com/nlohmann/json/pull/674) ([wincent](https://github.com/wincent)) - Add documentation for integration with CMake and hunter [\#671](https://github.com/nlohmann/json/pull/671) ([dan-42](https://github.com/dan-42)) - REFACTOR: rewrite CMakeLists.txt for better inlcude and reuse [\#669](https://github.com/nlohmann/json/pull/669) ([dan-42](https://github.com/dan-42)) - enable\_testing only if the JSON\_BuildTests is ON [\#666](https://github.com/nlohmann/json/pull/666) ([effolkronium](https://github.com/effolkronium)) - Support moving from rvalues in std::initializer\_list [\#663](https://github.com/nlohmann/json/pull/663) ([himikof](https://github.com/himikof)) - add ensure\_ascii parameter to dump. \#330 [\#654](https://github.com/nlohmann/json/pull/654) ([ryanjmulder](https://github.com/ryanjmulder)) - Rename BuildTests to JSON\_BuildTests [\#652](https://github.com/nlohmann/json/pull/652) ([olegendo](https://github.com/olegendo)) - Don't include \, use std::make\_shared [\#650](https://github.com/nlohmann/json/pull/650) ([olegendo](https://github.com/olegendo)) - Refacto/split basic json [\#643](https://github.com/nlohmann/json/pull/643) ([theodelrieu](https://github.com/theodelrieu)) - fix typo in operator\_\_notequal example [\#630](https://github.com/nlohmann/json/pull/630) ([Chocobo1](https://github.com/Chocobo1)) - Fix MSVC warning C4819 [\#629](https://github.com/nlohmann/json/pull/629) ([Chocobo1](https://github.com/Chocobo1)) - \[BugFix\] Add parentheses around std::min [\#626](https://github.com/nlohmann/json/pull/626) ([koemeet](https://github.com/koemeet)) - add pair/tuple conversions [\#624](https://github.com/nlohmann/json/pull/624) ([theodelrieu](https://github.com/theodelrieu)) - remove std::pair support [\#615](https://github.com/nlohmann/json/pull/615) ([theodelrieu](https://github.com/theodelrieu)) - Add pair support, fix CompatibleObject conversions \(fixes \#600\) [\#609](https://github.com/nlohmann/json/pull/609) ([theodelrieu](https://github.com/theodelrieu)) - \#550 Fix iterator related compiling issues for Intel icc [\#598](https://github.com/nlohmann/json/pull/598) ([HenryRLee](https://github.com/HenryRLee)) - Issue \#593 Fix the arithmetic operators in the iterator and reverse iterator [\#595](https://github.com/nlohmann/json/pull/595) ([HenryRLee](https://github.com/HenryRLee)) - fix doxygen error of basic\_json::get\(\) [\#583](https://github.com/nlohmann/json/pull/583) ([zhaohuaxishi](https://github.com/zhaohuaxishi)) - Fixing assignement for iterator wrapper second, and adding unit test [\#579](https://github.com/nlohmann/json/pull/579) ([Type1J](https://github.com/Type1J)) - Adding first and second properties to iteration\_proxy\_internal [\#578](https://github.com/nlohmann/json/pull/578) ([Type1J](https://github.com/Type1J)) - Adding support for Meson. [\#576](https://github.com/nlohmann/json/pull/576) ([Type1J](https://github.com/Type1J)) - add enum class default conversions [\#545](https://github.com/nlohmann/json/pull/545) ([theodelrieu](https://github.com/theodelrieu)) - Properly pop diagnostics [\#540](https://github.com/nlohmann/json/pull/540) ([tinloaf](https://github.com/tinloaf)) - Add Visual Studio 17 image to appveyor build matrix [\#536](https://github.com/nlohmann/json/pull/536) ([vpetrigo](https://github.com/vpetrigo)) - UTF8 encoding enhancement [\#534](https://github.com/nlohmann/json/pull/534) ([TedLyngmo](https://github.com/TedLyngmo)) - Fix typo [\#530](https://github.com/nlohmann/json/pull/530) ([berkus](https://github.com/berkus)) - Make exception base class visible in basic\_json [\#526](https://github.com/nlohmann/json/pull/526) ([ghost](https://github.com/ghost)) - :art: Namespace `uint8_t` from the C++ stdlib [\#510](https://github.com/nlohmann/json/pull/510) ([alexweej](https://github.com/alexweej)) - add to\_json method for C arrays [\#508](https://github.com/nlohmann/json/pull/508) ([theodelrieu](https://github.com/theodelrieu)) - Fix -Weffc++ warnings \(GNU 6.3.1\) [\#496](https://github.com/nlohmann/json/pull/496) ([TedLyngmo](https://github.com/TedLyngmo)) ## [v2.1.1](https://github.com/nlohmann/json/releases/tag/v2.1.1) (2017-02-25) [Full Changelog](https://github.com/nlohmann/json/compare/2.1.1...v2.1.1) ## [2.1.1](https://github.com/nlohmann/json/releases/tag/2.1.1) (2017-02-25) [Full Changelog](https://github.com/nlohmann/json/compare/v2.1.0...2.1.1) - warning in the library [\#472](https://github.com/nlohmann/json/issues/472) - How to create an array of Objects? [\#470](https://github.com/nlohmann/json/issues/470) - \[Bug?\] Cannot get int pointer, but int64\_t works [\#468](https://github.com/nlohmann/json/issues/468) - Illegal indirection [\#467](https://github.com/nlohmann/json/issues/467) - in vs can't find linkageId [\#466](https://github.com/nlohmann/json/issues/466) - Roundtrip error while parsing "1000000000000000010E5" [\#465](https://github.com/nlohmann/json/issues/465) - C4996 error and warning with Visual Studio [\#463](https://github.com/nlohmann/json/issues/463) - Support startIndex for from\_cbor/from\_msgpack [\#462](https://github.com/nlohmann/json/issues/462) - question: monospace font used in feature slideshow? [\#460](https://github.com/nlohmann/json/issues/460) - Object.keys\(\) [\#459](https://github.com/nlohmann/json/issues/459) - Use “, “ as delimiter for json-objects. [\#457](https://github.com/nlohmann/json/issues/457) - Enum -\> string during serialization and vice versa [\#455](https://github.com/nlohmann/json/issues/455) - doubles are printed as integers [\#454](https://github.com/nlohmann/json/issues/454) - Warnings with Visual Studio c++ \(VS2015 Update 3\) [\#453](https://github.com/nlohmann/json/issues/453) - Heap-buffer-overflow \(OSS-Fuzz issue 585\) [\#452](https://github.com/nlohmann/json/issues/452) - use of undeclared identifier 'UINT8\_MAX' [\#451](https://github.com/nlohmann/json/issues/451) - Question on the lifetime managment of objects at the lower levels [\#449](https://github.com/nlohmann/json/issues/449) - Json should not be constructible with 'json\*' [\#448](https://github.com/nlohmann/json/issues/448) - Move value\_t to namespace scope [\#447](https://github.com/nlohmann/json/issues/447) - Typo in README.md [\#446](https://github.com/nlohmann/json/issues/446) - make check compilation is unneccesarily slow [\#445](https://github.com/nlohmann/json/issues/445) - Problem in dump\(\) in json.h caused by ss.imbue [\#444](https://github.com/nlohmann/json/issues/444) - I want to create Windows Application in Visual Studio 2015 c++, and i have a problem [\#443](https://github.com/nlohmann/json/issues/443) - Implicit conversion issues [\#442](https://github.com/nlohmann/json/issues/442) - Parsing of floats locale dependent [\#302](https://github.com/nlohmann/json/issues/302) - Speedup CI builds using cotire [\#461](https://github.com/nlohmann/json/pull/461) ([tusharpm](https://github.com/tusharpm)) - TurpentineDistillery feature/locale independent str to num [\#450](https://github.com/nlohmann/json/pull/450) ([nlohmann](https://github.com/nlohmann)) - README: adjust boost::optional example [\#439](https://github.com/nlohmann/json/pull/439) ([jaredgrubb](https://github.com/jaredgrubb)) - fix \#414 - comparing to 0 literal [\#415](https://github.com/nlohmann/json/pull/415) ([stanmihai4](https://github.com/stanmihai4)) - locale-independent num-to-str [\#378](https://github.com/nlohmann/json/pull/378) ([TurpentineDistillery](https://github.com/TurpentineDistillery)) ## [v2.1.0](https://github.com/nlohmann/json/releases/tag/v2.1.0) (2017-01-28) [Full Changelog](https://github.com/nlohmann/json/compare/2.1.0...v2.1.0) ## [2.1.0](https://github.com/nlohmann/json/releases/tag/2.1.0) (2017-01-28) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.10...2.1.0) - Parsing multiple JSON objects from a string or stream [\#438](https://github.com/nlohmann/json/issues/438) - Use-of-uninitialized-value \(OSS-Fuzz issue 477\) [\#437](https://github.com/nlohmann/json/issues/437) - add `reserve` function for array to reserve memory before adding json values into it [\#436](https://github.com/nlohmann/json/issues/436) - Typo in examples page [\#434](https://github.com/nlohmann/json/issues/434) - avoid malformed json [\#433](https://github.com/nlohmann/json/issues/433) - How to add json objects to a map? [\#432](https://github.com/nlohmann/json/issues/432) - create json instance from raw json \(unsigned char\*\) [\#431](https://github.com/nlohmann/json/issues/431) - Getting std::invalid\_argument: stream error when following example [\#429](https://github.com/nlohmann/json/issues/429) - Forward declare-only header? [\#427](https://github.com/nlohmann/json/issues/427) - Implicit conversion from array to object [\#425](https://github.com/nlohmann/json/issues/425) - error C4996: 'strerror' when reading file [\#422](https://github.com/nlohmann/json/issues/422) - Get an error - JSON pointer must be empty or begin with '/' [\#421](https://github.com/nlohmann/json/issues/421) - size parameter for parse\(\) [\#419](https://github.com/nlohmann/json/issues/419) - json.hpp forcibly defines GCC\_VERSION [\#417](https://github.com/nlohmann/json/issues/417) - Use-of-uninitialized-value \(OSS-Fuzz issue 377\) [\#416](https://github.com/nlohmann/json/issues/416) - comparing to 0 literal [\#414](https://github.com/nlohmann/json/issues/414) - Single char converted to ASCII code instead of string [\#413](https://github.com/nlohmann/json/issues/413) - How to know if a string was parsed as utf-8? [\#406](https://github.com/nlohmann/json/issues/406) - Overloaded += to add objects to an array makes no sense? [\#404](https://github.com/nlohmann/json/issues/404) - Finding a value in an array [\#399](https://github.com/nlohmann/json/issues/399) - add release information in static function [\#397](https://github.com/nlohmann/json/issues/397) - Optimize memory usage of json objects in combination with binary serialization [\#373](https://github.com/nlohmann/json/issues/373) - Conversion operators not considered [\#369](https://github.com/nlohmann/json/issues/369) - Append ".0" to serialized floating\_point values that are digits-only. [\#362](https://github.com/nlohmann/json/issues/362) - Add a customization point for user-defined types [\#328](https://github.com/nlohmann/json/issues/328) - Conformance report for reference [\#307](https://github.com/nlohmann/json/issues/307) - Document the best way to serialize/deserialize user defined types to json [\#298](https://github.com/nlohmann/json/issues/298) - Add StringView template typename to basic\_json [\#297](https://github.com/nlohmann/json/issues/297) - \[Improvement\] Add option to remove exceptions [\#296](https://github.com/nlohmann/json/issues/296) - Performance in miloyip/nativejson-benchmark [\#202](https://github.com/nlohmann/json/issues/202) - conversion from/to user-defined types [\#435](https://github.com/nlohmann/json/pull/435) ([nlohmann](https://github.com/nlohmann)) - Fix documentation error [\#430](https://github.com/nlohmann/json/pull/430) ([vjon](https://github.com/vjon)) ## [v2.0.10](https://github.com/nlohmann/json/releases/tag/v2.0.10) (2017-01-02) [Full Changelog](https://github.com/nlohmann/json/compare/2.0.10...v2.0.10) ## [2.0.10](https://github.com/nlohmann/json/releases/tag/2.0.10) (2017-01-02) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.9...2.0.10) - Heap-buffer-overflow \(OSS-Fuzz issue 367\) [\#412](https://github.com/nlohmann/json/issues/412) - Heap-buffer-overflow \(OSS-Fuzz issue 366\) [\#411](https://github.com/nlohmann/json/issues/411) - Use-of-uninitialized-value \(OSS-Fuzz issue 347\) [\#409](https://github.com/nlohmann/json/issues/409) - Heap-buffer-overflow \(OSS-Fuzz issue 344\) [\#408](https://github.com/nlohmann/json/issues/408) - Heap-buffer-overflow \(OSS-Fuzz issue 343\) [\#407](https://github.com/nlohmann/json/issues/407) - Heap-buffer-overflow \(OSS-Fuzz issue 342\) [\#405](https://github.com/nlohmann/json/issues/405) - strerror throwing error in compiler VS2015 [\#403](https://github.com/nlohmann/json/issues/403) - json::parse of std::string being underlined by Visual Studio [\#402](https://github.com/nlohmann/json/issues/402) - Explicitly getting string without .dump\(\) [\#401](https://github.com/nlohmann/json/issues/401) - Possible to speed up json::parse? [\#398](https://github.com/nlohmann/json/issues/398) - the alphabetic order in the code influence console\_output. [\#396](https://github.com/nlohmann/json/issues/396) - Execute tests with clang sanitizers [\#394](https://github.com/nlohmann/json/issues/394) - Check if library can be used with ETL [\#361](https://github.com/nlohmann/json/issues/361) - Feature/clang sanitize [\#410](https://github.com/nlohmann/json/pull/410) ([Daniel599](https://github.com/Daniel599)) - Add Doozer build badge [\#400](https://github.com/nlohmann/json/pull/400) ([andoma](https://github.com/andoma)) ## [v2.0.9](https://github.com/nlohmann/json/releases/tag/v2.0.9) (2016-12-16) [Full Changelog](https://github.com/nlohmann/json/compare/2.0.9...v2.0.9) ## [2.0.9](https://github.com/nlohmann/json/releases/tag/2.0.9) (2016-12-16) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.8...2.0.9) - \#pragma GCC diagnostic ignored "-Wdocumentation" [\#393](https://github.com/nlohmann/json/issues/393) - How to parse this json file and write separate sub object as json files? [\#392](https://github.com/nlohmann/json/issues/392) - Integer-overflow \(OSS-Fuzz issue 267\) [\#389](https://github.com/nlohmann/json/issues/389) - Implement indefinite-length types from RFC 7049 [\#387](https://github.com/nlohmann/json/issues/387) - template parameter "T" is not used in declaring the parameter types of function template [\#386](https://github.com/nlohmann/json/issues/386) - Serializing json instances containing already serialized string values without escaping [\#385](https://github.com/nlohmann/json/issues/385) - Add test cases from RFC 7049 [\#384](https://github.com/nlohmann/json/issues/384) - Add a table of contents to the README file [\#383](https://github.com/nlohmann/json/issues/383) - Update FAQ section in the guidelines for contributing [\#382](https://github.com/nlohmann/json/issues/382) - Allow for forward declaring nlohmann::json [\#381](https://github.com/nlohmann/json/issues/381) - Bug in overflow detection when parsing integers [\#380](https://github.com/nlohmann/json/issues/380) - A unique name to mention the library? [\#377](https://github.com/nlohmann/json/issues/377) - Non-unique keys in objects. [\#375](https://github.com/nlohmann/json/issues/375) - Request: binary serialization/deserialization [\#358](https://github.com/nlohmann/json/issues/358) - Replace class iterator and const\_iterator by using a single template class to reduce code. [\#395](https://github.com/nlohmann/json/pull/395) ([Bosswestfalen](https://github.com/Bosswestfalen)) - Clang: quiet a warning [\#391](https://github.com/nlohmann/json/pull/391) ([jaredgrubb](https://github.com/jaredgrubb)) - Fix issue \#380: Signed integer overflow check [\#390](https://github.com/nlohmann/json/pull/390) ([qwename](https://github.com/qwename)) ## [v2.0.8](https://github.com/nlohmann/json/releases/tag/v2.0.8) (2016-12-02) [Full Changelog](https://github.com/nlohmann/json/compare/2.0.8...v2.0.8) ## [2.0.8](https://github.com/nlohmann/json/releases/tag/2.0.8) (2016-12-02) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.7...2.0.8) - Reading from file [\#374](https://github.com/nlohmann/json/issues/374) - Compiler warnings? [\#372](https://github.com/nlohmann/json/issues/372) - docs: how to release a json object in memory? [\#371](https://github.com/nlohmann/json/issues/371) - crash in dump [\#370](https://github.com/nlohmann/json/issues/370) - Coverity issue \(FORWARD\_NULL\) in lexer\(std::istream& s\) [\#368](https://github.com/nlohmann/json/issues/368) - json::parse on failed stream gets stuck [\#366](https://github.com/nlohmann/json/issues/366) - Performance improvements [\#365](https://github.com/nlohmann/json/issues/365) - 'to\_string' is not a member of 'std' [\#364](https://github.com/nlohmann/json/issues/364) - Crash in dump\(\) from a static object [\#359](https://github.com/nlohmann/json/issues/359) - json::parse\(...\) vs json j; j.parse\(...\) [\#357](https://github.com/nlohmann/json/issues/357) - Hi, is there any method to dump json to string with the insert order rather than alphabets [\#356](https://github.com/nlohmann/json/issues/356) - Provide an example of reading from an json with only a key that has an array of strings. [\#354](https://github.com/nlohmann/json/issues/354) - Request: access with default value. [\#353](https://github.com/nlohmann/json/issues/353) - {} and \[\] causes parser error. [\#352](https://github.com/nlohmann/json/issues/352) - Reading a JSON file into a JSON object [\#351](https://github.com/nlohmann/json/issues/351) - Request: 'emplace\_back' [\#349](https://github.com/nlohmann/json/issues/349) - Is it possible to stream data through the json parser without storing everything in memory? [\#347](https://github.com/nlohmann/json/issues/347) - pure virtual conversion operator [\#346](https://github.com/nlohmann/json/issues/346) - Floating point precision lost [\#345](https://github.com/nlohmann/json/issues/345) - unit-conversions SIGSEGV on armv7hl [\#303](https://github.com/nlohmann/json/issues/303) - Coverity scan fails [\#299](https://github.com/nlohmann/json/issues/299) - Using QString as string type [\#274](https://github.com/nlohmann/json/issues/274) ## [v2.0.7](https://github.com/nlohmann/json/releases/tag/v2.0.7) (2016-11-02) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.6...v2.0.7) - JSON5 [\#348](https://github.com/nlohmann/json/issues/348) - Check "Parsing JSON is a Minefield" [\#344](https://github.com/nlohmann/json/issues/344) - Allow hex numbers [\#342](https://github.com/nlohmann/json/issues/342) - Convert strings to numbers [\#341](https://github.com/nlohmann/json/issues/341) - ""-operators ignore the length parameter [\#340](https://github.com/nlohmann/json/issues/340) - JSON into std::tuple [\#339](https://github.com/nlohmann/json/issues/339) - JSON into vector [\#335](https://github.com/nlohmann/json/issues/335) - Installing with Homebrew on Mac Errors \(El Capitan\) [\#331](https://github.com/nlohmann/json/issues/331) - g++ make check results in error [\#312](https://github.com/nlohmann/json/issues/312) - Cannot convert from 'json' to 'char' [\#276](https://github.com/nlohmann/json/issues/276) - Please add a Pretty-Print option for arrays to stay always in one line [\#229](https://github.com/nlohmann/json/issues/229) - Conversion to STL map\\> gives error [\#220](https://github.com/nlohmann/json/issues/220) - std::unorderd\_map cannot be used as ObjectType [\#164](https://github.com/nlohmann/json/issues/164) - fix minor grammar/style issue in README.md [\#336](https://github.com/nlohmann/json/pull/336) ([seeekr](https://github.com/seeekr)) ## [v2.0.6](https://github.com/nlohmann/json/releases/tag/v2.0.6) (2016-10-15) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.5...v2.0.6) - How to handle json files? [\#333](https://github.com/nlohmann/json/issues/333) - This file requires compiler and library support .... [\#332](https://github.com/nlohmann/json/issues/332) - Segmentation fault on saving json to file [\#326](https://github.com/nlohmann/json/issues/326) - parse error - unexpected \ with 2.0.5 [\#325](https://github.com/nlohmann/json/issues/325) - Add nested object capability to pointers [\#323](https://github.com/nlohmann/json/issues/323) - Fix usage examples' comments for std::multiset [\#322](https://github.com/nlohmann/json/issues/322) - json\_unit runs forever when executed in build directory [\#319](https://github.com/nlohmann/json/issues/319) - Visual studio 2015 update3 true != TRUE [\#317](https://github.com/nlohmann/json/issues/317) - releasing single header file in compressed format [\#316](https://github.com/nlohmann/json/issues/316) - json object from std::ifstream [\#315](https://github.com/nlohmann/json/issues/315) - make has\_mapped\_type struct friendly [\#324](https://github.com/nlohmann/json/pull/324) ([vpetrigo](https://github.com/vpetrigo)) - Fix usage examples' comments for std::multiset [\#321](https://github.com/nlohmann/json/pull/321) ([vasild](https://github.com/vasild)) - Include dir relocation [\#318](https://github.com/nlohmann/json/pull/318) ([ChristophJud](https://github.com/ChristophJud)) - trivial documentation fix [\#313](https://github.com/nlohmann/json/pull/313) ([5tefan](https://github.com/5tefan)) ## [v2.0.5](https://github.com/nlohmann/json/releases/tag/v2.0.5) (2016-09-14) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.4...v2.0.5) - \[feature request\]: schema validator and comments [\#311](https://github.com/nlohmann/json/issues/311) - make json\_benchmarks no longer working in 2.0.4 [\#310](https://github.com/nlohmann/json/issues/310) - Segmentation fault \(core dumped\) [\#309](https://github.com/nlohmann/json/issues/309) - No matching member function for call to 'get\_impl' [\#308](https://github.com/nlohmann/json/issues/308) ## [v2.0.4](https://github.com/nlohmann/json/releases/tag/v2.0.4) (2016-09-11) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.3...v2.0.4) - Parsing fails without space at end of file [\#306](https://github.com/nlohmann/json/issues/306) - json schema validator [\#305](https://github.com/nlohmann/json/issues/305) - Unused variable warning [\#304](https://github.com/nlohmann/json/issues/304) ## [v2.0.3](https://github.com/nlohmann/json/releases/tag/v2.0.3) (2016-08-31) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.2...v2.0.3) - warning C4706: assignment within conditional expression [\#295](https://github.com/nlohmann/json/issues/295) - Q: Is it possible to build json tree from already UTF8 encoded values? [\#293](https://github.com/nlohmann/json/issues/293) - Equality operator results in array when assigned object [\#292](https://github.com/nlohmann/json/issues/292) - Support for integers not from the range \[-\(2\*\*53\)+1, \(2\*\*53\)-1\] in parser [\#291](https://github.com/nlohmann/json/issues/291) - Support for iterator-range parsing [\#290](https://github.com/nlohmann/json/issues/290) - Horribly inconsistent behavior between const/non-const reference in operator \[\] \(\) [\#289](https://github.com/nlohmann/json/issues/289) - Silently get numbers into smaller types [\#288](https://github.com/nlohmann/json/issues/288) - Incorrect parsing of large int64\_t numbers [\#287](https://github.com/nlohmann/json/issues/287) - \[question\]: macro to disable floating point support [\#284](https://github.com/nlohmann/json/issues/284) - unit-constructor1.cpp: Fix floating point truncation warning [\#300](https://github.com/nlohmann/json/pull/300) ([t-b](https://github.com/t-b)) ## [v2.0.2](https://github.com/nlohmann/json/releases/tag/v2.0.2) (2016-07-31) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.1...v2.0.2) - can function dump\(\) return string in the order I push in the json object ? [\#286](https://github.com/nlohmann/json/issues/286) - Error on the Mac: Undefined symbols for architecture x86\_64 [\#285](https://github.com/nlohmann/json/issues/285) - value\(\) does not work with \_json\_pointer types [\#283](https://github.com/nlohmann/json/issues/283) - Build error for std::int64 [\#282](https://github.com/nlohmann/json/issues/282) - strings can't be accessed after dump\(\)-\>parse\(\) - type is lost [\#281](https://github.com/nlohmann/json/issues/281) - Easy serialization of classes [\#280](https://github.com/nlohmann/json/issues/280) - recursive data structures [\#277](https://github.com/nlohmann/json/issues/277) - hexify\(\) function emits conversion warning [\#270](https://github.com/nlohmann/json/issues/270) - let the makefile choose the correct sed [\#279](https://github.com/nlohmann/json/pull/279) ([murinicanor](https://github.com/murinicanor)) - Update hexify to use array lookup instead of ternary \(\#270\) [\#275](https://github.com/nlohmann/json/pull/275) ([dtoma](https://github.com/dtoma)) ## [v2.0.1](https://github.com/nlohmann/json/releases/tag/v2.0.1) (2016-06-28) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.0...v2.0.1) - Compilation error. [\#273](https://github.com/nlohmann/json/issues/273) - dump\(\) performance degradation in v2 [\#272](https://github.com/nlohmann/json/issues/272) - fixed a tiny typo [\#271](https://github.com/nlohmann/json/pull/271) ([feroldi](https://github.com/feroldi)) ## [v2.0.0](https://github.com/nlohmann/json/releases/tag/v2.0.0) (2016-06-23) [Full Changelog](https://github.com/nlohmann/json/compare/v1.1.0...v2.0.0) - json::diff generates incorrect patch when removing multiple array elements. [\#269](https://github.com/nlohmann/json/issues/269) - Docs - What does Json\[key\] return? [\#267](https://github.com/nlohmann/json/issues/267) - Compiler Errors With JSON.hpp [\#265](https://github.com/nlohmann/json/issues/265) - Ambiguous push\_back and operator+= overloads [\#263](https://github.com/nlohmann/json/issues/263) - Preseving order of items in json [\#262](https://github.com/nlohmann/json/issues/262) - '\' char problem in strings [\#261](https://github.com/nlohmann/json/issues/261) - VS2015 compile fail [\#260](https://github.com/nlohmann/json/issues/260) - -Wconversion warning [\#259](https://github.com/nlohmann/json/issues/259) - Maybe a bug [\#258](https://github.com/nlohmann/json/issues/258) - Few tests failed on Visual C++ 2015 [\#257](https://github.com/nlohmann/json/issues/257) - Access keys when iteration with new for loop C++11 [\#256](https://github.com/nlohmann/json/issues/256) - multiline text values [\#255](https://github.com/nlohmann/json/issues/255) - Error when using json in g++ [\#254](https://github.com/nlohmann/json/issues/254) - is the release 2.0? [\#253](https://github.com/nlohmann/json/issues/253) - concatenate objects [\#252](https://github.com/nlohmann/json/issues/252) - Encoding [\#251](https://github.com/nlohmann/json/issues/251) - Unable to build example for constructing json object with stringstreams [\#250](https://github.com/nlohmann/json/issues/250) - Hexadecimal support [\#249](https://github.com/nlohmann/json/issues/249) - Update long-term goals [\#246](https://github.com/nlohmann/json/issues/246) - Contribution To This Json Project [\#245](https://github.com/nlohmann/json/issues/245) - Trouble using parser with initial dictionary [\#243](https://github.com/nlohmann/json/issues/243) - Unit test fails when doing a CMake out-of-tree build [\#241](https://github.com/nlohmann/json/issues/241) - -Wconversion warnings [\#239](https://github.com/nlohmann/json/issues/239) - Additional integration options [\#237](https://github.com/nlohmann/json/issues/237) - .get\\(\) works for non spaced string but returns as array for spaced/longer strings [\#236](https://github.com/nlohmann/json/issues/236) - ambiguous overload for 'push\_back' and 'operator+=' [\#235](https://github.com/nlohmann/json/issues/235) - Can't use basic\_json::iterator as a base iterator for std::move\_iterator [\#233](https://github.com/nlohmann/json/issues/233) - json object's creation can freezes execution [\#231](https://github.com/nlohmann/json/issues/231) - Incorrect dumping of parsed numbers with exponents, but without decimal places [\#230](https://github.com/nlohmann/json/issues/230) - double values are serialized with commas as decimal points [\#228](https://github.com/nlohmann/json/issues/228) - Move semantics with std::initializer\_list [\#225](https://github.com/nlohmann/json/issues/225) - replace emplace [\#224](https://github.com/nlohmann/json/issues/224) - abort during getline in yyfill [\#223](https://github.com/nlohmann/json/issues/223) - free\(\): invalid pointer error in GCC 5.2.1 [\#221](https://github.com/nlohmann/json/issues/221) - Error compile Android NDK error: 'strtof' is not a member of 'std' [\#219](https://github.com/nlohmann/json/issues/219) - Wrong link in the README.md [\#217](https://github.com/nlohmann/json/issues/217) - Wide character strings not supported [\#216](https://github.com/nlohmann/json/issues/216) - Memory allocations using range-based for loops [\#214](https://github.com/nlohmann/json/issues/214) - would you like to support gcc 4.8.1? [\#211](https://github.com/nlohmann/json/issues/211) - Reading concatenated json's from an istream [\#210](https://github.com/nlohmann/json/issues/210) - Conflicting typedef of ssize\_t on Windows 32 bit when using Boost.Python [\#204](https://github.com/nlohmann/json/issues/204) - Inconsistency between operator\[\] and push\_back [\#203](https://github.com/nlohmann/json/issues/203) - Small bugs in json.hpp \(get\_number\) and unit.cpp \(non-standard integer type test\) [\#199](https://github.com/nlohmann/json/issues/199) - GCC/clang floating point parsing bug in strtod\(\) [\#195](https://github.com/nlohmann/json/issues/195) - What is within scope? [\#192](https://github.com/nlohmann/json/issues/192) - Bugs in miloyip/nativejson-benchmark: roundtrips [\#187](https://github.com/nlohmann/json/issues/187) - Floating point exceptions [\#181](https://github.com/nlohmann/json/issues/181) - Integer conversion to unsigned [\#178](https://github.com/nlohmann/json/issues/178) - map string string fails to compile [\#176](https://github.com/nlohmann/json/issues/176) - In basic\_json::basic\_json\(const CompatibleArrayType& val\), the requirement of CompatibleArrayType is not strict enough. [\#174](https://github.com/nlohmann/json/issues/174) - Provide a FAQ [\#163](https://github.com/nlohmann/json/issues/163) - Implicit assignment to std::string fails [\#144](https://github.com/nlohmann/json/issues/144) - Fix Issue \#265 [\#266](https://github.com/nlohmann/json/pull/266) ([06needhamt](https://github.com/06needhamt)) - Define CMake/CTest tests [\#247](https://github.com/nlohmann/json/pull/247) ([robertmrk](https://github.com/robertmrk)) - Out of tree builds and a few other miscellaneous CMake cleanups. [\#242](https://github.com/nlohmann/json/pull/242) ([ChrisKitching](https://github.com/ChrisKitching)) - Implement additional integration options [\#238](https://github.com/nlohmann/json/pull/238) ([robertmrk](https://github.com/robertmrk)) - make serialization locale-independent [\#232](https://github.com/nlohmann/json/pull/232) ([nlohmann](https://github.com/nlohmann)) - fixes \#223 by updating README.md [\#227](https://github.com/nlohmann/json/pull/227) ([kevin--](https://github.com/kevin--)) - Use namespace std for int64\_t and uint64\_t [\#226](https://github.com/nlohmann/json/pull/226) ([lv-zheng](https://github.com/lv-zheng)) - Added missing cerrno header to fix ERANGE compile error on android [\#222](https://github.com/nlohmann/json/pull/222) ([Teemperor](https://github.com/Teemperor)) - Corrected readme [\#218](https://github.com/nlohmann/json/pull/218) ([Annihil](https://github.com/Annihil)) - Create PULL\_REQUEST\_TEMPLATE.md [\#213](https://github.com/nlohmann/json/pull/213) ([whackashoe](https://github.com/whackashoe)) - fixed noexcept; added constexpr [\#208](https://github.com/nlohmann/json/pull/208) ([nlohmann](https://github.com/nlohmann)) - Add support for afl-fuzz testing [\#207](https://github.com/nlohmann/json/pull/207) ([mykter](https://github.com/mykter)) - replaced ssize\_t occurrences with auto \(addresses \#204\) [\#205](https://github.com/nlohmann/json/pull/205) ([nlohmann](https://github.com/nlohmann)) - Fixed issue \#199 - Small bugs in json.hpp \(get\_number\) and unit.cpp \(non-standard integer type test\) [\#200](https://github.com/nlohmann/json/pull/200) ([twelsby](https://github.com/twelsby)) - Fix broken link [\#197](https://github.com/nlohmann/json/pull/197) ([vog](https://github.com/vog)) - Issue \#195 - update Travis to Trusty due to gcc/clang strtod\(\) bug [\#196](https://github.com/nlohmann/json/pull/196) ([twelsby](https://github.com/twelsby)) - Issue \#178 - Extending support to full uint64\_t/int64\_t range and unsigned type \(updated\) [\#193](https://github.com/nlohmann/json/pull/193) ([twelsby](https://github.com/twelsby)) ## [v1.1.0](https://github.com/nlohmann/json/releases/tag/v1.1.0) (2016-01-24) [Full Changelog](https://github.com/nlohmann/json/compare/v1.0.0...v1.1.0) - Small error in pull \#185 [\#194](https://github.com/nlohmann/json/issues/194) - Bugs in miloyip/nativejson-benchmark: floating-point parsing [\#186](https://github.com/nlohmann/json/issues/186) - Floating point equality [\#185](https://github.com/nlohmann/json/issues/185) - Unused variables in catch [\#180](https://github.com/nlohmann/json/issues/180) - Typo in documentation [\#179](https://github.com/nlohmann/json/issues/179) - JSON performance benchmark comparision [\#177](https://github.com/nlohmann/json/issues/177) - Since re2c is often ignored in pull requests, it may make sense to make a contributing.md file [\#175](https://github.com/nlohmann/json/issues/175) - Question about exceptions [\#173](https://github.com/nlohmann/json/issues/173) - Android? [\#172](https://github.com/nlohmann/json/issues/172) - Cannot index by key of type static constexpr const char\* [\#171](https://github.com/nlohmann/json/issues/171) - Add assertions [\#168](https://github.com/nlohmann/json/issues/168) - MSVC 2015 build fails when attempting to compare object\_t [\#167](https://github.com/nlohmann/json/issues/167) - Member detector is not portable [\#166](https://github.com/nlohmann/json/issues/166) - Unnecessary const\_cast [\#162](https://github.com/nlohmann/json/issues/162) - Question about get\_ref\(\) [\#128](https://github.com/nlohmann/json/issues/128) - range based for loop for objects [\#83](https://github.com/nlohmann/json/issues/83) - Consider submitting this to the Boost Library Incubator [\#66](https://github.com/nlohmann/json/issues/66) - Fixed Issue \#186 - add strto\(f|d|ld\) overload wrappers, "-0.0" special case and FP trailing zero [\#191](https://github.com/nlohmann/json/pull/191) ([twelsby](https://github.com/twelsby)) - Issue \#185 - remove approx\(\) and use \#pragma to kill warnings [\#190](https://github.com/nlohmann/json/pull/190) ([twelsby](https://github.com/twelsby)) - Fixed Issue \#171 - added two extra template overloads of operator\[\] for T\* arguments [\#189](https://github.com/nlohmann/json/pull/189) ([twelsby](https://github.com/twelsby)) - Fixed issue \#167 - removed operator ValueType\(\) condition for VS2015 [\#188](https://github.com/nlohmann/json/pull/188) ([twelsby](https://github.com/twelsby)) - Implementation of get\_ref\(\) [\#184](https://github.com/nlohmann/json/pull/184) ([dariomt](https://github.com/dariomt)) - Fixed some typos in CONTRIBUTING.md [\#182](https://github.com/nlohmann/json/pull/182) ([nibroc](https://github.com/nibroc)) ## [v1.0.0](https://github.com/nlohmann/json/releases/tag/v1.0.0) (2015-12-27) [Full Changelog](https://github.com/nlohmann/json/compare/v1.0.0-rc1...v1.0.0) - add key name to exception [\#160](https://github.com/nlohmann/json/issues/160) - Getting member discarding qualifyer [\#159](https://github.com/nlohmann/json/issues/159) - basic\_json::iterator::value\(\) output includes quotes while basic\_json::iterator::key\(\) doesn't [\#158](https://github.com/nlohmann/json/issues/158) - Indexing `const basic_json<>` with `const basic_string` [\#157](https://github.com/nlohmann/json/issues/157) - token\_type\_name\(token\_type t\): not all control paths return a value [\#156](https://github.com/nlohmann/json/issues/156) - prevent json.hpp from emitting compiler warnings [\#154](https://github.com/nlohmann/json/issues/154) - json::parse\(string\) does not check utf8 bom [\#152](https://github.com/nlohmann/json/issues/152) - unsigned 64bit values output as signed [\#151](https://github.com/nlohmann/json/issues/151) - Wish feature: json5 [\#150](https://github.com/nlohmann/json/issues/150) - Unable to compile on MSVC 2015 with SDL checking enabled: This function or variable may be unsafe. [\#149](https://github.com/nlohmann/json/issues/149) - "Json Object" type does not keep object order [\#148](https://github.com/nlohmann/json/issues/148) - dump\(\) convert strings encoded by utf-8 to shift-jis on windows 10. [\#147](https://github.com/nlohmann/json/issues/147) - Unable to get field names in a json object [\#145](https://github.com/nlohmann/json/issues/145) - Question: Is the use of incomplete type correct? [\#138](https://github.com/nlohmann/json/issues/138) - json.hpp:5746:32: error: 'to\_string' is not a member of 'std' [\#136](https://github.com/nlohmann/json/issues/136) - Bug in basic\_json::operator\[\] const overload [\#135](https://github.com/nlohmann/json/issues/135) - wrong enable\_if for const pointer \(instead of pointer-to-const\) [\#134](https://github.com/nlohmann/json/issues/134) - overload of at\(\) with default value [\#133](https://github.com/nlohmann/json/issues/133) - Splitting source [\#132](https://github.com/nlohmann/json/issues/132) - Question about get\_ptr\(\) [\#127](https://github.com/nlohmann/json/issues/127) - Visual Studio 14 Debug assertion failed [\#125](https://github.com/nlohmann/json/issues/125) - Memory leak in face of exceptions [\#118](https://github.com/nlohmann/json/issues/118) - Find and Count for arrays [\#117](https://github.com/nlohmann/json/issues/117) - dynamically constructing an arbitrarily nested object [\#114](https://github.com/nlohmann/json/issues/114) - Returning any data type [\#113](https://github.com/nlohmann/json/issues/113) - Compile error with g++ 4.9.3 cygwin 64-bit [\#112](https://github.com/nlohmann/json/issues/112) - insert json array issue with gcc4.8.2 [\#110](https://github.com/nlohmann/json/issues/110) - error: unterminated raw string [\#109](https://github.com/nlohmann/json/issues/109) - vector\ copy constructor really weird [\#108](https://github.com/nlohmann/json/issues/108) - \[clang-3.6.2\] string/sstream with number to json issue [\#107](https://github.com/nlohmann/json/issues/107) - object field accessors [\#103](https://github.com/nlohmann/json/issues/103) - v8pp and json [\#95](https://github.com/nlohmann/json/issues/95) - Wishlist [\#65](https://github.com/nlohmann/json/issues/65) - Windows/Visual Studio \(through 2013\) is unsupported [\#62](https://github.com/nlohmann/json/issues/62) - Replace sprintf with hex function, this fixes \#149 [\#153](https://github.com/nlohmann/json/pull/153) ([whackashoe](https://github.com/whackashoe)) - Fix character skipping after a surrogate pair [\#146](https://github.com/nlohmann/json/pull/146) ([robertmrk](https://github.com/robertmrk)) - Detect correctly pointer-to-const [\#137](https://github.com/nlohmann/json/pull/137) ([dariomt](https://github.com/dariomt)) - disabled "CopyAssignable" test for MSVC in Debug mode, see \#125 [\#131](https://github.com/nlohmann/json/pull/131) ([dariomt](https://github.com/dariomt)) - removed stream operator for iterator, resolution for \#125 [\#130](https://github.com/nlohmann/json/pull/130) ([dariomt](https://github.com/dariomt)) - fixed typos in comments for examples [\#129](https://github.com/nlohmann/json/pull/129) ([dariomt](https://github.com/dariomt)) - Remove superfluous inefficiency [\#126](https://github.com/nlohmann/json/pull/126) ([d-frey](https://github.com/d-frey)) - remove invalid parameter '-stdlib=libc++' in CMakeLists.txt [\#124](https://github.com/nlohmann/json/pull/124) ([emvivre](https://github.com/emvivre)) - exception-safe object creation, fixes \#118 [\#122](https://github.com/nlohmann/json/pull/122) ([d-frey](https://github.com/d-frey)) - Fix small oversight. [\#121](https://github.com/nlohmann/json/pull/121) ([ColinH](https://github.com/ColinH)) - Overload parse\(\) to accept an rvalue reference [\#120](https://github.com/nlohmann/json/pull/120) ([silverweed](https://github.com/silverweed)) - Use the right variable name in doc string [\#115](https://github.com/nlohmann/json/pull/115) ([whoshuu](https://github.com/whoshuu)) ## [v1.0.0-rc1](https://github.com/nlohmann/json/releases/tag/v1.0.0-rc1) (2015-07-26) [Full Changelog](https://github.com/nlohmann/json/compare/4502e7e51c0569419c26e75fbdd5748170603e54...v1.0.0-rc1) - Finish documenting the public interface in Doxygen [\#102](https://github.com/nlohmann/json/issues/102) - Binary string causes numbers to be dumped as hex [\#101](https://github.com/nlohmann/json/issues/101) - failed to iterator json object with reverse\_iterator [\#100](https://github.com/nlohmann/json/issues/100) - 'noexcept' : unknown override specifier [\#99](https://github.com/nlohmann/json/issues/99) - json float parsing problem [\#98](https://github.com/nlohmann/json/issues/98) - Adjust wording to JSON RFC [\#97](https://github.com/nlohmann/json/issues/97) - static analysis warnings [\#94](https://github.com/nlohmann/json/issues/94) - reverse\_iterator operator inheritance problem [\#93](https://github.com/nlohmann/json/issues/93) - init error [\#92](https://github.com/nlohmann/json/issues/92) - access by \(const\) reference [\#91](https://github.com/nlohmann/json/issues/91) - is\_integer and is\_float tests [\#90](https://github.com/nlohmann/json/issues/90) - Nonstandard integer type [\#89](https://github.com/nlohmann/json/issues/89) - static library build [\#84](https://github.com/nlohmann/json/issues/84) - lexer::get\_number return NAN [\#82](https://github.com/nlohmann/json/issues/82) - MinGW have no std::to\_string [\#80](https://github.com/nlohmann/json/issues/80) - Incorrect behaviour of basic\_json::count method [\#78](https://github.com/nlohmann/json/issues/78) - Invoking is\_array\(\) function creates "null" value [\#77](https://github.com/nlohmann/json/issues/77) - dump\(\) / parse\(\) not idempotent [\#76](https://github.com/nlohmann/json/issues/76) - Handle infinity and NaN cases [\#70](https://github.com/nlohmann/json/issues/70) - errors in g++-4.8.1 [\#68](https://github.com/nlohmann/json/issues/68) - Keys when iterating over objects [\#67](https://github.com/nlohmann/json/issues/67) - Compilation results in tons of warnings [\#64](https://github.com/nlohmann/json/issues/64) - Complete brief documentation [\#61](https://github.com/nlohmann/json/issues/61) - Double quotation mark is not parsed correctly [\#60](https://github.com/nlohmann/json/issues/60) - Get coverage back to 100% [\#58](https://github.com/nlohmann/json/issues/58) - erase elements using iterators [\#57](https://github.com/nlohmann/json/issues/57) - Removing item from array [\#56](https://github.com/nlohmann/json/issues/56) - Serialize/Deserialize like PHP? [\#55](https://github.com/nlohmann/json/issues/55) - Numbers as keys [\#54](https://github.com/nlohmann/json/issues/54) - Why are elements alphabetized on key while iterating? [\#53](https://github.com/nlohmann/json/issues/53) - Document erase, count, and iterators key and value [\#52](https://github.com/nlohmann/json/issues/52) - Do not use std::to\_string [\#51](https://github.com/nlohmann/json/issues/51) - Supported compilers [\#50](https://github.com/nlohmann/json/issues/50) - Confused about iterating through json objects [\#49](https://github.com/nlohmann/json/issues/49) - Use non-member begin/end [\#48](https://github.com/nlohmann/json/issues/48) - Erase key [\#47](https://github.com/nlohmann/json/issues/47) - Key iterator [\#46](https://github.com/nlohmann/json/issues/46) - Add count member function [\#45](https://github.com/nlohmann/json/issues/45) - Problem getting vector \(array\) of strings [\#44](https://github.com/nlohmann/json/issues/44) - Compilation error due to assuming that private=public [\#43](https://github.com/nlohmann/json/issues/43) - Use of deprecated implicit copy constructor [\#42](https://github.com/nlohmann/json/issues/42) - Printing attribute names [\#39](https://github.com/nlohmann/json/issues/39) - dumping a small number\_float just outputs 0.000000 [\#37](https://github.com/nlohmann/json/issues/37) - find is error [\#32](https://github.com/nlohmann/json/issues/32) - Avoid using spaces when encoding without pretty print [\#31](https://github.com/nlohmann/json/issues/31) - Cannot encode long numbers [\#30](https://github.com/nlohmann/json/issues/30) - segmentation fault when iterating over empty arrays/objects [\#28](https://github.com/nlohmann/json/issues/28) - Creating an empty array [\#27](https://github.com/nlohmann/json/issues/27) - Custom allocator support [\#25](https://github.com/nlohmann/json/issues/25) - make the type of the used string container customizable [\#20](https://github.com/nlohmann/json/issues/20) - Improper parsing of JSON string "\\" [\#17](https://github.com/nlohmann/json/issues/17) - create a header-only version [\#16](https://github.com/nlohmann/json/issues/16) - Don't return "const values" [\#15](https://github.com/nlohmann/json/issues/15) - Add to\_string overload for indentation [\#13](https://github.com/nlohmann/json/issues/13) - string parser does not recognize uncompliant strings [\#12](https://github.com/nlohmann/json/issues/12) - possible double-free in find function [\#11](https://github.com/nlohmann/json/issues/11) - UTF-8 encoding/deconding/testing [\#10](https://github.com/nlohmann/json/issues/10) - move code into namespace [\#9](https://github.com/nlohmann/json/issues/9) - free functions for explicit objects and arrays in initializer lists [\#8](https://github.com/nlohmann/json/issues/8) - unique\_ptr for ownership [\#7](https://github.com/nlohmann/json/issues/7) - Add unit tests [\#4](https://github.com/nlohmann/json/issues/4) - Drop C++98 support [\#3](https://github.com/nlohmann/json/issues/3) - Test case coverage [\#2](https://github.com/nlohmann/json/issues/2) - Runtime error in Travis job [\#1](https://github.com/nlohmann/json/issues/1) - Keyword 'inline' is useless when member functions are defined in headers [\#87](https://github.com/nlohmann/json/pull/87) ([ahamez](https://github.com/ahamez)) - Remove useless typename [\#86](https://github.com/nlohmann/json/pull/86) ([ahamez](https://github.com/ahamez)) - Avoid warning with Xcode's clang [\#85](https://github.com/nlohmann/json/pull/85) ([ahamez](https://github.com/ahamez)) - Fix typos [\#73](https://github.com/nlohmann/json/pull/73) ([aqnouch](https://github.com/aqnouch)) - Replace `default_callback` function with `nullptr` and check for null… [\#72](https://github.com/nlohmann/json/pull/72) ([aburgh](https://github.com/aburgh)) - support enum [\#71](https://github.com/nlohmann/json/pull/71) ([likebeta](https://github.com/likebeta)) - Fix performance regression introduced with the parsing callback feature. [\#69](https://github.com/nlohmann/json/pull/69) ([aburgh](https://github.com/aburgh)) - Improve the implementations of the comparission-operators [\#63](https://github.com/nlohmann/json/pull/63) ([Florianjw](https://github.com/Florianjw)) - Fix compilation of json\_unit with GCC 5 [\#59](https://github.com/nlohmann/json/pull/59) ([dkopecek](https://github.com/dkopecek)) - Parse streams incrementally. [\#40](https://github.com/nlohmann/json/pull/40) ([aburgh](https://github.com/aburgh)) - Feature/small float serialization [\#38](https://github.com/nlohmann/json/pull/38) ([jrandall](https://github.com/jrandall)) - template version with re2c scanner [\#36](https://github.com/nlohmann/json/pull/36) ([nlohmann](https://github.com/nlohmann)) - more descriptive documentation in example [\#33](https://github.com/nlohmann/json/pull/33) ([luxe](https://github.com/luxe)) - Fix string conversion under Clang [\#26](https://github.com/nlohmann/json/pull/26) ([wancw](https://github.com/wancw)) - Fixed dumping of strings [\#24](https://github.com/nlohmann/json/pull/24) ([Teemperor](https://github.com/Teemperor)) - Added a remark to the readme that coverage is GCC only for now [\#23](https://github.com/nlohmann/json/pull/23) ([Teemperor](https://github.com/Teemperor)) - Unicode escaping [\#22](https://github.com/nlohmann/json/pull/22) ([Teemperor](https://github.com/Teemperor)) - Implemented the JSON spec for string parsing for everything but the \uXXXX escaping [\#21](https://github.com/nlohmann/json/pull/21) ([Teemperor](https://github.com/Teemperor)) - add the std iterator typedefs to iterator and const\_iterator [\#19](https://github.com/nlohmann/json/pull/19) ([kirkshoop](https://github.com/kirkshoop)) - Fixed escaped quotes [\#18](https://github.com/nlohmann/json/pull/18) ([Teemperor](https://github.com/Teemperor)) - Fix double delete on std::bad\_alloc exception [\#14](https://github.com/nlohmann/json/pull/14) ([elliotgoodrich](https://github.com/elliotgoodrich)) - Added CMake and lcov [\#6](https://github.com/nlohmann/json/pull/6) ([Teemperor](https://github.com/Teemperor)) - Version 2.0 [\#5](https://github.com/nlohmann/json/pull/5) ([nlohmann](https://github.com/nlohmann)) \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* json-3.11.3/LICENSE.MIT000066400000000000000000000020641453145653700142240ustar00rootroot00000000000000MIT License Copyright (c) 2013-2022 Niels Lohmann 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. json-3.11.3/LICENSES/000077500000000000000000000000001453145653700137725ustar00rootroot00000000000000json-3.11.3/LICENSES/Apache-2.0.txt000066400000000000000000000240501453145653700162120ustar00rootroot00000000000000Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. json-3.11.3/LICENSES/BSD-3-Clause.txt000066400000000000000000000026641453145653700165250ustar00rootroot00000000000000Copyright (c) . 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. json-3.11.3/LICENSES/GPL-3.0-only.txt000066400000000000000000001035561453145653700164440ustar00rootroot00000000000000GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright © 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. “This License” refers to version 3 of the GNU General Public License. “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. A “covered work” means either the unmodified Program or a work based on the Program. To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . json-3.11.3/LICENSES/MIT.txt000066400000000000000000000020661453145653700151700ustar00rootroot00000000000000MIT License Copyright (c) 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. json-3.11.3/Makefile000066400000000000000000000322251453145653700142310ustar00rootroot00000000000000.PHONY: pretty clean ChangeLog.md release ########################################################################## # configuration ########################################################################## # find GNU sed to use `-i` parameter SED:=$(shell command -v gsed || which sed) ########################################################################## # source files ########################################################################## # the list of sources in the include folder SRCS=$(shell find include -type f | sort) # the list of sources in the tests folder TESTS_SRCS=$(shell find tests -type f \( -name '*.hpp' -o -name '*.cpp' -o -name '*.cu' \) -not -path 'tests/thirdparty/*' -not -path 'tests/abi/include/nlohmann/*' | sort) # the single headers (amalgamated from the source files) AMALGAMATED_FILE=single_include/nlohmann/json.hpp AMALGAMATED_FWD_FILE=single_include/nlohmann/json_fwd.hpp ########################################################################## # documentation of the Makefile's targets ########################################################################## # main target all: @echo "amalgamate - amalgamate files single_include/nlohmann/json{,_fwd}.hpp from the include/nlohmann sources" @echo "ChangeLog.md - generate ChangeLog file" @echo "check-amalgamation - check whether sources have been amalgamated" @echo "clean - remove built files" @echo "doctest - compile example files and check their output" @echo "fuzz_testing - prepare fuzz testing of the JSON parser" @echo "fuzz_testing_bson - prepare fuzz testing of the BSON parser" @echo "fuzz_testing_cbor - prepare fuzz testing of the CBOR parser" @echo "fuzz_testing_msgpack - prepare fuzz testing of the MessagePack parser" @echo "fuzz_testing_ubjson - prepare fuzz testing of the UBJSON parser" @echo "pretty - beautify code with Artistic Style" @echo "run_benchmarks - build and run benchmarks" ########################################################################## # documentation tests ########################################################################## # compile example files and check output doctest: $(MAKE) check_output -C docs ########################################################################## # benchmarks ########################################################################## run_benchmarks: rm -fr cmake-build-benchmarks mkdir cmake-build-benchmarks cd cmake-build-benchmarks ; cmake ../tests/benchmarks -GNinja -DCMAKE_BUILD_TYPE=Release cd cmake-build-benchmarks ; ninja cd cmake-build-benchmarks ; ./json_benchmarks ########################################################################## # fuzzing ########################################################################## # the overall fuzz testing target fuzz_testing: rm -fr fuzz-testing mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out $(MAKE) parse_afl_fuzzer -C tests CXX=afl-clang++ mv tests/parse_afl_fuzzer fuzz-testing/fuzzer find tests/data/json_tests -size -5k -name *json | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" fuzz_testing_bson: rm -fr fuzz-testing mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out $(MAKE) parse_bson_fuzzer -C tests CXX=afl-clang++ mv tests/parse_bson_fuzzer fuzz-testing/fuzzer find tests/data -size -5k -name *.bson | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" fuzz_testing_cbor: rm -fr fuzz-testing mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out $(MAKE) parse_cbor_fuzzer -C tests CXX=afl-clang++ mv tests/parse_cbor_fuzzer fuzz-testing/fuzzer find tests/data -size -5k -name *.cbor | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" fuzz_testing_msgpack: rm -fr fuzz-testing mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out $(MAKE) parse_msgpack_fuzzer -C tests CXX=afl-clang++ mv tests/parse_msgpack_fuzzer fuzz-testing/fuzzer find tests/data -size -5k -name *.msgpack | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" fuzz_testing_ubjson: rm -fr fuzz-testing mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out $(MAKE) parse_ubjson_fuzzer -C tests CXX=afl-clang++ mv tests/parse_ubjson_fuzzer fuzz-testing/fuzzer find tests/data -size -5k -name *.ubjson | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" fuzzing-start: afl-fuzz -S fuzzer1 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer2 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer3 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer4 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer5 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer6 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer7 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -M fuzzer0 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer fuzzing-stop: -killall fuzzer -killall afl-fuzz ########################################################################## # Static analysis ########################################################################## # call PVS-Studio Analyzer pvs_studio: rm -fr cmake-build-pvs-studio mkdir cmake-build-pvs-studio cd cmake-build-pvs-studio ; cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DJSON_MultipleHeaders=ON cd cmake-build-pvs-studio ; pvs-studio-analyzer analyze -j 10 cd cmake-build-pvs-studio ; plog-converter -a'GA:1,2;64:1;CS' -t fullhtml PVS-Studio.log -o pvs open cmake-build-pvs-studio/pvs/index.html ########################################################################## # Code format and source amalgamation ########################################################################## # call the Artistic Style pretty printer on all source files pretty: astyle \ --style=allman \ --indent=spaces=4 \ --indent-modifiers \ --indent-switches \ --indent-preproc-block \ --indent-preproc-define \ --indent-col1-comments \ --pad-oper \ --pad-header \ --align-pointer=type \ --align-reference=type \ --add-braces \ --squeeze-lines=2 \ --convert-tabs \ --close-templates \ --lineend=linux \ --preserve-date \ --suffix=none \ --formatted \ $(SRCS) $(TESTS_SRCS) $(AMALGAMATED_FILE) $(AMALGAMATED_FWD_FILE) docs/examples/*.cpp # call the Clang-Format on all source files pretty_format: for FILE in $(SRCS) $(TESTS_SRCS) $(AMALGAMATED_FILE) docs/examples/*.cpp; do echo $$FILE; clang-format -i $$FILE; done # create single header files and pretty print amalgamate: $(AMALGAMATED_FILE) $(AMALGAMATED_FWD_FILE) $(MAKE) pretty # call the amalgamation tool for json.hpp $(AMALGAMATED_FILE): $(SRCS) tools/amalgamate/amalgamate.py -c tools/amalgamate/config_json.json -s . --verbose=yes # call the amalgamation tool for json_fwd.hpp $(AMALGAMATED_FWD_FILE): $(SRCS) tools/amalgamate/amalgamate.py -c tools/amalgamate/config_json_fwd.json -s . --verbose=yes # check if file single_include/nlohmann/json.hpp has been amalgamated from the nlohmann sources # Note: this target is called by Travis check-amalgamation: @mv $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ @mv $(AMALGAMATED_FWD_FILE) $(AMALGAMATED_FWD_FILE)~ @$(MAKE) amalgamate @diff $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) ; false) @diff $(AMALGAMATED_FWD_FILE) $(AMALGAMATED_FWD_FILE)~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv $(AMALGAMATED_FWD_FILE)~ $(AMALGAMATED_FWD_FILE) ; false) @mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) @mv $(AMALGAMATED_FWD_FILE)~ $(AMALGAMATED_FWD_FILE) BUILD.bazel: $(SRCS) cmake -P cmake/scripts/gen_bazel_build_file.cmake ########################################################################## # ChangeLog ########################################################################## # Create a ChangeLog based on the git log using the GitHub Changelog Generator # (). # variable to control the diffs between the last released version and the current repository state NEXT_VERSION ?= "unreleased" ChangeLog.md: github_changelog_generator -o ChangeLog.md --user nlohmann --project json --simple-list --release-url https://github.com/nlohmann/json/releases/tag/%s --future-release $(NEXT_VERSION) $(SED) -i 's|https://github.com/nlohmann/json/releases/tag/HEAD|https://github.com/nlohmann/json/tree/HEAD|' ChangeLog.md $(SED) -i '2i All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).' ChangeLog.md ########################################################################## # Release files ########################################################################## # Create a tar.gz archive that contains sufficient files to be used as CMake project (e.g., using FetchContent). The # archive is created according to the advices of . json.tar.xz: mkdir json rsync -R $(shell find LICENSE.MIT nlohmann_json.natvis CMakeLists.txt cmake/*.in include single_include -type f) json gtar --sort=name --mtime="@$(shell git log -1 --pretty=%ct)" --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime --create --file - json | xz --compress -9e --threads=2 - > json.tar.xz rm -fr json # We use `-X` to make the resulting ZIP file reproducible, see # . include.zip: BUILD.bazel zip -9 --recurse-paths -X include.zip $(SRCS) $(AMALGAMATED_FILE) $(AMALGAMATED_FWD_FILE) BUILD.bazel WORKSPACE.bazel meson.build LICENSE.MIT # Create the files for a release and add signatures and hashes. release: include.zip json.tar.xz rm -fr release_files mkdir release_files gpg --armor --detach-sig include.zip gpg --armor --detach-sig $(AMALGAMATED_FILE) gpg --armor --detach-sig $(AMALGAMATED_FWD_FILE) gpg --armor --detach-sig json.tar.xz cp $(AMALGAMATED_FILE) release_files cp $(AMALGAMATED_FWD_FILE) release_files mv $(AMALGAMATED_FILE).asc $(AMALGAMATED_FWD_FILE).asc json.tar.xz json.tar.xz.asc include.zip include.zip.asc release_files cd release_files ; shasum -a 256 json.hpp include.zip json.tar.xz > hashes.txt ########################################################################## # Maintenance ########################################################################## # clean up clean: rm -fr fuzz fuzz-testing *.dSYM tests/*.dSYM rm -fr benchmarks/files/numbers/*.json rm -fr cmake-build-benchmarks fuzz-testing cmake-build-pvs-studio release_files $(MAKE) clean -Cdocs ########################################################################## # Thirdparty code ########################################################################## update_hedley: rm -f include/nlohmann/thirdparty/hedley/hedley.hpp include/nlohmann/thirdparty/hedley/hedley_undef.hpp curl https://raw.githubusercontent.com/nemequ/hedley/master/hedley.h -o include/nlohmann/thirdparty/hedley/hedley.hpp $(SED) -i 's/HEDLEY_/JSON_HEDLEY_/g' include/nlohmann/thirdparty/hedley/hedley.hpp grep "[[:blank:]]*#[[:blank:]]*undef" include/nlohmann/thirdparty/hedley/hedley.hpp | grep -v "__" | sort | uniq | $(SED) 's/ //g' | $(SED) 's/undef/undef /g' > include/nlohmann/thirdparty/hedley/hedley_undef.hpp $(SED) -i '1s/^/#pragma once\n\n/' include/nlohmann/thirdparty/hedley/hedley.hpp $(SED) -i '1s/^/#pragma once\n\n/' include/nlohmann/thirdparty/hedley/hedley_undef.hpp $(MAKE) amalgamate ########################################################################## # serve_header.py ########################################################################## serve_header: ./tools/serve_header/serve_header.py --make $(MAKE) ########################################################################## # REUSE ########################################################################## reuse: pipx run reuse addheader --recursive single_include include -tjson --license MIT --copyright "Niels Lohmann " --year "2013-2022" pipx run reuse addheader $(TESTS_SRCS) --style=c -tjson_support --license MIT --copyright "Niels Lohmann " --year "2013-2022" pipx run reuse lint json-3.11.3/Package.swift000066400000000000000000000010521453145653700151740ustar00rootroot00000000000000// swift-tools-version: 5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "nlohmann-json", platforms: [ .iOS(.v12), .macOS(.v10_13), .tvOS(.v12), .watchOS(.v4) ], products: [ .library(name: "json", targets: ["json"]) ], targets: [ .target( name: "json", path: "single_include/nlohmann", publicHeadersPath: "." ) ], cxxLanguageStandard: .cxx11 ) json-3.11.3/README.md000066400000000000000000003353641453145653700140620ustar00rootroot00000000000000[![JSON for Modern C++](docs/json.gif)](https://github.com/nlohmann/json/releases) [![Build Status](https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true)](https://ci.appveyor.com/project/nlohmann/json) [![Ubuntu](https://github.com/nlohmann/json/workflows/Ubuntu/badge.svg)](https://github.com/nlohmann/json/actions?query=workflow%3AUbuntu) [![macOS](https://github.com/nlohmann/json/workflows/macOS/badge.svg)](https://github.com/nlohmann/json/actions?query=workflow%3AmacOS) [![Windows](https://github.com/nlohmann/json/workflows/Windows/badge.svg)](https://github.com/nlohmann/json/actions?query=workflow%3AWindows) [![Coverage Status](https://coveralls.io/repos/github/nlohmann/json/badge.svg?branch=develop)](https://coveralls.io/github/nlohmann/json?branch=develop) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/e0d1a9d5d6fd46fcb655c4cb930bb3e8)](https://www.codacy.com/gh/nlohmann/json/dashboard?utm_source=github.com&utm_medium=referral&utm_content=nlohmann/json&utm_campaign=Badge_Grade) [![Cirrus CI](https://api.cirrus-ci.com/github/nlohmann/json.svg)](https://cirrus-ci.com/github/nlohmann/json) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/json.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:json) [![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/1mp10JbaANo6FUc7) [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://json.nlohmann.me) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) [![GitHub Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) [![Vcpkg Version](https://img.shields.io/vcpkg/v/nlohmann-json)](https://vcpkg.link/ports/nlohmann-json) [![Packaging status](https://repology.org/badge/tiny-repos/nlohmann-json.svg)](https://repology.org/project/nlohmann-json/versions) [![GitHub Downloads](https://img.shields.io/github/downloads/nlohmann/json/total)](https://github.com/nlohmann/json/releases) [![GitHub Issues](https://img.shields.io/github/issues/nlohmann/json.svg)](https://github.com/nlohmann/json/issues) [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/nlohmann/json.svg)](https://isitmaintained.com/project/nlohmann/json "Average time to resolve an issue") [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/289/badge)](https://bestpractices.coreinfrastructure.org/projects/289) [![GitHub Sponsors](https://img.shields.io/badge/GitHub-Sponsors-ff69b4)](https://github.com/sponsors/nlohmann) [![REUSE status](https://api.reuse.software/badge/github.com/nlohmann/json)](https://api.reuse.software/info/github.com/nlohmann/json) [![Discord](https://img.shields.io/discord/1003743314341793913)](https://discord.gg/6mrGXKvX7y) - [Design goals](#design-goals) - [Sponsors](#sponsors) - [Support](#support) ([documentation](https://json.nlohmann.me), [FAQ](https://json.nlohmann.me/home/faq/), [discussions](https://github.com/nlohmann/json/discussions), [API](https://json.nlohmann.me/api/basic_json/), [bug issues](https://github.com/nlohmann/json/issues)) - [Examples](#examples) - [Read JSON from a file](#read-json-from-a-file) - [Creating `json` objects from JSON literals](#creating-json-objects-from-json-literals) - [JSON as first-class data type](#json-as-first-class-data-type) - [Serialization / Deserialization](#serialization--deserialization) - [STL-like access](#stl-like-access) - [Conversion from STL containers](#conversion-from-stl-containers) - [JSON Pointer and JSON Patch](#json-pointer-and-json-patch) - [JSON Merge Patch](#json-merge-patch) - [Implicit conversions](#implicit-conversions) - [Conversions to/from arbitrary types](#arbitrary-types-conversions) - [Specializing enum conversion](#specializing-enum-conversion) - [Binary formats (BSON, CBOR, MessagePack, UBJSON, and BJData)](#binary-formats-bson-cbor-messagepack-ubjson-and-bjdata) - [Supported compilers](#supported-compilers) - [Integration](#integration) - [CMake](#cmake) - [Package Managers](#package-managers) - [Pkg-config](#pkg-config) - [License](#license) - [Contact](#contact) - [Thanks](#thanks) - [Used third-party tools](#used-third-party-tools) - [Projects using JSON for Modern C++](#projects-using-json-for-modern-c) - [Notes](#notes) - [Execute unit tests](#execute-unit-tests) ## Design goals There are myriads of [JSON](https://json.org) libraries out there, and each may even have its reason to exist. Our class had these design goals: - **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you'll know what I mean. - **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. - **Serious testing**. Our code is heavily [unit-tested](https://github.com/nlohmann/json/tree/develop/tests/src) and covers [100%](https://coveralls.io/r/nlohmann/json) of the code, including all exceptional behavior. Furthermore, we checked with [Valgrind](https://valgrind.org) and the [Clang Sanitizers](https://clang.llvm.org/docs/index.html) that there are no memory leaks. [Google OSS-Fuzz](https://github.com/google/oss-fuzz/tree/master/projects/json) additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the [Core Infrastructure Initiative (CII) best practices](https://bestpractices.coreinfrastructure.org/projects/289). Other aspects were not so important to us: - **Memory efficiency**. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: `std::string` for strings, `int64_t`, `uint64_t` or `double` for numbers, `std::map` for objects, `std::vector` for arrays, and `bool` for Booleans. However, you can template the generalized class `basic_json` to your needs. - **Speed**. There are certainly [faster JSON libraries](https://github.com/miloyip/nativejson-benchmark#parsing-time) out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a `std::vector` or `std::map`, you are already set. See the [contribution guidelines](https://github.com/nlohmann/json/blob/master/.github/CONTRIBUTING.md#please-dont) for more information. ## Sponsors You can sponsor this library at [GitHub Sponsors](https://github.com/sponsors/nlohmann). ### :office: Corporate Sponsor [![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Codacy-logo-black.svg/320px-Codacy-logo-black.svg.png)](https://github.com/codacy/About) ### :label: Named Sponsors - [Michael Hartmann](https://github.com/reFX-Mike) - [Stefan Hagen](https://github.com/sthagen) - [Steve Sperandeo](https://github.com/homer6) - [Robert Jefe Lindstädt](https://github.com/eljefedelrodeodeljefe) - [Steve Wagner](https://github.com/ciroque) - [Lion Yang](https://github.com/LionNatsu) Thanks everyone! ## Support :question: If you have a **question**, please check if it is already answered in the [**FAQ**](https://json.nlohmann.me/home/faq/) or the [**Q&A**](https://github.com/nlohmann/json/discussions/categories/q-a) section. If not, please [**ask a new question**](https://github.com/nlohmann/json/discussions/new) there. :books: If you want to **learn more** about how to use the library, check out the rest of the [**README**](#examples), have a look at [**code examples**](https://github.com/nlohmann/json/tree/develop/docs/examples), or browse through the [**help pages**](https://json.nlohmann.me). :construction: If you want to understand the **API** better, check out the [**API Reference**](https://json.nlohmann.me/api/basic_json/). :bug: If you found a **bug**, please check the [**FAQ**](https://json.nlohmann.me/home/faq/) if it is a known issue or the result of a design decision. Please also have a look at the [**issue list**](https://github.com/nlohmann/json/issues) before you [**create a new issue**](https://github.com/nlohmann/json/issues/new/choose). Please provide as much information as possible to help us understand and reproduce your issue. There is also a [**docset**](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B) for the documentation browsers [Dash](https://kapeli.com/dash), [Velocity](https://velocity.silverlakesoftware.com), and [Zeal](https://zealdocs.org) that contains the full [documentation](https://json.nlohmann.me) as offline resource. ## Examples Here are some examples to give you an idea how to use the class. Beside the examples below, you may want to: → Check the [documentation](https://json.nlohmann.me/)\ → Browse the [standalone example files](https://github.com/nlohmann/json/tree/develop/docs/examples) Every API function (documented in the [API Documentation](https://json.nlohmann.me/api/basic_json/)) has a corresponding standalone example file. For example, the [`emplace()`](https://json.nlohmann.me/api/basic_json/emplace/) function has a matching [emplace.cpp](https://github.com/nlohmann/json/blob/develop/docs/examples/emplace.cpp) example file. ### Read JSON from a file The `json` class provides an API for manipulating a JSON value. To create a `json` object by reading a JSON file: ```cpp #include #include using json = nlohmann::json; // ... std::ifstream f("example.json"); json data = json::parse(f); ``` ### Creating `json` objects from JSON literals Assume you want to create hard-code this literal JSON value in a file, as a `json` object: ```json { "pi": 3.141, "happy": true } ``` There are various options: ```cpp // Using (raw) string literals and json::parse json ex1 = json::parse(R"( { "pi": 3.141, "happy": true } )"); // Using user-defined (raw) string literals using namespace nlohmann::literals; json ex2 = R"( { "pi": 3.141, "happy": true } )"_json; // Using initializer lists json ex3 = { {"happy", true}, {"pi", 3.141}, }; ``` ### JSON as first-class data type Here are some examples to give you an idea how to use the class. Assume you want to create the JSON object ```json { "pi": 3.141, "happy": true, "name": "Niels", "nothing": null, "answer": { "everything": 42 }, "list": [1, 0, 2], "object": { "currency": "USD", "value": 42.99 } } ``` With this library, you could write: ```cpp // create an empty structure (null) json j; // add a number that is stored as double (note the implicit conversion of j to an object) j["pi"] = 3.141; // add a Boolean that is stored as bool j["happy"] = true; // add a string that is stored as std::string j["name"] = "Niels"; // add another null object by passing nullptr j["nothing"] = nullptr; // add an object inside the object j["answer"]["everything"] = 42; // add an array that is stored as std::vector (using an initializer list) j["list"] = { 1, 0, 2 }; // add another object (using an initializer list of pairs) j["object"] = { {"currency", "USD"}, {"value", 42.99} }; // instead, you could also write (which looks very similar to the JSON above) json j2 = { {"pi", 3.141}, {"happy", true}, {"name", "Niels"}, {"nothing", nullptr}, {"answer", { {"everything", 42} }}, {"list", {1, 0, 2}}, {"object", { {"currency", "USD"}, {"value", 42.99} }} }; ``` Note that in all these cases, you never need to "tell" the compiler which JSON value type you want to use. If you want to be explicit or express some edge cases, the functions [`json::array()`](https://json.nlohmann.me/api/basic_json/array/) and [`json::object()`](https://json.nlohmann.me/api/basic_json/object/) will help: ```cpp // a way to express the empty array [] json empty_array_explicit = json::array(); // ways to express the empty object {} json empty_object_implicit = json({}); json empty_object_explicit = json::object(); // a way to express an _array_ of key/value pairs [["currency", "USD"], ["value", 42.99]] json array_not_object = json::array({ {"currency", "USD"}, {"value", 42.99} }); ``` ### Serialization / Deserialization #### To/from strings You can create a JSON value (deserialization) by appending `_json` to a string literal: ```cpp // create object from string literal json j = "{ \"happy\": true, \"pi\": 3.141 }"_json; // or even nicer with a raw string literal auto j2 = R"( { "happy": true, "pi": 3.141 } )"_json; ``` Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string `"{ "happy": true, "pi": 3.141 }"` rather than parsing the actual object. The string literal should be brought into scope with `using namespace nlohmann::literals;` (see [`json::parse()`](https://json.nlohmann.me/api/operator_literal_json/)). The above example can also be expressed explicitly using [`json::parse()`](https://json.nlohmann.me/api/basic_json/parse/): ```cpp // parse explicitly auto j3 = json::parse(R"({"happy": true, "pi": 3.141})"); ``` You can also get a string representation of a JSON value (serialize): ```cpp // explicit conversion to string std::string s = j.dump(); // {"happy":true,"pi":3.141} // serialization with pretty printing // pass in the amount of spaces to indent std::cout << j.dump(4) << std::endl; // { // "happy": true, // "pi": 3.141 // } ``` Note the difference between serialization and assignment: ```cpp // store a string in a JSON value json j_string = "this is a string"; // retrieve the string value auto cpp_string = j_string.template get(); // retrieve the string value (alternative when a variable already exists) std::string cpp_string2; j_string.get_to(cpp_string2); // retrieve the serialized value (explicit JSON serialization) std::string serialized_string = j_string.dump(); // output of original string std::cout << cpp_string << " == " << cpp_string2 << " == " << j_string.template get() << '\n'; // output of serialized value std::cout << j_string << " == " << serialized_string << std::endl; ``` [`.dump()`](https://json.nlohmann.me/api/basic_json/dump/) returns the originally stored string value. Note the library only supports UTF-8. When you store strings with different encodings in the library, calling [`dump()`](https://json.nlohmann.me/api/basic_json/dump/) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers. #### To/from streams (e.g. files, string streams) You can also use streams to serialize and deserialize: ```cpp // deserialize from standard input json j; std::cin >> j; // serialize to standard output std::cout << j; // the setw manipulator was overloaded to set the indentation for pretty printing std::cout << std::setw(4) << j << std::endl; ``` These operators work for any subclasses of `std::istream` or `std::ostream`. Here is the same example with files: ```cpp // read a JSON file std::ifstream i("file.json"); json j; i >> j; // write prettified JSON to another file std::ofstream o("pretty.json"); o << std::setw(4) << j << std::endl; ``` Please note that setting the exception bit for `failbit` is inappropriate for this use case. It will result in program termination due to the `noexcept` specifier in use. #### Read from iterator range You can also parse JSON from an iterator range; that is, from any container accessible by iterators whose `value_type` is an integral type of 1, 2 or 4 bytes, which will be interpreted as UTF-8, UTF-16 and UTF-32 respectively. For instance, a `std::vector`, or a `std::list`: ```cpp std::vector v = {'t', 'r', 'u', 'e'}; json j = json::parse(v.begin(), v.end()); ``` You may leave the iterators for the range [begin, end): ```cpp std::vector v = {'t', 'r', 'u', 'e'}; json j = json::parse(v); ``` #### Custom data source Since the parse function accepts arbitrary iterator ranges, you can provide your own data sources by implementing the `LegacyInputIterator` concept. ```cpp struct MyContainer { void advance(); const char& get_current(); }; struct MyIterator { using difference_type = std::ptrdiff_t; using value_type = char; using pointer = const char*; using reference = const char&; using iterator_category = std::input_iterator_tag; MyIterator& operator++() { MyContainer.advance(); return *this; } bool operator!=(const MyIterator& rhs) const { return rhs.target != target; } reference operator*() const { return target.get_current(); } MyContainer* target = nullptr; }; MyIterator begin(MyContainer& tgt) { return MyIterator{&tgt}; } MyIterator end(const MyContainer&) { return {}; } void foo() { MyContainer c; json j = json::parse(c); } ``` #### SAX interface The library uses a SAX-like interface with the following functions: ```cpp // called when null is parsed bool null(); // called when a boolean is parsed; value is passed bool boolean(bool val); // called when a signed or unsigned integer number is parsed; value is passed bool number_integer(number_integer_t val); bool number_unsigned(number_unsigned_t val); // called when a floating-point number is parsed; value and original string is passed bool number_float(number_float_t val, const string_t& s); // called when a string is parsed; value is passed and can be safely moved away bool string(string_t& val); // called when a binary value is parsed; value is passed and can be safely moved away bool binary(binary_t& val); // called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known) bool start_object(std::size_t elements); bool end_object(); bool start_array(std::size_t elements); bool end_array(); // called when an object key is parsed; value is passed and can be safely moved away bool key(string_t& val); // called when a parse error occurs; byte position, the last token, and an exception is passed bool parse_error(std::size_t position, const std::string& last_token, const detail::exception& ex); ``` The return value of each function determines whether parsing should proceed. To implement your own SAX handler, proceed as follows: 1. Implement the SAX interface in a class. You can use class `nlohmann::json_sax` as base class, but you can also use any class where the functions described above are implemented and public. 2. Create an object of your SAX interface class, e.g. `my_sax`. 3. Call `bool json::sax_parse(input, &my_sax)`; where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface. Note the `sax_parse` function only returns a `bool` indicating the result of the last executed SAX event. It does not return a `json` value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your `parse_error` implementation. Internally, the SAX interface is used for the DOM parser (class `json_sax_dom_parser`) as well as the acceptor (`json_sax_acceptor`), see file [`json_sax.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/detail/input/json_sax.hpp). ### STL-like access We designed the JSON class to behave just like an STL container. In fact, it satisfies the [**ReversibleContainer**](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) requirement. ```cpp // create an array using push_back json j; j.push_back("foo"); j.push_back(1); j.push_back(true); // also use emplace_back j.emplace_back(1.78); // iterate the array for (json::iterator it = j.begin(); it != j.end(); ++it) { std::cout << *it << '\n'; } // range-based for for (auto& element : j) { std::cout << element << '\n'; } // getter/setter const auto tmp = j[0].template get(); j[1] = 42; bool foo = j.at(2); // comparison j == R"(["foo", 1, true, 1.78])"_json; // true // other stuff j.size(); // 4 entries j.empty(); // false j.type(); // json::value_t::array j.clear(); // the array is empty again // convenience type checkers j.is_null(); j.is_boolean(); j.is_number(); j.is_object(); j.is_array(); j.is_string(); // create an object json o; o["foo"] = 23; o["bar"] = false; o["baz"] = 3.141; // also use emplace o.emplace("weather", "sunny"); // special iterator member functions for objects for (json::iterator it = o.begin(); it != o.end(); ++it) { std::cout << it.key() << " : " << it.value() << "\n"; } // the same code as range for for (auto& el : o.items()) { std::cout << el.key() << " : " << el.value() << "\n"; } // even easier with structured bindings (C++17) for (auto& [key, value] : o.items()) { std::cout << key << " : " << value << "\n"; } // find an entry if (o.contains("foo")) { // there is an entry with key "foo" } // or via find and an iterator if (o.find("foo") != o.end()) { // there is an entry with key "foo" } // or simpler using count() int foo_present = o.count("foo"); // 1 int fob_present = o.count("fob"); // 0 // delete an entry o.erase("foo"); ``` ### Conversion from STL containers Any sequence container (`std::array`, `std::vector`, `std::deque`, `std::forward_list`, `std::list`) whose values can be used to construct JSON values (e.g., integers, floating point numbers, Booleans, string types, or again STL containers described in this section) can be used to create a JSON array. The same holds for similar associative containers (`std::set`, `std::multiset`, `std::unordered_set`, `std::unordered_multiset`), but in these cases the order of the elements of the array depends on how the elements are ordered in the respective STL container. ```cpp std::vector c_vector {1, 2, 3, 4}; json j_vec(c_vector); // [1, 2, 3, 4] std::deque c_deque {1.2, 2.3, 3.4, 5.6}; json j_deque(c_deque); // [1.2, 2.3, 3.4, 5.6] std::list c_list {true, true, false, true}; json j_list(c_list); // [true, true, false, true] std::forward_list c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543}; json j_flist(c_flist); // [12345678909876, 23456789098765, 34567890987654, 45678909876543] std::array c_array {{1, 2, 3, 4}}; json j_array(c_array); // [1, 2, 3, 4] std::set c_set {"one", "two", "three", "four", "one"}; json j_set(c_set); // only one entry for "one" is used // ["four", "one", "three", "two"] std::unordered_set c_uset {"one", "two", "three", "four", "one"}; json j_uset(c_uset); // only one entry for "one" is used // maybe ["two", "three", "four", "one"] std::multiset c_mset {"one", "two", "one", "four"}; json j_mset(c_mset); // both entries for "one" are used // maybe ["one", "two", "one", "four"] std::unordered_multiset c_umset {"one", "two", "one", "four"}; json j_umset(c_umset); // both entries for "one" are used // maybe ["one", "two", "one", "four"] ``` Likewise, any associative key-value containers (`std::map`, `std::multimap`, `std::unordered_map`, `std::unordered_multimap`) whose keys can construct an `std::string` and whose values can be used to construct JSON values (see examples above) can be used to create a JSON object. Note that in case of multimaps only one key is used in the JSON object and the value depends on the internal order of the STL container. ```cpp std::map c_map { {"one", 1}, {"two", 2}, {"three", 3} }; json j_map(c_map); // {"one": 1, "three": 3, "two": 2 } std::unordered_map c_umap { {"one", 1.2}, {"two", 2.3}, {"three", 3.4} }; json j_umap(c_umap); // {"one": 1.2, "two": 2.3, "three": 3.4} std::multimap c_mmap { {"one", true}, {"two", true}, {"three", false}, {"three", true} }; json j_mmap(c_mmap); // only one entry for key "three" is used // maybe {"one": true, "two": true, "three": true} std::unordered_multimap c_ummap { {"one", true}, {"two", true}, {"three", false}, {"three", true} }; json j_ummap(c_ummap); // only one entry for key "three" is used // maybe {"one": true, "two": true, "three": true} ``` ### JSON Pointer and JSON Patch The library supports **JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) as alternative means to address structured values. On top of this, **JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) allows describing differences between two JSON values - effectively allowing patch and diff operations known from Unix. ```cpp // a JSON value json j_original = R"({ "baz": ["one", "two", "three"], "foo": "bar" })"_json; // access members with a JSON pointer (RFC 6901) j_original["/baz/1"_json_pointer]; // "two" // a JSON patch (RFC 6902) json j_patch = R"([ { "op": "replace", "path": "/baz", "value": "boo" }, { "op": "add", "path": "/hello", "value": ["world"] }, { "op": "remove", "path": "/foo"} ])"_json; // apply the patch json j_result = j_original.patch(j_patch); // { // "baz": "boo", // "hello": ["world"] // } // calculate a JSON patch from two JSON values json::diff(j_result, j_original); // [ // { "op":" replace", "path": "/baz", "value": ["one", "two", "three"] }, // { "op": "remove","path": "/hello" }, // { "op": "add", "path": "/foo", "value": "bar" } // ] ``` ### JSON Merge Patch The library supports **JSON Merge Patch** ([RFC 7386](https://tools.ietf.org/html/rfc7386)) as a patch format. Instead of using JSON Pointer (see above) to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified. ```cpp // a JSON value json j_document = R"({ "a": "b", "c": { "d": "e", "f": "g" } })"_json; // a patch json j_patch = R"({ "a":"z", "c": { "f": null } })"_json; // apply the patch j_document.merge_patch(j_patch); // { // "a": "z", // "c": { // "d": "e" // } // } ``` ### Implicit conversions Supported types can be implicitly converted to JSON values. It is recommended to **NOT USE** implicit conversions **FROM** a JSON value. You can find more details about this recommendation [here](https://www.github.com/nlohmann/json/issues/958). You can switch off implicit conversions by defining `JSON_USE_IMPLICIT_CONVERSIONS` to `0` before including the `json.hpp` header. When using CMake, you can also achieve this by setting the option `JSON_ImplicitConversions` to `OFF`. ```cpp // strings std::string s1 = "Hello, world!"; json js = s1; auto s2 = js.template get(); // NOT RECOMMENDED std::string s3 = js; std::string s4; s4 = js; // Booleans bool b1 = true; json jb = b1; auto b2 = jb.template get(); // NOT RECOMMENDED bool b3 = jb; bool b4; b4 = jb; // numbers int i = 42; json jn = i; auto f = jn.template get(); // NOT RECOMMENDED double f2 = jb; double f3; f3 = jb; // etc. ``` Note that `char` types are not automatically converted to JSON strings, but to integer numbers. A conversion to a string must be specified explicitly: ```cpp char ch = 'A'; // ASCII value 65 json j_default = ch; // stores integer number 65 json j_string = std::string(1, ch); // stores string "A" ``` ### Arbitrary types conversions Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines: ```cpp namespace ns { // a simple struct to model a person struct person { std::string name; std::string address; int age; }; } ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // convert to JSON: copy each value into the JSON object json j; j["name"] = p.name; j["address"] = p.address; j["age"] = p.age; // ... // convert from JSON: copy each value from the JSON object ns::person p { j["name"].template get(), j["address"].template get(), j["age"].template get() }; ``` It works, but that's quite a lot of boilerplate... Fortunately, there's a better way: ```cpp // create a person ns::person p {"Ned Flanders", "744 Evergreen Terrace", 60}; // conversion: person -> json json j = p; std::cout << j << std::endl; // {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} // conversion: json -> person auto p2 = j.template get(); // that's it assert(p == p2); ``` #### Basic usage To make this work with one of your types, you only need to provide two functions: ```cpp using json = nlohmann::json; namespace ns { void to_json(json& j, const person& p) { j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}}; } void from_json(const json& j, person& p) { j.at("name").get_to(p.name); j.at("address").get_to(p.address); j.at("age").get_to(p.age); } } // namespace ns ``` That's all! When calling the `json` constructor with your type, your custom `to_json` method will be automatically called. Likewise, when calling `template get()` or `get_to(your_type&)`, the `from_json` method will be called. Some important things: * Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). * Those methods **MUST** be available (e.g., proper headers must be included) everywhere you use these conversions. Look at [issue 1108](https://github.com/nlohmann/json/issues/1108) for errors that may occur otherwise. * When using `template get()`, `your_type` **MUST** be [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). (There is a way to bypass this requirement described later.) * In function `from_json`, use function [`at()`](https://json.nlohmann.me/api/basic_json/at/) to access the object values rather than `operator[]`. In case a key does not exist, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior. * You do not need to add serializers or deserializers for STL types like `std::vector`: the library already implements these. #### Simplify your life with macros If you just want to serialize/deserialize some structs, the `to_json`/`from_json` functions can be a lot of boilerplate. There are two macros to make your life easier as long as you (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object: - `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(name, member1, member2, ...)` is to be defined inside the namespace of the class/struct to create code for. - `NLOHMANN_DEFINE_TYPE_INTRUSIVE(name, member1, member2, ...)` is to be defined inside the class/struct to create code for. This macro can also access private members. In both macros, the first parameter is the name of the class/struct, and all remaining parameters name the members. ##### Examples The `to_json`/`from_json` functions for the `person` struct above can be created with: ```cpp namespace ns { NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age) } ``` Here is an example with private members, where `NLOHMANN_DEFINE_TYPE_INTRUSIVE` is needed: ```cpp namespace ns { class address { private: std::string street; int housenumber; int postcode; public: NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode) }; } ``` #### How do I convert third-party types? This requires a bit more advanced technique. But first, let's see how this conversion mechanism works: The library uses **JSON Serializers** to convert types to json. The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)). It is implemented like this (simplified): ```cpp template struct adl_serializer { static void to_json(json& j, const T& value) { // calls the "to_json" method in T's namespace } static void from_json(const json& j, T& value) { // same thing, but with the "from_json" method } }; ``` This serializer works fine when you have control over the type's namespace. However, what about `boost::optional` or `std::filesystem::path` (C++17)? Hijacking the `boost` namespace is pretty bad, and it's illegal to add something other than template specializations to `std`... To solve this, you need to add a specialization of `adl_serializer` to the `nlohmann` namespace, here's an example: ```cpp // partial specialization (full specialization works too) namespace nlohmann { template struct adl_serializer> { static void to_json(json& j, const boost::optional& opt) { if (opt == boost::none) { j = nullptr; } else { j = *opt; // this will call adl_serializer::to_json which will // find the free function to_json in T's namespace! } } static void from_json(const json& j, boost::optional& opt) { if (j.is_null()) { opt = boost::none; } else { opt = j.template get(); // same as above, but with // adl_serializer::from_json } } }; } ``` #### How can I use `get()` for non-default constructible/non-copyable types? There is a way, if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: ```cpp struct move_only_type { move_only_type() = delete; move_only_type(int ii): i(ii) {} move_only_type(const move_only_type&) = delete; move_only_type(move_only_type&&) = default; int i; }; namespace nlohmann { template <> struct adl_serializer { // note: the return type is no longer 'void', and the method only takes // one argument static move_only_type from_json(const json& j) { return {j.template get()}; } // Here's the catch! You must provide a to_json method! Otherwise, you // will not be able to convert move_only_type to json, since you fully // specialized adl_serializer on that type static void to_json(json& j, move_only_type t) { j = t.i; } }; } ``` #### Can I write my own serializer? (Advanced use) Yes. You might want to take a look at [`unit-udt.cpp`](https://github.com/nlohmann/json/blob/develop/tests/src/unit-udt.cpp) in the test suite, to see a few examples. If you write your own serializer, you'll need to do a few things: - use a different `basic_json` alias than `nlohmann::json` (the last template parameter of `basic_json` is the `JSONSerializer`) - use your `basic_json` alias (or a template parameter) in all your `to_json`/`from_json` methods - use `nlohmann::to_json` and `nlohmann::from_json` when you need ADL Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL. ```cpp // You should use void as a second template argument // if you don't need compile-time checks on T template::type> struct less_than_32_serializer { template static void to_json(BasicJsonType& j, T value) { // we want to use ADL, and call the correct to_json overload using nlohmann::to_json; // this method is called by adl_serializer, // this is where the magic happens to_json(j, value); } template static void from_json(const BasicJsonType& j, T& value) { // same thing here using nlohmann::from_json; from_json(j, value); } }; ``` Be **very** careful when reimplementing your serializer, you can stack overflow if you don't pay attention: ```cpp template struct bad_serializer { template static void to_json(BasicJsonType& j, const T& value) { // this calls BasicJsonType::json_serializer::to_json(j, value); // if BasicJsonType::json_serializer == bad_serializer ... oops! j = value; } template static void to_json(const BasicJsonType& j, T& value) { // this calls BasicJsonType::json_serializer::from_json(j, value); // if BasicJsonType::json_serializer == bad_serializer ... oops! value = j.template get(); // oops! } }; ``` ### Specializing enum conversion By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended. It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below: ```cpp // example enum type declaration enum TaskState { TS_STOPPED, TS_RUNNING, TS_COMPLETED, TS_INVALID=-1, }; // map TaskState values to JSON as strings NLOHMANN_JSON_SERIALIZE_ENUM( TaskState, { {TS_INVALID, nullptr}, {TS_STOPPED, "stopped"}, {TS_RUNNING, "running"}, {TS_COMPLETED, "completed"}, }) ``` The `NLOHMANN_JSON_SERIALIZE_ENUM()` macro declares a set of `to_json()` / `from_json()` functions for type `TaskState` while avoiding repetition and boilerplate serialization code. **Usage:** ```cpp // enum to JSON as string json j = TS_STOPPED; assert(j == "stopped"); // json string to enum json j3 = "running"; assert(j3.template get() == TS_RUNNING); // undefined json value to enum (where the first map entry above is the default) json jPi = 3.14; assert(jPi.template get() == TS_INVALID ); ``` Just as in [Arbitrary Type Conversions](#arbitrary-types-conversions) above, - `NLOHMANN_JSON_SERIALIZE_ENUM()` MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization. - It MUST be available (e.g., proper headers must be included) everywhere you use the conversions. Other Important points: - When using `template get()`, undefined JSON values will default to the first pair specified in your map. Select this default pair carefully. - If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from JSON. ### Binary formats (BSON, CBOR, MessagePack, UBJSON, and BJData) Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports [BSON](https://bsonspec.org) (Binary JSON), [CBOR](https://cbor.io) (Concise Binary Object Representation), [MessagePack](https://msgpack.org), [UBJSON](https://ubjson.org) (Universal Binary JSON Specification) and [BJData](https://neurojson.org/bjdata) (Binary JData) to efficiently encode JSON values to byte vectors and to decode such vectors. ```cpp // create a JSON value json j = R"({"compact": true, "schema": 0})"_json; // serialize to BSON std::vector v_bson = json::to_bson(j); // 0x1B, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // roundtrip json j_from_bson = json::from_bson(v_bson); // serialize to CBOR std::vector v_cbor = json::to_cbor(j); // 0xA2, 0x67, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xF5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00 // roundtrip json j_from_cbor = json::from_cbor(v_cbor); // serialize to MessagePack std::vector v_msgpack = json::to_msgpack(j); // 0x82, 0xA7, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xC3, 0xA6, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00 // roundtrip json j_from_msgpack = json::from_msgpack(v_msgpack); // serialize to UBJSON std::vector v_ubjson = json::to_ubjson(j); // 0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D // roundtrip json j_from_ubjson = json::from_ubjson(v_ubjson); ``` The library also supports binary types from BSON, CBOR (byte strings), and MessagePack (bin, ext, fixext). They are stored by default as `std::vector` to be processed outside the library. ```cpp // CBOR byte string with payload 0xCAFE std::vector v = {0x42, 0xCA, 0xFE}; // read value json j = json::from_cbor(v); // the JSON value has type binary j.is_binary(); // true // get reference to stored binary value auto& binary = j.get_binary(); // the binary value has no subtype (CBOR has no binary subtypes) binary.has_subtype(); // false // access std::vector member functions binary.size(); // 2 binary[0]; // 0xCA binary[1]; // 0xFE // set subtype to 0x10 binary.set_subtype(0x10); // serialize to MessagePack auto cbor = json::to_msgpack(j); // 0xD5 (fixext2), 0x10, 0xCA, 0xFE ``` ## Supported compilers Though it's 2023 already, the support for C++11 is still a bit sparse. Currently, the following compilers are known to work: - GCC 4.8 - 12.0 (and possibly later) - Clang 3.4 - 15.0 (and possibly later) - Apple Clang 9.1 - 13.1 (and possibly later) - Intel C++ Compiler 17.0.2 (and possibly later) - Nvidia CUDA Compiler 11.0.221 (and possibly later) - Microsoft Visual C++ 2015 / Build Tools 14.0.25123.0 (and possibly later) - Microsoft Visual C++ 2017 / Build Tools 15.5.180.51428 (and possibly later) - Microsoft Visual C++ 2019 / Build Tools 16.3.1+1def00d3d (and possibly later) - Microsoft Visual C++ 2022 / Build Tools 19.30.30709.0 (and possibly later) I would be happy to learn about other compilers/versions. Please note: - GCC 4.8 has a bug [57824](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824)): multiline raw strings cannot be the arguments to macros. Don't use multiline raw strings directly in macros with this compiler. - Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your `Application.mk`. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default. ``` APP_STL := c++_shared NDK_TOOLCHAIN_VERSION := clang3.6 APP_CPPFLAGS += -frtti -fexceptions ``` The code compiles successfully with [Android NDK](https://developer.android.com/ndk/index.html?hl=ml), Revision 9 - 11 (and possibly later) and [CrystaX's Android NDK](https://www.crystax.net/en/android/ndk) version 10. - For GCC running on MinGW or Android SDK, the error `'to_string' is not a member of 'std'` (or similarly, for `strtod` or `strtof`) may occur. Note this is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to [this site](https://tehsausage.com/mingw-to-string) and [this discussion](https://github.com/nlohmann/json/issues/136) for information on how to fix this bug. For Android NDK using `APP_STL := gnustl_static`, please refer to [this discussion](https://github.com/nlohmann/json/issues/219). - Unsupported versions of GCC and Clang are rejected by `#error` directives. This can be switched off by defining `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK`. Note that you can expect no support in this case. The following compilers are currently used in continuous integration at [AppVeyor](https://ci.appveyor.com/project/nlohmann/json), [Cirrus CI](https://cirrus-ci.com/github/nlohmann/json), and [GitHub Actions](https://github.com/nlohmann/json/actions): | Compiler | Operating System | CI Provider | |--------------------------------------------------------------------------------------------------------|--------------------|----------------| | Apple Clang 11.0.3 (clang-1103.0.32.62); Xcode 11.7 | macOS 11.7.1 | GitHub Actions | | Apple Clang 12.0.0 (clang-1200.0.32.29); Xcode 12.4 | macOS 11.7.1 | GitHub Actions | | Apple Clang 12.0.5 (clang-1205.0.22.11); Xcode 12.5.1 | macOS 11.7.1 | GitHub Actions | | Apple Clang 13.0.0 (clang-1300.0.29.3); Xcode 13.0 | macOS 11.7.1 | GitHub Actions | | Apple Clang 13.0.0 (clang-1300.0.29.3); Xcode 13.1 | macOS 12.6.1 | GitHub Actions | | Apple Clang 13.0.0 (clang-1300.0.29.30); Xcode 13.2.1 | macOS 12.6.1 | GitHub Actions | | Apple Clang 13.1.6 (clang-1316.0.21.2.3); Xcode 13.3.1 | macOS 12.6.1 | GitHub Actions | | Apple Clang 13.1.6 (clang-1316.0.21.2.5); Xcode 13.4.1 | macOS 12.6.1 | GitHub Actions | | Apple Clang 14.0.0 (clang-1400.0.29.102); Xcode 14.0 | macOS 12.6.1 | GitHub Actions | | Apple Clang 14.0.0 (clang-1400.0.29.102); Xcode 14.0.1 | macOS 12.6.1 | GitHub Actions | | Apple Clang 14.0.0 (clang-1400.0.29.202); Xcode 14.1 | macOS 12.6.1 | GitHub Actions | | Clang 3.5.2 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 3.6.2 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 3.7.1 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 3.8.1 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 3.9.1 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 4.0.1 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 5.0.2 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 6.0.1 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 7.0.1 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 8.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 9.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 10.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 10.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 11.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 11.0.0 with MSVC-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 11.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 12.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 12.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 13.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 13.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 14.0.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 14.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 15.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | | Clang 15.0.4 | Ubuntu 20.04.3 LTS | GitHub Actions | | Clang 16.0.0 (16.0.0-++20221031071727+500876226c60-1~exp1~20221031071831.439) | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 4.8.5 (Ubuntu 4.8.5-4ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 4.9.4 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 5.5.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 6.5.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 7.5.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 8.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project) | Windows-10.0.17763 | GitHub Actions | | GCC 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) | Windows-10.0.17763 | GitHub Actions | | GCC 8.5.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 9.5.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 10.4.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 11.1.0 | Ubuntu (aarch64) | Cirrus CI | | GCC 11.3.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 12.2.0 | Ubuntu 20.04.3 LTS | GitHub Actions | | GCC 13.0.0 20220605 (experimental) | Ubuntu 20.04.3 LTS | GitHub Actions | | Intel C++ Compiler 2021.5.0.20211109 | Ubuntu 20.04.3 LTS | GitHub Actions | | NVCC 11.0.221 | Ubuntu 20.04.3 LTS | GitHub Actions | | Visual Studio 14 2015 MSVC 19.0.24241.7 (Build Engine version 14.0.25420.1) | Windows-6.3.9600 | AppVeyor | | Visual Studio 15 2017 MSVC 19.16.27035.0 (Build Engine version 15.9.21+g9802d43bc3 for .NET Framework) | Windows-10.0.14393 | AppVeyor | | Visual Studio 16 2019 MSVC 19.28.29912.0 (Build Engine version 16.9.0+57a23d249 for .NET Framework) | Windows-10.0.17763 | GitHub Actions | | Visual Studio 16 2019 MSVC 19.28.29912.0 (Build Engine version 16.9.0+57a23d249 for .NET Framework) | Windows-10.0.17763 | AppVeyor | | Visual Studio 17 2022 MSVC 19.30.30709.0 (Build Engine version 17.0.31804.368 for .NET Framework) | Windows-10.0.20348 | GitHub Actions | ## Integration [`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) is the single required file in `single_include/nlohmann` or [released here](https://github.com/nlohmann/json/releases). You need to add ```cpp #include // for convenience using json = nlohmann::json; ``` to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). You can further use file [`include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`. ### CMake You can also use the `nlohmann_json::nlohmann_json` interface target in CMake. This target populates the appropriate usage requirements for `INTERFACE_INCLUDE_DIRECTORIES` to point to the appropriate include directories and `INTERFACE_COMPILE_FEATURES` for the necessary C++11 flags. #### External To use this library from a CMake project, you can locate it directly with `find_package()` and use the namespaced imported target from the generated package configuration: ```cmake # CMakeLists.txt find_package(nlohmann_json 3.2.0 REQUIRED) ... add_library(foo ...) ... target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) ``` The package configuration file, `nlohmann_jsonConfig.cmake`, can be used either from an install tree or directly out of the build tree. #### Embedded To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call `add_subdirectory()` in your `CMakeLists.txt` file: ```cmake # Typically you don't care so much for a third party library's tests to be # run from your own project's code. set(JSON_BuildTests OFF CACHE INTERNAL "") # If you only include this third party in PRIVATE source files, you do not # need to install it when your main project gets installed. # set(JSON_Install OFF CACHE INTERNAL "") # Don't use include(nlohmann_json/CMakeLists.txt) since that carries with it # unintended consequences that will break the build. It's generally # discouraged (although not necessarily well documented as such) to use # include(...) for pulling in other CMake projects anyways. add_subdirectory(nlohmann_json) ... add_library(foo ...) ... target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) ``` ##### Embedded (FetchContent) Since CMake v3.11, [FetchContent](https://cmake.org/cmake/help/v3.11/module/FetchContent.html) can be used to automatically download a release as a dependency at configure time. Example: ```cmake include(FetchContent) FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz) FetchContent_MakeAvailable(json) target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) ``` **Note**: It is recommended to use the URL approach described above which is supported as of version 3.10.0. See for more information. #### Supporting Both To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following: ``` cmake # Top level CMakeLists.txt project(FOO) ... option(FOO_USE_EXTERNAL_JSON "Use an external JSON library" OFF) ... add_subdirectory(thirdparty) ... add_library(foo ...) ... # Note that the namespaced target will always be available regardless of the # import method target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) ``` ```cmake # thirdparty/CMakeLists.txt ... if(FOO_USE_EXTERNAL_JSON) find_package(nlohmann_json 3.2.0 REQUIRED) else() set(JSON_BuildTests OFF CACHE INTERNAL "") add_subdirectory(nlohmann_json) endif() ... ``` `thirdparty/nlohmann_json` is then a complete copy of this source tree. ### Package Managers :beer: If you are using OS X and [Homebrew](https://brew.sh), just type `brew install nlohmann-json` and you're set. If you want the bleeding edge rather than the latest release, use `brew install nlohmann-json --HEAD`. See [nlohmann-json](https://formulae.brew.sh/formula/nlohmann-json) for more information. If you are using the [Meson Build System](https://mesonbuild.com), add this source tree as a [meson subproject](https://mesonbuild.com/Subprojects.html#using-a-subproject). You may also use the `include.zip` published in this project's [Releases](https://github.com/nlohmann/json/releases) to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from [Meson WrapDB](https://wrapdb.mesonbuild.com/nlohmann_json), or simply use `meson wrap install nlohmann_json`. Please see the meson project for any issues regarding the packaging. The provided `meson.build` can also be used as an alternative to CMake for installing `nlohmann_json` system-wide in which case a pkg-config file is installed. To use it, simply have your build system require the `nlohmann_json` pkg-config dependency. In Meson, it is preferred to use the [`dependency()`](https://mesonbuild.com/Reference-manual.html#dependency) object with a subproject fallback, rather than using the subproject directly. If you are using [Bazel](https://bazel.build/) you can simply reference this repository using `http_archive` or `git_repository` and depend on `@nlohmann_json//:json`. If you are using [Conan](https://www.conan.io/) to manage your dependencies, merely add [`nlohmann_json/x.y.z`](https://conan.io/center/nlohmann_json) to your `conanfile`'s requires, where `x.y.z` is the release version you want to use. Please file issues [here](https://github.com/conan-io/conan-center-index/issues) if you experience problems with the packages. If you are using [Spack](https://www.spack.io/) to manage your dependencies, you can use the [`nlohmann-json` package](https://spack.readthedocs.io/en/latest/package_list.html#nlohmann-json). Please see the [spack project](https://github.com/spack/spack) for any issues regarding the packaging. If you are using [hunter](https://github.com/cpp-pm/hunter) on your project for external dependencies, then you can use the [nlohmann_json package](https://hunter.readthedocs.io/en/latest/packages/pkg/nlohmann_json.html). Please see the hunter project for any issues regarding the packaging. If you are using [Buckaroo](https://buckaroo.pm), you can install this library's module with `buckaroo add github.com/buckaroo-pm/nlohmann-json`. Please file issues [here](https://github.com/buckaroo-pm/nlohmann-json). There is a demo repo [here](https://github.com/njlr/buckaroo-nholmann-json-example). If you are using [vcpkg](https://github.com/Microsoft/vcpkg/) on your project for external dependencies, then you can install the [nlohmann-json package](https://github.com/Microsoft/vcpkg/tree/master/ports/nlohmann-json) with `vcpkg install nlohmann-json` and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging. If you are using [cget](https://cget.readthedocs.io/en/latest/), you can install the latest development version with `cget install nlohmann/json`. A specific version can be installed with `cget install nlohmann/json@v3.1.0`. Also, the multiple header version can be installed by adding the `-DJSON_MultipleHeaders=ON` flag (i.e., `cget install nlohmann/json -DJSON_MultipleHeaders=ON`). If you are using [CocoaPods](https://cocoapods.org), you can use the library by adding pod `"nlohmann_json", '~>3.1.2'` to your podfile (see [an example](https://bitbucket.org/benman/nlohmann_json-cocoapod/src/master/)). Please file issues [here](https://bitbucket.org/benman/nlohmann_json-cocoapod/issues?status=new&status=open). If you are using [Swift Package Manager](https://swift.org/package-manager/), you can use the library by adding a package dependency to this repository. And target dependency as `.product(name: "nlohmann-json", package: "json")`. If you are using [NuGet](https://www.nuget.org), you can use the package [nlohmann.json](https://www.nuget.org/packages/nlohmann.json/). Please check [this extensive description](https://github.com/nlohmann/json/issues/1132#issuecomment-452250255) on how to use the package. Please file issues [here](https://github.com/hnkb/nlohmann-json-nuget/issues). If you are using [conda](https://conda.io/), you can use the package [nlohmann_json](https://github.com/conda-forge/nlohmann_json-feedstock) from [conda-forge](https://conda-forge.org) executing `conda install -c conda-forge nlohmann_json`. Please file issues [here](https://github.com/conda-forge/nlohmann_json-feedstock/issues). If you are using [MSYS2](https://www.msys2.org/), you can use the [mingw-w64-nlohmann-json](https://packages.msys2.org/base/mingw-w64-nlohmann-json) package, just type `pacman -S mingw-w64-i686-nlohmann-json` or `pacman -S mingw-w64-x86_64-nlohmann-json` for installation. Please file issues [here](https://github.com/msys2/MINGW-packages/issues/new?title=%5Bnlohmann-json%5D) if you experience problems with the packages. If you are using [MacPorts](https://ports.macports.org), execute `sudo port install nlohmann-json` to install the [nlohmann-json](https://ports.macports.org/port/nlohmann-json/) package. If you are using [`build2`](https://build2.org), you can use the [`nlohmann-json`](https://cppget.org/nlohmann-json) package from the public repository https://cppget.org or directly from the [package's sources repository](https://github.com/build2-packaging/nlohmann-json). In your project's `manifest` file, just add `depends: nlohmann-json` (probably with some [version constraints](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml#guide-add-remove-deps)). If you are not familiar with using dependencies in `build2`, [please read this introduction](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml). Please file issues [here](https://github.com/build2-packaging/nlohmann-json) if you experience problems with the packages. If you are using [`wsjcpp`](https://wsjcpp.org), you can use the command `wsjcpp install "https://github.com/nlohmann/json:develop"` to get the latest version. Note you can change the branch ":develop" to an existing tag or another branch. If you are using [`CPM.cmake`](https://github.com/TheLartians/CPM.cmake), you can check this [`example`](https://github.com/TheLartians/CPM.cmake/tree/master/examples/json). After [adding CPM script](https://github.com/TheLartians/CPM.cmake#adding-cpm) to your project, implement the following snippet to your CMake: ```cmake CPMAddPackage( NAME nlohmann_json GITHUB_REPOSITORY nlohmann/json VERSION 3.9.1) ``` ### Pkg-config If you are using bare Makefiles, you can use `pkg-config` to generate the include flags that point to where the library is installed: ```sh pkg-config nlohmann_json --cflags ``` Users of the Meson build system will also be able to use a system-wide library, which will be found by `pkg-config`: ```meson json = dependency('nlohmann_json', required: true) ``` ## License The class is licensed under the [MIT License](https://opensource.org/licenses/MIT): Copyright © 2013-2022 [Niels Lohmann](https://nlohmann.me) 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. * * * The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the [MIT License](https://opensource.org/licenses/MIT) (see above). Copyright © 2008-2009 [Björn Hoehrmann](https://bjoern.hoehrmann.de/) The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the [MIT License](https://opensource.org/licenses/MIT) (see above). Copyright © 2009 [Florian Loitsch](https://florian.loitsch.com/) The class contains a copy of [Hedley](https://nemequ.github.io/hedley/) from Evan Nemerson which is licensed as [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/). The class contains parts of [Google Abseil](https://github.com/abseil/abseil-cpp) which is licensed under the [Apache 2.0 License](https://opensource.org/licenses/Apache-2.0). ## Contact If you have questions regarding the library, I would like to invite you to [open an issue at GitHub](https://github.com/nlohmann/json/issues/new/choose). Please describe your request, problem, or question as detailed as possible, and also mention the version of the library you are using as well as the version of your compiler and operating system. Opening an issue at GitHub allows other users and contributors to this library to collaborate. For instance, I have little experience with MSVC, and most issues in this regard have been solved by a growing community. If you have a look at the [closed issues](https://github.com/nlohmann/json/issues?q=is%3Aissue+is%3Aclosed), you will see that we react quite timely in most cases. Only if your request would contain confidential information, please [send me an email](mailto:mail@nlohmann.me). For encrypted messages, please use [this key](https://keybase.io/nlohmann/pgp_keys.asc). ## Security [Commits by Niels Lohmann](https://github.com/nlohmann/json/commits) and [releases](https://github.com/nlohmann/json/releases) are signed with this [PGP Key](https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69). ## Thanks I deeply appreciate the help of the following people. 1. [Teemperor](https://github.com/Teemperor) implemented CMake support and lcov integration, realized escape and Unicode handling in the string parser, and fixed the JSON serialization. 2. [elliotgoodrich](https://github.com/elliotgoodrich) fixed an issue with double deletion in the iterator classes. 3. [kirkshoop](https://github.com/kirkshoop) made the iterators of the class composable to other libraries. 4. [wancw](https://github.com/wanwc) fixed a bug that hindered the class to compile with Clang. 5. Tomas Åblad found a bug in the iterator implementation. 6. [Joshua C. Randall](https://github.com/jrandall) fixed a bug in the floating-point serialization. 7. [Aaron Burghardt](https://github.com/aburgh) implemented code to parse streams incrementally. Furthermore, he greatly improved the parser class by allowing the definition of a filter function to discard undesired elements while parsing. 8. [Daniel Kopeček](https://github.com/dkopecek) fixed a bug in the compilation with GCC 5.0. 9. [Florian Weber](https://github.com/Florianjw) fixed a bug in and improved the performance of the comparison operators. 10. [Eric Cornelius](https://github.com/EricMCornelius) pointed out a bug in the handling with NaN and infinity values. He also improved the performance of the string escaping. 11. [易思龙](https://github.com/likebeta) implemented a conversion from anonymous enums. 12. [kepkin](https://github.com/kepkin) patiently pushed forward the support for Microsoft Visual studio. 13. [gregmarr](https://github.com/gregmarr) simplified the implementation of reverse iterators and helped with numerous hints and improvements. In particular, he pushed forward the implementation of user-defined types. 14. [Caio Luppi](https://github.com/caiovlp) fixed a bug in the Unicode handling. 15. [dariomt](https://github.com/dariomt) fixed some typos in the examples. 16. [Daniel Frey](https://github.com/d-frey) cleaned up some pointers and implemented exception-safe memory allocation. 17. [Colin Hirsch](https://github.com/ColinH) took care of a small namespace issue. 18. [Huu Nguyen](https://github.com/whoshuu) correct a variable name in the documentation. 19. [Silverweed](https://github.com/silverweed) overloaded `parse()` to accept an rvalue reference. 20. [dariomt](https://github.com/dariomt) fixed a subtlety in MSVC type support and implemented the `get_ref()` function to get a reference to stored values. 21. [ZahlGraf](https://github.com/ZahlGraf) added a workaround that allows compilation using Android NDK. 22. [whackashoe](https://github.com/whackashoe) replaced a function that was marked as unsafe by Visual Studio. 23. [406345](https://github.com/406345) fixed two small warnings. 24. [Glen Fernandes](https://github.com/glenfe) noted a potential portability problem in the `has_mapped_type` function. 25. [Corbin Hughes](https://github.com/nibroc) fixed some typos in the contribution guidelines. 26. [twelsby](https://github.com/twelsby) fixed the array subscript operator, an issue that failed the MSVC build, and floating-point parsing/dumping. He further added support for unsigned integer numbers and implemented better roundtrip support for parsed numbers. 27. [Volker Diels-Grabsch](https://github.com/vog) fixed a link in the README file. 28. [msm-](https://github.com/msm-) added support for American Fuzzy Lop. 29. [Annihil](https://github.com/Annihil) fixed an example in the README file. 30. [Themercee](https://github.com/Themercee) noted a wrong URL in the README file. 31. [Lv Zheng](https://github.com/lv-zheng) fixed a namespace issue with `int64_t` and `uint64_t`. 32. [abc100m](https://github.com/abc100m) analyzed the issues with GCC 4.8 and proposed a [partial solution](https://github.com/nlohmann/json/pull/212). 33. [zewt](https://github.com/zewt) added useful notes to the README file about Android. 34. [Róbert Márki](https://github.com/robertmrk) added a fix to use move iterators and improved the integration via CMake. 35. [Chris Kitching](https://github.com/ChrisKitching) cleaned up the CMake files. 36. [Tom Needham](https://github.com/06needhamt) fixed a subtle bug with MSVC 2015 which was also proposed by [Michael K.](https://github.com/Epidal). 37. [Mário Feroldi](https://github.com/thelostt) fixed a small typo. 38. [duncanwerner](https://github.com/duncanwerner) found a really embarrassing performance regression in the 2.0.0 release. 39. [Damien](https://github.com/dtoma) fixed one of the last conversion warnings. 40. [Thomas Braun](https://github.com/t-b) fixed a warning in a test case and adjusted MSVC calls in the CI. 41. [Théo DELRIEU](https://github.com/theodelrieu) patiently and constructively oversaw the long way toward [iterator-range parsing](https://github.com/nlohmann/json/issues/290). He also implemented the magic behind the serialization/deserialization of user-defined types and split the single header file into smaller chunks. 42. [Stefan](https://github.com/5tefan) fixed a minor issue in the documentation. 43. [Vasil Dimov](https://github.com/vasild) fixed the documentation regarding conversions from `std::multiset`. 44. [ChristophJud](https://github.com/ChristophJud) overworked the CMake files to ease project inclusion. 45. [Vladimir Petrigo](https://github.com/vpetrigo) made a SFINAE hack more readable and added Visual Studio 17 to the build matrix. 46. [Denis Andrejew](https://github.com/seeekr) fixed a grammar issue in the README file. 47. [Pierre-Antoine Lacaze](https://github.com/palacaze) found a subtle bug in the `dump()` function. 48. [TurpentineDistillery](https://github.com/TurpentineDistillery) pointed to [`std::locale::classic()`](https://en.cppreference.com/w/cpp/locale/locale/classic) to avoid too much locale joggling, found some nice performance improvements in the parser, improved the benchmarking code, and realized locale-independent number parsing and printing. 49. [cgzones](https://github.com/cgzones) had an idea how to fix the Coverity scan. 50. [Jared Grubb](https://github.com/jaredgrubb) silenced a nasty documentation warning. 51. [Yixin Zhang](https://github.com/qwename) fixed an integer overflow check. 52. [Bosswestfalen](https://github.com/Bosswestfalen) merged two iterator classes into a smaller one. 53. [Daniel599](https://github.com/Daniel599) helped to get Travis execute the tests with Clang's sanitizers. 54. [Jonathan Lee](https://github.com/vjon) fixed an example in the README file. 55. [gnzlbg](https://github.com/gnzlbg) supported the implementation of user-defined types. 56. [Alexej Harm](https://github.com/qis) helped to get the user-defined types working with Visual Studio. 57. [Jared Grubb](https://github.com/jaredgrubb) supported the implementation of user-defined types. 58. [EnricoBilla](https://github.com/EnricoBilla) noted a typo in an example. 59. [Martin Hořeňovský](https://github.com/horenmar) found a way for a 2x speedup for the compilation time of the test suite. 60. [ukhegg](https://github.com/ukhegg) found proposed an improvement for the examples section. 61. [rswanson-ihi](https://github.com/rswanson-ihi) noted a typo in the README. 62. [Mihai Stan](https://github.com/stanmihai4) fixed a bug in the comparison with `nullptr`s. 63. [Tushar Maheshwari](https://github.com/tusharpm) added [cotire](https://github.com/sakra/cotire) support to speed up the compilation. 64. [TedLyngmo](https://github.com/TedLyngmo) noted a typo in the README, removed unnecessary bit arithmetic, and fixed some `-Weffc++` warnings. 65. [Krzysztof Woś](https://github.com/krzysztofwos) made exceptions more visible. 66. [ftillier](https://github.com/ftillier) fixed a compiler warning. 67. [tinloaf](https://github.com/tinloaf) made sure all pushed warnings are properly popped. 68. [Fytch](https://github.com/Fytch) found a bug in the documentation. 69. [Jay Sistar](https://github.com/Type1J) implemented a Meson build description. 70. [Henry Lee](https://github.com/HenryRLee) fixed a warning in ICC and improved the iterator implementation. 71. [Vincent Thiery](https://github.com/vthiery) maintains a package for the Conan package manager. 72. [Steffen](https://github.com/koemeet) fixed a potential issue with MSVC and `std::min`. 73. [Mike Tzou](https://github.com/Chocobo1) fixed some typos. 74. [amrcode](https://github.com/amrcode) noted a misleading documentation about comparison of floats. 75. [Oleg Endo](https://github.com/olegendo) reduced the memory consumption by replacing `` with ``. 76. [dan-42](https://github.com/dan-42) cleaned up the CMake files to simplify including/reusing of the library. 77. [Nikita Ofitserov](https://github.com/himikof) allowed for moving values from initializer lists. 78. [Greg Hurrell](https://github.com/wincent) fixed a typo. 79. [Dmitry Kukovinets](https://github.com/DmitryKuk) fixed a typo. 80. [kbthomp1](https://github.com/kbthomp1) fixed an issue related to the Intel OSX compiler. 81. [Markus Werle](https://github.com/daixtrose) fixed a typo. 82. [WebProdPP](https://github.com/WebProdPP) fixed a subtle error in a precondition check. 83. [Alex](https://github.com/leha-bot) noted an error in a code sample. 84. [Tom de Geus](https://github.com/tdegeus) reported some warnings with ICC and helped to fix them. 85. [Perry Kundert](https://github.com/pjkundert) simplified reading from input streams. 86. [Sonu Lohani](https://github.com/sonulohani) fixed a small compilation error. 87. [Jamie Seward](https://github.com/jseward) fixed all MSVC warnings. 88. [Nate Vargas](https://github.com/eld00d) added a Doxygen tag file. 89. [pvleuven](https://github.com/pvleuven) helped to fix a warning in ICC. 90. [Pavel](https://github.com/crea7or) helped to fix some warnings in MSVC. 91. [Jamie Seward](https://github.com/jseward) avoided unnecessary string copies in `find()` and `count()`. 92. [Mitja](https://github.com/Itja) fixed some typos. 93. [Jorrit Wronski](https://github.com/jowr) updated the Hunter package links. 94. [Matthias Möller](https://github.com/TinyTinni) added a `.natvis` for the MSVC debug view. 95. [bogemic](https://github.com/bogemic) fixed some C++17 deprecation warnings. 96. [Eren Okka](https://github.com/erengy) fixed some MSVC warnings. 97. [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed. 98. [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README. 99. [zerodefect](https://github.com/zerodefect) fixed a compiler warning. 100. [Kert](https://github.com/kaidokert) allowed to template the string type in the serialization and added the possibility to override the exceptional behavior. 101. [mark-99](https://github.com/mark-99) helped fixing an ICC error. 102. [Patrik Huber](https://github.com/patrikhuber) fixed links in the README file. 103. [johnfb](https://github.com/johnfb) found a bug in the implementation of CBOR's indefinite length strings. 104. [Paul Fultz II](https://github.com/pfultz2) added a note on the cget package manager. 105. [Wilson Lin](https://github.com/wla80) made the integration section of the README more concise. 106. [RalfBielig](https://github.com/ralfbielig) detected and fixed a memory leak in the parser callback. 107. [agrianius](https://github.com/agrianius) allowed to dump JSON to an alternative string type. 108. [Kevin Tonon](https://github.com/ktonon) overworked the C++11 compiler checks in CMake. 109. [Axel Huebl](https://github.com/ax3l) simplified a CMake check and added support for the [Spack package manager](https://spack.io). 110. [Carlos O'Ryan](https://github.com/coryan) fixed a typo. 111. [James Upjohn](https://github.com/jammehcow) fixed a version number in the compilers section. 112. [Chuck Atkins](https://github.com/chuckatkins) adjusted the CMake files to the CMake packaging guidelines and provided documentation for the CMake integration. 113. [Jan Schöppach](https://github.com/dns13) fixed a typo. 114. [martin-mfg](https://github.com/martin-mfg) fixed a typo. 115. [Matthias Möller](https://github.com/TinyTinni) removed the dependency from `std::stringstream`. 116. [agrianius](https://github.com/agrianius) added code to use alternative string implementations. 117. [Daniel599](https://github.com/Daniel599) allowed to use more algorithms with the `items()` function. 118. [Julius Rakow](https://github.com/jrakow) fixed the Meson include directory and fixed the links to [cppreference.com](cppreference.com). 119. [Sonu Lohani](https://github.com/sonulohani) fixed the compilation with MSVC 2015 in debug mode. 120. [grembo](https://github.com/grembo) fixed the test suite and re-enabled several test cases. 121. [Hyeon Kim](https://github.com/simnalamburt) introduced the macro `JSON_INTERNAL_CATCH` to control the exception handling inside the library. 122. [thyu](https://github.com/thyu) fixed a compiler warning. 123. [David Guthrie](https://github.com/LEgregius) fixed a subtle compilation error with Clang 3.4.2. 124. [Dennis Fischer](https://github.com/dennisfischer) allowed to call `find_package` without installing the library. 125. [Hyeon Kim](https://github.com/simnalamburt) fixed an issue with a double macro definition. 126. [Ben Berman](https://github.com/rivertam) made some error messages more understandable. 127. [zakalibit](https://github.com/zakalibit) fixed a compilation problem with the Intel C++ compiler. 128. [mandreyel](https://github.com/mandreyel) fixed a compilation problem. 129. [Kostiantyn Ponomarenko](https://github.com/koponomarenko) added version and license information to the Meson build file. 130. [Henry Schreiner](https://github.com/henryiii) added support for GCC 4.8. 131. [knilch](https://github.com/knilch0r) made sure the test suite does not stall when run in the wrong directory. 132. [Antonio Borondo](https://github.com/antonioborondo) fixed an MSVC 2017 warning. 133. [Dan Gendreau](https://github.com/dgendreau) implemented the `NLOHMANN_JSON_SERIALIZE_ENUM` macro to quickly define an enum/JSON mapping. 134. [efp](https://github.com/efp) added line and column information to parse errors. 135. [julian-becker](https://github.com/julian-becker) added BSON support. 136. [Pratik Chowdhury](https://github.com/pratikpc) added support for structured bindings. 137. [David Avedissian](https://github.com/davedissian) added support for Clang 5.0.1 (PS4 version). 138. [Jonathan Dumaresq](https://github.com/dumarjo) implemented an input adapter to read from `FILE*`. 139. [kjpus](https://github.com/kjpus) fixed a link in the documentation. 140. [Manvendra Singh](https://github.com/manu-chroma) fixed a typo in the documentation. 141. [ziggurat29](https://github.com/ziggurat29) fixed an MSVC warning. 142. [Sylvain Corlay](https://github.com/SylvainCorlay) added code to avoid an issue with MSVC. 143. [mefyl](https://github.com/mefyl) fixed a bug when JSON was parsed from an input stream. 144. [Millian Poquet](https://github.com/mpoquet) allowed to install the library via Meson. 145. [Michael Behrns-Miller](https://github.com/moodboom) found an issue with a missing namespace. 146. [Nasztanovics Ferenc](https://github.com/naszta) fixed a compilation issue with libc 2.12. 147. [Andreas Schwab](https://github.com/andreas-schwab) fixed the endian conversion. 148. [Mark-Dunning](https://github.com/Mark-Dunning) fixed a warning in MSVC. 149. [Gareth Sylvester-Bradley](https://github.com/garethsb-sony) added `operator/` for JSON Pointers. 150. [John-Mark](https://github.com/johnmarkwayve) noted a missing header. 151. [Vitaly Zaitsev](https://github.com/xvitaly) fixed compilation with GCC 9.0. 152. [Laurent Stacul](https://github.com/stac47) fixed compilation with GCC 9.0. 153. [Ivor Wanders](https://github.com/iwanders) helped to reduce the CMake requirement to version 3.1. 154. [njlr](https://github.com/njlr) updated the Buckaroo instructions. 155. [Lion](https://github.com/lieff) fixed a compilation issue with GCC 7 on CentOS. 156. [Isaac Nickaein](https://github.com/nickaein) improved the integer serialization performance and implemented the `contains()` function. 157. [past-due](https://github.com/past-due) suppressed an unfixable warning. 158. [Elvis Oric](https://github.com/elvisoric) improved Meson support. 159. [Matěj Plch](https://github.com/Afforix) fixed an example in the README. 160. [Mark Beckwith](https://github.com/wythe) fixed a typo. 161. [scinart](https://github.com/scinart) fixed bug in the serializer. 162. [Patrick Boettcher](https://github.com/pboettch) implemented `push_back()` and `pop_back()` for JSON Pointers. 163. [Bruno Oliveira](https://github.com/nicoddemus) added support for Conda. 164. [Michele Caini](https://github.com/skypjack) fixed links in the README. 165. [Hani](https://github.com/hnkb) documented how to install the library with NuGet. 166. [Mark Beckwith](https://github.com/wythe) fixed a typo. 167. [yann-morin-1998](https://github.com/yann-morin-1998) helped to reduce the CMake requirement to version 3.1. 168. [Konstantin Podsvirov](https://github.com/podsvirov) maintains a package for the MSYS2 software distro. 169. [remyabel](https://github.com/remyabel) added GNUInstallDirs to the CMake files. 170. [Taylor Howard](https://github.com/taylorhoward92) fixed a unit test. 171. [Gabe Ron](https://github.com/Macr0Nerd) implemented the `to_string` method. 172. [Watal M. Iwasaki](https://github.com/heavywatal) fixed a Clang warning. 173. [Viktor Kirilov](https://github.com/onqtam) switched the unit tests from [Catch](https://github.com/philsquared/Catch) to [doctest](https://github.com/onqtam/doctest) 174. [Juncheng E](https://github.com/ejcjason) fixed a typo. 175. [tete17](https://github.com/tete17) fixed a bug in the `contains` function. 176. [Xav83](https://github.com/Xav83) fixed some cppcheck warnings. 177. [0xflotus](https://github.com/0xflotus) fixed some typos. 178. [Christian Deneke](https://github.com/chris0x44) added a const version of `json_pointer::back`. 179. [Julien Hamaide](https://github.com/crazyjul) made the `items()` function work with custom string types. 180. [Evan Nemerson](https://github.com/nemequ) updated fixed a bug in Hedley and updated this library accordingly. 181. [Florian Pigorsch](https://github.com/flopp) fixed a lot of typos. 182. [Camille Bégué](https://github.com/cbegue) fixed an issue in the conversion from `std::pair` and `std::tuple` to `json`. 183. [Anthony VH](https://github.com/AnthonyVH) fixed a compile error in an enum deserialization. 184. [Yuriy Vountesmery](https://github.com/ua-code-dragon) noted a subtle bug in a preprocessor check. 185. [Chen](https://github.com/dota17) fixed numerous issues in the library. 186. [Antony Kellermann](https://github.com/aokellermann) added a CI step for GCC 10.1. 187. [Alex](https://github.com/gistrec) fixed an MSVC warning. 188. [Rainer](https://github.com/rvjr) proposed an improvement in the floating-point serialization in CBOR. 189. [Francois Chabot](https://github.com/FrancoisChabot) made performance improvements in the input adapters. 190. [Arthur Sonzogni](https://github.com/ArthurSonzogni) documented how the library can be included via `FetchContent`. 191. [Rimas Misevičius](https://github.com/rmisev) fixed an error message. 192. [Alexander Myasnikov](https://github.com/alexandermyasnikov) fixed some examples and a link in the README. 193. [Hubert Chathi](https://github.com/uhoreg) made CMake's version config file architecture-independent. 194. [OmnipotentEntity](https://github.com/OmnipotentEntity) implemented the binary values for CBOR, MessagePack, BSON, and UBJSON. 195. [ArtemSarmini](https://github.com/ArtemSarmini) fixed a compilation issue with GCC 10 and fixed a leak. 196. [Evgenii Sopov](https://github.com/sea-kg) integrated the library to the wsjcpp package manager. 197. [Sergey Linev](https://github.com/linev) fixed a compiler warning. 198. [Miguel Magalhães](https://github.com/magamig) fixed the year in the copyright. 199. [Gareth Sylvester-Bradley](https://github.com/garethsb-sony) fixed a compilation issue with MSVC. 200. [Alexander “weej” Jones](https://github.com/alex-weej) fixed an example in the README. 201. [Antoine Cœur](https://github.com/Coeur) fixed some typos in the documentation. 202. [jothepro](https://github.com/jothepro) updated links to the Hunter package. 203. [Dave Lee](https://github.com/kastiglione) fixed link in the README. 204. [Joël Lamotte](https://github.com/Klaim) added instruction for using Build2's package manager. 205. [Paul Jurczak](https://github.com/pauljurczak) fixed an example in the README. 206. [Sonu Lohani](https://github.com/sonulohani) fixed a warning. 207. [Carlos Gomes Martinho](https://github.com/gocarlos) updated the Conan package source. 208. [Konstantin Podsvirov](https://github.com/podsvirov) fixed the MSYS2 package documentation. 209. [Tridacnid](https://github.com/Tridacnid) improved the CMake tests. 210. [Michael](https://github.com/MBalszun) fixed MSVC warnings. 211. [Quentin Barbarat](https://github.com/quentin-dev) fixed an example in the documentation. 212. [XyFreak](https://github.com/XyFreak) fixed a compiler warning. 213. [TotalCaesar659](https://github.com/TotalCaesar659) fixed links in the README. 214. [Tanuj Garg](https://github.com/tanuj208) improved the fuzzer coverage for UBSAN input. 215. [AODQ](https://github.com/AODQ) fixed a compiler warning. 216. [jwittbrodt](https://github.com/jwittbrodt) made `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` inline. 217. [pfeatherstone](https://github.com/pfeatherstone) improved the upper bound of arguments of the `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`/`NLOHMANN_DEFINE_TYPE_INTRUSIVE` macros. 218. [Jan Procházka](https://github.com/jprochazk) fixed a bug in the CBOR parser for binary and string values. 219. [T0b1-iOS](https://github.com/T0b1-iOS) fixed a bug in the new hash implementation. 220. [Matthew Bauer](https://github.com/matthewbauer) adjusted the CBOR writer to create tags for binary subtypes. 221. [gatopeich](https://github.com/gatopeich) implemented an ordered map container for `nlohmann::ordered_json`. 222. [Érico Nogueira Rolim](https://github.com/ericonr) added support for pkg-config. 223. [KonanM](https://github.com/KonanM) proposed an implementation for the `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`/`NLOHMANN_DEFINE_TYPE_INTRUSIVE` macros. 224. [Guillaume Racicot](https://github.com/gracicot) implemented `string_view` support and allowed C++20 support. 225. [Alex Reinking](https://github.com/alexreinking) improved CMake support for `FetchContent`. 226. [Hannes Domani](https://github.com/ssbssa) provided a GDB pretty printer. 227. Lars Wirzenius reviewed the README file. 228. [Jun Jie](https://github.com/ongjunjie) fixed a compiler path in the CMake scripts. 229. [Ronak Buch](https://github.com/rbuch) fixed typos in the documentation. 230. [Alexander Karzhenkov](https://github.com/karzhenkov) fixed a move constructor and the Travis builds. 231. [Leonardo Lima](https://github.com/leozz37) added CPM.Cmake support. 232. [Joseph Blackman](https://github.com/jbzdarkid) fixed a warning. 233. [Yaroslav](https://github.com/YarikTH) updated doctest and implemented unit tests. 234. [Martin Stump](https://github.com/globberwops) fixed a bug in the CMake files. 235. [Jaakko Moisio](https://github.com/jasujm) fixed a bug in the input adapters. 236. [bl-ue](https://github.com/bl-ue) fixed some Markdown issues in the README file. 237. [William A. Wieselquist](https://github.com/wawiesel) fixed an example from the README. 238. [abbaswasim](https://github.com/abbaswasim) fixed an example from the README. 239. [Remy Jette](https://github.com/remyjette) fixed a warning. 240. [Fraser](https://github.com/frasermarlow) fixed the documentation. 241. [Ben Beasley](https://github.com/musicinmybrain) updated doctest. 242. [Doron Behar](https://github.com/doronbehar) fixed pkg-config.pc. 243. [raduteo](https://github.com/raduteo) fixed a warning. 244. [David Pfahler](https://github.com/theShmoo) added the possibility to compile the library without I/O support. 245. [Morten Fyhn Amundsen](https://github.com/mortenfyhn) fixed a typo. 246. [jpl-mac](https://github.com/jpl-mac) allowed to treat the library as a system header in CMake. 247. [Jason Dsouza](https://github.com/jasmcaus) fixed the indentation of the CMake file. 248. [offa](https://github.com/offa) added a link to Conan Center to the documentation. 249. [TotalCaesar659](https://github.com/TotalCaesar659) updated the links in the documentation to use HTTPS. 250. [Rafail Giavrimis](https://github.com/grafail) fixed the Google Benchmark default branch. 251. [Louis Dionne](https://github.com/ldionne) fixed a conversion operator. 252. [justanotheranonymoususer](https://github.com/justanotheranonymoususer) made the examples in the README more consistent. 253. [Finkman](https://github.com/Finkman) suppressed some `-Wfloat-equal` warnings. 254. [Ferry Huberts](https://github.com/fhuberts) fixed `-Wswitch-enum` warnings. 255. [Arseniy Terekhin](https://github.com/senyai) made the GDB pretty-printer robust against unset variable names. 256. [Amir Masoud Abdol](https://github.com/amirmasoudabdol) updated the Homebrew command as nlohmann/json is now in homebrew-core. 257. [Hallot](https://github.com/Hallot) fixed some `-Wextra-semi-stmt warnings`. 258. [Giovanni Cerretani](https://github.com/gcerretani) fixed `-Wunused` warnings on `JSON_DIAGNOSTICS`. 259. [Bogdan Popescu](https://github.com/Kapeli) hosts the [docset](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B) for offline documentation viewers. 260. [Carl Smedstad](https://github.com/carlsmedstad) fixed an assertion error when using `JSON_DIAGNOSTICS`. 261. [miikka75](https://github.com/miikka75) provided an important fix to compile C++17 code with Clang 9. 262. [Maarten Becker](https://github.com/kernie) fixed a warning for shadowed variables. 263. [Cristi Vîjdea](https://github.com/axnsan12) fixed typos in the `operator[]` documentation. 264. [Alex Beregszaszi](https://github.com/axic) fixed spelling mistakes in comments. 265. [Dirk Stolle](https://github.com/striezel) fixed typos in documentation. 266. [Daniel Albuschat](https://github.com/daniel-kun) corrected the parameter name in the `parse` documentation. 267. [Prince Mendiratta](https://github.com/Prince-Mendiratta) fixed a link to the FAQ. 268. [Florian Albrechtskirchinger](https://github.com/falbrechtskirchinger) implemented `std::string_view` support for object keys and made dozens of other improvements. 269. [Qianqian Fang](https://github.com/fangq) implemented the Binary JData (BJData) format. 270. [pketelsen](https://github.com/pketelsen) added macros `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT` and `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT`. 271. [DarkZeros](https://github.com/DarkZeros) adjusted to code to not clash with Arduino defines. 272. [flagarde](https://github.com/flagarde) fixed the output of `meta()` for MSVC. 273. [Giovanni Cerretani](https://github.com/gcerretani) fixed a check for `std::filesystem`. 274. [Dimitris Apostolou](https://github.com/rex4539) fixed a typo. 275. [Ferry Huberts](https://github.com/fhuberts) fixed a typo. 276. [Michael Nosthoff](https://github.com/heinemml) fixed a typo. 277. [JungHoon Lee](https://github.com/jhnlee) fixed a typo. 278. [Faruk D.](https://github.com/fdiblen) fixed the CITATION.CFF file. 279. [Andrea Cocito](https://github.com/puffetto) added a clarification on macro usage to the documentation. 280. [Krzysiek Karbowiak](https://github.com/kkarbowiak) refactored the tests to use `CHECK_THROWS_WITH_AS`. 281. [Chaoqi Zhang](https://github.com/prncoprs) fixed a typo. 282. [ivanovmp](https://github.com/ivanovmp) fixed a whitespace error. 283. [KsaNL](https://github.com/KsaNL) fixed a build error when including ``. 284. [Andrea Pappacoda](https://github.com/Tachi107) moved `.pc` and `.cmake` files to `share` directory. 285. [Wolf Vollprecht](https://github.com/wolfv) added the `patch_inplace` function. 286. [Jake Zimmerman](https://github.com/jez) highlighted common usage patterns in the README file. 287. [NN](https://github.com/NN---) added the Visual Studio output directory to `.gitignore`. 288. [Romain Reignier](https://github.com/romainreignier) improved the performance the vector output adapter. 289. [Mike](https://github.com/Mike-Leo-Smith) fixed the `std::iterator_traits`. 290. [Richard Hozák](https://github.com/zxey) added macro `JSON_NO_ENUM` to disable default enum conversions. 291. [vakokako](https://github.com/vakokako) fixed tests when compiling with C++20. 292. [Alexander “weej” Jones](https://github.com/alexweej) fixed an example in the README. 293. [Eli Schwartz](https://github.com/eli-schwartz) added more files to the `include.zip` archive. 294. [Kevin Lu](https://github.com/kevinlul) fixed a compilation issue when typedefs with certain names were present. 295. [Trevor Hickey](https://github.com/luxe) improved the description of an example. 296. [Jef LeCompte](https://github.com/jef) updated the year in the README file. 297. [Alexandre Hamez](https://github.com/ahamez) fixed a warning. 298. [Maninderpal Badhan](https://github.com/mbadhan) fixed a typo. 299. [kevin--](https://github.com/kevin--) added a note to an example in the README file. 300. [I](https://github.com/wx257osn2) fixed a typo. 301. [Gregorio Litenstein](https://github.com/Lord-Kamina) fixed the Clang detection. 302. [Andreas Smas](https://github.com/andoma) added a Doozer badge. 303. [WanCW](https://github.com/wancw) fixed the string conversion with Clang. 304. [zhaohuaxishi](https://github.com/zhaohuaxishi) fixed a Doxygen error. 305. [emvivre](https://github.com/emvivre) removed an invalid parameter from CMake. 306. [Tobias Hermann](https://github.com/Dobiasd) fixed a link in the README file. 307. [Michael](https://github.com/traits) fixed a warning. 308. [Ryan Mulder](https://github.com/ryanjmulder) added `ensure_ascii` to the `dump` function. 309. [Muri Nicanor](https://github.com/murinicanor) fixed the `sed` discovery in the Makefile. 310. [David Avedissian](https://github.com/dgavedissian) implemented SFINAE-friendly `iterator_traits`. 311. [AQNOUCH Mohammed](https://github.com/aqnouch) fixed a typo in the README. 312. [Gareth Sylvester-Bradley](https://github.com/garethsb) added `operator/=` and `operator/` to construct JSON pointers. 313. [Michael Macnair](https://github.com/mykter) added support for afl-fuzz testing. 314. [Berkus Decker](https://github.com/berkus) fixed a typo in the README. 315. [Illia Polishchuk](https://github.com/effolkronium) improved the CMake testing. 316. [Ikko Ashimine](https://github.com/eltociear) fixed a typo. 317. [Raphael Grimm](https://github.com/barcode) added the possibility to define a custom base class. 318. [tocic](https://github.com/tocic) fixed typos in the documentation. 319. [Vertexwahn](https://github.com/Vertexwahn) added Bazel build support. 320. [Dirk Stolle](https://github.com/striezel) fixed typos in the documentation. 321. [DavidKorczynski](https://github.com/DavidKorczynski) added a CIFuzz CI GitHub action. 322. [Finkman](https://github.com/Finkman) fixed the debug pretty-printer. 323. [Florian Segginger](https://github.com/floriansegginger) bumped the years in the README. 324. [haadfida](https://github.com/haadfida) cleaned up the badges of used services. 325. [Arsen Arsenović](https://github.com/ArsenArsen) fixed a build error. 326. [theevilone45](https://github.com/theevilone45) fixed a typo in a CMake file. 327. [Sergei Trofimovich](https://github.com/trofi) fixed the custom allocator support. 328. [Joyce](https://github.com/joycebrum) fixed some security issues in the GitHub workflows. 329. [Nicolas Jakob](https://github.com/njakob) add vcpkg version badge. 330. [Tomerkm](https://github.com/Tomerkm) added tests. 331. [No.](https://github.com/tusooa) fixed the use of `get<>` calls. 332. [taro](https://github.com/tarolling) fixed a typo in the `CODEOWNERS` file. 333. [Ikko Eltociear Ashimine](https://github.com/eltociear) fixed a typo. 334. [Felix Yan](https://github.com/felixonmars) fixed a typo in the README. 335. [HO-COOH](https://github.com/HO-COOH) fixed a parentheses in the documentation. 336. [Ivor Wanders](https://github.com/iwanders) fixed the examples to catch exception by `const&`. 337. [miny1233](https://github.com/miny1233) fixed a parentheses in the documentation. 338. [tomalakgeretkal](https://github.com/tomalakgeretkal) fixed a compilation error. 339. [alferov](https://github.com/ALF-ONE) fixed a compilation error. 340. [Craig Scott](https://github.com/craigscott-crascit) fixed a deprecation warning in CMake. 341. [Vyacheslav Zhdanovskiy](https://github.com/ZeronSix) added macros for serialization-only types. 342. [Mathieu Westphal](https://github.com/mwestphal) fixed typos. 343. [scribam](https://github.com/scribam) fixed the MinGW workflow. 344. [Aleksei Sapitskii](https://github.com/aleksproger) added support for Apple's Swift Package Manager. 345. [Benjamin Buch](https://github.com/bebuch) fixed the installation path in CMake. 346. [Colby Haskell](https://github.com/colbychaskell) clarified the parse error message in case a file cannot be opened. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. ## Used third-party tools The library itself consists of a single header file licensed under the MIT license. However, it is built, tested, documented, and whatnot using a lot of third-party tools and services. Thanks a lot! - [**amalgamate.py - Amalgamate C source and header files**](https://github.com/edlund/amalgamate) to create a single header file - [**American fuzzy lop**](https://lcamtuf.coredump.cx/afl/) for fuzz testing - [**AppVeyor**](https://www.appveyor.com) for [continuous integration](https://ci.appveyor.com/project/nlohmann/json) on Windows - [**Artistic Style**](http://astyle.sourceforge.net) for automatic source code indentation - [**Clang**](https://clang.llvm.org) for compilation with code sanitizers - [**CMake**](https://cmake.org) for build automation - [**Codacy**](https://www.codacy.com) for further [code analysis](https://www.codacy.com/app/nlohmann/json) - [**Coveralls**](https://coveralls.io) to measure [code coverage](https://coveralls.io/github/nlohmann/json) - [**Coverity Scan**](https://scan.coverity.com) for [static analysis](https://scan.coverity.com/projects/nlohmann-json) - [**cppcheck**](http://cppcheck.sourceforge.net) for static analysis - [**doctest**](https://github.com/onqtam/doctest) for the unit tests - [**git-update-ghpages**](https://github.com/rstacruz/git-update-ghpages) to upload the documentation to gh-pages - [**GitHub Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) - [**Google Benchmark**](https://github.com/google/benchmark) to implement the benchmarks - [**Hedley**](https://nemequ.github.io/hedley/) to avoid re-inventing several compiler-agnostic feature macros - [**lcov**](http://ltp.sourceforge.net/coverage/lcov.php) to process coverage information and create an HTML view - [**libFuzzer**](https://llvm.org/docs/LibFuzzer.html) to implement fuzz testing for OSS-Fuzz - [**Material for MkDocs**](https://squidfunk.github.io/mkdocs-material/) for the style of the documentation site - [**MkDocs**](https://www.mkdocs.org) for the documentation site - [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library ([project repository](https://github.com/google/oss-fuzz/tree/master/projects/json)) - [**Probot**](https://probot.github.io) for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments. - [**Valgrind**](https://valgrind.org) to check for correct memory management ## Projects using JSON for Modern C++ The library is currently used in Apple macOS Sierra-Monterey and iOS 10-15. I am not sure what they are using the library for, but I am happy that it runs on so many devices. ## Notes ### Character encoding The library supports **Unicode input** as follows: - Only **UTF-8** encoded input is supported which is the default encoding for JSON according to [RFC 8259](https://tools.ietf.org/html/rfc8259.html#section-8.1). - `std::u16string` and `std::u32string` can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers. - Other encodings such as Latin-1 or ISO 8859-1 are **not** supported and will yield parse or serialization errors. - [Unicode noncharacters](https://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library. - Invalid surrogates (e.g., incomplete pairs such as `\uDEAD`) will yield parse errors. - The strings stored in the library are UTF-8 encoded. When using the default string type (`std::string`), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs. - When you store strings with different encodings in the library, calling [`dump()`](https://json.nlohmann.me/api/basic_json/dump/) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers. - To store wide strings (e.g., `std::wstring`), you need to convert them to a UTF-8 encoded `std::string` before, see [an example](https://json.nlohmann.me/home/faq/#wide-string-handling). ### Comments in JSON This library does not support comments by default. It does so for three reasons: 1. Comments are not part of the [JSON specification](https://tools.ietf.org/html/rfc8259). You may argue that `//` or `/* */` are allowed in JavaScript, but JSON is not JavaScript. 2. This was not an oversight: Douglas Crockford [wrote on this](https://plus.google.com/118095276221607585885/posts/RK8qyGVaGSr) in May 2012: > I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn't. > Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser. 3. It is dangerous for interoperability if some libraries would add comment support while others don't. Please check [The Harmful Consequences of the Robustness Principle](https://tools.ietf.org/html/draft-iab-protocol-maintenance-01) on this. However, you can pass set parameter `ignore_comments` to true in the `parse` function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace. ### Order of object keys By default, the library does not preserve the **insertion order of object elements**. This is standards-compliant, as the [JSON standard](https://tools.ietf.org/html/rfc8259.html) defines objects as "an unordered collection of zero or more name/value pairs". If you do want to preserve the insertion order, you can try the type [`nlohmann::ordered_json`](https://github.com/nlohmann/json/issues/2179). Alternatively, you can use a more sophisticated ordered map like [`tsl::ordered_map`](https://github.com/Tessil/ordered-map) ([integration](https://github.com/nlohmann/json/issues/546#issuecomment-304447518)) or [`nlohmann::fifo_map`](https://github.com/nlohmann/fifo_map) ([integration](https://github.com/nlohmann/json/issues/485#issuecomment-333652309)). ### Memory Release We checked with Valgrind and the Address Sanitizer (ASAN) that there are no memory leaks. If you find that a parsing program with this library does not release memory, please consider the following case, and it may be unrelated to this library. **Your program is compiled with glibc.** There is a tunable threshold that glibc uses to decide whether to actually return memory to the system or whether to cache it for later reuse. If in your program you make lots of small allocations and those small allocations are not a contiguous block and are presumably below the threshold, then they will not get returned to the OS. Here is a related issue [#1924](https://github.com/nlohmann/json/issues/1924). ### Further notes - The code contains numerous debug **assertions** which can be switched off by defining the preprocessor macro `NDEBUG`, see the [documentation of `assert`](https://en.cppreference.com/w/cpp/error/assert). In particular, note [`operator[]`](https://json.nlohmann.me/api/basic_json/operator%5B%5D/) implements **unchecked access** for const objects: If the given key is not present, the behavior is undefined (think of a dereferenced null pointer) and yields an [assertion failure](https://github.com/nlohmann/json/issues/289) if assertions are switched on. If you are not sure whether an element in an object exists, use checked access with the [`at()` function](https://json.nlohmann.me/api/basic_json/at/). Furthermore, you can define `JSON_ASSERT(x)` to replace calls to `assert(x)`. - As the exact number type is not defined in the [JSON specification](https://tools.ietf.org/html/rfc8259.html), this library tries to choose the best fitting C++ number type automatically. As a result, the type `double` may be used to store numbers which may yield [**floating-point exceptions**](https://github.com/nlohmann/json/issues/181) in certain rare situations if floating-point exceptions have been unmasked in the calling code. These exceptions are not caused by the library and need to be fixed in the calling code, such as by re-masking the exceptions prior to calling library functions. - The code can be compiled without C++ **runtime type identification** features; that is, you can use the `-fno-rtti` compiler flag. - **Exceptions** are used widely within the library. They can, however, be switched off with either using the compiler flag `-fno-exceptions` or by defining the symbol `JSON_NOEXCEPTION`. In this case, exceptions are replaced by `abort()` calls. You can further control this behavior by defining `JSON_THROW_USER` (overriding `throw`), `JSON_TRY_USER` (overriding `try`), and `JSON_CATCH_USER` (overriding `catch`). Note that `JSON_THROW_USER` should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior. Note the explanatory [`what()`](https://en.cppreference.com/w/cpp/error/exception/what) string of exceptions is not available for MSVC if exceptions are disabled, see [#2824](https://github.com/nlohmann/json/discussions/2824). ## Execute unit tests To compile and run the tests, you need to execute ```sh $ mkdir build $ cd build $ cmake .. -DJSON_BuildTests=On $ cmake --build . $ ctest --output-on-failure ``` Note that during the `ctest` stage, several JSON test files are downloaded from an [external repository](https://github.com/nlohmann/json_test_data). If policies forbid downloading artifacts during testing, you can download the files yourself and pass the directory with the test files via `-DJSON_TestDataDirectory=path` to CMake. Then, no Internet connectivity is required. See [issue #2189](https://github.com/nlohmann/json/issues/2189) for more information. If the test suite is not found, several test suites will fail like this: ``` =============================================================================== json/tests/src/make_test_data_available.hpp:21: TEST CASE: check test suite is downloaded json/tests/src/make_test_data_available.hpp:23: FATAL ERROR: REQUIRE( utils::check_testsuite_downloaded() ) is NOT correct! values: REQUIRE( false ) logged: Test data not found in 'json/cmake-build-debug/json_test_data'. Please execute target 'download_test_data' before running this test suite. See for more information. =============================================================================== ``` In case you have downloaded the library rather than checked out the code via Git, test `cmake_fetch_content_configure` will fail. Please execute `ctest -LE git_required` to skip these tests. See [issue #2189](https://github.com/nlohmann/json/issues/2189) for more information. Some tests change the installed files and hence make the whole process not reproducible. Please execute `ctest -LE not_reproducible` to skip these tests. See [issue #2324](https://github.com/nlohmann/json/issues/2324) for more information. Note you need to call `cmake -LE "not_reproducible|git_required"` to exclude both labels. See [issue #2596](https://github.com/nlohmann/json/issues/2596) for more information. As Intel compilers use unsafe floating point optimization by default, the unit tests may fail. Use flag [`/fp:precise`](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/compiler-options/compiler-option-details/floating-point-options/fp-model-fp.html) then. json-3.11.3/WORKSPACE.bazel000066400000000000000000000000421453145653700151360ustar00rootroot00000000000000workspace(name = "nlohmann_json") json-3.11.3/cmake/000077500000000000000000000000001453145653700136455ustar00rootroot00000000000000json-3.11.3/cmake/ci.cmake000066400000000000000000001305051453145653700152460ustar00rootroot00000000000000# number of parallel jobs for CTest set(N 10) ############################################################################### # Needed tools. ############################################################################### include(FindPython3) find_package(Python3 COMPONENTS Interpreter) find_program(ASTYLE_TOOL NAMES astyle) execute_process(COMMAND ${ASTYLE_TOOL} --version OUTPUT_VARIABLE ASTYLE_TOOL_VERSION ERROR_VARIABLE ASTYLE_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" ASTYLE_TOOL_VERSION "${ASTYLE_TOOL_VERSION}") message(STATUS "🔖 Artistic Style ${ASTYLE_TOOL_VERSION} (${ASTYLE_TOOL})") find_program(CLANG_TOOL NAMES clang++-HEAD clang++ clang++-17 clang++-16 clang++-15 clang++-14 clang++-13 clang++-12 clang++-11 clang++) execute_process(COMMAND ${CLANG_TOOL} --version OUTPUT_VARIABLE CLANG_TOOL_VERSION ERROR_VARIABLE CLANG_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CLANG_TOOL_VERSION "${CLANG_TOOL_VERSION}") message(STATUS "🔖 Clang ${CLANG_TOOL_VERSION} (${CLANG_TOOL})") find_program(CLANG_TIDY_TOOL NAMES clang-tidy-17 clang-tidy-16 clang-tidy-15 clang-tidy-14 clang-tidy-13 clang-tidy-12 clang-tidy-11 clang-tidy) execute_process(COMMAND ${CLANG_TIDY_TOOL} --version OUTPUT_VARIABLE CLANG_TIDY_TOOL_VERSION ERROR_VARIABLE CLANG_TIDY_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CLANG_TIDY_TOOL_VERSION "${CLANG_TIDY_TOOL_VERSION}") message(STATUS "🔖 Clang-Tidy ${CLANG_TIDY_TOOL_VERSION} (${CLANG_TIDY_TOOL})") message(STATUS "🔖 CMake ${CMAKE_VERSION} (${CMAKE_COMMAND})") find_program(CPPCHECK_TOOL NAMES cppcheck) execute_process(COMMAND ${CPPCHECK_TOOL} --version OUTPUT_VARIABLE CPPCHECK_TOOL_VERSION ERROR_VARIABLE CPPCHECK_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CPPCHECK_TOOL_VERSION "${CPPCHECK_TOOL_VERSION}") message(STATUS "🔖 Cppcheck ${CPPCHECK_TOOL_VERSION} (${CPPCHECK_TOOL})") find_program(GCC_TOOL NAMES g++-latest g++-HEAD g++-13 g++-12 g++-11 g++-10) execute_process(COMMAND ${GCC_TOOL} --version OUTPUT_VARIABLE GCC_TOOL_VERSION ERROR_VARIABLE GCC_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GCC_TOOL_VERSION "${GCC_TOOL_VERSION}") message(STATUS "🔖 GCC ${GCC_TOOL_VERSION} (${GCC_TOOL})") find_program(GCOV_TOOL NAMES gcov-HEAD gcov-11 gcov-10 gcov) execute_process(COMMAND ${GCOV_TOOL} --version OUTPUT_VARIABLE GCOV_TOOL_VERSION ERROR_VARIABLE GCOV_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GCOV_TOOL_VERSION "${GCOV_TOOL_VERSION}") message(STATUS "🔖 GCOV ${GCOV_TOOL_VERSION} (${GCOV_TOOL})") find_program(GIT_TOOL NAMES git) execute_process(COMMAND ${GIT_TOOL} --version OUTPUT_VARIABLE GIT_TOOL_VERSION ERROR_VARIABLE GIT_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GIT_TOOL_VERSION "${GIT_TOOL_VERSION}") message(STATUS "🔖 Git ${GIT_TOOL_VERSION} (${GIT_TOOL})") find_program(IWYU_TOOL NAMES include-what-you-use iwyu) execute_process(COMMAND ${IWYU_TOOL} --version OUTPUT_VARIABLE IWYU_TOOL_VERSION ERROR_VARIABLE IWYU_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" IWYU_TOOL_VERSION "${IWYU_TOOL_VERSION}") message(STATUS "🔖 include-what-you-use ${IWYU_TOOL_VERSION} (${IWYU_TOOL})") find_program(INFER_TOOL NAMES infer) execute_process(COMMAND ${INFER_TOOL} --version OUTPUT_VARIABLE INFER_TOOL_VERSION ERROR_VARIABLE INFER_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" INFER_TOOL_VERSION "${INFER_TOOL_VERSION}") message(STATUS "🔖 Infer ${INFER_TOOL_VERSION} (${INFER_TOOL})") find_program(LCOV_TOOL NAMES lcov) execute_process(COMMAND ${LCOV_TOOL} --version OUTPUT_VARIABLE LCOV_TOOL_VERSION ERROR_VARIABLE LCOV_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" LCOV_TOOL_VERSION "${LCOV_TOOL_VERSION}") message(STATUS "🔖 LCOV ${LCOV_TOOL_VERSION} (${LCOV_TOOL})") find_program(NINJA_TOOL NAMES ninja) execute_process(COMMAND ${NINJA_TOOL} --version OUTPUT_VARIABLE NINJA_TOOL_VERSION ERROR_VARIABLE NINJA_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" NINJA_TOOL_VERSION "${NINJA_TOOL_VERSION}") message(STATUS "🔖 Ninja ${NINJA_TOOL_VERSION} (${NINJA_TOOL})") find_program(OCLINT_TOOL NAMES oclint-json-compilation-database) find_program(OCLINT_VERSION_TOOL NAMES oclint) execute_process(COMMAND ${OCLINT_VERSION_TOOL} --version OUTPUT_VARIABLE OCLINT_TOOL_VERSION ERROR_VARIABLE OCLINT_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" OCLINT_TOOL_VERSION "${OCLINT_TOOL_VERSION}") message(STATUS "🔖 OCLint ${OCLINT_TOOL_VERSION} (${OCLINT_TOOL})") find_program(VALGRIND_TOOL NAMES valgrind) execute_process(COMMAND ${VALGRIND_TOOL} --version OUTPUT_VARIABLE VALGRIND_TOOL_VERSION ERROR_VARIABLE VALGRIND_TOOL_VERSION) string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" VALGRIND_TOOL_VERSION "${VALGRIND_TOOL_VERSION}") message(STATUS "🔖 Valgrind ${VALGRIND_TOOL_VERSION} (${VALGRIND_TOOL})") find_program(GENHTML_TOOL NAMES genhtml) find_program(PLOG_CONVERTER_TOOL NAMES plog-converter) find_program(PVS_STUDIO_ANALYZER_TOOL NAMES pvs-studio-analyzer) find_program(SCAN_BUILD_TOOL NAMES scan-build-15 scan-build-14 scan-build-13 scan-build-12 scan-build-11 scan-build) # the individual source files file(GLOB_RECURSE SRC_FILES ${PROJECT_SOURCE_DIR}/include/nlohmann/*.hpp) ############################################################################### # Thorough check with recent compilers ############################################################################### # Ignored Clang warnings: # -Wno-c++98-compat The library targets C++11. # -Wno-c++98-compat-pedantic The library targets C++11. # -Wno-deprecated-declarations The library contains annotations for deprecated functions. # -Wno-extra-semi-stmt The library uses std::assert which triggers this warning. # -Wno-padded We do not care about padding warnings. # -Wno-covered-switch-default All switches list all cases and a default case. # -Wno-unsafe-buffer-usage Otherwise Doctest would not compile. # -Wno-weak-vtables The library is header-only. # -Wreserved-identifier See https://github.com/onqtam/doctest/issues/536. set(CLANG_CXXFLAGS -Werror -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-deprecated-declarations -Wno-extra-semi-stmt -Wno-padded -Wno-covered-switch-default -Wno-unsafe-buffer-usage -Wno-weak-vtables -Wno-reserved-identifier ) # Warning flags determined for GCC 13.0 (experimental) with https://github.com/nlohmann/gcc_flags: # Ignored GCC warnings: # -Wno-abi-tag We do not care about ABI tags. # -Wno-aggregate-return The library uses aggregate returns. # -Wno-long-long The library uses the long long type to interface with system functions. # -Wno-namespaces The library uses namespaces. # -Wno-padded We do not care about padding warnings. # -Wno-system-headers We do not care about warnings in system headers. # -Wno-templates The library uses templates. set(GCC_CXXFLAGS -pedantic -Werror --all-warnings --extra-warnings -W -WNSObject-attribute -Wno-abi-tag -Waddress -Waddress-of-packed-member -Wno-aggregate-return -Waggressive-loop-optimizations -Waligned-new=all -Wall -Walloc-zero -Walloca -Wanalyzer-double-fclose -Wanalyzer-double-free -Wanalyzer-exposure-through-output-file -Wanalyzer-file-leak -Wanalyzer-free-of-non-heap -Wanalyzer-malloc-leak -Wanalyzer-mismatching-deallocation -Wanalyzer-null-argument -Wanalyzer-null-dereference -Wanalyzer-possible-null-argument -Wanalyzer-possible-null-dereference -Wanalyzer-shift-count-negative -Wanalyzer-shift-count-overflow -Wanalyzer-stale-setjmp-buffer -Wanalyzer-tainted-allocation-size -Wanalyzer-tainted-array-index -Wanalyzer-tainted-divisor -Wanalyzer-tainted-offset -Wanalyzer-tainted-size -Wanalyzer-too-complex -Wanalyzer-unsafe-call-within-signal-handler -Wanalyzer-use-after-free -Wanalyzer-use-of-pointer-in-stale-stack-frame -Wanalyzer-use-of-uninitialized-value -Wanalyzer-va-arg-type-mismatch -Wanalyzer-va-list-exhausted -Wanalyzer-va-list-leak -Wanalyzer-va-list-use-after-va-end -Wanalyzer-write-to-const -Wanalyzer-write-to-string-literal -Warith-conversion -Warray-bounds=2 -Warray-compare -Warray-parameter=2 -Wattribute-alias=2 -Wattribute-warning -Wattributes -Wbool-compare -Wbool-operation -Wbuiltin-declaration-mismatch -Wbuiltin-macro-redefined -Wc++0x-compat -Wc++11-compat -Wc++11-extensions -Wc++14-compat -Wc++14-extensions -Wc++17-compat -Wc++17-extensions -Wc++1z-compat -Wc++20-compat -Wc++20-extensions -Wc++23-extensions -Wc++2a-compat -Wcannot-profile -Wcast-align -Wcast-align=strict -Wcast-function-type -Wcast-qual -Wcatch-value=3 -Wchar-subscripts -Wclass-conversion -Wclass-memaccess -Wclobbered -Wcomma-subscript -Wcomment -Wcomments -Wconditionally-supported -Wconversion -Wconversion-null -Wcoverage-invalid-line-number -Wcoverage-mismatch -Wcpp -Wctad-maybe-unsupported -Wctor-dtor-privacy -Wdangling-else -Wdangling-pointer=2 -Wdate-time -Wdelete-incomplete -Wdelete-non-virtual-dtor -Wdeprecated -Wdeprecated-copy -Wdeprecated-copy-dtor -Wdeprecated-declarations -Wdeprecated-enum-enum-conversion -Wdeprecated-enum-float-conversion -Wdisabled-optimization -Wdiv-by-zero -Wdouble-promotion -Wduplicated-branches -Wduplicated-cond -Weffc++ -Wempty-body -Wendif-labels -Wenum-compare -Wenum-conversion -Wexceptions -Wexpansion-to-defined -Wextra -Wextra-semi -Wfloat-conversion -Wfloat-equal -Wformat-diag -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation=2 -Wformat=2 -Wframe-address -Wfree-nonheap-object -Whsa -Wif-not-aligned -Wignored-attributes -Wignored-qualifiers -Wimplicit-fallthrough=5 -Winaccessible-base -Winfinite-recursion -Winherited-variadic-ctor -Winit-list-lifetime -Winit-self -Winline -Wint-in-bool-context -Wint-to-pointer-cast -Winterference-size -Winvalid-imported-macros -Winvalid-memory-model -Winvalid-offsetof -Winvalid-pch -Wliteral-suffix -Wlogical-not-parentheses -Wlogical-op -Wno-long-long -Wlto-type-mismatch -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmismatched-dealloc -Wmismatched-new-delete -Wmismatched-tags -Wmissing-attributes -Wmissing-braces -Wmissing-declarations -Wmissing-field-initializers -Wmissing-include-dirs -Wmissing-profile -Wmissing-requires -Wmissing-template-keyword -Wmultichar -Wmultiple-inheritance -Wmultistatement-macros -Wno-namespaces -Wnarrowing -Wnoexcept -Wnoexcept-type -Wnon-template-friend -Wnon-virtual-dtor -Wnonnull -Wnonnull-compare -Wnormalized=nfkc -Wnull-dereference -Wodr -Wold-style-cast -Wopenacc-parallelism -Wopenmp-simd -Woverflow -Woverlength-strings -Woverloaded-virtual -Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wno-padded -Wparentheses -Wpedantic -Wpessimizing-move -Wplacement-new=2 -Wpmf-conversions -Wpointer-arith -Wpointer-compare -Wpragmas -Wprio-ctor-dtor -Wpsabi -Wrange-loop-construct -Wredundant-decls -Wredundant-move -Wredundant-tags -Wregister -Wreorder -Wrestrict -Wreturn-local-addr -Wreturn-type -Wscalar-storage-order -Wsequence-point -Wshadow=compatible-local -Wshadow=global -Wshadow=local -Wshift-count-negative -Wshift-count-overflow -Wshift-negative-value -Wshift-overflow=2 -Wsign-compare -Wsign-conversion -Wsign-promo -Wsized-deallocation -Wsizeof-array-argument -Wsizeof-array-div -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wstack-protector -Wstrict-aliasing=3 -Wstrict-null-sentinel -Wno-strict-overflow -Wstring-compare -Wstringop-overflow=4 -Wstringop-overread -Wstringop-truncation -Wsubobject-linkage -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wsuggest-override -Wswitch -Wswitch-bool -Wswitch-default -Wswitch-enum -Wswitch-outside-range -Wswitch-unreachable -Wsync-nand -Wsynth -Wno-system-headers -Wtautological-compare -Wno-templates -Wterminate -Wtrampolines -Wtrigraphs -Wtrivial-auto-var-init -Wtsan -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunsafe-loop-optimizations -Wunused -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-const-variable=2 -Wunused-function -Wunused-label -Wunused-local-typedefs -Wunused-macros -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wuse-after-free=3 -Wuseless-cast -Wvarargs -Wvariadic-macros -Wvector-operation-performance -Wvexing-parse -Wvirtual-inheritance -Wvirtual-move-assign -Wvla -Wvla-parameter -Wvolatile -Wvolatile-register-var -Wwrite-strings -Wzero-as-null-pointer-constant -Wzero-length-bounds ) add_custom_target(ci_test_gcc COMMAND CXX=${GCC_TOOL} CXXFLAGS="${GCC_CXXFLAGS}" ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_gcc COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_gcc COMMAND cd ${PROJECT_BINARY_DIR}/build_gcc && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with GCC using maximal warning flags" ) add_custom_target(ci_test_clang COMMAND CXX=${CLANG_TOOL} CXXFLAGS="${CLANG_CXXFLAGS}" ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang COMMAND cd ${PROJECT_BINARY_DIR}/build_clang && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with Clang using maximal warning flags" ) ############################################################################### # Different C++ Standards. ############################################################################### foreach(CXX_STANDARD 11 14 17 20 23) add_custom_target(ci_test_gcc_cxx${CXX_STANDARD} COMMAND CXX=${GCC_TOOL} CXXFLAGS="${GCC_CXXFLAGS}" ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_TestStandards=${CXX_STANDARD} -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} COMMAND cd ${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with GCC for C++${CXX_STANDARD}" ) add_custom_target(ci_test_clang_cxx${CXX_STANDARD} COMMAND CXX=${CLANG_TOOL} CXXFLAGS="${CLANG_CXXFLAGS}" ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_TestStandards=${CXX_STANDARD} -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with Clang for C++${CXX_STANDARD}" ) endforeach() ############################################################################### # Disable exceptions. ############################################################################### add_custom_target(ci_test_noexceptions COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DCMAKE_CXX_FLAGS=-DJSON_NOEXCEPTION -DDOCTEST_TEST_FILTER=--no-throw -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noexceptions COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noexceptions COMMAND cd ${PROJECT_BINARY_DIR}/build_noexceptions && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with exceptions switched off" ) ############################################################################### # Disable implicit conversions. ############################################################################### add_custom_target(ci_test_noimplicitconversions COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_ImplicitConversions=OFF -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noimplicitconversions COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noimplicitconversions COMMAND cd ${PROJECT_BINARY_DIR}/build_noimplicitconversions && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with implicit conversions switched off" ) ############################################################################### # Enable improved diagnostics. ############################################################################### add_custom_target(ci_test_diagnostics COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_Diagnostics=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_diagnostics COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_diagnostics COMMAND cd ${PROJECT_BINARY_DIR}/build_diagnostics && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with improved diagnostics enabled" ) ############################################################################### # Enable legacy discarded value comparison. ############################################################################### add_custom_target(ci_test_legacycomparison COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_LegacyDiscardedValueComparison=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_legacycomparison COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_legacycomparison COMMAND cd ${PROJECT_BINARY_DIR}/build_legacycomparison && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with legacy discarded value comparison enabled" ) ############################################################################### # Disable global UDLs. ############################################################################### add_custom_target(ci_test_noglobaludls COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_GlobalUDLs=OFF -DCMAKE_CXX_FLAGS=-DJSON_TEST_NO_GLOBAL_UDLS -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noglobaludls COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noglobaludls COMMAND cd ${PROJECT_BINARY_DIR}/build_noglobaludls && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with global UDLs disabled" ) ############################################################################### # Coverage. ############################################################################### add_custom_target(ci_test_coverage COMMAND CXX=g++ ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_CXX_FLAGS="--coverage;-fprofile-arcs;-ftest-coverage" -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_coverage COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_coverage COMMAND cd ${PROJECT_BINARY_DIR}/build_coverage && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMAND CXX=g++ ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_CXX_FLAGS="-m32;--coverage;-fprofile-arcs;-ftest-coverage" -DJSON_BuildTests=ON -DJSON_32bitTest=ONLY -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_coverage32 COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_coverage32 COMMAND cd ${PROJECT_BINARY_DIR}/build_coverage32 && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMAND ${LCOV_TOOL} --directory . --capture --output-file json.info --rc lcov_branch_coverage=1 COMMAND ${LCOV_TOOL} -e json.info ${SRC_FILES} --output-file json.info.filtered --rc lcov_branch_coverage=1 COMMAND ${CMAKE_SOURCE_DIR}/tests/thirdparty/imapdl/filterbr.py json.info.filtered > json.info.filtered.noexcept COMMAND genhtml --title "JSON for Modern C++" --legend --demangle-cpp --output-directory html --show-details --branch-coverage json.info.filtered.noexcept COMMENT "Compile and test with coverage" ) ############################################################################### # Sanitizers. ############################################################################### set(CLANG_CXX_FLAGS_SANITIZER "-g -O1 -fsanitize=address -fsanitize=undefined -fsanitize=integer -fsanitize=nullability -fno-omit-frame-pointer -fno-sanitize-recover=all -fno-sanitize=unsigned-integer-overflow -fno-sanitize=unsigned-shift-base") add_custom_target(ci_test_clang_sanitizer COMMAND CXX=${CLANG_TOOL} CXXFLAGS=${CLANG_CXX_FLAGS_SANITIZER} ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_sanitizer COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_sanitizer COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_sanitizer && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test with sanitizers" ) ############################################################################### # Check if header is amalgamated and sources are properly indented. ############################################################################### set(ASTYLE_FLAGS --style=allman --indent=spaces=4 --indent-modifiers --indent-switches --indent-preproc-block --indent-preproc-define --indent-col1-comments --pad-oper --pad-header --align-pointer=type --align-reference=type --add-brackets --convert-tabs --close-templates --lineend=linux --preserve-date --formatted) file(GLOB_RECURSE INDENT_FILES ${PROJECT_SOURCE_DIR}/include/nlohmann/*.hpp ${PROJECT_SOURCE_DIR}/tests/src/*.cpp ${PROJECT_SOURCE_DIR}/tests/src/*.hpp ${PROJECT_SOURCE_DIR}/tests/benchmarks/src/benchmarks.cpp ${PROJECT_SOURCE_DIR}/docs/examples/*.cpp ) set(include_dir ${PROJECT_SOURCE_DIR}/single_include/nlohmann) set(tool_dir ${PROJECT_SOURCE_DIR}/tools/amalgamate) add_custom_target(ci_test_amalgamation COMMAND rm -fr ${include_dir}/json.hpp~ ${include_dir}/json_fwd.hpp~ COMMAND cp ${include_dir}/json.hpp ${include_dir}/json.hpp~ COMMAND cp ${include_dir}/json_fwd.hpp ${include_dir}/json_fwd.hpp~ COMMAND ${Python3_EXECUTABLE} ${tool_dir}/amalgamate.py -c ${tool_dir}/config_json.json -s . COMMAND ${Python3_EXECUTABLE} ${tool_dir}/amalgamate.py -c ${tool_dir}/config_json_fwd.json -s . COMMAND ${ASTYLE_TOOL} ${ASTYLE_FLAGS} --suffix=none --quiet ${include_dir}/json.hpp ${include_dir}/json_fwd.hpp COMMAND diff ${include_dir}/json.hpp~ ${include_dir}/json.hpp COMMAND diff ${include_dir}/json_fwd.hpp~ ${include_dir}/json_fwd.hpp COMMAND ${ASTYLE_TOOL} ${ASTYLE_FLAGS} ${INDENT_FILES} COMMAND for FILE in `find . -name '*.orig'`\; do false \; done WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMENT "Check amalgamation and indentation" ) ############################################################################### # Build and test using the amalgamated header ############################################################################### add_custom_target(ci_test_single_header COMMAND CXX=${GCC_TOOL} CXXFLAGS="${GCC_CXXFLAGS}" ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_MultipleHeaders=OFF -DJSON_FastTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_single_header COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_single_header COMMAND cd ${PROJECT_BINARY_DIR}/build_single_header && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Compile and test single-header version" ) ############################################################################### # Valgrind. ############################################################################### add_custom_target(ci_test_valgrind COMMAND CXX=${GCC_TOOL} ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_Valgrind=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_valgrind COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_valgrind COMMAND cd ${PROJECT_BINARY_DIR}/build_valgrind && ${CMAKE_CTEST_COMMAND} -L valgrind --parallel ${N} --output-on-failure COMMENT "Compile and test with Valgrind" ) ############################################################################### # Check code with Clang Static Analyzer. ############################################################################### set(CLANG_ANALYZER_CHECKS "fuchsia.HandleChecker,nullability.NullableDereferenced,nullability.NullablePassedToNonnull,nullability.NullableReturnedFromNonnull,optin.cplusplus.UninitializedObject,optin.cplusplus.VirtualCall,optin.mpi.MPI-Checker,optin.osx.OSObjectCStyleCast,optin.osx.cocoa.localizability.EmptyLocalizationContextChecker,optin.osx.cocoa.localizability.NonLocalizedStringChecker,optin.performance.GCDAntipattern,optin.performance.Padding,optin.portability.UnixAPI,security.FloatLoopCounter,security.insecureAPI.DeprecatedOrUnsafeBufferHandling,security.insecureAPI.bcmp,security.insecureAPI.bcopy,security.insecureAPI.bzero,security.insecureAPI.rand,security.insecureAPI.strcpy,valist.CopyToSelf,valist.Uninitialized,valist.Unterminated,webkit.NoUncountedMemberChecker,webkit.RefCntblBaseVirtualDtor,core.CallAndMessage,core.DivideZero,core.NonNullParamChecker,core.NullDereference,core.StackAddressEscape,core.UndefinedBinaryOperatorResult,core.VLASize,core.uninitialized.ArraySubscript,core.uninitialized.Assign,core.uninitialized.Branch,core.uninitialized.CapturedBlockVariable,core.uninitialized.UndefReturn,cplusplus.InnerPointer,cplusplus.Move,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,cplusplus.PlacementNew,cplusplus.PureVirtualCall,deadcode.DeadStores,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull,osx.API,osx.MIG,osx.NumberObjectConversion,osx.OSObjectRetainCount,osx.ObjCProperty,osx.SecKeychainAPI,osx.cocoa.AtSync,osx.cocoa.AutoreleaseWrite,osx.cocoa.ClassRelease,osx.cocoa.Dealloc,osx.cocoa.IncompatibleMethodTypes,osx.cocoa.Loops,osx.cocoa.MissingSuperCall,osx.cocoa.NSAutoreleasePool,osx.cocoa.NSError,osx.cocoa.NilArg,osx.cocoa.NonNilReturnValue,osx.cocoa.ObjCGenerics,osx.cocoa.RetainCount,osx.cocoa.RunLoopAutoreleaseLeak,osx.cocoa.SelfInit,osx.cocoa.SuperDealloc,osx.cocoa.UnusedIvars,osx.cocoa.VariadicMethodTypes,osx.coreFoundation.CFError,osx.coreFoundation.CFNumber,osx.coreFoundation.CFRetainRelease,osx.coreFoundation.containers.OutOfBounds,osx.coreFoundation.containers.PointerSizedValues,security.insecureAPI.UncheckedReturn,security.insecureAPI.decodeValueOfObjCType,security.insecureAPI.getpw,security.insecureAPI.gets,security.insecureAPI.mkstemp,security.insecureAPI.mktemp,security.insecureAPI.vfork,unix.API,unix.Malloc,unix.MallocSizeof,unix.MismatchedDeallocator,unix.Vfork,unix.cstring.BadSizeArg,unix.cstring.NullArg") add_custom_target(ci_clang_analyze COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_analyze COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_analyze && ${SCAN_BUILD_TOOL} -enable-checker ${CLANG_ANALYZER_CHECKS} --use-c++=${CLANG_TOOL} -analyze-headers -o ${PROJECT_BINARY_DIR}/report ninja COMMENT "Check code with Clang Analyzer" ) ############################################################################### # Check code with Cppcheck. ############################################################################### add_custom_target(ci_cppcheck COMMAND ${CPPCHECK_TOOL} --enable=warning --suppress=missingReturn --inline-suppr --inconclusive --force --std=c++11 ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp --error-exitcode=1 COMMENT "Check code with Cppcheck" ) ############################################################################### # Check code with cpplint. ############################################################################### add_custom_target(ci_cpplint COMMAND ${Python3_EXECUTABLE} -mvenv venv_cpplint COMMAND venv_cpplint/bin/pip3 --quiet install cpplint COMMAND venv_cpplint/bin/cpplint --filter=-whitespace,-legal,-runtime/references,-runtime/explicit,-runtime/indentation_namespace,-readability/casting,-readability/nolint --quiet --recursive ${SRC_FILES} COMMENT "Check code with cpplint" WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) ############################################################################### # Check code with OCLint. ############################################################################### file(COPY ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp DESTINATION ${PROJECT_BINARY_DIR}/src_single) file(RENAME ${PROJECT_BINARY_DIR}/src_single/json.hpp ${PROJECT_BINARY_DIR}/src_single/all.cpp) file(APPEND "${PROJECT_BINARY_DIR}/src_single/all.cpp" "\n\nint main()\n{}\n") add_executable(single_all ${PROJECT_BINARY_DIR}/src_single/all.cpp) target_compile_features(single_all PRIVATE cxx_std_11) add_custom_target(ci_oclint COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DJSON_BuildTests=OFF -DJSON_CI=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_oclint COMMAND ${OCLINT_TOOL} -i ${PROJECT_BINARY_DIR}/build_oclint/src_single/all.cpp -p ${PROJECT_BINARY_DIR}/build_oclint -- -report-type html -enable-global-analysis --max-priority-1=0 --max-priority-2=1000 --max-priority-3=2000 --disable-rule=MultipleUnaryOperator --disable-rule=DoubleNegative --disable-rule=ShortVariableName --disable-rule=GotoStatement --disable-rule=LongLine -o ${PROJECT_BINARY_DIR}/build_oclint/oclint_report.html COMMENT "Check code with OCLint" ) ############################################################################### # Check code with Clang-Tidy. ############################################################################### add_custom_target(ci_clang_tidy COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_CLANG_TIDY=${CLANG_TIDY_TOOL} -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_tidy COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_tidy COMMENT "Check code with Clang-Tidy" ) ############################################################################### # Check code with PVS-Studio Analyzer . ############################################################################### add_custom_target(ci_pvs_studio COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DJSON_BuildTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_pvs_studio COMMAND cd ${PROJECT_BINARY_DIR}/build_pvs_studio && ${PVS_STUDIO_ANALYZER_TOOL} analyze -j 10 COMMAND cd ${PROJECT_BINARY_DIR}/build_pvs_studio && ${PLOG_CONVERTER_TOOL} -a'GA:1,2;64:1;CS' -t fullhtml PVS-Studio.log -o pvs COMMENT "Check code with PVS Studio" ) ############################################################################### # Check code with Infer static analyzer. ############################################################################### add_custom_target(ci_infer COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_infer COMMAND cd ${PROJECT_BINARY_DIR}/build_infer && ${INFER_TOOL} compile -- ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${PROJECT_SOURCE_DIR} -DJSON_BuildTests=ON COMMAND cd ${PROJECT_BINARY_DIR}/build_infer && ${INFER_TOOL} run -- make COMMENT "Check code with Infer" ) ############################################################################### # Run test suite with previously downloaded test data. ############################################################################### add_custom_target(ci_offline_testdata COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_offline_testdata/test_data COMMAND cd ${PROJECT_BINARY_DIR}/build_offline_testdata/test_data && ${GIT_TOOL} clone -c advice.detachedHead=false --branch v3.1.0 https://github.com/nlohmann/json_test_data.git --quiet --depth 1 COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_TestDataDirectory=${PROJECT_BINARY_DIR}/build_offline_testdata/test_data/json_test_data -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_offline_testdata COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_offline_testdata COMMAND cd ${PROJECT_BINARY_DIR}/build_offline_testdata && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure COMMENT "Check code with previously downloaded test data" ) ############################################################################### # Run test suite when project was not checked out from Git ############################################################################### add_custom_target(ci_non_git_tests COMMAND git config --global --add safe.directory ${PROJECT_SOURCE_DIR} COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_non_git_tests/sources COMMAND cd ${PROJECT_SOURCE_DIR} && for FILE in `${GIT_TOOL} ls-tree --name-only HEAD`\; do cp -r $$FILE ${PROJECT_BINARY_DIR}/build_non_git_tests/sources \; done COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -S${PROJECT_BINARY_DIR}/build_non_git_tests/sources -B${PROJECT_BINARY_DIR}/build_non_git_tests COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_non_git_tests COMMAND cd ${PROJECT_BINARY_DIR}/build_non_git_tests && ${CMAKE_CTEST_COMMAND} --parallel ${N} -LE git_required --output-on-failure COMMENT "Check code when project was not checked out from Git" ) ############################################################################### # Run test suite and exclude tests that change installed files ############################################################################### add_custom_target(ci_reproducible_tests COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_reproducible_tests COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_reproducible_tests COMMAND cd ${PROJECT_BINARY_DIR}/build_reproducible_tests && ${CMAKE_CTEST_COMMAND} --parallel ${N} -LE not_reproducible --output-on-failure COMMENT "Check code and exclude tests that change installed files" ) ############################################################################### # Check if every header in the include folder includes sufficient headers to # be compiled individually. ############################################################################### set(iwyu_path_and_options ${IWYU_TOOL} -Xiwyu --max_line_length=300) foreach(SRC_FILE ${SRC_FILES}) # get relative path of the header file file(RELATIVE_PATH RELATIVE_SRC_FILE "${PROJECT_SOURCE_DIR}/include/nlohmann" "${SRC_FILE}") # replace slashes and strip suffix string(REPLACE "/" "_" RELATIVE_SRC_FILE "${RELATIVE_SRC_FILE}") string(REPLACE ".hpp" "" RELATIVE_SRC_FILE "${RELATIVE_SRC_FILE}") # create code file file(WRITE "${PROJECT_BINARY_DIR}/src_single/${RELATIVE_SRC_FILE}.cpp" "#include \"${SRC_FILE}\" // IWYU pragma: keep\n\nint main()\n{}\n") # create executable add_executable(single_${RELATIVE_SRC_FILE} EXCLUDE_FROM_ALL ${PROJECT_BINARY_DIR}/src_single/${RELATIVE_SRC_FILE}.cpp) target_include_directories(single_${RELATIVE_SRC_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/include) target_compile_features(single_${RELATIVE_SRC_FILE} PRIVATE cxx_std_11) set_property(TARGET single_${RELATIVE_SRC_FILE} PROPERTY CXX_INCLUDE_WHAT_YOU_USE "${iwyu_path_and_options}") # remember binary for ci_single_binaries target list(APPEND single_binaries single_${RELATIVE_SRC_FILE}) endforeach() add_custom_target(ci_single_binaries DEPENDS ${single_binaries} COMMENT "Check if headers are self-contained" ) ############################################################################### # Benchmarks ############################################################################### add_custom_target(ci_benchmarks COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release -GNinja -S${PROJECT_SOURCE_DIR}/benchmarks -B${PROJECT_BINARY_DIR}/build_benchmarks COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_benchmarks --target json_benchmarks COMMAND cd ${PROJECT_BINARY_DIR}/build_benchmarks && ./json_benchmarks COMMENT "Run benchmarks" ) ############################################################################### # CMake flags ############################################################################### function(ci_get_cmake version var) set(${var} ${PROJECT_BINARY_DIR}/cmake-${version}/bin/cmake) add_custom_command( OUTPUT ${${var}} COMMAND wget -nc https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}.tar.gz COMMAND tar xfz cmake-${version}.tar.gz COMMAND rm cmake-${version}.tar.gz COMMAND ${CMAKE_COMMAND} -S cmake-${version} -B cmake-${version} COMMAND ${CMAKE_COMMAND} --build cmake-${version} --parallel 10 WORKING_DIRECTORY ${PROJECT_BINARY_DIR} COMMENT "Download CMake ${version}" ) set(${var} ${${var}} PARENT_SCOPE) endfunction() ci_get_cmake(3.1.0 CMAKE_3_1_0_BINARY) ci_get_cmake(3.13.0 CMAKE_3_13_0_BINARY) set(JSON_CMAKE_FLAGS_3_1_0 JSON_Diagnostics JSON_GlobalUDLs JSON_ImplicitConversions JSON_DisableEnumSerialization JSON_LegacyDiscardedValueComparison JSON_Install JSON_MultipleHeaders JSON_SystemInclude JSON_Valgrind) set(JSON_CMAKE_FLAGS_3_13_0 JSON_BuildTests) function(ci_add_cmake_flags_targets flag min_version) string(TOLOWER "ci_cmake_flag_${flag}" flag_target) string(REPLACE . _ min_version_var ${min_version}) set(cmake_binary ${CMAKE_${min_version_var}_BINARY}) add_custom_target(${flag_target} COMMENT "Check CMake flag ${flag} (CMake ${CMAKE_VERSION})" COMMAND ${CMAKE_COMMAND} -Werror=dev -D${flag}=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_${flag_target} ) add_custom_target(${flag_target}_${min_version_var} COMMENT "Check CMake flag ${JSON_CMAKE_FLAG} (CMake ${min_version})" COMMAND mkdir -pv ${PROJECT_BINARY_DIR}/build_${flag_target}_${min_version_var} COMMAND cd ${PROJECT_BINARY_DIR}/build_${flag_target}_${min_version_var} && ${cmake_binary} -Werror=dev ${PROJECT_SOURCE_DIR} -D${flag}=ON DEPENDS ${cmake_binary} ) list(APPEND JSON_CMAKE_FLAG_TARGETS ${JSON_CMAKE_FLAG_TARGET} ${flag_target}_${min_version_var}) list(APPEND JSON_CMAKE_FLAG_BUILD_DIRS ${PROJECT_BINARY_DIR}/build_${flag_target} ${PROJECT_BINARY_DIR}/build_${flag_target}_${min_version_var}) set(JSON_CMAKE_FLAG_TARGETS ${JSON_CMAKE_FLAG_TARGETS} PARENT_SCOPE) set(JSON_CMAKE_FLAG_BUILD_DIRS ${JSON_CMAKE_FLAG_BUILD_DIRS} PARENT_SCOPE) endfunction() foreach(JSON_CMAKE_FLAG ${JSON_CMAKE_FLAGS_3_1_0}) ci_add_cmake_flags_targets(${JSON_CMAKE_FLAG} 3.1.0) endforeach() foreach(JSON_CMAKE_FLAG ${JSON_CMAKE_FLAGS_3_13_0}) ci_add_cmake_flags_targets(${JSON_CMAKE_FLAG} 3.13.0) endforeach() add_custom_target(ci_cmake_flags DEPENDS ${JSON_CMAKE_FLAG_TARGETS} COMMENT "Check CMake flags" ) ############################################################################### # Use more installed compilers. ############################################################################### foreach(COMPILER g++-4.8 g++-4.9 g++-5 g++-6 g++-7 g++-8 g++-9 g++-10 g++-11 clang++-3.5 clang++-3.6 clang++-3.7 clang++-3.8 clang++-3.9 clang++-4.0 clang++-5.0 clang++-6.0 clang++-7 clang++-8 clang++-9 clang++-10 clang++-11 clang++-12 clang++-13 clang++-14 clang++-15 clang++-16 clang++-17) find_program(COMPILER_TOOL NAMES ${COMPILER}) if (COMPILER_TOOL) unset(ADDITIONAL_FLAGS) add_custom_target(ci_test_compiler_${COMPILER} COMMAND CXX=${COMPILER} ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} ${ADDITIONAL_FLAGS} COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} COMMAND cd ${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --exclude-regex "test-unicode" --output-on-failure COMMENT "Compile and test with ${COMPILER}" ) endif() unset(COMPILER_TOOL CACHE) endforeach() add_custom_target(ci_test_compiler_default COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DJSON_BuildTests=ON -DJSON_FastTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_compiler_default ${ADDITIONAL_FLAGS} COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_compiler_default --parallel ${N} COMMAND cd ${PROJECT_BINARY_DIR}/build_compiler_default && ${CMAKE_CTEST_COMMAND} --parallel ${N} --exclude-regex "test-unicode" -LE git_required --output-on-failure COMMENT "Compile and test with default C++ compiler" ) ############################################################################### # CUDA example ############################################################################### add_custom_target(ci_cuda_example COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_CUDA_HOST_COMPILER=g++-8 -S${PROJECT_SOURCE_DIR}/tests/cuda_example -B${PROJECT_BINARY_DIR}/build_cuda_example COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_cuda_example ) ############################################################################### # Intel C++ Compiler ############################################################################### add_custom_target(ci_icpc COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DJSON_BuildTests=ON -DJSON_FastTests=ON -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_icpc COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_icpc COMMAND cd ${PROJECT_BINARY_DIR}/build_icpc && ${CMAKE_CTEST_COMMAND} --parallel ${N} --exclude-regex "test-unicode" --output-on-failure COMMENT "Compile and test with ICPC" ) ############################################################################### # test documentation ############################################################################### add_custom_target(ci_test_examples COMMAND make CXX="${GCC_TOOL}" check_output_portable -j8 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs COMMENT "Check that all examples compile and create the desired output" ) add_custom_target(ci_test_api_documentation COMMAND ${Python3_EXECUTABLE} scripts/check_structure.py WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs/mkdocs COMMENT "Lint the API documentation" ) ############################################################################### # Clean up all generated files. ############################################################################### add_custom_target(ci_clean COMMAND rm -fr ${PROJECT_BINARY_DIR}/build_* cmake-3.1.0-Darwin64 ${JSON_CMAKE_FLAG_BUILD_DIRS} ${single_binaries} COMMENT "Clean generated directories" ) json-3.11.3/cmake/config.cmake.in000066400000000000000000000013061453145653700165210ustar00rootroot00000000000000include(FindPackageHandleStandardArgs) set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE}) find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE) if(NOT TARGET @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@) include("${CMAKE_CURRENT_LIST_DIR}/@NLOHMANN_JSON_TARGETS_EXPORT_NAME@.cmake") if((NOT TARGET @NLOHMANN_JSON_TARGET_NAME@) AND (NOT @PROJECT_NAME@_FIND_VERSION OR @PROJECT_NAME@_FIND_VERSION VERSION_LESS 3.2.0)) add_library(@NLOHMANN_JSON_TARGET_NAME@ INTERFACE IMPORTED) set_target_properties(@NLOHMANN_JSON_TARGET_NAME@ PROPERTIES INTERFACE_LINK_LIBRARIES @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@ ) endif() endif() json-3.11.3/cmake/download_test_data.cmake000066400000000000000000000061611453145653700205120ustar00rootroot00000000000000set(JSON_TEST_DATA_URL https://github.com/nlohmann/json_test_data) set(JSON_TEST_DATA_VERSION 3.1.0) # if variable is set, use test data from given directory rather than downloading them if(JSON_TestDataDirectory) message(STATUS "Using test data in ${JSON_TestDataDirectory}.") add_custom_target(download_test_data) file(WRITE ${CMAKE_BINARY_DIR}/include/test_data.hpp "#define TEST_DATA_DIRECTORY \"${JSON_TestDataDirectory}\"\n") else() find_package(Git) # target to download test data add_custom_target(download_test_data COMMAND test -d json_test_data || ${GIT_EXECUTABLE} clone -c advice.detachedHead=false --branch v${JSON_TEST_DATA_VERSION} ${JSON_TEST_DATA_URL}.git --quiet --depth 1 COMMENT "Downloading test data from ${JSON_TEST_DATA_URL} (v${JSON_TEST_DATA_VERSION})" WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) # create a header with the path to the downloaded test data file(WRITE ${CMAKE_BINARY_DIR}/include/test_data.hpp "#define TEST_DATA_DIRECTORY \"${CMAKE_BINARY_DIR}/json_test_data\"\n") endif() # determine the operating system (for debug and support purposes) find_program(UNAME_COMMAND uname) find_program(VER_COMMAND ver) find_program(LSB_RELEASE_COMMAND lsb_release) find_program(SW_VERS_COMMAND sw_vers) set(OS_VERSION_STRINGS "${CMAKE_SYSTEM}") if (VER_COMMAND) execute_process(COMMAND ${VER_COMMAND} OUTPUT_VARIABLE VER_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${VER_COMMAND_RESULT}") endif() if (SW_VERS_COMMAND) execute_process(COMMAND ${SW_VERS_COMMAND} OUTPUT_VARIABLE SW_VERS_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) string(REGEX REPLACE "[ ]*\n" "; " SW_VERS_COMMAND_RESULT "${SW_VERS_COMMAND_RESULT}") set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${SW_VERS_COMMAND_RESULT}") endif() if (LSB_RELEASE_COMMAND) execute_process(COMMAND ${LSB_RELEASE_COMMAND} -a OUTPUT_VARIABLE LSB_RELEASE_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) string(REGEX REPLACE "[ ]*\n" "; " LSB_RELEASE_COMMAND_RESULT "${LSB_RELEASE_COMMAND_RESULT}") set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${LSB_RELEASE_COMMAND_RESULT}") endif() if (UNAME_COMMAND) execute_process(COMMAND ${UNAME_COMMAND} -a OUTPUT_VARIABLE UNAME_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${UNAME_COMMAND_RESULT}") endif() message(STATUS "Operating system: ${OS_VERSION_STRINGS}") # determine the compiler (for debug and support purposes) if (MSVC) execute_process(COMMAND ${CMAKE_CXX_COMPILER} OUTPUT_VARIABLE CXX_VERSION_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE CXX_VERSION_RESULT ERROR_STRIP_TRAILING_WHITESPACE) set(CXX_VERSION_RESULT "${CXX_VERSION_RESULT}; MSVC_VERSION=${MSVC_VERSION}; MSVC_TOOLSET_VERSION=${MSVC_TOOLSET_VERSION}") else() execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE CXX_VERSION_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) endif() string(REGEX REPLACE "[ ]*\n" "; " CXX_VERSION_RESULT "${CXX_VERSION_RESULT}") message(STATUS "Compiler: ${CXX_VERSION_RESULT}") json-3.11.3/cmake/nlohmann_jsonConfigVersion.cmake.in000066400000000000000000000013051453145653700226120ustar00rootroot00000000000000# This is essentially cmake's BasicConfigVersion-SameMajorVersion.cmake.in but # without the 32/64-bit check. Since json is a header-only library, it doesn't # matter if it was built on a different platform than what it is used on (see # https://github.com/nlohmann/json/issues/1697). set(PACKAGE_VERSION "@PROJECT_VERSION@") if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() if(PACKAGE_FIND_VERSION_MAJOR STREQUAL "@PROJECT_VERSION_MAJOR@") set(PACKAGE_VERSION_COMPATIBLE TRUE) else() set(PACKAGE_VERSION_COMPATIBLE FALSE) endif() if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) set(PACKAGE_VERSION_EXACT TRUE) endif() endif() json-3.11.3/cmake/pkg-config.pc.in000066400000000000000000000001761453145653700166260ustar00rootroot00000000000000Name: ${PROJECT_NAME} Description: JSON for Modern C++ Version: ${PROJECT_VERSION} Cflags: -I${CMAKE_INSTALL_FULL_INCLUDEDIR} json-3.11.3/cmake/scripts/000077500000000000000000000000001453145653700153345ustar00rootroot00000000000000json-3.11.3/cmake/scripts/gen_bazel_build_file.cmake000066400000000000000000000010371453145653700224430ustar00rootroot00000000000000# generate Bazel BUILD file set(PROJECT_ROOT "${CMAKE_CURRENT_LIST_DIR}/../..") set(BUILD_FILE "${PROJECT_ROOT}/BUILD.bazel") file(GLOB_RECURSE HEADERS LIST_DIRECTORIES false RELATIVE "${PROJECT_ROOT}" "include/*.hpp") file(WRITE "${BUILD_FILE}" [=[ cc_library( name = "json", hdrs = [ ]=]) foreach(header ${HEADERS}) file(APPEND "${BUILD_FILE}" " \"${header}\",\n") endforeach() file(APPEND "${BUILD_FILE}" [=[ ], includes = ["include"], visibility = ["//visibility:public"], alwayslink = True, ) ]=]) json-3.11.3/cmake/test.cmake000066400000000000000000000243441453145653700156350ustar00rootroot00000000000000set(_json_test_cmake_list_file ${CMAKE_CURRENT_LIST_FILE}) ############################################################################# # download test data ############################################################################# include(download_test_data) # test fixture to download test data add_test(NAME "download_test_data" COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target download_test_data ) set_tests_properties(download_test_data PROPERTIES FIXTURES_SETUP TEST_DATA) if(JSON_Valgrind) find_program(CMAKE_MEMORYCHECK_COMMAND valgrind) message(STATUS "Executing test suite with Valgrind (${CMAKE_MEMORYCHECK_COMMAND})") set(memcheck_command "${CMAKE_MEMORYCHECK_COMMAND} ${CMAKE_MEMORYCHECK_COMMAND_OPTIONS} --error-exitcode=1 --leak-check=full") separate_arguments(memcheck_command) endif() ############################################################################# # detect standard support ############################################################################# # C++11 is the minimum required set(compiler_supports_cpp_11 TRUE) foreach(feature ${CMAKE_CXX_COMPILE_FEATURES}) if (${feature} STREQUAL cxx_std_14) set(compiler_supports_cpp_14 TRUE) elseif (${feature} STREQUAL cxx_std_17) set(compiler_supports_cpp_17 TRUE) elseif (${feature} STREQUAL cxx_std_20) set(compiler_supports_cpp_20 TRUE) elseif (${feature} STREQUAL cxx_std_23) set(compiler_supports_cpp_23 TRUE) endif() endforeach() ############################################################################# # test functions ############################################################################# ############################################################################# # json_test_set_test_options( # all| # [CXX_STANDARDS all|...] # [COMPILE_DEFINITIONS ...] # [COMPILE_FEATURES ...] # [COMPILE_OPTIONS ...] # [LINK_LIBRARIES ...] # [LINK_OPTIONS ...] # [TEST_PROPERTIES ...]) # # Supply test- and standard-specific build settings and/or test properties. # Specify multiple tests using a list e.g., "test-foo;test-bar". # # Must be called BEFORE the test is created. ############################################################################# function(json_test_set_test_options tests) cmake_parse_arguments(args "" "" "CXX_STANDARDS;COMPILE_DEFINITIONS;COMPILE_FEATURES;COMPILE_OPTIONS;LINK_LIBRARIES;LINK_OPTIONS;TEST_PROPERTIES" ${ARGN}) if(NOT args_CXX_STANDARDS) set(args_CXX_STANDARDS "all") endif() foreach(test ${tests}) if("${test}" STREQUAL "all") set(test "") endif() foreach(cxx_standard ${args_CXX_STANDARDS}) if("${cxx_standard}" STREQUAL "all") if("${test}" STREQUAL "") message(FATAL_ERROR "Not supported. Change defaults in: ${_json_test_cmake_list_file}") endif() set(test_interface _json_test_interface_${test}) else() set(test_interface _json_test_interface_${test}_cpp_${cxx_standard}) endif() if(NOT TARGET ${test_interface}) add_library(${test_interface} INTERFACE) endif() target_compile_definitions(${test_interface} INTERFACE ${args_COMPILE_DEFINITIONS}) target_compile_features(${test_interface} INTERFACE ${args_COMPILE_FEATURES}) target_compile_options(${test_interface} INTERFACE ${args_COMPILE_OPTIONS}) target_link_libraries (${test_interface} INTERFACE ${args_LINK_LIBRARIES}) target_link_options(${test_interface} INTERFACE ${args_LINK_OPTIONS}) #set_target_properties(${test_interface} PROPERTIES JSON_TEST_PROPERTIES "${args_TEST_PROPERTIES}") set_property(DIRECTORY PROPERTY ${test_interface}_TEST_PROPERTIES "${args_TEST_PROPERTIES}" ) endforeach() endforeach() endfunction() # for internal use by _json_test_add_test() function(_json_test_apply_test_properties test_target properties_target) #get_target_property(test_properties ${properties_target} JSON_TEST_PROPERTIES) get_property(test_properties DIRECTORY PROPERTY ${properties_target}_TEST_PROPERTIES) if(test_properties) set_tests_properties(${test_target} PROPERTIES ${test_properties}) endif() endfunction() # for internal use by json_test_add_test_for() function(_json_test_add_test test_name file main cxx_standard) set(test_target ${test_name}_cpp${cxx_standard}) if(TARGET ${test_target}) message(FATAL_ERROR "Target ${test_target} has already been added.") endif() add_executable(${test_target} ${file}) target_link_libraries(${test_target} PRIVATE ${main}) # set and require C++ standard set_target_properties(${test_target} PROPERTIES CXX_STANDARD ${cxx_standard} CXX_STANDARD_REQUIRED ON ) # apply standard-specific build settings if(TARGET _json_test_interface__cpp_${cxx_standard}) target_link_libraries(${test_target} PRIVATE _json_test_interface__cpp_${cxx_standard}) endif() # apply test-specific build settings if(TARGET _json_test_interface_${test_name}) target_link_libraries(${test_target} PRIVATE _json_test_interface_${test_name}) endif() # apply test- and standard-specific build settings if(TARGET _json_test_interface_${test_name}_cpp_${cxx_standard}) target_link_libraries(${test_target} PRIVATE _json_test_interface_${test_name}_cpp_${cxx_standard} ) endif() if (JSON_FastTests) add_test(NAME ${test_target} COMMAND ${test_target} ${DOCTEST_TEST_FILTER} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) else() add_test(NAME ${test_target} COMMAND ${test_target} ${DOCTEST_TEST_FILTER} --no-skip WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) endif() set_tests_properties(${test_target} PROPERTIES LABELS "all" FIXTURES_REQUIRED TEST_DATA) # apply standard-specific test properties if(TARGET _json_test_interface__cpp_${cxx_standard}) _json_test_apply_test_properties(${test_target} _json_test_interface__cpp_${cxx_standard}) endif() # apply test-specific test properties if(TARGET _json_test_interface_${test_name}) _json_test_apply_test_properties(${test_target} _json_test_interface_${test_name}) endif() # apply test- and standard-specific test properties if(TARGET _json_test_interface_${test_name}_cpp_${cxx_standard}) _json_test_apply_test_properties(${test_target} _json_test_interface_${test_name}_cpp_${cxx_standard} ) endif() if(JSON_Valgrind) add_test(NAME ${test_target}_valgrind COMMAND ${memcheck_command} $ ${DOCTEST_TEST_FILTER} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) set_tests_properties(${test_target}_valgrind PROPERTIES LABELS "valgrind" FIXTURES_REQUIRED TEST_DATA ) endif() endfunction() ############################################################################# # json_test_add_test_for( # # [NAME ] # MAIN
# [CXX_STANDARDS ...] [FORCE]) # # Given a unit-foo.cpp, produces # # test-foo_cpp # # if C++ standard is supported by the compiler and the # source file contains JSON_HAS_CPP_. # Use NAME to override the filename-derived test name. # Use FORCE to create the test regardless of the file containing # JSON_HAS_CPP_. # Test targets are linked against
. # CXX_STANDARDS defaults to "11". ############################################################################# function(json_test_add_test_for file) cmake_parse_arguments(args "FORCE" "MAIN;NAME" "CXX_STANDARDS" ${ARGN}) if("${args_MAIN}" STREQUAL "") message(FATAL_ERROR "Required argument MAIN
missing.") endif() if("${args_NAME}" STREQUAL "") get_filename_component(file_basename ${file} NAME_WE) string(REGEX REPLACE "unit-([^$]+)" "test-\\1" test_name ${file_basename}) else() set(test_name ${args_NAME}) if(NOT test_name MATCHES "test-[^$]+") message(FATAL_ERROR "Test name must start with 'test-'.") endif() endif() if("${args_CXX_STANDARDS}" STREQUAL "") set(args_CXX_STANDARDS 11) endif() file(READ ${file} file_content) foreach(cxx_standard ${args_CXX_STANDARDS}) if(NOT compiler_supports_cpp_${cxx_standard}) continue() endif() # add unconditionally if C++11 (default) or forced if(NOT ("${cxx_standard}" STREQUAL 11 OR args_FORCE)) string(FIND "${file_content}" JSON_HAS_CPP_${cxx_standard} has_cpp_found) if(${has_cpp_found} EQUAL -1) continue() endif() endif() _json_test_add_test(${test_name} ${file} ${args_MAIN} ${cxx_standard}) endforeach() endfunction() ############################################################################# # json_test_should_build_32bit_test( # ) # # Check if the 32bit unit test should be built based on the value of # and store the result in the variables and # . ############################################################################# function(json_test_should_build_32bit_test build_32bit_var build_32bit_only_var input) set(${build_32bit_only_var} OFF PARENT_SCOPE) string(TOUPPER "${input}" ${build_32bit_var}) if("${${build_32bit_var}}" STREQUAL AUTO) # check if compiler is targeting 32bit by default include(CheckTypeSize) check_type_size("size_t" sizeof_size_t LANGUAGE CXX) if(${sizeof_size_t} AND ${sizeof_size_t} EQUAL 4) message(STATUS "Auto-enabling 32bit unit test.") set(${build_32bit_var} ON) else() set(${build_32bit_var} OFF) endif() elseif("${${build_32bit_var}}" STREQUAL ONLY) set(${build_32bit_only_var} ON PARENT_SCOPE) endif() set(${build_32bit_var} "${${build_32bit_var}}" PARENT_SCOPE) endfunction() json-3.11.3/docs/000077500000000000000000000000001453145653700135155ustar00rootroot00000000000000json-3.11.3/docs/Makefile000066400000000000000000000030011453145653700151470ustar00rootroot00000000000000SRCDIR = ../single_include all: create_output ########################################################################## # example files ########################################################################## # where are the example cpp files EXAMPLES = $(wildcard examples/*.cpp) cxx_standard = $(lastword c++11 $(filter c++%, $(subst ., ,$1))) # create output from a stand-alone example file %.output: %.cpp @echo "standard $(call cxx_standard $(<:.cpp=))" $(MAKE) $(<:.cpp=) \ CPPFLAGS="-I $(SRCDIR) -DJSON_USE_GLOBAL_UDLS=0" \ CXXFLAGS="-std=$(call cxx_standard,$(<:.cpp=)) -Wno-deprecated-declarations" ./$(<:.cpp=) > $@ rm $(<:.cpp=) # compare created output with current output of the example files %.test: %.cpp $(MAKE) $(<:.cpp=) \ CPPFLAGS="-I $(SRCDIR) -DJSON_USE_GLOBAL_UDLS=0" \ CXXFLAGS="-std=$(call cxx_standard,$(<:.cpp=)) -Wno-deprecated-declarations" ./$(<:.cpp=) > $@ diff $@ $(<:.cpp=.output) rm $(<:.cpp=) $@ # create output from all stand-alone example files create_output: $(EXAMPLES:.cpp=.output) # check output of all stand-alone example files check_output: $(EXAMPLES:.cpp=.test) # check output of all stand-alone example files (exclude files with platform-dependent output.) # This target is used in the CI (ci_test_documentation). check_output_portable: $(filter-out examples/meta.test examples/max_size.test examples/std_hash.test examples/basic_json__CompatibleType.test,$(EXAMPLES:.cpp=.test)) clean: rm -fr $(EXAMPLES:.cpp=) $(MAKE) clean -C docset $(MAKE) clean -C mkdocs json-3.11.3/docs/README.md000066400000000000000000000014341453145653700147760ustar00rootroot00000000000000# Documentation ## Generate documentation Note on documentation: The source files contain links to the online documentation at https://json.nlohmann.me. This URL contains the most recent documentation and should also be applicable to previous versions; documentation for deprecated functions is not removed, but marked deprecated. If you want to see the documentation for a specific tag or commit hash, you can generate it as follows (here for tag `v3.10.2`): ```shell git clone https://github.com/nlohmann/json.git cd json git checkout v3.10.2 make install_venv serve -C docs/mkdocs ``` Open URL in your browser. Replace from any URL from the source code `https://json.nlohmann.me` with `http://127.0.0.1:8000` to see the documentation for your tag or commit hash. json-3.11.3/docs/avatars.png000066400000000000000000063775101453145653700157070ustar00rootroot00000000000000PNG  IHDR2bIDATx}weEUu9`sF$"XuQր("(S Ha9n}ߪB'ѿ*T*-D5k~ h[߀^AD>{~s01{k+¿ZzIP̈dɒeιw?-=x=@Q&91J0 .]z !bf WcǟK/1B$O3J_dwc{$z_W{_ >Cy?n}9OsP&׭=4>W a*٣Ͽ[9~[z5dr9uϞ=gɾ|?B+rwnvthOՏ B\lKSUa ȟ?q/~ cCADج}J"k\s5g~Wr]v1Ƭ\뮻$r t"5<2b uiDmv-;tU);; ek7@79` %=f2֞g=S;;ns9]v@͛7Moj6\gVD'Rw/MZc7UV]q]w;o~ oxCww7Xpa>+%ץL׿K~_;yi]vɃc~p E@/@}xN8>w/Yw~R ]wݺuy0b>/%hho_zsoGsW_}uvID-Zt뭷"bxAa8/e"ME_xY)?wp o8>?OnܸQk}z׻s|{OD/ѿ -.r'?lLD9 _*Rp7~+_~.(N8njժ|͚5_|1h?_ٿ3݀ DI5 nZa no TPVB$nD[5M@ so~vW0>/|gwwwf؜y|0"'?7]z;|GG?:}Cqo| mY2 *?0 VC.l mJ[,o@"rVOi>b2 LnXHn,Yw?D,C]CUJva{9s~_.;Yg|%u]/{`ƍ_|<')>}ZKD-ߢ^eY2z1ے}F$L H)*B['@ & 7\./Xo^qW;wW_~pw!"}}}Jev?Zkkm{/b^{[J`-& NnD?fmdҶ]_ <m%y.J?}-ZSN-}}}7|sPX`3<3{$I,YBDZ롡9s  2& e 뮻:c$Y?ǟ?%K_`ggv/y@oSLlvvv_~xxXkŋveشiL?"BD'|r[.1c=2?־,J'9TI{|+?!?l p͙q?88ݽ{:jڳWf81Y{]wz /Gy}{ߌ31+iO ox?ǿ/`ѢE/l6@D.\XV8zj`BoXk4>p饗>=POOH(;O>[*e{"_qI|cˬ~\[ ,9fy|w^r%J~bqڴiBЋJ׷ca@mmmkD]Es ']/aO?ntIfz?W*J .Xb󭵭V+I,/;;;s\ggsnsGqAe|BENDߚDۋLJm- #@ Yj@#q粏o-)AxѢEp*GĊ𶷽-Oӛo9c9O^W g @SyJUtk&@1x_< p=cO_ ۄ*f%PDN9c#;vqw_nm+,S^p瞻aD|^g}%G>^xwޙCDYW'_ZJj /v .ٳgtA+ ٧Xx eXtl6x #1-o p ^nK/y;o~~w饗9 .ӟtra~WU^s//Y#E8#7lp-뮇v؞{"k!]8/SN9?P( (O~`ppok8 foڴiYSzGuT^^Y_ʕ+-W ĔѮo\O9"*Gq~< p N8a. ;ow<3x;gN{쨣Z|~Zz^wAe_zY)?O?쳿/cD裏={7}{DEѫ_jTRy;SL%K:WU ,8T*}_{zznC='o~N;xYLxހ^l&пeZ|>7kkg?'xOZ;8ٳggGvƌ; |e/x}= />-r~>яΟ?XFzIQvdҥK?N>Zxܹox8΢='p8kM4e)SNi4~~7MG0~v}{̙3??Ȍ.z|rR6l83wyo|]]]}{|0IK_қ%Kd|>WZD1rk0Q:iXtM|~ 暣>zxxSN~S@ѿ _flmVQJmܸ/~nϟ?~ |Emذ$s5k yo}[;::FGGPg?O}SI|#җDtwqpg<GqO?}M7._|'>Va$y{KDz38O1ҶNֿ+1,_k?>+V̚5K/}[ޢZn-3,\pʕI̘1c=o9䐳:묳jۏ<Ȇ f͚̟'.׬YrʓO>-oyK__I'%}/z׻:{b? 2/X_`o-_XBk=4MNwҥKokK.c9s9Ζx+iWz 믿apΕ~Q{g:Sb߿y/}{ߥ^ꜻw_>sfr駟~-{Vp¬Zkm!@3~;l/}K't6+|9ϟ/"=矯ʀY}ݿ/{/(kiviW^yO~C9dYѵk._|ҥ;^tE[\/^ʢI]wݜ9s:,k~?M4}{_6`$[ qۢ2zپo}9k?~pԩy{gQn׼5_җ̷o}[_/|n}{w~$I%}٥ʅ }qM/1?eagF\s>[n;XxqV3G}u[n.nRJ!ssqbŊ3<3>Gu~ ̍F߿eo/&znvm̙3 ޲f͚G}~wUU1뮻.ҥK^y{駟J4M_W_pٓZ끁;y_lY& ˔=裵Z\. q%" 0 W\n]v)I<ӍFλ9 osN<9Znݺ'|Moz5\{y} VY9v)O<ĻT*z3g\zuR%;6mz'^4(-<}e߳-1sןviwmw^ve37x7f̘qꩧ~3fȺ|;A%\2sLV7x'SOey_p>o}[3f̸ˏ=lc[bGsA"s^b?/|̪ҳgyΜ9v 7y睳g>3?WZsw}W\966&"Ris=|;$O~BDi'x5k BWW׾{wtI7tSY~k^׿Gu?|+!;3+݀??OoeK0Ѿ_P=o(yiKWWaβ4Vne]ߦ2eS&?ŋO>}ԭ%x'LQGxjzWfe+ϦV_'?o??Rb1caiӦ+ϰ|;#2X{jh4v} ;&MOW*g[£YM/GǞ|xEҭ|ʶ+ydnM=`J{U/iߑ>@T a.> w} B&n7nܸ~x൯}7V8SO=?iX`9眓5:Jx3 {މ'xK'|g??|ժUSNկ~ۛӬ{3L:+2a6yիW}0{O?{u:18:묕+W~_g+9 ye=={~wߖ(>x5nz>[X-x{?sK.y!ti}_=c-[y-nAkCD\Ν 6l:<{9[3cXP{xDp Zo|6W\qűYAj.l'> h> u=.gbK|XxUW]3җtG/Z(sG?z14ɓ'M4 6L̾>3?"o}[~2Лky׻ޕUW~{ߛ3gNG˖-c=v}RpLhbA/1ߙFGGk7m4mڴ38㢋.:^җtGtIP[̙ \."2u|PD8\.700?.p2wO} r,jod|`nW\~-W|K wsΝ;w޼yN;tGttt|3rU'|7|󩧞|d:-za.ZhժUg~ӛ|.;÷ y?s{/|!"W_=88("ykO VtRx^flιnizy޼y_|J_iN4#co&<"w;3s.{v|tP C}%KDQG3l޼GJ׿zA]?>eSO}_g׿R|fttOz(k 1sYVӧ߯ά-]c;/첞-0Ϭ~wK.)3Ge˖=y?  oӿ'xgfkmV|㎫jw/SO=ue{XbEv) `d#r!SNַ~}w}wf{cɬfZy_3?{_x1"޳f"HWmBD9Nj|>< ֿ'|?\*9\p/yZ;<< {5\ Y>7_vm;΃>~g}o pv? _D~N2eʇ?o}[itM;SP8W\ $ }i>ߓH:蠃:&g~ӦM{~~k֬󗵵k³BP(կZ`AfM9z衇zk_g>׼5x̜9SO͔>o|===zg>2^:C4M \?| OG٤zYι)Svi/9c"u]agn햙=k׮2P(]vw~iٴ}׾y{2}{ wpBy{ޓ>hr{Gf4,⠗L;駟÷tҟݽv_z`\w}9ϝ;7SJ5͗"hѢlLjv߽?%K[LQ$Q4yO<,X3ğfR.oA/1ߙ.]tQ֭T*e˯F!"ӦMj|?;{lwyjvaO>ZG}Crm'x%\b%Nj-N:)+7{衇3 1%;3L4]59sfVk3 {v xﳾnG}tfÿ=P~3\.V0fA͛7U;N;ӳڗ^z)"^((SD/?84<̝lj<{lm7[&k""glYP !@a,M$#;m5k%uďZ *r8K8n4|C. Sr^y 2{' :=J׼=CR;F ADA@!v(Hd(~pw !" FQ{b!&BTIRJ)G RB I} ev*F$B$&S>HXiADFBEDHD( PLTFv$1JX:*ƀs,^yOmd6v{AF+A̸aF=c9A,6&4A( 9b6m,_7R&Tk%m(CP*NgA1%ou`:A4K }-@"#&JhbBD$h!<9A)"(ݠX(*TDxy `qJE+U' ;@AHA85шF?3=5Pr Q =;+R:n 0I8_k51Dڑ1~uٳf̈chY(AT,` D@"$- ɉjIDE, Df|hG (H! ^E 3vDD"D?fI3$F$EDP@FD"Jz8`Y)Vb-"XJE( yI>o")33g!;;[m)$eNjq ١g aEND(aL{:z5a^ $ĈHj1)V-" &Hq x"0E((, q^HH^[Q!MT~^@"qBV@H@@#^?_x{ zcwrOv.h L'&l!:$ v0{H;Zmάz+y'vC PyfC8no;nզ}/y~LE?"XXX" @dߝ~ň"EA! FRJ"DP"ҙGN?ehAW,  (H !*B" #D3ަ a f M$FAhEN{Ndp``ɊӜRGXO h$M۩F֒Z4iw6 ӎrW M T1Z:y (G BB <+}ߵ zAPJ&Y@& "86`K$ǒC= Qjb[~Q/ ^$a"@€TPRdERDZٵE$"ʥ_G?ըGP׆0j7XѦV{@ 4BWF6O*k(BB` !q#2g}.;lSjV$f@"DB R8.Yw={0 "K}"$ "Ԩ"B@H$DHDJ!"lD >-ED(@LHp|v'"!@DbV7oБOPkxrg) q %LRݕ'֖ ){n6rUP)`J9juMhFJij'uѰi 럞?C x"gjA!D B @` b',@`/ J%2qE"~* REH!I*Y$""^DSE (fVH/_/RՎ|xѤAdgϒZ‘PAR5',_v,=erJ{l;U NmO=}k_U0J#2Ʉ/h[Eq2FvK8ܤ(T HiT AQMvRԄ)3hPP *c@@&B8lKa$ XJZ"4!0bx1DZ8(xJc5@D t^*! 0̂4Y[d>JʉҘIO`q,9ED  NKO|nMށR8kPT8 tD.bBn!dV^sw.߬١v;ȃ^+u7r+F]qM/E u>@I&J?_ݯVD!(  @024B46ǕN5&ABP*iRZFBQ Q!Ro@D)p2sG2 0-LГLd< $AQ8P{&TNizԑ(qf|@TmA Hz8 ѠʁRD(@ĂH#V~'~ 9CA5iY#Qm=SsMLh҆čFbN9, @P@1p % # cK  ٰ/"uKjø~ty@8D$ф@ EtW.׏ǡ"M,"Y"@ERPy"ED'DTD 36sTj^en?w?3k_aEc%"bw:TH JghJ*7ĭVD^0fI4Ș0+T,2#@J#"k}:mchH;z7Jrx^b\vO雲ת2hltlݪMfi>RB1BZ(JD-))<㉞,"Py! [@-"K P0f@؏ 0pvv(/,q,Yn#-|xhxMbPktwt&x\0זtxg`tFԼLjNaytt  ^:hviᢅ'_os`gEЄJ_Kfo8RB`PjBg-}pǿf)!)RD DZ+"! ١'"Heq$@"!ld srDd!DֈNEpuvEdP$HP7S(94r ؋$cM+6*Z Nm bn%+/.uف "v6ZlNRiZO%,QG`ܸgx4 S.ojJ&hk4딏\j#Gl;*FcJ%׀^!D,gQ@2H DO]&L|L‘H0#v"y0 w~]HUQ I]2dyv%S,^8`K&O~3 Y(/:H!^T\I}G!m Ǭ@۟XזּZ7y֎s̙1O2i@\sݝcxa̚3oܝ[Ls[HAk)zg0VpO|ji3@}ʂXmv9Ry< RP")ZbEJkDbR@DDY&[Bm<]';=q J!cf #O~"FFARLaek`B1ZJ6Z޹R(2K{O:bA %\oJcT gEI5a{ϴ*JTk˺/"kk1UiƄ4鱤dJ(A J 4 % 9;Y h'((EӘ F D:Lf3$XH IRUDl3"x I& O+2=8D(F6>tQ& gS\9OgNkM :LCS:ҹbngɬӆkc3u]9'CJo'WF:x_+gV6u+̙PZ'qIg&8=?v'NDcKVF6 쳅&L@J"Q1F($RZ "DE3 x4(K9 ga~@)i@,! אַEVL;q\m@ͬ'rZ"%REijI 1:j.ʍZ34Ч` HCe,lMFR3IZ.u _-@3J- "fPDZ@2F yVs.ԄksF !0$Rgi(2e E N5{ǒ㭪тX+7>J bn5/[CŎRsx֢bvrbVkG>kr׬^x OS} qK77~r!yxYjY{T*FZFy:Hv"UnKyg>vN 6͓JG% jHbHRZ)Z#3sR*KerP" q:Ehf ʓMDE<8Fy"H5EL03YN)h{ͩ0D +T 49P 6ʳ( pR,9,9Hvc B9&u>t@eӄ6'RgܗuUAxϬHJO:Ʃ㔽_`. gA@( >0ڄc(B 7~AR"h{0 TH$@i& )@&TH!(,$yAzyy#B0(葉dI2h`:#2WʣM y652(TVTaBdBuZ-q3;yzq`Tlmfd{i60p @8S=Eo䌟Ka 1x)! s49Zfv끇B, $=yOTzhh|iR@_ Ϟ9C,#bk-kϬ=];pc}*màK{ǜŎ[=}=c@S'z|yV;E2 !R4qrl?;)Tq&IH!' BAC $oAE!b@dPL)k!}$A6i`hF sNQ#-r"j(/"BQ˭PHjiOU逵J+*N)0ԆKTa0ˋVKˋ׎S}(h[b:>eyc B"ZL 2#/(%raE1FadnRGzw :aګx>c )D@/5K (Lɖg%D-aӌ&"W1^Ad:&ϊ9l0;ӕ3;p .MrfL: K&toEt.3FsKcUѲ[SJa UnhH&6α[ wU"Չ⚛>n%czʒo\˞5m7)R@6؃,ed$@ M)D(QH#dQbU I# '|DQ$Ie^, I0tu, c=C^AY]P@!ĤbBBJBTĨ*:4:P E) C-Q "xVhMPPyH}3 +b/nMg(kJ]cdU`ź}SZm:k%Dh'z"ȁDf9qG8*-\z\ c=8f@$!N|6 , Y*X7R[!@qssG50J ջ# 4lz8SUxٰfUS|_ww&#>)\ѥLz4Fq@28Z/+7pfj]WFan551 {0{rq6^/9]^/7Gz*h-ʼnrI,y!0B A`.oJ)e|rs |" "#g~Hg,٪( -`v&c)T N J"iJ@* *R:wSDXPĢIRJxVdsJNZ4f=12E3/a+l䂄9ηMݝQ͵6SY=0.P膕ό-{.I1@X䭞@=WHD j"H*>(ugg Q(;po*>IABB奙X [tCUqzÎĞ>q``+igr|u䙇֬(Ne в,Vv?'d 4PJ՝ݘkMNىO304`݀4˳v讷§:)udzl:*ya;Sv?ZCoݲJPIbTDH)"MJ6hYDiH e8"`HUC@$mDT8  s@תi-6eDa!dZG4`y(@ CD!`8 K-,'( #ѥ(Lm]L,4MqZUAc.ۦTzz;6M`nڎ= (FA8&%2 @ "b  @DZ`ۄHu@ `oM4 tNf NBJ%3S26P؂0H01VH>jlA>& nn'SwWwap^~η UCXe7+W*&4&rY޵pxLT =~ij͎1LҲBGV֔gKe}536ߗ«3I WqÊf.ieehO(@Pi$E@2YX#  K#/FCHtbg"3xBƦGaYۃD5dav*&W% ZvHgV @,M1"x-, AN4`,hD%D@/Ga;RӶ q0yI<0fgm/P4rap҈G>oՋaMRK-3.E  K ttx&0AT?Bt!qJ^R EZzb ZʃgR XD|e4?<{1}fY)d^>5Cn^+?^^%S7#iO_biz\@k:h4_0[;w_b47Fe+sCI|wJu䨚U3WߧGn4IV,_sݷ`p {֩c;(ɠ҄H)&ġpM-΄x"<@#AɱW"*w'LIJz i%Fv.9 9P5Xj+f*Ҥ5BH-pTCž(eY@X4JB#CA*Wt- =gMVo:ANs(Eijnd횐m`Vlժ]L-tv߼vq#3Ŧ)n_wWlY?ۘ#P;m≀UDRBH)2RDDHE ǓD Ag%DC$42/qx/Rlz' R rD )BT!j@P*(B=!(KQYڍZMPj|%2ڻ mh&lphZ9k!*Ut\0 D*( jDZ@PKU"@ F6=A/LW>\JViG3t 0MUj%Ds%qH,Қz_#;ހԥFA@Ld["\j?)>t<4DwܴǬvaԤvF>q#*vnt)eWl!Xrdtrkzwm:ү+AXYtjszsu7_njH#*GZc'0/!3dv7q'>FU6@r"IQTz\EJaWD^ xɖh KYz@` 5PH0)H+Fk+>P@ SEF-1MybѤ4HQ)!FBBČtY(Ɋ,uEJS5vɠ q6qlPij61֬ Ri0cC/PJًJlXB/,HXO|%,q\xH r Fiuk xʼ$"^FB԰T\lzW=妦 C"ud *D8qky '\3c=;oj^".u1B:'z \$A&^LhV+i[Mr"n?|>oeg =~R#vikZ ۍkUĩOF)Ҝ" FEUA h(s`*8TP8ީb܃PRֺ'Uq" w^m=;FY j!U( ̀dH"!vȎHj@`2tL2zM# 6T`r4q!ŀ-iգ\'Y 8N* j0s%+XD<+beġ-22^@D!$Hr)D0O9 qSOܫ۱TVmL:^>9,nݻҍ%\ 0p% F!aH|⣠c  @d-jB/jx,?Rࣽwywwk?XNz졾ѪVbGpCm77u4@}R 7k:iTsFDڍuC \r.SiƮ٫!xwGgD3GM)5K!}ҷ71I+49 phX.H PAnj0 ɕU=MSRbN@ DD&2@O Ql@Ii"F)WuH9ȀT>mج 2`ؠDD1 BJ haq\k 𘋖tRqs&V܊uhM#Ӣ(w|jPSZtM|%K>ؓ"AqHq(BJs.  8(5C cS_0z,2}9ۻvM2FQ+Űq;FS&l%𜪩FV.g|r.];vڪy;u1{qRJ(egte29|҂D0)l[hJ5 b`$B#@0Z *F4%")#P0H*k]*y%iTSa֡&Ĝ8er&^38CuM(N0,FCF1ⓑeÃַCQFI) AE 4 LtdhhT9 !Cuz=wQ ='uV+DA^@ʀ Xi،l=T@n4V%ը-H  "$ |mss#Эe{O҅}{L9cVۧki{3oLۭ?YbS> !G/_.ծʊJmN]Zkl$1+ yjߑYkoifLsO(# (P †xnN>xȫc,*wo0ȍk[T=p'7,LC?us^L>14)@ pU`0Y@ # m\$aBж 6뺧zLS "m`4y(B+ H2NH zoYu1ǵ3ij{IA[͹(N<'ζ"eс͹aRxvhmCUЈ RfU_Y@ `05m2_0 FS*贲 Űkj;o}t+7h3s=v%KH]UF\~wQG沈`YF}kWTǾ|h+Pܔ]od[՛KkCYS =9Ulro;#ë~zp`SjB$FK(ϙ([Q}Uy;?ҵ7S49oy׷sbv{v]6֮fe2l,3ۯ۷D,v H#`y-f]uGaovn3#í( Ƣ1K;C}9eoӻ׷@"Q3Ǟɋ'@Yqf Xwd@ gBP{X#R ^yu$BBZQI]@N)@ b( $3ya`T7Fk"`8xrٲ%KhZ$E AXL@@|`"JQgj m`JJd@fVYQIfXT4@1LDrmYRwF4sDZk̓#skI:hb9n MCU_@W$]RPB [(F~O;@<H5I7՟J67p#4{ݎoBEe䁆$EZ9)5E{t)tKԷRkFEQQA` B!qA<57̞[ FZrXaiӫr`gh kS\7_Ym }%+r_"$R`5GuKlWY5E uS,1aDKo`ݓmjR(e q)moG96z}G )+P.eRj1EN0̊C1o; v+ZPh`b xa@ Q)+ˈ L\\̍&{seS4)HYX[/*vLLخ7:Ž|1F5j o6mǽ] Dd$^Xhb,Vz{7˾vӺ$pn3hv-I{{[HT;l/t(և7]1ml,9N%$z*u^(Y/C M 2H7FAK 8? Pwck=Gȫjm53czxf7vߐ*\R)s> OJQk5-tG2G]VӶ+*l@w~oo F{1wގ L:ahPEzsf} +ͫFu˥APBؐTJ[I1mW4%0~klq|arV}Ϛ/_isE!" Bd0N-"xS%{F (B@RN|\w."©`Q" b9R BE<x2b<(h&c>K]Z3ɺok51ށwp"~qO,a1|p_s~/N֚D؜rgOyro; 55Xx.ieTʅ ֬j urP)CR )Jq{j̚>:N{*.{Z;mHn vUcw"6O_μ`uwP8jJ]%Yxm=)02*\C#kֹٽ;Ll'h-W)9mk~\|flc٘!¼?oV u D\.̫H;4 QfmRd}o(u V]M(Xg36B!]nXF>X7xQhT8AJk޶~ŏ>.;=-)DTWt; ~` )C Z)ft`%i83vx`A )B.jx\TE|;-pG Rqm6W@VۊwVܿ<6;g\]|JGɤc?e$.kK4fR,^Z <(PC #IأeTJIAFBRd(֤1nHVb>یQ΅YU@3yR;y`qrP&9Jydt,q!cV Uj1x1yom(0j*;KJ:=4NFȁ4ZDf`#-2͗ӂ |Ew!*h85B9V)% dU2q#/0>M mrmtm!ʀҬ(%JMnz/3"= Se*9ہ"c,IAhFJFFҶ9"Zg#{3A%H5"= R&'s&W׵%9==MZ\IFp37Rk@b[.G#6L1 ȫH<\X+ں ,lt>P6! Kβ &۾g=+9} ɦhO(R`ȺI6g@ 3衘p%B!hVIonsҴh5Teބw8vi-:a̗ѻb.G\I9 ۤȃ@ےǒ2Z9RbBj4֒HNb˝(,-"!'0^혽8l;K aCN`s-T9kzŊKl=w5~lӆAPD)B=EmhD E*,߳{n{bi1$ RdDZ!jOiMõ$b\Uny##(Χh D{:'(Mk[)sJ|) O%b9:wRZ ;I6FXLRhFP6%sM4e㚍k|jaTj'hi*A`j!6 JuC]*֯$й`o|籇!izXڬY'\rlUⲚcpĠ.xʦ^M )λvm*1)'wb qAj@h>*TKQ@GZF3.z;-J!A@E,%daVoȔWdzLm4N['"K@"֢"4!qW 5*lZ{ro[QVk {]qnK*4eh`mul{a* (s:q";hBƠxS.;&ZsxFィYgJOw0W YicXncmM--¢: aP^,e{>UkU'r\;iC*Y^SG(N(RTne+Y n[38!Aft5_$g= |?-`'ah$\6ɥZ\S'9]4ZŤf1LH9@8I]k63k0lj6HI1m5 sGg49'" {!j/@vrF#8&hnA9UTk4x U>PI`鹌9 3& ;Y'kԓթ|..fA}uՑRpJq, TE:4Ά{J&jmSr̾uVgI‚=ofC3e$8vk~IZqYCJʾ@w*e²V#%oiqpm>!}5{/c$+TMji' MZ444RO4<|n2='F 3j8&$U$ G Q`Hkr*`I#RD(qp&Bd2YX5|/ySR&TʕzD>(ʛf{֠TXIq8ĂIH'lb(@[V7Z*Vyq/nLGBϳIJe[4Z3kkF # 2Dd?,@8Lg}}O^vY .T+R2$$Rcd|N4P P.S-g@EGBk.n!\k)07AU#RBVRv:kMŤHypNN}]*hU*'WWz45 6B5s Xl?8W VW7<BllN/.dB?ny:jRz>8*m؛eqD_7}qw~1 z"o(D j8"l>۳ws!ngNvuFMdD*$']#}OLM/&Ꝏ$Mq3n794GeȢVRd:LVWTsR.YY=x\Iwa,M{ecrҨ-/ZÊW3w}k #pHB点^5f(KY8ؖS-f7P5bՄu<gmakx$4iMX%prmX4Bgl{v#"6qS3F3V"$cQ @f.I#bAͅFgj' ry_fkFɕV _ RoLmɾyZ+%zJU&U":pHk-Fl2rq"oѹ啃+ ˩;~rƝXT93p*vkEBD29+˲Jh#9&ȫZ``D_dt#:%u-H@^?ݝd1 nwyD:N~JHc |e)0A漱M[JjSmBpA4+}y>d+y-@a.8!=c]b=f]m*T V'y2ǎ!1X  !4 }z)[6,hWۍ=;z5' ղ3ؚo=wLA$v\W.45R6S( I2fq(H"RbYJSf!5̜ 4f_^`bhZG; aOwif@$cY70aYe@!qTYّy,,TNå^j$ z z^)% &daԊ >!-k3KpEKBɵS ] %ȫ(ν0AWPGh! J@,b b7CAW Dq?J0_"|4;7P"pV`@{0ٕEA\'ÜreEqAmx7IQ M BNž9f2}nbpo_)[ָ ],n4csS6/i(yPOA13%HP5U[ZqNu9aF+WɁ#az)Ϧ[ E]s,ހfcS^Tl :0@c8dX|'2 Xa :%y~DگBBVLLl5ct!VPz*)U*}T{A2.VE&̇^κvrEg!Bd|?7WO2=hlfmv\.71)䓌FgzjaP.VE` 'tCn.p4R0[ob)5$UI"}E q8ҝ4H?@ PR J ̒ 1)7+9L~׿ylnwPYl}7x->\ 38N-JoնNE{ݍ1U=Ơsək4 A{erURajntlQՖ| V3Y[Ͼ:Cȏr%efQ9FYH,ke+m(+y J=Daghx"IҎĩ3uvr#՜NeRuV{7lU)tO5mY8!3V5v4{ZSXI[ᑾLkG Mz E ˵GNbib/: wm޷cr*2Ez՛[?+&g,kuZm 2yxֱZBG z/ޯSuDxhT2Pu^/If 0!(ĺSQCq L 2Dx5ˑnW[,b/]]Pڡ 5Z;ܰDa5bS@q"b@ՄO,v^q`:x[ vidE ,z'2`2 8#t}JW3XY HJRԬ|v%[m|O0o4kgaۮfo(j PsrCސ|LTkF @M ezn7ͥ3gO]wˣ~.nX@"HkQ?PO$P-D N7]qa!THg\{sƸn fuPAfr=skf&H۶7 0żF8ݫ`A\Ӓa#52$e,BAfJ$ýVO.ʼn#bngc~kh؁w:5xzidp\8>95Mf_̍pSg[ IǶ6;O<{|,BTM3B1YnJtx5U2PJ3jNg3hf✢PB2"z]fzU@ŵ>@Ղ2*<!Ob")3|@B qz`\šYs D9kZ ІMB #]'k?l+qF\=6l< :_P$nb#͆W& z*û7ing}Ҷ]cC+7J<:}ښf28{07Wv6rޓ~I9LDŀL3@4N0XA y%bi$Hc-peÝJD9nЭ^kfR :)?]4f-`t`b >`jNI!Hf9<gXH5W!y`.)F q$<+jq\ULT- ǃ͕YOu ;̴=aӨW*yH`R^M\ lr}}?~:e㻶L XۿT(XZZ:C }ZOux}1"*"ki鍌ۭ B z68F6eد r@Dl4ڀzB A L t!דXz!`AwyYhx/{sc[+ߜ9/Neںr ۍ*ʡC˭^6YB\䳫M;`ZYl6{SX<ϫ5DhFT5q}nxmK*X cuC&W\#l"@kׂnkĽHc cVrg>v_42{Buի+cm֦{(RvnBJtfVX`!<^ dWr (VM45U1v3ljU_nYmɧ\|xvЖ=l4|," D`| { M@\N+cg2K7/$]]Y.07ҎZ3)(03P@Y4"Sf9M%&V"H¢,v"@@RvhjJX$D:1<^EFUROSVGz텥eI\LԴ\y$b*V/ Mw#QՕNc'1(FR9 RE@|zCQ]4nt` D\%)j@hdX>Lg:pA%57.*)H0{>PHDeh$Cbm㋏=90k=WOhP~c_ibБJu`%ʕ(XLĐ$ \L, x<`\\NV'(I 3+mGzE.ZаK<{ g.YXN:6!$-dʪ!Q1#a qQTR Qzma@$q' g5ʡtt7ygGZ sI/\֤s(f;£?@HA2XDPq~.F(ϱQx9L |E R$䊅@OP+rG1Ý{ovXT XZ.(1B^;l߽iZmlҰ\Zjdvl0lS$™0l*@::`D1#dM&@"lLg` v.@.hs5ڀn0"HrpY6Y'z>j/q>dhxߞ-_cf ;vT(l2h VX)QEI'nygx^7k!8kB)q|u-Bd́w}|_Нo8xgy[}{Oogy\'*{6WHVKTll?! Gi AA [+]+6f@8!d%P,BvUq¿cD.Dh5=ݙ)Z;n8/~P.E޷fBxQg01Z޾sgOɾ*Ԥ|#-3lۤ48 ʅBIqhd @rbRJgR'Wlٽ S8? wRcf}ëF=3@r@cu7GyN"NK/֦"/46a- DRP.t~H{<Ŏh2w (t%'e7V2im3(: { Z{!@Q㩵g"Uvn  .u'FsqkY/QVHl \TfgUf[AoHڬp Oީqim͟[PH[AT #Ul^85+ cO:Էfm70;_Zh(i4WF,=!Z@iN+!@Z[zv0HR H:m6v6ިSn;"9p#(@ `zkWW#DM8*Ý_ni~DHTT$Kr.VB8KĤ?8S8K6ʞ? C 6إCǏhR3ifBʇJΒ8vrd^B/^G*B]@^cy6y+AB"eXkMS-ɑye% Zp ʑ-Ea;ˢ δ'0˱t{D6u =-J$USv#?/ EC&<َٱgW5whjeEjO3m'ܵQ[v^{ӎMcGj+<ޮ-[-ͬ>>wg9 MgOH GW'v 3|zzhTtO90>|3QGN?P@ @`n : z uDi cL5/*W^$BEF!y "':|S^k%VrrY!vsl6zh fތ 3%({NJU^v)R', J>{*K9$RkrH<ҸNfWo>;Y=o@WCQYcѨ^T.X{~bm1^Iݤiw: gl =.qǕ.]pI {^+rq /%qJ, X[[g  sֳt)7``XoB@>A+LJK_#֎(ON'\D)&ΌUnB% V֡/DiuK`8udmKStߙ{\(XlX)X(eÐfҌ]ê3x`)OC ق<0+A1'=-5Ni lb#if6:o;Q^uɏgOZ@ٵed`_;NٿyR?>zm=:GMlVSwԩ-\Mr4:}|!]i(u]SJ7Y]F,@_65lY |?3"vrakh!z|H;(m]lϙP.6sO) kkut[w u˅ ąr`yأ O//CщƬ(*̇5@榽=߷UGQ.QI IDʹTK,-4O>\YLv>٩-VbJ )zN&UpټCQ`s+@1@A:)EKו>z3QoMDyPqD:$k$!48flI ",@em0xTxxfaVU"T;N,Gf[m ôf iУM&ǦJ+yJ[zY֮r'岮% nxļZ G+^<9(O,O6Bu鴯,`5ɦن1<N9]I2$a5bs@ytu=b" f٬"B-&A리 < ( #h 5&҅ Bеp <ל_3Un/r^V * XDO4[.?u(? C8 ^s!wT˜Xc YS%I'TThdVsT,՚ue2͔'I=7n'᧹S\rcX[xF) d逳`QP<q HNΑX`)5,@G@DD hUOR'H8eN*X-4Xy -㳫˝3^ ʥZ)$vm5z=ӨsM7ˍ`<\ǹ|uޝK69Ħ-O \No۴cѬ5! `dj3 *e]!;}lH± Ml^mͶ$3HLY-g'+G?V3kɡ/|t ]ŸK{;6}qt.  uFs|"M6եm0.=.t|[BTH螳 <?Ϻy=+xVf4&&?#V.'Oxyo~1We뱙j+^*%GH2yo!Ey>RW\<.|C z^MҘ+m 61Q-%@E.r* w}ȹXҥ;}C>;*}??|-=H/obֆU[۶gǞ7Zc"v3R Bdk5 ?WQHuo*\ՁRX"qXr:9~gpto׶͛RѶ޶$ ZB upϯL"@?GeW\wc'~߾>FTZi;@.&}䏮s]>W6 KiTyr)硾flop;S?~>?uo.üeEGBFQbs/9F)DkMmM䦛oՇ]Yd4;ҎXH@@i}hϳ]\/Fy<ϵ0a 5v͗ ?{1ɇ>x?էWKzm%X~߿1ŧ$"gj_x&Q#4NW fU@ńA 62տͅ>vGwLCS)uq"@T>zņwƯM\0ا7GC}~`A/t: 75ҼQd{C/~y6L vݞ1B5'v 초.U`ە3YsΗJ 0t*'& DF=]\ZOW z"hBAB*Bݘ%y HKcH_zӃƑbV Y\2": 3nyUL`-w}-*Z >{%*H#'ݦOg{^y+KG)I۽R[~ԟ՗C (C98s729Ǿ[^.;>9g]Nw|[nK33SLK_|7'+b2R)xL^0p|.{POͬMkWvZ8yTS0V _:c񢟿ozyw?W QLo{_= 7C@NΩ%8~# "Idlˏ}obZ!}7l+I@ 9JW(p ˜Evpt16[_ٲuS>{c?4ϗ5cYƾ~X:`WP,9hhWcH>͞"Z"!O}'L,#lorNwܽhle6a;u ߸?[q֌#% WDVW&Չ:({cO??}տ:NhB^ΝjL^b@pl٥kcܿĕ];\鸆UZgrQpuW#86FONJ0lJG{ʅxyCÕ#'߷g2PETIX$Dm0 ))”X _~__zcZ܆alBM/h`F>w/P_b;FF"Cqw[sS%kMJI_[9e!A*~uC=o^"! Y#(ﯮ.r_.]9ƉWnFӴV咽~&P$V(*z/uE?eB׋`ĦiQ|q}8 |.4b؋@&&Lu{L%3ϵ+^<$9u0(:qe?x~~? 5} ie Y#.:mh&r_{߸\s}=վ8AB_c<^35a!ya/\Ƞ׻#bpn ^Q/³X Gʀ`,œq91YWuY\(@HO!x? $:@ 3HӏOrT- ?#Z#~ _x3~OL H3ɑۃ|Db?sH坯s{iUw\㝯_{$Noumu|dמ-j=ZnO|=W.C.ҹ\KC$+M.<={#CJQ/>7[ \v#H0GtTd[3 "t1^l^2hDQcXxpkpmF 5~;/ӣ"@"Ƞ 2'Yr0KFC{ݿ+}A-1*'JX_Y ;}3Dzjʄ@"pz1kW_)眫ދ УuKs=M/~煲ihcyeeaYkIHk[_[o<2=ܲ˿}Y{td,_W~C[0Tq|Ѵ^xyf/,fO>VGwۭ zGz.R(L$=0dʑɅmv{mg{پbt|uכ['ƞyr/[(Wj}]{v_m:ydPGn2/.㽴_2%(uӻ`J 11_1{OG_~iҁ8fE)Q !q739@Dk*iy_)vi@7ߟW3&]ܾz|85yzV6w{fЏ\{\%)Ma6%懏1bꝆx Ge?:`xg⽛?~'0 @ b\} Q·ZB !"|~myHBƱp__Pe'ֹ|_jLQ H>B@ϩiO< sLJ/Q4ݶ}?XMleeuyix+;񢯑)(7ݩCƯѺ?n; ܿԖg]\oVBOel//z,nݟ*ǵwu̡s˝vm۶q7LfD)?} Yb#BG{G>x:/>U @|ֈAZ<!$ԍB jg@|2_ˍ[keי%s{O);E%I~~'CſC/RibY6"Z&?$wjJqS[zJ>7uO8϶xǯVT޽m2R="s;Gd .}L4'sBe *\peDW6{u2~{.JZf_X+x~3a@K_z.37jk$NL+n}cDLQ`A l']QorËW|_,.?+{}Eǽ$3Z-8ӞBq-3;;It@ +׾DG~gwJS3i;c\> ӓ/~oojEJs ( r\!m6{:p-(k1/EߨGǖC/ CM/7!p9W% >#ϫjB&‚ NdO>X ΅@s^c^~v¨R,o*\Nve?WTA o*'Kn Z0W`D9}cz3zߎܶX]h4{Ģz!5>(amIwLctۘ-?wzkHA5A.L+][dl|õRmY}Tv}:_Yng]nIdzv*=4:L/]=oQpP,ߛ^h7T^g$A{@Ei~tt cD&+oW5MuLߨђ [½T(_vVINHtI*3(\𳨫߿(E}nKB񾇞?S4F4bBR|%+#˓Kg{N5#ڤm lVS|/EA:w3/^fDto±@BaVhryʝ7b& {ݵ>9~#t76 R'qgU{ʰ J7vgr]ͳȈb5^ݠ+*F~(ajZ%Qr`/Lsk&|Ta!E3'|ᒯnmѻ)_Nm!_(_ : )|w>|Wݏk&F!]@f׈[Љo@Vyƒo<~}W{i2* Yў\$(,=O8[S('T4k]h>(#`ZfW\ٍ 9yu} k$],oD# (TCƶ `LzɼhR@g[͚/WvBmtb8@|4ѧ3Y68X_Xl菿'M;n,\_Rs^]:~r s=o~oݹ۲h{<+ ggco`đ ,^M:M/h+H+CC`9W.W건ܫ%/ii8vp)`2AŨ}}ҲV&l U1/%jԱpR Pfsn߾O|falI(`, ?xSԏ艣_MF :b45yjxd|]\~knqî%ȼ@?:/9T.v;C*r*TwHI}(_`[}iqЀ5[)6RfĮPX_RuePyѰ:y޻pΒX f34uniX z[Nozܵ+nl;.;w?vUO}w5l߉m/'F 8PG~ɇMMnۮڻ<5 ( m|$R%WR=wMx[)ⴑvIw:}wu "Bt=CDB$@^]v(([Sf߯)y\n7sEj"+L|BHմi, AWU/9㛶o=zkzSrPQ` x=Cf\F;0><\lmI'<ټ%"gBP+WrK=y`Q}$ HB@zy\hVOP Rqad^@QnL^&A/mg:%,=4}c7Avak;KVNoߖ)OZIyfv$$hы>M>j9>ʼn ࡇq#Ǹفj7[^S-++/Az9n+T֛=~Pjul7/4bXy\ D,|<\ԆWN@?G$ 6~c,}b^U,b T\)N^rYX;pdbcȓZUؼ:#3rx}O~ۆcCŴo/vţK2yG{G&3h̕;+'fͱ g//zkpq^φEzΗ# ,f/spt`{6g  F=6d&'mz YEDKqޔ0L(,Vl1BK.c^ӇS6PRK- \ƺ.$4N\{?WlߖSFYw>9_ܵujy+zk Oҫ\s"(VG=TR_? ^ K.l6۞Ļ?~VQg9(]4& |W b$@P((U8XZZ/y5?C/X˰^ (f_ػy84'F[c*+m(M2/Vj{yhoxk_857o"^<[(kϘP` Cs_(T3zǖ3"RZ27qmcݶ34`<؟J[W|o"@y@BNOOv. "#QƑ:ۼ7_QS#cJ( [*RoZ159ռ#C(7\Vw^^K@$ \sޕ_m}g`DF@`16Z%lɟxosQ\Pb\#%X0WOO?xkNVjZ, +q"α( HbR-3la#}/A}[_璡t+N^X/rRϢW"3PDH׿Y?c :#QRu4l~=$w7K(RF"{ ͜ y-p zpjec}ivdf }Y0`Z =Z\m;jy^ 1襛]? xyg\2!II*гb\Fj``}~+i;w0;ڎXe?HS(E *o=Un~f-O2P ຨ4~s^@@@Ht.5jyh}ye0]2z0u^_/Vp-xi7~n4bPyYU !* T" EsuFV3kˮw~d[n/1LEH@ h@pI f)B9Ax˭OIQW;m<+Eٜ9Q~_l~uS8A-Ѻ+| ]8 @"bP[^QA}NgVڠ3tbϭ?o[KI'O{( #c?<&~`hK* fj?'r=*|Q,yfZN[Jz.Qav/ ;ܠ)hgqSӐȃS#-M=s٧3SR+I1~P^]GݼУEʑv]E*PDշ^bD eZ hڝFDߍ`}=B`tiT , ~`fBo!>Q#/=/@{֞'BRP)@քQk>;A0 >{mz (4Xd66=;Wy`Z+PG[/ˬ,-}D8FBJ)YP)%h0f2]B$VB"RB)HuQ!G(B7U< 1힀D]3$38sg5N>KK;cXBuAә暩=@8 mOG<WuYJ)D"MHZkA!Zʥ޷׍ iAAN [fR,]@ cks. 0Mڰz'"` *t|;\&͛6 ĝV(2tPL[-,-Y 6KKw^qc̗ Eо,3[v]f R|B8v>;M;"@HycAPqJf $"RT]yv'y@JLTQTM.l>eȶ/^W>?Ηhլfj4BK:Լ,TQbR)&QuyLL"g˓aU,Ӄ{k'Gǃaua<0=wkq%IWOONO={7=bs\Lv6AM 7"G>"'4+(rDCDޥL(JĈb@ UM(`DcBdf HDz#$eC30aWof̫[̸(0ФI s3?Q~oUl} ߄~Oʹ´"  (,ױ [+`#`8"s.y2Q*]Ӷj8 S.|R( Dl\Ζ:UQmonmnolo א^{ yjbtHf %Nf١btE!![Tl:}2=:, olx&.kgS5F1J$pѓ76hX-gY.˲,h/dFKlOfH"S\FYfl >6K?:*f(JQ8&0D_|{q%2fD@䐉Z?$Ua"15$tH""SS"QMeo;O_~G}fփd&@1(Z2,#&sj9!&R!3U36C,2˘ `hCmcWz*"eB_jք\,BPb'';bv޻o_yƃy3o##I?S/k4U56@Q$FAS }rrE߸q5@&" F0'_@ O`Ǝ V[4S!3tEjB "``jf 945W/''&& PD^afjϐo ߫;E_%d"vd<(U{b%Γ޿(;Gޖ:W D<n$}:#lߦȍ0ڦk; f19 9gZX0DP$( O.CGdŢߕh4R|$-Kǔ)yqrTk&tZVU>\X_[YLmr~Fھ=5"AH,9)%SS"36"u1EEy:";3hڶbmĮ;|v(KEY-fpMeY׶!&!׿r-%SeR 8B>?tD21Uz` \U#"9Gň аC"ճeFU3YM6,)#f" @Lۧa fGO,v\ "5/3A1wa`=Zp~}*3`ܿ  kb@篜9$d$3#0w5 Pf>w,划0_,REcHrL(3yIh"ll 㲬d"!hpX(2źY[يZ*.F3WpB"f61}LQTC&"bf*#M۞ ,aVudV|Y D.Txv.^rV.gxs[HӳɃ^5Mqyƹ)1Re )ŮK!b} !l@"#*O&,@%Db Y\!+A :B`Gbw.WMFJL)̐& 4%VeE0"TDa؏jMĥha@i'n{?"{@eЫ[/vF$F0D5MɒS@!$3=Cl. #s&`Wj712#UQ0C"E{5EIUuU8>:Eȡϳx9w|r|6㑚`0,Gh4<1,`5k$6` Sd0r1C Y2/'QgkkkK&iB$,Fd E./+mh[}xi{z҅K&Ӧ]A׉ds{λx4,|&"@9DHR QfS"?2Hi#CDSSSS# r,2Gq@T2D"̹61TDɴ߂IsAX HQzژW c0R=lKIPp_7NNef}u]4 /^{Y+Q!iHI8f`db@(,NMQ\{0 G Qs UH!c1l:t6*h\1(SVh8T'gNjNh2Z]x3e'۾pumB^`垁D$ D402p@I͘=%`PCrf§$*дxc;+iRr&DBJ]vzǏg/̸{q>G> dQmz6)r4dV&1TLPT!3Ϩ9&BYR9qAUQDdj@T=YƳkQhgk iטZR1x0%GGi C@#HfjѬ?Ŕs!^AL@ߵL hJ+ր?Ţ ppۘ2.,?;x3o+_N2{ͯMNf^{?% I-!7BBBRCAxp"K 2bF5{" k4.G`RۦkzP,(D3Eх$z:K  ol]زش˅/xcl8ƨ1h?!/*`{?wSDMrքgTkx ;uD1FT`jcT4-452QQ1%C1j~@0#Cx )A[WW.U1 SFI#$!E,A.jIDdfbdVuT $$:(1*#"76t]*=yL) Z$_ٴ\t%fF)z(|-_?/ G뉠:?ų'?%cJKp۝""ujR 0$n9}o̦JЇ BF4$U9;=c )=< GzŪ ܭ/ O$DS/<;hu0M[ۣo]@Gk#_$!txL"!PfB-0F]Mm(Tc)Rˌ=q|xj@1%4hLsļ_ w޺wx)ĺb`PVsk(hY=XEݴ=SdvD(1(*0&A@|j "Ȇ7:,<8bBS;Sx~aHpROQI<9lёdc<=<[6ÍwG_߸zKsk_kƢH@k6`4 ;kvn[@HAīFtj|Q/&yqs}֜(ʪ(x]qbWV/_ΪhmK;""yB%$ Wrmr iR0kJIAaY8 ̳YcŔ]d8 `Sb'IA#jv7ë.4͢xn<#Z cUT9 %D4U1K"f =,o@!(ȏ=9KۻkIP"t)e>3O~o7]O|t..ۯ=z2w9olxa{/\|f]`"f6)~SZ=1(`z:B^?PiE~[(/zƕѨ42w9;=~/ΗoŐZ%27n[#"4sgsl܉2.utvFDRr,,bʅQQ:D} pkRd:[OA-ǰ9z]`\1 Ѓq)ZTUS$J:$BK)H0u֒`6uZ!r]R>ϗgrP5]/|~2TeN s+`>"b1Y!N Φ;;umY) eޫi9D$ =ګe%%UfIi%bCP0p1A2cD*Y V].Z̜'r9W|O~# I ?7z (TyR}o@Y{ELE驇׀*2*JUsu=5S$S=}<:Mٗ_-x>#mæ/.v?Z_"+\<owm{Ѡھ8l)5Sv!& <_olg}mr|VC5+"D`%UǮ v9ʈ.d>!˥ We5*j81Y4"f9s3$5vΥ|4 X4,sjp) 20seE 0p ]H]m5v15MBS{FB9{>B1qHu{oM;f5ml8 F[YN޹wh׮?Se|\zLTԱ$J%s(&|,9b2Vl0drt4$ f"jM~#sG[vu,$s>i/~,ʴĄ!P2Q"y!vO38GFd+eO1#QAru[FFՅCrJEro[{MI(&{Nᄑ ː̕FlE婞 z>s?Ѱ(ݻ#.Dt`jփb{CٻtР{g}>j$ : 8|*IDĪ(8Jʪ1.gFX퍍ӹ*:pAЈA{* բ7TDRӔtWbl#NO*:pih^"Ka>4a:tzQ)346DppCwS-g/XI`2:eYMe&eQU5\GMG$iv6U3gYLe>͖z&~-3S!9hztkݬ}!#H@g:= / 2A yD{bSG˹hzRM!$xۙ dr8Y.fgۣ⸩rwwA ,m\!fkvʅ RoUQD#SQDlOZ!v(3S1sx.S@DGT{eH uT)sjsUñJܿ^ Md:s;i1NLN<'kDDBSKQ<&( t˹"sH њ ITP჻=Wryc5U &jB@g `@kk6y6,?9:"$9QCb),4sL@ "dHATLOC0SQUuEu9FSvrnjlۖwF ʥK諯;JIQp='dsBjt>O1p5FRS&)"bJ VZx:9f+ 2J̑j&F]^>4V7\?9B2(IvbM׮폶¿ztko9=9J~^G`$$I=* ݇Mb"Z9Rz*%*px;g)#BD@XseMq1YEε[.`mW3z$vD였&"Zz̋<р ` coSd )Zh4ڄNuL?0,OkŒ19PC 1(!ZlR767|V&j4U$ $v:B`A9Tvk[@ urz!>JbMcR$VeQ h\6N3 aǩK̅R _lmF9f1I=Y DLdjz363PPz%A Aţ8s/rūW O֪hmg~غ\U:8>>ZϨ=+~kim4]OkTr׾O|ھ5jf oEAx0,fo=DLPM:s1#BPVۚܨ]lӃ} drzִ(VLp"ikjL lRUV W5=γ{70gª"9>yvT$jo0޲c*0rvN$,ZX[ L4*2[_УkA]kd&j6ٞͽ8 jJAawzz^WDz*w!"#T !M?_{sW76IY`Xh_GN"X\dAV!O?SW"o~k_t:fyNM'ilڦ)}6*|mo9D;w'Gk͍rvu{yr>{so󩟸U9{-CtUeL@t48BuH\*V,󱉈@-d ˣo7̛ꣃ'_;?skғSBp!(;0 9 4܈!&Sb4U3!I=fITMRץƙ(w1ܿέ[HJ*@CEvxkrYQV)˺,KyyYr?^_"UeRĤGOzQ^:B.CjM0ˡH9idnQ|ud&ї`* HSrJAH>lhc޾$#YB`~mH AQXNKnV~rV!S^3h(3_Q§|Xd TXiIDAT8+'Mllzw6|N6(i\($Ǚ˲өd_=:۟MOf:Xܼ౥tz|[Da(FD M#p9dDV0'5@E끳Qf{')B3wNyto|ҳeۮV$͠b0K2͡|0z|tcfK`ʽf{eĤ bDIBl"&шHt{mc,|O`fssJqi5mj(2M0 M'E*U8b{?o-Cg_oPUkoO]C^ĶI$%D ]bo0g2&I1"A=3rEI Jqw}YO}E5Ϛ^s>a4޺/ܸl_yq؟BjgfޓCǬ ] z\{)C4c($]]BRdm7&MyY(B4EFuƥu >L23]}p[W.O'˹a2f5I<sÓdbã8;ć>dn}ks}λ}"V1##E8!ȢɎ 3.x*b)!;Oɔ2e_W~ӿ]eer 9MK4mRރo?g3(@ju.K9ˎ#e` ,1N45D ^ue|g >"8Aړ'{_o=ܓGy}{^pǤ @L)EG'LJ.A/_2 #.]v.id^WsXyyYO`PAԲ܋&CtNw4Vঙr{ LԼ;wl8!zfv싪cZz(0l,/@ "6d숹pNSDf@DlWV:Zq=)/諁N5%B=|s.L&.*\m8^t ?๞Ͼ/_k/3GOM ŋg 2T RT9N,&dH*b2MJ|?'ۏ \R #QWGeieV;?8G۹/?wG;좈"jk){WTHDEs`ΑVFK׾kWvキ wޛG&{'ߵ^nxt͢ !QUw!tWE9gIrѨ":o )yzrtr2q"1.)^^YEQ4:X4ԇN.*]y.+"̚ȔR8MĞJ)L9ffr>syUTbP(U>;%:x6r}}N@ !0R߈z[8&9opəJI56m[|)Dbt.n.+kBnrJ/߼E;)rhCsdܼra{rreg sW\ͧ 4czG$ hBDrP2d54,#^dHʬ`1uEF_?'8]VUxFfFK _>`2-C;3U>ɐ )"F>@LAƤWQED3I$I?t)vIS'wn._L˳9*XA9~8=;jĜiJ;Ff&f!g&յ5e\(ooo;zY|uٔ$9e1;9=9sK MY`C,+r@1 `4H=cft:[ܟ͉\Ҽ^&;$$VTjzs;UYY!%_dYY +o\vkjSr6U 2'01΄(D)AU!0>q(jb@":vb}Fԕֹ*3$2'z2-.noǙ㜜4/u3ʝ [k{[]wp9[HjcXXH'+d"bGjMj)N4(Z(LD{iR{{o4VEZ:u]DnͧY]wЕ9g~ٶMۆyvGn,d*RB`2zY7MY ^iqrz(bZ<4۪2 H٥afk:fg/bv>+Wf˦bgUY˙yI*,r8L&M;+ÇW/E;,{ X,D1%I}>е γcF#ͪj ((f&HLLR Q@37~>_̢!1\7g]\:b0zoFY4DH SG~c1NTA/Д5XP}Ly#$$>*g (`,㳓ӽֳәD+f5h6HJ3ʣ {ٺQ-HDbbdUUz&9IpcZ7ַ˪9,k:ABQЄ$0_u ULXIg gf&)it6^?O;ޗA2!FB3󼋹wѣǹsHv]ag2QVuݙĘڠ̭W%qN0+tW^>:zyx Y} #ffF'Isew)Dmg5}.r_Hy}DG~G;ZUaSc03]k(W|k{vɗo|kkcc䡣&D*@CJ vl@Iނ.}kg>_/+wwJDNj4 y{]1Η9;WuLQ\gl^|UEQ)$مvA[q=146͛ B ]MФ! (1n#rsޣaY^x !RԂ6oo&35Y`wa9eGP'hSD;q{9TY,_ٓXY}ٹt}aKlo[;WI3}UE5 ki)g=>& )@H}vDVL>8ivQ:1EQ$" *Od=`4Z*A*YSaa}ƅ[^vB>I)jhu`3@W%qW,;o .^uy•Wc׽W\yAڴʆJ.,M$v(!1b8&u3WIJ /|Ù;t6]ޡϖ 7Kl&%@ǾIZIBuDBÍ Z'̌(ONһk5vm^-D4t^u[8_,19`͑D5: bd9_4]+uhq8L&-0;pNDbY.aN9qh1rv.JOsnE5BG쐱5nAggZOόv޿wwwkVs7^pkkr>? |#>A5V#T;חSDo,NL)F4DH}8E厲eMͼg+ D6 XM}bchQ $FCLD :}Km~GnsXL-L , %b.3gD1Ƙ۽p/Ggʯ<;-v.XRÇm"IM$ #?g}_aQL{gKq>A9u]b8g_֢?X֋0\,/j͖`t|6oVjBseYJ!4fI;Fα{"zuh4epl(ee ̪bئ,?,w0%xt1u/rb 12D9xeS kGpmsl:[6K_xgmڶX!ƞ^l* {g; 1Qj}u,6S^;7Y3QU%Ē: ?EUS2@:W@4hhIj `(C8PT1Qt-[؟6 @7O'MJMm!,y}+_rEɚΚvQ]w_+:}ٲ) հR2UW/u麺A65?/ܶRS)iWOȟ>OO? cL0٬T#UL1"h B'NAE}ksE2  l<*QR˕@%B@ 8w< GϼLl6t>{GONȥnOfxCR_~}>=zN9GLzECB0& \cb&C^=f>LLZwX61'c*m&%v^n9̖v6U-Im̴v{Bnj"}G$$6UbT 9sNu,GmZeapZ䨮04 P$#x{6M" #Ο ĔNv0~2މZ m+@&K$`&vwݻߤ4}nDp<X7|>W.\ho6[_-=ytxQcL_3r\TEЛ5Z"e㢸‡]fY^fl:yASTN)JeX28φ$ZU=]]̀8 iݖeU% 1yNUfڸTkkkѨ, Cw(! v!{tѽ (,0b߸~s}m.>.sfsRx[d9oTC{n R8ј3(n|ُk'{^F97zIֆSUB26PGtա)1)yVI]{ A T) 2nolV ˪,ʵZQ"Cr@4jq>><<:0Abh !-g"f>M ԸVUןm,cwҥjkeYN8JĖBаXs<'јB:DYW?:;ʶww70b9-bцhQCsAn)`"{cVI*҅n\=s.JƔI&RdY]1b3>rߜ>k7o$ֶq`Uk#ǣ-GYk[>LSLd4z~KN捛?c̖h0JhbH?5lLNa!r.;4L OgE41 >]vf0|6IODo3ǬN[HMf Q-bOQ@CUX JU߯H+)E_zDHKqVb!<-xxw:D=lT II.#ةF]&6#SSs@iK[7&W>͍؈(I'p*w)&t9:LΕ1/8jH:rdP8~[f$ S4bd>dM_>z&oAB<~$QŲصp2&r e,#"|6 5!sBxr{֭[wTeiLL|jb3ϹmI s3OMs['E8 B"rw-4 Dgm/FLԚ$u;-ht.G>_,gY> ʭ흇?} HpDf3ev>D$]єϚ%"}3r2 bO_!pİjmHZT3z&Gv߭^WAf?='g9D3uʱtd%Q&!@B1KϜY]/,s4 16C?Z]p7 ITUbp$imB8I;&]l(FR2M٤횭k;[k_S?3?$& yf-jhjJԀxG!bHplR7`x1X>V?Q2\KDz>72Jm3P'xcD6 ?=ߟ[M,*}feIu+f//'BnZrLH1gƏxA)&h <;ON}}S.]|C"}}sb=һzhJJַ10*BB4r,h! y`M.!-tb}TM&ˌ%KUGp2G:J.k"KpURfNc;#sL)E !BTB[q80\~Xj )ٳTA:p Qm4USsyK0Uɂ!`vI{,?pt~?0PCA6O-;.82NCƞM@롳UjJD8wtvp[;7}>~\:_ UHU> y(1bqrzvv6=;'g'p4r"ZE>GkOB (cQ~3[^x1O'y?[(YB2("{Zrj @PH0XFI ӳgټi=%^ZP*1NGe>o;kS\ '׾w!yOb sDZmR ESRe$yF}'[ng1&FY"/M%v*X Ft5z,,;==)Ҡ(www߸si{ya8\'SPpp_#}|i-u1$`%RW]: ҍL"pyBqL]t<9K}!N4^Fڈ VY+hv=pV7{]O_>ƽR`:%@z(Su[ft"J{yskc2;n8GxD.{΃~{:zv]׽b9|,ڶaΗbr.|ladPA7^࣯||v6۾|K<.+R( <̭J Y`HڶIQzru?|l"}!EÔ$5R!d EpEĖ.@ X5o?kş_ ʤUuh4!i*r +?;/B)%#]TS@T$@1J4VSDxѴP*zQp*K.^7[jÌcHl}K_n6sΓ Ea ].9;OKr_Sy38OZb$ )-F$06T#%0b,Dw-Y. ~qmÊ_:7{h-uPF2rLu&ހ'Yb"Gy6"R*]úibDK_|e~Qf4>-[UwCu+,LbJvu5_ٝv`xtzCUBXqyqgwu]oPA4D!RVI`c!UE3-CxwM 9G\R>S"!y4Ȳ2Yׅ_'C_|W~c{P=nnY 2wqkTT򭍫:D ) #vQM $Nաw*8O&''Q*).˝'";"")NIm hrzztEQj鑆eJ*)(!4m۫B jF7!̗]ł LMXȀ!tw)"1Db]b!%5P5DJf 94Beľ}l6]ؼ2^s T3.'veIJ9^޹65kqީ"pԲ,cRjHD)6I;IPBeU0Ĥ&fB(Hߙ3Y~wEoOp3ЪwfT6$M@T@d ;aiZ ID4HHY;v_s~KUNώҳ>x1`r VHA&IUi쫏=ܝo{O̭w34U&vw߾_G* 6ͶFkD8 μO15%;F0$Tstvt4;d9!'G1stF۝fڝiy-"U^̬A{-uB;Cy lDV@&fJ`L?=9x;a>[%&#QCpUbLb[zS52Hȡm:EA+W_|c(ݵP%n_]5SlJF)&s.[e3QJpl~pfV^irx|Wkӓ|E5}Rԉp0lr6sg)6b,cJIY"DC$?~Nµ`5O:,#CC`&)RVs?FӐQgk;pB}DBMF Fyffm6Mu]3wmB* ![o63sC X5Zv1D\͜ѰT|0fRԍ6{-GzcKb]K^J/#a22# R20UCI4U#D1CdڧS_6}2Ds~/;I H@=Q5&SFf&j: f'ƪ*B75м̳̋چ?z8[UcY.ӥh䶷{OW7m75ukDLLIݶ''Q Y7¯y1\ݨ,jcrJI")8 nmmJĚS BbjvM=$z4.&1!tj)dmMjBs$qLRa5זy糌Gş6KS<+p;nDU]#EQmř!2BYS|'wvm'Unw\%#$u@J#]A?g@_ $@6 @$4>9gyO𾣽W˯5D (TPTy^`}4%X2ELH)f4*Se7·mfEbcR^[;IUUl1_Fp1 &7}Y}ރy}ׇ?CigW^zKxmc.uj w_2/癈($2 \w';EQdvֻ;:N|޴mWMUBL_yW?xXly.<5nwucYޗh4u:t``,mڦS45DM! eՠ Hio3{*Y ǻ[s.rolR5̩wѓ_FX:z |1Z2,~9NCOvy jU֬Sst*D29􈥨#JVRH= q|Ni$T=!!11QHkkCK69#1Ke$cڱ3Ԯ^6/,Ӄ{{`\>ΘhTUHMlY_2T3b4R]卍oƲ~ֳnAh[SQn\1ޘ& \eGܢnM|:k+캥a W>sr8ܹѓc*aжsҎvܵuc!Ę3}W>z'Odive!/ ɭ/ak{w>sMQ]ܘMlxr޽;gLJ/oe^a1΃zĐD=z0E(q[Ȍ9島7kWg~R??zw߯C .cU[:=ԹIM)IT$IRRN$FW¯}?r؆n='cDG(QOPO#pBj8nz$ йWE[1 "(>%,t|s5\RECĜ|YSM< ADP̀>e wܙL{t]3Nx4ͽ2w#(ŔeZxDICX5!f>Η k7׆Y!`^]4 7˿[w;cdh]Ӛzpt~e./Dy ZemvmFBL˼[.>37o[}^]\>#MGɣ?? !)P>zwWޛK,#g!t1ARE{9 IԐ؁2$e^;j$[ѡfeѺ;OrP$A9_\T]g_zSs&Pe㽄)Fp>HRQ65I|Z ;23M1&3=O3h⿃|Ŀal,v;D̬cYQ6IN0}mwsz5WE`0X.%U"st`.I0vYoF 9>v҅kfSy^r0e4]#T)ƈ.s/J>>\,Mhlms 3)Y6ū>nKʊfj,gw^{Wg>W93u_ee'O 3YUut&f@H1o}O??W^|գ1wx_8 !2Ű&G{͑*cbш]\d}=<%cϩn}MɑX83I3d"bTBV ^޲yh e}Db(\ '{+7ݺ6g.K1b\?wooUՉ3C$ aRVPQAQinmhmmFETd@0$$ӝRdR}{ι{Z!#Uk%q`r}sgϝ;;04xݵknv;>6aݮVR$Mb׷ !70diiղZ"{DANxKWJ8vgu&MzmiI-Ry;,5y'@)skMHoC!NmnjQ5r߿Ӭd&Pi =IE3GQAɣ}{;^-TkFǁrm\k2P:i)Ԫ:IKfoJ\ tA․L*K:ZKJk$ &'PRP@&ĒYj^\ >#UʻfոtP3[)5..L^ !d#,pd+VG2Z_`B2 3"Q48r O$\Ȏ4aƃdI) s> A?åp2KTrZK J*k3A:lLժunZ%+rRn`(kR"[{hMgf*ϓnn#52(XXV> .UT\tڶl,>Ʌ!wTZiKt,b yIrIJzyj&]O>kJ%^IaR @J)D*֙ś/'^v$D`Ǭ0 "U0*y֙gϝԆ*K!k aό51Yʲ^+:B v6S ZljːA+LVLMH2P(2RvdT-RHZ&-TxԤQ輻RP1(YDAP;8"SY6eI2qϋ,eC);FβV\s,w<0}bEd {*L%֥d!r"D*iX=C( ),B+&RA9MS {XG=.B996ݻ NIVZD’3K0u9,cf&) kvfȮ=C@YKˡp%=ҵ@֖J/@j%&PX>}G :0PǏo_?fpX?IjQRsZUI켇$GnofaX)2 Y̩3gN.@UVR,à7z9.Kv!LhF]deh0SBF%#˅I9+4,Ka{fBJHf  42B-8*-Uk\^k:P0*Q t@(Y((Ki#Yf6酎sZ$..NviX s%F&'Gj:nVL3  i![ԀB09ucyvuϺZ)>' Cu!R@*Dlk=WƷNOʽMnDq(PkE.9}33IZArFJX 4a\JmƵrJY!qn 6DPJ!0I!KJbQR+ P>|h4h(Z+X8"1! %AJugF!tdMR%2GQybAXL#½cRZ8g>DƦ\*D nZke,k45}4X26 cFy,7xjaJJ;JGU24Ga3ShPk)d̃s` -qyrNW+n+?r|YȓWZrcUaR; XHcdF `uXcMXi\X\h:<:.MEmmrcm0&i2ŵ(48R;0"t)d6Wh$2BI9e\Y J뎜9{}΍7\7N>6Q5TH!bɉ+ꃏ'?6~dO! $؅S'<´j5qlۼ&CY \mߢSreyK#yTs 9P:qySh|dܢu^E1`DQ F&R~M{orȘ>c0dRJɢ:74Tljme)BCƀ,A2A&bŒ؊#R,ں k[;/Ay`Lk  (7ox{/,.];Y;Ka)QUGϝ 3w(Tˆ+#*f<iWa/..--yFIV-\SeBJ &78. غ; R^P ]Ae **K%-"Dex<8g# ^U{ 1q9w6eV(TAΰszG 0Tڶs)e(R'Z\)W2QЩTů}ߩŏ}'^Zv@~X.=шjZAD<ʥ[Z6jR=/t'rfH)heB0#&ix^ R,֭[vWWQxGw+J,5&wy!$! %F(E*@J)rU`r==ص~x +֍5 +D{oX}z˃L*P-45J+ޛ<(ieUQSjD.kB$Z8\ϴbIKro~g|hp %kQ2 4M$!" 8T>T5:bfs_U)MN VgԡP󝬦D=cy^HP2d1;5{b(-VJ8>:2\ʐ㭙vfR-mZ7sx5Б$]K^?sxeTj<:07RinuU(ʁrRmqlO6,~nYhFl[kPwV+@=Mj*H=HqT39)C(I 4R5N=A\TZ-:#3fpaZql0Xm,fiKl4S@h"`@ xbtfC -Dt($/^;p(՝ a,4ARl# J(QIekyhr6lݴy棇gPuJ܏j9*'7Uk>P"vthI/3̬ȷV'#JQVQ~ɫnbD7I&'&9TJ%,˼bfJ PN9:6|l.4Jf葭A@I.d(a[*8 Qu;h-A0K);ybv6XT*сZY'&=~ЙS'}џkk%o,:޵}.sQDqnۘZm֍FQsF|۔%%RtQl jd8> aJ J` "\q_v tB0֪yAFZfǥɥz}T*%IR.4Z{,4D$BJ)e$,ˌ1q0M>rkfԺťJM`>{8!0ĵ`Q~\HYby h%y,Oe.7okOHA$0>>88$0 D԰dz͞3kv-D0RT7yϮNj,D#67Y?kmf9}D&̪lϼ[}.Է(@&XL D5>:N\*'ϝ&KK˻vά_G7*08kVz"Mcn-䭵ιFqW6뭷xBZ/̡AKeJ@ JI7`tڋ?|co~ODBWǚ8Zkc]tLHrۺDzmFef=ϳp6TFF\/m<8fveof׷}3r+Qܰgn=}'ʝ$m=FN:tt\\? /CbuzWoJ?{O|(.l%9˲Ȃ硡ɩuVknn~ reKxdㆍa...cR$pЈ•U֚Ņq!Ľ{-:pR,(.EQ\2›kb,tlYeYEWpjOwsN]$ʎ:$fbd FEQj5϶Wwn{I&~2j쭯-DhRAJLtz~%Ƴ5̧')IkYIU]ia4PuWFrJ-mrs?MNW~H,ԺK>M0wP/h<WRQB !P bV[k,k4VVWkjZ9y֭[(zG+GF=͛9Q4`}`qk f$yگT\T/n߾}llstԆ:9eeaˊBBvEDʯ?tmgq%o~M۽sBb+-Z̞Yh(T} =P\y[0>,'ˉ8*,->j r@znquaevf2'I,gaBB &j)홅=f{r%\y^nX۲Mr9nuaU7\rDAjvm[:zA4{n|Jce\K);ʹZx|uyy[~=~YZ,DAɜ@LAR9<>)$:ցK,#h#i^/c7ώE~{?e/{oNI,RB:眱^ 6߼ &4lu|8 ,9?9կWֳ^ZXJ7;(.YF] rB"ucJ!d;H`?9`2sHmt`hq sBIa?lTAYϔ }3B<u;B8~Ϩ@aQkDmۋK/s9=f&_Y]tdITyw[jLq='Wn8unzveZ'i7֠TQGAB*kNl(2 81}_ot8c}29;U}gs^to'=eyYAR1[Q^G#S6Nz5w@uۚt|~ዔw1L9[QsV]B^k>ABm_FV,gV/dlf1%Rwf`Z{<1R|X05zo  '`4YKऐribbbfffeeu˖>rӟB0u}Y^0Ii}?I &@fL7&'?DPV+RY<(9=5]) 3"N;ozwďnۃ*=rO#I =Q㳮׿A/ǛV~1qEJl`.`BH"LP f6F(pӞb"cTsn`ǤCVdnnL1DL;dόt31 9Z\أ$/k=7=Q ?RJ"jT(run [t ;tVcSΧPd뜵IpZ <7I @@uP ("5#OJJ|fbr.dXq\ @r)=! ƅ^XkQ_z;Ի&Q_Reͻ`Ѧ]YZ3BDW9H O vn`q} [z0qvʺ[/Ÿqc9P2f=Z띞>{.| ʥRJOAk+Ŧ*Rd(!P[gR!JZ\EJM؝9!f&O1b'=~xR(XsD"N\&9Q O^l6-9 {Ky%# JR- T5ޅ<R*-bAqK 9 ̄L3 "ᑀ 5Fȅ(xzVdK/k.{~/YKٽ2ۛ?_MfW@׼T)DJe8uOŗYZ}[?r ΃#ǎ P"B'`l5]a}>qݍv|fӵWmwCl=ts&)=&P T{| a012  T<9(39]72i7j+YmDO=|`sn(%XD@ 4maj@}Oq!5d,aX ˀ=`FFTpQaP(C,$RBbIK#7) `d) t$ & Kã=V(Cw(r$:"ݿc}k~ʅ`k\=;45VI4zGj/{rO &I;zz jq_U'C!T̟{r  `m`\4ݳgYclc(,K*(:J{b) &IR6s)﹕~k՚Ȩ;7}bOpºtFAg#F廿# 7F;Nqo%[vVz/:^{d<]^QgP#9& <*_՟'>y벩:+EEOU[/R( !l;Vvc/غs>swpۥ6(%2!HaJ ཕGa`Q(PNO("y59bW e=XFX,y9νRH £zh ٧}[*Cm\+祕43gdY9 t%%!dVG(иBJ)2uLn|y@2&a.'ZY97kuܶkN*|ϰR=+g~fح 7 Xpi%;g;\~re|_47uKJG6Ov&&> w/^`}{oT +;uyݖ -{dZc1-{Ι< J w]?zx%yT 'Y! #*R֊TZ#- $of7v Z~P81q-FZcK .h;' Ϗ< Bq1(tfJZky5WVCZL@V` $X1yeY`J: InnZ+hNFpgȹڱJI`TA bE ~u;.}궑|`P''7W'0Ҟ; rk.mn^)m8r޽( ={Ri]}k/ (^P8 ¡6l9oJP0JJhTIgrkeJ0+ȝ{>|r+,QF~b$sugH|Nv O%P T``ei)K@ȅR͝~L(O$lGi 8{skWVVJQyÆ.KK+4222:2646n,X^WyOِq<44k;hLZ\~(>z䣏:q 7=W ](|&<@WQ"u*ӯ j7{o_>^TǏ,F[I;\) ! Vsdg?i(8Eci[o^mq}|ޖ$_yx;>qr!D%rB}w mzHeX,~߲_g2@fhv6m^_ MTk8 {vl_-4oiۘ<˳^/53" pllwhӦ-C۷IWZsQ_4џuy`/ĚyK Hٽ^o[*4u7SӮc}X߽q3 _w0)0.Q.{^~"}lڼ{Y6nܸ}__g/,[W]O)g?٢n=v}v(U9 Aё-W]Eh ր\nB*` QG7YR(7n+\29ՅT* Kh^gc^w֍q%I^ɒJ HD֚0%Gpt-ԏFt1)h`$`1_>]"uڍY&]b{a³GDMVKRWozuS+?=W+ro~>}]J)f0.y${| Dmز!LvT8@b#F(z^* Px}P =9o<*[?ԈTN 7\ww}馫v}ܣ[|7]Y]n+u7O'g{$ `"(D>9~_4!ѝO縿|jI(D=5#iڿ037Y•VqiqƘ$I,$WOM0Isoln64 Juj7,3&߸a}i9gc'N]֙nU;M>{ԁu񹥥q2hXXHU #[&mfnA-7wkeP3 _{N-VHp@ Ģ ~p.<=uSTxKs,<Bh 3 x$zi[hzɳNc=oݾkfژ=7Z].2v;12H&:ZϿgV<;fF)),{-,Pç$B Qopc |@[3;ۭvܺqyl֭[vYmfBfYO9j5J$IE*Jv PI:26;~^S5PNb=SouyK8P(J*CA7?z_fv%d=B {K7:ǦmA@@!6vL|M/ium/-[~ w^Vv4))I}?|?k~ϝs ~.D yX ~ӧ$h` BKXG*w@\ƕmihCU)f[^mqKHk#wh}]w+𢡊;pny\e[3=Fq#%e(qn;S=+UpkU ,&"=01juW glRꕰe~jcunn.KL(gA8ku"T$QZzziӦ'OCT8 K#Cq4=7}nyyi [a#^P,u[[|x%*i o=ai5܇"d~FNY/~#}قaN}:^}/?Z</]e7Œx?r-o.sэ6 " qzvsv{ 7NEf,_LiI!|U`Tغ/AQA_u\HFw3p~[+UẑyWrXxRĖ * I)?ۛf` x0]~etu|ލRrg oڷ;=1?oۺ/];'FTLk?z_lqBvR!P" !cA5(4qF֍iUVՊrmXzi瞝CJiȆ=gRnh:iT%F%kUl>nfyahZYRqiJ9@4ˈ(Kyn(R]]m v'VQVNZigཿؿ<4$iR o@){~nK}3+Wgy. h"H%JM:544j61V'ZmpSQ#~k PO!<37bf^sg;ԏ-X䆍(0ϲ 6@2C+RP*p&/ m^6a`|O6tbPd7OxA/|} jkzHTܩPcśT M{v~c߻wۇz%Wn!y/g{@+ۙH`흈}ff] .|e*wte)橑-S aI!A*cy`~ku.U  .M>ˬau)tSo"RG&u`A;6A @ h5Ã:i"6MӅE"rP!MrvThx{XȈrφӝۚ "fYαAZzwwoϮwf33_+yի џZO| 4_KgxyKo'΃k8s{lR)t0EMB %0Қ%榯.ٸW^ï,mjxvJ,XғNj:TQXFЕ?gv|ikDI|.T Pa7y,F02I;uB*`Ey"p@q!X%"JιűV c%3[k8 k ^RĀTacu.]޻/ N\:\}^q ,M/"Owl߹?_dN.W>xW֋g~~s̈;?S"Yz=x1(ZHPR #2h; ,/1$ۼxyV5,5Yl<Ȟ];Om-.9=+aҗq>3ed dB$BjiY8(dl7! *KJi`9}k (ݷ| 5*S4K @&ty~YȨ, ZnǺL! `"[0s)\ڃ J$ZfREcd/W7l?ve]RTʃqűx2X[F~zq{lٱc[/ԫ7L1^gh[vuV8C"V,Dtt96NQ|K/)|^#$?]ϯo݁K^>#VHзɮ|饷 s-u^|;*j7['k nJqCK ;4^iaq(1<3Fu`+1AuбA(!t=Ϲ|5rOy&3^hGGGxd`ZyxGlI)'r !ačc pY){ ='.6Mi1 !5'gg..4Zm\"EYJ_ gzqnX߁Cx|DJ!Yk?l33u:i[!KM;o(OB 4.l>@;B0WŎ`$RTJ8Q۫'NA`F}(@VO1yZ `@!ԑhz|N-P^w*ԙ 6cf<7,ϽJ*!_cx]{c%2 f@OH(@Z'IȆ ?䵃,6(q~>00PJr\Iꀜ=}kZ¶(nb~-4V/6ON4;mi%ws,P^.߹cԺ٥噅"ye Xln&G`thw??| B~~ݞ+_)(q!,UevL2IgwL|4Tss ؾu{@ *M25=1, V 4KUxDPٛpρ-:61h2$5o(tO|Z bd(0?x߃N̞;{NsFi#:ޑ" t+;g}?ϳ4IR RJ%#$I9Pxދ<˂J9OO14JRDn?iF?LjtscJ$$ڵ;"޾~9V缛ټnݞ-gspznnVikvQ;93wV ]4 Bf ʗ?K<>?e pqadjssw}iR"%Jps9'=i)UӼXI JHΐs&sRaJ̜yEw@1ҥEC (PuD*-`SϞ0_m;HevkMOP=93mj\aP_  AةSanY7qa Z7;=8+vl\|R,Kod붍viV(-p|cz53Xã@=KaAxؾ/gyni+6 0$b[ X@ۉ(-VDP?ޝ BH4 Twjx\߾?>fs۽ J)}O|V;R%/3k-".2zB( KΊ#?a捛9kVVWM=^‚Y+}vTY\Xʍ OYRZ^YysBObl(!RPx13JKӍ7lGWBtahal43fe۶ z|AfVû.V"AH.7~dD!%J&8cny- I 2_CXJ{v]wPzUlߜ"0@)X fϖSP3# 0@R"q}{ϟ~Sw]wG9.RRnϭw]B͇>|YkZ:Z)&ru:~̞PuRHqKw޴~343O]Y]zJdy2s\Q/f+Yv}g++Dl6VD48{ AQl"^D*[\F=[6oٰ1*ZU\kU!DZo6$I`SclrCB317Fbէ /ߵ+N ?C4a @(Q^sB`iۥwlګvG~1G6( gGn D` /`)IGA_zݟ ܲ UPoJu9oq@"YaW\z"uǎZtq ÐTĥn%Ijlވ"6Г114HaYcsW6H)}OQi)3l+Nl NF2ug>*(Ug;scsM?m,|w);]J3se/|1oP/U^424$R*޹R-&SW$.6 Ct(&󂥾7&AXͮ!:7zcF os\;;in3yb' ɏRxq.02 B GO gquM7_zUʌh['Q"<18EGG'&֭ CWkCCCG{გ4 8Z*]+֓w(sD8("yfByNZ؋P`lgN[*R)c=3*)a(^ѿ?,9sJU? c XPx Eb؏ #ɣ'm߹wrte%Y~f Egw QK?}Z=BbX)@SXշvSn{ޭ_][z`9Lc2[оH =LdfEME 7E<}xC;\%@ XG]qEjmZ ԔRj)~Ϻtiv ydOԹm!O9HP1{/< XPVRV`.&3֭_.h&Q,򴿼4*&ng #(K"]w}kGg#]Zm0;h l%4Zx%,# QUߨN}^sceȧ%F>c|`֗e\7>p\<J33+|M +t% OlƯ?;sz7WOUe"1z@ pޣ5`qeϗOMgT( W~m{n~Ns~uWPңӹ|9oiM#ԥUJI)0 MZfyw9WVVs|dzMnLXT<9(QB'1EoY {m~nN: @/^/8u#2: υ&;fTZ@iDTR!L;*o#ϣw i=VRAU-ݍV3ϯ~ί;s+kЪc8<;\a?u$(2pGQ8ʻxxΆp7L _z=~ˍ7-?k{5eCJntlR*e@)dP`l;rɕs}}4n,O9UZM]vZ㬳>wi$*zYoRi9;;"O<9v3P$вEDd9Oa𾨋!0ťd"QInϜڴɺ= im065cǫ#OLLL Vln~4VKK KK+Kgfn\-WΏ,o"((BO[wvpdx$Cs@&`|d(h4^pS4Qמc? ܳ3?6;Vkqt KpvN5u:6Tਆ6n6rmgz9kY#9DŽjRJHR{". c rk,CfM3cEȨB B^=YD .:߄*/DkV q:wغ W%g6Ox8<0 nش߶>w =b"SxO; D"cgul(! )l}X}phmV7y&PH`ӌ ©/?]+W2lZYXk~>*.T(#h d3H!gy*80 0J\b"~n,Yf PgYyjLV@E f&Oyq6zssE5".( Ͳŕn%$GQ pQYb"!r .GQLjE% IQ )pu>8pjpׇfg1۟ @yQD0FA[ 7qZɒc$B`!-, X),uW@tts5\Y.:lˮ *JEQytwKGN5/?t侇Df6}ނdP .O&$*TZI s5XJyˎ=L'`.:fF,F! \sD@\v;=4=}&Tݾn,7/'R1'OŻ}>77S^KOFX̝N9?֘_]\&Q+j4AH)UÁ LꞨj,GjEQI0 & ku\Š2#iWZH)4J$X]Zg[j+r'A <}3#S˝_&a^i"Kۦ7|^y XTB0\xhĔ 0EBp3B XԄIeLY"?~?ˬ`ji FylS=&'ri[gmϿaN~+ٴ^DT|\Fay yBwdiRٽg6VVVWVzTJje2tI1Q0O(/5J)!ֺ?yv;e8/av:JLR)KJ,d9}bO۾޿~orq~^ߔAT(T䉄Ѐt`Y[/W9 CTaH5T*kYYw.7uZI)!Cfrm}'bD*~y/IIc 82̉ #CV9/HD^_6]l &n]626v?_ze/^VNJߵ{_ZۣOcD@n" [PDIZkl :*(i5`quZQJY/󞯵/%HMo.n UhfΟ#@& B0+k.1 vֵx͕@j% $'>|JARܱsx=@阦OKeկ~.9v9 (!\6W4M0(J^/(ʥ8_uI9{@HYGRB 5Nڑ7{`$O瑉B ! v&Q3 7ްuF><b%m'Q?}]sVhxuczB&3&rc `s0 zf ԟ.{_^9" "s8 "^r%]ybVKu!ʈ_ˠg}0ϻϻpՂ@J)UҔ򁷱ֱcCcAe=לVر@TQ$#ζ/J&Ca\< Wf; W˺69abDn7- @wƋ-yaqVcccF|xh^+,T9{37oց*9֘5jKqk6ksB|.3.˲"E ZnXadtV_XXmIZ]]ޱcdzZ???q`16m˿BW؁UId(edd&s&G̀ٷe]iB/-@!RΌ ̅`>qg=J)DITa*D$"@3ucC1GgD!k:Pt0PJ))eRFsssFc`>4zH.ffJRTreKDAU՚\.[JU*fH4xvz&}N~xu{EҐN-?MCYkR>YGZ1tw[~Gʔ>k(X& R^AL@I:TTe b-R((BPȔHKX~xFIĴu j%u µ\>fr|O&߻g`AǟV+V;cLqY-ؤc\.9㺮iV8zn}oAtZ˜$uᖋzVVN+sɟ{:(ZL!/}oA $ 2M@cBX"lzV*|QW݉RHd@b`,l =L"l/c;]pݜTϺ<9gb"$ʴ !:dªUO]Əw? v#%3(ĉ:Zt(" tc,( 9њ9Q 2J!$$m~+JI R d@aR RHⴅKqO JJ0\˹#)3`YH ,wHaC̬ iR*Y<ЍxBICP )Q<|iI!%~_!DbJmHQ*!`6DG$=]ğ6c2,?#䊈XHHUkSK`DHdɰ@,Dj ,0I% *!@AZ D,Zy"cRi etEet5 w!Hs!<`r#1LA\ P KT@i% KfPjcȵ0mBd4"N@uh=1=mK`;})ȧʝl0q0YeJ&&@@RaX̐J`┼T$ӯC4mC Ґ QSz6VJB%`ٳ@` 5 (vb ` Ce>-h&BbfV^ ;׀% "ʄ(D(Z: tS_5]Hbi_duvկ}\a)$B!Œ׻ .1-3%teBؖ a702l'\ Q(L ү4U̩~ udqrv񶛾;g?]_}{Э(T2"66}%&(PXaf&&&KY%$ Q`"ׁR? )@JJ D!4%]*/PdIo @DR 8| LUP-R2& ]8fB!f-P) "(i!t(r`O:PrmۿoE͎$4ݷԛ]N# L1D d1dXk"@!($It4S^N QZ{@dp9!̬PDFA QPLte{ DQIJd2DZy(L^j?UێY FMAbBZJ(c J)hY)Ĥ2h, i8(,8bfdf)R9BZNl8]^HI(s~]=d1&I&"G2 [үӜ%"0n E KxX' ɥ?.Nioi{|N8nO=ycI'?]PZmbCFJM"!D)#DɊm |<;;kPw@X2:K6R: K~7}I3 4p+7omd`cH^åo2OPwɏ96P1@'u'xp"G=NhsADD @`!1 i\*;o=|ku"p0DZ(u@M OY& 2IaKZ0;Se2SLl*hziv ADqR' ]t@91C!RbJM0! &Ф(@PHmDU檛^+}{Y-0# mYh[ IIL2?wx!Rl'D6+Bpګ@L$ĔƂҹBd7TdJ N0}]: _d[^V<~e!፿=0։#~zB _ $cwb( yFut]' `WZhuؾ q~X`),H3OA !2d!Q(@Wan]e3y3,ZJǕH9OӲR[tp:0&d,H($M 5$Q3#at4 S3֩3"!-sԝFj!б 8 NYh٧N| DR Sˊ 1dj;+$T "i_^j`Biz%Hwݕ]{>=JF#HK2  Ra\ ,Tj&%:pR@RT0S !A*8H4\@ZMp ?$jH Ja%:w\ŰE"@Y$ Y.`=4RHedժBOoh+K)RK`P04i2EO–ڟZ3~ZQ~Ǹ~$F!LQ` +)7Dպ?%A :UB0,O]K b I9GImau{ ?|mm(=?I))mOR8Y@DXڹ!G)$3rq[EJ@&JA,Ɏ m8s])R'JJJ?@k, )Bw{ސPF8В@ Q"ã0 Х`y=mqr0,`&%]f6K5^)3JRJ$INJ)"ݱ>q^,B3 0S,ɲ Xj6(yDذ9\)wNLR(Cl \γ.O0(>lDZJ'B`8@V:5(,XKD!aPtE9:R*ֱ@a6 \r$Y4$&1>[VЫ_s?c4R `Z: Ĕt y'ȴTyp @qk\rc̀tYO[$Jt]|tg)a!I)V &:drŌD!0BX)% V60@Kj` ~hdd#qpxP,: bth#N)R(B e[`fcQKSoeL0E)d:c@4:D)> $ 2pKR+h@(<^dɬ ; S5g>8FYus3 B@Os_]= KG00L`8mdbHSMD8 =>ʆ в  5o<+2Ƕ~`q#幏F %?jGM(g;~lO>sQJ-,;o|:|ܨ}G㰳x<8{5Nsa J[fr!D`XZ vs0t-sN:_'4cP m4|8Ğ27.=k)]4+@r6,gG98=Fg:#oS*xDycEi?r(?Ep%4xڑ-fjѣi-òLci(E:S##q؈ 1EA sn9(SzFB_r4N D" l $D$#f:4rJK=6BB 2d H2 4T'65VIۦַUB8CLZ'R*6H@E$2 B"X䥀(BcL"JP.Y'X Ĉv痎Yo"z7Ditw׺o:90@O_XX֍QShct]x >~e)!h]n 68Vh- =]묎9>4{-h%-A#3CJ*CS9twdJ٩ <YŪ-3.pc&fb\.k;rBJ!ҸB A|DUFZ|~K,ŕR3kG_8U[ncҢ >tq~4hөǜvi:?YǜN@x9% It(l% \HH<*ee% (:=)I2! K@,ˆGKނL+"`SR#@O%6yVl;2S !@H)!.ŻrB<}X;_=98!TnP(SJZ 0"[*ik!JmbI(e+V%2RRVZmAK͖Ll8aARdhf&-cr)`ItMd Ԩ`B+ P"m$ t1ai$LJ k5wP0IP̑3n%Ke(!@CPDׅ2)N|.q2Rg8mqR0/SR^HdČ(cJŤ3S5 lhױde @JDJ}2IuZS $1  {(i8y,듦 ٥p&#!R#!Ebt_WJ CsT:A@"!2ĥ}KZ -XjȲ5 2~Z>|vӉIbYRG^DM d=ˋCs`r0i+Cn!i5,y@ '#̩ R6MCgrEձs݌ `Á %<8<@wxv|u'|֟Q'ŲOfqrJ QJ  I85;Ntቷ'"%^; !  !w_ig\4̥p4O1>b>I%N4+eaOL=s(* J6&  IBI%)J!,]E𠒨.@dpDJtd-P GHḅ(l*iԤ<^{0LO9|c9&!' PO(O=^Ert)O|SE1i] RE`&2.T;IEƐ!lHoApH#ӻ\NJd"a4"d1ٚ%bP!@LinuBDˬf#dUJ`los> tIΧiQDh?'JevE`sBMi:ii烠-%"HxyYH`$V! 0 X ?0D0#I?xlmKpGmgɴN wA3=*q,J}*yIO \յ'~Dq珀m*Nn Bk`R)DP$"6 %16[%#\$%6~UZ=$ < AF@,y c "åAGR>jܧzBN 5N%ԓ='1%"&RsJ))1p^h-]RJSKʦ|O,B & l]ClE"56 -u%] PB ?VF4N&tWuUN1N`BX"61=+. Y)v?|bi'2&l:ߠ$r)$Dі$FIh -A;_;CdV>V< Ӊ8y!R#N@ o۷‘LG*b\1#9 #8ƔG1"A&'689 Ry)3EK-tlJjR lp0An)#ڕrO4N S!k Hhٟ\“W%"`t_ ¥zTQh) wi<1X28}bNɟ~urs3 Pc>e?P̎eG#=d j7F-"۲r,K k ;!s>Tzը!a!=8l;/Gv]r 97+sz9*/N\+U*]f;7dH9_)->ƏKFY0( $QgrժFQjn-qe-l7:2l{禦gg2;]YprVF T ==ׯY[.R&*˻RQ] w2N+r`qlD[iV<׿3ԑُI)[8O;ȊǥRAIk͚.Ƕg; *uЂ3W^u͖R70!8,vjI[j-ߺ3UnXǻ7i+'fL\硲Zvm0&JD/רJ7%mbfq:8ssW)WݼqD'y Vfsdd< 4OqE}7E*fynff:.6k8Rܹ׶]8۶t]жveЊt(B>'Щ}{✛b(U˳v;Wnt:wyCw.{A5w]|`qnHb'ɉbˑsFWua6}̊Ô< NAښFc>I/S AlH i+)E}$Nr!! <1qM-q# ^rthqqqtT@}]=33޲moe,A2_\EV-W70멠2]w]w=֋~}Pa6|`lI1CVڵ}meʘ;W]\83=W^ -L?M?׿cl>MOO療i?ӳ0`PR}{w|h\ӑRI!lNT]85ˋMqǧV]5_g&GGJԚM`E *˳49h4,5m$?qH!1(z8h'''|| _80kR8?p,'e||vظN]84|+oX5=1 wK:uWoqپgk|=o}/첋.76ZM sC<9O?8wjgyۧgokmq֟ _X,zjVa[=;dG_yEsCsRnik޽es fٵ7?Uff*. }'z9K-݂V_S._:qA˂O(Ž/|o:ug=7OV%QeRvL8mqfVBmݺu5( L☙P q(V+Ƙ0 Y)~)e6ٱ}=[rq4Qz7Ш׬qШ5g}n.#=],7f.&gs=qz&DN9Rʁb \\|| W]-G߼bcUI1m;׬' wiaB^ܸjN.LiOxsȈ8 |Qn?ןi[n(̜\}7~?ui)e- 9#>{qRT*Dkc|ƩE~~(lSt,!%2Q( 0JN[Ad'cΗ?ؿgϕW^1v-I`bE˲#OXnth+;~`(j:ٜ8جU۔$Ȏlm_}5I_wo{ֻ-Ox lfZ,:]h҆p>gb|Ǻ͔՗-#zMڿmȋ3=E҉KYd4'"3 ~jozֿy7o h'qDYIP&/Yn=/gXqd.8OA)[8'$b acݕ)JuG4iJRʼn& Ā@tarJ߽9uwzLZ:~UCÃS3…U3b۰L4mJ7nzA?w{?|ڱ띻=~k_bj.}ޑl< ^t y((C{QwĮl~Uj`"^ۿ}|մlku&`K7Pyp]x]1' RuةOǛ8//iwuE_rxhh=I'cSVxbd^7CW>i\cV=ͮTvިN'm^oĆPظ̸^S ID~B9Dmo 'yO_aϮ}?8H33rOwowz @o_qJnGZC/~ɞ]{swDŽaXð.Wc˳AHԚwY#¨Y6xVCs׶ccK6 s|a}7+srm4|lwlxY֤!jx{~o{o͵g:N5[*Fmo 56\ҫѠkW=3wPW?Pu;7_Ot8ǖeDNp`BQ455̹PWkλ<׳\ז, sQd~gϚ_>K9i  λ￷e'@׍FscV@<琵I* ZЖSV߷]M}fyY+'_߾qqO $4&V+x쏏ϮM7vr\ e;޼n~ lywΖ=#h8 ܁=S{vNڡWlXؔz/7x~߲e`cLXC|L@/﹏"R`Yk[ݽ]f;[b[Z)+N""Fk.PvkZo6DT*sa~hǎs ![޻~=<@qr<=[d/^edTFS{W*Dqï;i~y?o쳮|/y56Q KϷ0ڝw*9= /z֐ғr߉K]: Ϋgv-|c&4@D9/ (;*r wF=X;:y BƻG￾s:_#ٺ|? oxr|/}6DQj:2S,IB;ugvMNc x8a@KBj%avƮBؕ˸^ER[:f=۶]]dhI鉙 r&tB3te[6>1tN@Gk֎twgmˉc0FE}}cC[^nֿ 3jժµ/~ˈĠZ^,]6^5;pF7?)mlI6bFIFT(u?4\*jQYԻw l_旯Z=r^zxc';s$+ ШWJ)l ֭tV_mREv: h'uuHLXJBֳ-A:N5$a$!fB 2DD[T҆P"#t֍ kG UjTg+񳷕˝c],Z}rqo$F|hK֟rVR0NlKq2Mv%[^WW\qT[1r=2I\\\x9'fWlv0qbhIE:6 !iM.10*(P-g8U-f&d&P:$Qm bs/wteWl֫VBWw +Vqr&j6\'$Ieg ]Q%g}h׾ܽWĐM; m Ůlo 7r:z@Xٹ\QO}%$UXj9rɺAOF XЍ^s~!;'[oPT* @Ȝ+wes9whpضmKi3--ЀB" 6/bDЖL?jk @*BaX^\A"d01wJ!X-R %2ZhCaRBv s UTJ2߃,RrmmfJƜIDײ|ib⏏GR$ D{ZEg+ ?0^lۉfYJA4ss ·@(+S,JRO/IL-k~K."B'rn=o+ f*f |o_wL?9n}O[ñIrebz*# q|7/?$Q!PL6%baGF$ʱ3EfTKHgO N|;ql%RAXҒRJ1l!DDH "2`b(긮Kxfl|4՞r _y wb;#CS{Zq۶c33==wϽ>P_XXM:sU+`FpتDZ2HbIZrR9(--l; َhz'wlB>J!}ب7gv>3ry;YܼqM E/Y_*K)Hɟko^c%0$1 '\ܳ{G&w$ RYȆ5^p>6bqX ~pL8Z;EX*J Ø$I "dd̒<%BJƘݰ1L~F+!93=?+ }C̘y^ΫUZBJb(ۺuk__?N|sQeL2^/ *VkWQmއ ޡR_-0(rYIa2N8B!>5],dZzh71>Wµ/|.fv_j:gOu-4ڲLqИDU+Y/ƻ_?tk,lwjeNxqn%#%R6؆liaq7h QRm|{Z>:ry0`戙eFhozK׾s{q1$ Ḣ@{P͗@aFqW!/883==[k2Bo;UfdRhcȐ:JJJyB(K %$t$,(J(Ē.׏KW}Vo-%mi0^7<&6Ӟ*rm˿lF^}5wq'):479[&FG& glPܞ{{+K/ɖyQNnm !LNBD"QHF΍lSH)NPZV~u;3p-t-h]fŽQz-$~Yݻng78?<@o2s/n0,shD7;לUeGgq')ecʩqxT}[B}]mS3N/V+u%BqZJmrF2mF(lnm'zlu,-aQu A6Qx;wY5mUІs7;ClWHeW\?8֬<1ރ}kVle>k5Jbh_Z\96_Doo߆gV6*eb@U g[VͯzU6[*moQo]/=:5@$ij˵^}:w>~gk8{)&tꕪg@EŽ,LJ2eW~o۞ҷ~>e]IӦ6%} U81)z Aw~`/Νn@f=)'kY5:D,Vf+RXV eI43}p`(2cdud+W( L=3&XAg&m:7{Ɇ׾% 37u7n퐑b5g]cN' юԱTȯ^a= `T) bg_wޛ~0-HC8i L-cY3tDک {uCtjɴ@b4O~蚿w_,[:cG椫jgDiLgru) 1}YpW٥Ҩ^-]RY 9C*ifgrw9uVqC*Uy86RtZ Ǻ?oXיhbB7q=<=u H,Ka2jl35WtZjQk?r=€o~.l]5KڭfVX/g׍k:P(Vr- vʖ߹ gݓ猭@a)2U== 18v;PQ]9*eLsR Bl&uwciC~'B2 21&J)G\3[|HM,@G+H%?PϾ4EVdުx`{rsxf"1,.ߨN|_?O篿Dg`o nFNV[֮g~g+ Y[k5ڵk@v8zϽS{džrt[)4:N6#0P_3sAR=8}QYfXY_Gʰ$'Ox6킵~*SXzdn~ o<_Xh)Ob_ ֭N8_͈+~U3hGz1Ib>?t:XW3t}o۽ :1Zcy!2ҲQQ*&'M3/|V.pjV* _ݽs郍VRydm=%A&:AlƂ<'З7qyo\QK;l)Ϣ+ȼ1>4Ovf( `+4i F{aj_iyȣ~V) f܋7VWzߙ#Crh|Ž̊ѡ?wt߶Nݹs!edc"D(0dDĘ.X9go|ՆsOs)JP|-iݭmmo䫲i+g8pxJC yڳ/98/̨DׂCi!T5/0r 'Zo"\{pdi:Ҳ}Ӌ{ kjyBb@Xn0 FGF2q43OWʕ ֜`kww+Q zy^f^YGQ*A)zڙ0ɩPe;+V%,05;{;{|$snx$JF)Vk/?u۾itC{{5cWp˵uBl B$l~nJbc@I@BDq E"R!ƯyϿ _v7Wp;_xfne8yϿ%q܊bEq#53+.{__{qժC5wj;vԕ3bOڷ-Ddv:/_-@jOfv1F)@ LjN'l53/[~ݨ&Pe?Kz}wuK\ֵrbWׅXlr93Չ1U4@T!ǂ%кՃRH@f='r4b+bR6x]I<=x_}tәg@o=3dt2# ~8u頸hcWf9qo95oZ}WCVǐ.ta7Q1$Vݭ uBҶQIlO`W~{, M+p(nR&tz$ H5Qw:f۶e.XFvֲT+8nl6q:@xBaptq8 IJ102Twq5+y(yXmLMym"ۗB;!q3a;>+6c?_v+?PV߶V%/{}okг/,Qe_rݪ1qd@Nz{rAFi bϵ;1k!яMGZ/|o|[c:|hvH Wu>7St9x奮EY10o^?ز_&oAK p% B`VyYhj r7{'/>g[D@dg3h[~Dj6jADa;HJ9lg˵iaY+F=7S++FGGkJ)HRO`6I2<8cL(-cclUZ/.}h\Vj=Dnr\7Ő u $FG7oz{5f=pYg2hJ  /M睽 ?t];ZkWl%,uu~I*EHX F#TZR6cn7Ї>6l#(޲6:'>g~uˎ%%Pg~CCh`:1@" 3DlC=Qmϸ,Y8@dCLתg>S޹?lonwIl` msmfƳm&N2;u{Ғ# a;=2#uԋwgm/3zfw^8deV$=|Q0#:AqBmyYk[mgjait[~܀[}֐NW.7*q Y,PXJv750YREA% $&By=2s333{^~R[[QC3> ~h~toa.U=ӝD2a;c߿o:Rg FiD"[>(I]*+aIDAT] DS[|b8(bZrg^r=Ib|?rK)lҐ |OAD lkh|)Sfɸ& ひ`ڵޮМI,rͼenݸܵm?lJ97[jZŞDBf&8ۍR lr:sv~`8ZnWvj|rlOj>[*W I Cz$h۶h VȸF le7A?O~2")%J '|τ&//wY+)$mEFљm7_jm%CrhF VVF@6J$y b)HzƩ+~Oqba@mez&vLEnl)ZUH2 9? x:^6}&-=^'`q)i3p:ԪeK`T 9_Zqص+ܸXC|Ƈ ϗt~>rDB*t%ݕ3Gג\]neW]=ټn_?;zC' _q7_뮻I b'Zzh6m۶ݾsg_1e꡵?VUyRc;~uwutj,,$4F@xC#;1F*.qb8<2($X= 11~ax |Ҙ l2?x`zfq务(z7/NqCn|_wB?c@r{/~{Y=h?X3֬5W2˺=>!9)Lb:$z\zK{OVRF5Z,+b c+3\5϶|rd+>ٯW6:f1 e$$q%K(#Qk,E,W:tBZ'I|k]vZADJZ699F2-`@` CfJWT7܆_f+MN bblQ3'o|~joC`mCw$ ZN+΂e,+qP  !?#QևLS 0a#0nw| 1$t:0HƄq;0 @l:W&Bw٥^>p__tj݈Y)+KA8rh7j*7 ώc넌1ڐ~Po:kJg>脾Vk猞Ɨ}翿ޏ[~3{';+v&Mb+@҆ Rֲ\A#EH/Bɩ))m/3R,%__}X1skV)Fֶf `ud(3 gKVGfC \tɵTX̚&l0sHr,Vj "PR:!;_6gaھ}{EW\qEZ'N0WBD˲@Yjaz˛|;w\^4ނE)b8 P緾V}xõzA1fף xY(\oO{oCR=p +!|m?ؕ"Vՠå* 1'mg3EZz eڵcv2DB ĒF!ݖQ\%LF k H-bJV ^0\zKDd+N%Q92$,_{e횵lssX$2Aq.!:P۰&B1-'_Z):34Z𖝅_Q΃&^k)3ziӈp :/(e+0k{U'FI–Zޞ1Ji ZXojx`)9U #=Ufl>k)tfIى`NQ*u-%EԬonn2I JDi{Y#㇪ zU`l۷o\QjS-!]}C DhbMFZjY#^ 2!ItdeDTK*"t>~\r:K)$I\>p]wu7׺ukE{oA,LvaB0ł3'yCY:+xR|P]Iw]{%W],`Gyl۶W\s 7Pn?ۿ+`Cc%t4c{NN$;BU- !UKcE};V5A&sySpoБkXOҟV~A >Hv>>bB2R.0(7S.Wܹ{]Y9Rw2Гˇ5ZuiXd &3ڑtZ{=ؾt ;;~YJkYo RRZ2 jjxə]tVV=ۖwLu=,ӳw\H'#hɁ=SEXӳ{n rlvV~//ҽR*u M38/}K?q,_V2# adƄԈ|Y7ϖ(xI΍q f^75{Ow=2G1ScN眡_P0潕"G,ƴK/(<ט1HѲBurUq*@cVoUscQu:ltJP +z4ZXe!D1X,v\%V 5%'G-=׶D849̥RWo1uB8,dbfx֖?Au{g~S-uwALٌQm y6fС+F/rFf0r}s]ݓ ZPBƵ(k`th Ʈɻ3s3sV '."un喴 \p>1!D&9nl/rf__reĿ&r3ZgU0Pf m!&g@Bd-nV:D!lUᮇ77(Wk.tφ`x/Z bL4o3e !1梋.G?zСL&sww}7|u'ʅBqc?okhcIhdY; v,5H)vE9!d٫2~oߪ9F}ĤeL)cJꔾ#K_6Pgr]fumLvYCHZNM6ώOo)!mY(*ϖ0pB2XY*2YLƱl%%1T0}]=CHlY1,9L Lmt7;ο7`l4nXjKX-JדlQz_G7?{ͥRuqhL@ȉFn ܿ7yw&y^fٜ<'_jN"[jixfqRmX(H8,/=6QVpvR40X{9zKQ:^n4xhf1} s?sԧ7GQcǎ׿tF`LM/7O/ kʯu孼" YjZo{t/+zVuYB+ARf& !JVu~Yxl(ĩw \f9,إE{|a`FIH,f-H$(0meFI  rQ2A %'"be$30^힘G1\xe=+/K7~XG8i:㈹Vg^?Ԕox몑{Bu8;^O}_ݴiSڰa"-97ys|3/~ponӘH0F-)ذ5{ir2>vA1ڶ @esߩ*~РV4V?W]llNeړ4#m:kٚ("`NPJiYVL:҈w U\kԕEA) ҼgD$I>6qѾŗV.{h뗽ⅅgmCHye+d@?IoGsfZCm}]q+9.̟{e}݃C?|m˵n}|ūn͕n8lݱc͆D0r $If&v-KYj[}Cg,*u9]%XfXX ωZcj25ؚFbqxP61 +IP?K%GB(wfbX5wPWʛ:a32[VN ͊.Y\5{Q aB(6J+f&! F/.B (D9ۆ(l:\{gRˤӌ5 AҪN['v]MMo|߻c\PZCQ`lv}qgL-Ƒ't7Ro're+@s15CgwobCŰ_<0??N:([Pz;z%ϸ|W??myPJk_ٟaxEIK`[ضfI#}]UB\(x؟!0R96 ҡr-V 8(]z4D m MV'w^/ۿbV0, $'ڈ()#ֶm1qdae}} ɹr6P~DR %@:EI$O'^򗴂]3*U/7\k]tcQ;xi8 ֭_w9V人GWBuPk}ٶf̀ %dny+ft5f;#뿱s~;v4MڟɟG>rf/K!9P2du@DnHoe4ҠdD2Ds~ΓS>s'Ġ(VWTS**UUzYPӘN|\ZpO?=qV&֛ޚP_UktLu_^y7\MҶ߳_:13f:iBhf3 " Opdx</?{GɫO/ RaE HLQqQ]o7]]^N?}Μ^赦zJ$$lYժZcϜ:.7>?}MWK^8r\}{GC7_4<<|ۆ`'n_w÷tK\={?}م;Ϝ=x-7޺?Nd^ LkFPVcT15Q#Rw!b1Jȣ+˫K_ԋ@;;>h4\I-FOԿ(+je}h}oT_KL k>33kn~ >OQ³ KkU(62CL}4>HZwͼmoY^o,/vǻ6i52(TO*2dR<y'!f)?mtʪDLWs9zoٿi?&7ZΞݾsg鹹ݝ.;w~5yufHUqgΟ>||52>_xl[uz/6b, k!B RG@TY†Ԡ[v 9yg "lmw۹{} DhUQ0';#qt.4?=_u_IUQYüFUH>"WN]r5Yؾ}~ -' |jL(XE;Pw[\EĹ7 Bvyś=3̹LkZ^Z뚭d {vKؽ}kZ>#Ǧ{?X=y#f]$< GMzfs\ 0:0LȪjRBbr7]ܶhÙg>{G Y&΁)S:{U'E5%@ü(C c! wl: OLLܹ0==c`gGG^orڬSA00S$h @B=v`f`+y#@2ILj9mw>TrqMtl|$=c7ԙÉ.J\Z *uLόL%#rҲmyI-aJAH{=jw( J*8 F4Ł)gf@6-Uk4L LMM "b#̛fhj&jȲ,D$2D5&;j/:ayfyPDHQWr-ph}i#C|TUbv1)m!٦wC2gW6(y+5P?#V?wX8jIIUl K :nl ;k„uwB;ـ#9\(f%W2&ЧfPNNW ԉ`i2 BHBA:^̩jx؉ai QQkV3D4XT PɌL IP :N%Y<"mSo9}l;C%.MKų#+WsdLo~鞂E&"gg'?Uzy? k@9usr-%TRz )%W| (0*J}Pe{@4-7t;@ĩ>w͂N=k?Lhj+e\nĢM3ʘ[=tB6=~B+i CA(#NJeԶyqumC51C`cEQ tSȳUrd݉f&exu{nk&2D$j5]xJNo$T$&&tkNfFط^&b`H`.4@FfIhP`"Ǥqs{`%k?e舘QE$D523M<)&@tCԵ厛$Y5<9a;֏Go4Ր2&z X ".xZG3$bfBR&L ?kD0"۷_8{5.("#93#Þ =0K2*qMZU ֝bNb Η\}UˑM7ëW9+"#@pwk4_~x9]4L4(zv8 7D7|Q^PC-E}Z>ݬT< `g{;5]!gQ "BbJ?Re?积ky,>ޤ*Wy9iXQ,jJ f{1"#L ƤЇ|q~ 9p7Zęae"E6;jLTUسlQRJфXT'3!ֽ&8Q& hHou 2_CG.|ٝ1OFބotzΫ R!E0CUU0pC|H%"{[.'i` jxx] 4nz+r:@?T  @4u{Z^/%'?Ui.:Ÿ=8E6OI@QnsuX[_^űyq\&DxURH ޙ&] }.ow/ΩGbIb22ep\@DcpHe0ay|`ΝژߞX0hӭ5њIui`fJuƇ iPT&Q TUJ5 DHs!!9;\&DoZ !ژʦ9&J5T(P*Jk/Q-_F) =z  \ jf`LhK B}&5 !  )0ZW#smKz$B5 f'UIel{BR9:6C42Ԉq/o)IBQd)!*jQ! 0!Jۍ=3nMt;f#MZ_Eȋjc0\^[[_(1ƪ ӭ4곲Ќ$Z$8I*(#u@^V`i/~7_Wb^=pb.˛0<|w_M_ Gn'd5 bQl3E7CrAMATE3F)`TG=?13.|NedP0 qSfĥjR*s@*!afAHABTdR:۶oJ4! ( Ef8u@U!X%#Yؾkaޝ ;gzVC5E$2"Kk/<"NԴ儂`f$ 0ǤEAh*-GD;Co[` i'fvҝH~Hs"Gɾ ATBf+ipċ%Z:fR"jf$"f`,#>2[|Y#bT5F75rZY$ BdX h5J8`DfhdQN}/oi ˧GSb5~( #"C݃C$PESٳsw~U'&ڌ1ACE*T%k)1TyI5&[nfbm7ڏ1åSfE=ش#Q1/lX jW_#t5%~#k&PAv:0οgŨ7dĀ6QŽ z[J\03T]$aKj$#c/;3Id4sTCR,M @D&ew$aH,Hh1] F ց:K逼s̀h`9aFt TSw3ٍw8vl޵G 1s'NAbucvo㭇n`3sUU*/es> 7LAc>Z8n`h| UemۦfgQU_=͐AUQQ@>!ss2G2@Sѭӟ~+EaNGw bU`P KCf=O $X"AY@k~   eD( ,94J"B@ 2ԥhYgL'i 2R"1QUwuw\>D5'{|ǝ79ACR̄L*,U15BB4vsMRRQA*!@&<#g? SmASdA>i}};tjuowx wח;t bR(5gĠ,crN @UBOUĨVVhei$\Y-7tqN-s5w##&b v.rnRȀW HzmFcjU7|#dzp/ßm?rƶ{+Ot'~Gc1NKNj|ؠ/x BD`rZ*5$T>*G4e=g#)#U@YLT싫pLB,Aʉ7ĄJ2 (&lCؠ}vq7Uڗ{ Rhg ff^;o;]hMLx)@M!VޓeNhHf҆DdF1@dbb8h:T̀ q :,uP %KM-k}<ѫ"?3옜n6i{㗩 ZeϗW./dqlۋ7Fb*xN_ZG !|M};_ySC {?woFnͫjs4GdL5 =7KN{v4xPO=Z!X5b\ p U?DZ$HG4d(si[: 1"3DQG|}{6n̷2`Ph}tTSUe[ e\QTF1XMf՘8EfS)c5i3 CYE$ P\UT̢dD q;o{N_p>CpţVije:;VoѠ$W+^LQem@Kgda3u!=/9wMx<ҭu;T+`ۻ`[˷5< ^pWᣂFQT#uƒ1q{tXW1GD@Djrstk5'|dQVqmqvUA]ۧ BPi"Hu fQiF[~쯾wcpUeQSMARcj31)JW/m&ۓ= **V! 2AEU%fUG4I%JUY=ʇ ;WKtL(Ph~oxxfХ4R^:bɨð7cH^~43>y(.5';|=EdQ|bw FهmA2 9u za xc?Ιape, \FwrTOʹN9e 1_qz`TFR sYg39D#sWU5Բ(~d|v5BN66(Ѕ LTX #p!f|ZG>@jlwTBP%" cQ`r jx DQ%J1"1*@VvLzӡ<zq*"Vٹ~}J\OpH7utߧߧ󨳀^q:wz,l1!_Y@ s_e7. dΡF(Dl5Α=)4$ 4cD;fwY "HtwBrLWQ;PM*u84,V.M$b.)h4HO?ٿ罣ݔ #"WDAF2yv,E50O Y ULAUMHM CԄ͈!B|CH-%Q}y5:7^ӣJF2W!Xؽ L7Rlk7LV:k*pĆ|v~?Ќ!OQ?2ih ո+]T !Gg肞y 7#D")n의 74MɻĬ*&df-vE<"g^OT0(TQQTщ8p+D, PCtE. %#d$+F$Q3A@D`j T0!`J0@ A%i4]bv}RGt1gϟ0Pȉo{c?] N fVβv-o* KƟ}{kX b> #~unZ71*WU "R ŒEO9${&oо IĥIh4c3 &ޏJXcYB~ܩOL$jBb0 UBL 熠 !:B6(j4SdT `8VC UE4Sˇ#8DBC15F%D@U BaAh4R$>I=J>|0b`v&3F# 7vKRz-op?/v{㙿M?g}_}>o3ztvD4ADYDPuTQ#T1yyByXU6'-Ij^oߞ I⒄{ױGD i:<'hٙcG0VB9e9P@4%bH"9TfLirƂ`# "2L/&7$DMQX0;jbe``(!:Gfj@@*& AE6(ا/NۯNB1dIsmSɉSˎ|K暃U A&VVߨꭩ֓?fت Mmv>:x^gu=) ]"(;0J)9)@M7;l$e55 3cD ̙mx 潧Աa/k2+(H 1) Y03  "d4*D+C54cqQcݟ5| 1m8rXG&|DCU dCr.D1L&AХ.9:'{ xfe~g!1c&3gVHŬnܵ3J `"Wы_r/oů_lsryJF>763*TqtS _uw gDIPk›#0F15E'S7o7 ' M4,k&mT{Sͪ E1EQL-RKK{Fk7>zdiy E2JeFL 6{L B ,($Q#K}557(jH@.L VVj " wyUTE*Af4OLa_2W`Vm{]7}ǮJ$t:-BBN5ӺkGLMhV:ek4Cb1_>luvQ2 j|t_sOgjUg؞PX𷓰x?e _zf1{""3itN~n꣉9'$MfI&Q94|+iiw jj"sܤl'f~铧Na QT0Ph@/E BQH6֣9 nNNo4DU 1ƈI(Wxdb͢@* % 7&&w^=ڬ-iNPfsǞ:r0DJ1,LDР̋|):3c2g5YO)^:CfcoX_V%Z~_qɎJݕ͖.J||'݇d=>Dy J y[g T(`:E#R'E2jø*՜ $@!`1`DW3ݩ^gCtUK|>K6NS`X!x@ll(c݅X(Lϒ (' pK`ԅ9 j7h$@O=40;@t'暻w{do:>C3-ǣfY) .k$"Vei<39dBIVsy! >>Kh^DEdc=/=}o}BU5uM#w>w^3i$k};T OQJuFuwdMϥ3=羣}p2ʾqD U›"Duy1wZX>-w}mG|v2:ٹ$.=~,KO<ߛ::{r!d5T c< }{uL7ۖ3K'ΎϮeIc& @-7ϔT`)Sh(>q|&]P@Qq輆@.#O=gN/`0\E7~'_5 {{`_^@~ғv<@(|l5K(APe9:PVeTqTGSfxS HQ;JtEGvAg^~Fׂ(|1 V+\*S 3uߊ+gaL$io[PG A\?;U2j΅;g'2& a1*F?kvȠK#Ǟ?_zڳWܳV:^ꌥheU@$02P-~9'›- QnM 䁜OL'N, iéB$G׏^ظiem7/RD١iښP$ B)Di*x<.2T w`h8v"j$FOSMfÕZ!uH'i 0ÿN, , ލ0V~H}o| Oft;hpotqdow|̚#cNG!sCltlK &&ZIT6ύY9c]0WF40( +<;ҫϯL.FsGN_ֿaϭ;fc$cPP0Crg+듉) +JQe\ڙyd)CT$bvG4G&-k\T(}>?5%vfLx\&D8q 6:QN6nkVF9Wm2!"'8{>O9wvrzW {GȨf"[->cFnP [|X1n2$dD:{߆!7Ulvt57x_H"Nll#k ?pĉ3g+,S49؝fv5';&:b>Xei3Y87DY+kK'?t٫9sEk5LZٰAe] #H8&Gy%l7D͑"E1 z߶Y^K4Fhݳ=pDU4D$fɩɽ ۏȍ7t_u?$[f/kc5A0]@'S5ǝXD=J_ё8J';Mà15l6^8}1୷Od"00+3$]k /Oٶ~7.[ɅƤfl!hI=^{0^Z.ĖؤU1w&)H !V;>n=w>`x]vOVU("VWU_[~c<zKO.~\ **3"( UEbJ?OE2Mg 6֋ F1kxKV"/=T TLj]NiCf#?v? H#bD3~Q>~ʈx / 6 Yޙ1`ՑK lByC5<Dжf+SN8]H'QջS"!99Z _3SWlۿmu]]4MF׀ SEk].kswdrK 3B@ޏy^Մ:jQMTE] $h}:o}{Y,a$ RۮV'/57f_ 29S6BV3>Y! Fsz;z`a[7=ٙN/|qcԙ+D.IhS.~ <| -"0`6)]н9).c/>˿ow͙D1(=V&UKZ"K \cߞ*'O< se34k#n8q&&Xs-yܜ*WуvKOO'Ay聃fn"F֭r3Fl;Q0@q[zͶLp;o&Y sP%\Ήl]gx=_N܃R;,tˀBCa ";}?馃z9}~ug> y?@> `blrgx_pN䰼 u3GJOvU1R(`9I- mR!rsk}1"0QlO!V ~4r)_Gx u&)(>{`RDŽ-+ ;Pz!@)951@a`2uDIꃈO1(ߊ1Dtg*J,Lds$xnhL$q谗|TFh :l(#B$htbuWeU!JQ2aer4*GC,F21;O> VfBT,b:`õ6"~@Ev+*S3/fs<;Z?Me_M Gß2,^-@,uqmNw!fL<@͖WK# (*#@2 9s MT!t:(`@,jyAռE96p((uO̪JcM[څVDe>*L%q:V˥"3SPUՐ5';CDT`0QB ٠,ggo3kf.j<Ĭݥ$-c H œK} 7y\A+`U뗻kD0)%iWM`ƗT^o$B@'͜@DK<@G,IslFUQi,jy ,,-Kɋ8}RCd Ò I,eh3|_Ab?}"FCLhIʱ%r7Tkm +B/=#ƣ>i3( BV3&fq4 }YڜCNbc f"B0@  <%wY+qnP|("؜hJeFR z"71ħI0r#?V3/i9_lwR@m 6w<@.yȐFXב_#7 1C^UBN% &9]2Xo6;i,ec6С&*׊s 9"`ձ3D lҴe%I%[" _xd۞jd$8ʑyUPU #i+Kd.4&NZQCFyI˱Ơ* rHNUlZ.ί&}?MyW #KyƗP(0TkKk5?Um}۬y)e.eZTH@.MZ^.>[sxu'=TԆՈw@Hh8]5l8,Lw[%T1:pL  FgΟ>?\tѓQHMnޚ9FZ VD TB$vy)_zuWl42*XDܙDQ@T(aMo0kdpwYk<WUyž7EI%2<_Y<䱵_1rAüFE IQewLN 3ɳrlDLGhkxޔmR(WPCxx.w:tO0F٭ vh%Qc4 2U!&hYcq̅u_ӻ]:AHlF((bId 'vtv-f"MtsKD1Uq E1I(YÍxľ{ZʹiUܐJVUhӽ 2sv/&gu:{,**QU%;̝Nٶ{y׵gw3jUsg~^UAYRg{2_Y*j7%i,mMo~_ɜի66sC9=6 "*3%)WAmWIPydv TM sⰷNMHS 134QC566bʀUKbFdmHJs Y?q`O! #4Q%1 QE"$Y# R0}SVZ>N2 f2@:sSg&U"Ч\bn;p,!À 4M뛝BLO=~g}"O3B%.xWOtb4Rz0bl.ښ~!C _i5`I^ Ԣ=ڗGA2{)T"@N|6,Fח̸K5N3oO(W^xTz!r4s:h%:fRjf0VO-yvh$ CT hUpl~7BD\Du40@"bbUe%`fmϯ{\/s1Jۻm~daU1 Q]W]KzeY:T%0 Zg{osƣ|XVIIk/Vea7SxᗛDwAaSJeK_Z4_<+K>E@TXD_'b@d*/@ݛL4cgδF ‘/-l߱E˫O|lQ9̤ϴ۷(@"cPi(ų??y?jy*KVTrǙJ& W]>,:Gj֟)"hB> 3pISkTw߾{MPT!$G5?1J.ল< n}D3`vXʬ;O=dԅUr&?߲sasyh덋]u3i@ڃAoFpL@^6.uk`60u(BtBg>5)nڹl W.8> il13R$ص[\B$qd*U1Uƨ#ht!+" efʨ~6To9Ǧ o 'X.k5« E~%հ plۛ3W do(L~ixi% n)xyM_tz6BPqL2w&Pf"{6?z ԬیHXKEf[x Vϭ-_;;CZ{qGgZ 1Q5k7Q`W]1pV;ؕ4RR*?O4e zX8R#P O!'eP jꖂ$Q{t3+"D3e(jmE1]S׼:;眫`3UHj*jbgf3)UPۮ9x`u^UfQ&ǝwK6(X݅_^l=pIK`X[b0(7rojP^~ݪ̮#xÉCof͏̓cbB#FE+PR8f??3w`_4B0 r#ͬI߂0& ЛOvlL\VUiUYj=WY|2ysNsڠCE n3tT̥ ohɃQ1 y/>;ҬGAVvA3KcUX&ҪbEj=$dDb 5; 1D#Sfohk1JD%%٨(m19K'ic&F% Tc 4f¬qB`4 O-\3/$ZbE|W?i"EqS];S-!t[8%uMo0> n[Dl&Tz/FZiTUӰ%!dD$ }=hmcIpM#y?;RV-M0g"DU4X0'=6G晻%.]qY(Fާ4!$V"4u2^0h.(J%jDh U;Xš{zÁ$5p\eOyFeUUUU! 2#qE&3(QY~_D窪DBu%J$1fx5p0nOL}n5ZmTN~s=GPr"_q_@4C9=d;Π01$r lV1jDPӺ1Ev̯.} fl63mdf73V=V݉NkbgU`V"/{ڊx&8szv7MV:vBLv'WQUF'R "1cDkeTLvZU * ^*bc~雧O9?Ȼf&&)!fuK|"ITkzSM?vC5.cU$*m5({uۗϝB(Gj@5kW_MwK\#k6[ZFDC L%̔02DUQV{1X zjjT8I}IUT3o4?ӿ&-/ݽ'߽;_~IWd m7oaHTI<|A7fcכ B"4"e/L Tٸ(nʹg^xOd[Ĉb4!X{r1zLUb.-^GVC{t~/> RY:}=;5n9h6>JTu0MJJ؝t cZ1;i.A, S1FQ\Fݽs۵W7t2&͖cDU 1bcBGT~6G\$2@ O@$v`Xei^o%i^&^& Ǿ]>gBRCb,PiMmU"z]?<~w_{xg'>POyӆf& l]MLH#֍[^m֓T^ O^uza\iG9$޷nU"@`Jb)K oڷKUX9xɹf`ΝKkf'$ IO}wgCY_7,>UaTt6s;:iKeYF ;Fjjryόb&.E0g:+ghUy$VUb(UV+ q4XNL;bbW!Mw1*Ũh8wIr"OS0ElўՓOjv{ߌ18eN UĽ)X% #T^k򭓤nKoA@ M"H#w]?[ MG 5XS`] `*uH* U}Gk޳8굷%>elfDQX_Lk~1}~ⳏ[9umC+bvFL ɣ/|q񘏿th%H[Xb)VjfZxtyAE9h՜oMohg`B@#"T{P[yU%) {`_P b>͚ "sP|4HI JC("TUe!ij_;pc؝\ܱk2i4}ր\Y[E~_ҾX<Ueo@ݾU</h ` ;py#ݽ x~V;P %uAJ^; d2$o/hBj/&qiqglcIXc|wg/qQ>Xܕ,qǪbP{$ ~>f}û{cmLd#Y9LdgG{}[١#^X/)Uuk CWBD>#/W5 HsfIBfؾ}zuZ%B-5s8sr<ʚ 3J%zD"TMDD$X(Jh4;ՠ,(<e i!0F%~HW5%⥚;2=L]ڿ ,A}W>! *No BwIZF*.V{YONU's*axNGUG:<DBn̈{6>3UbWV)aco(h!م_|gN|iiޭ 7]) TZH"@+| O;gUҖ_D{a`γ#J3tչ疷OO9zy8T &d ۶_ΛowBE86]<ݻ,Eçj5Qa ,\0 PDp 0/UI봳#;j0 nr %MsI*1fȹ'in#2z{Sg"Ǟ٧3Dz|/6]۞pԮB5G6;d[-#zGW-ҝ@g sZ೺2JK!wnקoΟ8>O~2qx0 AkslbjDը^Iׁ*4 uk*-՗f#$@$O FhܴKWF+ဢ6]c*kM۹mnt{vYP h{jϼU&2E3j P 8TcWC}Z'X|6& G5f I3%%@Ĩ\Ch6ehCDA"fV&e>HP!y>!QgbBDBU$uIfUر#R| gj~NNL$ nԧ6e}+{/=~Nc(9* wR =;laSaITjEo6QB-9fFc J.ɚvN+5hkkwVN]7oXW0¯>ѵf*"ZFt1v_/V* k7/{7,E` QBɄ蜈֚AiTղ,F2ԛ}@3 IwbXHL,VբbFX>lGE4$`X>wb8+#6@|7 3|'[R8XU_3|l}X7}3 jks_\;;3Cv\G)v_ﶟc_G~^HA#\g`jC)%>$!iHk,[f9Ͱ{nk2 `␼sjHyל`9q}'MM@QZ^cG̱,m&@6 Ef@ĸ}_fG|f Dh8*lY\/ N5 FmD)I#Pra=?NR2s!`#6W1).iPSZO^j?W3D0UB # ]("Dqa"+"2ܛfFH@ Hj^*"r6[Vkj\I7sKê;g>IHDE)&)!zZ:VsC /L9 "L&M% Hs Q"Y̼mXmϋ+~E@_R#""Q͜sbIb&X+m.K) &@qCe{'T@>N6`%H #mZS3uhNP#@dH_n" yAK(1d>yif&N"3)D,!0#o(X: $" !""uk֊ ZjT|{ɶ۩SGFxПƎ|ш"`~Yb]Mj@_)آlb 0瀑M$NB45وjf+FK)PȌ-RPMT`_5 DJ0%"3HBlgzծ6I339%B@Fq)”c؜ 7H-r !&%ՏN7 xq1)E1ޠ)G}أ {(͎:s}[ZM浰4nєs^ ݣݘ jĚ0,KG~4;v{0zLEy35Xȅ@a*r?jA@TCUVj\Qj +)CJ:9&V@:, 8*$qI)T랶rxqV0#륿nzv "\!ٯLՅ?7Ν9nN:-N&JU{1Ҹ" [(e.t#5?w߯}ơk"I"fjQm$͂(1'0D%qLԀWE!9rR6@bQ#'i/"~h`H X _*֢ HVn^9+H2Cx)S$BoL]ߖR\cRݙɝKK箾fA:{|wzpo&3z >3FFWQ$dTE#Gb]=gϝoj`iFE͌e*Q! W0U!t8)a (5DC3cC# VeyLjdH*uBz2 ջt|LjA4 rcBDbH'B?njbф#Q 09]uuWwuw1{ﵖ~Y庫`W:y߽'ke}#FkI{z1ΐ0.S7Z ^'^zK\B 8qW{4fgl78s'?pxSo~//ߝLs[E@2w@yqธݪ-:T@X "Y~yE>_Vn4H)-o> a"YDdAɜ0I1 ;qCH'V B`fD%F01hh '#*K7(.oc3.!?p vz8M3 pIs7 /_pӟ^,)uxFDޠv3ϨǩҝrJIКvYەlZqU0 (*TI-hg)EȌ}# %n#s Se XRP`m:2B>Y V&޹(*;@F vZE H֐0 (qq?Ó'N׍ԩ=kV?O") 1 ʠ@]=F9.uBY9!;Z5{~y\݉HQ@\eX&0&O*J  ( bWzo[ xw 2KZgn̒:gcLZ* Ȁj%NT@ )Hh %$ %BC $ʌҵTUTQ8>;F F?My޺>;i{o7{HJi S7ʨ rw2*y__E ?4lN`_iz*C :4@[&5w @'}|?;b7 "11 !0%3僒:"6p-qh:2倊UFAU[.u$@hY 1qҬ? !Я|oe-"8ؿ?s.p4;/6q0 !tE%pHEHDvv;^]m̙k;*]|'>>$Kj@APaCjJC(,ogA݄oDQ_TUXETU)dQ%UdބUYA$){O9b_dMdJ ]Lr 1dH~5`Uۤ;Wۗ%QȏuzO1~Uwx=z_}ݷ0-_܅3=N*wѲ?pݬTP"XM&Op{o9_k[-9d`Foz$"̽ZD%B5]SDyPǷ }!)Ww6Մ(PH)&P7ٓYEeUd )$QA̽"_wo/=_/u݌FKb2x~9~A.)$:tǵ4ѺA8 $F@'lj-˴7S_/|ƚ1d_zX9sw/]<ml t(z i+!@g?G>m`kl7&y$}"s8ݞ:{6hUU}|!DE@D:*:yC;ڤgU!O|ʲF/>?yn5 IL7jMF @02̉:E(`K,Wd>#"h޶m{Nv߯"@@`z!TT:ȯN @<^/lNo>9;I׭QD #љru˭i腄7ӛ%$jtv>E?EX>hu/틗};Vm>OoCo11PM 35%zTU-N0ݐUy\,%f>5GBrϟ7ϝ91s4sdLd2Rt&S6$:yJ2H"RWNcNu$] ̢|%{_3HE!"㜋14{~I$(&h;}Bu~ћBj}|ӡeJr-ýI ɽ!HP~P|HSei&eog`YW>kC0jNJ)]|p<)21Ȼr6ly k-7!d>=qbr4\,g85@>NSҥ˿ۿG}$ 1& _?FF;Czw%hb1+3)r:`f>l󓣝|5USs2!2sry^wTZMӁ~tH (}n?:IeΒ`xVFakm;OxփߟeYAE }7^|?g +7?:OEYZ"UCe+(Ӱ?jg~qNlm _WB!89_˿_׿ԷVT>#}ӷyZcK۶MӴ 妎UUUUbbcQX{on^Y^2sRN8qp&zk˻pt[]Տ_k_ 66y4d2b<.`eP~o駿bTN_׿ǃ׿5~}x*ƍ[G77oޘN05Dn#sEB;Yn_uƍŲ}eQ˗/gYۯ++;;_׽w3 !tPrGw⣰5VAS삉b f5gMXL bX<~nֆ?^[l6ٴ wre{^E[kH`Qt IA: ;TSsi܂s6l8My}_䷯^VS?wꁇ} | ~_񍧪1!}k'O=}cG[j b ieu,{;޼{~VͯCyݝl*"߸}{eu3=)ru4N#UcQ,hR>7É8eػi.\m9W/~e_͂?8bU$1Y iTv ~?/% L ,';{ĆߛcW^vq]/_tZmlo-˂m51Ƙ!g۷o Tzզj1;y|Ra>5mKբM<ΓIyWUszO?3yj'qJ;5f4pL ܹ~i{sml=pa|8?{Om_X.Nr`w٭[վ\+_Y^iG'H7&`.w_[w vrUvxWrΞK/sj._gn`3~9=8џp{{^uSmŠ!"Ա'O8QFN TT#d xYc==B1ahwp(\Vmed   @f@J/}o U'\h"}a{}=GMsOG?2菷oooz(Wmp2'T 2N77M]]N=Ͽ0#MYbյMkl2zxX*˯"EӉ͕X`\MDtr0+*B|p<"oR=+3oNE7Nl`cQ G*hUW| R mm "$ ޹qՁ|,)ddͬ˽RC$jV ;.M-"VÆ  z#{ΪŤYƩ>۽"_[_|yt.u,aO&jY zS~iW6M; ~h^zskG^zۻHX{E9>yb|^?Qb}7>|qoTFAo.m{ᇷo{o&+w!i)X * =攵[&7))I*n=!1JIbP"Ss"2T/MO>U նjx3hϬxyed2Ȓ56`,x~Ȫ۹hSybOϽ+tn|*jNlf,&U=Y{OM*XeϧGlVKm+{SkCkzʺ?!pU-ߺ=>ϞG'䟾`|ֲ6  =O_4+tBN޾q!G*`1 AT٨&)Zcs׿y奇G5[WBpN.zu:3+/^UIZ!&020w&sh D@ٚ\[{'{v.Q|txcW."ɷ!?eKQnOvOX_k{1oޙyv=ޤͅ,\,oyk.C^vWFo,oUu|i=sffpOd|^?zE#̡y-7Pz+!w>>9ټA3/u(B1 0RT""P?g.r}]sYy+V&u3cG궵N#9%5 RGDBFCK(ި!$*ͦIj7BgŰ.߼z~?M).pUvm̙?sg2G?m}zVurriA:C<|̇loyR]vc4Wwl>wn!B!(-'gŷ zooQ%#`" P._~k O`RAUbW(SCsׯ< "R-?ȯoT-OIb b]ZJi䎼Ghdt$Eg[Ro5\Yϙb@>^r /r˳QL=_hmThqfhcLM3gϬ|f`?TZ,.ϲc !!5MӶXgCq IBeY;Lh{מ_7Cz_oȮonU<]4`|#1(N3M  0QKY Q\Qkyf`RFG3]B?95\)|i) h͘A3bQlFGTq FZ$濧mT?xyyڵY}qt%X5hΞ}+G/~ra@GoXCuYg~J E1YfMYkfo畍u2Xb1Ng1rXc!^Y2(yX3fs7mQԉDT6[ct]N4)qeU1z[>F|:k9YNP516ŹvUal{E欳ǘiQ/gӠ_$5$9WкN_k\::کWTQfw9u4_s'^ync\8ZAyxgH! I4r 6\C}7ڕ Oz+q'Wƣ^=བྷݸգ]CC eǃK/ںNcHbB"s)&6> i!c @q1zwh4l>FQ))d2\UMaY7:p}XM4], %DCgrXsrE$s>>4oKՍyO>݃i6V,OGBI'67N~+F BhUj`‰'(ܼvuX&6u~VIUޢwStwg{]=NMղٛ-Ð"r8*BJ1nŲ̗D~~7D!~7d ,[5]~Y6@7cLeCJm/ LIS!XmXÍ#ޭ+|t8h0ktsx0 Bh@qܽhNkN D:%X9=8 ^+h3&/mȼEQ7BR+qTr& ?>@\rjқDj˅5eQǫ+Wo+v^6i81@uyfHleG` QQ9V9֐c%<>&įYʺ8POd/ʛ2 (]nBBl1ye['6/w Z.͎`85Ym=AK'(=Pgvq8-o."a3D&VmR՘bT9 )@Sm?s/_\p{O?7ZS"ǟ|>{{/\ 5ŸzYh:H"d#"]\K@D ϻZBO~z}|Ҁq^yh{YQ/O=sfhH|Nb1 Ւ` MDɓ )7ٲ_{};[r6z3"3ENp/jĸwxP ?MÁLf)Q;z,?MVtLooUӱ$QpxgcJ,AYBJ)%E3?̬V-<% >jF~8}}͖oMgu,d %٭$ H!uTwj j'q ]")"*M7I1Zʳ_c;yz'Nҵ}`~yE @>$A9MUEDkk}u}wR?|9rdC+zO=&u@&(@ֆ۪ xcL1}&$"9>@JI:zXZX;ܔ$" EMwZ`Mhf|Wmo=zbCEs[aĐnowz?mv̠R&,1$e )0) A}E4zhM{{m{d/ V2GnޥwʲMSm"/e F¹|8qkW^@c`YCg=Eŕ W%tDc6CDg@ # 0#pThHAYkAU(O{Μ7<5=:8̷_ޓ.^{_& -Hʄ6_٬+O>چб;5@ & v8yl#}le-fQUcmZQ&E إ+xD;=[{GӠ>Qb.UU 3=fe(=}r{O{1ijiZN9-rÜ^Hܻ 0rLIdlVdh19=r/]w~/cfNH>ym=}܇2)Ab]U֩_/VC=pGGK8ʟh}0MN ):Y4}4a138 8U8wĜJR) "X5!0*M"ܴ{ L N ج%U1¢/hц,ʨZV؄Ո-+rdϤD:{xӵd?}r#271vgX,"3\4/NV7֋Ay3I _g^=#+oNXR `[NZ\¬1/r2F< m Դk ew~:}wj K*3}" ;mMHl?;<${ptڵcf^׵1DV#Dƿomz2_jcee0.KZ]]i=ͼ7"+7{<};Ѱ,zv^_|Ҡ'zn,+V_y86nnΰ,ǟx<&N1:gU` "m S޷!Zor{NX=7:9/4\%4$">HAY7Ƃ 'fV{NI,Mj K(C LNFޡ?ELi1ϜƆ&lG~a۽rtp4(ۥS[[v:Jc'u-FM*[ pW~~R$0<нm bJ) ulSQu/%J7>'ѫw^kCo8j~0z٩!2|C{bQ@kM:w{{p70msvhwEŝ% )={&cSJжmQu]¥hGSÝжhpbz_TP<ʊ97M_8l$r 3o$l.^\Y ud`%D$CdT%Ę;@ .'?>;6V3ւ]Η'V< a:o ,{l*.f˾9ubc;*!M#YEڐ:6@d;U+alݴgcrW~CҗڔTH>/]? -;ϷcYU(H?Nd]i1Xbwxӧ pv̙te6=lp~܀Ҭ³/͚Vt^KM-1˺m)TL\s̫(7SN,*Exٟns9hzyp썆upT`%f=ʵapO>pn U<^]]r+z~*%Y?J㲚eCVWA\V1&9ֳ)Ms[߻t?p`R(zO} D۷o}/}ztNy<2I\ϩO7u8Gܱcfm{#Qʸ `vg~ObQVr>05HԘPQ3͋ӡ:Ubsyo0LwD(IU Fmbbf2Z4GyŲ+u~P|8L}Ⅽy\ & `hޜ( pl߾^ <1k6(2T5F-j1rf9[{kr|}SܿiQ,`sg3b?c8LRJ^\S77RR"Lqk2/o#LUTI+ѿ֌Adg^UG8O?7q@j9`YdQ$I2B]`6xc?/rkw/:|u8&|ef t8b_Z4G=W§ݗ9u_r,sG.˝sZeU߼}ж"ΧGaVj™ugwo޾qٿş@&ϛ5M@"Kzy[M HD|~xxe1f6[.}(6gR/20;"b̊໇IGI="4hD,l:?L mU!#1֠Q:$%`eyOgGۓaoXݾ^/D~>~Vhpu`lNjD Ln"טBYgD:6[.]朱 ~գ -0_,]ZNzX`5wZ{2_Ow޿@PViSdC>6kM]!,`>gOmʜjG̒ed2)^ /} lǪ a>}w4۱bYUU(Ky]>'x4kSh*, S/=bF09˿ɏlf !lcilt6O)rِ7w*tů}ssԫHD REMnm wL' 35Z39lQ>\sc`J৷L@U3Gn#w7: wy@;3gN5M]bQ,,[[OãkZ1 ) 6PGW{O;ufo4Un ,-B HDVTO+O۔gA87B {;dZ_}-%.]ʪ)yܞܺw8ɼZ볶mfl,;-ZJhrx̴ٗ ZcYSnC+Pb.Naofh7>8ݹݶk5}w~}eLriR`dF<,3M4u9wuމk8Rb"ꕽ(d['kM'BLPU,<؏ xsֆXX#־7" td jF l8ʧX`{$}ߞw9ef|nmۈ*&$@H1Fi A+*Xg7VG/]ejhޜeܔ-~;/UQDwx}uA>hHWzN=cϝ?^tieeg|Zk˲AMW#*Mb7׋ J6.x6NzޝefcDNm6=C L 8|u U*Dks_}zk8[q֋mVxͯtZz}n"lMUU(5c<6 BB,kCk@iGfQ{n/{*meܥ*lʕ+y9nvk}Xյ1*Y~Wu#¦naߋmZY1r, V_o7rNIU@((t5W@TK9iiZβZ۶m9 r +;>c}zjߝo<{ж(6sZS`˻x04ֆ&0Q@bdYZDuΥi@Uk?qbRGZCՠW bYkaU-9q9P!hPڵr%3r͕ ݺv957FC?&)E"D"5bMVdȎcct6]ni,`ȱƯx*36n.^w"Ī)Ӯpp#LpƎ>sʳxB9YFr{ܫrK!"ZV%9 Uܮh !yo-c4ZU$SH "ubmӴmhoZnh}>}?Odg *_]7zو,, ##ZBIoi$*zU啜FkR5Vl$r\3cnCP dζZƘPfd C%\,Ӡg2c<PRPDQfPHJȂ(5 PA,nȥ#T.P0%kai.Rѝvx碖 TEBP$C`T4 jkbWs$D]hӱOT4_{]Uڝ(" **)$5ƈ(s2vDʢʨ*]^~=i [޸OyjB6@QXcPEےYX"La +ڴH1FQ렯%ޚIRd scڠL{p}ꠣ6zY 1w& 1^UUAՀtApwa) qf1H "uDhU,!"nYk'$ "@ԝz7.CĎԍ@m6"U%D1"WG9Q_uw[VЦZܷT/G°@2*&HP5 G2hLnwToMu8o,eg"43gKeRF#hZzQ%H0ˬGUx2*wB'=j%F}u$;QtLVĀ"X튴-㭰N4H >:V9:!!XC9A(xCgoA@Ց 24hw(E[5rY/zf/U]#@bմLSQnW Eqb4;W5iכ;=c'ͽmgB^7D4=Hz,P@Ȋ*v`heYOVo׷:9<ÂDsAi$((dP䰑 ̀y3S,f^y4krgyp{d%EAKBwAsCP,)"*2j Nڽ )ruPJ;QED(z` 4̎2vѨ0 8&,* (jGD:|O Yu>X.6,RJhLi6;ȲX**S2[,ɳ\  7+_rxiǍ~e!ș{+ݘ >r΍r?OD%F~ X`!W?/3GP[o#aa"8"-DaJ$Z1XfSkdڦmK ̊eͣ$&e`qzgPЭ:+,;$έED|6gWxll^6,XxHFxM?ABJjPvoUA.>!34ג?°R'нN@H4# ?s+Y Ȃp2G#o TPT #sCAyQMRmz6_ٲ[, /*mY"jRSsjeὝgq}u_w޽?t|vݛrቓv; DԤ7C^3 "$R1-$h<3[[x́ &!EmCJ)2̫EDHUIM4%($ &Y4ʅ! K9guJ)~/|E@@ i'1!!P@ETT@h(VlQATK< nU#] #9վqR7'{f572"NU DEAb+!^0(Jbβ|Xĺ$"/VCYY3m%&uS{"S9UuzgU !˲K.l|_9÷BZfQMT}_,9"i21r#ITQ#Dx8O!ӝhT%[f."/R˶6IE0 CL m$R|!aiU9`oŗaA2EѠU7'}NlZ,Dz "JݒQ@u@w & D tH ;AzOJmQfIY!PH bf %enWc^@Ţ(EQea (owp Qa>_vk^5GbѪ6Ɣ=<8jYrJ$$B*~!l8;;"_^_z{C ?^ݻbo#w5}ֱNј+kҹǞwB2‚d nO!fTzkzިE".AI* V,07X3FTcC,e΍x=L"mV:E!C$KHve$1( j  x1!^#[=54Bbey`̘~Ⱥ e@w!d,#T2h )@p("!2A,58 vُ0Xf+jFRԤDc QM!a۶ 8 kmۦ76kΚ72w>pݭ9!:6F2Yk-( AeTQDcH@ő2D;l.L,,=OTZ֡J-t^c2oJ4O|񞇟n"tIzGNM ʠ@v 8PVfKԽiqT4mzJ UD ,V G-rp BkM,Qt#䄯85{c7[GRJ`BU6#`lp79! 'k- $P!j B@%RȄsKKdlRk ^Nxzgr61*,|m:۔ ! IAbP v60(wbBQ`b=VIU@DoqJI\ͪ~ze:&mfK#`@U.p "$H-1Xkt\}$45XDX$C5>G'G#OlΜXUhh0uU~T!c 1m\6d !n(]J`1nn#c7pYҊs@@X`4]-aK!#gTMR`"(BBdpJ@(l 6qlan3K5Y@G6hЁΓ32_ag +AӈE4@C]EJ&"" % JK#K8grFb 7 HȆ$ ,F 㐱_,cBRQ*ڝ3$m4("8DdU t\Y\Aj+ *tѿ&p ,޺233# %``rEeIٛJ!$1o6MR~ hA3'z"w124杕D( t L;2UX V@F$!bS7:%VFU`4@кI)36K$)R.e~3"8\l2YYԠd.3NX ]W1D-v"VI5:"J u 5K`HQ2:P쉰LfgY `loHóʫPЮf䉭o~[O}*Ւ;TDt*݈*G G B "XYyl߻͞;"ŔDZUUG,w? 7e ꮿ@ 9{aƹ(/ZEQ;U&0̈$FXVVELTMaTzsgqx[Wƣ6d^s`;JJZCJĄ>ph%"h2f7ъlFX|yB [慓$ !9Hʉv+E$88 IBleP܂#p-*"݄trj U6m/z=\vnl(wN)T54 Kkk'7Vx~0&ҡ_@EEx~  Y0F $E:oFV-EV"Cd'%Py;}s?}:<ٰWOUa{"I t.@3)v$EołcRE'ڠ1J#"22'FªicRº8{c[UJiQ3jEF,(,mA?TG:w+[>"%J *gia[i{?:uuYrE4$+?gW>?\x`X8%ڕ^EUPԪ$"1f1=`v7X]Ofաϲs d! e[sN;B;X|{kɓk++Tq65oQ@Eot dkʌ͌9>2xqojAg9^W ;"wN!qV0Q4;Jb@$Ӎ~(GeIH,@ $T2dN6*2G;}' D$"uX ?=[T8 67eY"4r"CTJ<yk(]Xq^f5W"0ԊπS(fvpİQ:0;r>6%IE1 pգϯ>-U۾:o~՗GpWoV{21PN:U5Ɛ1eY作f"P $H*|p@r$5bĔYWu@LjAͩL7.5#`dLimۄ,cbLGjA$XILJ6- ``NI9TH˔M4RRAnf$[qQr^isT䳵6pw^asjln;\泊A#(g,{msCpc6lNCH-XIeĄ 6U+~֘m;/CA i1)/|/=1xp~U=BI||6c b9?ؾr^ERh)Lw^<.n~0!.NY2ŠDcX62zHmڡDd i@clNLΙhJ2d* K;o1DwfoՒjhuy ĿO6(%r!I1dYkԇ`ƪnc9qd L#p&rÉѡ'cRxҔtJh `eNfm/`Ir)4ζwVz\bDRRЏYfYZ a IALN+f$ !=|gP'v4KqseFvEn=#>~teO lxf(m!fYA\r79~/WN g{;~%@r.0X/g_3eB1;k:("̻֚hTWu$J1^qs:"ZM9+Q?3h⩈mT $$^m"﬷V- 4Ycޝ|u 讼c3į/-BDB# "o2QU!Ԥ"Ld ~Q@`=NȌSђQJ)(ij'-Ǣc,JQo"֘<Sc"RbRj в2K{sA]Au2mhLd/I${Ѡm Cƚ,#QF˳gúcLe!Uwp~}8v(:TE`Npq %EP%kva33v $V_]_Sխ! Ki(1zxmu땵{ϓ /۾y{\L2_l]_ h3m1@Ԧc&ʢu YA KemېA}?A:P[UK3z~by߽޺xx*h,ڎG`z&4$j, #z2;y^ 2@ gAv,Ϗ{'-Mغ|0,~t uOޟva7p;0$8")QH,۝Sq矸+ծ8jrUIE.YQ,Q)" 1Oxg{} *eQp9gkߠ增QTA4 )kKǘ4yFEJbBbQ>^gm)"*nB\ hN@q! UV(BGO_έp>k鞻Ϟ^u@RIh˵lk/^POD@%z&DxAć H6) ]][}g>:O Q#a;ѨD$lōReDVDl!Y AUEP I3;7Z)'\{ǹ5T$V{HUZ& &ф(@H i)IH P4)$-R 僣ǏFS`=t*ABI딪SS/og W+3@axgZԺ -vׯ<þYրm{o΀&L(4U*JH[rt)Jh507 jXeVdTrҌmI.3,yw˒p^;n Μbjknhc8j"J #!t8izv; T$@j@U@5xWlV֝>| .MN*4FUmW=RI@ Z(ܒ:1ͽ" a[ho8O}ݩͥ Tw4^0̧"ykY4͝|*g|3P~GU}HE7uS͠KoFow}nʷFD$&UeL *)0׾9-v9sU:$Yd2$lB2]Ό%mF&>[6LC:]j IΈ҄FPnBcHBh HR+BOToVE ju2QV>V$.^9{jX$(*!5@Z}9  (H*'L+DMD$H1@DCZ.1 ;pX {ƍť2|]gð[Ktz4m@@:2CMwUュ440'|Qh'o,П  ($>2HѤ$8D"IAbu?YGf$R $2*WfUDD DD(1P-qQ ZSL| u# P')5$i+y AQ HUYAPĚ|2s{ӖI{a|rtםw*_܅ '>g@1橝OQ@% M- YT 1&Jx Αs{Ǟ:=Mv/]㏖"jSpp|4\ͯ]S?s~mrx\AUAc)#;tl{x'ϋ Ox8_< 5I C8/+8"!J0`zYXR@)%ߨ&lP@)`uL-rfD@%h$TxX-l@E( DY%ܳ(ZuPPj'KU Wu*ヽ?ܣ׮~Dì(IbLuH|PO(@lsVW.[\29"$F1YG^m},훻X3ib6;'Qfheofz8u^GXEs e!$@&[*BLfl ATZ2g8&:(hcK[!sƒQBcT#Def2""*0di 0&c T Di@4TPU@5i$J` h tH5OO3mURFd,5uaawq}ZMkJJ#!}QP$ q$!̷]hR7ߋ12[Q;.o~1Vغ:6::[<m_۞[X*RWF`i8(r3|}yzZlv\5ҵCe{xJ_ǣu *#j&uJ d(yi!'B )HDjRL(&$$6$ȢcTRXdH٨Zۄ*D @SIhg $ TS"&Dm3@|ޯL:@R&E2ߪp YaرZUUQU?nxqĎDR I**M@"* Xge9d T5i$I&p¹wnjNoDz po{>:>::@͕xShz[Y-Nu[\LGMhݎ5*YKHvK޲! *ز6H$"R7YؔbJ%$A2N5Q  1DiuYT2K,jRRLE%xRJ "AS? A H|BR⤬ :AKJ ( JZU 4*bwc+-ꆤ̭͐L~_O$T0DkdZ%QD$VUVY$6&%1hb$FY B ݲ[oogEQ? ܵ:>]ѵYfF.t‘)͍?tKjX'wf2{eqڮ$!c #01;GҤamvAm q'dcQO. ^/#URˡ@k$- c"UZFH$a$E:Vg,6/2Cw*:*8A#QRH!L;Yjub&b"VUH I1VN j2xk m6JQޠVbN6cf^:jT4ft'VYT)WHFIH:x:nR6g/_x1cɟq_O> dAwӿwtQ'`J9c-1$Q3}TվK맧鼪}Ɛ@wn.]y㲍ӈ"F(ZɛnUй~^Wɾ>\v6DL$Q)(IUGV11$JRXR*&_()1DѴ  Үˋ,c!4La/ HD ^WQAtxZՉ%!5*"&C29Vv;% Ŕ$Ct;G7ES57=|RhzKD}(ķT9?5HcVDxs@nK}oz ӛpOQD]cJ!RDd$_*( (9W(cRUEkr""3u%gT}N *J;Ѱ! 0EE@k$$"b&fD""R$l\{.k7(j{ |Dpf*Dֻd c9z6o Ϗ~{s D=J"$::I&؄jr7徢ɌS~TSsDD@Dҏ?#3!}o_/<ǔ1F!N7LEY\ٵE^ݾw|%@lSIVl f\pKnW-5%,;O}#L(ܳlm P}r'$PGΙ۝RB"$"DLxGw \(b+GM%H+N""IDC4yha4Q8t'_ޅ\IB.~CKWW6ϰɓ EE(\]ѱ_K$1Ao8tG%P7_k@U Gh^gFj m*f0y\)$I*9@ID% p[Db$d9`ˌKmAB qO}2 U tuZ+(\u?}}{_OkKȇ)J]b1ۻ١+:ݙ.0{OfNDQϦ*1fFӿ74/;-Hs_j*! "RWF,s}| 3k#bDTBLI%$vr.|uw«9c*jHoATML*(he$\\rMMI@RBj0/X+|eLYj`-";HH*U$krFE@Ҽ_~uI'UP"eQ9kr1֔B4+:)-6L;x1˗6~rkcOyK;~/d Q- ~qBx`]&1)HBM60F$ KD$E>)gO<@c+TEEШ˪*1"ٵ+7b1ßxjNe@"2H C 1"#56Rr[>Ai:sk1&v$-?ٱ몮x`tjI=<̄dFti^nҵ] $c{&Q2θ;7CJ+˃fQ'vcW9c&j[BreDm+bM!2IADTaWrlBZ4x0 apAC2F"DL!T>DU4QuUo3!oN}/^KJq<Nξw/̈́YTT]mXEH!PuNQT:fl3 "@&^8IK|ާ/]K)eyͯ>u|/؇8[$k" ae#)"[r~9xwljiؘ!8s7(px|ox/CzCONgkkm);uz蹽1n_{><;Q 0sg x4艂R'Ϧ(b2>*Z3ӺL(ں.#D Dg)&JB"s],fM(ĘdP zJ]scUQYڐEXÒpXh4hU-ȉV+ElT1Q@"d`92) % R,F2KqӸDh% КwH"=aKXj huv7Xl~PLE]MI՚l6Wd|ܙܚnYt W*4MrΟ9ujs=p֩O} #rlyixx|pݼYͫ4_q_.)ͧ v}1)wlyْ)@ŒQ˔jrTUēZRfL%v^8CRn?hҹ~jClDDtLa")$t l[ T 8е@D*!&bD$Qb$13#  )%H$ PN`MJbDW$?8Żѩހ@b!sݧTN2CLblX " @d`Ԣ,擽O"ϫy^j1uUUu)^peD9+i<;Rd:yfg䓏k Υx]ZOeQͷOu? aͽNΟM0>>ΜIY=$6D&Ps7U&$1e&$U9B.D ˠFUB'}hrf/wHLDF ISp Z`RJMCeZȌ9Ơ41=a#)ILE@E$cHDU[J0%I-6N$?,|Ww ``x{y"ZvHbUö`yUU1F!+3cd/%n1j)&P6,KC11ū׮NJ\E =ek T9}癭3aGG]}o)+<^Zͻ"&By2}5uc\Sp^l旖:Y7ߙŀrGສ\fI)IXʀpJs$TYZ"^ˌ! 1 i) j!!Y֮y^̘ڛֆ T%H$61.3}î$Xp$!VP'DVl`1$$JEjDfkv?צCvZwl qabV0)VL-,0QF IPqIQ^'Ȥ.Hk+!yA7ιo^6L湗szm-QXٳby] ;ΔzAΑAtl +,+2k漺v0e`aB͌F̊FUBFnmqQ4-jb˓OH9VșrFȒDG,yU}ų3֟7Z $o r I_4Ia*/rD@l >5͂ !8kWVE.>^h<ٓ$3Ϫz6-fgE="gLDڣws;(-Z4V[3o g-n'4 QTQ\{DDu./Q | Ea`%Qѷw掘),HLs` {әeAB$DRW(#-IEXT4>;&$V 5 E"r_ ؍W7>.na(8;EH;.sAjV)Ec\ĎDŽXvJcmQ ,ysc('Vͽs+up6,Ff7OiJ>y'`,OFbύkd.0̃|_G3'<<w&%xEVZ{~Ƌ 2;kb  Q]c'~KEW!g3FbQ}fq* (Ǩ9#Q}1Dppt0o JrZ1Dt6*D H$2)Ʀa6d3fl HԤDdcP%ybA߄ԣ_QyX&e=goFդWr **dHDe5ȍFd&V"   RVt'ǓfY\Q^؈afY{6DOAov^N'&t;juQ51EU`Ha%gh2'6&c(:|?'33`hڰe"J &1DUG4AY;{eh& "D0]}ܙ.:j(R2qq4!QLm@M+FԂ}5F1 (@RTH "m+1V% P^ BM HUs{_Xbq%W!5v(* S 'f#6se',j=+`#\5S'/|uBHAF .J oܼ9OEȨ9D/:_ *$"C [fd) 1& Tպi)`\:ִZcD"jf3JFSǰdT\ j)UDd,Al%[2Q%!2PD)I "[,JAQA@PQEHDDY$$QRA";g%S?8j''|p?>0DYJ1yYc|oFI!*" -fΕ"@GdF.J6 r 3xI,KYWz瞿)KQFBUIi\7:8s{4t^/aBk%J]5_/=S{{u88Q BnP`uͿhy!zv ֺDM1ФͬaSbCf@Ƥn{<5i 1*'Iꈔy|dEN1zJ'`Ѡ&!IRKhbU&U6Dj@EZ5 fI4&IQPIu'NrnCdV7IXEQH$AhL+ˉm\>[O'%+b4>S;D jHIR Tד, ѳT%@ (2/Du4XND,  +E}jLǞ,CwI~^EkQELdrsxxrjuXsDhcIQ]ޙ͛KO?;x"Һy܂~c @xY{m$!4B,O>x{{ qF6(s|*H,ͬb*lMa']9Ib(6!JI6US'e I@E1gK 82' QiN$)E QBH)P!'I "6McL13r4>{x66㪪4 ,s2l:Gct:͋Z_߸ok>B/{MAGujb^7+o>=ē/q=}o%ye@Q@A )%J3@Щ'qzyiq<;baL9ڜp*1F&ΘR4Oh(BI=Vl0Yd"$TT)ee< Hi Y$*3BbPDV$Uec4USBLΜw{*ϗ`gחm +x+d9hE@A 8_$ź*;U, $Fl#z4eY}X,̹rЫ}#*:p{<'^KW5)&lrᙕAtERv;=v"7*CZeh4ٹڵkl:}>-?NeTk"&@A|N\ec4@,Vt|i`yIvec-j# Nd!8IL ADre"'hR%SBTH[PI X'P`$5@c=36'c[{J*@hPQc)Acm1\FK^UEQzDh scCcSk4Hlfy' 13[ @ɅR lYy3b^ 3gG_}ΟwgAt5WƊ+hQ߳l4!V$P\*A"/j_!c, eEO)YkC7wٍiw|D5pb!gcH!s6jR%TYSFuHQ)QcPD9$Y$a L $ ɱSPT`-D1JkT,v;z 3)i@P(uE&3H$^D yC>51U42"dj]޹Spd]Ȁ)%V@H7h |>nlUqy2B5=8D4+ky133MN}d<W}  {2䅋}&^'duB MJ`e1@l .Nkc26#DJftᐉލO}_D_}AU2UI)Һ,sTι ɚ2Kl:NYf:Y)&2с+b q%6•22U)D!S" 1CҊBH1Zju5F(,u{XJQ+@٤ vV@\1E2NC b1֮20"b_T:snyexܙS aov|Stn8놉vfb:hRhE+㬱VQ<,/9*ek-iWO֦KC|awp΍F#p8<::*",cBhESY{NKhr]Y'Wf>#yt|\Hq:?"EٰS9snKifiw$<ƺ4ǣ$`P>j gdz7߽v~t]7Ị'.ٸu1;!HSmjamz֭CDd2 QRQVVEUb' 1j "*M cld͌4Πe& 4M!*J@B!(ՊI+FMId.F:E+643\|iuå^q4u3`6\|eبۜMբٝ,X؊q}Kyd>YX3.&dYFM폎`t}8sLY9׎kǷ*FlҌR.VXLn3H6s5.!eb)[ϠUo!2%%I)Diu"EQ &HIZܨ-[`J$Z lvWV !B;ay0joqofEY6ݜ<|x|0=کgGd/Vu3gu=:>>:ogO]Yi=Z9<ϦJ27&ʒsxoww}} &s z'ӊ ohohJoGњ׽/#Fo6ډ97N񃃃lvڵիWv^:\Z:s=#??w{=uMb CH.ƒɭ1J5Rltw&6ybs#XT%J4H ,<-'*$jkhTVAT҉vRnFL p@cͥ٘̊,@qaxpr8xM)fxX2kĻ.u:F*>蔑vͥ]繰:a:P㥥r$&<缰DhBd^7wbخ/ 챯׮ff0Дu&VEk7f}os9M!>GM.->7^햠 h4˿qq1f2,o/--=wg}ǯ]/\__?z… 1Ʒ4DjmbΘ rYrr$eU_ L'3)eѮwPĤVYT'Ep!m Z08jRZ[HZQyp 9 z 4 %_]IC% Kaw>1Ս{w:'Uvo9;g,~4w:q*'魪5*d5^Su#aN-//בE=NʬؽMwv}7|v0xn7~d6kZoX?5F(Շ֟֙}s>h} _y{676}dvhXܸqZ{˗/Շ/7Μ9c7C!,[0/D$MeoUwURljfv<߾9F"1mGUhʀ@%*('HB?"$D]*CrARd@F f\DƇ&FV|eݤ}F%OYKEAν. zd"CsIм}U)m {@Ķ+_ԧ>uʕ/| "4LD̙3gWtzc@Ϝ94͕+W3g}}cov/d Ē3% $WtYeV~v4*A%@(!ED:HeL) kl]'mqAD]EP܉)X1ںr]ry%Dft$H@!,7JwٚB5ZŮ:glBBZ7۞!i%&1EVy^059é? rZC !JC FB+B& e3 (=oy.FHՄfH7S l]l^jALK̇./fkeǐ%a`Y):c=iNY.YBUڇgޠgk??cye\Z.VwlܼqsVY޵wr\b1V3$lKSd崠Qpjc饧+8./EQꩧN>1N{^盛ܹs ˧O>|QW^]ZZoN~'qҥji -!#EQ4ĖQM7GG7{yЙATٚah~v/h1m*ĺ- 8 T Z7Pk$N01Eӽk05WӀBX*;54;{C-.c8 TTGϞ;Μ>{ecj4LFt_uI;kN\ȹ)sw 0Y @Q k qY,s/}Vڽt1f_j /7<{+++z׻Bwy2, ښf=O?""/^l)ToI&7i)8[ke`z"R8 F Wkr碯[3_޻"dYq5{^xcH'H Cc9LJ[KNqo61Ƹq̙__:8!"bֶ@kkk?1f<3bޏd2ʲr<Ϗ_8xx8L:=whW5%a 2C5d*@)YWL1/;K)Ej]TP1JĤJHYU.7 1U~}ueyvS/eY,PCƬhgvvˆ0#jHGDpYg93'Gӷ?3B :,ũox̥뼚#OjL*X<@$BTQJH%%|y:UX+"/\fc_R; 1)&bZ,:eg&Y)Wpt>yG^|_wωgbC1u-1K/|0($%ғ(2z^Or_񪲹X,b;;;KKK?x?t~LNw8SO=!u6̙3ι,[XQ0dih2f˄cbNejkuCwݣ7llh63e򸹺"m-3XJa%gaqx깗vnwܴfo-%MA"㘘 q|SRg]`Ϧ`MMz -fn.h^>:9Jә=f@D( L_-n2ƜIJ0Ż_'tʶ&T>0Yuc0 Yn@ʤJ1'?W |\ o'rY^^[m)㷽5Fۗ'^ݎUͲ-]p%"+++, [k?S+PqWJv?OVUuˏ>ؕ+W^z=EvA) !g!TpTbI!de#_'~07x䑯?Y3kk̰,79cmJ;g{g`4{vh|m^9"`U_Ədܧw6We@@h u|z|$Y>:r\,5Zi]j^u;W6V:. EY|:G+?w:أ"U^PQ7*Hy992,RUfDMwv&FRCz]YY?w{ο*| m06}])ʼn|>{l9gt:֘6%_6}swy} xrڵl-]E [g?Vu7WwU7z>][^uAkMV,!Q6Mk297`6~F-9ѯ߿6Zj?>w̒&WWu a5۴n+9}zQ E}{>pxt|ATt2`"#@R}1WN^  /]JA"j@ funֵUu{BNmrUIש!w@Кt~Ww"z,˳gEʲt6˜sY+Mްt޽v\7 }Œ_JV?\#_WUl( VV;LDTDiuybiim?-ajdZX?Sq}cPp> |]l$fٞTndoWR* /> Kn>z `K[w}\!6q`w@^ luYz1䜷"^Ec5LD"ŔBeɭ@ȫ5k!BY[[[oEU6RD QDv Ć$B}T~46+K[AJӧ2XM3WΦ|320<.h-cӯw|٬۱֛&%uR IA <5`;p`R\~ArRUk?y}{ss[5ޕ+W}=ΈII&_l]^VUssvg<\]:&~wēĆiˆHQUP!)g_s ^:Zi-+:ͺn[޷Wxcs3R- Ķ j ƜD.̺5=sl۱9 M4txɹ|X^X*~wWMPzs {β?Ƽx;.H}$&IT}-b&#N"QCJ1A&x0gYƣ(+ΰ;Ұ\~AHHH)zSjqǩ3ׯo/”b"y]#>K|zw!$%VAQ *>1eQv; >v+zBUש@{zBw-i(Ξ= )lFD̄l6PUU1(˒C['>C÷p͉1Fmf#Ncu@u:LJIDRT @`]fo?/>g%#S8/|wߙLө͕H).C_ }fTQ}0{pPyF)*h-fM[8dj$IƄEQ > z|tt>_wnoxugǞ&k*"|Q^Ώ vׯLGB c>G,OŒFXh!RzXfEI =UETd-|.^_? Q--TuӬYJiccԩS>K/Wշ~WVV@U'Iq:%"p=4`0X[[M,^m'xQ$ӉsEB GGG7cSkhHA* E3,s@"U?d4\&L7nnGNٷfCnZboDצʃ?49cM/ܘY]1%&+*ӝڠqg)(Bc3M3o{ϻl Oj~)9~uo(~>W[O={ MǘLJBD"@DN,n4Ȳ57ˆxr4ی 6wBy>7 _{W_z9ކt"T36~QUU!ӧOח{ի- ʲ<>>ǣhooouuIV>{?s(|)Oh4:l5l7w{ў S"ز(ƽpǯxb1IoT3ƦO(+k[4[^;u-{u\3. L/]{q}ko\l+i${?ρ-G=Glg?O>5IRPPڭ@y߹;/9(nn-mGfy9aJm `™ӝEhGFjN*(^o^s)TR͟|~o+*A$_u@?e_Cvvk~ݶo4P17og?iU5{iii4~wy~ҥh}ҥ|_YY1QJIDכ?S?So\>p!$juEኜ [Hpu)x^IckuEU\It)ੵάnSvo$M>?=zQ6h # feQQ !5O]}8KQb*IEe4RK/x:>?̓:{=`y"/ Ht{ȧ߱wYSD%EĈ TBJJPBR ʩlɼYƠѾDh}}-.BD֮]VEe)ƍگ|+_y衇wyg,WVVaӹvg?YD|~GVWVZ{R;{lYoDڌ!Lnkm}MHUSxxҍ-P_xәղ[d]t8ڼklzj׾vx]$ fi8\v>1+ܩËw/錰l B&˗7UAc}'cR?/>z v?O]~y./!Ѩ UHEb ֚,4ƤRjJ۬j2÷o-~GON >i-:Xں뮻~{et??ʼuk-5MH+++=K^s=.\H)[k`]|rUUfka@zbP}R#fl h2Mh).77 K[O>}M\={~N>O>,T,M2/px;*u4_^*V'Oت*ҵͥ }2~GW~!PdEQ&/N iV1I"" ʠA514 I[0 TF{y&3k\,diii>֨e%{キ5M=GJY-|}꺮零~`Փ'(2Tb&[Sk G[kY.Sayyw}P%[BrwHޣͦ*Ikˣx|~hjEJHG,3K+gΝ[6K5%\T2i8\C>LS3&DehFUACc$Cwwשٵk^q"ۉŋ=" ۤh4:<<3sJ;4u:4 (w[]YIARYa&Niyu:9G?!"Ғ˲,Zeܶ&آ_ʵ }WƘvyM{=L% ( 0-*GDyEGi<NǓݥ͋s0lwX^ Lb#wY֍4qfuumJ^lr<9:.F[~X, Vࠛ7}nNe\QG?W^$ h#k/<<fl6*z?wT^vβl0ܸqcss}$BB{{{|қťKVV/^*vg>zqRbV?{fQ݋v:stMR!E2&8~|66M\@ B(09j43Q0ΧwzWԪZoBȽ!OPe Ӟ`p)I@답˞7~޺8iNNNށP Nehi!(r)Fpֆݶ5(Ŷ^BMM4sDh$Y3('x^C E*1ȑ;jT82]Sa5$a?ۨMfiwBw*yI ãv8  jSB|~$1tڵ,r1F)nwޝk5RQkβ,ٹ?? |gI4/tN=s, BoP@0uh6p)|8&>?xb{Ţ0=xtfjX,*}MBҽl/2,I,C#PLϷ$N;*F+CB5P6uJeiZ]Zh5x~뎍#A@aNLڎLZ *k-[ BˈBB JIꋋ˖Gܿ}[R Ek]^«Kʁ6Nv* wMcGP4Yl1'!DS%3Dу=#\x# ];=hGuaU(TY(e)_oF}dZ)IŝWm㬭ȲaΌ wv{zE}-T* svZsi.V 6mATPG2Уf&{"pOg t$6 D1OsyBPJ}Rjcz?===::rBX(v}7\}5IcroeޓHVFq)Ynr /4.`!PN8kݿAt;: J%TVRt3a>~=~퍯8n}S#:.Al!D2vNgfgBPNmD֢+ i[ou䔊ꝺB2ccXJ  cDiebޫ@}/%"j3_vo׎VZI8X,u,,iU J4:Z/3,߇Z8AJl"T9=Q8VD=! W\q$ 07y7;;!n޼yppb:sx{._9? CN} 24C'ĀNbJYL8i&;mVH䲎w /NMe\.yIu~A/}'m0S*+y7:D 5vfzZNHϹտ8]vRE3 |c2"jԓޮ5ˢ8lq9V$DRl2AgAڼeKQsvj|~\)(ku7J{Y'67n9$k׮et*}]&ka,dh9EfJwY 75Nβk*]z[K%铿3W 6ܹ^AΓ###JkB77A`1۷oڵ Ob$$dqyDN E$)Fr@OWǓVf}.͈f9 T;c}43cگܽhmtSoFJ@9 !jH&"fjk uPOy_JQزDJQ:#Jְ!Qʹ{N=0 D~o=gyy=%XņWW-[>9={**DvNlgݪ}]69_Ro޽O/|ӫ/NO=G[d"Y5kJm{{93sv/N[׾|_]~Q20r~O1f{$ֹ/~w77 "266].o֟z|s;q"q~nVFEY;vy]#QH@3&i73ޙ:G5| /|ߺ}B˘(𲤕fZ& PϵV;{^@ %vP( ^qW ْi B$bu{YUrTL}#$k\dQi͡睻eK쮔'nݼapppnvA ϕ(PlX?jη 0R ʝfVڈkE4;v\f,jk#-o[.6}յ)џ{t!ht{*y$ADVXN??۱c?u˖-+VkϞ=JK/tӥR)Ͳ,=tI+|v9Gs✳^S* jjW/~+: BO9gfǧeW.k'YDH٦!grYAv~4J9GΖ_2>.$qgİZ=zJ^T_Oau߹}Ƣvq{qj|/zz63GF֭[j4@,@w  $nAl1uv2Sްa}v)k] rѥzY"s|pמldu8 ޷o_TJd͚5Q@TJdg}yPW8ckmX|߰\D9pDi&lz{e=_{x"f_,Y]H9o_+6vОᖻN/**d-J{B݃SyGta@881oK ݽe(bR,  G7͏::)$כ~f* !JrkWM:IP"jS]9!)+P2-lI֔*%$HR&-NՔ*@CG]vM&s;‹.v6ѾFfy/~㭚+bO+WضmyR)(F$B\.[Z/9slV'PQ@A)BS"".4wǶ=HY^3fp̊ Thb;8.uY6`2 biƟkfň-? ;兊ɮ!WWI۲y:H dq̷ba.^W@:V׿lthp W_mwY@‚1YT0eVNK6g&9za!d6 HVR@j>{(R9v}h`/.W/"xucmFHP@u-߲nۼ2h:y^^4Z[kj6J>f~,aRyHE]٩v=ہPjX$"C|XcT4K,#SQI]go{YO;bPƂ=/i  } r,S @iJ _|35B]*^psR%l6VZ6[ޮ$n'FTB/+GnvrK#2*9DPNX4˺mc[) aDPkn>k7:+ZOmrā Q柸'@^& 0`<n)AFQIў=&R@Ybw·Ӄ5f<\ H#Q [@E20z* ˷n2I @]hT3 !EElQLHJ mL`OAYtSꪠ.fjԛUgzF)4;ue$s"Qi !;zŎB<6mW+Is6@ yMgGbtE\DcDJB]C`X('xt'[`iFWkeyNL-CDQUB" DFxJe, 3tR)M:~qj9F`<<ycf!%عeVr vP)џb @1(N'6<C* v` oW6i89}w.S)t ׇ 3%qZ*z Da}bXXn,*{dM;+2Zl6U\:J"RR*OH4u#^)Oy$3+c:##7oOy"!,qV0Q`V1Kc5N$'Ó_uiO-P$IfRVI(rZ- j5g|hZsssFcŊy[Ad$fVGPok$;IU" }dP,@^E eiI*l70 (Jа!@@@8&!;ggfFF7ʈX{!Uq&s:*j!*(9'}=}=F]>wϫ^߹K_;Ͻ7[J_ix˪%owlH{ mX(?ء:+Dcvs\~ sprY;˶t3g y h庳Kai5axD$ӟUr*`k^)E{Aә!Du,,,Z-D,Wi'I244T.h=4 W?yĺMkSf""; >ϱu k%B"A 42#ޜ3ךۖ48 9<0gtZȡfqiKNچSEL!Q78PTQZH;P~0ĉjdɭ7W1޸ s5}Z캑7#c:—ߺo}D+R̒9JB8c{ Qh~vˆ- dsS 3#cZRx/,N  od~j}=BPgggRZm6VɜJkʕ}}* {~o}{岾B6kMD"@ UXBvyk,( HL"l[ 5$PHb Y8tKDd윀$I]08!nI;c/:alaͨI`=<4U.ްLBZћf,dRB$ Ieh߿z/:e"[N}!˒$9nC} T=:z՛NT@Dر 3N8"/ R9CjUȯVvNjYI,j\Fڋ@;TfXD'"$, ,"_+/JR+Ux$C P2e`Dٵs LHdPbhdΐN>0>7z镽cN'׾5ӚM_:= Q_8ATP[fZBpǶw9ǡ_P>u+WdYdq·FBWfG"J9݃,OSYmۄYy1Z$Baݺuk֬+J X)"v=>>aÆѣkfMS$$bBAd Xq~Ѐ3"@G6Ub@@TˈТJ)) DrY4qa)8]g¢[){ǶG_|6iسciǿַ/Íx!r貾ѡe}Ƨ6\rqR:R2^XYy@ݎ;Qxƾ2%뗧-=YZ \06:v·l[Eׯ{/*dȏA馛^*rDi6\EX"OWZR&O"G _LO۳YqZ =azlʄgc=flDO[5IIn { Ŋ bU #3uC9zn!tٰn]#~N@e˗|yzُ"DZ~7p?ek׮<~.J< `,3Yc`)5mI"/};_jvs:R348fժV3I$ND 29EVPUܽ:9Κ#F$B|P LD  AJ" 2@'#"ŎѯBeE*[-;kl)-,N+@ jg㇏T4K>P{v YzU/~ Ჵ <"3^73:|t.hiQk  $A: Zgwv=lvlZg4 9|jMA.syُ e;/w޿˿?~\uUsypEQ\n6Zuǻv:묳 ̣==}s?яn۶~7A̟U$ (kvC 0 kD(Lh 0E$Y*A0!0D fP!0y !s 7r[طb'P,)JI&_a̔> MMoqGHo8'6# 0)fةvP }T\m߻9m}#v}`1aDZ!fL@*,5"݅d|5]l$ rS\>Sa8==~<"u]7xW_=553Z\}nvvTZ>6EG28 ضmg?Y"[n喏~#~U, /5w"Zg\#5t^ ##aR(l3:a ILUgXDp"α3+ʅn5_ux|5CӐ(utA4V$IؘD+1֤TT"cM2O}4fZ /Z{+{6=bj-N^ŝk_|$|y: b[Z>:jlX <V֜w9# 8DCP^Utw:u} }Oi~CzQۿ۳:X,\}9M0^>s#Yɝhz׻v~6oկ~K_~_ yY z>\Y%RyZ P9kPASADTepB&RӴm ZD^m3h B Ȁ=G=7u`yؙB#CL\Bb)DYҌ ƂMęM6똴izqOWb6_vمQwp׽3 :m_46b^F^ګ/|vώ%M!s'>bƀH·߷jHh#۷K-~j*E@HʷrfмI?8EOK/|ѣG%<'GQ^/9EW,r|CMx%\[0̋,%k_K^򒗼%wqG^C"8>'-EgȓR18rb$A6< B6$j*u dIG=[3A[LF:21Y鹙sfK":#cNZ,Mp)BMCrle.\#]xW%ͺ3)rdMos?}7  Q 00=:6'ɒLFAFnwR2*!pҨj/Yяj|&]Omo{sܞb=]]f}4}? ¼|oΝ/~~+й]:5{' v%X+IR'^]Lہ HfOP!F,@$ 0b,<HN-HDt,C1MW\9ξ_vu4A O{YMGg@-sd|B+GˊŝQ Y0UC~+7ر s}q|!p'vٲ;wJ~zc 3 3wɣVS V4F$P^>)va8,D>'8 @.Q˴S bjH @1f'.@)E ==1ۜoy}zy7 tICBq\R2 `- 8BBȘb֘[,m.4nkXjaPw>߿}}vd:@DyBٌ9|/<YeE[Vڸ)qf]"3~$T_yKNСC{^.iժU]]]yL[({]w1 4#/yy{~WvӜlg Ij3AT3Y.aLQl]8f"!0$&v|',$J ՀQiiR͞15j= [N @;mf)՝f F k:8 AT}yz֨s'ThW R8:e;5yNaپSa?) ®*@a?9OE<iyď.p?OpjZ$R_9{D|)U27B`wuQKK?ӄ';hrٜ C; 6Q^ 9uW|7KܯvW"^qr^ ΁vwQuc;{~<SNAƈ",T[ j/?,*x kʄ70 U˶Ox3g = @y`p) OKYbN3a -y8mHM:}˿IN ߵלA-tKrOU/"8m3U@c1D&&y5Ow?@CF8Ӑ,@gA8-(s`jB1f ľ/60;ȷ}Y"\5朵,I's‹Mx{Lw5 Nߞhf4HQc4ѩۓ訤z|sF@8VOw?)NB` ^;aAz}@T?^j5@^/]4N̊c|???(IPW]x"h9paLja)pj lMg F.;`z; Bg="[p_Öe :МTWuA׼&x4 sζ:Ӟ[ΑwsT y0p ΀s2v9nz=1Ӂg aJл fAe=j(C܄? {uf@"B0L;_:=]h Ӱ6$i^ϡ[F~Xa7 q  ~.E\0Yx&C /nL♇&>}[Y[!*0#T!!/?vRyL9idk7 qlH!1P膙mЙ5x~xV02;woLoP{!Sj@&`Q[|W>/׬hoDql,4:Ҋ!1@:L=[_{L~":g&3(@8W9^^Az;|OSB kPXI3IpNZ".Udw̭|y꫁>\t-ؼf -r85W>z?n/<%<3bOs vTarߜxl²uc| uhKBb>& 9?#O03'~rL H>5MWk͛z &PZujW%-8ES{jOEւ\t&)uekt;tz8tjٟD@8{< JAT-B8v~do9>~.<4UσMy@$$N93?{8yGmI)up)xEDÀ/} (/ BΫA^J`h@i=OsO<'"CXdNk 1o dè4FҕHLQQ*?V  8M`Ǹ#G*eH h "@sB#iz [ZiOAyt}QsE;?,X`>iYg8g AG0/CӘie)o_0*A,,"3{fw}t~7 tWL)@@ , g8~<y0/0 m^_ /햽C1v aƾOG^{bgGHJ 8_1Fv-V=ӋG߷W㾊"O[Q"@TzF*|pqxuO0̐{$WУ=sktp+n,5 \*aF pzgDXT> 0$ל|EܙW+_=k<I"/2`@q I7ZFg4~q Z. ` X Ɨ0)lz{ ~FYx-]`O@k$6{4qq۬ܺ욟? 1XZhwbBRo4U_ft/Cם'ި>o`Yֹg/4_Ab 3yPoUKvxDێ&=^(i0u;?FR:8}`Ǿ_߳˺m,}^D-B*gҒfU_;sk/nWzz.4*HVvO9L<+?d,~%_]2+nû?`\ڲj;,t[댃qj(*3/:?;cQ=/T[>w ni|m{%<)?m,gTY!߾s{𲞮Ë׷[7z`:x`[ab0'E֯/\WsQז_wvS#2!6:zh~ݎI`׋0an饗_,"(QmbOx>;}:OCƝ{xv'I -|v051AWeF=Vg gYvŷ߿wnby^b@Ӆ?ݒ|vjc<+z6><>7ᕾ9fAyzWxor觜 q2qR)2h]j[ {w\9.wE;/p‰tkD6Fn֭~^dufҿ܁#:!A%*z?WVYV [VKo 4} m"U[w&«~l||Lq~̍\Xecq3.nyoU}οwgT\0Cl\r4`C_Ds^\2Z6`x`Gַ˯{cؽP V%r8R^Uib2}ߔ{xEC! 165::ŞPud׃Wx&Omx7i|} ODY_Tsiz%߲߾%{UvOLo_g~ѭ޿7"/|S{M ޯn^#6.^p/ 0 ,X3.,,d {F;/KfiFJO3@8 0}KghoW1.0? Ty˻/ WJ[_K_zbLgo~ u½eT†8pG3>@Y!λݥD}x:՗MOζ^@/Ž?;J^~|b/94wW][67Ķ񜳢m7Tz{XVv6[W\1oO޼!ڿom3@a`+Xw::g|z @N/x[^~o|[}ίEG /<ÿlׯ;wPAtbaß"Z'nW!nڴZ7",69\9#M~_}ks6Ͼm"y:K#^{=5PgZG'`8ᦐDcG'IwF'J\(̩Mg _p}7(+-H p^hMBk($Ϯ/wr?/C[3F;t#,cf" kӁu@G7{/8Ƌ&g7_-:6#%+JP8 6 =g~Wr̊=`DP'l|މ-!F:,'|}Y9EsXztq^uIѭl':`ae0+Ԫk`@-*Ww~ tC5C@05jUw GFpf`?{Sl''r/9?6NҞ*l%˵ؔA-D1I,n$z7 v@/8{pIX*Bi&0ezo=$/('W\uȺo|gh?_Ȗ , &&~ǝ;nzb}E[i, K*c.q(,-Y9xB:p2D|?t:/yK`0*{i\gh/sιJCb ޅco}ӟvtMMǭf~*^+&ڗNZ^=Z}[MȱIP4,Ϛp۠DzÐpůC",椇 8Uy'8N}9!ore|WCv_iZ߼ ׿wf8ttu*e*6׾o?3oPJf(T*PBYZA@yס|L"v.ά>ONjc9eف4?S~J!hBz`8A)M '_a8zrrKM.SMIOE}tքJ}>e}TO7MzŒ'[!8Yv(~NJOXN"}^b屁T@Ox _ӳ׮ܸbn~ ̹U*nvOKG7܆)a}L ץEC;kWI|8q", W! my2 qÉIx$N=FG(@|~H' _tni8qO-+o?kgg, <|nf/زvGj9ȧx&Hޫbu;MAD5-ց0+sl@K6 ߆`N:O>@ #`앿wF͞=?@DW~;휚O|;VU`|n'Fz߼|#xoTdc~HQ9Rϻ,AؙOj:SJKSB+c [`PܷӬ³ " ۮJ÷ɩ|@!9?}(Y{q-_;yNb8 {z[%x ,ĀM͇v&?~g ILa7}4<wF^W\֑V? I KR2CT:vP.S RIA=?I? X `vqG㇏ n-ΚY$JDʃ G 5jB2ΒW% = adm'm ff>鉹d "e1uu!lcaE61L|RT+=9C ~PaFe^1Lq 4-6#a|v@RJ*(Ф򔯴VR 4!R@(̹iى1&IkMfF8ĝlqalZ-ڧL$f,rRSYGc4Z*QVY9[i-T+pvğ~}o|Vf~ @IJl]:Rk4'6lܸu sڳoCY]-h[ }EBfkCLT)0,3DP*"Q+Hicy95gS zn xd泶i$.c>ZDǮ˯F:՞1`8c"|zyC)Pݕ\m>!Vˆ Ad54ԻܫKl3G ''ރYD!"؈W]AY+qBRX ̑EhD "EyR @H  !;ve&c,Lfs&K=?$FZv83SWZ96xzfn)@HnK =I4I^ZtIz4u#ݽQ,,4TX+v]3R,DN( m.K*}[elpҘT{jƭ1!yvkܞM:!TV,$Gdoٟ?|:X 8 Uf<N\ i6Vy-[vZ={yZ[fX\L )ςhBI:iF9(,~ŝVUgIn_+UoXpiVj/{}Ф\` :z\a@$۰j s7~zˆMH )rIIpt/u6[b RIWXBD=O+D@Ĥ&t< J7[ٹ$kuUPfybn> }b;,* *W{G[͖烧T(T*8C1"tB6?b͹'(ĥT^jKw87Qag> |j=afzXR64{a>ٿ82U2S0)%~ͻ=WM‚\ #a1y#HiU wq~ûfodڵCCef͜"s\5+’5tbuxdζ}ȥ8z|G^r *gʼn!y8@ȰAfa2T߽&\jw+}}۷7is6Vc3B,{v]ށN> Bclnf&ی;99ǩhp+]=bC+?}s. BwmVZ+"@DK wRaj,M(*s.CYf2Sto= /ܿgh[>OTiYhZdYfaO{{"/L9 牰&/$.YG@?M .߱gBvԿoqwM.^J^fE4# "ǒS#RIڙmO7kN CDe,;cagYa "ȁ:Q2 a ~Uwoe/3+̅bQ+"1t8v! 'ҹE$ID"ʍ? Kb:#\qљf4s`9ƷJ얎"]4n~˷OC]]T6@Z/Skﶻ/\ˇbwC[ ~lV y"D>W+Vj L't*Uy&2򪅒.FsΆk{zA)}GjYlPSgweAT Jyg,)?EN̤TR6 (tAF:Ig<\#k7zO M:iLbˤuh+yR:6I,"s+N;wl jPcSYP5+Ǯy5^"( d,3H)K Z{" A~vy9_|)D>D3#"!HzmP,_9r#WTGGTJ%vj&ifVb!wr cZMLOdIbhE:f.=u L5}d6J~F@E&E/ڝ#;*'[f+)c V)%F$Ev ''n9T(=-A4aqy{;Fw__@{3矽IA~1JVG<+֮hԚf]*FÃ}+utj{Ww>Z!? gFl 2+ta8'Ĉ rj?%"|B&:vˍIݸ6eN\ DUR~AK=k6z@!QEa@D,dz}1D&<^[Ax sxZk0s?F9Fܒt)"$c4 B9wr| sZkDCN3i)E`xdkڭGJX*U$y!6zbd݌lђEHAjR#/F.'R)ϣBQZqt~X/2ΙreMʱ&ٹgghũι@G*OsR.3 qڬvuziƒ֝F63ݬ iNbR C{w5[U;u'i2&A"Qa5Vܻ@{~(BDI9wQ1;vA!{38?J0!Q(ŸSsA[T1A` rf3J>UGEU/ aclN8&@%bG @E* sg@#= t̐ltt%/{?~կ ['H >WPJ)D!DP("1RJ9vαΥ =cޞf dCk֮O:Sۦ'`3WTݰMk>b;Iǂ`$Zz\f9;55еw.]|/mLo4ݘL9}h,;0񇀥t z\.U>٩֢a{5IZ?:~fY\ʣͩũ{w߈ZXl򃠀`sV(Z2;!%O~/L5nR{úi;i'N;o2gS! `|# JEQI8Vc8Nt45($@|J\sqC17=T0|P HA HpǦ367C痢B! q vvLhAB VKtSĶ:W,>֨Ҏ${ ߼ շgk @) H(" .]+c鴉qD13DR"c (D5F])bŪիq{}ۃb5 tmw[qM,I8k"kkEԘٌV pΩAQ,)vI }ݮ֬孱ѱBq:7M+*cC;v{^ M1"JB2JK' cf18$y~pVi=_Ŋֹ,:i ␐HZc( 5 ,pP^{Vo FVdKc B@i[|D֤6Njij(Z@qκ:ּJ|N!7YƱykO|k_V(sA|XxĬǨ0_sD3k}HYfI\.1$ZfA $AܬeY]km:k̬^[ P &rj*JR,뭺cJH\2L.LaT2EĬrNsU'nsJx;Ώ~}^;p5+˟;#&'f|$"hZjZ6ooݩK0iKYA8AP4 5, D\cGW:thT Ek&M5:DHΥ4ӳs|5q!cbNITl:II ,6@Hink&L>G^1pAPkhϱ dW" & Bl8,`H.`OPUB!q`!ꊺb+;٬mέIhӡ/4#JŢ&MS $׾}o__f (!*PZۼ\(w!J4˴i5AfPD/J\C/%"k'|tnxk?[n|ͫ,8g0obZüw?`i !%Fk-qzR!(?r$QZA>kH!De9ļ2@,naChZuf@\3i4c`y䍍yחY(SX<7ߧǎPI&V!C3Yl[w>vlC~̉7']!pD _Lr<4K֥:mkֵL|f\2.:0#r}1Q .'n60Fn 2eqornf왓SJQylZZĊJ_ b@_2O?ai:KU8."bT9 _"ry1``:鳰 TL2{n36v!9#:#B  !:!ièYtcwct.=/",2fߟGyyMkõkup]/}߶}[rq1 F~}Ka/۶rl@<&θRՏ5{L{4W=vG4ꁰM9W$5 0pa!Dʵ pPj!iM# ʲ2\EW4Vm)kq̑\rcQ62= ðP`,Y' ȓP*{~Ae,^AJ1Z,nƱrGGZ+3{'N':>:4Xyɬk"n$@֤41,v-B# u2LH̓rGDJy8K+p9{~  -˻HD̑DƠ(`1CSݯʞ\VMm$XSp[2ӆ/7d7YēJY ɖ=o/ڻcS/ֳ?~ w1.V kSk^~淼J(&+:#VK=93{-99׻9.=Ym<'c1s. .$c2|yj 9CfR#})(W'zKܦ -&']aI>e,h|1ƦU3ׇP˜Bx `˶-:;yՋ"g> NZRJLu4qTfc;0 4!P䕢ʌZjGJՊd]j%[+=Oo\#Fx>YWG8$=m\(n'βHV8'AR bɓ~--ԅ!;,XF> S,l0KA$:X'iErCNi>mBBB;ٱ(d?k^iYje c[[cwSǶ]>T8p+f_K'}Ic4B%bQ /KWگ~_w C$L)8^yHkC$9$IC'򲘯fQ+{| P#"(:!d*ϓkcM!hQw؛@/Ϸ5v- s vR*Vdz? 8]vggΓf˜Rc|s3ʥܿZlRiJZd92G5J', @ %dMY!Tie ԼsL F,*Ird nIBbߺ 7495={6m,@Z(jg!+ bN3!8 oٶ{535I5+Hϙ6O--ZcjꍆV%%:X`9ޢp0EE~/X@`H9>2[>cĴb!) s _v^Pwwn&l7۸M.}K_W;uB" Gˣh 4ө]uozg?ٷAk-"zRjccy Ocő* rde m @)3C*1&C笵ըw9B$ί~ge>2iT6]S/է'~%z6U)2LfٔKgةwdk-GGjL<Q`Uʎllwp,";g,V9b'֦ pf~!Js+VX(AHH b8I)ĝV_ZC%-`X'WZOJ0R)a lٱƴց_MQsNӡZ9dB:@1,SrA@jvMHnD?=0 A"'/}γxXk>_5E%ݤYpEPWK%)"cfhrUid0_Zl<{rvWzdX`g<5FiU$0 Yt[Weh<8Θ{ICkl Ạ1Z(ƹB"? K֚n h~Jb^8'FNzcR:9{̯|4ȁsg^z{FhLR!!c'! !$߰_%qBjَ>mMg+fKܡ_Z7ns.o4Ley2s䬵y2)G8Rhϝ[\nn"pT}$lL+Ifbg s [8f:In\83p֒<-T`hC[W,im4X[n$cb)5=;'=i+nnnV0RsV=ļ965Vw,xq◎.?" r3RBJWKaRc.%blf5ZcϿe3l]ŏ~$`dZ 8qιO?<|FDdLi }U2T,9e u6|9\1WO[[-GͶg>vč]uq 9LjaDsߺ1L:ߘՀ|X'شsJsG׾u|OycS3 a=sHR1zĹ`yI@OL277f|)rgxcɅDcR=J& Qjtq8N 8# )= Z.dsD BpgZU2'aGe Brb!˒rHǸ1mpjO`fYF-~:"Πmth@+|| o{8\Շ?:oNA9dyBJ8Zg\!ˁ螣s˝bTlm;v0cH=:y@9l{9et3k& P2 SQ@gG~vz'knxoy?4?7J.ĩ5`)gFn0 RJtF(=`,klӶ:8BMQr@p` 9>}X#TkVҸ AP;{3N?<;y&i.90480?476<8:80_ +Cr @zX sw9C7o}wmP[ˀB4yI\[r_TX`!YGM[w\8GJ'['%qln޳SbKd1T1&%rH-nzgo ck7e\9bl+f`,G_)M?Oƛ_$ P3Pju~x>ԙjMkfR-."ЫJ9 o; E.׼Xjlmk֍sC33Oej+ckMs' \j.6WnX8F%*A`=dT-t3BI2C8K1$1 s#JyiCsZcU)FF!tK2$]~T+f+ B.#&@{8[DgypYe΂tbTgU@bMK5_ӷ[YFaUkjʞ$m _vk #M[c0RJI)'s&Ch-`Fعl=Lh:JoVkXnO$yK,|>{DZ,.1I8dwnrhH!Zlr޲9NIk<u_7͎s<{ $?\ a2ĝ0"[S /igrwnۼL7-ٳ>v5ڐ94Rg jkr8#Ν@-,GM9vz4;ٹ3f+Nun+F7 Μs䌃{\I6NZ)65晕Lr>n&kOO);.dn.Ɠ9̀#Z)9*7MOmMJ+,g༬xǐyY"̩Iutj* Tcd19 9G WCGRtvzC! ou_ٶ8ɹukm۸Щx {GsZckžύzc,V_0;;; ˋy٢sfN9\O֠8\)%!v&g=<>ضgxVX99w>VK"'*SDf'cqߋbv3LYQLpnb1p]N[]e\-,&Z Lr1g3b{fS?4sB r1ƜuhYp5S:o|뫟|TNӴ"""!Qo{>y2].LOzϷ\wI͖dN[k AG\|]:O\}#8أ9﬌ɌIt2dP/BfRq~~XŨ;~uBjwݸ++ltL*nV~z7#\?~jzx /JRkbzUazKTb(#_$$c6YLid(ʒv`V d, (Į2;2;u'pԗ2\"/@Jrj(h19 bh% c'94x18;PnFLϛ}_D%@f,GO5!DA-?[TYF.P~Ri7 <6׾o/O2f:%"g9K@ YNSckWd7~g<,+_iA;m7gq`@D!*1VγQX̒̒iDWI7n7}K_7gWU)ՆEES&/Ug=đr1-޻e(3oqVxrifeXKXK1.! \)hq)YRXZ35zcLyT..̩$%=u.F՛0*k6\Jr#`\ @lu[@!TsԤE6>!&̻&O9>`a7q907ͪu&ghm8t/rL{r`]E48t%k'*3.QY#P$RfF 4Yet0d8N;He NA\+ _~UoO_yRɁ y%Yk<9b5_ݑGʥsj8m)·zp@F㜳Ao|ǿoVGox٫̭h2<<|K B닋ViJf|~D,I[3DxN=%?/9AP]n‹ǔVaFV󪹭^y7^ǎ|nrTȗ9* i52Αkmb## MGp΅ e&_ofz\E< ܸA(](@k#gKOTFl\3AR*IƚaXV*btʥǽP(x~:%̹Hu=QL8—x+kݭTLYE D<|8RIMj1Mqd ktR( |$1\)o//k{ !W|B__782uEdR Dik[~ɧw_7M31G|8uجG?xgR7N̎]/.1+œ\1BZ?~m#շ ?Fi_z$Ik}F٧/YͅE-[voXaxl 6R;Fv}х]|IsgT]/q/ſVR̟īoql`l rՔ,93̪uc3bb0D`YG{4B".Zb :nu.ܻMjZ!DF&8C"#"ݲduR }.;nFqC֛V$+V&=[(J"*KHx"Q8rID֨^I-#b.oq9JYb+ɨT[iL_'m!y;מ9^lz|ಾh>;}3gةZçz"muZƐ: sSk߾ݡgXj| J, y~^b';.x]:1;9;e@@'HsMzGMXZ`Ձсf'I{e0Ƥ~a-siZ-ro]yۮa"OEmP~ ,˴%;Y#=>f/c<4PZKzќ<3xx啦5j;zZ2^oXD\k-M?1Qo޽eɖm;1dPb$ 8D #m= Fˉ͎53fWyt} @\ nFzxԶg=E  Yg(w=/57eYfh)C w{_>ē{OTJ:*d;Gڮ-!տ*Qe+rO\~h>ͷٱ~FPq㟸k{lxo!(U%Oܿu%4M,L\3N$u aT* dڴq|K.0?}v:&9:cHIUssKDk]?`AM.uB= 35MMN{se5x6*%KNX)͍m{é:2 $7xz$&FБ/(, Y(WFGڝvikh4$hMRJjE;v_}-v+}J%ֲi }CcXk2Vb9q"Tk6]<1gίMtbXrd@>/=~\=޹y4{NFu1; OMuf[: K|smYH¨/k/J+k*ÊI,.J (zzcu$ZvבS !E`N{厯n`\0pJ2p lݷGyC@Lxf7÷a^1?y# Y?'>Wzqi;wX^i*H!8,M0/ͷWkF&"I  uPι,S9BNeY)*9Rlɒ{n'1 B珀a5]uP}|JƯ7CN]Y87-7m%Tul[A--AK;[K^x%.{H= ,ˌ1n*  VuxyeZʱLcwlٽFj'I<0ːq\16V|Nȸ $Md 1"ҊPh[F}O}qr$/Ȼ GCe~]v3ݫΞw_OO78ӈ-kw\e8c`Apb]n~ީh9l4R PfvS]5hhwsq\ }yڑC m!o*8N1{}zͫnju|C.qR o~>/,z|ER=wbO?] ,nbIYHu3_wʽy[z[ HV^P(y&&l~!QJ)PpƂ@g\iIpa1$!g 9;88@Sj;g}ߎkY:05]Cx0xw:X.)Mۧm* w桻sO5uZ,B * v;mLmCzb" r'_iҍVCOpřvn։;rӍ2.3Վ®2 ưk!&ipLà E` Yo۲+>OK)1ge9zj%nz!fmpq!u2"Ξ9u_$I,|KrW:śprfUEW^:9A 8,*9ܦV> Z kruڸxTk_GPYcG֌3ΉP(vZ,S_~10_=0𶽵~\՗q` :Fp[71Gڜ[j U R9aEc;2z=xp׾Jh`Ƙqo|{~둇K:X+\RV+|_E/z_508l6-9G: XW(QOĐ2SiسwOޘ3ӳʚN:l6??`uBz@__\ZdoOT:DMwz8F~L9UT,LcBI.1q9c#r 0ڠz}k}wſ5/,-3>h0/mU-Ht}tʠ@MCx=}I(gsc-%>J'nubP+ L,4Z_)i%7zKD,Mٛg.@Fd9G g)1vME3@!vur´9BsҭÇ,:DVΞ?c}v3`= 1Q4u{ZJO D:r $n.ؿoÖ3%8󍹍٦'3q!àݘKMڳ瑮AEg' ""v_z0*fi&=4vM7FQku~mzŔ1d_(3dv:IWCƌ1R =jN7bcsOԣ2\w9@ Qַ鞻s׷J)\O3C,AXϿs>P7;׼uϵ6qd%\zꟿmqke/ʜlgV*dsXh1bZ)pD,3'^N/X"g}wgqu@:[V?r PMd-9' B08qDT,nݱS 1$,zpfԦM[~{}͡Jws趻S`vno`n=4><33rAdsl!fd_v;oli`xzx>n[2csȷ"_ƘU"ZV*UYy`R[&=9ߚ1fͲ,I$I:펊SKŁၑѡb ![,&"zy"fFחWVկ|&GN)jIjX!<x/1G׽᥿nP|+sg.;w<>7X1EhYZ)ȭC)(d@J֛'dJ;ܘ[n v^ܪfȬ_+MDS skvnr/O| ͥLj]Wf92BE`~PL+ {~[]~zi(Zgsb/ E_˻rֵsd]V~#Y^\"a xϾݑq9R1m̜<}Nd)ZkX2Aum'|O,H159n g&Z嵗Ep()DauOp*EsޣkÇܔl޼@O=6u 8q59D@ΐ盺:K4I5Raxxhtht`x]7Kr4UƘ<`,HeY$qO bZTaTΑs)B `SOOXKJ"\5Ϝ9y`Wqs:?\Ge;oϪk_v?| TN%sD=ᬵ  2$h,Sk-z_m{0C\WI~ќ#ýG{DQpƝD6Ijkj7>snXࠜeܬԗ"$ CG`*tˎ[l/$ZSvkp2DfFk&E/zk 1&A#p3m+K*ˢRi``1fڰZ$rW!s mN~gsկ.͂7>]04+WjQDl|FwOOoN3ǎTHCmڶi]ifa.Ncys.˒,Uڠ\V,asDqrDZcٝϧ=b<@O`B}zU+ k1:S5Fs{ٳgRJJ9?%7?ľש?}ſ'> mLnjs Mh 1uTS#Q_}Li"#k8R;#hYZDĐ/~_ ȭU9)K9q޼~ ˯Lz^/Ŧkӧ xr5R`k|\V{{艷;_q%R'8xK e>W?{o}Cn-6s-缾X,p߶[<W^--P5u1 X1ӶoW~۰ᩤ;荗`W~odo [GGF dWz l0Qup4iΰI0֪s` <4zQ-h>У_xQ.or&rr "wRڰvFQTp...)Fyyf3\^F h1d@d"3DI$rk9_D,͜s1m+_< w!DVg7uԧ]< j3ݔ#j2fQEѠ\2'O-6GC95Y}(,- $T\p?0qnR Ug]~;wsQfS;6EͅɃWzkw}ߧҤiux%W:ݕvgn3Q8JU8|$Ilg2eB般#cZ O[t:SaL ƘU5FrDyk)D㜱rSssiIuX9;˲rr%dY_? K @;҉~jW믱o]yomk.jKPHv :-Ƣ=5DD R@%g9Y XPNh A`sS|K&z° <ɀyBnZ3knA رgc9[dP@@W/v#Nf7 ^m۸ilx%qJ)-Г>fl}:iO.ژ,3XkGvwdy%PT)XʑRj6:a npUΐuz۶P`GRC_NXSƈB!լlZ+R9cK舜SF+grr x1 g\ !I.Fk,˸BprXCvm`\;ʙ % rjw4C-z(鵗Å;ycub{YxK7ZJ4"9$Zl, #ZE^ "af1s XOQnn1sq?}w!@klA GD|jzo}kguR0GЬz!|g7?w?w9qi #9jʉǏϾc?1/ҶΗy=HcKK 8<v%Xi]\rrΔџUgzKQZ`IDAT_6578HMNM4)]bYxn 6n4_ٷaQ:[@O6qg~rS#Ѣ $KNO!6ot1d=aՏs8#KJv,/hmi~dljKh RfdzYȤ 1d`e++ Z\ mRd,%*˃[*/

tϝ0 |ӓZ!Xq8# !YH?$G+(dqUÐG]a jtHKb9*!(qo~3=k3=sUǎ>}Ϝ9XtM@:DE^{[ln505;EM"wqȣ}/;__??tϷnGgϜB[<,?7'\]//31H<6>zvlT0ݺȞ=2H3i"3Ϳ ࢰǩ2:yrƏ.5]>SFn#4ͰhieT,Izz׫ (DJic-!( !te2ΐ@K4a֑ J)etfui%IkIj☜wzd%G.7.D;vhe~0j_}ɹuΙUB3u#40})slR;6:3g0 9dHc ,pN1Ƒ=_y@>qȼ}J1pHr}7=\zZ ^uuDgݻu#GNGG>M/~/3ӈ Ӕ3Y.Q(]_XigzRX+ˣcCVѩ[k_SQ?=r듋pЋ*@bd So\2egL:|(d6{ji᥹͝TW2[oο掹eYj%#M̞Usp 8gJid,KLRKsss3ֹr1dYNi|2d˥xQeD AH4&[\\t:Z4͔VnZOfv_köAK;,{pQc S =}\s?Yiň: 1@b7UDr6#d GjY @$gϝ9o|-?SFSpEA'w.q\B-.,9Y}*'FR~7/~Ǘ_w޻?nvxIGiJƙn[MNNMx={jȣaq}56GYGwK_x4JS)e;M];Ƌ_,䧢cڋnРaԷk'Vp0ɕQ> TCR`;6wp\Nh8r&KUiMZ\:bҚ#L}K\WVV3peijLfmƑ7VZHvyq ¨`!Uz#733Bƅ`?73*gZOzRlN7,nk I+@B*!@HJ 8j?'ynVjޛ̈́k-R.d9药%/ȶ۝R!U@$e ;9왓a_5.dR_Mxx=|[ߺeGGq9gqkF] $XYX6FxvRp&$) Ҭ7ffox\.a!xk^| _>6#ˇ^\N|dLد&8>szn~g-s_}˶kyj\IS$F5 AGO|2ғzm;f6t:\r=T%89!m+/PT[׼xA^,}۟~k2ld%F!g#i\Ri֬D~XV*e p9fOO& "K ;ڞ,å4O& $- i5jcsYt$ۙ`+$8(˴֙y ^`@\k8V&iAPΙHe !lX?]J{yr㩓 ˱fèQjAIdPE=&8KR09%*aj¾[/~u_N{\Vi8H =d24վ.5 8 FR/S8~hERO}_R5YMȑku@ Z!f4ٚ{~=c]|R/%]F14{LXJ⎵3\슚+؋7q%MRag&V9B92!, Xg 0lI7v"nhԅXKm`UqF@Zkb,:k4ud(VVZJeBDƒdܪqj|NiEŢq|?gMni|/v:ט^0mCPp,ژbfweAHV@&d(Mce&Vb.tv6{O|s>?lٶe|lȈ5 o`hllݙ3'BdM:qѭ'=>v_2`8l8|Иj H8.=MyfxvK* B48B2Ҧm92Fen;ŅٹܗY5Z,3hr&cR{gd(@!"r1EAvi@XkcRzݸa?|JaL0e53nzOܧ3?<5} Ά-"G97 #ǂD ɘ1(^\j650~O406s⠍^B\`Aw!"g87}<1r"F9ƹ8w{meeQxu{v$= / 'K{FeIҮժH| {q!k~=z'ξ/F;vZY&شiƺ O<+_}ϥrTwk>yϞ<>T[OCljht= 3OK83!/ֶ<ݩy)rԞJj8$r8rQ4v:Szi%q7B1:XGbE czγ9bYeJHk4b8k@Tf)r9g EQ:I!GREЗ^did*5ksy_BljRlJ2O[Ȑ֑߼{o4#kwЍ.čT gD~Qp(x2`ĬB rmsse il6i{8_OϗSFg6?s̷>Iv*dpjiXqHdd͚u"7UI,tO{]m"D91D.Iq2(K쭟ʦ[_qCq_ȝyk6W\re~ڳӇ|_dzG RT?}zU.Wo\W-Rpҳ ?ؽe߆xeÖK/y+Sn,/t;{v8r+zs01$;q gM*[J)GZӨ/鶒$@K v@ι1NJa=,"rm72e?Tv$m9k*ǽgJ1ΛJ2)r9 )E'@Nx_,k'0 2 -cѦ#A(u:&Xws,^y:plcK<60Zkr>$C'w">0 W x%keTrT ~G͂P4]|kq;]]D&?g=kE}s GcX({Yb 8DrNJ7T_Xw#2!BY$6WqXjW?zv@(g5)s)!EVmuJ[/ҥm۶s\{7朝=z~;;ܶsw{{߼7 F׌Μ8|c>e׾1y5'Rkn|;r>/UH@:qYm3}'Ң1. 9$#n\}Sim9*JIȗ^=Dk}9T}G)Jxz %9*>@э\ƸvKQhM<:0_qO-?C_W|o|oG|ݯڕ7hJr7~&tqe(`pέ1J啯z>C \(2q$]9B0ƀܐ!g#$0%1\+ϞZ;߼~TZ9Z[oiaYkf&&OO|M75>{̆kK𡧿uL>~cL@5(YBxap$&Ƹ d~Xi[g)|GȉŀM͛Գ'Mo޹m|.o`MM\$YO} 0aD{:8{KRK+K-}+aFu9)}msWG#'6F8*eIocODjmx_)F[3NL5S- (m4}q ^rUQTTJ 6&7R*H]UJqa6! yq$q,h##c'nnZ T)s)#V)1{c]7]c7բhjf rh ]'KK@Gq8v_o }K \zN:d#_C3Ly^myB,ɞy쩹ٹꚫ߽#?K\kn&fzbfM8H`Qv}'Ir,j1J[=m V-|ZLKu)Dace`!Lp ˅W:D̲1W.v8h73 ? 4K3u(yX.)n3!22ebL1*dc֬]WJqKl%aTk..;}rÆ Gx5Q熗n߻gu(4 ݅Nʊ'6wu{v=Ćay@AS4\S}OpUg̉[ ɍUbF,zpH+xR0cI2` u~eM֜'܀!? -[} iX, + A9\ E}}y*6μW/ߜf]!zY=W?owN$aA3!?GW^n7+j_ $n$z#B!(QN Dѓ ͥLKgǨ\Sq5=$8jEQT;JvVXn\7/5/uy)Jy9+@"D8 d!I!:{.gBj-;ҙ g"ܹ(gNjRut|[3'9FEj 2b/4<2pfi,!ep1N;O=>WUkxt, *" 9X?tM0wCy?0\Wl$ƹ45j? Y5 &8$GgA5559_3~3ܲCo䩧sK/fHlطn6fVG,ً/T~OXDBs8""O ʡD·s BjӫdrE(@\^8$u|۴^iwoؐ$i6`J;s"c+iAr,!DeYƸ}(JɉC썻tcqh)u!Jd ΅#8t ܘ83  f97 ʥcL9k)I:YJ*|2__n<M/gzDN'K$MўDyW.sIwE#" :scJ-ʕW\>YgD^+sʛs8nUsSjsI\~'[x?_(Yg!ȴ=rȏ79"Md4s(cq"r3.YT(,Dg<[aT]ˋȁ :y8Yn[pehk%qOHK=҆'eX(6 rdABp.)2EB dk+QT4&&7dM}2)ur!1tݿT(pnd Kހ CΣ ,eYwqVcc 8B^D̹Fj">2c4 3y3*NZV___fS+~syRkdSi+e8^n G ̲LpeZx,1CNQq2ʖs20aC?@D S z(Q7E[5T"8/;z]Wu7q!.EE9BᕕcBJ@ieJվr!|?3Drn6YSpDY:8>ǒ#s7}j'p;j#C ssJsKuvzznm.̹sRVE:r$KUN8`YȌfk6'z"zQ,%4MC_/^\_A7m(0^`_ T* s2iG֚Z6<2⇁ȅυq̴6Y<Kb s%CpZkDZ;οI)^geN9Es.IRtC[5cJo? Buȁ#GNiwI08P(J?m Cʛ\8g!myXغ5[{X,DQA+U aٓbnkz eD!Ҫղ ':$}>=B n'Bwvy.r@W? q /BAAD(J:KK0.XNzMJO3KX[kH"ļ՛1d#17C)s9jxqq1\S#WpVg`=T>bDai6 GT.9Y۵/ܷ'#'N?Oz$DDb> ŀX\\rE ^T(0ƪ;晙61s9Yjà "qc㦍a!(b(*7n:4^?qH(x//4ΔBDk,!] R@HǺDJY"r'tkXIX$Z{[\(j?r!2DR )օ Rz'<봞sc C\t {L`Z1^ɳg&I277Gs Ţ:2FeY+++Q!b@CRU?*nT(tfBJ}ߗc=" r &LRTrLX,# _st?IȐQi8Uf9e^o?P,,B޽?U-NOjV3۹,C` pbs>6>j ȫ8v:mƸV@!E9Gv^I7[rի2 nMjQhGe5e˳,-e3,ϴܚ)&&K*Ǜ= H"=45 jaֽU/X#8R )B("k)eK)=pI2DQh($IbF <4][_{ʕ7\8ϑJ%ϲ$Iy ,#A011~GJx&@{YJG(B+rR*`EǁP H(!v{s}}8)AZAرٕx1hQVCDq!pxQ;}a|ee3O4h^sǎuv7mZBJQIJM1I5Voml[www,//ƨÔPR232Vy@Łv9s)aAbmJrk׆a͟Ll64vZSN.-LLLLx9WJ+ !;;;O>ԫdÅpjV -CBrm}ӮxqRZq\VysLM5 `EuPoedYis]Vk5ȃ/Bzjj,e<?~|yy\L'BJ9"Vk3Ѡ:rƌ<b#Z)%~饗g]8-̎LQ34Zk hJ% q"83:ĆHk0Jٍ]DH8hP)@k"[}P({.3&r!q77n\ðPmґi:1tkk299KK'V:M'9w~=Q.WZSATUq,k)Qx<==}4x9 u8:(jUn\iZF1V/$q\u@Z͏):`k "퐎S.ZWZ)1@,Oo;vsZ+k\q}{?u/nmh@RRa)ژ8JkڱcKp8!x, FJAno?j h !#V8S+_ ]!Z!&HRZ&YŒ1Z9qrqbbV.?nomB߭Vʌp0 Sf? tڞh#bQV*J1&f-WBJ))!I>rzËtBBY0v{͝hnݾVs$"y#A#Q` 4P!֎a{2ƕcg}74-Q[UZ11ʃn߉, h.Das=ٜVYpQA{brfjBh42h@/ct̨SUF> 眾Npn%?GjJizB2?&xyxmm[zZ%&Ir^;99iTaE 21/_vsU$sK͉9/JmZO9c/ԩSӓS&@Zm&ɱFeFH%31QR@㍍WWozsۯnzLvRNIҬR- %Tట(9E!M3c -8!u<3Tqzڕ䙳s)~3=5r+8~*Ik_xix4q,U3 y~ !8k4E2e`0q~?4rMq,J$<@/(ꞈX?~+,@Tk4h4zg]6=53>>k/ZWJ)E1uoNMMS./_k[Z~,ey[~ HӴ7+^xṂԓOʯ꩓', J)D)$W#!1N 5hʋTSs;[W^=>s/\m7GۿGoێ\?[ PJ)(%QZTrH^,̨ Kړpe^|~ccM0EQs5j?=}U~YXXuzݑD!J0Z#4q"b*k(v"&8 Mo b""Z[.|S:/%ksqX<2q1~r9_V''g&cL+e}W$O>$?O>v=ԧZƵnܸnq23=E1x@\9wQV_xoyeY?rvT)szBäPݥ''jVwnTw/g?NZ%=9Yqz@q֊FH0)|V5ZR@[o 716$ʎp'c)%h3Ip<Ԣ%qB?)zE+k,˭Doe@hɉnx>jtJ2cTl4;;x^zzflRn8ER0 cT 9SUOR./.A)^|pTժժ\pE)qšjQB(ۗoOOOߢ:4#E>JH=|AZku]̹ re2kkA?O?a(tud:ϑHF,bHsVގ`tqnԹgN.άol̓yfh v3J 5i.{$@4SZKGVJl D ƂR QJDky~GXEB]r%4N8:~A &m\@յͽfV$}Xvr|c'NViNNNYkjP*UeyzԎ(X((?r[ NVc\!hhVk=_:`B8vjj\*չF቙֧;NHa !eQs﫰ѕ$R,L8s]$jMM7%^9pۅquF槟y%Oi纬=k+Q$;!UYk,Ge=f&F>aIӴp)|?IJj59cF=TkG:BJBZ{…c]&J Չb+\|kJ%q;׽e84%`o8@wsW^\FI:Lv塣 (@#kLw\1VFE-YoBOF[ xݐH {+rk0iǑy{{A_p^U^ƶvS K2ZL3n=ϓBIGqeQ'L T#(#NwbJ>Gq-yT4<;,cJB|'h?4Aww vQl51u<ϕR؂.֕ =piD3<+Zs8Y(JJb.a ]zGbGc,,*v{bQߛ?aF`u8/}ɗ9c3:?w/샿XBIU!/w=JHZЙOsJ0&+# ?DC>ҬJXZ?335YTRJw>?x9F)A:11WYa8#qGC)t4uH)€(BaƝ#mpA}8 *zQ,b>kkV n5ox `48,8.˅1T.$I$!Ry^GqF)\xQ@ԁ91VxǛ#%c"IiH)?s^\z~H) nxsE\mwo7 bqS JsJhW10Nw{=sbP@X|@iH<㥆_*׈T\+fZfv^hTf.*Qk8AsP^H3SZ?,W>;A tux@߂l$!FYVRqj:33^4)bI( !b$RFZ8 J)9S c^BX-eY;1&)_zivvKySʠ_0q8?לhq~xe@6(|W[1)Rctx^.c`}ү8'mBA:ˊ** 0Z H7b+|ުK[-\HY-T}cܥIJ[N5VH+D2!<B5^ ޯ}a'n= 0:Óӵj @RF5Z Nݾ&#%+[]Imm?o./lnX '4g<+cH(-{Py.(&@( 2EyȹP/_c6Mӂ[UZ~\|ҩӧ) K_zg_S/_+;xN ǡ\"A$ML9?<;77] ʁt0Jr$xLSrbc{{ifc汻$L`¨n"gi8ȥ1j˭@ᨌ@dZuGi{$8'q@ B,_.NWJr%MSuEY<]\V- Ef)шVzAG4RBJkK=_g_|E68Bz(?@*MhA"KXk-vn&Ld{{{ff&sXcѨB cV#gIy#͛Rʅ8]&oo֗TţW+h7frVawesG[#nJ`?O]~`x^85Ӻ 4k2@ 8I4t ᔐz/|׿/ $AP8rM=ĚG?k{I4 Ǐ=xJvN%_`|c ֏cL: 20qC8%*axS@k\ID(XJN j(!,i&$Rwju\pipjbZRð ]1p~v9gm$7Fk<45; Ǎ17WVzLۏ`Q!RndYfcرcgӓSSiYc3@kFjOΎ~g^o4 ZG$R2ZVa!xKP*gΜtZ?, i Ξh-qGtEܪn$fիfkbgkcv_Lî>ōj gAo_j5\!߄#P zipG׿GVphjP2B %Ԡ* (4Z e, hјp`)ˮZSJq{{{;]VJ:^P.NѨ\)Y 2z'<7n/}̙3B@ `‚2I҂4 I Y՛~0o8"Jɷhtw˕yXJp<*ˮtnW+h63  \c6;*{ J$0 \.u<(W,/՗_#=^O,LɷTkphW;B 'T.Y \l/Mc@:-G2م^\) 1@RL( VJt8 Ϟ8Q׀ׯZ*bзh7676ϟ?8NfrdFa8_ٟh .U DV~s=9;;xE? RyFZsuO8tGO|w8RJk}Z?==}n+`TJ82Ƨ^|9(i[k}t:33vB> .bmMOq.2Ƙv65;+S:Xqn.)`*uJQZVK#⮳{^ |} '82p 3v{gx{\ke\W+\2A%J6I՛h\T8w燢Ev幣ao(_+>`{<b)>xD))|1 íM۬#fT:X_IX _{,K{n&0hgff8Qo6fs<F#qݮ8y < 2>xA^~R3όFfN,h6[k+槃07E]ZJERVRo_zX5gY$iTJ$˲b.8A? +x!ck8GN;Mœn6͕ ɢ5=͜ Xa{`iJ{Y2h ZB(ܭ6cR&] ϒTt-ɲ4SSM\muݎ@RH(lIegkR-rT\BhEx*~)Lġx1 (981Vol!Ze^[YTg)~^FhXT*b+yݮ"GC†f4zFl5эFcrr^P8( !)$IǑ.T*w}qoooiRܦ<ϋA;D+#0c˗.-?.,Q@S_D3w^|]@=[wlըURas&T;7Uex2$Vy<~+x+ZR0moo7m Fonv?4 kL$N8F9@HX fEQɪOfʼn$v殻WWVNDQ*քR$^51A8BHrq۬ Ðj p,ˬ5<ό{{[[z23;ۜhF#(P H!vvwkk9cZV5n M5' Mo-*3 !*J,a8F'O*uqwzJePa#ŕ!h,Iag~TzNg;R@X#qQ433[׫ժHmjE֪vVY*4򑏜={nu!)kJywwVӧO=37_󮻄Ngwwj… tQ߿zFѸWVn޸~ҥK=sgggg8VJF,MO]ZZʲZt݂<`j~."{O>9sjϟ:u\.߸q͛Rizz}}higk:￿=ٮ74M2~ɓmyAV30N)h'OPz7ѿx߬{n& +ˏ|7N !/Ygh~ iIZUV7a?zW}9DwpI%)A ]sַfg7ׇ8Ns>{w|;;hLssiy5ٳG2ƘAl /|?7ڗ_ſfڪ7z_s{q)qE8]PJ\ˮخ܇N=xh&I%Q~Ҫdd^YY'_y[^ÎppnѸқ'7V# 7oLOO:}{?^^;qBTyeIZ9狋 /<Ϝ=w{y^4JHt$Si\4&Ͳu(ʲTrSO0r ~.!7.8Eb93udcF|ӟyV\.#bApt1z;55qr91FVkiiiyyYJh4fggzR$\__ ang?׮~{x__VV]+ښi}SbbGI|0y%k\ oW+<τ?8C?g9%Q(\3p8h4_xo_xhո.we;9Wnڄ2c%e25RY(׺<-Pfy}ךi$cq{5;;{x$IQacBHesQ4X [֚Rh4r]wĉf)<~!`l\q;=O~ǟVAonmEQԨU+J!>7 9陙RB8P8Iy&m$NRg>?X8y''fZJ *VDgGx|ssލaO 6.,NZҵ^_*H!v!TsH1 *qp 8,/ʔpEcD&Y z}{{;Mәi)`0 _t97y$yR0n\0Θ) D#@Q8|^ƩttbDI.Zy^Rh6/{/\w/ rRXO<~թٹݝJRT O\.w;i?#kkO=TǾK)]=3>,mnl>(O\qsBv`RB nQ+711P)'zK?o|מ}˗KD{R GJ!a8z͝l8?|'Oc2Bn+8eB?wvo<,Kw]v<[[[o6A`0lZ7)xv;p85;;Rnk Z$@Ɂ jBLe,aMUHhRdTjK(]Moz:y,0b`0|衏9я>r^oH)66{^Q}fIt\ݝupxV΋/+?wg~gK/OOMժnK)V*i ^s^!]M>ւAMa5 %D'7?Dչ~u%UP/Nr!_g?s?{"Z0t @o )b '{* Q1ljzJw (8gri+>ct?sE7._MLRH88DhFA8)E^+Pj  8@ sN ԥWݯx QBDxǻIqwz&÷5x޽Ċ?w̙rEQT뮻s~ɛ7WraCxPp)Pm֩\FwJYʲ|}}ly177^\m4ގ1f<ۓqr!ꊉ֤V]5-y4rX}ow޳L *[ §zm(j48&ؒ1A Lo=q4Ȋ:gY\\~ŠrJeJv7>rgⵍQIF)V~DDcAXk=8ZmVEwoT>yriggZtvpL)VӎjR))dmmc7(IeQ!X@@N-VC.29= C q8T<"@6hr|wi mo9~DV+jӧ ٳ^yR]Džֺh{Qy~Vv?~Brqc(.v8QGJna5-BH /^XaxSJ&#4˒|:#PZG)VH}(!sj;ըf\,2wv[3{T*9hZJ%,\=yVQ=x}NRRl%h hɡ9!mᐈtގ[7"o{{/Z7gRbO8y9D ÐAE\ע(r^wqq;̲ZiR)sOT2x @߭f2Ơ=_ZKΗ:w>T9cO_C GI;51/s񕛛R0́LBb_\d!ȎH )6L l; oqԔ2O8q,jRjooojjrnnNUKƓv~bIc(eEY8[01hQ9 >8qwJ)ŭ4M u Xo~>!D)l6?(sP*ch08^x._|˗/8q⡇* u33Ic-(1QJTɥX1:GƘ\)qW;%O}yZ_htk{<ϭ֢@c(~фPcAUXxah])q*뻝z=tVyaQJ])10u^w4B Zk)%oxf `BN*PT W~@OL$ٽ۳,g" 0%y:ugM4[F'PBi!=o8NhmhOBd|D3gfy.RƀXq¶EN Rf9JO,J?Lj%"$PJhM4Fv/4[/^g&cT0Jk]ТR:sКnNE(է'ֺI2p@uys%|u8aR>s7[u>ǍJZE!BM R-ZJjPJD!~T3~0oo1TrkkujGvp )q)eΝ{饗< I "*SO,|pz$`pwaS(*6_? 4c q9p1\[qac:bXTL`rm[~qt.+r0)*FZt}˕zT-Qp48y3Ϣl~$I677/]#I|vX/}qqquuR$I…ZkK5(Boh~=?E=4kkRĉrj-,,H!VWW]i6O78Fi%p8c1PZZ4ZcВ{@}/A2Œ@W-$1p*ޠ1}{?F; .3'Nv/^tֿD,D_Qc_L{*)3rsmepH||㛈gϝȲTr+ҫ7ӓ;Қ7SY"(G(0OJ)91ʘ Fc>pǯ=ȿҭ^?~1J A"\dϧ78|c-^$R:8TkA)Fɉ~oSV9׿ɟve"B,}]wv-#)x/C}mCcZWwR ~rirm;Fe(RnM+?O6aDcfS7?]FG\,iJEc ڠg6' QJPD@6yK>=a0Fo~tr0AEQ As^7N\QlZb_oԪE@#e^G)JNxܬW8J%cKG뺏>h)>Oq?Cш1Vo48Ngy䑏 !8tgff~'@9  ö%$HrZL;GBq(eK%ɹZ6\!}Kz9 "cBCg9<%dA?2MqQQ4wVwѷo~уh9w9 .`0L uu5Aܼyscc _=O:\q$3R8N7|𡙙p@)>}f?µnՠԪʁ#]SN<#H9P C7PJ!/rn^"24 u s $YjmsYRvY=O2NT8$7 4äҠQnE:LLXBA#GP`R)r` FsG2ǓJ<5ul-h RW~i/ & D[xC+RHQ/c ! 0` 1 (@{B-BEH @(؟]|d(6[Y#`0RV `-Z){K `zvqXEDx11Y7H#9wrDⳊ/G4+tT }(k)FТb㶈 [t D TmZ&rDžV1:6IUЄ$+ij0O()Ņ|g#5C#R5j$ENQR[xHʥC<ǙjUNkՕqj Jp;ZZʌ1PC%0ʊ+Ph8c%:f(@5 x@ =@ AP`c ǻ?F:Yϴ[ ±`l8BԀjR;T`${_r?O}CݧAMYo2e]~eʰO6EQ= *zRBja@?܇ 4'͉٭ׄ`h !""Rb-"#(<=;c#}j%AѪvI),I:%$J&2bpI nR$X4ӊQp*S!$CG'\%RJP AutDx e3J%hPB4g!j(Xb֔2AB8.U@$,)ᐑu=E =?*t5!26Kw4/4Udq^-0Ns2F[8;+~>d%@4!@-B47- iۻ~ls@ 2 Dj/ۏ{a~nQUƁ(Mh \$< J8QJCӘ"v7 s9RNgk+fpdegaj&ppOEgi[XДH 01KGY x"JK. ss>5Yp^ x0  TA`uc.68ȷ PQ+e(% Hh.8e`MY~ԉe~#y/|oAZke@Q%"@+΀y2p]x'#J!E([˵mM4a0W;Ts4ˌ1Ze @)c@sM$Z ,n7D!$9PDM>攫Fo* w)R%^u80-8$NUvؤpϾpeqr|Nis]V4{s!fk곻ҝ-ݎK'7I)fF8 `nmnv:sssNZZX#`phYRFqܬAdqFi9iIp\YVXd%\JQgl8_~_xan~sPrȫ(.Rh)E@E=ʸbZc2*(E t+?/=%Z M&38(<Ws 3;Dizcn*#ND59t-a3߻~׽ϼzqIPՓeyA 0: Q&s{_|=[ # La~tirk˯^^$ͩZ)*7Vw77'CW:+VggMgF8uO͔϶?ٿxjm:W;F" u'fpe4G8ʡʟx;*WsdKrj}`A]p]KkaO"&cL* O8\r6ZL(B0DØ\ &In1]!cZS =JG'j+#=o9p0+@rx@bnm@ȏtApWrWte M!ңu'*J;!ejmR8q u4P2gER|̙5JX>}Lfg^zן:}$秧@4˥3/vUnQd7a샠a|63Y>DF/44Mjւh4Әry#J(Zc3 Cfyր` eYjxAXhEZWzloK'OC&o:5,o3xMcH So9(!.m~\fz.' sNF2B ڍ+U' 0-18hLBt>(#P$H)u'F$Iq'Rr@dZͭ(@9 8Kʵ&izr{]s=%'f2Ea,Yj+3qؠO?U`$)1;]Ízu׾7YU}w_ fyAu4,8ILDuA3`C!qF-2FsJpb.1*MHhAA,fXJҚHq])9#C< Xù(sʢɑl*jngRM0B-=HhUP*'%O2(R(i݃ߏ~[>~Yԉ 1@ h)焻If8MD`L PjZBir!yp1˲b1BԒ 6*SpߡhOF  D!)wc71`k 2ck?Ho_|!c}y7Ƞr;ɲy TRN`jZmuns$,&I+mxqL8QTft,7YNQRfRx92TkK:H%T098WYmRIJw40qLJ FQ\iMȆ1Xcº'9(md fGVurԬvBJUe9Zx]ӯV+AP T-꺹I'g&aR *Fzn z18SY 2 s֒0ˆ}(^o@o;Zs\QԉΟPZfey~jf>͒tuKv?:iF v \1J%ccJ(TeI.gc)2uJ~PoR( :E; X`($P껔KE@$P/Je~VYrftUfA,0F)\im %-:\T]э tG>X8Sa!Rt4}Yp1TYK)Q:&a1k \]5 VL<.¡jv煄jr|M\ne` HGOBeϴjYl'Y:iBXc)〨%8ee? FE s!vD)p)iMx[,hf3H7QNnZokP) Bta!\19A ,j)R:AFLK)͵Q'NTvw$Jsv1X!BG={B&RqMVRQPNjxrQgY'Z|  `J-a1^*7wW;IF[8YB!C(1}:wP@4Ei(wJYhMxA#وl,)5&:>ZfUZK!)c1H1;GA9)Cv;'#8$˘;z|jzZOݻ a<\Zj2ds)H sʸh(hS2ʸ RJN0&Eb-&T!Fd)i(6PTIA 0ڔ+!8%hmGCS%J9\j4c,dZ4j*\W%IQ4N$ͳ)ce%0N7=!QQ,Pt*55쎒\g,!8VH))sіey{3SΙ5@ Ca$@ A'Y"%RKT[nkYjkilnYny"͖, MPDa UBY9g|g{Gsˬ,PSX}wĎ_PYUh0*&s;fk0HbaExwoo#G./wjnj p,M-7v =Z;t辻o>_aLP/.~uΗB^U y[Ox4).}[a?.)N3nw&i"mL"UƘ(ADJk$Z ([z$#(ASF H8Fc b6ngAUHS{WMiEh3,cKg4*YvBhbEΠB,C Q5 `hDah=!,7ewi7$x?ʚaf#$b_2,:Su$@hu.аIBK۟dJ$s:#}3IIf5SǗG4KSkXBYVe j- ZBa`(Wu[p+쑕E" |řumɨLNǙv9Xjx&Jg3)P7)I(Q LuQ9"1  BE x҆QEa΢֪(͖%vL;t-i4FwEAMuI$`š|\Ye):笫lV=(syPx(*ħYncXwHbvIʲ<. |G! VuPX[{+ˀH/Wj5:jiG6ʵ=W,cy &JSaYѥ0ui1uЈH]F0 äqd~nF b aRV͸<̊T4!`ehfE^Q2(PɽDiY"")D@BqZB@|+'P©c_~3{b*bl5#t7vժ!p(DKX*}P#b^z:qPzKH5-;'qa[yώ94J+AD$ xfQ6L|8Y>),J9*Fe>~k4no&Eudb L(NL˭3//r=u`%Bu+]Fk8sa^p:6 "U8d8$EhUy4(EZwzoӊ;ז-DU0*#9ngЪl-u:3EIPUT镽h2+z[UZQ! R (4 ӻ#ƣ,+*YUUYB[r@c"הּ; -V_ 98*2Wac"F|4aDD9ka K)^)E!!)" REZ:{3ɮ`"*4*潻r,ͪvjow.϶fFF#{<.R0Tتp֠t׺q9@ĆH+V^kNfhv&900FiOgumyu (Q_Fs]{E/!To\Ti9뻻yjH]ߞna~Ve&Bh5'iJJZLxlaevŋ'"h8v|~3ja NҪtj[;vVqZ[7ahfPZ1F+"BJo:;EڍQŤ޸zm#vڹ4gy yDžsWSe9Y4x?v_^\ `DQga~R 3HDAϙH =(r&kIi 7>>VO93Q^:_+/M)i]@tdqK F;BCUQDz{7˫ި;LR0Xl&FSk;;r1Hk+1^Yf}d7pye;I^]/|2x׮EIbkܹn7KwϞs?_zW_m %ua͙'K93jTyir4l4@_"',ZaJ2֊Re+c Ӥ&r @Tl"^w"3vPy#ֽQVl'8~+ޠ;,dλ/u[F\Z(Eʹ֗yI~2WeJօpMFIV23՚i38tB7%'Sg'O:CM=s+-Њ5X`&8pEPif;s<_?y}26.żn"!(g ڳ'H'$/t}]ٹ6?v2ʩdY8ABv3pxᥗGB ?qYi7_̜JYJkMdͦy'ZP&qT,.6F[i61<0x]Ot-+Pg#ASu]Eҍhrfnvw= @Ћe0^[h_t6w Bppi}pۗ=d<̲xR!n'F#MPXP13ȳ|>Q$)+ \"?uCV,vjf3'lR/^ E"GMyYeQ*$ERqʪ}րu)ҭ8>r|qnAI"l5׻CHJ_fvc{KW!a>W^:U4[%\FٹŅ`1QМv}NɹXG":uCzVܶ[ TV :vβ$G:Uݾ>ݰyUEI,p}00=쭊`rGRݝwҌ> B"]Μ:~lنN&kKTFi&tq&l: i˳QY^γI7<3ۖMHVqjjVr\:]f 3-aﳵ)(vo8rU)"X;9|He"γE7&, 48'J&HJ+Psäe4:sבw[ӭI6y'RQEei:~l |ubuAkq/l:"gãG'Wp궻[3l< mr268o$UV/m#3ap/_\d3w۹sux$z{>d7&dnan呻n}u ugQ*d,d:z9Qn50C\W~o9/+Dv\;6/|yMoY7̑ШӧO:s*lE T CE,#YtM޺r5!&uG6 pa2 6=1p/8Gd:MF`HT`gf,WHc]6lq̹sXk6…nӲ q"դv4S =<ԙXL&PvEfJ: S'^7{WwFØIA7q/^&wn\ vp,,/ z&$i2̂KJ2&"(JRMaОLg@ҍFCLZGwڼ_iwYST=9HpQ@{O?VVG:[Z^#iywg{}}xۻ󁭭nowgogkQ {l$M%(ڝ|4 0zmn6XFhSa֤% TDH,'CLO@SluFbwȄz2rʁɟ( %҉r|yu~/E]~ uL}yn.au5 XFDJwN(4&9i]{ /R^]ou,qͳ,ߡk'+̡c@ _*bQeZAl*˕G*kEt/#bU$dlVn0]&Ȱ$,um|w;7~SEyi>N3{`!`/ ((PȲj r $ZVZ"p7wmSeՈ يmɾR/Iá?4Ӭ0rE6Y]yy˻{QΦ*,"ya@֭.<;/nnT'זWV_x .Fc$CfL Voׇh3f@DPFO:[Qџ͹9cwdme$ԡm*m9;ok@;A]3ǻ3GV@</, V!2+Vڈ8 mUVe"DF4$ 5QH Kz<4 f#"YDz8쵢g Ng%BAAd[7&ޡ7#Ah΋R!b "/A(KB{.Z޽X $1|"8tR1+l12Vmǎ^x_e}>.^P'UUdYҼ9W{.LDa>|U1.lG}Lٍ}WGΛ} Ϟ6zicٕRCH4Sq0Jn_7 a/$6O -b>c{8IsPY9+Lfׯ_^?} c\ଳeU HwVT%A:0q=;mz ǂ Z@Pgo'I?,,?+{sz?P\oCM 1#[ \a*+^p)Bml:^iEO,!Gф!6"/ɲN&jUT8v\(2 PB؝TQU RX|J̈́X2m0gOӡuED9YHJ}XYɉ3Vn޳ųsK+ULFQNzrisw{KStį}g6#:Ujh@M!,ʕ,eL'7n#$yUaܝzLk`֜85wK~/}ͣǎp]+ ڲ`몼 ∽+TF*v$RFa!EQ(*_9FAUOqоば3[%" Ƥ:QPa1Y@Nk=N:H&Fw˝A; WQq( ( L$MA43x83(wjw'8׽I3/]#LN4 dYe8i1S氟M:$#ŻnI;N|+.-,fku4Mw, ˲` 6Za5ݓt33`<;}GwFVq@FM) pm`?9H#K?/x[.-{f}EW 1-,̯$lY ;+T2F-{3"dFVPHNM? i6 uln W~8ͣ$CT"AwȒVeeDνr'g1.rZ'I83id*mySUO^dδVf.~Gr{O gTjV(PRa" 8D(A"Ͻ-0.3 [MQAOE$kvd v{Y>.*km (gUFDD!hx_9FUa|T!:,ޱ`ʼn IL [QQz_Ѹ߃ {#~R̞FaS"O.:H+ E/viZlY!2sx߻zčkx)RQc7}L3Q^F3R;8ׄv WBC݁^%oEػCo]g<ϊX\>糼|+/vxo[I/6}˲1aO^|,j !d∝c|#R=ܼ@*=CHJѾwFeJ?LP8~˛L\EUUinn5vlUW $N0tŵoV|_C?Iu6/uw/'ʥY>3;EISqPܵW{Ǐhv[ZI+$iL@ P1S_ מ_fDBHr@At õGFq F+_<i33Zz^a  A喬886aC 8Vý^unKL:u\QUڲVsveD9ŇRTy5ubi&ԡ13`b|ByTW[s ڄ(AgyNZ$gnbg]rE'ӡaYH= (bDFv3?ѣ~wy {E/vZW+@R<k:!S4XC D]jynfm lIACҜIG%Y$K/_{Y 47Elľ,3sHxR$XYKڄQ\9!qF}[?AlTrXx=Qb(S&{z]kK ^^mͰQ8?/?*.'IX*ڱN377Fjmḙҕ0NǽeZontWNy! ft3ZqŅ||sݜLp·_|joكD9S\寞tųs~ҊP)\LυI2?yr>қ'QƽPܥ60B@؈)(PA"pm]Ai^w׶ yYt7֬W&(jdgo&X]Y6᤬UVij=V( 0{"JHN-a9nM),3xYEXB@RZ (Vt2u 5n;{j}ZYJiv.M\@jo]0 y 'NX4{٠3iwOcbPe7FX8v0j8nE&s^w^@7dAEEU,RviaQ}}Y8޾?b(Q_ ZDgfDaVhtZopNVأ[[:}իF>}2D*4+{IY+=m)؈P@pJpS i;ѕL.3;)3++kB;sΪYڢ=&Q,tl>֚e:)ʅ㋳F+[8/\M5Ajc4c]xuA4MlQ.mn_/q+ߧ]zQC,-z&ﱪXdpl#cc{;N:y9N}+zyiβøʊ^ՌqVSٔ=V}(_2MFl0.=w/]v=6sKϼ|Ϗ|xP?{ 27ݝ^l w2Wl f$6/'C%,JmLDrU$n EA#x"$ʧxR;^Zl.\ߛm?wk5o,,,Xp;Yilmo̴闯pe7D(qJ"ƺqԣ@!HMu"HP;Ë"Ũ9mGڑ#iY7E{}oD,tl6aHJonmzA{gR~L;Pj0KI%vXC5 =o '[V/_hq^xQ,qe+ !ZNt&UK'h?ѵ_|6HVƩ<H`2aU^$ܺ[xg>nrnBR`O=ku^R`i$IԽz5\YѪxGyҀ@I(1kDzIl穯~;gBʅiEOQ $T̄g|[D=8;ӌA=_bbJsNl"&V z+*4V[@Q[@Ľ ȝmEa(+C -,ij/^uKWv3;{.d'soW,.Pf3r +$&wKם'<{W*t<(Z zx?oGdԋD;SYoUBCZ<_|V Vty)G c_qy; T RJ@j 7 SQ5vjӸ0ο u6a٥EcA60ɸhѽGNE ]|)W^3W10΋s%"|vbi;ޙo0$? 4509϶U᭫Rv{t>|@9Ϯ{?}/>??jwϼӟ{=KZ8,Yًwn{ﺰ՝ #=92 R^kv{Wk=7|;ۚ  +,3KՑ;J&{ۢ'B1U2EdʉxK*=C%$'f/z3Bƅ֖Ao?z $q&RooL^,pL|Wbg[a:HB5Zi VPc^7 >7 L P 5(+g@ 啙V瞻j5եW۶]]o7v{.P+(,pБ_ZKAs=y՟&j,P3QTDJko}keu_pO|#wqH-b xcGZqDvs3ctl#? |a88 T cwhl^*s\_ߩrhh/U`HH'63^}kmGܟ5ƃf%7){n2f9(!&0_}ĝ>cz\YNl(&۷nSrAw7:(n}PUwk7c=iqZֶ>?߁he0fhF(;O0ñ 02[tVc!:кohㅇɝxډe:gpqڳV "@ ppE8|k3\ۘW/w{hۿOOu~]s~]7fF3wl5L@vN??u3~-0/3ouw.N[-<,O=pdڨܺ008Uv"?N6uO|/l\y}7]Wt<*[VS^( yNLLٲ-}~-XUHi]Y>ȿ~n; vfHGAgbjy veDE;=ڥַ405ӽ"FgHm^dU2Oӹ<f{pS h6 T ۂyb#Q1{(|La;|=)O_xa.򪬼Ju{ײB -Vk0y,! WN<|w{29kF 0qi!Tfgo'wW主xh[a 5t Y%0 ɪ* MagZxw/mg{٧|ۻl/NݍٸZ#i HOwQ AY(Wmo; l4 eYi}N鷯n J@=H7 LhwTZE块d5t$ WJ{0o[Aj/5$ pꋳMaR*eyq樑.vIlw49N++&NHO&CwpFT\Y`.|⹍? aڌI@gg④Gu}ύv/~stx#qQ}_/V+͹MԚ1Y.vD(4h5pTZǹ"dyZ "CAQ:+$ ab;讹VPuIc޺;~`$lξ-NRY56uR -6瞻PMřfo:3>?6L#! 1eJ[9'j\9Br̤1Y!=\) @TQmxFQ͡"c )cgwքA>}[c~f6I>ɜez7q>w^!yCE<=^XXݼV؊05: qj͞ r KzOWT~͹JtI1CqN)'AL_W7w7~'~?Wpgw<(9.{8sẐ1 /]dH]K^GX^If\Pi%96JӊdhE̢0 7 mH +g:~taR ^h8 wڳ<JXyhEuˉӴO(; \5A\."՜Jk`_Ց>- @WLXy>l$c U7n2#3^c0?Wx{ڠ"PiB*"O3^i=a<F^{}cN.2R1t4(0\ٸoŮ3vbhܻ܉#ΥFkgwl}w::~۟~wG0i}ûEz:q+).vךTo^=;+quNUoRUXXQ+5N+.d$Tb2aT ..Æ ƣN[ǽm[Q4h4[-@P &lHfU -4+AlAFEZa)BH 5϶bp'BfWR#g=)EH"j9x" #/5b?;^m՟ޖpdy N Ya\UU}^[;0c[Uq<lXA^P08Hqg~S?{'?N8>Ep|]'}qsO?{et{dL{vYUFˋ0H{{|Ͻ)NMӦۨU)a[m̏䏮^}ǎw>KOOʍ;[j*jpҏ7dK@Uy7nQS6sQ(s@AazhmjhoFC]O1 f P L<1:D)ƣH{F$R*uN4sP|)TkM"DX@=K)Ɣe| z4mc{oW/9<߯}|./.yf-(׻^YUf1觓^^?)lh"b.JSqYo~?~'c(˲$'v׃vs=bQͪ*צƝX1HCb14w|cie l{FsRteAZxmMƿ|Zy3bQ#V=&]Ff` E$dAD$'3x6AXwH5ۍΤi&ޟ[un\ /toĉׯmtŻѣ;FԞɸre(jDEgE1rAedaBbc};2FaT/_ٹ;WW&I]_EwK+gbؽ~xTpv@GȠJu s w (%z d9/_zA#جKc3Xy,k )ˊtx6A)"šA C"шEFtE:뼙Շ6û4SaQ9?ZYYG. ƅR$`=#im/ڢXZ^9y궍+Y+וRZ;4(*[鄬wEuSoI8g~#[GPY;?GZsl4L J(?|ӟFĹ?>:~S'>w"#i ͤ#@L5]ܿ7ggf|v8ȯ b2FnD+a)> 33Wihg-8ji<ưMq )p5G Ffv-h$ !$͒=i|rĝqgfv1rIy}Ñ Ɛ"Dֶ*+-m`0D@U; rq"dYh6wtJCRufm3j{HwN< *Rxu.:!s^{sssݝh8 ~&!v:x$g*=7^xJQIc @ѤH!TU%&" t9γ;]&D° MhcZ!W@DJg:WͮXX2o&o*FC)5[A:h!e HiVZ䙫UoV*C"HItЮyDn(BnJN[n:r_Ux85|z!""8K9u|Cĩ?UfUWe 2aDq001iZVQ+*0 kRO  {CDJ+8A!y֨YBLAJZi@*3 Aڠn0ԍ7*?i n> LW< 'Q~5;(-nZ9ᕽ+IY[)~kǎ{icc1W@RA7Hy',  "BPUU\%&g3 O,ld2@$ 4h+EXkȃg_2 5LFW;Jغ[)s,5߳g*q(rP0`B@b#&ޱxX3Mk,)K@do0rOt΃4֍k򚥆x/S7k'?EPEJ?|^V}enY}|ݬJahˊA[[ifVO'`&4: +0dU30c,@TJJgϮrDJ|@ڱ. 5"zBD?na%^X [Y!" " $Ri[_+ !"Tt``ol/ 0\{ UPX?wxUyxn@5'@B,ֿ>jX(pMv7d/q=EvyEf40We^,`+XDt,,aL &pqlǵma5c 5bl"``IN+nN絊<ږs67pA|Ae?Vk2ɜw=D PJ Q"CSTXmTj~hFEDnf?@!C{ٿM5,ǟL.}C^:o~3_NopkA9)݌}( =;)+l"q:hT%[WIT3־,!hl+))¨.K'Zc@tL`tZXoATe AˊJ9ĉ)J="ҟXkiep+V0wW0s|mMIQ9= xZgVnJ$@StaЌ/BB2e ]p߄uQ Ay@u2Hӟ4h5UpozzxU rp[W", Й>b2{ mNWxa_y<~oOO!x/r\#,=8RY:Dʝ#OO|v>ؼ=\K_63l g?ژ9A}(B^cJHE1v}k/cW`H!xdw(x!"DZcaƐ€,M]7 "orSfEsNPOm aiIA AEh"D8m3: .nJh""Zxngs#D{]=[_Qdgwѩm63;o|M1:2@}6rY슀1FiZo- qY6RyGZaqVQ DX,s03 xNP9a"!"QPk}@B (NP5Q*%ft ΋0M`J`xӭis?hM楿j`yCdn45 vCrPzU[Zp%-|/]<'wFAB?sdqe&&E:'l+:|oߎkׯwg}xN {=0 Ga x+X[rU)NWA>4;j"Wھ4T\U O}]?/&n6̢2:@EP(J TRt{])r5Fb&LjT R22Z|5ۊN̝5 UP==&jx8=X/[a7XoV0Ѝomjʇu:QFiK`|zcsp>2~ E!<j݊yµc+g/ vzKϚ;&)'4uڟYJ@ߑ1k-tH[z/n{*"jMEޣ ?W+aŕ'RxP<3˗oUy{49QD(Y(D,ˌ1zjl(THi]b*qa !Z(9Z4mwԗcŽQ)B6o7 Lj/0zGQIڪAm0=s֡5+daMO^xEN"&B<O B:|ٳhJ?ˉVb<61 ^9TNQg3UF_7ݫzcCtM9  >i5atA@I!=qdA{ .=u̞/^'$@|((ʲdfQYZ++C$aE PQdL(AB@F"EAEUy[.$+kscDD, 1 BgmQUރ8焥 %^[y5߃*^xkZ>7Ͽy}'_"sp tl$YY2 mggNٹv sUyۑ![{Y)JWlgu!:qTۻ_~}dgh1ZF;\"[xe1Yf҂MPJPVǖEe㸣5GC5?rSF_d:8nʁawί,wZA+s ;qeY2ilDabڂ](p"h~8B!!Zo"`H6o29O<#u t'<}zۃ l.yOO?}3G?w/*8p1UC{#pۼ1Zw9{h8NJQzPDznuCL"֎F<<{,t;6ȑ&r16/{~U-Vn>△V+V ]E8jUv4W%̾j +k9C[5~Of9ԙCs8hS9LDq4QԌFI ؈xQFIkLDfsOci^.65)"#bRjW;3xznNXUȼmw‡9N~3Fd0 Ϝïg<5!Ta4V:~2YR67ן{7~( ιO@JV)흭J5܉(s)=pdfT_iSw<{|8w EVl 6*RHhtoHIيKTj5CH"c$_TP;kEDQ72 u AA hāʹ7*f&0H(Z7[`:+\d{/>uda+tr=:«a ^gz6onCVc{GqWQf_W{n?_Co}i^zϟٻ/GW(Mm *ː T–)#׎>џ_??f/N" )VHD3R2kkC7Gۓ~W- f}ѕ{c߆̲ yY+rV2;hfPⱅa(< @QYVӴ::)TUV107 |.xEC7@U6,ps !0q8׎rHT҉ С PqpZUq6(pv= ojKty VGu=:\->÷=z?M _|~7>kR\ 3o}׾λJ"a EgU*G$ o>gчWBD""{faς<%f&GfSK4 ^9hjUuLg&trmglwN3԰¤P4%\ج6ŶaL9UToZknn& &zTt`~p^E cl}-ny Pj@aɓ|fҠZi: "aE\9mk;t§V̉3W(xRko^x_WoPUeJ|A_/2FraFvl{OT㱵0}𝷽A۞2[c/=ԹAgw$wؼ;ng0 B[d"j-~3O|? ?uףa ƑzftL34z6#+yhV%arerQ4fs3g&xNɼʹu(#X}<֎. B7:8I*`${X QB$" VGLh|`EA$0=OͼS#@A(bif^Gɰq^+ǗfWgQVv$nwև/ ԥ`-Ea/0;aϨ! M{oNM7K"i7{l k[=w ֪e"=o^_#yoтaCw/ڳhRo9 901ͨug5P m=\_Fg*"{uM7BT̡^ +IB'Oi\& s˝ؐ0ܕ3'O/.7?RT,6x~ D#a7 `$dϯWe@ɼ1L߳TxzsӁA`8@DTS/N+>q4`gwS߉i캽/,;pަ%ms}gO7> `F: A(E(-lqYVo _]5W'tсG YYxJS*((@ A %v^U{w#/ۯ\>+g/>;#A{"wϬZ[Y^]6pיt@'཯ 8[V9Ww5pWBY90j50v/b9kZ$iLuO~#f[PkkR" V'ٷE1{/̎44HuuM'"B HQ5dtӿ }>VWOS41xgj$TDJ8:ǾEMQ¢&;98wac9Σb2+򱷅(.{s bgVq:9Nt,,@ăr/40yS(4mЎVYGaHA H QE㊃$x~W~di᫲];Ov/s_]bbڅJwCB̍f]QDNC;NǟsSӓ DEquͫ]](($Ii&癞+xy~aP~zz޺'1d`feNDQlRR2?)3[C9BZiFF4=՚K,hzFi/0`Jڻ#RQGF9S~aTB&Rʶm"* #$P2282[ v1"Τ+EOAgL7|ׁZX`2JTFaH=pqTiILlR`Jcbq*D)[r}]}H`H7%5i |Oe}LlO§b0xTku\5=5#Z-.ciGibZ hzMu*nٞmї4JWTB-YaۣO7=tnW^a cE&\puRH AqδqFZC-dIe Fmbxtlۺ{dl{`zzfžA` =tH&\' t˰M!pZ-,0`|T+ KCDH@[ ҩt)U]` 6U*Spn#4!RْrX1.`t[]tk-|X{c@jZ>6Ġ,՜1Ai`Mnl3VwY!c@G<OyI5 q`~# s t( pNn>2td߁bKo~pOC[r1+9ky7ml箃A2CDddfߜ^ C) "M #c^mR~90>:<66:Sz*!tS3vqlZv89gtjpa  Bc@3DbDɄr+%ZCEe 9_ &MۜK%3DO3DPS5DBEZ,CYi/R2%m ˵z68($,1-lm]KZ+3B NBhhDZ8ECH)" cS{ٽtn .fr]쟡Y)̾B5 ܚe'SMӤ0GDё7Niɱ9a-oAkg=̓C੤AO!K(kBSp/үx~r'rNF&&b!"pd$51ƳL\SZsT" n].Yҹh%wk^T*VH*'?4=9:6@H _8ݩ$W @BɒTR `W3@dT1N9KufE9 ו*j59s VW: gtHZk*hبS2%-aZm 7`##q ;29f( $ $1 8z#|CROAi?bYz3%;|Sc0J-U/3hkmW\wWPF%rxǤ9#c׿?3VdXk$ CDASP*7Gf{ܻ+F4Tʕ/B*z~HeloZOpYQ&J\iJk@i Q(5iFMtJOS懡c ՈTBƹxQG8T m|}(0VZU35&֔-6MBQP-=\5Z2*Pij4us-""Jq"c(DL<}B>'jstMBBߟHY-y(lC6]ʰ8묳OS\YQ0Sj٦ՂcmBfQ:eow_o^SƉ,$(JJRJqJ q-ƦJjJf]+Rh׬εӣJB-ЇF&C 8*\EMfU}72bHM+/iI8` ȤR!E "ubp;% ! c )!a骚eL0R uLD*ڍ:n(ɓI-RED M!N4!G "e- -8% ۀ'*ӚPfYB $BeIJI&YgL<2:YCK2dKe)+QJ6'pxy N0l O51&bcnI;Bt"_{ ?G2t҄ 2.0 #0 (Y.?DӰ22TWܕMadM{~aDrT*ׅ0lboEΒ&qtL"MPpd$zhvegLg4v<P?C=䠥䤈qIe[BD;Rj6M I9ifj` !N?l45҄Ӥhia0HHp $(!@AF* }ĄP* 0`q =OOq'];0:85T@1Rf.KAF$8"~>w|$s%^ɷtfx#% @[|,0{t 7k_vuk8#")ea6 PI&!FՖC#g,dѨ:'%iIkF.+U?ܚ6=D e&"I؉gIjRi"@&eם+/q2LŽ=Rem *<>TC~YX̫2|BgH[ׄF`$imiAfCR9c R)"ґ҂!hlA$,֖DzIX)*u%869\ٗɄa !%JbA023@V}%cV8!Y?SK8ox'-x|2h~HGCF3/KQZ}hi=鄡uThRO|7BshnZG Mum[92jc(4M3qX{{Q)RJH3J7G.X@i&M[9&6"ĩ Q/44)t6FZa\k#BR#BT*tm C*ȸOh&=\:.mHfMg~*]sϧ5m!@sIF6D)` TRVP1*mC2I;?/Ө4z8Q9% l)R- H:VĘ:ԠQojI* P1_7-b?{d)rPJfIXU= mt[Z "`(%ZYk+Jyt(uKHt(71cRCx2MSޑ^5oۃc\@h@!TJ5"-52d[:s݅y&֑4yJTRu ]m4 ިtO5y0luvY'lvJ@(ROBE8<g{Tȶ ")LELnPER+nա$M3 #xN3s; G#I(KePEh *taϏ S1_'阺PǽhctԤAOjò8B@X?!o]ˤK䲋)?-bW)@T, X7ܯiӨMURJ((vOkY Ӝq(PJEʴB0r. Fhiը~ЈԜ Ӵ)XZ6Re҉D:JmJ7MPpn hP# =SABhR3~ GHT38# R!&h޼yɤm ۹ڻ1 LC0@@ʴ-ӶS -eSkE2B5P+6m$4% (% 5|'O Wk~H[F -[ӑuaE "d|z!, ;`4<$@ b̢c4kMXF)ͅ16#ߏRFģ,8F4Q:D!dH81S$ݠ&LA(C%K5ol|jRT*Ink-I+I )Hk9 2b 5W& 1IMSZE-KL(I#ei$n#9(UK&Už,R$#JiL̈ݱћ9| K*~ɤE uD !Hi i&95ئZJbdH(TJZĚIę@ JL,L r`rr &YJ%WLntH 5c(*zK&0s(5ȓHZ =iƾ5Ht4'@ԊT$9JIEbT}x!RWJb*4zTɩJ& ]mxu߭2RmCt& D:iɜ\R+F0}$˘A@g~Yq&= C6(a(53TʖzL iJDDJSҲ(C Zm;Gw/3hrF@AiB0LfZН{~stb4 ` 9h[XxO#24g@q JZ09dafB+D`K,LK@R\xKVuIJmA a-=cji-&HJ$U"nmpΧ+Y2NshntEEZE,* R*Jc@d*%#9QOOiŔ vk!NbrlSk/Za$~||OZeZII*J]mM) cLMiTZŤ1(`dJHpwHQ@2 NReRtUr ie >S*َ2LѨ7@"Da\&H9LHt/?6jeYQ*P"I'A+Ɂ`v,u G]G!&C5]m>3@$!p~hSOKG$3$5191 0E=\u3!F#IG2NA#&V :y7"HH!H uL HRhBԠz4'p܎FƓ4CQJe J%iXe atݯ8|hIt=~;oёZi"ǙpBȐ1(Vr_o=HFjXDI08WRT PQQi%5ȯV*x)΢& 3,r#Cԑ$ŒhX $fò,',C Es .? ?zO 0R40RRE M)y0Mzzq-NiA@dTP: 5c4DD,`4OOdZKe0Ii`2&5HW l$SSsLJȲ " #P1L)cB#R09pl{I $8~\I)W0 <089sa:&3m Ԟ P\D,3u;Ul+2}x@! ZM.4Yw-EfZR #7{@0^SZQ ZIRڗ:adLm.xJthJ8<68:uj8gVLkJ[\RM4! 8)` @i~ &lҍ)n|UDȸEiȏ扬{eL´ #E5<6Lf2N6$Vn925Y M՚R!kr Qp8HyPjm=gq+-04oIٽZN=팫 25IFCn&Gf #ř%J BD2J`ܶEf:@͘%l"2rlku+֞V)>M>ohtR7xP9q?0$J!@[S1XtvګҚղڶ:a#QeY.Q5aW6S+.PZj J'R94Ҿk-ol5Q&#RU: %6QŸ8U + ᎜$ 0COOռK?љ CdZRf"S)kr`f&>햟)d3*r~k"zl3h4HӼyN9B#llai)#8 <ڨsӺu O^4 kHq{Mw-sVJ 0L@  JZj<л$ R"*Ƹ#NXg:׭;3''6=-?ޭO7-KCzP+ @ɺI)|cW./7zJgIL*F4Q=5gPP:#t%1 |K- Rte]+]Tl9sߑ-- cI 1yhb14qv4 ڌ7X9)S7R [3 ɆľoM痟89!غ]]җ@C 'pBDtUWƧ$"a:CC6jPFOZwK^ ZZ A#,.2Xb L{V\~q.Fd٦,}E`Iy"ݹd}r2)C؈L) H3TXRos8{oW>=2t(L?P H`1DTn:5V洶)'RGH#噊W"2m Q@RBU;z.a˻ DȥK<{ :SAn0DN 2x TRu}::ߑ6˓*Lp!hHFLGtԢIGK:HZ!iPnD9űb19[-D*<n#S9K9T)2lG{֪X,"aL*ČQ(芗RX|<=u_z.H%Lj1go@4yGZpcTf5\.Lږe (Z3D@-V62]Zǽ'41dGfnDЌ3@@ d{ WSzvL= VF #7ݻOx:dV kHI*[ =iE@ھ}9nIs25B-;fУ+Y3*d~s !0N0H0TD2AqX^Xo¯m'|0x:ak nb5]x=& ,iOUƦ TL-!д Eg2FTT $2K/3-|Қ v,p]n"lGNȡZ,^vk׭3M#=1Lӌ}82nj9GB X2`$"-5d> ['p`ZrYiuU.x"hXB Q g]d @ᘿBbЏQ 9GfL薛#I&Jgdp)n4g ,M@i"l@NZEy]I3\c܏x. h`Ǒ Dd\kML5fa fhЀDZj@DOcPȐ4 ilUR*T]s.|pџi>ٿLk8FV1ς0 A+, ,4 5͚g# -Lh 1eAQI#%\׃Fz Zfi4/d`2DS]X>Bg{sm"v5BhR^^(pa]8~6iDU? s鲕)dJg8+XdMR js2bStHDqD:GS10 3/p,~O^~K_A ]N#TTm4*v*M'302msM-L(uc5ѭqN@*  !&t`L(yq'*G4N AS-;nP""37K\Mf3hD@2tiʳTqg#"$; ih vLD{A44RJ!0IUDDAXt̒i`oen(7r#$qDQs1N@`\0>1lM($05I9z#鶩+'s4 "CMic z%/oǮBϻӟV0XRkY0 d1)sr3#V2ӄiQ/@*`X Xk 2C@!mH*~F|6S=q<ݧ:zSb6L$"$ov$h0 `ulwl?3"`λ$gDp* !4& 5jmD_f(" Ҁ XIsq@D#@>噙T&m'HPFK u!  Ik? jJ&lt5clb4NC)+!Bg?iBʀ34,~%-BYQ{UsˈdyZ"!X1C=qdD5x#LPSu(QhCռ31m!A]k8̹HHM]M86FE/W רka&bm3J( : C"RJEJgkItQɬF[7{Mđ"Oʟuozd1#`S-.c,p"3xܷE>V$,Ҡ03Y|Q-Oَ qE#j yBc*j3Տ5Vg/*8i:f<Ƀ&*JŐIB0 ?H BØ~ f@T/Z1"i8CGwfB"2Dx[g)@0NZ+0\H)ERpIf*E2",%A Cj&1"+x|*Ȉx>0R",K.&E NL v YC[nTJj#ܱ]~|fW3D񂭡ɟdp@ {kZUydcǪ]ln8*%x 'BҚF ?ADD!Db Z+uGҊb=(4 eQ?Q@`Pd88&GHk%9dB1ÇEd3 @ BORZP(YsE Vr+cK3eŵ;"TwT|IqNW8mX号\vG^տ:#m4|s! .~̙X4xs8*3#2?_xYWlYyn}꩸R8"ٍ%&*"#҃o5 1@ Hsd R9Cl k EkKHWlT])(^}2S'5_|x, }碶{^/ĥg<Z8=Ӷ:۷nm;:ʤYD%|qv| a8<<m߾}/{˒m&&&rj/,Xw ☔B{̆qJkIHQRVԘә̴ B4PXZ1Rgi q4 |Њ)0aHTň@J'ɹNRx҈aF, 0~ѡLu?zo^ Xsj@ qLpтEkK~f}{ AVB5>>[%Q) Z/~ooqΝwqGWWR?ƍ8RRXx}-=G!N+ҡRR&b3Q*Ie#͌a N=Py>\kF" 9gDL1SR* Id I96 HXI0P@!Cm=X@lgS{?3Fw~[֬>8s!-F9-eg='XjŬv5T~z7~@u/{Z }N+ˈAgg^8666<rWuMj q^a=ClE/(ܲN n=֞S(tȞfJd2iYc=V(?JUU":DjY6Va|_qt5!jƍЋt4sjdQUkIg֌)jKoUGUuz^^C(0 5[DM'ffr!F΄, N"E2‰-#ouQE\>y HJ=J>-a?kO}'=!4M] ix#`N|6]ߺnφ[ynPD NNR˕}NK½{G_+&8nd^S3NMc|ѯ}kO<W\QT,Yk׮38h Ӌ*ZchM׎r GT肇9ﮅꑔ~2eK2=03&Dn'Gb< "95@%ʰf$- +FDHCOo0l$&7zF:|e0"$2Lkht0F'"uwq.gbDuKmsQ;n;-s_\uM齍Ka ~9X`"s=\.Ϗ?Sggt__߮]{/}KU8Veo8`H o`f̩y9W|I99@mPO T҂J𪋩ٓp'osOPa@"ɕ0z]F\?^-K%M(8D ٷ ij)_Fɵ|HXq@` Lt̫,]@ +_?'p` c(S<.VDBurjוּ=xKH#>yX@[ӽA,Єʱ#G8s9}ꚜZ|9ݻwϞ={yI~J A)Hg/`}ڞrHVfzR4"C-E驆К(PHwnw ԟ/dq_l_1u}8j` 5"Y\nK j0VAL#PyfdJ ThHBGgw&q;g7㿫% k2n I&UHƅ6FT(V(w'` ^wlMuHPlEYWbcACSd2Q]}^xa[[g?Fg?Y[[c.'Q(1d03;HYA(xѡ ]ʿokP<2՞KG#T}}u3c6a$0c Lzd—wa2~|c]Ne_"I5Cq,S Ι*#;ڝbbvg V-(viۈ )۶9?Ӡi>Poہ"㹉7Y<T+gms RE{e@aRꫯn4ryÆ az뭯~Sԯ~n}-!"f͔'-[AkMp&J54(@ZGGC-4gFܘ G{7ũ\bpHj\rdo{[k\Xl;TmϥAô [e`d E4 |Le-#+N;<'!-41ȫHS. 1bV='s"!MYʓ[wj; !7'*,/#aAh[fƶ~Tk~+kox_xJSyZdPo`y:! Ӳ`6V8p .]tʕBjkkk4G=I$J*a|ӫݺtZb2ba (GoTNjVoYIߕkk}MfsZM8텮?T9}= DJ8*DV0 VONim3!P"YU`dz9a p\' ;F<-JqG}b(n _K:|޻W/\,Y6h @M5^z_}m6-KIIX#X2[ot:}C ;oCCC@ L/{ӟY'&aDDf-44*a ? <@+h^ \=_=7mùKW8g.6I u9FbI] H$=)I lM5Eҭ/`e$,r5PFԄJQP2V2&Z+Uuܮ{t.5uR9?b`P Y =NgAr^eh ,$hOw?{W_9o\5]0I!LDC̾z ŗ>Ⴛ#.2K0=ܱ+W|{1Mo^8b1|佣'ec] 5~'|t6Y 4TiO|ӉKxCIΘQ6*{ZNƪTĞDZpHar`l2q ?`9-,%Kht:ZD"X˰M!s&ow)Cθxk,?]΋\#&#Xr:B&JX1 Ex-R0e9ֆt>S'y՛.TgY8 |@cwIHp0n>@>0"~'`qV"Ś\&%] `NIwzCQ+rk3[y>S_*`qnV, 8c̙o?EQwŚ i|7,B"L G~{dtY*24ªŭåՋ 2IvCs:-2ѵr3v4ˮ<`A:m2`hٖ6-` m002 @ LAc:#Y05&3rˎyoYǽ swƙ;wzf-p L@(.Xet>4"i޾~Z_{ T=jzֱI3(M2iwb4YSDN%d6|bq ;&64ЄŸ k>2ǹkNEE?{=V{ɂWwi-^uneW?rS.Zp+t Ȏ)o[#}7w˳ /[{NIq>I(nYOn=Cq* R ɻu[ggN ]y3ڒ&Ymiǘӣ۲LI d4i֖,c0^AJFt=J: @Nl͇^xؾ_ڳGrtр9pÄ,G'ctq)?6wu4!"Z(G8_o!13菎"$-Qq)C /UT$J̀p(^U^c`;-:':2[=zߕyD2_WaX઱nسgi99T܍Sg-eFn[{h3ZG~5֛Ł%i半2YY bLz肆 # s.? xϷo_Vln:0@}klXɬas* x$\#{_9|D1a/NoGS\ ?xʆ62yՈhA0t &g~%Zl~hU2L.uƼ/7 CIE94-&hR2i9qNޑFs!j2l3x=UT0MkXA _׿MoUjrs&+ƉɅhRl!)GW$<@kl5;t[Oуn&bA>Z%UgRf"~rpj޻sG`+Sax?]ρ|t7=j I\Bu>ZT.S3>=0;t-3 L`tX}'u ,.Z5as@K%({pz0@l^SԾ 64?C?jeX*bg5q`%vYl1! .c(Ah87/|g~mOק}?]ȅ]|u?fÐzx'򏟦I4!Ûyӿ}_BX N,y׿k?/Q5(F״֠ՅXnO{.7r=&0S4py-mI]K!|m}-vwν~3OܾwMΈC "i3h DJɻoc], rC윪Oۿjղ3OPJW!( A0Hd^z,:w/9ّ ' h.:&vE?G?xtWR+:opփ۷UђK֯93O=ƚo>95~[?o)#dH_ Ǐ/5 b9R a|?_gf(?~B+3$@& oOp9ٟ]wŻ!xGWk>;X; CtJҗwӓr6e[zqk^7L5]~o˜_97_f-b&G~{sKVuwUws L@lF3 k+Hq铕9] X(wWV\* ~XbӠŜ+p+ݛ?8a;V̉v NZix;z $Iƃ#bKoi1.z1J7>񳺾mfKyQXs{Fb3\O|ho?;}WNoϝ5s'7]hq HАU! 1kG?D)i)* U]:]8SFLy({߼5YQZMH⸷{ BA`p`edQѕ`<2{ܵI 5F%5aLǀGno_IglCq 7Ie}g^rF=ߟjRsxb/~KsҤRU50_-uoig'ƄTR:ROBo?HJW^Z"*;ܷwٵɛs(fgQ{rzC_ jJta"Jfs@6Ƥq͵=גV/t/sX&7n}}baߓۣT ߶.{mwt-:'ud Nchw_ޟ+}cH"2?7_Oo~\UJ KLOM^TlɞUK0qǞÉɚ{' =t1Khl sBW$Lv3׿gYo(3:BVRQ:vVt>!M[󳯡S[5̤<&)"<ّ1.+T'e;/%x۲*1`h;V\/|܃-{~V? 9 -ʼ??qhbP@{F ʰoo\^{w2Y %%8&HSCR3} ȶI8Nر:7|?G#*΄~z`oeX nY+{6i^4Zf@K~w-&Td̜'>k_>qє)!]Φ+^ڙȬ6:)#C) a[w /^P*d*H{U%CX&RBLK8NP?܊%^reK\lK)zn縶ٹԉqMJ##3'Gp [Pԩyx_KemooDB~8Gdψ u#ɟ|Kgu^?e(V8)>w+ɱmw%Vgrm+;Wléxۢ.ϋQ~N;YD?s,g-m[{ ^<{_kMnpxguƑuZ~οK_]G`.uak{]K 8'oЪ~&MDZXUϟеn?˟~`λbpP4U$\:^w VwznВ̝̰ۼĶ]tȸX⿟8нIҵ5Xh=moo_,dy[iEo`-JVգG 8A8쾷ھ}_>쵛k_v Zf]Z'"%hU7lK 5qpǏtKVeuƺ7Ɠf'AO_0 @iGtET mw%D!)Z`BpU(x\*:ꆉtЛ)#vd㿽plOIF5TGa-[Z'O5S@c7RP'iS7p\ [W%*=L;K1Ӏg t7;AJiVide^)Mv&N}\9Y(u \M09p䱫W!Dhz`/Ƽy hEb`$ezC wƣrpq*gn:,VҒK~~+=FOz}/[sJ{X]jS3֝q_M/99s)-],ZEͿt1,y^z/nKhaŶR͝bx% F%1dF@Z% I P 6KfZF iiPL}{h}[6ЫY9;dVꅧϝdJ0x_~~Bih!J#=-S3mV'A;5Gшt#hJZZr3s/sv@}5n Sn "S:b}}m֔iiM IP}0v+43|"L%2٬iMu|=V,]ܭ[w?yEol% ߞF]GahGǧqQia ht摒^X-J5)A'5ƪw?g?7y[ihԏ)iuAK6UkBOo;f7Kֽ7\ʴ`g \+gb VJkݗu a= h^ţ[feMV;E`PЌ}˕7-;̹_x|FSW&Zm?'"w?wTx/J:GpZ4-C%MDSrE#f$L *bR0郻f PwwweZ0K׬;%8<޴5ԡG-^Ph,Zu3;v)dLL\YkiTJ)ݒ6RI:4U_ۉˊR葈\KGNy]=B@d=@ a|}cWϵZ"EX'$9u sl.xD`&mX PRsƮƝ7]979Fm_Ʀ {伺\ 5ygX_vJy^N6-y߽{K~5Ҿ3ZpXOxim3˜:C-Pi`wLdv9G_Ycw זdK&7tӖ-kjyq@i1;"Ι3!MR9C>OHAZ&-ci;{4>xmv 8%I6鲴u^u7L#9O=1y?>7?0ÿ|V p$G7C+l9w~tٿ4moټ2'<8pӴJg%X"UnPnq:%JD0s~`sgOSwkFiREO*tX4]6fک1 ʶU"EBzྉD@ M1@=kx2aUQE#as+3:maw7<l>0v ޮ`Ǐ-ur%w=/}`ǒ/\S }T.H:sN;,^%McgM֗gx' WoMIfeA/.{P}ZDd>4:1Ya Py|s}0LX,,2$1,?4]utjgG O; |Ƿ^ٟZiI{ah4^k*acuG޼QU+:*J)ӟev/ш2|_/0_tRZn(X;熻-YN1EiWxg?c .yO#;HG\Ef{˻q/+r`MOzgYVx;\ۓ׿5/m'>-ᔯgWj'_сSdb6v* :L?7|aJ9#[$uQfmgcn?|ޮ+3ʋCL'G#HhbE~M :tC?@w;r蜏, s-wy̭cT? ±_ItR}ܷr>f&!g_O$eWLdѨ~p߯(H!gDr'>p{no}fjch괃ڱ1bn<)mY=S~rF-K{3}Iaᒧl"\< +#TiN'fh5/HJKNd| (Jfs|bzsz;eBD?',ٚ@Hibd#Q(gZ7mI??~>\5kz}'^rh:+/_.If ?~#EFg* G`xZ1>t%-c?e__{`cbJ"-;-Q쟚q;Ln߶d?{q:?1Տ~룋/l+HIlgݖh V }s}픋K^6oEKWMfi+OQ PBS^_d.k_vA@U  If uH.S.48=>ؑ&M!F]evB~4JMzh< U>(pft.D YcD![-F(І 2bH2]9cyO[}i7근Ǜ~~բ>:o}1Rgm 3O`dUq_k"zӣ՜X?pݎ~}]7W&÷o{Oh7ўMde4eӡݣOpECn)ԋsb&La/=s:Mn>ijK:~OZ[񾻾q}~2K;w}!{`7.pZݵ"cpu/?9;epRc&v6u_fVf + S9)k)oՊRx&x$҈LFn~-J L"sK?~ (̄{<-L NZ A@'L_! DY0yP`bY3[IӔli%@ڤZ:D9?u6t}{x,^?dz{O_sVKږ<0,ZgsR]7 e`o{o[&ew;:۽y':yu/(]Φ;n~z4>mZ3uҴodK|,|3c?@&r_[+]qΚy @ ][x szne?߅s̊JM&bx\pn "23UKvVn_?O{Ea ,!P?k=G~&pM~:ym/{)#8X1N*zwۄlyD&[lvLoscex'؆ܡS3߫I3bP`XL fb[ɮt*hp|&w)h,˳3a۪gzT3/\ϗ? {FKrtS k1zi &VK,$~OkuOvĝ{V[i?_O |+,O^ƹ3p[y-N1=eF&B9"( m&@$!DHT˓ozA~Ù  kF MÁuYI'Kn>ݱcok@ILRLp$[H P5:bhjJgY|Ȟy_Ͽޫ_}dMk_YLgR?g+Zon:@#דX.zg=֧F1ӑǷO8%Ɂ'Ƴ{{/YV{TnݷsɁ CA6(XBeY'e}~%ge&19u}sN{Suvb`_[NXkC-gϿ?MS~jj2TY+/-3bٙƍ˺sŎ;|+Kϵwgl3K6(xr@ ;#x'}?iمxv'I:nEm1ȏYY8{ryQŖ{vyx~[SD12}+sxhs6[6Cv6ؿw?>ң/<{'Z|_WP$+LnϽ#>8ro? iSk-F<6Nonx=3Yj}\NL8?}->i_~znvrc%} ;KQӜV5zD|o_ >G Ǫ~5n-c.®}/oM qlB5nکLx_|*$bx@v;Fp\`- #DF2?nP۾}CY|>pG^i[jDIO`.>pחP8ItnQHHapGTS,~(;\ᶿ+wlp&{llZ! H!Dm蚉nbR|y|^ٌ4I&9W)EN99ub|;Vi|Jyzf:N$D4>>`iiIJ6~OZ!8m+n>_}F-{~Z\+ 2xU139i\} f+Sqꮍb"Unşrw<L6T.{ w >u_8غ 392eq m!ٗot3[8rai8XT;KFv:1|@?۵y/k?Z1$ݒ#OHBI6J{(}7 ]2g D@TΉNosaaQVe]B2<ұ%Q2H8fRYk vN@UC'Jw|s]C~|/_[ygvl<땗'*w©7܆ߦr>>/B޺S; +|+c?zݲ@փ;x`I8 &=7{oo]PYLج :1ogdPa<m) :JI-qx̙|/>s\"kٵY)1jic~={?uLH+;BCCCJ8283Fd)囮)uMbK;~!_>w ֺ/cE+y3g~g)Ц7i2?^ߚ?7Wxf +mw= ,&hi:̇>~/u>1!ilw˞/ѥ7Cg[#81;;_NCof3׉%`l7xnaW uɥ gήyAK‡50 ABnv]wu7oذadddia^ ~bUJu]!D$J))fW+RԿp/K^pݝg=cF3͏Lu1d/^id,+E.b {m߲FrmAZ{9ja pEtvJ, `BJkl6y۶mw޽{I$z\,HHDJIy RW2Ry藿 6 _%B^B' 2| J&0wk7NrT b}S9'2\mK9s?ݾF d\ ` N1m4xp[("".&; Q6X5R?S,ݭɃ53*BqB眐tǶv۾M?i۾ X2 uD|bL57=rӌn1CU^'+ sMpK$X'y?qV;t3.F˧69=ϼx?r?1q7 !* 5r'<Waokm>e0Fc L`}LvQpqH%]Co/!? 0䄟8'ֿՁCM5OP?żԋ ݝg5 yJV$,@$'@8]{i*|L̶Vu]{6nxɓ'O۷obb$C=n:xTR9rȇ?[9s&ͦq%76tKR6lZ>ht:v; '0y M׻@k ݜImN&F?,owp6%`ֽ֮MLa@#-<0gW޼/l.A6]LL$j3 `G mGm$޿纭Ӷbo]kqt[Q`bJ,ZIxps+b˛7?8R_&$Ožrd;i_~ Q7bGQޑ0WOO $r-ZC{gΜqwgT*I<쳞u]g20 $8UV,)D6}׻5::*H}y8-׵ `a]{Ǟ'/m\ j%ulsϮ9زj5'뉣%oʖ~okqWAkHCK0ňJ'oppI~;nK׼Mrm1~3,&dO|m7upHYr,B0\n˚LU:3{z{WQSRa`#_ԭ2pbslkkj(e6 2...|_q>{;7߼qƉl6ԥ!KpI_P(͍!rv3<300zA-5׽Lnō=\$ :#2hƎݹ۹7g|(VJŊ~Om'ۧj'^۪+ a9h[]\~v+YǮxߚ}x77lF]wm0GNG\|?EEb1?S'85_ġ:BЋ–JCc/}y;~l$}_;eot븙\l %Ԣ9<|IXfl ~UJ8pw~wnB?sssÍFchhĉoOAQf??tcǎZ''wuW\N>_TVVV\\.oذӏ<}WT Z b&ȷyW=,EG6kaf6ְe-HJn KZk bh$$ ͫDXj7Z={J^KABX$.KY֋җ [uQNZmAD A ^xOUvMMzǖ)J)tC}Io[Mt"h-cެ6Ң;^ͩ2 J7˸ )b%L21Ӆ.l%*"Ěs=lkR2 0<pbr&] ))|"f M03`"]z]AYc-2m,C !`l{6,eJמ֖tgfX|-?F>*?< |`o>|-W+x6)fEo1KN/5v?0XIv 0 R5Vk RCihMK`Sh7W\j=r[ZDDҲڦ_0~QWd0czjm 5l퀘-bn^ٹGؗ5m=E2A`0v%DXhP^<9[d{v!yzLn A(9ـu7>mK! WpJ.=7 ݓkV?D껧 _Ei,FI!}P$$QKJ({96;,a =jbF_,7WDWABwX}A %!=֒Zl R?G儵)r#؂DefXyׂZ~+LRY>v٪@x+gM4t3w66/dOGB2鬃|#Xէcyޠf1H@q~z#f4HMZz E!)Fݑ2|ϒ Abrj! m[63J:t`nno}_-T{7͎RTxMIwd !ϟ8?$l)6cs㺅|\ȟ>sFJY(J:NvQ3^wMIFwq>ƌƒFB9 Ѳ0 f,$|M+j;``:ŒE"b!AbŠ0 .!gPܑIdl n4/@.Т͚t;T/R}AZ6>FI#tQ8Ƅ$JLbL8 RXl!{C 2tlW_Lu_!rnmK$atgn{˶k7m)|^>r]^Q8rXLO'qL C(ua3ΝItu2e+4;Qqt z>/'A֘7AP[5k d2i)I2Л+Đ!bH\s yq,APr)/5 p \a,е]Fa8ŗVJ$KO>}oy}7q롯~9 m>ˆt!o~0w l̼FhY,:3 \ (Ke@V O)Q$b!K *(; "($efDożF1"a̰ a-Z(g\\X" RR'*i yJ|&/r9ٸk5;6 )P:κA2$ u޸o-&;tO;Ks2iNKv$&q׬ (J3R8$I\,srÇK~ƍzݨf2B&>֚3*SlfT$Z%lnYk6O _gBҍїY+1VG)hz몌v[!yG( r *lq j$tXZzډrDed2bt85Õho]7_~/uɹgzł!WR) H[N\t;X%!Ŵ6;4-ڌe"drhmVzIGhs(Bĭs D00j`@^ +4P7%,%2FE1%;n{|HksY5`fu3vM o+aA$03>LJ)lV7*2z۝7SOra7̧Y!z9cBxB6adK;7{&ɗs'o>3ϑKK FsڐE$2Y%M (ml1tVV*a7V, (dݶMGKA g'+$]Օ\!ZE+#HJ\2_LC) 0r# t6'`\bFɐ@I@Xp6&;jشmo84+N $Ę BB #в2@`$T"̉dEm%"BDiH M_Y{ounر~Jace%_$ٳ $"5&IMvK> ]Ս0Yd4-+lV3cCf;9Q>n9anG2De;QZG:4mɸ~זBAGb|tt2#f^^Z)dF9Mq}iG~R\6Vp%v70^wm!H`Xh,4-$P5hXd -EQ+0u>N MbYJFqD\xxj?x@Ԍ#r&ϭT"?s`8d;(J91$eDN"K(պk]Chd%5,OukWĨhLjX1\ؤA/ZL3jE"9@g%JFeOӦ <3;?1<0X+vEpxf`0çO/S vd\!,&2?3^CLREr .ܑ_jEI9֭[z2KEam}(qqKYLL$q°EQTT5$2ڲ%m&>SO|k+Z{\$IFzgzqRl`!w{6o]?RݲoܼPDjc8z= cAcG>54c 0 ` !/aEBC91SmΨFG>'"@vIѶEh бV>p`@k\El0@D(>15ej1)"Z{є&I%t+(yĘUvQEyM Iu*׾y;C0)1=`HKQiۮRJ*.˕J>2[clbz[_(qS꒣Y9_M8d:Qtm@m~$Ș$I6=`'^-l:5Ϡ+!aC( lAl͊ğIK!߾-:Qvl6oQV`hFY(  Lۘ!u,zm _`X!x@̗0$?ݲտ~0bd ]̮ԇzgivuw+@oؽcl$izX>U,` XV)֊I ۫wݘu&ZvIy̅6bfu'J{4n7X7}v+1G=7$#P:fp9䎌R44l"fcc7#1<ڠ@G@K! |G8`܁Ks"Y]*4Rtپ䞢d@\iv0p'vӨe+Ia^59WwYc6[Gqacd_H˷Q+}kOuaݿ_r_&J H)r )te'Ulwoظ̨DK,.YmۣC 1 "H[N@fJޅ{V23b&gjp?Ý:/6H.P#H.DLL=8hw^-jZ`j$`4в֘5X8@I `QXm WHV1+dvOlcW9쫿hGڰFc,3\6I"ǤNd"fN~F3qfq\q%$HDQ(em`fu62bKʲ5Ƥ:훷ւэ%6(u l0znqhsq8DXXm,$i#d\Jz(Zo\X3EM+9D|I=qcW26LNRYX Z $"EӊZYEQ7hY,k,d! Xx!lq` 92DV ZWӝv X}]$q9l- @#.F'\: IB.WWDƑ^<гvۉN/1J*qðT* 5ʹR.V$V01N8&`+=w{T)nҬۭV Zk*&q: +i<.0 &6HXiΪwŹDi2@JkۆeMS=a E<0#m6h4MFbS,ȊGD"NqeیvO!X8'4`BP1p:Ѯ{)Z NR˕7V7 s0&B"z]i5J"Xw&P tZ}vDJLRHK(j'JoR2}I08J9HaZRZDLd ')tE8q;X01w^KfsIzXv4:I d:|Ǭkvz7(Ɖ>ؠabQhX$ )~5SFkkE M! |$$ %Ab`H`M D F 0$Eb^_M21 TxFy5n$/Ӈ$ )\%nְ1 bf%e.YSOM~J uE$L& @J~f륎~jrTXf)%{~jr.ھnzz7.gE4g0+ KlXH([˞B:fvMx` f#}PhctKIηl\6dT-*fXHDhF"PhaQhZM008< ^[D)#2(k".«]cֺCRPoܳFr52MD;HI먌9J(%J t4v"\hY ?^3!RX sJYRTJ<ڂqP 6˳EH$]?uύ{uϪm&席F'rd֭s]/ݮS'hTR)Z}YFs ꌪEİ$aȢfrӼ\nT͈Ѳh2ӃH C`~K6aQh1"Jy.FIjŜh0&5|rA95(u6V9fX+v6CJF'}ƿs0k5}T܌5rZmlu$qk{!M};}&fSX 93K)RnZrV]I R"eeBJ@2mU fu fnLr|ח!n !ߐ$I"qBb : ` X iZaC!l eƲleD" `a,Ztnba.˸C 1P(^K߻:㖁Ϟ,"0`2]2ØXmC?;\`b!e>7_97xr7DwDk֤;X>{rMV&:@ٕUN')=A"% ">*Tʱ6 *9%{RiJN f!`9~j߾XC Y6ϫN^4nI_}5t@Qh^WFL Rdd-iP"FbFC3}U 0j1bŁ!-:(KX /PPQ3+mɐ@Os* \h#"˜'$$J4DBD>1nTiu-cP_?Xrv͛6m*5ç6֍60V|/~oom޴(մ쥱\hY,j4-U JoT̉jǢbhQ58`\! f;D>L  jh0,Q(,p*R̮$p MEâ r$kqAj&K\ϚVidžf'nM'Q8:f Q2_mM-W-ӋQmk֏1q$Q`GG?_}I_~L)[7.VR"15]z%M>1ٮ)MR?+ZZ6V55cR+,,,|s<ط~w[^ѓN}Rq|y7)UcCC~Ϟz={rˍwq[T4Ƅahzyq .#@!C2"W+1fbQe-"ls0,QQ@$d6)J2U͆F KdMGp 'm05 4%H!ՌvZMrZqu^ǥ/k4:nV7d&U*xYuoyNqs|dǺFXm4j6Xn0\G$IT|ݷ?RVQpVv[6n뮻N;׿_N?BbViW҅)G" AMIʹeq \~su\fpw׎Ju21:4:2f儩ը=o>ķͷto(Qű&wo!,#'0$Q( )*KEâ-F:\T$  !/e `TB(Knj U ,!* oE1*K) 3[c$fT.d׹j *䆊9UY:;nv;vseuK3Kg'g2̽w13;Mx9RɐnٸN}Ƀ2kbnv<%^x% QR:TC߇E`UVk?+RN&K"* z<rqs ;T9:n =1p) Te;.)5ҚnU꫽kBXfDe {g~|q$08ёç_8wMRae%@9J=+_xt`$"r]$f乳}?@2].5Dn@/] 0V 4B  n0"^!Ld!ɥ85 (r/€D^DWXCG7Z4l"x%^>QI Q;o8=;Da|z,,þ()ٕ`!hK{,B0V3w0Knݲa9:(jt?בزݦwo\~ɅuKY6z[:p#]W T^?j9qkݞ4@ƑBIOkqӧ駞cAEkP?~;o*AG^ ,y%^!Gbg3#%1٧FgŅDd)m0*B@'aS(5 ibW!f0KnehyE7 鱧f`T>b€DG@(ޅa9-slh!yР|{wlvyةg&+N)]qX;RY Zh!H$fxօlf Q̌P9 fd1&_,ֵ]\p^qjA n5 $21 AϓO3SBI6!Lew_>voV+ nmacL!Tm|Gl&c$Dbtl=zzz1%:Rj/Tl*Пo>|u{yk/d /YQ ˞OsTnPK|BA`X%xaDY f" O8 }׺ Պ6 -k炔/ѠŘ Na=kQ@@ 5֚ۮ/뉑CaD7ntӎKƗ#`'k'`Ub/MR + !rJ~ͣٗl6ctH0tk 0z $?/*Rm%-B^\ˋFA[uj6ky@".C,! 3@qsyZH,BN5EѴ0Z.6De yF0 Lkt 핪g<5In9GxC>wz.uZ-ZS0oڽɣWݸjؔr$:P6{΍0$0pݮ/=l1k~n @Nh/|_#(8mIrrI~WtD`iKJ "E tرRR7 Wi4 ,3ډO\tڣxr{qgߵښ"(㯅;/⃡9Y1 t-@'^Eg$.PZ!h f+AK"Ÿm3ٮi.'[b !a'"/}ΫzqZ]=Q.K2W*ĶWY'jl;2iUQ;YjvWt X]\U!H*GɏtSQhk%yi%x{[naXs[,l G֕RMouz"Մ. JSrIW2pu+ڰeOԃO< "cO|*& оXvNc) 4-4-V 0Ph ,$\BN,ww=NﮍJ|kl:Q ܣ]%qB˜0?eCrvLDWA[ǍO6ꈘUqCG{R>W$4^k Ã`,&t՗H il:,]~]\Re[nmhғ\xO3Z+aXEV(^w($ Ќ-ӳ%#ZAKF e8@ P d 9B ':'ӧ&߱gzOT0I'X ov=IB\~@IH]gxj(u=ovzԑ#cÎEl*J )8yRNlw(nw:~ zmfciET^RcRJfBH)1fZ=v\_k``zA"LCK*. #0 Qp 9 .(`T%P -%EO` END5mp}Ii9/%RM3=VQ^8ǤZ/﹯QkZ!pTK-[sQ]Zbki "W)߾Nntg!O(J΋\AfTlA`Q5Ա;eEL ݔQݢm!dqxOk}W~䝻wn!%* IlZf;rKD)31 Ji[;}q\7ilLlaxQ2zV+ B#Ւ@UW#|:@CU kN"y;~pۙSO>R-YҮ@tS)Ip>/>rhQY+JIk k3?W[K*mMFvPgr̡Fs^=ڲA@.H[8>9vx\&.`/'dh{QOl0Ϭ11YN,*ѱ:5 #{PK. a8Z\by{}۶amjCZj@ʣ XMݍN?-\TXIlHH-gvlX$K酚vrfl&T#\Q 0M \O/d7#0XÆ+C1h3bFJ5Q3p 3HbnE&G,v[&elX$:R< cXEE25:mT2-$*Ng0H)Ya8RJ1zqy^W$!l&DZ{I$`f8 F`ͷyC{3>o}%L>i G:f:䤤сb}4]bpIxe[LZ1N^[ŵ0r.7\'}cD)S))@i3bkI)r5G rn7[v:7zE+:E&uvl-p9?\?#Y(xC_5жXX2HS@ r`%4]ȇ8TZP +[ t,Q-4"ưĜ5n?"#hk I4)eQȲ(n&:% xJ)3?0yu|t=7Z&& (o??o`sSE' hJ:@R׾|WKަ8INdxۮnO?155\u]"k)OVoKTHABAZ˖9ItZ]n΍[gfS٤W&[;n~֔[$bfXر~Pe pOƌ7&.(O$.!G(2@@Hdrز>KK5Ed 8t<:㺀('`^0[~A,(_ Fdf)Hf-E &A&"$̶7wuIT}p(a? \w-.yk' -[f$9Xw%#IqvyN`yu]worJ9VU XNDazkϵ{_zjZt쏶 e6-]k,5vtxTnT\/K{SUQ`@ʼܒrTd[0:AQXY62Ow`a%1 ?-8 "%eRF,qW賖Es|W f)D\JY[[S/uQ(GH'0kpg1v< &~<;0X޺sN lvOz-+]=73%ŘAR׿o,YܷwvuX'ZG8o}㛯{O=yqLנϖlz%A1 W~.+;n$DE/йQ . w$Ml849FqE{hx@3 oq^ϫ(7#5'P"9 3roQ*搀fѰp$t,Z]D\CћH AD@bq>穐CuyW6D:d5q?GH AR`(Gs;a $z!tRK%]I"do7K.=t\%[.Ҩfs+Esz#}IҼˋ 7pӦM;NPJ $G}|o<ͩ9'Ndz86D?(Nq:$>Dk](+eL TZÉX2԰aH$idsA;$eD4,Վ<'9AyiD1@@Ax5 nrp|e% 0!cIc^%%D1[W0##eviH)G)'aZ'h0g=7uvrT*]ƛ$$T2IhVVk"+#$YZWj~mr&ҠlwAZhU/g3:%E~> эFHVkuWc4ZkB1dRJ)EJBD YkxdtTn\*/1w8 x¼5Kc|ff,ϋmֶ:Iy]!ށh(1,Q( :+d/^Ok"B^"ϰP@*BZ%V&8q A9n0z5 5|5!Pv*lTx^>~ޛ8N{ĊbW}nqxxnLRf o۹e_|9th-f2rZݨR u]fxdfk"^'Z*DC\!:a+}2w"M.DN G V7 @k Ι挬 ]O왴Ѷ at-$Wç$eeuea4K% i Ypuo n76#rN[W-|cl>kiQhjfX Y9ZӚ~X'dqbGKN4;B[c>j]20vWV|~7nZ ,s)"C˷rĆ֢RJkGQ6-g "SUJQZkE(RWٚ@YH-uS_77z1.; u.UvHm䐡'&x~V99ޞ]$z 5"$)2b(Ixcav1n0d鹎J ((s'ZGjj墒"zTﵱ)47 " C$$(9l)w+ނף SL$z])d8. Vݻm600nu]u:MHB2[%ul6iwҥqN*zB=Hv?BZ3Ib^x{w^ݤ0NDt(6,)O3'/!@ipA@a=xl6bwJ%4!]sOmvnk/ +0hY },uhJʚSjg&Q U&I ftgy f+fu i΀܀>.Me{_Z{%8_&٪ D :覽7ć^7lԺᬾ})i- DpFmQc|MQ.ZS"Ch'pJ:1Q&0C4֮Tp+\f{h+d^""Ml$യEgW%"ZABHbkS It- ! k*3Gy r\OgkMF+.ƂmZw|N%==k\uY)"]Jn/.,/- |.}_y=J޻-"jw3ٌFBDQ(Xk-XJ96<:VYF&g7l}_ Z_mb:"X~$ ekY8H7fI@֐P=8-U~*Vk0gUXcle#ݭٕZ%JR18[خcRKO?̉c///v°R') b+ ߾}=nX#F6I&;{얝XJщah8Y7֨vΜY8u?^+6\;^վX]U"Bt*ĥDlmIZft :ǐLekI1)) evƐMSr2ճQT`ɲ< t?oD|gVf^]+@h$HIA4Hh02hd3CM"e&!DD4A,轻k%*>?eVVfVu7P `rK{y#ݿNuu Ӟ!+lkxA3M@Q k]O:?/#%P(c~ ;A5rw9srfu3HǏӞv`'W"X ~?XU{v[?rC4`o}S)^czGQ{db`[.+|gyS&Et9&y ,3ɚ!%jTB2Ip2 8!E!QV 9:'f&ٸéaʥ0֝vjHlA8_}}ruwJeC&l$I FYv5|d_~{8ê7n-Lч>$h(,;@aƃ`a~Q70T0~?ZL5"RWk#3Pߓ:YCOA{zz+Rxw JzCaUu`@z6ܙQ]ßo}}A1#'I^.< YlTs֒x%2Mحu';Ec}/7bU3ACIQ{oL  kf GR^_NDY_FMh~MU:gfo0߻?c!g>④&WUFcֺ*77TRs\[%$~k:R@|Bga$ Cq[ݓ83Hڳ ٘fC.W^,I;,w]C1Q? HMUBэF@pusm8,yӳLh WsQ'}X#N$7vsY3[Ncn:-3 )3 \=jk-"qȄUY Js֌z|9_}a_܅sa7r\]ZoӺryQNM5QbBq.f@+?O1c[3J)k(q(JyRMEm꺮jS3`F^?׏-,]eG[:vvw斗<c{81B+RHt g%Jg/oŗGS}4kcnN3\fU+';fbOYkQ*0+(L>޹C?*=Te^V 2B3v~nzv5アr=ViSï}G=_ 9 Q2TO/]J GsSf:=sJVƺ5e2㵴P^x9~Ǿ##( J8 [g- A0IY@ #tꩯȲ?_NV+\A7olO:!9'm?o 1[ѕ[d@lvk7K.F ;XgU<%t4A;.´@+94Ӟ8?_Ͼ Sa>K <1U|'o@8 $h`0#c#,0*Q Ʊ/IDAT~l׭d9/G;>nwPkD7{' F7ǎ}3Oǖ*C'ّ!b)$XkY m]ku% cs\Z3F b]U~7pNL^ܕ kNAEQ*^<]p!hXV؇Wm]( |_VUU!"`P( Z$سΨ 9@4Yi õ=HSWyjcm`;؛Y^u7^ZJAFqz77SZ2z+lNL2m'N?OiSVJ2 :J?۟x?r (KR`BDp,ńIsVd$ |w ոv\_ۘ])dݼq[–7 nӹ{ar/iLGD$dpp_nlKfhcow>56N"//F)QrH*Hߓᑙ8KA>q٨m!k#=or.Ohu~73%{MF.U/VSy&6_α{dNeH<|;0?d`v4abD1 %T gqgk}*/wQ>8=',/Da4[;Qv0 x5U9t}^p8 POM [w? 43D,&? sw ~:n rQylL'hY#&"@J)!I#9lma+aY^l G96/: CjG[8K3 V)G82 F/|AX:>ixi9}&B1q3Cgj/j"/`Vk* . }kR*jLONMo JgN;kMy~V3Po+U9zI% oB?zχAN< b``dOB\)M@i:uH7S$+R=:#ǞVnبqz Ys6AH"*, z|cUQude-2'I5[\eb)seǞ#!G%-z|aQ)1\ ~z9K5GU|8NbWE#i/#? Z DD U=f+|_zFN(|?R p<.+NPUi Zc@ə2J}=G{=GvFjgGWqQzZg(TȒrJ1By^ϱM6n43x8(sĥtj0,hReKN<fu]9#N/.WZk$mOnnmŸݞj >B䔍l]t`y*LnmoHk؊(ZqLk{F/!yCp$>4!3ܹxF I%Jd( 6lƫhX?sxe^ *JF,[:eQ/e ?p|4Zo6tTy% qBo‡h\chbXH[;B3t i5X2>hL3ت,-lG3_}$IiY x877]V'q貱T՞"E^x_X놙sm@0 0;dB6cLd@t}olt 3@RK㊑ʀ5]k+[{I{ّt\gui YPv>xћ`qo ȑ%;USàdRL$eQZ[;cȸAwmcWV{VsY^>g]^^N4})q67Uejxf{C !sɗf7q=TUOsqXBy{N%IO;{zklk!z4FQ C|w-;y1"=MeIQ9!өQ-ي (+FcG| ؝my$7}w#IeEYE 3 pqqsWtm/?ۊg#YuK ͆DTdv,l4h~p0j6SGK<ͩ5V)\mkSEaTei mzI(z~?6&qnFsdq䉍})eaxZV n )/ EyteaAqiiUrW|5zdDyxGߴE(<4]]7u v[GKk)ϝ8~[0H\|94"%MBD_=F+SMr{Vd|kkPjz-;[~ı/־e>*VÎ(f @iWlkFeZ/3SI[4 e@^ UU=WW~[a4h\Y#Gya "0ODQ\ͩlXx4 =ݙGQ6u[1f;4}R:6Ē+JRytc~d?7E3Y @3@H_ʾW{Ũ;Zt$0[D+5f C_7&qu5֫;au׮X=#`,֥mUY{0l~zL3M$,̴SSl27yoHH1x;^\\Fa@yHyg8ɷ\X3Jm&Ju7D7!mמУ˧5Q],福/Ξp*d)%qFr*vV؃Qmƃ\'p`m`\(4G:q{" ps]0ä)/lm 2W(Qz>U¼BeҎjJu~(˲jk 9g tU׎"5"-T9z=?T$c"`(BS}퍫Q<.(nwr{w`4tZ.|# { ߉xCm?fq7+hQn4n5M!@D (N?z1 Pi݌G|yi{{UfS3Tݼ= @AښTGi,b$-i?7o~nU{/+%Ξ?}b+uy@4qXoVgVq}S~l/$3Sލݫt8~^eZwZGm_.vsffJHL^̎8HVjyA a^ Oǁ[Ͳ2@a@ےsN y|{&^ JKFߵ`R-f)-ԇM6L\횸1ZuUEش}BUUUtޓ|^do`TܑN4{鍞,n[u06)c롓& [yV*SۣQ +*&om/,|=ޏC]h4`,P xy'2A^WYBufdYr@HF:gKStۋdN;&%|g_8r۽Agk~bމN\޲fADH,6u{⪪BOZ^IЗBO |Ä15:uYU%+;ϭ@fb_+7sGu=V"wZo<.ʀ߈ gGZL{vxyGn׳pF2(5T{/{*|*kMCшU-X$Dh1 )JxB~6ŽΌCgQ Uqp ګ7$8~SRJ $۲򣨮s+!DYRg)FPYD! e 8@ZyQY Z Xc5r6-$sё(})H}?c!Pi|?0f`x7,k2~[~ߖ ߎߴ6fH̆9#+VT5Pm.c Q%~P MϏ|-DTN{ͼ%8{L|(6'QeY2V @WHqo&x41rgމ9DWEi#gbDr8Y u Ķ6UYU)˲7RktYS>*45 B{J{&;qm=(o5=w'" x7эEC?ֺ&Y/|jAw֋C8,dg?b;+7cئ$8'ZͺfeՀJThvӍPV.|o?2O$9B@K QHY>.lll׶>}ꍕa^W$*m%i34엥q^A` $*u @<]A5 Bk/m$76+=b䨪$ |'ffseUַ.O'?;z"|e{_FK"Ԇ/z?gZ7WI`}!7wɓ|%p;z59^ٍ^7^RJ`7FU"(:Q8iW P+Rwjܹ39pR(5_IR!B(MtBY?FAQN @9Z=-͈p\H+L áRJ"gapJ_|.Z1t& lM7ҩ4mM뺮b7Z͉"`xε=7(o/Du[o^n 3;@Ќ T)1^nbx: OLO'iUhTRqX@j=ڝNCA Ạ HX8+yn;[?^ܲrxЏ^e3[WEٴyeM <- `H{/L1*f&rɁ8iVZ{xGfR'[{ ʙ酿3 DUUL`uL> Yqs[.C׿"ކzprcw/ZLDr3+wk?g9n :p(Uj&LM 0M54VB{CTAI<Hto$;Fo <[~ 2ִS[G.߸ Z7?^ ?YTs?df># "GDLckBZƛQ@h|ߋ#t8wGx|a k[:M/~qH~?cK?࣏=ATUys Sޖp^DA@< b`% V7@n|`TVswv:XJaA8Ԋ!f:kH*?Dyv:s)_ gOrt(uF,1T խh)qQfq|ao@e" DE}/~ʋj{4{|qzztdiĤZIaZAF*I|H6ଃ|7/\ VtUUZC,6Ea]`Ѿ'&]9R; TEFڍz]vN)(pkQtlĈΏQlx8ihߑ]|@eCD$B=Z %SG V ffBuL}Ï [{`r/<[c,C)A$}]Vz9{ަ@$ K݁1*T3T57=3liľ)JB@kOj&3JJH_)k%by <O V$fyGY$+Ѥ5C380n#mVe\ڴʞcϖuR$EuT bz5} :)H)%򔈴 )9l_xGCD'qQ]v}PZ3ޑ-姞O@'OL@yOM`Ό:z|Va&x$wk7ΟlՅ[9ڠa74|WF}`RH=#krȍJFtݺOLg**>ykP?y?茄Z+ EL J|PX?56I6Ȗ\yMnP,.w6/LJzAJ#$S>08X=fA"l/;rၤ0PK-'`/|tl;hmAS?x1ਕ~ 5_XZ\X>~}/~W^n[7?~cϷ(r\1~ck匌SD᥃UUí=T673iazz84@ϷM+|̔bPrj˥ (JCek6Ξ/]~ # QV#׺}*CkB* H)e%Y:ٹ˳j]SKGl!JBf^9kin]͹3[ʼny(Hm`'Ohx?jآqwB[Ƒq3wձN;j^ZNϞoGS-"/zcg;=nv\Yr\JQ^/HzϼZQ\Y3wzvVIa*H־deYFƔVVl`$g#k,Z#d!@ rM k٭=>!GgZk./_ ̑f5Aa 7k,p<.'ҟگ* <-l{91lɠ_|7{/] Dv^UZ?U$yB>E`gkd6 Y8N |ņV /Σg_h̳4εZT>ˀi3µ@Y?^gbO#/1d {%kD<"ZTB0(<-$\|&WFZrT]ecLjƹI!B3X BIv.Wx0/| ?n(FHPRJjN䫛OO~?oΞ9] M'CʕlMR#W~3(.{u#D$e*E@aEFJ4Me+?hFi#i(-9+Q-{E߿_ /FhD^]ɱ'>t |4L*uPDž!U0=3;=#TFXCu-S?hkHѦZNQ,< c1SumjSh,a7O/铏;ҩC[`P  5 4 DuYQ:t񋯾|s_I>_Z!F'(-̨ΆŰ{u]?uqU=(r[Y ǏeUyxյXYz3sjT6^Z>uj1vw+<=. !pYAGO^{ Fz?OJK$O8n5?vpk;{k6Fȋ (ZU6ky~Yƚ<ˌJ+[[( 6VW)* Wpl6;6BkLDdYhS8hF榧4IlGAwo{shϷZWT٢al0^15&MSGLy5MkJT :+8I)̦5=33G19A=`δc&GeQH)n@k=J!4 gmEQiʕ7F㱔qnġ77x-IfuN?Gx)&7LČ!  ncg1 f"F,%c%R!c L|fzP=Wķ oMLo)&@A?к(`0޸v:Vq]k-@-n>9 vs?"W8}_;׮_mf֥8w7N<{_q܅~(gg !)T2\qCiݘj:kAn?I{jwkm<fVg;;ۧO_\XYY{"SuUH),KZ~ C?򭳃SQdqT&qթ2ϊ-n;@,J#@ip8B_ |opwww$t:A,ˇyXH |?b~0m]))$pi (Mp? oW"` E1Q}vU΂3 " RLCf T ־ښZ2@Zs^4kv<Nq8 Z\It??_~;t.&pMoڀ,o/`fB( ic}ʕKׯ_7y!Z甔>-,,5ҦJ;S '!*ƻnݓϿդlϤ(+e^LQͧuDA7ܾDȥW]|b'\h̫lffO{v)ѹ`wzIN|C~ݞ!"֎F)EQLUJ`SĤ Qz(}ϋ t{=bpAF@gúR$lUfU֥i8{ߩַ7aiϘzؙ*&[6Q={*;kSNXeΟ?cgzWtp7C/xםr[7[q3ϔY>b"4W?=j(|m}7RHVBDR=D-[ayLc&3Als֭f#ˆRIATJ%i"ZVڼ+|k+׮UUզ<~`lu^ ϝ:s''G^/CFf,RHļGQY33e~hJ:?%ߠ&!9'd=t# N\|D,"ľb dQqQTQ.O&edl'׾sϼ9k?gO_;ϡ DqSnoR Sv/׵A`9"RZ^{kWO>}h8BL ̇0pfj[7:W;?AV_2;7C)mXzK-z(ŅKWYl(ƿ__>yҥKg՞Ve8^WՈ:nln7TFR BO'k`F%jZ\0py_eDZRr0):g+2fowqaqgo>"{C)5"h0 WWnYJIZ\\:?j8 l#@V;G[{YMs ~Ԧfu\ XN0*|!JʲH#k ;j:"Yb6J}*)uIfbR@xFp)J`"!tv&b D,˲?Y̩Mʯ1PL`Xx| Zc'SVD,9Ȟ DuJ" DGZEf0/K=@!=0`"~O]鈬Y_nu3 =\A7^{t$yUm_>s'rC;}_5{ss^wرW_h<!pyydq/x\\{ff:,hXK)-QY !6 AJ5 Tk( Dk2)L#Iǣށ@aRy![SeY Aw]t ҉hcs7Ҥ9aD,qQ ?}{ӝ,`RJffx\9e877Ⱥ53P g(ߠb38B '3(1VX !HH@.-P跁j `: _ gFb5D9"%Ybf_?OVoLo;rc'@$Ai`fc$)tH,ec0% ؈^ GXtgyr *G ( 6{[i GpmϷ;QJ,рK7~\}NTQ }_4m¥`&%prʚbZ^Zp /~֏=,&z~:A׮ﮭhG.D_"gGX_vLNk/zrg{;}_G)Ӻi1^rsUU!P"(qlMg~O/b=KǗhsOa]0!N PmEo zΔB*"f€!CY3"$7ፀz1&bq"Lcok/4=ޜ',@(бKןګg,HiZi[9C5NOGW^/T.vN,t|ge{'fԞSS#Ve־Xo-3R^9ظtֵr֮oW uO=.XG{&/CW_VVh!aEfc[kUVYEq'@*!A !<=2Oh̦=#jlmugVg'(PA(| } Lsf0I%3:xN! Pŋ_}9d^Z=+RK29TvWրWR>"8"w?3gOPJiʥ*#Gީ3ff~ѡJ=I: %NQd{kPWȘΫhq4E5g 7I I-v !'xZW0 ,;Dsp-]zf&o{);i47x^YHUa#o\i5(˜ZKTRƾ Ow̹sg$ !vDBHa @:2@@ 2VBٱ%쓩eNTFMUH&1"+qu?S6D:,Z ( %'0H B (dN$xy9?8st eHD) 9*(Uښ4ӤEI8Ѱvnuc7w.'>]ʰ t qr%#: xߩsg>/ fZsM]k%#fùzq~veueƦSFq iw^x7;Z/6cpP Dj>2OvԌy7^Zis?? @;B4❙V103J!hM 4e@+ϩ2wXz~~W~-O}NsWpAHVB.% `I秷;@Htq4ӞLCK4(='bJy'4Ic!&) #,Zk]3|Fꃃ>JgYWGf<,ư47e/\~# Xk7Y9!8<9"rJl0UmЗDJifN0 zf.s[WQ9kJ% J,suo7~+ /|0 0nhD=8;G33 sJ8 09@ι2om zcc\V;S/:wl,K+^J @4ӤkZ !sDVnmnZ*TB8CSB~?{̅3g8`)kCy6t  A`!\20l3fs @H/f 7 Iqji'r\ ǎ-"9)Eol׻ŔM 1MOx`d/'Ũ{08MBo*BO0Z{VJkOHBD}@И>qJ/jM5=_NSa[E^~E6h bFip'`1%FZ3d@Q}a4I`\4:v Z1i b7TiZJ8yb|#u[K jPЇ?32LsPf:pn`UL(`XQS3 !QkBf  @"K@ ,NgW;  da*ヮK.ϝ9`dʰ]^JQ!F~ũDZ+JZzP(#%$;BBbsR+Jzګ9 mQOI) <#,v~]T  "ɾɴ/Kez?+V ũQ<pCH OT:x,€?YQC9ӝḂ JfU N6`ro=aIֆs+aI)VT~oRM3!%0L. Z D'*BY[K)w5B }s=6l23eVq/~3ZT#*"`cRJ%0uBz;}tY 6Sg?@p97/Gd"I$Z2,INznwy=c􄪩vTW;gyv,|U s>$ʳ]]UQځ2 R!A5;+k$8t3 qcLD8j-6iڧl|k~W֗?F d@Qa`@G(YAt2\+&G{7^<'N"(" H}"uww*Unݚ-DB$ך'f/A#(fz=*3_6-mUմV"*e)2b&PQ{/"iPN n4׮"ۀ'BX J"zpiמy61f~y: q!z2VO,,Lo}uO> qYOx%.x535}9DU>k,,̟#;w"swƍ;=@w^험q2OA@fm̬OD1F1L&E3\W5ڹI\]%Cb錏WuWRLY+e 21G`&}ՅoxԚ? BJ @ @ssSh,_+?<7yWD닧>,3Ƥո`YIoJ#mVů03#aq٦!+FfD8,}Ժ4/J}הz?Q4mXA$5+$WfBaC (9Z[:V9hEcUJp<><_?s! “x]8^ڸxzK/>_XUpZDp AjmB1W??dlnn,>ui/?ͼ[YI:7"Pk%X #3=&u]XH+=jADPEO€\L5nvvɚu^*wRELQ"*m"`QDAA!!d3"m&&`f J9+r@pX9O?}⹗^}?{w?olnnn"*bR"G>'>Ѣ?o G^Oxղ8]ZZ?zS;;V'٤ti\zWڵ7>' jOXU~$xxtppԹFڊ_}ŵNYuPʇ30\onn:oݼy+K2WGQks.̹SgnڜgΝ٭rXź˗/v;sN[ /|O=n7Yj~'tҮdflEY @p=D!s Dn=\|ڵk.^077WV %Ety]UwB#3(P5, KQ s+I, sD@( 7r c@ `Y7Xj%@4d) "I,EVd'z9VE "+2"tcZ=c^{饕^}Lb+[|}ԩ^4̧t3 DZ$Y}ҹ[wZDw:Μf mTLhv8IB! #K1Ѧw1J>JΟ=ujG"bRjJw}eq<Y* \6kuV*o6͢vwnQJ]r%m<'?ɳNo-ZiȣPOj|C3_I'a#k x FOh8 ap@'g?3Tx(Vsye 7_}}ݿj1I B>TUUVyP8Jq: X"G཭4u!FbRz֎TD4?b-^_;my=+DN`6O>hqS $f<[:ݸ|T ְ "$B B0+xQ==/fYe?(maWN4,NU7w6(rI4Z+H^ z[vڧ7֞xC=}0*>zǓF|[\],k[Qn7}2r JcJ.IB~7Ï?x17Vv;r#yg'?+Jֆnu}NӢR6$r4j==w7sG _X;|5FťNHq#뷶wߛ< I`+m84 h hFV=vԹ(ʲ,: f" !Tk+gw|㤽=s@}oO̚JMc溨Eʍ*RJ0`DNNKcá_N7=)$iQSu4 QDI)cq#sx7vvVc}}6*o)I_yqUѹ3VWm;sc1*w4އ ^Ml+˚e鹳gϮɴ.xx{ "ѧil6{Pf̀ N> kFǙX# ++!2|}^ƣw?pv{.FI3[xxB8GADTiJ!]*F3ۍnjgAŋv%].A?<8+W\SyħdyqdoH:F&KZ˗h4O+ksLO'q.suZps...L7GJ[;vSxh>!R(M YT QDRYPZic Ɛͣ?EU]{M!!f#Jv5B>FvuM"A">(,ȬҚu6C !#wJW/DٔbvҿY4)"RBNų_~W/]]uMv'% 2n'Y8FB5SK@!aA!xʰCWIk #]<A; db`zg^zkJ{iBZI'CӴ!ڕ` qTB+KKK˝|ov߼tRVY+n fqyW;W`hg3}ٵWM3H=i%fcR̪UeABGxman6:VOJTz<w\o|p<(&88\CBB0VSbD,A5)HZmm,h6"6εP.>:ցCLڙ\+0D Y8L(23CYH?vGHIUB $Y@p X>wPUqXLJ>}Xa&e!յf,p O5;wxK3^rFp>TT_갶Л[^]\𗮜[U 'zVucQ%lx쑇^yTӫkk+kujoxkT;/^qq}qyUKҨ}p?$D5ީ4nsh:z&$bo`w<&YcZo|+WFU_E7w?#1/VyprBמ'> n N>UU,#"D㝛Cژّ,FC5ޛ&*RƘJv6\t;}C:!C #%#9s~kqV'!aRT@(,"Biw^x♶Lr<w$w Amwk%rXZyk7m\oB>_O Eu^;4ijfwko]$][jk|nuzw~~ۻ7caުKCϳr |#+/?ƛo4{Kwt\?LGxko}Ο:˿u j@Z (XkDk:|Y8 KˋeY@ڭl: JĚji """""jdOхuh{sq~y4m Jb0VĹJ 6i Ii$voż\^_]];a~͍++k{g֯<`gy )SMo6:ͫs<30#4u&Dmw;7;Lcf@(,,YqVQDILB(Kavu!" [AqZ޹ j@(Bs "VCj*j#'*1 Nq?VC,kbd:HFʱ +GД[ ( *1ۑlL8f׺)hE<>bVWWuPN;DkyyAs<9*\6%>Khc7%e{)V@fu"wa/%\]z4cB^1(D\W+x61F&lԪ D/z?ϔG㱋ؖ?wtbSxWܻcM]vnæmfh2 KDF湹·}{Ƿ '@#F\Ug6[|nݶF1?6tjyͩ/zzw8/-'0d65!xô*j ?ug;y*@PD1DPJy }Rk9G/^\h񨪊Uz,%ؠ^_kg̷nnUxR8*J۽vcmչʗ[tj_Ռ "J+5F"R:J"aRn|wgQlwN,2VuT!ݲhH8 jc83}W?ۛ?To~2Vq<k 'Z+H ;㛚o1g*96sko Ko3߭Nrn}-U3ͤa'C$Ф*CV#O,r2pթcp!#hjbG!2.io/-_[]Z]x@2׾'OwhwZf2G_Qվsw3/p4 fYneNbӬѮRe;7 z'6˼^]569wO|GZ+kK=4ZeΜ`mjBNf92),,BZs(BX%(8^|-(`(`4A Xs0= ..Yz^_[6%x0կ>htaKb!D``IZ"iE0ݭ=}i105IKdBL]hGd&D iFo}կWum7c`<ŹQ&5H!&>PJ~h|0ԡRdR?-T/y%Zispxܩnoqyuo%ivE=#W._zg^}3N;7[ٲLJ_߼+4Th4yY7 yM2 !GDV,ˆ\Ł$9XI?@" L-(]޺4.,/8_UhID%A>rbJH8Vzk1@uQ`˗_q_~Y\Ed&&j:M4KSf6V`kmfRޕxqe%­v92AQ@0>D "3aOv8 !6'?hw?:(ы~>Cg^ /no߻sٹS+pWHUU|fC6kKE튲zͭt|̹3s湳6흻/mU u@*|O|ƞDN,UlIy~[=̋e!d'[A J)@Ec wVS\ `8aѐvwXTڵΖ KIf#{PD$pFB'A&RoI^{ϕwV;G \쌦2@(M]& (ޥ@*S7_?K~j%~c E7B-u}?#0K"m9 ` |i4~ 6J'Q"n$J4pmiC1̬1i9qee"TJDB*$|!h;;2Q%>aU~K?S?~>8.3~U_/%i&.ݿغq^D7H)mcGIQ&I!|cc9"{m{kovf/ZR;k%nmwt[5aNtԩS{fS|O?k5D\(wD`1*B\A 5Hյz:_i @ P0?gZ7qBes%k<]YynvhҚ$ֽ=D BeqB@50r˭ +;ʼ0F@1ช͔ rvޱfi=]}Du:؅'rh{U1I^[;;6s=vD\=2- <-,vKQXhukOѴV/<<(󛿎s=#MB^"92yD)*%"$UfU;(rh@@D( e=:8x`g˛V{JƑEP(1 @Y/ZXhE<!9y+?K?3'pveM^}^֬6ivδ' YbIl8E>ͧ1twO$f(Hkk{[S \5 h3>?uGG5.un4"!,Kw^D) "̑D2Fkkf  x0`3FB㪬G} R_Y׾ۛk&`kϿyfincGk{wwgP@Htyq&5 V}ƘY+7?L֗zuUuzgM&8K˘Z<9On7OIO'/# ᵽ_c}k_OݩWl]Yu]%(30 6ḊúN26c K(3F#m5EB^NӺ*8VCD 0:mV+0+5~~a>1vTLv6JP9X9sLJ Cany<Q$V{ٲI:ײ8@4M.&}L k&IYHm^r EΝ>GW;uXU911"RYd4xϲ$VA"!M!qݚ_Z6[8㏬o_ͭocH?EMV'Tf&" HaQIDў39G!MzoؘWTrn}N \=|ٛN+Bv㰘_Qy7geYFƺ* HH#DM>0, lAXET fdKWZ Bny'#&v`0ri_s`wwg$FQՌc@T*DFR P{ O*ߛN ~3Ggv&Z~CIzϽp7wvvغw\ Js1%*\W&3WuYY9?-KBJFY 7m#DZl@Yp8Y -̗u}gkUE>= szqq"LWl5]UkSKJѢ&Bd$\+ 4 I)cRHSAy**zFC (=[wv;7n;ȧcu/}vgs}u:?/;;>#RJ4I1yQkDN޻)j/Ţ׵oZ n/ڝfRx^'"0L+%\~{4*'yJE, ue[h8ZZ^H 0PJ)H hc!*M!rJi ul;wn63u8yLiB҆7mu[Iw^3Ohgb"GD?v N?|& EoBjr$8B&؝֛vwAׅ"輿`~#WF++ܜBmuqUt% Ct. ͕3sY.# gJ6?⭯_?V[o 6Ӫ(AIQծvsd~~Eke&K d62 J$/&DMmILUMkW  ySw˯֝qt:t.[@;g֗QUpUUy߹+s{;BY7nSJ$/igNW_xIA@j03&":I\ef) GR "׆JY`PMܤ7=o iCL+WN?)X ѓIrvT':fp5*NC?HE|TFe=ۙwX Nk8ۓkzNOLg~?]y{s+2c̋\Yk eYI#"LbZTUe̠$I:߸u*(UeN,gW柧M"iJFwb5v#y"18J@ fa0S'<0[CA@bN_ܸ{(DkZ0B -+v4ӋԉZ@5Iѕ3k<  a( l%D"*^zp ~eM^3J2Ogxag#Y A[mn,L:rv#,nچƇ~7.D<0Rհ}QYTlմYS}71W̘(3-@a!GHQ8@[xaV}tXt uٟغwO/?|^Lk\Wc]aCWW_z뇞~GsDd<)CT*I7i36+ܹ}ugNw[NW^׾v걧ze(jGR1x#h&6I3yqνp6^P+IfM5+&m4LDP6Fթ6oxC1J¢@Bu^+rwg BpS7pnayn\PM] JCvmtuzmqx[9] UUڿxosbW5MY K$FNHk^}מgDh}04j:Ip UCl s% )`*#dQs_D(](7o!Zh(_7~훟V/-j@+tݯoO/XJ/nSx|K/n|]"nN̻N2杭݇/,WdZME__?+O=~s*Pd`CwoӟГPcJi]?Lj|ʻuZj5-W;E3.^מ~jܼ7m͝%ӉQc>kYt77CN:]מ FRQ:=X %}YUju@Gλ(DC EJ;;;ܜMs~FQ8TRGuC1 +ȑ Bpa!*-Ko|3RfLViN? [(^>G<D!H|' 8)G4Yh~n"UE_Ͽ17!/m7ƕG/|P4` (֝UToMkXBIJ |8Ьd}V '‚,iCwhI.]G^uscPgbZ6b{ ZQx2J%G{^b|9'9 __W_ \,MܹZ/.b}5a4,3T9oME˫+vѐ,{[noXsҥqL7˒v>>G~'9x:,\-̣ѸIjrr৾uiݩ=G82X{Ivw_|{+X]kf,te~Jqp$Ajg E#W]QdղVdu|v;)xs4<|Ec FiT;YRJ)fa\!B20=EױewKR"BGD BN;mp<[C/s ٙ淞0aY=_ vJelžX(aW]SMkƋ݆N; Y@I!D@p4omuֻbG0b'eYp%Q`0۴S1ֶ~31/]ޗ}ڵׯ_VOГs^xٽzmeq^޸qg@0RĜbd`P&hOdR>xs#\O2:7UI&Hg JTڰH BVZ Ь Y#`TZO2?So'3㣏}V>7v8'g?xaY"64ZZ*O4UwƖZ~O;)?DD* $ju sj͆@eYbIZY]-ˢvp L|wH2ӽ;]@'?/}ѝ^~iڈ>}fÞƵDsxv4 ǣV#I!ĈU+D1"lVVWn-"KGI/qQG]>[wxN{YS^3R:E8FGF7~;PU.Atű͖-gŇR<1/ iRdDWL^pakn5ZI\#o{ol=y~񧟸b5LF̓$KUF0*EAD\iBE@R '80$!(lD#Y '?l! , ^'4^O%&F_yxrwkx3W=Z:|c&RV@éU9F'̸[{"p8K/Z:Nf;bJ4$`p"""<`Fdk,)mLEY |2NzͻŸ#?Hٯ~t|61ow8M45Gh_~36IMY~[oj/5v:kflfFȲ$MRD*I(bqe ֦H;u(I16@\]EMIH) >p(C,'1 nZBJG#/6lxRbp{"ٵv#;u[?CZ(CtaZyn|NmL ʌQRVa{n-[L\tKMʌmEC E9G:_M`lFYO`Qiiw?O=gN]L9 cdZ sok.\ٚ,.6GwP,\S$}`pF@z$E?8@޴}'E~w8uܙ'L֙c ++ιz5AwaL˻~doC Zme ^\Ztt; NC sS9LzL;BRsέz7޺~gF5+O=xs+(k"e)__:<mjV3ҥ9iI;if5X*\ᜯ}02IQ$ij}]rTIc8FOL!Y Q;ϼwӉQh7&Ѹ:62ԯ;uh̷lHf..v/߿>r ү,4?~8,?`e`̺gt Q%uě77rʲ:T ZD Bf%FӢOV|2Zh%YYN_`/L逈V[Bo(]Uf&"{%j#L.,ooh=gXOϳJڋEp_ں}*cS$.e _OWք[L\&X]LXvƆ IrbӀ'6WnZ?/Ebgêu=HBc,,>XuC _w!Њ ՠ;E+\/_=KlvFmhveS'tRpvֻ뉸PNjt4$(n޼uyd ,!@ z2ux<ڝ>uFrDp"Or9xg+ W$1&zo`isfK.9?_ݹwԺ-0g!d,RJ)^#C}1 )PhlMc6ťFlt~G}gέ>iU.^t޻XᬪO23jWV0AdJ y}S#N1l:_6UDl$ktټqIGog_iăt@5pc<:Qu@dr{w_87G!#(\p5 b4萈#VM Bb T f `fAPU="߿])'>dZWPyKS@U@r6*I*Bi65)$1 !/˝~uzi[bRoB<=NhBf@UrEs gUYYL$k&s:rykͭ2/Μ:VP$TLۆX2;k[8wf-FffXMkAp8LdٟC\`Oщ!YeeVDRJ@+@y0(f#Zv4v+)J^\Zl6q^UՃݧ>[[k˗=u㕿ܛ̲̐HJ+6y<'S Ϗ+/»!) 0$Knc~8&:]__ {?ɏ_.VGGQ_5[Vxe<3:p0Ǵ;[="! r\I (2BY4YRkIL'z\H8/$IHkqu `Dj_ݘݫqYRy`:B80@D#:&I!w5"ZJ<̈́\j'a[,ri^Ѕ[*>h;o}%v~'1 " x M|w.o/..uڍMSJuYifW1{v?kH -NUpunwF,gn76NOCJMr7ƘEdu`f FS✋I) 1i#IJ5sG$l9(C0ZsK)?<}Ҋ N|j!Nmaô &TաXҤ ĢErf""Zq?)wo lwq#эz0Uo]q5Dfp AY`\F(D>VdkBYᰨʢ!h҈Q8aЬ-ԕ?z+߽UW64/ @` DDRQ@r. ЪL1ѐWNy8rU:19,bV:1+5ZŹ9/ uo{wY',3nTX5#"& ǷسIbJ'&+PƪNjTDU8`d|<@D@]wǀ^\X,˲,K)jvuio?wR.D<{G@j&v+s1ϼG,E$:GiH6ҥEmx !2I}/!EFoh]YG@4ʲHl&rN*Xj%)˻u9!w"ۍQNJ>&jSOnG[Oqgy8zkr4j!mYdg30cÉFę.&"Ȍ1290k H$j$, ȠP+xz/wp7+k~Lbja 7z< kgj0Tֱ6a6< EClt;bpEI!Ja}cIu 2nez:{bg_u>|'\GLoa$׷f@Em( D5ƨHfL sv;ˬ֊'$͌1͕V0@YAdʕ" iIpFm<ջ\l֝NppͷpF[ԋ-~<:~3NҤYΒn$4&H!Iы Z1(`8Ԍ"2oB\ Co^6,ёcz{ avD{˭r||`R0TICU@(H^ڼ⢪Gqc.Ml;IO+s꘩ ndzkEU9WZs|?#l& *m|4h3 "B`6vn&ZA1ƴMC^ *|PA4)ֽN{z4,P9%&5M*ꪪ&)2  {v}BBUf,,,6 Pf9JPP(0k!Ri`J?MWw/O\6(4,u] hK]bHd&yjzI(ò8= ą$x3ŝ} u0 #tFL^myҴN뿺t4[[km';9.FK)G)EB` s, 01( & 1BbB!1 \*RG0?w3FUlAa 3UL(}pB5,~.ҨDF-Pp,JЭ>2qQ;6Oogh8jc亮YDB"sff:Y,*](WLIڴ"3tesx! P@ff_X:`aaӑq]{M*}np.;]5YK3Rb, cE^lgczJ(x_׎2&0YP5"s4LYG;N78?qAOI&fC׮& AfwVdIt1YV#kŬ1K@EQ`p ȡC5XN;%Rq湏M5H|\ׁ=[i&RZ!bPx UU0Nb˜%N#OT9s.(XEs\x ƮjϬ6nm\oQ<׀,~u쏹aa1(_<$ǹy{s-tRGS.hMbXfˢ<V2vxчvIeUf"4bPE$=FaFy+x%H4Q'i3UP$ @Dz"(0 &e,9Z1<;G8KӬ&*8_PID8h@s"3dV9WeQֵD D4NE5ѡF}g3s&0?v6ȱvᡫf&+\NZj8JYa!2Q(k2DD4v# Ds8"*@7N]UBbЇj=54zRɫ{+bZsxŬ( x`3Ab((xSˮTd6[3 Gw`Q݁vīNg:mR5L;-51[nXQz3귏ti6n%v^_nOZPn6~հ6)r砯4jt.h@CIQX'~aEF{H3^4kyLDFB4[ ,նX!qxNk=sѤ4BҚ*"'DeiMh14˾K2% :QX" @1KV骺w$I$ !<ωHBDBhf)pl$6We8IڝVEDڄ)w_[=<\n/^tQEFi(,4MR J ^D!(@e 0"U dg(jmUUH]!T$ XB5cPQCYy\g}'}V< tzIXJf@`$$mmvsDţ}ws,Mj/f\J|=(U3Znn^YeRk!0iƹCa7n Ϭk[ͪ,Ǖ[Gfc澵MBIva<#6L3Ǩv> )AD3"4 s;& H"3 ڹp1BbS!j{m,r`,*JZ )asrrUJ)V(0 (@b bLi6ј~ԙ"\0x&%.p8|ߣgpWF)*)!'d0nX%\Qf'juڭnZІ*0,BDzwJwfmn|o?*!pf'#,͚Ycau-78j$I'37*/*6!*<\$};,}G@=p"}!}7=A?\# Y|ì}3¨|0}ɻ,WDFJXBZg9āfJ1 8KbN(DBIGEOQiquBQ$_[GwשfצVnX<*3a7ZUu 0`^D;o@!^ׄ 5z`!/4zZ-eZ\4ҁ+A_=:ޙ%?0??'<G%4"`sD@QK jpd, 1DQ##J 1x%r1L22fPq&g;ˣN*qXfV/D?ou:ɠ4Ҽ NCDҕ&YPdf*F 3sz?9iw Ad)k?oVqXh+ )e_zXWGS ݉?. )+L 5?'YI3Ȇ4s 3sQ%C@D"R&0ȉ۩? 0Q;ܼ0 YQI1$61dβ,Bp15iK1Ns.IޛOjDH0$`lߟ,j{-jQO4~@,0xo GJ&3C)"gR Ic 10뉈 +:ه{@H"d5|W|/ut2&6 @LUJȱK.]Y;9T>x&KmeZ n{}'wpؿa[U;.wޖm )u2Yg0 R'L\1xg؇̽5IQ1  ށ!)TH~'+mE6V @)"De8F `,)RĨ*HjVaǭ̫yvёκ6qy}J:OkbeuQsoJz:}{JR 02E@($q&#ct)Ҁ*2XוR2PFicP3IHk3@bPd,~|yjp}%|ѧ.6!&-Z9ռymUa3ސ/_Σ@ !!$\؀'0vWUWюWtGtwv;lc ',Hr|okwh/w{=g߽^o;;]eUKRL~|W33"9甁 1(!(ЁEUMf1%E\$H{dǦ"Db")t=6;rnEq,(zHÝrP Ʈq*f9yzӋ9÷~E.v1pp ^W_n@u}?ɩF Fj7S *|oȚ))BubG$9ta6lm6FM:IlH|\.;u݅YXUe_ϊ/mƻVC.5M{p/Ӆh0WdYw;~t7jf0(kyۭ$\c:W`r}돪v@3#u/0o`?w/f׏$G]W,Ƙ ,ׁ&M"1x4HHKe7ZJ]ٶ"!LSz/Q)Jn,˩jlv.ng]>3eyd&/tFŗϟ瞼p==pb4¢ޝ"\6He^k~$`*Pwn7|"DO[FW_ߐgoqme@r⧚g[\?}uH|:.$Kt iy<.i~3KI- ⊙oKIL9 y E%YwermиXn7Mte;B[,zgy`U Q Ϗۺg^$ןsM'B'O %a]ρxW'INK7RX\f7{ oԿ"H狙2zm7P,!@ m't*ͭ2ODRPD4dTc8K4جF2Iq^pc|~ɕK1v1r:kYHJ[//vX-wyq~8;\.A5-~k2lz._O:OMuE:w`Y[ L^uNLo ?: /?^ '#G}AnkW_.=_!jɗT0d> )HY|'Y6,B'8\_r2q9*iWA~Mf@S ڼLu qDH Qe-y=Ȑ]1_oz n:!`F^.&T5͜(OQ%e6O)l8!.ϊޅǛ2>u"&w}to5y5#ujr{vy"r+AЖ]n15g"fGH*T#2x? aKO!]X.ФR) f)$1\YԶ]׆]gy~w&a8;wk#iIȇaJKD%zޡyfcv%tɹl0,E۲-]3 6B' H 'NQ Yqlx^ܨJǃow|&Fx+?UU9V.^n!oy Ӎ ^U SAu=Y+ހID٫ n`l՗%/' {v`P,%s=C=Z ҷm@hC-tK%̫LڶnK6GEۥMݍ7RLxt}36!b1 c6pq8_ր᎓͵cDE5:'|ˣj)7n\Jx߲hKE,]샤m2EW^}nwސ_tg&# {Zjq h|eGSG\f)D̠ig]ejRUHHCC(j(YM4Ge=/NLD]WV#.l-fpzĈ4Ʊ%cZ6q̃{ǻ?x߽,BLE1QFJoRoZHMgb^ZrZD, 3u/[] # PUCtty+7ٽ h7)&o1K?<[7.^;=ڴ^ Y̅w!DIQ̰*U휇RsQhz)#R4 u|8{3g;1՛dzr!3[,&;_m#;z&MmO:fMp< 7ajUG!€ w w#!:7.Lq3p9=|-_[. fc{opHiz0Ay Ds LP @Sg~~"|ѼH!"w1b9CK1tm:#(¢7zE)YPSkZ|Vk63?pOWn_:ت8=q͂ٛv!v1Qhp_j o;~wýt||Qe([ #xW+j]'Gn}ymm5I \ '8tV9ŘgM)`uR )a1?Lmc{L&/^aYf,Re@`v1щkw˗ϟۏY{";J=S:PowaPۮM Lse1jQdmT(rUچ1v] `ԅ4s b `Pm,;˶탮I[[kې BlL-۹4ϲRՋ]ld[]y^mohJ 54r++;DfkCj#eF˶|l攁M=&Ř(QMFl0tT%(~]`tEVwg޵nPf|6c'ma psd"Kg?7Ǐ'[~S@HtpEnpX2R )]lQ**"-:Ơ&ΣAHX|k58/7 IBueQcs u: Y3wrme1*lc:uzmO<9~!*"׊rMu(=!hSHȲ,.uyRIՒT\^Ue}HbHmY9ZEUBQNu8;XfD -Ow3\ĮpSwaMn- h22a &)@u"sYg.Sj]X$Z myTcD*]NJ: \VB14(9㍍{IMŬs_.ء#~¯[,訢RڿH7hD )0& jDH1 >we=U=;Ե$Dp(! ڦa ," }$Iq|e(S@,X+?uWxCn\~?=w=1J7*l/^nVswj` +Qu+ iҡRaWo+$$n aQ85'E$:8hK!J4]Q&!ua.k꠲"j6N +SH=`ǎ\UMv#N (q]};$`jQdm}tcd1R?&+{$X4+&BIIki0RA4ި?Ck/sַ$w8g:=ޏcP0(!:f1D 𜙘%Cj~\9`ff3SM\.:2 4SuFm6"гy.ei3#m[^HԴ-3Em۴]-vD矘}裃bF_ #VE~Y7M{+fuſl0c߈9S7. ~+O}_#oL6OE=QDC FKʢ0PMB@,"+g?v,Exb&RT>%(h M-lY7!e.3HAe}1_V#zv EQ$!yx}E5j0CՖ^ 89vͲj}F@WŸ,uw{7g1DTT3`U9vEg9,BS!rh[#NusPn&*[z}l|6Hغ{v~$._An{h*vuLt&]"Ps 2[,m[Ejd@MR@F{OF,-g][Kb\g]bDMR>It]!H }ЌBf{c9MmoR׆EID1VU5 CUSY DlRpQڶkrǾZb증[OoNfGgF$=-f>roR MLVOyu$">eND-) p3$c3pD{rLLܵ]7IeL5%!Q_eÙ#$ҥ]ș{ 2hH1sN[HrΕUV7[~M~WrPI ]{E3Sb4CDADi'®[f@u@{Y,y3kLD+}B"G)( шf]-Cy<f "j\8s{mUZJwaE4⋪yL}1 AJIMBb"!ĦEHOs$f"w>ylCH]-mT̈(2$1@uu] )"ּ99"c&r{W2Oʿq} U~ι:$y m1{66z.2:bxS/aJyrm:c*Li[|blsn1F*m1!3s]l$6u|?C"bȼ$qY)7t"Y1%uΉj`0l- I P XTڶB Rڍ!RVNn'~kM07r 47@̢)UoE@SYQRRjSLuZضMQ=m0H c*(1+S2 12s,L.t9 !i$Y4 /2D1,ACd¼4YdU y1DbL%FlIL}Q*D:&AAATUzB ȫv(Mx$]'4_@JK1>Vir+h跶֧EH U9VLmSwyAJcK R"‘CJ. Rg47GN\`ObE$ue 0D@feV;-1eP *i: yUe.9kZ^6y - '!b&mQzSJ*Q99bPGs @MFU9sHuEvTU=2x֋i; c禳Bor+@ۅ,ˠ3dr)!2{XsNbJbDD˲ٙwe!K"D,)0-n"mCbd.ڦ%#"gwm}2LWޔ$X ɷ&aQ`Ձ.4KL,)`#o٨(G؏)W8`+B뮛#v& yV |׊Hnӝ]T f^wb-s˝?aKfJE9Wh$Dh}T|Yq=Ivh"(gHg\rDU@VRAR.f?'h@ u,'BP@543%z&X+ej#N_?QM'\D0d$1&xh}_3TiH@,F 2?( A:E6hH-j0KI @MTPV7Xj^^J??ȕ\LzrdC0UW39 }+jpuW7:_iŏ?/I[H@ @L@ P*`Dtu ,fb4a1;YȕC"6M"jHb (LH& V t "i23f.E}i+&]<nwm硲(BRU]{bXZьȡ$T 8k&(!]-8ZSVOxT?T5 4##1J0D ztCfj{Bᵕi,7Pbc?C?~|&m214Q-FM D|!4BDPPPSѽçv42G ft~%WD/ EB YSSW6*|UPV ɗ~bj>*MGE&`h@M6/o>{|泃ækΠI fü~c=p2>zwQDcOg* &;$`DWkuP'i}U \MhH%XMv[}5aGþ_ߴ]m6?G؟.v,ÔZFA @(+J%6\UD#KW/}0C "\#b y1dwv;Ӄih2<~le59 ^DqLVsTAnanG0:~34@~bʜF"3%fW P'˻sl%h懇3&(ևY^DԾGg_w?|Ï;@~V*JK`eb*4MK2G5r+x) G Zj+ F6Џ"U'%3reҐ^W _i"!(?.` JIjВDhl ijU}C2VB̈5@P#ږcCy'@|,3c4>:I4˲x}cz\fx.cn\w͑%yV`k=Tep=l~ )-,f]dQkma٩.~ RqW(@oklAU\'μ'<ߞM%֨ 1msD1Aa iJl#cXi>?OM dt2]&P#]|׶[ Kwp! Q Vv?)<"]@DGRT (zRA LT#  ,+6@!vK }9.?g?p|Nܱ_g)AyS5KFXt3D_pcB>r@UL-<̤"14ٴ-J?ٝ`Mɬ_[2}/<߽U->:* zwk n0BH@w`rƲ8=_|riU,ܐfgvhΣsjrVY(U YU .~ӥ W3`j8 ս+UZIŝ% %V+P4>°](#>#X-HL`G: j*ػ QɎ4WN)`R"p)ADHhb M{ `^ k0m=S<ۆ3e\q1_ǷQ;PU"b@">ϰ7D9/'dJ"B&r=plGWV{so'˥?z/ᆧ# ( *yDIeܝ._to=i]7C% ̂Y:688Ƙ2!E6G].X5ʏm:ؒtlE^8?'ow#!b_,lQ5 _.|tMF&Ӄz~(_f8(36C,ĺ WOLz}@C&P8 j0`@1$YGz77*" rBHt1FAEVS@rK $Ys~9Nņc'R4M}9&3K1 "}SLD(e+( 9sqނF`hϞ݃|sw>"Bf]x8hRè">g;v01*Y+_|sgf6/s/^?o>tkAU9dnMFϦy6 ǃ@/̘ #;(~>89C >o`D>5|>K,1s%aIE"jHh䗍~_T̒% 5"SC.ݿϑʳ??xhӦ|ԫ"^يV<WSB یG|F H(!"d6睅\;—~i8l_ʪ,F.`"!fJZ`B>yd0Ɠ[t~񧞹p񠭳loo]&NO9ʼnX?8[< jV&f ṃ5ߣ b.3p LȀVaUVpmD"`fSIPLHUY( @v%k}uYRKLBBIvxpxҥ)\mpgnccspˉ%LG#C+N'>/_S~ĝzw/`]SVEWn9 u59_|sIO*G\~opCs9tLspJ?>sl"e;],4]JN\  (h+IT1Hh]"d+gD-iT ,i^soǘR$y&J XG[̏iK!tHD'N\yn_ $Y5+շE$^%nۭ +H_} g?7o"13]hvb13ڹ$i,BIrXf~}8\[[c`M0pQU"iT|C";ݭ7msa9ӳ>nŦ+rӸT9fy70 eHC@T9vdy7(\saY>'yOL`hȢv./%JYv&#$QVXCĴ l5U ª#$Sg""KJEN۶R|>etM??څ$syMZJR9'"׾KRC|Ã8nt "0co;s¥YS'U 3, 6-&wqQ w ׇý&=(ˀ3*HZ5UEIĐR ] zÿO]xw[vz0+4yY.H .eH@$ )">c_{+!x3J.c*JXN6~TeAɥ#LF ,%{OxYXݹk\*+(#(pL)=uof =D"Sh`F>JfgnzqII8&UZ5)Y:?_,S=ڷJt+ '(#W( ^/xt+ W^) &m^A~tI{oET9͖tmyd*p+_8YAOdO8<82qJ ɟѠh9ŷ{ri;OПoّn@SDf'Jhm:XL=f#ܲ=E:h0jWtL0$ (]jKۻ [k!*ڮֱ]h[5 Ac, ʼre%>1!wf ZĉK?(q ssj>8s !;}E?<spVD~Ȝ+++wOLF'<̊ 26v1yFb&G`"J "K\;V<ŋۇk 3z^ !BT3Cmp  غsq^-T9R2$q4OǷYezϭϭEDDg~뺢5 hI>CZw3vCR~S"ů=sSka{OLn5o\Yr실vyd;YOA0J]H3"wd9uLA{ELIUT̡&YS9brrЊ!'ur1p(+ɆY6pTezXqeehVyUys{W:{/C3)u!Lc?|ٰtk%QU0S20TFQT2P~bhgV@&D%Ԙ$Iz;]\U{bG>}w.Dzfp-o7Oߎ18SJDr/Of~s7|BB1Ta5oM П\޴psWzGLaNKܫRTc[a\6phfEa,#&LCAl:d@&` bk? $E~K3 3jf>bL(!s7](qqG1PD豅lH{_8pޓch8pPYFEyO;$#G ϸ}b X1+-U7;1>ǿ7{ 5G\գETZ)FRNaKYn?=- /73(=.=#]\oxWO״إi$ʕޒZH7}Oo^?W\?\>g_>}gUfB̮i:tϑSb7_.'3z v悀L*x^M; M\f}LYΖ 3=ʪLӞ C(+xFvzkxbc2*2ddX Gha6(AQd3yg;Ǟ9\*U18q|mc20q=-1Zz㡷z*]ur  E`0s^U:H)Q]ߤ \U>A~XzcϧY!nIDATp zfyeFS5R"z|zs/Q^tc: h)ޗvd 6h'ҡ5;Sأth `FF`\{j}!4,Vx8;HGpA3+DrF?^WCU)8aUU^ر o{(^%lg6$r#͠˭n-2CޢiKS$F!++U}Ǿg; =~ףiU&e4s0=8vij[.Rc dF DHT-*vLJ#!ll8*R)5­}ƫ@DdLČC*9bm2 E6aGŰS|%v1]Y.c1X{212:3F>tHb \i_w7?mλXYp &@M[??'~0A3Dt='@iuإ놑~ q wH3Kikm`,iR|Vt]ry0?X."LM!=1qXzAٌ\* Ȋ@>+LL-Nź^f^+=8@$x.*1Ɣox{bqH(?qI-I5m'pY/ƣx(1$@ ekse|6vv!$no%.Dt`lD*R_; 6m#,ش.J2r 0Ƙ!qjsAFUM٠̜AǣrXe̽gq4{+wuUg}0g;iX`/f(:wz5.E8V GeQ:*2`@5$ )! )րf cOkj")@uesqV@װ!zteeü]y<,F̜#&6ǒJ!2j eAV,xplֈt@@[ou]BHf:*Lk(";w-ojw 31m:v/7wE{joo_b{km.G:yckI9E9#BFSEÔ4 (*{Q%`b!Q *-|pX, L%E2"GH*tX>'\n4 =sjhU%HGǵH!=z-cdEcr"3.s] lr5IH)Ujrjo3QI9g{&1^@8>G>caV+[45dqE2 g}iC#JBpἨtg_Ջîiݱuyt轧Z?q]['NYT){ ero{D)$j#hhfF,IТ4Ņz}0B>G}qUߎƄ{#3!c\YpWj@ȊHL"y.;#P,3Z+yH+F%Oh]%;*[_ՐzgzV&@֣Zo6=^ai*U&m R0goG0eho@*UNmO%`.C'c/V .7?}Y[ \esh<޳&!EB&d\d(!^s~eYl"bzE>쳧uH84mdCH&*4i@#@^A3A -g?ݰs&vDDH⃻ +Y0| TMVggiu=l'\+6r@Qk"c`,bÔwV5|*5'XQ"#<C:@(ɟ`O/>V[f qfVűtY}^/xPOZ<q|_}bݙ M㙲rPDrAHh칗vg˓U,^ycpN`z0;cEE/ d캶ٿ^4 );>K{̟?TDZ%*g)pw Fʃ)=&9rg&7+$;KR#`Ϲr%LRD&!30`+Ѽ!`$Ᶎ}>m,uÑڟ\#:2kEVg"╳Z,bqvx0>6>>s AQˎ l,;/JlnL6w1qhC2K^߿sKZQ>軿#O&?/ULDD" V Pgь9ϲҴNhAR2Tݝrz1~[ʪOEl<^oE{}Jk|߱a~8=//$ǣAQ(6,3iŚaz}2ǎ(2^g>1!H`]01=3։ںwd2$DD ђ295>R0y VwjhJ *Dd/u,kz +ZvEyQhw1B-+"J >C ] \<x_ eӣy.YqOOb/,Y}V>/}?_QrRң*{M`.ۋ^;RNnm'/^p"BycynENEY{b|Ѩ imEklr0O[հ^~38v4ܘhq[vz~"8`gd0qnv5 -@4IUMU#۽'F y?Z+}z8m'GMw.`d4^sگ71DžP-- ϝ1HJI*LyB>Z5g W8Э;N{穭"Ukw}ɬ2d1a!0i$бjU/h@&J%H*)D9PG&u@\*VT_{OW%(}u Ծb M ;"<*C9{h41]t{ U೟ۓuf4?? 䟖ee };[z'G Pv.d])%m''cn}mLt煃y+8sn"Oc( è Db sYʡXTSǎ{|SNƕj .J$% c`"Dfb@;@%C#,U 3ht!YLxMzOwEz'ZBW\U{Y~W^KD$E5D(AVd}VѪ>vDJCLG3γJi_l@bs?/E쓟U^_d@л?SLK[Oxg9MK)۠fzXz"I={,p8eAl9G,v,pwXv괘(rDP -@5*HȽǤZhahTN<}2&UXb$U|iIT"@Oۏ41tiR(MWC^&+L!jDl DSԚh"+*7w/==_/**O5f=QFO=׿  +pP3v}& gvnV5E\*C3f{{_y|cĩrQxm3se39ޞ+$*! X#0L3Jo1,֝RT;mwޓg9X"/&4S}3DSЏZ BЃNR,n&jXfyD@H}ʋDoe OQ]u3[5 ԬӔ,&[DzrQ60e5n]0cPBQ>E!vS;s2Nw{Ҍj{ T#O~%gUHj*eV G_ʥkÕ[ߛZnPB]v=wgx TG-~xmfoL{ <=?͵3HdFdBI{ϿŮ{뷻+rY l-# Ip,( \|݇_Xƣ!Ԓغ hkk9$1 2 BjĔ bvm}<=N?λT:.:iLk=SLTr23Mdj&eJJPO@EAfi[NSOGyhe,C)Efyw~??OLc缛8od2 !s}cJ鶇B,.8*W:dB*HMC>bDJ9SgeHn;($bk1߭!;8\4Vp8o$*ڷ9J_j;mWU>끆"1?_Wo]155pDg;_~sg/N`}m'뮦[\+|Q̠,חmݵm`-˓&p D)AMjI(Yڂ$"PI`DJ*a7TȲMgInCم;Ou $le6Pvl8^sl44"aoX,H"]°9FmX e^sp6FDAM} 15E{0m{Ŭy_i+mhTŒDP1U)y V`!"`0&(H}ǏmٳZ$Hjk{8J#T{w}O~__|я~'zz{p"&*^vp?.]dbd|bsm.g;(;c0yf3 )4KqمMC@Ƙ9$#t`ΙF킚 2.l9#9\>L"~(jF`SPgeS @9zfꚟr  2P5ľc)b$1Rn/J<3 U(33&Y3f; 7Y4M46F6trv˻Eڝf.bRLbIO)z* zh* JxUb4G.6K4ɲrվ dO{:ն-@4tU(v%g{e͝s=xϣ܏ vFLd@j}2EuC`Mg/ۿc2Ə>Q)y_3!:u8JT%Y ]B ubD c'f}0u 9{3˓xmu_~ħm<quyoXl.d+74δՋ?z-7@1RD6%T8 .ZXR04A(p߼~3I`~}ig>[Rfu5i d= sJ^ cs*ˤY5) W? %t","$1;LStE}&qi@Dι+6 'G/s\|+oʿ_W;v^zٳ {>>"۪ȜՋzQdN_noN˵X9&CdL(>('C8n)fnX>P]xh_:Z+>eX,[[[seH<(c躐Ue B*R{߇5gڪߠ b;W|^Uͮ=i{[ ה1AS@ ./B*|w>ޚlC":P dEhe5ńi ^J>@3:; /=z}=_C?Gwh O'Ow}fWԯϝ3pAH=*Fr Ho)^fRA}]{N{EIDCEM7]פ&HRii * $bJbgJA@yn&b쳌b/?Y8qVlyⓟ=B]5M/}Ho{8Au={䑇bٳ/];<,c[d<$PMy4ᐈRJY?%aXUD#!BRUV]zѮio{P5i;p;,M*/_}=k;)N_Ø% L&fΗh< x]SwqwgXY;sD@Ϝ7b mMzSA/n/R;&$o*(fc}V~7l izQD!3LJ(fe9;dž ( ):還(1i 3Tv0>fHYB#̟ gzZd@NDY~}xp8TUUy2g>oFSϾo'Oy(s5M,~c- "[E2 *coxnz#â YTRB`p,R qlVdR%ռ*YۘBmjk BH*;|;QF'3/ևqcsy<@o|矸,`/F3#0eD2F#T ffbl`1:"fFg YITU!M FivIJ4(*j W>KijY{x0+DaՊ_cϿҹ3Zw~~Gu98Y,f??iO1gyve3(2+0 w|ojs\e GUE$3DTQr*"HyV >/bOMr/ H".IA;O0eDoih"i]λ6lV3I4;"]s}K';Whƹ;5I-{|z/5 Oڳ;Oʲjo~Oտw/t3O76׿qmҪfm;On=;g Ihs3?q9e69x" B'f&`h>(ů?ϼvj9/LFĢ@heYD#kvқ [|[R eYbsX|j B 1vjP/m3~ ̩=2{[O\xzGF:1+lCAAW*ד$YOݟٖ]};^իyPg$$R"h[nmIvmGwCaPm5YDQI( (T73x{,n;vCEFTՋ޳߿=0R @ [΢15RQ R֜;EDc(ch?mjHuWW}(S4$lc$G~7lz7_ |Yo6Rֿ+ݛWݾrek{?#OWnߺ'_zw>π9Oh}}%3suR C.Ko~/קXQ``zrrPZ4g;PHȈ(r D^?6;ͲYOgups'їoO}5*V:>]52āA1#|&j HʖX#rNmVs'鯊f10(ئpds*:yj4 ッlPk16׊q/忸ysz:}7޸+/3rf9{~ߺ}s86m8m A!Ezoǿ~eF5B6)."dtztt;1)+%QeaYWQϯ䌦dې3P9۠?4_6HBˁVEY~xpV2f]$0ֳ(y5w:?c F4.ad{ǯ|2? q^-vnSx&P <d<'HKԪZTK*IM2dF$ EE߫ .#1' 0#=|w~w[URq 93ֱ^.YRȪH"#nbcdSEw3_2CJQ2.[eq^i}LHJE%5:Dett2-(bq:<;9 u$ҧ.?MOR7"t YDՂ ߺ_şGG3O+) jl2!RM\/ə 3׺̆d1-l(2{3MQSRւ 6V갷f59yW/ &h:ב! H.#z쑁 nn]'ʿ}3)ĸ\.QU! S5^{Wϊ/ =>>_yW .C Ipm==;;99•W{7%ڦ/D P ] ZAb;_ٿo4爪@DĦʌp^^@.F`f[xͷĻ/~d:9* ]rFF |su1;8>W?kNzozpVoqMqcrNb}:y2^ 2+"Hgx.N>/ }ϳ`d*~㣳i+?ְGL-Mݽg."ǗvV>:+7˲t/}s?o{]Kme{KWnyN=~d}82%k23RqxZONg 弻kW.?1E0p\E^/<"tCE&wuksstr6WOK' jVBSic i>(bnc6QrY_{| LL+`?/<ܛW~/=zqx0 P3.[)w2=Bdp h$3DEM$ Q5_<1vq/혉qBчO)=yr-i@KGNܼ~_}=rZl[CQӃ#?SU?qsm$+Z=<;͵kW?w~}a?}p$mQ(Q,b>MOX\{"뵧o9wM0fQD0 >0YRlAf[+<}3/<3Y6 j )lJ0uj6>xg~kvT&R{ح3,bFr,P-Ob^,RŬ ߚ{ru}}\G<.2.:mt\ R4B@ ]<^c蛢]մ\ g[BHW;ɅkryvY2r=?[sYmtxkrrymWW|ѓNJ<Mr*nm1g_>8sW._?>yy}s7qy̖^L _c)n߼u4p1s}ܳrAQ0B MN@jHD6ogͿ^焈@cJm=Mӈeml*9=><'q ))2tH7ct)K瞽Ym'-ߨ^:AsT\Kvo܏;w\t PhgowmvRR@R`ึ;Ñpέ+H;"x5w~| t(v/~ $s !0 !E~{gULU[cQPS e#mu%Pw')5yP>x}ώc { AA17/Ƨ~rXr"3K ѓGOME٫v._ZY'ӳ+ڽq0eȇm۵jp+W/]/֚T3_K U2HZTlDYX5WU{JM/ :6'Lf?_~p8/CH#"vd l٤ý[/ꅉ͚3HΛ~mb?{|_7Th5ݱv^=Ws;$Q23`D4sA8uG |We}T10.V#fKȳ˩ΙנqwόWW}o6~_ODHvi7{;kۥ0֩SW/;3}{?! 3HmQf_3Acrnu;ůϞ U5Dlfd`n^߻GޡX˂KiIT>QU ρS&-)- vP9C 4N!*&شZNupTߚF2b " (w!%!bYK=f0%d1`fQȲM'd1fAp6{>k6Q<4:&AM3 2Jn2dVCZxmVS@U-/, -:ӓýkyOtc`f\%kF6wbsS\lW@iAy糛)0w]D2N {ǧyפ seþpA5xN;;Z>,떉Qڦ{)% լ_꺩"lj-# ,fQh @4EtFDL:%Jb. єj#_ZZf4DtI +_Zn>g/wm^&b8< )u Fy}Ww.=UȄd ]A F^@z>" h8;_~mJ9#A+6!@ǩ'SmYVs vt/Snsn!1%HM`#1҇.E yđv""";D&VG#h]޻_kǔ0TU @Mۄ"~͝-{A4X-^C9v@Oҕ^ Hפ"1j_‹/}9 A뵽N&,hWULЀf` tXCYU>hFK~xU78h9%s\$8ȋLj(ֲ罙+y"D.A(W_}n=Wxu &DB+<#BtWQ ,5 33ċe@Go~do2,8XKɬ]ļZWe_[ ӟY=zAa^VN݄1Nfq?ߺc md͌$eH,DbTH:[L \( m6UUt93hE ZN\fkkGgSvkh4>~漝ttOv9]?b8$t9Οē!hF bpmSoI5眳VH{㪌ޫ{G䐚)% &^Q{rr|ʍ1wU=_. % @ 2䤈]iwfKDƤ`hgkOn?gW,Sy!ٜ t("Y-Q9'!B䜓iFtB뵕ƍ|l 8oh۳uhpeRO2E1϶YY Yk{>SӪ,om{e({'zxdR/zck)I0s152ouQ wpa[9K135hp,25\LE+b>+yU|xtkuH)Ztq:_̇,`RmDsj:.N%t  _eyr+_,93A|E3Η)IB\Q'' rꕝʧn6i `fue6˒O$!wڮ 0s'7 L|O}'D_;Wx(9ǔMٴ&fx hHeƬ &ՍxҠJ(偷]O[ -j3$A@8G@EEn,f1?:>$Σgd-1V54^nnKrhy2MI6FU6M6kvm|΍բp`3࢙?|ݽ7GG?~77٢Q1c)Mj9)#:sYA5f׋/|;i*T$>)B_(gәg]Uhv>\ź6m[TYB mNM8_L(&A2ژO&Ε̡CSZhr**ɜ3<3GM&pe齫zgg8Nrv;/?uk-ʂkچ 7EeYYl "F@ sLBrιN)xհm,\!"%WUR ˎ ODHļe8|7=9Jڥ[<U !i6&sH -[-HĴ F zb(qGfoU<m4Go^%Œijs+bsZ*C?.7VGj7é}}K3#go_{vcf ~߸_|ɯW^떝_fh8qQ:vSy1.uFY"J3 X^'Ms RIvEXR4ɲ,ᇎ(^54azbjUDɂ+&Zpxb G'Õ~IczZENuIT,{`SrunND>u,8ꦎ1ۛ7n]\sDEy_ l<L+1 uӝ%yM&*\ÅN0,scLJo&]PMS)->Ts $LТ#bD%16gI6G@i90_ͼp#,Fr;OYM1 6׵JPaay<PQѲjG\1EZuA 0pmct^T<M3Cxzg;z֪=^{ŧ_;W󢢢PaU 7>oӓ7~OhZI 1k: !V=,s,QO%uїF"m+lǧhseՠpbE \6ŴM/VE9-e=!&L9dMIΣ*(Txrі%A$9pŽA-$vڅAPSYdeu+WzUEuk:ZyQ0D FS`H.T1y PεM\0@Q~(S”  ԑdIH[y%T} "BۦAe` ۼՋ#7xz(yZ8g\d͏~zF\W0p0hV fA]nJӂ8FbTfgvW姟ss=z()9vkse}_+W~9^/TAؤa t̸Rظ0kQiINU^rLYRe9QuPeF\36NZCჽ9&i8(6mnn=~ro:;emZ.|>%Ĕrb~Ri7LEkhf2w-D!gAقu}e)9rλiz9$]p4Ur̎1s\˦m*6'6H*HB,yaguEIm̠ Udz4PA"a]hjN`"q9l.j^ 4?Hc^>?h9o<֠'9WI 0YZ7dȒco" 3$в@ f&4T"7W~y}\ݼzuw9 q̬nl5$&"6 ?;w̿7ۿ?/i2t]1,XW UVK Hf@H` 4d9P.6ǤKX6Ӕ)5)UN-4ش28x<) %(dR\ ,{#sQr@y6&3 Gi(wnC2K@Υ4:l@\ uyMtE,ur9Ȍ)%"͜gtL2l{=˝}B y =3A:MʚU2Z͈@Q %P#3bڼZӏrEipMYV'C΋ix+"TbP.IliUi!aZ<=~kzk]:ƍWGAMIL̐W*9.k.;&r8?Qo"䄄(6m)D1AiRmj+O>݃۟*lZpdgz;'DTT%p,Gr̋,ټ1D"\ֱ,Ѱg d$~mbnTEmiyjgCQV͝5B`П/$M\"@mY+$A؇kÙ`_+aSɴ|s\FL}m=]<{^bI$"BnۚС4"j̞LˢeF<I57KϘ L /t w(1y ,M7Ƌ4)#geƠbY=DP!%  PA!kۥݹ aCii2[ʡ(k߉s={lYb[ê T\Κ5D-NO}^{՗㞂b$0U^s^$h!AA@AL%[Ӳ]Fx* m~7p0NLD :!1"#2$F9,(%8x7 nnӗ?:Q@[Pr7D, hY <%K1Bu&bm- 9)!% :o9r]/OR(sS[*ks\mNjڌ(:;*Sd3FP6A+iǶ1`S:Kݝgb.DͺϦY?0`YOt}}Ƨ_ׇ1\xbDmkMSuUzG2r|NNtYP"瘝c&v(flfḙaT \MIRX*h@!#rskѫ7v 9R+m,!հ}wcnl~Ţrk`|g7^;_{ȫAorVނa/p6@P0`F#&b(xќ! ]fjkIY~0s|R)dՌLse(t2;]k7޹wp7"N'˕JQfby(#r )GS,MQ4r\ic(I,"t lfeqryGs3*8(9׽ᖡqJޜZϭyr,5iЫ,mOן8Sw!RB@5ɩV>95D)|޽O*vi|CB$%"G66f"X!8'Z"`|l1.Dͼss(f'< P Y@c N ZA4% 2S#)Za^Q3{/*s[*y,h6,|8ٯC?gh%V}?pҤjRD#xtۛw?#\]ܽY#dB%16,y0*c^YќO4hu;.W/" 9)c*<9/&i_gxcsu}Jf9-u.Y&0ITѐ e"BDd\eϔ˪gLX, LBzs\.C! /z Sѡ$"ԤXטI&J\19CU/cx.K+ˀٶ)6[)M,Ze3_ݹsƭkk, 5:Х$FbBb$'6g5K9;0"DPĘSNLP8n+/CYMQ[ou-/)L!#Wŕ $0uj :CaGd$ ώvBbK!/᝗~Oy|w|;+\5z˧+{_}Ծw~-pTTRez~N4aA"S,"] JKdr\˦r/˚;y/rGӫ׷t>i-+gS YdKu̚c1LHrL$51p/ H$T3gQARd^7bhXxHDi$Bp˥.U8ie6 *s-tv|pSׯFTQ=^~urPJ[ͦ%6:@M3UQABbBM"cR0앾l9)EQ9{MIJ mNLa9dp(LH#(!( !u5JX$ZnnE_=ɺ kc&F+{Zw_Yݸ-u<9dF9i;O'\oPnⰱyKH\;9{8 k^pThgUMi sJuv@dU9jU\;^ r&1:ܤ'*Z .M1bP!sEpgi֦iw)MMJxO Uy&vFjM (496N ̀vQ^CWhS7^C f7"ؚE_a?piwg$4ӭ뗞~"!"fQ`X]s82ui2sN&;Š BĆUě+u۲od~u>;%8)!z:uo|tsDu;usʥOJ` RjRY@c_=leTrfhZ&ET&x{}k~2Iʹq"2| dvP5wzFKMT50rUoR#V+:{KP/I2O* S7bm\]מsgOK4lk]8~rSm$@l A$U)Hn%Z>/˲ €Ys1 j4t+Õj4½Yd:_6y=og Ko J`1IN#@JBXٰ qPAS[#٤]䭵K۽rptrvzz읻zymvVJ ·ze“i|@{׏M* p6'LW/km6mǓŽ`WR " AoKV 7\msӶgdzrzrzvx}sWd!L˜U,?: De_x|=^^xhkD߹8 +KvɈ3@fDBL;63&>y{V5c.bl&GuBEO|o8yp$IOKf,{C+޻4'eO0pj;]`nh{<Ȍ-u\@ UM-H}{"h=NN'2|;d/WE $gM [ò|hZNa &D==-ȐCcG ɒC(HI6y@*t2Ϫq9&gf tQX"5n0̔PU$lmn1hBBܹ͈jػd~p4W 7 FetUu6iΰUbgnfp%1~`U.f9K_uʝkWZ0P6=&޻|˰{ʸ<9f_XhJ ׻sQ{(p0m{}ϯoD@`B,5@@Qb&4#0]ɠ$`Xz͓xw/ƣSj,|kxw=ۘ}i`d(0^:ؼ>ok6=;GTp q=u#ƨ9vRc@2CSYIRJlyc?>tqlqPxJYf?}Os6o bl:v6e А0ر Vc%;SHY̠UIn3"k }nPH\*](BfB*]SJ$2bŢ5bUUi}W}w޽ԋ؅1QID-2) xŧj]蟿a#jr΍04I&Y6-*bvV}7*]H $v2"2(# $! ͽGOBYK/Ѷ5u~ :$S'F dJp3F&"a`@[KWVnB|̲S4.0ɇ9ӏJrbepxYQSjk(cja:W>.z& Vz[)K(֧4uZܬj6?|W_k^~婫{LJcΓs!P·,=+fw?ßrt>/*g3u$;7EeѨא1:5EX7^| W6Ѡ..f狲^pXb@xtq_޽ƍzROpw~Ƹs;=8z6O<\z9(7I3ZM [/9:I!BlkA (K>9mYe}zu<m;62뷇x\./"&o|hD!ܸY`.,[4lm9'3 Sb☓ĠNct>o?vrM8>u}KmS]i;MeYfQUM.io+5m\ʳO_,LU9b_e87rE M&\-H$YΏ7Wzv!@xxO[]=/\=`ylTuh;7ϼsw~#8[۹wz/|>WӴ)c;zw']+'W.]P,"TP("ǒ]\T[=;}"T93$9岙݇ӹiir0߾q}{rST#rFklܣTdi>;I7iON},~sB`:#HnSl*ʣcpkş/g{Ǘ667^w|__}gSj8vhF];eD@~o('slƃ^8B,BQ8;wWzMFOfW7gEݭUsard8Yx4^ILeY/>xҝ;A9oRjM:YAr:E6Ф4tg'ۛd{>, S쇢oJ blBILzQ8؟.6\VKpjŹ'ajc4N'i"&zx왎&z:S?G=9琩jɽ.i ϭ|vں6~a\ݮzUI\/( ?l"B7u0dI 9F][W;eIrv s*{{gG}j;~lvx4ۗqd49$V7p6XǏnu-Prc )Ie^pUer۶1%1~)Y3,;TyÃ/8^YWf={kE%S`(rqpȚPH H`YӦ6Ų|I48aPyO9 Ͼ,z3%!`PzW[Л`X=s&?|w_.mrE5mono WG,}5xGAʲDFCdDKMNF!j*Qis)[ RZG{.Ox> vs7Z],{@ س%Ġkk7o\_[cD1gP~ƛo>9:6-ը*WÕxmeuƍ{w_,̪*=C@08'cgZ-Ga#]glIyrmFIܤ;彻dv:OAi}Q.'GXZԛM N.cs*_/N-]ظnڸfYeU^ϖm[J2E\8VN>>)X`.'z~֍󳣃Ó>]rB,Py: +7jck"ezǟٲN-;.pSγ:eDDi0=LbΣYTe =QE~ٛk7Pa,Ne-j`pf9xOZ6EeaQ $Ky({#,C)0qLAF[r]ٴ߳ >yEKzIH)%ρT;ݲ @!'fgAE^jm}tՕѸ*t2=8omG{JAr[Ol\,yKW??gp\༙iUt }vl" H6i|5Ŝ  JҨ{ܫ.4描Jlauʃ[YaWp~omw&=S+fr8=WN]0Vejcr+³sLb;w(Ti wu`2MNfƍ++7}< m?kl̓\w @HHfY8idMǤs SY28hZ4#}ʳɤ_Sw՗۶6fl"C3,qҮ6}^Sbr޹:Fe%̕rhE1.gw`F M<!BVUZᰙSXm&K"lnnnHh6ɓ'ܠlZ`e f<ܼqѰq7~zl TMTf3&2 d1FA"S;O D$ 82 ]:MpA“o>8m۷y>.ͦ (7闾xme- EÓ?|xgoyoЃk|X8DtuF=YvӢTb)E ql[#mN'{Wʒ]1"Agg2K_/wϖqmXeP;[? qf=,[׮|{b ScFQ*0d),icʹisjӦ$ :LhAɎTY@,KضK++^QVVVGܨ߫cl#W/^bKbIm*bs3"1:"FreeP4sXjWW4M.yID1?>^uqTu;rnS uLX]P**|0EW^nr1/=۫ۗ6zyx?gd#CFǮ"b #*Iu DQT DPU$Ts!8`VI ǽL ]_ijT!]>E`GTl?uj*xx}/C9(5|UrR՘R.͢ A=rg'{vvԝWs"e9~5siٟͷ:hBkKk+K3xstbG,b9^ E UU19ƳIs2oYlrRٚ$*!xN1 wMZw@9smAU!55 c֪2 B+G2R#ST1.] ˪jc@HM!wgAT`@r]J̹ 3ƒc]yUf@Bo M e\NsRdFN⨿rywcss|sղi=4Tr?dff`@Dw(&Hfl lfHfH}i^fQ F|љ7nq @\uG^PW:Z;+@}X\Pn >Z|8iZ5^YlMfV~U41/b>ɰ_šo{?m|/|cζ1^$鳕Ηޏ ?;ՠ3][l#YLX gI̶/]Y Ѡiو9cJ1mM!ꔖMlYv@EȌ s.xͱuGm\dJDp/ )3İb19ړ'ÞVbTU|կʲ=FD"EqČSՌ0Kwn3فkSk ]J9pV5Ppz35 9U_ uj[>A\X~oNOΞ~cjeYv ; .FAMSbb4Bj T* nJU3UdĜ|ѧ"OSO0 'LWo גxP,rˊoBѦ:kX,LȎ p~rx2,b,M"O+ 6Y.G\MXT3yӞwO؈hJUSL) WجT~Py-bJ:ǜ͛i1"6j?x'XGFEQ()rL$"f6CǎT* bY]I,;P0qNƷ>Jo'ѭ+O]Y|uѠ nYAUy,+\3*Ŭgf- ݨƴ6] .P RVu:HD4!"8M i>XGnytZ֫bn^Z9dtRaum s*b"IDRy:xF[0U("ۃ !:e666m/DS6i "lK[N|_U9aW֜c\El F)hhXLähR"f@(@s{S΍֓vq3e(eYblsNUo|kӇMm!TR.dc~ A:oV[J# *Gc:=z8O^7`Y`}3EQ?^)p^;Ԏ7F+}dsת76W^\Xɢ}W_z^,fĪd})6tn7IDHtЦxT:%&%iZ:R o$tל/ ;g26Qgu^\,|WxP) \OٽKۣ,{&&EEf9)/uX颙K!| b8tymLĢ)M;B,flڶzO&ׯ c\6%vvrpҥnJft1A@6C,^tFJ&"Z lFAT2Rb2KsiVϏr}j=a5fh֧l*貍]dQ(KGiew>6#+]ZBBHݒh@Bzo- ȀB&+}fd^wY[hf1\_dgl3O!hӂg*Px-^#{89l^%>S*]5ECX H: z%_<ث#]"Q|>:mzza%]X{wCέ^"3Uo!2KZc,K֚@m !q^i3woн,jGG'G|piTպz>Z9uٮ2cac < rQڀi͑P "JdJ$!:`P$c_J+\lTf1jg1N 461j$|Bt6)b[9zy ޹!@"A,jEMTjj5KtYjН"h4[m_7^+֦Qny$IIUST[6,rYk(Aҋe{w2[z7`̙ ViBр j}1FnCUm,FEq…30%dUZJ1^ $ i>AqýݝxE)JBfw<ص[wb0Z#crsQdgΜ.eY.ӼT9#aC4J4¬4uBody1r"8 P.*݅/B$ %QkR(E!8'02x2fEfw1""sSUM#":K ֧*i fdP#M,8l۶cbYeYdN "4o¡ ((KPnWW"B 1o EYY9.<3I sGGbe4\r8MjX΍Qw./"G~I[.P@DLxKTkKJ w{ {-}((J)JV(JDc >FB贱#Pj:QJxkscqg7fB5/IJERF8zf$"&1inڪ:0R-;b~щWL$d5 ߻}Ī2KSC H)iq @HABsQJ)@d: dʒA(5UdQ7˶.T U8j2Mw׮5H)D2c.1H!(+%jZΚz u{5,8V.0$cAbB- :Rbμ!!̧@ݽ=(,$D*\th\ NJr= y,T~qgyڹ:Mbd06"ޖ׼OFPPt8.mҗU(kS AO*C0b\x JN+qDvw@M37)ͩa/GΤ GCڶvRl2U Jt"p8? kM5,91ۚT£]m~^XX:WK~ޤI6VWWȒ"OJxmw\dW|42|6Γyd?37^>HӴQ3, 1Ik/{?XKwݼ?Zl?۾~XCdЊJߒI YjU8iH`iCWUlz4Q2yΝ{9nB4aeFO;cwGAA΃M3THDJ×m qM,=Yb@F˂cc;֘"/gPCZ ASiӥ'hUik-`V22oʪf)YB6Okul}sj%葇ޡv ENf b"lֲ3UI/H.k\!PŻ/%Bz>Y KL}~QԮ}_zчY;ob8UAǨ"Cd Hgse8Y KʻE4(iY5ι&ι 0wyG+M;'Gv*O&QƵmEĵmU׊(2bI6=8u&/r'щ4m|ZRk$~_zg9 j K b><8\[ϳ ,͋,4|6i2QFw_Q~a<{F<ie$JE7@l;OH P*2HXi|f{W}{#b]d fQ*D1cE/~~Ppy2d.ӈݼM^$14-"grE@#*a&Cu#6<\8W[vӤCHLTk۶ioSKEB͍IҮ}{0}}=xegl:9$&!"{*AYJt!ָX;G!*4i6O$5yɑ{>hgmфY&$4APZ; #*J#6Nz.z%Q)$ⲍ5ĤYEVTU3LN!jӤs7h @ Ӆ&L.Fte{Eε FED#efLq4y)M YadI G$eˇ~.faߐeٔA'V^|3/,'ϟ-gEۄp8'-9EjD$"hS[-Fq1QH2}@3_圫e=?}^K+{|ekO 8Y89Ĉ٢iGw/{LP092JCx6jmDMjs-c~6%2u,V%!љ D{՗{\tAB6I$ }bm딬X@rXPY /͖ލqbwߝαJ"!`"CQIuS52eUbVEX% !Ad{v, @2[Vg̦֘')AP%5-|qp֝KN#BO:oJ,cfR}T4wuX.V<;y:sv%E'߸]M+)*UiQJLdDэŝ6N:]hNӴ*"b=هz35"Y,K%YEhDV)Kh0@Z 4FF ls۶p*ꨈdA3AI@d>99B`RZ6YY{xpyc])J8;+"oچ0ˋERZIУ,i>N5?Fd?/,N8:hvG+Ѩ*ɑIa9?q٭0ɱ&T±EA GO?uv̒{zoALWu#N`!4Ef1ʃ|:yR|g\4i/iv@b~!EJA7Oܹ3F!f<2ah Sb-^6apq81VS@Hu"HH $Hږe)"/by셭ٴAV)jeيеH@VEe=/}g;f)ba Zkn1smef3s۴,bThXkܣ[]Y=;GuWcXd6DHfFՍ"4&&;fm$FMs@$I++ޗ5,SW岬M2h ӞJ̼n;hvօ- &ɵI;(.Ͽt_*6j'w^~q1g jTKJvӅ~q_>d5r,Ihk)9F *-uҷgmnm:1 oQ/ =K)T#SNkXYӎTi%1ֻ.Ih󼬪UK|m`8T76ý.\X h0VG-6Q0(MۓtzkU%"!Ab(I"JS[-}k뫧悚R5_}@nylCD!+ܤi%!Mj@.˅R$\cɄYw m  Cl͖2[$iz@-YAwom*Y~G 3DALL&Ѫb}#p&Ey۟{EqY.lq{\:W^F}YUe[/N5MT0G@e )h0cn1Q)e8@+,^Z[= 4KL6 n^% 3IpQ5y/ˋlO3 ml ?*r߸n[$X`H+m(>HoP6դi0Lk]q:9uꓼG= &Z02TY+6|)+?MZ兮n#7$w\lWLWKDI r,yXkdemuڵ+Y`_Y:6ts믿czN$MiZ y[&"KhfA#s_6gl2$ ,KG Djj&/e5M\=U:+za>eڲJLV T_ڶ QmE̝ޛ}[UG.Rϓ4(5VG{K{rkpzvS׎mLA@[=h^/f52,kŤ50peӴR(#a'3'YJ+ID-"5MM H9uD1 *Rjma 4&QxmenxNa%.F wG~ɇ>.$U9RIl4`QE1;GӪ=-A)$R bm}̩=ȏܯDb+1Z?}{ӏD HQ:y"ňZȬU)LTޮ_I^4frxJu|<00ymzc4Q}-j5&z*/ꇚ??{Xܺ^YY Eyyf:~[2RPY{԰J_VN:Wú F<:9o0?0}{^2 o.ENM$"m#/9\^ {+{FYo~T.O+<G3[/ۗCo_~י/}v5&<ެMM{sloOfWx\gE^-{G9z0; 9ޙf^) یOdSKػIGu&&Ҫi*uuUJY*E2j:y5u,4$Vt`Sr9?u"riRl8{^|ƍۋbuu5sݝIв*jmҼ׳ !ڪ`_rUPk}t Hu[IR7^uS lهJ BEPk aE"Ę@5 +cHh%ZDBcumtH It,!!DZTٳW9z3gά"* ևP/ġ0 +Y$Mbc}\<*|u"E$FdL6ʃW·}Vq#Z[kfFPD9[/?y~nzsrᏮ^|䜌S4k4~~rhvpaubN\<>șVzm\IF4\`x683NϏ&_}g~{_ {Jŵ(=˗/Φ#3u{8?YkdVmQoN{Uawsھ^l7>Ӿ1yNP1/8z 39EdR6hb{ROlUՑeeښ(FI{7Mmmpl GnX,Keˬ؆\괰FGڭAHkn|qKӎGY;'A+$ y^tWUF+BfX IvU"*a$ D.8;Ūl.JV6&R>8ԠQ1pr ([_RwGR=_qwzg)&B`uiHJsk"8_ܗy(P1˱BG"MYIL}WN/ٗ^}~7>|20"诀B0*ՓggOvtQ[܎{샧\K;ۯ;PkC6|ګ%$88?ߺfkp'6|cg45L.( _p+\Ivv?,>޽4k^/6|=_]AEjkkoۼWA]7*"quYpMekA-1NJ*8̎u6&ҝ!j,*hݻ;L%(2DTd&(>rLj×/oz9Z`"*09/]KV e%̠F"0$I?I3E,!6C VȊ823C:fڪ*Z ɵI!մf06l$CCR̬B Ȩa{Glƽ[ww{s8z/1""Re4͊XxY[{W=V1HHT=&vR8';wO]y;>_conGK<Ɖ1Y:Lybgfm6/k=<|8޵:x/}ީґ4Y?l߹|b=?_Oڧo;wv?|\ ׶-Dmr~޹뱗j͜&έWҴ(Dc4% y׮TФYs0Ɛ›wnoMgٴu `ZW\z:E٬Aȳ,v2:uj>SzчdXU(AIɍ['1H:7[,Fk|W_=g(-ٹV)EֹiA 2<}(6JiE# Z@\Zi*˺i$e>8f4B;Fw.\p9LAb|<Ƌ# m<(8R ǺQݷ$D Ggf[d Q5_J$#G","ؿOI;s7>=<}@i&dbf&1V"pG?ZlǢ78}xtYGʦ&y?>wo\*@Bhw4VYp9_JmF#$KVOl\xgT-ċW^:Cot4Y|՟oS O|?P==zIF!N۶m۴;Zb1ZWUMvc~wW g]/4M׳۟yҤCm۲Z{|k-&G>c֕ʺY;w~!b[<1:}bHQk}-fj4f'*FcY1H|,o.ov75nHD~/7&Voi.)$ԓbI~\@zDuc WFB`ٜfy9b2Z>آV@|t.u ioLnY&q[{*H'~WQ"p(RV6m9_ mVl!T]]-fG8{9IG{EM|dP_xbWKZu7mbK~#aujte;?X|>_, DZiD~8F[gYrƪPJuJUdvՍ,+m5N͗͵\*4d}o8ŗk _&xu&HRݮ (Ff{P ;=Mto CWv7 {0ޭrr\#އ4Ң@$ ;!sъc"a*6D,CDD@X:=$X DV1mKmB,,C,e^ V6701{$B(ڀhKϼS&B >@\zF&,ZΗlӞ2]|cUvYDQ #6yg'Xd`c+ƨd n^yO~ӟz_-˲C+"m͠|'ϞVg?; *q}7"bg4eTZJ>Dķ'N/ OY7Fy΍^1N5ң<3!}B&!D&`"nE @DCǏZǡ%(|ܐޅQYN&{{VA6lze̼l(M{Vo04&*E/c̜$st'Obaml{ŴM3)"S؁ E# )I}d"Є}iy祗bHA#+ĵm$$[{~!{WxNgMX8r~E^XL|qb^YOz;J#p#},"Zvs?'~sO?߽m 1 !"p`SY#')M*WnLF>{w"OX"GGGƄձDҐdkib,ǃ}ݴ" IILb(~T8u' ud|v7_`zXZ+T94MY7ykS-B! ,psmkNu}RH+IQa,#al!b,"Z[`Z8'Bc f@5u Q10w: &TYi}Y%If݇~0Kؕ{3%}F;lPͭ7qz 9|q(@!`^k ~wקzP7B "E |g?g>?$˳p#@E phHQ<- g탃ysIKM8A/]]]::pdgg/=paطĨQk,cR{nN\/7|'֚ *$,: \ұq@C}ݾ\C@12QE뽝]eMVG·m@MQDX8v, B`nXcõ5pbjU"F$ֆL5[e$UTfƤ!2!F"e>`DHX%%2I^u8?ؾu7z 4mT['|wчoȠY[8Ccz#?&ъt̨-/7.1I,/~}0DLwVW7\얯?=0BrO?pV݃7gݕg.\{~{e/Ml֩G.mV[e}k{"!h`F>|LMX, b?/<1j~x7'#iH5 O}f{8EãijVA  1B^E{v94e=n魝ԩ0'J!cDB !4MUSr"X;dL0s`tJJGv̤X L%9Eޚ7#2{킵 L=u4?AR#"6_UGG0yHrผcGS&5 t *@;.IW_|ŧ*"!7$j7Mt>4ˊY2Z_5O^QZD(fًd$vOhHl+Ԣs1U#w^z=K۴:d9wkB?؛M ڵ.IMJ/=8d!AaP֕knk$$!$7oS7p ?A ѿ߽ W+Ek}ybSkH X-T{WWWrEDf'}N2-|16_y{I$ ޗUu]M9 ED@tvd±A׊lAׯo~ͼ*ruiO%~<:G8 j}Lg|Z=k1ZcI)ڦi<7ZzDŽcrfф_zӯK&5\[PL*0cUjք?_W.1/hA#Q b4Z#G*@$F:ɲrܬmnՍ]ʘBi0u[BM ;Sb"N*5xgѯqV|T!q8kto?}/'c`^ȷ|_o/1@JW_vYR BSG0RE1XN1F|>=Y-%/8Z4cO|3g2]=lsg6ˆs6No F(xpTURDit hTIfU<"jR{aÝoi$@dOpft6g,Keku5ν禩D|ϒI,f0jmRW^ijxׇJU$0@aQHD3#@ascc=u) ؽmLYAATn_gBE7;[{^-wl=[,feEio8@ 06xQƸOZZ_}Qm+1Zq/}ӛ[u]iVh1>AIۦ- ^y#Z"P",Dtx@AO_y+,Sӵs/]y`csm887w޺Zz4ro\ST>w;?DBQrw^FJg` @@bB<0c"i #WV׶>ҏ!:DYD>V)Re9pW 0ubLJE7O?ǫ)JgyQo)䍻nѨf1(JAж1FAGc?s_wMRRJ #[zDx oLr9k[kxckkkWRaeǩI5Hi Œ T2AaHT4-> !]$yY/} gί64b`;7Rgف '7yBHLQ|Gib2xMRXMן]Kck={%Red0"D&TZ6v4=c1#|I7N8\./GV.^^V߾svUfepmri/o蘓,]_6M+XA'ia J0r 0F@E0XFQ ö_~҈]D dHLw:S@a`dyC"裃?'_*zjee ܡ7,"j\Sҿϟ֏7 / 'ƦB"BZG͟KoW^!η7uR(BCPib_VvGvt6?}FӔY)cY,B@:nMHQAI#AzoCo24鱋$M(D6^!:HNgvvo)hZRDX)fab#R#X_ƾ4f6޼u_/G;|%B4"vm_0Y?w :6\^tmYynUnYQ/Ъi1ByM1̅ѰK:a^yKv<$mT "}=N73k4Cz?{iSa(ΝOΰ+1pT&s~}{ȋX}ȍ 6gb_=*HhDN>3ys[VMlB`US^Ap1F/}wؔCc?{ʲ?&t ֹ$3~!7%oN"늠w  Xk `2!0Ǔ-DP]#9 ~ӟ^LWӠuKP:/Y2j 2pL@ 0 h"f)EDDP:*!;׺l,&K}UV͵ݝl^V.B:DTdGG/w諢"b/D|#Xo]1\7<zą=N`ؼN'#vvv,idG ƀ 4iqycmSqҮqƀVJQz{1:=TbUT񍋾UJiHFL%ȱQAD4ͧ_hzhsppp?7}_gzzg(rl2O/~˷~x|zT.˭g[H?>؇{ WJ b^/x}7~oԿ.]yc=u+G뻾ifc jr[Y.C-m`/+& г)̖|yuH%y;A0@9n1~+?q .O,˲?puF挄IJJȨ B+Q)ݼ6w]Q/1:FnjjzK?&DcgW_̲1sfm\GZN9=Cwv;wĈEwf@ N9w,>G*B5iH-reU־v-qEJ\kwt(UOɢ^X21DFAD&DfBR EN"s4ʏ/=gܟ~E$2{WnW[?m7nol7V狩5por?s?#?W?dmcSkȵ㫟g_Ǿ?W=ܻj_1ZPb4AAކjO I!ʔ'׊=_M:_]D 1рI{B !lo`-@,ǃ%VHzGH!/DVGuM˙PrQ\+TN8RJ cPZ\ ^3)˒94yݲDfщׯh<&&M[^y{+ϥ X/xvu{I vGwJCnv޻ϝA$EK͕qsTs4K@&[gdߺvy! H"\D C,JQ9?_F?-v kDJ-&Gc/g>?N?{~xpk?s~ckۮ{= Qyާ܍}wY ???z]onDxlKQD-AWGwDr?Rz;[%%DI0<+']K+"`@$Rw A ;t J c `!j416ZC"6ZFeP)҄,b9*( "1r$DcmDuIB57mFsNSxةNE۸(mv6S[jI_ui'bpSD͋:3B<D6 kH6$z_sҧ~f(&NϿ]9!+3~fJ)Znc hP,3}T+H󽕵_~ŸMeQ 0 v;qrK}|{Ccy̞ŝR=\{>vv}4F//_zO:Mz?O?ubk뭭r0,'IOW,3OEa;~lDBD" )穡hVzpq cZ'`-Q2S"pG¾ 1Rt ҩP$!%HH$< 2 * Ț#9mU.u|d !"+kWGcG`>bJ!B^}:E_Mh8 @@Bln@&-j"${X5Oz~U禩֎l?Ͼѹ7^*݃HkjzB_١+>@#4̌@|]@AD e} s~\ў矿uc_Ќf&u}֪NtqbR?5muc9+^'/o!1|ཏ/>S'g>6Ɯ^ Dagla_y?ttW@@&It^7?b/=CK BPpl [%bHi%t= ^w3~Bβ;ו2 JD l :AZ>v`B\UHHpe?xFK7*:ȹYb .MÑF;m[W_W7u@#Ǻg>VǨ~|4MQw¶B1|Pkp8\,xmܑx#F7! ?,&F@̭^)WibXH{/:׌#Ja3 ."@;µ}~mq|n53kXtYxydX.]RJ|PC-WMjSb2J :J;nOo?Rh;$U] JQTnώf_OFb|]}g~AU^$7]褠48V*uTLkΎbY3IpK<^{kW>Cj'>gp5RJ:\Q۽Y}Y6mHVV{?E4(1;wS/O|lbQsN5ɬG0oU͸(Bo(s(`!"ZϡfJ (ė]o}ˡJ`!Q`B@%]\F/AE4(AJ1$ 1ME/X]~;& k "ĭiK$^NVhTMg? d#6FD1QH&T!JYPP/j> +1DPD H46sR~ڍzg@DPYbg9I7feܳ/@Qp"}/{+nLIJ44¬D*Ѥd/P%De ճ#_g.*4*]\YVUU1s{|n{W: wFD+ɇp7n2Dȴ"(;<PQ,|_`X<2" T6jBGfI:Ҳ/Q9mP2-D>r/Gmf 0GgI]/n߾_][]UbfT "ZxQiGv5uPZgASGcxt# 9Ӓb(DN9pdV#rkJȧ6O? ݸf6Eve5i6΁RZA$AP!̅R!L`c5JC)Eb,'fU[o<-@nC(A|pQ0H AXdQ{εu_xM{m`!A M QQe@EtN \B!Ffրhp`n AA# ;=2˂*̬jzpWn^gL~ĉ['6H-R26Tr6ޝgGټi]$V!G4[Q ꈬOmEǬDk"U${Txŝݝ] >'9< Dl^.Gkى JfZa `L6"1 Ѽf؉ *RJAA(@!xR;yWZ[nKgt]7Mv7Nl89^;ۿ}}owg{tY"/l ,rbIjuG~39 USLޯ^9q*K@im1qbty:a wfqdu: F1#@ !~gE*9]#1A@p#"jxЇQrJu,e-Xc9P.A|x^^w![ɚpgL#9xK5Z˿KG_{yuyNp6ey9W^{wf/gK`΍ZOn"FmW]9w)t x纑**j堤js׾LJtq[+LcӃET.%6Snn(hJ )$U=z1ϲ[>WhL)աV2"mdLH;|DTV C@ 1։A4v}%h4ۼK}'+/>z틟]j`,n.x4)H$FL D|}o>zo:Z0Fbp4qϽ c`EdVwp7lcI)/z5>KZc]jT,BDRUK#uEdn9D?{mYvsε'|o9'4$HA"%QiZ,AcCx ےdіd")SD $@sNo|O{09uުn4@TQ9;֚$]6$Pt$HȁBD19DD]찯;0?3o|;yMS3VѫgϷ+[fሓ8q4~ÿ5?ӞOT8xP7ؑ†aϹQ7K/,h[?85iiYfLԭYDqMǦ=ZZ~ϭ+G?iJ:FVWkSeUN…3?W~|kܠ>wݷL}^g7dw筇sO>藾vgf~6Ϟ'L%i?Ds%^[D)VBZR%1\#\xgP} 1`\d%{u"DUjUED"́!3{眭"j;jpTeN9s魍]Bj={QJI  vDfS ("BHcfH4&dbNLZU"aC`<{>pP}_@FQ%n̺c[4IpvjnkP\nJSInx7,[酣s  ȁCN7Ŭ?~ Eoy76Tvl{=w-uVIAqga~Igffοlg%k W%omn ?ITpA,F-JdYoluEYm2/xrccZfRz`$XW,Mw[;=fT`$mBD1SA[Įm+ &&I,1/ڹ0}QU D$03.~RJ&?@NC&b:s\eRIP)5R 2PPQJtfɈrd -[[IbQXjfsCQZkqVFѓg30.%0@nTg:K:fN;F֮|wUrdiaӭBvEo{E,eR’ִ~j=f=5IPef7c|  Jl4mQƪr:1T*E$A*Wq`GsgWN:gtLØ$" ϟzͺ*H:y@H%˾ly3kX2Pĺ)|WV!8h(T!r7|W_= au}F#X 쮆dF (Kfi ^9G D rŨmgfu> 6:pVEQ(O?}MjxW$*FgDTwjj}}}1z5f"JHN B  Y)?1Iei6 y1(ϞX(R$l4HU 777Wa"RDǜ$@xHV3V%Ȉ 6ZAEPJQ3GD+nX=>?]zW1IF_6i1C|FeceTgNyRp'^9sz[{⣏ _Y kKҩFm!A(u: "%隢P PX8!EZh6 CHS3rY}9*i!i !HТڰp0:xssB !,A`F`΃Hj-  AtByVZ)E2!@6<@iT m1ΚhMc^<_i ٳeYʤR8}UU"`KTS+U0JAӨDC3 sL7(K;Rә^8uf{Y:ꙵ9塣r̅ ovvٕյN_`G)LJJHȥׅ[XBRS"nsAa ؅Fe%#1dsشi8xvn0z, 2,\ntJ)lU刃p,8ȁNwCHDIRPDtV$ ⁈ "aLghA`BT}Y 6-@$@`B r4N67οʛCH**B,1t&͊FH@E;GG>{ŰhO`fLDw( +Ii-Ƞ0f m6 鵭-*b TM3q}GIB#*v) ZXO=,*0fc"[ٳ++gN }ʹ;R?iX]IDATIcŖ/>ܱ'2&Ui0MцҞz(Bp** 4a"S@ڄ$I҇Zޥn!IIĉHw q>xHg~|cc"ƕvh4fNy ? 8@&ye5Uy[F륥pDkpÉn>xv yۼmhcO=p4bAҚwLp,AdX=氥&fk~ū7;}c>KHRYe#I8r(UeV堬F#<ҭv 3 *vq}\YrA Q)Cng{?ls,@Xj6)BRY|ѰY@$E3x+^MLB3'W_5FUkM,ʊ Zz;*Ʊ,Inlo,ĨX,H@DH1sD>nTPQ,s]$IDQIkn̹ DdɵR3\T{A@T+Rnj_aQYoZXvz=D"'IfJ]eUU eAFV7?[Wbg۳ۭ;_<>yF8VՊwJE~LtNv4UL3X pP֕7"}( [*眄4I]/Mι$I.hR̂!d _I&rxT˜qR*8pb] ̀(TY nH9f#yݿ=wQ~ꅥ_Q5g$qB;Q(Vnm/>l7km%o,MA|H;ȱlåTNtOhd%(\㴯LQ" t hE~âx[kZ)KP"Rh4"E$V rB@1VI%o6&+A H)WU?DCy(K,?Pk3gycxY*x[F^1.v}y*ә`-I, ;UeY@!M|\fNS8?/@1ޅUB@B+k'|UEYUΡewe6:pIDyx1j/B$*yǾ/w{ztП{_њ`QEToA(څJL{ivnssE3w#Yve )^YlgW6zwvcGFCc Xg% &"xf)Qh(`dV#m},e8'iJLLJJ+"ASI"2"F{5hrza]UvđIJC E4BmsZoVFI~`csnUH{}Q6}SCψ:ffgQQ# { aa.^RTBni1/ejR[U{I+fvR5!"֡I"`097{n7`(>jW6v@,mC}?agؘt4,ib]xݺW00G:Aj4{Z'>SvYܖέ>a}m8g7N^xǽ~X>6[s>/;Ѡ*R, O4F*%xFdA@x66/ $"SaU<b$WbF؏ʘ$K`[Q 4y6Fhd]LC9TUoDkuڧ>( `ް>fx`~ii.IheRT`0f!{hf8q@ēY/[j.jS it3c[xX%@HiO DB,I$N{՞`+#E؝&zKlf~E7:S˿sNuǾħ蓭Ƹ$RD1DQb,> 5us@I{fm7;E>A*PZI-|CVX<B(+Naw5N,E߽\hmWf%`&Љ/?daFBHH|~ 9"s,Dv\+"!xHMUUP !P7BpڠͰ)WDk=«'6lABSO_yLXc'T:vg.WsטkF(˳qlrMǏɼ2 As]j'_FZ3&Sj~HɁ qT&M3)25'ȶ(ӣ~9VWW֦QX!ASϟ??CN]׬XP@ybf"!ֹde")t&=y4.p{I0nk+|;iaw[ slldn&Fû+_2+!ԅ]j"uPNy+_Ȣ㘨c5H$o Į,BH{R=i4ZW"X$+d_:gC DӬ̫WU%iFIH1fQDO=dY,'N?hv+I/3_ ,Z;|QV[[̢p8lwZZXwZnϽޤ ]fLB&'l[V:aMEMFhd[}pJ4E[&opT9H =hgFf]G|]x]w`à XS)P}1bV kUg/m 4Uӳ *iDsg,1[UloXEH [Xܱ-/Ba F. aʳFFi=kk_A31)C j@U؃ꥈb(s BEr*K!Y W/Fg5P`+ˌ(HEl548f4*Z·_}-&$iLh/'x_ۜNvϣcS{;5TTC4y>37s[[;ݓ\thwwy.(R t=N3֗U/y( R$ >uP,;#%"p5(.M]fUfk\g9rO=˧zo:CS[*$uv15{z՗Ϝ=<3 ¨'RPPeUy[oNZkGGnnlYF Sf+fJ$_4_gdT:r>2(ccr}'-A]J@c_BfmxD-[Ѩߞ;p䩪2,&̓T,)YNb*fX@jZk hTb]|l,5@Z;==/~_x{|[.Uae2tgʗ9?D2i#އ^x,v' w Q5rL:2Dn7ca#E~Hڔ(=5=6t g(ZgFZN^֦?uۺ 6\eK'O>g.׸HĒ`LxĹ/ ݩ,*ЕHU2 ˾7 aYVTg=Y.[RIWHOus6]m:v;OF}@."r6FDDD UU ;I.VN=l$UQNTXk $M $ d4V${ao Sfſ?/˿-["K@@QgNCBrVUUU8BSݩ'|ʯ%i*hs.2" #pd#‹6UDX"!@z*`fl4ZEY(mP8?,#qYYE9`DPCak .8 }5rI'ѠqGa˧\>8=#VSgLO(@BmVH+뫛[ܘNo}W6 "{kBK/2;pfkЇ~Sț)2/!1(sON @GZ)U$铊&@||?J)y 3!5f]~{j;^/goL?08wsg6t^X7Lˤ&3RH}:GD$ZfF_z/7x@RͱY$Д !<§>G$KvkjjT;W\b+?'z&K4KcBĮBf!E&[&U:#Q0)H@*_.* APc4IQ h B(BVFn;K0$ IgFZL;',rH !x [&!CA!D芃ci~{/ DTRl9s_PƁ>/|~_?=CB_~c}ɭmDX^^z׻w$T}oG6$˿ˋVNZc=|cNMәFĪ*=??s3y/=,\E: fGU'C ̒-(wj$yӹCY)f` t1rEQ K[SD{vH " .CL[ik3TɰԤlUe 6v^X?zӧ D=0nd`0ʍY73s[+["jB3 < kho(a"^;%0Y@ 1cra"$i$u(=l. bXnj7oc+>`o vBxh f|LjJBf66ͯ?~򙧟 佟vWή؏;nW?džŀV,=|ß'>/ fv| ?ЯtSN?=sϯoQwjb,Y{w`g_s s;\y; usȱ]bB ]e 5%\i :W";vsJBAUv5=:ʝPXܺ*"5>`M^iMN>iЍF[;3:Ysk0董/u򌙝Ka4+ q`R8|ag#U0_"ΗuYXN!%,C3(R¨Di$VdΚVt2I(❯s= XniޞR3 tglukS텛~PB buko_1wݥWC UZ si6S/Ji@A~[u٘5Ά#}_[뿹{~磿K GEr}a5:_~ó%]B3;h Ew@ 5(DjM&I((iEHP)J)TZ%dvw*Mf9@QJy[yn7SMZuBm7ZG,Y^:<;ZdsqؒEۥ)/,^K!@P)l@Qy7>+nDX(¬H9vh֛oYU )@B]]Xˤ{[Z cG♩T+5Zi5^363ҹI },wK(!{QGtw?_?8=37 9)y4"Rd&K,˔B"$Z'zMbb̞}]o\~qˋr4W9=S'? "҉H 0k]UTUWU88Ƕ%*@cE˧_Hy1pW8XE>pqVHdFkC!s!MI֞C u$%񛪴wrM'NTU@YVKK{W|k7gvm,Þ ʆ֦:W9dۥ֐sRBJ(f'%"JcUuaAD cTu2O}U=\\c?,dz<Μ=X;JZc8vwwjof0iI7 5yTW:3;R64s=_X8}tF "KC`a@hf !B;tfzQDV$M3RF4M:1J+Ss`2u/?m={/?䘟-:SWA0JE`ZRbjBD677o|`s! gC8&#٭grx1ԛ$1f]<ϓ$ !E鼯le!M`N Qqpoy_wAL@87plI !Ryh qZH"y'cZAm`T$&˫š$#*DDaPX8y&#vKV4L :|J?}_~=NZ]ާiiVI542Z) 2:Pb"k]`X*U[UOG+KKeYlnAqL0 0p0 "H|"5}g~=z{s$T,k2(FáRxև>+Ӕ(fhB̤l (F~RtYX.y#ϺIfh>SZ(tֆ(X )!z$IRUU0c`0@5_v{o,Y6x̪:+Q{A$ ½vӬ;ktBp1i>"M`A@Ete(PրRAh+A9"RM 0b`R*nΎ#_x_R7RltHb)ʓԠ=fI`TMvf9sD0N8xreA$I{#} o~ˏ}i| &Bbb;*1&XzēDJӔAZz-],ż#' AXfk;®K|y*"ֺ{Ȥkϔ-//yveV}o# (:b+k 1kN/}z}ecmEJ+)!xn|SxO&  wfS+%&MhTbLfI\[X^J{07gΞǚ\|t.֕i>{ĈsޘV"Ш(|ksq:t彵?~40Wf5]1&ٱq:Ǿ|D(ͭ3O9v|{4JkF͙*JgiS!(oe~烕 P yPH:B7[F655??}8`GBc al]yR3M0-ky3U ݨ|j#:ij4 0)?z7WÏ=3$iPLAyHs!p`,">lll6J)e* .<YCEU1R;M,um_Ҧ$1] PM>fҴJʝF# D)hc#BR4V:a1slu"&,Q1J ^-e$jafʨ_y>Ѓ5y=qpm5Z,1bFL ڇnwmqџh\EA*gA$wqE Dt] !TgNc_y+zamEQ6*'?;5u7,X\ZϲT;~c3ί^ Vk ss9q\b*P*,="dWb:M9EWnsISd׀!N$O:va2R~DZKH*Ӣ(P$˓phY|Lb@(ۑG;~ 5 AF#ɳF!rFXZ{6`?xhj'[="') 1{P#NQc/~ԅO˪lA q6闶7_ywj^k$?p`Ejkk+q!sN)byY6J^n13Bl}7?huy̩E %I: c)._Ư161,(\^\p&&1ssGQwuwް3{YRiiti5s$y#x437t]w&1N<{_VǺK EM.t٬kQ1 :ՑK݆ !Qbt 3eНmmDԸ1HeYDB`Fk&baxPiIYZ|䋟iƩgzƗx3_rtXXBљ񀻱=uu/s}N?3W>r]^hf7 "IqLFK~[8<(w]:vKb@.ʹ%?]:} ʩ{ %ז׳7:-]r2nq v 0Xu$S:3{1 p#D\4\DNdX|˟jW*e_)62`(A{Q,r3-AP0֫ʮ 2`N2r'˟]ou)]Q؋΅r0Qe80r߁c D1p^l#3 Ɉa'˟]x ]@TMDBmn-qv+_xq0ֶ*[n}ϝǏ 0ĩPu`' "*dfdz'8" K5.Z%!d1`iTDḸo`="X'|᜼;Na$BH7D|)&<"8\*dgs{nn-uւ-7Ϝ: ;;pemc(7GvmPl^Qtfj4ԩGoYXDMxG,ݏubk0cqհ7=':]L#"v?+`214c@, {>IgpoO}" 7.3]Z%2 S:fCP(<NeW"p3+F۽v?k6n,k皭’&hfnL ʃw˯n*i.~75?3FGCb"jymdEWk"~_Z7ADǞq?[/'R*E>+o2>:^saƎ#_$=0)́Co.8g)Դk{ܴS ]<H+_uA vG=G|u.\+['˜/]BYM-zpfvr!3"i ƤYZ%&MSh^] IDѠZFj}gN<8T Hb;"xud|?-AqjZDjRDuuTeHel-l_e*D<J Qžh1< 0 `TS:ԝg^|aQԠٻaBËoiksO9v:K.'u񛺌 1>z[WܛQd`?T-eY_+"i>]?; M٩ߘhC׈>Sa$vqH 2,䭶V&0:q}ocO?ʓ\ڞ&íc7x[Zy䣏YmnoOu,)C/IHl0vkH8ė/[[_JM0ᡰ3١٣cg%H_C,_>?Mu.=D _G/F]KߴK LJP_!,!O4,dۈzv8*FJe(iw?[ǟxO]X_mw:ߜ_:t}7(½K׼H7/1oHK 0&u|~&T_TE[%4٪Ae]iW6-Ǐ<:KlU.lo&:|&z8coh̲x(aEGRՋN+{~0W@ex6k ij!Q#&\͊0*f$Bdߘh8[[x% ilSkֳu(pp/}Ն+.L5CCoN9=%R8;q/qD`W CQ$Lz"#n(*a!+N!l~2ݽ g$(:p'{PQS A6ާWo>u׈+W&Bi]dH!rpIk֤CY\/{vB.[/N+$ /\Y⃯|U V/o"ScK7H{ua7.L=_ j(҅,pȍ*؝,N~u4(uH#T6v|45p 3I(a"#!XjG`?b?ZQRx D,Usd{ A&p^I8?"&PnfN13^v96zg> ""*,O.N}W|~h-CcH!w'Okajzf) @ZTJ'ڲWxAwl^:Bu /Y^ާV|%uo!LhLxrQ~E=xOK"⽋[$ W7Z (>MCIlUKdUF=qvEmh!;p޻m_6Y?^8 w\7#47{P " W'z!;grˑٮVZI독Sb*WbX6Yg^e{:F)\:.ұEYJnjD\kf |Hv;p(ʊcu@T=xM6-G^qK̓|qvQ5Z_Jj,qA``e_31\IhzאaïuyBHxkþhs0QAw콷g3943ʭHJsg¹Z+NvvK/l¯~rnIbw)Y~l77[AM )Z^8M-bk4IyH{$ ⽳U1*r+Fu&CoM T[[i2 !b8v_Šx+OSOs/ WZE"[I!a#B៶Nx^yYh)T`W3e 'I1*RUAliO,Mdsnu`?O}S/mo,cBa)r+Ϟߖhyaw}w->Xǁw`q~T413@',xWS-3Y0ޟF$L#XAo'6KU|{ e9!6z[Vt;[`@Az/: s7q׳_¤`PnnlmltZ `38t1ȎDn 0c[2]*uدM"(kxSruODpNJ+{FWbJN}]\V :_@Ĥyڝ6ϻW73g]ކD}vλʊ^W|9*)ixWIӵ "݃sq'_~_tLe+N8vW%鶬 wC` \:3\8-w>~?*6!e}\pZ88/}\]u;'b|N=,̪?w"Rx5(q_6Fh9s6z?X_Yc !z7?^+;l8fQ PJ`Plif|KO?[eY pz\Qp͹)k:,EZzi~b}_7 "IgT "a)Y,(HvELM6x3V~祲r% "X]:h!_y7@33*Q&p By+ʝ9=X9=Z_~I,1Zp@4~o~K* JFι @h{_=>{@ %T|囏/>3żXůuoEQG\[}Ѹ{ :0%rMp{~6C|%VBg-xjϾ-gHUBp!CKmA!U9,b4ҨeU91sܞ?v1F[Aim1+3 GsǗͦp!C2(^2|>ZS'rR?}a9~ݹ), mwP% @ h$աD{фrSg`ibFAEËD pe^,& RPUhT G 2;7|(#*Q%! (`Փadjژ9tr" ,Wc]D7]DrvanfͬP~J@?'7Fͮ !0[-_~zfֻ`0"Z'Y֪,X[q4 3F9l:\ՙ^ֹ}\7%fu4[Uኳ[8vu? Ezۛ~;MqiD×W^E1.fJ "UZ20mNؙssikGPU, &<=<3S+s>˳F3]o{5JSF.xGxO33B0:MtJ۝nH+$5I.lQl5;D,xb x-]b8~L0d}]WhlfߐD/~[C ,*WU{ vJE`ژ}W$ U/"YWy7no3O̢-SvPM\`Δ3/@pSvkAFQuDen'}[,[Ҧvgg7V8VhT 1Hr"A~ u. 9笵+`A%Y"2A0K:'{/Rdtb-C3sVZjڅ5} u=UPGo8^%񞃀Vt, iJMg֩Vy9p>ZC@Ȭ\?B8\W!")J27z[ەp@M+hւj۾R{ckmŹ"iuT,ՉF~?oZk$Ddnn4fE*fi "&Ji:m" Ho6':"C+D-EJv֖ÁM=ULJ]M5m'?S c/o7FC)ΖEJ3!*[yjuzf#~o[@+$ˍiɐhHI$p)N&O"~]l!0  R @HQVybP`+5=[MHYC?s'4+meiog nOOϴfZ)mUk0P8[FΡA6I'%k)EֺpRo#.ɂ_yo5)?sZ0'I""Z(IjLR*fO$E J1ȖVzW_3gYJD) vDeY 4xIr(MZJhX6>7/S'~.@i.Eul ` W!bK$HJzz;@DP@P8B@΢Z @d*,{n U.7V*b%:H("U8Jޘ~͖x8E1i͟u '01wTy6=oLWX %ڿ5"ewPs$K8 @4=sTc-bs,)D G[d?o) %H+GDQKk"mwkPDHҊQ 91J)\H"],M+o"%IvCӱБnB봛QHqHHe@iD>tCuMYC9tJ BcZ 2 +r`<`]B9!|PZ]\&CT > bp#^(eCBJ `dR"P NJ8k" "f!$@3|K1+Sw퍧Tڜi 6=lc~BDq=O4RU`i۾o-Snki) ;F^&%w8ZW"D7ZZ)`\$RB1`JPD< #(aXM ׋aސ`rooh$VC !Eds<= B1U B4I*MV_:rm6#y #EbMU9B@ S? Z2!BM|؈(Y)D hfP{G>bX&IB `pN!4ˆHĈY#ȨjȰ +d "KDb>[Jfffvoچ1E_d-㎣VW .S0(!Z)H*R"2ٍG/GgF%)W,B^`w Hy=xTJY[DD*x.5F@ LJ9$ F_=yocO" 3/=PD )A,(TessSSfkVVVҕ&`WJ" (!z(FHWQ M=šE)vt@ &p4%bP0~QhD%HPQD4Qsr:ysѭ—RJFpDaP3bcqbnƷR9gƠ!pL Zvz{a 21/&Z"Ǻl"wZn=˰j8th(S'OTZ{oH([7ި &9^i[/=0BDz"b.*Qri5ykp3z DXwF^ G9A(Ekњ^D* 8_%Jy|C^Qk;n]hmFeYy""#p܎< X2?oPt,Q/%]!qOIL^ # Q ARBhPu&5ӭ~[?}=KT-~֙S J !B@,L (!6  +ŀQ `803+c{@Bvcs(\\ v1ؓ! "Zql+3 }!d]\X_}䙼#a6 s~umuf}O-BmLԑq $F  *<*j?F44J4AN(A׆O ??3?w~uə4T֠PFAi)#e@䮆km DN BVAbbʎn3gIWJ?$ P7(FJkmLaaQUMl5v 1nϜ9c ^8 | ;.IX4r ӷ"i^GKC  @R +„0*є$deeJLo;Ǿʙ Z+O6JA F)*mR4h*A D-I@ p iVQԉP13Bm!j3fR:`/.>tw8v:Y]xGFe1 {bT8<Gw< I@`Ę!3tW_N8_5 VQ=БgϞ9t"Єc7AC&k}c^Rٟ%YHD+@ !KL0o/CZb&q`tj  $, \y8> 2w(5alI"R*&Ȁz͏} gV6NM:Rl5m`1,D" o4ksv]}(:Ƙs  vDJ-ٲIn:&SnyY.u\d+-XF;H z9ڜs8X j{17~AZʧ?w ŠV сsW&FowaQZ9sz׎dY؄Zh/c&&(;[Uq`a!E虿-xЗ +?~g2ٟ7#bѡP(eܿ*T.HD)P #}dбꋿOy/otO|sO$ Spi(_;Y={g7)v%?rR=~~J]s)I-zgB (eێj6OO@βl̲RUl(-*uEC p2 D0 Ra| :?͗eQR KA*1W@ZPie +mx`*}enO/7ÿ>/,pB&+ggO|$iQǞX.,j A_rt{/ ah nc?#Okcm3A8JٗXQ$@0Oucm—k;= G~ȝ'fd]\=] ) +_Jsa GX%kl}߻}/Owwnn޵;nߺmzjjWz%G"P`SNMNNDQ"QQDs$i)dbbtDɩ g]Re(HQ8j} "{J4@JR6ͶTkTi F}{ߴIXG!E!Ewo\ NmcT"¯;YHHxWaU{(-޳GBJ;tӝ\հ9q2D%z~cGO;KN:rj: @H Y@ h@em6???12rfv;n}ng||sxsIQ0 vY+EQ-H H@< " Pѹ3uenjy槟,.qD{#ioZ5%V#O{o__3ARe Q{њqllOS7oڶmϿp}7\WUg8<156^̞;S {Oeq%d@$mLݞ/".X{ZjijS魖TeyNR'MZYZ-T7ڢ0JYǕUkm@ID27pH @2@H iڀ@;x=AFmi0t2™s{iTZ) t- ;IWaI RDyV 4Mff!{RGj=Y;hLT-/BPYY T"ھc  (%-cPZTh:~O;.'5F& RN/Wя< d֕ cA=*7 T:dz}Ya :yN @nà1Ί'½w0)x{)MUե,;:<:vv_D%y 6Zvyٳly+xeeJ$ %515!e oA e%O ")TP#|>r(_8gט J)iήt~G;)b?R|U{s]Xaˤ,*J_ ("RK 1@(Yc"XI?x^ ŀXHi={$:0N޽sDfyieI)3>>jQ*Mn':}E\ pd@筿9;_ QFCuI* 䦆IOH/1r( min}K:Z{? y'@qĻ@'OL+"E TkՁJ[l-XEj-Sczo>ZXQ4Q.-Ǖk0lvV%Uh9Ϭ_PJaPEǶ(lE( 7~M1֡p%nH;rzY˛߲L_&[.Nӟ!'&}~ts0JP( E,\ZdEQK`- ,R6Pnܳc疞xZ @j5~m7jEΝ9I)CTָ(Z窦[73sV+i7WFFEGV9T* ťj5uzFnjo~h. i[]&;˿=4|Kˇ5QNή\|Go/\`F,k dD)ӓݴO'>v[58)>;Zl.HgE²ZE\t:IQ؅oԙQ:"[ЩsnjWޝ3gʄG_z$أE"u dZJVR+$r~@YWܱJrkٳl'"v{ջo広>cκ0[n7m(n >E5PJy^M ͜9ZtD!D%`aeHkE8>>&(nE^m-?(<(58>t"wC_w-OU.\ujE`eaw/>1J;tz4y-f2&N⽣^Q(I;Ot}G{r|d޻"۽em7gFFkCx}U~N&$BzݵcDu]%E9gJ"IjZ<59^, s`ϯoSIھՖ""͖;ٙ\rS[ޱ zl<^[Vo_DTԇLcz;!^e$ƺ"-$ LDֹ;!dk:G]o{'yK u=o~Ïw6T%,Jڊ7 e`D+r[ F~J`?jQ%,bxAxEMq/t$"a`wŎm[9qⲝ ^]uZk*Ԛ JQx-S,O/ .s@>S47}awg_x%E0gݦ{|.k K+6g~W=j~=h׿Fy ЄJ @k+o^m?ptm۷N9zrD,8/]#O?{ "\Y!QWv JQJ)_^^\_XLsjx`RDJEvF꫼O<~5$_?S7B|!&ftnE{_515x/-hf!![gp+f\>ә}K}uK]}~_|3i=w ￲ 2?=w]?]Y˕ ~:pE,({.<:#qN{4dڻg'?ѱ-[)MU<" _{=oςA@I$eaٓ3(cYQxoy)E<֖"ʋZXl3!h~-؀ƕD䜣Kع9O%lLsB) g}m=fJe=L!P9>w6w۾w奯?3cg|x>P}}qfWp (+fwxݟ#=庒>bVX' b,1{DV_7vnu؉D;r7;VWwm|nq@ jR:UPo tTQ3$hc[6mVk֫LڿaaZ0 D_xNkECJa!-_ ;'۷Un*'>λփѶ`N~H#4q[>я )(# &ɛn8p<1~n,Jsf&'S+:qz9R*lG5:Aanf90_pJ0>>t kuyך|233Mh足2QRWjBJ +B,Dw;j湓iTScRbXdѹ$ϔ֝Dm7+ Zv♕[FBNib .PW@JiFIJk*EOyn=FVZAdyZVf (s=]@l۞}Ion?5Zk@@d5 zf/.VV\.$Dݦenn5A$q8sx{~g'nׯY'}m9?d%%;m& ,esެ PJ){_W BET&=,O"](R0Z+)E\XI[K#ñ nهuMFH/}+D 2;,RG&ږn^@>cBYH+OD[C$_:G#]}iv'+HAQz陳ez}.A,#՛dע=".gf"uʃQkժ֘0a9`40a7,aZq|^ >K ٸHSهS@Hx3t,9@O l^rj-veSK/~_{eP|~&6Wζ},tai哟҆۟z~{FEV,HJ}$)RĎ%KBR DqJ)@$EJD="{/3&ɘB8 sZW<\HJDP`߼!{%d?8Y 2 UXEpl?W?4n׾t_a"*{?24<8PdV+@  ǟޏ^ kbt+mٳgu1D @$R$F+"Rf.biVyY쵥,{qĦ(! Lพ$&IkODI)HPX!&R(?٥ǝw}a3"~͵{;*?{rOG y/^wo24@L?Kz5OwW_]5rY{Q ?ypoOOk!HaPɒ.0N Z+@$h桡,~y٨ cJ(]?襕V+5+gma`z%4; oeRh5!jD*(ez .f"Xa{Q(:) ˊ[/NcT<~r5] ^/}vr[-(CSMOO0} 8@o괞Y-3SN5 K˟}W1>wLγ*VŠY1 xaFDta=;탇q/0oɱ'|Jrk1TV*u@DV*wv΁RY+̤zKZv\3k"t{mU%e< 9ہqc~i5vs8{޿sǮmë˙y"|Ǐr$;Xp5i{$O}uvo=`;/JWEayk VFDxBZ)s=_4A%lpd-߂O>l;JH:̊w^ }$'id4--ȐR(njZ4J;ݤJJCD4+\&ҽYq~3@ +v=2R.y/|q͍CI74 BcMkzoϟ"JG򛫔_x -wEWO3szȯ a+5~|@NEDiBdkym7^{]?/^kIQMn=77Caa hZ:ݙfQU$J(HQ !- 2jGoAEb'* $ pTz )2-jgmotHQh3trMS~R"Йg~3_@c-3{vi=uĢ/WWW [^U B`"#)F ,{,J;jyǽ}9vjtdĄb xךk{arVq7 fI2{ֺRigHB+H)ꤔ2Zsڶf/; i-[Vd/:@ p< 3b",@vBνVWH(PҴ2exl?^D+N +|b-:fŒ/D*WHڅ^S IF)%LD"P{/~SKd* 1ϒ4js>I{v1Zm:I511-(۷1>qǝ=أO9s"ʬ3a(޳@tp(KDv$WXNrL("E$ ޽O =tP"wVHu@E, kbfD- L,B,(ts<4=?__OwA.iW;3z'E<2#FWMk{gLYh+F1w eJ2 M7}'>+K8}=w(d*JCQd{f?@w:0R@ zU3@1s ^}#CLXB˰$qfxߦ>y(=UP}Q `<JI< (QKs r/铋w::kc+ a֕RA`G:0d$#V9GiQOM 87xcmw[ku~G,TCI_|yJ+EQ(\EĜ* :ZSҺWb+ 2ܗ^0SiUawϥ!(ziw"q`WnDO~h[gO8/+]hv}! {d,=/@\J)_vW(qe^VAy_`A@꒵~ߵWzsgܱ<{a|s1E)$Һ# (❻6ߑCC?A}_oX*`/*hd(愁3+wa{_kN<(Mk@<}:ͳ >v|N W۶]fډt\dxd@ c3<ѨwJɋA/)zMI(u{wrDb_;IXٙȮ_ʬj|TB 4{Le~e7F/:=ڨ̺+@$$ QTwCAmiA)<$h@đ``THu:;o򼈫7qYXɔ&_z'DzM{X#<(.~0'ixU2r~jú3@EI~myM$˘~/wN)S7_XUE%yQXhTHZ$sJvZ(.ON-[q,X7`R ҿVGbpQ\콬 R|hוnMַ+'1 Rŵzc`Acf Y^شW|cw4482b4o [pvpdP+ "FkR>~KO|cWX6Ow@>mg"J#hE:*iC5rjBHDY^.s^咏v<˔K9;R\:Ǫ} "*k4 GPcLfqRk4i'YWD< ;$mhm.qe3&oZάSϕ*Ma=3r2-PbHs^=5" lI/8P**\F5EC)"1ڠ2JRVDcۮyO>مJn?5i@4.X~|QJRlƷ?|4V҃K.m2t睷4#y˵tEPDkDPhDɗn+}O/8rڑKK'EQ+ b*ϋD)ytn'N//Z^(2BMDIAv:Y2Z9`ݺ63sY""/9PkìZTJx/8pw,o4)wxx5RYq%.A< ($as4rB;Jmxv9$1r< j`_>YE\۶C#iA;UML^ {XЅ{Ѿ©}.k?'tv[ga=@[@B%{ɤ(ZO<5 **YI'$ TW4"a5Jna.TRK_n؋0"b<"@Z&y!: EJR*f(8v>Q`(pJ{xx`|d_ݻg~7M즰^]L\ pBT, XM23spNnRxBUjX"B,ʈET}/|^ΒY77:jíA,,`ϥ!BDR ^ĝ.>a " T~ffcEnw9Uđ2X}ie)`};^fL!R`BҥyG"Ax>ZZaډTF@QnH11{FacbVn&/HynŇ}>D{@t(¼02YɁ-TaȓOϊ2YZGNkUEIrYX)Yvbn[3 '̿}S"(43wRQa}6 @HHP C 0#̢Pi~xT+ֶhiR>0Ea׻CNnz=h(;\IV"cb-%GFĕZu^Rͻ7'=:;04<:Ϯ2#(EP`IA$_1s-3\&\t˭B%K5J9[詵tIE;w^sYV=M2Z96@x90Alra_8z<\4:S0}}w5XBD1V¨1sv ONA$ư~yܱi[ֻ<5rכ޴m{y]wYV H#;vNnm<6҈jEcI yP7_5qh0 VlsirgR I{ '@Q ׽ mX_ ca]slү]+%WvfYwYsI[Zw)Y~*}8 BP!qZCzŃ1P(0k=h $\Ca( P:@(Z[$S]57W ZRm#Z Uˈ噂Jʧ>7 ˨3蠜{mt?)K?2944/1+VQˮ޳k0Brj DZ TizU_!"*qCA<<1>TAaP! jmDrDV щ2||Izkҫ0*? @/I G|qg u8n+ *\GTD0SRާgy7 }R,0jH!y}[3(F׊Pأ)]A*e!5(ha}AN'I2e e&Z+(yE܌jUe-SOm"^iCTńj~>c dI7UIrˈBJBFƷN^u H/|RmvCjH#؊4F UW_:qB؎E1\AV\C?oJ ϲ44 byu%g@irBk={΃DBX&OG~Nn{wl0wl n.$s\z٥GTT ʶErx᭝\"! I$t" $畘U>̹n# RlgY D9+!zɘe]6TxqybRƤPmttQ !x4 {{\] bmݎ9syUɭEY_OafvYQ(7(!, gѬ ر;Lu-&_mb@1"0T1&9tWJG&4EE@Db|U7}+ݲ^Fzs3KZ0p9Zkss8J-+$ ä2۝!X|ЋJ͕ʑs i?4i8K6U%l|_}zdl4ˊ(j> E"m 9xי f-7GFUCUX[`#-x\sjTTQ66C[Ʀ:6#TC\@zUh0_6iɊMVͻ6z-6+ b2RIY. ~+N=,*{ 1T2{F~jw, ~. (N+E R}3e7|cE9 h犒*yEsVX ,WJX^+X^Zz *mcغ uczl8 HckR=( [iox({ό" (lF'TPqކqkwdYWO[j\"Jڵzd4LNbsVޱ+T:j-?o~>w߃V2lDqq Z<B֣W(9f]\0W \ }#o"rl΁v+uٷ Tyh/׫ ja[>?M/)J+bTe(!VZ[[@8Q+5yawD=w-@U"1@>Zm gI4޼e,ι^ vޚfflԇ : FToTGG.,g(Mζdݕɉݛn޺y MPB>o#yIV,튷 LJVDBE6MoU t֩=7'?۾s>ŗ{tf)?}l9if3F+P<"3.~ߚ{ 9tg$>F\n}?uMe\!n!|լX|n|~9tYʼH{elW`v^+"+rR(ZkBE6AauXMnfOYB$"w6lw33ڀ*Mj%ܷ,h(E\r;H!& BEdb% "gieBDo}=̓7cfbhJ3{̮oum'aHU:t7ՆکCow~у Gqy?ȟ ϟ80{T_^Xk$$T""AwEu뜯 |jvZO\J%QRe%4e-F@{oZpI wuCDC1Tէv*UR)ΜqB(k,XћھyX;l pۧ,;Hϟ|F|4ApCFVZl<(6W$ Ȁ*FT;uպ+A)a;:zbvn;?wFr"ItK-$ov\H<>1~q`4A_|xm*23o>uO}s~ƥ:"0}h狨o dj5+64hn(:Y$ZT!2 Qy{$^4]u毞T ն7߸1=sSSc_8P4oy˳-Mq lQ#cD38o}ٗǫ2CVM5`,B(kvdI_$yP`ǥI<.:WGGҗq\֙KZa2|^$]SDPlmdkTœnր EA?g RE۷ni׉-a-<[QCu'~-w%VA6_◿ ~/8km#k 0 Ag9p}#:E[yDX7}/|TD:vlqoxѥ)8C=_;7o4t *ygN`BIڮJYpȻF5lUZYF'aZK7OӃ=[Z M⦫RnE8u]wz܉zP3KiG!!8k R ( Q為ӟC3g j" $J.W+qE3+SmS:T+[+VuFɱ+.[t_ٳ_`Hɔ!vmxA 4̳{z}7ތMZ6<F dvQa5Ibx{]Ck_v&W>g{6Hsgf B|ڮ4&cnX%O_8n+F?]KƉC\]ac?[x G }ac{QX \D -Y63b7Zk * 1"MHpvSj<x70<\}[돿Z^gi5Fmjg57jٺn>>9шт016ZdEjQXX}r7'H.B !r {uHQpɾnc@ .Ҫd'Rѝ3|U+Vj^ۚOaU ?~hquÖ'=kޫuGee|7KJ>Ń >nd`xNT+ÌX0pN??:sj{sgtet|`M]nZl8|rnB@k7faN@\ƱpѤnPwK?! O~7lxP{up5V-Bm0;7s߽g7?s[7iyfF-yJ@D]b|s ^ R.0!z^j3kmNwdpwІA.^ar"qQ0XYi%Qm,S$>;hI#:C7SmH! QqlL_8F7]eԭ֢0P]IXBt/{vRmf]YmVG26]\^i; ox@.PHMepr'^xz5ɧwDIY+Ua0Q-T蜕bAsnyiԙCO_]jNY-BB J3ϛ!;-= puqi6-*boku>23tn'U*fO]@vRgd(L6|qA/kRJ\ o0QK?rP (l *ۧ'kuFQ5f(-APAB`29Zː%rt}ڣj0طQae0wsq#pP'Pџ3N:>VzRFX`1567~VJuX1q@$[tSs q2 3`ްy׊c v6[L!($4AZ#O?i(O7'(V/r+Ke(4"$Ϭ}6\rǾpϰQ` ս s#R"'\ ($ a="G}-.Tr/&0".|h{\ [._eanF UU*=A +^-o f. QZ-6qKè.WW_wMnmd)t#Xn%_a mP]"ٕ$B^ 38E^r䕨H0w։CC"0 yB3,(8J{e ر&8/?tfhxtq~,m {JnM N-m^P6~.% _K:W\w=.3blZ 8MCj^V 6aCNjY%0{0o&M iFI"!fr 2j/ph @m j <H:%t$XF5>1oɺ^9ZFs>T Uy#cmAZ.oDT:ۡ0v-F7PViPG-j0뵆8yU*ad+Tjc0az̎mZ J|)P6KsQJeN 3(?$R@ȤP+rd}=ϲ kZ-ү.9 ʫ$uSη`XYEhdb6zϋx7'ڧ,۹΋Vޢ͔B 5Za=T^UWJQ`SpVB)TU %}V )+7_|vLX>rp," jqҡp &˛  B _ DU!3>c{:?.g/;1 qmW^404f[uBB`$gaZ%6NgV dTk}"%- 缕$*}Rf/|4'|IgN=ŸR]!Iwc\ /,!*Yo5%v]ks6+2uH wZVi)HW*Ls4 OxPZ!V+CEbRHL<",po3(yLUä]P5\Pd|J&`^+KAMo~2.;~r&a/\,ҥ46œb0'].Ϻ0LZc[$.OK+j::EzWY" P< :,;^J$þW1 yIg`ځ7]p8<= e@P!>mgA/]]+ΡKAp׶_t 6 PQ#91ƀu`tAۋI=qTSً3D6p (hxVҢeDL̮k%Bur0 $"Ų@ Fm2 g|{έ׾|g[ΪqlfF]ؼ p)U;ҙfc hDYeͷD昌9-OuxGѫ3@kBqAMT1X^X>Z] &tGG,96ec4(Fsi^kV'E ZvE{fP=(oPPVh 1 z(VȅS,u7x Es5aaۇ6L@G8#:R8[޷o$yBjZs.5[MAHMJkyB Fa%vwʄuFz5(aPBB(\+a2vD5;?xdvp||`.,kǕJH9$`e.(˛)Bjd*j|kK+BRzp4(nt^I^ I-o<Q<:'hcќ x̆J!ޡHeafRI_[ABc EE`ui^.y7.IV*75ekG_588T(;5mDf~kg¨Q]d]r>E^1:6M:fUR®T )pEm{bORD @zkMhdͨJ! A @`gr*s={ӌvۮm335,Vmwm|Q8Ql:q_/T_?k$]޹ݺ`hk UB\i.j5Z Q 6M+Wvn) ma+@QĬUWwZIlVjM?b=tߙǷ]/Kyȁ~{%ȒUd(+&BA\Fkanܽs2)PF(bb"l00iEl{hF;B#`)vF:F ȝǶl wdϐ]d!2 6H)5 CG6 *f*qVwn[ .EFx6vVN>8lf:Lv+EfY罒EfD$a(of,2TX"E烪4*J'vޮ~R弥E`iÉ,Z]~#/U ׿Kkɳ- ɋzykʺYZC+i75k w3ҞZiMǺٙ~DT32 )y'Fke-d@@ c'X;v! ;ԡҲIι̧9^2YLլx-2g+Z26:Z +ӶEMZ :P[_$Fqf޹$i)@P|\DKyi3(mB@ԇYpw*Zevh"nY"O$t+%GvBP`uE}M+m?CιM@Y[//u@EJ[ o>ݑaܗ\@욿I40 wsEڔ$@P9TLPu9jۇ+sPk 2^"RKg9 B2!$hWdYvMrM[V矙͑qJlP%S-e(NS>o|4RH%N8==ר#*PFTihD9 a^^(=pΒR%Vz9?_ظӵp/?ʻRoL1:6j_ ~(PoO&$ ֋ȳL'F8AGk.^zd_^{?oWN. w"(<ˋЇHjhBbp0 ̀T-ҚB(IZe7YMki4hwN(JYJ[Ԙʆ fn8^%+F!"Q-J/\ZdArΟ40T$ 1t9&yQx TWoȒ3gvMo.#;3B\5wXďlmvT/dc"l$r"qQZqɟ/~M#]PVFЋo#2:xPZ * ƨz#5lB/j']\ّc-@fo%0bռsgϤ[HhtU FjN$P@muȋ" R`%$%r  Pm$rm%\|3º>MMzvP*tTT&#t;RT=V+-gPf+24bWUy4#0Yp 6Xb-1#_LF&(f$͌4yz:L'ǮI{wGԩ}Y{.22t: NQ}.ʷԪA93y%u yWzVstI7P=6cHav†.4_m[ 3=7`۶F֪0 cʸk]7GBc ?d#YhO%R.8(P֪Turzx։Ck2vRt`iR FQ @k8@XI"aȀt9RN³JMNvj +WϩÙL{'GʵKZ`hq{|R4'8XFd2%,R=¶+ qƪ岇\9^[h,dw@'RXEC4fȄc; `!ªawLljɞ%lGʙj,F@Z|_IeyI DXԑ9Ȳ&VyRD#砕!cB+PZy^qri7|AxTS)Hr!FjEF ZxT1TZR!ǛqL]urRJ*9=8LAߪ©j5 Ř8i)(fA D8eY\(VcYc@kg5h֊^V96'0D1d8n&5&Ƙ^ 'VGa6BJPW|Hc˒F?%Һ 9N%6#ұD8 gggrmmj1&\^[B(IĘ@8ߝk_T5kpo[w\WQ(0%WAazI! bGYv-!mfQe%"ZStT Bs."c,ǶF%R8'cD??^Oh"ͬG, a9CjfvVՉ=tl-la%n"i[Ac1)֖ԣX92Wk,a'2@PJ;͸ !eEREJIq` v6-f)Go'48Z6`CQ]&Æt<|c]: cdBmm1&eת rEqģLW71op_ne[D*Zm{A.w2Q\xCA#2ΑbbL"8hwg;ڙ *iTRDTtto2vrf-etKþ]l\Өc!eLԚF¸Ɓ| ,Wp T*<1qcI1hn;h2Ԭ Q9EQy[Erah1fQɳ㸹~x};vE)`9 iOk%e+,&tO^Pwl"U%$0˵0 XQ2ƙ !4ar"Paе*ZU5TYR7t*,'(hmݐRf2Gr=e׌{^-mON"s52Z眷z0 ƕDXVܬmYT"L8r)%"*˲8J57d,5,-pݤRRkDa$m&={@O6$YG829̤,mԺIlj?NI:q$"] U^N*V(_#SJꤗ Ite.}n2!JܶT%V,O%$\[R_\/ ιpm8 82vl[ 0R }_fpƇHs-)cK@ƕҀ\JuI%"/+,8ccũ$ 9ߏx&US2,(dڵ(0k%A06|RR*5}J)j1cȽlގtĝ`qzОȘ9b39 AA\\ (f d&BD2NA!D%,iLj2;2GLqKv\UJqIr϶ @!uq0@.iK)Y3W pR1D@96ga#ZLpf!sҹ%,R~lz,c!"#e`]&_TQ2EdT*BR* -UרT( @Hc<җ/*֊:.jEgNpE,~Gy0@t:Q{M9gD"%k;qeU)DR"ԧdz>H?Nyn*Y=ߜW: ^@m!\yQ)>tG[JE48b%f۲J9R'g<'!a%d:AnB +u1! (,A [1S,h$p_{{Gq<'p%_[?zRXY(J5NX%ldzp=WX~ZW[X(&-KEA͖ȄJ5t0+(STRȲ,rGRp"J2 #um[8V 8ɰRO$v,d3HF*mc[PJ4AeD0RJNCL[.,MRFRIj ԐӌX -5!ł;g8d1xj}X(G:MsVsI*(Jz)]lja` EQ."~ qNcq)"5{'ȰeɨZԪ$k]V \XRRvtK-֠7U\9`J',!ZR sܰZ/_6ϣ" qn9)Mʱ2P VJJ :HҶmq("8mnEQ$!cBD2W1Ƙ "E1)EDZkBA1pG(*4ُ9vd ҩo@RJ)-˱,A%-ێLx LkE&.%}ݕb0wbte*! 0RҞ77;%4QW~`YV"miGƘpъB.X2!r]׍H!{~a}nf&Qr."@`ǀ10MTfI*m shY\ԤDȹ`Fo6s1Ƙ6*]տ3v±JF–,5~֧9a?.ŊHWj5⌥ 34> [)zN$Y-ێA:XFr`Qt#8\L*t*,ϤĈH810L9 K*EE&V.A-ҢT,ca+Y}"RJsA {QǬGQ"_c1c@XB(Kjq4lH /43G{k? r8c"վbILT:q$Zbzg8v_8Α R:qDJqA:l[k%@E2X J %^R)U-Ebgf;J+KmBEs>wZI;Q Aڶ HXvjAgw7 S$hMInDdx[*sRB M#SA\ D-+Mţ6m1.Y𡡡ᑑRLg``{```nݺo߾oT37 dM|iNr\X 7X39WC`Dh 5 \̐0d & "*VҰh`c% C?cd+kѺ։Lcp@,Uҍ` H!i;@ONTAK)w$@qr]qhhȱ|˗- c,iODGhs6fe#.쁁!DN^};Wyr{?򑷼-A|k_??55?͛/ [rz-[I#ؐy ]nn ّLchsy4X4=Vc+uc?F4@0"BTD@(P'Tc!\EMw$T M(FilFH,>9=z݀Z7'&n M䍱fZkb~xl0Z !ž;08…k0Ð52ARqPivAe)IJ5ڠˈ#4W1P[AZyKIkC>d|l14H%-&X 2]?ϷϮ?s|\h`54<%3iy,K#a o۱c3cXJ7t+_oG[nƍ\.hh!D{*#m? -;Nh=ӡ)`:ߵI1F в-<&3wJPp@TZh@` \pD p/ 86Im?C4g0nNo;LwҶ팎|cWr,-Du,U ¶Zc}#I\FFG^j7H{7E"qa|||ӦM/ˣ8p`ͦN1f zDV###/-[lذUzU>M6}h@tpGO $n_j`;4:?ѩ:1MR1nۖ1T#pN]ff%A Ls8CffUmZ1@ΐ#S2ZX;cjy'65ce[rP6,VЁ1bRJ2F[1)%Ÿք=[nЍ7+jZO6+"34K/Fgff;׼5gffz_]wݕW^y饗C=m۶]v\.֖H$cZJʕ++V|{[+ßg/B`岾` 2J+R/̩9M1ĄEQ~⒃HKFFc%p0m8Ic y8pL4Df7FPF 4G@4oT7ܟE" d#ݝ]^EZkc\6SnFN$ cb `h~=}+Sso˷y#$W`'zᤞsv]{ox>Oqw_+Vtvv>_җ۷aÆs=//S>|>w릛n'?DZ1/_+׽Nf %I!eYQٶ===ቾ"H6M#6qrmPbZG-djZ(#IȀm[FƕR@Is.0nXPd[i+fh"!Gj2@s~c1 @"Hz?2LEj@IV2iF$5"- x*M2V]yV{\ĪA{D9{O}* Cq~袋6lWW۶m{}mP2z{{7Mo?~?7׽usӟWUuDgYlŋ,Yqё|><" jZ`:!"oش W  DI[3;gfYY IOLGQTe+aJuԠ n+m #͸MiB"--Vf92yX0tf̱Q ?l2`3`HD¶XrBd IsaI q J =X.Uyŕz0Z]7Bĝ `$R}ta'_x袋v|o>7G<vc>5Cg暏x;/ˉDX gyf";nF_veaf5k֬_'VMMMj8z6m8AA{42! -.cHZrP) c3KqHD4)"E 8c9W*JXRZJ)3]Zh?&ڿWqDf#cM{יv;2i$4mkqwWƱ7m D̥Bl2zc7ߤ#vf@"F̻7IttzS-ܒ穙\~?/O}S絒َeD4_WJ]tE>˯ꩩ)# Jk뮻Nrn/V q//L?+Wo Qd*WL8+B]c疔$8פbVRڶF` m[0lֆRYk1 46Z.p,wr녽\tV藸58$ݴ"L 7|7 7?63;kYl2`=8N:8ZWQB_w e)uL!2"X񴔄Te= 0 km鲫Bk @A n4ᩩn*o~0ܲeK.R?I᜛Q65yGz]vn88Ѳnalll֭~lGGzvvZz?|H+5qfcaOዏV҈{gg5\eɊ徾8>$B~9t<6$-\`ОRe+ Q,(Pj"L)fL+Ҩ9g-9g `zz;;;B^p4(kFPSm2fšp=R`%<ݙԑru*K&j$Vw泵z+,VL *JJ87^֧^ts6D:~{Ɨzm۶׾ A)!wzꩧϾ=yO9^xHq1586뇎Js)^2۶W^mv&17jǎe˖]vesssRe˖ܹdIDRTFEš9cFZiK[Ll~Cs\f@!d2UVXDapuC)eA_.jպ * ڎ2L2}C|ۢ^3C"D0T @D6*(aŽ)ѥz&& )[zOx%*t=r9&JUXݵ)nyW\:nCI4aZӟP1yŋc!,}P(O#O?.[x\cǎ/ſk .Ru!Tgg+jE-i׃ttt\uUbzhppr]738#L>c;w<<0mK h67H6q $J[Zdk]{> N$\M(BdJqFZ^Q1!"%#!Y\K%!\ezjvٲŹ|I5-%WMC}r}{̹Eq=bzjr:f6l;aԖL:U: r ϯKzb:L)OgRR) &"RdkY#v0CS8qxxp>co~^wy絤 :':9, y~򓟔~ѮK.dݺuv*JK.UJ O;Be˖0 b\nQnꫯ6fa___6Eĩ+Wvvva866ADs4”""2$&ƃHIJIՖJuMפIDAT6M̔={*u+P59B0c3c;9nB8Bpbp=*A.cY*e.D*BZ)>\[BMQk^0p\)aYFF HO>ۖd'm7vկh)KRn+@p$=ߗb%(qea,4 g襡@fLMMGyg˧lݍZ5p[n*rzb/{˲ B.GFF뮽{^pTm+d,DIR\IB;)QY55>1;;d(F&`PbԄbJk 05 yIP(<çrJ+k׮-/-~u}{o}[zY{.7|#<~w>G?7FT*e֎333˗/U:44;-Zdd2d WThƍs=uY7|wݩ)y"+ Dtҷj===Bᵯ}}ٹnݺW5k֜ytFFF>8Ngg޽{(KkL&&F/@MZp$²IS+<Oo u&gl Q`v9sR(b1)MOHN cZŦq@-1ƅФ qy=vlh2gy"+,bĜT$SA*̶l/^hPklzz\iei:`#tJƑc8c a%0L'0l i ZQ,D"aJ.M5~xR `c \󼧞zoܱcǙgi,D7y׿[O?kw˲ѻ{믿+رcG[[[o[ny?|>k4??Ї>7N4jsŋ'\.7==m_)e~qɍ7YsYjݻ8f ꮻr\.ϛڝ/\f]׽袋:<{k_tnW\[VzXRڶL&]=p޽{M BXpl3DpDJ)ȶ'gzxI Twwvhٹ| b&G`()B1vny1DZ0a@3d't"#AhbҜsUseժv@9n22u%_qmr0G"krLsz4iX4FՅBu]tC/ qGG>|YgelE#ƒ0 O9g}__VX2ķ .ƛ[o\.+<ϋk͛s9Uds9^hLLL8|Jq<۰aC___\V333\nppЀXݻw?/ԡC=\y:N&gy&^:?{8JyS 333*ɤm=#0RdJBQ- F .hJXcpz)IZy4q;|J5?9mTsݎWu WBAb2 @r!Us vرR6#DDԂ8n8"]YvYXi AZeHDK&0J9.y># *րYhRBBa|ʱnj1]aZ&_ "˲jڽk((r],GڶGfԧ+VXbEK(~ݠGM">S7q7xM ~ժUfZK)Yt+)eR ,^xժUf{zhѢ+Wf^x!vuui&Y3i&_Kӿo>=쳮뚥aÆ7n}VٳgϞ=333ӿ/0:::Y>gYk9ō mUBt=Z2{$&r9{ڦINWA)_p1t(QL:J#ɲvKu-Ǎ4!3H!ބvj"`fFQ2>4lfd]˗MO%,(8OgRpD5( Rq\QRƶmq?V1P(c4V!%ݞK+ 5>y7-i:I?"ooo^WUD,Zma0 p]w&-j|J+SJEQd{ uq]!WVx.{ާ?ozӛ^ 133EQ&U*|ߺuk.;33`Yڵks9/{6mdYV2XQ* {5=X,R)s]{Ї>k׮7MW_}4=7|O~ّ)߲eљ+W-PG3xlDI4@{ ߾{I)%عJ_R,Kiv!٬Dc#`݀O]rUGR3n1D& ڑ8c&eu2HE aJ Ȕg2R&KSaz{s== AiZ@G* XJ),GimPK?ցJ~=RQ23^-ɹ rLeewaQwS}z8n喳:~-Qo~+_i fffv_G6@n7.i>@)H$lvZm6g7-^ _e]fc2uvvZ900~GWZ w]z饹\nݾ'M6uSiZH$LHÉD„8 }kJ[o.w;ǯ|+&/L&'&&n 8|mZ֮"l4]21~S˧ [0\ڄJ9أv/28t͛7 }7ͫ<˲o;ޮN&{>OW:dk^T*5>>c%KM L|0,dg:f_Qg}/~(>_~o̷|٫??WXq_??Ѻu2޽{o w~k_+lքCo7maӟsiooXhÇ}? Ñ-[_}=?j/_v-">3_׮ꪍ7:J< pzzLPfBk׮^w>#RJ7~9xqZ`YgU,gffm?3kSE}&,4FUoٲe_|I!2FVI)7nx??Oo[nX5Rʝ;wwqgqy;vvZ_Ν;?g?3Mg>󙾾Rt饗ݻwOMM=O?MyժQXEgq}&'*0FJ!c 9FRXZ> }XrT!gšR 2'V!d"yjsۓ|>L{ッyky!70H|7wEz{7V ݼKeYRʡ޹znr&|R8o}5y7 q(s]5k,]_ᗎСCo{̭*]DzoV:t]wݙgގomۺ %q|gm޼9 ÆkHD/=W L[U}wxb|ɧ zC^s,kZP ӻGfCs,\+Y6LJZ n`x oaD'=pE|I瞭[@Zu]Fm@bϞ=B/ؘO099?X,aX(/cJcǎ7miV3 / =iO~qgy~5\׾owg圿,uݮqfgg'&&^~xoo^wMoz__o~_\R1;;+ooo_xqggg:术]`B][665*O'=0>Ot/[[XՖhM7։sEt:BV1d2$X }ز|{)2\+E0æ Ȝ|k=99~z/цN;T}*|<`[ԧ.r˲:Ckbeַ._7YGSN9eͦgi%+-sss?O:;;O?۷\T*厎Gd/^<00@DG~Z=O 7mmmR__җ|>Сݻw_ox\5кSN9e׮]gu& : !\=kZ>}hhhƍ8biN5+"ZmI)Ux.+Gi8Q$ۯ%8DH HHhYԌ29U+0eHwAkjtusLEOKL m'O<`!9}ݺէGyڙVwhuEZ(tl!V0w*\&K%)g-'(d91zrI!0>oKuқiYsT>7k-[EQ˻իWq7Y믿wq\`⃗_~Pwwߺu*ھ}+_ŋٳ'L^z=x;.B/p ַZmqGa"駟~=k׮=(,s>44t~ ¯~+H@xⶶoqɒ%&Y~W[nhhHJ麮Wy'N  -JIsڛn i?F>3}kxrl۶I)m&xӛ޴e˖{/7L&sWq`~L2xɒ%Q߿X,e˖X"xjj1fvE T2lٲK>|>Hd2uhT DOCcGÐc@"/~` `0h%e* bw2&FZrDBkEJ B[(aۖԠbl޵%C!u v-oJ#1R2՛rd}˗x|[)\03ΘcLC]h eY(֤6B&BHT3$.(hR7HYS ͺp\vxggQL|~ѢEW~׻޵bŊ(RϦ$|ok g|oo~闽e_ܿ?,][n9xW򕡡!#@&,{\C4M&c}ٟYGGM6-_ʕ+y5kضZhO_hmFeڵ?戢(}垞jQe2\.}UVY5;;kU\^xq^[|?~Şfgg[Xo5iZs"˶C?(+]]R1K0[f Яո811^Q@dqޠ[lyHҲ,dm(dZF&56{I7y-jXvYQuGsD6M: T~JD0VX}s2D22Xb,q.x,0s˪AGg9àFEPHPD\cWR7x3iuuu_СCk׮ݳgA41:90hfd0382eq^Z'{A JRipFo)կvvvo4ޞ9Z|[n/"0yLs{mpA&✟wywyÇ/BɑN|',(N###BWTjΝlq'x:;;bZ˲L<833cPqeÿdggg>7{JRPXhQ_꾾{hOOO>d2Lv+bђywPj. 3V2k (I*kqTZEs<1 X3 R,fjq!TU`~ײ 5hNi* ˻v L#:;\/m!WZIjٹZϕ7;F+A}8782|hdx8}%UngZ;fSLfP4j e@ /\~oSOڵom#޽Ixf~EJi`d3__!4R/> pjj^tiTkoowgjj^$OOOeY|w9_|y.""CO3yꩧ/_lٲ3]T5AsU'!,@Ԥat@FR#CFKcs~L"B?6y1X '>qbL&fC馛zꩿۿ=HsÇ>~C$%Kodk 6xs]~={{g NXy777g !dL&STlnkk{###.Xt4+ \Ad%AT)O3NJŪfZAȑ\ "c<ҁ8ggpB8q9r 6Ԭ*wm-K̻ˈh ı &%1 #qPՊRůuww9\s򙩩vN$2iRI%UEX,U$`iRJ!rZO3^(֭[vQK.Vccc/˓d޽{ǻ>3dmmmmz{{sܓO>v]vMOO?6mzի^WBQTzzz ˵w_}̥\.B D4k`ɒ%f9Hg{hfOZd#McVJǎ u캢T Y-KkJ&j=1`@cCn!)&i hhYQP`q¢kV8@zsQf5GQ^GFGGzz;g:zbJ842463і{W*PRialv!3Hɘ$c6Hv|֦!(7t8D1|2&?o|ofu:*Dco}[r){x^=6¡^WK_WjM$٨0,dB顡!_bO=TSSSS===;wYl3<8޽{/|v533#蘛3$B&Oby=3jZwwݻMࠁIoذ}u oj4&uW#$m+N>d.d9W|g;}"gZ˚-iCāIb$HIg u0 !xKhL֤Ț{#؍P-ݤ88Ϊ_'VS=iٷgڵmhw úJZɎtfr? RaFidN&4TDay|vα7[ xRflݺuѢEׯ/BvmF[o֭`n= 7}|'{Wc'B@ of˗/߲eKwwR* öCy^(8`8Q<|G>mذaxxx|ހ,8睝&$vWE2 ~sgL]|6]j3&dޔhH]lA 1B+x@_vnG@> 8cdw{G6RPQI"a\M`L*7Jg+2$@YI|9Hm۠Y77gFֿ/|8S.+V ܓO>}mbb?q} s(,H̟;֯_ѹeSL,kbb ׮][. 7qaՆ}rr鎎-[d2}%C ԟqLoRHaZ:: DٙNgh@klfV!5DPms^~%sipu=JEut2YfX"D،tl - T*VV+lni4E &~:@*1%+^!whpp骵8O}G#?/\ ]3X2VDmf܍+aØ$Qt^G[!_Xr}aw! np}}{߻{EEQtm]׿~-Ԉ2]Z,3Z8x|ÆS hXz !&''MZ24>kX, ˖-㜷j7?EclŌ ZFrX0yznȂL\hffԂ 6 )֭ Ct FfbH[eX1Ҷm"8{`Ϟ_cci׿;~#}Jj0ѽ=^ Óbޙ( 9QJ^:֪ZĔ%J+²ZTfMx}T[ b+j04$J,;]-P;-ۿe֭[s|0` $ #dÖe\t0ޅI:t P14wi||gMRƃJ+jT}?#]U:nAokS`b׳;ȃq #Cs3~Fr jdQ%ڜA&jD=Yq?V:e{SKc{HZJVٶ#DSi& h{[w_T,67F L PiqLTNe۲md‹doRYټyS/Bjw$A1I1 (7o QhӶl<6ؘqCYŋ;::Lf266f(U:d27nLӋ-mKzh|mD0pG7k繖SXqr\-K tJJ3.rtGLdf@&S6*[ˎH?,Eíg–IR 2"hS]rXHչr:36n$cCzpr՘76lؼy /^:ض͛7 \uU]w][[[>Hя~d&v$mN$Qrӥڿ5ko߾m6ú*Jx _%rlJ\.ѡ (LϥR1111===;;_,LmժUmmmf޽իW{'mS"M %ŀ҆dݽ(esɌ?\3+%- lT8Q]VJȄԲV r& „g]yeHJxa??>K'3?]( pP|s~mK,)sNin. l6vyeن+2M8Jkm+ ۶nIdB$\^yl"޶nf0 "VH1kǵbgqqr-Dą(W*'IK2 Fm2"Y ][3^[,Ox]$k2Iv"H"2ΥQKQTS"▍B9n.3iOep{&Teąmd nƿ˿l[$1=0x_җN=Zd2711100b )^hxڈsm6d2Y* G!xʕzRv7"vzzڴ2]!2oXO>ɅaѱRNS;z-󝝝Ÿ6~F@`[? HJbń݉HMMiԊ$kՊg\p@K hPknSwQtNNZ9)eq 0"sd c-CԵjկJPܵC*M`xߝ|H"5Vg!Z Q կ~c1S k+K/~k_;ZwZ^e4>>H$-[v饗>Cccc絵zl2ܴiֺX,DQgϞ\.L&٬6::DZa5*RIk޾f"Zr"e_~=cgʕ333& |yIIRdNл|ͦMg^p׭xZŽA`1f+ɢP lWDtd}ύ(P!ƈ(*BLD&x?;ӚC_җmD )LLz fNKN&FFF.-["@[/2 R5w-og?jDpߣ&fq͚5ݕJsιdGGI %Jbjzg !?|hddZ~l6[*L)t:mdT4_WQgg'GygcwmۥRɶZ+gy5\Ӏȶ:ƴ"B\X,,l)gu+D2[*szήl[⥲A*߷ڶR˗/dHZkPReYQsƴJ( R5iMz""RVD`AϼPJ-S-ږ(/|ܖe+X@=JuTuPu#Z^Ȧ= Ԥ<Ӗ%uw'3[|qfMs LC%D\׽_Wb䧟~LcBw5f\@"DNZ416j4)R[D$+~TgDQNRzoO>Oη"RXn{DM%+̸3Wԓ<'m۶(DZ1 HСRB)@َCD=۶:_~/?UV@_dĝ_?ػwO|W^yg>5469Q{/O>䥗^O/[ NP""b1Lr)s rB|?]]]\CכRTV/^8>|2 $UU36 8cv]7LΞ~jgf;<S,2) lD1TZi}Fɖ\;"I[ݺ۾hx@nHhDQCQIfYZof=if'RғF"%yD Aaۻz[*{vw]$^U2XWA3{ ?<{~G~7~=?333ܡo[޽{ϝ;wFQcǎnew}w}_8pwܙi`|\|;w|WPСCj51y?ɓ'_zP5>|8pw:ξ}$yF} A{_W4WK9cA 9Ҽm_x^Geo4cv˂mVYM᭳6uFF4N<16-Ҩ9W8aXRBO:HV~W"i~ŕ `*mKkBIl4+Q*by P &^j^R# ZUT_|W_<#G-oI؆k,o8 ¯{7߼K~73'''~ۿ8x"Fx(/b$ogyn%l@Pb .Հ|C q[^^+˲({,4PٳA.`._h4Bik4_y啙Sfgg_cOL\cY1!`4_Ǵʠ =!#9}#"! HLBcΫROdNu7Ih-7Y]Tժd$JY ŵ%nh/.l.Y{-)&D*J(RJ c/DQT t&4)X"x/qi cv /a_?[ W`f+jx UttPЯBr'm Iitd=qPF&cVtvn92HpY)Q$Z,U:-"γ+;CZg@H5)FBuڌMQ>zfRDA0{FBf9t(DDķָ __] E DJAO+ØP ,  |iATD5`|kvonnu5HaW26vlsĘJ?Rb F,mΕ#[zo;,D>d  I*΁.2EqZdlkفgғbhE /"oX^x5ĥo"Hpc"CՈp^ B,a S l.C5[_׸~heL[k77Vjȑw@vh򒘄nJY)ȋnw,w\x'\ ;fH0,&Zhb4DTsyfpVs^)A!Q%IJ@[2=Jo UO;D`"yvVRM&&WL/y+I@]H`Any^7@ I_ą-w7O,9AX|u1JsYʓF'THZ&{K8aHӁ uA4ʤ$U O]j8:K^i[YVXg@)FqlO<))KK׽8d b0al{Bk^U?",b3=ӗ//tD@M_ͯeQpį7Y( &R++ˏ>?#E^FpeBRHk-•4t套OʫMOfY O "!+ut[d7Ï8H E1kN[n]ϕ+Wh@xd)MĈxހse{a>TCQPPx%" ĞQ"F;=N<#g Y {{/,ɠcM@7|;{_k?g>ϼʫzmǎZ6c::thqqG~䇂"7^ B__C'\IZI{~cyuc^5;v Zh"ŝFu~>ĩGSg??և(K; @a4"$epJ}Vo5} Wy]HJ8o <@$X[u# ƠJhr )!_ZO8ք/xdqa"@C{:-`+c.]Wߤi|beQ DzzjjRƘ,(kc8=pv_ EPZiM?ghYο|ŵMˊf516^K$ROܹK/#Q#|(w(Ȩp|?WzACQ'Ν8u[]1@G"[X&Y0L%t"W8|Z҅s3] CW+i ͐B8M {//8;v{I%$RZ*nڳ$yo?Z$ ) !2"*T@_5yC yH6rYQZYkd @Q+$Zi1F;ҢMPeeYX[Z ̂E"RZs P!iHxbpKvy_~Y"2ºkz5v7/ Y^3"XRQEkD-927jBq ! {+"˲ 3;]ZRQ *c# @1f_!(Vʀ=Uz{-=ʒ oHE:0 M""\FuaA/΅`CMHkdHyv%#EZ٤Bޓg"q(2:BDZ={K(syBuACY(V"JHRDJ)mH 0O{Yēhei !4"RDi DёVB(̶ 3|Q{{;mCT`f•b :[{ϝdƫ (Z ȋ"Q^9X#EI0Nzu2r$ >Q7 H_d4谾C3m ߯6,"lQE Z:fDAeR IEj#}{≗[qc8Ag b@JҢ4WPgyY.+" 9x/L @֠4(8 |4ϋs}ӟ~N:SOqEqӍV԰ GP%HzY##"94Mѯ gI"so]p(Hx KCAދHJD!AT hVg{"%B 5"[v^Y kJQZ2:b4ck#)q(*"HQFiP(Ο=s?WWAkD:40"r^Jk4Z)"H"u=kEDTRN)RD:UDZ9tੳ~?f9z9D$>fWZkw"~aY`U ,F>n*#" tSұ&et̄%Iyۗha^ K= `_*=oh7uڹo6og?1R}a b?(hC$/V PXaњ(Nb*iTz&Ed2/ѓ@9/,̥HӾ;teuzu6>޻=.0;"V)}PueY;uEW?j&BWJH^aRbEAR^nm<'z7scjMg`(ҪQI Z8]魷"1,{ hk]Yj$U.5,}%MJ-|EJ#{%udt͘rD#ҎPHyVA|L6{8MvHƵN} S*в4R$"8`Qlt5)Jb(N5k؉4VˢPPJ ${*WC{F;E0=usl5[kZI ,-*5vkZ>[^űwW:DEov"+'5T\ٱ]NҴf_wcrr{kW-N<[߳\$b'Kxb|tiyj5=~nԙEiWZ{:3>r]{OLN+S]^x̹KF "T#vsEji5*"b>,Bq̆+oH2#p T=x$ ^)'$3 β_JEfslzԜ?uy{l|n''ƣ(fwjk_|1zσsGg7-:$z?>q愩$HHJFMJHy'Ƞ\8̓VkyY(QJ(@H=bE:s:(Ijܽc2+}J"Yj*[3k[8X ׆lh>[! @b;Caw8"]ɹ;˗/:ٙGkHݫ>MfF9>=>5il4аzݩjWCФn#R?ˁ ѳҠ(a@B[o<̾(S[Z%N_]:v??V#Km|?[^G~o>ω6#ӥDYP)@48g X(pu_[ZDh?x(왵VZ={(6'8]1slBʓ+@FF١ʼñ!Ym665Z2+T3hUQcއ~X* -̃ԾcWA`01ժֺY.dL:>b]|uvnk)Z%ZX4sO?sVcob 3TcHLe G}CGB+Tk{"\0Z{`PqisrްeRʃ{8gJ;zIJ2N_3^yw+/x}s͉zY^]iLʌj )d$za_[B( {뺠=vsy&ql K@ 54b"ъ~`؁NGFM*Q)oK01ExZiV*n^TIVcENkA@k? }{ANs_ٻw-=6F3/bk<1>F&zŃT|{~|clT넪OO+V"tsηxۻ+}V(e}GQPEgˆ42C^mlnwYkuid)m(;ǿ{>\ܑFDz;siʒg* D%}P4Wq)ls4&ǁQdH1*&ԫi.86:^v@:F XH]YiJ<tI};Nwx"`}Zeϡ@cS*E/EUX [0¤Y5b?}܈{Co׫ꯛѹ]^5_+]~c57>޳HRpe#dLF/E{W#13{Tl/d< RY)swaqc3k^XK\ʋb͍T>ϟ\WίC{kP{Hkٳ8ނg`$ P 00VJEכ1MMϐeik PP@Ed7Ơ҄VDT_i@#,*]I-4۹)l-.tC߷s-" BMω>I@@<4.Tٷj={a}uukm"Ɔ2=wܧt9>C;^9:>f(J:|~(znn`mT*`8}3AK6a/ 5  J ^W߳@Fnk"~@&FȺc[</;w Rmnmf|aCW}#BQp/9dU8Rګu1DF𶃱>]YHV<;-=ӵȱX_jqp}x77Gz{4:)aun^a_?x5Yb?⥥8sf;ʳUf& _@pBD!( +H^ptY 6F;y b+ KsO~޹cO;_N#8 S*E)0+djitolkrrBiٳq #sltxoR*UJ#EaSe= ;xՆx.{]&db{pl اta ߊ7A "W!<@IQ?|mHJvnzzWY4N{PڀiƺԮ%8hQ/=ك.WRnm (:g6WW~ |?pvvPJc{$;_}HB(8(}=^P@HUΌ_Y\8b9YVVqjG_cvюDR>6n]ϵ۲v1@,_찿BҨH)Df",$ Ri(DUֳ"8x׫$h8 \&fV+`KgKתާy^(m67F8VGǖϝo`0o~D@/GgfSI;,lzYIj徰.Ӥ122g[kˑhpvmeARr͢8<0zi=P\PH#-[kqJ={_z翪t,jIdQDZiBpiQ|vT\Xuֽ`]mr>[U@E?],ݾgFɳ~Zy!- drh I8N8j ݲSXd|M8JkոVњW&Jnu:/>V'(HF`!I-upnźoWp?0p?8 \-fGbV7V._,ݴRltxKvnvҹxr175VG:nC[oIIQdќRg$IK6Z>Q-(=a}[~'N?|;VbRQZizgm5NdBXe9As|YŜ$VS_nxiI㧚ӓ>;:(~rSC+`l1CWI7,M,$/݁G?=5zݧN^.n#FfǚI u3yۭm-m.:ͭtzYj;;sqa: 'O_\ޘt:Qq| DOD ƫ2"4La1>5>uyj\AaξS?Z|akk[oyjJ1/-:$G?z:(cb:8M͎U~~[g|#e8J Bv{9D /=;޶s3+)z`Rg./DrhzlzjDIIJ^jVH]:ߑw8y]GRlڟ9XOHUV3p}g@-~K[&U&{əHsfwkfZcj=TRjtG'bڷ0`_-t1XS!"b#ѿ.j "M(lT+_6[DW#%]Oȹ#/o=<5a$suZ=Q-NF Z_^ 9T,v 7ر.]T*IJ|mY{Ϩz'GIJք:6Q+vm.o=vGz~&ƿWLシ28vx-}FX,0( Q 8okuk8;ݭR\\hc&Ɩ.EԨYo9Ҷ:<(RA2qN ^8@oagh6Al{{}??f1zJkEf}3*}sN=][^9<=VݨQW-s]U6 ?]^ezr' gpXD$|Jr0'IRf(r8\0v\#1}"S6̾f-ifldn w'34776̌л_^U` 2Ʉ7UG BrRm̟?}~Ǯ]GMZ%E5njͽ%ϼx9Fm_oʂ@cyCYUG% dw[_͟*KD)\CϭotTe¥u%Wsl:oG⑪IJ^d=J2"I5w,JM$Z1P)ā|y17.#BRi6Μ`RYrp& e!B"O Z(N͕߷c_Xi6393XE$:ė.Sws XL[Y5~PЧɕ J(5cwyumU1qTZuιDW}}F΃u\^!\*#4/cx'> ?7WI^+˒ծռef.E ^2fa#uҷc5 cnf~F\w}-KgۤDQ+@Lc7B AWzbl=J)Ԍ:o۬WVrN(]J2Gvcs{^쮭Rm\i7?Z}dy)2&~G7x\}nXX؋9v2,Dz=ݙ{|TlbW.ٵ{*$$iJ^jMj gYf tA[G۷&;vmsf/kO zKZ|s#?3k{|ⷢxλu2LFĦ̙Fyī{w֒3 6bajR4*{w"M gּ`"nFC3^X\fƎĝO<2*WѱR%Hx"%TJC5G8SlGJ7Fj%IuJLE?7peЍϯ$C2 ~ [0 gV[]Z%掉]sN\3{*IZD5sglr:JS2/W޳3]3 rEosn=C)V/wμvȮܟmZj}`^7J̀Hs?_lu~7~}ҙۖ)/Y1Xr-IFR5ӣҽf[ˬWtL̻eݶǚp@3#WCCD 7A۾D̉ Ϟ;t}e[ml"nc{sm H>\J$(6;W/7'3; kF<|ŧZcY[:&h@B",@T/PW`PD0]]\RKT/鋯ݶso\4QخFZ[eRk.ʪ@ދ;lsL8q[ekmyM\= k8he!b'jZ@Kw`#lݳw.nH ~ZuJ*vR6=s*dE.Y_4|15*,}!]@[iTX)"ݏ>ݹ$m6H)W!F\QdkkHhyg>0Nw6֔t*"zYockS;B2,HH Cy*q$)>neYtܹN84u*{D#-ց!틟_f fzWlήZ(Qo?=~`Ev6yu˓ D۟,kuZ]斳Mt$ꚩ}KTQ=SVlTi3eWO%M e;g,G 7| t V%2r/,8[2IS/ R;ame̶,z99izy`c(UFG xE?Yۀ [^e\q? \5FU,ύ&E ^>V$y[NLݙ.CBB36I[JHH`(96pE%׸W_o rػ xvoTT?Ѭr{033>:bvD[ XI*c=x[#{=˧{juHHtDUvjR|hMй+^9LDM8DWCݲM rAc{VW>՗^8u~w]m4Ge{!8e>@[k2GokOR\+:w۷{|dxЃ٣ ⯬,"=0xf/3SOp6&(SJ޽Wk%96Z'I%4jՂL$O3>5"\=ZuKq 1G 3&Z_iG?>9K?\ҥOT_>w󹇎vҳlknK'//vqSڛO}`]CA >paEd~~?Y$hVSk_~?l&%*RӎM`HTfYI QZD &tdYzk*i#AIwQ#reg-Ҹ%4=s١{B}d|Ԙ/l3tslZFT:jRƞ< #}` t_PoJ0 @QjS>]cc&Ҿd x߿W?H5,,%d}{Pھx=w\N:Z+/8" $t@/B!@aw*>?c?OQH_^zRM@Ie"%eUvqZMwɉzz7(URiL76I{mxtm="^]'T;]{3wЗ{vB:Ro΋ KOӄ@FQTQ\"2Qu;QT䈠yhE0 @E ֤o-%x &#sEgT1֮S18a/AѕVT9|,>Zi4EejĔ.N$֑(_f^~]yV@Eݵ|^} H3wOQ(HؖqLN\Jl7j#A7="0w(a 4"{;}wY묵yOҚ=GFX[{S.,^^ooՕռ,eimjV%h%Y;{ԅz=ъ8?T$5 ~a[s'qn!+sN٦c聸-#O]k?_twTҴoβ vIO.WvxqmtS/¥; z|Rc^lnYO/ !,#qH vZ#/Q)0+ML )"3 @/fJ?pӼqM} 09}xgK AG;bsujnε;Y$Yߌ_r /w+H(X+uȩNc֙Unmnܳ8H bA1MS+RD4 66w(v/{voWUu7VJ3eޣBe *iwjP_>X&o~Uo6yP .Ne$$A –Փϟ_Z,5,3k֝)1KӍT}rblߞ]{v'qŒٗ9c#_<|o;lK뼐H"A2^qB/7 sz7+q@|@_+H.E\C?G&uD;+3~3,\:1>VW7|*vgzH_C!M H 􇯺j׆_Gq(Ÿ䧞xϿyY_'ВNuYx=Jk_@(8uV8z 66qߓu~{5\a N|`a 4ED QQy!-ݼ[omE'+.!R4wtnv~fV0T=~wIR(Ha'+w4L_:yr<:?;{Api^&ӂ@ 0 I4)e B}r|(;R@ :nljԫOl767굪ֺVI._<|y9albviSϏ^87#? oC7hDԀ"|cAO0o߾}?s?{ȑ?_u8iK؄"$ J: RQR˧^{{>=#BV.ֻ̖QE;8{_\YoJs dHUă67(b:PF^N*O:wݿs1=Qcf>, Nקn?CF&R r(O>~<BCЄV6V&wDzY^sӛccs:gLsNSܱ P P .y}O |-9t /\ ct 4Z/{K4JE^(qt-7V62zߛ֛ܟnG39(3<{j^DbC0qZd%2 R귿hg G-.^hdWRDb9")":J/.llm&gvVSzۃwkGf>'{eމ95ZW}^?B !w CT&+g""ҽ j(>"@" ktތĘa%DZw`J~ju$;@baz<Ԇf7|e:+Jr!7L"D^5*g]2')mV콰au5-i[ܾڅ>dƈV8I,"#`TDDGaj8K~ݭ;=3ϕ"ϵ2BجDIB2"x|GY<)7퍅}'O.<|wXc~[? )a)H@ 刈 @+DT D҈*$ g 8 l&¾>ש?zA-@.I_Kw#mbe.5+ct{`X._ꢏk5ޓ//m𭶎_pbϪrcl ́(3:;"L:U*fo(4lhpf?|]Eg+8[\\Q/QEέ^TnsZqRΣK:=eO?/ރo{ΙzQ!SxQ[+"! M#CVF~5Pִ is@( s5 e !K3v.;82 "(B KA$6X,{[Nxrw?dd|`11)mPEq*"-E]գTeGըtEwznS'mm#GyQ*VfQ:E->lf 68N>:{ MVEHslG~޿Cޗ%3}7 VA0n20~ H"B D(Vc&Ȣ@xPdxO|_. pI /b"B'ٷsbrn+\}&"Fժ2Qi .t}otm&fFv/p?9wWOȳ꥗qI4"W:ֆH12U4VDQ]ZcWjkK%F{U4@edrgk]&RD⽳weZ8GΫMU<@H*#KOcyLWmI~ 8[!H}hRLGp:uO ] F ϐ+;!09_7XR^O+XIhI+.e $HiSx[0;|oW3sp/rsFwLsrN\_8Qs$mLlA"fNjqZU&BB$]iSQyWF&^8zfcfZDƘeetZ4~/>yzEAYB(n*{fWE\[XeqD)}o46<0ЩO?bO!(P8d{s{g [缳\8\s0gawq_6F)og4<dŊu_<ܙ3A61sߓz(H)IԪ%V&Mu":qbiiZd|;??qigB?BEQDDıxUJyh%zt?Єm]+3G.T m^H8mJ*=ټ۪6{[e#EZY?|y乻wxR=")O<{uDQfއ@9<Dltli{4\ZOFwv__u~~;F8{}F<FJdfׂ503AS Cgv\s#PnlP*RB<~,@$xC@p"r=Df}Yg}wG?U\L*2/u4IH)+UEǮzZcsviժI̶Zwꨒ6TZ7'mc)5y$:٦N)S1ElFMKϟxWZbPbݼ{&*IiflMR)̻:J!e:[ً o鎃FqϠ2V,tZնxl?/(^xPq'pB?#( )`OJ6 wC?O:ױʔ8Y[?s'̕=Ǖ"T *U %({Wf;ꗿ|}Uk5%[}qe>QtײqMR&zkaY4DrD"f])+"a_zVk("<NVFq -I:coڤ0 !;K͕=0{]YZP0W@o㉹w| ~-T HPd~l =*[Dȕ"Yh5B$/K^"A@( `A~zz/l6{[$ٶW"26w|ۓXVj(7ⴊe\O~ûv70k;&b,V\_TVZcg/y!b.ÔcQB$I'J'J'$"1jP:"e6*^g@I@HwJwZP%-{h +1@BƳ)$@~!"Qr+y.=9 FJ΄H@(?mde;٩.lJqr绿OۗϦՊR(E̮o}옟?r'>,˚}wnq輻TT\uE^idU-{UT(x@B` C\)ޱw:JYEq\ɶV]rD*"8grRL)@HgeИ9ؕޗeFy~a_eՍ%O^Az! TҤI!A({\2H7뫕 p(U AȀv~"өiԎCo/y,6qL̛k^dη6'B>zSʣ}GۏN(*nZs:¸2e."JG̫*"g;ˮצּ͑ NjPt7z͉=r%~VUyC.!JE%B*;kL:!]r_% c O@A1WhBF@P #0g!~(4z7 y*BBA`{r""TմRn/G}'_XYBDT͝G%̫}ww~K_ZZXHdn~>I:e彭(J`_[˙pu$ަ 1(A @J!*a/4S hn.ګLmlޕs%~n(4n(h"(u:(E|˻@ < 3Z8@@ i_&L ZNBX CW0h@9Bt Q){;U gYid?rTh&o;W) { eټps|C7|xX[6ܼpn?FM)4/b$RZ"BBԃLfFFTܿ=N"0$4F<#@%AR.Ywrw/ƟXks$IzRI4"5 |\zEQEaUJi8ZeeYEIhZƘ(D$A4o4q@Qιn[`fcLp&ZcZk pZ+ƇߘM`-7ABH䕓ܽ(xf(} ؂H EPDxaPp#X0M"(h1ʲ R*cD k1{]P% $;cfYf%p=KZ8q$Jpma)c"ԧ"DH"3s͂DheU'DD!N"E[陑BF+* 8ZHq~L6Ap[пEQj^j$ q0`4ޗe,5XvEeY#"L`CYkmZeiZ0p K?"j֚PA` P\'"BU̶he53HVPMW)Z0ޘXۚ0FE;yYz\NWiY% @;@xB~PBq[Ƿ|XnOշ&y,ÞvIDj5,`D$fE}Q*a86T!jZp{HxK*>9$I4 ?T*̬RW 5Cߵ<@)MK/z. @lZԩ(<ڌlllrjKyE)c/F'չB~@rA) H @F&ꮫC꺋f ^ {w@$vŇ t A#˲(a&+?+#b(3@$F_Vgݩ,KR:UuA 0 4)B$"M>p)ͅ9g>LW^s_yԝۿ) S-Jsז?z*G׹cj}b&m;lm¦^VZZ:6H 5s oкVD! ! {6BG[h7WeiI57"Ġ:w\@\?BرHᯆ9 >Ѳꥒ@ִR G.,.ϟl~8X呑=<3{خhzFvi%ڵ{WmQ줯f*"N@jD+I P@-lR͎u7Hox68 CP*Ԣ((0 (eٖ?ܗp/^Vijhl'xWHl'깤R-/fOҬ{΂>iOъpAMR^˄us9%;+oA^WH]͕B/z< їÝ!!:^L<m!:3*8EORR "V*aAHȆ&[!"h+hk _}mzg|Ǒ]{ǡ2!+˜}h۽.$OGG] l->Wk~/WӤycsId=]{c{NH̛sjㆥ8IqXmVǢ399S*#̈Acg_M0F2=eO%RY93m`~9AU`%v0X@/b$Jms婭b6C>0c*J< 7uA8~ =[n^E(vkk"  q9a k":4WSmx3J>3|wtjطK.=]>(M!h'V\6v pC>9, o}9lR o _saQrC, >mmVlh+us&v㕉sξ{g6`l=&2èNcvqqGw;_ݷ*K5Y[-HJ[ݨҜ\ANtw5y<gN}cbB]D_Z"(/]]s{ΜWMC`_IS(Ⱦ.PpPN Je$"vܲGDU!Ș$IB~317a 3gYvaփQ0ؔ4"g1=Tg|p#sT4_]ݻk'j_Ƣ>[@mj-_\3SUt_>۫_+Z:R_03],&t~ jTWb^ PԕTw^)gm녩^9s:|nd& ࠇuhs8âia(n:ݬ‹Ru[ikT:FZU(, <ǐNfHp YPw Ct\^٨֏>YԹY'_qѱ g{{1ơGg&E4½3KU)SeӴck'cۺ\\z󂂎Dq<5ft;hT[:T/sңye7=-U/i`w}n_?"V= cP  u(jv}}}uuJ4iH"/M7k}ֺZ/?`DGRaBd30R!Ek%`@$_丵l*mٹdd$~m)sʅמ&v,rYS.3;/f8XGO=y6 #砾˼\;Ŷn7֦j#YW<шa=uh( (P.Kwv2n2lkg<\gcT3 /ƟjփK3,Ҁ @LeYNrgYu+l鬮t;[pg |rC>Z؈®yːbkccD֖T[}lۓB Gyk6'5T.Y|rU2NzǓquN@ً-{ʶNK>3tY€r#\.z4z^VFVT*!n7˲`acLYkk[eYwN 8f B-666"+>!F ?$EQ -i"Uy:6?>-\\d-k?.$s?gĎ5ݮ7pcU0蜥d6y2թ5G:/oNO7qZ,Mw/;/Vej/=fV<*BUmH݌uhmBѵkՒx荟X庬p׏Po^CF5*qo fqw݀pא NǕ +HHDEQcZka3$|+sP"CBADt%*1f=c@:8*Ym%cv x [_FwM^=u[dc~nݽ7uum7N)ݝw?esrrzpܗ+W.C5&GռaC.@QTGG}Zo abߔdcY!RP)6ɮ{#u !Ӕ"ߘ/畷CDH H7(,Ѐ&@(6\A_(˗/Z2G$ VPP ֫xQ H{ɲv^]eIjؑz7d[GG,gfdatiFخ'(̊[o Zr+j;SF+vOgo[HF@ j;ֈd?%o !v۰5v0"M5a>*"'[+EX'Vu*d&¢vu .P`ϴZVU+- b t,@dBD 8AL]kcR q'J6' <`4֩7:^fN.֢iՕLjw  \(ͱ#x򹂄+r]Vo~G#qd ˈƜ/eS4S3f.h/˱{$ysC@~u[K|ߵXy*o"FMjt{:?#nY:m bݻc:-.{CR_߱nwm~ YZKuw$,B aP8 z51wuzd )z}DhXju P"c( 3P'hrRhg.u𼟝9ĹKm5{"L+瀓M[T>mVMg/mz{N=dImՍΜQ) A| ֣)yk((OѕNM TSqdE(uh絰hjuj@Eh uM7i)B80Q |s NHƒ$ pD>Ch͞@T9X_oIjtL BC"ֆ)fiBX v{'B*A̋3ovTRΰ2~E;v_?xU@fm̠ՌhV*-ַ`vtBgթn^1ȹd]oZΔv9X=W͓ؔ|;)d-e3{*N6<0sjrcKKi}vɧFG֨rVYofU}aM$0 B*&Ԥ666666DGDYG&`""@ 0X۬U{c8}NBpB6N'YX3'/^^xYVk*FFK=pO~y{vkcONvW!E/ tvuՍ'֎5Kш^o?n>~^+8zTRRL%tJNl5MzčKVQoz"1T #ΐzGĐ 86(-/-gaPjˈR0F}PD9F:uU.tz*P=W;'j&QZ2]ϽSA w_wƅ#¶׮(F|GSώ?zWf1-/fR oKen^݊Zl9ۉieugorH)΃DYiS³厊ʎnGGWEWDw]OUGTrEW?BvʶlE@#$r|;qk2E!Jf sy}k}Co`.O~̍y4|5羚czGWvfC?Ic{lΪώ774Hz;4yAv܌vwwgEY  0"z`G"HYLδvaN͠!D?ƒWW??('y6l=d{m❟^}g;8r >8]C7`oiWUTK%Q. G*oIy8қ$,^tg.^B&a>3&ѮOܬgOt;M1yBC;MWJo9d1=@͠p  .~B̼=O`{^8…sT#4Xvi?n7eEfm$ ́dnςw0A@I& fCAHBtzpxjGwk=Ԩ{h <pZy$Rg*7H/-sʼX:GڪlR{[Im}\Ί=]wW&7 I;uN_+/%qz):aӻ>(cp: ~|q{ v\#v}Ӷ$SGmܫagm{tWÓG. O%@9WP#c׺?%/A,U~ |;\GD}DgWN= rlFc=Do1FSK3<'.MdwF=an>;*Tz~\Zk}w_U!tj8Xw|27@֪7xvisX%;xOlI {Ej3cp ˜?G517 V1x~F'!@KJw%#|?@S4 `k"+9ǁ"-EF@ ܈"&  6`H*r<̦4MC˲lzlk{5Ra/;qo_NM\bYtwז]^ܖ["oud!QtW~M57RoG|C6yTũqgoι@GUi5'bV ;6{RliB#~-a| =^y[Z3{zxm?UUeY6Ίk+''h-,`tLxEJN0@@D4*8YPSm;*oϬ1"h\wy_~Z]]l{/#Ȭ,[0A,?[Ѥ~`iZ̵6|<gYSDM+Q*2QDؘpi$1: m-u]e坳Bk!bu:Fc;fiZyc4! RO8iO;8ݽ(ޅoV{Oxag? ;ooua>o "9}詧*+ $C4rvbO9X*IrwVKgٌi*^WZIS[{NZt *n|cϏr4=hT!º7lͳl\ Z)(e"4YY(OάlYYo.'qeet9/އ|N:pQ͢m&ZDI7_>8іF+L_|m|m?c`@m,wvwJ vwtFS/X~Z}duß~kySٝ~۵YrS+h~h>wqo'?َ B̏6~J Pst>uq܎M+JLlT'JWFK+򤘄>yvdv^8urVͻ+_9jG'̡CzVZUwl7 "D<1qw+{VQtѴZz6^i/u!MQm;W_^pSO]?ޛI\lμ%!I]:g֪U~coW^-e9]Pd[ބ*.Umdǟ[{s0?z&Go/CC 3A [,E(Z "Qq~wmؿyh]yRxrg!.nH@KIVE騮s^ 3KYYq_y$q3kzSή֚i*^$ы_ݣΟSAd}KI٘EmcN>[x3wfc%Yv'KLdi]\X*h4 K?TQuN%횴%w]\ܞ=9hc(~ z^$Z l+[[B$"ďۺtsO]t`q4m7WQOҸv "έ# ABe}YUUUEY7o^?طy2h͆O!D$pFkiEI35[l{VZi1|e4|w> ݛc?v3*A#47,j;v3aqS;&Ԟ4{V?x}*?]ϏIa2J?vFa FΕD(,uQC$bɞIjCdLF˓\f+((7d2XlQ$pM.oo+)߆$< 탯1f_^հimzX̣6u>&DkQ~)$79^K'lhvI^ގy7m%$&N p\ZDrΛo7O}!?HHC9x\4J'Nz,ŗRUb?ސM& MӠÙ@mNu"|bD( ZHͥb=3W <$&T.f*jz7cDz'`;T Zx`oRoC !_O_]ԧ^rryIAJ@B;T>+lz<NnmVG/]EG^YxNbrg'2[ z=`$yQSaj-YKgJuOD@|}3=5#A@4/G$Fa!"d~5y~w]4d zd4FIaYf,"8hE" B"DwyE>;P:1U"XWMkte2Rɋ?WL. !#"33)&$@D`@YjBM֨I7B'7iJ+--V6};v|DUjZY.kuZTE+je{S`I,̕5R!~9=nJ'~6+݅u9CTTA;/>n/sDnTޣ X lGY`M!|XCq#n=GT_1X~J L2\rdOzٓg훺YIW,q- Q "i٪f>m1*j`( vSFs[?=̻fucPUUEQ0sY!8DN3ҢH!A;@ RŬ;_,%nwEҾ~}o_S{_1K][/FE5y)jIx"zuTDZMmq-xplw/XɝOmw:qaݣ;_>ߏw헶oF?U>Mk^/PZ-7t!OuYng&]Ye5ri4} "h/s]Y5,ʲ)}!i@Ţ;J $ïolkP٪<ǁYP澨 m\'I~(rܘ! 0 y*޹s8/mI7a>c.nGEQ4:M7xOkHy%D!PPi ˊj2~kgU8:J+h^懇7n9dE] fU]e ٶ6a4*H @^Aipp85l1`?sQsll3w_Y?5]YOFFl6Z9[OvUܝa­3SZMˇ'j[K@֟7>s֥s׷~u+Is:{ < ^7ޟGP5<[=D11+<=*2"h#*D]񞽯 THM܂RT.(ٚ56mlLS{@\WJ5m k' , m0Jibw6.g>w7nf_蕷 3n'n6t3so'p7X̖uDTb26֫doe幤k#uB7%fQϷ9/\4;˦Ȩ뺙"bi$B*QDH35$B-A@8&Ekbk<+EA  RJ7,7s6S1Z}14DP2J?LL]?W__DGϫoQa_PA!&.*^oixZq^oiz[쇎و [&ґ{ӌABTe﫺NuVk!DMB,?>k\U 0H3$I4 خ#3cacvOoN/|l_ۨăH@f<Ѥ;0{2Rf3oЋ_?Eb/g 8C3h"1;vC`>40)""joK @HNeY! kChEhN`>5:!}g?>{pfݯƥ?y詃[ZjU |y렘|uyᤰ!>8Uw~ AlҩmjlЌwQ@z M??d$IyXOH"'*IY(cJfJi,ɻ P<8ILEXn! aQCS RJt?/!"q DBx{q~GQC9l?3m;wVݾ=*04|M>g.ѻӠZ_^hWw GC6YlNGяzvc 6($"'|R ÎfT> BiՎ @"P+%1pEP)2N$] 4 "3xQz"WP Mf$!w?bDɴB*APe>xk0=r RCpx.nFbrZҍ74vZgu}8\Y"Eq'$up,,Ҵ N48H ax~^WQ<*;5C9H=h"7r-U~wl׏CU!NmR_<$Ɂ>7zQ50plVu]gg,P }Ѝ"ACpMsjWUh"d Lډ"$Qsؠ+hXD * b J(Xg Q !JW T܊8$c[r^)E 3{J}0U33ZSl8֚BBanԿ$0"*pbV(M,tCPpҵp{?}k+ )զD;;(fwnz}M;RoL[Nzˬә]lt#?Ie-خs%nK9 кpEx#omUGRgywxpk=.>xV\ۚN cTkZetMf=}RP )QQi뀽<&{aB,j[8+vBMSuF(6{4q(s ^BVL$/ <[ǵ+"u"%,ȨՉZ.I݊mV) $ A52 D78a$0 0  ! 5S1T.u7.^'ly^; :f`;.zHso0ln{ڤt]3p!eWuvt|Zץ|^xkMwӥ>Oo_@!t,%v_Z!fϞ|sGwm~O>}a0!tHHHbQ+EAb xwVn֗uMLlt*lm䁂2KK Z.Q/Dy^W+me -IZyT'jVJҪ,ͬo|1O ҉BL,;kڱ8; `(V*ƈѦy5\ǩ, ,Ҁ`&eYQe/I4oz@WR" m{?ߺq4ٸteqs4 y1ɿVav2]Z:|kxjxs[O [HPUj\FG6v a{*Zkt.8iI,:xǺ)Ty}Wx 0S޾9< ׹?P;2(}Kk8mXSh~ O=ivJDJq) Y;*\9m-/};E7<}'kO,7qjc|btUںN {%1=ٟwD ;qq teh9TQX[ɘQ j=$W|x6gAtEΗBzw΃!{_N,0^1"@u̡j՞"F`$2!bE(H楟-fJn}0鰳D*4M"e"e"% QFT"ҠHF6("8"@Qi,KdD@d/B'\,<nA LD 0 4U )9Quo?/NޚG^99&Ib5MΞ|BW_|_z JȤK'xW j& (:VGh>^x};na^Զ8gPp15rahYP]O<~E<ƨHG4%{eW(DzcԞj.Coٵ,[zmA'F`Y[FlY^a|{|`zļqm'N"Z ν₦H%Lfq,FR(DIiP0Jku}A$M$ " 'L'KiJ =zA$cQ=+EG$ijH>@ZdƯ(4|{% 5h4"2Jꮘ41B94G͍|?G>.A+mR1(98Y'a+ヱI.P!1&xpk$oB,.;R3~O>?5}y8򼯃RFQ+T 9L%b͡n8`x_0,/md8VR {{0^5ݻGl̅g>~Ѵ83}epg* J@tʪR9W:I8@X 8H_uGoܝ#R:vI$H`=KoD{JEAH%!r2v?lU Ac|g`l̀"! ? [PE ѵ7ގE d1_(PRQy0=X\֩S^S4PXd? }թukϳ|0ϯPIBM˵ ӨFZt\|glwLo>[h091]C'i:dS.Z7Zʪn/i_D.8'Ty46 ; }[on]8}8ש_GG?84f>IMgI0hOFաE<X P2s'Fk!V.*!ѫҗIDATUmx.' 䇝C&H6T*&#͢'|/ټNm)qEڋ*L'ҕ'Tc8y tun~c;:ZiK"vZ}z;,6;"d1E3;c~Ue;8zVƙ`=P7F,i-JPZTZs®t  !W F|2E\]n^^s3Y6ÐW.5ʫ^yi:|?A#! %!ґ&`")1DrE[z}GuF5D+lrWR_˽ F@|띐 BZ! "π%O&mrdag lE< 7Y8BƷ_ǣl7AT9.G&!J;^SUQ+t:WW;!4ݟ dP!abr-[r.i~胏H\5Rn #eW#fv`iA逸Vz aAR2,hI ǁkce0CfPFP[ bzܤ|õ0F[ +YIIJbSk2_x8y) >'E،PNH</iS"BDW蝽ӱy9N7,(6" ,6*NH85m/!%6(* L'H'mAgv,NX6 @|>v, DEB@iXJȠ΍DEI4uu/ B+.ӶN"ڲξ浏$O U$4쏨YMkyu]٪C @ \]xƳ˝/|~{vwB'V:̦GVmVVZ4E$"69f$' XbAqTu_Jڣ+ͦ-[̗) cu@NC;V\?p  "$A },D܎T3 ƶ[/; Un+ 0pi9M@;Hmzޠ_g3VثP1I;.(\ 9=+O̲m$0pdfl@ Ddy޴z+{[7Q|)Ac V: 79v`Oq)R h 5&xQՁTp2F^Yj(ˌA _t&?ui맇~_ҭlcm9_}7_zw9^_X$Id:"C|);bmO2ʲ\y]fYQD`T;wbEt2=ʳApqzLN]נSE k`"*4Jh7uTD{R H]ݻ_`X8V-"eh6BNe]vLp;;wWډRH=uOF;;*1Xp@D&Ŷ֓==U?XX00ga` PD{r WޚO=88&O;+*ƣ:gIq+Bkq_ _/'g/mpp^|PDduֹ,Zt:㢨n伻uw<?5:sy;|o<9n;V~~?W WIYwX!A~>?yw5qv$"_BUm`EUέGU\ows(d6a-vs(SMơqJ:@;SVP|O66M1>/q >8WkNʺtWJC<4M@F,Ye'%45F2:bk4iiB$Lz֞C duu0X9#E1A3+C`<QX(LwHDtgFI TVa wv.[ql&4vYP[[;Ujn7WN|0 I[4iȪRH PsfzOFҚ(fWw3qU%W_`(Qb:@oA|OƇکڨ R٭wou KGEv-tꪞ^{payk9S} {wv|YaG+-#wgXxkt}<2l\zhm4A ;/ YD߫-XHH{ @YPEil$R*@itUl4DZiUEQISk+dޝ3{ һZĉKVlx&dI2$xׄ md,8J"FD3q|88xnf7M(hE9DlaxwqeӴ3'._ʅ%x2Dxbm}%u^̧u{4Z"Kj&eef/,k(utLR{o%-͛˪Z[?t:;޾3?]8gne]ZZXOa) tڽUխg~nsU~ -vv)ēYKidZ#YQ<`0ܣYni>7جGg7 wX0"!"F`! kT`:H+ m.`*KDPY)$[tcNׯ̧" L kBBy$!zhrL Tʕ\-(|7(@'P@A@ ꪒl(&N"sfmNL {2 hbTE9jO=y&En∼CAM TAP{g&ʻ d BĴ'Wݝb2ͧ3vZ痗ko,=y9;7ڽ>X5.Nt{^vWZpee|{Y{W`F+s/\{ؿ75]dBJP^Q =Э~uD$ 4 N JNP H)P<8  VؤdBP9iZ^/ͥkn,靷 -^tB@ 2M@HHki͓MB$т H=){WեI S`W$A 'IĴ>\UtJ;_dikKIE ~ A$Qn'Ep^^D/~ⰷ:XZޝO_zk7KQt=$Za{{%IUQyͬN"6VP/wv29PjYR{.꺸SߺsskĥjX"*R B*֑2+Be߻ 3|ÑH1jN,NjAQVD]`!"@gDBx8>.-+E,֩ [f+CIe}mc{m6 Qs@G)8Aj*N "ikpC"E}؛Zdn#:IPu1^E^e x (D !%KDJbŊ"F DBiRĬeZ=6jqwݚe9G-Wמ [/_~wX꘴7:.>يlҷy<)-'Omf?Zng^3gd~{7ZEhњMmgj,z%,YABfN8 iD*! !iB6iԉa?$InoRHa2i߉Thtd% 1(!<[FlhQqX>/ֻGec,! 䁍烯ZFO]XuڃN+RFTIt( uB"#kE1`D+ %Q}yov`h^G6S"E*ʼn8/7\[#/}0Qt _e}+0W_v*򵷿ٟzfb-r3/ϝ9Kuz̥֛y;\Qg2I|z6ώ66 e@ny8(fn&nSp>9M[ݴGy̋Yv֭o;[oIE]MDJ8+M(sĠd1uR,8PQ3ZlQZx}jCHJ)H1"2(2@`D E_Ԉ B_~Ks!4lEf ދ3rva]󬨀L41D8qb(fH $N2 qf}0QlL,xw6\M;D-T{;ݶ/[_~~{KQ}u K[XPb:'eUqZqf?| 8gW'uEj.lȂAJ#q mEItlolV۔hg uzq4 .v:Nr~ 6 Qbc,֤t4>5 HC 'B8A"`'(T )&c6"*MQqEȖ] աW.[J0.)1&.V)Q !Pkl:1:qT"$H5P&u1((IlmWbϲ{<^,*:~oЊHk rp8zЉp$v^*'R1Fs>2**8Q43sD Pu^ ݴZZo!C^X3M&iu!`UL+NZI(I *Q<ʁ4*QV%=E6r(l,TvNNuQKuBv&>`%?6XH@\FH(9AyF "4E#Ej3CG.fιww]{nps8J{i;hIFiAPkf@J{Hx2:͏J"NoQZ D  A II;]Ӫ' 'v0l[$OQ><<A׋x\,~* x]GP2F1`<! `p\DAJIUsRRZBؓՏu6~}꫻̞=t?woI-܊1BF-:/l^ X%i]K ف=+-8& 8 zWNDWuP>T@}Z5>=>ON5Y4R("ZH)A!gʱED.6$ I;zzueݝg2vstwo{Ƞ;\Njib6ϟ9?tJJ*m"Ҥ2IuyM~[ o)hM$@M11a8i)$$ @iW8T69/Z(Ix\dV Q7jE(Vb^}͑+&f4!R E iMPB1hZPvoF1oU )*"Hۧk8a!{\gV@mhWix$AR[34yω-IC|d(!m48D4Jx k\]# FZi> D}j wzxdS?ߘΏvpo^m6:R-HYBU,FSY[*Tlwi++6;=U:T$QyVZ^xEb&$Ķ1N R(fٽ׻/ݼ~|r'W{*;߾ ?s|K(pJZ-MC*)ٽpW&T kR@u@It$ kELWnXK2Ebp@lB@/{ٝ'GL_ުޏt7OqB[<2@Ĉ: N0ٺD`YcCeixXu6GV.ROxiM? +KO׺4k+Ѱwo\ &;7oۛx2x&sB7_x>#GIg?yk'5>>j5W'#s 1F l3hdόQK4l:i`mt\Js?37]#@ȚXH-13+,QY(5!N_?ٿ+ʷ߹Cw/lqۋq#r5x\u+UuGlڏ;$ᮎ>0fHRڗj+jw[jKu"9G=2;<@HB(TUh G.@λ4H^{OaawvJ|af0c];'"Ƙv.MIlv.JZ(( [hK¦?tO2i.O綌 B`ͲLG<ԊX@iFbV'$  A,2 ņέ ?wzZ0qˋ: z)--'/Gjֵv2ZC!󬾰9zɳ\-f\"#€ Pjfȭ7 Z@ϡ@t }KΝٰ.~t|⓮~q-Yڮw_xQ;u߾۽3[DI$ol-/GBEyTg4r/~;86aE̬ p[ڨx+Dy-֐]'mg?̨*VyNPVD8xM x~S ~4XXjd^ڃ@ͮ ;uU-\s+^ ڇ`U`a(=.BG㣊`mN9#Xe @@oPiE5!8՜ˬ"H\p/XP-)jN 2#[Q%嵜7GԬmfg">v_!$(E/o^ΟKK[[IQF>A0:+r6}'~Z˖\D aVU WqT]Z WB]Yv Ҡߪjw)W I NitBAHBCz*8D Db!$^)MrtsUaPwgӋ4BOe㥕t:98<ѷvnޏP@]Ur\m Xg,f4` ! 6m%Ia7-',,(P3B򦶨,ofU5 9"ԴTڪDcQH`=,&}!1$ Q,"Q]pɠ@$E]o-72Qt/޿rfBT_ 1* Pwo{c>vϏȄAԼ,{խ37W;1 ֳ`aO_`EbMA+-֚i£״)ZH]UߝP DuQʣ%x6;ffg,$ fya$q,6:q v{~ov͢(>OuqZE,+; Ee֗kU`}]UsWulairI~ƏYY D *TyTxwZS/bO?ԧ{{uG?3y.N_ZWFswć8Yk{V-\acW9LfOޓ޳*Rq+T,X_"0f:5&=$wwX e+%p睵e]3)Ӡ1/ @*? иk7W@{W`ƻsoSvKAżp:@ґ{i|'u :]8nQ$B@juM)<@ !5 ,D CRHZ[gV^}ӫkF08 (y %+IfI:²pԒ+oMh+@Txu 1@D ||uoyuQ +ɯ~Oܻ}ڍcOݺ?w~/?KH5#ƐjZ'mlyOQketY7l+/)|@+hoݺ39(7Ic,(EqRҦ[eeWDw:KAA|yɑrsY\+!D)ެF%jgಪ'q[=z3 RJO~L߹奤:y<[-&AYg2ϨP>[ؕ{~iwdRĆlO-"6+ ud 'f?~(Hn)"Zﭻ_/bPd}&1[v;vJ{y6c UY⤶,M J)@d BJ">%@PR&2J1Jwl٥{?*Go޺x?]RkDɴnIUQ{wLJlL 9kR"F2*O\;DҺlJ*5h׵e&ĘB2L"D%( En&b#d? ݉ΉvՃ3.ACmf~_ Rj`H6ׯvj1KĥNJlj`z)KgC@DjԖ&`V0cQ_6&JQ bʠs[mUMSh27`K_ū߸l.u߾}fko_9}.nEC=߸; o=R%p<ʊwhޅʙ4Kw.z_F](=EUf8nդ={{{aҹᐍ,Z1@#+k#[P@AJIK&Z=@)V~DH$g1nxzttQ X",/"߹٬B 2H6/1v:TRMuN+הtZ;{`fA"0 0hG\2B@@n Ey!u~Ε+gN{X`ec>O>{*uӸwo_ri }زXHydT !  { !"L;%QD/O?3~Gg7n/.\Z; WnVwrL)bjj VG&}駟q]q9l.Z#7'E6,YUޛ ֖`(2/bIk/qRvc{ QadQ*+T+-|fkjQ$ :Qgɖs8Z~ZWvr9&`v ??vw۝<|ZΧ'ÞRPU,d}H@ꁽ",cE "*vi!̫ܽ}kf81Hf<ۓgNڛ_WOm_g{Ac-ba˕+dr`Kqv)|=Y,qV㢪h `MgpA9bYjkb@Fd?Hӵh:pBg'/tK^}>Cwګ 0HW !hBCZ)m5^"m[(t]{ /<_׿t`s{~xicm9Z,|u77('ɩ<+hP 7űK7; Ҋt-A*qc-H`dday5٢)vve&bwn}bIGKvΐ,f>GG$*ymOqyNZgWcq  ST$($FEH41 Dj~+N Nչd׿?&mml/#L&cxRVu0N{6;NX7(r g,+GY*I[Z8fnI'ܲWNXXb3]kQTk$08h|xJvţop$FAxi -*V @$k33sf{o.^ďov:Oo+:Z{|:sݮT@cZ[ubNK3nٰsZKԶvAS$(Aa V|ϝ}U9?2ǻ>!]~o:7"fUev8Bw Ȃ ~ٸZ̢jrKD&riQE9[Anul" KڄG~\޻:w=7`IQL֓l?,{{,ϲ=^J*٠zCWWЪ 92I7VN01E3a7=k% ~>uSqSsߧP 2>T!-DXr9uq &|JOVE7Z+`\fqHCDAiK\幹KP<"zE ߼VV 7k;6_Nbp =:6кTe =kdyhYi6шq3M\ׁ'[<`|q72T$C[cuzO|4drfX+ ɉLxm%VgM ڃnzs' Ҿ=R51C:ܺR(Ym92qBzZ4dh{վcdHFrY}O['*j& SB <+ył'J%q.{yY^mū (PZBg gڵ]G((`匰r3 ̠-(r &6s,N|A\mlJu+=g)Y4?v?z㷎P|qM=y{`ǟ^BEYbJж uϲ2lkP|zg(iyR:&$J!7Yt~qϜ]+u1Agzڭi3ӆNQM9KYVV=7H$J[B|_y(mvw\7̲b|/2&#`B˗c﮽o k\ŢuZn. O6OϲE8 ['HH`W)W\-H+>mvRbMF8N6!yB=F͊·1H"m7ccùR%5Za֏8_k$ "J Xsj HDdۋ~/ ^CW֦6+M?K{g7=i>7tSk,D{cέŭ ݞ"$ȥAצi5zk,z'Fd<@CZdh|bi HW= 5zY?}@5ΡuXk3ď|_kŬk57 $sqANyyf־ʵ4Ig|(6@V}?5]k%ԚA0W6y9A!j@gTϼO~ʹ;fv@+! T8QPPuX|RB8bTG{}K=w9%peB5}j+Ct)h)PDba Jy@(†\;™~< Wvf7?2rH7^;vxjM EGuډG^*vƙʬ55FX |JQ <#wmf]o,muD44Oxz-l.m WiĎ'V±JYLƍXFt9I(yo{ REQ~-N{6C!OM|+,7o=<-wRk8P@Kb%P޹|~~Fx=-K)g`ǾVH1"EA:u?fOZRD&! G& TcUe|Ve˰wuv6%i:GMi:a3,MYrj|,?>R K%%v83Pik^#¦~uO0l *:$QNCǚDJ,zjm;*Oԫw})옅@jF )P$XtK߹cl+o>65>2T׎&XpIbijxt?{T]LgzV{~$Z"_L/a 4!ٍv Ҷ\Yj~($8/9M [JF1`iejadфH|rֈ < ^Z2[`'@HkD3O 1{Z+Kwu([mߵ~3:1cu33M$"j?@' R8壑J[Y|cdh hp̭3?sfE ֕?Z9ΖVu0X\&m6CqJ@$FBM:B{͎؝O`ȋ!(P8G!Z0D /8)?|s?R|3]#~kk7/pSdF"HI0J=Kg]D;w=cxgfg{-&Xu类K0x9U?i~89aFрr (|HN}6b'KMKTqCuw|o-Ƿ?l&|Z^{֍HrJE (D,ePѺqIP)c LJ&E9iA@Uٜ_w!ֺP( ,"Ym^[k AU,@āBA͈ehF[ȞűҜ$3V#Q) _,Fa ij\! M)i iY'Z)ztji5N,(֌_0\0TƇ!;sbܚKc/ju+G/g`:YzmW+/|stc$ !E;Hư%_l΂x hBÒXiXZ.FrKj.3^9xPB0ئ;|/+Q)o^}(#*!G>%P^tY!^U(C{@uRHZKO#"PJ;Ή2 d 3'q({w,+E0fl(%" 3 8 hZ ;YO4|:Beicg q '"ϷZk8/*Pg4 "ؔ3qV B&h% Drr+CÖ2t˗r͑MDXJtl0g뭸µٕU/H^l󕧿{+_|lt'vݟ%1X<5N?|'$a#.3獎W3$;n3rXPJwoz_ֱ>kZ_С@xK9'@e`W(`xYaFּ&@DDAؚ\sDNA䳲RN^̌CBD ` X:NKJ Dl.M  AcE",@$:wۡ́Ccw >cD g!d8@ߍ덟s_tIOCBfD@JID:n/+Wo:rBU@B P~Mv5^8{lި\.!_cgI BN{a=\jrAf ǰܼ?ejca-Ptʰ~c뇁RڵYXfұ"cIDjRf15k.Hz+h~Q|*@+ eQ0"(Sf`up@(Y(DR uJk J-VE,[O{K+I?@XY0(Jĉ͘2 ˤdp?7#27mqIeԨPcdMiJ`uxaqOx£N#Ef: @1<=0 KUP ŽG>Zϣ@Y`LʳVx"2>9a᣻j)74cMvt{ҏ < FVY D[ayZw"Z```~GnNq:#5 $f1ɥO}{>T_ᤕ 41 R}s<,M^ZΕQFMC4S22qWUo1k '8+@D' ֙dP+_}8k>?Oĥd0'Y AP,V4 5?j 4K +0 h΄]2v @ c-N 6@ }" PI(M'/sM d.K ʹ$eBŒ( u"ց8 )8cQibtv@ !<&p(V\ &gn{M*<Uf-9DAEZ ;RvL>}c׹~mg:W 8vXcfDQ"܇nkⅺ:āqB)rͬ1(;?'~+yˎ(`d aq8f$׵청[׹uMA;*-aKLt"PZg APBpH9@ =bPa;N|ibÝl=`dJ p.D B#S;̩'cݠ#BLV5F @YA(FfUy 9Fqv(;qui;dx|bޝQsiC@ՓBi`d(gsVdCa cw*$?` QH{"{Z874)a17}#<~ )2"sy.}yE[6?%Wo0P%{K>.*:'7 ;yu=m+M t277y}Q^|&gT8 !ntχ TW72,Q=R" +x{1 $]DO?=x/ MʥpdL.޶״7:L"]=e"O*/_ >W"m5y/oZ:u_;Kaie/.]KF9>K㼾FXy8KZ,g`ҥ7JIwyt&3Ky_ǾCD!"^f?-WЍ_jf~J-^I<wVy.{w@ܗEnv~NSſg=P{K-QNmb T`X(vח8Ou79(Um&=7:ƉR4i&jsx@ %ъߤ 56]q惩ðP.WqFBF>թylwÂV!gvnxzut% :P)[zgN/._9ns  Y! :RCv~ޛ')С};ڙ=#_ƢG?Oڦ~ {?BsШgiȕ1x~ʲx̳fMMņBMd8M,Mzqr/]xmw?5h)emzl<5ORt}i͝#q2*x I aBUr 乍E8/Op!;{7`aFcۼ̷G'(6h|;'P9,Vi0_R{#a}Mҁͳ>L.hS QwoK<~;"w&AVc3~!]e*(!ܿ/^Үճjlʭ/WRg;jSć(G*i@++v*_xajw 9\ǯd&?}Ní\5׻fg ^k(4EZo" ϟy#7G3D!!*e=~~$AC+RTwTeMS}÷ݫg9Ձpb'_n O9(:ijzKT$A/'I0љ%Wk>LdWO[d~Ågޛ̳pdjO<,ӧpd'j=EX{︁„>?y:v7BvyZsV@iV[쿸72쬁7ƙC"ι xD8( dq RySj7{}zo״^=- WԡۂVL;J}sn}\9EL=h\9>/\&,ܥ,QS +wA/a$IKrU}ӻ< љtsͿG|4LVw_. yuX8,i&wIT?ֻRa6֊HiB&qZ(=PըsZW ʕ31'8~ o){e?htMJ;hM\wgn˝~@K[wEI;t YWMޟ] a]",4VEDZDHI X ,i_߹[kw)7iȗaz/t[PwTnw n.a]=GJG 1t4 wȁJ9HEk2xӳ~D! 'Zī"Y?V;> -/?]/Qb@0_;'_tjz7&f|JV\AcTW61zhuAI߮/JkCHsc]-E;0_KgO~?n=2 n}O2{kik˹!_=ǽwm,]*>];>(ΦO|=Ǝ#x~bς#-Y&g٤@@Ml8qȣ\ EFUXqxSl( 94emz3{w];rJ T:Fio5zkJūjhѷeG"π02ӻ#wn=7)|v(Xg&~`Ot9}]QXQ/@,]Yx؞]å<36>uZT)G}@Z͛Ѫp [;J x5[Xs+rvzj܅U!,šq=i9ilNӭ-ˮ+W:UTǤ B pJ+%@.; Mwr+z;}rN3{qJYڹO\a\::a5 FV9v^-LL DK4:k fzo"H<Qſo]EpL<#'kPE%KE<:*~6 44A#޶ʥ|re"!CT)PX#͍o{fe<%kl"޶*U[߰;y4{#Ck{'Kvu~~և L|+}_k^/W6Oؤ^b?Вeb2nA֗xcPMFkNTX#om,s`y e}kaJ\l.]R }^Qz@ )MKc@pqtOauǦ5E9'E@Ujvi^xv2*Z|=ADl鑡{f?u~V|>k@1-/r~emSʋq[m/CsSJ5FyKsSm|[8]Yv(kal~ׇ͹ n͟ScXw]ZKWOH6"`jQ|4!䊐Dm;ܥCf$sw+jjǍ @O|5˹B eЂ9m/(/CGU\N$V `.vRʃ֗.x6w;j~ػYQf9,qsY#s})Pjb3_ġ #^8Fh7Ԏv;+[΍5}Dې "Ic_=cuk ޞ(珌rMzG\tN+*(˴kqv:g(!I} 5~xt*Zfz ρdi{5wfPHsHŲ8˗^?|[m{h/ui;NDmGënsV& zfp. <Πcx CeX=f_-+BKN<'f pdR.K}| S{in@ܥCww~yjzxΞ1T.F lb̺,f'79 `I;/˜Ez: T7« BOU @@\-֓?0u-mdJzuiwufwݙgiϝyL }nӜ|T󠵹|&!츹 ̕QT `82IKR7? cX5XB@wQh۴x4M:L"Z2=l}A=:fB3WDy XA(_>s;Lh-;'OD޾Pn\CtEo۹sɯ * La҃mPBEtNH4:kUqx߇}ft d(M\}]}M` 0bpXVfOGjr/PSgĉ`R8|&}ݝ释z:n(1mgHk<劼<'W@D=A/¯;c哸>wrWLi{;.Z+ݖ︛=.cs$QvVގ5G0*ofgEY;WʢA/ߦч o + B!S:/V/],FGTKC6cPΥVRar z{A'p=QZg9N`a!ɿVG\- |ٛe/P#Ek_vޛ[+ɯaπ"NioҐ%Dwg$w#veR|՛[țA-AjB¶GHyX,>IʬS%+Q/͢1$ 82)IO} =(`rx#G56M{ors_Ro)=G C XE1YcNdޏmߗ=yXeR%/-Y v# #ڶ{-^v,ߔs%R_{,^1&_ P ʵN?XST?wqj]fq;I-Ā !kR&h|~o}/E}ܠ  wv6'>ؤjw<!Є;<4_T3'NMB,Uhv.Wߑ(5h`ƶI\9 g WRGP{Y\ B_7\ai2v5묹fo"f}XY`];o?hB _5WOJCbb]~_-^2s n'$}LneNY6/>YMdmK4~姡:6f;Mb9wY'blj憘TڍIz oΰ&‰fS')*J1Z'Q ֨)t.{?=X0f4%_rs,fI9uԮ|]fo 4!}k{?U+UG *H,Hg3}K<{ݡGW~+{!K£Dm;vNOx4 LUgiL77?ٹm~Wĩ=_]c q,q ] W I/BISo$emQ,C "!@AEi*<X _Ad1hŽ>jI\?]_砵AkU:/]UGr+ds>;rVNV=~9̷44fs,MFDxEHz~-OoXWħ_xqz^XZfO4=U71%隷;>{ա7B(Q#QD6b,~O ZU-hRً2z{﹃%qObUJS7 tLt5^4xc`3HcH>N}G]x"1X:Zj| !ݦ6Um\Y\p== I_K*@ˀI,6'apA)ăp{'UT0;̥(9Mo~WcސQSp_=|pfG9 ]-s k [8FmYVg+kQ.!g&'Afob1c}=[۫tܦwLKfs!cIէ U@|-_7J~phHcH vt.|j#cHvŨΧR5hlZ@̕3^mL9*qGoۋDz!4A˵ ˃2<67" y~6TKvc ';S_Jƿog`͝F"BD7Ξ/6ƇjXpmZU{z,&69}tt8Tz]G)Hr}} E'9n:c_>~,-Aͼ0Hbݍ5kHb`0,I*R^0TF0Ӝƒ%mH)@< s¥ݩdzo}:J. Ygk]jzIh7l.s[fi/;>Ʋ~'ûȞ{*#ȝ#xjFϝډ[s T9@8s85Y,v.GtcHl3sy׮gpۑݷ޼w"Uk}q} *^vB}|s*٠oF4ZBzfO.Au{J֧BYzM̛XYww6LqޱxfvQmиŸ|y Ј3_`cs +g^e/ͥkmc;*E..oEj oWkn{~}}S{g<<5[Ϟ^k|c"&z0G~JAM>vu;@q&uqOyr9`4 \[_Դ߁i!jSrgemkX1X7Q3 (Z3pUF(Je':!sč̄z⹫q#]G?cYߨ-λ,3Ox6!J<xl'Om/3p@ç.]%D^*;xAwyԛzrF.AЄ]YpMpE=:%uwyEa{|rMYap>GF%ڲ9/"9 @us ̠UFՑÏ/\V(¯zC [.Ԋs~wϝr |3 mdF lv+?QҥJahO|+osN.)7Nh*^3wCJqaI=\_(!yp8QUksA-3BEQ1!~+0]Oʘ=}3>>mX[|cf%}z/|;wrJگl%Ǐ'FV.FWWqodig?v,һ< .Y5:rp1*mN|f81K9 D}3{G1xhia]0:6) ,܀^gi X^Jǐ//g?w9(%:aيn®nDl'U%w~GڼgS#(Υs+ptkb5U OM,m>y}wƑ {cS>1:уփE?w4EDQ7ݟyVةr/50I: &nC-ga+0̻ūً[瘿myYTRxj` {@ƀ"y[s])@@ֆ%ҽǾ?ʝkmBڒw/׬>e7rs?w;NMPW]sj])973{7ZT0wOpV;@D#0_, Xf,V4ײ~GihjSTJP}jl zS;Ԏ}vm70'_[VM90K~=`AH{{][Qҁ5> Wue9|"5U_GEFV}܋׺Ϊ` /:*]NZU7uݾ}k[:BO{ G )M=wsO?zpWgӵ\˟|򶲿7ws{~핫 ?}wk׋k+{u2p@hh_>nM˼)?Cqڕ9#[7wY"L]g&ۂ,;LAߍl ĶꠔiF&~*8z;"h&-hB !M!_G(~yZYWQi_lnb:)VtxoK'wPog "Ft>rzK۷jmmqux }SNF^|l]뛹SoOu]͝MgS# .ѷ?s|{)lϝ]ͻsSrf)4_zO\-@A+O+'k u (zH0 ĺ7` rwO * ts_7Sr+??B'c&;446%4]EL2N?Z{)PK5UbƐr]v v>`70%`-ñ44ƳY+^_m}Ʈ觩;r?C(g?w?}vVsk)I}q֙R+tcy啕c>cyt"/(aoo&I,7|I$/lzJVCLjCGJD,3Co-4O~˙kH-˺(zu,Um&#"`_YU8R{'X.N5]/_!BrWO}X:˲ML*^^[~WOl,*<>KP+jbF ڛ(J4WO[ߧb.za+(aAI;4Wdq1&@uy@Dx,nV1r\>oM:`oŮōck0鞯 nkTKR  nD(R%鎩!4n$cScg=O޳]#KQޟMNmuX=5G&Ui-m-f~~t${d-mknDHC@E,$@1⬸7t o,Ǥb:TFw4ݐ /gtN=G+sX?tgUfm> 3mpe@ v\,g}Ev;8:E;HsSi}DoIw1 L Fzw:¹R~EcaXܵcjϮv6vc5ONVϒޕePOf,,V˟g=7SV['KO/Ž@O{ޕ 叞x`_8v7Mev".aF:dWxД͸u(ըXji<_FiX`X/Үð:z]ɕph\>uB2d)z~ziw4V܅H3 Nݪ216 slYU,Oovx[_QÓes%ON<WX+N˭\ksW*d=ksfR74"\O|.so΍U򁶀K[Isl_k_n/qgXd:whdѳW冁Tu{Z[lKNX-5^\Qϸ+ ;cjqq(ͨ].)8g |eT(kW*ٯ6lYAAւw{/\RMXQ6y`m%}`kvzP㸃 fV $,B _zn-s}M+~fLO?u/t6/C|QkI lB^G]4vy-;3c^[쮑b*o=NMx҇s)HDAyͯz ]]0TӻԶTCl_|Tm=#2,~6ͳ=2ʕXE߮vJ-x|6WDz)[>;"emӴO??ξ z-s$&B趠)wy+FZ7}ڮH7_m0Y\kvzRuzy9ҡsC|AK-V;?C~4{5FZi \Yk,iwV53͵o-Z=ךI%ra8OC^l*+/zI7:;'Sd( ZZ/4Zɺ:}ytnh҅֬K9ZWqQ]0WP2MA媽z CwrKq}DrW0_m{}"v Az!:jhLA&RC\`+c@83pR(Zeyv޳Wd/|͞G?yu5BDd[̣|sQBcS1x~x9hFOE4?`7UwsZ!JykqPT'71b+s}!t֛^|m#-pEV7o ./ZH0{yeubVDP^Boڭ/Rj|F57߁&U/h~˟wDVGDiQT @!;JU=P^> HRZRq[UL6( e=a} uâ""rq=탉="w'.vT鴻}hk+Ɏbpeq(fھx+l Hr=kz^kp?Yhmvŋf;#?O\~GwFr3Nţ#ǝ*ɝ7PA/@CI2̕x*Tbmg"!,V#_H~ФR#uP42Mal:p۵EGnF9xq`+-`,plUK@ %viW.wn Bnɋ\6P)uPً*x*4 vVR+fU*/l&KmҵtSSos'v}sǰs؎z713rw=N.)"3xO~ׁ(W9Hcngpfop-.@;ٿ<(9yFL­\|MluHC'U?>7+ Y,ڲ<y I`}OGskV&z{rWKgW5Բ $ޡz67\[?ot}}un-7:i].\&GGczK N{˞Tt$1i>57(E&vzّҮ`J!s,Yv=fyZ;[ ֗ǁOtVw˻[3k)|wwg[>F8e eqvm>ᤧX<+#sՋE` üU('[;jx2 d"rfH,rpg_mK\5{fϕ[gCAdL=1Z ldw{N5OpWvPeZnxhp;3=93*+3~.axv^c:*:6R 6ͷ ?~^!1! 0" zb H" 0@ÝH#BD@J8ʲE$I;3)GǪ !;FDR Kwxp",AXdP j/ŷr~`ZoHoX$!B 0 QJID@#Q R5YfWW3c֖V66&K H Vkj2<2:>=U"c"tA'(`0E@ADx4@X{RG:u=h H*"'DM`sf 0I+f[ٳ^ft;9`%0RXO\N.{8|MZ^tB:vARN%LS-V۾x3nt!!"q<9!D/$ &sN=س\36űu}DJk`Ȳ4Ol߻Y@d,Ba'1괚HG #𖀈$)˧N* ,o58gśzzj'>`=E[t9n HmmN߻p7 :y%!8 QDWe&D`'+ s{pAvkL ! d ck@QkBgĪ(XZ~ßv1 9qf+рٞd zef}vBro bpu:;$ _qLF[/*,^u{8#m;3QBlcmc:wmƼawm bL690Q ri4g: 8aWAk۷oWSᩧ Bn08 ܿ&1IDrCaɑ! 2LILv 7w-|@ܰ82 Iڌ ULj.J 7## 4Vϵ@{^dcVd tNHEk p>VV0 4b>RKT{fث (# $AY(^1Ցh5E^EzOE(I2R#BJ1~}C#aUmZ"apt#1۴ &U>#%B "'^ BbB^Fmoǖ k7*@ !)MdER["Bvaz10z6l .wwXha|dc+""ԕf 9EbH w˖\kZᖥ$-*T1L YVSk^?%'JWCD_*M`JCKdc05 I"Ʋ=!#ED^WJ)}1,K^uؽ/>߁&2"MwPH  P ) ݷߝ+$0Ix#|L$rqP>(aLɐAR b 9G"`3 $K*7mlh @!7 $:@Rc$#.>vSGRJaX6O?zWwtj6V/U`!غXKJ)Һgjm,1-2Í#%3L:UÍE"шZ7p@b 9/+/By"R񑑡[(}B)RHdHR %)l {CD)eZ-bRb@)eƑG/sϭT*smy͞=;B ~@"IaĸAH*R1@DBf XdJhhH2TiaNCcc)4y*/c 2I\~TI $ )"i`SJQ5+V;bGDII)D %B]y~HRZyim=AJY?`!*͛OsYhiR#8cܹs?O-Y䵧}9w PR8@]t"NıDXO{@KKmyrwѓǫR!9wO*-d k @"P(4H d }++b^UR)AHReZzplsrm mq̊i̘qj@\)z/e(~W hWI̊GIe[{K]$rΈ@H)%3 ٓ,i뚦ivoo'aڶ|gz׻lVJj/| j5yxUX* @[+Ӡ&_?}F ~ o@fvv?h]{5Gs\cG GfE{JaH6oBm(u7"ܫWX/[H$Fwt &" X<8qO;mغ}]ߠP$@[cTR*PJU EH$! !kVwM" 9V%!/0 ]JL&߾_patA"G>f2W["@)/_$=g @2M%ό3XgONy4=ji`@!D=C!d=nL,#'A!DI`tx874 eP+xxLc*ۑG#Ѩ Èb AZ0(W0mô,5K)əJ0 g UjkI)" D^~Bɒ"P & {O+mW0xJKdYGƁ" GT%؃ ƿ8 $*  9^,jdٮ_ZHZLѲM7J&>eZdjFcg3jR/U^PgEIhT.$)K))RL`?H)'|򩧞a`歷?}N2@C\'@O{4ƿG󠱋^bXoDtO?7~"E@ z`@ $R07<10B J)L˵Lesfa0e]tC&Q*A5bD<۔iAR%Djxhh`f FI@{cۂA!Z/_ڪD_җ,X#m?wŷ~!(%}EJJ-_(׵ T[y|J)Ȳ,!'?I'S Պڥ%`? (GgPr+BE{Ik E":ƅ 5 >ݽPs5($+e!%سf1yvAOeZ&73jjSWf:tRd4¤ IF404j1MuAF R !jR 1B%R}3Dp:ny7>O<9 Ë/JR/n Bpε_~EEg r g' ٭qw"ᚍ$f&nwpf TH!"^Z.jX)kECR@xa:N T*Vޞ7ad٣g*o~j_h69| TR)M6fpI#_d|#;[[3˲9cLֶc518 Lxm>I]7e:YsnxC!7GHX"iHFPhatYu]R$* D"$ 97UK,O?wN8Ag D"y߶m!D L{Ռ/oHr"4Zl\id9)DI|oA3[83 14DsQV127Q'5uAv2j+*KN"b?!O\ڎmEaLBPZٲRA@b!H-BR Hԑ '>wCWC=z衇tqK.}{… 5A}7 K_R_WODkXBRv8!RDqC YTcgRf׉7wN{샏ill 2fn8V~QB65K3e!G!#t*9H&[E%PA_! I? d(GWդBDBQCCSN9E'yli5k4 :O?#t-?#o|Cgc'49[`8Y㺉I]Rve d2Ða1fqIǦx1jt9,@BrC7$;Ҭ&‚.$BPR(DDE1( i$0HJMѾGqw8RJ!^wu3g?(~p 3fظqw뮻_ k__%KbW&0Ԕ@ u{=[XܵJ_1 DBMƄ9ѵrAJ)"nYx,+t szGBC`KP+;821ܲ!P3 Mh!-ըJ&sδittO~- o]2zXng}gx㍣WRVo/~իW[eYo @ H!0$a,lnkQF45h%/B%P()Ҕh0p80(LJ vԊ1ӲdBE_!gƐ,H%#STr2"TRq$'^M2cՁE~jSnvp7mtWi:|gO? zCx׌}M)"@MG*M/ aw4˒avB/UHU)M 6dxVĕD^U@q`X(ja{ՒX<f9r\`HD&zr5c-ܢ"ڿRt.x1~aIhY[QQ٣04B#JP_)1AE@ H~4*k/L8R$Q!2` P"_Q%õ,RP ˶M/Ѱ lXDx:Z,x: ))qc6c (=1R?PGvaDBK,uߓIvmҦDR׾ Չ̒9xU)%I ޤ5qm$(81 1B-]x"1 B U1aARE@UhŒfeQfh2󕒨AP*E2 D_rm0M2n*=0 |Hdʔ)7o==4!v KioEF1LGا TfR);́4C>YwD) RR*l{g5+ڜ12I\< *|7$:FBQ*}/aBjb ~" TDP.d:H_7#{ v'NgO: <Ë-zg3?@$Y`j ǠWxk}0 Doޢ|l(͋EBa]'x;4w>&Cb6@I,~XF`[nUGm}ez6T5t󺵕|΍Z_#Q.}d臞2YWal6e00]SHLӬ@Td,ތ;ߎ?w .}eOѲG/RNE$`(ǚK)^P'RZPܲѲ@m(B˘]8UPyaڡjyTLGn%BETK^>zlG$3ƈ((%"d!^/ذ Zu-lƌ_|[nlk{A]OJIz2#ScwH@L4#]]]=30X PI 8U K4t3F\׼5N9uʰaa(ihč%I?ʐ5ϯy"],)Ӧ"3B"bJ!熞ƌUTŢ~m:/>sjw"o@B)bhh0DDJH1eRa""K( i9&|d[TV*WWDIdtC7hь8 IJ! \PI2lM" 4K)1%$C)Iqir~9sfGGGwwfRʆ.K/M&n7+ -r^D*0=##BYcK Q%r( N=}zr;@:vT*[KYh9}Qq[ JjDCC?0 m۶zV]{O~^z]ފY7Ix0 0 BGq1EM$ftaG>%PO),VF6m]nE l#cK!gΞ:%nm[RWk^R-dX5ud2#!X Q)BhlT]y~ߔRvvv~C>7c D ƪ._ȕ"RCH*abK{ '5P*E@0IB "̱= Á>V(9ؽpÉ1R?4^D~wB$f2B PTDJRyZ-Zzjv>?(5\<:?1IgSm~d%+)aBR2$"HO&@DhH FĤڻꮀ.4M=HK\Oo DJY*8쯪!Uq؛_Ogi8;P=Liڈ!')$TJ; P5F7Q75Ì2&Jt,hmHq2 ƥbĹaxP(w綌 o~JώaRB _ҜHR) bD$HR|65hcAO1^/|gΜe˖WG +ˮjnWyw~db}?0n *&W0k=sON$P) %HRHŐi$nq*$6 ndDQKGn%ܱF%;jEV~4 /C .@ID($(VPM q% 0DT"142w5_),я~_rΜ9ju֕J%Dn5P"o;,:M?E3) =R1EDHʓ Ee$uxiiDlP6$X;\TIV8k^s5P~Po0*P"dK)DR)" $I EM|I=SV,YRV׌GD(}B "41HD "H}?)?KD#Ds8{SkA$4XqxUV)AMD`~   #NDLI PvQ4' Flh?F8iNt^>= |,3MSw= ۵p<%ƐF"W ƧcdӢHnlg\ٺu}Csk&YHM3jLI $P~2DEXC,ٶae\1lˍh)uRSEBD3f}=BmoM9 @1M:Ie EXѮ4&IN!ھTR&% 7Bq8WJ Cd42:RVAĝx\m[ QRkxSKsפL*n0*T!$ 0ioYh0 #nloc9 uJ  Α|7ڦxq_Z=z?4&c&f|Rӳo{::NկL*ռj(P@IRX11&= )R0Q!0f*c˦әtkscsSVJS%1Ͽ+dH)R24šb BpOgZir__,BL P nplc'*R6* %%> xbR+g %A1B@ ÑXǺUW/~Qyt蕢'thŷ69 @H ,ƥ=,4LC2PP.I] hֱhV j>,õ b,Y,p8#)U)y~0h)E8v6b:&@@Dd*ݵ(A``0nRL7.@ -.J=}J)ҍ (}Ej,j:,ptMT<ZV5@"HsljXDyv"VV4  q@Ehȳ02)R)$WI` |oBĎ)%A! ( 1nxn*B *4*L20 5#XU+Lp_RNV )8LDʮ!ƛfM|{5;o6o|衇Q>?n]bEGHDu`< C֊-Q/ )0 ɤmU'LM>= CqV^=S !4eۙ"A" &;3{#RZW fH)a6o\RT˥JTeFL6>}Riӱt!)57f |O$l<묳L0 t`Dt衇FP5vaٯk3 z_?RDkn<㚸קhc=ԅ$})۶=Y "@ַm]So'5iKۏxMltBskڍg&GRRUkR1(,CƸTbڎD#H }PҴ$Rc;_i.P,_2<<Xu_rh"F5H[""*b nOU!/- 593ϟ?UZkػ{ǎtz뭷>'tR*Yr-[6lpqǵi&U?A|5kfم Ξ=[h5]?l+l+iv"YG'>R;"E5t4;c9Hm;*\D&lOeҜ3Dt]'{p~4_.UBE3=rxϟ>cƆeg?cyDx,(Jeuvv.^x˖-z}9SO=* ٶ=88.YdʕZYrWqxjyDymS_uv^) B(?, E#&N:ȤH R﹟`#fC6~Nm5:s҂n|HƢ \swO1n鍂B7?GV?ض}Ƿa&XU/:kJ :}r"d{y^P>yfa<ʢxuQg٪?S|9> ZZYfM2h4٩cS:sc=Z#u[zgq1Ǵea}nzikD1cZF" )+J. c%KY$'0z~>"HYyqjBΔ="5G{>Ԇch+$p 6@Ooy?_}/{J O:t>b='_ѵmSoAԖ'`[87meϼ4tsĦvݸ|Q|[[Ԥv]:I ֺ|vsimmh,X,\'XzHD:,KJooiv'ZMk^Pݿ׶ADBA3OyW(0V:nvolOjY,a'xcz#{[8l%D $ZG>+"%2$0\.r1ybܴo$3+l-xO'ᇡIId:ǐ?dc̓=pUYMY3XfPl2/Ԯ1>ļWQ ={*:k<&|֭sϚ5kj搪GtT*i)wqAA= z3(5J&xk~ @mS:(ܩɦLp̱uq7:t1o7\Ί:!sc=6DR'6"'uzG߶uÃ;%zw(F#f2N,W'2&͕.G؊u3g{3/M%dN挱?3m۵Zg)Gyd"#hV=S>&T4RJ0\mllLRA At}{GqD:ju__+alZ_#JnBd2ϭT*'F )@VX]Zk[I]9|isJ66!V޻KFS~뷮8vG%Um8>;3j͟(L"Ɇ7FX1YS6(MI\6\d`]1~,^oozEL%k>106r;*<9C @N.׫r.{g֭[7mڴC=ZjOvƠ\o^vmJGڍD"---LT*ikv\}Gyg<ȓN:0bX*z7 q\,[[[=;RJo5t?AC;H11=[Mi{ǰy&i;ؘlknK .]ҀaˇHurGs&RƓчŷW T!J9xfx~(U2 \n@g<ԅk=;"a9G,l h 8& ˗//J+Vpƌz+uVu{zzlܸ1H_]a---B0 jzF)a,#jzm=G=jc.666R6B=4ֻDJ' dTiǒ֨"fkKI-#yvU/󥹇Ll=ޚrڐ:z*Rg,Nz+Jƞ‚鳏nzl`"l ۠Iĸm~씶K?|տF6 6e+zL >?H$N=;/Hh\a]k,\.물V P \?5^gxjڢE.o~wttsƣEuI,j=m>0.Mi2m%66%qY0F\2̱mm}ʶU5Kb;*)M)C1C%3`[05:%j[Ag-%VeQKn,'e'bm~翿ݸ堦۶H)? z'777O4I'sbRʲ5kp |޶m:C,˪VjU1u3l6f T*|& 뮻>|\.W*HmuPϜq7G!DTrH#nX\uhD@ҠbD*>CDH[Y+6m+?\ 03dԜ?;q y}1drR= {9-}ZuV'XӋz}uK)RGkMR.hΜ9aرC33gLRx 'tMW^yc=m۶mٶ] ՝:e7ac?#/O`-˖q:F<NJdOJ29W.*>}quV O/71 :!i͟~qS!|%d&|9hr8]u>4)y,n6rͅW:٩dtI vfk08N/ˈҢ۷& p}߯T*\rQGtzƌP(K/=c=?9S(FGGuxPS_ XB^j57q=布cɨRk{> w_.<ݳXD)elׇ$̟oAHɨ1grT ){u#%S:3O=ԻEFx'=y#G?t a}vڄ"mvx5~ӦMoŢiZJ)tH$R.o^T4Zgtʶ ya0LӬo/O4ko~/};ַ222F9: xy>#r7QY " }t\+5a ˴|C%cwĕ_4Iw~2y\ۼvb)HCO=2C#n97:BtJFM/P95}-fH1N_f󅭏v˭hvY?o" c&/|u6tx %FRT~ YV$۫hX,_P(a8mڴ. R/}K^xwO?>쑑m*|`U5;̾ȾzATGkI0o$]3,KOfg_} wnx斩' dq(֧pY탦8 &-) B:_LcdN6o;8ؿj5S|Qҳߏ'*0rX^įc㏆~~4}'l٢1: h4Nkv{4pvi @SG"ŋO6-qDte%IZhW*^}?O׾#im`.aW+~OaS&֘v@JbPH]}e G#`y]wAI˴MKW|o/MōT;=ǵmfpnr"ORM4l SDu#[<_n}kC^/8׸OY T^A܀<9۷|AQ@*RD4444<~_-[vWwvv2BP&"H0ɄB&3OA:ʣJK)v?J7J"/̤p结ۢ#fU1iW^ !eW!]#RQ(#X#7il;xk\  ZэRwӣ;ZtwK{{+ƍ= 9t:pYf!b"K9Q~P &=CWg6n .BPZuvh&uDPA DrmwqMwqh4t)ܰcNjӣ^ehHm")m6*,CjvM&Wu&dRD!bmٴ&fuA:8`{:0Jݭ777kLrOOƢ^]=ϛ;w_q###nYŋ̙db\ꪫ,YK.+ N2J%N˿G??ϟgt\.1Bz+xtE 1ӕp,3䁔H E]Kˎ9-#%޶Sĵ%fCʲ 3 1FKa)̔k*0xATA:Ea!hRщz DJF/L&SǙwXo\[6|>juѢEavm˗/7YT&^ݔCAjJYm iNh47孏ۑ,mZ ؔ25O=ʗuHul’ `D58#k3sޏ 51@])S(:kP(>2fדH;xOh"*|>ϟp ӦM5kV<hT#C%t4N޴_?O٬7鞘7g"D!Ȟ#n -s>ZP5$sޑFdϽD!YXT辋}]ELlLٓ[c"$SOsjU`k: Apa544TU)u̳yMѵ*ceY:, "R~˥DlJS/R54Ƞ+g?"K4 \S#Wog-QL&-h<P(ǫj4oMÌX6V<3ޗ# M7TױuXvHn]&;Svb!S/l+F!@\?o!ČoT*5c 2ca!6ݛzrQ ۟i JhŚbwX5wp 1 j- BXC9T*%VqWWXK|>kllԑ55ҥ۸/XS>/Y(y䑞}O|t_W\dɒz6Qz~?i v+'q7 sÂpaYënI%-qf2` I  =c%5m`vWbMwQH⌕kbpwȗ0/LMǹebs *" ȍ8CS؋ח%ESq9iPE ]EI=tuuuQ{f}[T|ɾ>]<39fMqG6lX~UW]H$n뮻nΜ9^xi!:9o}ҤIGdրaH$t2t?7CH20PRcAc8x-o!%57wJ!ɋ#ZD5glLm體= M\d&N?"1XsŰّ pΐ5658u^kh0l hhu]wwqGNqZoYfmhhPJY{ivym@)8M7ݴe˖o裏>yf ._^SiLF;?5裏Y.0IiZ]U[jwQex}-‰ ~w]YDگT :V>hgV1cF$)MQ7dR;?\ѡy?_wu5蟈ljb? 7pviXOSRGydǎRJY*АVzm&5sp[[ۼyŢFy-)V$+U POA&"_yjYi.Z95Br$ˀ3 t 2ƂfSL"2MK)UQșnaYlo5f$I;o]S9“({9)'<44sxCCCַ.o硇JN<ĆiӦZjŊk֬1 cݺu !4|ڵ/BjNFFF|lllԭotMRb'GN?kxs2+7daç)w/I;Oz1n@SqcR4Iy7 all!j" hTuLiJ4{Jzꩧ?p-J{3<` {}~un߾{圯XC5Vb``@J944ntt4Jb=h͝~)e0 8˛N%v@ Hśn?㲲#eZM1Guet@TS(s-nq,3Z'Z~dW!;6ig9rЛ.r)|Z4iWɓ'klhKK˚5kOwyzNӉ#Dܼyi\rəgnݺSfY"6mZGGGZ{50͛7_lY&Ѿ0Ɔr\V 4Im۶|] n &e2PBxyKOȯ& ̆/^7 P(HDKjcKK{jw-%tMu8{HqtfEilә:!ex~ǦO~Gk\GGG55駟9O&l6[s}hÆ w_.Bjy捎n߾mԩ-Ztu׽KvXO>Y,ST<ׄ:ru)gy殻ySff]7cvcf-% .ea{_!i[q1/!]! @q#2:*99R38w]:9w\ƘB5i׿N:5 oQ5I3󙑑uX,vW|Cq]wҤID٤GFFtv_׌>؈x1|6m=ܳe˖D"duGvi=ܛ0p3Sp2LV*յk^qJٳg{ׯ|qtWqڱ1MnND?Oϟ9?Smۖ\.?O=ض].#n;WZܼWPgB[h 0nJ3n(.V߿ Cq#l˴3,]/{|g05?uqs#8߾!siv(7cmuإ[{ws=˖-[`XAMMM=_D?Yf-J{ҥKh4zQGUW_}u6Wz1lݺUGxu^x\.ر#adh$ve͙3f6R<8usԎiڅ/Wtu՗>N;?O}hxCV|d9ܔN׊HyQj+&Oo9 xEذT*'xbWWׯ~y_nidd+8?J*3 .˟z{g̙?oL&}߸q#J 5PVKzFN744$˗tIJ?D9w)iG%a-oiuG>O,<~f%Wp~۳6-0 lj;֤TWa"%d`Fc [r$wޕ8zl}߶z:XCz./:,dfVrTNBr=wO?jժOk֬C.5G1r{{{[ZZ|c B#}_sX]M~|O8|;whNagd˓s ү8}S9~?sމgꏿyXXLN$wiaU->'p@p Aht9ݨZvitקtzV.W^;(yDT*KeFOOφ eYBtT 7oN&\.˹D4:::w\-Ok#Vz@"Do( 24tRS 127< Q,PJm?ڿ~Z**ގR4wbVCb*3DRc٫,O,^XET* y^WW)C q}~Q4={v˖-nyя[ӫWm1LF;mRRTT|߲e˪U49}#L6-J{w޼yXsD>+W2?8coIʈR!D4@ݏM'}qs }8n"GwR -O !pxyloo^=K^b0Կy{ޓV\YzDcc/||h"\n߮INhVۼyubX.!D.d2 ,0 cنa rb`5ktww;߇䑔V=Z냞 iy: "v)mxh:!f"Ƨp%% B Hմ>1cF 655էO!bX?~ggO= 3fߧw:0-?en,9:з"zn0Od[S,>VZoHBe} x> Ôɓ'αz!!mjj:5GۓOIDATϏgot 0a<_UE,NoJ0@# ׮,l#%/3ړ UʕPf7|@*9P-bqǎmmmڛW;L2__?i*\n"а"ݼ[tFHs뮻4t\ֻM,3MX,>ӜR'[[&O _q9s [ZG9|~smOT_/ -ز,=*X'1u#azYg-]\.i B=׮]cvTҳ5ܺs`ҥ^{m__D n r /쳾v{݃Cہ*Hţ<UJĒ#-DM@i^߻~MM3Mʭ(P(03 PڧpwPJgqܨ}ç>Y M8s)_Nr;i+3"tX ԈEH) gh\1Cf'ڸu h%L mܸS? Mz5::l2M%={ﵖסjYF8; >z/CzM>}ŊBG=㺻[[[GFF0ljjJ$=_bou{j9,:nFyqOԄw`RSwث2bsDAU*%θmz1 ׍?m{GG}!7˟:p1L ] B?@M0Ouѧ+Z\)GhD@G"N]JT*é}vvi>O>ԣuYS#8Rh3hkk۰aC\d23fhlltt)M6M9WC$Bg^\ws'ҖǿԘjͯYRMxcPHUDʊ`b~[!BLtŦ‹r'ƆsJVk~h2s= ٫S70ԇꄏ~h+J>Kw;:a3j1:V}>S-Ze˖u?ܹ=ԩS۫ժ8<^da.?WOtӝK)?ĸn#r@߭ZRKc1aV}/@w#P xoȗ4X (0gu݈Ko7߹h_bG[s-~vɚkaIB^@Li}z$P/q3E0 t%Kr9ι&RΘ1my=aDѨv}[nEϙ3g q~a{(EA0^‡1 ڛEA8lD  ÉOHz濕- "ƭO_mE2M3O]jNϚ)r2䖈}%Ɛ+g%!g؜[\Ы8aRg5ϟ6KWIFL*ۘ={1ז4G;Yh@DU9 d2)(xw˖-ͺ8^ضmeYg/|ܹO?ڵkhǎ*477?$ΨRKax!466+{キyGwttk֬` !D"8`Ŋ{f?7\1"~Sȷ3h DfNUjb)ƔJ\*)tI^i6P/PRPy DV.EƒS3 D B:eZ)o@$tVTtJg p]W7Q>'H$JgΜi޻f=KOtV4?a˖-ϙ3mڵ֭K$vܹslCYFl6{G'pȉTyя3Mhv0C%s@Hb 4"bDv\ϫ^-itJLr^4j>NXg3I%B4RmFJV!9|x<\,rP(AKӾo޼ٶxBS1jz,>i/Jrd29gΜ|>iӦbF5n[[[<guWzTqg}vͧiɺpŽt:?iҤ7#?f#?.H2[RJa&W*j5?[iYJ]Slz娕q6{w2T9q 4//(E^PP@ȹaPgagO/ꗭwQ`|,֚#~EAG{;& P4KŊ㸎R1b&X|d&```HjݚokΩ.O^j96#5$I Ci3q( Ð)$Cԃ EdDrhgڵX,qۈx)dt$i鰻vYv_ͻ׏'*"D:|WRIJf9(COש:vI t9ך-1DU.Ѐ?P1Ɛ~_K/lH0IDLB#0fTT #) d ! 4RĢ |mw]wO7Au$"{y -nHA78XV]4$Rt)j)ӧ<)a5~ Q_YT (din3R)4L!c:uDD1H)DD޶iaHBA"cerEDM Xm0DP 2np8C)9g 3 D28*PEح>uz[{ыl߮BRO/5:j2 MS(Ulf3 đ ҰdPi*"-0 \67qWbB "PTm\OgKDsn2bj>ܶd'Z>:Ш39j87CV}(f H DPJ `;;`Y`}N+$P )numGDBJBik1λ' O?֊8C"8v I s,WeX IbD2ѻno]X)~ӭw?3a@a?g<  D`##R*@Ɛ"" "8B)) Ak|UK}wl ӌ'L;…ǑMXZ}00a,=ӎ;s3"b yc* 2PJ q0iHkP $pK$"E( CmQ eam٦a")L)EؔK)A \("f\2. )`"ܲ,Ӱ@Zef3!1)BΥPx>}\nu_{nqۛ+ #E1n;BI1PR2L8׬ ")F! koy?m٦81۲,ˑIl8C_I9JwT +zG;ȋ?򉮙DlQLrE RB)@${`o ׏g_A) ` cHnd())M4" u2 I)%QJ:""l9`A n3"ir 1@Hp`dR)ƙ""`RhG*[㡸mN:Okvz=7P ވ稔v@ bm+0`DB I!c^&R Hߟ~3O>dsf ܗDjkȀdĀbLg3`?_5`EM{r~h&iRƐ3cٔRiq%q VDw=&%Iivc Q/c%))OD$B)!#[*Ɛ-_\7 "a"rC#$("DHjm ۼjc'FG/~6ꚁ/7mfp 1HgL锚"BB@s)T1E1BӲ=y^/7,l"kH r2:2Z*-!RA׼p4_ھo/W-J%ed6ѰRa2Ƚ_*A?u<& mm㜙a[.W3n=IIR֟g{cu K DJJȐ1@4,Kǣc͢AT={z$C8aYX̲m2]sժ5#ÌK"ŔBO*$6"7sVaXe#'zܚMoZҕ]xک6s׾}夙S/=gQ$#ɁLBAH!$*Ja0c4vl6* TП冕ˈh``@i9R$P\0DipG<^mjn@X-ԐZr_:E r^]m@*Ic݌ 괧c<)˶6 CDP**Պ΃@q%Rƣ5^)'Ҧ(mz/|Ԙ&4RhNﶞ%KlAH41E TrIA&f,Ŕac79hW3fO=ăg<\+j#D D0ƙQ@&  GTmKRH8aReضeOB(3]UhDs &5mj,i =DVmں#昡@(tϷm.?zCaCw=E TBTOu0J;SE:E &QW7\nM7ElCFܘ&<geU{pcչ{rdH`LZq""DUR(!Eq` %n?[~el᰻ϲhEaL>KEqaFn~o@ڠ|ւ  áպu7>>W~?E@ _@j,ݽ 5sUNyޮT1G}W|yjouss3Ώsrz6F(82*fn<( s!3spo~={o~u33S!X;",¤L9vA",c:NoMy}_w`q)Y Z($f ,!<WU'b_B`L䂗 āK%"8Vzs/̏ɉɬ,,QiFzGØ(Ol0?3>L6̡X͌LRHViml(Sh֯ޣS80.UEUHۻJ;R(ub`;,`hY_'K|եIia}ckeu^ o~~O$T|da=SIm5_լudjj<@UyCCa18v!/j5kKS ЬMo8bu2!-mǂ@JmG)XG@@kDRY]uy[wo "~O:V$^^^R:ND6k'[`ze)$BaQKtRF<ۮ8$B:uvǏYCN)|or^"O4蟄 R<""Td )"Rq-QR{O9u|r|rrnXƴQ_ܷw2FE<;}?\d#bwۥa BpdCmCrwpUa#3"$" 8qX :`,FIG?|j?6`sq~ Q!z/ <-AkSE(U.M[w]oL,~{\ztff: 0zf+eA=']-~ ;D@ADxأ^`   @11*0Ccgc㭗}+]ox Nifp9@X$"@F!" BSO[,ۨRᇝ~g4+HOM<Z9 EJV 瞍QDCwFg'!g\dkms[: T,P`J`,r4d QC=GXkIFFWȕQ_M4[тrml\D#d:Q<$AH+T}jO`PQk\>{;K }""J49)G$d=3>zEYȶ+h,UnjYXN<Դ6h ;ۭZK%(QJXZs?͗_{5oƯ;֞i_yUiE>Hx:eX'G.Q|1PFT"DN^wDw/ d4`QT""]`"G];Q"V۷}7"̺Vw Y(_/ӋR!ˏ/,GRڡ۞{I]'0'O]XJbp~0bP|9 DػgxT (H[Vwq6 `0s._~ں^ l3ꇲpAUB9"R_uAwc(zȁBM(EY Gil^^smd PQNM w">7|Jonn5IID!"Ut [߿/7?}7zn.˾O=~X^:/sN޷l[&Nt *ˇH6[;.;-)`J b`@H=9(z5pAYF"ȏ2qf\bѱzryes%$0cz;93H]yuM8@RS@!!Dix &0oe6cӟGo|m&MPE_잱-*F"DTtbTZWmp"N9T+" řF!DzF#1(۬*= ۤwQ29K.ycԒz.!$ TT #xS{\yɥ?25{?p=yvnf|^FO[^χ{ŋ꛿avb~}ixٕ3ܷ8t۾KOd9ӦeK=q污b(}`h⸌Ԗk/(% 3.RO$<kއXx_R\ɩU뮿.PCeL ,IT f@t R`шT+~"{g3W^}M\A|sn]Y)iض:@RD$P &d@`rj''gNLl>HD,QEp}G ]3w|{ݚQAmzK>vݐhKKϭW}7ЏO|k\;yuӯoqA"ԣo O>+^uwD_|9tnzJ]T ts|'$B ZCpJ/DDE\5+l(HV3lm3,7AIlSS- _z\,R6"/~DDiʔݚTE1G[kإ^5V/P@6l k'NCZ=jcAbfTx reo;]9$)" E ^{fEBV35H|˯daX"YaM:KV_~қ^/97pGg?u/;onLlcYsW6^8=?cK;_jseqi[3{Q|4F ΧqR## {f@X}!"V =kdn71qf1N͕^!2Q3jj,cf$B D,ģ-QכBѨI67jӭсA6YQfVY.fCw Y TT5!gGk^ܔ&QwpD&R1 "[`Ʌn6o'ΥSϿy' hEchE%As7_k^tZqwz}.kͼ~N-.olloP!6XrsY_sk_Te0ҺGj񛯸NjSٰߪ5{t]kMp`_V$ DE3!0(@"B(0Jcl6x'{VoH 3~n"Us)c )PDa(*UΒgEnbj6NJ/z*j' " qY̍.9+Ӎ2*B M ?P-}7-oۿ_e/ah=FDQs'ĵ,_~~~uW|KFyv"3xE(֠9g1z nb|y&~k|-}Wf{5{h7AVrkL6%y|mjŗ[dFYY33EηZ&,MOTP !`U$A@a\e'"D"#P*"*]shޭ=s-V!Sw>ss{!؋E9}*V :P)C,4:I4\%3R$6lz&aGPF;5qWsZTqfD+_IZH;\i_CaP::p8s7/گ}>3ِM jd$ mtgKkc1W6r;`iD!ĩq>T_E0+Xs"+x/g\~M/%O?'[_ꗿnGNx"4.il45eB!z~% Gb!T XʃM|0H !đ]˰~|o`e~Wo>/^>?zV^U9<tBUۄr#]?zCw2oFj=gΏ'ZGɃWV~ͳҲ"u\g(C 1FEd"C S> 2hc5bz} LF( , ?9ֺf֯}քv#ՓCnLae)= Uy*0K) nf(2&IP@D)bmHhO "dDq@Ȉ ЈRfo]׽v7iEZׁh"@ZFeHnfA3`+OO;Fd!)qP|G^qǎ_ZN:E6aR~L}Q- BXPDAT""T^&PDZE! 禧gL=ajY^|"񕷽!M !6@$U'#EkmYf—t&X*"}P6ƑoúbGgz}Fxxɢ@@yѵ4v9tGTKXk90 R&}a`a Q* B5F;woo_SJ7%{1&vKOD %Bb XF<N{@h5 F~9/??6w~w߹ͷ}_7|Wu]MEBfl4.9tfT#31.Zy+  zr%әE v4AC)b-# (pk}i`e*CHfzw%fbm['?oaBZh[a ",*I6S"rQXkٯޚQ^wZ.+z9g=oQusz>m⼠ TݝqdQh`Ej:%B1UBJ {L,H k?kw_y+^pl(NL|"`V HQY^D+EQTVJG)!(MBa"I_xw~ݳ㓋G\e׿k9v/ "qs_yg6"\3:˲~4JzE"*fdED ,!   X?0"#&,3C5yfq^MJ5jfՕ !j _>Mem RAv8w9IE@DʕZkcL5mluO?XY֨'&0ްS/ӗ\}ҫFY3ъoN)SGR}D)"918!VFίƞѻQg*_"E@ )b8[Z8BpR0aYI༎5^@ Y0F3!5ϿZ :XH~c*8/ xfH@F)XzLj]@Q(L@>YFs *!=`?|ɓgN7gg덦6ak5^KC/e4.(bFU7T*JmeA"!xAYηz辿g57ҵSgH|Vܫ,&f(≹W~ݷ3r%H"D #BDJ cZk T "jE Fί߼ﯾ^[X:h։c!0i% :kmX@w"R\޹(2DBPh HH D]XK _PbゔE$MD `n!fRtcbarbƺYH2P< " 9Y#hH7|78Zܻjrfjb"+F(!cTh\Vtt ҩi<'gϔAR(jcKO?Ƚ?X-h&55y X)TZ [~7Gq"zHD13KN*2Maޥgܦ-T,PD HJZ G?1tڴv}5 M,ӳ C EVLO[=' + .UsX+,خTӮ~&RH{ >qǍɷ^Q^ ״4H!!UtH"DHQUz~IY-uD2`;g'+ c4 XKBEn7wW6yR./ri:S3t)%(AqȲ{e[,7^1ỳΟ绝?4J@ZגNuwcs=|;4,V=h" Y+q9qҘ E=nK?q2nU13oTF( dC@)UKpj>fL>r}80>H%RiB@"BYQ̬ ;ЈfB`ֳ lR3"6]XgI}m<% gi? (vFӍV7r)Ifg[Am;ti4w(j6⳧eg|Ϟk%xuD2@ZRX(I9KJc¾"|)V֫.,Ǒ"*`0{>{'?ӧVV77_;=tM[8kF%λq-I,mEDF[gcy9S`<0@"T.p=#ƘHiMU&"JX;&j$,E&֞( /ZX*"ޡ&$pjTRZiEFǩQo7^i-YA1(-"î9Eg! Dt!gh)*sVyQgWr{+dR[Sdew8ob;TØ^xc|׾ej lcƘP(^v5M; I*yWR *YAJiM '~COi$I<2=5>9ٌ#HIIP׏#RF6õNvݍhTLL瞼=V#ϳ$, JJ)(x .%R`jZۿi;## HSIK)bUt ) |.HqyfhCGOMl[B (,I6: X)b(*3yTRɗ89. ;o>^:fZKT 8gιɹ'76{g/LM!>/\J+C ($i0!띎Р^ӱV@B, HzbrRjG/|s0 2(;.Ge7jI>0 FY&cDѐ`9*+hH`6/[]Q\s+" +Uw""b@a03#BpJE{>{ǿ|UFǍ$"C`9(qTT !MAXEG "-bۥ uzla[@" U뽵qҥ-*R:Meiˢ@@0nl߁l8g#Ѧ$溫/m-N\űrAP'ـW#uM~Ԁ/LXsgi!*eǭ<H?W*x @l4Hu%!DC8B{D sVe۷wO7>%C a>-w >*r+"%@@ a>#mfs"F PfD N+`< :JRHښ:y63gFE!Xl AF!($9aA DA@$ [Zƌ_lP?V_O(vp019[N}dscM{`(2i3a(58A 2RıIZRe;I8OJ[M̥X YܕnFOZmwo3KEHnᒅ6'hz~csH٢DTKega!˲!m[E8(baY)]}{?' o YiE*Fb:BfA I"vy3?OSf?VG,߯ I H詫ԕ/ jy?+Da.| (A+Ӫ%0D ty) D*{GOn~joBz؍ yl.qHLE Qb^S5#"6`pBMx{ })̙1E$ބ\HI ` 0 W߀" -{]yv DxX/83j=!h묉RE\Xk U/@ԢQ&IM(\Pa[&"0;VO]'[?15;ZU!XIxP1,@l`@ L@(~38g(8+ܤ@_ FoY?]%IV*RZKtDNZd: TclE+*%Vn}+JT ,D~֛Hp0ZYg]PB9߷$m ljiԣܖej9΅y2J)"8hE$zrb9F(VײX|7lw@_of(`b"^-l^B̦#`])m(5!T*MP!g&ϼ?Ϳ8vV͗J WV%WF "J@A #)8"CMֳ,k5~`a括rgzxUo%O~毄C1Z2`b^H)aԤ(&F~|b(BD "\}>zjhō\aYfA;oF@֦ݪ=}Qi"‹sn'VnK+f;ir"E NRA ;ns3cͤ(ayԣq8hjə}Gn>O+;p &i^H"dp‚Y(#^XT}:}0BALTPG[^4M7_}@R#n"tk*l6H1 JɛH`'q$ZnzoK< =*R'U['lP"RE1h.%TڬQ̽4Q O{Qng)xom%9xn_eGM_xu^9_٬+Ȩ8Nk΅F#- ‹{gZ8v≥YP)i$FӍ'Z8bŪkLj&&&8/xVge|џO#[m#$iSG:[*.kggnA&HUJQ<ǎ5/{ JT65z vDE"&X?5زIy7L/J+_VЅf *WF+,,9$%Jhjvr8ʣ4 ֏.Ͽ@OPQ |%Q01TQh4. fB^˛NX=⁃Qs8 @(I<+;hN=x2ix+2YXuhsYiyv(Bo9T$RdLSZ7SޘLD3T$eYs3͛.{Ɂ}g>9cV37Jcs3ӗ^hhl|q4("RimϏ|_Yo~Wts5uE9λPFi2蕎AV`:{ruw=oG?sǷ}w3o I9xDES/DY2LW=ZMgdSiE.,91u٨彏XZR61ۆ0A֦fQ@)w^b4ΌMNNLfMΧ0 V6? |Ib؇^L: o?<}WO蟽O"z^P35n';Xs{_|ZIjkj# *U9 A%@b62EQX%*4ZA(ґ1,,Y6_2+v sy.Q *nUH`٫Fy>ȆrԨAF/qDX̣DkPzdke%x3ئX#%lSΉB ,]ĚH0;`ZVp0蜯7ΖY$2I9[+FyW;^WԛҠߏFY:|>e^^y٣= i|Cw~?(_oxϻW=ojbXBT/EiT\81)eQ<E|o3TͰ4MDĖI(Nsq]<qg@dF88h~aXI4bGݖQlű a@,DofkesY_QN,KオVk@;Yiز(.c67tgY&efFe76;[eivl&sqG\s;;77fQd3;[=8BP@!ԨZ'Yp^ yډW6S#\^O[Zu=w}7ݻ󗆢Q'O'>;* @U{'l@Itfim7{ BB #X|H&;"!w^k\ )zf"TϨVlP!>y[Qm g.VBTJ,dѣW@B^;}O6KcrR5je0PI\֡$N1׷Y{f3*C_>G"U3eXSHC{QpXakklrfkW \`0hTv{|zfHs>եΠ7kI;"@ޘYY9IQʬyWפONjk}= 8.9kݘ&1ilgh\Tز7&6֏M-' hP(כzS{︧ Y6i__SIĩj3ͫo LPiDΞ71(YE蘵X*A"t)R@r[[b׽z/g a(ʳGl-891exDaZ w".( L`(b"ADӓE|:XF e %E A؝ӘvDb#ALt R59H) AD`hH!~^MAeK.Pzn i$a 3 qhQ*Dt0zqQZ@;~,P)T+D' `W䕇6WX1J^^_ػ5^[@@ D,(B[.I"8sHA;'̑" ghrQ*Tm'n$U([{`e/̀sl@A"?|.JfGgXsLl]ub(k2/V`s3U!WQ> &gNV59֚*. EDeYVc"(2Q+ucQQ=1@f=WB.`V` LlbH#,X #_ljĿ?/t8'yL[vpVRz'(Rr! Ul`4M e K@;?l'`,h븞&1E& >N 1GZjREQX[ 0KlZk(IRyK.=l䊼^%Ҁbm&+E'OHY!1) h4q mLQq^HxW {E?txo?qw}匉P>nXw+d sS[}Qk>ݾWk!V(, J)vgf4,F TAE"Ykb0/ʬ~1;FUWITL}>}$reND6wy#gҤ:B%?Bim`8sdYmv88Wqp[8&jҹf966V% k#s յ( G#+[blK_vF/!uWSd١g`bLR 7ȏOï\(ck)apj 9^ッ)?[olOmW/뮜qШ% mrg'_ؐ >Ra ev-/>pc+̉E's2 !w~4*77z? `KMۈ]~ɹIql6ZZVXdcMg~ >pI%mss- ٠Ѱ(*(jV+l:vek0 !IjevϯdcsQw76u_cgN#_<5əȴ( / 8Xmot~[ÿpjA{WMUS(G>//{;}> ~1$]zGA75+q%eZb103ʲҹ",J5gYʼnRjum%)ʃ4s^WJ+c* ̲OqJk riMW؞[aPHssxnqJ n a!Nڐ weۿۏ?PX$7QBb,6Vg@$hL4^%O_}:!ю 0i8q"mw;, êf lON%G"3>LJ(1|=ide @$)3DTIRSJi)p-oV(zV4oZ$nb8 a(L+"'ozܞ|'}7}7&]޽ƯW|캛n(z{bW䊃 /lt8VD%{ C< " p`"D*}]7~糟[[HdBHD^om˿p}*wE/>Dq~浯yBXxZv)Ij~|7VהN2w͡ŕ3z +k4jlK"IU3d_/.6/=zSEfZcpUpD̬P1g#QTZ+hr =HuSSSm|4R轷@+6Jx0iS# ӃVh4jq''kͱnù;6g Y08@G, GĆ#:bwowe_^_8?ُ}gN>ͫ/;o 5M8V'&,7/;whD5 ֖!:P(Pbnnӟs~Ǜ8|5:(JW p41(w?XN@ccr嶺.h8ydya֪n^lcbFqnO?KTC(>I~w2)ZXXȲ$"cRbHԳѨ5m6Z`8Z(~6FҖIŸ˲DC&U*8\̲l}curb""y2w\v ]_uو/e4=QSAN@$[mDUte'O/mwN=r/Կר_wۋ]U7Iv @1KD@ϯnLΧ3˵VRS u֖PҊ¡Jko涯 q*"b`<gV"|8z_T6ltԩ[EX^}pӧN?sf0Jkfqsl3iNN[6ݘP:)ˢg<ɡCh0J1%E9"7WVV&(6Z>9Nq'&kIh VJ\Ѿ*PQ†P= 5)4 jL@Z֢kFܪŽsFD{훟|>q/ (AkeL”lp.&a8֊<Ũ?00)RZLl\Q;.O2e(IR"A"A;/9Ebq!_}?y=0%fi˪T)]  OL]81@׈%4}nγsB΃՗]uxo^yc@SA^:#jljhS{fg4Wו͍F>/9xu'W{8(XLmgrz0:Q219BQdC-ILre&D@(LJR"*| r5yג4r"h7eDDq m5pD8"pc!hx JfeVE8`+#pGN6''냮7bVKt6 (QKO>5\ɩGTI ֶV ەSj;kVjs,jOڵ])5Rzۍq r\0^;/PngjjUktV{d;dT U  XDGJD̠6B51 s !0| HT xcRubDn-(ƭa.רy|n =G[b@km֗;[`W|9@ȇ ymk\鱍"D5D$R""W@"AkPAh}h( PfWWVyJH$TDTт)aA`$ED`Y T &*r@={W E^'G5Gn{v)2afpor ֮ ,e"X^^~z补peYN/G=zt~~vOz~_^̂ kK'ffYB!"JO ЭVhބOa}D-G(A)bfN v]8:όs(u_{N_~v8sw^ ~yܿ Ck pf~޵ m7xG~yu׼LzígyוWĉ$ P G@@Da}bj3sQYmmmYkϞ=|O8>G);sy^ eY:Ws_wgkKSz斿;QL33`k+K Q1Q B0 DaI6aBXUCصZ$al>m " ap);v[O2U1HD ,Q`Uø{fiksTh+8`W٨^8w^*/^$$$< 0MB}62K XWo(A"pH7I/˵0H̢LxqDxN^]cFd԰-%Tk=MiA r ,a&}xj8q.E MVڢOQS+xFgs{[.z#ýSm_M{cr,S{[KZ(D(JrcccuuZ{o ޴Vd®Vs%=Y_2VSW⦛nnw] P+,ȕ}<Sc"eu"ۀv\|eTQ)!D2$͊c]Eihǟ68F뵿5ӳ/~#{hPZ@Q^x˓M%d])^9m RXZw8Q;']Sn2% !QS5K168( SYnO9gv.]37)]_S~% w;8 qb67kK0wN|8>}{YYYQJ5 }6cv=jeT},ۼNq#bQ-(XiiQY'}//?J^P0SU/L>-0aD)u>@ ddAQCPlO!R%^X+\&n" (թPMl$@0&ժ;N)'EtF $ZW+1>Ij'IRu2no|udc _y!KEv3666ʢT0{E>VJy26*W䅉XRz`7HP&I#/J0yOVNS+.luGǮ=@|f5F[ulVz4Jà5D[gǒqt;v5Mz6)k:u^KF9u&Q"̂AYz{i-aD(gu]w}wEDʿGW~s.cfW:Z%˲|ް~ԩڑO<-@x.4_9t*JD!`WQUJ&?s C(蟘 0q x-")ԄLI (F)ewD=Fd.+5j؂Ͻ_^+/v};ғu[!l'4bq||,͛/[XtKNamER?=-T.Eɳ͞m%Ib/\J6<xiiI)UezF[(vYMLLTTXՁG|c+nj_?-ҽ{݀N^bR+]fP¶JsVLՙm"XQ Ѷ/ta4Oma"Aى®2 &(*` YlXNNLNKKWu*5 JEY@Kv0Ry8Ys\V>%%CX" O43LL٥bϞ4"Zlʆ;XDnu nY+wҎG//tiVPW#08oZΝph,w%nmmy7tSeZ{ O,zT\%Zu!6uང`E@B UB$**f }]R)& (b2QT73z*&FC[v30Q[O>[&=zytK!+A Ra傝o2ZޓOIGE[>z#QىZs+`n(eR\TzYѝ/hZ"urϜ e=뵵*۽6Tnu62sΥi:33SSS~e޳gRE^/eYVmi~SzK^r7V\/|rڽfw>UoSSB+(@z yJ4`&@` ^#()B,H@[mTG2XLTU=&HSLTMLq+ʳ+_ҰW<=\I nn~6,5* V*^̣C&GWJϦVFΜ_H~jƺ֥c_={TAG6\^0Axʼn$:K֌svݴSLkFcºT'z[|cciH&"F+h||<~_e^_XXt:ZzP )G(.<. +B Sz/α""c%˲șXm!Aa.]B*DxD"@~v]̈!2`ʐTQJ)ezA @߉f@ 82\޲+96|l9L򅭵݀>OG[t[V#kS̎D˨rs;_N,ysIҵ`!g˴و`?bǝ2{BwŒiN[CEn_$(˲ݮLOOW.*UJmnnnmmUp\ .\?`iޖ/xp iᒋd4ID+nEv HQ,W^ZcojL5k+dt:Z6DNAȋɍt:xia[ M[7 mN{di?7]hT1x3j]=E1Y>xa&]jQJˁO&3ZDپzw)`ے< =ՌB8MQlhupV;rC+4ز$$e (U7w{wf?SPXYxQu{s+3ַPj;_SzPղ,("yy3`0H@B3gGzooODh4jgggwwwss3͇fD0@Qxj,KēkKE6G#e3uEU3D'^FZ+߼x4`VOCGo4[pG#WY%rnajYtRk0\Lø;2Ɩ[]^  !$ s. C=.Lqm cR %?BU\$h4JS+XIA->R:leBH@Yfgef Vw6`>m^w՝ŠVCU^q@5 Aouh4kl"jkL+~8G%ӄQ_[HvO *I4uݐh8DV>ETGú.o4{{IǵsG˰1ޏtPn=`P2+) C*ќDg XcUU)M %"45$rZŕ(+ qv*\ J1VqHd4~d(^ý%j>/Zհ^lq[CǴ,Q2$ 홛SnL1:O)t~Wud({Wn;;#ipz93M9wNIEƩ3nxKD4-\oznꀍ13 aZS@cNh*Ņ1Fx|ܹs͉_}O\b`U%QZ׃aYWūQvz݅3/p}ZFŕ5ekoDzމBʫ- [%D6h.38Dh`$BR+UaN>oZD/D@Ģ*  T 9 !Jl$8G_ȇWnSbg1n>D DDL8jA鬁bld'Q`0&'}均@&(vK1w1$=0MVuԩ|+Y=Igߎ-zyFqYh]\ ˗nnm,ɴj2`Zf̋hmeýj Ko^|zښ7#qo7AS#+8w{ #h` M!Co6rǖT1uݸ W2*3^7) 8wƞ;m?90 [p6Q3\XXǭSyvgº&ӫ#{OE3i?|fY6pxu?գa=UnïȊN'.  |~ ~|ՂlԶ:i,,VIZθnTR۝{Xk+"2NRPcjի"2677y{y|SN/3<_'c|{iM)VW-S-vra46Ue% cK'⑷r;9 F^?0:*2Gs2G}|\ݨ&o`@cqt܈J+kwS4 6GUn޷oh3Ys+羳oڛG kP1Nz۶ c zSv^ћVT Iq8VU5wvvBܹsiN8iUU8yoll@YN:88qFeKKK Rft HKEDZ%búx7r.c}XFR+\O 㺙jԲr[jeynAd| BF bCcgy36$I5$ZK$xUwa[dl^sʳ;O"'Ak1RTu ̙gxI1RblѮZ=o92ӤɴZd2hn{ʚl" W=*?b\~[z`R}Ιjˌ;zɯib[\ѐqU /Ֆ%@ L&I(i$H'˲,ˊǪ6L_>:կB2$q՟ɟ<{lNH?ϸxS:#sj50x׫BT}smQVGUsVe}j+ݕ)kCvr.9KpMW?R.ͮFj[l>^YQ]s NAٽ}[ W `y\IX#"G !r&cFC=taڋy}}8kc)@QڙX7$ br4[t//z54Z_~GN\[^ȯ}=,|~vɇ^t+\dJaG3F DnܑoĈ!vLKtyV8t9!ιVnk*}ݶ.//'5vFVkcc,k׮={vssi:t9 -*\.hui| EA{1.-.eO6qrwm vm FA`6E\pxPPVNjsHifˆ,V]lեub--QEū{hyӃ5!~k!kȐɔb2CTXޣaXXChXٲ}SpȦ8=t?*sy<Fg|`˒9_w̹( V?;x}xeNi[XI5r ͸XP{Dc[& "^/ zH7r"A$?9Ƙ}K%jtg>s̈́LY }:DM$Job%,Wd<O.ˋۃRA!P-Y'̻CI_[=,,] *˧:naZQ([x`gR8 `E@VY.ڋ3-{.IXA.ڿe% ." (j`SBELZUH- h4Ā1*WE'1.c +7HD¸_\ݝ [sW>u}%bZ){\qU X%!sz~2$w?Qpl$βl4Yb4$ZsiT1 )xh{rƩf-~߂ܲ3DEA_<^c(CΐSUjzPn), D)W._.g7"FC` uXZсݬ\$鄲,~,Vu!.>id)թIHA R"(LJDZͽ7/N!!X`+\?(8g+CinR9: E6YHN4uUCVZsaOn%w<7Mh4%%yȈ(jBnw^PHr)H`nsvѐ \~Y%##i*)96d)꺊LѠȻV Z"*ߘ82.Z~˲l;46R{SqsiVBWwca:^Z@3 KlE픍Xuy-!O WQ0B* XIEf#~XGΏB8S/<;Ϯe z;+m͍':#QQV@bdBBH5I&ɚsˉtb@y|%$41ʲLjTv Qӯi2ӓp-K~s/+Ed8HaHã.6D,Hl1xKlL0%C+A5JP%FbYϋ /mQ1,I5Z [44(n}3ihw:W"#$o\jDԷUcO$D Bt[lscU 5w+XS0%̎MͫѠ>kTyPX2/z QRMEj Qbrهát] C$w%1=S7Yg҇%R:,>5H'~ʬ ss,'qB? "EՌոȚÆU(*++K1l u)@ICH@}tr|8zS&0+la Z5p+üv0[+eqY[W_aM$D%=/- V1!ܪ }4}-7ٰ&YT;"L 3 v,WKD{o_<-Ɗjh QՌzͪtDRnD)-1fHS_ TEpM NP4-IUS,IŞds9nɭ/--hxww7meYZ4Ct#:^m6}||a/P1P;&Q՘`QXTcDڑ55LH'1X*)vwڪJIIHYX7L2zq擯m0% &U$q  ɽ[bZXGyFO%Ta1 &Iz"vobJZwmVUXXA6ns!" ͛N3LhuJ'c7: A"E)RM,$1JV{ X=ɾPs!6%Ed2x\RTjR/Yy~Rye^?0'4woAEoH?G봢u85#4ĤWg-;coXɁHQf%VCzucu"/o*jIkKe ?z_Oq{"k:|i=DA2 cC wMS3U11i@lG@cSgbkRˤq;% J`0Su4 @" ..tI{OܣI+vp`܅{c|ۊG@w#é9xտ>@wi#ijdJ!%&HIZM(XL 6m""̞O27 ` H  Y;c#DT*S *n{… vwwp)RVr41IVh26 J'ܾo}N_O# #VPk`l*D cR( Q)i}"ӛIa( 0`e 3c*&D ㊳}pA3 R˶?I&InFgo:'P}?W[GM/OL&%h74&Uf(1+"` ص[͵ãmBifa&"Lwv 릕YkzxJ<[044)@{\cCΝ{jeMF+dP5{s.ACEyZNtz k:?'wzj枭V9x1Fî |*En|cMcPJ˭M!Q&#Q$F0EQEU u">6jLFEPa6Pg~Z+߫'Y\Y_YFX|/ݥ?+WvZ&-R/UHϟ l!ĦFb:SqP-6y#9AI!!nȊ<[UJ/~BوL'm͇TB`8Q5a"VQ/X AAlR7{o$gqq1 "U2Pα|~k_Kg j[?N8ѨDZ;R7RqH$eJqB$̯'$fOb=&KACH* FD*b $}Đg6u]ǣVYX檪2fH "晵&FSh-aTkYAڹ{nܩt:΍]uVW>Ȑገ!uIc2x4u%˯ fNMO/w/]?W{\Hh̕L)bb-4UM̘"V5-t8d#aKǦib8p/ZUTbA_F 4Y`8VBp@3261(D-HIV+D e!A1QVb P6"n>CӗoLiBJsx|q4*v2 ސmFo o6$lGD1nZO\W$1hY-˕Ѵ^1Ƹ?Q]Xje)]ꔙ# % "lU {Տ=wWVUp}2reN4_,;:Fꚑ)yV?os2ҽe!afRDj4j y%dԨ>x?3:C1[0 [0&!CTT13XH$6_ le2B&:Nq7DOFsn>t:p םnoZ2B58{4S܆&6u촺{Kn rͽSW}s sHi:QI55u4X#0`5ڈn5[^ё> +~ciZf/w HD;75"1nmm}Sn;'9,82W>)c8I)vvn:8rN'ɽ03qÛZ(ŧeVRB[CQQTeA؏IWvvw{rpy{Y^ZR{g+GfXzKє~WV'QC;i5B\Vk2Y1Q&"(gBuawp<% AcLè׏F<[麵.8boDt}}{K?/q) q7yɿOK[m"5L)̙o2' ]\XqN7[k1%1C0|sK30CUڇwʖ5P bQA1 :kCB* | QpN8u(jcE@DR5}%[\׮M$hP\"߉@;# k{L.~󃛗.]|Mrڭ\=(k^h'>r^9яC6'67R[gMQ!syUxkmԆU4KB*G~:@҂ X6!zѨU7GK^;az衣#{&cW|uO+nFU. p[H:Q #'R2/o{JxR_Ua(+s0e_ J"2k Q!DiBƙ0K\A"p!R79|AicͲ~ןV>vm{w?x={T26NUXG7/MnҿvڠU`2?C_|O^zjTO;2 7nKlw!N YWG߹tX]a3QR\X+!z̏fׯFu6E1jS7 tJEkÉ Ƈc{NR /_^I`μO)-=z׭ϛ Q Y3pq21]N+ͯ›J .{WފNC Q UdXX+1ȰBb%"1"EDR2TX (1@D$ 0tro\86 ^`ȶ꺂~`pt;TQdHDXqp+^7 /]to-ܼГ߾xP2:; ?{d29 ^7>'Uu]wݲ,O*&kNpqͧ-nNjsP I;&7u#E MУA^P ̈8$*5buo#+؈LAAber:`8 B|] 2+U1ȣC:ݷƒ@j_:ԗ_WwXڍO>v ځp{d0\sOmnt76*̓\Z8uEKU1i]:ßUWp= 7,k!FDƲ@yh0 ["'oUo86х ^}$2? qT$~HvvԦ yԩT3<7y00O'N:rm10f>;kK݂H̙1JPPMfpݢ5Ec]M 3*̤0CBajj&V֘TQC$PwNiBu M}@գC_jgu'@  Fonܟ⫿t^/?Ol^wiŬNe27>+rylBPpZ/޿!Xn:G]quGQk;@ƺSg.J=ԭFUߊyrbxwڒW߹'(Ax0.`dqݞ+gZzdiٕ17Y-07zn'ۇC%QQ̘ۆ 3mǽvwp<b5_:ZjWRW*4z)9LQ T"B ёi|sp=M0RNE(,2g f궲޸™B7_~/~g~j5edu˙^'ASOjT7z|~^>pnя?uk:QUՋ/xʕR7NIm1ȩL?'( 9,KɍwJ|jɤsX)h}{6uPx R4٥ݭR&5|b ;N?* ˝ygٙLkj:q`cݴB嵪[2F*9q Cb\Q7x\5  Yl㶂pJ @nwB]p^j{oe9sW?OWWYY:zt),ϼz}p.Y#c6Ym26{䞏xꛯn*1&TCUտ떃1[:vɲdo7\ZZosœ,'Hx` 5HtFv>PBRfUu"Q <Lz-hV .=؃qjMVܕ~,;w7/3Z̳n'cRRfa"CRF#1sWouRYĠXH8vKg9aV^^^djg_ʍ7/ G}}9ܼ7V_}n޸\_DeQ؜={ϰ;/M$h5Y8ss_ 54&s/Ymmmq1d̺_w}x4Te!u\v-ZkS_7L seBƘDljs+;z򅚦YYYItp8̲,K>qLQRHy=;6qGF٥L֘!9˾ Lo}8қJkk뇇,xZQқ zjJ4IR> fVPDB`/_]%&7+guT 0z&Jn{<dXF&ڍLe7&{{{N=VJ5Zc>"$8KV92҅(N}Fsȟyhw*Q2?*o-w{ k)ˌHAx8w=V43,{Ҫ&/_.2A'$a~[8?.AWVV׉(с(///:.?Yq1wBݐYۇQ2O 3p" B< JUn27w&OCDzҲ줚e HA`R@$2._+.5KG>6<R ̨*ު Z}x%Z.~|#՗}p0|zl_JQ=3E?ZY V YY'Ba\k.n |>^}`ɴ>x)˲?ԟV>mB 'Yni'O~`<"qd$'JUu.t:T7N[c=o^tʕ+gϞG>t ̎Dq T:țw?v)0qDEA=&5j_WC>FV/4QɄۭ4!72cE$զA"mV<7{ky>Q)cDѼBxbk<|+%8wԟXO4{ +ϝxu썝qFuF雗o:g+n/![kϽ8cR /e̓ݥ"?h;^ Հi[Z{4UM挌/~{MƺtFc{O?4az3;Wf1Dkf1@Zk`4x_җzꩽ[j#鄢<6'R|Vf׮] =XSdDDo:u*J5BCs< Ǧ/oPU/15VQ1Y8ިLʍ(ESaT5 H*9dY%Ä(d F"#2f2$"KycI*eFNwwv|᤿~v#1j x2 ?z-mgǓ׾RnVn{e>w0~0eoDi8B 21FQm]6% yJ޽H/[Ogt|`36ψ4pއφjw:k b(C%뗯Y3ˌ(VBUU%["*sܷD3~\AUo0WWWa"o\|n/,,,--6zܸrR!T,M;+ŵ^%Y#HL.6f#fsZ+P`eR1LP(4u|ᕫUs`5Mj?sC9>y'>ZSEC?@[eŨW^v5'J MX$j.FQ%f4?Z$%:mgm[N`O5?Noni}q%o^.Bs2T$D(/V?j7{o8?of,.]Ov:pc|T,10?gt&}@wcz̙6MgI`/]zonnnmm?~yy9I6ERX y}8m-tz 1$F *1e֚D0–V 1HD31QvF ""kbk=LF9" ڞK//^y:˧2e#A(ze;YM Y-qUE}i<ۭ-=NnTul@nݳ=nl-|fpcmpµkR^l>R?xϯ~?f*W Qje?_,~埥B a0 ԃ[iɷĞ` }&ܒw-g%W( 2!֙6[`G`(+ ȀXI%Q !D1[V "HY$2d8زQˀ!99R//jop`3ƈ)Srcf24I*f^HK6@B5 @%g@Ae gۉCS %Bd4M"@7>*v87;1:rSu*'mU%i>vwc#~EIA*bD$x0 P5PBdxA`TY aQh8BfL^2I 1D g*P^{dac P-zި&zDɐ~@$" Y@΀"h8":"v m8^桀@jufdH4[Oy#t+yۡl$ny Gw5 ;8YLN#ISX*-Sޙ%aA-ABDbI1;NňuMh^! tϊ0 $U"0 31cx]t{7og>;M8*1b 交UU L*ix{( )Y #b@CvFU@ Z"(5S%Mk<@0: MklxkC h83&lz7wx.#w㙆@D'6=q I/Hֶz4[ʺ_ 4aueAg5^k+!j$1Y%1&0(eslg6 hMڀQԷ 1wmYN^CZ}kfJHkZM9q.)f *TI!UBs0#*A#i Bҩ>X@*- oDUE B B8q'm8>-ݴًDz veM[i-Hqu 2-x< vxυ"3t0-1ňHcTL ȪQB&F, !$'/0_fk) &"1"Q !Wz7-K̉LLǦsŞff*/` v BH@.W@;4iC-TVI D.54Dܯ Ǩ[|r]; w 2 OǠ8Om1oJ5Dٻc. βww6.N:Eke`Fta-@#0XJJdfesgΫDj`6%3lWUHa\{-zEAu 9!XTT( 9q(X6G!,.mhOċ P U1 ogl~Wx/'G z{ʪWx/{^NWE\81%rw+O}>rb1U8,D!Q:8p]&Zu3MX'*$s<pURo1`+$!X>{pf(RJ7Ku&MPg5@͎bPAsEP O3m*(Uos#+Tfqs xhS"A?[v[|wF?xn}.Пȱ~Nv]tV$/ m[`,O\5\lʻCkQݜws%t@-E#vZO3dV{Hje;J" RDQu;N` Cr  9f7'ۨFP UEFhnҁ"z Xi Hfת@0Z4 "9fIJ= 1̇ ywswT1=?.h^aw<àP#~^{^ˏƹ/o׻-N )1,eYxjP، A4UjЌ Cl~bvwPء1ky+L _]™n[.BhCYGܴkbC8 jPRXWpa)SClT?4Q&e'#GjEؚpaF1@>edxJ$|% Noebz"+6=; @6Irt4hAW,P *}%P`uNQMK~B1(ʇ~bhY lx1ü;N + G>{G_\zҋk۽ͬ+=w@;ik[1Z cu:KpPVhe2(:Nӈibć,kh¶Uyt^uDH[H!PT| !TN&sJɶtUT5!9äG"WHY i BGBdY9CJ@'";LaϺ%I|KhGD 91j4|An̿%wS=Mw1!wjmct3?ُ{/-fZv&3eCRFQq6 34$qyNzFz_slA4&QvSW1QI<*Xb(." 2 ËTـveiD -3faeYL=0uJhBAf߸ˢ~w1-v)`EHw*Ƞqa}_3k+xq=OǾȣ?}Wz~Wvjov^jԞIep:x]ZWixf8qȺy]z:jNc:O=@^$WB mzv 9V Qf5=P TYY"%Y/1& 4Ebq5qSA`cvޱ'̌=L@wa|[w M<2 NxAt~`~s68ī2aTuYϯ~οËtG.*'k>/?#\yg^|w?OΤye*e8k-Dh҃Ѹ1./DQ6 [ۥև,uWf8NVZY=}~U  R%$he&Wp[) *j[9X`(8qY%:"LSL6p\( 9. Frߣ2Kknw OLOwzu $'>Д[B+&VVmUYҿ/=¿٥O-|6߹-nW|z?OGxLķo}O˿yr}O>ڑq| `kS[[6Q{jQFw~fׯ?b'-fiFS,1ox!F,:T*` pΦ%XɓZ(w }Ta&VBl!>u֨~Z=)ki0m=LTh9` ܩtQbz?x4s>-.{#@XrȽ|zlgwɽg`uu[/?ڕWrsOV姾߬>xiW~/v}]s㛛ݺ֨;OT_ѕ3*Grd+Z>U|}~y%G.!O>'뿲k6/\z4WEX>e:rTҟ;)ԏMZC?VL!woU. =bFIwL0UR@DBPnQlToBwC$s O/8zRmn΃0p{g楥_oz?;1y#<[q{51"`/]HSW{#ԟYR^ۏnK|ϨFWI7bN@l{+x~ϜO ~O]ݿWN=¿X{4 SO׿?{ΎUڳ?J_OŲl81mő'@"cMdV5 b"!yoR:TlAvtNyXhbL,$הJo@Ǥ+u 4,Q H(K ѭĻ㿺te|̙~w'~:NKw8 S9xKx-8>8o1yh !^_hyj.mh|BXL+yg?Gn Jd\]ˋG~>>瞸+= H|\!^m犥3?'꯳}H"el^/o&ʟ.;mšʈOL_$jFԃ,^ByBT |E ږ[e(`2HTÔR=GocURRRZ@6n?)UlP/ZO_?y>UǻzQwDn ,1vr *C9~a+{a>vFGNYjhy>Mnww퟼oDYalrV>k_~O?~ѿ|??]_ڕf~ɣsO/_٤]=6Yqǔnϴ#w%F jbj+2V DFAd`Sei4}]7Lr gIvZF$Ɩ6P L $oQ\WĠP5uCc7WtSg룃-͏?_ntfy$3!ك.Mj2S"E ѓ5$FJ WWjꠇ%yPb-=6dOɡ#Se jDE>BDsD(AlJ `#Ȅ#5E""*DS2:/{Cbtڿ3-[??CRoy׎'3 feDvH(5P!z1qi>X|? ׬;]؍)6.~shh/LQV lۂ~w+.>S]|}~?}K}ݴr >O+C{Cj\*]N,Bō<'q[!² B8.PA5,E"׎Vq_KSZj3VJ Q"gz?t V@4E3(/|̓{O`B͎FX%>OXeܞ*[qIČMG#7&(S`Zu >h2_޽q(aYɥB3Nā8yFTh]]\|io{OOf>_ZEc<\j`M}auu{iPdy RL<ۋ)&4:h`IA3 &L!'Ɓ2,12h8beP xS*sHN@ Y:1SL6Bm*dm+UYho=ne̽wQ6ۙ}&~'MTE(UQQ㜘foP;+MV |g'+ϼyqlZ6R 4F1b/K6R4R7a wZYc{3@88s]u5'QBEDsn:̑VԀQ1 jU @D@ yF˟2xK Vq*@5AgYb -2I `9UT Z R #yd]U˲7˿Dֺͤ~𩧞>?;<ܻ-󷥟:PU Hv @Dc$?bz!霽ÿwovOI*PP]W2&'mm~|k{5k}-9lnTA~N VCحs:n8PRD? ܂48q~ڏ~i|;/MBAO,jVgQjfy+0B&f-*U|.w_kWtw\XMݬEG[v*g ҃SaC>,`xѨdVaD %aD)Qi%IQTdsN=(4, oU!lԸ4Jl.)D̤ҏbN>#ܺqa>| _?z{;_}<SGcWu7gSc[bD̪-{g~blo.dK}Œ9؇#5Riai,ۧLzv[y6ڨf.ެ7xUk[??n֌ dhqٲY܌(2 k7}sڴ:YDMsAE k5&ZM*9綧noҪWKm Ӎ  I &cmbp6.,[ջrj%l˴3}Is˹̜3=<+r(W#I"w8J% /1h(5A3e-"`FKрa <-#b"0*%Ad YH %-4^i8B)@&y؀Ӏjb٣q1<@pi`ъv~=yWJ8_9:D#%@# "Kpr)"FF$fGB.@J<Y%L "ǬW.otWn08GwUpMyt*/=tf,UIbJ3 P*6)5'*&ȀV+\t`M-]SAtMR.C"JILlAs(̠Ie%ؤX8!A,YUA9BLAk+0 KDJ"27kEҖL@6b&Wqt';i+__};JM7t祝gnv3ph6:)(GCO`/<~ZFxF\D3FpđDqZq@)bPYZ}֑֡[f jk+ zf{%oqWبD8h-J/ ATZ@a18%vMeE[~zZJqT&N}=a)`d(.i B@a@ft `*  jQ *vNI6p/6BD,g G(F4yڰH # QPkUR2k׬d!=|جHpd 8R &j<)'*7yíe ;b<كwEn[bP!e-D - @35pE[CGIJQZ):T !q]vv|+ Ӕj2C6Nu ʳфj`CBm!'A1g\$pjĎH9Je?jҲf2ns]Mf.5s?y(0ŇCBjE"A xσNoREZa-l&"FaST  i*dB@'F dGFqyt<^Dzaˤ@8>ʇp0RN܅a "mG8p#@ ԎEiNJQDd T*#Ԟ:oK6@F` rÀ韌0"1nxYs=+n~ןL -@ p8&͎}Y?y@3 vl }j:kYŽg$F2 b#m +ldJMwItk`$m#06X; -p&$CRq&? #cD]ZAf "%v!-j)t#]YmCc(SpWA  #$,Pg1Qe戸. (bAĪNfeW#HߩGS<Xk s(D^G; _ [ 4?Wyi @q ɴ 0-&<%hx @2ۏt/  mS둑*H@%RO0c%&BDARԃmFo "f)z&xDqH !+(2Ow>6:f8dAI i-!6X #c$nUa0UeTh%v(M!hnh8%BFic f^̨68nK3T( YZ Z}=}}uoZtт˖8)3>~=hJLleMmX $[!9 urqPc܎:Nk${c0< E*,XmKTs=7-bC@M/emID&Pk8d3\)+GpD(@HRw I<,QH`f n#VzFG˔UH 57 9(B@Hh@,R& Tfl$ @ i83)$l8b#a?gZbYu [N'E(U#t8e3 nxs-̌?""cNͰcT'J"R+ xnqPY%Ǣ= N@D` #1Y!؂X`!-#xpHXL nEdT;G$f"4m+ RfA `QX")œWZdQHIDATT!I (DuLHؘablqdR6gjZ<Օ9(#,UTI H0D3Ā$ N7v@DGĂ`A!,HPCQL#"9#p?u']߬acGgkR0v<|:ӂJ3QȀТrG9Q!@ )TBbiJ(`*<(m 5}jFX `E3x2/>ww28Qp:|q8q36lVØ{>rBWwyPJUFbpKn^ì%ul 6Zҥ]X(`@LAacWcYdBB L+h5nCK(8RO 9&3 ZV ˝I3 Z5q#7%4u@4S m #Xx R`ZIʐ[S׎4ØUϏ3[S?c|VsGc8J=\=$X6#p$ٯQqXD8 !Y' `3c;vɳB 3bD$ |VM¤ 7ìgN\2լ䀠Dēh+%愅Q\ffʄ@IR4F%I6 LL°8@ >#`QfD"=%6RY҅[("N "  c - G8Z$i Ǵ(G!j֑-I6UZ8DRJc%0lܨH'w T5@{#eFB}҂i lYpe&X45EPHfD%5 l^$!4 wkc3 -2<9c^g(1qGgS:g38/cn*233uԍ S<24`/ dPHa2H  "LV4څaH@J4r8bAF@ PׅQQuk <`)BfAC=ȕt$ĂJ!ldtTD%BcCA+P4 .!jH $"pl|D#BTGgȴ(oQ"szN4Pu< XJ}i 6LRHDlcz#Xp:z/MUQAa (H1 ,4@URBT;%8cG$x8 ؐVd#fRCZxSEHbeRhi2 $% :B. 6"`@IȘKEF@*H J^F$il *3k 8܄Y<;huoa{3ֳU&U;QsnDbMNjV(Mp%H ],MR*"5@P$ pqF";ofh63{fr3U[4hSD֫) AvtUy`,fʧ[' %FP*E)DKB>FR" VY 8㠔07t;=1*SC,b㐢րwWEXI$2 +F4#Ub?˩c2E@PDZ\!Y@@Ђ  Ա,tf>JY >&e,9:2 f|Dy&韼|D  !#*:hK,$f1> !YB(iiaG 3ab䃶d`' fs6(d @.fb))a+lvwlI=`WP8 , AB Z+W!cI:ì E4K[` p|CB .<eBr4:Vݟɭ>@Z5t8.SAf9 G5̌h9Q{(0-PbP =j'N;YqjjIB +adl Y&Er]ա̃}` !-$@A jdD*@$(L΂i Y,lA/A]H "%2TÂ;DB%Dt{Ϟپٌ{Dϑ[agf|NK/;' i>Eva8@  M4[ewѪ 3SjJjP3BAۛBw:Ħ^a5 AR;R>DPT[;Q@ JĂi 6 L* 4hS %DEG".`A.~  :%!ZaJ1$#zL; exfZA#gyfs5J='56PLo3!?yH]ܩ7&( ))-kP\&Ad@DB$X0<|U D4]81`._WƁ "[ b!ó CDM$``_FJf#A"F "F"@60: pRd#_#XQ$@XXIB"P G.ɇw~rT¬}p1j0s:Ҭ s]]md._ܽ   'I4668Noj*{w5k /˗?eKHdr߷tSQD}{^p ,]q_ꮷ׆ȩkV\(㍏mo~ Wj#l;r҅|+:J~T,ID4Jd6O!c (N(&WD6lغuK$--$Gʣ\P͹yhKÃT6knnr]Wk"Ahh?&&v؞/(jڶnɅBV+J%kC~q X+"s=Gez88ph٢ͅl[[kKK}'StZkmE"ՄH)uڜ$I^߳{C =kb(qQőF2vFLbI)Ek˥rSsruz=҂"Vx=zH5Zte9JrtU Rz͂@>Ȟsʩ|~ptdj{מ+پu{ڍP ҟ?::}Tzѕ/XrV)bZz~~ډEq266:rs=geo{"ZG3\^,tdyuН?0w<)T*S#ÃJ Q=frBgWW=]\zEd,Zc$1뜼n]ZbW[Ú㸮EʲQ qX9_"RB( X$1ccG?ў~+|ܳ{;v'>o\y ooۣc{׭ vPRݰa `ttMozSww7 H?JIOKrIj}c:%X ''L>/pHQ-]… z{{w޹lֶuk $1b1C4:lj֚zReX.a- c?dsy$JЂR)=,Xܺo߾(阹Dq%8鄨t"sf8,."ǭ`"?cǎKsYW׿oҗiӃLik2LKKf׭ Ko93kWn>|ꫯ~ߟd &=::@׫ݏxjY ʓR]$nnp 8`$̶s玭wVzeBu݉ɮu\ρf@X+DD(vt֪^ٻoĄymSsQ ޽|{--͞~tpWc՝IxV[t/"ʥدht Bۦm-fH1NnjǦ p"^qEԮ_jbSKZekgxS"tVc@4D:;}Py\=QsB ՞>Z>c6>ܛ+-IU-Y3&7GRq)=CD###MMM1hT$q?my46DE8N(J)RJ R%5AǥJ\49YTZZZjPhiiʣlG$Acc[wi//[ib|-}UWTdkWgAb#B>+-8ڥɑJ3?+Q$oWy( oR߶~uz_ךjrMYwm{f90!r 13)'ڠwNf7o\@c0V5DZȅMVDbJ;E JUn( :ZZr[R9NBsZϾ;n3zz3\dCãI¾կwchW\q X/Y˞4?PN!_㌎|_m*x|/n.~g쳁|r'on>ro 'V>fO;~~Ǐ6)?9M6oFkRISy`ժUO@ffNu|Ac,+H-S(Mw+?-\8(/!xNϗs0:.=;[g:+;`'I=U5` 9:uk5kxM[K[,yK_u0?qJM6 Ӟt03}#$ 3͔tI+Oժ4imZ¼}O9~R\gxtdIؘ{O)孏mZtg?9˗?h⥊8a%_e mdd =ښ[訝*ZZL)m}Ea54lzs/?J P!c㟎Qq0^}_DuݟJ¿hniY#V=y^>|_yo|ilUW?_~e G%.DrVhʏo̳O?M?Ooy>o<t뮻$}΃7E&vx-/_8mD+I- k&ȱI* KÇ䋅?SolkL& ú@bsK)O%u38ڼ/9˅j[{۲e+FwOMlظO inkjjwÖhZRZթq5TꅑLG?PZx lkOݦ4v1D %S5f[yF&3 oߟhuj!v xJ~Х-h8yj{s'_)gok{Y@pe^{[5دwЮ_4l ENyXLdg?} rx|VS P~}@OO' 'h0">jشxs=gAsSs0Pit={7?i_V}MDHl6 k D!3q oU/~K=[x1+&J*M>iU.z{{<_־L9Nw rє/d#*^cd)u;V-m+TޞbWg1$񬎖ZD@BCw,ϜwK߳x/ ywnS\@nۗd[w ׾Gygi_IN>g(g@~TfЇg0޾SΞzX^;g?S?°y{@W5z@LTN1N+hF\Mykn뮻u&T۷sN8 I [KJ_}AKk S׽w"-$ P:gﶍwm=s*q˲bG[Imi6A`4UʤL.;o^DVqƆ80<2|ꩧ.YjhrܚnH̼y(%&`$CN+"kM[dZC.[ `MZ!nG*V "n͙ X lfHmEDZ+'rɔ ;Ц3sXif<]+wŮ@8Q,_Cpw?v3yzw}-i 2; ~[9m/|x (/Vda@1R>#lLOrO[ghk6,]]#JZ֮֠^R)vu.ڴ?] T&98~󈑹cQ48Fz. pFGO~ST/zhSc~á^?jO]ioz]X?ӃMqsbi[JwŃ E?!lmI҆51kI^gJƍ//_+r8;wu6˥?Svx @R"ڍE0?H43tZa`QXVLlI5W*'ʆ[K9^<w[8e~S tg裏T+x-#xˮzZz Sa=LCkjTl務֮׵߾e&˚18\3k8?]{CpKU߮s ^"7&WtP.E{_/lsvW}YzḄ +) inԧ:q{tSU_pKCW{?я$Hy:I7EVZsYr-W^xlayn~Қ/acL3!A[&aa [w۱mWTgcSvhx8KEI3 Ϋ5MKF'oo +F$\|{߼:ձ:Yٶb.I 344k(6MP{{Z}\$˞tt柙ϵ,60pC tRruV6Y ho^[_}G Ӊ  V[ :X Nb(0DVnCLQ+bRyc}c|VSSIR>޾}}N R"կ[s7fS-KWH(lk衃A/Œ!?ucAL\غJ\gG14;v8/+I~>֡{ϼэy,Ϩ/ɝԹ~\&/@P}7y2,Q*r bjZd!gnWN'an|-/| ﷴ>d o~r:l6;55Q寺/dW^eW+w 3p?0\qKK'i퉛ko97{pMj+6v :fL&W?gukǟ`wwwRI%HDq2ٳMJn™/,;-R><8m򌗽j-Cb472ٶC100أۗ\cyHi;𒗼쌋O㗷?4ȱ umg_ OylvGHB12^rQ_U;5ׄ]˻Xr"mΔ/3X)u4^K[wBw81,]ڦGߠZkGyKGM?Gi+N)Í58D @"JjrN"fA0֌wD~naҥ4R-ų_1s92N ,M{h=WgGn?ƭOL`7vd2W-ZЉ# T+Bs.Ysuf٧dŊ$ccL@ĎZښ:Z{7<Won[2o=gg{@Ckz%j?Ne>B1/8َ2< u93WN۸J(3Oo'jǻu1ۭ|Rhrwc[gVZ2GF~uf,[~*ID`<qW^JNbCTpv"\~<ݫg>闼%֭@[l>fR1=yO$AqҲb -i7Ҩ4*m*~1u*ߢ @%4zoߥ_\9t`{X߿9EKXU_pV!hg&%;>78nE})kZ;&z%~͂ ]? ["JI=L F&"gs=%߿q8J3`c|r`jb|Fζoc=M-f}S|r 5ʱPH"nPXXtV\"$Wufs Ig5k;pt5kVZ/\{m? LU9g|xU]R`BIft% O2zp9HSaG8))A_s HFF#Q7ߕ".Ow}w^w TB鮻FQr $DUY~[ts>mei tVZ@KӻD|k2{u[6ޏZdQ>7iOmwt]z%TkQ( k}M{6vEOS's yde<]!@/uN'5I0Qj*=A6a-xt{%p5'9y];\Gy u{>zs)=~W?)zH)?R;ݳήWJܹSTsss^}?իWM8ͥM?(?|s)i[[x<{?gHsɱ gKU6Z 6ݒ-u'rJ=s* R)[l]tYtphX<]>5Yq{ɩ+[ܳw,g]Xʸv^vaR9ÒN?eM9UW&Ks]>{i=VqWccwOq"{ifZa5~`S2=/^xS2;i8;v SORH*;P~76rTk/|Y۳/8RG')iTr&r°E!DiͲ뺈Ĭȱz q=/W((giSg[9<0ڔ횷b>7T.Z;{39~hHT7GRIup֬R*JVA~2)}hh,\DLL< yD/U !=}N [:E24ęx'3{{WUHziVegqh% < [8;vu_}S Jlcމ1FiݳLT)+k3|޻}c}@׿_v𼧝sg{y\~Ͳ-?w09>bvŭ+Y?%=YaJHkh-4yZ1A\'ahXʮ2i]gplYlΩeK^vyz6kJttvDE^/<0f&q" /6{p0͌MEkAlLb ڻ}HWEF\:N9^>%2.u.l+j+:_޿8ZGT5c1qgD 1pr%ה.Z|R/ow--%pT @IH'viW;0c7jjq7[(8b&'JkqS_U6

>ixPZڧ809^d&]RFi ;_g?wD"wCW;'+fTھym[y睗^zSv}9gHJځ >fNm:V` pK:~z6Ek}{͛7񍷿iƉ UKatdtl<1V'18<5!* Ziqrvf.d3zݩgw\W-r҅KϺͷXp#CQ4g)S-%d2{ "a(֢3&bfEG6)6Ɔ7mܼ|岧0)U3}oQR 8j(OMa/>rE,3ڵ[l30 Ez׃>17~_~)@ I9ڥ#k]zOq}֚|xGڞKn?yGsܗ..eC;׽] tYPk___ڢ(} ?;zܽuɁ)rnssvAĐ2.: t6qHy\h|[תugqC[.zڲ3_l>sGF˥)UFDSR=1AeŦbV*qb84@1NʕX96vdpHi}r1wY% ,ڼy[{=?3{Efv秷Ϫ5%DKkҿ^\щRi޿s,W@N fGvæMRĵ fBHݰD޶? P`Z<;}{&d85bM[[--!"tؾ}b3L6TbLMMMMMjZZZ::֝DJ"8E3iE 0r8($a06=2c3֬==7n;jZh }W%UA^) JQ&;"b.sDz8Nm-jy\4sռv$i,H}=UWsRwq?+G15.臜'_7r>Rfxg/tL16훜lk{6G?@ =aV8яQ2M?=:hco=[=.&y}+e7 †Ht kZz\,dfҙB+.JMMM K5D'1B丞9x neο-} vΧ_xYk0rc.a3w,^hLžu-׳DĠaX+ON ak[kkk[s1=O+焕Qt<:6GX'@0STPpq)zfNBz{}+^~ij(ٳgw;n}UrˉVtd_tZptPu[u ($FQRikk{b> 6츋y͒"9:cFntz0nd׊MN:$ {xL&jժ;wd'MZ9[+,̢4EQ4<:924P[,XvJB, ONNMuI)f{vlf֭m*|ROOqkУ㶴{{OYZժ|Tuo6>e4 9piO[drlKӿMq )UﬗjϿL.kZrM,06Ef2ڲwCe96R~;Q{ycNnn#=e2 meEX9b.{s&-ԙG{Mzz AT}Q(HzBB)GF dg%t|/Ȏ" ܛ+%x)UV?WgҲK@ne. itUJ۷o{6T*_җzzzFFFRO]0 ^໾Gr(cB}&&&&dwt/Y@{=`SGI@[vFϼ:{7߹ T+k7ѹ6oV4ʵ%k/x^Ob`HǶ@{{ҥK1Ƽo,JQooT9e"G$>tSSN;:%DѲR"JQ|||b`hWw=}>hmbP ak1ɔ&~qټOz)~'kǭ*J+]kL$QD qg21B""D@[ Ɗ1@DGgzjE~GVgg֪V3#Sj™ vX}_f]_-yzy&0f$#ip :~7LH؈&<"iO߰ Z>OR811w^XdI>O[h?׿N8\OyvR:OB!@0^ɑm;YJ{G)g.֖ۖuq(Іmǖ=)^̊ 9)p TqA̫^/6Ķ6˯x_mUGyVi q7͙L\._tiE0::*"^ҪMozӋ_zٸ(r")D0$IXLʣ[(02@@$J)Rh%lނHZXYM+o\)ף$ E68(XEa otjmmK@ 2lV.z_,V;{~뼑I2w '@71qqƹOd(*;u'bǟw.i֥L.O}f1n?̹\n)hRypUW͔PykODx;ozW_}5O#$I9Ib-7<} Xc(2ql$mip|(]BEjq͉Q( ю5F8AZcn$ գ\(6&Mb8NlZ,1,b9|N`:?/>zőy۽cdhdr:Wd.hѦ>p"t`b7l VH܏Oiߪg{+FlO>8Ɩ=+7&G*-_x]t]mY{-o{wЛ-`@vHF'!!mkA†lǣe/Ыغ;ӟ*=sܟ2`…|;ԧ>U,]׽ Habbl>#~i7+(Җ86"i9"`ʠATRĖY+,uEHc (Qz -AyS*㌏޽w$ؐ"E q2sZ)5?ztvWZͻ%O[LBTο0ӾoHZ}oHx{27QO1re}vdB JÁalr`$@ӘP8|{] @9ֳ7g E䬳ΪVW_}뺥R+_իS+9 BJOE]8ERAoIZl)DzpphllX$Nb;]1," Hb9珣D9IIk[i&f&5دdeOyk^iʵ[FGs܎;&&&[^aZ۲eK^w]O{Wꕯ|1fv&v^/ԔÉr?B3 k-#CP "S/aTs]OXRǎvֈ(qe>zyIRX(2}AL=B&QAPVR"0RLZ;+V5O.]tC?O#0@]/ եG[zV >o8%ꮃ:AK_)A?cP.gM8wH5jSO};qllYp~~-]SԱhJR@SS(N@/mӚIFzͰ[D1TJ@HJB҈'I_(}`uCHIh-v*(e&R$ $81 (!pP̟3.惛?tz& 69~_{83V-KTI`: n DJp?d8x@pQ'WѤ6ƈg?B&IaÆED>O3?cAT*ou]cW|>055UE|k_;!##4[;Zwݱg@+UEq<48HDʈ>ePD&I~s?j%2B#SfTumYHJe|8UJm*(DlYD 0cELb$QJaSTkXXr)>IiGtqXRy'Giʕ+/[n{C3rEXTo@DP 2b Ѐ"`OBRdy`Bx s /zыODccc/}K_0lii׿>88*B'󅂣q+Qo?{9}Q=9scccFFF@ 7pBASK˂ 4iBqshX4ZXCl=N(ZiB# 1&8H3*!"}?!9 ۚ.:uŊ=PWku/:)IjQqxٌ>5?[""k{ f¼EcA,OJ?ZtQP|T҆1Q]ab{|]@w' ݧW_~7nL/SO}O\/x^>' 65:՞9LAFdՁ%J$6DVD _ KY}fS|QPB*4{RZ ;G=?Xts,]{NVqڄ}/r\&yJt(U<3!1l{003hF%pК_I4"ƙ!\I/_"L<88$?=Er||V<ĄRq?hc1 gsa5 i6\z>'2zKuOkdGZHi8$l6[.Zn:Yl.4! oݺu}m vv-]0k^Rص{wjRrD^J"|2iSdzؚ@f~6Q#*Pp͵Xq)' 7&5\׿_~9wvַq@RG˛o|6&BpD|K.1qV#"ȶ<::[-\o?$I1ݒ$T 8Z8P)4ZkS]W[⥋|oݵZmttС%(Q ѓ<}c(u^zG?lq;]Ba;}ciÉP9fCl,.O'.|+!Cb?O]z%O h̩upSS4---ox7q#m DI<$ \.޵'cB?;yq]-i^ӓjH%`!MƘ(XztL 3YkZjG KFwuwϛ7fܪ6.(:M2 VX٦by8c;&&*G=O O`# }_NJgxMNBH(Fe)>%`ëQ4yL98kwݳS_yj>ӭS{־v(z\`s2piO;g-FR K$:tL0 T5GؘOdV881@y3umv;]ݝ\ K9x]^nyvNX' ٟ77w6"|3 G;npI@ )kӟ(=OLoH)O ?nblk'9'/?i͉یt;VX$1۷/ @婱U+r]~$&%oh{ڎZDˬMaAH+w9EW,h.0Deڗ(!@ucj5"Ѿ|˖r9?S~ T,߱c[oO~gsr|E-Dt* 0iQQT#L.ɣb&leΟ◼䕯|eKKˢE~Rqְα4 ecYoRs\JJsK{X,8lGP*T"6}$q]ZKC[Ak-$H"w&'ƳSzdc6!C)Oc#KC=r( R^p\02<=*]&J)#&8OF#H$3j˟˗+0j).K.ןh OzttP(Ŵ9¨Z[.AE#LPljrlĸc|1u=FD5sgR@$NV)RJ),'ơ5XxZ;+r=? #TA1:^yE`0 ghV\x猍nydCCk]y˗/_dɼyҸQ#iBף>~??dž g2"Rf( ]%z7BلZ.-ŜKJtf jLR&IBHi.8)Ğr[ McU&ːDqTW jVrH+e%Bk-o%K?)9p^K/5T*r<44459i*BL6;o޼tW1Ƥ9IfNI,Ӛ?]g59U+$ZTTK։¨ؤTEIi;r\J 0"F@; )aUq,0)ԜA@L 0(B7*W#(@ I¤n-CdcW$JD!6LB]p'pHb0ZYQ!"ŸU%p>?NlYʥD Su7 cV:$ IIV(&$R.$$ 3$FJI)0)i\U3m ΢zMs;߽_ Z'o@ JʼnyZeLli(0t9⺫<@QRjdr)`(*0 #1fDIk0)/MU#O; A0"I5(IcqejxhtTR<;-3\0?wz}ԭEQ` Є PMIc26DZ"k5B Mb\r8HVrsɫs`>_>OO$L{fO~4uo@Vy ØrL8ABp^9O R,'z#4դ&lPԜ+P1GZ2T 6 "4"*֥=c}n=c^ Ս6H[uWp?'1o zɳ?Vg\ߊ Ad0JLEȖClz̔&+F!7ny2MUG@8pMŊUfWMaTdH#qKJ"LE[)d&Z;`@OoW0bl_?;r־u@l<"WZY=:TlAh,rt4sWG J tGL })@`j:15MN.f} m; @3MO@؇ogrg}o<\>WEHN :0^#VR}74o#QQ)fT4,`泌Q6dX)4C{N-!EJ%htXH;ulXH:;d\XPTȭ ԐQ{L#e$A.9Sz#B.)nY"0;t~:$BF:̲"ֶcЭЖ0齇vmSA@ "l*D fZn6uC9ƘrșuڝE A53\~o>|ڵ/Ա_v QPrx;}'J~Bԣ3M ܰPahQ :bP y(ŻFUQ=Xkv⣙ݤh!%a$6 U SΙ1-`)1z2@r~{G7CSP6,@1rS0vK1qPCU.%bPFJaJ֭Jr3IQ`:gfgh-'2v1H{Ö,{у/޺~-ffE|k^osQ TԃeЀcT5̪~lS~<O!iVUzrd L )} 0N>BĶaU[N_/$jxփ7Ƕ-hvdR!)"w}4%!$6Ⱦ:BЦ3O(r $ڀH"vDfp!S'"5o_j0w^NaցUeplLW;oof|}]&U@Ǽ9b rBdhitΑ'G"&`L B!`C)uRt\qULcTPFp*'Â9 Dx1»δUX1P1C9:CLzi۔F:ok!(Th9T֍# d}l#g|SWL,sCHUElV]f G/߸Kz-aQ LDVȁ8]ɴ4Q0$hbj /Wi#V:" lQ|hPrTq[uC'"CsCTT3 C ڨ)az{kXc]S.| }0Nȼ7||7K4Ś沚/Sh\ eyu5gxptG_}ol(FQ&d_O._پēR[@QLXQK.X-T%ܤLtܞRfqBt >dőɐ]Ωy_N7<3'oQ5޳B6 RRF(Xz٠(i=u U}d.18'! $/M&S[U}LrzauNRu/cEݝʇ |kFѺ])n$SNB:\Ndhׇt @| P  ')K]A0T>+BEF V;`,<zft@w*yzv@8s +|H ]s^cdt&T;G&rVaxǃ_$h"v+fzzNbM>q.XI:0ԖiT Kt.!!T*E4LJEtw{hWG֯Nxw_Nɽޑ}<s檚<.o-JX XR7P`su?j6hץG `\b3F8vd뀄ӳS Z*wYMANovo7&V;L̈2XHňzm8I2* }#N{?lB`>; 'z|$coml-T0 XKzB>ZMd[G'qgk~ݮ[o<֞0]8_\|fb/'}ޭAH|`^DIco_S6-o"n}җa Ș$Ƙl'' s,@9ACF5AaCSr"V3cW8luX@C0ǂZD__0ĩeQ0+ьPLb)`8V9vsd8JvD0F^e[j%i- 7 ׎WN=:)q☑0F7 suw?o7=>wZZ* @ײx0eб]+q U(^<$"!29& x (&e靌d.QA$ޅ <6aȪH!SQ5eG4 4 9%DhZg\ܸf?-"XIw8Qs@MsY Dȃ=7r;E)]U@C{%ܣsfZEdk/,BNb헫*ciD|:톞(7U_۔q[spzrӟ\|o_\}1E:IsšOWϿ"~vͯjwM[O} ڌ|l ?G8".Gǟ};6`FBc0!c3SB1Șf1ٛ$6$CRD EJKRL{"2@bL#R6546O 0>R"*T\2" `jՌ&oVT{ρ׮c(gS",H~n&}&X2z?N>m74_pʥE}ttv9T pps[=~Ɵ7]ˎѪ᫯4C]]]zvlϿ S M:)EW^_"2V{~L_ * Ur[vM)ZP7% "&@bӄU( %Dթ"TVуf *o( ]" XVA)ΝܝnWFUB") q{oeM@7޺!@2vPR$)TS09ZI{^l!AQNn޸m ѻ=q[O<@woܾ~Ƙr/]cUIg?B^SOwErUHq'>v>"ל1R"O^)9ӂ>(S+Jgp;hcSbBɀl}1DاϽ8p ޲##b.f1d1HhSޒD %hVb Fd#<ONViUy^]/>RlQUI2HP ɨzQf_ i0 pu#@I֞dVXdFkfXm}O]ޠHu٫180vA5aВعoPzfCٝ.4d0{D0Q@K^q#Di$S̘E4,CTu0ȶQNP@9R$&EQ(y1T^eF$-;DT~{jWd"J.6 -T+L ޡeqDJJ9U2e̥S$)}@$*³_)Wz*=$ͳLFY qݍ9IVghR$kdY JD읋LD.P%DOMIѸh$=aArHZ`Lc$Ff;'M90(מ5C?rh )I]ϴĤyq 1ɜ^J6E@O`y"C'CkCkcRBU=+yC'yВTGn%[)9 EJvpt2KenxƗ#: `ӻߺ⻞IJ1˜*b" cߗc[8P9 7%lz+&j4b"Ĝ\h|\R!zL)P_o*R 5#pܸ:s1/a .kށ72P#1#JpsJc/{FZ #$As*1~eUǴn/KܳwOHNfO>tʕG_⋷9MLμy ]ڍxi$y^*_48 w4@u, \!iڛ4,EWAq꺻g֗óRf>iawٞv'~YdnL%}Тxt@Mٓ&2lfф@P@K2oAJLB[&5AAB LupILB1 "~kJ9ޫW_犈s/˿+ϽxrE#0.j?bgphY F骔L{Ź/}K7lxӅ04[ 3}.7OC{ujNΰ"]?̩.EOL9+4C 8"^\8;F:=٤ީ){~Xã'CVq:󀽸X<*$mQE%־!thH$WyԳdAjcnsQ4vlo_Z,vx _9:A=_w_Zm<jtfռ\W/r~䡇/?F۳;;Xƾ~yz|n+.;| ?˿/_Lhw<'o_D0UWbDXC&B~AvzJڑ{zѼ+w[3f>)/Cʝ/'gtIyJ*fb@u'Nەt:}}kt]]}q>x7}쉏×o:|oy}Ο} %]o#W~iU_{t?jalkk☶MU0HU|U} u߭lg51اy(bxay= |3?+PI2"$L)9LpȻɦΎ(S>cFiRUW|n}q+X?o0Cnᱷ wpj;m=. "vΚK!>B1I1VR4 W\U)%)ݾ(ܾuy.ݪn==w]WQ߿8n{VGdEJ24d^M޹2D뎆s}ӽtt_ǰb* hٴt\ٔrRU䳎ޜ'j(cnQNƎSGo5fZVi6WnqZݚSbϕ1ܾ*jgF}N$6bVHCEw??NJUMfvpۈǫtp禑g_W59OCR=|YɐR U8Os(0$uRBtUUE{1rP^W FMI[&B*ϱ`W"M-e( @4pޓTQhpX)V})c١Y?aMȐx\Gխ5Vn4܉[Bxl}(*R'0`,Ar}m~!~pkLmF@bx=IMӀa2۾paE0f@_ GqYM|?0sRȻ"ɕ{~1BHi0SQ .\|ܹǟ0!BnU/m|;-oFkf5pdl^i3=CIeep D$008zVRѹ ཪ4Ӻj[Waሒ$Wi^yڮ/n]M84K)Th~F dgXKp Zm7,dJ@qɯ݉ +!Hg|N;&54@ }=d{p%<=^#]ʵg۾ǽR7^ʅ.}37SU2wMyI)to ?iyWngM3fN"s`/"#|RVr^3/>,Z4BqHwe;0$:kU5^L/}F ()RNw}(l]48VƠFhAm%{$2"0 j" 4;}$:LwC =?t"Q|S #?]Z!A ^糕:c9xy6Tdgg>{{j 7oz/ǿw?|j?G7 I0&bi{tpkC?Xu37~n6D*t2<$o:hΩעBȽ:IG7V"fB/4<(:X18\Y7R_؜ʘV"@-LTɐ]wιZ\z>"Y3\ٺMMJdZTʼnmӶmQ_2bсO#ژpvD^ ~W$A=.z"A0߳FY(u984$];˵*yKzϳ,1Vd2_lsG{zIƹOUU\%ȅˣ[g9 @$@ZLMdIItUͣI-U)y-,wtk4(۟ʆ3_C7w̛dD/+a:=DEa$b8=y:vãogU48(! l!4b@ /luKEEELǾA'߈M!x"~Hc*-3Kdgl&jPF`E 3ǙB*OSQ\v:K`6ۉNwv#P&S \ TP T "UdLS)$ קAoq9ǞqLYD1 }WbU'Ɠ??Nf["W> qUW?3m?XnڻTQkRqT N="%49;LU5cߵRͨ ;o]c '$HNfr;cb592V`5<8ȡ*(ۻ AvT^Ҫn*O=Ueͳ}g 9ϥdC0@e:HYXa889ܶ-B>sŮ.'~2x=fտ<8>O꽝Ņ罦ciNeeWb>w/)"r?ckfK`NU.;! {'%JD ct/sy-#Ÿ6=UʮhD#8*t23E h۝n&@ dԌPL>k=bL%0,ll^ AP{XJ%$1'"zn80 Lb"G|7}X*ǫv٭TÃewl47K28oEr"ԴH9Cی].!1"Z Cբ `UI)"TF$"02a: ; E3Q'Q4e,XHvePSTIaS<ùB"/'nbNڒb|b&Tlw 83Wm9 a Ij,g}9KQ% Y5,̤`K12tl G?G~<%xb>Qɷ޽y$ŬZ䆔O!˅z1݁{a, `fEr)ҭm8QR\r9EQ=!,GPrK%*jdgN@e\%JiΜTIUI*ha$0M2Xa,6ƻdv<\W@w<$D)˪;6wo0bgHghj\6F;^gDp6&c|O}Óix|2#jL>f8B<@^ˣoHK)H)RJ)1KFvox3j q>ɰ\ػu'uDj3ZfD!kA`ݮgt9Pt(Z%e3H2A pDŰhO^z\< PR !EE:,7V˔cbj`Lc)" :Ĥf`!xOFl||=:ϘJYc6Ӣv(C1;y8w|?HVS_T8gXS%cʹH.%r*EEM~_?X ٳyShD x܏Q< ڛR$6>Ҫ_~<mk Ԑ$%gќsqNu}]?OՌ{B0>q'IВ âG/H&SbU1(\ͱ j3Ajj*~cyDg2}.`xԶz D?&e۫IZ0S򕡫ϽG~nOPCnLx%57nm[Nvާ!f35S~ca1SJ0jQ$}{ 0{Gd,ԽMth$r5c0 vza< Jي jjkvY-]JK_c ǒcg<E8IXy`T\բW( i@s(n0 Co b ?/{<~W̓% 0!FAz\wcίWcEjݍȧ'G'/7wmG?ozn()5&eD@솢&H~)rY|WT7XXIb>)}Y_lQc)844x.AjuF[}9DTgH $FnDs"RF.=ӟ絈i!/}sȣ?}śwVC墶p 1ӷKQgJsU)[/Xo[Uا]JFs.8"|JԽڂh9ݫo."2me#ZI_v[V~b;//_u{hǾ U|֥DSs?$RQ>TDɘ`RXut#㦠B U5k+m$ꚉ) BVЂ %yA8MCJCGa5ۨ_oQ..71N NKAitu`fCB<6ܞD˩#y4ɘs~{kk;GTt="B׮yG>~P:_1{bF"am]>-oOoEo{/b"*H$"7Xgi7;F}* *㪽sny\vyE.g a{r΅ӓ/PJI)BHd{hLc: 7i\HƉL>HHR<< 8\ C׎ԔB|UI P/lJ|XnIMD#D'hUɠw˨C1of#1gz1190lV{39==|'%)FK)-v."GNjsTƺ٤ SbMo(P1 3#3!d=[l#Eҗ?ݞzkOnܸMH>GN~}4:$`+f wHaPF0e"H YYO\]i,MV!wtȨN@pnG4'H8|>[uilWb4UۧB Ӳb? })5 ^9`;\.=$P̜Rd;1A09ly|}HnSyF<fq4LmC_~WrƢ^*~W _5d#ysۋYJJA46}@dߥ\1Ӏ5ZOm}PYQr>/4R󫾿,>qsy>oU\z]WM1$;BIy`DL|+fЕ'?U)EM\G\.< 8 gBĜ{>*DA cwL!xDP)* 9!=v/|;w> ET|)PJ7b6gS3E(w&b@SXF#)SMA 4.U88n,5ypڗa']VSUU=C`<ђz(D.u3To# vxlᮭEbŇ~]'v@] 1Y%rx昑1ȵ9aA_ /\}0 H]gSRQChvQm|omЮ*|w(2{UlfOyʤ%gdьښB)PJ.G ,LLA˨F\M6//ި]hTL3+C})PCUp89ekk+pQvD"$: نuC|#ߺ<=_) [[D+_C4S(Z2HňbX)p'J;c,s AAS'NҤ)RÊLe!̆Z*]hRpL!iq\'Eل$[03@ OI1@l"2TLHL)?i %Q~(sx֩sxn"/w/{ Q!"ʝ?qgָ-wO?~>3(EBbTg$D3 ^pp2 +U+`aߜz ZIqқp}B(HĀGso% ZAQFT4f"gTdNm L`DlGΎW'iL$8aHDP9S !"A"maZǵΦ3*|a#󅷶po]$*:239J>qDM'(%+6{?wdudZ]w&Xtlo+5WlKL&CG7^"9b:ˊ_u g~= zYn|WdwM;wb_'ߘ5R)ٕ;(##&ELGx554rlz2/f>FfGĈwSp߯96Ň3M! $E ݵO}qˮ۞L!&3 tGySc)S`GNn G870И1۳~XlU9uj F05,@A $kCzd#)PЙc6fh"ѕNoy)΅˲>_g Xy=+֔st6ff!ц! @ڮӓU< m+rĖ%7E*-sI:Lf820|EL@y6 ;Bf3a}`VOׄs]r8\%%BX RSb$FDc3A*a(BA/] ҆6oR@Mf6 4=)tr;_0 ;[X7홾f}M}@ "DBL>xv!c1s!zw9Q2PW/TKހU8fR]vK%$r^&bk0(d숉*JpCއ]1t;7.KxH`UE$H85R{d AL׻6`퀪hTNsTCQc,.:v`N\Cr@(<; pfp?\ 68f-'L/l@`\ )8 |)8tbC4 T:?**A$'a,k )-f oߖ;llw~9؏!䜏V}3ٚ甕i&Q˼i(`)kS/OCydLn|zUWa:Tj%~Վm5] R8>o&4 mt' sEʨOtY"fUPf501A &-z07̈^g"!R`00Zv)09 LՌ8yƈ 8j H9^裳g*c`хUׯsѬ6" `$I,_8KJhwx M: _xx1A.b0(h$ D o'\5 `}W p>ҷFhlft6:x;VҲfP/*0@r:n=Il"+'KhXyNgjc0$Z)(gQ,hFπ 3fhØt~O͍Hm4MQ$99+(蕣4Nd wUaN᫐ӤJp3{``@+2D43MU{xv޿ha|``j@H gs (`ݴ  ڊ֬syCM8y bPdž$)A˕/].@54x%𕖢uܕI>=yd ÚB֍w>OH19Z"xjofbNyC8ߎtg) +ׯI$2r&l6QsT ㉬C[W:K@r6UE>\2gр!Iysm'/؍gpjTdOJn>lytRiل ૝yv(J(Y^cwjj*B0Sg_?Xcφ7opɯ9o{|dX̀&>P(7 2e{O{=JM]HQ# bl&rcQ(2U*U+R_X fq\/Wd"fdnluK&b@LRzp>trf1$HI58 B3{-n'6EoR4CCC2 `q 6< d`#0@ݜgFϜ d3e綹80I?sۮ56z>]Vk׏Ȃ9;JSsgT2O؍7 s ء*fAWǷ!e{4FA45RX08_{kߝ\AײsC٤o,VV7k :o?C_[]?GMsz#Aw'?WrjB43[?cdoa3+^5凞:ȥ.vw{M}p{tf!Un{[ŭd64 .NOPCo wO=zr5!DmݦMj?C?Cm=6 {w^vB9$TpIJQ@&eկb}lv]jmOd1EOO%qT,kjw68ƌoNlSQƕ:aCy<59,m_- U6 (!eH7n<35 + .1WP`kxp[@~ T&B L4yސ&a0ur4ҪMvDIydj} Y'~&;'m5ROՅm|uaԌi]G1 j\VsJmٔU=OCfE3 uaK|Ϭ"-^i%]>N_-'5Q#;?G}m9G|YY?nmsvxOOa4J$E% wd>8t*nf)z1-Fҝoӓސuh*^~.N *!||Y4F1pصenj@"*)!Ÿb 1BAeo3@ X ᕆ{$v^m&=;IbwDy BJ+̍Aʀl9YqVwF2B J~ǿ?kwtvuaqgWH9 -z7ZH΅f 4撋yWy~6 P |-!AzJ&?cs@ !W- xs]|Ο'~/R# 0Q≿\~:.M(,͉*J{@Ech\lli !:G偟TrrLv\TtVǧ~,\|=EqPJmqovUSMjҝ>YX[!ʍm ql&̙ !6.hfHp#ڦdsJl7>t_ @7Y={Ȁvτ^- XWc%n{4^4m)fɅIZ啷p^^zh4a='{vg#޷|;?K3].J_t}\,\-+z0NK{ wȷu Q3PUOyBzi-k[_lD?UvT 'p-?U~7? dկ@oPC?]G{G G՟ݍM۩xiVaVa>n[CbSsP%/bRuC!V?N;E=b"L(D;%ρVZЇ8A YeL9LtnԒtu~>0k8~0܊:)eH@7]y7S(f@͛ڦkDU7* ƀ(FI"(*W7j Ȫ@@FL5BvO̱Lr4flTaªyƊs6H·tN4,\ɩO>߮NvY:B+]NlwOƒ2UPԱ$ t(- U%CVZC6 HsO?vW^irs7[~||Kbۀ/Dd~S7pN6`s~?HA<2Ĺnrz}l0xӵw(I2.)h@bjU9}ki#1}_qm"'@~ǹw& px~xzn|WN ~o+\gL 6#hQ !2 )WV l=ë=^$8OqietMhʲjU,:Y??ߙ4UGv8*2,!ȗ!eWS@% 9c)De Vmdܑ9pqƑYsNFp0ι]\1[F"}?xѸBЬǿ@g7x'f0jgoG1%}?_ `RMWN-f-M*|3bJwdY*5cl0QLDG4})^﬏F@ެVoPb@Һi6v.+]Sps~ޫ/_Dn{ڷge&Ioʿ`UP<#(mHhg{5m6?{ܾffJb̒mf,0"C05PI:8i%s˶eK4C[@ehCUsLUW/4JN[s+7]'uݪU|uzgI\yh²Ru V͐ 7uq ۨ}'JSj%zYVŗq>w-MͿ_gPNj?|j'A_pGo=g^fb91W޳륋ؚ|_z̓YNR< tw\Rjq|"N$V[lxL}p9jiK/4aۻr\bem|'N=p"4THԘI7ZO`c[ڡtޕÛ۷"S5!Xq1&J>5UmJP_{ۦkpᬮ|뼲 I{3qbIMc%)p0Nt1jb?`ǒz쒶h˪27=lpP Ͼꅻiv5 wo_;ZJ/ͪ` {LJ_1&JA\^'ثFrFY*U;Ӡz@rXb~ S#"|Y(dj[S@xU\ͫ1nQ6j777Yb:ǟ%qеput8fkJ)8~d՝p= wQ5t|3޷N٭J(|H& ~6pdMa+$\9^~GFXpݒ0 JY,I#i6u.3l:*޴$j&ggPWMp@sek?Sz-]lvJ-J87Wn}kǞؓ/Xw]sI}O?gOI~Q~d?~Y ɆiP.NeB z:yDYSU' /?cnïG(5NqD7o#`@&(tyƶn/G>ʏފ^\R{wuw)\eJ h#qMӧ@+x9'?䧷~Ǩ?}wG,0O 7o/z`xMdg3 00M]M_}%j̥HyPDt2󞘛^z17ue-;OԑnoܤF}p.B3 :gGt\M\5JxRV`6r.L y1]| @JD1 2&5CMcxD$vV4"R ˭ٽ 6m~{c~(jm ǀqhCJ@ ̳ q^TXMnjLEsnd'zS+!VA32?O~#{Ͻ/&9'7{9̫K0gasʓ΅f5ˑ.,/K~5' 8fᅪF<,*0>o 1@[وv>7ћ+z _wV>}ؒi:LơO \yER>֡r Gw-NgB";%k`z̫US-msK}~vCWt?˟a;ʷyŶqV6~V?̀Цc hfFhj@DdVl/7ؔ,R\M؊ӑKk$޽wXpS[Sd@4y '>m&>p%`Ўxpi(\'ݭ2a1:`u3߿ꚰػ=Ï]y>y=7oK}hZN؋tӾ .PtK꽪+GVV#Ytz"CZSTY7h30 h+w/?ʋ|ӇU19@ pI' PdDfUyɛ>z2 ,OXVZvl<\>}+bݸA)ͤ'ZԻ51`0,vק_a~p%9CA.nm_{_7; s>~٤Z8uAi,C>u$duNdDdNčOl4l31JsBTQP@Gs~lQy㘏OW`:rAlH]s<ߛQ*d.Q;NTFiOy*×w~zhXUA><^lɫWwœM2waǮm]u+D jJ֢qU# TfT_$zWYxN᫵Q b1G@|}1 ?~<ʹĥn={WE^a^Z? ,zRXh[>sO9ߺR! lM nM?<nzml<^z$R.I(T9ܺ9VϽ*IR=zqǾ|oεfߜ&ƦBDҽ'v:ͧ;5r*~;t9ߡ=Gbу3(R#B`"EV 0ʥfn8M.mۥk^˗k八M57eǟ_/wzVƴ7 ILPZ$^|6 €D-Hd@&'tc#[b@ _{Ա~@6SOxSg{% @`E(J"sV A|4XVndT)R_5׋km{z>zc_R:&mJE% r[mY UMޞ ` Ŧvj'ld~j$aX'}YZ,=Oߴ B7OX\؄9 MٴhʪXikZJCnOl*-F8sS]FY&Wz UX 7[#ܓ2H]$*>gV**OQ_XX[8HbXnY~U ⒴5UםT/'﷪ɧ.]{gx%K|]A M㪠?s[\햌 ocQ$"kP ŢP41i9t:mjMfꮶ=G)fii ""2"=G rDEB3m va"Gɣ{'~Ӷ'/+4km7]]C]3?pw=?$Lj JD#.p]j1e;)[7'Ndz8m$\G* rR2IcdmRPf:G^P4qTCmNZ tuZt{?&ziZA sVKF1ԩπ_bW{8a@fi)R|p`uugD |?@)yv.Я :ؤKn.^k_aib'&AR#XPVm&ζhxK1MJd! {$PDOy{+>Ƴ,nm9TV򢸶ɻk(+o6J_Y_"RD4;6]l3@Ks?νCRoig6UhU#/N7$ϝxSnYxfh+._{4e`1HO_7/k}u ДGq j"|h\ zb^ 5a:Z,'ːW%2ï2!!&Un ( >&z#1g.LOz^Jbvy\ۭݶv4t^[*3OÞmch0O3Kʩ8s:7LnNQMbNT\M%O-mBbnE8 Z@~;OaKꝍbÌ],:} opQdr/4 1 轐Q&m&@^<,YcE1@3w*`j7yWj.P G}nSg6 Fp͢SdcrVeѼhLZ|ֈxTIL4e[W\)\wX-SM;l3ęvX\wG !ŃO:Qa:Uwe f+wzYg9+*a)t6/ZDyBM"5:^ͫa/&/<<ǏCQU[W݋=qj$T- Y)Nbpp&6nv yj ufͦi\KRbp_Ҟf]Sjn绮4Lyf#(euy51b$LU+ T`U5KyUq޳Mmlo:36:zQ&7Z,p M"   2WE!E1DZ3t{ao3Dy;^a0!4CeVmhYvq₶Dr5ZQ EԢ.}$TT@ڝn FH *k( W CTMZrCEW wPƪ課$ e➂JWd}R,T>2Ȉ̼茹 l%"bgSg%pF WIN&ӕ2V$ʂEwݪ6+W&J vdhMMg7׶6OۥC=UNklcdkd l+$ wmnSY]q=4Z;9?kYHΝ//zW1EpA;um[9>(gܫ< 4q&+ٖΆ`WŢ&-J1d6>w䣗ފ 3RxgȄHRTNMtU{@0MJ @./)NLY^s\WuNb[F@"MЄ0v!@u>fU1##,nG&[tY1ɨR)imj+3P E;*|LMi QQDn!)FD At"S#|j ϳ2V'{Yn7nkmˉw% +`0T=x>:"O:kNU!V 1[Ɔ!scNE]v_LԷ.zٝcdڝ|082P~wz}UnzfIϛy`|vHRK+)x7m{Ӈӕw6XWP&u)tC|G|,d \~a%uSf4G{U~lZ*_ d`-ll(ӝѴg>6&Ą:xr嫑M!KҨ!Ěh@طi%qTVvV:|V5MBHWƈoD?T%Vl{b]2iZ|Y!  Gt 0kY@ W^HRjFAzxE 9)Wb!M@AkhRAarGU9o\U;9:eN_zKQ-E"h,$EaLԖ뫣G˃ x(I~atg>\[W^Ӛ_ƒ~oq8`G:rrnk?7[?}hZh\pC7!ieRzr~hO D zK{'Ow/]T_G`MD>Fo0d "j'ĥQPt=B~Q+k?t7&fibƑ]p, c'Z#^ȠX\Ụ H,@u)&WQJ8z~:z0Mvۭ\װTچD6HQHYJLt7Q^B( RK`W)ԿUEskdA$MW+/>և}Qe+!r$wq)MYMÉ.{8@ԨyLܶ3@8塷n (g2?dvFÝ%;h#eWzZZ,fexԣi`O߸-TifCDڒ0C8$);@ц4JmK =+׽7IO_=Z=}*wh?|yy&JK|^-Sj{z/Ebaa5̡k9zz^5Tb$Ji5hBVY4V47PzSK JfѨK +dI5vzYjB$:k^3$&Vf;j7f {I!(τ|2$ĀWt+o+mF` ZP 2* f=Q%*8O~7%P?GqX{wq=U8MqpUZo/:[9 ,+<9δj@3:/ jiδg9MJ1"`+KY7R}cgmX5w66{󉞴z*+jBoo -V~2Ţrr!*8S6/^xgv l^`!N){9{R|d Zf:iNĸ)8ƠM͗?[ΪϿ:;.;h+mHT[[/jT8yfnPhK9iłM'}F$:IƮB[T%ɎNfBsS7)# 3 ,yMZ SAK +~<>7"C*(I!mF0A#Z,.5 M</!zPR1<"s$}ǯuޱ: %>rȓy\ E9M>qvrj%+6c[+Yn쥮[_wFrUlmW*^w=;Oqx~JVZIaJHkPo0Xo6vvͺ:r7ۧtIIGxmK+-&~1 4eB(3Jil'w߸ rWǾP|NY,Ιvog{rú^FL.?5ݚ6tִd\ޘ~ജ֨_pPhP*q ϟW5!l0D?/q >kGN1 C0bCԓz2)SAܚ R6BiZle.['Zg'7t2{iz~=p]}n=EtupXBY|[~ksiӸ44kugyӏ7|IUHX3d!BjtvAڗ 05 5ȅ{@j} @! xOšctqQ&wYS4ޤi植JuG鸪Nw2:dm)3g4HlR/|[$;?,^ښA U@YW%DTF39Y2ֳMXy/7[y1Hoo_(a^$"6l26x?3wBsO>q<3Ҳ-F "+ ѻqY &4M`L"yyrg垊.[b4F) 4J|po=aV:ܸڵpBҘ2wfv-?{_oYK/LBƓ߶zS+_Fz=~lɢ>|`seVCs*m|^´ޞ٫f7C/#tZf84eQ>tHZSd LmU}~zŨ4,# ȯC͟QGP*!kcL*qg,w;gzfrfKʮGQNq=)]^@]^ɪYMŌJC"RŸ WogLbjsu5YJfN zQAQG隄Xm% p = BDD@܋;Q =#"he6J>u|6Iސ +^{/RMeY+iT.67_r!xWeĭ)A 4UX͓imYԄuUsqNo;~W !ϻ |rMPM çמGXm[6鲲'dYVM}3h-5J;|40i_k5|ڗZ[J@) bU}6ōYS/Uh{A K/1Ro$Ao  w'wv=XY‚D-Lfv4c1k`;:Hyej"5MɐN*TLY뚌A)ED5&a٦9;pՊ0 U<{1Pu:K-}2iUL.\}zij4+8!&RPUL qa"bQD# _`= E*,Z:*Vj:~ˑ݇Ogָ^Ň-46%Gİ{sd&j}K}IJUUU3.e@Q"TzR͉̻.R/IY3L`+!3d0\oTÇ';Yb av)*=Vc M {?]zm\ YK-c@eybE#& *jHpK>K/_&Wdb'/Ys{N$r&ۭܖ`Z"X5 !Ax޼>Zȁ0 E&H/N;wĈ DRG;ëŵSi+KՔHՄPgzyS( UfTC $aૺ̓.N[]2xwmHP\˪CֺRҾU㤘ЀѬ-1z)OVgtnIn<59FDb=B6psR"݉Yc[&փx$tKuM;o?MG\rVP_~h%Y*v*JhC4aᚲyul2 1/gOvr5/7wTiNVkk"} FQy4+F$/|<<1>٭ί橱+)+"UFaAC~ǿ಴褽ܤ B%@mbudpe{F}`8P#ltu2lS(%1.<<MY\jSC-uaT;p70.h#ТEywnZ"`4M,3;;nCg P;oq9ybLVl,lnO[l{:Oh2iƳ(b Bzi].ϔˏeکkK xvuᵘ5ߴoi#ϟ&iJxJX F9/{KOMs (]g'.̇d:'z'm"9DiXB@f2[ڽ\k#"^XM!k|r1վFrWaa1N ݖ jp T'>@nҍ<;G {~ 8.)jY&>rN;W?ôT]5q 핑'~tT]4GVu}F8sGnUVeR ĭl>F8RbfMUeȘvIyaLSUAl,=*QMydx 9j%c ϦSuVDVi#I&VYV1ohk|^Jҭ~ѓo9(-BӃ_ë?10wP3pv_|rβΤnjps{8+kɤIϾ{Ys]߹/7|KsC>^j7eޕP?3O/dZ=ԙ mb2w^G! [ X""!LuM=jtъDk%29}}'?=߾-?Tg)PK׉)6UM T@ZzL2//?/ ^⃫>|v>}!&"ٺ AFuC{x;Xcp( HM8'/ٕSeE6*,4 ē "9݇w--Qà5R 'D}y!kkđ;o.LD;WDjwm(]n~ը6:ȅtn;14aIAҦ ('Fy2R:FjDk;>q:(5IX(@轏=gVt Is\yBJp'wV{ +|Ku닼ŭ[~[Ҥ+VA|34n\Cz5ףg~/y-x AdHx{>[ΦfÕ[P:7flu%rں>OL^kts4Ƌx0i5$1ʒ1wS{NlX]5ETgM DH1A:ύV?ߞ-?mٯ_NE^T",&I'O}S&2)*vg`[mtuYO6-I tS}:Ks/\PJKp;=VN͂*6(lB,s{{6arӎ9vW0.35]TX^Ż hݸt>Q4 3cFBMT"@-CS#} )ds%/3>xclBiqѕG_Q YMDA?u }/~LF>T#(A8Aat#M4Kpސ*[6wܹ׭ʫ}G?{ykkjgoLK`:|Nܚ*drxZ`I Q&wF1m[neW]K\%AU9\M$멏N+3bfGiI!XHd$USΫ]k;fWo?s펧-/5d1ȘXgI0QAkLrMw1:S<f8BnȄ?=W_W4K=p *xsD! FiEoW 9s:r+mBG6JRs'el B@e&ikxXཙ:yB-\f b`(Rd8we3V~]mSD y,֖k /H cx*!;'._ }rA/@q{4z͕ig%ٍ~3ItsڗI>r1Qu',ʶ٪6GFoT;w2d7zc@GYפ,Vc̔EE1"SLG ]U4۫R\̳X4 $slr{X=u̝>AWGsY͙i\ 1RHY=X]0LAXVrk'xcĊ4 l!a!h&D XT( /yp;:jeq5́p"v7gnMc$VՄ]dTlޖhlT.T¾n:+6Fh=56Vrxhpg/z,] 4uJHU\?,˧dO??CJ~Gquѯ^(0 P*}4MˉfGUď$G˵b*&:Y[+%IpESZlM7z ]hJVTu} ģZͷb0*Uovi[Unp>uoiwW E,gJalI&i,=Q+Vk/=wn]:w^H3AQrc>>:gt^Dh*[s6Q=ގ%˾.ǧ7צF D~G7-$Ti%DXDDV|ߜ^c}@p𴞝^Y]аĖM" sI2CcA(|+&Dؓ bݢG[e}m[]6dÍtN?0r8jb($+RiIi݂ Pa!DqMZ-D.ѫWPZpxF<}j lvW?)ED{(5nw^^B;f)M:o;stw7TX3e6Nj3VVlȰ6VSY KY/[}5ѶKHǘuMts&PMV]p1T$;2fÀXaXcK*a,@om祀JzM![߰]?ϾԅJ,Z鵮»GsO>?y}k7rc4Lbaz<}Ĥ*#J:I-bUlfi|6AWREh͈|pKs/*eD0VZ]eL]PHâˍ(d( Zo$gw_Muޑ|f hZ HT$FNQ8@ "`4DPD K+U+* %~N_D@J~_ e #W-v;WN2uqΜjV)g<;U]q&PM]e[Y U2Iw}h#4䒟`;͌y |]D M;R5Ė5WMC!^XNJ-Rʚ$Tevg`6E6 X;FZob.EEiHA8veYXW|u*C/ID jQ# Q#^LJnz:ٹR1?x:I::y64n`v (p yDYmb`b\E8F 䚦ͧ9W\G\j)ʔ$_WidȋnN 0 +?+^p%?hՇ~{MGAH,FR!*MRTvhT( #W!Y3.f$T ܻʤ6"m%J/͇JM5=ۧb~X2sNUM+^* M;UE=HܙN8-c U)DebL spgG\7V҆YmiݳL#'Yu[q3ow<ܡ$f";˲Dk5O8Ľd&ʹ &8:_Ó.KZB;ipY9;ؿ#+>3Wo Mouƚ*'sD[c7$絛sd!bXh^R2Nis߁gj^Fmc,ͽ/\c Ky> sۗw]Qm2FIIӾ%,1Ek9R{g&"P0 FO˲.W4_A+Bngxg{7V1Fo?u k?NF96 47Z^ L urċ)::9z홝Ci,E|MH<.ptٜڏCQl/3GmM+]ڿӽx>1IH{4x>\pk%B\\T FA,i1ivKkHTkzN<ܳ"+]KeӍxg6&1ҝ(Z:jK 揍Gu˖SX43aD1@h#RJ)"d$^S`Us!M]Ah1,_?y_Q+ Z-q3FP--F8|>geyGXD@n c#VQ29 bD7UP9nJ`fȍJ7=쑣A񅍸;Wb r[zKJs񵭭aQ}{ظ>$"02ҪXl9j4"!y1mni;ѓHUH&6fiHh co޼v}]hsq1sݏm\;cFifOsMk[)*ĪʨHDAQJ7M6nOlnPEc0 9zl*߰n1#@xG'үw&>,AEc+ "{mXLʺBgV{|D`OOѴƓ~篿йR;l-TS̆Qv}-_,'~Gl;%!0ke[o;pͮ('$ 2]J L=B)Ca( \Tݼs >e'0Y.{\VD6~a굀;6K^r}[r_濇?"6DIܜ(%1HH_A'* p 2EB |D^Kf[ȍp LNtm=kާj|3Y5C^&QZᚫc潯Km8[BXvqc#3m-iVuX&yUbžPL뒒h봟.O172}?~G_;9OI_/F!Y{~s*׀1.s؈Y!jR8Սt+UZ[[1O|;yU=G *C'zCO|sI,uYm2^бц$Փ23R>|{yW~gr5ƏV'edBjL@Q>uy7M4e}aPcDY57$tIetPPt[kҰu _a(,[着 YCPCd +>~t9o|轌?guÿJ$auJij%f CWy H)1Tkf E$Wj(5Pt 5M\㣈UfID5!4."Z-tR:f92&J.|TUmB=c6clC94UE+䭆lBýna Vcu9c@Ig뢮ʚ+Wq9oor"tpdA+"887~/~c!je,)Bi!zD>>&v4@lXkMvT7LB2UO}WnpHRv_3?uuܝ|_so}̂&) 9z }Ubԑ""&20G /M4keyj7o}[ud2q̦*ƣ NuVV.I2"CVlzZl!F5+ם4'b7I>u8r#ٓ$)"EFĨ #kbzbAkX[l "0Xk@H?X*_ZVn޺ـp&`x4$KW*s-Ȼ-uo~|`HjϡՒAOXsljaj_)MB\Ӈ~w~shRVQ)}AJjq `Q&C)ȒM7{)YnbfU9>_U}K&ٵV'Ab{4 D`&fթI@ 'Ob3Nm݂#PQj* @o&gA2r?|P,=X/MJsG@K@kV[  'jtOԪK5iuz>~]8Uoi?ˉu!%b%1btjx,E0%`FE "Re3}?mgWmY 40n1j_V!3^rq[2(3G&X }b\ uOt~Ϟܮ @I*P" 7YÂ*M{פ;n['"Q, D0%A]Ԉ3]ys$L?oݟ_ݷ4/ E(I`YkvF2$yE-bdh2ͺ/%BהC zbEv|ڬW97vuZX4\`tcڗ-i3!IlNe4B.zD6IQI]ם8w7:ͻ xR+"`*% Pt@i)H ,t}hpS7jz1l|Q!.Ba@w xG^#*d?7c.@$!WP: 1@UVMQ@Ta\QJ5 U%c#;[I:mq6JdO@kMBqFUQQ(&(gӑk:'肋QyLDfN;0 #m}mHQM&u z` E40@"DT&HCNAbxV H0oϢDco1.>x!j2ctxZ|o)?ŧ_գKz#fYGg$"GDicˍ+]µ]ʬ/;\U+8Ʋ.E"1XHX{3__vMi%md޴д0)Q+kER!Q]%`Żȫ6ml06TIHukH1'R^kFTSL&v4YE` $ 蚘njBA%B Zl!qL y|~]4bj1}fI. 0Mq:FW&@# C݊tZWGzA$i;zi\{t#hk9I7OM}ߨ*IPh5G1"bڗ"lMqjh*`b5 R6AJDR^ۣX&XLEE X3ȫPgGtT"O*xutNFm">F` a=*2LUϯs7LiS\0ZR"q'VӫW<\MlBe\q6HAX3TIIgZ >MhV&uaLgS0v+GNf9@=C0&2&s@TJ-!EAŀ6MM!ng.0+mkw擂%(x{+@H-$)-HobY L[Z(R,F8yqZs,34D:<= [-Fl:߄yZ)\ir`Q+ }5y] S|o^dfė\E PTCf (Y@^;X5GZAE00kRTkʆUXV-V nɦCeQc,c) P:ahK4ޗd"V $J]r崪NvVUBF$`T HT&D$5"'{kI ꑰBx@D`=fB@AA@ e1ˏ`9YJP^",$FNĊh0[C5J<|n^}1% LaۤEh DPXB,hfYSt; "Mäq+[P I>kB >щ0 e7AQqD1a3/TNTdf^}BKhAay."'8"`nF[MY3&Ȣ!$zAmPfpP 12!3DbMHM)q}_1=Rٶ*vbUI:`?!/BQi( iJBf`FlB }T~}s6VZE5W@/7ph m sV4>:wƖXі[uMj5:Fʔ!Zz& F_.,`%  < .zt&f5cgw:͹ާ.DN2e;6Z[(uXӲ&cB`HIអ"*@F$腃,1޶P#EPIE616jUMB(i)$$E fFD½Mud"q'̂"0"A%RF鋣JoA:IUfnN)?3ig%#ry]TΫ h~cıM販g7Й%Z_z/2.͝el>kZKbE"4򝍪$A(Ciq6ysi$l,`\Glb];탅dZkJxѻK{r( V+$"I$5688c{M7pMpV|Tw>JtbocdFtbR'D1h,oisޥL O50rKT~!D7!Fo Y%S$AȃTk2C?'<4HI'J/l\|/ϯ= a|~V?ѣHo߲'OYyqm׷kkkޯWu!oy]NN+6is5#\-⮵(8%XB 4E(Vh@h½#P{6>v"פiY@> RgGa9E8 (#"8@n zl=xG3#.hT#8 z~pͩˋQ-zEҪh< NF R,JL0ϩA %,vztTs=eU<2GiZO~*wo~CO|1dC6VVwWW>)gyK&M%q:2;6]^nps;HEg݄@ۚ J0 e>1FE`&  " X[ā3>qn rD#ZfV de-;Ym.7)몪(1Fg6 `ʾ瞽XY[F`Ҫ[?".T?I[ /sn_/_}ϽE/ərVmm6barfݦ?KV~MW?jՠnASMg7vǝ?W>޳eK|ZWwZmgϭMhNv5ny4SԘƙw.VlN%Rea"jA@ Jy (bC13ʙëQu% ƪmnއZgg0!LdYTNqjB5Ia6h,Q^+ZߞG3 |M ![9cRYM!cL!c ! ^z٫h D2/'&ٟԯS_I]|b$;jsL|NTFR' M1Gbg|ggȽ;tW5[.|U5żVhjkKS۷5G|  X# x2"M#磀3 p]_7OQkZ/^,N"_44>kaS‡{z%~ 1/^xozz- Ϸ[SUuNU -Gi+4S*[UsXޖIYv;~-7rw8w~We[ե\t1|,Udɍs[򾁐gAst, RL'7Ox,!Ҝ6ެ% q`ieΤCimJp4Mt:`A$x Dꏥ')ڗt4b`K5t6I|MFeEl+6NFFMcq*/EPʣNN6x3OlIU9\Ujk>q FF[ }|6zIYUkø}gՁbOW MU,{=VH\rn_VS"M(+[9}R1 |?+"o҄Z$II,&snc 37M"Tpyc_C13v 5d񫇥k`~IBٜ}*蒋btnxYαOzl?7~ӷ}/^>G9}׮>7?sG>h=q:FwW/M9[C[[=ooވ}#N瞚&oh+yThm -7օ'~CO홇O^/=<g.L^D7=g:W'9| ,f)\+$8|vgXjC:&47gҝtXǑ H[l̖ݷYCy?-y0vm'I{}-<~kGV7p,NWMaAsNU>e_[iv>IҁNGF V38n3;=|Pg^ ӟxy<]~5x688Nϝ{;~+Gxkrs__OO/~^x6Ouy\;1Oyo{ro%0ϧ r[.[mU]=rfppرiZo|O?G9ݐ;ޡdTݨ_ + @|J $l g?/]rX{3GL_~'ޭqmyW>3lnWW*tN΋ Kmr_c'$;WݳyOwyaR곓i3Љ7SlDYֶ~ 3wwN'(p(Zd=.75S*Lt-hUؙ0  eU#G 4(d~MUeEeB]1F"#c\؃sn1sD\ŷNY@28YFFEG/Q;x۝q9gsu͓β]m\~r3xmwG?C^|Zcǻ͝'ރg^sp8:ǏݾVUY&G_~Շw$qI&Ͻ37y9 fAT'K堏mϲgɒ%K-[")*0 "H"9.6ǻ7;yI?zb,@wgO4UT}[UN5CTr4T+8Eeh)#*Nڧl?~nY].{ݱHZ\s;_ԴgOƪ:~wu7nFv6HyQ()PJԺ-(@Go b-]2uUm图J!9j]*`7Kyqԉ'S6{ ?{zꅅC<|i_;#tڹKb7SYUKctV%HQn0ʖ_ܷ5T_7NMQMaƨC0pLƂi"wU^ڑ?t:mYie%'<>@)ZqM*ls?1 -e| q\N~Ө^$GjdXXdqsv}]bя|)c[Lf]1WfO:=1>VAֳs܅{?W+Ͽ}ȇ>$x_juj|kg}M ?ˎㄭ|c*+;'֚݊TO;Z#qDw͟踎'/{w#gSw l4Q^XX4-n_Y[tyo-eRNszsŁvˋk?pLS-.-N^>31yd0W[-Dw31kxryTLs<X0 iI٣g_Xqpb0}|>D^/?Jjk9/8rl8}LĎM<5 K6C$80eo'g_VkXS:qP (J5ZYYvxĐËfpNȼ%c= &MԤRB9O#q?Xeȟş?7_DZxnn[:?әkF}i6ûunnޏ\Z\}ͺ8stj;1u%|Ϭ5G=?BieQΖYl0.8HJ}.u[ۧ[SzPO?"Gߔg7fxX O.XMoQ:T4GqRn7jxjE6`T8Z.}rت:.tQ]5ܠl*Wu-G)1,˶8 `eY۶5HHp$to3q(+уk# o! ؏Ś:Z|? A:x$R =Q1QLHp=]|Ï՛Q6[ػs g0<~,mG{zwo~Qo؆w3g'ڼ;~`~yyb~j}{~~o!l|~wW;셁XRKo2'_^}Nú\ڑK;6^o/?vdn)#.`m}vɋS3{-Ͽ<ɳ0iK>S=x#wm*eBHV#ESdu>,U4A#Bk\RR&Bl(!@R= 7iC>ܑq4hoyѬIZ85":<ݦaxwzS mB:sR:v;f~zjyyw??ѝaO?Dww )$KL^>s? uӷkws{$?زmַ6oro+ڗ-,3Y%*l0f[緗=WO;%r\oӋt ,ӗؿ}{wYY[3̦Hwg³};~ɆMV ,k%B TmP4|Oxz565%aA^AZDTTuk魿D4%cdJRP0 oaaarrٳm۶eYJiqc ظplU(iq':Р8P(YQNE}tL"g,;E+G8a:V 3s9BxC7?u7}[O\8?wv@T+;s~-\4EuW#Fٺ^ߺ3 Ol v?ٵkZ{ֱ{旎?Gi鯭Vˎѯ"çVhtj+oU|]n*6C」sA K EJ}C~"m!̤ R˜` ɱkNۯ-EA' 0X1R{ + J [o&+zuR|>JVeD/_X.8(&umWr$\)΋0D.;c HhɵxMth)t1"6][_ٳ}El_j={:CDݥGNK_ںek&7ښ׾?<7{eҤv-`3]Pصo?;4S(us}w~cvQJRTq֑%#tjbb! ^۾sx:**k-%⠉B[z].pH) ðm;˕J%q8k4id2Jo&^Abl0 qy8 6k[A77oQj֑tsMBJORϧxrn63*F'SiKfM*=?ÝVoݯM_;z>&&ceJU_rs3?᭛wnߴ +*ϼxn~٧3]d`gm)c%T+:դi[ #E45s Sk6@J!%iaorU^ IZ4 nS5Dpe<__>/۱@X_gv ]ڟFJ7WjtZ3 B\JJ*-A*@5&EB&ڳ~а\-ʴt3P60ﻫwGǞy fa*nCDZJj-`T"kVHR+\?̴ׇ.4|>dNh$PRZJ%۶0l|>53$m(J\k~?$VuAr!aKC/D0fRPDBBQ:;8Vuǭ?oػgdx0 Z#!,fIsS BhC#=OeqDgiή|Z/||rj9^};w闿cqO Bt\(}#}ˮ<|vn I>e_m9c}F8dwS3cVv=jp.İ|BQ*S/#/N ˨3=8}걥gOSqN(@a_;Wzi]]b Bs)Z -U+yoe#awPJ%~HlQeYATt:ߟ[V$1N X_A)Mf&1%¼@T]iVM2z _Ϝ3/LN{==sz>tR4UFJ:M0RPwqg %8j9O>kY5n޴{v~ S_9zTDW7K'bVe95u}xiaб{YX{7Jc:x^ )+߱?a~f v[n{Lc !^`!ڢa GEL]zN݃Ey)N>9 fK6xNj vNtZ _i(:֚kaH1"(PD\DU\J!B BbBRT6MR㸮<ϣ&D (7|_X$/06r67 [o[Bd2 U5/՚Q<熾sgfV/^>ymnHʆ 2v2G<[]iۍRYպ]7<6Nes∞={6\\?TܶeO[xőW B,ܗO|oSk;m[i-oӗ١Rm9'4]ĸeز#۵/^:rb\4Z+|2EYO&CT5Ì'}np[ CO" q'6tӳzfa.4U$CŌx`5Esy񗦺suɥ" 'IPj[T DXA$v|:m۲J 3@]l$o 0'Ԡ 0 XBN-F}:|o{>z= e #m Ff@5eYNX][sp<]/?r0RU6:O\39c2sR WWE-LĈaeW~WG}kGY\^Z[[ݿ\ؖQFL:c067Ksӏ 2+bSG1F鈐ϗ|M&fɵUz1G:̴ j UGYEьQ-t KGvo?%KUQ|H0@r2J\7ϟ_lqQw_;ә?Ln\P\+AcDdo|p dvH$+J%< $9l(yQ!2LfYV1< (@B Jl+#*Q7)Cbxd2ś 711\gP~%(gBcpMΞ_.,x'{w,ˠݗ>5wMD^zo=bsQ// 7}wSV4wSϝ Nw`V>_xgsSJZk(.M.S{uc3i=IS ezGF7o'fסeоhЬdye9=ّ~#Ǚa$Dy3hoM5#[.տOVGeJS՚Yt(m+ȕo7kh*ܽ?~}㍎TDkZ]i#30ƶmg2OI71 "ι뺾sΣ(m{#I̘j۾ ![;k\!L;xLĩ@zKF܊Qi\2Жtz<ҐA͝o\ T!-A`N4&p"p3'1nqڟ8c HD=٬ɅJDVVV')`D H&GkThYg~3Dyl4m5缓f+ ^EӬT`Tmǎr'O'~Iڈj%Ɯ t:LƲ,y7DZ2&n@vaT7bB0P 7Rw0}@ֽ,eӎbknilBG4jA` 岙(ЛtmVyr( N:u`O_}G}fq*GJk6 lt1$غ~CQ?W_|af/'~/~+yٯx˾伽بԫao1Q(D"B Rb90)qt:i[t#a /] .:t؎ŞaKȥwߘ=z\,\ZF@/h4V(tyBODfNN'铵 3ME=ppYY[ML:-L%#0Td[lk4]vp6RkgdUd?sSH/ʕ˕{WM55fZ#C-BD1Me"yRHvD%+1n`FHyILyhۜ|>_gff۷o CTTJ=Q :hm-WQ;{p'\+~6͈+7 Mvi|X~mҿZ~AtCT+^|6-gS:BHRB=]oݿoHT ue)G=TKnFiS]]eVvD&Ux B\.*CCiB)b*F@8oP;ckv 0q O%ْt:T*\n||q%$1?Ay-=զ5=ٴ-j;lum[\ӹ\zeFr/ },ǎ<nBqFGFˤaH)%}=C=|׏hP$i (SRn ,0vv NO~fP,U}MtMI{s'B^Η}zavퟟ^H[vtGg?VےNh9e`1#JBXc`i3*DB _f*o_^4|թv(kpX`fZ a201ả7z7@2 Bb%}٬Vra&c<+\.tI&]"T*nIpIabŏo ^ȕME/]X|76}AcޭݥSvuvhTQɦwmݽМٴMWxeYֻ'N&DqebSO,(&CXZ^>rK32ˬWX9޼֥Uil@ :?=iIAV{# ^ &W/3w_l4k\ȻS{vODciW` DHhB#P%|3c aB8F[eKAp :\̖X q Bi!m"w+[n$& ,+++F(\5 #f3L*B5$& -1D& ǑR&Q䑺:Wj6 O7^mo[݅vjz kѹfm۽6hJz &/HgcM} D6/,-6jvTmZņ2@RDBFh?ub˦MTVSN{릭_z+Ƿ/z1xE] KgϏne7t_?__^.}iŻѻ61w^ZCUeFl! xOJ#J#Bu6y:!WXFu8ުrlԄtw"1(8Rٚ`00wݐPߒ2UmjFt]׶ h#M,џĈOdZr hH%~prUim!o4Ͻ"'| {p7?֘mI--TkBqmMRpɋҵs%Wȴd͛W׎;f[j^ҊX09XQJSey۱o<`O@yxŅ\ixL)À3H}>@wn~}~~hDܿGWͻ￱ EjWTa-QD44aꔨ @M,(A$ c(M)\x oSµ&;<{0Wn]Ksi* Bk h ])9uaⵉ$_[r" {'BxR$ sΓ 3wH~! t:fe˖z6GJۄ "7JaRY/ lXy9 V;^|ŗm:۷VY[[_hwZm(wk3ph7:R)y P"HRJzjWVW'N,7ߺ}zvgϝ w3+aif-!T:_+a>5GyۮBOGGͿ ȹٵF)c5 M/cK$IA/15/X..5UӶ-m}O4O,tRJ )@4! 7mob,,,TCIO!\ @kBML(q$$8R!XlI Fy$}S/\U>݅z%ͣO MCQc|o Rߎx3N MAx@Q7M31 Ԁ|mɡbbf\aVٺu˱޵kҥl&l5N0{^YI^ <' @cS&c k -` $QF4bȏD3 DpiJ$ S3/w8tv,R8o`֚h HbjZa.//\.I6)jQ*qs1ƉU.7( tSPY '"GiZN31"b1p:nZXX:ul7ɥKto4`Vwŋ^w=EboO޾3iNB#JS*Ql[T|kw_r_3/,Ӫ4dߓ#Ei8tJ.ƔH}J6;;s̥n^OA-j0B"4ALbnؙRr ["\mKL\`dSmiƵ1q,BAD4R?R}wW`SB#?|$E+1i $D| HPPb'yb8%H%iטRzu]4n'>w`oA5&s # JJ\qtp4?`WccǞgΞ;wyjCx_zor¹ϙibuMQؕ/^900'u3\8y) #XYW)rDPK_{Gf.7iBns3/C]&€@Jk5hC 2fRRH6h'T^ϴB:.:+3gۀɈ"^4cP''ۦ42Xض望o3 i0K(idJO׏ F:!dppж@=I/#0\ K<BHTJRinrD͐m;̆TkY<57GripVmE^q8_]V˖F7kf5Z_i?a*22/_LRuGn۲ 8@snD )ɉ-3" )dh4cL68 n5+&fD5Fd Vy -$Q D$pcܵ9XPeEq$HTH$u[ML$d$>Bappp}}^ R477WVkWy˲Ɲ7&: CuBhzz:Bx vTm;A;M L8s}Kƻ2CG'.?WmS 3ןۨ~ۿl]|o{sO.qbOl_v{/OdͩS z3GqH"L/?E.Bi4Aٜ &R"q/SXzbil1pJO喗8!([X0T GQ$=e` 7t0V@V))FHDnC4C"b+F!@ՐJjtZuU)t!m'֑eY|;痗|>OxA IL&MF܍Yv; H;@?j 4M|Tzkui~ BӠE~ ܋V=]$ݱkR;M}WNk۶[f /3?Ñ0'˒t̻YguvM)Ml=~hYlotNg9^_$)B!#AcFb%Jj)ci%D`2FxAJzn'31B3Hj8ΝCRXŚڮd8jAXb#k1uiiZk@Jh  ȫG/uRi0S* XTZj Iz"F썼$IVq&‚8۶m[__oZIϋM*"&**F( (bl}Lm8?h@FDX 0鴣8x[>ux׮]K++w#q.RwBrf6oNp/|șμC]w~K_w`sϽqK-ƶl)S2rQHD. XӶ4E\l~ Wٙ- 3r Tr)&4 d֠h&PF qĕ,{o:Uu(!w+O?|!2ic"=-yj %M!݀L (҂"֙s%gj!ZQ*a %Br&ܶrA$sݻmvܹ$ǥnoAO^-ᓆaϰ?+;N8(2.Dq1|ϻ8Cw97}yjRmX͋~G~܉w?{Á|׃_Z6 _ʧ·~?=7jEZa2O9QH0"*2ޕ/}32~Fƶc'#)ANshijR $%O1 V "@b|kΉ2P ɕ$Ԥ>؎~XHF {8``ЗNcm3) I "̾*bbblNibJ(#H60P]_6T*By|J,IU5)eP0 $"Vkn{j4v;Ʀv:qņ #B0С7ߙd6u4y߽p7~{V^>vgO8v`xWGn-D󱏼ۿ?~cpM" ۣۡ2O 2rn,M-0#l6ME|@K7@"0FY`AF#$Zj]ʼnL?uJQ#Qqk.Z vQ @F(|E!*辭d}սtvvii bl PQL66bX!Ԓb$G0Fq7餫EN9竫V+$FNcZ& bqWT*,ɜLFVUՒbH p%u>ܷ{ЬJMblYNѡ۹=2483ɖ{Kl-6Cvv'?}o~ޱy|ѓV;4[XDA88ngZ12!CkC 9 d[GM?r")]_C v̮N&"Dky[Hc+%`I4u62a'"hoIL@d%Kv!5ͥD K5Vv랞fu^>3̴ ١[ Mz.i_P ZhDKW}{Ɗk'Zo+{&LChd=Sbb41- Uq@k`OJFJ 1҂lKSŔ\ z{v͊=i=^Ft0lq6eւ@` X ?7E,qho[ ΝnaD"J#$ ) n|]^ˍ$Z.8NR===KKK%;~СJU]_Yg~fб/9ԓ2remmӳvλ_y73/{U  `k^243Й+n~ӽkfsy.? b')6Kwܘ:WDnQ}=t"h"2 FK (0M4R5Xj0C׊ |%b }^KҊF, .|\U2~+Zp H R9,cfs}+IjIbB`>?sj Nu) J`I=$= :53iZ y  o6Fc;n͎Ϯ7}ToAEN,T\Tkm}o>`V_]ttnk5} O^/c;o-'K=(W,,, -;,-,)===S>}n9yBok][;eP6鳌WjCi &d1癔cE5.pEQq[ﴺ|ζ}!P Ot<6ià (P H664Ha@Jb4` fX +Ìeӆv+s l8#`ę DK60Ev]l4/J'PfIËb$4ax…Z600P*v+`͓A&(І|o<}rmzzbRe/W0FN3->pguM:>xsLlzF}޽No5.S\uCq8MG UiA"J"JuȈ˭Ɩ]{]?;P_ ,Rs+pr@u Dk-  &$@B!B)DSjZK2FKw<q NsY)W& f~gpSıu:*քh)Rf VD!AvݷQ6a>'PO"$jB^7 lݨ< ?tyg|aPC)48lL2^mgL|ϽPbf}GoS}ELmjَM%ƒ {~){{G /Z ({#-Mtroj/1 6n5 `JC1Q1o/x`R~W/=[vr 'tAhU-Akń0F:i+5dRf&C %mOuR,no\^qZJ %#vuQ;P@A1 P03IfzT$$-B1h4\x)eB 2 #N'8;Nu$yap]o|F[\m#y(gJZス  rcLJF>ȳa+^q9Zv&' ?Vz]L,r j1> z9H5#Q*c~kcI ˄1^ખ&/,-Es8SlbTp=_;i(\ )h L(hRaBct Z5v!V2j-,BVP[YiUWnT!m <`Ts" #PG1A]@LVO@I 1ZV KT)2M4MTl6z}#q%w*ߧ`oTo' S~=wi^nC=_ybR khRk-$S'/dUG!pB:Q,,)ng9aJũKȲMǏMFƶ9la.Uj˃p>%rbÐ;O< 5Xp@tjpD %&L" !82,RK@MR8V:z'#Z0PD\(\6I)'\6BLNd[ip蹱B-% 6:*آv6Bx-"7i6In@b':鬮j57Dɣ>_G%;" 7PxTX79B52mOT֪JK",,-5[ DնBVJ!~:Ɨ ZŵXa^pwQ0vC=X~r_m>H8=N.B\yY^>ͩ'-t -:ewc\~4;D(dr[@B(%ǘ#eF.kgl۲16&TWtJ*HD(Xq0Դ\eRTr2W@@-fR+3l6BFS8ƀ)0l'+F8LVI$ kO ?swwyB8dz9do&z c_ynps{J3:&LA3SVd҆Er 2Vn C%A,Xp_n eLj,3sN`yj1eȤn3O(=ɃG! R) 9Ngԑ#峔8f0xuy~IdgHH;AT*J ?'u=~Z6bUɭ7]EtS~FdQo6 fhZDqqh}"˲yo6uyjȖ{[?!xy>w|#v :)߳\۴+{Ǎ;GoROg葋_/==E(a[/?w= (f3P6Q f E #شvUkrS"RfQ"( s"!!)iw+[*ZiB4h R+TM4 r0 t.€s%P146R|5;`o?{[IݍzI`8qm'`Z5լhoP)E.5>Ӣg޹7oszd9V7 qӳ< ⮮T8 sM}}{M!8co}ޭ7tw}wZorVKZ1ق㦛2`hڳSK uĝsxIUR{Wj151i{^jiV Кj)"D,xD2m8.L[Ƃ1LZhCN2)}_jy0ÎHD 0vrkL9A~ GQTV7lh7H&kW B#Av5b:@z gfV\`iZq,@ZP>4eؾ}xpSZz@:|ϗUX({LмlGUd;7;NUk~ho {glF FDx|p }خۃX4޹#gNYgf l;Ԅ$WH2ˡf1ggN* Z!5JF)ZbD#e-'7=r4RQVR(-($#`JiZkLjĖ \__ &a\c&Fkɞa@C70LB+ZJ L``MJ0F$ڒFc 19@0mQET*ePŅ&H e3MBИ Lic000LB-FMj~'1&ϞOJ=aRBJD0admcfb֊ 3 XL:sIەЬWg.N>3\Q*%Ei 5DR1"SB")%̲l`v:|Э7tqj 0na.JIl.W7~wЄ5 h}'D5 W]9ҤR9GT[_w5N\F W|h3kN'4a~04tOn 0Qo%D!Ā`AaX"$%mFyRRk!$Z+a*SKT*uM;(րPҀVfAJkLiRbl\*wtel2JB44 ad2& HY&e1f&!P 8:4kXpu, j؆)gf}_kPJR4!R`DZ eiB B1;faWWu鹅@`YҪr,xQW#wEBTIY!V"W*+g)WwWpkzIǹՊORua3N59AL<-FHlj/)%A @ ebJ%2 ,sUVjlzЅ=p рf˕F =X)1AH&Mށ Cʹi@Rdb b$C(%a0B1 _b">BjFqM?\ @+J)p  ) jqR&ՒBz;::fض{ZicҶLꥣ/{V_iR R)Ba(U౑!d뫡L} aN}ebHT%Z_^ѹ W_olݝNo "D}R>G>ak%dRX LIJ!-yhD)Mhd3H`)kM7 .ׁViV'9u``Xgfתv 5&fb2@#VA \X|i߶{Va$PLf8fQ0(bkЀ:"ba5II( QTZG g>ryLbd91A!X" Pe\t-wuDk4n{ۖ-jL&j֔R$e:~"W H]zyo|H߶\k{G޼m=3iǟOl!4hI`(RZa Z#BB+M(e( ZՌG^/6 [ܹ% vN`1@1 eI(iE(cT_}[Ȅ@iXRJ)ASjږe F~ĕF#@ac cXƄh `0ЫO8R Ƀ(4A0AbBR(ʈaL0BJ+:1>Mg(qƖiVZjC'{8 B< vޝ\nff]^eop_cz𺯯1|~b-%<^f&{XcF}?p'E6BR)c )@!ҚЄ7r-Cp!0SU=?afp:;?Uú3Y҆M3-d0M12 "4M,Ps13F'^N!S䱰`lXR:s?NHJp5 J")UlSs20}i~rdbǍzMcFMQ%FʑQ11;N.frFy!шZ924UCϿ|lua4MJq!۹iDe^V+}zAx#xͪoL{Of2yZ}Oҏ4꺍"|;i@g{Q} 90G( ]#@!!Rc}<Ƅ_M0 jOs1ZU>=:aˈs G$3(D; V)۴ \jcd `Nu-ZZuHSl5(&+Z^QLӉ% F+2|Vǘbjh(BZU0,% t FiQZ)eaJ^vFX&t>"el_X);oWURPȷ[ťFMUHz9:~|zcOs!Q88ze AiLVJcJU+A+JSFT"0 jB0%P=/bl0Dk#JA`ҲI),qNJq)cT8s~fǶ"QJaTIǒИ("2Q޴@zm^(]?0-+ c6symSBզa$8cki6 \a_G!*:ťj+u kޕkXĒoV̖6ze} sL_+p7BNG|φ(nh'5ݪcPZ#g@%$B&- |܋g +C)2iF>bTXI4T\ZZX`@ ͈mPbAC \ s$0:JT;z4 #Ҙ` `l3$ؐ*WȒ *dz{̙S+}=e]qVֲ,(0f3aَ ű4m 1J\.oeXc-adXr8_(ԛNe]FWw}d agځzv u򠯭>r#֯_{1Om#J}5͕ ƮW!Y5P@`D7:hX+AL&ڦZgTo޸[{n~4jy*3}[*: zΔ #(ŜbBPlLApzMp,JJkn2@Kq+nh!EAiR1!S2)INgM{ϟ=q0 vfpn+RX BLLLr9 0NNRTŁG<ZS}/ C PČK#a.j`T:E 6 f!ךWDB'ګW}M7NWvZ}(\UNVF}:@.!Ub!Xk`@ v1hgW#(c#t#Α"/b6F9U:CdHA)a EIg!% W sqU^G+JLQ!`Fi[FnwRfB}xKoyRcѻy?է"H|?Jp탒J!Bf*ϻ'N;24ҳ~[9vvҗZDRF8ՖX;JWn 0c;e{}bJcI\J 6O 6n8 !̘A0UE t ];at$R8_ѧק֢k^d'b$_nuC6؄ngwP2RR Y 1!]<"IL;W0 "z"_BE8Y~i C]{ &/O FJLJ҈#Stܐ)BDIH)%ɞJIDZ&s3yJb&c?‰oc۶iyDI9m$HQǎiE)mCak<wlڟw+vt)8x\|7[Xl{ghGD#p,9$p8H i S۽96K 2:1 \I)A ֘`Z!RdPjQklx$Ͷ}?e;k+\Ѩt|qNܑ˲mJ?)X)RA]O)eRJ HI夳6Eq,vȕRh]trfuWAyy dҶMN꿽|ý, k՝ ,F E?_s}m9l-,}Ogf)ODRܟtG7%o5-Ci)$H-EG&R(jNZ;Eitcd7* 2 |;H zrãiE-G(e فrǡR±X.fnSh tuk E ck6x(%4 kFJ -$̊9˜sNcL#XBJdYhHgul*{?V*K,vLJRۯ~z^=6w{vn_\1BQ(uҮela(A ! Qi`NWfbo~G^2{͇.ΐ{C[oC/1&NΏc!cBn|GO ye꯿j0I: >>\z'YG"B1y5%e"aHB۶-3 #ύm CWdžiG \oNG>~pYf550aaX *a3ƒWf ĄPX 0 G1 d/\RfQo14-LapE a̴f azjjuiٽ'2 wxSrN5<<QTow׎)TABiPa¨$@Jv@c RؘxRf\ҍum,P0\ӵŕR_^ AK1`@+(T65`}N {IŸ2UI0eas4Ps58BgF'DV;]=]l^+ 4b`v=}EC#eJ`R(TB*(0#F1oyڢ` %0B4ֲu&/O7-;-9bri2/u0"MZKДPBa!J&!zĈ 2st$IEX<βÙ\V5Klɳc&ƀ a0KKI~$av<ȖdIzqA2C~ʧ=sYk|ţ8G! 3IF}GQf-?m_t;59qW*kz‘ҋtIY^dk)ˍeD'yJ=oKL<ցI:tKpɌ-zBr G! MКҜ$ɳl?t\0N 1}1;kuEP-c/{#eD:y@xaPB՚0m!#@lAL7M%0XL: Bx!lQUy,+\(9hJ1`s<ύA ·q/8gBrLԕNpGpy9{46YkX kc\҆v;[ j3MW8\Sv'?ݜzTj]>G񃀙\ 1[{gQ:,,=TZnϣ\촧o|׎\@ir(p6x_7(s`EwM7; /0<#YIFT(eBQfRp9 4IZzugNC8(=M1h;P-ղ yfhcc3΋JTWynH9˵$30C<6Q#V)YQ)u"Ŏ+rJ(m+ 8C̑8RA 02 ꑜ+ݽ4[(u83"M/momyl\^8@q;ݭ'B+GڪvQ7R [[(Q9fA?g~y·+c1$"o/pǬNhVd&U@0 )t0z^`L"y^di(R]:WZ.w:hUKc7z?*H5ֶ:ׅrH`kyR L% B5``olR;\A!FuD*@1:UY^X n @A`<bs!D$ƴɼ#t$+ R.ٻ0AThܩ4gM4PAy=c^g{t}c?ۜsL|{s-y0'쥊4*YO5WWjq9NN$` z/\!֫ 9 ]紇C 'r$x(_NӭCH)m~ie*ZuckCE䚍<' NjOJ̘,LEV tvJT]bPQc`eC΁ YoA CƀRRZ-EK)\]Zs.&d #]&B*5GN09=u3}S)'< v[{?>`ia~:tNT*#rd4lTk{+;8\-,,,2IZ]r)ՊфLh `8%=!ٷtPu3_  ʓfcF:1:|v;hubI,w{QV(@0sw8TFjmuGpD"H5僜FtRw+z6AJ+v.SŐ*m0tH#cHq2Brm4d]%GI )J!(/UuX*KaKw:/x_pr^/<*Iǎyݙqvyg> B0L)dT: KagmU;Bu.qZ/307]1עcDiGDƞLz5RkIעxV7lyS!.\HljIӑt ;0 &28HjRZZ3muݝhq'ȲKb֢RN|v4d |mDVw"ȑ|h7ȑ;V k,"J)Kr%㺙J gB:. u*W gHKnZ7?-֧3 =:qXgs-~}\u}_pK5k2A9"^7=3CE \uQ(G(z)3$d \'g c SxD'3Wygu[4ϡ+dn8cb%z 1(NLi}Ǒ"}F?s- !g.G2F&w' Dʓ\ޮstKg[7j[G ^<|[8gRB<FsMr%3"Y~QJ.aK6 $#$w @9g< ՝);ʥn;~/o _ʗ>ؽZ lTn ʅpvƸx.}st-r3th~ybq JR+KZiV:$OOX"n c3Yuph8ǨpZ'ku=<:A:1)"*˄,L~CO,Z¹7 uKUqY:MgE$e@)* @^Y]NԨ0g,IT z @JE T u̠5Umuf/> ƀLp*^~r~V2D8,o%3!@44C;Y2c\㺮8~7 }"Rpd,MՊ2ȓܗnYE!0 壷u>{mwĉYpҔzI)/HڽaP.UH$(5(@ka \FP:+YFs$$2qp8,W"IrV<U*WBm/ʆv^ʭgB^jo[.<{!㪰u!8 2-@0 ∌?=3S v;rVy?/7vY0Ϝ8θpiR9JnFB"@i$@1>ufynJGJ-UL~< i-\k*wHu0ќق9}ήtMphTVFg PhGq"ٙNHÑ6` ڎ\VR) =?0naL ;L7³2F& A1cF&2~'0Yj8gFJ(#|qC)$Q2@S)QX ˗V7W7L ;}iK^tz_JOS GBH+2X(eYu]'O!(ƅ'@J.,9[} TGQu%!穮"&؃n"*蠴x_@ A=V74'硾< 6#,K#bi8_$#&\#:'#0k;Q4HFabQ'O|Viwh$ݩJD:G hc6mD6 U""iC cv]\.yP s|;NZdhXV(:C)(B$ifYٕ梅Z S3s]w=p!90ʍv  |'aQ.7D?2ei|8 M9!0/~` ! ?C@DsTng>}qPKQ٭\Lb72?33SSJ /}QضdP1O_1&`Pi̕qr)A(HnO+ @;1=Qn .2FE/xB)H ˡȍsRZN'CN@@(jA\ f۫73UX*) \C-`0LV 9m6hymW}΁DzzV0DA Toq^DAIÝhMZFB 0Z͊Bk2)t+_|-θ&"12!! "c Fd/ 41I/\8giI|9[W{m8D8 'Bf:= FEZ)UKЭ3b,l.JJw=sv^0MS9(#HqEa+;rdi{kq<bogW8cj3f(WTF'iT4ctƥ}1:N̓OslcYf6c v\`cƑ!jcڐ9ܙ۟?>g_mu: 2l_N`Eg:}|_w c(3 7 oY2s"!ba ji2\+EɁI$<7|MF15R`NAWdF1z]1 1.1܅IycG ?^^e"c`k"^_Dy^CǬvᩮv~lߑs#R R2nՍͯ|z4!#D~1ddDt*;m((oLUЉ|s%p@AADLs1@giAr lP焆|?csf8r$$I1θ]&KQ"9$H o/ $+ya୭CȈ,  % -$j๮yytuz|#֦٬r7R _Uzk^`Wm\J!ӛɛ(ҙ )@)" IIE90%e`VFb 5r&@lS :u qi4*]GJk`mɹuz8 1}‘`Z}= v(ê؜)lid/ʣ$zIC\#r$M sq\9GRQZ{I ~~yH,r2 g IB@1&.V&IV+( / ڭ1VIM:{I~?c^)q8[Z]JHꅁNIf ίno/rHH svQɅj skho?"%w>Pkշ}qE+R.گS":i/_G>???s}YEs+ !7 i@dL,MHk #v^`[SZE!}쭷4K[ua,fq!RYߐ ] qε1'"D? ڧ`1t0!0 D3&2qD8B"+F}1ՔQEQ+ϕ#Қ1^VytJ/EA11FR-w_p>^'Ir%d 22dUƺnUY $h\uB~u%Ov?` BQ܌S=t$;O<պtqĺ( pθ`aνus1@cwi5` KoLM/{'=}ߵ~Q+tk%._oQ>;]7}ӏ#(rq6NE>r..6mo e3x+^C{{|>xɅ,8iz)_jZy"T17t?z՗wyzoS??xs[BedpG%DcO_zZqF8;=_|eeK)37W};w XSz(D?C\1EN\:I("Iu@J8}r dJ&Y|_࣏=ƙ\cֹ5i1=D8"F[=jv#jzRIH'I$vo9v~YSj'O Tk.$i鵢:EGQXzzZ/~p[\ :̈́pri{oR:0)xuH$`מ i~p-@Wîf yN}ۿn/M4ƵgcO+4'"!Suv~緞-RqcG;qbF~aY^~V9/…8oұuqq?;`(d'7me%l/+ S*{nz0&&R ]w}1f\/z!/]ߦ=/^f#JmPjnhȓTyʉ֎D2J)IȀ ]C8Cdȑ+  kނ` 2 k@ȀZi$I Qo4 RT.'yᇡ&rSי]ϳNg׏B&ݽp9e %]aiIe3OOMOKI<ܸ&EQ8]dIѬ^mv5Roa(O<>vT<_Rj#ĕO=y'I+58X`9JMȝ'm->XGw_?8vWix|\\2i?wXZ8w^}>DCݽ > c`H+E`pD?M ܑ|@J.g^6Zi!PkA |owpEQH@6D9킜;PrD@IRq,'BuiԪƘ$2Tx^w?أ%F&n{K{ܼ&ݽݝͭWJӴF(9~t_ РJcI8eƟ₏.ѹkg@Ydu?F$9O=8E>oHQ _Ax/|>4a`A<li?7{G7@OqeٹA?k_^YXW>Ob 8!(|OJkq|(oq=1l{&.n5TmSTD@Xϐhm s] J% 2E7R&Op[{J? RU흝()RK4 7:; Q^00?HTT8cyI żm׋8q+USg"Ma84oz~Xnub8 ŨE9EAϺB9D,qDwS?s;̋ #$ND"/ {MDλ/̽  ߲N-`XRV}5[j9?Om~_imG~q#:&;4IhKžO2c7+84D>uieF2]Gk/{՝@(< 'o|BƩw߶|u bG杅f0JȔژP8MQ<;K( Yњ\FeY5M8F0 Agj3榔T.Q~"$+DܜY5Ey3rIie8iV7.\Z7ꆌEͩppؑRi2>lzsnݾ̳NTUE%X[ BDg ~>ufN  g=]sԚgy=NWrc/u8z[ec'9rk?pw5Š D yaﺽ\dfL?+/))e8G"@vUhH?Hk#Daʯ4I)g^zk_7bA7Rᇟ~?.ٚ pyes79sk5Q5N7Q$'Z=ǧ.//nΝ̐.<>fۻ۪ddš8E 9qI$녎' xA`HKWqFIta)i:RRVBqc2~i Q8]/\l+#$ujfPU (*%qkAoG:.JI'MT q2A춤i7NngIE K$ή$Nvwv$ң6S ƪS;ѱ#83'n|y tp溼-:%Eoju nkb=ȏn=~بxϟo;q/rknP!08G}b^2d @)-e?V* o??p~~%/y{o* c~~W] ?ܱcsw0ϙJ>Gr%lof9samsM){kIZ*~ѭgk~BTɟ?9{\JDgc4R R9F;tQ^8R`43;!ViԒt " gyaڍ|I~Zd&9 )Iσ0 q.w0e5Qȏ]^Dy}/%IRNϐn<rw֥#vכ^Rj^[$ijw}8&ETwˢPaNUO~r4]ǏXұ#K^>UsSG" u=}}q/*g0jd_:^L?No6z髼,[,Mqgun}}Ͻ /ʧ=O7"Wz_xvu+E1lXSJpw;/՟4(4畟=G}\i }?q)ć/|!sD+/y}۷|\z[tZ_#Qo]Zۚ1Bj8,/euy=>C:b؉yzU]=m[6?3 9(|Ϸ[Y&L.`yL_J\j^Fz+!""GJGAxE4Máʲseg8rNavff4$Ύ!(qJ"/{;;Qz^woseuܵ˗H&aQlmoTRr0lh~yy- ApjzqIfјjԧnpiJF/T~̜Ο~׾UPiM;2` 6ŗǻL'|zS{\{O6v斧ny۾_"2sǽ}{v:O^71HpO+~7eas`zhM>яR 0uCNqcZ}c6a,nD˔~`λ?mǔZ -;$0Dǿp}T=|ɋ~T쁻N.:"" `RƘRT*˂zei/(~XHcf:p![[ITLeӳsTZ[2ck^IR.E,.Pt8~"DH֬O|T|w# P pNy-ҏ<J\ʻ$NN08Qs8{,Sȕ6{("v`|jȋY\nN=|v7ng6x 3g֤IOW I&\P) =E;"r.іMDg}ҬKqy%d4]5j(q4jD PBMIYitd{0۝$Z:ý=t`fŋggf@IX|dq2jԦ*⬨7Lc#F!$MqZFH:CN~܃{ֈ`2ei_owG~M_|RV{cxקV·}TiK$>+{_>wNU 'p#$n\oY[Z퍃A+-zwtK<g P x'ؓg6Z$TI9_o'{#3*03F 6:&E+]FΠs\?_E}hkW/ۦ#aA`(=^JeYnVJr DrJJ9*$+x0BHDƹJa9 n+V˥,ʞs. ʒ,P*+8giw;0 jnvhc{3Djl{F^AkYm]3cs KL: dinq. ݼPڜMHn7=r̡(5[' '1fo=wS/G5ب??ZumE[SԿ/?z>bm|tgot޳qN`'eƸ1,ܱ <%Y?LpT0HN\٪aesw5,4hԂtR(P:{vVfa[VrW=$s=0}72Ѡg4+ dH*9:A2qbhJN}P<!-50q!F84J+(BpzzEKGU~?,x$8hv[r.0,(t$HG/ 'P~A:)e| àPt81C :,*¨ąð,~}̓!瘥{_S/5F#uC,ozχj}u/LUox?|s^,rYbu'}\z}g_~9s]l,9vwwmS~e`0<,R*cu  #fƘ8EQXp-2IgA9l|CpM^e$AD'y3\q2"YZ(*"c&SPvVk &h{i^q 4B"- &$h4J44M,IVιQ !ݮyhd7WJuB"kȲv !1FJ䠵Tʲ VaHDy#bFQhm_Fvƕq&&C_xH`B ]PC7 4@}8D9 Ҿ#b`4pc')DBUEYeyQ($ҁ6C.D.]9J)X9clm՚1>P[fOb/lQ6r92{ιI8c],"Fv[qm=p88y\Ji}P_Ӹ/pyQw#?0>'b!C?&f}h-?8;8~ۗ}1fAH 4QOڞ]TWkY$i&YE^v5!fp+B2h :ROmVáuɲLkVyYYBz#IAPuDPa}kNxrIY:"ZÆd@'EZ:)ߓ?ޞ(~j7l`UUQ/`t0(+_m!0׺@>Vjo&] ȳS4ciYg~mo{_<O}x5 7@i~dc~|gð.B]h3.#c΅){N{f'D\)p6VVm=&gAW{'cyMEay^Tx8z9mu4ϯEQV]u]l JN)Ri0 ñEqkLc\BX?*s` ÷mZVn8C76FР+`+A@` 9'??żx[kY!TZa$e=G0%_V*@9uN<:ӜldR&e߮к=1`GdLQEIX;Qզ777(t:LӴ(pX*gggcf>wuGQQr9M<ʮ?cfZ[eZ[71k8r5[4nƇC3^QfMX۫j_ {p8O ӏR72DH\ /K˲w,ϼ/A|KۃArm~T.kZ\y "L~ kĎ{@,t:V=g}vggg~~'|2~oVqv+J۵Rf?K=0?c;@wBjsNFcXb[Q___4iJ9uT/_Nt|$<- c4FrARKGwZÍݞd&3PQ.gd` q.xEwZ[.7 5ݨ6*g/9:[d"ry"pD81&DžN:93fgg=eѨ^~Ν `vv6MVcrh4v*MFf6ItffZ^|T*;AGyt3R i .93 ih&{@;}ŋnј aB 'ko][dFdqΓQGg7Dʨ"DuM\Q U )6*c3G.Uljle}Ɵ^\I)TJwi< ` Sð=zt4OD֊DZ833榍nmH>Z7==mY\\L_b[\\F--I9sƦ8}F`c?cz?n88~Dc's0c??3Ntұ_О3a'@/>9Hg b>0Wq9HdteqYJ仮J,>,'¼/{ƣϬvL( x.e )j"Ga8;;kvvvv4FmK?^XX8v`0HԦz#/l"rm(=')h r8'=Ҕ+.1 , = y{uգ5d@F#ӳk XF C9yW* X;ߥN= ǩVv98IUXV Ðs8l>V!EIof30 ˗mx0Li#_pLܾx}@B} }3 D姰2׻ڂA\{m<)c>h4z672؄ jhwqC=w"㛹6]BH d-\t BIAk)%2ù7ˤL)%Jy sCosE-62vvvNqVWW|I'ǖ$^:8wܳ>kY[[{ϟ?o`_B`qx"9'(*JΎq4+º=23nCBND2CTB sd!OQ|uCD$yRT"'B)lRLsuhy NgccVt:zرcP׷vvvRls=tU=4GD[_heeW*)#G;VTl}߻"q) ?ƤkD ]+'O+YQZovrC뎶Z-"jZ Yֻ衙'CsԾ+x#CdI7WK #0(mFƻ|oG{ATq|g-^?u׏ɤ clffѣ,--˗áMc*J\R2/}KcGIe\5nz>YO,yF?NA`ӂEy͕JMlBo_Rjqq_u2N>Z}Asss<-VUVO8a-+փ,N~;lfk` f.9Z ` hE qaV <-lmw㹲|@I9(qhҢT-/3Z_omp'5*cpȥ;* `V6'@2H8ry `_6;r]hEQK$e1ߪX n}Kwq;âIz)lqEͦ?cgϞ,a-koh%G6ՒO7kMshJ` -Md@Tw~VZͷYn}֕4޻kww#wHdssh?~n;} nM[׳pӱ^~X n{GFBےqT~ם'_|5@esRnX4Iz ZЛ*Qz_<~,*ǥrT;gfN9CxgڕSnye' GCXgRl:55DZmdc~8߅m[E`5 &RQ5~oih8V*KݵZ[333c%'$| . z27&B)Yx ]A_/lv+z}w_qlSSSju2d?5\#{֏0 ֚ͦKXc!1ll1"[V;Nј[[[?mguEQ5]ged>1%m 6i1aWc8а~er8g `7L`=Kx$ACTr]_"PHS{~}Gyq@qlFx:JvtK%Q%}n{ g]=8q/,O]Wx) O51h 2ʀR 2LkرҥKc,Mh}}=Mf>Dmk?Yۓb{{V-.."ykn wXZ-..^8gR'Ξ?I٤ELp/vW x{<Ϗ?jw;N7lt@1@I0r3gqCƕ@㱑:jrt8S0(aӾx^8~"3rURfi phcC|,^1-L'Z N*ɤL~t[)zV+;^o=t~ 6 f/]~熗Fti^r ȵd<\y,\!B!tdvIzhp]Y0 Ȅ 2@n Θc1V]pxTeSY}-1jՆV,"Ho:6J+}4 `08 u`п8tL&ezLj[~ V]ѾM:x4 C5p mɨF1QpqV=,f@ H2 ȳ-Aqc<-^籎qnjł{z%+AJi 8ggvtS *T>̱Qsƾ.o:c[rYɝD|dbzHҊ1B$p=ן:it/n}ba:34l$am֠;͔R v;RD6Up0\[dkf3uơdJpeu>C`+\)=1kEi'r/In(<ץ<] Â9~&ভ51g;v35T 64o6p9/E\C@ . HUOYq'@cHwԛV>&u1cٳgm,SNz덍 'u]wkk+ic͜+U@4Bnf~R881ȀiHﺾ:uq$È Cɉ^/ #7]I>Ίj(O֘st>wܹ6R-#>8ݢЪPyB(t1.1r#JR_.TTAk.mc^\.OMMYYZw]۱Ֆ yo$c`0=Z*ѮWT*p8-m׻tMH_f$"dqz-Gס q8w_uғ燹ng !՗Qr~jH)wvv>OoV??7}{_-o}[w?zw^p! ÷-AoR=roonmmjC r14eZ3nz8p)@@ qxuq0+sΞ= Dn\q榥(I2p ?k/3_Z5RJDwy4'rD"I)㱭 ` Zm.:")t#XFsyjl&t:㬮mo{_*Ν;]@)8>Go7t};w9lL~7  / ъcnqò 7LhT-֊Bef{zwmp/c#ssˮ#k02vnsM%q/=ّ Àd=szЃG/p\N_Y;8}b>märF9gP8g2Be5.$R[luC FFF庮Is$^t[(\NE^{pLAZD }#Q_@T*7}@QevG,lbX(|~vڹs#GpN>[*A.DJ9e83.P D+J(h(!J!(0Ѣf$lզڒ',[JIjȈVךIɎ| Wcc['Ƃ k)ac NJC5tʲT*"%Q(ĸ3gH)-:~xڗL&3rL.ap0{ a2j^ K(# 1v #1S#(6qm4<2(S&D5onZ;s뭷AQx !>O;YzC6m7M4B5h  ʠ竮B6J2'Ϝْv02=R2w,Jʞ-C#SE+(pKA^)nY꩛ٽ}jh?QFc\.rjZ.o߾Ċ0Ŧ5vD9-q`0[Ol m˲.PYA ?GY \?Qn0^z. J E:j@l|=1|Ha1uS $;+@AFS99~@aۢj]1mmd,FL& eGobD:s?Js97po?c\X].W끌 l*VR/-WNZ rdʜ淎t֜'ѯV#2 P66Z ! v- N}_ْhՔ$Mp 0q>d. $!dqqe۷o?p۷k}GuԵ֩Th$b ـQ[)p)u&2˲>@9yOOo׾30޿6w"M@֠jѳ,.v@J iH^o4ۄ@y_b'6s5[RVCK+B2va~.T2-;)1-i.a< TQ$kmjc'l*!ɭH3P_~6mHbz ġ'"\bZ\;ٔs }%hP $B1!z/ԷQ¿lL6PaPŔ^k||gCc< #Zu$N1F=G 4:'OVL &b'_g;Xc=F]5{ICC;  aSB6UgB̯tH vڮ֚8z_RJsp(Qu,fJ1uga$Lb-P[ )m۔UXܡ/lb)@(IPr &FLW+I/6z '$$z ה0@BQSCsWзx9P.5y>W}ߍ>eA ?T0*5DR !(T33v<k<::hnmJHP’<37yRGq&a$E(!dsX$N^1ߺ4|.░1|hY,IE%E.'ʸ]J<XoۨK¥?yKE~sfF|/"h!ZDWȬeYZZCJRqjmnf~c9c&ֺ^xEZ8,fTGR3cֈ" Gh58c<^LaKScÜNϓZ˹L}D5f@ƍˀL1ULhRom=%IO*:v_JОA!e<օA<Oy]\D2J z|:~̩G'%j!=RWVb&g|\ty~@h)A)%4VsθTPﴻ2M!T!y [lTJ9Bh? fMt( 6RA"ufkJs+B(ex%oY|fnerlYj6xR~6z0yRGxðZbĭDCL&rB:e 0 3RJ{N?`%E?$nb>@K)) 8N&r*阋 ]XyTkl}{GA! e ipqM`sn(^ !TI%<"wq\T$9=~N iPB @RzĚRzRN( RZ Fckch)4e)BHQ ƙ"J !8{r@jh2i|v攍 g,N;f,=/jcqJi]YYvOtpHShF.U\`u۶"˲ V'DQ9hPoxWT~Wf@&ʸ;SBA$LD~BKM<Ze|t\zD0BQR(̊Bػ}I "JZs*8U^t[]]Ǹ_(K =GU*͊"/8 |u䓼)\[ܛ?| ( P(2ZTRJzG!"0Ժ%a[>ʓgvMUAE(m U~陧&3ZNh4%4^ڶ PR A.JJ) E8 { $74iCc?Ip1 qMo_\\}bb&$ }FCk32nT5!C9iEJ+}]kOѱ"17Ġ/(Ft௛^|#w16~BJkPi_I7@!QJYFiT0Ĺo?='= &,4szよHij֔PP:TF4&Ru p4kA1| ڛfXG8qU]$N0wjZl.\ݽ{a2s^בmR ] 4քS_W.=mʸvql:^`,o KV¯l g6":hmhq^6 S%4(.wY.J/7ɳ42ޓuD(QZGARJjZc).DcccܲDchShcy:ՌgL'b>!ۜ`N?Ço喭[ .V!$F]? 5n*7ˍ]6&\L> B$(P/& (3B mdzxxOS[Jp ::$Jk>Rl@&IA(E$A-'c5%$%K9еEa51q, ]"h)a%!}7O*G'x|ja^sj&1B/7^/3D>Bܔ.hmj K̀ZkyJT,u\Ϡ4:V1%T yڱځxf}֑WC p( J)4`M`= QJEB0(2 #Je CtRr49hۓH) !pNs.:' $Hk|ЇODD cǎmݺN8?  ~"%"ySeRWߍnrM~`EaHJ%H $mE(!Z !~W1(MCI!6ľi)4B h]J`mPZU<cGJFM®X #T&{X(GB\]] B]`V&2 f D<<]C Hfۧ5!@j|\<FpSU:"4a lFU;3x.ЄЄ(hCs)xB h_1Կɛ06>B? Jɵ5.a[tqHހHp7u_k$r)*t:$e8NNRD#!ȏe8E@фQT*B(h v5<񩵊|TZ4ş5^ CS*!QZ6 ^0Epz(Ja@ٺum644,2 tH(fJP|fB)hAiB&@x2a(5jB(JmB4 JB !DK)(+ j=%F:( >un[ |ApGh]هj>c=vN8X{ FJnoBa/hѣGU˵{r- x≵x^yot6FN|_$ϖp7}H*H\jԤ E͊ $\oh$O%@@H4Q7рt@&hJEMIdߓ-]F2O?'jZEKiT* ]ve/;x 4.{Aœ{;O;9#<}ppӧou%c S'R|l6cǎkfttH$zO)4!;hDM4!i!Sք(n+ j (Aɮt&()˺45ƪ @kE0M)hM&(YPnwnnرcjNmvWc+<~Jw%[xvI,J{(cϟΞ=l6P(`qvLpbx4M^{ȑnp_Оo F)333_ϝ;2 @:!41L`Fqر۷޻o߾m۶%^镉{|/N?hFv/})|ضmۦW23Μ9OMM!?! !<N1܂m0Dۻn_8x`"A%뀈%&BviJCy䑩)Ӏq6IG|W?b-o<| M S ຒE(u6uX,UՅZ&x-zޖԠ%j=c^ZTF-tlRqpeF{#Ү--#)`FEQ82rar|8eqB1* d+ɵV jhzp(g'"BٖiPj0O LZ(03cq.7\R{__TO慮NO7B,..<8X\WU0pR?!/V@_+ !lF9{l\x ;o>@cjYn?ǎK` PG4 ΉWCT*juiiN۰<J3UIeb&7жaMOԚccE$@X eH z'5gZ.v,vvm1pU,@'J%u\W3nHhgH I[Ͷj(c!"/rU@sS)a&Bi3ΈL tϞ= :P87x㭷ޚN3J+6$ل) )٦'o}jݻIa-Ɣ((4Q%)AI&sghh… kkk\NJ}-JO5Y.C 7k$|p1BgѩulݟN25xɣG<^{m0_k ɘd$$Z *ezݠ _,f2)՚B:e٥Z=jN;FܙӄP¹a\uo1_(w]?eJk Re%dX(V=/ 15Z0AALҠP1_*yG4yAu=DQh0B;ѣGwr.rK\PBfHQR뮻|I}%9}ȇPw9:v֭[&OEd2l%QHH߈@>t'uN/}i޽  &FCB\Գg&JJ6..e8I5K,<,C۲eK6r'NxG뮄imt[=_DN*ea$5QPJzQ v+tEBQ|Gx" |dǶ,v=ё4k5^7m9?G a$K0 Y0M*DQ>(;&4 $glxOSz& ċ_{… Xڟ sk,.Q),|~@оo?vl2669q̙3Vh9@ib[uAB a4l@1p} ~a3 MJ9333;; ەr9l i+| 0Tv: 뮻V6N0A+###r9J!'SdH$S\0ؖpz 6ٙ/z⩷'wQ]YBJe) a"Hv:eR #C;orR*Lz^!3 l˿˞}_ħ+:T*IǗR?~G_%ԃ6@04a|;NEo{nFwqm>}Z_kKԏ؏/IɬyPBI1Yal_ۂTJ)ZݭV0^YfCxɥA'8$4+"dt:=::gϞbLH,}@%WDfT*:0SթpRHʫn=Ŕ2mm&*'9|~d6EYe8\]kuZmvJG*{ڿ{ȍ;g۶mjH 胗QzOOy4ݻwjj*4ՀҹQbE,˚MĶr[Uteܐ>$NE1'1Īu]^ RYkp.#?K{,̝VvE}ݗ4-֎9.>)4wc1!.G??}7ͯykڝ;w7?t뭷BcHsR?`w)doth?O`D7I!8V8}lo48kX'l0BP|qD5cja}BI^'z.dq+] `RQc/xDRbTJrZݡz%#Br~+_Xpa2}sDkJ"h)2bE?r(!]5M3u_fa!2TQٴ͎oYFVwRp1υ3<o@yqqVKb3$ӵ{w1w{ddD!"}kC%DŽ}رkvrrrtt_x]wun-wKALl쎐0gdR:}{Du]7vGJ:(pHI $b!,w.n5}CJv)wqǙ3gΝ;~۶.Ih=}t:r  l6Kd$vAa&*Jr/Bcc|>{gfɡ hu|ʍFY(dϟ=ēiC巾}ZSNaR버1&8@JmDBu|jmRf1ks sf "w Ptܠ횜ePYoI\QOm[,i ~ݫVKr.s=6"ώϺd\k}m/=kkkRKL&STfggь^[[˿Kcxbj50׿LJǒ%Vٽ,n祔cccJ%'b~]<mۆX}ZY{|fMڍV{K{w W#snWP) t L-fx#9"jg˥ч|pbt:(QJrFFGc#Tؠ3}l&ñAy^YQ(ᛎlCZW^ww>td:998Mkh4^0~~att1=t;|pKZkd//s=3爳*uV"Qv333!v՟`a4> .4["kp_.ca#qW6xcpi:6&B7|aaammhOOORKR$ NRJ),L|ǎ,RܹF&n1Ā9dof @ၿr4 PDQP(uT]Ӡ9ldNPwo1(d?FNJ (RBaIAA@KdL{A{dgn1 JilTu{J^ o`(҆a0ML2nL/c{k^9_U WQ(뮧~CmG>qwU*!U_֔P(!۷o_7M(ЎGyv&F@ |>?==SRHdR u:DzbSZ44c0_vSfXNW} 쓭}$vϞ=jjY8x/У8煿X28-oaahxwܹb"nɤA x"ʥTl|&lw,ڶ8N>aL}A^R(r&jB(P 5d eD1Ptѻ~n0n(#lu˹GrX1X[(0tzV 0_Px*^ف1MnVZ3gδmd^O~/}KdW_=55u…4=܃ M<믿|[t^Ȉrtll}>ǎ?d8p7 H*{VVV>V) ccc?S?uw"R}=sZv|뮮.//z=QiFFFFFFz̙3RvbLӶ|>$ЛN#8}4R棰6$OII=ƇI_|UO:22jK*FbJv8q`Iʄ&0~[!̢cBJʘaQ$8"A i)l)HJbEȓ}aY>aH2j X*i!N>{Ɨԓaq?n2ЊݕeRJڴM~El~12QѨ֪5v=Ǭo}* N&Oʝ5117/~1zCrbb"AV&aǟ~ndn;ܲeKo919@7s%~*jZO^[[z꩕oyݽ^O.\ZȩV>a|j$ň|>d2X,0BJIJ4c$QB(e3 1.iD 1ιiK!HDX:SƤeY~n~ P |Mi+)nd$8e5Rb0yAϳl Zk 7b,ˀ|! $%'pZ4h`#W&6@.K;wT}0Ա1/#:/˱Uzrf*yRJ!]I)>8NOOOo۶zqād2(=u\^b^׿oqh> W?@$F`}|>?<<2H2RFFFժaw}7BkO 0 l9s&N޽-ܢx6v;˅Qжmh("Mg2c3Ε p{bbQBrmi~`1Mx4MPIъ^HD"4R )e2@k6 j(vđ+++a⥵.cXk)S |97y-F>T6W-.z(6R4m:e!.O)qq P JZN\| 7 C_@0,mR0 tltq1֚Q"pKZЯM.Jc,0J$j24!hu>G@~ 妎!%QvHZ(Oe_ "0*z3&dBσp<2F)E͕p|kZ A`ˍR!RiΝ+~>:Vȗ2a4rdtI: #D+?ΚSтڟ)'dJj-%0)PIe[eW) h !%Z;w-gJ(~ZI?Zj-aēNM\M ⇸HlZHgBBGAөN 夯/@"Dp 7Ae$K Yh4l^YY6'{ ZR)@_iN u֭[9rhLLLl߾=`FrkJAHY(dvK(h+i!EiòR\i&ѠsjSnζ&Պ*$Ҵl)ej۴ɵz[b6A0al*_QʸeB~L&!Z677ݠ0HvqmMRZՎ=} <LJKpS.vPh -0::::5yF E~"3EØaX[lc|9sfqqq׮]Qaf*ݰw4B*rT*u:1Cy۴̌22zBs#*ar|; 3ŸB(3W?vbѴMlr,M8%42F'mǦkMJ{=wqiѴ hPfr~J;ZCMy: 踽e$@bx?/}~^ ;N Ao~suuo>p۷}vCvICT h&RQu dY˲fff T*1'&&ZEY$(' ۶].9~CN[PPJ3fݒ<\R̆?Z(X G_uY:NR8ē'먨Xu5Qx~t&WHv "-w[: ?nHȑjn6hEAR ~Ko2̑lA;&gJJ5 sh(beVo:0)%&7-rL[*E!!4iƹ 3k_%%2)zgO|ǃ}CRi׮]x+>W՟m^3Ws7}{RB {!ϣY:qO<Į]>h^ܳgZBC 5XKu caaa׮]`e! m%7F?xIRX&9%Xԃ җL^# *a?H jEt!I̜3bRA>,d;\r,p#KнN7rBkR=֬5]WJK?s]G|ԅ3g纾K&oM 2d2 shB~بe+++r!gIT1iw;B*22$hmӔBضSg/̜9zBM}cw&''wލ8Dae˖~{n'''_=~0o>HG>BRZ;vRRJo=` v$I?$Un1?9Z(1ڤ9nxM&i6HrmR ĝdù# vq4?Ps8PTFGG}Yi%e۲ dQN|SG۾v;N(ݝc;FjmeMPcvtV]di5=\r@52THom=ûd*c˵Y6hfr  pEW'~'0>::DT*T*ub5{.O<ɓ{o&y;ށE'/HoB_T*=\V(FBr>.//eXzXF5O1 (ߟ@.DCCL؈gϞ>}z(cI[aRD&GD|F\u`P R[jgggw8" qf6}+^!C%Tt |>.kťr9/;ߺēOɷ\e,MZ""TRJLn/Z L s2[ %LaYv*ʤm3-Zm Z hEQQC_r֭jk Dx軥byIRJ۶wu'F! 1N0FFFwߍ}E:/|˿T*ݿC(A@^s%F5<⅘ViZlǂ%PTrPcr\.eccc8=xs3nAXl4Z }V> c4$gI#̅aDhܹUQ!3ċ2˲J$:Et6}QEzꉩ1978''9Ku}a$ javNAb9…eϞiU{M"iڜqqڮJiR^ozP $ZPBB?@{]lEN>uPR,iR ZHlbn"rgϞ}||5@TB'aϞ=ۿۿ~߈)=EJjPBHF  G:G<&X'Gqn2 :Xx׹k RX)|~賟?yD8ƤPouj!`_ <Р7yؙ#ɠ̰477 /yK`rjsR)jkkRߧ5v:ѧn`m B+EdF* p*ʰ=hrnp S(#2f %”c3J"JHqF+C](*C=VkXv*X31L=@E:u '-H7pؘ{?{k_KW|I>^:nYQUNqTBض .!Qs熆"4&[ رcǮ]㎡D^_7gAѦ$qMgE\뺌qB܎ mPO=Vsys\.Wխ[XnFGX:z}uueEf{VRJ?})5," j?ì0Z2E( K_i5@GjvZknЦ,-RSBٶ6WN:2>:rff:N爽|SJ~hKgӑvdTF" 瓐MB xyX׈F} Hx@$^ZB?q__BV}dy{OjpU.˕Jemmlb;&bLBU`u]fImO ?0"@ vȸV iQ% qΗz!V +A*/qƮzOqmm +_ K3M|R.fV&zZ~l9- =ʰzM?8LRxgW!*Ҍ0/Kcc7KsYǶM>hdRzeڦ!z=״yUZvb9Dʱb~(Ln N3Wx#N!?[lЗqK|NcQ?A_jY_s:ϩT*Ɍb>vo4fu]"L6s;r9Nc 43ƅw%;ƽ NI\v2l='F(A^MaL&vhã1p~}zm|h|E"D&InZaQZʏB0(Z7(3m GᤖSr6#踽LƦBƶLyJr[=/Օ{|h9?411rIPՔ@t;ݑőXh4:,6Gv.цCR"g'Aș';.XT:](;yirّʐiihr^{[N --m|nm:FcޓQϧ)ɝ;;j#C;wM^:,GbvmpvJH0ڽN./..6!g\qI\/>__-?~ǎx+Y҂|jE?Z}[n. ¥h<4;*^/q1cbaSz^rA !p+kNTbq? $*Zv̙fX%i0Y\\DIA˅QB2L&iZVVV\nuu] uVnXȃ[O9 p ݻw׾i#ãP'ȡfirڝPٴ˫Y ԝ/Et:AfSbsn.,rsvyMb;0c[ЭNT Tm!w;ZFWG%CCl&J9f{yiSc|t(#nHFa4 Fq%sss}cn7yE)q۶oĚ} Aܹ{d}SSS~%XqDJm4rYs\0Ӄ Ga\v1N4Ҷn/-- w:D3Q^? OqW'=ϻDcAv^/I?BW*ȑ####۷o?~8}3zȈ t:xm۶$K dű JIz3{qnV1."T{ku{vVJ9 RQaPHz=&r,mҴVW|h;_n0*fJ'!Zp~v bSn3*O)URF2jA:~ի^u§ 7㏟8q"RnZ& xCbm6vl6k׮%bϫ^Ca'd 1lDdcب4 Rе Ri`\QڔRy8'O25g׮}ܛZYu=2.'VO)0B S@5jݕ/|4~K [ϟ;[T|o4HߒxS!DIZ]"A)5-3Bl20}C0&XXX8q޽{#9?nĠڔvj8 :G###z׻|cgbh|#<Ν a(ű =aB`]ann8R)sss8DI4AA_BXפֿ??ʯÇq:'>O~򓪯Fǝ6m۶mۆNu{e7C( W]uFG:nwa66#d2uVjuy̩VSRln2FzgšuГl.cٶmYf+ɡ!PEZk˜ps.f0I#? N?8;>\HH%)#\vRd;fUgQJ0 a e/,,ދ. ӧo`%_Džޔ^uh?NЗH"xX]]G>wwVnh2@$F:#XkclttM ^offuJ)22"@q:&Q-tz0{ѐ%?OZ-Deb}:|O4hPA);!8gJR.s\XD/ }Sk q(ZZZ|!Zj6pa~Sot:)׮^GXPiŅѱ NMMMMK:гMp >94B ;R_YF7Pv}a+ah96P|; |uWMo2- MI6-ñ Hu)HD7s6$3wK_뮻76+/<>˲(g!ttĉfԦw8f펌9s"oc: [BR)˲.79ر4ZJ(%h4pb6&W#4_<lJ4;Jڀ-[?~vv=w(E|_^^w}k_RO0&@#TB Im֗KkێmPumUk̹W]u]:~ÑV\ϓ2\AK)#P-`f !e!" M4 ~K^g=zdrOVJv\*Onk+a`vrx<_pӒ`6{a/~4ͷ\s e`aE9|>G}.Ȅ򗿼~skj+J^GVӸ^;+D !8W#X:I-˸sx'Rjuu4LZTMocˡ92nɏ\N~O}S?}rXΏoޡLUZl~׋[m*MN 9Z+Ih Jʯ|K7"NzQ2M ?ҙthzz###XW*'\XX }-6 U%<|sw}PơL#ū1u:0+\9q/aиվRncI'(mŃNRx7HcX(tK+RH.;s̛~/{6[W1 }aGtڻwzBP,k9333ZfYu]T,H7ts,ju:)( p 1Y0(49ԂM($h`k;Q,@*TU06>V[[YY ye쁧NRNYFv7BBjn`Y @QI`JA( L1&"Hu{)RZf }NԩStj0O?~~~}{ߞ={WHW_}ooѷmKIDNh\׾vٵ5uN% C4F E1ư/p˲r['Oh }Ӷ o}[마X4,KuqS5 '?cǎ}ؤn~~Rv_g]pc6Hb$gT \ۉrׯn ޘYw}[H3I`3$۲??NRcQ9S** ޕ嫮[oݷoLUرcsssϟ߷o8p{'&\3_ Mp/JQɤ-ˊD((QaÜl6y~5 lP ^[]../֫զ}ύ :(R VǓQB9熜R0 )`;-b0F4m4\{8p`ll,ӢΝwޙdH yx>t9RJ0__ܶm[ms`!ݻw˖-h=>SOa4#Mn9:|!6 CU o$Oc!|>qB__ͷywkrrOO;:֭[~o|#Z2/}s9455F׻.v)aO N6& UJo&[m^bNǶm,T1q~׽?f!a֭[w׾sss$ETD1w0ˆR5NU@Fm8+Em622!ZCe/Ϳ7m{xxxll #~I[lhƸ>%Ӡ4 (:}4;w;xkFGw1&P(4蘬Pt(lW:\2~ֶ--ImEak pnn٬ Wl}? dn!(]ZZJ5v365ZJY,9s TP@>*%IB' uZ&J"Xl2vfS2u.yz1(5}=@Ndmryg9Р/&cL)0G@J*BH%RayѬ e02mەhfv*^:;gV>ePZa¹ͦ />TDSB 2eMTjST  @i]k(!ҌRN @]yDI~IK6t\a] ¯o9]zbo=Ǻ(Eh#8#n2;a6J) !Qٶ-2i @$7) [v R!e.-.~\^.oZ&Q$;rz1EiMaV !Thx/J!D{nkҠa)aZVӲ:] mKsv պfCNQ\fI-@AL$H7e|]ButIȔf63xm}цcI7dKH)=ϦRHnp ťB( h)dFp)%Z) Rden2E)"Č +`5 F@3(0pψ. Jc@ɢ&r_Z? ƋtJV)aN\4HSϜ[=2cQ$ ??~rΛ1)[ /Lՠ bO07~U?s`ozMDHG߮sC-E|s b OW4h~lئuGnN.̺Jbk{69B ^S8\qy6YYY锭@RJJHieB>gf&aږf/tz(aN&R"TB(۶jݜӚ&f$5`P&@T߆QB5]T ,#wƆ m)dTJx1r `P醃;yHhX]yhn|]䋗h tΟ=9dSG&r6wCJ6ҔV<9lMڕ!s@F[QZG7apu(47]_"  :*uo[E4(Ό iZ+)*@ BqέT^F`\ )a`Z(-+JeV"q`KGB L֊000I_gWn-dI*N3i泩|1q,Ss*"A6fl?պa6 HC@0PǼ<\وg9a'VE-O3L:16b$/u73R}BGm۷TF"B ++,PB( Ԡ@@Íiٚ8~XLYi560PJR0TZ+BI)#{֛_ ;Bc|]nOJQ(eh !뾯(cZRG-Oڻ  &ư^{pzn:T"^k//aͳef!}nrYFi޶]YmgΨ_"t@iP2; 6{+l!~zlAC?|2مw}o*TP~ԳL'LJ8};% !4u֜s7"8")q,fEBHP6 >WL$h LBٳ"_!Ǐk-lR.U,\IƐ)r54Z|Wu"cAA(rjPVz~ݳ-KI![i'`4nrf|XeN>;X:?b~mvI ]M9M䓊)oSvu2l0&QZk ՘ܨ7Le=H&E6ڷغSD=ji6XFV/Xj@ȏ'(cA3>wд;{_wj۵Z SCCTWH.crp̢PBȥ#Zrq9Dg ߱u*;MrN&k[AD+kA |sRNh{$7d:eN+s])HehyqU[(UQq'8 ~{~[~WVR}* h_Jܰ 3Ժx"Kssfq…O|G.Afmt0۵7(Hضd׻PEVFBDz=!nOVZ3 DՄQ6-kxxT*?íVĉ^ԩSOd28啕 fN{x>bֿ_\j$r1R KN,ί,EDH)͹sf3+׆RiXe8+n=8J\&9}RjB MaT+.N#Ti<+(Nbm9t& cۺՕͦҤ 2lnaF"'DQrL0 ;uCCIH_DB& \;{ȈR!A:T*wɉSNݧ?ooq:993GϜ=o߾Nn^EpT*%r*D)/nƽw AY&T~t|FB>kkB`ZG~t򠔔!d뚜Z͹93kZTdJťԤ}e4h(tr<h4%hs>*zޛ. U=g'edLSMnKNvǾ1|Mw-"ڈ 2 @cCnC)2 ^xzI֚qB*LY= *efhr9-0@eؿ_u݉۷ڵ09Xus}z[\4ݳSO?}oܶ}+5a{*@vmpNG-G1u0 ^7>P)3H2R6vlۡR [O;N28)d(hn*) 6^*"M:vN/^w6 #Do@(P tC" k#L^tc7s'E4!b Jetu.@Zx4K$TJX;UHcrO?k*,1* r4ð*/|  3")EEvFr=V7YJ9TR)eYϤLӤ!3znRZwlt$ͮ,ob0Rj}٣O2::Ƙ@S)t "c ȜMMZsNCL`iLLԪBZKeZ8@Hw]TQk_zSD1KR˹cw!p7ahvWs;7MI 4nפ-frwM@N}F϶$ځ8"@Y֗qౖKF>pճm GT2$倝^)<6f Z^U;1 .^xky=)QfIt}߲,Y dJ)D ]:;$ccc{]wqe=%*Ymt ,vl7[Qm66GGGsyR0 ?U !⾙?ѨzRid QiE0sejR vn{x G6Is ضəZ#J1"cVq= #ݻR6])1۽.dm; Pog$t{րL2/M%PLuw*iRl|;2.orĶC̋ qaD8^r4-roZaٖ-LӈTH1Љf/mYmaW<՛aK?gڜ}5}_ȋjq *)m+X  T㸎S.+rEBtR2z< rT(~4)Fj#lo(cHQ>z/hZAH)Bȍ@>r$C"7]Î0p=Z*2n5N'F y|7odmžt#}7o j$E8nпrK~Cpt "%X򄀅k[n.\jδRq_8mK27u\_I'x|rjWϵZ={$qLR*:nDI1* FˡrfhEB0s,p4jee( c$`ed8.3:TڦedXFH"b/6!݈H џ m kn+뷮BYzcZRS~7.\9k]dV޲=?AV.W*zfO3LayRYڱ eX6FrE L vL>Ɓq@Fa ӐRrJ2jvm4nG =R.x1==7󲶊4Mq&(T(ϧIARX*m7/=Χ&''O<`[HJ *wH@jm' Pm 2 $D,& 'Hq&s,1 K2TJh)qCB.nnn&Ib|obnvȃ~l7g}IJ 4L0!Mof1maН^I8㦒@HQFI9On[07ҩ-;L<5m]?=2p."46  2SpR1Rq=+IcRR~S.R24n"B1}%ZLm[nR (, IJ\ϱLgΜ ӼzVW$) av;NuC? 017HkdXp\!Ȉ\i ʗ˜Q(sSPOGU-V.ͯDqY6CguE="t. M;f0Vf篝ol4WW ,-}tm0FƄ!$Hi\5=Ni.XE.84Mw, Z_k+ӕHiRJi۶a՜yڽ^'Nuj =VsZvti@@bq8l'cMm;I1xx766&''xW^y;<|ǑE4d!Qu{>)Ja]o ,UEq?JH)hL4C\'vs)% R/݂ئə8u ;DWߠ'M@2LQ)@"Ƒ(4·2nG!X+[}E yƩB?Cs{A 'ՁLuGLԩVB5L%&'LI(ᢟN)\pa2J5\'a05&24 ö-UBjVirԵkDztbl*lLS04`03Z\fGsB<Qtrr_kĮrl;5DZ¬ B*U2jw,C,&J,,ѻSoLq_]]t6k20N}erӯ-oJ}<8:Fs z2IXJ*ƘVI8IaJId Q(tЉ܂ㄖ@kӠ-,| _Kqin0DĽn_ql)%Ʊq*yixnΝMMMK̮~}y֙1Q@u$zVU.bĘZ///3:gϞ'N}9i#hcc3Ic4+tu[(2εFGwM./.nuHX{^ ~/ & ac&;Y{c!xf+[f\j|87R:3nc unN po-o sn[E#O5VRP-FO@0 ZգX2)$M-\)GAJQH1b*Sd-qIS-!"!3XIu-,s;Lٞ]yUs 5Z~RhEq,ɓL666C3Vry22QF%R|RjjZ.V\fizkG&':~J˾&N>]n#wO9"AXfi/ggKR$|F+g{;RB 3ӻ:JԊvT-͈s6o^dB #A)zo6|d0C֑~I雔#cJɭgFḾo_3~~HRFDIH STG(JG8DJA(tT*Td *i"ҖZi&L I#0ds}S3j\-+(RRN''M2I8j…Z ~ 4 | n#gA1gR*JbLW !T"8I&'' K.B 9|q'' "H=C0wE&`VѐRrHR*9۔Q"Y;s<8~ћ,U8z{ 56*ӻf jmd򁷿Cv+ߵK\,2.fd+aA bTw3&ڷC n zv ͊9 UdkV2_3n9"+l8hAŘ'ݸRuFjy͸a0mփ^/2 %FaUA$"@"uD(Ik2d4 d a#ðL֊ &8ZlWY1.2"`k(p|bbSR^,Դ !D$I۶hٴ Dؖe:Rʔ1<|pFqznb/MN8փok++[Zedbb:R,[hҤJ*M2뱀ᇐ؎1IpSmf"6x4<ڷR)F]{b| ҦN}νUcrfꎽ5jmw-;5 z/=6yMpAZ+Hk؎ /ɇJ>TzɀE:͕_%Ҋ9񱉟dafj=#&SJ%n sl3"j *JHs6H1'QnC? XHM!X*&S?LPG1%) iM@(Q*rd°5c0D!32FZIL{v{'G\o%i[!bq{ܷ y)S!Xu*\9ouco$5 \EkTiŀfa7>qBN`ZNHBƾ`giR&y.$N&TH4AX(HkĻ?ΏTK5tzF 0q]F^?tlNOO%\^^޳gV`H~|l }cǎv].mʞR*kZR\.=r3aLNN*)2-2-:Rњ TIqLkQJI9ZmAg !:07G`8 ٦빮!f/Wnwr|42 bqԭTJY?{Y[;mim4$qZ-}0, 5!{V$8i( tcQ#EZ#24jVkCA^er28Ŋ8jExߤ+-\Q@aD>}zsss̮~s+KqHK!8 x43t4diEZiqu,E)"mMTi* SS$0)#dQ;m#i21odqFRHL5M\G<]O> &^W"^=k0v4j{;WR&kD>6[m3g/)2mY1 Onǎc}4N$!H#i =9vp] eSS+b-$< 78Y OL4+k?`Ռxj|tS==9mZ˯v B\,snwcccl]B@T,'vl6 i"*i}#<2??}Ĝy\1zq&R"0 9 t=:+ fM0`7  sbjj'j5sm:FQ$n1LJdD1HK@ܰs^yc AQfivQU˿q, 4\]~?vWf/r̩vks+IWێK.(ӄ`[`f-i 3gaaym_ҸvCI990U ю<7o4$76,D|$J;Y(zX.^ V;SqTƥRir|tjz#Qp~w]HH rg_y=p.FGG2{Њq.8gRZiE*c}21E a!"`!0pnE/lv~Fƺy RV[[֢XX*FGʥV{M.@ViVT17lG%"40N ߢ}֥Gp~{~JAQQw vynqG:\p,S؞i٦e#gtg/V8(JnW_ )LR t d_fo0-Z͂gT"f)onV+#ij-Sj6 21M;+8DZikm5;s'+J9c:7+kySZ$I!4aO[f\"~D52&" DBq!Рq1ظ 0HXׯ-!yG^nmFR]ZXk&r50זJb9_i+fZ!s$ ~$ڦk}Ͳj!d`6ɛ!M` 9gtiBd,U2P8ͥAh*kaD92RiƤUR=/5`|woV• 0}/C?rQxֵsc|]mm拇&+؇9D4؎EmZi;9ñQ%R NisTo1mYVo8Po6V';fƖ㺜zh-/ bZ4@KLh 8F$5"C H !Y*خ8VBfjs}llfMVi,pm#;%nJ^>27_Ӹb@HGQgW//l;1wNd 1`YUMg="AQ<ޞ}b"I|q; qBR+@:+n4-92Tqd"0ZjRZڎ-mZPq0daK-~6ՔQKHޮ\ -w fmq : ^䶷;Odll٪۶g+1)!BѨ¾}{Ҷm7W.;|PJ9rGyԩ7WWZ͖D_\Zpgjjj=Y<+$&V*nf8iȅ)KfTM:E@p;"@f 㵍&gߌ@$q`qj%J%uZFkBvAٮ*vϤZn^ 70!3V @I1PQfb`Pܤ&:NDhYd_vܣ P0ф~v`7u &)SȅHkw:n''vMҊ<+pT;'q-vfaX8zZ9Z52\+(5 1@.M +RKs_rSIQplvЁѬ) ^iDbJ%`l"iBr^/xu)%iq]e grcj\U%!DG )28B@b5rP#N4hB8.-?2 Jiv;$Վ%yKh2'ʌIФrOgUH7!CK;C~ IY`Cԭb׍AY=t^dy_>rWW9vNRٖiq*jӑIC7[gް՗^Z^[jFVR7^?g~xdZ]]$0)"3 vf==9'cs]40 `8{Hq]9J%I2o)IK%܁ሌp[qpY< >g{3k0 Hkd@C?-۟Fcsdy[.,#lln?x`=$V&DGF}D _m:<Ӽ6w&]Nn"9Ӡmnyz>CТPGfT$z{&RiKcs49WJ+Zh~)8VRE02 Kvs)|ʅǢl{ '@lmjbD %vx7gRiùbE)N;k O~ODĀBqaNՍU˲vh۶z2[j-a7J>_/_:;سwOx1$BD8g245e#fqCR"RC N@|!XouB qp|tl[ήikEĸ*u~寭yύH)Xolt]_r416 2$w Pߊ!ЊtJ[Ф"ʿ/tdI|4 4IM#׉32MYTJkf]hf7O}SS\yavsj6Q-0]ˎdkko*1#@IffJ:F\A'ĝO[ >5 (﹦^WW^|Oh Bk✹KD yF!1HudϾj9bD411<2Z:#G.,./L۳N>113 Yֺ cHL)ыHh=(1VL7mv 6Y?F1FS$ ŭ4ujڸ]힎!LDzb1NN2y~$=׀m,g.]˃ޢ?m{fpo.;oU80"h<{.p)FnhR./.-ꍩy8N֚J4 dLIW)Gr=3TZwM?!p󖯔GVЮZuK:Mtwρ=+|~Rc MS LeJZ5vDZzi-a%qR.JB.o bXcD$LvGBt:v3L^X؝mwZr c@7'00bH#2`ȤRi* IR{&=}L# 2>*!c[ awC c7t+u JrőFjQt_{)@g!">enofd&aP"ާ~fQTsw3_)ˎ/-47[gr prԃmeeenn#Lhڏ)lvZE95\LEQŜs 0Lc;jʤnCfGT2jIy}sĂgr(kq֛0!ekizw;nu[-PZ+%8sJJ@)%Cm+s7ln5É,ġ@k"! uV*Ĉ^ %~ Aj IF;fEرwS)m4#=pgٺpR:j{9"IkK+G0LX" 83z뺤,VX+UcJ))4>$C Ȳ,ӲOMNܷ^?h611q%?T^6׍}&iah3R۬BRI BdiJ09cR)U 7`zt 6i"2$M"&RJZX,i뻶$)`&7F'Ŝ{?~0 #_Y]g^?l3pǿ"]Y>Uz?OVV]ʅ`k)PkMJcu{?Z78ech-_t77a -S;rxG? D&8jdL0dwde/q& a41QU/cێd.$q]GQdYVI$Ibq/]gfmln>Cvgs}]&_yG}-[k~FFjYRm)H1Ng/=Z|?Y4=XG&r^~zǑ'kSDd5Ca@2tzK kkkK)8NөMO!J)UmpaZYvuXB @;-5 53">qg?;VnY|޴4IA,<AD4%sVW.RJٟycw;3zmm,u~9xR\4L0+W.o۷+QʎQN[T8ەڨ  ʵ (}?A$,dZX[rب\G4 (˭v{^߳g}׋8cNX׻:;;k{VZ!940PZJ M: B!j7Z󘃰 fmzp{$mx{횙MWvZpp{ f[6㺲u?ҥHʌ$+W`aATc;-- {3ZoNswmmR¶b\wtzͻyg>WJgaۮe;*2%q4KiZ6D[-^ݻ^{Z8q Iӧ_wZj5ǶۭĞ={e*董LLLCOq;ػ{m[3Έu29Xmfun,aAFDz6 Aי-3y=a\ޙ 0<&Rʗ\1Fޢ#:q2xgl8@?I/$xKno?w^9گƯ=/,-"uMa&ʚr$Үk6|?3zT{/]ןOKI#?r㜢bٿwOڤi_Bi@?RJ'qllyðGj>v{@J*I8?Ϲ8pՓ{]{v&2)J#5)e*i.,,h2ΐ1$p:n)NҌ/!iEB93i}XFKDsAs[#C6`ԾmW _Mi/ :/rm[(tV[DXJ&2EѿO{9#a i?cVodُpGí(%\mE?ԛ "ٞ5koc[N@n ,m9JT3d{޿K/|3_[&7,#TGX nv{#[63lz~yݍќgιW/˹Sӓ2^095+ ݮk"B4V+nҪﻤNv=2R1V.^:wu'uq][[[vS7F7 s)Gf,J)`H3f\X_lGg_W `sԚAdau0^-^ 6 zgcr Ҥ@4i`Q 24i]MPJX=z]qΙᕹ˴ RA`FFnRJpC+8s޽JZ;}L\xR{~OsJelW^T* Ƒ4LZCMb;}۵3)Y= J43tP<RJچC2,쿍ɪO2* 1Θ҉w߳tuc2a)gB.l®YqT8 !mnu7?o6!A|g l-_ppu>M""b&4Gvh/t/=_+mm\0щ/ڵk"3t*-TpͲx>f}rm 00 n L H9giJ& Y5eT+lP|]mGz2bD`&H2ՂF~],=5] 2Q!z2x%>b8(EL3UΈ˫*k| ~?]G?.͗ խWt%¶9Gđ 48C(tK=1MSqw{rqu\3"&xf3R혦Q_?ƹ{ᅗFŅ>\ !R8?pҲ:˅ahvӑJ4-RL̲YIٳꕫK+"߶2H sCImCDd&ie2U!;"3L+J9?}Zmd\Fki[ţNiY' >Pq$K,X׺KeaZΡ)H}21ܟ~FvqTZk0 ?%52 + [B@o1Rkܬ'Q|pϾO_n/_J.$$"0'i 2vea y(030΄ifqlƘmی1Jeda,/FQdFTs\l{vT+^8s|ݳ˲L4buuHM횾tJĮ7mJ۝m]ۮT|>#^~P(vmZz,M#Ӱ8d 09Ii*z#b>Kfy3*>X+PFt^^.W Rً8.V;{q|j搎#4\v- n\$ qu~ey=8V)V/.v<ײzԁ?ԯVL+V1f$Q< >P՛:Q%iL@@ }?^^Tsad5Ғ0{qƲDR, 0 f8s8$, ! (bD( ­fgbrT*e8c*{riyۑRmnnz^ic:ѣ\)T@vJYS#S) w*J[ƕ˗98NK\ahLs>;r VYi1Xc jjdOy 入k 'gOVDZ/~GMS7N(阂38چЌ&l6e d,e J**{j{OO>0-ؠe7"Z3mCiMJHZ) M`럳Fi ^!ڮ Pg)P=pҤ"RRJhͳ6$šoa'}$;f~j4RN{+ {]J$qR)t6[M)B.aڶmo17lӪVJ9MӹZRR5[sss/_nZJ$Mϝ?w….r CllGQ9;sLKt߾}#Z>7M3Q2%+s [J4VʶmMamu3-+3'=A#W괶$ zqͩ0"H/??kq(l & m[\[X7sy@?:$4MTY}ʂFˆ3鿿J\h297!( 1F#e!i R%iZGaaA{Tud|ΪT" 3.g2|`Xf{$$VJ-o\2GHg 08|~t4(Ma_J)vιR)qa;8))v|Ok[F:Rkn^P*N^#g>\DO~ey^=jE\ CLMC4Zk,m;b=V*^9Rϯvfj vX)I~O]9{&2*URi@s. L0MJZkpN!˹aY0lӱ `(8cLy5Lsi=gAdY`hR**&VDDZJSi&өRH$M#%CidR:agdW^NJ PieZJ)/onAa*@WgNgeeY0S66gN q7n9;wWN\|Ѷl477 ;?بK)970Z[_vq3~UZi"$n[ ¨_u'>jh6++u%RZUGG͖c۽Nkk-77G'pӚW.xzz|1J)nnolnyerGJ1ǹő 8 ´ $U'>AJ qI}|/nK%I]N嫖i۞X˫wΙ2%8xmdRiym7FOm HKnpƘ&*K#,Z#pu&_4M hؿ>g^:|Ǿ8H!ff}En /_ެױlry tprxSxVyم₎N-j4#5%IyNguykp董QSDדRQIRnwiyo_?bL۴ #V>uJzHmtcx%6{<2>pa1c\Zݞj:wRqŜ֪~ڈ/ri&j) :~CRK_tos-+_\otϜ<fj]JG&ז]Ε&ίz[ TʭՕIŜt&+{6SZIE& 1Rı0Pe&&HvA"&a6)8Z\P,DQ<7;?kqT*,Q9Iw:CwQgf;"S9#ޝw3gNS^*[\?}{w3=[LO666##VVoqԝK+s/~닋+SSB$af]6a)қK++lu#QL=:9sov~eYYl9W_^=N>JIMa:_V]\_XX]`ٖB+ؓ!0#jV 1MRdhj8zR\TFY,qr0D{n>gnq=_y6Trob)Ϝwv۝JEj5ϟ>F*b"sW?4:6xlkZj46Z#' Ϟ=111qul/YISG>ŋܜAZ9gVcyL\X%ɗűr6j4V6RiZ 8Mɱ $$a2-^.W sH|u&eB#D 3O撰} aJck{f ̧y7NNkf_Y_*#kp6Xmwv V5e-WyI '[otϜ8fp; Lתwݵ~>A(v`0$RrRcEJS} W76 =$r]/Mesǵ[u?׏9B;rÜI칳esmGH}? @Gz}nvz4R/?_TR A,o‰Nq.g,r RX)B LĞo[]Yo4&qk1dz{ DV*囍-J׵fO)7Wh.vy k$őo믿|E9ϭ)8b(X6;}3]+9X[^j4{#er)5!!~PN=ٟ~~ZιkKΣw{mj3_ʥG.?4^Y*UtΈJa66[:fPWx23!3Lf?~f58_} DY,:jM R"<_,0&LSRwJJs#z2F3conu(),s~BLy{ٹFγ8s9Wp3 Qo&?_IIIJRtC00JKԁ/^$&>nSMuR|D;'y;A;z~whkwcA9mE4bIh|g~~ow-{#  ?ޜJ΢8mbǛ15˕iB0 4vVo[-n?P$&@D1T#f@<CNShFjdlC o w3\ x,l x;ؾ9o:In+3ٗbbt[HNt:.]}u]q\.jb;vTrz÷ֳ;?,CL;X~黹`iKnhD:i"&F LڞGQBde-|; 1/"0=˽m?{y"-Mdahf.t:]w#e=-# WMFS*IiwMQrJ.k3C JED0A'0 c Yz_qKo5ڐh5M/S7 6iS0Lن09cBY J#IW[}N}x-z8 i-.i)cmз m>e47JۜCtuIagmYANqmmm}s{ׅ:*[Z0 4MmۮT*Ν#GdEoq7$LSML GΡZaO5W9y2`A=Ynk^[OVAc&@%DJ,"`Ӕ"d\k$c2HIĤ2ōkj~s-#|9~d@e̊8}m m0 Uk6ۿfWD֐%R;iYRifGd?ݺ)K/4;;jj99HJ9]n=?O>9tj{3!ƚdV=]剢k"ǣAHa)gţ(fwL%9 GԠ5 a MiK$ DDBȗ2!MQS᥵5M6/??;x,!fLшȈPFl~ m{ՃpqL/@Dvq/\\q#3R]0>[8Yq;qK/1 8"j@ tn>6ћVe\k=w#m8rL"KĴ?Tyor0|Ϝ9$<4M0 !D0 ZfmmmlmVnk}?'.kzh%2շtm@%NpQ+RZ*UF>O$829FЗ*aq(&lo[wg Ž;lC&psŰ *"rQsjy䝿c#3} wNĉ˙/ n37KI))ˮ !8zF#"2!UMMT݁{s>C$ߩ L B4IeBܱe Hk9^O|[]Spi]bG^k{+K(dY=>3څ3#ֱI&\~󧬷28!ۣ`?]JrFD;q?on67vKMgAQcQNջ~޶{/Ii[B}z%Mt]7㑑NS(lBj5"Rڶ=>>^.QJs[Zbq;n|n|7//(U=wDq=}Ȥ_u2D2a!78"`/|M#jrfj{lmj\ SmMʯ?g0Z]n؀Jt`~͍qox\ 0#4p vbk۔6o:i !o~ ԥ8^p(e8N(si^rQ띜muݑ|>OD|>#F.rJJR*2o+W4$Idc)xo="L5|} t _DHhZ.OYk&3O4{nQ1\~嫺Ǟ5]pM0\ooZ/M7VZej4]@"l6ܪnZ邁;9b݇o5~Nm"rq֯[6Yo(G;NӄԈ7G7-֝Ykl6siZT*1"fnm۶m#eY#H,`YVVd} D}mm{n͌[%/C R'{z 2V* YXWP|V{*ԻFکnLWx=?:qm ɚK;,?j]v!I.p*J$mZ;~D)]}˃ :1aq;:06RzfiZKϝD/GVzC4@חs*:{2 RE˲r\\΂\PϢagkq|>?999===998NE ORs!F2~QY/m$R=zɣ꫟:?g}~$CFV;)a*MA'M˱QtV>r/ ,6ZGb"b6 J_& ;)vt%7FM̮a;SoC{4af5M12e:[ ^İl.Sn_{E~Cv |3ܸ0vv tR5L܉ȲL3Z2DY,gff&&&!ú\.ȝ7Od' A_ARڲ9 O-)~iR#0IAEZFxIDATJyuqf\z˫Fڹ6""g!rdb(I**E?(sgt6V,C@qxeTCSgtwZAYYtBX,fƽy, X"B0s۶eYccc;s%;2"/߽ #u*uDʿ(w<IuDcX=td @ EW ;0g\Yd{?n^tbZFA~J9b?gD+!䎳y?/ BaHI  ((lڵktt!ޛFipN%2#aҟe|*4@pВ\2Sp닗SclO?8Rdժ뺾/^\\\|>|wrjZT,ˊ}(JY)vc烼P4wvɨ4J*J `]#W,GtP!4ĸF6RnHk"4\Ox%egjoxWoډl6um1 +eǑR|84PJ 3 w4?vN?c>ZVNtmm-,ivVx/x饗ZmY4'|Ҷ˗/E%3T7]p@ݣc|}_ JBVM2ogv! g?Gsx—OA4L9e/TdVPk=dLB !l6L F^weOx'd,b m!Z87W}*yr2H)TŒ^׸JB̒VٻH8`JB]7J sgN\yVkk'?r:M.v7?w,,=Ja0 cDpi@@B 4)-%iwZ[ݦSwR^$K|'z8nllxW.  ð,k+++Y9|iڵ˲Z_zؙ̩udFwMW5mpUZ'rFZR_{xjjgCk[7њeZ1ꮱFsk@ZN.Wc+1傲7Tr`-I[Y#DsRJ%!PLr -zkB0( 67MpҫW_{a⫍vlO=9277W*4ݻwa"b^qICG .f牌i ʮ=^U:ܱl5L~7_.ۓ8fa~`YW򕕕]vI)k fWZ///|>EQB:tedb1 v]`蛹*U㹂4۷<Qoe #t0dh$I6dq7.>|6~u\/=q.A_SF?3whV-̵Tߗ.鮟h-J˽z;{wCrsd3TDQh﴿o)d4 aٍk^BQı?l;{'arͶ}~PTJ5ו5VrX^*7$UgBݞ9bI}VВRϾ?aٱYh?e"r|>bV*´YWZ?tг>+8vXÝn4xv>ﮘ&+91 6~gFƦ@C"H `\ |/6:ˎ5h=q/\y__/GCŜ=X?bFm]\Zr ͵rJA*{8cGJiq 5# F9zvAқ!"'"$OsdA,Ou.,$E@g|6R~7s+VaFD(-hueu-#2778"nn ڹ$;/*LLӴe)l%dPϠ|呑eP,30 &sθi ob=^H#ZD=)MlȅhMw[[k\ ^Y V$M-+#ѽ߸tVc#[Ӌvwn; #MT9{u )H2Lc2D$M}d˯κޱ8N D2Q0MYx$!D̨1S[e3Ld~ûڕnaYQ5?*#ر0дowA0L6s2n0o~cp^%.oH5zAv.w=uVuCep'ʄն]vMNNfaГ'O:ujnnx m |>߬>swjuw)W݊Xə@IG$D%iB 0S@dicb2s83P "\./xڹKNN*I*.pk 54H*R~%e0~3_K0J+e"G$Tx r3׿=c?^i4a?H8ڶaXg0WVLaN7{7a8Ѵ,mϾsrDaaR?j4Mn EVn>=zcccR|>3aZmjjlBnb>7 #v:F!11155lSN\ǷN2ܖ{4(%40`~wyhKM`H8kpqes.}w>wn?4Q#w~u*Dln&V+V/͸&R\XByg^@%kSDFH1Ft7fKl{dl9Cd ö~S~쥗2d\q  Hs) vIR)G*A#,ۤRaڦi566"gڹ(p#v{CqeU ̛j|?tP ðlf07YM0޽;gA;r^W?;ή:Z{Sn{jzdKM5PC(H$}S !oJIH$@ N(pl\A.4{̌HN~-{ι笵*zfEg^VY;kS Ul6MQfz'o-7MC+H_.Ov fN_$K+j%EW-yѝQ6v7*MI%XmkU )`N D@ l؈E\-}eX.vS8D -Xn7?sd}̄Mu 5@F?/R1";n߭(]"(4us(OW6|Bud>077ljA4\.y^]4zsz~<0c+0l8GCHH"ՆY'Ob\w'П3^sb( E3ma6|'@ ~A94%׆js6L6MyC-: Ģ7+z4KX{33T$06+v,lҍ7>fF#"X`@Y(fyqlFV ]~`Z!$`@`&Ḩ@x (I Rjff&jm ITUTƁEKYFczz:3ʠ僯%}q0;qW.!$ K,KvYkEFn h;NnwAt8N{&l׶:ќB3r 64_U;8oXϜ)~Xz@B0RNN>2N3??x[_tx$"ڴ+qd,w,]Gy/`'`GzEIւRfU Șa$!Cd} V?[- 2J],1"ch ãGtDߎ@ZvOјz7oT*\0ZaYm͚5OȞnϠeuIx $yJ)-A0Sy93;ʚvחFdž.Sꞌ?/GE Sp0m=C\.$I)O;Wg̃\$(V|Ѵ[KOw̕%xusV/ԣ$t'PnxԈwkzUh_ɈyQhXta( _N>Vu)g9cBSF #Sk6}B$McAY8ĖlT{k/6iӉCBM,%t%Icǎol !|o4}}}ccc3P.׬YzMOOwfEQ^T*PK۳Q1gYO /\h0J$#"ytfOG=9Tsdo[˕` -l LoCvT=% Œֺުp*i`ϥ&*!E$GX\KƲ<0`RΎhTZE}% f=Jc5éfcH/ *nʟ튋/ C^SX, Y`Fkf)HX1eIv6V9N#@& V>9~P({EqUkqӭpePJh5/㖯Bd^znGTp Y޹M֯_wrVoq]whh(AnNje<555wZv3!pVN;5|Œ.Ʌv7}ύh% ý{سGLvjP.vgk>>) Xk|r\ւĝߡ@&j~)gR[d.n'8jLFD`,l|*;0g=/Z{ޘMl͜8sDޗ=bg:%OCqi AͯoG˟M⋆; GQީ$@:E*("3 Y#\R `C>P70"ArT7[FN7X"h\E%x$,*4;зeW$aS<^9[3r,Du׼5b欒Vk~~>MFaM4%2gvvvll좋.JdnsyOn+Ӡ ,պV_'󹉉omsƞmY#lB<^ @ev$G۞n04sE%16OLGN;]Xi?~UEi9Hߚ5VkB iqיY:2/Ni\OM ;=YJkK_[oرcV6M\js'7wrr2+o \tL ʍlb]%:>%6?Ctt~w/_n!v^q3R<]@dNڿdv;ATdly3Mo9Zt=zoמMUݍB++ٴAӕ:sq(<24FpH' T?C+R[X8|`۱(z<޲{}e(@lB3*QJC5f.aĖcz?[h ;b&ู40X"w%Š<#,aβ^0=coڱ{珽5/}~ٚB=#`F.wnCG@ `NzJ Po؄;ES 8aC9>7#+bѱIډuXC\QXo΍Te;{; ދt+`Q>92C*ƄipYބ˥uLHjl_Oss3S3'?Ѓ b}]{M2 8 7 US]9Alsbֻюݘ5bɢp""X)EmDQhA.Pvu:VRrU;E2wy_c0 7o<>>w4 |Y{z_]w%xK^ۜ%8}zBb( 8^%lk}9笵`πd(u]{څc'knaԓpNx7ߛv";i<9e )qDYBiuN@ʤ(ugCADlmZ,|oFX.JJ% 5}G?wăY}rebv<ذq3DQ0ߞ;G;9qǭ|!$?/q= 8e 9%XJNǁVь%%,,N8l67l0666;;dR*FFFlٲiӦM6;v[o-}{nٲ}H$W/V^)W̺@ [>8ab$|Pv{FB$VҾi#A'F1DB  Z`~hUNdw洨QnC'h=4{$9ȅ)¯╾}t C t5:i˘FSḽXB l۾\u=d&P*vdJ:^i\}|ػoϗfONq43?7aO595C_.VW*4HHK`>~w-[p x+2]XڂVj޳Xfqux[I*qVfo|^$qk!E3 G{|{vKNĤup^*69ou k:-3)K)a)D,e$G#ZH  ͚efDqidb f΋t\<2>BTZ[k\ 4WKAE5BʥBztl|;wNILDjテqZM>!jf zk-JY8a6 1},#w<[eOo/ b:YD{z/J? .9R7. em7n5R\厓 %ə׾x=7~.sαI0@wB 'V6戛qGs~W6U$hIh4ME%HrNPNs'?7n780Mb1E?_5N%$t0Bmcb V˵Ϸݺfw_vUL{\m'$>yBȄ;ؕyN>[:{r_?_PO=:q.1fT[>/̄ag6,hî_V{ºx}.~ㅗnнEW.t' xj*|uPK߂5+LE+O|˷'p.h6v( !DtGŞjV%1NEB1obk 0 0II]ukQNcaM*j3N'ݻ>(=!&nYyhŴ\ ^q`\.y{=zh\Qe?gl\d6qkUW]5551f< lf0,0d RrӉ'o_g|*ϒXA7?}lB7}iF$.]3mo~k_~őOi}^tEZnc'W?rrGO+wj5)sQRm;;_/0LZBQF&aV!ĉ|j$\;[v]g |]wtMqgîyӝNgڵ\,3PVk4sssCCCË_#Z(]nei,6BabbLq}ڵkll,K=Kh|?k%k/X_GO}{wg?/x}' }}32"VK/'YmF 4cutu(y)mGܛ;2qLr`izRu(4w0n%Y OW}jX*[]dB\Ambd'޼(@M?_vTK☐u4F; `u[ַ;Ro\QE k)InGRڂ\*5G~7_?F= 3̟ٟ;v,#u3rju:yx _xj̙ni͚5?p\f;bXղLkN@EJ,M҄Y'>߿?=쩡etGnޑڜ#,?hc}-ՇLDx/,̜4Us{ZlGTBQC纒>ekϋ|G<1Spz~cvbRI\o4$ɷI:6R||+|{I r\ \ cQl^r_($ $15^A8h-JZ mwvȖZcvzRv[p|9Q/{ F+!ͻ^oqMCF i?<'>wbFy^VЇ>/dH27}9͊VƘ88~رcǺu|m:T*8q" ^ri9av0̸A3"fDCRbҲ1رcO8y)qe5W,v=c3Հxջ~[?_[o{o]Oz_vH!}b7jl!S"*v^aoly=?۾pO2/bvߑN5‚m&$-/ <}w%&ha9L-(M 0TJblwڵ[*\r(V*^ov `Iزj'禧\כ:z@G%DR^҉ó:$ 0FsI6]{]u|gϽO.N/H~>MOOcY2Zq>;S*:M<3w:Ru~Z-f>ɓ'0, Gug kʬk>9QժjT}nn__w=<af((Z/uxpi}B.%i$Y;cf8nI8+oxz}5?7?~nz8vvP۴'z IhR>YG9>~o7}C(Qn T7>*Ȇ?tPh¶Bj v1W&1lR\'+jmnZ/ N"*bHk=84j4ltТnf-mm~Y8(\:&dGO6*~rxJ8Jz4e\-M5Z,&g}ҹSd`G ޽^Sرy`_֜$qE߿|5HdCtqrr_w6L_Տ~cQ蚉~awGO4B+/\hÎ5@j֎Іi|r[CM/,r"nr#3;N3sI'=2sVq U/6m[ ./DHB,v:{Ïܹg~Od H0m?.?cCN?_InYq:Up+Jfxr_}/{G7焘<2u졣6/;\(+*纮j4J #Dja+"2T,ghmfP0W8)1_lްsǚpca^831ym =֭D׳$Rcq<5IhcwNWZsyj۷zkЙgL19g,!ղǜ$Iȋ<;n̘LkV|,%Y"f(*Zƍ Ȣf9<<\+O_HEhH%R0E77w_o;E/z`>|8 [ɓ'~|ȑ#Z77_◌K e`S*k{.ŏ>X]- I!eѽnFQI`Mc޶~tP]Sr`Ռ(%]O \ "Ǒq ) h RmؑصfC I,i r%DڔrT %kbѩ/ԛyqrH՛ v. :ybR^wv>j5j%0 ݜ BW7<==3g>JLwU!dqg8p,aNbC|IDO{qwn6sA{\Vu$fgd8.~>xiYΔzv>Ϝ,PJAAL+dGzXmZOq=ya"ڹv ;~xZm!3]f+(_?o~w:e|?+|``Ѩ`$睷^8苶ZĶQna-opkGo;xhTS_ٽW(-<4K/ᑗyKy, l "=Y|80, m75*ukF֛ю69\%k1:=r_o[s\Nœ |MT(Xw2D"=8Rq9tprOɩ4ȩE'_X[HOXcck}BVJ0Jy]weRʌ'÷eIz Ue$I>,U%y_emb)b4 dk"yAپ%u:2\4 k9fz>'%S M}Z[GFFw]?0 ql0A7fꅼ 3Anxai`5NDR:D=tUh:lt뵐t;`s%s7np .m B 5ku6^9 Y>m`N}hOٕgy9vh@3 3#&Xɯͽnm!z㠯Ri4kAtk>$Oܦ7&2 ,\_QN3_>h(dhZ8tp"٩l+687Pe<֡B>68-+9Gnw\q8Bi: Sxߏ&_wO32le^Ur'S; `!}f~|X/aA =j%X<= Ngj+XBdž})Fcy;70`YA_S.H-&/{!)kzm:_> x1( ՅҔ5ԝCJ{ Tƈgʖ^!ҟT"[&۹o6J Banp8Xy/t*X́?To׺ɱzÒ*ξOTV0 ĀWuX1%yr $:.*ńp΂Hg$'G!#Q>%q+BeW"eF l$?:˘[Fz7 UzJP`T^HDRkȹT2IAD&zm`Vכ S`a0Z"+7/^%._3z39ᅳ8 1Aj n.'ŴSfw},vcgZ"@w1P!X mb 0L"a s,+s˹Ov- eB:G֝y(qd`#$*bus| TIkp,P,I2*c4_@u/2juNpNi#yp LH8S P2 w= $.xyCC>̋5n/S7~ĥf򉼄jc}ޫu\E`\$&ycY98wK/E6Pp'IB@prn+˅R^*R2䊵Z+(ZGH҆M}?8zc(JxSXB" 3=gZ@QPW͗ɓ4r@ Be#+:)`\}dt6̀B_}Oq G?4SI /=ϊ k``ε Fl==9+OpqK3Pc=N-}Kw_{[p[o;޲{G伢[yx, 󊺓"I9}qcRJW )!1n;4:hZl U+=Q")sPr !]NB"+%eXT"z>E'mE bv_W{o!1mX;wN7;ThZQZ^FU a0vp/>_ho7A*V,_@2, .kQii7dF#2)I:$m@>97lw?2\s\ 1N'7P-|J@0FOL$ ; '.ME\_,|d^3̭HLSX[ Wt?Ɓ-z ^yͺrNIQhƉ1FtXSC>G7]z͐E@h-mz>iS3N7叧"O*< > ;,HsK4TTv$.0PoO7Ʀ3͆N+K(jݬ7jA-T}//|m{2 *<mn7 kI&`U6ChE2Xq yp~ˆ/5 f`*1fh|XR:Y eK\џ{Îٹp`b!O $ l_??t6RQ9zX] s+9Ֆ զ]DOpO_0azk+``E.~FY,z0˃f1KHR\pQVX[8:5vdqMPɫ8m*tL]\ fƐy9M'1h4JtҘ=D p)oo}?B9& x Ddk@]wdep J_B__}]GgYrA'f,{uqY;U8Νwr6Z_ⰹ/_da3lnCkrcV$xlCm]^{\Iǎ e!t Hs+/u%<_N!3NM43 !3>+ dN !oiH?MBTkej'[))Re qQWj<#165e-Ճ߻VU[ֹ78& "iX(j8SZ>E?_1{OGe]Ÿ畯,AOcI-<8ivа/m[zM/6۵Fsa=:[mL7fbRr=>sz;F*xm0}94{]cI0jXٟ̿<|wP |9Fh"eu#lg K:C[=b^'v;JQBSFw]G򮔃LT< 6Qqіw=oyAkuwz uzz ĀH6+a1#l;A`1#Yt??;_K־^3yJ<ҋID^ 1"%3E\*"JgZt"՜NhLQZ JDPB) k7j07\C<1T.{5NQ[?N;(:lV!>Qw&ml%`kY smI˂XDWlȢcjYN_rv=S #-A""@DD$DJ AhnבX : #S$ADI* Rr/UҦ\>Dl+?«/aIU)`PO|o|Drn5,:y0>P DβcE2G~F??=Y!$k.}7X3!cmabTQ%zZ!7l EڤQb6{5}łoM;:M"D\$tX4\}7+w? cdݺfkAy(W(s]a%f  C'|Juiłj)f@)IK~[ϫVtzf06‡7>p>@stYª'_ N,Ox 3 Dygeɼt''HTr2-mӰe q֝)b)_*7'ak$d9/F#6Rϫb9};7=2{o~~_Z |ԋOMY(Dqo?z nW X}C#xώ X8֬`lE9 D<4zk4Z9r׺CbHj:dVRf# #sVzXD*-z"Ӭg<+Ug&kWf/l'6v 3# %]%E3n$t6d)/ DYv &ۦS$qL^ߪkj`9[dX#s* yUkC>Ճ%I`))K>zn@/:}}!D:ۜFA7,_P@`ӻڟ [W7gA-E@P[, `B`''T=k4# lu͚tuX ׏;Dwx|sj+xdfqK9G 4N N:6U͉YjV[㣑=G}S ?=6ǟUقp G&ҫ#$\rc]bn?KL`OUx@*LR DAVu8d]֘$4a0,-TzG|;t#)!(MFChYm[jO;a+/:x[n]35;XXAɅN8Yv79q r]c&u/kkw_xϾpR $%ɡrz{aAdl[lEZz i}v<],):9݊: ɩCO;?Jѳ+5[_[?.?ڑ"aW-\ _Cqg+=}%.CĖRF#6ծǎR( a2q:AX"x[/>{Kf+o_sSƔFi7[o\Szٵ8Hm8Es!+hx}aN-yxEj2 NJD! rޗhXҋxxhk3)O0) 8XIZȘ60Bup ymyYc'g/#Sbb_ Y+Y!O`ѩyNk3 {pRP\K Mz}S&WA`S@ X RaP?t<ZK X "r=icI4@d lrR9G(0N`QRɻy 4"Mk֎VzZAG%;w?ؾ>jw1زD}}{aI-{9[g2Ʋ=_Ͽtk׾lC%gHȲR BO&ϴ ju"$ >)2?O,p  $Ib$XD4aQ+P)n'N}w>0qh {{J+g?>:oOS=_e f+WlZ+#%XiUO?K]/o/|>L?_~o} {<Ұ|vmʮ SqV|)3ssLkv<`4HuAOF9j%/t+JOZ`'Nx_+NN4ijό itx\0ȬǖAZ"Fk$ 0e5bf :LD 4C =+6o}"z>25t |PHjڬ]ߤ>b_?9">cl\tj`_o͵?k^rEn?z5}_z[_`O~+%WF^oiPߝI|Åg< tVɓ<]AD$ 0 4 0"bDF]Jɓ A99uD'Z9@G4Lh&*s.rcF] hyy_L3Xrو0k_MXAj\K]v8 k?k˹g/ cAa摯p-ryTV bG 1IakŽɉgI}}0 7et|Ary} )ᮼlYKY @Bh;2d[n:B #kuc ]Hְn$W^z>}|I~/px!@)mTs= F&T]#O\ /z߀Lȩ -{jQ-3 : ]tB#WȰAM5L]9;30B!_l{hѫhX!+HDD I0`"DH$-Y tf>i0J+DP8/l7>?8o[%Dl`ZA6 A8_ǏͽWU7X$"-ZQ**QBB͙nϿd׺/}EDq7JD'R (չR;|XfuiobӚR)cE$E6 fDHI JRJJ)RqNC" ~_S_?ƝsںˋN ld^їj#rE)"HqeH?_~^t7\$d"̴2( uj#l͚<=%QPڝfk\ctZH4ad]FY ^sa$VaJ*G u\q庎(%EX)Ē>N$ ]WS fӟ蹼Oh>“0xwa "iszcքsgM_)j_oS*tjf7AI 15hH#X;lH$ɶp0LmM"sK9@Uk"PʩT?pťVB,AVP Ebg dCɧ*  T5V`VR#_}oP:X%R|$NCzuֆgDTw=OUޔ):j}r晖pEʍ8]A'O4O`vqX[3[mu DM2HLlb@ \8* RX唜 RՍ.5_:4RJ u$𫯻sҐl ,c֬B".VGiʕ7&?o||w˕]Z[Ok3`k _?o8?vOy0@WA {:gЬS֫dg{lU ZJ_oFsОkERqfZ, ^˶+Xfg6:@ Kh+\yu#Z'J)Dt]0+D_q\{5-&m#,vd%(Y Xp)Ƿ|Xϯ~73_uyF:ۇ$s,3! WP.QH㟿r#ov/ZWn( JaY58xV???>c#;8i8I_PӉ&!Ea~luwx rD Yl-Zk6hZ);P.x5F"@%DT!@E$:PڝZ*1rt/閖Bd`%_ 9l_1_?ۼn~v[y(!M9ƀ?b: fRGBWoqw, |ΡXLW??)GB (% % %9T@ ^Ջb%i58 -keZʚd2XC,< mGF2[P0͎(N NtkcqSۻ}&/9= 2HG"F xW#9bM'9Zݯ_sգw myY~X`, `8m'{_oީ=NZk+{p`"j&s,9W""`@fc4D*ʞXliĝL {{OLXl&I$ %fBu[)Zp-hIR j3,Ȕlq򃍲%byVKජ[r-"oR$)tG/H|KΖo  kJ}kjM/G;uCuaoxkvn# , Kxr 9k22!;DC/ ! QL2 H]dL[/Re"3 #3њ$H*R4v\R`QHV:](}hpAqB2pu슶w~9|݉2lb,eJ D4m(^iL3NovM5L:Ib^ח^u7{<RcښS?oϱ4B;j {DʳF&DFf$0UGtrvPR(A"5 ưah,R}n  ƙ3<¡];wMZEIe.?Ə`*_O.G{M}ژKlZ>c$c1eJhΡ5v iWs;n*I'1IXobO/uf,k@ (`\`l\ZT;/WIjRv+֝W'j4$M*" #950#''*΅Z ,gѐ& DBs#;-O,Ά!$cXkSLjc|KriP` . :bd5Z A 5XRAmaYNK^ޓmOF2q8A Ŋ`: /+'sbZS4;_&?}Ki?@Ytb*vYτ<)`@3<19Wei;䞁9#}X29V ((W;U+),URh٦`l$L( l',X"Vب_xmBkN%A&BDD(ƤӐjVX(ݜ_6~yX9YHaJ'rvoر9~IvZ_o|oӒZ&D֢Xc-T 23 X-mn>lNNc;wxl{oo\2S&uUZ*05 UiAZJ@#I6H{fDk4z<7  A:QB`H %XV!bAZ6F rTBʵ/ͭy>yԔbty?;{s= Ij0uϕXĚ=tPIDDRMӖBI!v8Ijԉa@cdA0sJ %$qi:R8&YHV[IB*ڼ;|e>#;.u]_|uoӓ=f-rhIDa4+EZKKR( R l$`5%: 'Z i <=l y~Ps,,e:Rl.iE$h]WxK}vno|k;6g?[-I4I&YFAjak=_(EI !9%ֲY?>@$ V ,Ĉwd^f]"foD$%$IDRCR"C,BeCHV(,03cAڰf [D[k61"e,gbݨEHXfɚef,,; %L&!JR6$<)%1î*G&ʜ"點ϕ)+U(G!QŁJ?PaA b}.'09InyUs!]X|'/3p.2F*c R1R)bHN,HsFaT i$xaz֑ ڄv[ q untr~{FF^=}3ayerТRo0.#gIf0",O.3Pf/ؗg 9ϵv" - 3#EM(A !#g+1!Vd iJX T*t0D$ْeaʕ:LHo}ZHK\=<" "!%Bkagܙ,BcR Φi RQX d%)%\p=6Za̶mQ)"Ijh  UjVɫ-H*)-CfCHodmڐ,-Cdb8ϑgAZf [&Xrbbdc5EI¢Eh"ke`&Dl L`1\ Q7q\"Z$,T*0sD:)KrZ% >Y7~5*rOaf$ JRZ*{Ș9ɮd$I)ZgZK ԜwᵐL.bi41rIX Tl[ dIfnFՆ2H c,hK殈Rm lH;u%AZIr&V EQ`Q(mtDDjw[y[<׃ToXn~n~nbtjv"W~XC`|ΜJuytR%aP*ӯ=co~˷y!@L|t%#퉙,9 lA Zflg9Hn T6n3ox'Q lki,+AH@p%e B0 88H#MC'oxKW1$,5`B؂@.;Wr6aν{/:7u[^I{N) %- /rX^"."0.93ŨIJꡑQ7z+611l'KY8$&!5 h- "DH(DMO?/Ȟ+^:(+X"طH."ygd3xIWGK$rJ. Z@G l,-2Ԃ"HHlIAJZˍXFJoi[nwɉ#o|cUۻg{\vA%ܮK.`\޵Ϭ>CȖ~uM鹙cGG[™9${xLE&qtˑA[w;t8eWo:з4͌zy,/D`!cB` /}fY) ,`& 1(ͤ|0$"0f. c$*!Xʴ)Cqf2guw]R62sr.G_0"eEFFfi3iJDRRY<l6&sl lC=Pf$ 0j 'i5Q ٯ}ˮ8~G׾vUWmټl&IRߏxzA0>jR},(`}}0[u^TZ͆Qʄ6vnO=GW~;{79/ Za[26GkEQU'_ySWw#{/gOVU:wYgNy򺼺].uuZZw2K&2'LMU@}/IDP_ iE`DSUA$ z*3f>kkWY:i+.tysUUic[WY/M=EZf^U⭛ߚ_^,v!h5DƑ"P:)hv$B8a D@ʰ/Vq`ak>4@6?o&I6͜ (MӪ^|wwӟ|Wm/u/u<ƥf"~WՍ ||}d'BV;SWۭ(˻WlOYw-;bf͊2dO^ؿlI~U_y:QJ k! G#E yvϠGv(]lb+̡d@Lݦm{s*\1/@iD!pP""j PBd/?K~c}[IQ(= t| qpAF 2Z $]qqDIb "+ % 4I2&>8؎]4i}NhyG_?Jf,WCh:|("@Z!\-ő10N{OwͧH{,kM >he>5B,QdLܓ7@x{sKzԅ PlfD"b"AH:DB}@1z\hg|'VVV䝏(B@}UUJ) 5օU9v@@Z@>6YD=%-/~u= V\Xq|EgfA@{k RMRBuUNzC/8RZIb5sRW/ R+9exı,ky?\1-/x|۵׮^nwc 0};"zs-f#k٩hcS[;YUnJSgV7+HM=ZA%$i?-kxkN'^G)k80<G >d [1FT"\`hŖ{:\GYH&Rh8dVkb#1@ J),i$G؋*"r55ݺQD-#f8P2lt)ddU֖Y8v4If? !0 Hkl=?$"7cdۭafnw,'D@)j8rή,7glt2Hkm}CU妓n}k_gΞ?wͷPGe`S"lb롓 ~鱽8Y5Lw6=vdZdEIY suYP7|vf26I3z&H:CR  ׎Cmh-J m>D"A./eiOqyqQiZ" sNbs*QH啭A$K3"8ED$*Q ^`ƭ/_ɟpoTjC37݃Y!E%J7pE1M\xb>f wu]E]EQ'j:c'ֶʎFd4+ g+_Td<Zݡ0k'OMvΩ(Jk-0i~S'g͛KN.,,yguk)JӤ,K/Oom=VUUt?}3u9!,͋GM^d~zmж\uz=*;g;yq}&~7m&2f̺4.CYY`)}~RYfp[SoC>,Kx`5pqƙ&GaBQ$DʱM[N#EJV: ! 85ͽiUDqlD묄%f3DQuM) vyG{ÿ}) 6g ʢD EiĪa ʪ*b2ΊE[x6"w^feQ V{]ZYN۹Fu6 Vk?$I{_x~scG$dY(C,p=k{=y͛[[[^Go tZXc8һͲp|n;M9n֢hˑ3 #sY؎ʖ' Z4c]հ"AgeX 8<"VaCu>0`%YWI'ڴ"! ( HeUl$)iZkDF_@(A̎&㢮$JFiA"SƘf0gj(o| LLQP( ٬Keڲ8PGm`>8k?/+]Rzmmm< ~޷IQn &soy'iFZ3@|HVumEd~~ٳ_WΝCBQx _ŷu; Q:,窪lZiEy_yj{ZB8OsdgYnw굛guDW~|N֠N,tgʮu-MV:R;\ Lxaa0)vQTvc7MfqtiR?wR;RtfM:aQmd/! 3`Y!eqrH.,soos|Ti〕RJ)D*o%OϦeYHEQeEDj4O?ڱ^7<4}g. P[qr{zu~ʔ$Q(z-2 @(D:oH$*u!TFul&@ң!DCB';Jr"vSyL ȁUeĆ`#)׿?7_77oi/33e[}j[饹MHƖ;{Nc3+V) iȴ Q[$%"g+?믶z'-b޹<) pxA T) <\nZ:/~K{^k$I]WZ`ֺp8h7ߢ(qF 3 H&IW_>{3'Wf?/} 5GB)^QmGJ("<&2!"!^! 0QAcgvfݴucs.3H@P,[hD77|湳V|ͳ$NI;¡Â@J `8cI## )hXqm} S?0* 䃀B҄R eiMND)9Gߙ^ܬP(*&梮" HOFgv;>]VsAGJ(mʙ+3 7wà%YZ:]'Vo=x61&%w6 I u+ͯ\r,Qjv`X/-86qq֑VH)}ֲ0"2Fi]t2 v+oE)V2$Qy}MH 1Q҅J&"C{Y>qXUU! ^lY٢ 5@\iJnsû88{<[߈!ڶ V} NDr<+ I;~zg{o?yrm)m:?/NՔ$ Lt+G*8_jfhqnNg؇]֑ Fi\Qј8NI,slDQ'v7ɕ\z.^w&~[g}nuޮ͕W.,Y][|ooޞZEQP !OS8{ۏ}gB,xtPpGA BИ(KbB'57ǓRTUhR.]^>ށ9_LDz=y0C):9;1'(bH)RZ!(psPn"̚h)ONib7K- Pqa6elDA>Q Yq٥^;ݖ{ ''`$$VPűd!45VZ)tdl:YZ[=u -^RMmzLֆDT'N,ⴝ+ERap[ :mM_oez!D[[{{󋊢v|rY7o\\\yv;ࡘj ےwۭN'|gVw4w:ϜO?TQ̪F󃴮hEy6N=;x,&tzkcbv78XFh4 ,x[hO׏"DxDATY'cs'֖tf9~"/qa<؛0Oqg{Əg|ձwoEgVUSd{NͫQ(4MRtȂS(SDIuv@t"&Y IjX Uz~hSK]:ʒV.FĠ< ( @@ZCU &weuddFSWl_Z%% 8`Jqq*QŭHY;sy.1X::Ph SkKty ReN˺;ڱc&IssKI'9}]guj,iA8W֒|߽./*Q{gxڥ_ZR]UYA) 1vRBpGk{X ^7z37>owڤJ>η[tzh÷3sk:}esowҎfB;WniV[^*o!:ԿtȾ]6Luj8DB9l{䣙H$?$&bkP=Шtyh03ZB͒^pi}jFZXl!TJK :Q'_}euaNjWT^RډCo/t$hTE^B_N0X`kP/t2llkPet6_xu0h~'Ǔd:QtS4IE0Ҵ̆!2n FibA¤xrE,J[>w|mu9vН_[:fߏ+RXh=#Tpσ'*k|&A'uI(߾[tM0&a>}7gADׂ12T]<~٧_zѴ:o;b?ۭ͍˝g$*T^G$Zug@2ĕel>hcVii1JVO3N<7FUζ9L% u XFQʷA<21QS]SK\+YǷ.nnt:vED^{?(ʹkV6?wolmOG^?~? ֎u;iSwGS|賿SlzNU6Vʻ`HQDFݍ\OC5Ce !E acToV{;{'z y+y&7L@XAcgpR{kb1aew_Q߻zӛ7o>)juUe׊1jWGS'!Y)ɳH GAöcJg1p,ZLBЋ\M]}E*N8]^K:٫$$I@0j(x?X?yM^~g|b{Z-aFsKY")$iZ_=kx~_z4MW((4%ӫ& r]MƔRA+KmMf7m75&ѐu<;2т-0Q)Rn"Jy+ǵ:Y Ũ>٩I߼q9^Rj9p~:sbͱxL$d c[ZI<)aQup1n;G*ҧO?wg/_1D&DQؤfmA/E1<6t:.p4Jih2^]Y}衇??ܸuC2ȟfޗWVl" 2z0X[onntwwwVi'o^pawwĉ8ё]<%TZGsV!46P~P7;Gq #%a,C*TfvY5 ;v?.ĘT+fQ%sy0wBƪm]{``F+~F.MuUShw' DPفu;Z3 YG \&/_/}M@ W&yUX+WwEQ<±nAR,Jw{_v!Tpp%{h7s{~{w؎ܸ~jێY}ML&fβ0^7N/?|)v್7ĉs?~&8IMiMJV5lmm_r%ey+ZG~=ؘV+Z<ϭsW\鶻w-:YZ2ߩV}aZOboamZA'o@rTXm pf8f"^Ogs@7ʙiBBN[{{z%$.a>"n]ULj}srr;<(Tee轧@Hx4st{K``6.GWIlHy-(F[[<~c՗/\=}lܟYSnb{bkK"uPӱI̍7[{׈NUe"`Vi;z}kvG%D1"d*ק w??(èRU+ C9lB;WWKDN<&qDJ|՗_4}s?K=[[[ HLHjޮ"sƍ4MF[˫+* 3s5I)L~{~ֱ*6HJ#wkB{cz"4(Λw5p;PS @buy4(91+)SoE 1ecゲv ,u*:̓7Ȓdtig{w6{`u!PMKwP[΍wi_9v`3%N@nLPxIQިj d^"|'Nww:vxBaRLT4-kW[OG;Vγ$KȺ (B"sݪk_t d!8rV$D{sα(-g|gat$&*YEѬ*|0/}«\VO?qxdﳵ}?ڳ$Il{{KI}4xD"OSJu{ltk[l^tFjD ȼ͌44w}[[Dѡ `}ε{~ߟY%(B]gH]bnU[[1<8_/x4i;S2o G/m殚F rG0I۔5ޚV7fӃP9R!x` `$fjWtV䌉PěqVG,NH{}o,QJ9:?'ܳ*aoq$ Y"V^c=9@&V$'M0sӢpA?<sss'OG$ds5Q /*ӧ'ɕWz;ݽ$4;\`vE17? RPu BO=KqeEMϟA?׷G$ʡ!=*B%XjEB5.Edp5*Nw*I,Cdv`U(|}j8&r^Q{'pF:5I'jaq@ H(AUOsswgny0/^>u=wJ[\-mɒ(#ݱۼwpZ 㲮8JE8v[N)!RNwq) Z_!xz衇ҳi$d2~z$ Vs8N!ߒ6qbeeų췓l4-h >Tdu%!vLz).KT 0! húi^ ،cy]]{!8Ԗ ̶ZxjBTUYW%JnNƆ$[B' *EXQNPQ&1iSmQJM*7+fUY(R 40(|扁;K7f W6q5 ˪֑:8'.C[q%Ǟ_?{[ˡ_׭$oŅ@AP) c]y>ucvXVeR:LEiUm"J>*Lm뺮w9o*k'Yd urV\|ekkkks3IҲ\KӬcǏGItN "dha~![.r:8 Ki+W(a!iڞN7{O-^A@Ar{-#WUy2^WԇQ'WV0&BdEܫW7+pP#~'yԛ Hmh‚KHG#vbg:UF&% V6z<\zqrt{q3uNoN|N[kge {M~}0;?F^[hEf&1gfDB 92i n4+g Ai@"r;ɬ8;j-Nv2 DJSVJɓ2ǁҜu[_꧿X>7pqDA$i1 %(I$IEH ue;{ϴ?wƍ]gŕ\QutZ%w; :Ir=ֻhZU33(mfUmt8LeeFk$Kju{\ؾvm|ʖi}(Goq(-p(AG(vΊAޮ]V^g օIO=-a|镫Nlq}u}/tvIlYN4rM¼9#"w;dᐼ9 wBRp{QXCl"啵L較qh8tZY {p(jݻ/]5w&>ȩk$24\ Qf+@L]fp5b," EQ61A΁ v끔c[I%I)"*`8<+g-q4"($*1IEJ!(0dMD1*DQ9-FTiYTi3b@j̇{^^j+B? >l -xx$Hp|fM$$O]x՝˗$j 7lU߼3/-:>rqg5R1`75ПYDT3زI S W rh%LJ2Z[bBV++gX4Us_͂[q824b!EĆ`(H^vld%MRB(N`kI`<,-QxYyFyBEV|?N{}WGz<`xC8Ҵ N+PLb Up&rZ5V|Kyÿ!FkY'F}݇ !R5i ³)zXe'=g@l,OJw I?^P<{Bb9NH4Y0!&RB730) t\sDH@@eTغ`Z/o &>O=%tE$, o|ãjz8D C@Cp>"e=9؆(q0ǜe鼏V+K"y߳淦׆iY~U C!w"Ūnl#04 yi@D@S8)#h]m DHvo0vwJe_V9q{1 'ýF:#!@`@$ ֬f@ a̳$9U2.15Z@*+ ڱx[(E G;PSxxt39O@H#B',3"ϳYU KlE!p`ZLլҟ/>sS&iDX,H"Da^bP@Ͳ,Mo !505}Dȍ`q1Qɽ1, KN&Mʮ(ԬZQn [y[7W֎_r0o8`0 DacQ촊묕TXk )=J⤪J\$v'2("D8(5"Zkgekwq~.P1 3m:x0Hy\!X׎AQJX) v3 BxPՅGHZ9D8m-T#[% G5 JP<7 $BR %1#azmtd Fq '^} ﴵRJsx:5kQ!")%"J!Kow+"*K:6㸨 d2 %hsWYYiK4-JEF( #" ic oy:)w ( bGRD{ nLT)"q`8 sklQ# cDB¹=3"%T,Ѵ.!@j1"J +R3V%_*0_YY[ptf?!A$Db,NP+DDR49fՋ/_HIҵQJS lTr`"B$ "lS uGOX'=38f$Xt{hj"iq'@}\hJJC }İhjR07G O UO~=VRa ZX)07nD@!j:z͸@HN;N"0d:QYnwwwZvi^o0oˊY@@R |56@Z5 f&DjN[B/(uR!V7IV]^(+k^i-1RrD3{1V\*o揟;w^)j%9DJlf!:HGq,'^jSWy>2LZprɥŅݽDrhN `S=NJ,¹*g*_[58aj(Aaa&H*IXQ8H!5phrKK?05Qh;vh4HUeMDMshb$uNQv'UYV6/\:IwZ{HEu YHaFms6QX$C*1q77+(Ai7 Q$T$> 2?eIxj~GvtSx{_[^nb@BN]PPIab(N#U9_V— "0h(m'14:+v݈6Q_)5/ܝ(>ig:D!t*sĖ 뛳iQ:,XCD` qP%Z)><6=U6,4 f'Fwu4&(x,g&LlRqev ):{=W^vSٴngyH4w$UU ƸH—030, yӺْ݉ ۼYlS8/փ @qR:b wfi"|$:{xR},AbgNg?jb$! Ⱦ_>x/ēW1Mą5؏rVzlypJ@+0C(XRXT‰rLl'R[s5u,D$ "%idD8MAFVG:0Q`  )@FM>1| PeQD؇8߼q=xx6\c[{/\Ge%yoEkNHdL"MD$"JHS @<+LL:I65av9ZD:+^ j1'1o5v luw{t?O<Ͼр 8X<* <hm 1sb?Er1GFEQtԉraWsx-JBCJ8Hd{bC S PqL:lcAi +U)u}x)4[EbfB"ƘKbh =Xʲ9k(9Ͳ^xa󮴵瞿|z03k6@Eֆ,uU{kFbu'TLfs N5U Mi2?v+FwCos?kN?},oMirg )u? uO_?SMA]k+K²?:NWTu qf!I#;9a4:d-"0sCRbi9H`6ƐŽ$Ifh]V&k~ u>sۿwN}]:f)E>/s_oheyZ$E)hmj#x!ZȤE|B=NџO+_W_|բ(6)DӲY+BH0xpV}΍fɵI5  (h~#pUB(Z|aok/^ @ԔsYצDI$u dL.f3" r/.u=ཷ)QA)\ Qeq{fmkT4--qݬSZRWZFV֢(APYksAfe$"?`Н9>s/UQWXuEDKy 7.Hqr0OJNfAnD)hcat;RdX!C=)'e54xg?t+W/+ln guGUU( $@!Xv;zVmG4"9"S8phL(R,Mu^$w <:OH 7!u  -..s>Jbfv!bI h6"(n(*chV;N_L(cl08;mrÏźH8 N9[dZ0Q́cP|6&|͛7L3Ni$ "cLq/,,Q]t~~>s\GWWWkmQ'DQ/^tiooO)$梔viiرcDj*b]׋y~饗կ9?.] ?bi(2Qd8lk\})jڻT  B"~"HQ+"tsʨֽI&% \j}Z)C{JV(2VdY5%u5s{8gY4 !L#^kfBØXkռA)V|}AQ-//wݕ4M.;"i0$ >js ul dƍKxsWLF$DH#QͳՂ Ƙ:B:TDO-L.8|sv*;-p ҜltTxc塽 EZ)l(㹹^7(*ɟ8β3l 4Ͳ$5sh(@ F-(aֺk!,\2r]"2͢^ETk;|_S# iCR*7@ذב!_a!"R"Ő"`J 1PZ3[ߒ}ŵyZ &J@iܣ;ܙ[`Iz(N)jUU5H_ #FxiE$I!c1&I:Ns~ROf.GQBv"߀̀k׮t:=88:w\ۍXDBv iPQ0Y<ݿyo=T1i_Ō DDF!"B *P$Z$DfN5 $F@e %Fhbi[~)YXcփ{  0 4K/eYWMdmXY;D4ή\҈Б5Ֆd2iZYu0 !E $I{FI6RM7NL#UDFQs C\!l|w?v 3Zqt/~w'8 ىW!cZ("0H)ȤQ%(eU$f/"#R[8D Q@ RYDu?MY^aLKJcǎu7q~~DH!p8lۑzo;RT1}G`0@$???8l9@VxMdT:_7m/8B"&"liG: &R iD muՉQFA  V1(&$A DQHhH_]UK/j"ƽ677]^Eӹ{|Ax=LkD,{ I$Il?Ki~}1:N@ @^Xtd gFGfQm(JNsRmmLI,*iPbEv w[qJ$%iĉCJ!^#wS>+ani#,..={v6E/M?L8\xDZ1@kkk6}sFwuW]׻`aaa{{Zx]w5|,W^yZkQEQ4sѿoTUU뮧~ _[tCO~ǎou[|<ȗ7[<'?MdG](2i)Yih eT0!E-*AhR5 Q11 (|5SMwuCV#!A1 |#?|)<x ^Yhccc}}=LKHk3.]TƱc(.t:7o|'Ol?pe"rppPs[1n7N5oC"&I{y衇rN>|~7>Bт?&B̿"me YJ)ű1qڝ9kb*Q !Eh@eRddD"iS.N `$VbH#کUJBSH (mBB4 O<#<(< >l/~7c~Ǐfsssw&Dnvs24/â(\RE ŕvvv|4y'NHիM&=Ny晵ӧOׯ_w_WEش4uCw޻s v#7!I(2J)=)ob>p‹i#HulFdD:JĠJӍw7+ A!DIF I) i B-^@CTMp! PH:sԀHYM8a `#}}G}?\z?_/?{3;; z^я~[3Իk`kk-z.|#OF&GqZVf"#Y'@(5Qd"BLQ)%DZLAB E`D11 A\6KMX`7vtZǐkIbv5@h1!L@7r"  jb˨ed= wn~5?~Jj? < )O3-"ߏPpx"j>xz3g$!;v>bS)wfXUîF+ }Clv,ҧG?Oi6Rغ& ]|#bc$pD+(If@4Q9N"T%#ؘBpDb2*vޑDu헐%Q+ҡR%@p㎘xf"iC@ lZ24(0 МyO>r>&_>.;}6_|}d?QYУ;Ņ>"/_>sL{{{MK^}$IΜ9k&ɩS'>7n80鑓'~9;5 }+O[IUJofUU?3?dɤOJdgggggĉ֭[٬ݮɆoݺꫯ^reuuuuu{~p{筵UU5;9j!ozjE)2DQeYCxؠ?(G"_tO{?:"("0 hԆHkǨJc2F$efh-E궙aL}i9J` :AJQj8F@ h [HQШ=p\G{5^ңo>zʃ sn=~g~;j6"6!ﭯ[kRx̙~?,iT ?)M^nr8fo.iv+\ϟ~O>$t2ǿ3 8 Z~xHD&JAa82LMdp+ Q\IA؃d1b2vm<DU:a"fARdvw M[!j&@bCe;D! yC<ټ]ǿN~|/|{-q-ۖ?P㍍v=L~XU'X^^K.=t: 3gD6M$n3K$KKKu]_zu}}vs,iau!}c/wJ ivEThd@2f8,kgV&y=2Řd6ZJurE2VTJXjQ҉>}FJEJbTLY f!rJ2 P@3*cVDKBE``fSXZZH[}7>WpO>]C޽d>deYT!`x[&^sd{{ŋ=K/6}}~Eэ7nv}رӧOOv:l=iuZ \#?Om/0o'6m:iwAύ6_%{a#:Z| m:˲ۻѨ q?Maٿ\S/SJu:`WN8fiiIk= \Bcɤ DS e'G~G?kW?ǾGC@F5_>E9h)W͝kgb>YK{UY]i',kod\V[麟t4q"2UYW?w_i' ϦyVgixqߟo[}'ZW;@,n\q''͌QN$2N lcX> |Y݅ `<6rhhr*ߺ5BFZVVS'ywbzCn?l)^@J PS@@LAG&lm?^Isc& Ep`'LȾq=phWe!y-gNMMi+wu׽khfi,KLqƺnE}}}RiffZ.glOrfG7ōAx1$Ik=<訿fZ_Hnyptdj_{6"\i`k Gc@FidƠQ_Əz5ڪOkl[֩\?_ }Wmܴ}Goh\?L'ȑ׍lرjM V=+__A^P(۷lsiEavb$eYQM|X&)Z SJ=%alsq˲|7礘Inp'hȓ= E5 , yZӍ&cuə&FH ŲbާS&ijlU$\+teY{2=^]m K5SXT;2( BX%`-O\u[* ҜR9W{op=OF̓pߩ:z'R{O}a=QTs/n#.6ƌwZ/I#c4#458q' $Iz^$AAP,R绮k^6.lLmf֘|0Z_vB-o ˲,+#&+`2s}!if1?v70m{^!X&VZl3˲{v !x J)1!xȵ1gXkB%5"~vB¶,cR(T0R.0!^e5ʷn'I$Q5zo>~'p}dunz;ɩ4B\.sTy[~߼wzɁ4kB kxY(`JB--yOrЏOOեGNu[96Y7R?W`k>/jEǏiZT` ]vy睿A8c([}1wXivmkNlU+EqEcoxӮ]Wd JkIii*!S?/Q3,M58XZXP\8ԟ#pqb-ŕn~.=x\1liȖRQMv7-zڑv~w~E3ScG]R"7mP*Pc8{͖[rHy. ͯ ^n-MW[[dͪU&dQj=#i$&c|bs(R&I@gRBt]X333V˜'FS wlaXMI֭[Bk$qPp !$%Xb,YpoFQO) ZiYƤTa&>^_nbx?|nnn``nkYTkBbbI\LKJ&IiBZ+48rd1 ))aEWZ ͥ+f(\6ӔH/?|iYfc˳a=2b&ߵa{o '_!'S7 Ţ%ҀWjwN(/ݦMl\)WO__cGݿ}JTYipO}ꚩL=99m__!tCi5fC5sF4M6rsiJ%#Gz4MMͤL\.-wئ,۶t Z+ )\lM۷"$5cL)i fe}QBiہ!m98ssR9"!d>=hvIH)R*PqBGwu\q-(Rc'w$IT!E1šnȕy~/p!=)UQ=9ww?rQOT+j\ydK{p5v τ1"@)劅Tj۶#߽X[6k ȵVwb曓:|Uڽa99}[o]v؏|$^jKj? Kst7mjNcS(tZRj˖-a>K/o6AnСCBAk(l[R۶KjbJ)~Qb4G_Ʋez;E> !&-+ҬnvRqan;%7l ZK!I:ه#IJ0nZSB*˲@k!$FPԧn$RPFǎ*& !{x䪼w囿3@hR|pߑvk՟}?Qϟ||nt`e՘VF,G8g"Rk5cwv}[nO7渤͹)+_am;Z~Sx;_xkW]rS7_5~@fXm~yCs&.Iv(*0|6Wuަ?q#?|G~EeBZI 022rɌ믻n~a~x_O3{՗2~NuOXxB Oxphk뺥{~+7 V}0G5f R%~7cSÜeiG533l6(Rj55J沜[o}seO< j |t"cῙCI-vUJib@,?u\7 =v333^zXi?00oӃGKzr,ccbԤB}P]J)8z{]eE״K0 AmQcnw2LvФJV4gf>ѿB~aaQ$d&Xc%iJ(+;,>9ӬRPB*mSnƳk{ҩ(9.cq2.?cofٺnپa}'^֛/ݶ3lL&Zpr(ƮફڰiU\{~oϧ:zceCmdžMW8ul:㯹ۯ=T+n}zm?gZG##7lXYC4MS0Cb3F1 }BH׻;N|H*K@ iL^pqP.^ӎܼI |ծ]J %|{wY~dzrZJ 𫮻a?*4fB(϶A+Ki1)o|u}M_+R.Do?l]?P*[gvn|b'7_׿-K߲nh5>)킽PM7}C?UbCeߪou|k|f40Ziܵ0sU}ڋ o.w x˿'^XXX񽞕`]7{4;2\59ㅅ=[577Obͦ$MS#eDiFQdX ѵk}bdނ }?|3L1F+%0B@6 s&()0s17,j-`鈣eYEsN344T,[RfH)R5kTB RE,krb.kV& iT+[ϵEn\tRCgo[ůyMkNG֌];|lJkO/uC%7n勻F[_KAɯn{ˆCj.ǎ]KjNgݻwqB׽1E_۱S]/=+TIZ?Z-ucMdެjG;k'ln]*mL9Rq/;Fcǎ?S)eZݾ}ÇltE471Pv\/rpJsΝ;w~ȶmV^CDW$1[Zk&BpR3 'Iz 2F-4B}}i6夏rvvvxhHEAZk%(صB<ůP#`@k-41?pfe`Ɲ[/KsuyUKMC}o\^c{ч E[hvFVB# s\{ip[~}Gf>4x*xw>%oߺquY*]wyw#\yccc׽UԢw}ۭlX0pX_sw}W7߶MoU꩙5/߀;uH-=B>5˹0c nذc?>77W7ykWZw\.gl( &Ib4M0ƭVkbbbrrlذX,Vz133Eq2,:$ю186]lہ.ǁ@Iq@+hQ 3u!k~}~ R8`we:{ec_3-.~;?gȯWoʻ.$֗^kݫ[o\tg0To"chÅWʶ/-p.ꪫ>Oڶ}%LOOQ2 ]t:BVexԥR)MSkΝ<\./u]!i`j>!ԬaۓOWJeSj=4(Ͳjb $M+t:s$XWkHm۶m;<B .@+ʱ]b᱓fg'0$ vl[n`~Lr4xF*zrV-T47v\#7S,+g5]jo?яO -W@~ R+Jzh%Nv eRZ΁oSԻ__+ox \.3΢8FJJu'zq;ѣ^=zq>0>loW*Rl',2($t9d4w_:*yX뮻nO|BJŹrz+2$vOz=J΃ }󼾾۶͛7LSC" ZJ{7qǝw؎e 4(+w&g yqSo@FϷ;ِ]P®]ES0u°]dYt}n6J(J(BZh-teݩU^nV WSo{i i@#8g#)1}jQS!OY@IMۮ?{Kվ{;_:aC4֘%&'FWPJ;Ziݪ= v^qktz?p*CLdi&i,?#R0ij>{]?Ntݍ]q{g?y} ]Crsڞ>E߷9-'^SY:u ^0WtkFӛ=<3ek51>y˖D`,ogO1mֆI133g2,Φij:U*uֽu]~7Tٱ1ӏcfffjjkoܸjMt5 {K˲;l~w [e$cf|E,%⿋˵A/Bq41C_Dvmt9uHoD, Cʘj. ӻyYDzmW^mKhl|.Knli՜aܷeC?x[fuDh"YmdjզM[V+ʲtpؙǿ?~˟܁ƻxp|hs-,3QT+y'NRK˦ܰ`4M:K2+]{ra΋_+0'TZ&io)\ J.rxlA|3뮼 68IbBPR.,ˌ蹱MlloĢZ(6o޼z{lffF)LajM Bv #2kζa1#vV H)<\t9v]Qzl)v׌TM%YEv).Y)-O'F{`͛wl^7'x/UV?=Ls'cL0&PGm6?4g3kF7&ѾRz3tkg,N}w^qЎ[\=2T'ih<^[РNA_# #l"נ+?g}z,C%AB^BQگږ-[֮]{B!Ljif~LeYܜ nRiz 7B|ASwod\םFMLLJ\r9PJQJs!<8iB$MOM,,!BJkxOc;+eO{Rl۶bAJvͩa;l{<\Gix~rd,[n|SSk׍V,8c9߹o[Z|L\"[ɟy?~SzR^GRx7(G8%($H%ݻg+02{Nl,"(!9ًȮy:׉;/c˖-0=pqJqtt.вoX2n?lv;SX_S _/~^]*H!ZI_*V- 4_GǮx{ eOH,̲gI'<#Mv:Oso}Ѓ;h`-Q/G?Hm/pw&> K"s]ω(˲)亭sɻ(u6LPGÇ߫9}|ϙ9(:W\'p獆5k[ۦl&2QeY$-˪jF3R>HFj=QZqJi&G {?q۶mvT-3_)4tf~l:ZcBb8H+&xPzn٤-lx B_(MOt,2;Xa ٶf͚yN?ED3ņat6mK{BKnzӛtwGQd_ey]w@N6|zz!ik!:FgeJuR贗^"H544TVʥ`fz>FĶ ۲o/(ZJ$MxJ.FZJ#I%",Il-oHd{=ޣ൯7J?ȱRD4ifַ]Rw?Q.nyEK#U bB4z[T[)-%5 ZG{1-[(zUcοg/ٮx+Sm>yl~W\=,/@9ڗӂK| 2cLMMRq0Ơ7kDyM qE&cT'BC=cGJfaÆ{K Gc9o}&n J 3VFC+ ,)!(u;kĪ-ޯY' <lZc fW8M-Jg+Qjw<_+5w ;x֌ j;m,A!شnzQb a׫`^]nC^Ө7,NG˘}O7bW\iC_骛/lO7־爈Jy'>HAk6_庤8`Ř , H~ճsajvpvfV):NժsSb;ƣr|П/ozh=޾}>#4OOJrzI.lT__Q14M1uyk֬1v裏[.=3o6.uT*JV9^XXm[kWoMDJzhxXS PBVŀ0 jvۖZm'BH,oh \=/RgFm#$'Zk۞)#4(K:TYGGK+AhjS]ψI)1@PDX4n4Hj)}+jV򕾡OYa$ %"YcI%Z0,?Ґg!u\ˋ4Yܛ?✺mK !Ӥn;E%뮽FfmpRHk$hXK؁u@aX N:q~|?| 87RZZݷ^_?@[Lz"ƒYL|.yç{&c(@FXN!dtR 3ʐ!NGQjNheq9k2ZuyjXFE%|U^4qmڶ_@5u'.aMUY*f\M+lsFZ(b\JIC=ʶ0"jRLRC:D_0<pɷRoMO׻zj.ՔzS3֭_~ᾯ^s'՛[؏1ę2"a,Y>dRt3BFf/ C`]e#i()?v)1ބwK1cFTRٺ@wGF`;`ZbAY e z꺛:~-qph=R׫Qd D@,Oc!SX\ n cY[8o}F(TjaPT*|4rk>FU¬FB`+e9mQJ-#;[-tPʲ;9m7_ifp+ l!la!-D+KdC,,QƞB[JJ- IrIU @Srž^|y1(P)r?)VXtB&|Ǐ8Ts:fwQ~zNscnK)1kD?[ rZ͘I40U[a"\2}V5TBlРH 3`2R(M@ktfL՜ [w li;Ӹ>gLEX Pi>v癙l2 (L-P`Q )m`JrBٶe gqPO{=!ie9$4Iij*UM.[q%b|e1FE?,?Y0""+B ?dҺknϯ~ݞb{栜J\Z Z3I1v };v0sS;_ɰ|ӟfjL(Ӽʄ8deh__ֺ뙣u]gP$֦rjjjnn{7m,,,EY x8)@JP @ <|Mo⮯m(N%Rtv8BBHOڹZ<3o#I}ceBm[IazԒҷ( ۂ@`2/1¸W@!ZkLHu\ D& C A QcȒv>]PY0H4|Y/n,X`V4 aT( Z3Ҡo%Wy[Cl!mȪ'/odoвM6Vع@\iAOc,[#1f1]Lc9\,M fcŢiǴ;cY)68~n+m[rTtˇE <5#gǖۇ8E9m4]6,B`Jk\*nN7qd($CmYYР:}M+X՝ +k)$%_$a<[W5J+ HuԱϻ-M) [[G,PVZdآV=(C7Əmo; #,B`-jZ`A{^Һ%^4FG40 \6~4XF0bUƣ]^xf7khl-^Y̵>ڂSL.UOcJ $+3$ϓ\ o!A1 FO?2[n6Jy($S6V2#Ҏ2ֶ0$U$M 뻈j_kGRJQ^1bU~!Gfa3nEض_<:Q;_.YnAJH4hPIc>˘8׵!L My|BG'0́Yg4t7=#5MF:+V_5;ο}Ytو+)OiE^iO5kƒr?Cy0)@1gSa}3$Mrͤξo<x221Θ;`!lvncH#f"+*p%(Sc DOy焒2GX5N$ϺW)%+}~'2Dqr= `6z$/ 4S4A&.l]f]z׷1/8#OgN;$IL6wYH]X>.B)n&4,eRgH$] 5QWsxW7qs?Sg," D!IuFeF ),tS?cͩFV.mX$J̟L:#:I0"M^h$RͬѡRZ"Q(/tʳTҔ8na1 t.(JhZV :?7w?=p|&,˛y$2,Ęe"2Q3L5scm~_^ A#]>++E PE(FD#VKeaJl#Dp'N#Z+E-tP@b(L v1`MlYYXm@fݭ{y'_0,uPLvQeu\.&+ ԩPZY$8@$k7np!8MGNml!$5Z&S8cG8cfNL-?>znt Ů Ps a9QLˉ&牃qvj^T}WfX3WҲ]Q"ͤHbeѲfbc8d)`S ) +.TXT)`}19HjCR|: n5B#g9UoxK: Մ; ?ɲf.=e F]`NPke j )"T"]J$NqhUad&IjGMZnƎCB9dD(nar ( 4S9!'Xy' SעڡL*i9:"Zj(!+!8NO/OAk-Gl4a,/똹na.pVHm?_r+ứ|R+k噁ᙸmRPʲh+6.W+.3]):OsB+PǦ %XVӁeY,\rdlҖ,,RD&Hr$hBKcO[eV?dGB{ ͘XS;x7IXminOʹ**\dnX˛n}KXy͛UA'q}A&>?&#S !1?X~ë:N۷]G?y[Q#WG~ufd.YL'VC?/1t7餓eh̀ONELybDSs{cYe:v0L7_;پm= rGﱽRJ#ڄegg-xA%y{f۵> ?m=6/mq=%W2mGHTDPozEWmt|.AZGo-ۦZS=붺I4зuڵݔC_̩Սhv~M IK$xQ'e ff;M˖S||OQCnnpvrm՟xb?ce/jmK= zTAA20J76ZپnFDw:]$l˱)H[V( #C_SM/]*“H 0@K[_xMSIsXT׬{>3uFFLMŝk%qty7^3깞 Ox/}k{KG }v7NWJt'=ݎy*A 2]M=2B4KH}lh6V\ƝZk<6m)" 0jZ'ҋjO?WcWw]۞]xULҚ{?K WN-k\܋gHq/aD#p6:/E^k-Eo?X΋%vj"urպv>|tc3TU*/vQDl xU)m˃ 8EVoLNK1RJHu9&RnHH z}o-'ƾbƝ<^ܙ͕ݐ =qر7G96Z#B@#zRj)"j{ЕN0x2ӳ k?)^RRwk} gzy/ Tp՛>*Ņ4znVqݕ|l\d[sz@E|No)w~hg:abyKO D%2ˆũ!lǨ; )cUZq۱# 8<\s[ _8ttC詻?Vii@ػz@+hDȶW8%0qCƫZJfY gBiƬ Ap$ؠ4 srW d4rf~UJu[ Ti3㾟)VBa9YF60 c'~ëxɦRFB2ZJ))mB`LlZ=U8f2tbҰ5?YE9uMǩm?u׮e%w}Sgl>xSZyZ籯ZarH>\H=+Za\-;^{d~f'eȣCVTk|gp`#Cc`(Ε= [2䙗" A~ndk^o{/߿gҶ|q8F,ʲT48sr4;m&eHv)̉X^p~ŹJ/ϿpYAşGBFqg=Yʏ4gՠ z;GwŪ{ҳ 6ژ/TGNu~$*oߒfP,+ aڴsr`d JA>k–CBbEɺUqcc0 I6,J- HaT5:\J?qN:(`}3`lx拻>dzP ^&~ڣDw}IOH0M[V߯sOLܗt,Չp^ mY=+8>Y/RFv$IBx v.# xRaiA\N:a| .~Aɣݫ=6v#9AXcMv&9 ZAݎxHjmUf8na-;C:>9,-[n7T%:5:B?O '~)%DSF$I29E_`?֦u7YkKK74UNp{9I60`LS cIy[+_*TQ[uo8thZmg€n͟n7uD+t;7ڥu{^qr%{9/J.؊z_ 4X>k.,8gjE8!Y.iIؽ0労{uȷ_gQcK+ƙ4{%\~a S`s%-JTj!)s;k9̼cC&4.A_U*m[27'{vxT/ZV2@>Z`R >xگסD+ \˟s&B"h%SQp#'E*۷_ V7fkqq0rE)4q8<_IZ%ieiDd DCe!1:hYvU6Su&f3 6mXGM&Bq?v <,ւ VJH Xάրf@OSEis}j"RpkO]]#BWs/?WLh #BW "}]2ײ;)`r 8{I[0B֍|ztKԈw 5SRs-@!{)^X;-N2ĔP/riTAΟ7g3Ce/rz805>fdCPoOOz-F+0BZdݟ<UL*WkD, B5o#AXyj6)qm,;~d+ôoH0rEZ957{WZY agNl:BZpUͷ &ܚJ~jO)::^{::=4+ڶv>l 5r<0W <1fY+ndk=m5RR*.kˀ ,(Pj%i*e)%TiE DzI/縬|~=sG*n&(uق§ݍ8_EžvZ Y|-,U  Ԁ0- 5 9ipS 4HlH"R+-'^+ų$#׳mγ..n i[HPWE^'Ymuۘu#봂XP-v(V;aP9.qSΫŎH Xi4 Z+-!x|Zy݀4f7oX53Bg>k-*lxws9sP/ ?,{B>MU`CgEad1Ő[E@L-k/hMnܴ*VS+w޸k:eMcS L_9S ﺮq0 L 9SY=QH5k$B'j>(mWT{)0<0[<Wu,\vrnuj)Ic-Kuʒ,dA'NS=6tw˿LmHsxsIJщk Z)D 4.Ьwz1-,ܱ.vUW]j}z+e])03s<+x|)A^t㳌u|3=r@婢[&RLjmQ-3COHePu>m{^3K1rΕF^hcY&[ tbm'N=*A!kqoo]!7^XNbj{BHApcO.+ eJC+]|՗]SyYГ_mK⭵[%.ưyQZaR#+kIr^{S=Փ'7 E[Yٺ=TPrWlcX7fm6&0MPʑ$Y9Һy||pSIϟS Ǣ~z0ΗaHHʲ ΛB(a~ oo7B_vt]*՜5%VnpIEj\~Ù7ϕԋgP!E4aʧJV|37o^(~Knn [705vEcOYOC&;;99+sijhn5O"sT\iZJvecq8cYhL|c+ڱ ay$)gB)%3^s @mb-uܾiZ:ֺ%;Iʘ½ѡZX OQO 3xay/?@ U(c际ey\j uTC:8~WknML QǬ71[c9Yo7jז 0JJ c۶mAA {I619qTOH.('|wN l$*C7\+M~P%9' jz&"ޒvg <ao_*E#2jxfzP'l)b͇i}KyHl:V1:×tM 51Ynʥm Rsz!"W7 -t 멤*YS^|/o+*n+ XZQO{vٌG.O"K==]2z/ ږSQUX '3j$M1 IDKYv. ɗeYq@(cX +L-6v\NF#x7i{/wB)>v0a!&Icġ|Wyrů<<{ HF/h5)ng{R8a.6R>X )MBH֮{\ ׼VR}.k̷c^ULg' K= uOLiۙK2n[n%'.4ZYk*v:OOm@$ hM^c1ݴӆe< \4M]R2LOUloVrrN 8q mH- slUa ,'|8=l=홎>Ro겵2k4#!!NUoߩyBeP@`6hD4Aq,`E1J酹h@wS_K[5m9B-P-xq9aN<_agx#?L4ɂ40 3cb酑ӳ@#B'-t_}vْ,4 ~p/G KL+o`=p>vbb[7:óU pug7$57Az^7Gs|$:_=_B!D3L^F^m%<᧶!,Frʥ'g&dֳ\#096ͳSamRdkOMN=ScڠܜihQnXBbl:o 1n$&)FAH[e0`)4Fj7D&c+BQ*3PX+Uފ^΋s <13眠Mxu Tlpcc_";y{夽nv7ZGT k!<_ZL|Gz3spy@A);Wo9 )%t7CRb GxJ RrKoj5{fk dsz}ϻ]WL`ˎtD"8yaQ .y$u(dyIi)\ئk{wddYq7U_I%aR $I9aVyS:N$J)p]_(Tж%:́UtG6^~cKx6l* ^ޠ>M\JT+4> NmJz7vT.Gvg\G)jk ][rBn}UC}yu^rWiv&[\F(21XV+T,]$I!d\ގ[Zi6_|/oXZ ]Yb|NZc^ph}"];aَ6lyӒ,cY&i)MI$/ :"we(zKꭓĵȑ(mh;6*RD=qR+xyc^zlLCS¨$oS#kR+vsCnf#dz! M ?5Ҧ &u]B:PFOq.eF4#͕SNr3+?fg2%#e9Cf }ޟ` EٺmF|:ةGǎ*T#yrmm%W|5W=vxgaKi3M>v!m|y^BHib E-B)FH\xh`ԏz .75ih>Gl¹tN 蕚@^ϫa^K@k/BAݰM=)ڵvn>qp|mׇ UJP;Spth WQ+}p*T,PXi=8A1@RmnH,+N㾾n/q+̤%]7Nq:\1a]%Hf[D{&LMVHr |7tgEKkV+ %Hq^ѕg R8U؛kهFnA.iZ\[~wsKH5LVRba A6}kq-3jzѯ5I (?U7lb2HKA.뼲^; s,3 zH@D,oN7:1 Ce.i{tߠuHxM۴e)x‚I|!w|Dzru)!RJߓ4MĶ(pb$}bz+2Z M3R;9\xSq:W >8t.A A5Š9;96ԻL#娕sr916YQȘpyWR9_/rlaPgTc V:B,cBH!s ˶SA8%VZȁCq-ZlbQ9@?<Ә sQgUӁrSG h~ Bu[xUڷdO^HA 9ꄱr)@$hzRIu`QDq96Obq7>;U*U0C4酡cZ(wlR聅$ 4\!W2mRl/` Z!7g G938Wbv:9Ck(U}mpk#g|9[ozW<*TȖ xM-d;RI#)ȸsB0CH\LX:\τq+an L^XVURr)v |@-^ؓ[󕒗p2,PAfYb\>r%WFmUMW6 ynM\zlSZYr `! q Z{j`p)QD2Q%E/ȻvFN-Z,,e0DО[T ZeN A].P'!:WpP%i.`ZD2&)@HjevߦbfXtmz\cD &qzZk|iFLpBQ g)0Y(in8Ҥ'J=e(8|` ـijl;;r( :]^'Jej8sv- .Z\SRs8K+D)B1K3G۪,Bv (mur?rRmEyڶrJsùWo*%Pdzl/M4Gq) "GdLPxQUA]l+ U`h sqq@ vyV_IB:qGZVS$IvJvǢDQrV rqʅJIBh+n!?)r̥R+xyeBƳ5]eL` mZ۶}KZ3z>ˊ[Fׄs~ԩ!u B8a,Bh@RH5cK^9y|'c \5\Z . s)%ZkGG +_4k@n877ljػz !P.˶mG̟K4B$ gLkR:d7J۽i*4`u E8Nfgg$1%!^ GE1deL(IRJITd)<% !b@"Zsβ,Ck)qɹd\0zr4hp<RYibfygdDJŶq]$sSSqxW Ow.Ra\XLj,oF4GQBJk n )e%B4qeYI,4Blv`xnq9!M-$(Rz] = !}v.pkR))a&/=iVfΌ #JH)YƄ,˸B*)*c7:! rV^Bbq Y!dR{xڷe4(UJp10IHRrZ*ŘP ee+!dVV>i ,uŐbIGҜ䳜AsM#8&ߪwrg J_wiPY)Ϊ5)z1N3@JitZ cI)FTJi^g# s9gIq2 RI`R JȥD!!0B!ܓ϶Q#C+787Bsy`8w~<#VnjSw׀b̓9RZ.jBΕRY M3cL(R`RI)̄…0!A֋6~yV@gv/^w/2mb/\0RZ)3F9cZ+)e7gR眧iSZC_i%bLd\Čˮ>{snz˹r@U @@R$DIDYf؝fg=3^k<{lڶnْ-+Pfȡ ʹn:aB*`Jn-}}o,3;p0[)”cAOpE ./c忤v3C,%XA*B(  N6Y[e.i-\u( Ȳ,2 ( k-eɈ+݉YyylKI޵Yo !gg4޶mKٵ @,' )9!8 *롯>koٕYs%JjO`s3868ksC@BB "*;h$@DHu{ܺ(;xl5iLS:sj]k;@ BD2*|&P  2mݬSofG$&D@I ֖R$HP l'w_n޽#ēO=;w0=EQx]4 nsRyAT 壷[dkʎ/@ńR4M1e%LyL J̠=ЅeD0y^8.Y)5T*!3 ?R:av̞ $&@`0 čE8o^s Iz3}zcBB%ovWo@m1&g_ѱ< >r/> bǍJx=w4VJ:fhzaY[ּ>p (嚯$|0x0t:</cB'kScBufw`17v'0 뇺`xh8 42OMM~ӟ?, K17i[\H)ʺH{um,B( WC|pe.v~?iV*8(7MD 0ѺЦp4ڕ+R6 8`!Md3+i>f""q$LxnzvsgfdQu `b\?8+mfnjZ}'[F]PV< {﷾0 /ZejOBoa nߦ޲)rm!A˚,jVZQmRIfQj~IO̤β9KDBn !v1S*˲=w?/ϯ7,Mo4?}OJ(j]w6HvOM>P%8v ;GDF쪦MA4(<^zOq)_.˲4͒d$$EYi3;d?9wi^ ` [Z,C߻{nѡ(w~@ 8(]N_r+ާy3AHz`|Wvڥt|kژ(IHW^=z'N2SRk(`'LR1s%;nIs,km֫HkI+˗4W4;@dT1{g<ˬ_OOǞxlZ#J$`vJ4<<;D{.+Nzβ,۷QfYv_fs]/:To_~"'&G_yXY_=sijl:}äu*$)٥Vc ֒@8$I)1fe8uv. in*ʔEkml'G+_I_EYk%{r3Mhv謳j~r$B >k 9E7O}wH5R[1땳K+czWՑ#G^9|x򒔊 1/Ky\Ö4'Wkה^ KMR'Djh6ng}u- 0W伸z܅.//nl$inCV~ u;x¡5`c@mZ :w\ Z/rڻv=Rvz/ϕʠy/^s>{Tć&j:75WrzD*Cr03&Tut<+ B pc}}rb ˯g+=wc9V "jJ*t&-ܘjT׆y4kf1Z xJt}Y*9t=phbtKdN[_-@?0?DG:*Qw_ec?٠wťWX`o%fbϞ=gNM- *?H7焖Fy^`8(E. k4zW:j3r&zrщa=; 23% &&[ YD<$c?}wܚ"7F;Yg3֡Μ?WVKЛ]<͹;k(NQ  u!+xoF>!i s@!Dzy>@Yg~ŗ_cOZkڗ__\AD(m><2(b̠j// +r#ﺛgꕔ52HdڔR?eP0 kz^RcgNk[םC#kMZ<ʳZ .eY֚o?֙ @J$I5a@)Zj<ԥ8#Z?5.^Ak~Lߺ1!|U'k߸U"<Ըa?|F]w"DXo]ι( {C/EQ|1GNGnZMJe׮]O>R;FZնAT{?v (`v=g62[k]fD$N]Z^j# f-͡N𱓺0EZ id*j@T*n\ MR@)-.13FF>xGg4Ң\ZJ%FA-ܻ^:V; Iㇲx4f'4|2DlQ Ux݋#} oa>3{WEpEGo@uEرϿ _Ơ:9k_cܗMt? Qד.y0 HLƔVc2iK_=;G@XN޲[s^vA[q˲Z̜x}P7$i9>wSّJTY^m?~:2۶m#Z׿Ҝ뭰n{y{lp?v7"#4&Jkvau^cC"'azmDTC<sp~={le u||'~X%/xeeJcyBJH@48v%^=8M1.IB[0E/N_:|kИuz' x)dP (QmGFGjHkC$vt0=9=yE߹?yW|ЋEfQ*{-Mx4nfDW () gX\W7|kAT;w_}40jZJIG 9s&MZ?p ßxGgƆ*Q h˅Ͽ 7~T!!1bc`c );w?Ng#F^2)!`ZM ׏z)m3BQ˳[~~Z^EW 4jJAK J0>//g/,fI6Hb?HR'FxתZFDJM)\YYs5Ǐuv<|jbr<~uםzW}2fYk+QtK;sK/xxvW]H<)K/S=%tmWp"},`DȳfiD^ҋDQejjJc~cٹg g&{jg}#a#w'W+Y¤Yy4˲, }?{dLx*t ZzyKYՕvFer|jP3Bx"y~}Z嚲c;wRJ)kNW$ˢ2xsR kƅU>.ɳͫ0Z}vH\ZS33QA*ND^.z,]Z^9|hk;p 5Qk`bx%D:띒t\Xc:2NNJ?BcO>3jeyϾ/T }NRJrZI{Vk:z U+z+Iinllǃr g ֨K@QOo7zl۱mbr8MSm-^ZbdDZd =g);Je]lZ !1Fc[oBEC UG\@0f3)B Rn{!i-K+c@ęťݧ~F̹ o~ѨۆZ"I/-,sʾIT4f[u\{_/hLCDcFZ#}gժN^jֺ'9sAO1(?~ ^/mo۶m0h0$ aF,k5Y tm*S{slaEMZZɋx05=f0|ð+UEQ#k]^ {_u6-3j2S8)OzP"r\\\B-޻寵jRBfOokm)1ZJx*ÕG6eח8΋"3֬ N+'&ƂPke[Ei2sEQ9g~)2ŅՁ};nBR c+O]SJmllqFQ MM6T:Z?ʗq]tw>̹q4^Gʽ_NwdתwKJ+% яrDoI3Qc۷orG"++k:[4?{PHqoo{]k4Ae̳ڤ[g&WVګkZϾS'n6CDZJ%'xTT0PR֢pRZdžA&2? $1 FGGUwtݏ="IW&1fB4j[ oQ+O~梾6I!$8r~~qc6e{v7Z !Z8[N=Щu^ |!ŷ}rff Y&Zu묔^]i&}ϋRXdW0IJh (<::l6/ zG8⇘1@-Vvcf[zi{f#LJ_Ji:66Vd5R:γY:ԨW!!160NIl\xVEaR-|E&qYﵻSy+O_Zj0ΝsWVq_xqaY$n5HI1!lSYnR}3Ԥ[ v(aÞx}ڕ$X6^V2Yi&ŋReΝe)8k6d5*z^mBb!$,l]fƆIj_TO;HVVB9RA|Bcl5?q~l* KK˥~V9x6!e1. ]hpmx1222:64;=>2< Lp̅'Ah5a%xRa$sdD__Ջ0 e,tl6& kڏh)h1==$FVryS)ZZCᡡHR"jtg/JOZf0 H !{BPJJvVf+^QJ%;n'j%R{Hw?T琔 #_F2oJ!"c S۽"/Zz-8`Ďɱ5.:1s@&QX_Nc&$B"׷EΞy::c\uw~ҥ|R'Y_^ 6a {kw󡵥pӓ CSGoɟs,wnmI:>;>]W Y]X (I$@߫T~2` `_ R1Y cRQ3K:QoƧZ6G꺙Z )zjA}ˋ x~ FVCHw^Z$lM*{3qf߁" N-/u:q{[涍npXkN/954>Эw:9q?Ka #d Gb#!'' XJd$_cG^D7v)KH, P`_3߳w΂\IBq:[ٱ%$ A#͠ 6F'#gCg@ +D&Fouj+\n]3%ٕ"ޚaփ^;Z2断^iGA?3sgOЪ旻_/~o}ڨl>4:t: 6Ɇ;ufȮ.'i>o- O>j'5} -\}d?˟>_'=|k^KGN~rTJ Ԇ(IfDt6*~rE)ja++3κRJ@2Y@ŠJomDʅK }n{ BuIq;Y_m_Z}ۋW-wgF?pǎ=45.;8ڏk՗1E}c/F_mz[b֎yڇ~WYk_<?sԚ !nGS~I;wpf[m^gqq>cFcB$!0 6. ;Yٹ !ء" %Cm #2cȯ\=;vhwo= ZBH%u5!W*gfG$@fqe"#h+t׺F@H9:2T_\^\xW|굿)_D22r:k $F`nyq [ &/C K`pH IAPm G9;%+2 )kAf {WNsn>@FO^:bܴW.W`p=~؝N3~JY8~r+=|l0x#Vvs;?64RWwNtoai]mO[ԑ_ܻpy0WGPͯ4lRƸNFǦwĝE* (V [f'D`TDFkTRZϗ y@OzѨCAjutn`eHQIARHTn.I4:w[k 0 ’"@c,(vN@dv"')673B(hhh(P9\k_R`@H@>9hpV[ vQdm\{!~:GEsxj22Z@ (ق58PlB7T =ugci[[wgnr>zY(X_~Rkjx};n/h.H9tԹ0ڽum6z[g}]kxf|xj{CO-xs?ُ>{Yw¤"/?kW ҅s;h}Â_Q{gdzކ# ߛ?FAdboO|B:Ÿ_MZEJa%<3m4ahsV)BR7€jT Ɔ.<u=/VluB1+kаc`0vEB!@K)sg=%PWX^$3@2nB0cB0oV~ՅRrs" ɴ;{Rө7lO>]`|C2 5!`L8F)`HZ[vb)%C -Wxe*0lb'F~3  6 i`fBifEA$(3HK8O\k1ṟA/eӓ\ٌ=yOe-{>?z?M?^$v#Z' qmtiϭZ5ca(=Ι/Yk'5 ?sz}%174mJkdL^ZX[6xu!TP1$E8sߛ Mag7ֱq une}#-1Q%D$DѨ'I93g܆AJجX ,\:%˗`ښ5 O /?-;;_։3'..h/k"kK]obvX &ƷntBx $-DZIQI줐80$i+]:*`޶fggp߁|vj<;k?0jػc-W=C8p_|KI!ɳְjTn.-nAekՀQ"uq=#. ʘ|OM Aut v qSaӤD@.ϲ\`6"9<ܔ8(xu#UP$@`֦9Ԍ"eĪ[ ¹B d'|B6s )jA<0YkS'%D)ic]ȃ"b) JRꊿJIQE)O5_e $QKd% Efd,ѬVD]^2+ "qLfpegX !]2@^6ʢT3D"j 6hTjQ'NLLb 0 tB[Kc#bΉWgP{ϖZ5G&vΟ?S]<;Zu:եW}ӟß:}9y?O n{= gCΐs%_]kJE2-H(4KBC $BDOyRr/ZJ*!<ϗR !1y'I繵i] ҮMYh9g(mN0˖Qz:ŵ$bQ|9Wuw. 'c10e Fk3V7Hr;_(Y^Y%͢;}QpRw<|ZlnG'}?+}賗.p:r(mwEOJ5MITFU;ōFj.?ݫJ*jC- B6TY]φ^/g>5™K G!QmO#]zW>gEF^y{ɣHDP]4?֨IylT:Vs` n),Mj ȮۏI'(BzaTw}/42H%rpBql tKj9gl<̶=B8?֞ |/@)(#$̛#(*GX S.rm't쌶ӌ7`"W=AZKe1..yqi0ۍXKA 1 Bf&@ͮ  D)g _/dLfVHPzu슬j(lc 暤5oXAb~!^>G?Nb:ʲn;8n~lz> cIVWlumaQHyNcWx=[gF=bss?Nok7_̽GGl`{׿GJZx{m66jo󇏎Mtz8Mr JFZAJHjLK $9m 1WP0xJTk*RJJ:Xjm/,3,7"3V+Q- DA,AIbX (t8#-X#/% 1 ]{33"a`<c\R R)2{&uWW~Odmn'dgBkc7CcI8RzB!ˌ2k?8u@?zF[}\{o9.]:SrPN`?X(T"_8_t$M W'Zn21lU(v4+ZE' .RE^4jAM?NӤ$2v\*̩NUڎ}tBɠR866Mܱ+8Q$%cb^azABiJ( jk$ )I }?$%i@AeXMs:`YeXqQڒHDHzҫVIgY^w++U(}(Ȱ Ģl\e!Ѹp% r;%(ĦQE v M 7"8g; X:V0 `'$@ѹ։J vp-^8.?td^!Z$e0{MֲxeYvVmfNkݧʞ[džFg8rW~exaf_Ͼv/\| 'ɱ/N˲#W<7yӥ6_zv=ߺo_ ] GM11+$`k};f@ *ZU*Ou^DQ5*^{ikkgA cAav(%.ml5Fȱ1Z֙$+\k/J! 1+К6.iQ IFݓ!i]8p|c-y1VKc D]GA,%<1u%I*Šk< RJAa I,T (0!kMcBL |stxR##H CF1;* R˖omMKR,mKq+OFF+ kA]{/yB{-/߻%͒y ϯ?G66Vm=K<6g&?yZ399{4?_u2>R߲c w[n{KO{B2|n9}qy|KNn55P?55ɩ};^ML\_&t> -hvvluЯW" fF{Gq{Rs`DKyCAfFzdg5*p@ ffً|Kװ~Ⱥ BR ^5OrԨ5< $NV+ϋNתWC7F;vR uSJ.r"rRYgS`6:LTEe8Y][ 5a:###U,MQIEA)uQKKO~2($9"!3Y p Wg7"+a pXa>Z*  W1 (230 !czMyJ8r  pcBpںud7Vkt,bj{`t֙Z+ttb0@Tkċ\s;9~]@&WO;~zjrQ> ӳ\oOxg~/*hUmxȹ/:v/pVwܶjm_i_xj0J0u'_~#Eڽ'pvcSm]8en<EqdxgE:YF+ :i^ $8 !,BU+ Ͳ7Ȳ@O6BP$@BJW61 ;ʹ;ŠL\=RBVJ%=ϧChfkMa1FI% c1 j*;"r ȅ @4<A8F,HDQ$0[GG9K@Ah-.Z- Wʡm G %"ȢsB!BtpWpאP(, F!42WgWr^e+}h[H>gNtȈ eGHƍLG=`skj+" #4/]quˁcGNb|fxu366lw[칋]V+K/Ņ3=sA7t=/pB*wە[n߮tn75jr?>._Z G`)ox~e?fؚ~ '9#1s/ϯGN_񘔧"dEn\ czhmSd3F\aSʳP!05V:2m-~,g0i*w%IBaMQZzumrWPaEb<-(!H Py{Rd YPVE(7k˃ DARJa~kea AjRA I6^/MSBյ5uRfّ/LMص֬!2Is?RYI0J[P^3LR$9@0:!|  D)VT}Oa(DUjP;7(Z"XQtsp ڍP= S[Q8#ǒ"`@`O6Bk@XŠ'N~οs/#G_/IY+lڲDzZ/w[18~ZW+s~N>t{ua9Ѓ˗Zh>?S?ttgOLJ aщ;ժT|S'(U16G͠{QﲃדFغ4+tnD%0*Lj5`v_R+:f_)*Lp䉶$Ҵ&]$1!d  E>Hrl\='3( 0;, 13'$;&+B? \k9ҨRU] IV7~|yahYm4ﵚM52 䬈 qڎѬ߲w ?Y?{wJ7c+ ] &g% G$A*B!H&P0( ѱR{% & ʜcm« uAΕO#CZ[%##8@`KRWF[W^~I;g2d 99%UD @$ޜ:*i7DDQ&UOJE|D|妟vC884k@ &լ#sqULzN0লyYc,kcp 57ڮɉGAzc6Pxȗ'?yazY5vm~١sÆq|"m5ヸ ΰ*/O_}̃w IE/ }c29i㵶_Ehݽ{'ؾuw{F5'֩eݍV0\6]hOU'uZZ[>8C<ɝq\(L?0Yf:BQyX8KB&`LgE z:,D(h'l[X:bfg Xuwx3늢(DVKK+;uyiI ,Zn + iffFjݓt;ݵuB̬O=w~jdtֹfubblddD UR/pEo-ߺA1QOM*@EGB }\1D dLj +j )'[PIay P$sz_nw3 @׵n>?x}SM<@YY$p!2TP3 kyl_Ѽ_x3:Q}[G@]m;lr"hom|'.xf c#{_mhMqıǝCуw399y3K /xb6ウRoW?矝Tm5:9~3?W(2UNgoD % vZ; (G)oZU)_VPXpFs\WL,~)zc<6ڗO?{/̯;wyl4G?dtj"u&SkD$)-%$9Dׅ3ԤIV rd6ʹv}A)hBD"G$Am"cN0zˋD3A #oH$OyAh4Wִ$i覧'nǏ8Zkx8IαvJ}'`Jqm4=ohhH^G##[wlo5s+uYcZ6DtPA05*'B(ظR D%HDDKpe52'Y).QJQVr7-yCCЅC24 הQ( dn(/cJEfFh> *L-3K5V Pv+/-.gbQdAvn͋j_U7JH)y?s4{ȱ߿kwl{oW:YOGkvOȋ/{n~ yT*wT[ȗܱ7j[GAo}o vy-T8z-#"Aa " CѦY^9΍ EJ2Zfvh rjq(@ ($ 2uuZ֙)RAÒhTs R(͒Ykl &FZprJI쬵aNNLey__ƾ춙"MSQ:6H0pEk Qի$ }ߟN *J&ByA/rjuk8v闩 EyAI%E ~2^(P K2WᲐEa4:@`kٗ \{R7C՚Ht D*p,oԫ'{d*[ l30uT|+)sV|CU 7Í^}2ߋFC4b}W^>t=?̟֝;RlZ7g*Gu`O~zvݹpŋ++nmW׺kn'1Hc]`党r$$mAfB*p#ER̅1X$HM紉 0;W~ TRzJ(O/|_TJy P*}ŗ^%!=%<\I)պB=t}ˎwܷg-ӳS#VBc' jPLNOm߹mbj1/ϟ;{ /E.5#JDֺ~GxQ&dIM!  (3008FFLHe%Q¾cRQ5V2K[Oݾs9g-CHF xD ڍT 'ȀƢfgଉL5řǬ0~E9OUah1H}Ο9}ę`ڨ%qϚDF~WNR~o?{l/&+&L7͟Iڏ{km%i{Oы[FH^^<=}ݽβj۶:sDb>so^^)>񟟝;pR#!Z^b() EǚAe KZg%BZpK$XCc*|OZFk $%*p]5H cORғR!!u#:K޵Egb%vtdxǖ.;`)D%1ǎݱ}n-{q( J)V*0 ىzgY~Xa"f*Į={4u:i:g<VWKVVMA,k6N0¦؂B);A֑@td,5h-pT o͊һw7߷֙K=;7VG>@d) Xp QDr;~&Gv.gL(u |Z5 j1ć^ 7F_8+:w]x'.+bKַRw=|ցUs;&՝9 rn@tqlciE+0_LVz}z$7vVGj3:¾?n-z- bl8?vf=hp(ݾuۏZ_m4{k<̱[vW/|ϐ-Vy/'݋$# =dĖm }OJx ZgBk-cٳ",GAsAu)в Hr8gZˈZ\e~IhVGG"ׅBJ)Yg5"&"#&f`J'"ϴw0˳tnm,.-]aP t Y* +5Y@RRIk-`) #<sE<ߺgɋE%ePS5b*W`c-`dN!sE y`zM Am1g 17[]^ƑsSjZdc{vn"Ip5Ѯp #i`%{Vs<‚ZU]LHF(itz ; KǏW&vlҋ߸g[GF2Nf'ō-;Gkz_ڶq ϋZ5V]l,t6>45;3oը=3>%㏾Sőbvfdu>Q`Óک{oo=vd։׍*ڹpSX9 %8@,l,+ = ?Uf0`}Pg @DWQ\J03'O4[ã $֔B*)RbK.ٻ6" RVUk3IPDE!wF^T(Z0־o&e%Kx螙ʲ;=0v$!p*2u_t IXj:Ԧ`]|閨?!|!#ѭ3[?Zݺvo}ȑDoά2a'~{E{gn;TLCwmi='?'^p֛_ǩgK򮛝iãln}Gnc uVi}[~+9@̂5`J7+䎝f=C %5ȊMQ sa [.=kۼ}h |P'*HIG$%:MAlݒ˫+'X]^-(0 hIU"2 wcLQҏ3X^]2=nY' ̄,ͮ0ttsʩtLLO`0D$M biZ$MKT,ϲdIMYI $R$ADa:wuW9|霳i  [oYjݮ}yap۔KN3?ұ(7-:*';G]BlB#2K"S RJը>U?.Á盪;Ý^wT/QN ƒsp-BDÎAr׺ )K!LsUNE1BѬyy&&j7]SҡK9yĬu[Zӕ9l,d\epkJ9SWϽҋ{AgƵW?tZ sK}so/}O~.qgl7X>y;}ݯl=Vm(Z:rJJgW'7gf:"|pX;!x ADi2&{`I*{ x<%HVk2gЁZ+}"Z_\TBIRB)' RJD ,tS&Գ_|t]sp8̎"j &I=1Y$[VE#\|SNͭ,G B3193 <{ "Cw0NߖW@+Tc>9Y -D+}P&T8?󔾶5tJw<9 r zRNE+%TpoVbssǚS=Gbh=]˙t}K/\f~?Q k7ӏV_ggoTs9N~,ղGO`qe6Qxc`r'y=:;;-9J Q6t9n$TQZK(XJeH2#*J$; l4B0e d@!9 ȱ&G!jLVJ TRJtJ pکA=|䰔j""RZk$z: rdQ``4!s~~w &jlQ"ύjbbbbj63q IlvDEĴ D`& D}F #(o摄ꁿ Dcz==;;QV[*0hGdgDIL+bgSQIGPGZY?yL7|Q &'FFz~Ƿ|pnZ;kK3J&J'Nԗ]Jᱹ ST*GMǣV-o/OC?^yO旽[W/q葕k^j<^o|O{{wʵ桕t_dt׽Pim!Z?%Rq1G 3(r-}?"G 2XkQpPsl0W.=_9+PiR/E85829y sԡ#+sMD 5H%@sNJa1 `]FDgm\\{Q̌JM{\Bx|V>,:ҜHUa gϞMt1Id\הTrvgggB3stE̊AhFE{YIL @H ALNsIГw`ِJPb;,6<˾Iz8"NF%㚧KR+frO j10l\]U5W ~z|$k!Ìv;VNn8v9It֑Hk޻Q:wʼn/g\k!..F#tO77?sP_ӟO~ܗ>[OǏ<w&^x뗜E`kMA1A$- ox4Ca "9[c(P0Y"FB15n-&SJ]aIiti?Θ 1#ݷ0Y*foN'RHg==rfVK@SsWִdR[g_~nvX}2tu|eY2Y<\u}3yg>;m4k%Fӝ{Qƌ7/.?zhhef&"\l(,3"J JEPRqA$kZZщJxՅ 8q`F`pGZv笄"F0* hC{R %$) *IO J)Q\PZk)$q]uvbjꫯ,-.{(nЋ$M3y $Ečs޼uS&־\ +я% R'VP$& \2JjR 0\6Mq:Xѽw$3QX0 pX0hО_yhFߏB/(B ON(A$@!m>`a4{pw999Z5QlLT+䬐 -~0fgffgf҃8 VomTJeg(< Y !áGOh,GQ8DTT0tF*ƳU Ph @rжvh@~'P c e 9l(~{jK]b)Knf?InD{epvk`2y{e$J]]L3 T{55Q G[$\qs 0Yoم՛k[a~~ߣܸr{0eV΃p$Ije?_<>᭭~|hw7xt4y;.;e:רgVp0ta;C75;'͕CGk} ko:U' B`GFDAPāJ ~=uwV7wZ{|e6Q4\>05ALd!YΨ&0U 5: @ܚ}B!3 ކB6/kC+6:=Rvp4"vY\-Jnjdzkk6'K3y^*sZpyy.{UOl={ˑ 09v(8{am G֮ 3sj KQ:ψ]j)$w-~]۱ ՚7g,t187@f3ɴNeq2~4|&jOyjjm4fK!MMm3ys3?N]߽v|>^x? rss?':xk_־ٙK>49}ag_ų$V?~R*@%)!kr%R$&B*((Q)%2l;{1 =kTk%_X: $-I_NO5'N{;c' 兹FQB W$*B ٤W1 y:Y%=đMDkvTXscdi4!R)JQ^kz=c 9rFpL6՚D$KLhE Q 鈐s7&Mg(ztc>(YjNH`gUtGj(āȕs679<6_i >/!M`ᮩ{*.VҢTN*F4wT>sW-s LS_H)1B:Q׍ XgLJX%p F7{4Kqq[g#GBDsJkfB̖Sanw6wf,;,ER$DeYRP(?B brYF @m1j}/7ҺZc ݭZk%}+U|&4jR\" LӴR 0,˚f86JG/Ht4y()5H7щFr%`ndK ]Gہvwﮭ5mǩم$ssao00? ,rG»]|e )TT6ZI==\p3Yr(!Yg]6,Mdgkܢe4!"B(v7CKͲ'ݮsj }F`!E@řI!JD!¤Dr_@,sg&-C^ w1DiM7'/y&@JRTNQlRF¨ :̈8<+5-˕%xYNHD1 7;aX ' Ɖky|.3/5A4 ]6}nkȡ(˝vk׳L޳ WnYxLcG4ˑ0t9RL9Rw2a٨D riB I<l<7=|K['fkk:O~~)~捜Rs+9[[Wp^tC]nN5zAV#3<?~w*|I,O"Zq6{x=QZ wu03YLNK%3Ƣǭp'ظqy21#3scke8K$Ms`k9bm>7t rc\ $91cqpP܁." !VB8T}%}uّ?`gRn^^o68DS)~Z ]JЏ\.AFicB;q 3drS[!N`҈lLnJ䙱dA !@! v)!Wl}++w734rwmg,VVV&'/_a0gJ5ƕ(,PR,Z>%:sGvh05ssJ@Mjvw"@}/j] -}@b0 (* ( Љ} tmXk1dޜJ"+n542GIgzc}zq5AN n86J("1#h(Z^?6pa+Q}vM&g Ќ]N<{ 27?'i9no&A+J\艨zq8ӖnF=:y#3/y?4Ƥ?%°S_ICyҡ bG #C䘉cR $`ju{:d'JD`Tp}"1 `` ر1 5|oB Q03Qю(;2ŢV ˕7El}SD9#\hG۽$Dc%¡ ZTSP}ߙURLLír=oooVoȈ吠۵A@D;۫k~Liǃင4 wIgp^,ME"Pa Y`D!@ dI Z' [*L숀X ;Z{<֕H0!Dtt~K+F?K?1C~)kD~(j ƓSY3[<-8 %zY> :ӨLLpTK}|jav$]|JrG,g_}Tnm 3؜{[WI|O_y$v YGQ yb6Š 2k'gW'ݝ[9`8,}%u u䎙1Yb\y1BJ%\NlR8/JIpbV.eFYs 8@`zgriRُU6 IϓȧOp\r֨c<40&(`y\JZcR*m-0֥Tsc`Tr|%}/_:Z V"-r? X I dD@F@Si$Y&!0r9ȭ@6ys]٨MHP TJH(Nk̓q~HE sV B҃r1qftinQˑ\X^8곁'vgT {h]f!is~o{VrcK>—>տ/I>mf%Ͽ=J f= @BK)lVRH hT O/bA8 ۷.kv>sW>9=gQm1NRiۅJǃA5'K҇_t G}sz&lEMQpjZ{ƌWKFۣa1.,w族 #Vg111Y`,EHM&먨IXQk]Y$ŭNpRQ8S{DžBFQ8N0aZZ|Gr]SQq(RoMfss=QT:{z}WT zd}b~fJk9TɭXotriU.=d/yE{0Juڼ\TvB(\W9!uEPhS(JIY̔CO啘ZHB™k^wi"k/.O68N=?C'&)LQ XG PGjQ IWtKhv(Ugz߻Ns^kgcmo[c_z{Ww6:N;:8#,O1,eɭMVͬLK]čk̈M$Gy-՘OkWb4M]BA4kXQ3;"l0;qG9 -@932;@bΉ"cHLo'$hTj^AJ/DdB@, 0jw`4FJ(P"Zg{ayn/~G¯;U;ZMj; dEz2cb9v,r+S Y XpbvGnƧn}kgkaZgdl!Ǟ҈:@g9˲noK{IfڽZ"GOw8o.,/Kzv|]B_xD|ܹOUjM?q{P͝ />m]%^xpȽ~^ ^{ZO*#9[2:WC~lnvy^tȩ R&7r$g!0@=b2DigibqlRBJIDY%Yl&PxJe\mfF DB)Gg_ % Y6$Dp#Y[g909 IdloD8|;vPl}g.\$=muIq0|Ns^-9kLCcrOJh'թD=|}Ls"M**dD:ԟ~sk;-?-᭛[d eX4I* BXğڏA3 ȌYpN6єG9a-321tӬ?QsGRQ9(>%A"> 9G$()D!Ib8~UTn6,Wӽ[ײ,s8|β㵩%:O}w/OMqF߸up=U>5|=x{?z [O0I~O>xDsqjyqݚ Vmm0 z1#g^D\Rɜcs,ɥZ,ߗ(:MQZ lYDp'Bj8^8703 s2` jB'H2;xثM4P ,Н]h2ƬZX}c rPgN/77w`0huRY(Ɏfg&JRFRF)-PRݺ/|qznT*x<~x0 ,KoYݷ+;giwӔ*f8xd@Lv ql`rp9̆qdsGF|$Os^7ǡ’Һ$DĎ=:]n!<]xeZZ_D~XFڕ^k l^fy25y4v{o;5lM8<~b <r{HyΙnڕsWno`ں[sYēT}ҩŻ|_߸rlF{;6fƭdv6k~X7V !:CygY>gLX"QPš֞Xlja'9- Kd-d͍ɕP{;3Ͻ|7yuΑqu>)9G.cr㝍͵7M|uB|=jY/#ZKR⨵KsS3+KǏLNg'f-L6RQ:JW A"fq'p8BTW^9[{gٍm3QZ<7:ݱ@\t$2'/uH V* -e1%-ZdhJ( 9p6l7;5F ꇿx-J#̹:JBn~ByeYkܺ:o7o}pcK/s?sA8~!zާZ= Vg-]Yi6Ac !q?r)<9BA _|__$>P:]!u?219p<;j1#8"TeDCc@RR)@lcL$Ss^ostwz=wn"|k6k{<؂1 '@wqoM+I 'Byg7JіZ)Kyaa?m M#fg,JjA7G/׿Wxm6~+={>ҕ룽akWV?tq>@Wttsvw=sϽpĜVd )lj@(HBeL X8`"3^Jrl<0M#j׍s31αs,Peĭkg/_OzM?]Rg1(%H9)sEFLDRJJI(ADRR [[^z^kff: W_8ul宣yn< PkJkQi0,$+rT._"b̐/pӿ«V*8٩'ۘBCYZzGxXj~qkGf&g GZc  TJ0P(x2ssgGh4m:rEkEh4zWCߟR*9y{J%? T.8;[WnoԛD8 8Tu.]<ZtV/̩jʢAo|4Qqu|bM}dH0$Tqn~;15oydHgi2P֪r'@d2~Lq> A|-=rJAk8O^23CF eynOVO_$q|;K(t2"SϾ~Cg~ۍNZI_{at{K@J]F/K=x{XM>?SUWFhi:6N{8& B ;EyrzTodD^Ԙ9~B;&B :B0dLΨ8(*JQfYN(gpP+F8k],/LԪ2y|^ fqI]kС{>"R IA }d;b"rXhb׫V+ac$ ˲JyRVh9*'@+J(d8s\$yz  9(@8F0)NS(ET @T+"BjGTVJks\{_x-*ι<ę9 %3wZ4CT'm2~_[ Td駎*/ʇ&w=YV&'Z\ ׻z4&ff& ctZ_Z9Y{n'x `'7FkMZ;99ykw_̌J^rO}ngO~_oO73egY&'XЕz nP#oo?jop$}Eb $b-~P(#4Y<(F((dHPJEQs8MhD(Y00WW?JJ!t2,gX+VE/z+?mɜgϾ4KL| MƳs sQğgq#gV#@N|U=?o\.G')ڽIzL[^>\ģ>TjJwW?O>oHJEai4͜Q"EB5 B(TcGp8 ?`qۍZeY7uT\h#c"fbNQH*R7G428Ybg_9Ja4HR%=;v4jcb|BHEdyBJT @I܇D]xw޻T*[D9YWr;@-OdEZOovG(Dm'RtZk}_ bBr\]VѡYă0 F)U?|n,v¨yvE Ù,zܨ-,-R;`1ٯU!Ҫs(jm6aB <<γ$sHfxdr1w(V=ttjMHշ\XHzŗaQ]9q}O}ɣIrsc_L q|k8 W}$X0xIFw=i~8PP R(*ZQb!eFB)֐n{09*RkRyYkD6Ggp<1&%0(Uls037Jrr^?򂢝 ?7/0΍vٚl'BR GoF+$ ՚=rhq~zjbyỹDiE3>w3u}s< HH `@ BHI_;D:k_þH"Ҿ(JK P#+$-YTyӞ>Y@,"{. 6;4@R*:AIbv!#X&,$$wx ۹IBP&dA Rc6w|3Eџb luzi|Bl6glo 옥JkAR!J$QP |@W-~.J\3(nnJ¢#\JKT(J}SomC{@Naqw$P:rQNy冮$~ 7d=!HDA,q^|P epX8Cf2zo N ,W7vG}a2d:Zc.zKkav!56KqfYg@I[QT@; aoe!u"z|A/0 a}ܹrk;f"0D]b!,(YO}M5?n_[Fq{ow"zDvƭGW"~ֹ,7ȱ1_E6 (*Yb%EI)ZݭVgR:u97[.vv#07h)-sfqinunjkcgss-/-7&1\uu=OLO]v3rT!g 3NSO8MnIȭuQ(֚Q1?; 0qc&+5 IP>j HU_YDJIvv;RZ8a5Ywިmb_ЗVE]'\d?(OV}_ |\/f@vDruZ4K\+b)C 9JJq/SBkN^Fkv瞯K˳SǗ48G(=!0AqS;o4j~w?_b|{>GzG~;g&X;5QǡDP:7kn< N,Q*٬ڻc]f} !ދ}/jN*8GhܐRD($"J"f"2eYգD N'᎐(CD)59 5`v5A>dQY FI2y{6_ef0NS$QU45^f.P{NQh=cqO`FnAJIߏJ} g~a!A0Wjɉh0t&eU|oivfvvR܀rxdfꑆv;WY\<1?&n!B֑k)YBHcLgӺ%HШi1sT}(7''_ZkB>t00-c^ڿ=02|SϜ3~G@O~q\+EU=ԬUk47AӞwxi.fЂ"'i\)jqo5F%IYu E:BcO=OmgL9οهw=KV_<<e?Y?sSD |<7nNͯI֮^v~.\_}cqC_(9B Gf写)܎Ye wPH:Z'kbDQ'8(Uf$SRs8QlPDTK-FDbHk-FrҹwZ֘pԨ77]*hQS!) 's,1GtP8,WyZ}ݾ~zdYq76q0 M!!{s! $!!!$0lqe[dKgΜ޲c353jmI39{w&cgrqs{lYF25DG$2-W{$*feFDbA;CH EQmE@f& 7 I&BD _{=) Rf{;ٞq>Zƣhmu;7ڗ2_nayBypzEs+HًVA&c/A|k;Bh!vtɻ~LgTEЏpoDoU_"8=xR6~[ʧ|ٹťy#+'+G dxW[oNoy~tuckna|[Ӌ>;1/?8WR?vp\V#[/ԻQA Bu(R]xr5W7@"P]TJL^Z $pHb\5+-C$$ACr%H VPa DRZMSY.%i"BFZxpi3VJ* H^tVu٪l2nY=L677Wϭ"ؽz~0^;CzĉՃ=ӒĐ>[u5 hblk2UȩP&,gZI =,6n\U5P,KejCH/xgYxx׾z67M^Cwݿt_|ڗ׿rޚ}2&58U>M}E7 _zcQs4__6|ꃷP|r6&c@L&Wo/3 B7ePa k-GX0j{um8ʑ`v`< BT =YK&Q$J3`hV @[Z J15sN4zBǼH֎V1E[٨Ӫ<=,D  iLп:Y ^ƒ궘U;1&ԥ5pQ;wph 97!Wա`4q́mU'q<+vӓi̥2ϋ}gEd,~oVTſWkֹ[׷[;\YwE8w~hBZM/w|׿k=Gemcx _Go{'?}LN{s{4?^wo,˞X@|4{Q 8H8UH.'c(w8F*02T9pȤ*l ,y j` zT ZsH6KKq/,B<(]=#EEUUkЁd8-EϏggE%S[<=bZO͆>=m+HHѕBej8HPq\y?*}FĝLgkƧ.ޗؔRVz?͕ ~wC|Mkxtl6>zp絽޵goln}G֏ѽ=[}#?|.V7s'M<=y W&Yox~߇^q zKDh !qfF!hDb }mmRYgyY>m%^LdԵ%qsI+r 9i hGd* 0PDE@ ړB]5ZX\ !x9\Emlon٬ƘIU*gcg2MR N+_٭jz>/CQd#&I&vvԪ@ Q2 Rhk5~9$Xb B*$"RF3*dg'?7CvMz量W '6[Xܽ=r,IFj'Y1W7~vV۝vm9oW|]^VYY7Lem#•=+ /坿qWy#'ŘZt2DYy^EGD @RJ{sU]jk%Qe !8,|J"uhP = nY`Ds"XjADhd$xa`<,cb:Vړ@*u%dB/䶞4Q>1,cvWm^Wlk~sqn)kg&1t4:5.u޲+}IBX* R% )!$?wlqޏ}r/^;?=~Q G&H,Ոe-ת]X;̪jZ !%vpe+(s/麗v_[_ġGԋ8-3?aԐ)/DpM~<΢Ngq+Qh8Tqk=^P*(B(UA@ @(!muV'mV+IZYI,(N!^k#- u5.ˠ}SN>~vcm}gl棸c|I$c|pPJ6:N$M$MvLi}]nɴU[os? Rm}Uڹ9}iv zoYڝeV;5B,"ysI{}gItjuk4 KdfihDI{WkZ)F(he&0:VQ#2Jza($R"@"'Q\F}( +"2:b@L{&%ϔFQ'(ߘg[wu̙iv41WiQb]+L'[kִ^>^Z㟼+s'w{]4"YXVVoen^9笯k&Q+M 3 8ڽ޿誃{CW#uoxt2$ f M93 7C, Cv{U]aRH!–{vӬj\iJEF 7|c:KS$4I&&J hw↻5_M2 l6ld=>Q:lL'9眕z ˴rg'^S/IO<6-_MEun*|]Zi>4V(3Ҩ(\1w1#^{@FH 90`EH(FiBL_7Џ?/;ӯUژ_zW nxZEZΝ:5B~̝Z)2iV{L+e7Zw]sUtտOȑ7'E$fqDXP "@0\LS빨 Ȓ$mUZ`~cctlռ'M+;"yH6P<]]'BAbTNCDA1h"4ӈ{r:٘Nx%k "Jk" QP#FyO}/;Rj{{/}x>?xة;=u~=s{~~{[`07|{׽7/Y)b%@ 4@qnm qDճ,_s`'V^vMb햐 Rα FQ 8 n{۱ΝYj U{/Ou2B. ($"$DgYk]'|V3[zŬ7΋v Ό22ggUU:k&MDD( (غ(;"B03ijbHmb@eIsFn+U@+F$̨2E%_wuksߊgV'gLn/is[Fqmg'6ҸKZvx͢.z`mϤ X  *AM"ceK љߨKc u=XYTko;'">/  뽥:8m C0Zp2kJ"Ա)ʊ D:븭H9!N$^f1k˽9bgWO"=嶮Yr 4ED|Ҍs $%yia=!42E,v# M[nrk8&T b !SYOf&UَLqFƃWQ;SNAazvpf{oCdVܫ8rU'IH $=vEz2,..| S&/ uff K;@:1r| _tt:y^},7|O߹o߾cǎ)"tk;w9"Um݋;GU qdfeuru`W)CښL|\ovUOM} j,MFӪX3Ĥʷ%K#Ddq$V1eig$.CNZq,uT \k"zG|(;!PdUA`.qyG?suW.l|<*&E>ڊ@H uϻ>EZI͈އ#{ͯQkΟϯ6']δ0&%Wyfvv , DGĨ)ޠuEe Z Hg{AA~""$R2OW^F37?J0ȃ>rĉn/\d}AvpHa+;|um=5-=6\:st0yH }BpWֲQ{vRdN` P::hg+j!ooxرc l}{9~ϛ^EY]@QFP=*j^v{8O()Mgqyp8 Y-/-[ dqqa8Yk6-m"J;*)D0uUUWtW!xTBpL DH8 k£Ge3*…?xQl (>ڙ3y͋v{zI4f V%*eBt(TZ&ŅvxhZ:f8[3*'HAyV)S+6Fk21-{oz>۟a#tC|XYӔ)?k?WW1>w3 !;'i/֬U8IN8ao{t:}BΜY_[F9)88My1Նj[Ά8;rí-[VVHYB's.(cP9P)"!xfa"e6E-ąH‚A!#=:I3+1hgF)[Vɤ*fSPw!5"dɶ`gR%E=sjZ֨܆qjf,K@䆯QlRkUWv:+.tVXx`j),~4D !(W~[?EQUU :?%u?#?I}x7mkG~w4Rֹ/{3`syಮ4e"g~kkg8N.z8:~kZsгDZDj =ȁ`5HSv{ 0HLR@ZQlBч RnalcEVFo7עrTz6ͷ|;bR ^CRvl"Y;nnn,rfÍr]u "+vZ9[J'( Ҕ-kTUYQU;s@@EE#csS[m?p{ߐȝ/O _uŬ?z#_+~]tD#/n=q'n:s ᐙ"UQBYi[fn>oBV6K.P `iJfQρP`fFTM87t$HSaf/+ցB" ;M>59ঊCBn`.UGV`kk8 ,)kG:٠mGE6-y6tھ fu݊\13,$UDF:gEd N"Uץ8G$" 4֮fEkʾ Ak9 gߔReYs[>O(<}y?QoaaVJo]\pYp|0#ZYM b Ed~4Geʼnsb25!"3E&jW+@d;@H;5;ڝ:GE O@"F P5v:} !\uSU^V1:N')jc4ZG1LJwrs@Ĩq аNB[ͱ!-D̝4J8"nH w{YE~'(RGLvQ7"/^Pp(6ܠGI!" ڲl:iۿ?׏{vO\  ! Ȯҹop cNjϤaz2n{tiuZl6mlMC3753M/e;Vy=iouU]AGY>4QbB"DRQ܅ 2bHM[fg^_L+L;YeyRP) slQp[?mΜQAJןޞMFլ 2 *$D$k4bHw4.xA[i[EARI5 tLrB@@xJ.;j>-'Iϒ&;~_ΦwBOnym?񊫮F<2ZϦ3 ֮b \D*N *Z9o?Ѷ~B̧YD,,w|[V͞>BQ"c]e6i`﷓㬶Uܻ-{vaj4, 1+N(ZB 4PD3)#W^בu*2ΪڻPHU$4JbeJh1 Z*ZnL5d@Zz$dWZGFfD°g$pR:5F6xX[gnno[6Q/4Oy4K(N~~o6\jw& \s~_~魫[$k_oޢ,xz_G?`oݿ +aw sz/ǟzM7͞.0Aa""$q&f &:]\h'١@]x<.wUk`P:&FM&È;i"Fٟ?_z(X PxAYHDXP2=t3EHT\N+N4H|HB:R E8P'miMUYRRQ&0arn~nQ㮎Ȥe^^lmVmGVBڗss㍩sEY9緝&~ľH6!\D?;;0ƫiw7oß3'?ID4yW7_utec'wW?2kN:&x׿Ϳ:|BDQBJ ("Ҡ*|i+tmV/-FyY2Y]WfɐH 0{ٙX@ˍ^_h3tz8@@Pj;|DMIMY̐*}8t2*\mkF*s]3 :-PIG$ԘNDQTV VU Xq*L5h!N,N2ׅm'k|<_bMfi ?Ѝsooo~*NƱcwK?w7޿o|ę,GV$?`rF=09xTSSV[Z_l?wӊ(M(*40r FD)M:MxafڈcigIHIڞeJCa -"Å@'"I`ʚz8VȈHD@)+cI>Vi&6ק{Eq% Oj{"BRJiE ID)lXn 6Xu'R4eELVEuC,u!8N M{,ns#sh"$7u?ꗮg?={/VQ5wȵ퓝6^O[֏G][ڳ D ·x{/A@r3lhA GBӛ~蟼UM4 "4D@8 kM:20SgI N=;K%iK`ٿbxvGʂ 9U5+*InQ` ԈD !Q#J(&- {N#H9gQ;KQdhJ" ḦcqUm"!~ŞY۩NFU]YuRmʤYK@u]wy$+[xfN{3S7gq1lA+" *^x[u~U7_sd$2,ۏ>w߉O7XIFgP Cڋ4wo{׽QdrjCEZDz4hek|wi9*g5DZy[G 7fڔ ǐ(ϡU@P啵v" ёU:1qʠc"ai: ,8.\Њ@ؐV 9, V BDDƹ#'*2Rq t&&9U6TuiBp;siWsZ+C~ |;񊗉dTcQfg(:B@Mҷgģ,nA6o] F)9Ik!8Wrn}`e"cb H)I 恥U&? [T 8#!&4* 049].3 T!QM#@d4I,#) A@E3'|Q29AǣlG(ݨd~K$X$bPFg@[@N`˅ $B=TdyJ':2&;u~jk1n3h6[tm^%-ߎ0!y4=+m"<%=~I&D\H!] ފ.ڤ?yEas6t2/E ZiAE&V(b/gU&{5{/ 8>p3+mv 1Z).TnBq71: 0a) 0uiZ'iE6_SY1V+¤F Hd 8D8Ѭm()sYb63NMJq'6ynw*k5aufB EBY'JZs^fϡa"@K]A3!TEoAX=,M"b4*՟h<'㕕yT9},Xon,\uĆ aAA B,J!;DJ),K+ !; MHRQ(p`DTiBp<[e=Mf^HtO>i\_ VӬUE@jYeM(>UN8dϠҍ7iM[Q6I\pJtm89샴bnw FDDp6).wHDD @%LĨD+]WOu@R ڄ\][kSqꤕjcz %%ڵ h}MAr6a)k㍉8"PM naGD@6F$٥hX BLD(8NFl )U=milqjeZy2طӴ90xU !pꁍunL;|`EeM["4.6x{ ~;]Y1 KuTk/umH AC 5/X`$/kؾ3ke1 :( W4IdxJyZ94LKz'm"Ǹ܂G2oT/wsRnw$rk (@ںt O!aXU$$uHSdvҤD$Vi\pх'"@!REPvtLF\Ut^W[Դ=ֵl%.Y'@lΕc2A'ϫv,ZZѬYLjRZz:v41׿O}3N׻ZL  >(t=!t{Yp[/;r r6AU\;ߚl<4C_$T42Yt:N+囿ɇ2cT`flt_b?p;t[@P̀ ] GsoW틶J~|y4/ˢ<;ot1,t\AHG]b6vvmР"c sR4}HŒ(vT5سrpiihv晹}S}֎@ȡںkg'>{ٻiBr([麘Yd."ٵˬxad|n\ꈿjϣ^[օwt2-Վ:ן8+9i =Vs(U+x2BwRgV'TL 0T8U}rm}3x2Ve.EX@IڝngBz/1&<gb2qb 0~c[1U j:̬,&CQ;μ}~8>IuRb4:my_$H؇Pr2ooEljR}M(%4ZVy>Skm9*js{2UP)ns'R{>wy,^@ABdDihDq&ֺjwsDn{yyeyiꫮʫ<$)K/E=he<hVH:ɔJYBӸr;ѤjkAL30SptjVl)#FŤhgյcziH;$TJyem9+[dZ8kdC]V넓V|@7|:AA8 phL`aP! l6(iVqeIVV:pѫ}K_qn_^Zn&>E=kU~uKR]5'²FvHGg<&J+hu<ِ F\LN-.n]??SϪgΝ~90Km]ax!D!&4;LH!08_b "aŚh:-ƣ=[ oگ{K_\ _Ξ4M~Gjv%k5/E]/OOW'FϮ|_<+EXPi`w4]%"Y5̹d66GZ ̞=ZK4R~>CJ$%쨢5hHDl\)# D0P@9@@WU1huS{u_oD/^ ACTNZCh\_~ZS:h|Iίɥ1 @q\yIࣈiT ]5s;,k0nEӄx:dYם8ۊPkbuOpճRȡvpl#=ǎߝ )&Qd-ULGO+?jfo p"`@-w@]z 4FP;h}o׿u=`w/~{yKK_Bi4ϡ(]~?@iFj+3'-nw(q{J2@[Z*9 r5e0k~5V;:rWZGϜ sG=&[OgCju(r.m&z B@yb+d̋&R\ =eى'A]E8.|G4v{.D};HUC+|l{~7w|w_`>EaG>}ћ˝py?|4"ILQI'bDtqyv%LE.l^|m)@k"CY.=vzxus(cLlt6l`CM؞\8MMn`q*#D>>8P"D .6O@P.ls<$f_l~ףBe__>C?㷾 aЯ9="Nj}+~8 cPcI5eO&i!*1>M׾WI^UUbr\UO%O[ٳ c)շM/;Hd*2MݶK:_t+Rpg pNw/ @ uHDi]DAiD}16AA|ͶV,?#?C?I>U $V( RkZ4־D2u\M'M^uG@zh:&R]LP@)bzPq$I6=r[r>xfVH60Ԟ)bT.1 R1aUڨmskJ5^"@Ai0\@6D;8h;Ļ8f崻JBJ03yeiE{_u]g yک` Jݔhio qha7֠IEq`a%NyB^-'k||lkz(%vހiJLRFC ̀Pk qAYڹ/\"֞{JO&cA 䀈 0NP+QDJMD!sLMil(;em'Ą(;X +fEs?wʍ/y|me7QՎLc+Ω"  ކ8t ]gӡ ;Q&ҬX/{@*Zgr%Hd"R^nϷ3DO\* :zWvh4bq"(-4t[\RL)4}U L"5L6͍pJqi, 476" ,JSo|]^. ǩ'3X-E +Zf=4Y˝, Fb$O.aaNV1 rmD0.N$)^^>6[-E5!9Um־.-DB""mxҌE"8XXZJogT[Ǔ?g~qN#Yj +B ¡2Z鸕izsYgA\U$?z왳Ϟ[_ߘF9DE(6A3:ӛe1KNx.ԗ^фU~z~Sx3lW.ϛq\ MH[lH3R )`lc &5&sD{} E2N}Mw̄$ *'@(98x ,б"Ă"g84`waOۍV'>}_6|{keɵ\^L[fnui P۲Dm;oCMUVE2,,ZX=[Vo[]؞Ns" }X5N ,Ɖw֧NS |q?B*S+}]"@H1= qGԁN|9zq!  _~iEOq $ɒ^eg^"&ұcJVJu^ղFC!o*OyM 4.X=:< *g0I3",A`Dy͵-pڽp`xqq֙j qa4~ӟ۳2BrU*+_U8oU5EPP+ZGqEQ'Q\ŕ4Y{,NQ|$ o΢%w\! :혶e@@+i;缫DPJ *[rdՙcĖtա=WFj+n}4 ҴJQBP`\(H$ %g} Ą FI fe=moتlJ 8ΫIQBPeI ;d"_^!JPڢ puYӼIH&*똬Q) tV03kjpuͭ'¬`뺞MϜHZ$is I{\?GՄQ)PC`B`j$fKd_qVtRQ3UyNc[XHbtF=P9F}|mg?skYҤNp:99̽ZV%Wzխ7h%Eu9ƈ lZE@>m #eHBHyn7赇ӫQU;f+ #sM) 7xP$"v69."L4)4*68?]N\;4z:WCNӸӍ6%)(NqqXa^>t2E)Hϝ8ycMm Ln-ܿo\nt:Gs =tݱVy,+78 ũS{=37^ &"vQ(xi~+AAi ^Z d}c=5*MQS5i_$FI#I+PaGӎWz{d/x\_q[}DG&@,:஼ᦣܪcL'kI)RqRӧ~fIUUn&@v^ѧlSw7V:x䣷|o~7}M-}ޗ=DZGdLV+\[Ug5b Ȏ/ * b画W])R,q! BnZ}(b:fŬrΓ"xND!B#i .%cI(vf:t$-ɞ.Hk//01^..kOB-&ɗ޿Rs.+<"|6ԊB "$˖sA+}#?yutQzzmřBG"yŭ7~^xGGp͇/i]%7ȤQ}~&$Qi@%QUy/jYֆZi$VY!CD@Ew>J~;*=nf92B4 &!MFQun;w$"BLKI?,Y;i!ɢI>Fn,>\./i"r`APcMeA ),#*(J N L"^QV 𗯿$yhdk%7^[a^TWcm?W薟oG/N8_h߿󏮢?O?V,7%,΋ EPD)P C#ܥ%&>||am@8I\ AE1+Gx4.So645^#͢EKCQ\EB{\  C[%GeBD(B`$ D 2"t:ybOW;ǏUL;>2w/{q{qM/_sUsn}Ͷĝvq/h8øhJ6 e 34g!{Pܳ4cD;..ݷw @@pixs}}s{{G5Ҹ 'Ah@Spi fa欰Z)qpIijpfl%:_5`"TUp΁O\}25@/7U)]}፷#F@R zگ94x 9gLgN|{7&pJFK4 X2!)@'qAty]Neٕsnz?zGm왛hy Xۚ,4A ?s(O-gΉVYP֠t8`Y#"6+n[= gO[V^[Lvu"Hu7KΜ9[WRy!xv#B Bޝ:fmJeID$F]אɄ;Ft)/.L(.Pp%|rQ4xh*H@G謭V@/ jȘ:nGY<gO(GٚN2kZ [5G=y&cc2 F^X9I;eHAH{, JTf{8 ֖.r%I\_՛H/}žC>tf,//o=}|ph؁ZUYkWVVN:<06$D$4?1Ziu:Vqs~\8pi B"c¬(ȞQؠ.҂ՍW!s_r핿Q5ᆛԺv"x+*]hFgY""];[xL&"$VHbYm3ISHHHD`KF`,RD$Zs \U[GeQ٪Mc'G>uoJV^{_qۭ/|>x Đ! D,exRւDfqyU_DG{Wx'2q9$A%q.-Wt\C鼼}Ĺ$25iRnnU[&,rs$J"Ap!fύ e0N@5rhaawy`42xxK0|_aLMFQD )P"A:nϷo'YQiU9r*{V%|uIپ}}-g/Bh݅D$ϋ?I)*oqWΊ.4U:uR\k p4PP '^]NZDt!.[TF:qheZD@b*ڼ}O5lk[5+~Yufuڛo?{_گr&'eh{왵 yfV*1& 3r,FQӢuEX!bc0M\'WCsԥe b<4DFw8: 9kR9r֏4iwև-_u}]1؛D)u!Q褑6#j9?/7m,9@DM\< [[OFg6&:5,h5DMxmk 5(P"B05a[_n 4/_?H= !:\3& #CxAx.j1?*$䊹7_Q+}_$ 2ɋa:!ΫAA xg]D,"9/zt%6nB9wr_9f{[^Ȫew~\T!p8{þ巾g|/RC, X"Dt`Xϱsxp6ߏ[CEq{g]{xj+?{WT&ンU=6aWOKbg}4sUp^!F`ax@/(0 7AkW#(_Bi5O_Wp "x/e|~K2ƊϪt4H5Yދ3j7硅qDӶh+?yᖣ4Jwdv @s`^*eɳW]zm{n?#Ŵz_kmB~H INmL(sEU Ee?y8'Wk?~葳?jae׶]w+o=͒r \y]b $ˌ XKza_#j.^40ϖ6]BWT@H *\IZYKyɷMwqhV~cƽIe8;8yfvyάM$~+oWeEIY՚wNJ*v#8!|!ݾ"jzvu-yG>,<}-1}W,i\uye5?7}K[@FMM—,Ç[2*$(I(2F+V}Oۈ mg@ȩ,Yfy9+(u$*zWmFw?|BڳoϽ{ۂ׼$mPQ+:6$J$|7ϟO|"l/MǓ;ZɲRh=躮N&q*n_9vK_ATR((JkJb4׽mS J@b:@S.;mYi%ήz_dF-w|Q@uuUWyM+EBwN@( 4fB"0JYbR^kD}ywG A;"g%S# F*Bc}t{췻 Tk >xL<nԐݱs"čVtv4K[,=zE&0 U< yUuŵGewFY{fUʲfF֥ʲp \=p: ;yi"$jJ&H)4 X3_=uW+lL EFeH+n%(RT4M {Rsk[=LXݚEʠ4)$W_pա)$f;Y{yQeeqN;/fJ61U; yQY9K bĵuHn1X@A޷pp?No¡=T]U"PUhVY/,{ƠR(HEhAwHM*"Ec[^_/9>A]aCj&v2:2m4"H`@^?Ovn~,Y3 "8c7(>wy qe:-}dWݻ8ρLgfEDsUU#W6O#V+"!U5 z:(|#'g7#K7\*z) !$N`FdG׹nY[kw_1;9Ņa3V;k&>h[>97s[냅9 E~}K B!B%(vnytU39}3[үy~ 3x%mh;MJ#DPmA!@@_^s+3n| =(%?5\!;7&/ysB tmZ):QkHG1iS>w 67ʲ-Pxvsrvm4h'lӞkb,(Bs0E(G~sǶY+Y]g&!hz U1-g3XN:~Uɵ{8#K{lw%WuQv>X "DeqB^?0r;HϹi˛~7@R$ 4Fݡ35:Mf҆vvGȌHi(ыH$\nty_dugY@$5?*++=wq#w۾ Gߥg~I;~VeT47\C@!rnʒb69ǼcqMrxȘV9s K ^;_"hT9ǐ qΟ\j7Rmm(aX{ˁDag̙s![\7/nwg H`uZ[K(ʥ8 wzY^ k.CƐ|ya2ѝkcOFˑUʖb1ghO9g;#+XfwQ̃׆~iwCٹ>1ؖ[wU?i# _{u`(߉˗~bg+ޡP=|uK1HLj(NȅeqD>w^{`&$NTU1Ɛ1k-chpz׎[JiqYg$gdn 2ƜZXkar5*'"ݼQc+qƾ L4{7TJ-qt4%x, 9s #SqR&")pRR@0߹|-l59.UQuj2,>:r3v:];7@٢&;A `I;ᘶdi=\vT!\o^՚*SE^[Z8Մebwk^B`go7"X.CD? 8>gf RYi΅(J!(nntG9c9`L CdNjYkԳ,d4$IBvUU ݼ^z[?&YN3o]"ɏ/>pߒR5W*"D@|:zR1q 9gX2ND&0S4*81M2rtO,)"ۀDHj=03s젻80{ KݡhTJe‹/Jsl&iahAę~-:ihD^Q8QP;& `#P'V܇o[ő ~;!9O{'1y{\-Mwu.+5jVn8J i-~WA{Nim8chaw{'˲4 !<7j]9qpck7( 2Nxf=oܸ@" k5F a5*ADZR* ,1F)ЍCNe!89+o]cB\YFK 3`4.te5\r1?51d `Zx}='ǯ?)q/(ϖb0;rh<;Gn+_{NH,mznaH)HkQ$@ ˪(Rb C se .APFi8< '~+kc^DpιsnooO)%|嗑3ιҪYkeU9Gz 9e%(l Kάs mB 4NtJa`F6FfB88Ivwv KF(D 6Dxرkok琳f<֕+7/$130`TiLEN%J9.g>6akPS_'yCy!zvǭVZ e i9^B@kED @ 9)8L5âڀV jIʲ(( `4AQfF}na )e爘99uF\˒( <=n{%6鎭KY:R.Dс Hr! 2lՌ.H9(ʒ1&/A$Y- Cc^{aRF(ʲB={mdF(FQAA9ϲl.s84*cs9!d:d xǿYmV9Dk':yT(rL h|s`JF2vҕzٜ sZkŸډ^xkO=æ=3/]jkսzo@H.0cP5CH %G B0w F0ર0`q,??S{[6- Ո``!ppDu|J0rF־?!t;ȬEsP,I<e#I6“ ah~/u;;2Imߺ~kv~& x Ƙ<ϻݮsXc9`UJeYFપqZDIfXrna\iksBk;ExQbIA 0)?] @8<oܼqp7^XY^k^G[h#H΅Oҝ\;-` !3(T$#I<<À9H@`6"< fogW;,a?YQ_ٿEaQTUUyzD!"ZrsU~s"4H)ZZ3r.0t9)rT)Z3,L @7:DU7[N.$i=clUq-j5G!sz!%I]K?}"߃{szKc-Ӫ*"'2W6ID;Q `R,FgFav?~`? LwI!*e,$"r+"´̴Gaqm༨r,I! #|]$D NYfʢ 0ndggj/.̷gfxJ8Fι9r Vkao?­[V VA?wΞyſ7wHI0p#Jk@Ȣp5[z[]4D%8scOoㅇ圝w?܋,FWUJJWe@JGQҽr.$[뭹ƞ)TV\͋!c _ lYwOXZ\ Bz8TFwqGas5ť4i6ww+?wQ%i- SQ2FݬtRZ-A6'CV1E94tXmZ.,ٙ$L/@|/A9d̓9gtox7rƍSDDX%C{C{H+R@^︱ֆQ8779bGz~M&Q}<YK𙵖!cƐ3%9@@Z陙yVWeUQ6beJ)Y2cy{Q}wmZǎx4ݹsq'N$|Ƚo+2;;Em=}Ld, C.ER( 0 굴kihZY a\iDD3DXkژǏ-,,looEƘ3xڭ0pI&H IE ]UU޵g&bGKHۅș@rGdZ tcv9Ɯ?^Q["B"BH` 0 ?_i?;)v" 8C@8@ 8#Gd@7L Y 1ιoAFέ1EUrΥ*9.ũAY[yߕHk~~~!Z"!rt`PDI @G>~s['I|뷃8}';}~_&>o'48>|/??v7;x}[i*ŷkw[sw~ծT5βp4^gks=/d1 K>hY0F/..@rM3CG}xiqik{((j4^{՝8`yyYk]UUݞL-9{d3G9YR#2+K3yQv}dzn_] Z*crFk'i%8RP6fn~ݼ|v3mcsmbqq(eޘisdxl͖nU G]ߊ=M Ewo ڝ7ws7NK .@ov}s31" pbHG1$ãX98:.@I!YBǙ WFD':r?πqmb i"᮰CVaa(xc!`"=<0J"Y\93tdp+"Qk*Ljؙux$9WJ.*'?Si^q,+ܿsN|ǚw\zc)!"ι?1ϵcV 9:=;w#Un?ӫs*Ӏ/QȖ'q⣏?KSDlݸ4w(bQXfm)88 @Gq8,9C3M|b@G#RO#L@5扙Z"egG8p&ZVo|+Ͽԣ1}& 䀀gd΁st϶do`bE@D6 DE> o8"GZ+D:nqg DXYXqT[S+O./>X/B8:=fO_͝K{{gN~Һ2 D0CQi 6t'y{lH,@DZߺuZ @>ZOe/ez,wP~zDQ!![YY̋9ȘrԾ??[F]F"n:.]ü KKOI^gag}g+@F!Ae^YY*x'D G@ ¬B+o;_9ސΰ 4`ub@ 4ѐ+yU|k+f%b2KGG!:⾴09CAoT!IHpu./ d ƀs8I)UE8cRڑ͔si gN>P. c|j#]#kxu478S!c @QUUV;}tFٗxT+ƍ/^x Mn7X1PG9B _یPȌV컞ìͺ o_3O?߫5vGE7vC{ĉz7^}ډsO</n"\ ٬-xYk83ΝqߖQc3xן8'޺Zn2lrIrLvڀ#SUu\4vsO>uA>7@ '+Go¤ |!Eh)4 D03GN @5q.*Un0!ֽ~1+xrϬ{ jZe*xo-ffY6oz,3)"=q8s'zx/ =k!I2 $9pTv> KzsG߹y///lmmF#[s Z4}Ν;W.]Gi RJ'L#t$%gL]932σ]她áwOO~c\3ƦTf~P.F@$Ϝ{y:J{'v҅r@\e=l[sIH`R{*/N-'4]'yTo//bQY e: `0 e$V**TU\aQdŠ~٤HR%  Bp[WsX !#'訌  3>΅ADΚIΗ[97QZ(8Z}٘RNýD9LN֭s=QUUj5gaz©—Ep2. "ۇ>}!zD7\Խs̙3z֭[^ojn" RëW}#yW:NEǟH޾LMgB:2"`!sQi[OkO}F rV9dY/]PBgsAQέ˯UbPEGd=t$’6Jm}wL1t,'x[E+sͰiz"0<,22dyKN#uXUIaTҩyկcf~C@d6DrC0ydȑE:"-E$UD>#kM D|J c Xcf0>x1tFEUa?4ݛgi]<4i88oY/'׾/66#*'sS|G{ x8cϟ?o~7J=ajGs~ƍ=7nx뭷$B#It/4buDX-x;;xpyEg#R fX7֘__|+<ݜY-P/R*m2EY oܸug#/Qqι@&m:h0Q |Ϲ8:l-p 8˼,G![o~'8iX.Y G#)".C8 iqLckɆ¸RAipĵ=ȿחf[!DF 9@Q+9[@&E^)g0@&VRh笔Q6 ,:c9 IעnIzֵsg>Ի~%@DWh4 ),!"ęSX9/isu՚Y^ywdy5!7=Zh4N Y "QeUZ0w~7ݹ{GZSFAJ[尟?-˜!cqDݞ2RpGLY9C!*RBHD` E>d 3g_rK" \"IBHȐPQrəL [ 8s1YOjwc?!eX*msbo:쎓8R CfUeQ:c zr5xxc@10c$MN;&1uZkK$wR!2"*#(T" ' HAwa~"gz +W_EPPhBz')@Z/...//onn)蟒 *IP^)xILիW?я~_i4zi #M@RDV%4: gOVz~~wwn޺g9)pu6ʮ|+߬jIyc'zEklXz>Ę0^9犢Yg%Z2XzVjkBJksq7ѻ8oةNF@ )C. GL ")C)#Pr)θ u1VUNR\t 3S;Y67/ݽeÀ3YV ++ >0Ӝ8*'9g'i>qđ3Ei̴?ɿw#sZH k7 deu1Ɛ2 XYo捙@*(ehꞧi|weΜ9㜻}OWUc=&x饗ů 8fa(,l߽sa}5Ifus,93@0dH(D`UYDjpI) d øk蒏Ջ|X8W^歃ā%\V*/1\ވX~?}:6"׆lD-qNJ> g>Sڱע .ĝfJQb 7Ӵ`e᱙5O1=>88gys΂ T?VW83Gk4m?N?uh4t:Ӭt68s B'zn {475c{w0^]:7 p؍B1?p^^ 9DsoRʣ*5F U:sFi-6(rvvvuup0Q^j1ҥKy{wNS|kɓ'WVV666]J)o({ >77я~ŋ/^+ӠG#B2ƈgĕ֋DZjoke%q\9r8k9I,Daծ,9Uڋ˂in筵EQ4 rjpys$ux...~_O;Ҳ>Tq2p,&I./7v,3!@#N{QXQRp0#P HR A7cLs0, *12ȑ2zZo,9Y ʷlUʀG(32a;bLY.#,":G; Ni76o?^{z衃jvlfY6_| >gH( } !D\vmeeկnmm%IBG)R19LU:(L ʒP`niT* lEι@pk@i F8e($98?O|>CR_&De31f} 9 d00J3ʳz=hi"Ou|ιRp2.DeȁQ 0RKN r.q) F7ŅHř"2 ]0 $F##Z"@3֠PbG "+s )C.1Z!d>łnA8v;zKXGMZ+cVky .ݾucJ0s:ɐ"" c4(9gy^ݸ{Gv=<5ͮxl8O<9vvvOb6R*M{(px}a8޽t:p= !ʲ,Iv'>[o}߄(18 "rÁܕe%3]skmιC~DgwZky6 "MDUV {lor ]i$ peFX g#0TՒv[ˀWZA(0ct 1+,+p<~S(BƷ;c$|4.re$(2ZB2gс#bS"$yv!8CFGTc?"\{O|`0A9uUk=Gge^r.GLGg2jޮsVe[[ KqLw0ƕRl`4]F\<4e977wرCO?._2l[^^&,N8AD@Z uiy> {] ^o<_pann_̲@O8 Cnp.``(g$LGA(@? &981Ad̷Y]UUY9K@i]N?<*5B0 8EY)XG9CF:z[K Fq6KHӀs U\ 1ḐaԈHIv8^[l8 bUfQ8UVV@JyY@ eq֒Z6fh q" kDNv4 >JBNDJi묵qYԱӳg6:v8s*8g[b,D`!8;I C\(i TeTY`eƃd~inI)#3u ;;;eYNO9?qDBǏ=swVY+++4Fh4ʟ*X1N#cŋOq.r4; hp`qK)J[$(wʯZ=0BpkI9EsҜ3G !rբ~Du̙9FHx\e7osY+3(!U!ЖbYASDVsAYq20zٳg/]4=uG) Ur0...޽{W)k=S9{d:4WJMӝ0 0zW\m9ɟ[ŨȪRz8ݯ_}K r.y Hܳ8gv=5,RJy!Ҕ0}I be>7Yπ,WT jVs>\؁̡+r g,c-o .9)y~tyqS⸛wgYU\m)(GUAGy3n NgHYϜ7V6Ag҅6Pr1Q (* 6 ~V0j5Zͦc!/qim B X %c#e.[]iR7cDpNcy1lg8֎Ͽz#U dt! j®%j!ZQZUy #@7(/~ػywDb0An,{[677VcO p8 0Ix\'MdsoAPծ]|菈k|ǚB0v"uJPL?"xܢ,u ;|a,9I6 C)5&kԔMr=+BJctq˗/WDdmq5!C@.aҺ*'s͡c;7vgͷ^{4hwckmȱ=mt|3Vwv4YQ&AyQ(C9ACyqezYUEFpv=5ߪuWWVVʠDĶ3ƑI!RrOq#N8S)d0XU53nZ9Jd謡&>Wܹ *> 59+U[+a`۾#,T#V;y@'fENCx`~~~4},ˏ}c'OtέH)wvv<A JG::b@A/zի^ZՎ$ 9%8J3.Y2AGi8d I)]UZiTJcI#B~sVZ\ 0%9Reag"8k5%̋no00i՗fΟ:wAb^Y)K%ʲ 8ս77}wc|'V?sssQ<^^7|oJË Vn{;RâT:03EwpoVŸQ%9DZ͆VӧO GF3)@xǬ7F ""XM)-UeA]kOjc&| @AܰgD,q6>١2GNj.6=EQ'm֞<<;/;_hBC"(@j?.#WmO#NQ_Fi_vmff~jZܼu`0܌؟Aic_R*܎,FW\"\3ܳ8gg"5D\pDhM1&e9+9뫃ncfK>R# T3ᘳJ7a"re9"cO_w~ٵ$VUxx|$t8{ۍ\8}l: zg_m!c(_^W_ݙC34^7_Xzs7fUEΆd&+ləO834 ZnپPhזABtSj7bq"8gY"q)1/t;q9X;y6tu^ d| ,W\Li~ o(c $CFlꉕZxu4z'|{n[UՇ?qo>'N8<<{N՞-BBq2'ä޼}ܺ+7G .7j׷w/޸u +gY@4NxbeL4 %^Hg&E`XEVWmXD1tm䉕pjK"8Ֆ{ %,ޖdb^ 3|c4hsQVѸl,1GGBLL=~ߍCRzw]&oqjuXGtX#\h^8^u 3?9#Mg,\;wwaxE_-J$7_j>4cz ׯ?~Vu:4M}5w V%btc׮]s5xɣ8^C;Džx啗;$AQZ9/_5kyQJH|ҕBdCNzYf^ȃ1OҀ16Ӯ;{ TD"GH VK8v0lG(aAh+p%Ȣͻ#lIDATP:gL^_@k6;[qAU;v4"۽p.")^b 4ə=ι8b"Xb4?&QZD3q̃a{.VfWڵ|N\lԶ1KA(5%"b5|+WaFZ/ԃa[#)Ы}O3ۀYngP1J)2䈇qFw=ngm*k2`gea8nY!:wh4j [nkR3xAJZ&fQIx Y8OB]6 =DtZU,, c1ƵY*˲V2pDhz-f|z,TX[o L*0ҒqNιG/ lw=7Zi"!)`BLy5P,4M͛7FYiC=tر엾3gϹsp}}}{"Хizq)eYy/5ݑXBj4>^^^^]]fG H0?ZZo<'x]zůYVh[k9Β *ayxϞa g=C9|'vz|X 9FQbZy3l:E3ag+?!$?6V]`\Qn"m8g]Y$>^8m8WZk:cƜAo`G04^5r啻{y6Tir3W Unc3,2U JgO,, Ә06F-A'{jy~ܱ|V>7u+FZ79': :*ePKهI݁5y>wׅٹ^g# U[gӰW[ۇq"@(2ٿc~/vSAبR5M=_C^%!QU9}KxlQﴁΝ;+++??z5Ή(,W~Ϟ=GFe@=<,+wM4M޽MtHeh Qs4U1rai2P&NvVUUEͲN_q6GEF~ /+50SY(/ .-#Bޘ8?a1䎐YYɆ0H\0eCCq-tj+b dZc8 1GnRDA"Y6.RLkA2xIUv?v뻃pGxG`gwwweP̕EVq3WZ٫w6$.=7糳snN }#s8i}s6;!A ˋHwq6.>0k9~/W¿S~3ϿWwfVWYyAd ;<ʕpnYAFy{&mllq|ĉ`6 ׯO<C=g5{.xvQ"B"r(N="D9B4Z֍_ПlFO|c/˫3f38+:҈N>~v߳^ ]L-E̷cqxKwRVʆV m[7„s+e/S7tf[#'z~#OTS6m.a]Y_|`,~]k9y`S<0B`9(71D{9 0ۛi˗Gѹs8v0I)eQ~fLԳ{(l64Mڵk^o*xoџE4\!YVTU)Pg_z酢ȑ?__:?w5f7޼|ԩ2`Z[wn" ȅUootp3&C)ȕJ)k&%NQ?H2,r`e*FZr+ qw;]8Ne8/KF99 `ˤpg#RSwx|ƼPF@űl#nffܼ:?_a 5&8k#'u B49NaNFT" jfA:7`uW^Ї9oId8Bc2 ʈ#E`y i:旍h^w/'?p7|й1a|󕫟Steatk~_ e6hċ߼u}>t<7ykSM_9SO>?Fҕ+y^AWo\t+++W^MVU`ZBh4""OC޹s(VZ]]Mŋyҩ[Դ.q12@e zΟoToԚZ *;؋7&2<ԣ݂(9ʒoIAPkeG995Vk'oV*ghSJkm=$Is99'?>] HSbs*J)#R!BLڠ0i6+g'cQIv<, Jed Ac>_=F tQWYNcYNPo82ZVZw|mknזjVOzssՕ8y1浂!'Gl^Q<8W:/\がmU  3s ldz_e}qeV]XۡRb~nfC9wN^{k~'vNj5׋a߼)iUsyp$NM č1W^=uٳg_xoO|1[z( "z'Dn_wMJ kk'?e~leyQݻ WV|cO䜟8ڲG?TۻfNj \-b5.#GJJWUcGm fQ ӿ߱(8ArL*q0è*J!AZ' MAdP.D<;ȳs1o-[L*(echFb\SMHĸ" P5!@N(7s. IE(tup5q2"ן#Dlq/OY~b8,HoY͛7O8C(l6y^4Sbvv6'N;wʕ+z= B9(| "<b_g&(Ƶzǖ!d@)eY 'Y]F]u6aggY%0!qbV/ڹgq|I5IPssyFzR֐,g9M)&Bm\(jr?W{EsqΤ$qd4BbJj } ¡\@֢0EP~6R;.c., zV]LiX$1wYS CRN,/2/ǩ1AKVl>O~'2[Qz%DF`|m,L `Ͳlff u. ðq߿Sy70no X뗺9Шݙy>@xN bQjlo؆s{PKkwɵ7 +~MぷGCq'N|ӟ0ceY,g]XXN Oʲ|'\2R_x[FazÚt˯ąxvvV VhKpϢ)" gR GhA0Ί8Xzf)ӈI[aKO(S"d\{Bt{ j7z#aE5a1U C`v|\nk'(ʲR0RebqFLZIGaRW\LB$(T5*h`pJ=.EZsJgo 7eUe׾w; _ O]Xm5f@d2HZFU͌"EP󏶛s/{_jշ{iZ9s&c㡈t>sggg~~3m!aOQLR}(zǛ+W|,*JDVEVݞIӚҫqueYrUeF(vU8g2BqAڨF4G:8Q1@{R4C6CNkffgg[*KE1Ee e^m ƣ(YZT C!c#dyd$,ҕ*!Y-%CE઱0F@fzXrPLq6;0۪sP&fsf{UQȸ :ղ,(9/1ks&"~s}GU 9@[%ĢȉLRf6jZ;:8ܭ٧fzTwY#}<" Y]p!fZ cgXvwW^~1UeFNiK,ի'O꽆蝛^SW7nxL+kFAպp\timW==O58!i~4IÒ88f ,sZaa/y^*{LhXC&˃0(mԃ(*43n1.UY# +,h;60DD3w0AU={zf9,JEd 򼨌a.=BbYEnIF0dRZ=i'UFq),J(QR6<,S4RRPW0e( (IkdtBr\QD4x4 ED9BEUIl%g>3$Z}[>Ņg~&Il%!2@[q^K)vZ[/2ꌉҙmWeGd412m;Noy휳2c_ʕe{++g٭=KFRNo) _W^=sܜϓN=12Ʋ,G>2;;kT$I=k,u*=ι/!{*7 !jZ$dx8ZZ2ڄQȂֳSn,1B-9KBEaTk;M8JF]t& 4HS*ʳ[8gL@t̩Gy`uu9Eyb*l<.1Q)RJ~Aјkp4`8a{~kQݑ1#0'rUUQSa|p-Y &0D1:Ѭ%I0Ws;&&$$k deÁ=/=tK?4Faugkљc v"ι5A6)ty>{ Jj666-uYcyWUoV /`|HZR2/"L=Mh<"2Z@LH,{Ң1PVsn]yakOH93U95jq7n߭&)0iݒ ox(n _…0A(BdRQny}VRPU̲2 P޽us62C6 $ ߋywDfU@ ?R_UƂ1i%1ExuM[xCDƘeitJؘ}'}v1h4ܹtwGJ Nǯֆ& aНʑT&UeӸ*˲,UQeGlsf}7/^ƣl8N[;;ee뵤Y+4L97RIevLlފ|G던JΥyFxJ!`@RXgCW e9me.+b&502P֔JP#Qr(D&3by[XˣHUQ,hx>RLWA[^lorƸ΍T-lZxw(5!J1L8RVoգ;wϞ9,}SϖeXd^(Tɘ\_n2"3ټN1rZq僫W];w`)o\vG?G'u[7;/\ 쩨7S 1)u9")e+bee"f6UG:NUUKKKh\~Г?E>>v0ι$O OG1cF) t2- "-δgqf Zrs/ώsسVִZMUeVsh$`wWCZOcsffffff:c$!l4UEVMUY!qFc2%y\atӢ7+ѢLGlK"ZZۀJWh)@F(!X٪Pd)a8A )~9ЖΆlÑ qK~vfөXZf"Ȳ2Ǧ¸ѧ" Cq/A)3zZ[zG^}U!2nԝC78<8y朱ȷt;k=X"R[༼=+kmx'9"Q x?S~Q"3di-t#2=OF랿y>鳜S5o߾˗vsXYpi|il4OAQcӴl7|{ki.]+/f 3)Rĸbiٵ+Dv8\Yu:vzbm%IWe1j8ǣ,+rX"ȳ,ˢ(,@9bsNC30`@Raf:*/8=>,(k4,0"ld$yaUgop- # r,w?;̶*חv<9Tus۹խn% !x 3eƞg6!2$A(R|sr<]U}%1 {]ZZz׻LJ 0h)ŴZ$ |/b)6Wo(PC!Kv Gӥ+z]w9sF*pN)j!e6VJ[ۅbRf*!V^TLY(M5Ҡ㇃| Z].Qu] Zp.5c0F@iŒ>wn)b&Q5>E7v{{֖. q'MӕR-5:eYTۻ֍Fe֟ͼYil*c e5ΰٓ3x AfTŘle9BT.KUBhG BY7r׾T׽gg}A ۱˥8{c:6\##2!q+#<7$R1ZGq ZEQD(cL ^!D|b#nRmXy iOP@kFɉ a&ULE 7a€D®eim#I< yahu9AnsDh$5 JNٝ8<1\)Jym{*/]/9ŢmZ7HBR[f!@šɉɩnQ0։@N۶k\n]t,d!w5 %,ol6hޚ?T,Iήiܬ.@H)e1}smKNwյKp[ a2l}77}3+j(Z__9WxݶyF\x>Ji">{ΰed+֋1')ךJɩR$jmMMWC+WoLLG nsΞ;ň1;3uF1QaKőz)dsw Q81AM?RJ7/OAljebJqUyr\\.A c^F<KK(嚇Js:t1bGʵAo{^bRFh BV 2%4ky'LBEBCĽKEqE|ivL32 1)+2,-m7NsV֘1.1(l>L:[ֆiQ0RV|l8k}H&̓A[_wzD=`T|r ! 8^xtubtv~u04vOisvW?ғ6|I rqP,-\r`&ifYyz=1Χ,gF}BLMManޥ+ոpn/(m˲= []Xq|~ffP(S" ?~bJrjZK+;,ۢH?}_{{?~WGϙ~r91,Mo;( 44Bv B?h{I Y9;; V78tm5BmO$4mGzya\4(sa(J4<<=+WV;ȵlʀ DD S a]`#@9`n /DyN)+iX5K1F Hi VPS^4X[ 4/`V0dqYנQ6`vZ^\뎻s1RÂB%!Jb?Fs}s}eyeeyN:Nm~wt"5F+.tµn;MX*L%/]ODq e!#3B'~^yBJ+1nV#31Ѯzfo$onKMaٗȦjn=.PF1:xeٝvʕk'ӯ~٭z|0_(_pMNzo[vl>Y00x!ۭ~{iRɒ$ m;ʕRk ٔ`0r VFczJZ~++r`DDAZTɖ2'cc-]Y_w4<4=qec{ -4h4LfR9oF0# 8D&WHi>qHa-gR\4e PQ*Tev9;_k4Ngh mPVƍz}#/|1#.TݤY^7KR3ݾ+ZRa\vr۝L^+W(L;n|Z_x>ɉ?x'>N?\v\+i!GGGԠeB,s<!d!4ٻRh,--MMT+^KylFT]]] cM![p*d0-q "EZq}eR F0P&\v^tA1`L{?*Σ0yڍT abJZőZ9a$I)~BDIXZxZX. e5veIvc{}e\z +K/|iHgT2LvƳ_;2u`Wݼ&ڥeÕR}{?11q ئ:n. !0>o{?_|Sz}?.ϝ;{>-ґё|Oҋ^L=944RGHRFDBp%a50VJqIg } _og}:I4Mvi.]\*k㵡) A__Q2KAwR)E0„RJb傠>Q- $B(rPri:V\).dōv B2®W fI"a;̭TgC 1D{LxTOeAnW_{Ru쇷orЉ7 r0O͎H i f;v7/]XQ 2c}c?wۇG~ʌme䎻ᄒ$K OMVD(԰0fZ{)z= ; w%4zTZ zWJ:- 癟dl?^}ݽIjWOEDSJ_e49kF`^?w}Oɟ>W9Gog7_zB{W:wؑo?yׅWCIqS)Vj4VB LT(07rS_ʱc^{-e %[L5mom+/ ~L({ށ_nt L$#ijEϕr={`(֔$A%~G-`/oPH#4Hp3SekR)!Uf $glR!4avybnRssX"wpWT6v,ѣϞx}jMSIEd!kU{dC,XkR=M4VW2NY|DZY!+-ӌ8ϰW%%WaT:+0BB+5eVT}葇Wo,_ =G/tuƏ?o~ŗJv)x(1mN1J`GXkJKכTk/|.^J8xmZ3gZqÇ fTeBHC]\˴,3'~Fğ{^ijR"ZRƈ)RZp N1648n:aQiaps☍JCIHH$#\vZny^K8\DIA`L'F"!(M{6Bs0)ccŵى+K\Ns`9{!u̼cYٴ^m*Z\W+(F(t#TИmZ^;P|>l sf~?XC`W$T4"զ?Zg1;cOd7^E$l5D?aw!q3t(JҴT-&Q~ȑz}ض˯z׶^CZ(!>KN{yOz[n#ollV$\iB~lldrjVJ:rB"Pj$&X#_;ͰQ i ʘj˥vcuu}xh1&JeӦI2X]rPxMtZbU7^~#^;eG!0Q䮥BjAHHArM)S@is)Dq)_8|<֯ S,=,ERfq"hn!lJp4wPPڶmà V,8:SkO[gJۂ؎7T($Ihp}/h%N1U\6$Qe:j˅}ҍzM:&Ex0 dbV{kn6<[u{TA<z׻F?xx>s#uBo\9U؁2)m ԡa ǧSO}V:t0YցƦڵ0J\ʅ '5(B븶i7`W_;mR;\Ji,Ib%c,"˲-\L  Ah֫eߋz Brnw-fYՋaMsw5W_9SRhBhkAh 3 Le~kHv߿qjfV}݆ Ɲ1{um3 árQ0;ؠV1Q)ot=s9i+K%cu 8khR*Jeiv+7-n -=p $'J(Yo7uPGQ|7,^. Fy@J' w˔w;(iIgƣC1\Kr{JAd4*Hni^۟{`gFK13ӊtV1-K" 4qrA*ҹi~-}vD3f%EK-R1sxlAa KE%3R0JknkYv-:6SmadbD(JӔ PZS@HHIlj(MkvmR>dXΠߕIƋwߓxTfd88=2R)]M3}/hwjO|E#54>xNwdxT*:x@Jև߸q%'i><=;/+ׇ.T&C7 uj|}9\^: ,87sݲ! Ic+W.rN۱)Iz@iJI^x4 %(d L(At֘Rd IңCo-Cޟ/gm'$a0quqQvcaT[8cA&~yTii@(pnB\Z^j{3Ͻtk46-FG3w˸Q|/"kA:hmԇkZSH%%7ϝ\~%'% c&t$Q pRbHŕm8yduڔvAw6^%:\ɲ |J !;=`5W* 1 JRR+@Ȳ-F:NxuAo; vK V˴śV(hĵo6ח%Z^-훛>[>/;ܾrvX?|qDjږ]O)Xk &>$=]O ҡ̡v>3THNԘu,9jrJW ?B@##*Xg@ AvaxG!mߋuF"1Ɣ2f0=u:QVgVR̹8z(ZkKٹR:؀->0ogQdL=@&F RB+V#Xw N)t *&xc;ĉ:VbR.ry EҲ)fRbJe4ڡDHL(Llbױݢ{yк6]S1ĉP .Irc@qiv;la|'# ׫F:00bޝt>reXj!t\ϩl+uD=H'QB8?ni17V.|nmmveرrQa&;Fs7MB73:5B%ajlڍ_pruajRJcRZ+ IJ#L4HkE%@BFfxŀ>.dki-IV?vvp>A/$"LD,a#S Bf4Q|/HsE.)WMˊf3Ja#Ju֌V(uXk{yO <"U4Gj-sqΦ3~}K$'<(機{}3<66\x1Rʦfi'TwK۾ F(7 a(+M|Mke:Ax堵k{&7Nf-R42 W+4meh8T) ۶+yT-I$]1:39יo´Vm1X-G3^tuk^s/8vϕnʅ#I=w8>24Ϗ-?9Tųg{AW X?Vf(Bz4coS[=Xp}?:n啙H YG#D(T! *L FWdMU+$$F^r~>ukH \@8XpOw͎1)< }Fk޵S[nH(:qQ)(N UQɗ*IJ wRU T@% NL;!U0V]0#mmGk) YnIQ %#@8j5(%G;4tΌf?jtZ7Ttf'/nrū & т7k!Tȃ7:39Áe/\n.@]hi9JEv4E"Jaq?>}mX>)Jw;vcR;{lzXs ^Bobxl^i:ib3J#`2ul(oV.ũU+ڎ *0יXߺ3h C•+`;ʪ,k}#BH#Uq2eBf玱tr?o)W;K ?yܵAg7vv)˽wRB' \&x@@"I8>BP0&i ;RC/?{忰~MJ>pĕ7<}ڹ#D/ެp]jrm,w(sHb_ZE*W-Mb)G:MTu0@+ͣVʕذN>T;vGV&\HBi&!$_-3O2m}P3P 0zehZX'B9P*ՔA/8!O{/;8eZ]̋`} o Hk; ny![0B +4 1H"_{˭F+Ii?ݎӏ%SqjGVjիKmXa"8BRz, %kb1J&x;%BS@c!//{[ʙso՗^Dʼnn̔@04MӜS}O]%n.z?o~s_;]],].4F@g'WȾQHҭՁ3 F cRڋNEhm[͖T8,,J$4Ŵ+}^*|{65N܌HNݧO]`ot^ &Bu"ƀ08M0"RBhFX"4Y6'R-8$F/_x%n o=fk1^Z/ZS8y@+,y4ERRpRI)}zG:umB&rm촃÷)! 9uT2X} RjPhdIpFv)WlE\kB@ Z%-c-nޗ_s7~ﶯ=]s)wtVki$6`Fq(*CDA'C#6yd7) ɢ-??p,zp"ɟeAp;4J=̙}k5Hl*֚hV mc9;EX!J&I!Lcu 1r[e"$i1hD1ش, Έ>B1 ՉɉkwF& Hc2A{RFBGedX@5F $r;kO6koR[NkO|;qI!jc"@ rR@Tsx˿ɯֻ6B(gݼ}#3aPBuHWھô0ZB贒01dr)LKڮkba$ ``m -f h)k_p bܸCA3?O.)\1oUfcM!#jccI2\P$CqQ nSLqsj ~=pV~߃ߠۅZ ^^|y0\FGa~8z`l,eE V4DL7)!2iAklLZ1( u c1+1k΋7nmkfXp-fYZkJ2C(M9nnHZK(Ptܜ0H37T?:5=~~sd N7^0pCn}]01ƠJHע{"e롕CG׻ILO`ulz& KRB 4hР0a\"}sdO ) ()~w(8?d0 1`T1ưʕM`s)%N`2!SØ10KyR#7uʑ 񤷕“ـݲ-F+S9ZU bE?Ô7/ ####|Ni"N0\Yt "Kawqo|DŽ` &TK 5dy*U( R g_ةןzƊ|'s$`ʠ4Ht2 N' KEy:Yz]G:ǟ?V:zPn6kv L1B0-sdT$MZc4piY4P*V6וiĶJ~ĴmD ˀrsx|6nĒNh[Styc{nr<jR)2(㈙,ARm;De+v wH)~GOgSAb `a{~ǡӁ]'p ZovG`on{MaBIW_6maH8Z9+ O_hvNu|jB/Lᗿ|O^- ׭ Rռ ;_!ܠ2BQM Ul4dðkrq ʵUx&k^LӌѤDf2r )(DSA2 J#Ep)W.;:Z#Wg:ro;ùwLJH̘ovXy"+oq)AGGGrJ)06aDOyyj9醡%})E)oI枹x~U{?xmH~_I\Qsc]+0j57~\w[~,U*m"&R6ccFb3:^a02?;C@M~~HS_9XY]@hg0f0H. Z+ i@#PHi!D!` XDFew`Lbh%h}+T s)~ sE79U^;%1t"I*孙ZIwUgƐbp0҃VXiDuh"c Q.O{}P'LiZ2-R4y rE#Ŋn DrXG@- Ĺ&Z>g'oT cl]ۮ-RqzsH;6S|ѹr43 ZlL4BPw׋7Vm7~暿466Vp(@xE =t[n_놛+q)rpymuݠFsټ5B exQG`h|}}~ XZکԷ Pjwn;@!TL΄w9 ͍[^|Rǎn\6g%|p榇@Շs Qo$2cx}{t :--0Rm^$I5H!X[Hse04JFߟ=tK n33q)HcB(()IĂ4IH@D<_$aMY:wR^"rѷ2!x[@)r<7n J"JIuwcJ(VJI4 5@H(Y\?01u++%@SbV#{Cs{Ηb}쥍R#K-qpe41g%T!mQ߈fB8')0M015h  V|\ҫ\RƹyGQ׏Ja < >}N յv{ķmIo5Kյ+<6rȱ4F;S(If9j4ȴE,%cc^U peIA#63Z:P\%,Ca䧾bB], eRtZ|xAr4T I{~83w!AQLj!W?6%Ӯ.ō?17?gn܀{ ~'=}x(s `t>H0M8ww0{pЖ2R hA5ei8 JIũZ(^җέ}~QAFBhlã[$/snDQ#k2EOhpI\ufZ=IȠX \Jh45k%)T# +M$8d>Rq֮fn\ T7qPG .={cmueuceyU0C뗯=wApܕ_=m*:O'W_xQZ^02\s4Rb*)BH}rߋUxaQ`"k:PZ__\;[^]ҴLi~ ʱp̠A/_(a&Q,㔇ǧ_0,S &^o Mi(RBBl,[En7]{>Y(`0O~}#G_  v !v0灱K1֛~5\"|.ThD@J$<2lBJJ4LǖJjКVͭ#l͙}S'kO>Vp[R1H/,w[hy(O(W~[Zyh3$Hiм . 6 yؾCvE F vA ̶!?տzTut4D 0i2C~籷C6?…+W\] mۚo=4;12Vtr'ZSx뺘K8, t%;UZ$AjeZ2Rҵ4!J3mPur))D"l!huزM#v(F<PŔQjP V* rd`k;vsnhGJ"XRjkkEHaNZgR&awk3/L[ԠߌY- J‹/ٳp- ` > >G< P@ ,,aYDټs8X0% B()RRqF )@RK%AG}a0BjXi" I ^$#ȠZq/J'9%$xmG!])y_A?6W\灿ri2\b?0tMCAz-OG)0@v9cH)02FQۦ-DB(ˆH6>4Y-cj_zʋ/>0{O/Y&*z}?LNzs='MA3/^؄vK}|~qaCkU0sU,5'X9.S:w ( BQs lV KHCBPYI d6 KڶsXvsFSt[Le皭~^c:nRFmJ$F^v}48Zi4%KoN<:>鿑e?YG|p-1` Rm> ٿ~5m E+By#i\,hJJjVH!5B@pٗ۫W$ Z*}oucڕNakC"^]NOIsWZwϛ+ic"alKW) 5ZR!0iyB(Z  ðM7lJ[SSr'^b޵p\V=7[m˕6nJe{GN\bwG5-,gOևjW7,HLJQab{.nR(YI5D<1#T2* ( ?#*2UvZ[j4O";1* Ūa\7@5A0t|hawIƇ B%:66ϯM&zԭ: 7*f{elbYn~ r2W)s|+QO=_à5H .n.߇`w:X*h$A;;@\Hɤ$HL ۬1hDMuϱ.uo*0IGq0[^>hm灓LJG׶/]Z،ׯ/]4 ҅R˶e#HkˆֱJs Rg/\B aA(M}K͠$Z+Bv>ђ?eL_|W~ÿRˌY'tƇ?EP[ѩn?_e&Rvw@mZq(N\Kl3U##';׏4cn#Y-RPF/鉈'2.LC P4(04ȲLZBJVJR 4-M&AMf"$L6V#do:X_,$R7Hkkk;? ƠلO>N/2|CA>_2?P.ùsotn0^7@RR۱T t"DHH!LZfZIS?1=6xcaٯ}ʹ~,7ѵ&5mC[zP"kWVk*U}ԥϽp>8ז6PRG`Ul  ѢNtONiNzj5FI"L X ~s&^P)WNj58~/&ec,8FJ$$RJ DJevzpl[4NS-cBϯ9¹_{-P0Zhպlٶ]-ܲBC$od.'>uf)ǁ?s'(IG\ "0|  $;^ ik5lKS!QH%1DeD0 q7Zk'q Sx"Q"?on/6QU$*.AUEɠ)1"ugNeylwO=ҍ嚫0PHĨt EjV''G=dNސK*CW\>aGc??.VŕZ?";{;:ydW~{?~ 0kga kJV+e~b'tV7`Ls(n,T~+Rd SZ&A3ԖS*SI!b`D8b5Q{ZS1-)228H4ZQJa1qiZi`@)% [i%pt-iZ+[;gDY4-33e;JvNv̛@kpz~wu?7^ %` ,,G>?3πmm4>twcMfZ' #$pR.E,x6), 4i LJo )Zk[n!$'n)хJq>^/+ ",HX`B$Ch#V@ 1Z۾p|DjiaGHЊ;YZ[z}fG˯^z{ݏA-oƇwMo}p45w,\{~~&RSWwu#ar@e;sn}ej0[I&<ȒQʛ Y+WV~@(>P,g>7 a 'O½wç? 0,,@< )_Lрjl2B)B" A%1.$Ӱ7:=ӣ#=+(E Bho?8#߾qiis9øS@`բI]/ɔ:T#6 bR,41)Цn{V{˭ihJ#.;?|s:$h$OC߽T)HDke͗^3Ͻ=Nnf9'y{Vݳ% |-|YɁuu7-j2B 0,k/7Nu"ELt񹋉s҈d(iUR4[.sqBhs{4Y$P+e6Ѿ'UxZݑG+CGOE٫ n 4Noscsaxh_9,M.zҠѫzxY>Rv[''PFqP yqM{a7ҿKg57U Ta*HMVJTi @ F1 +C )SޏӭNEPz^aFņkdivcDy^D$C& 9 Q (@V H]D"ZJťZs.mCL@) dXz s( z]ܡ08yrusN I+:syh|J!صsuE"E3_zGy}ק ith1{b+} cضW7[++ DI\icAi&nDNQLSļ\kBXc3KCr9tj~BYki,fR0L1rP,!L8hl?;~$O5W vsMp>)ujJD2JIYsn"ƝFhAI ؙN]ePn#σRÓO5iR`Yp(`S?~7|CSEjox߬,1p]JQ]DF0I f0a2A(m}։c.zQڏ Nf.Vuu$#R fի\wҒkhi",`L6RR+!EF&q%HdEF^k-''.R4KJբM )N! 21ٿ^YpA2) ?ʵ/a_i7۝({vGtojҚ$_#OܳW>'-;'ZYYv\DF/@I+0 3:s^,"9rϙ DRH^46741eN'B˴~844lZQK5Pex3wCÉRVeⷖ {o_xy/ j3w/!B8N\ɴn9盛-./^L;d K]VWw~zf=P?;.|YIb)w̑xI_m tC`.t@ ++ o{[ǦqJIHiDat I1O8D2jQYɕeaj s$ ƒ N`bt \_)t/"BS`"љ~ux&_(WhA(&QLW̰@cl Bg \ƍ?xkJTdN؍ӵ@?%:o@0)W@>+6(ml=TC3 $}bz_}Rt` +67쥫I ihCF&='ש@(4xF1K"bFG54Wmo Bre4b ]miS랱ža~ca_țf$l``i$YW_8\R18h,ri,M-NS*vv?}!Ї}#q?D ~gXw߇;k@0{_%ԧ೟Mh݆Nz=<HSHAJ8|>'Qq:F6uH:)|);|vѨՊ@JR(P*y#GfS.N9yN_M/_giE? Y(6?C 7nm`YAC 6ZjA|cooa ;a|'|#4h!a cf30E0BD4R)$B4-r\ӶϗjCa£HrT*#KVeq. 'oԼp#ؐI=窶tFH`6dD(%'4B!ʻ<WJccJZ.8&hvItvtk 寞YoUkg?:>:db*Tn;Ccr{4 yׯrᢑw %(}ճ7ذiJiu0E#$M)3z_'"5{ݷ7{YJlnc$BOw~'.pH1_w q 2<(|zv\;N>$4@ L0+}@HťȤ)iaQhc1" A ai@z<3 $Mc8RƪV˭oŲ.YNk?!O+@ Ry04o;9<O~.\b\n4)LOû07^&o(OOAK` )(4EeJ(B 1)ŌbPF Q?c\ ׶4-7TJE0=։efT`(sH$J;ӀmdR0JOofaJs;g?ևGG=WV+墖I H"tBLr9/g)#w۴5=ZBJ2JN&2:Ͷ}lɉˍzl8E8E+uLw{!C1<_ݗ>LG&bڽkiPzlh$ PaR eV D9cRmVT1x÷WG`=9q¡L>4 kPS9YaAwҥFl?rhfv_:œ)AUn9zWG ׯ~M\o-M I% i*2't:B @Ef< <Rg!B^T.!B5cR BMdZ [~?<jm \SՇ=>xt~,LqP8d%Y3οab [ ' yNxqfXi*5$BEM7HYvTM͎F{i6c^2Hqקz^<;7&h7F'u0cCc'Rtu;21x3ƵkbAb\r~uW//ZX_~vޞۿ.`@ wG>05? 퐢oYO#+W߁Js>8<0|[޲K7?e:s]ϙӛtQŖ{7 ƦnnB7@ !$npئw-ɒ{^v}$%67$3i̬UYD!%ZDRJcD)-Ynq vk"݄KŐ!0Bf,J0pRPQ#J"%ѕ]UZ@9c+2YM2 @`L .¹Hnx FBJAO) ( c@ł/֞{tpP^+fGyyD /O>QǗUp(<?kր!p0vt~螸.6rp7ͿZ4Gv( Aձʅ04=mf4b\> @[եrp/RY\J1*h빎); n* 3+)r[j$ٗ1mP p)y#gDT)e#m FjB0B# HFбMm[~k0W9Ƣ eRJeE i~\pSLC,ꁾcӳk:JS+v>:6fH)0jon v$MvlncP: xZkX.Lŵ\L*vZaDjF> EUTe2ͩd:W1݀cXFWC.kp+y"\{jܳcDҷ003) 2*bK3?x`Oo*/tގnr%Ƃ TJ-Y,TT )lZsޝ߿d<0@FPk ({5?@ Υ@"`岟\ibID2/.T %:T ONH3>XU=zl&?ŚR- 5!z2OjzVbr]wdudhzno|M"fzxXAXQumO>_ѢSAe 4MNKּ.xŠT~>eV^(+_L*؝wj02F:3aLl 7{-_T r՚f)Bh,)p~C{tbd3I>jEȲ, >;Ӊj!0rP*$\s@1 TTP]y#Xòd a, Jk"yP36*D1H"~`Q&-;!ßB!/|ltn~׿p[ńpUo>BT=iIZ<26˅wuw<H`(2B߄>Y=t Rg? "<R!0?FFXw2[KXH" {4=|֮#B"uY['.lSw.jڻU+uz㦩}TETMWPKVvJ5=Ge{a>y|n}V?eB?#-p6#P.Ú5uAk벅Қ/A ?*_(;Nmq 0e,!1 ;yTQղapmlkZjx>L`"s1#""8!`R(.+ E8iM]vk3:5X!0[{P'fJUfK'ؾu]`BJylbZ6K+W\=e!ⲋnciaLoLG)@"ĉR}^Fj##0 خղ9s,RML:Xb WKTs:Y4gEKg0Fjm ?q#m-rr:?w('E\X^3c 0D 8Dsŕ>1BLǦV*vwvQ)s;:JJqnT ]v ~}.adH 0?yU_^|pl|ۍ'8T^ `]np)yBJ)4%8^uEQ5EuK3F.Yձ# c[2Qb+Xs\ّmU1`IP0UU1tש/3jvXFܖdav4f^υ)(I/c,[ !Y)msg _ݯ8~4۴aѣ#:6<immp%u{f~WtLE33:/]k[ˊ&=AXULcꑘmVJy3cX „%}!Hb5HlKٶ  |(λvk޿0[Y}ka)m¼TU]4'!J#=s3J4]]tto4/ǎF1iL zyfJ*囲ٍ۷ rkq֮Y!q`BP!p}?Psj)_mPH|9"y;g6VNR 8s=tjT)e0 `c!86Xoj?|r4;h$SAP"%m r.Abw i>a#njxp1\߷j9,=0,W#Lpa, zoq)"PU_ωE4m#GnfU*UT aP{:t 8P@5` ssN٥B4'ՙFy>zd9،Ga9" ДN\U[ CØǠ kf2Ҩ]Ჷ 7*yJ)FS%5X*PY_rx꧷PSܶWaSRaX{o"M$&'3c{&DTmx9j<ȷwveb@'N-@"tB4!"D0l|B\{1 D1c!D}_J)p)ob1A&8*J/ -WpgyU@{X"~ǁq=jam:7K (&T&UnYRսJpqς`)JXF)=! |HRZjnJmXꎻfزiEw+.x&_z\SUDtK[^?=4o."!@!b@YVO4mg3i)xiDɩzNB_ sVC'zD3:4eE6p\]o[;u1?;wmӳ]^t G#1$1Ly\S==m)TFLJ?>?>6>:%FWkѰSg򕧞gҳh#D4 VH H5=ulF%Q~qX*V"^kVw SKs]/l+M-f{ӛt衊RTc1=m͹lKBgqr=@<}=q-KbRD"jV+ťمD:TYX`STL$H̱x,]nm(kPO|Iryj?\.&dB}7,˵B떪a)lzҟ㜇@H2SdIH21 ڔ:t\ʕTzMok68B8t0װm.f/ũjuhfGsZ4$;mN̑c??~ !|M!cF2` 0G$U 8{VvGۻ;sGv|;BGK3s]MX aU;ڳTdq~~vbnLpS0 )0B6TntWqLMZtPVWP9U\RPHd5B\ח"wd8]f ƪt((f(PFTǵ%l,jukKdhF{E=B )0o; /, zD" s\m[Bp 5 4UU=!‡ )GȌ+xի:H4I 0"fԶ,`Y, 7DR+tD:~ek%#BDbдĐ=2[-5Wq$L%|_HAW(=US:]Rzjjjf|_}ûr1eɀFHGS^O,$>pij (%Պ1K%$AS;cm;w W2ē0uBn\z"bT,ڎLǣO "Ox )}>؁7\mEo[/u-.-O6sAĈj&t#"pFkWq@P(Vh"aJ[:uEZ >7=/VsmT7'&rm]/^  oAS:wyB( 0nYv:,ks[[2BsX*:ycwD,CJ$IjBimM47e1 m2 M%8tTE*PSD໅|1j}wѷ[;wePԝ{mbM͞]|X{MOγ%UT"^)aB0UWfx\0*Q=fgfFlW}aDr|'}z{>|r6_xE H82)E4B/XrȆ " :5{FTTAS:HEq]pѮ=3sڶj 4K Ku| ЈRMEcbKmZo U;R][Z8^(MCc1`ˁifZsN#XxZ9)\Q ȔSO/.Mfբ,#ňi xoz%r~jXW b*Q#J$n6RE?Ⱦcùq#jUP-+IshKGOTN=[qYY.pP#Ps!hdaaX cLJzX9J !UOxkKԕhHDb.5MQa.3|CRhkё][7?uO}mR1{~+/{NH4 |vF0)j#aCV`痢H0&ܱy5pK[w1DyqqjbTYb4۔.˞c[cٱxL׵cSӃSsz2f\-:0lNto O5u= (H(MXSBHD+3Kժzq&E04og:1/ꁰ9FMT_bqJc,5pf6Ξ}տѨ{o@ _de~vxtPfH<13J]CN0c ׭7L&<1_\u\0 ^e߇B~C_|(<EU㸔RsYoX> "95M!,aTlFK[s5+阑J'ªRNňUE Jtn5=]fԜ{}ŁZv[_ů港fG0PJsF8! ¤T \Pϭ:2tRޒ۱imL(wܮսwmMN蚮j`s|TJMFkKTc;8FW%ӫACLQq'ўs+<1y] 9GK> 9E %e~4JJ #|/ͪF{LU{\2xzÆgƝ̈y~<86m흞:t޺V|۶,/k&Vh)Ӱ̜ !XY(YA m`6weW\P5Q<<!4M3 $!1EQd-iu4"H4]?BjXѠFԌnRʑqJ +?p+/>:6zх'iy\S*Ʌ4]JIB+'\]e u!Z"TlW^X @1z7n}l7itnػ݇uCifTMq&츘#j5]Q Y`nݵ5w?zE[`5x @0R,$ TLmM)AD B0T8,v=lmqC3u\tvb"\kTX!EcaKD0 4mllȑhmmꎛzg{sk43o技FY`1I /Mx^0C5͈dIAssfrrrii)1;gD#bgNGa~~cx_|(dbٖ 7ou$&ت-F"&pp&% <8!1&uƈXHy UHŒ*(`htn~sި5tCWT4]cW5]jS3RY"^\~q9%R-DA0T*/r/ D":H)+$BX"$BgH !=b xFi،, 0&R!V`,1 / D)|~;/K&B\{|B^k xayT ] 8 B aD1(XQP0DC7*,Bs1F`aόDDRJ@J)8H K H 9p1`SR,/ 8r9ɜ0F<%f h4詫 \%) )\  @! cDE1Ecl3RJ&B $B!K R̘p]WQ RpN^6c$H)%"DABwUBJme4sJꫯ^vOS8$>uDݻ_maqjoddu/{=hX Ƹ`B6PD$,M e9aX"$ ہ 0B(!з (DLɯl!)Bp) &!!@p !g `!dj%H׉`2Ѥp\XŚP-ד(=;! `!$ k1IY3/ <#3I N*,?}}.yw_900p) 'C_O K333Wwb:?\gpU"O|m6x~a DP]$$ 1B `mRF % `EG|egVWR-\ѝT+l6||Pwo|c--)!$s9>;/}yS־5]?ֿ?!T ! )1 aB# KĥD(o=P閁L:NZ۲BaQ~0=;_myd!ה&U!ЉñXsW>1:U:q`D0p .*(V (m\p_.HGGG[[ !wuH"+vf30Ƈm{bbG}>V8pnrɦ̌c;3B*TӴD|B@"@s0I0>YBzI'miiڼ07%Xfʞ>ʾ^F͙0_R/"Df$fj*=mO~Θ!,C&)Fs.HDצ#f\%(QUE4B $"BL!{`$%{l*ed,H$>3537;C284Q(U<^Wѱ :WFbtS61=ߝ>[num{W:麡R1`c@M!3)%&!,i?KWFb\cXvad1v-ڵk~~__?33o#T*˲fff-v9/sÛ^ A`W >gʖ:kձIbyl}O}{ݲ LH`D8 < HW(Q"@[;՜kRtyn%390RTQc6cLūlߪl\{g{&91z`޾Q327tE[gB,jJgBQ( [fcLpd0]3Z}VM={St$HшoOzcǎ]v9cB]zFַ|RqFPǎ ={mmMr4UzmS6Bพ0ƙzsKG ]}&Lܲe>ߑuKS>? P|&D!\)#"&f"Z9*~nqżtR1HR/gSJնx$4-p188J\ngWRjl[}tp:RH(A$D3AsιD˳{!1Q@ [}Kv[A_+bg엀@r )V@^;7C .! yL&:;;[TaQT.䒾C^zYk<_RRBaCGgKGoǯHNqG_uO6=M=>Ї>9BiMR qBn)a;w"ҙL&mJٲݥ|9OLa5&'&Mb:6H>3=#toxh0MB%˱DU=llQJƂ_I0byHp U S8HG+23l;@(g[BTm $;V ivBH$T([(٬RUh4WK_\zuwww&g)!C>7cAa5 ;|z2| tWBߺsm\qrzvŊδjޅD$8(syػ/T $|L^8MBѶ-L%qHxİmq-rxt]crf,RRCtm .@S!|IAVaw @s ,YtacPT:r4۷MLL@&8qy 5щIMxmq g%!!UPBaQqmS*\ӕ-JM ϸS0@#J q7"*qٔH iEULQ7j,<74Mp>?_ΗS5*#C#cWjr!EVZ/JY 1!AJ8TQBp*g/-€3^8xoܸ1g p[V ]16??8!8zhg6RIj$źԞH0,b(^;s ,zJ7͗g|&\!Eد[8 \#B\k!IQ|V. ΃9NCUQX<6&,>?W ,w3srѨ/LMkB9>"@iq{\RJ !,0F! @ _TBr={D)ekkkA҇?X,}pt/(Ï;cj|U-+V"BuOOɬ!rqUQfZǫQ40s)$X $ & @Hp.X"ΰ^ uEhT )ӓ=Cb S{t `!N@ g6lA(XBj6K38;`1FR"!!`qBXpWa'J*BVc.^2μ|!x[k E8XjaBe[n\⾝EA׾o۳,d2JiZ}`Fcaa5gu[7inR]մmYO8.ځU+V8gj*I}0B19`,$BB&$$/44ێb[eb1/T@>_dn^۳uZ?6{!ojVDj@3UR,* Uff)B RJ0B ! c}9@*;!|+VXn]4 }PooL8L&鋄]wuc'xOg۵lCj(%jvuS.ܷ}(V .G;eI M6.Oߞƙ™sB($ƼU IsC#deE{r}6mݼ V l?19 v U~ݙ  : P)aL FrA|$cU}N $%#/ߛi7o,+>÷9}D׷o3m8~㲛W;gׁ{;6o}͗øim~ NL?|dK/ @K&J;wyN,YXXrozӛnS&c/\H*{.Bx:=)@kn]>#J~×*f);ۛ.ٵw-׭RH.4>YVu+W<>8Ecj:J`1B>#J, @BQ(HfHqi) }q)΃6%sJ"[|uѷyAӏBqfgg}kܷU;_n\SWidb4o{qbvڮ=E!δ̧vkwO]rɥǎ}w B! -su .)QD0D"H\",D.LOu.-F}|!IknW\CJ0jUhim-bi-X,T#` 1Iq)1FS3!&8p_$XeH /}/ĥ!ðyc_H+5_dq~7n'U9-Ov_ķſɿ_}ښy=֖R$a߿opppÆ ˕ 9g a1`@"<ĘK0%H$|j*ܔ8P `B*jO-Z̗.b`I֔NfU'3ϵ"cf{.#DTPy> wZ^(pgkڅ]ttr'h.EO<]aV[Wo~K]eS4X0({?yG$eYnFӌ8aÆބ(Aa`$*X( TJ1G4.XT3Tͨ=lQygHVNξ]lrvYSp[[-ew✝'FOXWZ$jTeGιcq|΄i/q?_DNvcߒFw'^uy;`B6xțnx UްT2\z4jl~퍯4 AXqlӌbq]ן|1F"Ct )I BE%)XIa;SM$ӑM\z33s-枞D̈7; YPiiN~VQ,:FzVuNXcdI! R1`>c,RXPT&_P \T>׮Tk]{\ꢝ qաg\kڹBVR11VUW BJ HQ( ?*5j8JΈ" ް y鈉#yanު֊C)nx+7vt<sY=R p@2NJ%_[ 7xBϔP%H (ؚ/D BR9N>11x쯿Օsϑhc|[AJP{KvELSxC#nYz{~#oojJAXES,aЅ`n8I"* A0cB,p&xH#pnRQh2Z^[hknӃrrY'dò`ر֖rݬiIRqt|7Ţȫw]w_޻wlx`jQ%DP!EH+xyƘ~^}?'Ps79z N?n6H$ZTY æiCR?~w>0o}ׯ l#IT"UUbGG{gg@b@ "a 9 HWXNݗQMrloX\,k̲,BYrݒm/ <EULdպku_TՉbTQՈv#[o??}ذm=ܲnhRJP$Gaxr;%anqrzWz'?XfK/JpryCGsΝ}>cBS}o 8ܲUemۂyzCUh~Qgv9N)e%p$HQ01gg!c0D@hTh^Z7h61 cawlKx2ھT(DMTe|a0"LuxNM/lsݛ#CO(*X s.H!N^?vb޿\o}-J\T(lٴ9looW&g~#KTL1 kW޺T*|1Nܮ"0lo~m\GFSSvhh0˾8Er/38 ȥ) B(]zФYI#J$T!XLhlKˆ;G#pu;lJwV:Sk9 [:hs@:H.pCdž~;>zH`m4UU 6@[f?~ӟm9!o:xu][/Wڡ={_~?s -"en?~xGOGTa+I^ZrˌKǏBž}Dd"qݕf1'=txp/. ttTӴo|#;5g$cs.Fz=ڎ57zLxnZb7>3;UN{~ZT}={E-+͝LsQ/EtQ'mKR_Q }ӎu䉱݇~Gcǎj׾k׮}z[^xB`P }?PU*jwtWp: $#{Td\x^b43[Z ) 2 NL78T 5c{zW&Vg Uœ^kNMYIana8vKqFT; 0p|3$h#oPL}~gl۲?&B{ߍT)O/}o>M¾m|B6l:d%W]7RtTFcbPUϦFdNUxn q8MRf )$]k}9$?㳽8㥟tr'{cGW%$X**8=G|szs0Vk"$?^u>\cONpmSwUs} k M+Wj|0gd3g <x~`{_qޅcD\$"X0z`eK{đcx|Պ(rtn-mM0ۛ' 4C➻wT5c$;[3 %F5ȵb +3E ,\!B1ORJ$2D&+W]qhrW^󎷼-7|rۮDŽp.Gԍ(գ"&.s r*䔵d¸첝3 Hdfzz 9ϋgR-Ʌfrxն.Uwbhtf0QŊ9cU I~̷,%;U&U4" ! a^nݓ0&Xvg?| oz?]zէ?Oioڦf^<фG\f˺m1@HPHs2z`|uo^:ÌtϹH&z$j3Z$@U ]Dl9o E!ɈQr*xXi|0373ר{Lwowuj@*RFo϶z~)R}+5#QB[tС㔢5==xhxqv $op D AfT!s&$y-akh_/̍?7|"?ݟ\۷zMols3\knя{]bE7(ny捛Uk7mo}rnBHYkU#B3"g-W-73 %rQVRTKjRmL:F[G&9Zs}NVq-V,n#זnc##XL⁾bR.0gn*Uͤ*N6lR0!%\d C 2~yRi8l0uι}7 ޱ{>/~O&1o#Jq|xA rx.s#Cz11 *=Q gLr_ eϊ}rv@缁F|?ˑGL2YN_=]0F+R?tX9-dzjK/ -+ؖ U*_:o1VeliQ?O-fWv\vnrW\?o+W;ow 'Tߤa\Sw\;@IP0@4,OtBp0\9?M7~oO$#.ՊF"lk6l Q27/ŏ|oxk9]+iwL.bES]SdT)LcJ1!ƥېȇAi1IBX 3PDgAg r'Z*ӓJsF K"I$j>;p @hXtϲgh`L@]'Jөhs_s__-}_ӴukozG1auvz?s_KN,n,eՆMܹ]z現ӽr?|5+~T2cL{7o%K&O;u#:F W4M4!uW)meO"IbsO,˻^y~fT*2i23+J.F5vb$ʪ)<8;oik7d<9|bXSCGP).nS0)B4@H @909,đ&?]G%H)Un= Z&|7lgQ_N 0ɂ"zA0 }cJw1>|ӗ~+n/.PJ皦?#]*)YmBp`g[RnFo;w־Ʒfı[vJ1B|??>|>:fDS 6P1HT!6qMxA3`7UfoO{SR7J&&GF,˲<7ՑG;:JP,]'ULrI)z0;=$0UP+DƘP,_Q DA3 ÝF& >{$L2& \7b!r/ :h蜘MIz;xյvۓt!f-B~O m>|Xђ=}ݎσH^[eGsEy`B*UJt`UϨFJ"b`pa Ha uM;LC 7%7UMQ0EP 78r8ӳ-̴m58Lb&Ԣ\TS{S\.[MR!zQ)K@ cA6\[CH* fѳγ >n{V[׾boêR_ʿ}zz*gO%??WX˵u+*; ظQ(a ڻ{]BOuRbJWzzCJ@ C 0N@RfSNm1EQ8z 200t6SjXerO7eGjS5FF"qe'5ڱ/jH/a#!k ]bPE8@5/~%svl}ğ!YLOzEX8cf$8;(J"njO{T#늪SJ_o=={ピ@)U4hM vJ|#RL`B1Bx)6~8%X%Tڲ Pcz,H+ְjX \z=Jt jmW˨1BVG/%\sʩ "ƊA4D,jQ!|;x_A;:*R;=OƣFڻj]~GsjݽTQMS%M@g(,v l>$"IyƘ>cH!HM3,T َ}tXnZ13=yRĪհ% |M%EDLT&-HV-f& 3ՒF5]}kg BMch.Fw wZ([7=zR..`Lb!??Rf$Ri۲>޷PkG7Hҩڻ8cgiR 1  0){sQRHι!F"cAAWOL֏ O@1΂\^V+HVۮ rmJkRaqsW)7o  x߲&JO,~ $I 銦 ׭ _@Bw.f4o5_pիǡr")϶3fRJEQ۝kHODO'3?P)u}! U( cc20PBSnQgBѰdZ] |^U[bc~vV7 JRejrУʼnzA&XP:FK CcfĦuR\+y/E@ h%C>s|:[0|g;yƸϕzEӿq9yι;O7G~_Y7s_K EUTe-_?os,abPFb8- )@0O3L!RJMMٖ\)_\s&%**W{kF{NoJ|غcG%w>?6bf IDATZh(jd UnLhR5م?ܜ6IB;.@x0GӲ@gxqx 2 P ٳQL&9;`}PyV9~:F8O}/>5ϻЪר;u_}#<,JڇGרB0&=ZFkA A&2.Lj a%p) /{7|'Ƈ KvV\u<۲Ggܑ'փ%}董coAĠDz SP dzQ бmkzVm^W)*WSgHt0~#~q&Ȇn莳?+Ɲ 262_]柫{4}k6UK?c4afx3rBLG ]gPjFb8p.H4`NG <$T!b$% &#D!D[5I8}w?:ԓr f}`Zeԇ!B'2ȺJ$`*.49o3d*r! ܲy]h=SQE:3zP੨iPUvs6: !Y Τj(-Ӡ$~RSyBP+ GT̳U]gE ]&0". c) S%kc$1$H $) 0 P5H%z7l|閎X.83 rd$#~*BըF&45Ew9:O@J,%JDQAJs9 ^sΪsuD/UB,^8wؘHB% lQ #dAy={tdhu93])VtUCԼ肭ŒT۹ȁs^_՝tM0GdB!!E8H@0q0uRyЈ/Te0@`fisҨUُ>vdMc zi1{\JEAs.B,`@&aL)aA`F+lVm;g֭#;1VkkK贑Lvqގcsf|3>Tt5LEL!ޣ ouOc`.\k}߷\wY]˵oP#47D0z zg*IӬLzVc/F ,OgBy7|`}_Cc~n}Y: ߼h]~سJWL4$kmRܴtF'PLlr| W׷_T} h^<*b!Dc>@ᄉQC&v8.&2[KJ%+I EHY Hr&v;&W}qF8 :G=g!jqeh 86FI5lgjGOx_`[mEx x;MZT!(13'>]\e /ϼua6׾ҩ =7WUw]FF~Kq6EфoڗܠS'!uWq@30HL‚))C! ^`+JlwcԨ5UF2^^z 13_m|k}{=5[zgѠ?ơvjkm&@v5R#7YuΉǰ틫ʸ|*>uZZzZ !"pwq@>Õ+sƧ>ViTͯfwSO'Of>TM?⹯l:GieFm*758K}{TyArC3AF"ìȣN6G ڸ ?Z[ z#D(_em]*f ?e|d2K/4fҘwf4qaFжxF.nvW9qax)zHeskEF+$VkO<;t@0Q#СJ-TX  ^^B-Rm?OfoVSݝ;yvmu8Ʌ_T?|+Mdzmm Ԡu Cr>y^67{8DvDH;Hư9vzEL LQ7둪Pߥӱa..u8g/T׫њi<(m'p{=p5.6Vg٬hкneKWbFJn/rx~p{z`>zR96$Ʈ ZJ*i-9gf+/jg@!ꕢ{}d>n^w?>ɨ#~S*-PQY@DD ֳwގy( ] +b- ʷ92ʖ-B٪V!*^I훗rn7N+u?@F@BvWҕ}ZI  v@q+93N/:C_x;}h<;IE^Y_8?>\XLJ`:J`<. 0Seҙiv i>-H(V$g}ײkr&9>߀<s? 3kl$X__+P"̀`rYa5r@(<;hB-m,MEW2ر< $,*=Sw -B)DP]@6ch.ob?04EemʑGHBRe8?7LO1PȢg[юUQ^gz*hG=Seepؑwo㗟7-]_h豨֏,J(=cu鯖/ODDiN]Tw܀o)Wo!sC; 0i1 = zfEv7*09 2" L)`^b^6fD&nHL1|gHm%<ot<֚|7E #m^T \Y}a;%19clb8 FciΏ3-*k.b򟜖㦒67j-Z:sgRiD?vmEq1Vf?-'ɧSU#ji:\x? 5\D%2[1h$8jǽ^o{{$ FyE+1bl`<:N^K`v. ;UG7>R>&7kű-3W]Z4b_7=npN0f&a ؘkˁQ-_qڴ겾Rj&ָ.e6$: w" u}&gv>Gt/<>zGR\q/ď?ͺWj~VZvkSgw~]bt u_Rp1~n}pcL9իZNMM`~~{K/yZ(Ҧܲ ޹xl"%TnqK5T`(v}*Ѵ2pHLs%Dgj&DH}0s`^*$FPbKq3WԔ])ԘTN 1֞h<*nw43 QgF+%s_XƯԿ;x~}_5NػwфMg fvrx:_~*67|GF; i>, @IRz;PKcLESSSǏ^cJ˧R8/oyi-£A;Kڠ뻣8 8(g|aU"DK5PٍIPDI]d/?3XDv56$V1aTj2J P#$)d_WGԣ܋(4^Dg8 *(Xw*RL-(L,GOaSW{õ^eiqZ~q#0TjڥgQTٽOqtth~|VTÕ\u">4'aș緮\wx}²ק[\NOOqj4+m!uǥ!佟|3f 4Ͽ18A@I+( &` *γ *f+s |d;  J|'J@FDfaddaET b/d}@B#MMH\2U[ѩ'I٪ v'= ňi>sd;D;4=yEUC|h=D+[O󠊪OYWF[#_9+x>پ0~hM-6NȮlo׽v6j6_+>Rݓ#Qq\NOOWUht:s{w{8~+_) 1xP1z{S:D QݐYfJeq6 ާz{h1aʔ` Шp?0 "$7B˃ZkzWRv[O/vJ&=@xE^qhh -ٕU;]`/W+8#Sܳv]oLMzzW.DVҚ+ƻ:sQ>N7 ,!Q9t9>[~sg>~V)7___oK*s{{{iNMM:3ZJRT(8;ΡC677Z ˻ !0jJ۫!̑0gADB6 %A =)AEQc5:8ߪijpgJ5;3;5>[a Qnhz*m}~eĉҕZ(!ؘPF ͵VjS:-^ǟC.|Q)5  *̵xs8vUݨZ5 ICVnm_ZAި靝kQ2a^@̂bVDȦxP2Moo `ǩRGQF_yo^LIZk]XX `aaɓZիeltqqqzzO>}…`[>ND:J*qq(<( *D@D"$AA8DA@ER@lҸUζ#XC+:S\^8.]ėBD>3 0  WlT*l9+{ES$z򤈦|׆uW}&*€̌zoak4DZkc+PfacEG:SsG#s.RoU$IVG9 GB1(DETﴒdk%$&JxYJ/c$^>LMM%Ih4~|D^#} VjFB);VlIӴVJ)O<'>~?"bYXX6ߙf(M%֐GBKV/ H@c #!HfF9XAVkhj#Q[/^XF`="uJQI+ 2h\Fv$jue"D*ղT+.sǾJhg/ء($<ϋkR}h0+fک#HލߢZ? }sssi?䓥⁈<[MsH졹M?<_[[G9zɓ'_|ORz}s>R^]]uݒ7}g)eFk.z]F ("HΒ H)QI`$bJWZj榧ffkHTd6h)h ȩӇ/ "DNҨE3"/V/,6ZRH7~h@F4k8r<B 3{A{j1L N?ZkgA$ \ݻVՅ֜2qbNޢ9'"eOQsss?xEg?.{{>lnn^pa4}sy~2pppg84 IXǎzR,%^`(DrBBBJ@رxD *ub8ۙdlҩ`Qbr&!m!RP.vJ"JotBH4 Zo3qy^iwgN]{ᐓҹ;_J{q.[ñgR` :Ӕ!j "T#bׯx{v6upnbMS#_η=(hl[nT$jT9KrWHӧOΞ:ujzz^#4ѣoC7Y>#A?{gnnɓq'I0}Iͧ>ÈOB%1t "FJf~tw9t}PDfAPIPFiĤ!b*B@$ABȁIꕔQ**298C©܊!@@m Ks "ȍ2i(M $e( @ dIV*zH[[;.G;pubVξTS. <V6NkZ2aۛ;Ф I@A(P#4a]O$Mkï|G=PH *B%ȻQQdH,df ~T!q3gΔI?ISeY$kɀRZxO~^z۾۾?2ul6^ZKYY۔{9@p" b#eI U)JJbH潉4tCIԑ 0{8޾Q\*]t'!EP@ ,+tR 6olmվvOV neddH:89}C+@\8 "I"(%JfHy_:N 7H2 t S/\XJnnٳi}/79"R?7Bh4333ec@ݮT*Y)fffN`J+ aޗP=Zdw6w_UR21&bXTF/@fb9FrK:B6A#Ql&&PԪy^"o@iB,J >x4nȀCD@oKC4$>|ȑcǎ-..U#?J覈Mz>wmٹ;0@y& ӧOO[[gv PXA`P)BB0[B͂h7.\0jVn/.Nϟ>5{QʗCk/lǑ.f?֊Pag{.DQBp<\]fhЇJ;Q*:ˬEIwZ:e@Fs@6 0I!99C PJT%$H&Jۭ|OzԑOOO9s̡EB޿)/o<=oLTY;;;|;_z'|gff!TeesZǯ^: )*s)@i0 4*Ai#A hƁ Ā jg;\j'T`8X[^[|+x4?rݮ%"",!0 RjjbFRY#s"DNxYUv{՛,t8ڇ*,DdJRMk{y(@ԨCI(V=A!"J! @ZyE$ VT*OC={ȑ#KKKoGJnr)k]"dQ9s#JS?S!ϷZ8Qk-"_ oKx<#d2@A8Y*W `(PL׫S* \6[OzxF5k;xJ8@X\^}«g! H!(TH%HF t%!e]=euUOVpvV777?Mrx}̜={^K%Yky"ZZZzSBxΞ=&JQn~mA$zGQ{_VKCjht…;ٳ'Mӧz'~'^ >[5#QTH!`0 aЌH50X-tiȍEkL+DZ*W|//펋C-..}0JBxSEѥp p6eAF,#ĊV3 H "RZAWXi bQd&N,jgf&DZ?ҽ9$n\ZF A)"_Uw D@RΓ%: bPLM#,|Ci1G8;W/z׽y/Z<Hi<6FGJbC6v3 .҈(>(<*F%[˄ cgA(pX0M|1 D8to["\rgg {sssgΜЄ^_1G|W74Ƙ<<;N>]J׋(st:F?񵵵Ǐ2!ׯ*-" K(8K !` ъʘQA9Ic4)]z2(Z4WW/$73f~if1TYLjڹ啑Qk"(\F<aBED=>8.GB$ RF+`kȆkڼkθ=!.H)@XfN=p`mizF"&U"'`PnPh<e]|cT 0';wnqq|RWWW_{Unnr&SGt:v裏Eqk3g8>rÇKͭ.booʕ+on >#8<!%wLO-LM ;A둞nV4Qiԕ$iH\#KҨ׮vÇi66 V~kϵO&S; # HWNBe@]$$@# qɲ'Bec3rctD|L:*v';>JhD@t"Q"J;w7+IAV $%3QH 07TߗxFΝ=sLӹpǸ5  ֒&{Z;;;z^vvv|===}U1G&|z4} QSܪoJ: dYVf R^T*ͧzjzzht,˦o֓]`UM@3QtO/m;Jw%rN3$&faäPXB2?̒v%n6F0p=fMc̷Z7/ ŕ!EfkӭgcG-x72!G5) l(p;uz. U;ׯfݐ9 JbDW) 5 B٥FkDWJqis;o}o {<$L[*/A[V*͡]D|gS~TojeA1 D D[EXDQWC֘⽽&+JHbO"BμABFq'Y;QihT+՘Z {}N,!f"bgb!ziPIa A< ls@ Vف# SՇ׾ `#*Ҋ].b1$&bcФ쉐|@etϕRJ;_`F_Soj 9ឃzӥmcߐ 2'Otp977WśnV9AA!&Ovgð7jZͤɎu rb ATĆ4NөQQ cB:ҩCSG8E|Jq!4$^ HPBHYFI$H$!'> *R*I!{իQJf5]._SJ`xNa,B#*_#|.@TD&EHPDU$E g̢^(7*cs7MwW&yM2\Roll{w}waTDnX!M㧘@`} Fv(a`imd!T7g-p˻}^/F$*ASA l('ET털B@H  dd&N+wG \iTB7H@4)Fr2YW""?g/N8qwagw5BLtSUιt:qc(ևuE{,{D!*  T3"0Jj{FsQL42{Á+Rr4(ob/w[;ȫ-gwnj8ooWw?L'6N7(kHmY@ JyHDF@` R ABAR^^~pj -$"hLbZ36*TMҤb4'MT,UHgqn`7AJ")Wcr@+,sgyfxwQxu$:wVOiCiB(~0e"FݽoJD6 %E+P ya\,câU1=.gB+D틀H 쎋~DڐV姞K@zʃr`ykf'!JcuHc. 00 kR$@v3^jFK?֑S~ktzuj4^8R+MI^)HtI*" 0xT !-okaof`Ba_""'QTX~~jbXȑ#GN>}Çf6Uؼa^^^) :[AYjjZVk4%owwwgggK zZ(BKh Jꝴ^<4Z82Xt]㍫ɑC @@)AH#hruQ ܸDE `kkNy\#ZV!K!A`OqQz)$)uBAb BJYPS-.KZzC9)v#)%C#"3E&^!@ĤU= ZQ-Uq `IHGl h|BfPƧt|"☒̌ogVdmAHhF)R^9 O?}/QO1h4G?я~]ٟ!@MtMЛϥ:B8q`RZommM'p%P >|n'AL{v Iq({=aj bD"PV(9 (HL"AE=YQ+$MWS]mITL`\?+B"PDY%Z_a*:8S 5c! ʘ;q]tnʺ"d)bVUJz J(/|*5^tIL:R, 6 HX"ڳHi{>m7lbmK1ʼRp@#o''@uCΜ9tرc&z}:(&݃e듿N[xU 2گ㹹9Dyᇿo1Qe<+1qKID^=E@ !0 /h4J0#9i̅" ^)v D!ZuTqJi&*aP؀pV!8@n~VRR pj* &@7$i8CB* d8fD!GpQjx#!Ay;D ITGBr"PTb% 0B DI B:>Dua,0b`n)b>z׃~gi؁>"8tXI WW?$ r]pa<O0&:[e@E$0bM儖 T:'.HQV]2etBe"H`.E֠tb`%TB\Ec_KPzXi mr(O} >x-$`3p;q1 XFJ!$Yyo/hcbınh8x= Fumb!B. En!3ILL uˮNCb\*xF+Q QZ?? 7B"tN>]=.R~fh||r0:p.3k/y\K !:uޗnp§?tPJ%򆮰XD"" 0 dda T@$҉R]2 c DB>$!~֮'5st:"3ڧ0 /}鉍/-Ch;D왙 Q,i]),J#̠VQ%Ou*ZڨE'Ot*nEE0yL!/bKxjXPRAiaaF$.) xBSNATE$5Bs!8Ō8pPT3f;cii^DĬ-=8wɍl4z8\__x`ff&˲pn-Y|R=q0<5 ݺc$"0a2/}`˵Ci+>1'# bi#C>P335ubvX3p/Ɠ˫6/N4D1k>A)LJTcQ0Lw~ +(D Ñח#Cǎzj&4x/rukT6{h>tԵ$ F1āăXx"J 8R7Ǡ9q> ( 儑RenҲoEDZ{󞯋 tpI$3ZEQLĹ?߰T[ѣ=4M$=.8β ^$&D}Ơtl(X :Kk?T51C8QUCkŦ*")Ȁ!hTřʱÝ\GZݾUm"Hq8vJt9K7!Fu9DJ#"HUN  =h=YHcC # (؇Zܞ:G͂+xk.+m/-]:a')$5a HL$$I\AJ†Yp  66/Fk]m*M/MTjzxٜnK[㡷.u 9eիWcعsn^ϲ H$IZu$&B(Y=`YZ "N8hXo[_wN4[yFgCǏn z"2 tB5ʼnc]mUִ4!0B7kf;ƊFCR(:[wI"v+YA۞L%Z#vP+wAAO8@Qapc@X E&L %Pp(r1.s F3(jbc//D<~ 'G&[t;dbddqD\__h6qOAK EQJeL.Q aׅ,B4D]XNl6rw.ӻVC+NgfgVkSgO6g[f !)2dxuHѵB77?uO,uB <Yg~7$.s@FU;|GqlP- >p\|Tl{@QR,;lU#(Y̓vԵл@.@QB%A UF &DzzrFZ+-V2m|A/_K(aF-Si(;vҥr뻻etEe9W"ݔ""|س^P, "jLB>ch(3̀^7oBb#j֜n:u&' eXPTqwyOS/};R՘.ld|x6 a!= EBQ9 3 9*t3#%:pPRʙݳOgƌX50QMMaيoW|}Z 2qfI $.8@…s"ƒ>3Ies4KĢ\EQT*(q3XTlcɎx 6ͲOriiŋȌ6}b81`:1p ۅ+ ABjDDPVHUF2/oCG_^uSTw?ߩID P EdL٬hD6խz=+fuJm[G}ǩ/lz~k٬D   2.(A$ =>}N'|EQHB#\Z7ړ8ԃD `&{X2, Hő " _`, ! `@iQsUpHC6qQ W0a ;C5!]ᛮ\J) r cǎ-//Jh4VWWy_Mlq^iI81QjBlv(qp{funfum5=>eZ1N}nm 鹻C[V;gW9Hnoug/mf'DwDZZ<03BHHJy1Kwgǟȇ]a+%tj5aZ iDƘ4I4dg63[W8C ^F<+D2QL :U $(#h# OEWtQw;$:~1f2nAg"EEQLKz}kkKkl6hffL0sNC.9rg*9PB'G@uj(v_˸[pd9ԟo$[ [ųWw٣6QHŢ#&( m^}xx^8ZMO14dT~v?3U;z&EdaAe"2Z`BbTB|iϸo3/Ν9\XHuJbNz#|>@UoBhćCЪ3UT#P)(Ლ )|JQ:VDsBٟDб;4 \v8&/ n@T c-RUoooommmnn:u(4MWVVި( n eC&E:ʭs~1NiR_XDžD 6^=z8C={e{n_kڗ h">4v]~5TF_:>zjk[ 8xg¹$P( (!0ivv00 @YuyMC3׿L҉(&MZsdqwUpުPP9{r]ĝ~>o$ 0X`P@yH1FD$ Ё-ov }]9dʼM2eDFrn~PA4-"0~_DfggY5rzx<.NJ<]EHx)AX+FMh~e&c08`R49HW6}莙;3;7~*@SPv_X/w[{%51[8~~qp wNvy?7UVGNjvGg A**; {vmn\x3{76*{mz0J(NČTkqarym^zq(ĻƷC蝂'xD!`"_SJ:7o2YkAW8t`%P)扨Ki[ksmnn+ʾkh4|ooosss+~MPf0B$,-1sو b<gE(RD@1Qpfs/]Ҩ蓇Ǐ4|7E>ݣ`+( Iҡ+89ul#y`3jqO]sC7q8Z{,,D şa=&&=1%+Pf _vx<0 ED@~DR!20NGQ$/̑Bwow0j7t񠰤Q;, _:f;}}u}V3ڻsLuϏ\XgܖG/t}WKRzSӧwKOouzH#lSO8BFSol f[ _\x/")EH#")XwHB}%RH%0)mcQi*(h@ LϷ ӍJ];v Q)@rt`O=ƃڢhh8RZb$ ofN켓h?JW)o|p5C~7XFˑYtp?WgCs&/nzf${6F+]C9ظ|asomk~\]֥5ʞ#/ qvY5"lYvy#f< eo#V=^_^/\9rdZlxe] 36J_lb.{LQcyW>"1w8!"Rγ(ff/Cˆ!D&e\gJ:ӝF3g0jR @S^|QzQ [dYKDH{>>{ǟ4/pw7#|9 y*'gH'@?z|qԮ5W}' Y/AA2kW~kڦox<C7`se4 C +J5 ZE\y~KSu]c1:Cu+DN׆D"H'5  9K'SYǞCR%8)f,U~@}RњJaֹJL(m'z%jf}k^r Jv $`ަG~ X޹g_|hih_| ln7-$st)ǮP=7:[X77+I_o7gt`mO<񱅙_nW=ha ʤB^..{ ґ%"v<uf☐X`<#iA B">  "@V$-V\Dѓ\'{qrno7Һ 77[Ë~;?ǟ5*ޣQ9ت6{;YL >ۉ #4ۥ GZ=?կtᅭVuG:|D)ʳd59"RRg18SJYk|MS?|枓ŹCWVCiayOqzZob^VL l<B&E ca%(2ȼ`T,2 s'wWz_{9~І 虬E!R۵];*Ld\jp,@".+m@ѳǀC@;tL!Xgs6nV;w|x~gFfBjzfFc"wvcr1lZv_g~zWkiF|!S}1EQO*s#_ەe*xƻaFZȗ|ꓟ W(MI,,}z#Y6 @LXN.(G%l;&M~OS+/ )NCp.0e-XFN2P#rNkiZyٕ] 뛽lj,L򚾰:W90Bh|:RD) XQiC` BC0yp<Px[HA"|7W?ǿuli!V`w^K-M- jwCsuy=q{?sHGh<=լ*H*m]ao@DV+,fF ܿ{$4tZ欿7?vɿ~3B9`v d9ʅjPw5/^~慍g^L+ިwh8u_ርqXO{3cE(f<{v(BEqXv%̵CE<ϿΐTl)skiO7k+OT>tgd,e`VtödUZQ氰qb:h8E_$f= x?^nMcA^z֝gOOO5v6ӭ/}1lL=PdX;{={_~ꅽF%ׅؑP2/i\1$m ,k=ku> 8L>M(0ٟJ05uܽ'/NQh]X޻p}?G/pc(c}Ⱦ{yc)e뵲]e8 =^YSR$VjO~ys6aH+Z7/@سV3hR.grlA0<["R`%x+IrpՕ̻ݱtxn[pV[%qV-r`PO9<1kW[)N?O/P<RΡ-Qfz[C6ehT ",mG d]f/7}w(q28ȋ!" $OVPP1ܺŏ^ >Í>w,_Z߱ ;U8Wt+W{N;g7Wk6Eߍx5DiA F! }A-J)g3yG.EFҔ귂41@o]#ao!`bZ0yݻJUڈ @Y8xy$\\#֦JBy ΖsYjsDT0Bг@s@dR8y\4e> acԢ 0BF 0JQ@B1JZP'Xk=$rJuq`tD9f PTy[Y_*ehuJ;vvgN~TĈ]L+]cEP0d*8NWmZG'SLu8Hc20u7^(g1\Y:5b>3OwF ^~cB!@BtҊQ2mױl&Fx#~\Ƚ'GˌXX鱑j! #ZY<=3 CFQ!!eZ, Ā_s'\h;o>~Wۊj-QEa)9''Sɻ4UFo#MQ;73fQZ&ٹW$$4bk_[nXH2r80Zi2.콳VPl{##Uh"*#)!dyl$C/d̵xҫ0:2AI2bnc1fq(c]A߷@[_e_v' '϶zX`NB϶`mG#zs>;M*c⸝dLsڨ$Z_6H9QSRLSjY$ 4mrʼn^bnb\ܽwT;vґ Bp@xGX3x:n'ry׉^Y[gFMX\1Z:9atM3Bn6<[âs{/zγqnd{~}-mlDFm-Fcَ! zݹ[ّёe 70aӠ\m(Q,Ne~{J6=~fr:GW 1mPd G2bijaN2FFe@ RZ\ɖ*Yߓi GH@&`)ʐ$@ȶ2aCг;n{wYO`("Lul'WW*%emaٞ/^}32iZ|D1u0N 0F0Ml/>J[}"~x3PB`al|\Kيj$QH؎'NF*aA( j2oyu4j@0> v@J |雏?Oz]r s##{'cg7?0~㮱j ?;}|\vټVls6h"FZAa^4;/ Ԥǿs.5]B6ѬeGw,RB `R@Ep۶<@(r;fnl872%67JI7TAׂCRPPNN- ^>G4P*G8c>196j3&(K!hF tIiEa%QFmr!e̱E)]wõ;4q}gS3Γ$K 8g;Cds9˱=ߧ$`2Lf <} цը@yE0,i>``^22+z}MخFhl@F5 >0εB!C|b #8Lfs}uF !@SO[-fճ#"#Dx7+gɑ\PbVG*-I+L];_2NI$@ "nP"~D `,ĵZ{oes#Up]0Lls^u8P s3Z6xD0fP A"A:I% 8WcT(Tqa=6b qI 0E(c"/SRN-Sm3b[wTQ˄ik+awũYRM۽:l>d{GiynzXyP)UI7\$n3 Ɔ"Ue2^/_l_g/=/b-[-l`nܮ7jT*|NX6FkJzCnhUӔ)_f|)hDT.a;uͿ4i)r0 t˺Ѐ@.Z䢢Iu jѤqյ'V7$|ti #V Ռ(ܑ "%dEr@ x~ Je4ΗAh$0X#FR]vƱq(rv<S`3hnqkc3<6 4 N)J#g46IZs0=;<`q\Nw:2l֥Yo]j K㰻cnfΝZXl6N?&$Z)@Pxyz/b4 Pf`e㕭g*MZv?3Ci2Ex=+K8:f' qI/FiDxfڐ tL1U&o˵vCA0MSkDKMHRim6ͭu)cLIFQJI}mXRKXRyTld(;a?Z-$Tn+4(AVvHÛ=\j730xH0\X'vڜc1hT'NoؙHBPv8ZpG f2y1ةcGFչ=;Pq(JQj ݁-_TaIhbE-+5ri3XytY u3;QO=|)u flw39@5[h3bKi2jZ5Y ٞl)}ӄN0@fT|fFI$7X5H~fLgʫ.zDj ۾9x~ 0 HERYLFÁ"DHƉLa.U u˲/mB0k;ya0a\$:hu^NE4i|:h6\qT 7xYjKy1j;B'!Ҙlek A0? A8OȃzA)MU୥#+G?@ӐA\12R-eJ=;Wʝ'#򫣱n9_86s&KmD%20A#2B%: 4Iq?{G6ZRӫ0HrȅpCږ\۵#ܩdmHd9+2ԍRcwr'2D>g (15%T#%JGq8Sѱj bXTz W@6͍vL4S- yb{K рQBb V sܛ΅y^N oe_oyzkg7#9VN6nz/XzПՉ)r/m&yqx^p"$&A˂(Je&DXA7,ݫ {Gj}y7LFຮc;1~MXvDй+o?덎2 ^ĘepT Bm3r}:3ŵ8M5Sa;ܲRJHW֖NofDƶcgr-ZE>gY;_љ)A N~dZCmaq[Iz.Pqd[N2 A'2m"0R yl9-b^e\d= N, 85@܌LhAhK~iRkxOxYHS3YGh]B-X˥3+Fٙ0r]O(%%R&Ĩ ChR2F ^bbbrr>{Fg!ǻZgs#ymhGAk//''&Zw0n7nݗ8~r\b+EnaIJ7(z<rV<;TRR?%JkU'A3PV{q3hXxc ^p Rn~w}=w b|*Wjՙ1b">}ףyF~wW?wri JJq~Ajк6le"A-axrb x琞i֓QC ]4c cp" d|ko}k%7k?qߵEYeZ.:NR$iF+f}};N.Lg~* qDIR되~h 8`M(L)c@ Z!Fh(SѠYLԆu]y\,Fuy ivYNި@edrh2i Qe۾g1+sYf%szCo}w'Z6l&.pFHt"0 Lg-6i}?ow.FQ<£nRV_=S`M]drZ޳_' 47Q_;o{;Ta (cF)Qi ۝0452%Pq2^omQDױJ+c@K{ӊdNmfg9kr]wl3R,%j-B][,K%{(e+\l]afVz"u"!$cZNhU3:5@ R[Q?L 2Qı㸍$@MLb C@4TlFn+e i"UIR$1vkY̶J(Yw ͋Xzxz3`Y4e( 7w[1BA_Iek9"è$Sc\8s6Ԝ ivdBaQk\rSco?cW^2>jd尹)]YH]O߻,y3/:9_/LM$hRUoo49ǵ9f*9Z"Wb HCF*퀦 ҌuP)Z(G3x6/GJ KɉOOd ovuyy}y3NuUIҋMHC-B\~u#33O{!NTj°Q`y9Mvl-d,n3kzd2 ^G Vqa "dEiL)\.P2AJptNjch5Ζ&&sz߈^wc|t2oYH?H\_t{qF~Xs]/qjTB^DYbQ۪w.ZQnx s˞H9M,/fsPΨf ;^y՟uŤai!Af}}V7x8L5:d2nnnNS-!PɍW\XBiũ ` F>W꭯3K3n2쌛R9??[A8k᳓#y[+hL heJ:j,hnrNo-S~[2W%䁝iP ;w|ˏ?qرۗ?w;>餒J0! ISQ/9#!m6o/T n8 a+6a;\\kώ #r+YA m8{2׿>8#gT=?gO(*H EFkF*Tgccecc( Xq_3;$8ޔ<!+8AӦ^,asxVP ;+,(Xկ-@0h]s)ssS,EhySCߺV}3>ksfY϶8qq&ƪy}HuIԳ njĸj]:t~'fp'\7(?aӆa'A*1(SC=fntMz1DFj'KZl,e7% Lr{'+MM)P䭘Dg\ _{_̧SLjx p".H"Ҏ-;_(,+Mfbכ+ow 2m;g@3pe)}CYi(0a7w^(4M]N):j(!Xݐj&1޿ okyP-9;li2b@KȁKh[k.cR90r-TĈVXxm F("_(̯<5le|$+ؖeق1N%rz[Ǟ>p9KD|6I/ AR!hww'r߾bn-..? rsaoޫg6;3,Z[=Q`nY1Q'(&j'ٵMMQ ;!`XO* xƞ庉6$6⩢iB $tURX6щ6{V:._|g~oz=99(*eSkˍ@qt`%WXV*b-hCP?*}PNOmm|PxJZk]T&*DXٮ'jZv3+/;8:s)Ǟlt׭{YmP4jiR)4)+[hcA7 e /jr+Y<}rssK.!vHzY;@KpeafYljnndrj/Jc38L0"n _œO<|ldjvI aóeIϖ!D4O~?74͕~96sp}m-t|_5Dh0ۼ.J@  |qbb׍{Wߌ;:V+闊}5DOR IJ}Dԕ꽧ήsÉkma05>͖Y]7o@jE$-B;WN<7Ahrl nAN@i J0 Ne?Un1! Vơ>MJp*5;;13;:1Cgs[NB62λV&',e~YmPDQ=BA4k@.!HDPĶ xc~FK0N[疖!i:"Z )CB)w1ő*AE2[X a8P@jhSr"d]}/4kW&jq<[J .$t{>lV[z{vZ<&񹍺-]se^}c۾#%P aDD)=IN~z.^I*}_}sG$2'0??;$:S̖2IB'ȩ7M07Y+nvSfU)n??JCfJ>pɁl&c~ǹ'qW6'N-?xoGYS %S(eڶoƫtV8űQ7VU/i3'OMp ;m2VY+|:vpUsL2 RTD˗&:x2rC@R%A?\v^g2]wn A{ *Sv-n~T$, IX(m&I I+[Nmh e̲l7lҘ4rl6e1-l %e\3E +K%{ġT2=窒mn۝v<XI?#ܬmY^\<;Lb}}T,/?=|$JD[6+30(9O܃ٿ|޻ϳZTIÇ(.v]:|G?qv>xUWeG}HFCCz9:4Asb|G"`?m{;L.JS%o+1"r0Vsrrj`̂~FEQ2߲vF֌o|kÏ7TD'QA al+wİwSkZ۲Zo\lD)!"KKKv]QLVYY杬5k.WsdjPF@@B5S J D3p zbZv/X9!d;/OlMi"S̭l3@*d⤧8-"8g(NE3QrV~ $Iޱ=w> ձJj!ַߐfPO}k_>;[Z٨+JJ4]*KaP $wrK/֖49K&jðL=_a3m+Ո{˕8vr&;gaWd&E *RUTL&ՒcQ6d4[,M4ѮeH)uLU;qa=G@olևxت}nη4l`ٙ<*~[oݿ{syyqi e ho~œ *09#JDzF󟽛P$YeǿwlQu@${RQrgʅ(R%G&\'F\N%e=!E@DbO b!A053S*uts9c/TK{`9mv,Ep\DjqƁ͆k[ `V3'śͬo{׻o韴8>ST{SwesLy.w8TaVg{BiMڷq܋:-G\.e`5Fj:A:O9L];"__s'NdsXݡ)~@;RqCOʠAB-[|A9V#s?#sF4gN[]eqRq Q8k2BCSs  bxC@h 1ޮ5o;$ճI*1mRiQˆj;N{۶cK!A PmE;r #S7=?k@x^1 7:5(!R !5q3FTlxFSDZ*#Q+e$!HȶL'Pbe#fwGO$mgPNcQ+42a;Ի`0 PJfNp*&TLB]KB%y'>IN˶0,;llǎ(-0#N7=ZiCg /FUhY^oO>  HbҀcjq+<7*eJ(Eڭ_'Osk ӳc/h7S4K^MOZ$#X:NlW7R@y"SfFڳm5c82ώzaffZqIz 99FQz qiv[ 3$'T3ǟğ66*\ѩoxl3vA@X>Gtys? t[AiAS !a:('V(q @G P xv8an!2/-m/8TF!C R`aݹ09Z;udgi{r[؍vs56^ ArF2?$*IJDہ$Rq3vl.J c(Ɂbo;md;vFsj#G?\׳wCO{_.z [¶ (CBm5>\VF_oG)N3trQ"eQϝ|z`ZkbcJ!5@5hFil D%IGì;rXZ^[5jAQqw:nj@6w_2NC=j<7;;6zQh(ڷwL$mB90:#,S'>i41猻8 D='cO*8 !(RIEj( z]6:  Ymp @ v;>= oo͖MEg][iSHJLJTiԤF+F+fJRDvCA7ɕ 8W}iKӝW>UX:aTrbC55=Ҿ֟P?w)?8ݭFIV}٥r}ni$Nm;vfBPaܹoT?wұGJ̠G6w05/~N#g:=wvivD+MGՉse] º+I7#cn/TdRixɠ],d1uTƫ@DYҭ/cNo|69271:EQ8 'tp\r!N4i|2^Tu c 5y~ӷ{ѯE(%L*cK--*RB0g#ݱkR l^}߸$QµL.x @EPhb4mh jƉWwD NHQjh` 10PQ4'Nܽj[8FB){〔f S(%QZ[͌9nƠF !%dTigchMWG2 >!P{Ta`SGz@z=z[s, lԜrPFd() c+gڭ (Is䲟2E Zk-JymOe<u"B׶s E q VU(e48QKcKK&O=x%??vneX.(>DR:nR˨b4^@2+332qVh( F hw}冫/Y8rGOa~ruرCGN~/(-V(~h R.An"S2 ăW3i>O)MT-7ݷ~8tɩPٵP(Zf8h-t.( i@3 p(i HWKjW-Zo$,OVu=|<&=黼I٨z0CrDi4h5%T+M ~ #D~P0)-:#2r)wAm ',ISiDF)C7ܰp(1ĘضH@&+k[ΖJT)[B N陕ڷ66[Z01?kd`1H,7C|n{f+ðu{AKW gvZŔrTƁziA/^YZBD uycLFWN* j@-qu|Iȗ򖓡*xAS_@=}R AT!A6gH@v{~虭tШaʙ,RȈRC-04 2WyEBLKAmCdcuɥ G뭥%鹹ZO7%DZ5c?Af4_U2BhcAb>Q :jŹl_.'?~SҤyq^Zg_m$F&I ^sȡrKi™)<ۏ zjФ!f͍%k\z`69w\v҃\<^3w7ʦܬoBmPSoԡ@XX0:qPT1R3EevsYN r a=O1!*F7ػo hA[4 |K#6ȧC{aC(5h!h4P΍T`3l(fs&p~2rֶ"!EJ8@@ DPOy緾ՅxH2 0b'N;Vk$&閷%AhQmF廣5WAǦTq,0U! Q* l4oZ6g&@~# z̄Lo>|zzMLM(ۤڀdH!Fq"2̞] uɑ`x W>G;13=K?|Ç'뷳^\[OG*elZ6SdjTQJIKll5N*{A~i9%ûiBP)[6 <4IYz>㔱4MPC,5DQ\wbao;gl@)۞wo/p^X88Eahps6 B-~C?j jAyGN'ԒA p]??WxȦ8}۶2pV&L8`FuAm\YAH)$`4hOo,L5A]O\DLiS|ǂAw_T%µ\΍T iZe]~ub7ط{G/i7bquumttlΝ7ЁmB~²8 l*V O(goc33gW(ַo8cgF[>Y6ZuL3TpG&~j ItT._*G@DBsn -vtR/6tS *a /-TJP)#$n&˯~ W]w}mll:~-ӴqTwzJkyǶ,is>y)=T%΋YJkڎb%[jʿ/W_§jLR0-ϏgޛAP @;Nul2#hDKc@dllΝS.!~` V&KBp1sfgOqmi;y#2v'!)-a~xF7V qT"[O;[He|Uq|֮AF$j4^( h Jf41L3哸?gTA]X_\Zr_KsJl?SjYvbmcg3;N8#-_vcϷl?3g<>~PG,UN->Үms c\v6-rYe.Z%zqj {ttt6҄]t_ơiUcb.,*I ^Sr?0={w?#qRh{OnyDO>N.ZFuɗlh֚N3[z e RsJE0hR1>4aLvbaatu8i.'vP+O=/~ڰXK#VŅRAɱ`1D,d4Vccn'viG"s2Iul'SSf^,^=f`9]  m?Gm6~_Vdf{#OBcLpQI2;7zQO)Uh\5婉~DAk6&T 4ö0A40lF2BCo>q,)#D@JIqA#\;QIBeٻ~vŵ760=<-ՉänntnHMv *dq)L am"(3l6 c PC R#Owz򪑡693b$[*Qq"7҇GXksxdaLg[+mC; $6"Ckg]RFvr7F~PZghhpv;ڪ(ȋA('/l;zAX,#UBA̞(ڛe#Zٓw?$#ccsW2q-X9e$D[B#wR% a׼㝇~dU>71;zxC>gCmDЈFz# KC:E 1*AܗJƠeیY:1P+=Y(?uc3;T ex!inԶʹק8܁P+4M`Lv+d|HC050Q>vtYk"hD)Zڐ-d`VԨ4N:M"8i ϼ^+ILU+rArn9S)AKe{o=4z`mlZAE,Ɔ1028+]<مFö\BYd|B `mnrLrr "UʹLJ\F$8Zl5ڶNyEɣY)e%3O=60|M7wGN'N8HNg/5{vUZQh5sOx&o[ݞ)Wx{n*t2ʕw\z@&|TpVJ0ќ8aptSFGO  r@P8\"@(fɽ[%A5;4&Qۭo 6kA@ )UZ#T)T\CqE(%:RttR kHDM)Qۉaې+ Aj|*!*Ŧ܍7u]OK;0 NYN3sb &Νh]6V㹹B~2 {vjka<:JR;whv^V-ʀ%\j𡭇^`(Qcu.!\;r'O~8ϾJo|+_F{1ZN(9peQ!ӧ( c[WK/s>:VU˖+69PfVh9Gյ=\seittIb i4#%"V*9B2ч$(DJNR  ˲l2("ef' #9~~W?}PEjhX1As+բz]u:*X4Aʩ%E L)B ,=\H4R A&f&3;g>o@@ 2  Pՙ|6¤լ-7C'O:> 44G,-֛͗Zf_.ed##ka, 6~aIA_FE(g: 'YWC> `(  Z灈#>/7'x{{{oQJe O~3>_,VGw4j[VٳkW_Ӈ>s2nGk +k>s}3]/MRcF /O|wxwȑ;%jN(2LAd% ҔRk[nyC9D4`Rm!D %g(C Z+(IO?쮹/I"1Z(jFoc3Ah89s-vJ)!1FJ8v8F<Шf|zv&kw>Qo%[C^(X%񭻮Z#SEp FHB'_?5Ę4ژR/j-Wa,{SSS^~t;gMώ]'FȉSkgAq?}J+V gB%JI;VcKZl^)qA:{~wuÃ~Q˥?{N\h6jAH,~O?Ź`Tt} }臮%Z^Y=OJ˞spU篿J ^! Q߻Wֿr7S"a Qx~V$#4)g?_zicRJhc4BpB41J+ ⹊HLW*wgc 3ɓ&y/zp1sbip#QM$I"'$*516>{9zxTT@հ@8ZM BN}fhv-l-媅u rQAW؈\'r"?=5>h7A_m_}vǞ-Gs+zW#LS$?l2Dx $:^9^~#{:>wp?􁷿KKid386|zzV5ݻ\y[Lkw|Y"u{MZ*;a꺹j9_|[SJ;x}qne}Ϝ#oٷ+T*)ũQk?COE 5M~14!(PB4Lzߕ}ɧ4ذRqDL(KXh!.5<J.DW\Cmkk\򮕟(:~hl?B|xwj526e.!E@q(PRo{N[ǖ65 ae!P@A8С^!e T !˕n|Zyt`k-]zwzg+&V^Z=2+\RbRSvT471My3ckem^担|>?g8zv\>wTZ$ VudΌ{nUɹW+]w`pl\=#H6Fk lW~'&+_p9@R8 E 3cLOD8)J+f4QztjLUhc !6Tm3&UȀΎWVg܌8rX*r&R %9_($}A42N|23J6ݖaB$sգO̶s~pV ׵O#0CM*!0 @Tr5* ;鏼w?b!wfim2sgMN//[ؿ|"ЩjdtԦadѱoWɵ(vXg'F'(jEڝyڌ?=onB/!JSq۝$;R136_m0bunDsG[Ǐ*eJRdb4Z*ieAA7drup?Z&PBbc )c,J~E$$ECT1:M[VH 5e IN9Z)QCQ^ZNSP!]&査6aYC+%&3]hmDQs(8i $N #~xc/oA , hB)J9.5'i*IJ(% !@l v?qڙH5 {sK\q~qG&wMA+' ˽v:}]s?;)W&wdխFs}uˤ{~{_ڗ?vv+cKVuw1wvc3I48Yeg?=?zre6<\{wLNL*7k`ڶCi>DMAr, @z?ՏOPKЌ Iw[.d&MRf[)Zk#2C(mۄR@F$z8 ) -R ەc',a XCƨ|z~>ŸM#m P#R c}RH , (EqNcERX1J\!49I:#N3X?s2>fMYp=ɉoxG_{9IDvu&w6:2eDju&B- tB`4ww^C9ip2/ᛮ+vǶ-. 4MSu !Z+ EV8Ba@R%3!n}$qB0m{?.!!ITqllirsaP6|-`! 24!`PƒP() -E ̸M[57?].ݟ` PJ)jvaǩ"2΅k/zn?]Зs/ G??ww ԒQBS  W6S̛z>ۓ{;WmUϷ*x)1nA4~K܁̻}pԩrD:ZaA+c)*.3_Ÿϻ0J1 p{wWDzyH#s;/GNqmY-^^Bnp $4\uU~τv4QN!g-z\V0:vƩ#Xl[<D!o`4o=/Y2/y΃Q۾FU#i3BEN$i}1 dEJ. ҩRp p㏿kNߏrYbuyW` ?׀pMk[ -GP$lΨ`cdX3o1hAZoovo{C+?wGpOw~7ASƔ6&5 59Ψ͙ˈ؎wLLNE2T:I/ov:K;?jl#!?E|0^L9Le*-8 lp=7R;7kv6_ضK$29Dv>? oxo ~~rId 0UR2UcYGT|g4JaTeD.Wt 9-a;7V\ׁJNo~!|_oz3BXbhKh]NL%0C'Ƙm;"(5; D A!=zAW dF/V*~ {q܌V jxp2WXeRF xu4Y#(ֈh "jI1 \s; Q.<$ /\@b|uJF< :m/~W$̠6B1hFK}#Z,d)lq}B)"l DR͈`TJʘ(PJ̫crj٥/g ,B.I΋ E 8UnG0g 2JXx&F k<)d/d9PJ jd,r-0N Xku:CD'~0/D R/LhR|C#~l4e4 dlX]u}eq(FV1 BA"Ua/b?HӔmqAè&RoDС{x;ȋx{_1q7hDײKYOXgZkuj.75Rʜ1ERg7bN|>u-kƨd2@jϙ&@LQI uM^Eh0n%绶hwnl>z0MwdEYuzcˍČT3M;t9ڶ@)Af~8w G0Be gsA D2'/cekFIgg'FcS~gNIӖ$Duw#/F$ch$u9sl\=R*OnF,Xʬ+1vճAAWtttx1e4UJ06 r|1gcXe$\^zUնoj2Y+n$%ӼR d)i^[Pj5])~cE|ֶcٌ$Bؖe jSS(g29י8୭wmh2TVJZ3QIYJ*91VZQWjpbS<ٞcMyvfWe$ (ZK giX^+ 1q2PVelw;3 Q%XX.`d5+ƅL ҍݺpx( j{S@wa Rk;|M<Qŕ҉RTa,Aad-Ԥa|6*<%"|4:ZʘH VRrBLzf!lb{eȿ}b/^!}0#,V,Q{Fdm^5ᇒݩ)8/rW[r' qUpɭd4+H1e8\^[6s^sf76VA0 ioq Vꦛ{_ٽ NB`_p^\K@*b_Y݉݉piA路nḋ3ZGnk03VV80vN'j-,Awl-4)7u=V'ev7]/x.y{be=/s,>57@jP b7t۽^/j$fca/gP,򁛯諴 e%=}eLO|?zBD쇙fwGgkW.oml-=ԙ8|̳ct 2;]{2NUS%j(xljoxi^0 bo 4n~?=7_{ny6z)=ox躝Nlv˲hy2ob,9aJ&J` %  J_e3l ЗV=@(%p`ź/@/~Qj-\5G(]h9͖29RR F=H~$H$\ݢ~{ ¤ͫ )&s_~?"ь2 #/ ̉\/Jz=^9nVB?[?yg-TRd/gu9O%X܊Ah8 Rn n7JѨNkhyn{^~?)/boFR0/.yzB߿8jJ|M5!p^ZJ% wfՏao<{e%W*1c|@Gh/Xb=:vm>g<;ZY bDzZ8Ō(cqoyv0xi7>^ ~ @_BX__WwǞ|>2Zse5{nRmnPgq՝8|Ωع'GI#rF9 D] kkk56!,$PPy4'Thhf$h4L~nݺSu%R $ө13;+ݝ` η7ZfPcGYP\BAE߫Vg&fPkDq+ |5R({WFŁD][1ނ 0 :J3#O@"l$Y3N,RJI)HRpϞW/Zƿ̻H{-RU8u睜hν8mJbtK{:gwTftTz*y]}EݕRX֎$sN;/8>3 s ܷL =/3ь : AagyfgTݝݕbShh}Ã"ҥKJ8`!k_s.u!(`o 7 -;6lL#K!c7<9pF]_-0*eOR°ۙmdx\wݗn(+<$͙3~???4(DBw3'_ܓ J{^7aG!Jz#U]={Qo_G%E7ʘ'cAhN2޺ ϺRydˎj_S+ҥge? ((@Dc'>w{u]?6'\7ַO|bŊz7ވ{^d_7pK7;_V%MSBsY7 Q*֎?5 _][;TkIP(t1I$%P:NRok3[,Β1@J?,aXc)jƐ ˈ,B)DD$$P $d4XG7^O`&@#׷'[k{ \yw_Ϝr'85D@B$*$@H*KJOwaXUaik&9cŵ'\a" #I$AH@@(efM+6Ft ٰߋ@SQ7\k_#i-B1(%8g@ᕺLҶA1Yk̖e5K;:c_A#?IfuM*"3;,11" TZ8绿.bgn5CV3`$ CjHh%}jF2YPID:cpXEK?#f<8YYܣ[k0s9R8k֚`7{=_ v.Kֲ5ADQHDHPEDYlE΄TB$BC' t9gs]OXZ01 H$  ZDd""O8nqw %~5vw65$I$Yf&Z'윐뭄$})_$ BDXڬ1/$Q*=Ů}5/?JHڼc"0XB d@HB$Tp}M@Dzw?bKk;f l?@#I ) IBJ0 I ik ;#@ }Rm0NƗ5keJ+U;IΙ3,ĭ m:ÐVBaDBf`9ц}z\~km|b @Ym I;(YY33BB"JؠTV uBzRck*<=::&[wύ*>{ {<1HH/=!J)l^[` LI:~3*TXϗ6"`쒪8pYn0.$T~خmJs:8VNutDD7TPF&K0 J'ͨ>\ңAui}plݳ'HR``uLDj@BD&`9gTEʮzۢ/|k[7 @(@Bz@/( 'RRT @f rou֑P":eyybWtޓv#OcFBr\IJ`' ;4Bȗ_> ~fqT[5FL,vQ^Tz+3C鳳d, kÃ8[_\vsY  dY!"!BFEGDf7w7pÛ!-+4N@ ^]bN dPik (HH bBD! @187%%AJ)قcz"8 j^zξ7vbgx|#gi%bϼ9"u`vN%iv49$!d$89 Y,KŰNX  (:RSisd!LĥM.˦0JufβR.nkxnz/K׊οR+@l zѱrJ(d.C0t<󈤊c]EKNɷX7z }(0Ea]P(*LSmF(VEN&n'(34^kΞ[IM4ĄD%G/:u~f)ظ 慧tCX YB bU,LA!KSMBH I5aq'=G`o:iCNܩ:\ɋLVs<=YN~&=Os޿022TVT'CFfBܬք+R&̸TB2YgՊ B)eR +/~Mc\XP[S(bHO;ŤHl%mP)D; TG"GA @Pzj^ sGD)<<^`K%9{ αTd9k "jcӑ܄ IM_G7 'LttuXd S*a ޱWY˂mb$s.?]wSquRӖS*HP9[ڄ_Zm"l ef@?6` 咋A(\uO{tE*}3 i Q u01wVi2e""%p2 1 /S,rJ! D$ƚ|mNB$m4jc6SL)$fΊHHιR,U I@M&/f,LY/T`f E9#FHϙtlhZ+@JPd‚'A@~BnVF̡s;sxDa\B$CS?#e)ƁTAFY* cf }O c Y5hԡ(O4lYXHEĖ*"{+5myEY Y,Ƥ$hZDDWD$H"u #TvBabJnyZ$ &~_Sס-0tvVMJY+xGI!ajuBOAB.U kveXL^ v;Q!TN}[mw =Oe.Wdf$AL,XLyPC$,LB$d>!` ,L!D1> 6 a ҂r PHǀl,J?<Kj4fh9JM6i6&jC5`Y(T̙[>mh`XRI>|KT( E8gEc ]&fU .Z&ՙz=zvѕ݈B˶7D[TXw&m9{\܌1:0Bffvylɂ , ҂iyи_D ĀDD[N_!R؞jh6zz{:rrEfY<>>vfԮvu6͉zwOPMr3*(,SlD *DFNg9yygHlY-o45ES ]Wr~O%ֵG%݅Ύ}JFߞB| @ H0'1+[΍0(0NOMݎ '=[rnd>r,3HGh,ö?!u@`NhSV;*r)Pu %S=OI ,mFCzN0:d`#,K=aG 7^YBQŚB 3XdÒɈɖ=)nL}B3IK:l -4q*JI,.aZnTg@:m3x`l۞`$ޫU8f))(ߓ1 s8.7_N? [mf+) e}Ӱrr_IYb@4X$Ղ[$n4iaoRI /6"m2zZLB܉iۏ:4kYflfNOE dM0!# 01<<% 4q=gmg0(Ir-" iq}|95F1+1FJY.W4SJ 5b)04jD+._4cl=(88sCNR!v%ePv 5u(e:y OdׇpYt5ʢ [PʦnM .m$8#o~vM칍bv]`@G2mOgƸygp՛_~pQ;x߹ӗ^?$Du?\~Qxɿ}{?c綢t`mx"c?;٭4Vf$T^Qo4-(?ZHI`βDkc|18<2{nEsZn`]|eI%Y0|*3PefK@K35D/χiWI9?j} [olfҗiYHځ/ZfO7g|cʥ`k4c~+K3jպM#`-wcL;Xn4rծʝ7 Ϲ,53g9ʁ#re|E̟/Z?zkk㑒bONIc$I<R"2:gSk3K[ip݊/Dz{ZFmBt+ nu1f-q-Hh" F P))D\B,OoB;,wQk;;( 3m&m/,*H~%hgNj=աUSlk~7\p¿o5I:$hUK}G7+]}k7oÎjGڎ.XvqG-h+u`tZ\o 4ŋO:5oN=߿\@ :Ա#]rrgu/O;Ύr=A)Pu_4̸|a,$Aʰ,R8n+)D3CWgQJPjZ)_Xj] W]SWJծnsZtXc2d@b5Y"($pM`8s9{ z{hZ`-6IWwlڣͤݔ,Aa "}R:]q,[ꩪ߻^vJvc_m Bo`h 0d5I d\tBC~hXUkmۉŢX*ڂ~d;$V9%`/XoOu)3v @fΌ. aAi1 zHTy칵ZsJfhh|!/,A蜓R0H~'9v0 j4ۍ˥ƺHJa·۸iŪRΘx]} le2l3h;GU@? C=&c>ǘ_ƑV :" $4[QG-q6F^8[!WH,Q꿣-gg ,!Ce*ٯ, qG9dӊ1d-!*~}5} 0:rZf)+Jt` xwM(y{~7 `Rz7hK+- rcF5Pt @(.է yqt5Uy㦑U댔J $BH'ۈt1HZ2FGVx3}Fh`!S}#`ƦWvmyP!]욍YJ)IAZL:34cF'>?Bmw~p1"yi:2=.ZOZՕSgQdn'򂇞|NW %w&oy:7UW%1cbW*MS۶LFOyk虬PzK2i`%Z[M =[k4_dW6mcѱ:͸h#6QkoB OΙR;o?Q;0U7vӷ\"i Dtwn~ShdFradQ xV$.yXncqB 'Ww{#NW?;l\qy   թ{6lj 7vK9!|:Ʌwk!!2=nLgx Rzα(7XN;J{Gk Msҹ8ԅJ*Al%YjFS/v}7޼ c0Tҙ6v*y_x@  v93.MxbγO{f&(M-]#[!@"PwrEΜC`4į0S ؗA sKQbPV83Ê[))afؤRtFߞbh9M߼LV>CfRjwnbp:@gFgxۺ`ߞy { H^rOb5WmXFgMw%DonؽFK 1Xr9_qɢu2$ǯ){5SOz06~=e\[r;~(jMXHJk`TPI+f# XCtmH *Wtvf>'# icu(*f۱M5Hx^*Nlfbte'ډd"@L;+iS8^ x/enTUw$+ΙY#def8:޲cFI `.I)˲υ/WWd$}:u)J'NOp矜OI抳oS ɰ8f fU !rGNghVG/.;S{vWEEZ$EdBdDvс$B+ .LZV8’_~Q?W^8?m5ϿSO=ׯ_l$&"W)HBH<|_Lx"83&v;~n&v n05Zk:QrWgEN<;dYtu^xK< })])HYǩƭeh5m"oN 2#q4pHaL&/cm:On8٦"<3^p*ո/藷 ,W(n-ùCHÖ.>w&mnذa` Ͽjݚ5+jMY(9#&?SBKROn\h^u5lLCg]]].X0-=ZAeQ|0A(DgA L_ G9!Ā@ TH)a?]|~8>yn=M;'{a\s"Z/g 15ʜ&Kd[HJ_w]R׵*eLYk{)sژ9[!_x%g,;ڬYhYbxxl V f5cr'1DDIdgj8:Wm~$dZVJ:{==Ւ)hc(!n~$@5T#W9Gu `` $%B}I_Wv 3ƉkufŚxˤ]'&t&-Ni۔^MJ^kF|Ȼz%'_u:NIޞ0YI5&z3Om%2f l9!%3wT˾z:|_@\YJgWQ(kG6Yi^kǰhޜY*[+[@HQ3/&$dfuW`V8DbfI5?}[0O2M1"2"X"E-8Mᢳ\QlgXk˥rߛAp$!"WTњy5"9o) ڤ ,ͥzfR9k ym.S7N떝5:eqˢ46^8mK\)V(N:mEk*I^s !ݵA H $^^W~5>8Ԛ[?U֎@a@t-LH[~m'b̈́#3#101N_,:ZN~{Y+)^v^qs$KlEA"3:Jtnϙ~2mNL9B3  tzҹQY08 44sisfأQ(O$`A8DeϮo?_)p :Cd"{)4VC`~vNww?Geڄ hW:NC X0T֦-f o=:b-ĜWiG,nQMV@*ƨTk̲aͱgBH)Ev8<~[`"zA!%T |#({ą500LG A8yG`wcaϗ۪9&;N&YU~K2g 8PpbR7ț=64 [kN9sH 6Y,e{q.^{EꑉzGt)e0k&kZr>`,ɂjH1d,UnmB t9爙% %Q( BG(-0;\^ [Aކ\VX-\|nwdV`װu}=1*{{ɧ^^RbGWd1̾8IfuvϐfΚ!VgSTa@B1e|0c?r'x̽>~WW)m f3Sv_QYV(ztۮ:eY Eܴ;j|c$YZ0Nd*OW_#@B璎Co, a?>dRY0ን/w|?IwEZ}'x\\qL:F6Y[eao_o?OKo7/wvN9aB``lo}߻&C=p@m{;9aR(͑A!0_t^L\Ą#OX4VdH"v%q  9m2u2g !CmA !3 x $= Y)hVF$8(80QB uN L ?: 'yv:Rc\w;)sBDF'0YA͜= "XkX.͗JˮJZq1S6{"g͙4:zѦ0I[@qIRW6yՏ"cߴ3I&5BADZVoZq<5kjh6[sgƵ z:\F. c!Z9$l,B #@IgAHDB@ @ l, 1! 33`g:D 蚭/}041K+W>|mw)HtvT{zzf;ga/?gfGgXBa N2t4{\>L0ND'kܱiLk(7ccc+_^u7l'(j!{,AFKK SOI{B,q!Ֆ >eWANXgZdf(I 0qR4,*0܌KkQ[*uSdc)ͻ&:Oʗ֪rٯÛ,%} y! }?tn=5 |oQx.p}1Y_nLO=Z8kzzP7Xy4cWS$1l~_vT;Q,Vss%"+r<32,K$h݆f[2d\){k+8/(RzDDYA;k kM>R^96+GSv`_=N jxHRGg7od/t]}7n ;a_g睄{G0H?s!sEs|8DO4tXv_=W==aWǨg^JWвTfbwXd$30ԯ>?vqfCãcc,K7rDpFgBH$"!eۖ~\aFeӝcf1X8Dӝ靳Dy v z;{(?qn[4QK`k-p BpQ(i)Ƴf?ߓZڸ6lq+(sv?^_b)PHݏqO=tLg5/)Gq࿼(n{DuUņZ\7}Mt?${Ȟ})|L3P`/FWGrhfӸlihԍy씲&-nv\OnB8ku9H_CH֤Sp8m'D<`ɴa4l+)h:z(؞t,;A3/ۢTbV:E)@)ICCDE(0߰oʃ|w/oWnāQy}z`@*&t<:'0R!稭O~%綾?gk.=n @) l7MDTJBt;ja= 4I&MctǙt/0dv茝Y*$$v.әʱOg5(``)'yߙSʼnlV (xVM8] yǓkMc7Uo=qf5DpVE$cxӈ^ɇ\ .4#?"|nkpy/>GqN?tWO>Yڡ:}N{Q_ kCfR,D.|)?(ZkVAfjcM^i::K@(/}B Zcs9g=O9kZOL0IM֫;r , FBfc/ǗçMK1{Ѹj E'9i_ʳg8ޞWx&FY.U}gpcBn=g?HTr!etڑEЊ~ݢsfj|R~}Z->7_!ё'~vĩn8?'nGT~EW6`4Clgi2QIBFL ꂼ޸P>ly3*`K8GQ,d4e@hIcǨl&Rmb `i+P ʕ N4/\gOfdʁN81jY.2G/m -w?F/'Gwt?  8A ƨ,~ vOA/i8^A%H);R$3-p&b񨣎 ($3gvwwz ,-+yCfu~zNJ媫G?K/'ĝuY BERiz ^?zRJ|C:rį~y0/gt']v:^Xxq^ho=sux`B^v9wwwWUf?3'?yM71er`cux`…oA8ꨣoх\}!o/MP./+V\rQo4)R!8h(bvccϾ.mtYo1BDDg;}j5b_'`ݺurRo'xB<Ď LC!([r˙x33~}=;OOP$i'?s䵒^E֮]k߈to,L67`ݺuo).u; 4eTAc 7mgqA.ŋ<w`sB;[!O8Ph\*E(}_U\_,{cq"y4X-Nif59dQn|>YHlVg)6Oj>S9[X́GMh`P|c-g~<@ooE4M,#Rι,˄r"), K',gyfڵoۅ̜ۤ-Ckl6 BlpZjn,0 :::>>y8㌜$q譈>>>>>}c9wzR'|$I?/|y -zDojۧzdd^O [3@=_͇5ƌttt\naƌGy{Gf~v̙===Ǔ$;ϟ;ova{o?<3?'tҵ^`9sg?^}_`ߞO<3l6,sy䑗^ziu x]Dn( b)eOOOR:%'Ї>{[i~9.hZp''?jr?WGwq 7}3l4?;΢E$믿#8} ~__% lڴ 8^fʹ'OUJHDEQǹW [7"mo;a^<7q%̜9nֻi /_~yllӟlٲ^T}+_1}J|#v3<Jo?']qz駟~zȋ ySPDM0#bef Vhwqسvt҉rf,|ߟ>rK|v;"f^d%\|GZޓ퐙>~B9766Z1oy !.[k?ٳgwy]w522|XDh4r=,흎BtvvQww"Ma*JZ4Mo[r\.s=gqFwwwNz}ݺu͛.̵ZmժUWȅ8]w]nrqs7J /0ġz'w\G?_Xl|3p 'y_җ* (?>gYy^~1v^yNկ~'0dY~gq'>[o{Y|vi?0(".Y?C?FT*-\plllhhhÆ ~UW]u5?;w.^$ߡs/lٲb}{ޟ׿F_|k_{O9E|ӟ [0Rj||8^W]uլY3ȏkv?O*f͚e?G?˗K)}ѷƘ\o`" /Ovu]wM7s=C^g`Yi~}1;ֶ\RHq3?%?[ONcѶd8 +z巵pu0gΜs>ÝuWnd~UO{]wtvvfYnwk2'8zs.'i <}ߟi_o.iFr ˑr~%Dק6ӴMI9ib(<ϛf9zMBJRX̩8,.\:6xmmZ-<#*a[R6޳6uZi/7NߵeNz^,Hk77OgOLX,^r%Zmڵ]|O$wקϢ6?k{Ķ0U E.B |g@q\a[4mguBsKo/~D7&~oTb^xᅰUJ{@V;F8 vjF-&l2N-c,|[".r[hќ9s`; ν»|0fěo D@fO\]E{8x}%IIoT3jb(Ķßr־74;c*8pw [RC&~ xdiH -J̮\.r!===k;>3kś97Tmtg⥕cF߿aÆAul>Csoҥ{ v|'@tZ;j!<Gy}JhcoU/\2sC)3I=͎}Ğo<=Iyc'nPW_e)oS /022;eg9s%'ـ@ nr0Ut kx}*!^s>|x~^" "͞r>Í?9s1& NNAԅJ~o1̈B6߯I.0@ 'uY8: W>ޚ .X {2'Uw{ fYd6֩~iy38m*@4T p "-p GXB'dkJ~|]t??яVx~|Vn | )(V.Sl^Wab69y |p0Xp f)pY,ϙ8>O~_]Z8I{\s!|Їw 0ŇBy&yUp r=|/z>n3@$ڿi7"? )r (*b @^m.މ'I$"h7 AIDP(CGo1`@k~x ̟#߽;}xl}ݝ 7&d\*Y$@ ^Mdcn'̫AtP(V(f̂aB)E,=Ig}|_?W<}A ~n)K/V% `VԟÒ(!OfFGGwqh4?;0sy5_xZp}ﻏ;8N4 g^xP y8CA,ՍaU'1? pxSsyF]j;gqZ  K(Z Eob<q 9̃ Paڸ##*8\4xcC-ɲP⩈ ")+.WEhDl<,FR.'K$R"t/veT 裏~c;n!GvNx!H %!jz[?mAo"P98X#&F*~B\s>w]?xŭ,z~z;-TR cNR(jOtԬm|[>IAS`kxYz0 ;ǐYXh\dHP\V+/g=f-,g<ߐ=aldb1_1RÐ4mb8{!Y RZcu/6N4bo}7z g0g#D&FDBDdr1"!"C`(v&iiLD @8.DD`[6$γC^q "3_py;&k!3ڡ뜶hv.3&g{$&BI0e4Xv#j4Z@(S~~Pi@{lT2 O y A8@윕,h08F 96eXHoF@k$, BƁ$@!JJz`|3$d-z:um2|x~uc8fQX6A#COb(EFcZ{9cA(-+VRq3K8(@ iUܒJԇtl$!)'_)͚l3 5Oey8ݛ,#0)r~2 Dgq.IJ%RQ$X@+[DLQQ}£8ᩂuvF)GͶD@63(xxp`N_,\jaY]D AItj8rtgJH]7FǾ_-Z0}%O5X fܩjo;7!pRJye2ӵ NK~7:cPғhm4eb]"NS"@dČ@H 8onC\~@\^fQ0X&B`ЩE r@g-Uњk]a%BDzxCQq `Ijrsxdgzꉗ]3N>iٴBeRԺ3 b)'/XR..vi詎UR'=VcMnE~ %:JQ݈( ªviqBH@X* r1Fk@SS|?Y%d.2뭶,:g]-APhY (R*PT>c+9Qk^$MMe[l6[*HV vQ=jMrLkda- c͊אMFT.@nji{p){:Y q[jG͒ j%](jwOޢB赒cd]Q:xu1ޱ #P &O@F< diy|7B%X ѶVKFV҆:CYz(u!N@=%|EŮ)@,y9F$(2kg[1 "P jĦ>ƶ,O+^ ~1-DJ0:13=Y.[uZsxᗙS3BD##Ȉ(=8@rJz$x$}H "ZrѨP̰nV.*[Q6Hک1X ¢ukt2$nMmlfXv[iZYPƇQIn0ᢡTg}s"KV!,jPGkJp==j3}#kkꬽB"ӣc!Dal=fc4W-##5X&$RrmaRpF9O(n{z&IT( [Eeڲa`O4u= +׭^;p޲SLt8^3+d"I[f Il($cYxq^ޢ#;Uë͇gX3w1Ώ8Ardh#I=abs}ѧ7t,{]>8&vqY xI+`!S 6Q౗]D\ٛII lcG   L&n(2iXI";Ņ S4[H 8[ ':0²c$2; $tl:Z㌵rNЉ t|m{;D"(3D[gL[KY,0,3nΔ% Ҙ/iLYGRBj7r4<^@|-̙G(6N#0Sz̙f<،XMCo%LW>"hRIU4/֒onjX,TBA;QlsgQZTQVg#ѩu~7w]^.xFDM&ĐcFb`` eXbz 6#.{Z1mK@9D"(A b<!CcCU%R[xLcRwYsL땯fY,mP"D"(BD! ̒Xp`gw\LOkWz6}~sǗuMOL`FEE|_~yν~C(T^r2Jn0 i$y2ui@t;[Vե"N@RT X"FF;4gGIb+fid_[eayz/ wd4?>:ٽ7ףy!r%( !NN '(4ܽw4>4ZYZ*{Ǟ},ڙ2(?{/^l$nQDN3=_͟C?k'1:)y4]"D`Dgʩ*0,4cD( b Ȏ/_;Y}?J2 < !B"HYkU.6UX]ɳjBE1& K?ɃY5\SŨF2jmRd6:Pu+O3eh4da cd^sĕjY9MƳlIb$IއRANS*D !`v X׵sK_MO=dZGC(èxe8>߾}[2wsEczp YDHeɓ9i(b>XVɥ}c_zvoIp/\UuU+\8+{ֹ;uoħ??Cx"&+&eJ|0/שiZlt@dv1g>/ lh*Q1!4J$y ]:K;Ѓ^P4(DHAE ~]Uo?~؇(ȁfi"JЄNM&G`JhA)gΪv~2"`U!:>Dhk0OTZ5kC\֖b(V*VI^`ջpfL#T~5\ʰ(GהJ+b꼭7SoՑ* pz,4ly0y|6'/]}\^:[ C5 ȇ˲jJpc]qӏ]:IN Nh Y&HeꩃDdcÕV+vg~#c)KTYjeCNH)iAZV$խ%'Β FVYG\M>_GGw^X8HsI Q" HdALuY?PG64#d4OLJH@ld%IbDD+9Bsdd (M,ͪt:=>::Xᢼb)բG'e ioNrw4dOf5Eek SlIDHkN?Ͽ5溛<ƙk?3)HDa@&ƅ8Oi &&aXnݹ\z&BmO}RkpB  eaTm0iE(Aº?-V6nOq$HMLmhHRU mI#("&PidJRP U ۫Ѹ(oOߺw@䓒nsj4%Dʬw:iޝ3ZҌ) 1M{kb]XIӴb&(aNn;91ZRr%@eW5ua&yYbmj_YLftʑM&U=Mg6iєE:Έ o* (rN ׄm'hDD:Dd!zŗoܺ-'/|-B Q=B-  ('eYя}~7Es\;>=O˭6GnԼl=4jR&&iF($1(Av#{CdJR-IӶA4*S&QIIOT Q9I ;P hBFug6F;#o3+o~6i8HBK\xh^jtS?o& (VZ]jkҤI,*hkYTQZP)1ƨOM4,Ḅ`Znw!\g9,Hzmz@uӇm0=E@6|\`qXHTķԹri=h7,CdK&!VN^0hKWm{?Cd6_Hd !/8cUK}ɧttջ_8W^<93nn5*"E=6ЄC @ #Chxʟ,&.ଶO LSTB2 0(H)eAHI@Dؠ2 ɬtöwg׿Jѧ؋ VhD$!4g.0" xgSi;nuuEPfeC*ƈ=*RF55M~1BEPh"NU'6QdBj><.[MPhZ֡,\K3>:R u]_kE.#o,uW!QӅm bGc({}2l $xsP 9hj~hqq]-f[YWV7&IVW!no'N ԛ @la dy:ɫXRY(I ZS*DD$>" uB#-͟,#zU'K;w,цzWrX@, 5 22Щxt[Y0 bN5ϼiMY & e1DJQd[W5h*cBeQJk"$εZcZ9wxC%&.\*bqH-XwqDT6 A5)Fw\U'x4Dfњ| gVyfr @t,`L"*҉`jB"ԫ+7?W㕕1 "2ͫiJG,sX n,RXj7W VkMVIQA<(8 b A HFRlbZbٮTن q`5&EZb:ϙtОMD;HMY[$FRiZMUB\Y ViMJQ݊! ZC𜧩 3gi,Z+&FA_D}]WB߽>9{ꥧ66֍VdLm$z !՗ަ _S? VMB8贻Ϊ4KC?JZjT8;$NԼ嶳XIUDa !*|\! \:)Z_yᓉ1 HAG xz?*3?O6B䈪I-E,NP1YCK`2H.YY̪bhM%3XkŲݽ{$=V+^~ %ئ&INV(CA)P^biھDK^yƏ4Q_>Z]-fn6;h( P }Ț,QXԘIUV[chRzԔG{̰1* [ 0hunyϑAwcF]-oJ EQlP uTHŬ^]嫙MeC (b^vY&ZrҔ|>kM9~ueŇ@ Q+94s*Rdqfŭk3gWexJ85C4|BS{__ڷ^c%T˽i8 4.J(fUN:ӕ6D,Gh2OQj4t=AZǷo>>ݸ{wٟ?̓O拹qKuLtMq'1%(G_=Pde%DBq<[Ԑشu:]h~ V%jҲD8  78V$"I5{*/j\KٿJc QHu;A]-qN״7"᥼1IL`\9E!bC"DiV\A/gS%;D3;C<88up1Vibp:/EQflp4/]ع"M Üd&154M$! Mt=z N÷UDd]M?RۜRo|V7^ʃOwc"*h|pMܽw0LgGO'JgV$yU|I$x~'.}C﵉v[7泙" +d ;))hj Afmf64{V`I$2OFɼ4-.MՐvZ9愱Th, ibbt vׅb3Jv!(RQP@F o @<_~_O5V ͉ɻ\DdZ-ha"DL3gee@_gw翲3/+K!߷vkʃ=C2/?rW_'6mq|9"16@ӈfu h3q>葅## .Q$ `190VwgV7?/r1M^\xGnml#`a}͛oPF[~ڙ^w:dV s4>L !R۽dmx/*σ2:+xW#BDMw^6 MN 0QJul͵ʗ??{?>:{e{<a|fUʻEUy?kM'^Um~ߕE9a=wv=HZlslj}e-ȣU6) U]r@D|6o{WSiGk#,iFﷳMᒄ"4! <նhVg#/Ognsܕsu5=8=:?/ <Ԉe)%)I:X=UE)Xň1ׂZCĩS4$s zPO6H412{j*jH1$42j&UԨ2db8T"k TVzA8!*`SնV%-xWF>t5>8=?WMBk+iU^\Vzi%nLALw&բ mmpr*c $r HHlmt+ѓV+&TNڭ?h5j9ˀD *v$Ʀ~??޾q_9I7D1Irn>֩v;tU,q'E'>'mOX`c#x!MӼ&_xB6e;Z`[A+][ QZD$,F!vbE"! QR+Y[{J<3IJtА@\uYOBiۍ AVud=/#:ZinZ\\[JٲϫřprZѧݽԣ^boheRARΟ?8onv:g^yϴϾɍתӄQ(jW,o)*yicBn=wvs=tZeߙub=4^*ISF4'V$Z9qq+x%{'3 !4jml>Hm*1R͡UEdxvdDi:Jpi9;[ogkrYj lZY+W;_k8*d+RmVLtJԎ@A) .3@_{4H!IHL YHk p0tzLZI"EA!FP5+1e4 b>f9 htw8 b/+[Ǟ~٭ j:1ֹs}d#x3 JߥȆ,::+vX\y,]^Pu */9ViZG&9( a#LjخDJaFg^7YVpZS?W?\x*_ QKdHJPdN#b:b!RU)iğv+clwC@_}+_z?|3G>_̫b:UΥ~oܒ.䑁(i"m@B @B^#4:A%hMyjg{hFD-ZXiC$KDh7h@3gUU34IrT J)#DAH͜F2i9׵`#)J1bDT}tFֽ,v[Gk+yX (Phl%]z6*AR6M%MQB0D,*!Eۛ[=4[v;D7NC";cMÙ!PD66V*w.|WM$'\ĖeiAEt utW:nKA.G{;;{^ƙJּH|>qZbҿόɕ+d(&\-9-`% u%Oq)[Jֳv^ty1#hjSS9DiB"tkTjl R˙Jv%5 ԨQB>E)rU.߻6Oob]3CP( :6 ]Icܹ+AT u[UHI#2DBhr1g3]ϣo LX (ᨄTs[rkҬ5 vWò7i|@HN);; }F}/ @'Tރ]ޭoܺ88{6-{oW4W7n1;{EDEZx*"'@H$&EXmz֠1pdJ]]ŝG.~frHjB%()Vf5*r1x,8_Lꈝzh`B(2KAͩJ?֪3,16ci8`dD G/mmNFZ.H AQkmVLj JTֈ2ݛH6Q4VTO9۹_ʝխGn,iA.=w|E}мC/Yxz(EXjsDfr4}pR tZZ'f__Z*2tDq9$_yѳNN#3Z-Vfcwpnb*<wRχϼS"`,tZg|Pd)4HQAޚO\Ņ󥯷6/_|/_NbH<… /_j IU+_r tN8"HK\3RAex *c: {9>xgffuDOopkD&M(fU9|/:-wP$zPPϑV73݋b]bIz/,E烯Ax2S!&jBddVVgp$)Z, .tj༎| Q"`Pg5Zv&Icj5B ݍ rYwѰ5_t eˑ߹@Vmn; X w84OlcyvkuscդلE67J)ffGȨ[*z]Mv5 8Yq8h$ ?ro!D!"7s-nh[A|p`6y^,'m鸷,Yx'1K>4N`j5۬]XY>8>۟}K^XZa1+;ɍ[>p'/&َ[ӃIZ6rEwpo>#{e$t:+LT;42F.VGIn=⼯Rl}#ON5hTV֦1JD!""h" (T,_3(In1z<{`A|Z XLCD&7;ԆADD A 0Q+$Zv򠷚 (KsTgg{VUߍ*п4DNz $R؈.%mwy|E^xT7n|}n{1Z fl{ѧ/Aw1/M`=ʛqDOއԊA _Fw]5$DjZU E}+^U (|:*jQ僎&r@7QU-A3ѡsh4 ʍ|`7Z?#ZH FT"ȌJ7>C(73a9)RapuʎٳB"ᘴZ <͙buuNЇ(jBF(1}{ybti}pB%X%D KTtUK 1Hy_xoO.v#_EUN?}ճCUUQmJ=)zS}x,3&EG1-%!5&"xd5 ub:h8>v $b9T蜷f%Y^kAbFЂA;ku:i5up.|`VR8/™"5V$y)Q4GE$،_h"Q",jI*C<3BHъ8ƈ$3hjf@9z*QZã R}8,JI{iy|vHXn-AR'G1{KR@C?W MN~|p`eu}6Iz/\lǞQM7o_^iwjnִGiBk0X9C4dux=9|4hBFVd%9UFjh b11'"B+ %8cl:O8ufSe2 d`L*UmmTrC2f)gtR$ȆP)/" Q(aAˉl'r1pDWd- {_ J %ֶX.]u>Ʀ$ dJknƃހ i\l!dY>ڟ&1oa7W։f*H!5TH̜u?g?>G}̙sLb*78z5xJ%[tBt1 vԉq,DBE4d4? " JQhhh;ID嬪 X∢&r87錃iDTs*$yjiʁ *v5 cu](2>.㝎{g}UTm=p#""Dơ534Ahᡑ̼v.lhs}"/X]-TAy_P @߸{#>a(bG$no4J3s\+a }P=)L}S;OU HpwcRѥ^% 4JӝmID҃\ W{n[zf1~'LjOSM"UЇ<̀e< jf4'Q 4s h6 Oba\1()Xd"JwD+e"h ,@$PTUY 8(ʱs^EA"PD〙$dtƹ՝Nb|0]@d7޿zKM^-A mY 0;:b,;0F'!_CXj`3/r23hn՞=DO=!|@(m=[ե `Nielz<-:me&JpZ(d(k_"*N*-st't1~Xn" O8~Gl2޼}駟W}v+U5EQլM8k`'uh+d$w`$?S?}FH"BF@Kf+Q<ĠP)AXj cBȥmTլ^L=gQl2 Z-t,̓Uù́H"$0Yt)("Lؐ1A!v}"Vg/_Aqk}&Nfܸrtp׆eֳz*㼚Fv}(#E^|}̚h'aHL瓒2@Q4hz&QH 5 #)$!ֱjXL&(sZJShW `cLc(ʹ@(|1taTKj1z(J)ڙeHxYTf)̸d6>0.epXs;;k'Fk?} NRyK AFR5F6H1l6S$^ }@P@E`"}흧oήdjEU@Q;?Fw ';pZ[&jb/I1p"Xnp`ko?G'zYhHޭu/.gd2RJ|jqaS6i΄&hd3-J2*/9I(HhkP(}$hX:ΫM&tĵ"\Y]ml @hBJaYO]XШȃɿ <#RV*n4!$$/~CaIxZ|QH _|ڗ7b4llE<խ$vAUλ ̴A+b0t|Un߽- c#. P6C2C`Ԣtn${<?=-ex>Lh|t^`^[if֕?<<Δ2д&ix:iV?OkKytRxpIŻNX9tWuME4 u xA/O$W*Y ڕUI:p~^W^Is-} ILr'y Nf (6cD\jnW 9ە7rf44D߼wshv(-EtE]afj.82(Ix~eo8Q92sS"A Ffk/M)YwXܷ{ f AP@"`P3(Mdr2Q W^أC u[;kռ"DvuQs֪ۛYɢv$;O/6zŜ̇4IXi0V3af/6Z JE`tZOBT.tzs);)ZVQRrԇ6ȸvS{/]p`em8Ķ\֓$$TP@0gj*>J3MK̲|́|ڃDc9~/o[@W)/HVTE N_c$0)ᬾU`oR)ςBH! YD,!2"(E YՅήo皧MCЈ#3^4A$ hRҴ5`*;;{`g#*gY[Yp[Ywoq}}&TktQN 7wTt.>=BTmk"sx|`:eE)MBN1__h38߭3kkE.T1rMh<@.,M<^~ʹ1vVE#KDWHI LjhEDtۓ%N$mp{Ν? Ws.QF+MMHVZi$Ȉj  \zT.Vt++JC~'9@M߳$'&X#դdLŒ%sr F^]ݽw_Ť'wĐ$A|dVI!QzV+ EWFeR~ŗ̟Џ|}҅[+vND!9Q Y X3YXwg0ڻ{x{4.B9"bRPR*Yo.KBp6K"4Qj ᴸ)]okdJk@f]X@$`РAYDdT#f &k!:H@u_,^Onn/\,dOO[!ASGx% ,5!1jT_% ]N,0`91*kW_vjz8UV>7ib DZJŐVQԟ(6%(J'u]IE}ѽ{G++uWz g~}/:](cl`fU `BF!@@%D ,(1!!'5IAc(F!"t],K^m B$aG1CB!,&O<)fF"Zk%QN'cKh"00/SR\p>j骨9l8qEj_x\Mٵ~{p/tzYսko_OWȬrANG՞Mw|^'dusK;7ٯrceo9),I7q ww8!!0*2>|" " @4 1ܻ?w?70K玎JĤӲRbmt: 6I2wpdI^յ%dIjWb8K>.=+Կ^7駱.$,h1 kR+z;q=G҈KrK 7M&cW<_]YIٍBd>[P; 1x$l5 ˯]vڃe_w飯}-1w4i$ERhLr"(tR5蜕n%93&Z\)",#iaa D<xiT$6GJdD xY+`PJޑh3/RA>"p8k׸7':) BAdk(Ji:WJ,PPkMʵL3d8tBPɪn{vKW,g@44u="&I/ЅW_YuUj9u+wn%ݜ5QCok-o|N%|7Bh/moז0Fȍ>۷ۭv TGcه@ZiFD@m{^͏\(g.\ژ(7YAH,Ͳnx}_"i;;eYh h()$mb&K5!*%SUQ?ԕ\enQb\F0lJ4 Q!7Z%L6ZftbQAAr>gdtLQN?R!78Fjz0ˡ 0ʠ˼uHPGJN}Tp Nl"Pi5S-!#}˽[{ҏe!JQn;_~6%it߿(7gc#4+IQ'kZi) E4) EH"~4>eTU/_uGl`\+|=8|ڎ%jY1'y+I,k+'uhLڭVUόV_|Q_Qs^4/7XZ@%v9JTמ(vV >AJD@BT1"*&ukYaw"6N͏ORjF4Z)#G`-H[cU8Xm[yg}v܅ Wnl]H[}AD4j,@DZiDtuJs$!sOVW_|z:6ڨr!ʿMc|ӯ}Ѩzie}8L(י I1-vuADpc>#=ufu}陵=>:s~U{u]gnVMjcHkR:Vk-(ZYBEO\7n 1²jvBPDhPK¹@-E(ك{_4\Ũ"'QKT"+ ۯ~ggnX1Mԭ@iN4OG@܈H 4M"CYy\>Fi[5:5#T^jY "FhE1-}8Ϧ6b1Bqű7nN&I2"8хY;_·_I#VƤUݚev%b!D5[Hͦ'}җ~u`|`ѵ7]lYRbdavJl:&Pd"іΛTs6m)M`8 OSifόǷW40~nv+OM qCA Iz^â(RGOctGcl( !"D͂JDH!R墪߫^{c4ƭQ6 xCh{7~=5e:q^i_s~tLBoV&XU]&TQ_GA,I|Xՠ{dcͷYYt2V,Cc}_ϘڄӴZ 3"RTn8.R_[; F^KA7'ޙno3ak_xtC$A@fmIezp"vY:̪|^]MEdprLbH题杮sEgYtq|DXn|ߪN un߽>y;;Wa:Ycݳ7f#ݺW7]]O.~%ی @uEV?{'&aw9U ,6NxxȤ|\kכhů})qˋ%&~7_DH/ibIfzQ$J<,k (v~7SaAHыBb+KYP.@!bD1I"iXZee.D1DO]B~ngVgErmRE|͆_ 5TIEԚc }yV#8I9s=ZZ88qoe{ EѕPS94KRuki(Q#MC],vףiK#~{{82Hx5t1$EZ-{n _|tXh@("14xz%(N9=餯`C\ 2xs$('Ah&(x'{S#!?FcȖOI%6M*W[c66YۈBbB DX!(PK6-E)H5FsW,f PuwgW/YyUH4RNV&j5i=V=`1<|E$I-ԐhL)h1)RSv.@)ޭ_r-*$%!+uy'y̆R3)t2 bu%Ib"&3Bv| Tȿhr|w6< ~>GDOTJgYF'Na[])Ѡ=@$&޸[lDGpBjƳ,UYf$J]|`I`׵ƬQBT 2ì"{&0nD~3HW@ލm˛MM6SGToՃ[wWituv϶z~gVHþލ(( (H5D _EeJl0zY΍C\ 5 04 ÄT#@Neow goP8"'"рJŅ\\m̦* T$Qc4)ܤ!Cذ) G}!}u[?e^ab5 J,7"T4:T2$ҖIKO=zuo|}yo`V%b2/Ҷi3$C9߭]Yٮa7b2p2uSߙ0 t2{s̲ޝg6\}U~mc!M^$ڳ|ws?U~ Iǻ{o~n_}ߏ}Eq9^7Q!D@FIOV  4Gpx0:7=Dg4S@@@>>i{†9DXvDHŬ>Z,*"M@)kuB˺Zν;{vw2O|wNCw+.kTgL{)3F-[(E[8FؑQ]fx]¯s{3>g\d*~G:^l1l'AdwMm#{o⿸ul2[, aLo+kOUQ RBP[oж޽}Ϟ?kcSjڿ_c?~gAc1+F P!bBI 8p^+b/IuLVTXu \3ȏQ:/[wC'Җ@i!.j炏(FT զsO͞~W.x}9hdznt8[t7-~̓áY\j\zw""'O~}$F82VM&|`s#߽g_܅?S6Fketjh6KsaqE0߹~sY84UAA@P(+łZU4L&Gs/a.?F~αa_ `Y0NyϢ($Sv @>z!"֯#Rvγ;{P̹,Iq@("jD "Ha0G,;n6 `81%XT ]~J!F!qQZ7E晞xTιʶB=qGǏ]=w?pvͫ:l6KZ*WaqUgdJ""֘t޾@fi%F+I n#]o1o^"%~K tRjaҤ3ucZ`Ϳ]~䑺vK{ Eû|N#?eJ-kbto^|1m^/CQ:sϛ4M[~#{wj"J޹{uhӿzKv\ x̓ .&>O|!( %* "-ҘS(IC ڽ[-$126#/'2WNMԛ^?䙺*E4"mVg`SP$47"Ǚ2Z}ߥ_7-z"DA- ^T#)% zTWp("u*f 3(D$j,I'Hf @QѼX꾑c>T3s`X'+j_-}U;8cέ$m|ӪJ]pPl >vhFM}ӟgx~WEZfFeifiIHխ~W?=|aRLicY_v&ViA1bTdc m-AJ+PDܸs ߸#9(xiQRi,ν[/}Ņ3mlW{nhEQ=;,yQd6/wn&AOw勗>=JB D@ {w՗6Fe E)A{FcEZ |\`ov ( .$M9Uc)HE\DόZ6`M% ׵cAH!4ixJ8:QDIִXGdTȤFcZ֙s+j|zfp#ni%rv`ghڊR ܾqy/*%XIYIPCcXi&5UgV:?y Տ]_]_sT|sOqtV_̤W:{6{&@sl=[L5I`mBtݢ,E1Ynܺo͆ӟ{=ϐ1,nX)ż!лN`oxp?iq*fd[]bcpPs]( *WעX{)ݿ[V45* e\Q[nkw<5j@тJDA`cg4LV>0HYwqf1?s-_t aHHe)j߾}nCoSF\Ҋ$HAv@iU]sǭ @Đz˨]9'͗Ǥ 28`P" ;t!ڋ`pOw{ ҆nr媩iutQS.8_X:E=@_{Յ#8*SHz$3 ٴ*|yGz-Xٗ?1xy-۔j*g4Uys(Z=g{|u~3kf|͟H\1}+_#Em'N,Gd "4HI*C1h4q6\-w&.r#O>L (fANoC+ɷcG_a{3q\: `6GL( i#:*謁|Dxu;G~űT@)%2|BDf4J=<\Z bAĔ & kIb%F+4!ˬ[PU;6J!I zB1ZY*Xrӌ@sԣѮn韛ɡ7W;vGް9F*J&+',2?{ d@ZqVC!WMc` lb9s<+DFͶ>~}5=~vd7Trgt=o{4_gNt<ؼNoys'WA)MJ#*R,!ñQdY@ƹ'O^~5_V[ϫb 3h1jhuvkd "1h@4(bQZȒF0Zo'Rux}<(*w 2:~LN'M*sE$@Tg@" E'og1U:zUMk `OVuYrZ eWB4r B"Ѥh nVi_M}50S=QLąr2#MtȨ{dt=\ZP"P><ʹINk=uqr1_>]o^B"qf`F 50aF&fpU8J4"e]‡]9 " ‡ˏGD%rA(+i2_^865"*'y(I e岪x: w%Ҡ DZH&T"e!^XloJU)g1H}`6L\EC$L˃FOxgJˡ jNFAD+EE̙cchwcgӷwem6"ZќM*SCcRRJ ѶQSڐba\@/@B G!)V]m-LeYxK ad@js$QiH(ΞZ|Gj:v:6+g{ADm'zRĄA" WUifQ="*D!r "y@"($AfBa'\8Fgs>2y![l[v]"ve}g].xÜq?+vǏ,SCJ"3q}~-O?M4W 5 BIfd~aV&6&T6LQqE 0H(c@ 4;1 K{ӛ4jXĥgS(L|Ԋ9")*YD^PbvQM'O|lX;ÁZ=J !ҊC(&!| դ4![+i8:\wyaajUsG_}, d|b\85'wgxYD-tj$=Hjޓ"U$DN$z a(x}Zl:-|v33Uz< s^?$ܺ߹cqZg[h S9MIvFեvԑi߾V(DF8y:mvvvN53T@54 ȀPX"JZZ;P)MIeLmijM)]Y`aRo6KלE$`Dr]@ak~9|n' :rsI!"r'xWkF QsH.vso_|ҥdI4 R#FjǍF=Me0箚uȑ k4n/]nw"W_-ы֪ݩy7PƷͱcvvGg0Nuו@J46QVe6j$qNmp$˦0`E>0a嵪ˌ9Cc~iG[?}Ck:+#*df|؃ @(Z IL׌"(h6(մe)5RrZ:ҩ&goo\ f4(LP m2Ҁ hV}d1ǠJI;8EA2q AG_ziWv5CAB+IH,,ts?QkRs\Zl7z<Ο=ی;+G׷UFf &xNHcNq{; ,P /\( Y\z:yس]~}koo:|ܹՅ6rdKQXmB)+'>d<<ݭ/V`'G<OUjȅW{̟G~oo\#Q7|z_(pS>wkkJk_xAҨ󌁘Ii Hg(f7dEiFU()5ʧyugXX@c9T: {1KxCrKOlx̨*1T!/B e,H }>E/czYZg8B42Ti@[Yݭ+ʩMl+׃u+ՌœHz.%jvmԟqH QΩxo Bg~qTU#SWi>*N7ULrcOJNť#a;nCQ׍%Qss3}X>Yl&W^@{}f26)M!fahCHd(%ȿij@HVVO®%C_ge;aL.w}ߏ ]x }q.Q!qTk|?FA "XDGf״P #y76Ɏ*V^bԬa^IÚGu"Qԛr 2-V[}?ʎtݰ5522f@ebi]2-1XJZHXD Nr>z|>u{;V(L]훛{+Zr{G*M BwV-WUReTtTIX{}d#Si9P0:y{:DYkIfszdn_dʂV>\?VVA>u=u2hlw/_3N:4ΧZVNŵ&SEجILxPQU aٴ@d|RoBRկYK&Y'VǺޮ5s:M"_pݱcF3'zJZ?:Or%Ug/>̠or8FmP_ 2zJLfU:wTV aakj$+N*#Ľ#*EU"jHwPJo4Ze#I̵Exde֍kz<b+fK䛾eI9t}w'١ 4Ӭ\ aeȼ`i~ОKzk{sٸL8u\{eYJ*ܯk BMtotx2iME9'Q}着>wVVxml;v;@tX&ˋ'9Uot޽fs3a}sRiݚFV1qđ$9xߛk2p<=wް̦i$|?مnr]0Y=K"TX|ŠBd !x $ǛoGϴkZkӯ8Lg/8MryV&$qz,/ qý\z]= 8*Un2GgΟs_w L҂"lp}$i,!fBިʪvݹs ۓ{1_[hp >.!ϊx~a1qԩI KRZmMT!Ijn.0lkrGW!|v]%ؒ 0@xc6˧WLV}h) p{dq;<@$ͭŕ$k j\nxjwa呷~w3EbR)p#T(01 12(B>K{tq=G:s~?u塚uuoZ!KehHY/ai)%J^k5&{$I8gnʕy:ABFkaOpi>@%( 6KCA*h#d@HP-_Xf.=z|O޼ɗnvyU,v=f9k\=9`8 hiaһ3܊{%@[A J9}gDI jDLfgY@Oz~_)&QDZ<OqQX_qkȥ#oj_jL?-J_!c^zMloph\\;}|ϻ{AeK/Ga׋%Oʪ`9WqR?rdɷ}ᐡ "q^.VBA@l4Q DJcqF$\U9W+K9GQHOaLXp QD# oQYfkqe1MD4 d0?nޜGN{~ZaoX:1l4M;hIHzQQÀĈ8pPi!p7;&e'554OF>ݻovFw\K[A&8-4y9 ^`>8*G/>7/@IoFjPi(!1)!EfKkm8<'iπv+]:r\o#"s8uղ餜c6Uh6 ?cư0wN[($tԬO,w pSlFIf ^8uw.Ժ޼EFK !Z<65xqqM QkmͦFl6A OyU$.S<~}sV ?lG-o?s`,_'qO{B3fkd`?q.dRȣOvO1ݬbݖ_%6ȇ {la`BfZk4BJFTh? +v-FdL^1SRQ <0zR P ?o" !h 9ٕ+3E4;T~c  F-wJ!ZuMNpkG./O]}@E55qf*lF6χ 9I NJ^h5Қ:횱z<`b#k&['BU9`'?Ov/Rm9]_s}` D85EMʢSkcť]nQZSz9ľ, mE'KaSDAw |0Afig!H>T@ Qq<SgG+{ÝIJՇ䕗*ʇXU1=i$oѨC@ ( !BFD$"#"pU#V[W.k}7i%!N|׌3\Xi ӽ.M|9]@N`{7  _]D4Ꚏt5(K"HN(RnjUkq9 v]L{~*=A .J@t"kO`8QJJVRf66kYXNF#.}͕8?D+{^͸I꽍-CO6"pJ@FQJnŕw|1EQPLJ5(N|\z)W.x`wvqUs ,Z8DЗ " (Qdj:{ R{;{SΞ>^n0{]7lȴiuB&@B30 j B)]N-'sn&;RF6,~kgw[ב ox7L`KT!/n?) VU`Z? 5خڀoSA&l09>uZۍ4M boIϷZXЅp \DQj0)yO'ٍ6A13k q m̱ؗlQ xd@F* \ й˷+7 +dt^楓;#<}16F찝q DHY/< C\ 5t֍pxÏݾ~瞫7j>p, -!B@M~G55uWˢ($?t"<3$j-_VH[(*4:ҭ[wf}S\rJƓ*/*tW ߓYk%T5' '2!aw5 VR1ت)>>Qll#-7QK [%r`eVk[tyYiA+RF8c|DJ7t}7=&Gރ@q%iNL(jBZ(| HʒM;_}NN.f +gZ8+l\Jy f3Sz7wI]>Z; 7Jkj?[ECLl@\0Nı;c[qUm)sVRmLX^^Vwz㏟nw`"2H`!:%o.~_rE)֦PAմ60y?Z8J W?b{3}oS@ILOgHhq6ػ02Z+s˭ i.hvy zb;:2_#]WxWY"㝷ܷ8.+&jݫw&s ׮(+D⽃QYKccQ8<*bgk{ja{A!R U2q8FTu}BkkDIifVfB.󵝃Qt(BAh88+Rw0lj@𐏁lLf{ i{n{c⥋N\q͛in*'W]7jQgr OdDbB&F$\E\Rp* ":Rd+ͥŠ3Jr7%~;B:(Ui=)yX0%*K{j]KZ͉!'?cHt{Td%bF"+PQrht4 D FqVIW޲V֭/>6Oq|=3(TDY;"!GFwdĉc[͹#e>!"|('өxċg~"pLic:*EO/]|y,a&dfwgVfEYQܕ^ߕwᑇߞDiLqb<ڻtJֆh C[{ 3#ـ,8Cta)K* HJhxqJ,),)ȚĮ.N0&!HY'}‰skj [;;$ ы ~PCUS3#eQJD}eۮfsn.p?Sko&?5r%`,u w_h\;unKw$ 9IaP;q\N$2KKeY&ScTZUxZMU%//-8`2G0mD2Ƃ"fDD]U%XQ وHU.~ӟ|OL9)1h2u1x>rs2Wd$̵ӧOWnL/ v.@pXK,h~kr/h9y&5RթKpcsG/ns'Qv,2cNc``I ܝ?{`\8bkPkHpWY酃EQN+<R?4qe!j'u'0KӪu*Q/X&JD@@paۆT}DV+AQ5V7wGiF_ <6ѱޟ7 +Et>va5핵z%rl>"د4l ϼ+z9jO 岲EQfdu%*G՛\[;8">{)G66CѤQ+YzH٥QڍtŒM&4 Ynl|K}#g,Wñƀib/Fr{_c٤Y僬?E˷7c[X+8""02q.ܭP2HUvZn_yŃ=6g$BFU+f>]2{f%+;X:GD(kFPE4{I)&( *xQ;lQ\  U8iGy$b5e1,;q؃oY:WO.t}o4un?\Eƍ\R^*g"qh(vAdz%/^GSsGW͚MjiŦ*YB9'&q4)d-kONMj%O}Vi\tjɆRvV'ɄPxXkXy_UWv7˲$N֍.Ser^ ЪjqAi++WV(J:Q9NEѫ[ezO~+O@DPT2QUQ?H\n*W*jEqae+w&+|7( fWHGfR" ̈ك >AͽnʪG9s"SJͩ2L[߼v{gཫYh'<fF@F$CZf ba H /,"@BɤpҪn<4HQx7Mʊ"a!!ﶯtM…v4Θ<$?:0U 9\8MQCM$0+B@2hc~ٵvi;bvR p~!}A_*O%<*dk4^ۊ=Z.zam҅Wss d`7ɫ$xzd:kc FEY̤cVA@,TIFM(P$ 揜真o>vD2 +V}N,wt@,-xi;&ӫ+G:tp8}$ L^(fL{HVV~>VЙ_L`0Wol&VRO_U3Z`zXԞ?=&t&^wLKqb#/AxF 8G"@Yx6w!&xۛ/?\iY q:ɤF hW #'x  Fbgɐ M z@pWVCk#7 &IQQs8MmF_!JiKj)qY{Μ;䗲 !̘ި#bYzsvie^TDH^oђ2.ݮ:/'6oqe-/,ܹpTX A47vQ+]#$`$ Kza&(Q!m`0Z1)RD!ptI~g{w0>%qِ}N9pQD阺 YYd 4fcd m5'Ͻr? ͅQfo+'OFW 'o36ufyQOҹEۇOb63=cDEYPf C~__ҰTtah(1qO=qo-q&EP4QvY]`R꓿oͯ˿>vCp0*խ%YeUx P"Ee&^Ot U!?f]7``Tl3NQ:3ȳ(gA|svlaӔ/__ :zo\=O{~|꽃d2عvd7bC,ᰔ(" :Y3πz%A$[n*PYZQrs1zow4N$_]9nwFۚFlZExuK+K:|sk:4Z/ojڭK "qȫ`gXNNC>H;%$#[! k;6> wK_\{W2ݲMr=~C,"Ym4wwg"{Wv^?{ۍz-"I`2ԅΜ9^y\0F!zkc@Htks2߿i7V;w;k ѶYj.bdV*8MPqmQ_ӟm7tԦSW(wgճ~Օcor;-/~Wȿ/=z>9;q`땭r}چ3'䚩UfV=s7Μ_ݏb80F엻ò_8EY,-DqeLMf= 襛7llEuĉ?cjvܹz&-ZqNUM>JK7x$=mmwk;x2's seDp~8 `wڵOػ~|ov"Y1vl~Y0>(3d A8p>9AK;Ng~'ϟ>22dxX(wE%-z|kmϦg.ÿ5x 6vBK/C\9{G kJד&1( ,*mdlqG)EDޛs܊O۽҄wU,Kv$0˃UxS]PPN;.mO?cf@$nEq; IVd ྣKɿx_<ǟOm~3{wv݃z1FM'^8x6/h:RO3'TUYዪ&eQr(N7\8}SFQ[k{{Eʔj/\_+s4~6h< ʳiIbCO9{viwI[ۻ7n*z;{橍PUtDijfa lXg'=fCן}!xvku7_,Js=}G0Mv$J7~O<~n_]T]w/A}Y$CQ)u?~_hw.޳G P"D _ {RhIi7˲l4[W^zq8 "|ss0o-~֥_nN{_pvws+K 2ƆYI\E|K_g}?| J)]1s#"#MqC/߼cQŷEV~ڗ~UNqzXcs൱++ S O:O3=SD_4<\~R|Fkەy26;d F[kM>5V+k'%Q_@thT's0`: P5N?xf㍃|\bTNF#4?عvʲ*0 zd`0LqYH?>w4wK+;k0p{f{beWxyn^lM%/\?T-JHkˎ$ Hǣbjwx>u닗zsF ̊!?exbZk[7?ŏگil6B!,]Y6qMןF0v:%cV /މse6ǝ ki370#kk c=S_kuuQޝgQ 둩vC]ZVD' ٯVKUF ϼO`" ɷOTUi$zm 7p?ո@{O&>ϵn:,8`ZYhkC. |2뵺sY"8UB&Ѩt!&e#VIlbv$H0WUZzA$3NYkU$]Y4-fIh<z28iVJ'ʑ&,mn쭮W?Qp:P2âɷN B̞w&Iȕyjtu+ۛ"K׾Z"C2X]dq@MVUn8*z;&ؘW~y#:|g8&(*W9-R? ``%x}*Zh6s},=CBBZ8qO-z`:e}N|;?xGI- UUi=R0b($8kzg?sɟs/|#Pg;$1f4z.a!THY Yŀ* S]Y=^ߑvǞ>yhjkkf,ūŝu2~+_ܼrhV$!HFP:Jݭͪ*ͦF "BF#J"C uZ?g?__\i f3 AQ!.]ph{,+i5+c3쌋Vӧ['VvtEu|(*$V*nHO}5`ʼFwǢ5 s_u'2z?*ԚݝTÁZk*"y%@; IkC`@O,?rO֐<_)#'d" zEeFqֵIzR0i(4'f{n Aa][|+_ݴaѤ7T(xQ,}9ͽg &e^o˗9?瓃`z,{A;~s۽o.<|7,3mR@*!0ӵk?STfIDAT?9{܅th2%$s( A+n\zKE#aQ/C?" "3a4f|z}+Ʀ'+W^XDp6inD佟>xfv纟3~HR=#I& 4iCȉg)̦d./VUp8YOM#P9VO~D=MuNO.7X(Kۖ8؊QA)DZUZƘ/FV+{(ӲLqǾ#U&xĹU97ƣ(\VKB`NҴ*"ϵF|$ϧf,kݹn?$TZk@Eؘh6^{# 5^=?+/>~@Z-'~;˃ͽ%jB^-22`/ŭg|ܢEBkNRR)dF3Jq5c6(dmPy.]>Ҳ]}ԣx[w8/ր5zVoʯʇ?OQ+eBQݸ~yim5coy>A< eJ=o 8(YDJRڻ\v10A?Ͽ@d4!*ATPR(CY!033 XB JĩNK|ΦPkRJN[X4FF Eq\[^tޅܓJk!6ߡq0s?~8"k⹎sY)H{r8^zk‡qD "9{ߤ_'gw23Jz/0ZWUJُ|#G_ɨmF3bP-Xd*& `VHB.PP0+,k-k6=V5PdEJ 3Jt"H+@/>HT>Qԩkmc͑+[[ngUyT,bhTenlBJ ֬C" yVq<:[kO93O&,IF(I㤖\k~ZA C4.hugcө?cߊ$iś/X\'4U#B:DP0Ǯ!VPL5?Ki:{!12kUVme/_|6/^PDAEz0郿chSrPogn4'.,̵|Vle_K_3ј1!К9FcΤ˫G\|+=>qp)Nu#g ɠx%ʏfmn\j_{E w4si-EpV˗7o&N-cPebOtThI↓9nnt5Gf̍ި~3/?~&{Q|0;h_/|kyygѨ'O?^CO<>ڼrlcfhtGOmon+>{󊫪tUϊ6U{m4|V;{ޏ}cfx;%8Buf00RƉc"'($? ,cv{EԎJל\u}-rhv_s,A!< xkx769p4IO)OJViGI(E5(P !Po:΋1{OU1ivZ;eV$8a?7d,"*(kXR,i27q8񀙵Ε.8km^L*UnV;dԴt/O>+ؿ| `Y3V̚íH󎄧x_|Pno]8Gpm.^{LQx;:Xn#]=h&8kU꾐(9]}-sX{q{3 ik(~KG?_2˲TJ ÍkWZW=/^}Gsǟfy=J(WO]Pod2>hcf(#ZJ)km^G?_3ȃ2:Xc'f=2Q (X'' !34"A ;q|\ҟ4?#׻䥛S3g;Au " x8|6,K6Wy>{Fj3L6c(EXSVcTGue 3KUyLeD{jm\%Fka`ˍ.wUVTUEYYEZH^D"/ָs;XNew(9Rck' ^5*|ϫ`qӝj{`_?|3vy_^T/& Ã{CiT.`;`n'tx6_CTwեG?RꩧsU%DDD9Dum﫲(7J_Ǟl.O{ğ=<Ϸ#gNV`!TrfvϐDqjw_f3a<̣n]\"ɌPI>7\*8VcX,8@ (,/'׮vi4wv?2BfvhjQ7h%|TǼz$,S#~|W-hٴ.~}ws,!gS덆5tj}x%I-IR5.8~ /?U7vWiAʉҕ#|+?S?|{x?|[^!lE!$"3p]8"*pajR_ 8 BLD N|w~f'߾nwƚc/>CFPX  AѽaHs5%Il6Ng.U(ϋ3 5$w;qTPDB{P*R-5]@̳4)x0R"YkC!v(a8efccc~?oUھ/r +:]%]mEAe]]LKJ ('îzR*k$]}_Hǵva&s]根>lvA1IA%ݥU**X[Rh7nKVDeS=M>k&lX% _O=|O~?csQ@Zۭ$IiXuOxчh_x~͛⊶R4nl#0Ѭft;Om[yz^y+WU.q;u~QQI mb ^i-< g<'F|쪅FBP=|<uIIiLA'zJOgVȞ~KsV{qzĉ6 az_A+QPG,(TcRuY}~ͪCG~G*GBגXCdQUU OF >xJZR $_^]=u>k/\ 0þ"Y3A`2Yi3AA`@G,rAD(PgF ;.`m%fZ_t+}O.j7Ɛ#Q|r%hm{9W.2b Da7N-hxilv6"FZ++ch2[K(! 21"8֭Qs s,?c+%"UZk7qvLλƱQt*AB$N u` \ 7/Zi3|`·`N:}* gnq/--[/dHi|dt~'_WI\Q{,Jic QFּVrǖ/3_{ߨ s f"@Ya0*|*+ihNCf?,ade}_㦁t{iu0c9.C4CHkcQϽc(7;AD"Bo{qsU#^TJl*V@#00:۹M$ #`+JQD pP(EpDYv0d "@ &LB 9g(?p݅L#s>P0IhY.H[k>}G[d'@\eӼYle~%{<{̯/8~D:~|7vrk4iޕhЯ8OuGzgĢgH"@ HWai(~T;JN\stKXDFtڕ,qf : !xb $&YPv,^ð P"(HA߇Tٖ62T ibޞ'U;qCE)̙4vwEkqso/6l#^ 0{jv{%)VG3Xgӥhc\ 0F/>2"MK|ʪ" eQ-1F΋{|qE9x**{b+o籫tvI2+$ZX|M  ) RP]$h}^wBR|D)ՏTD"[i&HgH r#[Gʔe5`L"0vP؈ 8 ]z;)[} cBM16)X/ƣ#˫_7?swɇZ]>~o^TPlXRb>}腇ַ^ne^wn7HR}lx!ػ=^]^ZZuqhw?l6wǺbHY&2Cb Rq)ݽ(p'*X$0j"c洪z= A"D p]?:6'#$5=Q}{$NA:8Z:r47t'Hp d+ mz jrؽi:y׾j6O;m+gY]:}s ׮󦷶 Ͽxp ģJE/޹W lݨZ@?"V?وӷ}P~-}_rCt+.mG8Q O'6j/䀢AJ~6*/R äp޹˫*W@wT W5fUPT?hӉb)FD8m6#bTZ%H*׮5۵SdUQ~84#.qV#ǩ n8?x~e>{'↉'}.}4.}'_sQ gyEc'>~[@‹[Lii3!@FR}IGO{t^JԱ!|d?|~^s'ؓ^׻Վ3€La+sZOsW{VAԠD,&i>cCJ(fhj#B)XmQHa4.ӜICU~7ecQVnUUY(5:Zzgo\bmt?"02`o]|n{ˊ'z~W^}uw=8Ԓc'Ol}gd FDbw.&/ה63VZM(p Vd͍zt7#>:EEm ;^`w"J{" v NByϞk/o4@DB,pRL:Z/cfd@|Äl 6 ^vPl$v) ^$Ȇvw@1ԉ:7+*_Y3i4ʑvkٛG7iЗN _9 ?ٟ?͏=kko\6ʲ `<W_ȷA[%D{Rv0N_Ml{O.<8)+ÕN~΁cNnoXHyTLV(0/>5Zd6M6_=3O~3O?cZp?( +AeY cVBmf? M{i1WcPLE8bF7ז~L}V[F7ֳO$xvg+4G>~省`8VUu{_~72 tl8=lG>nVgQʡӶst?S.2d[FDLǑ r^vms"qr T]UP1)B3L{˭1imIؽ!9u4VƈFϭw[+"Fݼ}ytɪ"gNwg>~`FQ'@ @剽.4ʒqĦجNo76,Dв$ML։)SfZy0)QD1z2>VJF""D " ;o<;<œaŃ3;FԀZBc,m;ɔY(ЁJZ:dHPITTF[JqS!xJ'Ν| A'2Ɠ˯}ctdvA.oίQxD((ˑ=:_~lӥ/w]Bx^{[= gO=OCѼyTRFTxQ{9ɄeMAbDYO&cHg|䃴s%uHՠ`F{WQ 4H y@%ʑSH޼wD}ȲZ FR܏I ( $dbIl=h, % ;U$޺{w©4I41K导oF,w58<}c0^Xm-vbO3'K([_? F[_ʛ+K'֗W)?g%jB-[O;s4PǺw؛F˹[TKoڸP) yRΙfI3 Zi 2?B4+{`28l54wo`L ; o0!2=PpT D\UYp'&=_3RnϷsyQpows⚳^h2$at{%s~gw۞fwyƨ{?wLO~O!c'~?|V4?qј鍵ɸ_ZDo& QZUa#mBEZ/U|;Xz ՜}BkQslz.-ĉiP뱆۱ޫsz *}* :A IJӒY)nᏛk(["aHH0 U)BTf8K 4J2J<ӽ>=ybfAy0;v#MMf $mT%)[?Q(ѥ=% Q9FF#U1"I84 cA\L&]n:hw,/98֞O,ߩ<)e^_+el~/~wj +۷լw]ҙg|yaymeeuʚOٴpvuPQ$hJ8fRԍYQ$;Ph?w' ;̋(aPHa\ ت$"ʂ@:Z_Z;A,EDsάad){F, @(6e}3~p'/ދb0"@pT̊j vHvn^+{'.=h6|woa?|n}3?g8Y;vYJK;s89c󋞭B6DEQe>Ӵ>SUn6h|vڕG>H7*t.`og("mB# J.s*;wx iYPN, "|i7ol)S 班5[(ye&~Z9e(CL²Զ٬rV҈iQd3@h-2|^I^N# bP$`M: iYRū=?xcShI.>޽.]xo~777[-SmЈ3'sꙓ,W$Nayy%Cli{$@kfX_?:Q:ɋ j{:XԾmQNoN/ tϏ2{ICYQ^@HUUYvF# RM"b 4Sz־y\qqcu0Z[:6TVv3NBoh{VUI}B,a %8a i bX9q :xIO͛y,+j~15QH֖wΠ:'X]ژk,)R8xR*7JW} xxh^HWzֽf|( ]ՈQN^fE1ͧUYUd25qḲv6>4!@A`_)hċ[oYVKYF|m@[Ϊųu}"g֋g"e¨?G\<5D cqnD* f͚3kK EQ`ЀB{(Şҍ|R^U#I8{|ՙ,m`rt%ǗN_=|^h4a(J ΞZZ\\^F;W޺ڃ?YYnTtSvϭa="6WV/l,mmd[__ƍ|6*ˋ( Ƙdh( $|!)Qj`&>|ro7@pŬRS 0;hzҞHHPFw֢n?/̵" g°$qY+QT2D(Є{a3A돋@c?rj4i ꦺtp`8xܓYesq׫Qz@Ov.,GZ8q&_x tN?G>imύ]<U"{@9gG}sQO\emHDDıTe6H0cRB G-/ g8 u.XTͥqVADA>lyf#kYa @kVUs>;ZgE<^*_lvG1\8q?IW%0U ةSkÃzѨlheYn5DIF~w n&B:N۬FA? ,}0#t(H%m#:BQRDD q֏F~PSP5jU'2 # "'3fCUaD۷ ׈Qզ RjǸҺ+$Aafq"<\y3v.S֞}`L`Ae 0԰@D[:lo!6Z-ɰڋϩnw޾?\QzVǕn2zfgm^ 41FQ: JbMqw +iXflnU#@Gk#_ym]W =* J$B L2)&mCVU MW߻{&i-8^XZ}^澴J4YbAX. AH!=@JF#Iqte+fOJRG maej检h:}zq{kqi9Y42`'hVFsyouzADD"REQ8 dpwkto9($鬟fy٬o}5-gG>[ O!gYpB\Vq$1͛^@Aj.\ & +Ml{0176?( 0 .[& ! z~eKX"{f[_V,!"NMOoY{ -؃ A{. 1@X(Fo\֎{ 7NIz4҅i9Λx_\ʦS}UU{^<ij{'neDMpνޖ8Ք'Yn+i9%lU= `s)ų&/Lv.F:T@@ÅxhCҊ:@ 6n`@@ _|{(%2et*2W֕-+;e5)DEh̏2"8wWg=WuU (Xc h kT$g{"Rη W_Nǐ+ٲ]7j-LkkTek_;Z,r\ڪsO UzggmYLZ8͖+e4.m9q+n{g1Y;+Q5`"r HV4%*HJ75Ũ "MBA@H^@iͻE{0gyݘY;D1 /M:_r:ux/7?ekGpwZՕfT.#βzA(> Ӂ6}Nc'NͽFAT^38hS+p4xwދ6;fNxu TཀྵquAH Q˓hpGT^Kշnv?5C8r\rީ?;Y^ՖD -˹7eQmo,fAu;★4Mg#LJ'ltl:OʱfY怽1R͹'>OwO3TJW ll+/H]bFgE6f{=JC "p~q'*-* J":+\LIEq?~׺ &?<Ɩex2-?g\Ib3n8:V+ C1BB@Br5;S#t:ZGd:],Ic˳a9޺e''OgR*$Ykܾ~k_O/1 * -pTh?}?w/֓O(| ?leUYl6sւ?;h( eUBI Vg!ƇU*#B9ys"x) F'¹@v`=AbYʰnΝ+ˣ1r~{ϞYF?QʏcLEV9E+_9n l_[ۨvctS'.y ت"Jx5=<,ϘX{6lV _7n9<TFÕk){86Aa,zV6?`֞;iEkO?u݄;Ws{~N6i*aoo:4 q`Z PYA/>nmy"vRܙyɗڷ/^wXⅅFo" ;> 0) T{T[n ´[qD B0qul4DA4;7?Ӎ#@v277e, \SvWA/,@W H|2nϲF`-i/<)eEt|կְ?&cR Z "/ʼnPTl2& N{_r6˛wnVWnyO}cL7Nul{{`4J!,Y虏?9 “5;H㉻Ԙ%",s]sB*wu\1+J|4 #SZ?h7{(dHfm DԀ7uw GP "o^j 0 'ϯ9rl].bea-ALhϬI/.-ߺug=׏~ޕae: pe)mj}㧾 SEDh3ߺp~Xjcn L T" Wn~}ԩ%htsZP "};|8>2`t &xN|F(ՔIU>P]VxeFex׎ƋGv͞,+T AzBoU)^(AAFL|OcQL "!*4* `ܬV*wn%k'׾qwgDae4/IҤ? PHyQq߿4leQmʵk+놢}o@<2}"0sEqUqQi@1s*\5 jA:&UFUb8UG>F6$ZCַE-=ܞ̶4(d2g8Y4mA$OB,E݊1!)(4V0jR i hĉ6FJ7ssO w{=j4&_#x<8qyq߿4jD) PE -un/dCлk k 8"juZpXXcfFk@Uƺ!BD1{"/7~Eލ3M)8"$ !\-ͶIJruqUq)փhe8,īAQĞ̙FpNsenmUU(-$I4͋m6~Rnd>("ۻ Fk3#^Y[,m&㤃kbV {Y^w, >t9*H"+k %V[ r>a$ T\gan^H^;ͥ}hŒnݬHUvݩwx" DP ^[0S}7YĂ(J hdҊf7uf糌ZZIEtڿ}SpgOT nLg(i4b{{{ ga#[Xͫ2+cW?`hw̲z8GKUo ^G2̈(,X qJ@E֎Vü,G'?^z p5P @$ yyW%Iܘ3@`Mh Jٲi/M,IC$JR AQ;2ʲ?Z"o׽|/^Yo~[I;'$y/®;?H썲Rd J#kvֺtxooMh(9uڪ~N--(~-0a x着2K 4Ig+(ݙf4~ X:*D0mkaעZ&mXkJ˾LuJU%q R];Z:m}fΡ'p VV&S4/;Lx"tw4A4gdViVE_:_(c:[.G)LĄ*Z'ZO''{qh4ʄy[;"e)REQTC["3?|xӣ~xsN)_ygDUoT.&B0{;*+EֽKy8'EE wD{X/tIuF6IuS(incM\5$NPQOݼLtҤ;睳bFԑV 2FMf$IQŅnsm?.,,(ʋj.P7(2av;y!f~)Цŭ;vvET0˺K_D>Pf{_UUUCX fC *N&UQ2\E8Yk";]BE(,QDo_\:nX#4k$ \_#ͫ'#RPrb-IN)r(Ԁ`2۾.s`]qkПtZF{pUe'R99WR$"JseH95#ZW~s~13Q'?L+yQ0gԇwS<*vNF?\D "Lh .MT{ 5BÀ(bhp5iX՜| (cɺ᭻73[1 "Ĵmd~x~u(&ۛ6wvF;c u>#UT ,h"BB?R>W 'Y5hvtsEV:^<8Ƭԃρ۪Dq3A`b:):bs.  @) t ]be}ͦ\(`6V(&VX J+PIJob^ B\i ahD*/; }i΄Bh!BFEU wD QzoΟ]SowpT.,mzt:-Rk] ?(TVJ=j^^uU"hZ{_)sBXY[byQzϕHHk.iU)<# O! tgϛ&CY܊wHE~яUIesWl%`7qh؛dSV@R&y`'=~<qYXtD"MYRBD={Ѧz=n;yl///-RT"J?؞ spOD 6E>]!Z✙D<Jus@FpUe JUE9@ULM\x j`ITc+ӥ-): AUɸVP&[[;6/=v;ǑhPc2C{O͛e!FR<31 ! #D@R^urH:u#"UUR9WUZW!DkuT)ԃ檰 Ѩf3g󢚕ˣߜn7v8Ϫa &)]1c(9}yjBJ{. ZLm AW/|2AQJ 'O8;̒&IQWL0tyy2/}T&  )fagmE9fCU?QY06 =z_Up:o@Q)$!><8؞,ˣ^+z|WFkD^PdvmiAk긕tjҰ;:>@?Q2ǣb4J`Ik( ;(^1r\bL2 cReP5J QD" 9{;o_PkMQOl=Ҋ#@kسeo3a(?G<朎sT aS^yk`*j#`e6cއ}'>xuID#%`\?F*WZWIn(ԁ8 PkK˃G>b9L}J)(=-u$HW}@0)]%4Z&sɮ`!8v"~#otxEHDKKKt<x[^^.o|=c;l!4!* B7ڸy筳V#_IShU=R*%i CgY7ƍ^ x(UU;=J5%iMJS*a B_׎/⧞{s0iq7wyjm y}nl|}āʈ՜֭@o [+GΟKܹUb@a)0O&DDG {1(" 4Z*Fav?XEmSPJeI$ Ipҳ> Jpa>w% D$Lt'e>%aN[LQ*R >PY7vsR5APM%TsD֜VA 8qXlh˪rVNa*RJl0Oh<6[s:Lc6^A*ť/^r*Eq߿4޻BcxGaž0﮾s&Q՗'u _'RvpFVgU9vay HH8-" ߁::-2gӥ8lZIH as@~^qB``;F kc`y!HTMQ= ul( ; ݝvOnf/.w@%&[cM^)eYv?h8ke_2tl`-ue^vTo,DbXցp%0T۽l6Icc+'%X?vL+TIe(LOا8CP>\i^+fF*W(Є9N< I/ ,|?"EIR)2/W02`v#奥 @K"lE/F,/NXD%98Wj:ܳ-L@7n75Km@pU74i6aTb~ۿ]{ ϟ+M@LWN4.>nٹ j⽼ؚ_7Z).z۳B[%;љh:vSYd+Vz|tǘIq6XZ8_FD H;hϻozu=̢]:*$ɳ69ځٕ,N%_ʗ;(e˙6Z(RRʐ֪"jZ۫r卯o7!v"PP+B0P:#M_F6GaL5PI1 RƄh̡Ax~]l|80e`IH'zzQ5E~~1 zR'5@J>E_x;ۓ ]Ya9.h{Ʃ3,Cօ.<6(-]$^EP:H@IE͆On0?=#ēgQ|GNcԮXq2,Sӻ=.@.V}e(D@e;^PZxރѤH QyobAf1n޾޻ot:T]W%bBBRPiTV Jψ"fD$XMJJPeЬɛk/Q( h;`# r-Xr8HOoMҒcQ ~ч_yCU| <1 ;Q8&\o{;=<$e"%7?W$t 4B*l;wI2қo\KӨHFE:uѼ{wߟOhWUM Z^ٜ^ɯ1r݌& (#6CȱQ:RHLDD|gG+T`(Sʚ@#Diw8"f# ֬Zs FpbD3!2،H Ǡ JvzߝwLJF VIxЛ\[/_;;-*\ݞ.,BWqPg"HMb{Q H1 ⢚}_E"0Ua kbAVuG{:Q>j4!OIqޏ Pa{/¨cAꟆ>hc=\d{%fſo>r8R,a[eEJVid<& -rugA@܀"P:&oܚAk; i0jiDȵKSK_6[+nk?{m7Qna%]DV, # 1J)@)dHR`gG3:"$%D^  3Z&0D&v$D, 4"!j~[Mp}(xp&yn HԀUFK/C"w'(Wo\qXX>a3:??@NaRmܻd 4+6hΓkW;}x(R·~d^mA},uQ ߼OFEa˘PcIAp\O ٻceT-h*--%@6{E`:đZO3xBUפWJHC  0Ԥ(@Xc (5 =#!z!PCTZˑ~r8^". 0 AA צE> ?ԼXFsaK5Zwu WӥNZ=I8"d9م݊ $nX\' y{` b)f ^٘5L˲,K;;klLol3OnJ5ͷaKFiLaua{'h[n0"2PSGE"i Lj"VZ1 0;AP(, ">8&(ydg)TE{6*PT A$pQb@f鳰F-={B>j_A1RkyM njZ:P)t_ˊ if :-%[AbGhY96@ 409|qSUA4H:$@ F`ᚴT;ʎޡoeBZvElX<>U V;]#Fdat=W g7dn0  љSH؝[ir:^?kG[O}YAfv %7) թH t*00 He=y P":QZwWsT{pG3?.|ipoXZoQ)!hc m}S"؛NwF"8QNֶZD2!"EGdb`/GͷϘ3chtpwmv~wgg̳=kqWU=g !?H`ҳakV/ 'I+U\n 0G8T⸅MKW7N^!Y-|o&ؼP=sae5qV˯eP]56:6:i$s܉,eAyy3 I] 7<>UAqt3Tޓ(!T'[ϊKaFaY, 8"UE,J+RB sewU:nDť'[}O7df/1eH<3[THD?igo){|pV?+z?'`wght7nw'ӟ~45ewA=gDa`Չd:@D҆&`W+O}^Y48E#D#O(QϜ]/g{›g_0rc:ϭ(Ree߼T„ىXf݆HDB:VhJ)ghl "^̭n^׾*iO#12{cGcY 磳 B J҄FiDP#Cg<+ewR-;E10Bgì 8鏧…ZvНkHԙu8Ņh8ac2Ύ_50x헭^3|$?} 烦y5tWvvo}BZMYnݺ3h4Qؤ8QxYM (PSqEijcf!4>ӭ/vzmd*"jW}aE?"PBl64Q,YXR3+d전WBQ)FnYߚknk!KsˋQ4`UFFv>k6;c!&|0!$F (J!X@d]m1 FSN&7^y7WRdS5TUU#s"jwwvwvwا>KW6yoV |gvwvn2) V(f*K7w|;O>rQȃ`H}#_sP][3#-*l@h2wڝ08yf~~hw"MHAulT~ۛ"0" "Q!(gq|;|끔^K20:?}I1֥iL*"0mFV+* M#Mx{Xeyn !WRx_xK mզnQm$JQJ *M}Y .7 ,6'. '<]KP' {Ps5jrL~_F'A.s39 z'ښY7_ ƓgA,,-Msoe4tgϝ*ffC/-Dg?n/ʈ9GgaI_g$|~P+{V Vngw֝4џ.n4XY{88|e򪬼gWsPdvFO?fKsm7S'GGnݼshCݺ:HY>O?5/MKW櫆e'Z+@v8E!ĺDm0]~(S%( 4'../C3n+k8 KHyH x & "Fс@*+`MB ʳ0{$BZiET]ֶblo5[dFď=_Rw޺ukg+p=JkFgHҨsGJK_|i+WʚɏνmQpt2Jw铝N,tWew!C*+6~׷RF}wmժ5y]隃x{QdT]~#;WWF rM&x:gȼ @H9t$IzϽx/Ih򢨪R)u4D7o=yr޾j<I~jW<{L򑓧(ÝlB7ޚ7ƾvY/JVևcqfaBb'a`h4-1Unv~#"2˼B|Qwn9VVм+*E,sV@nݛz4ĉ&חG D4kJ{M*atnO>=[] |`s'^ ˯|?0Awk0er_uN{ÃՕKO<ܾF sz!Q3plÏ,Fz&u\ @lĊSHꎏ0"t5ϟ~sw;# +޿z3h[F6 *CԾT \t)@UchDHBdG @ a "}݉4y;vk0(V_yx'/qp ۬tDhf(,li^#"fW#ݷ{k7ݹP4tq8 J M#"JQ uiaHf_(+EkjF]ڐ;czx6{٥vW^F$7oԓl4?K+olZ W^;AMhXQU !OwιÃ>͗|uH{`qx޸9AFbW zڸ%Ц*qճ頬&}Y *&tW jATJ#FUC}3;wY!8_5Z՟ۻow|7C"ȮJ((v|_ǿ3rV_x OyO? ?_զ ſZZ:[:]U>T L, Y36HJI}ւ#=-JC* :گ㻣rJ_U/FMƨ"0Gˣffd,)畡ZQ T}@DJEDT0"lZT78}9cRO[K$)JѤvzhVEP9O : ѡ20 ,skWL,tʢbx?ټ.nw֡JX BU}Т"W3hN0 +M[W5o0ʳ"T||k3))d:>I ˜ԃQOcp#lgE5@&ԑ<YwB+p$p\y?+fe6ʳ 笵lՈLK{i}{+BFARd>iBdAaR#5{Wx_VVi#V2W"evҴwZssgd(nZ|BsFV& Z҆t2+W>6BS.OeL_ߥ@ sW_>ۭKPp]l I6AXX6c,h<ƊYc\Qe)wlͫ"͊I(Ԡ ʄf 2im|0h,+y`Lc]n-xA_}[gϯk޼ԇ%D9c?uZ/~?v/-ʲ ]<6ʝݝ{;K~g~vi}? \!h{??;Oo _!!{~(>~rG!#s$^_;(3hipEgC,R3-tnO'N{א)sIϵ ZՑ\*RF+Hk"@P)pĠ=e(!!/RȢj "AD6f<^^n,xq5?O>{t}5+-aecM0Q^Y^ʽA(fE5)ʎdi8*yPDQ#m!?9iGs2\κѹ i[B(IufgqlK|[ϟBӿ{s+q4+}v5ͳ\Y9np0ǃF=y$=؟8vͫ׌IP|٤f>,w_//ClaR?ٟ|O[]2{c} PU0 )DQb )f:;zWwHtGtH$"% (0ePʛ>=f8/ Eȼs;gT3{1@8|lo\EJFKN1%D@#WdDRT^AH ^qy;;֡9xq0(5B]eeF iDB1 3BCш{*XPR0HJ ђ! Ј&4+9wtO{&V#qsRMn:wL9|鵗޼Ix9MS}= Qe \GQ6yFiQwf4$M< ~ZߞY۱(qggl `VO'Qx[W>\=-Ϙi` N030y$*յ7޳v_W_poFb(_hg6;bLR5 L\OXܳ=vZ-ªس|x7.I8akΞ?7L8<7;ln !cӝ-ݶFw9>`%@& Pc( ųdu :kEdYf ޸x'S8|ZU54N7xtsjԘ~'o|c_5v+/K>3q Wx,&$ ΈHB<|?2y_t驧qƣ<|i[cyΝBi,s {c"⣷m~#Ewv@ L.9;j."8ˆ1Do؈*#ajt36zIHHd-#!h8(N!DDQ03fucY^Xrx`r{ʸW݄YY__ ׷/;Gau.iΜà XXqPor;Igv'Srw89 v'3g:hRDUћcse]“<Ͽy#S߉-nXT MLOFh2Bƀ D߫_;՛7d NֹӺ4Y.D UG?ϷZ%/o{}'KUb*b4"|`Dx0 'D" m#[]`h릛 NhY׉e4bs!F !3cЦƯ̻e}3(Q/ @@dmP5s'I[?7zWWF_.C "RRǜ0[4j/I}(/*"`]R@PuOm"ۣs6|^(`IE'TDaK;;B$E1Ne?g^t:$Y蛭:ƀQ"H[ l/ekk\Y8o<,2Kc\كOlc9rWWWzz.)ABdn#@_ :@@5o "J xK  u:ir 34 bDl6t#JlH$X)a6HH,ڰk MI7 #*Db!&]s#'>Po8VUGˋGҴNAc]=|p5V)髫_{+׷ϭNGuY >g?ȍ-UއJT׵+ؙmlY+'5zO>(E%JTAAqkO=W\ccwMmPI,* Ģ(e,ɟ|pzdz~筋gMbn q~cǎ/bUUH56 &rςeYZL!# 2C @HG(ָZ@UQ@ ` QD FEpJ^)(I AjHqNUxtcm則*!DU%|fm]~(-J}t_ts1c_yv4!*!1kuIH)o&1x_I]6X{A]Y^؞=>[_GwaŒ@QCfTUcy}c}mk@<; ⁓6V-DwP!R?7?/|?t<7Ph~ܯ>ʈwmI X;g)T[*2!#*A(cb`5kѠƱXeԸ1((F@mƽ1`j#%AQ4*|UۑJD- 1ABFB5 D LjU%"0(j4 +;{N_\\~fwn=~s+2ԃ9ǎyF'N߳_گ}lfB]5']<;U0v?~}YvkiwDEQ)(*BCy?DT5YJ xa^-N!1KT@P"PEc 52JuTQGNsgJ `0zZm:저l]{3H NUH!@  "4EPB3mS>[m;{ ?ԟ%oY9m鴜Zm;!ưgn@UFr֪1@AGa%*HiyuuG+>J^)6mH߾2x=EUC}^=egsC`2$}wX J5~s2"=yocLmQUn}XBVQPt0@ҌblɧNR1ٙrdb4T Z b"$ aBR#zL0X\٬{tgg9x ӍioLGl;jI *j x0Ͼpk8[΁,h\mmX|&+&3Xy_x_h*7wVOn Nv;EZzmz-P%r&1H!HL,I=M>FefY_[hI;ѠErF,~[NKL|/?u/|7įK(1!x]JwP6x<Off86IVoXk4uɇxPH5Fn($)(eYy!Ho%Vδl EaZ %F%"`kDTA ) 5NvJ%ܞ?ྃK37-?^{uz-P㼻?}_B1LCDH \Ǥꞅ7Qsh(1*$d3Zy_^YwTWmlmU6O]|3:31(h=pX 4/]tନ"*+5quY\~᣼߽ת}~YPn:oo [>;ru!O?M^$&x*3m [s>`S_T4ϽCVdݲD&4_Y8E$ɤPnJ/Nف h%' A=/\ܚ*:.l6Gܠsc_<: 'N̹ԙ7BNk6yæo;5@D VAT2ICޯ`a8;sx:;Bڵq=28MP{d#Ic UϮXYlX4OZKhHL J2mٞ/J!B]׽^jM1Wa+:ph{n/C}w`5Ft⛾ן?[ rutDG;`QU{}G5!DbJMԹhwnDb:~kObZy{ >/ĉHc'nYyVHj2F\i9CH\.x `UT*!DˀFZ8X""#aSE2/}7Ȫ匿3V|Rg?u_<޲uy9ţt|F Bz s@@InP 0,!4Gê,:yolԶ.=389hūjȸi%^;L^`0Fٹö*kL pl 5Bs @Df)"EDཨ V<_o@w;0]_?p/o6^_X芊ҥK+>?—c#ͮڨQgUcp/ѓ wn^ W&%@'Od"1|t RZE%.&;[xiD&V4cZ^PMGڇe52Fs,QHw~qYotpgrk%vzOn+w}6.=r߱1D2QDc"Fr "$hLc lC^UYW#&CG,aʇ(a\M/o 1L}ml;椒Ȃ ܌۾MI P /`NҬc#y@$`LEEim?EUI*lAdC"xq(JcLY?;{6❓pۊ'tZ?='D_d@5Ꚉb/mjޓ h2\I)ٔFQɘ!R#3.(x6R …KWƞ:]҃3n{3t-uf25].2ƦR!`("ȈTbE{#&^)JmqhXUEM]8Wiji9},3XD•qusmDZRp8:spCUocP>/<+1erتʉ eʆDQA EY~. !05& QDEb->WύyZK d2vDch{tnOO|꙯=]NXJ.n-q??ٿ|ho</!Ab?9?77MV%"(8ipiaCcR T&؝1(%*"BD&g~}XNHfb?9%!`2h0Bژe Ԝ C dXU# A6- 6y7oTֶ!D&Vb':˼0n0* FQU)xFIH҄ı5R L 1D&Zi+M\U؈4dH;Ԝ@@DV@+(4 (h\j.V!{d~􋯽0ƖX lO eʼnb3)ԡc_~RD IY+_CT-j0](1xߨZhLcl$ߞ~YPIO{Ǻ94/w`5?/ڕ3_}G>pUVnOs_OӤ۴ `YtwZuEQO~?V Q]W^N ^$a$UuCd4A XёzUa"jPi:76z#L@16bT&gC6*T4J5[[ԫM5"Bb%C `scs: D>8/?̙on1/CL^])zsFΦ<ͨEO{N_g{.hA6q]9VP̙O;r|ZVM9MӵcA P`F[kURӗ]MZH}P)A&j/hHETQ& @ekPBaDeFABB]<ji FAf_'$6H"YB2FqLsA̽OlMϼp26[ӄ[yd(u=' +o,v:6L'Wi9Dpi<3tKg ?*4 e?qǗG3+(F?G$T9&]M DldA[·,ŷ|ׯ9G1_p4y>fUZÛ|~ذ+Q {>S?[?rZ1@lyә3u=NNF_y_j:(匿7~lmC~30΍F7 AN&# u41 [c Y&` KR$q8ɒ&g0!dBp :CdŦLdPI t@ "!L xA2L K|*,?}3yb؞Dq9M+#zx=wmm25#H ^;/)S+eLu-b"'sp9"m+DSW&IDeލs$J QDvn7H!jv0-1pMV͋(ʒ $z?Gޛ$Fb.) [y4)oM몪:6솃ٷ.?7bYc" ̴0sHև$VP (~4T>sHD%Z&lXaCb 1 f d 9ˈ„ւ3LdЦמOaJ"I H؃3Ç2M) 08x֙C+룍*JDPPgbɹ'?٥ٲ(YcSʏ.1J9YT1꽏-4!4ji?Ƥ1K&zyikv KU/ bjvOf3sv5Q$h2k+W٤%TAE@dss}HQ%j\=nL%Q$ITz`STaG5T (6mw\3&gC ֘:rU ah+$1 F`QSe)jzVVw_ڛ8&5 Lz_i嗷GB4?k_ʵҵ͝!z=|OT+$J-?Q)Tbx}m:7u=R*('H:f413W@ .,E=ju!SBP1 Y/M&wP'q=_A!8 }}=U^}#U7*?\$!fDүc4K)o.eDD@d<|)!r @)Ybu75PU+b%#LxXlUzs1;㵘n7/ik_8Dm叞ګfqF4jb l|%qZ1 6=3" '$/\ QɦWo7z2@$&I LJԞ~zsuKQVo=b 71>}?~Bops9BU׉c˽s1Ɖ`:ÊM4HmJ_|3?OV]O 2HJUۭ" ܋6R'w~T@TN5on([?s#m@ĥn SsS0rh2Ӟ"h"0(bY4*xf[QDꚲ Jo( Th<^WDܔ!|[IP>T0-6r0!TU7ΘJ$Iai=F /1hDH0l I!'JЪ2Yu e5!UPbc0eUE撢EC  Kc& Xڀ*b&eo(st'[FۓbZiz|?rsx?qt'._;wuc3G2ǯ_^2:-DRoiO?m-̄jw ae܌hG%1Ɔݠ7e!jy@{ާ=@DP7oo߃dRPi]ε]';ak.(Exk2dY^nT @>BqcGhZLQuV5(@/.^}mf b$$Vο4jQ;V6#XǤ>IԸPJd jSd` l!zHȤJd1KNr+UEX.ԄB̲WT6"ñL9˾gXWWǞG>>k'}'։{M!,u7{vsf\Ե A$+$|6.3h:qH=-FHl.ITs!16bz,/t;;P~,De=Z[?gRS?dg젦 N9N=ҙYqWot{E]0"X׾,Gb4 n) !Ff"c5oDQ$d5>rd/Hsj;S @E)Zg02bXhI$ eTI}jU,!Ua]N g  eQ3ZZWiZHۘA#=v|<oe<_sޅ$׭׏>p'>w+_+}la]S?*CYGKIei%&1`Tܔ^kY=|#7Ͻq橍u6y& N`CpDs㷌X[Pexck @ZoawJ!1Y'N(etԥyZ%XG 0X_؇JTPv*5l͚ Q*6s*ak?TLۙ/{$|ȡE"eg_{c~i#:wF~ѓ"T9{\7}G1lL gr ͙3_;~~7~'bU9|b}g3>x ϽÇOY|-rw|$kϤR6j8"ZU:5E>*(M][lڗVmk_e&ng]#\@ "[C@ΊD ૉ5OV#U][?Jl LcѵF&$[L, V"F2 M6d7ubT !jLDrҙ0H(NFPXEg/r(lmz֡$^Z]Obܕ^ ][vNFpŐδ{l7+句ؘyQׂDRvDjm'>n.D8-?y^Y=>7Iҥa!W>Ã\; ܙ/|lVnycy޸+{<}8s99._:}bfl/9'+Qb >֕$$2dDcC])4`~%൮wƣɾǏ o !#Bm-EU&BPT@Y(>HV&kod$ړRp>sEP@°rf2>FHAISmHT$H" R%PDTu[4g56|ӂ?#Ia}KfO4^J)mt>Wp:zֆU*Ĥn|Lw]3dy;Dz bk}[ך-SWuQB8ጋVUi0*꺌ei;٘:kܞl"b372;R^/_:1ritб(|Ip"_z |[$p:wػ {gMG'UB4ƄN:|e.UJVwvq%!vںB"ZU!'C7o\kyq!;|Kx̅xz}Gry4u)>%U1K_X&q{BʱhgRY,% L^ɨ ;kÍ+T I! 홧Gxw߈ZyKJ=rʾ0pȀ(uśKԘw!sv۞""(2sSa{Dz=ދ7W{7kίF216cـWkYQ Yuf7W׶F1H\U"Ģ={`'KlŲIZy}VK;N&?GjڽJ(#fHq-)9BYe{/gwswfHDHjv4;aQUp˗ޒ;N`!gNXۘu{:,τaߤ( T A6э(M&]Wlj>pa,T榏R瞬#r[i]7TyE)|Y^M "45riҲu('EUyv|n'iQjt/~yn臏g[Wx+%X_#'N?ydnSr&68}MS֤$uiv+#k_W/gהPI J)K1 CI+"#"4`@i?6  }9Z6ض]tLk*oRF Mw{~fkr4%w/wE Q=dϞ=ҋ/mooq1G[[[콷.--={C9F6+<}1sjU`fU 3azu]G}ҭ*bfq=Zȡ>JvӢ+ ju_{Oȱ`ccW>7iK(iiժ4jQrhimcco @ZD"DFH=[L VA"zРQC1nMGEۘvTnB`wPDSB DHąW/^sk**z1~o2f7)Aw2KA!4Ǫ7ozQTIi>Gzkc_{٣N<}[FP.wlߙ7xWj|@k]Y#7j: uc 4o u:=*[tOݳM1][dB`qIHfF6AiЌ+(DN 2 :ּ6J!۹; "$Ȉ"! 0y" akׯ-]5$4:x D΂zA2Fq/4l?֎4S%oY0 @17whݾv^ߎ@%F_\Q`<*Ӥ1 ĕevk7^y٭kwdw.Z 2s3nqB4 g&eAS'U8wZUsm?~r>;_X,7ʻY?to"#'GSVtiIgGL?vovWsյ{[}y1-nHHTĂ% pser8R%i1UAWaD`Q2dJ4Uє908EzmK/\̤m0n+Q%XG0 _76bd_{笵Ci W(U6@ s~may'?i|yAݪOT5Zgc U@1J3]ϝ՘C}O|뫓^~+s龅{}CGN<4ۙ?0uiytjcޞ]RjgoUhTθEev>KZODM!Z(Y;D7.UWzύ!:~ B;9AϨ)C{`,5ѐVʄH@$ʥ&5?BUf**` s* *3AnjΚ.m Ú5 C, #Nc՛iv>24@K% +on_3r< X_2'1*@EUETiU Ǖ//]]#>-Ÿo~.D1"Db$zD&.'W;PZ6IS 6" 8٨hLߥzV6~|FDL01g(!cXPVՕo߸$v,5DSfD ["V3ži;N+=<3 +@Z ,tR~m_(q:̈́9`1(UAC)UܵtCUk_C|ӗ.\77{`~~e5dQ|I +Zٯ|БCYADk{OI=frVu hd\3D LD <2'F~h~p4.n^~ХZIU!`W:'|zi-DI H |%³Zng~Wn0pg6|*Н fTLC]:/n{{ݙ.ܷoYPڞwI9$U`chZg EO, H_׿v:VRԵE֮\=C> 1C-qQ%һ!?x$Φ%Y@0Ol/ͺ&əVn\Nh;;~)+(i8k*4FELCjhb;^'ɜh `E+dzuD wRAQCėxq:y/\:wa4:Ǟ0k L l(4TdeՆƖ (!Уm팿lv?o:r?Z]wUNSAHSiqYG[;48vݟn\{R,Onw"#5j"dc-XKU K\:#7mv+ۈ( hmmifD+Mh16JrGk(uy4OlfM%,I'q OcTnHT53Cj!I - cjAHӄ3GԪ""n$DQ4.P䩏kk̐Z"ue Qn&!3z50j"(*#kv p DQ(нo]>N}ovjN(* e,a:x0${f~;iw]pUTkFdT`J*|8XNyt?~;a0Lu]u5UˌHVE4q EAQ?$,ϲNj3gۭl&g4!ܼq׷֮eLJh9,85H 0sD, uW@QXIŅ66EQ"1#K^)Xy vW0hgx7X$>zR> A@FҦCMI * 1Fkz> Vggb$]JPEQຕf"n뵍!{[i{kkg%,%pƶfsaԪDI|(AA'|u>t:&[D1"4F^H^jn݌V`12Ynd wiwC]ՋZFPd% 7Z05,7FEkDelQP@E!A͇B\fڼ#B]L E{{OUex4j'Z F2`Pw FQU"̛rks捫sswO~1 "lRAThwhfuseaɓ[ܞ{ ߷=>}յ"x#a>pωC Kvh.񴾺uh|Ae۞Y8nNGXb8 ș56Dl|YF@v o OIYk'!|'æiv2&ieĪlGc{QPeVD"@`K**YAK#ѴP; ( ⚙]P εqsʡ v/QBAbUPR@BARUN}oaJVUU)n[ Ohl"ذEva]B}7x1 [%7Gu+Ov|$%i4IY!E-}Q*!Q#NH )!!"(R3ƤD(B$l"``AbEUD E M[Q@¹s;;[=s AQEa7+hE@(AC$ 1*![XˊsSɭm">-Vx &w>c8c[ga >H U9x:I3`7Eܩ44H@I 1D%cF (#IMT\#G_Ipco!1dbHn42|PwiE1f.],WƂ> yWtƠu|b{ﷃ{|"+>=c}]˻__!YL=ݙrjgxt5UL>u$^; dxfcxŗkwV/J-WC#&J W}ǭ۱whrkZK֑Zg9zgm9cjR}$&u 앂QeE"1d Yl )3TC " A*876PHr8U M~!A0~ۻ,( @QPU 0cCM̻WU]zg@&'jD)FPdT۹yۥY1Jb (;*0-Jb"ɻQy `k{mmx~k_Wh\ľGV.0J%&3-Qv䋯`|ͳ%}{:ݝ@*x\B#(ݍU#!A3!5glb [De=bIcT1!h0` A ##&i$:ItO&]|%eZZ2FVd$К˜!22h@J7cx@?|/%?ԨFT0~M+(g-E&Dk(e Xҁ3HDQ+ ."FQ_סrހQWhB֩eeT4OZ }YAxmJ3""6`]{W6,T!DUV++FDbFjf7 QT0h-&Q6!0 (ы1dCr[6wEIDa"1kZL~+w3]rfB[*}%G}xcP T>a4?3+b~챔$o/Y\=xB]N]b^ dz:zGVH^#!DmdĒec8z 2X%fTlu$DC XVf:b "| :0q-Gd5 S"4ËXSle&̨X=%ӋQoz vյ5h"<3;&aD͠@ 1:QE",ql]Girfޕ޻&$Ȯ\F%cYhKk9첔7=~XY'ؖ`(En='Urʥ˭HV\|% QPQtu,SbU".p9B !l<FaM{(QdBR+Ԣy,[caje!Kv AEL!4d@ EUu/pP~1".p|p]UE4K|j"A )eBȲKh8g$BBR , I\@`,K@z>I%F֍4ټuh?}!!jZigu?ҝ33;t툯D1?rK٪rb20V]˶3;zbf0.]LU0"HHlE%۩}:w=%:B@5Kzm۫Iourf^$~zy 5 ia3 !FU !z.FkP$Tm"q`a2gVzfoeGD7TUU%(XcqQa0P,J_U1,Igf9C}PE;VU^E/L͢454uBC&"dbgY@ 1j{~‘J1@k:9oe*Z50 Rg'ٷe5{mB4qE]Qz3IH$Tݢvc˨w͋!B%qaЊ0*ԍaa|ϑBBx_ qZMcE$T @BP V Y8e[RcUV0ZVRy|JcT=?}ír6"Vp8 X讏5#jsIbA͛7YCYz^<} un2diUʢC_hm!:ƙ̥XbTgݣwj 6X NKVzK 9FvpPWkM3`3 An5ℨj_Xw$͑Ck"XL;~SʒtMlTDnI_ 6 CB#*f{!F]ꛅ>]f"&R%0ۘ>__}I jɇVBPLc,!>^:T|ME 3)G;3Tq\Z¤qFaf\tnQsݴJ h8o@wbA1ow! v;OVbL=苲TFbBlʺlgi&N: >`g{4l]o.3b` MC vleK򮯤.'fֵ3P5A@$gW0J5d$%´%QBP=z~A 52WW! $D6vva~y!D$ rӬk2Ag`olЙ¸>7&}VfaitD!$10ܼ:ݗ{z8.aRI5(BQi>=g ߺ(߼Xfc߲4uN&EȈfTl룋nߒ=3fXݦRUs$V~iJ {ybꂯiYb+_hEe9.mj'rR*&Ibڭv!LC5Y EaffnP"b$_Ƴ[={ql٭  E3sbS.=(΀B # Z G )aI ƀJ"`@;92[T11GeDΊ4*ܶQEȏF~zaϞy(>Vb< VVTB'NݿW2!cÛˀD ͷ^G65.ȏ,fH@ A04>o:U&M+(DHmV4VEVfb tX;Jɇ_~y.5a kL3A[SEa%X#+6Iqaw\D،_:nP:YzKZ%b҅4:.D1Aų<1Vڹ!3ǡ'i &4qPuV?I%D$"Db” &, xg{f!vMR0Fx2Vu1:5~^|K-#W`\,77>tߑ+s 7̼#xRNh}zeCT"zVC@E d9{+%|h a%IB^%S8.P{u1M53 ',vO,ۓܙdgώBf51F$dD cfgDDEkE%DBHpxOc/tZ^h126s<%uss'I$ɇ;"uyUlM=vֲ矽p+V1Lvwmc;(odPlm,hSX`ucUD:zTF "AeuHͫw>6&2BPBD$&LIbznIThyeIU'֊=CΙY5@E1 (80i7آ~Nm;4܍8hmED ( *kyӹgSD{Oʬʂ֕ߗ߹svWD~+*+c8RY=&~ aWᳯnegGe/}|x%!8`FDv"{O1؉sj`4UbƋ!* 7o"ƯR>7Zv&Iל-X$4+^z8sVwyDl6ڑ"D*I3<q}\,HDi gDD*N9?eYqT  K "z*X>y.޻mȗ냌9Э5Jޟ-zWnw}ye/έ,Oo߷_XPFa޻{q܎ n"=IڷH7aM$IVI=J![() A-x!_2ܰ;}ù@}SQ;N"'TO(5Cd5kgĊT)o4`9lo$H{Mz(X!4HQJ)"a HR#)z=&jB=JJFc/xQ OȤ$fLQ=*A﹪FsY'/.:&PFaܘ[W>EÇuz#:u$ٱF;j4zg}4U,*hV\AxR$YBA$b?@<#)$ 84VQ-iMY=bu=R&IOTaf|W^|7= rwXsY!Ȇ; eS*&ChPJے4kk޷6N"s! P#^$Fڠ֢DɃ*ƁʕH=xT#U% )l8?Uuu^Q/%)wNuTb(;ؿ|[G'v{۲kͽ5FCe`0 l.cXg;wϋ 3 & P"ʲtQU7qA^!*;0(I$D>^>k#KH{޳A.\LN@=f[ CjK;ΉB'xZeȈ숗%JaDCp[~ 7(X)N {Fa8Q5j5BC_@TJ<"6qZ8="hhzm`KF?B l=EЬE7(3ʲjZi\ea& Ae4""#ƵS9ʽҥiI] ;g=}OKk#'&jōͩ嬇H;Ǒ =t,ء'tݶs@t܀3\8ȳ\^ȋ_d`j,D~$T#JO_e rI >ُ| 9+|}dK VV^i-NOӞV__磧S} -n`'IMhYςź a.rDXq3d3͙m9!¬DJ(F(c)*(V#yd@0Rf.. zBO}#MdmtdTמ+nKW+'uH5vh7YǼҁ[!(A5ٶCUY;lF=;c'O=xə]$N⩙ISk/.>sؽ-<';_d$<3زQz)NR'i"1&CH\XQJTj1"uA5բ:z,>{ #*gj23.m' lXG,(Y xJ|27o2f{G[%"RT[^YY;<9ٞo&WsnOMh*#F$R$nTQ쫊@!lI`qSP;[آeOvHz->;}ZVX+9[EI(<͋=xbzf݈'wy賫'afl֍"313N*(a+Rj0;q2XoD^@(JWN7jF\&F,p=x!V~;Y% @,u5u}%~'kQDf)^/' dN(~!AvLڈ J<8(2@CU2 U{%5W)]yZ6 (r8tx m[ 1ɮQ6SWVLуx@ 588a@MtwVֱ+g-U"Z}P*Q k'R:煰鉹ӧO kNw֞#8UTQWef"/^U\{rr`Z$tUYGisY(m%~_n\ZUۮ{i6'3s EY?ypt^bRFҚO>r/̣+Ax@PH;mq8MHS"ՅP!2(pF!b"pQQG&ؓ GcfA,H`D**h4]ql5JA[K}T p+ծ=ivԮFS1( Dw:=Ɣ%y=a" H"q#@R._c*8~#Fw&''?v|]jjRdeul[ BĸQ@"QZ_P ɉ]8w#ta^ѹ)ȹN7yۍnV덆T۞@EJi)K@;!x(BAp 4hT9$gr / c&JCY uI҆m-/ֲ Wl6 [Qf TSAbm_- б"vzϚ;{,NL6agC2pGa2OX=?0K`yڈT" 60ZWutZ/?$Q TC%҈5 5j(5uC `" Wq\i &1&"Vu aD6TM$l%XNzim]Ea~ٳ]'`:XojLtN[vҬw'Q_{w:3̳Z.+ĸLjmPv꜇$YP1ɉ<˜x"F%$CBɢ(NTz!ϭ0BU&\Y%z VZ&':mY.--Gy);ui"9Z}&'D2ckSV:o"vh0 T~3,b=nհ Z1hBUB9FPѡQ_9y8VˠE΅CxPɡނT-IjChtK%% lf7oP*m|ǚ'ȤͨѴUhTUtfIFFM&il}K5KK+N`t AC˩g&'snfjAEb+M݅[M V%v `0`Ϥ)kB%J{n)(6NFTZ]Y($IszB8{.+QT=7Qli0V=0˫CϮuiD,+aaGOطQœ>rX۟ ԅdCC#`@JHD(POҩVu1+*(+Kt(H 4btjq_:3AQIdعJvo;" &>PoC z sIoʼ0pXCV QTkt:1jY&ۓsTr̶mVtՁ\e/gVdi޽{t `fZ܃ "⪏ss6Cq^Te ,J+ffaֺ7r' Q'V#sKhRSA"VOcjj*0/ٱgd+~ȳ^u|``HO"mA|N@[ZvËs1?E_{ XPa[/5*ARgg&D  vz%fڹl\G%P]f"[%auDWW /y-{ >̈^a_  IaIɉCc!=jӓOjnO/ur MvhGe ZimzjV;kq4BfZP/ZQ JS7/xkq*TVεh(c.ՓZD:QRGK(dՑcKbј:k`28wσWVWk: TU"8q/!JO--m۽޵{=}i- uϰOF""7R,IS-߾ڌK^H 0M3um@c֞tsk :'ّD{'#{~ʍr^-l-0s6 i80?` `)16jꩴ^7F⑘֦\JƘ)sjl̥ed!Nby6 Td p#VuT<;v[kIQb tHRa%Jʪ889TaUԮތڤQTOSAi\\ *딎;&i$Q9!sD˹gl=xol6p531XHUF ONFU~* G'=^_rUBSseQ +^ |3׾-T7LN+ȁyk1ɦ  sD@薔;- uqۡu@$23fRњl]8MЊp=}ݳUÔ&{+˲!/$eaY*Ikp"JEyܙzFâXzVqRkN.d*7uf攖յnΪw?XU)k6zӆSݶ Γg>/{˞lC'DyOgj4y^tu$4T.w_du o7n$eoo6Z ;{ņ(VHi։@ևy^vӝj9:1]sZ;qY%^CYUv?:~ԉQiaTGIj$+!Ĉ"po[z|+A!Jqqt$FF|Ų-9iE33 rIX)*~ڗn^)UAQ(saHd(hȘ#J7ᩉ ϺF G-Rp̌r= eT@:'(7~L14XiyeIDs;:v"_NmjIMa0XE5*\بU65cPY,FiFh}4zWd`Kߠ |pdڢ(ʲ˲RDqZjj[U.hm\||u۩ɩ(&'iz7³:sgX$Mu]Y1EU1({B@=wN6A:|D,<D6+&aø JɆw{/}kuGvdb!<0ZJ$C('ZH&&7876L *޿AKlA#&IKxay3ϴGfi2hMt^SIQۍXd3l`4::,l '$0HVhEI oMPxvQV;J)A`T&NZDTJWZ[/"`tE)s$= {9ܖee)":EYzoP&tc2 *IXV`ט\ +_<DqmF U#W+JA@S>޴֏0_ʥ1f4 xD"DJ*@Ҭ&cҊD+%ΊegLb4V \10Nؿ0t/8Ɂvt:WVoރ8[g;Yn8 &88r@himczè(IҶR) YX)6j2?^k^[[SjͲ̲HL$٦i*,_a(2q{2~V#!4Ƙ(BЀ4!p4byRٗE9*Q6 ');6W>g_xCD"-r3ӓ'^%,{&;b'p60 @A}˳DŔFJ+@D6 FjHE$ڀ ^*'y&eō4SŏkySaP#) _TjhWNjM;|Z♽bőK^B#!*/Q.(cVYާ+ghiap"S!8#XiMFPZRlACb\U9 @ D8/Aw?g\t'Z{Z =pQ,φy ĢԚQ̻tfk&FQ 8rЊn,^e&gV2`,Xm{{O__Z!$Tpxg>ukQ4ٚF5Fq 8?Ddq٪ʣQޏϊ2 *5*I h"k4Q,"*uw, n Q!)QhRr6E?/!b?m|E +{+ @J6y$@' #%UU+4  d5$DF1Jcd)**W<8&hRMKB\9! =Qnx7{n3j-Dq½յێe#'|Lc5Lޞh4q'O7o9(F}d]0I[tLP1 {Ec5,.urlXMTҊ3v?y3fvuZG"2{!TPC2 Ϭ+ 6UިVD9,ϋ,(ɪZJESliMD=c\Td*f&z6p ij#5˯4{VlcZ9q1TN4]㍓fa왙oRA&@b#Z:90`ֈm)JV<, fDìjqF@+Yl^eU.1&BI 5R]lv4nǺp CK$T:7<2\_+dKw#֎;}6c vf~g;ҨFSm6SOb#s1VvfVtP)6(`:uH>|xj2t[5f+opcbj^ǎdB^oX~oԓm@ ;c01L0{![ΙFZK:@kQ_PE"Q6;Š{, pvaDV! EfʉKm6q;+ZCJ!n@Ii)D@_rӭ՚koڳS[:qUMa۴.$8dgۏtLj׬/؉.,(B,^ z($ $I rf@3 Fv`b2|i*$($sˮ)MTSlt=itd@e?%YVvL ,:ϊ㇏|ʙ7ݴ~J`TqUgbiS"''v<ٵ/=w0So$@Xȉ?X Ho&aC YQ R$خQ#4" h#D4Ahʞ(B uNlEa ?oUɣ)"nc zFŃ V: ɱWfP Sh!GM'He9@ ( G/KDDyb>o@=<}?6~DhQl!!F( P@G Q 2!ƞ#" . eƈX6j!Sf0 @&]C|1N+<*֞yZ'IDZ}~y/V]?#2%<{` 'šPďB>t !r8 DpQ(B›QО4(Ri #!mG7["@Dp]P X`Qv+렎J)k'8ccLDDDZk,48Fz\r@r "HyJ0S})R67t̡zB Tm8D!BF`lYlD(I 0zDЈVCʊPmV?F_ˊƘ^wpn4Za& xneUk~Gn"!z %FfFA {f 5!22QX 7H!h`;)D!7h+AX#B -g`n/h?h}}{ V)5YKKKSSSZmkoKſLd \!H 7JhFK*^B"* x|5(%f&Ba0d vO(Є,+ H̬ Ō1>|*DJkZk=3;;.?[[[cFqj\/&OO7428VוRSSS/{|MopO!y Q!TADQ7㔨h́7[v ϠH"Ϩ@Pƾˆ +1 b@$D 9)0b6 R~Ѧ39R8~7X>[wܪN%[/Uz%3WoY%ctȓ auމ Z{|ooOO&I[fV_ +_ ,{GΣ8_; yAXXwnʋF~XCHr& BfE_}^u8ƹáyz=Qi(a×"bQ,..c{^0p^`i;;>We9{BxΝ{BG# xb=vlu5Q,׼o[?$ʿ*%$ &O" ; 6F$YB  *V ȃ0 )APH@1P]$(VHQHx&Mk-Jbn? [_9Wvη[8u7+肵QKz1lXk\i__{/+H CR7+# c@mL HC(#Q C 9?EL"dH6Y:o>m"Z`p̙psn >3?ihp8BƘ(dyp<-J}:5v<3wzͦw*TZh4FAJYKdٸqf'vô\3;w eO{џ~@NDQ)$V5  m *%ȘDP"R@DB0*E !M*"CI)$ KAH&bH Pc7YYY){oݰ@6a9VhwGCt,˱t_?/'.Mwm%wn'urB c'm uNE>]~״BC*_#4DهDM`03 ' !%ˆ< P/! ,3{!Wp=/xat:ˍ8h1&9 6hϋh.l7G· ΐFaPDkOw53;- mU "SJ(R@EEYn5q|ٓZ{w`)Pyʝ y.ʳcÀ̂U`юE;D$ ̄s9E\s.:A'>qԩ=)m۶ Dg7>}tq(;?7ۯh"˲f2ڌ'fβjF)+&1;ρ-X:'[8^u1#;`_L{ ^q䢏0?o߭[kFݞ᛿^E;Zu>7슅KQFV׻ynKhq2ӪO7$Y:0lLNtF=2ҳ,UdHB R x`EI.D1V!y="!(R" DJP# ҉ bIIsę2imd#TrY'Dc˝M%/y42(R !QH̠Q!Z!"^i @TX=y DcD䱉޳HP\Z,UHlB*dQ(0u / {EZ-xAseYc1=ֆza?xnajA3sRJ]{o۵nnW~W瞷W_}uϜ9s9D?t.85o~92F軾~|4}?[ouiiUz>z&а3E^Dg}mȤzϝB=`cQgV>uǡpX&цF wbhEI/eJkEA"L rʍVJb [ޣBHb印b0qa+*F *^FfFB Q!1^~?>3aۮgߧUD=6(Kϼz;amқ^lH"Y=rd^On|GSsFh"(OSZiIb5HJɞ=9sUxAU-,Ί`y(g8֑bCPUh| w h%jF ly*`(` >1hCDa% 9i/rii)Zj(,۳g޽{nbb"1htfffv)"!6h4n"Bp8hPk #f׼5o{ی1/zыn?G"W-oy 3۷}>8~UW]w`|W{Y^^6XkgD7MЇ/9MqxǏ菎Fn[n @J&g/oFՖBN:7} ǿ\V(h+0* ڻo?~uW!Nt.~Vib\DBJ늽w g{F*5_AYYjYHrHBTrDGhFzA %g9\ppQAU1hB /'QJ}>sJ狋ؾ}{E'ONӤ(^Wc+kiʼn왙>;GMV7RKjt'ZQȂ-c1"Lԣ8"A9(FJ>"(eo Ht٪pR&9T8(IuUQi}@4+(QBDȭ8i)9P֯^wĉgp~nDQ>}z8;v,ZvuχǭW\qEYcQ6>l@?]nĉz~07P0RΝ+v977𺻇.z x +x+^%G(Uz/D,rޯƧBVpxK!>puo}/·l/4YGr7K1Q6'Vman2h%&\:Wz eK4N f /*b1E2dWx3FCS!v+1DIP+-ff4PdffRC&Mk}=z)fUUgϞ??./}>9D8 &`S :ιs箹~g?رc^obb"`Hs۶mnceS?~=eQ}`ϴ ^1EI|f)Eԡ,7~((bAD_څ/ׇx{Ge3:_/ْ ¡o[o}+^ G1 }Wzwy>zG??BBSSS#~怌ʰ[e̙7>Z_Y=~R?*ی|>.!DW5/{s\ҹV :냪8*+"h"].Mu;1[GYi/,ܰFFC*/+DRid^qg}DV"mYLJZZw+EE:ZjY$TeȺ^O"D(Qda׋H>PaCkmy$IE ˒$)Z`0 !NPEQYXh&yh/6i.G۾-t/S+0봙WN|vzu4ZM_|wdIH}r =3CB@d!&O~O㲹tlvx!cL&"Vj0yֆjB(K'q8h6l:!nw4Ѩ,5:aҚ'zJCe7f0WZ}frf93ݰy14)B) bD4Aʕèj;O81;;;===77pVVVʲܳgW_i[?d(p~j]{yVVGerQ0ؒ- |icϾ/|3q7QpqBcZO\'_>kj"^3)Ij@!VJ#!Ea)0C( 2 Y9[XQYUΙK0sVPFW֕U>UeY*VQY^M eQxM47٘l(v˪J*AYV"+YXi""fc3luEѾ<{# l)mbIJQY(lsܹsQZ`Pggga37\ٟ}MNN03$I4y<"[[imVITwV☆ eH ,,Pcds>sDZu c(bfeA)^?7gn7_oyɷFà5+D ]e |{W,//+VU5Jܿǝsh4wqڳ믿[nIk AA4Z?ގZ㷶 y[j5x(OԵǨ3arDDkDuz)Dtg&n r@Q"{gԞOݿwo@kf" 3 Ӟo_.-Q'1(2 "=W&qdb]U 8춞*i5BӃ5jZYeI8眵4e'UYxOO[~Uyu$}'iOiyyh"D#8)zxo03?@DʲO}S?3?P !_q H}t]K=Sӡۧo?rtzg=}.+ڲ Hד;?{賷^bg^෼y7hq}{uTuuSw ¼28*+s l'sS XQ^,z^R04kιkc(ʲ,4]Y"`ZYG|ăwu_>}0epΊGc h%.m"r7Zk K6'NNiټ:y+++J;wmh4vtbԈp lxx/|@:t(rɹfy7z՚=vXzbk-%\'^lZ|mo{[7Ƭ o\Dnaak!<uӭo-u0S{ܻz{u1mŸ|O؀"ܻssYO(A0"S}ܕOʫ.߻o]333Z(ԙ;9;{cG鉅ىHS-MQ0?unZox3+zwe6\敓h4F^D^T\$k{?9?:y̩KY,s.r4Ѩ%w&sPmX?___yјZ:u 8ĉgΜg>sgPY9*c.QBgǎys>eY7~׮:t(//4Wy+x럯՛gϮxF-r"đ]l>^s\/_V9V%ϻar!#DPF`l̿_xѧ}kxKhRrmU^Fi8J"sջ{R,%MSJML4Fu{_FYgY1zqqըEQd4GZco0}7}gmn6ĝIUz$ iql6T,(?p砶w3t鵥#|c_~` mYe(5tݝwPDJ0~sss0ieY...PP599yĉ8k*dSa|m0xoo[ѣ 1oy[mr^Ջ(F>uW<=?s!_WC& _zu VV{Jk=/xχ?h_%|ӯQƗO?͊Rc,(j6jqi"LU;21֨ρg(Y8rRe[^ 14Ѯv,ub8,F5I(A?FYђ8jIDZҹh諡fqߤEs,G\8MyGNquY~dIϯx<;jͰh8p`4MMMսl~ _Y`M1cMuNqk۶m7|{w]_B/=y[!{ooyk^ŃW@e*Đ&PU~}Yjgά}E=pٶzwAYBY @ Y]N,?\Z#w%Bd4LLDzM@Ę:Gy!lGRw 2@ZҨ%_x("̄ZkΝ;?> Bܾ}m&''fh4ι~_~7~#`HìFJ 0m?u?8(z_W̙3kaa!`B8~~z׻5_~>%`$",p9 ܧ~̋hKp iysJm򅮠aia\EZ=7u9FYY7 Ƙzj4J|]Uڊ=uk9[Yc :B^`ZAi!]UWFT^֤Ht+N5H3ĵFf􁝓Iir7,zoׇKUSSSSF#e]n4j6qb(sPU<333Cm`0X^,Ȅ|5c#E7 "ҘHGD{ڽ0z_}߼x}PxAm "co>_/izZ)I9'QGQdEL^Okb}7˪왌"vԦ'Z^"eQUgGuD(MֻaYbv3S.rZ1J!c ,{Bfdb',My[b~8p8!/@{iZ!*$I4QL*󥥥ˋ=γ˜L}w#?#%/y1]rJ_urZ處n?j/a=a噡~ßbϫ_O~d.s1 [ot~m YUZGiRSJ;'^vj7/6Q#6޶{׼Ҹɲ5q:91nmW^8oqrQvNVNk f"p\1ȄJBUQ3FLi VNRxBdbV:+lK!:&z޽! ˲=g`᭬fYvjzCPPei_ooc~Woo>O߿۾mzzz<;o}k(wwL{_q [ϭ?/7"q+`CMRFO 0ˇEԪ ~ üO|t.fj4* S"Zj^XV~0Ybn&̘yYz?쮏V;}' 2h"3n1EIgEQ42(35j1ee*DDePI,m)qdbܒ1/nO>vzwϞ=4j<@YfSD.ԗqVPhG0fFE@__y37}kwܹw={(zޭz𑗼%oۛ8!,z+^vmSJ+<P㛿_췶MJ{Ǿ_==\=b@v:r#뿞?K{vyDѨk#qxY}gͭ˳G1*FϡшhavE鵨HJ)BU6kZw:L9,FYk!XxID*R HlV=qXARJzgSq6Mo;f{j>\ղ,CD\ K~ʝ5>-k?^/5w]z_~կy& !Tbk?goŽY e4bj?N)Bt|Dҗ;8zbe۷ojjjjyyf_ 1v{׮]YjZ3vviy%‚9KnnUXQ*{h?OʢkL6kQlV g,)D)z fǩs,#Vs2n/cK"z ]q5nT ,b0=[vrұ'L(F9hp1<[$8殺~eYv۷wh4B~A$ySbi4Ftu$[ H^Ja1G ?-.~[LkUUWoXLYOڵF9Ӵ[;@ YV:Dg Γ`س%J)=['Zv3Nݚ4ZU>:zTypX sDrնV=р׫,C*lY8 qUk~?+"6&뉢ް]^[âREimiEH)"RJQI 0B4Mm`0PJʓ$" o0[jZQKc |SuxY<aǕsoG4z??9b (DǢCLHt` Y}" Y.%I٦ꩉ֊έvWA^ 3lԣcnzb^{Ñ f#jeUU)R؂rPV1>זQJ7-4I E#fFe?Nx[`S6{.MӰ///ize;wneee8ַ3g,,,ڵ+8\s͎;VŐ 8ӱ6>rQ:!4*̢| Z7^Md>[,|Y&jQ#)2Պ/48GZE%h8#ex+k^oPeK*cF6k Z "!r(n,Ρbmf;|gI v.̶'ή=y#"{LLm-#`y8C1Z-YZZZ]]ۙ9ѣGJܿ3gzj4QHE+++kkkz333SSSgO-˯@pt7#2rLId+emٲ-0SvhUU*fi\`1ƶd˗/w}W^|>qb=u̟A|`< P|<Z6Z'*OGSe֢o=3~]?X TQ MDA:1ҼʌJk k,$UA(b8M+[iQWdc黽!Q8,)1͑}BTU>N=H%0I3B4#xeqsΕ$gox=Ŏ?־N) ̙3uWlFQt vӧO-p@)UOc={(xꩧ>?韾{j?  ?4+ E`β8E^D輬aGloL{0PJ"z"2/*弪fEYTW߬, sP 8#3H-3#U{o VQ?Nb2AH(TqаPyl ZU 0֘°wY:($-6|e^uc~zkkɓvh4 GQh4N:jZֱcjFG&\k]$55?O?~j?f?gg?g|Vg__{ᕗ_w;8H̖$g(<ҥU^˞E< aAH$YY , Il{ÁXWsq9gѹV3p0LhE14wYm^EABD+*4(iDeWda*RZH V?O?zhEk]k:G05gt: 7E&>׾^xVfn4_'?ɏ|#ϟ>P͵(+W[.ʟ|3,O[P+7?{|ɗ^)堚yY9q;4wjYBκ$`h'a̳=nr85dSOʯ3qv}qP'/n3//L]׿3_5RJ!LK7Ӽس,3i!ҥ/g#GAa&f._4xfYE$;ql$z$QyY*P,ͽ1"Թ)P I8GJgiVmn/%IR%>饗Q%IbK7nJxLD/^gAuuD4?O_tIk})CzqQtccV .|ëDΞYysg;S:Ǔ2"a3#16QQVR A(˲̬F`H %Dˢ**|P* .$ q%o4"$Q@jT9de%urwι$I$_|_B<ӳ٬6vГur W\{.]FO^YY۵q|v//Oj:vQ9Wr-o)WN{z=gz>#? W|a o<]?w~#{;77.3~Ǹ|ro{jVyP:w;D:&!>}R։52i7e <͔=1CZ8 ^Yc< T {C#k NeYkR %J.~ _g>/~q{{01utw"p6Ε'>ΝښfEQSѨ֭ :z/?GW?5QZǿWwtYd{wku?pM2SVUYZ$+)ZBZ% &t׌x N"wֺ0 Bi:s$@|8Q @,ϑo$M0π9lQG@)rtPR4\i>ph4ZXXgbo;ވ5u ^~ꧾ/mll^jK./oo}"Z}Xoܨh#"Dȿ~xg(it>0o?7Y cՎ/=ey~L γ_W`go?HǓ,M"N+X x(I %pUY{ﳼgYYni^ͲeYcbI[OalQlnsX 0Б@Q1Y#2i;я֟Vu'͛7?_x(zKN91G;o`7é_[7?kuG>{;Oğl?gOv;3:uT{;@|!bYYWZ8b|H) xDqZ$ 6`Y;;)T<9gZk{kmJ&Mx( t^J9(D r?9FHΎ 嬣:P_}sssii,K.u:0kwww2d2AS-q̌=kw "+w|(ARoBofxy P] DdCMʷ /\EP0Њp0 - k2E7G|B9ܞleUe1Udwi- xNq>-v{)*~utpbmK +;7&fӭ2,t ڧ Fr'"Q8WWF/^2[nƩ5S׭@@ADD(DR$HiR(!H Jj-Z!FRAJk ()R +-/\oIjEfW0a@FE y HP)y^a@  EXJk@ %PJ֕gfT{者J\jmgK.CQǷ$`S p?B~9W" tR"B~)ѭeV.̤K=ϽF4Zl;Qϔй4@TؼAt(Pdrbқlg(q悰2f79o4wFvR,!Gҷ EZ.j8zHD̀GA!:, !d`)@iAB!&rR"" 00c( ! @!Rdq*H(QG5LHI(!غVJ" D"F\Zkm|*S:vI"[UeUyMy$xh= V<"Mgj hkEKm #<n8\wУgIDMJ)9p021IӸmw>G5Ϟ¸ȳ*/vk}a0 0v{"Xh-X_VMf7+b 6K 0JQ3ZwJo$ke=EpR&"@>xVdqo%) "(䁐#20ԒZ+ ; XJ)HH) 7 ^tS˼Tt~w 8HPM]ÈRk @{*gzWˬuUYEnLUE匱ya)mi&a3s[Z "ܢ9=|cABi5gөҒ Bu->tt\\g|! "!KP^S/>=AJyK/ 60 !07Z-!@6BB,u2T<0X眃CH:E,뜳ƚ*ܻ*s[Ycر4̌s k$hH;ޑN&Byg_ןKTIvwOCÕrrX~40Bi*G kg,Wq6lM',%MPtx)%`WQxHX&nL}[V@@X;be#<"Q@Q;mdiz80uE HAl\?(zs8osuh9hYv"3/-qE@'X`$B3FM Y V e)E1)% KiqeiaiAɹ󛏣{bh/|ڵ8f&W7ҫ'V:]촽m#tb0|-Pp" xXe۟[<ֈ&(^.V[ d7h =2Ǟ+ې$ V٬һjo Z{kZ^jePʰZUZѱF,S# VK (5|:<{@DyGQ02r#2z@@Pmt  |C(-ዙ~ƌ3!aFF3k{#! @$% 7 %8n7^$,G|i ?ڦP;sr/AٟgZw ړyj{>~G~K_ڍ]`7BEUx]w;sˇX >Z(op瞇_ŒZ77W^:ӴdBHkS|f,6w_~g?w}:snfBak?p3?!ɉ^::eON ̴XkWf[lEfd )XI_K4}C5ôt,.,5 I)l/gUf1MtQ"0 C20e  DX*vz[>P^?;$O1Yu0wl=HIJx@Bg;/D@Io"PJD'nPFKr2{ɫ7Y|ɉlFzfALg)UU\Tj 5fMf3=qt2YY_eFyZ;~}_Cv+\'fuy拿ҼJ9sy;*kgOS7BQ2M>ɧ'w}^9'H.xP82zPd"È Œ&{鰬8sfLK%@peE<%QwizB`uV t&ݭ7޻/Nc>Fiƅ o4eN"t4i t@l Xve6=e|pz E? i<0>E`Xg_U@ ث[fوRȮHBdfR:Ȟ tYyoqZ:z{Ϝ;w}⩭7Uux{b_~w>6/m\YUXF""{6"cn+N~xieF.?oZ*uoDqwoί$(mc N8iXeX'A)t>)3@v'V僼JopY0vz֕quv_L."+f@ Ebq :noG{,y:/ 0&;c=pF }EkQUVa j4ΝxӧO2{gH1'ׯ|T t6m4dxp6Z3q;Oj[U`{/uV$ qfZV2m\R鬡 -{i w7Ux |=\'86F,F@ bpGzP~,i-<{"a[SB )n~ώ "\emeVH{ҕ5D4OzS*ԁ[d;RG"|]IwZӭ49e{4"T1s/z t;_o􍋯6[t2>~<! B P,-Tܡpt0Y+S뛤 np52{`@H=`=am(NQ#J/y\@C2{BD\~W/^鏳4e1tBdۻ_Owo|} Eh6}`nyQZ;u7|So\QT:aGHkK-_{݁Ry<o}X?BCEq]z?~9wwwoʾGWA@85J'A;yiYӯ_,t[O|u{鼪* OCysl10+Q\nwEvxe֚)E. !y8WMe+YP:ȋYwn`Y^t^ oLa10"׉P]uu{ދjޡPo\ݹpplH u σ@GQi4ݧHB?1=:oʲLfNfPWps.IOV|6\\y=~77m\`2lxݻX*qe߻9w,9gӽƒWyQmoIMϧ̩~zsqލ냱h(v87Q**iıa0,{V=:Vy՟-+׶'݅fכq`VlY :nm,VHVB| O~d}{O(7Z] Za( k r,Ow==6܎J&CstY G {DHԑ32#'3cQt^^޺~ZND$ ѱwHV98"!,*/~׊Μ>xN&+^YYh4 gAxQK~}]';Ѹ+;TxHsQ2.|kzmd7or'9AkOzݒVd2ٜdɅn| Q8:q^t?/[A8gaiVu&B40Ul Bլ&(Dha4,=PUU)$0ʒ`'}=P78)m Pk(bݚpIn\J٬Uh0z&`fn—b"`JvW:߸xxٵWɲf)R77y:e[ָjВZty˹j@Ut]RFF@p`; o j=yfuHP\yMd|df_9y3xɽ]O>zo>s=D@"<+Ҭb8L*'@Jgh>MW{VT}&5BP*4}ꫂԱ8(,*~D;M[_۬G* p]$<"OdyiE*˦;vkTVsVi6nǍ V 9o5[V'@jB$b=M[|xTZ @@iT l {SӺtmo0گ2[WBsWgZ0Ue,;ƥKVPdJhcM^WM hT辋/7  2\Vo{}qsMXjLޔ(xAx,ͶyiŒrk:h-Oqy_~uwonn~o 3E(y"`1Cxu~ _|/.x`! Gh80y DbӶIRziGsZZ\8^=rkƍgN[S AS)N}<ӛwXx],_xIiɥON07n8zϾ+D$+k'xZn"kWzddʋxzP/W/HGGUm@dz2w֠EYnyEJF#VF}?\{y:{?}ώvwuowO|I~V4VLeN;as$q^Vus`f[o-m6$w}Y3'fB7v0 *)rٶI-Q,H \uWJOC󸻺ߟΦRf KqpY.dWUYdaae{p3G8^;[Ƚ}n5k4AӶv =xg=9BgEqePR8d)!8<$)uxP&FFvQzfթ DQViV`ARJȅʴex7T&(&9:Ze_a^l5>xJSWUN^ɌK=Qdy1Oz_׿O.\xW޼~s8Wɺ0Uy"Lw:nZ VIlU%ᶨᏲJ8|읐W^.v9օ:%aD( 0Z'ql*#@DVK{Ѵq+O}WU:"<,O@dxunTZxULJg E_kr<gP#{_+A{훛VJwX5޼Q SԝAlVlhvDkN yضF+}YhuأD@ zݣȞGG'50 5 9I``k{w4g"IiZq7=a"s Z =8k k"2 CkmQTjgg<yU\ު3l5agQ4K[un2% ZGBI1~hNf3Wq:"n)!$%ygùUVwMf#Mv,6 l<];`<f剕EZ5߽;V`4K\'z"S!HZ I./rD"RJ3"al!@y$= s':{+*`@F!G?\vs4NOלWI0E n+gyV/]i ] }^eyka!NݝN_~{<`eY072oɵ%te%yn0`Q\x5i,YJJK3 B{O uxp=M!U0`f"M3ekL0޶ -M o" $s1D蜭ujsV2ʼtZY,o4VY$ 4_uc;7ñTﹷMt]&$I2i>/2MGtƕZKaRa(uڵ/_R6Z|v IH:Ht+?cO<>Q7]^i?}<YC o@cFc P/Tf" < `f#JA5f37onlll:sV23#á{WS%e9b4LٞKwR W.0ڟd_O|Uføf 4J7v^-J [{bD,z='iBe1Ms$n;/ %=oˆaNT $!}l Ȧ'afj[=3rs*DN3`d쐙'B= 8+H.-KLx-GR8!g9@  JAhM @PQdYfs6/vgU9uog_|j+"UBd󳝽4 Fg6ä»N"DQ#i6bgѸ֋7&O'{ZSүw e@y ÍlXti=޷ݻϞu*q^JTDd#Z3O#9:ށgL9DPyOu쐏={L{։]zߨۑPϼ8Qk,sJk]cY8k#{[Yx!fMnKSs̳.'>;3MFafaW/ηnX*MӴ!d'{/~{NI]}C2w9{jyiϼc[y^Ӽ讬uО^_]t1I:2Fݘ̷N[Ywqh- F F$!, l}g&$BzZԯ\4F# Gj#0zEDhv*TeQou6[P8H4aߟEݭFLRV/}1Z0e)%@lwBtˢw}fY^至>[ȘY[iomo|2*!Pxc* W C-3p BwRC·;ӝMEGzJwrUԅd[wwڱi^kVk#*leagQY̕lJ%0*!P0,>Ϗ8 ALc~{zw~XF0veҽFٻ|⹫K[uabf]kW^,<_d P w6`8Φ[U9ZKIZH)%HK@KR(,% AR{|T0tۄA4t V8YY53 HVOr^i' l*ra9[eG"W? p,(w;;Ɋ8#7hms|uqLBVϋ4Ρ cAيHIH$B,盁зest{i)r"„() `+WTEۺx0S@#Fc΍_zmENf^ @-( MBk FS;5"|&)rŵ0[oo?LpA͇-'Ft[= bVZ#&N7J tVxk!Ǚ>q4?+sil8<aM۟zO{2[ܼyebEU ! >\3>:$ddϠ 8S"|@ @ ]Q7wvnlmiaԸ;t;VA*%c8V7֤F7y"H "5ϳ4-%huxa;ce3'x~oZڧ)\^! ³#ZB@< !\MTH+q:!H Bb"g4DZǗgXτ%.U(QK B%l[x0z*X5wηENnxqHt3 vyZm @Ƀ$w03uh?~78_UebRb_| it_Sݻ6Z 2Ïww6o:5R͋|.tϞZ_]HV襗_ysh.[Gf};~ Y_x_սsN ,cFNIU1HmDSXy*;`-Sw {na|Iġ.-82ϝ3Z5 P޸?ԌzQҒBX)> B#;d޹տ4[殚Ͻ̵Z-!R2ʮu[OZ\ |Ժ tXQl ,{7g|4AokE(';YlZƥW^S_NZږfͣrhd?/s?]O<53$O z=34-ZR4zˋPfid];auLZʔr_Dbݠy:ZEqwwv{c?24kŞtR ᭫릇";T$Gyl<-EHeY15V;#zf stpY/C[ܙe{?-" )RH9#1Z(`AD,سg,r뽓*+ =-H*@ѡBY%ׅy'֙'^N/Z͇.ɍ) ƺGoBx~sdTU˽3+㬌B%IuN5y i?'C;P{o|/uUj5Kb4@+W0{vcUצ/_=k?)@EahGgGi*X,:8#Y v$[F[t{`x`7\cuȐpy@ș}$%Jx Bt;=Cǯqr|H:<,-?}ƹ2z`C58`@w[ӸKq B2E [T!q#ǁg>/6tʵ+W^r=ޠPD ,س,S B EBJ:R+sD]ByhIhV~'@vꧥf_$sUR Be<(]#"`ƣc/FFhk/A {`ׯ\ :m(xXD$:cR[[[3q̾UeཋF4 - t^ IRAQKlvJF{s^ aܬL:ͻm'+~yw{ܩv p-n%2ZGE1Vkqh΋~ٯ{yh7K%)ܞ*yE d$30N%88nc}0$\l68e0}Kf,A# YwK^Xᒤ ~'_{{$T'RsΉ ;2KS`UEX>UaKQ"G?5#0춓NƱvyq:#k.'yY$F'ak[c=BVI D!+k\X\8FD-/Y:lVVazspG O=Z/'V8. 01@$&DRݥ/D6{T2*n2VkIH" FSMpp[JI͝)IUE$ \5U}6}{䏝?sHTT;[K`cMYDF "|ߛ Z R s fVB+R* BoO/W k< =tQd5`R&L^Şj.z%i6; yIƬ*ӬoHhR m"-! ϕ'̙ҡaoލeYy5JnW8}lJ)<˦xxқ޸v@HIԌW2@r4):7B$t0Z_ZYY]^a!"0ڿWVhv[XZ=zĹEǞel:N돇n-8(PWidtFԺ@J-, 7֣@RK!$$!4Sq:'Pp y3a&;sk]vmLB \N{,4 󢘍&s"3ZX\lJi^A4XTee3RB _xl^4zBg}}jdEER:"`&FF9g+@F3;:7B`2ũ3 Pyԣ\<@'=) O} t̕1 bGB~qjT^}AtJ=b@cYfʒ@Br0f7F޸7V fN 39wi}tڭvݍ7`jgt`@tůl:ݘL'`vrm}<_B6vV+-&ꉵ;Ŏ1.X(A{{'[ְlH";^Y,,RK1wQ<{'U%"y(Qu>2:܍KAV\VJKR@$1Pt>΂NPhMULZ-B i 5?'|{kͺZ+T)$I@7?^SKAAQ* ӱ2hvS'@wT&+زsְֲֳz 5\8wV˟ՇKg0\OġPv,~fh:Go^x9_ZD&{ݞvwitJV ^$E`2l=eЀTQz0N@ HF"[{fB*(%+!@ȳT|ՠC|kQNN63?a('y%sd xTQ"@*w͛7p YVLtzbmH:`XJwڵ鴲^ *5M 㾔2ۛ[+KѬPI5 YEUNe,)68g%l>}*&̳l2wL y"H(ZJ:f:3 N LnpIJ+fypE/̅92vm9AH tYFCQ}ள޵^wd<Ǔf9-6%7=ZP}|/h πB/}}39x/$2XO~+KKo?qn2mNWN=xON.>,"dFꊖjt~:gFae=?U(Ʃ, SB=s=/v1YN v$ӱ(F)5ᘤhNVa:4KtYMHVkqmquGvfenEB1J'В!`qHN 9']oigY+%˲;|@"Jaa9&lЩ"NbNA_H:Y\\ °|msWvju=m^uU+i/DR;g. ˲(wv,@_U"Z8uޝ]x*}vK t݉Ft^(!vNV~l= v謙(;@ιlvQҎ{ @%K:h3"R1jv-@=nsAgV~:[Κ:,*g%d}tGsn>T%s1*+&t:KyH0gYj^7'\\Ϧ٠/F':kl _zt K%#!""ق#bMj+@iĞFgsB88 Ԃ*7wҴh+o\ynYJhြfܨH 9sfӞf^K -+_]w$[MM\cFg9,ˤBM)eQD(DƉ>SIN/f ؈q4lߘ[;VU\^7Ǖk\$Z=qLDϊ(Tz8S?]~Y~!w_yrQie|wpVn\UX(сG^ |M[B@JiF(ReFJJ@ QBʝӝ/&"2Q0IAMd )BG{4Koy1 k֥7Fӑu6j4Q"fyUH:-"e0ޕ1'Mfzu= !@Ъ4,,P[Cͤ9"R4NR6?9WF#pq,Vz $| GD׼Fp4߼r_euDRf'˯@5WSsO|3te7*[΢@M̅n2O`bfgXNw\C=GBFXa粤d'[mTBx/0jv֨Hv@$WP-;|噠u ,(HD.yHI|>k+3_} fo@W(( DAx6$ө"MOSۼeԈ(3U17.\tTc (A쭚M(;{Fsqy9T}c2ln\}ﮘ$ꂈ:d#g8dxoRR[KKn+c&*pq9׹^Q{s嗞R`?[^ZQnޣhmdӭL:;SMC2U>O]Ț6{Tjf%2s՛-4z/]hYcp^.\>rֳGA,*r~<})1.Vð9MÙ:ޕN'1زڽv?{jmal.p:1;pt Q~n"us^-0VT<#!OnvI قQ[%ہwWBW3{[π4n\NBHBqB_c4}iZLK;vۛ'YD|]|ԉS^YPxW]x|bsoT{u`֛25,j6NvJmgO:v;jFX?x2eYYuA +<~sxfYdj?ul}}X \BIg+v> [qcU0P6o0Gٚz'ه:TADO-֕뛾&[7ٸ[yU4YM=җUUVehSQiAY"hH@EλATQō,~GS JW}>_};ŝᬘNwܼr7^/Y[;nMD>CL*r$;v32lw sU*҅lk[\[4 <*Np:;|".؃Y9!Q::R8/ L"A:3GآJ13c M͇4ш\^Eky'Qt4- RAťcN&[7wvOH^wÇK y>Nd:H-&ʰ{s,Rٵ+\qd:[xۿo:MΦ|4cP h0d[!=exbJMFj$tVx3nRy笷u(CE!TX+D١!*D"KM{WOU -,}uχwMUfVeBYAHCJF G[-5-7#MB-A6Y0/GJ޼g=nϏ(P3RwVfFfFw>oG\Z!<($Ygz7*wg-p*m hU<#>7`L/A;@tZ$'%LXtTL{aE[-"zqp33c#hrjI[Չno8>yG?SS@SBp @Ecߓ 0 ZW(BX$5@YyQPB( E9~>?;7'_xsY S?x/(W1B)E0yQV`!` ,Q:e?F2S BJ`j*7J׫U{`\g7y9]}Gg{qח|dG]G'`k="%Io*ʭsIfBcCkA[])'B]8 ![2^)u{*&q&&-WZ9GYq8 fJb2Y*JsiZ\@9'',tDBHcJ,DaIK)ED dY}'{gY gRB^) Bq9Bp9Α<+:!Qv{s[ff9;YŠoWj1J9J"LpjrrSfG!(Ah9ewpr֡1 xܛ4^/mo蓮m6Z:hSXCs&˒<}fFs.?+o]\E^( CpmRl66 .s!Gqms 4;qd]&p*_>13L %-Bt-!9jraeRG$A8 1)L16Nuh 0Zc-s:p(Έ{E S$(e:m%2eϽuA: +jU64Zp!DA^Υ9Eg*NSf=gv~6{|w>BHtΔLu93wli\p.DE`xyBEcqqꍌhpgЯ4GZժ^J'tM!qaQ@T%0t V[kЛ=b fIo~?wzv ICbJmRXG,ͲEsϼڙ+i08Y{J<pԂB87B<.{"u\2W tcivRƐx8؏|w?I /9U 78$kV|Zt<9"qZG o711?O%T/WjYF@Fs 7cH ]ٷz~PkK@5 EBz>RJ_RƬuQ(ZKq#H;FLB,S z0/s7!{A#'RpJX!<ϋjO\KEќk ww3+ιmX 죔yf>5EݙWy(!#OZR$ F)CG(p rs H`kw"O>vhlvryͰȫ΁98kUQH!٫ז~_ԉQr D:!%)2ao(Y%XBLi)yq )`7ϽW:Iщd7˳=1s, ߯SF3ܜ8DH8B2Xm )gIi[NR %-щɹ g$ "h-RUnY-s@r}\O,-9(xbGt `S$"*EaRACGE4Ɨoփ@18~_Av]zs_?>އ9"g1A(r]5:o=:OK[DzƘs|Ix]"JYME{g^kBslɊc(EgqT@ʩn/hޅ+Qܿg~wycG.]]Xseyf>6j63Ͽkڽ$+F4yG4FK)#1VHzlVBaXbs2 hzwT3,KJE)y9td4ƽvPNJtaB"#LҺ""h`|b ᔐaK'ReFD,ܠ~s8$UR:GccqsГS(0Ygié𝹉yJ(\dt"&e @5= 8Gë$Wƈ.L? upf}F/RS{/\9I49qD(PVc h=A(dh@(X(Ae`C%u`߼|7>Ϩw=pCz6?;=9rV~g_|k3,qQ5ȸ dh-cY[R8)V7epuz*7s53 s=kAg^ͲP[  H)+$5R#"8g˺"!GF''9FC-+s|s$@Z{#O2hm(FObTYIe,!ೀ1upN"8Gƨ,<d2VgH*BQ$YVj1Q(;:>Pz"tƛoѨUuj9sq64F\VvF}Z/ clfj][}Wy孾 FSJvog)#0 Do 977Rr=r^/R98p@@Jf-HNa <10AaQ"C'c.d[P`/%9H X Չ9G"琉A_9 1Zkq<3g/Qg)E3F hdh(8g9 N&J1S뜱IDZ~C h !4vZரtڿ8|`N?3&8hch9D .;eӽ ^58nlQ22B *Wy9g-W;A 3ɲ%:`]XdB.o/d~y0I֢=]t6TPD B& %EC&ſ};F[֘Η-<…^~zGxa4rZ ZppR Ǚ[g^ `D{b(MTוs@Q+~KQ()Zq0ˢ0t,|J3F 1:KюRJs-8:g3w2uý8tU8t{ҚPs/3s p ynN۽7}JP]PDJMɛ~|6J)( 'LpNK]rƚ(j!"JJۃvN[ 8 gZ| QſO~䑣JuR#`h 5C+=ol!+E2Nqz]Z{L0#ZD%ch9e^^|)>p(tձʘ 01 2bP#Q61' q zk4p3W&n2%FYMcDt|Jɍtn8˲Ekw='83QJz|5U @dBhUТ('ѡZ0F(){R݁sut !:cq`Z9׻:ϦFGG{%-؃Z$ulp'#/ O})EA&Bho'ԑ4--X6=9T&fF @p[[;EO(Ԣ 2BfPk8͉".w? ݽphj}5N[Nx ׾+3?n߾Npw}_>{mߛF>gZ0Xc\ޭ35j qX`Hm]( HFZQ:Dž@"*!;`TE&"OOsJ F 2=9|'fġki{ø(d_ f|[X6) "j(sֱBI1miu`4N-^]l4'vC5|mZ0$K2v<+A(aZƨCKJ(}JZ\'@,}JQj:n0`0)yO ;W>ENuv0hm08Pj{hտ^^?Β\kUYQƲF;#aa9F=b0gcuq"g uhhlEp8pX4a)% Elueɯ6 V.-]+|L+&K4yOrdRBɐpR"J U5Ky9+3iV6}5abZL4(zsrGtěkFi?:p֕yw_M2>FsRceq # ո?8 %@)25sigsèsޔLzAZRq{kX8s)U ?Uճ<ڕn3<4rƵaYB9$q~ES_jj Z2xUZMiDE-:D ZF@f%Q 8ʧ0F4};75DP4nN׽sHs R˓D=KS:mr=d@aF^llus!<!K0fRnٗ/}ecgșz}/-nZH2R:+<  + EXjhR痺{%aU1s֑^1 ^d#FwG2%Ғ@kڔ2Zk-`3Rb[%y.8R`N*xRp'tft|tƒYo6 JTa7_|%ӧok4bV#vM'/^'(Þ'"u R"Sb0ɹ8dYB gP9XtDʨ-BPb,RJ8hƀ3bi)Zc0.][:'sխnoɀK/y?U'2~4u>cb.55ǜ+%Ozb3.ʴ湝o?uR($`2'E$ŠT iSgid%.{s@fC e2dF%v t)JGs Qg Y0Yx05*?oce:B1T0Y[[GS̍TШՄAp̒~-qJ P꾿٬WյsWUh%K j FRjp#ΡAS9c 0Ifb9Llᬳ56Ρ0U^J8p@ipX*X}_\n̆`''K3*5H]aQPn*pιdȭIĽkQ4S(c91\p3y fA͘/}ꕯӑljXR` [5BKj`uO%R^d| RU;̝툡6H,E$/1H0 ۺ]\ٷZ gF!EpGBE!"RuJE<[ C48ݎA`v9226=-=Z~X~ ,h#`]bOĀ7WNEk5#(R8ơ9d}]z 58+@[X2ke"~h#՞rc\BJN/ L8*l7ITPH+WjB.(8%YRD= ZhApUJӁMa?jzDm{0ލq ΄Q/;=V5"RKjIu~V;(~NU/z@ݳ@_8z r}Gi&`^oģݳ3ךI[Cd崢s2JQ9%0  6ymieYxJH155]%a4>59:1輀x"U: J)BYckwzV;RgFdh28@cLk[l"8 f3ֆ~3;T'Te(9B|4z:nv$>@(WS/pimU2sƁ2`Z7,R}ϋP+C@:H)E@= iHNѣn;1ݝkgypHP sCy~N$干GLh6` VB $'ViF>TEi7o\a¸樵V0 )&Fa!1+rH z<:^ &ٰвL8dVlhCVR 3PB}ӕWUs!D˿J)p;_vR2PnJaTJUT+~'Io&w&wZ=_;rw]| EUf <.WQ)j@BF4ZȥFJ,9gw+ǴXdΒ[BCwZgfxHO)DŽ@-ڀN0d'( ,.Ʋ1ˬu:?:Vz+XkG+L#.\ Fak+,@Q2@ 03=EA֡iN>}tj⡻ַI &EM.f(2DOψ@2--,sw捗ne>s_>? n_ŁV}Ӻ( =A7XI-˳,g&'GBE݋EV 5R{hOrw-Ӟ AYUJQ C?[o]vmAA75 @ jZ[)1Rjr,zp J;121=.tAe%Rpm2>,@K(Avc)FR"0mr>׾/K;;;-/.A)=|pV|yTZݿ‚1Vq||A?9׫c `jjѣ'gggOtx!CZ9G<_EeYsy~|{}bʭRRR"(}$6NNM"!jR~S'r\][^E6F0\2yGf )0 lO@i) )CK!4@e`6kSπ׶ѠvR[_|KNrͥSMVƂ'PxjQ:G-Z4axPI(,NPF)1;Dm qyQ 4Dsx#M c6?rDxAVǻZgysfMRYNtBk9g4z9&-9BTh%xbLC]q94w*XtY:cɟ/үʯ ~gVWW1vUNTYko$/C=W*/ZgϦih4OT*<ϯ[WTR 0?nIDAT333IW? Rc, ej9r0A͸$͇i8wߺ01?z-Ӭ֢5!RB-$Sw_^d ~שC';Agpmqyyegڹ |O(cAD3) {Yk߸p~'NL~pIFG=](4fZA4GU~0nx8wrdc ށɉVK9/^{OAQQF<d2Z) >"llb]>xXySHݭvQPJreȩIVμ/+Ȳ|s7_Y_1/A18Ni5'_\ 5έJP$~0H_y-07 i1puk oONN?~~_}oO?B9Xi]xjn)qmv姞z~,B q!;ƋXQw}wGAĝ Ѽ'8w=BysJg$Ilc{NJGT#aBTF*.oHgl0\~Nn\QԤ WϜw?)3%Ckhm/\[8}f#e53s 9!Jȹ,N3G]=L3V>nvc֗g&(WW|ϻϱYT"ᄢqRJ~0|{2RQ f&+!43'Y[Wݍa/jN `꓇5jeN k}:6kd$¯id@ q (>Yx@Tf&"Yߊmd^9zbSMZ킼TJ 11*ȲlgggqqVU*<?'|,=q܌u:Iz~᧟~$c$)~#)ǦW(h8p[ny{#DQy-ڵkn""%qJ>_]|'xWזUn@J.X3ƸJ%4M&i?gOǻ1;}{Œ-z oz~N#OEBR̼q>é jTʫWέ,ݚ o#JZȀК~/a\`30р8(UƌS!FiNt'F=v{S˳sP9k".Ѓ/=~\O-z-תKH! oNVvⅭ^.RHPC]HCUHE]Yj9 j'&McuW7׷ҝ~O}Bɬ`HsQ"$;aCwLPlc֗zo\xϟ?~kkB`+,ʀ.[k9Ƙ~}jj !RZ!Dje^t'N:uɓz]n{駟{D!Lkk;ɟX |O_8f\ }_JOak?kgGo?<GGE8ذwuɹg:։%pAɉمk3S\1XkeHIJ)"BNV6C朐,)r:/NX,RrcCÙrnVh37|zjDMJ$׭}'L]|[Y^?}F/V#!yQE!tՕ[<~Kv>2hךuFՍh$D@Վ>XUEQTJYZܱcN:u陙uQEQq\N`j5HUV%xB81sD8|W_zO\83eA8+3)"Q@g䕳#{PL2-^s5]o:zy˱g_f9B f6GN5^(Kd04c[9X?z[6hwץԗJ)J|!%v$gV+UڡB6ScylSj2hUb R}R"nI~뭏VC翷Z|`)[gV&v6V^Y] ~+Zi$q>2Zϝ4Gjlrlq|gcZ'@+Q!^TJHA_%K`3cUR{~kvV¶Xڊ4Qٕk;##'Ǧ*&x g._ݟLuv0&olOm/B/nSHX0V8!' QƘ??CG7vYx?$%¹̥l{:u[7x燴V;-81Z q@зv,;zhR)q8FQAx^\\GvmRʇztY\Ǐ=?}{_OlѸxooOs΍I)?|mZy'I$2 ^aZzŋo08Q\9 hˋ|wK[1IҲDžp O̧ίB>n6jn7MWeL>vr ֺJ ZKV8iO9G`gldK̆}Ge.G8%(R+:fb4"r-)K)8xSZ+eR-Cyذ48~Cӧ;;k/9tKgwMȁ۽b]fmiL+gy 㸓Y7,ġf^yV8ꁝeyikrO`Z\T UE;z`@ou1K0i ^~?{=o{aTyFsxbr};SMѵo 4lAgоJO4{y^Ê[ZESNV귯R{⡦ܓO"!88m _7WEQꫧN'I[)Qӛ033c1~7_}ZZ~.]:~:}kvBEA)ٟO|Vkyy90 ˦(Jijj*(,|WWW{(:2Rb,(683~5?+vw+N07ȋ,PȘ<q2?~G0 _:W6G͗TX|gu-+$R/ڽK84K4oF!R/_~g&&&FGG !98A bQR`y#<kJG~G^u=l6sjuttWJw}i?~|jnll2cYk`0ZK)_y}{;;; rJ(RX inlnk>!c4.,'`Ry^Qؗ^xq[+N71ʙ{׻O/nv󶶶FGG$vVU¬a !1%J.p']FGvVV^}W^~a?F\k+h jN9<7voyQ)c):^5}s{ʤ6qL2(,J=u4wnaJe=F e@,g\0ݓw;Otg*w[ ?@q%cn(!1n 00q1i\!Z.(fSdnDP WY1 Y̍I4 U9h/_:WO_N1{s GTZkR<m>P[RQr7oNU[O}[xjπ767<54Y\<8ոoh#>#WڻK y}pΧМSUܑ;Q~Pwν曄:tAh40( ?v16;;o߾+cȑ# zW^M~~W_:4 Ý8 !%6ZVc%R/?SN$^)E^[_X[u 2Xj> 1hLlmz8ƅ )X f@05Ҁ8_z$~ D>U61|Zh#+v !ʧwnc(P3F4&K2 H\'I1N[FxE6WY Fkj:c)P *䪟,K+~krz2/Jqti1@C@S&Cㅶdqy'#'//;rG" /3r%L0c7*i\|GN^!QXBNsfY?w/K33Zccz~ȡ(ġWbacn<J(K@ xal,8;˲lww7N^"%l:rHY62?hddDk}yZ>裏01իEQLNN }$e\qc8^XXhY ঑$ГȡfgZ Wò}@)#; x3gR%T25@): R? -!X堛(qJ&;IꤷPS.۝AG' QNcJ(0 HUjA0όV )K8! Qhc3e @FBP:L0 s&i1v繕ũz@Mę%6a"\9 'R4zHP[+El}mĶs%P`|P3NC)\uW7ΚVEfrپv7Nޛiq;l֚:yK;ōit;tF M0.rO{1A0IZD_x =q;|t*5 P \A<66w!&EI1\籁QP"or[r=zm_~-_T*J>x !d~~gΜԧ>h4J {ZB>O۷ zz_?xȑ˗/vmZEB8~gVVV>vmIoLZ2!ޓ*Fur.GFZZufL{nߥ) t3ƸQMzXɅ Fa6fľnvyJ4nwegڊccSGDˑȞp19t6ISe :0MIF <:(6_OۛI_uw32Z '&Nj{5,{ŹD>%`km *.͋Ivt񱬿J/]ojkKˁ ! acmn7u؏> ^331\>ݮƺqKW FkQHY^Y `8&ƭ-aC ;cG9JX({'x#<$Iyq㏿}{4^:x`ݭV+++Z^铵vaa'G>2>>wsRJ_|/| sσ>n۞'O~k_׿Xo/J)[:Yg1RfE||,&qIn3ZFUjb0fKI8ը͠9&ww857٨5dX8N=2IY"(tR3Jh-255\Mjm BNsmb"Ik @3p";ʓ^Ȍ陣^ZyNQʩ0-C^`ǀK/>_w=V0!Fwrbrn֚3Aj no50NV"Գ@m^&8( Kn%n@+B“O> I߿sooi[[V}{ߓO>y뭷s=jVW^|>[o:ujrrZE'>g|3O?|…խ+W<쳝Nŋ/ިnp8$@cr/5g'B.%3Zـ1929G6knVkRdxϱFgaOaQ!~C X(Q J!!q`mod3Q)F6sڌzMzRSv"J'`ՉvVtfn|{cm9h}TQ~U:CÈ]\\s&ItmiZm*i!Lliy^kjfo}t86V ֶ?  k6V/|LڶtlrjFDU#浅yGm݊7ZX? Ooˋ{s~u#GG[yI%`+mi{n"1`)B͑TIv{ffѣϟ/Iιg}vccӟwommٳWyǏz7|3~G~Dk=11qԩ~Z__o:u} _?uIx1 u$.WyNCg-J`qΡuK})g(y" :$ѨZkrp쁃X aI9f$7wwS[ncRJF@2FJ)ecPjRCes0=ҬC(zCȠ:&ᒏ5pgw7K-GRҪDsֆi xm| J#iI7̲0gޚ c,3JZ^}SJ(!fwJ5wGK>[OݱѨ75xT'3.f}٫kRJ)<.:757ٽzuSsYT/]>7^Xج@ *U =Xe*]|N k(\Y$hMH)8/}ݿjZ۷;^Py/_.1`ǾOܵk׌1SSSXVϝ;W[O=ԡC>UUkzʕ ?', ǎ_^x-Z,.9 uZg^WdeqHSOd"$gQ>ad!SZ֮<@H)Prtdd]޺90="p{3 93N)N &F&+#z}A`Kqqiqea˫R< Ba y\E'S-utpjQ_9oh# \YNzr9{|`k3J;B=(k %Zs!sgY%EbT /0j 5p;90kIZMsgO.zCJZ{ /aodI?/[[wOǽR4HJ%"nEj3QElkNcԥsyE;Pr<?l630WB)~';v=}_`FFFgϞ-߷h:f1ڔf:kwYցY-f ~ODy1-H&c ;;^;2 *yr,6J^kJA}b(9 lORM"ӕ04q6=Yc%Pʩ1QJtwV*>x\z=V8ͭҎ ,u#Onitpb:“o."8SEZS%EjnӞxi(y^x \)lKS4άUO;Qn:H ȧP85E 菴ʨI4SUbW/_Ӥ#0.\t<|"WSWֲKmDzx'6Nu#=҂:灇ġ3NHIO19b+mw/޿B)%?_d EJi \v;>]w}_?4M۟}`{?+Whr~vvz333yR+W\|>sn8Ae@gҚi-{kXK1XBuji+37j$fLh;P-v~z;XQ$\xYgXVzRfcZ@eHL|@)CF(1Jl;MϊUJi' 8geғ0/D^S1Xd\EJ7~l5;/_Y$QO]əōaUќCU*7xZz ###y/۷ԩSQiyz~ҥ_RrՕ{>0+^8k- R:G(xvQIx疗O_ND>94l_ο|zS/Wΰō;Ϋ"rgy5G R2z} B6ۉ2Yzg^*5ozyB{Y#}zqqd8K'Oyh?35柺$A"(p ^]RKPF9DrrqB HJѸCڛ9CD5L(Q*9BՕIrR(eZk;H.n_g81ی~'k/_lcwxak70/j}Mngw-ྰw`hirVhD3ɫ;:K3UYӊn,+N!?+kK'QUgrlj /,^}4buKz)0m8 *t,h'<h!96Ҡ,J&lY)hU$IMÖt#9*Y7hgevҥ~xddhD%I?5rŒ:G݅;z{36ڊڱOMLKZ{;Ke*4 MH%g )Xɞh %웝^XZR]N?{IHFsyCN5nnHB i^$22|<߽ǍL@flh+WUD\=}mne;ni&RK!K2ctBO7V l4aߡO-_Z+m7]ttNp~ivı_ЇӎQ`H DBs*mFqRoO>zӟݙVU/Kx< :Efqiz8^Iegz/r=ozF7rcR ܨ'yېh4bXMf$ `0'|]z,=r{^N[TtQG$`/m7>$f*OK /$1ssoƨnŭ Qo?x}%֕TDY)e$y8xtkg/HVuIyobǥvsWovU=UzǏ>//^zСCZ*3 ̙3/_?8N:U )z /B9Ɨ^zv[ 9xD Rr{kzccD?ɂH::t'Itvwunq'2v>4W6W_9.omﯙzӯ{уF;;zs}\u! {rP! QsYR>(HPՕmB^{lԙͩ 3V3Zj0+׮},-PidO3t׷{EI 7Ic@E/]Ȁh#P1\ZfFz0zNI69AOy.K(w/> ჋QDW/_( o5W[_:s/~'=u}e(ܤ&ކH!wfhf7 Ke.!{e`tβhK[W![LU6SSSЇZV$Depgg''dt{sD@H^%Yڊ(RƗ劵'g>7ykk VW_}g,뮻:Ng__ϲ B.\B<W\_!7C5 9@HPng<@̰qp"y؆b[B>3]|3+/] F),}Rw7>|vWm<܋xrI'mcS J_L\FH|rp5#:|?וD-U5ƣreB)хPZB{ā,Ip$@Dia6%D\QƑeGF=`I`D0 \i(kuBKLff/^Ok0q.X˻wȡ8NRI%!Єb;(K'(2Gv6/^y}]]]{(BWYp^),CySObA^,4fww3Ϭ7p+L>])e,ŋ~?Uܹsˏ=O{l칳|g ;פ`RD4QQZ0ڣv}o`+Yxqow˗CVi޷@]k$Ώ_qm;z..^;°l,k|TgYb؁-l ^{S}̝~^dkz]F](rD$O}a@YK=+2o'YXy 9*x"( Y 2`}O|Y @J)lsDvB48iʐEa8xUz_u?"8bcc=o&D&R_v_R"Ș@(Ru9Q#BEP'kmooni-fST-p!^3Kw7vƮ:U@kBAޮSSShyy _lkK/ o8z>k^|şXXX_ÇT1??'>Q(:2UR@ 8gcE~Djټ&qc٫/iӇӋ*m3/| kjDQfWVVmmR9xΉ@nMJ*D١=e+lL$)av+2xQ W^=7?͎k&q6Y<\= ^&΅jAĩFД3Qgn6\hBZ㸊+zD,[tѣGh 3z| /4z-o5 g@Ah@_e1)76&ebItsץN;xdXDGg~[|7fΜ/YnjwajqfkJj/\پzY];isY/m)+O!HlDc Xj|2BDĒE4*UK,tPM}Q: 4Y1!^UWJ\&GB H(tKX+mi}Z͵@ncӭa݈Uy0 @)_~rޯ (HzKPډw!!sԜjg,M8:ƅ93-vA G#-#%d;UZe*7mss{n7776M{nwwp=:u?O:tjZG_|O|ooooOVMUIpV* !X,W1 [y'Irq}i~'wwwϜ9SOVzqp+  H9b&{}-b]To(/ѧ?vW_ڽ??o.\ 嗲Kx1$Ɯ5Ӎαv[u7[mH~6֝f4, Xu< r bɩrڀ掮ǖ'û ø4K^t}W&6?P|iĩqK4;7wRC̜#$Bg()7Xuly륔 q3sv CnO?LAKfkq|dLB{Li~s[[_;"1TI T7yO9U@D<X36Q!jKF2pHiX,@g\)3Ln}BǭVk{{fff zvZѰVWPݢ(zGz衧z~^:77WqU/m~W!x* )EDޕI@ސvzRvO?xtʋ/kV"B]Q+gˍ٥ӟ3N_᧌i>pS Q-zbynxeMƭF0C!#"?b^&=# pK^7GYY> TNYw<ܻN ^>ceKSչ~.K nM%BUNuFϿ͝41B`0rPƵQG,MQz[;Zh@(ETU$3{Y}#G`}}GM=$I "g[}M)QImDgKgi/gTՈaFF!tA% "k%PFdE ]uWձ4M8sј:>ÇZv̙jPuT^: 4p`LJJ\XEzpcMe͜?WC_]pk?}N#u'?lV/29rw\&:j" gư#33}Q^>M;L= 0׭U_$d#ff}#GZ*eH=`?婿j;U}HTCoЏ}ۏ>zmscX8qj$?pK읊T弋" " Qz=` ^*sRjk˗>||0ȑⲪBjdC PREY8y/<ovvիǫdjJޗBW$\*B8"yJ)ejQ2$ +b\8 'Y|9M5 Y]+rEDfs\x\U V>-GAOB) Yb*lYzzǗg;"#[z:?pmнS2N^{OG¾}JB\t0둟;kͩ$jf!*MwidTت{{;,΁.#ܝ\YQOxБt&뗊ޢ?uhٕk hBqtԤ(SEa F>x1dbq|9\da6@BpDʼr܃? XUqo0%{(q 8~_;.^.}~`*Aā2j$Ǔ3t !Yq$i{`h4^ͲJVUaƘ Ex<չ[-qEQ>}̙3yO&~_m|~E!B* +F`rW~!Q G!wFga4N<.=کŃp~59z߫oï]3kpӡl8y&I_X_-ܳz=hL:TmI^D`lbuI--ziG;~ +B)&bgPB !1l'#O^ D`KbTVK7Dp 2ܕ6lQ֒=T{}u4f<(E\D۩kEUǩ]@%6tjvq(Vg,Vy",IJrn䜋˯Ç/]dFNy-")"1 Bfe/]K>NmB<;3}'7GKZzs?cnu0,Ϲ8G̵#?2E6nn٤.h|BkݤJV`nR܌Qo~wy1,r狜=o]ZǮ~ԪXn[[ݝt zÝqIBk?u˾&2xz`d2{8nۭ֐J\z޻p/|a4}yM/!x8b4*Zj2fRf>ool\8<՞Z>fo^vڹ_7޳؍^7* )7 li@>)wC EI$E0lc^x-,,f!W\y+~|,ˎ=_#G۷ԩSߒs YG[^;7=|>ieQYŽ4L[6\6'/{p6sxGWF\U  ЎLM `٤WK2k#VOb&*d|{,B@+9и"/+3/176a}ST&)>[pʅ/K@@ AxOރD"!) J1QB& u3ITJ"] 1WsvCG&@(!fEƷ6[14"sZĽsEQ Ѧb2ʲ/իF0C9Q] #8)(Qd >ZU)ClL=6hfW W$Us\Ux<[,ʲBTy(k׮8qkd/y@H0Lc}8NJDO>o|؁ݭAj\>rZY?ʛjx :~x{Stר:Nzw?( &`[u/edҚkxg{[ڐFS1@%JA! %uh5[NOԆbl01֯8 @F; Z),y1*]Wy'JYjF1gH$,IQu1[FCXu'?teu%!Cn *bgR>DGQB@ 8ҴVO/mj`@1 XSByO]w;*+'DM7z(}pYY L 3pF%9A7Fd/]TT2{ZO&Zk+G}תL("Vb"*(/–LD Rzdp r<6TFFW(0oTDhĪvws}cs'>l݋ بG!3iT[G˛"('T|^`fu6iZQ1"6SH ! Б,bw}&~=U-!A$HGZ}mzQ'Rl8KޣK^y9dKƠFcF/s ~u7+I/Նz9>x^EI!8H{w֩O} ?_kfo Ǘ(oՏ)! svYkH!p0JRgϞmHBZHcJk2F˵vg>=OFFf@NFl#$td^ >CjeY8vصkפ-+RLxZ10e.ȇ-s:l]; Č P0y@ @._Y]̜z+/O]^wŖI> 5bj0#1P(dQ|G,حٳg̟3ǎk??V)I@.ƞ1W\pjY}ۮS`F!E+q<7oǀƼ}^~uZJ-"դMkF{˯=k2no#?]X…ջki^zmD@]d(j+_2Lm\LIY 0MMA2qAmx,]e J *aS@% @Ĉأй7 K5#?DE ll2D90 iфdH9 [@2`v)B@QS6}oU3QVu#g?{sssOtvJAIb(E&McR!VE>ZR pJEJZ!7~+n웽ء ʉC X q*5$wYk/eYUU"gϩ6?Rʧ~ڵkղ཯|Y(&=rJ1?ᔜmv޿@L4 ej1vǍ\c6B'mzwuy݅ 6㸕1(:cp%ާXȹPH?SOfY''hAB| B hGF,N"%AJ#%u`!apAJp|airmg4t5@ޏI)Uf"%ёFfj%f$RYDVTs)(d]ks3u^oM,;Fm>Ь/.$#"<"=VgfgBi`Bx@ a !n:{ARQT6V?z m&cDJ-KBXF3*B]nVB^W!8 @-˲M=2 xcc = YM@Db1(?}{BҥE$)RZD-q896xc/δAV@#"TpDQ (}u\ܤCH Nԣn0-'ZF ʴ{m+R@Jqr| aЈȈOեIۑIjJw6%Һ/3St??|}j3@! -mn&zH[i,KZ-Cei<#%l&ܾݭ[nʩ^xq~~i~z co||wl$7dT3 BR0*9βzR#BM:$^817 6V;F20ʀV&5H dDvRIVcRj<=^}n-6>'gs'#Hf"B~LxgB AuZjc"f2S)fS t:Vk<(*LQQK)Ef$BiYk7nE&Ĩ;D~_n%5״|ۀPkKk-ؒ~|j&ÕO nSѴ."-9A͑ ͝L6q׻ cDB(eL,{a=SC&md?JCnzFq"610B*"ѽobדZc3\zc#3&kRa$#"'~-?(Vk8L4RkH( h:B|&MITz@TqQU$UQ9T,8Uʴ}I|S/Jb"g,k#2`4rFQ$B+B8D@ZO̼o\\XxgO9;) J*SkgmeY (DZ%|Sըu{z} _]B&oM0PyKq+g]M.;,l9q*fϏ={~3duG]F ԑke(#)Yw7SCFy~&.,Q9')<1/HwssZ)k(z}'O:Ͻd!Aak&M<9޸zg4.$ND4`DŽBI2t&]Yts͜UtQ+QRK(2VBS ]h4ʲ$E4MKwu=i1"sȊIBh*MZS^_`& f\Y?SHh"dI!h^+`Ja=vl՘i?;$A!$Bߡ4+IzHjG2okD,g?[jAٰ;襾xJ%N,7~}0/[RZd FM)cDIf2>'r !XoJQ).kYvTteүG(`2P?xyGDY6 !R@ȼ(YI[?OE/}s/_3D8PR<@I"( 8;xdKW6bŌDZi,@wE#3\p63?G]fGuZAǑ$n$$NkQ&VZ*UGFiP+%%=BD&# +K_Qws'B\ ; :G(0Y|U8PDW3S Aszj(7)Kq BXMRtrЯ32z \rvsu%[Wc ֋{olg;<>Mη'N.wֺ旦KQ1~la;`OacCFRh Ɓs+}p!.Klp:=DJ f-c$BD* J:(v="PR)ue}Z2;u% 9ƣV^{") R2 ]]0uv8LgO<SˋB7z(j#g;Tj p0Y{zr:dRfYi7lj46nZO2Z_g]ymm#uTe1]No?a{JPZ,pQR Bk#PVR)aNAT-D` ${BQ!<{w{$.s@~qn}/E ۀkc l/{ʯ\mӎlnIxw0~|MHЪ"n=(zJZ*ѦӉS53*-4Wo~ñ:마rBG8/(QvqsqҵYgV.';sO0~}8od^^?C^uw*Vq&H)PT 2 B.'s 7Jмg<^f9" =3Cfg@@ U ĴYՂ&>/I0Ƒ4Ӈ3byve=z'lz̴R|QL $-GBG9$;ToDy%yG۴/{e9fB5GlG7f讻o7 ߣjg>\>'N߲ hmo{JB Pe߄ٔc4QDŞ I~@'E"* @$H1*Yz"m*~$E%xk@ d} ].M{IwVz0Zk(nJvaA"KL{LLLC )X ZtfLҎ<:";p&jg7gE+"{l;Q_z}ksqjb$|z Bm'sؗ}'7ڋ?6x|iPi){ݨ$<AvO[fnfP}=S5]_g!V: !UBh)0VF'>"JZP$ (n ddd䊨łRr\MQ W+32f @5cL-)6>x@)AgG呃Ӌs;ёNr~zP(DrnNٟ4d4j~>55˝[:^Y ZkF7WǏإýw7l>w=7,MV1 w9kj†} 1mHC~#nW12}p~<髠m.ȓBN7B_ss"~ _/]Ήq7X0   HCRB7[(Q !PR))$(!n-Q S71 [U@D 'PB KITɼ1MHJ.=>K緺bd29v}덏q>bv'_KQ1Bl#&fwǣQYkGk(%Vukc\]L}7?95^Y mzmA8t h1shv#*º׽0p{keFEZF)ceb:J"8L%iQG2VQM6ƨ(1JJ FP:bz@+GH&"򌈴0"\**1dѐO@,5xֽoɾ}\9(pn0aGgnorcǚ>(F72ȸz#A6 DžR0 HAgSO.`yZhz=$\H7_O;p=y.<>HmI8,kgW&=7 iwΘ_7yAi$qdiTD-D&"rXtُ 3i왯Jw,Rc<GQ^Ζh{ >jPICo{BIt { #fxkBM*rRK03kr4|xԊ^'%nSfM4&9h!8ȃ as̬F*EMkK+:fp_aߟfT|=q$}v6/]=wӠa"+r{,se+*Q(UlGut-hĪ6/*֑Qq=ѩA`AkB,vt @D (!W!y ~vk/4azk-͵\^ajcL5bn3ICʡBP;l8Ak(` a>W6 J L/su&wm~_4V k/K@v0{_?ǒ߸];BwZNj$MzTQ'I(֑ё1H%dǯJ"F` ޱ Dl3`@Γ6J!_XLqy(} @=:Ϫ|=? GL2GtQ 禢V 4aFM5bHRGMh;>ʼbS ".tѰY0*"ޓ:" PM@Pəþz+?P_6Ý]l]hעy15:c`z.+ ewF"H爉l%UVReYo$ڍlpdvz߽ʱ')YϏWӝϵo6$Bt7zע$$(uGIDQQJjJ*P`&`*BDt>xAH 烛x ҃`\skC10Q>΀- PE\L6'B J(@^RCE[zf<.0-#0zf3g G _yu#CY {ȌR@L%`:JwRJq{)A'{>=hdwkx՗~Џ7s.ۇ|O]=P |(m5VӾ> /YjYΣm pYiK]I' 0uhL&qYdLBFF'}ԗ?N+[MH&e>$QKfr7Y1JQXF%JD(:$P,GV_'G듳[Dw=Nt!`6ί]%-`4 Z ʑE`! 8B2RU&H 2Jz+Lho-m|Q>7@T0oOtT+/?xgw_{qw}u56ւ_ا_5j ڄRDg%Lԧ?ub{˭5-aROb\99c֢rđnfk:}"F$( gy^IPA@k/.63r`f 0 ܁*@̷ts !qE!ڷ[an_S$ZT mQP?J8J뵴^CSx}u~מ87+,hwqb=Mb-[/`՝Ęȹ`"TLhk+n I{Lh|Y]ڡ_qpw=BJkvpG<7:8omMИjIUq^R`$Y0 z&l˄ٖ*:a|0IDRJ !sxfZ5:L u,KWDD&MAIF}@DLaRȽ})FrA|i|Z=81(M&IkZ,@x& :3}V:BIF!^o`ֳK Ɉ{a]0 &( $2qEZJDjJ+-TR" o}ӚZ @k$J$xh=WguF뛫[B`dF1uY[ dL4k8T4]zNIZ nI  63+ìO}|3,Xj%|޹Zv\Z)$Js`6waj6M NLDhr҅cGN6%st{|}ed]Nt,Ju8$jzn'D=`Ҩި+tdVZ$%>"Žs~v{hrcҋ![ku=9kO2t,X'r!l]Z r3w7KfZyr%# /\۽wq1Ke[F9 1V*v8b@A|a&Q وuD#\(j2k2JvQmazv_Di׻r?Үl{B2o*Y$:w@V$(,(!r;In$b%"E}{Byr=,]aw85,;]\9\sb++y Tx ({'D+;iںptA08+t#gnV/~$rTF7 cK$#v\pBfܚA庱\N^$+9 x*!d6r 'Om`LȌĂDI6{Co൤S~&{Jhg{˩ΔfTCoХ ϟp؈84;N6.a;>eC6F  )<ݪkZ@]=‘4s^P9Iy@y} jys}}3T̈!o khu/W%bv(ߪ[=oԊ鉝Gw8qPՖ,\P:A`@!2B ( "P J ;GTz6NrYJ<+h{!N8IjIRS1ڨ(2Jj1ZKD$ !$JH]1U=BIоGgE.*l@6/rW୳E옰(m2(9XOoSK-瀷cS%FNO_:sP6̔/kGH <Q:isWKI(܆כil9wFc+JIbWSUhp ;?! }ΗWoFO<蜝Mol.뗻hKJ֘eMbwg<{nSSp}3(HQVXрq n-]'>/sD`Ԭ9r`i%]U*wBL0z[kų AorKrD4$:wӕ}w^L_%UmA4lG) 2bMXũdre1S[I,k;ٍ<,MʤX//vvwhXai](mYMl/8Ke9l,"y$nnpSM߷gH"׹p;wV_/G=#ib\ܟ>pF z±xllxy6i`Z ]S>y3~}m{q^o67AA"}-uQqO:iEӁb}.\vt_NBF4uurjY;?oljV fghVo>RN[6[l-4qة TĸVkf7z5kfstxODO7V3]Byc88&NjGF&okkKMݳ%XY~;A 7pcc[*889v8e+m5D@Dԙ saji{ ab؅ @ؠѰ$F` R` a ㉵C.%*ub.kunk\[xVܤ~a=SyǾ˻-;>0]cpS&ij2T\Q|n_s:lg'gFH7v_%Cjo7a~6Eg] #!! )Bǥ }a$MAP>E uy"-LQ<4QZ;J$_hwFBpl٣ %0RyWgeБ9fOH-4ӹXZi,wNWF綟HX2ꭝY׊$֢w*:*l4EJRS`1=;WvrBspV(73v# Dfd*k7c~^Dc EFc BҨjl&i=8Jݫc 1æEY"A64u ZG$[8dJ/^766&778ҹE@K]OQ"8Ҩ"PNj회TnGϜLgq0#E,!4@(H7(۝ܘ%q@I("("H P`: @0pX0ο{ƥl|VN&L{r^A:9}m?Diw\A"NwB,/0E a;pVZ%1rynq^آ<+]3 imuE.Lf̌U +wCﴹq@<I>GUt(w%D8MZRݥ D!Q$;F)ͮmqoQ&t.(J[D8n$> y@p>0C>N@+_cju8VJ[>u\YvfE˱e(R|('l2+%F?:ߺnTjm'Fj|v ;)@LTe@F޷ t&MkϾE4R@TB` Y !PB @B ` J0KFX1yHj N4^GԄrN6מgėTZk)4D59*" *"]+&v|\@U\ TVv<c@,6pԛcRʝ7rHF_#onfg; ug OӝV^_Ψ}`ܣ.+ޠÛ"xa;s N!^_/T1Z*oY)UnQ^452HD\8&k΁<Ԝ vF/|Rsߑu:FT㋟>+qĒ֕a8̦vL-#wY[wv>p@]STZ}cʖDIY}3y6Ro9ruעzcl^锄( ZF r{u-hqq BG&F5Jb Bk[v#nő0Q/[(J|ѹ+ (@K<~E{d 7U3-?р AfMwsD;wy;t+f/y2tQ]Dm0ZB\lzLEmN (gt}9$.f9МJS֌q$$2X$U$P"R@qs|6Ƙ eaB;r1xHzx'LgkN* @B)[A [kꢄ,u(~s4폛 L3QťGf[p,"C`$8L&{Z۔* }{߽4uDw8ʈ:LzVw^%^WඦRD٬ E)z"`IŤEbg-!_kעcGX~6n[S5k/kX`s@ 4Ė[4 QrG6IlQ˼7z/e*l~z_b=Aއ4TKYicDޫ82ܙhji08ӛzc St-Zy(D}qP p9#@?:gw8p!4w$ (R%g!nlsɑѾbmQ6c4`ZZ(T"Q/[)K8U$Jo20‘6EM@ZPyY͋"ґ628  Lj.(Ύ]ډ{_=Ng&}W1 :6~%~h7a9nL'Q9zfί_荹G4vЍE9"R0Y@ak+r| \uvnDI *P 5mW7we`>\^Zt:ۉih)"p F~*oKWY[|XU rhR3cpe ~xq+q2iR92E^B1ε(_f(2^>\:;E$6IƕVs77,DcJ|nNdd;vg8AFͷTPv1 ~U KQ#~F}x-FDx9N KmD-#hLYgCZXMEͅ8Mk7A ۼֽtg/(zRT Pd{ mF"JWy HQ=JZQAa@W8TE@< E^$j.EyV{ "!$B޺2Rܥn 3y[EI S7lJ'Sjdw_dيCakHL#v \@'%aXW&jhPݐUz(|m3;}ϯ!Ljc1Uwr"bc ^ȳ'Mկl;Sckhf*(IFҊ *Q1* b/A`9κzLk(+BB1!0c[ CI |0x/])/k;~_+\ugF n#3F!+8 TJ5x8mjTYN:Ӣɯ gܹ0v3 {ދH:# Pu=6<~Up"勼@:+xrMfx9gܣ&s2'ďJB !$lʦBYV5{B3PvUQ^5:MQpZcD?6f=Ge:P°WLG,!tu+Nѡ`KeFqG[Avĩ l,JƭvYk 7Ř iWyηh+2fgrLt:t:|ŶՈxXTc1n; @ ߘ'Hd"GrHhFߙEw_b\S_~w)M3)_K\xF//g/Vx;T6㨹 2^"8O S˭K'- 2 (A(4^4chTbZI▯ $χl5* MV>AW|C7>[g:Ӿ%Q*ke 2FE Q:c;v+YgFÍvUBaȃ Ln 1BlI/\4SrV<.\e {_LR(֩."l„P/l !PɃBU"/#z\) !0h PD^fPo/4v" PWR4Zf? /_f j0&P0xA v +"mrM>{˲FhƁz rqػ4dJMq8+' mfZI> i<($(( +xV>@Y2Zl}F#;O4f 0ۈ54čMعvY5T>0z_n݈WrOt`~p1&5rھ "x6Yq`j`} ȿV +zjF '^&5KmËqaˋRk/87@E:U$Ș+#Ђ%fC3jhvW9Ow,eP)f~7I~jp=01zte<W=M3Ծ0x zT(s^uL#bb"ā[љwhؗї=q^/Sh.(3E$mFT3j$IuS+vQQ˳GƨƣX"p';Ep!f+8 ൸A_Jltyů._/I*“ lP޺Tu?GU3+`ЎxT|RoeK+ihT h<'8=iqfmaecq`r@(^=ŤnA v *qsPGV=C b|sG#A@(1c<k YyU8TVd3MYRkzia։6PD#aI)d`]0D7Z{fƛfa,8Mj+Yi='̨dAI4v`7j 6#0,iN:0J "̊4;l_8}&l4]؆Ќ 7+m~nNfQRm#2h%]X@@YF;g5JҲrWւSFAXV[R\ uE"=Z_" F%/a૓_g^, f#~E>5ČH@0RD N4efb]9$-/8EڌE<`*FPEA)1H`q,$F;B(D93<۳DGi2RTNTt[Q"}~!؊\("R:Q%:nDn23g:͈AJ(ؘf)JQ2 D*X0nW1"҄XjNZND!8BAD)A*s5((ɪ F4R P$0cRgy>Ia@ ((!x "! 5 ~*~X<5t~=$}бe8 $%Ύ6/,,//ܡFg~O aРD+Xo8"4(NQt15,ʪ Us׵^"`]k]UzDFkEY*E _(`D$ d*qBD DHHƮ 6 \PJ0B@0HMNB "AfbABf "@ 6kSH5XE$5*6p{-5 m8WEn(b}{|S-kmd4. Ǽ>8(g{D"p^ 9_U.iH)MAXXDX<3X+އ8F#FUib-_o wr(h` &RJhR@J@TN@."3yN蟄As0by" BRCD8F3 "u ò^ZWN=ڜZp0pI';DvYn!8m"aD_u홃9i&҃VìonZ R8A&U]cLJ̈謭ʊBADu34a>.b6Fʥsy9]VJ(2*>"R{TtKz;s]Q cFıs܁|~5. q\̠|)"yۀ(,s2ԫc;19}n6fw&D*5rNh="MFa2"+3 _L/OV3*8y P ExYz߉ d "R9WH)4 ",_~VV/]F.~sju4m8NU RJ;M8FC754}fsAvb^X.骙`wz{g6:A7F,! aB$=jpV&! J)t"Yp(PڒB i<Q8yUexsݛNq {/Teq__A'U r-pwK j :K}],jt; ˆhl&qY2|﫚\-r7\kV2ai:Z[5ᚿE$:c08 >G}deʺb<(hED:hS'4ƴ[~3=uI"; 8kD#{_|%/2bV*n``A${eL߲21#> 8pULTX8'>(D),s[ZG!m44-9")0ם;qP^xT"|W>o#^d  EDFOO#ST9e WqyMV.W:D(ut~={N݈4 LBpvs{su"0_Zx5k+I`27ڏ'yf:"%%DL{>n},F@S,Rh!pƩu(v7|j P?u"(ŻފI)DE?ho0?EX%kDDH t&fdF;;{xNpIp,mgOu[/y/~~v?#zBo,`@4~W"/\9rq!{tYe),La`QR܅s+g#ov{ &zZT{pA;amV (m^RK+Hs#?(r̛i+9jMuuo_g #KO4+7Čo:(vb E }X[#uXX|(m}/xYu{YGx.=3ED{H]ׯd*B OhH`M[xFHY!hŤ` mqB-7=rԕչ,J[~)EeE@:kgxH<+̊u#2̴o Y齩YJ|~iu~BQ_L!Ӷ@}M\H%I|{,\G+'b_Z2xLwc^r)V%EԍHs ȇ;(TB4bqacJ?ѝv๕AY?h5f"IBE9D{ȄRg59[U!XGEy*V |7jrI3k)@aӿ D%H!jWi!N1 "r`2&rpŘec@@DQFxBY%3A%HH.hF3Տ<?7߾ȹyx?~\;4;{hf6Ҩ0'}{οw IOO>4܋ $r+s3K|F+qAIv^4*c"?G!uv]O a\AB k땏\[8)a͋= (ʲtdC0$Ewmʕ. "ssk>H'kVn\ZLŞ?wa6MT[^>vjp~4ޓHRO bX[WK/I\ (M=.(o1Tbo|v8W h~5:dBԝsIOa,¶| 8#cuV$@[JNwyґ[94۞(Iǟ|?TpvYh NAwM:*ZUe :Zs`&Op;Qzog{bMlqi:ӭF#;č߾A.vʵqf`>3pA2o{]?? Ta<3 j,$4v5y[A< @ 6 Ɩt *,r?cuXpe ڟqIxujV6ʚf#2JVga嬝vݡS/]wuW_FrѨ,#ݑ/_mwuwnoW8N/l7˛#[: j~&CfqA=׸@ògJ # 3# fDaD$DFYs.z-Z8H㱍#nl5\`y{yJзJcmG>0!Vf4OzfnaD1Ȥʂi5(APp,5yE?N#ջ֯?;8?"G#^O FjV=r`@X!њa!8[Qh 5$n7xa4F;sqe 8}b۹nn\mW7.F)7ưGC?"!zyc)s'N؀BԄ/lQ?U&RQLп{L'^9!H_(^TUl@ս 2cTbE l1FBK_?1(E9EQKsbPsǞ;jvٛjn+[VX W ZizoX@4 5j 2x,U,h *`\KWCB!R9< W#`Ig:`p`R EH״=!x"CDWVeD('ֶ/od@bQQ6.sAZ/}}|0ihd`k/!*uNo/9$EB- 5UB_J`FH $;@Njh`/1;Һb }9Z 2hD!(5*b+j׶靷DhCjm6G"WtR)6A~GVϜqDAވ f I1gRa7qr+V.(GAo=L慻_W-l}H]2 " @EFyTZki3RF!)BL8)NhxjSa8ʌ"f(mˊ/ztoaXW߿*k$!Lnyj0uMs괸cdB+!Q&Fya?ɏ~7@|<}A]C UU8ZʃRE$v퟼`h@u(F7<u`LQiaPI3ͬW}ssMS C>!~ek>:)%m$?n53`` 5dZH'q'8p>XNv9uRrM+PhfQ2h`` m"0 ƤZjE'V f-C\!B PWEQr roU[iPб`keYd ܎Hgݙm{G?ۧ(w׀V &Z(\UɁW!oH)"5 y5!X8I/OߵijM$܈MǑ{Pk0 \fP0pmo6Z8ᛌk'-FZiLd-*l5\Q5 SASo%w.% ^:9mYf4(ŀ5yh u +w.7\ns}(Htk55 3S[Gw ?n6"aR,,L"l1ǵfV|!|-Šd&uH9,Q4kҼ6Š$,d_é6Ak'_ê߅Y@gݳ.x2GIfE|PR R+4p1~џ[6;E.x4pB NA`J1ѣsW.s(njSCP_G>"PR3O?{ŭavo:T<||FnjJg3Yp҈glJED@9|}xފ ,1_/}Doiȏ.Ui<1(q}־%ucbkϵV惢p@SZѧzUn} @*]z|M;!Ri! 6U"wphȡw'|K]G3ۃ[?18<}]} (0@z>|pp;14^! :YvZh@ymY}y^ny M]N)0ew>W~`**t_pͯ_`җSc>+X//:(|H(PC!Mt]h?x0|SO}聳Y;:\7=c}XU䵒ˆX% @MBx}s߱7Y 8h%hRwLDP Ֆ/{_/!Ģ_gdD0HLB(5hzqbǶ\:|}jTjD2( 008 HJia=;qtCfW(Mw}˫gO ss}3ںEAρ ,Qn T7ǃ {>v\X.}$Y !!N'\Ÿ~kED @xٗ bwџu/w,{iXP7'QtttNݹiWY A$Ppu˅Sp-aߛLoǟiEe: gf?ugΝYLձ {]h_yot}N'f@`e4X AJiv 2Fɍo=ETTUv!pqwU8HkmLt^N#~X+U( xW[oZj87|Dz*< B쑥?Wԇ~3QҌqhˇUB%wwxb> q:ܲ]"&p/X=x(n0q)- yj4U1zAIC`DjC`f&|e(4"$aIFmhY[be#+"A"^z7̞sg?xF.P-{2Z)#Z}ӧo~];|?G>2i >iRboq6wI5*9j/ەuuf 0>ȉ 7y[S݇rY i B~WQp>]#־L9}Kk[Lݫ^Ѻ|mƯ̌$^.@(mQ3b β&Q V{LGymh-(KE{o@y:rG@GpmǞ9vzesmÕkouxn<8s +i+Nq9}̳ P#{42W~Lt(kn!HOjmɋl?;'8 [ ⳅ=:םt_k3 nvu-|ec4sGQa{6̹;nW!c sЬ )pqѳ *p RDh:rnc?iϮ>~}U҄H :ӳ{^^Y<ےnʹs|_w'rmߺ>s靰# 㘣X^Q,&bBGp7RF/*u``&hB޳}U)mw&jeKKFN[PVxȞԲ?8Vo{ܲݶyT4e$igbRbYmޗWW/nlnX^AN\(:ﺹKoeJ/y?|5.L,;^"BHOXA;,5$Iʹ:T;3]R|*wr6,/=src<ص@kWh\Ux)tc0-?|R?VfI#l۹#GxC{Lm{oVBT2p1N;%bFB<sɤ)Fm`M&4q!@(K0zQ'L-.ָN}'~ ԥ3=yR޽QU^.o8Yf 6?s9(iN] "M=*9ח"_w:# "$B!تʒ}@3ݸL+ޚY{f/Yd??{r?9nl:, gF8xB?|সA2SO6X᳐hAm,I "'3^ڷjFUkJ"czBeQYj70vJfˢfe&qOjz+YK/ΤS񭹅[6[6fo}f/ *p#Fj8Ģ {" ˣ JΪ8qf ;ZYyaz̼hw?Q˼t&LHL FA^ ou|#`F !0_Yb!6_7۾ԸVG^1B#{fҢfm_ШT(VnOsXf8#x'%n#2,ά_ / [(2$Ǯ/x={gow^Bب߬_ّ_Y!:!8pstO<=K,f1AҌT"ǭ-/l)^O%*LZ \n-ٖrRyW5D֨ŽAuiE-e{&Dko߻קּ8&|7 p/GyIq? g_MfMB(P¤i,w0s35m~uWT3BF9Lh>Ypݬ'ʣ(d4D陵Y[]T6\1.whjܬtJ fTk9 "u+]86'T?98R)UW`4-srלi*2DDY?uo҆QhM"mWVFT"RsdQ(R@;nҚ>w挳RwjDqSg0hȵY*aw}>9%Q *;b6 /|{ٽ=Iwߗw'?" ( @Xգ<ʲFFCDeqQ333qk4Eh49n$Y\\LTDh6QDZR$)"'O q7Mi6Ƙf9{^xꩧ(9rn777֝N{Ex[Vevՙ@"=~ecD;S7w4}H~B\;Oc>r$|hx^ǾmQx0qRC!%VIS"hMʚ-[SWX^ܖ DcVhr.TUV1QU^sZ$ٽ[4ƭD$|q8 G,KM1V˓ofS$Z sv|ݸ 9uʎҡ6AT&dH@@dO;0gOäGn vYZ~cccwϲ9kzB6KǵZ;y޽{8w`pԩ'O?~|jjVBeιz"\V[}t: Ж}6{+JXw5/?~{RQ ][xmmx \lw@L\DB‰*.:zG.mgPy^D2Zg!+*=K[BFGFQD(RZ$i#V5FFsj>NKgbc(zlf<ugmwI@d[@5k"B51F;.F֋gbq"n989,.n/`@fU4zm BKI`R{k:N2`062Iujc~mWykk9B*ھ}fggoǏw}^8ܹs(^v;st]ܹs`kknOOO_xqyyyff*@`V 6-$(c¡)~J9|ˏ<ăOv8JQ<2w/$J]?~k'/3`~- M=q1vl3=F>zLT KJX6LbzaL`-y# h ̱81Fi7~eqE79h4\am\wkm kSO?ܿ<(#ܻD`7/+3$Ğ{WCݫ4P |gܔMjGg5Hٱbs,sMMMMMM/~_[ J,~E`4ՆJ$Ƙ@ʕ+lN gҤYX|p0^_ظ0޾='s'yv%<Äx:0924*0^{!b•8|}Y@3(VGgPGDPgdR~@YYiiQ&yZy> m~04ӧO_tissZ;77i$=؍7h4jĉJn)8"bYSSSY54MRV~@Dl6˲޷jzy rSnH30*R/9Wc,{OPwnAdt(;H!poN:O߻|&8h>p cuY ^4y\ڔﻣyjsf*M?{|*35'n={6-FTI;%4@ETUE:")giѰ7(J.;wأQ}=2}@CW4B$x$!|,CdwBe&* Mgޢ{xbsBA2Ev}zBįJkhqí-53zA|]h Pj`G@ !:u,64;d"ڃIcn|YYsyg0@*ػL6 W&y@Ƞ`uǫΓgM}ʪjz1/^<˲:(j5ښ#,;f=p`0wx|С={2ϟtddsB@RZ$ "4͋H ڑd]FưׯfU:3MR 4z=wdC(Y}+q"`ŨE7ff`+Ջ~<{8x :`* &Ycmpv_Pd$c s(Bh5Iv&_Dh !arM͍ˏ=;UY~ѝ׼@p8,2$ImԋjEQtED\[[{G/^>p@';﬏ft^F~͟}N = $Zoj5Lz̧N p:2m [=G?DBYA"7C!kf~EJBv]B\凝n~ƉsPAC=y΋p+2&ʲD PjVD E"BHlUhIR`]1\8ȀusyTJhxɇζH>HK+!d<[/,H,Z炰AQʋ6˧jt|-s@ň B 7,{\u[xx(.8:$Vى?G&)xXMo%{+sz!g*-a HG'~i_eA!@xh4'd“$^W烫*b4UU5q*9?kk^ovv92???ov 뮻zgggGQ)KKK~zzI۷ʕ+Q8ikm}9&U2z<6gO_K hHB BQF/O8xr}2ڱP,hhv8(0 sqGJI2~Ph(I"P:ɚw㟽/\I5 4qb%!FЄ&KClV + "iZ*I8lv֝zDz߾=bw [&SQD w;`D@)lJm/eςDc3!fAH ly;GK"\ a!y1IlnnAFfn qv)>soo3ѣGWWWR$N;w/...֪wyܓO>y…뮻naaasso⪪>\ggӭV f2k Ϭ۪et"@J &|G8| RcًHd8/4h47?g9rܽ~_?'^nwL%@uZ_Cp"ZQDUa敵%;,X[9C.>!C`1ɲ(9ZEZi&f彷2LMMmlmBhT{ D/ˢ5JtQR(94m;4Ұ[|Z\Nč& ;v%xCfȋc.BeKk]CQұ!,(2/B`=|^h׫ԡ!n5Qn[iq?_}?ԎuHmUn(>om4Ν{kkBVV_[[A/^`SSSW@=G{])?q`/ԁPU,U\JcҚ1F$ROqz;ǁ`0nmoKi267thp=PYV[o(c{:EAZEZ+lqZKK[ZHe!C`46q뛽8ҭW+s]"j#qUEjF0:W:!0a`@@E&UR̠HD=$ k*\7a3:Jzׯoj<{eY]:q;~F_\\%0s0MbD;^ی غJ∴IEq6r!0 a H(BBc&xCx$5T DIR&^jCv@:˲---}بwyg$ ]w]ǻEN5x>: lW;;;ǎСCgn'N,--9 Zց$YeYV@U5+du o|O}$iFuv{!pqE5Pi"QeY(Eݩ>~}`ohTF_nhMS6pZO=uWVΣO>yv;7S#Gff_K!/>TUuߍleYM,*R!E;0GX=`fN$2ͦR(JױJ9K"./mER/w}(b@BpYgGHq7;l)!RZ) "B nT@@]EZ#0"/C'PYfY1+v6B1|p8Ο?|СC5fs Os_EaR Vxh4GtjavSSSsssUUZd!5y 26 62A@ w ~S^ҸHQΗp^n(Nr9$13\y1@HYWUG]'?Չ4ly 7M, @@!Y(bbp+IS'77gֶ@詯"y$Nx'8p̙oyvvv88kv]NUD XZ@]L3><55u4M`<c\׫q< '5o BͪE{^8wzzv> Bhիeq}o][_ R+W.#Benv8#Cƕ CZGd;y.to?WjWzJS^^JmG5-HK  Rybן%7:WDD c2 >MJ\"`9ݐ"q^9wj8d( Kswwmo<4L{O-Վh~zFgPF3ȥ-kwõM"q,3]Jh0 !4IBזflFGVV/zRzJ)U0Xe\)hxsبPe(c᱃s>W͑G\z0J)&'ETA$,u^\[c8YtTvdI;?kh0lL.-]__a6x#q0^V#O &JIW+[J9ވ훨F;Hԙnwlj_fQYd# bh1D$ISJ-//7MpUܜbnnNk^as~󤔮9CLy~ rfuCkDZk^sT^^]]]]]}ʲv333q'I"vB UH8ݠD `؋0"kހH*giA[@A>O>K͑??hUǐ kI/-37 r@"IX2/GXեZR"I.A#SzJ<ϵX1&S8TY.SA^V?_V NZkӧ_+qqi5Ң0W@k5 @KR; kwdQ-q9Hg^ZN`H$8!aXiKi^mwn쾱ɣhY e3 T|>) SVϾr|ᰲ ^ K?FGG׮]p L^w "r~3ό߿};HHqWeuWAX)2 C7&^'pOpM|}_W|[=3X[UCۿ[Bf4r!DX.J|s_g>k az@0ɽ_.|vds^%rAeK)1/6Ȃ (܀^% V0`|!J 뫑kHgjk[Bh lfn!Nz 4* o{Xc#&,;1Z}׼GӈC:S5ÛVGC *šiq[BxðzQ~UxiK,y*[R)L(( s|9gް9=:Q a\HȅoIy[MoY~A 9<шhB2xḥ_{pK"bz\ًTAƿoޕϼzi;ͶElEZPzk2|RԶI~ GE83{p{c)I/?03n7K}3N{C+x"֭VKJ*]kڷo@[i[Jn 8c`dpq9Ç3 w/[, f I>FinJsΑ1ΘEnwyt$=.z;>VT1&|c4)UjDpg —~[NryYA^W.\Gl_$GEJヽ~'OR+dAT]7 Ykfz0N6G>ܨ2HWK N/ գ׮]sn+qŢ(WHn&Ǐ qZ<Ɲ"Pu\4ҬyV$ I 5Ei&@!EZ à41 &<<3qL4Z-9uQJBzcݘ/紨JK|q׮)iS¹fqaGىֽ:[-mi1CyETP@p4sWbdQzAMγReL?5KCaV(fYMAc`w2` M}j+t䱋$oԔUe7S_Lpk[?L7?mTäU'kpyHI`p5 Vm$,B1"7shǁ=cׯ_w^vggg_W8^YYw𭭭`0_|ph4fVkO<^eǎcsss ÅVh4xgZMq}۷W^qҭ ѣGvB<Mw<9> $DEs4#B@෽b3L$fE 䓋֒ahԚ͑Vס(mbo}/>"b +@7d@{e €m 'VVj'Mn<׫?l.]\/g B0j6VoM6nՃh4\[e}/$Qz{7:ޣS=i6 z}kkK_{󞙙L16>>~W_}… x衇\ڔ{mF~eY>W^u=Г'Oax}=zeh4= u#K.I)ggg0 Yݰ`ė4Sd E,tۂ*/щчWn]tIxw㏿c"'={m3}]3&?{n<|`T[O~KKq[kX'n4+ 0bB} uϖ\$|QK.wN]w}R~ 7֮~r<'/z0TWڝaq,NZ?4굨 fE6GfƧ8`\x`J3hc8{]XD=0KuowN;?(֪O]T׭ .ݶb~r }Py~/Mǫ͍1"[0#uS?w߇I,@JV N<;PYب,EV;U:z.k:{%I9T*I8chCVp8L-ٳ~gΜR.\xlmmU*^zifff{{ڵk?r*㙙fnHSSSehN  kZz4_JVECH ,0Bؙ񢴵JceGϝV-,vF?FM*&0!"N;YgAFbBZNX7ݪzL9 >$)Cz++ȗFY8[]Fdԡʼn FS*6ir7=Ⅻ/JY%0̭Ézu1r_}ݮ~5x/#D= ֠Xnt;yT#-SE9pğ_ 3. a,TDuҮECDJ1ԏC9JW^?uS"v;IGJ4qی=x;FFF,c fڦ Ƙcǎi>eyX]]VZ:QT p||V90g\yL0e021nH#W??Q}{l;o+N?{8H :ˏ>w'KB`|蛿!+OKEodeY~3C>sA8ٗB`}Ix;[+ׂPo奶a }GϞ[}~/^'FaZ{$| onon_Ƽ9?3sd{\ί2hѹfUno~͎7snh,bih-摃+C)wsYl9 #?Oԃ 'Uiǥ2co#?ҹF.sx)* IY6"@U$IA!:N YI  … 鉉 W.//;8D|#B$54>>TŇ?fjK\og9w鸑YZk67nBG᤯A[Oz>쵻{N(?|^;~E,K~'旎;B=g/]c"ZGo?O_o| S?YmQ#_GrC^oDI!-S3`M~1%NX<?l.&.]CE.㭂֮8{F>ݥ.ϯ| QF8LJ//19RJd;iG!vk5 ֐/&n2Iw?̫\Zq`BHߗ(xMhɨy0!,wm)x yF6jQQ/R0M6cVBi"+RV)N"%K.>}z||_"C !Z)uщ$I\0q1633vmu]`N_ȑ*(|cl8FQ&e###MoYʊwϊQQj_:p`߾k/9\\g[*-^>{[yL[W~?r\ʫ~{g??0X^T8uSoO7:1~g?^ہ\R)<Ѐ,CY@(j;?*jꑧ?RuTO_ɨQoW 3y=.ŵz#&%KhcFJ jUo./]:3Q/8A2?1jƭѱյ+/\xHMu76I;M):gh喓-YFĥC%t0>&tos}U(BFIε.m(A+2 N4t40>-Z~HPz QB^Xc(4B ^NrFZӟekV:0k4MϹؘS٫+&''hKDeY=zܨKJDN)VEQ$Ɔ䚜{$[޸nm 'o,?:/^wo?乫NZ=yl?cN\h8qH(TEq=ݷ""Ԫ -Ǧ}˽wx<ԅ0$B /~ĭ81gLavKY1PK"TFa(]_/^5%{箯ybi)DBEA+d[0~'jQ֚2EQoW.\:6&voتERp"˜kT_ wΣg,ﷻD1@ B Tk=ne ;ۨu^1m <!c9 N%m%DHRL-h[Iq!+q1 vNi9oE.qZz^a^|ٕ9"aV˲A!]r#>vÇ^@vDu'__*95{v?4|W̖_xmG} xӟ|{qóg/\`8|w~_EdDk=1;~ngnnmnÏUw?}ءTj#NPx=&'},n(F<&."^?M '=/i³D)sPJK[_^*J2|Oz[>3 j\|esc''|PhHsjauekxH?Z3FQ L7j( k[~Zh2ƊHbo#m K``H2de('ݤEE\AhC@[@cK" 9"4tGܵuhʓ$Zw:toN]x%q;x^a}ҥ^\g%/^v@ w;.a 8.s^;v腲:0j<ڕK?sI=Hre 2ᕽlc}x+ ?|[.\Y~c˥Xk!Wc@9o9 N&zL]>2V鍭 #Xʪ {zg/!/.yYJ|zG?x?}}Ր)dѓW>h}UO|RgvJɀ[Јҧ}MfÙIޣ+C/vSzy%pd [ i!*2` >+WꁧRCABhZ\XQǠYAܳDFĀV`VKer#Km+8?#J k]7 nTeȀ@x2TA{ `DȬCݩR,:,B&;V c)e%"cLp횫WNNN͹ 9kz~駟|jjԩS.T*MkkgΜu]j*i" ptt.Z^^v4MÇry_72WU6gm; Ͽ0re~-ǎV+*t0h&*f~G?gΜozW=Tii|_\Os碘}߷=xs9󝡏B1hsT7DFzK0<۽-u_:xiV;AP1@6+j8 (K'O޺p۱s|?0fZY.QPr BKȹ"K-# BP,gҠY 8LYZ)km 8v j#eDF1bek (nTja%x纝m%9R |?*Qh_(?-tV**s{DhD#9ש;,"qלK9;t\6::ZTz꩛nəعC;εkqvvvee/~񋮖圿Kp)7cv|^̌dw6MXoi v6YMNN6MWNqf3ۯRddys#_9=Dљsέ|eEٲ^S'~_DZ|xn`P&/=/G.~G6]OXH|@ptkY٨rp0::ҡckʊ.z׮]FFFB{nccjMOO0|uuرc:ٳg0NOO_vM122>c-;.ý)"`yE]uAvh` BTK ɜزAȈTaۙc*"cl }dT8}?'BKtƷlܳnD^\xB(7dĂL H")zAl8+i ArYjcJGbbic!CCt=a`ׯˡ |@0@nY PeI¹lT#ϓy 2CG!ֵ@rƍ1Z0*AIA36(ԦLmwg Bm2~Ƣ5Ȃ NA`ZˬuFn vV1zQFa,"̚L&AZ`P9g+{9kX"gX"~*;>}.͊0@5pcJ=ꁲ\Yzd=* zՍXo25R* ^SSS[۵FsijӘ@C$[E81i5hU "EI(AŴ|C'泙#TTvO'IJ4Fa0tJTGvf#Yˢ˄1h%3$` [*Zr1H2gZQȓv0 T ë^98`lo Zd|OHyv"pwc)uzN1Љz4Ы ":utgyfffy|||(n ˍFc~~8:6:5qZ|iM4*˿Rs|݅W?J` s.cg>1D 4-.=! cĻw " qrk`0HeYin輬]2I .κٖëVu7;W4ͣGAh4 gΜY__[s'IDQ422l6M1˲`PV5` `L,PF/4TeR;'GAȂe57oE+vKKKr!YItZzoeC'?+W8qbffi@axx\?68m5G<|SCzSSS{$lZN(vL\_*3lotaKq޽zKx! &܃\,[X_?&'л= ?󝫥X$$.vT1 |)S&nGL/<(J SeT^c>#kFDv}gtXpΥ'㖨Y'*R ٭KaMG/ 0 $YU-}x!$4K_4ZXgHp}mor/^dАp98YfiپH "R9Ya19Yo)ӂ he,K41ya3&@pOiDr Q,Fvw+XO"#d`iW ~gL8  UNuE8v$>v0 (rN}ʕ:Oj{1Zs=F~7WVJ-ꊐ%g@|SGGGS㑭e922:4q`"KܘqRǛasS1u^"K{PA9l,oט7>?iUݞzm,E} HWl뀹e4,2 1Dt^IzNS3YAI͙$v8 ;_xfYםkw:JDQt^x5IǏ;g=55NۭjNj]zn;) (gpڽZk9e k#Zxk:&t==:rؤ%gLdkD:6:j /|׏'kpRc:2\C& "ɶWfo'4oN.w{mr~4&'J="6D6#{[ݞ`",2.\h'l4UC<K^xܽ'nZHd9lU=Z )MQvj>ųۇ-q!dkDX}Ϗ5V["$Ό"P!Kf'U*bn ,P((L /f[37:qfVpc{{;RX˲,MS71kƻCW_wp…ڊ{{a z3g(jZJV%pVwqNȁ%˹xf||KH=r=;wHs2Z筧T{[|u+=߸ȥ rnA{/`d8~Hx6VR^P֘i22vVaJ!Z$/EjII!@Q`%"4RoYX8w3/#UDm0-7~9r^B^ų^7ǁKK$bHqIKg LrDf9x%4!9j̝hl 0{7^|^k^d1SvpNYr֐dȹ`յ[nsdd$OSd  9aw,r$ AwZkw,֖KÞڏ[ڑ ˋNR8ps~gz=g9ƺZsεmNtss'&&nଶ9z}dde(+L")ܩ~h {icM؋ϼ0k~PսǯwvQK8`- Zcy/?fëev  !'lHŵoGFޚZ2K=Ee6z׷Z7GY)XVKTV4{l-^xٗ{;#&ɢqtyCYDˋ܏j82B(3ϜYv/׫2bVS]=tH딣4*/={f|QPVZ% FxJ"Ƃ=c|aVh...V辢P:؛K8nrbb"Mz,SyQ9Q^wZj^}U't?>33STkSah4$Hb`"h$Iu֍Qh@;rȂ@GǞ\_i`~EXbuW%jw2*3VyAp}}[CmKW_JZ4 x \S+eÁvU*4M 8G}'6… /½{Сv sssN s\~jjZbdO=TqUCsqebANLLt:k׮ K_ߔo?wa2163V6o;u}g*Q#!YCٺvyKory'"OK뇝!,p\6K,+yRxEƴ`dQr&e߯[جÄ]^_,l~h,>d9Dݺp⩗^?xm7ώU_ۨTzZv"{a"HsYaRd9puc( ojvz䕀pw k"U8onuť܀i5BuNif5fYI4ЦD(-uvmFj !. te9kŰ54D4>>VA~|||cccuucccB`;;j!qzz_j̙3NQ{T]m{g?+\XXp}7#tcی;€ltI 0y/l3ogw~MNiбL \T_3 Xjʲ &8/dch"cYDƢ0Luh=g'g7 xty=ܬ h5CR0PKV#_y_/y;m6gPW\Xe,}s&HLRvۺf0o/~L~w AZA1?|ʅ9c/.n^:d`ͨa<.ml^[73,4qB3pu鶛߼>.ءIrK.;i_$Xda~ ,\P7W\YYYqe1ZpXV|m+&&&\Ͽccc_vGVvfxEׁu U]Jw̱(<( CАP KPEMyr<~`6R)PHD`}ٗ/5*zKP~־p2 cOHD`Ƹ!Kc C Ta>:v1`0:> H珍TK5խv+Ң <(Q1hR#ӯ^䗟}kF5U*U27zg\/FzCa1_}]]7Kiwi @}yژ^>Kg^^c'CyC^6v}OW;D^hkY~- Z>gO|up#"r,}G. ]Ra:vؘ[Gq*Jx3DbVY^Evy?0֜Do۟|I'3h4\1vaGqRJ]2EhVܐfqA{?7?gG}zG1R*}K{FG܉^~Ϊ1@Cjew~ cHiSj;a}_XiMk.\ߩcA fdʢLKc 'E(H٥k+ "c{0 ܓƺOѓRro@=VV a=+.QgsϿpҵk/yF7B |)[c<Ҵ? m/Ҙ0PZOtvdzY=Z|۩_yc͉;o?u!xY#(2D"$~✯CW>} cGF^w^VzGl6ssst2'q^ԩS\YY9x`][[;tvQJellZ:|hQ jj,: d2~sSO?GЇ-}啧/,9WG>f0y?xo\svz. VJ&;q"ktVE(0Z>]zkk}:~px\{'/R|GBiUPFkzZ :IP":dFc>YDD8 " us_A{mI֬֫JH-P$푹K/DQ˧~~ff{8.XBe ZKĉ2tD<ҡZ:֕zzz/..E9??ַu8w}Bxdd$2(N'2_TC\ϷZ-7HE; [n妛nRJ}?,߿f333###A8_у|P,mjMNOMBf-oyl6YKͱY/.m;g˟Aa`4cc9cL5JQ"2C0˲vD iMu;Ξ}pX!!JIJmzb~8zԶ09 cL[ V[0$K8_ZX'R-j"@ ĉ@/ZFFkM,J{o~wywC,,!c;E &(&''8"=ǏGć~x~~ށ؈;'?t&&&sKƘ[nggg;ԁV3s⭭-"j4 q>v\T\DZ*d% )&rs2.hK`n#vD@}ce{1$F!yQPZZbqe4DaQgaKL䁵˽AިrUz @|9Zŗl|dtycsq}6rY'=iGЁ0DM APdyilZ iPזN?}3=,N,SJK.a6;X Xi2<&Oi}R2iw PThZ8g>#Ay@"GD53 L+Vq^˲ly[Or|~~֥C: {9E[of(ϟ?Gq_7z[O|Kܠ(~'OT*TUWh*\__w瓓PF^{ry .bH) s1d^`k|nbPI^ A20f"}kщϭ%2MB_v:> S; K#2& cȲBzRJ!1QZe:H*ְi {P>|6; ^[Ȥ 8+gX_dJ @~`e;Z @s5 AV'CLr&9cO?wܫ_zl&{REa!"GaZNp11ƐX+Sj۾`aFcMnZVPJm{啡d\% aE`YX~g[8vXwq)pߣ1W\w|w...={{uWJe{{[kKFFF@"YJz=pec۷g{F ӱdgu*%@6@Hh|=w@<4bp'"PÛ61 yy\YzϿ@>66r»9qr75#_: D> }QN;:@p^QdߙK@XZ馽vg#c*U[E5~=;OH"cƹ'pE8*j5YK;,4G/5BeW7/\9ȧ^]0 ޲{b!C068 M[K@$%`w/ AR|9g%m3.|H \rmⓏ^y5O }A$RF"e1R 7../..߿?Ig0 ?} 9mܜs˝FqcG>甂M: C7W/d$Ӂ G!#"c,briikAZ͐V'{a|b^k͏WU3:^)XlyfM.(Éȫ~w&ZhRIi*ak||1U]w =j:_Ƙ(8g -9zsjIOS&p5q{Z`lG< hש=9c n `AiE3U[a3Vo~*c`};]%8;w b ɉ(*0Fe/\Yo5*/_Yb"LMLFF,ltFJ)əX "iHdAKTr@D`RJcD)Uj14 Bx6kjXUҬU⊘mdIBڲow{0f&4㣥NWT?@D12\wڛǵ yq ¾Gaskg؎sK~nr!,#%IQX/gzJ\uK9\bsXg/?wZcnaW ?.3y=>2V%|ힻ{mo 姟?OWy9s|}7wkS:G"$DH8COz \1KB ΘBp|ϗAPX-%g,H3c, =bh8/ϮR|o,2k 2DтeDdրsw1 oCg.-?왤 p,r/<Ks>aԠyqn/9)Ɋ/}w}Sͪv)v) (1#R$K(ք YpyK1LJS,chy E5ZYX׽muv6lk$rʢQoSyRơjaZ%.t X}}Yiz󳣜!肁/ngJ";P^a/׭<̏>J\II5;m#Z0Zdڿ`tٛ7koxʍd(䜌 =OjQ1"4 N 92Ꝩ0e׬i-nZkwsEZ@zQcL+DV:K{VSϮmP-=V%KJeFA 5+1 q8,ҟ/olFfiG +XDeQA X@=9YX'I ZkJeQdP ,1Pzv~bj߼eP0WsA2[q4EQֳ=!%uUֹ/ JNZ =zҦ"-ˁі%@k 5\fFFi5{@Ҏx wo){i JUr)Pk{oGĝ""g̠~gOMw{ފyS>#zAF_&DD d9<3@$m$ XтQ2!6Jk_zb_ug!s dZ"f4d ?/LsgD0('6HI=_"Ad=2G>OV[k.܁ adI4~k -z/(KyWheudd%QT gk05fx^0MZqXg &>wN9IlNj<{XM v,ɐa- HQ-^lhw#C '@Vo~w?dX(1 I&'G{N@k[?^J޳'p!`jh6= %"~ =BzT-TiaʊKIoyY2߰M?k˵}=g reD, vJLHSc4?{:q ˸Jp1(ē82.b< #Drrēg_ڏ}F2d c #3!@dbU$Լ@SYeLvw^&{" .ΉEm!Fz(KVP=5='`yRzQ7ӳsuaMvn'Â;[kւ5EQ eVؒe)7,4JOͼּv A"e,gUk?/¯0RJ9Yk& {Y'""cAc3./ֿ?_伡*FOX#82 8.LV @Y>LTJTT`R Os,YKC ko?{@D.8-1A ,1G~?{x$!OerC,ɕ! gqQe5^'E EQ?.UP!1f'.&1gVlAc ͘K^jg p))0q!H)=Қz Á5YOScLsMZSb8g.Tkhkb|ldzl$2EYde)04͓<a*>ZO IY "{@- YNA'a¹ Q-lk[6X@di/+4w1!+8w+Đk%?+%ڗKQX;:Ry+ϼxSE}ƝT4/ 4B+qzķ Q~Eq!d, 7INdVTYfEJD,1fvTcK{xC^g-1Ãqb5gk_<|Zx{?pLO8VڔN)b d D ܗ~(*`sk++,;khv)) k֢xeid$)Y$,3Sq Ԫ2Z\rxu+d++U՘(lā̋ԃ<ei rl@1aQd-nout8It.HG߆ FRn:Ltf/Ƅ6 YO?ڲdlY(R RJ)IIZ)!+o0+c:rD ?[goZy}lJ& HX kH=34a9{ιLKC-3\(80 37"4n:5]mMY9q/=O߻VL;_fyq츘nnƆiȊ##r?܂sJ9;^uGb9|dh aHOIBd8Cdqx5Sw>~^(D* LQ&E9 e՚ j5U77.tzDEQ\ti$5~'hsկٙcA<~eERYY{7*@=ϭnsG`B.<Ӂ5EQ.',9.KkD1y'=;S%K, }>w4-_!> ^hw1wyy%w1ڲT8XJKE--`6Th㤜zk\kst}EK!t[z;oKC.|Us]`hxgm֣>*yz5z/mƝXYkA6V+q񥫛6,ȫĕRdƪ|A0eh)v߽ щY3@U f @ _2.tYLLNOpsK08l{9?C K,CJ[dt˛L!n]KL3 2}ϗKFk8$/[ 08w2-m#.EM "a}3_oy}ߐ׻9ji4b.y1P8gI=,+ X*N"Yخ9퐳CG$@':;2>K[nR?UJum}yk5(D ,- Xde?47B >[K¯easaИ, U!*<Jԭ +y'oQrIkk>'bfs@3m Aҗ:29+J-XNK50Zot0,h tۊ<)jv!+ڶ!`ڻ\nol,!%Y"+ "mZ09ոJ1eyRhUje|!^Js= <.\^ҙn/i5\_ eY r`i@&Dd6@9`ɒKW{S<Ϭ5Fk4I&cJ&E|Br/|1&DNfy6H3'tfgȄOF !PURf)2B`/" ,(`P':1f߿1);MtfY>,ߴf(/r[Vz (~'("|I:HD4El%' LcǁVvt# cjaXؘeQC {bA`2B噕O|ẃ_xd6}{&g>N7Uhj``Ԥ'is5Wg,; E<{c=:kIRV:v1N#@Ɣ *„7hΝxD ̀•3+Pj,9cP#- n4H`=P@:J$Y q.5( ǹy/^bvAD+g۵.@*T`hU u IQpiu<VvFW-{`d@&UF)VX O!Ւ4ڰtlմ (x`aP KQd-g D| WI]Dq8\T +EAza_bm"e uqxVldi6A]jw=&0:4<ϵVAy^Y\xz'Ͼ'iQ9{ QU2H1Av-^lҘOtry<fg/̇lmo/,,ugϟ?fi ӼJ}e?UyAxVXCeNE2Sj MX(Z4ۭ5CK,'ic ÿ;?\u?Y^>k -,56, p/>}ulqGR2mG0׎{!E}QxJ(hNjiD2W] Ńxf/@Ȁ1^xGuhGiHzMr)giѬYJjs!=:ށ:`fЊVVW-RTsιf֮ŵP5y,Fa TخK3I-0aҥi:L'ǟ9ynY5A"*[-Y^uC/R;۳VԲB`f ̞D(Z@ǗY i:&W/X&^bsNK88x@T/^G/usX3MSS2) bQݭHWVpΉTL"B$d#gg8?sw^r1[[k7qBConl+}5|RPEPYZ~~L7L0%T,QPk1xД:hˊɨp# q@-;Ql&*&BRJT*꽷y*k/1VD,02@NWbK<Xq@b^̳^'"왙(t@80l!]MB@Z\f,4vC@ZS XW]\=ޤg'ZOAZ[GZϟym7" H{q>"h Jǎ.?dy߾Z-qJ=(lw2iZo||z+ w~3<бV&v8;eqJdWpbޭGU̩zկs_uÿh;?_}/ u;rw+X Py^L&sI]c6=qm7I TtM뢴uQXJ>O(1(Bo(؄$enĄ2B e(PPH鲷,%"((TŖegqA vG/'6T Xb\SQPrK  l/{:|b0[ՂF3Cxsp1߬DR٨% " M@[9<ۨ[,SV(b]|YQг#uZXRD*g@"Qi_&BTBcQun! ^5?tԻߘRAQ p"#xEJ*䂈͟>sRE!uofoPMߝXs^=AFI܎)2Fah0`KKg,m$ "N@~}# #FIM {MOt ȳY,RLhŧJi֝FffF4$ٲp=S)*2 g?cicٲ,RNv .Mi<4dSMTSJc))ECAIؾ~mW_쥍,, @VS&xnX&)aQ4e7{fa6hһ} 'A#<;P UhKS"h5(OG%5)B+ ̕ɔ3} $"*Bfv188)|_b~7+߷WwX=N BԤu(a86a(,Ji}BXҴ I\.% ֻ ݰZō#mhrnGqC"L {1T,sDJR"FQ$;p0moQO04F,\^&#ZA8 @Q") &fqk굤U IPLd@)*EdU V0 Z5rRvUO}pP`LD=o ?yNyi-} 3xr~?g {Z&Фǯխ~H)UI?#g&"E"1Fbr<FZEyǶxEq|yC?eŕ+i^߿p5GoV{A Qk ̂J!L*9)h8yF@kWeQEiPF+MBb0g faFafa@?l21QhZgE3F3[F'qH$J2H`B$H$$EY5[e@%+ŵ+g.e;J'ϳ+݄( yފZֻ(#‚qzR`0ps?,IV(TAPFdR$'1QD4"EaD)@D5*Ţg5٭f2<2w<γ JPU˕9lI`@Zw>kmF{`030Q+)(-J y<P9Z Cjo8|vFO9$qt2 w}Zz#rGEU)E"XZs/IL$\)^n}Yk6h4Y皭:@aEQ&`<0BR@1*6evIUV4FP (-EP)=/u~_{m;ַW𑷿 _s+z񵷜ja(coyQg? ז:D~W WLǔRZ<` !jbBaxAt΅ 3ܽkRήdy z+]oz^3W.n:ǫ7‡LZ_W8m&wZ<$/ RҖZk qRN4ӵZA0T ,,1+Ϟ=Wo~(Ѓ0JD1 (iJ$֠K7Dq "Nۮ>6|tܹ4MCa{詧/^DFD$,%{t=`ٷg^r ҿ|+n:q|?ʗwngL+L% ~¸^~W{~x V.>utj؛ΐSnY$Dq j0u^yU:Ъ|ڣJ0"짮`;5ᚣ~=Q Jtfj-=t֛n6Zy!AJ˲FyasaQ\|4ެ7a<Rvˇ[e 3H%%\9oq)BWoP(fHy 4t4 " {owk}t'qiƄR3AcvɴVO(N~S+7'>r{Ũ(W0g 7z|F@( ŭHIP;fzycDvk_ox#E Vhh MY|g=00^>݃ K15,;ktYi9;3H" ^IqYH7iU #_d.`ḥ2Jd/ h5 ڵܜ:xlyŅ8/篬w(ؔ&*/Q2Mjd , qhGz>N}Df:` = 0  ~][GVMl+TWZ:upiթ7""iRY=/'&dN;8(Td1w8ѧV&=Bٕ:x/-OZ_Z׹ SZOKc p_:ShZ)3Jeyyi<99t:vㅅ}O\3wv塇uPי8$u,‚@v.Q1yvtiaIT%\%QK華+TcHb2zH~ovy.p3׾wݫn?;Ix_*eR%='ddwOon}OVOc?OndjN&iĐE@vABd^󈤴Šj^Y-͵C48}WV;3 d؝0 "Gi:/TiQR9;&"X$/I9:(\|<9zpO>|`iYWh`0jq#;"*(,guyQzcsk?S?:Sw c|SA+O'D&:uR5q&Qȁk/"͋2f_V8;wN]3&ޘ)}GZ-[٣TMIRk-eDKaKZ$rxZypL>o{76thϚJAgKFe6W/tRI6QH(s:.4tAf 0eg!=i>495Ny;?fV<8_u>S7xIzjҧI=* WŬDȃX+O?o=_?/|֯|o?Fhr)EX#j-\xO$ZmSr6fɶe'Z'E:Q& LpXE;CGKsY|6sgR?ȅ%@)e\ksumq(ꎋ>PfCg3<!6UAgv#CP*.?}P&@$R?+bwXl V=<׊7kgq(w_ ACѱ CMT7& ҰԎ5:-ɧ?kϰqJbTZ#0Hi*ŠՐHt…V0`T0ʜG7@E1h  7N{~̬u ;4B+"R vry ]*E&jUl8מQ"pU@JEgQb$"z?^Y_`A(^b:iFpeJT=g{bu=j4c+R UG2 4xUG>'߻uNp/R[9~xI:ǗG O98;?vER"sF 2%ZK$b2^$jP9 ".tvݵܹ(K;4͋U2_#$Z* u';moO.ŋSm dm8PIL=FiJ"DE_x)NO]@bq\”!"F#r&ZIIPi#BZ@q *b 4y[2!Hֈ2&6*d&lGZkő?˯7_w/Dԯ"hE=oj3pu[k7fQK`4۩TYw<tI+feoˇ6oym&bdJ\D,6do|o~Cy|W/;+.'y[ֻ@c4Z ۵x-'F ׿u{u5׿Ue/;Ao~Jh[hjzL$5UZ`ՃAXFI{C1`¼ߡC }9\^ZBcw˼ߌcD\ؾrV8E<{hQ":Fgc- YY'e:,|M騻v/-?tgP|} ۾]=ߙfPk ƺƆWսx=YJ-+U"_b [[F^IjLhp<2OO^~ayETQ\\i%EZʖ,@¥Q?ϼo&8:1Ep4VB`"}s.,,F{FSV`Z_W Ia뜹pa x]jV=c+ B$b * 0L^꛾?ɣKAZګ{y:P[(Jg}yqufgg|M'Cw}N8Ϳ{m_w-q6¤VGqA&)T@<0{ ʄ30IYVX$ l"ЦNٙiAs Ei1 r-iA&V۠bEP9Ԇ6m;zJ \P|o<Wּ6!@{ UZ&5EҮl&  x8Z¨UkR8[ ;SP/;J_O 'cB5njzxJ)}M]kgN9(PDwHL.8\*<&XXt,"pe(:zllLl^O0V!L]" p?կY8@JLl[k&ipxrwyKxMྐྵ30SW-[iռS3ܹ׃#?ē/񆫎Ƹ_ȭ8 \~vzpQH*'W6@jaգ0igȲ>{n_X\G٥V$)@Q@?,7׷V^h3 #XAƨi8G6y$-rJ ﹷU~=DyU1ό{*{<{k25/8a+¨J*~]/q3֌3dg~0婫V,s^vNd 147J^g^Lg}zf"P*h8Q&R[^q:ط|(cDXdPJc0b >|޼ƛ0 ~o޽/5jYGY3旈Ķ4?zx~R[n'T3̾w^X۾=M;_1Q훾']_ɥK_|˛^7=ё 1{ *%xwV) Av>M8TxmM}KGϦ[jE7non\Z~:'P;l6Ph%QZ5y^Ԗ\Ղ d6&a8 ab x"CW{&$e1DR *Ds&'If` uFQ\}ۦf\ ;7$tg>?8[k4te9r6+h%Kk(ח66;Y\\9w-w҂>z7٢hɭL+D@VUli.\Z;rp0 )wD/<*-,?]Rڷrz۟msybGcG,-hTZ[_=;]?o˫g]=˟_uE$ց(^Ļ`5" e^t VTѸElb~k2I|ŎvCu8.љ?uҩ}F''ާ/]E(M ;Ll5zjN'=.S"eYFq l[}\*YpQEw D mubK{;vU3G6:s3̄3 Ra蹙znJ7&z /uh4ʆS==\1f!N!ϸclWpEJpR`/^4UrR^D"{_/~9~c7vѧ}h{c-(I>&w@Y?9zSO="ZHfVD(U*XTɘڐӚ -Fq=!RD4#uӈO^ -o\$?4la$Pk~Ko9m9I˵Ѻ_|RG}|F{~_oyȷϾeoƱ[G_3o 7{ocā(.#Wr:@:A:< xh7jx ")4Z Oʴp;/煄th[3aQCڱdlܖDLlH[^fӦ߈C6qg[QuY4Ҋڕq6HٵDYR݊w䙴RT Ak=g?~ [^|~P%.lpcOn<.lJf͆>G1iR•c[XU] :KN1B gEi׬`:R"MS`ұN>rJ[BĪNG<q P aa{\ӊj+0aeEu1>3`1( YE¶ , C解P|VMQcn$ Y[2"j-Z֕ZǬ Ah00E#3 `BZAimͭmPFG`?~0;#1'p֭-( tiy a*te1){G ĀjhjڗӦT"5Y~w={~_6i61iu悸=G2PW}k~8`'M*0jѿ=7}ob8'dw~e뛃zR-!nov[a(/ P@}$%Kxn1=OzQE/,f͝zK. / "L^W4Nš hInǾ b~N -ȥRlqٽI)BY\ lЭ&H0vZfUHDJGfnyn{4.˓͹zH:50$&@d Zi("l& #sW5R7&ݮD뽯! &M @2&@eX{(ཷeY*@*Ai[n޷A3O,..&drW?6Qmt_{Q)*eI((i$Wn$qhj5Tվ-n:ۮ|rݵ77Gv=ǯ;~GG[7\{#'-pݡ(4x;) 034ݿ7##GKA1j_Z5ݑ zUZH{œ" V+'.0LVA-a*rl0L@\BxP҂QYiJ2)8b@J(CQlo(kGkbƑi2/(˗7VVЋ'U9Lw1E֦, QD|ʩ?x3N#uӝM?#U(A8 ҈J!>+mߝ7g"4`&rA{&'~W,DDi *PZUIyxF2,(߸iVl;v=z+_yIlx5?W_Ç/jeaX/ Ȯ9ʹQ*6+ω6 xqIV*pURE`v*YI"r^$wHk듹Nqɥ~3篌rykN~/W{創_o9fn}ѵGzQ3N<)vPo68~h߸z(l. dY*ֶɨxQ\ $K7͵`ȢJD;"\=Mu:m 96IP,C(Qh>9*\|Yn\Y ue BDR "BDSr!0)0F9v5_X۠P5BRFcu@%80 Ai"@|RAԡ/^iUi#8s+ /\IUbsYqU !MH)@P`,"nmoOn4fC:òD'Tzן 6ۭB_*]" w4!"F& ٓM4%"@H[wp*@KJ)]P agÿ+n;}h[͚!۾5Ka kmZh39۝_~GXy+G>jv骿_[N htZWqKQݡA(|-6ן:~VE5ɰq܉$iM1tckz, t>M$S9K$-\j8ǩbF`@ŊPi Q+sQAYd.-Vz#.PY#KFwa0Bimgݍ "RZyZxay~kN*EA$Ե chy x$sN)HD(MYEe2&@T iU%1J z}m{e{?:͸Q{ÀsĿ;7P>n>tnBA)|߯Kn8ߴݷdBf~o/n϶a;Ѩ\y(ϊ>v&qe%3Ezh 倎:p⓵vHZҒ[_ VJJ P#D;33z902\q57̪n:IQ:/*ȜE) ԊhY؁I "eŲ0U(KDtzTX33)DI #R Pw5O?;H1IDƸ? CtZaBҚ\hZ-"Xx!ޙe;0!i۫Z ZkDH,CRwNzkks{8;cRDM(qeue8"]0seiUJA AմR0y0xbWj ($p h6,̀MEwP6־]Y;{?0y Tվ@$<{~~#ߧ' N*11ATY tekQ]k4YEZ2̶, k!Hˡxcלn(ڿ̗QLгl1{LJHyY1RFk5r2,uD) AHN+HǁJVDEqhaEE>Wo :1 Q`052,^P/$Nl1Tl-L,6,Q\T ;~yanc=z_ DBryx%/Ƃ`JcZS|/1~_ۑ}=N@Rz4\ BW U`Ϡ筵dnG#O;"N{_Eo/<\f;x&EX(އgw{NnlhM@PٚJ@@Y kPEF~.oכE=q2cEaoH]Ts~۳Q-`'H¥C`R(PH&d%Z# )}RaHlwWs+{MZa:#+WfT&e0ZO#"R&MFDP,\B@YT4Gfl5Gi9 dE(@PAl;'3sNшQTT`"Y3%WthenhȁNC)TSE^jePfUQ…"&½|)uwME˗/3suYZRp'r0@"=UNY^e^IIUƘE<8H g}cQ<{I"𕯺qqyַ݋^zp2e K%NJD;"(v/*O3 / $"4ٹ obǭC'V/>ʡA U#H; i&IuRD(y F}H().JЌ&/ D*B\0BH zFdˢ5兼FKVO fO,AX0 @ea,.?8ؤk,6( ))P!h! X*pg5)cWqV jV8!(,KV`9!"hhRd)xR zV!LE O!Z)+W X,:ӵ*$,8Q ޕJı(/H|CDU+ !\Zxs/{ѵ#\w2 (4C#Ia0^r1x).rN@p@!?}K&؊LHTQ$<}巜r#Zb]5D;dL"(Ԛ KqY$ư^d0-%/dyU@1F@RA@l4Z 8!HKaz\8˄vۃz( њ&IœqhE$sA0wB,K}Uzx3EXi#A@Z<"๺mjԈ( LkP"(D !S(J Q[-[qÈy?5n+d|QA5Ч!@PbBEyQUNDyGHWVWGS%شgL&kkk,8]YfEfRU2=V/mO_P"b_@JO !_Ym,򲲝{ώtqjRT 1U>h}=um=; h2΃k%83R EW7z<5Gtوݞk͍nوQ(@vX7D յY&|.}$ 5;B "Fa܈0 "5ޠW`0 bMXn0xqD1cY8)J\$Qrך4 k8.,BhagUўʭDރ*_*$p{s0I9T$bj W,"IZwl YV>unSlY\VNWPUE gWl0Y^హmZQH.T[*ёVV"Q)M`fD- zVD!6""Mvi` T2.Q+'k_}d'IhA Efsk+NZU{ӐrH\'V;<.n?qi;ȲL+Ơ ;v;gAsձ;˙҈F)s ;GgFF*nJcnĠkZ/JŒ1Z&$jT iJ,lN73sfnYvq=0yNܱw5XkyfN_DR޻˗Wv8곆!/U]w戝ξI)rr_;̤ U5`t]!LW6zs qw{up_Qf20*T-4 ML3$U)Њ5-QeQIzXݹc5Y޿w^FijV>! tQmyN5"yxu=p^? 9  Hͅ !-x7BJ@ 8s3(d؃;Ynt✵@5Ѹfcώ$ƐJkffRYRJiEDLtS!ğ}ұËܪVhRF$^WV7\^󥸬z̨ ` Zo/KKWͯރsփQ(xt?Κ:z P! ]9i:nJ1Fv yf{x/_\ir "KUbfoLp50 p91ЪG۩2 0{"9癅`]?={u/?{ʤ(׶N&UUd*mEnOX"ct1!nwd2qnCF7l;5ccO_{}tͶ_ERRWjJokLSKEe^³ DM<}/fe."d%^sڱ*Y`$MQ i8&-+%"EfQZ@F%H?10r[xZ$(&6GĹ"ʝA;47XJ lVB3($,qocqkăFEb(L, y@A$K=Rţô=gl8@ket/Ի95hf~&NdDaȞA5zzUpi/OnYV*aGFzf{2׈HU$^fZ-[veYN yVo7^{́{gן<<Ӫ;z"=gv\M=γ,;Wgkۏ=q1vk8pxK?ݧ/bOVg4^v#6҅vE,)ܸ |76.o)R9e%{mmYwQ90K+kFi%tuoJn)TsѰ?8 MwW6{G:2A8Uv ($uIfulRQҊh4N'Z;Vi)JB‰ſ'ĎQ#bV;&"̓ sF!%r0HR8I<`@ FclV&㲴ZIoOs>H!4"9etƎkUUԍ1ZQ+kkфT`;^QH!T!-ἯR4Ţ <h0D޳:ށw% }V_k7:+_{*T֚ 2BB`s?{|3|xGIMk{կ{-\0ncCu{0*}}-RǗgqYŽg q'{6N3_"w/yIEm B748ww?8_?E :hF.vܡ$5d_Y@Mm2o] ^·q.򐥉m֥ '}=D v̴쫺j8j많5qh=3Oz4Vhn~w*綬;ѰJP: N730>gΣO[Ss<Ԧg9 58`Xψݾjp^ohK)ndIKt|mEȆC&!i! {,@SӰ9>{+ڳzq{v8s|ÿg >gL /؞s/I .H<裟gI[!4jQ@=8.nNA48jX/g ΔqqUdFʖ|Oo''f`/,y8[҇>g1pT5CƤuj!4chdGNrz]$Z ̏qqKBsNѢ_>z=؀V|Uw+?*yG>7wAm4'Fm/8){>o,bhԗA B~lBӃxNiZ֚έ&f1Es9E`ChMvМtzHaWzp]o7Qx29 6o"l06݃!ks@SS<:{Jϝ=i7_ ?gD=Us|17Vve_`U!ʮ:vc_c`ZOgMD,ĵ|_.H9m'F4΀h# rN^_v=Ӟ|bsqi~ i軖 iR9i5`Toc[~6JwpXh@,A¶Mٴ~?ם}uʉfR=#ׯgcP@;6Xjό5E /oTmwY BD<30>#'"{{W/en|9w z_ ڃgה19gQ5at 808%Z3C+WΣ7tRXgt`4qSMۃrkSsئ;fMs9xJ:uwZdffva6:RmDZqV5阙Vchpk<Ꮇsw@=3Ã.Wf՘{,H0 ܏IO~~~meS'(CCMiн_d4Q;UvvcxW>oAvNu ygwƬJB #)=|s;EH'!iI24lk&Dύ}I9nWft=o_ux8Tmyޑdk\&0 ^ʞeg)4W>66Q#B L6ryBm\P΁&\W^;dZWz`;lt1lMO &-L ~_|8xdǖ|x }|m[_;_|tѢinc'-RI|͎2?=uB;NBtŮ瑰RQ>HGlOƶ-ŸWLu`;sbv:VO8^SK`q(v*0x4Nh~:pXOm8fydSy#{|{7to&kKŦ:Y裕y4^zOF?gڟ̄aa509|og\PJi5 [o3޿7i:J&>\vk#8vXoCwYJn6UU%lf9~,h4(\K\w}8>ŕU"-O&Yel Aj WHeJW&Ћ]$%š45X}_~N:yb3g*XͼQ;wE%a:CP @b?`O:z;vZQ'u5=rZrGv(c?~~K|>=5(4d Wm`XLr!klC;?UC+I B]3Jmtff-_ϳ sN\گc`?H\uwLQkOZ !]I?ŧwݲ,Adu<Uox2Xk}=ӟ+FsV& V*XM_5,^b_Ћ_& ⋨2V@_wg$եɱ%Aiߞ@1dضnvՀюұPv @# `+E= _JMA̠i p?_~C~1n..ߍX.ј/Υ%JhNFFU{ SQ/rVο| 5ZIR$1 pdUUeHQ51?aYͽV*1 V_cĶz?sj _.3EYegv~~3w|mA Plm~c tf+mUUfv-+nd励v"bY΁t_ZzlGiW@bpRl2FD (?+ݰ04zum Ud"wΉ֦ g{?YY9wCGZztd؏@s2pi2z_ Mw.sYcK1XB SV368KӛǞy[o+(d|'FK~f2 UD(I?}#7y))fQt6\9rUyY} ݖ> ۭd u : c( gp釣wWL+Lww6?fRR u 8uݪU1酞 m*D{akދKFȋ/{fNi['\9}s?A V( 8I('b9bf a4oi=  B~M+?јT8pX{ A-&`n+~9P!d: )BOaL53c'mg _o3/hG|uuro`٧$/g*_0 H"|-ʦaLro<͓-gfNMRj8NƤiZfBG|$&ya)LeB`:9tR-tN7}R64)A;:1uiv#8.!Q#I8;:"Ќ aF@n_樆x1zƀ;}޼pqt YNQ5._';]+Oz"FA L&$K8+}_e)~*Aձ~k'/~G_G6^y]Vp2b!FmDأ-698fBp`Ђf*f. N]B;ܛH7ƸxSɥaǀ2̙M-R4I,kyY>D뺮l6IAJd RJGf(( qw]_\|-sʸq"lu#3ݙ(Wm51tPXo`eM>uɍ4UWR)R2/KKVZ5t6 LO*ru6hEJ4vx;_? j8N-ۤک:& +8hg6A n#m#,. >`@ŠxR. f:`^sQ77;ҿd&`jŭ6 y{J!X(OHl-VY1vCCVȊm5a^>lauVRHbZ[E{#$ 0V21Z1+u Qqhc4e,\ŸB1-HH/p%IBp]V>yBٔUY?rCZ_OQW7k {ѧct%8eÄЉ#6d4h8j] ƐBi{!) A֌f:AvTg|8%Rؕ&aCwL.F'^9`S%Mc`(Xpn@.8 øHgVמ=wlR-_{׭3sa; Sdp…O}^z#({ Z߸Iy|4v)R'р7RGXSŰ @wh"ĉwK@4pܳhx[.u6IrkX^J.P{ @[jwcLGsW`<' &B5Ua@s:]6 fX@LD+Z&9rWs䢚GdTXPsCљ8f\lu( Ͻ9_EHMG^Hň. gDٻ#"lQ{k'^P^7A'ͪB wD?1["$pDHnDRwRɰ\V/݅t)ۻ-.0S3h6ǽHq"z)L }t١fl9?=pwYznyQ'V.}a3M#mGO.6x,{`<7$2HG5 mXk@ 8$/i6(דZ qb)GBc+Y]!$ * +u,MZwS==3ʋ{㼨$9Jt.+rttw#Uz ZL;D̏} ˇ amB LpSڍ9pf1n@Hl.Dv9$GBH۠$1ܫ$ԉFމyZc\ԣݽ>{\c֛0$#5 8ra9 PQ%"M,bz>HJYkJQB|=0FY]\$(R[cˠ8=JKBO"k1h5~}Hp22ͦDaPyiP4آ fԮ !f,d8ε[LIԟ[QQ/$![Qw;=lj2ESQ0΅,1zf7[s ǯҰVѹh2IN͓5#a yyF-bOļח}b h4<e>jsN;E'@WEuhUC(;\}~KױnݻUK9trOX/KQ܉hn#7)7J͹ya6q8Bbqj*;Gt6xBkLK]RɸMrs@`R0]Cd#8hrm(pљ΋͝ȭvf<]\C<73f%W\O+9*/2AR^X 5{3E/=⪯(GWd=I}""*0CnIGW&k+}z43R.~{3D^ZqR "E:l0 q`Ӎ``0_eS[iH8*P\rYB(eY|jI.c*R`)QdSֵ#C1u"l+ #maԂ5aKmHHK4-zCQRH:n8 [ۗL\X33'\m gcw;FŤ qNrdZ5EyD!L GB*?j_f6w}ŎE'0W-u?d,Q Sw@cu+S79NEq$ g*^`pDco4bo^_<;|=3[rrZSشsj{~gI{ލ{b!Zq-[5 h b:(/rtyt|BkXv:uUkZ^X aԖG`uTn]e7f~w]==5+ob/4$e3p:_ppJHrj:`8 Ӳ̄͸Z827NFydT~MGVƢe$Xn+o=5Ep)nDNYvb"~D4ߝ;-̫DuZޅfĤ7O>/~l?pk0HC@;oرE[̝ũ~§OuNݏ2_5e[LDd3fȒ0UB1e$R,$D5&QYB IXf/rFMYGIYXk,RQGMd@%Aتs*=ؾ:ř944+Qs!q 9@snDS K(O*)+[j;m޹~cp<M*͠5PUr(Doۻ{=WF-8lWyhG4 v<۾X<a["(/$рy]>GF a$D'hݥ#b;ꚁmS/|ݣ'⎥oy=EE+Ÿ{qra7piV#4tzy߻{f{aPP5Lz(EZ̦sAٞ]͸ 7,sQ G2eؚMSִcO׆z~d=@PEU0dq/^-[A,;!UYw&qtξ7,Sl4]st XZt6ii/GhT0)*Z]=:;0xwr$FeV+\d?u vz2vg?5G AxC mf(.N?'<G=ڋ/u<(ӑcz[UEgq4tKL#˧ǁ_j=Svv +UZ jxRZ}'PKK'/_ƭݝN7K޳8j,Q2Qnk^ۂ隆sDӵlE6ͤu^q6K_L \N96& 9WVDzј͢=/uenOװF{L(ʘXS%lws*LL'h4ylƺRfFDTd.ֶIǞxQbcЎ,3b!=_sOI+W@^mLIQW76^RTyyԿMc&% F$j<Q z:WtRQO:l݂ŝ{]dɓt{hwqЈ蝔"M3j⽝|nUn= Oc N@WgR/|MU]_ ><0E`XGn&;ϬGÎ`Y G"7*XkW}W~-~(fcvZ@\CX:ݿ}1 )Yd8,j2;:oh,+$?}bF]]jZLF˛Sss{i+NխŹ[/xg:7?[* RYB i@'l;:WŅsόҾۢ8vQ&ӱ` 4Kх~$ImP6FH'W)#Rtf_mtA6kija lSO7,!u_igH;"n#1!x&8o@b!nHx83D$0\򋿌ZڕǃFÍm]̝'~Éb᪱n9Ȱgvz7s]aa9_v }~'սג[Cx3qtM$%mCIV5t2 ;݋hi$<֜ŕ~*֦q!ϬoyO]4ZW<@_W*eJGTTVupnnh[5|2"m^nln苗4?]+N|$c$-+kr &C@gF2gj{`¡M@ߞח0K'4.f' m涷8v%Q\bZTs8d=EzјUŰvw:% Q&>խ]6F^[:zdѻ.]H<+ɓ">w,5,8K;c'cfkC#/Jat@1LȅaO$Pp<:wFyz̳L\wB?Δl@%iV䶘pVh8MGIk4I[ۛOhT( KeYT{Ҫ+Tw&~ tᯀBA<bo.0"bWu(6Vjر%,ۑw/m{gjշ\u)Yk+ ͏A$ Qzu鿯E)V@D D2Ipzup@M׬7h=򔧔 3?w]Uv7z6w..bq+իۅ6Oyц/Db2sH@&``N38MjfRg拢fb2 O#*PLh|\qM֩!Z[u41=wevh}ZǕf6ݴ70XSWsEI6W`ϯJxb Ku6s@Qkˢi1I"%pEv-]Yk1RdǏJG<l >8wqTMGIG*M[w릂8Ɖ]vbwfay^Ui4Zu_`4MDJklMp-7K!vvb&m "ncZ4a~"20&ĥ8G]c9p<~ewalbKv{Ig82qq+77Zc']N+C ZChA `pyy0A.æDeU._rpխv-K-()J+|OlKWs_hvAWRr`ct:7;c@~ I;n+y1O&ynǓL:S"Gts\ئ17,tn:3j*YZێ{HǩrEiN?4?v[R3؎" Sa0D27l` T7h=r4+(q$,= Zdڊg<עzEnGkgqyxw޶4nzfJha+\dkۭR;n]Y[\#+2(mhYtVp> O$q '^ j S l22D:ivMVwB1j<-F~2ѧ{Z+ UǀsW Ph?_uƙ VP3ˣe$ H\ߐtm9桝}-I*>vjc_x[hGo4c$]>v8nIkf~.*fU3FA{`BÑTH)=s]T楫0l@+<`㬚v \%:a3Oίo5i9, /E/(mWmK1´Vb+!)(W6O-0겙R$X 8m`7zIR\*kgg˃_xzbo8Z!a5aL8زn:$=ێC9>Ng׷v٘n7Lhze;>qW3"us=tP ~Dj5f#kkk%FC(r"RdT0gzd{{НQlS&Lg>3v3; ggYx*]mdm^[X̣jAHs&*~,ź{WCJj6yt2~ܕi3qԍ>y*^j*Ꜯӳ:)Q藳r0/TBT4b6ָAɦM{E6$uTʺyv褿 #5tZ]n'Owr`?i.TI;nYNv:]({i[^5κK~{*'G/7@M'?ԯeWW K0Sg{쵷N˜gۻ7wַ+(QdQ>T:g-?yIc7kWue NjsBx? IfK(y;NpekRiIIR% 4h<Id0]W=p4s]9nij\;33w-f:7<ߑ$yM0tq‘#W/wDŽhŸYZ4|KD4j}[&)`Hkgo4s7]ו xΏ8Cvv|P2x҉Ip;:zѲ^YY wB찍̃(&F˥:YINHnG4<gt1Yh8~iStRQ$"jgd` b7PG:<tMM׎丷@KƗ<< %GG僳}O^`S_bX\}}&ӝV3ʳLAdb;;sasu{OsXԉ[nS~rŅ%o R֖ [ 2Jdk0NkDtW(j aLYw`t8%A<+7-L&%=~tƳZ[gfS=}n5'T?AQMGsғFhi )yvNx6B0|,*s\4KR:FBIǏ:agnk{z5ciIyf96?qavH6wt!n4/oo'pRX[ '_wMVJdzZ\>r4+U󯬯K٣l ıv$tf))lUm._7z1uZn ^Y/Glۙ$M=^7|Gc*FnhDhHp8=DI "df[E/MQ}dq-ou.Ǿt@2r*qhqhhz4 jeLq@"`aI =vs~^,Xg#P؊7ҝy@ ZcC$W%QJ!|>u^y{Got)X}t8 _"Q)fg煴l\B sݹcVg>sEr:iht:ݭ+~eT> A"hJ0J*j/ā2#V)VB4gNx4[Dݝ0YZ:WC=4LwqMP 6.23nuk{SΗ?tHx,Fcwj$3W&z2(؁AW]M;G˭Ӿi@胇"L݈gFOwN^"Ynvw'Aw#f`{|j?P? ڬǹ0F,'vE(1 &;lI8FG>OVОS0j9qUۉp*&WߗVSO?wι;'%!URD"%a$vf4s˨?+oם g_sZmį||ɻBu6ԱV '*ZH\M>o={l_e$]m4Y擫اGr=Wpmfwtd(Kf. ΗefTi]#F55ɾc|/#Jj_\ܞNE^-1t  ZdDFV7n9}m4&$. GmfNC]r#cwrTJ"j4X44/!ggYjC$ĖHH]XJ rl Ӎ Z8ҋfgW}5h6Vs8.vMGh'JF%dnZOǾ-wwF3{0:$ա'z؍:3.3sMO]}h#]_- gn>LsPܶb/~sQ?ꃿ ytf`0ȵõJ9FpϞ2J]qAh IR"hF:β괃ijniHW0MBñlJXn6)JlA4Sҁ.˪*RY+f!!fmbdll+/8Ia˩W9 }ŗ}:7,Hў m:Uo`G!w&WAQRE/Eǻj+i u&Yg@XؤD#c~9`.@uh|mtm?_ `1ηG76j߀.S A,8mkUUm]];}Z{ؓoymWvWG~Q~\65XvSsygӤ)}]t;nvEEcJ))$z:?[sUcR "! r<'8ieyҐlDmHcOA1]l,2r$UQM%KcTq]e) UU4a(Tv+$!-ֲe H!c,[$T !t Ji-RJ kȚ͠ҥ+Kp`!DEY/l}fԑ3/?Kulbw,|w^NVI eت̥ =p$EOb`Qۂ$Pa0wH4m% s]9:z߻yܻek|i\^ _~ߞw>+_GF  uʲRڪK)5eUHT1 1prt6 q+1xw7gc5c*-B}+"")HIHQS' P5HG8?:EMWEns.nkqEu* .(~щ#w:rjhK:}M$Yʖp(ꞤJ:'Bx6AnI4w涛`q36|ѧNMVgN hy)yځ#_<{al9v0$iҷ}_3?qy Pm_[ΪJ㚢 E=9Wwx뤔PsJ) !QJ9L22vo$ ڍ Ӡ>;';ЊVV<7O܍++O;h?gңōdhzCl}M!- 3NA֓מt0RWƲekJUe!ajL^, ek1GB "^  `c4@+>*L=1`3:zQka>4Z\!)%f2+%Hy;B/tgXV%UU9t]<דq4NS)qdz0R,9@e?uD\/RNd<]:ߗ-ےr}uJP"=-{5J~ AVdFTBHHRJʕJJ)\\GJ 34PeYy>ɲ,1"x^2)a ʚ,tY۟fA6}4:rM}{11K" KUf2ۖ,!õW(=+ԪX14:M7 FhG?;r1y7 ,<L{'#8hKq.>3gU\ 6pa;h Kg~n,'Ő=ְ b 6RӂZkcC/1~((G Y[ֲRI:r2@ 1Fkvl!2ΤBP: Z2(GГҕ#eJC/t](ʢ`Y4˔#<\-7?C~C1 =Q]쿍2zߖe/=l>l6Hü"cހđ'`z<F#TIc\\ _]V/+  K8ʬ {*=,r%dm0?+dXɢ vGD 0,I:ZDN4H.'dYwc}}ٳPu1|IvJJ!yªʔ$Nt?,a, dvm%((ˢRxK,j76 I*T*V.,Hxq:Ćp5cx#c䂅LXE/ۿ^?n5PaY=hd9*9RoQ:EAٞK} +&P'_լ> "&ȫ* PMaِmwdRo_AY\^ßpj8w /wcw^Jo8MmCk @'ࠐ0 %)2;M٧ps¯WC3Ɠ|xn#@e9?y/1 m& M 72^7l`MD‚5!hB5t(Klo󅈊:?gvF;?`c}COlm`=7GoWؒ`N| /m[-v/]wԅY[Whы?r_x|0I\J[)!Fl4H83p%E6>sB#]̩nKkeiev:;LƓ,[|er!M~vzsC2$bGJI Z%I"]UUYÕ$! %rv@b\j6$>\wM69`j:V4P +%ۏ7~'u/!}OMƿ %r {$` '/U ,˛ŷ\i~,3 ھe r.KE[_L;EPǗ?s7 J2p sòLH~ -2?Ϯ>'ΆBl4t|wqѫlv=nl_o<>,..ǟ0 _$(-<ϓRH)TBm`Jxww|z/̿箻y<N&ḷ(wj{]xԡ7^ɻuKb˾線 fmʢMh5|V洼raEG_׿% [yLpd7ouvQeQmM')p`iO...*3ktU-7PRiְ KB0d*Tbk}ǕBCփ[3YQLdP1r$*J' oKŻ_>;4)fE€,i*|DtCk)pD@AKE/D =c$ k-\apm؇ F ܾͯ-˓I mSʹU:eS\Vz}OT `f#IW6ͭxI wڭ/PVmQZ]nnO<̰-!"̆oy;mov F%뼔[9a9-Vܚ G y.d`2J@dTUM>N.ƆSAװ k{1??CXB w8j[ 3 ,'::?C1Q3_'?vE{nAwxe;o{CW=HqM1`PPQY/UۗϢU>MpTx|MXv}w!O-1H@dR$ &6^7l+reT;&fU۪RJ WI \RU Lɤ ,P rX3,H ;j=i?_/T2RfK&\)!F` `: X(vIM49g=E}t&Ib{wH _5L?w/w<=vEg^n-?X]̅~Aû{''͡3_9JF=:YcdOMwr5ţ3qeUwòT'4^s% h$ )Xk!IU\Zඏ?yǓln{AadACOJ8EU?7^&1b 4(4=4Zp^h3,XԿ3Rw&/~Mu;w?3,Ttgȗ:0%s~SSS5U8BTT'N,Fqh4!!,ZVb?˺ߌ"!X& A$>sI !l#n:ПJzH lno5\WC#+֞* [0 CoEUў>~ak2()`-Sp3)xj%)y\O~ݭMVW.I {ȐAl򷾒 nrCeAҍzw#A>KYۏ.,ߤb\Tf/ן]Y{|ru#Ч~COѷ{uoV^n_,@Ē`$9{4qrtH(!%.Q# 9纎[1XB֕ÖfsD:! ARښFP]pXƊcŅnNt:沆XJJ縎`JU0 t]cogTn?kf@$-DZ>)}ǶlR$u%;e }bdɲQA ,5[X Oh"=3?(2t _o9Vb&sy2oL嚃KcsSzQO_CDwS]"[O6nͬw^_g??٧ן\#o{Ó+cQ7?S~/4O/dPbb9祔pQTH@gձqN$5JuK 1aYC>`X W^ͧpf}c6F'&1J]A3h ˞+1R *W^krEoOW'O_hvhc V~ ˿'Ii/AY|xT$A(!W D,[mq/N_fl~Gll _ln\ۏXq ~0P[iw`kJ4VFdY^Ŵ|Ѩ,\Wiam吰C'Uw) so/|wm\pIYJ(3QI=XX*, l(brB6LYgjS(a>r|;|MkpnZ_rx&Ћ R>)}Ǐraw:[nDl- JRR+g{mo|um߳_̬}T6XT]q$9\Y|% kMmhBٲ,=uj) Al:OliNM1)IRXfD;? n7U>.8rJcQeݶ֎ʘ҅eT=8k\}*b˕?^֫?O]*гF[kmR*SugcVW+egSF3Y@~U_ #?۫ r\427^`n4_u{=Rlstah`- Y,3z֧Ͽҳ W9psm\7XHE4t /`c֦,YkFrQA#lI`c4qc \>~w邺o3pp~$<&l,,;B**i﷣(lAp->0_[!,HWLO콯7?=G$vSΰ˷̰̚ fa"l [ֹev~lψ+ba=,G06 ˃/&ffێU>|a{GYvT{WՉ7==ݓgFYH  B` sO0xpL8Q},AÐL` Xf#Cpm5Ag~6#^suR0Lds$Hbγ-uNA0I@,e}v6 ugn38\x%' f[Tu|,!~}C5j.\1o;;ZŽd>< ^C\!BV:3 |2DP֫T` !i#nCf;s%?:?4g7TOyv7C6/ϓᴜkB#/Zs7=׬ݽp}$ʺ@$U0%bwWD`7Y_F n#e9/T2a8=kcQ;$ṅb,W g~ޠG < $eqR TA;m)S--F$C3bӉZAz{bHHCr8Dfnw5aY H COrm/{eo|:4&W,vߵ!0X6™=?5]Ky%q@c`؁֌b|j}K_B(T;!(bď_7?+ MH)1  0服k=<ѱmLf./46014c[ ր)֋s͇sy%{1Y9π)n\,ٶOs`6: @-!QCf5gKP-g`Uݜϑ0,cO0mf%tToԶ:TYSr&l͈i\ ch@Q52FH ԛͥbǥ|<2ʤ GQ;4fb4=M̦7 7~E95OXT ]X]k=>@q a}ӟ ' 7=QZSq 7wBd%{:^&iJ'BDg^[TB c_ YS$R r'>Tvr}.Rmdc@qvH{R*Ns 7pΏe+@@Ce늗=^))Nc`^:0/]s/޳E׶4)[X`L-&hFF-M@AiV:a.jĹ]x~%ހuռ hcVg% I˥a#ljIKbGxe;Gzo?,~-ujTdsP%轢w~pGjvZJ L E xg ܤ^Q6tAШ5G'%Vgvjԋ{ݲ5ϕ(J|P(eke8HzD_jڿOM02 8$H%1Cu>=3ȲlJ^nj,^|ۿg=YW}kzFe2Xr}Ixhq)A/8#}Ij|qฆ%,' kСlif}'O1&pca\M%I)fL8oIS c-!'5hz9ظ7lw{;^R3!86ĮើVJvR0gvQn"RLW"L#̶m\%1Һ֧[?e)B`)Nwa ` #d 1WU]LiێG`#d+ww}+Sm.}__Ws=3bńČ!皾 ,%i#7SOp+UZhf*)av#KRƲgK J-9lpA $#fXRif,Kh2àZj@0b!BrO0b`aښgڵ 85;>66T-^E4"rRjMgN3/zṝ88%3(CaI$7qvlSBVB /V'Y% 1!\@H@D_r VB#8N~{͸ Zj /途]zu]O|/ntAqb({77Y3'珅{ﺱ;Jmv\X b #ҘpNMؖf4`W颃1n1B4N@a oR;>4 nd)(H'AXlڡB}X n9̦9лw-~5_RLs2 9C@Ƚ1ya\f+%PP-:bhicbam*nU5r,T/ƵdTAV8X7|M#$b`ئCp 52D2a(cge}@V^'0!L?ڼ{gLL7gVBuCCC'xb4Mos=od #sdaM/` 2>`0ɗ}R#I@ejĕF @鴓,IȢ b<3\>BǸę0aDXa%_tCLo>5 -FTTy϶Ncr_xn8N9-fPq40c-0Xֽhm!YMmI<1%Dnҿ6JBCg>WϷdtb$ 8C8rBH,R9KR״A`n.5KKE1u3 V8S e!> M%,KD}7r*CPĕ~m###O_V2IӴ\.` ~|+7ZVkiU28X?pdY<4yV=_|ᮇm !H@Z17sV 虶ߘi cbծWHE` dI6BÃ<1e],uC~#glsޞE_{4@$i@XÎl76{@0c6X\i2!Rtma3.2 (c$2)!w[N*"<ln, E2BᔪäB04VP3W)tR) >&e˵]kI ,U_W.",N&$Obkd6|__ߚ5km;ylÉOXw W/_}#YgO}_Ν;IhҮ@#kyy wOw Rn'^$Q_}xghY 7XVA߳4s6K6P#iBl0 @ls<J^Bs+ێªG}&Dqg! Zp2V Ruݏy˥/3䞇U98Ҍ3@  H1b9g3I HJJŨ-б5HBdsr k(/2m3Ь7;A-wh$a!<'h KeJj5y X#u哤MQk-x_|饗}k ض@\Ė'O_'~[n?O?Y+&U٣wo|gvF}{,G/u>g#vS煽6x?pCvS^{cK-h2J00tG'y;'%)4j O/,+ř_9O֟|y,#P"{J2|^z= S=Ԃ\G \=c;̲rdHke42,О Y9Ku8aQݎQ;2rA c0&1R:Z!"a s5w||3eLL1Lj5_WwV(F&֭wcǎa>@L!1MI$kJȭFʓG|ʕU{۝0\W,1I}}ΡɩϱqZ%wؚ~߽ѯkm^:3> y?~KO;3N"klӂ3a)1ZƋO;iv}7oo2wl'P&"@JsBfYX*OnɛR`ÙN&68pZny[RP` A"8")Έô5Zf1KeJ̵& DJKIP"g`)T$0 !$H?mg|怋e x@Xg>W\JdlM>CJV ~:#ku<<H+* m^g`DTr.Nu-,6#SsNNǣ8:_Wh(k@I$%,{=۵swyˉ |7Es\0n @ eJf,R)pDƹ(LJr8g4Fdi Cr/zJŚjtpdC8q-Tn"Y8 A@Y MN?w~귿ufSr2K^K?e>׿9GNy' _ {#Jr5H)/FXgd5_T-MkF^08}.+8atn[\\at_ 6Wx4SShSK5=m 8RC{&}=Ul+:RBk/Z -J$S5Q %Jɶ&88-1B8ml9u߽Na5M׶-636rne9֗(Mi-Yȅ\hR,&Ub2d2RN; ; Q#- Ri޶\Fhʳvfh;q AH`舒{;;ԗuo:c2R'@,R$qjw5_owZQDqEHa|*Z$ |5 [k8[ ߱ms-ϵm37t]we[, fqlb($j$:eZps$Ch9Ӕ[1hTgaZ(z2 o JѳS[0AWm2&: -&0P:3 1DFq$DRaTU_QEǙ@Dp`-s0LGQMPr׎"s|yQԨ!4$J˘@ qQ'I%JDZM$ ĩR2PD PL*Nf1J?裗o}[AMfg4/Da)> fmm?2 Wc߼o}p]weq@",oV}oV]ۆSIJOV{h䄵ed{:7L)tҢssw>2>Ng@ ==NuюgPT` empMNbxµ[t:0M"+_7{(e h0Z+$CS"Rע#I5B=$!rf!\dfj\ㄲ-MJ)AF}iz|pJ!ѩLH1*S(#XԤRiRkc(Ld'N:IH LIBq֚s~}7z_c8ܬqzx;pn-dF uח>7 lX-)boDc}[nڟ6=4XX,~6t3o@yNT]D6_)cOKA2(Uuyv /f[`@F`. wvply|齾S{ 1,D.PO4wZ`zmau&Ri2' cc;Jʱ84vG [SƲCSw{ڜ37=ԉrv7S\sˉ[,/@cQJTnY^._J"PHC2ZX0qEA&h"#@I"֚1+ꪫ:g?Y 믿_K)WB)cnb9KP~{˻ h8S31Ƽ=Ї>tW|}^|44{nn9[W.: m\+fkkLaW |:I|dni)]M%} 0q0NMhx~ї+o/ e*!Hxu ҄kJc?Ogz" LJИ%0TTz+ ss9X=<4l{1?9#palTX}e<~(qc^:i=%"$u4Ji*~+,NL*TZ2Z%RITqڡiG1i B&:Э0Fsίw]gW59"v:??җt晏c)GƘ] E;M8c/SK/ /OUmo>ꫯ~ߧ? ).uҹ]_go:xӝӻ)Rm{gGO(IH3=/Ƅ[ZX{k'_zQ]љ9v yK%7 TZcWYh&^apAs@r F ʈ@;戌!c11$Ƙ00<2Kbsc{v9ahRB-z[lv^e36V\mOOOMR7M[L:2MTIJ*"$r|cC-=X*4[Ai+Q ;*H8W7Zd.QJoJO~[ڹs^}׻.y%|*is߮_#~Ó99":[6vA9yat{k_//OiJ|_d??z}E*OVve٧nrbht. l*}~(x-f ynNQwе;y76}/=[,4NZLL=uYޘf{aӚ1.w#)T uXiʒ/Fp]XKȅ`!#9b!_X?:lG6DATFIUYҁf_>Z3/,iK[Y,) VTk>8ط03}!J2:J"JbhH* T*q=?ynFB3mA-@g?ked B.7?9NNN>я~dtl+_7s*O"/yK/|G?~%^S?k^\g~bۿOm]cng:_hpZ(}}gAYm n.&wOhұ-}Osv'ԎTFqхg^}1Nd*[rFW =SsGZ:2Ɖ1` 􈡎ndQPDƁF,9G8k "G?3@ortj^ڶuS%Q[61l9Z4L8Ӯob0P\$6/q\ܿ~}?hmsFT;a*ĩRFqqϷ` ] Ch,D4Bw#Ís@HY_?r/3"j64{Hɴ x초UPιWrW~Cʤ <%ӽƯ׼i}yOX3AbZ`єJy Tl ]ΫOXsA 33*B&D-N}_`ICdBRi\}[|hߞNx.w=׎25vɳA}Y`b)D)"# sۿu bO3H ,EEuh̶m[^t 7|&Q3ma '=qK5[akWsP(.#g$ϣ^XhJ\ΥR@m^(é e>VDB0-1E^7A4XTYkُȧd(1 ۿW_}_;wf{#U |F[@H 86hRO?_u]''BS?k^;ύy빮& D&kڋrXvAى\g~NX# NF˹Rj۶m^{[<}zj_;4tN~ -W(mJ cb MOf姜~)]o|>r!#, R(jud9lvqb  Čh@f$& )&@@CFD`aCP9Gq|VC>{1C1)5hk9\1JiP%'m|xr"I`ډiYo].s8MA#G;X\ NsnbffaGw_7׾vnn2!$D@FH"@ȹzxx[ ү"9 3Wg!Ԥg Ƹ(fo'dh M-It=,Z웏kNyY4~eZ.sTbq("Lg\W@EW\qŷu{]lJc @,$ +y@B @ i]T/Yi寞zPW:aX,T7Cϻvѐ1s*%X(UQEar}&r=\ƧӶxbv5ٹpxdBU1\NwfY[n3sځ5HtѮN8-$$ q̃[4ΓhS_;&v3do

2SWN8bOϏoBL;6S*=4]G J,mF{3Nr%E1%|耮 9 9}`YƀL~FFRn/{ӛ~}^e0p^3Am0p)IPk{{_rKfg-Υ+[Kg(xffp\&\ NwDVd ;a[0t*,C!pc-m=邍k5&ܱ0Q?s07j]vAӀUTT"hm7? o0T2$EfW~'_2qtYt2;3zV7 }{R=+>sSqRsD̋,OxA2l]/V,}Tzg{zމVYtnݷS3pN,kaI@V.8i'q^f57z?ߊ!Oi[W~6kf[NT};B*弜e .[Z2Ql>Xdrfbid Zu#C#kGau$CMD 8sz6G>+jN:H#OӭP9> E.槦^\>/;ecMCfc|^KS,1-&jrMF=ö =?{=;a瞼Ymv'3Hp}]>K8^΄UT;Cby1-.McFmPGڨL4iq/c̀PJYթwROIXͤz8+O ~袋1g-&@щ-ZcBz g{[{ߟe˖v ( Ty%-3JZ@ dgxXj7/Yy"+Iv`ZW8t^}73h,@Ц`pC\ ^TL VcI־U^2͎ӗ=e[ŶA Ձj"iJÙs ވO/2Gu\ LH"jd㲞i L)"MSq:щB*6Իil58ZJ%K`WOt<.,q,.ٞ Y?9龛)c0"Dכ<)IFڐs5x]G}ګa Bul@R# ȣ ߽VAq'_;{=60C`$WG|nԢ۫PS˹9N%)-2 >!Z R8c)knh2R1R,H0Aij .#ȰK *Ca|N H:RJoMK-q WIVȲ.& M@ SN9etpV+C䨉֌TzB`~/t[۵V\hR@<0*DFALcyKֿ|3ܭ[OyI@H h >y=1"W I+BsW[ꫳ?|{Β`퟾?(觽h-82[ q8xK'ݙE_ySlfz"*I7{'o{3OtHј8i$*TFIx z6Pc@4Y pTbXˀ",$UIRJ\nqL%qe2[I8yR1̐ɚ"DC&S. |`پ!2 (,OSjPĠ_HC|BJ9i-UmOOͿO7oi&MBFpߛXVZql\H? # $!f/>؋ܟC\4 -2~ƘVm mwD2]XZl /xme{ypn7^~~J1D 2 ڌ1fhCiji2YwnhKQX)WL+} w iV*JpuW\8 4XA$qΖ c& xAF9_s/zmJ;GeZ6hlΨ S,3t;m1d+B}Ltm(Ӹ$sWpƸ-`\: V"b,gAy^$[ϊiq;c#N3V)KX>N|L  %cLJe2բ=yY gll}a.,,LLL%IbYew>dO0da&MJ+!>{#w#*UmqlbLCc%n?B9cei,3p0@Ǟ&b ",82H hmtV dRJD@&pϐA CΖeaYc,qxȹd(SCK Gif+^Fg !"l%&"2!8c\pDh25nL|vcLOaBj5NA{ )\\.;ơCdYՋ:|<>Z2D@CFdykMo3O{K3 9_0BC 1IƸB?<78#tծcK{x1` BR N⌑ i$} е~_mX(j32*+Cv+猡H6fC(EDJp\Hg,?&"#2hц1nY4O)t']K+t L(/UJ߿+ybѲ(4:餓naqqql^ñ:<]0` 2J|EY>[w<b))%}nj<,sA 2 P7+;*Z`Fdf,"cXF1*Sdi;}f1ד?POk(J5cl6D!3 8$Ҷe'ӥuNKD)-nYVE/hH˲6n2=u4 ;[͚! _;ORi i9e)Jw llPt c&JE@VW$K:V (˕JB9}jeyK^2::}mYm ZVl*9xfbs\αфi"typK-ƬC)>clt [2o;&``Z;HI9$2H4P23bSk|611廓}[ .C7sGBtK @2G0c#ZkZTJe-d*%P޼M*-8Z (a BԖa*׮['jq-RZ -fpř[YWM9B˲2٢ͼkuu[aÆf/Ȗ2i'_WzoUKW[hfa!cwX::{kzh"d>2q:8!Em3#c3f θf92]`X./D@Z adbmƀ-@|Gp!d$RZ (jABWxY?fbgkVfdc̶m)j2`vݕL)d1.RyPZ&܍[7GQXi [TNtaZsᛳbm:f9CFiɩ344-;壈]<ۚ*KꯙH)7]ѣ\u]ι뺶mw `ejRJ -oae:)gwQ6[ql.+2Q5dp*%DADs۵r9L=0Bf[,h9yp9?GQ !HF0̐"B~٬eZDJk4 (;U}<`"yE2 ))eŒ'B` [Pm*Qe)%QYt\GsxǾpG ȼi6fe$0;_) Fi\ڱc/(TȐ4eV_*ݰO$vڳV痍r!2-(5{X1`֕J墋.jE~UZB6&CFm9U0lF*R,>&Cr]헐[3Zq㚏u+1B˸&M8)(@"cZ 1&g.΀1`EW37RkIRʐA8Loٴ夨bvcnh\( .JY1^U+Ckv$X8Nƭv獝{jubS#kFix~,Ny JrV; ̀e;'Y>q_|řdlvw-_qʗ.k!Yf;oqq1 C!D7`U mjed@cNovηM1\v=[N1mSkAW]+fB&1I~ׯ(;Y]5Ȯ Šˑ}n۶8JeӦM[lLc uJ)4UJ `#,۶(-^\qZj gFMNA)yh\~he]R)\qU "9+UGu D$M(" 7@ 9{px !,ʂ*ȴXєqxpCLrri#4dHU%ZsΩ}_FG>{YKU kMᝋTBkr\h3ޜJHG vϷZ8 rg꺛]Jfg Y8~Q)2n+͙A:Ĕ:i7_~ΝRccOpEfqifqmxFק,9 (O:|=GJjϴg'gٗ=,K@(ȅ\4R@Vd{l.W{n8r je@Phq,0 i #`z1Sr%_+-fq\q(-qZ- ̩0+%ĀAIX%32cGZl<:kpSi =T-_L㋟= V+&fi/,ՑF']-;~L;T/W}GD@ۮ2̮ v, *Jbed./"v3eJewɜ|>y^*YeQk5?5jMGsΩ/a%$܂H's4j{Q(}CeM{ =@( +4vs~ 0(/>?eӞ-O#Tv ^:61imd![&jz ^rm1]+umnBT)K!I>r⿢dk%)rVc:ɖ&IR(TusfN|nL/My1c%l ju! l[_2ԓvm7GW\v.>ѯf&w!AW&ҶLsnv*G>rc4ḣMΘ`(V?=<S6aY\.`}ec͛Ma.yպKjU6[N\~{s~r*hdHtJI5{¶~-|[w#GЩֆ/,--=)؎"!3f])2DRX6*c%qPs.Y$NL7;Q J-۶=TKyh }CCH;N7L pXQ,=0Γ w` 8W{9a,އZ|.^lG LmJmiZq"Q/uԟbK3X\q~^}ߟp߃\3.\5ZajB\`cX,]}a^hOW=:вLL3gԶ,o۶eYY0'p%}8N/ޔV塻^gzKu5?كM5ytz3*%"a[ fѨ5ОݗwB&S.hly>X+&bY92@”d͚A[$ZҜ L)hqt6 eH^SCt:bM S<9pIIW O' SvJ CnY18_BD VzysrVa JJSƈ1nu:q*)$+|/_GKQ̡Zb)I~$29JۑB6sڻ~s;2M;Q|hbFj&r95m)|L7]N՚3c&K)=-e EWY]D*%|h+X?Hx箝z֬ZfrDQ\ܰoh1;VS,|}Å';[vJVvt؆2<4v-."!, +3 @* FoZ d P\a*M<ui8֫@6?{_xrO2|Uw1EOdH&0.;~qY`_+Bj Xl¯1S 1{o~q% ΄6  s]5G 1ZeuӒQL[ 37 8;8Y_vM%0hS*.4.54o=կ|ݳT:DƉL#'iTkHw*@WV_Wo  +8aAY)\R&+KQJ%Iž+IcgU aiTt,0=;0X~|;v@k~U? 4P98kR]1ݽYe'{kGz} Zʩb|[xW,P*D{HuCуFohxi"vl`cs.[g}[X)šikirV ZcǮr3jw4ʢgc:O M[R|\K))z⬌A`rhe0[[$&v:mQlVG:7;LR<ߢU u̶4j+-ǯq]/옍1 $=Hm[VJKDa<ؓWRIƝ0:! g_3=<[Ԩ웩U:Rzڗ<ڛm/3x6-"H|/Zظ ڕ'#WRNZT}JRٜ~+^ Ţ1f1|߿馛6lذq[]61fpppttT)ۤӜ$I7!zέV%+UKqȭ 4gz4beRF]ibz7 :T(7`Y3Pmi1r~G3I [6ܷg\}};lǝfOټm|rRLĩ줔1jO+3_h |٢Űi¹:mQO⒃k[.Ea,,EVs3>)P*NFb:>l`6gYOnͯ꺟uh c ^%/ RL(|B0~M0좮mfmYw۶m=zP(dVoܸ1 SN9}/j11P(j5˲6o:MӬD8t:R'((I87 # Dj&=Ѱ|i$_-,68%`\ l>U 9[u'BN8[Y϶v6{ZK9>{# Gv/ .`udv %R\>gߢ R#a]E҆qƖH E:M9g,UbbC.:kf/ . Moݨ5#z5.|=nX4.Ĉ K(و 1Fجv@$Mh&:( 9-su9<~jOO뺕JZFQT,|>P(tSBBW\V =ˌ:4ZחWY,(m;$IO>HXM֜|R;m!cDps9l aqd;%(^s""- LQ$=JdN,-1Zz;huZ;U`eDkO..:iOId{fx~gϱs]['iҨ՚B]>|M0;jͥi+[C8ћ֭g\y5'ӊzܽ!C'F _JI@9'A|3l68& t|'[⨍wA_,指Z9_lo-n.LѣVv uO`TOZȑ`!.¤ĵJ=9ii{fƆ 9{{ >2?c|Qq!- (eCq5?5;dA d$²]u=8F(,Dz%!|:`-.L6/ )/ az^:[~vm;g~vAL:apΚ}öяkJ@}֚MvyI{f ǐ|9Lv/OQxL&x~e*JO. "ಅhc8`e ,5W{o zgzxYC `d': HҹH4^䋼zMk_o (ٶ3F Fq ύ #kxL~pw͖L4ZvKRMOJ911k׮ZСCccc===Y$')c$I$ vڕeՄpJYM^q 8FM/u#J(kWdJ"DKo7szт#"sSeZdb0{PO[Y̥V7gDi'W9w'؎{gq;gteb9nJ=uB0@(}Q/*ejnw:u yq/&2?an@ ØL m # rcLHUVq"S'VƟxX+흉 &{ ?)k i4PڶDu 5hOw[ʿxSۇ;N7\ M @+-OUujێ b.v7Rt:lh4SSSNgݺuisʾvܹyJTZ8Xg^?Sr\VEI8Efx(P80f6'qaw*RJ󶔒Sʗ?uS"udW=똨7w?x }'.y_sx/{]37_SEƶ)(s8TDB|+U,p]gmY\\\ӱm{޽;;77l6788qF޽{3PeMOOGQwRfqn*8maq" 9}-6ƀP`i]cEKӳ,Hn4i*}z=RWFo8T{>IoS0y(b<a`I>z4J{v:z{og5LTN+ޞ=9_C Ƙ812hm),AD||N4IОيKQpwB0ۍ陾]/iםoDQk?p? Wxs/GWזZdtƻ[ #ɰfg[Yܥfh~~~ttq={LLLdPR̴,3;;2DFHJDz* YlZ+UaAV!4p0` XĜgc3bv==fLNJԂH#j~ގ&#l۵ÍJhM:6vMGO~ҡs[5`j t|fj   U<P!_:ܞ݃c u}|ZX7 dWxR 1 C?!wה\25ۡD9%63 }58 KZeX-,>oHDT#yɟ/,9WN{_|w|[5_~;?]oz?kD!&Bj0bYl[}Rn"2#KfNBgeafbZ*+!|T̬o۵Z-JZ\\lz]J8NEa&It0׏goZDҙHܬ{CCiTAt:.]jZZR߿m]CZ ccL߿뮻p1Ν[\\tnp޽x<=ڌgP 02rIXY vcb- ޱo{dRWM( kJFFؘ5άf"'fdCU#T(a UrkkGfcnH'|I&՚ۊ5{tC^^ ~MIi8]#,R./njT&z lv Y(YD5Ƨ.$'_g5ܵe L;&58w7v?uTFAKrb*v??~;Hv kJ(K ԭEDMvow]kj.p.jܝNgvvv0TVA)r,VWW`4 JsYk`$ 8,P}*zN8űfDUkHU91m6/?8yqm}}ω %xIZ2FRh[Rx55% ÂZT*)#$B"<ע&`p27Yy'KP_˂lrGDX 0pyUMgD d\}ZGܱr}YOlc{Ԩ4Ҽ8#09 :~=߸u8۳A}avU]Me#:7qωShv6*"TbD(~ ?ӥzEa(HLLTO)%O\u %귁z>F$AtgyFÇP+W\|Rt:":wx<~{{?S{ QTQ놺ReXT4kA ՎݱO2L #mUQ6 {i^|[CwD%(`3QmNaͪifX|iDTJh+!BYMB[,CiSiB2XaOڝt[%а[Z6+NfOnß~*tsCӖg6"sg_>_r֐zv(b( +4KQF(8?) >ѿԎ̈́+Yhg6?}ߛ?N,}1`&iѶL!/>/66Qa4;SLD "袟{yp1w=~ߩFR*IW.//w]!Dð^;u4͍ .t݅ x<~|7ryb'3~wǨ00 lg;73SIҔ&%lfF PsZ1ia<eff':v3;-{iѨ0!"*`% bSVV$e CYZdyGn:r^yx;ǫqs1#89 i˹G[t'2pr\TJ6=T][5(9= ,[vDՑTX;NI1Y*+ cK(t `k" #f+Ϟ~Or;Ht#\߹sů~ jJ(I[V(9ԅ闁,m^2d""W@@&k-xF7VЧ齼gcrc88;;;777777˲j,<֣>m<+gW'&۴pZ Wؔ0);CCN|qn1ߩ̑zErmYA A!,$A5Q,,@pdiW._̔YV' RPU- )@&F4\a13X !VQZsd8XMVo 2/k=0EzȱNXeYBB $B2(*ۈdX_x;g?}%@쟭DyQ??}ډFug} سG.VeFchyOYQ^ϴ^%tBE"LAHAI A]/8HA7No&FB,?oiq,:5SS0heB @R 2 "MF ,dm9 9`d׿ .w'奸0,& bRf Tȇ[3dBxik˝/cƾrǽ^XYG~Qs1}wxܺ`h> @aAџvN׀LpeBNbDC]#<ӽ^occemj7M=о}[EAe/ʕ+'N?}'xfnΤR*+"R%VXX.$;Vnlʼml(c&RY( tYr)˝7q}y_R{m5i&i6?G̀F eVDd& zAHDlPJ&yQ2FU1(TnF?1kK0WZ 7{%Mv JM$H F1soz:7œ̋h@ef"@5Nu\^Vז?xD:19'џ;ubeEDa 82w⫧Gž:7&cfvw}>eqcƘZ-i1L]lAR:F;ZӽϜ[Ť/u 2D6BC`d B DPALiEYd$J L"Ob0L5ۈzad ]RVFKl7j5Fd0e:!kc9ȋQ/Vvk }%YۤR]SI#eLR",J*fK iua3Kc+,(()Y .3tmnu3Щ^/wr562z%ZN\~%X+ഩ(ijPѩADHl"ޔ7N0=wKU>Ot:vZ:ȕHj5 C8}?^777(Pbgg?ó?|srnami>~UW@˫[^ (AջZl%m%T)蜘`h3dγ(j1/bۍըUuj׶ (-SA93;zu視%ؖ|y;S+WPT駟~]9QN%IB$JvzʆaZ}gΜveY* S Kvj'jbldBèU[AoWMFX |I+k, 4)0= O}ogc}=~Qv4_98*lmh!^rMA\p_/Bzzǎs10\Mn;]}{q5+V+a߽ 6y4WV 1BC\ؾ7$Ai +[q/t#aq'ʲ z}|^T׶`m B@@fd A^?w)=pZU!^o>?LSW`fVRZh]+d߱vJX%&fo7~qicjf_v zKSx0@F8\ɎXu_>W2BcJ| ssLKk2WiMSӇ=b2戙>|8hܙZ&I2ggg$ʕ+O?ɓ'1N'!˗`ii v'pzi}0 ^/I[֊!P)Z- 2Qв0q!``Ta pq%,2@°(+ퟍ+e^boǫ7- ^xUTj3<z}ZLT>"B ݁T\;{/3baٚѹbp[\UBŤ +$Iy`6`mCwgfonN/J,ԂFj+sQd#?GEP3T l7kx8.pek*sPj[*F+YHU6n7AH1u#?F>n677#:p8\[[;qXz^zԩSϟwVgZeY̌ ollH)Hp8IײKSLi#BU -\U0֍@8FX"ؔ\h+%J fX!jT*.[}َҶ\[, Z`- ,6Zz{ό۳̙@()$@!P 2s jdЬU]F5R3pG.5ɉR/$t&TS{S ML$EDA5Y>JDHA@ ZHq\GG{ՌӸ0[s{[6f4h8t(Bkɪ hT,l=8A3gGIi֚loɸ՘_xr\qŸ: H-h$Qب*K nH ]g1+E\QH 3nw@Ri AN^)M]pDdf+PZDҒ5$ 1hosiѣG4Mi9*gzpN|. +7e̮z"F"r8t\1n BrUfVҌZC@Lh4M2$0FZ flCnLYZqhka(j1Xk ХFaT-K]T͘FsX3غZ8T=lٙNW#*ւz=DN?MКkf z^7jtkuk|^ᵞh_Uy D7O YSN9oxɩ8 è !-8K=G[@': +M]r0&V. c7DcH51J=*nt_nӛZ2DqZv0SX?Ę] &wI֎Fho>7 }UTb8w ]Ty0Z-7[dZaAr;{RH)*Km Sj*,1EfbVgBDVZ-ø8B4|Wu(,!3~nDL,"b]d]m(՚, ):*Qme(V*2?/î#䊂ܕ\Tbw>w0N`bv]og 0Lr"^?ӝMnuK3֩ƷADۿZZKx9g/Ozefɓ/z=kNoۑZ"I=@L(1 Uc"%e֭ ɐliU"1FǕ1} B !6&IJdlZdùάe %E 6.j% 6^#Oo|㖏=a7׼ܙ$- .?mUqwww~t/|7LİgVs;MT|Nfk3t,+I|ɝox<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<x<'A=IENDB`json-3.11.3/docs/docset/000077500000000000000000000000001453145653700147765ustar00rootroot00000000000000json-3.11.3/docs/docset/Info.plist000066400000000000000000000011371453145653700167500ustar00rootroot00000000000000 CFBundleIdentifier nlohmann_json CFBundleName JSON for Modern C++ DocSetPlatformFamily json isDashDocset dashIndexFilePath index.html DashDocSetFallbackURL https://nlohmann.github.io/json/ isJavaScriptEnabled json-3.11.3/docs/docset/Makefile000066400000000000000000000070601453145653700164410ustar00rootroot00000000000000SHELL=/usr/bin/env bash SED ?= $(shell which gsed 2>/dev/null || which sed) MKDOCS_PAGES=$(shell cd ../mkdocs/docs/ && find * -type f -name '*.md' | sort) .PHONY: all all: JSON_for_Modern_C++.tgz docSet.dsidx: docSet.sql # generate index sqlite3 docSet.dsidx > "$$(ls JSON_for_Modern_C++.docset/Contents/Resources/Documents/assets/stylesheets/main.*.min.css)" # fix spacing echo -e "\n\ndiv.md-sidebar div.md-sidebar--secondary, div.md-main__inner { top: 0; margin-top: 0 }" >> "$$(ls JSON_for_Modern_C++.docset/Contents/Resources/Documents/assets/stylesheets/main.*.min.css)" # remove "JSON for Modern C++" from page titles (fallback) find JSON_for_Modern_C++.docset/Contents/Resources/Documents -type f -exec $(SED) -i 's| - JSON for Modern C++||' {} + # replace page titles with name from index, if available for page in $(MKDOCS_PAGES); do \ case "$$page" in \ */index.md) path=$${page/\/index.md/} ;; \ *) path=$${page/.md/} ;; \ esac; \ title=$$(sqlite3 docSet.dsidx "SELECT name FROM searchIndex WHERE path='$$path/index.html'" | tr '\n' ',' | $(SED) -e 's/,/, /g' -e 's/, $$/\n/'); \ if [ "x$$title" != "x" ]; then \ $(SED) -i "s%.*%$$title%" "JSON_for_Modern_C++.docset/Contents/Resources/Documents/$$path/index.html"; \ fi \ done # clean up rm JSON_for_Modern_C++.docset/Contents/Resources/Documents/sitemap.* # copy index cp docSet.dsidx JSON_for_Modern_C++.docset/Contents/Resources/ JSON_for_Modern_C++.tgz: JSON_for_Modern_C++.docset tar --exclude='.DS_Store' -cvzf JSON_for_Modern_C++.tgz JSON_for_Modern_C++.docset # install docset for Zeal documentation browser (https://zealdocs.org/) .PHONY: install_docset_zeal install_docset_zeal: JSON_for_Modern_C++.docset docset_root=$${XDG_DATA_HOME:-$$HOME/.local/share}/Zeal/Zeal/docsets; \ rm -rf $$docset_root/JSON_for_Modern_C++.docset; \ mkdir -p $$docset_root; \ cp -r JSON_for_Modern_C++.docset $$docset_root/ # list mkdocs pages missing from the docset index .PHONY: list_missing_pages list_missing_pages: docSet.dsidx @for page in $(MKDOCS_PAGES); do \ case "$$page" in \ */index.md) path=$${page/\/index.md/} ;; \ *) path=$${page/.md/} ;; \ esac; \ if [ "x$$page" != "xindex.md" -a "x$$(sqlite3 docSet.dsidx "SELECT COUNT(*) FROM searchIndex WHERE path='$$path/index.html'")" = "x0" ]; then \ echo $$page; \ fi \ done # list paths in the docset index without a corresponding mkdocs page .PHONY: list_removed_paths list_removed_paths: docSet.dsidx @for path in $$(sqlite3 docSet.dsidx "SELECT path FROM searchIndex"); do \ page=$${path/\/index.html/.md}; \ page_index=$${path/index.html/index.md}; \ page_found=0; \ for p in $(MKDOCS_PAGES); do \ if [ "x$$p" = "x$$page" -o "x$$p" = "x$$page_index" ]; then \ page_found=1; \ fi \ done; \ if [ "x$$page_found" = "x0" ]; then \ echo $$path; \ fi \ done .PHONY: clean clean: rm -f docSet.dsidx rm -fr JSON_for_Modern_C++.docset JSON_for_Modern_C++.tgz json-3.11.3/docs/docset/README.md000066400000000000000000000012731453145653700162600ustar00rootroot00000000000000# docset The folder contains the required files to create a [docset](https://kapeli.com/docsets) which can be used in documentation browsers like [Dash](https://kapeli.com/dash), [Velocity](https://velocity.silverlakesoftware.com), or [Zeal](https://zealdocs.org). The docset can be created with ```sh make nlohmann_json.docset ``` The generated folder `nlohmann_json.docset` can then be opened in the documentation browser. A recent version is also part of the [Dash user contributions](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B). ## Licenses The [JSON logo](https://commons.wikimedia.org/wiki/File:JSON_vector_logo.svg) is public domain. json-3.11.3/docs/docset/docSet.sql000066400000000000000000000704061453145653700167470ustar00rootroot00000000000000DROP TABLE IF EXISTS searchIndex; CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT); CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path); -- API INSERT INTO searchIndex(name, type, path) VALUES ('adl_serializer', 'Class', 'api/adl_serializer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('adl_serializer::from_json', 'Function', 'api/adl_serializer/from_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('adl_serializer::to_json', 'Function', 'api/adl_serializer/to_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('byte_container_with_subtype', 'Class', 'api/byte_container_with_subtype/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('byte_container_with_subtype::byte_container_with_subtype', 'Constructor', 'api/byte_container_with_subtype/byte_container_with_subtype/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('byte_container_with_subtype::clear_subtype', 'Method', 'api/byte_container_with_subtype/clear_subtype/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('byte_container_with_subtype::has_subtype', 'Method', 'api/byte_container_with_subtype/has_subtype/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('byte_container_with_subtype::set_subtype', 'Method', 'api/byte_container_with_subtype/set_subtype/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('byte_container_with_subtype::subtype', 'Method', 'api/byte_container_with_subtype/subtype/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json', 'Class', 'api/basic_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::accept', 'Function', 'api/basic_json/accept/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::array', 'Function', 'api/basic_json/array/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::array_t', 'Type', 'api/basic_json/array_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::at', 'Method', 'api/basic_json/at/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::back', 'Method', 'api/basic_json/back/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::basic_json', 'Constructor', 'api/basic_json/basic_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::begin', 'Method', 'api/basic_json/begin/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::binary', 'Function', 'api/basic_json/binary/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::binary_t', 'Type', 'api/basic_json/binary_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::boolean_t', 'Type', 'api/basic_json/boolean_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::cbegin', 'Method', 'api/basic_json/cbegin/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::cbor_tag_handler_t', 'Enum', 'api/basic_json/cbor_tag_handler_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::cend', 'Method', 'api/basic_json/cend/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::clear', 'Method', 'api/basic_json/clear/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::contains', 'Method', 'api/basic_json/contains/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::count', 'Method', 'api/basic_json/count/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::crbegin', 'Method', 'api/basic_json/crbegin/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::crend', 'Method', 'api/basic_json/crend/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::default_object_comparator_t', 'Type', 'api/basic_json/default_object_comparator_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::diff', 'Function', 'api/basic_json/diff/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::dump', 'Method', 'api/basic_json/dump/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::emplace', 'Method', 'api/basic_json/emplace/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::emplace_back', 'Method', 'api/basic_json/emplace_back/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::empty', 'Method', 'api/basic_json/empty/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::end', 'Method', 'api/basic_json/end/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::erase', 'Method', 'api/basic_json/erase/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::error_handler_t', 'Enum', 'api/basic_json/error_handler_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::exception', 'Class', 'api/basic_json/exception/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::find', 'Method', 'api/basic_json/find/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::flatten', 'Method', 'api/basic_json/flatten/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::from_bjdata', 'Function', 'api/basic_json/from_bjdata/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::from_bson', 'Function', 'api/basic_json/from_bson/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::from_cbor', 'Function', 'api/basic_json/from_cbor/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::from_msgpack', 'Function', 'api/basic_json/from_msgpack/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::from_ubjson', 'Function', 'api/basic_json/from_ubjson/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::front', 'Method', 'api/basic_json/front/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::get', 'Method', 'api/basic_json/get/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::get_allocator', 'Function', 'api/basic_json/get_allocator/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::get_binary', 'Method', 'api/basic_json/get_binary/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::get_ptr', 'Method', 'api/basic_json/get_ptr/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::get_ref', 'Method', 'api/basic_json/get_ref/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::get_to', 'Method', 'api/basic_json/get_to/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::input_format_t', 'Enum', 'api/basic_json/input_format_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::insert', 'Method', 'api/basic_json/insert/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::invalid_iterator', 'Class', 'api/basic_json/invalid_iterator/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_array', 'Method', 'api/basic_json/is_array/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_binary', 'Method', 'api/basic_json/is_binary/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_boolean', 'Method', 'api/basic_json/is_boolean/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_discarded', 'Method', 'api/basic_json/is_discarded/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_null', 'Method', 'api/basic_json/is_null/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_number', 'Method', 'api/basic_json/is_number/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_number_float', 'Method', 'api/basic_json/is_number_float/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_number_integer', 'Method', 'api/basic_json/is_number_integer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_number_unsigned', 'Method', 'api/basic_json/is_number_unsigned/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_object', 'Method', 'api/basic_json/is_object/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_primitive', 'Method', 'api/basic_json/is_primitive/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_string', 'Method', 'api/basic_json/is_string/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::is_structured', 'Method', 'api/basic_json/is_structured/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::items', 'Method', 'api/basic_json/items/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::json_serializer', 'Class', 'api/basic_json/json_serializer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::max_size', 'Method', 'api/basic_json/max_size/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::merge_patch', 'Method', 'api/basic_json/merge_patch/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::meta', 'Function', 'api/basic_json/meta/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::number_float_t', 'Type', 'api/basic_json/number_float_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::number_integer_t', 'Type', 'api/basic_json/number_integer_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::number_unsigned_t', 'Type', 'api/basic_json/number_unsigned_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::object', 'Function', 'api/basic_json/object/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::object_comparator_t', 'Type', 'api/basic_json/object_comparator_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::object_t', 'Type', 'api/basic_json/object_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator ValueType', 'Operator', 'api/basic_json/operator_ValueType/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator value_t', 'Operator', 'api/basic_json/operator_value_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator[]', 'Operator', 'api/basic_json/operator[]/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator=', 'Operator', 'api/basic_json/operator=/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator+=', 'Operator', 'api/basic_json/operator+=/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator==', 'Operator', 'api/basic_json/operator_eq/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator!=', 'Operator', 'api/basic_json/operator_ne/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator<', 'Operator', 'api/basic_json/operator_lt/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator<=', 'Operator', 'api/basic_json/operator_le/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator>', 'Operator', 'api/basic_json/operator_gt/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator>=', 'Operator', 'api/basic_json/operator_ge/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::operator<=>', 'Operator', 'api/basic_json/operator_spaceship/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::out_of_range', 'Class', 'api/basic_json/out_of_range/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::other_error', 'Class', 'api/basic_json/other_error/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::parse', 'Function', 'api/basic_json/parse/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::parse_error', 'Class', 'api/basic_json/parse_error/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::parse_event_t', 'Enum', 'api/basic_json/parse_event_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::parser_callback_t', 'Type', 'api/basic_json/parser_callback_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::patch', 'Method', 'api/basic_json/patch/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::patch_inplace', 'Method', 'api/basic_json/patch_inplace/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::push_back', 'Method', 'api/basic_json/push_back/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::rbegin', 'Method', 'api/basic_json/rbegin/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::rend', 'Method', 'api/basic_json/rend/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::sax_parse', 'Function', 'api/basic_json/sax_parse/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::size', 'Method', 'api/basic_json/size/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::string_t', 'Type', 'api/basic_json/string_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::swap', 'Method', 'api/basic_json/swap/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::type', 'Method', 'api/basic_json/type/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::type_error', 'Class', 'api/basic_json/type_error/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::type_name', 'Method', 'api/basic_json/type_name/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::unflatten', 'Method', 'api/basic_json/unflatten/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::update', 'Method', 'api/basic_json/update/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::to_bjdata', 'Function', 'api/basic_json/to_bjdata/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::to_bson', 'Function', 'api/basic_json/to_bson/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::to_cbor', 'Function', 'api/basic_json/to_cbor/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::to_msgpack', 'Function', 'api/basic_json/to_msgpack/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::to_string', 'Method', 'api/basic_json/to_string/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::to_ubjson', 'Function', 'api/basic_json/to_ubjson/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::value', 'Method', 'api/basic_json/value/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::value_t', 'Enum', 'api/basic_json/value_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('basic_json::~basic_json', 'Method', 'api/basic_json/~basic_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json', 'Class', 'api/json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer', 'Class', 'api/json_pointer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::back', 'Method', 'api/json_pointer/back/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::empty', 'Method', 'api/json_pointer/empty/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::json_pointer', 'Constructor', 'api/json_pointer/json_pointer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::operator==', 'Operator', 'api/json_pointer/operator_eq/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::operator!=', 'Operator', 'api/json_pointer/operator_ne/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::operator/', 'Operator', 'api/json_pointer/operator_slash/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::operator/=', 'Operator', 'api/json_pointer/operator_slasheq/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::operator string_t', 'Operator', 'api/json_pointer/operator_string_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::parent_pointer', 'Method', 'api/json_pointer/parent_pointer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::pop_back', 'Method', 'api/json_pointer/pop_back/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::push_back', 'Method', 'api/json_pointer/push_back/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::string_t', 'Type', 'api/json_pointer/string_t/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer::to_string', 'Method', 'api/json_pointer/to_string/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax', 'Class', 'api/json_sax/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::binary', 'Method', 'api/json_sax/binary/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::boolean', 'Method', 'api/json_sax/boolean/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::end_array', 'Method', 'api/json_sax/end_array/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::end_object', 'Method', 'api/json_sax/end_object/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::key', 'Method', 'api/json_sax/key/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::null', 'Method', 'api/json_sax/null/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::number_float', 'Method', 'api/json_sax/number_float/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::number_integer', 'Method', 'api/json_sax/number_integer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::number_unsigned', 'Method', 'api/json_sax/number_unsigned/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::parse_error', 'Method', 'api/json_sax/parse_error/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::start_array', 'Method', 'api/json_sax/start_array/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::start_object', 'Method', 'api/json_sax/start_object/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('json_sax::string', 'Method', 'api/json_sax/string/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator""_json', 'Literal', 'api/operator_literal_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator""_json_pointer', 'Literal', 'api/operator_literal_json_pointer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator<<', 'Operator', 'api/operator_ltlt/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator>>', 'Operator', 'api/operator_gtgt/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('ordered_json', 'Class', 'api/ordered_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('ordered_map', 'Class', 'api/ordered_map/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('std::hash', 'Class', 'api/basic_json/std_hash/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('std::swap', 'Function', 'api/basic_json/std_swap/index.html'); -- Features INSERT INTO searchIndex(name, type, path) VALUES ('Arbitrary Type Conversions', 'Guide', 'features/arbitrary_types/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats', 'Guide', 'features/binary_formats/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats: BJData', 'Guide', 'features/binary_formats/bjdata/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats: BSON', 'Guide', 'features/binary_formats/bson/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats: CBOR', 'Guide', 'features/binary_formats/cbor/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats: MessagePack', 'Guide', 'features/binary_formats/messagepack/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats: UBJSON', 'Guide', 'features/binary_formats/ubjson/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Binary Values', 'Guide', 'features/binary_values/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Comments', 'Guide', 'features/comments/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Element Access', 'Guide', 'features/element_access/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Element Access: Access with default value: value', 'Guide', 'features/element_access/default_value/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Element Access: Checked access: at', 'Guide', 'features/element_access/checked_access/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Element Access: Unchecked access: operator[]', 'Guide', 'features/element_access/unchecked_access/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Integration: Migration Guide', 'Guide', 'integration/migration_guide/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Integration: CMake', 'Guide', 'integration/cmake/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Integration: Header only', 'Guide', 'integration/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Integration: Package Managers', 'Guide', 'integration/package_managers/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Integration: Pkg-config', 'Guide', 'integration/pkg-config/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Iterators', 'Guide', 'features/iterators/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON Merge Patch', 'Guide', 'features/merge_patch/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON Patch and Diff', 'Guide', 'features/json_patch/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON Pointer', 'Guide', 'features/json_pointer/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('nlohmann Namespace', 'Guide', 'features/namespace/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Types', 'Guide', 'features/types/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Types: Number Handling', 'Guide', 'features/types/number_handling/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Object Order', 'Guide', 'features/object_order/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Parsing', 'Guide', 'features/parsing/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Parsing: JSON Lines', 'Guide', 'features/parsing/json_lines/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Parsing: Parser Callbacks', 'Guide', 'features/parsing/parser_callbacks/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Parsing: Parsing and Exceptions', 'Guide', 'features/parsing/parse_exceptions/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Parsing: SAX Interface', 'Guide', 'features/parsing/sax_interface/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Runtime Assertions', 'Guide', 'features/assertions/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Specializing enum conversion', 'Guide', 'features/enum_conversion/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Supported Macros', 'Guide', 'features/macros/index.html'); -- Macros INSERT INTO searchIndex(name, type, path) VALUES ('JSON_ASSERT', 'Macro', 'api/macros/json_assert/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_CATCH_USER', 'Macro', 'api/macros/json_throw_user/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_DIAGNOSTICS', 'Macro', 'api/macros/json_diagnostics/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_DISABLE_ENUM_SERIALIZATION', 'Macro', 'api/macros/json_disable_enum_serialization/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_11', 'Macro', 'api/macros/json_has_cpp_11/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_14', 'Macro', 'api/macros/json_has_cpp_11/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_17', 'Macro', 'api/macros/json_has_cpp_11/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_20', 'Macro', 'api/macros/json_has_cpp_11/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_EXPERIMENTAL_FILESYSTEM', 'Macro', 'api/macros/json_has_filesystem/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_FILESYSTEM', 'Macro', 'api/macros/json_has_filesystem/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_RANGES', 'Macro', 'api/macros/json_has_ranges/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_THREE_WAY_COMPARISON', 'Macro', 'api/macros/json_has_three_way_comparison/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_NOEXCEPTION', 'Macro', 'api/macros/json_noexception/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_NO_IO', 'Macro', 'api/macros/json_no_io/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_SKIP_LIBRARY_VERSION_CHECK', 'Macro', 'api/macros/json_skip_library_version_check/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_SKIP_UNSUPPORTED_COMPILER_CHECK', 'Macro', 'api/macros/json_skip_unsupported_compiler_check/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_THROW_USER', 'Macro', 'api/macros/json_throw_user/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_TRY_USER', 'Macro', 'api/macros/json_throw_user/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_USE_GLOBAL_UDLS', 'Macro', 'api/macros/json_use_global_udls/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_USE_IMPLICIT_CONVERSIONS', 'Macro', 'api/macros/json_use_implicit_conversions/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON', 'Macro', 'api/macros/json_use_legacy_discarded_value_comparison/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('Macros', 'Macro', 'api/macros/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_DEFINE_TYPE_INTRUSIVE', 'Macro', 'api/macros/nlohmann_define_type_intrusive/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT', 'Macro', 'api/macros/nlohmann_define_type_intrusive/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE', 'Macro', 'api/macros/nlohmann_define_type_non_intrusive/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT', 'Macro', 'api/macros/nlohmann_define_type_non_intrusive/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_NAMESPACE', 'Macro', 'api/macros/nlohmann_json_namespace/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_NAMESPACE_BEGIN', 'Macro', 'api/macros/nlohmann_json_namespace_begin/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_NAMESPACE_END', 'Macro', 'api/macros/nlohmann_json_namespace_begin/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_NAMESPACE_NO_VERSION', 'Macro', 'api/macros/nlohmann_json_namespace_no_version/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_SERIALIZE_ENUM', 'Macro', 'api/macros/nlohmann_json_serialize_enum/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_VERSION_MAJOR', 'Macro', 'api/macros/nlohmann_json_version_major/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_VERSION_MINOR', 'Macro', 'api/macros/nlohmann_json_version_major/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_VERSION_PATCH', 'Macro', 'api/macros/nlohmann_json_version_major/index.html'); json-3.11.3/docs/docset/docset.json000066400000000000000000000003361453145653700171540ustar00rootroot00000000000000{ "name": "JSON for Modern C++", "version": "3.11.3", "archive": "JSON_for_Modern_C++.tgz", "author": { "name": "Niels Lohmann", "link": "https://twitter.com/nlohmann" }, "aliases": ["nlohmann/json"] } json-3.11.3/docs/docset/icon.png000066400000000000000000000012741453145653700164400ustar00rootroot00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGD̿tIMEW1IDAT(9hQMG$!MD#i +`B2]*+-۰ !b!hj{d/.0EfpIGɽ3G h `A䴻.v Dzm*B Etw&ǁC{Rg$PE@dL}%\aQ{FȱO'7D$Yab ]r59(þ^gUKH1賎<r Z؝6GjGE2P"E4A)u IꨪbNJDNE첋ugО Z4b$l[=mdg:X4X_)`SEy׿jqiT%"7]M 65QDJ#.0|p vݶםZ%tEXtdate:create2021-08-23T14:25:14+00:004j%tEXtdate:modify2021-08-23T14:25:14+00:00E^IENDB`json-3.11.3/docs/docset/icon@2x.png000066400000000000000000000025221453145653700170070ustar00rootroot00000000000000PNG  IHDR sgAMA a cHRMz&u0`:pQ<bKGD̿tIME kZIDATHu[UU{֙3so%S6fVލ@| D| G{ Ȱ@ BMFGD b&EEMlfig}9{^[߷!S(jF-Vst.CHSs.:?o)Sypƴw&5_kFhRl?\ax,' wˍzvF!_c*1I8DDOj+c(5ubiG^LLP!\~V*a Y'h~ߓ8 ZA%\\ED VS>Fa13WƋGmKI@h"XLe*%√Y)D +ui0Mu}j\LJטĹofxBե2T[FdE=olsN٫~UW' b1Ǣ!תamxLvR4?`fPL&li1N1۾`l.zJqa)$%Xⶑ܋zqK& OێpIHޥ<ǯ^/pqh'۫rXEB%G` q #include #include using json = nlohmann::json; int main() { // create a JSON object json j = { {"pi", 3.141}, {"happy", true}, {"name", "Niels"}, {"nothing", nullptr}, { "answer", { {"everything", 42} } }, {"list", {1, 0, 2}}, { "object", { {"currency", "USD"}, {"value", 42.99} } } }; // add new values j["new"]["key"]["value"] = {"another", "list"}; // count elements auto s = j.size(); j["size"] = s; // pretty print with indent of 4 spaces std::cout << std::setw(4) << j << '\n'; } json-3.11.3/docs/examples/README.output000066400000000000000000000006241453145653700175540ustar00rootroot00000000000000{ "answer": { "everything": 42 }, "happy": true, "list": [ 1, 0, 2 ], "name": "Niels", "new": { "key": { "value": [ "another", "list" ] } }, "nothing": null, "object": { "currency": "USD", "value": 42.99 }, "pi": 3.141, "size": 8 } json-3.11.3/docs/examples/accept__string.cpp000066400000000000000000000007221453145653700210240ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // a valid JSON text auto valid_text = R"( { "numbers": [1, 2, 3] } )"; // an invalid JSON text auto invalid_text = R"( { "strings": ["extra", "comma", ] } )"; std::cout << std::boolalpha << json::accept(valid_text) << ' ' << json::accept(invalid_text) << '\n'; } json-3.11.3/docs/examples/accept__string.output000066400000000000000000000000131453145653700215730ustar00rootroot00000000000000true false json-3.11.3/docs/examples/array.cpp000066400000000000000000000010371453145653700171560ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON arrays json j_no_init_list = json::array(); json j_empty_init_list = json::array({}); json j_nonempty_init_list = json::array({1, 2, 3, 4}); json j_list_of_pairs = json::array({ {"one", 1}, {"two", 2} }); // serialize the JSON arrays std::cout << j_no_init_list << '\n'; std::cout << j_empty_init_list << '\n'; std::cout << j_nonempty_init_list << '\n'; std::cout << j_list_of_pairs << '\n'; } json-3.11.3/docs/examples/array.output000066400000000000000000000000461453145653700177330ustar00rootroot00000000000000[] [] [1,2,3,4] [["one",1],["two",2]] json-3.11.3/docs/examples/array_t.cpp000066400000000000000000000003311453145653700174750ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same, json::array_t>::value << std::endl; } json-3.11.3/docs/examples/array_t.output000066400000000000000000000000051453145653700202510ustar00rootroot00000000000000true json-3.11.3/docs/examples/at__json_pointer.cpp000066400000000000000000000047121453145653700213770ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value json j = { {"number", 1}, {"string", "foo"}, {"array", {1, 2}} }; // read-only access // output element with JSON pointer "/number" std::cout << j.at("/number"_json_pointer) << '\n'; // output element with JSON pointer "/string" std::cout << j.at("/string"_json_pointer) << '\n'; // output element with JSON pointer "/array" std::cout << j.at("/array"_json_pointer) << '\n'; // output element with JSON pointer "/array/1" std::cout << j.at("/array/1"_json_pointer) << '\n'; // writing access // change the string j.at("/string"_json_pointer) = "bar"; // output the changed string std::cout << j["string"] << '\n'; // change an array element j.at("/array/1"_json_pointer) = 21; // output the changed array std::cout << j["array"] << '\n'; // out_of_range.106 try { // try to use an array index with leading '0' json::reference ref = j.at("/array/01"_json_pointer); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } // out_of_range.109 try { // try to use an array index that is not a number json::reference ref = j.at("/array/one"_json_pointer); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } // out_of_range.401 try { // try to use an invalid array index json::reference ref = j.at("/array/4"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } // out_of_range.402 try { // try to use the array index '-' json::reference ref = j.at("/array/-"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } // out_of_range.403 try { // try to use a JSON pointer to a nonexistent object key json::const_reference ref = j.at("/foo"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } // out_of_range.404 try { // try to use a JSON pointer that cannot be resolved json::reference ref = j.at("/number/foo"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/at__json_pointer.output000066400000000000000000000007031453145653700221510ustar00rootroot000000000000001 "foo" [1,2] 2 "bar" [1,21] [json.exception.parse_error.106] parse error: array index '01' must not begin with '0' [json.exception.parse_error.109] parse error: array index 'one' is not a number [json.exception.out_of_range.401] array index 4 is out of range [json.exception.out_of_range.402] array index '-' (2) is out of range [json.exception.out_of_range.403] key 'foo' not found [json.exception.out_of_range.404] unresolved reference token 'foo' json-3.11.3/docs/examples/at__json_pointer_const.cpp000066400000000000000000000036761453145653700226150ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value const json j = { {"number", 1}, {"string", "foo"}, {"array", {1, 2}} }; // read-only access // output element with JSON pointer "/number" std::cout << j.at("/number"_json_pointer) << '\n'; // output element with JSON pointer "/string" std::cout << j.at("/string"_json_pointer) << '\n'; // output element with JSON pointer "/array" std::cout << j.at("/array"_json_pointer) << '\n'; // output element with JSON pointer "/array/1" std::cout << j.at("/array/1"_json_pointer) << '\n'; // out_of_range.109 try { // try to use an array index that is not a number json::const_reference ref = j.at("/array/one"_json_pointer); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } // out_of_range.401 try { // try to use an invalid array index json::const_reference ref = j.at("/array/4"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } // out_of_range.402 try { // try to use the array index '-' json::const_reference ref = j.at("/array/-"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } // out_of_range.403 try { // try to use a JSON pointer to a nonexistent object key json::const_reference ref = j.at("/foo"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } // out_of_range.404 try { // try to use a JSON pointer that cannot be resolved json::const_reference ref = j.at("/number/foo"_json_pointer); } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/at__json_pointer_const.output000066400000000000000000000005371453145653700233640ustar00rootroot000000000000001 "foo" [1,2] 2 [json.exception.parse_error.109] parse error: array index 'one' is not a number [json.exception.out_of_range.401] array index 4 is out of range [json.exception.out_of_range.402] array index '-' (2) is out of range [json.exception.out_of_range.403] key 'foo' not found [json.exception.out_of_range.404] unresolved reference token 'foo' json-3.11.3/docs/examples/at__keytype.c++17.cpp000066400000000000000000000021621453145653700210740ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create JSON object json object = { {"the good", "il buono"}, {"the bad", "il cattivo"}, {"the ugly", "il brutto"} }; // output element with key "the ugly" using string_view std::cout << object.at("the ugly"sv) << '\n'; // change element with key "the bad" using string_view object.at("the bad"sv) = "il cattivo"; // output changed array std::cout << object << '\n'; // exception type_error.304 try { // use at() with string_view on a non-object type json str = "I am a string"; str.at("the good"sv) = "Another string"; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } // exception out_of_range.401 try { // try to write at a nonexisting key using string_view object.at("the fast"sv) = "il rapido"; } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/at__keytype.c++17.output000066400000000000000000000003111453145653700216440ustar00rootroot00000000000000"il brutto" {"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"} [json.exception.type_error.304] cannot use at() with string [json.exception.out_of_range.403] key 'the fast' not found json-3.11.3/docs/examples/at__keytype_const.c++17.cpp000066400000000000000000000017461453145653700223110ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create JSON object const json object = { {"the good", "il buono"}, {"the bad", "il cattivo"}, {"the ugly", "il brutto"} }; // output element with key "the ugly" using string_view std::cout << object.at("the ugly"sv) << '\n'; // exception type_error.304 try { // use at() with string_view on a non-object type const json str = "I am a string"; std::cout << str.at("the good"sv) << '\n'; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } // exception out_of_range.401 try { // try to read from a nonexisting key using string_view std::cout << object.at("the fast"sv) << '\n'; } catch (const json::out_of_range) { std::cout << "out of range" << '\n'; } } json-3.11.3/docs/examples/at__keytype_const.c++17.output000066400000000000000000000001251453145653700230550ustar00rootroot00000000000000"il brutto" [json.exception.type_error.304] cannot use at() with string out of range json-3.11.3/docs/examples/at__object_t_key_type.cpp000066400000000000000000000017411453145653700223670ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON object json object = { {"the good", "il buono"}, {"the bad", "il cattivo"}, {"the ugly", "il brutto"} }; // output element with key "the ugly" std::cout << object.at("the ugly") << '\n'; // change element with key "the bad" object.at("the bad") = "il cattivo"; // output changed array std::cout << object << '\n'; // exception type_error.304 try { // use at() on a non-object type json str = "I am a string"; str.at("the good") = "Another string"; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } // exception out_of_range.401 try { // try to write at a nonexisting key object.at("the fast") = "il rapido"; } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/at__object_t_key_type.output000066400000000000000000000003111453145653700231350ustar00rootroot00000000000000"il brutto" {"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"} [json.exception.type_error.304] cannot use at() with string [json.exception.out_of_range.403] key 'the fast' not found json-3.11.3/docs/examples/at__object_t_key_type_const.cpp000066400000000000000000000015511453145653700235740ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON object const json object = { {"the good", "il buono"}, {"the bad", "il cattivo"}, {"the ugly", "il brutto"} }; // output element with key "the ugly" std::cout << object.at("the ugly") << '\n'; // exception type_error.304 try { // use at() on a non-object type const json str = "I am a string"; std::cout << str.at("the good") << '\n'; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } // exception out_of_range.401 try { // try to read from a nonexisting key std::cout << object.at("the fast") << '\n'; } catch (const json::out_of_range) { std::cout << "out of range" << '\n'; } } json-3.11.3/docs/examples/at__object_t_key_type_const.output000066400000000000000000000001251453145653700243460ustar00rootroot00000000000000"il brutto" [json.exception.type_error.304] cannot use at() with string out of range json-3.11.3/docs/examples/at__size_type.cpp000066400000000000000000000015761453145653700207060ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON array json array = {"first", "2nd", "third", "fourth"}; // output element at index 2 (third element) std::cout << array.at(2) << '\n'; // change element at index 1 (second element) to "second" array.at(1) = "second"; // output changed array std::cout << array << '\n'; // exception type_error.304 try { // use at() on a non-array type json str = "I am a string"; str.at(0) = "Another string"; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } // exception out_of_range.401 try { // try to write beyond the array limit array.at(5) = "sixth"; } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/at__size_type.output000066400000000000000000000002501453145653700214500ustar00rootroot00000000000000"third" ["first","second","third","fourth"] [json.exception.type_error.304] cannot use at() with string [json.exception.out_of_range.401] array index 5 is out of range json-3.11.3/docs/examples/at__size_type_const.cpp000066400000000000000000000013761453145653700221120ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON array const json array = {"first", "2nd", "third", "fourth"}; // output element at index 2 (third element) std::cout << array.at(2) << '\n'; // exception type_error.304 try { // use at() on a non-array type const json str = "I am a string"; std::cout << str.at(0) << '\n'; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } // exception out_of_range.401 try { // try to read beyond the array limit std::cout << array.at(5) << '\n'; } catch (const json::out_of_range& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/at__size_type_const.output000066400000000000000000000002041453145653700226550ustar00rootroot00000000000000"third" [json.exception.type_error.304] cannot use at() with string [json.exception.out_of_range.401] array index 5 is out of range json-3.11.3/docs/examples/back.cpp000066400000000000000000000020371453145653700167410ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_object_empty(json::value_t::object); json j_array = {1, 2, 4, 8, 16}; json j_array_empty(json::value_t::array); json j_string = "Hello, world"; // call back() std::cout << j_boolean.back() << '\n'; std::cout << j_number_integer.back() << '\n'; std::cout << j_number_float.back() << '\n'; std::cout << j_object.back() << '\n'; //std::cout << j_object_empty.back() << '\n'; // undefined behavior std::cout << j_array.back() << '\n'; //std::cout << j_array_empty.back() << '\n'; // undefined behavior std::cout << j_string.back() << '\n'; // back() called on a null value try { json j_null; j_null.back(); } catch (const json::invalid_iterator& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/back.output000066400000000000000000000001311453145653700175100ustar00rootroot00000000000000true 17 23.42 2 16 "Hello, world" [json.exception.invalid_iterator.214] cannot get value json-3.11.3/docs/examples/basic_json__CompatibleType.cpp000066400000000000000000000144601453145653700233160ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include using json = nlohmann::json; int main() { // ============ // object types // ============ // create an object from an object_t value json::object_t object_value = { {"one", 1}, {"two", 2} }; json j_object_t(object_value); // create an object from std::map std::map c_map { {"one", 1}, {"two", 2}, {"three", 3} }; json j_map(c_map); // create an object from std::unordered_map std::unordered_map c_umap { {"one", 1.2}, {"two", 2.3}, {"three", 3.4} }; json j_umap(c_umap); // create an object from std::multimap std::multimap c_mmap { {"one", true}, {"two", true}, {"three", false}, {"three", true} }; json j_mmap(c_mmap); // only one entry for key "three" is used // create an object from std::unordered_multimap std::unordered_multimap c_ummap { {"one", true}, {"two", true}, {"three", false}, {"three", true} }; json j_ummap(c_ummap); // only one entry for key "three" is used // serialize the JSON objects std::cout << j_object_t << '\n'; std::cout << j_map << '\n'; std::cout << j_umap << '\n'; std::cout << j_mmap << '\n'; std::cout << j_ummap << "\n\n"; // =========== // array types // =========== // create an array from an array_t value json::array_t array_value = {"one", "two", 3, 4.5, false}; json j_array_t(array_value); // create an array from std::vector std::vector c_vector {1, 2, 3, 4}; json j_vec(c_vector); // create an array from std::valarray std::valarray c_valarray {10, 9, 8, 7}; json j_valarray(c_valarray); // create an array from std::deque std::deque c_deque {1.2, 2.3, 3.4, 5.6}; json j_deque(c_deque); // create an array from std::list std::list c_list {true, true, false, true}; json j_list(c_list); // create an array from std::forward_list std::forward_list c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543}; json j_flist(c_flist); // create an array from std::array std::array c_array {{1, 2, 3, 4}}; json j_array(c_array); // create an array from std::set std::set c_set {"one", "two", "three", "four", "one"}; json j_set(c_set); // only one entry for "one" is used // create an array from std::unordered_set std::unordered_set c_uset {"one", "two", "three", "four", "one"}; json j_uset(c_uset); // only one entry for "one" is used // create an array from std::multiset std::multiset c_mset {"one", "two", "one", "four"}; json j_mset(c_mset); // both entries for "one" are used // create an array from std::unordered_multiset std::unordered_multiset c_umset {"one", "two", "one", "four"}; json j_umset(c_umset); // both entries for "one" are used // serialize the JSON arrays std::cout << j_array_t << '\n'; std::cout << j_vec << '\n'; std::cout << j_valarray << '\n'; std::cout << j_deque << '\n'; std::cout << j_list << '\n'; std::cout << j_flist << '\n'; std::cout << j_array << '\n'; std::cout << j_set << '\n'; std::cout << j_uset << '\n'; std::cout << j_mset << '\n'; std::cout << j_umset << "\n\n"; // ============ // string types // ============ // create string from a string_t value json::string_t string_value = "The quick brown fox jumps over the lazy dog."; json j_string_t(string_value); // create a JSON string directly from a string literal json j_string_literal("The quick brown fox jumps over the lazy dog."); // create string from std::string std::string s_stdstring = "The quick brown fox jumps over the lazy dog."; json j_stdstring(s_stdstring); // serialize the JSON strings std::cout << j_string_t << '\n'; std::cout << j_string_literal << '\n'; std::cout << j_stdstring << "\n\n"; // ============ // number types // ============ // create a JSON number from number_integer_t json::number_integer_t value_integer_t = -42; json j_integer_t(value_integer_t); // create a JSON number from number_unsigned_t json::number_integer_t value_unsigned_t = 17; json j_unsigned_t(value_unsigned_t); // create a JSON number from an anonymous enum enum { enum_value = 17 }; json j_enum(enum_value); // create values of different integer types short n_short = 42; int n_int = -23; long n_long = 1024; int_least32_t n_int_least32_t = -17; uint8_t n_uint8_t = 8; // create (integer) JSON numbers json j_short(n_short); json j_int(n_int); json j_long(n_long); json j_int_least32_t(n_int_least32_t); json j_uint8_t(n_uint8_t); // create values of different floating-point types json::number_float_t v_ok = 3.141592653589793; json::number_float_t v_nan = NAN; json::number_float_t v_infinity = INFINITY; // create values of different floating-point types float n_float = 42.23; float n_float_nan = 1.0f / 0.0f; double n_double = 23.42; // create (floating point) JSON numbers json j_ok(v_ok); json j_nan(v_nan); json j_infinity(v_infinity); json j_float(n_float); json j_float_nan(n_float_nan); json j_double(n_double); // serialize the JSON numbers std::cout << j_integer_t << '\n'; std::cout << j_unsigned_t << '\n'; std::cout << j_enum << '\n'; std::cout << j_short << '\n'; std::cout << j_int << '\n'; std::cout << j_long << '\n'; std::cout << j_int_least32_t << '\n'; std::cout << j_uint8_t << '\n'; std::cout << j_ok << '\n'; std::cout << j_nan << '\n'; std::cout << j_infinity << '\n'; std::cout << j_float << '\n'; std::cout << j_float_nan << '\n'; std::cout << j_double << "\n\n"; // ============= // boolean types // ============= // create boolean values json j_truth = true; json j_falsity = false; // serialize the JSON booleans std::cout << j_truth << '\n'; std::cout << j_falsity << '\n'; } json-3.11.3/docs/examples/basic_json__CompatibleType.output000066400000000000000000000012351453145653700240700ustar00rootroot00000000000000{"one":1,"two":2} {"one":1,"three":3,"two":2} {"one":1.2,"three":3.4,"two":2.3} {"one":true,"three":false,"two":true} {"one":true,"three":false,"two":true} ["one","two",3,4.5,false] [1,2,3,4] [10,9,8,7] [1.2,2.3,3.4,5.6] [true,true,false,true] [12345678909876,23456789098765,34567890987654,45678909876543] [1,2,3,4] ["four","one","three","two"] ["four","three","two","one"] ["four","one","one","two"] ["four","two","one","one"] "The quick brown fox jumps over the lazy dog." "The quick brown fox jumps over the lazy dog." "The quick brown fox jumps over the lazy dog." -42 17 17 42 -23 1024 -17 8 3.141592653589793 null null 42.22999954223633 null 23.42 true false json-3.11.3/docs/examples/basic_json__InputIt_InputIt.cpp000066400000000000000000000015261453145653700234440ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_array = {"alpha", "bravo", "charly", "delta", "easy"}; json j_number = 42; json j_object = {{"one", "eins"}, {"two", "zwei"}}; // create copies using iterators json j_array_range(j_array.begin() + 1, j_array.end() - 2); json j_number_range(j_number.begin(), j_number.end()); json j_object_range(j_object.begin(), j_object.find("two")); // serialize the values std::cout << j_array_range << '\n'; std::cout << j_number_range << '\n'; std::cout << j_object_range << '\n'; // example for an exception try { json j_invalid(j_number.begin() + 1, j_number.end()); } catch (const json::invalid_iterator& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/basic_json__InputIt_InputIt.output000066400000000000000000000001421453145653700242130ustar00rootroot00000000000000["bravo","charly"] 42 {"one":"eins"} [json.exception.invalid_iterator.204] iterators out of range json-3.11.3/docs/examples/basic_json__basic_json.cpp000066400000000000000000000005221453145653700225010ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json j1 = {"one", "two", 3, 4.5, false}; // create a copy json j2(j1); // serialize the JSON array std::cout << j1 << " = " << j2 << '\n'; std::cout << std::boolalpha << (j1 == j2) << '\n'; } json-3.11.3/docs/examples/basic_json__basic_json.output000066400000000000000000000000731453145653700232600ustar00rootroot00000000000000["one","two",3,4.5,false] = ["one","two",3,4.5,false] true json-3.11.3/docs/examples/basic_json__copyassignment.cpp000066400000000000000000000004331453145653700234330ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json a = 23; json b = 42; // copy-assign a to b b = a; // serialize the JSON arrays std::cout << a << '\n'; std::cout << b << '\n'; } json-3.11.3/docs/examples/basic_json__copyassignment.output000066400000000000000000000000061453145653700242050ustar00rootroot0000000000000023 23 json-3.11.3/docs/examples/basic_json__list_init_t.cpp000066400000000000000000000011211453145653700227040ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_empty_init_list = json({}); json j_object = { {"one", 1}, {"two", 2} }; json j_array = {1, 2, 3, 4}; json j_nested_object = { {"one", {1}}, {"two", {1, 2}} }; json j_nested_array = { {{1}, "one"}, {{1, 2}, "two"} }; // serialize the JSON value std::cout << j_empty_init_list << '\n'; std::cout << j_object << '\n'; std::cout << j_array << '\n'; std::cout << j_nested_object << '\n'; std::cout << j_nested_array << '\n'; } json-3.11.3/docs/examples/basic_json__list_init_t.output000066400000000000000000000001231453145653700234630ustar00rootroot00000000000000{} {"one":1,"two":2} [1,2,3,4] {"one":[1],"two":[1,2]} [[[1],"one"],[[1,2],"two"]] json-3.11.3/docs/examples/basic_json__moveconstructor.cpp000066400000000000000000000004371453145653700236500ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON value json a = 23; // move contents of a to b json b(std::move(a)); // serialize the JSON arrays std::cout << a << '\n'; std::cout << b << '\n'; } json-3.11.3/docs/examples/basic_json__moveconstructor.output000066400000000000000000000000101453145653700244110ustar00rootroot00000000000000null 23 json-3.11.3/docs/examples/basic_json__nullptr_t.cpp000066400000000000000000000004521453145653700224140ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // implicitly create a JSON null value json j1; // explicitly create a JSON null value json j2(nullptr); // serialize the JSON null value std::cout << j1 << '\n' << j2 << '\n'; } json-3.11.3/docs/examples/basic_json__nullptr_t.output000066400000000000000000000000121453145653700231620ustar00rootroot00000000000000null null json-3.11.3/docs/examples/basic_json__size_type_basic_json.cpp000066400000000000000000000006441453145653700246010ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array by creating copies of a JSON value json value = "Hello"; json array_0 = json(0, value); json array_1 = json(1, value); json array_5 = json(5, value); // serialize the JSON arrays std::cout << array_0 << '\n'; std::cout << array_1 << '\n'; std::cout << array_5 << '\n'; } json-3.11.3/docs/examples/basic_json__size_type_basic_json.output000066400000000000000000000000671453145653700253560ustar00rootroot00000000000000[] ["Hello"] ["Hello","Hello","Hello","Hello","Hello"] json-3.11.3/docs/examples/basic_json__value_t.cpp000066400000000000000000000013741453145653700220340ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create the different JSON values with default values json j_null(json::value_t::null); json j_boolean(json::value_t::boolean); json j_number_integer(json::value_t::number_integer); json j_number_float(json::value_t::number_float); json j_object(json::value_t::object); json j_array(json::value_t::array); json j_string(json::value_t::string); // serialize the JSON values std::cout << j_null << '\n'; std::cout << j_boolean << '\n'; std::cout << j_number_integer << '\n'; std::cout << j_number_float << '\n'; std::cout << j_object << '\n'; std::cout << j_array << '\n'; std::cout << j_string << '\n'; } json-3.11.3/docs/examples/basic_json__value_t.output000066400000000000000000000000321453145653700226000ustar00rootroot00000000000000null false 0 0.0 {} [] "" json-3.11.3/docs/examples/begin.cpp000066400000000000000000000005121453145653700171210ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to the first element json::iterator it = array.begin(); // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/begin.output000066400000000000000000000000021453145653700176710ustar00rootroot000000000000001 json-3.11.3/docs/examples/binary.cpp000066400000000000000000000006301453145653700173220ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a binary vector std::vector vec = {0xCA, 0xFE, 0xBA, 0xBE}; // create a binary JSON value with subtype 42 json j = json::binary(vec, 42); // output type and subtype std::cout << "type: " << j.type_name() << ", subtype: " << j.get_binary().subtype() << std::endl; } json-3.11.3/docs/examples/binary.output000066400000000000000000000000321453145653700200740ustar00rootroot00000000000000type: binary, subtype: 42 json-3.11.3/docs/examples/binary_t.cpp000066400000000000000000000004111453145653700176420ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same>, json::binary_t>::value << std::endl; } json-3.11.3/docs/examples/binary_t.output000066400000000000000000000000051453145653700204170ustar00rootroot00000000000000true json-3.11.3/docs/examples/boolean_t.cpp000066400000000000000000000003161453145653700200010ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same::value << std::endl; } json-3.11.3/docs/examples/boolean_t.output000066400000000000000000000000051453145653700205520ustar00rootroot00000000000000true json-3.11.3/docs/examples/byte_container_with_subtype__byte_container_with_subtype.cpp000066400000000000000000000012101453145653700316760ustar00rootroot00000000000000#include #include // define a byte container based on std::vector using byte_container_with_subtype = nlohmann::byte_container_with_subtype>; using json = nlohmann::json; int main() { // (1) create empty container auto c1 = byte_container_with_subtype(); std::vector bytes = {{0xca, 0xfe, 0xba, 0xbe}}; // (2) create container auto c2 = byte_container_with_subtype(bytes); // (3) create container with subtype auto c3 = byte_container_with_subtype(bytes, 42); std::cout << json(c1) << "\n" << json(c2) << "\n" << json(c3) << std::endl; } json-3.11.3/docs/examples/byte_container_with_subtype__byte_container_with_subtype.output000066400000000000000000000001601453145653700324570ustar00rootroot00000000000000{"bytes":[],"subtype":null} {"bytes":[202,254,186,190],"subtype":null} {"bytes":[202,254,186,190],"subtype":42} json-3.11.3/docs/examples/byte_container_with_subtype__clear_subtype.cpp000066400000000000000000000011001453145653700267220ustar00rootroot00000000000000#include #include // define a byte container based on std::vector using byte_container_with_subtype = nlohmann::byte_container_with_subtype>; using json = nlohmann::json; int main() { std::vector bytes = {{0xca, 0xfe, 0xba, 0xbe}}; // create container with subtype auto c1 = byte_container_with_subtype(bytes, 42); std::cout << "before calling clear_subtype(): " << json(c1) << '\n'; c1.clear_subtype(); std::cout << "after calling clear_subtype(): " << json(c1) << '\n'; } json-3.11.3/docs/examples/byte_container_with_subtype__clear_subtype.output000066400000000000000000000002231453145653700275050ustar00rootroot00000000000000before calling clear_subtype(): {"bytes":[202,254,186,190],"subtype":42} after calling clear_subtype(): {"bytes":[202,254,186,190],"subtype":null} json-3.11.3/docs/examples/byte_container_with_subtype__has_subtype.cpp000066400000000000000000000011321453145653700264140ustar00rootroot00000000000000#include #include // define a byte container based on std::vector using byte_container_with_subtype = nlohmann::byte_container_with_subtype>; int main() { std::vector bytes = {{0xca, 0xfe, 0xba, 0xbe}}; // create container auto c1 = byte_container_with_subtype(bytes); // create container with subtype auto c2 = byte_container_with_subtype(bytes, 42); std::cout << std::boolalpha << "c1.has_subtype() = " << c1.has_subtype() << "\nc2.has_subtype() = " << c2.has_subtype() << std::endl; } json-3.11.3/docs/examples/byte_container_with_subtype__has_subtype.output000066400000000000000000000000611453145653700271720ustar00rootroot00000000000000c1.has_subtype() = false c2.has_subtype() = true json-3.11.3/docs/examples/byte_container_with_subtype__set_subtype.cpp000066400000000000000000000011221453145653700264330ustar00rootroot00000000000000#include #include // define a byte container based on std::vector using byte_container_with_subtype = nlohmann::byte_container_with_subtype>; using json = nlohmann::json; int main() { std::vector bytes = {{0xca, 0xfe, 0xba, 0xbe}}; // create container without subtype auto c = byte_container_with_subtype(bytes); std::cout << "before calling set_subtype(42): " << json(c) << '\n'; // set the subtype c.set_subtype(42); std::cout << "after calling set_subtype(42): " << json(c) << '\n'; } json-3.11.3/docs/examples/byte_container_with_subtype__set_subtype.output000066400000000000000000000002231453145653700272120ustar00rootroot00000000000000before calling set_subtype(42): {"bytes":[202,254,186,190],"subtype":null} after calling set_subtype(42): {"bytes":[202,254,186,190],"subtype":42} json-3.11.3/docs/examples/byte_container_with_subtype__subtype.cpp000066400000000000000000000013101453145653700255570ustar00rootroot00000000000000#include #include // define a byte container based on std::vector using byte_container_with_subtype = nlohmann::byte_container_with_subtype>; int main() { std::vector bytes = {{0xca, 0xfe, 0xba, 0xbe}}; // create container auto c1 = byte_container_with_subtype(bytes); // create container with subtype auto c2 = byte_container_with_subtype(bytes, 42); std::cout << "c1.subtype() = " << c1.subtype() << "\nc2.subtype() = " << c2.subtype() << std::endl; // in case no subtype is set, return special value assert(c1.subtype() == static_cast(-1)); } json-3.11.3/docs/examples/byte_container_with_subtype__subtype.output000066400000000000000000000000661453145653700263440ustar00rootroot00000000000000c1.subtype() = 18446744073709551615 c2.subtype() = 42 json-3.11.3/docs/examples/cbegin.cpp000066400000000000000000000005271453145653700172720ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value const json array = {1, 2, 3, 4, 5}; // get an iterator to the first element json::const_iterator it = array.cbegin(); // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/cbegin.output000066400000000000000000000000021453145653700200340ustar00rootroot000000000000001 json-3.11.3/docs/examples/cbor_tag_handler_t.cpp000066400000000000000000000015131453145653700216370ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // tagged byte string std::vector vec = {{0xd8, 0x42, 0x44, 0xcA, 0xfe, 0xba, 0xbe}}; // cbor_tag_handler_t::error throws try { auto b_throw_on_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::error); } catch (const json::parse_error& e) { std::cout << e.what() << std::endl; } // cbor_tag_handler_t::ignore ignores the tag auto b_ignore_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::ignore); std::cout << b_ignore_tag << std::endl; // cbor_tag_handler_t::store stores the tag as binary subtype auto b_store_tag = json::from_cbor(vec, true, true, json::cbor_tag_handler_t::store); std::cout << b_store_tag << std::endl; } json-3.11.3/docs/examples/cbor_tag_handler_t.output000066400000000000000000000003061453145653700224140ustar00rootroot00000000000000[json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0xD8 {"bytes":[202,254,186,190],"subtype":null} {"bytes":[202,254,186,190],"subtype":66} json-3.11.3/docs/examples/cend.cpp000066400000000000000000000006351453145653700167540ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to one past the last element json::const_iterator it = array.cend(); // decrement the iterator to point to the last element --it; // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/cend.output000066400000000000000000000000021453145653700175160ustar00rootroot000000000000005 json-3.11.3/docs/examples/clear.cpp000066400000000000000000000015001453145653700171210ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call clear() j_null.clear(); j_boolean.clear(); j_number_integer.clear(); j_number_float.clear(); j_object.clear(); j_array.clear(); j_string.clear(); // serialize the cleared values() std::cout << j_null << '\n'; std::cout << j_boolean << '\n'; std::cout << j_number_integer << '\n'; std::cout << j_number_float << '\n'; std::cout << j_object << '\n'; std::cout << j_array << '\n'; std::cout << j_string << '\n'; } json-3.11.3/docs/examples/clear.output000066400000000000000000000000321453145653700176760ustar00rootroot00000000000000null false 0 0.0 {} [] "" json-3.11.3/docs/examples/contains__json_pointer.cpp000066400000000000000000000021511453145653700226040ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value json j = { {"number", 1}, {"string", "foo"}, {"array", {1, 2}} }; std::cout << std::boolalpha << j.contains("/number"_json_pointer) << '\n' << j.contains("/string"_json_pointer) << '\n' << j.contains("/array"_json_pointer) << '\n' << j.contains("/array/1"_json_pointer) << '\n' << j.contains("/array/-"_json_pointer) << '\n' << j.contains("/array/4"_json_pointer) << '\n' << j.contains("/baz"_json_pointer) << std::endl; try { // try to use an array index with leading '0' j.contains("/array/01"_json_pointer); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } try { // try to use an array index that is not a number j.contains("/array/one"_json_pointer); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/contains__json_pointer.output000066400000000000000000000000461453145653700233630ustar00rootroot00000000000000true true true true false false false json-3.11.3/docs/examples/contains__keytype.c++17.cpp000066400000000000000000000011731453145653700223070ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create some JSON values json j_object = R"( {"key": "value"} )"_json; json j_array = R"( [1, 2, 3] )"_json; // call contains std::cout << std::boolalpha << "j_object contains 'key': " << j_object.contains("key"sv) << '\n' << "j_object contains 'another': " << j_object.contains("another"sv) << '\n' << "j_array contains 'key': " << j_array.contains("key"sv) << std::endl; } json-3.11.3/docs/examples/contains__keytype.c++17.output000066400000000000000000000001371453145653700230640ustar00rootroot00000000000000j_object contains 'key': true j_object contains 'another': false j_array contains 'key': false json-3.11.3/docs/examples/contains__object_t_key_type.cpp000066400000000000000000000010631453145653700235760ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create some JSON values json j_object = R"( {"key": "value"} )"_json; json j_array = R"( [1, 2, 3] )"_json; // call contains std::cout << std::boolalpha << "j_object contains 'key': " << j_object.contains("key") << '\n' << "j_object contains 'another': " << j_object.contains("another") << '\n' << "j_array contains 'key': " << j_array.contains("key") << std::endl; } json-3.11.3/docs/examples/contains__object_t_key_type.output000066400000000000000000000001371453145653700243550ustar00rootroot00000000000000j_object contains 'key': true j_object contains 'another': false j_array contains 'key': false json-3.11.3/docs/examples/count__keytype.c++17.cpp000066400000000000000000000010271453145653700216170ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create a JSON object json j_object = {{"one", 1}, {"two", 2}}; // call count() auto count_two = j_object.count("two"sv); auto count_three = j_object.count("three"sv); // print values std::cout << "number of elements with key \"two\": " << count_two << '\n'; std::cout << "number of elements with key \"three\": " << count_three << '\n'; } json-3.11.3/docs/examples/count__keytype.c++17.output000066400000000000000000000001141453145653700223710ustar00rootroot00000000000000number of elements with key "two": 1 number of elements with key "three": 0 json-3.11.3/docs/examples/count__object_t_key_type.cpp000066400000000000000000000007211453145653700231100ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON object json j_object = {{"one", 1}, {"two", 2}}; // call count() auto count_two = j_object.count("two"); auto count_three = j_object.count("three"); // print values std::cout << "number of elements with key \"two\": " << count_two << '\n'; std::cout << "number of elements with key \"three\": " << count_three << '\n'; } json-3.11.3/docs/examples/count__object_t_key_type.output000066400000000000000000000001141453145653700236620ustar00rootroot00000000000000number of elements with key "two": 1 number of elements with key "three": 0 json-3.11.3/docs/examples/crbegin.cpp000066400000000000000000000005361453145653700174540ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to the reverse-beginning json::const_reverse_iterator it = array.crbegin(); // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/crbegin.output000066400000000000000000000000021453145653700202160ustar00rootroot000000000000005 json-3.11.3/docs/examples/crend.cpp000066400000000000000000000006351453145653700171360ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to the reverse-end json::const_reverse_iterator it = array.crend(); // increment the iterator to point to the first element --it; // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/crend.output000066400000000000000000000000021453145653700177000ustar00rootroot000000000000001 json-3.11.3/docs/examples/default_object_comparator_t.cpp000066400000000000000000000005051453145653700235630ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << "one < two : " << json::default_object_comparator_t{}("one", "two") << "\n" << "three < four : " << json::default_object_comparator_t{}("three", "four") << std::endl; } json-3.11.3/docs/examples/default_object_comparator_t.output000066400000000000000000000000461453145653700243410ustar00rootroot00000000000000one < two : true three < four : false json-3.11.3/docs/examples/diagnostics_extended.cpp000066400000000000000000000006001453145653700222220ustar00rootroot00000000000000#include # define JSON_DIAGNOSTICS 1 #include using json = nlohmann::json; int main() { json j; j["address"]["street"] = "Fake Street"; j["address"]["housenumber"] = "12"; try { int housenumber = j["address"]["housenumber"]; } catch (const json::exception& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/diagnostics_extended.output000066400000000000000000000001321453145653700230000ustar00rootroot00000000000000[json.exception.type_error.302] (/address/housenumber) type must be number, but is string json-3.11.3/docs/examples/diagnostics_standard.cpp000066400000000000000000000005431453145653700222300ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { json j; j["address"]["street"] = "Fake Street"; j["address"]["housenumber"] = "12"; try { int housenumber = j["address"]["housenumber"]; } catch (const json::exception& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/diagnostics_standard.output000066400000000000000000000001031453145653700227760ustar00rootroot00000000000000[json.exception.type_error.302] type must be number, but is string json-3.11.3/docs/examples/diff.cpp000066400000000000000000000013451453145653700167520ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // the source document json source = R"( { "baz": "qux", "foo": "bar" } )"_json; // the target document json target = R"( { "baz": "boo", "hello": [ "world" ] } )"_json; // create the patch json patch = json::diff(source, target); // roundtrip json patched_source = source.patch(patch); // output patch and roundtrip result std::cout << std::setw(4) << patch << "\n\n" << std::setw(4) << patched_source << std::endl; } json-3.11.3/docs/examples/diff.output000066400000000000000000000004751453145653700175330ustar00rootroot00000000000000[ { "op": "replace", "path": "/baz", "value": "boo" }, { "op": "remove", "path": "/foo" }, { "op": "add", "path": "/hello", "value": [ "world" ] } ] { "baz": "boo", "hello": [ "world" ] } json-3.11.3/docs/examples/dump.cpp000066400000000000000000000027061453145653700170110ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hellö 😀!"; // call dump() std::cout << "objects:" << '\n' << j_object.dump() << "\n\n" << j_object.dump(-1) << "\n\n" << j_object.dump(0) << "\n\n" << j_object.dump(4) << "\n\n" << j_object.dump(1, '\t') << "\n\n"; std::cout << "arrays:" << '\n' << j_array.dump() << "\n\n" << j_array.dump(-1) << "\n\n" << j_array.dump(0) << "\n\n" << j_array.dump(4) << "\n\n" << j_array.dump(1, '\t') << "\n\n"; std::cout << "strings:" << '\n' << j_string.dump() << '\n' << j_string.dump(-1, ' ', true) << '\n'; // create JSON value with invalid UTF-8 byte sequence json j_invalid = "ä\xA9ü"; try { std::cout << j_invalid.dump() << std::endl; } catch (const json::type_error& e) { std::cout << e.what() << std::endl; } std::cout << "string with replaced invalid characters: " << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace) << "\nstring with ignored invalid characters: " << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore) << '\n'; } json-3.11.3/docs/examples/dump.output000066400000000000000000000007231453145653700175640ustar00rootroot00000000000000objects: {"one":1,"two":2} {"one":1,"two":2} { "one": 1, "two": 2 } { "one": 1, "two": 2 } { "one": 1, "two": 2 } arrays: [1,2,4,8,16] [1,2,4,8,16] [ 1, 2, 4, 8, 16 ] [ 1, 2, 4, 8, 16 ] [ 1, 2, 4, 8, 16 ] strings: "Hellö 😀!" "Hell\u00f6 \ud83d\ude00!" [json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9 string with replaced invalid characters: "ä�ü" string with ignored invalid characters: "äü" json-3.11.3/docs/examples/emplace.cpp000066400000000000000000000014071453145653700174470ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json object = {{"one", 1}, {"two", 2}}; json null; // print values std::cout << object << '\n'; std::cout << null << '\n'; // add values auto res1 = object.emplace("three", 3); null.emplace("A", "a"); null.emplace("B", "b"); // the following call will not add an object, because there is already // a value stored at key "B" auto res2 = null.emplace("B", "c"); // print values std::cout << object << '\n'; std::cout << *res1.first << " " << std::boolalpha << res1.second << '\n'; std::cout << null << '\n'; std::cout << *res2.first << " " << std::boolalpha << res2.second << '\n'; } json-3.11.3/docs/examples/emplace.output000066400000000000000000000001261453145653700202220ustar00rootroot00000000000000{"one":1,"two":2} null {"one":1,"three":3,"two":2} 3 true {"A":"a","B":"b"} "b" false json-3.11.3/docs/examples/emplace_back.cpp000066400000000000000000000007041453145653700204260ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json array = {1, 2, 3, 4, 5}; json null; // print values std::cout << array << '\n'; std::cout << null << '\n'; // add values array.emplace_back(6); null.emplace_back("first"); null.emplace_back(3, "second"); // print values std::cout << array << '\n'; std::cout << null << '\n'; } json-3.11.3/docs/examples/emplace_back.output000066400000000000000000000001061453145653700212000ustar00rootroot00000000000000[1,2,3,4,5] null [1,2,3,4,5,6] ["first",["second","second","second"]] json-3.11.3/docs/examples/empty.cpp000066400000000000000000000016131453145653700171760ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_object_empty(json::value_t::object); json j_array = {1, 2, 4, 8, 16}; json j_array_empty(json::value_t::array); json j_string = "Hello, world"; // call empty() std::cout << std::boolalpha; std::cout << j_null.empty() << '\n'; std::cout << j_boolean.empty() << '\n'; std::cout << j_number_integer.empty() << '\n'; std::cout << j_number_float.empty() << '\n'; std::cout << j_object.empty() << '\n'; std::cout << j_object_empty.empty() << '\n'; std::cout << j_array.empty() << '\n'; std::cout << j_array_empty.empty() << '\n'; std::cout << j_string.empty() << '\n'; } json-3.11.3/docs/examples/empty.output000066400000000000000000000000631453145653700177520ustar00rootroot00000000000000true false false false false true false true false json-3.11.3/docs/examples/end.cpp000066400000000000000000000006261453145653700166110ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to one past the last element json::iterator it = array.end(); // decrement the iterator to point to the last element --it; // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/end.output000066400000000000000000000000021453145653700173530ustar00rootroot000000000000005 json-3.11.3/docs/examples/erase__IteratorType.cpp000066400000000000000000000015361453145653700220150ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call erase() j_boolean.erase(j_boolean.begin()); j_number_integer.erase(j_number_integer.begin()); j_number_float.erase(j_number_float.begin()); j_object.erase(j_object.find("two")); j_array.erase(j_array.begin() + 2); j_string.erase(j_string.begin()); // print values std::cout << j_boolean << '\n'; std::cout << j_number_integer << '\n'; std::cout << j_number_float << '\n'; std::cout << j_object << '\n'; std::cout << j_array << '\n'; std::cout << j_string << '\n'; } json-3.11.3/docs/examples/erase__IteratorType.output000066400000000000000000000000511453145653700225620ustar00rootroot00000000000000null null null {"one":1} [1,2,8,16] null json-3.11.3/docs/examples/erase__IteratorType_IteratorType.cpp000066400000000000000000000017221453145653700245250ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call erase() j_boolean.erase(j_boolean.begin(), j_boolean.end()); j_number_integer.erase(j_number_integer.begin(), j_number_integer.end()); j_number_float.erase(j_number_float.begin(), j_number_float.end()); j_object.erase(j_object.find("two"), j_object.end()); j_array.erase(j_array.begin() + 1, j_array.begin() + 3); j_string.erase(j_string.begin(), j_string.end()); // print values std::cout << j_boolean << '\n'; std::cout << j_number_integer << '\n'; std::cout << j_number_float << '\n'; std::cout << j_object << '\n'; std::cout << j_array << '\n'; std::cout << j_string << '\n'; } json-3.11.3/docs/examples/erase__IteratorType_IteratorType.output000066400000000000000000000000471453145653700253020ustar00rootroot00000000000000null null null {"one":1} [1,8,16] null json-3.11.3/docs/examples/erase__keytype.c++17.cpp000066400000000000000000000007221453145653700215670ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create a JSON object json j_object = {{"one", 1}, {"two", 2}}; // call erase() auto count_one = j_object.erase("one"sv); auto count_three = j_object.erase("three"sv); // print values std::cout << j_object << '\n'; std::cout << count_one << " " << count_three << '\n'; } json-3.11.3/docs/examples/erase__keytype.c++17.output000066400000000000000000000000161453145653700223410ustar00rootroot00000000000000{"two":2} 1 0 json-3.11.3/docs/examples/erase__object_t_key_type.cpp000066400000000000000000000006141453145653700230600ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON object json j_object = {{"one", 1}, {"two", 2}}; // call erase() auto count_one = j_object.erase("one"); auto count_three = j_object.erase("three"); // print values std::cout << j_object << '\n'; std::cout << count_one << " " << count_three << '\n'; } json-3.11.3/docs/examples/erase__object_t_key_type.output000066400000000000000000000000161453145653700236320ustar00rootroot00000000000000{"two":2} 1 0 json-3.11.3/docs/examples/erase__size_type.cpp000066400000000000000000000004031453145653700213650ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json j_array = {0, 1, 2, 3, 4, 5}; // call erase() j_array.erase(2); // print values std::cout << j_array << '\n'; } json-3.11.3/docs/examples/erase__size_type.output000066400000000000000000000000141453145653700221410ustar00rootroot00000000000000[0,1,3,4,5] json-3.11.3/docs/examples/error_handler_t.cpp000066400000000000000000000012221453145653700212050ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON value with invalid UTF-8 byte sequence json j_invalid = "ä\xA9ü"; try { std::cout << j_invalid.dump() << std::endl; } catch (const json::type_error& e) { std::cout << e.what() << std::endl; } std::cout << "string with replaced invalid characters: " << j_invalid.dump(-1, ' ', false, json::error_handler_t::replace) << "\nstring with ignored invalid characters: " << j_invalid.dump(-1, ' ', false, json::error_handler_t::ignore) << '\n'; } json-3.11.3/docs/examples/error_handler_t.output000066400000000000000000000002461453145653700217700ustar00rootroot00000000000000[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9 string with replaced invalid characters: "ä�ü" string with ignored invalid characters: "äü" json-3.11.3/docs/examples/exception.cpp000066400000000000000000000006661453145653700200450ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { try { // calling at() for a non-existing key json j = {{"foo", "bar"}}; json k = j.at("non-existing"); } catch (const json::exception& e) { // output exception information std::cout << "message: " << e.what() << '\n' << "exception id: " << e.id << std::endl; } } json-3.11.3/docs/examples/exception.output000066400000000000000000000001321453145653700206070ustar00rootroot00000000000000message: [json.exception.out_of_range.403] key 'non-existing' not found exception id: 403 json-3.11.3/docs/examples/find__keytype.c++17.cpp000066400000000000000000000011511453145653700214050ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create a JSON object json j_object = {{"one", 1}, {"two", 2}}; // call find auto it_two = j_object.find("two"sv); auto it_three = j_object.find("three"sv); // print values std::cout << std::boolalpha; std::cout << "\"two\" was found: " << (it_two != j_object.end()) << '\n'; std::cout << "value at key \"two\": " << *it_two << '\n'; std::cout << "\"three\" was found: " << (it_three != j_object.end()) << '\n'; } json-3.11.3/docs/examples/find__keytype.c++17.output000066400000000000000000000001051453145653700221610ustar00rootroot00000000000000"two" was found: true value at key "two": 2 "three" was found: false json-3.11.3/docs/examples/find__object_t_key_type.cpp000066400000000000000000000010431453145653700226760ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON object json j_object = {{"one", 1}, {"two", 2}}; // call find auto it_two = j_object.find("two"); auto it_three = j_object.find("three"); // print values std::cout << std::boolalpha; std::cout << "\"two\" was found: " << (it_two != j_object.end()) << '\n'; std::cout << "value at key \"two\": " << *it_two << '\n'; std::cout << "\"three\" was found: " << (it_three != j_object.end()) << '\n'; } json-3.11.3/docs/examples/find__object_t_key_type.output000066400000000000000000000001051453145653700234520ustar00rootroot00000000000000"two" was found: true value at key "two": 2 "three" was found: false json-3.11.3/docs/examples/flatten.cpp000066400000000000000000000011261453145653700174740ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create JSON value json j = { {"pi", 3.141}, {"happy", true}, {"name", "Niels"}, {"nothing", nullptr}, { "answer", { {"everything", 42} } }, {"list", {1, 0, 2}}, { "object", { {"currency", "USD"}, {"value", 42.99} } } }; // call flatten() std::cout << std::setw(4) << j.flatten() << '\n'; } json-3.11.3/docs/examples/flatten.output000066400000000000000000000003441453145653700202530ustar00rootroot00000000000000{ "/answer/everything": 42, "/happy": true, "/list/0": 1, "/list/1": 0, "/list/2": 2, "/name": "Niels", "/nothing": null, "/object/currency": "USD", "/object/value": 42.99, "/pi": 3.141 } json-3.11.3/docs/examples/from_bjdata.cpp000066400000000000000000000010761453145653700203130ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create byte vector std::vector v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D }; // deserialize it with BJData json j = json::from_bjdata(v); // print the deserialized JSON value std::cout << std::setw(2) << j << std::endl; } json-3.11.3/docs/examples/from_bjdata.output000066400000000000000000000000451453145653700210640ustar00rootroot00000000000000{ "compact": true, "schema": 0 } json-3.11.3/docs/examples/from_bson.cpp000066400000000000000000000011731453145653700200250ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create byte vector std::vector v = {0x1b, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // deserialize it with BSON json j = json::from_bson(v); // print the deserialized JSON value std::cout << std::setw(2) << j << std::endl; } json-3.11.3/docs/examples/from_bson.output000066400000000000000000000000451453145653700206000ustar00rootroot00000000000000{ "compact": true, "schema": 0 } json-3.11.3/docs/examples/from_cbor.cpp000066400000000000000000000010421453145653700200040ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create byte vector std::vector v = {0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x00 }; // deserialize it with CBOR json j = json::from_cbor(v); // print the deserialized JSON value std::cout << std::setw(2) << j << std::endl; } json-3.11.3/docs/examples/from_cbor.output000066400000000000000000000000451453145653700205640ustar00rootroot00000000000000{ "compact": true, "schema": 0 } json-3.11.3/docs/examples/from_json__default_constructible.cpp000066400000000000000000000012301453145653700246320ustar00rootroot00000000000000#include #include using json = nlohmann::json; namespace ns { // a simple struct to model a person struct person { std::string name; std::string address; int age; }; } // namespace ns namespace ns { void from_json(const json& j, person& p) { j.at("name").get_to(p.name); j.at("address").get_to(p.address); j.at("age").get_to(p.age); } } // namespace ns int main() { json j; j["name"] = "Ned Flanders"; j["address"] = "744 Evergreen Terrace"; j["age"] = 60; auto p = j.template get(); std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl; } json-3.11.3/docs/examples/from_json__default_constructible.output000066400000000000000000000000611453145653700254110ustar00rootroot00000000000000Ned Flanders (60) lives in 744 Evergreen Terrace json-3.11.3/docs/examples/from_json__non_default_constructible.cpp000066400000000000000000000022361453145653700255130ustar00rootroot00000000000000#include #include using json = nlohmann::json; namespace ns { // a simple struct to model a person (not default constructible) struct person { person(std::string n, std::string a, int aa) : name(std::move(n)), address(std::move(a)), age(aa) {} std::string name; std::string address; int age; }; } // namespace ns namespace nlohmann { template <> struct adl_serializer { static ns::person from_json(const json& j) { return {j.at("name"), j.at("address"), j.at("age")}; } // Here's the catch! You must provide a to_json method! Otherwise, you // will not be able to convert person to json, since you fully // specialized adl_serializer on that type static void to_json(json& j, ns::person p) { j["name"] = p.name; j["address"] = p.address; j["age"] = p.age; } }; } // namespace nlohmann int main() { json j; j["name"] = "Ned Flanders"; j["address"] = "744 Evergreen Terrace"; j["age"] = 60; auto p = j.template get(); std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl; } json-3.11.3/docs/examples/from_json__non_default_constructible.output000066400000000000000000000000611453145653700262630ustar00rootroot00000000000000Ned Flanders (60) lives in 744 Evergreen Terrace json-3.11.3/docs/examples/from_msgpack.cpp000066400000000000000000000010541453145653700205070ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create byte vector std::vector v = {0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x00 }; // deserialize it with MessagePack json j = json::from_msgpack(v); // print the deserialized JSON value std::cout << std::setw(2) << j << std::endl; } json-3.11.3/docs/examples/from_msgpack.output000066400000000000000000000000451453145653700212640ustar00rootroot00000000000000{ "compact": true, "schema": 0 } json-3.11.3/docs/examples/from_ubjson.cpp000066400000000000000000000010761453145653700203660ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create byte vector std::vector v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D }; // deserialize it with UBJSON json j = json::from_ubjson(v); // print the deserialized JSON value std::cout << std::setw(2) << j << std::endl; } json-3.11.3/docs/examples/from_ubjson.output000066400000000000000000000000451453145653700211370ustar00rootroot00000000000000{ "compact": true, "schema": 0 } json-3.11.3/docs/examples/front.cpp000066400000000000000000000016671453145653700172010ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_object_empty(json::value_t::object); json j_array = {1, 2, 4, 8, 16}; json j_array_empty(json::value_t::array); json j_string = "Hello, world"; // call front() //std::cout << j_null.front() << '\n'; // would throw std::cout << j_boolean.front() << '\n'; std::cout << j_number_integer.front() << '\n'; std::cout << j_number_float.front() << '\n'; std::cout << j_object.front() << '\n'; //std::cout << j_object_empty.front() << '\n'; // undefined behavior std::cout << j_array.front() << '\n'; //std::cout << j_array_empty.front() << '\n'; // undefined behavior std::cout << j_string.front() << '\n'; } json-3.11.3/docs/examples/front.output000066400000000000000000000000411453145653700177400ustar00rootroot00000000000000true 17 23.42 1 1 "Hello, world" json-3.11.3/docs/examples/get__PointerType.cpp000066400000000000000000000012321453145653700213150ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON number json value = 17; // explicitly getting pointers auto p1 = value.template get(); auto p2 = value.template get(); auto p3 = value.template get(); auto p4 = value.template get(); auto p5 = value.template get(); // print the pointees std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\n'; std::cout << std::boolalpha << (p5 == nullptr) << '\n'; } json-3.11.3/docs/examples/get__PointerType.output000066400000000000000000000000211453145653700220660ustar00rootroot0000000000000017 17 17 17 true json-3.11.3/docs/examples/get__ValueType_const.cpp000066400000000000000000000026111453145653700221610ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create a JSON value with different types json json_types = { {"boolean", true}, { "number", { {"integer", 42}, {"floating-point", 17.23} } }, {"string", "Hello, world!"}, {"array", {1, 2, 3, 4, 5}}, {"null", nullptr} }; // use explicit conversions auto v1 = json_types["boolean"].template get(); auto v2 = json_types["number"]["integer"].template get(); auto v3 = json_types["number"]["integer"].template get(); auto v4 = json_types["number"]["floating-point"].template get(); auto v5 = json_types["number"]["floating-point"].template get(); auto v6 = json_types["string"].template get(); auto v7 = json_types["array"].template get>(); auto v8 = json_types.template get>(); // print the conversion results std::cout << v1 << '\n'; std::cout << v2 << ' ' << v3 << '\n'; std::cout << v4 << ' ' << v5 << '\n'; std::cout << v6 << '\n'; for (auto i : v7) { std::cout << i << ' '; } std::cout << "\n\n"; for (auto i : v8) { std::cout << i.first << ": " << i.second << '\n'; } } json-3.11.3/docs/examples/get__ValueType_const.output000066400000000000000000000002351453145653700227370ustar00rootroot000000000000001 42 42 17.23 17 Hello, world! 1 2 3 4 5 string: "Hello, world!" number: {"floating-point":17.23,"integer":42} null: null boolean: true array: [1,2,3,4,5] json-3.11.3/docs/examples/get_allocator.cpp000066400000000000000000000006211453145653700206550ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { auto alloc = json::get_allocator(); using traits_t = std::allocator_traits; json* j = traits_t::allocate(alloc, 1); traits_t::construct(alloc, j, "Hello, world!"); std::cout << *j << std::endl; traits_t::destroy(alloc, j); traits_t::deallocate(alloc, j, 1); } json-3.11.3/docs/examples/get_allocator.output000066400000000000000000000000201453145653700214240ustar00rootroot00000000000000"Hello, world!" json-3.11.3/docs/examples/get_binary.cpp000066400000000000000000000006301453145653700201610ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a binary vector std::vector vec = {0xCA, 0xFE, 0xBA, 0xBE}; // create a binary JSON value with subtype 42 json j = json::binary(vec, 42); // output type and subtype std::cout << "type: " << j.type_name() << ", subtype: " << j.get_binary().subtype() << std::endl; } json-3.11.3/docs/examples/get_binary.output000066400000000000000000000000321453145653700207330ustar00rootroot00000000000000type: binary, subtype: 42 json-3.11.3/docs/examples/get_ptr.cpp000066400000000000000000000012011453145653700174750ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON number json value = 17; // explicitly getting pointers auto p1 = value.get_ptr(); auto p2 = value.get_ptr(); auto p3 = value.get_ptr(); auto p4 = value.get_ptr(); auto p5 = value.get_ptr(); // print the pointees std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\n'; std::cout << std::boolalpha << (p5 == nullptr) << '\n'; } json-3.11.3/docs/examples/get_ptr.output000066400000000000000000000000211453145653700202520ustar00rootroot0000000000000017 17 17 17 true json-3.11.3/docs/examples/get_ref.cpp000066400000000000000000000011031453145653700174450ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON number json value = 17; // explicitly getting references auto r1 = value.get_ref(); auto r2 = value.get_ref(); // print the values std::cout << r1 << ' ' << r2 << '\n'; // incompatible type throws exception try { auto r3 = value.get_ref(); } catch (const json::type_error& ex) { std::cout << ex.what() << '\n'; } } json-3.11.3/docs/examples/get_ref.output000066400000000000000000000001441453145653700202270ustar00rootroot0000000000000017 17 [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number json-3.11.3/docs/examples/get_to.cpp000066400000000000000000000025221453145653700173210ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create a JSON value with different types json json_types = { {"boolean", true}, { "number", { {"integer", 42}, {"floating-point", 17.23} } }, {"string", "Hello, world!"}, {"array", {1, 2, 3, 4, 5}}, {"null", nullptr} }; bool v1; int v2; short v3; float v4; int v5; std::string v6; std::vector v7; std::unordered_map v8; // use explicit conversions json_types["boolean"].get_to(v1); json_types["number"]["integer"].get_to(v2); json_types["number"]["integer"].get_to(v3); json_types["number"]["floating-point"].get_to(v4); json_types["number"]["floating-point"].get_to(v5); json_types["string"].get_to(v6); json_types["array"].get_to(v7); json_types.get_to(v8); // print the conversion results std::cout << v1 << '\n'; std::cout << v2 << ' ' << v3 << '\n'; std::cout << v4 << ' ' << v5 << '\n'; std::cout << v6 << '\n'; for (auto i : v7) { std::cout << i << ' '; } std::cout << "\n\n"; for (auto i : v8) { std::cout << i.first << ": " << i.second << '\n'; } } json-3.11.3/docs/examples/get_to.output000066400000000000000000000002351453145653700200760ustar00rootroot000000000000001 42 42 17.23 17 Hello, world! 1 2 3 4 5 string: "Hello, world!" number: {"floating-point":17.23,"integer":42} null: null boolean: true array: [1,2,3,4,5] json-3.11.3/docs/examples/insert.cpp000066400000000000000000000005401453145653700173420ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json v = {1, 2, 3, 4}; // insert number 10 before number 3 auto new_pos = v.insert(v.begin() + 2, 10); // output new array and result of insert call std::cout << *new_pos << '\n'; std::cout << v << '\n'; } json-3.11.3/docs/examples/insert.output000066400000000000000000000000201453145653700201110ustar00rootroot0000000000000010 [1,2,10,3,4] json-3.11.3/docs/examples/insert__count.cpp000066400000000000000000000005641453145653700207170ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json v = {1, 2, 3, 4}; // insert number 7 copies of number 7 before number 3 auto new_pos = v.insert(v.begin() + 2, 7, 7); // output new array and result of insert call std::cout << *new_pos << '\n'; std::cout << v << '\n'; } json-3.11.3/docs/examples/insert__count.output000066400000000000000000000000321453145653700214630ustar00rootroot000000000000007 [1,2,7,7,7,7,7,7,7,3,4] json-3.11.3/docs/examples/insert__ilist.cpp000066400000000000000000000005571453145653700207150ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json v = {1, 2, 3, 4}; // insert range from v2 before the end of array v auto new_pos = v.insert(v.end(), {7, 8, 9}); // output new array and result of insert call std::cout << *new_pos << '\n'; std::cout << v << '\n'; } json-3.11.3/docs/examples/insert__ilist.output000066400000000000000000000000221453145653700214560ustar00rootroot000000000000007 [1,2,3,4,7,8,9] json-3.11.3/docs/examples/insert__range.cpp000066400000000000000000000007311453145653700206570ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json v = {1, 2, 3, 4}; // create a JSON array to copy values from json v2 = {"one", "two", "three", "four"}; // insert range from v2 before the end of array v auto new_pos = v.insert(v.end(), v2.begin(), v2.end()); // output new array and result of insert call std::cout << *new_pos << '\n'; std::cout << v << '\n'; } json-3.11.3/docs/examples/insert__range.output000066400000000000000000000000531453145653700214320ustar00rootroot00000000000000"one" [1,2,3,4,"one","two","three","four"] json-3.11.3/docs/examples/insert__range_object.cpp000066400000000000000000000007111453145653700222030ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create two JSON objects json j1 = {{"one", "eins"}, {"two", "zwei"}}; json j2 = {{"eleven", "elf"}, {"seventeen", "siebzehn"}}; // output objects std::cout << j1 << '\n'; std::cout << j2 << '\n'; // insert range from j2 to j1 j1.insert(j2.begin(), j2.end()); // output result of insert call std::cout << j1 << '\n'; } json-3.11.3/docs/examples/insert__range_object.output000066400000000000000000000002061453145653700227600ustar00rootroot00000000000000{"one":"eins","two":"zwei"} {"eleven":"elf","seventeen":"siebzehn"} {"eleven":"elf","one":"eins","seventeen":"siebzehn","two":"zwei"} json-3.11.3/docs/examples/invalid_iterator.cpp000066400000000000000000000007331453145653700214010ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { try { // calling iterator::key() on non-object iterator json j = "string"; json::iterator it = j.begin(); auto k = it.key(); } catch (const json::invalid_iterator& e) { // output exception information std::cout << "message: " << e.what() << '\n' << "exception id: " << e.id << std::endl; } } json-3.11.3/docs/examples/invalid_iterator.output000066400000000000000000000001531453145653700221530ustar00rootroot00000000000000message: [json.exception.invalid_iterator.207] cannot use key() for non-object iterators exception id: 207 json-3.11.3/docs/examples/is_array.cpp000066400000000000000000000016671453145653700176620ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_array() std::cout << std::boolalpha; std::cout << j_null.is_array() << '\n'; std::cout << j_boolean.is_array() << '\n'; std::cout << j_number_integer.is_array() << '\n'; std::cout << j_number_unsigned_integer.is_array() << '\n'; std::cout << j_number_float.is_array() << '\n'; std::cout << j_object.is_array() << '\n'; std::cout << j_array.is_array() << '\n'; std::cout << j_string.is_array() << '\n'; std::cout << j_binary.is_array() << '\n'; } json-3.11.3/docs/examples/is_array.output000066400000000000000000000000651453145653700204270ustar00rootroot00000000000000false false false false false false true false false json-3.11.3/docs/examples/is_binary.cpp000066400000000000000000000017011453145653700200150ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_binary() std::cout << std::boolalpha; std::cout << j_null.is_binary() << '\n'; std::cout << j_boolean.is_binary() << '\n'; std::cout << j_number_integer.is_binary() << '\n'; std::cout << j_number_unsigned_integer.is_binary() << '\n'; std::cout << j_number_float.is_binary() << '\n'; std::cout << j_object.is_binary() << '\n'; std::cout << j_array.is_binary() << '\n'; std::cout << j_string.is_binary() << '\n'; std::cout << j_binary.is_binary() << '\n'; } json-3.11.3/docs/examples/is_binary.output000066400000000000000000000000651453145653700205750ustar00rootroot00000000000000false false false false false false false false true json-3.11.3/docs/examples/is_boolean.cpp000066400000000000000000000017131453145653700201530ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_boolean() std::cout << std::boolalpha; std::cout << j_null.is_boolean() << '\n'; std::cout << j_boolean.is_boolean() << '\n'; std::cout << j_number_integer.is_boolean() << '\n'; std::cout << j_number_unsigned_integer.is_boolean() << '\n'; std::cout << j_number_float.is_boolean() << '\n'; std::cout << j_object.is_boolean() << '\n'; std::cout << j_array.is_boolean() << '\n'; std::cout << j_string.is_boolean() << '\n'; std::cout << j_binary.is_boolean() << '\n'; } json-3.11.3/docs/examples/is_boolean.output000066400000000000000000000000651453145653700207300ustar00rootroot00000000000000false true false false false false false false false json-3.11.3/docs/examples/is_discarded.cpp000066400000000000000000000017371453145653700204640ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_discarded() std::cout << std::boolalpha; std::cout << j_null.is_discarded() << '\n'; std::cout << j_boolean.is_discarded() << '\n'; std::cout << j_number_integer.is_discarded() << '\n'; std::cout << j_number_unsigned_integer.is_discarded() << '\n'; std::cout << j_number_float.is_discarded() << '\n'; std::cout << j_object.is_discarded() << '\n'; std::cout << j_array.is_discarded() << '\n'; std::cout << j_string.is_discarded() << '\n'; std::cout << j_binary.is_discarded() << '\n'; } json-3.11.3/docs/examples/is_discarded.output000066400000000000000000000000661453145653700212340ustar00rootroot00000000000000false false false false false false false false false json-3.11.3/docs/examples/is_null.cpp000066400000000000000000000016551453145653700175130ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_null() std::cout << std::boolalpha; std::cout << j_null.is_null() << '\n'; std::cout << j_boolean.is_null() << '\n'; std::cout << j_number_integer.is_null() << '\n'; std::cout << j_number_unsigned_integer.is_null() << '\n'; std::cout << j_number_float.is_null() << '\n'; std::cout << j_object.is_null() << '\n'; std::cout << j_array.is_null() << '\n'; std::cout << j_string.is_null() << '\n'; std::cout << j_binary.is_null() << '\n'; } json-3.11.3/docs/examples/is_null.output000066400000000000000000000000651453145653700202630ustar00rootroot00000000000000true false false false false false false false false json-3.11.3/docs/examples/is_number.cpp000066400000000000000000000017011453145653700200210ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_number() std::cout << std::boolalpha; std::cout << j_null.is_number() << '\n'; std::cout << j_boolean.is_number() << '\n'; std::cout << j_number_integer.is_number() << '\n'; std::cout << j_number_unsigned_integer.is_number() << '\n'; std::cout << j_number_float.is_number() << '\n'; std::cout << j_object.is_number() << '\n'; std::cout << j_array.is_number() << '\n'; std::cout << j_string.is_number() << '\n'; std::cout << j_binary.is_number() << '\n'; } json-3.11.3/docs/examples/is_number.output000066400000000000000000000000631453145653700205770ustar00rootroot00000000000000false false true true true false false false false json-3.11.3/docs/examples/is_number_float.cpp000066400000000000000000000017751453145653700212210ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_number_float() std::cout << std::boolalpha; std::cout << j_null.is_number_float() << '\n'; std::cout << j_boolean.is_number_float() << '\n'; std::cout << j_number_integer.is_number_float() << '\n'; std::cout << j_number_unsigned_integer.is_number_float() << '\n'; std::cout << j_number_float.is_number_float() << '\n'; std::cout << j_object.is_number_float() << '\n'; std::cout << j_array.is_number_float() << '\n'; std::cout << j_string.is_number_float() << '\n'; std::cout << j_binary.is_number_float() << '\n'; } json-3.11.3/docs/examples/is_number_float.output000066400000000000000000000000651453145653700217660ustar00rootroot00000000000000false false false false true false false false false json-3.11.3/docs/examples/is_number_integer.cpp000066400000000000000000000020211453145653700215320ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_number_integer() std::cout << std::boolalpha; std::cout << j_null.is_number_integer() << '\n'; std::cout << j_boolean.is_number_integer() << '\n'; std::cout << j_number_integer.is_number_integer() << '\n'; std::cout << j_number_unsigned_integer.is_number_integer() << '\n'; std::cout << j_number_float.is_number_integer() << '\n'; std::cout << j_object.is_number_integer() << '\n'; std::cout << j_array.is_number_integer() << '\n'; std::cout << j_string.is_number_integer() << '\n'; std::cout << j_binary.is_number_integer() << '\n'; } json-3.11.3/docs/examples/is_number_integer.output000066400000000000000000000000641453145653700223150ustar00rootroot00000000000000false false true true false false false false false json-3.11.3/docs/examples/is_number_unsigned.cpp000066400000000000000000000020331453145653700217140ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_unsigned_integer = 12345678987654321u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_number_unsigned() std::cout << std::boolalpha; std::cout << j_null.is_number_unsigned() << '\n'; std::cout << j_boolean.is_number_unsigned() << '\n'; std::cout << j_number_integer.is_number_unsigned() << '\n'; std::cout << j_number_unsigned_integer.is_number_unsigned() << '\n'; std::cout << j_number_float.is_number_unsigned() << '\n'; std::cout << j_object.is_number_unsigned() << '\n'; std::cout << j_array.is_number_unsigned() << '\n'; std::cout << j_string.is_number_unsigned() << '\n'; std::cout << j_binary.is_number_unsigned() << '\n'; } json-3.11.3/docs/examples/is_number_unsigned.output000066400000000000000000000000651453145653700224750ustar00rootroot00000000000000false false false true false false false false false json-3.11.3/docs/examples/is_object.cpp000066400000000000000000000017011453145653700177770ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_number_unsigned_integer = 12345678987654321u; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_object() std::cout << std::boolalpha; std::cout << j_null.is_object() << '\n'; std::cout << j_boolean.is_object() << '\n'; std::cout << j_number_integer.is_object() << '\n'; std::cout << j_number_unsigned_integer.is_object() << '\n'; std::cout << j_number_float.is_object() << '\n'; std::cout << j_object.is_object() << '\n'; std::cout << j_array.is_object() << '\n'; std::cout << j_string.is_object() << '\n'; std::cout << j_binary.is_object() << '\n'; } json-3.11.3/docs/examples/is_object.output000066400000000000000000000000651453145653700205570ustar00rootroot00000000000000false false false false false true false false false json-3.11.3/docs/examples/is_primitive.cpp000066400000000000000000000017371453145653700205520ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_number_unsigned_integer = 12345678987654321u; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_primitive() std::cout << std::boolalpha; std::cout << j_null.is_primitive() << '\n'; std::cout << j_boolean.is_primitive() << '\n'; std::cout << j_number_integer.is_primitive() << '\n'; std::cout << j_number_unsigned_integer.is_primitive() << '\n'; std::cout << j_number_float.is_primitive() << '\n'; std::cout << j_object.is_primitive() << '\n'; std::cout << j_array.is_primitive() << '\n'; std::cout << j_string.is_primitive() << '\n'; std::cout << j_binary.is_primitive() << '\n'; } json-3.11.3/docs/examples/is_primitive.output000066400000000000000000000000571453145653700213220ustar00rootroot00000000000000true true true true true false false true true json-3.11.3/docs/examples/is_string.cpp000066400000000000000000000017011453145653700200370ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_number_unsigned_integer = 12345678987654321u; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_string() std::cout << std::boolalpha; std::cout << j_null.is_string() << '\n'; std::cout << j_boolean.is_string() << '\n'; std::cout << j_number_integer.is_string() << '\n'; std::cout << j_number_unsigned_integer.is_string() << '\n'; std::cout << j_number_float.is_string() << '\n'; std::cout << j_object.is_string() << '\n'; std::cout << j_array.is_string() << '\n'; std::cout << j_string.is_string() << '\n'; std::cout << j_binary.is_string() << '\n'; } json-3.11.3/docs/examples/is_string.output000066400000000000000000000000651453145653700206170ustar00rootroot00000000000000false false false false false false false true false json-3.11.3/docs/examples/is_structured.cpp000066400000000000000000000017511453145653700207420ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_number_unsigned_integer = 12345678987654321u; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; json j_binary = json::binary({1, 2, 3}); // call is_structured() std::cout << std::boolalpha; std::cout << j_null.is_structured() << '\n'; std::cout << j_boolean.is_structured() << '\n'; std::cout << j_number_integer.is_structured() << '\n'; std::cout << j_number_unsigned_integer.is_structured() << '\n'; std::cout << j_number_float.is_structured() << '\n'; std::cout << j_object.is_structured() << '\n'; std::cout << j_array.is_structured() << '\n'; std::cout << j_string.is_structured() << '\n'; std::cout << j_binary.is_structured() << '\n'; } json-3.11.3/docs/examples/is_structured.output000066400000000000000000000000641453145653700215140ustar00rootroot00000000000000false false false false false true true false false json-3.11.3/docs/examples/items.cpp000066400000000000000000000010021453145653700171510ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; // example for an object for (auto& x : j_object.items()) { std::cout << "key: " << x.key() << ", value: " << x.value() << '\n'; } // example for an array for (auto& x : j_array.items()) { std::cout << "key: " << x.key() << ", value: " << x.value() << '\n'; } } json-3.11.3/docs/examples/items.output000066400000000000000000000001741453145653700177400ustar00rootroot00000000000000key: one, value: 1 key: two, value: 2 key: 0, value: 1 key: 1, value: 2 key: 2, value: 4 key: 3, value: 8 key: 4, value: 16 json-3.11.3/docs/examples/json_base_class_t.cpp000066400000000000000000000042731453145653700215200ustar00rootroot00000000000000#include #include class visitor_adaptor_with_metadata { public: template void visit(const Fnc& fnc) const; int metadata = 42; private: template void do_visit(const Ptr& ptr, const Fnc& fnc) const; }; using json = nlohmann::basic_json < std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, nlohmann::adl_serializer, std::vector, visitor_adaptor_with_metadata >; template void visitor_adaptor_with_metadata::visit(const Fnc& fnc) const { do_visit(json::json_pointer{}, fnc); } template void visitor_adaptor_with_metadata::do_visit(const Ptr& ptr, const Fnc& fnc) const { using value_t = nlohmann::detail::value_t; const json& j = *static_cast(this); switch (j.type()) { case value_t::object: fnc(ptr, j); for (const auto& entry : j.items()) { entry.value().do_visit(ptr / entry.key(), fnc); } break; case value_t::array: fnc(ptr, j); for (std::size_t i = 0; i < j.size(); ++i) { j.at(i).do_visit(ptr / std::to_string(i), fnc); } break; case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: fnc(ptr, j); break; case value_t::discarded: default: break; } } int main() { // create a json object json j; j["null"]; j["object"]["uint"] = 1U; j["object"].metadata = 21; // visit and output j.visit( [&](const json::json_pointer & p, const json & j) { std::cout << (p.empty() ? std::string{"/"} : p.to_string()) << " - metadata = " << j.metadata << " -> " << j.dump() << '\n'; }); } json-3.11.3/docs/examples/json_base_class_t.output000066400000000000000000000002351453145653700222700ustar00rootroot00000000000000/ - metadata = 42 -> {"null":null,"object":{"uint":1}} /null - metadata = 42 -> null /object - metadata = 21 -> {"uint":1} /object/uint - metadata = 42 -> 1 json-3.11.3/docs/examples/json_lines.cpp000066400000000000000000000010711453145653700202010ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // JSON Lines (see https://jsonlines.org) std::stringstream input; input << R"({"name": "Gilbert", "wins": [["straight", "7♣"], ["one pair", "10♥"]]} {"name": "Alexa", "wins": [["two pair", "4♠"], ["two pair", "9♠"]]} {"name": "May", "wins": []} {"name": "Deloise", "wins": [["three of a kind", "5♣"]]} )"; std::string line; while (std::getline(input, line)) { std::cout << json::parse(line) << std::endl; } } json-3.11.3/docs/examples/json_lines.output000066400000000000000000000003271453145653700207620ustar00rootroot00000000000000{"name":"Gilbert","wins":[["straight","7♣"],["one pair","10♥"]]} {"name":"Alexa","wins":[["two pair","4♠"],["two pair","9♠"]]} {"name":"May","wins":[]} {"name":"Deloise","wins":[["three of a kind","5♣"]]} json-3.11.3/docs/examples/json_pointer.cpp000066400000000000000000000020401453145653700205440ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // correct JSON pointers json::json_pointer p1; json::json_pointer p2(""); json::json_pointer p3("/"); json::json_pointer p4("//"); json::json_pointer p5("/foo/bar"); json::json_pointer p6("/foo/bar/-"); json::json_pointer p7("/foo/~0"); json::json_pointer p8("/foo/~1"); // error: JSON pointer does not begin with a slash try { json::json_pointer p9("foo"); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } // error: JSON pointer uses escape symbol ~ not followed by 0 or 1 try { json::json_pointer p10("/foo/~"); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } // error: JSON pointer uses escape symbol ~ not followed by 0 or 1 try { json::json_pointer p11("/foo/~3"); } catch (const json::parse_error& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/json_pointer.output000066400000000000000000000004721453145653700213310ustar00rootroot00000000000000[json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo' [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' json-3.11.3/docs/examples/json_pointer__back.cpp000066400000000000000000000006451453145653700216740ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON Pointers json::json_pointer ptr1("/foo"); json::json_pointer ptr2("/foo/0"); // call empty() std::cout << "last reference token of \"" << ptr1 << "\" is \"" << ptr1.back() << "\"\n" << "last reference token of \"" << ptr2 << "\" is \"" << ptr2.back() << "\"" << std::endl; } json-3.11.3/docs/examples/json_pointer__back.output000066400000000000000000000001201453145653700224360ustar00rootroot00000000000000last reference token of "/foo" is "foo" last reference token of "/foo/0" is "0" json-3.11.3/docs/examples/json_pointer__empty.cpp000066400000000000000000000011031453145653700221200ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON Pointers json::json_pointer ptr0; json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); json::json_pointer ptr3("/foo/0"); // call empty() std::cout << std::boolalpha << "\"" << ptr0 << "\": " << ptr0.empty() << '\n' << "\"" << ptr1 << "\": " << ptr1.empty() << '\n' << "\"" << ptr2 << "\": " << ptr2.empty() << '\n' << "\"" << ptr3 << "\": " << ptr3.empty() << std::endl; } json-3.11.3/docs/examples/json_pointer__empty.output000066400000000000000000000000601453145653700226770ustar00rootroot00000000000000"": true "": true "/foo": false "/foo/0": false json-3.11.3/docs/examples/json_pointer__operator__equal.cpp000066400000000000000000000012051453145653700241460ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON pointers json::json_pointer ptr0; json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); // compare JSON pointers std::cout << std::boolalpha << "\"" << ptr0 << "\" == \"" << ptr0 << "\": " << (ptr0 == ptr0) << '\n' << "\"" << ptr0 << "\" == \"" << ptr1 << "\": " << (ptr0 == ptr1) << '\n' << "\"" << ptr1 << "\" == \"" << ptr2 << "\": " << (ptr1 == ptr2) << '\n' << "\"" << ptr2 << "\" == \"" << ptr2 << "\": " << (ptr2 == ptr2) << std::endl; } json-3.11.3/docs/examples/json_pointer__operator__equal.output000066400000000000000000000001111453145653700247170ustar00rootroot00000000000000"" == "": true "" == "": true "" == "/foo": false "/foo" == "/foo": true json-3.11.3/docs/examples/json_pointer__operator__equal_stringtype.cpp000066400000000000000000000016251453145653700264440ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // different JSON pointers json::json_pointer ptr0; json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); // different strings std::string str0(""); std::string str1("/foo"); std::string str2("bar"); // compare JSON pointers and strings std::cout << std::boolalpha << "\"" << ptr0 << "\" == \"" << str0 << "\": " << (ptr0 == str0) << '\n' << "\"" << str0 << "\" == \"" << ptr1 << "\": " << (str0 == ptr1) << '\n' << "\"" << ptr2 << "\" == \"" << str1 << "\": " << (ptr2 == str1) << std::endl; try { std::cout << "\"" << str2 << "\" == \"" << ptr2 << "\": " << (str2 == ptr2) << std::endl; } catch (const json::parse_error& ex) { std::cout << ex.what() << std::endl; } } json-3.11.3/docs/examples/json_pointer__operator__equal_stringtype.output000066400000000000000000000002701453145653700272150ustar00rootroot00000000000000"" == "": true "" == "": true "/foo" == "/foo": true "bar" == "/foo": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar' json-3.11.3/docs/examples/json_pointer__operator__notequal.cpp000066400000000000000000000012051453145653700246670ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON pointers json::json_pointer ptr0; json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); // compare JSON pointers std::cout << std::boolalpha << "\"" << ptr0 << "\" != \"" << ptr0 << "\": " << (ptr0 != ptr0) << '\n' << "\"" << ptr0 << "\" != \"" << ptr1 << "\": " << (ptr0 != ptr1) << '\n' << "\"" << ptr1 << "\" != \"" << ptr2 << "\": " << (ptr1 != ptr2) << '\n' << "\"" << ptr2 << "\" != \"" << ptr2 << "\": " << (ptr2 != ptr2) << std::endl; } json-3.11.3/docs/examples/json_pointer__operator__notequal.output000066400000000000000000000001131453145653700254420ustar00rootroot00000000000000"" != "": false "" != "": false "" != "/foo": true "/foo" != "/foo": false json-3.11.3/docs/examples/json_pointer__operator__notequal_stringtype.cpp000066400000000000000000000016001453145653700271560ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON pointers json::json_pointer ptr0; json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); // different strings std::string str0(""); std::string str1("/foo"); std::string str2("bar"); // compare JSON pointers and strings std::cout << std::boolalpha << "\"" << ptr0 << "\" != \"" << str0 << "\": " << (ptr0 != str0) << '\n' << "\"" << str0 << "\" != \"" << ptr1 << "\": " << (str0 != ptr1) << '\n' << "\"" << ptr2 << "\" != \"" << str1 << "\": " << (ptr2 != str1) << std::endl; try { std::cout << "\"" << str2 << "\" != \"" << ptr2 << "\": " << (str2 != ptr2) << std::endl; } catch (const json::parse_error& ex) { std::cout << ex.what() << std::endl; } } json-3.11.3/docs/examples/json_pointer__operator__notequal_stringtype.output000066400000000000000000000002731453145653700277410ustar00rootroot00000000000000"" != "": false "" != "": false "/foo" != "/foo": false "bar" != "/foo": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar' json-3.11.3/docs/examples/json_pointer__operator_add.cpp000066400000000000000000000007531453145653700234370ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON pointer json::json_pointer ptr("/foo"); std::cout << "\"" << ptr << "\"\n"; // append a JSON Pointer ptr /= json::json_pointer("/bar/baz"); std::cout << "\"" << ptr << "\"\n"; // append a string ptr /= "fob"; std::cout << "\"" << ptr << "\"\n"; // append an array index ptr /= 42; std::cout << "\"" << ptr << "\"" << std::endl; } json-3.11.3/docs/examples/json_pointer__operator_add.output000066400000000000000000000000771453145653700242140ustar00rootroot00000000000000"/foo" "/foo/bar/baz" "/foo/bar/baz/fob" "/foo/bar/baz/fob/42" json-3.11.3/docs/examples/json_pointer__operator_add_binary.cpp000066400000000000000000000006451453145653700250030ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON pointer json::json_pointer ptr("/foo"); // append a JSON Pointer std::cout << "\"" << ptr / json::json_pointer("/bar/baz") << "\"\n"; // append a string std::cout << "\"" << ptr / "fob" << "\"\n"; // append an array index std::cout << "\"" << ptr / 42 << "\"" << std::endl; } json-3.11.3/docs/examples/json_pointer__operator_add_binary.output000066400000000000000000000000441453145653700255520ustar00rootroot00000000000000"/foo/bar/baz" "/foo/fob" "/foo/42" json-3.11.3/docs/examples/json_pointer__operator_string_t.cpp000066400000000000000000000005231453145653700245330ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON Pointers json::json_pointer ptr1("/foo/0"); json::json_pointer ptr2("/a~1b"); // implicit conversion to string std::string s; s += ptr1; s += "\n"; s += ptr2; std::cout << s << std::endl; } json-3.11.3/docs/examples/json_pointer__operator_string_t.output000066400000000000000000000000151453145653700253050ustar00rootroot00000000000000/foo/0 /a~1b json-3.11.3/docs/examples/json_pointer__parent_pointer.cpp000066400000000000000000000011001453145653700240100ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON Pointers json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); json::json_pointer ptr3("/foo/0"); // call parent_pointer() std::cout << std::boolalpha << "parent of \"" << ptr1 << "\" is \"" << ptr1.parent_pointer() << "\"\n" << "parent of \"" << ptr2 << "\" is \"" << ptr2.parent_pointer() << "\"\n" << "parent of \"" << ptr3 << "\" is \"" << ptr3.parent_pointer() << "\"" << std::endl; } json-3.11.3/docs/examples/json_pointer__parent_pointer.output000066400000000000000000000001071453145653700245740ustar00rootroot00000000000000parent of "" is "" parent of "/foo" is "" parent of "/foo/0" is "/foo" json-3.11.3/docs/examples/json_pointer__pop_back.cpp000066400000000000000000000006421453145653700225470ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create empty JSON Pointer json::json_pointer ptr("/foo/bar/baz"); std::cout << "\"" << ptr << "\"\n"; // call pop_back() ptr.pop_back(); std::cout << "\"" << ptr << "\"\n"; ptr.pop_back(); std::cout << "\"" << ptr << "\"\n"; ptr.pop_back(); std::cout << "\"" << ptr << "\"\n"; } json-3.11.3/docs/examples/json_pointer__pop_back.output000066400000000000000000000000441453145653700233210ustar00rootroot00000000000000"/foo/bar/baz" "/foo/bar" "/foo" "" json-3.11.3/docs/examples/json_pointer__push_back.cpp000066400000000000000000000006431453145653700227310ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create empty JSON Pointer json::json_pointer ptr; std::cout << "\"" << ptr << "\"\n"; // call push_back() ptr.push_back("foo"); std::cout << "\"" << ptr << "\"\n"; ptr.push_back("0"); std::cout << "\"" << ptr << "\"\n"; ptr.push_back("bar"); std::cout << "\"" << ptr << "\"\n"; } json-3.11.3/docs/examples/json_pointer__push_back.output000066400000000000000000000000401453145653700234760ustar00rootroot00000000000000"" "/foo" "/foo/0" "/foo/0/bar" json-3.11.3/docs/examples/json_pointer__string_t.cpp000066400000000000000000000004571453145653700226260ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { json::json_pointer::string_t s = "This is a string."; std::cout << s << std::endl; std::cout << std::boolalpha << std::is_same::value << std::endl; } json-3.11.3/docs/examples/json_pointer__string_t.output000066400000000000000000000000271453145653700233750ustar00rootroot00000000000000This is a string. true json-3.11.3/docs/examples/json_pointer__to_string.cpp000066400000000000000000000022721453145653700230020ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // different JSON Pointers json::json_pointer ptr1(""); json::json_pointer ptr2("/foo"); json::json_pointer ptr3("/foo/0"); json::json_pointer ptr4("/"); json::json_pointer ptr5("/a~1b"); json::json_pointer ptr6("/c%d"); json::json_pointer ptr7("/e^f"); json::json_pointer ptr8("/g|h"); json::json_pointer ptr9("/i\\j"); json::json_pointer ptr10("/k\"l"); json::json_pointer ptr11("/ "); json::json_pointer ptr12("/m~0n"); std::cout << "\"" << ptr1.to_string() << "\"\n" << "\"" << ptr2.to_string() << "\"\n" << "\"" << ptr3.to_string() << "\"\n" << "\"" << ptr4.to_string() << "\"\n" << "\"" << ptr5.to_string() << "\"\n" << "\"" << ptr6.to_string() << "\"\n" << "\"" << ptr7.to_string() << "\"\n" << "\"" << ptr8.to_string() << "\"\n" << "\"" << ptr9.to_string() << "\"\n" << "\"" << ptr10.to_string() << "\"\n" << "\"" << ptr11.to_string() << "\"\n" << "\"" << ptr12.to_string() << "\"" << std::endl; } json-3.11.3/docs/examples/json_pointer__to_string.output000066400000000000000000000001171453145653700235540ustar00rootroot00000000000000"" "/foo" "/foo/0" "/" "/a~1b" "/c%d" "/e^f" "/g|h" "/i\j" "/k"l" "/ " "/m~0n" json-3.11.3/docs/examples/max_size.cpp000066400000000000000000000013031453145653700176530ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call max_size() std::cout << j_null.max_size() << '\n'; std::cout << j_boolean.max_size() << '\n'; std::cout << j_number_integer.max_size() << '\n'; std::cout << j_number_float.max_size() << '\n'; std::cout << j_object.max_size() << '\n'; std::cout << j_array.max_size() << '\n'; std::cout << j_string.max_size() << '\n'; } json-3.11.3/docs/examples/max_size.output000066400000000000000000000000601453145653700204300ustar00rootroot000000000000000 1 1 1 115292150460684697 576460752303423487 1 json-3.11.3/docs/examples/merge_patch.cpp000066400000000000000000000020071453145653700203140ustar00rootroot00000000000000#include #include #include // for std::setw using json = nlohmann::json; using namespace nlohmann::literals; int main() { // the original document json document = R"({ "title": "Goodbye!", "author": { "givenName": "John", "familyName": "Doe" }, "tags": [ "example", "sample" ], "content": "This will be unchanged" })"_json; // the patch json patch = R"({ "title": "Hello!", "phoneNumber": "+01-123-456-7890", "author": { "familyName": null }, "tags": [ "example" ] })"_json; // apply the patch document.merge_patch(patch); // output original and patched document std::cout << std::setw(4) << document << std::endl; } json-3.11.3/docs/examples/merge_patch.output000066400000000000000000000003041453145653700210700ustar00rootroot00000000000000{ "author": { "givenName": "John" }, "content": "This will be unchanged", "phoneNumber": "+01-123-456-7890", "tags": [ "example" ], "title": "Hello!" } json-3.11.3/docs/examples/meta.cpp000066400000000000000000000002741453145653700167700ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // call meta() std::cout << std::setw(4) << json::meta() << '\n'; } json-3.11.3/docs/examples/meta.output000066400000000000000000000005651453145653700175510ustar00rootroot00000000000000{ "compiler": { "c++": "201103", "family": "gcc", "version": "12.3.0" }, "copyright": "(C) 2013-2022 Niels Lohmann", "name": "JSON for Modern C++", "platform": "apple", "url": "https://github.com/nlohmann/json", "version": { "major": 3, "minor": 11, "patch": 3, "string": "3.11.3" } } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_explicit.cpp000066400000000000000000000032401453145653700262340ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { class person { private: std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; public: person() = default; person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t) { nlohmann_json_j["name"] = nlohmann_json_t.name; nlohmann_json_j["address"] = nlohmann_json_t.address; nlohmann_json_j["age"] = nlohmann_json_t.age; } friend void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t) { nlohmann_json_t.name = nlohmann_json_j.at("name"); nlohmann_json_t.address = nlohmann_json_j.at("address"); nlohmann_json_t.age = nlohmann_json_j.at("age"); } }; } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; try { auto p3 = j3.template get(); } catch (const json::exception& e) { std::cout << "deserialization failed: " << e.what() << std::endl; } } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_explicit.output000066400000000000000000000002401453145653700270070ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} deserialization failed: [json.exception.out_of_range.403] key 'age' not found json-3.11.3/docs/examples/nlohmann_define_type_intrusive_macro.cpp000066400000000000000000000022631453145653700255200ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { class person { private: std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; public: person() = default; person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age) }; } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; try { auto p3 = j3.template get(); } catch (const json::exception& e) { std::cout << "deserialization failed: " << e.what() << std::endl; } } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_macro.output000066400000000000000000000002401453145653700262670ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} deserialization failed: [json.exception.out_of_range.403] key 'age' not found json-3.11.3/docs/examples/nlohmann_define_type_intrusive_only_serialize_explicit.cpp000066400000000000000000000016271453145653700313530ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { class person { private: std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; public: // No default constructor person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t) { nlohmann_json_j["name"] = nlohmann_json_t.name; nlohmann_json_j["address"] = nlohmann_json_t.address; nlohmann_json_j["age"] = nlohmann_json_t.age; } }; } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_only_serialize_explicit.output000066400000000000000000000001221453145653700321160ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} json-3.11.3/docs/examples/nlohmann_define_type_intrusive_only_serialize_macro.cpp000066400000000000000000000013061453145653700306250ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { class person { private: std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; public: // No default constructor person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} NLOHMANN_DEFINE_TYPE_INTRUSIVE(person, name, address, age) }; } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_only_serialize_macro.output000066400000000000000000000001221453145653700313760ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} json-3.11.3/docs/examples/nlohmann_define_type_intrusive_with_default_explicit.cpp000066400000000000000000000033331453145653700307760ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { class person { private: std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; public: person() = default; person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} friend void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t) { nlohmann_json_j["name"] = nlohmann_json_t.name; nlohmann_json_j["address"] = nlohmann_json_t.address; nlohmann_json_j["age"] = nlohmann_json_t.age; } friend void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t) { person nlohmann_json_default_obj; nlohmann_json_t.name = nlohmann_json_j.value("name", nlohmann_json_default_obj.name); nlohmann_json_t.address = nlohmann_json_j.value("address", nlohmann_json_default_obj.address); nlohmann_json_t.age = nlohmann_json_j.value("age", nlohmann_json_default_obj.age); } }; } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; auto p3 = j3.template get(); std::cout << "roundtrip: " << json(p3) << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_with_default_explicit.output000066400000000000000000000002421453145653700315500ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} roundtrip: {"address":"742 Evergreen Terrace","age":-1,"name":"Maggie Simpson"} json-3.11.3/docs/examples/nlohmann_define_type_intrusive_with_default_macro.cpp000066400000000000000000000021461453145653700302570ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { class person { private: std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; public: person() = default; person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(person, name, address, age) }; } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; auto p3 = j3.template get(); std::cout << "roundtrip: " << json(p3) << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_intrusive_with_default_macro.output000066400000000000000000000002421453145653700310300ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} roundtrip: {"address":"742 Evergreen Terrace","age":-1,"name":"Maggie Simpson"} json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_explicit.cpp000066400000000000000000000026041453145653700271110ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { struct person { std::string name; std::string address; int age; }; void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t) { nlohmann_json_j["name"] = nlohmann_json_t.name; nlohmann_json_j["address"] = nlohmann_json_t.address; nlohmann_json_j["age"] = nlohmann_json_t.age; } void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t) { nlohmann_json_t.name = nlohmann_json_j.at("name"); nlohmann_json_t.address = nlohmann_json_j.at("address"); nlohmann_json_t.age = nlohmann_json_j.at("age"); } } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; try { auto p3 = j3.template get(); } catch (const json::exception& e) { std::cout << "deserialization failed: " << e.what() << std::endl; } } json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_explicit.output000066400000000000000000000002401453145653700276610ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} deserialization failed: [json.exception.out_of_range.403] key 'age' not found json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_macro.cpp000066400000000000000000000017251453145653700263740ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { struct person { std::string name; std::string address; int age; }; NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age) } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; try { auto p3 = j3.template get(); } catch (const json::exception& e) { std::cout << "deserialization failed: " << e.what() << std::endl; } } json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_macro.output000066400000000000000000000002401453145653700271410ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} deserialization failed: [json.exception.out_of_range.403] key 'age' not found json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_only_serialize_explicit.cpp000066400000000000000000000012241453145653700322160ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { struct person { std::string name; std::string address; int age; }; void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t) { nlohmann_json_j["name"] = nlohmann_json_t.name; nlohmann_json_j["address"] = nlohmann_json_t.address; nlohmann_json_j["age"] = nlohmann_json_t.age; } } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_only_serialize_explicit.output000066400000000000000000000001221453145653700327700ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_only_serialize_macro.cpp000066400000000000000000000007611453145653700315030ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { struct person { std::string name; std::string address; int age; }; NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(person, name, address, age) } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_only_serialize_macro.output000066400000000000000000000001221453145653700322500ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_with_default_explicit.cpp000066400000000000000000000032051453145653700316460ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { struct person { std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; person() = default; person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} }; void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t) { nlohmann_json_j["name"] = nlohmann_json_t.name; nlohmann_json_j["address"] = nlohmann_json_t.address; nlohmann_json_j["age"] = nlohmann_json_t.age; } void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t) { person nlohmann_json_default_obj; nlohmann_json_t.name = nlohmann_json_j.value("name", nlohmann_json_default_obj.name); nlohmann_json_t.address = nlohmann_json_j.value("address", nlohmann_json_default_obj.address); nlohmann_json_t.age = nlohmann_json_j.value("age", nlohmann_json_default_obj.age); } } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; auto p3 = j3.template get(); std::cout << "roundtrip: " << json(p3) << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_with_default_explicit.output000066400000000000000000000002421453145653700324220ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} roundtrip: {"address":"742 Evergreen Terrace","age":-1,"name":"Maggie Simpson"} json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_with_default_macro.cpp000066400000000000000000000021221453145653700311230ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; namespace ns { struct person { std::string name = "John Doe"; std::string address = "123 Fake St"; int age = -1; person() = default; person(std::string name_, std::string address_, int age_) : name(std::move(name_)), address(std::move(address_)), age(age_) {} }; NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(person, name, address, age) } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // serialization: person -> json json j = p; std::cout << "serialization: " << j << std::endl; // deserialization: json -> person json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json; auto p2 = j2.template get(); // incomplete deserialization: json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json; auto p3 = j3.template get(); std::cout << "roundtrip: " << json(p3) << std::endl; } json-3.11.3/docs/examples/nlohmann_define_type_non_intrusive_with_default_macro.output000066400000000000000000000002421453145653700317020ustar00rootroot00000000000000serialization: {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} roundtrip: {"address":"742 Evergreen Terrace","age":-1,"name":"Maggie Simpson"} json-3.11.3/docs/examples/nlohmann_json_namespace.cpp000066400000000000000000000005411453145653700227160ustar00rootroot00000000000000#include #include // possible use case: use NLOHMANN_JSON_NAMESPACE instead of nlohmann using json = NLOHMANN_JSON_NAMESPACE::json; // macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal #define Q(x) #x #define QUOTE(x) Q(x) int main() { std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl; } json-3.11.3/docs/examples/nlohmann_json_namespace.output000066400000000000000000000000331453145653700234700ustar00rootroot00000000000000nlohmann::json_abi_v3_11_3 json-3.11.3/docs/examples/nlohmann_json_namespace_begin.c++17.cpp000066400000000000000000000012571453145653700246060ustar00rootroot00000000000000#include #include #include // partial specialization (see https://json.nlohmann.me/features/arbitrary_types/) NLOHMANN_JSON_NAMESPACE_BEGIN template struct adl_serializer> { static void to_json(json& j, const std::optional& opt) { if (opt == std::nullopt) { j = nullptr; } else { j = *opt; } } }; NLOHMANN_JSON_NAMESPACE_END int main() { std::optional o1 = 1; std::optional o2 = std::nullopt; NLOHMANN_JSON_NAMESPACE::json j; j.push_back(o1); j.push_back(o2); std::cout << j << std::endl; } json-3.11.3/docs/examples/nlohmann_json_namespace_begin.c++17.output000066400000000000000000000000111453145653700253470ustar00rootroot00000000000000[1,null] json-3.11.3/docs/examples/nlohmann_json_namespace_no_version.cpp000066400000000000000000000004341453145653700251600ustar00rootroot00000000000000#include #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 1 #include // macro needed to output the NLOHMANN_JSON_NAMESPACE as string literal #define Q(x) #x #define QUOTE(x) Q(x) int main() { std::cout << QUOTE(NLOHMANN_JSON_NAMESPACE) << std::endl; } json-3.11.3/docs/examples/nlohmann_json_namespace_no_version.output000066400000000000000000000000231453145653700257300ustar00rootroot00000000000000nlohmann::json_abi json-3.11.3/docs/examples/nlohmann_json_serialize_enum.cpp000066400000000000000000000027161453145653700240030ustar00rootroot00000000000000#include #include using json = nlohmann::json; namespace ns { enum TaskState { TS_STOPPED, TS_RUNNING, TS_COMPLETED, TS_INVALID = -1 }; NLOHMANN_JSON_SERIALIZE_ENUM(TaskState, { { TS_INVALID, nullptr }, { TS_STOPPED, "stopped" }, { TS_RUNNING, "running" }, { TS_COMPLETED, "completed" } }) enum class Color { red, green, blue, unknown }; NLOHMANN_JSON_SERIALIZE_ENUM(Color, { { Color::unknown, "unknown" }, { Color::red, "red" }, { Color::green, "green" }, { Color::blue, "blue" } }) } // namespace ns int main() { // serialization json j_stopped = ns::TS_STOPPED; json j_red = ns::Color::red; std::cout << "ns::TS_STOPPED -> " << j_stopped << ", ns::Color::red -> " << j_red << std::endl; // deserialization json j_running = "running"; json j_blue = "blue"; auto running = j_running.template get(); auto blue = j_blue.template get(); std::cout << j_running << " -> " << running << ", " << j_blue << " -> " << static_cast(blue) << std::endl; // deserializing undefined JSON value to enum // (where the first map entry above is the default) json j_pi = 3.14; auto invalid = j_pi.template get(); auto unknown = j_pi.template get(); std::cout << j_pi << " -> " << invalid << ", " << j_pi << " -> " << static_cast(unknown) << std::endl; } json-3.11.3/docs/examples/nlohmann_json_serialize_enum.output000066400000000000000000000001471453145653700245550ustar00rootroot00000000000000ns::TS_STOPPED -> "stopped", ns::Color::red -> "red" "running" -> 1, "blue" -> 2 3.14 -> -1, 3.14 -> 3 json-3.11.3/docs/examples/nlohmann_json_serialize_enum_2.cpp000066400000000000000000000014521453145653700242200ustar00rootroot00000000000000#include #include using json = nlohmann::json; namespace ns { enum class Color { red, green, blue, unknown }; NLOHMANN_JSON_SERIALIZE_ENUM(Color, { { Color::unknown, "unknown" }, { Color::red, "red" }, { Color::green, "green" }, { Color::blue, "blue" }, { Color::red, "rot" } // a second conversion for Color::red }) } int main() { // serialization json j_red = ns::Color::red; std::cout << static_cast(ns::Color::red) << " -> " << j_red << std::endl; // deserialization json j_rot = "rot"; auto rot = j_rot.template get(); auto red = j_red.template get(); std::cout << j_rot << " -> " << static_cast(rot) << std::endl; std::cout << j_red << " -> " << static_cast(red) << std::endl; } json-3.11.3/docs/examples/nlohmann_json_serialize_enum_2.output000066400000000000000000000000411453145653700247670ustar00rootroot000000000000000 -> "red" "rot" -> 0 "red" -> 0 json-3.11.3/docs/examples/nlohmann_json_version.cpp000066400000000000000000000004621453145653700224510ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { std::cout << "JSON for Modern C++ version " << NLOHMANN_JSON_VERSION_MAJOR << "." << NLOHMANN_JSON_VERSION_MINOR << "." << NLOHMANN_JSON_VERSION_PATCH << std::endl; } json-3.11.3/docs/examples/nlohmann_json_version.output000066400000000000000000000000431453145653700232220ustar00rootroot00000000000000JSON for Modern C++ version 3.11.3 json-3.11.3/docs/examples/number_float_t.cpp000066400000000000000000000003251453145653700210370ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same::value << std::endl; } json-3.11.3/docs/examples/number_float_t.output000066400000000000000000000000051453145653700216100ustar00rootroot00000000000000true json-3.11.3/docs/examples/number_integer_t.cpp000066400000000000000000000003351453145653700213700ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same::value << std::endl; } json-3.11.3/docs/examples/number_integer_t.output000066400000000000000000000000051453145653700221400ustar00rootroot00000000000000true json-3.11.3/docs/examples/number_unsigned_t.cpp000066400000000000000000000003371453145653700215510ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same::value << std::endl; } json-3.11.3/docs/examples/number_unsigned_t.output000066400000000000000000000000051453145653700223170ustar00rootroot00000000000000true json-3.11.3/docs/examples/object.cpp000066400000000000000000000013031453145653700173020ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON objects json j_no_init_list = json::object(); json j_empty_init_list = json::object({}); json j_list_of_pairs = json::object({ {"one", 1}, {"two", 2} }); // serialize the JSON objects std::cout << j_no_init_list << '\n'; std::cout << j_empty_init_list << '\n'; std::cout << j_list_of_pairs << '\n'; // example for an exception try { // can only create an object from a list of pairs json j_invalid_object = json::object({{ "one", 1, 2 }}); } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/object.output000066400000000000000000000001431453145653700200610ustar00rootroot00000000000000{} {} {"one":1,"two":2} [json.exception.type_error.301] cannot create object from initializer list json-3.11.3/docs/examples/object_comparator_t.cpp000066400000000000000000000005711453145653700220620ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << "json::object_comparator_t(\"one\", \"two\") = " << json::object_comparator_t{}("one", "two") << "\n" << "json::object_comparator_t(\"three\", \"four\") = " << json::object_comparator_t{}("three", "four") << std::endl; } json-3.11.3/docs/examples/object_comparator_t.output000066400000000000000000000001421453145653700226320ustar00rootroot00000000000000json::object_comparator_t("one", "two") = true json::object_comparator_t("three", "four") = false json-3.11.3/docs/examples/object_t.cpp000066400000000000000000000003471453145653700176340ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same, json::object_t>::value << std::endl; } json-3.11.3/docs/examples/object_t.output000066400000000000000000000000051453145653700204010ustar00rootroot00000000000000true json-3.11.3/docs/examples/operator__ValueType.cpp000066400000000000000000000026271453145653700220360ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create a JSON value with different types json json_types = { {"boolean", true}, { "number", { {"integer", 42}, {"floating-point", 17.23} } }, {"string", "Hello, world!"}, {"array", {1, 2, 3, 4, 5}}, {"null", nullptr} }; // use implicit conversions bool v1 = json_types["boolean"]; int v2 = json_types["number"]["integer"]; short v3 = json_types["number"]["integer"]; float v4 = json_types["number"]["floating-point"]; int v5 = json_types["number"]["floating-point"]; std::string v6 = json_types["string"]; std::vector v7 = json_types["array"]; std::unordered_map v8 = json_types; // print the conversion results std::cout << v1 << '\n'; std::cout << v2 << ' ' << v3 << '\n'; std::cout << v4 << ' ' << v5 << '\n'; std::cout << v6 << '\n'; for (auto i : v7) { std::cout << i << ' '; } std::cout << "\n\n"; for (auto i : v8) { std::cout << i.first << ": " << i.second << '\n'; } // example for an exception try { bool v1 = json_types["string"]; } catch (const json::type_error& e) { std::cout << e.what() << '\n'; } } json-3.11.3/docs/examples/operator__ValueType.output000066400000000000000000000003411453145653700226030ustar00rootroot000000000000001 42 42 17.23 17 Hello, world! 1 2 3 4 5 string: "Hello, world!" number: {"floating-point":17.23,"integer":42} null: null boolean: true array: [1,2,3,4,5] [json.exception.type_error.302] type must be boolean, but is string json-3.11.3/docs/examples/operator__equal.cpp000066400000000000000000000014731453145653700212250ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number_1 = 17; json number_2 = 17.000000000000001L; json string_1 = "foo"; json string_2 = "bar"; // output values and comparisons std::cout << std::boolalpha; std::cout << array_1 << " == " << array_2 << " " << (array_1 == array_2) << '\n'; std::cout << object_1 << " == " << object_2 << " " << (object_1 == object_2) << '\n'; std::cout << number_1 << " == " << number_2 << " " << (number_1 == number_2) << '\n'; std::cout << string_1 << " == " << string_2 << " " << (string_1 == string_2) << '\n'; } json-3.11.3/docs/examples/operator__equal.output000066400000000000000000000001521453145653700217740ustar00rootroot00000000000000[1,2,3] == [1,2,4] false {"A":"a","B":"b"} == {"A":"a","B":"b"} true 17 == 17.0 true "foo" == "bar" false json-3.11.3/docs/examples/operator__equal__nullptr_t.cpp000066400000000000000000000012721453145653700234640ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array = {1, 2, 3}; json object = {{"A", "a"}, {"B", "b"}}; json number = 17; json string = "foo"; json null; // output values and comparisons std::cout << std::boolalpha; std::cout << array << " == nullptr " << (array == nullptr) << '\n'; std::cout << object << " == nullptr " << (object == nullptr) << '\n'; std::cout << number << " == nullptr " << (number == nullptr) << '\n'; std::cout << string << " == nullptr " << (string == nullptr) << '\n'; std::cout << null << " == nullptr " << (null == nullptr) << '\n'; } json-3.11.3/docs/examples/operator__equal__nullptr_t.output000066400000000000000000000001741453145653700242420ustar00rootroot00000000000000[1,2,3] == nullptr false {"A":"a","B":"b"} == nullptr false 17 == nullptr false "foo" == nullptr false null == nullptr true json-3.11.3/docs/examples/operator__equal__specializations.cpp000066400000000000000000000007321453145653700246420ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { nlohmann::json uj1 = {{"version", 1}, {"type", "integer"}}; nlohmann::json uj2 = {{"type", "integer"}, {"version", 1}}; nlohmann::ordered_json oj1 = {{"version", 1}, {"type", "integer"}}; nlohmann::ordered_json oj2 = {{"type", "integer"}, {"version", 1}}; std::cout << std::boolalpha << (uj1 == uj2) << '\n' << (oj1 == oj2) << std::endl; } json-3.11.3/docs/examples/operator__equal__specializations.output000066400000000000000000000000131453145653700254100ustar00rootroot00000000000000true false json-3.11.3/docs/examples/operator__greater.cpp000066400000000000000000000014611453145653700215440ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number_1 = 17; json number_2 = 17.0000000000001L; json string_1 = "foo"; json string_2 = "bar"; // output values and comparisons std::cout << std::boolalpha; std::cout << array_1 << " > " << array_2 << " " << (array_1 > array_2) << '\n'; std::cout << object_1 << " > " << object_2 << " " << (object_1 > object_2) << '\n'; std::cout << number_1 << " > " << number_2 << " " << (number_1 > number_2) << '\n'; std::cout << string_1 << " > " << string_2 << " " << (string_1 > string_2) << '\n'; } json-3.11.3/docs/examples/operator__greater.output000066400000000000000000000001631453145653700223200ustar00rootroot00000000000000[1,2,3] > [1,2,4] false {"A":"a","B":"b"} > {"A":"a","B":"b"} false 17 > 17.0000000000001 false "foo" > "bar" true json-3.11.3/docs/examples/operator__greaterequal.cpp000066400000000000000000000014711453145653700225750ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number_1 = 17; json number_2 = 17.0000000000001L; json string_1 = "foo"; json string_2 = "bar"; // output values and comparisons std::cout << std::boolalpha; std::cout << array_1 << " >= " << array_2 << " " << (array_1 >= array_2) << '\n'; std::cout << object_1 << " >= " << object_2 << " " << (object_1 >= object_2) << '\n'; std::cout << number_1 << " >= " << number_2 << " " << (number_1 >= number_2) << '\n'; std::cout << string_1 << " >= " << string_2 << " " << (string_1 >= string_2) << '\n'; } json-3.11.3/docs/examples/operator__greaterequal.output000066400000000000000000000001661453145653700233530ustar00rootroot00000000000000[1,2,3] >= [1,2,4] false {"A":"a","B":"b"} >= {"A":"a","B":"b"} true 17 >= 17.0000000000001 false "foo" >= "bar" true json-3.11.3/docs/examples/operator__less.cpp000066400000000000000000000014651453145653700210650ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number_1 = 17; json number_2 = 17.0000000000001L; json string_1 = "foo"; json string_2 = "bar"; // output values and comparisons std::cout << std::boolalpha; std::cout << array_1 << " == " << array_2 << " " << (array_1 < array_2) << '\n'; std::cout << object_1 << " == " << object_2 << " " << (object_1 < object_2) << '\n'; std::cout << number_1 << " == " << number_2 << " " << (number_1 < number_2) << '\n'; std::cout << string_1 << " == " << string_2 << " " << (string_1 < string_2) << '\n'; } json-3.11.3/docs/examples/operator__less.output000066400000000000000000000001661453145653700216400ustar00rootroot00000000000000[1,2,3] == [1,2,4] true {"A":"a","B":"b"} == {"A":"a","B":"b"} false 17 == 17.0000000000001 true "foo" == "bar" false json-3.11.3/docs/examples/operator__lessequal.cpp000066400000000000000000000014711453145653700221120ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number_1 = 17; json number_2 = 17.0000000000001L; json string_1 = "foo"; json string_2 = "bar"; // output values and comparisons std::cout << std::boolalpha; std::cout << array_1 << " <= " << array_2 << " " << (array_1 <= array_2) << '\n'; std::cout << object_1 << " <= " << object_2 << " " << (object_1 <= object_2) << '\n'; std::cout << number_1 << " <= " << number_2 << " " << (number_1 <= number_2) << '\n'; std::cout << string_1 << " <= " << string_2 << " " << (string_1 <= string_2) << '\n'; } json-3.11.3/docs/examples/operator__lessequal.output000066400000000000000000000001651453145653700226670ustar00rootroot00000000000000[1,2,3] <= [1,2,4] true {"A":"a","B":"b"} <= {"A":"a","B":"b"} true 17 <= 17.0000000000001 true "foo" <= "bar" false json-3.11.3/docs/examples/operator__notequal.cpp000066400000000000000000000014731453145653700217460ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number_1 = 17; json number_2 = 17.000000000000001L; json string_1 = "foo"; json string_2 = "bar"; // output values and comparisons std::cout << std::boolalpha; std::cout << array_1 << " != " << array_2 << " " << (array_1 != array_2) << '\n'; std::cout << object_1 << " != " << object_2 << " " << (object_1 != object_2) << '\n'; std::cout << number_1 << " != " << number_2 << " " << (number_1 != number_2) << '\n'; std::cout << string_1 << " != " << string_2 << " " << (string_1 != string_2) << '\n'; } json-3.11.3/docs/examples/operator__notequal.output000066400000000000000000000001521453145653700225150ustar00rootroot00000000000000[1,2,3] != [1,2,4] true {"A":"a","B":"b"} != {"A":"a","B":"b"} false 17 != 17.0 false "foo" != "bar" true json-3.11.3/docs/examples/operator__notequal__nullptr_t.cpp000066400000000000000000000012721453145653700242050ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create several JSON values json array = {1, 2, 3}; json object = {{"A", "a"}, {"B", "b"}}; json number = 17; json string = "foo"; json null; // output values and comparisons std::cout << std::boolalpha; std::cout << array << " != nullptr " << (array != nullptr) << '\n'; std::cout << object << " != nullptr " << (object != nullptr) << '\n'; std::cout << number << " != nullptr " << (number != nullptr) << '\n'; std::cout << string << " != nullptr " << (string != nullptr) << '\n'; std::cout << null << " != nullptr " << (null != nullptr) << '\n'; } json-3.11.3/docs/examples/operator__notequal__nullptr_t.output000066400000000000000000000001711453145653700247600ustar00rootroot00000000000000[1,2,3] != nullptr true {"A":"a","B":"b"} != nullptr true 17 != nullptr true "foo" != nullptr true null != nullptr false json-3.11.3/docs/examples/operator__value_t.cpp000066400000000000000000000025211453145653700215500ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = -17; json j_number_unsigned = 42u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call operator value_t() json::value_t t_null = j_null; json::value_t t_boolean = j_boolean; json::value_t t_number_integer = j_number_integer; json::value_t t_number_unsigned = j_number_unsigned; json::value_t t_number_float = j_number_float; json::value_t t_object = j_object; json::value_t t_array = j_array; json::value_t t_string = j_string; // print types std::cout << std::boolalpha; std::cout << (t_null == json::value_t::null) << '\n'; std::cout << (t_boolean == json::value_t::boolean) << '\n'; std::cout << (t_number_integer == json::value_t::number_integer) << '\n'; std::cout << (t_number_unsigned == json::value_t::number_unsigned) << '\n'; std::cout << (t_number_float == json::value_t::number_float) << '\n'; std::cout << (t_object == json::value_t::object) << '\n'; std::cout << (t_array == json::value_t::array) << '\n'; std::cout << (t_string == json::value_t::string) << '\n'; } json-3.11.3/docs/examples/operator__value_t.output000066400000000000000000000000501453145653700223210ustar00rootroot00000000000000true true true true true true true true json-3.11.3/docs/examples/operator_array__json_pointer.cpp000066400000000000000000000025261453145653700240250ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value json j = { {"number", 1}, {"string", "foo"}, {"array", {1, 2}} }; // read-only access // output element with JSON pointer "/number" std::cout << j["/number"_json_pointer] << '\n'; // output element with JSON pointer "/string" std::cout << j["/string"_json_pointer] << '\n'; // output element with JSON pointer "/array" std::cout << j["/array"_json_pointer] << '\n'; // output element with JSON pointer "/array/1" std::cout << j["/array/1"_json_pointer] << '\n'; // writing access // change the string j["/string"_json_pointer] = "bar"; // output the changed string std::cout << j["string"] << '\n'; // "change" a nonexisting object entry j["/boolean"_json_pointer] = true; // output the changed object std::cout << j << '\n'; // change an array element j["/array/1"_json_pointer] = 21; // "change" an array element with nonexisting index j["/array/4"_json_pointer] = 44; // output the changed array std::cout << j["array"] << '\n'; // "change" the array element past the end j["/array/-"_json_pointer] = 55; // output the changed array std::cout << j["array"] << '\n'; } json-3.11.3/docs/examples/operator_array__json_pointer.output000066400000000000000000000001721453145653700245760ustar00rootroot000000000000001 "foo" [1,2] 2 "bar" {"array":[1,2],"boolean":true,"number":1,"string":"bar"} [1,21,null,null,44] [1,21,null,null,44,55] json-3.11.3/docs/examples/operator_array__json_pointer_const.cpp000066400000000000000000000012541453145653700252300ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value const json j = { {"number", 1}, {"string", "foo"}, {"array", {1, 2}} }; // read-only access // output element with JSON pointer "/number" std::cout << j["/number"_json_pointer] << '\n'; // output element with JSON pointer "/string" std::cout << j["/string"_json_pointer] << '\n'; // output element with JSON pointer "/array" std::cout << j["/array"_json_pointer] << '\n'; // output element with JSON pointer "/array/1" std::cout << j["/array/1"_json_pointer] << '\n'; } json-3.11.3/docs/examples/operator_array__json_pointer_const.output000066400000000000000000000000201453145653700257740ustar00rootroot000000000000001 "foo" [1,2] 2 json-3.11.3/docs/examples/operator_array__keytype.c++17.cpp000066400000000000000000000013361453145653700235230ustar00rootroot00000000000000#include #include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create a JSON object json object = { {"one", 1}, {"two", 2}, {"three", 2.9} }; // output element with key "two" std::cout << object["two"sv] << "\n\n"; // change element with key "three" object["three"sv] = 3; // output changed array std::cout << std::setw(4) << object << "\n\n"; // mention nonexisting key object["four"sv]; // write to nonexisting key object["five"sv]["really"sv]["nested"sv] = true; // output changed object std::cout << std::setw(4) << object << '\n'; } json-3.11.3/docs/examples/operator_array__keytype.c++17.output000066400000000000000000000003021453145653700242710ustar00rootroot000000000000002 { "one": 1, "three": 3, "two": 2 } { "five": { "really": { "nested": true } }, "four": null, "one": 1, "three": 3, "two": 2 } json-3.11.3/docs/examples/operator_array__keytype_const.c++17.cpp000066400000000000000000000005411453145653700247260ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create a JSON object const json object = { {"one", 1}, {"two", 2}, {"three", 2.9} }; // output element with key "two" std::cout << object["two"sv] << '\n'; } json-3.11.3/docs/examples/operator_array__keytype_const.c++17.output000066400000000000000000000000021453145653700254740ustar00rootroot000000000000002 json-3.11.3/docs/examples/operator_array__object_t_key_type.cpp000066400000000000000000000012201453145653700250040ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create a JSON object json object = { {"one", 1}, {"two", 2}, {"three", 2.9} }; // output element with key "two" std::cout << object["two"] << "\n\n"; // change element with key "three" object["three"] = 3; // output changed array std::cout << std::setw(4) << object << "\n\n"; // mention nonexisting key object["four"]; // write to nonexisting key object["five"]["really"]["nested"] = true; // output changed object std::cout << std::setw(4) << object << '\n'; } json-3.11.3/docs/examples/operator_array__object_t_key_type.output000066400000000000000000000003021453145653700255620ustar00rootroot000000000000002 { "one": 1, "three": 3, "two": 2 } { "five": { "really": { "nested": true } }, "four": null, "one": 1, "three": 3, "two": 2 } json-3.11.3/docs/examples/operator_array__object_t_key_type_const.cpp000066400000000000000000000004351453145653700262210ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON object const json object = { {"one", 1}, {"two", 2}, {"three", 2.9} }; // output element with key "two" std::cout << object["two"] << '\n'; } json-3.11.3/docs/examples/operator_array__object_t_key_type_const.output000066400000000000000000000000021453145653700267650ustar00rootroot000000000000002 json-3.11.3/docs/examples/operator_array__size_type.cpp000066400000000000000000000007431453145653700233260ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON array json array = {1, 2, 3, 4, 5}; // output element at index 3 (fourth element) std::cout << array[3] << '\n'; // change last element to 6 array[array.size() - 1] = 6; // output changed array std::cout << array << '\n'; // write beyond array limit array[10] = 11; // output changed array std::cout << array << '\n'; } json-3.11.3/docs/examples/operator_array__size_type.output000066400000000000000000000000661453145653700241020ustar00rootroot000000000000004 [1,2,3,4,6] [1,2,3,4,6,null,null,null,null,null,11] json-3.11.3/docs/examples/operator_array__size_type_const.cpp000066400000000000000000000004141453145653700245270ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON array const json array = {"first", "2nd", "third", "fourth"}; // output element at index 2 (third element) std::cout << array.at(2) << '\n'; } json-3.11.3/docs/examples/operator_array__size_type_const.output000066400000000000000000000000101453145653700252750ustar00rootroot00000000000000"third" json-3.11.3/docs/examples/operator_deserialize.cpp000066400000000000000000000010141453145653700222460ustar00rootroot00000000000000#include #include #include #include using json = nlohmann::json; int main() { // create stream with serialized JSON std::stringstream ss; ss << R"({ "number": 23, "string": "Hello, world!", "array": [1, 2, 3, 4, 5], "boolean": false, "null": null })"; // create JSON value and read the serialization from the stream json j; ss >> j; // serialize JSON std::cout << std::setw(2) << j << '\n'; } json-3.11.3/docs/examples/operator_deserialize.output000066400000000000000000000002101453145653700230210ustar00rootroot00000000000000{ "array": [ 1, 2, 3, 4, 5 ], "boolean": false, "null": null, "number": 23, "string": "Hello, world!" } json-3.11.3/docs/examples/operator_literal_json.cpp000066400000000000000000000003761453145653700224450ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { json j = R"( {"hello": "world", "answer": 42} )"_json; std::cout << std::setw(2) << j << '\n'; } json-3.11.3/docs/examples/operator_literal_json.output000066400000000000000000000000471453145653700232160ustar00rootroot00000000000000{ "answer": 42, "hello": "world" } json-3.11.3/docs/examples/operator_literal_json_pointer.cpp000066400000000000000000000004511453145653700241770ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { json j = R"( {"hello": "world", "answer": 42} )"_json; auto val = j["/hello"_json_pointer]; std::cout << std::setw(2) << val << '\n'; } json-3.11.3/docs/examples/operator_literal_json_pointer.output000066400000000000000000000000101453145653700247440ustar00rootroot00000000000000"world" json-3.11.3/docs/examples/operator_ltlt__basic_json.cpp000066400000000000000000000010451453145653700232620ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create JSON values json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; // serialize without indentation std::cout << j_object << "\n\n"; std::cout << j_array << "\n\n"; // serialize with indentation std::cout << std::setw(4) << j_object << "\n\n"; std::cout << std::setw(2) << j_array << "\n\n"; std::cout << std::setw(1) << std::setfill('\t') << j_object << "\n\n"; } json-3.11.3/docs/examples/operator_ltlt__basic_json.output000066400000000000000000000001711453145653700240370ustar00rootroot00000000000000{"one":1,"two":2} [1,2,4,8,16] { "one": 1, "two": 2 } [ 1, 2, 4, 8, 16 ] { "one": 1, "two": 2 } json-3.11.3/docs/examples/operator_ltlt__json_pointer.cpp000066400000000000000000000003661453145653700236660ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON poiner json::json_pointer ptr("/foo/bar/baz"); // write string representation to stream std::cout << ptr << std::endl; } json-3.11.3/docs/examples/operator_ltlt__json_pointer.output000066400000000000000000000000151453145653700244330ustar00rootroot00000000000000/foo/bar/baz json-3.11.3/docs/examples/operator_spaceship__const_reference.c++20.cpp000066400000000000000000000022141453145653700260240ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; const char* to_string(const std::partial_ordering& po) { if (std::is_lt(po)) { return "less"; } else if (std::is_gt(po)) { return "greater"; } else if (std::is_eq(po)) { return "equivalent"; } return "unordered"; } int main() { // create several JSON values json array_1 = {1, 2, 3}; json array_2 = {1, 2, 4}; json object_1 = {{"A", "a"}, {"B", "b"}}; json object_2 = {{"B", "b"}, {"A", "a"}}; json number = 17; json string = "foo"; json discarded = json(json::value_t::discarded); // output values and comparisons std::cout << array_1 << " <=> " << array_2 << " := " << to_string(array_1 <=> array_2) << '\n'; // *NOPAD* std::cout << object_1 << " <=> " << object_2 << " := " << to_string(object_1 <=> object_2) << '\n'; // *NOPAD* std::cout << string << " <=> " << number << " := " << to_string(string <=> number) << '\n'; // *NOPAD* std::cout << string << " <=> " << discarded << " := " << to_string(string <=> discarded) << '\n'; // *NOPAD* } json-3.11.3/docs/examples/operator_spaceship__const_reference.c++20.output000066400000000000000000000002151453145653700266010ustar00rootroot00000000000000[1,2,3] <=> [1,2,4] := less {"A":"a","B":"b"} <=> {"A":"a","B":"b"} := equivalent "foo" <=> 17 := greater "foo" <=> := unordered json-3.11.3/docs/examples/operator_spaceship__scalartype.c++20.cpp000066400000000000000000000021321453145653700250260ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; const char* to_string(const std::partial_ordering& po) { if (std::is_lt(po)) { return "less"; } else if (std::is_gt(po)) { return "greater"; } else if (std::is_eq(po)) { return "equivalent"; } return "unordered"; } int main() { using float_limits = std::numeric_limits; constexpr auto nan = float_limits::quiet_NaN(); // create several JSON values json boolean = false; json number = 17; json string = "17"; // output values and comparisons std::cout << std::boolalpha << std::fixed; std::cout << boolean << " <=> " << true << " := " << to_string(boolean <=> true) << '\n'; // *NOPAD* std::cout << number << " <=> " << 17.0 << " := " << to_string(number <=> 17.0) << '\n'; // *NOPAD* std::cout << number << " <=> " << nan << " := " << to_string(number <=> nan) << '\n'; // *NOPAD* std::cout << string << " <=> " << 17 << " := " << to_string(string <=> 17) << '\n'; // *NOPAD* } json-3.11.3/docs/examples/operator_spaceship__scalartype.c++20.output000066400000000000000000000001451453145653700256060ustar00rootroot00000000000000false <=> true := less 17 <=> 17.000000 := equivalent 17 <=> nan := unordered "17" <=> 17 := greater json-3.11.3/docs/examples/ordered_json.cpp000066400000000000000000000003401453145653700205110ustar00rootroot00000000000000#include #include using ordered_json = nlohmann::ordered_json; int main() { ordered_json j; j["one"] = 1; j["two"] = 2; j["three"] = 3; std::cout << j.dump(2) << '\n'; } json-3.11.3/docs/examples/ordered_json.output000066400000000000000000000000511453145653700212660ustar00rootroot00000000000000{ "one": 1, "two": 2, "three": 3 } json-3.11.3/docs/examples/ordered_map.cpp000066400000000000000000000021251453145653700203200ustar00rootroot00000000000000#include #include // simple output function template void output(const char* prefix, const Map& m) { std::cout << prefix << " = { "; for (auto& element : m) { std::cout << element.first << ":" << element.second << ' '; } std::cout << "}" << std::endl; } int main() { // create and fill two maps nlohmann::ordered_map m_ordered; m_ordered["one"] = "eins"; m_ordered["two"] = "zwei"; m_ordered["three"] = "drei"; std::map m_std; m_std["one"] = "eins"; m_std["two"] = "zwei"; m_std["three"] = "drei"; // output: m_ordered is ordered by insertion order, m_std is ordered by key output("m_ordered", m_ordered); output("m_std", m_std); // erase and re-add "one" key m_ordered.erase("one"); m_ordered["one"] = "eins"; m_std.erase("one"); m_std["one"] = "eins"; // output: m_ordered shows newly added key at the end; m_std is again ordered by key output("m_ordered", m_ordered); output("m_std", m_std); } json-3.11.3/docs/examples/ordered_map.output000066400000000000000000000002541453145653700210770ustar00rootroot00000000000000m_ordered = { one:eins two:zwei three:drei } m_std = { one:eins three:drei two:zwei } m_ordered = { two:zwei three:drei one:eins } m_std = { one:eins three:drei two:zwei } json-3.11.3/docs/examples/other_error.cpp000066400000000000000000000013011453145653700203640ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { try { // executing a failing JSON Patch operation json value = R"({ "best_biscuit": { "name": "Oreo" } })"_json; json patch = R"([{ "op": "test", "path": "/best_biscuit/name", "value": "Choco Leibniz" }])"_json; value.patch(patch); } catch (const json::other_error& e) { // output exception information std::cout << "message: " << e.what() << '\n' << "exception id: " << e.id << std::endl; } } json-3.11.3/docs/examples/other_error.output000066400000000000000000000002141453145653700211440ustar00rootroot00000000000000message: [json.exception.other_error.501] unsuccessful: {"op":"test","path":"/best_biscuit/name","value":"Choco Leibniz"} exception id: 501 json-3.11.3/docs/examples/out_of_range.cpp000066400000000000000000000006421453145653700205100ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { try { // calling at() for an invalid index json j = {1, 2, 3, 4}; j.at(4) = 10; } catch (const json::out_of_range& e) { // output exception information std::cout << "message: " << e.what() << '\n' << "exception id: " << e.id << std::endl; } } json-3.11.3/docs/examples/out_of_range.output000066400000000000000000000001331453145653700212610ustar00rootroot00000000000000message: [json.exception.out_of_range.401] array index 4 is out of range exception id: 401 json-3.11.3/docs/examples/parse__allow_exceptions.cpp000066400000000000000000000012341453145653700227470ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // an invalid JSON text std::string text = R"( { "key": "value without closing quotes } )"; // parse with exceptions try { json j = json::parse(text); } catch (const json::parse_error& e) { std::cout << e.what() << std::endl; } // parse without exceptions json j = json::parse(text, nullptr, false); if (j.is_discarded()) { std::cout << "the input is invalid JSON" << std::endl; } else { std::cout << "the input is valid JSON: " << j << std::endl; } } json-3.11.3/docs/examples/parse__allow_exceptions.output000066400000000000000000000004011453145653700235200ustar00rootroot00000000000000[json.exception.parse_error.101] parse error at line 4, column 0: syntax error while parsing value - invalid string: control character U+000A (LF) must be escaped to \u000A or \n; last read: '"value without closing quotes' the input is invalid JSON json-3.11.3/docs/examples/parse__array__parser_callback_t.cpp000066400000000000000000000012461453145653700243630ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // a JSON text char text[] = R"( { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": 100 }, "Animated" : false, "IDs": [116, 943, 234, 38793] } } )"; // parse and serialize JSON json j_complete = json::parse(text); std::cout << std::setw(4) << j_complete << "\n\n"; } json-3.11.3/docs/examples/parse__array__parser_callback_t.output000066400000000000000000000005761453145653700251460ustar00rootroot00000000000000{ "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ], "Thumbnail": { "Height": 125, "Url": "http://www.example.com/image/481989943", "Width": 100 }, "Title": "View from 15th Floor", "Width": 800 } } json-3.11.3/docs/examples/parse__contiguouscontainer__parser_callback_t.cpp000066400000000000000000000005531453145653700273470ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // a JSON text given as std::vector std::vector text = {'[', '1', ',', '2', ',', '3', ']', '\0'}; // parse and serialize JSON json j_complete = json::parse(text); std::cout << std::setw(4) << j_complete << "\n\n"; } json-3.11.3/docs/examples/parse__contiguouscontainer__parser_callback_t.output000066400000000000000000000000311453145653700301140ustar00rootroot00000000000000[ 1, 2, 3 ] json-3.11.3/docs/examples/parse__istream__parser_callback_t.cpp000066400000000000000000000025121453145653700247060ustar00rootroot00000000000000#include #include #include #include using json = nlohmann::json; int main() { // a JSON text auto text = R"( { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": 100 }, "Animated" : false, "IDs": [116, 943, 234, 38793] } } )"; // fill a stream with JSON text std::stringstream ss; ss << text; // parse and serialize JSON json j_complete = json::parse(ss); std::cout << std::setw(4) << j_complete << "\n\n"; // define parser callback json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed) { // skip object elements with key "Thumbnail" if (event == json::parse_event_t::key and parsed == json("Thumbnail")) { return false; } else { return true; } }; // fill a stream with JSON text ss.clear(); ss << text; // parse (with callback) and serialize JSON json j_filtered = json::parse(ss, cb); std::cout << std::setw(4) << j_filtered << '\n'; }json-3.11.3/docs/examples/parse__istream__parser_callback_t.output000066400000000000000000000011501453145653700254610ustar00rootroot00000000000000{ "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ], "Thumbnail": { "Height": 125, "Url": "http://www.example.com/image/481989943", "Width": 100 }, "Title": "View from 15th Floor", "Width": 800 } } { "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ], "Title": "View from 15th Floor", "Width": 800 } } json-3.11.3/docs/examples/parse__iterator_pair.cpp000066400000000000000000000006471453145653700222430ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // a JSON text given an input with other values std::vector input = {'[', '1', ',', '2', ',', '3', ']', 'o', 't', 'h', 'e', 'r'}; // parse and serialize JSON json j_complete = json::parse(input.begin(), input.begin() + 7); std::cout << std::setw(4) << j_complete << "\n\n"; } json-3.11.3/docs/examples/parse__iterator_pair.link000066400000000000000000000001311453145653700224020ustar00rootroot00000000000000onlinejson-3.11.3/docs/examples/parse__iterator_pair.output000066400000000000000000000000311453145653700230040ustar00rootroot00000000000000[ 1, 2, 3 ] json-3.11.3/docs/examples/parse__pointers.cpp000066400000000000000000000005501453145653700212330ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // a JSON text given as string that is not null-terminated const char* ptr = "[1,2,3]another value"; // parse and serialize JSON json j_complete = json::parse(ptr, ptr + 7); std::cout << std::setw(4) << j_complete << "\n\n"; } json-3.11.3/docs/examples/parse__pointers.link000066400000000000000000000001311453145653700214010ustar00rootroot00000000000000onlinejson-3.11.3/docs/examples/parse__pointers.output000066400000000000000000000000311453145653700220030ustar00rootroot00000000000000[ 1, 2, 3 ] json-3.11.3/docs/examples/parse__string__parser_callback_t.cpp000066400000000000000000000022501453145653700245470ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // a JSON text auto text = R"( { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": 100 }, "Animated" : false, "IDs": [116, 943, 234, 38793] } } )"; // parse and serialize JSON json j_complete = json::parse(text); std::cout << std::setw(4) << j_complete << "\n\n"; // define parser callback json::parser_callback_t cb = [](int depth, json::parse_event_t event, json & parsed) { // skip object elements with key "Thumbnail" if (event == json::parse_event_t::key and parsed == json("Thumbnail")) { return false; } else { return true; } }; // parse (with callback) and serialize JSON json j_filtered = json::parse(text, cb); std::cout << std::setw(4) << j_filtered << '\n'; } json-3.11.3/docs/examples/parse__string__parser_callback_t.output000066400000000000000000000011501453145653700253230ustar00rootroot00000000000000{ "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ], "Thumbnail": { "Height": 125, "Url": "http://www.example.com/image/481989943", "Width": 100 }, "Title": "View from 15th Floor", "Width": 800 } } { "Image": { "Animated": false, "Height": 600, "IDs": [ 116, 943, 234, 38793 ], "Title": "View from 15th Floor", "Width": 800 } } json-3.11.3/docs/examples/parse_error.cpp000066400000000000000000000007171453145653700203670ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { try { // parsing input with a syntax error json::parse("[1,2,3,]"); } catch (const json::parse_error& e) { // output exception information std::cout << "message: " << e.what() << '\n' << "exception id: " << e.id << '\n' << "byte position of error: " << e.byte << std::endl; } } json-3.11.3/docs/examples/parse_error.output000066400000000000000000000003121453145653700211340ustar00rootroot00000000000000message: [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal exception id: 101 byte position of error: 8 json-3.11.3/docs/examples/patch.cpp000066400000000000000000000013421453145653700171360ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // the original document json doc = R"( { "baz": "qux", "foo": "bar" } )"_json; // the patch json patch = R"( [ { "op": "replace", "path": "/baz", "value": "boo" }, { "op": "add", "path": "/hello", "value": ["world"] }, { "op": "remove", "path": "/foo"} ] )"_json; // apply the patch json patched_doc = doc.patch(patch); // output original and patched document std::cout << std::setw(4) << doc << "\n\n" << std::setw(4) << patched_doc << std::endl; } json-3.11.3/docs/examples/patch.output000066400000000000000000000001431453145653700177120ustar00rootroot00000000000000{ "baz": "qux", "foo": "bar" } { "baz": "boo", "hello": [ "world" ] } json-3.11.3/docs/examples/patch_inplace.cpp000066400000000000000000000014041453145653700206300ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // the original document json doc = R"( { "baz": "qux", "foo": "bar" } )"_json; // the patch json patch = R"( [ { "op": "replace", "path": "/baz", "value": "boo" }, { "op": "add", "path": "/hello", "value": ["world"] }, { "op": "remove", "path": "/foo"} ] )"_json; // output original document std::cout << "Before\n" << std::setw(4) << doc << std::endl; // apply the patch doc.patch_inplace(patch); // output patched document std::cout << "\nAfter\n" << std::setw(4) << doc << std::endl; } json-3.11.3/docs/examples/patch_inplace.output000066400000000000000000000001601453145653700214040ustar00rootroot00000000000000Before { "baz": "qux", "foo": "bar" } After { "baz": "boo", "hello": [ "world" ] } json-3.11.3/docs/examples/push_back.cpp000066400000000000000000000006701453145653700200010ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json array = {1, 2, 3, 4, 5}; json null; // print values std::cout << array << '\n'; std::cout << null << '\n'; // add values array.push_back(6); array += 7; null += "first"; null += "second"; // print values std::cout << array << '\n'; std::cout << null << '\n'; } json-3.11.3/docs/examples/push_back.output000066400000000000000000000000641453145653700205540ustar00rootroot00000000000000[1,2,3,4,5] null [1,2,3,4,5,6,7] ["first","second"] json-3.11.3/docs/examples/push_back__initializer_list.cpp000066400000000000000000000011431453145653700235720ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json object = {{"one", 1}, {"two", 2}}; json null; // print values std::cout << object << '\n'; std::cout << null << '\n'; // add values: object.push_back({"three", 3}); // object is extended object += {"four", 4}; // object is extended null.push_back({"five", 5}); // null is converted to array // print values std::cout << object << '\n'; std::cout << null << '\n'; // would throw: //object.push_back({1, 2, 3}); } json-3.11.3/docs/examples/push_back__initializer_list.output000066400000000000000000000001111453145653700243420ustar00rootroot00000000000000{"one":1,"two":2} null {"four":4,"one":1,"three":3,"two":2} [["five",5]] json-3.11.3/docs/examples/push_back__object_t__value.cpp000066400000000000000000000011101453145653700233320ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json object = {{"one", 1}, {"two", 2}}; json null; // print values std::cout << object << '\n'; std::cout << null << '\n'; // add values object.push_back(json::object_t::value_type("three", 3)); object += json::object_t::value_type("four", 4); null += json::object_t::value_type("A", "a"); null += json::object_t::value_type("B", "b"); // print values std::cout << object << '\n'; std::cout << null << '\n'; } json-3.11.3/docs/examples/push_back__object_t__value.output000066400000000000000000000001161453145653700241150ustar00rootroot00000000000000{"one":1,"two":2} null {"four":4,"one":1,"three":3,"two":2} {"A":"a","B":"b"} json-3.11.3/docs/examples/rbegin.cpp000066400000000000000000000005271453145653700173110ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to the reverse-beginning json::reverse_iterator it = array.rbegin(); // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/rbegin.output000066400000000000000000000000021453145653700200530ustar00rootroot000000000000005 json-3.11.3/docs/examples/rend.cpp000066400000000000000000000006261453145653700167730ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create an array value json array = {1, 2, 3, 4, 5}; // get an iterator to the reverse-end json::reverse_iterator it = array.rend(); // increment the iterator to point to the first element --it; // serialize the element that the iterator points to std::cout << *it << '\n'; } json-3.11.3/docs/examples/rend.output000066400000000000000000000000021453145653700175350ustar00rootroot000000000000001 json-3.11.3/docs/examples/sax_parse.cpp000066400000000000000000000063671453145653700200400ustar00rootroot00000000000000#include #include #include #include using json = nlohmann::json; // a simple event consumer that collects string representations of the passed // values; note inheriting from json::json_sax_t is not required, but can // help not to forget a required function class sax_event_consumer : public json::json_sax_t { public: std::vector events; bool null() override { events.push_back("null()"); return true; } bool boolean(bool val) override { events.push_back("boolean(val=" + std::string(val ? "true" : "false") + ")"); return true; } bool number_integer(number_integer_t val) override { events.push_back("number_integer(val=" + std::to_string(val) + ")"); return true; } bool number_unsigned(number_unsigned_t val) override { events.push_back("number_unsigned(val=" + std::to_string(val) + ")"); return true; } bool number_float(number_float_t val, const string_t& s) override { events.push_back("number_float(val=" + std::to_string(val) + ", s=" + s + ")"); return true; } bool string(string_t& val) override { events.push_back("string(val=" + val + ")"); return true; } bool start_object(std::size_t elements) override { events.push_back("start_object(elements=" + std::to_string(elements) + ")"); return true; } bool end_object() override { events.push_back("end_object()"); return true; } bool start_array(std::size_t elements) override { events.push_back("start_array(elements=" + std::to_string(elements) + ")"); return true; } bool end_array() override { events.push_back("end_array()"); return true; } bool key(string_t& val) override { events.push_back("key(val=" + val + ")"); return true; } bool binary(json::binary_t& val) override { events.push_back("binary(val=[...])"); return true; } bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override { events.push_back("parse_error(position=" + std::to_string(position) + ", last_token=" + last_token + ",\n ex=" + std::string(ex.what()) + ")"); return false; } }; int main() { // a JSON text auto text = R"( { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": 100 }, "Animated" : false, "IDs": [116, 943, 234, -38793], "DeletionDate": null, "Distance": 12.723374634 } }] )"; // create a SAX event consumer object sax_event_consumer sec; // parse JSON bool result = json::sax_parse(text, &sec); // output the recorded events for (auto& event : sec.events) { std::cout << event << "\n"; } // output the result of sax_parse std::cout << "\nresult: " << std::boolalpha << result << std::endl; } json-3.11.3/docs/examples/sax_parse.output000066400000000000000000000020061453145653700206000ustar00rootroot00000000000000start_object(elements=18446744073709551615) key(val=Image) start_object(elements=18446744073709551615) key(val=Width) number_unsigned(val=800) key(val=Height) number_unsigned(val=600) key(val=Title) string(val=View from 15th Floor) key(val=Thumbnail) start_object(elements=18446744073709551615) key(val=Url) string(val=http://www.example.com/image/481989943) key(val=Height) number_unsigned(val=125) key(val=Width) number_unsigned(val=100) end_object() key(val=Animated) boolean(val=false) key(val=IDs) start_array(elements=18446744073709551615) number_unsigned(val=116) number_unsigned(val=943) number_unsigned(val=234) number_integer(val=-38793) end_array() key(val=DeletionDate) null() key(val=Distance) number_float(val=12.723375, s=12.723374634) end_object() end_object() parse_error(position=460, last_token=12.723374634 } }], ex=[json.exception.parse_error.101] parse error at line 17, column 6: syntax error while parsing value - unexpected ']'; expected end of input) result: false json-3.11.3/docs/examples/sax_parse__binary.cpp000066400000000000000000000055651453145653700215420ustar00rootroot00000000000000#include #include #include #include using json = nlohmann::json; // a simple event consumer that collects string representations of the passed // values; note inheriting from json::json_sax_t is not required, but can // help not to forget a required function class sax_event_consumer : public json::json_sax_t { public: std::vector events; bool null() override { events.push_back("null()"); return true; } bool boolean(bool val) override { events.push_back("boolean(val=" + std::string(val ? "true" : "false") + ")"); return true; } bool number_integer(number_integer_t val) override { events.push_back("number_integer(val=" + std::to_string(val) + ")"); return true; } bool number_unsigned(number_unsigned_t val) override { events.push_back("number_unsigned(val=" + std::to_string(val) + ")"); return true; } bool number_float(number_float_t val, const string_t& s) override { events.push_back("number_float(val=" + std::to_string(val) + ", s=" + s + ")"); return true; } bool string(string_t& val) override { events.push_back("string(val=" + val + ")"); return true; } bool start_object(std::size_t elements) override { events.push_back("start_object(elements=" + std::to_string(elements) + ")"); return true; } bool end_object() override { events.push_back("end_object()"); return true; } bool start_array(std::size_t elements) override { events.push_back("start_array(elements=" + std::to_string(elements) + ")"); return true; } bool end_array() override { events.push_back("end_array()"); return true; } bool key(string_t& val) override { events.push_back("key(val=" + val + ")"); return true; } bool binary(json::binary_t& val) override { events.push_back("binary(val=[...])"); return true; } bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) override { events.push_back("parse_error(position=" + std::to_string(position) + ", last_token=" + last_token + ",\n ex=" + std::string(ex.what()) + ")"); return false; } }; int main() { // CBOR byte string std::vector vec = {{0x44, 0xcA, 0xfe, 0xba, 0xbe}}; // create a SAX event consumer object sax_event_consumer sec; // parse CBOR bool result = json::sax_parse(vec, &sec, json::input_format_t::cbor); // output the recorded events for (auto& event : sec.events) { std::cout << event << "\n"; } // output the result of sax_parse std::cout << "\nresult: " << std::boolalpha << result << std::endl; } json-3.11.3/docs/examples/sax_parse__binary.output000066400000000000000000000000401453145653700222770ustar00rootroot00000000000000binary(val=[...]) result: true json-3.11.3/docs/examples/size.cpp000066400000000000000000000015401453145653700170110ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = 17; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_object_empty(json::value_t::object); json j_array = {1, 2, 4, 8, 16}; json j_array_empty(json::value_t::array); json j_string = "Hello, world"; // call size() std::cout << j_null.size() << '\n'; std::cout << j_boolean.size() << '\n'; std::cout << j_number_integer.size() << '\n'; std::cout << j_number_float.size() << '\n'; std::cout << j_object.size() << '\n'; std::cout << j_object_empty.size() << '\n'; std::cout << j_array.size() << '\n'; std::cout << j_array_empty.size() << '\n'; std::cout << j_string.size() << '\n'; } json-3.11.3/docs/examples/size.output000066400000000000000000000000221453145653700175610ustar00rootroot000000000000000 1 1 1 2 0 5 0 1 json-3.11.3/docs/examples/std_hash.cpp000066400000000000000000000014431453145653700176360ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { std::cout << "hash(null) = " << std::hash {}(json(nullptr)) << '\n' << "hash(false) = " << std::hash {}(json(false)) << '\n' << "hash(0) = " << std::hash {}(json(0)) << '\n' << "hash(0U) = " << std::hash {}(json(0U)) << '\n' << "hash(\"\") = " << std::hash {}(json("")) << '\n' << "hash({}) = " << std::hash {}(json::object()) << '\n' << "hash([]) = " << std::hash {}(json::array()) << '\n' << "hash({\"hello\": \"world\"}) = " << std::hash {}("{\"hello\": \"world\"}"_json) << std::endl; } json-3.11.3/docs/examples/std_hash.output000066400000000000000000000003261453145653700204130ustar00rootroot00000000000000hash(null) = 2654435769 hash(false) = 2654436030 hash(0) = 2654436095 hash(0U) = 2654436156 hash("") = 6142509191626859748 hash({}) = 2654435832 hash([]) = 2654435899 hash({"hello": "world"}) = 4469488738203676328 json-3.11.3/docs/examples/std_swap.cpp000066400000000000000000000005761453145653700176730ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create JSON values json j1 = {{"one", 1}, {"two", 2}}; json j2 = {1, 2, 4, 8, 16}; std::cout << "j1 = " << j1 << " | j2 = " << j2 << '\n'; // swap values std::swap(j1, j2); std::cout << "j1 = " << j1 << " | j2 = " << j2 << std::endl; } json-3.11.3/docs/examples/std_swap.output000066400000000000000000000001261453145653700204400ustar00rootroot00000000000000j1 = {"one":1,"two":2} | j2 = [1,2,4,8,16] j1 = [1,2,4,8,16] | j2 = {"one":1,"two":2} json-3.11.3/docs/examples/string_t.cpp000066400000000000000000000003241453145653700176670ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::boolalpha << std::is_same::value << std::endl; } json-3.11.3/docs/examples/string_t.output000066400000000000000000000000051453145653700204410ustar00rootroot00000000000000true json-3.11.3/docs/examples/swap__array_t.cpp000066400000000000000000000006741453145653700207000ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON value json value = {{"array", {1, 2, 3, 4}}}; // create an array_t json::array_t array = {"Snap", "Crackle", "Pop"}; // swap the array stored in the JSON value value["array"].swap(array); // output the values std::cout << "value = " << value << '\n'; std::cout << "array = " << array << '\n'; } json-3.11.3/docs/examples/swap__array_t.output000066400000000000000000000000751453145653700214510ustar00rootroot00000000000000value = {"array":["Snap","Crackle","Pop"]} array = [1,2,3,4] json-3.11.3/docs/examples/swap__binary_t.cpp000066400000000000000000000006601453145653700210410ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a binary value json value = json::binary({1, 2, 3}); // create a binary_t json::binary_t binary = {{4, 5, 6}}; // swap the object stored in the JSON value value.swap(binary); // output the values std::cout << "value = " << value << '\n'; std::cout << "binary = " << json(binary) << '\n'; } json-3.11.3/docs/examples/swap__binary_t.output000066400000000000000000000001231453145653700216110ustar00rootroot00000000000000value = {"bytes":[4,5,6],"subtype":null} binary = {"bytes":[1,2,3],"subtype":null} json-3.11.3/docs/examples/swap__object_t.cpp000066400000000000000000000007561453145653700210310ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON value json value = { {"translation", {{"one", "eins"}, {"two", "zwei"}}} }; // create an object_t json::object_t object = {{"cow", "Kuh"}, {"dog", "Hund"}}; // swap the object stored in the JSON value value["translation"].swap(object); // output the values std::cout << "value = " << value << '\n'; std::cout << "object = " << object << '\n'; } json-3.11.3/docs/examples/swap__object_t.output000066400000000000000000000001301453145653700215710ustar00rootroot00000000000000value = {"translation":{"cow":"Kuh","dog":"Hund"}} object = {"one":"eins","two":"zwei"} json-3.11.3/docs/examples/swap__reference.cpp000066400000000000000000000005641453145653700211730ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create two JSON values json j1 = {1, 2, 3, 4, 5}; json j2 = {{"pi", 3.141592653589793}, {"e", 2.718281828459045}}; // swap the values j1.swap(j2); // output the values std::cout << "j1 = " << j1 << '\n'; std::cout << "j2 = " << j2 << '\n'; } json-3.11.3/docs/examples/swap__reference.output000066400000000000000000000001051453145653700217400ustar00rootroot00000000000000j1 = {"e":2.718281828459045,"pi":3.141592653589793} j2 = [1,2,3,4,5] json-3.11.3/docs/examples/swap__string_t.cpp000066400000000000000000000006661453145653700210710ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON value json value = { "the good", "the bad", "the ugly" }; // create string_t json::string_t string = "the fast"; // swap the object stored in the JSON value value[1].swap(string); // output the values std::cout << "value = " << value << '\n'; std::cout << "string = " << string << '\n'; } json-3.11.3/docs/examples/swap__string_t.output000066400000000000000000000000741453145653700216400ustar00rootroot00000000000000value = ["the good","the fast","the ugly"] string = the bad json-3.11.3/docs/examples/to_bjdata.cpp000066400000000000000000000027111453145653700177670ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; // function to print BJData's diagnostic format void print_byte(uint8_t byte) { if (32 < byte and byte < 128) { std::cout << (char)byte; } else { std::cout << (int)byte; } } int main() { // create a JSON value json j = R"({"compact": true, "schema": false})"_json; // serialize it to BJData std::vector v = json::to_bjdata(j); // print the vector content for (auto& byte : v) { print_byte(byte); } std::cout << std::endl; // create an array of numbers json array = {1, 2, 3, 4, 5, 6, 7, 8}; // serialize it to BJData using default representation std::vector v_array = json::to_bjdata(array); // serialize it to BJData using size optimization std::vector v_array_size = json::to_bjdata(array, true); // serialize it to BJData using type optimization std::vector v_array_size_and_type = json::to_bjdata(array, true, true); // print the vector contents for (auto& byte : v_array) { print_byte(byte); } std::cout << std::endl; for (auto& byte : v_array_size) { print_byte(byte); } std::cout << std::endl; for (auto& byte : v_array_size_and_type) { print_byte(byte); } std::cout << std::endl; } json-3.11.3/docs/examples/to_bjdata.output000066400000000000000000000001151453145653700205410ustar00rootroot00000000000000{i7compactTi6schemaF} [i1i2i3i4i5i6i7i8] [#i8i1i2i3i4i5i6i7i8 [$i#i812345678 json-3.11.3/docs/examples/to_bson.cpp000066400000000000000000000007731453145653700175110ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value json j = R"({"compact": true, "schema": 0})"_json; // serialize it to BSON std::vector v = json::to_bson(j); // print the vector content for (auto& byte : v) { std::cout << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << " "; } std::cout << std::endl; } json-3.11.3/docs/examples/to_bson.output000066400000000000000000000002101453145653700202510ustar00rootroot000000000000000x1b 0x00 0x00 0x00 0x08 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0x00 0x01 0x10 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 0x00 0x00 0x00 0x00 0x00 json-3.11.3/docs/examples/to_cbor.cpp000066400000000000000000000007731453145653700174750ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value json j = R"({"compact": true, "schema": 0})"_json; // serialize it to CBOR std::vector v = json::to_cbor(j); // print the vector content for (auto& byte : v) { std::cout << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << " "; } std::cout << std::endl; } json-3.11.3/docs/examples/to_cbor.output000066400000000000000000000001331453145653700202410ustar00rootroot000000000000000xa2 0x67 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xf5 0x66 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 json-3.11.3/docs/examples/to_json.cpp000066400000000000000000000010011453145653700175020ustar00rootroot00000000000000#include #include using json = nlohmann::json; namespace ns { // a simple struct to model a person struct person { std::string name; std::string address; int age; }; } // namespace ns namespace ns { void to_json(json& j, const person& p) { j = json{ {"name", p.name}, {"address", p.address}, {"age", p.age} }; } } // namespace ns int main() { ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; json j = p; std::cout << j << std::endl; } json-3.11.3/docs/examples/to_json.output000066400000000000000000000001031453145653700202620ustar00rootroot00000000000000{"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} json-3.11.3/docs/examples/to_msgpack.cpp000066400000000000000000000010051453145653700201620ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON value json j = R"({"compact": true, "schema": 0})"_json; // serialize it to MessagePack std::vector v = json::to_msgpack(j); // print the vector content for (auto& byte : v) { std::cout << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)byte << " "; } std::cout << std::endl; } json-3.11.3/docs/examples/to_msgpack.output000066400000000000000000000001331453145653700207410ustar00rootroot000000000000000x82 0xa7 0x63 0x6f 0x6d 0x70 0x61 0x63 0x74 0xc3 0xa6 0x73 0x63 0x68 0x65 0x6d 0x61 0x00 json-3.11.3/docs/examples/to_string.cpp000066400000000000000000000007301453145653700200470ustar00rootroot00000000000000#include #include using json = nlohmann::json; using std::to_string; int main() { // create values json j = {{"one", 1}, {"two", 2}}; int i = 42; // use ADL to select best to_string function auto j_str = to_string(j); // calling nlohmann::to_string auto i_str = to_string(i); // calling std::to_string // serialize without indentation std::cout << j_str << "\n\n" << i_str << std::endl; } json-3.11.3/docs/examples/to_string.output000066400000000000000000000000261453145653700206230ustar00rootroot00000000000000{"one":1,"two":2} 42 json-3.11.3/docs/examples/to_ubjson.cpp000066400000000000000000000027111453145653700200420ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; // function to print UBJSON's diagnostic format void print_byte(uint8_t byte) { if (32 < byte and byte < 128) { std::cout << (char)byte; } else { std::cout << (int)byte; } } int main() { // create a JSON value json j = R"({"compact": true, "schema": false})"_json; // serialize it to UBJSON std::vector v = json::to_ubjson(j); // print the vector content for (auto& byte : v) { print_byte(byte); } std::cout << std::endl; // create an array of numbers json array = {1, 2, 3, 4, 5, 6, 7, 8}; // serialize it to UBJSON using default representation std::vector v_array = json::to_ubjson(array); // serialize it to UBJSON using size optimization std::vector v_array_size = json::to_ubjson(array, true); // serialize it to UBJSON using type optimization std::vector v_array_size_and_type = json::to_ubjson(array, true, true); // print the vector contents for (auto& byte : v_array) { print_byte(byte); } std::cout << std::endl; for (auto& byte : v_array_size) { print_byte(byte); } std::cout << std::endl; for (auto& byte : v_array_size_and_type) { print_byte(byte); } std::cout << std::endl; } json-3.11.3/docs/examples/to_ubjson.output000066400000000000000000000001151453145653700206140ustar00rootroot00000000000000{i7compactTi6schemaF} [i1i2i3i4i5i6i7i8] [#i8i1i2i3i4i5i6i7i8 [$i#i812345678 json-3.11.3/docs/examples/type.cpp000066400000000000000000000020071453145653700170170ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = -17; json j_number_unsigned = 42u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call type() std::cout << std::boolalpha; std::cout << (j_null.type() == json::value_t::null) << '\n'; std::cout << (j_boolean.type() == json::value_t::boolean) << '\n'; std::cout << (j_number_integer.type() == json::value_t::number_integer) << '\n'; std::cout << (j_number_unsigned.type() == json::value_t::number_unsigned) << '\n'; std::cout << (j_number_float.type() == json::value_t::number_float) << '\n'; std::cout << (j_object.type() == json::value_t::object) << '\n'; std::cout << (j_array.type() == json::value_t::array) << '\n'; std::cout << (j_string.type() == json::value_t::string) << '\n'; } json-3.11.3/docs/examples/type.output000066400000000000000000000000501453145653700175710ustar00rootroot00000000000000true true true true true true true true json-3.11.3/docs/examples/type_error.cpp000066400000000000000000000006611453145653700202340ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { try { // calling push_back() on a string value json j = "string"; j.push_back("another string"); } catch (const json::type_error& e) { // output exception information std::cout << "message: " << e.what() << '\n' << "exception id: " << e.id << std::endl; } } json-3.11.3/docs/examples/type_error.output000066400000000000000000000001361453145653700210070ustar00rootroot00000000000000message: [json.exception.type_error.308] cannot use push_back() with string exception id: 308 json-3.11.3/docs/examples/type_name.cpp000066400000000000000000000017751453145653700200320ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create JSON values json j_null; json j_boolean = true; json j_number_integer = -17; json j_number_unsigned = 42u; json j_number_float = 23.42; json j_object = {{"one", 1}, {"two", 2}}; json j_array = {1, 2, 4, 8, 16}; json j_string = "Hello, world"; // call type_name() std::cout << j_null << " is a " << j_null.type_name() << '\n'; std::cout << j_boolean << " is a " << j_boolean.type_name() << '\n'; std::cout << j_number_integer << " is a " << j_number_integer.type_name() << '\n'; std::cout << j_number_unsigned << " is a " << j_number_unsigned.type_name() << '\n'; std::cout << j_number_float << " is a " << j_number_float.type_name() << '\n'; std::cout << j_object << " is an " << j_object.type_name() << '\n'; std::cout << j_array << " is an " << j_array.type_name() << '\n'; std::cout << j_string << " is a " << j_string.type_name() << '\n'; } json-3.11.3/docs/examples/type_name.output000066400000000000000000000002451453145653700205770ustar00rootroot00000000000000null is a null true is a boolean -17 is a number 42 is a number 23.42 is a number {"one":1,"two":2} is an object [1,2,4,8,16] is an array "Hello, world" is a string json-3.11.3/docs/examples/unflatten.cpp000066400000000000000000000010511453145653700200340ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { // create JSON value json j_flattened = { {"/answer/everything", 42}, {"/happy", true}, {"/list/0", 1}, {"/list/1", 0}, {"/list/2", 2}, {"/name", "Niels"}, {"/nothing", nullptr}, {"/object/currency", "USD"}, {"/object/value", 42.99}, {"/pi", 3.141} }; // call unflatten() std::cout << std::setw(4) << j_flattened.unflatten() << '\n'; } json-3.11.3/docs/examples/unflatten.output000066400000000000000000000003771453145653700206240ustar00rootroot00000000000000{ "answer": { "everything": 42 }, "happy": true, "list": [ 1, 0, 2 ], "name": "Niels", "nothing": null, "object": { "currency": "USD", "value": 42.99 }, "pi": 3.141 } json-3.11.3/docs/examples/update.cpp000066400000000000000000000012631453145653700173230ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create two JSON objects json o1 = R"( {"color": "red", "price": 17.99, "names": {"de": "Flugzeug"}} )"_json; json o2 = R"( {"color": "blue", "speed": 100, "names": {"en": "plane"}} )"_json; json o3 = o1; // add all keys from o2 to o1 (updating "color", replacing "names") o1.update(o2); // add all keys from o2 to o1 (updating "color", merging "names") o3.update(o2, true); // output updated object o1 and o3 std::cout << std::setw(2) << o1 << '\n'; std::cout << std::setw(2) << o3 << '\n'; } json-3.11.3/docs/examples/update.output000066400000000000000000000003161453145653700200770ustar00rootroot00000000000000{ "color": "blue", "names": { "en": "plane" }, "price": 17.99, "speed": 100 } { "color": "blue", "names": { "de": "Flugzeug", "en": "plane" }, "price": 17.99, "speed": 100 } json-3.11.3/docs/examples/update__range.cpp000066400000000000000000000013271453145653700206370ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create two JSON objects json o1 = R"( {"color": "red", "price": 17.99, "names": {"de": "Flugzeug"}} )"_json; json o2 = R"( {"color": "blue", "speed": 100, "names": {"en": "plane"}} )"_json; json o3 = o1; // add all keys from o2 to o1 (updating "color", replacing "names") o1.update(o2.begin(), o2.end()); // add all keys from o2 to o1 (updating "color", merging "names") o3.update(o2.begin(), o2.end(), true); // output updated object o1 and o3 std::cout << std::setw(2) << o1 << '\n'; std::cout << std::setw(2) << o3 << '\n'; } json-3.11.3/docs/examples/update__range.output000066400000000000000000000003161453145653700214120ustar00rootroot00000000000000{ "color": "blue", "names": { "en": "plane" }, "price": 17.99, "speed": 100 } { "color": "blue", "names": { "de": "Flugzeug", "en": "plane" }, "price": 17.99, "speed": 100 } json-3.11.3/docs/examples/value__json_ptr.cpp000066400000000000000000000016131453145653700212310ustar00rootroot00000000000000#include #include using json = nlohmann::json; using namespace nlohmann::literals; int main() { // create a JSON object with different entry types json j = { {"integer", 1}, {"floating", 42.23}, {"string", "hello world"}, {"boolean", true}, {"object", {{"key1", 1}, {"key2", 2}}}, {"array", {1, 2, 3}} }; // access existing values int v_integer = j.value("/integer"_json_pointer, 0); double v_floating = j.value("/floating"_json_pointer, 47.11); // access nonexisting values and rely on default value std::string v_string = j.value("/nonexisting"_json_pointer, "oops"); bool v_boolean = j.value("/nonexisting"_json_pointer, false); // output values std::cout << std::boolalpha << v_integer << " " << v_floating << " " << v_string << " " << v_boolean << "\n"; } json-3.11.3/docs/examples/value__json_ptr.output000066400000000000000000000000231453145653700220010ustar00rootroot000000000000001 42.23 oops false json-3.11.3/docs/examples/value__keytype.c++17.cpp000066400000000000000000000015711453145653700216070ustar00rootroot00000000000000#include #include #include using namespace std::string_view_literals; using json = nlohmann::json; int main() { // create a JSON object with different entry types json j = { {"integer", 1}, {"floating", 42.23}, {"string", "hello world"}, {"boolean", true}, {"object", {{"key1", 1}, {"key2", 2}}}, {"array", {1, 2, 3}} }; // access existing values int v_integer = j.value("integer"sv, 0); double v_floating = j.value("floating"sv, 47.11); // access nonexisting values and rely on default value std::string v_string = j.value("nonexisting"sv, "oops"); bool v_boolean = j.value("nonexisting"sv, false); // output values std::cout << std::boolalpha << v_integer << " " << v_floating << " " << v_string << " " << v_boolean << "\n"; } json-3.11.3/docs/examples/value__keytype.c++17.output000066400000000000000000000000231453145653700223540ustar00rootroot000000000000001 42.23 oops false json-3.11.3/docs/examples/value__object_t_key_type.cpp000066400000000000000000000014571453145653700231030ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { // create a JSON object with different entry types json j = { {"integer", 1}, {"floating", 42.23}, {"string", "hello world"}, {"boolean", true}, {"object", {{"key1", 1}, {"key2", 2}}}, {"array", {1, 2, 3}} }; // access existing values int v_integer = j.value("integer", 0); double v_floating = j.value("floating", 47.11); // access nonexisting values and rely on default value std::string v_string = j.value("nonexisting", "oops"); bool v_boolean = j.value("nonexisting", false); // output values std::cout << std::boolalpha << v_integer << " " << v_floating << " " << v_string << " " << v_boolean << "\n"; } json-3.11.3/docs/examples/value__object_t_key_type.output000066400000000000000000000000231453145653700236450ustar00rootroot000000000000001 42.23 oops false json-3.11.3/docs/json.gif000066400000000000000000062340741453145653700151750ustar00rootroot00000000000000GIF89a8 $$$,,,444<<P>Q?UE]PTCTBYJ[KXG_PdWbUbSj\g[k\gX`Nsjvnmbnaoashreymzlvi|s~q}r{uz{zŠ~wĎőĔȖșś˜Ģͣ͠ѥҨɫӬԯʳղصźۻ׼¼¾ľ! NETSCAPE2.0!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`-dmhlp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wogw/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:v~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:PTJժZXͪVծz` XJֲhMZֶp\J׺xͫ^׾ `KMb:d'KZͬf7z hGKҚMjWֺlgK) !F"+@Hr;8 .솋ZMt[`]vWmE@!k"S$Ԕ %#_."J !3$~(PT?Cc PT`" ?b<@ą3Mؿ#b \` f1=8; 4 JF e03ƌ;6s~L'ЏW<`̈́z@ΙV1fZ Jp̫i`^}cEۧ5`E`yPZ$p4:՞n,^ܗٮ }]^Zw17-W(e@ yl0?"x0K(dVk#[܆ɶf# 6>`w0Q7;#5 oHmhБ{ux=Ξ\4` A{OF:cH٤ %Ajťo y¦t;6{py%|A\ q| | 1r]h} vr `GGh ox}f~|u$Xl~` (lI`{,5TVxo畃Q;xCrmAhl*61{Gadn!i}}Dj'Їsxa @hsxu{%qz1s\BhxyH* jp(g(qh!kt~ljjx](,A7p\8؊AEydev7ߨ\'_F,;yp(XgkA|sG }gq_ 9,1ōp%pfA hPߥ ~*739+i+vZȌ_X~Y HB];f T=h]xڨ'_ԷQق,᷅їH9`As(QA9)w9PIaY>cy]u(`=Yo pe^kȒ+l;61{1؃Ijd ]W`HȈ^Ĩ>i]7iP!`VTprZc@qRiqQdǕi@ ,BQu铝e`` mip7vxɎ A~)$י њvl!ՌF :z]8Z _ ^>\ȟ @g J ap` E*_\JvU`` A=i'1U@qߕ糤e^Jx 7&yP OIy 5#Qg ) pY YT z$W Q6IP@ap - TP*6Za#)j* T@ګȩIJa%( mx^z|]~j> z  f \^ Y)C7e?5 Z+᤿]yY ˪\A:=МU> 4 ГY` Ш/aOg^z^z]2^yj]fz +` nn]p[A S+m[n[E+'z; P:˳%&8U1\c` з' J ^ +;VeQcIQuSHh+ڐj+$G!(Iyu[p}ǼF!o"rvλx=߅3<?p ѹJ?]W_xgt`-1С&"5:=JhH+֛aE1 G 1– aeE:+'  \J5K Kh QnGJ[HGhe ]=\U>̗jewh+w"|^ 0r& s_\$H~YfS&F)J_ߕuo Ia{,[|]]|_\a >c\` Ja<MelLr _!Wj a%tG͙ u$Gw˜e 1$ A( ^ uo al]\ =,v&KYjfE 1̥мo< oQ%$j]|[zswz'uzj \1<a삙fHƷ3 ^0*k l  ]Hg tlwup [Ka,MVcH5; 1נ  .p>A4H=Jƴ'VO`+w֛kZ] !ָa>-tu]mMwMX}يI,l }o|])ڙ R-i}}F a=}]|^֧FHgq|j l]d{%$MavWl]uZ3z AhrfLN!}]Jj+ӝ՝`׽=m}'Q~XMai+*`<|-;ʯ}Ԝ)~^=ɐXwᯖb fYɅ\q`ݭ3r$a`Hi+c}Mƒh~~2\c_]j-q 8}k7rjX'| \quIr-\PacQؖL_m,rY#, fT~=n#Nk 淀 >K9xq`Ji'QFQHA7qlcn οtMtv='sʞkVNb&E!GAؙEn]. q^j 1 k^%EލhNw7֎t# tn+_PFA; zMqU<ސwa;|cY`JNa8y^1| ~u)9+7"Z_lXtYi-_ l:a&{a@%i\|&nM񋉹_Ju1%lU_Ri_NߥwV07_%!H G @ PB >Q!Jh"A*0B|e⁏%%>J)S-:SN1{SСZ$TRM>UTU^ŚUV]Zi3Ꮭ~ }@UЖ@N6m X B 0FY [\+3WŝMY49 5`TzsPpE;,ٯXuQ G\r͝?]>ֶBK)A3UqAX5~[7(M6`<rJo;dYX)0  0~8r0/&`I30!,Ͱ|C(:J:~3)<#a"β%2J)J+R)vixB+R)$mˮd [꫷[Q'@\Ck\(m-ĒrLMBF9:Q,c< eζʴ˖ ITP$ӳ0?ru%RHQXI5Xa%XcEֹ-.\<4ׄ,AZVIa$ji7YZ \kES5jmV[mE;1Ԧkcj0P+YEZ% gFPe lm6l X]%uJ_K 9Y_9fgȏYj6 \`[V"MH;Wz=88i|5&K:K r$ĭdN~h  €ei-ڤ z%-{%0 CABz (٠KSx1H ʂC+ 1h< Wd4xg\,fwsatx'?p:z_Be)KUd4- Ud;NM%Os".$%n2'ǙE(1 %}Tk\<)3_+ҕ,* R,8'Vlf7rJ.`Ⱦ0gfʴ?r`٤re H[e3Bwnpz ur6]FDfFm䙼5"wAkiL-T*[)eExmSӶqk<yE>r!~ %(K0څpiˑ+nT1Η%R[&kOҭT)&(BMw0dįȾM˙hxBH[ZKdNи+6aK;wԙw{iN  W͒&,&ͩq7F +nܝ\$' 5t<M4Avd_?D";C7~ e<ҵk% !pZOwȝ{|x~!(' ߖ;{B[ʖL(C?Euܣ爥rC@¿"!OF?ߊ(mPX" 4ds(3; ̓;>0 4 c LS˧Oé<Kk \:Aຊ/phQ[Cc1X8`C;(Kh;ۊ+ @3d6tCcAxhGdXŇ5\=Xz ;ZEŁl]ńTȅ`܊NYDAȈ88K*Ƨp:FX(:RG"dž+Dě F@{tdC0.rj t x$4ȅ@HʫʝpHS(4>q D?dHIXYۚ>k4+Ə3HK,ˇpĺt & }G0ʧȅH=Jʩī$M6`Ȳx’EY@@̶X˦hKPXF):SˣxA'T7 @BSKLy40ݔLPJLΈɯhͰLЬDŭ lZLc dGM,UMiBʙG`laFC28Ǯ:N ]&MN; <0N<<SuQ6dk%k$;(6\+dH$ďRX܉M|DNxK(T#"EĄ (} L0=5DW04U5e6uSp9S6Ռ:S7P>]@(S@࿜80+O R䛉- 8;[ҖH='F4SfT SmLN ˅M SSPG* UCeb5V,3Y] ЈP̜SԂMLLK!ɔw{УU"UՒ =τxĈp8-:Y}~؀GfMZGq͊4 $_u \ c؋]ĈG Q-K) { ;ܶuxֳևϘ؈pJ`X Tܼsz kBͳؒս0: W]AL\ #4bXV)XZگTj7PMZ%Je 39VQ ћu[Zi} W;9ٟTLuZxE1UXHW(Z]+WpW*#K2ٖ˂#t hM ۊ ԏMcLե\|%M$煘R S4L Tj lΕؖ5ͪ\*ۅVv ĕOWxpݸŔY٤͞Wߩ+O^@^е%>-F=*2`=O5͊M0d ͒EaI C؂ \LuKq,@\;MV$&8ѨU .GLzE,^m\ca ;^A,8EԘ6>5HF)H%FӛT׼U)]錮5ۿ\ϊ>ӉEZR2N3N̯Շޙȅ<^f*'5 J\^P枝L5G%Bs_錬BM$dH<& ShcY-n%:\M㫘_ SV`feVɅ(O"]<?~޶_O̎X6̞vh``3r?bygטNޜR߶׍xzZ3e}F~d&xH 'Sp螸@ȟ>@PƐΉ.R-njf͉g fj8\V6:^eA`Bl0*ړh_xS HVLNBnE !YYoFh4DN Bp5qG,dl +iҾ|fY6#ow6 yApmQ0m+A/B`c F* p>>ݞ9^cJ6g9{Maᛴ>>n *j&a6e ' 0c*r0WU 40hfYVމbsiYr &Os: ;=UI$nft+ &b>ڌR$?c`rOgZG6\~aey x\Er]6$wi0MMj5ke` lpX1(B ʂmҤlN8u*Iz /^ } B4_Glvu?}_ W[pW,wZtOiH҆9w9C @i̶so 7x&n3טB6f^F~ g,ָԟ{[~aKl`cx̷[xf{"'_ ][5/{>MҸ ow( e7氛h/B`z[%|HxdtFt:9,hp` 2l!Ĉ9h7ri ObT˘2Af妏B5u3ѤJ2m)ԨRRj*֬Zrb%"e,ڈfL"pB_d(i<;^b)˻bL(XlS=^\qft$Ӿbe 31x} POD7‡/n8ʡW͝߄t.u 2ao = E<\cȟ,TANg`IDLx7m%(D=dK-wo*v!z!!8"rCtT.LaR|= \=8RyB4#C{{7}td8Qӏ8lDJLUB(Hc-8V)%D02an%&Hy'y'}IURl6$%MҟeوSpO";n2?p6D)ym)TtX@٥v1ibsE `X]Ҩ5QxE}v#J@-cR QYfC3P}D 'GB@ԔÑ6BI79$)TeŦ0*GœoD)9dgp;=<&2y$-*WѬ)`Xk>&CJ'RC*YX0#oiJI4NPJNYh0ˢ3d%GiF74IA@X#9(lrѵuR(F3QQ"fSrуfR {^*BLNEJ o2Ϊ*%Z0ʥl#݋X |SRp3DNqٍšn9tf=+ZӪ1$NTK.ષTy@+v d,dרdFD6~Mg{X( ILKUP -lY򊉞MInKR +Xr( HRֽ }> oRS"@@ ,0)&U>;_>Q14AXV! qݛ oW F=-3 sXp 0Ѐ_yt ÃS,0~(Ip!D+~QH0JP 8@P8  P FxЀ W~3-CFB8thAу# ,T2 phJ8Y5 F{z8Ft#]Fն5s]׾5-a>6e3~6-iS־6ms6-q>7ӭu~7-yӻ7}7.?838#.S83s8C.򑓼&?9S򕳼.9c.Ӽ69s>9Ѓ.F?:ғ3N:ԣ.SV:ֳs^:.f?;Ӯn;.ӽv;~;/?<3<#/S<3sȂ/d!IY~h{CX,3{]{ɇ]]81Q,C (@" @^6YW&P1L aQ0„)0^M05%=ݬ^a,QN=Oy]%L~ѕB m%QU@C&O6D`A4H/r9:[Oz<ESOL1dP*DVG,@4<$UB@cH8DJ"C@c@&e=LzE0A{6*`&%,C[l"@*O_vH>ҢQB\&X$DeA$a.G,h.cX%衦Bo@AďUS#rllbE>.ltBm@Q+ILLDD hbBYr*|O%8e(BC"}^hA D(AdB>iňnhWhCVPW2D!@ڣZ @,keL4NX |SPހBA}*\.L^05BD2CCqKZ E1$FÌ7:cVCfd6n r(t2e){XjBďpH :fCXڢ2LBS~ Al$hT@AB @pl-is.Ī\LD @Io'Qĥ ao\*pcMjB"gq` ˡ-gF@dm&CkblB;P6D&FS. C$2 `C(wVuF,j2gOD&CL-pjCk=:ګ]j&Ó6D EB~I$  JplT*CVĪE0-CԛFF TYd2iBmtTzH6D ,QMxl,aD*D$ez)65SƄp4.3Dj2CT>VdZ2.rܪyQnZmO h*^H@)ߎރdj2*CE.CcAMR#P@0@yYlST2rEhD-m>R2-n+|t^DNo^on2nF,*o2j*UI/rntg-U萷DTni4AhU^ĭN\QZkD1$ Jn-Cl2 'DLGk"A$pC@e.T)V!DTE1qd E.Cq>GĩAl>"!J1<ЕM|oAC1r&mTmv$D`ĎY`4p2(/n-]2ID'K -S'l2pmĄR- Ei>沴tȭ\*N'PJ2ODr46ďqp NC@8ĐI3[DÐ2*K̆E/&/2AXnB@=(\M[P¨9)~sl,A+I D R\4eDE­v.i Bw39rcIX OXfqL&#cCRrx>E\]sHI&'NvOnB 8&Q-Dܕ)$%GE]BdU9Df$D:0Q&n֒2?s8P 8K)#e&>b'jC=xG+U &bDBlnַLXd m7W -Dz>gPgVlX9cW$;jkDK!'Cw5{WP H5S AJvgi<7QF,:~0D6iz;[DF 7H$"X:_pR܈KNEk6 SgABxKtD xeKIDZ#DP2A*O0> n~6mC=ZDSOrΩωC{Rd" @pˊ:$l#8+uS G9yO|#5xityC@FR,IPlĭ;HOv!/c'f}R,i9-jfi]p#b1/DgE 1DSW RYvJD3 jLRCSe#-B@RD$)TIZh2d>I6@ȕ`A&,@ÆR DJp#Dr8al8GBHiJȗ/|)B.,)z H*J( D+.&u<(BKk V/M..#SHEzաud"`␤T!MBr$/ t r$n<ˮ0s,D5WNRut9x/ɏ:ɤXދ 0*fS ([5B2. Ԇn+Sqp,J!~0T7qYy矁Z1Q bHQP;hWv4JIzJ II1dNATk݆&(ԷV>j;Ft ʗ!([Qj v߃r%~$f?Rm$r^XǛ! %òn Q ֻ85:.FOBcBobtb`k3Mx´-Vi6m L n˲s bc$OF*te+c-"r DfbpmDefNt΋D(cD,8lHD'NfRp/hbf*;0pgH(b dBt8D$Bp !bºp-4$/!mt *.ޭ -kp"^2*椥8N"P l  ୷&.8Ix @L۰wFX ͤ[P,K|/⯃.`;B-^'ӞBt@p Lɨzڭsy"fx`<0#bRoo,J!+GQxNĈOVr,Lk,$l$;҅  7J ºli*8"h"ðҝPK ( EF@--?Bjm,oA - kل-)RG o!1!32!i :fd D #N#\-V/݂1!.>bF, l*.#,x(x-HKQ*cRj+ Br0+=6O#3Qk - 좲9_5=* *;h$b,0#pVl"@J%[ZK!+cl "*e-g?"qH3-$sC9C=:j0(n(/J&Br"u-΍ӉQ E|Bjp+ ^ q Ɔ((4-b(HOۏ>+F5q2LOEjOy*úF >B&qs,,e ̈́f%/HUL+;&4@kVrDĖ8i)#+BI^)(Q?4TEuTIn )"&KԫMMt>︢y4~SGF%p*&I 6\ b(䊆*ی1;q$,R8ht.oB9QrHSQ$bBHSK6qUx z0ዳ4~N7N fmXO$2qJ7G$/L-*&uU,Rm-g-"d3tm-<ӂ^Ta6fevf}fdN8F$H)b4pZt,z'N:Kbe줆3"PPči| V.nv!P$DL-Wi 4 hZe4jMoj6x4 $:"5Ů#L0ˆP 'D<+ rRI&B݉5!^d5ea4!esb}fwxx c@`a|̫ @tS4p CL ",R*X'7 b:붋I9gYJk" "*0FBc"-,`Wjf B®R.- Uf~zLePʞb{u_IEw(D'Bn}iGBdq?f-Fo(9FL`?,r֩vB(Uj,!n{4">l*^=wox8'e[6!hH1GW! ha6N"1$vUO $GMEȗ o&4 6aOtbJ_$<-S"òMא9%نf8K b~0`wp,U!DԒ W>H .1bPe$n4Q}O80B:eqҠR$&K*zb`DNV9YN3Ķ 1Ӳ+lZ!0}v6+'7 %]1m,j=-'{{PΐPM윞8%Ii1jj;;E:5GB33W:,Im*8n!ʴwJiǺLA/IXrM"gW[?mpg2^!4OdcX!(u-n$G^vz:T@wlI !Ƕ@L譚XoCZ eRr B P Pk!m y.陎_"h.+1򠘟'm5lm35̹0$Hw5Q3#;K<"fa!#()V"kwu"Hѫr{`MZCN-|LC~:{ EdM>Υ t:,dNP@"x:@%xJnWA"m@=o F^[" ]a>P 0lza7+B S.QĂ" "+^>B@W4צ^Xʣ{F̕ӗyRxc\g.qwD6JSa [-ęȠygT"Ä<~;~"7ѳm};DNbW|Ϊ*ehiVs.¬/13+ksxq#j's=tZޭ[+T%0wp"qzN:iw$c1#Z ܛT 8pNDݩJ-GLgF 1])dJe$1Ib#-#ECUʣf`<)1b ]+6!eG@%P)z2yA^N +!i*HU˔OTDł zO%^q@BZ[= "ԽIhrB0م#Ew)T!QQ0! &+@L PF.&q`B 2ʕD2̙4kڼ3Ν<{ 4СD=4ҥLu(LJ0PD@aW!D @1Lj.Їh6,* Z ( b ԨꁔH% 48mH00+IU!2AM,Ԑ2Z y*`fL)He 4P0ݒ@yB .p@ -kPCJ \0s+_ep2q@2>&oqR!%P{[m4]B5S 1BdJx%@їXUՀ ]Q~Q9T} FP цSj 6&4XS5ɈJ> eRNIeV^eZne99(Q!!u¤|zB Q 9"B Ȓl I|hԤ(bVUd { A}ե$"Bx#~e JFD$OsVF+-B4E?,mD KrB䯩d{oa-wd mUD7\d6ZD^ 9-V m[D"TGnwt|͒)?ȘB>4 V@w I- ! )^(e<%& /&SUP\~$*qLlE&.9,hX"#e$ B4F !kJ=*BA@rd!"M0 A>*&~R$pĐhJ`+!S)$ bBP" dFd}%d*0 08eP@ޅ? Tyܨ8Wgd͑AfL(.%508}JD Y2d jtYbA 8കD [7S; _OHK|Y/ьjtGA-\hJU,\$d {HJDĊ|A/4Q4S$ 9k9J%yzOJ1`JƽZQYEX@ #]5 U*Zd1JEIEkYAE7ajꐜQcL2cԆd̤E"K2[hI@P3Dn\R.cUulF|3o w- MT[2T-x'`&3O #r;.+H'B(f7$F/KYDUGfI G50?( pnWb,pKju.0 HcM8KP_,AxvC `?J(>@mt iJ+@D]D &%U۔oJY8t<+ xvjxA+|'`8Jr1Ii̚k 0P^! fAb8}d/ϾWd"%%Bl`$+G``>SPB@^i4` X@ztdx%k[|`کo_~YzܑMoK3w76Ē+or:5`y^%5j¾/Ϗ~-Y&3oȑfX (cn:7V~ Y} Q} HhQAyZuVeE+Ȃ-/~_qx18{}/mNc.n=nnRN\鈽דMЬ;[~\m(>欋%ݬ.~pLm\MRnN{k=WMзkw/%í=蚭ٌ؇ݥ$p,~L E>+0OUV4q^k _s)>ئP=l)/ϹlDsL_Pc,@,]݉?=[YĴ’Izl/ܺ=T>ٛݿզQOo0 +,V\0Mn~܃⥼ڭۖM=KlΈ{J,*0|R ( *DC""N(cEJĐ` C \*W21eΤYM9uOA%ZQI.eSQNZUYnWaŎ%[Ybsc$A#Ov a\#쭈W℄LiE+⥈Pnޏ CpgСE&]iԩUfkرeϦ6헸u2ň 'h&#B;1#&88/dV9 [~\|H{ϧ_}߿nlyePC;pc 4pHNߖ[ :bH29=)[hR,L.pp=zG rH"4H$T2IEP> H\)Ebȸ*H1+ ZhpQ;ŔLޔ֐CE@Y@@tPB 5PDUtQFu\8/KJ ɂr"Ф+GeHTT3l!3ONx3S=G{W`vXb5X2S͎hN5W .&KQN[uՐᖓfWLU^|w_~_֢iQmNqEZwQX۔ v5)kʐVӥnu{]Dqn{%*)n˅|"* wLoThR5U.v_X\ H&B०D}3 jvhPT| aeHZ׻G 8"SK$eUZY3yAM\qk$摈t[ꄊЯ5Hpkt[$i5$GmzDR fݰMo{lrx-~q汥"m[QlW1 (S;[R& j5Εk0vMIx}s옅{U@ ZU\t]dDS[ șzŢ|jKkV?EDt]k`8{oRZ犑 :on0,%^nU<$;;-yg~HH@ӫTb*FJ~ݢԁKzk^'~csV+tDVQ_5HW /Oip6Zl('Q₣ۼI >/d1̰7 P% ")kR[90MA,AD\5Y1;XPa 77Q1";3gL +O6%h;;A,B- I#%-B6sRo'9jZ9i!>gG7|4BDLDEde Ec>K+ð3ڋ9iUӥA@.ks. s .r[D\E]̵07 D/!r!-/ a# 7 #:Q'p<`R(+EvlGwӃ Y:u02dX-+@{3=k\˝6ē PLA1=wHHJA4K2EJ:h5Zö˺8ƪO:Ӓ(EYJt4uHlJ\0rؠk@nt o뷁HIq&+)#{Ap e*12@ LJZ5JܺTӾal/:) Ӭ --; 8~ :A*A0)&mPC$LٜMٸ:#趏ȟ+ӫ K)ً1%*%jC ,*؃ OOBhC QpEJ; "90sPKKٔjzF79 JrYOb/$O P "2Js  xϐ1r6ʍ!p"W{0jJJ홚rz"tB9 -R#=R`&84<[DC3a=q|  QX,2 پ-#R$S9%&P, JBQ@}Q d̛D13!=l(:=m>SNTOM1A5&TlP ";SR9{dԳ=5rLUC:OmVg}` A(Y悬*/kt5[ L4EhlIVGT: PSv%3I;,?hW X`B/4 4¶ER+DD":/Vljج bҹS)WąÖÈD%mY}Y( |"j4E# BRK4ˊxYһP!}j К흝"oJL9LO؄<60M%ň(cLd9- dT Y0Rݲ ;5rm {N:Hͺu8fdOc. B+lmeDL#iP>=ݞS xNM b.Nfz$Xju欙H hfkWoz#'ZL2mZUsv? ;8ÀK`{iEmЂ0AN afb. Za LZ ÈXhho3UKinj]䜙kڛ<!l1ROۣ`>mʯ+ǩ 6H Z(j,ik6> ߉eSђ|fFBY[g0-gr1n I?4VO?٢ Wk^m\|طȚd9Bk[IBҞ>۪*)ڞ>P|<Jn=h L8 hn?e^kB\{?yGG[dZc&LlٽiiQo%\N}OO 4  #OkN3%老Nyz2̒P>&#aӴR*TOo9]N< VysJj߉n7ӌy{ʯ4ʅU -TFyH0r&3'phP#xpD/|O` Pz2-%@"tZ1L؉e8]K=Ph,2D GZ؉YWň:8D/Pa !P(p Rp„*D 1Rc&8Ȑ %~$ /dJs'ϞJr! lz"M̕[J$x&D5yT213FV58S(4+w.ݺvͫw/߾~,x0†#Nx1ƎC,y2ʖ/cάy3ΞzFӵBiBړ+r]!שaF R iBHæ/Id{FDQ`"6sd !ȝevJ#:ϯ?X"-(5HwmLQFUM!F(фPHeD'U4eFrY5~}0Qxr q^\ ZuAZC=Bp(-XWb[r٥_cY&` :2U VPEבAԛA[laJ+DS\T!Kp]sxebZq@f~d$\v2T9"T٪Z⚫G{vR'!PPB*^\(zxguDtTU) $D\7ԙDDBBگ\#,`h۞Ua a5p#>"5L;m^YiFL]P-h)E0W)$ 3ݴOCSS]ՠrCB>,VXղL2IfxtY$jPK$}n^D$4!& 6iN+KyII"֋ȼd*D7w矃裓^S (',)g8"dDl {J6 fޡ7_#Is 6 xC7[FqB.OՇf0%߾c#9spY"M -0'[[G2|/4@r>P*O_it(X9 &p,aOK

0z#?2?;*$ y؏R5-1@218MZ2 0H !hP‚ ]z DƢi%/{_3|̅) q9]OS!Ad nI'K&&e!JLGIJŀE. K-)Ub$ ئӔL}(A jЃ"4 #11K{ScW ]25,VM,0,>"UjEv @4"1TE(xT(SԧB5Re GCєWUR5&]W;y`iYέLK&BfpB-.C *S*3) ԩB6,e+P ?ef;d 0i $[9g6ϞLuГK-퍪Y^h񂐜2I 2 eB7+(a ōaSUIuKHp`)|]@zrD E K-0+C80P,O}oyS^@0l&YN$a.&t'Zs[b퍢@刱"W'!#ԋ8=ŎA R8R2lԽEVX.QEDHaJJ!aoOZ MTBLR!# 2$.3p!r<28vW4+mK[4יƂqpF@fps '\&N6]5-}0ɒ4mkc\£IkTr(e*nޅt+lBAQ9eHĻ"O(&!VWvl"Ѵu[!? ҂&=ԲXnqS>+Gm8A9JH `|l[K8b=KoӋ‚HgA.2t0%rԻf8l\HƒH`gG۞B{KF$zgG1e4gUs=o? q+Ѭ?!Hճ2h'\ m\SxEWhq| u␈MXd±բQ]Ahc ` FUaX;aD U@LYXot@4MXU8ZTDűqYЅ"F!UT#*LYHu] Є DKK*IdJdTB,vHX`MD`V &EG-a]Q -yV!qX9ndS3~ YMUAdYY ` ?ҡjL "D[RK8{I!ilX\K#9 V]\M|ma3S*EpP> JeZhfi #)#=Q\QE[U|xLX @!PQ\O Tvm^mbfRhEx⇔;fvjvrgx\!(| @ԟXFYCnyfD o ̎]xJ4adpQ]DT +A--s)!'Al00_qi~-B@61^LHن`\aB1`> Ⱦ@r88QhE!b*k|&t#D*EhOBG*Eѕ|='#{hR Kh_>sFkFOh\Bmj^.M8&Eq2*峺TĞ\4tщeR4!IŽ1K `/^B.G9JH*1GcuVk5 TT'#2d΍Qy\$(q&28?'E'ܩF.opY %ʄnuc;c 1LU!+]uXGZ]QHxnZi5%GnC%g\PyR[iM Aq#wr+,IkP4P`ќ`q*]i_\;&DE&G_OB/ e*؎B@ jކݷOHptyA UNZv\xӂK=B x@Ik*l^ r^@UxwFhЁNDiyKU.QD-RSʠd2/1@-RrPF{;DžT7y2l8JVD4%|0Ɍ.Ƹx(8y9h†ZMqAa5&1M'lA!WL@1O|u'L΄A&2D& Z YT~qכ|zEk+)eq̞D$ě%D-YU<'R, I4+EU'- lqP~񛁭ɾ{ sml 87Rt7C>\X=,`A (bAImo*qޟVl"?6ɾfY(GϤlRHcv}7]y j V aB 1A(X B(p #.P0#AB~ @#8i"ɌAF D%D)`KH$*BK6ujTSVzkV[vlXcɖ5{mZkٶun\sֵ{o^{BY|(a4*DLY )x Њ+pGꬋ3- 扳 Z<0~7_k6 Yl{C՗[3Y -Y*o2 ĔHߝmuޙCA(iЂfIkL FLէ'Ȏ9̐nk #-M I ʶ,&Zv "@ºIlCN.QJ ?_o/!Q fidgᮀf9.$4Z1[<΢((ЩKGLkzĪq=ڦmk(%qIr&T!}@ǒ,Dz%H.{9A~!\@[."@|e$2rמMc_T tY 4WX?U#<>v:@\p=OaXF3|%#&i #<%;4C keg4EK1Us&nl&\!#4~(IYJS:/8J%:+tb>7!sA`D3 1Iv/j%[8;(ӚQ UnpTwJsT:IT>) V܆= 8D22FPͩ$_a NHrCN1c=эaNPj1A bv)UJYRlIP ] Y9W>aIK1Ѣ df&?DAlD@O .)!9]$)u\ZViUZSA$a TvB쀏V(drM¨F$q$!Dlh"1jNDQ1)[I[ZӞ{ a1Y[IXQ䡟P 7Y}uGuu7(Oh 7-RݜfϠFGx[^rE'HcL4O$>hXd& !mҢ#uxP|,7+: Xha!qL#~*y@[Bw:C}evBåZh' Ç V] 䈩\e+_Y ,(=|Gf"{c@Έ] ˰a9ܔܶZ ψ(}0jщVMZ^=bU66T_ޜ!7 dD9cc*F'G4#ҹ|a]k[׹ d6M}Vs.]:nɩs>Y;R7n[L(Rq@bK]ns;qcli5J#i&C7Cw< 6*5pm2)^q_㕊jxLս7dljFWɩh4/Cيp[5xƉ^t TV ߚD3׹dn].IO8ey"9iב|7q^we-_%dl\\oJPac2#i'XU6pTn¢-vpC:`ɱ{ӉnuyssS_q}L}_E[eN =^7X>4BdB*7"n /hkղ)G1 1<KO0L 2 1!1x*ݚq6t $Olxޮ*0 0Ұ%hrjLĶ(;0[i C.uЛi,Q>0SS5W32F 2ǮZ&(4[/10 "%Y99Q{H`sCΦ Ir-$i2t-# /9LP{3$E9Jq0>S>IF /7 I)X0%fol*XN@RW$I0B+B.r A JX8 ( $6oo횚(('ᐺ4#,(5/G{GoMe f^l08dhZ8(F2aD|;s P1LMZhϹ̙=LM+& X`XiP꣙'$d 92 I1d)U2;Ck"T4M+R/եީ Ah T^-<. ڶoK ӦB5-# U62'^ˮhC9dD SX5S߉8M8?",?3 NnC74)/&Kެj䴠bBA;1Ԃ aP4` ,Hp(Y_󕌶0ChS=:Ր!Do`/UOd5"K3)yКxC> dOeC:uS J:)LFMne:&CҘK DB$?#(DVx9JBv^9)fJ6ekzR)0e=6c/W+sJ c]UZB[!(i J(6bkQ>`,^pqw_S]V &c@QhbGQވ)U_,1돇T="XTpIpu_v/ktT0fik0ʘ<߈ LȀN"Cl GHvec{|mf{ c8TpbbdҒ'ttJD0\i=l?c dGVpJ*|__TJӦ%aWeD$E\gQ+mƕCT`pJI7>1J`^jʁk؆oxScA\ Ƽ2ͩx251Nzi5z#n!uuKpqX#CKND2nIZAJAmy3ՐIQFem,gY; XNVΤvC,Q؍/E$Y#?`YGC_;PJfnQCn/i7 @-Qc110SlL#DXK٘I1( l0V4a#7m %ঊVyıh2|9xg "י/`y,3u7faH6YֈjnU,31=١B (dj𒫚-̫dEUfĮ846K:=WOe[slm%n#kڦ{E^P!'cvF@7no28?/y"p@o hNOi :a1L77q'?fڪZK{x<Ԡs(PaR1m.QFwd ].X%vEߐ皲+[{VU15NY$O lt&,mFcOD`-s|1 .(ryO7꯽MI7w KTZ)@n[ۺ{!Ldh[[IK'3R2bt=})6j۾[_Lv4ygȵ /;s$9+/5C2nw/|B")W-vq(A* /sG3|a'F-Pj,~ʜuUDZ\7>8(#Xu\˷03l`\q &' /;WV}vhK\ϙ3C)6ZD$u^뷾̷jxi)Zʫt|4#z|xP n^/ `f@VD@2h1pLY [t1 B|?.^eݴMݔ @r`S`B@>سxeCгT ڿ&QCєuY7AhH?OM `i$c穋1c Ƒ @ܕLD6,-"_*;E,ؠty]a 0tˈ7`ᔔ?D4bD|J @xXK+J 7B ΕfTnPoAT̉ؑr6M&-D,Ԑ%nEݨIZa6U'd=l )5 $\&raaII,) l'B/CH;Ј(3S@h./P -&$S҇4y%BHBˈ\SRT-QhX,z*GYt"S&)M žDuOIB:h "2tÝd}(D62T!YH"\(*D!{,$D*x-x%jl9Jֺ鰪'9[`CP⌠F[EbU;;! )$Bv/[E &L,N'x+J&*Sn Cˏe2{/Ʒ2w]+VsY=$p T"cRaK [4 & fMpOtܭڅCu]ܩ :Q!s܆MFIxӈeڝHaAz_̗!x=mdfV";VM_`i0JX.{4YZ>é]*a=q$@K>L a+C哐"n}rE^y#G^H_69~xS3eTYOAԨP!G,PQr茡qZ\ݪ( 3%A6 8/@YE8_DB BpVw0}wx0c`&xXtY2Vx !/P6x d6c? D8JhDWxtHBr W/\ 3FMR?@m}C(0䌾HESטRCM шkčhRS3cg8M030_Bn SoT 3 @G`g'd%`KTA2O=(qAcqAk1!P6dkLg6J]، 1PR}Ca2 /׏;Jd4gĊ{}iqLC X q#VCKDEJImmn Zn8XThDHEĨݧ^43njSSƈiP /㌯@ш󆠩rBO h3Td`di3c^눚x5=6>h3F^$ՔbJl GEHEtL8i/Kv'bA6y#H-Z2:; `G0!APgDŽAmə JP՞ԋ A+%ٳAPT06oT@moWO E.(shqS2Ǵ PWЈ%D?S$Yf}> 7XQ`=CD^AhɴX 1a  ``ZyLaZhIuID8Se.os>s6cDLF20ci`qfIi:XUxAi{33 .T~rdTd`.DY jK Q{]iZ>ȉ˩J$ D`U 1F{߅R _95whȖo{zd BuYԇhnՂ{$.p+7PpUBT*wI$2OS]XLJTpG "aSqʦg 6G KX  !? ԐlhDv QnE_f3qT}Yq Pj| K zɐdVTRCH,JȧF 3&񥃛dT_R,_0 ExD_M`L`DvmWJ 2h D&P!) !.J8ٔqvo䊁]ڢ 3f~JDlD0cnЋh`fe?&9Xj W!ڱ<@",r$ꁲ) 5k-!;f ZOA˓+erW(ӋUXLD@ D{DJ<)L1o^|3j3hZm}e3D xd5j5||4ǹ+o I?+JwԇXre ѡ+տ !  `a27@r;y6Ջ}xKx'|;ˎ6ȹPcx <܋ՉJ {Uk2P2ߥLIM uE\ &#PY3#t Dz6)"R-6)b!BbppR.A1@+TZWc(?/#zFJ*?`Kڋ[F~8/sΊP ADj0wj\/SShTхKʻ0΁o\Ģl|۸= KSe  16Vauq”4d}U6:*3Ѵ`.AlGP@*0a,Yr<ѵy'-k--"q 3wcF Ȟu{dIT`xsHԆKV`z JʤD@RDt0Z|_*n dXK2 ~Z=|}n#?08!m_ZS_| }H՞AD&>|ʬhwFօ`Jt ++\Ӝҹ|Pr xIK#T puA3r "P`OS'5TG>> ՄF΄Rdt#c *VQW~zn,dٛ u^t^`\>@vHEp#:>~ V !PPKM$[M{㍕휉n![4Ɲjב̓ԛ^^~>IɠL-H _LfdYWy2F ;"+KKtc`LK pVONW\@.O.JR8" ]rىLm=`he/ns`J2 >,m~> `L·{L I!F E+4>=D()4z-@ "(j 릂B) 88(!|:hɐ!(z<r@k(>!o"t@#Ԏ@ê(:9q!w dĪ)!w!b'DrBNr"S(bS9֤PۯΌ6b"Ai@wc!"r:L:L*6+R.^[.`׭J7'-Vxdp\(s*t: bDK&<*[G8G?zL D#~jYC%DV2&Y1R^+ "cRG ~BSH ^R ᚔVYlO4% J Z2u3dn ٗ p~DMJ(l \BT1)$́NaBPg9 ˛%QHd@K<65}>KH!ENN? _09LbӘDf2k[ -J.^0h*c-y27>|1I%~4#HP:[c,XWflTظ΍.+f i^:Gx1I*C"3NaCDp,>JOUGpYXJ)OR$X䡧`7@]HK'h- Z8JPo #V0>VEnJROPM ]#ArGr:]u\G(2\+65$;5MFB7* Slf5Yv0E@3@rA6nq[˞ Z]|;ϩ䍕T&sb$ *݁Re7I?@mtC+ "ރHq*BC I͐dշ=)P`֩TniCF\=+ MNc :lCtjRiH!3-V]R|KHuS+?a8X!TqX(aGnwprHj9zŧW,l@qi|8%TmQR\phW D\*!r8l ʳ7P1@(eke_!QJ_U/_2m>X!͝u&ƶ Ahq'Mܩ*vtxi>N.uLK*ۮQWO?fOlbo{-D/ D (%7V-`~%̬Y# .RÓaءeWö YZ;7UJg8&.^b8#%|.v8ԝNjI>.m׵W.u#utkχ~?}YI^cEg%ֺB 0aܟ~'7dtU$_R|Cb=}R/l3J=s #c Z5,P{01T!r)¥ S` s7+Rϓ R b y::7A5zQ$a:!:36@L":; R}b)ClӉ0ʣ* CDTEdDafz&iQ4t-虌HAFT?T4MK/ & s 70QBCl=I8j20+AֳW9 zة !ņʙOKPB6 0 9ʛ0,<2;28Q80Ɵ d+BKy\Z«=+Fi4^<6pLHA=ԠB';|yƗ(QB=I42((lRz娧Ʌ``IPʨʩʱjZjBp ?x 8'KJXQlS7{D+Jkj9G H Eqs7K=:b@ļ"ߠXyoC\H|# (y!o䯺 SL(G)n qQzK@ )!H,+ ̣ *Gҳȅ@2C(ź( Ә0j} q\(%aH T,GE % |Q b\{d[QE|-AHṀJu׊M  ѰhK H?xȵP΄)$P X ĺb /=ԿKi=hC ýFH0^CM`#|7xͩ͆:}Ah ЉPk/t?H0S2Ci> QߠHsЛ`6X DQN ٻNE;'RבT-}=G}0/2dFS  aC;E*,05u#? HR<>? M; "SL6U؅e؆,a$xr9pRK˷{9W2Y??5̗y,(:(P,.%RF]MǴr389RP!\pOi TCDT\-S\"p/LCYHǬ +|599U]鸆7RHݫ옘DIi[G1[U<; <<iM 9W\(͛0yJNXQaX ﻳ9=>8LJ$y HxU t *`@X`Cv-[dLheFWΗ$tFdP~ e`\ȂH ]WVe( ˵SYfՠg+nB,FTe`Pq^RsR0XWuveoT~T2 H^ gDhȅ h`֐^. pW,JHUNUnJ`f@hĭpf]4ni*kc6kfg,=PqgemX;=ꦎ~(=F\Z.dXVfv뷆븖1&6FVfvdžȖɦʶ&6FVfv׆ؖ٦ڶ&6FVfv&6FVfvl'7GWgw '7GWgw7!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++333<<<K CCCLLLSSS\\\ccclllttt{{{N$T,S*Z3^8a;c=*f/j5n:qfBlIkGqOuT{\H{a>6A9E>G@KDOHPIUN[TZTc]jdkermvqys~y{venhr{v|SZNjua}Ĭ©DZƍ…ʕΝ̙ʵκ̸оѢѿ•ęǝȟɢ̦ͩЭӲ׹ؼնôʾƹھիڶ޾k H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nk2h&@ppdسkν;DS`_<>qQϿb"Y@ @&tEz *fZ5S(u"(4hcF!^0@()^CBpL6-y$Xfr%@)dii lfGHdgix9"m'h Zr(ETBLa)F*餺祗, cd.g-&IꪬZ&-!_*N+ c| &`fBhlwic.F0X+]H.z2VĉHok5Žl@@DFA @|Ħ+cH3o(2UYU 2 \@c8ŢDm4R(2%b)_J7&EzXʢA' H]1Ka* E:d (.('ߐ )N|(S.)RIĥ|tYS IGy$h&O*+"q,I rH0BKKq%d(MYCIKJlgWV)&EzOT,V06d lg\аVH5" d-,eNH(`]CpKS[ R @o Z"1/f ބ,EMaSPPH-x9G({"syV=-H;d?ďA.K%km-` DA妧L̂'* ݢ*zbX|)DlY=/I` %En*HU( bd,eJ&TAp/H@`Z6!Eub!eePq24_]r` }ZQL6˰KRP J<̠"lSΈpw=D,7Ջ5\"a"BJ@!SiCh  vIhL s߇EI@ PR= MO%,\!dLj-뒛 QRiåswE\1@0~O خzhg8  l Yu"6i` 1B<F8R*r;V2X sA/)BKܗN,X&&wGF%(0lvC.%"% @'ϽlEcIC ,X⇖(CQ )J4+:1p1|xO"~W4YxXrhfv {,tk"H|ll2fa TFsvXa`'RVׂ.tDҥ%c~| xm?U@-Ǧ c'gA:Yp}B~{L iAd&\SgW ~`  a*Z"$g&`lBQ $(7 |gpB2q  PPTx&1nt.؉&G(cIf:W[Їߑw0.Pz~g< '$Ru"qk dh@q}k C2 ?'b uU%zeQs"ik? (rj w"Y3X+wF}؏pkjU!;p rŘ#F巏!BS(nqy J+q$k,1 ~ ~qH$FIF At{(i_V[d B$'@m c= X"5 XxQ6GxbYL!  7H 1H2)5ua 7%abyv RQ BoTv,&}`VYhfVko"XyؓGqA  40$NJ r:YQ4utCH0(b !8~b 1, ac0 `(eFTY%th1LyJ8hH7$V "CFeI~Cz$$¸ĕ*th> .))22x-07. "p_'|0C0Q A ZEaA+))JH+ɨ,W둤q5osRZ!xvֹ mpӞѥ3Y) q@ '#* N2e8@keIzʣInxጀzJ$YzFpqin\q2nDBeA롒;eJ4fv`E,* E"A)ȉ" %l\" j ~s@z4#(.zL1/cx  0)ZAz! Z 6nY0.ѧk2w )ZGG BȮꁧQ/}bK*Bj ! 3碦lRU :Lam"%I_Q"DV qMfJ9.0KVX"hՆ"\45*4ҳZ8%(X2s@Ѥ ('KVJ<4Spd qmrУ'Rm ZK$)+{Qj)+ ʺ껗&ȍ^aZ2 0xsk ꡾}`ל") ]8N,<-_-<$ @O1ƑqvFیL=iY &+%<% AcvzŹ=$}\ |8eۙ Agw9=XZb}%\ Uql^kQL(uP>/ qaL{ gȞ 8zz <-$ Bi%[kXDhB#RxU[<:Ώ"^PEN狞K )-;N}t{hvݐ0Uc 0쑍OjS &wvve*i|I&\Q,jr<x 2"(gK(?)S,[6'?# {Ǿ :MmBg )ԕCۛ^ǴٖZR1F,⋵ 󚚝r*xǸs/U΋YrIq?LϘz$!~~+h&;r=C"WC 񶦧dl+ eLKcWZuMsbDL,\{YLK fs! YR浰:W)2XDydм31}8&{U@%qZ .PB X0AC QF=~RH%MDRJ-]SL5męSN=}BŊB@T6QS@q\@U!"~јUE ] Pr,VA!dp$"h|dFX8o Pc\! 6+}<"fJE+Gc=s\DoB 2{xcEG\r͝?]tխ_^A}ZWo]H2xpԣ%09FKB˪R kKl6Lq`IJ.>-- Ԋӭ-űЏ0*2o# zǶ(ñʮI'2J)J+2K8$j|J&mň@AAPȀ!/B57@z@+T'qK|P0#PȤꢌD]?$h@(1T*<S+/IT)&;r*P=BZj; U-E6YeeYg6ZՏ@(6UA8zˊ1BXHU p49`ږ500ABh~;U|kZȔ/} 12XH#tXE;R*Gu,kCKҐf,0Ѥg:h& ͧ3R:X8 Uu;bhQAja!J)1[)r572*?s,9y,xk%w9$ 5L^ 걞[ZT;I<ؗu#wѲhOG=uWg~jO(}?@i d: f[Ɗt(mhd(o^fN@#jG`8#\+e *`W6 wp/ht?ã7G H.Hb=7Viu`5AvЃ3U&E(8U̪# '+"4|ʭ<2dJFw=8w1aW=eI!2 KAF.]r2y BFmFK,D(H+kM/" e:;hꃇDd"HF6K]"Z+XcHX'#-e,o%3!1Q҈' HX"9逈j*E9hr7hiA^Dč5W_9Lc !2⡥qUr7@R)sd:չNvӝl^[DɨQO) G6jDY%"tqdD'VydHI?H-ԈE9 F@Qn@I5d{լ]Hv&IKBv_Z%'u<;T6թOjx0"| %3:P(P;jPЊL#0!R#dH?Sʐ|ce<2Tb2"S _ Xʍ I&tj 1"V5G)rX,))#z%DQ6)٨ֶmnu Sia!KE#O4"Q|JQY!c\%&kؖB-\Wҍ$1Ĥ*ЋVr6W$u)HIf z w!+:*CjzJYL!n5aw,nY?bJD)/DXEd [p"Tj^K#cpITonD#bグu!n{ 3/19`pKbr-VL0vJr{VE2&5rPu,7+t=hf9$r\sDF ϸ(rO=h$˨vz;$xbL7$# ;i0J9ILYwOitF|Bz؄"ױ;fYq6$wTaް]XW! MhrFq-bfCF4B6"ޟHnݐjcٓ%PE{$wUʸkqduBhwD4ː\a ak ׊d-D NZ!fQ7gEK5s1% őJ,e=mHӽt7O!FX%91-B g { \@ไй{!V=71Tx0 c3&̰C?H&aBbS<ϫ/K:D2 =yӫ8K?̯0\]SL޳`ӈkBtبR ,EQSѻ ?c,X c3a;B3Z901\q,6Dž@41X7XEBJ\ƒc Is?^ȋ{T,dD26[@,2  YT\*S [KPÌh@Ɨ$DۍHH&4DGőȪ`2l+9(@<`ȶt˷K;,LylFy=kC8K6˄ƂJJC0˄h٤i Hӿ+| 8L(8+I PZpLZK4 (EGӼDT$ÎX̄(ID6ˌڷA̒KJB˯Sl;DtKFZ, ԤhMLAd#-l9!B " +\ :Cmd U@p?Zı謊g a?l-Pxʅ5 /AZm`ȋ`PPBQ)='mc2$ Gljʾp},"@KZص5e6U=*MB 23 TAxDf0FӾI\3={/ЍXH̀IW3Z#e%Y2+ӎD ΅΃x?s΅L˵4̶L7^??5O,eH56x Q.CDu܍ 5R) >Tj0M̟8śOmp3Nh4D`VтP0rX03jĄHG^Wr5$$Wk /e؊*UBZ8h̾_S}łhԌԆW=%S dVtΒ[}ML [Pb \AlMڀ&`W@PZPSO%~MJڂ P~団YU۵eF4(w$ImZ{Y$ .{~zYNB`z LD|Cτ(YbWrZ`d٥M݈[݀ԠP ӽܘvCmU|MǫϪqd]}ۄWV}a\Z%-R͑0JB^D,%ei5 S-T6Wtݥ}ATxyAzڍE߉L *c4ʍH݄pVY5_ev`)Q|H~۾FI^1Qq%?O%[ ^H&D[tXem?`(ލ@8]5XHp}nU^2`קeL,] fMьU4?|263֒O0M[]˨]-:) U0:qш+}V/eca,aĄ-)+^JK`+28E)HTZ4^eJs, ~dMلNPD0#P9m\~h/-< 5*^]IR94  PVS'ַ #v%c{?P.}[;#(MdH=S_&6 9-ikS/2E6dڃ#hp#hZX̗ #MURj2'֑fb( 2# A~2ފX @䥩28/Wz aX.e@@`fPaPQzXA<)(h2жΕPe.mkeLPxQٓ92V ,P~]K(P0X>"Ȃ#0?<"`n5ifrT:9AT3C-W+0+Rvh*Y-j=nf{Vgp$]{g}+SʰFg%0!ɀAƖPe);`[|=Q"V{9 c(h¼ r oђڼ&bPI+mo= pdV xA_F s&)g,rnJ;APs Yk셨ɈP*#/bYkwX7ߍǷU2{nQ,GTZZs9? ÙctuG :DY_ B^ 6oCV<1b GPP~& lLvrJ۬JtάJ O/uU'tQ|> iI'qspxhxX+ȗ7o <޺Q(%h׈*27rA_4+ EiY8+lXN|r8~YHh1.K>9[~Uy(nG,桋>:饛~:^GI~~:>;n&;V; ?̸:"K<;>\xn q'?;"6p#20pK dT 3-b|[Cgm&[*5F+pX xԳyFڴ.;E?0vFIt6)u(nI)Uk=Yy} !ع0+~X@2b!}:<T@^7C yWd>Ҷ']?7,.|]%$dK;I9pz-NѪ{u(Dk}3Y٩I|-fГ/h~8i^zvT~9qa5RfV1E=5ہ^9Dq5J\lYEaޅWWZFIC W8Q@D xPA,@EZ D !FD^n5 yJߵ=Vshh^AEBD̈́߈40C)@9C0\[bTaJV9BڗCġ:Q "! Y(f]bAW-p⤸ D0Zݸ$@1^#x_ZCl@!i ^A3 h1"2VFE<!tc1c2C=BZ9D0$! F<@ңA*I#E^Dx`mc?#uFf2PE@F֣[9u1`Q^Q&F(@њ8".^eTA E Eae`IU6[6hb1]6DC8:~eQ64"@*,Baԥ@[=FO &dC!R%Y!NFxՂv *Y^Mhrdf&1&[D`ECTz}Cp&gd&nڜ-mmfM"tP]!(ACc%yIYFtKW'#dbY$QnbQ5D3a-% ]-lBI]$yS6_C4Y}C2D^]^$QtT~2rAcڝ{)G4Epm9'eu"@ᡅ2a-@ jȝR!^^N)iR#Dei :# ZEG)6DBZt~j-Nfgzd*_!EbbDd̥Ĩ*!᪂*]&( +Q )bIu6~}Vh]E>!Ck.gD(i1 WF"JDyB^(F# gC)y\.,C*C~Ѱ lȞ_kBGAŦk}OjD(g )bCk[īC>k82gCXZ\*rmbC‘f:R,fbl-hfQA=v-zJӲEߦD;nb8,l+P>+Dmі!!mD@ N-oK`,N\9װ>-B[mmF-)[d*!nm~.WB#mv.. .(*.[~o2bEF!Rm/ConoݞЦ>eN_@m@P0t+۶J o"/~2/ ?/D꾲-c~ZZ"n.D0ʊp"2F@ bw/"o%+/!i-/Ɇ1q-43D1`|+f0+f., - -BD2Dڨ!2`ħ WKoff1qF rG(sϊH//bKq\B%0/D,p@f\`Ҳ@ sb13oY(2/٪_B$;k3B]r5grzr-ۤ-8s5*K1QB%ED;O,&)r3\[!QS  :3Hp1(rH+HKKJdDspNsem?f:N3&bAJΓr?3"C*>k2714#'a`CkW.FI@!UUSE74X?4Dt$/^pG0r! ]7)H:II?6[bK5dőY})rtJ(ŦJ!E5,SׂV73.,nG!0"1Zτi%ң>E< 'cga65r{TC%=i\tVuC"ΥZG^7*4Zy}tw8תueUhA7bT,g-g+?۴C 7I@B;7CwkΊ/wCts $OtZą~UI.wX{l&K4u;xQY*3D&vf!AlpτobgR)\k)bjy-d$yY$]G<e]H_6Dd8t׹ǑnEC@p@h[QSS@w@&+ށ@p6u<5prAn]zHp7[;ġ'ziz)Apo{5*s.tz+0-6a5\}g±Azp-: SyDh8/'g)+A(i5yLX 2^Щ9H0 ;a4f]Tgu;T yﲯթjk5J9\Œ[qr\2hFY@{7s:C#zw{26m\[@浯i}sX8#s{u7\Se?`ν#gsI,`֗5F}-" l5fǂ # w‚a'*Qs=l&OCAڀٙ<8ю,+~|-ྯQ>D4;Y|S׭`ǟo>?` r1Ĥ{C'(S*@`A RaCg@ h qHpB !Yc>*a# JP9fZ^ F %n ˍtN< \x`ZP].`0VM 6FRdA t+ "X˰ۅd(rISIΙd.TC̢-*wº3!I0c&=r;I /jnZ3{QVukׯaǖ=vm۷qֽwo߿>xqǑ'WXd)6e׾ StuJ GYET rgIe‹nM (ʀ**:6Q.pd& )dB0:BT;PIN;3ąNm`}و_!fsvؤ=5?*6?8s^0#}OjclT."o"XP!o>"JjAc .9/ &p!/0?PDЮH#pVphc`  5`z& \c &y` eB^@5p |+?oR |.j!TbObjC\`mqpQ!@p`!ˮ -!jI`"co1LbM3QLuPVf4j!ɝK& fk! +TävI 2 C&06. "K / BR@ib NR*&%_flK@j iv$k! R' !L!%d%RR J!6x}u1J`rQ,f Ԓ ,u,MBF"ܒB[ `2!q¼/O0 J0Ւ!1}+0ӷ&i` E@a (5/:Q&`En5&5=L!ʲB ӕ"a^r!8 s98 l&` _Vk^i/39ӓ!>l,&R4aϬJ?w#,+|k?k,.'  A1]Q B@@ B@,!jr!Rm:N?b39&8;;O"e SԓR!s&P^q&T ?@  TVjhNM|ѷM!|l!rr¤kH}+BZ!u2JI}+Zq&feb[u/5BZBXGXѮ5/Kcڬ`c7@&k!T&j47k>1#"b)5Dq/(m*;R&O*%LA&_S"T$#d_O" HV K&=A>oTecq v~lfi56D1o[6!̮6˶ѷn55/  >!Xn"Ym"ne\SQ&"v]mW!vʖ!VppU`oL/ ch]L)"t#l@aP] Q?S8*Zו O-fBfw9)'`! dG5% y\IRwLO#yedq@<@NeW`}he"ķl&6OVT i?«Vj{Ux1%&zTH'l72kO/} -Q!\[eʄBb`cUUxF!2L8+|!Zt~U1*xNmKw\S!.خ&Ї…y"dm8xr#aٸ 8؍iLSu"RVugB~]9!!R+%zk! j~!syyiB(%y_w@% ~P%k@! vgcw)a2dY9 mj&``BC6~*Юv"7Z&!L͉/BM6T59bꇓqjיZJ hq\ zqI87%ٟ@J!y!*z/ڷ~-f HMZ|ArO: i[7%"|SaS¤:96agb#!xV*y!PwwIgό0 #DNv!0Y"{O_ ?$`|+¦y ԕi=ٕ^9 Xj&:buo8&Y83JoQ#Bʠ.3l!%])ZSBp#T&FK;kA?;ڣL L᷁;{L=sQ 6N?b]oPW#3"?B#!LaQW5FY{!9a!@8w""Ln ![Z54=BѧqZ? āg²#deak_{Qoinj[{^4W?"co :Q{+qP@ f*LdL[ˍ{spcOeº/w w?-|#Լ`W!t#וV"0y՛&b c}[DEѭ ݾY#xSЭwg|/[8Lm[8hc=g}|| jA/Umz1{a}ʫ|Q2 d9HJaav `5s_C]bSb9]!0zxI&ڽ)]&=e8'5@k\ӿ*%ПlRL=a —9|3u +ծ<;%V>՛ݮy!T|˹gj^!n>=ڕmB"b礎OSɕ>^-y>ɭmjP (sg!ZVzl$0m]B@kw){PB:[&55LgUTL9&Nf:*7!g7XVSݱģY"Df[-5"wk3PDy@5#T$T!~ڹ'{M)`^`~ ^77hSZD<jBtPD+Epc-S Tb“,Ppe Et@f5uHtyH$duX#y`(6` ǎY(󠀫lۺ} 7ܹtڽ7$UŒ_l2K\D&L\BB}GW̃ +dcsT ё4 mYu=`;97[# 9 ;=ܻ{>˛?@G$ ,X`嚏??~S*R q"tEIEK94ISEF,}tPHd"WVYuRZAQɔCEAtTEԕBQ:]AR$]&I=OHы,ePzZne^WHb1`cZ_:=חdY&Zbn.p I@l*v,& BbqtĦ ֒%Z]bJq'E:iZik9Ṑ`F$_ފkk:)L^ \1~g 4k (D8`3rCE1fCI^AkIEtNE{DP](u$"T>kЂ=iЍ2A M萑JRԤHG)R lJ, r.DCbt`3IV@BD%@& ܗ = sbA驂^TsbuGb<, ӕBT`lj`c+Th7vεXҵ,ݴBq5@ur/x?n,TNl~<;/0P\1:[ A:F%T֔42 Eq-iL ԑ1Pv>- QNxux-qGEyϟ,% ,'ُ8oE55`m%4^0`!_J@@zQX3U=x/9XN8_޶}: n8a!RA. B(P! L!(A 0+l,jq\w`+@r0BP4 j D#yYA`%u vI=q!UE'ӊH!CK'8`$ B0(R{ qtD";G'R$ PD, 1 ,Q& 4!J&N5Ugִ&Rn&w#EY 8/X$q;{³[-Ͼ|ᤐЄ*t @$bE, @p@;K:Hoّ?^$vc%E&/ǻ OSdGtNrʔuaS} ̃DBUv.C(:Ud )"B>`\\KԨd ]\%y^O4%7%T; y 5ǾS4<4bς'g;.Q!'c/Rnmo[Y(FШqpL#O:"ԭ0KP/UW!UXIJ.DW-i#I""m/~ +2Vm/gҼUFEx/7(mᒉĴ%̄#ͫB7#D/j3EG6N_DBD@X%ÊeZz팻Y{0ǟ%2M|[3n ƁB 0~"b[|piJf%AH"v^C"_2ӷ,bH]BHrgY!Pd;`R& ;~@Se6ȶ6]|'E-i :ʤvt*d_d{;?ЋBE BopDL;ef4/D~}-`XզsfƁntbu"_!36HurGע|gZt[HDӣ D_;(  ~QƵzт`Y\ F`r1gv>R{f:gWI#z+ȂWWgGI}0-+< ~,W rchKJ!w^H6=w`4H798{ȅbYac'~]hgikxpE\zQWpYYU`p^R.ϧ{ ]"xs.dSt&W1qǁwth(uJB[(sA؅5v1`s qqrlH-xwB&苿(SpeP\Rrv`& (yF](wI>qSUIŎC(^qHw>Bh_I%~FR~{(Ȑ\Nِ8`U 0J WPWSprgh )ޘ{ܸH|<8H#gxU,qw'&'~:U sus3YDIɑcIeigi8VYЀQP p@ WW{byo똉-72:_G=DD)Չ^U1żMk^~\ ű<Ϧ\ u+L=? U, M۹_-$G &-{J%!\^@x;BHAW )=$-JȚ̕Nܱ$\}UA}m%Aȡl;l;y{WA1=^ p|{S @D~p] ]+1nכZ|V ؽۿ Wz8o/] EǍܰ HS&3|M, 0tE`" _/qWa< װPDPʟ6 Nni)0 ڿ G \<'  UI @UfwqDe!` 0~u/3~ ab  SPK.zS^W]d>ahe^{Pپb.j^lU$u."`e\ַ oV^c=TvfyneLCByw~0APgYBn굎Pbථ^" K=1L9[dr~P`^%s춉(+FňG... tjH1DT'a %\  /hA`} 'qo0"o {@{2 0/_w1ev(CO@`W׽;~FB? +3vXGpNP?n "BGSްp D']QjniJ[( }DCowIM_OQC?YJôմiE_op0y_?apb"P b>pyǟe^]{-@DpMBiE _ PBw[(WWCk$ D $8@Z &,Rp@" lk†FEL*BIˁX fX&$2!3hǝ 'SQNZUYnWaŎk`+!M%h[qΥ[]yW 1l X6fxp@7S c'cd͜ %̎AA򉚠Ap v$+"'vO4DOg׾|A&/"X{u j_\@N t\yK?OO׎y5`6ת=SrA#pB +  @jBK4DSTqE-mCBs3$2h,o4 B"@keڢkIJ=pDRJt"HkpJ*˗t `Ɉrj?b[ښ@23)D^ҲEH#tRJ+ O5 RN;SPC dȱHOҬH<I\1;IAr"8%"@rJFTJDGhYzDOZfT3ۄ:R,=vBgqx i *؎]…ڝQ+b3ZcCyd*5.z44` f)l2>< Ǿ|}#t`&27'0+` #-q;?iլV+.ۻ%[^믥{"mJ(]Ғ{(# 7%o.wJ `ix: Z!X..k[`Q|~x d>$ ,~ywyHO>UƋ`̇` zx j 4e=y!>W° 舉h~._A㕂gmYYR@$׿ko#D$X sU!!#HS~7" p!]An60 T$Y 9Q0Ih*.B% `H`*BO[@8$@t]$cxF4O0Rcǘ b+À@B> $"PB@,$WE%B8G7!SLAd'5y/ $dH(h,r T#'Qn;TJG%/wX WB%&RJ% S8¦* !CbDBE&0 Ic,N`gQdgEyO|S^1Q0=@'x:"x B21$Lb͖q<@jHJ-'X'Qt"#UI9KM%ĖeA8G+) a"!5FSȴ 4Q_OfU"UUcDQo3AƠ+$tgA#:А pQQ#0` [bąe*HHTRJ-DZEKwbsDdGYRi M $] "wj'"2-l5[~Vd%nq{\&WˍJ?=jz\YǺx^+ZH1Y.@;)^Ėi)^$%{ڜbWB Y ݖyߐ y0s=aX#&qƜ^$t.gBuwopBF3]ã o{AaKmx) ;2hUK&$R*3Y~oz\(2;f$Xss|gf,ڪ1g]I9$Yx@!?[2}$6 ʪjQ~s|+/6mB:* aW۶ Rv!m\3y+nS)j]7|/J," E H/Ylȹ"p*.ܞ|6zo=Zl9! ;NYsJvHNUYӚ6g|xG~+h-c@NIOD1B[wL$4C2~O/ Q#vིQNZ/Պ [)^ vdv`;w|zl]>}_0DcpX,F0AccT<΀4~8Pޫm%8:AӻS#K:>,õ k b>@ L X8 "x" ,1@ Td0|;ExEB*B+-?hZpr[>༡S72:D0ĕs1#h"[>”˻DB,A)kY8xAhÅk˲=SLs@D @E; AĮ 9d"S{"CN?L $TB^E_E`7Ԁ04Lj?HH8Z7HkƟ[#lJȿ{.[+C/e ("@G{'ZtzGyBr;{GX0,\;CTlaHKtluĭvLHzQ@p`IIɻ^ÄPk F (rlKGECԃ:ӈw4ء|Tb)׸ʂ\DDcTBD@JjJE>I,L G4!(OϜ S9 SHˎaPP7M5Ds s\A¬Oώϗ Nd>QQ3Ix򑕤 .4ȀH:6 -8ئ0:ZD:./݉)Ѭ+ғSҲDB3@I96ҋJS0ųTEҝRh*MS-S̾TJTK].T41>>ǼVU]UVmUV\` MXU̠$ *&\"BAE" "DfiVgjցVfXhe֟b=dEhh P֦ WHf= D"x#@MSVj"j=WsgWt&Ԋ]'X_"֨VdU֝ֈQKXXT  P@,Xk+YCQ}YY}<=P?@ٟeYYm%ڊ3ZZZ9#s[pIDU. `ɮ-[=[m'u NZlMۭۛI[[QY[8٬ M+õ<č\ɝ\M0ƯX@*΅Xp5])\]]m]H=] X*%ͧ] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_] PX_PVJa_ SM߬___eM!Q ŧ ^`n `^v`}J` ` เ`* u`>aNa`8YN a.#afa&?0)_aa,0*I"nb'f`^  !`}bHOab-c1&(N+ "c00fc9-c V,㐐/8cB.d]4&>6Z(„AdKEd/Xd=V!~Y(e nEٗ%-L~eXV]M.1hdX[}ٌ %Jeb.泝e1:\Ee<~@^a6fmEf"``Npf"`@/vengzXT*os tulg.hJPPgJg hhh>XX+Ȃ,E`h}rhJ誐蒡niS#`f f|"I1i@iQifj MbS)ۛ^PꡮjިB'*^a殶V oexȩj~^Q;kk)jk(igh p^ h[#H0(N D(Hk.N)9M#Přh0"l8"pkh6"X {ZPV P* S ^8^PxlȉiN^nT^ko zgAon,҂ۓ$mrfPhlSpޱ=މ+ p~q XH j🪂8DoO /xafp?&?qۈpD0QXq K7“P+v* w V7JquMo;HFr&\ מ(N0r rmq iҗhO E08VQ+'E@F'EPp!~XE$Z@#^qZ?`T.8Ϛ2L'iS0\;ysovsinHh SbSO;_PM*,7~v+0uxu` 4MuQ ?px6Qb/yeom [yArft$:wjPȂ#i|vE xmO_!tW8z}emy{ 2l6ûxDZ' 7MXXueVow$i3 @[P/d gO3eζǒ;*ۚy˿z\&D0wx"E/?"\#J; n G"H%g | > 獎}HDeg Ր;DD?wZh4CU JL `0@ (Y,V#7 2NxN%P V 2pD?*4g .H1"O*@!8* b,ËUb (:x)ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺv(Pѕ"`!N+ n핋DE1MUu^DVϋ;y扠 ,EV\ 45HWS=rs艦 ,zX w \RU9"dpR)Ox* |N'Ҡv!w tR$\I"A PA&QD^NŔARUAA0!EM tԚH]E(R]EvTzأ?CYG"K2䒦eY\QWVB% W[AdI]T\L \$V9v[nDޕ}yӢ]x,iA R`kq"8pexzUшKtHA@FĉAnv`A;$A֡w"!vRƒsRDw7뤺ۮ[%D\)0̒@(W_"G%[JS(7M[15 Zs!{TtA[mZPE+D AHVlsR221KST΂AD AIxSyKڑU7Eƒ=cw1Y @'vNTBS^cH Py+!6Ẑ,忈 LAYtTED#vx!v)DςBԲH/n(po^D3KtVV2>)Dv(]uib}1џ9H"a P*zuݤjQbB L%ʃXb^ s"! Kh0*\rPbPԑK 3b$ a ༽=P`th @L6hQpG4X23,E)+ E]$|XQUoN=ʁ` Gl "cD cM"b b;:=2&2ݤ,\%+[W2%4b!/{י (PðycLc=@/r!cŒAhL>1Ku')(Q?8>w5E p1)n@Trkգ;o?+/90D,HhbIaE1LלuA`}R,B]MD XՈMߖY v-UpMTAX xUE"1PU]eaADZ `ڠe9BaJiR4"p!YQ}qVM!Zu@8`U^mWX4 *)_BHL UIh˹ >%YUAb J|֙ I=&ApVS"xU%Bx D$Bf_CA bʢFe^^%X@4`p""(bdAMRPKR Vܕ@bEyRZa>A⡮Yx% E=I_%h9bnfIV.$%teV pB@o*o]^g"N&[&$l=2$U<,gw:#^'RPd_gyy^)ajaaVBɔBJfL(gVӰace-Qxt6Z)6)З<$? ĶHfWND,~pp'U`fK:~DEv g X!ޚi - #( B@r*Tɔ1^\~eRM5UV|b@Vh!UjjEI"A2% 4u@$Y(*'?)Z[ۍ֞v淌jrjbcԎ0E,\A\LJ^*.A\=BW@XBjiMh$2@Z2J] V`¨z ]Vi*U &>XDU4l2*RX[ZgpvkL`X[]zkk+e f ^ <@V$,@$&Nר@hJ*dBәdLZdՂ?lVeWlVD^qRUX&&ȢOnlu'E U`Xkjr-ݑ >k8(@ "dAPdNl}rXh݄B(::[ B%%V&ZWYwh%K|+ jW2ZvQ'B*eXOjln (Ta4@A(fa4@$ldLS*R~RY hsij`娚Z-~.6^**VUDpbh=rnvz3zREܪVIR&OZfۈ6"TXRp['TAA(@$l0lcI@PLq>OXYK"sɎ.%5n[:HX\7 1 0BmWDzE W@=Z.0.K$WJM0qZ *&@c ڲ-cEFfa`D0G9gŰo2`ՀfpմKXSn\/0+S U8Nc+RjW+ׂxr-&2s-`Ce0ٜd? X\j[}R:]*x@ZZq<s4ڥ(YJWL6.3T)r-DrlQYtg{gFA4@ř"d<@<;pCS(ͬ NU`(ҡMt&3*UWHYAtA]X(}1[ f%F,qntY f I0,ޥ4U:-t7'cIj4hx NAP݆;3Mfwf@ۑ5>V'D5?*Wr@ˀ(O"~q<,X-~U$Q_6WoUTNWz487s<g[Nюh`܍_8>xS `!U'ѴAoı,Gg4ړ)?% (`/,8O A<0ŠSVjHA@Dm0ly_DT9\ "e؈,8Nc+G #H)/;-,֖S{+W,<3H.  EwZu@@8Q y(qj/9ZfĀ9Fy ̳G|8Y_S> y_8[ X Ddv 5wkKKj|Y<`}}^b>5ΣKQC5@H|{,@% :Dx4LP (,(b/؟Vяk[1?O՟2=$c| #dnV<ҽ S~[>^&= k>7L(wh`bDpsJz#+4}׀WB' y-R5_c'Kڟ  Gs> vK-ZR*~cS6n _~LvK;曋oX@smVu C?&hD V#%tbć VD T̲) 8bl`"((hfs1X%'}J LMhD) .@P L; :MRLYp%Pֵ{o^{p`Ta drdɓ)W|sf͛9wthёM1m#M?M;U?^0 8^k$߰X kԈ͊U@ Z,lWs^I2Vlr Y LnzJ)\T8+)$+*B(0X[p#Qڏ[>Qɢ85F{0OBT`10D P8ΐ*1\đ"<$\&|J$a`# ?p\I)5Ҽx^kA`%*!jjlݖn63  r,S]݇D6݌ف Ȍ-uZ >ᄱ ~x/tR⊏l`7,;Fe]*)H* @]~e!KjlYdw9 2²`_,[U#&묵ޚ!Z+Y첃C`Ehx^z2? J|Iq%\`;=*y0o˲O=Ek&\Q_vp :Yuߝ$kUw9۝r襟^E (Ϟ`O"#iTT0`["Z|ck++P `@@+T$=rHǷAPtӈx(@q!I4:%PsXH!# G!\Bd E*,(z9@EO ^4y>"0G. .b`F-cD+A2ErE`!@!FugFFEGl|#H:ȷֳ1nzOIϴ`! `w4!4ǘ:@O`C)tr BP4(kܠFLY/_/REDe@IGNu>9DQ3^I3v4/ 5(kdQ/sr"VCh L` n2w2N?U3@3F50"JIUb'ړ +%jZgRE3.Wo2^2uS%ԃ3350(YsI5U%浮U_g IW%&G5@: `a\{&d;LCb`%]7]-#^mEZ5Vv__u`!Fef; @g X7vVg7 U4wv+*'Lh 3b7`iOB&_SX T+#euLO2okam?%kM.bs5r]3V\vs Js7t@! MaԔQ&V0uUBbqaw#:MG'2FwjR37-"#` _%9]ٳ]8Rd -]ۏDMO6eYч P!͂$^u+Օ&υܸ}#8k Ay/W!,,5Kr/ҡ7O@Rq,ǓvJ+ ޛ%'8'ap-b:gi{&Jz/(S1^mdzY8 rL,jY^ I3}v!;u}%TS-s^# 0rl vp >nT[&5=!7闞DfMAsR{5~/"~ Z2>݂gVxsXkA>lbb_`r1 ((sd@aG+arj;3Q%k @K 0+z[N5""j.6)c/%rh+ba `)P.B @~"J d$Z3jȱǏ  K|e<2@`eKUVfJS.9.bGWtJ=RԫX?.@ ׬ PJv#RNz2ڷpʝKݻx7+E4ٷÈ+^̸ǐ#KL˘35u 1u Bd Te"Sf2G. vd͏7GgPEu1Ri 7$J긷ȱLK-Jӫ_Ͼ˟O_)G&" BD@H~dQjFb@FYDF~4(+Q%o'p+%QU8UGDbGKv"qטw))fr7zE)TViXf\vY"bk2H  U\9VJdDJdHFM]%#(\R^sHEDF$F2$x-yץ@ 橨ꪬ꫰*묏 DDP  h@ P dH WyL.J4T \R90ڑٸKvtpH\=,0dAD(D8 HUdaL!J~`$c+NF(Nq)\.Q*N@VWK,Y'@W|,h,1@i̞FZd$n[ >2vD@QE y3s^Gb3t]pb8 .WXN}0 gH) 0,SX kaD-X*kcL$!V7r waPpHFb@`)ճRxDd˄sԎ"P<á>a,U!+yݜ lYC*UZ>ÈR3 I 8tj\[P$GK* xLMD(!@TO *@JMlA/9\gj!ߕ[("8I9ZZh#2ŢKU 0ژ*Vq'/$ pv*xpXR`ql2k~Eɇ(66kXm&^jB'mޛRr{~T%SDSbt{p!{)w?"!@T< H@bA'#.1 NHډ@!W܌t%9]Gkݕa.@L!ɼB]kӈ \"ʂ4h 3ymF\Vxs$E_T4^ \9QȢƍda1"|YL@Vift^0HuI@Zŵ5p0k6t*5]ba:igR;/2V*Fh fMl[(仄K|DvA L@ qPV'p`K8{ D[),^kFx{pAY>k Y@'%WɽY#t@3' _% r+E5&]L$w\Ԁׁ,MN#mN/\@^|%; fAW]+'p0'x* 5ۓ@7T#?=V|w_i>_{}{]nF-}H=#5h x_ ݫs`n\}uwG~HXL0kbzpz0k% o`|$v*V ^b(Wb0x%FBR4 s0DX&H-oa mЄNb^7R8T[&XJWHpQb~$wa}$q8kwQ9Gx|W27}ц*րU8XEV:+N .<sPq`X @ 8+1$@}z 4u(Ps~1&r@VI<Wb%FbXW XbSyׇ=C $@k9s*@}ї$vї~ ё$r!i%mo9GHw3Yt9w *QrxXљIbKb/K8kyuixyu{ *&9(ry9ay8}_1+oP4bGbR7sb8k(0b0vY z7{1G*}Yc$tALoɟ:kùY%v%VuZQ0{$2*f Jb"Jw9W&ZNPZ٣+1%֡y uKpЇxV y*eIbYFIwgGuN$|ڧ,u0k|w\u xQtwפ'}{J]!]G\f1`7WWG! y*QW$$w!%$`'s4Po*gss{s2)}0Py%Гwڧ$`.0k[Ybz`uʩຣʙ~YJMZ-@抟uJwJz~wmگA Y33y*0k-b/Ӽ}_]׊Y=qꪾꩮn] pWu[QĎNbْ~ul sћ؞5}U̅p玒B '<*ЛMR^X!0Pޡ~֟1NyLNr!c~Z}nN_zd- _1 06Hj:?nkΌpV |>a1wWg:Qޝn*ni]b]bkY츮b.yW!`r_nv!ua)O/Ob{/`m@ĊT{ sl:D lYݕKݼ^ݬb [%p/@.|bWMob̮mN?enoqOt÷|%6vlGF$&B~q! &gтj@YHB88%KBg,P`ĂMDyPMD&G4c(,4ac&K={T0F͓A %QU S$r–_93jYԜJPÛ FDJ&y ͭuv]5eؒbK&aX"p]La,KPԈc%o}b:"YZj֭][lڵmƝ[n޽}\pōahyBF^,xDB hǡ%.aC 9O}r"ᅳ $9f A܊9&-dФ$J@BH5C1Ѥcs!%;6Rcj?t#b h3L1$L3D3M5dM7 BBL#lM0#;bs$X"bBDPXb 6`xȃdA0AhBЅt#BBȴ[-?jpBO\:XT(%;=bS:)ܫMpF1QVPvX[ kQ3RBp56oIUW^u۸u\ CH4S*=UV_ s5xwD^%8ܓ%6NWfe_9fgfkSyg޲uvPdQ8hYm`'ˆKzLQ:56U [,*iuQEh I@#.#O ȶڡlMÊͅ).nKonUߋ_SUH[7v^/ء̓&\*fWgu_=vg"ݷQ:.I 鴨QLu Rî $i҈* ?j${jt;O*7{;FdG1J i$cwBfdvaE8BЄ',uəc"<BrrXJ4XJ)1 8:$[jC-ڞ]T4(* jEdHx+(* b0iӬ>Rc_́s\n0C y$B8m&QE >VҒd&5INvRo iQ` Ya b4 (9DJ=qj4"" L(?BI4NPVЂWjQtjQ>4&28ܱ)KdY'*ӬLhD1'Iyu & ,JaEBRqI'N̓$όfJpCuyiHE:RԤ'2'tX "7D]ÉB o37 t)$-5BE*p 8N5^0k9a:*NL ^62 ޴.lm+Qjoj^T կVTztIUR֢Ua^s׿V6z%T+ա ? *qVYZekfb;1cR7 lx0Tַnp;\%jD1nȈkyO<0)\V׺nv]rUJ;vMdΖ׽o|;_׾ {i&wG!FEp`7$&E LaLtWt=hBЇFthF7яt%=iJWҗt5iNwӟuA1Q" CjVկ^q0k ak^׿ήimk:FvlfPس&{M2" G"YlSXk`) hڙYfx][c  n< Bԩ0Y  ,0rO ɂ0q!ye>s <ژL[` 9Nk<%U # PaMУ>k\eB0s2c/վv\H LG@< Oգ⇕SM X@ä\<-/yw^nϤ>_xc |JzZ7S8k"N ~o]_r7zTJ_+}C÷>P?kۦWM8>m'`Ou{3ϵ̂<ؘ?+*E cL[@PxYS"D(ū<훍+:ݓ P\3*?CMA!Ԥ$3s"&߫ Ի 4" ,63 S\<") 㸛ӓ 35($ِYsAMC<A!#;@A8D ) SC 4@@<:kF\BX7ۊ< Xx@t=B ;$[EZ^\CD!<<4E G 3IE>5h$ a-D k|=b< X;PBאF(6ژ\œh G_x;F l]cL d S1FP\#=K˵k(wd M#CXlvŇǐɑX0ITԮz,)~$  e5 n?Zĺ@d s # :$+ʨʩT+S6x#t,(#pJ# 78 PʸJK9`"@IKP@.$)BD8HZc@JJ@YBS K̿Z0@{l@S},\#"XC$̻\BMp|۷"̑2̔pHGZYՠ˜0 ؀w$8u+͙ͭ2;C P0E <פω#ɴ$͉P#3?hKD6ܮc {=x 3 5NP[F0LO4 u̻nj:L %E*0St#N .=伍<`AQ@ʂ$?PQ$Q>]NTt,ѼsK ӉщQSP#@D#T M X ԙQRpE m5\ 5;tLX8~RZ(\;QpW}UE5FpE*TZDYD7E>hUXUYM X@DbiE*̾VJ+X60֨@8YSD S(8"PiTcMס<#0TxNLhS:/UPu ;SBsTU?IEPhÈT8tX;YjuY@8 XU)U ,XPOրP>O@``QN% ,m[֠YKY5@ōN\O$Gxܤvԗ%)V +PZO= ;[ۚ]hL=R LDx?DS`ʡۻݖ5%58\BD:-E@ZpR҅ͅkC<eۓ@J|UM3?9$Jϲ{Z<ύ5`4P?hT,EPXňRPӡ^Hh:ISI[)ܭ;њR8/B-F^4 ]O5%heEMb>W_M>E~`"qE\8= \ݰFc[4IYy0EҔ(UI3ߓpӨ 5%SZ(5= <%EϜaGvT<2d8I=,4\b@5؉S!<`8 cUQƍ[NcY0\0Ik+(ʫ E16UF5TPمKHPܡ$ZG`>=|NcZ{c6Y>;S(VkQ6]Ha =0`aYT4&:ƈ^Vfj cF>Q[^@"SJDiS8^?>q[F ;=p\s@0Ex?5 m_ňS= `ϳhOF=@jY8g!&%kPmeLZPd_)B&[e6 `Fifεru̶.S@N*`]>I m?hFA.0kܚ_i$ޚF>28e>Д8\hc8v:XmՈ[. n ]fL?>,xDtvPVi36ip*v۹!EGp&mT+5/7X bc^~Rdj>CT.Y*0j boXז9nɉN^ qِd*^"geSSX5uVfK-;/> 0\jK^-4.&*/kc`fsRLh#mEoq]'N ,蔈qZn^8 6l\! t@mLsP|F@ʼlXj$يDXd Ŷe4 Ub_C`o3Vf.en @;79gpEjXȂM`] o1)RY7͉[ttHۄNm4C?` >F.fk)ehUXpxRuεG}tѼ3qŅoes~RNgN89bFv3gfw>e x9vlg>;/z6)@z8gskRAw;z֏v8e8Sv, ǵHG΅ ,4>&nZ@ʾSg \EHuZ@ع+؋V"(n?Z,h *.\  @F  E uA {D\bрDK|pqU"":-,^5@\E,&aʕ# JТ)P‡/ʮ*ƗW9?mx3J&H4xT Җx32mӯo>￿)LS d1P "RIBSPI5^_W5`!RBDYCaD@im]F@,(JF JK1WApU j BXrEe X{DBG\x frxR I霍 Zl+aҀ[VlYy'xF'}Ğ{BWTPyB%(Fu2dj)z) ,TNM &"pE .Pw9@JJК q [^"]0q(JpWPyТr_!Pg "WjW_$b.[k'fsJl)-"=U2L(wz8*G1Cd Ybj) 9]uDþuZ93=3О²J.(66`ĭ Jc-ɖ+X-P{?B{Q[,=VEM|]˯ I.V]pA.BZPWT/C`Yn=zch2Isgtf:x:r\@Ė>{A j+[+<;< PO \- $V&' t0ݬwF}異Dw3Ob@#|$]RAzD _- (.^"9mLA8Đd\ jLx8$u$p!*.$XǺF3xdELxPidU("h[Q"BH9f<#/ D_Tsn}kc.[d-Vd 'IޅZ] yƜ2~XW@α%y`cDH %"т"6M':DžT)NIoU&hRʀLR;jRԦb$l-*VխrUyD`' ZQ#La*ιٙ2 WhDKbr$Mo 4sGOEJpH, "d kLL".'ќD|uNDN}+Y{=.}Dr{W\DZ,aC1a@rTZ@ t3AC#/1CH 8 X< cYw"e^ཕ(Bx-s4#2ʼnDH+ 6Io*/qFl.~1ibp?ʂbѷzJđ4  į$U~j0y~$gaDZ"l+_ j$ ^|$_cftE\1b>OёaISҖV)P>>̹cg! B[gebȻ<5#(0+عĨb#ADx:KM8Ja*ϪH|ĕoɞLIg" }H_Ŏxk }`tB@ j,\ n'?[r | l!*l"e- 6gV) k/i9o5g pp%Q0p!־_hv1,TYߺֻ~f"V:qx+T ~_Z*di]C"ָyE^9ەFAAĖ+$4?[FȴE+RQa̻Mw9HeVas?.,P,8  $ +&7֭I1ZI=A8Ҍ Q^<*a1?lDNwT/> q3 }HܵiC%ҽ^DސEfn v-(D(ZeAP(KЌzpf@͓L@E~uY1hWHmafEIhY\A@~ĞK,BKf{X᜹z!  sN5A5@<_AMr~+h\]⑖@ [DƉ- 1 iA R Iч‹EiޅmX5^#6f6bUA4 *AqL,@HN\MH8Bb-VDLSE@u^]AVD<@u\-"$ D@J[j ?~4#J`>"G?n#LƤL$M~W)"&@>` FME Q4\jXĝ@F(HR8LJ^!/fAI Ğ-a.Zh)Uւ%AaI$J WEaJLWdMFdN&eV&ŒAFRJH-@ZMp(A G]?5%AP ?aEPˈ܅H2jD(I@DFXfa$gm$A!H"`Bڜ%"Fa FuKDTe'{{gI$ )9,XzDUY؄[elEئ$@B<\\GoTGo`q֠mr^F@̵]^D$N (Rww^,d9ZDe-ldtdFIp§.)6ibh6#~fZ4&MP CabFַ!hȩb@ؠDŽ *r[Ad+]ćA]$6HhȔ@!] NEIhE֎`EBJFiI:) MnLU="AE"aNN޸IdUDeFd*!2("_)uD aĐx^ҽB'+[HPCWbJa{e5),^9ѬI)s.Ĭ(^MilJU1Pk|%h_X\ٵ2[{Hh:(FxȅZ=:A (%h`QlN쬅jdRr~-؆[D+K")D-C*( 8@ubIӎFR"(.֯ޯ1o4>o-bDh(+mVoCE΂G~e+HcAI @0Lӝ4n-\{z. h)8}D4Lް@  0Ed'CN EuAfE),GdUQlJJ[z&,@gtE_(kY0AGw[ "/}QX{#?r,pD2L&$$P]sDg(B{ rXi=rD,@9@'_{ىA% /H<#r==@,A }32GP WDQY3;h,@%z (4O5OOڳ83n܊J4s=8 s]1sJ \AmJb;ß[<]QsE``)K4L4EtBs7MV I4PPpu}nWMNT .#5UWU_uL :cu q1uPdbY5Z5I3jB0H[5^^L ^G)@@uAB~еH_7c?6dӇk55e_e4IĊ\v. J0,HMx@"Vzym"9fs Ir)?:G:TVL[o4lguGd \ XWz(GrdF+pFfv˫O%"ӻn*ⴤ7?;q,p8LA+D/-qb?xNxc"LN oWDِ_@ F;LLJx@b[<7I$#D؜<|OA^!A&f$`r7ͬ$4<˷˿FJ$MB̈́@uձNCY|L(bUC` GO='D v9xg4KELIt@ n3W=;̧D@뷾u埄{hEL(0ƀtDGo3B /?Wu,T{,@DZyDg|}'>/>7?/R@fÛA02@8`A&D@CF,!E(8!DA9dI'QTeK/aƔ9fM7qԹgO?:hQG&UftV1b)(PŞD2IG<@QA4Pn*3zEFȠ)KDE舭Tph5,pmG-cMVemٖ"%jHD:€_2׆THR *oSՄ^֏a ]vT_SX .`uHRM6XZT"-74!q):rex票^ 2σ&ViqY#"NB(ס! G#Im(-s)n[gMԈ"EZ Yވ4X 4!|." ($S؛#p| S ]Oq‹>}ݹa]iەeN]/gޤs4G^{UgDO_oO5/_xEFW@. tܬ ܁0AUABf %,a 'B-t aCΐ5 qC=D!E4D%.MtE)NUE-n]F1e4јF5mtc@8X:}cHR?~gD!H6!Qde HIN%SH[Џ D@L #Hg"W"8Hv )SУ-}* eBP U* ZC $&i7K`nS{L&crv dFYgK[&9GD@"l3P|)Hd &sRxh@~F;Z,!TH6Q ʼO \&AOZ^;AZ9ї(DH'bKMiSAThELD<W@l+MjJ=d]uf * [CZXm* EXk+͉:BFE `(*k&m])қTY+ m8D, v~$M/Eݦ_8#P砦6A21 Uh.(d+جC2۵ d֙l-@62H"ߐ93"\3xAr>$=Y*UB%ijBDB/<$`BEJ/d*W$ V@bs sE~)>!"%T@kA>4%p+pkARfb U* I Ijp dMC` i P".%$(Xk Fj%L) n  [(Ή` 1# @QB ZɳQ <+"#~J `I8 䮣lND Rtw0i1P" q A"'9 I  !2)ucknJ | -`&C"Q PHBM|#R'dg%b({&o2(AF% Ʈq& zq̲ G|m._bpSd/`a&[*|p"R!ҫT:Ʋ,ϲ#Ԓ1+0  ~ 3kڨdI b% [',@&*&PB  %S@h7 ’D&\])t%r0Li@Q f`3$R8 z*a'%l1?" ^@ذʟ\rSern.' ઑn &'3#R S??3$.4$3j1 TKF,P!r \5Y=eD,M6[縨BlHIJV`%x`B^:R"bh*.e(0HVwL=yt' L"bw:'% 5u 5+""1m¾.KQNtOROBPS$.T0LMP9@hj+ r#zN,3LyRe$"GTB^iJL'q&`AjLW:"2a>h\-Iƕ+N'f+".0kڀFbwGt AZӆ69Z]`# 'lVv @^Xa#Vk9V4Wn•WwT"~u]atr')"4UJ@@qhBAFZQ'.f")J[c-w*,\)b_p[ SRf"N1 =ST"b bb}"`Cbw,p$_BmǶAozR85%-ĶU+ϖ}oBlsV>"#DAp^kAe#""S bk &$lKF"$h ]:W6SF\]bX%d36%)5W,72`q# k^@]A&~vJ#bpOb '#6J߶Or`s"6P>&3tn7"̶ 'w+wqS~0L@Wlja_XR%)ie#sWGsIB gEzt@Ό!N@@%&\g�wk"@ "|#`Ixh%S@,`X'b] z^ߗztm {nkz ʴtiaI0'['n} b{sTlϊsYLmp@!Lx ̀bPoQăݪd줂]#*U:H!&Kv%~w%]tax(K " mn$nu)H5,#{"  dx} .!\9Z.S{TշVvB/Ke(Y—9UPᢷpN)9 ȢBAK !v' =Vio6!oV>&c||'n#N%rxggGLS)):OY(^M_l4WC ۈ=K (P n$ R k_ž?3J0u'jnzY"Y x0bwj$,fnL%Xnl>gG5bҷ-LE0l6ObV"C> s­J9HGZ(,b@}Kb8}B^l"Mz&FqҔ.T B^(|z P'y++blP YBbzy׀ :EB9 lw)ӎsݎqdDy[;P"]*!FD:T"t $!F%@Q#$v7)4@{kBL^""Ż%&53*k[LA~7~#8G4K())M^Z{(: EtBO5V5Oh0ܡ+;r@"s|v%8;·sbGZkzٔ{$&SʛZ6!?blMCv1  c\%:6eZ:&B&"ܳp8D"js9/&>vא%?v DW 8&,ҍA"גːfi+v??`کڭs,i]ټ$%Bjv//<[&SR '0H9L|*]O⸖tJ4-KX#Y4 ֤MHJc  Ġ}(]H]-᧵ VO~"RW6jKA⛦}Pkj3f 0) F:X| )B "]Fٗ*="RgBXGW<&ϝ feໞ$|Z*~+N%A\֞*FIR&z*~="_{R#,`? *~ #L?/]Tg7#Hq ]$KH =]&4$ع9Ǜ>o%{SueZHh@?m8_ItO2kLsG~tk9dvKRMv̸Aj9ڢNzO1 hxB*MSΙ) T]o5@ 7Pn/A MR%}~O.P{}A r?N x6 w1@h DA3& zޗ")dyJep,l _B ((p)H˟dXHY,<#bb춧Pl\4[Q?2}^ -,A-¿:$EXcHD^,O tExD=Z TPv!BUDO&Ikma:21*/ ` {(B4{l3$enn ܤ#h OQ6"(Ow0d-JE` ѭ@` t# -r98,AЄ*t m/(+ C@<MPvtH:iO0sl0.I-Ǝ:}.%:GtP)tO Ԡ uD-Q+F"d)hsB6sAiJY3@h:ĔȬst]׼uhe BUrm5HzvĪ\@torITJȦ)|6m}ʵHɹumk_ غ}\%S Q-bm-X8j$o_ CX$pC$@%DkFV! ۮl w- Xݶd&BX(uH/Q$Y[ .d@(k}ZkE䖰歰/ kx @:+`uĉ=QJ<߇cv4c,Yo9Ns̢]# ~S֎Q"9 (KyTk+FN" xuE0!+vHR.C|+P+6%D+zь>'e[y^~Heu`<5+e+K9'Lq^'U=6}cKѼ ` ީA8K ՟9Ď\n\Θ}w'%7nlf0ͺ%Su{<:x b sI.k \޺4ODœw2Ox fy%~k!0Yg iG^gNen_oا̪@g;365 .L\;[kzw aq#\.g5RmveA;r*EBn}lojN;=+Lb;P4:N!l\D*0dT}Ƌ0u3vZ1riC}o_0Vщ hpw$DH /Xage򀵳\\.I(,&@[?H jثo ~)vP.ŵb) {ce&N+G`qtEqYр$A}fw<Vj=T$rdy6 /S9rG5h7u!~6>-ԣ-ifCHgyA _ƶN6w.%E:qূg'"69(HWww:q^;'tagK#dBqQx0u7pWx R aʠKc{ '=.I6 bY4.&ZC8j~=K~%M|UhE=M"!"+ W SJU37Mp}a W6 I3PGU:sD):zI0DNU 4dzgFS*3|zqjs£+]i?zDv2QKQp9O:zPtAix'(yQ$#gQ#Vc+;2")ѫ ԑ)#W*"Y&&ZXWDjo X*_:vA+J2DdWQ 1i˪P8K[JY'z"`]f՜) 'WАq 1 *,{/[ 13;K!7#>)X@[G'䈴af];~$W{i"U .[= uuU JsK ; АsU7-1|i9A1! #%I+щj |Q+!i)q&с=8~ZUO!+Ѻ{Kd1ڢw+# ppJ*_RA"1(+c> x l"R@9 }qiˤ` +1@9DDZ76J[~Z3u,1Pd2PdvfqB+q  uKUh3f4c6RQ0ux'Gl$d|rE֜EqY UpUCiy`K<Jf.D`w02}a;FXvxI,$AdFfpN aE!)K 4_&IE9t;ʹ~~*Y,+ȩYޅT'p @Z,@DJ!) UT1Dgq<hWD=(~a'mD[-ڜ:+ՌBbԪK }W:Mze P MQGv a W/ )vx-s\ \=M6p9I p>m@H9טEIKz ~z`ɵ900M+. G֍Mo-{qZx{~|Qqn]M!) `-ٓ- XXh7-̬<=ן ڡW0wwAaځЪ-u{гؔ!)|,q(Qwxi/]m-Sx `p}4u|R<,Y fAqɍiЍ߾ښ֥z'a'2/L wQmzK3jCtʝE\D4]әᚕuӋ?\ /)93na;퍵ߘS{Q0;b{uݞe"n6=Τ3ѷv1Nenók.]yđѦWp!Ug$^k=o) ƾQ@rG¹SAk~>ug.Nsj^4wn|qM^ :"̴P|Ga1Q(XMXɨH..D3AqQf?%wy]HDhߕD޲*&~;^>eh PÈU#NQhR Z4B$s/!/cN9+J],(hQkJk)t4 R~rtHNOsD#OEo䂆C20C8nSFq3?4Câ4L׆8^$7T_7V.s3s]*~oqO%.y{ p͇JD?\W/??Y\o퍯L0//9bC/OoǏɯ/Oo׏ٯ/Oo-RE0vo.K0x`Z .dC%NXņeg,a!dH)UdK1eΤYM9u: ON$ZQI.eSQNZU8L5JS]"Hi(24ۉU P ,( v@#4 aĉcȑ%YWd̙5ogСE&T@)Ejd)J?Y jAnt6Es/sJ+Euٵo P -+W-x̳y}*ӕn @,@tK?#pB +B 3lC)9 I( )bğ p"?c8nd'SG 8 H$TrI& h|hwG%W-RKR)E.tM`IH8N,U^^bZ+_`kJX,ɅٟO"ED`r]-xA f9(E>5B-J DvE 'sHH 1l(0$ 5xD 'BbD(fezD`31! ¬'$d,N*"J@&,sLQ{c'E,o"C7tQ))\zGƅ{!F7^D@ٔ=Y?l+-yd)MyJ o)(2)<9D>Dhd"Py̤qBf3Lq'3B0N('\"##*y“јaVzf;m1ӝg=16=DF$h5{ Y" V1Y$>1&FIUΞU (FfT |.-TJ@2з__#XzX#/R#8:x_~)pg9W}.de'r#4@@# YK.~ %fKb*NI7\5#Aw ]/ŇVHYs9!BH/+x2bh!^1BUYmtݜ(}iLTNZzG}jNիVj4/  ɘfkD}f" Y(a?dU_bOBmjX&sZxf lM ։nx;S.f7&vnݐ~kQˠҋX|É)dxSm1x-nA3U!vB[~\-fY4pn{߅&E*\;@F Dk>(h}zC|"~#!uiHUZYh%!Wzv0%] F:I2I-v(6 ٺEBږ,|- <8y./;/S K:8HS Zs(룉͉3@ "5G[s@8H`SVҷȰ@Az2hK+: ,  D [-\_2-A)B*);#iKh2@C132*|C8gj@2@@(@;@P9yRzQXCFlDG#[㍅@8.2p(,1`GdGr,G)EP;4@ыAZ4@M, =ЬsljA{J4GLH,+8`kq i j|B((.\n[Ȅ(^d_[H\I鲛W59Ȅd\Ç%k0 ƃXǖlJ|JDRS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ #0[YӴmۚ][۞[[[[ K[mFcRUu8OK=\dmϿYsC ShM\mϥ]P15aZ@]P] ]]Õ]дw *Pfs+$ݗ()XG Ὀ]8%;z^O## oɍ;EU5+#)j E n[J_[E_7ܸ: R`֍ q``P@ +8`a` Ra`(*ڢ fp ]b:d-@8@)`(Ɗ@U3ݙ()32"#M"8 꺂$> HP cĵc(&:&c<= ;]MzP)-b.Rd侨0Ί#`82;c@.O H @PdFvd65>bK ,. _`Ί,hEFn dMN02^X84^6~3#S^J@f>/ gBC&cDb4n[2zSM3*a^ .+| >ix Pʍ8"Mh$6&8h肶i}NɦU}hp=@8MXii +h4;bna@3bR0iFhPhQjhtnV6^vgs['إ~.Ή&ta NšnΩk6"ǎhg޺x΍ʺN<\&(k+~8j_jpr~l 쾦(lq6EVd~a PnD;i*ᮋ֒NZEu^TiVfa$Nnd͍71$(?02fꧠo$.6VoZ(&n[b 5|npa_PNN j"h˯ q5D $,qH˖ _ ()(q^c_of+r8)>m@`ap`\`rrqnN,"zZ/owk9@hK!!R 8%P u0uTK]@ƟP:LKtuإ2Q VO H0+9gHGj45Gz 6NN7D vtw !uGvOiuqw)]. FBoIk 8w^ynSXoxhx__@ n_&2^\yo[aEyXT_"܊:Z%|k2A ggy/myA4o qO ygTgOy FkoIhQBsAxDb!a]ڙœ{Uy< QW q#SD3"jϟ ;*~| By|ca_n$6_;0}ץޏ_eBX_@r_|oEkp`F0G D@2|i1]IB3 B\##o`Z > 86(q"E /*2Uq"SFL )сyQDX Z ((JFJPDYJ$rj̄ FX0J&*x\+“O@]tu0†#Nx1ƎC,y2ʖ/cάy3Ξ?&|%PL0qJ>Ž=hcL,ljx` ĥޢ˛$=0X8n,TpK wj,Rsl(M&cf&@S9ԁ$(zGb[CDP@\qY8IPWtPguV7☣;أ?CYri}ZOBQ*d^C荵!)Х\T1Uqc S!BUf8cNġP b])_!&WF#-`QVgD#0D~ir%a*[)S#К⚫ګBU+H*db7V PK-FN[^-QIa D>jl*}+*,,ro*:'uyyX`4FH(ghD )`cAp SfE{mނ )R\QJYpRbb^j-*.lHFS$/۴OCSS]WWT+(,E-rQ]oeo~,%ja9` r6xn ]S`F.g ml/n 9'IB'=02! kh EMQx.Z*E6: aL0ÔOPy Rո$~ACAQI#y@g b->ܧMь2aH"ȷˆN)bwlP1{ۈ`+bQ'S&2%)KiJQ"U!>",5%:sN$ ƒOy/NVPcMV7F"0_ESjeM˥tHH FdRyHufJ%$52&a)y ̜%̓rT 13̻|)3Oiыb4(G3#D \,L*/B"cD~Nfo X;@ŏߩgxX@"JR^(#'kkTLTʔUI$RHQe2Y [ַy*A M!' <)e!6=zJ<5OzL\ABς6-iMٵ]V~pb2Y !dEĈ/cO lC b]H2"{#ȣ* ^g$b\kAxMjx32ڊ87нwC"Dvsz.-A;_很ցȐ`"3DŊ!6&ϝo r\Bw$ӝMi[82{c3K7(Deח䈐Yqny%? g"~ɸ)*7QJI6)KOybd$)gƈe=[4 ~uRdJO(O1`3Fn _2鲀h`Y!Wy͸S'cfVJER#3^5[WÚ13΋$d;/"'H9t&K2\( L"؍ ~n#SyaOPI,oUt"P@-=r)=2BNpF;X1NS)Fж,-G= ˜2M(}q#%}TANG R~.7#0^!`H/<\&4[|bnc?'RTPȉ!kyH ED8p_ 0__WjYXK_g6I_"<@(`E l,L(Ac^B`h  `@m(hAJ* ҟALPa DnrazFF- Db) Uz Ϙ\d[r^E(!vfv"E("(ba!!.!%bb&jb&"gٍvVN&bwb(*b,,X'VF4@.b`)Pٍt"-"c-c c2:3Bc4ΐ-Rl/#uM2N7J% m#9c:#PcLF## =5d@ @F#$J8#c6Ed=DErdGzGIʼn<{(KJJrK(dLMdN!,$OJMO&$ %Nb_QR"eS:SBeTJTReUZUbeVjVreWzWeXXeYYeZZe[[e\\e]]e^^e__f` `faa"fb*b2fc:cBfdJdRfeZebffjfrfgzgfhhfiifjjfkkfllfmmfnnfoogp pgqq"gr*r2gs:sBgtJtRguZubgvjvrgwzwgxxgyygzzg{{g||g}}g~~gh h"h*2h:BhJRhZbhjrhz臂h舒h艢h芲hhhhhi i"i*2i:BiJRiZbijriz闂i阒i院i隲iiiiij j"j*2j:BjJRjZbjjrjz꧂jꨒjꩢjꪲjjjjjk k"k*2k O:kJk D0NrX c , ,@"k Ŋk+=۽VwLCxI"b BkmA&lJ`pH-Mlj,!EHnln2ڵlʆauͺlf,"4q=ΪNem̖Kmfl*mޚ.@PBm&Lj-‚eւ-}mؚi9ٲmKvm-~lA.iD bD42b)P@bnjņn~r .} ֬v)x,n6j x o"o*2o:BoJRoZbojrozooooooo|!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++333;;;CCCLLLSSS\\\ccckkkttt{{{26!9$<'>)B.E1I5M:Q>*f.i2l:rH{R@VD[JXF`OdSjZn^o`sdwi{mq׃vً~؆y13:<68?AGIWXNP_adftvz{opWOjrypa~ڎۑܕޙߝ⥛㨟ࠖƎʔ͚͜Ȑѣ䬣尧洬鼴꿸ý۸޾֬Ŀg H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻs􀀂?“+_μEU9q'9?=&ËO&+J4P@w g&O V@,r&1a h(XyJ8(#(2I<)D¦'lb V8IT G)5@XN1di&b$&lcQl)B"ݝ|c栄=fdŔ\6*餔V Tjcqh^| }BJLIqz%Y*무_b @^殀r8%R!^f$*rc89@wm":B w~p[֫;bbRX]` S8YL!F,=^IgTz씀"K0Һ+a ĸ]$cj򝪌#LfV L7F֜ipbJ(\(|LM+cU!O9,uJX!&^W[lkrf'TtX.ܔW*Q<x18e9[ xRF1UI˸t`HX9f=x:[,c47R8UkmK$hw 1VvOf:lOdW/>:˃vn:(⓱$UTE:QcHc?*,yr:3bPKش:OgL Ժ6y4ڲEՐBS:0FkJ6jTA,]x)l-_f!6 KsF N%9JM/JCPhܙƦ"*%J46:ṡ>"I 11/oΒ<6j㙂7(F r-z2#^*Secb`&T.ᲐLQꤲ)MPЌnئ b1z!^И#[eT;J2QJdJ)PNiҌ<_)#LwJ*5RNm(ˤ6)=HmM3eK!;ؕORFEXYF&;"(&١t.TRR<6 7˨PwNIddJMt@J׀T@uH9 RP@*QVTԊ!YdZ?2Q'HA Op%S_ HdZC4 @0mbi?֯u`٧llg+٪bǛ5Qp5!:7XqmDv * B P@$P @X1hUl @ra2GVͯ~rV616$JB̮&ER]]-P !)ۀ滑O` 7stŝҾ@oK@ܨ0nTdՎ(JHDҘ a/B}%Ռ;Ze%yo9\59}lM1ѢX $H'8 D+, yr26/S;}I;c"Y*a*h g2ɛ#*"w"EEtK<=(Mu%E "V*]x%͎X^GO2fgOD0TH XSVpN?% "qBv7M(j|A0n>cC<V > qC!ɇqW+r^-=o!(' @mD۞E#8/B2)F^DC  pΑw(^r5*ok n`=Jkp6kODo1pH28@ cfe"huwP C~BB<-0E@j"'bm4^ #!w~5e3i/D1;Q.zFZ`NHe8HP`9'@!ч18 %$9 )P!Z#*a.&VLԕ [y1mo !)hmkf!ej>9%x8 l4Ǚ+pu5mry)2a!u99 ix~hy&}P2ĜDЈ1B/I!ўœ6a )5%J '9IN,}X9B Љw77ɟJ !>:: JOQĄ11W3hG !!zY!C1E Y;a\yuyr&t$T2-`h~;W:Z!=9 _Blr AM*#`.Z1R30 m2!?w+J!J\ũQz1jbZj jOqYٚ# P}xj" ܑ1zZ!څ1 ܱܺE]J(: M3g lJ$:% /*# -ZqYUyɮ!ef&Evh!+@"4eڳmB&jZ)zDu;+b(;% 6{¥1  )1J7r$@+1bGAA0dk#![!T³65鳚q;!gxG cZ9bhxڹ{E8 e[˲q 8K۩ѹrIں:({鶟CSm*a[ B[R- T2۾Ql R3˴"I[m ܂ٜƫ 1SHK%bk!1R@jڿ) Fcږtذ)*BA [(;z;ľL OED|дab/6{[; OH(?L?8#P&1b x4R8ɋ)`> ѹxyɐrtKq&: ʫ( ;E)Dʻ~&t&v\x6xQ ^D1F9Vq;F#"y 아8!."d1o, D|?_rq b 1+,|h͘,) ƶθ,:[̽91~H-(JͿuA,_r!iq͂xJ<(&!"> q̩<  6SȅlK&#UiKpʌ]^9%imjzѹop\~xCZ(mқ+Gn]&].rw޸ 2+Bhd^[`6 ; XvS]-6i^4Hpb]cMM! LW{Ga -x] =ެi~ծ[bN!Nr qPVG uA+.|7o ]e^!^pÚlHn!G~".^(Y>F.5ih(+siq' >ݱUވ8m3qn59˄1ʫeߪ& s} 2_~_Oj AKP k q(({AJ"*#ʻr_&ق=FB )1K@U PB JC>=2lQH7!Ƀ)*%JPH3,x2'% `䃜Tt40TM=SX)e6- UZmݾW\uśW^}X`… ib:PҐjxPn2^8D HfDD'-9hqC% Ucꅯ. pb&YOPLR # I^ Sc˙E 04A9= ?9 j-'C0AdA0B 'B /(90@x2m"J1#(\ː,B '>%4Oá(ȫ#`KŜBƜ\G#"8:E@i%ɵ\ S#f $#S1r$\/"6gAK) /4SM7SO?5TQz `'$f"bNv$hЏbuɆ%33Z4%q(*q(2ҵ"K d?30 遶 !]:.]ꌤj]u0@H-S8[?`(sUd=Jo-iϙͨԺ@ O+gc#G8c7c?9d]as,V ]YM0ignfRP+*4#Ҋm ( MHar \\ȉ `&+/'DՆs"٥ߛ*E~-h\v vFIɑM8+il ǡ,ݔ(%`G'tOG=uWgKH+nsq #b ݊Azg!1S7To Jܢ!'5ZZ@f'=~{$:{ۄ0ۍZ HXe.YKa/'RUH"?d}hQ>r6|b,f߶X7BЄ'Da U($!⸒,!)S? Ep@ 6mV,2$ x% Dx?xk$fA*$s6F*C#%*f!„L낾Bȵq!4s}9ZJU)}Dj) y$-\Hf()H'IĈ+e,e9KZҖ*E"e?^%A6.,49,# \ (4N\Jf)'I#R Il̹""TSC#I%΂#+EȂq7#E(\2#G,6D\*wZp BF-R[Ԧ7iNuZKS/Z$16Knbcъ@-"HԜt=Z@NZ]BȋL%Hr F"@Nf/:BC*+C̨u$uц5"$F!Vc΂|"RՈDSU2 NE;ZҖִV-Fk+5czdQ3 2Ltu [ P+>: 1%mE6N#u J!E+ىšy.A[;*Z]wKQT@ӑj&T{K uC@Q6p% ZpInE89um#!}aW"'.H{2[! Ad}CYqS ҆sMFS-GnH)A:$*\sLgZĩB;erYr%IEx<z$ǙkB8W&؎ pg>yikb܊=Z'kށ8%REr֘ ]ED@Ne~--R/F!K ϏTBnB&2C<[z4CyuF>< .@O(UFc%o(VP,Z9!rw!5nQ5mb;!ֈYDҹɮE__% F ( xB}Hk )52B.m @eY&ɩZX+FERta/)hvR虻"JȤyw_{Z.Ef ςەZη4#1+$u!]BޔPم ! "YruQswB,]Qq_!酴k6hC^/Y$]`Jpi[!PmqG~{[!=֒IGWiBZw] q(G[/t7t} }8Ben-d"f1*?8c{S*8 (LӪH s6JS@@P pr s% 4@h6S3"|JDڤ𾑐 Kl ҃; kA( Rµ…Ȼ(=bˉ{#,4[6@*RR"l;sųf70| %„<92KL\D#:dkD Y>7j;1*øp<s CD'E94N K@-/C Q>Cc8+8?TTÔlLpEX3td4PSjS#P21rȀ ۋ]D gi7cF6XGˈČȷk|6|ǼGF[ne>B"k+cBZ'pH8pD A+`„BPIQIɬA*U)p%H{gȲ4˳D@HȸIʖ\ۊ3Y$) Y8Æ[GMOT w0H ?(j{7y3\K=wjK$@D 4ČB:l 8JeJټ͡xFwLJ4DN5޳ ,̈́ҭȄČCT#l;Ÿ@zd# |B@{ݠ($q h$T9㑡hdL,\LԵ 4H̵(6L-Ώ\[8LUId{D/ P?`MP, c6LxVɸ,+dm!$-̢TOhM4 $UQZ 'u T ]{OM0ɈYЈ[Hm֘EU\Yb¶m՛zM/o8hS+Ǹh6PV[2E@ XtZY 0M Z =S$˝X3e\L"O0_]EsȸUͤ[:4-uYȥ8P=#7mBU^ =Y@YMWʋM .[:`%5Ve 3eԅխ*_SZ'`~P_A% Ù+Gt\@ݴe{CH X<\J=L`z5%c t>^ƒuIaBϒAI2ŠY[ S\*}d C# GHQZDUD @Xf,%`r¤X$L]YG 3AG؄^ Y`-CzbGMQ 7-TcX.7d\m(Sc! A `eZtVuf$fɿi#C\FQgn^Z( سM$]5|^i]6g戨F==&qd!=TCbՈiVf"egbưMD@OFxy˂&۶rfFꤾ`λBDW&g`4fH7ҭ<ڴ4j>Bшgd=v)ciL3 g^N "fШX%jp1KTЧgjSO$*4jl ,߲-r;l)Nϑn.0ZoE7%g)jKX(SlЀ'.We ֹi⸛7mU&.kPmfV" ( %gxRo%Zz C+%tb|A}Ya^>ZvSSVAYdR'@_:+4~BZV_1x?tXӲ}]Rn*/.V UCPSX+ or.rvQ.{5+qbH XhIUvϮf(:+518G\4A͑HJC7ScvfU 2+wH5 #u+hOH83'R0)pm b9ԐQ=wtgvJ QVY*RߡC6:`׮R2 rc+`8_ 2A$$ Nn[Xޞ t%pJ#C!x| "(cM$uD&Yв?@],f;hmv\wc2J xmY+yk,+(`p"`^()0(LM$@w[g v+DzbpgW @X' sw 7(+P<>t[mOl$$U%2`iӠ:w'РB-j(ҤJ2m)ԨRRj*֬ZrBmp ?O<[@ΝVĺ̝ l"|+ESՁܙ/HSc %] Q J4[R(7)x0ٙV4sq%[Y>EPrM '8;Ǔ/o<׳ou~:vS+m hPb-a5yOاYaAkYDQ]t}F_@Yn0DRO{D@F;=VTΔY7&׋avqǂ#]=?9ѤbLa9&ey&i&zp)PmI 6~g`POX>vM |u @BMX:sDYG ePEY~5KX[ 4% gn bORj>91*I4H,%-b͒I%pPtZݱ9.{.骻.bY_y[R pK! [QE ɞU+pG !Q:"5Hf#PPB!C41P C}R&!wѧ'JCetyiN[>[,@m ,OJL@ V(r W ` :El@r +ŇjD@p`@D1O d HQ' @֛@֛:@[KDmB l |#kfS,Xb9Vn$#&&a?a,!$8JB3(^<&4@P'p): u&Lf % pC+N, @@"`?'>}*Цd]-9dpH%1@R(`NyX(HC*ґ&=)JSҕI $ z6)Nsӝ>)Pʞ'#&*ԥ2N}*T*թRqBQGrY`#5*X*ֱf=+Zz&%# *6v+^׽(U`B8j~=,b2},S6aAX' d3r,hKtzT:DI ղ}-lc+[D2X]*B򶷾-p+\J3\r2}.t+]vS3G*;r.x %1'@iC%}/|%ߥ/\WCW EVݎG~0#, tNJ :0C,M^CC*(Rc,Ӹ6$ ";q!IRrF>2vN Vg$V2[~dCUGf>3ӬbiufU$Nk3=Q,0L!3E3nY%gג'L&yMsӞS-r#JOծ~5Ay>j$YOpX׾  "J e3ξF֔$WD4ms!r_2Vl~06ӭus7V'7͎!UHr >8uOQ}SO[fGQ2񑓼&? lR:)^O.Ӽ{vt"-e2Q̓.Mܑo*E:ԣ."Obs^z^^isMV;Ӯ'ItӽvD|^ !;/x!V۫3_r܄$~<3y}!pGѓY>}AO$=sħ@u/˟HR!eo,ֿ>,7>\>??}8?W咴??6? Z &T؝> F KW:u^ f IqJC ji &Hp Ơ ֠   !R(>!Ҡ4DE^{m8@ٓrMU!!v8 a^Aa!WD za Ɩґ>bݼN( 2 >"$>V $@%E'~kU_a>bbL"+f ,MA+".^L^./f^/#1N 2&2. &@Dc*A,HR8%(u(9̝S2c2 @@]1<UY+ t,C @%O E=VI<>$DTB>D# x/GABD:DH JJT|@FL$JdC4RNI4XBGSdA$Q!IbUtM6SQDpTF&LGd"RD@P eS%[,=\%\ߪY\FC$5%WM!E[e\T[E*d Hd\[^&fӔq , & VAcB@WnPZf.&K(%ScfnMlD\īj~eEo: 4s6ś]Vd.*"a~ p@@((P*aEC6*RQėjeq zOCfUk*+Oh8,00HeJĠbŝK^jA&}3rII04dڈfhh -ۺ ٦:%* Cm#ޭ$նK~I  pb DnT.\v6@LS.ް.n.֮...//&./6>/FN/V^.a^/aꑽI`no͕!{@k`! @0 C0eN@4pB70$`)D@;0'Op+ 0 0*\+A RA APp -0)"#6NP@GBpAC@`)$1'g*o1wSUXB x )@[P1D19qINd(D$_$q E'D[yd71U܁#Q@PHr#SrPl1(/*E p($dE"@@$rrBr2;.CrT 2'tq O20EA|r(7"P`@[BAVB#PHsSsBXscs.r#S s0w1::2D:3>.0($qG??'D@g@%4C?4t3T\9kq;%s1&E_tFGAh>t#PrgBAz4tBt4AT|4pqH0sq1Oo1P P0`54TkuL@BA'N |5 lABA |Pl7[5WU0V'Vgp\4U$u ,S ;sq<_`oPDoTGv\gp($1#Dp+CN@hg\e'DfgfGPsqTO%$bcPlPvn`Eud')O@B$B?g' 6D6vC@jsrtOw{@mkqP4q3PO|z+n@cs@rɩOs+"$KDgw7Lp7v7Ox'DgGDsU\ ذDw~+Da?rPpwqEy8O@B 5((*vQ0 iפׄ'uԾgN(D'/֡+WlJ$Zjsw?|yѧW}[ J$oNr.709 JSP--Ͻ 9A QI,QLO(["kS`pT.7PB| #|!!v1"2+R-/ SJ@ DRs̈́f5=b 'J$@n=z &L2P, MQ";sI)K1TM9$@HMH!,!-$$;j =:%b#D| ؂X"ZkVmoSjZԠFE`>@IÔNJNȒ:2 Dx܃NXn7::Q*3Ql4I.QNYoxrM cʞyB@jt埁Z衉.hQ65xɈ@=Z뭹Z+@l͕2y2a%VBA,b[ް[n'+N\o; *R*{B˕o1A]I/VIHLoa]iq]y߁^/O^o硏^驯^_/O_o__@l,TG$́1%\t@A%4aK0.  Bΐ5HϠ`6Bq #CGdkaɈHT@' F 0P3P)`aBq@q 4dV!5&MA@8dWj$)H"e'?i(!08)QA YR|*t£ڰKR D-mP41)0HQ@Z6WjP9h eDye&4g:fʅH(j"i)bgiO|3 OuN3N> %YT0OE JCPDԛ'y0ē?%50H@DH4(KC yla i H \( ,[HRP@ b& o.dC |/&< T=RaԫB I@dnw`ϐ֠@{O_ րs:! /pGi#C"">>    B X*L m*$q  OR & l)L 5 I4QL $N3S!+!7?`,$MR .)Z` Ҡ6P(*L5T:!`Bd! 5$X6NkLD ,!ᄅ` 3 "F5F t!BVtHԃʄ'\@//sn"t\b4n$BnN",Eq!0!5y (:`")$4$bKAH4N (xEs4$® bC=P!!2P.qJD LCs"<<ؓ6"QSAUt'NIgM裩 UMb^4ބ!3(%l'$ >' 4z`-eN:>kQfBuZ~\FTH# l b6 HISSÒUhkrTUؕ!N %m'$xX?)X5=#B:6؋!2A !E/uZZ-bY)1" 3p]Jpd] B]!`+G`R4>r!H;$ny! I!j\=9'¹b+9: Bav9™e$Ι!~Ӊ! 1Q( D9bm""L %: ,ڢ!ٗ;Bg!j{u6O#TOz7!_6!;jn3ʧ75ji"0{$zrz!ܔ I:}t'\"X' ycZ! Jn*v ⧂j ĊDZ@&* B"1$J z\'ڱb,5s& j) ;[!@ V $`/V#{[!j' 8gw'w"g7)YJR9]\+!`K4BaH P{&ߘK(k]\'z]"tM2F0@ "by  %@ ` vW3t<"|xF:x7T˿Re5bH 8?H@B]LĄdcO|Ćy0OF{g>j|!!5?T | +I :"@yF!˽b 2!.bϼxyӱ.J#ʦLf!DT %e%KN| ԛ4|*>,Y!0˚٬W!*r˷[! !Abo(|!F+6+" \U z^m.(1MHR8X6JHèXgƝ&}*-Kv)<= 4: |!* `b](=BoEdWw!>؋+f!BץS=#=!`@ ڃ;9wڪ.|M. *]b)ޘSٻV}qmw+gAtSf!h_^ja ! B\ ᒪ󍌾۞ٱ"v@DD>jo5'@ D_ )Bp74*$Z]]μ)蒖b2CJ Ȩ?)X]20$n\}7C寐!e"H8!Rb?0ɬ <0… :|1ĉ+Z< cF;z2ȑ$K<2ʅ4hPJ.jLsMBRTQ%vR(b'-vİs;/ L¨\?&eVf 0+TmZ=uքi"+ 7)x  >8Ō;Neg|@UOЊeQ5Г@l0@"/ezLuB%,RċKT̛;#k ;.lE*|5{$a鬦6F%X& jY[vNh1B4AeP];v;R!Y&~~b"Hb Ed }`X&FnIAeV<h=DKuK:$Eo$RzVZCMe^~I܆I1YgwEdygT, )NI~DS L `Z;6 fu(]v5YIp5ȍe! kΪP.-*dZCIBK*+` @TFG^4lFI.%$~!/=Kʁnꖨ KO$aM'rB'SN UYo{NR(RAN ùA!C!lS dH.. s2̗ነ CC|XF&C,CCf4EpmAH4@Q4.9PF炍vj /@oVd'6z;B{{ͱ̊҅R4BVJ8 ~#n&Ukz袿j3844#MmClCK4CODSW],@D qף,Fd7?vT/sTj!|?N|+%p{s 1y&l 5m'#H lny R7bq,4VD(qL\uY'S@ \T ?!HC L7*8 q`R&M4]BCT1dm%*rI$ a (@ A0 P6+MjX4YABz8>i`Cw(!aWLH1W^$c(ܐ5>%iD hG CQ#cB~$DHaseN6AҺo B 4hlİ%q'"WM !O| Ndg!2Ӄ,#Ḧ́@}'JSw^IH%O2-nLYX-,Xi#>>lX JĈlJ47 HP`'PjYDq"U/CJ&)/|ݝ| %wd77jy;0 $ӈ:#rwS)A  Dl#Z¤ t Q=Rb"95qm] j-zߢ$]Jx" CD+$.BܑRxR{D_[ `Feպ +[ dYJe% ^q<29kX`kxD#ÚD$mvN%h3yҢSh'<R,,iRL("qAjG~dy4O5NIS5#NQy$yzkH@P7{DJHr4 w 0i7@y!T`mROVGjψ7c3UA aO`3wh^qֈu.!%vBXuFV+b%'ޚR lMK܊hMvGi6!'`zp$1 M Q_\ L=jla-4di=KqF0_vcYgv/*cQG}}Qy~v^kaC;W@XdI|gyuI8 HvWs AJ g}?8V@G7bPepW]sDv{50|!/̱^^|wfV/X/G'& x@ .@*R v A5P`N+qHbT/=cx(58v9uv6a3Bn< '#&I Apq+40"Xh(- tԘxh' o"{DcGqoN'pCKUD'e \{lWLi,'jHpY_Z P4Z^ Vڤ#ԤVA at-aG،dȋ1NG$ 8iSXT.a#2 Lϒcxp~ &x"#Ad),e7X])\b.)ɘ!] nl *kəynk` 1 i#1a 4+Q qqib^yv&9ߧr vMFB'RyH@9XIZ9_Y%H PZ{xI F2}/ēmRH[3L1;fH0tY|A~i.14jJ R𖠧f9w1ǂQIt(7? `EjGJRpa Ĥ{R0HCڠ 1 A5k9 #T$avwU ikV k9Lh詞aua Pʃ*Xuå kw3اdI)H+!cZdfbRoyT1B,Z 2mK励vj1GפY:W2٤ te||M =ዜ;)bu$k֝wzuGE7 z7!T.aVjwc i*3p: 2oQ::u 1z*ƚcrJ8g9:19 q^ n;K1N@R ŴM˴5R;z J Wڈ*} [Z Jaq^DIJe+;zZ|-]czu 2eio: ;' `I/aȲ y:չ3Z[ VH{Ro땸Pz{1F n~~(Zŭ.;sXj{3 1Șp Qѫ R`CNaGIKQ|Tyxt\@HJ<<:K-;B}:V:\R{)f<(Zm)a=)&KȽ" ѱy/!ZL]ۻ۽6p`=Vdh6` ۺ\YHGz>Z| V`ݻGZ y ,Jbm/FK*LEǪ]AxZI!M1Qd A-$h ;M:NJ;bGm<nĸlK a@nI?75\\;{n׎ndE!nDjm rC; .ɒn~%Rv˘8J ѱ HQNf y-֘!߀쵾-OLI볐794ގ-GB*U{WK^N>m  [AH,S]"}q6X] q^9Pˣ1èﮜȥ.s)oٙ쀿mn; fMFR-eENJ/T΀dSuhAwovl {̹YcePοa2o/sXhhIofSs論MF*WFDGx ф`ױ_S z$X,+.4tP` ?9$"\lHcUytpG/ZHpJ1#lI1 8#j:c X⠋ZpCUԼ僋R YVeR.[qΥ[]y_&\aĉ/fcǪyJէM2dС H.dAUe"qm2X$ WV.m/~Pو_22%g4;v Ue|o3Тt] :] VȫHO& 2#pB +B 3pC;CC"Ux66>b$0"bצ3H$E/" OT ".`(,o,H%<ț˺3Lhr&kȹxMM؋hIZH[($hKCt jb 2t=KKrrDV[uUXcuVZkV\su)08l) F+'0>JȵT!2""lr's! zB%BWՁ r$2 H2хPtQ"s/ yuDRe+ʈ*DžXT`"#" u7.UecL "PfeygEY@b6hCP³AnE" (A\Ld8-h=2%$$Z[xˎ ʭݏzO<.U({ j]JWloK%@JAtJ!kq=zvaVbνk}w={~x AY}B''pXuli"/U:  .2?{du_ C8v#^ ]H,r!@t3!p$C$"^JD+Ef `'P>#IA _N|K!{.r N25"G -8-adr9d6Ȕؽ0f\0|/`KD$sivBm#"LeEde+rH7#,@-kYB?Ԓ.}˃| D  hЀ &iPFo+/cgp/bQc2Nl`?O_|S!6"ba` ! P = &VF.!O'ԕ hk*L u(AFCLa Y! ]L[RziLg*sT:5ijT:U\9SiW'Eyz+P` 6! 2&fN'hƒ-iG>A|*S'EȊ {u 7[1TB II6T!< |E iDU:rA.^%,9 ( Jp!HZDDA]H1Zbȹ@k `o{<6sQ8@x0w# ؖ 98Ds"DWM en˝Ryv^S7E8|q.uAQ\$|YG>er7ܘhwjalxxݻ=͐mz>/y5r0LCz'VtY_=DnQ,-? W 2{n!x5VYinh3n(@tikjsì~1v 24 fs X0ȏ@'1" ?H  ټ-ѷ@P0S>| >![€Pj֋׳%!%"# *$P,B#>,-|44@6LVb9/p+ 6ߊ3:0ŲrSR _Y+/ʂ8Lƃ28TQG@ `ʮpK4(ӻFh 04! . x\*³Y˾4/LФKKK̖ Y`삃pK[KˠMȄ2211΃,yGGk NL ,[2x@,NtpLN1(O‹bLK`M 9̋FH0IL M`EɅ@X6^Y'MYb; bIJÙc) L$iӱ41S9dƯ +$ 6e[P"|sc&[x͋YlP" uS"-MЛ2hO8‼ 7.F0q$sZI=V%4؂6M;S=FYDP82p/UڀǩNGU4L(T=/ TDXuҘ8֔2C}-kOQx%@ 3Ҷ%XzJѪl,RSL(p:pW8x JOkyá%RX6?(H;6ģJP(xuMsySl`V<*DG*EmG` Z:ZHTUTqJځJԃGkTܬ@+ Ub-YmZ5e/\mNl ^XUUcEVDSց` ۽?)Zu%=<۠ӂجY YXWW<>K}6i)X;XkK؁ J?X˘H3‿$QD]8JźS|2ţ:_h@E.ˌ tDԩ}_eT__E%[_M=%8e_U\Z\8x$\]Vx\v/u X _L ҕ dQYux +aޘݏޚc[cc aB`\N-\et\Q(aȒc]A` 5Ax 4U ;PqCcdHfXh2ݜ;=t ŊϭP]ݲa⦼|3!Gb2Ӛ0yJe1`)TʂBީμ骀FS%\Z"DH 3-8-p n- *h0hx&ՠzD芾茾/PRӆ~hhX\Vn1(e`M^UV`ITx/ 2vRηi\ J`}/1x ;h(h֙MQ+'(4PPU- C`] hq*v "(Pr&$mlFm.Um.fSmi60v,D$pm{cf\~Ax:%t7.V %ɖP$KƦn0.Op_inNG1 p܄:h*8p\︜.&9.0.Lfkfp EV{Zր(Gx/ 7qZ$p9'hnC"0{>+m'@h%PpH7Do +hb0Wcrf4&A$$f 3]P'G1W5w^)%"9 qC&8wq,4xBO6%pF7Ht8pO3P*Q.& 0,p/ 'Հ [j] qzepU܁`CvjvevmD_ qd[j]4[[ttw Z2wR*q'z{K*5`X/e1u]Sj VerO8veJq0D/m?yO2oWyq͂XY(V"pwxyro R7wx[wtw᳅p/ukykxZ/ y{2{*q,GU./8u%owכ8̼yWz|gzس;z[zz^ //w//??3ϑ{/~q __Dww?'op7e_}}}}PXt%p "Lp!ÆB(q"Ŋ/b̨q#ǎ > R&OLr%˖._Œ)baNQ[ي  ABSJ4gAA.TBTT ZU:aI4޾e \  ҅`޷wb!Ou /t[WnA!ׅP2e˘mX" HM0RXaKhT։5OR4TTU]VAmPs&PpDRDRkX DzAbP|&|Az<Y]5T\UHXcYg9ogh T^q(@i]bPT'ng+"B/8ˌѩq]IdQA=`z4Y &IzuEWYJQY⚫H|yM霡z R_ԊJ%Ԋ, M"`(#JA`Ai!<ćロ"dAFFApPW "X\A29pmGiem*3޸C.'@cyDˍ>ZдJa B:W(A nѺ7 ;p 릴k|Rmicx< -c$AիѭAd7 ]p_oP >66߿9*lr!0 SkDDIFLuѝxg wࠣx'R>bxZy O0B`#r褄ЇH|L($BbEx."/h+bÃb4}5Dx` §I  a4onv@!y"B nH X$f KHqDH<ߩS!8zd]f1Ox qxU#}s@9mJDc(]j׻bD1@l׿n$[i\E4 P)Ǥ ġ"!mR! 49^+$#gb1x62l##YeaH ”HA  OEk^ ߉WCyX^'6zcNkc1(<̔ㄴ@,0\,X> &)†HϢ A|lALK(6_ Y/ϤON@LP^jH K1`$H`nDB5 ۋDB(#$K0A)`އIe`AB# $ pABF~Hr,x`Pj\`J!+InAVʢ(A @#əA!lLv,O@"ؒضݙ-2>*t9NZDl ,۶$IfEP mvN.!(A #΂  pE&~mBNڦ J&ߊĮ"V6k-[vLAD"vOt..OD`..ZʹXgHA%[r(K.E&(񦛀.G4NnA}@o&A³̝AA3/vFKLh/Z^aKDpND ˘:  JlRZK΂N!;&\Bȥ,Feg$DO0ynfK 0[,pL8D@0SiEG|<nkJʌ@|#$aK0,OelA cpL0 ZSL qjFqELrC$1C iGiU1.mg.q Ah2pK0" xFM0K((n C$@ 8n$@1oA <*D"HIBOP$+S1E|pV!n5bL))3@47)2LL+Ko >3?@')!4)@A,[C3٭,G$·Yp QDz*ED2Y(?LtGo[sD%*&GAC$H4*xA ?FteDIG# YFiB$ LmvA#ȓ)"(.uf "DbIuDW'1rQ2A$A,M3A5e(sA^BBCf[_@a{báIDt#I#A=(nwbpjPkD%X#<DŽQsk(eA*k6~v;Cl\kP>c~ZėW{~?v>D~Bq@GHntCBp6+׽ZI?v~اg{#ı ?=\=vp~@;, 4xaB 6tbD)VxcF9vdH#I4yeJ+Yt&3i>9gN;q: O:U-zGň'IZvU BQ<-tn\sֵ{o^{p` 6R@T"n(uɖ恕NjU!VZZAk؃girs 6!de׶}wnݻyxpÉ7~jVƎ[ Yer^UtvNF5͐WD 9ڶٷw~|׷~ :0KH8C -„H黭" У 6T\]4N "P_ǔfT`$ y)X=&MT2 ʃ'\ ԠO睘⊻6FX94DL ]t%k?(dIt*ɡ^xa@E!x䣫\wߕ'F v#J鿅 HO4^t@B eiE tt,/#!%pרu5-P%7[6V@4[M? Z`.NSނ肾StHPZɁ_a:ޔ=kʪNwa[B$o&+WA ^0IҽtU` _da!C,ȋBe$ T}o8,P!A!` 1i&vt YLFS (Lo7@ MgW F#i(WjXɪmi!$h† N!`A, `_(AZ i_ Wȕvū^ª%LAAX ]A,ٿ rڛEJpGZ6!_0g {7ume/ۆ@ B1 Qk*tyd" B(tqL?IJIJ,s a(S`Qz1ڝ+LH-h+4& VZ5,]!ƈ@š@` tv 5A0tq (hY"aDt um "&q`kQ\Bd[T)%DȤ!*&@SB΄2t6Tjs?0-#@ѷG ,32 \Q(K!FWoSmd:kuG Re @$ =.vyH>HICcg}0Wjk)uNm^n ú]݂̎ 鍒%J w0b;m c򹩫3B4HWV[QA8 ҽ6)ӉbD}C-A 1ld NW spȆ r7W AZ.X[!҂@[6HIlu,R&o sesE&94(d3y>[;l/P} Ξ ~QA@Xw?EBl. }ĕ, #`dٶ>֡@k/]J ^8i^]^ ory# 8BNBdh9sU9;Щ(Cƈ<)DbNĠ.].Zf]Х> ]$;GF! l.]"q ` np \oB{p h,&`H }pե (H&P|ME܆&f( ):b - T+NOmZⓄ';OѤ*N+o#"SD6p D o  @qJeθL "]Z !LHZo  `  o0nh*a . œ:@C/? NMԱ!tȆ*q!  B -O өQ!20HI#D,!` B֠g$."" ? O VBeb# "^! S n Zop 7r ,l!6B`t x @F`+`,AbQ ތ*R.{!d-3Mf B{ v˒.sR0 %1B'i2 2%3q b۠0Ɛh !(A!&3r.k6o7s0҉H$ jV Ra/[ɔN 88o$? <f & "&!`&o'3's'[< ([&3 26^r.5shf`bq&hS7TAA#@"T ?b:celh]8r.2T Ȏ>{ R4E e]l$""be@0Ӆh%b1"U>opNEV vVdkkgAk! 3205fffkfի~VnnTi& $H]fN 7pBeoo!ogp%UT'8o@!Z!2V^G]K^vsdAq, T>Eu]W$PamG`6`'nww{w]d @E_ rt^5, _qŎ7yY]"vnB{6l{{Ɨ{N lIvmV#7A,~-!~ Nfow":n&w ؀J# K` 7,!VÔ @ j+LL(b4,F}N9WeWK!`7e~1X"Iw lv0!\؈X/F NW w≅.w>/"$!RXeUl{cxEsWV(n"xuZٶ 8tt؏Y%GHbbML=P!Y9B8jqEdURXoe BALm$J_8 .YgkĄ="qK7.!vzD#":]h"HA>Q8Cw};eo>o  ઔ"BW_@QY9] 6abٖMx$5BR`!;Hq@!yvz/xO`"8"е|ЅRh !#>:$oy_1_@gobYgwwPe$Zܠ ؀RByڧ$_du$tZ:Y=:HZab#i&٩Z 0ClEܠ꺮Y pCB\`7 u !*zHsEo0]9BJz7Ѱ3[7U Bd[Tı%A"Z7 @,9k۶o["#!#.p۸7Ns?Q,NU$@tDJ[%&7?t"[כ۽[盾۾[ۿ\ \#\'+/3\7;?C\GshD@YFzGJ\gWi{`o<@1Jȏɓ6&JPɣ\ʧ!&(k⺩˻LD& w&N(*|eJZ]=uH bў2*+/P!? .C].Dg'_].?af}Di}Y ^`-X.R}ة]EX G>!YBL٫=}ME -I}HE'2G!2݅DYR 2G@,Wp0-@ )B ;" c-E9^>&# -;>c]S=%'.*(T "ߣ bڬZ>8ouɯ+߼Q-8w% C:I $^>~ ȯCMK0$ "_8i}6_# -ߤ4e+K%x _+j>#Lh~ bu$! b~#~a|q+0[o⢊!|I']_ŵ="wi H*TCJHŋ3jȱǏ CIɓ <pTI͛8sɳϟ@ Jѣ3DTU $Y D+O thd>YM'TU@ٻx˷/P-*}hÈ+^̸ǐ#K>%BU!aЀ©+N`]]"'<u? w\VM-X"KNسsT]@A?=~h{h8<'4pE"T'hҩlZ$CEz'{G|է(0Y"lć4Ҩ8ƩbVX!!Uua7rAوiX"$JE.UVlDCSfihD (kdw-ɣPCib T'Ta&Tah褔Vjiz8'Ii_GXqt\H⼊/WexUXݑ5-:$  >1z&@+BB++$%@JtCXZ? 9 cDk[ PNXp]G][0rF'u +.)E4SHM#dF N a6a%iPQJ$WCa᪗v $@MV6 (9BKfE,SNyͅ %%ALiIdt`E"χ a!HbK NAҁq$U2 ^ EGэrV`#6)`W2^diKgQ҇ `hp,u H"5B6&_"uGDM_a 0 鍟W*h N  4)kz&H(B0$ !Hx+8~p'TٹFO`w8 rVpΙ7f=ȅfLMĻ 'qkK8X0.4F`!D:o?ibXFk@>FmR{ӂR2'+mBtM2UϗSxհom"$:E";ҖKFH w3&gx:#49A(]ybaΧH>y Bp ABWJ\^7tG{ ؀Y, p{bwf{R`@|N V(v AiQW-b>~w)ܔ'x|Gx>dxAW7 w}%N4Ys5cF%@dF'wtE8dXf?sigoxvfY$HR) sA$mwW0X}wa85xq. w/DPXOW4E=-7zPpRuh3[eƂHZg*s 4 Gqݡ6 20$yW)8 dpLF(ps"#M7Ia!?g:]hrHf׈WY)8Kqz}H1$j'Xj7ah9"0Nhv_eor0` nV{&*g48~A}߈+1&֘ IA4X 1AkTtg`WŊMpX6~ '9 7~ SI)Xhju4Oc<6v 6,` Pz)y+ق+aA8}xk+>٨jXF9õ7T!(AT:(} y +a)(d,wIl¹>"c5ono͙vv 9147ߗZQ3٘"HiqXx9o u0T$ť ~Rysp=EkԕP8ڡMqP]灢qvy^u0yiYybV@ P6j p$9I(qMX)ɟ 9E7zWJƚlA ;$kRl2ej_)ew!J9vzx VP mUͩo^vhs Ѣ7贤] yJãdEDRDCPz uDy KT1q: } @v`lzڬw?A$2!-^p'2|ؒ p5k\ 4? ƞUvJMh*jԎ ɥ7_ 69= 9JAgYSf#fH^bUu"p O| =LS`{BzJCjJ 8=#1ᥪ2TƕZUڏt>\YAYHX zM[>|hjˋ)jb0VY= t/;T5I9} N!:jI˘NKɅqOH3Kl z T6YqXk;MR@>r*nۻ >0ѻ ' |sbU5|HZ=UH;$0J+tt˝ Ƀ ۸z񫥤'8 A?u!hþ Xf])I O0 L4ke Wݣ^fHGMCtH $#_p^^?|$AR&!m :yk ]+j4QZI;sO?H3U t3˺, !!Ii3?2yA \]` 2(62rRg)׺ @q 2?L#AmF"IL0R}kPl;*Kz|V^<[: Hl$gi93r/|0@2LF }%1ˆ+A7ٳl[PAb*!|'}CDzsM#D,@`PD JEa ,z1E}J{Ԅ8pg=}8P0/04 n 3`t =9cF"D`# X 7#0S0?4&FA\ϔ$Aѳ@j}˝jźDPA4ҝYҙ,-N),R374wk0=MeOH0AVV iP] k07 OV{!m a 52o>-Su \J} `EX4 @D vg򵀘N]{Yc;Mڈk:<=!?줴=JHFv|Z/K>.m+,[" $eyNUeY`@==]qݝ7a ݽQ|Ly!Suza.4Ga:!@: O_ 9OP& 1z`F;Q(8<=T,_n+T*|)-^N!Ajm쳥nA+9D).?P`@ilN! @ 9AVm1\qV{ 3400@=pp} zě_o fC3 P>RNp 9QPRIIO@Ě{LŸ;^͹q@SA}H&KOG/mC~$LE~b3 lz!LA 6 DPB .@"/Q#F=~FuұGH-VͩYĄD@n KEETRM>5'> p@'6R )E R" A<@ BCv6#ؤx x$xxAC)dpMPAOЊADW @D~ iiP ,ĊG#N<7O'p8(hݽ^x)a2\9OԔ-!|Ϡڣ/ H=.R :2С96D!606#!;6"鸉0EWdE 0 Re? b PAdN khD[Pt([sHK2;JKsH1{,2&sDN"03+FiGN( Kȶ>A)mn"bP&ΡdH3):^(M"'(2o5W]wU<@8 `YgeُX $VO!R]A> uXmOZ]58uÌtXPYŒBCI zeaX!b'BrQCP`kH24e|vυT"A Wb RpIk*RHSD!U’! u. QnHL^HuY L5u+!! }W%|^jĠ{34cW6dE4a7}C:ʿ?|CR)pC2h,+Hk( dWh$?Y;A8G!EL<{<"4!Fs&S)j=Q!H*LO[sM,m"[JؼF !7Bfاf Bu2)p$|HxRXrSH$uы_x@=$8H" dt) :KBbwG f qWcE0Wx2b@#R4IL&AX xaDe*UBGE+?>M",p@)mPKjA6AV2! D(:0qB .9`Y|PaTPYHiK<əԈH5&d7l@<9yR1!U  Io Dp~-!A7'AdHvFY,(1pŤp rY Y DWRT x\?ё!۳QSLISTW0m%``<s$1BIX2#U 4d-]VUEZ4 B9<@ HXbF+()IB 命u17x=|NJl'Bzi^n*`!=vPp5-%]Zk%Hh%SvV׼  $(76BԞ ` ,X|RpIt~4{^=UzȪVZ}WUUW؈ <Ҽy:oUbH֎ߥX MCD&!mq_U3!uOn6xkvLx)apXll9>ȼd`#V?Ǔw3HJC~ГCB .4I1_ԗ!B%-*$\aCB QX!`\ :ԑPȠ }hL"!X4J?Ǭ%Vj0LJ4_\az AٕH[Wm{v"EBUCl4vځIb\hQyU *9oQ( B̐?`$yP`:100aV7k(+/De-E>uy8 ĔNl B6 @Lq$:${Px> ] NP,8Y]3l 2+ fA>g~)įlχxUG}wP*(oS(x zt!>0Q9 JwxA?nʥ"S`剢*D) ApRwns Y@ION"-k !c>}?D㾳<'=Hd |l $p[:k-?򿹣A A=Gk.05PX\tS{Ј80JB : 5dC$p '(` ) BX>tAо9?0'X >HD8CPG\%C .j% Ft+nb߃H#  cc`sDžF_I" aTAr,- vFe f.)ބ>$x:ļ,-.1ccl+c/F4V5fcx%c%by8c8c9n?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVef浒VD]X~Einlm]%_o>an&r6g Gp BL=z{.‹T,J}g|&hT}VH4Ws*HWҢxV@.RBch敃i(%% h8#l,u QXȕVxu6֕>VI* IiiӉgɐjjFjVfkpVN- 8֦jj~Õ 6N9]yfvp FOkT ZjGp]쏠I=G4^VfmUh 85 m큠mm]yFV={t@ܞih^V% sb9` 04hLE؂%fsD` (/o-8,Yg~h wG̜ȝYE=Pڹ&*Y>RߖtRP*AM-*qq\aqrMr/ו.r$.Q8ZY 0$`e5GN !g6>"^M*?GEYH5osx\923\Id%Ws9ǯT{F=#>qQgFR l9>tKtN_s[tLuU[_c [zZEMk>О50UrA,0Q35/0MLeYp\1vbW0 uY3)@+DOWK*uHQ0pYxv XV 58XS 5jr̓hhn6SHEeBP4nR-pwDZ {vwwy9بHF pv)C7njV鄨r (Yt' oog +b6{AECbp8w|k0H*S^\@%ǴI[A{QP|@=.(k7sz=u|/:O#x,,o_G:`{mҕh!^frWB" * 4AĜAuW_Ji!z!!~wRxaz5BJJ`x!8#5@JgwP# Da'~}!KY$D EL2$PRD!r#J:%a9&dؔb'XSY 8Gf0X&u)S IA{QBn.uP" a|y睝z)*ԙ%r9*)!}!Q+$$ѐaIҀ(Pؐ_8D2)Q uѤRxQ4{.nXjRʔ;/>k 4J B\ JdC"ABB=6B!ABh,B-@ %"JRu/J21<3ڻѼ3v?!qBi(PB (ECDA`lQdB UQ4OT&P?tu}72oށ Ν*LӏjAL0An)QݓLqJT)>8뭻:{w~;}@%L8 K;jKFFF^BGi=:OE0ՀQ{*hb9~GNTV/(@1Ee !_R8EcU袏4@`!V89ӧ v &S͆PGONd ' ' EI u3<|h), Mi2O|Jn,8hT#'>.DtB Y 4e'QTi*+"FH+7%%V.TUs֠:f+JSԥҵ5|*SL* ĐXI0)S<=Q=$slQ F A0#g=`*! H~Z^Al#C P[XezE,:ٖ-*] s})FQNu Nj{REcӢ2%gңDJkڔp"O0GFyĆvIN;f`MWz-L[{DMfmR۔L#CCWxOիF?a\ qݜ@Rf 񏷛4$5%3Y+~ې*6hSb>E꽔0"`&rPbb #N\aS{"]Vכ:ፌXQE^h34zVdCAlǘqH%UV'c-kD%x!>"|uވCh5 qSPĢE ,LOHg%nl@Y8П?|Oe9 h VeQE?bE@Y,$ED]kD#J> es6J& 8WED < /~ s*UX H8z3jL`5:[Bt#]VK|d|"d׍('ؘ"_=.%ħKUl#'*@p2*1Zk=#Z.5#hOg^s 3t+M:4J<>s# Vy|Sn] =qab=ϳ;TN ҏ/Snwvc> Ɨ#t@3=#7"z{75FMPQDߡ}B^CWxi^6|QBٌFYQl``` J<ĠX ֠  BF[8 @]`eČ-@^IĘ}DuE@B@@5! v@IDRmD]^UDFI@x .t=#>0$N݄@TրQ%`=%΂*J]`C|ű2IwF<dĜEDתqp@[U@ajĜ #UER!VS"%^#6f6n#dyl&+ҢMdMF Y,>8y aJF4;6,LBiėݡfG5=:F@VIdKLcF`"7fFn$GvvEBPy@HʄfF>!,vEeݢ5^Ft"LKnRcLrD!F`)f㵢@c=ERFz$VfVn%WnE?FTRfLHI,᳅D|%uE\U3^}#S\!GOȣDBnD$#EBJR%4&VcWn&gvg~G%*$YVE4ĝc^ QDcp!*f]bfF@_RXmĉf~1nu\NFD4%E,[zDUN "h^'vfvR(=朙k&N%e^JIl=fQMDdJXolf:dF{iħ%cN8fF.5Y# L哃n'V^yI/dUD|@{D-(qp!gMچG_~ćzD0jG4(gGԚY'x^&&'S$@a(FN<$NX G`>\ @p5,4n$ ' ĜED0%K4)\"7DmB"@=^%jCyrRČ bx] $J@>FkJaC֗M F^<ʮ,˶dǾ,YZ*SfFHSYZR!Ki,d2E¢jJD}B,Ejp߉L@p,ZzlJDG+u>,۶۾-Vz @&]2꼂GmU .[by-6\լ,ح*.=Jvė5D,[tHr,쉭IgJ t^@ ^-ܾnKT(,얒 IA ">%G[I >L"=ĥ"jJnJ|ߎQbEG@zG<.Vhi/:"7W* E -o6a%s,[1eorG`:(!;1E͂O0,GbBvNħ lrCDqh~"^ +eꥄ3.33k&Cnc AQE~x5S-yT T@APExAB_\Dڤ[% U;ΐMD :@UtQ([ 3EaqNwFIo l\tJDKD-tC̘%F"{IȣDnvKa qp}t]DF@ 2 DAuɶALmW6@6UOWCWOX#XBGD@6pςpCV5߶v]BF,O_Wm*ϰFպbuIW~J gx \KW1^6QNױ}D yƧ $ZCB#ćExĉDqD$A\NwIĭPDĊDRx%{y#/G5~Յɥl\ɷ(c&79gGe;+1g&3!S5>_BP uF3 D, CŸD{ŠC@ DxCxHow5AAD,JG9Ir%9`xDa"zsD9f9iwl tzbm f/vČE)}w(1EI}NlPK1iG $D{X;@;BDWu$ :#A=+O,AػK&lS4jD=qvLF昶{zyFDF1Dgf0Q9Gھy뼼,2EwjDǶDq:E3 `@D@C$ 4? P78OD;x 5IACwG0`@ |ςHbA Ml'F@b,2(0Y$ D :ԸcG!JhŌQ\E(acJ4pJc48rVI'9:t馏OF:jUWfպkW_U(Gk EG+kt4`-+P5PVS+z,PUkrT7Mk@}[6Fp0h+Tu$` D?`-z\qGK鸻,jw"'F>zuױg׾{w/-T(ݸdԑMQDڨݛ= nj(#H/".8%R|zςEpD( J@O*K'R)Jhh˥:h蓵pj)D ̍k57z,)8K40 4T:*"NҴ܈H7ь(BMS*u#+ ԡQB൥h_ Va-6ǘ)."D\z#H*"}t~(H!AE"q-!6"6"uP]u7{p)Z`ogg`5ڋO%\Ѡ~/*rnoԨhgyX,6cYnaRHϾrK9)6L#dNhE @n-Bt7"ѸZr-4,[EC@փ6ͷ5u)W9B/4K楚C52Ufɘ!\)z*?q H@߈*%ۋ>N]$Zw}" x4 @} % 6Z%%s}/<`tHF,*cd}yo,ˀ0PµD\L?rt->@Y ڞ⧵#r+K0]1SV *@QB4CqL"Up)JBY}hCX(Ņ•ʂ? xh+%t|haa":Y4)@Ăe4)4<# Lb#.N'c4V;B ) )НB;ʎd)K5K^K#n "NjбJ,D)RK"C"I'[Hs\" 8Ǐ̬)h41i,GDpg!\2A 2 bTj",LU !8 h:ž)4"<$@ȕa*Hb4PHM!Dfd[$|s)1ivNQ/N,vM;/խvGܗQ D,/RJĬUfQ4\@ {#H(`9d\Aj[DDl{H 1lmಏVt4]@fK.18}(=":Yh cB] ܾ hU>L$FgFXh"} TҘ2,fTQQţEꏨ¢M<>tZt![ӳPHc5jc]Ė,FL%cl͡8ԬKH4 ˸޹5b!w}W땥c3eD7qT+O(tXC_ +*_Jk ) b7bpbp@ bV װ ~+0E8HJH *nN$x4b 0`" "Lgb @ ږ;" jx61g!G+//q1,G' }1qzQ,8Qonb'"Q*c%2pH] ^ "&"fw ¢@ Hѧ2 Ҙ 8?b5p0.a *ZbȍB ,M:rH r%YRXZ1&i&mW ]1!"! 4C " }!G"8+i26e+:7fsros7y,f \Z!3"$B *!0B(">*, B8Mx4J$W %d#E")]+h)z>n>_B??R\*:V3"$b!~0S* ! 4TCqL"(= Q{$@]BA50? ;@ \E@!Zl02 ; A#S:*Ea@TqX4J)"gt] m×$gBLC !EC#CİF`Km%F`I" Ba!I@n`=%A{H& 5d*tJ9ը.;WICTMuI",P4Ǒ#P2I:˴MZ) ` J`K3=)U]V!DA: J6P">VoU 9/BP|L9F_2+ЋbZTݕˆJIH^}B#u!0 dGH:Sa`79#Tz*X|]T GZF\Eɨ#?b85e! #Jeeevf#pĂGGw$SWh3D2agAgg;BFE0;sE0E3]e`>Zf6T:jjm6X5Y25:VmLOo'Z#`͔BHi4Dn%t\ȲcgtJZa ?B Q"$?dc V,6aT.nUr TuuB 0vQMhwwy:Pn"Z`\2#B6">5?$WBRV1 HHF#zNxCyO@;x]$L`{b JrI.!w@*&#ҷw X`6Ajl!8BB]t` A2? o @8x:"589: ee )H ` ~}%|)fXXJدO#Xvo8x ΤT<:l[<#xx8OM4,]: 8KmY$D-Œg yvj.:Q}0**9*> ٻ`;9UW Töhx%@ HhFY*TAy*9&+XCN>y&a5yX Y z799ՙ&xy鹞9y:z :z!:%z)-1:5z9=A:EzIMQ:UzY]a:ezimq:uzy:X w {zus@:{3Bq^zɺW _!E:+*,z麮z#Fx *; ;εJW )*!j^f/;g1[I;"ڮa;ex/ nhkoMJWAJtX#btR;_<j@[:`;s7fwɻlVl}C/MRZ eتscU/C^6,Cd#8?s% m+ aRdWr vEE.U]i}dA$ B )"˽`B]eF &C) c4r)moq r"& OdYEZ9R6{enEj.YBCrxD&E{C.1BqXDuWrt'bMvfvj'Df@L@>JQ CWZ_x.wd34BMWd ?%o@+1D89FȖ@lzꪯz뮿[SmZ-BAn dVw_ ^Іng:}m2}QPS.Se&G{=Fq>$*~~kiq(&{7{ȇ},  6~hABz(8!8ȉH jg.执HN}q[(zNfb5ȋ8Ň{׋Hh87|PIXt at(8x2XhhVx~8wvrk}huƍH|HPEmHYH%hIiɑ !)#I%i')+ɒ-/ 1)3I5i79;ɓ=? A)CIEiGpMbPHOiiGuPIU gGv i[ɕוa)pciYSq)25zNsyYNqzIIa4xYY 胉є@Zp~q}mW'8|)~P1+R)Rz) "Hq~ϙ18Љ9pr1pR``irɞӝIA1Yɟ9Q~O):n(  -q}J#AzdLg!zg))*X**Z3ɢ;*+ >:Iff!J*Y(Z8[_1ƥcZXdʦcYk0mJrmHmNNuꧪ^J9oFʨꨏ *Jjʩ꩟ *Jjʪꪯ *Jjʫ꫿ *JjNJɪʬ *Jj׊٪ʭ *Jj犮骮ʮ *Jjʯ +Kk ˰  +Kk˱ !+#K%k')+˲-/ 1+3K5k79;˳=? A+CKEkGIK˴MO Q+SKUkWY[˵]_ a+cKekgik˶mo q+sKukwy{˷} +Kk˸븏 +Kk˹빟 +KkD&cDK @ kP5|ǻkN 6{0jN'+ u\[Xo5ɽ yˆ7 Q pxz;E'+ lq l9 ̹@n La*$! ci¥ ]), H0E.l`Ô+1ysÎ+gXđ5h$MXQT0:)\ ( Iƍj24m|q ,t\J<(zLJ3 P ࿊,mN0əɛɝɟ ʡ,ʣLʥlʧʩʫʭʯ ˱,˳L˵l˷˹˻˽~!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###,,,333<<*f.i2l6B:F>G@JCOHPITMWPZS_Xd]f`jdnhmgqlvqys{u~y}؆y139;FGVWlmcduv_a?AVNgsb}ڎۑݘݕߝᤚÇ˗䬣泫黴ѣ•ŚǝȟʢΩ̦ЭӲնָػھ۷ڵc H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M{*,ͻ N|ȑg)μУKQرPνËOHƫ_Ͼ p|ϿZWyg& 2ŀrVhfPB耆 ($B(&0(c3x Q B!OD؃6BH3rrF@r 0iXڥE)Nseh \ "PeQpK"`2R@"sW65( Lzv)* !2@BsHjBjފij챢ʹȾhjB6kjN,UbIlzk:-ݸ*(ڨKvxpژ޿'̠! Kn HFor\)v ܓ6++[8c,̴bLo' Ep&DX4 @ҥM3vC3['FwjDO(`mYOcس nMd *hmb}^w5w:J~y hNmF$Ru?Gסdus樧.b[W p6J۪We:3"G%md>.c9^"TG:IDSm&w{g=s$ eIsڇ5Q )؀י,+ A- < "!B|D7 PBCh Y @l! Qp޲ @{cq,P YUJD@z5a7*P"K\H$q#x P,!HI!H8QB!" ѐ@!6&< HP#2%ir߀1|+$y4.@,%W2LN rJ1 gDFH)=aX TaRPeEf{ yς F!l,5/4!JC 5E6>[!Vrd*vіz[,*Ivi ~ Ds B L H )${H8 *Q-zs'(v:uHEaI]VRUMY66q!b#6y0!aL )(`R @0؁DNh/ ؉4@@ XNX'4  @Ց"ZiJp2"DjM2AhTDւU 4^ĝm&QlC*qԔyH+l0Ÿ&A2$\lAD"oA :8u#Zj,[H"yJBm-,0W]_i>/0< (JD:V" |L2<'})BOMAp$`Lor(KC8wzt;-sX ybDA.aRkEDiF䱙sqY #O|!7ksŠ'qNmޞ:()-Aa@$撪& (j5(fͶhZvrE&:!p֐4oQqfW-y<N8~GT`K$\|kVcwlt&Yд !)m0:$+(W_Jǧ8~ѳ>*ki# ZYoyd`kzȑy ЉB! ƃ6of5${\RpC1t I ׉~*Vdܹ-YTҞ^)B(f{w1$֛ F8C[@maQ7*ZD!WD閔a>%ܖ*a3i yr:eFJu 1O(prjbYJzL"x#nI)'{)WVJ%^ ʎbyfiq 1F bLZ !2y.n)Qbm4,z 1ȁiʩ qPRj#ڔ~: 9+@?4$Lz_*vԪxN)?F*V㺭!I  k˺+=I)!󚭙 :J~ Ai*#1y!rhS,氤y0.Ɠ4u 3H\Oja38cfs+iҭ A81IJ)e^ wy+4*vEtz: /j4[?i7r !ӺZ_#^˳)`= -J?B[g+˰ }*RJ y25wX+!2!\R[ʛ(mm70c o{׺xYL; q!_rzkQxfO{?ۺ$: !kLA[ m2%(d !Cvz08 vCŢ94r&幼,\غP [7\H˱ 0[ˋX籡'ZK,"S|lp U"d wa6 pO (&8 ͋*:[c R}V[Ji|–,l$F{oųn,܈Fyf 5 tvl#.V{xFWQb« !ʝ˒K)tTQ)%7ؑ{lŁ_!!zV8!~&1Axi<؆ >lVkB"G[xf嗡anjhFFrz ?Y~ 0l.Vww mF*'[ĝ Մ ;M+﨣 }`׺[HT^ꔱʛ{]y֝ $΃-n֨G"1̨[fFMn#8ҤqBxhN-o*-RtTF 17 m~&\N[oNg*g͔f/ͬn*INN%h o#C#B"@#dB`bs &b|+)@1DG$DOD1EWdE_$ gkXj$:7@!p!y1'q8/'\bO9JSMC$1 S;`=vt;vI9wx !4_ sM-}/R]Dnx&d7Zpufo9gwg;5d6s'V|Xja䝩䎖 ΍ΕIrbJϺثt(lܐL(fS\Y&c9٢V7*x& Kxre*>oʰԨp֪hh=gWgu_=v]E[hz4Pr"Vx-[*e.WJڣP-[h:򸿢s78_hv H''Sj%]x0>M%M2^\4弮|&HEyZMrG&nE 5xmvaE8BЄz5=AJ75$>ɧ=̌K5&¾R[^H:Y7)R L"Y2X"C(b E|87E?xS`ཽ)dz2SR\"GI>";HHwBJVҒd&5IPh_Jl3>^NA=Շt!r5I155wskaJ4 ie"Z9DxRRܖ1`Mf܎loɐ5Ib/"\PE`4i$SB]P$OHpzX׽o|/Nw XZ3}!9nGV 쩀bPnؑ1\vڋ%m*跱voH:DHz"](.!-=Rۂx=0O&5 R 8$3<"Mb>RfKǸ'_.w_saiy`E5 GBD)\P &1kx*XPla,"VLU)ev"ɵ+Rd TN;NE!dG-ZĄIV#+-`9RHDx]źQav=mj @  x@x f-DJM`:xN!vDi#>ua]AՌ ǣ<^ͫntL1lG\+< .@Oy}[Kd3Lt.m%{-ގeˢu\m?:] \`9irv"&weGwERKudC|Wk= y{R8!I6"lXӄɾ @92wcQH]'0K.5I9|E?zҗfXs,ȗаAдUR{t; T4T5dCw +8`b ȱ%=>>dY)<$S 4<?Bs 3BC&©>$j VD[j!+HE` AD46a$b2 s: ##$Hž i۫BAPFŎArQk 2+8Dl(>c?F7{=4? @ ǀDGXs =;b {Hcɐɑ (HzÕp…Ghth 4sƇ-rDJ 뻹Įmb?8AJDžhȞ|輙PH)),TF8TA"{X@DF˿ D[ bI *[KnDC8ÐxI =hJ8)2 ,t@ĂA`d>t>q̖k ĠWHX8H۷Ǽp˦ $X\8b6tx< QJH91LtτhHxXɜHȋ~bCXɷL\OH́8G**`:MGMK$J˼̿M@oËɶLd $‹L4DAlښORD*<?H$ϲI9BO\A N-ց*-RY=0pՠ e 19@}*Xv"t!QX EA!’lk's3ТG.m4ԪWn5زgv% جETΜ0H``@ 6$I4xScDZDE]@eS5旜 )7DDgs*H_%-ܟ8h J'bvmRf @r=|!HQ<LZ 8(Z<_wufH PR߆6p @V1(E_u haR|OLP`H"ar {-j-z-;X@f@&;/{//b pg +0 ;0K<1ű @ 1P1{1!<2%<e}'21<35|3gW83A =4E>!2Q>|??^@|ߍ?(k̺ ~D| #(A,' r 녱8" B.Ur/!sINHF<"8-."()R8!Q$ϊ^"H%dӨ5QyBD'6ұvF0V# )A]@B2|Фp@U:$3Mr2d\L ={<%*S{%#Xl5񭲖%.}EʅdȐaZ.S 1)a2SW)Dx5 M;\D7)*H /yq3\P7U 3l'>> D:)n(E MȣBaơ Jd%)Rcޓ"!HKtNJ0/iJa\DX̏˛5(%,bԣj3S D?C7խ k UEMK URDLekzTrs4X[|HԵA=q~Se5ը6Um*Uv*+y5YIVWiآ>6tdZN՜˫ E-b0/,E\>Wtk:n{g (wë)W)yKpVZWUݮxWw1 ʃV)!6+L!aS2q`O kCfkODboD%^Q KuY|{"n I\xH'RQ"uOs&CH'<)~<(m);gw-ʬfC˴H)`jJQ| p<9\ |>* ֠A#FU14Sh,6C :PdߜDMY$2i*aPTDsHH16Q-U4暵rZ߲}S7}W) D)t )hX"p4SUISVcr@ =7DlƦiфZ)D͇GݭH^k6DҽvKdB3KrشWH˿lQh:"A[`鈔FA$ 2s[:ixyhMD 8 V}X%;}$^4P&%l>4bw SH[+/ҩGL,q<.gן!Au0+%Rz"HLDItaO S8t#xiεXxUxp)pg9G&0AHMFLeӼ]]eݪ~^ۉ9=Q_E^D^=A})Ȁ~ % FءV i6 @B9ܐmߏeł}D ^D a6ADWUD}YDjBD~yFM&! T\"Yi >%faND[D|a6C6a z (A]#V"[T Q&F!" D@6 6C+>Y@EUD*O}F!@b6 ^DF hl)bA+"7b2ҡE"=.6+Z"<.P8KԁAE7iD^Ț6DPi C%9C"IDd Ae@1#.YgP>B D&d!F>6"7>BJClD$MzF}ZQMjSNuܹP>Yd~YB)'"LUZ%@ H$R6S:^D5D[JIvcZ^Ir[r @`0ZTRUbH% %!BWJS:%T֤b.l`>^[i[8D cD%aj ԣ՛VW^DXZDI ¡Ijz#IEjg0=<}&f, ck67^iRi2&r&f]sjeJeNvZqAz^-&WWrqRDjZ$E@[5bipC%d,x'&pk'kv>Vy*'h|{*hLgRT'M(ceH$|'xRhZFՀ7& 'Jfl2{&gTA!DT(g\k2U(ha_Nj8O@KP 6)2J'8 *b6fV:):yg`#1d& VDP Xij) hD(q\7YE(61t~fOc=@h&'i~FfSe%(6DV5Ƃ*|f¥"ljj@[4kMOd\BDRĴFiD̪a+6µhj7UUCXDQ^$ZN@t++拵ZcE jJ&ROg?kDB7H@~(z>D(@h6#EʦF{EA~V^Dȶ_;Fk6!E- iBfՆAi,E) E-ݎFTFjFZج.ARm>n8f6hE&kA%P[>H-+DF@h6*o @!DrƷ诪!ܵSNa[.ozQ'.^>/6  .䦯JjZD&k(+9OD~g v&2/ Ǧ-Dh1RF{WE/ EDpTD00 NpfRjB.m/MH2>hocT ]+0ښjp ^( .'pD^RȚ^0zVA1jHB}.Igk.DNѧoB'Dc1O*U |bE\c5"¨EOH r rkps'\A.E†)m<1IT$-B+ܠ6݀)pR 0 O,3V p C)6ـSD% Z14'lhp6Or6.4g'3c123(:ICl Xs,xs&$X4XN$ Ss?40HDC*B 4A4iHF@ F Pt%ρ`DL3ME4-%B7CDDKKMߴ GJ4KuD@3WA;:WUFޥEd5 TU5XDD:?Y5ZuXBd*-Zǵ\2%]۵GD]ߵ \5``6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwg6hh6ii6jj6kk6lǶl6m׶m6nn6ohowoq+@F$A,qGt{$KuuO7wwwAAw7zߋ$%+]z#D{|Ϸp?I7B7}{ (DAL>tAGnC`M|;S=C>x×B:D۽}üO!>7D(4ۏA4@#SA|0DAt~wo< 8@q?D .H~d~Ə-nD,/v?@@A&TaC ,p!PԸcGA9dI'QTeK/aƔ9fM7qԹgO?:hQG&U3ćX.FaR/Fi@" "`GA-Um[oƕ;n]wջo_#] QE@$" rUWbi6Xx#=tiӧQVukׯaǖ͐6z,x 0A O?pK'i־q?|yѧW}{ )>~\$ P ,\-d0' jlP#hB A QI,QLQK,Zt3qQy R]t<"3r'R)(* g-;BD+,3LS5\Kd7 ӣ@3O9? TA UMt'@CEtF K1TM9OA UQI-SQMUUYmWaUYi[qU]y_ Va-cMVemgVikVmo Wq-sMWumwWy{W}X .NXn!X)1X9AYI.QNYYnaYiqYy矁Z衉.裑NZ饙n駡Zꩩ꫱Z뭹[.N[n[[\ /O\o!\)1\9A]I/QO]Yo愁g=g"@pg`zS"H.]7 SyWW %z%ot =OF ObC_XJDw+  ?(U4?ms E$bЏV AHP!2PsKw^8BڊQ^ IĀ 89,a eBY$%#0]ĂI 1}rD/Qq` T q$2DTbHd*Q! !0\#gǽhG"ZH ъ %BƓ"Rf"GH2p܋!h!4ch[qx^i#C!O`Ub+JQeApMފf(ƍ C,Nn '4$\T6 1~e<:nb [D2{$OӞ' Q*Yf@1,P !Ћ5 դ.щsN!t#1 2JnfA @D)4kh#Qj03:ELuvЈT4lB @@t#I7ǀ-5%-]KA dU\j'Bjצ44z>Ț=D5 Z 3&Z`uP\ xBJ$ Te ptBP` D(NH8V5pM!h&_r* zf5ObC ڂJoX,ٜyꛅ6$<lFx#Bc*"جn ܙ!8FpX8/."W!$BDbɗd,ZZl "\iLV'/2W!on"J!g@<f%7 D,}HX෾A1C܅HNE‰w*@H[\sVI L V590%n:ظ7)ij::i "iX,l9y2",NQ#\Bp# sEJľ sARY!-.)#|ěܱCY*FXZ E@RMjV-$b@pP"+ mDX Ef/Peȱ Gq;*W)<" :*O YmkSuiCi0cjO'&.HrЙ!8E": ܊1e)Š@]!DeB!=:ܓ[D)eKI*bf42VdY#5ǴfcE!#r_DgHi&fC zJ5\W }Vk|IDq@s4yV{I\7u4NԬ@@^|CΞEt} ?ݏʐwY?<$Cz26n!'Hb. ~CM!OF@\8J]DF(Br4.d\@Bx -4 ux*‹5//`$hnԒbj"(>B3 M`66@ $J2+"K,"bBy@(J*%Q*xP#."*H*O!>V!6,*K N 6qOB0?B"+8Ap \ڥ 4J>Q@r@ (@pnN5&A /P$QqgX8!!r!.B- aaP ! Ob!Ő/bO!  ȕX;Y!Z&X::BKy,(%o P턢G:3$MȤ C @a"i&ʶ;5]t" +:\OQFcm!r,(L t%% *43J3ϱ4;Q S br`5Y2j !BpAxB7wrA  7_Τ, $@b% B'B'ٮ#$&O!~2 B@tR 8/!$;",>O"o!R"422PRȰ.{.1/Q! -!ΎR21!:1*uP:V R@#qTGt);"HA4M5vހ4`sj"7a2|S!KtK2 ^b >cA/!t/)%4fUsCauQ{LWJEp1I@BQlTхe (x yi"^`R 0"0 !zW4MW!\#z%бUy5 ؑ`` !w~~]g@cb#yJ6w! b VW8"Ip!4Q`#zhh}765"wb cA &9v"2!ZH`6a ZBt @U!N2b7.׎0729s=O=մ!nBNGs Gx=L/'W W-pWu3v/VWAv w6~*n!?5^L\@#V9Z&*P!@ @{T rv|Mb*!Y)bז[B* 5wb`hC.CK cBj HS?LN#l ʄ4gwN8R †o8r8!ҷ{ϤP::`  ,}ӊ#[Z|l`"B(T!,=B.4POxz bP!x?"RԩV P!OB/L +Z7C]Ւ+ kW;YLWWq]ຮ@# ;{&J!ox`kX}stZ$ɎU1P9!2YhǺRG~XGɓgPwv9Ƙ!s9b嵳V!&r@_@z9wKK;WKW˥|Y͏bշ ϥ˅]O:B\!nSഷcͧqK ^kz7l 9$*kSy!bxC|;wCL%X3 $¯Wu%cg!:=P{W76%("!FcI+QOLX И"]b)&LQ`|Ymn `~{1>漼$9dV hY;)"ᡯ>$X  b ƫ@7Rq>tyw.` ,= cA艞!\y z7% ]3Y` yh ձ2{啔"^Gq` t`|x DQV2#*7`8dZ&n։!bp%iHT%W!h 5 6]t#WB=!PUMH|"b_%]}/"9YJgWz/.4."#S"֟\2bib ho!X+8piРC Z1)\4F KD7LT2f=r0Xf"&HMuiD1ņZ,ES+-45̵N};юEcdE'u9W Ό&a$“#"a){W3!>:լ[~ ;6lVEap@Y i?(DdD zH' tH(x%`d .A'ߛ㏎E[H} Jyq":%R%E=1Rqx} !((!@ZGF~W@s'](|(w@,Z L4FǢ^~ fb9f > 9f8bPaPf PE ቐs9P!D&8ȹ[ReAv T uz^ HISTq)+yꐪcM$E=!hp%Bt]vW^u%lH[MDU$͡U۬C-t u=W Hd oK/["EopB8Plc FlG я e)߁|z9G;'DQE2(w1ftt7cw Z}W嗠N{ `+I Z8#I]]z"`n #^k5yZF†tJ>rLPr5Cdy$>y[D;TCO)EkF'A#E{RZ祻9̂**A'zǒ{ڔ p (G,AznBL_m.9{.@Kt< Aar+St:OԱw[ݢ|Bi셀OB*R¥ fp  Q̢sWn"S1ɳԵ4e)*#!{Vjp 5 `-Bc /H#d5vs-BadU|( b4G͕ߖely1т㳖1gHsjw/!Rt2Emk-\B?E SӘKͺJʠ2M}.-"jR:Sc"[|f;ɮմ5 32ߌ}{KМhK{! CАL-ŏH9y!E58$/%R/$;7\>,hA FS']?\9ۊf5BXՈ!hbD歡9as[#lAp<>7y k! vch0Q ]mQuXwq(z[8pqOA\<֔6;ȃ;('5vǕ_w=0Ѓ;H7p:H)]/w'^2kwxWxqxl]vic [ ` 60wv(F/U !nbb =D~@r%jX\2HD!vGbD3Nh{2ET4 "5goEc}l5S1IpWF@Pr~zr#1H rG3X)t{xp@"rև(HȊk h+,qZ2 TGhu#d: ;)xL&耸ieg\7H iCeC#O,FCw:k9qeHh7P3v/ yY4ud V% i$q'D':GWbe5"##P +1A|#!gqnu9nmFTkHeиx;pb2 QЋұ6ieHUb7$jFGQsɚ &bRK]3x+xW(#91j62<[ќf'2iNyY/ɐ]d+QJy=<ٲՒQh3hNf'ٚρRA `RA[ z7/e%& nD(oT1G \0HE!<$6SE2VP#D1p CDHa/:(db(ы;zkIx$eeȈIfQ~#Q8kxmzB&o@#O*s;yw*#ahtu>b)dh# 㙟ɹ%iw)tgwt1xlkř4].pʚ#%Y@m A[@` B 4|m{  yC#2f`V/&PSUxiz5(іE4cqYAanjgq~Dfka(q\F#a X`"{1!r)_y61,.;&ip(j0Kjj؏ǒ646{1 P=-`-K̵vvquRKHqXK!(/rY+!$ yv]( (ALuZ1a۳s*˸jlQPI=iOpAA0mXʥc"!7Ifȋqh VY αB2 b12:qQ5SnؼGj1BUfJqQ(G#IWc"ڈ8۸guP(4 / 0x(P 0XS M L4S&,<O;! 0{w52 0 VZ+\Z. !Ù4Ä*8쿼01 @ oPh\+ &B7` ?慿yl: a  /y'p^rAD XqC7 {w RO _I0UnY6|!Sۗ15y_BIR:X̞Qάͩc:p(̃}ӣ=9rɪ}O*ЫӍMñ,(<< <)=zIѥlܓFHh 1a <)T}l<r,,ƽ}]t$MӤޜY  =4Z ?} [zL! +'cDLI5k1G[챌7&/L}8c1 4Nsr] +F5ʰ⌾i[B~I4>٪aY^:s4bjːdx"Ar?db,vO92xe~}`bI|-(a+d۔ mуP ]4'ž\GLp.v B+QtKD+l}-\{3w婾@v{ Y BBO@62TEB!3_=㛽X 䰑FRMJXNjcįn-C#AmK18A>%D[n5 M D}=zNc/ jqҒz@(`$o&)`"-p#A@_ QC_@EO:/(%x*,*PULY=] Pز]5]u//m RچE}ȁH9/!ؒ*좹OU8& wD#%1t⫑FdB~eP2񻍽Ȍ;~F"DlVU[Fkٟ&8?&:3k,uSlvp6030#O b $XA٬aؐUtNXq1C;Ld71 @d :Dʖ _9CM1F9' ּsIkJ`Pt)lx"DpAkB,FG8Y9hpþ+Af+Le`ܹc5ogСE&]z,'- @C&eHK `  p8- 7NT(8@;HsY>qǡ$œ9WA pW>s0IKH>;)?@b6;;n ;;Ɂ(H#P=;<; у(8 ; tI(rJA+q8J,QВJ0sL24L4TsM6tM8-P`!b@x1bᤐH\LqC($EIHh>+ Ӕ3K!PS+C$ Dep: vA!OzT:Q zqUB@:fmo8L#y> A*qtqRx@"/ZHqg;p pA{hЇ.xD$&QKdb (&fb[!3%y}r@ 8a(԰AR^pLX4ƊUx 2)(VQ_1:~IvyP<8x p" +,`WǷmpa l☄RP+"ƒ\<<'-tb5yMlfSf7M8K5WjQh^8ŕI!g)8u3yI '=1JE N,jtfL<9Pĥ(@tB!fhMT(:SC%jQzT&UT&J97B(I7/xV!%J߄2JGz}KӖCQqE:_EY+MF-Ma ꢺ畚K׾W4pRM{ZԦVemk] 6R ߤ3;Jlӧ9D{R&# }=X88=D\91$ &/K|0 E\^=7ÃALC ,Ep&ESHE_&33_9QK4Lh$Mb:hP$DEP:DAZsD)[Fo|PIFz%B)xBy,4Xh'@{ʃ&Ce`fpKdҘFNFH&c]K~dcd¡P.N檥(F4쥒J%cXcmơ [@f` .8N>זbZ!M~~Ğ2jRHlCe_#l)Nmod#Kq jV(y&&inol-;-jj.& Ssʎˮ\2VXk" Eu`O[`'3GA8ɕX XЧbskk Q@cf^)3P`?qJhwH):zXP>/a"e%~X7,EA5Za?\C6B.uI$L3udsH$=zWlT@ {2'z|&^Vw >N>JR(ZWMbcE}HIٟ¾UhuLAfp ?G@L3G?_ǣ h^^QR|aV6(@vf-hУ(`3 0@JP!'HYp'X$b̨aň48P@z@O$RFNP`APU|1˃EӦL̗_d,cKwj|dFVЪeی ʩ'BƎC,y2ʖ/cάy3Ξ?-z4ҦONz5֮_Î-{vc9nJv-~.}O&YN1k٦Bo♧{eو%&i)J"-RaN͉YMY)PV2Z+g6e2թlx$P <"aaNBR[m2e૵߂['h[ަ[⛯ .e\#xjCS\2Lsܱ#?+ܲ/üɻ\pŜ;ܳμm?#K3ݴA;E7uWc[s=J-0LYݵgkOdLXl]wےMywD!Q,+YS䓻ESXN7bGy̬׹=1;%@^;r6vc0#;p&$;w܈s26e[#EEm4E`:Fl1RҠB_F XqRO4Z/2@w!s q %N0qE-n5| IXX0wBFXG,d*\(J8B:,a+*#Cbą%:>G5`vzB-f$zSd,DSmLA /xz "0j/fK#5@KѠ#18sޘQ@ BFd2B!xf Bg0!_xf4WCgSLL Ӝg7%Š?QrR$'R52"m(@dx--i r_C0O4(R2KmL9Di=_R1&sKĜDBL :yZ,UQ.R;Bed8!^A !8Vyf89NʔSVUUՙrS0,&P NH#zO\g(U"D@ :QY1TTԟlԊRȸҧc_<0ti," l1F > a]+Ta':f40 x [ !82e^@JBzf%[ݭ*۞H#%BҖV'vŽ>1߉uX=ɑp?Db;ȕkVDW!aB  (B@ Fed &+8ycSn`##4g @*J#fd^a$?z 0a ՅH)>O"?N"aČ`CPfzba^]D<[ p[cwL Vxj^6ZÒg* uF3h \慄 )8I (Bn ]`yW p0y I@ȇ0ȞOgSI-a~/"7cߓN)1+);EiPSepS,5D4Sw s॑;Xu#5,gJ@JAx"* :bx'mQ9~L 3茀s 8Gօc5ڐ\hAfs TTPEMIF+NiD"FlY,i٘DԒ=)IXF<d%DF ںFǝUeD㈞S(D ]TFuؖdD2ID _,@5] pPb} ,lшFpo D$p'ē2 ."4 _B`&JeA!**[,,-*-.j&D b`]2[B8BW%L3QF8 j:&ĂD8MH V `5&=<~YFc66>S7]5E(F!pIٿe^FGR -K.}oQfc4e,@q}f#[[,ZI]ޥG 4*J`2cB|3WB3#% &[L2qBW2u@ *DhwAj>Bm2eDdƣBTw|i$͖ie pfCRf֨B\c|$ ^~u]T`&LRZMLfsbZ]eIĆjO&X~Hc.nuF*miGƂ ۇB@^ބ!uu)[=S&2A,d2k"nfi>\&:NI)D@[`œ6*|!y%^e1HIByj,U0M!Fp!feyZ*.,F"*Bʙ-TT(H灼FT%>lgf=tdeSm%hS_F<hLABG4YF JAsX:j-b"؊-Ω!Fb(D:)FSaX%/ Ϫ>D1's,:baJr[i)ɢ:E*Fm,ިfĂl` *!ā)cB/aƂP(GiKvrƨǺLڝUYbyFcK[VcT,t,$es+-0޺=gioB4T` )Fݽ`+DK4/!+C`TD,R_%fDraB̑r.,nRmer!TL(-2+JZ :Qag2YU&\6Ct%ĺB@70`F\+ u5`gKWRi,T$}*Ƃ?)c%BdI(D)/,jDJEg}BT`K"I6`S 'f"=Fp!q=j5`r4`BtBtB(aFE/E H8ss:FBuWJOR7F5sCAt.uRI!h03FB@@&!1[ӷ3uF7k,|dxlnΝ75gmKBvv,, VIgSHBĩc a0 & RN7Yy2sbB o6pƨ4@ x+g{6a̯DS.xxKWTJmCx!gԔw, wxBr_gsHFw%w/`r9"_hV{B~foҰ2~+amD|3Y/@xF&FhD_6flz W{?1#dBJm{RI/S/Mx=ӣ1`/vxB|c0M}`g'KSeGtͧGf.Kfx۾|dPyKӌn3+@og=q9'rgDKhhT7.BX?o?~S9Z%@6G_FR87D,cyp`+* baD8h"A CHCF#'>p$++YtfL3iִygN;y% M,@PXR`bYV zjEe `QZ* 0ѐ+(%ىR$t@MJ 6r_PZzE)U"5|0[QB$I6}ujիYYO'!4n' z(GTm,JDAlU?Y|>._ EA,si[/ $%!o A.,R"0i#:#B:s EM<1BLPZ)/H"I"(DXCiLj`;鉖~M.BKZC84L̑#LGr$Xr+;[5YHOh P<D]Faz<遗;)뒜28;IO;풹3Pnd&>4"Q7S ՅT=U\,Yu71(ХFXG""B` p, )B!)]:qQ~OgTځך%NwEr%%Ry"B'I|c"򽞌r$OZ_ a ; V=AL(!u PA(װ#NdWS¿;BW$I&8X; BB&oiaD`Au<+ÂXqd HB`!aBE"H|`/kٕfVb ? XG8YI p3%[ F'@r6 YT6b5g#Is2dg x28I:G䌒 Ė2ZP XG_| GR]@zD)48 x8əC.T% N$ `T+orl*J]3ݒXb;)Oz6!PBv"M E"%XxE܁4Qd!&L(1dx"!X$#'L%#bJ@ʩ\PB 7X,Zv`AK@Ū1&3BiK'~־y9!J,IJ͠Dm X>wj 8 Laj(FpdeZvāXYU%Li]KֺV-fi6#n 7H"".ZdjB]H"Ⱦ`NHn"]iD^%f&)`H.:HĘ[?yV,+M hO$+`7<}JDI 1k$h.JB:ib-FFpԭAqdxw:6LUmrMH8J-\w!9D D1@ΐ.d$]<r/A gJэ%ZiсC"QP&@3UǁP e>s,:6I5jMcg:+ s*R']VM0Fc$j ק `]FP3TC9&Z@%cdߦP6sDAy r6uf,b qD =] ^r @2@Жz.pI^°7M"Gf8H3-IƢG `I!#Q Č@J)Dv׌h0-g 7-KRNY]|4툆^EbI1 ˵'3 y7LX)bՒyD :6*3,rMI>Zka GDi,^j/n>;c )Nqyqrk{g|/jhoIjdtN2 '#!N'̌5Y񔑂1 L.=ъKWv~C"+\PK)&J% L$  M c ȉ;pSf  JPD  @  n EMuT6jpP0 U G eI=0 p @'H D`< <|2B qp  d!Π @<&qx|xm*[1DI ""Hi"hK/n]"PcA$~DSq BFMBՂ0%t$X@JN$/#T+ B\_vfm @  s4Na!'"U>$Ҫ% )L#g"["d$R%0&",db2"*Zrl1'1[R : ތ%hdIk)&I**48A r+a 0#' XbWP-*MVE&,&RlU2b"{l`1#ш'"1&LN/P'8az5E>0ȈƔ23KL?'T-c!8oI Us1 ,3 X@:HcO)r7CDC eJ$%ʌ9URcL0%qA D+:AS2&%2OBl8 ) G`&'". j`J%Zе R4&̔zX'$NA}q%I `r Q'U_.PEÒhU`)0`t`6^GuU"c(o' c? 5 #=,ics23a/C 5't ~4S 0g.5WXCvJ 3MUb i uM `>m Ҥ*jjv45b'"\1OIhVh'cq0 T3 @m-,M,esk/ R8o/3 g @4 k'r+r/s34\+_,v6u+$'%V7GB –:LW TR'dE.B%6'ud`j`|UX瘎Dz y`׀!y%@85'XA 'x!@yicBَ;ٓ?CYs8yNOYW[ٕ_yQnaRosYw)Myl٘YslƄYy.?˙YٛJ;})ٜYOdX9ٝY癞qŞٟA Z~_'+ڢV h/Q$?CZ9|8rvţS[ڥ_9LAdksZwZiRNx:QnڨSwMDکZxSz4ڪZ9] ' A7ךڭZ皮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gk۶os[w{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾ưۿ[ @\i 6[|!E)P['3@7}~GąK` Kc|O< d{ܝi ŕCO}ɓܛܨXLÕ\ʧ<\ eKʻ]ʃ-Y1G9́ ՀԱ顑Ӝ|d9Ѻi]}]N1w[л]+81F6]iNAV}IBY]Pݷ` !/we_z}`$Q؁]A xי]_\A]\A$OYA@9 ! +g,՝Q QFߓ R[] I]]]F"}F`=_"Y}=su]  ܝ_= I P B2 I . > >Z7($ uWĩ^w <"(>Qrڅ&  Us4 a> r'}^9X۾]^K_`$? ?if g&QQ ܙ`; aY`K=2x4O <>P\`#| N\ W|!8KetfFJ_+I?"{HoL>L@Q%XA "7G |! (@X*\ȰÇ#JHŋ3jȱǏ C9q 'D4J0h9L5c$@ J(BI=]ʴӧPJ,XieePTc-  0 p¨-܁LdBPc h!$X$$ch* Bd"J`bs&0"*p:XvO l7ފLq迯xrakνaQ|K!T@O,P b!=Xh!JGN++…Qn9[璇.:E<騧>+p밻nQ BH[ { , $6+0B-"C@ Dt}%2+7eAR|Z6 K P4 P_  ^(h!x*,p+ε,DJ҇p!H @hXQx '*ےd">`mkH8qҢN h&&d=AD) J"0 W t xFp8q!vc/E-rF 9AňŽsE%氆7vxPAE{D+"6С`E=qD*2R҉ fzXCb ZH2,h,` DdTaC@3(RcqāŜ $At2d} Cf?!3HB%ϝ@ O&"Tr@lH"5S5H"0cȊ1M!wgDb@{ #$kNbpHPaAOD zrTD z҂'*WƝRt[աL'tOރ!X87!KG*d5{zÆ2EO\CDaA7;)J1CZ.x,Bp2͝+9O'$…rLӷ~IRWRs*}O\2Plsuv<#CC@#!w]5=j!? Q1 `mҦk&ya]w+paw A3ɢ~DXMqHoAa )Ppl0V=Q AE5iOz(ZȅTe{d(+T| P(TVK|Y80: r '~TW0pFTUT nЅ(ae a~)i=C-Q8Tgs)PHU1剠HUpeD~EgOt00uw!u q\ 70hiyajS8l Ёc+xWvv]h__aQ 1xdy>ֲ*yF]q\6 ؋ّr! rK = rc< ᒂe8#yPpѓ-Q q-X -1}Hs6W\Ff=!h }1 ;7Sy{ a~UWJI(a (?agVXi=+鑂y: P@1sh[Q t Xp@Y`kP\Qcx  Hw eRv!5.x xv`"1&8(H m2HmHjjlDٝ9h(}u艞k ѕw2zc Ap| 1Iq )0 |U (;0Z:px1qG" 0j)T })Y'1!ڢWD:0 i s!6MiRJpI96!gvx-yiqija^wc*lُ5ljJbz*xYʋu;J'2,Jh $\q! A(( ʱ  \. ;YvIל*wqE [ 1T5|$=R¥j1{AOvʼ`AqL l4 PzܱQ<=:}-Ȋ,PK (ѡ&f |PIgS!3Iw"ӛo'!˼ Y[4ZP)NkY|k u#?a<q}ҳ1πWǖhL<.[1);)2x3RO.դ/@i q,e/0]# , &{@}ڱ=LlgQBDFh6ݸ- ۳Mۨ=-qեrhPֆ[ƄQY%i֫r퀎}L^sZ b<Ll©u kiwq7ި4rŐc%= 8(WmY<FMҵZ۹=!ӷJ.A>!܅ #W0r~TV=aKxYSLų7j2^lka,  N؂'1mQ qyQn nC&羾&ޖ1o[~+rz 1'Q h 1aS{#~~mh{̇P OG1 QwNO[:/hM:A%` PN ႓NN9S(y7,1>vxېR? 2Uo=Bf-a*A\*Z/|-VR$N #Qf*P_~be/$'*'V:b}ߗpY01qnp=Bu řaa͈^ $Q q2]ؼhj:r ] eCyL{[78:ڏ;)tipPkrن(MZ^opTRK@ B),TH  Ʃ8aEAc†AqDN4dLb W)&ؐC \xPEETRM>UTU""'DA)8ڲEKZ-R ZT tRz@W(/(sFįX*0o *@/2(/˝,N==PԀ)o d_()&/ 7gg$ K<}Jx%)>mގ]'Rw>{ 9 @,(p(?,@ hiڠ2TFV WHTJ(<." hcVD30Ctކ@rC[Pr4R1VET ¸eߧBC8) 7D"шBb0$`\^|"AHW+bQN#0 Z0( V0թP=HRoCq"攤(%1]zX ,΍y PhxU1 ](X(@Kю=ΐ)ccG+ՂWDi:ҥ=rOW:u,l*z1b(ͧXuA@a뛧D5f.KՂ)at=NhP\|a?0%K RP|[ S3G3 5Bt!]66T>{K.=}Uu@h!%ĀPؔv<[u;Jyv@pF/6t^‹mdrxڮ9bOif2 j 3ƻ>I6; <3# 8;$!Dijz{( *0 S10Gc!\;s88;ɂ`%VXH?x4N="9 5`҂YX0$<{@'j1՛! no>(@@SWVufgh8>B-I` &Liۡxc Xcd=QXmF&wxg8+f?@2hk6_j V`%43K6?Xv闆hephyh+hh1udЄN1@i f֙nᛮݞ~6zYHv6볎U&enksk.Mr\ Rĵ Xj݀n_fvPU0Cffd딨g ?hnjJ%k=eX@$XזmffǶ!XʦgEpd mj\2hݮFdP䐼l n۵XH8NXk~X~conn6`V]XXnO%=&7. Hou>I> ORX$oNf k kX-pOq !'5CCᄊX ^!h݀1f&[po `X0q%߁ "w7:r@Le?ƀE=V~`q+_1&n>G>׀1g͈JK' ,=G&p ŶXBbM]˾XY/M*N77tPu%X8_]UV?54ZZwgXN{0\/VY%h1 `'FXjp'6vww KQ5k,GuЄ1h$',Wwh,rIzW>j}O11xeYFX'go(xutNWx*yLKU Й8[ՠ V)p'kyWlog -GTVkh,: I\U p{_{Ȩg 7ӫO"C{X#00 WV>TB{I{ŷWL I'ɗ7jx7yfNH"ӷ_5AMyֿ*t޷w'[= }X`#roTs U~#~G#2N(":Op#P}36e „ 2l!Ĉ'ƒ2@C7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'D-`j# 2m\$ത^xQ װbǒ-k,ڴjײm-ܸk^,*Wg TTZ{0ŭ]zv1Ȓ'Sl2̚7s6Jw&^"ÿ7,bXںw7‡OY`I4 !Y@Zp'R}BK_P(k?HAF(-.@?@"dHw aĄ!UCT*kC WM !A )-yP/D;XH9iq#okpEnICUtCLI 2DWI"Ģ>V,aZfh.@d"jCu Xw@5)Jw*R֍_zYù Zy6*M!HXWX[t/55U!V JSh:t _L*\u5\L6d?gbլsB'>B0E7c! ~p[a/b`}'H"Ĕa+!FVPܛjr"3g[EHXYbH~t؋\!t29Y) Y&ԉAsBHf~^zȁzd=~^aF x ڃ̰}\ ߢo!e~,X|U.r"Op!Cn*K+9 2S$ Ik_&-P+gNȖꐏZǒsM5G,l(s!y= g!}vͷ47ypBI iq /!CL)?8%X"1lGX">\ k$y2׽4I d ? o! # -n;CG>u8"mn8C {3 @}K繑%Cf>BJV8._?bvHwj*r9!虮[ZN#Jo]|k ַ&ƂBʍvn7^]!JgBL/7E|7DjWmӾ}q]Nt/r^Z q;, mw:BxBW1TuB_ Iw?sCQ\1D &R9E!yۛQ]E%YDA_11I %xD E)1Ĺ}1DDzSɸD1x]Bh.^!fQ4@IR A yǩPvC@)-}9_QChVGҝIZ-Y 1]LƼDܕ j!((Ip!IYD@\BtB1Dt߂UabgbGDjFdGJR#v@AUib aD-"<ƣdD#'NTbl2 3}ߣU#%6Ry>5FDw@m32DO!=%R& [ItEd5DP,:W<@FBbs"zF.Q cHGL2bG6G]HH\Dubd@<][zLVM76x!dFdB&Mc,8:"D%XDV*h&i&S@@`̖xfC`%% q!Yŵ +A`$6%Ce%g,GdθQa&b$C̚J@p _mA@{'|i MTykDAd`@,D e.Qe%8A(rNss6F[͑Q:TLvu`7vexS@MgGcEO~D$$DEB9(BŹݓmh]$rnbUɡe+},Ah`(\_3HN"ZP=cV(&VϏj51dhi+jl*)D` ;BB*DjBDp~Va>㑟 :'t~ @Ι8`AUNݘr#wi$)2_C BXWFM.*JۣDzDX*֤ӵj@b/Fݻ¢D ab>ޙa:*4z~U ^}`A߲j$6Vj$ɖf)"KάFU Jk,HN*LE+z$xmD @tS ۉq(g f]Zh’_5,GL h߹aol"2b&Z(@A *#i*HdDl-j : -2rD |5Fi$o*Ժj^dzDnl:Gz-ϖN%BxajvvޅlVJPDOX|foy mzXFD4nG\k~ER$vXf.nn~i[fP$: umDenuYA|>B@BLB`C.07o(ﮂ .6:-ɪF-hnYB+B$}R-/H؂^nChiSHFRO-%(CRi¦#]AJ:0GGn5l.v`[&@4.FYF pq/ꚨnl}t[7ajR!*Du] \jIZHl+BDPN%_2&E3o0fqUnBtqGȦۂNA^. +{unGj12f.E/.˟Uϲ'DV2Jm.$# A)g&o37wNl14S*1rG@W6] ADS$rԿni!;l8+DO?HD_ݐ¯p?˱@o z-JJ1b=7HtM0릮Aߟ:*w2~DsB{@=K'/W-\@pB8G+FD##ZC2+K'p4IZu)4.'~^%:ݫ3*`t4 ,:v:]_Q籚ĖiAv80!k5gtB+ݾ'>ĝ瞩h}:DQ)[ǶlB5555)#'`b,R~ j vCؙmR[mbuCQ%ddoDu80c{hDGygR5DW֑p6H=AP6szhq  1#;= 5Qs#De%"̚jhDP]i`JK*LF[͕eEW1wĖr%GN7PW~}IniFQqG8hCswpzW1(D/SD@qfs)"+ O~u7p a GsF9Jl̑_0/x@PRZ'sH Lx澭 GP#{6oc8SY3bõ -VBLYfD, p[LVK^m t2. wO`DAdcmE ,qLѕBaiǂI @Bp27 vaKw>EJWQGZA;K2{{{,@>'$3(۪a/ 1y80Gy\sD{}VFD<􍽷\޷{(!_?#4JhD9>g0韾޳~q#6zb]>ٞ @I,(0B,$bE,"AbPBDh `ʐ p2X` |˜;5:`uA-_f)P :jUWfպkW_;lYgѦUm[oƕ;n]w*(0UJS NXpG(l!708]f rBnj%M 2Y+F l(/4q7`y X9 Xf(߄AXKe) $,\64q P ,LPl!.N`` ?8bH4RCĈ $1-H h <bE  `-DQ h(ԋ X BC I)-D')R9;S=?e@h| @~ @PITYAĐ8ŐjRI }OA UQI-SQMUUYmWaUYi[qU]y_ Va-cMVemgVikVmo Wq-s/O8XR`]*_ueS@)L'! t!AZ͡e<`  fx"r`QWHt`&1"'LAVSp+h8C䐇4 =B=d +r1WH"lCψBPް8ԁ{a) Pe4јFe F|CA ` -kbU~ ؿ ؑ`$ G=e%+ƒB}$X GSU</aylzj/L5e.` 1 fLTD `5x e,Ij+&SDA4YLsBDg(M;Ό"6mCD1P<'lF068|0P.|mhXPA,9QpЇA8L+( 9䢔|gE,Qi,-K"J ~ 'GH"2mA)@v`MPNUM[Q O`_Z.wJqU$+FBLXNUb MSt-NI" ],LЪuc!I%&XL -U`SH4XfE-M2 8GO!]g?7ѮQx)x_8eZ [rV 7L7Ic<45yĞ}-mXb/78DsHE/l+eI ^_EH}U _ qQ0"Uo~_ƢCVA<^Ϙ5F8I8iz ;hV;=#guJe{{cygrG{bXvYrW@ - 51g=9U%X.dދgp8ѷ1EC{ٽ`n٥[KTΏV Y鉐AkYϚw+2tp`{szEA#QPA4Qzka6<²!̦ȳM+('l8P 옩Z*R;,Bh$Yj7&Hnz;Cf("dLŠvaL`V` es!/K@?YAۊ"<ƻbq ߹%ȁNtdDf4,se' QE]gD}2k]CwHѱRZdzNO:E앷_N?D?>_A kz~^]yl`* Aɷ>,lAڢ& l|/_w+/4շgV9"ڗZD<3\~ z+x ? V ! bF pv#-~_ \)BBʛ:"&*08, N!V!s-XL+g0LaWsZ^ łާ#ғ4) 5U,v  oh6k_b!*/q 6p!2jr3s;WK;b@b`t` ֠=  f`b!=-B>>S?> =(@A = 4& p> Ԁ t?;utGyTVF0GHH两+ II4J TJ4KtKՂ\K2)KĔK4MtMٴMM4NtNNN4OtOOO5PuP P P5QuQQQ!5R%uR)R-R15S5uS9S=SA5TEuTITMTQ5UUuUY5hX`5Ve7UguV[5WuuWD B)b BIxXX߂@  |($,(YZ+C 6XYw"ZbZwZ\5]-@bC,\_B\+"   \_\0!`(^U_ˢvavaSA]!6b @ :^b`8X-Dvd %cUv/_dXdeVdM,2fydkAb6hK @X+ci(R!d{VdC#\6O@f#ijbgfQAh+  6 S<"@  S o@ UlX&(P!fdö7O.Af`r)q#WrsIVs P$ hob un]B u@JI"w!Dxvewct-  !(tB!bjfe:"{A{kWtw()!A#@'M2c  c!p!@"yC#)z}zYB}G6f*Od",g3xe]!V Ycxb&@Bx& } "e X "~c @%x&( @i(#@f`c!kI({rI"d xd8-2qkX@A'x/B##@BcA"b]AB93X w<!n5(#p-"K [vOėdɷ#D9H9Ld&@A @ ֓"C%"4bb4"y 0d >$$5o!uU#ٗ >cb&jAf"gQ$G}-"IvK-.Y" |xXaY&Û@ f!x!0 ZD ņAb"9N``!X qߙ%RZ"Wd੡: +xd:ςdV"V$YǑbBcY cMB70y^ ,Y >z l"{=8bکzا⬯B@Z+#8,Vyd[y+,,dZ* $r'#XvY"qYvQB#X#"#ym]{ :n{!LZ " Yx~%{ (*Rj1,6;,@fY+[ˢIV|`_zC""b~o t!Z Tw8%X 8;`Yǂ x⪑A,4d Q/ y)b&Y#(9H "#n:F"`G"O6(|ڱ!^q!=++5s]o$ecA.ى" V%:bY6u>E"x \!)}gl㏶*F" %>+,`;%=.N'w^#j!pb J"bz ^K)nvsk*:լ[~CPafV[vl,Oe=v5O(dܻ{>[Ĉ)Z`x$c[8E{4P  &\yNHa^axAKO9KQVZ *b*ƷS*E Ac6Y)4%4XDt];"YxdN:RNIeV^) 'bH }HQXBsD@LYX hJh m Gqy< iynF%:.hY~JFwJDgX|[AJkފ+\d q|c+eqH!;J:QBLLkQ m~ nRƍU*K>t-T+dq5JXԀp eAx(|ƎE+A-YJլjP'BfGI * -RI P,CռsH_'d!{-a뷠kp!M%+@9=TV/yCV2!]FJĪvmk_ ۞@!"@؊ɂ"'Z9bU#$Hi%2[0]8$ATjwwI;|N ij^',FXGѝew(^lt.}'ڒ[ND6KQ/ kxÆe^6O!% (hWjW`*pJGj j YD sr0(,)~-P Vt 1wH,1W `~g A -h 4x-z! w 1~3(5(~ %H׃M!HT ,qcF1W!a!a8idž|17Qx. 旂-RohkX8Mkj8f@~+Q ah(P1jy1W.! 8+(%hJ08fSЉ8AΈrHnj,ъ7.A(؆lGfpu9(wp~h`؏ ׍~h؉ iE8q~fn/#IĘi0)/+*,9{!(@屐(А,!i 092ɏ.)Cْj +0)qMwc;oq035y䑓; %]Y1myEs<p9r`l ` i S rP Z Q so/Ar9HQ,  qt. vku@=/ j/8ٚ tr0 <=x ! iӹ ѓ s@ᗀ) )ל#ћÙC9~Y@n :0(qU :.p3Bjؠ5iD~+ ,5~0Y]jd^-0*#!-@x6W &w~&o q)F t aJd*ViA0<ʕiu>.x:zj8 Q *3h 40>q!7Ha I10AA6Wrʛt:ډ:jpVayN~ʧؘ ~nªa \:^ʝoX>ѨѪӪ60yoj;mW:ZT:po l\@!\Zѩ(j ʜy:>: { +;! W铱`Zʬ谱=q ǭ )D䊴ӯw״@1\lo":̪=q;.p6ˬ.ʥ貝Fszʥl;ȶ5)pSh 7 3[[-@3a(  1+[#ոۦEAiMJ  X9pSpp*r J=a 8P+<=p:Uۡ94ڪv[z۽8t S;%l0WbU rjj0  t˖ {(+Eay Ugۈ w lU/1fi .*( 1=QPx¯ űQS<Uiۙ"p+A [); ˓a8 |>ѹ^ܾ! ],e}u Q8ɞaa  _͖ԭi>1(3A3M}+oz᩻/ 'DHĥ=̍@߮UIX̂^=^Ry-FQ A/0NƱt\>. 6@n.;2Z|N=X#8<I(0#P^ aHYc^P?%V,WD-<i *o^SioAy{11, *?b9 Ǒj(UߗL2OioBɓ;-#N2$0 m'r1I-/?'Ѩw?e$;5!KT*"o7x;EiњMT?GWҸ;2KN AbI ;hˊ(Q RfTJaU&qցdET#US,]U6"C!Ui%UN\H~L(IӊvZ:NY]UZme\Xŝ\tUw]vu]xw^z}k1"s7&t7EVD!IH/ vVJ_ISJ[fD]dŘۍRcbǃ^(>Vh6k3ZiVKuY-2yɦwjjzkZ5&c)\bZUg^h_^h["a=M{$qZb8"kcirV 5qRtT*dhiҀ砑̖z!;p\5Ǟk~x7x䓯 svԶ N"NH\FhIW}!԰On*;pctm$[OqEbSJ~E^r!"\*aF@4akv 9mAPj!wCP;a}éT D5ALB :`a S\Ô:AT/54`4A hЃ4|q5Jd )RъtqW3:&tc! Y!6sp!)2F:!y#;\{c:^4s(\Bz2#d%"B6 DU@RQ%oy@$n 6.4#B:Ӥf5yMlfSVbMX7&фMtSdg;NxS|J{'?M14iI!= zP&T ehCP<- C$*ڦ{R*9AT#%iIMzRT+E %\b!. dJ&痢)(K}SUC%jQZҜ<-QTFUSjUZ^UUUc%kY*Ugܐ@ϋ#D=Y!s4,gZӛA^/q<"Ţ%\!3f; ΍hGu~5BZ]Нfv}`Nټ0zG͙K@@EW.[,u2:_ϋ.D؏FvB]k~vo" H@@Q^-evܢj>ȮyaCâyѷCx יymWY)Qok'g!eX4 r:w@7^@խny z/~s]9vl@ gv-z¢G}G11]'LW~cg|O۲' 7v΀>}^tg8DeCp􆴂'EEm2| w͝G e`?uhΜ zB X'}g߮ @#\Ԉ9;~0, s ,Z96?2?F0Ȩ@:XX 0S;h?:{@Cӳ,`>[1:[ED)¬ $DS9DlD/(CZE[L(<=<m;?#B4D@H.X:X46=[F(33iBM$UE#RLF4\edF B[|GxGmEŧ3`(FCt@@FP\=sG:6h3 T3"KVHiql9pHWc$ȃH @GI-kAvä3K DZH a$Dc,/$ &##[5J<)6XUC èč,7G@M2MN-O:RU =RRT}VhV؀VWUl=Ym5[e\{r2{sT\44TPV9e$uViW{ϠVp՘HluV 8:#O TK MPOuCLsV@O|XX׆Wր-}c􍏄u;3 R=P=YHSϰ/YYMgY YH"Z3+XZZZ썲;wsגsEXϐTDx= M0۽M[C] E٬UQ6=s;=31 Ӷ=Ϡ4q3\HcGXە=\m\(8VV: !deTEŜY8_ôQ@Xoc8߬H<)^ʅ`F!/b/V/dG`I8a0VBx3p0bC3%\0~Sb^$>dD/x^'F/ dbӊMdK(xhGW e Z`LneW-JfAld Ce:}e^eۊeۘ؂6+f1S 636I֊Beh R4Ddifn-jn/g bn>gt,@ 8vNx,@tgzg{g|g}g~gghh.h>hNh^hnh~hhhhhhhhhii.i>iNi^ini~iiiiiiiiijj.j>jNj^jnj~jjjjjjjjjkk.k>kNk^knk~kkkkkkkkkll.l>lNl^lnl~lȎlɞlʮl˾lllllmm.m>mNm^mnm~m؎mٞmڮm۾mmmmmnn.n>nNn^nnn~nnnnnnnnnoo.o>oNo^ono~ooooooooopp/p?pOp_poppp p p p p ppppD`/E]a6qX)YnqWPKGqV-);&B-F3M:I6Q>*f.i6nG{VD\KWEeUiYn^`Ote{mwhro`>6A9F>JCJCPITMWPZS_Xd]jdnhhbqkvpys{u~y}׃uي}ׅx139;FHWXOQcdkmgiwx_a?AVNgo}ڍۑޘݕߜ㨞ᣙ˗Ç䬣洬尧黴꿸ѣ•ŚƝȟɢΩ̦ЭӲն׺ھ¼۶i H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKw&x˷߿ LpN*0dǐ#KL˘RFCMӨS^KX˞M۸s=םNȓ+_4NسkNД (@@Rt ]˟O`CMI=G+Ǚ% 6:EVX(35`v (∡m EL(0(4h#T]⎜5K:ZDiH&C !KSXf\vP J(RlpBfHb@J b|矀Zu{$#c"!d%F馜>  t?'gWvz)tj ꭸ* tVX ipB+ppS6kn!EqѫȆVWte!P @1l{~*evn{Kкo%g)NJ@ hayu 2. tl2~sVb,3p ȷ,T?ȩ"ivt$綰KrrVS/R`X)Xp-2|KC)܌7!/@%ϺA\!>g!|gW㨧+# D_(oF"?9川5wmo<`fRdY]vW+)ʣ #~na= $=;i;bE"d LPIڽ|G :Q+ n(L}'*pdGzHvtt3\u,µ? 6- NĻSAhGAC0IEvnGMC6p<ζ BQ֓5Nm)9azB5<񑐜 TƋ@H5i$+TEW㎰Y(m,S#>ы&2F)DllGA|H(HY9jZ2άPN1ɑ9Zop*uZ !NEƜ(C ]5 N|qGatH6ۣϑܰB4)ɻ\rGk~N\E(%Al韎(ED͎B|H!QY~-N/Lh7 5zR̂)T2Lɍ~BgC^1EjWх-p ]P)<< DVv8!*I+ Ne=kZZ*u2lѩZ_)*2FH qgOT r VD C<@<`@&rO3b+ F&mH=MrU"Co7($\RZ$Bp; }rˈ6AMi>SHV tKٮ^!Dgu`2i ^< O럊Ķ Z8U}8*Oct5:dVgQKWБ/Ap ÉHʎ`IDqZ^ᭌ F\2i1Q t)xKݣ D˯ypLg|zPR!;h4nLae!Ep( ܢ2vd-QgBuN5+ϓlB%#h mBޥB `M+B-H 6O BV+ D BCrv!)ق䇐6IjaQQ:)ET N4:1P 4%XE #5!Et,"$+UM( ^CH~mO0[o#͐E0 ;8'  wSV)%fptaC3K"VP9 !+0rabN%~?@7*3<G}m}- G!|!po)_axWNBG'sq7uq \,41FB0g WHA%= Hs}OC Rŷ&QKgMa2OOMJH(/ĝgVr*# Qt"l F)Tv j7}p6~ C{$1/#qr63]hF^ nʄ|J'&BW#&8 '9*htЁG Jx ua2Q]PnQ~~1J}xbrfg% ~T}l|W0w.R1KV!hhj(ajbb(* qora 'a(V!vчu2 ᇼ o%fpx=bp|pu82q!Y4oQsAX]} /rX!G\81vZЈVA\Qffv*1iB*vbAda clN})1otf"q'&i!Ԍr\iѩSY IYYB-#)*HPIo1_abR%d _$l9{"难ҝ#fw_7 i*X/#%A9&ᡢ2,a\xoԇO$ J B D9)* }h;f!ya'(9`:<"&Y_!r]2q!cc!3<"tSN&]7TzLr-*& +A頥L1X)hp#zPB,CpU)*QOB B FF%5xqщ`}!Z(@ zϘV٘o=DʟѨAIP4fz*Rgb:"e?Dg I*\*4ѫQ q>"v^l֯" fCZgR ^R7> qjl kkL :jO !=|YX:k__ş/sz>tчmRQ$?~qA:V 0 X>?1͍쁱aP q)Or(Q԰J ^ޏi;#|!@B hPD^W0>$1aU T R$×IJ́,sbS(ODvRM>UTU^ŚUV]~VXe͞EVZk:8{h(F"-Ϻ scy7 4fBB <5MWhnUV+W ~h@0ſj[e[x*eAy^TҜFIgD)J\sSBAT2@ߟ;QHBcF^zݿ_|G] Dzͩ^ZL"x⨡/:i6\P=n#>bps;  9Ex.^*0:h"jڎP|‰JPj$&2)  DD2&C3M5dM7߄3N9焓$:hHɜj`9P"^ǹ(;Ds#B$>1S`(dT'MzR1gC ͘iS 2d@ G Ë ђI:6'/e) URꆚV&^)OiT)0:E7]ue]w߅ִ,rUl#c_bkd_5)qAgp/TE.vы_c,ItKH0!/ǚSŞq)JyS3 .eSE!TT@FeQBIAd~MgIG P&mO !29!'bQ8!O5!3q9ikCT/+D_*-]H`FL2Zֵֶ|L{r.jMpI%cxNfuJ эز!oeCd*>d?!҄ Lw A$WI:¯RBL 2nC΋c21TG:K šNޚM ^^"-A{6qE<⟎!x a]7hQeI  C<ʆ`) R(@9S%}DcȔQ 5vFFOIAnUsRށ%7ڇ8*pX79sCF8)T61]@0dWҗtݥ+V/=m!ūkZcSW;.%W9ľQP%\M]JI2/#ʱ S4%ig옝BlW$<#AL頒nR H@릔NÚwo~Ʃ lKg#Eɼ<-fX\A3-;J لOP8j5.HrsQ2lܜ#'u)qmv!L !eP:w!@6~w_{حRZgetsA8%C޾ S0`Z^i8(QKY( ʸ`wRs'Tck;DK%w7E6E(`r % z [6jZ*[DT= ,C2+># W0.؂*ăs轂AC|jw[PaxC[.+ϣ9։ %#J*,O{X # $$00$B9\GHD?r )|-:f>Pz${@C9ˉ㫊2CEZ?N L$)$UC >{ RcD09r4h# =tm<,UA' m4ā‰vtw6CG;l;dʪ@9 {,/ܸj GoEr‰XF; C6뛉k‰`)ܒEHōdž`G $"يGiH:;aCE2\etxʡ$ʢ,/8Z$PHɥx@ Rpt* ^+AhEP!i ɒ.TK8ǿ x|AǪB8(N ;n= :Ll+̕?ZHDM N4Eˁ؊,2:ğF8d@]B4SD #`8@ԔG_{X\ mB* Ąρ D#kuH Ȟ[- 0@5pFbN g)d&ucõt -ΟQXIOr4$Z,E+t QHּ뼶qY"3RZQ(l[RlS8n«ЦA]/pKKmxӖb4}}́0>'5SE}̉PͿ@|H`$<19PJDSHsl:xQ[Uɾ e"O@tE$Et#̌M9-SQZU- Rb#ɜ )ELm"L#M T~Wݤ%lT~^mAE-3՟0zJ(y]Òq ,ϗ̼ݚUT?UpU(҇%ӀW/MBUG阩ڨgJkApف+W%P%̪EڣWRIUڨP}͉Ia,v]X.MP mI@#=:5cTPVm͏=ӀEY%|mʉ+ué5EII$\JΥOv(.,)ͤ=+A yHYV 8Fx\^hVgK 7OTCf`ROɯ*ܩx\+n8p{*S)±0RUb: ,<`>懘;X3=W C42S> AFA4A)Ktk(SقC`C؂^|Cf? _l/<,5)p<kc/[N8!x`ʹ 3æ `)D)`\I%iҖ9H S l\^:.X.S֝LppV Rߗ۾vonߥȑ@4͗E'䣑@^y-+X C<9(/,E-j .")T88lM誂Ax8!eUXZX"BTr5P 1wA]eB+ ꗰ&27sH%2]\#W]*؂)hppN *x8G3D-) 7~))`). ږl>/ .4)qeKrP.PuPՐA^9*Lˊ{K)G,WC:/.';g tهj(Xa3q'w5Vp {Nug^v~8O u^r9I˛^a!bNU =+)F#.tM< `vS.wyXb2x !sae5h ޞ犏Pwӛ`;w ߌhrPz sl)8/nJ4a{QBu%ogk21[|mW'Y]Lr{M0xh\E c_K_O3="f_sᵭwow?Vx'B sX߿嗘oOF*U>h0 yFxP "{P,hF2l!Ć R(`W*V @aDR8$dHl W)!tiЀl @̆v4%hJC!Yh\Rj*֬Zr+ذbǒ-k,ڴjײm-ܸr|EeT=`0A.,IX顼$f548o)(Z@hSQ9X^u9@ [JCX+_VyS~9k9{9衋n֜7<:ꩫ:뭻:>;l; ?<<Ő퉩>髿>D^ߨ??V(< 2"`< 3 raDC*&,||&4)i/WH/&8)߽"Qkj!3u|g~ɑH)6<}r<(BЅ"׬ȑ )0(F9ʖ!\IΘё&e:?.})LcH{OUHeӝMlfKPhѧF=*RJC !#G ԩRVe )^!d'*X*ֱ)jC6n}+\R F F׽򵯡+Ixאmd~=,bXQ$1l@R] ̅$,hC+ў!CKJҲ}mHJW‘؄-ns"RkKBnMiEո}.tۃlV.v]"BQJ񒷼-}7K")|R Y!DATY,~0hۣ,yl3 OaK &>1i\,0.~1Ih_t461e3>1'_&F>2͇`(7N~2Y2V2}gM8^2S7f>3)i~3P 3^-B ,AІ>4E3ю~4#-ISҖ43MsӞ4C-QԦ>5SUծ~5c-YӺֶ5s]׾5-a>6e3~6-iS־6ms6-q>7ӭuf^E"[މp7Lo\?xb )Q8S\}y z0\8ȹg+b&#x {\[+2wys>T`3}NW;81 =^:ޚt@]Vj0d}['%0^pIUHٓ~a]WTcqQD;1ѵ}kwHߟp?L>D}~g0~/U@yɁ= ֿy0\mQE"0:*ү xQqQXBvHD&BH_LП J\,\E DBu^Ut աEm`H6> -Bh_Y`ܽDE" 8]BHe- L&] r C MB:]nXA^._CDa: Xd@HH6t"E >Fb&b*` D''E,X=yCB p _& bұa,b"YbX,6 UbD4Xa>56:-r.42@3J3B,Ң n;`D<<$f@*@Z C XBCBA.D, Xc/29:$B#DcF_YCXA&d/2dDcG6G>DdD#OERDE dCFr^$:D<$ TC>dSf^TVf M:C$#RX(DdI%U*ZBXcY>WN]W_&`\_>D`֡Z6[ `\a:Rr#A-($p-B:*[CdibeDf&mfg~\Ab.n$CdHLXl `v#CJf"fL]r$YCɦg _dfH'o "%" Ffթc[*18D"CgՁC܁օJJD~~6D[VbBs֧ `CܥGptYj6 K66z݇Y'^bgC,h5(C' *JiQ&*L09Z<%(.){B6BCe22DQrU`2BD[.K2cʨR⋶!iXl 8 ߫"jPB)-C6M]D@IYLbBD,l붪c:D}v6fB*($ըA\6BLkkbQFC#)"zviJƫ~ujCk+l9gFlkf+>U#6Dv,V[a/+-kJkS`,^,Ž0D%Dd͎!҂qY,,Ɇ Em$"*U,D_m!zmHx'Wv!ZnY+- Cdm4&,XĪ "-,7+-C^-."kNߊЯ.-C.ƒbV:XmDlHnunJ.f֪Y`biBb*nB.~ڐLT \Xn˚Ulc ؀//@  3 n4ob2iVg̖oN/\܊[씢сU`/ 4%-lmPl# lnYW0n3> '.#b҂ W0ѐj,[N.UtVU~'?ZCnDp[0,-p"q# Ph6,C|1x.D?.qH5.7"iH4[1?zkqS@.RoF$0D>&ozrCoIjDhX,E=/D''b\,D 2- B"' r c3ZP(a2RCȀ t "CT C'>9NpChCp7Wr68BH(GN>Sb?bs:8CsJs 4="a\>36;w=+F;[ЪcʾqddB&"16?@oƂ%@ B` 0-B]e uPcbKKdLp4*f*B>:P],Z5VV';5N'vhMCu&HuҁgKtRFu岿uqH!B'eW.B Ā^L;GBb,c{k#l0km捶W酄cC6_ g[-D\bK^vXiì**@otP\:]a3՚U6q+qfng f6-hkEbgvC$^vusbt{'c|€ wPP.4f 05U7^/.-AO' iJxwiOr7W񦄅goPP ({xhAYτ\3c wwo/*6sb{483f˳?*'wX0%+y 9#E&l.;D[_#@6CԹhx d9-_z^&ddAC& @z?hw0a*:;Y\B$9-XBX@fVdB j溮oŧ:EW)sz{D^3/59?5d;O>;% [+, ^&ۻO;<<'/<7?uMV,>7ED%ꏔxqǑ'Wys9fQ*^cu\/콑,\mCW}{Ǘ?~}ߔPR"`!8oHڮ 1P 9A 1$-Sl;RbNA]k yDxy6ģ-Ǹ(Y"hy߁WX輔 y h0p儥^*:{)ZxYlo%%і~ZHzشP&4T> DUS( > ς%lL&栐M*BfBG$"8t4`X9''"IF.pX.MT(@:YSāe4c{((D/DbPGb}HA'O%A.R(H#!I.=#%IIFn)e^G "&T074y-qK].擖 izJ7R'AD[t3"7(VF}Q@08LUdsU̐vMqI/){DQN8@jhf3=gs2ꌡNwD g9-}. $?%ølv$aI@3М$1S'T**x)Fu sIQnA42[2)ꖋNTLMcSqՍTE5QGpA`HH 8`1+Ā7oN!ō"e5C^0)U2ФG긙16ӫ1c=_Wb ZTP56'+I:G;k`1Yq^!%Hd3TVDka{Um٘F[u mt]65oƅ1BRnە61epADn4\UAFp;Uf]B(Һ- h=dRC+BEgʟ Ux@",Up<`Pނn2@*8UzRpa mV5SdKK_!Yx8ĉ Rxa m}t!QJeJ ֔"d|Ar#(e\ re^LB"$E`MVH ר3Pd:B",Bx`Ģf /B(Gvb`k֚F @Ҵ ^O#`f-LA`XC$bO%#~gȧ D/ X, A o+h!V 0Kgn!υkHBst/ R H^Юo&m4:o j|Ƨ{(" mB`\0J<.TBb(.:BAvNQ n !kVbHBI 9B5ibU'N`o 1Ea (CK14>k~vʫBN#Q49rj/b'IBIn֋'f&l34j(z2p}*&s9ID$zu! `ah'Js# ~R1T/ j<[n T!n$r 8&6g7!D"u%zi'$Pv b e4oug>!MIrZr%~F@bte7btK99%j#UCWC{qaHPchA7t1d !i;QVjIa 'z6( QʍLL #5,m1LYvcw# *H:!g73 N%ZP_akw; v#:u%yU"eawO/CyKsE>H zaS++`Q@ F}ω3Fhia v$>'un0xz#T~uMqTbWo%]Z<% VUv~@Zp4["o"g16sI茗&#a48.u ( %T`$53imwiB^:0BF^&hlpz7"2+XY"%OOD]}#+c%nYbrBMKD\wo$؋muFP0.2&nGc5N˓;2y)g mfibWj5l7bjn8!}fT&ȓ[ՌoSv4Mq;leqR8.z#8{E*&XٜUs7C"-縀 r 9D)QlҶLKYZ="yIx&$p{rL]]eXp%(&$=[JMpK,Eoa7EU&ڑSE#jz!cFC:ܒ ` FO) QT!_8rД5B'҈aȤszzoʨ9&1'3~ (!MAy#(b|%f_ys; ":0s EѮ $8'&J--nڠWo6FqRhH=q5FJ&azǖyW{rVbW]SiaWU{&nx<6\|oր{)³|fay55s55z(VQ ;@:#D<)i$Pb?'4A^%?tZY0# |6a.@U"zu;#o^q-<)L ߒ 㲶 뼶͗]'HOH]zam%PdxBA6C"kh'V vܽ#c{K{&Fn|9X_M=bW\/}w<~U ?xu;B>]gWG|͍b- Ұ̅Ώ쾖bҸ _N:x7/#׻3{L֛& ю u[83]Y;?]&5q \ia? Bi6S[xZ%^a ZѺ=~(a ;    = B\)S-̛5'Uv7k:`g%ȖL⪍ YF|#!{& ׂ qS=b\Q*m}%r&$:*m9aĻ?>&p & ^y @k ll یRlσ0,$ܳmwR ,۷ާyUbݙ@[Bk- 1%sOݪgn#^]Bb ~%yŰ_ +'=MJҬ.<9y%HM_˶h&d. ==@\h<0BZ $p! DU⡋ Pd E*!).2aRrl@%Jȼ8b (Ja P,p1D:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} i.S :( X}la .U:t &\p#'tI(:Ɉ"(XC |- ß_vҥS]ˬbF.mY!Ʌ} Ө0VvTw^D?$J53bd`H`` .`>Tp1!x[t P t!^|H\Y=DɇUA ~mr$wRxfP( U4 JiBHG9tZJɥ#ASM7. tѥdCHefD]E=E@UAGT@B}~홐EHi^ini~ jH\H$^0B )Q@"xQ"'D$p$)e I9P)%BU(m @d7Ħ@*e I&EE @)(9dt ģBjRT z]T(lS9м.%j"Lr&r*2\B!, H!J(p!&P#[nXt%PАCF)D^A UܸyFvYE^4&JƑ]mpˢv 5 @ =PgTڤSK5( G(Uf.-zꪯz뮿x$UJ9-XE(g+@FMA`/GUP(\tT6 e .vQ=qt0[_B8&C+ ]Dt>By)]I*Cp,l _n. 0., @+[E;KD0HN(=~^Vv*/"b k_D؏b Qs"Ž1k$Q!Sx|)!88,p wTu?1 ? Pr,)O=@ !vL P@sA '"z;J:Z2OŃyV"b=qA/q*z #iƿ0Op(L=@vĂ !7]DF&-Ct"+gMBaCʆʈJtE/Qj T3Cp < )yx-%KyWqNC"q&9@s'-ި9GNEO tSH 0=:'*"yJiP ]3xI5"$$TJI"⛄&$YBɌ*vmc Y (ASٳT MHƮ'sj1iSdTy"T*'uFDUb.u!J/;(SH,) A JP"EY2mbI "w@0Ԣ䩪y7SM:krw ෼bS!pZ+CF|UUEPIwl -{5O׼' n75p !u:lԫQhHVJG.TZ=p,¯HQ @IoUWxAQHa-*yG *H4` @ zo.ʤ?%ښ &r~Rg蓗Lmz:dxqB*vڦ0.Ku:>[ܦA}U"232P]SAal&n4M lk{u P L )*GDW\hY83 yeL2w815BP}Y7dȎi㟾qMpy6xJ m!5Svz{,o_sF97t 4FgS|_ GRj6Mxa,)hbS5?RT\ةíTVGI갛k N"f[?-q ~?xăP!H<'ES$^H䈐B'uBxW^&kuгU&p;]֟b糶BO彩 @μb0 v/d|/Z#å܄[-rs|J2>g[Ǐ&HυNN~oB @X07| 0m' 6aWkEF]S%8P_p.aRW +!rReqE W7 2U4Χ@Sps'CHEhGx>H(p+=c_PPx1CaA*gow4LhgikȆ\m(sHuhwy(HpԇȈ舏rz#}2G3ȉ24(HB{Hhx)dJ-5(H,Fȋ苿1? ʘɸp(dTBE/*(эߨḍ爎阉Wj褎0 ,@, 1x} yҏW4IWc9hy@*(!X}6+/ )ّ % WVw0VkEN gf(1X r Mؓ H9`Jи2I:C9FUiZ|DuId  ( BHNqߘ2`J<@.2z p)9o9rٕɆTk j0i~ (fjy psY( 5ȗr Y7ٙf8p:Dc) (丛ɖrDh'cIrPQxL5:3``75 kmI <p@޸% *0Oaɠ$BRn _W0xJ I2aE؟*$Sp 9 3Rʡ9;Z@qMqC-:2;0v *7ʣSJUzz0<XJZJ` y0v 7! z0y kڦT wzw} x`*dj]* bWc uPvw}J :z  yy)A*ls8)y5y}p zD uzYJJuez1jjjj2JJy xzX?ZY:.Y6pj2!j[./Ц:5v qp QۑK +` Zy #[ !Y@ u@I_eN: 1+ʞyʉ8갣 Qx(tpLK N`mo)0/rKt  PpY G;KU*۸^+~z}yU000)ȹ*๠+ v;VV+d7I KМyZpٵѰ94`pp+K B(q䘾` ջ'J ;"A Iѫ{x  .0!+z|zI *zU ךKHKJۺ $+skL ! .l8\MO L@,pƌP ʡ,aL] s {\ZV ;9Gl˸ a,ĴØ\ʉ( L6 {0w{X ul۹tM@m2|ؚ[qޘӔ ʌ[לe| ՛@ި`*Ah !뼅l{Ë* Xu S͸ÌL)LB,mum!؋ ڍ ӧک{̏ {=۔M K޸* QauٜM M8`۸HJ2DK |ߘ}޽ yMފ,l 1OmDk\&R:L |-+ߪm.; |3 #^qZLJ R!ݛ `}8K ;m Ĵ,>A QLj˞V6F*@JL=w}ɶ21}HyƄ}f zPYp~ML¦\yצ\Jͮ ~o^舞ND>FB~x PW#ޣ:N[>Sa\X¿燽 = Aa., ~ߘ9̶NSʻz箜e T'Z̘N: SqxhؾH--![ 뢎}䵎Ժ>^&{U1_!QaMsS$n7ߠ<:4CPt8I jn 8|L.ȈHTc3NֳIJ!;Dɮk~cIL3;=fH[z#0UJ1%O@tPB 5PDUtQFŲbzԠHc#LXzei&OYuQrӠ;KN.(ӎ6]Q-B j@ ]mJ6̱OZ=H+"`ӎTȾ<Z%=6rUU,X]r D  Jw_~_x` K aΫ\`i:: 8b2ӹNۈ9 e%bʕ7^rHrv^U^h(Ɓj%uD,2 z_0^ !DHS_=%r7L6n{oowJ{p!;ZDibGLyr%;uU@#K0tk8t n";bD6r!X,\,zfen2ٍfH$L(",:"}(xZ7ayE2G*_RY<2:{X݊1*﷢A|D"$k*@FP`-AY-&4_XV`dЄkK r0L.H ΎX &B񙱔sPD((j}ZLv[9"YR&, & dF])U7/^PscxG92 Dd֩;QğX h 2TQR h겓V$alYe˚+eiK]R4\BӃT/Al+-E;*D*` 1HS4yZYNTI2E9ТyQd 1+ʝX:eT l\D|eAD<| J 0p3*SfVlg=  AFLA2!jЀW@,Aھ-o} \em\F7Mj["-v.Apw'eIpf!l މnlqРXmR̋^w_Kۺu tۃ9#m1r&x",dզLDe{e9%`BZx"?c YC&rxWYtEfrd(GYSrr'MVre0Yc&^QBP%gf8Yglgw!ܷP\?'ZxAЧ8ъt-@ӚYiMW;u]jXZւ4;mOZԳWAjzӬu}ld'[o]\ozF7 [Ħvmp[t[jqښ6[ n[werBp.S6xpG7L 7۽s\#'yM.0@` _um~s\JKr 3TKgzӝ%@^NtVzֽuRg }u]/[v׽SBs{ڥ}wn2A'^z; h:R8\6yЇ^"w,WKyM^}]z\[aa}Z\e@'~OiC[Iz'~(o3 O-qY_x]P~Bo%Hr~K?3W.QM@@?+ < cb#T< t Ch)/`.p* Rl)4 /BC @x%A)? E- .´%|"Xø EC?>FxM{‰>HDDEGhMx>5H6`@GdāpDEDEE$EZ0DDJJ4U\F|DX\5C?Eb$F7td C(bܷPP@8´f ä`F.ä mFbƳXbFxmWX/؂.8LC eg/ce~P.8h`eEGZz|}Uؤ<Je V8Fi601868dZHiD 胗m ~JJ6vʢ~ʤiٜ Sp5x>B._8i viXjhvʤ~ R{xIdXx\kfp`W^fH:/;-bxe岠V$ݶ54մ.L__lp& _$D&eS Zbmpq-lP_g>~ nn0ྥ05=dXp.n6sTʹVE/ԬsQ5rd.?G =o]%JΥ$|K8m,5fp>.OVh dԜ5]t(|vZWvw hNNo_3=5oxOlw }{7\~u3ʖwH]Xu hdgJ5 x ho}Z|}|}5h G0їx~(}LjJ_H]xy`=ځS=l;Awܵ.>W,h%) 2ABȥ!.bDIqx]( 9p$*_d04@@ 4D@W/P|qǗU(.X&LBnu+׮^ +v,ٲfϢ `([i>hVDrFFCNlȨj \ l.@7zj6kX4M/6֠A@DEpD̛; Yߚ9"$). m׮-R\$"@_}sx4Nɡϯ?8PENAN*!}/te_IA!"@UPRqQUe(T%SUM]u(aU4uQFUQC A%q#UY5Q@5L9tJ DJK/XD@X`Uw♧{ Z  @6+\V m*P <@EfʊaJEQ!@v5 =P)z\}Zf@b6)mbfim@tl]ٯٰ}rfRfBTDdi$i"G&mHuR ,iF;m BoU3JUtd'#\'9`Cx` 0y/Bd_eHFRD9ЉuҨ(֦FL} uQ-FEQL^tUjKc *L2vC]/MwD[Ҫr_ԠA;{E(S^cR g/@I -P%+5Gp*G8-Bt к@ = |aDͼ#k,-@/IoEig@i%?>DIKO}}B$ɾ{Yh50L% x =ЀO! "R>\QPCjի:}ޔ7WbVH@m6|ɲ75 [M Ջ.7c,7FhTjj&@LAleH*:ymf1f##'yXZv3&h۟vӲ-m:eUZ*Wx;*R"4ƌ6䈔IX4H4FѼ%DR-^$="G[kHTnB0yZxqtZ%ZS}iq4D!Pj:պ6 ^0Lm"SXBV䬗lAVPr\J\++Zb@81Mu L.2Ynı@2he LیTr5@ ^dK':O;kA&rIdz3rې-Pt.%^4MCS+ME.^5WjH*REt 04-h_.UyՖ^Yh+Rq_/z0%ȩPl`H9G䋴3\Gqp[a P.)7J ύc;+i îq %̬n;"d\3"@&z5+O'_9e&"JUoE[%iD2niZj3HR75n1KURmL*ޝm}Ӌ7lȥgU2iDg6]."!Q]ĄRl`IP"2"DZE~EVY(&!D5MNO.FbT@*V+VIWT-Pbv/XHT)2r`%eXЫEAjqG4)i#^xfx@hgyӚEaZE`Q2fc*BDd E+]&@fjfr&gj@&Eש]&!Ԕ*W&HEhUֵGdD@BDLE @g*gg'DWcԘIN%)rbgfT)ҝc%ZnR"O/WAF[1{>Sy`]@4 hXph@JB\RFhP%!DhiVΐ.F-MMM,!JWD~fp%{GY<%#4gD]ZYb~ *#jt0(zSfF DB!!:'*D-læiZ[|D`(DLN@^ÉKHBA\I2|fɈcEX*GLy,J ҂>DPfd@,lHV,Xl^U İr@PBiBNbtSEWҔx"lQܜ,휬uB])-(VDX[Nhن" ͮkfW@٪e,]\!z* )TuDHA/+B[! #.n漆e iHDj\,82!E*iLBH$( o/ *qP$Bc]fB%/ FP$p\҂B /NlqE0"--mueṺ_MRorDd|Otn|0"+Gf@\VT PI t`q'Y&,CS([ Yq-XENQ#- $aޣ-n%2YB8VB-lElkD`G;Y<zp7F\@%^}^fF%G%G(XF q/p"* %&(k&kF+ VfԢ:D3+kBGZR[QKF]qWWEGsH!M; EJ/4!Bl"\6eYEF FF)2td鬱?E#cSkH#О Gp\n'GݳL2BMrHHY++)T!iD@ZPKKIW!tUS0hr;mqRkDjLkD|T5P )XT@7(JǞfױdqYfD֨ EE7EcUk@ `TTCGD@S6%EX{GaR)kqh`e32*2-SF&5U/'TLCP\BuD@)+Dqr!9_;o{_@.@M^mfIIQ!ͅ@XQtgu)ަߒEĨlEyx)]n5-X$+5s{6{ DN Z۴ csģQGyVP|B!TDZEvDk%~+pio%ySR5iPAtrE2oDLnشJ|fsEq9rkwj7DPuwG+sĘYlאI ۖ|aVkWNN :NN3Q DlV,Le8E T3cC9.`0i꼸 X ܽ0 7S@Hß$(PjZ(4@LA~>?@M(@HAtAo/(@8"w)(z #AȋbB|;GHHKD|+5q&S|O_D$A xL̇%|e]# |֛@ʳüCz[`|V㳎kFDf1XWMW.ģ IkT>X O%ی4Dz5q:zD8"ӂVY(kQ,X_;4?ZVE;~}}!;c6CfV#@:4+3_[Ŕ£4853m½"^J@) <"@PɑDHL ]\ ΋d 5ziRK6ujTSVK֬TDXjX5 {-U)(u{ r}za{ˑJM$qbŋ7V@+$W^Z~aI `(ja*x#d9rZfh vEIEG|+LZ%Ũ?x^M3pQP]P蛡E,O"*8O3s|B#NR7 5 lç>KGB|(:; 6jj! pu-Z!:3C "%#P  Z0*.2"osH(݌z%>h3Z#/hԮW$*-" !ЬhBEDNp 6=RHD,+sLm3%\WI"^Eh!@+<Za @Zhݖ" s2I-*W=k_2ܩ`l؋$=ʜR(=_{H_  ԨRl Rv`0LnU ӡP EhP%hN8&jޝ$%XсdeO괥Zbf/V -'.#]DIQ-QB1F*T $rK $T΅za9&Exυ"UJI !dG4҂{x)GQr$7[:9dĕB$YNsT:M\"R"kdhH g%!$NhI!^O@) TPB2Ė੠`C|'"I2äJ33r!ٺ$12dMrfHDGC8PZTIU S'CUSfj.j56^*[*Vqⅹ)`_hP|u")UZP\P€4]MU0Lhi{*R&I(p$9]li[[n PmULxJ& f@@i ÍTgB28`ni!Jf$`v{h6-M`T/NA@] H N\@z)\a _ !k*p*X"P"Sc!RRA E߲EyqaP:e<\d#IV%?9)l(\e+_YYdry9\f3i?5WYo\g;۲l|8Ё ]hC?vB>mhG?ґs{8Qz9iOeiRնr"8C}9BZz"jj^؍Y@RBG2Ϲs(DA< 哨y>%\wD?*TWJU^"Cm.~- 0D)bi 'XAYD!o./!o.G$D( ,P.0As96ss7,(Nq/A8I7o^t0!2T3DK>*B3OfB3-%oIB3!܊B`-]44!ˎBq" DS}!H2"jސ %D"`9yGiH?J"Kb9--bF!&G;O@+Q(T.!tY*"GeK>%)pI`qBUQՑ$7( |!8R!PKM4k X)4^!ZB4,Z"q"'"nh"t. @Y*bH!7i8oh2`II;EWb 1!pU.WIDCW b *!L!MXMqN>35YbY-B[[G%nD`V`Q[R<RS o>8`B:bViØ(P !bFdBq6!S"Pt*~۳;H aո=66(ߝ{^ԃ!G2 !z"_}jEGy DI"Iij!V!>g!IG~1&6?`TcBq(UN>ʆ%NvzV]H' a'n@U(f3-"Sz+)h=:N/‹I9Mw"C߈Z_5 j_!)32)tDoo!kv 8 $P :$ET,H FC@ɓ!@XrASXфL}6ʺ0'+dѣ (Uz"ҧPZ*T57nq>7/BU&Ѕ6e٘e΅;}u F`tR LÈ+^̸ǐ#KL˘3k̹ϠCF*Ev9FHU@rc `rFHF[$RC#|{vmX=ݏS'8ꕗ l9-*2)xIaYLqc-L1,p'ATF&BpG E,K^d U"bW}P7EЁ,%`BF5$Owz6PF)TViXf\vea9t key"IAp@j( ؇P IG!bnoќ:tfDmTF@jEu!B9K.8L%ptMB A!mBS>ҡ"tS:T&J,T±7Ѫ*U*d`]4zP`OP_+k覫`a"tԑgRo*)D @E.mgsEGA pKLG)#jl!wS1=De,KgX-B%UMVD]4I&K)A 4Z=CE^O5v`-dmg{QSc-t{䅞iP5GQ t@Z&!iYL!JLAo@jz, 2?UVU%HkA(54FԆFkH{d}S\Qi1w/䗏PlZu %pH&{S&(BȺ#?B: "{q$s 5#BPRm!bFX ":5 Ee2e*JIWCYHXbY3 %W4,f8J\Xx*8!XI&hL6Vz+P8Є?yMx4p= J!BrRȤ/hR \4 &59? %G wIep 0+*7…Ә )N>jb!ja-Wf5!IAJ%7ie^B,AJ"x):im$XYMTd@j2$8d'Mc} HGJҒdssw-0LgSN_D s& QeHKMMOBƏ(C%JժZXͪV.xիTbSB ХCHY䔩HSOu2VTdTi^˽Mb&EMcLKѴ|^[O fdbJq䩍M_ 籣4 *Tc# @ p9X5mpglZFRPR=!IXKXw L+H%!'4]c@_bl^kj"')njpYkD*wIH&4 +5/m;l+a5g0B"{Ywg@e@c\wܫl("٪HH.1[X2/ #x.3hk2hN棂lB[)Dxγ>Ϝys6 1uF;ѐA#5wv+{vҠGMRbK*`"հgMŢ:lm]0 Zۍ' f;Ўvhn 6zI JMPkbԐh#.Mzۻ}7tNYzݽ}#%+.'NX#HZ<'] ,Nh~# /"yBn>8ϹK Cl>_D,vѼ|6߹җU\B(b;{`_ϫp\pEPg[zNYD. *>߫c B+RŃ(^D10'#Ux߷pcüaQ*GLa V'3S Ab =?;~!`^؂CC .x? 1BRHaqEr/!]Aq/}o {& =wI]`$Xudhx^`S=ebHUA!:]`鱁5PwW&Pz]ЗJU'tpw^~>p1w 8(]ЅڑN%AVc(v@ d\q^r${i%:mG?t3ijF9@!im!fW({&cqAf(HHR=ȄXeQxWN8&=jbA"Pmj&q=ae |GdT&xh((f+Ux/XW9S&v(HgYeR`Qja. ٗB1 7}H Ў!`V)7ejf2FዺH!q!?.&=x ),X(ᐑl'QB) &&ɏNPy[QHzXxGy{8 0 \yq ~ 琉]H ppy SGҖoI'_Hi"IȒr(q=7zZ| tF9 1ٓF [ ЈxH8 Ѕm8UIRqyƹ]@Bg1 |I 'mU`Ip3ribs8? [Y89%bV4thFc=`S`ZyKT0_X„7%L3_q9=dR ?HaIRēaq( 8yhen 1 T8FzHJ6p^UP QgwV9 AuQ .`w:YCa"[('}0Xn@hG"SkWĘ8xJ i P"{ FA(7`TИ 29b&.$=Bn!1~z^q$z6SIvGi*BZ \@/j"T&5=1z:r&g>[j]zc kk?є`0;t[B Kp{ZU*Y%ҷw1QXi9zXym =:||㊍Htaq''ʶjx1(Q!Q\:D;dCkۼ$W) P0Qak[U}KX(Q\ `Zh onT0?:& [{zGhk{ĺZ&ky"<rK `ݑ?x Lʳ ,Fؾ(&m4Kc 9ŭ['&! F"E1?+x(9qKr0]͇btLF1MmÍ-)ͭ} Q}8&U}L˪C'SݪBxۺ}Q=#]YS`ȝ\F"]lAp,j-%sCd%d"/&qSK Gmm R.S *K qʥ^>_SPgK,/]Bˍ`qvʌ l57ޒ[ <ݗd=V'&}S>w ;H ɤ(Ԥ@OyIi~A0LGAhw~b]X^sd"!bΙaݭ9N(^Nwz7ף筜;#i^sG˵۬.֮-ʾ(=Q!liA$r'Pʥt/tUNNR>pr-~n?=qb6⇑CB=wA AOQ\"av%rs]50ǁci Ln~qE-m1+g޿O /[>ttdOJ#H TH;[Pɤ^>uT POr͖!=b޸ntx,~t1aGa_XX-ߖ_ k񳿞E  .]l1DF=~d%KvыɒRRrd @HC19$K*)tJLWTS,L*͔2K^ʫ֊i  I=[lt-DG$DOD1EWdE_1FgL1.0BB @`X؂ 亨WB”k)D$3;p3)1^2,K)J,@|iBo.42b$ _bΤ'iSO?5TQG%TSOE5UU1c)jc Ncv3. <9q2KR|RLzE@ӤH!{2L3$=YJ' Y <SZNx/EbףISR*=dUfa8b'b_Y .Hah@p낊5EbMN,S{;%tZRuYz,\- {Cv7%xK*УsYJ^Kѐ'NiEk_$n;oo1dX@ . eWB9 )-*͊}J搖=EY:p9}Tnm$&`L>2;lM;% YB>try{?|'|_xK*`$^! ]y o9|J.GBqfDKt6Ƿ(H}zGdȆtȓ'䁗HKȃ9DY QЃ9Lƒ $I| UIBIɜɷȍȏLJLTH<<ə= Q;;؃nAW<=JIH 'ɔ@Jdʲ ˱ˇ˿L'4JL,`DX,PH~tAF^ŏL'LZh RtAL| FX| LFjLAtFK`ʬD jZ9LAȃhMF|͏hKNL͔PNtN4DOQ'|XOlOȄN̂EO D͏ PUH@TBIJ}SETFMVEAWT"X0U P'Ȃs7m8 ZS[S =TS0T UFV 5ЏV#@΍PV:e֍؃huAO5QNHVqUyz-<̐W UBā9@L=L+W}NeXFHIONdeSMEA͌}ǗVNVā+ЁDUL--cU;uB,ZH:hXPNԕX5Y@YZȄTOZٚeDզ}ڨ]H{U۵e8Sُx[[ː ΎL9p8PtXXʘ۬E6M ƥ۔[[Nl<}Vu}u%mW'X'$͎\ڎXD VxuеMO܈U݈MAUS'4UtBZMAeڝm蝌U^^؍HZ:uAjmՃuŠe5B$Vuº^^Z+MMD؁FV^ZXXtĎVUH@x`pP]RߐPȜx`` a0aHWv N X}DH#NXHP$Nm_ߩ0]>Հ^luBv!-㎀UN,Џ8R)FP|-fagM0au&BrU@ UЃ:Ȃ2툍]]WMXe-̯mܜ,Gb:bHP,pŒ55+pBu,UHTU9^uɩEeI^haeecNN5lTZtϤcZ|Ǎu܎pIt| M+EAv4%g:h}HM1peu5fmLq.dg~ FNtd&igXN=u”g7uƮ oZinn HP"-EAnlh8 iw wնqcG1m`knXMPpR " M\dV3`ig7p*_rrL:1HQxވ!A =ʠj5b^A ,g- f-:RYXqt6wE Ntu[.}](_9pj[ Xb/% mpaq l? =y[07K7٥DEKoie_Qnops(~Co'LqZ}GLE$gxý nL(+MUOx _NA5VHLdK/[wl爓tT聐fytygĸMUWo (FXFyG z\Gu>ʰ{ $J8nN_dFj+.r '{Ox2YG|g@Иu SbՏDƀ|sVæKX{rWІ}>Zsh} u}w7?@( N@0UsFdUD̸Ӳ|PXw%|[Now[mO &|DZ,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gENt̩bWW|jc ӨK:*5$&*(kL~54Қ23B8_U(lГ0Oj5{Ua"`] j'Sl2̚7s3ТG.m: %&8:d=qvI4h\#޿/~ BdmXq9'uy'y9d&/g 螅R*(P(j):jT0.R2@\#+R{ lȒʲ ,4:-G-"˪ŹA Q(//n^[ ;0K<[^p!)'n&4/x/z2-21$22"#D2&2*<4E}4҉nl3:ij%-tYk5]{6{4RDªb5m6qt] ˰}7I0i+8;8u!r.x|oY,9饛~E@"^){ ;#zyȲ"}칖ʮK?=%m*k>V3B_ѡ,7"od/v'nfx@(W@^T)Ӿwj]G.t}RU 48YpU zV}y1N0`J (7P?!/o\T>ЉYh$ U+$,F5b Xc1$I-Da4±yؙY,4C2ҐaAQ{RarXK[$;#uIAI(t% RW2%b!Yr-*-! ϴ/_ì 4 Jh$ Ҽf4KR gB(oTɊS* .P B.CTB -b*<B>R):^B?ad[x"Cl\H'B~N,(G0:TqsWAO|!T"0ܳ H( v$EHNwvt< ` >) (#ن$d0i9DSHUiyUXҤfFln&T (x ~Հn_! [ #2@^uR,`mׅ,HTU҅X֯HHf6՚b"ѪJFHKY.xUBW"$M 6XE!T.൩ qꪶ!Pq,}! PP"kZ.| ׽~$ĕ &@LLI`5k*-r0-1, Ӓ×A\Zӕ3^`QT2 $-oC1ц@vBsԃ0Hv d(d[&Cd d-z,##Y-]~yR ,)\*dYhoSEݱd ۝^Ao42JND(0Aj耇-o(\):;T]噻->ʨZ4@B0[$%L\L@(@0 ,Λ@@8@ܘӿ1:پ,@$\Y@ @,Bv9D@RY^ z5$ڲ@-˩J~ Q4 %ыB ^ 4@ @_ha&_eV% )0)8%Q%%#<CB$&,\%A0*bA-h"'zCPB$* +8tbH0+B"..*D+RA2D!! D""ZHPD)TB!4B5Dc!c%BDR##(@cCUlMaM0a(@d d5La ,@AY!Xa`AlQPJBAbd?DҝW :C($^LANJIATYiV M f] C^f\m@tDxM2d"p%\!.1JP -@K4A,BA$$Ď D.B !?&Dc>&dBI$fx%DВ +(X@0R6DWalf}_B&d A"mfDf0Ml"m^cA+- F*T+mAq&APB0@B+A+u@|&-&7JSDD%8A]S9^S9*D#0}^@AD%Bd"}iA` DzD`oѦ ]}1@Mʚ©`lE+Nz^ʬY"C4BHNl mZ"Jz2DX@21!ߛ0 DIPpsR D羒_wpL@ij*AlBiF@ h+$, 9s0@s0%Ђ)AH1Ӓ@<uZccp@4tA4-MqsA+AAT3\@d+m ,|A(x>"7<5ZWmhSQO4)M#ca_" e)w@"DhtL!@PF,HB<7BCA^<hS49i d #C8. & 8D&tdY ŸX#<'GfN!`5QPy۩"F)dM4it'U0iE Mu"FN7 !VbOJq#>_-E5jt> )+OzI (œɁ>~@y.QkMf!qk9Ie)$R@H^*(2(M<% 0~& ȕp%=sRnSH|O·,mB'#b_ ""#0AN :R `%ŊP2(7 ҏq ɲlqQP3zgvBtb@.B!Ll,#r ± q)Hgqkt߱ Jj iO9h2S+(,e3vH#O#5O^bD [F\Ra "b y!j  ;x( JNd@A)Ub=hNBn63ΒDj!4 "qu+..sk>yb3"0u36 Bo.("3v!S3Q/)e7,-ia "3wKm!9/B)"()?gjH <"$č71/~s Ea\!@F7K2 \0Y#|JiALL"q)S!F:`Oi!Se BF>$ r'H%5S!i M p5N G?B C3SѬ&ʯ4O)ޤV8S5im' tTFi 2C*!uCK!n"&[%X(A4 @DpJ49b@ C.nR^ 3 b@<:]ID ª 6C"FD]óR$hLHE:= NEe \`"[}* &3rS (R` BGr![q,", "UCK > g igeR)n)>7piggFoc1o-0(f-!)pZ6qK&UĎ# <R@ Ġs@<׮Fa!r?@>`~bڀ Fsˠ DsQW OW!$ D@J@ ΠwF b jW_wwxx"C8m|t9iV!@ T"(J}-w:@@}| РH 7/{Bk7)(hMRsj b5?u/tµ!iq+k"64W!d+1BFmV!NSB/вBXU lb^t!!)A  YΊ N<& )֌xgHQmX v,V(4.I AR#kGh qV&l9tZqQфW '7|9Ԃr,X=9x(܈[T3x$l ёIҖ DBÆY֘9IH /?HB'STtb mB tbUW eBGySX V) ⦎iAG3x ~E PNk)DEgb˔9H{2.^,CA뒣8$a7;NcIR"*se:I΃T= <:Y ΑFwIѢҜ'Kx-!ή2o':ّ⦓bRt^44ЪBۑ9ڕݱ'" Z HAzأu@;?Lt~zCA` p=;9چYX,,8Y6[ù3HٍVAMN!22TؚYZV0L9Y ,cxmԤVUitEv 8CEZX,f{ >CÚ/B hеqX˺; 4;q{(䎮o!NSvj떛ʼnBI%k:9Qyã%SFE iq;9+`E0k "Z%CˌMTC Hk \['|+%9 N<8<̵՜K9TG|)x-I' R1|4$ip{ 9wU;gPqHeی!l%.y"z b`wqf"ά Q @Q;۽M AXtn &Zؕ}gJ`u=ڥ= h "=xjn"X !!X ! :A|[ՄZlyQ/s O<19)|/'Z%]F[`sOyj Ba&(\} I \C }艾λ: bиo%ܵj˗kkZD{ };!e8a8!H֝)'lPh!q=&ZtícB/ɢ~)-17 $?:~M1#8I@a0M@HC=ImHX:xf@`Baۺ} 7ܹtڽ7޽| 8 >8Ō;~ 92CDOnaX VIKQQZ6s8t/73oqс HI$@4U @HJDGucf4%݀T P^H@&F(p&PEZ.h> iNJi^i&r1rH~H # +,^,2s"kk lKll.l> mNKm^mnm~ nKn枋nn oKoދoo pLpp /p? qOLq_qoq r"Lr&r*r. s2Ls6ߌs:s> tBMtFtJ/tN? uROMuV_uZou^ vbMvfvjvn wrMwvߍwzw~ xNxx/x?yONy_yoyz袏Nz馟zꪯz뮿{N{ߎ{{|O||/|?}OO}_}o}~O~柏~~Oߏ p,` &GlX-&AAl$, ƒ,l B. jpP BՄD,;CH$?<ſ$1/ 0x,j.SKLr-qdHDY8zvYCp!kH=:ڥ JbPF@Bnhd#mHG&B <c%R|I(G=|r{$8 Op`*Y򖹼+K2v,e9L*HJgk+ 2SWflLE.!Ia+ltHLD/m檛 \* E PIt P"tE?9Aa~3 EBMڡL@(Gv.LZe:2 Rh,B4B4Cl0*NP4BR**-ZRT3չ!~5G{B0:a!J$]_PV$ ``[BB-it+ʅ8d&P.l%y|5PBEжVP,-]kgv!ag(rE #۔ 2Vh aDvJ ăHJh yQU?Ct݁$1MI@|2 D0B; bbT 0;t^dZz3/x7a ܋&hnSc*^tLLȨraDa<Ȅ," =!#)WY W*{2$`Bʌf0Jfa|x @sGD;{E,慐>W(4`MHb,u#bi@9zظ+8bh -4pIvרԵ``XPHaT@0+Ylf.(JQir Jf&9B*bՎ2qxBl ׶ޗ"Ta֍5#E+ .ҝo;0S vNX=2 )r)!yc1ѹyn f@$1G`[,F,Ԡ:N$[+87C>l{{HrNu\%ȾQ)32@t>JdEj ͣCyEK0{D ,b&{1KDZoo\L*uQZ""|:KSy(K0έχ^{IB$2ؽ R903 !(\zU*I ΐ$ "Ew)Se,~( ťb>vĎEC7T;Cv'J0*{zs̤ݵnwHG (M^Guf4J.mG/wAy}W}&xw ႆ} h0HG?HDǂS ԀI`sHn |'hrWoa8ru+hvQv{anx|&u @ PdF :LDyxM8/"wCghai_DY!%qh~UzU]̄~MT qrL5tVHZȆztogʨ(JH8RunF7Jw{aw2r&'~GAb8]@IA4oXO'a{qHD;Ljw%PMHWNjOh[v1Гst1v .WA qb)"F 6r _XyH}J4{L; nJpX^3 Aw {u(Hxv9na8^|(-"tL(Laǖb~FI8x "76Qi1rѕ5yLؙI*@IuW`z1^œʉm$&JIljTHq&uPsXpP` `(Ymqƍ.Qyq[wkvX Q hHx]I=;chHsd( 8V^se&]f,9JW0q&^9Jyo"Iu/u*>%oŠQjyC ÕrEg9 yBgeZy0;WٹI va7G GI#؆qg697Jg92ѥ gp' =W"1"qT3~a kʦ  n*YXLIYsXh1pFR񣻇S)Jhy K*_!aA_qʮʮ Q0:3֘Z6J0P)ZJ.*J̧*0A8T{+n>J1`#K%K=:ZXJ IzA`Sz 1cM AsQA_5- 3JyJ mzV˰ta%9{*1sgpy'JPGr! &Y5T=\Gb) pG{+C"11嵹ΚtKϹP+j k[810*BN.x.j7W[{x C+wފ-s*Q+JI}+s!ZG|/y{܋ [x[%r)lv:ݒa?+ۏNj=˸" 3_ۅ~Xg( *heLEy$l;q}2CVLAL~aL\10Y[[(W6ۻJ2gj֨q{}H1 Q= x*x|\{+`!5Ȋ|np,džHH :lGV fzQՂhfi;TR~Q2^,j(M 'qAyWwIZ7XiN M!,gq)ӽNџ u 68h ?7B 1G$oG)~ `Ui~,1]@  % `U g'AR<5\P*^6E҃XPp{ܐnƫi?6c{'$}*]MD.W//0kXAx&.hY]o1$JoPƷ;^؋OՏ_%1T= _?Td]/OT%Yx pDq(EA.d(0Hņ8!IUa`  jhDt YM9uOA%ZQI.eSQNZUYnWaŎ%[(C"E'ǃ }Zh, e_&\aĉ/fcȑ%O\Y'܄5ogСE&]iԩUf-t@ֱeϦ]mܹuܘ'^qɕ/gsH$uٵs}wbw~yկ*ϧϼ{Y{~K}p^qOTpA{.S *qDK0qE[t&8(l "!@<04H$½)tI([?B.DeHCXGGiK1(.lH OsO>=iVŧ@̩P= OFN#?dO$ҞS(C1TTSmIbU?LA*HV.V4shW4{mYcN";$jZjAU*l !&nOU!0%p"GC"uc'|WUU` =n::GXj͊͌o2Zɦ]wzju) smz9]Yދ:w!m杋'AB[v'Hj ٸl'VnX nҩ0)l4Ǧl4϶duL坯m(AXWVV!ewpV3ל L"/6}tҕ"­W%&Xȇ['y 6NA 1kljnSV\opIbgsABRď݅Z5ؤ=z@٣yxѢ\JkeC(XDhAkh-pq-.$/Ĉ/@pAFgMs)0@ pbSU>\Dԉ$ğ<@p+K.Iʋ,fV*)s#RQUkE7"Hs(_ @:z2U]/ ĘHI  AB@B|)]= L)TfV,OZԃ I􃁘V jFO24DjML# Dh P0 y[%W$-˚((`wR @"0q6NП&uVeo{YЊ~90WjD!o+eUp{.A(oR<SR&}M. q<4Z]dKzVp2 ^X;|*_^$m= @ր& #υ<0F̣" =J?8J]47hDnMԼŴ%x9` y5"ʹ0DcD'ZыVB:b -P!>(VrT!6l MUȤTKiX2椔[ES޼\RΝ0B{=gcԣyBcCD{É 7au1& p|}mlg[$!BOa!xl2[).Qx[wc-A/A[ Rj 6l x Jߋ12ж=q;i+D=MvkJsM&wfx"y8F4|gyӝt7&oT[&5̿LVx"\9v+'=X)-Z59lk!2u'^!=Zpi C)1M7kVݾ~4֓ƛˋ*f;m{>2e.y[#Y\H ڷ΋-?Ru=!x=Tl?Zh}~AɁϐ/ r_C7_ 5F,j1= c)Ӕ?s=l>#@@\< >м?55ZRA3&6 \(<  ` @&lB'|BA* hڑ?pAВdjA# $(B!B ҮX%B=C>n{ދ4'HldABâCR ,å8C4 5Z~ XZ`7ÐȻj>R>EYEB¥L[ pBW1k3X"y9ŐD4DwŁx=L,kQƆ> 9jFZG~GG*%paE韛\ÜYR DFX)!x>XbZi@- [6ka:X8ɓu\IlI!bGpǤGpJ0G@IOɔS Fd 9AVг EB?Jҗ$芾VJJDA`@#̞0ʁ KlD,+pIKD x20D'YalikMt@ɔfˆloRqˁ$P|M،MTL(̣8LlLll \J3lLL k#ܙLkN2ͅi@N M#A MM<>Hʕ1G \m%lNFMd9OP I4X[ɀJ#|y̢ @\#pņ7"GT섺.l Q>N ]R&mRx@EZ  $1S2-S3%T* :vs \@82(8 #(@SOKJ?-T@@H"(%H;+<ҁЅB-T8]"8?NXStRQURH*u,12XShS&,U[U\5P^U Vh€tSUg}Vh Z-k{ ֡0V@}%VqWri- /hv+W fif9=,rW~W8 l mע`Z5X]XE &(؆C`WXX]X)"5XmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[=-ȚEA[õ-[ KXVW+*dB=[-\xE-ɐ ьǕU\ͽV`Śˍi\9(m]׵)q{Bm6.Q]/1])*̭LI40! ` ~%9p@Dvہ 1Z4euߋWYiPȥ]`1X[ef}TZ|PRmG󴉏鑐鑒>aI8[ aQx[i05!aVʸ(jY^b&ذ $!PQ]a0 +{b{0122:ʗ|bAIա5A,,Q/41N2DQdT~p:EI=HɨA\M^Z e\]cJIN"4[ixcedV %&fN–eoUZ^%b"'qr g8gZiPfafppgxy`Mso>hRexRS4Sp53J$J*Xx^TMp58285x&PiJJh36ㅀO$Z` nG2$dÉ63iO$阾i&$iꘆT63&mIhj6 3pJjv>|[KP& jEh@rB'.'D⑂ԅ50h5mx>f]X0B7 P 8F3[.NINja6cv'x.>kM&Fn嶲Ӣn{[paȴ&*پ nenf٦m([2n^ʨfX>9T) >q mBoJA м}^Sq/Qr!6 ^Py"nU6^n)wo$G%g큘01o&r&f9KognBLEl_48Lj@r f8+JףDi P;l+FqRO</֭CTsUR-)0ޔ"2GpkHdO7G2Ĥuh-C-Wfu- aoS maoLbOvc2d7[YY#;g=u`)w)Aw[@,aPju6qpġxl8/HRox; Iu80EO ozG -#6c/wHrPxoq'QeyGg/ywHh^{w~y@}j]\wnwyoL}G0b~C)Əwx9o82Zy貅pz.c>"14c5SP$g eSFZ03m4Yo?00תgtU{vav!C{'?w}җm 4ѿӧԗg}`afOCb,IsvO)o`T9AWp`z~{܏}}'bt3 Dk L`KB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&͚6o)E!]x.>*J!NixS1 KPu)Y4@C c g¢u`s Zᅬ(!jáEL+T*TԢai).܆y-#kh݁.7+Ăve]Sk֭xĩ*؂z0Ep_+Et s&q "_Ǐ c[MOT" 2ؠBRXB>R"",I@WP$54vEvQ-%frN9BT]ЏObVn ,zEd+ T U GՒX)dFRdA+zِYOEpJAYB o ,NsIOVsZ5YL: @BڅI~ )~T4 +ڪZ+&ġdw i%EGulTkA*ԗ '_T$BOJ%BSSۂIUUnC:%gAB/A:5/NиO ;PdJVHSQT%%E~>\D;xE@nڟB|:PP!!pIZl}3e hC8 ](CL>BE+?2"T,uя4")IK ^Bi,dE$f&up t N5@jTs4(򨒡5}l A )GM9r7HK},L`\ $F"0z/Y=B+vV4(zZSH}䖼C6!rO$֕{(pGqO`?_ūdlow_+07sS<4w|YGOk _]AA _ dQQ_Fa|h_D Op` ҠAJ_VXKYU!C]!9$`MLI0amЍODN6VD>NR`1,PQԅ`T_`I)`!!"b"(,B$FbJ) Y¡y_\썎Ďv+Hb$D@+$"v<(P.B"F׉dD&2#9q}5+.B,_aA` CO":c;+ B@/ D$A xxQA@|9@.A#-8B\@,$-lA\A*ȗCB΄v٣JHH$I$FAGFLHIJJz4Be$ANv5DA $B%AdNZATTFFHI$vdϴ AީZ-eBx;\e]t=D[XveHd1SK1dNhz臂K7DItnAB0@D2BK4&tAĴLtPOg@D(40P3ux&A?G#L7uU;5B8C\t6/U{e5T+BB4BtZue2B(@8J\u".B8B_]6B@7vc%#xA,5;ve[ecvfkfsvg{gvhhviivjjvkkvllvmmvnnvoowpD@!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 $$$+++444<<6B:F>G@JBOHPITMWPZS_Xc\f`jdmgnhqkvqys{u~y}•ŚƝȟʢ̦ΪЭӲնָؼھC H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞(H 3 NȓУسkν̖~0 |yD_Ͼ% Ͽ(w`~JW!6F(ᄅ0@* v (bPf -8,0x4BW%1$6 (o?B-܎-[F2"rR 8p%Um5E@(䔓&iOt& q?LeIsĭ1].;VD2mac(SzvBD\'2^+O9J5)~GJP,|S8޾i LKrGQdz`EekBTl`.;Ѿ ?I0HΆ" J 5 ]a,]I R H/Gf b"z8eH*f P,b}0pPt;PAeKZu0FGmLBEٳLtCDlʈźPLQ܈(QC+?':lއP0Lua "\,I(;6aOG̐<Њg1Zژ0T )rΉ"eDb]f }(8]JDJ.{*dYF=SX kˊ>IKi\*t_9#YH0A4KƤl5Zs"'Za,†KZ׬9y@[K$o,*Bt f$!pt#n[H@]rZBǯ,~@ݜ,&[i狚Ak_9† #f2֡ 4[GZ#1B̀ s,oB%`_<"Lsk DܐJ66~Ib@@@X҅m\Δ Rv"ʤIPšKI x }=1o8#]Nu-'u@ 0 X` L ``hW 9gz`!9lCb$LN8WrL؀D'00Fӄ }.afN4fv*Oy,@ >mhbx,Ŗ xÑ6$5.q`w)yF;9: PwCPOT՞9G@U{E0zs@1[bȱyhK$-gJ$!W 2O7†4s+4s$A,  <\Q}H} y^R: Cdw;Y}ymYCreXNs/z3}y;F, QAsGW~ x5G'f a~ΥgWqG4>!c{ Avh" '81}*f|wq'b:}ѱj$e2d "qx^G(%S%:gnɷ'ggn,KX&K>xD(c%Hf}UpDOXU! "Wx `|zH 14F ‡RVy8s8$(1av 8$ue*^G!cw2!6zPo(x!z 3!Gz'%lЅ Bta(xreV(՘ MX$({׆7Q%{ŏ=ՈWjra9cA<9 b-up7)uQgqJ!=8rk^/=ՋQ K(:1loMQbϑ블MEDuL>A'a w" 8XIؓaxxх:e46Wlh :!-A&ᔀqrx)Y~a1nxwzdȔ "$iX%*rn)֢QX#]YGJ^&@T7Xq(?9$8me Ng=ukh)29ACȉ"B3( (VI(tA8Dr#I1`vAiz|2I%'Ut'Q"jIُ:ЅYatsSI^ԍk8w Ѡ a!"gI@yN~"*s:@]+Y&9b)K"zV#j+ kh!W& %rB$č!汤 !^zaҡ Qi~%E}(C  F?y= Khwp7*vA9%tjj_1 y"fPIV$TS:$`6ؚ39!qQS*qZq(ֺwPÃdUvhB9 ڭᩯ:jО348:t&u&Yc+'ʦq.1'kSF̈_jR"/ A }Q2N!)ˣCre kRaj#eî$J[Z?{YA{SQ`:[V a'j\x"C+U' ~a/Eu;U)qY"'afe[U#FT\ ׯ\(§;G;Ip"W+x[`-X&EQbS }m ;$8a`j1yd\91r*ħ!Rnּ6JȤCKUOS F# ";*{"xƹ̚!j2.1% /|'1f<g+7ۋ l|"v8xYQ O|(Օ|xTJ[hٷfl[(] Xdz+1x‚ |$drP1V#;Ðz;;|- 蛽I$Ɣ7gėBz<OU\AYeZ/ZrF+XJsdZ 15(OWsX,|~;^B#9@VBL#k+sF$@l I#J\& z|< u bTj_ m$pa<܏ Q#04k +xD\k+ a1/T! EUP!v F6Ch\6G-:D"o[D#& e]|!'4ʤU;ѕɡƧZ [>i9s]$+|g+o) r1`>)26M1Y˩8LLŸ| 4Ÿ(M'x cʋ:4q hTlpM ^a@ {h&Ea\[&k0^A$/m[#/3`&U۪ 7.V4™]baK\#}76@)oJy>ҔgdQy)V/k4˷er&?;<-t AOCu̦ jD2R-;U_,aY˝[.ՉagY wSKZ7٩4ҚȝD3V0ň}A4R,qKjdT ]׏ϼN.ׁm/4_IV8pM@@"`P‚]B=1HHB0>< 0 1%" YR"KQȌȢ8Cܩ';Ɣh%O@ԍ&JJВ(*TUXe͞EVZmݾW\uśW^}-KqE>DW jz0{EUPm T8.i>@%25Q3N;o~htAIIG\}yb ede08 }/xzѲuo0@$@D0Aͥb2s)4>8,); 0Kj@('7*~C2#3ʡ(4(%iDt6,/Cxˀ(ǝ( 112K0'$krR&єpTQ&5]jq(K+ڔhOzB멅֫)4RI'RK/4SMC>BK,H6Ȳ@kA& ]Jm(3 PZ5dըHW:z`~<+0z"6S%R/\ձ:t W*Vh\iر݉W)u(d6p;ܗt{F^*cĽ"Q* $8*C +.DfM S#WYd]bd>sE~d8 A=ozKQxjWdXqR Ѵ˸-Sf9AL*(ÎH%ؚPȎvD Zc>AK+y7+|{2BN\r.#-7ȋb3 z)MrAj 8>v]pݸ],M?!ˢ|t nAk9b!FnϫKp2Ap^łt2f7<ho 6UCDE*K-|@֮S,Fɨd-T_=W`ouoY0m,\Im7χIj}  |rc'/)p/INE~'k'ǿp2# {y`#óh}SFP1rPX# ;'? L:+L++{]3{1/BҚ=68$,#{ ?69xć0ÿ* n9{íٺ(@;i@w? XYTdA?@+([+F$9JųłxEC?pB1 (|TmQX Xd 3&62s S:5t\4&a/?7JPF9,&JsX8O sj%ŖtɗI nd;qK?SL5#>CCxK+)U\(bz+J`GsCLF[JKB3< B?G/+f| 1* ^(^AY8ы)$2 {.KC˘\pK`LXd'Ĉ> D+3 c͎ ¤R$,X ~4㬹C!,IB K^xi, l̕i$䊤< HLT8F# NOZƓKn[9BC qNK̉B2 ),ޛ LOǷON8JPc b/Kt eЈ0FHDGXhgP8Ђ(]&O#B0^DsLXE3o./aFq[E4I<5CN ΈHvLэPЁAЁhӳI, ,RM#!2E븲xQTrq͝ԏHLl6=I-\MД̈pP &0\{I医ÈAUܒ;/_E<\ S#ACTa3Jӌ)t}-Pc N+߬E=%jG=04GoJA(z s[؊e)'_t ɕXzJ}R~tď]X$YH~ë!Y\Q9 ý B94U G; O6ܿISXH§Kl0?KZS'#OLւϒZ`#=*ظ۹ZۚQsYIM6ةYӡ+ D%bEl$ dٹ ,kQpYD`Yxr +KޱPS}2]+Ot@WrɥU\N}|3h  %\B9ѻe A9ևԸE-Ak N^@@tb '"?`3]FH݂unTҢ {(dJK_5FaK?v5Z ȏXC[! 51 U-Y`n:݈u’ W vl . ubx g %5Aʼn"N;]PG_;}CާI>:6b46CFIݫ= ^J$ތ30Z#E ?~c%d` bb]V 9 vAS-փ[ЄZUwɸBR;7+<ޅ QصYNaW J6aFYf;%G+Dpg魮6e<)3 Zce}D&p` T =`B K8/([qeUH)օ8m d8,pa& ay+C=eY& 6Sq&6o9{fJ*f2Յm 4~? U`=ϗ^^""JniAi! :BUae<*# [1el_8c |}.4{$>Hlp.kاw=Ff&4]C^"K@rde`Y&0 Ɏ8e@ڌ}*ϔHK(6=&6fh~H41'*K:?k86:GL_2j(M=K\\VWR1 o뺄e,8$N6l@+.5^c% .U3_[ζV<l(nJ s@V !80a^ # ?%PBo)Wў-"r҄~KT)I4f7CNii6=PCP`2~"ƉpP)A?ɐe l߷*s};3mj9JIQ&l8VjҝT 0mˆC,>B#ĈF3cf왋g\BhDɲÂOﭗ# I sp3pN,iqHe@!,)fϻ@3w  %L0%n( &!&cƉf|u7W TPT2ɚ׆FJ/Z ^(&PFqw `l"e0PbctPs awqX"ptH_g/g<7I&"P`6.nYWmaHcu譗Nj/6n|a5y%vignIuo`)"3Ab7Ⱥ:xx,kZeOiX~/z'\/"̲raƬGe {"@ P^@+Y+mgTbP@,HA C0谠  xhK 7rPŁ(rBWlP2PQ́9@>$ψl`ԥKG*J+CO"0*@& BD06;pCxFf~(@x䙰mٵ%*^(zgGde'y}%bHBYA)"-"18#5# yw@sBbALVY^V%p[Bz5ym%utYf)W-cv @ه {X'DXeo@ZQcp(^BL %H]tRvth tx#*:+z+gz4(d h9meepI6@}%"V @n!E~b܃Ǖ6hm>GntCe  b{9[9%_u5zK&d<Ӏkȗ^ ɑ%15|393=L!mV /fI[!e;tof=6@,u1P ;P[4DuGU@Rgf=PCe9 P4jŀ(E2%FD'l ~-;Pu[@ ٢-ѫ:qrN0 etf8 qU; ?<G]<` f@_f^=зGX@Y(Lt*,Aj>-`5 L{נ"}(d69w9)jp:o.^'P`P[NB|I<5‹rqH0s1@^01N|"()f :@ 8,Ё6K`S"" ! '8.a&%8xEDŽ Eg=D @,q2i,HK4Vp`H  Ȓ!#CVf?p'U4D`Q>&8$ IO1" wh"m%@4"` P1t33̏gH&% z@T'@*Ё}I6s{P@F(@.x/] h6S ppt2bAAH`/ڑ#,HF8"BFfB"6X&hP`0J]AJR!П. ADSІ D*VX (U)]f3"&2e[6>&ت9]B+T&@HMU+|4? I"։`X$9L=(ns򶷾?W{+Fj jg؀'h@-jr.x+񒷼D2bV󲷽}/|+ҷuⷿ/,>p֚?3~0#, S6MNk s0C,WY/S.~1c D21s>.//F>2%3'b2,)SVqO2+s^2,f O3Ӭ5n~էd7ӹv3\>Ėz3-ADŽ / E3ю~{+JHSҖ43p$4C-Q5NJUծv5YӺֶ5׾5md\>6e?y.-iSqHimsl>7ӭI-~7-ywF,} -3Azj3w% bS DsOpځ&?9[m3.9cN)I69sv@:9Ѓ.Z%C?:ғtK:ԣ.u%-0S5#u$[.vv;K -Q;!vӽv%$w \%y{ l ( aw?<c(%h +!ls>hZ{CfL|]r;/[{@Klw _/kxdľ:Q =$4 -~ܭ/94~A@bY>! &H6|?(pq%[BD>@5%L AQj Қ 4 ] N`Uy F ҠV@`]]la F# _ F!EA@KPaY!k4@0de,B2|%46B]<DArD!4D ȁ:bBK!6֡K8A4p`K\B&%ȁN#$J"%ZG`bB x!<0AGaDA8Aa!. G) J2.c5a܁K8#Acj|X"le BA4^LG6v\E GX@;B r8]9cܥK87$!zDA] MA2A&F,d@6B%H#l%D?ʁ<$c>cB_m865^bGB0#O$5BY@!j\1_h_G4|b(H"NBK6;.Jc>eMPeY_;fTB He%h4[[rDBH8jUf%mWT`4fe^-A@Khfqfjd;*AG\B_dBe>>a(`bV&"cV"GئGf;BfVVl*D\_>Ndh'jiډI i&&tV*A5$G`!!&Tby'=czB[eejfy&tVSLAvjF@l^ffG 2Mrq`g,5Bb~@}f&lV6BNV@G3 wf!z(B4zċdj`@# BFETgt ($#]ܩF(?2_.i"0dB<(D A @6BX]mhㅀ FBmqBSB-T<.H'#4^n2-(ۙ_NjhZji^,F@ TjBpmv0A R/ nGnvn@2",B L'Žof6S:-ǚFJqLqo1+0'lkr;z00"G%.3r+kG,-o5_x6jr_F*˱Ѷ2GFp-2A3911b??q1j3@t?vn11"*+s1s Ć]KP36wG`bK4mj]n o.2CW4KHhBܰ&sL]2i8Z@r `,41rJ@G4r:?#*dhGwWcW2,6qiCj uZfc/]֪O/SBn3OiD4nDc*0e5kve(;-GHDt]SWWelGdvkoymB-&JP˴+uh%NG=+jejpmb71'L+Dv_vܥeO7uccW{u]vZƒ!F|u_u>ĝªrhvMzs.B7iVW%/px 8#-!!;u"F<}s{r|5w_UInGfA8Vm쮝P|kzv{B@Rr!u Hn 9n: 掟3k'ČWY^3% FoywsbiA @/ďy{.Df&8:Ķyv jKzB l;v~8>:Fr`@ .+fVs+<"ƨ۱nuy;3r+D{%ư :lg䲾#3,_wC~,:sFhoDg5ΦwxGzj:;{VFLݺB BŇ;绾F{l5Yq>:8s>´rnzw;G|;9k`~yq31Tb@_)7|5 WǼHKuK緾`~_kB9o@~BH#ߢB8w 4>wW0FAi̸/?Æ;?]vkk!z@X B%TP`AF8bE1fԸcGA9dI$V0rCsVƔ9fM7qԹgO?:hQG&UiSOFYBժ1.RjT_툲Jv\bm[oƕ;n]wջo_E٠G\&qcǏ!GxqǑ'WysϡG>zuױg׾{w?|yѧW}{Ǘ?~}׿ P ,LPl!P ) 1P 9A QI,QLQYlaQiqS#!m/ o]̛zosW^OK_ҀG#Z!֥WeU]"+s";HI?^䥷ǽ{E@QK Pf%L"["%5`$'P&I~A)& T# /ze3 X@9=K!SI{2gCK%DEN8h!_BE)Nj>=k!]P5׫H%@E#@)E="OAUDQ ĊLL4!]}3!#B.$zŒ$ 'QLcH )"d]Dq$ԓ +r"qK]2KI8 .bb% iM{$*2Jh 1,?r7Kd[X%s Q&'O)1!RL\3n5ISL2Nf9]\g6P,5IQdݣdPH4!B.JOHS#v\h3$\RIST.5K+IKPvZ/Ĭ&S3Ԟa–Hʅ#m&SњVɩ2!W@r}1cJUwZ]VՉT#ER91 m9dٕT1Y“}Ӥi%ƑgnpEb►յ.t[ HE/ƨrjlj(9ioM nRk"l@#>Mj.HH"$ Ks/##ނ"$%YL*p1,$ E&bH"( nM#Dq6Gb`Pc8 |8 !%t.'xQG}$ ۞ PQ/'#2˸#Nb2" B"(c:"&,Q K٢}"P) a!u(q!)r"R|Q!1:0rQ"Q$1"t`[Q$c&Tr#쑿 ]L br'ܒϣ'b/!) R!L)7K$\Q:db+5+ٲ1-, .C./ c"l#ro E՚RƬ: %MB13136e)"623Cb"2 DMK104G0#ʺp$o%gp6:BH N&>0$1*&T1(}P3+^S 9 Q6W51>3?3'DdAt@;0f2$Z )7|䫥4A)A9#h+1+Yr?=Cc ,@7*s%&m3 rH⇨q#ꤱB=9S$,t$J(XTE?HiBp&3DJT~K4.,@ ?CC° $q/3lI4$#FRs$ؠ @Fe LPgkL#,}@# J7t1J=SdeR- aeH)TGVUU2r`O %:PXB/54=>Ut3^UUT!br5I rUt0p"`Zk 0/tʦQSCT]EM@-!2!2m)ZIKcF[#`pv7[ 9;bZ# /CN}HQ St" LP&Pnbu6FNsF1p575;]iD-D-IuDϵ&5#VQհu6!8.r2'xӆ$h1,BbCaڊ5!.#(Ɠc5.i%Ύm%40rΓQ+U#P+c>gf6?_r-?eqg1"hSrR`m)Qy$x7z2*5"^sT,@K 㾕H@3nO_.) L#/8jnr!D@ t }THłK4'"vLvwh݆l$mG:D Wx|5|Ckw!m) %+vA\mu^vNT3u$z,Xv!YE`2ߒ^، 87wp'" n~ݪW3z6!W$k)wrj"|8#x.  8! Kk.7!2Xx"1VmRz xDYJEuy_t^Iu_tyTف+b&.be2Lz"VܶJL uwu[N~I؎bzp䱺߳ʜOQ6Ow#{c𴥬["^he6se&lu Ɨq˖`w{W` `>˿|7ܸZL;Sc&"X`#L|G霳ɭ`X"Ol(}YuBNGYIQ [#~h|`|ӽ=A `@z$I5_ t K̉W#@ũ9GOop5#lz7tpؗ6vЭuY ϙ'NI"ɻQ^] ^OJӵtuy`PC"EaҍbuFS<@)›G3ٰ[4t)Yt5uYpbMRsh"fc|kBSŤl"S6M@ VcOwY)ؿ:;G'|^","ruLg(,%?,uM+hRGS-$79u9ٙZ[e]R{6>W?'v`U> @Fj+Lex^$_>,'(yG.>>0kcOߧq_YvH5Rj3HWTe^!B<0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4koFk? qOLq_1HzFND؅DL:PoJZEz0  a;PE {QIPeb@,8T@j2.TBGC4G%.K_tB2/I 5C$fwzw~ xat F` vAB 1_DDQ@]{T:a'ԮUWD %Cz(pUT+dqiU2^TGt;i 04Cj׍.!Ct/L~O~wdI(p6$@@(VV@D.S1)#SB$puTd"[Ch4Y=+Wu 4pJ`$vVC*/L^s.H"w; qD,mVu" ;B ! (@rй@."g `5X`Hn7tE]fM`stCIA<q3Á%KyGnʈ'? P2;AɘhH h LЀPdDjdWH , mMDc"sfb du㟬? r p KЎB;HTj #ɶհ%e3r? Ѐ 6܏l)?XNK'rV2MzF{E7iTtӤYE"!ﴹ.!$! rNt:H 2h$>9IS lFLju\W օ?@]%`(ɨ$] Rɫl JLr:Ya*4r2.Q ˈNAM!'S).D 5dlv"ٰvok1$Ph,lp9H *$uWF6C@!(CTzsԎyӄ.FCc,F> AY @bftBٙ8lDރP|5U50x$.OBeZ@] h`XX$BbdbK RZǂ-/C3]Nbv_F!?b!sq%J#Җ.h.%'}SkPzv 0Nb sJb[eyX;1(H,BVӇ(偮7:PU:@Fe x)@z`eIfėdT9#JDhy|:Q+(` 6~"FW wV@p j`"a .p>v'*(+ b Lɞ )Iiɟ *Jj ʠ  *Jjʡ !*#J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKʤMO Q*SJUjWʤ[\X*cJeJ>%iThf*sJu0 o*x|j*J*o %Z **Qoz Z`s v\6ѩ:ʪ zo'f `CoZ3o4u1ʥڪꬠo:'6:jګ}s `j:Co:؊QP1ݚ7.pj2a㚮jʰ ;>  bïzC+ 1'ojڲʫ}z!;{4qA{zc)I{10o|ŴN_u[|3D[3a+JQoz,_JT`q `wvu{a'OS0 |k[TISPbz s Qи @ a k۷{|[T`$rL  jPP; K+nO +K]{ۧ{ { ۋ qwo:[ rQ@;aoՋ _`% j i oyzP!#\ˆ:(NˆI  0 #9 ;? |3\P@ijtp P=k r0z 1 w  6msL k q4a"ڈJ>0r>ME.՚}J|:nU~ L| qm~oڸ. a2]텞q#o !1 箦^j*lNo`o* Aoj  ]qNK#^塐✮~ݮh%̽pj% A/: 󞦅3 ^؈m- ݨ 0 @oԟ odA /@o ! W/!!P{ hBA !l8pB 0C +(#E!QRC #X4AaA甌MS\@?(ˆ1xT`PTEIvrdɓ!(bN FK7.ε6)°16޾_T:i(J婑G^ j ršh!CMܥ]mܹuo'^qɕ/gsѥO^܍"(S;!ԭ=Q' Av؁Y]h:_R;3/=Bjjɪ2@-Zm$"-/b:#︼6O0 s"gP*lPI(rJ*J,rK.K0übȉLShŻ̓lAXZ ,6CKiv d`@FPV^"Ј\ A҈0hHPpj1^Z.(m[Aoz1U8PWq (C%%&RX֔(BВ-E;!e%yCIHA8QscxQ$mE!^JlF `I'5wh 8pF1%QrX)(4H# OG>bTJ^҉bN%%9Y';N,w$ ]ƈ9"6ė(aNS&5of'd6xf7MpSM-\2K S BI>`pRN+?O1 hC&(IVf 9A:hZj`C^ ?w]T TA '*GZ;RW%g$ I+0oLYF[e S75b&C0( #C*djWUU;oRV.gP'dq<k8;A<#E)-Ҵ|$pA.!J"mK$P , X%k^ E"4W:`; [P6fds[PA_(-l wE6HUzPXj4KA[v|E*=jA (5^Wo}}ML|NIulPHc?e`GVܮY]X(,TC!`H;ai]DJPapm#%mC^ICt1aa15fM6agFEBD־Kfrd(ۑ>ɔAFN,i#կwy]ye $|YB>rR7JFV2,u1yP-#h&v8)=#E̒ n3I(Zԣ&uM=&Nsp !T"jF-L |ڦtOA &1nIs_(؀^N]Q+9жq[2diwSb $UOo\'oҧIsN%a0ubxm0e0 dPf,cPt,XKeMWCH乆59~2s'$W.}hăSno w%&ЄÐ\'kg{ۧԢqo" l  90y@ @Sl&AIXmx& @EoH OsOA W<~38 +ȯߠ'ܨ_1]lx'C?C@t9A:|A0@\DFlDG|DHLA B|.x8BDNDODP SDQ I5 E  L<LS`KU( K/1ӘSlc Vj8,AB5(e="8C6mӜPͤσ04NԜЃPL$5ЛxŤiV +X4F xeߵ @[hL,`xL|0^Gޠ4N㆘Njj牾ѝڠHNl`j lNf܀Q&*c CA@P$exg`WP.f0E }ϡk ,=JFk䵦lES,pDP 9閔hϾm*9C(Y]n%e 6EȆɾaClcSЦImf >}OBm⠌PM 5VAnƎ$kۨ^%.&nTl>nmD,O]lepvTgnIxOMle N ho^I MZvݘt HpA koM8j0flY]Xr($݆0gX6%b(Z0` xCZ|5A Pcr<c(Yw6!HA__3L5wrri~HZ3tMtNt.<_.tb%~%.Jnpݘ80#PvR:=~iGO"#Ot5FDEXH/TuJwa -v?ua'g`@S8_]oI_]p)CooBGoehMevIlg*w 0H@(,sڔ hC~srw_yF g 9E&rĜҜ(XvlqwvxFKVt&ڽ4yw]zmPse_B_syМXon1g G_ zؤ8$Nyw ]{W6]oH[[Mjxg{bOr|ఄ X>ƿŗn׍)6w0هω+ng6cC6\w~K|lW\rA@ d`S`/|%p`(dAp@`H x@P4:C"Ce|h DNjDpRV.̞S"s(ѢF"Mt)ӦNB*u*ժVbͪukb:WԣFO=4&I1R*m0׾~,x0†#Nx1uQL!wtV$P?>\ ʓ 4nfK1{|x3 4mƾ.|8Ə#pu]{.BOR)ifO|<ϣO~=F4jE#_'oኔW" H!ZGBIB2pRqء\!xP \wQ/FClB8Q)hTN9K2٤OB%:eh[pFn'ѕĀF]t'9x wH?Y} Qi#B8vw{~ )`4n&e&Cxڪewa *]Ca2BJuߥɦkiH"AD}Z碛Sd?Dڅ ;$ u>Ԁ #? '`V `3)0AB*0w'Xu,@\`~(D(AޅXLE @` @WI 3ID$S]%@U_@(@8)Q^ XX8ԅ V@ D@2%% &ID4QN9E  @W}B&@0 H!@\PSuA yUUkIL( \yAx2H%8@LR/ a-DRE`yI `'җA VP1\N",FQe!&#,]DPN0^DhNZ @m&m&WR?@$Xac$!@R5M=DDd%X@|& V8@A<@H gNt!x@(eH$F{ljGw+e,J`ދ lu菃ʙp֖%HiocW-Vfi-V\4amܢ= `ӕ%q $թኩEަ_RFd젪@lT&K?a0TP^=vSRURN ,DLmGO eNI]v"@UmIKfL﷨k@Dl]= ^HDopJbKFJR.vqEʆS?}p i :/^CWglEYp+/fJ\бoo0f= ,`_ .%#;3l&PUk1},Cd 7O^6t. #ĆBu}_0AhҺNlQŲ03)RxA^Nf@^(kᄴQbF t=@ҏiwTpk 9&: .  r! ]s]JZCAX 0@05@n<6!$E3ӾVEwBl#'#5D,LD=l莄Nhr)$FG4D]L0^lENiCAD1ti53D_U6/Dm6K\:>xxl@z6o0^@w}3az7{˯ sa .vE Cn$;蝀7b4FkON*MQ2)k/BHF|(Kn?A6BP17I&西jD1r#L[lsp_t3DL=VsS]f\_K^p6xb5%$#;ӑeh,rmO BDAHhj@(zs6#Dz9|VOwDG_N#Op`@l LOlS-wCf=K&yEI{o{U\B#8(\0AOH|`BG47B&{#xK܊;BO{_{ĶwOyc%{^<D@<ĸ;{K;cD@$ O8A46A@{| Ec8/D°=.pL4n|ovH>n>UlBAަ%?l}37F @ȳ2Dp,1/D3o>GHV[^5TV\3DPCmp!Xs CHBbPr.H ECL# <# 'dyg'.%fXbD5*I*>X'S2ƒ!JsǪ712 JE#15w{p` %dFǃ ذ40S&K QC =,(. 55:RFEk,X2h-fD VplF3ؒpdU = M=-޺zQ3"qoH{r}kDN8X͆k1L (| :pJ;h+ EM<Gj# bQ"M@"$F>rb@l%'rESJ'ĩ0:=*sFRSJCsOEuz(H}s$7!JҸ0N1,ˢ@z̒Zm%6~0An`1=ՃdFj.Cd[hSoR+r5;c(R#9n]8lMd }S3rdSר䚻`HE5 .We/+;,i֬@Y6R8] e8' Sc0[袍>z%<(%bzFUjBET5I(\)ldIS"'.DA|b3 M(mپƙܢKWVE! DťٜCC\Ɓ s"=K-Z\UCaG-G :Rm]uW"X0;dEf:E|KޞXF"DXz570Ss((S%85vZ\G} D~XH"֝5$=zi{a:x2 5IRF9s!l g<A<")'DD]@ГD@@Td2;0"NT'%..P·0oPb\HީTK 6 Ȫ0hTY,“Q!D<87(#lRG;JMZV*JBqhd[XJS ypDcI f,0VL FA"4KMxF.]n#O`O6̉"jP*xT/j>A dF&)5ajf+h&l8y6%BML%T |F9ѿ!@WPXw i%8PE JJ%RJr 7&Ĥ(J[zO52M3*HpZ'M؀@"A>YRN&S$Mwf,&e,*(@FEBp (ޢ9rF.|0ojm |`T-AorOg`4L? ; (oYbHb HSZ87Y a<)#bRU":Rkd!Y"Ft:Hՠm znGH 1U$aFGH*EѝhP1[B-{ndrFZ"|$Cּ6 9ybƉ>H-Rf)2mZ$AseHZ@m(DQES3/Zj;-(X#A+}h:!ϐWިƳEuT"|-L:|_YoJB)dɆb9 ׽X`~_|Y~ E`(b~ v9[2aFMkk(O5((F~2`:` n~ ndD p$ƃ"*d 6;0< ''@PH"Įnb. *N"n pNh쎢ϑL"^n ¦nJ)/eBsBDBS `4b$ZCSJ6"j@ YB W%$꺈!p /Nvp GBCqBoP`t 6@tLDDpf& rB1*D۬)ܼMî-龊BھD(5 *(,p0Z& r"pDsC lnH ;V;JBXbIpqE bq[.,B$&f01nQ֮ n02 d!i#Dbsa!DM J|n$`#DN2%W%=(|rsT%]2 !` u 2(%bD%.="s 7%Bnґ, l ekY @~.7FND o?dBP0>J ~ %s⚀q P 2%_x&%ZR:z/A0p3/@re2ӠJ(5''NR3R8sx*#^dH0`K)b" R0 :s&Pb'#O#-/$N K"ZNm^X'/ZFҨ'/ESjr@Uee1!wpA*&qCBDkDMKbi-2@E @J t/I)DHXv0/dqBFs$ۃ>Xp2EBJ[szHO0RS$)KCcen"0(ޭs46b$(DUP =/T+bFnjP50^ |    `2DQD$ KGOQCfڮ۲NSImR0"oJ4oV-4)DB/aOHYI)^qNYBP\P652G c9.00Igs/Xogp9;9P.@Դ(.UƠLh9 ֋@UTB "#ϬZ9;=rUUv>%"V)iVVz@r@yD.hY.Y)SlnSkZbCruLjFg( 2 b L t|oV 7աnt3O`U(^`-IQp1'vg(.ҭ5$%k4t5pZf=nX"u/CV'|d6qK&.f'Oñ/ls|&l&q}%rQ7QwФ 7i'.a"CVil ~w"jT#BvYYYl> 0:؃?<tj@UW&D6_Bx}Щ…_X_TUaeX\U2b H@n!?׉ ld l@&ז~`~0>`>ED|qD5Cd(`w`[Hbd֍5&S|&Iw4't0O 'mt8'~-wAvoB&|Mz-Ayot&x30GqSbr! S<# ;e}_5.0;kivh)i'bSK!T ρ#XS}CR"$Ͷ>%'V"J"d@S▛j!7l!46kGbp [9qG~@`YuL@,!.m`﹎QPC$ 'PLy⎧1i;8IK݀gt&Z5(Je-ŸגY&ķG":zm5nv xZ/Hf~ZD[.lUQn “bWC&o Dvr3U厏 )"ͳ-"[ HU˙ ; PgebRPrM$lx 0$Rob8ṇ+xE"& zP &P^'@1jFE$"u 8cr1/'P@є0xN1_"{6"C!bW6jKc7{5vt ʋwa# VMsB+d e't— qfP0[/|8&qBg%s-Fl#$UoAo"$FoVCA>{RB?ܚO6r  b$ LFVnIsBX"(Rp!ju|ť0g \?zX̀l@A$H'ژޢ%7@׺իvaM,-JBFA@B/}SýZZT$b=үҕ%N-t4SVJC/ΔcbJͫ[̀۹5hj {"J#ܿR[\_|}'bD\/ <’B!' B-˿s䭰ێ%F+tr$PYA@<..u`uX`2I)]ڛ3&V} d>%bqûY)\o:'|\ (kv ًW6Yk>'~^> bL&'gsGb ;G; s^[8XRVNY9$>Eb#O>k "9`]@tT?=aTV9O #4@ dlu- ~!Q#< &SuIͿD)k? @8P.@p` 34 151*daG ;BHJBP…M0TFQG:dzIѣH*]ʴӧPJeJʉP0Ch)!6VX%WD/com1ZhO;nWNx jMAotbR1x(]h#ǿJ"֪& tC&#.Va6|C1M]N)zP0*64L9L;EeK&8_)G~h* O @_YPؠ *! `6 {b(@ &`& 'xJt*:PP,M Pa6_,:abQY})xexWPEI*AFhH(NPR8TXVBxZ\؅^`b8dXfYxjl؆npr8t(iXxz|؇~cxXx؈8XxXp8X؉؊(wXxM18XxƘʸ،8Xxؘ!؍X8x蘎긎yX8~X'2/yY?YD?6 *y&c ?V`7CDѐ*x:l!ɒ29":KC  &$8FyHhpOJVA9l1AZ\ٕsx0(e~@r^ٖnp6x+|{wp xHq9 vzNBwcIQ1*QulA]D^a{y#T2ل=TZV+*-zlt%]U+0SmpBJFa%o5-L Sw|ڧ~ʒYZ[ʥwJZ[#=fQ_k:]G_*uPѨZ :-,` >t `DхtՁ<J m,N q:D/Ь^/p/9vQ1\lz`IB?;%+:cS}N0N)kqz0>:[<? Kq ݣCD)E>+˱I '`Q9{H*ѱQ,PZpl1R=,DAPN/ѧnS?;Anp 劧MOr!Fw~/a@!V>wQ%]EL{oa\aɶswk,Q0/a  z!/Z) M1klys,Zk+m۹[kNqDpLRlwћ+á0#nL:*2QX?P hݥu7@YqI]=qkt/Ga!xΚl AxuG#kR};;AWh!n^ƇNvqD&Ik}>C5ᷘZ+9 XqRN/IKQVgs_wQ~짿_vfX.~??q _k&(/C!#%02/)+-_<:<5?D_:0d:T?پA^FFXOP4 Kl`M:(?e0 V,uT08¹K`?Ik/ 6 nyfkqJat}>M7UTUC !BDL8x#DN>,hᏃGZ]L0$&H88\66 @$݁ " •bKj,ȱ䂃l ƄD(FZj֭][lڵmƝ[n޶`s ق:2$Ȃ= $E` 2wo_H7ؠe נ$1#4 0'8~0@$@D0A* #B0 t0h$,1 S.ˮ H :2:.bL벍L҃$H#D2I%dI'2>2p,ƅ*(R$$ $:#0ZM8<f$ so@RSF)E4QEeQG4RI#%ĺBOҼҠ6^ȱ,KⲹI6Xa%XcE69#Ȁ Rh$Vh#Qㄉ!_5YMnPHNS6^y祷^{7_} /15,s&*^9Q]$7t%O Ml9dG&dOFyގ`H2cU;\$h.W%=z4e:jjb/:X+k&KTYk6> @MjOj{{{-8ݔk2Z(|o(xd L`@ `>t٬s:F:aqJ67UЂ`5`Z!!8n!B aJNPT;RBةDR%A0D"D&6щObJ#60˜!$'pXq䈰#++JUnbG>яQâ =$ J@AD !dXK5ALX'c@lH /IєDe*UJFm~84G0? ިLB 6|B"3u/p5n z#I'@x I)YMnvӛglإtGLb۴Qm2 6`bA,fR$1<@3hvMd1Gl)hD%:QĆA PjY@w6 ԅ\xs( ͆ -]JD*";0TըFhRT6ՔI:y!j;EK8 !^G>!iBS c=A Vծwk^37-VTH<#iLiVn/]٨nw !8+MSwzmhE;ZN &UPn f\MVb:0fᴇ)IxqEnr`Wy a(`3/8#m.Wz͖z֌zr bP s$A[9*$en|;_ַ@f }qtmOvxO0"m&;^\p5a7e[eHIˆk\nCl9cĵiUNrcz;k(T$o X>#lT' ]9Znl['Dc6)w/']rD;,`?pU;f{]dr" @@e.z1M:G}y#9Sg=sx7 4A.c^$m4IZEχ~¼ 8{ErI}Y:-_$-ܘA PXNG̻}PS>? 5Xc1+P9>30[=][: cPxˢ 1 $ [.@Dɺ tR3x4= ̽1Bh604,K4H• )A,B#$+4 K`8@0Ѓ80`  h->?@A$B4CDDTEdFtGHIJKLMNOPQ$R4SDTTUdVtWXYZ[\]^_``d/0Fc Ƭ}ڨڅ%$pFT ;O֑ƒ=Y(HYXٌE\X֐]&mP[Vֹ]ev5IgXG BF]0G( _ʓ@]dmF]eEWri\ׅݣl*U% SF(@%x[W :XF^ q])_T ƓZ  ߆]`e ஥F7%Q LnVXm)D %Ջ cUFm% FMOUf4iד ^XVCeL^ZXbpbui`j` U)*]ߋxU > N[f7`l|Ɏcj0\̀&;Yɥ#Fub˽F&dH^1^ʼndEX@^> MdOexeU.~b0OdHY 5ʔ>@b6f(iUdTfJ8хcubP];Q]KLVQbs^lle+Yv&b & _.gRi>h$lϒ MT P0$&iQ \clT-O(vv~`WyV\{F^n}. ^SfV砸Nf O`\W\pfz^Ud u~ugbb0Diiii(OEꞦ:Xk5) Lh__Ufe&0plSqꏶŀ̦_꒰mFHVkW mѶL|PP|˕k>Lݶ=F% >h:@M81lTK\n8'UhjFs%&0m.k^ ^t> .i鸞oV5V]oiڋ ϋi &h]7& g^iPpopx4vgߒ񡸄)q(l 保HxqjpkF ؎f$8 )FoԎ1ri[5)q8i$f8' oh : Fǂnvsct=Ps80\F^rx&_NJfgHZJtLO. Kl1gk΄ sƈCs9]ωdlf0Y6i>hnnHHFF M:HpEKENIH>no=bp=mxVPPUewqo >i8wYb_:8v^W6\p  S-rwm軍 ljO+NoP|. QS]Fw/ 6j_5w_oѿҟyqvi,P{xhhȇJ/xt(l<~uhmFn@hϟr|Kv6 }< ;yoTb-Pyp'ce// $X!„d(p' 'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:ws&B%(ҤJQFs2p(qd (IƎٱP.A""I DÅ #Τ놸1IZT)FqE'i!$JN|㜴k)v&KX)J"'ar*V\f7‡/n|x $PB) a`A<9;ǣA<׳oCᆭ^? 8`NpuDG(d<(T," %x"xK]~Y,O( 3^᪻n.;O>[QUPXf䩴ѵC=4.zg*잖+S!0+{1 VCPQ^مYz ,yj"`={23LB+HPt2=5U[;fXdH7J*z&8ޞgNBu5N-4`\bT2p߉+8;xMY[T ʪx^fTPn7sjɥn DQcDD39p; ?ÒWD;QkdjycDD٬C:QQxOt7`0CﵻYmv$dDؖ28UO($Q=L3gSMZ$( EhW%OtuHǸ|T=<3O:'- w \uH։r2!>}BY<El zuܷ@n܊l \" gyC̀Q=y*+ (+24fl5[Q}+:B\ FOTQ %O!VEߙM_ ޤEd ELF|dq ᕗl* a׃ O(uu^u !!Kaz Il. &O HX Py^F|T6iY9!YZ+ɥͽr9͡EО)yt6*e }XTӨ]F4\Q݉ztq!X mJGܝX E"D +:߅,aT,#T3>3m 4B#X2\OXa(T"DT U(B/`Dך=F`b0ZR! O!D F|XP5RaE=Qؗ%  h"FRVRFA_N]"EhW}#"o0R(< EP"D}AJ"BH9ON% =m%WS9]ݓF%V^^Lx=HBtPG@c(_$%LMf$F@UBEV@Rb&yQC^D\ aQB!Y8Y7Y@u#&%Bd$b j"LjLRndi)dBTRN %˔!H'qYğ%Z'uOk@ HWgZz%X4iv]D ^mDZGpe(ѽ#HS^G=9@5&wN\De ܎`\~$fEgA]tGivlmbI&NNg-GfB((E4 VQHV$ D$p6 h֤lQ$i  | eB&YL)*V]<4gM<z FhWa*}"gEf)*ͦ@d: :g]ݴҝIZ(hE`(`]GhM*DmfmN&6I%)zDoL ZfmbFo/1YLGNկU6LkV*.@Znj0GtAa=V+o*lDء)1} G[!&Dh~, >dFR]}G-q$GEtBHrÆypUKX [.BP08#$oB4ND;IE%ѭFV^DK2B9Ylv(0TFHEg .kMHYy"m|&2r o-J&k &*bZiF,brCV-HdE;ߪl&(wD$_KHJf$DI4KW%B`&=?H|#Nf`=g4k<@nV%U!@!R@+FMҳFqgBoG؜ka6sBG r xsWzEZ2R4蜀 WXG,uScZ:%`ZEı\+꘱F'mDD]p^_B`(+9a[ mM1;tf"Fm5fI (){%YF 4@*-Kc[[NjP4/[t& 0w6qh(hl.WQ* o%BV/ED#D6(vgwvCbd4JaaNݢ^H(UA5BOWgJK؀tym8mPg~ 41uqeqF<4zD7FD귈fwLVe! )K6Ht\ZəfQGțL#IvwF\Q'wF؀sW󼲵ET7E4$D楘F5ys}Z7Ru!{|_oD-f9"%3<ʛtH˅Α޹f4i |A>1s!3xq,mgEFkH2+a2Fw;OK/S/cUWD*nIOt{+ @cF9kDDkr -`A3WZz9P {4o첓zv&á'dЌ̙U! :]iaљi :io_N;8rEH`G>AȊn GW 4'mL"1 HY= "罦>H8v ^z5 TڤWj5j_X#]`Ѐ@P tA.\ 0\0]B*"9MEɻ%Z;q0c"B$g' "Q !%t:f>AK@ec YTʄ CzBot?o&`@|R`9f; }yGMx,%1ɝ1Pp  0 f 0 hN2ݶU$&D!BÕ M=o!z')_JEhvO<"… v4oqRp; 3kd1zp"b.#LIB HF;IQRVl (`DЅ (S蠞"J}F \Koq ;qϓ'tb@doD4()ĊIWvESJSAWg<-6%pBo!G@QА%Q림BdeR h,SіU QUa(2z ET*]!3 T}4ict5qa҅bL.h L AGX`F`qۘNT=KVm3V,HTM\kB[˫D\NrwP,0nYյ@˦Dx!k2OTiraL6o)_BQ,u%*W$U J4xi1jۘR!f0o]2x"5u ('B!P"䍴T;ŘU@ c*BRؐjG'PR3A+j&Z><*&SYix:oHO&;\y m7)XE:7ͽͫ'D Y\dvIZ}F1G^0D\!2cv L4$.Jro}[7Sໄ%a 0 ̋Xf G ͭbʭy}]HH i6z|.ȊlL\ u(J:e 2<!͆IW!4/~>3eާ- b6;^ȴWK 8Y?Yw2cH*mUg}Cѝ򕷼 @+f d ⭛} W"$āW!?U\BH݉aY_d`ܞn RRQ}IyГc kp"K Ȋ1Qp*L\n&>8 ~ST H4 qqV 8!eH@HUEӎ&!mȬ#S%XBe+(Ζ*Ol"`q i&z/dEQrKtx!Qc%Q&`E1 DRj,aV",\z22 g.!p8Ɖo(q\2+r+oźABLz15R|RT`K #1ِvr&D/g0yHO1D#b[O`E@ >$& iP1c "Bc&y(L.߇ Co2PEP 5ȑ+[#$@2T `ȓ<S< @maG ` nND: Y(QbhS:!4B%Ԡ29 .K!#cC ,CA .OsɌT)2B!(s!>8 >LDI "2Gm(Ijq'&2&:q'd!~, hDF1/P/b +qB]Ԓ37DCPCACDLQ!5R'% 6T;fR!l SQ'LPP"N t)k\s 5";RH 49&c1Jcu  < Ljq #f&K %CRY@ZP5iC1[@UU1y[^ufV QqT;QGtTbL!8`̀UQC22, (CMWo C( O :_MJ=%`6/Q_UCq 523 30fS$\5 MFQjPu*m6CD#ivkPֲuIՄp=\5NdFNB s7~@fgb`ol"TCU=TmR:`q%aoyd}5!eCeWvX ,r$)coh8 HroCACQC~efpBOWwϺ즖iwPJ%LoG^wxxC*&֑R;V3B `)wBNв7{s@f _ iBl DuU @~N}`} m}9o vL $8xѨr{ wB L#ƂwhKcCtp}_vZx,v }+v #X6 !jQ8ux4̾7!x*@zPJ)vy9c&;zV9yko9yEjɹ9W&z9y:9yYOy !:%'1:5z9:CO::EzIML*:٤]a:eZѫ8w zݙ}ڒ*8 l`:U󲐥Z' IZZ@!K>Pju;8T,eɮKc[ڭ;!lM `f8yE) Pm %Bx!u=z/`[q+@fZk9( ym%q;u{mCS;+ONxgr_v9֪y{s[n,+]4_bYOq!7kǴѺٻ;;7i+LvUz@{ yNs \7[+͈F;nLXF1<5ܤ6%W9U `k ey7]ſJOBHb >)!ZƇ.C o((^ oƵ|˹|k_:44Ȝ + `6 @9N@./ ̻܈I uz˜12' `Kh)ke+ʐ*cEnIM^GizO[t`0YͧP1rU52(D1Q 05v"yV5r L0OO}۹[rA X]iʪٶ¢G۲VYhdCIHQ ̥MC =#;N@ VmQC]$^; A]I#Ca %Sn {Jj10 'lN#)V Bz0 }>`Hl$yg[̽գ=%ܑ$2r苞[%r@ %iU%ce%`hc-2;нӷ OELvYKBD%~%P'El 폰okn^OŒ;eitj]S>_^"@KCL"%wQ5dD.tb%1^}V%lI6LVTJӐzk?X`dOH7 P  PPK("X2 2@AdrɕMd 3̙-_ EH"eСD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6Z@&,AeCN 2h[rpA(+Q8qB'@q"sf ~t( VLړ6/͟뮾;ݼ{ <ċ?yR%ۀDb m\NHa^ana~SէD+yu,abmY&ZhP^ zYA1zV~ǣit 6fL((d@e^~ fbIfffha"*Ģ}didBnCEldg Py$~IGJ9@RR[1 {CWQOijj kҘIqyRqgV@(vqbRD ?A-g(#*iet-M, C oKoޫ*!V`,Nv"^zUdgA湚eU) 9HjB=1[y/mE-( {%xfIԎ s2Ls6ߌsuE (» қE9fh1Vэs<(uFеQ(1+Q,~sn wrMwKu7ަ`Bf\1p|f3a1wF}@LP$49]jUNb4ZEDnek},^E}{|aCgDuD'm0Alx  4-o\+UdFjuK5 ۃ;#<,avJĖ6bf־8|GCFYP : ,lYgzIuV5G1ITC&,ggض÷| -FLBq6ȉ܄8Ưٖn~froKZLLW>÷l:;^\Rgc+J zWZ8n,ё6gUOYGq-O:%<QE1|PȬ׌"k8,D!P[={<PDpY-a+|]\-2O[3 ^t41@mò YulXҵʌyv=u.tTAL%=~ naU+1yXHai˖45 )";\ :К|t<|ytp Ρ/7AEa;p%~,Oko ׿ҰxI}+2h' q'q-}$M c,]q2UKr15N!1+_2Oz,@Y~GO׻k7׉0JSEE#Ix{0a s͍E\11y<,H]iIl·Ty=Jw/ϛܵ"ƫ21Ӵ vylG5w 9|<98am84С'5 gUݶϜ 53QPZLHM+El1+ =ey?jv1U F8969GUn |?01@AǍ{WBN=SyA"#ݝ p]|P٘ UO""N_/ -KD1i& `pnQ^ QyGWn~cY~ 2ZϗzA'3g>f>-*V5~W*"d59J3 AXbZrǞst+BF#"ޠ'З 9ٮ3gU69Xtn`͉ظʙ4l*AZ(MZ1|8$FfGƖxYC1@9Z,R-BN̡cANE?`_y6JYs~s ),)?5 0wO1!y;lKT[03-9w_G W%bKJoeFQ-rE~lPOI[/k=/-2!v~Z_I9͢ 99l:௞@ O?5+M5*t~Zw{ rx-2!3hEӹx'؄"HdXDBDND!JXG 0QH)UdK1eΤYM9uOA%ZQI.eSQZhceX&8p̌%[֬YK6+@" 8[.! e(7ɑ\![xl*e)B D,T40,#7C4`0QDPC,QKW@h^7p!J wxqe#T4]/ƒKwŏ'_yկg}{fudإkQWr:Ğ&K1%*b' bl&=Ȅ* m%r+Fңq" DHKHjK趕rSMTb`-3P:!`9cIH" "\DhrJ*J,rK.˚: HKȫJHb+`LDӉX$DŽi\D‘2lLh6Av09sTÖMdDF,%7|C7C s G##Ub''LdUvYfuYhvZ$%3BS%5b!E(0h܉ǝh But3As$G#I5)vihMyW)ި 40v"g3UNhC3N uX3 G#wV|}w}6/AФLIƍdaiIGSp,ywFr4`*rydXHۀV/{{KIdћEg2"ӉC QC$ba D=6ld@+Fx9&e,v 3ޥPR_@d6֩j ^*%@Cވ* 'qGd%-yILfR96M `JpH#<,0Jי`%+JPG&TCvƊınl#BȐm%f<,@w[*ޭF*zy2dqlH9#x6E˕pg?Ot<H Et c/WҚ$I&H4RP p%!@59RmI2Q3NdRBȋ6W8$\F`b*&3oDG<6d;WhCɳo$ZɎʉSc%kYzVբT"Ϙ(S,, eHL!ˣj*6 H晣ٳ!zp$ #ABxB:+*6uul$BPY{ĖK4##GԑR JضkWȉзjlk"ִFWӥnu[!ܚf_|Kʐ5&ģ n b ؂u TKz;Wor#Ue Ղ/f!۳֩ -C[V#Mpp{Ķs-v|0DdT?*z*g)H(hEn9;-%ɲ@;q}c .(]"d^׹ ng3%MUR&ޯ0' GrA4{R5}o3֚I=Jc!'$Xڭ2Mjd@r6 >y̡G.#D qM}jTZիFɜA+C2JiXAzMeYty4CK[)U%^8fYVȌW'Đ3B_` m3 ~ =B (zwa3! SlC<`t[%m][cX&&lb3\9$=q\,q 0G;1E#9l2>p1L[AH4@ e\W$ι۽RGH ]S<%#`Ifb JtJܠVH?2nt|䓧|-y]#Uy(ꣳ?>Pfcw  x됥64~Ab6r^ DĽ1,>E1,z|~K|-0;wI]ٍH?(/X;H38w3# :R(C3@­9yЃXJP>0ӪK;;p7AAA-܃QJ K??"*l@ 3@ p=6ԛ=`8HR!Ӣ.hèMy@QB 87(h! 6+!@8-$( `<|DHDIDx[ĉ@M)LMDK77DM| "@E] Ehŗ@E @@C@CLK@F,6@E2FAdE#@Ė`AY0#57,P|OƚBa̱[6OL4=@ӷOEBE:,=pKǖ(OGJG H9=X8P0XHXH<.@[y; BЁhhw BXEtxƠl<D(HȔ.`JjtE"äLltU,JHJJJJJJ KK,Kx&Pߜ( eђ=YX O]'H̀%@ N+  .mڊň%YE hZ1MP0ZUZ؎XYX O5X][FO hW-K. YH]F`Ҧ̀oe;.' MZ=Ϟ\5\[[hR P`\$R%Z}Z%\"\ڦ=\N.\ťݶ]%OP% 5]%P͌mKӅ @]X5]9ą%Ҙ ^^H^]~^ӭ%5];%]P ^m%RW^]n`6-\``@鍀ڽ^ӵ &_ 6] R-e 0ҭ޼__a"a`_v`'~ᔐb% L8pM*YPeM%FXc%/Z0a8ޜԛxc:cb b/0&@ Yp8eQ@_;c^BNCc Ud@_%$Nd I3Nc8ncc>c@Z(fbOMXcdN}0`Љ-&h0OhiM&h&(щbm/[g(g8g 悀jfmMuc𤃂`g\F 9N x炠gt瑨l`v/f PnbniNP#E l^ @-)Fjk&5.ДN؆b,h8扜dp.F^$邐޴ёSV .ꡆtj`k|i>lۜPdlߨkTk`H. ɞ γkDm퉀kHmMۆlf&Z^n&Mxn, %mnUUUFXEF&X}P [ƉG@ofoZninOk\ϞT8hmf`jƈoo&F+nnO<޴]c nɎ}u놠qqOmZ/~$u ;r%rpkti%qT6qVq4Od\ٔ`ts욨)( .2QAs% # $Lj%qFr0tPr oq/M0'<7]2Mg@t5OuUGL hus,꙰su%9>?F]aLDwEF&HOoJO`?ߦNgUwq_L>q(37b [ƀwywy恆 `/~7t?7{})ugcWtNo/GhG~w m`fpgwq?y WXhYMZgwW ڗ Ha&yosω_손kgxxzvxHxO Oy{yj>xoF(e1kP]Bm7 Lj-Օrd%x"V|]x/}g˽/H}8{pl`q$X>mp_7 }p}߄PθuxlTߔ/G kzmo?}_dp1`o;&tPa`a#`pÃ$q#ǎJtX1DOnd"I.JJUJP AH1 Nd(!I-;Y#O>5e(t/4XŒ(ϢMv-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎC&(Bϓ+^B(v8F!pzu _VV+cQn\梞AHRUl!\uVVN(Z5ܛJE`E#UQuVFm6p1ؠBRXbrء54D6i+BG(Eie+EA+.Gj(Q?\*Ƹ$XAycxБ@Vtw_"P$9>$Y!♧{٧ZJ3z1"gJVd+2zad(JYFvjiJnS!%.f(b5Ci("2۬BR[c-IrvvYdAi jtҨ nR׷RQR*juM+CX пM CwZ۱#\'++n'lb@InvAv,,QQtdIS52BNnL+zPy5s3mVQ¦ҧ5m4C:=+C_uY!w㝷{ݷy "LIP^yDG lй1xH"$AASXCNXa~z꫷/6#1FaXYvL3zB?߃Ogˮ;o束z_㟿uC/  h"0 \`Qe%d +h b0 ;HAK{2B0*\! [0|jXÌm6e1BX. 1J\"'B1:H1Z"/]m31j\#F=UTh;1z G $! iC"ch @lH$%+iKb2(OEB%)KiSrC~J22%-ki[E h J+&1icU &2gB3,28kb3&79TMfv3'9iN|\';f'=iGBT.B3g_Pe'C,!(dC+ZJ(0JtVQ`b 0t(,@@2j`V pT 0cG@x@B ULԹ`"UxHiPRU5YJ iQ@ʎ@t ( zWn)J0Y$x-Il0Y"dlG;X+9c K0HU]lD*u#@cu =(@PC,ؤ1%@/7҅`.]i 4`]e ]/WiŽBi@vo$HFrr< hl'/Dj#qo\*8lP=Zؐ҅vկ= ]|pVyX8[d$Z9r#}q{Ҙ52d1GN U'ɨW^Hlx/g7ʯMl}6-G` m:SJ6h 45}(6يE0w'mj&֊z&SYH|Kcl]@`#8'1͠!jqv]Xήݫ_ʢ"f="G:> 1胈Y@]E c=Xg aņK;I\-h KzHp X6<0ӛ^-C-n#|u덞$Uu6`ʣ ­H]3q/G耟l0[ULnnm[Q ׹sܖd|&{{҃pY(pVD_K=v9ɐG-G_{1;!<9Tk$j̫Xt,-`b+ ^GmEWD|6G`n7}as9nJ gҝ (w=Ha029"sDsHe-?@捘iaKsMF޷mġ@pih@F]mDɑByDBM%@%FנБZLә r=xVCќU\`֠yўFA ^՞i `EZGyuDQa  !]d!ZP2^G8!Q>DG]_bG_gV>DUF VWМ$VDębEXF|aui]Gbu rD " I4b.\[h 0:_C"+j߽bETX&v0fJ`Uad6>F((jD!B4IUcSE3~XF @GPbDvACqWEAdD#AX>bѢa&"9Em":b#GCpljAtObGt#]PF5#B a߫!JdPD?jRe*-bv ĥF%ZV}VG]"9nѹQŅ"JH`UfxRK4bF\ղu[zFXNr8Y9VY\%޵acfud/i_GfETSa'*lEnVDr&9AI'BYdECVQyF&K4^q$™aF/fv$#ŲZ>'BztƦ'vje$҄^lSGLlA]釞֕dƅ%Ti 7"J,[]Pv*a]|J)ugGK"h:eBY!G #rMZj"CC4hEإ^^RŵCh( MLCM`PZB% \%-0h(@YA岮m*jAD(^Fdy/FA&QV ]Y%(0!-G>Gt X*F_a nZL^'Bf-G\e6*v}b r,o /b6+nY+a3Ey0ygrg_ͺjt[6$!@+!w 6`IgxX+*RÅu],f+α="JTfw~nwoly0#\"{`hQGZ4Gdoz@{UU,#YxBMz' %9BF_2z<ϰ1k$nQ yEBb 5EqDeҲF`gپ@T-$@egÅ)-Z^jzN 1hQ׽AȒɶ o~ӢuO:_W{kK:RŠw\G`9׈k%Ah  W5Lxk5;7h3cwAzKʝ[ Vfc)}q6'^+?9IhX*! |1yh |;It9oX}u_vVO&Ŵ ƻ=Ѿ|Y|}ܵsn@J:{<sEX'HQXE+^GtbE/~aXƔlьiTF7qtXG;yXG: YHC_D"HG>$g"I^&9+*ғ(IYJSVD*YJW*eYK[%iK_0KbT24c6є4YM<Ӛ6Mor8YNs2T:Nw2eyO@ ZP UBP>D)ZQ^F9Q~!HIZR)UJYR1LiZS9NySAPZTIURT>QTZU^YVU~aXZViUZVq\ZWy^W` [XUbX>d)[Y^f9Y~hI[ZӞUjYZ׾li[[ny[p[\Ur\>ѕt[]^v]~x[^Uz^|[_~_ \` V`?)\a _9a!I\b)VYb1i\c9yc?X I~we)Q !gJYrd1<M8\ K 3f7)ZyL 7V1efÂ=,Љγ%f Kёn37xhtcқuCD Ydj8A`6B:F>G@JBOHPITMWP[T_Xc\f`jdoimgrlvqys|w~y}OS[Xaemsy|ÆƎʔ˘ϞȐѢÖŚǝȟʢ̦ΪѮҲնָؼڿիӧװڴܺز޽M H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ NȓFǃ 4N1 7:)OwNҠ`Nz`$@YD| F(ju !| w"mC (g!`(4h%q@<ІGD(p<&#uB(TVi啾%a<Gz_0P"\1X)tigbZɣ 0iP(:p磐F*餔^uǎ85駠:$hj@ꪬJR'ba*jr(FI)7|kI<놢&(BNtI5{v뭍(-p øjʦ!k%qb.$˯śDH+ 7í,,$hJ "W.$lɏ-b7`2ƷgA7o l8-Dmu+8pGP(V,"⬩ 4 8 - @z#pUB kZ$Z^ 8CNWIQ?H.G.9PZ LA70>nc'QF*92A(䬷&uHP'kA<;"2>.NPKHXp_྅dPID=x*Mښ{d:HA\*@ r@Ő" R<=]0N7H"U`  "j#LćtZPhm&@$ ! I@t`HD @` ^'VJ\ D v$iN~ Q'L[O0N Sx|\Sfh7Ĝ$ hoag*vJ"јU!T8 1K}uC'yZ)#jui ^I |i(1T%QpoX+Fr²͙H)/AP :.)y8*BQ ( Jz3Je(Ce?7 8N8fj)+ .7X2'2$Zfaij&2tq,Zz7a\09fJQo'u/TjRvhS PJ$ \ :˹ڻdū!ѫљ2Q{#,[ *|b OK5j#y(Y+_BAE: ?6O8I˯\jـ6uIL DתR^2EI2n#) \r(ʺ캢j1l)"z9]Ӛ);Q zVdTk p |I<DvD*s+[*cq̂Tcrk ai%g TYC <k כWU ;|/ʓ&<_*hA˶5&'|1Hͼj%<˚dc{jrc, 5̴9܁#(̼!9GkTY;R\hȃ/_ˮX;o{$N̩ k(ʑwLB{SX̉R;K}Ԇxq{D/wEIY&ܜwWzϩU,O !qǚHvD JɈbH=ع$91ХJ9<9(_˒WL-K |[of o+ҔͿ)2=Jؼ Jn6 .0__?%7!۸{aLAi6XAgc ݢ|P'ϧapKP!٪Ã4QRMUNJh赸] >UD$Q^&, !TN諌>>.&<bH|}~kE XoAKX$ ҬO[ 2[l Q ozEYK.x.i21(]P`g(-T};b7z"A-W+hF;e&c.q}eX)̖"s+4f9 њ a+???99%q+0qm"Oj릐uMʔ{xj%B jK~WaJ@@PB 45D "YF=~RH%MDRJ-]SL5męSN=}TP2dӅ7AUaAWw :% lGdT@Ni(vGiK6G_ 8N(-и ƯD"-XhҥMFZj֭][lڵX!S7ꉉϳ(3 ه#~E/Y)E5H"v~ ZcDDf%$ vԖ"¿)؈>(R,9l.ѵk |jf7w)?&IΧ(-H`8@j˳8N+cKb)AL L A?ZٸЧYzپP)첮Le D2Z/b ]Ta߯| 8E*VъWĢi`evTGH޽DJSH$)!G$ J_Q_Z)$HHG|1)H˜Ɣ)Oq$CPčTr",HV1YDe*UJV GNDXy`B 5zJXI*/-1/Y£HAKu}D{_C+ynX 4(ՇD*"GWӞg>7f D $ ɐ&y fKH4I  (ΔhT+5J-'кP|<2ōIbLLy< s#o+A,kJP3! Oҁ,w OVժWjV҉#灔d D 8 QUHu%W 2DW)UZ's# [Jr_Q=.cR6 j)jB긑")mU™SSpU)jle;[ֶlTO{kRRi7PcB$\$Ҹ 9e6/a@J11,YF{S42.5D=sus}mZDHw#S%v9'GBY~hnm 84Z)iC'#1Ks[BU).}9 ."^W[.!xԥ>uW} HRw(TEd} M[5ݼ;rJ!K3չ)* f_ȄL|YkY7# OTXI$)9WG}Uo`=}L HB:q$F/Hl/'mZm[uN4 =qؔv{̑$>)'68s7GYDJ!v283 %׳"/Hp9"D5{>#dS?Z뜮)*«iv[@ B2+"c 2 * 7T:у $,""'(=Ä," <*==+CT(NpA`/Ep{(XYEHCҿ1\] x8S?SDŀCR [rCPBHH1'<4Eo3;"xA/HGTXg*"+RA@RCp?O!3l,$<`dƨŇȈH y;W< ۬Eԍ `|$p) H15$S;@AŰ32ea&L1԰E3#iyLʫʬ,Ȅ8a? `8+[0QtkF@ "t3sB`C3 SƱ9fܲ# ̭PV5̗ȁO̕`6z_3"XLෳ{Kl_ A0 Mj ٜ'\bLIYL!M0,NABHl34$TՠD43Lxӄ9Z =ȉyNSZTpI2 pZeh rLN7L.NȉCE;`霿,?@S:CO!5Ёzf!ʆpͼLɄ%h$mc@d.!EXh"] >(QAKR9t8{ (V ј>8dS؀BX 0>N?(b R ̶brFX$X24'b4QX@ Pb%հԁ:jֈX \=;@f$@BeEH"ȁplpMNЃ6h; W X6- =0IJU'(xoDq"Hc-8(tmyAxm"p[l|hm-I meO='W{ HxyM '@e8PK֩ڪNx(wM8Y6Z[~*TE۴U۵e۶u۷۸۹ۺۻۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu&6FVfv &6FVfv !&"6#F$V%f&v'()*+,-./01&263F4V5f6v789:;<=>?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&b6cFdVeffvghijklmnopq&r6sFtVufvvwxyz{|}~&6FVfv臆艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆k%9k9뺾 FlםlflF.hj` l5Ol ` 0mHnm|*.P9pmޖ-9 /fl'9l (͖ni.i@flJ(ono>pFlglo6^ `l p,'p'.q/H g;Xrnzf0,@F.rr.OnG$'@l7gl8lKn&8g5gsm8tNB/. BB I9 􂰄O.6O -A.Pu9r?t@qhL/Y LtNP<RefBvPPt/0bkdWvfwvpoWutis98wxHJ?BO}v`u깂'1hwXtBsfP+9ͦqx]'q^gl4߉.΀,X9W ЂOE +7 rNx&zKy'pz|Of00{fވ@@XoPsl .{^y ƀ&0(N^zɷo /h|.h{Wf9l޷ B }l?s 0||po 0g~2@~ϱ 6~p} L$H(Å 2R!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'J =XK 2` 'L^yht* \F0HKWySvINPMX O<졗y@,FS7s3ТG.m4ԪWnbw)^8 dj @T&&x5aO?$baje$3 0i5]ame Z!6{r1y喐=\S7B=ƀ+xHo1$C} 7wx1AA{o1Dk=#A 9$Ey$I*0dEN.Kfؕ] C`rw i Z.AYPJbuљSx '~-DD[*eAz P{1@$B\C!F4i*iAgAs.CF &$HAVچL{,*,:,J;S} `Q ] ![)C+C?yTA kl>Pvu['5"V';QmL e.^ Ѫ&C[iEW >/4)k.dqEt˹6i EjJ }N3A =4E}4IiBRtBN4 h$B?B9.A+ ! 5% {%BmP7Sn"H4Bbq&C}wn7V1tvDi_6A9_PD0żU4뭻:>;^J$"p(?dB>ۚRfMP IY}%7+!+SS,C,L >D;o \{>5E~Ѓ0K[BJ&kԎgU{ _AD7݆y рg<ۑ&aiNR"]`Felj 4F%؎5$w 򶷾-p S 'dh*DTܤI*%a'DܙB&q"ISGI@,HrE5-,eWa@"*ڰrI>0Mi)c1PX Ȍ@b.)])|&R!RK]ޱLGHn}j K1ER0DXDv,ZX!Hm32 _8"NH}-s^2l$_-i(CK73!cU @=Y 'OB>Щ&gOD^ DSK!~UOМH-'@ MVac}vC5慨Yl3s,׽I|-2,섘&  BľC @>4~c/ZB @IiAC-/숼> oL C!q_} - 6kZyQ݃Ξv!n /H|wjޛ{)Ӎ3g⁎)=`cӼErs @ ̓+'!Fڇ) 'y`K8u82$ T]TNow.^ c:N4u*v?@pufl]H179Kq#/j<9'Hw極fIr0+:YGbsg妤UZ<HXyR-K$Li7 _~b,ψo?Г-/̛?&ANh4*2ĺzDql\_6ҙD!^`Dy(= \h2IDT- AH~aٚW`@\m Dϭ$8DD >!FF @ D !MbQD(B9ՌeD! YJH"$A!TI B7ZRa&_ UDhAyB| B"b ܦAa}FW")nF'4dfI -C-._KCEB cN| |UTE4 dAuBcc#9"(Jt #7@9?$AfԠ A4@qFhc4v7#69#'J' BEdEB0#hAA$9GEDFF6#<#=F~3n4Vc\#1%RD_p+Zb^Rb/ ./Z/cA0NeJIY%ZZf"g",[bDpe/h%^Wυe]YDa&b&b.fG @\bT !c>8-V%>DeenyaD&&lƦl%$EtnLdhnR",BD,_ps>s֦ tVe0lZDtwz >Dw~gv'z@EtLMo[Ο AE8q^D~JFz.(6bR|̧d'n E8@VF(胶(<m߅}ք}ҥhy[uf\eSf c>)FDnP'Z(BR&vĒhF蔮)f$Q\ĎDgięE.*6rD$薦_o)hn-5F(jlv$APjf(nvΟġ+%$" k)iKLhp*\%iJjk*Щ ʄU*^+$4k'k:fA88@ ®FFtBx&<@DP"$@*inENDmB-@Ӓԫk/&/Fu @\h"X-*na.ED-Djr\BrNtb*DoAm~ļ:oFtBZrΪιgE V|VDUZlFT/^0FA|mX%\諗6v*/ ?SRo2N.Nh_C8ύ0EJD")pΥZeFeDЯ)Dp/IXere+W@[%"N\XC[e_bnUeHhp@0!! {-"L$/)-ZC-D1f-C̱U\)^1Hi'pUqo_@/b.~C/)/SDrOD11?-^G,[ 6o37' '@:nE1E@sα2(ۋ() .,0/B;@gc8,-_\82x2Dr/bnDF.D\sD3* C?L;L'aM-z,@EpIID cjq7?5TGu,$,U_5V/+pFolVu8{\3ծ)$s3S~2F]'^4/:B_tv&AJD;/NpEس tB^!^uVuCcρq)@D¶l#!mK!@JqFp¶R4T7s?wi\tu_w~8+v_x/3ADDI;)4~l>W[\3,G/ޫ^ti2-j*ܦ6 szSD3i5-E5DX8~I)tt#ugb77Gϙ7H,rg3te(Ax-kUU"@/wfU7y&D@.B뜌-R6JD7E7EvS4`f&/E x5Oe4gj\ăGxA4\#!0C{3E0+Dw)/%OD6H5GxڸeH@ *de:'f(0pB,@qqCGLa8DANęj2EDxt8E&{g$9A%K&C4;Jt\M SĖ{gE$4ODkHy?@(VDnt/ ":C@:Ε& LnKpzng|$:pĭG>@t8P $H0``A':8bE+"q'>䢂>2 @HS31SMfdL>}:恙 0gw0B֑9-dddGcD^dѭM#bT:rO#"lޠ0,QLdre˗1gּsgϛ<gӧQgL Ć@uE+cֽwo߿>xqǑ' 2P9"}Nw,lb;3\Nbb'9(じ3kiˑ9RF*m36Bf2k)4*.4ࢿɰ,܈*8FJ A 6Nƙl19zl0'S#LR5:#M'([äf0nÍ/ S1,3Ԭ=x:rJ Sn L380pCxtGJ6$Ct#)r/F#1b X' A 4-<p&",&8ɢ4*,h0`Tm#H)#bA2v#giS,5=h=,"r#!#2q-S ,sՍT.ekWy{ײ5An:; * '(rhP 2HD>ё`ňÍzӋFu2;iՍdlԒ ĒFAYA׊gȀ"+cFzg}FѦ9J6> pW߳m&M7vաV77owM'pXL21E$h@A{Րu#)ut"?F:XЦ9j9uÙ6F?k%VVVy$"uzU7 xĶ&/@";"rm:q8ڿm'‰_L  8$Azw΁nІF3`e:Э6C1A w]ؤ?-t a! 8 DAqzX k $ l*aоρc4aW@)rjuf#F5jF'V4$M"EkD(r <$mDk921b$| bz|UR[\%)R*`(NB 'Y0FT"p%N"T6]"l0aHe KH'YDs $nDp;-},)H@ t 4P&$DJdZ|9(1Qn!o P'0@H("p\#8[ EhU)(b/ŏ1HGaẊE5>s e t"%H]dS5+VXֳJu@PW%=Hr'QV%zVfMY%ȎؑD"Z@(J٪Lj5("6uNDNj*WeE8Y'%["j[Lp$t&xiFYX d]ngDp@;[DJp8"٠ r$EV&;=’H'8QTN"<0U0DFZfS"//gFEzD'"% "H+!Mu ZNuH+J5iMIJ0.pBen2Piw8ZR {bxKL^f#mrc[V60Hw\4v2r0(9LfMЅ6tgք$&Mz!7Ab2PdhtSGYJ!%^LS]S%44i.1W?fGH'kCO["ck "qĘH2,(P5O%䉔yخiSkVbhVsE<@"r8n<6'7гfF4#YI}qoЋ@ hHm B('{&  @lWMM$#S ]U#Ʌ:6mrޭwƳmmG">7Jވ+mJ^?S:ǻɦ7g]DW0V`_uwV\U@)>z28#ApL R@qOLdO8E-<q f&.w9"@!}am~>_$#i)H-CE|Ş$ΦLYۭ~0ݥ p &xYfBg:m"XZkL!-o"(903Ȗ7J /ꦠ*˖.BJN"X:.R-jk0@L"-B&@F|"Nzm$f0J.( ȊbA (B I6#`B2jV 0-BMiFEyVp ; "J @~9f k&`Fxv"# # 2V'@2sl",lzF+B(MJ34-{F"Ԯlj9 1 @zLp -b i0" 1PH):D2##H|Z*ɸ EƐ q 'B"`* J >b.p9+mp$M$t P | BB*'R.8 ڪ:'zV뿀 #l"Rp#\2tG0⍦XDr/ⳈE#&R"*,-kC|i*%E@ b2Q,b7"Cllun"LN/C+Z-lv&R6R"d*dC *r2#(3C0#.es6i3L t@ m@p@]* -(\ z-J"Q;rwF(^8"lF51l,>CLA-cJ-/C,)aQ(A \,+V(+/X3N->'F-->. 5@UpHҐ-&D_P#%CJ El+3 ?ms9g2D#\t`T6`FqF1"7#!48u(RX3xI_T&iJbDD&-&Ir2m$rM;P'ZL$2#ZpS"IH /[˴.ò ?P8P'Q}|o0K0~.HFy@DN+ccVKYGdT'3f3MAn"h46t"x3 03Bv"FbiY@G@ pJ%8'V{Cƒ0t[OMAC"r"0hR)"v"(N'+"9"H 9q6)$#Z?ve+'iE kUeO~Ȅ$dd 2HfJZ$?b -#gk56z"~"2N(U3Tx`swz6sjAǼ@`$QJ}r2"Z"R+_4]FPeM^V7̲ 3uGKv,\!t3#T*t7MR@^24q&8 E*cr]Fl`8eqTQo5#le#j(x?gqFo4^*# F3+Xe'5!@1f@I sL܋#~30NnEOeH2'&F3Z ""bpM v0$31:V7Mws8?u#ҊEt #tv-459,SQU0Tq8bux|JU;b_p ʜx0#gs5f0Ff5^٫xXynMt|wnCiT*zV4mbSCjS$j94^_-(VL"4|>u️& $4}@7ӭ&".W3Vj1qb;% uq9@lѲ5"tQ"Gr73k @+b{ 7"xm5痃+=ez ;r`rS[1!/ :zCr*:r*ZRf"`mV ?Tov#Ԙ$f:S P?"AjZ~zƬ g@.#6heQ?8T9S&cVJW"-)_3KH4IqOwU+{#h)09BZ3 t]z 0x!'⩑ 򪼦w/3DJ~۵;YhMp`}^iR@7:)X&C ]L"%8Y_1osق0pp,1:vYcZ/)"ċϿd2z"F2s#YWe[[$>"%Bf "*{.`r-bv*k!0I!["|m/e}x3 #`zf}cZ`p^^30"ùꞃ]utNW{:aWK bƵïV ̮[% {k}" $^42hedl**EY~#`^'w-9(lJY.0ϲۘP%M!;J3ֶ* * x#Wl?>B]cNsk"@mp6#>u0 ,#Q-b[^r@@>BF0ziQ. ?#>-#XD 1ƃ -z2ȑ$K<2ʕ,+ظ19`lP#q|1G;\AȚ6hcIS7N*BE Tu8ڵlۮ[!%Ҋ[O(@D`hTŌ;~ 9ɔ+[9͜Y&9`45D $ )zbOEر΃#H2oDBrqDB E`kSrHnЀw!10KN2"B%w96Hi\Cw@  H!G dDIhVH L@7# Q 90PydgJZ{ͨ\ ɵ]ٵ^ @Z}9_fHwHZN> eRNIeV^~ZHphGƚk"=8UwIb-)M&I]")Ss) MI7lG@W#-B"-X!H Kwn@%wPQ"`*Qs 6o-e"!`wHdbCIPP[62Z:>ģZ>U._Uk !lKoދoR$@"ڂ)IAտ05"z`t҉6I$)QEІ=)BMV d3Dy 5kGjI4@@ PppZolE:4`@87 H<W  v&AMp $жtiR'Wgv?Dp7\kQ'g^ueTHAz馟^aa#yQ%ޑ MtO|o%$dI=@ѧͲɑ\"$0RmcIl2N"C*8Iిm(AMX>z/?Z AAUP$ MXp,l _ 4 og7(0 Dp8"|@ A JxBqDp|G<D 9a B"F/ u@ r,$I>C*rl#;1CKz  +Ɣ2x$Trl:!'Wr-o\r/,1d*sl3 KԬ5ljs7,9ωtsl; xs=|s? Ѐ t-AЄ*t mC шJtE/ьjtG? Ґt$-IOҔt,mK_ Әt4MoӜt d|1^B{1Bg'8&0W}~q| 4-!O2[Q 32AS<@yK6)ǀ {SzЁ1t/]LR~"\\"|q D7~vw-}a7]2_Vxue "s7z'aD*#w 1w DW{gg z ?ixYqᑈ,d?o!X}S.0[.+3$%A"b4lX3ry0zA9nF٨]~hȋD(s~6qx~8^>{CW(ѱKW hw, h A]#Q0 1M۱|'Rzqah=-k7:c2{DzE;M]N iw*8#č0>) ܡŎpЧ0&ߧLC!q8 X ]Z{Dw0~Јz '@,vH藦Q!hIgp m{40RiTi (}镔)a)ci eH"SYI} ).ynmY8Pb]PQPm QWO0ylAQw @YZ )a]>,^ܥVbpqɑ@uz`?h V:F}x$*13à1"C2Qa7(f1z3h7-*-/ZNa'h([2'Ey3Qw-+1eg>˥#??J` J#ahY 8O DY q98 -i36 qid᜿Jw13Wq b@*wj NVh5I.S 󠦠 yx8 r% v3]"*&X{,]Z%/ȊY 6AḊ L7%A&E|S02^!ѬޚaZ `=ʯ2j ­'4~T/&a}RPF(*,{7M"(0dd}4A[,+75'j zW>~XWwHj #Czq1:ZK$J9ʳZ {MA `:*G*{n D !V[X;  ,|lfu )˹ka/j11;m7i}7 j;Bk2F8:jۯciN{b+ ;S"۵kKck 2|o%,ɏ8{F9D{pn&ۻbR}ѿ;CQюiKlQk11 mql! "L)* frKgXQ8|ek;.\+{ JL2 <ŵWy%1: q 0+i:k7|Ak=Rt+w Ĥ DE~9Ч%~Z«˚1LD-|A,L+ <_ʨ6t*1Q.ad Q: g**AW {lkqsuР|j ¾av 9k|S!W$%KdmҺ\1rT=Vq9cL4کڡ*`z2Ʀ@M Q,}N@l+ܼJ}4 `%؎m ]ո؍=Խea(ٙmimso=M m , ןwI0ݗԃ=ԆYz:=aݥ5$|-Bl.9 MӖlZ&> Q}ci8Ё ȇ O,m% .C]t ne- ؘ1[n p}<j$c0am:{[I+P~> +Hǒ:=h>ᛃ.,,UWnҦ?oi^ m:QlA&Q p0dG xnƿV^gb\}+uEjtf5pi  'Qqn ?Na|>)z|lnz >A zbއ|¾]q[ mq. kxQjSpm1B@MM_ofӺ"t 馠 a t~MޭR3$A7k*c_#D[9ho,~C7&Y|3>@.8~ry?{jo)AYY~D vdq[Qeۮpla k11mQGX{,"/T\kL $H `0IAS "$)8&"E6 q`cc% xĕE&|z:YrDHu4)qbŋSv,sbhR&jkB&lBa4zj3qA !Ƹonqtmፂp6"JY`77t2R 9Is<3D8 4)6i &t@$o~gcq)@ _^ &S/$XP~~Ϥ4⃠(PPA+ `"n(< /+X: CqDK4DSTqEtX_cqFkFsqG{G `޺k$21 @:Nʄ00̰ELIKȸTs54+&8MK3;94(6DC3 9„ȧL2%1M3' P2%,MҒ˹@eKT-KԍR%MVV ]'ګ $,:X:3Z*hvm6>pÚ`\(p&Q5Q br_~_S:H 6`VxavDX Y L_ I&4)⍢.%wrTMDV'e=X:O6֮cY @e0wp>^䥗/{ :mK%@i ]MP:":%z;0EdVk #PyM!33!"T6J'rFk4>&!@rX[u "|DZ3O#V}us8^8el}w{w~}N}YUlU g)=L Y:Z ߤPy) p>}O~yBqt3F; pD@x_ (%~^@0Ephj͆%x+!eZD@=,_iEǤmEx {L2Dtq2W]ߣBO[c;<@K8 G6,E.Qscy6f Kp2H $' Vxȍ8@YD=Uݍ,2 #r}&A&3*PPD;UDd) IAK8݊=NƏR)bIH_r.TGYLɜ2JlǔR!X7tv ,7Rp 5X[3G~q7E1 &yP遜dpы6DCHf0֋hK]RIh ` G2"C%HHJtI5&@F U6 Pmi4z Nhp4&QdtT2u NmYiG:A9Z=` ˒&uM}jH4~ IUS.iAe TP8)OaN88E,^'Wt7*mF6N{va6G9eʐ" G64e6*+#0h ;>͘\G[ЋVmbI\< fFL uM}jT)RjXӨ5SM"Pk` hV @'EyLԲ mxZV#A+&wQjG6wRf@ݾƤ[H[$vǒNPi$ N4i"DBq-q3;q=q{ֶ+}}2+\aqtmA)#YB0YcvlozѴ`NG]S/723qI`)'uQ^sܰMS cCƅrĶiW'^:BףNf'| $>?<x n|-/H2T>#VF b {uϣ;N|m{^}2ϢDx䎐O5<JwA{}g_~mG#3%>ۖ+}#~_7;m.~ȣ  +:#?`=F>@ @ @  >vʫJ4H)S@ AAAAbNrA;p KNh9[=A'|B(B)B ɣӐ@$M>x??&B6lC7|C8wI@$< "p"p@H²BB !A14 B6[B)x#6pP?$$$&$pxw-?DAQOLs.RC/9\FflFg| qn "k,oڈh脱~ CP qTx M1)ESHx@l$!C[\<8k,9"ु Ɓp NȂSy Gh[uLܠY!XchGhIIExQО]R E`@rsbG3qbYxLA؈TB[! x{>;qI5GfA!,=Gd K=P8Eh[/`A4HI 1bR3/iO;. 2\D>6>C Ⱜ ^.k@8` EFf 6a]㏠^NO6 @cS>eT.acgCߜ&0c Ѓ C=_͉0KC ' ]+ud(׉X1FB^EKk:Pߏ7-c֍T^gvn]9ۉ*tfyXsd]p)a5gS q;fid^BhNo3uy ҥbiOڈ`XNCugNi>̭1h]B8 m3Mk[\h@g@bP\ y k6ܳed F+bmޠj39>n\ ?o^i>k~BI"(gwz=PŔdܒ݂X6Թe 䁍- 2lũE$pko-^NfX6ѕLk^mN@O~GD6 BHH SMH.&Îu>д(AP^$E-emⶕ _88oN>#U֞ooθfɯ^bȣ =ޞ ::mXJNUVpi#| Җ61;Kjdo枴72o4oq;dos3h3"IIpl̘pLHNJ'qny(;UdAI)<&҃JJ|-۶n+w.ݺvͫw/߾~,x0†#Nx1ƎCF[RԃAIP%>=#Qbp.::b m*Y,g4vC5>ͰA"ڔbp8\msl:ƜufquÏ/>ϯ?peig y =Q%i{1]Dj=Z8&E+F9$opmU%uzERD=VERqZx8WA[r٥_cYg&u[fuVDWD uGjEA&Zњcvx Gdx/EC)զwEPeE豷VXR$FNUQwШ5Yٓڜ]ҥ'xhګ[Z݀ݠ Cjpѡvuڃ 5Z'zlhh) qucR@$DpVġ jP2լƶ[C7 sܱ#0#C F PK]"H5X9AvNHH8"RIBsVDi|#H'QdJ yZ U_lTe$iO&7R#Bk|ޜnwA*}J\"'B1dԎ n"(9v=DXŐ!(F1@nhJҬo";HoA |K(m]ҏw*TYl9x ~< o#>_<C><+oc><;σ>=Koӣ>_=[>=ko>={?>o#?_>C?ҟ>oc?>??o?_?i !aq??. `@]"`F0`>5pA#( CTf`z 4F`ߙ@'x _ ` '`@f R vxu _`B ~FLaVa4B™l!ua[|||BhA`FaFaa\A`d!@pv|".a!D"Z4>(_#l)6 *&%I"6 ,E%i@&+^-'|%b"/-6`.22#bl3I1 5%xA #|X#h0|#Z`6rc3:r%6 V;<vc=b5ڣ` $@@Ɣ#;A_ lB6 CN>IA#d!!P$BzGv_` RH`B!ȁdB%l%ȤLNL$~MZ_!LnD!pEMb t )|hlDJKNO#X$Z4PfLENdW^W$C@X4%G\%Kd^֤M&ܥ_V'$QrA!@[%Q%R*\B]_R6SFTV%CeVBL%\ZfR%PEdQ$`ҥ`r^dn}BFop%\p&c(J-HI~\XV.D^r"=jn)%kn*Dkǂ5"El'p8C@H*[R+5ٞuZ{n@t4CD5E[\gx+C8_&6G;}7Eﷵy4;;ρwsBB6`Nv!8s:K`{lC{{{/|xc=|M<ot󾖌jW`J93>rq )C1Ǻ)03/~/k?]+8يKrb鋸cM2x@=l)VR(Dq0 Mx+ty F.?A,81B 5(\AΗC5ziRK6ujTSVzkV[vlXcɖ5{mZk{`ih[oh''U',]z\c&Ł j߁xU2aKc*ұB aU@C*xT@Ά`bC27A*aꁐxdM8v0s2_:~P@~m~ <\pAJa(. ‌ @)D{)=D 3H 3,TC mD/!ZE_lȋ$YR \/:XN8b j;W'ؚmuՁ|^g=v>餕y5in?e,=-TրU5ju}u҉Ȱ:6y%m !B=()&b2;{4(pGniONbr|^'*xfX^]}grဝ}(x朗u=AO͖R"M/]:&H#S懢p^xЯN;eȘݟ3TZh~ {Ҁ"grh"lj[C.5$ IPW8!IvS]vWB!$$jG@xY?QP Xb@NP { l.ؐACW蹾I)9ܡ)zh?xAuB=/HQHMBH-6^1%e|ŃqZMLI7Ƹ^N8Jek&IYJSV PRUE ?8D.Ho Ye1\a! zЅ^".ȡ< TV]8v)tcH,gY[$kdn;2Y)t[XZViT?N0`@VIJݩy=bҞE` [Xwlzdt˥IJf9Y~]b]@*]EZ> lζ}ny[#mJpUr\>ѕnKZt]~x7[] ]^|{+N \w"w`,@@)\a _fE0E:@8!I\bWf Qb1񌕢⥰9ycJ\d#Ik2d%?Q򔩜4&#Ue/7Iȁ NnЀ@m0"07!QHp ]hCqp!@IY]x)N ¦ ӛ&(h )&cGjYӡ~jjW hip4'}IWڪA;  Ji=NXU'egg VAQ`W箭$IU>DͮKpEM$4޳S6QJ֪ڔ,@PnD)w΍¡;wNɻM]Np~wpU jJg7sz|v8PJ]X5n]|viqO~ͳ)NAd@o^N耱پi;i,%PL ! H`$XXݷ)vy䈿9I곳:U_ى& GTN =u@? ۴*tv!, Jsv4%RQYq7]++?OrT 5%N"8AA-5T*HD*EPgU)BWW= V V Hq9 BDs'#SBᐓ(0@S: V%v @)p))CE2w:! R{SRS-t*( (@`` [KVOV baY b0U) 6wV*.0t"t5XQHل"@D @ytqMƋs~\Vy)* St6-i=]DZO1~)2ݬm^'ջ.+}"뜦u)B(!^(N)V^ B-"ǜP7>%o M~žW`s_ȩ2f sC)ݶ* /7xϤ}"*]"}/MC!tǟ+=Ց5wB>)1%XY ?XQ?Uзki Hp`&DR 䰢ŋ3jȱǏ CIɓ(S\ɲF  'E irgM8 ɠ"B\Vp&K6 !ȨM !QlL:Q,Q8U#<*@È+^̸ǐ#KL?c޸hHHjѫB%qM8cf(Z5F ^-R]сM )u1 oسkνreZp \p NQQ t\WYcy_VF`ED | IבjAQh6Q6 ݈$h(,]1C@E0P-QJwWF<А x FFEE4Ivp1MP !P1Q \bLleY{6C9YsP$A_bq1=h 8ѡ&}GyZ1ɑ{{ ꛬ꫰*묖d<B*ԣ@zP|)pT9hD5w<%_1 +RMy y yX(0"X*$kN^Bm"҈OǔS1 ؾI6-a% qpiCU pF$7ʑlGA4l8Ҝ!!gL& IABĴh:ҿ69]Q'Wz8. iԫBHQY[Yb=|[ N߀>kZalQUǔ~" bKGxұ#xHGzn mq`>t^ +~!`:nij@bɾQ ::VZ觯>e>E$@0p9@87P\Ar)}s W,Af:# 82AY 9X {CLEs"ӱn}@ HDZE QO  <=e%JHJ9$ =^pJ ѧʥCPG!_8ɥp9y7hJQ)JOڮ: C5k8J95&:u5i sQ_#vIJ] Wj NFiBѤz) ìxi:;2d@ko.ЩCd~嚱ɱ iK'WK٫|JdZ*0'hjF0{,/0Zzt}OJQ<nM 2o {(lt)/89o +,0{۬3Gqà! Zpf90J닌?&* ;{QE\ AP)?c??}c4@~d@$i @g`@dTo<:P w[u" `Bj ԙ;Kp`@jCg3m $`փ@5m>Ũ GG:Gq՗|go 1ɭBHkiLfLdSDL+0GJˈNp\/դkMͲ SUcuYQExFό M*'%/|"AL".<\̻iuis-s WTW$WM"|M\Es\3Y .93 a}(Ǖ[ҰӨ[,}:!Bӳ]ٵ]tߕB=+@-]5>zU>vFFN]V}EJr`b3Z pp&cl ~Uֵm]vMXz@ג$w׀}| I~؊KZtLD6Ռ]ٖݮHmp؎ؗ=ڤt{yW]ڮ,z ٛ .y9j %tyDH"H Mي mэxM977@_-} :@ 4pw 7uX¹yIϋh VU@̼UU4M@ h'GQ0 3Y0΃(K2l>(1=h>蝠SBtBH 5K>a%[Ahw"u![x1;=Azr mIC]F%bp pm Q7^( MTb#7Pm 1&tDH 3iA 0V 0C5ճ1Wx2t-^p 2NQېT_Vz`ܨAZWU:+]H +ϴ<γ[x_F |ā6I|~qC~)sM(f0#u5OZm`$ERZs8{:i7Pɞlmtu7 nkTxX!9$- $#ӲtFTr!,OM 掣q$GAHJ/nUԺ!-vϜQ(01қuBaJ@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5.jH'PH2M.$G=D.Uw 45k:fգY pB$g0T%مDf} ۴ u` U" &Id׋NP,Z;lu$+M޽}\pōG\r͝?޲$<#0v;2ʻҢr(X`p`rzXvBgеE[(Xh0T0CvC. p  Ǵ$$R˿F<+bHP"KS dE(L1*SS;l&lF;mS! @@M-;86zW"ef 4H92l`t{fXt?me҄ºw& ۳O,F=wwwxmrv 8 X8hqo!W+ o6!ŵjZ/R@^B=:]H鬶igcB&M(xD`@6Ёtp@i U8+u(NX@6P/$N 2>1_^V/ѬO1Tַ7%N YB53q j}[q:FZҖe.uK$ 8'!@;$1DPI}ebABIM"APxV}J9Odz-6pg<)O#ѓjD(aJ!]ʓPx:hD%:QVԢ%pAUJBq4$4%D7C\S+0&'m8,Bu|2*p:Ԁ%m5 D@B} $@[DjQEUvի_kۀ.M)PISV`^J B=de'SqAJ%: r9t`{APU <_4f*A6|CufXE;ZҖִnEk[0ndu`D쨕h6DuiB͙j%-cKT7cAL١: ZDw6"hc5+ŝ򇺠Emzջ^׽ ["S%ײ+)P[q' 1&R[o*k t'8!suB܇@h208Dmk . {uc?>PY0e@ڰd&! ;[G;ɉ~ ZV,{`tm!BX ,\@;4r[0g:uv=S3mgyBbrS}(B~;;7r%=iJW t'pd'q]3`&ˤsj hpb5|(D Y&[s+KS/=mjWז4$rB=@iCЀa F78"ZW$x>HYG.<5pݬ֨#^wgATv143Aj^ x5"Sm6[4!P!<Ep*k.Q,Cv,5䶇 `wg)bD˒Sw_{uG"6>I P}V:Nd'ě#Du9kמ3SN \1t Lan 3>+{E?zҗS&E2@(l'YN()D|N{F" 9$q!x).BF(o#& >A{RGտ~ pIl 0xj$(#Bhj$W777P2+5/$i( "xc;H+0+;<20.,d0kB*1c` 5&B&F`aXD`EV:;.@ddCNvK,XP`Q~d-b/v RLdUXenST6UfaW^Mb6 &H^U d f>fMcm`aNoᐰrf0gK`O0gO)2.98gHga9.JHhfzO(9g.2 %cXA- ~wy&肾g `Br.b9~t.t^vFP8h/0g{FFh.Phvhn꡶OȀᣖ 9`9B` `G+e61HKa gq$6>1` K^kAd0.HVj lii/fpj jj ꁰꁰ+Pjր.8.`+H@ lXlf80`aV`A`1a8.@F/n?Fl@l XnlN–`m mSm&0lC`@gnlvGpj XNVeSj6A p>^k p@fBqn@'o.H6C `   '2cl^`O,D^.o >@&ނNn6ja+ǀ'2w7nh@oA׈1`F?NsSXs nsE(0`Jt6mSs-GT',`dINnStS uSs k;'` .H\@ pu^u`u+oY?ruIO` X/0pҎf mivkGsUg`a W` X3&pG`pb`vھ`V/[X@F.b'6`S'axt pw`pm9.`,7`7u yg(A`X` Ж[ւ &D>/W/yONqs 8!qpol u/`"?ď`W.`.xS^6ӟ`hf lk ||awG~[o7'˿> 7d|kN'9ew}S6~Sl.VfOgS^.A)S=^!Ĉ -1$xE" =DTh$ʔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m)ԨRR:ĪJ(dx!njU<GDlbD&4Qq$,/9)w*|4+&=T4X =)% Jcb]h)ؚl%ˏuߕq |!V3o9ҧSn:ڷs;0W_Xii;; ;TQPhuC ]wU+:D( ePd'F.C">yN7ļ)GP $6%( 72| #( SI-fO' y`V " V.7ZFX@1P 8I?4 LAEA?/!+ASaIM1Q(шa5n AC]`ns8 Tӈ! $g'䎘`EhA0Jhđs]򲗾%0YE(%$H1 ""s!b@A11eJSDPY& {xQ@, &AzPkF'vINg^ HC8΄38SZp4Nf7,pAfc#:jvv4%mk03fJ' e,x"6y܁>St0m]F7ME;;Tm}1)6A-adKxUSoôsQkov: r$!yJ!t+9̟,7c 9Ѓ.d:ғΪON/;x9:ֳ>B].tY|}n;.4g[L#|~;/x0dS<#XcxK<^ʗ Fճ? lyx_=gxW=>o̿>9_>5j퓿?_z,?G?/7I6Y7h@܀M,B<@8AMt_Ʉ   D'<"8A>@,K4lń$$$$A6@ !:G^>!*!LI, K`B܁Mhغ `D, @@RAB!DadM[4@ "<X$v`L,Bݴ=L "))u!&JD_B'I@,b CHߴ)K %Bb!>D!J@B1# $2."a cB<"CТ1aDA0/޽# @#(<#=֣I1jcD ^5"@bD@2c 9-@B "A"KPA@="Fd30!ADB&@X:>DXB"AzcBb J8E?`<ڣuBA($;$R.>>B`ѡ DD[Lխ%)EaJdDΤ)TdD"D@FFAD-r%X&D;9AL2KUdJE@'dRΝxb%D@H ['TXaffP,e6C ޱd"]*J,I8"c8$TRUeDef'V!fDl05_&)'iJ8cxItx&@-ހaj.}3"ԧ~'zDa\ "@&B@J~~'|FM Tp@fBWء5&$@1J'QhNB2^[b` fbx(T'j_$@)($ j&Dc'^X(l(J& 5vCĚ"6@|J@~JiM`J>v!/Pi}iQHAB& "%<ǟ[BIHnjO}x!jDJČ>Ji0!@Bb"DT`JtZYTBhBPc JbDthceC%'J"n#%@>obq8(JEL%fPgE,*AQXAJ2> 6Me)ID8߬FԨ) lJDFkDbY(+$\bȚlrBq\Ś+$p*J )l|X:EbYʲQ(R`(c6 c"D_bI$fJ`W@*ʺ@ĚCTjFDbJDX&bI\FfI,lA溕"ĺFΦL@$@D&& ̀`.תb6,C-NMnDdj%YkLIj6 ﯆kDmBj.D iGį $LFr~BE1osܯNoSt->/o6/J`o5.MpfJp,&lKX~J8gI8*dJ̯DᚰD,ԮQSRw'DZEIzrpM@oT0dl.R qOq@0FDvgJ8oNnBLMpBJf1 0JkB/R0D1A.bDޱI$1+GI' An?TD'D4#!'"7rB<2LtB0$A K01&G&e߮&#/3&/+!)2/YN`.u2D8o1#J1DL[$-c;g5GRDȭIKz.3=@t@@ FDTV%8D lk'fAg@>wa?sFtFJ@|aD`4KJ.JT@K)ALCt,jJ@Df=EIh4S\ı)tBFkb,t])dm}Fui/,@ASK[9/9~NgbYV+]J(J%JRj.Dk).!5BiDpsv@,Ӳ`gci;DR 3}r6AcD6A6m&洵,%+IP@NA 7LDD sC& ux,RrP̠dvo7w@DgcPA &w^ݦ1y3y!^=5fs\G<τ%^gsJ1Ȟ-MxsBl1Jp516[Jn}DGͱfvŤZxL~WZbu'RCZ7l3E*n3- 4DsCpKq( <dUs79pG7Dw.sNO/3L5NA8NI'{zݛ7MޝGdvJĚJ4I187R[A AvQ9IL-IIH_uC8aJxDvk0W3oGOU؇[EqcI\ExyJ:BwW޲?GDc9dBD\?DTހÄGO7]Kl$#ğDa:0z>vL 83>fC(*/m[+3X:K:DHs3ʯ<˳<]lgK9@ 'b?mJwۼ|:K ÿzS:J\,}K@)s(D$CCmX~{dqvpC;25pξI,ÄcvYCV>Ik^;D=NM,P`'vf@DEBAEG&UiSOF:jUWfzU'AHtԧHy:<Ѩ7&z6ot@$GT򨎎N*&hG ,B$ )VϟA=tiӧAvII2(2XT tT\ AHaAU~ lGמU\i߿cH<)AC+BY$2CAo hn@@AX(0J()v Jpz/Ho"H8CqQyG:͡ZN ,nޢh&#`/"J8(=:!'"B"b"BS9BÁ:? TA Tʺ'#(τLM?E@ȅ ].Ѥ訹0i)!{a!J֓=$DKJ/%Ԫ$8NvӐVl!ebb"HW_o W܉hS8 p " 'Ek"2Rۊ:O"R/N+5NSɃM"> YI P0Phym.ȉN([> QS!V! ʋbBmʹ䥀6N "&;bS&(ms}[v۲ԣ\V(]֭HcxT2dQl,r-ͨL՜M2 g4;3y`>i3} o{zL ?(xh]ePOi@<w˭r:Ufg~{9!2M~n:1 t78M sH;B艮t qf"("D0!SۛnӐcP@t E4u9%% z:ٍRٵ0xƛҸ&R{OyƷGj y՞rY>V`8 C + ~g>7D&Y{ex!UGn9G7PnHӈ[z+f$E\L'frx&rk<3 `̃[@)Jjp% SnPtB k3 Az=4: uoYT ZK^ۍ$L(}G@ ]~BQ 1Shh:ĵf+?+q\⵽Č݌3%SZ7zC>I '܀OTU8YS9|@YO<$a=Ez痩 o jri?D/CB؊m6끀 )A! p~uNL`/ E顠#x!&興" D/%o$,/"SoR n⣧@L薭"06bZg"N"n p}‹`̢iNj" BnqB/!kN@&se"P$ $(%E" &7j$CL.1r< *#-)'p,t'C) aS0o"1! !Li*Vr2 (Q݌b--'"ҲP&/=Ch!-x_q$ :R_s b""2U,RB"-m*/O,/]t d'9)A#R)@k)aG6h!m*<!k(C,%8%,>$ +'b7+B=+<vXp!\lDƭ ,0!(E Js@n M ]G[H T' |xpPFeFmGuT)|-KJ M4NN! N N|KPo fL `p94I{v()QROIC\tTI01 *TR!4T @.!BQzD.d @>M# @6Gr5!hkBsI E ׄ-Ȥ5K\5]Ǻ 5^u^5&H޸m]5Q13TA #{3- !$2)ʵ_A6dE&u:p!v쵈mcudi6pP$6%`'"3>sbW;X=S3!*!64;"0s2@]A>fkތ2 bee!>mZz2lqtvHx1J"Tx"h)UdBEh-`)6CO2!6ORbNkr17s;jl3(bցhp}D4tM*u[t9s-D\vu[׺tWp;VêwT!ڠn{!"wu)luaw7!@wOYV]nl,twUQ||sR]i}b4ޭ¸t]f){bj"MAӕ8r-ys%礅S1>w+GR$c Uݥm18)$gs WQ `Һ` :'cf  ]e!<=!Z!I#|d %@1ߐ;SZ2?C9"+S+'LrvŹܾ',[ s8Q%rPnnE!f"EB^q >):!=:! LtvN4M Aq!=:р!+"͍W}?Zٞ]+,ڑ[4_$oE",>3S h@[;N7?L ] ”8;!<Ӄ,:6, PBb(M 45 ΝfDaaN3 )9ቔF 5A`# [vjN򡃛tڽ+?%8WOP^׵!^w ɜ=g;Up9uw$((h0"(UƥhcäPwPP 00/{f˛?>ۻ?ۿ?`9 -B7@Q'xPi Wd3=@]z@wxP"q5Pw,dBz,tp-RE:0D[4!]Q` )T E&2Q,P P GaIPWD_B%"4 P WN 4I GXB@Su|']$Yg4!B40c{I8ФC!ƹ)B 8(5"('C.taC 4C*`AAsl> mNKm^mniǐIx 1dBU8 $v-@ 0^ g"0EHЋQD()Я]$ c q IC1D!G<9Gb4Ip9TBQP2QR$N?7yMY*ZF@bMva}n QM0w,KP'zSig )tŦ+$ `@v yONy_yoy|i"4E|԰)lQ B1 M jWBSGN/0Dԝr]P"GY1P 4Z8 0$NOPO3T>6Bohղuú ]ܹ=[;&igڅN n'+""p$, Op1t  !qDĺnB:"LdX0 Hpڥ}烉'%DI nX lWL&r<"7k֠ȸ9dɉP GA$Coi E5NT#hm!.D'1(;LU'aʹgQNRt!  ` s,1L2W]|y&O P7SĮ  d] $CZid@5KؙA |f "f>DzN@G&p;,y&R(#A@yPR&I̳=&B'yCT:N¤T|`㳛Vf2 Ԡ uD-QL%i] QKNM .E>)9s#;Y29k>OezW-DyfҺHꤡhFP.DT$yCǤl` ,XBSVo8i-OM8mk_ vCh_sJeR$@k3@` $Hhѩ?GA.g5 ` R݁܍)ZWtbMPHĢ;b[؋FidgNLz x0: &)h:BReE[jx? |HGh U[T $Yp\z,B !,\+Z[dJd>(fqJxM z\b Iz5=J NIV 6U G%HEVGXD'tå3gVHKzҔ/-=8A+ksi@շ)oK\"jLd1Bv48,zZjU2A?qzVDi l $A!KHvM!LQ~_Nd,Ki-=E^ch}^T~m2A||xAÁeNc=c3zho 35/n4VkĻm!YU..Hmm\(l@^3hT6?Y)≣,٭:1@<|@a!w)/ G1M;! )cL>b?EN;FӘfpN&#HT7xGh(yutgNB7̆qcvAWATQvUN)%7@r- F:eإk$;}`'t;sx"!e0 R8w!4N6HPp }MtB`x=uFBQ1eUR a1pyvyupe?-#lv0.*S(~sw ȉ艟:18p7M(7::st"Ufy2Aa@12y7R/(0FQUBdg /gyyb砗p9%'ʹ(AI%j'GYRM%vroCI)y~%W#qPeEy߅G{t21(R:!tQ%9xac:y+1 9챒!p.`Au!46:iY> r(ꨏ j:Ҍ%E1xq[ywW閛yhz@{GQ92kF Qc p ^ah1(Skuz3 Yڥlg,Y9zy1}#%jH$:5 {-I[Z*[* Q@ pmJ7,j :PGѱG$k X% Δxb@֊[[ @uK:0/qQ|A3tQ*'dVSi|YT^rze RYrdZ5-0[;}|/PS0t᷀+KPSжRr 09C/XNfyh u):$pjw 3{ u1D u5kϻ.K9p[[,nh髾P+%*o~:2.8}xwS˿ !, Ѿ-LY .ZՂ4ѯ3z9c7+ ÞxX@1<-$v )"8;9gE<[9PPk-- /lQw3l[R@۾>cXtC*-N|qpT\N0w|B,rk9}LB9MDž|L""0džȑ/, NpƑsɘ/ɕLIɨ![ʭʯ ˱\ȻDZExm.ʲ ,L b+|_)lb̂,LlW[;)Ŀ|lZb!Y,\P9B "Tq mv!4ёgM%m'}a@!ͼь1-3MӤҝҦP5? A=7a99;BKMZ8lDCH7@Kz78 N |b F\-C7IMIl H=Nm؇؉}BNץB9$ّ݀zPs$lLpPf47L\ϋZٷ՜C!ȍ:[mo^w( q: Km /4QJ ~SPPwn.xMAj@(~]v!ފ6+Na44.6>G}N뵞ХkQhW1D8P 0Leq9tt㠱q*@n0D Þ~S}X(=$(Qg0Q3:UKW"uA^"3Xc (@! 4 4ֻ! w>E.[vaʞ㲆="ga,ta1 g5N^Gc̪J"j w劲ge Zyu"qJ0L5P;ʠ?OuoF|-5GK71)lM,wƮjP_vu1z*|8o_PG{/bջ8Mk 7`bc(Avč/otlFNP/,Ih7Te(~LA/7OO  A a$ xD'&CcE|4@bN$M-xG HT<'&I$ hr`0fxa )!RYnWaŎ%[Yiծe[qΥ[]y_JI g:HSL?&M2d0#*s ۉƜ wУ-<@R%Bո`wv&^qɕ/gsѥO^u0,X"M 7ȡ-LLMXqyD ik;Ht{zpB +B 3pC;CC!S $ D5I$zpEŒ*oHj!B&,O#ୢ% "ID0sL24L4TsM6T ; Bb#ĢJQ<ڏ!h:r@+m pNjj6sHvP\ӨQ-тSN:OŇ J!QssVZkV\suW^{UN`U<=S0h$8HFC%ZdJb&i+%JȯX,?KhP +a-7?[lMR:S,h|p 7pr᳛~'EdLƎI.>]#EoerbwTRU%z9q~x7x7 ' pcS)< '?J": nӞ\A$UN߇+EkK햵? Cf<FP`-x@ 2$"$1TXm42>||IG`tLd;R+=xҋb[E$$c xE,fQ[b6(^z.f%:D$bYsbC`u&#6%DƊ-1 H&!fc-yILfRdsH(%2zԘh *$9|ёv"* u*S%2JV5cPyJhKACNFSӤf5ÿ́<ѕtC 7"v{=j;# sK|NY>K,1b `S ehCP)?FI:ivVfsphX}#|K &XVW!YA#B!̈́hQzT&U"Z;QQLNуhs $ۨNXjD&Ȁ}@ϊp * P M&Mc t%la {XE=i8m7PzZ&* 9wVaiFX{t1MC1" % {יJ@[eb}[W`O:$>!Z[w[ʑdE+YΕq#Z5+D|!A:M"+hX)n>r Oro_M~RAfB>Zc2%~'2$,IC:DlT BɫK x+I>u- f9ď0S|cX;\dIQN8Q$$y oA M'ɦ˃(% T dMSnss|\ŧX]t>{BȠ9ik+G*eRdqӒ~ث!j js]jX:+6rE ?k@MH'n=r&k0B %P?]°Z4B̎~[{,}*/Zfw]CY@\ zUB6FH8x%m62> 8Hs?N;(M ΰ[Hź]r\+e4xͩ@ʬ+Y6 N^0@p"~NAZR6OG΄vǝΆ}Q{iK=UO:A@$x9N;! >E֊Ofv '|lT x:IbMꝘgGf[]'~ yr `C%I'װИ-[V3)ÐDkZ?X!=C`CAA/* Jc+x@ȿS",4gCH0>AC:*A90;QLC5\C6$;5{-q:dKC:$;t&8>CxCs8XD˚#dfC‚;BjE\3p#P9S3:CC"XD;4GS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-ZEHX YK-cZGmۙKZ :r[?5۸aJ ܗ넧\=vC\u7Zƍ\W\m5C۷\`N`^`n`~`/` ` ` ` ` ```aa.a>aNa^af!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++333;;;CCCKKKSSS[[[dddkkksss|||28#>*<'B.I6Q>*f.i2l;rK~Dy\KVDeTjZn^`Ovgqo`>6B:E>G@KCOHPISLWP[T_Xc\jdoiicsmvqys{v~y|׆y13:@WOaiw|ۑޘݕߜڎᣙƌʔ̙ΞȐѢ䬣洫尧鼵꿸–Śǝȟʢ̦ΪЮҲն׹ػھ¼իܺٴ߿Q H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓo-u%УKN33@8˟ߺ *K,@@g& U !UHwfs v (e2S, @x(cA8<00hFL6P&vIHVie\v`^ǕdalIc)ix橧駕h)蠄j裐F*nX 0馜v駗U ꩨr%AjBUBJ%]qB& IBtH*H1;BK+-B*Ha GEM>T(6a!|9 }!)#ܹ܀'O@I;Ɖ /\FP  A 3I)'p 䀄^H@ɒ\hCJ1]yRtP4iSvH r*B X2DtZ$VU l9vFhMY [3z,CJӖ "025r>V!Jm ą|k lR$1fFL$(!u[jժ%Hڅ\ `!}}Ä#h_i؂(H/Lnį ttR01dۇ`?f$J@ܜ"N3B-,D\ bʑr!RBܐH)E#gRA -nHD,{^[&& 4dB@9)^0`# 4|Plk&c6*2p1tA4󼨠e\bV:.NJc2u"%9B q*]hNMLL&14*?H)\BɦHm$.nd*@pl0,!(xg< 5` BhCgъ^r{$gO6F>wF]Tm$Sҫ)2p2E"1B8+#3#0B*ɪJ0AԸ >j@)5QaHQf9 5h Y#3k l@uG)Y!wy] Ɣ-9&'nKvSsT$ȵKI"B+Ad}WjhF 'O1^vo ~x^p 1Qts_HoBr?EdpGb|tG f@( vnp hg-nq vqQ n !!8hs03@o0  tp6&t 2Hv4d q 8x!8Qpt0 ?rpC vhh3i g8`8(g8 ot ^`{ W7Wj4!Wk'kRŠ-Q ''~yV4x5͇$W' '}3折rHsC|Q F2vy'@{8yfq@CL@zOAQW-# AL@2 p` 7 L _ye@CrPrg}FC2zh N8UGt PVOn o1 VhCi'p(n%@'v:nK5W@Cp N2W4s'#'a'#Q9Wry-~R ks+ (ZU@xB"疨|sҗxX 'y}dR"ki$,Q1la5(he#!rq Ԕ  $W :TDg- WtWq@Iݩ@Y On/#)`:TDg H橐1 XؐQ 9i793>i3!ipp`t*XVGCHCvY ֟W$v[:̺_wk-PЕ044~[0A!`#H 3bml@wm9#{ebvu|%,V\Jۗ Gb|ep|y;* +|k\%A>'$j.ɏ a/9r@CE&ah'-p[@dXi ɿό R@dKy$+Z Q@r[_,ha[[Šx*LP1 Tvq7 qT q1X \@;sHRAHs{!]4 %<š%!Fw R63"^AQu*]yim7,!G' mqi&T L=# , q֖ U@i+? @J' KīEː0 [ ?E jMٞM qQ G$ <mY Qmh)P`婄wKE@=émaz)nl5tg07Vɂ{#a@=#ed2m=ǍҶ2v#ۇջv:-d= (ʻ{~"nT~ x}[j5ͬ-4 }=D/qO7G 41д=I7+(nn<.xtM _aL@p naLT`j 6{]Ý@y̬Ww,lS@ZicUb{$Z!u3btU:)Q ]Yl|n%#M>tfF1G 7Q]m/k9#g%#ylߊ]sR2Q|tзS}2r<n@X+.- M% [qW'5nXvn@4TkW邀@$N .(Zn ~hJ~`_47Z 4@~'T0~ Ca]Þ!ٚ|MFfUr߭2Npr323|>#>$;q3D\COjj$X ]% zB\*8^rIC<.aN ݎ nhmgO5@=~q WOCI<ZxPD2=DHq"!hTHT0a %R$QI$S.9S EQ%JQH6`z3)'E@#VNQPQ͞EVڵL}¨[&5D]|grnpFa]'յI_|=rGu/|R7;L`51F;)ӨFz89(v_6Q 3)j6F%uU`rAoXoǟ_~0@$@C .Ȩ: B"@*( k$fLNHʵ>JjKI QHJ諅pqEP*ѣ숥 ƉvĨjH| -+g)EP)eCZ #?@=,j 0Ϻ0! ;,1 ;ފl2 ʴ6rRP>Pa W_UҭQ-P0:.ۮ^4҃ ;}zo8KDikF)kD_0*;z=Oh؟I8Z#J@4\FU@~ل{FƱ p*~ RF.eyT ƖH}hALgXHwAK:2A̋z?z>ů@k$jֈR喐(Dr™L p)c"L^8"!)`C1?X}5r? `9@? ? `A)`ڻ˴1۹s;y@"445GHD#W" k 4 l F (xup0#)y*GHe{ P78D*٣CT/P扃dC@$#BCA|>싉,Ǚɚ$1Q I K@k'P09HFq:7YJ8ʼn8FT(r-aG8J R4&jd96Ijqd?Jc M\H%E`)a˳ZJP2Ɖ9\ uS>`L)rB"\6/LGxd<Ԉ C 5@HCCIp£!D #6qy |G=;S|`M(Ih< |@0x*x\MMQ ɗxJ!Ɓ(LVdq3G)?ii|2Lx˳Tt ĈbF`ТD \T˩(PJTρH0O xJJ( 1 =SNȁ`zL.̇8&HPM 9pH0AP7܀IpD\/D8>T."xsC4l$·XD&`H8L MʐN)OcbRh8LMUl =@K(nJEAŅP2BPЉIFZ5 [UQ2Љ(KHLL|J,& |?fʖʇKˇht` Ql L  9Ёp&`I0 LXMHt]]A8X)]#uPx&/R4h'ф5pȁ' &5hLThEX5065B'XX@ڰ5@ح=;X6=S`6Yh5`x@p"<8D(6ȁhx숪Zl89ˁ3ƅ8ֳ֦(]t@)W [9[2XU(8̉hQg]_cMQh-)Hօ#j& xRJޅe^;=^V95_.C|,VΏՈ_8S0;R%њ 0*UVr_բA ^hOTFW](٥P($*HvӚaX ^Ѣp[T,VaBpo-[@>=`S8cM 9=N]65a% F'uU)ޅ@@=abUAN睈dH8& D2S WVs3rdMbՎf=D5fvf>iI%H\jmT3IkĐddUnA~m_ -BcxA$_T %h|.SA ޲Ud׉Dma(̎P^MK*߷ g- WnME~Y`f؋Ninvf "c?se,a` x6 Kv PFcE&޴Դu-y&NĈ.~6䑠jjj1 燘^#K~Ld*u^âjꤨU6Fעv+^ lPQ%NICkndR`^bV=)&>%w5ֈk?d%َbT`-Xx.nu@beu}VvWt&o\.fqj*WPm Eˎo¦iFD )XHC>OM@ X~.8QX(hh#Ĕnũ ir 5& GߢꧣgǷR e (r1%grImk\?@mmkTqn@*qE{n >em& *hpW-IA)-f aчZn0p֎DL]q~&JKtpk^,ps]j2OcEQ$u!U?дtPnuC˖& m^FQ0f2H2H(gnlh#L7sGtWo&m 7 oB_U^OV߳2e+N kK .A . L (wш†qmywVvgR^s&1 'usAba'o婈Ι+4%Hi]WT'HzuF+3 ~쳰y b`,)p ^*[EP{`aK8U\n#EiD5|x|w*nH>ztU)X)t9ۏ_Wtup'1? zj?G  zo1W$pGWu7jezJ|ΠW^y_`bT,h@2l =0+$Q ō|,@C@$)("i"H90G?/TRRH"̧5 "xd֢8*ڴjײm-ܸrҭk.޼z/.l0bĥ|)1ӈ%PR]+3d tӠK%I.KJRmPu0c, S݄?)4%t3 !_Rh?,U?x$( ӯo>? 8 ^SDGՀDqV09EJTufp ]~p&MAT<%R%)k6@Uz>UU<\|h1DQ 5OJY&=EMUPeUAD5G͉u%5"i&m&q9'u9SIL}4g!Tۄ )YT1XEU"e%O f$T&tA3:j"`dIQuySt3-f" PBZ~*L:nG@>>5LQGDAdO !{'z-;. MvWԬ i)BPӤٶpmQn\IB \09MB\F)y3 0GyU(Qt?Q?adS)7hڔH~F3{4I+4M;4}5DDz+gUSBuEUFO¼b%)8Mb2C_ iEԾUCGS7eJ@3ݕ9?];?).ѿ35뭻:>;|"L8)P)]{ gn $JDžEu啩 ]et;JGلFXtO/tiZ[T/[7DoMd|LO)Y-*ŁaU8Yl)HG-PlP2@!&,I-B [I7-dbZ8m+|! B&$`,ƊlN..[, "DP+">E5֖S$h'Cph6!ceF=e"UcgNZ$eEKV)fEhq. -A,!rT%w8ɍ( {bOѵ|_3DKNj6=e JݱpCzEvTlH:Q< U~ H9R2yziEρ44By N}AVG17Dl^%ꗁt\$T~2LT )UB*t\$։knbM){RM"m*L,~v7ڒܕo(PQAU"U[dV [+6} .L[´T hl R4z}JT(!z EbST!'=9a[s-1&czV&VӐ1Xn!|F]j /2hj.շtPWj IX\}{Rو ' q,o֙μTZ' ~qHI$ꮤ5|b*h j +) *wvHYYLœ0 @YABV `_e'CmZ?[{bC)-U3DOeOenS")UW;d6|MJ&sywa5J>CD`p;O 3ėˍM) ř֕coD~d )Bq`<`_s}#+l 9vsq7݇iOb.%? V'AW y-0hES ̾ U@0 `Zm-]u+bi@/D_6t#qIٗƳp ^]Mg !̝']O}ٴwސGi_8' "@.(B/onl.O-ZRU/"/Dz7$sfx}/矉"/ S8\b;|]3P]ĉQB<vFD@\ 4@ҕMJ) J 1\E : A𵅱I 6]seyK<ĩ%*e4 H< %&] H8l,[)[D0Ġ]J(ПQZP_C @yi !^-@)t5L[=.@RU Ξ`^xFϙBUbAY. 0NH H(21+  Ec) !$L2VMNMDN^ LL\ %ONj\4S EEJInc&줠4e!X$FB%cQWapB!AD@q%!8%ZMeA@TchX~^D"J/BP4[Ezq<4aAl`Q!rFJ4Vh LM"[^1@R]Jz#@cpꐆM|A duZ']ung@vzpaX(pg"'pg'iL'*|w>[yruJ[h_g½  >Y e]Y >h(&ZHF!4h5Q\y9(DLtO&vmM((GhBx/)uxJ8D89h¸E&c@*98 B@Pln(E:E'wzAl@xh(DungviwʅP*)I.J0QOCLc]4iJNXpT& d:Dy4f_l" *&[]6DiY1n΋<^_DUXATnDkWED&X|f@+t)*|Ak %@{'lAAh  ,g[,EU IlJQf~"HH,6\ܕj2@d@+:ƁA,TlKqSlLI AQcFICPӊM)ԈjAC<c]~BjzRΫ:7--1:į: ‸) U\>qĔ*` ^)63D˅.Xȼ^z5Pl LonD&fj@Hzܲgҗ[C>]\E4뀤 ;N /*fdL>DQ6x0*d*&F)A)Ag>F G_C 1C]f:Y$Z$#ZTيtP@ik@$1sZRPopH*h/tq@h D"gb@})ZBH/[nCؼ@=PE@C(Cxk#>Jpm ϲNVF\C *^]0ưA8Z(El8H_]t -& \H$:(I΄|f>+-2\P4xqa Dt7v5$4܉P9H0ꢂT;-BP%D.h&&bqO'V,@˅0BI4\p"ؘ%ss@سB[XW@x*ot OZ<᠍fB)8ec )XNq͢ 0R@ W vl[@R#Bo&B0᱁om'pSp 6W4t\] mE %49ME<H_ d:Ip \»K @*0;P$ mvj@,{X^O>E[ @!t12 dDʅ KnB)0*+a-J>1SCDC $E #IFƦ;Hb_@=(7A\ 9Ld L!]B.%GN2DVvy+vG׏oA B}h׳`D"|*r}A!AA)C|3D 17c1FD4UAJ |At ft9K&E[WN^-FmAPu(iR`$DSA<;De9w7Dդ k@R s7AB h#AJd(iب} \=C@,*s#@9c(ܠbv4QA6@ B5`A&$@C8HjIdcGAi'QT*)Q&9fM7qԹgO?:hQG&UJ48#9T#,U 'dQˉk/V " B.ށQ ߃S 8ae޼rAR .(C?@rA?=rCK;\r0 !"IH၃ >"& bT . 1R;TvZ7 žEVf" 2 ﻇ3(C` "S`С( QI,QLQYl&!ĺ !BDXh?ۈ>ª { -. !V!1Ě.l s2+ (x`*3聇4(5'ϠB'>QΧ;!bD|Ї ETю}!J̠FEE(<1B(N{(0Q AP"_MSK\;B3 G/j).L_72:܁hтu+%\wW2=P' b!cmUkj ;$p*ce<;Di* k{gT.~U?!6:ïM]iqgچ"b(Ǫ*Hdc#;fD䧬t327_~Q_ h0Q9\u{0^?mHPQ#5uQyM07 ,H&!AHԦ00M֐ݐ} DF,pUsT׳1 zAli,(*иއ+ Q)<~M4`r14AbE-n]X0NdwU)U}HJjUdAܕׯY/$nYy#LL=BaJj"y5GKZ)Ik *\A}p:aA>L0 Y bC]@r P\CC6{*aD IE<!Nq45Y!"䰌ʛ\}F)G"H99%z#S̘eeBCAЃrs)M D};k_C ?Hs'*dOာEHprR(#II=@t$,H)5T:dn;]BbNJTZXL/"Ne~,1}90@ IO["\&EMht 9m2iSkJW5aC D F@N)=r. zs,O0:iO" -HQ%<`kH+*T(GuҮ 4 C6C9ִJ)sKpn" !^IX$hU84p<nŶU*AuREnPsͩqkn7a O0ANGF!1bA@  -n% %W vw" , TcAn ,)0pܓNȏ$ (CwT&nHlJmu\Q]$ /4e؞dL]!Aefǧ0u| B_w@ q \Vۢ;FH&y O |-jQԥ&(jEh"!FdBU$ \2=ŝH bk:.$p3P,̌&'I mY x!@V;!C;R gwAK#aIRi>+/1p#nmېde o:D` bkK+#PŃ"[@ݥ5}4#4ρt&{pYjaS,2^&+D.# equUzM>1H]|Ww-bg&.$0DJ[n"u92  / bl@- 2ڎʶ' n'L Y _ 4J" .!V ")!0 c N v " /J 1o =o(6l t/Rm6ڌ'8[L,BC=0h}` hH 0Op~~#@)Rb< &f1!|(/qќ(6) vO<I/QL"K&RC ά ` pL`,bTnybj&ЮOi %#blNr O  0 C/!_NcP!Әj`}P%0oR!KF&RcDy,0i+ '#ޱ8V YQc(ڱ -S2)S1_ٲ-- Fƴ1 aq('B.ygw6`łMqabPA,Qbh+=$M#Q ]~*,'2%z10{2B$!Z#>%Bs`{#>2_B!HL6'B%!0BnZ _ oM'~(j S,r& pJ`"Вь(Tf+?‡|$T"9q_v.?4@C a",!c$/#2P0)Fs 3LS`2EKu:^!+3'=s%k"p!pP:FeFFk696I$so B /d5pZ1j .NN~b: q3!T/60u 2g@2 vQMx 3}¥#7ab>?$!R%I@)R-RwBQ!8AyAiM$`w"FIx'@BB tTmLFQ " $*#Et9` #4l4' `A89pN@W.F@@ -+zDž|ȉwXL ɝɡ'zϼck+ʱ<˵|[QBɼW[%S]a^JUcq=u}'0-=Upׁ=؅}G" p`Ӊ}ٙ]@ 6٩ڭڱ=۵}۹۽=}ɽ=}ٽ=}=}>~ >~!>%~)-1>5~9=A>E~IMQ>U~Y]a>e~imq>u~y}>~艾>~陾>~ꩾ>~빾^C#ƞ>՞u#M qM8b}N1 NU"'!`giq 8{[a{Ha<8^y #_#߷Uu ?C< 8}_?A-_+8~:) j "7B0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3gN@&zO@u=:ԉ&d } 5ԩTZ5֭\z 6رd˚m霈i= W&&Ľ7޽| 8 >R(NAT<1P)' %M:&~: V7n}nDڀp;<}!&;n nT]@%;?'GsXHvฑ9C #aQY]@rˁXfX yB}WYyĽш| MWu ~loQCV]) b.c2Hc6fSLDP; S]5,2e P2b= tIC,ɤ *QBod o0P`5S*h(]2Cr r5= $S2 f,+SqHJ p,o^f&IòitkT$(0HS k6o9pCqO/,vق# ]GBM됕C,]ƀrCQ2bL /7q(/(TP3ܥ~ vbMvf=&M.|yB˨0>tO,P(,4n£5AEM5K >4]3($rE}y+ H*L +S68 -gOOj^S'Tdo]xO }OO}_XC>qw=5P7d?o:q=!Q߆"wRCBB8;@p\B8w]Nxr BzY" BǤV{*8`o4 op"SaBzX P73UIL:bΔCVB/4%ˏ^5pPH PŽNPd܄b7`"'4) {B4<& Gް01,ƒ'*)+ j )[H3{b;ryO [/c*ړ*$q1 ٧}"cYϊִulrFkb { uZwݫON0?W'peBs].; r BƔ3rqQ17ؕ 1epXW]XgL^ֹt!ːO %ɉ72īo(wd.όhY 0p!`]P!4T&lF̹pvF9'5&nZx7!$I-k'GF,5hBk`x!b@r(HWSZ5YCDmnvvfB=>49LaCe.CmBV)qhϥӟK7eD.8PH |0R GH$]#Ux>.o{tҡ)&+(80oA yBl&]pkq+ cO}o_OCd}Ohp>{A1NH۩p(=)h}U2CL1]ـ9CJޑS$ iϐ).\Poyj"R3 \z'Hh22}&i Xc.'4,0hhw O1)vg\}8 NW1LQ+'k=!r=rW~:1G53u2:g2Ȅ30:w/n  Azgzz6x_a(c&`aeNLaBu5Tq NCբ~ W$ḣwi7 Yaw<}}9HxGyA~ a~/D7L  jg)=!W8nWzvzHXTX8"ha.I(sU|H凱hiFwvqH`o?j&G}:: BTH anlv1*ڈ^ QR$=J\X>ȋ ɐ ~0K@Аx )J}kWYW$Ň reuttpouf}rR:0Z(8qHKƂ=a9+ޥ*}L]%A wCs&  \M1Ȉ bᓜvn(z? QR!IuiT{ vIx *8!1UP4U**'LCu`&{Pay48 bgzc >:^-^tQ~d򋗩7]6QҘauW(J4NY~iIo |)_K0 k A$i?'*?FpcK$G nf6ՖIv697q 0 ' %b5*xwMH aJKQiPB10wxf(X f*n4RiY1nP8LIF8HRpAqوs)[ʥfɗ.].fL)>%I2%86P1P2q %1i(N.p#47P]st'A]A73,{[A bL)2* A|UXh`ʗ.U]a\o{+wB/81 ph,X `(z:i+qP/*0,T^, GMos4JR]woA\9,11#lo \': 4s8L | ȁ`{ ` c3|ɱlC|up,$ ɛɝb::6J6B.*q  A(ʻ˽L;S<6⫗0qj(l׼J̄|dCeTƌ,,`jϫy bs ͗q!˰W1@ -ȃz B̆|MgЯq*#+U ~dzy qz,8`AmS`JK|I IS d~^PyR`} AA^v~ Hۉ Q;[ٮ{ Q~@ z9nmI>,Y t5: \M>LΗ UPe.~[șp+"{Y.?/@ڹGI=Q=0 3NV`| anތ !V?`N|y@L qe@@:BVQzqA_n >oȪoڪ]Nߋx/Smx z^o^ P|/ɱXm?x/q/ԟʤ,!~P $X`&  0ʁB#6DňR(nG!E$YI)UdK1eΤYM9uOA%Z(RLTT)PMrTQ ChJ  @hcKuҠ$2ؘ$₏"28HoDVQUR"R#D0 @6 b~.*S*SZ }` DUZ— -p$-BS b .@)#'b pA2 k"@|0/q]b?2ď؞#(TpAt.QB +B 3Ԑ#%P3ApD=rRTqA :婤AVTK2I|,'l͠ (JHIm#+(h:"".  "@ȆLÍ*hL͎S@;7\ L>"S4 @QH4SHӄ s3#B¯X, Iʄ@*1%RD^{W`-h FXdUv٘I(C*% =zYl*? *wpsj]\vVsԂԠ[ՠ[JǢO0-R3?(`uuRj(BRz :ʍL8qֈ89-U fQ>b;)jrJ(rFԜ g$bڣ GHlZDkxRN&*m~{TDn#B%pu-{\)`jn*Vh͑2AeA<ˆ~ˈoY7*1QK&Hz(jvZa8:!S94xJMs4;䢥7)BuBnZ=RzW>pH ."B, )`]y0^f $ _-xA bS%g2 ! P̡*QTR VЅQT.,@ *(G#:umOH'i1\$Z PW1#K -"9DfF3aRHTY G\1!D(}okEHdN Kd2 \A1JQ9 GN!HQ" *#\&"+ryh0MʫBPE8"TzD$! Qt`U=VNyi5]ByRpB$R"%8S5G3USWXN 6im!TBQC:\Ȓy*đ)zl QDFF􍊾Lk!gA[#hA,zT͠ EG͏(4!]5yٺmdcq-g=9%l6^%\.1u X"WpׂDWakcW$Pir.f(mx RH =/J(`b!ִխp5OЀbw%Dd[? YG\\P#Ut FS!ޝx C@EDQ@=PS jK)C?3RP02?9: <4=?*j{K>0CK(>P,#QDh*2܃K$Eп()(yÒpDLX9 D$э+){ٝt[$/UBlE)h( gzșB0@* `$" n\䩆DB9G~G~dc#X3p3iEDl $L10Bc4*##G(-4*DŽv i !=I>! /!UIIE0$.@KX-Hs$cnߓ4:x`Ɂʰ˱|T8˴\ˆhKx5H;$@ēP K; K$`1/Ă$D= <Ҁ/ E 0ʟT` #\az "TL+ K6t~i @ rʕȓ8ʥC H[#3=5s>X=tQ3;DIF7jˏ ,%&',Iȫz&= ԟT)Nx)"(>ȀT)HJ$MM)$!HD "P-PH>`8=kY]#v`1ߋZY pQD`р]aے;-E;}(?ňY &srؗ8`-P dj BЭ`Pɣ9z5'2E]T`a .ו,њЄ^ (;0nm2] -YT4&Ο!U")})!8#` $)߂8_J.SV v54{- ecT(LI""#>+HpMC]%fa.b>4Sen HX`bU"(<_J#8W -,/03rJD K֌)Q&ۼ`(K,( v?z.*$ R $ h)!H%n+ؕ0bs1^>ؗed)Bj?hV+hdݞc{.Йl~k-kVA 1~-V=>> mׁXU2vFۛjSIQ `TC}z!K'ɘ(2U֦2UV59`!"\i6d]mef]ۉRg؃$=Mpہ&=@RJ€0,VdJgT`dJb`E;8n8"S$8nB?". ;$ὁ)RfjkXЯyl`+Fb^ho*)pDh)-B~ky܈$W- N BK ޹t5pԅ6c ;|9M Nsu`#)mT6 CV)R.9l$FQx).'_XÆОКm"d><3pd-4qt0lsZPamYqokҾsn!Mz)lDd(C;"3?œL0R#9~an\}16r`]7ϐqfc2jBp9dw%͵"'k'Q#<$de\ r3)*Hyr^Ps}"sw'􎈰{\"`d`JlBY>_F ٘=H> OxSdqH"2NϺ?{{hupYJlMz+U&/ҶPe/zl`vйS3'#!oE 07:ihFy~-7uY]G({xz y_Q%C~x$8(~p*]pEВH>ByjBT\FׁN#xxck8^<yW}r|e@|yHd2@%p H Dx`A >`(ՃL̨q#ǎ? )r$ɒ&OJra\g $ZyaOƜ1ICD:$Ɗ HcJҌF$"B $BH"!R$x@`~J8`)JL^MuV^%kZnuW$2g$C/dŰKL U =Toӈe,&h HdG% L41/B < y»?rb :|h^dۇU*qCwכXrDR Dp@H1HSLAUT@H Xt_GX`qT@a[9PcWU%C7R6a 5u4IFTg`\ ^GQ Y%;ztPP5`ѐ& :)21a0 MIĉNqAjZ ٹs6clB&.@]i E0 @ O"GsDxYWLŐw$^@MLp@_%D`"1Ony\e}ƪ‡P{Iv =e l Hf^d'*! qvg+b#0!jP?A H`?T2]&n#OrV,2N#1] vDJBE Rx r< O:̅K!'KѭɔDHi"J"f1H` $:@굒{w,N0y,^UjdXCR>ZO||J$4f >oW2S6+3rP]r&8/D'|Aa" {CBD8ޤ )0l1\'AN{*Ag#F,(|($%/{S]BDZ((E&(P{@5gl &962d~?e&)ɬy\R֑tm%CY$ iB7䓢Ԝ֌A%GsFS\ xςv*($tQJK$y/fAj&Ś1©=n  V[=фDImpg\p"~ʝֺւ.!jd (4*# d H,  1@&ZQ\ SXu`#!W($ Oަ+HbS-H:**^qo1.: j @.ADZU xZ:?P@j@: kdy%CFVf$ @#:iqkd8LnFP:hد2$u$HD {iUFPGY#$,^4 f- Uʙ-A =P0~۾Sa H`dER_yH2dhJ[}Wk3]3$%4 *J3<჻!PфaY#IѨ E.Y FI lLAU"[Y Q@ T7: Hў:!$J!LKAl<&n1i5ZMbD )ZO#{G*"pIUybQf$.Q2]4ң uF9Y[B8OC[A&𳣽y41tZDBd-Bā=2!P k)9Y>ijN7 #0C]} ȁ 4!Y]`NLcPk$A~5y&p{$@m|VzJoJ'Idفе"hJX?,UN*"N [T 9wN6@IRYMJmDtU΍J]SAؙI_]D8 W0CiDSvy[F *ɡaGJ i|JAl]\ۧIjdlө\4NٌC(Y4^]IL~aM@tr͓ɈC`?eD@AJ1 (($*&L`[O=ėT)VF  I |ad@ @~D A QH<0T)4@!"dU)8@Ȑ)ə!F ᬜWY{PDX@[I`F!UBA\:p A 0 ^F( & NB $ADXEdQ]-e G}[1" +` AK(X'5IL#"ב ga*q!=DQ^o!eA(%Ys!!TÜcyY'YS|D+8TKΞNhK:$B"*J`@ [@ZW 1D( $MIJeE *pV^‘I²YRFD %H&dPTU}D)`mR\PF ]EFj%PHl:8cyE5:N qWH=d)&`aq #%9vAҠTvH &u~\&dl*(heL$B)dPLDT0^nl( ą$ +]VEW hޓj@d%FȄIVT)δ1ge0%R@B%KDh ď*AVčĔgqK/ViE]@ޥL(B"%M#B A{ "$JDK|xPIT fBS&ӞPc?ڐ( B|KuB ]&WAbAh:Z-ʌ^no^"4j!)@$HgFgFpgrDU^Bx_vYY@Qi?BDJgFH!upBbe=+U]+2O-!&AC]@ŦFbŪtN> UńZD\$l)@tllQzj"K ĕb,1ڞ>" Jt4h^`D}Ѯ὎%WO4mm{xgS,GμU-zk(ٹ6"MGѶ*@΢="m6Y fg;I*<be.*ٯB܃񌑥D+ {™G\b.,DkW2.rQg.O&n꒘D4zJR~^o,Wm.LX&b."fLTFo /KqDȖ'XCe@`N-2=f2H-D*C.d+-b(P]Ŭc)< Zonx5xgDfFJߒnJ6+m{ zn@J 7">jqFqBXc&.m'LMz-n䝾 !ZW@\ *iK7I(90CZXl&W '! JHښJ/H$B$+Nlb.Ԣ|o! ؆+DCl1u.Fp jDoi /0:c&.+6GtDs2k>'HbBQ/}JZTsx7R_`1C1HQ /~fDT]Ht3B@JDĪ^e"D/c,ݲd<N-0qFV.* #U?R'ttB,R'S TK5U2f>+] yPoopBn4C2[D0^&.P\o2QdH _D/pRX6@ AH @L@= 3rq(Ҭ6K˶5j9>Cyw]$'@X*uGAx|UXd&<0Atm&,*47$/;CKOB{kE7@kw{C,;G\µD) &@IJ'w,;? R{D)(@z+<Q8C|?ӢOb XD>4C{|dLsH sHk|%(@`j^\A4. J&;} 0WA4*@t(W ƠоOT׸=-ܦJۻ==WJgS$*Hkˣ vJ7KS~+\4[~{~dJ3RAEG+jp~'p=I Ό|]B\ɬtts {r3GEȺ`˿[ B@/nHP4x tbD)VxcF \dH#IY#?K 2fL3iִygN;yhPC5ziRK"My>*P*U\]%*Ȓ-OueǕoֵ{o^{p` lqK-|pbċ?9H2~@&9SiիYvvlٳi׶}wnݻyxpÉ7~yr˙7wztөW~{v۹w|xɗ7}zٷw~|׷~ <\|% - 5ܐ=EM<U\]|emѦL12!GrB9RH4$l*r()HP : `*% RL\M5'j %>)).3RR?R4SҌRC;=Tb Lp0*>rG!U-J+uWn툁;2f}6&?"M~K `"!Vw\O b;yMt-]r%הjM$;wĠE}؎}(_%V6zȁ@eG0胔Q&]^]YhWJ*h ! \`/)0hpOg;vu⮽  l-1U (Eeq^MnnKm**$<; 0H#K锟. Ɉp+aS%jS^- ԃ$1fTB0zf٠]Rs+;"3F k+0 Dߞ{>/Q%zx`hVY6ݠ~y/~7g)V.!Dy.ۂA,y)A`4V}!Np'?5,*2"h}@VRh ,HS6=Te0f"XE+uAE=h;0 ׀eb,]fU,-9ܡC a1.^h.sb|U&"HSGL T0 ?H2Y@GTHlu$v #ԌOаC/"03,[fQܡ Y@ ̇ QsU2QPV&f&*LHҗsb"p8"%pJ"#" HDEE#F9MޚVG}X4$D5j@BZ!lBU`u$KK+U@Ne!eXr|(D6CS; 4e% g`.a 8E'-jQ/%T6%'J\BkKKQѕ3"eHF6 NK9a W#BLL*F: a[ 9>6B \ueD:-^ , kr_Ǜ] y}ȏL9@V֑n! 8%TpH!Wa @ !B;b?d )RFR"$o)ZA28%玠%@~"f(*2 PƖ EʐBSBd!AP𲙭 k/ȑy0>ǴuȂ#H!%WHMteC'I;͚`+{Ԗ)cQœj6[#lɩVjo 8yrC%YBҰh? *$8Vcy2M 5떲7#J甘y$ 9M_y;]ֵbWkֹ~_%6-lWXL|͞7a/D ::G- ,GC^S7e~/H%f$0 `jX<}GW !YDݻwCMrwj )+|ȬXEEu_]ud#>Hή Bjzr 0 _h@ÇbR2^ leh,`  N @`\v(宀aL H!Qƈ`3 * #4o^s% ƾ/ڰM <"n!ڇ)mZO^zNv ! ( Ph* <a!@jGB @'8%`( B: B ". RQ㬰.n)Vz$`R\lwf&rNQRH~R ^(OQ1\,iɥ%ɂ.L/#4 WJ Rm*(5 PANقrb Qf_n(%D !`Y(`0!]N]ȥ(43J¸P#fm bNq!GLZm4A̴62 sW,ϲ7ZK-E-_:,2 ~.!,R "r(R:*B* ^"Q'"@@35nhӨ e~.RNe+-Ϟ>$orRZZ,!!bxL6S3WN Sƍ&0:S5!ڑ;/FrS=V3̢Q-9N!S>!("  ,@62/|%@aT>QaL>G1l.Ӷ &&s cr.w(@ DHPz!z.,~jR$RM!""`4Rm. H BV*s'3MbFSx`BJ e/i\W&VP!%,&ت R ~BO 4sNP 80,p p>LNCS"TL:+(5*jD e` `ZUiX \FQ,6AWuFQ-LIH~Զ uY;H B)a!J91'` U[ xg >wruW%-R-NNeb@ uYo< I/T-9!R B["?9 Ub'6uH!* :Brj0u!SD@t[gDP&h_bUzZG4_RRW/"Jb 2Y+ZjZQB/[cڬT'@5\g 涳5-!P^G _ !2>y *RGl9(ov6,V0!=c!D6o#!@r%`or%deMf ufWfgf_4gEz5h=Kh;bGh Q+,i"I! 2W "'ur(IB`߾6] Blug-!$m"n`s xx372K#70$XjcSp;"NW BRd(v;@qX6@enHtehuuwTg"hI{mXvW%\x-i7jGv!)SeXz ƒ {߸w+V؂$2a|ɷ!6xv!-z׋X0$4V[.!@v!!KV5Fq<7":m| Rhh[i > {v!JB@=W#-PhAKbQ&v qwh"e߂ |Ik @|sĬuXK-"&Y؀r"PJ `t؁q 3bm$>aV%ipꊐifgcTD5&vX#Xd#ჽ"SwP w<=/ݮk*QO[DTI)BF_Q#԰Ժctfb&L˟E+"}D<v}O7Zi  I%"*#ib`]~$pɩ7 b&px$Tg !"a@^О Ot'%*_)BE6</6mark"! Mbўg bMzYaߦ$b-bS~]S *T 8A*yHb? 340ƏPLɓ /Q\E ȜIM Q !4Kd'I.fR+JÊ%LJ@R KPҭ d:cR Kܻx˷߿ 7A&@k6'<,˘3k̹g .x)'}ؘa) E) 夰 -XR-ÐhQ>Фj i8xf,<a&nK^}Ƞdԁ5չ }nAPhTISl dPe*=`YA5ᔑ';xP3 +x"I8PDbS#H TGtI%@u! G@*?jtrUX idihErFT jj@թ|矀@JVaVNU%a#EPjdCfdrҠ q4!r41w+VXh1]ue7v]F8ǓX9@XrTp}D @%(P4CPYNT %!~8.A]dcKJ^cH`!dh"1$^]akM `o>ta:$Ej!>XwɥT !YR4%*0h$2HRI Ծ&L= gK`wʶ`-ؚeuc @ <@JLp#lg4#aFC>sFRzR[mWWT~R[~Ea1`9arGl1Bx[(wPU,@'@,jV#iFST|FP (j)#!j I@m =LѴS!Tb(ER'p|`e0"4&# +0X$3;k^қ.1(2 $25L >~9b`MdOQ)It3.HL dRMͪVV$\T(  -)[ջ! Hj ]DWi#=#SL}HYsJhəST JIٹ!!I!,_WZ[9]|FhB OhOܥ~/ "y1c#ĚdŃBfL$ mZ&hLc8@ KuMB` px<= `r.{Y c|%4ue{/pL:Peȼ5xMBЈNtol>x'MJ[Ҙδ7FWu]$RԨNW3檨BVָεw^w՜Vg ƇNf;[0,_.Qa4J@K)6aھ6_2ab+֐^J!Mz PL!VCN 0R@pBEa]r!D p' &c&x@[$ &4^ޙo 3wRLt|h[2TK%$ aNҗzrz=Q@'QBe G`Br߇yxz?X;*GI,U.E )52/IܢnwInu nZ((Zn+HTh*Tp{&iֈ54w/[hiPaRIAgS(!n5*L $>QG٢$9A4yz*H5{8XGV_' fܷw'QOw%QJvA}Bw.57\#}S1gDG.xO4S{*)$x[7PmKh1PR8e(((At dTYTw^yrq]WUWwGa+vjS hx57}}t΄{IЀSaxgITA30~8XIg'YQO#^UI GQUzJ_2Jp/6b~ aelV_5l%D2I5,-AS@g5zxUR@mE 01XH<7cELHnUTeT@xyْ SʕI@ّkzʄ%%Q |DRA6;xV7b&5ST0)xw}s8Z?RC9}(ETu|l(((q]4?)u }ZYbb$ q!tz&G&Qܶrb{`wP%w9V T%^'Q q&Q }wYDQWWil'Y֧`85'SwӖD \ |yv)ٜ9ԉd~ Hq2X4H ayDdpp%fx"OaBَ RdXIהR2hJ%bXDΙ%1bWܳʡ ":_/R%Ujc'AEY1QYx $CNX$K4zJ4 fRCQן#}%fzhU%'J.UE6,zuIęDy%]ċGfRgOzQ !rwC &-?XizpQ*ZFG:WoRm9X{!Ic9T   DYRc7o~QyAJ5iTj٬RتOڮ~gy zxe!&?WWT䩚<'G&5r M -nă<  4[6ꖀY +G봁wzi YF٣-ѰG*mi`ʞ^s] JE]_Bx_y!PJxz9;6r76;IO1) &i K NıhI!~Z{GL (Zi슦U{ۻDo 2뵘`4wRY`ϙ *S i(a#ߒZ w.q纲oVýݫSxRjM~۷zIYhAwnf{}ŋ &`ŸZ Q8 Iۺ-}5Er)(4U& m VsDBLܦr1XX4Ezww).1G IN*&€^eYjKƔ:rԧ*›^Iql<P;Ċ0[{[?:! [^EJa%|a,c…bq;Sw,KǰJ[Iϛ[f:VEʼaȩLq MwiK\_w՜̏'[Y^ ğj/ʾ\9,ja_H˪|=Ό(!a}N׌]Ќ 09ʻAb<|h쬭ܲIѹٴ.'PI)xmvVk =DM IQ Jx_cUMN͠:T7=,)%}ƬT=|W-#m\6SĚ4~pd:=&|xܜJ7 0 E}؈mG}{w =ٔ]CK+y ٜ} eJI 8RP٦]ћ q,L pڴ-ˑI!a#I>qTT۴T{̛=MxV+R-x.`jxakڍ[+Jz~!իo k2[mDb 1i#uE'] ~݁E}[ @aޞ.ݨƉTu%WIQk==Lԛ@ַ6H;n"f:u{G>  o(M 9PII䕲<h ":&.x!(aF>m!-Q-xt言Y;a嬭ǫΐv.b~d[蔤,6QbB^h2MOcᩴ^r=pDśM~+(9VI#.ko ! wn6-= Eե<ߩ蓎&}Yy~ L%֪cic~xLdž;'.〡/L+nuLOSBi>ÍnGRҹRi :%̨~YEKnKt4dpU ry|a^O(.aT7.k3.ZS_hmӔ,-}]%;3LΫno&Z oq %O(F嶮1) a#5?t&.g6RM,^\xCw2 dM%R;(-zAOLa@ PD0a (TLb(@F&$RJ-]SL5mUTU^:DKa8$ R%8b)yn`H&V:-$aIpڍ 28R*6R.$}QD$BR`8B~yo敂'd7. ;.c[ضnVōCU q͝?]tխ_Ǟ]v':NRy"߰-&x ݆x?o_IfmSh(xK1"[)Ho -Rꨡ0JI r@k*R($^O?@7=k(6D2) HI'2J)J+IJ9X"LD(H! zRFT -Z2ǟ ̈́MĆ>*Ln#C-†&0 %x@%3 K.#ѦQB!ʄZ ΰկDeI0=H &r4KiTbf6[m[o7\RmP *rB4p$p`Ht#" mHȍp` "AU*eaH@bUHG jբ5P% Wb  S҉_H X-0F-pH;)yY7j5F L z{Xq&£k;l&{?C""?RF䕌xȭZݺ_SRH,ױBNi䕊͕2|JOTnXu0gML,T8_YH a=wwwʷxkTh=nXE[Lc qcXJE%+o%+FXm\+zwVGBJ xL"?6Ё`%8,*, KԎ?`J` "#J)h]P$!–h 1ԃX0dyK<v C.T. *.!É%Xa>L/X@PgDcոF6&K@@B(vD=/p XwG;'pa2AH%$JhG2ad-FO%S &UB,ǐ)RN!@D9.H/A &RHr"txd6әτf45*$Hh@ɘB H` 㹤S)+ռMp P橭K| hpJ HhgSJ%T#(e I<_(B,J&ȸԥ/iLe:ST["BriSyԨGEjRT6 [.TVժWjVUbЂN:VլgEkZWu~]k\:Wծw+R5l`;Xְ5[6ֱld%;ٚ$?a*e5YvֳmAįEmjUZֵֶB1ֶmnu{XdyMn;\׸ǵZ˷υnt;]v,Deox;^g?h+b[^׽o|BVo~_ZP<|%};`+aU#p%X dL wq#ބĄ@qNEb/qet=hBЇFthF7яt%=iJWҗt5iNwӟuE=jRԧFuUjVկue=kZ֒̈́*ֿ6Ql5IX qz* @<Ν5E79OQ~{;frS kyҕ̝M7!r^V[EhtwMʝBu"H[o%7E)Wڹ ({cL-O;Jd/%?yJ_^!S!)?zwV¼R?8J/) Mu}u*>)u?|'T=R_6ϗ,l͇~MlS Kۙ@)'L*@5 IT+3 N &LeFm2V;U %UD^ b%κI뾞dOp9S7F;MVFH6Gl8- ӽk@S;Xl8X8HH >v7hV&l1=fvl>Fʶl6G7Xn@7`m~7p@(ᶈfnضٮmmknSh:x7] Rh8`:@ =%ɩz6 ^ tViv `%{-j>F~N FQ<$f ԉpgję0䍨4Fi }c*errUr\Xrxf 5h%::P.N'UsDЁv(p.g')w+r-W5/N/s&Os(B>P<2sdSx&D߈m6#G9Wr;s=s'/:ɎlxuT&uu@7t`o) t:JLaΡ畠-6f WA[Lhєnc@Po8NѿPw )eh'֙Ȧ)6cjq}qp)J8]qO w*uh x'/NGȝ竰a w\F\oMbu~~`G'L,hP.q!RI Ał' $9b 3P>qa$1}Dg92(ҤJ2m)ԨRRj*֬Zr+ذL([*̲ml2MҖ AmPJ j*+C D KlVoت9Ђ{ M rhhkjыMDGOt*tm-KKA7ZLP% "C |P {P LCM0oA:Q)E}4I+tVWUHDiYLYMfViVMYYV|4nmQqc"DۃyfagRYRrEG- ){n՟fԠh7U%RP( ֤9 4+bA2,E;:*C5|&z+0*ͲA+t C9I$EsskMtGPO1<I |(x=Tl ,*JiY(%+yD Dҽ!3PC>O)nQ a-:QAxfÎ(!F]ʢ uP6h'\򵲄*SYH:%;(}sdC[-YPȡD2}j'^ұNg)͇E˝#,סԙQ]O_]} JQYT)eI㱛-QđX1ۈ f%ŏ@aY)E)U[ S^NE(MUUP1Dilܓ!\[zā$Eȗ1DnfLY `i_Q$4!2=S4!EڅG)bS!PaQeߨSE`"HP.Z)$DF}ZDO!//ޑ}!Sۜ5Ɇ ش&sL9%v QIZYV Ѝ[\T !%L\Tu!*E/RR$xq 0A6U.&2u_4̝T"]*@ $IHΊEEC>$JDZAibUl'V*"HN)$׬4bQJ$S$P0T"EG]"9@fVnJX&.E62``^R>EE5d'Wq^sZA`SDBqy?TLN|l(*$.y^ߑŅ,R^$DH W(( ZpEJ,BŖZEFgOg}: MU'V(6F*x(R( 6jy`(fa"SMa:!^>#6?.#j_[&Õ*R2H->U$\e=hRQ=jB l̫j+Hҁ-Dœy1韓ɛ~W O.Dr9E&Ÿ+CDA+9 FJE)&LV+dN)AB B+*%R,+*+"*H*ALub+ZXcSe~Ī^jYv cUf(c*JH#U㫖Q%&RdBj$_2mc~fD026+CFŒ(*U h=Z泎>Qe[wʩR$ +.$C$WN]!Keum돰 p,V4K@Bh ]) ݿ"f{ZGnv0 &U IA,Ȫhgx)nD겮®"AL.SGAJDQ$Is.~ĩEbGX+|meOmcuQ--E$fo*`[-C5*-ͬ~DΘ`#.(\oZN:fŃo!1WV+hf&JV6^ zQܰai$BB#z)`,jBDB$K-D O)l>+:Ex mq1?i Zy}n#DB#TlA@ohG-mRmO4aW3XE 07Or^ߘhɭ<+ ^ R -BuR ArRG)4PkDFS46G DotOw6C6MJgoc65E81wVN3I:Zvn'rs_RD_O>U6|3M&?U#O)[Yj*Zr*[T]e #4X@WX@RDXy&*$kY0-3@ v*08[?β[-Ed2nXuT\f!fV_c3 -?c0׸Ұ|?G,Edlj~ El~ PK[t4kw0uAܧ9$%7Es)J[K[D@v%"63S9PĤݨ\MG|lT_!0.o00@%[8C5/Y$,( C^ $[O%4@(Ly8*mY@՞R68aa?# `8d#X*CŅcx U!p,@,Rm#>g^#2`'WS.N IKC ߰o_r&lFDNtlp t!A N}!cUA nABbcLVB-t aCUZhC=D-!s)@@!.MtE)NGӉ *n]F1rNR1mtG9HP1@q}HARZRi1l"#!IIN xSh@&.K4)QU=*aKYΒ4yZ+ْ/ ^ɠ0iL(Act\HL |5)(7C6?,3 9)$CKhvNy'p8LF1C fJc?HCzI&]Y0fQ~ԃ.p /LcXKu sRo['-8~FԌ!  K,u%54՝*m1Ob╵_VjmthQm{ ʥzhP&&W5-_0 J!`'cX׎^1y'et82VqrGܽB2[Q/e{(CUE)䕗F%+`"|AyQGgw@P5Y]0ӯQK!*,Y H CkDed ]Mv0?8F{qHc_!2~n! p}M[\/Rg^F9-xDlv_@-$#2Ř(J+ cC-ӝ"'DX""` y| ^&* DPB9bShsCzeTB[Z׼ |YV6&qQ*"Ԣ&]8mU[è XD<hbS 2C,q1財hu*;> $l 8Ea@nc❗OGŴ-v# ||h P_`/ 18"g!Pa Fe f|i)R QWqE/Af]@wR};!jJcwL3QcƘ$0B!$=9`Nt1r/5 0Oj4H"VĀ3`bB 8 PBИ:4jC1!d .5xPaLjF2B&5`"n@ e[nDC"Vn1 .*,m}˨2@ C J!NRp#P #,Jf1 C=BZl!=:/2&!c<[j34eؑ)r5`"b CjPe/ .0: j;L#m1,#=TOf_ho#_cQFҸ~Ib.F1v2({ 2 JM0 +3τ&:1Y5dc",#O, W$)!)9* !) Ҩ.7ѾCd* =@d<'N.0158Cl]\!2$_#QA$S!>35!JAe,0;i#,~R(380CJ)/CJB!"s +d!< X,cT4C5OI N,=d=s26c!"@6 ~!33:j:Q!C1Pa34 j+NXaJ .6J` X: `22(C,7#1806a@D` ! J  J46 lk(&`mlf 1ѶA ,-3Qhs(k!Pt2 LϮ!N((/ss2&e aPKGzR^13es5&UyŢ0H&4l#uDS*R3C9;W+#`Tm" BKAɾҎ:[0k ъDJ'W0Ft1@"1 !+#NXH>C!HAh!l~$u X#,#WO\zəQaKm#ZWsA1ㆳ/n371X/BΎKS2)ҏ/Qy(9" xըM5bYC4"6] 6C?Qc83"0N]^}N.0Zb{/( | 3 w#9@!R5jQ 巂 ,:0|#tܹ~5QB(l!Fq@ʓQqD70i6Ϡ۸bů!:5;DQ*8#t!2=3qx.~s4u<#|ټyuRW3؝C*MĀ D'ûf̲e=ԉۭ"N>0/B|!|.[r%P3P\>^9Hn~1/"0:`{Cr6x3 Y#97"3ZO=w[{;"U#<ց:b h B/ ؋ 5{3)} P1DKi>TvXc+W2Rv'֞/lhߌ:~=Q Q)6'?40b*aB=&RPL Z4ńeÍ$K %&&QE0 ,*0$$sKJdm&8Cd0$F*u@nTvlK! 72!Æ#!JlXUBHiH$!'E8a&~9 9rYBzI0/E?a$DʹAXI"ۆZۼ!HmT <&0*5e jfU.HU*l,]e!͹4L&4v`H`` .`>aNHa^a%q2mD}AĊaIIq`(]P(RKYvYd\O; dTJJAdJx } O_EVXAZMוdDzXĉ P|YTbC(&WA#ZWARA@mA[y$De} At@X~vn GEͶi_KJ*H^JK&$L"J*gVw2՚v$%y$EU5*&TJM{0aQ)UcX9*%Zin oKoދo [3 FH)1b %Ew1;Pz* +[c7tnI;a=0H):]dֲ"( 䙴UlR 1:&D F{L2 ąBW_ Do}^snԧ@UP)Bćc$[\LܰH[AtIt 00%TJ(4rL[Tv Yj*kF)`.!%,P**H^J뚮d\{mBRu%-G)(qJӊkJVi6֙,LC+(R~~O>IT!~wx[A)տu @ IۜyKO^V1 *P,2! P|X\B'0"L Zb,! R(CЌЅ.a3D fC)\[ (g$|L7c 9 /,Ҫ7 UcJ;QRXFT* !=][Hޠ_ ^ - ~%/L8'? PZ҇3l(#@HꄿDѥ@ #<4)񒑐43&)e+|LDrYҡh0[{*hc cQV$pL\&CNqC@w¤ Lf3t%B@$]|D% @$UAE: Y$UA3(OҔ6UH*p+MoSe # '@S&\[6&-#3;ji{l Ш2T!eJ"0"zfPbVI?鬢Z'OnFlcl瀶 VJ*\9 ֒lsh甦Є*iXAaYQBsP *w#rԭum:!$[gxSY*aNd@T*jYyڦy$4 _EI f[8v5hXkZn%cM@` CI݉w#9*1.~0_[b DA>KeBҺ.i- *ğEJHCb@6In2uϛT M) ],@|spXȄLt#U\K۝%Y@)X/,q D| 1īh~n_iKf!aD8IFk1CP0n0<Fu{Pld|8@.|G6 };q@Xu,a>*,` {uᜐ?Uxg̀w$@50ixb%08~]L((Pe庣RX P  Hq]lZ3}{@jQqTJh}'`dZ$( pe|A~mG<%(^g ~/M+~W|I Ӹ|!bT u&99^A p ̯y_yvOqT Ͻ|6?B|bץU{B ȏhI\:'Ép:()Ii9/YJ`lԅn Iɒ-/ 1ْ)21AbNT;ɓ=? AY]4)mKHEKɔMO BB ,5aQQ[ɕ]_S Fb} `ikɖmbH%yniwy{ Jpis zxv*h !`%1T ) ɗə陟i@kP7>K -wtd!G7@H& `C Qt:-AiJ@u٩hTPI E ) plFyl)2fwx!I~F5qY%IPwRͦ!jd$S KʤMzPF-HUXT 6N#ZѠ%AUB|`8Y Н~R3U0gqPaQFU+ykUXJt%kE{u:)`lZeF`0gdAH !{K 0dxiʯ a gd˗c*pp{W;RKw ƲkI&AȹF@!kclsV1"[$]ԲU462}MLZwqF;*Ѿ_@X!0~ǧ Ae# @Ȇ;U\w`U (E[Ũ[Q@!k\k``5}.ͪ2[k1}Q Ա-{^[LM֋EPp<Kx~B< bW?Nc [a[\p & V P0p־nUtFq*A ρ}8nPV zDg(8QyDM\ͮ[vjl^$):ֶdw* 1F2" EmQ o% $~nFGDvJgU Fy.K]_^GBI A[< `^ APRy_h UnnjmouwH~&O1/ۄ>zm 2}]ą!A͘M8o}*oPֱ< 0:Y@z(oۆ{L\LUD;Fyeaf gUlox_V\pOgzBU@V .dP4AD*nG!E$YI)UdK1eΤYM5`RB* gG:.1 x& )xX' 0^gG(Du_Cll VR qqEc?A(PB ű0Rs$-d%_n?4$^x|qGr_}v':$#0 "Rj#0+ ˆ*Ҳ# )&H6h4&/ Gx,?>0< Ȋ"ĎBJ<HǔpHHLHc x 5 0R !뒦SOtS~(XYȃ` X &a C9KChIQpTyΊ$9\8K !Ms#1kYhvZjƊ1JA6h3?;@ҍ Ax2`0BR";R18Җ_䤋'n7 Lj ۳<3 19rD,vdK.HˈCwMf+e$1 0 u"Ąw!!"RtRȓ;Κ!Cc\E@p.F!3Ce(Θ9"k;e;cLvq#|rʱ'y+܎kУLZi$#p?荈sH }Ώh%;x@xbx}ka.0rn(]gAR0_0#)!rfGQB EwL*n $p7T|#N\R p@&0 < h:!T^"6!@q,6s\ c(" X@EVΤbQ\`8{C$bxD$>r k༉}3RD'!KERVw]DnF ޗJ@Pbł@!AVY(d$Hh-|k R~ Q-bhc$Y2Jp!K0!"s#6zaq*!tChF&Sdf3%v[IHd d 1"d<(2V$]s'<2Jvވ'H&XaY 5ǑۈS >"F=SCYC?IPm"4QC$%$A"8i(PB-H::TN'l  "vӟ(DH.w)cCs OlB1gMT[jWjhH/!yB5Cz 1cDG2dbLgC`Ͳ؎#~@as>#f$@!B$m0$}UBzY"j})* MPeC)PٔZ1+gb 9 1 sdjxs̬nVensndo__6r$FχY="tHڑ#ˋ'۪cDW19DN Og+V)!-C(՚^4ZLo[)XU qCTuJeS][;q}'6BT eO"byF1)'G: vĚnay؎xL*I|@݋n#rA{Ɖ)aD]A(8 swat-}iJ%$~e@[T-UeL>ZֳuɂL #k!_6+G 6d\1;y]H"rʏPP 7~y&IL'0#<$Dݐb(Pc1!7R0=i%B8B4仂[K=x?xHU r)11Y ;B?C@* d-RX=Å=@9w+`B(3A Si@~#B3@96.k)B 5)chk-h%0i4DFlFmc 3444tcCCaV-8;9H*$A` }=>Ği:E,H1$((SJ^t=PnĊN#Wn+EƂPTTXGHC0ƎEz5%@cDz@`7+FTx(Pjd\FFK8k2!*ٚ3Džظ3XC ǔ+@T 9dy51 LLx\ʤP)(@Ƃȵd`fCżߛ(\4SEP0R&IT \k >뫈x#XDFLb,47 r"[/8%0oD Kb 3 8@D5DU':2/ ;Ăː3tN\cЍ7MNO#NҐDQ" QNT7p1d;΄C$ݬN˂ hvC;dy,aq9xPhQ5]S6mB91Q2LHSCP8"oZ AS(' 8L94?$͐hpTKݺR4k E9%Z EA;+BiC"wSǒ#R#MEs A*MtC@OwCx+K%2mA]UqW,k>`*$eď*%+AC#)P +L>HDIx+'l МA;SLѱ{*P8G%]$yצRMNrU.Z-STcBV%B&m'kRHAXAP5TXQ9VZFC耴 en2Sųϕ][C,Z=+=]<X$PJ"8N5"]T##TX8X#@cPAXX`R\0+C% i[ &AYxѶ*Y*0\("9$8^$?@^$)hHpI?`^p%*`V[U@ZlIIS Eł1mC_弆 S%T2NM2`M*`-HGQ`;1Ԧ8+]$BZu f [% ܉mNOx} ]KN TW]PbQDR 1 Vۅhb3>ΰ?LǥLY܅ %& I\܆H/6ℝL08Q,b;UT㦘Ӳb]ݜD:<]4N,^Y?8$ImQ(d c눏AQe\^:% @2Vmu%S:cYlvJH\'ˍce]SܶcK`dq fTxY\VR׻ O>42sյwgApaxC\t@lNWF.)Ph(hK#[Vm^h۳@uF*idnInߛx4dPhxhʎxWS jrvRLjjg?=]XےG,T*HxpHV㜘pK$`Un$fRP@X?0*RPiզ χmIEDKHL^nΖN%}moo׳KHoonooo6^DRkyV&)/ %popp>pcYlppܘBAppq? phpⴥqqq)'vpq˜B^m/r#?r$O([&or'r(6q(r+O%r.r/HM󒠠n2Os5_s6$ 6W >u8s;s V,]JQkKI"J4{*nΟC.}:֯cϮ};޿/\lPE*68T~g.qo2Tf5S} %CW tC9n}KJt@Ȇavx"QEݕ\Px/3X7☣;أ1DC(P)y*9@&YSM ^2HIe1P (ЅIh9+Q UউCg9ו?Z"2PAYִS}T8P D_49ٞyRJ܅S Rn֙=m1t:Tm;aHdE0#LшcH4-j4A tDwPD[⛯^AZ tWO CU@0@Tu%9T PYTjge#߱p$aCTkn|`K"jЈHt3A1@@(rPy4wSS]Wc[sP{I}6g=C,z,X]Mq!PN5@+VDvJ]^5C2Ĉ@@tm $RA[4`4]^{Nt@OpoW%l6'M[4qO}8[ĸXg܉m Pq|W߾C ULDm ,RBn69LQ!!`!e5H 0'<nB@c6U%4h!C=T0N,t!rph31j\#ۨЇP!S#DUj{AL*(_8xQCa#ZX1$%+iK𜒉:Q FK#%GAZW²AѐB$)FGV%}&1ic"38ҤC89,gyHB*9Д%Nh'ڠPgcSޖ2B##(ʌKD_e#?ԟ &$iЃ"4 ](CL8sHOaRM ޯ>#ضs3Jw5"wȞ!03th9YЛ4:)Oq)]?TIT ZuQx HRR.*ldJ̐=-!dȐ'4j]+[ykoSTIG{:, KPa$'] ic V">5CEf9 0h,h}+iKkӢ6W;Q7( u}٫ELGET@ P7Pާ6IE:(Ixs> hdmidJ$Đm"(BPVCiqYJ7/O/0nPHUxϨZ%'e)N*b~'V/Tih*2 Fd,f0/)_ 1j1klCؔpy8Eu>N7c;VdB Y@(̛!ΡLD@BF w1glgx3k"iL gI[VxCC$J`eS]w5 BGRv-Ԛ(:R B, r 福*WejF\"i ETLk:V +54y7f )!j$4'hF?!` 5}"Ƕ ){ 3DX#mxX*8✠S9ͷn9R@[ q((51@' XŭjHW}TX|n+) v R܁GQ嵍@\C>򫼋fQOCMw(omZē!38"|+> @{S/5y< szBҗ'a<7k{߃_󵏝{:ORH_࿥|11{`/OE_M`)།K]Q |0$ ` NZ kWYF LY` 2 N@۾d) DuG ʓw`J!5 WM߽`M!i![䟆5x@qǤuXnM!VO[8@!LH0Tr@$J%b"QL+qLȡܡ8㡂E&*b+#:'f ,ڄ,  /c0 %bM@bŻ"Q\c4J4Rc#c`H.6J3E8$AV9c:s9v5f#*$t#3:c>>^)d ģXP̣ԣ#?2dC:C~E&5@EA AVMB~=BGdHQܦ BP cV`dPh$p$,HdMdCfBLAE5YWdNM"eR*0!L%PZ'nEdO4*E)\JVN׫MGXVYQnZjW&[r\X.]e^fGd&DNpV\eJ!! @8\ 8fJ gcKR$a Iysc(Xg @HAUUTlF,9A@8 UE)L\L,`D&g|V@\fpE)H{:% EEWgzQ@{ q2lQ\gZi`#_JYxhzx#}U%4{D)Df@G1 D}gN"(AY\B" Rf`&MQf0P`]& ۹E}D*Ť:%`ѩjڈTNJ) PZŗᠰqD Ki`TIޅş@Е@)Lhz6F ěk3UɆ ][&wE YLdIg\vafHѩc*rG)d#)B\N$Y`6 d)jzd@x,"j Dž bPhP܌kcb˜`+*P̠ +AEl ŷF^XOP>+vlc0+ÒmRXN IJS^KE@ݶHmrMPE  %`$@HPB@gr,B1 J-jmŶ D@U'ҠP\.I@*|).BbmN6b_H!&PE:NJ_4oXD^aM(.lMz_^B/HFlTJ B%\Bx&O%jnڊEĭQ_.EQզŷ DuE ĥ "DɜC,D ULlxJڢ#!VnP16@/@\“-M ,qT41Wd;__qA V0A6HoP0LjCXm$,A  uRꢂ1dE !q0Q0_EL$j#;DP$۫'²E|+ HB-&kk kCs4j(Vbs6c3e& p8OA.g`,] jJ's`i2QT2]͞P Lc**,ԆCњ0s\ V/ {_P$4n3KLqSNA TA**O+tLq&X^(Af:`A@\D_!.2Q i4RtDG; Dzs)(fPH6EEf^\kŪI cZU_K*0M;J$@fa-7OQV&09kT e*5]d#`ݟPXqQ@ԬP5CkAJBP5AKuO$mɰE QZ)pߵPY$}?vxJvMgPc6۲zcv_6,AE1k4)2ͩӦ]Ķ P LDnit& 1ޟ"rN7]'$\NEāⵣ/OZIZ(>7!ЊGsI:]h+\O{{3f4@}b~IC62]Lr|tS(8"5&_P^͆#Ņq )xDnW>b{sIk޷V8 :6% vԙ7kvx)ejh1W6V\߅rD n(RzM6Amw0`9P$4V D_ 8*ygYyQP 4":5WڲqeIzz&L&!l6?{#7d57:/YT <+Wk[O:: ٽ8*z5ŮMkB{8 7P2E0XM=*ԺSl6).;Dz뻈++S}Pb#ڀ^U_TDL0w]-tϹy|_)XoAJ,cs8/A&]W<.)Q lEQ2kxJ<E38oC}Jo>>k}MU+WZ[b_|E$,Ԓ`ȃw2J+JtPo" 4R,,b|@\q"dDw?11YgY4;xP`P* \! d!B\2`4#A*`1$Btʏ(i2ƛ!LhР(/4ziRK6ujT HzkV[vlXcɖ5{mZkٶuL4HR)2t %B@*X}1K$:gM54JHIC:z,#JFkH< I2k8쪔c<ܓ>@KH,B?b*) &jMN,+k*8%z28\CƖrLhGzDGLhH ץ|IR%4t鳄lT%)f)اv0f:4!%XE NBS p!ru|ݗ~6%/BHc *.=KC%%ݍ❈ sQ JXf-S uhX吤qHd>^ե-2LPidUH iE9g-BN _>^-) "QH{?bǪ׋?4!OGH r c؄hh$ U Vkk|ea"%~yI{Rv-}%2&! !ZvzߞKC h؏*o_*u q.ovҳ%tYjȶj[!X ٕZ+t _JH}n2$kg 0B(9 *m5!4 !PDy aALxP+#f@TD'>eɄw7b (F?T Tp.)ip2戥 KB糳$es pu:UPu ^g" F"dERJ8)C!FJCk6ES6$))YJWT%?80AK8 y0 #DȨ&X JtڕK&AkhDJi%Rv R?HbUN)3EHjǓ[h9WmUr\mK@@E$ ;Ԯϼylɍ,Պ$A^ۜ /Fj:5!E rj[ZjS^٤-j;ܖ5e*b)Vh)A,AH@0]er3\=/ ^5Z#$˰`5mP5uHόjۈZ*ĶlaS\b#` o+Z蒪g?ЁT(ݽuC^—AP! @_P),z15b (*| upH^pΚko1>DFP)#I& n R74W밝Cb mw\ (b֐RO ߽. TێtH$KВ PQ6jmoK#2C =ݎ2*iǥ$Dj*C^Om"$U~uf/Q%ಲ@.1|JiЉ^t]^$\AI˱uK,f^$YҼ5&2/Nl)F-AĜ X.8'BY);CZ;!@rI@ҝsU s kҪWY6M -Gw?Z p@ꬌ2T> jL~  = PHGy xkb+wp h9W#WnȄ R'Qs}CBrT O<%Fh0yTg,o#P@&(o C Ӑ!.aάy\ % xRj b`ڊ N,!$fld!2A LM ҄P!-)&HK\M(zB &,f`ؐ@M0, .IL& U TZez B/Pbg Bԏqzz}48G!|KZc<)O hmQ  6 hqVn [^x BfQebhhB ^6BgC B!iH6QL1PB `OE#ҍ֌%vp EhB.Abx 1 s"ҏ h"Б&o7&w'{'q H.K#)1L< 3#F.':P*D(46%q3\'",/S00"#1iR3S&k/,i")#҃Ro %;KB4&3k b ұ&rtJ6t 2/]"$%ܬ0"'9:85cY(&r"̲S/3k3t!<.Q 1=TL`2̈"U -iS,P 8q6b V-ͯ%J!Y,4@C;C?DCTKA&¥x E!BR t, RT[bZDHu4EkOH]7s \~t"1KB R4LCK%2DG!EsI) F9"@EOP0B .M" 1hRlPQ$C*,# ?@ + y/)^Ɣ)B0`P-.!@OXUXXXYUYYYZUZZZ[U[[[\U\Ǖ\\]U]ו]]^U^^^_U___`V`` `aVaaab#Vb'b+b/c3Vc7c;c?dCVdGdKdOeSVeWe[e_fcVfgfkfogsVgwg{ghVhhhiViiijVjjjkVkkklVlǖllmVmזmmnVnnnoVooopWpp pqWqqqr#Wr'r+r/s3Ws7s;s?tCWtGtKtOuSWuWu[u_vSɍv-$n9B&vx:kKFy׹7iGyy{ zKzzcyW|7Ŷw""}ߗw7?~WJ~~~ ׸7>؀JѐÁ#X7{&X*>/=2K؄e tOtG@X D1zO؆oO6<8`xE=H DNV̇e}YO^+C8.8$x8c,XȘx?՘,x+𸅫88y)9]~Xב3Yl/WpC9)R9*IygQ  ig h&@SF F9{ąvE)PݖF- RMyͪ%蹞kYzPŸYD0 B =9b +T.q#ڴ+)z<‡nAnw" #IL@UZyYzc+&"%.A/7U ›*B(7&E ؒ'tOaCNPG^%:0 @ Aڬeh2#ڟW4CKdeLCI '@WCUC;'CNU,{1;fiD4TdzWڹ:\Zܲ4jpBT3jN"J$8[y}E;$!x%G2ietါ%{R@OZa|%ӛp6fo@!Z @6Q `K`1(#!0`}`3 ">z/쥩W=y#` $ R $b.!.;Wzw=)|-g~`cBBS\i۲TT"i4ջ%%QjuYA%9BnWבBߙݽr 6xq<'b (F'Bt 3h"YWU\gi^CbK] Q^ (!]**AHI7$xus=$hqt~í۸% OLR %$z%4+mc8َ b T ?Qbu+Q M @C"A 0"N" >P?M_# "` Fi 8%>栬`a"d%N ޠhjL؀&A+Jg>_+0A`ᬍ3;_  _ N5MG*TX*Pj I 3jȱǏ CIɓ(S\ɲ˗0cʜI͛8C>g&Hz$P :dI9"8ZRV.gPEQ}2PmQ9˷߿ DŽaL>>l"qRjZ0>BG:3&nFٜzrbH _Ld ݨF:1e%* |jF~(ș3/a1&v{0F\ } ge5ѣE:c~+2e}ST!G)R=TLDX+ ) 8S=KmOQ .*d.|/cH߭hB~wz d6tz %~-,aOB'CDבpB)WK kF%;\1Kܪ¨s-r3O 7kXgK.GDHGYB}BPTd.ltWN~uvnO=n$!)רx|]#אG.'zYn3Bj3,.ՠ'#.u̡+4r̶m(w&T(\38gSҚ1`K5 .LĈ=XNۈF5э5Sz (_ ShP̦ %,eyziD^+yo.BL,p#  oY&,9ȓ*h(EI7nz.iddqf&:B'$d1a4ՙ,Qa$@#kܘo(a2m%D_F4!9 NITh*`Y tr.&tOs2 RE#)N I'N r&aQ.!cHjRp:PJXlDf1U?ԯ[Jp PY+~Z 8Y!1׾zSq`iZPh"'*Z5sR3†tIqI LL5F"b*7P@Ua1F39JhآlJP cazB j$ OIdKB,*R[eүMz;vW625eHvIBe%JoOؚd !(+#I^K gmAa3h&?5̮2C'A}v2#&hLQ"FSF\o]:*R@)6=c\Yƌ&h]Mpe0(nvjY!y!J֭ |N pF 6Z ߅WbMɶ( ׵ GDp/dnȟN?I[#29U)hB˘œ5*<˱!6&x q cn]Ü5hap7x0 S`#Lh}.$!at͒Pȁ OhOٙ0N7А1؞;^|[#Qy#3OQ.9^dЀK y" q+O|i>P-]R2 $Iws4ymϊ;#?/[; gb+i6P 5xbGl-3bFyazFޒG,uF$:I 9; OpDxYA[X=qWm&)6biܘ5L'<9g?SP$wH==elv $G:#=!5u^uc;r~?,.vBP)Buܒ5L}kz;HNV#m{ '_YVB1ih({@q&gG-a/'$05j3x58tq|q tKwkNl S}W%$c"}pww~uG~oRqGv='&]$Avhv8xvvxx J,Hr({r{ i.QtQ_iIq(n1*)ftc0X I E%Qpq$ Aƕʆc7~1}&ӉG)e y7HYDZ >ܕ&shx͸N~yM& o v1&qJizzaA=,.9yS^%6OE5+b*0* w"H Qr0ѢLzXnH&%QʕԍYP (* 1!.Zwz*JRjgҐ(&qB$!uiZ&r&ؖ9O&0c5AP zp0E ^٧4 єɫF23S lxNn0L 8pdAh@ۯaLڙ5jZw_4uʯ1N'06p"k&;(,ib;92Ǭ؂\?cZ`}U:h]Uzf:` zy`Yrw3/jxpy񘐒(w&ѳ ۪Yj%s=cq5N +KI~MH3ܡ(B<[+2{SCKjڸ[rJv[UBY$48 0 A5g&Q*BIqzh6Q ri$ul | ccʪSK\]75˳ #CW_*(,G5ܲ¡ԼPqћ`[D\M⁅{+q9pۮ%!<#Gk+[/Jж жƒ~CMitY1$,=ߡn: H)ۻ&`)f;<k =]0[˨80qz8hVz.quΨ)a<CM;ipKgst^0>7wx VX|k_䂟s$ȗsgҪeUp in皾ۜd>\k7N.bUPs\sUE^L 9Z=WͰ>W*ĔJNt,,Pl~`=A-:sU_ NLU`P `,G_n<"FHJg J0@| RQr UhS 5_Z! @I@3iHRpKxz|~?_?_?_?_?_~ 'Oy>ҏb _؟pB qG@TQ  EZXBO-^Ę'5~,ȑ8DJ-?BhL4YUǚ=gR JyS)cM:USTU^ŚUV]~VXe͞EVZmݾW\uF,ԩ8C[,Z8|fv`933[{qa 3`,!cs FVx|+iōG\r͝?]tխ_gY*8A0bP3wxyr˞K>0VeTpA)(@}#?k&B /0C 7C?1ˁ(8,1L L5(ۯ=2oG3ξKN 5^퇌ZIP$1K-K/3L1$̲.ks 4/,fT+O*|lE,NHDFrJDA*/BJIgB03SM7SO?5TQGQ$21ބ8q= W]w͵C<6X>CNPB˂1Ftbl~ *Q<\#R(#5\q%\sE7]u-)121 V0 ^eL%7뼑=[kD8cۂC j.js #hq#<(/Xc?9dG&LLX"ď)㒚.A/J ZA|?Bf4nca n = oU~#ZČ- }i3d,ؤT!'Ib[Đ1㎳#$ 40#61#1m!q?{ 4'-J0}#.mc8(ypҢe8 d'xG`> @/߂+ #2Ԝb@:Lh78P3AH)hZ"~P`ePA~P0d0i^^UDP/X"T`@xJOVlE4Gl"X8Fr ^@" C b aE$"Q]a\ 7Ȁ`w/D\.yoc8G:1,s > HFMASLA|@_.GHN3>UQSH>+tJ2#+4Ӂ1C"t$M#f$`D\)A`͌F0ÂX0c, #,♚YTDshom]aɕN:PԠ&JHYB%RHS,YI<W# CZQdSM %8 *Ai'ιӡB0%D?"*?|Q@L4 95wSx4'U..$bRFؼ$Hps)| gpPְElb5P.t!ml$Q& , @$lSKFS|L1T+ ڪBF*YQNŭ's+a*V!еDbl}Ӳ*709Iry̐UUpӃG7\^i*腢 !QpX׾o~>. H%?wPk *~EE* -e=h@J'uozQj8k?2` V$`Zvpd=p5JƄ 0 sX`Vp.  #*cL` YD#DGLq!02y ۞x9Inݠ xEţ |AviNwӟ/1y }veR b uZFE{B m2 PR )0(҈CfxG0,:VTdj1wF @,/ei$A7*ꬪdfO,Cft$c_QAk7NBLRVLG$*^ _AOzOzAT/S0#?V]X7cK$ Bex!mMc5@0y `]3IUT0'QH$^ưi  QZ6T[Q*𯔩or Ak:kӊB$hûhk"Ƹل7It1ģ Q@!K(k.0Ï7CI3[3$ !؁-1=Wȃ< *=i*>w[\]| >aB"ԋR{k 8?> 3) E-L0z` Þ?A j#3Q  :BƐRx8x)I ةCYlƺA^ɑ$ɒ4I_\et,a 0FT'24* -2F@ ,DFxKnp)PT$I@ǂvtGGz&"˱$C)7 E(< n<31*jJ4Rبx\;ɤʴF`!,Њə\# #$,ɧJPIJnt oԊLПpJ3tǭ yt-?D+C$8:@T(HܻJ Ԍ (*H  GLEXDT F%tIB{K@q\$IF-FsͦͅM6?,[$. P߄4@R<2΅!PcKldc  2@3@ӨرCOOTP̂:@6)*|eOϚ QHb TЈP+Ц8OThͩ(5͊sPTAYPJT<⤉}TNh͉QF NH6X=e ",&C9)RDHK/S]s WXr'U3`$ Ϛ(swq6H[Sh7Bayb, D;lHN$ .`3ԂGN?6#4T0MÍ f .c߭.n9*W8ؼ68fi*U(xfHf-i8(䣎?f[\oF\(-] _x? D\0ނhI]{\]`%{92~=|4*ڕhij sJR/>( ő& !$Bmi~bԋH;ƾ>VYB.Gl$峊%^ %t^KFjzg!{=KS BOD{VF$Xxk<28H׳^ 3Xqlh) L ?@ix$VoBpoΈRxoNE%``6%P7.h%$#=l)X-(h$ $0 ߿Zp %q*hXߊ0++`qMe-A-"+ ,q!dq&CЂ  ")JNC69+Lj; ",0S C"03y )o M/T7'eaWXGivZWc]oӌ8un/bdvaqΖqmkW6?ez7cpq)u9w87}_S縰/p$Y*)H)ow~WyL.ےW"M" U_ut!/wɄzn'qy[y71M_wQzywwp9d'|oz'7vbXTd?pwF*{vLSWGW|`h$m ƊVw_|`h'* cgwחW g_Է\Ç}Oڧݿ|W{Gx~ws~տ7G~Wg&r1@ko_RLL,h „.)TxTÈ3  XhTEK=YFUNI @ɘ2gi&Μ:w'РB-jF$Q)SHRj*֬Zr+ذbz`@ʘ*<,(1, @%45|Qj(tn],(ٴkN%̱Wn5زg+em66‡/n8]p)T )z 7JPzO&zkQ r+~a"i[vIlF tF,\ B2@p)IP)Z8A;Af$)*jtD,."ѡȍ1Dqo;L''ȄV0ǁ$ %2ɓ$1=L^ 703Χ*`. HDZmA^,<ݐ_"|0T !@ .A{5A;-ѽ}xP&΁.3u&m7OMGD~8q*/3pDrh Z AjBIOƒnDɃ `}]FdG%H/#j r(f>zu# G&n@&8Rfa>$ bN L@7.l }X) L@U)+$YCTb ӈ~ ZzڦD^mD B]B*)4HCDE)dMfRH;4<`# (Q$i)!LT#t"7 {sUA]Ux8)38d["XֵFVaC+KPkn#/j%sIR#L^UJ#:RrO2w4HH <!D'4 +p6$ #PAϻHDk&HCA  DRTqmp@!MC]r8$ hfWjNADҭ.'0S=!" MsE8 GJTXi7EȎF'` >V馅fdq+`\jnDB"I5&aTo :_r[ %NTXKpm/DRW ^v]&@)L H!PfB Ia|)VPN @a rh'E/!`t iFBQ7A$Ṕ t#@ &K3AK{Dok9 vDrafxót "FCPd[Յ>tl6UH) aUM6M kr 9E#:'5 G wG"n7!& :V“Su7)ɵhl3!1"[w뒘(Aߔ,(8B,H%$a3t'%N^ Bt @6`\DPI>Iӟ~Kc&X'5.O(e:bA EP7d wAp#H(^K6& AoBRh?x8rn g;UtkR`NjȲo[ts qčjZ&A{S?&zJH$09<1\q?oq;!!rmo^{޷r3ApP@"s-`u8܋)DDIK\!sy zeD\wB} KכA Y> }I NtY)s0@l PAљD  ڄ-6>!݄ =\FP8DBpaoxaOuN A4n0^HaLm rɡ!Aao@AC4N @ |* AÅBD(U !#'zXWDR! =ND$_Q "&QU!F μ `) vE ʹ!KN(YDB(5 Nc]݉7͜2#XaG>Nx͔dILaN (H."QRE*8㱤G:^H G+LN ,W)"́aXGLp%6H(D,NTDL*L&6[AA T,RMbbA@@=BO D1h6~u)e;6D'YBQDS!M`D#a<P,fF\;&Z#1 _fqs$!*(1KƄkl҄BZCXHb!ݥsV0uj/doaMDB]4Uv@BtbOe d]H@%AR@2%ZA%[BbL%*g='mBteC%,f|LMR@AB":Y}'k=`a:`ifD7&7d=e*DyiMQF>cCA$OLᔹʓB D\1ifkfJ$a@0J)PAmѡO4@JEah:XL&gi4]泠G *DzOeo@A#A܈gPmI$4Bw>@0㸀0#V x ]B)$ ↣B>D@db{SڌCWJx3*4x38'-f7OY 86A͊dg@zl ,3*!;@4rE.-ckQ`8AvP~B4q1QBdj)To4*ttOζm6G .*W)\wB,wh%&D#Pkop'T a7жm㶴MDQ7嬀 A%S{t_tO@<V Du#ndW4a? ]'Z6>v@K[%Y]cs^7 so`!푒@8sFD/xJЭ"DDcG9Uv<qz&ja6Pk@˕ĠRE6+BPnguNtoXoAyA/q7*ȱU~njtKQǁIBtjl7P7xvTƄS(GoB㼀Ā#ĥ&G5[kw@ Q#@ŘUDJ9q&$Abوb(BX\ċK5GD'D&@F34YB3ڠGO{ݖ:vDyiAdAl?_@|{iJT\$GF }+9kUb8B0=VBE+P"+.Iv+ģ>GD®x<)~n4ē午DQ:DczMX&A,=*SkjD. ؽ3&+&S4+D+0E@0p`T&,@Q-aDR&.JDA"\0Q IdbS&* yC 048gO?:hQG&UiS4"8‰W H!Ĝoʔ"S"IPRWy%CfJ+ ~DཡN61@(VsH(юb@!+ QqT5F *BcȒ-{Ch#ņ>Rg*ya}n ?j|)?g<2CYF1(P§-)'Ģ wty'{¤SPL)!*./381*n t!"5$-ғ̬f2 &"0Nē6jbn Z{Me"BTk+Fm{BlA)NUOAP 0$+G KK'8,Q(D6;a3ㆴX~9$`.uE=u&h^+Fw _ B ^ ~,2Hƞ=Ci)>azf'Mʇ9/2̿4o#5밑ŕeH /;BN%DB3  xE}C\HXB2"isDh#ZON8G3ĴLe(Hp(%5Z*?Ɉ xǔR:MqSvP! `G2=*qQYUNQP2Y ք>e~yLjn t OAz!Pp͍B1'Xg):L@~\'Mv!GDR"C.r"F')Pfr ((yKBY-6} bZ v&~,Ÿľ2K,!pwLYxu'*Nil&d&X܊j5oP82^C$7&qP.ICV-:! cBgÄ4jJ}B82 I{[JIOCED|^9)*.:6R 2>%*ImFZ1H)_ SNG6$Y#%Bn+8Djxn=!"P e.s)H64pf2šs b*ϧbj`f3@fBwg`h&,IkD$gs>OV(B ga>(ȁ *nBh[?BY 9dΤ |=!&L }6t(¹]MKBYk)bĕ7 5$0g҄@4Vvxϐ#Ơu8B0}_jߍPGH&PU4$)kh9n&HSQ-\'BYilAdLIbva'q h@ d:mqR;bVxǍ@Jʛ/@Rߋm _7Bk_&)º> X>5(Ok:[-QKLYSwpoWA3K,16AR̥*GscA .*݀s_PGb:6}.P\uFJqJ%³'LC?=x.!o*[H&@HP.(SKGB*O)6fmCp ̅"bdGWjϰn:,n> CtNaC± Bf".!NPh}`=pܲQgN7k>)&!pk!?k>ܧLA)Fr(d "BL` PA!Б>T@bHRN !qf*{H:$#8q N$,h> "/$,EBN.+OK*!Hn*! 0>q(./!.a">n" @qH@r ⡐nxZ"C3%$U±jX@@b>/N ` "  @>DS#9oPV/h0! `%#$4;".^:,MvS#!;!$N /r`  <;mD$?|$38M誮 +VA9J"2B"/!`,B"Ȉ'h. !2(0j! SR&$27go(Bg"&4֒~"'tIt4GA@ @@ H@ J. L- )TG(S#h"H)s#4P=b G` u >5^@4!!aQkMd`t TuT#PUQ݀QA5R @QjVX3 p/Qu` Tc#"A pbԀH+@u7SFXyR)Bp@ "lYs QyU^\jX *@f]]j `8X5b]u@53OA6?~Amֻ]As~ޏ% $>-XINJK5&M&q&ONC_OCQUm/BM>xˁV{<X8!Mp3!Q8!dCq@@5*`X"Q{d3@T:2N0Ɛ7Kq디Nub!vP@")(Z%feԞ IKL@?-  <0a  M8U  TCф;zJFBe2ʈ32ʈDƙ O8Ō;~ 9ɔ+[9sʦ r,a]DĔAAEka2ڸ7#@53rnɨua; mbrlQզx;+@]Kѳ4ՒwsX'ڰ@ADݰ`H``^G a8PBә@QD5t*^Qe/daBr$vALtD IQ HFotbO}P#6Tv31^ߑeV*LIe*F ZnBFNHD8TDqcn grIgvމb9d4GG{RԧaNdQ =4П FlekRAw5E'AC1IPe8B &[5PixEET}_=\BJj> mNKmjVJP!$E t$C9 p!G#zTJ#oȼ/E.F‘_jC djCԯEBÏp&!0 $T2D1A3G q,E ¨(\|^T ̢oGokN6,*P$s(*Fn!G _X@<"vv@r#BLEP$P pmꪯz뮿{Mjfd{a+$ɢѹ4M*H pP↡0A33*7bBslPZG#Ա ?DFf^oBu$Rۡit` *L! @Pi FGX!1xQ={8D䝂" 3 7 2$Um# W~3_B"*0$+‡ 9HQ}+H(Y k !"d8qt$*"$yPN'D[3Pi҂p3Q%#7) [a4Cr'"VB?R@br24ir44 < VW5n x˛NKR]"H`2AM5\ chʫOS4Ce #Ob/H#8.3,' &6|A\7: :$9|)v8bpHrr$ĸ\EL3^V`Chl䡑o/-Cax2s$]%>1 T&YH Q)SnQW\1\4FTWE$ )I @ ]p~&p52)d&`X%`Aa֣Ȇr ҔZ aQS& G |[I]Y&DOr`lj'wiIGWCoA6IrwabD<*8,Yɞ鞅醔waQy^i4 řq] %f@Tu$HGl1;a6 18C"[(bIVcTQ!B()CJEi8fQq 1p` I 3_ aKŇkş֧oPVjX$[:w&L '911b"fW+I2a4uXڢҖ@lX*@+q o0QaZF **c"WaWKzPK LHLSP#TEL٦OXZ\x(Z- ! )i⭅E({шh:2R8A}q9it-J pĬz \PaQVYz@fS;ruG|BZ ? Zȧ'ņ*}֮8A`KVqp:gņ`ŝo!=طY[˵vr L>%5`{b[*qt)e\C0O`& Sq 0Y]ӣ%-"Ew IK8vxEN)ȭƘ6v3]SfQȔn 7K;8"IW֊Ku! tt]CZp]ɫ XJἎozv US' s4UFmu!C ͔"~V7 O`% (tY]4Ҩ[q!)UG d:x gb`%Au;XYqj[Qlc%>M;Fʼ79Í,/yLoi-l dho5+"L!WgGAM͞7|!C'p8og!HM34`Q[*E : Б&0QC :k t1;'p-`aqn1}92e -MEbc/oa29ŀl-SN,ȬNW(|pANPZn"mppyͬOP0%8Kn 8P/ J//p{r^ثap<.pSi`o$Q97pp0 jPnN^/p3pD6wL0N: {l 6) t6'pcac^g)63@OP2~ : nl5.pXnua..3kQQ U/3maX]Pg9BoUݶN3@% rZ"Tws3O5:@8pNJZ6ymKMO 1Q\P/TmN%Q@޷Z9-N/<%-@LfoF 3ӌQy{}sZn ,~t 6O/Oo/Oo/OoǏɯ/Oo׏ٯϲy1oZ2/0Tߞ9$XA .dC%NXE5jΩ!E$YI)UdK1eΤYM9uٓA8Y IMXxTҢQ2ȩYnaJQZYiծe[qF-EEIdOPLD"x" &<e̖!3Pv9@/F0TmܹuosZ4p68@7+tZL#,Id'5?E\F^*'-5_?Epp@ 4@tH 쁸h "1l?,| CKR Ű7"r#io>;C d,H+ʎ7QA"4H$TrI&RA!|(`4 cc,ڲ-skD/#Gi\4Fl ( ѷlrPB 5PDUt .Q"K* eLS0ERP8>M,Nc;“<=ua?}kĉ`mQb5XdU8C pvك {j TT]LL+57V7-ׅX{k]x܍\slX55`Vxa% (.Q8X4v+TMJ\Z@0e{~oP)Blfsygʤ )!Bb ?,hA8 Bln)zJC*.h0(()v)P @kH[g\P 7x 1GXCH7O8G*noDȗF|!EjM QWmNTGh*`L YY_` % h^i9JVz+> "R8/b`j{&+a\?%Y)g@~(k]SR<(*J¶E%s]4(H$fLIJkB 8)HYCexV9lڅE,E(GM!ѭ bo6 ;.e3@e`9u,y }hD''at{*Fao7=0VE* '$AѥHhľܺ$> WCذHvIj&b뺥ǪDH$'}24[sivAN&7O!06 kv ^6E"X6<+O3RGX )7BbBTx'<$ ?KT8MNDc>?]E^̸P/h r0FF  4 *i$) ̩8Ɓx<!LO[ o$PxTGzG* 0ƓɄ$I0I(/;D-1\>DDpCH3hTDSS$6˕HЎ˱|3=P^K ̛: 1"L0/:xA@AGH@8Xa|8 +YN ͷLL82I؜͘BC,JD:BOQ34(Ly\lܤHJ5K_C2'3$6XE3T Zd0K?4{ޡ:HLԁJT ŧJOPЄ1 D̃ l G3TQ99L=d-hq# =  t͚ODpҤҔx8Pk-=́HTXL 0NTT+$+R-7΃N> S?]9`'S-i 3 L ں@58R:ycԂO8ӧh`61T H$ӽVM #E.MАXХ$x`qT9\P4=TIPjVk-bȰLr@m!HMG`PlQQ$= "-x@c%割zPؔ%cr ӤS0-ZUCTPS6-xST@ES4imGH؋CO5S+SK#c?1ۈ$(R \H`X`|@4̈Չ;JRɓ U T3Ra6d5MXT eSFTSNQ[i}$@e4+B+LC.]pbSemf@ބ'K\I8Z.+UZ02. @`O,ND6>7fIc~gΊ;<&AQHRDEhH0HI>\J.K*Lddh8T6](ȤXOxnBX.†S5[F]6Fd]u]Il]RT=5 .鍠fYت7p#}-.>g^uc!gu3 a&E=k7N_}6gl^ 󺴂]|2`( @ k9KhTLv +*h͵> l21sDt3EV &enSmTm$`.)5~znʊujx'.Nྞ| ̈Wd%& FnZrjr-sf2V[1vFŹ hI} 8~pp`<b{ *ʂCyrZaig:t: N NfPp`<&p -A$#$FoWf ?uTOu55Fg HP~p:񃨰\GH~lGh(5ĆhvihW`hZp MrKoW=HO[6%W-?RkCB)'n,sW t/u/\Ua\wc(?%nx0sX+PgxxxmrC&0/pHtX4 #G.IOt Uցo#UuoT5$Kp[@qhRf#mMX#%عe/fI#Z{GXl, Z9 8 Hh `|*Fh6B,W|G||c'OC5x `HՕ-4^ n}gkbÀ:Gp[!ůXH64+kq*u1;@.7]]j H0L Dh jD'C֩8!q )r$ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *tK"JӦN T @ TjAXR! +[G.m`dh*hl $"6"B.NPFh`̙[Y 98Lg QQD(cc+PMl4"uNxj ocܡ2x:s Wdyp2IcyB7sWٷv"O0G,lԈQ"NH4C/ y0ёC dCT!mG 7nx`i$R} +آ/3X7D q!P$SUS_M1I%=*y$AD0Hu5uLyM U&S `MfRMqҝ T)-Ax\ %aiJޢLk0*؟GprH 2iv#9aܫq݅TJI 佺ijkp\p9& +)E,P:t᧥G.-*9G'"b⛯ۯo`>%'ť\>H0qJ0 z9^D0bD&Sa'-:%?yHg= &Φ&è6bYѩ}'*qp)2w5Z %4Hf7AP <kp/6ץ{M)[, mBӖT-B׮Ą|-BjQ)ԉdoBD \#3p@Lh K҈4؀8XCB:Q$qHLM :էCCNG`b 7` l8)D}W5"]H!.5$xd  7pzJԲA]&T[M@!RGF1D1qP6l[*(TmY h rmH>ю$/r%BUB7ҝ.uk]h/$H^wdU4^b'; >$yKݯOƩ!, l#8 NTP)!+xUΈ=8$O*!MØ# TYÁK b9BB)H0p _J2rId;/(aW<5\,37YH0*.ݧ@mrGeJ/&IOĀfJE7ϒ*҄IIq,O:Ԣ4;eXfrF?W7mPrgպL]W䉝cPI`#;^t?$)y jXSWYavO€{c6_4> :w;QRAX wV j%;.$ 7i @n}q஍6;mxKn<*_9[r?[.9kn<:y:_<ߒ$:!L2Fษ>=ko{{?§GO@?_>|~2e"ipSjc?߾ T`?oG]{RIΚ~??K?`SX@]*2`:u%$0<b`j T` N[ ` ) ``a a"a*2a:BaJRaZbajrazaaaaaaaab b!!"b"*"2b#:#Bb$J$Rb%Z%bb&j&rb'X@!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###,,,444;;;DDDLLLTTT\\\dddkkkttt{{{28#=);&A-E1L9Q>*f/j3l;rFzYGfUj[fUo`rcyk~p>6B:E=JCLEPHTMZSZSb\jdkfrlysvq~y{v|؇z1368:@[TNkeub}ޙܔߜڍ⤛⥛Ċ…˖Ȑѣ䬣沪尧黴꿸•ŚƜȟʢΩ̦ѮӲ׹ھ¼֮ӧٳ۷޾g H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻӼr@EУK>zN@QwQ֮:@ӫ_ϾU\q@` )W]Z g 6FQ'\D ߆*ii=a ,['` 0@8!(*7nHZtH&L_!E Xf!M"U@tih&U8qt֙%if#!k*蠄җv& 99":^a襘f 觠~@f#e#!*무~j&*)8XR`_@&Fu8.((WH"`zg)++YºdX*0Y>@/E o*mdžEX5 @"Lae})СlɲvdZp 8QD ,/Y {euEL ,WHANau2g$Ih_+@Qdsfy$Xj!_"ڀ.z.q_Lz[Wnphֹ&lD:"(+嬷:mda%@N\ګnUw1'%Bg´Ng[){9%wIٱfQ^uGg{yceN Z>+tb\WW'ehYUD6${'HB` :-/^ ,!(L r{=yB@ bOg7Zn_qBD,!@H*Z%JRb;-aPxv!^#996zDY׬:%red:}!P#HBR!h )թx[Vi0d"qԻCzlaM1GJ"6#u x&̥F'VŪuZWtQ%,\A RYYhDa GYLYGfJ(tt;҉fTXN6qDʶ1jgAςrQRJ}p+5O tR7ю.MUn-hy:kLMX(djHNT "6bT٧~<7Ӧ:_F]$CR$<Ρª_(z{!Z')x8!DC)Á bbQVAԧD!W`R WQV)UeNAlBD Qy. =tB X pD饯 @99 ,8J OVk1+``"TxKL!#E5".{;,Qh,I Cgك/]HS' !@gyKPD:o 8Kahvg>NB) @DLvx=RAG'J*[Y0 "wWv26 OPغBx8G O{'[!Bq3`6XN!@Җeuhټ9 *uEAX@(Y? EʬiLZ륲Rʈ쳓Bgz#v)DDu õRYdec©qDYRK>O]rivw@UTH sDkdN* #lgi;>9\T*p&siUB@(28EW/1nBz,Wm}[U*h3*1j7QX` aJVK'zN :_wKvUdRHs&w;sxP4Q3h>feBOy局zg'oo8K(OV0W(Ȇ5XLJw8Zf ZF,# @*'.r+ ሑr N8} F`2\!RsZt=!1z!0x*~9")%|;.!$pѨTg$Ub7hַ(Ww.o!%z 7x X-=c5r! aA~a8Cw%($i.YLֵo*a&H%a9qqvy<(@>?/#CY: 1!G>`dA=!AY1Q91u2B)(V'ZYke!Ox!JyY5#h GX 8bwYLT~Y'0Y;Y@X9= !uHYX/p!蚊 !R}z !]vAؙiS!Qg|X"rX'Cy@b9 !מifRp9%ѕaFYDqIf vۨ(ix!hN7x,9Lגt"AvuBX!H)ȩm2:Q'6JP'vv֩yM/!i)*KvvW!R)j'yOl HbT1J!p&*H4 ћuҐV']J~jO lG Q[jt x*I&"vJO RHE Q6ID ]衏X}X{(Is czlXv I'9 sn B)Q j8ҦɊeĺ!zK',B xᷦbu҄Ks~b;5֚#ˆzg753f#(Yo ٠;rSYa%*Q|qaZR@E'=7 rYE˪ "x=2;9{ڬj');kwj'0jO.( x ,Qt(}hdZ ‘gg'ȩffu:4^vrt=M$ xep_5ʵX۹꙱e!$j!Wʸ:ڲZ—! y S n(JVi'Gtb(ckKdI+:Uv +A_䋂 *;|z!0ȻC*`"+e)(}: \!+$aj'i8 dZW%=wRZ:uҼ ;ZbU:z˳;Be~!۷ Qa^j' ;j'u^hWv`ooN,w[c*3%@[ Aܧ& !d i~':vSB`k'f; 6? Qz A\!뫫b|i']ςR +Ƕ,^:qk|Q- AYAdlYiAU,kUўXy`|glJœҼ϶Fɢ~G9Rin,E?B'(YМikށX'4lϒe ,ܰR!߁x1vY'|;b wlq:-Sћ-8[l$eDnyD&u_\ Ԇl -< L 1cb,[ wS!xQLbֈ rJj׵ўࡻ'OъLj.-j'aԱvrB퉁̹g%UDsʎײ}M!9A= =z?n`\ÉQW,xsK֋[Zժ9dZ'\͖`ޜa|6rALسtE_ټL *G!=Oi !+VZ]=񤁝- -=Ɲv;< ~b~H}hل֝uBdmjQF^m'Th4˾'`C[.#;$-1ph-c^4 H3fmʚM'ƚT:qE`enG !i={ӣ`p a}<1 9C̷qn^@82rR[{kp2*A?{1<[s+񤚮ͻ}ޑ^ZBv=. }tN'fݐ>lw1N*,Ӿ^'L2aL !s{vy!) N:!lNZFL-U;j8kӧKB!C?*b3^urAZ jU=ZPZ/nNC=[?WX?ξuB$[!!|Ọ4fшb:nOɉ*_KvIj>/R t͠1|?X]a-Wq/*Q PW1lj@ jPB hpCD-$p!#br DRJ-]SL5męSN=}TPEETRM>E)У(L-H`Kb~ڈEXP':Hltkum}͞L쀉) ? 5^ F~Y$)|K C[lڵmƝ[n޽}\xbhVDq h߷-Z'prUwqZ(w}"lA\%,iλFQiZN̺&j{)/2Zi@0\iADOD1EWdE_1Fz+B2 Sͬ4;^P4e-Vqȩx"DĪ: P"I!u":`"15j%*[,3sZe̩^s:`,k MRL,'RS\" fRK/4SM7SO?] 2Li2CKp)dhN*SH "L"+iJ,Z•Ȅ`K|mpcpE)9 X(R&A3%.{iBeHϩq6XP8`&`F7WmDIlZT$[٢wN[B!PB )u%m#ڷV%YMI?$d+#)UQCzO\ V^*Tui{RCJ4,1aF;mfmo~n U!VڿUIoC2 ިy-QjV@9B-<'R0RGn\ZubjV-m>x';%0w uo(.WibXIfOqJͮ讆 )OtovzV[~I8Yj!AEFD+T⾋`O$~AvЃaEؐBdn))AFZP"XxC&ZǍ'J7۱G@XWu{5YҼ l(G.D{Z GYpoc8G:ֱ7cJrh,p!ʤװSYFx,IL%dN72t]B$Fdu|*YAB0U^!˂.*f <2K;ӘDf2LPЅWdH#H~\-RE.bM 1:P&ǖh8 B%3g%J#qrtDSfC:(YX'/L"gALvԣiH;UKP#5 -bYhbFҒjdI"H:PBYn" "z.jęgC$:U4%SHL5ĦkW#m/D i\:WծAGKS@ꂓDR7!E:ŏ dm5Fd'FgiD1gCf1D}7chD VRb rXs]ihZ׸Enr"9%D:9 z乳! ?df _&&m'CH8R9w!K)% dR_tKh"QՈ "vq9]HBޙ;/ V<8¨+M~Zc/k< `Tl΢jCHl|iʕe?{^g)73;Ӆ4TK-{?} 0oWY8A/t ?,Ϗ~I@nDnA~g0/H@+4 ]崑kS/k43R'5 (ۃ Lj:2Ê˃'x4B" ӮhN<8`4ט,Bi!28y:@50=J/)#n;@X$[(HKK0!rZ#p z) 5R{ 9:*~ h44>㾄ؾȈD`6l(4Bp%[ E)pt^ /,G|:AH)xX2,BK &L0${AJB-*3!] |b=DX%0X knoGO˯h4O  BÂH+zG+xHI pNS$SG{G}*BHDWd x'PHG@('`X:h48'xA h ,SAD#<`P#- ǥdʦtJ*sFe|YԮ,P\ K [7p#"L|DŽȔ̥("`9ab˺@@+Ǫ,o:2N̈ :I0 Uc4)rI02-;Lt%ǜ}DZ+(ÜΞ@){NK7A/WLzI|,3 I6 3N[3`υ< B ̂YNN'SO(3=O"c$rlNH!%`p L,( D&mCM mS=dUe>:dŋ@x_{)_$ҷ Z 'I8Q'VX)8!T)byu*(`aYp 2>`s}<)X^r5Xհ ƩPX-,@JW1Q(Tfٙ D,*vLhzQ0U2 }K.jmB'hHPx(F+,0, тH( XUxxڨZ',ڗXBړ[s@@p]DhGDYs !ܝ-u[, [uxIUDX}'B ]B]HPH\ȂP=+ݚ%ޥȿ8ͷUЂ(p(ƍ(`'Bhu%5A]Zî=(΁hĈVo\'ߐfvffBX:5ցLAfd>.;HGcIbSShM~$L)VXN6b2cHT^ cSe'!?Y\[f8H>.fz46Xf4j BۓM)o#dJH qcr f*d`> uW;nfpgl?JH c H~yg^꠰阆磠~捃@=@S OxΔ(>&CH c&i VV Ѕh!dK Į뷱X錮6˞J {)bОU;FX@ ^eԞfS8Id0K0I. S8Iھ~ mXJCXnIٖJ0J`m`Q$ N9n@oGpoPlnn脨XHh:PS`0x)h;nIfWpHfpx/ cݞ~ 񄘃~x90g<6;qV섀?>6hz: wo6(qu[0Xb)r>r<s0zFs4G򄈁 Jc^o<"G@ :84c46ps>/?@GAdon78 Oso8sD5WtXCs;orHrKXAhhx<~xwyczq~vbG煀kyoֈyb0yy?ugu=xŮx/z{s|tw7^x-pzPn֤z;zx;Yh>egGsx^I86Xv Sz<^pㆀ{{HniN{/qgywdVNg*rnx/HE+x2(ߍChS~HG~JxjOxj^^gvHveu}g~~;6GsGw|wxG~O~SE   Cb `,1S/0xh$ʔ*Wl%̘2gҬi&Μ:w'РBL(ҤG4)2A(֬Zr+ذbǒ-k,Z60YVb[(q8lhFJdJ`%y㫼 ?D,Q ;|,a߈x t0I9& S^H+giVڡQ-n8ʗ3o^SU5LIr;Ǔ/oWR]_C Jc F8dB*dd4D+d@c<7uۍUIj$N}7~8JoUbt%pRpςBVmND]zی}}pMS,1R7YO8 qP'S|;<*Q!gBq8~J/S> ??֫kדΎi k/P; w2GQH 3X8II%XjwQ ? !(j?JH9$~ y!Lb8,=~vhRg!|"$iW߬(-r^ 0.!_KۤPCh 9ՠ8G@kwd(2p pHIE!|Bx9$cR!V$(Q<~(SUR+aq'{ L*:ʀK"q8/|o&e "LSsȤ!APM2Ed$Y7㋛[u aCH '>=`%,A?2ZiAJr5 vF5P ?J>@>4Ert 8CCNB|p!+K 4fsJ *]\ϡ5fêR E}*TzA,$**&bA^j=ω$#+$Lv`Q%ETbg+Ve AGdF{$Ķl >7u32~7{׼bY`28v0Q1h l ܡ+0pP)(t .IOĸ9> n P Ġ 5Z 4ؑKow :ғ.6zΆ15$ݰxsTfR]ŨL i\k H¦-yݙbf;t?% <[Αj%:xɊ<3u(N S0ow|x-}}&/Qͫ?ӯ~Ufo8/ @W ,_?2Е%IL_ &. .(T4 V^ f N(E(j _"`A\! Ơ ֠   !!&.!6>!FN!V^!fn!v~!!!! !֡!yS "!W| "#>"$FK`QRP"RXJ " B(b(J"))J"++R)StL,&,*/b/J"00n"3636 ErL44(.1/#Jt7#Wl/3:$(u;£<|Lt8~0/cV/#;$B&$mZ#@b@8cDAA*Fn$Gt80VJ?"9vJ$K6G'$B"`JtDL&G&SR&Vd@ƄPM*Eb@FO* v$UV%!dVn%WơI(@J$>bhIhVp(WVr%_je^BN O"E0B$f$@" &b* (fbDQB$Q$KTfb2,h@/f4Ihfbf/jk*&k:h&:ƂCi/ )(}C87B)AH)rD)ŝz)f)T'm%0<(&ąh'>Dj E#>ͥDb$&0"h}"Kj$&l2/:@@/rf12WBŒhk{w<E%A S<At6jtfVbO뻢gDůLDf*$0"C)/NIHkjJ)+00rC#l:>j1V@J0S%!&ZI0dʜD!8:w΂wFAT#*E8(4'fEI4O$-َٖ-<)0^CR">ȶݞDjITܦR6J+l.e%>.`מD$ED$AT.Rk~ClOrRxCmLbd,nm-0C0**JKo:D.&/NIh<:hED%\l^֨LD/A-mnICI 0CoKI/`bm^DMRI p@"|/N JLmr6k~>P/n0A0nJi0 נD΂[RLSMpJpnyp:1ݒQD? ":I0n k *p;K+D6 2!D{p*jD/c n 1'w2 16l)'E_Q:?Dn3h%o22{&LDֲCl/v1A|J''2q*(h<IqR@,2VƲO2Kt4J R\*6rC;7La, K"D###DffrJ5%/0&%&/?4X5!ב2A)D,uOOEPE넿&^5_uܪz,8"&lk/bJ(6ʄcICHƦ­&dD0h3@Xi_qR#(< "RTN;tRqMqogAcog(z`t>#Xves0uW7 ?DtOwuS)*Ċe5O?77Cd)qx7a;H'X6d>D?fb7fpcsjrM(4 η!1(u,$Bkv6DK#u#@,gR1'D80jcB{ӄ@8yT,d+H˵5C`?C8•c(LCpuIyPLz/8u;'CyǦ( yDw@g# 9$WĩxRp,)e\.(OY:+_+^uP$;J(_{_yxlo#;()2A$#p@AD#;75K<,, B(+ <dۄb*`B#:99<(w!̫6 czsM<'Xt2 w s<d_=s M[['GGK7)e=ڧ|}ꧾ>뷾>Ǿ>׾>>>??'/?7??GO?W_?g`ƈ ?1b˰K$\׿S;KC$@8`Qf%TaC!F8q%F4dи E6cI'QTeK/aƔ9fM7qԹgO?:hQG&UiSOB,TKR`bZ@tf#ЦU[f o!;n]wջo_zuױgNq PmX ыvYǗ?~}׿%P:ABb !P ) 10NId:%Z@J+-GVRE\.QptE%W6YPUL!,#LR%"'Rʱ ZJdUH`h2x &'J9 b@+/ sQ-M҈$HFܓ(3}k#ĘQ@, h$P((LUUYmWaO (!)Ƥ5""M@PiVZs(Kp ΔkVkIдD3BT R@9 4#F M%*U,bX jYf !.F"*fV(D@Fb Pi@E+\x7M}k]1]}hʸ*裑NZ饙pc;V(W[F`X @ؘf6j-h&(mEˈ鎴ҽ!wVM<:ڠo!\¦ul-, Z!} w! ' e{ Z&^2Gn!% 2@.3"{"F,e"G)ÈR^-h$vO_o"P(dH@: :?N!#6~+P_ cKdࡥ3 ERX,ghQBl6 E>Zв-KB%HdTD!E|!Րd)d%ih+)S#@Ou_CИF5 9Q1,pAgA {~>)\43tیԤ SUN-m(F*$B: t*L-J* M픡)T!8ѩT_X- YEWk΢_UHXsR+DFLWgA+H&pQuFWu"UN Zumq !RŠR86!dW6$ 滚pAȐ]2M iE#5-yћ^Vu{_,!ЂL iCkJL } *.M𲰯BKU4ePB~v5Qb#o Bڄ`s ٦MJ2i\ ^30D'X8r &&-IX񕱜e-o(-">dd 3'W'&A729r](^Mƀ[ \6hESd BS YųE/,BnV!$ 0Q̮ohd&r!cBF4$L06x&0 h@miO\nͲjjX ,Dx+i16s`Boy/60wv5l^a*Ȑ|ЫBbg :oo1Ljն1q-0 '(P+V@ecsVgUzk(1Yq! CBOc cPS1燄ձu-7TgBr,*-/!J'  Cz -y#4av-߲`'.s2"r0 -5+9z+R+a21} ˍ:$ /2(B30s&4./I!Ps3C02e363*r>+g&&7030P5r"8q@42lb89s:B49C36w3t1-66#7'z7 0:73m/0/ES"-s3j>0n:35;ϳ0 M<<<t`HRNuc99R". AcCݲB@I4!vE]E2;s&TAABCBk4iVA/P@eC!>-fBIߒI-Q?=HG) pt)x=|KCHD%BdD)V (#`0#B3VNC9gOO 3K.$dTBAoƔ)t;QMNNL2!KKvqDLLDMMS[S;5J`!VܦN3O2"Dt3!@2&DXX#-}HT4BV$'R;r"7ZKrĮtrx*! X#Wa]}ί HZd%HfHRt|59!"Fq@"a4aC! ;#V"n-rZ)BCAP LvM[RR#SGV",l͘af)íVn+0Fcj}o=k&D/#"4i!4t3%jV!.!PcrELJhbAVZtS(TvX6eǵ<˵l#bfanU8 jhȘkhk|s:ahl&:W%zHr"5v4*LV>:  m'ueõ%%2t6h-s6s>gFgN2Du`,% Bg `qGd@7&$/YB~zez0}s|Ae>V ~m[vuu}ur!7"h[" *j 뀬:AN \~#Bg %wbs%ncwbӃBJ5@%6"&x~ߣ | 5&  YV؇wg 9 W" LHٰV]J, g!۰ WӨS&^2@i=r9"! F&YA drY8'@[ٗ!b_# H&ҙ&B1h43S'p{?-T-ľP &aŀ bWV ޕ*L&!Ϙ Z?VKJw& * @DYΒ*$$opU'"!{"c|"̙VݢFˋW p] l-mꇳ|!Z0zH%#B2TBtgŅ|KeMy<So€ؙ7#8 '*_[?r!^:@HI7T] J_޴dP&Ptcg/>V"u뽯ʸ"vlȝ"Bb{{HЄxoKf+J gfy+-")>""@V @_#BSp/b4Hh…Hy;)\@B)&x" \1ʕ*;R%b\HNnd'P> ́T?4*4RN7M*jխ\z 6رd˚=6ڵl*\B@u7o'P׮޻񕛅{L JL"At3bD2`HD>HE8 [ʖ"t"B, D$E`KS`9e'ݦYbnJ)Y%dY@$̔tFYfJ~{J 3`}SB R"H Ae !p@4N*`ZA MP~3JUcL@c)TZHdFdJ.$YHB~v%`}re`u HHg1vPeg, JKOfB dJƹѝe(uƴvx(m]D!UͭAj.*w{*%AM҃:e*)Iy 5IllUa: n*mREkV)yP y_Ybmm(M3cUcȈQQB8lp /*DBMÄ !D%wXB2]Jx%` RH+Q z&̮ 1r@ r[E'15`ǽ.yl@@)-Bܶ cAQn2ٔBHX@aPcl$UZSJuO)0A>NL _z&;OJ )$7 &p :p)8!s+D"1r, 2NH (< bvXsG0ˠV%@Q->t `(;$ IOҔGzQ` ]q_fK: X:@b"Дlǃ9g6>,q!El&Wxҕ1nnD614s# @UqUs$JJC v\td I?U$S!aɩXoG-Y0FS %-CO 6{IXvE!K&&+nU\Ab pz*W BɔLQ[Qg&d%``Š%Jީ8k7ajtVr^q!dL֤]3शޛ5On (zKXIKea:1@h6) PuvmhBPjv(4Td lf\!/ P< HPW HTyĭEERٕ@щdͦM =Ey zu2gϑM:$N5uu3ڙP@>zZ H+ۓ"^&KX~[cg=V_ |sƛ7$a+2&c{S 'h.rr%I{)A$6Q5 Rl" =L(ު)-U&^8%Fj??-%6FiwA`n0\T@NXJ<yL@. ߂ !\:m7 L`}[ߺ׳u_DLĮud7<ABڱZs/᝔,<@$]NXЉZ91)x8i&w(,~gĪ}F "|>pInZlmCO$~x7Y\ɀ7BBqD$;xOëmSH7E؛B?<\ pZnu1A Rp yn*t'7jk%UOY*+nE `jaۤX7k^!YIf*qao0"OW!rf*󧃊6O?5Q(^svA${UVq6BcHGfHY P&cQqf1k&Tr7IsY,&^= oOw+ڴ>a 78OEp68&%WD8t70W80"~M( CB0O'npX dBhJhh6>hu0JQ\A!Ȃ%Kh&|Îg&yez1q^Ȅ7Bu&_(Vrӧ ~%"XRɐ _X3W@e鱌#IѸy%%fよ~э85mCdX@h_8lR|*!~64>Qr爓hWÏ׷ׁW54piHig$CpIu$ObpSQwXx5'|0y`7qa,(oty<>wrqdU[Y27dei)Xm)xR)$h٩OЗoYXpx2g9`uV։6>y[2Xq`^é^ķD9Hq\qa/Yo]Uf&fI΃)J%#ʖ),%RyA7f X){ ZzG?f6a BR*'zqLl9Mf0(ijrVs!9ءt IMupi>r9Jj[θ|0qpY@y 97gXjm6Hz7ck{"I踥Os 4VcX~3*Jj$OPv$2 1PYpH dO(lJw"g,"j3qœh&J`io]!@ƛwS {MQ~Mj`J%k'*=s @" tC8]4!4JW{˧h\q>_jVJGqr*grb&ya)+sKuk ~n GzN%cW7AKA|xIÏXbj4-hDo*]5ZX#M :aXS셝a4V{u+K{xjWp1+&SIR 0 _.!2&x8?j1WR5vni;x)1AV `yUqk  0ø!CdbpYEӴh柳_c:l]$$h('L}([jK1uzb]ٿ_1PZKgp>[0[Y[G G @f%EkI`yY9HøA6< VMr3h:óL:Bѹ:'A+ȂAAhb<h&ʳųL˵l˷ d2uS ;QqMfPxBX~JQ'j vCB*= (W h !{0pHm7.^CSQPƍ}3SqveX ;Cj @n>^gYp^3*9yP2$8뻘;{@:!K ?U`Td,4Q%ƪA>kjI9x!I4Z`9grdhQ˓{.:(| j"zjxbaY_A(M':2b*Ro޳Ia6qRIma+}2þQ@B8jpI @FFp7DfڣXp;P>"(6_)k*U0SNnaI8 0x^!(4ް:.K*>X2Rh>aK|gפRP4msT \ %ʈ イ-jUĬ!:9 *CO_*)FeMb&;E[oRk[Q } $Nmiӟw?MI ࢉ0麆JZ mBcWp:[ nrgH +Mn5?ߛu6ޫzɡ}O'(N1J 7wvG|&s4z̏3= ee'o.Z ,9W נt0@"XA@ BXY8@@E$9 T @ЀPI1(@@ )2TtUO c1  j1Q* 2ɔY6u @\]y_&\`!*flqbajhc&F %Q'|r&=ڰҩsx4eASU2o'^q#@Wq 3wyz| ?غ^ջkg{R~q\_eZ2HBL#l`K03pC;C1J zz.BTqE[tEcqƮ~"@/q ;`G {`$Lv 6bˡIz/ "H0sL2ǴJL6tM8sN:ۣJ%DbA&I#L{`ےuQBKD3rNL3t: R5QtTRK5TTSU {b[#TdR'SaKM]nA4=DWUvYfˉL\YjZlDY/N̺ Ll1V5'"EgIV1iD`vQ]JVT#xb+2xc)(2,(="8< cs+3+)qࡵwWJyD[ng@ѡxl6lJaR4m{n) [H^۷ %ֻnV{B*D0܊4=XbEx, Lpad'oZ$e)MEP\N A8: rUA:G$,:0q/TXy}y@ɲr}K!pk6KQdjs 4vdX3Oqؼf qo_͝#Ѣ1Dh;(9% bDwkrTC%j_ GgQTVK㫈\!#U]:$LFȩd mJVqS%Ii"B Uv/ֳ|( VelA^EL8/9%A@KG$ens3DD2 Ⴆ! WȈ/-=kԮhvk_8og+ ׹u&f%p l}V݃oC^!q%HzU 8ݨ'ע&3% כ2P ;&eD<&r γA aH2ϊze0 L"氘ahxSԗ=+zd ism o#/HMm'5)W[&@c'{ٵb8"IyVq-~xIdXR]Ajusd8nW~x'^?v !( ܜ( 2E^_d(!`}1!)"a+ |}-R{!5<A2a#TK|e3^ӧ~ϭW*}cG2vbh|n|OMsPȿ0 @ @R4P#Q#9K7g+{#㟞`&?2P3KP>蒔* B SE}DASGaȊH2 PP(12 #\2W JaPPb" ` (0V`EXcdՐ_ a%b5fMghi j%3XVp0kVb]n?Se/U mTUW"3H+}Q)] ݼBp XVA edE YXcm؇e V5V5o WcX``؊0L-h %| #|U WMҙ%@W:YW X`8Xւ`YPVjݐ5֦]VE ֫ pZWZ`ڧ% tYKY׶5ɑT;,2"Y.Y@e Z )M\p\@\cU\ ۳ɝ VU]- ![ۜ͋x[['Y Ͼ}%")E;! (5X3X\nZc]]c ^]ޯ\`Z`uޑw(><wS;, 5]LI,̑XLc=^ `__MVNcE[T߃EwK0DՎ-`\r銄ŋv a]QcVEXV5 RhYxtE'52.g!gkSFr">&8Xj>p[jلRw _/&`G~t ̿vzm -kb'0DEujuuWn}i7ӞTY?Huow.WwvXctm{7kuce}p|wHxvӂ?xX'oX'l!r1XRJ(jx.dC([wz>w* yoeHQ7mVRXVe-q _ [ 7R DBPp,g3Px PЂ''zgnOp'zy|·}?6ɧOJRp˃*uqs(Vu/)XPŋ_UHE`b^G쒨txqj?b 3Z5k WHpB(q"Ŋ/b̨q#ǎ? )r"'. F)Q^FbQ ̗f2@͗W(r2B23r*D2XSl,@@O(bљg8{JtQF)).@Iaؚ)x0†#Nx1ƎC~L%!X P@,1 BD´'/ Ƀڶ8PvȋT`kOhpS"ΝQs\AQG!yH쳼W{}3P=9_$|q)X])iw\x=StRp סbdYX(5CRS 7(4 !gg!bW_]J1&T$J<Bh#Qh\*A).bE&9A⫯C;n!\0*? QLV\d\R> :A$,_o3rp}hCI+4{akBdW  h+1ZB2XO$b;ʖp=Dn)$Si=9@4<z @f8.0KQ*2.Bb)8BIU:z-Du١\G% $%d. S}PdM3܁.yY^E A c|!QOir9%HKb2ܤ'))+)xÿnO cÄ`2LϦV}gV0s8 4WY'"X9C.x!^CiZ4, iYs0$CFI63T )B0NT(%:XR RGP #$"@v׬ yވC`"(nrAY"T pϔQ{gCiɇX\*ST;"SdCs6OMjiHT?BK5&|H,ŜT7X!A#s:B DJB2T"2>ŴEnDHZ,`9Dk7)kESQ+ *2 8pr$}Sw"MHCK> ZIGְ|CW|Ì)/|g#(&^ky.-H[tҞ#)|I yiAԴȈ$"a I؏ 7h QD'2DI'1w:iR9"W%Uz3ފLW!-3b;kAfd|bdH`p0&MOsFWP!ϊ,ABY{"jNBSlgH9B,IE y!-E&hm"rdψM!d L duY~k $E)ie<_WYYH׽so\" ~VLYQ)P$0H;s%r৽:+*T;$t<`s{!}D6N8 R\;$̒FbUwDk>g=h"8wgѱt\UZ nSCAr$uwD`Ŝnn*#ڜ{e<+?9\%g8 -]?#.:Q;\:O>N߉C Dt*/<&iB QC+W;'$T9+@ꈘ w?|K]1m~E[> 4h5EPݽLDADٛGܒ)ٕHa,,![AԼ1_ Vʵ ! Ht;]U}Ź,DY_0U` ĂyDhbq")bC@D=H{͟DL"/,^yVA!ڮ%PD=*ѯ4_Q#:"#@C%cܙķ"FXLh^rD%-^5^D|^NdRd("J4@$ї b*D`"z2)hsA,B: eD44ah^ . J9ǭA%q MDoRPpF"TxEA`egc\\ZZBD[2JI&BEfƏBFt`!f݉c\ bdGDgzRhΓFm,$@h@8):R*<@@8A- Fa<=.nNFQ@#`8B@Fdt2i:U@eHၑ]"t.)3=@HM'DJ)Zibt5S2* BHH*h"#A'Gn-rB!ADIDBXHF, hhAhԢv(f6fC QCdjn2EԪDVE<\E*FHMj'sY EbHRj%2(bA"ekȊlBɖl'Sɦ,Qh+}BUG@ƀk:*+"`p,؟ Ӑi|:NJ #R=lg-īAΫ*DDWH -,-fl{;uݲUq>>U'2X@I~"ơ@S$V*kNR AE0kD$,ItmCl~JI*bUD0>Zn  6SV @٪.,&: H":Wm?.RD_'~!:OnɴSB"h0B'h0Όҹc`'F ")<@YB!zVj+GE@E/D̬9d kV$DQ O cA 0jkBR ZpBT`;`+ڡb1[4Q>v[RD>p\.B#l:|^^@s*[f1.a"+fp&+r,K,2H@/Sctp'1'kq&bFU2E0:2A /5m:,nbg6N4\32=s>>'} nƧ(#:mDlCT4ϹQ%%JDsGsBQ%4?JtKK3ڪtCGլAB40)-D}fm6ӯB.D馄 ?8Gq9GdF"Gȴ6{1ƺ3Q㗒4L{WuXX%\MB(_1z uI3@"E\&SWD/tF],l1VsD@$audKdSve[4/&agf[Q%I^Dӵ@;tBtB`f!]4`?C%Yg]gnb^Z^ ^pwqqq)@XJN vNSC A+CF77J[tD_;uX>B,,XHHg95rw}}㷅~pT2Pu?(AGNbC-avvϷq`CSlwDlh~SDrlLJvu~xxz}^zVygOj6DhrS⃿8EiD8n5I'JdiSy[c9n8?yt +QN994u#7xϵ%l7H.Nk!u zz$\BZw2wςIEй 坋*nx{ yb6wFYNQD$놇Lzz#1]s]U-In1zH=csyB`:r),9OOD>^Dz={YU{?YH1TX"SJYD6;@M*s' *DC%vsB4D^[H7OpLȓ|ɏuХڈVBX-Ë(Qtrt/{;Ďk:qKÿ+Q$^o<ʻz|v֝ks}s@B'`5b i8"tB!<%5O1@-2~Gm?D?{47S'q{LXD;3I<,0x' "bD& q0v;dLr칊fgX0e79.3A@T|xɗ7=Qo`Nw?*@_?40:J-`@|o@E50\$V.$(]T()LB2t$б8V( E>b YIC: ʖP iE:1F'_,`|>@54P bP,pp0b@!AA)t–&PJ/V]}X1  HB((H0)~}" [:p!e[o~%35ߜ?o@ A#bp`*H<J "}?BC}GLDQ9ND3H X?PYqP [HE˧Gf}ۇrE") _F(X@Y B@>r8)XA M"x7-l&8`ӀڴD OB`p) )È`$>qc)EP !=~w%f'C,~>p? F XF3AؕF71djSA)P2hLѯ,zFpqulRB $'9@"FLa@:0>)PF @LT6Q&I< 7XvĜA@ԩv$BBPg2ZQ6f@LA EbMg FɨI6*PtT 8HΧn@e$wNN%sBd4~7+,ҝi)9Bupt~.J슁=CWռ-{Gx)ЀdAݹ>PhA X`D>"wz"uG vX{~>ns*"}U|dlȫ;}" >*" /c)f(ү٠~cCPGd⼪6֦O@!!)"Dʺ+#}jgAD@(P y ȏJP b B.:h\Kd"*ǔP1Щ&Co -$,/#b$HK?)* 3Q79mv)0>XAbp-!Z `|~D䫕x&(I i@1jj @B`S\A ^k"Ȱ*+ xX0"  X1]qb $$v0PKoL>`R ^SLE 1Ƌ ‘"+"/VjCb "*N:co_t| +fxLkdb& T%Ib#R((7"3G$ːϐe@BK_Xgao , hjH,G"`').(R..iB."*Bp) .oB  !@%q枰0b^'.2{N"0b.bH@.O5SS5t MplH"WE R Az75{ Lf@9/a@9oB D"`(n B`D <R&s<vfhIFVn(eB}4hiCP Hr⒖(i_ agp X kBkmu@:lMUlllnB@oX6(nXW$UV(p'7W; M ^U7 '$rGWU W NqUsWbBtIWvK]Mr<%:R@Ȅ;8!(۾,$a6dp O<:-!Ġ%" İ9Mee"dy"!T& %f)aBgAD& {(/Mn3Y"@A@#j! "%sui+[(䶫3pP) !ՙ`̰((V#Ln @st,{yO{G* ׆8z~b_;CTHJ&/VLRNaoP&'Y2 @ 9"`zÏ94 -W B9 ":! bcŽCb;Bm"樬F4Z"ZIe[MIAAWw+: %3y& C&|F9zp[b'crH皜B}F%hy+"6tz#z@b;6!ϙbO)3Z vZy":uդ}ۤk6  *:x {@A VWE1b6v+I@j ĞA byt{`~#I#:p3u /!@c/}#X 6,|Zq(R"z8# 9 )"zx9!61"_9˘͛tm<]  7 SF+ fsT>*"[B:d]-g\"e\"%-" "e$To~خ NX 9*!§:1@إ@]N@yѵؒdmV"X#0Q :tEE2*\zNr4+M tGx ( 鼌] %1QA vo{v@^ obo:;;*ˏ9c[⮘<"%jr6 /U&6[%2f 9="R„&*)W"j9] 7[yBpC㊏ȝ4 9yb.]"W`)viI"^?OZ} k{eyZF}y*=C&m[<$d$ #195#;TS"* %{o+y##"8ß'k#$gs{J9 $v}_ %j͉& 88$,5-!Bb&nm^Op@[n TdZFZz* H (Tx`N*␠ TH#08 F' adD6&ĨcEIRY0DF P&AaT΋촔Ξ ĺ4rh+Zd-n4IT$(KpND4Gn$,ѯ˘3k̹ϠCMӨS^ͺװc˞M۸[BeOZNxg_e"44d/E̅P7"`BRDB+D'lg?mtDmDMbQS]jF\$@yؘNe!III|aIJڂ TQF }c%c 9S+$BؕےL6PF)TViXf\6 !OV@ q\K$Ri7J$e0*$Ny dEuJTFpX YPQ 頠A fDyFGꩤCR!XJ ZFԉ$ 8N*FR2VB4YQBIng@[Qu+k覫 !@ٙʩ, P ĉii.DeHҰ zP uGR" *YƔ';hg4mPA'Q,[ P(,DDQGi1N.`DŇ$F7UU8#:䩀Vhlp-\_F \V \ZeFB F[5A*t5AQWU8MMߊuZQS )jo(ki~{4-NJS-`Юz՗x ?d_Hsw/o~"& 57WXZzjtS `dvYP7 KK'2D? dF73P FPְew pk!2(`s $ƚYAD j9 3U"y` H2J黂u8iN' B"N()U>FT{k]%29zm'@"D&<`6ҵm'""Uƪ"A Ĉ()E;`R'YTk^aZ`.Y+@&=Cn>Dl "h)鄘IjZ̦6Ѷ,8M]׉8(-54$fJuŊz,+ @ OdTSVD`T4T$DVO4F&ij'BޅH#B|Q7[ ]eY;Yx>HM: 2TAfzo䀶1k:=Kwf@:b$I wgL]$'N[P%swOND!FNB4N 7ZE`f6(~<ܹ t Bf3r.55 >AxuX'7<; X s%YXly'sxwq fDׇ!"Hu!Me7sAu7ÃU} !~25vzXޗg8TjEHoeTl9YAxO0rO` WPX61f$JηXX42W|jvs'OH>|qJ{L)A07V~$e TIH9$ɇ 1WTWh)mYvyxi_GVZ!] yZYZ^'U[z]7 E&`A+#K!DHZ` h" {V3,m[oTTiXce:hXHmojyYyxE#xRЅW 8H@Wh4UIInXhDXy@<#UzWCaTat3u18w84ofbg})w ʜϙ6z8?fKv/  R& YUa蒝C- %fY~i#P5_F7dvv{Ns:PS;zyLI)Hw'U1{h-CW!$:ZӤqkWp WpJRSY ۧg:!uDIQYf9qiγK8pVa٧#špZ8 5\I^gm}[*B/ZjJ!6@Nb NiX`BhQvJQ~4j0Vabb+Aip-Y3ɫR)NZ:v QC7 #(O(7lR;T;.FѱN?_5WEz#Q l!2q;gW>yX*ቹB$0bpXzD&Ն$58p%cG&k:u7),giimI/BA`CU; _b R@66E 'd|ZUBӺZq;Q_0cIB>2'WJ ""`4qڔJ!J;!AmCN5i9kyۚ|fbAAhˮItIAbVihX[b U ‚]*VA3`JM:[8 n+] -W!jQn ze~ij@mMךQZ֎rJj5Aڛ e7CTg*Q"\v6`}Tr/8Ȟ`ks:g[%囸wBzO "YN< XPhhɪ&HR@jϮ,{ UKR`ƻzzz~)FWPNLi9ǺJ .Q8 0RWWv'|`:6׊tyn6o`*f6= l_8{*ջتs '$e5((V* 2A 6LLrlt|:,sQK2L:AݍlgS X %-ҝꇈ5 nت:歳)i>Ra Ž!|Վ>%ў ]] 뮊  鋊^4.i;X5c! 1%aGnUq6ܝݨ%TrꈜV"?*kZXr4RZ Qp% ("!(W%"pkN Wy$./%I`g$ޅ>L qfNc +o*˓C*PB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}ʔSB)-Q)*3K T֩ūs0Űׯl*i -uHim4ʚDi۷dʆmLYx/x'x㏗tOH!b**{YF*҅eWB J||߅jTpnf=η5$TU(@6Ё`aźtEDiLn{&`Cu@$h2+vHYABR¸P qOqZ VƆ+\K %Bv_qA CJWbE.vы-YZ $%:CGIE!d2FdՉI"nL ҐY;"' 9EB}ђd&5INR,0'4q9m<9:di$c2Ue-~|e 5D&$RDH#Df2Lf6S6DIJ虒 jVkZd_RL,' WHftf>O~ӟt*PQs(il0JC9p$9%P]Ɛ) ܉QT)K0ԥ/iLe p Ҷe%p5d+ETӝfH%…tb @q u<Ê&Cd'482E-Qs?Isp&XZNPP={}2fp#V7 fx' _K t;mz^nպ[qҬ@{wM0jnD0hg1rT%*`>'@ h;cެuIB>%._JCUj/B^'L_^U x˜`sߵ}w_ٰ DNj^a׬&Y{W_^r.3?#4D+k  A <$U04cDA $D!$"4#D$T%d&t'()*+,-./01$243D4T5d6t789:;<=>?@A$BBDPADCdFtG|U(xHfzEP\đ(PE,BP0x9D X D`[D([p`[Ђb'NPCBH[$` PXLLeKT8Fa4K"b,GHbd'tb7Ew\ PppEpB8ǁtu vwtxylCBDG^$Ee,[~I[I0Heņb T$ș ElBEdBG(G m,F+8bLɇpʧID|MɯDH[4ɏelgCPFBU|J`e|ʪʨ\JUhFṪYF@KeI&IJ6L Pl-PʣUxļ|JdZ4IHp^͔(8Bg0^B\g~_cefpN+gui>gH؟g@M旴ᇔ灦S ]}$ W-benW`a&bNֽf0Zd.Mߣf8 `pDFH(gtn{FDf آYj^<އ8huy\,Tp@U@]Z`,XgY\UNRNBU^ VUɧŦfmn֩V`-[.]BUxlH]·hxťÎ~|k Jklu\Q oB[U`ubWpٿnʞ?avHNQ-p8l0oPm^KkY`j[pq+mnnNlpe^nNU!/rYϥ-@Yemj ҆TYXKEU~@>Jg*~>guK܈@Emy' =Ot9/p;VedVٶpͤ̂U]:7OS-P~u"g_X]@oi)'V`R 8qbu&.pNpD5mrc~h'hpϏ\'xivVvJTFxfvsBI}Cx4L%]P$J XhetɄQΡR-4TmFW *d aJ}&nTS'upa5wșsJ/.QT2]6TG5d BU"QAR&p ِ_ u߃ $DgΒ&B1w'y'|=`GY:hf\*hPeiԡ`VYHyXHY6\B?DR)B, @o( FJzЪ6*Az`i< ћFm) ;,{,*穕 D$TEaNX< R< ҭ6JaID34W&PTP)BD ZbA1 %ױ' ٪.GEA䃴4Lh=<Q20Q$/A}z-{39\JRA#2tB#=pN %=5Zd)O }2J#DuIV 3u}7yw{Bi^#v:5;r3J@?#]%:2={C:qT 4[ !D*GU D 3 r g%+$]C@x+<ʓ>!*NL.~+J=G@҂#1,}WHhdX$HN(~n IL^DUa.j]rՅ_\}K3aBdTJ@l[ 9JվfNNugm}Gůx^,Y<% ,2S,f$<a^'dK^砬p\ zYwO;VEB> 27"гp*e28k_ȇ?Fɳ0@tPiϱ5()0Q$aNG$`u8X_j9WC%Yǽ?|sGr_. & [|NiN9J֋|k iL+FG ?e.ˢDzk/o>>#?UDt|S 1㮕WN8]R\P*EY2=D!QuIIGND D\X]TD+BIdI.DC@)K-$I e^W=iڵbTN%UVU^eKՎ"yEM.dbWF]Мd"1b̍^B_ƭ3ᓵ}dCSA4Mz[ıDDB@\JVz\aTS:SIV~&hh&i ׸U1dP4n#W*d-[ʦWT}LE A8leH_֤^N`n.|DA$>ݣ,lg1.Dq}<> Bz'{{Aci\|kYd;'*efFrFDa@RGrDt 9{5]qal$fm:H[^ ieq|(֨ި փn\}E}%- yU (LޗfM]"VG~]cxV}5‡ i腝0 SJ-Laʔg}1))*LV-Θ Y䧅]-r2S v6⡒\!m$j&D`"'<DW4}qM@FdC؋\LNQKLϫA((-&.+6+,iׯDNm i@Up組gADbWU]DG [N& 2j[V$}'iN\MD[|XP$ViRXGJ:N,VF7FE1y)D%GJ6JQ ,MG(EpcD@.|ͺ,.ޓ@W<2l}Zfn-v;r+TY`P bk~婪l-AmcCFU63Q0y`MuaŪ K\҉8"Qvޒv~.h"udq)Jp}lBgl~Q Xfyꦚ^6޾.̪Wg+hp쨽]*%j؂ kĈ~^<[•hX"Uif&<^|*O.TZL~rTR!h+J`!٤S0nC(JL2NЪoi\LPd*'.wƎدQTثQ-ZLx˝W%""q?QzJ%-ڶjG(O ּ-BYAeo%BZA$ ]΂$U+\ɘE kidqBQHFNx$*HP],N2'" a*"jF1r")[; (M˲2^qPD#~ĬBSzq0 !|K6ƈRTM!C鞭/0򸼊(;@Dd`4^ϟ3pHɅN+"N$(2s I/&Z&0 (^aUЉ5Era$ūy`QMbZ'# G@stdrK{m3wXU5ƑJ D]#kB6+7E<@!dօPѭ1"NU8DAQ4%"\FYh.0^yDNI/>!AE B'085gWfպkW_;lَUVmқ @&\ؐm]wջ>uL$wNIQ.n.-*ʞO&g LrD}aǖ=vm۷qD{3jn߰/ 0Ǒ'W.ϡGၛ2(tR8N@ r((qՕnh0} /#Ҭ(n(S;HV T:l 8\HX(kaQ[mh1nQ!,2/)|Jr'Yj@I2+dQ"BJrB't@ M. )L- ^;D;",TI)ҳҺTS.TQI7t(DXEDρk%+QQUŒJ3 M^HX.h:):d"W(Lo"_Lj%ZEIJ-sM7+U]#Oz{i fE݃YDUW)MjxZ hY$bLM$[SQ:q|aY+w`_vez ڤ}sB|ڸEk(Ģ-x [Y V聃Uрw.(l[IH'8 p UD'`ĂD tb"n xWI(\)/ʗC\Œ1ABH/t04֥UL'=SU1Y>Q$ in+hN S5{㯶X>-cEO' Jx5_§X7:pColg#&rCTT)d{ nF!p)![ u0A`{ɇ R;=F-la%M#DW0# ϟD!^#^XMtrbDJ; ))aj\#0 ZAWq!+ uDH18Û4xA' iD$ɀab"!ɺqaʼn8K p`ǡL B,;h&TJCXb?ZljZGk i\ϷGI. "yN0 ]_@Mmn)%{bi"pO($adYʰ $S%cT0թ Q\hV.XeG4%f󱕕XBVĈkD i^O5mmk4g%M֥s'SjABGYc)),e!b6IڬVЊPhA X*ݝ k Yu- 32@y$h 8y%JO.n.%^m?]=懳A /H_*kq-) rU%'4gؠA\&KbQ` cE($ȉ+$Prkd- MópwK N`C> /nůA(F*s1|.xx ao[v!iIO/%:ҜuF[,7 |>[OUAVjd O]3`WZ0ѡ]MBGJu)miO2wOۺ,lݦ2A>JtNJɳ`j Og6%RUwd*2mm%76 \mIxJ'4W&U Ro:ZDW|Y9G@Fax Vܑz+ўvKýW%-{d5X.%\mo*AqJ.GOlְ ]Od]@3Ȼ3mAz[1g9A\]q05&mv}AŹ,~.gk_S׍jɠ!ދ["di}}o_6abQu{3%`-ɛџ?~J #ph\x!&.-10xJF A0E# lQEBȮ0uqy#iDM*?f` j|1QJ_:Au8qɱ}Bl/Rt!vtlH1q'b:!! !!!2"%r")"-"12#5r#9#=#A2$Er$I$M$Q2%Ur%Y%]%a2&er&i&m&q2'ur'y'}'2(r(((2)r)))&s\%**2+c>1 r,p ,.0fQB-6VAH! " DY %DK r/5s,~ s O1͑lTI"-ar-~0.s!Bq3i3/:3R@aJ"I#N'n жKYep`2ks:6$"{"~'~$"%,o9/O҇:1/R$ ! !s"';S(d9 VVF4A]:4]sč4'/@bdkA7@"q!* tFBBdV_~,G%iC?  *$E*lIEiI,>fvs|{D+'.&$4M[FudNN]S)K Hrp4/C4OM c3:C%8~4Lⴆ"Z24M4GS Ge20"N3R6S_NCg9; VT%#U1pdA(XKVx5X2#X4QVdRյ"tHH+%J`4(HdLU&OIZƴ[A^UL nag!mƧ)s"J!Ju p%~LR^וRUH_d1b@U"_n_c__EiFqbT/[$V!$LIW$EI >vLq(`q2qe׵RiDVHdR?Gϥ`_Q?u&y־ڦ"p%VIʴdoABddViinh&f bzP+'Ty\5Ŷ vFNvTvanggN_n+xNpE`4 jsjxvjex q#0n `<&Iw|"n *W-#I|<>sjFBt[VGJWTNrTfCt&Gg uZj{9Ovbq n'wxߊgpIxhWIÎwx|M8ti0g'f6IW|Okted}7}'}u]'&ޤӬз^$¤z@V"4CH|$,>԰8q&J!zؓ!+ vt5Iʅc5E%†6'sXP{e"v& h vxB Hg (~\ B{x: ! PRK aD/#ǎ'xyH |nYx= P Wx)[ TGy'zXCy`Gn,~ 1J_-ŕB'kc}X#/IaΙYx(09obٽR q"J!<$*314+ `@ ~Nz%! @?`U ``!ٴrY IY em@ %- ZqU0ʋv "%Ou й @   "#϶ 䙌3=bn&F`9WqΓ9~ B .$2Z-5"Vj]B ``9 `Dh; H$'$"0%T//7# hwax%O` ^zYFӻiN:W@03{[Pi{Y#{ b-9 f3k [;v==,a )m<'[/:߉DN{Q{kX[S 4ccBʸm'"6I iѡxo:@<jl xⶓ*Զ}ep54*x@I6 x1 $|Lp5o" obM8z%9Pe;Kc Gfg9Bga=#|^(P/ܯ QÑ="oWunGȚӿź@kMG~8cG p*"^``*"<h lY  EׯbJ3G?}- wA=&Զ=#{L lxMku}szk\fBN Ipck$]b 0!OH1  @@q@e2ȑ$K<2ʕ,[| 3fIB eqAF=D@'T%"Rdκ±( Q ō @ "h TW(:IB`b\㓖p 8 >8Ō;V Tɔ+ON%J!P \U(JDKs>܉c\ŀ#'K6)P.D$c< QiAF́XC؁v"Ǿ'&erP*pd %rYؗ@}Z ZH{aRteWx%^# QMF T~\%~Mt ![2G tVBH|^H)D&]A 2#i!Qw!B=eZne#aБ%@u$!Bkr4{a" *0$JH J^CbC [')9efO$_C/eD\o" F ʋ[M0 /́-Ҕ9sYMC~$ D@Nza֋'Be!Q g(үQT|v8ʥw!7d#L2EBsG?ZU " 0@?vf+e\R@8@uzi"G%BVp`IE;Y oGIDY8b'LfZ>(b"@@`IiYdJH)JZ5#i^`Œ"i@Y„mX"24aO3rT^ k'n)eeN(eH"S QD 2=Mdv%@Kѱ-qk5P %]OZ?42-Dj }YD֐R!\-"9)ڟҕ"D9$N2&`XFV60$ʪdCYU$aF/w$0p4% DY'rOb˾u[ht)` S gT͘%%fU2҉ϰAKfв.AŜ/'Dɔ $wdc'wIvzFD\ S0RѾkX% I3WHSdόw<թ>F$MA][1 {61( [d D ko @= p45&ֵDk|AlI]y헕޳-ntE6-ʙNSmbK|r(LЕ#S,"H a9T55zMXC<$+TU1*q گ$32?U .9Yi&Hs5*"!+ⷪ(Iݰ`|0ZCg$X9K~E0〤g`Rxc䊙/H؊eHmܫU9I݌Dx$!u"DFNQ3d_M+|9>¾(L|H~Y:0 GXw9?@ʿPE_0>:}GhbyWsvfHZlRz'uW,&|X7'{P"gt#a^jc5Z02u?K`&8gVik%^h`9gA~fY&zvw](:QCQ^"d 0}_fq(dXUWP 'PN$43}i>v2I4#=h$aC6~fwGev{7 4whvQOxHj8@Uf}a!N 7Y8Q~ACvZH%\8*HNv\d(pG-Q%6hRl]p:}xeOWׂJg, j(*w^$8 s6+'uvnFWsՋ!!kxDH|7Z(_ ɋY1oQ+xeNC;pxesB)11z0!).ٔUi  pZGX Q@'6M'mE0gy.fh7E՗|X<|xQ%*YV AF1i A; ~,,7ፈuIF>x\PImxٛ))f,YGs,vs#!)}ITyT9 !ɐł!ƅ))Pp,i9 ل9 A7ItAٙ=3?:i꩘W%&i(n y%jp$RỎ㜅@`%9in)sZB;|?aCioj>ʞ كIy9ZX}&)d1C'Z>:%'Jujwy R)z̢Z`gI8] aL@g]aЖS%!)+`ͫD ׻۽f N0P-jX`sFh]9 &d]ՍM #< GeUADLLY|П:ntʊ* ȗ]%5-hH]ԳM/2ik6z({wţ,'Q8݉Z+m>nmsv#˷1^cj WMc=-Z^+3mݶWa|6%1@[HEmÛz R q\F4|a-mݩvv? ԗ[>wݮ,d\fX_N-ٴ QfF H$%|W'.!5cgLẽ̱a+֓jˎ{gBq3̖]݆S&iz@[ثlG/L]{0Q}|< ,3-bJ Y*:V?m!QJ^,~#J.gB1FV7XO5B5HnXVU*(rw.j*Y&?\"jYwJ4T1 y/NɔNndcޝ`Y(lULM\IßJR= '4>;^(eE%3\B& q^!NfXydӬ,af(.nn h:*K2:$?2w] Z_s@1x,9|Rm)V I TpAtA#p-܂K.n*S[(0+Y3@L+L .$#nܚi@)LbZ9.Q!FbCPmD15Ȼ쨓iĔpN:E;i<9JCO=LS!T'iZpPL3tSN;tP Kӵ04 Y#$XX$G2!A;1P1S9Ξ8I$F,Q21.D$"Q‚Iѻ q2XT1l-(,c";Jd"b4͒@OxyJU8@4V `npFQZY4 Vye[v YNB`f) 'UDXG Y_PeYrB蜊>銞_鉞M.XJrGDGyfGBXU$-R>`쎠9Iծ PW$. taUԻʸuY"6 _([}w{Vb(f@lMX[ZE?MAy(naEH@ XcJ% Ӛ~0iOP@ `!w"E5 n`S'˂E)k!mS (Hf P+da Wl (hةU0B`|r!BȆ.$b10<,BHD"nN 3H"U$)i"KbW;C@4(@ YP>p9KZ(/[/h s?LA\A3 n@,xAԘp "{N[1[u*N"+њ$B($Иva:ˢcm* (/kA6lC7|C8T,*T+x+'H 4C0 QYh꓊`1`$ 7,8\EVlEWL9$:$/A,XPh*#DHĘrQ0EĈcxY@`U&;**2 {EnFoF`` *BS ",hf$\9Y(-BFɊFH,NQ+%ߎJ`tY2)x%\|k I}~ p'H, 6FvYha@,S~3[9k-`P A`mb-X@0F>UB|-56 }VPi2#諎r"I^WlhanMfƌ 1ih> ysФ@ЂjjXil:lM-F-W6+pPx6MBv'`dt^| NNȂ'k)@X:^&ȳdz§@jtŘ 1iVN ˶R8kf5=-fm[֎k$CĎER+m۝SmQf,a.D.v& Znnmgn(h Lmꨆlc e J0gVG+> K`Urb{i1듼d,}VS\vz [C߾ν he:JǠl_g+.h.É- zjF6Lj  ==gv9QhBɻףp!g qM΋Wq ;P2 .?~)So*v=L%^^H:y"ҍ\M 7wIwxs /^ n#>̤O܄lJ_''!ߥi5`@?bo<+p'h]sGLd\ Oe xr;Sg-_tZߐaJJ CHɨEnrk];|6L,V4_ *Lh/oHXjB A lx;s'%ZΑTPLb͍!yi+X455™(,.F!lxϥU T}Ksq'}d>ܸ nՋ,?4@ę zCpl)/=Qd  LE7͔PPPX`@"L &t@!/&D41 F&TpԀg)X`,<)CS2r'NEP&2q&>)u*ժVbͪu+׮^ +v,ٲfϢMۑDB+c:΃0/!J$(j⁋6L0IJ]uS2LJ RONz5֮_Î-{6=Nb@N̂q!'yS!ǓKUvLиź  X xW}dI.Jgc1-61ϯ?Cn]$a"`5du}!8z$b1ơUus Fh T9 U 3X7☣E0WEM'ruA)i1M@e vWS ]u5H0 A]TAA^@Xw♧{tDL^tA=^GN,Z  qmXZe)xmWo}-U3᧣꫷M M8zB0}4M~xS QP i)\ x-wQ?"C4&A=L`:磟g~=3zm%U+n  h\vHW1,v;u1ZV2<[Y$yBF!,ױyfb: T1}Ë V? p@嶒laW4 b1Zܢi5@5&nZ=ɳ6i1D*0A<7bĄA! t="^$FX$Ó1FC9퐋$%uԭ2pG"IB$Gv I%Ca$+[JI DĖ[jpCJAz~}YTXD˄,LS!*_oS5MpKWG`X!Wi{3i"~* aC=) We!DojjܺLiL'(j,h! 2c>[җnT/PQ4:í? )QjTșѣ.́3M J:^pdCjF㡇3\gu{G+]]5sWWmL(:a؞5]X 1!r$FVŪҫ_ի)" DQlELVk.U $ckk6-og[dP})h)tS-H̎йGg;AF ?-m{k7]/{)|XMHObـqUF]\;vDu\؇^X c80; ħ*!nB+ᓄ vC_y#sH`89#Vܑ0l]~bG:^'C9R299vDۑ^6if ʱMcPc,Q?:ЂWwup4E܃_^"RYl-c[dP,M͛/">m^2g4T#4[W:m&v'σt3A;UyEJf>VENePf>xijbS6o[||ܺse%_J{tfT_'7XTvm#< _5f!~pٝD5v1b"ABNf[wb^K29knŎ!Ae@Os{Y0-ȑSD7D`^",Yݝw$bͦyǁDTVφ|{GKUMEs"˒=7!¯È!+Cԛk"VwCH!C2HBk@#rDO?MHH_ nL$R͂_B -HT_Um%R' aНMUȉ] _iZҀ V"0A QɟqEBWȉ[AMͪ]T$9^$Sڰu V* !|_~a.\ C!XU[pO"=0QlJ<bCh!|D&^Pt!U\5It""ҢNr<$颍P 0hw]!p( W[,5y`р_aU^L`E F KrHt !c= Tۍ?҈1FE4 .^ H#(hgVt\ *@T", @!j<(PZb|qz!<@$S3pL,0b"8@F$j髢g~tB"$~EުUV®Vaa̭DV?VPj戜0U–V(jj4SZLZ:^!Lι>^[L{)XkMK+\Ah*8 VʞD fANU^ۗ"])k|ʜ ?K#D6@oQpJ$-(bw5+A`ESErYH`7RUD$VBKCW3ni*'̪-@rf]OȭIvZo0,@xŽR(k+"btV> 5B@,0s$nBؑbcW8YwG9C/7igXT@B =D]F}H%J-L5ݔN=PERM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnpr=t]v}x块z|ݗ~ >^~%-5ޘ=EM>U^]~emuޙ}蠅袍>餕^馝~ꨥꪭ묵ޚ뮽>^~垛ޛ ?_%-5ߜ=EM?U_]emuߝ}?_襟ꭿߞJB"*ݗo `@!hZJ!+T(|X! ( (HR@ ~fR"( * T i販,BfXC A@,%KDPrh*IbȞ$A),DBE3j;HqxF7Z `B7QbO"A…|*$"!L"0` RpPHK"P 0I,(7QX4 (eT,LJP!Z. /I$pb>]C&BcrB `'ps!8N ZBN{~K}@A 'e*~UiJp0O$(:dn!HIZR)UJYR1LiZS9NySAPZTIURT>Ul!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++444<<6B:E=G@KDOHPITMWP\U_Xa[gajdnhmgrlwqys|v~y~138:IK[\hjqsOT]Xblfvw}…Èʔ˘ΞȐѣÖŚǝȟʢ̥Ωѯӳնֹؼھ֬ӧܹٴ޾] H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+7HiN,hG'8pËO_@|k2&Ͽ~@@{$=C<F(nUG fh~Ԁ?t($h ́,a="4h87-&ѣhH&m(AO:Xf喑P ]||$у\pVGz`@e1^q*蠄6ʇu&ăP=^Vj饘Vǀ&X瘦5AꪬC1vziP >5gN 8fmM*$κ$ºhiB2+afPzP,*;K'|0՚!1ni2Ȧwq~z@ q![ʢ,n"*ܪ=^ %zjH'tPl|2:g!X`-vL"I %0>n=x$&wCbqܑ\P>o ,DI 4]"Et=ħ褗N(': I"n#{(}h+g{Anc (DId @v36{4]xY9=z4,XO$3yDGouMߣp{h=x@}"6kˠ7ym " Kp-*@\a0hw̡w%JdÛ =\2tiHLOaaC| v2R_2KCz4AD,"cM(B0%d ' O A@,UOXC֢$qBN l%Sp1EÓ~\AiML!ÿI<}D;JΉ>BYMv RQ#}Up=DB&Y$4G`]\z̈ T_.,"L(ȉ^ROn=擎w?8! MhЄ$h%Gn-Dr f)A.g{VlO4@l mN8%34s*ĕ`2J#y$,"iR4G4AD{t@Ɣ@<lӮzU+00&&H[֢&ņO+v@ ']zD 7cQ,JFPbC&ƄJ` Oք@@J MʢaWLf•QF08Ĵ+C*QdAж 5\0J%0H,f{LQ|@0@ I+ؤ[tV!w:~K(r8 FR-!@K'RF!Z>10 з$hi{8?<`z+r\#HwXj (^$@ J"B53>/JXY=0bIoq v0 P4#h@>0yC>y6 Eň@enn@/3r`=XcC+"h{m]B[MVUgA|P,`LNk l98)I\ X %Y`|$A*'@tsbP9)PT*Ifu=8n8GO=dT!} tZ$s=8?= C@ ]r %2LA26iWuD(jX1d>y=&$|fJuRZ o|N!Dz94!;}4͐/SRq!(B=,bCׁ=\ B )$!z'E"e⭐k( i25 W!?7ۍ| қ3mg)v>!զY_7Π*Vm{.?ɷVE+D͞]CdAֳAQ_C﵈L=RO S$wEy2א+2AF1z'+_wMP>tO$x02F AbD+9gB >rV Ew|!|gP{rW6xH[5 &wZub"SGu+S)HUG A\vEW'X`}1u_ u"\a~tXyEW1? &xzzw>z1Z-~1r)A8S5R@(5Sw`Ss\|,2q !2 QxUxODI&4ȇ؋cqW^M0%#rsp}D}ꑇ] Rj|p#n8AR(3."dA `Rq?y>WV|0x WaN#"册-҄>0P @HhWtP بh s#@Ҩ!8` BQMI%:!hH\hv>( ~{. % 0m!bS,r 1"fX,M|6& s:I.!(a9j)#1{`<yC2oUC(! x P Z&RIM ,Dud85XkF2șQ_ҐPv} Q5wلHZ,_>x qPIY-`q9! Xf扇!I 'Qv 5 y*+ `u`V?xXY"~y t!"!Գ١GMY aHIgg Pq OrRҁ L JP~#khtD5>qLy5 1 FI()ٍɁ$e*`Z0:9v Q5g!^jB ћ! r!-UٚMjWa2jjD ħզ%ReWZ p 'V5} QZdrraItPdǗ#xs #BÙ:- rWeIc7H yiY,Zw2CY'j%0l Z! q1X `bɣ-IjZ;G#|)CuBxvn)U$B:[ ja X1f %%[1;gDXHb|=fEwhB>2E#^z\۵iI `%TLY AJK '!K %ִ>b~l uan;S'I:{ˀd'(Vc8X]굢;B|1tpU\!l(K|*wR Z ark[ TaK +/ FVš[ &J[ &zk$Ƥmy[ &b~x6K{{C# Og0}˷%;~h"bw[ b&|q @z ] ''9u"˂T_# q᳓HL 7 :qKpR RBi o?l_(<ѲQdJ!+ j̊{ҝu=B&k= A݋_bE`Ҹ.5tu,YfiZ#HCbdٺOr!=Ҧ|f[O.LQaBk &a k %K &:zigNxL[ !ba+f<}"عc쵓If Zo>; \YDBq l 1Q (s!IXLa\\߂q] BYA-U y{L$))À]usܜ &LyV<} kJx+VqJ")لͬCOӮ@{ӻ;] ,LcExyNOdl|Ԅ)%5XvM"Mx-]'츾urk 3>_5 -̑kY q]{\5쟅8Yu9 & o}{ 1O-ͽPBg5 퀓K֫= ީ<ҽa~Lo}LmRc2W=Hi0 %U}v1ۜ'Κ|qNP]Pb~u:;Y22]ׅ`Rڗ['O ې[Rˑ@G 9TU:( f^ + <rY=uו8ǂLD CniJO1n8N`R۸9'kLX$&枢`V߸~·+ & s څ߳dbjqyIsPncV dҭ- !I=D\`6*Lߣ5x>Ų``vf)хhT8x ڽ|dd%v9}`ͫlN`.ҬVZl>Vrӫع-= o>8 ѵ,#y^KuJZ i_{x㱢kO4{[j aʃJ~*aǾ>_խ$' ⩌J*B9 bFOG 3BBU|nպ] ι>Vԙ0b\~T-AB%}z~ yd[5w4N4l($5vv˯PEÏ#!cϰ_F L_ H~-表!>W:G %1@  jPD PrAE dlHI@NJ>@<@R"Ó7h0ٰM 2pAKAIЁI>UTU^ŚUV]~VXe͞EVZmݾWܧIF ㏠F=`4@?-diRPP#^HISԛD- ƙ3v&Ιy:zfu:Ǩy|r3O9PLWtխ_Ǟ]vݽ^x,0@`@ 4HR8+)2p#(|,F* @>^ 3ʧFA-(f::ΨZ2D"0'yi&ߌ:%mj *'hL >|F#HzhiǠBK:+/J)J+2K-K/L%h*)OdS J @x 2O͉(Lrt*sJ(5sbS%Z&ڢ1r2r BL`m&AqHJ"%)yH%mxqL%Ka%XcE6YeeY 49FYjEZۼ# C [9E6 /4o G=WpI_Ш~[:U%&Jt. V(1ҜBHBg?9dG&dOF؈{ תh( &iJ5uTIblɾxFގ~D y]qB9';"U [ΨC[%P 2&זVhҔo܅ )rFɸ <(D!!8/)*IZXƅiQb$xx&h+Bp駧z>{)Wۦ Zcqv(fiI` 35(UYIG̹bS/zIQrgfSl9]GH,yCa UBЅ/\ 2R$= [5X%E*) H6#BlI5"đ} vg 1^Ewl喔] gH@rяdb7$.Jp*|PBu$QF1CȓB.5{rHy2ƙ<΍'YbOFJ$^p ש$ymE(ոEnr\¯FA@m ĥSԺ&%5VSՂnLcs 5IT5|.OPV,tQmA oEmFDs{%E̶"en5awNQ 쟨rD A r]6yő!([޲+1И$/9UTW<ɴn  OD;0G0ܐvpռf6ٚ:~Urd mp\Q${Vb6HE"P"ȷv'$1T <ȴIVD (v&aŁ!+:h@\N*׿v=&Z%CD3" @I\Ϛ$?E@ગ]qĤ L+d AtCK[kܥ^D(@ۜ`&Q45?0Ang%xEhH5 /#9"M{#pܛ=';Aa$I К$`[㦫(1S9:3شΘ x' @,7B)s ׀R N# +&I  #`F<@A$ :+t+Px@sX $$;6?$h89 @h6<` ,:.KQ)Y3 @[3 ˵``@7~)sDtTǓC껆m+5D\Q*HRYjQh8A:DD8Jp?kY{9iԸƩB E0nj uy iϢGKuTɕdɖ5|R:HIF )ɬbaDtH>H![&pǾ<ZҘ 14˳D˴&ȿǪaxJ2;Ȋ(Ŏ`A( >xhHMB:̊0 ]\H̋^3+&<TdtM+ċPħī͕ML4|e끓2J̫<$ Ħ\(3K -$iDl͖K.ה?p$:@NhG1T΁pй联,B8$>CIt;, 5YȴMR[븫1(M(@ RN XP)8h >0R(V3b"R5$ P? @ Q{PC̄$Ɗ Ṕ1m%H1uF(Hi2xPG JHG=6!5SET `KI>)>в9H@H)S|x7'U=t$`-UBH8T?ʫ 8xhl >ͼf`mO`r PW`$)GW W`\un ?xΥڨکZ CO@תڭڮo LD꽯5۳E۴Uۓ䈼[۹ۺۻŜ;4ۿ݊ECYeuǥ{̩i7ă\5rz%M~( ɄXuׅDHIc3v%5_48(u])iI܉R"5Eߔ59^\(Bť_HcE5F); 8HX]T `T'M6F=9TkK.^K≢\! v>!&"#f&vbu$V{+,Y)Ӷ%-0eD1V5fc1m9:Dƚ>?12CCFDO_|UHI>.$ZJNkYO&R6e?`SfVveNXWZeAԐ[^Ie_&b6bAP8eff vij֎|Jkmnq&-ufvYm]wyz{|}~&6FVfv臆艦芶&6FVfv闆阖陦隶&6FVfv꧆ꨖꩦꪶ&6FVfv뷆븖빦뺶&6&bO^PlĖɾ "˾3h lО TЀ3#m62C~bmF)4 P  l @>/I6n܆nk:ݎ쓘ήn8ȶm@El6S(>(olUno/o&Om h lfl 4l4!Pp_1pw ώ g l0m#h l `p DEPpl #m$!_ppΆrJVrl q"wq&? )l2m=Hr%gΦ(m8<=AW!7l2 CD_ 3op%Pt?S@@.sPstN(NuBwu)ΞpC 1p_ bnuHukb'c/YWjZƀ>klw\_`Y2@vK2hiw4h ylz7I@/ D8p?I11@d/0 N021Ep8OxOXwnuW?C xGdG823Py%ω7yvz xx0y<@y7_<(0 'wSy/zxw@NΞ{02p xp/n(xp 7qps hp/|x"p1 L7qωoǿ}o qEoWpLJwpWl2x} N/ /q"qpHvwnP uh/ \,h̅ l ˆ'&T"F/6m-Q[T"|_@qQs'#f(:ơTT5rlzfbO( GWWwz`.{͕=ofN? 8 x * 5\O:AۃaVo 4Dz ѐ qICPm ݆QvPzWi|ɁUQ("I"FE$dA7A!6bA1Ǟ 1YPN]hP ey&i&m&qʩ"QyWi0+'їq2u"FsA ~X'*Tx1 hنݑ3)Ҩz3D'A"'e  *Q,jBcBIDFC)YU`)}ba) ӖxBzQ5N{j%lFL D`lDx`( ]As/ <0|0 +zuAy^֐Wѐ!zTcD_44DFщ ЊLN&l^^PhA=BqD'8V|:YL$+dA(Gٚ Ґ Q] a}༵PVvAK`N'#0 >8~8+.Q&{}^l˲J'. k4,o3Zw'MjJ_A +\$qc'nSxVIuCȏ|Ac{ZQw\8???#8pNLg`q$b" fBQub_^FeĀI`D \_%2N|""%!S^z>&gSHD Npb_x eh G9pe 9bb搙x}@p"3bB1.7$]8G:^3%vKad7YGF$ve !#R2! Eb(򲗾%0)aibLdGt$t(IY&ȹ}9K:dD!=Ur7)rƒT Unf?w&$nuļ(F3эruHB#͢,%I08aD(4vL)(~{ S207T< 20 ,VS}EhX0a1+5"uD%: n}+\*׹UNK`AgT!<+jk^ lT'*USwG Xr SPlCD >г$EaAK[YFm+ns򶷾e h\+Z0m.ֵF@"C<𦚳mc B׵V/h`:b(ent^,v܆wD:.+J!-AJ 03 R%ӉV܈"7,BnP?2H4w겪xe[y D C(ℨ,eK bI 1mLֆ l$P T]|\֧Wrr#ކL2c95n~ND^U,"Z 6WȥXr&Đd,`4"f9Z\%>Zݴ-߬b.&wIj(s]׾ eR:`_/@]q+.dVVKҢP.DgJ9jBS&bA ٫t<;ig)Zf3D']6I_o' i5#.S\׈vL.Z^`mF.S; \nib9957ې!#D#mdѺi>/y6na􆸜x.M$ aAC l8;.kT ɀ b/% C{yiSnH/4w:A,3< naDJ0ѓ> H?…W Q M"P<t B|?h򆺼׿Mw=E |ܕ2^>?W7DP{Tџ~A4aR:&pӿ?n?d MQeE`@tEz4_Et9Dᩓ\`_ p "O4 (FN(V^(fn(v~(((((ƨ(֨(樎(())&.)6>)FN)V^) %@tA)(\($A)(8AiiC@i*&>@i0@gPj$(*v$*%`*4A`nj@B @|*檮H#j*FPI 곦V^`ll@ȪKj % @EPB*F+++\h+BI4 %8`$.뚠).@Ebj^,Ɗr뿺(0l$@º&Y@֬bnkDziȎ/,0l8FlY+6Zk4 / -ў $$+~Ӗ& B#EYm*$A -FP-BQ$(AA@8AʞRJERE%HAHٖbh!@ZdDHJ \̮@AJnn(`!.Fm]Hj,^ߦ .֞ n/r/^Aiܪn+4C0bl/4nĦDp/BЊE`j(XВm63(NxC@E`0Z@ApCXs+\Hj): ޅ0[l ]@6Pj:DA(-^m.lC΁cj®Xk>0q pJ@&\popz0A q]n AP-l E13rl|6q^&C2&LkZo$j1-{o6oqp.pC`0C̅˂2mA7D""#3]o _k7'C(3 `*f5۲=suN TrD/C/rD#1CoT3m\8*@l*$$AkXL3]T E6q]A2,Alr't8{2&%,rF;(j8@2Fp="_NTOr뾮AfBsADAE4XFB(qV\;H]t.u]+;++Ҟ*z3P#Mp];*At 9BJ@9'5ZLo:NrMS5i8 EP@&3X10nFX:BCE\|6DnL2+r/w,s/_ 1]3+̳]Ma+6^.&wJvPSj4:A0gg_7Y<~w8@@W2{umbs.8L\l2@<rt\-{v&3qbwA(0N+ly_{E|c78#d75AEd +\\,@4YT\8EcEX2b7w8adErk7Zxǹ#,XAo166CvX8vCl$q8g k9fvC$M9At8y98_So6cϹzks37넠o+\X7^+JRAXzcyws9qC:;ċ:;mqDA9'4FL:2_Ds+]\ @;ģE8;ϰ^D:]l9f_K_zË8w:El1_";6;F |pOgk#.!\D}CT~.˼N@n k|2߳3K\xC3o>ӓ8AD;>SꉫW\E9=lC9DԺX:C$8E7z|EZ> }\N@@h0UA]-F1\x< q!T lpC<47BgO?:hQG&UiSOF:jUWfպkW_;lYgѦKB۶[qAs!@oj/^!9?H4P˗1g8A\ܓ WJxPŎ=KH% lb̃sDlij1|9ϡG>zuױg׾{w?j(䋷Axw4r0^B=-pKpr/h$M6@"83j3ȏ0̰`Ұ)6㢅)W q$ JBi%X('ND2%" -/ S1,3LSM(Ђl`@;9'𜋂hs R*P 8N71G\&"}'J! p!G7Wt"Ee%dt(HtNb`_ Va-cMVeӒKP"N`Y$FOQZ҃X/: Rt' RD)q݉AtSm#)Hxz:z( f)1X9bs>ݚ B4ZoC\A {xh8 wK& ԀCչTMȂI&{DR/R}{N[nLŊn Βo e>sD(Bf6O jE%uyK- VP! s S=2UW])QVtLgȀ) e8[/O^y hr{*$ l~,17oj l!z+jXXe< K dP0s4? 4zACB@Thj=+@(xg|I p$ E4D%.ʂU$)Es AwN(AXF1e4Ѩ$  N|C?sso"ޗ'OyV#{{>1D2M} 'MʞpR(7Rvn0r3b K!7"9<d55 `I>|b?6!$Q @ʊ:8a@0o<+4&q  P& "A3;0@QS&, 4B'R?3$S>HH}H|l$Blḵ-eJ"u!.@~!L^,bFCq?' S&T&DK"LT&33KMb4M'{˒-ESH"2$d*I/▶Cq'6Fk ڱ'Ԗ˒@ve |fC^sb9,//=s2nvn nV3;iwQ oBM@&l[(6l]jlAVgF|t/td',$'$pBo]v1B(!\`w)6PGae4jh( 4;'/s5"8<דD1 W'b -;`0w(25J7)wq?xa }|W(h$1 zUzmz; K6~pⁿ7&1xb˲Pc9O7-"_q}] ,Lv~~Ui5񎄵 ~鶃5 UYV-| XsXxe!绤 E1/ !no*1 OV`y,8`B*񏊭1X(јM͏< N'VύXXXu!BX(67?#Btċ lyq+d^-yQ(Q G'292'jn'Ebe]wU p8d9Ns (:?yK@t8I(mlWօG!sχe8 }0VU0(Y xyV9 踚7!Ldi1Lu!Hv1$oLئ{®mLk"9' Zz6:OVe(8u:[2z8,F`V" PQ3fp<*lu>Ʉ֫B~NJaSBE'(~' !d%E)Rg$ht9'vz"\9(k>"V' f!8!|@Odꞓ><)z`BRWg-'._:W' @k! /` i'@>#Z!Ι],^T>!%edF%Z1dUNdY9݁Bk%~!x!DE7 S~)("4WE•8x…?:|x‰B"V@tT8ဓ,RJ9'XŒMLKH t&$' :Հj\z 6رd˚=6ڵlۺ} 7ܹtڽ7޽| (?IP uF=၅ 5'9I#mWR4$Aia BC5h)vTiFu{tOV|GY$U;hSAB+ĪDY$ʪ`H`` .`>aQ"E|8`I8q^E6~T!Wn-(SAA|tydG-eP~DSY,"}JpZKʼnS) EK4GHt CDCÑk\jqC tATCntCD&Bw*TL"DUJiNJi^ini|dž8Jb̑DU@yЫG IOdK@daTB t8(9Co#B xN.K%@xazJvfvjvn5$Awv?Jj|Dw-7poKG@C#K;tTTtG11`8Eە!'B#K\BBRlC+=SX2,yNJ@P{G-%@p&K^V>ͱd󠶋9@u\kG8F tXLJF |pkJpD >ԡs>:A <(J!KsCڂ !#B/B|F|(2'!HID|$PD BEDG!/Ž0 ΣX(DlʖČSY9 Dy;r5u$@,;\UÖ̀ ٚ ]QW),)OTr zJreP!$ ~bkd"C k uɁ\Hh[˼ɲR^!i@Lo)ȣw1H,y'¿S_tk-L_ --G &q-.tPHDO{y%q$Dz$1m5x2\7^ sX>fQۃGkdxG9d$zXM4@Bvi34RP8fdFmFge $}Ch`6N@5}?ȄMp3N `Stg*Kw $wjqq'q4&Nma31H[k_QG4k T/s"dU@rKe$z灄sdV:Et$Eh^TbQpH/Ԕ:1*7!M{8[%@F7q$^KdC;`6tv |`|! ̸~R `pEK$7~wp s0*xQe Ӏ((He?l1#%x7=FEE^BTlhQɷzzp4/S'crGSR e8v&vTU9HU_ @AHuAzt-fq| /QkUi|q*RSKd74 I8Gccj13%E[do9f~xɏ6Iq?m!@tՆQ_7yd\q58&q&b#d!xFr,0 v  =98@@b7v}q>)j Q)ҊX7KAI-{SXnԗ9dԗfR_fCPalET֝qzcuI\QQHI^q2fofVEr Q?x fgYIo曓) .  1j?PBL7ģ|g"❬Qw73Yjqq5GzIʞ yȟA)\mXeIb+"rǑyia00{ q3(=r)F(h;pWu=)z 9 (6Oɢl*?KN37ݨ<ʪ|9CdJjIqmfQu1=&+g٫Il@]:`ګ'a(|m9A|gQC#2bGps!P>Nw_U;PZꋓ6z1w6Yɯ 2aKvÔAs@kbb:jD.)#{X Q@I5+{(/҃zi.,.K3I ͆8;Id*_:k#q ^q\R:f%VYR%ER??_qw%ʚ9GACl#©gkJ!?sÔH7?*8AR u7GT'Fkas) f4˳NRvFʪrɗqF*Oe3'YeG^\B=c0c:."63n3+  \Ѷ r*>\1e i:h4TtstSp @LB+4J`K5;uBkdQ-HQEiy nF'+{Fޢ-j-?M)ksb;RyblLkW/6S:1~ 6 Q,S,۫V0Ŷ4@4 QT T,ԧ`2k*QdOR91I/ʂ)Ʈr33< +uN 7x @L:Bu Ms4,j Ǻkz|Hbռ}£(Kz/\q pD7Rx F yqD 9xj'Gus1Sm!WԋXG-(LƌcТ_q4`a2I4h2$ב( L\ 'ϾHς@hFdKt1`ڴRLAfJdR׭ZA?w|>W ps0BA@B:q-C,yt!W9YԾ||ļٳ =H]3-b̮@^%cC$'Yw57؉pNϋ}M'q57!oY17bQ -5>S4u`M\ ?|xpufl kyRѥb1eu82@R|y:R P`6gޖـfGk.,Q/.ae3d%?w=:|Q6.  >ޓ;pU@ش cLiN~״EQ,%#&L$ q1+4.a!ͮZ~8~0=PA@7>7ӌ7[O;gYa+ЬrUc@Imm^̿fUiocGc}d!vu#2Fm̿yNH 2d(s'bg>$T'ޥyPY4r71P |x>WJ' .dB*=>bƜ=?͎LWߤ̫s~}a}m ]$\ZqOQZ-N݊du^!@ |뤃V+ RV'}_|X % >k׶GN5njU8P'q_ݾp1 @o/a-,ˁpMA-*X`~ D·T?GtG~ $A ]؀B(bZDdQE*dHQHI2>jl+Dqj: L){<`t䏌Nv"JAIOּ91Ԍ`f\0vl`괸`bf2ɝr@J[y/fcȑ%O\q(3YEsPi|!rgo,v$މh@!\CJ$7߁ ,b%@!l&hMVOu~uŏ'_yկgߞ $hCGQG𡎐cj"`R ,å# HDm ` #FÁH± Ҋ TZIzrK,"J6(F(0jh"&'2p %N$*#Fbk,Uq8ʼnɌɣ& Q=B 503h^(uiST3F9r4 ".M/4k"|Em7!jUV!+`1뺃"a#n|p 7ܱQ &hFcX<>AuT(gޭM+VUbMk<{u "Ւw؉wbr:jz$S1ȉKȸ,#L ݚf blS{ A()ުިgH/p_vt3Y4C)kH8EinvHN-#z[$WCH޲7_+da ]B$q~dH Hr!] 5%$a6DHp;d.#(Wn+R~4 N2a Z)@H6X&6MQ%^|P&"Ez:D ~X`z"^MGtT)?П2AU&h.0)^'yd :)l^1e-+@T"Wb " Ԍ@t0tާdPSA 9vOMpS\$dLxFS`C mNxS'c! !CD0 @h/ d| I2f`)c?'lx)V !ˁv5L p]I9 )IT\DhJe AS 8e&4(l*A A:BADT}@SSĥ.!K_&&Dc>A-VlVUfp Q Q朾YІVe2s0*e>f䨗dLۦb*61o]4y5 4Q@ &7QAv2ʣvbʤiEx'łDd% |*@!sB2a)fDSQ&6zg%vRduy,;Nf aX#RC0NG6y&vk!P $<(+W^Åˈ&*d514 9Iz=6=^41dG$H$< mb 6jZ; ׊f S \2<#D#7sa >:t <|gPZԣ^a4惼ˮQt $<Bn;Lkv,uhmvLdN<392& *lJK:D SW#ECׅxs#&X$7GHZ߆ʳ\%5nk73SjvFֆ8o%ҩ5BZ`m~̆;}\#'9p Ae N6KNmH&jm8 Y=(vH1dﱏMaXsm"GN\][$<ꁋpk#uX%CFs `W\.@$@ .ՃuDȽŵђ6@ 0_WL\F+><@}eƀB1}}^ Ŧ/|'?u?A, pN> (Q!տxnQ'@10Z߯&P~h1)bHv'h?)H@$C Eh?@h,@8̐<԰+A,A7A c聇ѻ" Ϡ˘b< .#,k: D'窥,n$7DLDM(/DʨBQ:4ǓFU? @&AD8C&E+.BCG< s'tIT|FhFiL>OB.ilDEU8lEWCCȂZEE EK8c:tsz#r͛0-^|eF,Hhì6hƄHJʬL˼aC "3J#; M&MLMtHL>SA\MڬMZʢٴMMT<>L!ѧS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-UMS4UW}UXO0HUU^U_uCnT&Q:ՃVR-icUiVjݷ aE N>kUl%1g͍rVu]WL>xkIVp>xj5pWxMקyu}WEscWX-W>hUİt3X(3$(xhBX 6;uE-X#m uU ,5 *(% PY2)ZWkՕE (Ymm].Zx}IѴ*E{3I \ [Kۢ5E'Xx]+Xs% H} =Ʉ3X}ܔ=\K\,M]о-}F<<5-٘39^\5=7Ki]P>5^L b) n>#l'MJ$>1 Q] J-&h ɏؑK_`_݂'x_$,3 aNބ>_'; 6^8 v@ _a :  b"> &AU>Ƞ. J&maa"b"P"> )BC-t">:3Њ >5+xbD2d#&$>9< b}b &?q'RqA > H"Y2 >4v5^+ws%9(KMb5fS -^Q%V'*.fcCp,&0x`#de6ĉS93d 'U%6qXf !bAKB?|g}g gnh>\,%+J[g+8gv.[(ŒHqh. d ~>fi*y4fˑ҆"aڪbuIo *'{ :ډpg0j`(| ?gsH4~HjGrh=M1x֘f/ i"j1ټ Eti^PlǶfvdjlY,*bNHn EȕܴǃN" f$zμ~&Vws Ek.bln=@@W$"6W>4(Yv$4uno{nv/*olkȪ)#JJmxo& Sfn6Ȱf󮤵)^4FSqM9hb;pnf o)oWeHxoMjbZ>r$I7Q\#_F(M2ي%n~n#m ɷ_=%_-&wp"sDf*N?:2'34W>-혡I'2hoW$?uT'Sq`糕PG,@ fd=ˣPXVUwWm0c+{tK'ڃ=7G`V`MŤ՘wqpuu@2&1ˢ?(tFWЋgcwjr pVc ##uW*hMudyXa !8!uxxcO2pf?ԒGJ^q>Mv0yɠiu_ Үwn>zؐ{ oF@3shQ1Ρmo-T" XOyƈxO{'R6NRqmh{ޗAF|v7ʮ{`(t7 QY@/[?z~4/w`zÎ.w6?ɿ kCl'td{@}΍FOߟ1nYvgTg~(~8~b1ȯ[ 8 ||?՛|Y[_}~w~} }p%p "Lp!Æ@8!Ŋ/b̨q#ǎ? *"DJ"OLr%˖._Œ6oPGM`dRsiM<}R'S7\ rdr6*z#HnB a)E P K({eA@pc+BX9W7QSr*g;M芙i NAu"۳@DC@' #5e )K%PӁ-r05mK@CodS%- #N9F\$X, 4(r\dcM|?U @oB2 [NL w3fKؐ$ fIpq28<4oI7]ě ڴy 07ݤ1I m6Tieꦆ6%%5kiӛG7\L&|niMd.IZ .nTDdVM(NՍrDTH[zHWd+=0 $@ᤎR ԂUc-kBJoIJu \;R4t)X3Xˮ7,dE-{.dOVMH\+[ץ)PkK'<d u[jf" w(˅9U ]f b 5bZd_]/{Y849-FT. Rf8!@˛"UUs6A+8 jD 4w "[e5Oa sX!AY]+D,/0*W՞v.dM+dmg8f#匙 X_vcI|;8fAٟT^1Η/WSP۪8aX!yyFQy)RB{9܇&0i9EqKNC -w~\SR}\E*:$g{;) ;jbzN@}S_F1A{YEO {4 5Rq4+IXaߵ^BQ(RT!NDvaG$I84A<IC%•APB@5a.!F8!ƓAbeaE8iab9Zb!Fe!*a! (`%>@Z! lBԁ0@%&D[ $Vị!pa]#a V2@zb[)a`aU #CaT_!Y:zc@8* (>}MᄾuDYBYlLDqH8Au`8A~Cل!$ĞhiARӆd`*6dـcG 2R *d`E NHC;TC tc$HdN"%$E7BPY D>KEE餼|T đρH8 A\6 ā Lq$ܤU[\%\Ir L^zRj,Td8RS \KU*&J$=I1Ă)ţJW+ J!B 0!)ROC9qqAG0 YA.:́R.6q1Aϟ>.6X'OJ pTpF+VhтS!Q@Α N"L kZkٶun\sֵ{o^{p` 6|qbŋ7p!|p[Ha8V$ΣFָ"T]6JbǃtD }txByq& j [ ̬qJrG6~b8fp: t9n} <\|%C4b#n#.:`58-\*Ñ4"::Íh(@p'*!\M,pD(JċrΜ,蹄kK?8+ܓ>@B =QC/ Í. + *ӭQ]n8lB-!;;b+G!iFDӋH#?<35 b"5!4* K.H $ '` \xrSVq D块z|ݗ~ \QNYtwORKsUM0]"u# U,Fms) 6zHHRނ"/#&!cfU4gt ~!p RhUTZN XQmS"[>m9EKh\H$؛Zݯň+WՄB3֑ )~3k;x 0s ޵bѕWKRn-)q+M{ y=pUk襟{|Z$.ⶮQb}X]\kG]h|8RkDGHI:K4$N⵵!Mx$Si-rO? Wţ $hWEfG'E|eIXB1 i8q$h!h@b@o$k}X5!k@u'3ŋxFhen8ۊ%o?[ĎST.½!KēT"HG>F9AHus>O.Ý7tdǤx""B% O.=eCx$$Q.K(K'HSޣ-j OȖM,8YNsSzԈ2.!fx߹R*+Zͨ$"o+Kyxd?3;I Ӓ=.0!k~̷|d撞pwah&Pfl):iZS9թِ $n q-\>bQo߫ITT e+HP)Q 3Ҽ4\R0-fUN [XiO-AdzI)AȺy+Cl =8z H*)LL! [Pt[]^_D-8Տj1O4)M TAP[Z\P" qP$/f~`"K|͂quc rЧEWp'oROџ-N0vI\b)F̥FڑnqdWWX',rՓ"F9klE"DD Oۑw$hN!XG-04Kr&]&½F2\˪Ё bHSpByɗ=H"Ǯo<0 ]B+- ? pG~U"OmfҲ$i(|w߶{uGz^ 'dHCyy㪉#NUtC4©p^dBoix y+f4/B֞f:;R1ug+ TYYdm$;08Y-]!6DR&K W$\ #F(Wa(0Cw*Y޼ny3߰8j~pMf̓oU ߨFC̍7DR;N>=N>I|(yxj;? C`M aN)&>)v*P6 xvCn !   G&{ PK(P; P\C!| ͂`'p©.^.Dl r$M.$a殒@z@X JboV`W0OSQA0`bڈ,V%ʐ~nF`obr`% XE/ԖeT3  @yn#`jm4Z6 !NLqyHcqCD],ZbGЯ4$ lnipQvraV#?$C2b-5.PFP- 6Hq44N$Q`| ,z \@'B%I#HQ x/W [%a҂.OF@6hk4l 7`cnm 6LoJ r4XR$R..rB!R)u9B&q "/B+]ƌ'0 'R%4r$Hr4?֒4H-DF`+Q"˰4ON3,oD69Q>jRb1.9S9\ӣ)E3B 3Ѽm6iKE" 'e7.)-~)s >MKP ˂b* YsN Frq67B \v3H -͐7as97C;Cqr|% 93!n" p^TqGxHkGIFMkC0=;4-Xt4B(! z:Lӂǐ |` V{PQH ` + EQT@R"UVsT-8uz 7(UW"UYmS+1 2 2x9P&0ٚ<~z.<H ]1 Xͷ! A7By3@ מ`;`{Zv|@$:yZ/:ڣטO!Z.Pa=9٘y 1ڀbך[/`9/:| ®=:Zv:=4BZ'{t|#,;y1[/a;a1@yxw.V|O K|` <wV u 8a@;A >Y |K jwxڬh|wx'[$;y@0x$.z {$ޚ  Z zx՚ Ơe:yץ!4x/py;By%yx <=. Bt5G ‡פ]AQ!D " Nȁ/< @A%+ bWv0]{~!^W?gA\A_f7x;A$hxmݿ3!{xE/_y7ڿi;-:Zi>y^ ffa_A@dfEB 0r \BXћ@ 73bm \ H2&4dDQ@ = xǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ M9ʉ$¬PAjIҨ1غ֔Zdʪ]˶ψ QPOAI#b8J"x8XX^ @b 4h0y`F <Ō!]ͺװc˞M۸SB*U =w+ͻ>5kz0^zcCҧ?L $} b "YQyzI{i0@rGE4{^| &E QB Qv(,0xb@@mMo2@\X kme]L6 !I U wAYfA3)Y^!aew\&IgrD GLRМ ay 9i衈&袌6@Irţl4YdG钏" 1"ueAQ5!bkT'|)v,iz$Vkf-h*m|h\nҖ.lnlBT"HKvM-{_" lĦj8맳^0fw@= utC % )E2kzsT]pHAC4Wx(G8ˑydHz II@þRkG% ԧĦ"fNtmݹ=P#"E@((Pe*#&B⬮종7)!ie)^n!)҅ #  F!]  |@ \u^:!+)…"ie#!E !<o:.@ޗ觯.-!1DTsII n9g:cK x# t'H Zl?ȯco+#IЀ9=`@:.f]HJ`+6 #=LwH"H(H8"np+4 T c,;E~QqS#CbE,Q']|M W?LHd"4E.Ґ$')HHNE葒"@IAƔm)$)WVL %搄:! R&G}eKPbEL2ffMh$($d/Uә%1f[YdL:Q!u()\6fM9|D}%vyB=c&$ 9bPL pICCvz Hkhql&a8Hd Ipӭ $H?F 0up ̤ǹN4$p xCU `pB_tHK g3Ey"F p@Jt9ZORֳj%9GJZ<0yUq@Z~P%@7.^]mjVG-i]Qߊ%%p KdK[Z"8 I2J@$s(Q)M eEl{ 1@lAlh+ZZ =GFq PP’*|Jv".isZ(05"pf@EJ )$ᤡ,JR.5Q*mEu 2#WDH҃ %5B|L$X,Y[)6HrZN.  #X sKB +ŖftKrFזd @4lQDqb;)z"^eV$t}Xs垤GU5Ex:gYBgO{mVLd,kyx4}I@t X$J7P]G $zp~}W :~vzF^]}^wB1 ~G2)IBA0xG~# MxxsU#g5?  KV}0EIsPSc4hW' P( 3X# M!7vzbX=W{TXVxA ~Ѕ^|?ODsjRO(W$T0`Vu0uK"b7uP#kAg'/Ei7xhmhv g vƄ[Q)[(P'tQ~\qu Ayz[b).yf*(aiO5r8r8\w`D8X:V#Rz'|XxA rTs NNKLJGgI(R08'W8v| X#V| TfyE!adW#Hw(]S7 шqMzՉukr(D 8h6"s# ;bEE[!e(")Fքt[θMx:y1I9@2\:B*蘖jlOVPr9r{ft(r[I+u\qg? !&3 ;x)&f:5Ax*IGa|Vw/91V8q  V:W#w&ьU0`dI*Xg1$= YgpC)hٖYy\V>MvYxl[ mɚmiS 6X#r9F]Ǚٝbvaiэ@ru)YXByI9 { 1 i٠'H0т ҡ5Ҕј8a!gVzXjHDiIyDuVBi顱X#D:&ar Z*7'8!1$L:"x\!тВ"эY߆(zEI\"J^:r 1Z{֛w#[Q7#H5bw\7f:*dN\J=(ɬvY DRt/ɣR&N:iAAITp#Jƫɨ)Be Z:rW#nZ+j9c9H+ы"z +7(g*6hx*ipZ(*{YǺBP 0٬bкDNeMؚ:g`)f(ʨ~a:iNhb/Qj т &;@%۴Vu:)!#qGknڪIi )Z7Y 8%[ot')NNH*OP M< c{KA飥a[ѝR*#zJ(Y;{"o0rK۝Jv'A Q}: z۷b;ϩ+hi#Jߦ`{"@ ;v@4 6?`p*U>[#PUu%K˧K*ѣ[Ѹë$ag-XJw!Ao Wk~ih[#}Z_%k ,ۺ>ڶ89ܾQvC"qbW\!jc1j %pp1lMj?PGWu` DT˭zG$L)L{"vKL&##+.*ZCR:-\x%a¢z*lK*+Qۜ 1jQ@R绿tq&orw>3{w1aγKg$lN _9GR(5M 5M~`V>@?{м<|r#<9fIi uDsٗ[?0><HKƉt]v]z\kz6]؆]Ŋhwѵm0  (h{Gv,:V |=KL-xwuq\X]5,xs}-Q@.TM ^zɗ\؅% O=[G"X#èwָ{ &`y:2\L]rͷ\)(ٮPi!5qu͔arˬ~o> ExOLB]80q=>C A 4ƽ-MfW Qd=ॹc\Emb{swٮ@'^n$xߴyb۶.<ar#^.9UP{6䜎Q|>O̗~]uo'mC{<ml[MA pxfnq撜1LG =6}\єշ]؜^BYY糞^7 s' `jOk+)vOnc~,sQm%ï[|)iiH[ɾ^\M? ~ ^J$z=*]n 3}ͪH>y4d}:1??uYQMt$At2~0tM)M OԱN?(;Ѵ""1/]>|`dNO+{>x?ʊDgX= s`ǎsN/{{ ؟b=ש,nF?m-Kp>y..vEnNU҃N.@`W 4 Pa :tP}Hb l-]ҏCN=}TPEES  ,NT5~J,P=GG`@=FÀM66Ȋު NzUkUI&AP09_:>`fB8de.T77ncXWcy6-ɵ `ddMNB I+,I u"iݽ><%)?@䇏~$~)8 |0* 6z@$7.h&R(9jRhh?0"&0A)z)$xD['*'h shDi6|TDh,(G #J#)q #bR*SyEKބ3N9|s(S0ijOHzNlHAɇhJ ' T$HrOѠzhS ҫ$1!'T,4DlQLm*UX];;aPaԃTA QGw=l ŊMۨ:(Q"D7]u&c%? ` p )aLٝ(q%p#%+p$p'%֕+ M |XȝZ8VqbY+QFN+[(UԶxJshҡz󡉿aliީ1ŨW1E;mFJ>ئu ȇnꭞ8.a%YW<FqW~rQԸ{X93ꐢ&0K 46%Ybԯq2>gR$D&jIp$5搩L'bN' \R*:D ;_Hq¨ >Dx%I`a,)`EXx5Ї?D;!n޺rp1N 9jf{B.gHn۬JsaS46DxR@S>19b萍qNaW"Ihⅈ{a5Ȃy lJ뀸INvr#PRK  )ׯX*.<@O('6< mIY!#3dCC 2sY`@'Q^B; 蚍B$ :"5 ;AY B!p' b;jjNzOO6ԡ5 $ I$YQk  P2'gC)c>DYj@^"R hwI.v\4eJD=%4w)o&uiw$ Z-w $#IdcS0H\ )*Ѓqk )+J):@ ;!Xƪ<>O8Fz z}c ?5 ?N4J1w9КĦ_Fz&I6E lH Ń D>  D2j5j2)+mDXWzPR(DVD Pד/%I*޹ mA ܸQ"79HOEa@!g15x4[X! qCL|3u)bw&(%% eMpQE;s>6Mjɠhr=.HM`@g4AAp H0M۔oȽ>/>f?]&)NN!Ys7F{ܓ dMԜK3NDKnJjv +)FP}MY/Bl³"CP@0^ eTH.j!^5kq75jb[-c?$fvAZg4 `me{>yHo?ou\p 0 b] B0 p@QfXJVi1AP-3yȄ#g9B?I#sm Dk.H;UzD.L7,CHcCND=SzC&QNإ#APY$){r7^(ПHʛCo* PQ]ő^珋(qFzw / wڠ'{Zf#Tv|_Pr{E@DJhhCz IpB|MsZ*)r3vF ;wBC.W)uZseػ{2;;4( 95:Кī؈BAj a:i??k{l eaQA5;kAEOSlN/}]e98QX98ǿ3Xϣk-*h+|>-j$ ?ޫK $N J6r@!s=Mj|7`ȜhPhՃ@.5 YHD+F TPܤfB\YUW s0D\ Xi0?``eaMIԸn$"0k&XOX:IMS ׆ԌLW8Y<)_g,zMΕ Э71@nTN.mSYV Ie/PG%%^\ \4O=?ӥbT1}1xq1͓:l C54B[̬ϭOA<M߶S mQZh%;A(M\le DB[ScטJ0)c*.4W-ٹbQŰ |I1%1#U_57y#taeiSoRaxW`@ٝ0X`,OۀmZ ˂KLZuR_c`mdFA>P>`B}U.J`VYReCS܍[Lvԏ#SX$+*boU-+Ceu 1VL#;HGኣꟾꬾꭂ06${鉓j5)1y^lVv>1xcpqY9B Q$H1%PLuCF߼h$ڵc!@PŧfVhPitb勁^)*"K9?i6Omevo(p&JX xo5w -sP # pM:@\ Tݼn懖X#m~k򝕭do@G-8 p3qX]Nq5pn5wzl嘩1}bW-x,ªj9I:EZŨ#-9l9c9JJr9:$s.RWOsK9ںs1Wb-:s.r`2t._ pf/?HP)u9nm<d 7ɼԫv^iX`qv^W9v_^w_G,$j0{nu$(5m^ ]H4ӾQh)2p03M-n}bh6ђu+.-Jdyh?G,4SÅzI\Wz>0 AC&ڈ@vP">sꦟ|E5J nt1{WO{{GZsQ쩸"-GCv8AAT]~Ѹ#VaA 9$Ey$I*AP1"QJ9F62d!YjeD0.$#QPr&h9Pui&q9'uy+f'Bz(yy4zy(E-j)za)D(*(X u*. @BTGEH_CZ+ ;,źm<,\k2Tǭ mcPm(r;.{yb;aW;. LMJ/^,F8+/|0[Q&\| 0C|1a_1[3@)`Q 2-g9G1]c|393RL eAPyC;4QK=5UC3,IzAkkuDR,5I1Gc2$@d=7u}7b}ߝ}8+83"/EBυ8{9衋nWsu~jң>;~ť{L/?PC<+< '`@ΐ `@3?>>*Rib쯟:~>??(< 2| #( R 3 r C(&!(!F<"%2N|"()RV"-r^"(1f<#Ө5n|#(9ұv#=~# )A<$"E2|$$#)IR$&3Mr$(C)Q<%*SU|%,c)YҲ%.s]򲗾%0)a<&2e2|&4)iRּ&6mr&8)q<':өu|'<)yҳ'>}'@*Ё=(BЅ2}(D#*щR(F3эr(HC*>z&5)GJzR<.#. Sa#1jҝ򔍨N1@?4C(CN pzl$8jÀjO*XsT#ciY7x t:JֹRFSnj+CIzRR#X2#*zAFHeqzM!Bh IgqS)%Lhg:FLa^Ccaa, d@;Y(j6rg.,0!>p/dD2%+ d!X/$ c4gKgӹTA!-o]h"ZRm4F2h.â5@kpӇUA -iPz#]imֹVh˔~)ʐiB2emx⬙]k_v fLUm Zmcd7Dd0^ x oI{ 53rpLu6ƥ)a#in ,Z]ȼ31@δ&Qw{ 5A2;SDC3EA[F^r8UyYnc w;^wߜq9c<8ؕi ciu_c@yy+튵{Uoi@{Qg^;%t/KZ9;ވgjyKF K+JhN>>+YUϭ"|s` 9/`|qѮH D(y`^wC `ӟF#r?.ko)N@apAALLAV[5{fΔ[ L YJjDTɘ'ءIwuʔTDH<ҽ!F!`@f( ˭@TĞTbAD^@LYGXIZF|a6@0A<ߍj[DʔFDnAt D]\N.b%! D%DTFaD"Nݠ+L}[Z9"D'a"a Թ]A0"B+NAL1Lq@D$R"6Flc.)BDz͔ #TTX'p'L!F,c=V`FȢLH""1ALAD:b4B5bD#AL#c<#N!b^c6*BEaM`'B#/A#E*#>f7@#IBΔLMc6!%D rMޝGi)/XR?rFέ$UKdLn]eVV]NND^q`0TSe@L$[*[BD\2d 2ZbU*D]\WW X~(!`hea&%N-%`e.]^eOfU+@!f(!o!ajdA|dZ F&A0"evDk[ffcXuB%Dd`dppT`j%Ny@ 'z'z Yll!YPw$b'STBiVL]^gA\y@tDg^@FD(urD[^j^xne#J+>^@^3v`fj&Y'r݅scVz(N(H̛ Dy)%YLuFi]L`jļ Yb_ ѣA8@~>o꤀Ĕ9 )^R_jF̩tԭ!~&H@u֠)\i$q:$.dLF~aܕ_)FTF*Al)Huɑ\b]^*IԦe%*j`dg>MŪf6jNk"*z$_`뵅Z("p\r(I))\ +Le@+D 񪷂O>1֧kF,,+rAL!(!`R+HjTZh5'J^FleF,lFxjBlGxɘ,lr, ifmժ.)uhReNپ*mg.,H -)h=*jVjޑq&cTb[PGA GaA-F`.jUuz!eFޮ(zFpBadQFLV)*N}" ZGvFHo:T-[\J-rNjNnF) poM/B6A jD$"p G(B%0{qA'c.opepU} !"d!B0 ^v:0S0&rA @!d/@kFgkNEsBXĎAXKX$ocOEAĺ{ (@FCăD\{{+<;+CFJ5/E4Ad;,@Ayi7C UqG{ED`~K 7B`=|R=gE˄D߰{P@|U <8Z@;Oû9hZR˄Wzƃz/{<@p5  t`aE$f4A$1AȐ,0aŏ+3T8IH-H gO?:hQG&UiSOF:jUWfպkW_;lٟ2*HrR(S3Mu4 ``A(͘g~bxA[*%r4` z8FT)χz`bh%e6cѥM?ěQ/_=aϦ]ۃ%/wҏuh7D*!+|Lq@S=D̘pλӈ;4;:0P 9A QI,QLQš(ŊȨtr5WHsQ$`‹2(( @8N :J$ zQ4b q`x`GZDg|˃)GvQΠ4HHbH8 :+ +K9R  ڃ+)H2 JJ5LOR$UAXm/j" W,cMVemgVڲpB['4O UbXl9H 7AxRsʨہ5O0`>˲o ( L=Z^j܊Q(te'w m(_.-SK), μҎ}(2"TV܇^8fu-")a%"vگ[.N[m|M2UT,z5zjuf_H欁ݪmX'GC3x{pW֐r}jȊb}#{4Q L-5&݉ȃ}Hs=[*iv7ӵ>k ׎^驯^d˨!3#{e=Q"[{po\".G) ^_g'>/q?A_Gg04 Ogt )Af-?{H%vALIM=aAl"*(lA>$ g2OGZ% ^m+b$VHب4kYvЮ{N DuL)Ef)K$ \Mi7(|l5*dHK/[V- ?qBّo jCtLbNOz3 ,~`Ϋ؀d*(P=y8"n[2'`I75b E8nۑ{TGn4T1[:uJGAUwϝun Uѷzxoh@#Ӳ;B `U=Cs~rB,;Dl-,^=UpmU/2TwJ' O'5x=>(CjXCWdP5>[`~~Ho'گB  zfJ **k%rn DozB^G(,$jPVBm@B'&+`C6RN2h*0}5(M"WeA:$'j!0#$l`nI*p :oţN 5"  oa$b0pX&tk*t0(p'(0[r $؞p6XV  9Z"Wb-80LK4jpc՞vP Cp%pܯxFQ#j ¼pbq1+ m%'34}l42-0S39(SB:74QT55yS6m6m(23s3[2 70;F S@$}3zHTvd5O T!J4Ss 4N>-?@?]!C{B%9?D3@R2]Ea4FetFit+x8dFyG}G4H_q4t4ItII @>p-I4KtKK~#XK4MtMٴMI NtNNN4OtOOO5PuP P P5QuQQQ!5R%uR)R-R15S5uS9S=SA5TEuTITMTQ5UUuUYU]Ua5VeuViVmVq5WuuWyW}W5XuXXX5YuYYY5ZuZZZp [[5\ #N\5]u]%*T tzu^Ou_]_<ei_[(‰jBNa!6bժfҕD,ga ^$cA6dϊc̊bacVd]ea6(!5P6c {X&6f6h*56Erv(T6xi ~vhjc1LVlKkkKЎbilcvmٶm*bVf(m띎dn v~ q( V!ж' .(p'F W8wGwa$bjyeromItD**5\uavu;R,*@`bw6buA,ct I29"JQnu -x,A_t|jV#h8B}5wub4Wf" |`yC#$ns 7${v(P75XGa@"i"/um+:AxB!b'Bd~b.!(.$[V"h*X(P6xWco6`H,$`{2+ x@jX)^.icH+{B "c(QpE?4!=a55hjTi`o*Y= k*L77wB x/Tc! @$b;@$bAPr68ψ?(6υqTi-$ʤӶ8D+ +vyEMԤNtQpZ`V'eP UM nIUxQGg(rRݘwB(1b"g,sb}Rb%64Re]de((J i\QB"EzA&Tw*LzbT+>Ȗ֐s4v+D#,'Fwә:IuLȚcȩs"{Sƴ,t6l =rgS( C*:Ä. *#QpwZ+$>2:̰z:%{Rn,ڥA²Qz~a*8Hثo:,;${{ R'{i;QC$aޕ*6{M]Je4ZQbEl$ cۭkOC/x."c +`!M[`[BR븺# NW# X1y+{*Yo8L *BݞOÆʿM ?}BDITZ>/4Dͳs]X>U?FQesQZ~eX HpU?m/XSM? 3bLo_\_ wqՆY a_?ߡK]>`?• <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7ܹtڽ7޽| 8 >8Ō;~ 9ɔ+[9͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;=ԫ[=ܻ{>˛?>ۻ?ۿ?`H`` .`>aNHa^ana~b"Hb&b*b.c2Hc6ވc:c>dBIdFdJ.dN> eRNIeV^eZne^~ fbIfffjfn grIgvމgzg~ hJhh.h> iNJi^ini~ jJjjj kJkފkk lKll.l> mNKm^mnm~ nKn枋nn oKoދoo pLpp /p? qOLq_qoq r"Lr&r*r. s2Ls6ߌs:s> tBMtFtJ/tN? uROMuV_uZou^ vbMvfvjvn wrMwvߍwzw~ xNxx/x?yONy_yoyz袏Nz馟zꪯz뮿{N{ߎ{{|O||/|?}OO}_}o}~O~I8@MBA @0GS ~0?P l8A ~ DTAh,"R(H7O~ !0 ,H$  @`‡,ډ@(EQ GTo'LPă0@4 ]Q <<H1 ib~PHi]D0!_ % J/<`B1%M)!o!s@"[K+Rt$@u̥1JeBRcJI_GT즒 đolEoHbEp!j$։ St9J,h2)ȂdS! 8 $ -=bE1Ft6"@?,䗞IeDR Rzt.#[o\&M"!nAOu%JG 2e{dUGRq&$0X̫C6 +)>ԡ h:ָbBPɖNqrk8υz Rt($ᔊlGjvg? Њv-iOԪvmk_ vmovo w-q/!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++333;;;DDDLLLTTT[[[dddkkksss{{{29$6!=)A-M;F3P=UC[ITBeTjZn^`Otezlxi>6B:E>KDKDPISL[TXRd]jdkermytvq}x}׃u؉|LN!U*[3^5P$b;hBnJkFqNzX`aiizqڍݕܕߜࠖ⦜䭤洬尧鼴꿸֕ǝȟɡ̦ΩѮӲټָڿüīɮ̦ƱͳϷѻôɼôW H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ L}ҜWLPkC'\4X37$.\˙:5 r:pBsd$Rr!9R;5ˑFa$kT0D,|["᠄5njMJ[llu"4H*HHrĿ>Z_ԷITF2P D %0 rdC 8B5\,2gG`b0L$u1G &lvY(ņO1FKx )i"T8jbW, b2Y7N~ȜM'=C9]BT(6<<=S>bR!D(PEz0zNLRL3TLk?gIgytUJGO9ڣJ%E3Q }!lt)7%]O)r[+GZX "\eܹ"l&e#eUaKL3хUdl=p~*oʉj$m6@ RR@LHSTB8}H7S]uniJꦧR$-O$!)8v+Y!\V8)cYy,k=bL`}akh@1!@nUASV aw"ޕ[kBss,nK`5xVi#`F%uWS*,EoS^ 1ygؠ)I+&Mu?̃ZƽH+渡)-#)TvwŇAނhXLQt æy2RKdQ,\qflyE`HKR3(.[ X.A,;R(%$XTRtOYg$Sup=[! qWP-jz"U(}R$̺' NKWbdM)T#,@kN%*$POtPĦbD»{ޤaMt]/`aaMx=öCfHbӝP,Ud96R,!6HWm h[ݠO#ջ&4aMfxg^m(2 'PU2qe)Q./HKۤGJ ɛlbsr]2:FGD T3DҥCٕI gn {R lytåj?/|'A_PcR w&)jP f빵DT)x=ܴ_p}HF&m t?|\6Y}j*$("y^%X_QWD+#Q/r_oґGꟑ54&6fTk |  o}a~ Q }@6Q }P'?7Xy o'@yh@ xttA}bbp}J&|@"ne0gL 1 @ PqLJbwtaူ1zqK1pVkg9%G(-([u mH }qwg"`Zv2(Em'<Q*R#! ~r:CXt$8{SR =%8zKAvv*ybK+R% [.^`~ (S ᅞ1~!^Oq!Hi`QN=PXXX l$}0c[È/cYsq'3'rb}q @9w{]5h`Mtqss(}-Yw!N *p# HJhHp*N( ?|풊'a!" (=9(y{px4[f#58؄b2 2#W1}lh9v'&} 5Qq pi (t vs ,+3T!Rxx6(D QV)H1}Q:H'LRhJG$XĹ5FR02J)#)q@)!Fڨ_2`Um&ׄZZgápI CsW^{0Rp@ɓڙ4#QGyQ pi!4)'&mGIF4lhy}p'Uj **s;u-Q<$^Z)P5ɣ  T !٣?J'@bM|+*b2JhqىIkY ]|J9!%Q` Z6Sp0sө,z͙#`HXQa*)&\f#JuXa4ZK*3w+b5KG)6 TҠwRHaaaF&zp'Z.$(~XvNui' ֊(y{&!jQ M:$]& +9nR!$ ľX{ƅ̴5HXIbC}2j:ll-uO;j+Lѯ&tnbA"SIH+;e3Ѓ}̽R+%vsz awk>2ֻ̫-$I0יp80.,L|Q|}c$q,#q> ZmYI@԰ג֝ۂ}c}ĸ+Mժ920֟q,2m(cswغf)U0&LA@͓ܲbkF3- 5 ތ|c(ި q  se2M`,&|r։K+tFm;1_ +ĺ@x!)A1EM (3nY,]HSts]!<iy}0'<ൊt'JA#5U.JT:UYY( ?Rt޻ oXbMxuR*{ ZmN&ظ*`CYZ(V<Q<9+S9~2v"q/gz}ޱ\vo0m5^m> Ǻ>?!cv9.pgYH\KrZĭ0- j^>d 19B\`u"(t+BB5t F}p^*O3ZIy-%kN$*4" N' sߣMJ3HM&&J ×i.uU_ນo,QmްjbR-N0E9;n"7=na9DX} νQjzOQ؄Y4%HmG 7JPe@ XP:צmj0"&$PɌTX)ҷƥb/8c78bI:^ar.#u!JWZ(F+ܣ@㊞ŨNJla:w *PK ՝(gh݊xTt~m'I ^.$УUh<4s.k1*ЎW89AWw2\W {$^f ذ*B(/9jb,$2^u)=vgvg׹eۚ#M1Za>N{4mʼRNhdE)֌&3 bN? 煢zg:ZVA&A*xo,QD {Hэ{Ei3F$EP;܇$cҜ8`!LSH:(/'3WU0 ,|Q,'5%b8D"шqCXg1BSfpiI, $#ȗ2N!IF#cD=&P-r^^G((HUktL7?č>{V%D "l@jcl l&·Ū0qN# yJTVD$nBP^oLf6ә )Rtq%$*I$ ͈!y6fk?&s&U8F%]nv]ꉶlm*6!$@Ւ_$Gj V$Q}C*OEdBFJ7.R B[$=Nºd=awR(%Oxziwun-Va|qmw]^SRo-Lf94U0EFLX"SS]*WWr^bL"gƷiuۦ@8!%̔:3} ](&ѻ RĜC71j^Si@j29.IuHxuZ&x_%k ̅ضT'+cG[+b?ݕԊ΢ؚd%*p?hwըKYzI̎;Yv= sG-,B3"y؄ ºy_ZQݐc[SXD1C8aa  8+B#F}L.6#!0 + rnA}'xKiVDKv|% >řiz>oո# LjqHw$k2>dnj"!?"ykaD POl($(W2 K ^~W!4fSd wQ+]RŰ_W"o95 H77y5୅?PI"![@*jY9(Њ]k@`14la; AH@TKC~):3ˈHaZ?dh٫ T$6\]$T Ut_,c;ƅ%'q"E0#=DKqć࿁.K!@DPAT#E[+r<T<-? I!GhƁ92;~C ܫ`d{4!HH@<*@?$1(D[Y=wW2$LDŽۊ{:iJC lsśɜT:rùư@_3g-T@;UQ=`Ɂ J+m܉ó0#=$A%yJ; ʌك%FQ%Erj b+ߙ#1c$8ǁ㋴hʅHUׄ.3$I,*:dɐɂ9BĹ.#l>xJ$DPF{2URȔ4BBB0˄PXGhSJFuG+r${ Աܯ>}jHPM# uGيFiSlXՋ)xKDl=lvUN<=/F*8xÌAT>M4HےR8TJRU_cKȸ8P!]-OHyW<0 ]B(!;'|9 IժhM $c|${<ՅPxgM؂ouCY뫽VFBRKK8T~1# MؐsV}1NNYk6|; nE~ױ%۲m Iă0|5#A ȬkҹY8w:Ǫ]3^CCQ9RK"PϹ(W8Rָ܇&EXJݍ)U]ܘA0]^U{](jň{R8'Z&= mQܜ>4^ۤ=J2W]3R ;\7m] DɌlU$8SMk WE۹]|4XԣCzʘнHfMť5*B8\n4ڄ?Sݑ t PMTDtV ɌK"u*-|yJ5)[@[klL- FM`E٣C@o9QX, {Ua\`K_h7ɕȌUؽ ߍ8MOR%$=& Ld ŸFTI`!eA># ޕ8%'DZ&u۹ G=0a F ҭuuB. j+̈́ s]gmcۻV(qKݶU51 ^̋yuff6k݁壧@ʏp Ҥܟx;N'AV劶;߂hKTU8Qу 'HM٣uU>`%h(p%[`D)HX`! ԝCZiڇL)w[ݧPd(U= F݊p8_`_P]1`9آݑ[sҮۊn"\qd\W<󿏞SVWV VF71/ĻR(Pmh),0&܈F`l/I;cPfdiߵ p݉|^&C p3/ᚤcD{l * V}\fྈ\iJg^??fZx !W/)r+;-%(h[kptURHO[0-SmۍN*MEȄYnzo7Wpc6\Q(/E>+×5"8cWsc~YAr*Yw%-n1P`Գ`_А/w3 tX/Nf5y!=hn fمfQy4R.njp}q8 N뢝vʭf/G鲕Ct [^tennhZ1D\-8HR#p<}?lطL&gOBm,Т$qj0xyH^:f^ٰv7d18yUuWCZ|?J dVw*aisk..yAh\Lr@&%,!yψK0~6YPېME6k4MVVT~1 Ѡ' TkOٱS< &ǽόcoh{iu׏nBpH>gƭZЁyEJLa}:iӎ%@jX0禍v@l> `1dVY q?,H .H`!Ĉ x FNAFIr͸%Sx.|04G)! 4eTmnS!:!1 Q-!I|̥V4I!Qs9jAAcH6mǵIK$1GQ\|- 4WYr5AQVS+4fK⑔}<ww+ADž{ADzTTp~Gp _<:#ʈ$Ű'.*H)je+I&򲗾%0)k[gcND9ĿR&j^pM0"NGЬ\ \dl"IHHA Qh;G˜quM"'"ɂ1.-=bFaؓVȚE +9ʎ_"ʅHr'ABd$631vh.#5ttxjSH3Na 0ԥ2,'MR]jfz Ze,ZĄ[ɻ$Pg5"St9Ig#(D*¿h.D }`\HH6 tҨq,(JQ[ObR#rh)=6 ya#Rp.!BJS(sXȨ&e2LHcTdpw#u*vrI#nDڦl.w)K#,=Vz SIK"seG{9RWU#A$F(B% Ez*D I=#@pz 7"4Bl v$jZ6f|%BƜ8W!=-IYx<]E½HWQޑ<1큝 @5n {fzM,ɻLEȅe΅ɲG=ٝz0xG\?6]Bg҇ t? IV̢.-Bi*J䚛ml}j8 x@gTD.X 'i4D [zNb߀b7 iAdkI)-a~ˬ2kDZ52ZX Z߬3L58 0Y!h HB \?@2M uЙm#[B $AJe[PAZB@𩜏є}MI[,TyF ɄʬE DDXIz=M,4]  DaTU^!JB T]i(a(^AZdT\$)OTLrIL;P-T!pKF 5UWq@y`-A%_\J FM\a% 2aW"YbAء&De0#1cpD@Aq LA`PRMDfl x MJBA D7Ē^WY yaDX*(":'[%ijbE f`4cM1 8Z"B PGB$`*ՠux?"6J$Kb$iq@@fD]ߝ^L$R6:R@c!U#ڄ,#Dm$IPcgH߮,fLD@OB dN-Abe UDRg[p"D%iYMRE)\t MH:*T) Wh1ES66/G˹$gvg^%H`LTE8u5[ IBRbJ[Z-fT4)%Das#].NVUU*D-flBo6sMD0k.I@aD#SԣD$Fg㰒y~ `EjFha `>Mn8Q-cS'qoX(hgN(VSBV 4:fbbfc4?|e\]@jȆڬѧkꁈ%@T *LhgAuNm!Mg%[f] o"}A-HȥUa(ggۖIHBEL 6igPb`&q,@ e5vI}F pDZ(VVF 6$Am 8-@L$% `b.@V$ f @pr%{О)LGXDUZgȜkh*E-]f&,*(iRAv[̌*%~te+h5` ij$$$ArM$Af5>1@BkS$!fD)$$!#H(L%(%l,-! @0DъAt,hHH8 ALծ%A<4Hm6%PARl@L+D$AREdDRN@AANAlI<@mPAH<38(4,*rLA> BRAF&N(/,V`nmrLNk:Ún%HΪ/i/07Ќ=I?$L0b0?` v0 0 wpABK Чx00Y)OpG|1\,7?1Gqhv(JQb1OI率`o10wڄ1gbh-11,D 1!!r0R>&"?2$ F%_2&gr DM)&(/(D(*2+ʽ r+2-vղ.2/2MTfO213(VG1/337dǬ]3W5D5o37w nyz9r(3;; #8'4c =c2D&g=?mD !4BG/OD]B?4DGt }4*Dgt,kH4ICH&U4Kc,I4DiK״Mߴՠe1NtLQ5R7J5'5T+pUpV G5VguM#LLi5XlQ@tBqXZ{+%\#*^ M\^;s.R^`מrUAB`/6c2UqcOMAQfov&OD$]5g6w]4=:jv_l;L֤`O϶nv3apͽj7r'7{dO+7tS*BF7vg{vDTbjxO ׹@򉷸3NMP|ߨG@K  $<{8;څ7ƻͯM9?swDf:w3ImdxG8EeFuNDjy#ӹnŌC7zU'D9[8ّP7:?yҸFWzEezk:{wz7elBиg3ĵwϺ.zwx˪ ߧ8ٱ_KM/xXRcN7Na7$<~7{P;w)_[8bNǻ;IwL;NB0:|;#<7{O*?gr }! ړ#q}n~} >>iT ~71~ٳ>GA3MP[h|  g?wq}"} xc(B = ?@8`A&TaC!F8bE1fԸcGA9@E"PTdJ+K䒦K11qd8?%hQG&UiSOF:jUWfպkW_C9fXdcyL"oK3Owջo_a |PD=VWF<.[~zv0Է#Δ;m7z_{fϾ[@ MD8܏<}6vSw mKb1sA ?r&O+ Hb Р` ǯXJ!P}ْ 5*P%mA H0 !&P*/$IPb,i낤X jpm"o:-x sB0 a  B9 C Ӵ!Pټ/0 p`Jb 9  A-b0!1%O.) m 9'1UqE `2)6 --BY1qA` ``'j!pt1/x1|1q dq fq)q!Ҧ/01+Q @q iڔ pG 1!r!@ J!!  ,R"`~ !# b  %`XR ^"N'C 4#@ `@)q`>2X2 b)2',b T2*β@/"q/@B bT2$ؒ!1EJ" 2} 31& $&'" '3` :" Bh#@%Q!3Nn6//1" S*+ P .!8(W`3D37>,%b=Q5/S3!֓3s >sA8>b @ S `? <sDIԝJA#R2)rz$6q?935rF:#Cmr!VA^3;F$-bNF!@ .٬ $tZ!dS3BGHs Fqt!8t=!4HVmM"3E"`H3 I! M"M9G Is 61B 7atJKTM5 S @2W)dVPM.I V8U%H .ARaT!`V9B`$P @NS3K@u?I+ [QSb&%A]o-P"mV F!چU!Zٸ Zu \XZTOU"#@!HdM6MdY6eEB+*@]WA]kռ4 '8ck g `1B96!h !}kBBu|خ7B Hػ Z+V^q ;! ^~h!Nw "3R!ˁ+ >C"f^E $QH 4"Ct?{sS3A jx2u[ E! AӘb]W'8! 1Y3}!ub1?4HrYz[.HH**ĉ+ZF}.NTqHFrrE'$i22t3hP$']d x68DG5$p2G!x'^ K!!z쓕ʐ7/9@E!亱G!%O5pE3䟋N3?'^>:լ[ٴkO-hC |ċ? iN%EiniъAq`]mO'xZ_tYT뭶zyYgA,֫:EIIJgjDZ*O9dV" H,p@ l&*U+$ p@zhJ;Yh"c*O+q$p,$`E$0\B H@ ,"0T!4xj YEp*(>^Qo7!Ivq/\%*8Q@ `F @`?@ch(IcEBJdeHCP(HX0~$)FK"c8 N>crY: p !v9X ȜA*`%+Sb*`B^Ɂ L @Te4Ȁ  l@ (;K@$l/"WQKhi=,XG A qpѡ^, f pq1q(rsq#_L f!Lpfr'Ѐ9Ʊyo}Z{Ǚj:>iVdzR\ [{`&q vdJ}(|E>Ȫ\Jow}H5jRq  d Gj*j,ʂ 9Ov[3`\p,.*Aa4mSIÄ9S*R0c9Ru*q8=65a*n <6mz6ȅ_h bɧpي1<13A[z?޲yxwxAqe@e.wJPSCPqFTPIxTJI81Uv D9{;6K+{XDYS+z FH(V@ BziVCzAf =Ebb!a9:Qp)*ˡҁP`aK;, bX*qA ˣ"kRSS ˽lpFNHn!km!3>!pDHT 4{Ιlc^L^ZS#UAl-ܴrܼ^]g;~]PI?}`%[ !"ZSφv!Bi0W~ |`?D|ZNEV}XO/^nih!Q|[Z]2q'Nz~qL!>A'gS./te{L@CGtG;\a>o"fk==x/w~uorkc\rZX@zуy'rި{?!dB&}F3cHߊ!Nz1e$XA .dCP"8HP E\"$Ab(%JBXSE PRH@2'B=ISI( ޼H%HetJԫrOɐJ<³&1H۷/]VU&[!jEqMry ,5Ģg*k(1iTfpC V,;h!Bǭ~x!qɑGfXˮ^UDQǻ $p0%(`={D#$!0j1J@ BRb*O!BC!$#$ $" i(ڢ.>BJ(ZZ, bТ¢r,: XH*X.TNɨTsB|Ԅ?Jh@CxːTlF.uUخk2_Q 3-ZkS8SU<:ƒv>Eeʥ'c5S ?ZɃ*`ո3|o-(^3WvW~.Xņ%XŎt bga+[UL4 O \ĝA2O#&xyH($ CѕB{) T03جc &R^ IEV!1 T C\JĐEi8Av5(!B ds q R#!?KD($D HYX@Hf(Dd UDiA0c98,{̒x$lVb:5DN5N)R|TuFAb9" rÆQnzK2 4S 3!~WIxg K¼8o  ( Ee(r>q&4 Mh/1ch`MP6 Ib֩ \@APQ*DA-!J:K!T/IH `zs$һ Y!EP-B32.j@5%V* BL!ؓNj!NeB"p XИ^ѓNF#ɖ9,J@S&!aRc2~T"9"ѧ-a$XD)0q6ͤE@k৹iCU<,j*Aځ d/9Uq #H+6|66"mH@R,I8De&'j Td*cM` T As_M ׁ7Zak0A\Q\h==2Ц&,paPeS+ڐYd}J5,@.6/9!8_["T)jZ݅HRHI67 D!8ifMX7gTykB⪐@".H?qH3t%בY)U)QHI x4]jENG’@f9Mlrm GrՆoi} [ .| ) w^H+܁8c jLIwE?~x"gG{Ti7 Ӎ HFyB p$0Bi8 L>' !1('p* f.T!SHr^ 0m=i,t (\)$;]u$10(ͬ }^=*?1%@4rUt!rt4Y4 IE[ Q1L-LW)P!FȡB3{uQJUll̹ HȢ8Ȯ"NSdoKhM]+'?pm?=j⹝&E>xW>C<_ _U!R!~>@*;q ("C# > () Z1:@2~л跼R)cu+2*BXK3L:#?3<JK #;*A*lCCR <跁4KH`p$٢-KfDV"*N3L5Aƭ3JüZd-T]4$dD,?4DYC5kd!٬lѤڋ o4RHP r4@LG{w$(.عP@[t~TLkBxBH*9{ x:lƒt|5 P \??JXKCR8̵PЍd$#hI#4:pΈHk# <2X5#*I!$ :UG;]<=">e a T0AEBMҿSA:ɡ7 QPRJE@[ z=ӵTL$@T؃> Tʰ 8c'0pBG\{K0΁PHP@M S O(,O WsτVŘֆV '0Ĩ&iu=WN+t-pOd=VvL _%}T;͑]!(*]lͯ𿬔=hQRQS:Eͼ&[]"#$-(-ʠ>] -,%4҆0> =8YG=[BX)(@‹->*`RE62#(ۈ[*p_kdE1UxE==_ہZ ۅP={Rz 0eHL޼A&>yLnDqD@oJqa[Q^a IKG]3aXU*̲I܅`y_id_F3#:b-sC[_N?` D"c JoCc(9Œޅp$Nd3>&b0K>%d"KdNdIN.exS }DWTNXe6aX℀ e+ PrdvGdvPԝAKfVPi<df$hf:ҨQ*>i.>}ffMfNUxSw{E}(#xUrX腘jv~.hVgd&ʹ r4p fU?LFd~cSnAYehexIX:NN e+*g$V?@!Z>jI;уd(H_Ճ$XZ*8kQkWۃ$p#\eZ "8k l`V lh%\ŕ֩nV6maÖ nn5 0my٦pmfm8fvSd.nVa=,^AjNG˞.ҎnRn1d^*oN^Ln(!.P&Hm[6mG׆W6Fp?[Pp   NsqmqbI>qWqFmqqqq@n_Ǘ"r!r"/r#?r$OpTr``(r*r+r,r-:H/s3?s4Os5_s6oer7n(ss;sro7sّp??tDOtE_tFoRs 󣵈'wtLtMtNtO0N5/tTOuU_uVox$k^ugvhvivu k-RΤvovpwq5Q%sl&wwwxwywvsosB;Gyww3>40xoxx'r^K@X^sƒQRxxyoi[*n^)w3gyyyyyyyyyzz/z?zOz_zozzzzzzzzzz{{/{?{O{_{o{{{{{{{{{{||/|?|O|_|o||ȏ|ɟ|ʯ|˿|||||}}/}?}O}_}o}}؏}ٟ}گ}ۿ}}}}}~~/~?~O~_~o~~~~~3~~~~em%/1Qx@yT~(Pկ0` AZp!ÆP(Ê %Fcq#ǎ9#ɒ&OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNBzO% u)*تUT>8y)dڨ!G,GJvͫw/߾~,x0†#NxS=UI*+@Lފ=[e+->.Hx5֮_Î-{6ڶoέ{OzJ ~[Np1=DyX" 2ؠ٥7pIV$GBL!b%bG[1~0E1փ;أ?CGG&E1UHX$ fG\GE{U.J6&I3PcS74Ed{,Yw♧{9p'cM>YhE DgUq)(&SlH]'ڪVI|yUArTiH`:2VAp+۬R[b_ wպQ(GDҥeUu:ڲ5I ׸~\rK[$Z)Z of^zT1ݿ \' T;P3]'OvsRwow#\G#RtP/7YAԀV oV L!) NkBM !L ! @HKPYbc@!kwv܋3޸㏣ 70ͽ S({!qlQHLhg/)>I>;J+h0q %GJ)iA>CSmHXs$ @ @=@ Gpo, +MX%I$;*v=o0@(nuLDJH,o&_>YF8H :#{xfV/J\"( {xAAaJPIQx|;I`sb.8XD  J2$ bM"tC[ BPB?Q+I#G`g$bK0`ϨĈUcUkb1 h[2N]f(Q1 3əRH@'JGHoC# 'XIx K殕k[,b&卭Ms =R-AjAif%`r50S!aLtiE ECG *Pԡ(G\yJUDp7l@r QdMDp)Kb6rD+"r(ё-Z{j{33'5X#53DݨDV#m}ѻ5dW$%& @)X:Vf)7bRqB;Bp ǘՙi,!MU)x$YjGޒ!Y@n`fƀlrʲX4aX"DGKW5ݮv*G+PRg:Ї=(2 2#PSxa1%ӝ I+|&[q8@EҪӖ,9(5U|n]Kn*^A |21 ۴/R.3QE{3ds*eH˙R7$(낎TW.הb!!CUMd z< dSC4 ~TH<^Ji\8}P5CWߨUɸm"H TT' tUB`!oHFI-q]IX *  V޸I(RA8!G4 ⭠y_YK4@\:1ADC," ViE9JH>aI@aᗉtAG"]"Ot$B.b a0 lE![eqѷ͜IlCԨKH}U M]XApCh̝" DIbI 2D)( C^pp C9D*VDHav]uBG[%$Ot"0cEZb#)G^HiaGLc#(v_?Z`} !LiDZ5b4<-BcH"IZ|nbJFޡ%!%JCQHjWՖmUVCU#|0X2]  ACr"8 `CY2' 0)' N  DC_tf%"4XYZ[nD"% @ %Ic 8A%_%` &a&b*E 'edCqDG#ItKLL%_Al"C8dIG,MtcxBT`CP"'IvXѡB@G4q$__dE HWtWU%| | ^ D[Et"#޵DaEؔթGQZuF~HnZK~H:{FtQC\`揊@ p&*ꬢ-'@C묾 đjʪJWn*,W."+Ƭl:m.=z` I얔XBk\|j1٢6@ڢębi*(ծ+:kEkGR,I$ͅ.n:DU)Blm c.!tDD,[!C.tŀ^eU^!] Ā4A VhCn:A[*(t [͢.neZE-5eGrbvX|ע\{XGWդN.JYQZ=--KNJz |>.*Dֹ/l*DJ rR%H tONx熮."'AC|xB%ArnُF`L|p2D'2Dt#ভp tb hBAh@ AH U* &^oc/[A,oo 6硅dtD6ĺ۪ٗ;J0KD#J&#DASD/D$Sn?E kE K$j*Ulbr*{0J *.ƾU.D%j,~p[y&LT\ mCL$I,--+.Ue2Dզx/.*%*D0+0U1:GO/Df'Z#k2 "HChO qlkJ\By4dAT#(q1Ő<ޭ8D:)) ²(+T/20]aF2,0CC(2/Bl±V@COHӭ3G(4]t9SuEt B(.&B*ӕB5RӕRZ;_-|$4I<֗."4 v$4p 4:5J,VUJtE[ĕft @xtCXo4ݒFtA\nKId-.]Ev.'$2A12L;jIXBHoC[5BqZDŽ5"TG@u^oKWpӕ:ro*|Byw2]-7C671{N>V@/D̳=HEv _oiA-3(3x7ܒ%X@KIܮBPe'@^2=6OD6>%> xG2GA('UXծV[oc7]Uk @Ehnr_Y3*$uL$‹&7G\wGoB  h[=yCt@^z+7;7|d/䒄abhxGpKT8hD,O9DzQH8(FhMvCѥC${K_hG<rJs !FzM[A*GԺ[:P4G|C%mfKך*u{LβiVDtUİ["G9Oy/N֛*hD @u*ĸH8[Bit/=cJս2GD&׷N6uħC yҧ})kDz!wY7]@G[|PoD#;])zӹ[{D%;3Fʬ\z뼳Z{;MrˡN+$1T2&e5CTc2R,b«o<j#OJ|N~fWSp؃D]:jKRWK~fwIмC49׹'@FX{cò7 샬8=Sdbva'/Pľ{bBqJ,~}W=R O8A"$h[{ķÊIxx.uBwDwP|4x` K \g@5DQI`ŅWe\qUDžkVzkV[vlXcɖ5{mZkٶu.$#O]& `X%zļDX$F_w<Az\7c柿$}V\T@|WHz z\7qg۹w9F#t!˚3#f)pC5*PQ#Gm?YR^܋\Z(A8ʾ{J 5ܐ=EQ6 ?j*%Tjsˁ,$ ^H(9$lȚǺnJʺ8s8"cJC@zqd 3#@;SAFb"4"C[3P *ʭ5T2Cd &H#jOTá L꾦j?Auݕ^}`+͌ɀ,EFb뒚u!;:"&xK%R/6-p,r2W4S/DrM/jZ+6&~$ߺxϐK&+kFK bE dTIErTX6 DV mW jAUɡBpPm+A3ڠJTjR^UtB:u>^ ϐ+5dY2Y3Zc:pDHκ I1 茩L ݫՋ]̚$ݰ0 qxEbDrtdkJޘjBn6N=nzaf*WftTJD/=P0k4S@+\&h`iHēG欸H0H'PdAQAJYyVϢWA ^1.DHz1HG 8srƒ'$^&#`s]]&(qVó*/8YJ?D*KA"C.YmXWv΁ pz, K#\N$;@FrE`z A?[F@qa@ҿl!(X ) l;[>5%2H"&$P O'UJ,P&ڻ $E@&! 0$R?2! iC%ҵg[Lg> pX]1$vX]il9UZV^g:I;xp]]8Ӆ $к4?b Jˤ 9bh,H q-u eV+@ق($  #n:q]h7F ;3܂ NzKQ%d ;Ձ CL+ 5=DeZV",N`'3ND$2 V UUukp-jVI`?XXlLJQrtAK!:W>l_j>.=:CBuABP˳UDL `)G 5>b}Kv*-^f[[x1kn5EHCLr4̗5F$f1H #tUD='BTbT &3֗^HJ߬w J"$Dj XfL"QYjW-3@\ZZXF8< "Hax"+S3 kkuNˣb!w[mRH]/!v2V%XFlď<ƺQ@q ((- CL͏ E"KWn,sBLT~r/+*Vb \tn>%1@ڡK DŽ2XAJZiMI5Cr ':êW+(^vC<Pbb.?N]7-r 2]IHB8? s ) A{ DWI)D`r&gK|" @>*|XtYu8rҀIxkBf˴X@yD&Pw! S:_FH؈CR5AͰD=&*PWRDoN *,B .!Jk&n AK_ @BBZ,* ʸ-֥giD]0q !] "0 PmJ V &PP ǐ  ,F6ỦJ0haVLbf+Hj ]&HpB 'r Qx*(Ȣdu,a@gF Ȯ]'FlGHE$li{,$uwV 7bb 8Ѵ5.!@H`" IQqEjMu~pr1Hun-J# \QEFb"+2"3R#7#;.!8+ q+ .nR5 Jj &k"ȴb B_+X2V0+.@!g'@*k" +" $Q `'f!ˡ ,*!]'W*#{e 0Ѡ>|0s012#sJ  ``%QH/M 3@M 3ׂ 3 R$  ,R++`7`38 ^sd ;)ގ3: b83;)L 939B/J!  =S2TAAAB'T-ޓB/C3TC7C;t;TCC*,TDKDOESTE7DWDIEcTFgFkFEoTCaTG{GHTH#GA[.HIItFJSJJKTKTB#KTLǔL˔L{1s*MMNzTNǰ ANTOOT;Oͮo0P PQuUQ[-Q#UR'RQ+ @ ~M1TCUTGD/Tq1TWU[U5T_JJRVoWsUW,VwM/WXXWumpNBSYuZY[5Uu l\"Ä5+\^ϯ^'l@_עؘ-& J>ab#Sp؊bsSKb7c;c8ЭBa(0B?VeWe[J`P fffdyewg{g]])hO)gVii=@E.! PfjkULklVlJlm6u7 ZW!Z  svo@*6mllK %`Z @ul/s3Ws?6o7nR$JIILeo,7+:7,&0hpsowsWwug 8 uQ BDʢw!+m2owz{by]8%8z,86&"/\~W~}C>@zp.KJ ~)f+W(uv~؁i&)Xɺqu!8+*%* 9JA ,jB+/x+2 osg_+ES B @ ɳJƌFF(-xX+J5R8b!‰u q"K)ނbPGcA6X瘎5 B`67!dd__u[Ur$jl e/ Y~]lבGKYW! 8 ,!2E /:y+P?O}MYwՖ%x\ 4Y -l ԵYNP6Z. Mق "Ytv@* `NZܢ˹ٟ .kW 99uG9+ڢ/:Eڈ, t 8Y#1ZW'y3b'W!sȰ}GzKژ  QYsylĨC١1ʧٯ+hU/TZPy @n/ 6ڎy !颍1Y[ _/̢qZCp 6ha3;AmfpDڮ{Zl=Wv jcBɵK0qj#ʹ+%){"onmټ(;D'3`pP \2n :pGf̺[O;.7AD*u U =9d-T #|C*v8/<<-.JU5Ľt;Zoc)O\`l؏@=up,he\ȗ4㢴@rJ.mb|  uD܂˷WX0o L^<4:ۂ\\:PJ-P °s9z.auFC),N~R>.V{Ӧ5%^Cm,pt.x f~ hK-->ǞI$^F,-ľ5/~1H@Z<p ѕ`@#.tܾ8d<Rբ`@=3Ca $> S FHݭ?uuD&  ȳS[+jqa[:_AK`/X& *p?Z4ă aP#q*`h=B7%e,8̀y6$os<(Aـ~ye츊Y&/'" LY@ -ެ;NlqY'Nx" @A.#P ?Y l m~4DTGEꨢZh2I*4GK!@ҍ3b?g9$"vRHt{Ԧiq[6 {ݼ2# 7qH1'x_2{ՑRO'O=21H!I+MAR 9  !<uDX[Šv&$FwGL Auk]l*{̮DDͭ:ՓG]Z+f#g B fQn'$R4G]Ets4]oi7G=w!⨼)B H]1z#vf+q2ɞ"1%x=(! &%JF6pg%@CF3슰eGܕA]\(^v^=r$`yRy잌lHHې$HY"'O"ڋ0#βG"KAl53Qߚ΄p9k9Z (~G1Kut%[Q2UZGFQ!$:I:O(&Q$D&H< .C PXW*K)(( [[ʛ62Bk(G7KKΞ6s"vGi$Cȕv~"e]'#8ɰ.[dEj27&dDƧ[lx|g~i5 BHE:jL enEs,8sim$ghCQсWlwz]̓  (Х_86l`# $ Bm[#{Ҟu ߲r$h1 g-b0Nn6I92H%wdm^-ْwွ-30fhe[gx3ؘA)D&t404YZCtJB Q96 ׂ 3:꘏#j#YMG#صJj"1I`X7E! GV [I `%&FA9Y|zԋ9f Xx?rZFJJy&qwn8AyC5PDlA$_& o=H*EHԯ'L4j+5) OZlF[@upy L&g9Cp Q Ya:N:TRqT}M&sEW#`#j#9R&Qѵp^I#z.n $e[h_ -fJ9˵?R٬wp5 קsq]ZIf\:E  ivdJR>YW+018?lAj֘aN&dV Z'fтфj-[q仢Kށ~!T<2=dp-W7a& ]av( V \ 7S][:]VSk B41_9B~:ҪZḌ03!8Bë`9 (~8RuL#g=]RlB DlĬ:l;x _Yj"]e_#H|EۮAu $,N+{kx\ @1(j 4aQ` Z 0sr[PDڲSnN"s)9«{:ZH20l k1j  BkZ)|Bb l&l\J[ל 0'\kU#c{֌+싇bxl`pf k 8Us ?œ&^cKG#? # ĩ O% I& w#92 Q]:yѷḜ] 'm7 9]T԰u! 3 @¿׾p+q q :`> bJX RI/KHz~׀ PDΨ * p؋-z2z9C Pj,[JC5ـ}O@3eq yfAZ&(He2;M9d@!˝``VúCv7A榧Dq c }fZZ9vO杳L0Q R25 P9c Qۀmgfn} Q8HZ(l8oQ6|:ve!s }  mp'?"48M .A 0sm K#Wl)  ?#6kDP'L n46$SD ?U(~1#^'oq G_]{`Miaor/Ɲ8FFT0r-u|t GЁr~(ڝc|Dlc+ܣӻWMAcF('PO-רl1d!۱ny,YN[]PȀ h{3Qȫt<#e,n^gXÜ 1:\, rmL<^ޮ(^:~ -kVKzmqW8N$'Q:x]9\t$B YZԫJjdjg#Q xQ 3}0@~9^& pm~F}0Spnɝ׻&# 2IZ8·2첎Q8+>nLe1p8;߻ QyZm\+nOݳ8ǡ 2f1A@[Rqo"80pb 'rRzpYGe58zqJRFRv`F-}#/]!B#p?L)0`8n+h?Ae, 6X0?(pX !,:Tc-e^7¸@]( (.Fm>|RL>cSpg?d $䒗`dң">ti:2+*EE%HoYM8-ג!v>.#'96X]mB"('oB/(R1 ۡO.Q=؆N%(U(sh TG>yE[ NWZX/Zц U-h9 v!¿ 9W>,+>v捓U XaT 4? B!`ck f  2Md ,@lȎH#H4]yR! R^E%[[? Ǧ#<}l y=>WL\RAl6-~`WZjyZt-$ +̉Aun!nWq я )\ u0$̍U64~ҳZ*8` {Х.ji%݌_6kNs(m!c6TNxA,lHrr^C2lȐ/19wGW$If@i#eVwg|(\y&"0<'+y;W\@;8@w& (z4!(PCsAM< E("|į}{*Ϡ%`5\ZnV։ <@~V T2 H-RP(h) .҃ $hC^5`; -vπ) G3@\̂U)ȺΨ<݋^#qCCEЀ%SϨ@:=xBM&<43|4ʣ<0ĄPʠ 8*$1{%Lʥd|JJ@IJT;CiRIK8KkɊhJ@M/rG[Z$?4?0ۉ XC0A-HM_\DSf\-0ӄ,L XЄڴMM? $ Y+S , DΈ"AP&)I)8A;")X0~[ r*\RHx I;zύ8I̼?GR5pJKIpO\.ݩ71t=x55J9*#K$+`RX80&UsUѮi2m A,KЅ <$!eQE$R%ml#)175Y[Lc2t ,8\ Ȁ LK4K?%-TSST1Z< N-M3 .eCi>l@L 2>h\䚆(Zĵ$ZՄKDt$M_]cH ISH*ec 7فv5P ],ڎ4 F8f{|)fQTBT VƆ! cgR>XیN=xXg5 DK\XX\V#&Aue?:uKı@*&3%bR6Lec0,Nϫ0|cୈFUrWhh8y@,sRA*.K6z8he9hc/=$ȯRxSJ8 sdΏA(X,Z[/9Pp.l Ђ&΍B 'nM @c%@,ٰ`v~ Չ R(!XjP&A2b&IHHdh4`XPTY.bo+ :vX *7 {xqK2ܞ`k[;+*iʣb*䝖 {$)؃,aR[(R 7q >(؃<?..* Ԃ)@/0`vBh-Aд _!OjqdΘ_R MZ8$pkIRQ$s. %ꯂ#=5P6DE׋&;Q hZ f@kYgo7*8s0tݍM^M_tP1_#v'Nq(Mgr9:.7}=I.SYP`=PeH"spe$'nnpE%+XI?p`@0{0wgJO=_~CCO ?ox[9$5oLfqNUv%PvFz纓G~(LGg8vY=Ӹ5 ՙsMOo']# }hWz Q"d\/GAz'|$` FRJ pˇ̯U-+F'ٌw wL|cs;w?l u>O N.vt;_+ اe/x7v~M/z?U7 =`W S/FMc.-._*h „ *lpDÈ'Rh>6r1"G,i$ʔ* "R8YbD%^r4G<7 Hbq͚{V2D2`:YԃCx$Q_m>؇QFePTFY0@ڂTMs(ؚH܂4aJZ{7*03ТG.m4Ԫ/JղgӮm6ܺwuϽV?H|$#`dJT,@0U@7@ f0@p`w\tUwEQD&J_j!z!)(")"-o//x#9#*jQ= 9$EI*هG:$QJb)J.Yj%]ziQ1%ey&i&m&q9gD9@'y'}' :(~b*(:(J:)ޘGQX)z):*G**:+7NqUave+ ;,T4G,J;-Z{i#0Dn;.{.RtK];/{///q/|0 +,<HS8~8+8;8K>9[~9k9{9衋>:饛~:ꩫ:뭻:>;~;;; ?<<+<;>髿>>?????(fM+^󊒵fĤnu \* EdfŊi딺ڢbkTr!dQVQ ET$vDBKS +j1;ĺY:),Ot@O" (I !rJDE&Zc^ȨBJND 8@0y< 0SP %5)ImYyKI؝vphȆ;pibVD+^ _&$ nd;͸\"wXnf%kbҗ!RPЀb//eJ1b) `rGMH"/L.S˅5=9ˉJDhEA"^mIIHB2/u pK[aEf>zQ5=;tDT#Օ v#:F9" B[NRd BՑ";"RyځBJ|+E F)̰ VSSeH{֑eXLJ4^&V!Tx`ܽᝦ2nri{DbH5٣8%Rs*$/+?%ȸ7Rn" q8pt!.H!}!,`S!IxM!W9킬eN>w.Cp徖ȺtқѴ5"t"x ' !w J9"IPt#.b5HD=j@ is? 0/C2>E|A;s eK/^)=?;"PT8B8Q@smjQAKBDID51њCFYECFZHO`yQDLAq151XMp @Z B%iT [5^l0HHEh\DX!atBRX%%%!*v!D<G(R4IҞ%!.VŒKՠH\zDL_]MW)` nİ! `D-b)x \LR1nTy'"G F A`I)DQHD5B5'..l~c9.Q8H:~c!!Hu"D GdbBTiD#]!ChFDbX*mUD _ Gh%DXxVi2$xď,nF ^E)4Zᴣ%D8@i:*Z8I<"U WDh"DHrD%DmD/.xR'FDWE,bQ][N@D|/ҲOl&BR%եC*D"V  $)%B 8&1@kJ)(Bi|U*Z'$H[~aI,gsJDrraq%\~\]p12D_YA\+")&ib&MhWGVGB2A ?!Smݝ$pNfAc2^OHlmޒmybM-HD*ڇ A"T'tĨfa'h(2Zv I%?NčeA+F@G(nܑ{.dwFNF){vĕZ, vDJyf$☄l2 JUP7BZ'Hğ.Z, J%ě~ƢHᏦvfF1D$lIBBȧneyDz&-z*D @Q*ElFGrDID҉q"X6۝efIJMֹ#Yj*5Et+H jD( @ t!x+x *|B @@ @&*k[ H"Bp+BJ,."ث @!4 (qƤ(Ezk"DJ,-.D"+ @ kDhlr츾,.D" eDV\uB)Yi~)0E0dBt&n2B*(JGemnB<[k~Zb5T I$d_)Q)JXܧ 1DB.Z%P@ | xa BtB*Nڶ&Q)+DZAU.#-ߜ @ B 31r/ʮ!0cC'S c/*@{~#.BZ~DK:*Eޱq1j1cA{! 0Cpa3[i.'J|Z0$r|AmCYEB%1!΍.E_nbNDAA\nr0jHp-3k I\M/9joushr qq'8B|"kg *n3U3B{@´oA'/6N@rAH֍|uFHA<@ OkuDs1]ڟ bN0%aD8@{KLQUov.5GWO%v}ެ/ p7Y?uhS,"'; 'Th1E p'I/w (A 8s $78BTBoeDb/ZXBhoZ]"'>vJD&8e3'a A"8Ǜ[v+o)t6/ڪq"9yǒ%)s%pd'^7SA P :GZIgyDݲљi(G0I83YdO#D'ΡryUK3BZw!A ooh58: AxD%1h-mJ( xtBDˬGyA4I"P,B!HDWD[;&cɰ;Axccoٮs'#!y`)jj$5I\3ܠG('Ded |rD%^WPD{Ӡ{:+Qn2b<`ތ8nD8^BR[Ǜ&ö{I%PI-IL7*\Ԕ"Dp r!ϼBTp7bۣBX`2/Ck[r]NlY`Wz搛t5 (Kl.1lM . fa%+EVV&՚ZVh-[,LA7l6:IJX4Q+PVZm,84ԿMV ,@Y!RN> r\ zYW'"ey5$M],"@AT b?v%hLKZ&a1${EdIOҕ.YcuSJ$o4b0v*#KҙM $m]gD$6f*PӾb ɏK5}3.uX"!FK;\H|ObrInLDۆPy x^ \r+-[P{U{`\p4Ra)E =6!&3|9V҄{^ŵGnϜ5o˪˒p:laV@]kqdƃ롰|REllI booblטdkу[i5QX趦$f_ K9l-mO-6L=KEn.#1BFpR \n}2s%xq蒬"KH'Pz%H}ףJ hQ\i@\{"]}쇿gwO4C|T@ )EUy $'џ~b5Ѿ&M 4IWSXf"$6'H~H/*$& ZkK9fBhB&b$ȟN'HX Oh0,PJF n,ڭ$N$m P`XD@,/04ϤB>D@ g@$gO\d*`B+dx&{zo+Jp PK PH `" d* @ 0`!1%Qoo%| S0/0[)C1OXLJP/B4Ei2| N̠ |" K,BCs 4JBP BK@1I) "0Bb@dpvgl3AJT$7J"s"rr"xH= >`C )u9bR,S)0!b0+^.n"&l/lN?SP-!n> b0!b,E XTE`* P@uwHjC"b%xUOd`o N1KBEFtzp"GP- R`{t I UYM$f O \E x-23$[Tu_q77O‚8IP_n;m,v "U/M[ $r'1)= ˁ*˱&]YٹL@$'%JQ$|]˧}}ˉ|IW\}#NeV҄eQӀ4G}ͯ$tI-,P:}b%G^=**Yټ韾ͣ-g~+M +0链2\ >mb>뽢^ |8$0Խ$'>X>&>淝 ϣ9q>u 6ͷ ټOIb "G&:OKb],3$̓]Cy?| <b6 "0U 0bBB+V! $zƑ;\A#"Ij4Q#/4k qH.j1rIn8a" 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7ܹtڽ7޽p@)Z;80F/ : 0A'h e_e*#~8jQGA6Xb <ċ?<̛;]$$ԫ[.$ (P#z^R A Pz}$ pb__]vR_*dABcAvՂeSXT*9Gt҆uf9T-D&Q'YA=[XmwWT祷^{ i|w_~I@ ~ fbIfffjYf o D4`_Do”x})o& f9NZcQH*іQІ@)UJ6iQfe`$b2'H{.g PX`Im^mnmb婐$s  Z_&U*P$ poX:TAB&BG>d)ԩpӨ(SRyQ I %,*we d.nD&o~E uROMuV_uΫ_K TJ>?`t^/O%ĊEC$bAXXUkcYDBsm+aQH ՔAK) m `q`=*evltIouO||)40{s Ĭ{,tJ MgUd qN^ZUЁcQ'zOq$KƁDda!Nuټ$4byГk{ R Rk _p40nYҵI 0ȹ 'IA xRhrCꐇ@L<A_-d`I(ظBnB;@}cH.q(z4'BRAtQ#AF8f`_qqI? d;QALt"$EUM$r/ `eoڙ.(X r/xe؇7`  T2vŌaC^LE~.MZ yNa\g CD aYT1&1{(chd3̈́Hbf aMmjzh0? Ґt$-E@ 0ӊ )[*}&eB0T'f>uD-Pчt*t %Oh Y=AU~[4B t"gJӡ4"2MdS@PVi v-a[̄X@Tz ڽi7OV,ԪG|R\UՄh`X3-u[-Hl&Z,T&[]v&:jww W"+P@"M %\׳ni=O+U͒iDVU'neBXq!P[iB*Q/{K7w!-vx,n A:\#bh )1`NlKV6ڭlbYr ,DpTDʄ[߈X\4ȍw.n 8Y8BNh8I9*u K)D+|IVdVN<輙m|Oee#hpFAalgY!gVHEfyִok Z ث=8: ,JΎr̜yqVIkZ"謀&3@LcLP`t3k0|Fa hYzf: )EV';RPik.%< & $['1Y}T6]{A\ `ޮh>׻ 2]Ͱ/ecn;^ǒ]-MU<*x^xȔ/қu3ܹ^W'1B8t\ ӗ.K5ƿ"+6i% _VAj),ӢY}pJ%>: Q +R|J@QPZl-FTz,tQmqk T xi }I '{@> /3WMқT}.:g4T˛ QWbttu,+sTB$nm )_ܮ*9 Q );¥0 p Ps"NncvߒpQѨX_ X^/>OD~^:Q^LF^5J ; q y?~$HI :QsNyxou_Dž'ax=o~^ > HP* )H0BHHCT*&,@`$ *I$TIY&L yAC=VCPMnc8i$LU9WaŎ%[Yiծe[qΥ[]y_ 0)U{F!y)GB na # k/!<`(ĂB¨LkH. 9.䱮jN. @'GH" r&E!KGK0sL24L4Ts̈́$H@p,&@˪3T$!C*81Ll ##r -I *H /R};)Ӳ!*47S=M`vXb5XdUvY.&I.hYOB*WK ւEP@EW I_ ipc*E׊"%ۍmH;pԂڝ+չ`ʞXM4׆߈cCydK6dm٘(3Ns=1sKs"r \ ߊN4$k %+#QZ.oIЂ$vڍBWORn{odgJbHcIJzcU ׺O"<ۊk+Ui)ɐFzm̾z`H7pv$j}wxrKZ΄d8u{z꫷z~{TC,^+:2KC#f8"Z7(h#ɥǓdG-]I":΁UX e}o%&3so8=qO+da ]B/ h'U$Rj_'y W w/567r vلTN2gRЁT8|= AWDD,&[ G@R$$h:yFxrV)LHbQNOA#*Đ p@|=&ZlnXR$/vg<#bF^6aR[dR9FUXef9Z&f7Mp=B"A։>J"d~ *gǂH$LCHq9"-bl"2t*dUYVjyu]"+RUn:ZJV*(&Mj)WyvʊH5T}ia {X&V$iعӀrMF@JDŽ\$n#)-ʈl(hQwP{v.OYC NH&Wens۬8%CH1H4qۡf4{DΎF5 -K^V9mV^r!RLtN=I*pɭWVV!eY(خ fp`/dAhhkExW19{nR$oC)T+a*=4'DBm|c.mhŅU'I-*3UBd~JG9r|e,困BcaD4"#ݯ҇w-NX qgr,u_ -y oO:jU1Bک,GZғtebW(eXCMMfyC-qZbŨ]mMWvl.] $A=#/\9l*̨[KG[ӦvGVzmDOC `! x60DI|qTƖ+#tc`6.ku 2QXdGdkG\xs{Zwi ٘!\C.oHm5{Z_g\u5]'I9GHoLŝtG]qYq|nMl(*/G}+vB輐DߑߢL>[4,jh'iY=$ExG$I/X0-jBNeboV0LƦǜ!i7$穖lD}^P*_si5ɟ"VZޖmUfR{a=:9+[@l@'*0 T8;+` qé )"+*ӶSճ,h;"0>" *H ̸!(;,Q-@T?B+B,$R@p yA*)(LQʶ2" >S jCX+s5pB[x+1\7\ < i7$ DCŠ?BR,ESt ot=00 (70:K?D TF` LKHs\KEg-u |hv$ Gc!FFğP)K -LQ>%pq JHDCIXh}< YT+K<6KK?(5h)Ip҃IB*@'4G̷(̷#)B0+* -MC(ILN΢LPMk:PHЂEp8/J !U(/\ %%hs:DX8$`ߐMl*HPjűHM);RhL!5%G8Z>IPhA`xĤѫH=S4MځP%Q:1:Q H 9$NIJ]UY°QļaI/~JT܈TSQURRP!IQ՘@ݩDȚ@;=>c+TEK ml8܈$b]cR WqHqՊJVAA%p#xM -?w#zΫπޚ EE~% ll(ȾV*: *`U%N헃M%W Ye)OQ21$XHqYYWGYY"(F*L$gE)TAC؃Eݛ)(5Y0RQEښڪڑ[[Ţ$hPX$֛#`P۞$hhR`#HڿUH5 *x8h$Mu%0]%5M>;#RPѕ\ׅ -ݳ]]ֵ[^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~``S F` ^ ``r(6 aa~aa)O ^S0. bNb%a>a&^'_1a8*^+^b.^c80 nq6Hcc4c;`3HNi>8N`i[6Vihij&j0>i쩄pj2jVjŠeb' ^F >`fFP8> EpP(p3U8fO0X`SXO(Nn뷎kPP'8&XVkl@TkFllvkވ4mF@vPP nVCh X&@m>k^ 8n>k冈m>oވDkPnFʎ lވiNp'@_6J &Xa0_xh)g]bpmCqO~V?fU8mdS UpqXp~@m58 60VG昰cXr&d'W?f()ld4/tCgS &3߈D_F-p rO8=^U@cV6@VF8U(Sw`s^vd^Nu(v-aO7A d_eeWr`aaMp(b?fh_uvuCowwo!f7``@n*sFEVOUnowpxP]_eUpdu_Oxagcvxw`?j8`w@y@w7aa8gvO? w?s\/^8gXOV&8@_m cn`pUpy?N( &HIfz8`ny(fav'h#a|(>'Fz?IsX^z&mD8O@MgO3t)qx.`}xFV3/Wi/aOvt.0N@EW4G^o1mw~ܯaWJp0'|0|SH(!b@TDDFS$dWm\)ժVbͪu+׮^ +v,ٲfϢMv-۶n+w.ݺvͫw/߶b$wa`w"^$DITQ͏1*]dᘃE(:b!::yd.ZQBa/9xz!2![hV _G"r[."5[?:GKUL$E5+ٙlTjݪsT'^@@ %e2AƆA+'Z ZU&AZĮJEb'G]UO{FALGb"#\'+J@iP0ϥI<y!iEfZ|Q'c_b}vJ{b*q)PB{micW`KMG)^ @r,#-ki[2%:!yė '/hEhs,)x# $ryZolc0h0gD 1)ǯ/_[(\,Do\ aЃ"@RkR[%E+jыb4 cD"t ec{NP1B:yVXV)Ʌ"\Xp >,Aj.a;vL2#Bd %tYI \ʒ]+[ַ52@A$=y{3)_BF3~P9}ow!"(-S+S'Ƚv5{!UV`§PlU#%ț,Y%Jt!+qk"7ʭ"投%Hn'&`ta;&S*R Ǫ; vҰxEu׶oadi"'c8Mb<V_N5)L/>9oD78"1K<@ɤukܹت|).)Yx /o̖S b0֘Q%X'Ky-2/bRqAӴmג΁@ ]z>-tPlDx [݋8g@rk,4Ċ^4GG."UZ.tjW`,z{{W7~2g41! '!ۅL .J 48 LH'UVy^ t0WTnvtlM8C` 2TZy5qb=kĴn4m{;@"~ҕ[&_-3SؙZYQd n[Z`9^z;'@Rs-wAJnA6%7u"^ke~=S;J_:Ȁ@= X !LcEM\ZgbF@SViYݰAhqQ"/߹^sUy{Á@nX0)B};Vn?M=KozM_=0=@Gr/bǣ=U-=<_H X';yCdHbb;x/"&o]FNq34a fȕ #5<>&w6F/9dd /A$DuXFߊ )2`Ğ5X8@$TSh`^Vy A ߰W$_Q8A@gmyE"ĀP$O A> @pyA>`Sl"8A К9a!hd 꼠/ѠXj!b$a>%X XNAr[L#B"J% N""Hb{ %$#B&a**"$$XH@rАG.P0c1cDA d"X$:@rmXcq4 ,v9c:f@;#ZAaZN셅$3פbEd<•$F $A*Bv2,2dXA!PT`&X r$,վ$IF$[$bp]JK^H(:$@Kn% @EXc&O*e$kRB1P"@Q^NdTVEGVd\NEE`#W%A hZʥRt%#h\>^AI= F5EX fd"Pfe*Jffe*+R=@f"XVbZ`_zE) QjmfnE)(fg^\dD#%眦mV#b~XbޢnRguZu^h-PA_VjPe ggX$g&vg|\:(Hإ@4'둥fBeW|JR(AF zVe1^MVŅxy$(AYA-gAfXx%VhT%@w^D{^z>qg1X|'&Wt藂i'b>$ƞUM)>)1FmW)HDgMgXhjbN) *`F(UB^EU @)(^zE栩}(Xi.j*\$4(_rbş^P(+)vZ΃F lvE))BkJ+AvjVI]*+Y sŝ^xNknH)L*\^ލEѸbrd@]iX{+Bbq]~aJ`]L,3r%^,!l**Xk,(X5jƖ!@l[HĪLkީbj%ʮ0,2l(뭪Xpfϊ&l@@VآmF^B)lA҅*U$M FN/V-XȦ>kXfF] 4@j6 L@b٦R$L"j)њ],@)V.VA0@4@jEʪE)DA$n(Al8@, mV,.@  R~F-2-W( fl*/FZA@~EjY(,\)뎅&&H\qbrߒJ-^-V(z4 E^Bbp0 hEH7@f%8@@4@^0k*Aj_P*v/FX/WcE[Rp^.@H1BOAê^oVHB13qV1 hݮ0+qFB! qF$A#%$ȒXа1-*mr"k(@,rr-8@nEt@s|B|A0s \`psp3KA..EVjre ET1PkEd-\EA8E(%rUB:W {Dkn-U0"6Oc)hgEU'?l$Ĭ'"U*+Z`|svEZP%DyǞNC($jUlv{+J +wg3#Vooö1㺁\\plXl1lu썶RZ0A|2SG89;縭({.܆pֳ~;AZpne^ZO,tg%'Fl`PtҁlCLK82Nk@ؗ'ʘ$n!@0~Q"v_G=E#H.DhnҚIF d )b*ThS!6"sێsDCh @Fݰ7@4@T#y!K ,&2tOtHG;O *DXN2pN ـYP U(TJ$,{ MYbGpi #?6h/fȬUdrT?p!"4kBI$0I4J0^2l鬈;R̈́ɗS"~ ʓu#fDU`.Y@T:|"$`$yի^M9UN>dB&-IA FAٔB FS!H׽U>HjH쉐=`NXBXem!&,nyƆ! 8@IM-u P+(,F:$z"=ew):ny!Yk"}B\\ )4H$x^ƀq*clmJ!}xʏA\CF8!vsB>YTةRx ,rߵBQӻ-M7[%NeObH oiWz>; [Th2WvBK#^ w%$@yA6S Y}; 雵n["Ã#KL#Ի9 MꉤX"fvS푐W f;n9n PQ'4?_ 8G|Λԫ-W~ X~wO{IܧakTj"zJN̥ j$N*"mz@"b2 ./)-",^/"VM!rOn!"ުVno)J X* 67@Qo!b W_ n P @ ܢK/ڦ@ >k*8 PNECb,&*.p:#[ "'"LL!R ~hM!X b ~ihlp[b9`q 0{'”vPqW +bv% >MTF,|vR"-d{#fef#3r/'fJ2f FqZR_b-%b[d+"' "\'M ('r((m) %1o(S$j'n::b,װkR`2 0_S*.7#&֢T$b?EeGG8C+93)Hmht#`(@UYqJRJ+ `C;` Kr*#o" "LWM;Ցn02L 00!6q^O3챾*(sn`r"*}b"R=4W)DyT f3D5mFSYGG "@d7DJ >dV`m5dp9s#vZ*an%a(cVh6H1ryʴSr .sS! gQgynpB2]V!t]0"3!*Th] `WbA945NY.M;6.Շ0:4Nsl焲Mb&1b'͖hӘB12eSkWLZ_6),umh6It5_)" 6w{wB; ` +T 0$"9P'Ͳ U]vq`.0)m_ 5^%to0Gq&~"x."0?7ha)VR#8u!\0d5z 7z$} - RN P|U)X2]aHpV%'wos#4 M@@ 4 d@ }tbA3~gnW"_5Sh4["l|"ĸo#BNx'"p3DžSTE3Cës6e#cZjR'rUc"b`xTBw6WYY` zH@̺L` bq*/3m]("\87=U8&Jt-W~) 4"'<9ϘB#R"x*"9y!aa b9*T%8&f$t!s8'[؈}PVWלveӖw|"7[5 ˒$A+KK@5":""1lOPl/"0g)ц?8l r (uX^w)^_%VG"-oxo Cs!&kBX3y zKF*:CW7w x* _L%#@a&ځY)@(h@;+IB LQ@@ d* ♢+i ǫ9wQ4r љbWz7L" *ؚE4I|e"Z! g »Eb']Bc*sn(Uh/ Vfq&xq#zaVy)a 'ղbi-#Y*b sv%h~-N6 E,ibo4cڛ"ol`cm~pµmѦaOsg3+:*Y Y#;iKg:K ^*wγ+`Q: ‚E.w -y|K i}{%iCB {N^1>%: ~7!j%e-by|SWAyZr)0_t'Ϋܒ< Z%,٭UPuG.w#$on4SxS#dR3m7sBO^6QV&s=ߘ\ &JW#jr$1~t R~Y0\&Qᢧs^,5KѤB /PPuѻV m{}!H5GlLq#ΥHjejqsOB<|Pz2ul60.">73&Oʕ"Ž#5T@!w^7ɮE>$z01 e~3Bs߭Zl\Leछ$ &>Zf4-^O$W%,Om oǩ@;]b\6м^V C8bsDJA!&)ZY}:h H*\ȰÇ#Jė3jȱǏ CIɓ(S\ɲ˗05 ͚ (@0O$|p3)SYå> 8p``>0,h%J`*@REN4!ZLfBm6X8fT0eLU)T$'|2[S)J>ЀכLg /)XL\jXঀr3x H|iXJ. {䛥Xr9sIbO~`7T/y5շOϿ(*T|{ i%oVV a6]vOvS[!R(q|'B{DSw evyXVim[D&D04%fFr(CaZ}Tcb hfyQD@[R6٦tix|}tecxY B8xUVIa#~xSl-{hS-Q6Ц6͉61 1i6 1"wP[Hrh# uiSv*5ȔYhv;Q){+nzK+[% a Gp-ʐ;6t6a:"C7Avq4 O&kM "@U`DT۾NdCS1P@C$rIF̳Xg\w`-zI<퐡(t 1P&KDAS$w uۤͷCΦB=gC{{$ }!*~\DL͐:4@I |Ps %4Dyzl d@/t+\Ucgw/@ 4DlqKTH,>%@:9B꣇$0}IS %od$K<0@> "$g ^R%4~-\62P'HK`0O)pA*]M*őˢ.z` '2) \gn)BHC6x̣>~~"G@I[FcF:򑐌$'IɎH IihRL*W٭K2kiJ#H8XOv9Yb&X^ 0a+1]bŚ`#pIjZ&=fTf7G2G4[8v,7i&MQj12N @JЂsݏ=ÙFTDPoMTtF7юzh{Zz@! (LҚԥ0cKojӜ& .%␉$F} I=bҤ:NwA JU9~WcYEvM`úT2Ժ%Pd B iaTۚv n#?uoWܚWOrF !tu;/nɫn!ŵqW]r׻-Ny_" kh2ڰ}-Fʑ*#Wm8!V rơO*=H TG/6uT\S1qfݠx8Nk*txur@8*^y\gvyHȔ w|V# 78ۙ# x*gy Sx?Wh.Z!8rLSt}͐LSu iT.UurDה585I0;DgVkޘ& F jGVopO6mbMr'Sv~{>(MzִۭCd]Zߔ&[ s$f-q!ȆH ֆ7鳐|"𮁼 " Sk֗7yʟ_HW~yJ>3.W7ёcQi6Ozqd!C7j@$俫;X=?9"l5SOdx"[]|{DvS}|#_x5|9_H9E]dw#c=^O| f_7>jԫ$?eW>ϾKi 4TAOU< S@?UGf쯁1-p!Te'nUuޢǀ k PF+fXyT)PjnG} }.0(߷U48,U xPF=CPH P<E`PD>F17pBŇ8U6`U&88؂Is8GiIx0&Hу?CX ᆫ'd(r( Q7U{ȈguxIMQ8  sSPPhxUx<[Zȅpw0?PzvUi khyHU80XHsU@ v \e]1nn Q[ \Ue Ezxo?Vcn@l>:W8 aT[Ŏ \u8g츌9U IU9W9u>PSgq]HYyS ۶"Q`w2IUH+{xXau 1TPT; ȏ)ISIW+ْ@99U Y \u6_YQ HUB0uUx5J9U?@Е Wnf\xtq&8_%C qxU9YAYq7I'VU aA 'Asȅo9U4YiYBIWDU +!^ Qy +q}dW9|ٛYYɗT$Ɨy׍ ldYtIg8Umt$Q 7 j1lyIU9e[_ZMf( YJ [UiQv85*֕aYi1W!YMJ:9JUʡ9Yo5vz9i7%(7U\# fkK&q;(J'k 鸐ۧ\; U k{ [[kkvpk~;} eGWݤ\ӻ|Iaǡж5pt1zT w%R֭HT Vn{ kzDw'{{͙vQסΈk U Ѽ(Q[z F`^ֽ>@l;N/..>(IgퟨNeā*95>^y;YvqaUȺ'Cr4,ښޝ+]>{`/n1Fhn-PEg")[a:ޫ6`pN) E C -N=laKWƶ& <±.~uY [>.H~ꩾ?~~浭si90*fޜaƓ>=q)h垮@(aNV\bҗ:r paoO(&!%o"_ q[P\#Έ۫VNetv/*wJl6^hvfݯnVFfhwmosvOsxo_c_漢O\eQg ?aLO ir`/w `p YoQ* e,~qw:?W:UJ$^Sl{wɬ|/q__l_un.lOBJ@ ,B5 Q⪆5L\F5BAT8Mր1dÑU?jG"9}TPEETRM>UTU^ŚUV] )U7 S1:KKV8 ƏTg`M"^ +҅lݻPKmߛ>xUچk m7ƅ9!쓲xjŋbf( g!^2"!!9RNivݽ^x͟G^ o@J}GgѪe`qJ1J.8hR!,d a;l7N*R=a4L#5T5"Ѥ!з Kz  OMt_ ڡު]+o?'$>~矨TB* تu`%8,+5AG,Gu;% &gж$ /!`dM #aur<8D*F$b+hҶmNm E.vыE71c$A4FeuhcX&&̉]IB *m[9HBҐDd":"\1@ےdzUr@ۨHNvғe(E9J6`Ԋv JB̒B@JZҖe.u Φr/Lf6әτ(} L(Y 8BZ]RA FZ *cSxKMonA36, P w=^YRz"I@BM$aȱOJq5?@LISQB (7ۆ[H):|"D+@!҇Z {(ce>]E'læIڼD '8 ~0L"'No ͡+ȷg v/ v?S/NFL {"T W}~*0@pT\Xɻª"T8K23C< sU<e (=3K2=f ;/-?Ѓ˾ BE҃ ;I2A ;k)Xx+|>.aۊ-{AC!vCq1KH9нy$  $PSbʸ$c67.OŃd{@`ÃACdRkƂˋ2t=sI*4 d;E'BCHDl Xd-9CcúRDS#04ó(VBRcZL$ Bp<@b1D„A@XxA8胁d8XDjDH*gs[&+ 3 J ŐxG $RpHs<#, D՛(jK ; tւK!;*`Ԣ>3C& IЮ 28;R@UK C1ܯK D0pI#͓0(@TD%0\K>hG0% PTNPp*_Ƀʃ-[,&(ͤIQå(7Uc t@˻#'<%<\σFCB@tSSI3+M</dƃG22"@D F:g#B/`|԰$?hB!QP9 UFCNO\$UR8(F{O(ORG = w S= H;ʪpʶyubJʈXh,L.UĂӁσ bƒQUQ;I7ρSXER΂p? t6 B7S]EKH(SU\]`֩@KYZ8^ӁU9u:ӟTӢ`mSDWHʶfuVS<\}MBY'SIlM+ zЌ1 F7AEUR+`EʃXSIauٗÛXzm,Tn]jΣC.lM)rTe p0wKHECOxCHe iT`҂rZ-L ڜK{1+ʂCξв?؃Ld-AˀphV!e4LÁܩS~uĢ 컟e6C]DQB$]#8؛[]%=Y#ׁ簨#Z \֒umOpH{-uٻcى@]lU[P-'V1KD-3P (؃ߠQ^7K;*?PìuP*y%ͅ T˯ECX X5ۢ Sh?Hl٢ 8B+I#!ܤ BuV)ނȹPTO8U5ڊcJO-4|`y2_ChF506]4$5ɂr NIZ 9/6^=+Q.;`חd HܱC#x },Bӌd _ Y^]ބb⅘S,҃%H1)`:h7U0A(UQP E(IO6ACƔ$8[OAʈ^Oc)iCuUPƄrDe0YQcggdqef=h[8Zif閆 e H#߁ȹ@-$㣈s~Pe=Gd4#L2Z^ȹk>]Ղ<k"UWLN~1w` dh;|&> 4ÜUSЕvR*}Pb49 0VXjUk2E+,XD>蹛LNI< 4A壺ރhEI(jNwe+^V&kEgnhV0#C2>ahlW~&k76c$(>* np  T݄ nP.c6M B4$MK&NIճ)-n܁Q쁖ܢE;UZkT ]n=hGY:7'/d]מٶ opyDʥo(mωH\0~&40Oq0WY"7YXNNtk'/L,ş4VKpw=ЃQFE7 ]hmOEcrs1.>!>46Lˆ!79g&30?=[Kh@U$>g[tB`JĻb7iMu,0Fs~ GWo*8NеEW ]j\턙 $9rl!oDu5WGXLjZGx?5n^/F`pff=VS%3jvq ZJL'O;PF>wG`g pF̨xdVHwO{Whc3y/Ywxgs/Gh`޿ `waG૮q^\n#@ׄlWp /߱EZ4 Gb,}*̕x>ͧ 2xO肭mrǁ *hA0BT:K]41G,h b-FH"/!pQ:w'РBQCsqCrbW# sE\PK$9^-ܸrҭk.޼z/.lԈ HH28$ #z{fÅy&q%А/@ Tȋ d\(f$!FJBk;jD.0fܓ St$̠/*;x4" ^)G,pDϥK}^0(p3XeIMw * : J8!Z{Ul#j%gFEtJ-]T&r]E}vqqxG~ݤaO-d\I \DnR}Fw Tu)EhbD!%$ԕdݕe'q!#ߵAQPhDmj8%dAdEdB-H e:(J:)Zj!H8҈-d92Ǚ]Q ;*\ړES~C&В%5HQQuiJ ԣUELdbtBEjpBƜ:i"Va.k j e/ <0|J;.j$mj*ͺb]\<1A9ݾ| ?:5Kұ2);z϶fN%bK.B+D:`D)GuN6m6qmIz%*AF@NZBMj7yDT]4֞5, @C-5ЭP`(FI(*+I},0B(E4@H oP4#BѸk={=zq9I)H(YbRQBB<'#PI^&$sLJv6 "\4+]@*uPsTS .|! cÖE {:(L@)a{Bx%2N|"0p[·x$a;!`%Hh)_ȨşO \# u|7ȼB*$KB~ ${͉FU/J!xf1%Wϒ<%*SU0"EH0@QX,/b9L b|Kf0!I~YD0uH|.O!$EPtTH) Jb!#ddg˟ Q(p&\%΁p[;Ѕ2+$޾9eO~r#HKP<"KS@($DC$i,Ǜ#5u "䝥HbMx*Lr >bIQVꌎ*ZӪֵM~BjF&آAZ*V 5 1p;1$Yx Y̕wnrt jr`ҮDHq Kku5\=;%o6g1eűT)yՅt#ᕰ6LdI< &"%MQ3I\Iq8*1M|/%0Z L%4#-I3@B.3suff*TjɅptZ)TALQM C76 <(ē23Y8,EeȠ= PQ!ukA۝x$\ r-}JHb}ʮ[#َhvi Rđ>. j(̪,hQ4zuҶ+?ƬX8:=kmhFm^vOT'aU,\ Clx>:ғ3AD$c#2R ;.$pX<Ӈ#_ӭQn-?3P}YZ\#n6aFާ'5_o:#/S`!UP]ӽ:Ӑ%^"K \FM`DBd[y`e>lOs|#󙼻a2'x<>8έaA@`8-^(vA*t۽ȞCHF _ПHHBMh햇|JBr ֠  (PH]]z)w\ш_E8F<H Z)(O,{%P!v_U)y<O\B"I#!$F$N"%^_Za],b%v'~"((]ԫ9 )"++",ICB9\,."//V#SD"2&2.#36pC53^#6f6n#7"eBt#99#:L(A;ҢV;:֣=#>>#??#@@$AA$B&B.$C6C>$DFDN$EVE^$FfFn$GvG~$HH$II$JJ$KK$LƤL$M֤M$NN$OO$PP%QQ%R&R.%S6S>%TFTN%UVU^%VfVn%WvW~%XX%YY%ZZ%[[%\ƥ\%]֥]%^^%__%``&aa&b&b.&c6c>&dFdN&eVe^&fffn&gvg~&hh&ii&jj&kk&lƦl&m֦m&nn&oo&pp'qq'r&r.'s6s>'tFtN'uVu^'vfvn'wvw~'xx'yy'zz'{{'|Ƨ|'}֧}'~~''((&.(6>(FN(V^(fn(v~(((((ƨ(֨(樎(())&.)6>)FN)V^)fn)v~)))))Ʃ)֩)橞))**&.*6>*FN*V^*fn*v~****czLT=*Ƨ N*'%EB*|<+gܑcNkvBäTp"ntQPq+V^|as*>K̼tN +" \rڍ!c,VpJͬZ,֦c`ǎl ڍʪc!,kՀ,Κ&sHchrɕffKA!6fv LQ:-B-Z߅(Mnf6 r*ئbzT^ھcމ9!­f$%^1吕.`-ǰ.ޥTN_ANRn.v~.膮.閮.ꦮ.붮.Ʈ.֮...//&/a!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++444;;;CCCLLLSSS\\\ccckkkttt|||*f.i3l6B:F>G@KCOHPITMWP[U_Xc\f`jdmgnhsmwqyt|v~y}OS]Xaekptz|ÇŌȐʔ̙Ξѣ•Śǝȟɡ̦ΩѮӲնָټپӧժװرڴܹ޾G H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞Mmz}HS]if ׉Ci#edU  L%/3ŬPY8"){ B +'-,/'Xo<]4"ƍF{Κ[A;@Cҳv+FM3Ey"eFn 2Y"XMŎεgQ5"pD EP@8H} \J$E0ΜVFgI9yO;\YvP*Ow"mn5]$ܶ1DLmΈAiqD 8T7 vYNɂeDqL3}ujL\Oe@)x\|8_T%m"Kdߨ-HЃ뉨i g2 4r 6֞FpNdMeO70y|- I~4Cw}2vq*%*o2 a3QcTDA\"5 ᔁ1"'bdH67 x@;'I1p}b|Wm`Hȁ^!\2y y@fS!WX,.8b$Kg< &T`k@'#zGY2_}tl B} ;m8h`؉hٷ&p']Y!sh}A21A~ ^&)mqFmQj2hQp{CX/Wv " OFK9 B؎z-s樃"!mh WtJ9`{4RyG(w(mH{,E"*(C2"Ӓ+ "(u(aш1"`%\451Y#ٔNIb'iV}bŒtA.H1j4:gmЋ:SZJ "p9ч80XSp0 9kq$@7'= "9 mW r/ m0dG#d6Fmj,HE,994)aYi A59BX,a\b:gR-5VWw&pi"-Y깞\!v4gV9юvt:AA{‘y6 Ù2r8tYSx q G:@g'sɞ Xѝ%i4'XY6a5 FA O1v}iy-1ˑ4W"Ҝ"ZzP *x& :d HJ]!2ZF*#4X Q> D ' јrsը9ӧ1b,)-4~R[:Z _jx:%Щ:"Ţ6A: w1uzB:d}"yB1'qP*-W_):\qAp=É!j9*IfArwˁ !~(yYћ يtڬ{n*JQEg1Wp&@y&1$vՓx@:c8jinNҦ$K<!aQ`+(.Ш݊ljGc4eUUG7ʇrwک 4%&3_XRs}ٳv{T*K:?߹([4hdUGgCfzdx`u} 4OjY+Oxf eQ!-AЊ$-) G }cteqx3ªL,9pҦ1t*2zIתk_;Y0QkzShGg[Sx F;Xsۻ 5RM; KXS[ [ 7WĹ:z ܾ lI%:Kë~ ׂ:quՍ*{Dãg12l"aˁqך%, KR r!za{1>6; -*) <GZ/6 4yb[k:ń˯,!gX0 F5Ѝ[a4b¹)E4 " ;s6[ȴܳMl+%~X ,68ɣᠺ\ &1}£0}iʪc:cr;õ\ΕJHA\}BU,Y7ALD2P]< vf ,qU**n[@u[k}!kԼ+vY-:Sl< +LQ.."f¹!i[Y(5mưb][J;y&xDM4M{Ǻ 1,S@l4= ~̸ltm]7j^940 V\/f D,Ea Ai\fۚL${ Bu 5!=L@Nkհ,:'Ml*= ǀ22 P p0 "\ҋjQš,?|A' ͞`AS1Ʃ# 7r7QR'7M+퇅DuGev/(0 lW"ؑ% =0(*Ƚf^q7fܶ&*B|Y{ Ah|> ʣo:#K-V2a7C L ѱyݱ*j=md}rx|d#a*֍낉 ~Δ"5H֣}B(GyOyػ'5>dlrC7U_Q櫲.wы:QJ~6͢"udž|$ğ;~uB~fo < E'IkBOkf^ip "6RNy\s\L-EX }|qOP"3{(O߀{Z'q@9jBI4I݉+ pYi'KR`H,c۰鮋SU,q=~ˮD/J~ jV怟n1$ a/D 1/cc (!A |Ջiʾ**!ce0J]Љ  ] N8ۣI8/F:b,1`@ PB HIÅ8 栘AD2~|džI"z$p#Nj)&`IK4(B8 ةpO DTRM>UTU^ŚUV]~VXe͞EVZmn 2tv"তfMR-?⒣ #>VntIL8pMi՟3&IwrQS25& 3"^+%3/Tw߅7^y祷^{'f+@?&H ܫHcX$a%i4PkA4Sj')T#[j_4: :we`':ir6zdGY#`7h&hF:ianɩP,ٸlB! <8:͢/D+%<((IZgqΫ[}'Iy!j;oV(\,Uxh^|9]6d p{#\on-[tmTQt~y*ŗ=H@k 0O!e!S4"E8?9"x(;Ёp;wR@s@7j;0AԺ2 'd ;3@`>!$z>≱P)`% %{cș  C$K‚˃qh02AxX 6 :3ᣳBijh=pzpZL :sf6X". +TT4LB 䣏C/p5%5^\Wj? .؂1ȥpID.0JB˱,˥ʪ\I ȁlU$Ik 9 Jh'T˨ 0 譄.X̠'(Sq\12L@b.;6E([*1l<{ĉ'F1;,A` X0 0˘CňB9É ή2ȫ-):s Eĥ#dN1Έ(=rrMMNXΌlT/3Ͳ4=OutAF ψ(A7pϘ3؃X0Y]x\ `# 0PئJXXx,.@[;.LEh3e65{tBƼ@ݍYu^[6tm (NLeO53͊ M0pڂHo |:he}^_p9}_Tm3\[u۩`3^ G43A`[-άA^E'Xama@ap.W`]0^ ! &ax"}EE$p #X؈ʁ !~6HhLH 6bh=2%fD LЁP 5($͗$M53k[p22 QUVD53 SMNIPѬxe< 2- ) ,=xC Hp2aeZPc>_=3id[6'EWVv-g t '%> gNQx 6Ts m '*Zr#6//L(D}舞hMe1ga1{|66Ù 7'H LRA E`hpdi"<'x6h⚎3T@H ൴6H9D@$cȃ~p &xG@ <0 .c6E6`0aj|)T6' :l]lǁ e5elElX.V૨[>nۂ@Q uUl Q(=5mզ6[ ڮ@amQ@\hnsʀENm1([Da8U P]o&>H6.Ff"C<\,ު*Mp{hp qf SA4Άңol6ό4qF8#?rH Pm3 `)y4V x^ '[4vS6LT7h>֊DlfpԺ5elo@o&3rDJ$ utFK>??NO0E]ݢI_(pmSr`Z Wes '@ $W9_Hu\v(pr_l7fY,bu_7txsHTuvr%\QW?u?pRriUluc''?kWx>)}Nydǡ֝@{yÉ ĥ[vp|JFo'NuЮGp*ΕS}|y/PzgWB;wWE6 whޔZ'!8g󶶮z{szDQy;gvDuQmts dH {/y_P{g':0؂2!f|g GqpWgQJˁ6 |fw-o_orE/ښ/6_ O^eԀ_7`\pr@/QDIw»O }mۈ exVAg/sQGyp „13aA/0tP.  9ʢɔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m4&&RjTO-0K I! ==8A)(lT B+($đnB(g!5J) .E$@/MI'<?.AVGP,-PeZqJ]P]Lo7]GZv8Y5֕ iq-Z }ԉ8\B3#B8X # TJ[QL:9 zDsXחI^Qܭ$B]tuyPy'}' :(I*zUʷ7FZŘq` j E&M_bѨPjO&%cб+D"tQHy bաfpNJj %`*D$$((IN*Kj K%QVrA[yL`'$b!@XЎܩaF%J<1[|1kqO(S=Qs(tK&'2R.D҃2lNPЇ)n`3/;yBHSpPB #P\ Q%uL;KCvCdgz1;'\9aB]@Drwΰy&^8K>9[~|02`kczRw^P)E 5BtL=2gJyxS# mA5BO Tw4B.1{i03];nQ&PLA.tRcBu,X$P>QZB)D{l}| #( R>L8G JI<蜤 !Dd &VEVN +H  #M@i/09JF.! 1Dh`eIE|/_5TWު ptY`r ȏ.b !b 1$;DHA#y^#c!B0*!mGI3 ](wʕ.})Lcs9t*šNC!6#0!@xP_r?T:,D5*UTU I-OIy5) B25 MH#= q%A%X=Az0 4O%*R (Tls!'*TϹ& (U=J€#o=@BabKX^wձ6;[+6CLԮ6}L+RXBp.CG0凤V<ЃahH*slgD8 '=)PbpgύĬ!W%rwMIƔY0z߇80: g#$8}-$YJD01Q`wcHp$i%3N~rQ9$! )ǒ,)l0!8iI|a3_HV_bO f- @HGD6e( pN0:IB (AVPB ׂ/R.@?p_ \I﫯?8҈sa%o?Xb ,p eI!{@]@xA}SJhd|_!WJ_MOIL1_N`!@0K4tQ!` xvA]hu ]V<' @@ @Li`Q`K |  {#4F4N#M@hCa!5v723~8#9 v]Dٔ9;.޽<#=cu we#7#@c!Ad$B&B.dHCcCVE^$FfFn$}A,Ghc>#GI$JJ&d)>#0L$M֤Mޤ&A@E|L>$PP%QetexEQ>%TFTN%U: &C^UrNTW~%XX%QHE Y[%\T"C"4\%__Bd G&b&b.&c# [d66e^&fffZ,)%W)?n&ii&jnYbe9ejƦl&mf0't#E ].J0Fvn'wvid&qB"'zyrw{'|BNg@(Vr@ħ(((!dFh(V^S0T\Bhb(hMU&I((nU@~^ i Xh&.{Z#ZEd%)V^)s>VEu$'LL%!i$DȩR"„"AAD$AjL)DNB:**ʤ>'T D$'$ \K$ $kF A>kJ+E,.ZDiJ(tT(0A+hDīu@^D+aAKNfJT J,@n+Rŷ&^’d, lfG>ieZPLAK kDB\JHA -$mP$ bE@T@`bM"h($7Bmx>DH@4.fV/.U䆯#&/8hIf.D~.IJ>'oREBdw(Tt@,U(O&@RH(h)%@`) wmcE piR/ 3}*Z@@JJK€AT$(p0^GWnO<\g aR8<TCh- qO@08W08@/(32ZU8@SŽ^'@`ツ1q(2r"#; [E!# ײ-b1V( C'D"جR)K|E$EPNC@D4W@\s6Dq+^VEpT9wr"o(V%UDuYEDNRU/#U$h2E3CC84DDBOE???[+S>-4I#TrU D! pDK1)ƀM۴1_D '\,IL 5O'sPQ?I(L5خ@<duVK0Rgr;+;p[E@JojҲ*@3U<2YE1TE5ȳU0\OE=uTSuUf6U[(^sZsD[4eW%@6fEitJqNH^'KvRs0N84tP ;o@62v~&Ȑ@8[ṶmJdwL(7G0E7GF[yv¶r{sE6LH}j?F( THJwPpU0@$N,@\J(ܞ[;7@oՒnG4=ӭUX5c2&8?ymAC0x>xO _C]xx[#9z/9zg4r1c9nyZ0 7^J0FkN88G478Iu2ԪČ ?w׎yJyWx9G[2*yO:?C@62sn.GJgxf _DfK6s?zwo@LyȀk/J/v Č+h^@@-DzWo;m^z| /m6E{O(v"K0̖uU9C;G{UUyJ;du'E<៹cV@\ӹطk&ߏPSVI$?RU(tk DG+V=_ıB5GnX5zxN0U8K?U8w'@/@5 AN"QK i8jD Gć̸cÏ CNT 8/䙨@͚9>Y;tAmX&e(N*b8 sN0NV%L it:˷ ڜ;*ͭONiumaÇ'VqcǏ!G}Gc2gy矁Z衉.裑N"l卥Ob`:"[j(\!FkF&J[2QtH'0)fTIm*o𘠲F{qkrV9<s\9A]ыI%OdZہ`Z2j(zqgZwbƁf%f>%/~b"1_+#N%L9&lTo(xo_*HH70Zl5n fB(4Xd"ЮX"1< } ډ&X2S#MD !&T&h/p FXB,+!3]F1Dj 7B"s5\ u#`*ҰD1%IfP0AA2l##<@0`8@% ` DpKE-Ґ$Җ;t G$H@LYƒ1pU2dkYL0 L"8Jc6 +d'?QR)$(EIJSęДfeʲe?P5Ao. e!E1Qn(vRQHo5IQR-uKR0MqS=dZJE5QT.G5b"6UUUnU5WVe5iugu[WΕu]W}_X5aX.uc!YNe1YngAZю5iQZծuka[Ζmq[o\5q\.us]Ff w^~.<@`z`\LЩΗe80+IZ0BFOu!a"% ]"dw-^ET[PM 4 tqVb8!V xl,b/!<* 㔺&R+c8)R;(j2rP(d3mHr@'xͫ2Ybe"ay-~B ^}b 5EL$aJ:sjtK1K=objE("S] Kmo:m= ӇִR.4IWw&a9-U&z1'گklS"6<" 5=r%^ 8$ L"DSAZCkCϚ ֐?D <+E!N! _ H7rg& 辊",`DPLq'd`! paSÞxc*a_šƢh# F ˴pOIQOMۄ떹d: F-P%*@jƆ%`tc *c.! l^i,`Ba"y"NJro lb@Lj Mz #cW m&bN#jϋ/ ͶH4&  lN* b\n%p b J'C&"""Z[p%"P)&i*P% 1280l> 9O% uPP Ho-.TmBNc VbΤgB&O%`b/A  s r&)C % (  0bo%B;3i!J,"`"e7e &#frZ!>-@qZq-xAvkq|bLm G=BzF #A*$ $/F zl"%ׂ3'mb '{FH,)&%2P&40ʭ&VB& blg)NZ` !` !,8 p"DŽH,`uc - G8 h!B!N"^j`tL(,Y"){ 4t@&q`%"(") @d&+  Mqp1xOmvR('kb "(Y'; #* BpϚd%'r #خR-b= L21P. !S$xI6,/kl0##,B>@>HLoB1͈np ` 3N:×&8%ɂq2Btn`NJB |m23_^9?G99 9Ys@:3 GIUJCS%TDz @*biƒ>ߓ Д!kX,t6t"*!$`"&  ] ,!PJ0Ԫ45 &?t"R" B U@: 5)g&İ!G#TgBUW!ȭ` b`l!zte's'3IM5tSMhݘs1F+HZVd%+LK!"MMS"ε "q03!O] u"!2!\9LEDz[Fz%"YHWVU-C誵5LE#ZIOh1df!V%/b0R4V@*?K!(!" 6!$_t% p>,P!/"(` P =!bQR]b^bcCab`r@X"ygsJeu9c(X0&V{r`r'7)O Bd5f]#13\sff#k!-bjj _UbQl/G-bl m$!|!!>Pw"4@Ҽ1vk(|ɫq%ʷΗc)bX &7dM40!RU-|-cttWf1쐅.cpiBcl0\+xx MN7m07,"Dc{=P%RvĤ &…w= 373&,-}'GL~%C_9&)DB:x4@wڠ9PXhP3zSz8g"<\ wx|Wiwi;-1R65px%@nG{5nU aw*!G:;*EbX2bt4o&)wY1Ê38Z-\y5X%`vyc\3&L Gs渎]|! M6!{C4 y%! pZ ֑öL5;cE"ˆH?Y2`Ɲu0 rWgmX/yԖ9#w0AX5fy" r   24s4:)@@#zv Ù0ft}1aZUM) z!h%Owy{&b7 my Lͣ᧊y' @5N3|3@ F=3:c ]OhbT!dE38@J5:4b Lg>D$ Q0rZ%/fb^pf&pϜ.(~DwA*ٓ bC~"DT7]T œ߈ă0w-b"Ga+7t#+(6$29#9 : "PC"yn:S.CUo:Ƌa$_c[2ߏG{{"<)\ޟY[^@eS%9>bU*%&`n "9fob ĠB:|Q+ &Pvʕ%& (Sl@D IѣLTS>CQ(X 6رd˚=hD҂\!\ ~!7 Bg%3Ryׯ4X|˜'rxZ`siT~!v>kE4=Ӥ4@WD3~3QʝAbU$ImUթ`RDd͇I(؃# vw`x(pxAEqPi8<s NHa^an!'Caq5yA- FV[n)Eaj By($CSuFO{X @vn-Con p+ u EQ>ykb\6(kl@R! I!r2rw*`?P(NR>oZyRDW^2Br0q:&0IlT#CԶAnl(ۨF&mP ?,N \CJsđ=Dr|ඞI%R,u YKXDA lV*9 EnRĞʆl$d7l^`,Z(:]$QB ʤ(6䏆ZI---G\[Tm,+ Oi% \Į0 "pa0/d'd vЃ(8!wI1 # h U&_yaC8%", ć!1DK|4S"ɢԅxJuT)dmmxW9q\m[tЃ868?ƑerlHIp,C0ԝ^3**1A$oH["0CEpDV5@cb+J*ifA6CeVHk딜$@=>6l\2lE$)0-ZJwVIc& [>/xⰦ R(C?*8^HB#‰\=H'< aVQ0'{JTqmֲ(YyzC!:lH WVd C;{Jx<.,#kNȆ8&A B!6+2_1V̫HgWح$2Bҳ/70~P>"Y 9,Eq9kyTI4 +4H:畄#v4Hɒo43KT Y yLTSF\"QHB 3dpDWB ZЂL! }l$B 2 n\b W@ӛkk{ D8- i&/]I"0 `]W Z aڎH$]%` CrpfL(  գxq0`HЃ"GBx?K  0@".tIIa&ICmН!9R926s\UmX|6!#,HYR>,}Mp[F͖E-EHE7"y~Jx(uzTbA;ALԹ ҡVgE\ʄ $[eqYi\Wb{U/ >X`oz>ϏS Qs(⧣`;Y' YRiL{*yc(8UyiIQ7q p*ț^m 72ifW,q83h_xEfa)b̹۰gik˶m;H [{FyA>#LQ!g<۵ʦGJϸ/AӧL $%0<<[`с*z^\ôó8I M!C'-#!6jGVS)Jn +KۋpBGG\sy{OOV-Keh82ف;7lVѸUU iJk陋Y`T$zOQkt-ircfKG{# S:jLl:˫5yh#FDX9!;{ŕ{/DxG/V,FJ웲 yb 9zD?aZɳHJ)M*Ғ4 giUIrr6,sLulw u"w xUyi귰{,&Ke L +?a Y,ɢiѹd P{:KVLs鿫y]`Vqh< ,A ,ܰy=,jDv\[W*"MbN>\9paزaAf(Ţ+UeXN+`W[G j !-#MF Ig6O@ p_j|&̟Ρ4M<Ǿ0Z|,fṉ,xfqJjTݦ7mϘ!~ F(y$%-sMumV%@x7mȆl"kҢa3q= .U8g9= A- aM!9yo*6E8KcMѽMd=T--x7NV4R{mǍ!"5KFr@$LH=ъmؘӒa+fDfhA<,{ɔڳdC[`_LNoRl# 9 = eqDI,4pZm]LT \3n[K-Z7 B oqnpg! #c%J qFL /ު#8RDJO$:UZO@+KN <&UWdA*Y{ԒSĝw=,[$ݩ|$n͘@ҩ8R (qU*u l'`.ٺWw٭MRRZGZeAeSխ=E_[κ :;R` ) Ȯmiѝ 0}D B!mUN rFiRW y; QO$X%'/R Eehc<4$7B?떙 %!?%aVĝn9cԜOuoz6@8<\y:~^!6|-|b8\ ʪ@-W&y*9SU/.)0qS[ݭ%Xo*լJ!,>hm){wo׏tq#F9`t!46OsMf_\U<wh(Zm0"X` 0p8X₈ X##"@G p,#1G%p$qeeB̘cxXҌ8@L q$GPGV$*1o,>j0 xjESˌ0v"z<>*B*#8BpHJ2CK @STqE[tEcqFkF#hC$6 < HˆV㨵 YZ‰("K0ZprK:19J(I34>ڍ(A0-! ʓ+:'H00#4(͈ȷ PE0?- Ub6@Dm-9?Gધ[Gd4KYhvZjZlՖG#:6p+)3 2!)-2! -BH8+JHpьnBԄMM/6+(x7+ DUu??z~-M $2 #gz쒴G#;-VQ돥PmHYZ˷HJ RhZѶQm3u[Z:l6lV{mfKglKhebz8^`rx@aNK| $pxNV&4n?#J `pX`rρs/]KV̂*I" "w"9.N}z@r!g>*)z@:tďuGlJ cMݎPO$` x@&P4"{ԥ-&Y>REk i,Y$zlB8r3$_2R3P%i.kGf!%sa-3T b*nXaIؐn-GĐj6uF8Qsc8-ڱ!|kWE$%vgdE$ȠC:g0 s f;An`ZFLL b+ N'w}4br$RBEY{UKZ8`Bitc>ŵG:: [F;:Pf5yMlfS۔# tSAn1Nڐ!)5rL|n̘L`όGHbrpE\₇Ό`gݥV]DLȟLN$LY"X,I1;iO}S0yP$Y$5EH΂ K;&I:@n"]C(աzjJS#gmNQU$ &`a. HPQUHanJ=yBYȧ*`1d*fJژ8IAY!zJ g{[VmZa@ <g=z8pzcv,5잰Yy5 02@rLQk@ʰIp `:ْJ^p=a"VqM|j(fq]bxF$qm|X8q}c A&rysf8Ǚqs!{s9YЃ^fB'Zыf4?BFGZ~1O;iLgZӛV9iPW : rTR3ԫfu] "OZ֜`.g}k\Z\}=#&vkc'-DlhѦFjg[6m+M&w}bo[,ݚnxw1ES[7oa\x ~pl:Ӛ<\x-nx^\x=ba M~r\ bI`r\39š\;y՗\C'zэN^KgzӝrWSӭ~ug][z׽u]c'{~v]kg{v]s{~w]{{w^'| x'^g|xG^|-yg^|=yЇ^'0'Ქg}]-<4CrK^}Eڷ|qz'_lPWy|W>e? &pg?K>-L/~'Z/lqkGhK@[ha@ 4H@=:myL" t@  t-Kfk S@ܻ|TA@hA!BxAlAfAABkABzC%bA0'@ @* "4B„ _21D2\kaCIzq?0ĸCC<þHCCBDl@EG@h|36 A$DSdJl>Vl 0 yE\ %ZHEYEVWE;[[lC^{/+SƳFYBZG`FmAsjk?Cz>ǴD , !H2@(C)-D.*? ҁQxAj8HSxs 6uY9T?* "JP|S5b ZQTx)&U T($?U3\U^BL*Bc$eMf=Mtl4MUU@ ֆ*׊ֿmU,k Զ`W df-u-!VAW*i*Avub]Ã''OY9)(OxK/%Kـ$TR5q`PȔYYɈL/T?1ٲBx$+v{؍Ўؐ¬5٭]ن@W)ڣ} }V ْA5%R٠eu[P) \\iN`!0*@=݂H \]ٽ@BҼ]lsfڔ'CQQ@B)1t5@5ҝ@E]e]u]]s۽ ÙEM މL u̷]E ^TI„ܒUqB` [a\hZ%n=U!MD߂ ޔ5@,~ɆH \a[(=B%'g^$}P%yH$B"+[B;]Z-aaQha|aN"r~/%^bhbKuaᆘMcq"'1$5PmAv`"l-1b 5p+@(4U@,OP\Q&c "Ҕ8e cddbɥVNZތ^dMdST~] lf0U߽9I5P!_"Qff ؁l$CyFT哌Ƞ-Yepg dN  W~舦@N_ڕGs.;y \٠[`)aPPPb@P dphoꋞak >@i@iq[߾@ꕎ-6$ )Pk]NgxA\RFn6hFj?@vmÞĮ F&Vn8F9E6罡.fm_oplk9(\Wӊ`kF=.Vn6< qqq g爸bMoiL*oow] 'g1p@p' G-/q֮p)w@Vl/s./ !nfc sDa!p εH8Mw̓(wR /rr./NsΆq϶qMG`q Yce_cgx,`p'7VU s[u,u-r䋩HVhX>o抅sGC`e_8hP au&R_vX=U_sw@uYq\Ƌ9_?sHsN7Ayt,)őe*6rpunoU%ƒ"yV\+~qbwa/i?FzPO kO'o&!S08/*؝ć0o L`@( 5\CP`o8gGOPXʻY{1}@$xˏHf{(ǁWُxh"0~.4C0)^'w@ ~'zFè;&*q\s cCFImj{p~ ~A¨GA) 4!È/=`"ǎ= R$#$Nf6McsG'pL3ǐ'KL<-2 (~$pG1-2ѪSfϢMv-۶n'_I˗GV#s 1L>lwc @{~MLB'@GZ("D y`v`=dLq, ų@6{4V<))|MD ]aEg%`FCFCvIF5 (I:XILx"x8ҋa;(RTtR% A"DA=AON ` Vfy qȑX(ĀV#qeQ# yP'}I;(Ҍ(ҍ [uXY5I"F2rکjuUSHR6Eu%gD8Gګ bf<)_T,DHra^$@A,}6%{XKe,R5T J> \G+m 27] cT AL ]"CTC'6H>"1S)}ms4`VGaWD:M1_B#l25 IJA.+EtC7+I[G5*uB(HKT NxGkWc=TYZ9q4Q ^%x4ED4,yش~]&J9VMؐ'1eyI 6+ۮ'&e}זyEDH=zr* 6xѨGؤ<3`G08w k6 ~AF``)$~$@Q! ]C #AzCl) &଑c>;|0"*u[bD(Dp/obQ5%"GF2H0y(t"Hp$C8 ?2| [‡0"(H!mHꐇ>!ycyd:].~Q=1¤O"HDc:%ČhI RܲX" K\[#R811N-;gB?}jؾ81^$8 V偔# VXή/'7:j|pIض'˟hL-o[܉qqyjGث6k<=b%1"f͓4iQ[FZj4 Cdӊx 6}FbQR- M͢rĎ ('8VRX]K9RE6!#,K RӝRhN;ӵ7XMG:XuLjØj| p*ejQtfjbѩ;)7;w *vyjTς գ@$A-F98=vDX5@trIHGn8*zwNOh"t@=䡃-Q,I.v\|kI|كlT@"<#GP8:@H1?NH"9posM0NH#8LȁWH‹e#Z| 1ɱEbZ"!G'b T&L~ʉ2Vx<*9rlqaӖ gD9wHyd^ePv0.[Ђβ"ٝ*f^[t,T>υ 6ͶǤ&ݥ1Ch2&GN<7S@Q֣Tvrq$<mylQu7iA "]H#&0iڌmQ7mgqiM ?]d2b*x\W.-iijy-uDE7F*]OcXw# ocB DLMT `LZ(IOU]+iuaH$Z^|DtRe-ݱ4<}' >A`zV%W Q_=HLa @Ɗ]Ry_Ł  Z L GhD(\޹EyDDGP:(<O\E4y4Ge[[x[xN\Xt[zq\F$H0EʗYĻ 拶LA4@#a4JNHX5D"H M\ @ Uc9c:#Z\\5#"=@0#@ @cD$B*dZbXD5c6nc7~c8~D;#:#;cOcZc=ڣ5c]E"CI(yP$,E"FIŤHC>dB.d4Eh$Gz$Hv$V%UTR]RZ.@DG(mdG[NcaE FWT%휛]$B¨bE3D A(G L&uʼn礦AxaUedv)%bEHAf!=|]&fQYY vrgwzw wrygzF#jAgDq)\sDu,&G|f&Ĕ&%QT( mtzD'^(A8&|GLys (]E9v: zh^Fh r(h|Z׊E|iE ~ ZSy W\&DHd5(=]hg[JDœem$juz(P%NVvD8V¤j2j:~Vj=-bjfhQE`FD4&haVqN$bF!\pĤW{iHfAfZڬ& hGd$O ֑]jĴ[!y%rD"hjzgc34kzN!*J}ZEjqjZ`v̪Gh(Ol9hxZxl&i%fMf6^Ȣ #]EH o%EAkll)Œ,A"ǡ@"*׈)qIx%$kGJ~nHAKڄWł&>EP[&ej-Oߜ"+Iȫ:#** ZHts" Ԟ>tcRnZbnj+DZ'JbvPiD1_&nԙ(qh+l-OPObGhҚ'f,nGniGS-dl(o4>oLRoD\w|-,T%`aA'`U,,ZnME&N؅na0p50@&)L'G_"{YUr-H pp?D1og)aBz 1j5#بAo~RYHJN.Q&Df%F703oRzbY4CoQlb X#Cr$K$S߉)/\ea(îW]$ :oATqs^>@م|kSʉgkpƓEȗ#&9 4Vm%k6ss7{7J*n-qE u(wgqlq%0OaGUr(Y/-SE0ɠ,>m;3G-Un Ě4\^)r2J@38HtIIc"c*jiJ:(ZJEH+sĝ@-N4-OoFoNA:AMs|)42ϝSh0Z8y٭M<\ɢYuZZKJ*Mb,t0_)CEDOWͪ:eA5OsJ^&8Q w) sB1EC4UuY|57Dlz̝Ѳummvn;O!gzDo^T^+M{kNu̚zD*ssbVF'Stg/4_FS`pqAxO?OaPF,v x%5ZϴnZjmcrgvMS(AM.ZfIJ 4XF."7=TMJN76G\t>3Z2lstU``#y+_Z$3Ƹn\H8RxEpeRDG.L'Q,2cmDto6@[:9cHҹ[F'8+3z;_N\VGQjr^kZ[ؕH- ěQGCu;gwvޚSP6'Zp53{;+b v!b:g7ss[8AW-5:{U.<9Z<O6uĕYx*D>[733|;ß|{ttB,҉$U;ozsWY ]G뭄ΎVzAHC][YVGO.BӹB3)mw\(%vAaC<=8}/}KGv4EG=؜Ylg)ҷv)2xۼW䯭 G\ykD|G-ٵUOmO ~YqS|w[c\E'/[O;[|Ah6=z.[ &xړ{㗦;z)fcͫ~D<ΆOH4s*Hp~r;Ss[s+)~9bao{|h8OHɼK{9Vb%DQ 480 ,f†($#0D=89e'/c./6g< D:Ԡ6ujTSVzkULGlXcɖ5{mZkٶun\sֵ{/xih߅DG/uPƈ_% GʪxZ^W$/|2gĽGΘpU8eqtF#U:\22GSE̝B+;\'*D3 @IUQDdp}z6}|׷~ N\z)9`(2R$H7 p Cͬ 贗諌8H(DnȪ/jq(&8ѡGVH:|)C68 i)@;PޒO}6*LM JH98M$;hi]}_v㈀i8F qQ6h1)XA gzj@p-k]R, 9`@4iTɺ  B6 * `5V$=xBqpJZGfNK#z*!tp@DJ9-fg `7YB @8 {V&| wAWޥc{,iYK[ ${ŏn!}y tTGb7| "@(<`Q*YBZ9Zq p,=;:%D' QE43lr;_@#.* =  P>DR|iG uDY;J$Z VVN2z'HE;ZVu)/ ESMajWUd,ILs8# *V w]q/9$CL*&yӃ5LGR*JEc7,=]9/_2֮@aU6 (xj}; r\>O8$ٝ,OPY,OŮ*^ߪ-4 3,!aTX &Q&TOQxA:7(%oST{`ަ(y3rDzJ8DR ؗ . GW_UycyP ۂ$:r_` :X@0"`*b4 PD< jSp D;Sfq0+=3{*l70a\tX`## F` :0EqH1@1Eּ? T~ "Fᬃl֐1]lce">YlgOT~]mk_;:"lnx|]nsvɭn(-FuoExFP=pI:p?Co_> Wq!w(Lor1g\s`YFsA\ CIԩ^uh{ ?չ~aL[[/s 쵿qGkr=!k9w; m+c>]x?u g9|A^SkW}D%}.Jc_{^$IE{\g_|Uy4їц9%!g?}_U΃~nlgLQP&P0= P'+"p.?CPGKOSPW[_cPgkosPw{P P  P  P  P ǐ  P א PPQ %!qb&&$-7;1Q0q)D0 @UQ VQ;.`"Pُ?t''IKq)1_kP"Em?D qrq1 n"e)?Qr}%.e-8.)$` ` !b""""b"r-!2;ޥlPq8"CJҫ8" Mr,@zRb`$AH( @B''}(!'# *נ *'! *% '}((!`+Gaj,@,R*R,, ' 2*!r)!)"trP* &.+QX b>G/0&qS,ar*!30Q35! ^6)+ 0 "7IQVHM5r5 b 23+j6o )O57u302i6c'Ds *Jeq?, 04>+rR) ?is?8K6,45 tA_3B ; @'g?$3ȓ*TlD=%ё#г.& B>>Y*D3r C2A( tD! AISI%H'C#@SImAHIAtA H1ԌViG4\t**KdFFFCFD> CM45e@ B RdC' QIC7-u tP c@  bR1TC58PPSeuL "QIqQGQ'5R?bOS.X MeNٳX.s>vh(GG*4  r " 8Q-#T_LV3u* •Ǖ @u2:ʂ][U\/4J\ ]IQ]?BT[AN$֜ыFY>U>*xOO'[ Q[`'1RDg 62#޵fuCYeIfua U'0g3BH[ ^6f'aig^42bU㴍&cB%c#%gBN񃳎5[b[V`2K HQ !ʕ!#+m6a BH VhIQCG! 5Âp"qqijIo nk "2a=֖v>DV>| 5nbnO$!L b!>(!.wg6zAqxqK @j67|Tz;K WxmN-RwleilW>pwO~w*})>W,w 6?#i} z;7jy xUqɗz"q-u|(%#!~Hׂ~?"Y%l'7>WOX*4G MxKf] wV+ >n?)>_ A=wzT!5b#lmQiIكć1eј)Cx XL7B{øKy@ ُq @ ,xV~69kmeq7Y9)x^{ٗ{9@Aityǘ_"`vٖ}(z!Gy <:,~)G!jZ1^{"Osex#r ^Bx )&ƹa#_'λy)`GB۬[Ƹ#4: `Ŝ{c{`T&býx?B_R,a1#Jq+"ؗ 4}E7ؘ,8?=$@|EH I 2\gHܭi00"IV)< 3t"%ǭ k! 쐨;k\9d N۠z(hk?A@Ạ [yUow?-Iq 2]ӟhtU)iA9iZ,*1]3]O):1?B}G Q փp8ʶ}(G+3xAyxMy'[Si$2lfڣicٝb6J!%1OVR۲!ƒѕv*wY'QG{Suz@'HeM{,9U)SM(>5^o%ؓ;0AֈݻY@b%΍C*䩘} %{fhFEI_Υ)f>6FBZb@G1F]'=)iY5$b0Ե_WɂS )~@~ C^3::~|@٭é "kwG"a&ǝ'`G臩+@/= O}4J!&]p@tn*K\L$;&݄]`\ Xm6U2` 6U-U F HA~$@XȰ!I4p"Ijb" dq(Q&)ɲ˗0cʜI͛8sɳϟ@ J G*](O"IaJ$Daڈm %ʬca@Ylئʂqt`|P$muӶKm%DpJ_ @\p[Id6m/iRDn%Yg A8]Y`jɗ> [R L"჉<0 (r"<[TuRlhWO7<<@ B)Jّ2%l4J[bY0KJYY9hIT){*+ fiPY1i>MS:̚fv:d[HMR)ĥ:P]U>92M% t+H8璶f=X)uKN{zC_C JF%o8%c[nF/Ni3'8i6J؋@Z0gNs;cIp@dMɃfn&{>V]_ xf*Pa?}K5 Ɣ%3P8Y[l]iI b?35{,af-Z"uv;W͉ЀH%%wyHZt]:u=6ꩾ+m&-xIKܼzPKd x%7fb&Pyt͑OF* ts>Qz kMEd|!nma5{foE{FX9FEek_Vc'`z12qJ d{.O$J#·ouv{/Qhx&(NFcXo(169R&Y'EwmHj׷'F7rи؎Ty=H~X[imYэUq.Fzt2~hT6Vq>e8{'^_0vYN;L*_OfR|(bw&w];}'rdS%3rv/|B9DYF@n#[ȵMO#OQ2يDz8(fjXx[W@)p,1?ыq`|Qz=uy2yqlwm#l9M'7fWWGy. mFy0[#@2I%ѕ@6i]H3SQɣuV=uAfaAc$s@8Ƙ1k/a?%rb|U; 1və虞깞FO@VHCtEC$IPySjpe6כojhP$-Rn֕_@_ d4k%G1_"ܹ=ɒH+ٞ'>@:WAVmFIC [N!$PѣȕXjH11vNh?h{.>0vc|etq_ 1~I̧.|ۈ}Ymcl OqQnY1R\z;ObaLy `IF#xtz8-6-7cZ) }a;Nƣ :ܨ)2y]> uZp1 3[HxV!8vsz3k|X51ZgqJ"h݉Gp#"z.@'@ JE[K9uQsf9i+>u(ˡ8gY|DaiG>'Vīj)+W pBQ31Zvˀii+Hz,7\-} Jy m(~ۘڸ8KR[ >BK ˕Q*`|j w\u&TjηUx`5QB'?QEvW<^+oR#,(\71fl XeC3@ϧfb+SuuQY^h9LMݿJӛ]زm7.K凇.Pm\_K@}*#%W1DehԱ+!i}øm]2c]M0QjÌ; \I(= K< 4^44=|݅o%J j;\~ =+ >ϙF(N8 3!>Qbim,T|C.VWm4vvzNs 聾ў#NAE'Q*βy /بV]I΢>7= hu'Nk v14A'm@%AC.+ͳ~R9肾{H~g ĝ#x0vh`1O n,L\N#InnD@ιa/9@O ?yNY/\"=`U v "?sc#(*N53s  ,_68󙣆:@B?/ZDJL:1vR?T_D/QoZ\ڠb/fh6dnpZr_vxay~O~_gȳщT@_GE%_9b_#Buȱ_O@NEo/f_/&mo0P=@?_1J@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾW\uśW^}X`… FXbƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭][lڵmƝ[n޽}\pōG\r͝?]tխ_Ǟ]vݽ^x͟G^zݿ_|ש~0ΘX@&dA0³A@ -AB 7C?.$qAOD1EWdqH$1gFod ITG2H!o#с6FydIO5EJ+IJ'F@$Rzz4-,!K7߄3 ƅʼPt р 1C9%PCFB'"'JcF?4SM7mX(R Xh/I8eUW_͌XN T (OI5Xa%/_/t@GHl`I6f-Zk,LDE0J MtpQ3[ue]a@3!r-ԁ61Q{]F8=0_8bc'8c799dGcOF9eG3ye_9ZfoX8hL.C((@'Xx ڌh غ둊>:饭~`ZG8քA^nfa芜;ƹq' v<0=(6Q0i t)/t.H Effܠf!)u4sE'!LrG>^ٽM@ RG_soTz 1~'E7 "H\RG""`dq&NeI-2hI?`G z0F 3!#p 2!DE"Bd$@Ox2:HB* d*d @L0=0#B6֋ L@\z08 BE9kGЁB(7&U_nZUOW2"h(X 66XsEGS ]D*im=a"Hq_V3EOtH~.fA " y,TJb0$Z誤,CZ.@jX;܍14dH  \$UT+WQ2`Eu"Q!m /!/$wG1ȒU% : =^kMQ&6kӪNsGI]M$/B)]W*&B\ʖ}/@ A!G IX s&BbCQ!qZ -'H|a.wYay Q-#,'%D; ,7)ȋX!G[f@t@ldRAd!TBvS2p`QeNw:[5qC`@ϥNWB Lhk2!r6 b焴Z$NML(~B(`0̦lI ݴ=mX93N55*/Ah]g#]ANv-Wa{!QppŐEHdHqc! s9!8w$d5uNH3\ xB4@Bb>Y67MTқZC`]Y{ :nE2!OH^|mBSC#D?zߢBd2!L@gvl=$2 K#|B>Fݻr$´@^~+ۮ|u?#iݸC {!z7,bt]ݚ/S.iS#2AwD* z$ϩbgsz,V-v~ʳ!]s>k 9j /k='˹ >΃C$2ď`QX$7"ۨ Y%\L1+ hCÅ )|m1!k3C0k>k:14LHMÿr0 9,2B!YCZŐ8) A-BED["X0DP+J<Mtg<JE"4PFK3hCA 1WB=4‚ح$qlEh ]+IdD(IA[Ɓ$H8k:kl[dnZhEC:B G`rH8<'LwǶ뻅ȃD3fGz\drJȂɞ|< ZlՋ"TʥA-9 C1G<ō J0ʃXO !JI듈Gx+u||.T,eœdK˻|'hA2_Y QˊC 9,ǒJXˆE_$+E |8ɶ,~BDMO"Pd҈QAL|ʯcLB Xsˁ&cA^4 }B 6s2켍+EdEM=TLq\G 4)<̌_2N˂&,λNd OMPKXU9`PPP[$DZl =^͉W:EoKL/31BJ7tχGTО R!!"%BE2؟<ÔJr$ф(ɤOFZ5\K-|=pM~Ⱥdҗ0$:X=92; A%T @b.փ0ƈ`,=-ͼs, NlK(%$3̈Fdӷء>875T=퀅U$U [}`b7jMԁФpⷍHE BMM5X8kgm l)TM QQ8*?RScM-S,X|ER}5  KxЂUF`J(BF-X$XT3wcDGPJ7mPrV\mˋo'=4@LmU[]OwɕlL׏=X8Z$MڒS!8ҧE. e0SB B0 ZڨN՚W7rYMzQ0;MrDlEM]̃([=7ׁ@4\Zv=j,r\ע BSXER= aER`ؚڱ Ҳ R]ER ,`ڍ %[0!E݁?/KL};P"k ;Sֽ5Ym-¿5^8E;8E#sCLɍ8W,L3~ܗ=_$ߓ]$Xݱuݷ^nR 1]߅ GXB'K@;`L=MW1IG=Uϫ n0J*"܃/ʹYte:T5s5\%RTŒԱ} O Lb$ 8T֍  3VR*[u 4.0vFs#2x.5k3HʹYET4EaeLW:U'@aܑ2(UQ%M ';&BVb>X%$Z)ƈ1SXYFRZ>2]v 9 a>56 =@fn2]$U`{0LtZ#b+Y5rMMḱF5T7. R+J.G}M̑ƢmV6&z1JyY۱&iRl {Eeݾx聰We8=h$hh= 0fdΊ/SȊcb#Ƀ \$~ &ȁ e1pxDjH)d3ҾEYHJ꥾{*fIiDž/H'"DЁ6ȃ' #dvu|^-GK(")׊KSX>]K@VlKH݃P!-B-0F(-2P誕 -1NlȖllDmfl 10 &ŶEFlL1/ 6nfl8imVnmP= o~m&nQ(o-B4növnmnK 1 @Qdġ |"ma($LV ]*YKSW@gOZ=hCkT*ãkF X&R' i>,@0!ŀbrPc JS.,_:@RJ,r!Q8sps89bbO xZ1[e@x FZG>Dg?9O 9rr!pPi.V sCG|eB7Q޵t@JBt]W9u/9@6 qBDܴQ;+P*4 B"xQ(a$21<3L^6E3΁X=Q<4E}4dSKke7bG 4 $䉪Y+&DG ]5Ad "#EA)L%%mr'P/2)7Az'wA#T %7Dd2 @&/A8{uAt 50Y]@>Q.5vBK"<DQh=ዏ S )9AҪ 6d~R?J Z3M!ĺVS%t6OL!I-t#P3 ȁ+ XGX p tXI*yЂ;K2\ .(o 簟q^ 801|8ʨ598DHH ^`(LJ&G呁MxD.A8LH6<"lsN:2! 'CLVdTBE&Ē(X,l?ýhA&du aeA\_%s#*hnD)׃0_ 9A(q|9yE3|'<r3B;"Ġ[Lx ZtfH*g чѢ+hrؿ~7 JqNk+R y "_ֺj,Wo(Jf &?͘!*rg q AvEl7*&479Bpyǯ-b]l9~Swґ_'ozNGՄ C~G۸s?(FI@*?mĿ@g!ӝ L,Dߙ#¶̇|>!RH%$Le!_bJuש J,B]LI-`ʄ `Ay B(T``((D!@Id lFdq!@IheaAlAdALTx!Ƅ]ռ!~ٟZ9)]D^E0h$b"R\H !^-".A`UƌkDbd!|&:`D$ T"F BhDb Õ} lD)ޘ'(f[\=хvL`Djyzc1_EEq#:aacA#nX<y<Σe5=MD!h3VD3=c_ 9Õ~BC" IA)1I,A B j$pA2D&TC"B(vq@!l!^"ՍBAj@B!@'DK#cGcG&BdI6 %(D%eBGABFDScŁce8]eĄ`:#v>F| 0 Bp" eyD fL(B(GReŝ':>@9%(^)PvnG'f F`u^^Eq.f D~Dg&ŸbĝnD,,D#@psaE'Ab" i!hF|"MD"Bd G*r ubA)v!SZbD]<{V\qK$k|D@#zeNMx *~bi4Ax놄kNh ᇶJ*Lk袽kDprDƣWFDa6ᠲGؚF+Dīl*D#nQ#4@$ؖٞ@b!--~arM4trNXB P'GL.XDݚ-ڪ-Lcm d-劮-Vh t>.~-.%@rm&ْ | lmDPg@m Ξ/wm|P//z|H 0'/070!;_0go0UtwnOw 0 0 a 0 װ 0 01F!#117?1GO1W_1go1w11111DZ1ױ111  2!!2"'"/2#7#?2$G$O2%W%_2&g&oAX/'2))'z,+2,DzQ0,2..w1-_200sQ1'2/3330LQW3O35W5+&$\738a4w83:&((; ;-3=j4I@ڳ? 4?4AD|\V 48tC4k(BR4Fgt_J_msQd4PS2N$BK #TG_40E?D9P%M3M#PzMԴQRO)sQ@ "{asAuNRSuMU#d9[grHJ&!(X'X'SuL8@Ш54aW2NK5|_-[^u_6G4Q$M 6̳dov#v^Z=6^4gD pKS@Om ZEIKEmiוi߶甹D(6q?Q\\7l1EKW\uwtE7X7vp'"d87t7#Q$\Q87A РU5LPvQt78 83T7}O!QTI\wQd3bUL0\'xY/I1`籠S8 ӌFWِ{Hʪ,8;3ڏx#ʑHWsqEG緕[\DJxd{1Zy!yyŵoy׹ {Ź992ՍQz|c[Q|vz?*ctqQʚ;7@\ 8Hmzuױg\<¾",Ą'^'1< .f(^#Q#>&$+>s 2$h:/$L"6(L췕۫'+) 㩲Bt뻒4zp1'EhÁ-ˁ`88shC>T4=[h0Gx YdXꃒUka >E`Ɯ% `q(ib͢$Z_ŝ:WqGO)1\9N˂# cc\.B?\J"6`py! 4e0PG,R!ZfIP,x>p_jpP@DWHc08K~{$oGqo)|3K7D:!A NH>х$[D>bKDFEy" B,yhSHHA&3I@H+id#\I _ᐗx!E &. AxA :N+TL(G=}Y ZI(F/QC` 3I8Ae,Ɉ͔'!YAGA2zy $ț aeJy(-DD^'}vz2Z2[SΔ5)ui4G4BFFb&I)Cd P6U"C#Ab<5OcdKt>uM"De*;ոdK\)oH k`X.BPjă$ Y#dN5IR86^$*TWI:1$dWאX$,K4Ի&H6wZDIr‰BDrC>JԱյu]nI9 I9yZH65%Uy.d!Y#r]ݨ9bWHA"oRI&%`s2U$\"inTK<$w]%-A@Dنb%6Y]M=}Ic4HeR&f!fIIZiDaN;[U-B|VDg Ń3*$qI>w̜7$;(jdmvg9;Sd\̀a[V"Xf"I8 CdjB| /IF24V7) ?nBȜ."/4so$&r/<A0EPIƯZ|j2n"B~<.Z J~L!nF." HB4 " 0'%C$$ Rb%QQDp 0 'J"".N5l-$` "i$AY:]'C- \OrbK1"ϡ"/P Lp MQ1Ѱ -"6P$Vg/RtZ^og_ץ^g(0% Pf akoT1qYF,+ԯuЇ\,Qb  vp? 7mnPJkpk!|$ $n b B"%Q2%Ur%jjD!߰ZF-!ͳ"Ȝr?q%P+P!Epٴ FaY&_R$O"$)UBq jNbKYr-ٲ-r\rf!&,\.(#BF-)BkR$ rr %/+ NBghǾ1$,O-Q35Us5it˴J& sql  >g(%1!Q1!'%"X@!JPO#7c#b!yrY<3=ճrƯ|dSE& /ruK"E*|d18EB$s9w3*"s %3 "[9<F@M"X׳DMDQJϵ Dҏ( (s v-s >J@ێ a"PR%B"P">!BS'jHOAA"u C>t!NfSEbLJT`wgk1|Dµ$Q J"l]m(5uy&A?33lGR@H"k[m6ns0U!6~g!Jfu>gt,B@&PWO"Wh# K;trasj9"hvBc'2|$ ' .-Bp$6l;Yf\Tڊvwywۑn>5KvV{>@/`\'*OEPFuʆhW{ψe?egmđ%0qaOmn;v*u"`l'2ml#u|txB'\<"w8ˎWZz`7 TI\55nzjtpH$/.z  @}G"QɓJ  ~B G R8Z"n$ZLU,2v"vCK"q ֊ QnGA:b9Ek3: hp#ji=BuXd+*F5# )V(w/t "p/ )9#hVdm/$RyY낙* FRF}R#c(gA.r`"40Y;o炍uz77}i.hp=B:/B,fyC>}؁I"'^'FQ9N^Sm HB瑝M}@%'Dc/`q非)<*~9G陾IV~[^'՞(I= !݅>>'N$~Y^~U<>XQHB"Ġ ` ,!-G` H TL >_$D_vW_",_?4 I녽 T$~w$a_U";?C{GEfW =H|@-~=$1~Å:0:(0$%G"B=er ~8ʕ$%`2T#aB$ÒCY*:|zaѩTZ5֭\z 6رd˚=6ڵlۺ} 7+&t&7޽|}D!(NL` 9aCdi!ǵ^D1⏇j"Ĩd =)Uꧭa ib4NI[eg^07ܻ{>˛?.ۻS>a@z <檈WDp%}g" *_DHF"Ph![],wBE=dO+Tr)mZX]FTm'lsS**Ռmxێ]bT.dN> eRN^zuGeZG~R@9@Z VeUouvJ@^{%H+*!v(4l4B-6ud(TU)o d V4b\EfT"4rbKs6ߌsμ⺞> -Βǀ˪i,9pqUt90z5R[eG[$THݘP _'d(T#7mFt=eA=twB=$LU͑Qd8BuCPQ~Pg8֪z뮿qN{AM#]6,-@(^;+Jϯ@hvF;Yx1P#'> 8k/b}䌢RFɛJhz%WQ[Ẽ\1IB22f,j^ gӃ  YLeִu:(W$5+F6Vj( P*ʕ*1{ 2@!!h OS" lB*#`Q*EjY*U2A"RYVU|9aԉ.:v-q%֭.=Jz_QNiLM=O &4>L;1 ,Q ̲4#WQm膲s T}Z"l^ A*BfW.z/ k-r +G':gUQDЎ'evHۭ,\|R_ș`D&r l@!e:Դ \,9^0E |і" fJvBDl$pbeyt(: "&6JuW,%OyKrY`li%&d*R5V̶8 '!TNH<O =*As:L[Ԑ-SybG P"aЋ!0-B!b늴|M+WIWK[{U>g {Ăr+|tEf> yߧXpZ[.@Bay঩s' Z7=Tw> (@KXc HEa}sjuP_@Z` H@/q8G'CV8` /m p ֵP(ThXI uG؇qSx pnA@d;U;tx[`X: =ϥZ D ` FL@vx @q}bQsSu~zuxDw,Y'=o "8> o$Ux(f6*O?-v SEֈXg O;{UAE 0hXY %hH0 PWА$,ۆՏx:Аh@, RU&  I Ѧɑ o;k}r^Y(hvmaEI9WMW9q@axQ!IrzjOU@ ay"pz|1ᕲ+Xct,G,PS w4%)u&i p4m ɗS3v+4Ux|gmmvlvBpQ|Z1J٢==$a+qͤGJ]>> 19V菬V3|NW)gYu~LꞮ,ގM|aqQѾ ֨KuN oʼn _f g> Ln?gzV:N;Sgnwק=ޝ]3uQ:]f~ҕOuP^wZBz_^:fKW=jPon0UOayJpd?)ΫFSQWSw F :cNɯf[S;olW\!rkmfk4Ju448U.LC 2XD*:,ƍ906 RF& `dGrp2AٓeÒ%)@P`T"-@SU%>R*Aœu(Viծe[qΥ[]y_&\aĉ/S"̍0*e\>\TAs ń[+x6(хmԆ^m؅q@SCEz YBetVkvJlK{Öή B|QA3f{ϧ_}"$k鳂T#GqP2 6*h&`ptxc(@@qEڢn! E0oqzJ,rK.K0sL2t!*pqw|0B ·2h%B#BĈDL $q($JQ nTɴeI"J'R&#'{4KO!OjJ3{W`vXb5XdD5u;rvZjNkۂ`4DM" bͫ`Eh i; v_i =hRzIg"0_x#Up0\JuնD"Mm7m7xMve[vecyfkkYM.y~gRHV:/(LgJw$0*ڭ٭#!8/ChߊB9uzhVʃ$?Vf|p 7p \}(W>v rۂ<](i~n6F&K _6[CڼR@1t o1/0f V(xI+HRn[q꫷z~{b@R~!_:g6dCt?$*2~.Qg#[VM S l7=O ]\OYR=ߺwBP+da ]؟ɎVqRCEsA8 j9ÈҲço@ "84AF/\*bºN"%Dl +#_/cxGfIRuTpIpzbVk-0$M{ Q+7 T88M2iZC.&v}l>.`h BNONJA{+yX@33p٘yP븐><Ȩ([s.;HQh`LH93mA?@@ l?4@T 8s2óx GK ??4\A8*A8A . ,Q)dBp‡8-dȃ1[C.S(|{8<9ÖhAcpˁjɃ ' xR1r CjPXk,L 3(Ё>{@^;`&"$Ts0Z`Px&xκŒ 80@T#q@\JKtHÉp \568?:+BG±h+c fLĚAPlt"sHG qktvl Ǟ( G}l ~ mq='>*r<Ê[RzGGlH*3HpS, DǢPGhHxHȓOI9?s,pCf;5l;8XJ~ x6+C) K T BP 7hmxą((8`7`FXf%ȃ+ -|,d pj18Bp+ ɃTiOj !^{L:0dz|KqK]BH+$ Ϭ T)E:㓋[r@Vˊ˸8ŒӌMtǸ2J\ L%ʃϞOȲC ,7Lƚ(@܈ HlL 'k "EEOLGPN746 #O:)J[ I@\u 0+ މіQP0 Q0+=`,mMr$DuQr!,5- ҅+%R*clSNg 6(L]ςȢPID* rYO(8}K;ջd" L9 5 !J F ~'ȁumNR4i~ < meHu`_ ! ꦌ*\g~eb. wkقR6{z{N tg Fsfni~i`r fȺ&jCƼ[z.)=K\X &Mȫi.Pjjn1w\Vk1j6j䰢ynj yjyӭjȼ>f5miɞlʮlݚp9`Ի֎U ih+kepOA o@Z?VZvoh6;%j>M0=^ V+޼GSSqq r!$ОHзo.O -Œ*/oߖ拳&kl '!(/'p}O th)wq!?tDOtEߏ8p\P]HyJ'[#)'svAuTGqkGZqPqOq(PFsbxs莥(:E+fsMJHUuFޒvSco0[_tovpw$ȁq.M_N/OlrZWC r7wt7Yszvpggfv6t{_ua@}r?wBzwoyPʥ&Q1qdrwbߦ&8/xطXA \4.u`34󥵋[J'zzMztew_zux1p{{pǃ88(/V35.4@qYn v&P|ʟ&{2\]\b%儧||lj1OӿQ|{~goXJ&7v#$Ӯ/G|. $L*q4꨽5%7G#69` "t@B(1⃅DX`x$2XĒ&& `#GDBTHILD&xH AaE6ES s`P 8@U7էCi֜x)l 2"q8LCL.T ߔAی1Mi46 ī 0y4 OHƝ[m;l4쨹/ @ _HقĜ ˎ?F2~` &maWBhFpʼnr̩A4(]vafyݍ'=ށwe3X7☣;أ?CY$e@ (J%шX!H~ue`OrBq@De%!ٓL:9(uM(e .y|ȧGMd\OvYJa&b\yCjZ%o)ҜYПyK*i3A٫["˞Tj!G!HRj )mƅɀ: } DNۦCZ -Bj箙g]A*Ѷ"- طNGi{ƯBn+;@ *n2t1۲/3\7# g+9 TAt{}{OD\y,atp Ֆ" ءu ]5nX_Dl~{\_ZɵDvDg[C*Cix@裓^駣ښ< 9A<x}u* ;k8y.֞)Dn&cqX//`6Jߣ? \kO~Dϛɀaz^ǽ}i{Df~u +h b0D]rPt `(@ 8`C!I W"H  2],dj "@`@rXExpFlA&iҗF]팸Eb}C^}CS} VWK%/t=1u+9F)-.s'}}!;;_dƗ$VH%#Ry| Mm>>:P#RsP3~?dy_I/oC?.ƄJ24=-@]QzgkLmK?p9s1.v֗!'_ mPE]\-DIMĶ b Q AaEJ5u^*!`` yHCL%ٖ`9AD½ N!9Q0A@0x1ҥEaz|ImE#@  aaD]ya֡-}aaz=ǕxrӸ!DLCBb$TC$Dǥ *Z x8"Jb)buOE!;MM!z"~"b b."rS-$A&` A"B#b5Zq)⍂%,,[D\:c5Ҕ'<Σ%<#<#H `CM2##IDb?jU\DNDRX$DrL PA6(BZ.~K'RmLbIeF%3Lf fFf^KSqC DD&AC"CX(fTLIfF&3DVBZdbkVj^j&KlTnDD|yHSJDgFĵg!̤tftfSXf$ȦI`@Fbt'E~na'EjD5>DBe((Heg,.%|ni=L΁IjF*RdZXZcG_H4j)c}IO%$f'aXªjDxDX!AjB#%AlAA &jv>2( f$6+F A|`*"D#xA죬llbnBs* [jj+jમ 6빖D*B뺶D8l+D*"R|j}C2@Q"(:uLIlF`|RJR$>mNx"DN$%8J'tm^Z؊ӒCBզ&Ą'TMR$LD(NZ-JD!RIPmb֖v-J6b.`pm2*Dz!l.`JN$ЭݮnFD$š٦fJGMOyN!t\R1A)SiRiNN$_R$:N"DmDrxآ.mn]RdB/N$0.E>-G-DxA$/DoآnvmNA׊+;mCN$"^L~ A%9 $BH!4@<n @ @h)uRuNO$ _  (~Fp_1m0D \1onך@D Dj@خ@D CpמD<αCqؾ1Dlrv2oI(0S:!!?(AqR~L˾ :qZǐDezLfr19oFzI,3E6`2DްF.f'G^D2\2?m:@D"2r:# pns^FZ ^xsȒ5+BsغCL$׮,8b[$J\D{(TrhxL&8(0CtKCoD#~&&AD2E@ZBx$WDRC8@Qd-mRd%?gdwowgLr5GRw?A\/0t ;>tnLcYHPi·69uFwI8EƸ43856<0%<'xxFr_&a8D0;W C&L,O$#0x)DDo yS8xg$ӣ F|'>/CL:CKDlP`(4\8 <8YDzFoo DIW>>gdB׷{7E>: #N;퇭4zᄌS;{>NR⏾ך~VvOd_}շ2DQpaBtbD9$D1">0v8Q#B "†YQHbtPȒ`Ƀ'!Lr`p\xT%-H TtӢSVDxq˄0 MHV\LH҄ zE6bȃ#ֵ{o^{p` 6|qbŋ7vrdɓ)W|U:j>ZlH;xriצȰg^y>Я؃d Ë́SLJA,>7DԪW>zucT~yPa_ƜPA_08 <\|%BP脎.L(﩯0„23 !(kz!*Ρj#)!"DUS\h`HǶˇz< /2*\6|8圓:YvM97؝\h kv'D?':j~9<-B b! :,>!0:gUQSH,!0_D0"Y@ 0_&6 L!h (DF@!>{.<=|ρ~Y|?BX9Q Bdz!j u5-=IQu!V})>"P cP%#8-/Vq\-c L"v+c<@xe}"R2QBWp܂KՃԋ ][R~l_S/1Md:Rr+RX0ŇH#+K v5=,)X9|A< Zfs ,N,V>ѕtα#׽$d @!PAاvA$ >  H%+`0/_0e҈9tAZ_ `/]X ֘?sa(N }O>D< "(ݯNѫ^">ozW0MKKh20pmGTip\]3iVFd`ǣpf Ηsg?Ёf{)ZshF?ґ)>!tӡI]j;@=%jUpu2kZ׹yl]lcF3a7і]mvmm]nsVnw]o{o ^p Wp?)^q_9q!I^r)WYr1i^sq!6sڠsiC]r?NC.uAYͺwJ T=}qnt'˱k]| /! P(]0ӝa @6Zw`}xĿ`Ey鮃2ۃAO@z Z@_Hm=7 ,!p} "B鎃'=_ 0Dt{%8x|t};@A=~ݽr"֏ *>a j@@ p 0f#N/ApNS bOSP?"b礆=@J AnZnV0 A p O!'Rqr%n'14ur!#3'2]&e&2?b..3Sv0{SQ"@8͠! kp0&@^#z0& 2"np|~%" |P7/<=#< 0-3Js7,BNNȔv1@,-O0=BA xoD!b;B.C>/3+)/ r` @Gs@4It??r H"7T88! % ܴ$9 :MT pMr"вYpD.&#AI3WF"GF=!PoF< OoItPP!KC04"&o 3<*SGQ#& :>DSR):o4A{&k\h5l<%pSc/VGaTH`P A: ,`ϱ ?4`"5Y{5EQIU/W"Ob\eSC!3<!bS'p"R#*X)5cG6uce"@TxXW'r"VX ]gdUT-PSf"RavP6*e?bGk Tȸ6I;">W4 _T_N@8 Mna1@ 4#2jB]Ur: "Vr^U :_Y!5R{b~!YS6F:͘ r0-)V;V"/#.6QE(7vW';%V@ diau 99nX3c>dGCV(`ZMX7!#9m8"m#e{="xN#b  rL:j",`# LQx@%a!B@X-ײd/!"h;/"68O bSQy:%Z~~)АGWEQ8B})}%"{NX?rhU%x:M~EGozu+Sݕ["fS osn Vs!LڠQZX!:~+XvA!Fښq'@ w `aY9No " /)#h`"Q6h9":΀QU Zc#v%I "[5o:k%uzUZ# biɵrCWB¶Vi"%Z!Gw b`^w"K[c`({ !'↋{_#b` "Q`/"ێG K#n b똠r]| HWdۻdO_ƑYq"PHN|n( ":! °ou|#귵!6u}PS.#Z3@Odts."Հ7}ҵTwz˩\".Y) 0Y;y^KGᨭ ѵ m!Z]q[ڙ=<kٟ%0"޽]/t};TpT"LP"@ [/#W bz#@;{}mU!fTk~~DaeZM6߻ h'" dTY58"hy!fq2#+&unv8*|P`=]pTjG`:r-Y灡P < VWĮPG|V/|?<Ƴz'H<6Y1ۀh& 6F('!RqrV@P7%BQ8e9ONOR-II7v)bf9ĝ`GRs<'Pt cu>^ь5ޘ#A)QAj$=i[p-7PiXp8dBe Cp:B U&٦hUVwV4BJxXy6V\R~mP(무j뭸뮼kJ(BEI*6PF>ȞVyBaR|1jmn B-|YҵMPbbAfd~Pk pɘUo DAeHHfpu(+Á>`|/Ib-E=/(.Ì@*PG-TWmX{%X%@]A@X@]-TmD31C&Dxw{+U=Un A*X,kU)w1 @A({\ @o X-Рc|-X ͣ``O^ UE/l~d.oEM:V > ξ}+4Y HBmkOd aPf06YoÉ"!LLDp$"B"+"WL >$ @ aC!VV8 $3H @E*>^E\W6 L5kH`QUBbxa@h2 #R&"PiZw=-i#9WU I@AAD~ #)HFs@Rǂ d;I^̟GJ {3.w^ h PP %~$@ܠ κ wT1Lx1Hr@]Y$#-( + 8RZ+L<ᝈ*@0$\9»&=CZ>8Hq O4]fC~FY(A0f\|:〓8DIF n6)Az~LCI~tg D6`BD@ C&lVRaԙBSC>zb-_V;rN"0:0"I Q h ho j3nHR+e5"! qMyy~dV$*ƅwazP{%q"mmo;ƭP C̸JXиޕqPtO>Hbԍ<xoZBWnӪ3Mה< 3 ͦN EmNKxy,&ָεwk(\g{|| qk,iUVn)|"N? w [+A|{rZ}87H8z@cK%pqnb&SwW& Y:Pn/Dx./H&5겍쨍xgW"`wc%8+~i`3"+fbIbOS(!1V9 F h |dHB!*,ْ v6.)lTH : !EEOnyX*q(`.%ɔTYVyN1 J./N4|'aoflZr|ٗ~XZIlPp/h)Y㸔v5 eqID\9~@*Uɚ g5rt☪ &4! 3PIRR'" ٙ-ЙI~8P pAɝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:Zzک:Zzڪ:Zzګ:ZzȚʺڬ:Z yں?a -p(٭蚮*5m]ֹ:+1T گ "Wv2W; -x9cnc [{9cƯ";AY!1l'S$۲.kj/{8ۯWnGB;$%́f%D۴N ):swO{XK!FVd[ P;Bdl۶*3z V*v{ P:IcB*3ɷf+}1ȸ;*3iKLSDٹ[{IVKkr*mPp{fG0 l'|IS9ʻaz@B*;&B-F2M:I6R?*f.i2l6B:F>KDOHG@PITMVP[U_Xc\f`jdnhmgsmwqyt{v~y}׃uي}؆yUj}ڎۑݕݘߝࠕᤛ㨞Ç˗Ȑ䬤洬黴꿸ѣÖŚǝȟɡ̦ΩѮӲնֹټھ»ԩ۷޽A H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞Ma@sͻӌBm?Qy@H@ %zp$'@zL.ӫ_R # HI a!0K,a<@.EQ|#QR  #HTViXc D[>9`{  c#$Ɍ&)Jɓ$J$4:埀*蠄* v$I{ r(-,4"dGStN9Jjꩨ#60* DEq>y(Q}dդf6F=~ (K#^R hg=ڑ+Cw3GšU,:.$3^G#u9 &H Z#+2e*C!|2e#T -r;1UL$=) `jbH^HL_9xD !S/ԐGCy4OM F hhx̣gGR5Dv Xo0Ii :>ѱ$XߨI$> :=YF,a` (%A$I 9;[DFr"~`Eē_-|FJ4IhҒ !bpCPbB29)6YDi('E5GC>ED"PD>1q @%G-D}^Ad%&]"JBҿm"tT 2=5]%X&qJ$(hV_0iz|5x"t"C.Q!nCB5 U%XBA{ĭ F)>&Ӯzy'x*BA')`锘'ʤ ᗣdy0#j%_1MbOW>U 8rMp)A?-RYA!kTV+A1LIf'ZE2gͭnw>)A%W*+>m&X0Dj(hńWDVes{\ޚ-V;Vt4W 8jBۡ$dD)&F:,e'YO1y^|BxS \ ]Z ̓tvTexdaH79 b(Gͤȍ Tbx@e{)"j>) 0I @p!BLet!J&K#,/=N<)xγusܐg%5 ;U/ @#0Ж.| vcl޳W*I4~NR-W"4W;)(btD)&EPŢd25m @9&s͐\iMHZ_wVn6Hi]cfȏqDI1xD U`pG.Hh5{qV\Go-!"RվD*0D-柰G)Ha 6Tj^IPy]$!rV!V%$-rX<'/ROmX{$g @GϻޥehJ2أ"wgЎ!8v* ){/ N KCJLWz,%@4ZM['ń='<)=IHߡC_ljy%/]BCϔUBx{W4Bͣ{~V ?FAuE0vyJB|{7e#z&Vo0v=kG&U"a`# pvh&7 r|€X4+>z4|vAy&2VG 7h.cV(*G#x4'߷@ts!?wRA8[$~=7=H G@4xb|/c7%Ah#w9Dчp`2x2' tJ'O5p!S(X#f%^XeXY;A s#u7rm4&j$ TIӉ!e4|5?am3U P#(H# @ @kO"gQ<x`PX0up(9qx`ɐِ Y41`)y6ZewjtOR^9X o7KKBEx]{PSIaS{E!v#! c1 :sH^KklH Fxm_a{Xy%t pZV٘97əiIb`99ɘ陋y5IIi&iq>] q<q Q@Auܙ+C\!1{H{1!uY~Q[E#w|IJ&"Y JP:X gpc?yX I(fQW18 0v`ٛѡ) "z&j+i%J5Ѣɣ0 Y>z( $Se3|i8+d9" `0("%W(Cjbrx Q/hP c3r$ {2!*d`]0'ZK8Ѫ4Aj6Ჹ )1ѫy$A';Hr_8+&984[J ٟ 'sr] ѓ+dHm`azxr3+{1Ore `S qQg6##0u`b6Z8Ѹ);5)˘k[qKd&1{D ҶQ(:# U : j8P9OFмjbהS'̈)խv{OQai&ΉdʃAI,;+{71Yp˪Kk  |%n zy:h~;vrq+[y9 \K#4̈bcԋ$O$S  8TcX$QH w;jPA {sC! 1 ƟQ@blJsqY!9 a \P ` 0]dPȐ,ɔPZ` 1NjǑ 7Aʊiʠʋ2 d^@@c\@ ɞ ʠ ʰ\|˃\ȇ ڼ ɳ ׌Λ;}\ ALa5+uC9";.Ş%P++`bE|m=e5)+ },V#.BVY.0 ӂ B|sJ <Ζ4dx1}.IjML)0`dй) !'YC bmdm 4 W Yԋ1ՑY7a׊נ׋׳pվI !X$־sݱN RM8؂=:ZՋ A΋iaIڅCPٚ=N%6Zm.YlQăZ᧿$GJUS/[M[ bx3fϠ`neģ+v\THmhX=1=`j]! _KEd$D`(J 9>KAD ymuPEٕ C0*,Nd@#%Y8 LE*=ؾ 15~JBDn 7[n^NZpaڑ!>`<mB $9`b3t1΍L5 m@+a!K"<9HUmA2{裲hHܔMMA'sK^ZDy A"4dT Q狙qa J=(`).Վ2ێ$P^B*.negnF  `jMI ybQ})Nh&Oq>;p [:O X?LEܵ}TnC,=ov%N+DZVbaֹ"adPɁb:ٵe(^q]))QnK:[}y{}?oOhN`sn mϽ;lsߡhja}߾KMBM<흗1Go6p4a(|B!`0Ҫ&?,F+AH8~I a@ P40P P"&TⰡ и|)'=b¾CW!VB.J,=\)@y?n>¤$9{ǓƒHKB(IH/С#!.:G #r R) sV:61sH$ġMF;p!$;І%:7,3ΆtNRq´MMӿB#֌J*$C"0*/R!T/J47OהsTPJ5 5T+iՠmРԓϥm6ni $m$_E&@h$s`a7_}ߺ0(`O{?aKr(/9~XP^Ƅr(KmYUz\ȟȋpu5BK6(K4U7!-Is8k?ZY̛m͡!!oGi\ ( )T={{()>Y!HkF4>)}5Jr=5_xgO(h*CYI\ִI;s> @d A}.gJҿO#d`w֜oZr "B8PM!8d[tfG6as$-;VX!LJidP+ b+N#Z4  N*IĐ3]$h7u`@8I;"µ] !t; (buᎠ8LBi$: E<&Yh Z$cXJP:t D)L#҆x(' !Gj=q5kHNЇ 8iQN C,0<MSVժW cBSӡČYȉ>z`Uh5#KAeCa6l%iawp% \M ed7?ȕ7}c} O8D8LtJςB F^9-vvUXBh*NH6@iIQQ<-t7eEm-h~+h4(*-&xC5 s*(]x@^LrcbJ_70xr 6;XqWY | ,:f$ix/iHT[Lu  F6"_-ʘFpa$I9Bw$,n)g] 1]*\ =:=dzۄL!eo}9H$8`CGKb`:YnP8\V$@Y4(ޫ0DSZDȦF}iX j2&iH[ѧB=ɤv &T,~)FJj$5m" Y6jې/HlBH@w8q g,K !Pf8μU pA3Ze ν5ɜPgDnyE>r;{[etPGC ғosnLļ@A/\ ,5bjޡZ.((PQPU_{5d$T.P~- =BZyք$4 /KXA?,I#,CE1/hYVn/!{G6I52xԶg(q\^sCgQ<"#"g-}n\;Ԥ hϮ>h9 ! d+iկg䜎|(rGa]^а0a!qX)-p<`+ kKh09P@ c 4쎷%cƪ7X@?=$h;۽==QZ᳎A辠 ?(s9x[{q#45 #Q{鳢{ȯ./0 QID:(= (7 k҈MmrEa=|1 {C dL|2@(2@@Ud4\TD[P7Ē2ȓx1[ė(BeR0"=8ˆDF~1G@)+/9)K ߉0)P z4 C)G҈{ }L:y ndɖ$V[hGė@{*x҃`-T0A=@Xm7q\lk?AċEQJh0F|*T==p2\,0u, IxpB(k\CALؾL@4t9ȥ DC@0ĥ+)L?9 2\1 X4D7ܗT^,,YԎi||IAChKʤK4«ŗK\ ؃g0A2C;\ naNr#ƕ7_dk=d &`KLs̱B)РP1K ] Z/lѥQQ>[H`R N:҈C5 M{- uC 5!헽͆8ѨPQI μ 3RJ%PĶ(>5T˓ dL(b>O,!\ XKĉr+kG\7-HT]C C oZc ,?+Jh;ՃO(p]P6`+׳"%uo1 A,HR8 j kVm- Y:8BpմCժV1@D`X*RDk@WupWBQ D(9hCG Pˤ)+H"\ӑ**;} 㼈`PΈ@hU8+X툏J TVIEZ5 ZbOńӎTڕ<2 P5FӸAh;I<(  ZOcQKh%:% 5H2V P(juuۄ\"M CO+\Ѵ\XD ŗH+$ /I,u Jً ,u]aM0;S T}ZX\9Ւݦe խm}^@^u_^FrRՎ`ۘD]VND(UPvZ$"5K\WKل̍0 \ 6-S\`Kεی)~C1#x` 0dݗXZ^(!.(= wmLYMa09F%<ڄ@(MTޒP{Y ƕ[Q%=ߗ-눱ߘI(S::bZ("@Tg=ֆHYd``/ aY!Ө 0Q^RF Kh(٥ьHȨx`Oape>XF#HxɗNdfR0hm]PCK;6t#l-O&9~MF PF=xn,P8̦d]S*^=gb4 Vk.0I ޕOh{@ƽEh`$H?(JP4 Xn/AXHŰ@Y^ KЂm4Ո.`/B)Fj`ql!+꠸} RH>ҘG@p&Yf+Τvm8aYX~fŘx[1hIM]ͣ 5&Z6Ƭqsv8˽F̮ߎ@̎*dh=H*)ޕ+l)SY^"Xwa_>V=)SuzRK9 &A[#LE3=L*qTF9kOM>BQY ɚRN9FإB+-/ <0|0 kT`]TڏjR0I[Wp^ 0ԱȂ)- ڔ6HR,ueS2K>$K5Q)MiR:1WoLrQ k5]{5a=6VE^ӗ6p0@ ,6X;Ժֻ7H fǎQڴQOaQ-pD'EYRR Q mjdyJ36HXݐE^6 ?<pδ^p|InG;P3h1;ur\ܗ MJqZP~OH/$Ŭ.C,a0a"<2թ,ZU;ͦ6"ncsl"!ƑinY%Cd /\݋*2C"\AdcM,9ӹv Ŧ%dn[d"]Ȑ^ZD&aE"WLJмp愘y[&A lJaL tb[H^G RlЂdA&;;>67i$~I+8 ,H[zeȟl)Όgheum+IČd FvHf6M\zK͐ AuD&֎$583Ue SUlйǯV] off7KC6HsMeJЙٳS$oQ$BeX"ġ񱓽f?;˸}aϴbj{j|/=VaKK$+sԂ؜6}6V:+:@yB~>"P_MJ ŷ??0m0܎W΀BudCNY3ᾙIgV>/z?|[HvBHᩄUA/1H.D1-}fY'47]US#4F4OVH$ՖX,WD& P8I6 IH-"~ܠ Ad#DSJ]x)XdWG2M( beN0ړ#~mH"N8NH$IddD|cAlWPR7N:8$BLVDMBFAPdf?2NE0U?^bBP $ ^'PAFpdH^ux4GBN$]֥]%m/aELW$N^_cW*`1|bCP8{\$0b=RE$G"|BU @1V۬?v#%ppgc|ctWPAo rz˭!Vm$mLUP&8'$]f%pff,@LkAt:'~~OAf_HBvc$gr ݞ &[A*B"!P7ru6PZw XgA$w'ƨԧ`[N|0gG,Q IdD(d`%'XVIg8(D()HE'HPYN@~ʼnF'`錾)ƩI~rΤ']B%[f$\fpecđ@NiBHQ^EM{)Re>$Z(*ƪI§FU@#]%4SbQPjJ|,H_9AabEffCL Q+ "K@U`#.y+M 8ʪ+ , $,@D&lWqRAzPƄ  S<@F,@m&Yc*C,y!b,ha#Z\P8" @l-A$@4@cHB8t"'LA%0@ƚlVH"ln|| V$(@,SL$@h>>PAZ Hm]PL< LAHA2 &"-b$HAd|,h&$.i/v~/////Ư/֯///00'/07?0GO0W_0go0w00 0 0 0 ǰ 0 װ 00011'/17?1GO1W_1go1w11111DZ1ױ111  2!!2"'"/2#7#?2$G$O2%W%'&k&&s%(2 )7AO2**2,Dz,2 AOr+2́'/,3c-@O s++* C4S1g-AOps+{sd|2LKxA@<s0A#D#33C'G/-@]f93Co2/;>XhBC2@8 P&DA3|RaE(ԸF?=ZTSDŽ1H3c`1cH#Kn|C'F HbS+F:jUWfպkW_;lYgѦUm[ojat ڕ!88%|BIedv(>-qSs82qʢ_!3jt2F8]qWׯVع簿j76M{svZ>>|n@OeQT U+y(!,^׋jjm46,K-*PR(K.?0P 9A QI,QnXiEZ/J(Bx8o*H#ԀL2)8 "j8j;~4r84Q·- נBkn,7Zs40͢JXILlL4q3t?4Iʋ >{ )<9ZFMҴ)NAa09LT":)DSi[qU]y_6V6FDz#Q? GC8Ƴȁ&Jx>2Q"wjAtȅnݔm\u*N4Eߊ5KWP-=ў SP%u$dk5} `F&dmAZ X_LYy矁Zc8*chZ>MG %h 1[$ys BU!%Yd"VA;v3HF3ҁO4큞"ho jq ϮOע(]Pp*,8.zOU~8z{J` >\ҰB;Y0Ӕj~tE&yh BmsŅ0$bBEN)D CK44.=VS!B}w,Wxgd@KS$‘!E!cCNDȀ< ; h@ߘ9Ĉ,# Hꏑt#!IIN2g=J,I2MQkZ.HZX;ȵ [ATƧAd0!dHPL2Ƹ>4I;lJ1iȁ8a"vK0BLZ"Ė,XID^Ɨ.;Cydn4"AYg"x1'(0Q/z%U`ͳm4iЂƲT'AK E.OtGAR%%ั+Ր3P8J0p V4T+͹' Bу0P;rO8h =*,`#02+ ,%C b"5,^ݥL:kjEyS{V U\%K=TO:mY֪^U!݈bjq X g+T"L5iQZ<+a27$@*NCjRnx@ 7f9;ȴB &&"AU#iPF d5D&0ITJcB5+/5܁l5 n{]P x*L{sdI/A{i]qT9@m:h`2.-Kރ*&.xS`ODY TTs Z4T푑d%/ɣpiض#.r#FK!M bUP D@X,8w/+IdW*/R+|VțE9DYЁ$ѪbKsjD&F; Ԟvm[j`V 5xQy w/:@M6le/D:J=LˈPfW0vŵa3[%uHg,x%>!q]a{#ޔ II[8{<|4Gҭhv7(Bi?\L5~!r8z(Ri'pޣ5f:T65BJ~kno\ȕ>{>Pg,'"2"o!&olˏ]n-nI.kO` 08=AWVbF-Tp⩓(d` l)Fv<|iܪbô뺯o~/BFIBo:Fo%O-N̻Тb4"*+0$>ؠ pLEѨ0+Ɛ* PoȍB!1%qD#,Q-aV, E!@!th#P*-}"a1/pql1AJ$ʣ( N#6\QnA!%Q,AbqO#,2!!oBR *(0/+b5m3K44O,SBj骂+A(,*?ҍ:}|.!dp09W67%,ܑ;4hSb:==᳴l%s-LAUqb$"sL!r hAU X" 6 pg>@b@Vb DQJfEQT3(XD )Ed BF[FkF9<DE HT,THY^TpttAl+v ?eP*&naG,j CLFUtMk7+4NC#tMg0+T Jy$tMONPGqR<Q5ꬔ O#`!tHS=SAUh&'bTۢ` :4^Cf"R@/C\F29e3q$;buxU`?4X/Y#Z=3bt4 +5M^6b ~8;xfZ+bub[$5I_-YQhQ$5-I85T!6b%vbE $,HB>\a)0F1"S*hD" 55JՓB|)ZeJb^cux8bV,v4fm!5|+)Bv*ڨ\p_bfG]= $)V+v4v)v4img3 ,eyo Ilbwp p"gt["IM^V Ayd#LS"ì)Z!gg#)j-o Ci#Nt+bH\buѶu_l΂vWaiuu\bb*wjBTj Fb?VVl suWg"t_vywb6vYw+uiR#Z 7~w~w%%;q-"b.#V>qbrM5e ./`v\`r17!J)N#7wwg/8'`d,BWXY_3Ղ\R#`vf@RxUY@]%'AF 5VX v+p@tX*X2d n sÆ7x7!- `n \ zm`~ $ ~ 09 829Ef& x`l؀4BvJ :yiE:/@*&ؠ2 ~y $.7䗃YY9^i9!p9uyx$oو 7=+!  :"pڠJk3Ϗh~ MF)*Z9b1zٖ?uDӠO=273mq-p0z,cy?0:zzpP9":zzl@ddm:麮:.z;{ ;{- )-1;5{9=A;E{IMQ;U{Y]a;e{imq;u{y};{;{;{;{;Ż?! -H[-C@;{-ۿC  $<|+ (a%J+ 4|bۿA5\Q<B `@“]? ` LF|9- !@$G\t\ŕ|{GCzI7#a" < VN  *| ;{| ݑ"a]~IKѯC0\W({\ 8><H @ȵ*@#E`L"[I9\ }4`5 'GG |ٯC|B@kE׹#>@G՜*AE#*^}#ǽ;5B `=wF؉ =~-kE ~#B@b p*T@`#Hݻ#:?>;" }W( @ `㻂@ ` o~ ~h*>A -ꧾ#Q i( B< @W~*HB}6bSa# \~C( ӏ|+w~#$!i| {5FA_LE*<#!?6=\]ȉ`#^eǯO?.f^ç'ǧ+ `5 (6MI?hR'M{ >"5@ :@:y枋n槓I4:T(QQ((4ѤLp:zAcA! _cwd$T9ST P7}D6ߌsS,ʅjr$0UIGk2IH'\=#_p6tG D-:|Tc!M}T#G@!L"=rJ$AXTFJXHH'tEe4@ry)%@ {p^;;Q (pKzIH5KP1E"ͶHHXķN_}gpWkM[=$O8','ͱ 5e b~;JM# AA<0^ U")Z*RgxP#x RB\d@1Bq@ӉV(y$*B2C%H`t.#N"$SIR&ql:2K#U $DMI7X PJPa$dpI":rH'\"#ɸX :bAAJ x3_$`qf2@&P?Ax0#L$bHe0;bIIo"怸g8eّ?|H-!xˇT#J\g!@ ,g!?Ѓ t EwJ<G?J$$:Hב3>X;85Ÿd$߬GD\z{1'@* JDbT0!`IEC"ER)S:*pUA~A9ǎ^eP#;NKP)!E)0svĤI&ie^];281_Ajİ:9b NLlGʲ5`gaEu)&k#͇u@#mGOV:=W sJJ78!J:KY ݃pw!E]ZR|I4$1-IHT1sb?!/.Rbz|rF$1@"5XɐFע?!erٰEf J;"0# >ĕ%aGŸ"R u# 4 C'ʷ?r{lJ.LIuKKKZ>ER+utKW!!EV*#1}Mׁ"y/Jbcxִ~I%}EbŎ?7>ɂ~<$`bLg_z)}=PjA\N"fbK(h R0IjY׹.&P$0rQ0qfF$1OAk5.FwjdH   dppC .q;dƧl[jƝO4Cs7)p$>I;dy 賔 Y.wSL+kjlWn=55W&,MJͽa۫l G7W=m ;F~U\Ï8ڎN~X'N떫1) I_vy:8">@O?'Qs=/_fV {F:sx- 5oOk$.Hϲ"~”A!]#k@pHu vSx2mF w&x#w!!Jb51?M!m h8f7z _Ql/2Z:!A炅2H6e:D<8??sç"7KXN;AG7S|Q(Mgl!p.!}f1-A~c~ R<xH׷;[*L?QB# p4%(\~.x6xh\a\IHb4h&ަ(NGLUbhS{4\WCz<{1`Rׇh2XXq1)1?fNČ#|]y8}chg8@*}H `0g^vwXIS]X}6O 7zVC|/1V.Q HJx%!qAaqĊ%39-xWM_:M=ً.!RI iD8!э8N.9%],@5Ɇ(3h vUqFP{QCi31F37q4_%ahr}(i_ 9ّ#Ui!$1ā1mL8a0dA g)9t\Q{jy%o E -f2F6GnG0se#TQ~ j%w* SNm%>ݸz9̟P _1'LA {$\+SV r\u-R/q]{ SQKYVJ0(+7pzKY QQ+1yaDdGAZ-Q H(P]=pm]ѰJqQ?R/]I G CN9$뼘nQT~H2鎱sWGAN܉ܮ8x6ޮ$5FY`~ouFf(NJ ) Kڈ(^q_w3Zw E%OI>%:2A 0ml);+4N2^? ~:65+KFq=f1Z 5YV:{q`u7Ȝ  A@b`Bz|Q`X#O|@d=6(@G$"=f8pILLR% 8E$IDNh'OSrA$qO%/TT$ю&"P pcO7'QIYfDaĉ/f`4L\×,^ٳ//q\HKS>yJڱl Lto'VG>5%ܠ'&\ DTis4rCzF@@͝_|аΠ+9hz[LN! JCK4 A$Ч&"EkƾXB (G "4=Xb7jTbq_k;B #:r( )# 2;hR&*l{;‰-92*#:i8 )"4(LM((OTr)DelF=ڊ6 SquW^{բ;:̃HȬ0H6.1b5 N#6(;RP%L>A!4_Uɿ:d,x`;MN9k@= cX!z9y{—_߶V$}8bUb~H\, Ԍxs-\܃x)qF4qhQ+n5guO$`#"I9믑)H *LSʃT(!(jx0(#cH°> 3<Č/(HDK18" ( $oj$$ eBH8p 0D 8 l* `SH!MY` V%6#8 I/}AP xE$ĊG @cT$h&[H AA`DdA{cH ((ALFR@D&R1Vxk^;%&!Ѓ H#c GsFMIJF F!%vӝac,gA L79J*Rx,*A> 2rA@LuR 'IESg=U2{S1$!OӟH zP&'AJ9Ě!H$Rԝ,G9W>TDVO,Yj0@& .&/!`Sl 6s7g`"*D +uH@A *90?x" rBdYtp@ͳdit$+P;F}dV Bӻ&VelCKO=LASBH&0eؒR!liUBM1b(T%im˘N WRRbHC@hVʈ;T5w/y*RфFqȳPWQAbI$wȂl)ڝ#8BVP$i_m5Q"]7S`VH[asep4|4݅;lZ@8T]J$nTs $BFH/ [LˤW zHr`X[5n>$c42:؎ XܷE"laVi:׾\B[{C4cm/Vg6q%2Bev҄LS$ GPh>O$L+1%;%=oZ @K 5|1#it@'wl`i{mRyAxbycB]}.տr\H7)mCdi@^b\|45#ocP ij>~Mt\!T<T@t@L|@ @ J(pS8Qy)ӽ[CcHAAR?n322c +%>"캾0P4p;?>A5I42$ȿ+[C?C@ DADB,D3)pX3TAII*`x) l\;R 9:B7eŎŽpdBQ< BusEX ðS;RR y@@ ? CFlFmFnFoTOؙbI?HtT_D[:])qRėGp2ը7.U/;>.ӯr3mɋT .ȈȅBY)N8N S攓NKPCGVmVnVo] FZLTI=x?)9_qOX*qˉXrz>Q}RRriU0Q{?dUbu]=5U+SP[f5 j]Ҥ7V]YmYO܃)1 "PIwbe.M7mҰ ۝jJOXܼǃ%T V&XQ+{ } A=4ϗ[[ )X2=t) RqlbLT)Pmo(Ơ<ęQL+WМrVX郈-]]'P@05[ط؅PV5߈+] jҕU\]^m^H]%P),vL 2ZR: }؁HM'T .c99^(Xz]hBҮU h݆$T:㻗ӶЌӺt}Zہ +` ``uaq@$`X$?X=@Qc0OMtY+Ueܻ&ԅTeJJX _M`:};m[S߀j`5^c6nc7>ա܃Uc5whКȒW^ >]5Z5X&s_0=2XU?*] [#eĶbdO:_Uc'9/+;7e_e`V^}$S6@)ݡD%hYX&5Z] T :٘X}UCeӃ`1I qvÃۍdXkN\4B&FKS8Y ZHMb^ -R-LEѓQ5AVB)#b{ fh(9Pf$Y$ha@a^y8sBt;jd`$N <%tOpΥXV@(ZMܨg]`.Q.g|FeF[ӎз% =ݙfH͘Zs_kkFy`Vf^e(@k\[dTB6J9(9"%Ph^VsT|7X3h<ݥh%Ό=T^{V$خ\xiZEkNn^nAD=]& J(W@ޕ]4 ȈJΉG> {13P)(ɵ2+LY>('MdiӭbRdp<&pO+v&;ٛSC&x ťen/q?qM?EDhM<1qy?.p0k<^VPd+; ;@};Z*&:8b ^Xo* *ۃN؞m y[=V&AkBRXi%OX,GqB/tC?\U w]BxJ|oi*?H$XQ̺8`s 0@9-],>FYorN0TQqqO$%hj#_P]e5_Y=;B OgcYQ%Cb>B>X%_CtywzwBD_ܼ-5vR 'XǍ[7 =Ӭx^^go(r( :sѣ.o'lu(wyOGI~DjF1RkdO IXQ *t(ѢF"Mt)S$(`@TbFa LQr `c=H$!]U``@)Pm L@4   3v'P*i]J6A Das  L-)4ΟC.}:֯cϮ};޿/バǣO~=Ï/>ϯ?X" 2ؠWAAXbrءKIX#+آ/3>X"'Ҙ;أ?C h#D"K2٤OBeFJYWb[r٥"QcYgosYaڙ{ZZ"4(BRZ)Zrک‡)ZKڪ:⚫ ic[l(l۬BR[brۭ߂[碛ۮ[⛯ۯ\# 3ܰCS\csܱ#\'+ܲ/3\7㜳;ܳ?C]G#K3ݴ}‡Rk2RSQ[spvM,k}gHoǽ|1'mݷј-H-x oݸ<#E~/b$"y2Mnln'qAAG#"59{;b.<첗3"-j7y p#$1aCOPC2}zgS÷~fo/6 ?2 #/6l{H#? "5@|pʷ I tPl80l#DB"&[y~3j0͇tC4a FHl-C'6 pKOR&l`$aO /UM p<a>AwȢ"!Ah"92l2c+ QxuQa[mU1AhTb7NA#9#d #@- фY06 rG= mِFmFkފ7&7'?a\4iʂI4+_a$<[z)D?HבIv@\iqB!Afqɵur)oEp%5潔61m r[\/"~C^(=lL?[W8&FT,c!!'ӏ_r&u%'}\n"w,?t!]M_DD^I  (\^!%|ܕ^^*P~ MHф5{O'ACT^iBWB4ܴ&e%,جY9,< VC<- MC 4~L!>i!M <Ah-3GHh:jMAAP+Va\y¶ne+Lq'&"iCjs:*P*(̢ۯ⫰.w؈'.lk1jCr>ěNxi`q }}L*mD,] پބ”ax$XcCc>3 §,J(Vj4˪DظB̪gi"m"=:MXm~6҆MӮ'4gI'I\1Dk:J6ѾkF}i(Cy%NlK„en,AH`.ɪڞ""(nf &A ⬓,n,I "-fÊ *6.'Drް">oN|)-D#ں=^6肂njH/~x.&n$I-Rl@KH4jl%i@SS.un]*>a-*bY(.C,B̜lD6.(:, 'C- kbm/v/~/u1LTD>hx./oC"oYZl4bS.slh :O/. 1qqNlILY2z0[.1 #`Ԧج0C V-C0 q(vpP|r^Lp- Ar\C0Jtr(r 7Q˜/#0B1rB30-D%i[ LHdQ(6APvq\O43?(@t.ڄ2(|Bp?D63D=C0jF Xr3D m>DBg/ /DFC-BjsJܲߞ I'<׳fN3=S MK,HtJȯ/’nRD{6F@4piD0BxsDErCJBo5I fHFKPk Tp%CPB,@__MuT$G^HI]vL| h5nZ+@eOLhVU`Cj?gDIHBq]7@v\awOn KI`wX5ZR1lf4DIJgV)'{KC|} ={Ih0l'n.%n<:w3vKI|R7JLK#lPೲ!]Wr>1jkPC|s/ۧB{Kt~QO23D7>sqBHSOuF~`D'SŃbC8A(Dӛ`} TB 0P )V\C,.@0A: P$fTSVzkV[v c2B), `HFed"O&-Ԥ7훅Zub7*~˃O#EO As5c.ҀHQdLKFv˂}CMg7n-OD: 8Y=DMM4w~|s}Nv!}-xۂgq8ae[{Z♐Wp&˛, 4Iȓ4hd"Ҋ FSHAtB 3 1bl!`L!/Y@+8Lñ@BlCҺHH;!-E|1Y N$"qȚO<2<̑J= Z ) %DNbjM 0ʢO(T\s tʀ>"(@0"=: Ii*` m:%r"S!J~ZT4}`ثf-cu$ ڜuK-끇ca kY,Mt-:([r rֵb6,ݴҠh|Ӣnf޲iYr!md~6p'j/br8_,rqf yJVy]Ӣ.mj+[$qڞ,߲٢5VcN i#}V2!&M!z,<"Vcw= HB%x P2u BvhNt}h%H>Cr @7(u " 0W*$U b`hs%(\q=Lws 9 \-t$q3G)^XoPXE "%_b%r2ѐ@ %j]SwP$>wZ 3i!9`Z8,Hĸ|d[W2&XD`s|"YDP/۰ .OKt2xoh b,h SDwِ-XRVB`l&t/DuQd0BȲ10'""%k C BX YHC.k\'ԯ"l^rt!q%m $t\G>5 $H O!ܟ,"R!{$VHYo,KP ,r !AYu 35 yf&CB у@0L%;02z:_}*3!vZ&[ UB:&A%(yX"JIx.#(H.Tq!vү'_:0B U4*»Ld. m9XDAEp2~:>L‡t jJZ$%mNDꮡ)3[V /YV6UGAѹvYv}OW%WxBvy#(JRQZwW᪙Q[ VP^MZ) n% [ސW (ATwALV jMdDAieon݁$$|sOxm=ٙ zd\;o\7!5eH9]@4s;㎶ @MY[tJ2Vd^z iXWX@7YD1UdrEl:/J/LK#p-<v :tx/ל:ا.v+7p4 X\OÀ~s+KA؁ n&AD_'"A14 g!~t'| x}%yʛ*Clj얯mI($0PP  :bnݮ PB|0 B vm!P(b@ =>%J*P`#y ^"o-" i +"-"p"#MQq+IBQ}EQ1+vK ">"ϐԬ0* @+&0I~& /*jD| 0Q bq%,&""ٍ! %И(-BUKrm@RR6(ATr%M&c&k&o'# l1*nKގ|P gy -*ӌqLe ~"J1 +":r"u q!*&p Q#- 1'/2gR//0&jP+' 2$I0,R '-"#= -2#p(Cb!!}% G*')O"1"$P P!n+"88lS99FG*- n !3!F; b2eB!Ram<;(;1R)Z3 Q1*ܭ#0G,:q3#sQ 4SAAzB!B+B/tX(a@ >Ts H"j: n3$ "Q*L s t*d4*hz"17BD&J.QB?+Q*OO"0#0QuHr+ 4EER!+Q%)AA""GTVgVkVoWWPF&,(=5^e*DNr" %#pTH !TR-bMSTUS+FU .K}NQB'Qs^^_U_ф I'D Ru!T\t "qEuw_)# Va23S.37t3k\+MUUcWu.oYAafkfogsB_7r t"D /= [U,TBh$Md3 q1dtd\iSv]YvD8-ZunVnnKq `s@>oHg1*h#i-o5hVI;mhb &RV*]gv rk`0\seqlWtv_vEӰ<wsWwww{WڶH-b#Dot5q+bqi DUzj" vPu!` Am+bzE5j"k|5=ttVE }u@?*[wX ؀K4zocb4w7`XhD\bQ N-ޓ"n-mv8-}aw*{w{؇L1 < M &TaSW_-=Msos +L+T86K6U IB;]c@B z؎ir {S-l+D 7!)س.v+4 I*b[6 BgQ׌ scu9]ou8W[ٕ_9k@uv:!ٜ8i-&0-j2؞+.")b'I{҅b-kxmg"aYǙ:wo} z!#Ɋ̈́x*\ž‹/"}6u-"7UK.3ٲ4ڣ9(AMX:Y$y AsR)ɗo[ #+s"'Wy!񙫢ϘMJc:&_p!%UUsZkE/xrOz"^k9r%[2X0 W*m0X =y:"ZGy;OY+Vv r:_OrtՆ} H!{Ip }&nWH@ε;Wp8&>{CW[*7hZZ!$i¨IXuڪ6)ZdzK+L;yei{?[z B(&\Ā#|!7߻#07\wG19XA׍ UY!T`H{*L'UUƵ|QvXڴQԂ94@+Q+6E% U::X8Ҽ A!*A\*F )M\7"Yכ eMh&Rsͫ;ox5#Puٴjq>`g;FOV=Adzg]ej)AOxɽ] ݓ LjvzI*>] = %"`Ή`*~ 3< 3\'QU?S+QBdhJ AuD6dI%ЂtaP*HVR>5`#Zx`IXJQ <@v[0 Q čFta R QKH@S(1`5XHamn @H,`_SHu PK hyKlRqyT55n-D 0iwQzqOFpF 'ҝ{9 z!jtAi~Bd005zQ6B(S9%IeuJ#8ABuh$FW(+.A TC*aջ ʼ+RQMe 7p']DJ ،wD-gQ42f^Z,7%31 dGMF5ejHhzF$+UGd+Fd(95ehpM矵jJEJ$8DABս#mM/D8(,'wHCx qM|%M.褗,%W@_n&ख$eys#|,$RtB|{U",K1i"muD>L]mBڏ{XO 1lo>qM'{GO J2!H 42̠-A l:1< R ) |BcP@Clƒ 9*q>HBlb!` v d(I^ΰ 5 ^r ) x̣X_HR=Ў$냍@rGNFdvl, QM ?XrV"^ִ#Rt֜i"(JHI M!L2J6&C,UF&2)$(HNXʐVbP")pRA"(Ј>UpRԜ@iy ZQE S ""H3'őT)?/bH`B1$"LCDH B  .I [1Ԧ @q!I_S T5弈bI2P-Jf"xG cV"?mڔs*Qk6J$|u[$YtTU[; |VԪŠ1ė_Bx $ Z^^%s+RۄE}{,[9vMzУIS[FtosVCmEӽ4W5eA@Jh$i?_gڼ/bq`G!AQr\!g$f"!/mh\︵'$b5ty(F'񌽷{`n2:!7x p)\+blh "hF!b4 IC dỹBa|DJ AܯB@X ȂE"Op{@(> +>Ͼ{< QV4RH;$CBۂƊ( Sb$quups€uSQy & Ȁ(/(- ؁zCRP%0!'x7h Q{ m`_"؀ HkW1Wdi8Sx7dXfxh5%ZWWq1BC} )ri8 Xh`52\!Ѓ9(917s@ȉ$(#!A$"9< 0t=1t[!t\AX`H$RPcB&j8XxȘ;†iv?wbNW7{6x(;H$p~灊.at %-r3Cm:X"S@`h {ZX Cd@= ِ=aцiao a]F A##b|xӍ!DbGX5n`A9YIuW@@ H"a$ҦV`{׶Ed$1m@5(8\ٕ^`kXh~phA  K2#ZiFq-sf"Z顔hV < D0{UHH9|Ym]yd8 a\ y[z)9Œ"q vbM іBYIr t):ɛ 5Л6nј'!2,X`h27 Y`O1a]&ĩUÚ驒9Y4ESHqGk?)8v %#)*刏2I!4|V3))ڹT ;@7 \;j\w4Z6z8ڕ)(=1QQRwDwZ@sƞF]1Ȝ&+.ud U-A8g*r);9zxza  gPQ7äYs&~ HiZJi9 Vj !q.jB,F7|\1&t4|ګ v;*zCe>*1]ȟMzZ5q((j֔FcexQ^(|0#گ@ԣEpM(iŬ=>1XND`8gW 1!6h%:sצ"+aZ/7$=ȥw]!,!@B;7!!1Ё:$9nb\JV{XVY5Fr\Ks>P@+ #̓gzcTAMTs#G:<22חYe @I3C{)=2L?, 1eL`b=b-F" ud6#B c#p"0B(w=c__*hd!k؅֒ f]d]#a ]#@ d7DҿXMq>ڮڰ ڪ1byThyZ>*or1*wEнz0ԍ$Hݩ yKۣ%1]mbE|ѝ:"!XG\=]:v sܽ6 s3MM!eA\ZKЮMvcQ<ͤ]~CA &C}@f! IHLZ >=4>n$I:.#CLnUANnV))\^P(:T[!NfNApr}Vdbl%s~>^~舞芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞ھ ~ۮ\ :g>Ͼ%z0i)NN?Z@SbL1 L T)@1RS(J{ 03/d% >YFa /2O3/ڒ`9Le?f i V ,CO(5.O@Oc.{P%}@PAHERA >QD-^@FJlyCI @3Qȍ|jK ,!1TPEETRM>UTU^ŚUV]~V؏ HD2U),LXVMɼ ,PWR!dDg%~@SH r&7'euZhҥMFZj֭]6cTЪeqĸv}wcߣ7bwo CBsPLrDCLE7G^zݿ_|f(0"~k5 .o,4Ψ(@{(>& 'B&& |$dE_1FgFS$X!x*p:Rη#Сx@$ijXY3$L3D3M5d͡(@ 1ȩh7z@7J˩ tРdP;: "SO?5TQG%u"Jb *+;oIOχT \u%т$@A2D617ZXk6[m[>d)Czu?ӭH'e׭|؁`Wci!,W$ ^faEJ=Уծ҅(WՊmXP*ڍl  XM#g:hW )h uVDnLe`)| PXR1fm߆;n`'"OΘiaHV> (ϢMOh  P%ň$0x *I`X`   ؼs)d h ?Xts>.WI I~TҲ7Rmj&|G?}$bhJha4BD` WD l"p9 \ )ȂEH„(%R!~\B?yzE(pc*rE((K4$&(a 2L ٙ8G:юw' *P}tۃ!HȒ=VԈL ɒj1D.;! JXFJCB( +*Fb%Bk$H& aNɆOYM`cJJj V) $tMd6_5NvӝD4gi,$֐GBRTgAPL2xIB8=rH\DXrOx3Vb ,zƒL e!IgA z!` ft0Bt"D2^R)4bEK%bfOVժWHT BHD2"B3Ɓ`O#H3)VWC,ʲLvR!֓2$'\@`zׯfA\Q?" Fl3Jb]ahq(i,C RjVu[ַ/YϻQ!Z!+d$uS؜^V p+M Up|2m% !D*y DA j%T- Eր (8Se,HvX VH,J I|oJ:,8`F+M`ӟzҗqcx诟vѥ Pܭ쑟:\'#9c>lH7"wtAD($5YMk ~DˉFsU8""7a|dցHv;4D@x)&isף?%8I08'#@h 5{bd:; `=wq; Di`1s7sy#J *R1$2Lp$ {@i@{A[@7ac (/3p! ©8'C !&HX"4!Dċ2[#,K B/H E-,&L2_`F@C7Tƻ#@xY$Pm*@z: ԱM4*`I5j$ HI%0犈ҬjVS ,VOHKmU' ͌ՍY+zʃJJH Va dĜMYK5L>iHg 6֕eٖ%{x r5WCY%h/s wTg!W=\uլG~eT-eWW 5v$*E4=+~XOH+}ښ$ |֋xV1YP۽[͉8YlKY\0۠m,GǕWXZTט [~ڐON|ҭ}{dJ3۬ӓzۍmքǘm.2?:$ʑx(f1)=u㇀DQf70@Gv9n 4͢Nߍ JZl8' LXX) $yO^~B0H8`&p U+`kR)Ѓ)0v?&BkF/|5Uvnor3pc]gve6JFͮZ#UnZXreZr(0Rqw"IHp` 24O:4s<#S$@X2 *Foq+,6VsBjLm r]e^% /Ą6x v2Tpxvl2?w#`Y*x'yx$)(iflt? ~l>٪,n&UI]dx>lo5R-G@-2ؚ_`Y2=!H5h3pwFm>IFhs` a wGIzm' T;ta*PI0 g0Hs+Y~U-#2<֜yW쓅$~u+/vǠ%h/NX pG*vOXKhsݯpo(hs?FЁhswH~Ȅ '鯊~p6 쯈_~W @A.E'0iNׁ?k@t „(I!) x! t`K>*$pɔLl@S<0Qe2IdR&*Q`Ŕ!Ldb4"MIu?MT0֏OHr"M649aZ d)iL=Z6N.l0Ċ3n'#%Py2ʏ7s1,<}NxF4j'*aA4섡1fն?z7ppPfZqOy1n:ڷÖ4H=Q0O%ip${0EP?R٩ %W e}~ %ARI%@wC2uZL}4D4S*=J4E NXua!`b\G^TJ$ؐH$L*JUaCׂn&wa9&4!*Ye&DMVgqLJa)n2'9}2&ݝ,Tgء%f*w>z)zii!Q!GKLG8}$ tRPL]^O*-1*P^$#[Za E+D>0b`*K@N+JKA/T<vkC{,FbCTt,IȄ MdCHh0 zA*% r,p1B(c1hDЛ]=>/U?&7迿 mmԹ9fyY`! SB 6d"E!Ѐ.!\yDN˜OP0H\X6Y SB (89TX*RW0(>*Gj,?A` dh!D(G(@@@J HGT0q (I@4|PI%1sIr}qhɏxOv&?R< *c)Yj>K%8wl. H104q*Q\cxL=;Mx_)@8L]E!^tQ7% 32\d"NT !ӹi:/ Od<4(7D!zODT$#A(&5!JEkÈ8 HgBʆ6(BT.*R0l"SѡBhEԨ HKzRȔ6NjPU)S_4%HRӪUhUߪ 6敓VzVVTlu*Ty:U +mZQ5akB*"llY KZzpRPblˏ>sRHQR02++(ZQ"(΢Lh/88ԋޖ5""cBD5 #t){aBв:?T76 2_|"|fE D PSL9(@,Hq_W%LhRy UaԀX%F 5L7V'P|7(h&7jY1~[;@M>q_ɸ 6uV|''#$B&9l`+q0%E\8/xÑiP,Ea1VH)yKwMSwLL&D2 7}M& U3~~vc 8&ĹU;CM:E(tX4&NӁwϝgݨq'gMnN_2NwKB@ov?:'0қf~;A!u&BL] '$g^~Ň0 8qDQ䃈}hB:c(㗹WY;AwEEh\)Va!1ftBݙMG,텠,A$@ MAD 8'`(@$A8@ ې &$,q' ^gP ~%LDAbQ!b0@>@( 0@ r% @4 IIFD!!MFU6՜ D #tF Y_\bB (4 ffF??dBp=P:I: JIIBAFG-"8~DR"IM G$H,CB$j8KAP7;%]֥]ec\1%_eJЁRe`2AD>B!#F(`:XbF gAk`cjeBDfrb.)^Dʠ$(bD9XB|f0_Bhop&UV$d,ONtbeeDj.%\h&B&-'pQ\rpjt&1$j)f"D&<&(0B@J\_'}֧}YD]'ey^R&p# aa4(h#$aJsIEAl(v>B`jaF(fH iBv{z ~Qh((dk_c((D0B(DRJ)zhhՌ*f'(4uƋℑb%dْ$7&uY\RƩ)~ [Ud^TffhB(lRX \"1((dEi%b,&f,*D4*fRb*FAĤ^)oꔪ*:b`)ĹgȧVlJ*DjjNF+FvE@+Ɔ๮k,q6Gp(G ̀4fDe&`$|&c* BY [D",I(i'#PAA\,edlh$Ē6ƽFkbAP+NF _IkNƚ"DɆiJFc+&wVVlfƶd'bAN*Ӳ+ْٖ"ٮ$m*ΫިB*Bpk%l&bE\N6-n.-BD#E.q.JzF-ꦤ/dlc\dobqzooӾͯh*>F+^+D#-U_1/ T 0|f ܶ֯Bh&x(7'B0.o?Vj20ڟfocp pX/Ɖ6/W@?+@'s=󬒄2+,6/q 26+#7'0xE@?Dr&F؎t94M״mHB Mc0OCN2&H- p1KtJFQp\S#FAFkkKR@U2f3ch(u2nqr*;*oGbҊAOZ3SD4rLc^4c7c%DAOH^>6f'ip6t|b'Ĕ*B -B|>\ `g>#Dfb['461)f6juA~1[ns)[I~'bszbFz/2'DѤtJ`7KFh6fdlwf{״4ɄN7}#N%IܷuX)Ӱ7(XW$rGGHV $xJl̮ A8 /8I\5uJ+-߅+Au:qXcO ܀]._eznzi."{8\[;D;sFR{;ID|ayX{|KBoxc6߉+O<۹a4+ݲSM}&g$x}]7rO O#=q@ghC{03V:G:ǵR>z”L3VbF3G=j>E @ؽmxBѣG?Q<(>θ4J 4Va?=? PAPƿ rKx_@|BӂEAgaI=F,⌦?hO6dI'!q"7?̸`ǘ'DK?Ya&b#9͓*%i&O eA"F;m(USFA Tj2h`{՜MqmɯaIl$Y{qq#,Wb`ȟA=tiӧQVukׯaǖ=vm۷qֽwo߿[35wOrD ?d;vРq7yf~9&o2_䓆=܍pGL&)yѻj?R& bh=:Pcp!+!&뇑dӄ6\!iƓR\1A0tA4Q#tx,!LHLS5l7S9;SO8sʅx=*Yn@ژ`7b@#XWW@p)PO^uky ?XGa@ P*~U?u@Pn[]x?$؜!R3Yh^PR-)B ! ir  n6T'`NXbCS'&u!)H@%.&@ T!I.pb!^h $Z@d'AF#c-vy"8NtT*Aہ7C Cr1ul%19@@NKY>(PŲƱ{LBēP 2Uq/Z>%.2O݆dZ\I܌HT2QbRH- 69pShE$EI ːB4 fBP8^[#O.}L$%x$Pfrh'OKҪ1qhF_ #kGH!$0Ÿوv'0EF\'z$ mi׼Jm ^HP⭩d('Jֱ#0(&}J_ofTC&p; 9()f!.c )g6p1⢠ ">M! ye0 hqZ HXEp\@]v95'pS !L,Cp ]`휞 =uD~ /+;'ޢ $?%|Km$W>yG=+2?_D`{SX vŽ!/H ~;coi5N PIR~MxWj{_#%Й~_ 1I/ 0ZJc'?$PTn՚'."bgvK5O. 8$,P ,/uLT"6P:$$O}($H0YGY"'F$NzI}h'Z5d(5 Pv |/vy@$,y! 0v"(oR0u^ ]U'jt&Po!ޯ$NvPP4+qI܉O bcy%R$ HP!5VQz!NR$Z{$^ZlPupp!fj" %p50VC!,v0Q #!q "$^Mvv!2vH.oG=$(! #sQU#zUoubt$.b o! b !`!!("/'AAG  e G!͍u @ Z $qu W' \y@&U''w2@B (.A) d'Sg,SgObU. Q cg+%A" 0 @> K"Qv< q!!eG%O" 3M.M@Hur A60ks$ZvV 4$nSvr$k! b $`rd&6]c5$i&yuJou*!.Kc}u!;" yhp4rs:20!@Ll*s!'6A36BQB 3EP@[ Gs yPg\7LM@c.F!˨yިgy!H0/ NtH> HB MH={$ D,S5b$rnuMUg="NWo!$$$$4u!UNqB.S S=SA/QD.@IK'PI ZC rFkPnZ/4xX'LYH-e3 4H!2!`LYg $v^ Y$dt%Su-RihrP^͕b]S]Y']+Uu"$$@A<$/u̴A)KWH"4T⬀JA"X Qb[ogK$!@vuZzZATuYhf[n1g3P*twPD.iZe fIbW@ !n=/jMI0Uu,H4AA!vjYMKP+alS'4u$"6,Hvuu.Aob3CA9IB$Z'Ls y$2eUVHeF `TmUtGj gmcc B4syu!vOζpZOv& MT#r`@bxa/"R*H0]$wnW'`XGo*L)pR7J bgWqAbc#$&%֙W4wZ[!"IB낥4cwL͘!V䶄/yys4مۖc؄>׆S{TUoIwp405()A9E7xM !XD"\XdegYsWeX{<$x5v$8$昸F y M!ys!!۴Mzby/naМA`vuLLX4:4H"t7N99k\91% Z9n9wZY病gkug#dbΧcG9vh,yS%bL 2uJʝ#'ِ陝YdxMB[bK/q9YB"!WV72?bH6:Xr٣wy}fṤ6t[-yBb16OBmu&"Җ<:͸Q#UGmU!YuT؞/)?C :4z48Iv9Qv!l!h^y  zYZZ>z:HZ66c!L./D{d{W;u`{M*sLQ/;=սAyBuZf'tZ7VuЈ;쑞t#R/؝0   z{ V j_"b|C#` taH\ VO` u/(A ` @ \4(! ^g5 5$! \/^Oɇ`6;4@ȗ`<\ŭ{<q `ʉh\eM:6IB{/6*r{(O] {qɻ2$oĘm:I[͖YGt(aoS"j"$׭¿%M!,UK9 ګ=74^4(=ܽ}{Z)ᘩͬeG>0$Шh+=e$]3N ϔ%~b u@nydPu  eK >ⱍ{D\^/B{` S $#~Yߓ^ Fqh#+<ߜ$ro㡚7@矗 X_^b.] 36"3:O"hcT {!*N#;X2qzC$u@&~⼵rq빾Ic> .=5u8 h@ iD?At DU'P@/u"ݫkOn шˎ'$L6?װ\^.RABn͏{YGTQ,͂_}Ja  … 40HAÉ >A %0Qa%?1@ɐ$K \=3o. P BHz0Iƍ ;t gIFB9(I V% 'C$ :T!N0jZ r@@Qa5 >Lxõ,"6zdf9f#c\Uf"SPLfCd86K \0 hh1؅< Ja6ÕWB}LP&'{!sI8}&ƕ> dۿoX AddFJFZ]0%aBLVZTEd)b(IFD Zil>Ha 3 "Њv@6Z8BA %F Hޣe %*JXP0l{]&C$H@>7 ֱ.w )$Kl%'"@8P۪3"CHA` "Ax,PO6dXOTӭE1̆H4=shD'զ qYFx%Y~!%2 @` iL-YCl쳐d]Ͳd9Ψ B(x( @:[ZthӬ՜"%'CٳX(-`^b!0# SԨVXzֲ&E@iPz״h/s ldN! TH_w';1=o yb ;!7w|GЂe{0}5)T Qox0e5EF0thg+Uya}[9xS|7"N(FA[ȅ`ah )`(d8v7VuSNFÅu71ua8"Khaso3y !nFWӀ?vqCh65*(yM sF5 1Urh xM!X(&G,!cAXsKSD듃}Մ fxg,Bx Æ v kgLި񷇙8I)h(?(/HzSǀqCp QM8$+f{yYYgQP>DYďPLhAn%w$;R54IAY/i.X|'ɔ'Q֎ZZ!ȅe91i iVScHȓ a4'z8$YG _a?ɍ=AFHBiVaA)Gy'E8#FY(uii" SzYQЛ;P '`b&Y%靉w~KVxmp9V"q 0B=a?22793{9.Ė~n(|,: VJM3hơEqL JB+ʢ-/ 1*+j9wa?'i}QP4w~iR3qC:W_F -BGFA},Y x*Q] 1r{HYITצM1} *JqCYL45AH 7To?= ? fjsqfKzHZ'ҐJ;A ETTPt nt0ccǔajڙZdĦ] :CJO"FU٪ʭE aVeȞDI Jb$dJʤ q?81&dւYʥJA5d${:{z ӛUfӚzfך -/ 1+3[0;ZHw*rn4s\qL a9jcQ򣯪¨,RZJZpEA ?fzLJejʈ SjV8VŲ4 +ⁱW`{9cﺑDۤ 9UioPjwSWo\[R3H,丒n+hf; A'Fa?wZ.ڱ|J +xL$K:V7Pq )qDd9Q_lUqLv9k[?XzaJxh%{gj@ñ[k8}rx+;wꃦ%9`Dz Ƚ?+烹{{@[c 1Vt1h:R* lBUJ;ik={ ElBT g|sLulw31e?wM PLS]>[5QI\2HmÉ3=@Gk,k`XG9ŭ]F:XlZl+|p8wMAeKyɬ1;JĆ縕 >sB IDȬ$(N˺<[c<aդXd9OFOFFQPw[;_"\,a3A=a&o{{LmѵIFrsM)OT0<yL!|VbRT+DLӁ I! [ .ඔq,o>Sڮ A(/m۷ a-cM֑en;F(D67\f\nQݯnz!פÌoJ>F,Jԛh:|gйӦZՄ3,=]-_ښ"۵=eۿms$Byn̮D, *4{=qAYI?صpVأ=ٚ (i׽,U1Cs DF{8V]< ,`,Q n!n@ҫ O Sc22< {,|,/s%]7ރ= F7VHE}7ΘLcL Ѓq",QF y+,1 ^.޼kh0QwZP.p ]Ix2}"aZPQlӛ, \߽19܂)HtMM075- =|_^r}ڄ .,Q ~k~m瀋 q.oq۾@SSoS6KG\+x )$] o*M џ5{Liƫԕ1'T~~=!?BȆM>샫~,1 ^ώ ۽-Pu3o.!980 ; S</6>gs^>@/m;.`LN7To`Z\=bJd91{P|^>黜6.KfXF5exM xH~S.-Uٗg)a6@O!ͮ22A Gt~1 ^qps 1,Po=f0 s_k FaU/| A $СC%E-Ҙآ (7YXI)UdK13.P=6 E'(@Ţ 0t1 Q #%2&QO/ LQϦT0N}\rj݋SZ}H灌~}(Xgkm &su(fk8`F@L1 [ܓQ42u7(F"o` >qD1iC7" s'B^}v'NO}"#(oώyӷl!ɢ#H>ʨ>h="oc?T DB,L鿉0%!daK4DS,itRJz)1&).** 0)@Z1X%&h/ !tj&jj"l"l"r(JH{*.b&.2'=.b.ns͡.̶,JS'ϕns"l3@@"'JҢ0k6BuMERK ՉTN+C$6Lepu"[q_% v\ ayZ aU2*6c%J3+ C&Lږn#vseajA!7yU wxjWZa_q61+S:-j', ȋJd!uʳNOƈM-4JyL!tT:S!,ՋGZ&e:+@li (Қ&k"sOuYjQ;O8}6"Y5!ZPwsA 'B<^ǍpdY]ʹ\(ttGhq&8^ ||Q?XϗvGueXw{O|ymG81Ƅ66該k2${LuB?(hHMkJ @}S|:[%TL!z(R8Ef`( c"2q45fdJs&{ 2r1O?| 9 D蝿 pAGZ=iDZV嫊wâD\qTSYpEr x3j"rG'qՊc#M\dQG=ѐdG>#Dz(ڻ'!JxdM旐R֤:{+參2Z_fi=dImF@2EQ>:=@ ZMviQ V+yؑTzP1LbP&23 !ԉ0EyyN0hu 4~V [}\pW # 9A$P^⨱$u3THږC3Ha'K:tE$M&\{O("lpĨ/EUB+$YobJ'Ljp#>^Fa lC#M f|^ wnfAF.̂ o8"F'{#!Hzd*AqF>!5xՙ2zA r`ċaLv25! 6OP>eعAk90w }hx*<ARj6}$ gaÄ`pJZrԝ e)*!r -Y0y]?ѹgMJ}IP>x,I$!LK! ۲D l0B;=5 &"G"s&Pǂ |"$1B a ȿcdb@)Azk8pDqK,{G EG gA/,Cmq0"B<1t y6ϻişF0~rI'; g?^t#Cb 'sq^'a)rjGe6HRmmM4R\K?>!5^b=`]j0!3g~WiE!xD `Vb![)S)EZKԩ(FJ݄fXn%q{DzlF$!|غDfq( e2"thDnCck|<@p@3B ؿc9PP`p@|D?S@[;\HAAh'  DA/%|93||9*0A?A C1DS&K"6p<C)._" ˾;,@ 50bR`=f*@4+I& >KK?-!e#5C<P(,;is>:?-o۾1l;Ea`xز%@SADgTh4Mp@bdc4deԕmFPFぇ(B#kƤ:%cLƹIUr4Lj@,)&'4{F|lÁXrlH@7cGpǡ[$pT, !("uE` e6M5xVILxD2m?%Y>ZPXm#iEְٱٌPGZ Y{ AX` Q[\0ۋՄh#@Yp£Um[X\\YؘhX -P\.qɵԕ]7M ́$bq% O=s]#@1ԜhHIu<2}Om֍V B*Eh 3 xy72<}^ޥ⹇H*_1Є]h=].`>`] ϓ H68&HD>cca'NbCBOdO/CFdEnFe⓸9 W~;;Vh0eį&֤kpv6xI y}fe@xgFL>\;`9}4i_ljjixh*݌(.j> mhh6hjsjioN^EN"F1$ЄV;^jBl`lPeؖUm.m jjz UȺS6mC^ ncl m,mkWɃ:9S>ihÎ*fzVTNX6vnna>nnDh0؞o@Pm*p؄LSo~P;h߈j 6i됞k> # 瞞hnb(lN p GePe`<km/r#?rV nI4J#'* +hiAɄψk g1Ϝp>NŮ?k<U@sErOoq Mc?  p8cUtspn17)tL$O%_$, fSO-ߍSקFXtC~0U ɉI]xpPT^G] _lGЁa9ξ[#r_blhp_ h#pY'uxttC8$" /g\-sb܎/ƊOQ\Z5dvZ(y.̗ߤGH%TdKc_ ygFЏut/JE^vkFyPxn/yx/wCa! ?5^Ff{UW x.m8PE@[_PXI{|!J@>hF0),l7hFphP: P0O@lxȏi;Wi Mh&}ǐ}HPܟJ aߍ6`Fz}'Wgؿ~ۿ~<:ßrg$7 7$@KK bƈ?b@4"Lp!ÆmHDO H(B?rTx#IOD(._LG5 yh1HMƌRbˠF(L7>?i)FL]bҸ*טmq3Ώ@N}jU*յ!E@Nzɡ ,x0†#Nx1ƎC|e /LYdɟ2k-:@ΦON6Oڴk©1HZgA}* `/Twq$X}rf\-gP感GٓDfГ ~rXb { (-BA|4IQe^b$|RXbJeVg%h $آ.Q&(HЌFmC].@(iP#5ăCG>dC~)FyR#I-4o AT&feD:F^D3qI$axFÆS |x E6tg')gBsU'B|hB1铓I/ZfxjJz0,@K}HJF+j9 b`P& $ BRkmBkI y)_=HD@2(P.H qѷ&FnDJ M#AJGFP J5лd-l XS])aQK3\aJQSؼ$zHzKc8(9rje @ <0KZs5bH=`lXIsq` =E LB 7-1j6ܠM݁͂E޷ 1Jm16ܰCl؞38䒿ĺî'T:ϭ:Cqn}Jdwuؐu~#_磟'Z 2FuFBH3Ѡ@`t\ o'60 +h bPWYȧ#KS IFdaS ƅ<͡"@0A! @1B"]CHf4#*ƊDD/^P`#h31 (ncj>!G7QKI?G:A"SUAh BBr|$"#iKb2$'nj~:R2DD*[W2l'uE N%Br]2 e)c"3\&3ӈ@3?x fb3&7o3'9is3\';w3'=i{3'?4(A jЃ"4 ](CЇB4(E+jыb4(G;я4")IKjғ4*])K[җ42)Mkjӛ4:)O{jO +Y(jPӣrC#ʨBNE*Uj՘J'ꚮl"7xdL|5j]+Bt5"{a+]aց`1kFU׿Y P2X6]œW,eU%Hf+IE-*@,ђB=jJ!MD5ijZd5!K",7HDFWfADZ`9Bus%] Mw }u'U1ev݅@KؓnUCyHdžؗ$@!4\EoD`|$mY`3r@"Z"7h#BVt ްC7@h YbB-~qDbƉAR+Dz,L.L##Pa > &;9dD"B ͝\.ePp X 5|92' Vr: 7;}3IId3y 谸G ƎI"HF12;o֐ x( XeNjB>k MBҍ5(j͂[/>,sC8]c#TJl!^m"Ԛ8 qh4mo$jx#0 $5a97 u6ojl`T(7$5꿳B(* є(La'0I#8uņL6lƂĂhcz0U!t.#Ẑ68yJP2FaBȜ 2YOQ8AΌ$v84(~;dN=? })Bd"(ULN \;J0>i4GS>ya-LReoHrm|C:(0&*YB6KIKdRᛞWYzc'RD^8)K`xi&H` %wS& F.JP+m皪ɢndDtf/ =Ky*#l`#FOFiBdDlLkF]`؊™"VZSVFpceTCln'm~/d UVm4R ,|,XIdGܗb5@-9*BtjFWƦ2~S{,&*'H(<',A$'@DA%H$@<%$ @|0`,*CL@  A2EƄ<@!3#Crš:'smoD8A10 - A#0&BhO]F/ޫivLX BDWRlC8/(LS0w477fe$$%l3!J43m7;A!ij8~)<s9?72DtI4'j(W¢z*+╆rD\R.P+'c| p}.sBHlbU @hH(bb6p&DwZA00@  3C@YD'\B|u CDhRT/DG'ƦU̦[AH2"cC#Vs(" t.I[Rk6lW^[3veeUkeL:>*JD0";Xn3CW5 @55CLo moAcwu93Qc.Y|e:3[ g'u[~"r6%bxDZ+"쳬BU  AbVgG+s>7@SԆ#u<6s3WX~S3DSFr'Agt>Bp;eJ$@„ 6,H@!)BȀ"A)HGR qGJ }tG/A)#>hPC5ziRK6EԨ^BʂS[vlXcɖ5{mZomK뙶ip NPOnPp`&&B HEdI"|4ឝp\Z@dp)8ҡ8rҥH!%DR8Jh4")4&E!:^5B]pd]f}Z;k 7ݖgԥ=\^)"R(DEQ,Vp(II7c3TM܏\TWd۱b5Q2"gҧaHU]:P)}uiQ}rnM>U^喽le 7p,4dya}oRߝp̉8D)ZԡEnI##d3ThԈi *kշSaHV#~Fjʄ@HӈNuS ?_rO# ܆ަ)>n^VU"r2;~3*[v]D]E~ȰܥCwO#ꭿߞ& <#┢"!3J?=] ڜyJ!(O`]6zQKneysL{!IXB)B|)DHQD7SsqH+?: /z N^/ak9"^  sJ]µdyTF7q#XXqD]bF^H ACKV[BX'#`A8Ɇ01P& (E4Jbɥ#P#Mn5G[.yKa(!EF A %K H oU?iR%W dD\F?uŋhbJ$HeFxGb>O^RAtQvx#@!ުv3Y$N M6@r~ďTԩQD ZyRĠ O(PAP tfC8>/q߉ Y?A<!d`7C:i&XWV䈄5C̣!3Pd` [Xզ">Vav%S U Ri(WkHOafUHTRq Pl #v#Th&5ny[ClQr6$ ]Q+fDeXE\2mC FMⶀ|8?BEUo(;Z!%*?Rܝ~_N-M(Ħ4e8鮋/\ cFz9CHԒwWSI֜ZHrBm si\cx,}QUPEI#\o^[Ot$Aۉ7 X3B٦xj>WHf@1f73*rDŽ il-M BU9d'^MQHGKR-;ļPZW(g6AM4թVY P])N;Q |l,%cա>\[@ VylW>xzZD1qR$Q4}Ejow8HgxW:>'LT¯ .v mCR:!&i+⇂UYLxb7h)^q_q')dQc\{vF> , !_+m _mv=YYHnCpa43t?QB+eī8f_v5q i@.;;qorG$@bQ74DtPH#B'Ne-?%Mtr2/UtБ®}9={mgŇWoܟH< MzIMW #mS?q"^i';IǙ',<\8HK~B M|]NV@4k$PN#TtoB % 8(Rɞ{ |4Pjgf+A|p > tS=?DC<@Zc3';}?"`E3 Fr$'Fw8 BXO3#$;04l#m Fwt4tG:a4CiG0Hft(- JϩNTDהM4/`@c 4`"@$HP7c\k  `Tu@ @@QSKA ` P@U (`Pb  %@WTYY5rYUZZKZU[[U,[U\Ǖ\\U]ו]]^U^uߕ^_U_^_`U` `a `aaVb'b+bGb/Vc7c;e2cCVdGddKeSVeW6zW{q,w{P{7q4t1#yWl)\JE:E}|Yw+b~w)b4A(>/WV[E~W=iUBW"8#R>R#6s'XF2E ,tE>"mw}{~‡cTf'kX` Ytb8/Nƨ>$*]tqt؎"`K5\{xY"F ,uؒ/%N⑵Y,>><򰎈1Yj%b9Ւ@c` @t+ $a` צ |+-(8(vٗ@7M{YAmò %كfW 3^ |'9]c+sq5D n ٟa@ !#$%,728>٣=y)iB0Z$4"8:4<`XdzvG#ZMf}BłdYqT%| SL$$ sA(ڭߺ(OJ)ZACωt}<ؐeq3#s1/Ǖ+',%xͯ41Ӯ´YTQ r1uJz U{0Bz$p𥓽1.Ex WO|'c 0 v۵=JBٽo;F;`  O2= s4T`nOFj }#[" #ǺNLUtZ.u^>/[5 h6 "T꾃BŃD:ȏ< b OJ`>!T='p\y+}JS@>BfgM֤"L@¥3P<GiEH}l!ǙiґЫ7s#"1?#<}(`& dR B)RX20|b8eZPB@ۧ~6JC!M%= BX=Wy)K]Aύb4=y(|( SUNɽ~)jԭ[_N]!ЛᎥޔb#" bu8}^)QYᇞIo#|7 mK~]0T PHÓKW}YX> ;%5,-t(Ap)(` H фBQ:=}abؙ 'Dc>q蒺a"SUT~ \*Rj)\s;+X_ݔ>-(_/gJEK<NYY!*0f?e%Op0!~ H *\p@ #Rz`ID PH  .IɓP%( ȌsAˏCdS'˃R(RsL pP(Tjʵׯ`ÊKٳhӪ]VORFxX(X:ᬀ(28̘ K^ɘ3k Jã @ = *CB$+Ӓ4y`FARr@ĕU-5mIbo @"Mc_@kG?ubLϿ{ @șxX=tكVs8{1Bf@^Y+DQu &RPa# ܝexMVhht$#7QDSO$1(Xfe{S1ClESXlpƉi'B h PyRM(o9'{HDQGJ^fL,bM#i4(ē E٣Y?)dZe$n/SjD *҉ 5KF+"J@V[a쩭V=$*䦻Y'I i %R_6XJWH<$B%h:ޫh6R P;J#;%kl*Vj,0' 15{a9l{( @%!)ʱ"}HHhPY@$Ia@$tDX_CcKoB`*ݽ TEN:lUC=յG. @OvsP+% !1}P%$@B"oTT{RGDѸ)궃n%47?hT&}34<3<(|DSP>gAs^n6 'aj0Б4ݘ,8 @OH" Q&]m~#@^, ("\t JP ,!`(CJa!EC%!9eOj˄A@\" (z-"J H:6Rx `<`R_`b @@XH+bd H@uŀ` Hd}$( `r z'C=8 # R7dX&LY I(%!%\W?! PC1c7g3";1H%!F!(DpDuDDyy69vϢȜ:GwT֒# IIҒ%'8 * HRp*/ ]Ujڀ1D 5i2$ + HydxUSŕ#Q /+'ȾAO߂B#$(L*djݱ " )l^)ҥLVbC57čRp@/(L] D4[ 68w :Ma6f  0(Ӌ$pOvxu> S?tgƎRkDFDŽ~b+`43'u+_Y=!Ex A&}ËB$ϷZx{Ywt[p֠D5t.݌.d\l*,̀ 9풛nno(uzpz`9h,sw"-bvF'ju `7S5 "h+6 FVC[DW(%!Ce!Qx&1)q-te&z08Qc(ԸxAI5zC@{A,긎R& !D8ih[&F,i5Ra e&RC9Q(Bgj! 3Ys:$B䋫itfhohiIȝTVuE8"yd9.z::XyH2AJW~e"4Q b2J&YQZj&lZnApht*D Iݹz*u/T~ڇ9Jyca9z`\Jd(!eiuOjkIZJZ6 1`QRj|J{J n2Śɪ:Z!īZZ7yp5`eVUeڤʣP0֕7CKYqD\=!9QSPȪB(""7x<ʚz`7Z{ZB왠@Jm8vE{|s)<_7DE#Qf$"Z? 鯶#V >6|Za.ګLWQ|3\۵^`kG!4GKk3ת *"1O`z) Q;Wkl{؍ Rd+QZjO;ů6"eɵ ƨPa[{(Hp&;.8NxN8ʲ|x+&!mȚAsjgDڸ~XNvNb~Jǰ+m%껾۾lBYyLj !mX#fK,)d۲w[o ~))᝵*lSQً &\rAF Wй(aJ{0J!1g5:<>ܕdX}9M9,=]z&k#$η(κ; -Gr[.z=ƹ/M\eY(~@əɬS`lPR='_& kLb 䬝ʹuT?-[[~%[-ZEH z Hk;IoE> ]vTa'AS" - Tٞ٠@l4cGh,$ɠl֮*Ds]|\ܢ}xť~!BۼܾMS+ۺv%qi ri4LP١=]-\ym8זј9!d 0.a]/N}R z8_~=ڋ$V˖Xc.i༸aRޖḀIu~l2 ."k >3R~8BQCΟd^ҥ>CG^!5S"hK?˚^_;lA.%ʫTn\EݢT&/jg {/}g ݾ1n@."i?O+~o'>- |0_//# 4 qBk8GoI։MM-X~Qfb.};q0]c^}f[4 vluJƜYfΝ=《D>Fd"TRC)>"I!PJ"Y{*Ru)bG*2()uH|zgt{H 9 zHC("؈<&B Yb@Ц =k&b̦4LR0䆨j#aB/dFrT";GJ1G dŏ&iFMh:$aZIPDR"q4R0,M7߄3N9R*Zb^m6?@ 0 >B DPx+R@$Ϊ #P"ȼ4ԫ=EӐ>mNt5Ѓ@JbD@ȣPiJuNm&xrom 3MIF'6Lb7$aB#ucb]7_63d`2f&Gצy1{b_"fa5cr˃'cP@n`gfIUT|H=y!>jOҐp=hЏP=hQ"V`$)5[5 2xQHjPc@Hl(kvO>[=Or!Վ穕لD%f?!ч*]3C_੍<uƽ7*E$j=cwIvIZ!G&>&Gv< "w8haKAi^1mJ|?~,gpУ*sE B摢67 cFBj#V,^jH@2hj@@wX"S ^DGvhXrCaā_9 Mѱ`Ppf0D>" sb1&-cdǫ\Sǯ1&*!(2$gdAM+D "tIF [bA$ȁp<$ UJV~ CV!b,%R@iPG4|0  mx!rH(8i hsT mP"<ٷ^bUf1 OLbIpdP|*O \> .Ia+%:3*M.$ $ F?"1#JE*ĤmHK:QR $4)Nm2SP4&7 JYҁLB{1F~ZԠiF RJQ򨧠jU':VK=%!C&Rt+GB+H#{w<4 hA4-i-NeJve CY@a%" f!];_*!:9i؅I_7VBѬӹ$4AH~0\&q Iqa"!5.L`0$ф>p&< O("lp*^X%Ep Y"HzY>M0( D,DF:&Q ^݌+'qXЈ$ n@&2W,nvDr''$t.tX#;=g|r.=R1$W (IfBH"/{hHf(h·~L:.d26(r;d| W=BK @R7E %| ÿ>[ڙB Xx? $+_!?:v8:̃%?3@)35H3::u<DA8 K{ t?@',$<@=UBp+$șF+$O2*h $8܊qCH.#G  ;$>89">@̷`DDD#6_{N|M@E ?DGlIJKB?؝?qIFGH WEE-L\BD蒁 E>oFVjF!APxC%XAR:+B< z6BBs 6D0c@jW ^bpxyB)B`_Gx;(D4P`q:5#:$¥ó:mk$ɑpt`>@:ŐPIQF8DHDɁIIP Ԍ\ƙ۪L`\9ZFoCJPPJ`J!ʯdda4@\IJd:|˅N 6J Kx1 MP%eҳzK*N ,R,;Q,M+$M1-2@RP4}:t܈R/ ΏR/{Ζ؃4M(8A)5S,zWi"=H=}>IhB=Tixt&174ȏ@T/5M|T6RTmkÙ)dQRd-Na_#C|+Ofef-2l=4mUnU0p $tuB k7W 6j9E d5Wgu]VhV>xV]=u8nEXo p q XJP:ƅ%F7`)~-6s՗Yh3\8(XFNJ$Pp%U!%P0x{M%Գ@%@%Mڥmڧ=OX8`ZH*(N5})Zx((Z/ Zk(\8\H選ƅI8eFPVP&8P2#L]]yI@]MhݰY\\pX 8PIMZ`Mʨ띐Tu2 _bܹU/K2{yP*Au]`^P_xW2׆ 5+PRDP yef  +G67X\] =95+d[՘] !=Za)̢X>h3h-ba=1>&3_ZU4f Q$7vacÐc0V9J.+S*r=ٛ b)cb)*@b(OhD%@6e5Q6[2SfP@UW >pZv6xΐeTc A&B6dNdl>BP^f˹Jbj=dg.hnVg&-q6j5>u^y5@ e w lObvdAF}Ud`fvE#p8Zg(nkKDMN6fif獆r菞5ǻU>Q8iѐ95g}FD~2d*;dMfCOVh49NI2l&&s3>>bonx)B.>%@d< ̌fg0>(Sk&ieeih^ 9kfCjf]5%%F.̖Vej c9  g m62(2HQXfHPĖmmym6+0I~hiޚe &fhϖnnf5 ڲ7}o(Nԩb_`9qc MW?m=+F& JY+o".xPaJzԕ_Jnp|iS޹ƈE`qxEdž*h9V7sSfET,dhQPcr*7?/^pq6=|lmcoA /(*Ws/ 9s9pJd}\ dIh7'? {Q7^^8PE@3tNtP_F`Ls ҎC D&[g \g Jl7hG>X&Fu>PuV'LW Xkm=@vf 7q֞6 EgI/{imɧ,}{*v娰g Q0e=wy|JrPww(ʀw9lݏyg! kFf- Dv7fOQyw À`K1t~nj g_ zXw_ "7q8\FaS{Eh6 y7AG Pv֞_0|@|'}Q.dB&5 ?XscZyc7ɄcTK 6X E^Gu2}PxEx} %M` EhNf`旈䏊Gǀҷsч6׶gf8,h$5=nܰ#O'Rh?Y#H?X$iQ ;xdNH*YQ6) 4mB-8$IME2=) DjҦ1jkLayI5 P8JUJN>xھ.l0Ċ3n r8l2̚7s3ТGnR+NHuܖ.9CwhOPi'hwʓ GJ|9ҧSE v%{s;Ǔ/_ T&#U?l Á|OkjTMG#)WR y J8!Zx!jw;@HG"h4|Xj^|PE0$Uq+"=^fcT> 9$Ey$I*w6  0O0en QaU>%G:&ʉyeq&Rmy'y'}'vl8f hi2(J:)Zz)H` Nd:aZ)***.Hnq+ ;,{,*,:,J;-Z{-j-z-;.{.骻..;/{/// <0|0 +0 ;0K<1[|1k1{1!<2%|2)'|r`21S 5c36Ka_=_ϼGȏ~募B>1I)wɆ _e"DJKC`5A2Bo"j Rp$-M YP$)Mw䇡Z|P *F$ yDByadH*z$>I W(q@$aQ0.LbrHD< 7Ao =R* (G27,j(*;&E2ґ9$I J,$R8 $F$(K"Ѡr $R9H(Kid,?º@cBJPҐPI%IVY`#l.I փ>r:RVpDT2$L t2Ey'RYzDj=iG4y>'قOX$$$j 9@. D :T!THq*i:!C#֥6U7k%+IڑdSj]ZĮQxЄyk[T@1lH IEJWk۔?,h$x"EJi3PhGnJ L$ij- h갵. kOЁ!mHZC(ȭkuI[W0uƷnc +ĵ-t˂FΔb*) -L# ł!pI \`T:@A ;#0ia#E¢1AH\t,@ibPFƠP`tpHvV8RnL7%i\4B2) \^HxI\$1ELMDv2@r>8 qA<= _$3TOA mb ͂.$QAgyjqؠ3PHa\Ot$敤) KӤ5bk8$sQ@̦l9au;Md޳p]Dюb=kj{Dq`SqXrg~&^l8ټB6͚Vլ60F|D۴A[5x8P@2vdY A&Y',GPtlEBk]I E?Zp 'ቤ#lи_P0NGS#%yIN)0Si^+jݎC<"`BIŎ(B$UxDgAGAw=NDDas [ o9X e(T@D3ȓ;CUWL~[ l 2- UЩ0@81] m~ '@1H|D:I >Du=FdEtEBQqUX99_n(I_EEQD\IdAP EQm^艞lc8 " EAGt IDME=A E@T[^dބdXDP!w\!BA<܀Dj_!S vEaE5  A Xm `EDA bipb"bW̡GA'Z|!"%B(n E8b-A`^<}B+^*iD'pVJV,*ETcq9NFhadpV$:GUGccA|HcDAcl XѦ#!PY|ܡa$ "A8cUMbtQD]U\A8$Dcn$BJGVGd**c -dcdA,)Gn^ #^QV^IMm |AdDHG 8|#J8XL9:euW%th d"I.WZ,u[Ti<'2[Tf3"FccNdU$@^|h$KT4DA&AT&(% h&kfE%S% ED"  l^fG0%ILa'R&(l<y <Ay wc#*eE `˥w`Drr^ xe89jc%BE hB$ j}c-fH0BxWA$aoE/H8->ْo6q֒oQ0^vAhI0T@h[AYFt/`-!vpeg_ v-|k/#"n*rB0]`pp pƮoH4B0*q 0SDW9pb QiZ"`9RbgHEtހޱEp\°ck /f~R6r:qɆ%s+# [{fdw2'w+nr(,Z+Qh,X"`892/rafE.D-(3 43?3'sH!(jḜXHaB(2%#s9,*{H5wAs(Kqn"1\ep+?7nr_9r/O4X<% ЯAX4FKFū>$'DG/3IRL .m&>~&&NtH|%2I`)EPP@*rD;35?Ϧ?Qr񌵝,߰04ma|#1ERtYgHZ@H5TGPU{JlVp=c$#EoZD[#3(,:5ڎsUfy!`;5QSW`TΗNAɤR%p5x5a4.5oDk\4!3y>c7 Ƴ]p^+# rhZaQAMlڛnz҈rÀq3Qc3 fTu+Gj+km7w#E}WiDTDD{|TVlm&T!M 2ΣwE$w@a|Ķ`޲0 (lVH0@x=,HB_P,XFJk <|kD29ῷſ0^o;G͏}i@.?zm*eFWG|=cV7E˳F峞^=uR> /ID@|Wc0FW9JRPAd?% 41@PED_cEP9&: 6E'#>@8`L@%T8 &!Bl$à")(""9a ?HT$ If .p Fvf&rX&My`O|9!K4B"8U`Օn m3I&5KeZP5ˢPѓdٰhɮ 8!عdžSхϑxRN1gּs@ PIhӧ$tk=z:RZ't?^=LP/CD(4j$HXG 3%؂cb)@o D "J$ṽ?(=# JLF> W P  *LųlqDQňl*؃ %;S7x<R@ZCb? 5=L5AK BmZk@N? TA -C=.ʁ4$iQMT CFTM9T(%Ҵ2an&`!M6I6]C98tH 'r4 JJ:4EFJM uQYo3T!mv%FM?& gEW]y8vhz!D P 8EWS*GjNMaxR8]g׍(N3NI6؁x`b(\IY>MIШHI7g@cUΜuYuiXjn駡ZꩩOk$ j eRJB3e4m 5*IȻ71Ι#X¤|!~ㄆulN!HE0p z-rCAmDB@N$@]lF 5C '-FDRJΒ-qK 8[f!lm41LQNSQqkLHkBeL4T9љNui@fΐoN('h24X7OB)Ej*ei?1Qn I#zR n/7tuKaj p$'>;CAQDEhLT.MuSU,+\h0hḧ́7MVJmu[WΕ2J `NIDCI2>;Zʒuuc!YN}+:63HH?ESZuka[w8J̺Ei[V9Ϻq\.uHpfP4J$4 o"Y¦E;&#Q>u{_gI\A{ iH^)Ri:_/ v! 7U%MW#©jX[4Qb-˒MFZмRd[kE6򑑜dȾ ,!gh~+48NZM`i|= f1e61b<4VN}M3HAxY݌eØQ-h2{fAЅ6cd Ai:M{ln4hQԥ67\4Q,IR|uila ,3Q6Μ 9i_*eun.nUux1W&͠I6T vV۲d|Sg$mB?qn$v% Mqo%B ަI>fP;!.ZBqsWg3WɮCW(\ythTjvёJsUձuDL]C{:\mVeIqCsϝu5^ĬrArs?@@q*Q<#b =!tb2hBs  8Ac>C@y<D-!FD[Mi(A "C4By+GA'[C*khQMDtfJ8qgIɤII#JBK[FG YCqG4/FsL{hsjJYIMw޴6TMtLNYN[&lMEJC4Qu`HPqQ NIp>JOwgSSSCOWP%Ŧ>Ő5VUOc+jPg1 1XqCUqgWWUXXX=T%R *“Ce5[#MA,p>0IV9vU6\U)P-WyS^` ΰu@ @q :in4\iR;i]U_6!5Q>` 6)V]#0*u_-]Mc=]S _kc)T%fCe!^yŀ26hVhM)N v7$ `&g6k ,4j`ДB3ǜ568jV`hSInVjjblA\ 0mvhVkmqi[i4V%VrL hgAVRM1<]ʭnդP/6)FLp6/LBw}wol%LW:0 3TAu[c 2zYx$yO!7|#BuɄuV/`$.ugs547tf6БZ -gM?Fw35T$2}bWgsʧTCbhm|UP3|%IS{WB{̂}k| C>NGb) ]7[ihjc4ÉDJ)#B   N)6"-|MُQ"T]^194`Pi έpd$XMG6!LQ\Lp  "4.yD;ϔ% ښyY%H#6dSdΜʓ#2ًMz;vy{9!xkjMCdsMOzl-%yNq1f!$!pG>Hå>Z3(A:Z^"a8$"z$f0L|T8j!n: :H"cSTW!!uBEӫX :";"Y 84Cb- ;Zc줦]:-z⫛"$[!4C­!b:O ;"R;$ڤz*U q ̈́ou UHQ5m}d .A㺉6s;X$oV)[O$ȼ!vТ K"~Ȃ{ŨbY8PwP'mSc5Qm0܆[%@TD8L۱4RWUGbā1zO<"2q} 6KyY&lQܖa84<$M&a|\]ۏ 57#W\߀{C\L\MIHgf,z⤏Qh#£ܫ8!\5 %})=73>׼0̗ۢ\$27=$tTM<|Ù*4)-K`?/~#}Zb]9.i^/Ѯ7= `:SNղڃuܩ4>=#Mfs/~5߸ 8-_ 4>?%Z+_9?GRVNAr(%zڤc@{<80@0bDJT8!%Q".H'R^|)pd0#d͝<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6ءR@c 4JIIFz>I2@#$MZو25>@8cl(Fg`HJfچ\Fe^jh 3%8m3パB:Y˙nnygʢYAmٵ}0{+DfPIj)ۿ?`H`RAFY4ЀT(PA)חB0S @Id"(ч!aJ 4i s/A)D EIAňx7ڎFcB<,eS$TAIR0eP,މgzg~ hJ#8P[Bg䊞uoj((_.bN z=J "'@AR6dM ,]~_" L٪@Â(=:)njӪm=5Ph~ nKn枋.~z`zh"- Hf:պfI颒O(VC50aiIlFx>bMp gȦq]k$r{kN̪D%oKtFtJ/tN TdC*$= 1 rUQk0Y\H@KkmNa1BHBs'k!Mw5ݝQ.qDo۱6G$FԄ (@ ;B @Z]L{ 1_b`bAĠO}'?R &?oD =( ~H@/"LNMJ&" ^3)qLl(J"#Ӫ8,jq+PB(3?Wiψ4qll{)q QHquA@ "TBD >ɗ HJr%-rʤ6yPjh!AAD(o(j#E XrɘS (ҥ-4)@=l3 hXѨIkJsEċʌ,9ωt(U\ּu|k( 5`Y@X*vmcsò5a)M! f9Њv})&$+JZ X4ilKvUdPWф $< < uBK{XVe F^ɞ&jAyjw}sޠ&=~i/Wi  uCM(|X ge8|XK ^p%x t'AKqw&-1$+*r`.L|r31J6K @|ɘ[fnA3',Xyts5!YχճT4@ zF}86ċ ;KzҔ/$\a,9Ӡf#@"B>|+ X:Rkz)n(u2 4{.b3:)%HV$Yk{^kYߗ|;PiO?8{ݥR]jtEѺ:AmɾoVٍ.O-XO{xS!΂&T>d# /y`X;`w`|=d} +uSHn<*=,aˆ* V4oӟH5a?)׿}d{$38oTJgB>%NOH\^}/|? Y'UW4 , k>%_y|+WZ_B`oC$]%v~Ė_ ?O,jRwJ#GT}D :,7փ? *: VPΏ~~N~`u Ȁ}%5|?Bvx_Ѐ!(#'Pwh,'(p(n@P^G79e+(J FEXjwAP OQ7zA@M{\L_p cH6 P@ OB{e{sfwye`І -rm0Ոa{{n}52s9B=e 5Quba.(nh52!F LP>(} Y:PxX8\Xٶ48Ypxhy14'Gt'4xXqP(X8~Ki(wg!; & IH%Xw.{aec|Ґ'Iq3TWyXxr'hvFc(,I5WK7@*HA'('XPBXD߶`EV4J^LiQ)k&JT*aEb22@na9WFS q9V?Q8CԖuvlYj)IYENQ2"I}iH &I)U%{ $X,F)?pPEi隯Tb'ҙr A I ilj[GU6)ITћ@sP <2(B驞i,*#jxɞ޹Z9 0P) K Q:D h=)ʡJ9b᏿)jt8cq詢3JQHD! $ ќ5 A83<*M=(~OY}b'tʋرZJey8c4b?:Ԓpf*s uz6/ ; a1t sJ1 7*&*9';cSЋC*jgE/>JSꪯeR Jjʫ꫿ *JjNJɪʬ *Jj׊٪ʭ *Jj犮骮ʮ *Jjj !! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 $$$+++444;;;CCCLLLSSS[[[ccclllsss|||26!9$;&>*B-F2I6M:Q>SAVDYG]LeTjZn^`Osdwi{mqo`>6B:F>KCOHG@PISLVP[T_Xc\f`jdnimgsmvqys{v~y}׃vׅxي}؇zڎۑܕޘߝࠕᤛ㨞䭤尧洬黳꿸ÖŚǝȟɡ̦ΪѮӲն׹ټپ»7 H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻxUg޿ LÈ+^|0L˘3k̹B=ӨS^ͺװ].=:ظsͻ'h!“+_μ=Nـkνo @:6B(@P 3N7= '}}uށ& tL @ 0@K!C(P}2adԀh7"N@#4uN8 iH&dB\@IBP~UVi0# d)ҋaOmZ@h,lUBK$B s$DY& %!d3!Į#*!pI,0SD@`b%2Hq ǣqu4n릾*1WmXZ?Zd:`#j"q*d,RXSPhY.i,F4u")3.{Z+᷐TgKT @Iݥd'fAPѢ0@s̡*Q$v~Q[{Tԡ.wgC#ZtDD]I3DTD0n֡~d~lCUq;S LEnXD4!ĖКj$96Q($?iHB -_Qfbi9WPB@ rHAmU'] ShMZ_GAS!L"S8JL58Kc}H'H"q @^K ;c"Ikͬf7vՊuY* LL6TPtQ{GׇKj n+^cQښ.6NrI ! PׂD z+j|,Oɓ3Z/j銯ͯ~Z gDY*$EZTrے Aq@Kv Aә#J> )P%u#:5N`\q !fK̋SD´!/Pz,$U,L*ưN!" Zx# ZU F^PX &ELB3M >ou͠2Pqy#&D,nBz}RzE"ZаPu;Dwah{2""K ''K$J4_ζD mEjPisG!jDčxNHЛDITTn'KkxSȼ@vjLQWHsV DcVɾTZC! 嚜8JgNXK]L)B]G+f\]FGd6 c[HSO8{`O .yC(ӎ"Un d#*Ct^1$UJ~^X$%,a L8 4nL[ͫp:vxt8;J!m;(}"|6M|‚ϼsSĞ0Om8v36DrN}mgvd>׷"Ӛabvu&@'„" ϿUVW+jpQ1wKZ1y|)tr\P}W&:zv%.jR'Vv{w%zQz4)Ru $bZE!}0yVƆ'R882wig&zso{AwU'$R q}Tg8~'Ї8a?uS3)t3HBX%_Fyh178k@?ӭ`jк *.VsqNBQ%횲*Jt%)*ڬ$ŰX*d9 )3-{ jpZ5 qJfJe?(-tƺ+[f 'X4ltQPqPB'Bbq3g{.%yZ'ur)ZZ%@*i+bz[sqQOpW=z+0|K"xqYʌl{9KJd=A u Ѣ{Q> k+J{Kјk_E:I{:+%BK  Vc r-C"=ڵVb&[NI%81V++"+U ѹwrOg%T (b P+AM؂| V; ״CmzBG=.3~ɳ 4}l̼Zhli -aMl wׄ:غnr!QbAn:>ʌcb/K } ִQ}Ye1-M[؝n Ӷ.,W{tR׋Z6<Lصx 1ׯ]gӍ #z\ cڭ])"]:̌BAFB< q̌# q֢qڦI 1vڢt,0G>ݷ ]b#~ 6 Ӎ&!4pݥL(]SJ-- 6(wpS]qA Ό * 㺨MԅZ|LXe)A%vUR)a~pdIk +⢳3-(?>_-D|*CP,C-W8~Cs9Rm,80 #[.uǜ~ʜQ-Ѝ.<՛ jq Ú(Jd*(.IxTF}?ڄm+Du 64Tn ڃF䱼 m+DY^Q˨nJ[/N Umgȥ}G䑅 ޟZJ'-$9m蘌D1`r b/m`G zf(YV?콳E,Jp񘈺+He|)`48cɺ}$|i2 Hp򏡢!bCXŶ.{?tr' A"ty}&6'ԟ|Fg%ca i/#v"1|_qi;s$>vu%:L!@ 0I!>4pa88M2dPH%MDRJ-]SL5męSN=}TPEETRM>M@8L=8cN%X r3ׁAqHv .PyHZMU+@C6'UTQsVJx\aO.D$orr dP][lڵmƝ[n޽}39%“M hF;r'7(`E.@` AdljxVQY,v̽fI? #*HI@L 8Pm!L!2B08?1DG$DOD1EWŹ dΫ lFr𼕾 ˘ B '8d@j`3\ ~T4NP꾕$Lr4js.ɿ`O?4PA%PCEԩI~$&61KⓤEjNUFJ" 0j94ӑ#8x%+C$U%FBe/9DSD6[m[oDI3b 'bʉf UEM PQI))"E]li`li zV$d2$V ҔL*Vhc^R0p_9fgfo6q&Q(=2ֹIg` d3^ &j_TiܩBIEiBuiP@Յ䒬 bp yn$IPw qF{ip#Zo;7#| B$BߤMI?:dIMh(1T}$v" ߙX { 90#IµЄ'Da UB 0#$"68  $ NpLAr)]AƓCl"(2⪨gMIbA`H Υ*)+_ e9%Fvӛg8Y.bEa3VH&\&m \y89Q\)wrRi:L+=I>2LK %Ę[IR9 s6$}HrKΠ8e:SԦ7Ƙ(#\"V ǗSI~t21'Tw$=E}SCI̅#*5 Jo璗~G-Jւ%"=mRR-%% Kկl` Ĥ-TBӹU&W D'$\WN&uN (r5ġ] >d7I,TrQ;j /LÉzd~D`;\׸ h`_c(Lڂp^9L0[Y떬/)'xR)=OM܇vVyI(3̙5# +,Wݩ& ͈cG*$n=n`78f5ee>s~Ċm9NO{m~$E8浱NzDc-GIEX'i1B!7OrS^£&ΤIjABkdj)HƗ$IIAz\BĽ$\[ %HtarfD5 ?e/(%H.9Kҗt5MH?͑uRwJR0o%.žl3b("^] BT8|WaUxj2@e6#Nʼ!ZlQ$Mg;qlU:AQ2 cEϋ@wp){OpwN;OyJؐs011[v%q@ D+1q )<(l?ڵ|yJښ,3_%,{M,BkV ~7Dzo~?}W!oK΍"$ZWrkX\c" sIx{n^=I m8|N6A}DE 6.T8qM?67ӻGXH ; C6`=E{(q Ћ;=s c+K 2c&T?1xGc‡@ڻd9@ܭ ?m낔8CKAI97@4#@2C@8.57tL 8HHxCEIėaB#  AX, <:N${!{ R̦X0M(:7:?*$`2r88;a{G XBD j;k HX>/0 L8X@P 5pqC@q<h3ġ(J~ĖAXY[,  Ҝ۷$9ą C1;Ix(MX$0`,Xa{#d4T'@+HbWtS pC 品(J;AFFtTGH Q;R%;UHXRs1P3CpQK$(1ȁqU R#Ի& ')ug+HT8P>-SkEӑmN̘I |HM0 X6xyK%` @,l 0ɻX<P9eг>p=X>7H ;M#GITf DXx5ʑVM8HyUe Yh5ڣ8`Eh˜PݽXm%UɉAed:2ťy:W5 J@<7 DmH%U=H [? 1H@V[V݄5;m\; 5X2 磻٩ٟ L-݅@51P[5\ĭJ-Wڥ]5 ?814ݓ zC0(@]U52m 5XRA\ĂI s T 8Q:E͒S ];OXk[Mֻ` ?\]#X ֻUǥ]T EL͝\#*V`LRuܒ"囁?0 6d _pߣX^I3hl ژH)l *rU\SVQp`jȼ x0Yb03`p5l|ܔcsJH /ٗͺ+ ;?VhG }Kֻp݅(EdܒWU% PZeSޥ!P5qqI' "fUJ{ߤB8rVrۃP䤩qmڐl>(n7*cHQ@r斤`١0dPdջH^ތ`0պֻл c }gQFT ѯ UNT&u9 &xg.V _B"n<5p0uz7>fm&{TjP {9ۂP.^iu}:hl`;NkXFen` z(6G(IdN VN4 a~ֻ^?^.΃.ʶ kyQKv $ ueZ xOibEK%%T! >8ޚ rk%Xf!mtK~ΔoZ@>@5x/d+~v; >^>ބa FM #@J0oVo^>ބV`lO.$\.@>7q8%`}#ۘ}5i&H\h 8P!i dgpn 6 v$"Xj%Xq X& he;6X!h%p3q%xXHp!qX&Is"`/BW8P&0sn\#qÁW-ֶQku\/a?pk fhQ׻RkTGW-_A0ٖTvm6`%dtW0t7W'(?Cho_*m ;D |?} DxĎ\]=  J loֻ[ʾnf% xW ܓڕxQ% ]wkj/\{RW}}@eeuxxヲ[=%΢& yyO֕HdcgǑQ`GW;æD ?? 7.0{ A8OG?zZOz[u߄ݙ ZVZo{{#{W`?AƄ7} ڪgwׇ}'|?ُ6qR wy40 T7YZxsMۏ%O܏_> V '7HO6 A }}x/z>O|`$'#@2l!2>T3CA+&r Bt(f" %"Thʘ2gҬi&Μ:w'РB-j(ҤJ2m)ԨRRj*֬Zru@bb%8i$4D/7DLӰ $ !/C ⠟):tL/omI'2=4M녶' * : J8!ZxlnLtCL"aS-w&Ix 3=WC1㌏t !W_!4& $bM4&i\@E~T 1 z%a9&ey&ifL:LFo6D@PLDoLtBz"ƍADH$O=.D%e~#4Dp@"C[:+z++JM 1PM Jw”

;~;ԻM̑ D T$Ov=26DHHn}zՃVǛl>ـW? N`???E1S`>E_˳RC,V![33#I&5DdVI0ѤI=\޷ 鯅.|! c(P(#nAA#/@#5(&V=dY)+=@Y`&om2@HPD+FfY?db7հn|#(9OJH )ISTtV*Vխ",-j U;*WӪֵn}+ ׹ҵv+^굯~+`+ؚ Ab:2},d#+R,f3r,hC+ђ=-jSղ}-lc+Ҷ-ns򶷾-p+=.r2}.t+Rֽ.vI(a.x+ơƫlP"^m/~.aE@|W7=0LY [D"C$hpИ^/\I(V0S⾲8Öp^ AKp"$oa&%3\I0],%&fȍ x hӬ5&C@,c9.vH d0D\l8І>I' >|eYC@`0 &J&`È>5S\=۹U`Qԛ(}9%٠a]im_W׷ ,`HL̙A06-. LXa K`BmIA NwSGCvMi&VCl_0$&fJabxswJ氀h L YB9}\w 9I40C]_o"e6n} ( 1s}MX4[J_HnoV{}T(`k6$ Pth:c'"q $0񺻮s~B_w;#$Ov7x$DQ|` hfߑ2yחAQY ;{{(AFx"0C10}<8^}1LQؽOğC<`} C5ěDi} ֗ BPWݧ5A YCܦ_WC!-D !Rd[A5!a1^Cl=^[6]L`Q,U%&%V qQġ")"PBD5D֗ b}"ضŠaN(-6*W=$Fٙ#P).#36cIb}`0,2. [C(^b5"&0v!o@ 2:#=c)BcA$\ cC)-$r}&LE";;0P̣=fF A^-D@Ct.C),>C#D M֚R`FNrIb&$Dd-CAŤ"TN%UJ%:᳙EFNX^QXePI6Q.Q&$C::0 %"D#"EW`a&%HAH P$]\evc::y!eNQ$!bj"b!$ BT!B\faf&T]^D^Jh n֗!+otNfvE`W]!d^n n&uBgpX_al"Ku~Wk(>DueVW8!D[eKƥ|!6"gD^ "<fn($of!$~(VWkf}yh&̟!L!(? ~ff$a $8ZaC&iЧ".Fr. FgPb(f)uJ!4@(¢CЦx"'X$lDoRzjq}ᎮTJ_jڛnBfO%Ln*ph>BDiRmj%]ߣ~aƤ>g&r**mgI̜ @e&C"%9Bij*_bR)a>z*i߃(( @5&DBB*$@ A&šhkā>lW+ffU_[IOޗƎ,>}Ŗ,֬]-gR8ͬ-ѪY^HY-FmRѠ,m J-v-NQ-~ zٞ-B-*(ApI>)---..&..6>.FN.V^.fn.v~.膮莮[amI@Xm-ބ%n#nMtXhN..*M!j@"L ,ؖ,VoOx@"poI }LH‰/\]/ML/MB/D [LAC0Wp"B(7C&HpJE,0Nl?îc0R'0 %D0 pWMDAFALL  p{G cE/j<GV` p7W0pf:D/[MƱժ(C`F@ ox'//o w #o!1 GoD$$!'o"s"C@#o2vW,%~'#+r&+r1HXobD.g0J&V,#V20'o2;232!s5?D |/F%')_422C~DZqN险HB83JWܳ%ssW38 S|3sL(43A/A'/BoED?DiDL3rM\ttEkIg4/D#x3'/J97DJoI3>t@73N#o4FO@RkszsP4Sb6Q/N^sZɳNJpS/ V2DYgVuY3C3JC55[XoZsF|t4M55`wb+(6o/CL5Cܴe+/H46Y5Vx_T405j_?6cj3HD[]kvEV߄VsND[u_oAZWq/rvZ/r'os'tTDm7rwrvG'`HLd7sosoBt#tτ%LKDHfKChv}oD};lwwci2j7zzC@{7l5mWwhsy?oMosWbCT6(3dsGWK6$KL\7CB8wo'{w#oxxĎ8V9kHX.`#/wBL'#Pxxclyo89C\9TVDoVoxVu8N@敪|0VCYDԠ##$>sӠs1"OUnSׂX5$Ib@I Od/LȮWaD}yf۝-,K c!6҅,= Ӆ4݄Sby؁VXy=pT`A7bxq1{9Oj5΋i\9A]t&A)X6 e 4P˵W^(vFwߤ~7˗heֲG][y~vy(KX/{7oJ$ N^-̯}"5d a@k IƦMcʶ"%sM3m!j>籌9/ <2 DءAT5D%.MtK8@)DFXOWK0 !. ~|$W\H觔P; G.: `(N!=0#"'Ba "yHF:r"x-Kbr!]4#ѨF }d IH _$&@or`H8vr%#}6=vEY ӿ#kB28U2٥B<`ZsսRZ䏁EXIˤ$g Jx@hPI_gZ&&y1HēY2L", %c!2Q[B)5!f}*aSΔ5ME0a=]P%Дa E]7aԢf NjT*u =#C'EݪR{D? {% @P'Zh"Wյw5AzԂpի Y#ul5aZZV$UP% ,ZSɍ>+hSB5$B#֦0"v2@;.$b ٶ5$ .XvSi*D"KBR$M*jO"ZlbY ])vB\$|$| §/`)#:8F!0H @Cn\o|d*.-eoveP{"$/а֔ER6a. ʇe, 'fԆXp0}p  ʢH JD/0<$p)+&ep EP!HdPux}z Q1JN"- `_P#쒐 ` fb:ЂPm O$ MB 0Ȱ p 0 FIr+2O+=q 0DLp|$ @Fm_#Q&B5mqѨ$ު-G1 cme^벯 bĊ',aZGJj 10n<`%Y%Y(LK"7a1! I1=$gH(2)r1%5Zy2|j,,' 0,g"2 R+ / r! y1'W"*hH k 6 B-$ bvQ!@O&r*q' r'h"r1.1(r\(4Q35UZ%NG+H>MކB$"%7-7-'6'BG7.B!!{q.a -n NY֌R^ ^G F,"P"0}tU<2IKQq6c"ےBP:)"*W3AtAt=Z$5`>oM> \ꆱ vH E'BE"6>m DDIBt$г L"?ts *4>13S. pX \$MBoN>546A P5Q$5`>j41B>m @8c5+ JU -O Vc R;KSˎT%8bG=<6E5s(m".1!! FVeh5sFW'`2\|Bt "5dU^=TѺ$"uRUtKUR6XsXۣ cub)brQKPC @SKꅰ KS]CZG@J,! o'8` @n6tg)i>*+ [HdQ"Tv0Ffi&JjV:4уeeeԐ F/` kܦ{ʖ3h0\63kJfvhKYk` ^%JΘkl7s,9v!<dEv*S~g}ss dl>>ÄL4bq7wuW1$@V{@Ɔ$;cE:vFK|<D T[w(ƄW>4edokr=wE^u{V$>u6GJ'ATUbLJ$`-M!*@St>;w[J3FtewzqXfx6@= L+Zj%vwMQzw"X>$!|ѩd8=;[*Uz"LyX7w>5 \7sq$,Z|;X`5\, $,bChWc7[_$,!zyB7akdȬ >X+r[(AYFY͗}x SFkwblrRx)#l c'bpQ#]+%aywи:Ȓ Z9^=1+F[(۰0$TH@u?=HY+L[5LXE"ZxsVT1QBJزJ=9+[x(awt6gf;yd:=O߃ :0ؒ::tX*ڡ$ ۣZX!@'Y⣖ [`nB(ī@`{gF#B]h-B'F$VZ(,q_!Yi;P\]ZyJv >tZ+x:\W by_:%Z Z"*@ =L{T6G o85p[ E80 4z9%%`> F>`v :. >` :=  `8<3@ [ {"@ D6`px۹M"r dmOB۸[+a 7;+=v;\䥯7D jx  @烼[@«$ܻ;b➬@¥@<4@@ ֙`9} r[y۷[Ņ\ : N;W_{"¥["P[Y\ə;#M"ڳټݼ>Bվ@8\U!8 ܩ1$Լ]0\08n`ZacV;)doJ]17[;nM]}#]0D5*Z.wa|kΕ@q}ص@`0ؙO ڥ}*0 `ۉ@{y'B@\#ѷ9[, - #!L}?`2$}ߣ=>}ҳb9 ~!>%~)s`Y7'}=~IMك@`A@vCYamq>u~y}>~艾>~陾>~ꩾ>~빾>~ɾ>~پ>~>~? ї !?3+@TO1?59?b"@ ȽMQ?k[Eg (J_imq۽b.[&>(;+?7;CT UJd?P`Ѥ+"PC9ٿQ 6B$_"]bb <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν< T@賨,@$ϩTZ5֭\z 6رd˚=6ړ8b>X老m.Y9͜;{ :ѤKN<큅 -0Y ܈,agIm8%RO;=ԫ[={n6(Z``N<2 >Y-Pq0@!.Q!rICsP-`>aNHay Vs)!_?g&urߊhH(-ĝ[CXdBIdFd1=Pj-V#(aeQ e(E5c Q)ߗJ grIgv)aeE]P^4IWv L#aPR@f*k&xni~ jJ)|e8N.wQc ,@|?X"8[ ,) l> mNK@xLl˄qm%EA$ TAPY?aOR&4[XJmLppKދ4Ot"D!*XP@M p'r. s20R[T+7tOnqQ?'A =sN? uRO\7O3: BKU\\& T wrMw6YpM_0@@AYhݶݎ?yOn7Wp?^撺8nMyꪯz.×ۄ-k1O|h5&Ԇ"c@:Ao'~O~]ً;δ/DB4kQ4^=esOE o~ "K@xzh@51[J p?H%+ Hڀ6fB H~X+5p<o h ~-A$!cS E,Ї\FBn!WȜ Lڡ%6LJPEC q Y@ r\L24 qq ((XJ1x ax PrԊ 1d  2b̟ X/ `vDq <$9H(@n5ō7 NR:>%JU4LD@])I0p.f4 [:?*O ԩ!I+B́\JB1{]-TU "`&9jPk-,*Vϊִ5N@Y$ibo|_8$t$"O"^E<c : )9Bhvܔg?  (mi%Umk_ vmovo w-q*wms Jwԭujww w-yϋwm{ w}w x.+x n Kx/ kx? x$.Ox,n_ x4ox< yD.$+yLn (KyT,ky\ 0yd.ό4yln 8yt h>Bf_[VQ,ύ]XȺ P&#H C@ : bnAZ% gӍƠ WƛD^@&j#{`\cA`4_av̑-  Rf/#ov "O?H$p0c yoSQ]%] ǯMqg:  gc@l5FAsd+dntXA[T7l\ i[.ӽ ??򤖼Pm,NH.΀j# ov P1@'WzE 2?tv: @!Ѐ 8`(>7tx3pQն@tq}vxz'zc6{wUA%XPXQOd"@m&&h ` _wl+@xB pa i4DXunrZWjPme`vl)PsG؁1 hi huIM~ 8pCgbp~ \(0JZT"%aGD=6%ʷlW~0?wUx7GPmՖl Sxlh?W}|Zȉ!hAAWl(pF`CX1O Ҥ(<&rY Q >_wlXxS+slxx֋'pqdliwa q'A'pu+sB. эeDE ŽtȖǶ!qY*uyl{Fz;l\' MylYrȖHS7 qYّy&A( a;n!HPm/YR&bV r%w |Wc`z)QѓAXHJyLYmO 7fն!Y Q #a Pl0OT"US"-Y+"qu߉ !2j_pf8r(0^m' JqVRmQFw鹞ffXmV/9@ A l0=t0ẍ́.+B2IQ8IeSZl8@l9PPmBJ@6Y*^ ᙠll_Q QzƠq_IHRڤ'頸Ymi I_wɡ!CqqmInAK b/"/$ORx &x$7`Zq'g x(WY]QzjGqnsJv*ا`"-Ȩ 0D$̙l,w+rD9a'?%|9mʧ/q})imsuGZɥȶ|rzǁ! ) (F*inZtA 41jSlG6{l8n0]`A2PmYprȺ KǶ|KexDzlI@F+> BkDlb{JJ' i NH'[iqHZC %:Z,{4Sh˰ F{' h``ro:P;R[T+zZkl (1 kzjˬ  y{˷U1 slB+' Vѭ5PSL?aLB.0[2 Rlp&&!Luz˱Plйkq;漽SG˶V+; &q^ɜEdfh+Pll̢;Q1̱q.)v GxU,*q{9Ȅv &iI!3<AtJ'ͦN9T<|aGa畲hi8Ϩl5a1 0GNt<qoQ+Aze<ÛpJ|ǿ><M7-6 11,Ks Z]Hj< '  qVoPpTi|lW:TР1d0}akqc|l~ДQV%#ғpb +4ڬNЈvz=BAK61/I2 G݊ځ ( }L?Qڛ܉b םF,K !%{lɂM] ,0U]4 >~}}ڱ{lpPƺצFZqax!,9Xm= j} 'й (PעͦL@2Vv%!-/:LY݋;ѽ\>zԒkaDL !b1+b`R j(7!["mqnAT1 $ +-Al yDXQr9L.+=}l1 ؼ:Y’n*xx6=<얮)q<>^l@$5DFlt%$U`6m `J (%Ge盰*s(Δ!&1&Rҙ%\į\);lF쎩r7H l3 p!{/p_޻?*Fq*EMϛ$¯G#r[8-@^ !}ĢwJ Լ .SQ qH.Y +Pnq*]2#a6sqTc&k%C~(~l.P?7u?{Gχ}*Q'1azYs+%5έ"qC1  PM`!a/d@}{P`mfA 7% 80@ .%A8  )1@Ɏ HHb"Tِ d3fte ZUYnWav9Q,d͞@+6kqy$wn Ag+"HȮEyKxnݝ[npd]VcԩUfkرeϦ]mn'=ioދ,Y2g7sYԻws4t`! H|I;H$)$褈 "1V+6xpM)š:( '"I 䘈J,ZP :0C Ma⤁4%b@M&Á*>Aȉ b'&$.!6x',':'170sLZ\ ے ./P9-܈i@ۡ#R,!Dc͍M*8S,a'A$lGuTRK5TTSUuU9d8ڐuVZpB 'ͿIqb 'ؠu88K֦#H>.8pR`I$l3*FEJbrtb":ˁEݩ:ZD Aʉi-~1rYwB!-Cx[%Ȁ6&JVkfވt^Ha.kP3\@?b 433/$41d1VkP&I)μ:CZq{oom8`XUܸ]kLNqb` 㤣κDف )!Zw [k]V&Cr"d~v'dZIz ZF|+Ë)ۆh "udKj h UeRVr|`:=^ 7D < j3DbB0ּA EAw4#B @ U "p :4~ C 3 ` h@*U"1  PЅWt _E0Qc!  !acojīFsl 61!4E1uaR e$U|a]Lr!2& Ɏ0L*,ٿ8F5(lyR%d)ElTc0ұJ,!$%(ddf5ö iMpS$g9yNtWH1eWm r:x[IYLf'VƑ pD$* @A] !@2I+# H(EG!&U[fDy @$Z02&̜EFW0*hL6ɲt&fe^Ե8USjUzUfUp4@l<^}1hָOU;(*YA3&,*/өU'wq%iF 6Z!/ NI"ToFy@HgB*eBJ+TFF %2rșnUa @v%nq{\&7hWPLduY%(`PBɵklT吪lU Mw'5WRK& i.AJPb*HnrP%TYlR=v/ˆ !@/W3I +h{Ġ+nib3qm|c8!h &TĬCcp׻#.lr\irI8, HV&1?H3 O a<"@,S:*#V~1*,W&Y6\˩{}1AT+ WTǓt-}iLgZ$@ >ruKgDuOVH;2P4+G 214립W5Rgʨo7!!YҕůU8LkyNK˕Y9& 0@S!o]䗺 i|[wg bFS~&6MlpUoͺ/iC̭vٱH Y. x^Âk*hkcJz[ޣHCN=:E| 21_Bwxխ~ug][$ hAѩ;G:>X"NuS!uRLjmarCʕH`QM+d_oB"͍[>7YZDmj@ܑ@Tǹ~{^}<'akB*9j j?+=/%wddWtwL*m`ħ?OW7ͫ2B -ų0)[˰8,KģCS=#= @ @@( !;<͛cqs>6P٘~9AFH?/$wSɨ0js3BcJ ӹ8<?@{r <C;8SC @pd@C3Z`HWy,6xd!(7T,¤9`:%|X/lB<0%N+%-\.|S `Áx? B[I î@L>o#ChFiFjF&x!@AL8pTAڐ󧝈b:ak®p(ٻsDp#/ULSpE816xŝtEƃB;9d\vI/QFLI\IE%(D|qLY6P&@ TG]rT6GS|%hS[9P S:IE9͡@`piH= SGE0Z vdM27RlTTD9M0163 ^Sk DS(}Z <Sc=VdMVd]6 A0''I&XD]}:GH ˑ Rt i;%u9JL,=T ʓT{W[d) v"HO8RW %9hqR%M+*F7%:cQPN"NՌh[ ULRPO ΃H5Y;m `6uB`= g©ɚ̬ITfqĊIX]fq%p6Y%3G^`cv1TyR3V\yq%iuUpJd|B0Zg 2F-W+<݄MH-S.3 c݉Ѓh`Ӗ Hq %Eߚ9 -/5!&UiCXMp9h^LNx\ Yf-ś :l:SWRd8EXsߊ>6[}cU^e'.1%>mjSUf[9Q%[%]~˝Ml2KM] ONj|mUi=>ʈpfҎJ;Rg4 gEHjڋśh5>1]CmגRkRdߩFhԈŝK/ ;,I':CR`~=2NLh4l֊PB'Έ'sùݜ :[aa ~U:ވVLXb0C=c#d6vt,*dhiRO5uB t/40oIOucr5ٳѣ| msp8Hq'\ s13`y`tGnl0&fF%6x/KЫIJ bdbͳ Vo{A6.3!O֏X^ 3"%K՜,\տG)vsArk`{<HEX7OX' NP}ם߄7V?wBg 0Φ\$p! NJp"ŅK\"GA0 9@G@!Yrb._Œ)s&͚6o̩sgH&~ *I9 tD@*2 㒠68qE&]Z)TT>$"tB!AA@q(MR4 d^PdP@L,`pEPbx3Ξ?-z4ҦONz5kN|` ŋ lLP< s(9l#Ѹ6).yb'2(p2ǗdxD.1 <,>qI4qZf!-2]I֚bM'e9t`IbvmJ#dbG(>$D0DDb FZG 8[}*$D@SBa+.DAp 9V!k٦os  (MB~ `7-B,Ws(V4I%8ݙBQLMZw&PL4`@s('V $vldA)tH D@W2-2D^QgМ TZQDٮr! =Toec+Y򻉎 DZH|o՘?$B"tBdDQ10Q\7㜳; $m,1/tJ :)4l@L J8+MAQ6_DB4l=S tD8f#D{wJ@=S^g7&xf/<;q2-,P?$qD=G[Pn |%M"D7 ʖcs߽߃~n 磟kb00DE0tA-l~2~(2;Վ# p@UM8S p@a#t:03H8!޶t1B"h#|0' yHU"D\ !Oإ+R$|;\0K_ej HL>qȸ%gzԘH]92{!hKb2$'ŧD&v20Et3s!"Y(31R:$>'1L*WVFpBXZ΍, 7J|pdAL X!@M8F# gisu<)]PJ2'=i{n'?9SV% o t2  $@Fb9]e1͋CC p%!Oϗ42)MUϚ4O̦ XKLu}+>jSh@vfd{,`|-Co!# g{w9Xاsv9xoA]O뭄hBmF `uGPerGF &(F.:_ ` T4YV8GpYy b$` hN N,XAEyל1PPW؎@ t aUAH(E P/A Ć g!!С`!!o A @<@͆!b(@!`b4@L"  '.b// >e0"c2*22L+MR3ƓL1Rc6j6r *\V7^RS|69c:q:>;c==zJd`>^!$? @dA>rD(A2dC:CBBPdEjDdFjFrdGzGdHHdIIdJJdKKdLLdMMdNNdOOeP PeQQ"eR*R2eS:SBeTJTReUZUbeVjVreWzW"M$XnYe[0,eGJ,Be^%lG%0l%$e`f\b2k_2PP`QJ&eBeIbPcfhUCA0BjCkf0BLfjfAkmfnnnClA#Iq'jMxfVhjlk's>D#4wCTvbguC0l!fDtJuj'zCx&hg,&`tF{^tB8(FlKfhA$t2(T(e^&dfnAd>h@Am VM~FB(eШ*hhB8Ď"hb(" )e~I(" @z闆6ij4jfȨCt)ĩfΩt)ieihMTR{~ƝRfi(*0*eAij(iA*LDJf"DZ**M@Fh$+e.ɶB@x>"~2ALkFɵJg뱦L#uaKy''u,|_H&l)Bb$ +J,ŮkJgiN(ītV+M|@hDj&ɪz,BTj)Ύ*k,+T¬r,RbD} ÖT(΅Q-|D|zA^*hph@(<(ٚmmЭtmj&LHA (en@l nff8nAޒR@jRnnBBRf䶪tr\@KHvK(ZY!H-Jn(hgB@~oj&R&/otgA(C'oHK=oX|HtJ*2f"#LtAtf~&/K a0e ǰA8f&A/AHx'LAhA &4B7HD,LXs1[Cl1DOCܰRjI0묂*LK0i1߱*$@tlw?;1KDw˄#$P`oH 1H^b0Y>U=]p*WCtZA聂*(n4&ԲfrA!a 3e&frA0e:&l*'/(/n.kʂD3hDh>AH3G3eNs3.jD??32ACAf r꦳iʭt~Cts򓺳KڲA(t>C>3LLp'A9@ r=2<4Zt0KKtbAr6C4DQkQDRKRDrfH5eR&Xfb5ZCfC`<)hsAt^@n8:S:c;D6)8Ft5|uXSXIaRc#cguElaHvUSvCSErAXD`D\k\i];_?_iad_KVKKo| H4=ݴC57qMQ6efAS/7=;sC@ttKguBphpwoxkx:DaG&4w6H5uG )lcĦm8BtSww'xM,xz7xkyK'z7e7DwC|tvAȶv*\+|Kbrn#xxDUvo%ާpSq#"-B^JΚKfn1S0k7B,8;CGgT94yp>yJ#;-p /7ZtAw8u &t3Bɝq@_9gyElf:c9gCEoA C8BC$z/:FڍogR`F<AD 7T DMB 8AdtuC/[”yA:ZDcg+h5p&q A Tq#l8+nWK2aE,CkN:ٺ_uKt3B,}j6=>Kգfև֋9}?6B4C4&u{R3:\A7zدfI_>ׯZ8C>5Ds=Ex=hPӧo W&fAS&Ě+(cCDG_k}3E @=_%!dD|'|A t+@VMDOfVgPjTbtֶAXB!64h@U6tذB"",HPdH#I4 F*ti  ,zyg= }0j%8Ơ "ȧ9d=9K*pmڳLȶun\sֵ{oj'd B:Qpb#ҁ}A2sf$-)ZI6}5j*Pw FF-a|t9qDx0iU؆"0ZP"ÛWfS#d6rKcт#?Ǩ sCR2kJQ:- 8pFt[p34$K lҵ}Z%T/UbY-\I>Ĝ!pB0v]Uٔ7І#x o_[ЂiARq]*sӭewE`:Ng*~ j(:g2FK Zfydic@vKQ5%iҢYdm2l! wh)T,!݆ow\'k <$F.]Mv5F5ܥMG8_ƻ[RZ^nn= $ I(LHH%U vW]l=$ ;tyK*``M(\)DT "ߓ`xe>#QB4 N!zp:֙yAfavbI6B\ODXIa UV@<'ֱ!e157 isVl焦3":4H $0&bk'k 8A ~k *%ٖ(ܑH#t%h]lX0!LbKpBg]-'zt"g%ҜC5280ǼI8٠>v72bR3.Dg3ɆQdmX؀M.LgBq%,h.٥"$YBA$sb%| #0DruCIQ *H\P!S)'.xmN Q8RkR"$b"$B!O(R 2T+$"ք,q`@XceCWzEa&lY.Vv}pYud RKx KXY`֗L`MT\!bE:ЀȚ"Ѭ[9ںֱ\e͒  BWϲӾjTT5E`C$"e  $҂4AͯP0uNQ0 N tSͤ-=N J%m%Y^Y*Fp6eUq&1,Y 0$mX>GN Y `%9H(El ?U_!hj<˓+8U6H@<6IZRMu yڻܩ`09$japI=$RMAڰZ+mW&u}0D@(ya-kŃH<sk7ɀJ6Pg?l\(k*>;̬ Dᐠ #P&,a g`'vK`m`;] hF[!"SjndFБNt&9>h2$ -@O&y@<5t'27iIsC`G uG"W.p.I 9b,$ [aYYH-IY.XZڻ<)FRyKGej5dɆPR%J1dydAP:6M T]@oFܟ{ K}7_;mJ.I%붋SwۓL +$KefP=@<2"M$>dXg3[rD#ҿWfAs \W_bK1&J8ݛ,7H4!D!τB@BM@*PD-j.<:^lBxœpK Mm '-|m3*5>$4HbKM t.7P Fz/$ o{NB"OŬ6!J,: s.,0¼ ٫"  V%$̏l$ˮ@@όN{ 1GorDB{`  O- Ϣ DPFт0 C/ Ab,D.[,f5L<.<2>bm%8༆%,!d6!  ,"<<2o1@bPv#>_%q_de+.81-O+V,F N-8bj\n @j~pTA 811-0r`I$b=n$*"B"MH$+5!1Xe/ȯ! , _ ӂQҢ8e\nM.p7)?#,#1X +R,V$-Et!&1k@J zqqҸ"  @⠳Y/ .JpM4` $0"1G`V2[1@bV25Q1p3pA z =@LL9D!7<& D.aؠ:p5SS0lRi +I*7hm E!B%"''E5 b" b 5.a @P S;N(uKb/o3ڍN3O4BNs"T]<+8NbRg$xS;5 @Q=0D6:ZB1M$@.'C1""BbHb̔L AGN&@44BBpf[-O-4!6>+KCr|#W![b!5D"ذ@5H?"(:v0r!4>+ %S Y`5`Gsd^ b!3Ԣ] :ZSG?hv,-vikq\j CF Gi r/Cs7FE'+b '$ B67" fACbc_$$UE"zd7!puvV h& \olpGZDhEBfERpVJgQcFv@LЪ;0iZ7,w{w3Qo Bb?"t$hyokqjBBB@ Vx%ub$DB"WqA7gWDp" w'|vDB\;[$̷^#!F7$JCXO+V-dwN$L7Wx5x 7 a@x5=MnSأT$yoC5T%2$WwkWu+:\"}y74_W$rVo-N-f.q!6x 7q &F.ҷ$mBL3_ "|NU5 RLXJ 9 4#$V7FR-`uQ*,Kba'zKwmX[GdK#ES9'r"f ByCB$,J7|'8- "ΘOBvxf☽~Ձw`+#aQٜo>יC4bXtB8'fEI [T$!7]B*&yiVH{l,fBpPxgE}v$A"dC̍+4i"GL-U-:{:}"g{S"d"Hg--8$zqY1*I2tV pI# v^)ӆA΢؎bqY©;- WxIB{2-'{+ա "Dz$9 ڨ3[7;G{ n.%ۣ:-$ҷus$''v²3$GBpډ wq\h"A"L LWi$B_qع]"Ab⥍T-ZR_H$(3O@=[כ۽9f[+Bb !HdZ]!&a8Kb!h"␧{GL{qb2-,}{ XqGbՇt?|H`>Yrȃ\ȇ\3$ldOSd%,>oJ2$$֮A"eC{>/_8'(S5;s;K"tq @,zu]wq,<+/3 $NUg+B]G=Ycr1Ce2o-n CBy] NscGKI5u:o'1ܢqB{l=$"P3sOb(p{_|Z]%ɔGkݷ2;5㽧\?=AsDZ{۔<-[$gq[1PZr:Ak0L=|SK 8E"0ϽeK#Y z,|\os^M"GfZqB"aʵI¿[ĕ1꯽!8E-6m7S-:~]K}E=n-&R[ >IezL~ ~+"O'gg!g~$H!n{~b2$7`--a+?e!D05 ` _?rZ痟ʝU;h9î$._z$}u_ׁv?Q?b$H lH&c480DB"1Ǐ C~<@ I @TrӃjV₋Kt4 q@alsсЁmLӫXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx윋"k0괡Z󩐋Lj>ꢋ2@C9ŞV檒Cj(`\,}U&jb=TqUR(B)}'oVn"8hr b˟OϿ(\AUFFY!]Al\dd<]uDB D4B$aBŠB 5l]"E)TW&SXPprOq!Y%\M^]JQGu VSv mgP uT8ъ9y $ dtix|矀$a5@yٚ[Dp#A%dWXv!ftU5$%uvc:U[JpD` TDd:@qǤ:uzjuR%^)Q)TS]E *k覫춋߷ >AֳD^=mJ˜{W1YC(ˆB=pBR*_6Չ SCF<֧OFWU֔)Kь\eK kL7PG-5| *kA:K#\Diм ѬճIpB1NDB5JDsWYD\ Ud>jsDErĦ0: @[ Yn8&Bk51iO]an!f=107UPP]lYSS|EmEIO("894~&tkA SHRCIv% aJV ɒpj"7(D`aN6.J\(Ea\5!PND}4KpY9q$yMU 8Ir3-dA7ȉhxc\@ٺ*pP"y3"f2%8[ ! yk7Bf)Y5>T*^!#FʖԄHu79X}P P"Qr[Ȃd~: 1L,iA P@QWOExC̫6D~r vR%.;lO,~72hpAX7_W-Ql+,!``\{xr~V8YGa?%PG g2W *R|mK4)WmL(9mNPK~PRhH'pvwb*f}We/sWSC7w_ HgXH^z\q^(Jc7.yj5\pP,!gcw^qFK'Q,QX}BRT8uerQ@[511l2L 5 su/AKqZ4GLSxȘ7 |,Ah eq]meYvqmpggyz3,7C8Ũ6_ q7S'XhPtb5(|@F7 &Q)ڸ7tQm-K[`Ru8:\*.,~ 煪'E,A9JKI[S8Î!3]q^H}2u2͔S)ah92l͸xNn= e` qK%X)Xt)AH[8 ʅcU)f@ 'qThwR[ő 5};TsZ2 mN0wig psPjx:vA͹L ) |ypC0K-^ՕpsP6qМxBEۇ( omw%Yy䞯vsiTӜia Q=W1 p!rwq #S]Q2%~($qisр٣>y4L`[L0Cj1N@Kʖ)1O:H(vK0j؝v5J^ ۔KjϧV*xXCoj PhLEj3ulA|c*JMcr\(r.V9 Qym u `9}MSqsڪ.t٨uz^Q$jj:&qaet+3H:zS2TQ[;Uw"Ë `: 6ٺ:dYsV4ǚ :z >j s$ Mx CkV1;$[&k{1R!#tQ8n*L*<۳>\)h4%qT^UQ"+R;T[RVKU Õa$DZNYhjFl{Nsᵦ!EQo;+ n[ѴUtZA( `a~۹mq{GzѸBq*6`KV{O;[x{wtI": 28+ۼΫUI<'6cuT1XkTQPKқ껾 k@PC:VB:g>pJ|Q LsѻOC$\ HBSe[8VY\&|3(.Śqw} 7Y+>ǥ@l.7Z31LÛ@BC|XєқT ()9y1%T\K t\v|: ZWs  p@Пc4 pP,1L5^xɜɞ6XѐL~*3ɮʰ˺`B{L'[ŵ<\ƌGUc]H*||؜M~ h ̭2i'lڜl.ZN6(pG,d< 0= R!  ]} "=$]&}(*,.02=4]6}8:<>@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=%MkA *C KzfaxףL׈؊ us3hy ٜ]B\9ZHrb&٪ڬ gd2W9SwSaۺ !g{Hv,}׽mU p p ޽ծ %f(daMM7qeaRSC<(DoU0I-U1"efMts.hQ qr1,NȌՌ!),º_}|4 D^}U 5Nڸ2Dq{.ߞs>V},r*:4O?BPO(yWD!I@'!P„lbpNB2)8ƍ 8~@  2I X(r T. K0\iNNJM&>`xiąn*AE6' (̺J"1*E $6u%kݛeljN:Siz# $SO?5TQG%TSOE5UU͚UW]]$%)[5 [տTYbp~$H0E)b9Z(bsO!= 6!"j#l ]C`*>v]]!hb8:8fE`ȁ|t:M՗&4n5Ij p%Y\j+VHT(R@|b?%}`U;l&lF;9d8ڀ;npB 'PI 6<9焖,h%R"ExEr<"X4Vi2wJZ"hڄ\h[C)(7!SZ.(Ivpȍ}Sb)>%V"kV ({ r!nX%]EWm秿~?翧Ip6ͭ sAS N^6bY|p%6*q]垖zTS29szZX K @)@!{:3 "^A#(t \[E*L= U8L$.7G:юwcG BpEҐ ! Ba^ʗ% D (` @ѧ)$YX0FEoz|r;Bp <$H.R$jvfG)<,?ʞiBʘ%'S\H|T&6zh%չNvӝg<=aRHDjCaC D2/ZLHR=z a^Oޤ清`DR|G!l 8ZvҥGr.Jt1@)^J JRdQk Bl&dq )(u @ LjVUvի_=LЀlgONb% R/c C:2s|[FUdsNDؓ-_Y<'>lJ/U2QoMa#%s,V%jA:tR D^f񭬢y-E`Z,`np;\׸|X"#޺(f1 X,d!,Z̡ch)ؖPJ0 l$GpNڋϜ!\'F\n,P[߄HvY|GMȋE?zҗ_c \=Q$ Z ?6-^׀~;q;%ld6t7Cvڛ?Z ~qi ێ9h,š8C.USL$܄K #X‚Қ 4k6u+R3.$)90$"2>+8$b4cDƲ&x!Q; 8jTHR É/D8A0GaDS ǍȾL :h)L,;B;,Ă]ZG(E{D"kEŲBx<#pZ M`LƌȍȎ,EX%p+kj$6P&ļ8hj qEHG+K fPp`;s$BI[ ƦByB ʦXڈ(9} c[s pbt#BE:9$H.mX4žD˻˼K!@i LZT,:tLIxwAF~ |ݛ8w5sz,9XJǁ`# l DEK#lkB'\["j(m-rd% Ǯ{\T5 BjOd9S̼2;xDNCs,%U~R؈L-=UU2i bBӌ lCsckͰwvfvcW.=61 tdh,JagS䖋zW7kM[![N 4\p $OY%5(O~hyo&Y+/,7/Ǡ+& qo0pq9 @!h(B0>Cmz$8t"R]S-ɏefOd pBCWk+gsGNEZľuARrl0o-b/ 9JCIdzb'g8itԙm 0ls/jrZ Mڮ]mQLղf?Kt6tEdVvD6tوy6Hp OYH31H@HyDP05p֔yyy-P% y߄a2/y7803y/o/z?814Mz{c'|Rw 7ncXބZd)rXؑBQwU? xmx!ȟׁhN{d\juh>*MEh}~eXoH(\E#H߽hf L?2 a n 8(N,ȣM 2l!2ODF&A\gFƂ792Yqr' $#d:w'РB-j(ҤJ2m)ԨRRtZrzD2jv+ r 'V<b]a@Vpֻ:j=3lb)x>[,uN[ @ut5N]9,a‡/n\j$u&|*&( x8'cDrx`vw"(ft*~?1f?S~%7]u _J1P|9H_Fqj!z!!8"!Vb Aj?)htmu6V[=4 9(nrbVA];N+fDGYYC(f;g@-ce-d<ksThl9Z\Ѧ] T pY :hqd$NNhUw_ N4tTDhA1<IF+( ͧP}Sa9: *+A.$7X*뫄*,:,JkEI >Q^$5l@O<#DAvMyTnn: @=Wv$^(V]eV4uYuКY=oIfW/Um CL;37;\PTY(kLK _qZ:DC?ĩCO$q,) T%͐ ɯ CJ[<7u}7y<se12ĕ\ Ѐ?9@Y`)Dx ĄgU_4oUPQ 4> k"["AԨUhTtD-J7Q?T  l/8;UOB V d7;A(LUsɀF; MXB IBdiiZGȐ#8 Rn54 H_ArD$P)G B 3bPVkAHbP$$; LP~V"-lPU%wK0䎌JiP" a "8&ܮf^T8? n"9"9q m#E5dD,)Hd 2f !D*rXQecLT DP A;i#lH$g˥ AeA`NNē DF^R'*%Cтn B*I|'<)yҳ'>ۉĉa',H?g[H R! Ie.Cpj"Zd ^'͆@ u%DmX*f- dۜHIy$!~ȈVI**_>*թRV*Vխr(%EG!!#P ֶ 0dQ+['[T'm&Cz?ԤPC:Z,dg'hCZ)kA溓N+Oΐ6$L`"X=-jSղ}mUA8nC[вcUp'RXv'(B@é`muHHc,*ޅ#zT9&65BoZ'x0_uٽ(l,>0LiiU&aZʷJVȆVI+uW сfeނ|x!>r"a 3 N!BV0%3N~2"s%T  c!74wW*NrGb*VlR̐/7$CsB #E0pE3ю~4IYMRe173ji>XHUC? V۸ A??#-a>6͓AW'+Tt oi/,sџ &kyȮs-k y6zBPoB퇬{Έ5One38#.|!#;|H8k9qeZc2+WcwC.JMnpx"Iap yAtNxO03N:ԣ.h; F_հ!$Ȧ k8'HNԭj~;/-S C~]!eKC.̕>Sd.۾y"rzt",6}fw6'M~RP"!yrݚ2W3/Sֿi^hV&ޠU /O0VBB`Vɴukv"]_ 1MD(_HNLٿ ֡^-u~ N D ~`\ P ^s$Q:^C I US܀`i٠Bmoaؤ`ge 6U D!E anB E=E!֡!pD@` 1!D1 6U|!JdX>&]H@Dh5"  NII|Xl+",Ƣ,Z_N"+JIN`D#.dSAM]CL ^H 0^.vS1H@/Y%,#995#$:Н "/NtǤ=11*Zp&"]8JB@>m;<AGEB#b:H$IdW aAC$Apb h<׃D td! MNNj$A&dXU A"]!rJ4C*GOO^LLN$e|ԘBxPzYI%[[e@eAtC%'jH$Ȁ Aw Nn t @ ܀@"Db.fc>PfJBtq fDf#"hf$ecAP%Qԇd*&c:&dޚ^_&&a榄h&a Ā ؀A1i&j&\fvn'wvgDaOxvmeHqiw'|Ƨ|ΧV}DF'g1%q!Al'}(&(UpA Z.!V*n(vG *vDh6K2TG3r`j(֨ި;(+K@칖⨐) J"XZhU%FN)ViQd)@y*j)fh&j}i))Ʃ)֩)橞))**&.*6>*FN*V^*fn*v~*****ƪ$("mH̬*M4]!.}1+*jȴfE*n+xNt ȵf+r@N[ԫRLlEF"[$kCk+l>AW@=́^+>[XR,jHX Y,ɺpET,,UTVhkO0jȎSLEO,AlƖ,ܑ=ΜTҾV,TȬVt VR-~->$, @`m=5->jr$LV*thtԩ-U nnTHmESYzN.FFi:B܉T^pP,V.,AN 0A<+.Tl.OmC~C9>+.PЮ/Unh/4o&KlI†@+R-rp.bC,Nu(C @HPKjuqfT=JY;Dep*%;cb>wY!;wsl89{7%x^W (wB~ejOx3Ĩmlj#z$02ܐNݪO_o[IjÁU@N~= , d*Q NP9\mWO3')*pkmZ6',bXT$ et[x;ȹ%>S'6HD\ݧ=4 +KӺLJmCS"7,mt!a Bh@o2cJd9s|Hf t$#=&2ѿr{ ' s Nu3T`j&H$Bt<%UU^FiWM\-.=uBR 4C%Vl"UK̶b'thWְNE"eȳΔֱZY[[#S@OB HXR"DkC8[DRH< pmmDӃV bnQҧpѰ]yAWW |s^W ]ۆ6E!2zC&,4*X!6V- &ς<% kb$M1R!2"'"/2#7:AP fRQ)&A 0Rls*y'I *e 2Rr%[%ٍ&b$++2,B2% *..(JJB3kd6^ [-VxEp5̂ L=6qSF*r$p!F7)w1}20sƒ$Oׄ3:4s\)Wn2ؤHQ:s= =@ "0ғ=l=ه8 9p2$J*3A4W0@35l|rۼ63  8G4DE^LO:1`EqD?i  "¸`G[O>+h†B3ʞ%CB΀JJ0 0JFFi F-Q@"N)7Mt0 `(/^ l LQ M P$Kp=T"PFL\R#H&B:G6Q蔴&&O}^mS]U-Q ^3VRW X Wu5A; t I<B?BmJVXu[b [UrM=3\%[\R]^ٵ^X mI*MOxn>0nU]B"j^aa!6b%2O"OUKC! DtbQ6eUveYeb T+(%`=BZ""ʸ\]6hvhh`vpPM &cv><Avkkk֊KS̾bHjNm1qdD:naönn6oGX8_Da5 YPCBuo!7r%wr)rob!pv+NjU xdVy{7|Ww$D3X$>"(O`1MNw Hj|7ww7h$^_gp v`ڷ!8%x)Zh +znA+8+%` BY؅#`Qq8+X5+i$SkIt=}BBj~R,KVR@)1 ؊g`ɸ#!On C"TztIZw!B/D0趌2u&9y1Ƙa# @!8 "x`,)z9U W-Y$)T191X jjy10A68.y#@E79 V`Yw5 C!ZDOVŹ1"xjϙ1 yy"W8T@%9ZY!0#噞y :Wa/Z%Y)a,Z2zcx &!MZ"WxY-GZ i YBWا93j ١+ x ʀ噡Z!T":ez'zAK`ŢYz]7y oѶ,1 HRώBޢU'C [BØт9Z B;Y xٱ{9s F³x ]3b >c 2*zO` ʂOU5;a[ V[7/87x fDؖ[};3v@ A="x7Z d[k"O;S;` 8+[y&hP5ٺ%>$r&;첹fO‚8Y,ۊ#^b,#;y;ø[]Z 0cǯ ;ȱ p\)`,܊<“|o|[O7O˧;2܊c 5Xbuز/#ss"`?` ۹S@2|[_K-ӑ܊7ڀ)&@ĩ٪0x$-cXu>ռ>1C7O V+ r@ ǂx (/i| |=S^>ø7+~>yM2$)$-}[V1j}s'906usp+Q lRRĈ[;1+bx7x ;f`bѸ b4' <#pS 'd$|1ĉ"bxHB%L/Eb`lX1Jd|)㎕4kR$"C92L䊥L.3N }QALX do8yֵl`"dڲQH Tsŗ3bbb #Ð#KT W!{9tM4`B(%&y:k}; p-qd7T6P~{I6ɕ#@Mq7vE (oC;ۻ?ۿ0C1Wh Б@b`Cjv rI UGA Q)fw }qRL 4lYmI_ AԢd^H_hcgP bA(l70BBoPH 4 FF$F:`ŐFPnB▛ڋ@' D&gNFii 'LceX|. FD@gEt@M@w$\w 6+eMvznr1k lKlyB)!zx1tk^$AU*fB@W2&&4CEJ&-TzfDS2D!eDDp$dng WED? D>P }kPTn k-RqA3D离i TmAnA1'4 n~<| Cq4e5LQ|``43& ,p6h ջIɶM+̛|YP\@bvB4cF~(Wᆉ=pg,+-Qmlu׀qApI7QuG@K 񻮵 jW! ;)'柏~~+EC_S썑}c%dA.QAܐ&)C ƒ`b_i/HXCjy1D-e PPxaA F L:I"bp d }& _ |`A"x D bA , SA! Q" rEAd iA0 \ FAĊdE(1l"C()DH$B'4B)cD0AG1EB?{֓rI4T`AE ! ';Gmo{Ω &L@&2WZ'DН$`8x ps,9'B/$ z6W$> 9X $?镐aN4bCOس D37#<BG) #I2`?Ё'XM- tۄ@ r䠧aK#4Kl CA] т`"I yI !xa}tZkV2^Ⱥfz޴ 9QOSԂY-\M$մh.'FrA #+k< ˓̀k$I1"WF-9EgjaCD% E-cir&NDazo 2bDA"CBل![@MV RmhX=I?-u%EУ )0^!mv>!k dL.Z8"MP t S` ?EǢٖ5BI l}ަ QJ_n >\JĻAĻ ě1M{j41\hAªgX|rd pDֲ9uMQM 6CnQ+7D@s&r8j.D+#^anh!P>8:g;`g3ˈbPSPdKxix21:cC|laE3=ih%GpCy"XR ;dc%MJIw79NTm|f8Ept2OKy_.hQ )IYhиAT)NZY c%.fKA~ww`,AaC2SN3X5>S=E9Np[6?NbY=FVyxUi#!o\A{UPLIHtn c'A)Iih,\RP٘\i8NYGrD *@Y%_iAg>U>(`\P_pFFqUdT|2H7N. NI9dShYx@%bƕE~@hq Eڐzp iWY)bD]: y(УI]@6bPmjUu@ln Z NrBe(N*Fz$#*dyaQUn 'f䤣C S%)!"V Y^sJgT꫿ s]AdW?QgFlU13h4KU{1zgzJ|yC;zNI=zݚK*M1J!Odc@v9N zѪ' b?~ zJvBE ˪*')++-[U.UyJ LaBt:'6w}z{\YO( a?vĊ< 61jN C k?z!`O\,{˷}Am'X#945@kk4Q zK;MkhpT7/o"fqY+e߉>_ O I;x#5t[ui6k׋;  fżԻר?ѹ{fJ;C[[ iqK4! <0eIN˻z wƛț?m'+v{ku')[ a) QocJ)t& $x+ y+s[8tGڦk1OA1)N)?uл]xNf$,_k;Gk56"QF|Py{$eڌm\Ǘ060zx2ubWF R[2IȠSql u@Qő6 > ɒE\!%c<c7ÜA0 cr \ܞ}٬ N cXL%<l;]ΡXc[;P2I8M!^\Ta{t| WY'q\X;XQ9id)go3Ub+z  -R]\h 念K'a]hetxӜкLEmG,om|A_Gp< wv 6jdwH;db.bB4Wo dp wtEpup mZ}]n;4x]WpA6Q:n ~p7լa=֡Մ~ِ~HK(/4sT.4Pٜ3n: |j$ԨQH --]}U+`Wj!bZ~82k1X:QH6X!1CRM,!1`* f!AuQn7CQ'ᥜmkr:錕tx^U (b:S3)<$Sr1m/S?<.Egbk!(m+3RXMQSq\l|ox~2TNWbЅGIL?jk_@U_d~3F!VO_EP1 3_d}04eh@xV?UhDwuV޳^/``|GP.b.do"Zt0}/B/<[Hp.5`5}_FF050;WVo T͢^P6d8 70:(uJ釠ߋ'"Cbv?8N $H& .dC%NXE5nG!E$YI)UdK1bJQ&4m٥`2%Z&d.eԩG;NZ*J?sWaŎ%[Yi՚O@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\suW^{W`vXb5XdUvYfuYhvZjZlv[n[pw\r5\tUw]vu]xw^z^|w_~_x` 6`Vxava#xb+b3xc;cCydK6dSVye[vecyfkfsyg{gzh6hVzivizjjzkk{l6lV{mvm{nV7; |`"H5 qw(; /{|sSz" RHs[dSݐȵR7rw/ysG$40" y0 .t 5gC'q}}c+" K'H. h_2p'@q' 6 jB"jpo= A+g`H AA "‚>lwW-uYA bH".m"x .D  T(CCD*$cR@I#} X/"I<,8%&N D DܼщaH$18D{B.!&$ xI`b[TC4iN p C70*<>D,AB #„'hA(Ť,$&D'"$tr  _s3t7yNq“%1@VNq8dH.ΐş !L0hE A&P9gF>7 BтXt OCO͎ ;H 2t (m=Wcq)O^DdPeDX )Q牰Ra3 g1 FB8C҄D gDb{aCzŬbՀ9k\)V.QVb bGGMkBT,K&K65[%WI@U dpkD 4L(؎,v*O0Uc6 9CBU&0U2?ne!jB-$B*ܰ bYT"YC{DE 2$`nxB#+0O#i0ꗿE =8 "*ۄ䨐"h9w%ᗀX"o}(CM rC =.vF=R`duoBzI4 C˄ 9O qML?%*D clxL~[6deb&kq$t&Dn9>s*$~cE[n\HqK:ƂC /A<@ AxuTnB\DŽs_dL6ȜO<$V8seN.7ۖeblT }?WюB&ts$A\H"q|"\)WmV́X=Qp!"Wm`o{dvw ?К G*{%oPM!%?<҂t!׭0_gk=2?A"!BtwBǣz) XЛNyE7Dؾl Ȍ}C,{>!D% @aNq{5Az=!]OYv 9ChnayXs82dDHt 1(MH09_O4DHPK> Qo$2|{W]`j8?DZl{᎑W}a(3(I{^&w <ڴ?FZsZ((?ӊ{Z]RWr[c9#Cڲ1IP~=D *s$<':CA(a[T Mb$\@0 hr'Txp‚HBB7)KYMAH?#j1 7% ")(L(&܄CM¾`  CH_<ǃ8'H{63\EPFW<y:2ERĂO!44Db$6yD0Mc`a,8l#58\DB;CZE%şA[ 4/@CeeX<>ۡ(:/vD[;,S C+[ @9DDĿMؼR$s<{.VH'.l*>xCM:|6S3(X(Tr)8T$T  tSC|?zXʹ $?! rIJ;wtFȂɁǂG2 d1* 3 >Ĭ\ǒ8H87K,HRċӠkH̋;Lj8L!6 LxǼKcm:Pځ*HxG@\<Ʉp1#(ȜL3̓M4M#@M(†FKJHW{|c ʼLh|Ed`JGT͇X#4#@0IJ֬YL #4̒́˚Hk&a$#U,LvdɓxFt6PJxcI0|3;e·`PF͎x"TLLk60P@Q<6 Ʌ]{ήN,\|o $IсP8ϙ@àuOOBC:k^"O0l1=2MfTA88SPs" %PBSR;ՊmF5-Q]TPS9M"m$=_G KPLQsr":KQT?% &eG6MKX[;" Sbm .8VOTUS-:7CʱӉ*zմ?FT(Tʼ0FPQ0ג@WpֈTpU<OQQFy]5D0"#wQ+KAȦc\]]Es: ,V5M(=lT`W((Y=Y9aK.@7x7M9} ْ JXٖ٘׏Z WE5QFG5 u9VVMxQyTׁKل7$OyMV-ؖU@{tZI}?rE #ioX 7܂Xh((ZޤBQmŅ C R؁`CbVfDڏUb{g#E[MG=HD*<# l4[eݎL}E4X-dQRRplI4#@[u eȑ e <!x_ 6}LDTo#ZMߗȺauۗ c3MXچ@ܐhu" s%N}] Uk<)h͸E f Q-dE&|-SD n-3%Px_!>IɈ(bM5[WԍI x၈MY%ƕ)[bl- JAET-W6VSҽ(a@f֭T {-.Y7:f" NPM bSH8]!ދa@ x)4vne=[B`@愨X>=78>i;1X`c{_Tx)mfbPؙ'~:mCm浇MdN^==S>hʈP>@5N܊@]$m!LmXD(Ni,sh6N^6 e|2NirFi;vkn& ㇘ uZuCp "69M.pjƈꩶE;?@}Jʜ4e?} j&|HxCh}ņ"` ޟx V}[effĞ;2 v;ʐ=`esˤvjN~ۊ(B-@p`Vhv[N`m :*'Xztuu v1K߇XeO^F/k@mB} B/w ft/ #Ev/{HV<0$8 |goD~/*Ooρ1Gy(xo/HDhx,G?n1؁VR{wyRGkg1of"ozzx1(4(3A1hz@2X/8TZ/(j8`~xOs7w>_|ȿ|̧Y |/ fߌ}_}o}}؏}ٟ}گ}ۿ}}}}}~~/~?~O~_~o~~~~~%dY6~'8h!@Ca%X.9 8H %H?0` s6!Lp!ÆB(q"Ŋ/b̨q#ǎ? )r$ɒ&OLr%˖._Œ)s&%"XDs'Ϟ1ms(Qs $hE a*u*ժV |*`ծ^ +v,ٲfϢMVͧ VDCLk-z.#XDO8g`3$Fy3Y,z4ҦONz5kl.h 08زe9,15 `ȕnqC"B&c8ۿO<\:ϣO~=.\^^$ XraGD4EJps! ywYmHׂ!dDm]ǡ#X'bG䝊 Y A\@.XQI#f!) q8Fd":ci >ARb[r٥;MBIe~鐏LĆ4@#EH RFS7QZN\BRZyA4`@AXڜ(r *zةCh^nAkc9un[q8V챜z1pѴOUk^>+UuC[碛nKE׆NR.4Ǯ[K$ѿK$lcI>1D$8oo[ƁEw찻Wf4KpO=)Ƌz;ƻm$Jc+[rݵ_-]g dzi74p2'lrH*ae=I Cd@CsZc]yproK$7vd7[4IO| -@D(uC BJX7ٗ_CnI a6a#FY &JmC+)D3oE6/~ow;4z|3DlVlG IM:0n 9f b0 mr :@dZ-A@p HS7-[ @(I!B"(t0M }H !"e[Q$T-G!F ¨ˀ"tcp(#5FēDy<)e ۹4'AInF05yNM"$@ J&xQB+ҧP!(.[җ´R0t*i"B($}ħ2R(E8iz.i&DBB >nxI#R@t9 m੐})ZɦֳAU!C > HZUX}M"!RUjWĦt&"S4Hϩ,! "5t"`bjӢ6$0W!dL R˺1`䜥"c5"TLQY[>&l7![.6mO} \ QduX{m Ix xֹw>$!| Y"9 NBzɅI&ɹ̃(y٭a&!1ʎ$kc;&.teTwI/~&LT‡#\&2ldfF F&z#AJO/ K"(p?4q$Id"?7On"m_Jj刀v `V!'-!oI|P+mC_6dFZ֐E !'&)hL৾Sk)V# =}_Fx'(>*Df6o7sGe`cZ:׻|7D CTH$ 3v"&'Gvrz;DSJa!yߧ79FD&b՞F+ j{!C(O}|a$'ۺcU6 j}CF2H>ߓ/ıA139%ɪf@s + 0 ~Cs* D񜻈X"&DowpʙBXQ[a _=Cg}&ГݟBXi$ *DRJMD ` `G_B d=%Ca&Sy A|B_ F"*H4"!i- D落E!D `E A!1"mBiִ9DzUH}P!YR >B&!D. `%Z%V""EbŞe)aDUݴfhxPx .)nP̡C$b"uK:8݇Cā@#4 Cz'V,&(`Ѕ3F4])VDJ"Q"&c<㳽Q}"!coݢ #HaF+r"WB*B&ϡD=J#-&](cD92 @cF^#n\ ACܖ0#5ZG bcV!UD}L7cE8u0E#MMR2eSR=nB8@GRdB"FO)F9AJsTJ%UVUd-Z&HbPv>DWPSۭj,$2"D8`K^BؓdR,&X`QZ>>!eHeDDdPaSl@֋4J2gV$hVePy%B Z~eY>mFanmU"DV\J]Ƥ]V\QI&irGL`JDu&,EB[pDfJt^Fuodh8' OfcY*"a[n"X-'sRYY4߆*Tpc.nwޡyH"hMD[rbraՙ=&Pr}dY@l(,LNLe <>ΉsZYi)hbA֝R$g(h=C)C +DiSaةmhCLL]iBx`D 8d 9h@iiD =w]©جn*B)V#B_2@D !Dۨ)Fl˳Rk&VD)DNI BB۴hbO!"{Fv"iʫ*I`+8a|k߈kfpCSHg b%%D-]~cxjFnBuA+Ҫ˜ h)ʮ,DhB&ˮlJyD+)DZ9BFLrfnZEfRmZYh%%S$x Y%1q-BDDH 0C)knQ]e"n1TcĻ-GH+ep1 7VGla&}( G"/z":xk&srJ-AۆF*b>R"';D({))Si? 7m5mB*8dy.G _F/D0؛CfUVɓ)FO14H,--@LZf$lp0s"{VDhvrAA+^.(< }7q3̩~`)ie2D?4eRgc)tsϴE?$ 20kGKSøVpD. S0It$4D )M\QQ ZR\>G 4BZsG88,j=5JnHPn$@<\YcKݪ[cG\G-]5^G"5_5D`׏hK$@, 4nB<ԭ6dv,!n-wEX DL.(`UH.n\Cb7cr+sl\5f5Yr^g?4zkT]7}(^+v)vӶwwBaϲu+8'ϔ?hqoVeU/ג1 F.x),ljk[8ѮFێ:Rxu.}xR3Ljz$y-<ʍYY`YE}hEꑛcGF/˦T8gNt\98 qz9zz&[!W@T2QR|^s:-:&q9x$y|:@wzJ9O(zN z¦34(G:ƮÊ}{]d+{KS{[c{ks{{{{{{{{{{| |#|+3|;C|KS|c`?\@cBF8@c4vZ(t6Rݗ~`{]Z$7ZA k 7mb*XQظHI L>dW%AN\{cY:7ya8")wP0 2E20(+g Ł>^a!7&[![bT¹Ja7:c7\ "\7O@|bp l wEJi BF0{Ԁ/`z YHC8bX"Hoz`7($[S"@m)GbA$Hd /F#A.LVq2-ysɇ O'&`A\JC #T&3t)PPLr(%B|p2 &N4UNJ t7k^!dbaFLDfɷ[$TH9'EB s8AzDBaЉ4̈YR)UJ#RHD%A%D|X^"BЬ&Rh) 7EHNwEd3 IK4!O%bִ G 4g"bY rO|s jiYRUm7v*^9Ԯ*CRb|b Z[dԁU XE:kE`" ^h GH)~uU]y*!d!Ji[[E$^BϞ BXJJ\|9&W DZK\W̽`W>LA-HwUnn&\7^wͮxuMh7!*N AM>9ĿFͪ$o!r\gaĴ nW"%1.[1a"WyM'W"ITބs򈅘Z$.w9ħZ+'"Y%QޚdxLjphRP_j.g,=-k2x2Zr< M6C1xLeXY+a&EC$;.⁨BtOpM+ım1YjW0* RMY%݈3T0![[j##q}$R2l7!Uɴ# k:B:,Y}F9L2 >mGJV]n-d2p6_$ _k ]@BrW6B q9m)~xCr8R0)WrvձЉ^t OH{]O 3 dPq0#V<5:LPF4GnŅ:A@s(Q\NUn)vD߃DU74Ṑ<O;i&ެkw3w}.%;A.@ }.ŧ]v+yQ~"aOby7`^.n'HqK /]3+j(ԥNї_`!Ï}﹊"U xr/fѾ$~0p\DPc~?"؋" Pg%_!ޏ &p m bNҌE*i%8ď$zH6VWAŨ$@J) rPw{P%H$>ndj"Lp9lp$rL,Aˍ|_ŽP=lm 0! s0M  _!0!,"!2! khH PdLBƌH$_|#QB#@% Woq)hD&<˂kВ~bqk1"!\qej_L!Pq" Ơ Od!p !_*1; c7O$K(p ppQa Od0BEŽ ʉJeңqQ"jPl!G(l`B5 0`%O`D %K$h'sR'wr$ 'g$ i >P4T " N! #OT!= 2 B+!+_ RM>>!60" `$EA~r# " U#Lm$ <-37O`$_jNNP!PF/^NEcy M_VcU'aէVib(3"'% €$ Ԁ0-! 6"*>!5R1|~"QAU!6#$UYV'[MlP8 \ %U&eU``"&r#tQIBJb=Fo4b2="x#GeYOM xU(s Pݖ8-Sv%]+2v!odrdbft3P!h#:6!>7"r(N5eE㏇3] ll!$%"m2;1BٸU$&a\ lA$\qd !rh7!^X%q'*rmqqw'8 nr-W2!6:WY7Ƭ oW j&^tq tEwt` Sw~Y!e!Z!vyO .A ʅukDX,`V{{.Gvm/T6D Thq#6Cw)@)P~W~w"W6&W)&&Ojr "~5xE}O} 7|-BqLw$A-DSXqo"Zxpa8­$&†Tt$ Ml p8]^|__'^ 4)_?փў P_7ܞ_!~"r~`_ 6 tA  ,p#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣHB\T`L qHCJjʵׯ`ÊKٳhӪ]˶۷po>h@ᒆ@$a LÈ+^̸ǐ#{ep X8`BɠCMӨS^ͺk :Ȧ)"-` Nȓ+_^78X  m.ËOӫ@} ƗJ_Ͽ_ 0BЧ`CF(Vh[ ѐKͷAh$h(,7A]0& 4P<@)DDCCLL&PTViXfqDFD4Ɩdih<U1dЈlix=6Fn:砄j衈&ZpQ%褔Vj饘fzTSnAcj*ꨤj꩚ i*무 $f8AK+a96F;؋qIJv5ak覫+k,l' 7G,Wlgw ,$l(,0,4l-8<@-DmH'L7PG-TWm=!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###+++333<<*B-E2I5M:P=UC[JSA`OcSjZn^o`sd|nwiq>6B:F>G@KCOHPITM[TZTd]jdoiicrmvqys|v~y}ׄvى}׆yڍܒܔޙߜࠖ⥛㨟䬣泫尧黴꿸ÖŚǝȟɡ̦ΪѮӲն׹ټھüG H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻxq LÈ+^Xk iL˘3k̹*=ӨS^ͺװcd@ٸsͻDRiȓ+_#IͣKPνwo `S7=(@P ߔ5}&>o0|ǝx؍v[ 6!@m t>8 8ć \`mp\LL0h8"Ԉ bJ80!L@I<&'@('(TViZ %9F @ĄhbFY#Lp`@Ih*&q ) Wδ  hfĨ袌6m0Rz:@,b K$v=m@ @o:%r&o$b(+JiGŕR2&,z"zdv@Tle (> ٚ+ֻP &j;($v zjPDԊɦ'gDp8@[^,$CIVį<4co0;m A)&%7)I-TstZJsGoluLktD.Ԥv W-$I4؜3-+R0 Q̌@Azb: YԎ@bGΩ; ?ȶ[=Qc@9pʮ_Ѹ'*oZ$_2̂ޔ ڜ_X Q0FLp5h@A"v%Hz7ҺǑJ~D/9I+8Nm} BA "`qV0.HWy$̲E5tVHd;z1AJ[@TW<)vH*ŀQCE@{ y ;a!F/I]DF`S/ز/>Z[D+򐈔 $P`Xސ-[Fz'rE&-ZDsC#& ^ā̒.вqNacŔA 0 /T(~X!|0&P9P&\2)2~q^8Zs ЃV#>OpPkdn,!N5124q!]L8]!6? $PƔ;6 )VJIӚ#b ĭ"Sj">%M@1uY-8@,RZ;6#wҙPt%Y%:Mֶ>}cXi,!MMX?I45 _qHʔ1,j~M"HH6Gu5"8ĥR2J"[GKZJyAZ1 hvB> @XJ˳l9A{nP6T"K6n\XjT4Fd"qKB,07ē}X1GA,$9ʀ4ĸRBNk+7#b.E8cl7fDZYJT< WDIN9Ug\u AmT r4Q T[Rd$i|_^em9JQEPӴkX9AɪyYܲoNcFŴe,iDM۪ܣhrd2~e{ X/`1X".Ny4u'3׃@1ε@"~v7 Z q7v V)ah:If;J7A!SA.lWV*WbR&@gbti&wA;JvFk(NO QR(>!m]ELsuȂ"x$,$ bk5k=d~Dwm"ϓ(چϽcv*i B&o+g =vL;b2~R"WMeSŁC6WQ$uR|oNkt凜"Al+s 1WUg'2w&l 8oT )H7d: g6)u&xubx"Dxg+)28I&Ni5!q4#.p$qQBx"'Wy'ц|34r!Qbjv/L3~y+X|5zqc(<52Ct+AL̘0ye}Y2%(tv wV,-cቿŋ ъ8)yG% g%"'W@`?t(ik ixa 2H϶.8 SHu('5qHt,1GhnA? #j8a'AX P5{ y瓅80v:٭U*งʱd[-C<Ъd*!ǒa+\; 4$ᢢ+&:y"ؚ | zΥ4@pC](sCD 8J0 @rȯIdÙkQx{8x(| +!/e_ ѕWbc 3spkꕩ(0{e|c$hU#N<  A h;X@$뮬[|Ǫ #Z:6k; Kk+#gPJ#\Wǽl£Jó Dß+8Khe+ {GUwΫ/fZ&g'K俌3G>_ *p)7/z >@x[*-\ \W a sƲ.?֓|溿m秫ŭ;)3.Z|W\>r> b⒖L#6I\jüz/艉IWlk_62H᳷iylɪ* eǪ3%2&-jGQks%0C*y==:ۘ(hT ==E=9M[fj῭|KU NB&&D~ i,!w,W5|cɊ8*q5ϥ< e)}c..U]ڨ9vQYR-Ę} Pq||yh#rMbФVL&[iͧRģPG&ƙ=-QD _%l𝖇]`~'ɪ[m$D|\3dvI"';m<Ҩ£"벶Hp QIZ aHѬ Ł+-:nti!a$Pi#Ʊr׃2SZ,Mj|ݭ{Yr9*)c|j="Օi2Q~(ey`N6=vqLa*1^ǖzJ Lٸ1 >d}҅ Fq>-3ˁ]Ξ=9A M!~K>]9c}8i㫠sN(JɯFA .r`>4| Ɗt%a֧΁ Cd`nȜϾ&x],&_E;fK&@`@nI=C+;z~~뎟w Pm pZm߃,YK @hߌ&_ ;L>x6}g!Do A:y84~ܭ.c @0"l)b0qO{WŻ6p̚%N++Ԥ<_ ̚bO^D?+Kmk濴 X`mO}TY?*\ /QHT㼭_k?. 1J@n@B 08C D4PaL4: (H%M! T.AQ—B&lqdF@F: " 4 GgSOMN:T4=ۣ$M$t <9*.w"h`dqM^ƍ?Ydʕ-_ƜYfΝ=ZhҥMFZj֭38l^Ih\,͇Ԅ,@ ܫQl@i`$` H>: ֊ =$DxIi7Ma')8 "I7B گ) ΋N%C?1DG$DOD1EWd3z1=8X!5( RИ)*[?b%mHRC KsZY, A/!- $ȏ>zcg!JLi4ɊX#e̡^iK/ An5 :sU+јDf2Lf dH.%s=tUFv+J3KAX1#+\Q#x16?M"UQ܎~)D  xrv2̏1*47r$ ]B8 xQJ𹔦($J2K :LԦ7iNxU2 ;%# 6> 5_bHL3 " D 0RD@3SZDdQ!(_::9ћVw6I%cF$ͩRj$qaO"Ϗ |I"VH+ 焤SvֳmhY 6$dJ3SQݕ1꤈@Eğ<@`RD)mE`G-m696eL`JK…Ъ;*Eт;ũ$ATZm|PN1 {[˞[%/Cb: 6Nd+ZFpBمX2VEfB>&Qhv[E&pa2$`r eːȔQ{7/X*6/]61r XZy_H `kMUV&S?! -I Ŧͭռf6],F* *73LrEY4c3\0`F d ԍH^txuR'͞1}oDž,PH3dlj'9F 慧"dsFvl5uLp5AkIvlc@fݐ zV̈́)*f6n㡊 Bފ{ fH "mJ@rz7N*Z]l 'cn)_"2;oBMm2'GyU!C+ f=#I'XFE5VR%Bua`/K! 늼JX&:Ib]QUKZ3#Ri H^$!CML\z|?xQDIlwDGCF H"/-PamC V՘;j|PvX&gHIg,N:L\Ac@N? NxWW&swS}cP42S%ٽjÌ"<>$5Xj @/3 H,x* -*L s ;$ih6x<{=hþdtQ@=軭1ػۢЈAZK58…x)Z8—b) *@B8Bѿ?6H )\QáA iKo:7Q<@ D{<=T ?CY GÚ8 @ؼpkk%ž%$92`7@C%`">hiT a;h? #7p(PxB$ F \ Ksy|0$ Zd7<գ9+1ha;?IQ(H|#~SŲʴ$W x$t |ϼ(M͋G\-4= >=-ʨ5Qb eDe||MHIΖ8"$r )>ǐ@:nQ@ Om R%M' KA,6Q!eFuT uSΒhS+k(U 2Q-QU$ N@HHȭy4133к,^m0(MHT(R8_TVxӒ͸&4 4ttk|mnթ ݱN`@̸5;)TIBIeX)WA } t bՉ3: \! )]\ JǓ(M¼(XlMM'ɋCToUٕeY/RMr%17a Wl UI"TSЀLC>J8sKokUHBy- U*% ͌ VE30ЫO )syFذIvmٺۻݘ/\Ԓhҫ}L% q ĂB<JlLtɏj .hRǭ:%ͤ1T|Vy)D HvpMR:WSFޓ 1n;8- ͜  kcQYZ|]Iʽl8'aU|gRz&WFuNVAP-e*Ǹ?);:nc~cg ƓGB͗;emY'{—xwf8}X}偰rB1F꤆S Y,FKcG@;3`pnin]"dV FJ"ˋm c z zD8C=HG@ &kXt K~ʆA(Eh.bc( RAlB4`i8$+uԵB6$8}pQ-?hg\$j:g>Oa-jXΘ6>.5=8F[;XiQ/8I$xScx)p;p#'g3Q[X8h0p>ڗN{[|GaPM JCbk= 8]N g#<:X8wjvg`3i&"6!7 >q`F;7@jewZ)^3v[ ɘG})NAr&+jmdb@0Mi`VTm!9&8ZsrgW\(Z j#Oseqa&X";WZw Nk U͞԰74T`L>= d7-ىkd)f kLMhSE^لӡT2$sس[|w M$)VoϋVWfj}1!NG0c~raP0,+c@ O+3R@ @4` ?G (p&`ib x8<8&VP}O͗ y%>z &gӀLf&uM:Q{qCns\ WGV=wH8͗h/V{ΗIk.sw6,/} Z "b7ǀAX wƧbxiG({ò {ayJ Rɡ 0?fJk >{sXnJ;~ 4ՈK/ :'j,hA?6j!Ĉ!&@hb&%#H M(IAȔ)ƒ2gҬ9 J|L|b? 2G,|(A6'>PjPѩZr+ذbǒ-k,ڴjײm-ܸrҭk.޼ Pzk1@m%=``ƳQpJxIrS1M(+ELKnZ $ʄni h.\$2kiHO啳o=ӯo>݄Twqh zpmCfVZZ'S@Z\N0@[@4фDG $|WTXQR L079H8@Ltk4 E8To,%H@ɞ$@tS ]H(GhZL4g%q$PڞWe V 8^ ]>ZY>pi I XYo4E00)W|~|8>*^Pp_IfδIQk~$@l' <0|0 ,d·I$i),-\`kI+|U g]!AYrmPqGymr@<@@$!1WПqN&P @@TLȨ_IpM?$0T@){G?<Ia5X0=8Pvok~U7$*9衋>:饛~I@snyw pr:H 1|H ̨@){=?>>V%????b$ < 2| #80Z%+ 3 r CH'&X/$! S.|! ch:I0!s>!? /F<"%2N˒ D'RV"-r X Ը(1f<#ӈG/R#(9ұv,Jݱ~# )A _4LE2|$$Hd I#Mr$(%< CU|e%D%7%.s] G>tɏǗ<&2e* TBKfRּ&6٨ 6)qIH(|'<)OH2$"J7}gL&%(BЅ24,(F3݁&NiDn&=)JS:a^JIT*әҴ6K7)P*ԡ\KCS2N}EP*VUs =3=ǭf=* 2eȪh}+\*A2$ H]S"~+= A%w,bCȏ,f3~$gJ-5+ђAM 2-lc+ٖN~+VJ*J򶷾%S=.rM|aR֍Gvt^.xG΋!Aë(6o/~:_T9S~,YXK3LݮlH0-#0b0C,bvU%1SqJ0]1c,ccW%ތs;C)@ey,!ُX%3cTkNd'SV^"nS_^2{pf>3=H`i~3$;r3@G)|P_=І>4E3ю~4#-ISҖ43MsӞ4C-QQ:0Xuc-kHufR[ ׳5^ 36e3t 6 fl^G{|H#>O`Eo@5Dܼ&w6j$ !&fA n}%)úaՉ֭mp3c xPx2A0L ( 6=C¨v"D>\@o0ns󵘁CIO9QoC I'ҏr1y#~k!^Kɭ. #5<0H&v[@ /D\^Ժ& XxСjwH~LAqy߳kwH=Ğ׳!Rb !9eO 95!z[ b?=9x!0a aL![B \C}CL$#Zp @1Z\hC\!& L| \D#FD#8( ^&t_ L*]Fb/ Fc} U][% (\H jbDDC ٙ5 C% `cC\B͝b-B-Z.6.6c 8# d1 !69A4$]I[ 7> `\\#D 5::#CԣYGC3_D|B<]8B-$:DBBBC _?>]=I: \G%H妥⭹cI%["@ LLCZ A$D$%ҕZr(dYDX_>z$3BD)e=DSS6DTT6$<1hbAR@ArX:CekY%mV# n5Z m+b]2CLɝ@ _`ښ`eNp )X%\P6D&|# &<V:@d&BF8wz-.`CeI酧Ĺ%[0ݍ'A?hCA< @( &F Ć@&L_DBKCz:dJs@ttN`=֟X#ADu%6#|i筩(Hgff@g^Cl"(te6D2ޚvt hzbI_馵TNE"6筹[e۝aΨ &(ܣC`XC|'ͧAQ[9}*ښmn HP,6DWҤC| VڐJDڭ(djC6gZJ"^iDtm z^(Xhdw\6h=&%TACDڧ:~fClkeB}Ct:+NDΪBFNDEw]FD&c\6BҨhhRWlz >c6[dj&~j"RB:c 怫@n)]6ZoZ666Y&ԚND&de 0>Dj&ᗞ@&YD,, ,Bbbޚ3mWFD.-Zҝ\t"ÎD&lbM.+Nn $[WmD ]JLnMlm͂jƦ((J&♡DŴE҄&sn.vnC ]ZŀnW.DmLJV.޺,,6Ν/&]n\>F!<(T/Md_zCZ1րhX/kү,}گ0 nr&Җq'd(D[>VA[@nD<.zn1]ґ/W,j DT# |##0](|fo6D pl CD "_Ě"D#?2eDħ>l@%Ddߐj"[`kV-oJCH߁^6>_Cp^zok횀"jE!/.3_! D44m(T?6qM q#C,o(䪭m1w0ȭ22SCkF)BD#3;*?>C`CΫ 0oTtECD2K2KQ3thFH@Wr1Y %ocD$ [A^4nB @C1E@>qO(x~#c7h&H:C(< `CbtQ+DR !`\5Hϵ!LصX$ Ad%KQ @^jrD @  @Vv>Ԃ0Xx,.va7D#@ @ d%6暀 `)JC6 , W,X,okZkZG4]Ow-OʄuŇz7O >]iPjg?DloYrc6XFVɽ(\i\P3d6c? rF9;D>tS7[X^5Ej]w[ d']z*P?D6Xlaߚm_<; D-%J&cfw &v!D7-xIUʄ!t@^~w\+D\J\4' DCd=o!@9fҷj8Ƃ usgۉ9D0C41Ϣ/Dx0oDlߚ#WbD4]|B|c ƳY %DJ*gBׂ xnDsE&@e,d dBL6 ؀km#~c($­O]epAi'oz3$˧^<!uY`AqM|"ЁAG""![s#sE&')sŃLdw RCzǗ]W|.;ʟ˿<<qI<<<<=='/=7?=GO=W_=go=w=؇؏=ٟٗ=ڧ/==~0l @SJ=~in!E/~imXA|$LP>OK`4d^y 3/ @g}đ C@~D?`mz=DK9DNĉm, UߏT8ADV&]#Ԙt|?HCĆe4DGy D?@8`A&TaC!F8bE1fԸcGA9dI'QTeK {)eMIfʄr&> ǠdќlF:jUWfպkW_;lYgѦUk5fε6qTp .I` L[Ç'VqcǏ!G;.N[Iԯ(j31 @8q#({LPj*V|`3I/QO]V e2eVj> hvi]L,#^zq(]&{)t.__u{$ި>rAv9G5 0>h\A Nt>MI(ཱྀhL&|1"wRHd0aAPB^Af ƆA!E4(DiLbRNm ¥mDhQ&ZLGv/mtG9^PߩZ E0PAȈ?.$",%p#!GvDK@š> Α'Aiձ 7BDⰏ,H X.D caeYw%DV1Le.A$DiYH+cddFfiҖt"]h]Z@&nzl=O},!%C$,[ARHfqF(I)‘3J;%\IQRtHfd-j~:eAf ޔ +h{y" э2,UUM({:Ү|.t;Rb/hZiJE$=9IeF8$eĩDkuc!YיT32\nDX&*pK5Z&C[M9BPTUo\!\P$$q¤xY71j^ L ܀Ew2ٝWĵT ve$$}_1.լ(ZPlMY Rɴ],buAbvU Ҧ W[/ ãV0;$AjlWW&񑑜d%/y>T3PD6cj B~P^ LP[VlG6uێ3 `f{a\y "Xֵc69`|Fq[^2rQjU2C&  L ($}`Qn<>R hkgemieWgc#& |0Bv_]]o}Ul `p/+qOm[A8Qr-wasϜ5qs=ρtE7ёt/MwӡuOUձuo]ve7;]}gw־du_TV@6 T_KM=jO^ IMl~4!- 3?Vy??$|K+oO>O+1F4FA/F OIL*Pb9G"L"o7OK*|cpB9#ǒjЌ!lB7  7/ Ϗ ! O GB<6N 7 ͐А*0>p0+2~& 'Nk!`a sb/MR"Q+0 58*J7>V7/B'C+n >$` az~Q *qq11h+17oQq%`rpq  @(` aQ *qqͱ+ 7 b!C""˱ %C&=r B0!@> &@$<`v`,1X,4v b%[%cr&k!A <&4t+u@ r/0,($9$%!4 .#rr b G,u`R)0S+ S,,-r <1Ϗ+ !pR'y'/ 09q @,r &!!,O2%"6/R!%aR&i&+R22[4b**r+0R00 s +sls6!Rk2$2173u3 425W2] 0w V0!Bs'%'#)!F.`  d &o!BO BbBA$ oqA @9@"AEck$`tdth\trQ bq vD9oEAlJJ HJ-!t@'AF@TAbI{G7OLLK2BtD5D BH H4I4F˴FIor"JGKcKTL^ @RN7oKbS߭cQ7b 3t 0tU UC TJYCQ7@BJ! DHU LP50|$5YGaY9YXu'9O.oIAIQTX Vɑ UUbXKS!XZ7Z"ZKTS]w5XoX^WWB[7[__U@\JV/X#& *Ud]]b"S]~`bObίai^'3WKTu xU}hiU\ochf9fgOg-#vvV A *:` R>G\i]-X5jg U Vn6gbpvl7l "iXSpvi l9/mGammtvpv!6cOo5p"d9oddc *UV!kY^wpM o"v3E v`! "67^V6eP]tyw Qm4r_Bxٰxw!Q()$wW Wb B!rj wC}vc|z^YQP w[/87y {yiV}|tA7yX v )xxW"~sb~9"UQ#Jv7Ovv zW!|l` ֚B dBO b U &| 8*y $& DJUUXU7 &ai9/wD< y< X Xx!jFbYG[/GsMHf] Xّٖ [4qYs֘ ڸ*<a7 “7EH*Y8ǘr €"YmY yIkWWYd4qYyٕ}^!_R)oP!exG1 @#?X#9e6r9/t ,c! QtK.jU]q*`$$Ro*ఒYY] 6!nyo¤ EC{/EHn/m !Y"#Poх7ϫIVMc -@<:(p#*T!؛eyZECp}".{sfϯ# 7j.%^me@ p!: ߵ :!J{Y1s oe:>&b[!Hy9G!E`;2TG [bVі9[=I6}7 9B,6!x zx\\'7r5r@p2-Vb6  ! M|u 6-ÿ'|VSY ,|\o"GU_"ƹ4Ǔ۵G_܈]\ ƫt+';FBMA44@ 7zK,KF`XM'D|->{7/;ColmV 8ŏOѯ6е º2=#< ɷ B){ !]҃BA+6̾<}k%L7b!U|c=iUjJ7i #wGA_20( 1i׸b ؑ8uoM y2ƽDɑ;3}1 >1 Ve[;%̪La6!f+J$W &UU]592 pATÖ/}ߓ^O^=6SMGV!}֍uFkkjR#o#gWyJ#c~j$*Ej]c:d&7ѕ|"s7~24  &qt >i_~5_ 8H1KS!"޽}Ȍ?J`B@!ȿͿCu@j'{rv<)~MߣKL J:0!PpKC ^aD&Q ~J8Ō;~ 9ɔ+[9͜]໷r>%& iNJi^i*ZyA(IY*(- U2A6BdD"U5%B&|@ ZmLRX%\ U1 k&4ffo0/Lk*lCê9dQ .A#lC"tOڎ­OA+-nL$F%4IO ePλi6ߌs:s>|h ,V1AЙ2"DF5IwI~JDGcBBip) JO Y2I~~*n[T4A#"x 5=$K+ zY1a_+ص&BccTAgc7Buzެ37_rCxw75(t@~2Ԕd9H|,OO}_}CJh ,&{CE xw++FE א iQ:t6ĵd|;_`a <1tRL‹Q [B Gm$dB75ɏ~Ђ aB͇>l(0Ё[A0悋cX "w4ZDdb ad8?%8qt{8`1"F:f\ OGCZlL^NB0 @!1iSPHJptF,]S%A\"e(M($#I[x$B4HtR1 &Cbɕ2)Y#_FR!ljs7mREƌɏQȗ`5\k%(!PC)$xMXrhH23!|'ADy˂ !uL 3Li:)?PL1 ?P,s5)'0QD+&ȗ~sD-QԤ{ EJ>RF(Qby>9r.U8DH* EL p bw"Ԟ'D<ӵ"ĬY*H)Bb#Y&XrMgmҊ&Įy+h q88q%-4K$A"Umo"ՌB!|AX2N2V0Qn+d̖oMt4&z.(H3|y.y{kW(H(wOU!(#H҃g} )K> 3H5HzbP=x1x `/4Zw @@0W g%ȅ]hqn{)/ :wФHLpژPIq|Jmp{*)K%` ^j)rJ&k7{+Q +)98kG z> w )7HY=А] Q+4T )Ag2*i)HpsK pyu˷} +Kk˸븏 +Kk˹빟 +Kk˺뺯 +Kk˻뻿 +KkNjɫ˼ +Kk׋٫˽ +Kk狾髾˾ +Kk ,Ll  ,,{ K5YݹH&.wz-=,q֤:dۊ@KpJl "|NY,pX<|4ZlVV Ҷpk)i|{`ؙF Msl\Ϩ l=FM͊Ќ pw ]=  Tr$={ [̥=,&(.X.fH5aք] ؄ =8 p @0 1 pG-0E؃ o0ٿ0\| q^]ʍoh0ͅn m?p{w0{A/L2"I ">i{"go0|> ! &Nz@%)".ۜ<kFn(-&·I @hT c)p  sHʊL/Ѡ& MoE`e&N }xēa8y^L{(s8@^nԹDR QwN#?N-IjLl( @qWe3tĚN<%2cL{N p*& 0!^>p/LN;KnddqEn~}}W ?"T#sH.Q> A> \I𞓋(Jq2! OnI APJLVzIkGN0Q~o q>p<Œ1a>۾;_+x|iI) >2cZ%'oؗj8s?@cі$ŘX0 oI8@B5ߘ6o70ko300`.q bB@3a4~.eP0Aaۿ1O??2ap௿jSr%Di"8dqw:1 Sw$ {A ah#AB +B 3pC;C=DGJ4DG1>6q >PQm$$ȴhԐ Mސ8^;@J,߀CK*h*7bH-m!r+G$ P!$Z QȇShhHxH-L RJ<7Dɂ0L2@84҆GN"Tq N7s!J "!>t3253#ׂ}H'W%`MM!I|-R؂ILKJQ6unm^.<+:{!o+ ?|ݕpËbK6dSVyeeđ; &*fG_gq0pTzf6rS}mI^W .m UeH$MV֣u Ot!$'z{9uL6M+Ϯ|;6h5/m]Z<Ĭp[C qӖf!4t'.70E>@}!502Qzr藽BOyaMأyC{ ; _}_R8\!$QE md 0=$rw&%Tָ%lGx'+-uC6tET6&%$up֮'))ȠC; 1TrșdX) tY H!,H<¬lц4<Uj;/b"Ѝ#$Id!-I Z58aC^ ,`qrǽ4:ZyK\RC$ N"5gopG sNwCuebRHBqٛ ÔEg t,]$*q AArE\%ĉI4F5iIsk#]$GJASǭ$N[,#>)eKԟ댁.0L]ڐA'(wN`;2h'$y&A(˓JR2L;+O"2ݔ.KC"z4Ԡ^ 1)KMtrjKBDt^j!( Zp@e8C0\Ah$Y@0' B P NWWzֵn@!4 臀"׹ =nCc Ppo#d ^pwwo Ex 0gb!#B+nnU !2,UeB':~BLQ0>ZmCL[.d 0>:t!d]Xi: r Q\)C.#N 2rg#. w3|i>K!i_{bT=!Bd4@%{_s|;6 4fGV@ ^.GkVmIHwVUW u r,UH y9c:Cyϼd!3 q)?H,@両H@0 \#c0O  =8@60AӐcC/ ODxm!LхO:Ep'p WqWm-nlq]pysrе܎gVPUFp͘K0 ̨ 50Qw2]=1 /ʣ}qPHU҆L 3%4PC`ͅp].$P*f0 A)6~%%g"5\5)cz9*>]=6.VV 5Ŋbn'EscvvyF¬i C KHNDU*ʼnL-E NO[ԲiZ`\΁=WXivEffj\sj!DHqz aRwddN5F2qQ!K5JVKd<.'TC`^=x2(4#4Hp4vC.mkkknF!> G8Fa&]nO-$܇8`W#ׄNl#rڶ;=m|QXEnFc5@m{Vcч1($ 6缉X)Fr 8k L0N8oo1HDֲjD\  S#hdn:LG@1!C0:dԈ>!"C$fh`BfĀ1Iͧ6<> "U@lҐ08=$q`p$rU !+!oPS6gc dV,rC'*M- v5H$"A 5HhJ. :*ql4WN]]G!Lv2"EHٮxP@1D? xE!Z3f FTC( M3qfj2=ْFZpr1dȒ c G+&yHk6:xISB1l;@{@ < ppD7"$ pD`Ci- v3APq+^ydކ EN@%8І0hBC1b,'t!F@D#pϦ,Yb0/P|:FfH٘MK:^H/vkLu`H&:w-<,γiBn`ydcw|uwj^BPčSCީ+P dB*8!l!TV' a" B!.WJ[ 3d[֤G;r5A)e?,@$Wu-8148@I1E)E}^EhZT!Ձz] Y(S@ DT)AZBDHbXJ%ذAwL`}PMm%A%v9a4P 1 \5@ 5|B$S JHƶ̀_e UC H Gdܕ6^%j5KCxa1D" ]@,%b&2h\ba$~ d#ơ ™BhU/c0 cH$ )#$Tf0> aDlTBLHm4#l D 9D)F]V\G`C-]D !@ !J:TV M ۸$dգ7:XBHBZ]޷c]L-&H!Txm 6Y,DL#&AL' OGlQV"A!T |SBTM椥 N™ abWlv#}|ˈ`zmEP(0AJR߱#MP%(JM *^92Mݝxq@{WFEDI%$!]V0@8%0;^У4(x!ٌd]dfu<&cˤ%7dFg}y Uzg{{֜\j|nF  i>E'bPZ˄hua#֍ )$<4`F<&D7&@( oNg`j2Dw@$@(E0~C%B?6@~@AG\4VmGlE@  )iB4 TVV4@Y$Hٔc`fDބGed2$H)F˒*Z:m隮-n& @nk]]bA@nV.Voo.}hSA,oDr*.o F~hmАNyA$@.,/r~(R}.I.wvM,c G@ apJ(@aA-@pI&#p&A 'FO$8Mo$'8@ 't1Ks@110L0Nnp!#A "3r"^"Cr$K$SICmq%k&sr'{'r(r]c(r**r++r);)r--r..2rcr/ 0s11#s2/3F0+3Cs4K4Ss5.3P&[6ss7{7s86+39s::s;?9'9?t@ @>E?tB+B3tC;4t] CStE[EctFKD+DkG#-HI4GGtK+4LӴ@tMtM$q5@uQu>4QgP+S~,TSuUwsR6[upXG#7AX5 3rY,rLou]0culf];-2Yq!gS@ZT/L\dS+#`vI;`6fpe/pf76!b.c'oV,Xvmm%i3Hjji&Hvvs;sCȱ-ۨ,](%]0zxor{'{&Hyēi/ɦa x[sxwxƓW5Oq4`DsxqqAuTw +ӄSo&s]jxS!xʲfB28yN88ou]D!Dg/3G :BBDok.D;j4Pa㹞5`BAu5oy{kt;`O+>0lX*a`߁غ:[OԖZth@ N}AH  ?S{o`&,ΊI:filЭcB -d]f}h5&Ih@PBh*p`;G45`]Qօn%(QJ_:Z *v^~C]K(TIB聉\\042'J&M&U`^{ o_rCNW>.Y).餕^馝~j=N6%VqLgD&r%k %2  vHͅx\EZҠ;(H6 7D0n)XE+^(8!pBP?Ȱc@xdWxQ"B5%QXHCTŃt15C~ ĉDE<Sg}@%XUMBX "x`oxT)( E0s" Q:FI\"jbU!8BkF6!sKKn"x@)0m#J7 *px@$L `QOĬ ;@ H@϶@ Ix1M IȤKFG 9>s YNy,@%HTӊ0ϒN̩J2Eu(UjUDVZyIDtiq@Q#]խ? d[W&("kڤU.d S"U0^ .6aBf[. m@2վ6QtUMi4alM V6Ura3[Dmb9&n$=p32x u"vuͺ&iQ,oN ׶Q}_)獒jBHRѺG ]`?0|OLv8!'$&vL/&@b$HT.G\cP+a,T`\$ .IV;I\]/XF Te/IOv0$vCTn6`\Yjff6fv ]RVБ) D?J cTm HWԡReeaiRֱjiȬFek_Ǵnt@oЃ(]4>`(@ /PxX&LfҜ 8@uB]IShGM8@FN nr8cqk x+`G\*S!w,m{(Jr([&pn[q+Iw"z=(M|Ǒ)`jp\aط@0.ifjpDtk@HWGku `oPT([ɷ, -@@!X&pϘ (8d<d[j _-v=S&HxD\p@;ޗeGስ%$&Э%j" tݠkB&_\lB)J=@SdL[&1B&Jh&@s4 Pqk~L= &d' : ]#+5"/5&o8-l`0~`bp*5@_0q" xp BP'Q``$4rO# ~ 1M" h|R &%##')$$$3"P' e!l'N1G f0/0,1M2.MC2K1!~P1ލFs pG"μBhH!*B^re&s0! 7?]bo8&a"Y/&`[e"j4hm"pkbi_Bd%J)`♜uq_TƦu)=ufjmTiL#D-!`m] t2`$@,F` @!&a68< P5&z10@@``&7zz7{c"0`*@> O#@X C >` xwyWffyMPyyyWzzW{+B ؀v4 &@v`ZXHu @ x b"x%NxS X؁[vwt@򖆧"27x:xo Nl X% 5ԂxuQ(.w>Hf L#iPlô&($%V%3 X[^O/x\V)x%H%s>wI#F/!"D \"&AUqJX#/QSW%\ /1!" Kp6mM"@E HY&ⴢBKGM9yY!(adBByt ٛ!"Ĺ]B ~9 "ًGm!PI!fq&xKSwGkj-v wt%b+!9Mg(@Ix!:!i'*^]"5clF&.dS&1!# ҊOy5! aq""z !9zp ukBKPGMЮzb!ٰ/˜QU!_p&!^b <(Zg'sc(c>NV&Y"rE% !邉WE/#b&L1bܱ*{ [p!b*?"!Z8 /{[KPě_"C*"웰Zzx r׺=[ ƻG;xuAv<*[5'JsUH,f\oZf"xNb-"NucbKظ!Bh"@ tb[딛>mV*(PoUhE )@`:!M.{Áo49 r3"z'!Լ7+ &a/ѽ= < b;"  ^%̯ʏGA1% < C"+<Mb@~emuy!A& ~=JG h"B+`'?ejGFW&%NGwRe[ab *}Vex >&@I]#vŽ!^}$(x7v:h#[Y.?);YA9b5HtHLc?HRjND[!!"MMH$IGX`ti1mAPA|$HDnI%BÂ9P:ҡ9W)1| MkB)$Yާ A} - @daW|U 6F !EYYRRn&aZE$P>($0GerT.*ńI+*)&wUX%o`R$  .LeQ{4WQ'҆,2;QDh :\B #A}Mb(* =P/$3A|Y GK2LE4Ip5J,CQG"ZH^ST5A"@7W|1ItXWyWPHvO(nH{EQk^oQc$xQ^~TxRT[+Q @! {Bۆ~HfLV'A @p*$GgT/@mwBKsѫJ >Cxo#>M{ԣX*_BWDԾ"]@56| H` #HvAnC7z 9PRGd#w]dK+srWQ̃^,yPJ7\j;Hb0(1jp*RDy"EB%~B(cӐ@H:dBNQ`[gፏ#E?/:"2A!"H DlrHL6Ri1K򕰌,y#$xFіRP^6^$Ld3H.,(1"K_:b1@hb'5="ş.!d 162 SJYlbn@Q&KÌ$?aE9˂"qR$$4e`F6 cH#HDr <*!:zdB< PVP0!eL?nAJԢ6dxEY]z0%y2ǏlsN$I*8wd"?P@!$PH(sJ\"@&U@U#ibIl7 G,zT ;'4[!hGKѢ "VH䲙ݬ<{F~yL)XV]mSԦXeNG=,IdPͮv{p'쉓;';H2|n'h5 K^wfaI,&d@"#W*rek;-!$^4yO*NrdS> h-hU`#5IOL?d?L1q{t(6)0d[~JRpY(≍Xβe¹$hGLDyMH-5DM6 {*ɪGU "髿Wv]BfFyKma]H igIi>M/%bvݑn"2!Om -x !Ĭp*qE rӎƭ촴M+ 2PrOsX%Yէ7U;DHrd$Ƒ@+HH!!X8G$9&Ȫh!@0Ӳ&q+d}`5tPvQbIjα[ɖkt>Eaq5obAYq!MWnPgfqۤU$Ay?:x р@GCg`!pTxgC N%zzhn&PV7)Q#^Gd!;UA6^w:[ 2b[؅_8Euqsdk5pfR'vZȅ^r "Gu+aG4%HYk)t_7u7;qpj%QFWn''z#xzpLsiFDXqRg;w{wFLM`@p `vGt#y X|1Պߴg6}hٷ>c6)(QdζckaX\`&e8uc+v2C yiH_bF%1+C%ыو{$BW~3#qE?7Ce_̨`zT`?(qH9W!u/Nh"Yn:aAC>%HSvuDWxÖpFc yk96qH!ti4c)bh4uSYY |d~~"F}6'h[=Ї'hv9FS'=5e.@Hf@(ј(xr;`X 68!X+.إo%ey" T`9 =yI:3n)ypo')7ILNEoci#1_"aѨթN<! jzx"$ X0꙰ z0"0QT!:aX ;`j2R 6` 75 uB3d H0uG#7b*ZG2ᔹ.DiW@<`YW A@֣ M`j㦽ńz|`q |JX9 eڥy.TR;Ju^EtU`@PӺz5!}\n *X@!_`~`:;5{9\HKw'oIt"4k8d P`ӆ9-j Bwي&W'_ kWѧ! sj9N1LDŽ WqߥSz`B#q^kqX*DjJF]V]o`[dPp;T BbX:ۼ$siL<>ɷJqq"k&v2GۥIz@AD6 % VZچG)wZ{v;VPP&Ќ0bpy(ۻΫ{PGU;03`}8>vOL&3V>p?UIV .H?/ j x@I>- PC{;Pq Tx[{,N ŁWkwLx;IM>>=Xw `kvÀ*+Sٙ|:%,f]#%x=ҹ {#GIM@]%v!r'r_$:*"< "q,"L_ ,"{υv o?J58h{ 6>B0У+TM\Ϩ~zƎVW!ƌșA2n#M>Bx#!y&,fϧ[\`›)u͵a̲^-7M6;)j%#+% ']#ֲ=-1dۢP Mĭ|G}o*/mo-w `ݍ`K!|F^ m<z muM; QU<ݹM U@@ݐ#^">&Ap'$0w@` =0=; p@~ D;GN` =^@ V   ǭo6^ g|9qIP玌}xt@n =A!? Ln!L5@ע^~ꨞꪾyG>^#궞뺾!>^~Ⱦž^~؞AԾ>'~ޮG>^,? q?T3U^x(_!,DAX._y6!Q+^%K;Q>JG_Jo Ix'prto'+3:!@z@|h?;m/dk:J߬Jv?{Suw~9t#AH,q ۨI?q4/w"ovb/_vt4ۮBi4O!,F z!80A >QDQF' %MDRJ-]SL5męSN=}TPE!nB؂ԨRL :MU*I^~Į_M8vCJPڠm!;pZ1ҝId FXbƍ?Ydʕ-_"!~rR3A='"YM(w;5HƁh4L( CFb 0 (A@lOD re(1:`Y?G "G!w0@Q8_m^~Rh $g5ޠI%>"CO"ǽH.~G>rH3uЃaE8BBJ C(97vRyU 2*/z!mG )4 FtMc/-kQ"mCcā qJ$H @n폀S7@8Ch4{q1rG|C|@ <"ܡd$%9IJVҒ40DԤ 2:dX IPx KR  `I WY/$A> JQR$]CYW.!b`0d2GM6E(tOx*/!(gC 80әn7iNuSRJ@ nte:*Ew9K6@m&@`z`6G5G6ěp<%{ʩBUqiT*AZ!Z݉ЭS&F/ɍU{HV7Բlf5Yd(DUm eBBKٕF\ Z*`S>1-bӖ^19Z?Uڄ!Ct"w (A~[6`7s˹+ Z@!Ǜ$0YTo~_Rw(> iu{8B AnׁY;Rl*6I.r-~ݝ:+J)}v  7Ⳍx5R'd&T}_&7Or50YE@RB%v!c"bSk*$2Ui^/Sf_\釁L3u 1X4;D{ [蘰{S4tLpO J0*d)ԧFuU-4lۗF=\QHcf.P%hc+" Ӛ5.nug"X@]+@xonȡLbә֘q4EhK?NZI {7jz7ʽQ@sIskbuXU 21{͸;YBgD /qpOD9we>s\`HWtC :D`><y)N='{F9F2d6C>s#19"uZ`asw*@&q˛!o ; A:7Ŀm֪zF}6{C^xW =E>1m}qg=${?|QC hK07 ^\;  I!O7f7j>CHC؏r|?#7?@G!`$3DT@`c={ 2wr?3#pP`WQ#<6k47<K D$T%dB "q>4,‡x 0-` 8hPi)#K^{+Є(XȋȌ4@/ЁZJ|4Q-`āQY h79ÿl p;RE,|9B4ÌHI-!A9,ɜȧtJl,x -F*˽˾^d EgGJ?FJ r9:k{QaLJ(@K(kka¡$̓|  Љ3sLL[dcw$ydbr4 h"HI3l M* OG#M*BΗN0#gLOp{Έ`{)؄ ,UeIqR}Zz H)_y RQ8)fO$D!Lt&(Q|ʌԧP$#OHšQQɹQ( ݌0m-.R@Q*/(+]#.PD+6+Jr 4e456MS hBQuEՀFuF&O؁Z€a0Ͻ9@ 7MC%DՈ7J ls,#`a%V>.7SA$喇7$hŨ?/D |E+pkVn֒7.s>F)~؀ʼn4Oe }LU؅e؆U7V  hC،؍ːlXː]58H  `8SM5ٚa= כ $`Y~Y 1P8Ǔ Xhڒ(ڙZڮTՂڱ#&zAMxTP0[|Y@ZۿլZ5{/,ZŎ@ƕy =е=[[ x\`E]܎ܮ!5%]Ȉ}]و`ɲ/ޅ}&;`pݐH &Ye^^ܥ.^%zHZ`M╄Zm5u f͞u;I-؍(@_00a0`=B &>qM] 8T4 ^ ~^()F5,NЈ  4V5f˲⇠} "M%2 !>'n@A&zcH2 6c>•4.KLdK9(KeH6JMfVvWNfQ m $ #8(bS ^F;vKb6cFfep]a>  gPZ_M8]]bNM@.q&gXQ@_i. Z ވ=6MH^r]jd}ފsf琰啠cPڮ9.Qa8mg]~ I X]4>gޖgJ=h`T^qfD =鞾sPU[Mt)If>\`pj7jgH萐i6k >ؖ@. xZyfj^i=΅wሠjH\ ` ?þsb0lؖ. g~iXgF}ml`Uܜ(PsԞsVMVťfFnV͈-@ mmH> w\&fp͓>v6\M(hIke7ioeQmI&ߔpjnQ-^j^p@oGXa鎀pmp[hTfpUk߽goq)Q(D)唈~5dia/Qg G'(rHC(@ f(v*H8&O.(!(Q`  sPx.~(s`$k3_/K7>tޠA;fdQGwuQZ히_(HFW kqHK]MwZRuo%kvXk'oǯX56huq] &qq(o3rp7 g[!o8"|v^/߄nA5eIXa,q7$htnXEtqNqvxkR7d=wɲtx woGQd5['PqzxP?@@v`|/Fyߐ iߐ8x{`KFv5rfVZ(p>NeW]OfnpϩgG_6Oa{PpK۵7$z `>0ş֏$o7  m|ǟPzg˧/ޢnA^bzׁ}yVpRs^>~%0X$xFuA_7/B?w*h  9!DG XMLw)P4ң.°w7‡/n|iygB^ `BY"k>H`s/o<= 샎^Z`(֮?H[mᦐnx * :VrTDXD D$e|*=x")"]wLdXhG$MCY%V\yA 9$Ey$LS MyXF$ոP^$$a9aY$I iBfA A 4' :(zAJ29c\B/0f9 ]%z)70h$P4ШB~uf[+J֖݄B=4BLDbwHZ{m @{+eA-"m@b. kS } Mҷ%P{0 o&ukP H+@ڐC Y>)0-2:饟85eW_Kie%]-*{D8n#U'#_'~!A[=u1LM<;I3+9}!e>GBZ;]C/xˋoD9 c]2 h& RĮiKIA0p_n"%A$|3!(DA!X]@v!QF=%2 No^\82>!D+ D=((8‘lQ Q# )Omop|IF=8uI mX,eRYEH4Arc1B<)eMQ|(ʐ&7t1'<)aESD$"CIV.j6*j  @x.T+sdrݳ%Iif$)"ukMz+ŧ6 HCH .D:xr햾~0#,n @(4, ~$~ IHT$D N61s>1,!F>2%3N~2,)SV2-s^2,1f>3Ӭ5n~3,9ӹv3=~3-AІ>4E3ю~4#-ISҖ43MsӞ4C-QԦ>5SUծ~5c-YӺֶ5s]׾5-a>6e3~6-iS־6ms6-q>7ӭu~7-yӻ7}7.?838#.S83s8C.򑓼&?9S򕳼.9c.Ӽ69s>9Ѓ.F?:ғ3N:ԣ.SV:ֳsWO v4bٽ&xPrg;>N( wCiP]H$Ipc=_E ܉K@ڞ:2 =R2:D!@ ܑdAt@AdM֝Q^B ԤddDf1 .duN G !6ۡ&X#ZeJ FR$YCS ܤ^FD&@:M0 :CeSeAS:'|aa_j%fU@8fvfOc߹@ $%Zj6jJ" I1>lVΤc_e<5^dTcAfݑir`c^:%of&vk@IlOd$ܥl&jl& wZg߭g{g',%IBU>`]Dh@&h_e'@ 8D&x (Aѧ{'dۉ'y A hF}A&l!؀cƒFfh` O`CHڞ&f&fN߹~#D$Oa.vg륧:DC]P &j"ݚD:C)D" >A*(})I(E"_]o:QݦD]HkΡEۅ(N)U:'v Di)dM0 Ĩ@HFVjA\HȪCAs 2`9Dݛ"N]]㆚(dV*A ؁|k~I}@O0뻚D>2jA(gu:]D>ļĸk&I+DnC 춎m:ɒ% 4geN k7r@cZlAAl lĩDKԖMmC 6%D>ܢ.*Zm>ڎ. H.D>zނ̾]:ߢD'ThOlrdDVA.:f(ln. /^@쒄ҮX0^b f zZBD*No6.2,noA>BDFb/+%0D%<?Bo 1 Y" 2Qdi>]t0F(LpD^kݭH$ >& qA(2:D# I'1)o rB߭1Is 3Q&<&D#C 3FJ rx:M'R //38s9߄4;42+337D'K>X%;D?C2Yx *BI H_A# BCqE`Fgtj큥N BFgtzN A@e1(8CA& H4K_A,>>'5@1ufK AD5s 8D@ x5XXDc&RN(QKC 2 A lDs(|APUcV'E( ܀ ؞RovA@Ixv݁6YjSr5:.lež!.2D#]1R6 , ;švM:omc'k^[׵ossԶv*Y`suaK1ewX$79X@7C0e'`nAx7i3zcb8sxz2ܭ!vGo3ӁK(0S_ dw[;!2QlB~Ýzg2 xAx?=gxN8ZC،(AbcϪgv>W -D9Z|Bxd d&br7NyUy $vcၚ!ALwT[Dj5 6vIyϪçI9 (dB5 ; .#Bv1~!P(7@~zǹM sy$ w::b#A! ~fo~X˞  ڰAd;gT;X67x;5w6맘;;;D;eػYud ;;XDL7?Jdf^ap<^+C\W_~N1ON8Ll$ڿ}~wȐAH~ZD~m>D@]]4OpOlP/_IsҧS^&gQ ^܀ /o<:S.;o ,T*<{h 9A QI,QLQErBhri$PIQhOFkLIr6a H $bsFSrġ U QMUUYmWaUYiE >d,RQ ^}[ @4 [8YIP.$Ԡ;u=GLJvNbڜmRׅ3q "\tMQ6qWbi^e\^K`k1X9?#` ڤ@H5vd (m}9[OVf 0I Lixeu[N8`ZFhX8Ni5TRb&em[;UyzXݯ5^ʀ{G7X^Gfّw&q%g[#+7'# vp̖TL.OA7htJuT_֏-(9gW$^驯ϞVGj\@4t>@:O$iBעݝ'԰,r/ڄ$@o I' v&(l1=#A&&K4a@~t+tN%}_diI@ZhG`MdS2ĂpVJN8/Ta G1ʏ~*!xÜQMkR:mtG9  „ pQ挖Zl#AQ&#M~7V"2!Dm*#'8P$$*AJ ,$r,N!BYmDȜP:)P5b+ KȲ}#-#H]Mje0 I}7Nq4W,iRrHqqQ MDD=;pN @I&e(BdgF ՘΢zGP k=U"QܳP)Ga&]<= Rb*eBP9y(Nyl wNNUU NkTJVPnRtYԊu MI?Mrmrˉ*^\XWꠣhCB${A~ִaQ,P+'=lD.Ӕ!d=HdICUv,]UΖmq;[M %pM nMkAօS*9N婝ۃv t Ab{ moD[єAڙ6 z^K  i_w]*)sa OI]pW x`(w*s6J4pD kļe_7~ &oq|A~<2!"~ȎC8f1-xdAjQ:cyG悬m4IQ3L[#bj/qE<'~:WZ!vtjI> ) ϰRN!;flkk ѶHnuvUtZ4$jr/N2,绀e2iDW׫ +1_ծs}]k\H:M^b a؛߳> ;?D!|'j`xG;bDhv9q 4zώߎIANh &9Z4'"}O{z%ǞR`u|"Ht=!|~'=!|R.:1O Bn/%z H Lh\/w偈 P! !ibF.!>0 Аmq0A)6a`QN bvdvE%Xc (Oh-h 7Op-"H]r }"fv+*]O!O%fc!b SaXnjDNo mD 0%P!Ⱎ"nN-115%pzd "] j"IpP Ј~ BQj !0 rq{?F@ h~ࣀ0$e;V_1~BT!FQ 1|bajDk]LOjD>62 r 7lҜldfWDN lh s* |bwRɼ%x䤲$(`d;`!䥾tWH2lNR]T%%mG D EBEEE "F QFsJJT@@ .jx t"&@$H Nb@4x) !B*( tLM124P 5&5QKH">SA5TEuTA#Tmn$a Q<nPGc0'hTq5WuuWݳ5~W@9!-"U-PoQWP99}n"r1yuZZE;X;F|guU5%7TRZٵ]]-[!#QSzހ\7z@Q%`<^ ` `1L^ ,a_OzU{\V6c5vc9Vg@F݈d e`;e]eanhfJfit4cg6hvhhh6iviii6jvjjj6kvkkk6lvlɶll6mvmٶmm6nvnnn6ovooo7pwpM$`p p%2 r rra`lsAnHt-W!FtMtYB N@uIBwv`ZhwwV`7wUxYn7vLĀxNyylx׀wlvi`!Wu%x7ovcWuWvQz~`7{UWM" lqq` ֠qa"GAQDxUg‚a5p9*DƒK+"x)~ou7v^tU I[`d ^v `W ?X Xu*8UDK~bIX+tŸ#x" VD l@jv`!Yu %2vUyU" `w KWGUגIW9t=E@d`+NY+*Vy[Ya7G79`UWuk yjOvawYuvqNU"#ؙU$dtgš3?vt*9$y 9UWU|9iv_`q%8"Y v@ ڠ"Kw ZuzE2*t!1zG!Kw/#26ZBY}Iy!dtK%tW!h@uQ` ·tלztZ t*tz:Z*a7geW:Wњhm.a!ֺ]a!j@uU` v@ڇZUwIM" ;횰Kװ-{;ǺtU fy!D[ui%(!tW` !^NZ r@`ZP fX^`Bi۶q[y[!bUh J`@vG lN`h {I!T`bsIM@GKBks{Bۼ !`R{& jY- I|x3ܼ[۽ P``3< ¿\I] {;> B![!F3[{Ulj|!;;$@ʇ|A !H} K@a[!_b<:!w`ˏo .a׼<]umƝaW!t} ]u[`+!vuw$"=U P]uU bݍSzt[ F]\ z=X!fxU 3 ]׋*}w tڳGtK!=8!=owoݽt t#>۹}w]ܳ} `G `BU =7٨5!Xާ_%jY Yu XR@MH ^~Mx f^% p~ vt{7Euv~ ~I7ۉ`[= ~vm@v^U7GI7 B%> M@ "oW9^A Lt9O^^~!*U7{9&j"Kv Z 2x v_ = bW}{GIW$ԿybU ڑQ 10B6 :,fą+>=EgFQࣅv.<2J E49dD rÃ2SaE$8Raɔ&] ᧠8ŌǍJ %'~0" a̴BUCąDoHQ j."F c^hꅬjCØ3A EN\0tGaGhoS^XىIY?Ĝ&7c_h0g{ݶ vOg}T7`gxD5YP{Y)HPW }PX q &m)gBc>dBIdFdJ.WR Z IVA0|)DA|If"]҂B(uSB*XF  FGH& @&a֌I$'iDy d~id!0IИ : 鐅ѱ&m${I&h`P =F.$褑b)&hZPS p(~($z p +}gB| (C!l̦d ^zI) DBFr簲\k.n^%CĉМ٩/tk\ifL s2Ls6ߌs:&@ ƠF'l]Ƨ5D ;DB8 &L]&@YZ: (<#Z୭Wtp]pD*=6O*śhS(,V;7yCjH-nn8Ax _5*PI6A9wu*q[qQ/5AU+ԺI[T?}OO}_?}/} fB:,Em,C!Ro+t~[>HPQ ld8i ,jq\8ϡm4 4+V0C !MqZTLQd:F8h~|H[]G" oS/ -Y@p>%-PQ! \!9${DKMJR!wv&DWZԱ$JH-Qrl3 hJs3WTbMœq#"$22 N!3;LI.1'DNq*0I)d| )|UBY™g=|,xiD٭.~!<XBF Qf\H[Jޙw5(yt=I!5RsLmS ը>^nR)UgR@\Dmd<%H9RTM&L] I^:n\[j>1!MBLR(Vu5iAB.ZeCȰ֍du,Md`xKv Alg_:5>=+Uvo wM!7!U&b) j۠G)=Vu7r]!tM]3ڎvY iP.hBWL"$-7ӆd I6%Nl+BfPjx?[7%"VHasVL&ċfe1wg\^: RX K}%{_! f[7r 44U!A.);ֳ5IM3,D!"HxWd8F SB9!gF6ơ v7]|491Ek"bְ{QOk :#/SdzB. nKpZDZ3ߓ&IzBFa2ZsmvX!=OH\!+{J7S :[r, a7( aЇ!R2X iy(6v'Ư9(|XX>T~ n&v\z` f@5>Q׏;$6c$S/} C, 1LC0T:~JH'HhGB8K y1{2SGgO/bkBM5'Eb297(35pvvχ||1n C2%Gg+C 9jn @EH,4PE-r vYAos!-B$dDx] K(w.(v}1q|&  m6Cww x(@<(Hx rE9pm0kcpʄD`bPf<kxCi҂vhg0xtrEfy kud@"x,57pupX|m15Lȋm6%Z&$VX(Ȋ5 ј8MhzQ/4_nb/p4 &pM8+H' Q {gx +p'J>C 99qDŤ.0$)$2qLE(1xaxqQ^Ux'-"5'e+9.IEq HՌ igigT&Rq4AaPJEĔ6uI'?|zr7t Xzej9;9X]SC ihV>锔~sWhoAHITEv2x ~%雿 O2y#Q݇(Ѐ)!Capߕ7SÜ(Q5)ItWzIH h!t`RQYq '`D0ePK[}Q/չؙky >)"001 7n)#J%j=1u)<2vq8)ka14e`UE6-x3 6dXdS\v^DRhxf!Gjr JS5}T6|#.>gAJt`AkZuqv0Im B/:ʣ(Q1&ʩ꩟${])`uj@`@epBc`zꪰ*npn$$Epi@=^s{TG\)3 =P#;D%z -+3Kiz?76[3/tS]mIO h@h@'1U{= }gQK$A )>ě ޺ 3ì ^H ߟ48 ]M ON6  <ٷ ]CM!iR `L=-jn% ]P}$u~?ڄ~q.,M'ݠ|P&aHnږN Hb pPڛ 0~ NNّ@7^nsT^?٠ p '0\n| OepLb^/_Ip0O5o79;=?A/COEoGIKMOQ/SOUoWY[]_a/!! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 ###,,,444;;;DDDLLLTTT[[[dddkkkttt{{{27"=)I6H4*f.i3l6B:F>KCOHG@PITMVP\U_Xc\f`jdmgoirlwqys{v~y}؆y139;NPst_a>@ZNj}ݘܓߝڍ⦜ᣙĉ˗Ȑ䭤洬黴Ѣ•ŚǞȟɢ̦ΪѮӲն׹ؼھ¼ԩ۶޽] H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠO(ӨS^ͺY5@۸sͻߔMȓ+_μ/ 'سkY*Q"A c}>>IcS0@ ,A@QLp"!At4M}  C<Ѐ2'm$&1!q|ݗ~ Q4 AA4,: 6q`I["  pZSfzUJ<rR V  `p fX6V `tH;l!S:I"q p@,5m&d,Rɽۡdgͣ(U1oy|)!hHCLR 7m $;ݓIx9j@GH@=z8my4iJ;NP#HT0)"!'|I4GGgmPID5Ԅ Jy@i3Lgnmc3 ˰@,P+[8=/}p+XaڠY7D;ڜḊϩ'(T8R AR<  f(`C{*8 #K "ȑC; 'd:I":Hv1#t6!/K#F8;VzL 5>4AQ](9~q N`/WvoU&g"1#9>с 0aH8vdMcͿ$E$()RRRg\!'EG(qL$ XA(Vj<C/:r1pY$NB:ESudʼnbeW`iӱ'AvNG2q'P2bf͜?ـab$ҺF9&fKlt WdHhMKđ'Y ! F{2jx1&=wƑ0i3HWNQͼw\bHc=҄f.$'lAP #SX @Ax@ڹH^HJ`h=j*۬t=E۲}-t1]Uoye6!Cp(ܐCXUXŚ)[dhvڴ"F2KE,ढ़(O /q* ݝ蘺[XQ284 JF9yLu '`ʞs[X82/E.['j2R7P"^$lV,(4XL0ctD`]wdu xO#D'U֌<3c3vmTy 4 DD 4E8! 'B!MY)&FM\E؎n^o f70qH]mT0|u҂C >a˦73k'y yI(8)t5wgXr$tgReG Vq!gH(:CYS|afd9p1OTvmE8G5d K7!$8&xj(-ܸ#8G׍!:8U6hH؆bw.G](jD79H W"Q j&8/58m C'Hi'(YdvF 7 vr}1b<4Q90qUcu=$ve10 GW# 13>Ivg?9蓉y.xIau 9)hXa %lGSm kg]avґ*5`lY[zyv CLf disٌ! Qn9Pi'jFsY g_<;b Q2 A9w'2c PY2y1ɛOV!cAP Qc/9&99nQ2Jv @2q!ILX?9ڋ јZ[;t|Az':AHW9!Т\(-E C9h`8;Qhɥ1D<Ǡ*dwn{6 | _ޛĕɞ\騌w0AQD\ĘQ#F(R2cLJ ȣ(7 (R&.CRYh͙wj$S႟q\g"TdH^ŚU֡O,詴萆^l`Ul& ͞M""p֥݈km+٣Z$ѢW+ x aU7T4.O7#uZe u)#]@K,i"; hH}Zko"JoM*у!mb j " z!U<*>7BK賩0D7~ JQ(*大[45v !ą8p'h*4f(§bnpl萳IƕjCq#$!JFI"Xh`r'&$@p( @!X!N87/B1@`+KϬ(93OJR4 "ml m *3)3rI,}O_ Jk-<*M[|G@؟l5\qed:dz3'B(¯2Jy*"Ĉ[Ξ2u\iBxuS,*V!8"!Z˳"N tPw#e*ӝTk4.,E/DZ̨*ejQN+pbxxeV᫪hhA:ddn I‡6]] X=RY!]#'v!bE!{V\m&!?<}& &pn ^#ڥ)paNކy[,=:ѥC*sH[\w {w4mC>G1қ* L4(+\b){PDb@R )Z >ɅJOZR8v lP'^@ S'!97hy૲KTE!z ,+Ɋqcދ(! Y9tI,/z13@dF6YiHڪ /=qo1Bݻ,%>Y$Ce/-MH+3B,ۚ8 c1#YxH,҄(dBCL#lJo]tFeBEj8f޲3X!vBDu#hsH0Lgo!4l`!;7X(u!^D ^18(4?e Q^YOO-S,91#ȱBH̥!Y:"D`xF ƐRt)"MLj=kĻ\/5rIkF/b]|_R7m3+# nAWy<GELHIQ_}=_#!^#^& BUbBUKўw;gYr1{Wh7 Wlا`_"mbˈs,z뫊R:1%wh@T" È<s B g2"ˈp5>(ϣ;(0㬊&ۼ5@dr B#x\&㗁+Cqۈڼ #21Ns񃹍BB>˟g(5|;$9* *Y:HZ'ъ: ՛8WhQ̡,L&%ᣆpA>q>DhJQ@3xŒ Eq_BzbN`Bc,*(F \? EH;(03C`(E`C'B͙CNj(7AAA+ T8NjGl̈ztC& ^ Z EE>@BǂjHCȍPEd {ŒIȌ` /;p\5GHHd&š40C\7G+ YGvDp7(+CLL 걿L%̎y̢;$p:$Kj:1ŵĈX [Ӻ Cb>@Km3dlEDC ~.&AoLiq&C=܈P"̹M0: 7(%(HJMhD1L(4K t6;ơN CEJ1T:8Ȃi \L)E&Hɐ H hĈLt" >Ģ34xI8Jt29t$22 MHǰkԀ#DO(Q ң фH{47lτR@L`@x/qiLI˦sCzIC3P1PCjɱsy%%ԈѦ\BNW DGչPO@R>`f1UoPΒԋVUs*WN* +>m⬻| !C ;^UX+TS\TΝPs<݊CBf p DMRѽ4EltRXh֛iGW8ӦR3UpXy͸Ұ̩oD֞cPP  l?Jv Hj)Z=!Vd,*X*ӭYO$sՏ Ť^ܧUށY "r$ T"!T~ͻ+t V .7ˋP@Y5S%;Wm& d䮩$?8\Dϸȥ X- A.B=Tۜ\P @GLDf(Կ\gzoD/\٭B^oJh7^Bދۉl 8%IGd3[+\߬>;Dj]F3܎]a jK̈YS٭3l,lM_d?_{MX`8 3=(^#) Q;X-WgN$oB_H7ň!Weh,BM-kتz%`@s#%_4}8P ձJM(}`Rd84*a"? S _Ĩ=h3PRt5ԓu _lhdՋ:S^I!CEr@:eO$_(!xTHZ>8fkaj]!A+%@@Kf_ݻ*HI[_CBhidȒ;ڐeC,X6>hhg1 _UNdYKR5lNj)IFD(iW ? Ӎn&>:l;3 {6/DlN% Xފscfm8(Sd_ЁXJcCж *o]"*V`޲bCBpCȊcɍaG"Φ3A.pƈ`ޒמ& + 9SYdeo@r "GM.,pd_HFn4J@G 0-DgkFʻSUa\"JrC}ȝ>89!_P * fg;= fVc@k{ξ{TE!6@Kqbλjr]a{} bJ4nöYt]?óU.?0of(dgC4R@trǻ~03s聟PTÅ%rAI ם>7G&'&Y+(yq+jkݤw_Ei&N4nhBy/paoB@K[%Iwh~mBώ$w̸G&w8QU~f6Gp, éEf=|JСtљ: ! bJPU>tO~Y*ȏ3e",h`W 2T( ā85\ b**T`|,i#"B9YPʅA\$ T lR@3]h΃Ab2m)Tt␤}fM㐫 5 2ئ-u kشPD+W,':6s1@2W s1_b}ćPF4MD [(DZ֐! ~$ZJΦ4tNQIȈiAB$o`fLag;Odӊ#IÔr~ 9)QRςHTGBb@(Y4-4H r2X1R*C, [$d=H9l(ܑl4[!CI(a R, xoh[!E&Hbg(292VƹlË+QLMS h" k)`ލjm/dbtgI+YwxAݸ{5”wbx-9g6)}u^Si&r`1p9!-eގcB ku 玊׉9c2@T?A/8"'1kzo% 1Wx^!oGi|^{I|rHGe@M@3,ρ!Gy#^c@,"HGW PPuB!>S}D Q@A.D_T j <BnE |@}HA|#9D:*D"0k4y9ID("DJyH`z% cXzI{5GLtXN[JC2c]yxaI#GpA+"O&bqXMc1iS!|ckLm߆1*^RъA8~"W?YEtcQHRlyUS!E< c}!L=D6N>☌NC STM@W67"!C:UX]UIU\0!C`K&i΢$vѯшgfSh#P1Xd]I(\r`o'vm\i2g ll&fW`tLETbU0 &WmA cNgAh6=DznS,aAEHn5x)rF?B$|lRjrpigVŃBq>-EhȖ4AYBmK|(Tq]u6DBn$Z~gbd B <@04PMBD.f"&Tf56fb(]>eN&-5lcmRjћKgA"TXe~V jB!(G(iЎNJD:QȐ#Cqhh1rZߊ@ _*d+*ASDg'aE܅Ddyim2 (hJհT8)6@TAz :`S@]I)Gt>&FJii#jShDb?*DUkL$ByHY{likc-9tz3:*WBn" բBȪđ*#G(5ŃPlC`ekD: !*zA:eLUHb*FHБnɟ{h"2ğZ*S)bi-SPApnS`mҚ%G@e誹X1mZӟNclYNri"S+C4;T*]hD!2xF2" jmA*R`ۚf2YA,Po *D`J+D!>*(, SnA /weޔB9,Ax޲Šd:Ph.#D:1 ۶ND{DB)*x n&-q*JnpEȢl#RBnspߎblܸe.{X-@v,۱rFl/˒oT\OZhhT3 ^E)X6l2!g)DBX$ZuܔN+ZLe [1\ ֬cȕ*&EGYexvefH#e*_%ڣNe܊E,,튄ffS$z^bX*z!؆^^J3~SR2T5oDC/9D=iNGmUlI\).rDhꏑD,e_E:Ƶt6Qk3y&5A3SB*BKUm%1v"\Fj2Im[*:oP 7luHkߐy!fh\Sgp=+XhN4`n4:vd_*@SKPBcsScU gnMp~ao0$wNJ{6bH$7kv-CG}7- ^[GVDr)R碵E3EFuQxO(so$u) 1j$22A&pDҍu˚ĄnRY)t'Er5h,ҩKlcDQs* lۭBZJ0AX\M!c59T(&x*;FfcxYARdԕb$eWb;E9ry5?U$ ߏ7GJ:AEAud-y&32J1c6 {*{',yn\:C/F rzicsf*twĸ{#ֵmU;_ͯ W(c,(~{nj#Jd8?Z!͠^wI:܋0zDh7P,@@y;Z"zeʅJTvПY0L>ϧF^e@tsz1(DzTmU; Yƣ.pamm3Ekub.U`8sF/igTXsf78ĸnd5fI&?ʪ@~7zXJ tD>8vSta N\/sWp)<WI6'AlD(ǪqD{dr{DFjU2udcR4ƣI@0`ARaC!Fdp"8@U8r rB!)V%D%6(T*. gODP2JfKP@>',!TCru`,L)i !iIY}  [<8ZJ""p`@!'n؛j!E*)%, d5b\Ib 2ֿ`7^NZjWTq#arMqQ>/ ;LտguXʨP\;d.J@"҄<c+Fn( p ϯR ;H+h* yZ-ar ,ĒJ""R " 7‘R3 N.R6x,DFLJH%ʚ2,`,3d.JāEMIDK҄C{X/(81}VIR E$~yOvl\F< NBH8Q>  z>_$I+.csb_T)8-/IWQ! (!FJ & lL"xneAdL9 xbÍDqG5&8$H(*HpzHð0uCh"H"O4=xh I(1 '2d[?t %L6rQF="2 cG!K$IH'3 rFR'-C_htKy9 Ě`JW$NOnx F鶐2)KID$xDN,!h0+"2F~I C`gbF47K !vXIN˞"J3٦+bЃ4 J>-( iBO < 4;SBBC DVǽO!*br"|& Z*dkYJVd$QHŕC1*W&teIjA~'d _zzu\Kгٌ !P _Y`EF}'Gk VT*iDJ"\Hj6]=EE>Ĉ $rnfv!j%AIׁ4}($Tڃ *m tIP5c%Ux(%rrpHvљwmg߂,ƙ>b!5H,\_,1*6 :g2 hIPc|nVp&P! NR`'Ex©~/8 ,:""k(: |p4 ll0x gC$OD2(JM,#02-dۂN "햮9" c)).P"/.$J줖#A PbPJMo4;HKC^+$/8" "XQT 𬄀 ݂OcC"-H07L" adR' '*]輐8j@ )QRǐ'jj³R,"Qz&&"Jd#Q?">r!1 !+ Q?E&m%qnmg.p{h!KE­ v/?3$*/`DB$ JgFfa' .4j4 @H 4'l n+4ÂPN!Ilr>Ь183& "2цLL}|C` AdO#tF R3gM$CO,44;".Kn29;usBL"fBi5M@grg\srTϫ=)V58@bK Z5+6pM['Dk0z A RQ!K^wvF!8A ^ Tf'@@'{Mjt'@uP^B՛'Ft-4o@LZwՄ 00H,'BԔxn@W RS2gJa:1vLgIa$V/@`hSUs vF2jJVR@#L,jop֛@NGJf`0 d`6lV7Bs~7Ir`nd $ @nĈwsxw7yWsW!n6 nQuuךx Ą x!,O){`{!W|8.wZ Bֵ6Scݥ Vn{y\ `omȗDx7UR^̈́fυ5r}px/`z$m; 8 z8.yl&Hy80P8lmaj8"0KY.lI@x9A A%xxΘ ؏"9EyI0ֲK9UgAXwa9kDZLWq9"B}9y{99TTU.CIyyr9͹'yT9IˮP99],9$4KmB%z)-Zzs K/ ZKW=ф,Lڤ Z{Wwezimq:u'Əz:z:MKE:zY?y|:zɺ%)ʬzٺ:홗}:zL& z ;Ǻ[BNu;%{)-Y:3ʁē1A;E{Iav% OM]a;e^"ZB7g{y}Cm;{;U$b;O!jȴ;{ɻ[RЍO0ʠϻ;[R;m;{1"mhNӮ 9/K "@нY@JN`h!`!L@۝m]ꫝ tϒ#Rw~%W$^^^ۍ!(!!H!C@ ^ӞK@%_݀$*_/_!H"f =}!ڻVQmXJ`Y^LCbMQT_=iuy-u __g$ʿϟ;!H!؀] ] @J\4d P(ĉ+Z1A:+:zL$K<2ʕ,[| 3̙4kڼ3Ν eRN 5@TPe^~ fbBZT@gqTCfIFW'!Di)s0 &(RF%AD dD6ZBc~ jW!}p2jj& ^ŪЊ:٨@i(e!9 4jBR)DBjXL*DܰA^E TAA5: oKoދo+m:P+:B$իD,;б6"m0P кS*خF !  tEJR+n,Bތs:s> J‡ 7t !AW,1F $1+‹/5PQDL4R@!KѸ D($qA/x?yO>p ɀa(! $JB jo(} B)Ji@rsJR I-°+zC+TކlD;"5k_}o}޿CHt`B ꫟rC\kVKr! D{g(mjsBDo $kHm9(弐yC>p$, +4:X/;) R18 ' HZ!7LDFW,"]Lf$1AV΃R (p\0dIF(3*Em8ĉ6!E(ED|? Y  d 9@w6HBŋH1:AB?1rl+_ X%zR $|]t+9 !aHG-.+("N4m&R\ BU$&-ŖqH APtsl;il*DgƐB 4%FDv~l *H$be-Q"<  k*E ϐt$-I)C)gy R ᆬ5&ݤgBA@"h! rЪ~28n4E@j K}މ o Ƽ)Aނ!ŝч,ky"0eŔtMrKhjSDB2R)!A S;t oHFJ],x.F@\ GY"5(-V.kzӜDS@K9ѧ@hpTy & APJ ݅́ÏAnp$Ҁø.s،YbZ u"oj)8=[W܍p$b8熔X!I$^O{GS[O$J@N„z=_CD!Fh̕j{ܐ&z 5HM,-.-CAPpQ glIq)a=Hq*|D $ՕBU-Lěȩ A 3vm X TEԁCY LQH]L`e:!C!\m<ڲ8q $͇)ȈK}0}F1ݖ=j=H/1J݂+F*-`9k;9 Ϻj8|!|b|󽯨һ{Y!1-Dq@ϜmDaɀ d{8`dÇ7laŅoz D<Rm *m41܂h҇pU~PPЏ{ 밑*]P{ \h,88B=\;j-{iF٤ aZ N3⃚qY g Q&dÈJqa}A  A~C.Ǽ .J~2m6abQ.PkM-@ꦍ]K]u|)辗=B 軓7h~|ި^N4k (.{9%*ՏJ -Х Mt=C+ڦ{@׶>X+WS!{, C@MӕA @Tߴn}cM@CQHP0 @N,ќ^*A@ M {ދJsOz  @P`N!] o?=NJꨭ>@C{.CaBcE6,c ߏ3DXټO  LA .Te@! %NXE5nG!E$YI)UdK KqTMMT?Ai'NLp` \ĩÁMSPj2VC[) 3Vs"ۃD.YjjV( :%,RXDj:\pۇ&<0ĦJ`Py(a*"xH:m0q@0`]LUEۑuiC?+u!Tw"逊H=@C.S(iA`8 c@!*K轖 |HBWCVp RFsqG{G rR4 *bI&~z'Nq$$@Xb:`);.!֜Bӓ0L&*̅Dh͍jTͬFҩ0d2 Z7O("ρ"E=H+ƉH}(τJ *EQ`t5ԅ&TC$UdV4,BVR+/Cih(0M@Q"tHvDV t%8!S!@DY[QzwshJڔ~(#xb+b3x*"F(ZD@ ʕ ۀ,f/CS= ^MbTO>)>$25Y߅>h\ 5}*u'k1,UdV{Q[Hk9*2^cGn@v(͇&:U_zcQJW E\CWV<_ZSG8$Swy裗~zWI*H@Q5 G䟚P x$`LhX͊ lD)y o#N"g?)r D6K~lh 'q@0"8!"GBi 8^'M zS"DA0m  Ap X7.$pKLH?.P$tިxHD&Rdd#Q" $f')O)eЇdVʈ,Bb"8 G4p2\*R %hA zPڨȞ$ YRp@L~ˋu yOA("a"$>yLilʩPd@d \ I3wdV%dFD>2NaDʅ[>ҹ#w)6iM1SU? HlwqEz,&5+  AH7ƭ6I+dGz2`D@2Ykfsլ>x сXD)}X$gTW.}zȉcZ"5NKV$hHc$!Dz(G+B>}H|]i3$R=2b"*M= o8GԊ h$fٍ6F4fG[Ӧ6#<QCIF>*H xIEO]do>؏v }HW%]%y!J+r[sk0ұ/2cdF=H^XUCU@BJ˳l'jd(Ag^\;y}5jZ2M p@`bEJ]Gqu~O-ȇ9*Q:nZ#JAwr8\pEl*UDQ iQ[9E>̢T>#8<7] _?m\z;*dB~}W8w 8'd*Z_I>:RtU=+2傏&PTȸx+@j8̳X sWX);=LA\AlA|CH>MBHHDКԈߙ7?%C* 93%\B!S"K7H%;2@-?Ch|&W{k@[+ !(? @W9pJ {AFlDG|DHā&h1 !h \:A#\ECNBz!D_ު;ILGu\GvlGwLN&N|@4Cʉ?;+r!KKVBNea2bU#G4ᤈc\̌Ƒ&?A5 ΁ΌpdB$LS!?σ`@&TO(\PmP}P "HC @8Cȋ*њϲ5YB˄NhL 2IWKÍJ%fH C;H<XMA5jD6lOFh5LCӴ<-S3=S4MSD(9*J$+щ80DW=ϕpp@?`t EO4 M'RQ+SRL(T$N=mRtՄh*MÈb5U` Va֘"NP!P ߄;i<E`뜑CqК<k͈YAGWJE;OOU_S;"Ӽ㜅HשBUp BEWRL]rYU?yMJbXXX샩TS,4 \ǘO:omQ.&ktAcwLW!) "5FTԠutWOY]Ү%OaAkO2+bƍm[}[eͤ$"/آ(9 (6΀U)ؔctgY4<قՈQE%H{xLM]z=[H6P=ի%m5.〮RK]R&N;2)&`}IVj\LD ~;X7>agqcAX%Ǘ9MrPM8>PD^ f>$Dr9N0( Ο4.[.O3ܚ?UTZZםY+m݄c 65Ł؍,L3? dE.vIhIR  D^8 r\u!*P#fb(3O@`sFgh㮬b -__Je d8e*h'-X?{ff=ѫCT،"茋# fs.j?&gW֑Dhl3HKF@a`%xPNT쀟0>X]cb& jiZbj\b% ]^~QLКgQ^ ܝ@ ۼT][cS}6W iFӮG8O8mf>6f}mӎmW6mTX$Fmf:hN<;ZmKf~( 㨘2. raKbY :8[kW𜫄Ɩ븐A@h.-E82QE;e~Մ7v`ުЁ ]`HpoVLBqv/$qq!$Gr q r7rF$&!r);؁s1ЁY1H( p։&8VN gl$,TkňIcW())N2Cp&s^.UY!b F-> M'++vFMfmix %Oo DXNuasL午Ӏ*q*,pqgrvv!  v*)+?$sqtv s{stb!reKhg&SОAC?DO+R?o W$6 +hFWՐ8d!Ȟ_mZP@v=ug!W &۫׾,-|9c,gz!gW{p Lp!ÆB(q"Ŋ/&`6BHHp#B&OPae0(_Œ)Ǎ"A9s HG:mXMAe⹡t)Ӧ88E`*Gbͪu+׮^24@u,Y6!KĢn 8바e[ b"S4[1:Ӂe6N$'Us+B郳dDl$AB'AW|ajqߊ৯*TjAj&2h$+Z4C, S8@ BZĉoU#U3%a<#UTRD` U] )S"5 es`[D[JET/@۵#M/.ĉnʹ2aIգ -rDB0@aQeqCWVf]4[c Q)HdHJ#d|b(SE6 (c (eXIBEe/ c'd ^=(׎=T[Cs*GBK4OST$-#z<"W|GB^RTwXbU_C#}a8Ed4d6j Ķہ;_SP,POd9[%.tGSP9XY(pP 5aJn @|MEtH)@DdoC8rӉʒ dLg/0ע`80 K&ph+12`D2$, ߂ˆbOŽw!!"*"! B}&\_ dh49*FiL[HGx@ )Fx@qaa#MU.D$d94H@ rd*JWZH [#(DA/{2B"?e2!hH J [ ͒C0AR d*]ʆ`9 4WbdC*YHN%C9ʂ"ጞ-Kxh):hH,2* #G;Ѭ@ @pPGCP  -"B`r>0PP)CJA`(p AP@SEt%=iJ-7tX*  @Vܔ i̊Ԥ(B$`hBOR!դc"J!|D(cw2:0~4T$L@!gCAz {Q ^i*&@\ x!ld Q \+gX -C),(̜.uWBL>x o*$\xjVw%D[溢moABS*ĴM-Cj aq%>ֵ$~QQ_<Ľ|G\D(:`J!BfKl8*ZW/WxF6$mA ʐ pfc8ȤTH<%!WȂCd( RVBtLa! Vk \7!eI2`f1,,!/3_3=y 0 DƝjl\,'$%a$K yFc!st!VJ8ժ^5[=:)rp,[DeTᫎ5OĐ q--K GAfC=[ck@n숌,l.f"ټ yt[ ވ m۠6@m~6Qlj3$߮طAΐpeCF}R7JSQKn<[[%%2O!Fr F }N6:h8A8؈P%\6A=! S\(C#ۂ烜Љ7o97H|4@qsYrnW?KW7K fXWb}ug@/loB2plw0v$C]T:H.gym>"x;P>PO 9CF<<>S߫d~]M @ Y:y-(D9"@ZQlmDmOA)-}!B8݁CVE8ݛ$PMi DJ,vA^xC(\3AT^H:XdOFđ)<)|<RzFDaH`C IĎ 6+LC$ @`Ha "ZY,_l%&D=5ll%}MZ)%p@b؝@8" H@bC(N#zEUBD"$$Y#CZed[\fC>B$SCB_Bl+YAdA[yzi i琮ZΌFT8TtQEgC ^%.fOc6n|bĂjVMȩRhj6B`huhtB\iE(C(`('s:狖(ب@EI>>yF<*z꧂{iXp M)UdEghiC'x~6g .DBKifC&.iuZY< kV~T+tTLDd)5j'W檘* @IQg$&IGC$E,#@ȊȊPƏ#^QV+"l ll r"f>‚D8,ĂģJZ6ĩk:RDB- B)TMEN-TIJCPȳ!R+2e) 6Jrl+"j O&DV2(8B| TmD`Mr**:mЭ.\tm隮J ƹnQH=n~)2nBdiy*ނ&ʤV0 0x/}BYF\*J.&h%6AD5DSC|Bn0CƼ&GV*i,ܾ,j<_es^H0žgn~'U/E%KC,OǞXAIZ,*D߭fZz0WVXA+DlV0 DD)E4,XFd YlG\bEKYNc"(1No>1gDް&Y1N<YVp\zj$i[k*B3=S1@,F- A26]l%(BqoBA,I@37s!#FKlrx2PSdB\RDCU%s:k{a;FVlAԕAׁ *(N)pY!0,Ei)mo5s>'.??uhFgOp2tVAI_SMET^l+z/.\+ofX& Z>q|~>DE?Ƭ) z^-lEWA4 GLV4E-@E,̂݀VZ5s[sN,ˍEW/'YA3"sŢ*kA\_ϖ_ifE=sM KEha2tlK?kscO)v]-c&/V.p9` )bE)T<~q/EC];sl.CwpB@Tusm0omaP Bd2+awiOf6)_Y~SBNE̥ȇn-{FmO-*1oR]IkE,5rc wx}o(Vv+l<խkQ䏿RSyBԁpy#V`PU|w[,eC+4w8ӽxEM8x5o+k5P<.EYDISz )B"uLhsDG[esiHHEW<`P:;=dY2b1UW)_ҴDHTsXeVB+:<նw4(Xzd>FMD:W=:77&$B89{6*ph@mv/(|wdt`dAgX_;~H|# #hA(vl~Bx A8cz{|c%H;D @:V"χ5ϿD(@,DB$} NO֪6x8Bbk<67D;<%2'lAk@k,C;;|F~s3>C#0e14:dz0{ vd>nsz8)7ܹ9 b C= ^!!HL$)BJA5HDྶ1dm`"({sHo85%E=V@W"} A<:TcXA@ ~8*EHƖN4 4E@@) vh&H!$&$U@\CH>'f€8A ;F <$)dz ,i90 up%,#.Һ0PF$z# p!'M1 {UFǑ IIh T Hħ?HnLAHϋQ%zJ aO}@ j]Fȍ*9($@fd2I9V6/ Q!9 [ 'R΂@*&9<Mɡ0R`Q IU*yД<M u&c 2Q Yħ@DP RiIi)! p1qJ`aRUZXþ,jg2&TZ4!}cE!^2cIF|s8+=\,!BBUW֦ܝ]#Il.4B\`w1(8:Sa!hBڃb`+KXL@b_k[WmTloN-!uEֈԧr#TMH78- x0>kȸ[3%dĈfmԞJjH_֫!&+\+lcr@0ycXތKU )Tlgy?L.^pBwqAn<>Vd,6ݰpd1I Qfe&j\LΘ(/Nz1m)_c6_hpY(JMxF ]Dpt~‰!4 0.$դuPk.jMőDF㕩7"Up@QGkD/#9DMs#} PbV$u @A+ȏsu;6"Z%Dſ'oV'd`./9N)(4 a)*VW@*`Ȁ {r$iJA4QH >r ۩_jsP &l6&'* yuD @B>:A4r#T[|O6O;+bIވ%M0i x I rІΏ Fa.xR͌ @E0ZcDD4J} @貦ĞŒG/YI/ kث0R0 k ouI`!j@U#b P}O# |"",o74b) Hv 6RWO~N{8 ؏khʆ n k ג p L\F b )LupH ; !8!~n´ 0#p N2B p"p P7B lb21 yGy l*ë)}` ~{ }&PӨ   9]!ר`.Mdh"M|T ne : ~Q1B!!Ь |  @ G#@f U $/I#"rh0]A+oQ ! bQËTDlK 3?N Eof Oo  D 8A%=(GZjJrtS7syupS7y7sgPo̰ 0ȫ "v<ѷ7M"ҚP=úHl 6ȳ6,&LRu0(H>ID3 BCZb. }2ߎ@Q3  KSsyT.4nJDJ HyXT LI =rO-2 ɉrh jO@PΊ,>@"IH/ AoF} L((K]q=#O,'opK?c21Bf-bʸ R&ijR/ "}Xu JNeNHR!(]$"K'RBϷ"F=?u/-#>:խ#s)NA  v!l`Ev]J]Re^RoROcD!*E^İY+PմG˴ӹn!p xQ_uXsHAm^PקA#$T'BV#ԘbuJ H($D@/" BU?gC7nVi!h2ް^V;/HueC1V!,fb } U˖y.m)b،qeAH~TP\U\9bRhL! V 6Qu@ W /bUel>L{^`$@p7˩V6j_;N^5l1.Ql4tB'atVvv!1!hƿv#dnng1Hea%!^!.,xCifrb]aΖ!P~ +oW7 D"HO(+xqOa׀#WlVok!$U)xHqx' Op4@"FD=zC6qxs  aF8"! b!]jhb70 V6 @RA/o+|Ix؋#NvqGs!xquU)1 jHt؏QW#GYXH xcs #pjw[ |x /B*t!6H|siI}cY9ϸrhHw1~wi!x[Dr(y[&M#*&˅ "zpH!IVƒf3*z~I9A eYgy^C H8{cՒ1) S KJ!fσ8#&]Aר2:Ռ'+=XseuozXA.:,zZR8I$~!0L͘)" !@"4 vVxn´V "䩓];"cbsH9ZYɴZ;[8GFK*Kӹ 6H0i M[G;^f{ X!ڲ"vZ:HQz̴|"Θ bM$Smз/q=۽{5 ]!7ֻ!0z!P}V W_kDyV:@L8mдP-"4 hu{\'G! .l.k<6q!5~"ٞ :נGX-k58uֺ)"3v_|+!O;UyQOcَZݴ*u/Aߺb.QʧwsW\\c"l_I| M!8!g-§޹NooC6WI!R.K1i HI\`WpJ*=B z!NL6!:"~7!xjV#D"օʨs=>"=:~=:Ng[9;p3bǎ};͝9|"=R$%3sj߇cbx"|!0~=μ#!!=["48~#]} L'tXID=z@"i1#o6|>[Fp _0^!)stCTv#corV۫;_U⸜彜,IJ[ L=#*$ *!saa}}aD ֘BC;l]P$|eIQg%ߙ1bn_g$ʟ"| 6(Q \ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0c,M޴)NY !CѝE P 0]fT~>`8tgU~&r@*_yQO MT~fRm2o^gW?MӨS^ͺװc˞M5w6UX'u5 sߤOiw֝\1M`ᅽ*~s¶7L9C Vs:, a'AGuf?0Qui_ efcffv ($jN uGu ѐ;-pNI-tM$n]SPhY hSvI@}x&DM)MN1`wmG})CSdA}W_;=Q"?Ў;Qc7MN-MFe&袌6裐F*n my@CTAO|7YR[ AJ2y-juhU ^?( 񇑬6&&YeFVTE} )BU!+kDbNg. կBJK*r O1E0A_$gWk&$+f j -egM*D4:a!aw9!rhIC>3L*WJ A%ot!Fg*bLBWӘ"8b%&2U'Y D;TM`N2ΜFAoNi2xrژ͂&zH<9c\[<[IъZͨFeʅ02&*E[:1d46|o ;, "l$n ; /_5xJ^4P!)Gȋ9;| Ia' uhO<\k&QYqm '0ǯg &l2Y  ֹĮ)+1" !iQ:EWz̑<z` Ű,mSZm7u,)G㩪*_;°LrB`K\(ɮ):ˆo\lNь,K%A {LJ!D\ -=*\*"ݞ$@޼aQ )G m.p,aJ), Ui+\"E!Av ),SΩJ Km[ʑnў%˛, Y<\ll|n[{0 .^>*^Gx|=zL!˚zĜ]b<^8nGyJԪ>ݮL!IQG )н ^z:Yn=֓ɭo>z R< /*ٻN-u>A!Q^nq9ΑǝJ\Sڽ 'R.O/\o^! ֯*-3 9?E. &{/{iZrɃ; rPg&S1$OO/aߠIЯjO]"ҵxQ_  !Z *9)!&p t5@H,1 -^ĘQF=~RH%MDRJ-1j35męSN=}TPEZ\QƤ LU".Θ^DF ep,DV2nȆdYgA$#VS$Tsڢ+ċ 6䴁XP@P& b#J~(:1*%PxaD\HXWSo V5?g[sM078$WJ5?ҳVH A<3(e'8`(#8afaH*B e#(I@U+G&yA " 9y`S{+.VnyAHbB.NNQ06aF *A:\VpE(k9[[=J4hIFK߀[̊ ]~"`7eF=$Or/' љ0s?=tH_Jd6ha{a{SY#h+v~#R4wh*^~:i|jzݷ "R_ "}g(s&8\HD@9WMļKMQ_DAv!CE8BЄ1."A)$H* B Q~R‘Tl\ VA]Dh!H R$ +4ZAJE7Ȁwa,rJ#Z@%?CG&"Y A @i$Q "Y9wM"% 5IhB @@  S(@ x%@pҗf0}R ? "OHhHi[H2ۡ\+"53bhr#哦OduG\8q(z!BP/y JVInDJ0xrd^Lh]iOH@H\L "-Db)ܪd"'J/xFQ7e"ӝB#N( `S&u0UZAm:"8LЇY@Sլg= @;3sҊԠwzZdW5qDIBD/"ĮxJnFRDO P+:muE$eѰbV fK ˤ)#-䂊艇ldmY]DO) ҹт ~܃HdȊˆCHs '3RtC8<="HX&*t$Б#|e2A2Q)ͻ`7s7[A Nw0A{d.M&R 'FNbsB RqEbvd YA=(G"0AVq%MN ( %\ֻ_<@I h&Bd!He5諉H#R-8T2؜?#(! L!IȒ b'DkAV1ċ 2XjDoI5~gN!{ ^\ qppvf#FUW+҇X=8Ggz Fcv `]wfv]m!' VpY0Ak9~#t so~YCn;!A-y[%X5[0=ykEij!DS5bЋ2lF<+WTJpИ-µ@DzB͕3wi 1>L)L`C!G V2yF-WO5"K{N3 4#uOsSxU&r#MD}9WE ?gT@AA|4t59$ M%Mngt g W/s~}_`H64 ȶzƪec1 F(p@ DJH".@Ah84l Hd@bȖ 2T@8C$騨дxѨ3'[ ;߲ 9Lʲˡ=X D A8нjѕ0:HAR{;(dChS!0؈ˈJn39TSDX6K5!ğ؄G{3pC˧KR@CAt6AT*><@T?EDUEMъ&=  { 5 U$C9UESdSETUUeV-4Ѿ;@ @<ӊXOGӋNԍ>pIOWUeefugVTC ^kH?ՊxR Zuevuwu:RK- z:Uh7ҋ胃68r:׆u؇؈ҘU!R8* h`;E5 =ҍVUHOBxԉٜٝٞ%=dX'dMmenĈcE!ڪZփUZگ۰۱rM;<=~=Uـ{mӊ լ2<%ۿ%܏6 @O0շjs[[[]ك(ӻͪҨأ2}-%u׽ԊXu͈ܒ"EY7[}]U^OkE_-8 (D(RWؽT٭Vڵ\E E@\%55W=ȕDD5^X۽̕ЫbۘxY5FV@!EJtlU ňuuTu N ]Vf. n_3`r`W_՘ݛ/Dt#F$V% @ߌՒԈU^nMٍ88 e\&&263F Zl]X_(^p_m(PNE98 4A&*&@pB֤S[^~ი(X@B >fTVUVChC@|e9ֱbRS΋KL6Q^X`Pƈ`!?h&hBjfWbHDfA[ !ŵ؍W:,dxhgq~(Nf4a ΈogkÛU\O͈Ob8ֈ6NW'܌_V FEC`i_=fw]6RS .ڊ`Mi`>⃹c=fv+%vKj6/SgJviGkBᄞ(k}գc&KɮUbOVk{Ufg݈l 8=j<6 ̮1(V:`BހlAم>v*tlI| ;铮`e=5nQvl>n0GE_iH)Pg[kh>W6d b6tFFfUIMXl6>b>FoFR@ o`NRH$ p @iF܎nFb*^6BQnVe*i䣒o@iF$ ?+_ 'ݝhVrB1eNXl@" Qg@څ* rB8m`m@H*hqCw &wrrril voD>[WݎO>HkcXiG؃=T E'PEYPM(@>7G(CHc&gN2w:'eovj?h8v(p6p& Mvg `vbu3=cG`wfww rfr8got]N58c-wWcmS?0!?h,l _= <`u'̮y0Ȁ0(0H\zKGWwߪ^?ɮ?{9^Ԅh;UhfpU{_tzxz9>zOXOڥ'{`ضOėc?xxwқV ~[>>6Kr0*w᯶xOc0' zȃy~~yπKp ~W*ct_V`"=t.*{X~("",H 2lU'RX+7J< #'8JC"9.(a 0˄#wN0$ϒ92g'+"0%ȕ#:HԊ \>|PQш<)^$PHJ61-ܸrҭk.޼z;Pmbs N䥂ƏZsDŽ}'kVrj"~Wn5زgӮm6{T= G58WW3-a/\[G' Ke QRLSClhU";bf>T{ 79[~9k9A ]ro?ۢ  D]2" EUBYsW|/t̀LDP"Ql@}`k}XP n=C_OxFi'd}p5 5՟W7O"[B7-$z߾a!˷l}/չ&ub5dc@C2fd%)jaEVʖyw> A%-ѧȵS]&zIND/~C7$Bm]E[ FN -%\o0x`DUtKoBԉkMqI\paO 'OyuS)&dE9P'\.!!HĎQ-2JaCB@E Hy:)Dr aE)T[FJ""U #6#>"$DB3CLboPB`oHC \`L%#,&V@m|! VNHBDE @&4AqT263QbqC@ Y5: #E(#3:cE../F#TA1>CD#7Σ]D"e#b$VE^$Ffd_b)P,B\]ga@aD! )DH!a虨_ )4@(@6NAGN_:?RCDYdHS$^N$hMV\4 TϽD@h$[[%\& BОt^N|rdB_2=G`]NRP\BRXA OdVdne86Dc GLKfBfGgbbz#HK^EHf4X8[Hi%qqQtd%,& #"s\Boj8%BF)F]JOΛ&E(Cf8BcrP"Dx|#%b`ħ]R\|fB'x_|zgEgڝ灮wQCjbN Q#!r(W\b]H%tPiYN^u%%p`@FqLE *MT R"wDWv' m^eKb>2ns'l&GZBr=aibn_N0zD‘>fR&M<@b aRj6>*,@K\*KB%\¾b*b,@* k@c6A@&c>@0P$C`I2@UXrΘK$hć$%Ub:녾f@$ @8!Q0kRlJɴ&6+Q촮kkş>Ķ*S.JE*ɖ,E,˶˶X꽬;l̲PynlCK|*FA-&-jD hQAbl1-8-.a5eNm,0K؊*-ڦڮ-b*rD,"ҹm/9Ie܆EДi}.:т*]xX.X4@ܩY)~.nf 雪K&pvD.nLn.E !./6>q#=@h.‰rP^~/////Ư/֯///00'/07?0GO0W_0go0w00 0 0 0 ǰ 0 װ 00011'/17?1GO1W_1go1w1!P@Am 6Am퐔P!n$ 2!  0@JD<@k<27D!qk4ǂPCp%[&'"@+](2 Dz,r]HHKB$%}&a2D2F8F)}&͸b^$¦1Ӳ8[O %3DDYN¶GE1dm$mDg`U[TA|N/+D0W3C70JԩX@[`A#sn4 @9_HsB$NC4L?4&MRͩ<3tV13m`e 'δDsCN uLGT31D !T.D'oOq|mn4lGQu:˩4TA 5Í.RIO5b'6[Opc;v5AFQ7SAٓu\Hۋ!@9}E.^<]{S<]KF>ǾҕU3'TBDMDBټwb=h_+zl7$mE6~NW#yF?1S!@;`b=D~YRE*')65<@8`A&! !pPB.BTQDtG/aƔ9fM7qԹgO?:hQG&UiSOF:jUW,uJMJ Ca6x(d z(SN ,q&,%@C)r, /P -^<`.Z*yb') əaQVukׯaǖ=vm۷qֽ;(YrԵnڵ3d0#ɜ4I^!F3Xc4ZGbBFRG׿ P ,JDT0>+J&H9.((Z!N@c$J"<ąNIŅB/>( l(0!yѠCD;E(*/ S1,3L9*B9 @:,S8c4~L>8w [#ZO^oJI (!U|Z O|Zi5ym&8ag?Hi7e(_8ywX:oT\CD'<1A n@ћho{ރY]-@^O,A/tM-Dh2qKg?,P`QÝ@,y@lMDwjkFA-n]F$m 0@ eр-`}0߷ C&Ke$ĈJ G% QpR4< C@I14)Q]iBX Ѭфs1"4R|_ǐ(7!ƓDďAjw,F"9DTp *NNt;OyΓWaKӄ҂VP=4[eFDķФ(BtD 94DW r%N$UQ_`gF&KbGJ#MqSDVPԯpQ8 0AiT%d @bEdF7t([VIZp1*)rCow ]S}_Ɖo: H 堒.R%$B Jȃhr6%Jgj%X4g[SQn$WivcZHu!s%X`=q&&0ͅ0 |*+MpH` FDT;CHEݙ(mG)2DI&z^!Si2[ug0mU``$ZP01Q]q?hD @ F YoPlcV%#? ,{p~3gYϚֵJ&@mjV"aM]/iBn{2g?5ӮrNi=m̄Y'IatV&v1Y`iC؞6mN,9^Ti DRPRd% mD igAe"#-~Ly-w_s`(0‡PtC? pB"m &M$2R:J{'M3DT"gqKdmavmI))][ |+q:˱֚&b?]AuhRí.p:I1^x"˜֪OOP=anXq ([(P 7|CYdO;+SvA/ָ_2掆u3t_-jh23@#!"?~֚BL|r @d"’"B6/&+=f"X *P /(>;T\Я4GdRMjF J^@`""K`R ת vo $, @D +؇rЮ >/u&"fh($Np.L#2N_,& & DAM " O !@`NE@ B Oڸ$'  t8"Zq' pTB:l *+&""@ "qcH66Z@ELFnڦ[jB^ eBb&nB/n.g⪎Ɔ/j iTMl11R@)!"BFrcOu bBB%A` tP%'?(p k `r" 'r "!"OK4.⪲-) UB@R%B*#b̐m.Tr 1 9"gw$AW "cR&%a"/ qLhl)Sn236/}+ `{>1 **R 2@l."./!grbp * / KDG" "26M-эI^4o t "<= 1O1_3A t0 ̤22B>3?ɓJF`re@,6= PG(R į:9kj!sB:!C0lp"N6Ϳl-c; ڎi, bi@oJ 3Bc1S%) ! ` p&k)@O@0䎴A(q `;m8lGiVFe I!Ԛ t2 ,U8E J>k!>4JT#| Zk@g "JNc`\UKR4$3s)junvuT(mNTטKX{\uY˓bYQ Qp  L4T"VFN4"-kbib,E$u^Sh] 8!72.bChWU tP"BaafV2&zynrU)*Vd6a{ W$ :l d]!E@^%";)wGF`~,u7 O9ut) =HAK "62&S@ @&SkԀ `$a`n"k"BbSkV>eolpq6n nn` `&egb'A 6 Vov pl6m׶mJ!v]m6& !@ @^(upq)dw ~7$Nw ĖlGw@ `KbGv!Pa{q+gvQd&4D#"%&`{h].’O\AP@% !!3J D!"a@ EX$ WV!"sAyXXL"7&a$}b)A\@%? LI TUӅ "'*}x]!Ur/ I" U҉ d K 88$q){ч. Ri&@fohS7$PM#W+$r@6t}"u4*7b5x!NR(3Nb 3" X!M b及 b㯄 3&8'`xe"vy{(RW~b@ S╓ 9YY lyq'f@! =! up ӹB n Bc=W Tr JYlg*::t!YuD+D!BYtdZ6$>ռE:yh00B㏧Bxi j` Q 9Y  f :&1"'y'.֛u §A@ bk/k]ay:'RU TAOwbӭXb B!:Xq6E{5M-/"}ed!` ]2&8!R"@e)u"r h")Eh3\=۔9 "(3VS9A ]az :zﯫmbU2Xw yW8wBs B X aҼy"Bt0U ":ھչ @ke;c `;Ϡ 2hr5uGȓ- v47)R4k8 Ƽ{"A Xe̖ @0`$K 5{b!k"|\,]'T0! sW@ @ "= LWBao<{tzbzk=x b@%S`2f= Yj` Ze 2;*ƌGI;uܹ"}x"@ut0 خk 8 o=>)Ę"Ƌa) H upb흟6=ꋢnzj+!^~(zڊ5|u>uE2 bM84@B{b`  bq " : "^Cm>?JxL T^!*u S͞#b <}'fDD4;Bao2;G\"Ew11!S|л H| b{c"sB- B :x0 A&:$p"txXxH Eud1F$%u1ș4kڼ3Ν<{ 4СD=4ҥL:}1S9A5+*T 6رd˚=fIl]*˅:.X +H%J&HΉ80ĉH+RMDQ.DsSD6Qڬ␡kL\|w}1F,&}v7/ XzִuJ=Q 5\J:E-0$&>_g%xg]qlU))Le %](6|v"i/vMHH9oC&]A"oIk+| oÕX$ `mI DxU$3!XN6m+<ޤ(m0%D`CM{G40GKqD'SfiBS#PQ lNLFj}]֑gbw" |{PF`) [J-@ V0%8rC^@! )ІDDovπ񎇼)RB!eB3@xGhYUdw/xXC>Ot*P`.@ꟾ/: Zʖ {Py)02Gwh xH\3Bg9h@>_g%h')tI-fvM1h79;)`?h&>BȃkvKȄMOQ=eRhWY[ȅi Z](cHehg8hk2{hq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟(HhȊ芯(Hhȋ |(ȌT7h׈qb(:(ȃVF Q8H2cTx{3@J~2jJWA ( ))Wi  9 90h!Y ْ8A Y /IK鑜d(C_1XGIil+@6,@”lLq `!vfMK]gOCEq75JQ<1 /nkNo 9aKabfvyWmI! wei]M!  QaBLQ:1Y$&$9ciERgaEJ `1)B)wy5x")"i;ș93AM "̉QiJ96ʹ1mRIq5њgўaH:afqMG{ nݩ)2? "  *:6oxJ$.HQmJkEџ1j ErDF2j*i/"1:3*£BygQs,P(D,GJWj,p3M];sjhe1 4I0l_Za:QGQH0Wlȧ[IJirJNqv֧}b*y'0ЧJ*FC1su zzkآX*! Tp*f!  tOV *&*B.s*poEWѬL! Xa۪ݺߺ^3bԅJBJκQjL؊m%pDֈRRg {`N:! ?B3~o[ ql0Pud1 :/뀂Q3Ux+K+;Sf$5k<`R;/s@ǝ/Ү e 9ܿ N1S 2~R<[\RI?naA"aa˔l+ 35|7,qâ9AM #%L6F "@B,BPTC aL baP(9C*@B^AvE:bz1x8qit.'|~,b8A!<L`\FM& PK ѻǏ %|˧\:A >QMZl!Ɍɜ,f!́EQk =B1a k@b!sܷuh6a @|HAM&QXmdM5!X-7,nw;y AQ=Y=7 ʠ -m'L02a' mwr)IѮAE];Q4@ l0 錀C!,q7, sJ?#i+D̕J@@ ঱JAv՝׼*!.P"LBMjUWPE8TˤZZnן&4*>- Ջ{M-ڴ=6tLtG@hMϠ\כڿl=3ˌ}]· d}f}k<{KGCPq }ۜ& e}[=ݔ="-m^. Ε >*"6q ]zNlm۟n "bW d}( .oa`^mB}m]fL^N lN ˌ[i4=4=? q4ő{UyZ*WuD^qU2w(EBd.>3/$8͆Nsubnٮ1Ė~t誾T>-^R.]p鴞Ŷ.X kb掄jPcI  D𝇼%[މm"5'~~%.@~\"a=o>XSȄ^N<ECMa 4a`~=3`q HIV KSJwCT v~῎fmGl V 8XJ4`/d?$@0Noce?)ڻ=Yl/PVp͙k)3ˌ.θaC h6Q / =݌o!<<aDG$ά".E1piE?-t)0Q^ }%V?[ج˿p+2wKK INF\ tE(tu$! .y"D5n$@b+ ldSaJ3FDŽ!G<JA%ZQI.ESQ mSNLnWB>Z!iHیD6[]yHb~aȁb .nō '\/͈])&q'oЄ@s*)b؟7&HS?\ue?MÈ1N%pxaسYV$=(Mg; 'l>a)>lz߮S=Ռ $P=sAr**(Dj"CĊ,J3Z+E+*ZqFkDJLJt, $ӈ@#RNlIV(%E$2#"]:RM*B"ȇNjȌ(ˊ̨ˇL3̢Ҩ:dHM|MLHNS*E=Kk"HPN{)rRFpH"!3oBЇUXYJR ר:WEDXcUEbTYh1:6BfX2ШH3Aho#(+Emd[͈\ͨM|Ρ ܥ7<#FWg^(vRrCxTA19t:񳳟iM6*@Ϛ>:*ЏPlȖ~=y+a)cbbT#Hpw y["=9PBР%%P R4AT!`2 J`FBg 8BF 1*$ sF@&Ő!3A 1rCP"JN5p/D D'J9dC3}FDEY?T_S)*`F0M\嗉x݇p8FRNN:!_8D?嫹H = ̣3È@`{ x q?TT  š]b{Gl (XEDH +K8C(Ń;PDm: FBl'1ӒЏ 3̈xǰ#I9x hK@̪G HDr6#6$!:r#",dԴBb@ٌ@9ʹ M&1͌̈́/IN NK4bRN`%qNNpM6 N& -X UBTL\Ԉ5ټ;rA,ON$ Hp&!ڈ h[*?C*B"XQ*(FBx&J H!hsE8]<!&9Ų́(Q(hpQV } !X9ECL @˷]$ 0m73Qh|%!adP~RU  }T%$I5MPXH8H#7HQI8UQ%>QP8I@6J@U\Q%=LNTUT-Ռ8UTU@I`a7ˁX\EVҼVMTOU\EVUfgVoV4hUM4Nպh%֌0QWPQ-;hUנT@VWoW WS%W.tVW4T6QՎPػ`acekEգ o TJH>+ 蓈iԈ$?Ч38EWhT=e t(pW܈ɬKQtĬ1M(SOd̈D.pQ"X Mځ{[sS(%}ZRXʍ`[Fī?8 F\`КCE(Nňz̨E]R]m]}]u]e5L?*̭4ڧѰUܨ\WXT[0Z =|pRޥE ۿҋR8Ѩ 8D($8[R 6 e^ Zḩ8 P,_f] 7ÿ ~ L~]&a-aF Va fa&t =?ٌx\B} %?ap&^LQ  eE\᧭eMӪFbXT 4N8 s` @"__ ޏ[_{LpvN0OX(Eddv`Kv%L(MH~K$d_Uߌ@` } =Y>_`,K@Kꕈ0&C`e Q_> JA @8[a]ETY[qCeu0w6ev~x^gdDٽg g uF`6ƈ}a(9?cZRft\M 0dxb:FfXDXi+1M _Hx[qӍœ=]^th^ja4)]~᩾શfjaWH>?s>9>Nŧ5ޢ+K0䈿fMLd壘q_P4`IWYU1;挸jʮ켈w6Ѱ`~vϮ.і]Զ쭶 #޿^ D^W(ie0gn(ƈK äk\~Ո+fkvq)i.ԁHk`^~ڹm>oNo^ono. e&TJiV6.@\&ƈbispbU = 6$[c!L] nGa7i D~o_qoqq7fߘ jjWqXi0ӈBXi a^bnV8%"V@n(Y6ΈMs8s9s:sYqP9qU.sWP^X0'HD? >a /i@Fݶr#,oXX~ڋ~-爈Eeod7s[u\u]jW@?Tsƈ^sPRn FT3C"`=AQ߈ZuqRHwuOw@vlv6qX /lqwxvF,?j-w eXLjɬu^_xoxx)_Jvvs6!x/w :m8x!vvF?y/  N1Y4.8- Mn|u exzzzuC$PLjVk>zo78h Eq7zoY6R⨏ X/T_ z|||uWh&^vxM_Kn> ->p{M_sN(9_d6 Y8 @QgKoK|~~s-^ 68޸}8qPRwng R|Y,i/;p%p ",X%B|)+ P8"8 &"OLr%˖._Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNBEĂ !xaG rB "ٲT)b`@5`XAX%JDBrP):xP $аLN!B :8 fMzCQ.|8Ə#O|9ΟC.]T/8@Pú^0BΣO>~%2H "DD4[mz .`͔@D fc9Xw QRy@D[EZ[n!]u' t7☣;أ?CYUPUw4m$!n'o}$ M6]6gݶos( 7S 3D7_Ct =bsQ"6 S  };納k@ȚP;D$kUbmDxCs/ 3߼Cv#d2X8 \@J5 Awe 1uR|kDQ<]Cd6]"}El/\x' 6E3AF46b0"! KhBPQXqg+n;Kdu4oc |Qwc8wpsAAdy)ibp2D"/!w3E ;CFԨ66Di@ h6P(( Jяő#G="|\$B̉$iɂD|q iIeX$(/iI6œDd@)=8sKtM[U1?Q33XB$)47Ei'Dtw~.ٟ=\ld(ū ٻH&뵪bv&(E6+Ԟb9eO qPRdL=ڦ'-j U QyhKA$U[ Z ޞ4<9CNoJߒmmr2[6#-[v\*&np ]6ӹjAz'!  ,N5Ub3$ٟ$Cr%c1kKEH|ZhN i&ZRD Y!Ą,paekc xMHն㜤"M-oOK$=qd'F7z3RxK6.d5*phPq&tA{4Z\+l4jo+! fr"#l, RDNz[7$j &2OTqTv72332e9MmSBII^xM)߄[joj)5(hݺ%tCh]| }`ȧb`raU?d@}1\ ~8Δ"??!j?9bSWp yvAl<2.| dśAF6c.[ 08\=93R 4UM{+oy)'Pd%g y%p Ͻ Zxl|@̗ )A>ٔ 8qI_ys?-ܗ#!va-Kgl& r@|:tqor\XDAD|ПܟAH+ELA`]A E]=9VQĤ'\u@Q bOAH BFlTRԠ A $@MxA@  FI ^  naDIH uЎ̕~0K4α]|+B:F6EɟC& D<e] K)du"D1B4Dب@B\8ZI_CaAtc3O@L@]BiB-V"fBeD=WO(YA"HA@$$AڅQUj5Rc@c@AAjdBB$lH6DF\E DF FrA]!EpdJ KK"F?FGNJ?@K"ABT~p(%JOO%v@ȤAHI#q|:^uE<8U  $BUD_`G PdKd2"@4 A1@@HCA,|&DD4A@A82@8BQC 4i^ZAdBDDD v&] E֟ "y y$z2A{$(b!%TܧYQgzj%WX6A~Dp$h'"?jAXhqth |h(dA@hDNJ(ټhzXD(EvG[XD|I)Zcפ9_]iĕ@p y߼# &D8^U^K8`Y@"cv”5 o" ];EӐD::.6嘑ޘ  aO$ D  (p*&O&|@ |'Rdlx+ڈ*A*p6eK@w1Ŭ@pj@Dݕ $p k ꨖ陨Q(rtA,+A4+<@Dkٜj$qA@++ fİBo0+m e4FqU"AY7eYNH@*YtgD)Y@ٜDFąeK)c5i6fͶm`>gB0[XЕfgÖgUgqOݪ H٤B@J G"~A-AڜmK#E܂DA㲁ZSĔ "(+FbhO %)sM徭ƭvn|.AmmJ.ܮpAhn.&nA0BnH.BD\DXfkX4 loH'iDL:ʪY4̺&PQoJɲo,FxdD"D0NV)<%m_Fh::/f%AAF\d0.A.^a &*4Fnm _ '  $!LBppҰ@0@ppBPm^BEB/+4O'nanC@@o1{qD+ .gDqq$@#7r2#')$s}1҆ |xlmDHpHr)4nNe=)E4:**LdHH2'X&cHr$7]YV׽Lid#;24.$/B3A#.@]p3ì"жէ:DJB?j+LYK+B`٘ @ WܱQ3<o??tA44d#G*aNnB_.OY#IzA :T1'{(ԫ 耋!'(APy!{~+w*Be{TWzS:|zz3{G:J{jxNQИ2WUp(h8Ypy:Ô A z%88Q[{ {GA##D*lBS.ٴ<_<(k]|ad.h1dK(|R(xP hȈȄ $ɗt(J䉔6:㱢21:o/A0L96lJ(ˌ J4EjtKݑГ\3.#RRM=UV,Te%K8\uF?#$_4˴8,G$i;$@/#ʄ8i25Qꭿ{J N>"/K"R(>AT Z=^|J0!`QH(oHB@}COE1G&ޔ! vWA_#r@+L&QU*R &0" tZf !DLW  qn("aD=/~{"WQU`TF깡6'.SKjE@L oau';OlBYA  Ǝ#(G?Z ِF4MF$hKqYFp$e Z  *8IU#}e师B!H/OJ3~L̒yeBCIf9JI>JgO D B9фBPnh+ # @`D6 R0aR#GczQ{ _,j tH}銑!&JU-;3% %9ݩ_zn!y삑U$Q^UDB5d%4Y)bD$ΐӳwrhF*T$ʼn{ꆕLIZ&a*d*Yu.tT1"UZ#XlbZ[:L[<p˓j$שOl9N)I䎄DrZ07_ult12" W Ι ^&ޕc;ַ5^隤`] ڛ $ˀT`Wz B$?|""k!JrםŕKX1yc6#'2x4#8RdHPwӆ@"nBA al$)Cna^$u*srKܦ)#Q) y.aߘӚkȖ f7X I֒\d I|? ЮtF]A:?:s43M9m.]T0$`5gy>[STy]Uw'f"1@UEf|EmJle`"cM -!]l<;ѴI[6qtLmm!}Oއwh AwE} Dp{I8n9;I(rh{b nNW|"(kݺD,Љ^t%Z&A;Ceنn5jEBgkd}L]!| e&L=2do٥ف@7(G|w5—4(QczwoGRg#z-$o]ܥlwW&@_x b7MA+XA ZP8p]iо-k>DfW o~o_[nh̏j xҠoh l!2OHB\*b /Hub0$*".p26P#bZ@f P& oOBσ\ & P w )0,0 xʰzJ VPo|BO 0!PR#P`0"Q! 1!q+/yes"bHbf`wMw}{-ym3_cQ7@ [/"n>1Rv~|fQO"L@MbN.mִew.}m{Qבslޑqэbcr r RR"{L""/#3R#7#;#?$CR$G$K$O%SR%W%[%_&cR&g&k&o'sR'w'{'(R((()R)))*R***+R+++,R,ǒ,,-R-ג--.R.../R//QCS5S?J?# Jg^1֧IA#@d@FtR@9AA#@Mt=.;2264/XK!3@T*Ă^#3CT4XT0hT!D$pt~lt?Hv"TMs0sJ"A>CGT04"| Fa㪴C40T!:tCq04!%L4!Pt34_/ԽCM4/5IKP4HUQ$5J"VMm0tI%R9cRRSRd"=T#TcT9<3>5V0ZD1N3CVIVVmSWScWR5_zuQYmFhDF]!ZbZQV"eB@:u35_/[BUCM̵/$4CܵM/U/r3Gu/IM__U0;taY#VboF"v("./` [c0'6tv}?8{<d0H{$ +CX\6dc#J$BTVZag}f Cf_52ci{P2e1Bdkrgi'VmT> N0~L-F `H@j+b`_>CnnU/NRPKZ#p_op#%hEu"0 /qBpUr#rM@C0w4/TVt uaImr7w`3@w nWtST0DI`jFaH;wlJ6%$F3WKy$WM>"5C{3{%*~{&|&,E[)by~_F~+B|1( bN?}ׅ%~e~w6Tk{# 68(J׏wbI6(CPx j0ģM!~!ʷv+b}AV 3Æ&]İDxæ_#hߩ)3"~#{#x.X˜b4\S1xxvc!x b#0C؈, q8aX(J ` C0А `l*U]$T0PCI-6\aNX,{BN;ÕIdyl@p$~Z&-+B͘界a) "tիO_9MO8Is+9鼙 bcb Kڡ0J 1t+ H$4 B BOҔ5QxHOb#LւP&!$e}N oGs_B)U oMۀ(לS# b:\0"Vw\InW!Cwz'hP7d I b|Rl ,8c$Cx"@"8!.2Vx(\p3CoW$~;G.%*(*6#DuijI, {[vQvD \_3d;\ACۻh :{)ܼa:zL{`g#5{b"ÇHıMDz"lI$8/D[1>$8A+n%V%@P&drK1@"1c@FNmZP$O!;RBnD ?9A\L]ٓFiA ;ʧ\|Hη*Pcu) K}#l$ǎ<*837eI?O_=)Ç"B$HIB %A{]1 Iz]`(b2~\`/#ɗ|b%l5lC=&V`# (!"!M$\M7}~]}]K90J}]1๥`~+b*8"&0/~48^Jg3H[e-i"Q$xwSDX<|< v=)ك#XǛQp\/=2קзH!Ξvj)5O``IPޑko~IIbͦ#? !>T5C=h#1B#&&Mq> !B((騫["2|~9|AkM)Gܷ`  K |+@P[)"#htǍOSSG|0,FH+8~ H *!bS#JH IH-l᪄7W,\F"#S&QHE(!U͛1jTcB_,$̔, M ӧ/&̸ǐGB4TaҁJ:0Գ8"O0>׉hD7Ϊ>(4ܜSw&yZlܷ˘3kތϟ M JHĩukM}<4T'ا6"rZJC|;Pp]9kνDMkVݻO_Ͼl0IE?_d=D J)H&1P%ɄAH57~_ P 68IR+aDzX'*HDIk0G3BTB"A:DbD&*+tB!QVdM!dBWBeB[<&4gccUPeufBQʓ碌6gi顦s j`t6u9PQD@mAQ=pUe讼BiilF|聦^&$9 zS ()@D-,a!^q;K$D l\PB$BJBBRFg 5 EL eB!DĘ J2:l&fl3w&,33+A OQjy*Q)Ŗ&De6!JZZz=Q٥)p+vTٰ ~'R.ECAt0eЮQSJ,_uA/D mTB3+ Rp~yD+D#d^@CT|BG<CDdPR¯Ne?=BLR31G(>QP e:j Em1@e~QEmOMVA&)MVMWPg&`JSq4 x( 1bB=zBd0M,  ( O{\A )B-wCA"3Du"A84FD acE'!Mя$B)Ƅr bȑLa,Dž@!%EIHAWl_#H:gI^ Sf ~Ƃj\M"PM67$'pfm5 }I·*:<˄=d*D8HysA2R >SψS!@ǷDžLi Ax]&" IC!ЄD"M:2YcH2҇!'}HJ2̠G}=UQb i`FvԞj)Lp7!تHrJsB͔4`MYSUě վ J_KXGT!0aɭ1H`R.(GRx@RPC%dURYT"$AHH$ KWPEd)i-I_٤mDhݢַHkSB$*ͤJ DvFG˲}v]yU+̫NUN/#S[DRӵ8@5M3x2QSޚ@[+"Nz)|?LwsE1BbI,?#.e jXHibƾ81> !bc4帕anfk\<! X":uQWAeZv_~% "VvV7?ɉ3Bx\W*k( 2?GNHM!EҏRMWoU B T36j6C70) ]/L"ƴ]bxvEJ mBJ,-ĶI3jc䔔H7DDcYl=ɘ>5o!CJq#o3j (GZVoDZE2[]iSl +$J숟;hٴлzx "qꎈ| NOj1oo*8+c8DheR45_^dO/_Iiv!" h :͝1F!&+(b}.uCzK 5 =c<^_D(ww ~|p=xGLB5P7A h/4Kƙ!i,4vWŢiTL61jp-3u|orLŇ w,[],|,~\.4f! <Qs\vx}zGLFW<˴~|ѠQK.ܕ] Й= Ѣ9ތ@m$J>δP܌E m`U~.n$wl! 61TVnDX$ג~]~AAꚾLaϰ= H^1p!?o/o!#_w1lM|aWY[ Nd&~ae $-.)\QU_j/ qכJ@ DPB >QD-^ĘQF=~dȑ&&"9RB)h2ȩ\dQD9r \X&R8HeRRSnYeC\Rh䀃)R;A\Bq NMa 䄰@ʕ L|/ά-_ƜYfΝ=ZhҥMFZj֭]YdJ>]6Nddt|pqȞ iB´/<ԮA. zu S֔UMI"gd|6I漛7TU&boCcl<+<Ȋ-B 'B /0C 7C?1DS{nc 1p:8hѥ;/¥*+Mbҥr$(lEH 8WK#IR MkD,TRȿ8F$PCE4QEeQG4RC"4T7xSHB,+$HH.% N> Jʮ\bkXc5֨?+6R.U H:pM%Hjz3\B\cР=UZq(Z$^{7_}_ Mņu"eH^&'B8% rȃKLn,{ R1W[ho=Qh`ұ/ہZ!=hh@I ! &בj:kkH`FHSNZ' 2FLiU&in2NHΛJR#26;hVHj{E|IJh<~|G΃xvGz!Z5'Yu&rAY];vgvo=w%{* |^`6#S}vw裨@;!^]9!OOq kIBKGj_ \WڡHY;^ h]@6Ё`7<*SPcH sQa$rtMc28ccU@*(E=~{_PD%OUς#ӥ\! Ȯd8F2ьgDcĔ!!A-"ҧ."iA?ba/$ & (2m$~Df1脕` A( G]UXP  )1aN ոK^җf0Ix,R9qb!,51M)B6D VTNy}dHܘ,R;Ajl'HxB8WBZAoEhBP6TRmKCP9m!rH~7YC8;-Vi=Mй뉩3̤57G^.LHW-8vS r C:UVժW*Gjv썪q R  kŃRmQ,$)G'ڎfA@$aHI"_mڛO=iԐ*i QN 67+Ee?{ 54jpSg<K ~ se۔>+z0&ȃodiILI4e렎Z+g{t{$$sK d+$(H?Wn󳂐<;%Y>H#&D>9Kc : 㾄距sI칺^;F (شp=Ws⺣# 3()B@ʡ !Дx0CH.dR![=S+M'W8xC9L@LAmZAh((:KXxDʧ;C:"XM˽ p.+8長UdVt;뷵8H>̢Dr9@A31`ƌzRhDJ2${`A3H* utS$   *uqOd XFZj=AWDȄTȅD/>D8A]̢^tM@)B*A±H3<<A!Wp }#!Z[ǨX+!E+H bȣDʤTJ` H$8c7|2cI:4B>wStk$4Mx1?; k B5CEDMfiOEuGHT)KLMnRNPQ%,TUUeVKWYZ-UN[]^f!T_a%b]JJcUeef@"SYRgklغop׫˵qEtUu%Xdvxyu > z|}͚pS~؁%؂h*0Se؆u؇؈؉؊؋،؍؎؏ِّ%ْ5ٓEٔUٕeٖuٜٟٗ٘ٙٚٛٝٞڠڡ%ڢ5ڣEڤUڥeڦuڧڨکڪګڬڥUAZ%گڳE۴8m[$Xu[[ۻ[CyAX[5A@9HE]UQ[XƝ[5H(7PMU=ܹ\he}[JX؝[م%E۶SIX[ ܝ5$ʝ^]S$[7X[mMu#34 Um[ u%m[ HH@V`œh}5_` TU[.=߹`VTRX^ &ޕ8P7ER8`7I`H$6ہXb$Ia A`6e_&& 0aEb92>cxbM5h:hb^! =*% =U Q@֣eUH]dUWGNH nH;&7ujdxMIX݄؄V\W@ Ne\\dJd8\N_He TEf$8W<> &c )DZu[Mmn[n m8f\^P% N](=(綍b>g=Z[^gbg g}Fa^g0f@ghV\i&j&kZu[Mn[[8h%x綍炘gggdbXg]n-h0i[.&fNdb~n]%$6X[ ni#F%&iW閆 j&ꂸu6`\vjng\%Z&Ȗ쎸kP$j.v[88E`k>m3Pon❞38]vl`h6^$PY[@vN0%nn k:  HPݗV%[ն%_(AxI2bWpn~oUdn~ƞn[%T Nm7^oy۸(T0-Q߂\/> Na0iww[^ FoHݹ[%dž0 끘 vgH@eoWpo[806s8oS6fn-.q r0p5[v&s&['%()6r]'m۹n /0n%_m=tH=sntK'p6r낈`E`D[E*v`aqt5qJWuh>䃰=l8m1weOsW8LV/WۃLu tnn]uupz)v9v^0郠8Px'j?ikl/novzN-w/^Wg7_x6"y'zo]w0{eyygwۈpx!xwTlN/sGgu}^pҘy{yyxl?xuOzzd>/;WwO]vۮWۘ ZA[V_n`{p{vx^Wq?'l\oyO[ ƧߐGZ?~u]q[knїEg_O̯?.o[}}I} }- &~h_o/yAHre 7tF!H Bjb _` D"=P(cI0THi$̘2gi&Μ:w'РB-j(ҤJ2m)ԨZԎV.굣}=j`kjײm-ܚn "9Wa]-ڄ1Ń4  )%H5Ĕ NL9[L|01+gɁ'EJܰ၌Үm6ܺw7pTb]+kaM.մΧSn Ef4D@<$4z 8$)$vvE ̗DED!p 2x6D wB rPk A %n'P יx")"-QYUZrV5w"tUIw#A  8RWH6Q l8]Q*$BtH~MԝFMa4UYBmpȦBi 9'uy'y  P <@xC4@(@줉 P@IC2^%T"C(0 @16,J@b00D9i:hC9VcLqh *Bħ* B&0+z;.g@L*wiThlQ pі!eC9hbBg6\%J.K<1'WJg\-Lj"%rX[@DM4@U @2i@A@(Ol3}LgLHBsAĉT % M,PMX25,LP|;ێ b9 SbŌz&2U!V L <,:4T1%?P@15!|p'`hcT ?;+U`&Wx+M{#A@##Fb: J%PHT(@At 8$d $+J)d"C8pKh E`B F<"{.& Ue-ytV=PH;!bC Qi"~[cLŚ~#D赘\:FyM#IG$RBLDPDBʝ 4h V dnH V! )DvMd\H&@4`EDKd`.E9R6D44lLJ9 N<':өu.NHΗ iiNO|CcO4Fģ+ʘIĞ[Aɨطp"#=RkQy"A2O#EQ-b.])#5$WK[d>h&UcE"&PXiÅHBBVV2dU5z=UзRb[I+nŪam@ Kv.EAJ@!*+j 0*UlXhFDBVÊĨ@[~nED'$bI@ X@t:͏o+:tQGbT8^ YM# VkYv 9 `*U@KaQ -ZL1uP+ɤ+}HƜ4C2G"Vz_.͊ġ%O<72#F>f>>ȰY,ȡ# -#@ER5U%X,'al}T,>!kQ<-yJl#d[@t'(7D.[A<['I~cw$HHiW{Dg++p `m挄H)$胐9 >XÕkj%43.6nH˛k&I$@6Gy}㎼' ټjO%;c-Ev%bw;o\w"Qcn\|+_$k[V!Mf#BKɔ{mI̓$WY$j9M?LzaM]XܒLD :n"'v'~ FY#bG%s!M Lj=b$ +Dqrq!Fp+N!TA=⚥H"Mx!QЀ"7v7~#8 (N)2Z & ;;r="waMpTъmE!8@굌/F0zG9(NL4fu4VAMXH[8BG~$HHF86D9v@yEݓU<+(XJ­\T)\`UAFP+6%ODJXXDЄb)YHfVn%Wv%pAGcCd0+|MTOP-DdCKiDFD)DVD$\_zD%̤WFdN&eV沤a)`He0MO LҥA"%0 eC#Mr>\Z>%e'r&rz%XX!V$gb`M)UmMp A&U, hB)Uk&aZŹL`WJ$znVlvĵG@pN\@H.'6>'6+<9@KVӕ;n(b}r'N$"?D̕L۵L$_LL *g|[CE"MhMPq()&ϕB`eNAAoƎRr뉨NPAn]5HP|z"CbE HTDtLA*)r!4iOAG"dNQ9y~Q`%]&ֹHD |vNE5jXi)VYL`MT⠞S4d˯kŰk4 *ORVjNO%D%caEiO,_U0N"&LLf6gӹA8W"%*T,MX)jͿnS lUH0kNqLΨfaDagYYbDqkO%YaUkN"zD͑ʫ[ 6žU, -T$!$Ĕ&-P:!F>tf8odFnD]UT~DxP^RDuN>9z9kEZ+(.FxYm%UPy2Ԙ(E ,>9mntŴ' qq- C{. D&qO [R"nyPnxkΥM\-cD8ږ v)DoR$/nnB.K'^C)' [?aooLD4nE#3 4Os3ro`&F\bq/XE]ӈ~,k#mU$Hɕ-~ 3&$tv±pЙ/:~q3gtLn0/5ktCp4%3n(\NIFŎ$A`bU8z0ؤ%;o:W}Q0+D`n0BNMR4=>}ѺOKIk_ ۢd`eU:H'"@92 @XmNUT(FB\&u[3-^ǖvU5OhB5 d!ȵM5[[cSLYSYAZddN0`GVMNi _K6Mup`6$v02c6kG\jCfJm6b+n76vkDpBį׈}=yAK\}L8C %5 3DDI's*NwpUfd '@jVᵑ1vK5PAL8Wl",@EOD"8gAA&8W[8SxBfP$BaaL|x#T8 `[E)A 8!xxɈxTx8Ɗ8cx+XxzDSmGxY+x+Mő'ooˡű+@cAQ[#%39_yD" [ɶHK̡ !|ўBᏆZ)cpWzOG-@p-Z(&~)yFqwG/"{2n3hBUTBi yj02+O1C8HlM׌̋X@] ІWcpTAYo7UF-&<Fě <Ǽ̿<5·ŏOۆ|Si?_;o |Jƃ^"P9A|d<9}dybն.YTA"9,0$W/=3BBr{˪>b5O٢R$>Yݬ>G0Z !4u=K̻͗9ʡ@nn6OLDŽhM$ E;OgmŹ 3Cq@8P&T A !p+( DDbG J #GQ @ cŇ3Nl-vφ&i&Q+Dg͎ Z2 :vPL"EԧǛ8uF)SՖfV )"C쑫S(QӃ^[buPЌ4Qpz+b>dD :JuwDw? .Wr,Mܛ,>x[n2(>i t4)?= Ɯϲ r+oE6A NB(|2ĩH@"`K,+D!"\ϩ&z2A"]$ȞD˄D1:;'\+Dk1@sC$ Dk@5*n N )rCȷ`#nڀBԩ\Spʴ8kęNz.'J!t Va-c%q2C-h8bփFlׄ``…pSuYÈpnilہ|0DXcYnڃ `[ *!zWMv݅BZnY x֕hx նbB q GX!"Jױ1~Yb{ k~]C3惒Fjv Uh,vVhcWnV%=(_ f" *hM8(jb,:3K'л8FRH[WCN{2VVՆ?*wB=R~C6T=Sކ8RU"]_/̫V ́nN|2^pM93M!'2?#Iۈ@ը O0)A]-l䧐00![B (;\_XA~?/(`f‘(D!AH愄7WBjAL;DH2 "m Eăq. ;dhEݲcnaPNAHpr1 rR9 H H#I9 S g;4sd6"GB2$ 4 E  e(2-("[#RM Df`QL M :҇ɮ7NqpHMPTT3}0@X#`!bOx`Fz<|}/y.)RN a#YE@ 4ЄT;PIQR9kTu󝩊'A,Ճ2>M hk*¶tUȅjPz ܱeG2C /` M!hEZ!@Aӂ#I65SM-+ ݑ I*6/6W-/PJ„ F4D hB/a>PF{SAy^ !&쐷J+#>5׻jeOӯ߬{i`y+ ʖ=m:퍪mu;!5=vAҚpu)wLm_Ŝ#ⱵwQ0;Peq{";pM+/op/(1?1ڈWKo/! Fo2%Or0`|q#9#=#A;1gb;d! U1Q"cR_/;Ju|މ!+D$P gqX'1B70XC3@t@ @&V3!hr%=9q3/T"9/;lbmtjSxpC B:rFi'8-#Ah \&'&y !RQHcH'(4G!5S;FD ,L TIJ]!H FB|*4Jw"K ĸ4SEE;`A OT: tP P PPAI&NJJAxjHӥT10QBR)R=t5Bk XvT"R'RVlmQNPREWfVB=Z %U2M3,p5fT':TU]U!VqmVkZBWGWt0~ >~!>%~)-1>5~9=A>E~IMQ>U~Y]a>e~imq>u~y}>~艾>~陾>~ꩾ>~빾>~ɾ>~پ>~>~? ?!?%)-1?59=A?EIMQ?UY]a?eimq?uy}?????O``ٟ5Y"Fۿ_dlnS:ӁPY‰+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥL)j"2,`z 6رd˚=6ڵlۺ} 7ܹt|5Q:H`W >8Ō;~ 9ɔ+5xȠˤK>:լ[~ ;03v=;ċ?<̛'~Qy#,Őܻ{>˛ikA*2اۿ?I]AT _E>aNHa^V"QeJqHQ|a&b*b-fhM<@!4t.dBIdF!Q%ru4"V^eZneXPdTbzfjfn cO@}X%~ hJ`d %PhNJi^: `Ђ0ijzԡMUAQPފk4TD0E$D.l> dhAqC$HAm~ niD"2hn ot9{yZ!YT pLpL0E[pOLq:Z^EB0$"Lr&WTi'Ls6l$ UTNT DLtF4~'|+OUIOMuV_ j!P%fvj|IFevߍwz3bɰ Pކxg^TJBـ_y_MnNz馟>r)M)A-H5Q>*f.h6n=sJ}Dy[IUCk[cSjZte|nqo`>6B:E>G@KCOHPISLVP[T_Xc]f`jdmgoismvqys|w~y}ւuى}؇zS\Nhtc|ڎݖߜࠕ⦜Çƍ͜˗ȐѤ䭤洬黴꿸ÖŚǝȟɡ̦ΪѮӲն׹ټھ¼Ԫӧ۸ز߿G H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx޿ LÈ+^|60L˘3k̹GӨS^ͺװ]B=:ظsͻ'#“+_μAybGνËG˩Ruv$˟O}zdG2HqPRG& 6`nR`m(=q M `hm($hj!!*)hIШ<2%q#%Eb@ĐPF)?Ƥ3+.@Fwc_ihL\H1I%Цt|ym6@Hd~*$d%裐F*iW:qrN~C0驨:a)mHvdиh|ta+,EHj\*$V:-&VkNav:ⶴ!Q2FrK!/nvyl4k +`ˀF%v0F*:gmy/mgnqdL0,g~,qj)3mHI6ӖE#jEQJa\wbU찈~H-E`-tlӢkvMCWt݈'*t޴ }#aw_57[d k bn/ˤ{;Qۖnq0H 81=$*ٹWo]J){M 'b@D:iD>ۋVrD\#ˎ$򇄭haQ]&:ú[J1i;pyم"b[ /K (L U6aTB( 9i3R!N!8"P*B/"=FA?74"!H2hiB?4ň.P&DĶD nH8c%Y*fL"Y˵)@[D''Pr4| xq!C"aAb~Vˑ^4A"@Hi \rQ!244ٛx^F[2=_g ѶqBUb+:Ya+@|X O6)GҁB IMЀNӆ-d|fij۠iWYд+C&~f"Wn~oz*"Tdȍt}7Ǥgҽ+ #հ!$=z׆ ɷJ3 N>tT)Rrz!UDڧ8}E* Q,Fʻ{~(LzIɓ-:(IKp'(3@D_/$5"C!Es[gSmxR~Q j3'Y]!l~!&O6'Bqy2~;}O2Xc_WRuX?-"K7$O^g 7 gn!{ y @QnC t77$f&Fx#zgG<-oa G7BՄe%}F %x75 @C3}}z[!PWxYr8!-H:EGUd}J8`^yRS`htzЉ2 f&fȇݑLbzm&Է֥!!fy)H`1@O\xTX,yQ+r7lA1lX(긎!hXR嵁 !f,A؋h| x4QܲZ(/>W8v%MŽ$YAF Q`1")x$(P~B2H8 m戓-h+)/o"GZQd^!% vW*4`!TRFTD:g{U]!W9|6cᔖ7bGnxC4e)m )Q1OQхA8|Ǖ|_A=v7(i 29Iirf FM""IQ8/9 ICxA}pVm 59WZyTgYi 1".7[ 7Lyx"hIXՙ Y"/'@*I:i Hg,vנL3~rGnRW^"oi)jeٕќ7Rx㉝ BJ(XAV!Ot)1 C0l~nx mp6P>pGTO|ν.νj\Ka/..e? N h37K;O?C/@0= q/p+Y>WoWoY//`M8_e2'/@jPGKO1?591sN l x'x7~f: MS0=CbyKQs:0c0n: ,UfN5؞8;G"n֝{)B'iQX̔!zQ~PB/`0+Du /|CbCrɛ 0Ɂ3`J( p648[QEހ N$I 98hP\FH7k q! eXCB>y~8/!`Cx9cB0. IRp0!D2VҒd&5oy  RCuBKP@E!怨`A-8PÜܲ4 1K#6(LXS5L|xS)| YmwXf2IN$`4dI 9deu! u[[P r%Ɣ|"$Q\ ăX9"A&ᕐJeiF@vҼ$dC "P(cq$(1mF%L uC;~hMghh<r:pÄ 1,')4FtGӸ`q#2 .k#@@ N`77TU24zb3*+ G:C G؃8QC9; :*8umnčȎHB<Ӏ7x<Ѡ&=Ҡ<@Fk& LN0TE(I’8xġIL`XFEv47QuqDp& Ւb01CGQr`ca?샌 P?lDTd}L P505LY !e IM%kl EAN~;䥫DԜ<<hґhR(Bб,<NϺҍwn+JN`05$Dp = Q};Oje_U8 YHeuLUZg-YKDXDR٣XQ Ymu۷%Vt 5eF}~M =xHQNܦY I8SEApOܬ< b< %< L<\9N ሄ *k I*T ]NPQ0[DD RD05Szcuஆxy$/qW ̃d ك鴃] Q# 5K:m"-5a]:lV{`^ 5ub nD*WXW3;zJ9Q NH\a ܃PCW5x=  <>}MН<`9%  $ЃnD a񮓨baȠ؁7PD%آE5 #_߁VȁBtщݟMaMf}/ȁޡ*!Bc5f vHGvT8c:%xB:AZ!/Z>cia68%hM.02_`> m,3M+= $π\`X[f:=hk"4m>Be dfEf^FAX0׭T,: Kch_`.PZdNnEՏ`^ d9->LT]UQQPi76 ^a&6 Hj8 >~f+W;?p}|N!. pfhq(4 E@o 7/=NJg9)-ƤJߒ`/:EP/5V0l$( \m娀wHCNZ솨h4 i_}jٽFVJ0 x6g甈HhnԈ-($ a|kZD\~]Tk˜x\M, =v)fgN!>ȖDNkQ Nm茀3$t&X=}ZĀ., 5^ZvpDmȁ4}K(6@ _+,WnCĨow%P(oQ,-Ɗ$lȚH. N@@)%GX026l)t CG8sp&8JwW8/q1I-J2xhX%HrFVqH˂ޓ(ޣ"^+P?8T2d8mhWȆ⣨[&آTޞ@+&kP՛(SU?~P8GtvK$%elHVȸn ؘnF y-=79)yt8,|nJt˻nw]YGe2Y>RރEP`Cc'|9XE؃5h>zA6GH8R>U7zgH4@OE5x猤_7hz'' PyQotp<@'I x_fd҃FWYk)0}!;  _5 EW|'`ΙzKx 07ru|D82g@OjΧ ~?x(P}f`p~N)#,hF1lC?'A*qƂz>$SD-g\$Μ:wIA*QJ2m)ԨRRj*֬Zr+ذbǒ-k,ڴjײ@Ȯ2'6)&JQ2o q<' S D;t%}/Ӭs@L pFxc5xVm'0-tܺw7‡/n8#+t6/-b9 g\l/F>@y(0;=Bv%rVmȑӂ > Zx!j!z!!ʼnj!~!S IVa 3%]Y7!GX〒={5[=F8I!G4@cA("i&m&q9'kwPf`qA$xNTIG=*I- >Feiؠ9qr_G&jCjЙ;-M=r(` h"pj ;,{,*,zI{%j$@Ģ'yFkOwWGR ĕ$3)]͔TWRqR-M ʐ쓹 @$ ̊<2%|2)2ryDIb%A`-RMA@`ęG&SqD@eEҀD(5SO`{Fj?\LDFUuI 8Qq/ˍ;8K>9啧IzUJGy U$~G֑KQc訷E  SYH<F$ENq"EF8@R F<9T@@ $ 6`AYFt@ 2ђUcG[* F׏$aayWMs%HN;g6keHgYcjI҂ֵҲ'OT. Ƚv)B|‰vu*5r Iv-Ng-d%Q.B嶶`FPٰǻeHmc{>.A\(h'ĥo Y V hIqKI%0Kb X'&Hϫa$5$pca*v\y=y8O &(B=q1-tbX1Oxl$CLX9YmMS2,넢_썌i,//e 2+퉛l9T-)/C.1ә\fUgn 3 gtah4'ԯrVa!~5tW;!~u(m{P7O5ݰ{~T"}$wuķ{5{`3ٸO4ޓ'[5OvVL?jIÃ?q5E\[9A!yQIĤD!G@ %1AC zSDЍ!ՈF="Q !۝){/ڿb'IqW $i4q2y^' ޕ.{dY]jSL9E>—}H8$Ap"I~$_$})ki~?$|9m ߂I_ŝļXE 8D NDI`qEh`NhK{b DpN@qMN ])A^CHCP>D#A8M~qB$p45fAlc7bv d6FJ&bA'`Rj @bd? BhCScAY$B>CbEE^q9Hd}dA,G#-QJcO$1@ASHP= 6WAĠ=DF`~TW聪K:V*^WzܠT;D_IPTYC I$̥Ax(XBDVr !"Q:RenU@fKBbdB\A!d*"f%g%OtNԜUf,cFAxnlk׷09MOX[HpDYMdCGSf`u taBũdfdNfڊlxVzA|YdargC'~&O&OAH&hn`M(ɘE*V-QL<,XlCPtŒI+*`ɊN j&*6*̺̆-ܖ+*^"A>ʙnme&-*rG$S,Op.~nr #P币n>uD-CYnl^nO(߮lAVnCkL4:onC+J SA oTˎ¿Rly:&bPMzDP/[oJpgcNk ®R.#DThm`(S iAP&boRs=#[8fXRc2~ċ:E D/'Fd&.}6-p,1Zbpo_q6 ;Dc䄌)i֊0Ap CNiE71N0hQ0F1z5D#'1$CcHM$_Q}O@իCJ%^3DpC<¶yg ,@S&'!!t׵,-S0Vo;rA(A4CAH11 pR@sfX3gGE# 3iq!q (x. GjN>oL8Wa&3D\-Ex&@p `h,a9 (k N$BHD $AHG4G=pIĚ/3"職Z=@ynqTз}/E}KտQ T-SS.}&^4wWDݻY s"q[~Ws/X+'rO (I{ryL'!#-FpCXGelT?xq+G4gϡG>t $+6T(%I$q^o}xO'A~}^v~ P8p40b! 1PC8a?6 QI,QLQYlEN\B\qQy.#LR%l'?0@ `֤/ S1,3LS5l7S9;S=? TA -CMTEmG!TI)K1TM9OA UQI-SQMUUYmWaUYi[qU]y_ Va-cMVemgVikVmo Wq-sMWumwWy{W}X .NXn!X)1X9AYI.QNYYnaYiqYy矁Z衉.裑NZ饙n駡Zꩩ꫱Z뭹[.N[n[[\ /O\o!\)1\9A]I/QO]Yoa]iq]wۘc~7 g^oބ瓯SL&^zELx O_fކڗ~c"翤 ;|GxOz  A ވ'^ B!~0G=&LăCT= f )Lta=aDؠ%L$Q0Jo!jpJoXCyJ%b"bdb,6Y '4VeͫUF-&"Eh#$R0敁#H (C{OHM~CD:ټO%cJU:p0udr 9̒E"0I]OһDzټ_E cCh\iXrڳd~rKiڋD ŤSzNqs <"/8 lPH&dK R0&p/J" / fJ@ jPBĄ^,A N3L-AJtS`;)OK^ jNDLہ0(J/GY %(iR՘A"La pI3XcK'[v_MU HYփHMQ }ٹ2{`S ])/KD\: r$ݴ.Hu%|]{a b\z 'Xb[ŶP.@zFs> IA"bU9vɷ\n'; {uz=U\7e}Ar?uU :=V#c0]nQ~6diVmubkf #mn!"0oÂm?mGVpO_Bo@r26!p! o)+8.W2&+3: *60*7TwuYu!  Jn @_au"  @lWvW"@Tw~u !D#!>7by'j73"R V  ;>>bl9b!"6j+bɝ! +/!#Fw 7?OyI"ص bK%i7R9x';eJ"|`m >C)F &9u)a0 @"J "iا"?GT `"@ 08PQ!"x$ő$B'z$RƄ2f P@AG%{ 4(Ě6 'C}v4(BZ$c4dPdÔ6ܚi6$tڽ7޽| 8 >8Ō;~ 9>cqAѢ 8EhbD1kBR XK 6 zfӣ`[p}=s F N\/ꂪl2s ֌\wѧй򟾭't(]W]l#m@wIEEq4~NHa^ana~b"fH^hFiU!*s%9^iAe=\݋?X*Rh0)ЉC'Zne[eeX}1H~'aiV=XP#g~ hJh b#E@4ޔ2gYrN&mFc-(Ep@T6dyT aNBA!BĨ|=2$~d#IB_AUVڥɬ5jP~ nKn枋n~*JR$O8@l&+BV{V_5 !GyHapy,P<:"BPRJeK$A"jlK/v,zerUkiUZoB=#}FɤJ/tN? uRO@E"E6 `Q|PWAn׹sDm/FŁkCzC7>auF]r/ =nzdGO6tUKRf kAEy ղN{ߎ{W=PB 3)?wOUpIFIXc EMo`B!#?P<-gLLeADy`D 謑 / jpLTҀ0G b~d{A@F"@^ p, vQ IPd HF+#)\ Q{qaCNB bE)$#,EN&%rCB_(B3Fj}B "#hhCD!;J<|TC!(r%/LjrƯOT aBH ̍bbK"9=LbF&D$8 ʂ b0fXklj@GK_$Q%+m3䋌B)kf FSȜ,%IKWN5|fOd鸒Sd^.eɟ=)I,lC шJt$2eEHXr  x;'xǑoH1(r  A B: % B1u7QIRDLM`$<WGZRPZ )@F#юND3F9ͽ;%`4>iiHFԴ'|WZ6^Re/j5CT7(^ i3Ց$ EIHtXn3=mʰd%fj֛jzj9 E_hCN{$d7 zH$`.LwOy s~ ;mJIh7F 6MS-P]{rY!yXLY?pH07Y .0 aQA|ՌG)^OSܛ8K<(wQnȉ1sn-ozKW!G|yEb>c<:63nJ;:P, u'ӔB(Ck#FOHB# )$! rϐ'})pdf C$Y^?jO40ׅBw${w|JzAwo^&naNvmCv=\/HЯeu'QBQ7ͯ?_[m{?D bm# /mQH{]6OY׶eOh}| @yxI#e  (+Xly3;'˷oާk4A 5kƆ*胛ԂGKȄ R]#uMATm H VQb`Heh}1׃gh;cyzx8zrQy|(,vnGx }FERpy܆ /6X.e=a"doIvX61Fȉ(HрNPmV׈jce<ɨȌVqWa!3a4'~!_Rl˗}聿Pv(Hh pe>,ǎ^S ]'Ȑ .zPf!㊀qPI%i Ez`Dye%6ё!O7'?  y xp׏0y|?1nX ܁2tl=Y[_$|򔌘L H܆\)sI7H w0@* hHB` Oو◁cY9RF@oSqtG@* Hyp 5uї :PWUa2!GoIP I OY fqY eВ[|'빞i칞l\9h&s! O0n Й ?5X:V ?1qɚPy SP ~AjaAy@ @cr?P > QLC!Y  ze~ _0}Eew 0ngi[ѣAg6G{ED>aSMz˶k\\Zj_5j@̪*TPjWq*_Z{K k% ~ :RZ+0_j7UT6\?Ju є q?%q]e 6B ˇ yqaE$X|pgqS4?7$f% jO,~M %VypgY;0v++;kk!{(a+R }i;yhZrz m~en OO5wngE;gz{<iWwiwTѸa})8e[_'i&:3 #+0v?IL `ç:6<Zw |{sajz0ːltrg]4!-.Ck }wIr&](_Gwg`6 7mU.TȣAmXP59MA6A^~,_eՃWu橯OM'Fp}1}L^b!U:XN((]a.bX|=AH .@{^wy|^nn} @2֮^ߜ0 `ܛ &ckX2wQqL#mi ZSUL0=>W>Q0lC^GZ jvM jȘɅ]:CiѭU0!N.j>rݪ>!^( Ypԁ~ӈ.^h>O7F?\Rj%|yxj o[ЫĪ@>ՋkB!z-HNŖI?9N Ex46V@Dn ե(jnwcRN4#o@^nj%?< 1ACM d@__y{}_m_})F/"`~ $bd"J\n?*+Q;o+Z@}ZjNWt%]onZV=AZ@6%^Ċ2[N3sjs)@6= Am} 4 ĂC#~X8 HtxǏ 8$YI)Udӟ(F0`$(N99yPOvyP#RlYRȏJ& U|T@IU @UDUFZRJU##~ 0AަP6ͺxbk!⅚dR**HQ$GZ`dתGF)홣cG$l#rqɕ/g~ѥO?2Hd8 U,@@@QLA@7HPt%Ġ .Xi{?A3=[(-$ *[R#x0B?"IR)8/:@!ZKa  $ 0y 2J >’顃 `7㜳;G$ج""RhPrN9s+Ҡ-겤QFPCuTNo-'z ď[< )4*4 RJ: W $:Ԡ-"@2∯L0 hpWJ!NJk֠iH:Yh 4fG+,jm%Jː#K^NCrGcCnJ 3-J#`+8idO'Zj(HiT`p[Y"?B%vM$vZFi9".!bh~zwꇪzmX7롮 >i,*$#2 #F( &_P8\8+?tD!ZtFKtDqKg߆{wG}$#8e'~D9cJuT^A#`A1j `%܏LHd!zx޵[ƵxnA @]TŒz*!G` "HR>c؍Js-(," $/$VqWU,8db1alxCjPn eɈ&7Xfk q#.6BC4mYbJŃMh=|QhAHH6J 2eHD1F p$$#9ɈdvH:䑑&!2ȁ ;IGXR%kEX)O(Ja_'}d^ G*3\I_(R"ǂ6%_)0"m[J 3%jL$ҁXjkɁ| >6u$ DLvCΤW!}D,%7K@l!#$,xfFOP.{PC{wT{l wFAZbMT-|ǷIK*(er *>nzץܔpSs3GԘc$ C~$nn "$(֨W\IFpLpvW[n[WrTH!'QP)bQ!qt,Ap;F! % BB1@BP'hXXYsv:23K # 2 " >6>(&UBY ;a=X !*+`Dľ@YE). d"1Y@%g%h|dP2LRN˭)#0EDOKB(Lc,ѱ(MQQ >yJ^tJQ2LFK;K݉R*!Ə85#]F %;D$0!B<4]6-N 3T,S6uӉQ?;=pNC??ЃDPVT IDU)Ĝ<N8YkFdL贎;8Vkb+(ɒ >CM>6e U|ՈpWTA WXQ"QQpZ$rOHs"wtRP׹LK|.=v}Y1|Q'-L~=t(RFR{%$HXM(2xSٴӅSa†S*WqU?$>ST?H),T L$Q=IYDNt*UrПDSud(߳6C⛽@ecCOD1+7 ;MJ;ؙܩ!זؿ̃9jsWQTeO =(Å[u5XEmƅu,}=)؇X[`R؇؅Y2R"ٗEݫlB2m%AB(P13)?()',ڻ\TNYTڬ\ T-uJ4NP[/+"65[QV֕vt^=7=v ?5Em p)nV )X .XxJ7HPEiQE[~ݏ5Ӓ^;}23^=E^HZ^0YI#Þ=:6XTI(I=Ԑ1Z*_X- sTmyEFU_H5iU4D\RPZ(MPˍ}}6j [ ~.G J5Ccє)a QYbYyR\LM)$ENKab.fyeMR!Omi>uH"O''FمgVa0H݁Q@g.h]m21.h*lrA]ԕҾQ %5W&L_IJ 􄈯1-z2{Ҧb*epUS~֬\֧T6_`on(dbh kF 1Gf`UL9b\fzebfse. >{Mˈe>s)h+^{53gHh8<=}hѾ!J鲖G\7 8S၏(Up)e4~bbF5}bVQ߇оʫ4iU`\ FVJJ_-jee lpT.(8$0Wj "]3FylN]`þ梓H' WjpL p)q4h-M{F|.ӃHMH #W0zd1 $!7$CSi$<3vԡ2F"nېnizfPnUjP >gzE4zS4t'_`fm&jojeXo)8|t*i,O <]EK;5Eg=}# eufg>6 _J[FVGu[k>]cgab7mOv)Y(h0Iuʃ6V#c v ]!s@9~W3xG%GCZو$ςpW,(3#([1],9Kp,@Y 5t8?"E;G$0zdPE\FЩ6pX!M> xnqxR?U~s.zN ^|Xp:f~qVLuP)߸RV { /b{EX' /sbD2zw>zw!m8;BgJH }7JМ<K:2T~Ԋ<\pϺ4LG1O< 6˦4EQCsz q?D PQ\0P y(qD D8E(GYh䣁>*\#K LN(呋&\X#N\r+)ذ >G %R 9GhTp,۶n+w.ݺC.R*E~^H'\|Q8ry󓃀U>L╢́zQ[~;PoV\qd%z׃*_\`dK !D0}zQ7'( a/,s4T!H ;A16>2ݴ@HE `Dq& t.Em:m|Ert.By\ &Lp:q; V_|JoR(ps9EWtC TCQHUCh0D`C[zQ^E@>4ETGZqe\Dа ?[1=R *FAFnjxi˨;SvK4T@dk}m{ |׭uj3|[=~PQL_N,&@wC itIYV!=(0͆l""bCG4D=" X##Hl $!6x:wcqo 45AX\A y}<*=cz` Auai(IC*W O#Ļ.MJ)icydI-QI7tr,"8 .Lrhs>X0a#Hh |8%\vL2Ւf 6woɱG8Nuj|PٴzZ @ ).,t4XAC24R">"DYҕG 2jԖDBPHR!OHB#Rdn#z)!A>UE m!xSPMgTH#ќN2T"S^!A0 =g 1?40v̚PZ #d4;]~DK$AZtQ{ۦ 2qHj*ұQpB\`Y["- 8ח<ς5gZٮD[us2NcҮD8\dmB"C̻; ~Xd&;UՅN!GH!x"U 9%7?"P)"QtxC)D@3c/mm$0wI]P= lmC=H%i!c[b%;Q`=j[2Om 6t%ִti(~BEIRBuo付 Kex[ 2PY8ƫC;[2KXnZ RH, @Q2K H}za>g凔JێbtX l[&U1PpB `*{u^pwA]eϒuAݘbIpB퍵{~&n %_Hģo}c>ұ@YuS@py"R]~^ rE׮=XfѤM]dNmFUZ-UfXe4Qlile[Kؕu[A 6s "Am U|ʮ\ ` ڈ&-G`U`a Z!,D^r(He(XPDmF-^FDE=Di?AEe!`5_[H~ x(|nfO`vAIR†#^F9va*\]FE<`":TE ź]~e*E$"%_"Xbb0"0B#Ib4RqmShDbr '_7elAFaK@ lh/`&%ڄhȢhES`(|PW]Q"%A*FFKU9(N(†B9UcI2އ,U076`[ֹeJJDL$]diddOL֤R:o}X$@UV.D$e 1JAE^CUZ O1$\m:L$QK, fN&of'Qq2gs:s#<@@<pA ^[DB)V&0* rLf@A}\X4y@AS~NbrA Y,tg(,!RAgM\61t*6@w^!}!~Bg e@+>S\rEVI$(BiJRic@Zijxx'|))rJziii^ij ja*2j:BjJR%jbjjrjz꧂jB㥊jꩢjꪲj>*jjj:jk kj"k*2k:볦ܱBRkZbk2jkz뷂k)빢k뺲kڞkk᫵&m*2m~+JRmZmfb\rmzNj)ؒmٚ٢s mۺmܦ"A`KLrnzn,%,rn.BF|n.a nޮDAn"o2o:FBRoZJjro>ezoؖootvoү\o/,p ƍe^ 3p.鮙!Sp[n2]p{m 2^ p +@ iw pU居lp p"@,[(,/1>l0"AOɱ'G"qLRKnof[t^zq,wa$HPUjw/E2±}"Hhq1 [Q$o `T0"; .h2%]Rr*K%w8nqzI"'K4r/ ,+_ߠ@r5NG.T i(r4+0G#,8"R3Ks8Rs]b<\l~ 1S>1.8=ǪI0i9^T@h F*3>CtD?ޛ -VAosO>^\n"=DtIsE\$N6ACc(`IN7*J\0Ԡ+2T&1ލK"uT(x[9l'* # F)[&fE_Fd5mwK{J8YSdm#( `6[Ʀ'L}[gI+ on>@t&Y#:Kz`I亪PappF(V:&Ŋ3,!tŵ?iU%=+qp{g˸Emhd<Ұ@Q(_ztD{ԻYб撏3PFH AT#C=Z?BP}|GSU=ՇxIg@ @dV8d[WGs 9[y9fp>~(>u!( IpT@Lg" L1٨g $ p`";yhPC5ziRK6ujTSVzkV[vlXcɖ dÝI\:X`Ali"렮W pqBGVBd@nAby`哉l;yĶ;-Ը#C+Nd %C+ "Z*OmxpÉ7~yr˙7wztӁnȓDL\R&Co'>) !:`aX6H ~#&2b')6[ "-R#h5Z#(!bo @Ap $M<U\]|eQERkroiH&'([oN@B?fhBxHǁLi)x*m 6zp  Ils:s%1'JbB =D]F}H J$# j'!9%j -oSSr{,?yz2 '  䄈MܴN}(KݨXW-sxߐHnpr=DJ-rzڍ|'"(Vɭ ݵ֍ H'l;@NF({*X]6wµiڗx>ZX 饥.?h~j )O5?z,DH_Rx"|-xڔkemAۉ+i>_|:ךȝʤwIЁ)YuM?N_u񰊘l+A¹'ŤLz%V-oy;ωݩŊ襟ꭿ{%q-?{#}auݟ)uhߟߥgD(x5`t{,߭ #OE">j6!rAej'bUHXB)T K1XÜE89ԡ8> KzJGYXE|(t;H M D(2w[S@PWE4oPσ! XG;yԣ\.Q$ȇȭn,  ٺ##QѶuz"> Гh !8xe kH|?0SRUv|mlI1i"Zm.)^q_ 73gnd Rw]@ !{M{'$J U.9[xҦCc"ҙtRS]v ; xҕ{Ht mcS/H(5[(´Rv@V3s"#kW_.ۏ]N&02`?oia{]@2{"` @ ܱ^4f! @`Wtow  vbww!7_Y78.AypWxx^vm7wz v"{u{7o vswb|vvzח} v}5~`^Nn ' Rl` "a x "XG&G!pN`l * Ba`S^^zA|(n8z87?87}8KX[؁1A ^ Z` @a0AVb v}v N @z"@ZPh@ D!` ^X$Nf`ؠ} ِq VgA"uok@w`#@{!B vv!6!@!v\.oqg͗|BeW*F-דA!cK^g!yA`k3" _[yi_"qǙP _Q@AyZ`MocU5`qoYk[y)@ufنk9): !"uokř󵑻6xǚvkقoˠwv"~*@c7!Zos@;!>z^zh7vWZuBpk_ j7w%ƚ*o!6:zB:u6>'c" ym+NMvb*`M!ZV:!Z:(R:_a`W-'z*!5-ط"09!'D)hQ9UU;%~^=!´1=!H7_O~\3]i~^ ^}^ ;!~S G=:ק$2*. b@ٽ-s^ "7c /JUWbM>{">_k~x" k~H^O/=>_]""Z:uiw`'*T'J"^Q^y!~*R~iF tz꘯RagfaHԶ(4% # 9w/ Qd~KCH)ؐ ~1 k@.ȁ Ei=S3r[P &NRl0( ?p!)…@jx!iAr<~&@pxٚNXAG59PH*Z phElq*HS=lyDCڂM@iE!Ɛ|P#|4gw%0kM5.0x!1T20bN7I (GIR)hJʌ8sCd sD{F} #QphF=n"22Hѐq.ͨ˒4R\"!|$ T=īA:v"Is ,Aca&h-S~ $”$}6 J"jƘ@э!AMД\|!/h ҩ靓rNwӞ@i$Ffe@PWdK о`R!qAN5qi&@M$HEgz8YD``Alu-JWUӪLN: Ƥ<ګ@0AUcQ `LM$:URP hGK] jCL #P Abh@DU[*HK,bjxm>a{XpM/`#w W'H j߃ͯ~60_=m#M, 'L.ʀ l {â<_l)"b(NV. egL 8njr@&XM`\`";PLO2$ԄqL2hNRLNM,f5xγb6$ p@ :ЈNhTY&`ygBF[Ҙδ7G69RԨN@! uWMZָNZ8uuMb>4K‰ Üj[JkSnNv{=AMzޝ7O~8r~ O 'Gs"o?(@D 8)‰'4 (`%HX]{MHhҕB$ t,y|_9 [$ W7FQ XzN~vp `p.զoÛ_$~HA v]#F; bh нѾ· 7(Z`;{kF_ˁ@i|p_[y32+%pUf[p7ϛ v`A8l{Gܧ g|D1 zPhZ`xIk_?kY Pop<`@Q@1Os,t68TlXPK)_eKKk\Lǂi$b}vnz3}NxuI`#^%{'PcF=0 )fv凮H1"RG5L֌[3aX>S^Ug%J7!*Qv^4LN`f){f8ؑ m.~ZmxU  ɔW>^~> 8~ԏnґ,~΁n٘{NԞݫGT!I{ .ڹNQw]pKCn5ߪvi$.SN +u! ϺT.V.ޭGϣ>oo~Z1)Q_.Na5sN92=5!vH`UA/fЋ|2AR O;FN NO7?!oMO^[_of,?oO澌7\6,meǯjÌ펯  u+eMΣ q6P{<@ <0JB >0 8  %M|# 0A) UdH &5RI:(ʏ.ŚUV]~VXe͞{t HvJ U2d[A(%-lM#q*bƍ?Ydʕ-_xtәs%tD_Qh-GI1Dς56%aF!%'P<n,t #'(h&[uQ n{iPB3D>PBvn;(SP*ӎ<0B '0++" *)@饂t #2 L2;;OFT0GwG2H6쳈BL >8H(@ +1 J¡ {cHBc@ *ЀGˇ$ˇ_F %qiCAdKH9M*KaR8HB2-x!j%*"2 RrEѐe(Eٵꐅ/E g8#Z0 r?=,c0!z|<6?9"NNEK<8X|2ΧNK2heCI%:QVt2iP5#()Wf{a"Axi/Xp©xcD8A(s<)x:aw'PLoFo3+IJ҈1LRSDPRŬ$}1[‰ 7h\+} b(dGĪ^K0q@:W6ֱ]F3T4pd1p b?F?,`0\. *rAb 5FQ!Im`֊joIڿP&n%ׄ.-akakDnۈc5IsNw]EV0fFH4 rP f!33G6Xawþ'Dp=BUbXH$R<  oG\CsP0I$`RHBjxfujq[b A}p|/ÛNSҾ CF9/k})v!=J+ rDa  "v7-Iܧ#EdG|x7g @rŢ$PY.xrȗG}Uzil}e?{w%tʢ聰1]]X=Fd؋L4cd~M'a5 5.d^xE 3a;4 $1 E}{HihJ08, z>>[|MFw >ff4F[R*#PuH⒭IYY ?OÍN’i.bI.jӰnAN5(IIΫ0*˗1Ӝ2vqQHk EHq4ʹk6QPckL%Wdž 0??9*di{Dp~N4.bKYvvrƘ쓨lmΠlN*bm^ َVn|$C5Oajةm+/ȼʶ" ecV 5hgF&pc..~6@6  0s]f" 1sQs~H397_K$s$8h^[Ef8;_-:D?!Awr+-GrSc2W<^Tq4KDEa⭙i Hu[lTn UǠVtܛUJYS_]!8m#P>qY矒g?&i^_=4 cPe`!%uowwp?>q=B(igs??wY6v^fQHf$x&-`xx}>~=>r x? Hw^p=y/2y׃y^yr? nvhW= z"QNJgsփ[ 3zGzk {+ON,!O{['c8n4W|{+[37!RDwO)x{I (7w}rTMw GA}PRcH?T?=|ɟJβ 7=寐$Gx'FփFٷ /=(1/I'_4 „ 2l!Ĉ'Rh"ƌ @#H=,i$H)#D3ʘ2gҬi&Μ:w2T'PP-:##l0?Z+ذbǒutiCTNts$-(B2.E.l)G \|ʎ,!1̚7s8󂇟G*E#W;50P@=b l5ܺwz:uC`\3F%O$NJzO P\F4CtBz @| 1^H@aCHq魗F~v'rYjhPvuE$ @%oXFtyy { U#љ#O=Epr)^zGx#%x#Y#t92@*DO4=j9ZV􄄟%I~,6# k$E*h@xP#v)@ꛣe* @80.I AQ IQh #vl{S}PYQlD[SΜSa&3ϫ%RAg,#TG7/A(-tH8'EtNO?!_֣DgP%&D A@ؑsLOH.4ԋQ$˪u%HE$ٞ# zЭl+$c (KUG]qrpj9 ?`|DwC aMHPM9w/2)_tpq5^~IBa݃sT6!uDB:ӡ+~]‘CwN84yDF3|orQ,u#YG('aH"c#?/n!+?d# rܕLXN4$]ؐm1D$ w! tM !QY ($AH;B4*"^.uGH~̉&l r!#J1!x%S"j!C|#@ Gἒs"(8ҀOx!AyWZm@"JWhQ12u*`TȐm$>7c($ʌ5RN.{92G1P@ PZgYXF^efЈ$ LFA겔Y??Pp4 @Bс`'8@,KVK0 prtI< T% {C+'/FOa Pd\qul&02mљ}6d,L>DDbaZQl}`ͲC,ANَ U1GP}6-#Q2c zL7:$a"s\Zq-R;Fzj{{#/?Sط!I9{KBQoTHΖ.z@@W\J忯ժ$T ?]u$u7:@-@pC(5nC gT5A,^L<'Մ4DpYCp٭gdB9DC BhaI D [6q1 fLaEaC$_RON:AL(dSTdD[Bp]h޸(e EQ. ^k@m(UFMBvj%WRWHLDE PH1d İD- _V$VDe`rd^ CTTiE Bp)V(\f%fBlf%vV*DiVb)B6Ƅ~F% SjĐ̽BpɅ dSڏ=giCYH8DOVp]`y*xh,RDCD'R_PFœ8s(@-h14aODTK2(Oh$C@~ LdG%B֟"ć*DB:DhA)jkFDBXM]pI.~ +D ^Fx&~BT,EmBh,e&V&Vz%)ʦB iA$h#Elp+*AVRmUP"l,H8l9Oe-Lι$y^4@@jHMYg y`l)+EHJhe^>ĞgMDn6u!"\+CNOGp( IDFhRFg`k>޶EĉF1HmTDt 2D Ҩv l((H׷"DBTd}5Ozfc pAV,E,B,E,ʊ離,d&mĤX6vɼVeިBe [vID< hE~yJtյWi)!F#5GgKLw܌1/2aSt.r14uM䁛'TNtKWңQ۴6S"D<T{YUq˟HsĎ/.0hi@ֽ`u3uAX{IP{J}F; vIp1BHTKv2SG$CŇ?6Ci#DhRTH|/DCʟDBB`E|%9|󫶟[>6K3@ ( $ |JA(44( 8beˉ t0HG 4q?>XhQGCb(IF:*RN~4xSWN3f8x'cUBSBUH;"pR }ٔpu {@(Eۆ"f PXDB =b5,$(3i .[4!̣9  @-{w?|U(O>ESr5r``$.:̻B8i`fh*P#Q 2ЉXd"NQ J@?E*}lŃ쐱eԯР qD/?($0"6(H Qh̆kf8 (П- J"٭);K/D#(諰,=0K$ SZ-9~rlH>14Uյ(N4@T2L!W6R'R( 74*O7hPJShKhNҟS:hh1m!XlL=3*QX߃մD߆\73W6(!bLefhEQ%~,OH Ɵn<1ǣvG~:N*I砯ޠDZ~y2cIvH@rm:=G1g~w-艁})\4M+@=RI/U'`{UmX׬~( XE]b’)}@V~"urX)LHu &IBi{^-_;ori41(|@q@e} xiwd,bǝ 0 2ΌBd( Dw)9 9%e})x4)MYX0E{F 3 c]d~^F٭G]a׺8D/ $` ڟ #r 9љNuDU^b29NE&1ROp1N Heg|03m<waG=JD@,M$RDHTh"'hQDSVD=T!hC4T !pkNLS&ZH2R TU"OLt{:($`!Y?<ZghI; Wb;%D?(N J%tN$xS^omh6' Qdm7ݖ^hأx f*v,I SHdњ\.7u'EIxF JQL ԪM!l6E_{zpFe 1hHjRt62_3])/?TKrPe_bˌ@ͫ&N! X"]˴wHMǫ< o5\, uȃ) .j_L0$YK6ŽSg@KwTC0hr@QE+jYhF1E6$qZV^ũnCea@,571颴*DJLEOp۹F1UXV Pr$D|$:qlahw 'i\@e $ڦ=k'Ÿ> iqά-o o3j4:6s/]4iC8>R?HT}x{IY\oBm{DtﲓR x_Hل SLD@IlE<}{R>?o[Wo1b zzF2&vCo^O&  #'ƹBl*J "tP$&Vg# mL 8{H: >L"Go*r**pp I @v, گ(;n Vt"ߠ O! bhn-26 7Ւ.jch  ~bZ& y M%(~ce` N."@r '"E-@d5@" 4)=hՐJ Be\5hHy Jp<(@F8 `dd †Nr( p 'e fH`Jkƃ%{*# ȍn ~"2&"GhT{ ,1݂0#s)n4gM*nf! qha h"   - XjgQ$0/u_ 4/C$--L( 'и "&KI'‘+(nltIЌI_лK`D#Wq1s< ³!3s'0* X}%Y豄 E`M X6Q*S*"Ÿ<& ` , JRa&)4u [(F1C6ŕBeԺ!-|Oʴ!4  F('n:?:Mr̓}H=S#S=b&5S%w(4 #IE;)L'ʄBOGDF@ 0B X/@Bo(*jJcW+)(W⎗$#Q>NPDTFOFA$C]0qP3*LU\W+*~fŃ@28G/U؂t`lQ*3 $a@S0n*Y 8'Kzo,=q16:'g3E4(V&:(h4hQ'_}v*L/`DuQ4.EksIl eG(\" "@d,C y"DVm* \v@i^X P4r(joBe'W'SBt6G!\V!K*vwV{4$o'V2qsT*P)0  S"g ku ֲI@@cw' @F H`I8'Hr!tyeS 7)Ȫ*0D-gݢ (vP&gNu/jP 4i?pi^JVRcѷT&}bzQk[CXZomm@vt` Xmh)mTS}4;z@~ssob*Es7~R"AOdZY;)/Eucfu}x<&8`rzoD3"_pVq}x n*xBjxr8#ָ<` "ib2;! @P<َ9< Z " *@& `#@ ;L̷E³}!g'Zf&Cī3}JG䁂44Q>Y=l )~TY?e_.mq}Hx_0E WnSޯ(Z4v}GC ߇_sEsԋ' O?-wP% BL\$q6US[I'wHe… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[|$fG.kڼ3() x(>V"y$Q UD)T`tbR*"%$1'Y~.n$'d(LrUϸj@,J Ū \,PP@Hi' |Q|ɧ~ ٴk۾;%'={ɚ;ċ?<̛;FI;D DN ?扑UZ`Ts^V6Pvї&EO-yHHĀhB u# UzQELTB g=aV]ggEbg_DO]J.dN> eRNIeV^e`GA#F(`  0(f4D*@yIx'y QaHȇ^:YYlO8 mNKm^mn˭DZKn枋nn@ Koދook{pp /p?d>)q_qoq;XA}Lr&r**Qe5r6ߌs:s5!*ES>tJ/tNcvQDT^O_uZou^ W >u*%d wrMT `~$ wxJP9 'R]_5yz=A>+۩{>)E{:W"|vb>uF9OO}6sPi}y<TO~ sķYwZЄOR4N1,*%O9Jp]AF jpĬ|WJ5iXϊ֔5G@M|Bd9 { @qȭAΌdg+ mC -Y7>$?7C:=#sQm+27<o;NGaO`+D3 g@ n D|v B 1}? DJv!H0CcP|bԇO @Jl"}ȯ'N޷ #xׁ_0>gH4{P> yEw/yeC3Dx*?! rj}!5xFs޹ SQ!? v;"[XEf7}wQjb %v^˷Cgm1lg]H~{sIpl7 czax]A?V~x (C0"${qmɶx/goW#$ekrGehc3pog uzQoQu !z>f8pnkgȈ/i h$x+XFUe;(>Tl舭k{)wcrh+$hƤ~~upa7aVl-nCGpaS"(P$׆p{bo|V](h-hyeqfȌNHF>wHWHU]xg[29}ӏPH+Ga ;ݸMg 'ij>NEsV(Z!i79, 1 usҷ9#aL\/D9уNGNw7V8Y%:yyEG~uE)[ThV[G'bxO4 lZyI%\qv"9`Mu(PY(T郓z|9 0$Q].N[%0Ws@O)69vd)EB1Ӄ 1@6UjYYU [ٛotϸ:|W acNzV9{yi9uӖ牉 [gNnCqI#4Iǎ !jiO(~:񩠅)33qjaL "f Ar&Ej+JzчQ]y]O[u' U^wygW פY9z$OHp7ķ:W' _Hbʡ Zihco- %A9 j[79cfi|" `;n>\,6ĝ0 <~N`l,p;QG|5n,> :_H!q*g0& J516^V Bq^; qcn8@_qL6|sneWnY\.NP ((}NGl*q>nN~N=nL|N;'mMn_ȞG 1nQ_.3^ _ G~& n(p <F<~N!^Aٌ>& ޾t+r<*.!!kĄmL W;9pNN6ɞS=r&p \AޜĞ;6_i6~ "_c>+&~6MFlMN[xoa & 釀 & _.#Axe02+N% <!`n00y/3/ӊ`-0&h1A .ddg{cQ4tkɓ~Y6ڇmyկg{ϧ_}p@ 4@@Aϡ`x0(!d/B^@( !>H4G= ra%:*!HiM8a6b2BE4ăP|HEr,Ff #C},1!1"Ӡ&T()TUXcuVZkV\suW^{W`E AX"x6!U#EH|&QͶDBplq|Ǣ4 H  M0! *->'0~E(`F#nVtbAjZwv l 3>4!P0B>aBA%bIdD5D0yMVcl(b&v:XXzkk{l˖yBOفEjws!t:YD#<܃6otw\ aR|#7 |NHY^gV(scQ=Ϫ=H&obO G64xwa\!/!=oaޝϓH7l~~ O ܏ۚh Da9x @%Dpl2AfM^ZH|wā -84.TR! ؘ `M)9a|4Ġ |`Q> e\B0A"DU7 =FTh$)$|+SSp''KHҧ0} " h :q} HD%Rdd#HHFRM\hJGFэ$E\1} F$E0B0idD-sZ>DrC1ͨ@l#2Cd d[F#ń&ON)4OTKNĎP:9>lfӔ4 l`$hA zP&T e(ti#-  d5)x~&$_%G\&D:<ͰG|@LH )`,YӓN IiBmfL!#]|)DӦWz=9;7ŋ(湪z4TA䔣-kiϛGMSԃB8E015@5,}0AAR?MH7T3hRToqfiGLNr@R#iQʩ&d->_rTunu{]fW%0RxwR$(3ꯙeo{{:<[AFf~Ž]/|ZK "(JuH4m9냉74/\NIZ6zY=7a_>;˾V4 B%]]C,u"d I|XFx>d(GYSr&(ʋ vz6`٘ih^9E )@LA )> EZ2 =lYzp: D!q:2s1&(4nb=zQVyԺ5tszr}k`[6[ &EfċeD΀ӆC2K Kk?p׹g-ηm0Q{ 5Ц5]DuYnr_Y1=e-ϝEl\#'y H(( fQv\ Alns<.(j~݇6,@sN>&< Q @/(0}=RCrzp7GT;gm!F!U?170-< t?(sI5w]&|=yЇW^TMP|A~ӑgϕf QA>|D`{AR'S''\+QNŨ?gm|W=9;Jba nw')"Q;@.;S۴+Š>= @ @8PIL[3C&`3( w'+J+$3-9:xEH9X%#$\Bk A4 &88>j+l,< &d@ȣ“s%x22á{<AÇ(CCJK')BDNDOD*8.E fEh;QyC5A'9>yERp1 L4C2Bbkʦ3B-d_Bg(^L~ɦK;EŜ`{FR!kdlFHzs 1kXdjFPG~GGH 繱i r˦X3{LD)Z-*6Ck3:/Aɒd4Ȧ I@Zø"s7X,IrD5pIvv,DT؁HýKؗFK씣HDЁP(d<<\ϴtNjě<'L8QEj{2H}#Ldl[1O%&Pd0QD< EH9P{tO NQQ-Os+4`Y=P7Qދ!- F8)4X>A܃EOx(mYR"RX5 H8A</].1H4@-0eRR+}, TATB )8Tڪ(TG}THTITJUTJ)&JUR-US=UTUe(BɉhTUZU[U\68h^mE[]_=W=>UdMVe]VfmVgeb5|VjVkVlVŘLVp WqWr-WbStMEFsmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYّ}# $xTYHx@ڞم ZY}Z-(P#(ԩZڅ0RZeۨ][m[ڲ5HH 킂hZ[ZȚۼ.[Uu[ʭ\͚<%\ZJe}܄\EZ.\EխZֽ\]IE(Mxɽ?8(`Q0 =PV. $ۂa( ZZNx(]>FHٮm͸mn?K>MwdV1^)\fn&@}]&>`^NhK>^N`Mox(xF 瞧pXie}.&fD& b_.&]xQ`q-' oYp  7ߏgaq_r\Gn,r^yoO6 /6$. \tVp@KN}av=V/pqqsqs QhPj(wPpt6KF(s7>?dg N_o`tHaauqvtHtU<oN7RgT'sKN4OVwu-?vdtzpr3fvgoA_Obn7?p`@odlO^tg僘xvrN.^Q(wsWPoxlwwvwgٶWKwzZNkWghoh_Ov?_xގ>s_gdόtxN m_v'vMxEp1'z5z?up.twgNr^T0xwKszPNxga?zObҶywzήc_|Qx*y$x˷|6|%(FdVfv&qM%vccN(g ?$h^=Hxj|}SWԮ}6**pw\Npjo⃐ބ݂(H\?~=h~(~%p .(e@C zT?lQaFL)Pc'*_Œ)s&͚6o̩s'Ϟ> *t(ѢF"Mt)ӦNB*u*ժQ4xЁL)*dX& 8S1D"G4(0JE 4 0AE T<90O U၈,yPN {چpFP#?TrC˚+I!sb&ylզ部g6xtqxQ6Wh-S6H:gϯ?X"8 X5 S {3EG~^2A@6o}ai#@&Hd6(h_(8_NtLىd{G4AbECXZLTJxMN]HdLLU%FA(dcU'FEBg["2ڨBR {,Dzd!Y1ɸHm5v *FTD I 1Y+J * U$'Lt:YHOh(9@k_g\-Э4KiKHѦB(9Z-Uگ\#aH@LȭTp#\R磟}2%+|=AHh/z"l#i)8km53n}P hْȕyzIf7&[{U+x:^W;.yX@˂[! [02W$Է!IbOqX $\͏&=hDs}=8_' l$*e*ib; %INs(`N882@3Iq'n4ghC"2\$#H< (@܉O#1 oqs"SR ET},e3%*Sʔ|8ȳb$[e-ZʫV \Tƃx!DI.yE(*AQYSS^LcXBUs't$;w3|T$4DZ3_⪔MJ Di76iJϑ37BqB/LRGMӠpGBKMz} $ L4Ns11IAEi3% E;RiPrѝ4h\*SԧB55b$m<@)D" l CS'#%U dNVU%;IҮ!THZM)u&gH_B3F#HUq| .l8g>Yֱ$+jӢ6]m&J(A0Ɔ@&N$6BGH2fJ,L^(ȸwu+S0ʤ́#ӭnTʄN:# !V/4G2bDwl40 xћ$0y>u$s}I{U@׾ nbEK5amBX/a0y821snPHnܐ#4v p9ѥbD=?##n̹TNEP#s^Y ߌ[Y!X.FTڦ|Id$a!|#p$]6fD 1M"{a qJ12%`9;K!$V C$XtKmS:OWH f+MN, 0BiZ!tXI\"@"="5yDU74dv]U"U$v#x vvEj{t6㥒Z0Hi6E&Gqnv9,`{ Ȯ{*!8M!U<*_9˯cY%pZqfmXH( )?k2nY|%+L-1EVt =הD6 …nw#X(LjDRPijJ%:%Snug=Lzsl۝н_<Eѫ01‰WFN(d{@2UW^y>Ν%?3gyAlh|aVzA݀hﰠϤA)L=)y8L@.?>??ȇ$Ď˝d_#D!JpaIH A!'4uJD'$uQ^4EXj z Y򉟇ٞ n ߡ=YES-\ ʄ . >͔@H߹ KacK aH(Da,*,HՍ',@@qɇIJL ٽƞS"UN4QNbcT"\ѡvNEBJd!j"@'be&%'V$6DDduSbJb=*&f,]i& nYbJAcc88HA<D4EAdJADĴc )Ey#?#J"^QANp =@cOddH(BhQP!CFMFdP#@<6*|@&jjrvWv4e|k*vꪲjS$$@(!A DjT$RAj;*o>fE2k:"L-E G Jeٳ빢+ ؉-P(Nث~fZCjFyȺTB ܫꖿ*zlRlZl\SN Q@ Dg%BGƒ!dbJ,l, ^l&JD1nuX2Hc dnjLW>ml؊" 4SxagfQ$6mnmm bDJ@-"n*.A`\nSx޲4>QDrDb/-II*-gT[En"OK?yGR ^^,o0V@HoN0 %o/>o#@NdMM_(@@aLj$Ȧ}!@,Zoתto$)NXG6F^QooCJ0[0,@ɣu^o0&_DE' EH mDlX-F<:^WK_4(0~ƄoTq@^ '`DE7p O pqŞ@[/ /:6 6DFЋ=؏=ON$BE !#P4@drJ_nMIr-*(IO\ ʆ:'aֹb$r0V O.WL$m 0Kr2uJ03O 4r93J3eD$rYm W$7sXr)IOG::PȳY\?n37D@9[EϩFsqJI*Fp'DJ >KexD~BG[^n@D$֥cFF{4NPKW%'FOODEmuG4PF{WiDMN7@Ć9GIEHYxXPK-uu6M3mDY-uC#M3T^ChudKuU0E.቞L ^i\d]!WM^]_Ufs'F?d pie Y 5×u  i?dVPCvksL6!41v1mDq TQw|7w7Y 2N`,sX} ͨmB V 7.G~߄ߙ͖m{D G~H}n8!3"8VN_LjxQ oq}zkx{x#y7ieF/ORЊ ѕޯaDk3xcq8w w!qc\Wya79W7yXNDΐ#@ha8O؞kKEyL 8׬{i幓#Eq-ӆ81_cNw78i!ezhzN:3{h^%GDH DQQN_:rB DQRT"Jr$;ag\uf{\g_f u{]{vyEkw4ㄿa^{1gRhNDrȓOK{$޶PdxmB'|/<DUȧwʧK|ͼk '@ti-LZ'[/Rvac4FU=J=NM=S~ǟ61ȶ@p_:%LBM\ayΒ\MiT;A15D*&5-9O엲3}YwN5%ăFj]M̝T`~]}x_u;Q p!4hdbFQ,C`?H 2|$&0 H6`&͂'dB?GRjH3ŸȰ%— c&IӀ J Q}Psֵ{o^{p` 6|qbŋ7vrdɓ)W|sfͣ$]Zuӎ!Bљp$@JWirʃ#JGLhĕQZ+¯9N8 kd8D$;'͐ip-Nh(lٴ ?N0C\KH:Kh <\|% - + O+ "9 ~$NHuC¿B8n -CƉx4B@HJ8LC Kt "#2&Gd `("3:2%IԐ>@B =D 4XL$x.N@"G# $c>( #:2 # RktMH%(N=1?4SS]Wud]f}hj!e5CTۄӣ܃/p%sJW(xݗ~5a$ڑx# QBh܆Iذ6`a\,حʘ;cQmuޙjhPT` l`,窂9ˤW鼤>mǪN)\:#=$̃jMRYF鶛!΋_ș;~6ܸ|"%U_] " ­Z)= m.߁襟PKz?z>?_域ߟ X@ T@>)XA ^9A~!IXB)T YB1 iXC9yCAXD#ITa2 @)RqYE*dKyr<L*$D4HO~GHIJ䡔4ځ"J2JU&?+yJa8O)Pɼ R(?qPDbf)ɠ!$g R r5eȑ.Ǖuƪʔb~2HL$0Lx-A1K!yꂢ JhTldJ KhXӞ` 0, r6np.`@B{X0@DS0qЀ5$8= @k$o)ejo[ ?8 uQ" `ݢ'կu׶, p~M4.1lթp 2< ijyc9@7X84NĄ$qq$` y`liZ!k#;RQTg"2A Y*cD @E)8,U3X|8^EwSJwSW]( (H.mo( wmX%jsFh\GyDH2 &Jt#F1ɗuEdݔD I9X7$4vx]O{.']d!Vҙ`h&ش*F·{dhHwa rl yC¾>=S:-ݬm$o˛Q%&iH&p: :u_oINzoCbG)1 Y?8(!t8繏B#,eg,Gbٓ_O8ZV}C6XFȠ9'H=CM "FaTmH>B#h<..͌dJCjmXbd@'2"Lֈb@\j$o"" ]N "Cv>8fF(' E(I BJpT!p e!°#p/ .b0!]RLJ(Ȑ+ "(n.*k @ ȧ(CNH .Ұ ,Lj, ""GX,BJֺiTJP@";0[PP%!0 S PQ#j B,Ls!M' (mΐI .0N&Ci9E e" #1 ꐶd-T"P/0N"+#.q.;#Mf q (o.b&c8" n&'d.*k^d1q\&2g$K#6M*윉6Q" R**r#,܎:#7R#?R.O# 2,WrQ!XҢRb'Ǥ'Ac M1!%) .[I> 4r6s3iB/G23cC83!1"Bj1-0.6kSPb=%B%E%%1S0.B(E0#2-075b7FM3C|1;"B""6s6mS=sZ)8@ {S'~!23&cG?;8/9A䌑J3T4s ޼TS>iAQ;#.(5b<9_Ds%DٓDK Ē>>Y18#?>>?9l"rq@(yRD EW4cJB-3!4Jt>^T2/:.Par5#DTM( F2+'#"S Bs>$yЄHPHCBG MK6OKq<RbR!ѲL "bnkڊcL{COTUWXBHU1F!8T L~8ګ>M  @(4yf6(2u.`(S.>duL baOPj F%B\+U]U]q)! k5 5 k>pH1J\^,rT.+H(;DY b]۵#:5c=6 ((>WcAvJ"Cr m@ ^Yfl. e12]Vh%Hfvㄪ!l88¡-,/(w>$9dΡxMPa*h 9.Q!sVI(d(jH/ֹFVo;d#&+OĐB\c&"Ur/df+"WJ&Uo"ރ`:B\-3bZ .1 TN` 04) ~A%vQ g9st I!jMd4(ezz!xvps(`VY$0q r*!~wb0W7%몂R)늢0ǒ &bBkE33F/$)x1w W#LAcIo4RpeT}Gwu3"pC\XGt''@0b`"7EP`|5.R"VgS5,X/48%8Xy|/SVɠu.XW 5b_8enbGS 5IX+7h ِ% %\̏Ҍn#I%3"4Y!>#)n!8$.%ȘcÌp8O=Pb6攎5fY#jy]r?tmuard"$;¦.@*0h2M6MnK ~3E>Ez߂#r}k M,BŎ X0T('dFΛ3rzĖKYN"P* 'nu$gO| s~} (8w2e/,Sۢ2 0X m %c_uS2Wn-L, fe59)Z1E]z00 ^i"(XPگDLD&aX `eb"W#[QiF@85 i\kbxK۴hp*80 f/XO۶o;w<4[tEcq۸_xPjx|g'{HZ[ۻ[Ǜۼ[כ۽[盾۾[ۿ\ \#\'+/B0-%  C\{@-˜MF[IU ]kI :% {O#(nڅ\ɗ=򠥥 'd Hʯ|h@\κÜD6k Z\iIuk\KRU \|(ɭma r">GoT~/- ?jT:9O9 V6_;jTlcs+gGA\׃] `]ٗ=f^Yз]ڧ=j ڷoh-nǝe 50םUD$ /(> L#} (1MgmK+'9pJ;'6B:E=KDJCPITM\U_XVPd]f`icoimgrmvqxr|v~y~ԅw13;=79?AHJ[\TVOQgistz|op_a]SOkfuxa}ڕܛ…Ċʔ̙ΝȐТ齶绳䲩ग़ÖŚǞȟɡ̦ΪѮӳն׹ؼھ»ժӧڵ߾ѿk H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M,Gͻ NRУKNp0νËvȫ_Ͼ}k9~QϿQЇh&9) v0(Vh f v` (∼!v,⋇wbrM Y 裐F*鐈$DPl8punŤ* 2'uU`*무7C>oQ̘@k챼5+s:|':fg,C)&oz覫e{"aejh.d/Pv+ 7 +檀Csm29w89)'R( 0{ț6mVf@]qې\[")PGpB9.my`-6;jBkm:p-7Y'}B&{}wN`ɥrkmcv=/Dh[t,ÅtS `'.'KkdZL+ ׿b'N\~^=l i8rr |J( 4[Z@5g0([`EZhRD D||r !oWr>/`U;:0T[P%֌,hLd@@ ]=0aM xKQ+OFX=o&Z!::P'!%8-V1NS+( |dƢ6q"[ZE#e%d|P´:%i䒵d8jꍈL" B `Nu㌈wJ~W$kؒH[1ᡑ̸RR CnrC[(0 i<!ǃ0H*W>(B+Y>4gB!t4fr8lAA pAKkL!`$[p@٨5yě6˄B PxnqYD+ ^jDKȚdQJ+Dz,lHw1;ѓ:ԑ `#kW"x"1F$Ԓ@8ɪȠOZQ{y9_Ε#cgdz*ˆ^-iiQHн̵f lO5ē3RlCx>s6:z1CV+,|Spxu7}?sɂ6O>D`mnbz " yAY VErz78'c=!FmZyt!:L"<m2瑽mfBY >o9=NL?ZzCgŻ\6ODm?"{ϕ _r;=>;?9=?i- G#gwX :^d-l>ߏ큔:W'O }~>|\|埇& :W#}O~V]Vܩ~ĸ.G}D"Fw-=Dqb5Snǃ=>k[}U~k72R~ݱ{}j}@y`g#y3R|`Qug$d%XF9G3)42ƷyXF'8 mBx1zz0R8, T( &w"Ц3 y A&5#;B m5gwGH=P݇K E[kRU6Mxw<8}Zňhowt*QaJx&FAu7xyh1 ыtfu/ 1w!a'"6X(jx"wq%.G_fG!*8NX( S{}1\€hFPzՆP񇍘h!ASo7 |( kr3ѐ%'5X(؎"9,9cRMrQW72Vǃ|8\&Ɂw׶\`G3pxClHTYь!\g&Hsh~#ÏD<'zуU po7ܷ,BO@aVy·!灌O4w|c Q'gw>x)  'Dy)X9y%1 F$?ryΗCceH#Ó+P Qء9x|نҌWtђءSyf t]Q习 *Xz)^b騈r&J  |їuDSq\ؠ6ze @ V @IY>ऎEy\ 9Y 9 9$:j8zhY ѥ1o#D:2XYHڈP#|<q qC pi騧`RKfzRW v܉{Ė\x]2v:iR^'zU)>ZќqED :J $h$z@QwyZ /qG yѨ@JS`ʭ(r:'C/l݅z?Z|* 7e:(Y *K:#[ʒ0*v*۪XZ7h&{5q2ww@+i'xr13¡ _+cˢC@(P~ jR皱4I2x:,^mԾojGA[mQX  -xWc g9^ A!q*hmB$FBj2dpA?}ڄ. ߇ر.vŻ q6ӧ .  ~s2|"{ Pn(&A";uT峾8W Z\"?"VE[U()Ai˧ qY JY0gPc@UI]`65cХvdP㵀.UZ@A&$*Rn^P\[ NJeYJ+rJv3_'N_TVpYS⩢d[ ]ܭk is4'y"Y0 ZÀ `> q ru4aO۶YU7ٝGU}C1>{qމU&^E  eD~m0ޫsO>ZJAH/_~L{7db#77hf4,xS*q@ 4(Z >Q"'-Ze>(G^M44$(!2!H5mJܢRjjS(nETRM>UTU^ŚUV]~VXe͞EVZmݾwkf0,HK]+`T-w*XT3Ρd pI r؜؂tfdڵmƝ[n޽}\p*0r(; @)4K̝hkȀQ:`e>of g7qG*z[ķ#@D0AdA0B 'T?2 "%  x 5XDxಥ@y ?x :, `2J 'B+ IќE 6I(d0L1$L3D3M5d P@1 BE E 1bd )h(0JW B ))P@@-*T(h , Q<$Uy`4B8J"W7E6YeeYg6Zi=Tj!Zm[o7\q%\sE7]ue]w߅7^y祷^{7_}_8`&`F8afa8b'b/8c7c?9dG&dOF9eWfe_9fgfo9gwg:h&hF:ifi:jj:kk;l&lF;mfm߆;n离n;oox'xG>ygy矇>z駧z>{{?|'|G?}g}߇?~秿~?`8@ЀD`@6Ё`%8A VЂ`5AiU8ĕp6 .` UhC04Y RІ7<֥T,B0!B(шazk +abb "$:bX)Um"AhW GD8Mb} 8Vюw#+RG;jx$'ZD[Dd" DM#TȺ& B4I>|z&E @lDe*st;UJZ@4*җE4 s $f^6d=PZj)J dVfMQr"B Lvs-0ςsA?]҇ZJ+$gm4P郭Ӡt >NwVԢbAgL4et R& m‰Tӟ~AOZ](AxQjXiMm+-դ!R0UV5D7EN._kX`Ԭg &!ZݤQRN>DRSB+ %CRӁB9!ZسbZp݂>ˆ,`ZAVT!xդ\ Tb"|XJ33m(F")PYwC"%k")Dr  0@4ž$`SAGQD 5q&uZ6&PCHhkWMr5S 4$"6W.Y. NԱ&2ֹ;2ޫl! 'F1%*yzKw*CAuM׵\g9M+5 S(Cp (A_dy%Ȁ|)Uȕa(8+/HdlCWһI~%W J A8eFw7D=Pa#MtȘ=R< j W櫼 vI! :ʞ5vKM{^  \nt-m[8 #0fI h@MO`fS5IHmDD#KiY|@o{BdMXBh&! nCm0H Bl YĘӐ1;к[*ș ( @-x%țwV *dkޔ*|%v/w9% yWO!aK[*;TAu !]Ѻɣ.hR|"5|QoZJe =D^^<@phw>q|(;9^CDIW@o[CE rWv/U}P,do{[}D,M$Ou (+F^y`D8{^=9VX1Vttd,ƿ V؄$=?M`fk@2)xо苈S==s#w7Q1pM "7*\ :t8/@@zBA#xIB(0&`PT8=B4+!0$%|&$l : ,hCDDTC4h;S+ R>3ܤ $# 36Td))0#ѲCCÁZD Dt ʈįTIJR#'QDx=x;UF ňCpk=YlZ[cE@Eؓĸ$K<ƲMRƧ`mrFȤhƂuL-? <Ł80sˆHt8hNjxǨ0L. V%k3ND1T?*G "Q pt2*NS?|BƭƨHȧGra LBW%MA4(?]ʚd"D'#Es.X 2(|KSf/ҧQӛEr2m%((%;s 3\= } =3+%,Ih&. (/u(GK3 Nt˜ѵ[DNTtXd=HSVZ҃tE;\t*H H0d'Bs0`Y(0,(LZF¼W`WHdC>p؇؈}XR@؍ؚXVp#! >8Ӌ}XtU\8@5>|s}2(!UנQ?@A&B6CFDVEfFvGHIJKLMNOPQ&R6SFTVUfVvWXYZ[\]^_`a&深<@f<8d^bJfjVjknJgmgoFgpXgmntf{gQJH怞~: fYhgmfhpNhmlj&iYpF8imN鉙p钦qp^im鉁ꎁim(j>ꉑjf衦ꋱpnjmjh*g9 f UHNHD6Q@Y<6D`kgUkk:`9v:6;배j;7D8춆®kVrjj&fjxx;xw^p~f6+mmfK8Xj>;vɻgx6imv:pھ܎h^; f^pg8:Fgf*&Y~hJΊorppPpfp6iijmFHj^g~Dn? 7pK5~Ln⦊n&w0r殆qrfQ?r*f.p3s~T8r'򆘅i* 7葞s+2ws4CWfA EfFpN*`8Ѯ;96*p8-*h6jZPh鞃kfpvY~BIKGfwqgT d KPnݦf~wwLPs;_hFuwqhp.u~z.+olvgG4jX* duw6*7z96@%+i Ym}懸񔇈x) {O'2Qum8jNz2OWgHoOHpyxodu8 hFfs@vL{ 퉯@vpx9`*P|{_cg6{mT|LhjVjhm^zm.}p}m/y fwɗ߇؇"ߊҷӧfnwmf_f< f;pu37jF~ɯFv:L#,hZ 2lo@d(1 &d`vFT$ʔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m)ԨRRj*O̺ǂ![9h( x Ņa e8gS"ܔ ftaù^m1Ȓ'Sl2̚7s3Т)1Xe邧*8+a̡d"i%ہq0^]hys*?e^q KǓ/o<׳o=J[~Ac]hŖ[51[Ay-0EuAC.py!!8"%x")bdzFJV4C [1BA$`P -\AuLh JHdoX,Zy%Yj%]z%agcAph`u A>; CV(A*9JQA-8$A6PI:(J:)Zzd' JDjVR,%1fP%;   b:,J;-Z{-fp$JڎkVJ*D.ۜ= P|5B@4,Jt"ԑ@Cz$. ;0K<1XAvqA;JUB  [Cwb2 !6ݫ',92l1A =4E}4 W'-Q3DϺɩ>6dP "G#/ZDv'3I=7u}7y6Aҝ@~hKtm CYKt.d'DL[*PJ-2D&_$)q <$ީ:뭻: !_E#zKiVZ_BM(8:0E{ﲄɐ D~=k=cI5/!L\1C -L~q nPJ P 2hA bp6/(UB +Ԡ컁V} C(SYA܀DbAeҰ6!s`(!HAx%2N|"ؓD(bA%PR"(1sH豊1)X#x4v#=*r,H A<$"ǁLA|$$#)IR2vl&3I8A$(C)Q<%*SU|%,c)YҲ%.s]򲗾%0)a<&2e2|&4)iRּ&6mr&8)q<':өuӐB-GQXe8!}򳟩| R C0@}?#*щ& C jJPHa (1C<&ESҕ8FG *U|=>=)(pS HyESJԱ0`uO")VM:}:% =YłFh+dXU B1s\ 5 0y'1H|b& *&! *^ L䣌Y!㓰8I1?&PqRv. "q0z%P'h1?#"^終a!b.zρ,+)shݐ'IEIpa{Wrdž: lsJ^I$.]#!hmvZ!v7e;=qGuh\?T,yprґ걓V~d j ݾe'QnkkqntGV a8-𝌢8!]l>7;ʃpN9[ !@:{"gb%Hqw3D!9-`r,MIsFC)II PWtE;yt7 @6, %0~W!H4 RD {ZBPt$_|wo`I|&5ծs( 3GzCY&ڶ tu7$ .2C+d:D鷕 >u\!@UDEPy%+0L =W5n3=_5ıqC1eN_ܭ( *)@ٝ^UD d M\9D WA2)`5C=N0 q va1]1jZ[B@*  deZו`CxB9:ıaMT<=_O`a^V%S->D6Daj^K$+ޡ!=D+lҵ'(5DC$"{,D$D%F4R& 6D.a[C](@'$F8ւ^5U626U7D/  ̭1 I$2D3M#C6d,UI#=D>Z>*dC GbJ(\;#,΢CbEH=.DE^$M?z d#*cO@iC%QDd9K~"[iQ#4v]IƢ#-Σ5&6bNȤ?B@NaK#=T['%D$EzeCddR$$J(A` [U£\JjeDr%>M!eVeR"MN|qQ!\i"\c.nq#SS!Cab,fC\B>~IQLM%KŃeiN'uQj:dCA[)kZ@lI=gJAn.wBCZiCp'[y'ND^12JC-BV'&]C{9wgQAC|A[9CxBz*DE`Cp^[$CGZ9]hWLC!'Q,!dJAhPHf*)1hCg5*ZJ(~h-,)[BH[Q)C&(1UDA{_B|=i (QtJPE9#2@'B$_[5Z-'x*ErTdm@fCL%[]ؕ'pZa@cBjK.*9*ZQjMA!@!X(l*`8$khNd*`PffO.D+cn=76R)QC|Bn!AlHB];"v1ɁkdMh+MV:O<(#QHIFĶN.[j-RA%J0AYz»nǝE*e,Ox,+DlD2 RDiQX@,PHDMmT\i.gԞVD,|d%록,dielCH9N:Zb`R|X.TT"m(B@UTz~#SLV!@6)Tdf-D|BmV!-Z-[mZI)O)bC.Q-e".^ K@B$,h,C6"."8( 0A||/JxBBPD\o.o!4@0,K@NB0pT[:"VO(@67QA] !B!V$ CP/T"!,Je|$0hݩgR0G#<#V@VTh G0C 1_e1dHR`D- '"/2#7#?2$G$O2%W%_2&g&o2'w'2((2))2**2++2,Dz,2-rYY2J.-08$0'23%ĔD3yd02_36Rı6D7tGg93u@:I;G4 .=ME3>>?.3:t2BxLA P=GTD Exd@At2ÀAItA4y@IP2_GGDLh4Ht-נO lEDQ1βZ۸c6LQoC@1 *$p ,0{j!^Q( @cP:KM?jTDI1EL`hHV 3f"KQyǘn  Ib"D'M.@'C) S1w*:2!4;+Z1 3(lD d,2.!]&7C!j-A 5>,D>O3E(hWaUYC:$7:*(hUHɣ\UX鉖,sk`ZgIJ£#lҶ̓ѽȎsϽ΃hpA3'*TЌ]ӞD9SYJh(͗O De<(!A&(`3'^'ChvW(`e(gf.)VN7ǝ Sr Q1 {}1w$"5"HS T-V()f /WNX`6\r&*˟|9O);9!~z#8{ojfkXޮ镂ǚ)AAD=d4 ӝwaA4{OpWO_}^eE@h}5r&폀A8$]i 2BԑkuU䧭v4 "kxN6`;No#`&֐JDCn E( %.Bf&1fn^(CeDAB9-\(iAڕӉhO`nl2VqCFؐ=R $y&O v1LQ>+C" [8v,)zhV EZV" tUUX|4N#sW3P'6xPFH$  7 MH l bGB$D9qr$Z@` d-# %j4Ay -d1E٤rXDhXrVGpD,U NdݕA:P#Lb.PniUf`ҏ,BI 3‹ R,xN\FSGpJ Լ`ulQb`mukl@SR Den(+5h+9:"0==<u4_ ϱ=C狽q4>CR;GO`߮&fZN70B 6toЯ#O:jr'^GB+#Lp(+S֨,k$NUj4E%Tak `j-M`b.#zPUd=bU J"x)SH2yFRHp P!! ~6qn)O@O#mO <" rc:.p@|o2" 1gpbK@anB%p&/P!@!o@ 08n^absb@(D"(Lv#bwq440TFV#(lj6kFg vl[Of}klvej'z#q<)s+)8g '":-X<"^D`2 \!-V&o+ @k"& &tao.%o#(oBWN"`)0KBc9"<.4Ps#^Whs' s(|U#j#B7:H:f0exo/r8pvk%#?|7}eA @ DrruUelgU~D2I"ny%'[1~hoS;W!1]Qa{Ӳ$^#S!ih"?bS3B7D=@T9W;970"*:âBy: Ve  nѦW5.͕O"h3Z##*/bY+"Gv. z$f85bq/:DHs?zCH:⯿ b:%ri197Z!0~8[I j`k@ AQ;eb Ueq8Bx.%Zy嶫Oַ71% 3k9+]Y#,:/%;s9g_T#ĚOOB1!c#`ɗ1")9 %8?:x#W| }>@ $q˹ 3C]Ww小9tz%hƣnq#kA*{)5yYD#ԭ03ؽ) ;w #p/")$oy1¼!?bY~<  |Vz$eU_! @ \%9##p w#bT?BCc<#`y(2y#.ݫ!m3}0pI@K##$g'7b';O+ϡǛ[wҏB7ޑ<`]]%"[@3]sy+0+@ 痵Mn`A""b=~s@!@kGA .á>b1?3V|C%C v5T!R!] T~%x%A(~#%GBIb!kaOw2+ QZ=i=?C>) WxUY/~tz7"\m;#" <K :8Zn 2hdž`ȕ,3>8D-ȬbF(Y(& P('7Y.8(r#z"F4]+BdꑦA2A2M`޽| 8 >8Ō;~ 9ɔ+[9͜QJՋZ/bt-Q':`܂F |@FUAC2,n (|\p3;wʲ;Y΋mI ZOC:)VݴрAadAɤ5P4X!Hg"Hb&b*b.c2+H"rj!B HRdHQr %F 6(LYsGPLA|UA\`AtDAPN!|+RWQR_ApJ`Z\^UD\KgR#IН-Ns$UDJcj kJkx# "HaJ-Y9"TD NȒ [,2JD` D[RʒZQ;zRI]cMDuӹ.[##ti:XgY,B24iA $AD!tk)AJpFoquR6ߌs:s> tЃk!< !XV)2FPO| vb}BV:V Kt՛u+Rz&A1YA'31r`[qActfA :71AcHw|gCO8NYO.S/_\о|O|(DaI69mHkGOT:t vJVBݹи/43Zĩi_[X/c%u-3ҧ ^RhR9D#ʈ!hGP"˝K`A9 Mm9P  ^pnxC]p<(p$fdX@@ 2amA ZF=& H p+Fek I6'& c^1tn2A`« @ E-!HI hp%PFr5#$;̃~Yґr,)R]8+_*F` q #@q`<Vc-d! ȂvemUH Hh1nT #%1brcɸ5*Dʮ;.& A%C"Afk]4 [`O!cr7 #p%cI;AL+Ugu 2z2t0K5{An+qJ mڀu%rk_.H1"7kG{fK?{UDV[TN}wwO;C:Q"XJ^x "`OZOPRVtjbOP,zMq>4.]qH!}le$z!ײ>F^G]r-AP!tt a}(gdcmp9'+SG:%CV7@,q##l7l`&|V gxfyZ" `Hcz TՈH ~#BYQE,' j]?~FsVAKEMs0so?_G(>?cD{AWz QY!|`qt'8yq9Q Q?sp5u[6&g7Y%V:u@Dgl'xu_*Cb12&TXJtǐBAWR0MXj! u!EQ+3I6Z-z=[O$ъ\#QH؂X[Pe7I)q9@rql |>Ox Z[GF(lIwMOOlC¨l`vݶ5k&HFa)͈1:IF1rr\C A禍Kř43D=XPRH{h>@|MA aI.>6 cUL\)UEZ 3J5:ɤP!O ?ȟ=ÑE- "yl()㥜mTE `eYJ[9}8qJf!2Q8JY#p-A䉒#U,?`oʬn%#AfYaaHEPnB8K`b1xE9IҖ#}ͳXZUGK| P*ʷNFRbr!7W7| u+7J9\ ;J7Jȼ;2 !̪D<LJ\zy{\ p-:y5,+50^ @u/3n^i;\M^#Q( Z P' &ۢ匤aW^ ,##aX) ]6@vϘn Y$s#!K] ~>p>NR@+n2~袡$P ZFuCN"yV=E1.] { yN@L![#gi Q?31цY vc܎n֞~yQXrn .7)0-թ-]Vk]u K/ ҕ&N=QL1e3?#JI>, ;Is>|0'¨ b |z1(37AW#Oޫ& WN[R5u_"J:v 6"@,8="b&ao1eph fj\Mnʀ9pY( a/v# OQ3?Rz>_aaIU(Ag]07K`OK}-,&qab|:ϴA,"C%N!ŋg$NC AP$YI)UdK1eΤYM9u灄Q|%ZQI̒RQN} hB HWX:ꀄ PVaplQn0`[ d -\ ޾L䙎7v0$ƑE&]iԩU. adֱeϦ-AڹuaZ"vMub݃w =daL^}('WPкUp! d tGT1x˟Ovl :@8¨>(tA#pB )2ĩ 3p HH8Cq-CxR`8!JÊ!^<;p-@$H"@ G;>|,HpL9IsL24S5(;sM6tss  !X,MpHIbDT HuT* * IF]rK3ԭN?Mm:/AV\su uXb` -v٥F1gK(=M;Rv -b,-<C@9Hr $HҭE Zd \-!q|ڷ:L AAf3xc;cCn̡4ጨd%e qa#z@EW) !(%ۃ'h p$㚷i iPZ1gz물V̺͋KI od|p 7pec+( xr#'١Q" w".J"+y)f tN^zjFh@`w}up˃&'B^Pli֜U3qw}~b}r ?#2BDLAdU2#=q-] b~'<*Zl-o& (X9خ-2 ߁k@fi| 4G? QC$bxĚs\C@ K|!I =!9t{0K ™&r|d>Drd(Wpj|e,gyS֖e0Z[r,f4Yk,#*YssWkY{sxEYЃ&t7Zыft99ZғtsNқt=mκӣ&uMԫfuM= DճuPZ׻(l<v@~bD;ڪfv=f+Nn[J^)>wͼ@eDA=o|[%QȊ0hg2dApbGg"'}G\e%PL gڅ)\ }x%il!G>y+2v\C/ qzl9tSܥy~u+=!67Sshەe~e%ۼOhۍ~w/}MmA.kl#{%o+n,ŞMOA7|x/{OQw7:~CnNz PX&!(yQ@"L @BX݀(($nNUP ~ۙzjv"|W!ro@!,a IIkS?P=X))r ֓.:= ̦(HQX X*)*@@) 4@Ɋ) DY{α!y=@a9ADQW@S 2ttC`,xABz"tWx{$Q@4#4@,620 DC60*h8 ?}1A2 D1@hDC0BVQC t99<.@L|$C0,g×94*lS+"Z7"eDJt#Z~U+ %rŇ/2bBŇ@zaF%`a[t o4ńPhR EPadRP%EzEX( E D&hWp /:Em0ǁD(UAÈ<ņEY4 X-P4 gO6̤EP̊8ƘIT,ltD/"12ZCYEzj${|}l ~,..{lɘ2JØ'B$2[|JBGj`FÙ4 d BEn\lu 8%AOJÊCs G ɚ$*́PJhJܡKvɉʬ<ǧJ ˯#K݌A%hMX9(62;LʃH(Ȃ(0JltP#嘲ЂOA*>։货$,I<ǶP ȶFP5.;(S!1|L,ζpÁp6P'Mt`7ŠHˉv|Z0M@MhLXj-)0}dKT"ݜQ$K1EbiT$<&DāHz<ۑ E˰K<1PQ|:2,2uW0$-CaR9ߔW@S%[4%SǺӰ SMxpI[ 5E2T!ЉPtBSE@Mv9(M,|,C4K-.[Q]A1 L)#&"kau)Fk9yTP@ZPT(ÖŪo}E$(ȱ2\u$X2!$`.FRAXVtNT "2 CJ|8pU4-(C]=YIBuC&ʛ .:X2`&K1&d2FHNUzM q ɿ[Shc8KK; mوPdXRE)K8OVP`=WEYeoJ\Z0Sr5(hGe? b{[cl+ʮ m5JP8̂Zp64R@QY,ܡhǯD\UO۶@\e\R6pVVИܒ]]0cKʊrUK⌛[dL@Y EFbZb: e\3v^Pc6eF ]n v4Ё$&R= DE%dFE aQbO-PTjb*2v]k \ˉYgbjvK^ ;Fp&}ѡ~^Kj3cug謵N`p*Em-fŎںh1_&J 4f )x?t6mJkqx܏иU0KwFe^Tg3fil3!f%3(Ho^ ST`oVlYZpݵS Fپr$p>ŝED{ˈkopȊP\Ȋoܟqnn{^8m9*nYq5LEDlŠG9E.L@/n<<&n'竓XvO蒸^x\jHin_) ~Ȯq?3]$h&T'Yfc(\ܤKG"*NJOYۋ܄xnvsp|  && $wsP>8fp8vb,l&/Oޓ@xV/JKLo?9d]n -8P 6>SEv wí]{'¶_=s ʢf`?xGGA+G+j"K5%aNz|uf, %Qwz/ˇ %Q"akm hAӫy@ _%{rFrzu7r$XPs9D|}Чr^lN|βF%yMO(Zj\G 㕮} PZ2P`BB "b̈" R\%b>R0F)}RZ[*^"H`!F"Mt)ӦNB*u*ժVbͪu+׮^ +v,ٲfϢMVmȁڠGPaUqA=5ta*ˠ"#dUGirF 㢽5VĨr`ç 8zoaB,9YftwFkjHS'Oj ֯cϮ};޿/~<_o+aUw4o=~Rb 5cUe9F+TdUԚS4VV}a[RKjd@ $@=11PCYG"K2٤O]!UUAs F,(U+5@nt\F$4g(j4&|iD'hM@IPT6 $VzJ 'D`a)a$@~BBtBZj@e$uP⚫ګz'%J9zqi:%jA!2@atR @ QF)5 NiVP4F@a@F$**йI9D \p>F$#\'C~$U6k-X t(D/D=կ)P@FDEFUI3쮻<Э.S' U톒c4F 0D @(gFk@+\#3x,k@FTdtQi9DnC%;UFF:DOB}جIյEZm1DA0=F CZ_*Gc@=a*3_㟿A#G6? 2B6(([>V) Ah& F萊l-"WF.#͢FF*`Q@ lWb{=dCJת!8TFǑB$bךsrwr!H48/b#h3:h4&o9[#E@6]oG| Ch1! j FgD]yFCjJ IÐvT[Jp+hycq|HB "PIhc"3\&3FtMC"JY!(?"tY4B4bc<8;c8⤀VeQ*oh0nmM{<")]QXO$/ 2R`Jl5jGCEš]N3ٰa0bq w ",=r;AN܌p3:Um0.7aq )N[dF"G`ZOD!gGVy^I?T ~<}0㤩Wuֹ,@%@ ! R9#t qTdHfeXEl(pO8A Y[a B( @@8o@4@S00@h`aDPaW0\DaLa^aHA <G,J0a]E!@tۭU ,@+HAla~a6!<,dA$@8"U'@TBZ4*22c3:3BcXJ"b4bc6j6rc7zx5~c99c::0 ɐ#;?d@ @.#A*B2dC:Cu $$DZEbdFjF.z< GHdI@M5KEdKKdLJ`\SȰLNdOOB8!PeQQ"%AdR2eS:SBe.eTReUZUbekMeVreWzWleXeYYeZe[[¥ue\e]]%Re^e__%#faa"fb*b2fc:cBfdJdRfeZebffjfrfgzgfhhfiifjjfkkfllfmmfnnfoogp pgqq"gr*r2gs:sBgtJtRguZubgXp'PGlgw~gvgyIzFz@{|g}*$%ĀF'|ie&N}"hh§ dPzZrh,|,d(V"t犮("J'`(hXzʨh^& h§Z{'|ANv i璆E瓢(%䊖v'h6@~&F)|J$鎲iNXi~ʩFA~)| *' h'^GJ)*|)BWH*Zg*ʟ'jA~F*|ji*A ؀ju8jfjFz~"k 'f§Z @Z뤮g6Zkb~ǰ@:k%g h§~ ijk걪kQA~ʁF,|W`"H+J+,`, B&L,& XBFvdžjD*l˺,"E.l>GPŲjQDhUlО+BˮA~RВ,BXBf*A"BMf-**"lFPmZ-ֶ֢z,Ȋm|@mzE\,FhtCBFVn^nDBgb-JFnD .W|.芮AX)g TԢBC.&:+ Ё'*.Z.m:D/Ɯg h'r(@jDD4.x>\/VAD0CnƮC//D/GV$0.2B%H/|ɪB~@"D#oz:Ax00D0|p0D00/'udz(FzqV'"o~"p@bҮs|gC+pD1Cz(h3 "o/ TqDFgFsiJI#P @@.BȴzMtt- t@/4|648 #ܡe~VA;Vhs LG'ւ 8?(]3p^ĝ',uZCh\?vD؏D z~Q,;އܸA[' l33'׼z|R+@2 %8?%T8׺$Ki@,P')kDD7G?;w?6;|rsï ϿׂL>CD-ތ0h0@ 14(gU,TpD#Β3F#p4yeJ+YtfL3iִygN;y)B@Ҥ~6@iRNVzkTvlXcɖ%hJ 7H9cTUN(D X0aQ$܃r[uw,'ձC* :LJ//:A 5;˱'S,E_xpa˙7wztБFe:*ԨSwU+ɗ7=+ RqY&;$ 6  D {$O!oPF4Ih7RֈkIÃ8C@(7RZ3ZjHr0$\&:{%, O.0c4̫2čHlpąl QO,qA"45Gh3"8E΃Th9ӡ:r HQ#JTh ]k)S6CPuHՔ0j!"Q0SP@0]f)ʥJ,.ݖneIBTA)ǽX< f8#K#3IG^ס+Ũ87Jסujס x|iƈuhQ>(C)TV_dbcBK%0c0b#XM ^o^馻)cz%mޚ뮿 P{*zB<0  y;D"aZbcE(w߇1BpwwpW\!9[ߺ'bf{Ҿk[#'!o$_1PXb#(:JvHf%Ot>iw]dDpS|y/\_j'F~ǑD=B@q, l(A<0"`-$(HL!A(3B:Ѓ HFB"#C#䄞IHV(Y#6TG8% %A]YN>-n ~_ ɐ#fW(Cn@hD Vv%G; 8:9."uԣPn&_!&*1rz$A }(rE%G*xU&,Eh 8Ѐ('eоQH 0)%^|+e`N &e*dO!Դ ("'„Ed &NQ%B`0 I7p Y2ptj*Y. D h(CdQ`9RT%>cb&u!~ZO_BLT1[JMb2(馰H:lz* @SPVJU2 J3w[UjUM& {eJjDZ&+Pb!"Z,V6%Q V.di-0l mTڍTӲmgP4 оUDxUt?=jЂ 4,g|xwϴbC>IRWv!@\:&}jjtT,ZM9VqGܩ&|OR@ 0Q"[ǎmy  Zo-ߺ5͑ELֹF }]ր7y_~Rhk#F-6B ^؋X0O2m#m#^A+"^aor jb^!o /*28R"/)$$P@%O) a^Oo%, P o! K#9, 0^R "@@bf˙pS QB֜kA@ j `IkM"@< ," xP!1) @> DK+ "\O+ @q #0P##7$K$O%#ױa ^r  `%6oyH a^Q)b!`q#\&;0)&&R)ڍRϜ@(# J"` R!t1R!f 1)N#1/i'oOb-q RZb>+  ja0K+'pR)@!a$@!xm#|O^pi8+WS+ b0pR* 8oN!9S@9:S::Qb%QE$t9j4#1):2MzR!$юB+Դ! @ު-#r8*4b(/#B?S7#RXRH+6bq2b3>k"qֶ1*)q3u"334/4*^ :1*:t!v±js#sJR IJTJ+$Ӳ36h2Bm4Gk@"; B3%"1o#S)Tt#H9" p)L#4 %.M$S;FST!fSJNF1#E Llr&kOK+PMN#rM#XFM"aT&9?h2JsUWwW{J$4%qk4= B#OSTMj-WV%&5,K5GZ"#23*t!YkA:!IB!@ItU _mBRNBU$ޓ`/t BU+W3Vc7c;#uab\o"MIm"ZL_$ N$3 "$6)V,fkUm3!$,hk+u EPf#Rbk.\ Pbjs#YUBv%R>Dwc.=Vnnnd7BdMv!5pbhObZ6*V!u?M"#f0qCqBr$wQ"[ $&ӈV .W)6b %uBm^AU%gU";ww! qbnyWyY /%:p",t`$tM/*J6"Bbk)% Kuw#ȯ|BXWt7rI~kAtt+T)`U , QלW> ~y#ҩ/*xKyt_" [#㐦",Ym:!o%Q{㷎}a:"`C;KZ Lےz -չ`j1c۬5Y!8)BYs{۷&v7Q0):9% gk$O}WЪW8`wY"NxQW%i㰋R7Y)y㔝m#p]%5 _xaBs{8+Wwkw#\'K[#"{x7}y4Z/ZLbIb[}bY=0y9kY[%◾:Ў ;& \wp2\y·˻˗wm7OO84-8"Ѫ3Y){g[ߜB!omƽg^:%n8%d5zzU| ܿ9\ec1iP3s FKO'¼Y`g grF֓r1ѣEwȳ {&dY%;A ϕe;B\Y;WB?O³]pW@ ܐթӥ [])k77% Փ >I]#$#^'^1YU bq]?Ti\%D`# _٥1!X/ړbm|!t}+v\W.1Sҭ[ ^ )_".7⯞bKOp?K}ŶA&I}-G/}!H~&3;'V'bGg^V{>%{#ʝ&Q8%y+[{|M{Ͼ,@J^ ^! @Vy~.EsBi!uy/q5Oe^@W";ؕ_" ^e+bR=';9B5־l 80Z*,@@ Z$nX:pQF H*d@"*cʜI͛8sɳϊH Uˁ\ʴ)ItJիTJʕQI]uԱA^Rpʝ[uDHdԱD)>Ai`oGF ;~lJJ|Q(A;J|xU⁑j9Yă"_ILp1j$""I]H v$АN Cvi%|N'XSAmËoʓSUm(.Aqb󏵟\ɷ#xucq&hrdWCxqWC|y( FZCu-FPc]e$F`1NUDAVZ!AY@ J.oep[ YO5fI!5!eMRHW0@tEY9RJ4(2m7FaCs4M6MJPJb)79 ?1&D*V6ĨE[4xT-9Pz*DO`%RDQUgiYєۑf=VA@^ 4^-jE٪>r]CYq9A+\c ۜE6$L2P@LUĭk+F&WXh+R۲xXH xH=gH9R-'D#<\=U2,h)Fz]$_L∣hghQ##@:(;!p$y#nbZD 0&vbUg8dU.}8 x׻].Z7a-/N)FyCҧD&:qzQDb-HD#6E{bx^$:"I@~CF"KKUy"rH]'HScS h6_@p ;D 9P!zs`E.'x.!92!K8;9_x>]l &O2#$\^n xSf?Q󋩼fQ9rs \("HErQBĎ!G>Br7!O.Ǒ&|I q'DHI8!>@ɠ:$ϴeS$$]:rQeIP1'EG#ـ0psd*;*N}jM(Ջ5*9]Xծ.\PXM<+Rprdr|9א곦;pD3! MZ&iȼr ]8h2%dPn'ERb %"qhYJZI*B4+`WũC%&#ODzn{vRB>Uˆ,`yۂ`]z׮X Yw;iQoDŐ~w+ҥ/^6X /]`4w60AV.,ȶ*9/bXZQ`^` :r(!-+k ϑ0`޻*نL H$}ʊc-P5? )bt'[PXs*/)HH8 ׂ*n!(8-f2& LDGU(H &PTiՕK" 7!-R8~TYqJgR8B2Z2 Mcrr~S&3foY9Qs f j~mcAgZI5)W 4z.^cFyXR$8G~ P!0e<$znRAH8FZ`'3ev">0y(L'wRw# wL2w M-^7jxz3l5VȧjxeWny1nV7WXWGlZ{yqkCJj3}񇀨n?}p4QS)'gd+܄}~8p7l(tw|+vϤ~4!rԀwQXkef&bs#W0@q  W7Rߘj`Xx&ҋXdh`O.4S t+% &Z3yV$"*hY >cmZiHq[4{c6X JJ2y]ɁII$'-hZ1w!w2!}W4kk%[p:-C;hXD 1 Ĩ _$PdMYZj8{u ci) 1D .Z۰S7zt 0yULk?1KaKj6 'kUۦ "-K!zKvSDM [hU?h)lIHe<`y{2isD j=:;̲*{ y9:H5SÓXL7A)-EY`h L+q A>k _X2dz[DNZ cV|{ě) 4{ȋ,X.3!˽1˚1L+6}thܴ0V?V.k;ƼlI ) ^ X=["PE܍ȜO>a)I R Bj`Qt! `Q " pp Y$ Ϧg 01a-P zz`Oƌ|U|SkO0̽C *3`ת2b`J(A⺙)ZP^Y{bIQ9ܔ$-B9GJecXOi՜5aMA?S .֢GuHDC/ q353=ٔ)Q•ٚ7S#qjI`(>ƅbE<|]gf-ZY xuy8 XHպLJ=#;[ 9صnMVҽʾa9!ٜ=N=-](Z](*\n\F1aݵ`I8m=޹]UTn!5]ӥF:l::A-BHJM( M(oC#a࠰׍] =-zqx$#䙝ӍpK7#ksAw~)/n1^357Q K階sě頮MOnQSqp:dfm ^_R}qC{5|K3^kP*XEfyyMkXQ7!!㫙^óBJBH}H.YUۑBno+~=Q꧞߫n(=&$,ơC,cނf(jx%31q:c/O?9ZK } `oUԎ.nt>>7LHADž2qr!4NˈNչ.mmE*!lG~@ 5UraK?nQzI$ .B 4xx^nYJWh0U[ LUO(?#c6Kd Ѳ #>nIlqį.Me_Mq:.: 0d4A3w0?>qpL@ _jD!) $QF  AG B8QI2B9@.~< Ea 28ـACBIjӕ' yQ |- E+Q\zrQE,jmǬ!m"RgB'͞ 8ɩC゜8'?ةbʵLLIѓ:<92ᓲ3Oؚ+ذ @C4Hk1ʯv@R͟G^zݿ@I̧VH.j22S `DC8` EF9d C :˜@5F(fhqdgBCiʂ;ڈǓ|1Ȅ0 ) 90%JOm ul6,qRDi(YL@r BP<HLr'K!3qD5620`iNNQG%TSOE5UUWeUW_5VYo :jw(l.S1:Th`aS-FMJ}&ab#:Ai(eST$ZF% hʊ 鯧=ie\~Vw֡uK$* ]xh r 6+6kIVg] 66Iz6Ngfo9gwgւW3PXeoNPތ8"rZ`X4'KӴsїzb79+ʚц&i@6z^.mޛa$5x[ߐЪd/W8D{# 8h}qgvo=ww=!o%I _=`3`-Ŗl#@B@CjO(SoGa9tvF)6[ `;=AoAaMjԙ}P0.hVB9d ^GuY Ά7auCЇ=` %a{T(T,RG? @{ {_ PVpdWG8-FsH L?H_հElbX6h_R x#RYζ,faY1bzZ=d׊UP1ǹXge;[ֶŭ@B_n;ܧ%Bj]bml Qnv]v׬xzkֻ͡-yAB欂,iU^bXhSV׿p쪍"Dp{`] W70m+5aw&/M?t=hBЇFthF7яt%=iJWҗt5iNwӟuE=jRԧFuUjVկ!Z.(FCb°v=lGB 4m-swf!9bWז+.RT-;df]s=ye =ozb`b_@̺_ ,@DaZx%ஊuxnn^ μ'NXr xe>s0CP-,KKvTHa#xlQm紵عB^wǕ1͵unp/=F~Ox#jjQ{n]|aF9,ٻ{<=M>?*ڏ+.- :$¼z GpGKr0 X>W$ֈ%Kշ`3|<χ~|T=_4E`LG՟!AmL1 o_Y;h#4?RQQ0,-8c,ԈQ,0 x9A`,FH|A櫅(mR| ) Q*1W*(F:Z8`y2-@A<@S:+Lǡ(Br9BCjb 39 ?@>d:D %-EdFtD)pDpI\D)Ä*dSA4!#`C Ä1DADh@A`F EEE;T D3UDR(pSL%&'=Qzǚ҄Q-./06KD(0 \S<4K5FTC8IU[jөCTUUTUuŮ mR>#*ƊpJ$PJR9UuWUW5TD}aEPeeDL@՞AoQmR$Tn9:;]pwWw'=\-JX2rtAU qu 0U>JVpE\؊]$s=WJY]RTU02U?Uŧ8e =MIIEC 8@XXEYY؎ uIQS(%%Cv-̍ |3z7刱2MZT!Z:ڸ[R[+ZxZZ(IȡW!ZE,tKHLW1ۀҁشSڿީEQe7| :qݕYeA5 l ?6`9n@"nj :7Ճ`|>Kj>z}'GV?vTad\ЂXyRy̯Q8Ց& E ,'`(Pc'p e5u|I3'ndĊ"-$ZZE R?j T%j dbf" gg`%X,XWp~&(ТQhق1/C /0fhjMPh;{ FfCBm_lm `xj n<\L'n)b(∨ n2)f>b уji*P9cai +$;@yEF -l-b؉܋|NQl{ݝZ-ܹR96l+kSQteĞ٠ڑ5FڞN䖝ʬZR > Zm8S]mˈi ,0E*: xjL=zWmZz.pXEŊ ^NNҌQx,U2E*h)`fKxEm}# Wf{ިfno%LD[Z "-ehޑ--E,r*"ճQc(([*-МOFт,߂+2'PXF-H2 *CB#P[ZtCw);;awpJ4튠YM|1 qZ;/sK)tY_SpF#k(Ot|Uw`Tn!#2#io_׈`W#ZƠ?_M" N'hG@Ll`(^ !gs[ވ׃`@P~`w6ŎМһHp?w/bh5GNbvs ψg9;j6$5^h݈)LxZD`vt[k*%؀rʘH7|v?a{z!9g/TyW k e ug|̮-z4H&V!^{͟m@GȏpͯŅL N͂BUQ<ф UGoe0GIDd()pqF'#|'(Gg寅ots~R1dv8R`T 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'PP  QFm逇8 ӬDt@UDDUBD-f 5rҭk.޼z/.l0bC RXRTA+DB,@T-D@T["ONl6ܺw&i p<&>7ʗ3o9t6~x`;Spa"ZrQz"umpF4.nɺ.')bCPDI*ApB$$v1BkW_EQQTg\ tG4k[|t\yDSL\iO(P8E^Ia -G22#F6c3ϋ&dMDI^ET#A O0A: JP={5؉pe"Ma!\)̲o?C8_Iwav6}kAC_E)(Ệf0DfiFِlXĤ@9ʕ(HD:$2$d([q= r.:/ciBx%CK?4DErZKwD@ ?>wƕkH>꯾m~;Bן?mC<"òH' V&ȠT C@\Z!!Lֱ-vA b( 10a iX:]bz8FGDEHDWaDwDX-v Lvֲs DFs4Elq=C  \)"LYz& .mܽ%1g\BRD@ B<܃DH\ʃ ZBYCPHlThC`-8f1 > * : +] 2G) Np_ED}g Yq4DyFLHD.SxDJ)UMe! QKDU 4ҙ9 V:H^.|) RTTG ,B A'b %"pghi. ̀%u*+<p#\@pKd'0YG'%<{!xx&dJB  H(](F!R#,B^V'\ HąRHɗf΢BrNdpޤB0Ds:e&9fzډܰBkI") \IP.D&+p#qh2D LUn)vbDRHD>Șz(,9'BiB`1'$I锒ϒւ(0(`(05c.DΟ6C>f(hB t~n*v*u亩ۃ>*D01BR:ߜN&Ҩ*'I5k MlγlB*oc~*B* fn+R*>ķ>HӇRFҪB(ܪ] 櫾+3+ % ,%DI=G.J! ,a`hF+@Av,ʦlYk.˺`jM냔B$ cƾldCX&2fjK'͠2vDXT%jB-kFk&~*T xVٞ-ڦ-h 텹a\]VZBDebSmDfDQd-f>İ/B$nohP2.AI$Beڞ.ꦮnBDD!KdeR*!2> ( V,>Fd>)DL!6*^^DD:ڢClrZ&JD- $C0EoI!/֯n`FDLa C̀b1DA>JRHKBf_˔FZ lp OH)ZN T0 Œ& G Wp '00-Ls{p-׃؁C&/1F,D(@ /;(@}6_;;+dAd B,(x@DJl{ e;ǻ;%X\!J0Px'¯:}҆G B^cSI4|WY&',<ʧ@J&!!Lm{D+x{)pDK<]ǼEA +G} _$%Ao B[ H{F pass}'y}HS @&=+`=BHRׯnH|DK˽E<+>7?*DWwG|S+D9~QDcԵL@@.8?H7o{O@`0pQ&TP F8_Q"5@#Q2쑃%K> ;hOJ7qԹgO?:hQG&UiSOF:jUWfպkמ%\j"Hgk}4JAeA-9UJٛu/e)90sOHFXh9re˗1gּsgϟA=tiӧerTG@I|cսE$A%ٽ# \ֵƎ8;!t|дM71uxF=~}׿ 5X6 |;!Aʭhp I7z(\m , OţAGYHK#LR%l'R)bD #C(zƁ 13hø~VRnJJ,oLh. 3!1,".:?ʲA2l&=(j5COA UQI-S4H@h(ӄPQў΄1MּM޼3.'T<Z#,DRUWaV[ʕ]k5_%J FmWYk֥8쥉sM]TX .XxbNT_1 w`Xcd1`9:zݐDBXarPDhb%8ё%(nሙN(b꫱Z뭹>rȎ(:HeHh#@wۀB \k.f,/ ;* J{7( 2| cÀZI/QO|1&;r\!ȓBq]IJnݎ] LY{G bu^F=:ﰚsBo_ib b2c)؆%x !sR, AyaH7-~M'H$+KW &JJa4?-t aCda1 .!-P, ɛ@$`DhhCP"D9\ g҃ɐe4јF5v*<ˠHv=BDɖ`D$Q"} iv6!)e@!Ɩjk%1IMnTa`C#G&>Q"|M(S2J2%D-]˥pAz:Le.tf_׌%H"l6xSNzK+XjI4kC*M.xFHJL5A4҉մ")yu>tʅRD #:^JM5'Kl HBK|MqS4by6}QDcR\M5'\йu[OkԂ@2"( ZDo"M )X*jVt&5[WΕAŌ5)hC=(u'LESWǎ&!H(-Fp|.JՎ,(%H^AY%niQZծg 5wpQΗ/W[V!!v#8@<#)/vT{SO.Bл`l=:B@ b%6Q CD]̘ Hh<>E9@g B E6rv#98CoBS,K. &b̋,f(^c ?qw̐7jBֈ 3Q`L}4OЅ6W #hȘnI.H}U'6Vw kdLg.vr{N9fEYec ykVԠᵯ{ No}:+B\tfԶ(K#DXJs(Ϳp !R7D:w0qG4o-Oi)x^rf!΅.u_ _#O+A]uo맍}^RAmwn {K#1O"X|=D~vX@+OD AzS¸C)sPwa{b? C)MdiN1Mw}00~i8r,DJM4~'+K*w>) k0p 0p!0%p)-105p9=A0EpIMQ0UpY]a0epimq0upy}p0 p lCa0 p 0)H p  &p ɰ  ;p ٰ cP 6 p M %Q  1qQ1%qϗ(11;/K=AĪgBMMlRY]1%^qiuqyqj̯qQ" @wVk^QåF `;,c64J@ Q 8/+pq [ r!) !%r")'fd*2#5r##B#A2$)RQ$M$@qP%]+ %i&{q&ur'kcr'2(5a 'r)0Κ2*)i**)[ ++P+޼r,  ˲--2.r...2/r///30s0 0 031s111!32%s2)2-21335s393=3A34Es4I4M4Q35Us5Y5]5a36es6i6m6q37us7y7}738s88839s9993:s:::3;s;;;3s>>>3?s???4@t@ @ @4AtAAA!4B%tB)B-B14C5tC9C=CA4DEtDIDMDQ4EUtEYE]Ea4FetFiFmFq4GutGyG}G4HtHHH4ItIII4JtJJJ4KtKKK4LtLɴLL4MtMٴMM4NtNNN4OtOOO5PuP P P5QuQQQ!5R%uR)R-R15S5uS9S=SA5TEuTITMTQ5UUuUYU]Ua5VeuViVmVq5WuuWyW}W5XuXXX5YuYYY5ZuZZZ5[u[[[5\u\ɵ\S\uJ@.!|Jb@^k0\b-_d ,'A@x`6`C @;F,a1v?hŢQb3(3vdcO\C+ U]HecVO@\#"]6gK#rŪA.Vg3瑴"#vj?s! `&k+E)l)6l m3*Wrn1g! o+*}欆6p,v 摨7rdmx$7sbqYO{UsEW( #1,j!XvtY(1{fKZBum(.FHlowʑ zx&Ǫ !hw 6y%JfB%zw"֬#qv{u$s}RolJ_%N~vW6x{׌y8ƀXg`:]X~iׂk`g/kUW`m tAwAb@ Tximq8uxy}8x8x8x83 !! ICCRGBG1012applmntrRGB XYZ acspAPPLAPPL-appl8GmOz/ desc0cprt,Pwtpt|rXYZgXYZbXYZrTRC chad,bTRC gTRC mluc enUSDisplay P3mluc enUS4Copyright Apple Inc., 2022XYZ ,XYZ =XYZ J7 XYZ (8 ȹparaff Y [sf32 B&n,8 $$$+++333<<*;&A-M:H4Q>*f.i3l6B:E>KDJCPITM\U[Tc]iclfrmvqxr|v~y~؇zS]Okgvb}ڍܔߜ⥛Ċ„ʕ̙ΝȐѣ䭤洬尧鼵꿸ŚÕǞȟɡ̦ΪЮӳ׹׹ھ¼ժӧڵ߾o H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx)˷߿ LÈ j Q#KL˘3k9jLӨS^ͺ B~۸sͻoXdȓ+_μsԯسkν{sR( 3tr@`"˟O?"@I4`A$'U0d9rl-2@h7VhnU4` 8+NrHqH'"(4qxL MEy!pފ?6PnUFH@ QfYR f"TYoG,Xh6UQbF$tNDʃpUb "P砄jDn©C(AArLQ(^o|.覜ve"T**zJhp:bA+xVnXjk|< ꮠ)IPA+Q*yLU@oȡVkU"Q*`"9蚺YL*(o Tkk(%P(P@h[3 纻jVlŗU!-pEo|H1L*:2n)8'4ls_p̱Z9]zjl,q ]7G-hRΠ`DX|,Q %BR΢(a:Kx͕XF"y<[,Z6k0瘺 zgIdty> 4L)Wi6玓XA_sCFy2wO7W;K\v۶UgO+R7Kt^rgGIŮbD=VkWDJ@r? "<S@AJlS\@8M6tz ( NSH4dH{Db|^mGKDՀd BCq3Ub@18΂Q.rKUJViނUiMI yE#1. TYCH4X^L"m0TiUi;ҲEE p*鞑Xg$4QFd茔\[,g9l,H'{萐)AbHmzbdG Idr y\ؔ(Eu<$KTQ1cG'_"N1$I0bI٥r9X6Ej_P[C(=9pBu'=J\ gMPG˃̓RGHG*zvL Hɐ]:IJW%XB$ #ӆdIz*p:A8P}N: ʆCCȝv%Ň`u @fzrHAɗll/A(fdQ)G(EMN9d2ĤF:`C2u:i!DA<1BAcTS5 wٓ*ka *nTk4* #C KW־n'HZ7D;` t+z5nKb>QAB IB:*lV8AoP*P!I0 'sU MVC۲#5kK2]ŬB#  LqZO};O@YSIa)^PgmXf:J<²XVHI7!P0!2-  @c,ނm*fe@Hp_0 `qK+v%dpW^NXəD GE5!5cs,52cftˆ!P[IJ#9 STF/C *悃uX,HD#0/eWz0(p:[~֮V-Q^$8΄28?$ne &-*!ed坐3ϣm|Yw% YYAdәqbȕXp;!bl1E 6"FH"8~ۤs" B!vm" J xJm斀 1 TGDqtf$N:g8WWS"*Ex fS'QD90'G@=`~ hHQ`Wq"!&m =b}cvFTᲊޘOHUHq9(!x"hF-b# 8sqz| tщe=ń ( x:Y+x{T\GaRp,QNUR}q}!m灑h^VuW#XSp("A 6xV"tXk8wq} qӱ}(y(Z{XZ!B)h>E QS VUV-wU"̗mrq1e_! Fq>aA7Lva+XY؇M Ii3s'j sACh~Qx Ati<uKF31ᔮKKX%Й7<' n ),IgzZfPʭ URQq:Ѣ r fZ"w+/k#۳h ^(9eK1PdSB3yj/qGyš`˳, ָu ֺ'Q` {epV/+Kjp9pu"h!KI::+۱[ xeUҬA+[^l[+m" #ٲ+'{]+ p,Km9+XX Q89$3vtyqf$ p@/P0}Y›R~ڽI+[+ٿN!;F$% Vʯ|7E;(KM=G*r ;ڼ-x(}p N'ȻO|%Q x§*(۱ c%R/ .|QJ\zzY5zʡܢeї MV xr5Q| WK>=4 F5rL%q p Lơa_"wqi)*,Lh S ?2ŋ|aL,a1WyWL<ʠёk+,lĶֽ%nٚ6DzK{̕/bsz7Cpb+Ďmb2."ָL8\jÀk/ 7,(ҷ (Jѩp η0{bѻ}LVk1X?՛@+RX1D -F qɼ+عȾ*YĠӕ6}YΡA!ڠbAK,]3Ay7+> /juY( >lw i+~3+ =]=6ss#L}`ѭΈݜN#/ qܢREBf۬JǢ ȅ 'ʺW-+4… zvM(=8Z sX9ۋG !} ɐ"8|+=0>0_! J+ F&.yز!U%v,t+8G~YûvBnN-֪jQOYA aRh ++>ݯx=:l=1ⲡLڡ1VQ ,JU휄 4֍1F Js2OGQpftmE.-Zn.QJBÊO1:VkQݜ\>>,N_-ϾF\t[\E qUGjpVx4ۈѽ[,AlMzȖ/S^ !R FLA;S`= j^#颢"#:G"*B^}+gA/Ծ2wZ)B QNE⶚4<f˵aߋlѾ/4Sgʚ\/F+l6_(3n+8 ,K M?B/!rDM` :AM$ml>_j#w 7l~ z C+[3m '/3un+Č_f9o#~z-iB6?K_j! @ rKB >Q ؐŃ hHFBrTɃH*\d\DRMH ȇ VL4@R65(V]~VXe͞EVZmݾW\uu%F)/!]6$5@聗Xb|UHφojThJ$qEQ sčM;|e셒*Ay]UMO2 V^iǃ%2ـdSM#JcL@S4_~0@$@Dp+i.˘k9sh'{i>PjAz=ch8輫IU*Hz Ґ'%Ҭ)"J@(:P(BJ+&쳪6D) $2EE-0/!jRtjjɇ#t!n($R"2'"ғHUJ4hҖJu2-R1oP$'7j@(̪JaMby`φ O)4hJ˦(G)*aWg_zςl4`&`F8ae ΐ: ~yX_XZ؅V;)cP>IΪlj{$_"\M'VmHԓUȱ򔪑3U#z‡gVH!hS~$՘gfZLnd 9d@h=+o=H듀^oiZX6[e舌~Wme⻡q}mmHW*HPܛHnXa%VMblD!&Ȓeύoc8G: 1ZE t=F@j8bAͼd' D iš&`9i2A^F.ŏ]b-QZה,6ē2$B2I|$ăH oJܑ#2YXB>x!~9Vug89NrӜP I2a9eA,JR"H I"t2ȂD!$aUh )u\̸VA Ҝf)E}OAZE)<_lKTMDj>ĝ,YFAb#Ȍ0CK_JeS E&:gT:UVժJG€z! !W9hjLwJIZFq,.Cׅt[!Eq!Y*9RCx30tKFה O(ĔP+Έ#mE,r~Ldd\Vd YexI dZ)9,§wUȩ[ַ.YHYN+cdIƃ0HN_bד!=H,؊T1#14ט ֭$tWϫt!Z2rŖ2iq|TV$vlG׊܍'BYʲ Ź.`ۊȖf" xO߆և]ٔJKDz B;Z$yؼiGxYa!in[{DZĵ?P+IHfKm]/YI9 ( |FUhKX_z9_;$)ړ/6"v"y\_ +h xÓ( G{վv-9C[mU }KD滙[jgIXp/:*p6iB:|!HKV|  f R[X$Q,{v4Wܣkf+#&H~!zH/uf6YS5 vV~E4UaA꽕`4Wz%ȷ"{l̡$O\5J8;5ÿ8`9,Wy?Y? >軜F5;S 4c6c.A:F۾1kf'С709@BX-n2+(o[2 '!BPк;`8p BO ܛ=Q <2z J_ /Á.ˌuI4*kLM R(08S;6l QW4Dc+ĉ06bC S #^|Zti "lvp #H3PUk Ʈ>˱ ZCS+;T{e8G xU<3w+=O>2Sd%.*)ądȆtH8E& \E=|l.s 4N[H;s&|4 (нa"+ ?Y:9p' esH)?+JDH[,C)q6#Bˇ˸KNTJh6DhKKJHӈĆB[Ȫ ląHƺʧX́@SJS *H$U\" "KǁWTK˥Cd977qM }\  ^JE#kʹδsE /Nt 챘 c< ĞXDMJۮPȮiJ_74Ŧ ]3ˈj,,=LLKHL`,U<Ѱ%?+JMxGԔ%|мD(PHry @4MZPQ+9 Q˴HDw,y# *L!ėLZN3q8--54P6H$e$lr SKrɂ&AP΄Rr Ċ&> D#%Aеy:J#Pɭ`OpծNpdҩROyA`OӾ+= J%:&s ւx[VD`Ovuwu\4{63%)È˅(\I@F1J g-WpV%{ |03D-f= -FeM-TV5,D܊4^BǂToe~Uԁ1r4} yX$9 ` XE[JMVxEڤUZAӃE8O Hժ@*xL *d % Y5,U@TcWcmЛpE<[CYS@9Vz(c)d*sڈ0ۊ`Q\%mWhYQZg="04ZȇY/%u" Х@SԳl?I5Η#  ;]UP4с(,)ŊBmY@$J|7ݤ"F+#^By0%i" Z(W0O6#ҁ=3_وxh`QW}X PKZ7Q&Cc#a^\MQ\U9YRVCz(. ^-@-.)8ӓM^8gҧ([b8@+!nb%ý'j#^ꐼ#Z*paZ<{ +c 4<%=Xym9Ua̒>V~O-e Wea,=zS/]e0{Y|C1^~s\=WDeXmE^91K*hRR/U35A[?.`7i\̤d8fρZ VGu/Zt 0N9ZR2z^W-H! "&=Q16t<>߈hh, E}F-֗L0mƊڬ!R(Ebv۪_A䯜@APF Dv i6k6k<# E\뺶 b(1LvD𰹦j[}o3j: kN0aƞW(2hše%{+΍\$\vc_2]FONE 9dg"e0V!Q +G$kC~CLh9&[*WF2qh]. 1:f?q R;sfoBfF֫^Fw]:=yD#8G¦"Bƻ 1iVB~9AA%,zAV/XZHꖪpd9 B(XVʪ0/8S=UsiOS1iI'nFj`o+=CM1iG~Gq=tnsC1F+O ;2n]1+O]#DFPŞw2fhP"K|Z+ Ԓj&Uh 喰"gdir`_h湶@8L@xGW{ kw*G@NK^I*̯(~%Pnґ| =`DDwr 6㍵i @o!z-Xހ)4fWHI(dȊ?EuI*$M:$QJ9%UZy%U!u'(\6kf^#O gYEy9)isyGoO#BWg㡘M  b!anʦ!Cp){Ql )R9xZ[졹Ӟ]gb %{,*,:lG٠LժZ7 Hz1V`'Zݺ\`Gg ID kض\50g{W0N_sXDLjޒ+C wf 'ǛQuTW+snژ;"\!,+h}4I+4M;tU`, pqd" 4H0z_E{HCe;%(L ,!7@~aaGwb  + ѿ)+޷,ergEE%f @"W q`un9@y~v| 5K?=[=%zi+výR )N.\$@JuD>Aa{@@nC #L og Krg$@,HYI ?aQ3#pPI C dH0wZ)^ELM-ϛ€ JWqNZU&hÎ2DES9nu`Ҩ5n|#%xyD)By `& 0B</?iQ<@q8#$ 5 B*4(  M"?"Kа9:  Py 9617p2Xe{jRp%mHq.$F` GdM P/8$SM|&Al p8r(HC*REf" Fp*L9@ڄnB,|SQ#<0B@fT8JB@-!"1ԕ2gUHUk(2qH03~0#̤*m 3 s0C,8 I.~1c,Īs>1,(ĬI񐓬%3N~2F+ƇR2-s^ml悹f>3Ӭ5Og,9ӹv3*\&3-AІ1)̘ю~4#-I{tA R3MsӞ4tgԦ>5SjG„(bIpYӺֶ5{ ,U-aVo Oc~6-iSYzI* W6-\ @ǭu5A')7}ϙ[0qvL~?8— @.Sw0Hn8C.7&ہ',6򕳼.yHaBz @2s~QET~ {>?:ғ;+;9:SV?8Cu8[W:.vhǻ!B7n77gro;w;:Q.[VIĿ$<#/ Xna 3s>}N22w?=36rc/ik=9g &g>+ SM`m>yϒѽ$?ӯ~ӗD"9QpӿV%Kt?*?Y[ & AGyȟN V`^\OA!""&"."#6#>"$F$N"%V%^"&f&n"'v'~"(("))"**"++",Ƣ,"-֢-".."//"00#11#2&2.#363>#4F4N#5V5^#6f6n#7v7~#88#99#::#;;#<<#=֣=#>>#??#@@$AA$B&B.$C6C>$DFDN$EVE^$FfFn$GvG~$HH$II$JJ$KK$LƤL$M֤M$NN$OO$PP%QQ%R&R.%S6S>%TFTN%UVU^%VfVn%WvW~%XX%YY%ZZ%[[%\ƥ\%]֥]%^^%__%``&aa&b&b.&c6c>&dFdN&eVe^&fffn&gvg~&hh&ii&jj&kk&lƦl&m֦m&nn&oo&pd&q%pq's tB'+sF Lgsfg]u wZw%`v)Awց\u睱 X'~:,u,~N&'qʅ& (.( 0\(qfNbzp8Aw&'&tŋZgRtY (t@ Y NNԁugtp@ށLhqhn@w\xu(O(F' hYA )tH0it:@)tJp@Aw'ꓴBw\(u2juitu€JD&Ʃ(B: G!tgR Z* : tgEZF&t*D +th j>ujptjwfku *OpktzktH*tDBif*h  +)FĨ@2ɩ:jtb,tdBw΀\(u2l DuFg, uځN@wRu}JD,t,rH,*FgFBBl&+.rdA!\l\Xm؆؊mE&A'&DJ+mt%-ؖ-o+t@9J`pH @Bg@H,:-AŊ'ǖũ\ R,8AƩ| m+>noAwYu oD,ln(uNw* nq\B @ $N.Y`nYȦi DB'ކF'EBu>ow^m0/~xJ/ @tZoqh)ĩojD`0/OH0@+doHp^.ӾuN@ڀCg ptgDktX,p6N. nY4.Oz HAwBYu1"oDxmY N@/q.p   8' C tޫѦ @, q%nђ1*G\Jp&1 w'K2p' /l}hB֬HĮ*m LH8 lNTuDH -Ú˪̦29kѪ@ 2w* @߲D2F'2p\ T-}&uwgz3CD\nF,PN8 kgY8393Aw2Yxu4;O*p$g<#p,:i%o#*A-O\.MBϮH/©OstDh4GG-.'Ut2O܁4ë;2KCwǯZgDRu@XGo3['CZG'(_kBBn@Tst'b[gc7V&ȁ &.XX-TrN^C1O4^4 kutui[ko vb2['En[L6xugKJs]1YHL h Glv4\G)kkC'l/v[.mm߶ ˅x_njuҳ*6r[jtsDPOwVp+tDl+awa_+x[gBłGg/ zqq1|k|GZG'|6Zw'tK~K mEjwҀ 8klGCw' S;ӀJǶsD`,9H0fcuwt,L4o6IxGĖQŊKDlm8o与ml5ru@Ǯ7O<8t޴H`a1tj/qĩ5ᖹYyD0unL:O\B|z,@?516?NdNt2kG}upHBwj_N8߆G[:trCrz^\ps@ @+qD d!($zt-p1-KDpqd/wt:[^3E@j ,D{- E)߸,syDd%>;O(dLB~HF̑%SC0\HN8&UiSOF:jUWfպkW_;lYgѦUm[oƕ;n] w-+RJ|Uha, S1,3LS5(vcS9;S= ͍Vh> -CMTEm:rTRaK1TM9OA UQI-SQMUUYmWaUYi[qU]y_ Va-cMVemgVikVmo Wq-sMWumwWy{W}7L]߁ .筄 !X% ,̴9AY^A8bL5"aYi舓q@!}NdPQheQHըd)/\v橩X]DkOT).{Na#P9[oL 4Ѕ^=N<)R#j. ꤾHz95; 3 0"=V펉 nyw"Ct1"rW'@y=\@({x<GY(?"($jwRie_W/0d_("}A!b†U1A~$NAO)#0O8IyFTb ,DM ػ>x@t@BĿ#]""NH0)n@ꘗت0èA!;Xb2Q uF %V1>!E8 :0x$bBG>z#"30ȭ08VpMnrI&g22`SBP54(.#HR%>QHH^$*2!Х"0JZ+ X&&ʜ "Y *{AHh2ݒ4~ LCod1yDSt\#PrԊ3hVe 1Yl3!(_H2((QD}B5Ns!TLb 4}ԟYh@Ö&d)5=(dn#AH^Mu* p![('Kf aRPD!{[ƒ16'(U #l #T(y}$Ч 4!(>Kլ#_T`Q+3r󍖴뮢g&t+IR [XEdbdKzIJ1)"cY%S,=YMգJ2+mli]NT0j׶nU$xG7ué\@} l@U1{ V$cEV|o-n{L$+/~1a 1`r$`0XmO``{X,ab=HX 1q#ⅰ.>.W)OUr"t:͊gxV"ʱUe63 |pmlqݭ &;8,rrӀu*|)@эv]xo 00\b;PB :>{6mkN2JR_DxhYϚT?"iEg`q ?JA lveAt't&k!M0F՘oV(Fe*^RD_8mrԭ&gQdE%!?rlM!͕*%7ITky!tWʱY5yX~\O66E1tB>M42|gU5ޜe7{T>A 8E4ߘU+-Lwk5ϓɰ+Ξx/~!W0E2$(tHr |_Ox,gJ2,^D 0$;@,9x9q-^ev+ߘ]}Z-hO`Ra~!0]aBrT8y`Bz``@o  @|@Ƞbr# LBN Mr,g\ap=Hpfmrbpy @oLd ,/L^ 0 )M8 $g ɰ ͐!y 0qD0H@0q  1q!1%q)-115q9=A1EqIMQ1UqY]($aifYh /=d/XnQ rqa5 F؄ L F1𥉉,&؈<1]Fq+1Y1jau;ʱa0 $Ɠ<A"j$"c#j H_K)g`  l9!nY(9j+h3$OfF@U9)Xyu\" A`A UT(γtuyt7wsUK)"WگWvՂh]~z!a& H-DMZIʧdg"b|o!օmUe:!XZ!d!i+x؍+ + q8j)gZHOƮfmjBA)&n*@/s! Or⳿LBL+Rږ"LЗKD+eR=,r.!!=8n)$)B~;:+>!Ҿb ١{$=7HCǹ^Ah VޛdkI{J "ŢAb֟?=Y1# J$$I)dA,1R0PK T2,0͝<{ 4СD=4T6t@ _,gzP+FJB)]B@0BZ ݢ(iZB8@K ǜx6r F^+Ѯ͜;{ DTETլ=@'ٲ۸[?<̛KԩTp nLjwEQAIYn13< &^H+yNLT@K Db]1ƙy7dMeYD9~~bRE$b-2:m6[K5F\F$u Hp uQKdJ.dFe4 CAdAWeA[eiUQPpC5uA*[g,$BZP~BYP%-=`a-8PXn_Ġc6Pirꖅ&Ey:rEګJ+RFH4f[q>QDBBbPRl.l_ZLQ zB18-Ao @DVHrq nQVZSڒ2fKDLB(N *xּ*׋i= s2?$ T$+q a&H@Qs p (p 8;}ё#F K^Pl vU<|D?1GHMN)ZOF:s[ul2^3F瞏:P.PA!C;zD$CYuyPQlcXyxVޔ>aޔ,(䠑q??BGob+9\5~a^F=W-aPV,0`&1J򇨇< h," r `* x4QC" ‡$6 nPhD-HEX(#"`@h/EWZ܃&ΟԳ)"gJlhuHCNGB^TJ= 80AH)}\̢63Ptz%;Ai6EM=M9#DZ'j*&H&6GM%#B^ bAXRM0TH E-DtH73ғW5>|T g*r'sNn *|B $XoAY%y[J@" {$zPQ hd؟0lB!~ٴV-5hRֺ3UuJ9nN7]u4*RW2`핊EHĦE5[${`ڈ:J YRNb%e x%,fu &x`> 6 CfR`n05!$ E(qʐ@8@T#8x/N *xA9~ "&*UpU]@p`p9' ܅Fp3DG0zyA<1RB a| Ek 5v R71y{5L6$>N@FuCKEwĴ^8MU!}*#H$_pwR `qD' j` `p3Nj"4zweximprH~HI2GP7E{,p pԈ]r fI3@z?V “{TV-Q{48GhH @X?H!i'HOg$^T!R_Ȓ-XjHG.I5i-Ifx(ȀS Pf@p㡋 1_y$Z3 VpzJ7kk< 9uDafU6} #t ;Y) yɘ阒 Dy>AَA LCX}P#t}yl㢌{-eJh)G5'M3G^xD`!vCAɝ v<PGˣ(d< {)QQ6 GTq49z8CqBћRVF8!U^(uA`E131z'+ʢ-/ )? TB Tp`IiE@Zh jT#z!j KAY[3!\Jp8\*5gtQMG^ʗJ&?V qJɨ0 *Jc8>cp3@َpP 7C61_T}1\yzfb tLByjW: !i*sJ{ħI 46z9|YYT:x骮ʮEb(hF #@dz  G Kx[jSP;U*kQ)A6E kQ PH58J@RKiz eڮCKEkG"P3@CQЀ 'vEPaEjs7֪i9vmo۶!Z1$KE۱xKE,*gBARYh'0k2 ;A GA빟 K JpvF+eA-X1qzu1_j|+zk){FӊT98$q@] <ӹ+˾57 ]8p+xgyEPiiz {+VK7Ѽ;!pKoOl[lAU$]NtWLz_=ǽ뽑;uU{V@[ A,CRky[yPy"Wj aA[ҘcU;JH  |6,` ]EwDLȅlȇPl& đĉ9@ @WZ\L^l{NfJ{<(`6VCrL)2^v䂬WM0 aj j.5Ofj(p3@`x=F7bzG0x]@Cm~jʿ1k깷QcM|1z *n*q_;zN{tݲ^ "\Ŋa'£a8֌)eu# 0dz^}U1B=A-٭OYN !i;m9l>!ѽyt#%_'S6(ڸUY9Rz ~Tu ~  noIFPY▵FUCPFW͚{G!r wEt 1Ni W>nM=~ i{ OߕQ'nY ndD? TyuA .dC%NXE5nG!E$YI)Ud@E8B 2|%" HP$@) o!r[El,WCPKdbD(d}=TZxz󨘬$g`Ha1 -`Q<6>~ւ>"Pp"a 74:s>zʇ6@kT @"?*$p"|J$xIX@rIp#r@$#U|&IhM鳛hI\Re/uC1MxWTHa1Z#@d `H^#B*i"^/RQ SJ>@URJ,/)y M '25T&dΉBRehG=Q>ᝲx"&OEb>E h~qIĤ6-G#rI5NmEHQ!P*GJy*DH͔A2*NJ iY#L!=ƒ@X!U,A*P;eTRɴ1kcXFvKx&MPE@W2" lheQq TdT$"gQ@U ZΖ"Xmgy*($W{oՀr {6#E0k,fu YDo7*ٲju#T}$ZN&d5 1&ܝ$AAV*+E+FXp=B HpT!@9 (@`,W%0ˆIl. ^WcGPa8`ID@ NIF<GB#PcΈz%2d ܌> zl Xo4CN!Ŋpb2ZЃ&t }h!Ěh YKi^Ȱ@ΕvrMCZԣ&uM})MjXTYB$Z$GPXC"oBxuX'[fvV-$} Y`IT_ 6p2,d_[fw[Y}e;4VugL}p'\ 쪖|͛wSZoexM~raPH\N;2!+$ HFݬk S-s']KgH{эSpMn* I !Ha'$O!8B ^u]kWz: _sɻuc -F&{Fw'^_\ӈdc|-/ub *Z s  B,B-)j-T9N0 @P-qVBRZ@c&B=C>E C2$YH^q p`"(@)(Ot(DODp@DTLEUd+ U|7B\pD:iE_E`t7R# FvE0Bh[<i#p46BFnFoFp|Y/p4‹9p|GxGy8Cd t#u9cF qG,H,Eڄ:M E iMLNd $!\NN缝NNt܈Eέ\OԈԱcE<Ö%$/lP]ň :IPP{PČЋЍÎ$t2]Q5<; QQКպ /jQ R +0s%N]:ElQ!R,Q#}:mR2-Q4#R5]'R/;S ߔҭS\.eSAq؁S_ZRQ1SB}TH%CM/MT0P:GTN6͞C^RTTTOMUUIEDK QS-N>]U[UiyU^"U`TAU\Vb=]^UXYmZ-Vh}TKT #T>O`-r l*xx(2k-XM;, Iφ`#1_ ]vFXXLw:Q6d ,bY։x*`H=VEpىLYRRBE!! 86,= Y-&,YYYMQ@.ٟƛ5 %Y e*: !#" Z IXO#('Z@e?ZTa&@=a-}BYD8彴h\HܙM]փQB ( Yx ]CqƄX$(ݙ#h@V8>7Dw,?XZ#҅}DM[V&[E*:9Xv7Уݕ]VVhx=-ޅ]؏t__\^=d~08*$ H)hA~>CcmRUpx%,h.?T>2hYhhh>[xŲꆨB"lV㇈f:C"E - !+mZr5[j ?VWP[|n@Πь>َsN= kfp V^ ɣiݎuNf. JA nӛnodf#M}c;߬(ؑܪ5!VnݔX+|jSp(m.{[U ji@c`])86cˡ2.*h۴&>P]@Po)Bg@[ y߭p _jEq qx#b[%cPnSӮj"4c*oipn gRڳjZE;7Ui)tnh.=K 0OtLN"~n6^SWK8}bO햺?œӪ&{A'= *[ot'!cXtp g+rӛ=@"-TsnVc󓿕nsnPm_[P&W[fbPv&WvAeADD1f4D Xdvf]I?AFCDH5dks ]xPV*9iZg_IRA$C`~UQMTA $Aoe tA%l\4!TaFXv$@ŹXڪK.DfG z씌 ALNT'PMPE.k]wc~}’|'Hp'kY$ހ;(DfĮ {Y*rQڴm;Aj"\G4,csܱȧI{)f',8X1&J&dI`1C6QnrstEؗ*zt ⵣM/1TAQ]B*H*Q5ܠծr+_Ui6$`4TLvA)58ebR4ZMG3L)1q|iRw4dOÁ R?wDIP 6G:P T!̪&Ѫ~tJ"j[J jH+Q"7*DeQ֕.wJrM(Ț[uCER@@S.mx)h%M䑪Dm1Fkp̛l_k覺-(& ?&^UJ\h, f(+[yWƙp[%*87H#9!;=YY SHR)q odAbCiĆE~k$x!#Y6FGmHlزs-QˆIs;N/ߛa#栵StFyڕ;,ڄɼ@7pԪ%=FZVXS:׺&\iI'/EN=^יoT ~ҷeOgtE$œG>6D@eBHZ b!ad-|U jDr[ox.@B2B4!`9BtIc=y{YrcT:@X_/BD[̙Ua#Cda mgCVXY S~qrF5 -(Cfqܨ)DhhC+8D&4D&^C)CqZCA u &-4 <QAbGpBT&DB~F\Q"R@b0 ~ @d]ɣ k IV RD )݆sۇy==EI̫WYLr^՝jf(,ĕiimD@ ėB|i(̀llzDBBBȎZD\ @-©Щc@-C8*B@ЀԚ@$2-DBnve‏֟B\,jmB `A T]!E,(T0 ;ʆ,z_ n@28@ƞa0n0Dm<@ՑA,\ nkZ!=@<@GTA(|!`<@I+ld@T/\/fMKjULK$Ay;R "Pmn©Ug&ͪ"0Clϲأ,21+Ž6,3*/&`,΀.4.iI-mie2 _jvlw0/]J-ӬoRr bI^FeHK.LV0SVoΰr1,B@Ma|B1~AK;=a]^Mr1~hѪ$zKC+|i \^(oP600>p LpC@B(-@ĥr,VpC, #++,d.CB h2c)\) 7042IQ3[3ab3ƭ@2ˡ'aoG"1 3q'K/ gL;;DC@1 j5@pJT(M4#/"GaIqG #PFrBwDB`rC:sdA.DOf( 4!&A6 2 ,`lj,,.6Xdp9uCku[K5U[auY CB9  ^iA-p8 ((7-ym1Fp 0Ʈ!_ˀ_ OcGdsB08/PQ'Z1N6,oQ?dIBa$nOW"sm m߄NLʴzt /arOH/DvĿhj[ vXYHOH)2 Ktn(ä?!#o@ԴWyXql/R)H -dBӎZ9AFpcI3Cm 7ɂ+sB `366Ą//GZ]@dZm-mC@-D3T D!3/+$5T73-&p*B(g:@@ZI@P87xP+ăKTx(0AF @#@`"A@pJ!3uDBй#N9$J:?oɁN+H:x1Czb6&F깬F"zqйB(?-۳@g7.H:B@T*H&:яO>W5V#13%B{P5C2\.\Mk{8x⻾ZBi`cZ!BY':Z-l Aj)C\D3 |ɟ|Y8W/˻_!0 @<#J(@A z+(A?N=pn}b== zC{#@,:Wo8bYн @ xgB4}@8@=s}_@;'x}(AH,C79@ 4=hKk7kƗ8fbKrΌSƄ伨N;-Ls aDJˑ7JcT Q!U- j ,CC5"4UaM/m\uݕ^}E<bcKVUf֍%kՈ|$iڽ\S e Bh5 R%mIՋNT!ōLUՋ%4UEM=~:gg؆~%⊭KB(,ޘ9*cv҅X`t6Ţv\k@mveo7;*E|h@wH7 GtLg=4ڶKj[Wj"/"d9>N-Xn6M.nX7v 2ꖿjA+jlfzk+LDT~zߕF " 7SXNUsK:Wi u[9\$$SxyVь)CN6𦘎 E.E<";QUzJe:{.!Vv]Bz <~!I,#'Jh&`EyaCbQ8dBv `DB} VR aĂ#FDRĆ4~- \6)\T u,zZAjɬ|A02zA^Td&æW(A9aÄ!-$)YIK^JP:-q _U6?&^402HfXYFtW ]!7B$̂,=r˂RH .a4[(S`rHFN Z5:&.!fBZNjq$B@hȀ.T"VXyc @ ZP$O81-%ź]CF' i E;FwPRqbCh,oApӤ'գr\ Su"aLd(zM gBԒލDf_ [P +*VJ7PBjlGOUQ4UbX@KFEF:8vW+G4JB+ hUO Y`HMҴN"Z@`!ٶ~˧ VsA&Jh{$$BDr_\U_v 2VdA*G5-f^2Bd@bsU@} _,ByR4N ّv \~ВMrbh Yj/YMX~ɼ2*GgM "Mw2%~D[XJ 0AkX d'?: oQ);RW ZvHXûL#n` #dO4#J Uz?yk:w]$#F">_<_)_y˗P<8Qpyau}<_눳 3YzׯME,} `>:kGt{߄& qDWO%R G8B1+pH)z}3wV3_~Xus=藿ĂWŲ 0P#P'+p }g F?CPGKOSPW[_cPgkosPw{P P  P  P  P ǐ  P א JA[ 3l$A! Qc .nQ11 B$>Bq)([D j]-+] Dmt b`Q3b*$)r1\a(cC[)Ol( k ndA=1mZ?#k?s#US9@E9$* ::m8]M0#Rs<0M"5`@>S@ DcA#̲("ht,ubB@{GIHTzA2Bk 13kKŒ_`&4 $XUa#-o5AI&# $H! /Ts |51BRRF[B [oLIZ[]3 6"] _1W$(#( &AKDTGQ5(@@17@(a#~2('̀cRXc";@T1{4BeR 0BbbB g4,611Vc5"J>o! i B4C1a1ڒ`hѾ0/Sh6((U 3" 81#e˓\qB" hJB]6No#7O45jUj1@.`^hY/" NVJ_dt$sq=rsnC6!V tAW==7xf6j#T1s 4"1{A9ee"NC^A}0u/w'6!n6g0Buw14r-4!+1Bl QB7W H!5T!L(` )DAK"6(V q[oAm)+&p~]}}YB}[-ooW W 2t{Y(.=,:W#j$RMAuBKt}OKtQ#\!xH&1}A7b|#>!svgwyW(QxW1"P3`/B}uZ7BZ"Sёؓo3X T!#5&)wSAj#s~Jmy#+abKU,67ϊo$ohIbnx# Y'IJFW&d8(/buXXi6&(#~ MX nxy}8R1"*=8'X#H7"=c/C=U) |u"v4l@]oal]ښOa `$:'y%^!~䗋b]Y%" 1I?w3 BV2oV]#OcU!@!yXx3BX!#([(-;!0u/BrX1?Z"@}Bl9!(3/a`/tgցq %8oR; [N 25;8}#JQBE"R4E ` 5/dK {4"L.w"~Xu_¿" R<>T!1_=ܵ{X#f#4Ǘ{n@=ǃ{xo=(u$!"Dŗ((\95R\''{6ۛ##Nzǣ(ز{0"ϱ_K<&||%lDmG@3[Be//Ņ `W"1c֔ec#l#."Loa#kqjֻ;%h4eژ|C!+9B,ѻ܌sK&#ڵ#$b(ܲɇ$B}`$% ]]=%ׯDl@K#\1}@Ӆ!¡a':$ta @%~gܣa[eP=)Y( ^ ~zIB15 Z7]Zٹ"Ӄ\wBl}_ 艞3EbLʳwSKp]~:bΣ܏Z!7 `~[K?Yޥ%ZD,Ti#:=(G"4:(A҅ 0"%ʾ#>.\1 ^3>7>w"(@!`:Qw}$]!boEd\, :-9oAnrʊ\!~۶ڭ&#}#T6ܵ}=!ƚ !멟(]7/-/}O%?;#ba3#hUU# 4dHA1&P‡ yHAY3ReF }( $ ,yJF4ʜѥ4.xɳ(z 5y@cnUyy$ӧP3z@ပE5ڳ+D͸tehӪ]{+ViU4WNr5JVMEhJ,po1vIeJ™/ eMӨ5) װc˞Mm/ֻzC-[ȓ+_xsr,1#H"2hcU1Hǡ Dy 52A:3Q }]+M6jѷDqFBR%&9iAѱ_Q(KNc,ӴY LٚLM:v Q&H%! ۖtb'ܿ7q 9[1M=w8*,Qf$2r/m  yP{9EzAg:AAlF kCC` Zk'KKei/!EGdI~gl͂y[f6w9ucny`SX8蕑oXZ@ۼ$&Z' Z0qL*wJ !@':lv B)9?VNPhK>JtwSV8QDi-e)|+qVB4@' RJRhDYzȐG}fM"qې)XU A̯./qL?K;R)HF&3b.>9DI %2JuP#XDVֆOA&A0 .$(:E rx [B0gr&-bL2!?cB?AR@+BAޢrۛ KABI TNvj6 n᫰ͪd3)I7& 3@N?/TgQ#)wKahDI/Nf,.]hj3칲NwR%OJԵ)d0 WPBQE.ߐӤ4OA< *A4 zBy| gIS ւH5! D+Zq4Iĩd Ai4GIDc)g}{L9['Ux2<ധզL\5\cNḧ́ EaV!L$Jo<(u, QCq#p_bABkMܨ(kYhngڢv.Mz=Пv&jzޣD,AH!r˲L>Q *#-ߕ$QE`<Tᤈ(~r8e⬾e?=P" z¾w6+qd5t"f4P'&@y4 IrXЀR  4i1aC2Wl}N)SrJD&'yI]`x"SdƒF d0 lF%o(GȎI6$b`ܫAccԎ}ie%!~ɓSZXNmV3%gm۰!5& 0W&F` 8hyE}$ILFLHq$5ZD{^`8IK<38Ѐ$T5U(x E2PkÆ7pCe36?9dV{κ`ӜjzkFS .OLG:îB5T3ᢉ:#4Eʓ >#ZFHטێ S>\jw 9ߓ{R$A~n\8 [i`]!fWh]N7ֵtn8'Ώ d@h2(ˑWEAD`]u |t0B=0a`~@y N9t;wr6YȘ5uhEP|g p3FيF`Ey(d8~JBe?ppfyV P7f{ILsF9>~Ys=Y A[iO<~N!=A,QYR=%(x"Fy !Xٌ dP b\cM{qQ,R# czI\Ffx+ќ1myNF+Y4A h _{a2$5&!Qѹj7zЗk4.4m-2ad)hSnF A*H1S TX A6 P Pj0@tKd1)*JGpsktkjʶNKqM>epK[=ZS7vڂk-jbt*񷷐EP׵OɘYYk&;{U"n:M[ehkNG8KFV+ۓ !^4Qct[ZSP/kY|gO2{ +pyrJ[uy;п9eY#1ZjX5$sDp ۓ%{*?N23E1)YjHE `x)כTmx"s˼JLNܟwKĦjZ|L3jAG9aQ4a7bOb<iQc%X±o| 5/L=jt=!bm֋)z & $3qđ1ǾŜɞ,A.,DǦsŔe@IbXvǷPi%aȆgdzk$ĺ|<$仸$]1[$݄JQܽ4K^jA̛|Ί v[iѼ?9lk!ƊxXXe~;#ѸæCz kM<$]&}(}A Qhjb f??SǜA2k Mʕ59EY ɌQqQ#4p1$Q`b=d]̱B9OEO;^N8dž@57!AFaE FSE!ቕV Rlymٜ֚ٞhlWţa-2QcIRŘ2x%zpf̷̧]%mGі= ]}ɡ A,N,6<8gʅc/1FkOk+Zܤf9ޖ[7 t3 =mLZ}` =ߕELݷk}%Km i@  ,~XZsjPiĭ!N+QXӱ$xnp6xN٫p=n ǣvF=Yg6O㌝] u]}G5ꢞ%^`XS@{tm/@C=ɴR{.#ʻ9vp+c?Ԯ/nAb=pq-룾p׿QtFHBYmpc@=e忭p \5 / ^^=A>*Nw*q9NzՈfNqBQ߱M/ /;,JkYI:, R?T^ai-澸GT@$%|@E@}'aO Lb.jtm7HVjYѭm?@UccQ=x=ip~ytGRRQ9kPq RX_/1BQ$^|!=ުb!"MDRJ-]SL5męSN=}TPEETRMw2H|R#|H+D> (#$j)aًG^\P#|KG,#\9䀑r#&.(0C*224r@;ej֭][lڵmƝ[n޽}Lc?z(2 H+3lH?3,2)98!{L0~0D'Q$E" :Bm#7 '¦<CW,ÃD!$DBCI@Q =:1K1Fg 9:/9%*FJ#J`9X/边FJr$Ɉ,"Q4 c;LIrO?ʕ =Qe& 2@41e5ʮLJ! RK!TRO?B;;="2F#L`CW0¤ =-.o5k,{YTxkc3]opYx'yFk\[>'mn3~܄pڏMͶIqnRnw$I"=v "GtOvL:D@y4l(^do)ǻk<E"f9"! :en2 ㊐fXomT[48PUGd(B D$|\d(?x*<# C> 8w.T\M@$`\8D_t#~{g}8`#+f8a$yسC @LCY9L$lߣ%j:_ٛW: <@d J#0[{,x:_[4*(ȶ2Ad%|&A;K85@$% *,(ȷR9.,c p34<8l!:,8[P&5@C#`:z::#.[>>R<+ťy0>:Ń $=í2܊2*$jJ΀FF96eb`_`(RԴ })4?%n622щ*>֭bbv7ci8 !>!`Dbe $6C)> &4H:Ϙ˛W՝pdSd:6SFeMVAa] p[V &et_1HSFFb ż 'm"v< [e;lƝ@fRff#gvpq SrFg lEy>~ω}BC (bc2 V I~Fn Iǃ(m`hnrzh@5@HHt6~c/fDix?(`DрyN4ixfQl*jD(.R5AXfE@Љ6Xjc!Cj:iY:0 ߽5X^^IχP1P > J m.`DxQHHB!陨.fn0Zp/ *Fmƈ'EmbmؐJfGn=F0U2I-{Fˆ۰1 ."Y"bavmxF#چfȜN<9F1flC _d Ž 8n9F-!@sg|,I֘7-pD cqqn Ncex&w &У'rT hSnOMN%Ԥ"q8qx1]]j!ۃp(ًQT NڔPDW@D]t ; s>-s+0XQ,pN>fTIT:U7 ĺpI x_AN0 ؂1>j100[vki)"3HDxx-Xh2oh--vM4/*0x>?@~_GgstzBOek'7G{Y`{̴'7GWgwLJȗɧʷ'7GWgwׇؗG}pωe]GW~Bb_EIw~Oik,aW'7\6/`5 'QJ9iAt „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w- `О B03t*֬Zr+ذbǒ-k,ڴjײE+ԨQmIra AķCY)޹.l0Ċ3n182^`2fEM"4`ɪWn5زgӮm;vE*V9`n=swJ+IeioSn:ڷsWF -JT% E|SQ6ɦQnQrt]L C0Q0'L9j\x&ՑR:PjVjz+ǐ*EUP-*0*C,Ò]PtiQUTpP%D2-E%vgQɫ&e/Dpb*džtQQ0D`Q"T42l0 )'.APQ q<m צ<DٻsL./@}4bPP` BT\.D UP\½tO/۫T]I_a<@E0)Q77SIVC|xJBH4Q2>9啃ן^*1HR{A$Q"t^(.Q :qKg9wyK<F"E{CEMƖKT,>}H){=/䀯E }+dD'B+g>L+WD姃DAY'!ӄ=2,{E C(°n (\BlA׭JBuSI rB^, *@-z!R &1"4Z)R0`2PX KBpt y`"5lVE-B_K(R % ҉ol E2r"%4@<*i.K" W<2rC\8ө=(`:$^+ ҵ1ttfv Qrd7)ю`&э" Q|R6oA-%P7K0L/QģpBF)yCQU"Lʢ2Rw4nQ#e& XeH.ǖ@5NR*`լ%u(Q:9*-˥ڵ~ ⹅bl*EOfD֐&P?I`;W@lVWZ5-JCJTRk٥jc+ OnH[d(+B Ś0m[zjEHlP Kζmkrlr5\* WVlWR %ep\BW$U8w'w]Ff7-M0#,N~AX.ğe(9\p(xQ_PwpB &uO"Jh ^dȒhe#%xT`,8e_ ;D˃,9FDpB^q4##Jz"f 5Jabg<'D|ފWx96 (K{o6K7-QU'C^DS1EbRVGeUCX*pBAcBfCu>JVNlz'{DE9Qchi0 ic.KXPN`:B:D$CobD\cwwCN&Pb\~e{~((VqCP#!:IbBB]-ff9$EpM(rjB*j`X>)Fil$ >%DpibG Bav\dbDi"G6DyB`gi gC$g&٨ْ^k†1CjBjKpP~ *IQ e"MЙ"ET)*&'D()*檜|%A˧D~&-|krdYDl>d| vԧVP^i+ͤ+k_

@ڹz-`*i9D.Ɇ,vZQ@-\ٞ-ڢ%cRB&^JY^QQtl)zFI C#ѹ>D(蝞%NmWm$V3bU~~.~ϟD ^,@bޚ'Dm@`(D<̡CDb⩫LIBVP.F.o(ނB_"/)=!^HjNRPl1n+6.c=q$KC`|>00Toi\Ff?qA4%^%VD"_Ƙ/|i2n.4eA /BԆkC@g,n)!$"tl ^ƀDGgiBpD$PR`A"sCۂpC:D~NZ1W;gBp\0axX1 ;D$Aȴ%"NII}6,u D T~?i6QCl*qQuZAb$ o" "2-P ?IE(21(. H5vRnEJ&;&o宩vByFگ~b[; ,c߂!GZs[.>Att 6D[)gsClsDpqBX$#D~rBe:/;ñq+X|a4M.!A1v,(<Cl蚊f17{,eʊpDT5s73>s}YH%urˤFc_,,'ĒBUHsE}7lVTۮ(⾷HHYcıiu7B/)wJ)1>d:(6]p;BvHG7Y̨B+bu:0EnÅww78BP\[m,V}kc5jA !tuuk?xw\ܶyJjhl#;IBb h>后3|MTE=uq:Q˹ިBF:8%SB PnΏ{C/9u契^7Ƽ]D"\hJ8׹Z1(8K'=Pv#>7܂I~S}@-@| Ƞ]Q]_(<'9dTA@2ۓ;~B*A 3}KPbp?<}~ !B 0 } %gُ'//WD.>Uc@C c !f> cKT-@xK T0A Uao*0b8@'QTeK/aƔ9fM7qԹgO P0tG&UiSOF:jUWfպkט*H"!|K|u@8FQpۃF +@EzXťߺ nEqhF W> n|WIͫ:vm۷qS}xܿ>xqǑ'W@Ŧ|@녤%+[HNj*0I4lܼ$Pv2O*Kh>:%B![2@& EA- ς QLQYlCT@-%hÓ$|龃8k)!9:`G30G1:**s2%"^\GDr⬬D2J^iK2W q`LTE[ŽdTI)K1TS۰`XR i(@ `|h=o#VL7{ #@*dUaLB|$$] x 7MWueJd؍Wy{MNXrHB$!X)>`X9]I.Q䃮LaBTqYyVj>lY衉ye.Z饙n-;ԧuItꭹ믉{o.kn{hn⡆/p o/n!x9ϻ :I/ YoH)iaRyWG1㑇D9ԓ^Vm$A^h_| O?9SިSBE4NhN Nq,Rk7v$.-mrM sy@W:s7"KyE'CŚh~H'bz@X]~r`:!@%/D]havGOw |rwt $ [Q]_+z30RuL^ъwȒ<@>>?t[ I*d#CA>BԮ8:lփb#EH h~Q[ ?()I>ӏXP(8]|~şt.Q@i{nHEdIO!/C2zO!Oo,on!#H]r`$O!$@ph4/Rp #in!%fo*p! @n|κ}";"p /OpJ0 0 p ٰ 0p0p1q  1%* !,8  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\5#"K0tWɲ-r,lQn/@߀_ '7xLsסf=q/9ݚx/,pSnz!>9袷)Iκ(KB;sߞs o\у c *SS=hRB@W59&-|E7c<"Kے;N1nH9^ <xT`g).cH} &@(L W^#؂:`%Cf$hcH^LC2Hb oI)b]g =hb|XB=ۈ,(ƹ!!%(7Xd)]KV(ܤEHYʿ!)7}D<E\ H߹ux}LG*V$d*z@ˋ4~2}H0v27I3KڥS'{qՑ :*ڐdU*D(׿!a#m`UWdBXV= Zy0t&\$u!ֈ*fJCe\F n :&y2]!+rݘd35̱Zbܭ\ :u|a K r&N p[Wd.h؊ M7b+a} f!U Ql d%whP49]/|n^}H1dɉSlE\*_Y%rg\^u{Pkb9Y@kVܑ,)1b~R aYBf04Ԭ4DvÅԫ{OChՀ[?,t҉`!-K~lz555MT+1 mW5j$q33DV+Ѯ.v?N&rrnBQ7VH l-Ǧ @C= m|! &5[dMw[m|8u8E2ܑ]0g{O8!/DsUuD4i'q@Y8ݗmp߮Odcx>ynzBs| S yW`|3lDB[=&o`cH}▌?);hw=nGV{Hr31 `dX<5^ͣ[%Ok9gxzz@<۫>x{G s|}<f\3ZLև],}}FWj}!if~ w fg:8W\qGƁck\gDt$']|kwg)!E46l8QVbD#ِd'%H9U)8{,(.W1  !|DUaWmT|GM{'BD;ՆH$ [ =8a@eԨ8Ry3I7YUэ CibWu ე3A~#%k eM+;a 5јfGGDrp;<0CcЖ QvH怒sQS5CW@"1u3{$HÙwasZ67h99BٚO8Qm7 ``SYex@ӜPzYgvqF;8):/yJi2> S !AsӀšqCyO)hNNqchG9;u ~Q5q NJ hiJGY +crSi2jd\m7bT5ѣs6$-(JovO(`LyzsS3$gҦ:e!}ĥMĚ]4uZD᧩Y1I-:HGZ;ZJ7Z A*PA!샞!# qOvpԛZQtɊQ"h8rv# qNjPĤz*fFJ7z3;-Ij >q:7Jך܊<"Ǝcr$Qq㨥鸤AhlT0;9&~L(f*`kk-ᲔC@ѱ##%{M7;`K9d 8)I9j3u5W8;k}eaX*aAz*8ࢊ#4sWIϖ3q\K7ЯtD,;u o+!X3&1as9RלXiA;7B 9K7WKRYiuW 󸉃qDAK9뺗jKVaHD[[ ʒFɛFjɵIDwK3IDʹ:O;iw4S”srytO6 zK(:.0a+JLaW נjqf?“ ܛk7\l 6ZK,7JƨJu{{q:{:l?|A<HCJ|4Tz #mtD^ܓKYڙ8 tNVmi[WK֯֘e|; X|8 &V) g#xؔc}Tc7#&ʆM.x,bM]ۺ iCmlLnܦS͵Gr6PxP4b,7c`^l?+!#[|\;?M|'D*w m:+=9 tKm2;+Q#BL=R ;mJ0TM9 :;=;L8M0`"9>G=8*,sK= ٓsC+m79彰#QrC[KG cۉA:7m@J1ȺU4MqSܽcSIM.0`:hײ•j WCkϨߞl#%j)^GYi O.tC[NN3n逌oOM rqw<81P:C^!schiF>| V|2۴+.M9\D$LFoA:%?7 [o:ym+]- ̄Utrg$u|փ1_^N9/8;WP Зo _\oߕ:9B0Pyz|? ԐCV.$ʼgA;[t&aA@ D Q`$^Dƍ=ÑcI ث0PMr" k?EPNYI 1( ^ZU]?4ZXfEVZmݾW\uśW^}|5RZe=)$2@薿 :=ksF:79n&*AWXUϝN!紝6JUq4UOsyfp ~cLUctk O gxK&_|ǟ_~W :܋H"J=N &kh@Ԍ'\ˎ'rɩGr*QZm Vj͡V£!3 A\8PЩjz *B, yB¨"/˪<hĖ2L6L3D3M5dM7ǵNArK˩kKO~lB:0K'a"3’jrJ>9 &&!EaԤI"OlFƐJ )V:u*t"SL/Q:Y}Zk6[m68!\+,t&T.[#Vu%Ȣ(ѿZ:-ըPRl!GU YWPX*b'ZQaꐧ[W(%ҙયaJ8%Y<}:h&hVP gJZ([ wuy^g f$M5Efh\yQj~yO;:=Ibb(q^_YҨ7/W{F/&},fu_=ǵ=>9"2ٚ)r_iPpȖh6m2Kڸ`w I^I귥K(WEoO=PJD>.[;ta^S$; VЂ`]؎-y(U%~mj B1P⼽P!{p9+'O=|ZR‡$jBSҨDQIr"A %t[bCt%D_0" ( юwcxjrdcK&ķPc+J DMW0^Ȉ&SI&E`2><^UA%rJ$EWAJ~A!"W9%a/K20l љτf4>~ďmq˲?te|mQOv)DGGDxAF(%ڄ 8BDQ) 'FSNxэHoxjbda2- t{?|޻`+d>}W_pb $җJ,0~ }w.[-_$%/K7rxdF 5@6 5[j;ۯ *l@H<A?@܈ 輄#?0@P@73= C?8AS}C ;$AsBiic 3n6BT5d z 03S $™CT?ﳨ8CI04D<}C27ג T;CӄPQ$R4Skٕڍ_7ڙ͊H5HuI~Ҿ iT HC#;1ݖԋ?e8F]4-ݰ} u5+H\Dф``zYxׅLk\Eν[HdxBҊ "ݝ GEͨ`޼-U*&Յ4ⒸcʀȆ au]PbNE]θ]Z; mlCFd9b1f],C?_T 9VyF4=ؾfh(B l7&➏fq6Qn. {DܤnqZvkζ%n ~VSѣQ?&5ƙv6C6Xhަ95Z(u; mx>Ehip.!;< mceo6po\ òocұS(]K ޒOw $cqPpl.rn + .>q>aX-fqw7o-M&>pĊ '눑,2&'\pϞ p԰0oR(ggM'6SGu [&{ >Hʊ&rHlÐ!&u|GG+MU YwJgIfe \ RWNpkҥ0vGwRziijdc>Nj;?WsaSͧk_(v'0@/7P牽R{ss&N]v4FXqxثXz8zDlnϊ?^kOO|@(7j z }~s6NUzz{W߷n]V.,h A<2lp ˆ98h7r8"Ȑ h`NJ%e/,ga4.r΃>5'Ҥ/q(QR-fժ9sWfzs*ذ>vպլUjײm-ܸrҭk.޼zW$Q'5T01f+䕨p%c.)% *VHA:N8!:6![S W:-W]E":d=%>;Ǔ/o<׳lv1$A`pskS]f~I~ݷ`WOKb#2%Y]pV=%@!j9tj-uYw^hDB2 9$Ey$I*$M2THSGW/3FB$ۍa\TT"`_7Ԡ[ٸefQKRe[[AvLo4D\Q+!!(3ԎANz**jE8T*5o ^gM; \}'@*Ё=(BЅ2}(D#*щR(F3эr(HC*ґ&=)J򸔲.&¦Ҵ6ե5d>ee=czC8)4PM\am)`A.@ gA#l H0]$ӵzuةE?@<X̡ ~K6 T nIy `X< Z#4ASb B+[C `,c}K=S׆'L,! qR`d16e! FrH>H|9A)'=@75nS0:$:uꌐN-5P,H ɐERdld)Ȝ$Q+#MMd.fWL0H3d A\mؤnH2e$Qǫ k*tpsi"P*$x1Ad19)HmmG[HX.ȩ1exlBpt<@lBos>AbjY$+7k%Bh0Ax엳@F>֐yyxDz[Q!1Nl~7O==n n [==nCZ6AƺB [mc L#w3M!˱CL$ vҁ]stBx,3q[wc|pA%fq#_tG 7o'Rߋ 0s .RAHt )qgC2R'O qE~GL]OZ$'R_I&;zݍ CEb\!ED B qmp]"ρ\B ^A@^mYDHٹ[1DNmD-4`Au]ESu!U x`E}1VD Q!ԩ_A_O ǍC^٠huAP=!\gWz,ձE-]D #BFn!i}5KM!Wpa"!zB!xaD`" Ǚ-Oi"DK !Dʑ*DNA?4a@`AC ATYǝGxbCR23G 7F,":9D6/T|_";:D6#x2E-]Dp@$$jbB 1'FD|đݐRy]E0YD* 5,$x :t@!MuķdrܤG0H A>TF:5F4w,Fc!@2V2eH<P%ZNE[U^d]b9 "[|YN"?d"%TQCF,M&~G=} RPdDwbU5ʤHqMaXa]IXXRtN\荙R|hՠjddMbPLB#"{8%A4CLCál\dEe]m҄Ew"f^^D G?"u21HϘCy bHLܧx^A`oAU>+9FK'IM5I{^tylIDxSDXWCHL"FA`?8nͿjL!֠G (PJhZD)!D$Aq:R懌Z HHicNEUCNZYih8&RÙ10EIkZ"C()(He݌*g",9XEܪ5̍R%^$C5$XT"*5H*OP*M.T°IK0Rw"w|chEX<2D8Ii(I$?(imÈgHp)&C>M8UMve_!]D,V= h&Y B#+vCeZ+RMlPVRDŁi6􂄺t Ld-@I=>" _00DMeR^ #Y.*&A0q[),AlC6Z2&j .,r(\t6DgK+E/8-q鲋VD9iUDD=16V&@f[ł m!WDZ DP3,1^n B-KC i4C@GNAdvStx清%r9{-Ur!^DaF]DDz6֦JbO01N4+G(P!JtD*5JATPwVK'wP4M)!lPYm!.q  G e-It2W.B`&RK_R,TdftM~,:2ŰLWޣ& u]f1vTe3ud$F }J+S 툆K<\_ ԁ6+_ݩXx(a u3[WUeF9_sGtzH\PEu@ŽAP3ʲBnʪC4 =cuqsG DB&T$* ۲iRDqnkZ7:r-:cE\qVD`Eb1D$dXT@l>h՛9QFu9{1UE7m't0vO3X7T40`LtXDp…;hAp5^.@lSBF5EoDUgU7|`FWdHǹ3Kh̦Gwh(^ #w$ֳ yoT!Z $IgGtBD,@lDSzrydkE71dwFe:Əi աdj#j*bFzuױg׾{w?|yѧW=` {t7\!+,^!͹ (<+(J?dbIH( *2Sf *ګ ,$EB#D6:s(RʣAn@:L(ƌ>c)曫Ƃȍvȅ 2(,:mʬXBB&̮H˄< "(!D e&̡O6J!=+"!A+sO\x2„JJ2Qt*hûK29DU|)7Qq]y_ Va-c%΄$1RK 4r"]FUHN.\kh0U+T$kԺ{G7#hB:@: 72"4(۱"hdπ"P)BIgل*EwΐYZHi@8q[XeQ % i _0~HȦ7BsviчvJ\١B@: EC↳;kUd$NO\o!>U!G 6z`R zόVDLkf]X=ԨC%+UH.*^׽O- [E ;,s;lZ`; B& ᔶ(n{_V/;F{474yVpC=C kBIC։,!tR?0!YÈЪ*"ĉLw̗K!VV0{jlʺV4b!LLJ:Fx  UI hF@0/BةŬ [F:l-?WHC@PEO "8%FkX 5Jd~åGBՐ!)Cȷ(K4d[<ָB-x-s!8iN<3)D}?ŰTYC9 L~hYC|F4m&,ƒfgD%7z2x!```|F,RSd*bK@ס(FmV!cE !K!ٴRF1)BTʠE ضR2;XQuD=:zdnd<큗SQ̂$ $B{^o7NGN^/c݉E7=d!koL qYWa @ c,H ڝ&(F 6 ;[ c:V<5_1ctj }z_ZuaJ2M#Z\œN)x 1T7sU{HyE.@MӅӊWrI̶v fTf:g|$򵱝mmo /S+w:myo;9FPxXC;FeT55#=s0#RSTo DIa޹_f,4>.:"#ԭEBH/w.ު v 20fb!h (&.*0s"7d.{Q>eBL@2B,!"ټyЮNfD (,Z!Jnb|odk͞+9X {in #iT0Nl¬8D^BP)4!1%q!'\zmz!m~4* 0#]kBb1ɼ L#~BHhblh0H f 1 9$!$ϓ!&\ qL%(饮 92~rOZ% ( b.pď"$/8h͔! |ôGE#%\N:>($M$Q2%C[ C"nq$j$ b3C th?%F,1 ЬGm;Q:S#0 iB nԺ|)7=4]u]nZDns+HJ, 3a{, kfUfG)(?(S*0z2582YFv^bBV{P /EtօG-q%P /"^@ѬBMj$p1Y `b!Py~oECHvJV ->:9hc3 eKDYQ#%h.!uXNl۵nnX.jS -94VGZ/,[I5Ega O?3Y^/YTt0SZP~L%"5pK[(&rV`"ng9e42Bbp,}&dx4(.:$m}wnj0 % I,d7FNb^Mw^x 1g'@6o7w#R M#/D3~v0cюmv +,ZfAC٧"`^M0 )sW10[070 3YJ-QTYK?t˷uV!4Ȑ8!QTݸI!_Q^M0h~+n0@G_hO "Ȭ l*fҎL`0]h7#(H5Bh1Y4 !:%Yy!`b3%tO_Xw "o/e..)1!bU[%:Gȅb[ g'= &ޕxZ 'A␬M?%We'302˚d?c Cc茩]L\PRvܶ2le"MnM-YU4~k#mfp5hzmt+::$3,npN'z9ӕׅR & 7AP W 7Z;bY QKbY࡙AQP]T)G=z蛋B#Jloqs =\ ź4f`+bs3E z_HRF##(tn=Q!.(U=H#'hVE~i%ZP#|ftY6[QC!Bczq:$n=Q<'QbZyQ&/ FlIhrkU eeVX{0@)8"i"af*#Te1 A*5 #!i: ;Fd/!;)Y7QWCWzM&NG o%2YR@XYYbe(1/a$ <3jH|k"RR4_|E^JB "sܩ5*đHPV[,nf+:|7Qr;qU؍oLTmY֖ $Ơ%izʤ(%[z|#2E4=ra! k9}Z#&u0JQ<(Nq%7[dCPႜHVK;%c FeWa$i2FM6x*pա&nH~JEpK.\#W]!iEdv7v}U8$fFaUR\wI`QF3|}(j8m~޴ 6J% d"SR\e$b4"(a p:C&/*j {$|̈́T\` 2t^ͽy;f<"΁*ο.%kj$i\ff"!0mcSN) 'md#^x^ X=2b,I(xnEfb  ,… _BF0Bk1rȦ0Co-C|`涌,HK5-iΡD>J11o 1W4ԩTu鳪֭\z 6رd˚=6ڵlۺ} 7ܹtuws^#TcT9l!χ{LM ~The<<ճ7,}z0S nn W5{z:,XHlմBcp81m-CSs-|T?n" fT<o\wPr4Yge^d Mҕ9EG`ݹ ]QT2 UVd4pB&ZU|]8jABdAAKqP]bPVne^~ fbIfffcQWbZARbHRe#ai1ҍ]B4y*L# WHi#eXBU6cHS\pTVuTAPiGk]uS)䎢pT qgq )NRrnH2d: B(YWړޔL0-Pǡ\5uPD2-_Q:9VKJ IpQUVnZQȩKC$l*r. s2Ls}RUՃ%R/ sﮏaӼ=ҔA( k](kZ\w #0V &DW@;FjN,<5Q7NC/M \=5NŲS5.EiiF$ 08f~BS"0:Ag=q:y[$gre A1)[ 11Ơ4Z,QPmxxܮU0jsKLA ZhTaHTsOߏOΡ+8< xxD"  Bb0>$C؃T Әt4MoӜR=C u~;PB6ݱ g;S ըJuTU'O1#WT~zI)ִulm[ ׄ>/KWԈ`ySVɐ;i )/H68Ɉ mh k%Ck&R/ɀRh0Ix)5d=)8Cـ@ɓD Mio ɐ WS}]yV^)jcgkzm~{Sgs~Fy~ }z )Iiɘ阏 )Iiə陟 )IiWc2R}gY)$PV/w@u@`Wm]U ! `ɝ|-Wro. w i-)U69wր. R#cU U0nGx6~6С:N\dK$_+>1á!ڢ+ Sja D A^! @*M7.S N*+jgՔfTqX:=h_ZbDn! Ngɰ`QaSH!*rQէ, JzT;Ћ 6~4=RbfC 1S qZ! ;l[#1p䆣EiRZy<7.1\5PtQ0TAyEѫ6X/1qTL%0%(U S~ Q[.ќ7!: 13U |DQɹe9)!!q4ARѯAy‘daĨ::g1V몭:GkĪy` ++c#jbӁZᎀ%$a Z9@HGȄ:! AAmѢEqD[YK^+`RS\-!'#;glֳ)S(E貹 D  p PE7J ۨ 1R$72<EKJ!QSۉoṱyԺK[Z$бA)V8ĻH * >P$IiVмB 1 T1:0;_tAm)JB`k򛼦K9[ iL Ekpkۣk5;ѻ1;afm8kygա42A|, &q,=P1lj%(Vs5ɟ8ꌻu913SqqB&hoc 'ٰ#l2n8c{ɡ#1[¼U(| ʹ|F2n2c%zV#4%U\IS;49lX3ڼ @7A["dA6&+\D q>uK.moQ`'mَJ[PQ1$a2ORcFs#ɳ ?lS]UJ&V~XqKsXNZNWzA >ñJ >Rys<꿈H"鯃f^8wJ0%tӼi4q^ KS- PG(5g >ꀎҒgzZd#)<`G3_j%&/ K -&;NN^\va>9z]1mZZs()^$jT.7)S𺡣7>ID>m/@ oR=y@|6IfqcUjW6KY\:&U~G*qDM=]AfnExpR¨DD1Q|;rc r_IAl@8Z-nѽo&1",/+\RǓ#1N {AcÆ$XE`A=.&^iX)w Lʉ\>4qs3uqǐ#KL&–<LT)C>9fbz  Y:+DT=Ď1LcXsJǩ&Yl· NDEU$MBS`zLPM$Pe3K 9xb/oXB\<bئdʖ1Ctv63?1^%^qɕ/gsѥO^uٵoNw 1xB N\h\+¾4ɛKp>^'؍~Iʪ@(0{=0j4BH&jL$tŽ, *! 9h'o+DŽ\Ϊz++zS%@KH0`' bS::`Ƀ|s4`lJ͚Ox눃KKlMtLPB;2#OEH#tRJ+RL3tSN;T#6xH4G{H(?BJl*rObňV&5W|CDoԨFH)?ȝSv[nQuam2!d;FK$qw vP(E#H]B^ >.ǜ#BPy!Έs Q3H8n IFywaB;7ԳC-Um{[V=h),@1E¦r#Z}hŝz m*rV59BD!BՍ#х uf]`עeSkNgf גiF;{lr0ZAM[\δ5%CZAaז#&qM|b?Gdκo .Jޭ[:玢.pGс^Dk/AZ$dA#1W./b4@~N\S:I+Ç0iu9ᷕ1f ݰC'Zыftu˽c]e x`-4ƭ㕑3N;r@6eOƈvg/[ԥB z2dTc5g~H$[fv#$B@3d6͖OZ@(-Bb kuwhC:h|[܁frHB$ˉSZo"#~ĕZ,IkrD8ǡll` pq M veMҎ !p.PM[\a//Jn6,zz׽uwᑶjuxȀk0;%|5A:s>ƭw."}f?t)sGnJfrѽCRaN͕󦴯J< - fs}sn Խ }}{_;k]2ƭ!kUKJn\;A:c%G/[م/]?r ~I)b%+Vb #(§[!;[:k:qպ={@>@ ~s.ҩ-.{T؂-23z@3w#ʎS h[@"?XH!"\"#+܎ɛswN V*0Š5TC?10ٚ-@1:  CD۽ ̎z N"@|DHDI 3ۏ;=3 Gui $gP\S?=hlXKB x YE[`A8F<¿/'/jܓOuQjȶs+;t@1Auʒ0^^H՛TǪث0p2=D4D<HLL!8BG@X1h#t-1 $T&<}B¡Mil DͷMMܨHk}j`F>%ndXM\ UCh{j|VGLbX3Gh}YM(?͆G`} ؂&]LC7D,u $`GdpX-P U[תʳc4&sԷ*F1sh26Mc<|+Uc?c@^ZA}ZG dG~ddJdKƤ:0|3 L-xK.eS"S^eVnp-YsUcY,[FfhfY8ifkflfmmfpgqgrL]-gu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhhhhhhhhii.i>iNi^ini~iiiiiiiiiH!(j>jFڠnj~j~d׍j䨾jj,jkD;ReNk^k"=6涮kkGkV.Uhk!k>lNltnLdSlʮlˮDOn`lfj`왨DńllFOYBh$BP)wBX(Tm/nDbxnf⃌FO^lmf >X( Vnn oӢWi͢}. p#]X3@ooTlm p ppap.dtbN։rp.qԗC09 SK[ 6aw𞄈ko q = d Ϸo?q&o`(;OúԑrШq5ӯvjR=rpoRr's;#Qj!nMB[)BPܻ޻[Axt{-@^3uܣt~U~9BG/_}e#7Zuи_߿0W\GIy]dyjzI/I혃`!!Ar니2T o@E2  {1BEm!6Ix5̋#B6 6zz]l.Ta`"jMih_Y@ F!de<2"2$! iCnIrDG-yv͊[Ѣ8I eH2F8Ѝ'`9"uy,RGi[2%/8z[$hGf$ ]iЋH)BKkP>bi%ɳjic/is3\g\SJw5dR腛 <.Fs,&]ĩrTӠA(;+jыb4(N!i)AvO(zl?mJI3$`DՒJPi> &~9|d)Gjԣ"5J;2ρX")jxLsJ-3P$3)#aֳ5UNJV1$|zYUz5+[׿6lȷJJu!VR`U%|$*NŗR.k]HQtYH6z: \XdA̞/g08^H df[5FFRBa?ۅWZՔ5E7$Ͱ9q޲!)$\a `rC bj!x 9b{)=;k&  R`kީ>ݑq<@M cϊ'fEs,7Mufk&twQA"mƩ1CM&m}_?~>/Y;p\D$_) "z `9$`&{Z_l (Bq&( !C6\BpA R JAae^1Z!F=YJa_>V^\e!a!~\]!aa]YD͡y% aaDZDɑy "Bb$J9D*N"lvb((~܇TXË*b+" , )g-b..!/c0 0#vZ1*22c3:3Bc4J4Rc5Z5bc6j6rc7z7c88c99c::c;;c<>c??d@ @dAA"dB*B2dC:CBdDJDRdEz, iBYGdH$|Aq,dJJ"#Cpɍ;);A aTNTk9 BދZp2lWp:RlŦZZrl<#A=‹ZCFB2 ꞔ%v7FW@!B0dCA -l-j"m^, A )RmV#VjbK= z6j" L٢-/FvKm܆b#l !m\TAnaml(=@fnZgr9 [2F#n^jB`ޟ2~[nDX_DEoa >ƒ2*Bz2eboBW")bXioBoTx/^0<@]&ʞoRq//^$,p@,.kTR+Fz(KBɃZRp{0!殽`- a*rnݙp ϚK= 0 ) *bq.CfqKSq[cqksq{qqqqqqqqr r!!#r"+"3r#;2-a^$KA$@#k&ihmRrr)*",GɂO)20.R!.r.+f\e]奤Ne`]]f2~d0M47輁ZJ.^H4e5E2˥J92e3r7pr(p:ef=ӏ2ȚL]̲#a48i鳠s;krriv_ZfAl4At%4CPEI+c04}kƅDkn)Gǩ[D=dA w/;T4IwD$);._Rda:L{ &o:! E13¼%}ĩP*FG^$箭h ]@GDMΦhiAPlT >m@*vG7B4-}yivT{aʥ0Hhb)!PS4N+'Y<~׾PJCZ>&M3AW=BU>[Hf/E) zD Y~!|<n_[kc?AЪk.Z'D aB tz@cCs$&"ĨJ-INcѡąQB[h^8XhyC+kfCM#.SS7F,NӷEܚ!턈̓P>kiEb CȫY3#"hB:BKM U;t%MHǁNUR:zTJb2 ?u\15@a?uSO>pr=t]]sThQVVGQvy#HBp1-h7:%Z!#颉miGuR*uMQ깵9a""L%2+aܩ!MV>g%`bްxb>RMsuZX~aB &Bݰ>^sM(ށ ٢H[mXjZk6-rZi-b<.Wz*r27_8h'B|:dwV=nFQz?_z nQB2<%ALΜ2LS]+#:yF4|BJof5fLNfSm)BOAPC>ddj+ghSo/"Re'A%ME\(?!A)L8q -' [Қoy ٫q1Jz0 0\(;(#`z 3w52s '8Q N4bPa5_63.Ab Vda55%h6q%"\ z!z43823{3=4:H4H5B53:}ssGz"3s;y;3z  *s1ATA42zk1k%Ty&\J:BfC(1l DKDO.ADUf @EK3.FkFo4F @zGHTH &'Fqg0TJJJb-#;J_HKǔLLyy"MNTN[2y OOO?24yh&J QUQA!QF;9'S3US7z>1>9TKTOUSUUWU[U_VcUVgVkVoWsUWwW{WXUXXXYUYYYZUZZZ[U[[[\U\Ǖ\\]U]ו]]^U^^^_U_ _ɴ__v_a)B56a:,alL+vb3VcAW>,zI_JK.qc[]ocMckITeIsJ&LJ\hUMcv7+:ٔL.3hZ`5rj ~2f;bzak}VjDll62Tt#muT!#nunʖ/akF0v.0CFp amlrei!1fYe)ʃ$s""tv,$D7/ְ#H1R:u#Rm:7>7r{;Qc,cYb"I77'ByfgCz*˺ v#{j{"3x w7#/Wb+WKz"(vUlJ 6Jw.—1.w{#C}"q[l };T!Pⷛ`<7쐻v<'ؔdSZ-bek%"|0Y{ " ,' …=*rY3.PV8fI x2l#Q"Wh*0.iGH!؇ K8 jwlĘ 8!n JvRqWim"~Q)͉Ih8Jz? u5yr. Ԕ_Dْo Ym" It"2_vH~ =J82พ ʙK+ 7fY_-vx@x#Y7h0XIJO\Y.0y<wxʞKiYlz'mw4'Ζa \`  1iW%8Hr#vPoH ad8{ >Nb[lVmj ,8`b o80t"AU5b[S-PA @tI` xtM n: ҏ7 ળ.ʭ@v`: 9w ZtBuzhA!Xzpq@9{`,ZO15.<:@{{>;ˍ|78d!AN!j Yx#gSXj1{tnOE=r"ofPNIL2T_S"2F$ #j jL0.m"~,xt꡽ۑ-ʾ.c+K"ۘ5#;@ *$tSܽ75|"8\ %۳R!b -}KK!*ܔڷ7!b€ndav obЏ)BˏS@@_%duvJ!{6%# 6" E8QF4ݜZz9p#$$ ;CQaͧЧ}*&3B b$%k]0-k;Bc$i-Yɿ-*ftc}- Tqͧy!6%zCX8ZGD\bL.|(tS;[&-}7ۙ,JݣR,C[)%ʹ)}" %!7rva4E|km& I[⧬a*>. *^+ӹF[j꽱E߂~Fvvנ!&4Y Ԉ$>1-")h*\oS"y޹*0)H`y[z!B(#xtI[!Y_.)bI)}!TrJRŷ !^%?*d"|D)YeW|0d$ ᑶA qfÔ=w͔u z-*L(lH,T E!hPS! *kd ˗0_JBS0kސ*HN%iD$eT0Rz]LӢӉ$È$+juV?IZTKB4PA? Z lOAv\4|LY|fՊGϞ3n~qi"cڌkVN4$܅”њE<[^Nȓ+_μУKNسkν7GXjeH,aFqaSV(IMR$mbL;TN3HS.!rlLn8H49\*0!+dB߸g>OH tԥK: s! ; Fp %zAdnǹdvaL-+^M-V n$ꇞAj%>Dy*E~q7˲a~̧8d~|v7yz ؀ [3) tQp1ckAz miTy$h/mvT_y%.~$Wzp'JE."RAۗkGU8'AvfKufcq[vSwYT_-g 1qLj0 mgLLY#ddž#N) 9ywla(vyxCCxP! (0wQg4\I%e'_0W=DS`:j T= V854W7bUFThki$wsHp]`bc xPx?Cށ~ᢗڹٝ— ϹoPfAp94h[t?hUUaI igo*t8k`4gq{~vP&Mq(OlSH$ J_ z^dʓ=xyH&ڇ5 k` 3T:<ڣ*eII4WL|c{)s1=uJ2Y/s;bSZr7tDe7#3=AfT}=IUS=A9WiSƦαlf0Aa5ʢh>Zz At۱vW4 c$L 13#7,HguN/;.11=mC`h]:ǁU :Au z&ź.*c*џQQN*n:Z)Z=܁aJ\ʪ\4L'_Z<˴\@Ƈa˺4I\[{\ ao'̛b p['|؜ڼ<\|<\|=]} =]} "=$]&}(*,.02=4]@ .:fx lB=D]B$ FNP-,AQ}XZmLհ`b f=DPvιLJZHj]v qԟ q=u=9-1(׆]|x}֓Ka}zv=֔]XT"aB>ԣ/F~qݑ!ammٶ}Ԍ!I"xh FS:%XWaU}$uB^$"()s:4m #*jV7}l [="i 4Aޙ(Za=ndž'sͿ.rBV*7is| n$=a#n ^8,|R upw8|n*5AR[8 ́gMnOb>,>DGhV W.|&-*r^v>wZ]gw~OJ戞菼q4tjXJ "A9U!j.g^3?x NX4tP!}rY((90.=`AG~oSpAfmvl @]Po5kWj +q+N[9쀭^>nzȞ 8Logv\;!9طbnsNÑ#vP'sR@ڗq Jì_(h&PAb&+  ',1-/#?kCT_:^v2ta8z=m'\yסd_}~gLd{'Z`tw:F fbR +Qň|V?#sn1CG0n"v:'6Xk4Tݮ! y ,l!JKo_Y.hr.1D}_=vvS3?j>#4tnp u "nLq1 ^9[X=_~1oMܲPD8QZᛅMDRJ-]SL5męSN=}TPEETRM>UT4-|P`i`Ub NI0EP$ Mưx^Q0dyEFY&3.Ha6o,XOK$#C3j/M8w`݄UmƝ[n޽}\pōG\yz #=앖Wdimف[Z{G႗B& \=!x"!&h?^没+B%s&Bdz$@8M"P".Ld!z0Sl>"M!!"\hdE{BCC~2H!$H#D2I%dI'O2'J)-"HJ)/N4"+KX&ń lJ04 ă#(C(2cK%*B$BEDÅNG΃Z͋S|Y:Vݓ=hΣXZMEhR\Q^heCj:kk@gQ!~ࢲtlXl |icPR:^HVnv{]&0\!"!WjvF ӄƈ(c-GuG?}g}R=-\c)~+} qG:􄷶($` |1Ϙ1FsPq/[`@x}'Da UBЅIMl ?wuL⻔$ MB. D2d/?\}(0_c8F2ь+!,yC0 _bD q:kwAqhR|xw X3VҒd&5[1HK'2,r$1DxQ٣Q692GEq^yFHp=譑b+hKV2f49MjVӚHAHp*$zs#(RWL3)GX\ʁHt/ s K?5e"fBP6ԡf̦ YA !?$0}Izwq! $$9H?Fɑnd! /;*jP:TubPҡ*^Ta9$U(|%[RQBĂ[]Đ SRpΊbUi.Ӑծwk^Wįx8 YC!A tYKw6*ՠR+(!,N{N+kjUZֵֶ4ހ0BqN+ĠcprVBp+ظbu%fs BCsO[Z,M:wp%s}(Xo|;_@5̑ TDb ]dnsx'bp<%նB+ Kko`|nmr IǴ;Èsǻ5xe>s@ QTWbt ]l]f19r,<$B߲ ]o|^HT-]ov>v=bxnda@Z&C~6Y]@GI=d:*1#@#WEnx~ {k-s5yWeOכ}Wq؞pK#G~|?q:V=3~o` B?~H%FaD"~?XWz,*s!Tdt/r yClz+)Tdt0^8G<  !$"4#D$T%d&t'()*+,-./01$243D4T5d6t789:;<=>?@A$B4CtY(E|SCHI,BDrLMA<PQ AO3RDTT4ŃUXkEd[\+ ӈW`a5kH[#dTe/:fhF°OkllFmoK r4s\Audv\@wyǫz|G1X}ȀUDȄTH=𶅄ȈHhȚȋȌ ȏɞP14ɓDIH4#&=KɗɌ4|[ɛɈȰɜɟH3[ʢ4Jvt ʣdʦƊ܈tʩJb-<ʭ|ŪʯůZ9$˲EtIT˵E|H˸D{8˻ IJ+˾C8'lK#TL5ܘdYDŽL0$,HʴL&-L$M L.DMLItdHY^d(IߴZH$̾Z"T弽V|K;O$n΁:<O9lr DTdt%5EUeu LEdDGN5} KDe] SEEV;ՉZJuZtL %"E ^ʼnN#e&5F@&R uFx)R"(.Qn0q2Qu44uQxT6={t8~9S -H8;Su>T ʺ B=P4DUБMEu\I &HGTIԐKɡPOMS ϤTeJhXΫ$1J\N\Q]UD_Va5VcUV˰ZgM,'h4L@jlmќoq5sUW,uuW\Myye؜ڔۤ}eZF׀=J؂J4؄؍RuX%}؉5N،,O؏ِّ%ْ5ٓEٔUٕeٖuٜٟٗ٘ٙٚٛٝٞڠڡ%ڢ5ڣEڤUڥeڦuڧڨکڪګڬڭڮگ۰۱%۲5۳E۴U۵e۶u۷۸۹ۺۻۼ۽۾ۿ%5EUeuDžȕɥʵ%5EUeuׅؕ٥ڵ%5EUeu%5EUeu`% ;json-3.11.3/docs/mkdocs/000077500000000000000000000000001453145653700147755ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/Makefile000066400000000000000000000017321453145653700164400ustar00rootroot00000000000000# serve the site locally serve: prepare_files style_check venv/bin/mkdocs serve serve_dirty: prepare_files style_check venv/bin/mkdocs serve --dirtyreload build: prepare_files style_check venv/bin/mkdocs build # create files that are not versioned inside the mkdocs folder (images, examples) prepare_files: clean mkdir docs/examples cp -r ../json.gif docs/images cp -r ../examples/*.cpp ../examples/*.output docs/examples style_check: @cd docs ; python3 ../scripts/check_structure.py # clean subfolders clean: rm -fr docs/images/json.gif docs/examples # publish site to GitHub pages (not working in GitHub Actions; need special action) publish: prepare_files venv/bin/mkdocs gh-deploy --clean --force # install a Python virtual environment install_venv: requirements.txt python3 -mvenv venv venv/bin/pip install --upgrade pip venv/bin/pip install wheel venv/bin/pip install -r requirements.txt # uninstall the virtual environment uninstall_venv: clean rm -fr venv json-3.11.3/docs/mkdocs/docs/000077500000000000000000000000001453145653700157255ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/000077500000000000000000000000001453145653700164765ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/adl_serializer/000077500000000000000000000000001453145653700214675ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/adl_serializer/from_json.md000066400000000000000000000041571453145653700240140ustar00rootroot00000000000000# nlohmann::adl_serializer::from_json ```cpp // (1) template static auto from_json(BasicJsonType && j, TargetType& val) noexcept( noexcept(::nlohmann::from_json(std::forward(j), val))) -> decltype(::nlohmann::from_json(std::forward(j), val), void()) // (2) template static auto from_json(BasicJsonType && j) noexcept( noexcept(::nlohmann::from_json(std::forward(j), detail::identity_tag {}))) -> decltype(::nlohmann::from_json(std::forward(j), detail::identity_tag {})) ``` This function is usually called by the [`get()`](../basic_json/get.md) function of the [basic_json](../basic_json/index.md) class (either explicitly or via the conversion operators). 1. This function is chosen for default-constructible value types. 2. This function is chosen for value types which are not default-constructible. ## Parameters `j` (in) : JSON value to read from `val` (out) : value to write to ## Return value Copy of the JSON value, converted to `ValueType` ## Examples ??? example "Example: (1) Default-constructible type" The example below shows how a `from_json` function can be implemented for a user-defined type. This function is called by the `adl_serializer` when `template get()` is called. ```cpp --8<-- "examples/from_json__default_constructible.cpp" ``` Output: ```json --8<-- "examples/from_json__default_constructible.output" ``` ??? example "Example: (2) Non-default-constructible type" The example below shows how a `from_json` is implemented as part of a specialization of the `adl_serializer` to realize the conversion of a non-default-constructible type. ```cpp --8<-- "examples/from_json__non_default_constructible.cpp" ``` Output: ```json --8<-- "examples/from_json__non_default_constructible.output" ``` ## See also - [to_json](to_json.md) ## Version history - Added in version 2.1.0. json-3.11.3/docs/mkdocs/docs/api/adl_serializer/index.md000066400000000000000000000016141453145653700231220ustar00rootroot00000000000000# nlohmann::adl_serializer ```cpp template struct adl_serializer; ``` Serializer that uses ADL ([Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)) to choose `to_json`/`from_json` functions from the types' namespaces. It is implemented similar to ```cpp template struct adl_serializer { template static void to_json(BasicJsonType& j, const T& value) { // calls the "to_json" method in T's namespace } template static void from_json(const BasicJsonType& j, T& value) { // same thing, but with the "from_json" method } }; ``` ## Member functions - [**from_json**](from_json.md) - convert a JSON value to any value type - [**to_json**](to_json.md) - convert any value type to a JSON value ## Version history - Added in version 2.1.0. json-3.11.3/docs/mkdocs/docs/api/adl_serializer/to_json.md000066400000000000000000000017431453145653700234710ustar00rootroot00000000000000# nlohmann::adl_serializer::to_json ```cpp template static auto to_json(BasicJsonType& j, TargetType && val) noexcept( noexcept(::nlohmann::to_json(j, std::forward(val)))) -> decltype(::nlohmann::to_json(j, std::forward(val)), void()) ``` This function is usually called by the constructors of the [basic_json](../basic_json/index.md) class. ## Parameters `j` (out) : JSON value to write to `val` (in) : value to read from ## Examples ??? example The example below shows how a `to_json` function can be implemented for a user-defined type. This function is called by the `adl_serializer` when the constructor `basic_json(ns::person)` is called. ```cpp --8<-- "examples/to_json.cpp" ``` Output: ```json --8<-- "examples/to_json.output" ``` ## See also - [from_json](from_json.md) ## Version history - Added in version 2.1.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/000077500000000000000000000000001453145653700206105ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/basic_json/accept.md000066400000000000000000000061461453145653700224000ustar00rootroot00000000000000# nlohmann::basic_json::accept ```cpp // (1) template static bool accept(InputType&& i, const bool ignore_comments = false); // (2) template static bool accept(IteratorType first, IteratorType last, const bool ignore_comments = false); ``` Checks whether the input is valid JSON. 1. Reads from a compatible input. 2. Reads from a pair of character iterators The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32. Unlike the [`parse`](parse.md) function, this function neither throws an exception in case of invalid JSON input (i.e., a parse error) nor creates diagnostic information. ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer (must not be null) - a C-style array of characters - a pointer to a null-terminated string of single byte characters - a `std::string` - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type, for instance. - a pair of `std::string::iterator` or `std::vector::iterator` - a pair of pointers such as `ptr` and `ptr + len` ## Parameters `i` (in) : Input to parse from. `ignore_comments` (in) : whether comments should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error (`#!cpp false`); (optional, `#!cpp false` by default) `first` (in) : iterator to start of character range `last` (in) : iterator to end of character range ## Return value Whether the input is valid JSON. ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the length of the input. The parser is a predictive LL(1) parser. ## Notes (1) A UTF-8 byte order mark is silently ignored. !!! danger "Runtime assertion" The precondition that a passed `#!cpp FILE` pointer must not be null is enforced with a [runtime assertion](../../features/assertions.md). ## Examples ??? example The example below demonstrates the `accept()` function reading from a string. ```cpp --8<-- "examples/accept__string.cpp" ``` Output: ```json --8<-- "examples/accept__string.output" ``` ## See also - [parse](parse.md) - deserialize from a compatible input - [operator>>](../operator_gtgt.md) - deserialize from stream ## Version history - Added in version 3.0.0. - Ignoring comments via `ignore_comments` added in version 3.9.0. !!! warning "Deprecation" Overload (2) replaces calls to `accept` with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp accept({ptr, ptr+len}, ...);` with `#!cpp accept(ptr, ptr+len, ...);`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/array.md000066400000000000000000000031161453145653700222510ustar00rootroot00000000000000# nlohmann::basic_json::array ```cpp static basic_json array(initializer_list_t init = {}); ``` Creates a JSON array value from a given initializer list. That is, given a list of values `a, b, c`, creates the JSON value `#!json [a, b, c]`. If the initializer list is empty, the empty array `#!json []` is created. ## Parameters `init` (in) : initializer list with JSON values to create an array from (optional) ## Return value JSON array value ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of `init`. ## Notes This function is only needed to express two edge cases that cannot be realized with the initializer list constructor ([`basic_json(initializer_list_t, bool, value_t)`](basic_json.md)). These cases are: 1. creating an array whose elements are all pairs whose first element is a string -- in this case, the initializer list constructor would create an object, taking the first elements as keys 2. creating an empty array -- passing the empty initializer list to the initializer list constructor yields an empty object ## Examples ??? example The following code shows an example for the `array` function. ```cpp --8<-- "examples/array.cpp" ``` Output: ```json --8<-- "examples/array.output" ``` ## See also - [`basic_json(initializer_list_t)`](basic_json.md) - create a JSON value from an initializer list - [`object`](object.md) - create a JSON object value from an initializer list ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/array_t.md000066400000000000000000000033201453145653700225710ustar00rootroot00000000000000# nlohmann::basic_json::array_t ```cpp using array_t = ArrayType>; ``` The type used to store JSON arrays. [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON arrays as follows: > An array is an ordered sequence of zero or more values. To store objects in C++, a type is defined by the template parameters explained below. ## Template parameters `ArrayType` : container type to store arrays (e.g., `std::vector` or `std::list`) `AllocatorType` : the allocator to use for objects (e.g., `std::allocator`) ## Notes #### Default type With the default values for `ArrayType` (`std::vector`) and `AllocatorType` (`std::allocator`), the default value for `array_t` is: ```cpp std::vector< basic_json, // value_type std::allocator // allocator_type > ``` #### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the maximum depth of nesting. In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the [`max_size`](max_size.md) function of a JSON array. #### Storage Arrays are stored as pointers in a `basic_json` type. That is, for any access to array values, a pointer of type `#!cpp array_t*` must be dereferenced. ## Examples ??? example The following code shows that `array_t` is by default, a typedef to `#!cpp std::vector`. ```cpp --8<-- "examples/array_t.cpp" ``` Output: ```json --8<-- "examples/array_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/at.md000066400000000000000000000166031453145653700215440ustar00rootroot00000000000000# nlohmann::basic_json::at ```cpp // (1) reference at(size_type idx); const_reference at(size_type idx) const; // (2) reference at(const typename object_t::key_type& key); const_reference at(const typename object_t::key_type& key) const; // (3) template reference at(KeyType&& key); template const_reference at(KeyType&& key) const; // (4) reference at(const json_pointer& ptr); const_reference at(const json_pointer& ptr) const; ``` 1. Returns a reference to the array element at specified location `idx`, with bounds checking. 2. Returns a reference to the object element with specified key `key`, with bounds checking. 3. See 2. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. 4. Returns a reference to the element at specified JSON pointer `ptr`, with bounds checking. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). ## Parameters `idx` (in) : index of the element to access `key` (in) : object key of the elements to access `ptr` (in) : JSON pointer to the desired element ## Return value 1. reference to the element at index `idx` 2. reference to the element at key `key` 3. reference to the element at key `key` 4. reference to the element pointed to by `ptr` ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. The function can throw the following exceptions: - Throws [`type_error.304`](../../home/exceptions.md#jsonexceptiontype_error304) if the JSON value is not an array; in this case, calling `at` with an index makes no sense. See example below. - Throws [`out_of_range.401`](../../home/exceptions.md#jsonexceptionout_of_range401) if the index `idx` is out of range of the array; that is, `idx >= size()`. See example below. 2. The function can throw the following exceptions: - Throws [`type_error.304`](../../home/exceptions.md#jsonexceptiontype_error304) if the JSON value is not an object; in this case, calling `at` with a key makes no sense. See example below. - Throws [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if the key `key` is not stored in the object; that is, `find(key) == end()`. See example below. 3. See 2. 4. The function can throw the following exceptions: - Throws [`parse_error.106`](../../home/exceptions.md#jsonexceptionparse_error106) if an array index in the passed JSON pointer `ptr` begins with '0'. See example below. - Throws [`parse_error.109`](../../home/exceptions.md#jsonexceptionparse_error109) if an array index in the passed JSON pointer `ptr` is not a number. See example below. - Throws [`out_of_range.401`](../../home/exceptions.md#jsonexceptionout_of_range401) if an array index in the passed JSON pointer `ptr` is out of range. See example below. - Throws [`out_of_range.402`](../../home/exceptions.md#jsonexceptionout_of_range402) if the array index '-' is used in the passed JSON pointer `ptr`. As `at` provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below. - Throws [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if the JSON pointer describes a key of an object which cannot be found. See example below. - Throws [`out_of_range.404`](../../home/exceptions.md#jsonexceptionout_of_range404) if the JSON pointer `ptr` can not be resolved. See example below. ## Complexity 1. Constant. 2. Logarithmic in the size of the container. 3. Logarithmic in the size of the container. 4. Logarithmic in the size of the container. ## Examples ??? example "Example: (1) access specified array element with bounds checking" The example below shows how array elements can be read and written using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__size_type.cpp" ``` Output: ```json --8<-- "examples/at__size_type.output" ``` ??? example "Example: (1) access specified array element with bounds checking" The example below shows how array elements can be read using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__size_type_const.cpp" ``` Output: ```json --8<-- "examples/at__size_type_const.output" ``` ??? example "Example: (2) access specified object element with bounds checking" The example below shows how object elements can be read and written using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/at__object_t_key_type.output" ``` ??? example "Example: (2) access specified object element with bounds checking" The example below shows how object elements can be read using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__object_t_key_type_const.cpp" ``` Output: ```json --8<-- "examples/at__object_t_key_type_const.output" ``` ??? example "Example: (3) access specified object element using string_view with bounds checking" The example below shows how object elements can be read and written using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/at__keytype.c++17.output" ``` ??? example "Example: (3) access specified object element using string_view with bounds checking" The example below shows how object elements can be read using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__keytype_const.c++17.cpp" ``` Output: ```json --8<-- "examples/at__keytype_const.c++17.output" ``` ??? example "Example: (4) access specified element via JSON Pointer" The example below shows how object elements can be read and written using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__json_pointer.cpp" ``` Output: ```json --8<-- "examples/at__json_pointer.output" ``` ??? example "Example: (4) access specified element via JSON Pointer" The example below shows how object elements can be read using `at()`. It also demonstrates the different exceptions that can be thrown. ```cpp --8<-- "examples/at__json_pointer_const.cpp" ``` Output: ```json --8<-- "examples/at__json_pointer_const.output" ``` ## See also - documentation on [checked access](../../features/element_access/checked_access.md) - see [`operator[]`](operator%5B%5D.md) for unchecked access by reference - see [`value`](value.md) for access with default value ## Version history 1. Added in version 1.0.0. 2. Added in version 1.0.0. 3. Added in version 3.11.0. 4. Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/back.md000066400000000000000000000024541453145653700220370ustar00rootroot00000000000000# nlohmann::basic_json::back ```cpp reference back(); const_reference back() const; ``` Returns a reference to the last element in the container. For a JSON container `c`, the expression `c.back()` is equivalent to ```cpp auto tmp = c.end(); --tmp; return *tmp; ``` ## Return value In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned. ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions If the JSON value is `#!json null`, exception [`invalid_iterator.214`](../../home/exceptions.md#jsonexceptioninvalid_iterator214) is thrown. ## Complexity Constant. ## Notes !!! info "Precondition" The array or object must not be empty. Calling `back` on an empty array or object yields undefined behavior. ## Examples ??? example The following code shows an example for `back()`. ```cpp --8<-- "examples/back.cpp" ``` Output: ```json --8<-- "examples/back.output" ``` ## See also - [front](front.md) to access the first element ## Version history - Added in version 1.0.0. - Adjusted code to return reference to binary values in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/basic_json.md000066400000000000000000000362031453145653700232500ustar00rootroot00000000000000# nlohmann::basic_json::basic_json ```cpp // (1) basic_json(const value_t v); // (2) basic_json(std::nullptr_t = nullptr) noexcept; // (3) template basic_json(CompatibleType&& val) noexcept(noexcept( JSONSerializer::to_json(std::declval(), std::forward(val)))); // (4) template basic_json(const BasicJsonType& val); // (5) basic_json(initializer_list_t init, bool type_deduction = true, value_t manual_type = value_t::array); // (6) basic_json(size_type cnt, const basic_json& val); // (7) basic_json(iterator first, iterator last); basic_json(const_iterator first, const_iterator last); // (8) basic_json(const basic_json& other); // (9) basic_json(basic_json&& other) noexcept; ``` 1. Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends on the type: | Value type | initial value | |------------|----------------| | null | `#!json null` | | boolean | `#!json false` | | string | `#!json ""` | | number | `#!json 0` | | object | `#!json {}` | | array | `#!json []` | | binary | empty array | The postcondition of this constructor can be restored by calling [`clear()`](clear.md). 2. Create a `#!json null` JSON value. It either takes a null pointer as parameter (explicitly creating `#!json null`) or no parameter (implicitly creating `#!json null`). The passed null pointer itself is not read -- it is only used to choose the right constructor. 3. This is a "catch all" constructor for all compatible JSON types; that is, types for which a `to_json()` method exists. The constructor forwards the parameter `val` to that method (to `json_serializer::to_json` method with `U = uncvref_t`, to be exact). Template type `CompatibleType` includes, but is not limited to, the following types: - **arrays**: [`array_t`](array_t.md) and all kinds of compatible containers such as `std::vector`, `std::deque`, `std::list`, `std::forward_list`, `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, `std::multiset`, and `std::unordered_multiset` with a `value_type` from which a `basic_json` value can be constructed. - **objects**: [`object_t`](object_t.md) and all kinds of compatible associative containers such as `std::map`, `std::unordered_map`, `std::multimap`, and `std::unordered_multimap` with a `key_type` compatible to `string_t` and a `value_type` from which a `basic_json` value can be constructed. - **strings**: `string_t`, string literals, and all compatible string containers can be used. - **numbers**: [`number_integer_t`](number_integer_t.md), [`number_unsigned_t`](number_unsigned_t.md), [`number_float_t`](number_float_t.md), and all convertible number types such as `int`, `size_t`, `int64_t`, `float` or `double` can be used. - **boolean**: `boolean_t` / `bool` can be used. - **binary**: `binary_t` / `std::vector` may be used; unfortunately because string literals cannot be distinguished from binary character arrays by the C++ type system, all types compatible with `const char*` will be directed to the string constructor instead. This is both for backwards compatibility, and due to the fact that a binary type is not a standard JSON type. See the examples below. 4. This is a constructor for existing `basic_json` types. It does not hijack copy/move constructors, since the parameter has different template arguments than the current ones. The constructor tries to convert the internal `m_value` of the parameter. 5. Creates a JSON value of type array or object from the passed initializer list `init`. In case `type_deduction` is `#!cpp true` (default), the type of the JSON value to be created is deducted from the initializer list `init` according to the following rules: 1. If the list is empty, an empty JSON object value `{}` is created. 2. If the list consists of pairs whose first element is a string, a JSON object value is created where the first elements of the pairs are treated as keys and the second elements are as values. 3. In all other cases, an array is created. The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows: 1. The empty initializer list is written as `#!cpp {}` which is exactly an empty JSON object. 2. C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an object. 3. In all other cases, the initializer list could not be interpreted as JSON object type, so interpreting it as JSON array type is safe. With the rules described above, the following JSON values cannot be expressed by an initializer list: - the empty array (`#!json []`): use `array(initializer_list_t)` with an empty initializer list in this case - arrays whose elements satisfy rule 2: use `array(initializer_list_t)` with the same initializer list in this case Function [`array()`](array.md) and [`object()`](object.md) force array and object creation from initializer lists, respectively. 6. Constructs a JSON array value by creating `cnt` copies of a passed value. In case `cnt` is `0`, an empty array is created. 7. Constructs the JSON value with the contents of the range `[first, last)`. The semantics depends on the different types a JSON value can have: - In case of a `#!json null` type, [invalid_iterator.206](../../home/exceptions.md#jsonexceptioninvalid_iterator206) is thrown. - In case of other primitive types (number, boolean, or string), `first` must be `begin()` and `last` must be `end()`. In this case, the value is copied. Otherwise, [`invalid_iterator.204`](../../home/exceptions.md#jsonexceptioninvalid_iterator204) is thrown. - In case of structured types (array, object), the constructor behaves as similar versions for `std::vector` or `std::map`; that is, a JSON array or object is constructed from the values in the range. 8. Creates a copy of a given JSON value. 9. Move constructor. Constructs a JSON value with the contents of the given value `other` using move semantics. It "steals" the resources from `other` and leaves it as JSON `#!json null` value. ## Template parameters `CompatibleType` : a type such that: - `CompatibleType` is not derived from `std::istream`, - `CompatibleType` is not `basic_json` (to avoid hijacking copy/move constructors), - `CompatibleType` is not a different `basic_json` type (i.e. with different template arguments) - `CompatibleType` is not a `basic_json` nested type (e.g., `json_pointer`, `iterator`, etc.) - `json_serializer` (with `U = uncvref_t`) has a `to_json(basic_json_t&, CompatibleType&&)` method `BasicJsonType`: : a type such that: - `BasicJsonType` is a `basic_json` type. - `BasicJsonType` has different template arguments than `basic_json_t`. `U`: : `uncvref_t` ## Parameters `v` (in) : the type of the value to create `val` (in) : the value to be forwarded to the respective constructor `init` (in) : initializer list with JSON values `type_deduction` (in) : internal parameter; when set to `#!cpp true`, the type of the JSON value is deducted from the initializer list `init`; when set to `#!cpp false`, the type provided via `manual_type` is forced. This mode is used by the functions `array(initializer_list_t)` and `object(initializer_list_t)`. `manual_type` (in) : internal parameter; when `type_deduction` is set to `#!cpp false`, the created JSON value will use the provided type (only `value_t::array` and `value_t::object` are valid); when `type_deduction` is set to `#!cpp true`, this parameter has no effect `cnt` (in) : the number of JSON copies of `val` to create `first` (in) : begin of the range to copy from (included) `last` (in) : end of the range to copy from (excluded) `other` (in) : the JSON value to copy/move ## Exception safety 1. Strong guarantee: if an exception is thrown, there are no changes to any JSON value. 2. No-throw guarantee: this constructor never throws exceptions. 3. Depends on the called constructor. For types directly supported by the library (i.e., all types for which no `to_json()` function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value. 4. Depends on the called constructor. For types directly supported by the library (i.e., all types for which no `to_json()` function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value. 5. Strong guarantee: if an exception is thrown, there are no changes to any JSON value. 6. Strong guarantee: if an exception is thrown, there are no changes to any JSON value. 7. Strong guarantee: if an exception is thrown, there are no changes to any JSON value. 8. Strong guarantee: if an exception is thrown, there are no changes to any JSON value. 9. No-throw guarantee: this constructor never throws exceptions. ## Exceptions 1. (none) 2. The function does not throw exceptions. 3. (none) 4. (none) 5. The function can throw the following exceptions: - Throws [`type_error.301`](../../home/exceptions.md#jsonexceptiontype_error301) if `type_deduction` is `#!cpp false`, `manual_type` is `value_t::object`, but `init` contains an element which is not a pair whose first element is a string. In this case, the constructor could not create an object. If `type_deduction` would have been `#!cpp true`, an array would have been created. See `object(initializer_list_t)` for an example. 6. (none) 7. The function can throw the following exceptions: - Throws [`invalid_iterator.201`](../../home/exceptions.md#jsonexceptioninvalid_iterator201) if iterators `first` and `last` are not compatible (i.e., do not belong to the same JSON value). In this case, the range `[first, last)` is undefined. - Throws [`invalid_iterator.204`](../../home/exceptions.md#jsonexceptioninvalid_iterator204) if iterators `first` and `last` belong to a primitive type (number, boolean, or string), but `first` does not point to the first element anymore. In this case, the range `[first, last)` is undefined. See example code below. - Throws [`invalid_iterator.206`](../../home/exceptions.md#jsonexceptioninvalid_iterator206) if iterators `first` and `last` belong to a `#!json null` value. In this case, the range `[first, last)` is undefined. 8. (none) 9. The function does not throw exceptions. ## Complexity 1. Constant. 2. Constant. 3. Usually linear in the size of the passed `val`, also depending on the implementation of the called `to_json()` method. 4. Usually linear in the size of the passed `val`, also depending on the implementation of the called `to_json()` method. 5. Linear in the size of the initializer list `init`. 6. Linear in `cnt`. 7. Linear in distance between `first` and `last`. 8. Linear in the size of `other`. 9. Constant. ## Notes - Overload 5: !!! note "Empty initializer list" When used without parentheses around an empty initializer list, `basic_json()` is called instead of this function, yielding the JSON `#!json null` value. - Overload 7: !!! info "Preconditions" - Iterators `first` and `last` must be initialized. **This precondition is enforced with a [runtime assertion](../../features/assertions.md). - Range `[first, last)` is valid. Usually, this precondition cannot be checked efficiently. Only certain edge cases are detected; see the description of the exceptions above. A violation of this precondition yields undefined behavior. !!! danger "Runtime assertion" A precondition is enforced with a [runtime assertion](../../features/assertions.md). - Overload 8: !!! info "Postcondition" `#!cpp *this == other` - Overload 9: !!! info "Postconditions" - `#!cpp `*this` has the same value as `other` before the call. - `other` is a JSON `#!json null` value ## Examples ??? example "Example: (1) create an empty value with a given type" The following code shows the constructor for different `value_t` values. ```cpp --8<-- "examples/basic_json__value_t.cpp" ``` Output: ```json --8<-- "examples/basic_json__value_t.output" ``` ??? example "Example: (2) create a `#!json null` object" The following code shows the constructor with and without a null pointer parameter. ```cpp --8<-- "examples/basic_json__nullptr_t.cpp" ``` Output: ```json --8<-- "examples/basic_json__nullptr_t.output" ``` ??? example "Example: (3) create a JSON value from compatible types" The following code shows the constructor with several compatible types. ```cpp --8<-- "examples/basic_json__CompatibleType.cpp" ``` Output: ```json --8<-- "examples/basic_json__CompatibleType.output" ``` Note the output is platform-dependent. ??? example "Example: (5) create a container (array or object) from an initializer list" The example below shows how JSON values are created from initializer lists. ```cpp --8<-- "examples/basic_json__list_init_t.cpp" ``` Output: ```json --8<-- "examples/basic_json__list_init_t.output" ``` ??? example "Example: (6) construct an array with count copies of given value" The following code shows examples for creating arrays with several copies of a given value. ```cpp --8<-- "examples/basic_json__size_type_basic_json.cpp" ``` Output: ```json --8<-- "examples/basic_json__size_type_basic_json.output" ``` ??? example "Example: (7) construct a JSON container given an iterator range" The example below shows several ways to create JSON values by specifying a subrange with iterators. ```cpp --8<-- "examples/basic_json__InputIt_InputIt.cpp" ``` Output: ```json --8<-- "examples/basic_json__InputIt_InputIt.output" ``` ??? example "Example: (8) copy constructor" The following code shows an example for the copy constructor. ```cpp --8<-- "examples/basic_json__basic_json.cpp" ``` Output: ```json --8<-- "examples/basic_json__basic_json.output" ``` ??? example "Example: (9) move constructor" The code below shows the move constructor explicitly called via `std::move`. ```cpp --8<-- "examples/basic_json__moveconstructor.cpp" ``` Output: ```json --8<-- "examples/basic_json__moveconstructor.output" ``` ## Version history 1. Since version 1.0.0. 2. Since version 1.0.0. 3. Since version 2.1.0. 4. Since version 3.2.0. 5. Since version 1.0.0. 6. Since version 1.0.0. 7. Since version 1.0.0. 8. Since version 1.0.0. 9. Since version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/begin.md000066400000000000000000000012271453145653700222200ustar00rootroot00000000000000# nlohmann::basic_json::begin ```cpp iterator begin() noexcept; const_iterator begin() const noexcept; ``` Returns an iterator to the first element. ![Illustration from cppreference.com](../../images/range-begin-end.svg) ## Return value iterator to the first element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `begin()`. ```cpp --8<-- "examples/begin.cpp" ``` Output: ```json --8<-- "examples/begin.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/binary.md000066400000000000000000000035531453145653700224240ustar00rootroot00000000000000# nlohmann::basic_json::binary ```cpp // (1) static basic_json binary(const typename binary_t::container_type& init); static basic_json binary(typename binary_t::container_type&& init); // (2) static basic_json binary(const typename binary_t::container_type& init, std::uint8_t subtype); static basic_json binary(typename binary_t::container_type&& init, std::uint8_t subtype); ``` 1. Creates a JSON binary array value from a given binary container. 2. Creates a JSON binary array value from a given binary container with subtype. Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats. ## Parameters `init` (in) : container containing bytes to use as binary type `subtype` (in) : subtype to use in CBOR, MessagePack, and BSON ## Return value JSON binary array value ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of `init`; constant for `typename binary_t::container_type&& init` versions. ## Notes Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a `std::vector`. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident. ## Examples ??? example The following code shows how to create a binary value. ```cpp --8<-- "examples/binary.cpp" ``` Output: ```json --8<-- "examples/binary.output" ``` ## Version history - Added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/binary_t.md000066400000000000000000000067471453145653700227570ustar00rootroot00000000000000# nlohmann::basic_json::binary_t ```cpp using binary_t = byte_container_with_subtype; ``` This type is a type designed to carry binary data that appears in various serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and BSON's generic binary subtype. This type is NOT a part of standard JSON and exists solely for compatibility with these binary types. As such, it is simply defined as an ordered sequence of zero or more byte values. Additionally, as an implementation detail, the subtype of the binary data is carried around as a `std::uint64_t`, which is compatible with both of the binary data formats that use binary subtyping, (though the specific numbering is incompatible with each other, and it is up to the user to translate between them). The subtype is added to `BinaryType` via the helper type [byte_container_with_subtype](../byte_container_with_subtype/index.md). [CBOR's RFC 7049](https://tools.ietf.org/html/rfc7049) describes this type as: > Major type 2: a byte string. The string's length in bytes is represented following the rules for positive integers > (major type 0). [MessagePack's documentation on the bin type family](https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family) describes this type as: > Bin format family stores a byte array in 2, 3, or 5 bytes of extra bytes in addition to the size of the byte array. [BSON's specifications](http://bsonspec.org/spec.html) describe several binary types; however, this type is intended to represent the generic binary type which has the description: > Generic binary subtype - This is the most commonly used binary subtype and should be the 'default' for drivers and > tools. None of these impose any limitations on the internal representation other than the basic unit of storage be some type of array whose parts are decomposable into bytes. The default representation of this binary format is a `#!cpp std::vector`, which is a very common way to represent a byte array in modern C++. ## Template parameters `BinaryType` : container type to store arrays ## Notes #### Default type The default values for `BinaryType` is `#!cpp std::vector`. #### Storage Binary Arrays are stored as pointers in a `basic_json` type. That is, for any access to array values, a pointer of the type `#!cpp binary_t*` must be dereferenced. #### Notes on subtypes - CBOR - Binary values are represented as byte strings. Subtypes are written as tags. - MessagePack - If a subtype is given and the binary array contains exactly 1, 2, 4, 8, or 16 elements, the fixext family (fixext1, fixext2, fixext4, fixext8) is used. For other sizes, the ext family (ext8, ext16, ext32) is used. The subtype is then added as signed 8-bit integer. - If no subtype is given, the bin family (bin8, bin16, bin32) is used. - BSON - If a subtype is given, it is used and added as unsigned 8-bit integer. - If no subtype is given, the generic binary subtype 0x00 is used. ## Examples ??? example The following code shows that `binary_t` is by default, a typedef to `#!cpp nlohmann::byte_container_with_subtype>`. ```cpp --8<-- "examples/binary_t.cpp" ``` Output: ```json --8<-- "examples/binary_t.output" ``` ## See also - [byte_container_with_subtype](../byte_container_with_subtype/index.md) ## Version history - Added in version 3.8.0. Changed type of subtype to `std::uint64_t` in version 3.10.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/boolean_t.md000066400000000000000000000016421453145653700230770ustar00rootroot00000000000000# nlohmann::basic_json::boolean_t ```cpp using boolean_t = BooleanType; ``` The type used to store JSON booleans. [RFC 8259](https://tools.ietf.org/html/rfc8259) implicitly describes a boolean as a type which differentiates the two literals `#!json true` and `#!json false`. To store objects in C++, a type is defined by the template parameter `BooleanType` which chooses the type to use. ## Notes #### Default type With the default values for `BooleanType` (`#!cpp bool`), the default value for `boolean_t` is `#!cpp bool`. #### Storage Boolean values are stored directly inside a `basic_json` type. ## Examples ??? example The following code shows that `boolean_t` is by default, a typedef to `#!cpp bool`. ```cpp --8<-- "examples/boolean_t.cpp" ``` Output: ```json --8<-- "examples/boolean_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/cbegin.md000066400000000000000000000012011453145653700223530ustar00rootroot00000000000000# nlohmann::basic_json::cbegin ```cpp const_iterator cbegin() const noexcept; ``` Returns an iterator to the first element. ![Illustration from cppreference.com](../../images/range-begin-end.svg) ## Return value iterator to the first element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `cbegin()`. ```cpp --8<-- "examples/cbegin.cpp" ``` Output: ```json --8<-- "examples/cbegin.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/cbor_tag_handler_t.md000066400000000000000000000015121453145653700247310ustar00rootroot00000000000000# nlohmann::basic_json::cbor_tag_handler_t ```cpp enum class cbor_tag_handler_t { error, ignore, store }; ``` This enumeration is used in the [`from_cbor`](from_cbor.md) function to choose how to treat tags: error : throw a `parse_error` exception in case of a tag ignore : ignore tags store : store tagged values as binary container with subtype (for bytes 0xd8..0xdb) ## Examples ??? example The example below shows how the different values of the `cbor_tag_handler_t` influence the behavior of [`from_cbor`](from_cbor.md) when reading a tagged byte string. ```cpp --8<-- "examples/cbor_tag_handler_t.cpp" ``` Output: ```json --8<-- "examples/cbor_tag_handler_t.output" ``` ## Version history - Added in version 3.9.0. Added value `store` in 3.10.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/cend.md000066400000000000000000000012041453145653700220400ustar00rootroot00000000000000# nlohmann::basic_json::cend ```cpp const_iterator cend() const noexcept; ``` Returns an iterator to one past the last element. ![Illustration from cppreference.com](../../images/range-begin-end.svg) ## Return value iterator one past the last element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `cend()`. ```cpp --8<-- "examples/cend.cpp" ``` Output: ```json --8<-- "examples/cend.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/clear.md000066400000000000000000000023501453145653700222200ustar00rootroot00000000000000# nlohmann::basic_json::clear ```cpp void clear() noexcept; ``` Clears the content of a JSON value and resets it to the default value as if [`basic_json(value_t)`](basic_json.md) would have been called with the current value type from [`type()`](type.md): | Value type | initial value | |------------|----------------------| | null | `null` | | boolean | `false` | | string | `""` | | number | `0` | | binary | An empty byte vector | | object | `{}` | | array | `[]` | Has the same effect as calling ```.cpp *this = basic_json(type()); ``` ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear in the size of the JSON value. ## Notes All iterators, pointers and references related to this container are invalidated. ## Examples ??? example The example below shows the effect of `clear()` to different JSON types. ```cpp --8<-- "examples/clear.cpp" ``` Output: ```json --8<-- "examples/clear.output" ``` ## Version history - Added in version 1.0.0. - Added support for binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/contains.md000066400000000000000000000063061453145653700227550ustar00rootroot00000000000000# nlohmann::basic_json::contains ```cpp // (1) bool contains(const typename object_t::key_type& key) const; // (2) template bool contains(KeyType&& key) const; // (3) bool contains(const json_pointer& ptr) const; ``` 1. Check whether an element exists in a JSON object with a key equivalent to `key`. If the element is not found or the JSON value is not an object, `#!cpp false` is returned. 2. See 1. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. 3. Check whether the given JSON pointer `ptr` can be resolved in the current JSON value. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). ## Parameters `key` (in) : key value to check its existence. `ptr` (in) : JSON pointer to check its existence. ## Return value 1. `#!cpp true` if an element with specified `key` exists. If no such element with such key is found or the JSON value is not an object, `#!cpp false` is returned. 2. See 1. 3. `#!cpp true` if the JSON pointer can be resolved to a stored value, `#!cpp false` otherwise. ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. The function does not throw exceptions. 2. The function does not throw exceptions. 3. The function can throw the following exceptions: - Throws [`parse_error.106`](../../home/exceptions.md#jsonexceptionparse_error106) if an array index begins with `0`. - Throws [`parse_error.109`](../../home/exceptions.md#jsonexceptionparse_error109) if an array index was not a number. ## Complexity Logarithmic in the size of the JSON object. ## Notes - This method always returns `#!cpp false` when executed on a JSON type that is not an object. - This method can be executed on any JSON value type. !!! info "Postconditions" If `#!cpp j.contains(x)` returns `#!c true` for a key or JSON pointer `x`, then it is safe to call `j[x]`. ## Examples ??? example "Example: (1) check with key" The example shows how `contains()` is used. ```cpp --8<-- "examples/contains__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/contains__object_t_key_type.output" ``` ??? example "Example: (2) check with key using string_view" The example shows how `contains()` is used. ```cpp --8<-- "examples/contains__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/contains__keytype.c++17.output" ``` ??? example "Example: (3) check with JSON pointer" The example shows how `contains()` is used. ```cpp --8<-- "examples/contains__json_pointer.cpp" ``` Output: ```json --8<-- "examples/contains__json_pointer.output" ``` ## Version history 1. Added in version 3.11.0. 2. Added in version 3.6.0. Extended template `KeyType` to support comparable types in version 3.11.0. 3. Added in version 3.7.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/count.md000066400000000000000000000037111453145653700222640ustar00rootroot00000000000000# nlohmann::basic_json::count ```cpp // (1) size_type count(const typename object_t::key_type& key) const; // (2) template size_type count(KeyType&& key) const; ``` 1. Returns the number of elements with key `key`. If `ObjectType` is the default `std::map` type, the return value will always be `0` (`key` was not found) or `1` (`key` was found). 2. See 1. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). ## Parameters `key` (in) : key value of the element to count. ## Return value Number of elements with key `key`. If the JSON value is not an object, the return value will be `0`. ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Complexity Logarithmic in the size of the JSON object. ## Notes This method always returns `0` when executed on a JSON type that is not an object. ## Examples ??? example "Example: (1) count number of elements" The example shows how `count()` is used. ```cpp --8<-- "examples/count__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/count__object_t_key_type.output" ``` ??? example "Example: (2) count number of elements using string_view" The example shows how `count()` is used. ```cpp --8<-- "examples/count__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/count__keytype.c++17.output" ``` ## Version history 1. Added in version 3.11.0. 2. Added in version 1.0.0. Changed parameter `key` type to `KeyType&&` in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/crbegin.md000066400000000000000000000012671453145653700225510ustar00rootroot00000000000000# nlohmann::basic_json::crbegin ```cpp const_reverse_iterator crbegin() const noexcept; ``` Returns an iterator to the reverse-beginning; that is, the last element. ![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) ## Return value reverse iterator to the first element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `crbegin()`. ```cpp --8<-- "examples/crbegin.cpp" ``` Output: ```json --8<-- "examples/crbegin.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/crend.md000066400000000000000000000014421453145653700222260ustar00rootroot00000000000000# nlohmann::basic_json::crend ```cpp const_reverse_iterator crend() const noexcept; ``` Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior. ![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) ## Return value reverse iterator to the element following the last element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `eend()`. ```cpp --8<-- "examples/crend.cpp" ``` Output: ```json --8<-- "examples/crend.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/default_object_comparator_t.md000066400000000000000000000015371453145653700266640ustar00rootroot00000000000000# nlohmann::basic_json::default_object_comparator_t ```cpp using default_object_comparator_t = std::less; // until C++14 using default_object_comparator_t = std::less<>; // since C++14 ``` The default comparator used by [`object_t`](object_t.md). Since C++14 a transparent comparator is used which prevents unnecessary string construction when looking up a key in an object. The actual comparator used depends on [`object_t`](object_t.md) and can be obtained via [`object_comparator_t`](object_comparator_t.md). ## Examples ??? example The example below demonstrates the default comparator. ```cpp --8<-- "examples/default_object_comparator_t.cpp" ``` Output: ```json --8<-- "examples/default_object_comparator_t.output" ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/diff.md000066400000000000000000000023611453145653700220440ustar00rootroot00000000000000# nlohmann::basic_json::diff ```cpp static basic_json diff(const basic_json& source, const basic_json& target); ``` Creates a [JSON Patch](http://jsonpatch.com) so that value `source` can be changed into the value `target` by calling [`patch`](patch.md) function. For two JSON values `source` and `target`, the following code yields always `#!cpp true`: ```cpp source.patch(diff(source, target)) == target; ``` ## Parameters `source` (in) : JSON value to compare from `target` (in) : JSON value to compare against ## Return value a JSON patch to convert the `source` to `target` ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the lengths of `source` and `target`. ## Notes Currently, only `remove`, `add`, and `replace` operations are generated. ## Examples ??? example The following code shows how a JSON patch is created as a diff for two JSON values. ```cpp --8<-- "examples/diff.cpp" ``` Output: ```json --8<-- "examples/diff.output" ``` ## See also - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) ## Version history - Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/dump.md000066400000000000000000000050611453145653700221010ustar00rootroot00000000000000# nlohmann::basic_json::dump ```cpp string_t dump(const int indent = -1, const char indent_char = ' ', const bool ensure_ascii = false, const error_handler_t error_handler = error_handler_t::strict) const; ``` Serialization function for JSON values. The function tries to mimic Python's [`json.dumps()` function](https://docs.python.org/2/library/json.html#json.dump), and currently supports its `indent` and `ensure_ascii` parameters. ## Parameters `indent` (in) : If `indent` is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of `0` will only insert newlines. `-1` (the default) selects the most compact representation. `indent_char` (in) : The character to use for indentation if `indent` is greater than `0`. The default is ` ` (space). `ensure_ascii` (in) : If `ensure_ascii` is true, all non-ASCII characters in the output are escaped with `\uXXXX` sequences, and the result consists of ASCII characters only. `error_handler` (in) : how to react on decoding errors; there are three possible values (see [`error_handler_t`](error_handler_t.md): `strict` (throws and exception in case a decoding error occurs; default), `replace` (replace invalid UTF-8 sequences with U+FFFD), and `ignore` (ignore invalid UTF-8 sequences during serialization; all bytes are copied to the output unchanged)). ## Return value string containing the serialization of the JSON value ## Exception safety Strong guarantee: if an exception is thrown, there are no changes to any JSON value. ## Exceptions Throws [`type_error.316`](../../home/exceptions.md#jsonexceptiontype_error316) if a string stored inside the JSON value is not UTF-8 encoded and `error_handler` is set to `strict` ## Complexity Linear. ## Notes Binary values are serialized as object containing two keys: - "bytes": an array of bytes as integers - "subtype": the subtype as integer or `#!json null` if the binary has no subtype ## Examples ??? example The following example shows the effect of different `indent`, `indent_char`, and `ensure_ascii` parameters to the result of the serialization. ```cpp --8<-- "examples/dump.cpp" ``` Output: ```json --8<-- "examples/dump.output" ``` ## Version history - Added in version 1.0.0. - Indentation character `indent_char`, option `ensure_ascii` and exceptions added in version 3.0.0. - Error handlers added in version 3.4.0. - Serialization of binary values added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/emplace.md000066400000000000000000000027561453145653700225520ustar00rootroot00000000000000# nlohmann::basic_json::emplace ```cpp template std::pair emplace(Args&& ... args); ``` Inserts a new element into a JSON object constructed in-place with the given `args` if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from `args`. ## Template parameters `Args` : compatible types to create a `basic_json` object ## Parameters `args` (in) : arguments to forward to a constructor of `basic_json` ## Return value a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a `#!cpp bool` denoting whether the insertion took place. ## Exceptions Throws [`type_error.311`](../../home/exceptions.md#jsonexceptiontype_error311) when called on a type other than JSON object or `#!json null`; example: `"cannot use emplace() with number"` ## Complexity Logarithmic in the size of the container, O(log(`size()`)). ## Examples ??? example The example shows how `emplace()` can be used to add elements to a JSON object. Note how the `#!json null` value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key. ```cpp --8<-- "examples/emplace.cpp" ``` Output: ```json --8<-- "examples/emplace.output" ``` ## Version history - Since version 2.0.8. json-3.11.3/docs/mkdocs/docs/api/basic_json/emplace_back.md000066400000000000000000000023121453145653700235160ustar00rootroot00000000000000# nlohmann::basic_json::emplace_back ```cpp template reference emplace_back(Args&& ... args); ``` Creates a JSON value from the passed parameters `args` to the end of the JSON value. If the function is called on a JSON `#!json null` value, an empty array is created before appending the value created from `args`. ## Template parameters `Args` : compatible types to create a `basic_json` object ## Parameters `args` (in) : arguments to forward to a constructor of `basic_json` ## Return value reference to the inserted element ## Exceptions Throws [`type_error.311`](../../home/exceptions.md#jsonexceptiontype_error311) when called on a type other than JSON array or `#!json null`; example: `"cannot use emplace_back() with number"` ## Complexity Amortized constant. ## Examples ??? example The example shows how `emplace_back()` can be used to add elements to a JSON array. Note how the `null` value was silently converted to a JSON array. ```cpp --8<-- "examples/emplace_back.cpp" ``` Output: ```json --8<-- "examples/emplace_back.output" ``` ## Version history - Since version 2.0.8. - Returns reference since 3.7.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/empty.md000066400000000000000000000033251453145653700222730ustar00rootroot00000000000000# nlohmann::basic_json::empty ```cpp bool empty() const noexcept; ``` Checks if a JSON value has no elements (i.e. whether its [`size()`](size.md) is `0`). ## Return value The return value depends on the different types and is defined as follows: | Value type | return value | |------------|----------------------------------------| | null | `#!cpp true` | | boolean | `#!cpp false` | | string | `#!cpp false` | | number | `#!cpp false` | | binary | `#!cpp false` | | object | result of function `object_t::empty()` | | array | result of function `array_t::empty()` | ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant, as long as [`array_t`](array_t.md) and [`object_t`](object_t.md) satisfy the [Container](https://en.cppreference.com/w/cpp/named_req/Container) concept; that is, their `empty()` functions have constant complexity. ## Possible implementation ```cpp bool empty() const noexcept { return size() == 0; } ``` ## Notes This function does not return whether a string stored as JSON value is empty -- it returns whether the JSON container itself is empty which is `#!cpp false` in the case of a string. ## Examples ??? example The following code uses `empty()` to check if a JSON object contains any elements. ```cpp --8<-- "examples/empty.cpp" ``` Output: ```json --8<-- "examples/empty.output" ``` ## Version history - Added in version 1.0.0. - Extended to return `#!cpp false` for binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/end.md000066400000000000000000000012301453145653700216740ustar00rootroot00000000000000# nlohmann::basic_json::end ```cpp iterator end() noexcept; const_iterator end() const noexcept; ``` Returns an iterator to one past the last element. ![Illustration from cppreference.com](../../images/range-begin-end.svg) ## Return value iterator one past the last element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `end()`. ```cpp --8<-- "examples/end.cpp" ``` Output: ```json --8<-- "examples/end.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/erase.md000066400000000000000000000164511453145653700222400ustar00rootroot00000000000000# nlohmann::basic_json::erase ```cpp // (1) iterator erase(iterator pos); const_iterator erase(const_iterator pos); // (2) iterator erase(iterator first, iterator last); const_iterator erase(const_iterator first, const_iterator last); // (3) size_type erase(const typename object_t::key_type& key); // (4) template size_type erase(KeyType&& key); // (5) void erase(const size_type idx); ``` 1. Removes an element from a JSON value specified by iterator `pos`. The iterator `pos` must be valid and dereferenceable. Thus, the `end()` iterator (which is valid, but is not dereferenceable) cannot be used as a value for `pos`. If called on a primitive type other than `#!json null`, the resulting JSON value will be `#!json null`. 2. Remove an element range specified by `[first; last)` from a JSON value. The iterator `first` does not need to be dereferenceable if `first == last`: erasing an empty range is a no-op. If called on a primitive type other than `#!json null`, the resulting JSON value will be `#!json null`. 3. Removes an element from a JSON object by key. 4. See 3. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. 5. Removes an element from a JSON array by index. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). ## Parameters `pos` (in) : iterator to the element to remove `first` (in) : iterator to the beginning of the range to remove `last` (in) : iterator past the end of the range to remove `key` (in) : object key of the elements to remove `idx` (in) : array index of the element to remove ## Return value 1. Iterator following the last removed element. If the iterator `pos` refers to the last element, the `end()` iterator is returned. 2. Iterator following the last removed element. If the iterator `last` refers to the last element, the `end()` iterator is returned. 3. Number of elements removed. If `ObjectType` is the default `std::map` type, the return value will always be `0` (`key` was not found) or `1` (`key` was found). 4. See 3. 5. (none) ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. The function can throw the following exceptions: - Throws [`type_error.307`](../../home/exceptions.md#jsonexceptiontype_error307) if called on a `null` value; example: `"cannot use erase() with null"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` - Throws [`invalid_iterator.205`](../../home/exceptions.md#jsonexceptioninvalid_iterator205) if called on a primitive type with invalid iterator (i.e., any iterator which is not `begin()`); example: `"iterator out of range"` 2. The function can throw the following exceptions: - Throws [`type_error.307`](../../home/exceptions.md#jsonexceptiontype_error307) if called on a `null` value; example: `"cannot use erase() with null"` - Throws [`invalid_iterator.203`](../../home/exceptions.md#jsonexceptioninvalid_iterator203) if called on iterators which does not belong to the current JSON value; example: `"iterators do not fit current value"` - Throws [`invalid_iterator.204`](../../home/exceptions.md#jsonexceptioninvalid_iterator204) if called on a primitive type with invalid iterators (i.e., if `first != begin()` and `last != end()`); example: `"iterators out of range"` 3. The function can throw the following exceptions: - Throws [`type_error.307`](../../home/exceptions.md#jsonexceptiontype_error307) when called on a type other than JSON object; example: `"cannot use erase() with null"` 4. See 3. 5. The function can throw the following exceptions: - Throws [`type_error.307`](../../home/exceptions.md#jsonexceptiontype_error307) when called on a type other than JSON object; example: `"cannot use erase() with null"` - Throws [`out_of_range.401`](../../home/exceptions.md#jsonexceptionout_of_range401) when `idx >= size()`; example: `"array index 17 is out of range"` ## Complexity 1. The complexity depends on the type: - objects: amortized constant - arrays: linear in distance between `pos` and the end of the container - strings and binary: linear in the length of the member - other types: constant 2. The complexity depends on the type: - objects: `log(size()) + std::distance(first, last)` - arrays: linear in the distance between `first` and `last`, plus linear in the distance between `last` and end of the container - strings and binary: linear in the length of the member - other types: constant 3. `log(size()) + count(key)` 4. `log(size()) + count(key)` 5. Linear in distance between `idx` and the end of the container. ## Notes 1. Invalidates iterators and references at or after the point of the `erase`, including the `end()` iterator. 2. (none) 3. References and iterators to the erased elements are invalidated. Other references and iterators are not affected. 4. See 3. 5. (none) ## Examples ??? example "Example: (1) remove element given an iterator" The example shows the effect of `erase()` for different JSON types using an iterator. ```cpp --8<-- "examples/erase__IteratorType.cpp" ``` Output: ```json --8<-- "examples/erase__IteratorType.output" ``` ??? example "Example: (2) remove elements given an iterator range" The example shows the effect of `erase()` for different JSON types using an iterator range. ```cpp --8<-- "examples/erase__IteratorType_IteratorType.cpp" ``` Output: ```json --8<-- "examples/erase__IteratorType_IteratorType.output" ``` ??? example "Example: (3) remove element from a JSON object given a key" The example shows the effect of `erase()` for different JSON types using an object key. ```cpp --8<-- "examples/erase__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/erase__object_t_key_type.output" ``` ??? example "Example: (4) remove element from a JSON object given a key using string_view" The example shows the effect of `erase()` for different JSON types using an object key. ```cpp --8<-- "examples/erase__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/erase__keytype.c++17.output" ``` ??? example "Example: (5) remove element from a JSON array given an index" The example shows the effect of `erase()` using an array index. ```cpp --8<-- "examples/erase__size_type.cpp" ``` Output: ```json --8<-- "examples/erase__size_type.output" ``` ## Version history 1. Added in version 1.0.0. Added support for binary types in version 3.8.0. 2. Added in version 1.0.0. Added support for binary types in version 3.8.0. 3. Added in version 1.0.0. 4. Added in version 3.11.0. 5. Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/error_handler_t.md000066400000000000000000000016661453145653700243140ustar00rootroot00000000000000# nlohmann::basic_json::error_handler_t ```cpp enum class error_handler_t { strict, replace, ignore }; ``` This enumeration is used in the [`dump`](dump.md) function to choose how to treat decoding errors while serializing a `basic_json` value. Three values are differentiated: strict : throw a `type_error` exception in case of invalid UTF-8 replace : replace invalid UTF-8 sequences with U+FFFD (� REPLACEMENT CHARACTER) ignore : ignore invalid UTF-8 sequences; all bytes are copied to the output unchanged ## Examples ??? example The example below shows how the different values of the `error_handler_t` influence the behavior of [`dump`](dump.md) when reading serializing an invalid UTF-8 sequence. ```cpp --8<-- "examples/error_handler_t.cpp" ``` Output: ```json --8<-- "examples/error_handler_t.output" ``` ## Version history - Added in version 3.4.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/exception.md000066400000000000000000000040531453145653700231320ustar00rootroot00000000000000# nlohmann::basic_json::exception ```cpp class exception : public std::exception; ``` This class is an extension of [`std::exception`](https://en.cppreference.com/w/cpp/error/exception) objects with a member `id` for exception ids. It is used as the base class for all exceptions thrown by the `basic_json` class. This class can hence be used as "wildcard" to catch exceptions, see example below. ```plantuml std::exception <|-- basic_json::exception basic_json::exception <|-- basic_json::parse_error basic_json::exception <|-- basic_json::invalid_iterator basic_json::exception <|-- basic_json::type_error basic_json::exception <|-- basic_json::out_of_range basic_json::exception <|-- basic_json::other_error interface std::exception {} class basic_json::exception #FFFF00 { + const int id + const char* what() const } class basic_json::parse_error { + const std::size_t byte } ``` Subclasses: - [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`other_error`](other_error.md) for exceptions indicating other library errors ## Member functions - **what** - returns explanatory string ## Member variables - **id** - the id of the exception ## Notes To have nothrow-copy-constructible exceptions, we internally use `std::runtime_error` which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor. ## Examples ??? example The following code shows how arbitrary library exceptions can be caught. ```cpp --8<-- "examples/exception.cpp" ``` Output: ```json --8<-- "examples/exception.output" ``` ## See also [List of exceptions](../../home/exceptions.md) ## Version history - Since version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/find.md000066400000000000000000000042541453145653700220570ustar00rootroot00000000000000# nlohmann::basic_json::find ```cpp // (1) iterator find(const typename object_t::key_type& key); const_iterator find(const typename object_t::key_type& key) const; // (2) template iterator find(KeyType&& key); template const_iterator find(KeyType&& key) const; ``` 1. Finds an element in a JSON object with a key equivalent to `key`. If the element is not found or the JSON value is not an object, `end()` is returned. 2. See 1. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). ## Parameters `key` (in) : key value of the element to search for. ## Return value Iterator to an element with a key equivalent to `key`. If no such element is found or the JSON value is not an object, a past-the-end iterator (see `end()`) is returned. ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Complexity Logarithmic in the size of the JSON object. ## Notes This method always returns `end()` when executed on a JSON type that is not an object. ## Examples ??? example "Example: (1) find object element by key" The example shows how `find()` is used. ```cpp --8<-- "examples/find__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/find__object_t_key_type.output" ``` ??? example "Example: (2) find object element by key using string_view" The example shows how `find()` is used. ```cpp --8<-- "examples/find__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/find__keytype.c++17.output" ``` ## See also - [contains](contains.md) checks whether a key exists ## Version history 1. Added in version 3.11.0. 2. Added in version 1.0.0. Changed to support comparable types in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/flatten.md000066400000000000000000000022141453145653700225660ustar00rootroot00000000000000# nlohmann::basic_json::flatten ```cpp basic_json flatten() const; ``` The function creates a JSON object whose keys are JSON pointers (see [RFC 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all primitive (see [`is_primitive()`](is_primitive.md) for more information). The original JSON value can be restored using the [`unflatten()`](unflatten.md) function. ## Return value an object that maps JSON pointers to primitive values ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Complexity Linear in the size the JSON value. ## Notes Empty objects and arrays are flattened to `#!json null` and will not be reconstructed correctly by the [`unflatten()`](unflatten.md) function. ## Examples ??? example The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers. ```cpp --8<-- "examples/flatten.cpp" ``` Output: ```json --8<-- "examples/flatten.output" ``` ## See also - [unflatten](unflatten.md) the reverse function ## Version history - Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/from_bjdata.md000066400000000000000000000051761453145653700234130ustar00rootroot00000000000000# nlohmann::basic_json::from_bjdata ```cpp // (1) template static basic_json from_bjdata(InputType&& i, const bool strict = true, const bool allow_exceptions = true); // (2) template static basic_json from_bjdata(IteratorType first, IteratorType last, const bool strict = true, const bool allow_exceptions = true); ``` Deserializes a given input to a JSON value using the BJData (Binary JData) serialization format. 1. Reads from a compatible input. 2. Reads from an iterator range. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/bjdata.md). ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer - a C-style array of characters - a pointer to a null-terminated string of single byte characters - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type ## Parameters `i` (in) : an input in BJData format convertible to an input adapter `first` (in) : iterator to start of the input `last` (in) : iterator to end of the input `strict` (in) : whether to expect the input to be consumed until EOF (`#!cpp true` by default) `allow_exceptions` (in) : whether to throw exceptions in case of a parse error (optional, `#!cpp true` by default) ## Return value deserialized JSON value; in case of a parse error and `allow_exceptions` set to `#!cpp false`, the return value will be `value_t::discarded`. The latter can be checked with [`is_discarded`](is_discarded.md). ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions - Throws [parse_error.110](../../home/exceptions.md#jsonexceptionparse_error110) if the given input ends prematurely or the end of file was not reached when `strict` was set to true - Throws [parse_error.112](../../home/exceptions.md#jsonexceptionparse_error112) if a parse error occurs - Throws [parse_error.113](../../home/exceptions.md#jsonexceptionparse_error113) if a string could not be parsed successfully ## Complexity Linear in the size of the input. ## Examples ??? example The example shows the deserialization of a byte vector in BJData format to a JSON value. ```cpp --8<-- "examples/from_bjdata.cpp" ``` Output: ```json --8<-- "examples/from_bjdata.output" ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/from_bson.md000066400000000000000000000066271453145653700231310ustar00rootroot00000000000000# nlohmann::basic_json::from_bson ```cpp // (1) template static basic_json from_bson(InputType&& i, const bool strict = true, const bool allow_exceptions = true); // (2) template static basic_json from_bson(IteratorType first, IteratorType last, const bool strict = true, const bool allow_exceptions = true); ``` Deserializes a given input to a JSON value using the BSON (Binary JSON) serialization format. 1. Reads from a compatible input. 2. Reads from an iterator range. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/bson.md). ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer - a C-style array of characters - a pointer to a null-terminated string of single byte characters - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type ## Parameters `i` (in) : an input in BSON format convertible to an input adapter `first` (in) : iterator to start of the input `last` (in) : iterator to end of the input `strict` (in) : whether to expect the input to be consumed until EOF (`#!cpp true` by default) `allow_exceptions` (in) : whether to throw exceptions in case of a parse error (optional, `#!cpp true` by default) ## Return value deserialized JSON value; in case of a parse error and `allow_exceptions` set to `#!cpp false`, the return value will be `value_t::discarded`. The latter can be checked with [`is_discarded`](is_discarded.md). ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions Throws [`parse_error.114`](../../home/exceptions.md#jsonexceptionparse_error114) if an unsupported BSON record type is encountered. ## Complexity Linear in the size of the input. ## Examples ??? example The example shows the deserialization of a byte vector in BSON format to a JSON value. ```cpp --8<-- "examples/from_bson.cpp" ``` Output: ```json --8<-- "examples/from_bson.output" ``` ## See also - [BSON specification](http://bsonspec.org/spec.html) - [to_bson](to_bson.md) for the analogous serialization - [from_cbor](from_cbor.md) for the related CBOR format - [from_msgpack](from_msgpack.md) for the related MessagePack format - [from_ubjson](from_ubjson.md) for the related UBJSON format ## Version history - Added in version 3.4.0. !!! warning "Deprecation" - Overload (2) replaces calls to `from_bson` with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_bson(ptr, len, ...);` with `#!cpp from_bson(ptr, ptr+len, ...);`. - Overload (2) replaces calls to `from_bson` with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_bson({ptr, ptr+len}, ...);` with `#!cpp from_bson(ptr, ptr+len, ...);`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/from_cbor.md000066400000000000000000000101141453145653700230770ustar00rootroot00000000000000# nlohmann::basic_json::from_cbor ```cpp // (1) template static basic_json from_cbor(InputType&& i, const bool strict = true, const bool allow_exceptions = true, const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error); // (2) template static basic_json from_cbor(IteratorType first, IteratorType last, const bool strict = true, const bool allow_exceptions = true, const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error); ``` Deserializes a given input to a JSON value using the CBOR (Concise Binary Object Representation) serialization format. 1. Reads from a compatible input. 2. Reads from an iterator range. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/cbor.md). ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer - a C-style array of characters - a pointer to a null-terminated string of single byte characters - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type ## Parameters `i` (in) : an input in CBOR format convertible to an input adapter `first` (in) : iterator to start of the input `last` (in) : iterator to end of the input `strict` (in) : whether to expect the input to be consumed until EOF (`#!cpp true` by default) `allow_exceptions` (in) : whether to throw exceptions in case of a parse error (optional, `#!cpp true` by default) `tag_handler` (in) : how to treat CBOR tags (optional, `error` by default); see [`cbor_tag_handler_t`](cbor_tag_handler_t.md) for more information ## Return value deserialized JSON value; in case of a parse error and `allow_exceptions` set to `#!cpp false`, the return value will be `value_t::discarded`. The latter can be checked with [`is_discarded`](is_discarded.md). ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions - Throws [parse_error.110](../../home/exceptions.md#jsonexceptionparse_error110) if the given input ends prematurely or the end of file was not reached when `strict` was set to true - Throws [parse_error.112](../../home/exceptions.md#jsonexceptionparse_error112) if unsupported features from CBOR were used in the given input or if the input is not valid CBOR - Throws [parse_error.113](../../home/exceptions.md#jsonexceptionparse_error113) if a string was expected as map key, but not found ## Complexity Linear in the size of the input. ## Examples ??? example The example shows the deserialization of a byte vector in CBOR format to a JSON value. ```cpp --8<-- "examples/from_cbor.cpp" ``` Output: ```json --8<-- "examples/from_cbor.output" ``` ## Version history - Added in version 2.0.9. - Parameter `start_index` since version 2.1.1. - Changed to consume input adapters, removed `start_index` parameter, and added `strict` parameter in version 3.0.0. - Added `allow_exceptions` parameter in version 3.2.0. - Added `tag_handler` parameter in version 3.9.0. !!! warning "Deprecation" - Overload (2) replaces calls to `from_cbor` with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_cbor(ptr, len, ...);` with `#!cpp from_cbor(ptr, ptr+len, ...);`. - Overload (2) replaces calls to `from_cbor` with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_cbor({ptr, ptr+len}, ...);` with `#!cpp from_cbor(ptr, ptr+len, ...);`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/from_msgpack.md000066400000000000000000000073601453145653700236100ustar00rootroot00000000000000# nlohmann::basic_json::from_msgpack ```cpp // (1) template static basic_json from_msgpack(InputType&& i, const bool strict = true, const bool allow_exceptions = true); // (2) template static basic_json from_msgpack(IteratorType first, IteratorType last, const bool strict = true, const bool allow_exceptions = true); ``` Deserializes a given input to a JSON value using the MessagePack serialization format. 1. Reads from a compatible input. 2. Reads from an iterator range. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/messagepack.md). ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer - a C-style array of characters - a pointer to a null-terminated string of single byte characters - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type ## Parameters `i` (in) : an input in MessagePack format convertible to an input adapter `first` (in) : iterator to start of the input `last` (in) : iterator to end of the input `strict` (in) : whether to expect the input to be consumed until EOF (`#!cpp true` by default) `allow_exceptions` (in) : whether to throw exceptions in case of a parse error (optional, `#!cpp true` by default) ## Return value deserialized JSON value; in case of a parse error and `allow_exceptions` set to `#!cpp false`, the return value will be `value_t::discarded`. The latter can be checked with [`is_discarded`](is_discarded.md). ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions - Throws [parse_error.110](../../home/exceptions.md#jsonexceptionparse_error110) if the given input ends prematurely or the end of file was not reached when `strict` was set to true - Throws [parse_error.112](../../home/exceptions.md#jsonexceptionparse_error112) if unsupported features from MessagePack were used in the given input or if the input is not valid MessagePack - Throws [parse_error.113](../../home/exceptions.md#jsonexceptionparse_error113) if a string was expected as map key, but not found ## Complexity Linear in the size of the input. ## Examples ??? example The example shows the deserialization of a byte vector in MessagePack format to a JSON value. ```cpp --8<-- "examples/from_msgpack.cpp" ``` Output: ```json --8<-- "examples/from_msgpack.output" ``` ## Version history - Added in version 2.0.9. - Parameter `start_index` since version 2.1.1. - Changed to consume input adapters, removed `start_index` parameter, and added `strict` parameter in version 3.0.0. - Added `allow_exceptions` parameter in version 3.2.0. !!! warning "Deprecation" - Overload (2) replaces calls to `from_msgpack` with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_msgpack(ptr, len, ...);` with `#!cpp from_msgpack(ptr, ptr+len, ...);`. - Overload (2) replaces calls to `from_cbor` with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_msgpack({ptr, ptr+len}, ...);` with `#!cpp from_msgpack(ptr, ptr+len, ...);`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/from_ubjson.md000066400000000000000000000067441453145653700234700ustar00rootroot00000000000000# nlohmann::basic_json::from_ubjson ```cpp // (1) template static basic_json from_ubjson(InputType&& i, const bool strict = true, const bool allow_exceptions = true); // (2) template static basic_json from_ubjson(IteratorType first, IteratorType last, const bool strict = true, const bool allow_exceptions = true); ``` Deserializes a given input to a JSON value using the UBJSON (Universal Binary JSON) serialization format. 1. Reads from a compatible input. 2. Reads from an iterator range. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/ubjson.md). ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer - a C-style array of characters - a pointer to a null-terminated string of single byte characters - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type ## Parameters `i` (in) : an input in UBJSON format convertible to an input adapter `first` (in) : iterator to start of the input `last` (in) : iterator to end of the input `strict` (in) : whether to expect the input to be consumed until EOF (`#!cpp true` by default) `allow_exceptions` (in) : whether to throw exceptions in case of a parse error (optional, `#!cpp true` by default) ## Return value deserialized JSON value; in case of a parse error and `allow_exceptions` set to `#!cpp false`, the return value will be `value_t::discarded`. The latter can be checked with [`is_discarded`](is_discarded.md). ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions - Throws [parse_error.110](../../home/exceptions.md#jsonexceptionparse_error110) if the given input ends prematurely or the end of file was not reached when `strict` was set to true - Throws [parse_error.112](../../home/exceptions.md#jsonexceptionparse_error112) if a parse error occurs - Throws [parse_error.113](../../home/exceptions.md#jsonexceptionparse_error113) if a string could not be parsed successfully ## Complexity Linear in the size of the input. ## Examples ??? example The example shows the deserialization of a byte vector in UBJSON format to a JSON value. ```cpp --8<-- "examples/from_ubjson.cpp" ``` Output: ```json --8<-- "examples/from_ubjson.output" ``` ## Version history - Added in version 3.1.0. - Added `allow_exceptions` parameter in version 3.2.0. !!! warning "Deprecation" - Overload (2) replaces calls to `from_ubjson` with a pointer and a length as first two parameters, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_ubjson(ptr, len, ...);` with `#!cpp from_ubjson(ptr, ptr+len, ...);`. - Overload (2) replaces calls to `from_ubjson` with a pair of iterators as their first parameter, which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp from_ubjson({ptr, ptr+len}, ...);` with `#!cpp from_ubjson(ptr, ptr+len, ...);`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/front.md000066400000000000000000000024361453145653700222670ustar00rootroot00000000000000# nlohmann::basic_json::front ```cpp reference front(); const_reference front() const; ``` Returns a reference to the first element in the container. For a JSON container `#!cpp c`, the expression `#!cpp c.front()` is equivalent to `#!cpp *c.begin()`. ## Return value In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned. ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions If the JSON value is `#!json null`, exception [`invalid_iterator.214`](../../home/exceptions.md#jsonexceptioninvalid_iterator214) is thrown. ## Complexity Constant. ## Notes !!! info "Precondition" The array or object must not be empty. Calling `front` on an empty array or object yields undefined behavior. ## Examples ??? example The following code shows an example for `front()`. ```cpp --8<-- "examples/front.cpp" ``` Output: ```json --8<-- "examples/front.output" ``` ## See also - [back](back.md) to access the last element ## Version history - Added in version 1.0.0. - Adjusted code to return reference to binary values in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/get.md000066400000000000000000000104231453145653700217110ustar00rootroot00000000000000# nlohmann::basic_json::get ```cpp // (1) template ValueType get() const noexcept( noexcept(JSONSerializer::from_json( std::declval(), std::declval()))); // (2) template BasicJsonType get() const; // (3) template PointerType get_ptr(); template constexpr const PointerType get_ptr() const noexcept; ``` 1. Explicit type conversion between the JSON value and a compatible value which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). The value is converted by calling the `json_serializer` `from_json()` method. The function is equivalent to executing ```cpp ValueType ret; JSONSerializer::from_json(*this, ret); return ret; ``` This overload is chosen if: - `ValueType` is not `basic_json`, - `json_serializer` has a `from_json()` method of the form `void from_json(const basic_json&, ValueType&)`, and - `json_serializer` does not have a `from_json()` method of the form `ValueType from_json(const basic_json&)` If the type is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible), the value is converted by calling the `json_serializer` `from_json()` method. The function is then equivalent to executing ```cpp return JSONSerializer::from_json(*this); ``` This overload is chosen if: - `ValueType` is not `basic_json` and - `json_serializer` has a `from_json()` method of the form `ValueType from_json(const basic_json&)` If `json_serializer` has both overloads of `from_json()`, the latter one is chosen. 2. Overload for `basic_json` specializations. The function is equivalent to executing ```cpp return *this; ``` 3. Explicit pointer access to the internally stored JSON value. No copies are made. ## Template parameters `ValueType` : the value type to return `BasicJsonType` : a specialization of `basic_json` `PointerType` : pointer type; must be a pointer to [`array_t`](array_t.md), [`object_t`](object_t.md), [`string_t`](string_t.md), [`boolean_t`](boolean_t.md), [`number_integer_t`](number_integer_t.md), or [`number_unsigned_t`](number_unsigned_t.md), [`number_float_t`](number_float_t.md), or [`binary_t`](binary_t.md). Other types will not compile. ## Return value 1. copy of the JSON value, converted to `ValueType` 2. a copy of `#!cpp *this`, converted into `BasicJsonType` 3. pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; `#!cpp nullptr` otherwise ## Exceptions Depends on what `json_serializer` `from_json()` method throws ## Notes !!! danger "Undefined behavior" Writing data to the pointee (overload 3) of the result yields an undefined state. ## Examples ??? example The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard `std::vector`, (3) A JSON object can be converted to C++ associative containers such as `std::unordered_map`. ```cpp --8<-- "examples/get__ValueType_const.cpp" ``` Output: ```json --8<-- "examples/get__ValueType_const.output" ``` ??? example The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a `#cpp nullptr` is returned if the value and the requested pointer type does not match. ```cpp --8<-- "examples/get__PointerType.cpp" ``` Output: ```json --8<-- "examples/get__PointerType.output" ``` ## Version history 1. Since version 2.1.0. 2. Since version 2.1.0. Extended to work with other specializations of `basic_json` in version 3.2.0. 3. Since version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/get_allocator.md000066400000000000000000000007661453145653700237620ustar00rootroot00000000000000# nlohmann::basic_json::get_allocator ```cpp static allocator_type get_allocator(); ``` Returns the allocator associated with the container. ## Return value associated allocator ## Examples ??? example The example shows how `get_allocator()` is used to created `json` values. ```cpp --8<-- "examples/get_allocator.cpp" ``` Output: ```json --8<-- "examples/get_allocator.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/get_binary.md000066400000000000000000000013511453145653700232550ustar00rootroot00000000000000# nlohmann::basic_json::get_binary ```cpp binary_t& get_binary(); const binary_t& get_binary() const; ``` Returns a reference to the stored binary value. ## Return value Reference to binary value. ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions Throws [`type_error.302`](../../home/exceptions.md#jsonexceptiontype_error302) if the value is not binary ## Complexity Constant. ## Examples ??? example The following code shows how to query a binary value. ```cpp --8<-- "examples/get_binary.cpp" ``` Output: ```json --8<-- "examples/get_binary.output" ``` ## Version history - Added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/get_ptr.md000066400000000000000000000027731453145653700226070ustar00rootroot00000000000000# nlohmann::basic_json::get_ptr ```cpp template PointerType get_ptr() noexcept; template constexpr const PointerType get_ptr() const noexcept; ``` Implicit pointer access to the internally stored JSON value. No copies are made. ## Template parameters `PointerType` : pointer type; must be a pointer to [`array_t`](array_t.md), [`object_t`](object_t.md), [`string_t`](string_t.md), [`boolean_t`](boolean_t.md), [`number_integer_t`](number_integer_t.md), or [`number_unsigned_t`](number_unsigned_t.md), [`number_float_t`](number_float_t.md), or [`binary_t`](binary_t.md). Other types will not compile. ## Return value pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; `#!cpp nullptr` otherwise ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant. ## Notes !!! danger "Undefined behavior" Writing data to the pointee of the result yields an undefined state. ## Examples ??? example The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a `#!cpp nullptr` is returned if the value and the requested pointer type does not match. ```cpp --8<-- "examples/get_ptr.cpp" ``` Output: ```json --8<-- "examples/get_ptr.output" ``` ## Version history - Added in version 1.0.0. - Extended to binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/get_ref.md000066400000000000000000000032161453145653700225470ustar00rootroot00000000000000# nlohmann::basic_json::get_ref ```cpp template ReferenceType get_ref(); template const ReferenceType get_ref() const; ``` Implicit reference access to the internally stored JSON value. No copies are made. ## Template parameters `ReferenceType` : reference type; must be a reference to [`array_t`](array_t.md), [`object_t`](object_t.md), [`string_t`](string_t.md), [`boolean_t`](boolean_t.md), [`number_integer_t`](number_integer_t.md), or [`number_unsigned_t`](number_unsigned_t.md), [`number_float_t`](number_float_t.md), or [`binary_t`](binary_t.md). Enforced by a static assertion. ## Return value reference to the internally stored JSON value if the requested reference type fits to the JSON value; throws [`type_error.303`](../../home/exceptions.md#jsonexceptiontype_error303) otherwise ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions Throws [`type_error.303`](../../home/exceptions.md#jsonexceptiontype_error303) if the requested reference type does not match the stored JSON value type; example: `"incompatible ReferenceType for get_ref, actual type is binary"`. ## Complexity Constant. ## Notes !!! danger "Undefined behavior" Writing data to the referee of the result yields an undefined state. ## Examples ??? example The example shows several calls to `get_ref()`. ```cpp --8<-- "examples/get_ref.cpp" ``` Output: ```json --8<-- "examples/get_ref.output" ``` ## Version history - Added in version 1.1.0. - Extended to binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/get_to.md000066400000000000000000000027561453145653700224250ustar00rootroot00000000000000# nlohmann::basic_json::get_to ```cpp template ValueType& get_to(ValueType& v) const noexcept( noexcept(JSONSerializer::from_json( std::declval(), v))); ``` Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the `json_serializer` `from_json()` method. The function is equivalent to executing ```cpp ValueType v; JSONSerializer::from_json(*this, v); ``` This overload is chosen if: - `ValueType` is not `basic_json`, - `json_serializer` has a `from_json()` method of the form `void from_json(const basic_json&, ValueType&)` ## Template parameters `ValueType` : the value type to return ## Return value the input parameter, allowing chaining calls ## Exceptions Depends on what `json_serializer` `from_json()` method throws ## Examples ??? example The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard `#!cpp std::vector`, (3) A JSON object can be converted to C++ associative containers such as `#cpp std::unordered_map`. ```cpp --8<-- "examples/get_to.cpp" ``` Output: ```json --8<-- "examples/get_to.output" ``` ## Version history - Since version 3.3.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/index.md000066400000000000000000000407661453145653700222560ustar00rootroot00000000000000# nlohmann::basic_json Defined in header `` ```cpp template< template class ObjectType = std::map, template class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template class AllocatorType = std::allocator, template class JSONSerializer = adl_serializer, class BinaryType = std::vector, class CustomBaseClass = void > class basic_json; ``` ## Template parameters | Template parameter | Description | Derived type | |----------------------|---------------------------------------------------------------------------|---------------------------------------------| | `ObjectType` | type for JSON objects | [`object_t`](object_t.md) | | `ArrayType` | type for JSON arrays | [`array_t`](array_t.md) | | `StringType` | type for JSON strings and object keys | [`string_t`](string_t.md) | | `BooleanType` | type for JSON booleans | [`boolean_t`](boolean_t.md) | | `NumberIntegerType` | type for JSON integer numbers | [`number_integer_t`](number_integer_t.md) | | `NumberUnsignedType` | type for JSON unsigned integer numbers | [`number_unsigned_t`](number_unsigned_t.md) | | `NumberFloatType` | type for JSON floating-point numbers | [`number_float_t`](number_float_t.md) | | `AllocatorType` | type of the allocator to use | | | `JSONSerializer` | the serializer to resolve internal calls to `to_json()` and `from_json()` | [`json_serializer`](json_serializer.md) | | `BinaryType` | type for binary arrays | [`binary_t`](binary_t.md) | | `CustomBaseClass` | extension point for user code | [`json_base_class_t`](json_base_class_t.md) | ## Specializations - [**json**](../json.md) - default specialization - [**ordered_json**](../ordered_json.md) - specialization that maintains the insertion order of object keys ## Iterator invalidation Todo ## Requirements The class satisfies the following concept requirements: ### Basic - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible): JSON values can be default constructed. The result will be a JSON null value. - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible): A JSON value can be constructed from an rvalue argument. - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible): A JSON value can be copy-constructed from an lvalue expression. - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable): A JSON value can be assigned from an rvalue argument. - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable): A JSON value can be copy-assigned from an lvalue expression. - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible): JSON values can be destructed. ### Layout - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType): JSON values have [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout): All non-static data members are private and standard layout types, the class has no virtual functions or (virtual) base classes. ### Library-wide - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable): JSON values can be compared with `==`, see [`operator==`](operator_eq.md). - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable): JSON values can be compared with `<`, see [`operator<`](operator_le.md). - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable): Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of other compatible types, using unqualified function `swap`. - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer): JSON values can be compared against `std::nullptr_t` objects which are used to model the `null` value. ### Container - [Container](https://en.cppreference.com/w/cpp/named_req/Container): JSON values can be used like STL containers and provide iterator access. - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer): JSON values can be used like STL containers and provide reverse iterator access. ## Member types - [**adl_serializer**](../adl_serializer/index.md) - the default serializer - [**value_t**](value_t.md) - the JSON type enumeration - [**json_pointer**](../json_pointer/index.md) - JSON Pointer implementation - [**json_serializer**](json_serializer.md) - type of the serializer to for conversions from/to JSON - [**error_handler_t**](error_handler_t.md) - type to choose behavior on decoding errors - [**cbor_tag_handler_t**](cbor_tag_handler_t.md) - type to choose how to handle CBOR tags - **initializer_list_t** - type for initializer lists of `basic_json` values - [**input_format_t**](input_format_t.md) - type to choose the format to parse - [**json_sax_t**](../json_sax/index.md) - type for SAX events ### Exceptions - [**exception**](exception.md) - general exception of the `basic_json` class - [**parse_error**](parse_error.md) - exception indicating a parse error - [**invalid_iterator**](invalid_iterator.md) - exception indicating errors with iterators - [**type_error**](type_error.md) - exception indicating executing a member function with a wrong type - [**out_of_range**](out_of_range.md) - exception indicating access out of the defined range - [**other_error**](other_error.md) - exception indicating other library errors ### Container types | Type | Definition | |--------------------------|-----------------------------------------------------------------------------------------------------------| | `value_type` | `#!cpp basic_json` | | `reference` | `#!cpp value_type&` | | `const_reference` | `#!cpp const value_type&` | | `difference_type` | `#!cpp std::ptrdiff_t` | | `size_type` | `#!cpp std::size_t` | | `allocator_type` | `#!cpp AllocatorType` | | `pointer` | `#!cpp std::allocator_traits::pointer` | | `const_pointer` | `#!cpp std::allocator_traits::const_pointer` | | `iterator` | [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator) | | `const_iterator` | constant [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator) | | `reverse_iterator` | reverse iterator, derived from `iterator` | | `const_reverse_iterator` | reverse iterator, derived from `const_iterator` | | `iteration_proxy` | helper type for [`items`](items.md) function | ### JSON value data types - [**array_t**](array_t.md) - type for arrays - [**binary_t**](binary_t.md) - type for binary arrays - [**boolean_t**](boolean_t.md) - type for booleans - [**default_object_comparator_t**](default_object_comparator_t.md) - default comparator for objects - [**number_float_t**](number_float_t.md) - type for numbers (floating-point) - [**number_integer_t**](number_integer_t.md) - type for numbers (integer) - [**number_unsigned_t**](number_unsigned_t.md) - type for numbers (unsigned) - [**object_comparator_t**](object_comparator_t.md) - comparator for objects - [**object_t**](object_t.md) - type for objects - [**string_t**](string_t.md) - type for strings ### Parser callback - [**parse_event_t**](parse_event_t.md) - parser event types - [**parser_callback_t**](parser_callback_t.md) - per-element parser callback type ## Member functions - [(constructor)](basic_json.md) - [(destructor)](~basic_json.md) - [**operator=**](operator=.md) - copy assignment - [**array**](array_t.md) (_static_) - explicitly create an array - [**binary**](binary.md) (_static_) - explicitly create a binary array - [**object**](object_t.md) (_static_) - explicitly create an object ### Object inspection Functions to inspect the type of a JSON value. - [**type**](type.md) - return the type of the JSON value - [**operator value_t**](operator_value_t.md) - return the type of the JSON value - [**type_name**](type_name.md) - return the type as string - [**is_primitive**](is_primitive.md) - return whether type is primitive - [**is_structured**](is_structured.md) - return whether type is structured - [**is_null**](is_null.md) - return whether value is null - [**is_boolean**](is_boolean.md) - return whether value is a boolean - [**is_number**](is_number.md) - return whether value is a number - [**is_number_integer**](is_number_integer.md) - return whether value is an integer number - [**is_number_unsigned**](is_number_unsigned.md) - return whether value is an unsigned integer number - [**is_number_float**](is_number_float.md) - return whether value is a floating-point number - [**is_object**](is_object.md) - return whether value is an object - [**is_array**](is_array.md) - return whether value is an array - [**is_string**](is_string.md) - return whether value is a string - [**is_binary**](is_binary.md) - return whether value is a binary array - [**is_discarded**](is_discarded.md) - return whether value is discarded ### Value access Direct access to the stored value of a JSON value. - [**get**](get.md) - get a value - [**get_to**](get_to.md) - get a value and write it to a destination - [**get_ptr**](get_ptr.md) - get a pointer value - [**get_ref**](get_ref.md) - get a reference value - [**operator ValueType**](operator_ValueType.md) - get a value - [**get_binary**](get_binary.md) - get a binary value ### Element access Access to the JSON value - [**at**](at.md) - access specified element with bounds checking - [**operator[]**](operator[].md) - access specified element - [**value**](value.md) - access specified object element with default value - [**front**](front.md) - access the first element - [**back**](back.md) - access the last element ### Lookup - [**find**](find.md) - find an element in a JSON object - [**count**](count.md) - returns the number of occurrences of a key in a JSON object - [**contains**](contains.md) - check the existence of an element in a JSON object ### Iterators - [**begin**](begin.md) - returns an iterator to the first element - [**cbegin**](cbegin.md) - returns a const iterator to the first element - [**end**](end.md) - returns an iterator to one past the last element - [**cend**](cend.md) - returns a const iterator to one past the last element - [**rbegin**](rbegin.md) - returns an iterator to the reverse-beginning - [**rend**](rend.md) - returns an iterator to the reverse-end - [**crbegin**](crbegin.md) - returns a const iterator to the reverse-beginning - [**crend**](crend.md) - returns a const iterator to the reverse-end - [**items**](items.md) - wrapper to access iterator member functions in range-based for ### Capacity - [**empty**](empty.md) - checks whether the container is empty - [**size**](size.md) - returns the number of elements - [**max_size**](max_size.md) - returns the maximum possible number of elements ### Modifiers - [**clear**](clear.md) - clears the contents - [**push_back**](push_back.md) - add a value to an array/object - [**operator+=**](operator+=.md) - add a value to an array/object - [**emplace_back**](emplace_back.md) - add a value to an array - [**emplace**](emplace.md) - add a value to an object if key does not exist - [**erase**](erase.md) - remove elements - [**insert**](insert.md) - inserts elements - [**update**](update.md) - updates a JSON object from another object, overwriting existing keys - [**swap**](swap.md) - exchanges the values ### Lexicographical comparison operators - [**operator==**](operator_eq.md) - comparison: equal - [**operator!=**](operator_ne.md) - comparison: not equal - [**operator<**](operator_lt.md) - comparison: less than - [**operator>**](operator_gt.md) - comparison: greater than - [**operator<=**](operator_le.md) - comparison: less than or equal - [**operator>=**](operator_ge.md) - comparison: greater than or equal - [**operator<=>**](operator_spaceship.md) - comparison: 3-way ### Serialization / Dumping - [**dump**](dump.md) - serialization ### Deserialization / Parsing - [**parse**](parse.md) (_static_) - deserialize from a compatible input - [**accept**](accept.md) (_static_) - check if the input is valid JSON - [**sax_parse**](sax_parse.md) (_static_) - generate SAX events ### JSON Pointer functions - [**flatten**](flatten.md) - return flattened JSON value - [**unflatten**](unflatten.md) - unflatten a previously flattened JSON value ### JSON Patch functions - [**patch**](patch.md) - applies a JSON patch - [**patch_inplace**](patch_inplace.md) - applies a JSON patch in place - [**diff**](diff.md) (_static_) - creates a diff as a JSON patch ### JSON Merge Patch functions - [**merge_patch**](merge_patch.md) - applies a JSON Merge Patch ## Static functions - [**meta**](meta.md) - returns version information on the library - [**get_allocator**](get_allocator.md) - returns the allocator associated with the container ### Binary formats - [**from_bjdata**](from_bjdata.md) (_static_) - create a JSON value from an input in BJData format - [**from_bson**](from_bson.md) (_static_) - create a JSON value from an input in BSON format - [**from_cbor**](from_cbor.md) (_static_) - create a JSON value from an input in CBOR format - [**from_msgpack**](from_msgpack.md) (_static_) - create a JSON value from an input in MessagePack format - [**from_ubjson**](from_ubjson.md) (_static_) - create a JSON value from an input in UBJSON format - [**to_bjdata**](to_bjdata.md) (_static_) - create a BJData serialization of a given JSON value - [**to_bson**](to_bson.md) (_static_) - create a BSON serialization of a given JSON value - [**to_cbor**](to_cbor.md) (_static_) - create a CBOR serialization of a given JSON value - [**to_msgpack**](to_msgpack.md) (_static_) - create a MessagePack serialization of a given JSON value - [**to_ubjson**](to_ubjson.md) (_static_) - create a UBJSON serialization of a given JSON value ## Non-member functions - [**operator<<(std::ostream&)**](../operator_ltlt.md) - serialize to stream - [**operator>>(std::istream&)**](../operator_gtgt.md) - deserialize from stream - [**to_string**](to_string.md) - user-defined `to_string` function for JSON values ## Literals - [**operator""_json**](../operator_literal_json.md) - user-defined string literal for JSON values ## Helper classes - [**std::hash<basic_json>**](std_hash.md) - return a hash value for a JSON object - [**std::swap<basic_json>**](std_swap.md) - exchanges the values of two JSON objects ## Examples ??? example The example shows how the library is used. ```cpp --8<-- "examples/README.cpp" ``` Output: ```json --8<-- "examples/README.output" ``` ## See also - [RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format](https://tools.ietf.org/html/rfc8259) ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/input_format_t.md000066400000000000000000000015171453145653700241700ustar00rootroot00000000000000# nlohmann::basic_json::input_format_t ```cpp enum class input_format_t { json, cbor, msgpack, ubjson, bson, bjdata }; ``` This enumeration is used in the [`sax_parse`](sax_parse.md) function to choose the input format to parse: json : JSON (JavaScript Object Notation) cbor : CBOR (Concise Binary Object Representation) msgpack : MessagePack ubjson : UBJSON (Universal Binary JSON) bson : BSON (Binary JSON) bjdata : BJData (Binary JData) ## Examples ??? example The example below shows how an `input_format_t` enum value is passed to `sax_parse` to set the input format to CBOR. ```cpp --8<-- "examples/sax_parse__binary.cpp" ``` Output: ```json --8<-- "examples/sax_parse__binary.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/insert.md000066400000000000000000000146001453145653700224370ustar00rootroot00000000000000# nlohmann::basic_json::insert ```cpp // (1) iterator insert(const_iterator pos, const basic_json& val); iterator insert(const_iterator pos, basic_json&& val); // (2) iterator insert(const_iterator pos, size_type cnt, const basic_json& val); // (3) iterator insert(const_iterator pos, const_iterator first, const_iterator last); // (4) iterator insert(const_iterator pos, initializer_list_t ilist); // (5) void insert(const_iterator first, const_iterator last); ``` 1. Inserts element `val` into array before iterator `pos`. 2. Inserts `cnt` copies of `val` into array before iterator `pos`. 3. Inserts elements from range `[first, last)` into array before iterator `pos`. 4. Inserts elements from initializer list `ilist` into array before iterator `pos`. 5. Inserts elements from range `[first, last)` into object. ## Parameters `pos` (in) : iterator before which the content will be inserted; may be the `end()` iterator `val` (in) : value to insert `cnt` (in) : number of copies of `val` to insert `first` (in) : begin of the range of elements to insert `last` (in) : end of the range of elements to insert `ilist` (in) : initializer list to insert the values from ## Return value 1. iterator pointing to the inserted `val`. 2. iterator pointing to the first element inserted, or `pos` if `#!cpp cnt==0` 3. iterator pointing to the first element inserted, or `pos` if `#!cpp first==last` 4. iterator pointing to the first element inserted, or `pos` if `ilist` is empty 5. (none) ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. The function can throw the following exceptions: - Throws [`type_error.309`](../../home/exceptions.md#jsonexceptiontype_error309) if called on JSON values other than arrays; example: `"cannot use insert() with string"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` 2. The function can throw the following exceptions: - Throws [`type_error.309`](../../home/exceptions.md#jsonexceptiontype_error309) if called on JSON values other than arrays; example: `"cannot use insert() with string"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` 3. The function can throw the following exceptions: - Throws [`type_error.309`](../../home/exceptions.md#jsonexceptiontype_error309) if called on JSON values other than arrays; example: `"cannot use insert() with string"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` - Throws [`invalid_iterator.210`](../../home/exceptions.md#jsonexceptioninvalid_iterator210) if `first` and `last` do not belong to the same JSON value; example: `"iterators do not fit"` - Throws [`invalid_iterator.211`](../../home/exceptions.md#jsonexceptioninvalid_iterator211) if `first` or `last` are iterators into container for which insert is called; example: `"passed iterators may not belong to container"` 4. The function can throw the following exceptions: - Throws [`type_error.309`](../../home/exceptions.md#jsonexceptiontype_error309) if called on JSON values other than arrays; example: `"cannot use insert() with string"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` 5. The function can throw the following exceptions: - Throws [`type_error.309`](../../home/exceptions.md#jsonexceptiontype_error309) if called on JSON values other than objects; example: `"cannot use insert() with string"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` - Throws [`invalid_iterator.210`](../../home/exceptions.md#jsonexceptioninvalid_iterator210) if `first` and `last` do not belong to the same JSON value; example: `"iterators do not fit"` ## Complexity 1. Constant plus linear in the distance between `pos` and end of the container. 2. Linear in `cnt` plus linear in the distance between `pos` and end of the container. 3. Linear in `#!cpp std::distance(first, last)` plus linear in the distance between `pos` and end of the container. 4. Linear in `ilist.size()` plus linear in the distance between `pos` and end of the container. 5. Logarithmic: `O(N*log(size() + N))`, where `N` is the number of elements to insert. ## Examples ??? example "Example (1): insert element into array" The example shows how `insert()` is used. ```cpp --8<-- "examples/insert.cpp" ``` Output: ```json --8<-- "examples/insert.output" ``` ??? example "Example (2): insert copies of element into array" The example shows how `insert()` is used. ```cpp --8<-- "examples/insert__count.cpp" ``` Output: ```json --8<-- "examples/insert__count.output" ``` ??? example "Example (3): insert range of elements into array" The example shows how `insert()` is used. ```cpp --8<-- "examples/insert__range.cpp" ``` Output: ```json --8<-- "examples/insert__range.output" ``` ??? example "Example (4): insert elements from initializer list into array" The example shows how `insert()` is used. ```cpp --8<-- "examples/insert__ilist.cpp" ``` Output: ```json --8<-- "examples/insert__ilist.output" ``` ??? example "Example (5): insert range of elements into object" The example shows how `insert()` is used. ```cpp --8<-- "examples/insert__range_object.cpp" ``` Output: ```json --8<-- "examples/insert__range_object.output" ``` ## Version history 1. Added in version 1.0.0. 2. Added in version 1.0.0. 3. Added in version 1.0.0. 4. Added in version 1.0.0. 5. Added in version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/invalid_iterator.md000066400000000000000000000032671453145653700245010ustar00rootroot00000000000000# nlohmann::basic_json::invalid_iterator ```cpp class invalid_iterator : public exception; ``` This exception is thrown if iterators passed to a library function do not match the expected semantics. Exceptions have ids 2xx (see [list of iterator errors](../../home/exceptions.md#iterator-errors)). ```plantuml std::exception <|-- basic_json::exception basic_json::exception <|-- basic_json::parse_error basic_json::exception <|-- basic_json::invalid_iterator basic_json::exception <|-- basic_json::type_error basic_json::exception <|-- basic_json::out_of_range basic_json::exception <|-- basic_json::other_error interface std::exception {} class basic_json::exception { + const int id + const char* what() const } class basic_json::parse_error { + const std::size_t byte } class basic_json::invalid_iterator #FFFF00 {} ``` ## Member functions - **what** - returns explanatory string ## Member variables - **id** - the id of the exception ## Examples ??? example The following code shows how a `invalid_iterator` exception can be caught. ```cpp --8<-- "examples/invalid_iterator.cpp" ``` Output: ```json --8<-- "examples/invalid_iterator.output" ``` ## See also - [List of iterator errors](../../home/exceptions.md#iterator-errors) - [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`other_error`](other_error.md) for exceptions indicating other library errors ## Version history - Since version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_array.md000066400000000000000000000012211453145653700227370ustar00rootroot00000000000000# nlohmann::basic_json::is_array ```cpp constexpr bool is_array() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is an array. ## Return value `#!cpp true` if type is an array, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_array()` for all JSON types. ```cpp --8<-- "examples/is_array.cpp" ``` Output: ```json --8<-- "examples/is_array.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_binary.md000066400000000000000000000012301453145653700231050ustar00rootroot00000000000000# nlohmann::basic_json::is_binary ```cpp constexpr bool is_binary() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is binary array. ## Return value `#!cpp true` if type is binary, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_binary()` for all JSON types. ```cpp --8<-- "examples/is_binary.cpp" ``` Output: ```json --8<-- "examples/is_binary.output" ``` ## Version history - Added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_boolean.md000066400000000000000000000012611453145653700232440ustar00rootroot00000000000000# nlohmann::basic_json::is_boolean ```cpp constexpr bool is_boolean() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is `#!json true` or `#!json false`. ## Return value `#!cpp true` if type is boolean, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_boolean()` for all JSON types. ```cpp --8<-- "examples/is_boolean.cpp" ``` Output: ```json --8<-- "examples/is_boolean.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_discarded.md000066400000000000000000000037241453145653700235550ustar00rootroot00000000000000# nlohmann::basic_json::is_discarded ```cpp constexpr bool is_discarded() const noexcept; ``` This function returns `#!cpp true` for a JSON value if either: - the value was discarded during parsing with a callback function (see [`parser_callback_t`](parser_callback_t.md)), or - the value is the result of parsing invalid JSON with parameter `allow_exceptions` set to `#!cpp false`; see [`parse`](parse.md) for more information. ## Return value `#!cpp true` if type is discarded, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Notes !!! note "Comparisons" Discarded values are never compared equal with [`operator==`](operator_eq.md). That is, checking whether a JSON value `j` is discarded will only work via: ```cpp j.is_discarded() ``` because ```cpp j == json::value_t::discarded ``` will always be `#!cpp false`. !!! note "Removal during parsing with callback functions" When a value is discarded by a callback function (see [`parser_callback_t`](parser_callback_t.md)) during parsing, then it is removed when it is part of a structured value. For instance, if the second value of an array is discarded, instead of `#!json [null, discarded, false]`, the array `#!json [null, false]` is returned. Only if the top-level value is discarded, the return value of the `parse` call is discarded. This function will always be `#!cpp false` for JSON values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases. ## Examples ??? example The following code exemplifies `is_discarded()` for all JSON types. ```cpp --8<-- "examples/is_discarded.cpp" ``` Output: ```json --8<-- "examples/is_discarded.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_null.md000066400000000000000000000012261453145653700226000ustar00rootroot00000000000000# nlohmann::basic_json::is_null ```cpp constexpr bool is_null() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is `#!json null`. ## Return value `#!cpp true` if type is `#!json null`, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_null()` for all JSON types. ```cpp --8<-- "examples/is_null.cpp" ``` Output: ```json --8<-- "examples/is_null.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_number.md000066400000000000000000000024271453145653700231220ustar00rootroot00000000000000# nlohmann::basic_json::is_number ```cpp constexpr bool is_number() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values. ## Return value `#!cpp true` if type is number (regardless whether integer, unsigned integer or floating-type), `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Possible implementation ```cpp constexpr bool is_number() const noexcept { return is_number_integer() || is_number_float(); } ``` ## Examples ??? example The following code exemplifies `is_number()` for all JSON types. ```cpp --8<-- "examples/is_number.cpp" ``` Output: ```json --8<-- "examples/is_number.output" ``` ## See also - [is_number_integer()](is_number_integer.md) check if value is an integer or unsigned integer number - [is_number_unsigned()](is_number_unsigned.md) check if value is an unsigned integer number - [is_number_float()](is_number_float.md) check if value is a floating-point number ## Version history - Added in version 1.0.0. - Extended to also return `#!cpp true` for unsigned integers in 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_number_float.md000066400000000000000000000020161453145653700243010ustar00rootroot00000000000000# nlohmann::basic_json::is_number_float ```cpp constexpr bool is_number_float() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values. ## Return value `#!cpp true` if type is a floating-point number, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_number_float()` for all JSON types. ```cpp --8<-- "examples/is_number_float.cpp" ``` Output: ```json --8<-- "examples/is_number_float.output" ``` ## See also - [is_number()](is_number.md) check if value is a number - [is_number_integer()](is_number_integer.md) check if value is an integer or unsigned integer number - [is_number_unsigned()](is_number_unsigned.md) check if value is an unsigned integer number ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_number_integer.md000066400000000000000000000021321453145653700246300ustar00rootroot00000000000000# nlohmann::basic_json::is_number_integer ```cpp constexpr bool is_number_integer() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values. ## Return value `#!cpp true` if type is an integer or unsigned integer number, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_number_integer()` for all JSON types. ```cpp --8<-- "examples/is_number_integer.cpp" ``` Output: ```json --8<-- "examples/is_number_integer.output" ``` ## See also - [is_number()](is_number.md) check if value is a number - [is_number_unsigned()](is_number_unsigned.md) check if value is an unsigned integer number - [is_number_float()](is_number_float.md) check if value is a floating-point number ## Version history - Added in version 1.0.0. - Extended to also return `#!cpp true` for unsigned integers in 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_number_unsigned.md000066400000000000000000000020401453145653700250050ustar00rootroot00000000000000# nlohmann::basic_json::is_number_unsigned ```cpp constexpr bool is_number_unsigned() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values. ## Return value `#!cpp true` if type is an unsigned integer number, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_number_unsigned()` for all JSON types. ```cpp --8<-- "examples/is_number_unsigned.cpp" ``` Output: ```json --8<-- "examples/is_number_unsigned.output" ``` ## See also - [is_number()](is_number.md) check if value is a number - [is_number_integer()](is_number_integer.md) check if value is an integer or unsigned integer number - [is_number_float()](is_number_float.md) check if value is a floating-point number ## Version history - Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_object.md000066400000000000000000000012301453145653700230670ustar00rootroot00000000000000# nlohmann::basic_json::is_object ```cpp constexpr bool is_object() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is an object. ## Return value `#!cpp true` if type is an object, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_object()` for all JSON types. ```cpp --8<-- "examples/is_object.cpp" ``` Output: ```json --8<-- "examples/is_object.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_primitive.md000066400000000000000000000035041453145653700236370ustar00rootroot00000000000000# nlohmann::basic_json::is_primitive ```cpp constexpr bool is_primitive() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON type is primitive (string, number, boolean, `#!json null`, binary). ## Return value `#!cpp true` if type is primitive (string, number, boolean, `#!json null`, or binary), `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Possible implementation ```cpp constexpr bool is_primitive() const noexcept { return is_null() || is_string() || is_boolean() || is_number() || is_binary(); } ``` ## Notes The term *primitive* stems from [RFC 8259](https://tools.ietf.org/html/rfc8259): > JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and > arrays). This library extends primitive types to binary types, because binary types are roughly comparable to strings. Hence, `is_primitive()` returns `#!cpp true` for binary values. ## Examples ??? example The following code exemplifies `is_primitive()` for all JSON types. ```cpp --8<-- "examples/is_primitive.cpp" ``` Output: ```json --8<-- "examples/is_primitive.output" ``` ## See also - [is_structured()](is_structured.md) returns whether JSON value is structured - [is_null()](is_null.md) returns whether JSON value is `null` - [is_string()](is_string.md) returns whether JSON value is a string - [is_boolean()](is_boolean.md) returns whether JSON value is a boolean - [is_number()](is_number.md) returns whether JSON value is a number - [is_binary()](is_binary.md) returns whether JSON value is a binary array ## Version history - Added in version 1.0.0. - Extended to return `#!cpp true` for binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_string.md000066400000000000000000000012261453145653700231340ustar00rootroot00000000000000# nlohmann::basic_json::is_string ```cpp constexpr bool is_string() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON value is a string. ## Return value `#!cpp true` if type is a string, `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `is_string()` for all JSON types. ```cpp --8<-- "examples/is_string.cpp" ``` Output: ```json --8<-- "examples/is_string.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/is_structured.md000066400000000000000000000025501453145653700240330ustar00rootroot00000000000000# nlohmann::basic_json::is_structured ```cpp constexpr bool is_structured() const noexcept; ``` This function returns `#!cpp true` if and only if the JSON type is structured (array or object). ## Return value `#!cpp true` if type is structured (array or object), `#!cpp false` otherwise. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Possible implementation ```cpp constexpr bool is_primitive() const noexcept { return is_array() || is_object(); } ``` ## Notes The term *structured* stems from [RFC 8259](https://tools.ietf.org/html/rfc8259): > JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and > arrays). Note that though strings are containers in C++, they are treated as primitive values in JSON. ## Examples ??? example The following code exemplifies `is_structured()` for all JSON types. ```cpp --8<-- "examples/is_structured.cpp" ``` Output: ```json --8<-- "examples/is_structured.output" ``` ## See also - [is_primitive()](is_primitive.md) returns whether JSON value is primitive - [is_array()](is_array.md) returns whether value is an array - [is_object()](is_object.md) returns whether value is an object ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/items.md000066400000000000000000000052101453145653700222510ustar00rootroot00000000000000# nlohmann::basic_json::items ```cpp iteration_proxy items() noexcept; iteration_proxy items() const noexcept; ``` This function allows accessing `iterator::key()` and `iterator::value()` during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator. For loop without `items()` function: ```cpp for (auto it = j_object.begin(); it != j_object.end(); ++it) { std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; } ``` Range-based for loop without `items()` function: ```cpp for (auto it : j_object) { // "it" is of type json::reference and has no key() member std::cout << "value: " << it << '\n'; } ``` Range-based for loop with `items()` function: ```cpp for (auto& el : j_object.items()) { std::cout << "key: " << el.key() << ", value:" << el.value() << '\n'; } ``` The `items()` function also allows using [structured bindings](https://en.cppreference.com/w/cpp/language/structured_binding) (C++17): ```cpp for (auto& [key, val] : j_object.items()) { std::cout << "key: " << key << ", value:" << val << '\n'; } ``` ## Return value iteration proxy object wrapping the current value with an interface to use in range-based for loops ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Constant. ## Notes When iterating over an array, `key()` will return the index of the element as string (see example). For primitive types (e.g., numbers), `key()` returns an empty string. !!! danger "Lifetime issues" Using `items()` on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See for more information. ## Examples ??? example The following code shows an example for `items()`. ```cpp --8<-- "examples/items.cpp" ``` Output: ```json --8<-- "examples/items.output" ``` ## Version history - Added `iterator_wrapper` in version 3.0.0. - Added `items` and deprecated `iterator_wrapper` in version 3.1.0. - Added structured binding support in version 3.5.0. !!! warning "Deprecation" This function replaces the static function `iterator_wrapper` which was introduced in version 1.0.0, but has been deprecated in version 3.1.0. Function `iterator_wrapper` will be removed in version 4.0.0. Please replace all occurrences of `#!cpp iterator_wrapper(j)` with `#!cpp j.items()`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/json_base_class_t.md000066400000000000000000000022151453145653700246050ustar00rootroot00000000000000# nlohmann::basic_json::json_base_class_t ```cpp using json_base_class_t = detail::json_base_class; ``` The base class used to inject custom functionality into each instance of `basic_json`. Examples of such functionality might be metadata, additional member functions (e.g., visitors), or other application-specific code. ## Template parameters `CustomBaseClass` : the base class to be added to `basic_json` ## Notes #### Default type The default value for `CustomBaseClass` is `void`. In this case an [empty base class](https://en.cppreference.com/w/cpp/language/ebo) is used and no additional functionality is injected. #### Limitations The type `CustomBaseClass` has to be a default-constructible class. `basic_json` only supports copy/move construction/assignment if `CustomBaseClass` does so as well. ## Examples ??? example The following code shows how to inject custom data and methods for each node. ```cpp --8<-- "examples/json_base_class_t.cpp" ``` Output: ```json --8<-- "examples/json_base_class_t.output" ``` ## Version history - Added in version 3.12.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/json_serializer.md000066400000000000000000000015531453145653700243400ustar00rootroot00000000000000# nlohmann::basic_json::json_serializer ```cpp template using json_serializer = JSONSerializer; ``` ## Template parameters `T` : type to convert; will be used in the `to_json`/`from_json` functions `SFINAE` : type to add compile type checks via SFINAE; usually `#!cpp void` ## Notes #### Default type The default values for `json_serializer` is [`adl_serializer`](../adl_serializer/index.md). ## Examples ??? example The example below shows how a conversion of a non-default-constructible type is implemented via a specialization of the `adl_serializer`. ```cpp --8<-- "examples/from_json__non_default_constructible.cpp" ``` Output: ```json --8<-- "examples/from_json__non_default_constructible.output" ``` ## Version history - Since version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/max_size.md000066400000000000000000000034161453145653700227550ustar00rootroot00000000000000# nlohmann::basic_json::max_size ```cpp size_type max_size() const noexcept; ``` Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. `std::distance(begin(), end())` for the JSON value. ## Return value The return value depends on the different types and is defined as follows: | Value type | return value | |------------|-------------------------------------------| | null | `0` (same as [`size()`](size.md)) | | boolean | `1` (same as [`size()`](size.md)) | | string | `1` (same as [`size()`](size.md)) | | number | `1` (same as [`size()`](size.md)) | | binary | `1` (same as [`size()`](size.md)) | | object | result of function `object_t::max_size()` | | array | result of function `array_t::max_size()` | ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant, as long as [`array_t`](array_t.md) and [`object_t`](object_t.md) satisfy the [Container](https://en.cppreference.com/w/cpp/named_req/Container) concept; that is, their `max_size()` functions have constant complexity. ## Notes This function does not return the maximal length of a string stored as JSON value -- it returns the maximal number of string elements the JSON value can store which is `1`. ## Examples ??? example The following code calls `max_size()` on the different value types. ```cpp --8<-- "examples/max_size.cpp" ``` Output: ```json --8<-- "examples/max_size.output" ``` Note the output is platform-dependent. ## Version history - Added in version 1.0.0. - Extended to return `1` for binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/merge_patch.md000066400000000000000000000030011453145653700234020ustar00rootroot00000000000000# nlohmann::basic_json::merge_patch ```cpp void merge_patch(const basic_json& apply_patch); ``` The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value. The function implements the following algorithm from Section 2 of [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396): ```python define MergePatch(Target, Patch): if Patch is an Object: if Target is not an Object: Target = {} // Ignore the contents and set it to an empty Object for each Name/Value pair in Patch: if Value is null: if Name exists in Target: remove the Name/Value pair from Target else: Target[Name] = MergePatch(Target[Name], Value) return Target else: return Patch ``` Thereby, `Target` is the current object; that is, the patch is applied to the current value. ## Parameters `apply_patch` (in) : the patch to apply ## Complexity Linear in the lengths of `apply_patch`. ## Examples ??? example The following code shows how a JSON Merge Patch is applied to a JSON document. ```cpp --8<-- "examples/merge_patch.cpp" ``` Output: ```json --8<-- "examples/merge_patch.output" ``` ## See also - [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) - [patch](patch.md) apply a JSON patch ## Version history - Added in version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/meta.md000066400000000000000000000062611453145653700220650ustar00rootroot00000000000000# nlohmann::basic_json::meta ```cpp static basic_json meta(); ``` This function returns a JSON object with information about the library, including the version number and information on the platform and compiler. ## Return value JSON object holding version information | key | description | |-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). | | `copyright` | The copyright line for the library as string. | | `name` | The name of the library as string. | | `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. | | `url` | The URL of the project as string. | | `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). | ## Exception safety Strong guarantee: if an exception is thrown, there are no changes to any JSON value. ## Complexity Constant. ## Examples ??? example The following code shows an example output of the `meta()` function. ```cpp --8<-- "examples/meta.cpp" ``` Output: ```json --8<-- "examples/meta.output" ``` Note the output is platform-dependent. ## See also - [**NLOHMANN_JSON_VERSION_MAJOR**/**NLOHMANN_JSON_VERSION_MINOR**/**NLOHMANN_JSON_VERSION_PATCH**](../macros/nlohmann_json_version_major.md) \- library version information ## Version history - Added in version 2.1.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/number_float_t.md000066400000000000000000000055631453145653700241430ustar00rootroot00000000000000# nlohmann::basic_json::number_float_t ```cpp using number_float_t = NumberFloatType; ``` The type used to store JSON numbers (floating-point). [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: > The representation of numbers is similar to that used in most programming languages. A number is represented in base > 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may > be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that > cannot be represented in the grammar below (such as Infinity and NaN) are not permitted. This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, [`number_integer_t`](number_integer_t.md), [`number_unsigned_t`](number_unsigned_t.md) and `number_float_t` are used. To store floating-point numbers in C++, a type is defined by the template parameter `NumberFloatType` which chooses the type to use. ## Notes #### Default type With the default values for `NumberFloatType` (`double`), the default value for `number_float_t` is `#!cpp double`. #### Default behavior - The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in floating-point literals will be ignored. Internally, the value will be stored as decimal number. For instance, the C++ floating-point literal `01.2` will be serialized to `1.2`. During deserialization, leading zeros yield an error. - Not-a-number (NaN) values will be serialized to `null`. #### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) states: > This specification allows implementations to set limits on the range and precision of numbers accepted. Since software > that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good > interoperability can be achieved by implementations that expect no more precision or range than these provide, in the > sense that implementations will approximate JSON numbers within the expected precision. This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` will be stored as NaN internally and be serialized to `null`. #### Storage Floating-point number values are stored directly inside a `basic_json` type. ## Examples ??? example The following code shows that `number_float_t` is by default, a typedef to `#!cpp double`. ```cpp --8<-- "examples/number_float_t.cpp" ``` Output: ```json --8<-- "examples/number_float_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/number_integer_t.md000066400000000000000000000061761453145653700244740ustar00rootroot00000000000000# nlohmann::basic_json::number_integer_t ```cpp using number_integer_t = NumberIntegerType; ``` The type used to store JSON numbers (integers). [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: > The representation of numbers is similar to that used in most programming languages. A number is represented in base > 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may > be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that > cannot be represented in the grammar below (such as Infinity and NaN) are not permitted. This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, `number_integer_t`, [`number_unsigned_t`](number_unsigned_t.md) and [`number_float_t`](number_float_t.md) are used. To store integer numbers in C++, a type is defined by the template parameter `NumberIntegerType` which chooses the type to use. ## Notes #### Default type With the default values for `NumberIntegerType` (`std::int64_t`), the default value for `number_integer_t` is `#!cpp std::int64_t`. #### Default behavior - The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal `010` will be serialized to `8`. During deserialization, leading zeros yield an error. - Not-a-number (NaN) values will be serialized to `null`. #### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the range and precision of numbers. When the default type is used, the maximal integer number that can be stored is `9223372036854775807` (INT64_MAX) and the minimal integer number that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as [`number_unsigned_t`](number_unsigned_t.md) or [`number_float_t`](number_float_t.md). [RFC 8259](https://tools.ietf.org/html/rfc8259) further states: > Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are > interoperable in the sense that implementations will agree exactly on their numeric values. As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable. #### Storage Integer number values are stored directly inside a `basic_json` type. ## Examples ??? example The following code shows that `number_integer_t` is by default, a typedef to `#!cpp std::int64_t`. ```cpp --8<-- "examples/number_integer_t.cpp" ``` Output: ```json --8<-- "examples/number_integer_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/number_unsigned_t.md000066400000000000000000000062621453145653700246470ustar00rootroot00000000000000# nlohmann::basic_json::number_unsigned_t ```cpp using number_unsigned_t = NumberUnsignedType; ``` The type used to store JSON numbers (unsigned). [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: > The representation of numbers is similar to that used in most programming languages. A number is represented in base > 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may > be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that > cannot be represented in the grammar below (such as Infinity and NaN) are not permitted. This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, [`number_integer_t`](number_integer_t.md), `number_unsigned_t` and [`number_float_t`](number_float_t.md) are used. To store unsigned integer numbers in C++, a type is defined by the template parameter `NumberUnsignedType` which chooses the type to use. ## Notes #### Default type With the default values for `NumberUnsignedType` (`std::uint64_t`), the default value for `number_unsigned_t` is `#!cpp std::uint64_t`. #### Default behavior - The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal `010` will be serialized to `8`. During deserialization, leading zeros yield an error. - Not-a-number (NaN) values will be serialized to `null`. #### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the range and precision of numbers. When the default type is used, the maximal integer number that can be stored is `18446744073709551615` (UINT64_MAX) and the minimal integer number that can be stored is `0`. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as [`number_integer_t`](number_integer_t.md) or [`number_float_t`](number_float_t.md). [RFC 8259](https://tools.ietf.org/html/rfc8259) further states: > Note that when such software is used, numbers that are integers and are in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are > interoperable in the sense that implementations will agree exactly on their numeric values. As this range is a subrange (when considered in conjunction with the `number_integer_t` type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable. #### Storage Integer number values are stored directly inside a `basic_json` type. ## Examples ??? example The following code shows that `number_unsigned_t` is by default, a typedef to `#!cpp std::uint64_t`. ```cpp --8<-- "examples/number_unsigned_t.cpp" ``` Output: ```json --8<-- "examples/number_unsigned_t.output" ``` ## Version history - Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/object.md000066400000000000000000000034071453145653700224040ustar00rootroot00000000000000# nlohmann::basic_json::object ```cpp static basic_json object(initializer_list_t init = {}); ``` Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object `#!json {}` is created. ## Parameters `init` (in) : initializer list with JSON values to create an object from (optional) ## Return value JSON object value ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions Throws [`type_error.301`](../../home/exceptions.md#jsonexceptiontype_error301) if `init` is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to `basic_json(initializer_list_t, bool, value_t)`, an array would have been created from the passed initializer list `init`. See example below. ## Complexity Linear in the size of `init`. ## Notes This function is only added for symmetry reasons. In contrast to the related function `array(initializer_list_t)`, there are no cases which can only be expressed by this function. That is, any initializer list `init` can also be passed to the initializer list constructor `basic_json(initializer_list_t, bool, value_t)`. ## Examples ??? example The following code shows an example for the `object` function. ```cpp --8<-- "examples/object.cpp" ``` Output: ```json --8<-- "examples/object.output" ``` ## See also - [`basic_json(initializer_list_t)`](basic_json.md) - create a JSON value from an initializer list - [`array`](array.md) - create a JSON array value from an initializer list ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/object_comparator_t.md000066400000000000000000000014601453145653700251530ustar00rootroot00000000000000# nlohmann::basic_json::object_comparator_t ```cpp using object_comparator_t = typename object_t::key_compare; // or using object_comparator_t = default_object_comparator_t; ``` The comparator used by [`object_t`](object_t.md). Defined as `#!cpp typename object_t::key_compare` if available, and [`default_object_comparator_t`](default_object_comparator_t.md) otherwise. ## Examples ??? example The example below demonstrates the used object comparator. ```cpp --8<-- "examples/object_comparator_t.cpp" ``` Output: ```json --8<-- "examples/object_comparator_t.output" ``` ## Version history - Added in version 3.0.0. - Changed to be conditionally defined as `#!cpp typename object_t::key_compare` or `default_object_comparator_t` in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/object_t.md000066400000000000000000000102011453145653700227150ustar00rootroot00000000000000# nlohmann::basic_json::object_t ```cpp using object_t = ObjectType>>; ``` The type used to store JSON objects. [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON objects as follows: > An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a > string, number, boolean, null, object, or array. To store objects in C++, a type is defined by the template parameters described below. ## Template parameters `ObjectType` : the container to store objects (e.g., `std::map` or `std::unordered_map`) `StringType` : the type of the keys or names (e.g., `std::string`). The comparison function `std::less` is used to order elements inside the container. `AllocatorType` : the allocator to use for objects (e.g., `std::allocator`) ## Notes #### Default type With the default values for `ObjectType` (`std::map`), `StringType` (`std::string`), and `AllocatorType` (`std::allocator`), the default value for `object_t` is: ```cpp // until C++14 std::map< std::string, // key_type basic_json, // value_type std::less, // key_compare std::allocator> // allocator_type > // since C++14 std::map< std::string, // key_type basic_json, // value_type std::less<>, // key_compare std::allocator> // allocator_type > ``` See [`default_object_comparator_t`](default_object_comparator_t.md) for more information. #### Behavior The choice of `object_t` influences the behavior of the JSON class. With the default type, objects have the following behavior: - When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings. - When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, `#!json {"key": 2, "key": 1}` could be equal to either `#!json {"key": 1}` or `#!json {"key": 2}`. - Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see [`dump`](dump.md)) in this order. For instance, `#!json {"b": 1, "a": 2}` and `#!json {"a": 2, "b": 1}` will be stored and serialized as `#!json {"a": 2, "b": 1}`. - When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, `#!json {"b": 1, "a": 2}` and `#!json {"a": 2, "b": 1}` will be treated as equal. #### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the maximum depth of nesting. In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the [`max_size`](max_size.md) function of a JSON object. #### Storage Objects are stored as pointers in a `basic_json` type. That is, for any access to object values, a pointer of type `object_t*` must be dereferenced. #### Object key order The order name/value pairs are added to the object is *not* preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as `std::map` with `std::less` is used by default. Please note this behavior conforms to [RFC 8259](https://tools.ietf.org/html/rfc8259), because any order implements the specified "unordered" nature of JSON objects. ## Examples ??? example The following code shows that `object_t` is by default, a typedef to `#!cpp std::map`. ```cpp --8<-- "examples/object_t.cpp" ``` Output: ```json --8<-- "examples/object_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator+=.md000066400000000000000000000057621453145653700231470ustar00rootroot00000000000000# nlohmann::basic_json::operator+= ```cpp // (1) reference operator+=(basic_json&& val); reference operator+=(const basic_json& val); // (2) reference operator+=(const typename object_t::value_type& val); // (3) reference operator+=(initializer_list_t init); ``` 1. Appends the given element `val` to the end of the JSON array. If the function is called on a JSON null value, an empty array is created before appending `val`. 2. Inserts the given element `val` to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting `val`. 3. This function allows using `operator+=` with an initializer list. In case 1. the current value is an object, 2. the initializer list `init` contains only two elements, and 3. the first element of `init` is a string, `init` is converted into an object element and added using `operator+=(const typename object_t::value_type&)`. Otherwise, `init` is converted to a JSON value and added using `operator+=(basic_json&&)`. ## Parameters `val` (in) : the value to add to the JSON array/object `init` (in) : an initializer list ## Return value `#!cpp *this` ## Exceptions All functions can throw the following exception: - Throws [`type_error.308`](../../home/exceptions.md#jsonexceptiontype_error308) when called on a type other than JSON array or null; example: `"cannot use operator+=() with number"` ## Complexity 1. Amortized constant. 2. Logarithmic in the size of the container, O(log(`size()`)). 3. Linear in the size of the initializer list `init`. ## Notes (3) This function is required to resolve an ambiguous overload error, because pairs like `{"key", "value"}` can be both interpreted as `object_t::value_type` or `std::initializer_list`, see [#235](https://github.com/nlohmann/json/issues/235) for more information. ## Examples ??? example "Example: (1) add element to array" The example shows how `push_back()` and `+=` can be used to add elements to a JSON array. Note how the `null` value was silently converted to a JSON array. ```cpp --8<-- "examples/push_back.cpp" ``` Output: ```json --8<-- "examples/push_back.output" ``` ??? example "Example: (2) add element to object" The example shows how `push_back()` and `+=` can be used to add elements to a JSON object. Note how the `null` value was silently converted to a JSON object. ```cpp --8<-- "examples/push_back__object_t__value.cpp" ``` Output: ```json --8<-- "examples/push_back__object_t__value.output" ``` ??? example "Example: (3) add to object from initializer list" The example shows how initializer lists are treated as objects when possible. ```cpp --8<-- "examples/push_back__initializer_list.cpp" ``` Output: ```json --8<-- "examples/push_back__initializer_list.output" ``` ## Version history 1. Since version 1.0.0. 2. Since version 1.0.0. 2. Since version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator=.md000066400000000000000000000020401453145653700230560ustar00rootroot00000000000000# nlohmann::basic_json::operator= ```cpp basic_json& operator=(basic_json other) noexcept ( std::is_nothrow_move_constructible::value && std::is_nothrow_move_assignable::value && std::is_nothrow_move_constructible::value && std::is_nothrow_move_assignable::value ); ``` Copy assignment operator. Copies a JSON value via the "copy and swap" strategy: It is expressed in terms of the copy constructor, destructor, and the `swap()` member function. ## Parameters `other` (in) : value to copy from ## Complexity Linear. ## Examples ??? example The code below shows and example for the copy assignment. It creates a copy of value `a` which is then swapped with `b`. Finally, the copy of `a` (which is the null value after the swap) is destroyed. ```cpp --8<-- "examples/basic_json__copyassignment.cpp" ``` Output: ```json --8<-- "examples/basic_json__copyassignment.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator[].md000066400000000000000000000176131453145653700232650ustar00rootroot00000000000000# nlohmann::basic_json::operator[] ```cpp // (1) reference operator[](size_type idx); const_reference operator[](size_type idx) const; // (2) reference operator[](typename object_t::key_type key); const_reference operator[](const typename object_t::key_type& key) const; // (3) template reference operator[](KeyType&& key); template const_reference operator[](KeyType&& key) const; // (4) reference operator[](const json_pointer& ptr); const_reference operator[](const json_pointer& ptr) const; ``` 1. Returns a reference to the array element at specified location `idx`. 2. Returns a reference to the object element with specified key `key`. The non-const qualified overload takes the key by value. 3. See 2. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. 4. Returns a reference to the element with specified JSON pointer `ptr`. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). ## Parameters `idx` (in) : index of the element to access `key` (in) : object key of the element to access `ptr` (in) : JSON pointer to the desired element ## Return value 1. (const) reference to the element at index `idx` 2. (const) reference to the element at key `key` 3. (const) reference to the element at key `key` 4. (const) reference to the element pointed to by `ptr` ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. The function can throw the following exceptions: - Throws [`type_error.305`](../../home/exceptions.md#jsonexceptiontype_error305) if the JSON value is not an array or null; in that case, using the `[]` operator with an index makes no sense. 2. The function can throw the following exceptions: - Throws [`type_error.305`](../../home/exceptions.md#jsonexceptiontype_error305) if the JSON value is not an object or null; in that case, using the `[]` operator with a key makes no sense. 3. See 2. 4. The function can throw the following exceptions: - Throws [`parse_error.106`](../../home/exceptions.md#jsonexceptionparse_error106) if an array index in the passed JSON pointer `ptr` begins with '0'. - Throws [`parse_error.109`](../../home/exceptions.md#jsonexceptionparse_error109) if an array index in the passed JSON pointer `ptr` is not a number. - Throws [`out_of_range.402`](../../home/exceptions.md#jsonexceptionout_of_range402) if the array index '-' is used in the passed JSON pointer `ptr` for the const version. - Throws [`out_of_range.404`](../../home/exceptions.md#jsonexceptionout_of_range404) if the JSON pointer `ptr` can not be resolved. ## Complexity 1. Constant if `idx` is in the range of the array. Otherwise, linear in `idx - size()`. 2. Logarithmic in the size of the container. 3. Logarithmic in the size of the container. 4. Logarithmic in the size of the container. ## Notes !!! danger "Undefined behavior and runtime assertions" 1. If the element with key `idx` does not exist, the behavior is undefined. 2. If the element with key `key` does not exist, the behavior is undefined and is **guarded by a [runtime assertion](../../features/assertions.md)**! 1. The non-const version may add values: If `idx` is beyond the range of the array (i.e., `idx >= size()`), then the array is silently filled up with `#!json null` values to make `idx` a valid reference to the last stored element. In case the value was `#!json null` before, it is converted to an array. 2. If `key` is not found in the object, then it is silently added to the object and filled with a `#!json null` value to make `key` a valid reference. In case the value was `#!json null` before, it is converted to an object. 3. See 2. 4. `null` values are created in arrays and objects if necessary. In particular: - If the JSON pointer points to an object key that does not exist, it is created and filled with a `#!json null` value before a reference to it is returned. - If the JSON pointer points to an array index that does not exist, it is created and filled with a `#!json null` value before a reference to it is returned. All indices between the current maximum and the given index are also filled with `#!json null`. - The special value `-` is treated as a synonym for the index past the end. ## Examples ??? example "Example: (1) access specified array element" The example below shows how array elements can be read and written using `[]` operator. Note the addition of `#!json null` values. ```cpp --8<-- "examples/operator_array__size_type.cpp" ``` Output: ```json --8<-- "examples/operator_array__size_type.output" ``` ??? example "Example: (1) access specified array element (const)" The example below shows how array elements can be read using the `[]` operator. ```cpp --8<-- "examples/operator_array__size_type_const.cpp" ``` Output: ```json --8<-- "examples/operator_array__size_type_const.output" ``` ??? example "Example: (2) access specified object element" The example below shows how object elements can be read and written using the `[]` operator. ```cpp --8<-- "examples/operator_array__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/operator_array__object_t_key_type.output" ``` ??? example "Example: (2) access specified object element (const)" The example below shows how object elements can be read using the `[]` operator. ```cpp --8<-- "examples/operator_array__object_t_key_type_const.cpp" ``` Output: ```json --8<-- "examples/operator_array__object_t_key_type_const.output" ``` ??? example "Example: (3) access specified object element using string_view" The example below shows how object elements can be read using the `[]` operator. ```cpp --8<-- "examples/operator_array__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/operator_array__keytype.c++17.output" ``` ??? example "Example: (3) access specified object element using string_view (const)" The example below shows how object elements can be read using the `[]` operator. ```cpp --8<-- "examples/operator_array__keytype_const.c++17.cpp" ``` Output: ```json --8<-- "examples/operator_array__keytype_const.c++17.output" ``` ??? example "Example: (4) access specified element via JSON Pointer" The example below shows how values can be read and written using JSON Pointers. ```cpp --8<-- "examples/operator_array__json_pointer.cpp" ``` Output: ```json --8<-- "examples/operator_array__json_pointer.output" ``` ??? example "Example: (4) access specified element via JSON Pointer (const)" The example below shows how values can be read using JSON Pointers. ```cpp --8<-- "examples/operator_array__json_pointer_const.cpp" ``` Output: ```json --8<-- "examples/operator_array__json_pointer_const.output" ``` ## See also - documentation on [unchecked access](../../features/element_access/unchecked_access.md) - documentation on [runtime assertions](../../features/assertions.md) - see [`at`](at.md) for access by reference with range checking - see [`value`](value.md) for access with default value ## Version history 1. Added in version 1.0.0. 2. Added in version 1.0.0. Added overloads for `T* key` in version 1.1.0. Removed overloads for `T* key` (replaced by 3) in version 3.11.0. 3. Added in version 3.11.0. 4. Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_ValueType.md000066400000000000000000000045441453145653700247720ustar00rootroot00000000000000# nlohmann::basic_json::operator ValueType ```cpp template JSON_EXPLICIT operator ValueType() const; ``` Implicit type conversion between the JSON value and a compatible value. The call is realized by calling [`get()`](get.md). See [Notes](#notes) for the meaning of `JSON_EXPLICIT`. ## Template parameters `ValueType` : the value type to return ## Return value copy of the JSON value, converted to `ValueType` ## Exceptions Depends on what `json_serializer` `from_json()` method throws ## Complexity Linear in the size of the JSON value. ## Notes !!! note "Definition of `JSON_EXPLICIT`" By default `JSON_EXPLICIT` is defined to the empty string, so the signature is: ```cpp template operator ValueType() const; ``` If [`JSON_USE_IMPLICIT_CONVERSIONS`](../macros/json_use_implicit_conversions.md) is set to `0`, `JSON_EXPLICIT` is defined to `#!cpp explicit`: ```cpp template explicit operator ValueType() const; ``` That is, implicit conversions can be switched off by defining [`JSON_USE_IMPLICIT_CONVERSIONS`](../macros/json_use_implicit_conversions.md) to `0`. !!! info "Future behavior change" Implicit conversions will be switched off by default in the next major release of the library. That is, `JSON_EXPLICIT` will be set to `#!cpp explicit` by default. You can prepare existing code by already defining [`JSON_USE_IMPLICIT_CONVERSIONS`](../macros/json_use_implicit_conversions.md) to `0` and replace any implicit conversions with calls to [`get`](../basic_json/get.md). ## Examples ??? example The example below shows several conversions from JSON values to other types. There are a few things to note: (1) Floating-point numbers can be converted to integers, (2) A JSON array can be converted to a standard `std::vector`, (3) A JSON object can be converted to C++ associative containers such as `std::unordered_map`. ```cpp --8<-- "examples/operator__ValueType.cpp" ``` Output: ```json --8<-- "examples/operator__ValueType.output" ``` ## Version history - Since version 1.0.0. - Macros `JSON_EXPLICIT`/[`JSON_USE_IMPLICIT_CONVERSIONS`](../macros/json_use_implicit_conversions.md) added in version 3.9.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_eq.md000066400000000000000000000107551453145653700234620ustar00rootroot00000000000000# nlohmann::basic_json::operator== ```cpp // until C++20 bool operator==(const_reference lhs, const_reference rhs) noexcept; // (1) template bool operator==(const_reference lhs, const ScalarType rhs) noexcept; // (2) template bool operator==(ScalarType lhs, const const_reference rhs) noexcept; // (2) // since C++20 class basic_json { bool operator==(const_reference rhs) const noexcept; // (1) template bool operator==(ScalarType rhs) const noexcept; // (2) }; ``` 1. Compares two JSON values for equality according to the following rules: - Two JSON values are equal if (1) neither value is discarded, or (2) they are of the same type and their stored values are the same according to their respective `operator==`. - Integer and floating-point numbers are automatically converted before comparison. 2. Compares a JSON value and a scalar or a scalar and a JSON value for equality by converting the scalar to a JSON value and comparing both JSON values according to 1. ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether the values `lhs`/`*this` and `rhs` are equal ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing special values" - `NaN` values are unordered within the domain of numbers. The following comparisons all yield `#!cpp false`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. - JSON `#!cpp null` values are all equal. - Discarded values never compare equal to themselves. !!! note "Comparing floating-point numbers" Floating-point numbers inside JSON values numbers are compared with `json::number_float_t::operator==` which is `double::operator==` by default. To compare floating-point while respecting an epsilon, an alternative [comparison function](https://github.com/mariokonrad/marnav/blob/master/include/marnav/math/floatingpoint.hpp#L34-#L39) could be used, for instance ```cpp template::value, T>::type> inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept { return std::abs(a - b) <= epsilon; } ``` Or you can self-defined operator equal function like this: ```cpp bool my_equal(const_reference lhs, const_reference rhs) { const auto lhs_type lhs.type(); const auto rhs_type rhs.type(); if (lhs_type == rhs_type) { switch(lhs_type) // self_defined case case value_t::number_float: return std::abs(lhs - rhs) <= std::numeric_limits::epsilon(); // other cases remain the same with the original ... } ... } ``` !!! note "Comparing different `basic_json` specializations" Comparing different `basic_json` specializations can have surprising effects. For instance, the result of comparing the JSON objects ```json { "version": 1, "type": "integer" } ``` and ```json { "type": "integer", "version": 1 } ``` depends on whether [`nlohmann::json`](../json.md) or [`nlohmann::ordered_json`](../ordered_json.md) is used: ```cpp --8<-- "examples/operator__equal__specializations.cpp" ``` Output: ```json --8<-- "examples/operator__equal__specializations.output" ``` ## Examples ??? example The example demonstrates comparing several JSON types. ```cpp --8<-- "examples/operator__equal.cpp" ``` Output: ```json --8<-- "examples/operator__equal.output" ``` ??? example The example demonstrates comparing several JSON types against the null pointer (JSON `#!json null`). ```cpp --8<-- "examples/operator__equal__nullptr_t.cpp" ``` Output: ```json --8<-- "examples/operator__equal__nullptr_t.output" ``` ## Version history 1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0. 2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_ge.md000066400000000000000000000044551453145653700234500ustar00rootroot00000000000000# nlohmann::basic_json::operator>= ```cpp // until C++20 bool operator>=(const_reference lhs, const_reference rhs) noexcept; // (1) template bool operator>=(const_reference lhs, const ScalarType rhs) noexcept; // (2) template bool operator>=(ScalarType lhs, const const_reference rhs) noexcept; // (2) ``` 1. Compares whether one JSON value `lhs` is greater than or equal to another JSON value `rhs` according to the following rules: - The comparison always yields `#!cpp false` if (1) either operand is discarded, or (2) either operand is `NaN` and the other operand is either `NaN` or any other number. - Otherwise, returns the result of `#!cpp !(lhs < rhs)` (see [**operator<**](operator_lt.md)). 2. Compares whether a JSON value is greater than or equal to a scalar or a scalar is greater than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1. ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether `lhs` is less than or equal to `rhs` ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing `NaN`" `NaN` values are unordered within the domain of numbers. The following comparisons all yield `#!cpp false`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. !!! note "Operator overload resolution" Since C++20 overload resolution will consider the _rewritten candidate_ generated from [`operator<=>`](operator_spaceship.md). ## Examples ??? example The example demonstrates comparing several JSON types. ```cpp --8<-- "examples/operator__greaterequal.cpp" ``` Output: ```json --8<-- "examples/operator__greaterequal.output" ``` ## See also - [**operator<=>**](operator_spaceship.md) comparison: 3-way ## Version history 1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. 2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_gt.md000066400000000000000000000043621453145653700234640ustar00rootroot00000000000000# nlohmann::basic_json::operator> ```cpp // until C++20 bool operator>(const_reference lhs, const_reference rhs) noexcept; // (1) template bool operator>(const_reference lhs, const ScalarType rhs) noexcept; // (2) template bool operator>(ScalarType lhs, const const_reference rhs) noexcept; // (2) ``` 1. Compares whether one JSON value `lhs` is greater than another JSON value `rhs` according to the following rules: - The comparison always yields `#!cpp false` if (1) either operand is discarded, or (2) either operand is `NaN` and the other operand is either `NaN` or any other number. - Otherwise, returns the result of `#!cpp !(lhs <= rhs)` (see [**operator<=**](operator_le.md)). 2. Compares wether a JSON value is greater than a scalar or a scalar is greater than a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1. ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether `lhs` is greater than `rhs` ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing `NaN`" `NaN` values are unordered within the domain of numbers. The following comparisons all yield `#!cpp false`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. !!! note "Operator overload resolution" Since C++20 overload resolution will consider the _rewritten candidate_ generated from [`operator<=>`](operator_spaceship.md). ## Examples ??? example The example demonstrates comparing several JSON types. ```cpp --8<-- "examples/operator__greater.cpp" ``` Output: ```json --8<-- "examples/operator__greater.output" ``` ## See also - [**operator<=>**](operator_spaceship.md) comparison: 3-way ## Version history 1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. 2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_le.md000066400000000000000000000044401453145653700234470ustar00rootroot00000000000000# nlohmann::basic_json::operator<= ```cpp // until C++20 bool operator<=(const_reference lhs, const_reference rhs) noexcept; // (1) template bool operator<=(const_reference lhs, const ScalarType rhs) noexcept; // (2) template bool operator<=(ScalarType lhs, const const_reference rhs) noexcept; // (2) ``` 1. Compares whether one JSON value `lhs` is less than or equal to another JSON value `rhs` according to the following rules: - The comparison always yields `#!cpp false` if (1) either operand is discarded, or (2) either operand is `NaN` and the other operand is either `NaN` or any other number. - Otherwise, returns the result of `#!cpp !(rhs < lhs)` (see [**operator<**](operator_lt.md)). 1. Compares wether a JSON value is less than or equal to a scalar or a scalar is less than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1. ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether `lhs` is less than or equal to `rhs` ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing `NaN`" `NaN` values are unordered within the domain of numbers. The following comparisons all yield `#!cpp false`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. !!! note "Operator overload resolution" Since C++20 overload resolution will consider the _rewritten candidate_ generated from [`operator<=>`](operator_spaceship.md). ## Examples ??? example The example demonstrates comparing several JSON types. ```cpp --8<-- "examples/operator__lessequal.cpp" ``` Output: ```json --8<-- "examples/operator__lessequal.output" ``` ## See also - [**operator<=>**](operator_spaceship.md) comparison: 3-way ## Version history 1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. 2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_lt.md000066400000000000000000000050471453145653700234720ustar00rootroot00000000000000# nlohmann::basic_json::operator< ```cpp // until C++20 bool operator<(const_reference lhs, const_reference rhs) noexcept; // (1) template bool operator<(const_reference lhs, const ScalarType rhs) noexcept; // (2) template bool operator<(ScalarType lhs, const const_reference rhs) noexcept; // (2) ``` 1. Compares whether one JSON value `lhs` is less than another JSON value `rhs` according to the following rules: - If either operand is discarded, the comparison yields `#!cpp false`. - If both operands have the same type, the values are compared using their respective `operator<`. - Integer and floating-point numbers are automatically converted before comparison. - In case `lhs` and `rhs` have different types, the values are ignored and the order of the types is considered, which is: 1. null 2. boolean 3. number (all types) 4. object 5. array 6. string 7. binary For instance, any boolean value is considered less than any string. 2. Compares wether a JSON value is less than a scalar or a scalar is less than a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1. ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether `lhs` is less than `rhs` ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing `NaN`" `NaN` values are unordered within the domain of numbers. The following comparisons all yield `#!cpp false`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. !!! note "Operator overload resolution" Since C++20 overload resolution will consider the _rewritten candidate_ generated from [`operator<=>`](operator_spaceship.md). ## Examples ??? example The example demonstrates comparing several JSON types. ```cpp --8<-- "examples/operator__less.cpp" ``` Output: ```json --8<-- "examples/operator__less.output" ``` ## See also - [**operator<=>**](operator_spaceship.md) comparison: 3-way ## Version history 1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. 2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_ne.md000066400000000000000000000047611453145653700234570ustar00rootroot00000000000000# nlohmann::basic_json::operator!= ```cpp // until C++20 bool operator!=(const_reference lhs, const_reference rhs) noexcept; // (1) template bool operator!=(const_reference lhs, const ScalarType rhs) noexcept; // (2) template bool operator!=(ScalarType lhs, const const_reference rhs) noexcept; // (2) // since C++20 class basic_json { bool operator!=(const_reference rhs) const noexcept; // (1) template bool operator!=(ScalarType rhs) const noexcept; // (2) }; ``` 1. Compares two JSON values for inequality according to the following rules: - The comparison always yields `#!cpp false` if (1) either operand is discarded, or (2) either operand is `NaN` and the other operand is either `NaN` or any other number. - Otherwise, returns the result of `#!cpp !(lhs == rhs)` (until C++20) or `#!cpp !(*this == rhs)` (since C++20). 2. Compares a JSON value and a scalar or a scalar and a JSON value for inequality by converting the scalar to a JSON value and comparing both JSON values according to 1. ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether the values `lhs`/`*this` and `rhs` are not equal ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing `NaN`" `NaN` values are unordered within the domain of numbers. The following comparisons all yield `#!cpp false`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. ## Examples ??? example The example demonstrates comparing several JSON types. ```cpp --8<-- "examples/operator__notequal.cpp" ``` Output: ```json --8<-- "examples/operator__notequal.output" ``` ??? example The example demonstrates comparing several JSON types against the null pointer (JSON `#!json null`). ```cpp --8<-- "examples/operator__notequal__nullptr_t.cpp" ``` Output: ```json --8<-- "examples/operator__notequal__nullptr_t.output" ``` ## Version history 1. Added in version 1.0.0. Added C++20 member functions in version 3.11.0. 2. Added in version 1.0.0. Added C++20 member functions in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_spaceship.md000066400000000000000000000057451453145653700250370ustar00rootroot00000000000000# nlohmann::basic_json::operator<=> ```cpp // since C++20 class basic_json { std::partial_ordering operator<=>(const_reference rhs) const noexcept; // (1) template std::partial_ordering operator<=>(const ScalarType rhs) const noexcept; // (2) }; ``` 1. 3-way compares two JSON values producing a result of type `std::partial_ordering` according to the following rules: - Two JSON values compare with a result of `std::partial_ordering::unordered` if either value is discarded. - If both JSON values are of the same type, the result is produced by 3-way comparing their stored values using their respective `operator<=>`. - Integer and floating-point numbers are converted to their common type and then 3-way compared using their respective `operator<=>`. For instance, comparing an integer and a floating-point value will 3-way compare the first value converted to floating-point with the second value. - Otherwise, yields a result by comparing the type (see [`value_t`](value_t.md)). 2. 3-way compares a JSON value and a scalar or a scalar and a JSON value by converting the scalar to a JSON value and 3-way comparing both JSON values (see 1). ## Template parameters `ScalarType` : a scalar type according to `std::is_scalar::value` ## Parameters `rhs` (in) : second value to consider ## Return value the `std::partial_ordering` of the 3-way comparison of `*this` and `rhs` ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Linear. ## Notes !!! note "Comparing `NaN`" - `NaN` values are unordered within the domain of numbers. The following comparisons all yield `std::partial_ordering::unordered`: 1. Comparing a `NaN` with itself. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. ## Examples ??? example "Example: (1) comparing JSON values" The example demonstrates comparing several JSON values. ```cpp --8<-- "examples/operator_spaceship__const_reference.c++20.cpp" ``` Output: ```json --8<-- "examples/operator_spaceship__const_reference.c++20.output" ``` ??? example "Example: (2) comparing JSON values and scalars" The example demonstrates comparing several JSON values and scalars. ```cpp --8<-- "examples/operator_spaceship__scalartype.c++20.cpp" ``` Output: ```json --8<-- "examples/operator_spaceship__scalartype.c++20.output" ``` ## See also - [**operator==**](operator_eq.md) - comparison: equal - [**operator!=**](operator_ne.md) - comparison: not equal - [**operator<**](operator_lt.md) - comparison: less than - [**operator<=**](operator_le.md) - comparison: less than or equal - [**operator>**](operator_gt.md) - comparison: greater than - [**operator>=**](operator_ge.md) - comparison: greater than or equal ## Version history 1. Added in version 3.11.0. 2. Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/operator_value_t.md000066400000000000000000000026761453145653700245170ustar00rootroot00000000000000# nlohmann::basic_json::operator value_t ```cpp constexpr operator value_t() const noexcept; ``` Return the type of the JSON value as a value from the [`value_t`](value_t.md) enumeration. ## Return value the type of the JSON value | Value type | return value | |---------------------------|----------------------------| | `#!json null` | `value_t::null` | | boolean | `value_t::boolean` | | string | `value_t::string` | | number (integer) | `value_t::number_integer` | | number (unsigned integer) | `value_t::number_unsigned` | | number (floating-point) | `value_t::number_float` | | object | `value_t::object` | | array | `value_t::array` | | binary | `value_t::binary` | | discarded | `value_t::discarded` | ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `operator value_t()` for all JSON types. ```cpp --8<-- "examples/operator__value_t.cpp" ``` Output: ```json --8<-- "examples/operator__value_t.output" ``` ## Version history - Added in version 1.0.0. - Added unsigned integer type in version 2.0.0. - Added binary type in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/other_error.md000066400000000000000000000032411453145653700234640ustar00rootroot00000000000000# nlohmann::basic_json::other_error ```cpp class other_error : public exception; ``` This exception is thrown in case of errors that cannot be classified with the other exception types. Exceptions have ids 5xx (see [list of other errors](../../home/exceptions.md#further-exceptions)). ```plantuml std::exception <|-- basic_json::exception basic_json::exception <|-- basic_json::parse_error basic_json::exception <|-- basic_json::invalid_iterator basic_json::exception <|-- basic_json::type_error basic_json::exception <|-- basic_json::out_of_range basic_json::exception <|-- basic_json::other_error interface std::exception {} class basic_json::exception { + const int id + const char* what() const } class basic_json::parse_error { + const std::size_t byte } class basic_json::other_error #FFFF00 {} ``` ## Member functions - **what** - returns explanatory string ## Member variables - **id** - the id of the exception ## Examples ??? example The following code shows how a `other_error` exception can be caught. ```cpp --8<-- "examples/other_error.cpp" ``` Output: ```json --8<-- "examples/other_error.output" ``` ## See also - [List of other errors](../../home/exceptions.md#further-exceptions) - [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range ## Version history - Since version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/out_of_range.md000066400000000000000000000033561453145653700236100ustar00rootroot00000000000000# nlohmann::basic_json::out_of_range ```cpp class out_of_range : public exception; ``` This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys. Exceptions have ids 4xx (see [list of out-of-range errors](../../home/exceptions.md#out-of-range)). ```plantuml std::exception <|-- basic_json::exception basic_json::exception <|-- basic_json::parse_error basic_json::exception <|-- basic_json::invalid_iterator basic_json::exception <|-- basic_json::type_error basic_json::exception <|-- basic_json::out_of_range basic_json::exception <|-- basic_json::other_error interface std::exception {} class basic_json::exception { + const int id + const char* what() const } class basic_json::parse_error { + const std::size_t byte } class basic_json::out_of_range #FFFF00 {} ``` ## Member functions - **what** - returns explanatory string ## Member variables - **id** - the id of the exception ## Examples ??? example The following code shows how a `out_of_range` exception can be caught. ```cpp --8<-- "examples/out_of_range.cpp" ``` Output: ```json --8<-- "examples/out_of_range.output" ``` ## See also - [List of out-of-range errors](../../home/exceptions.md#out-of-range) - [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`other_error`](other_error.md) for exceptions indicating other library errors ## Version history - Since version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/parse.md000066400000000000000000000142441453145653700222510ustar00rootroot00000000000000# nlohmann::basic_json::parse ```cpp // (1) template static basic_json parse(InputType&& i, const parser_callback_t cb = nullptr, const bool allow_exceptions = true, const bool ignore_comments = false); // (2) template static basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb = nullptr, const bool allow_exceptions = true, const bool ignore_comments = false); ``` 1. Deserialize from a compatible input. 2. Deserialize from a pair of character iterators The `value_type` of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32. ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer (must not be null) - a C-style array of characters - a pointer to a null-terminated string of single byte characters - a `std::string` - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : a compatible iterator type, for instance. - a pair of `std::string::iterator` or `std::vector::iterator` - a pair of pointers such as `ptr` and `ptr + len` ## Parameters `i` (in) : Input to parse from. `cb` (in) : a parser callback function of type [`parser_callback_t`](parser_callback_t.md) which is used to control the deserialization by filtering unwanted values (optional) `allow_exceptions` (in) : whether to throw exceptions in case of a parse error (optional, `#!cpp true` by default) `ignore_comments` (in) : whether comments should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error (`#!cpp false`); (optional, `#!cpp false` by default) `first` (in) : iterator to start of character range `last` (in) : iterator to end of character range ## Return value Deserialized JSON value; in case of a parse error and `allow_exceptions` set to `#!cpp false`, the return value will be `value_t::discarded`. The latter can be checked with [`is_discarded`](is_discarded.md). ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions - Throws [`parse_error.101`](../../home/exceptions.md#jsonexceptionparse_error101) in case of an unexpected token. - Throws [`parse_error.102`](../../home/exceptions.md#jsonexceptionparse_error102) if to_unicode fails or surrogate error. - Throws [`parse_error.103`](../../home/exceptions.md#jsonexceptionparse_error103) if to_unicode fails. ## Complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function `cb` or reading from (1) the input `i` or (2) the iterator range [`first`, `last`] has a super-linear complexity. ## Notes (1) A UTF-8 byte order mark is silently ignored. !!! danger "Runtime assertion" The precondition that a passed `#!cpp FILE` pointer must not be null is enforced with a [runtime assertion](../../features/assertions.md). ## Examples ??? example "Parsing from a character array" The example below demonstrates the `parse()` function reading from an array. ```cpp --8<-- "examples/parse__array__parser_callback_t.cpp" ``` Output: ```json --8<-- "examples/parse__array__parser_callback_t.output" ``` ??? example "Parsing from a string" The example below demonstrates the `parse()` function with and without callback function. ```cpp --8<-- "examples/parse__string__parser_callback_t.cpp" ``` Output: ```json --8<-- "examples/parse__string__parser_callback_t.output" ``` ??? example "Parsing from an input stream" The example below demonstrates the `parse()` function with and without callback function. ```cpp --8<-- "examples/parse__istream__parser_callback_t.cpp" ``` Output: ```json --8<-- "examples/parse__istream__parser_callback_t.output" ``` ??? example "Parsing from a contiguous container" The example below demonstrates the `parse()` function reading from a contiguous container. ```cpp --8<-- "examples/parse__contiguouscontainer__parser_callback_t.cpp" ``` Output: ```json --8<-- "examples/parse__contiguouscontainer__parser_callback_t.output" ``` ??? example "Parsing from a non null-terminated string" The example below demonstrates the `parse()` function reading from a string that is not null-terminated. ```cpp --8<-- "examples/parse__pointers.cpp" ``` Output: ```json --8<-- "examples/parse__pointers.output" ``` ??? example "Parsing from an iterator pair" The example below demonstrates the `parse()` function reading from an iterator pair. ```cpp --8<-- "examples/parse__iterator_pair.cpp" ``` Output: ```json --8<-- "examples/parse__iterator_pair.output" ``` ??? example "Effect of `allow_exceptions` parameter" The example below demonstrates the effect of the `allow_exceptions` parameter in the ´parse()` function. ```cpp --8<-- "examples/parse__allow_exceptions.cpp" ``` Output: ```json --8<-- "examples/parse__allow_exceptions.output" ``` ## See also - [accept](accept.md) - check if the input is valid JSON - [operator>>](../operator_gtgt.md) - deserialize from stream ## Version history - Added in version 1.0.0. - Overload for contiguous containers (1) added in version 2.0.3. - Ignoring comments via `ignore_comments` added in version 3.9.0. !!! warning "Deprecation" Overload (2) replaces calls to `parse` with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp parse({ptr, ptr+len}, ...);` with `#!cpp parse(ptr, ptr+len, ...);`. You should be warned by your compiler with a `-Wdeprecated-declarations` warning if you are using a deprecated function. json-3.11.3/docs/mkdocs/docs/api/basic_json/parse_error.md000066400000000000000000000041031453145653700234530ustar00rootroot00000000000000# nlohmann::basic_json::parse_error ```cpp class parse_error : public exception; ``` This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, BSON, CBOR, MessagePack, UBJSON, as well as when using JSON Patch. Member `byte` holds the byte index of the last read character in the input file (see note below). Exceptions have ids 1xx (see [list of parse errors](../../home/exceptions.md#parse-errors)). ```plantuml std::exception <|-- basic_json::exception basic_json::exception <|-- basic_json::parse_error basic_json::exception <|-- basic_json::invalid_iterator basic_json::exception <|-- basic_json::type_error basic_json::exception <|-- basic_json::out_of_range basic_json::exception <|-- basic_json::other_error interface std::exception {} class basic_json::exception { + const int id + const char* what() const } class basic_json::parse_error #FFFF00 { + const std::size_t byte } ``` ## Member functions - **what** - returns explanatory string ## Member variables - **id** - the id of the exception - **byte** - byte index of the parse error ## Notes For an input with $n$ bytes, 1 is the index of the first character and $n+1$ is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector for binary formats. ## Examples ??? example The following code shows how a `parse_error` exception can be caught. ```cpp --8<-- "examples/parse_error.cpp" ``` Output: ```json --8<-- "examples/parse_error.output" ``` ## See also - [List of parse errors](../../home/exceptions.md#parse-errors) - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`type_error`](type_error.md) for exceptions indicating executing a member function with a wrong type - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`other_error`](other_error.md) for exceptions indicating other library errors ## Version history - Since version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/parse_event_t.md000066400000000000000000000014401453145653700237670ustar00rootroot00000000000000# nlohmann::basic_json::parse_event_t ```cpp enum class parse_event_t : std::uint8_t { object_start, object_end, array_start, array_end, key, value }; ``` The parser callback distinguishes the following events: - `object_start`: the parser read `{` and started to process a JSON object - `key`: the parser read a key of a value in an object - `object_end`: the parser read `}` and finished processing a JSON object - `array_start`: the parser read `[` and started to process a JSON array - `array_end`: the parser read `]` and finished processing a JSON array - `value`: the parser finished reading a JSON value ## Examples ![Example when certain parse events are triggered](../../images/callback_events.png) ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/parser_callback_t.md000066400000000000000000000071001453145653700245630ustar00rootroot00000000000000# nlohmann::basic_json::parser_callback_t ```cpp template using parser_callback_t = std::function; ``` With a parser callback function, the result of parsing a JSON text can be influenced. When passed to [`parse`](parse.md), it is called on certain events (passed as [`parse_event_t`](parse_event_t.md) via parameter `event`) with a set recursion depth `depth` and context JSON value `parsed`. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not. We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters `depth`, `event`, and `parsed`. | parameter `event` | description | parameter `depth` | parameter `parsed` | |-------------------------------|-----------------------------------------------------------|-------------------------------------------|----------------------------------| | `parse_event_t::object_start` | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded | | `parse_event_t::key` | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key | | `parse_event_t::object_end` | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object | | `parse_event_t::array_start` | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded | | `parse_event_t::array_end` | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array | | `parse_event_t::value` | the parser finished reading a JSON value | depth of the value | the parsed JSON value | ![Example when certain parse events are triggered](../../images/callback_events.png) Discarding a value (i.e., returning `#!cpp false`) has different effects depending on the context in which function was called: - Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read. - In case a value outside a structured type is skipped, it is replaced with `null`. This case happens if the top-level element is skipped. ## Parameters `depth` (in) : the depth of the recursion during parsing `event` (in) : an event of type [`parse_event_t`](parse_event_t.md) indicating the context in the callback function has been called `parsed` (in, out) : the current intermediate parse result; note that writing to this value has no effect for `parse_event_t::key` events ## Return value Whether the JSON value which called the function during parsing should be kept (`#!cpp true`) or not (`#!cpp false`). In the latter case, it is either skipped completely or replaced by an empty discarded object. ## Examples ??? example The example below demonstrates the `parse()` function with and without callback function. ```cpp --8<-- "examples/parse__string__parser_callback_t.cpp" ``` Output: ```json --8<-- "examples/parse__string__parser_callback_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/patch.md000066400000000000000000000047611453145653700222410ustar00rootroot00000000000000# nlohmann::basic_json::patch ```cpp basic_json patch(const basic_json& json_patch) const; ``` [JSON Patch](http://jsonpatch.com) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. ## Parameters `json_patch` (in) : JSON patch document ## Return value patched document ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Exceptions - Throws [`parse_error.104`](../../home/exceptions.md#jsonexceptionparse_error104) if the JSON patch does not consist of an array of objects. - Throws [`parse_error.105`](../../home/exceptions.md#jsonexceptionparse_error105) if the JSON patch is malformed (e.g., mandatory attributes are missing); example: `"operation add must have member path"`. - Throws [`out_of_range.401`](../../home/exceptions.md#jsonexceptionout_of_range401) if an array index is out of range. - Throws [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: `"key baz not found"`. - Throws [`out_of_range.405`](../../home/exceptions.md#jsonexceptionout_of_range405) if JSON pointer has no parent ("add", "remove", "move") - Throws [`out_of_range.501`](../../home/exceptions.md#jsonexceptionother_error501) if "test" operation was unsuccessful. ## Complexity Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected. ## Notes The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value. ## Examples ??? example The following code shows how a JSON patch is applied to a value. ```cpp --8<-- "examples/patch.cpp" ``` Output: ```json --8<-- "examples/patch.output" ``` ## See also - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - [patch_inplace](patch_inplace.md) applies a JSON Patch without creating a copy of the document - [merge_patch](merge_patch.md) applies a JSON Merge Patch ## Version history - Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/patch_inplace.md000066400000000000000000000050171453145653700237270ustar00rootroot00000000000000# nlohmann::basic_json::patch_inplace ```cpp void patch_inplace(const basic_json& json_patch) const; ``` [JSON Patch](http://jsonpatch.com) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. This function applies a JSON patch in place and returns void. ## Parameters `json_patch` (in) : JSON patch document ## Exception safety No guarantees, value may be corrupted by an unsuccessful patch operation. ## Exceptions - Throws [`parse_error.104`](../../home/exceptions.md#jsonexceptionparse_error104) if the JSON patch does not consist of an array of objects. - Throws [`parse_error.105`](../../home/exceptions.md#jsonexceptionparse_error105) if the JSON patch is malformed (e.g., mandatory attributes are missing); example: `"operation add must have member path"`. - Throws [`out_of_range.401`](../../home/exceptions.md#jsonexceptionout_of_range401) if an array index is out of range. - Throws [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: `"key baz not found"`. - Throws [`out_of_range.405`](../../home/exceptions.md#jsonexceptionout_of_range405) if JSON pointer has no parent ("add", "remove", "move") - Throws [`out_of_range.501`](../../home/exceptions.md#jsonexceptionother_error501) if "test" operation was unsuccessful. ## Complexity Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected. ## Notes Unlike [`patch`](patch.md), `patch_inplace` applies the operation "in place" and no copy of the JSON value is created. That makes it faster for large documents by avoiding the copy. However, the JSON value might be corrupted if the function throws an exception. ## Examples ??? example The following code shows how a JSON patch is applied to a value. ```cpp --8<-- "examples/patch_inplace.cpp" ``` Output: ```json --8<-- "examples/patch_inplace.output" ``` ## See also - [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - [patch](patch.md) applies a JSON Merge Patch - [merge_patch](merge_patch.md) applies a JSON Merge Patch ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/push_back.md000066400000000000000000000056751453145653700231060ustar00rootroot00000000000000# nlohmann::basic_json::push_back ```cpp // (1) void push_back(basic_json&& val); void push_back(const basic_json& val); // (2) void push_back(const typename object_t::value_type& val); // (3) void push_back(initializer_list_t init); ``` 1. Appends the given element `val` to the end of the JSON array. If the function is called on a JSON null value, an empty array is created before appending `val`. 2. Inserts the given element `val` to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting `val`. 3. This function allows using `push_back` with an initializer list. In case 1. the current value is an object, 2. the initializer list `init` contains only two elements, and 3. the first element of `init` is a string, `init` is converted into an object element and added using `push_back(const typename object_t::value_type&)`. Otherwise, `init` is converted to a JSON value and added using `push_back(basic_json&&)`. ## Parameters `val` (in) : the value to add to the JSON array/object `init` (in) : an initializer list ## Exceptions All functions can throw the following exception: - Throws [`type_error.308`](../../home/exceptions.md#jsonexceptiontype_error308) when called on a type other than JSON array or null; example: `"cannot use push_back() with number"` ## Complexity 1. Amortized constant. 2. Logarithmic in the size of the container, O(log(`size()`)). 3. Linear in the size of the initializer list `init`. ## Notes (3) This function is required to resolve an ambiguous overload error, because pairs like `{"key", "value"}` can be both interpreted as `object_t::value_type` or `std::initializer_list`, see [#235](https://github.com/nlohmann/json/issues/235) for more information. ## Examples ??? example "Example: (1) add element to array" The example shows how `push_back()` and `+=` can be used to add elements to a JSON array. Note how the `null` value was silently converted to a JSON array. ```cpp --8<-- "examples/push_back.cpp" ``` Output: ```json --8<-- "examples/push_back.output" ``` ??? example "Example: (2) add element to object" The example shows how `push_back()` and `+=` can be used to add elements to a JSON object. Note how the `null` value was silently converted to a JSON object. ```cpp --8<-- "examples/push_back__object_t__value.cpp" ``` Output: ```json --8<-- "examples/push_back__object_t__value.output" ``` ??? example "Example: (3) add to object from initializer list" The example shows how initializer lists are treated as objects when possible. ```cpp --8<-- "examples/push_back__initializer_list.cpp" ``` Output: ```json --8<-- "examples/push_back__initializer_list.output" ``` ## Version history 1. Since version 1.0.0. 2. Since version 1.0.0. 2. Since version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/rbegin.md000066400000000000000000000013261453145653700224020ustar00rootroot00000000000000# nlohmann::basic_json::rbegin ```cpp reverse_iterator rbegin() noexcept; const_reverse_iterator rbegin() const noexcept; ``` Returns an iterator to the reverse-beginning; that is, the last element. ![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) ## Return value reverse iterator to the first element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `rbegin()`. ```cpp --8<-- "examples/rbegin.cpp" ``` Output: ```json --8<-- "examples/rbegin.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/rend.md000066400000000000000000000015001453145653700220560ustar00rootroot00000000000000# nlohmann::basic_json::rend ```cpp reverse_iterator rend() noexcept; const_reverse_iterator rend() const noexcept; ``` Returns an iterator to the reverse-end; that is, one before the first element. This element acts as a placeholder, attempting to access it results in undefined behavior. ![Illustration from cppreference.com](../../images/range-rbegin-rend.svg) ## Return value reverse iterator to the element following the last element ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code shows an example for `eend()`. ```cpp --8<-- "examples/rend.cpp" ``` Output: ```json --8<-- "examples/rend.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/sax_parse.md000066400000000000000000000061731453145653700231260ustar00rootroot00000000000000# nlohmann::basic_json::sax_parse ```cpp // (1) template static bool sax_parse(InputType&& i, SAX* sax, input_format_t format = input_format_t::json, const bool strict = true, const bool ignore_comments = false); // (2) template static bool sax_parse(IteratorType first, IteratorType last, SAX* sax, input_format_t format = input_format_t::json, const bool strict = true, const bool ignore_comments = false); ``` Read from input and generate SAX events 1. Read from a compatible input. 2. Read from a pair of character iterators The value_type of the iterator must be an integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32. The SAX event lister must follow the interface of [`json_sax`](../json_sax/index.md). ## Template parameters `InputType` : A compatible input, for instance: - an `std::istream` object - a `FILE` pointer - a C-style array of characters - a pointer to a null-terminated string of single byte characters - an object `obj` for which `begin(obj)` and `end(obj)` produces a valid pair of iterators. `IteratorType` : Description `SAX` : Description ## Parameters `i` (in) : Input to parse from. `sax` (in) : SAX event listener `format` (in) : the format to parse (JSON, CBOR, MessagePack, or UBJSON) (optional, `input_format_t::json` by default), see [`input_format_t`](input_format_t.md) for more information `strict` (in) : whether the input has to be consumed completely (optional, `#!cpp true` by default) `ignore_comments` (in) : whether comments should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error (`#!cpp false`); (optional, `#!cpp false` by default) `first` (in) : iterator to start of character range `last` (in) : iterator to end of character range ## Return value return value of the last processed SAX event ## Exception safety ## Complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer `sax` has a super-linear complexity. ## Notes A UTF-8 byte order mark is silently ignored. ## Examples ??? example The example below demonstrates the `sax_parse()` function reading from string and processing the events with a user-defined SAX event consumer. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. - Ignoring comments via `ignore_comments` added in version 3.9.0. !!! warning "Deprecation" Overload (2) replaces calls to `sax_parse` with a pair of iterators as their first parameter which has been deprecated in version 3.8.0. This overload will be removed in version 4.0.0. Please replace all calls like `#!cpp sax_parse({ptr, ptr+len});` with `#!cpp sax_parse(ptr, ptr+len);`. json-3.11.3/docs/mkdocs/docs/api/basic_json/size.md000066400000000000000000000030101453145653700220760ustar00rootroot00000000000000# nlohmann::basic_json::size ```cpp size_type size() const noexcept; ``` Returns the number of elements in a JSON value. ## Return value The return value depends on the different types and is defined as follows: | Value type | return value | |------------|-------------------------------------| | null | `0` | | boolean | `1` | | string | `1` | | number | `1` | | binary | `1` | | object | result of function object_t::size() | | array | result of function array_t::size() | ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant, as long as [`array_t`](array_t.md) and [`object_t`](object_t.md) satisfy the [Container](https://en.cppreference.com/w/cpp/named_req/Container) concept; that is, their `size()` functions have constant complexity. ## Notes This function does not return the length of a string stored as JSON value -- it returns the number of elements in the JSON value which is `1` in the case of a string. ## Examples ??? example The following code calls `size()` on the different value types. ```cpp --8<-- "examples/size.cpp" ``` Output: ```json --8<-- "examples/size.output" ``` ## Version history - Added in version 1.0.0. - Extended to return `1` for binary types in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/std_hash.md000066400000000000000000000014111453145653700227240ustar00rootroot00000000000000# std::hash ```cpp namespace std { struct hash; } ``` Return a hash value for a JSON object. The hash function tries to rely on `std::hash` where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for `#!json null`, `#!cpp 0`, `#!cpp 0U`, and `#!cpp false`, etc. ## Examples ??? example The example shows how to calculate hash values for different JSON values. ```cpp --8<-- "examples/std_hash.cpp" ``` Output: ```json --8<-- "examples/std_hash.output" ``` Note the output is platform-dependent. ## Version history - Added in version 1.0.0. - Extended for arbitrary basic_json types in version 3.10.5. json-3.11.3/docs/mkdocs/docs/api/basic_json/std_swap.md000066400000000000000000000014161453145653700227600ustar00rootroot00000000000000# std::swap ```cpp namespace std { void swap(nlohmann::basic_json& j1, nlohmann::basic_json& j2); } ``` Exchanges the values of two JSON objects. ## Parameters `j1` (in, out) : value to be replaced by `j2` `j2` (in, out) : value to be replaced by `j1` ## Possible implementation ```cpp void swap(nlohmann::basic_json& j1, nlohmann::basic_json& j2) { j1.swap(j2); } ``` ## Examples ??? example The following code shows how two values are swapped with `std::swap`. ```cpp --8<-- "examples/std_swap.cpp" ``` Output: ```json --8<-- "examples/std_swap.output" ``` ## See also - [swap](swap.md) ## Version history - Added in version 1.0.0. - Extended for arbitrary basic_json types in version 3.10.5. json-3.11.3/docs/mkdocs/docs/api/basic_json/string_t.md000066400000000000000000000042131453145653700227630ustar00rootroot00000000000000# nlohmann::basic_json::string_t ```cpp using string_t = StringType; ``` The type used to store JSON strings. [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON strings as follows: > A string is a sequence of zero or more Unicode characters. To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization. ## Template parameters `StringType` : the container to store strings (e.g., `std::string`). Note this container is used for keys/names in objects, see [object_t](object_t.md). ## Notes #### Default type With the default values for `StringType` (`std::string`), the default value for `string_t` is `#!cpp std::string`. #### Encoding Strings are stored in UTF-8 encoding. Therefore, functions like `std::string::size()` or `std::string::length()` return the number of bytes in the string rather than the number of characters or glyphs. #### String comparison [RFC 8259](https://tools.ietf.org/html/rfc8259) states: > Software implementations are typically required to test names of object members for equality. Implementations that > transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, > code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or > inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may > incorrectly find that `"a\\b"` and `"a\u005Cb"` are not equal. This implementation is interoperable as it does compare strings code unit by code unit. #### Storage String values are stored as pointers in a `basic_json` type. That is, for any access to string values, a pointer of type `string_t*` must be dereferenced. ## Examples ??? example The following code shows that `string_t` is by default, a typedef to `#!cpp std::string`. ```cpp --8<-- "examples/string_t.cpp" ``` Output: ```json --8<-- "examples/string_t.output" ``` ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/swap.md000066400000000000000000000114461453145653700221120ustar00rootroot00000000000000# nlohmann::basic_json::swap ```cpp // (1) void swap(reference other) noexcept; // (2) void swap(reference left, reference right) noexcept; // (3) void swap(array_t& other); // (4) void swap(object_t& other); // (5) void swap(string_t& other); // (6) void swap(binary_t& other); // (7) void swap(typename binary_t::container_type& other); ``` 1. Exchanges the contents of the JSON value with those of `other`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. 2. Exchanges the contents of the JSON value from `left` with those of `right`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Implemented as a friend function callable via ADL. 3. Exchanges the contents of a JSON array with those of `other`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. 4. Exchanges the contents of a JSON object with those of `other`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. 5. Exchanges the contents of a JSON string with those of `other`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. 6. Exchanges the contents of a binary value with those of `other`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. 7. Exchanges the contents of a binary value with those of `other`. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike version (6), no binary subtype is involved. ## Parameters `other` (in, out) : value to exchange the contents with `left` (in, out) : value to exchange the contents with `right` (in, out) : value to exchange the contents with ## Exceptions 1. No-throw guarantee: this function never throws exceptions. 2. No-throw guarantee: this function never throws exceptions. 3. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than arrays; example: `"cannot use swap() with boolean"` 4. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than objects; example: `"cannot use swap() with boolean"` 5. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than strings; example: `"cannot use swap() with boolean"` 6. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than binaries; example: `"cannot use swap() with boolean"` 7. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than binaries; example: `"cannot use swap() with boolean"` ## Complexity Constant. ## Examples ??? example "Example: Swap JSON value (1, 2)" The example below shows how JSON values can be swapped with `swap()`. ```cpp --8<-- "examples/swap__reference.cpp" ``` Output: ```json --8<-- "examples/swap__reference.output" ``` ??? example "Example: Swap array (3)" The example below shows how arrays can be swapped with `swap()`. ```cpp --8<-- "examples/swap__array_t.cpp" ``` Output: ```json --8<-- "examples/swap__array_t.output" ``` ??? example "Example: Swap object (4)" The example below shows how objects can be swapped with `swap()`. ```cpp --8<-- "examples/swap__object_t.cpp" ``` Output: ```json --8<-- "examples/swap__object_t.output" ``` ??? example "Example: Swap string (5)" The example below shows how strings can be swapped with `swap()`. ```cpp --8<-- "examples/swap__string_t.cpp" ``` Output: ```json --8<-- "examples/swap__string_t.output" ``` ??? example "Example: Swap string (6)" The example below shows how binary values can be swapped with `swap()`. ```cpp --8<-- "examples/swap__binary_t.cpp" ``` Output: ```json --8<-- "examples/swap__binary_t.output" ``` ## See also - [std::swap](std_swap.md) ## Version history 1. Since version 1.0.0. 2. Since version 1.0.0. 3. Since version 1.0.0. 4. Since version 1.0.0. 5. Since version 1.0.0. 6. Since version 3.8.0. 7. Since version 3.8.0.json-3.11.3/docs/mkdocs/docs/api/basic_json/to_bjdata.md000066400000000000000000000036231453145653700230650ustar00rootroot00000000000000# nlohmann::basic_json::to_bjdata ```cpp // (1) static std::vector to_bjdata(const basic_json& j, const bool use_size = false, const bool use_type = false); // (2) static void to_bjdata(const basic_json& j, detail::output_adapter o, const bool use_size = false, const bool use_type = false); static void to_bjdata(const basic_json& j, detail::output_adapter o, const bool use_size = false, const bool use_type = false); ``` Serializes a given JSON value `j` to a byte vector using the BJData (Binary JData) serialization format. BJData aims to be more compact than JSON itself, yet more efficient to parse. 1. Returns a byte vector containing the BJData serialization. 2. Writes the BJData serialization to an output adapter. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/bjdata.md). ## Parameters `j` (in) : JSON value to serialize `o` (in) : output adapter to write serialization to `use_size` (in) : whether to add size annotations to container types; optional, `#!cpp false` by default. `use_type` (in) : whether to add type annotations to container types (must be combined with `#!cpp use_size = true`); optional, `#!cpp false` by default. ## Return value 1. BJData serialization as byte vector 2. (none) ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of the JSON value `j`. ## Examples ??? example The example shows the serialization of a JSON value to a byte vector in BJData format. ```cpp --8<-- "examples/to_bjdata.cpp" ``` Output: ```json --8<-- "examples/to_bjdata.output" ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/to_bson.md000066400000000000000000000024251453145653700226000ustar00rootroot00000000000000# nlohmann::basic_json::to_bson ```cpp // (1) static std::vector to_bson(const basic_json& j); // (2) static void to_bson(const basic_json& j, detail::output_adapter o); static void to_bson(const basic_json& j, detail::output_adapter o); ``` BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document). 1. Returns a byte vector containing the BSON serialization. 2. Writes the BSON serialization to an output adapter. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/bson.md). ## Parameters `j` (in) : JSON value to serialize `o` (in) : output adapter to write serialization to ## Return value 1. BSON serialization as byte vector 2. (none) ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of the JSON value `j`. ## Examples ??? example The example shows the serialization of a JSON value to a byte vector in BSON format. ```cpp --8<-- "examples/to_bson.cpp" ``` Output: ```json --8<-- "examples/to_bson.output" ``` ## Version history - Added in version 3.4.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/to_cbor.md000066400000000000000000000027101453145653700225610ustar00rootroot00000000000000# nlohmann::basic_json::to_cbor ```cpp // (1) static std::vector to_cbor(const basic_json& j); // (2) static void to_cbor(const basic_json& j, detail::output_adapter o); static void to_cbor(const basic_json& j, detail::output_adapter o); ``` Serializes a given JSON value `j` to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse. 1. Returns a byte vector containing the CBOR serialization. 2. Writes the CBOR serialization to an output adapter. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/cbor.md). ## Parameters `j` (in) : JSON value to serialize `o` (in) : output adapter to write serialization to ## Return value 1. CBOR serialization as byte vector 2. (none) ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of the JSON value `j`. ## Examples ??? example The example shows the serialization of a JSON value to a byte vector in CBOR format. ```cpp --8<-- "examples/to_cbor.cpp" ``` Output: ```json --8<-- "examples/to_cbor.output" ``` ## Version history - Added in version 2.0.9. - Compact representation of floating-point numbers added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/to_msgpack.md000066400000000000000000000026311453145653700232630ustar00rootroot00000000000000# nlohmann::basic_json::to_msgpack ```cpp // (1) static std::vector to_msgpack(const basic_json& j); // (2) static void to_msgpack(const basic_json& j, detail::output_adapter o); static void to_msgpack(const basic_json& j, detail::output_adapter o); ``` Serializes a given JSON value `j` to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse. 1. Returns a byte vector containing the MessagePack serialization. 2. Writes the MessagePack serialization to an output adapter. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/messagepack.md). ## Parameters `j` (in) : JSON value to serialize `o` (in) : output adapter to write serialization to ## Return value 1. MessagePack serialization as byte vector 2. (none) ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of the JSON value `j`. ## Examples ??? example The example shows the serialization of a JSON value to a byte vector in MessagePack format. ```cpp --8<-- "examples/to_msgpack.cpp" ``` Output: ```json --8<-- "examples/to_msgpack.output" ``` ## Version history - Added in version 2.0.9. json-3.11.3/docs/mkdocs/docs/api/basic_json/to_string.md000066400000000000000000000022111453145653700231360ustar00rootroot00000000000000# to_string(basic_json) ```cpp template std::string to_string(const BasicJsonType& j); ``` This function implements a user-defined to_string for JSON objects. ## Template parameters `BasicJsonType` : a specialization of [`basic_json`](index.md) ## Return value string containing the serialization of the JSON value ## Exception safety Strong guarantee: if an exception is thrown, there are no changes to any JSON value. ## Exceptions Throws [`type_error.316`](../../home/exceptions.md#jsonexceptiontype_error316) if a string stored inside the JSON value is not UTF-8 encoded ## Complexity Linear. ## Possible implementation ```cpp template std::string to_string(const BasicJsonType& j) { return j.dump(); } ``` ## Examples ??? example The following code shows how the library's `to_string()` function integrates with others, allowing argument-dependent lookup. ```cpp --8<-- "examples/to_string.cpp" ``` Output: ```json --8<-- "examples/to_string.output" ``` ## See also - [dump](dump.md) ## Version history Added in version 3.7.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/to_ubjson.md000066400000000000000000000036371453145653700231450ustar00rootroot00000000000000# nlohmann::basic_json::to_ubjson ```cpp // (1) static std::vector to_ubjson(const basic_json& j, const bool use_size = false, const bool use_type = false); // (2) static void to_ubjson(const basic_json& j, detail::output_adapter o, const bool use_size = false, const bool use_type = false); static void to_ubjson(const basic_json& j, detail::output_adapter o, const bool use_size = false, const bool use_type = false); ``` Serializes a given JSON value `j` to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse. 1. Returns a byte vector containing the UBJSON serialization. 2. Writes the UBJSON serialization to an output adapter. The exact mapping and its limitations is described on a [dedicated page](../../features/binary_formats/ubjson.md). ## Parameters `j` (in) : JSON value to serialize `o` (in) : output adapter to write serialization to `use_size` (in) : whether to add size annotations to container types; optional, `#!cpp false` by default. `use_type` (in) : whether to add type annotations to container types (must be combined with `#!cpp use_size = true`); optional, `#!cpp false` by default. ## Return value 1. UBJSON serialization as byte vector 2. (none) ## Exception safety Strong guarantee: if an exception is thrown, there are no changes in the JSON value. ## Complexity Linear in the size of the JSON value `j`. ## Examples ??? example The example shows the serialization of a JSON value to a byte vector in UBJSON format. ```cpp --8<-- "examples/to_ubjson.cpp" ``` Output: ```json --8<-- "examples/to_ubjson.output" ``` ## Version history - Added in version 3.1.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/type.md000066400000000000000000000026041453145653700221150ustar00rootroot00000000000000# nlohmann::basic_json::type ```cpp constexpr value_t type() const noexcept; ``` Return the type of the JSON value as a value from the [`value_t`](value_t.md) enumeration. ## Return value the type of the JSON value | Value type | return value | |---------------------------|----------------------------| | `#!json null` | `value_t::null` | | boolean | `value_t::boolean` | | string | `value_t::string` | | number (integer) | `value_t::number_integer` | | number (unsigned integer) | `value_t::number_unsigned` | | number (floating-point) | `value_t::number_float` | | object | `value_t::object` | | array | `value_t::array` | | binary | `value_t::binary` | | discarded | `value_t::discarded` | ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `type()` for all JSON types. ```cpp --8<-- "examples/type.cpp" ``` Output: ```json --8<-- "examples/type.output" ``` ## Version history - Added in version 1.0.0. - Added unsigned integer type in version 2.0.0. - Added binary type in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/type_error.md000066400000000000000000000032531453145653700233270ustar00rootroot00000000000000# nlohmann::basic_json::type_error ```cpp class type_error : public exception; ``` This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics. Exceptions have ids 3xx (see [list of type errors](../../home/exceptions.md#type-errors)). ```plantuml std::exception <|-- basic_json::exception basic_json::exception <|-- basic_json::parse_error basic_json::exception <|-- basic_json::invalid_iterator basic_json::exception <|-- basic_json::type_error basic_json::exception <|-- basic_json::out_of_range basic_json::exception <|-- basic_json::other_error interface std::exception {} class basic_json::exception { + const int id + const char* what() const } class basic_json::parse_error { + const std::size_t byte } class basic_json::type_error #FFFF00 {} ``` ## Member functions - **what** - returns explanatory string ## Member variables - **id** - the id of the exception ## Examples ??? example The following code shows how a `type_error` exception can be caught. ```cpp --8<-- "examples/type_error.cpp" ``` Output: ```json --8<-- "examples/type_error.output" ``` ## See also - [List of type errors](../../home/exceptions.md#type-errors) - [`parse_error`](parse_error.md) for exceptions indicating a parse error - [`invalid_iterator`](invalid_iterator.md) for exceptions indicating errors with iterators - [`out_of_range`](out_of_range.md) for exceptions indicating access out of the defined range - [`other_error`](other_error.md) for exceptions indicating other library errors ## Version history - Since version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/type_name.md000066400000000000000000000031041453145653700231110ustar00rootroot00000000000000# nlohmann::basic_json::type_name ```cpp const char* type_name() const noexcept; ``` Returns the type name as string to be used in error messages -- usually to indicate that a function was called on a wrong JSON type. ## Return value a string representation of the type ([`value_t`](value_t.md)): | Value type | return value | |----------------------------------------------------|---------------| | `#!json null` | `"null"` | | boolean | `"boolean"` | | string | `"string"` | | number (integer, unsigned integer, floating-point) | `"number"` | | object | `"object"` | | array | `"array"` | | binary | `"binary"` | | discarded | `"discarded"` | ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Examples ??? example The following code exemplifies `type_name()` for all JSON types. ```cpp --8<-- "examples/type_name.cpp" ``` Output: ```json --8<-- "examples/type_name.output" ``` ## Version history - Added in version 1.0.0. - Part of the public API version since 2.1.0. - Changed return value to `const char*` and added `noexcept` in version 3.0.0. - Added support for binary type in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/unflatten.md000066400000000000000000000031061453145653700231320ustar00rootroot00000000000000# nlohmann::basic_json::unflatten ```cpp basic_json unflatten() const; ``` The function restores the arbitrary nesting of a JSON value that has been flattened before using the [`flatten()`](flatten.md) function. The JSON value must meet certain constraints: 1. The value must be an object. 2. The keys must be JSON pointers (see [RFC 6901](https://tools.ietf.org/html/rfc6901)) 3. The mapped values must be primitive JSON types. ## Return value the original JSON from a flattened version ## Exception safety Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions The function can throw the following exceptions: - Throws [`type_error.314`](../../home/exceptions.md#jsonexceptiontype_error314) if value is not an object - Throws [`type_error.315`](../../home/exceptions.md#jsonexceptiontype_error315) if object values are not primitive ## Complexity Linear in the size the JSON value. ## Notes Empty objects and arrays are flattened by [`flatten()`](flatten.md) to `#!json null` values and can not unflattened to their original type. Apart from this example, for a JSON value `j`, the following is always true: `#!cpp j == j.flatten().unflatten()`. ## Examples ??? example The following code shows how a flattened JSON object is unflattened into the original nested JSON object. ```cpp --8<-- "examples/unflatten.cpp" ``` Output: ```json --8<-- "examples/unflatten.output" ``` ## See also - [flatten](flatten.md) the reverse function ## Version history - Added in version 2.0.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/update.md000066400000000000000000000074151453145653700224230ustar00rootroot00000000000000# nlohmann::basic_json::update ```cpp // (1) void update(const_reference j, bool merge_objects = false); // (2) void update(const_iterator first, const_iterator last, bool merge_objects = false); ``` 1. Inserts all values from JSON object `j`. 2. Inserts all values from range `[first, last)` When `merge_objects` is `#!c false` (default), existing keys are overwritten. When `merge_objects` is `#!c true`, recursively merges objects with common keys. The function is motivated by Python's [dict.update](https://docs.python.org/3.6/library/stdtypes.html#dict.update) function. ## Parameters `j` (in) : JSON object to read values from `merge_objects` (in) : when `#!c true`, existing keys are not overwritten, but contents of objects are merged recursively (default: `#!c false`) `first` (in) : begin of the range of elements to insert `last` (in) : end of the range of elements to insert ## Exceptions 1. The function can throw the following exceptions: - Throws [`type_error.312`](../../home/exceptions.md#jsonexceptiontype_error312) if called on JSON values other than objects; example: `"cannot use update() with string"` 2. The function can throw the following exceptions: - Throws [`type_error.312`](../../home/exceptions.md#jsonexceptiontype_error312) if called on JSON values other than objects; example: `"cannot use update() with string"` - Throws [`invalid_iterator.202`](../../home/exceptions.md#jsonexceptioninvalid_iterator202) if called on an iterator which does not belong to the current JSON value; example: `"iterator does not fit current value"` - Throws [`invalid_iterator.210`](../../home/exceptions.md#jsonexceptioninvalid_iterator210) if `first` and `last` do not belong to the same JSON value; example: `"iterators do not fit"` ## Complexity 1. O(N*log(size() + N)), where N is the number of elements to insert. 2. O(N*log(size() + N)), where N is the number of elements to insert. ## Examples ??? example The example shows how `update()` is used. ```cpp --8<-- "examples/update.cpp" ``` Output: ```json --8<-- "examples/update.output" ``` ??? example The example shows how `update()` is used. ```cpp --8<-- "examples/update__range.cpp" ``` Output: ```json --8<-- "examples/update__range.output" ``` ??? example One common use case for this function is the handling of user settings. Assume your application can be configured in some aspects: ```json { "color": "red", "active": true, "name": {"de": "Maus", "en": "mouse"} } ``` The user may override the default settings selectively: ```json { "color": "blue", "name": {"es": "ratón"}, } ``` Then `update` manages the merging of default settings and user settings: ```cpp auto user_settings = json::parse("config.json"); auto effective_settings = get_default_settings(); effective_settings.update(user_settings); ``` Now `effective_settings` contains the default settings, but those keys set by the user are overwritten: ```json { "color": "blue", "active": true, "name": {"es": "ratón"} } ``` Note existing keys were just overwritten. To merge objects, `merge_objects` setting should be set to `#!c true`: ```cpp auto user_settings = json::parse("config.json"); auto effective_settings = get_default_settings(); effective_settings.update(user_settings, true); ``` ```json { "color": "blue", "active": true, "name": {"de": "Maus", "en": "mouse", "es": "ratón"} } ``` ## Version history - Added in version 3.0.0. - Added `merge_objects` parameter in 3.10.4. json-3.11.3/docs/mkdocs/docs/api/basic_json/value.md000066400000000000000000000120571453145653700222530ustar00rootroot00000000000000# nlohmann::basic_json::value ```cpp // (1) template ValueType value(const typename object_t::key_type& key, ValueType&& default_value) const; // (2) template ValueType value(KeyType&& key, ValueType&& default_value) const; // (3) template ValueType value(const json_pointer& ptr, const ValueType& default_value) const; ``` 1. Returns either a copy of an object's element at the specified key `key` or a given default value if no element with key `key` exists. The function is basically equivalent to executing ```cpp try { return at(key); } catch(out_of_range) { return default_value; } ``` 2. See 1. This overload is only available if `KeyType` is comparable with `#!cpp typename object_t::key_type` and `#!cpp typename object_comparator_t::is_transparent` denotes a type. 3. Returns either a copy of an object's element at the specified JSON pointer `ptr` or a given default value if no value at `ptr` exists. The function is basically equivalent to executing ```cpp try { return at(ptr); } catch(out_of_range) { return default_value; } ``` !!! note "Differences to `at` and `operator[]`" - Unlike [`at`](at.md), this function does not throw if the given `key`/`ptr` was not found. - Unlike [`operator[]`](operator[].md), this function does not implicitly add an element to the position defined by `key`/`ptr` key. This function is furthermore also applicable to const objects. ## Template parameters `KeyType` : A type for an object key other than [`json_pointer`](../json_pointer/index.md) that is comparable with [`string_t`](string_t.md) using [`object_comparator_t`](object_comparator_t.md). This can also be a string view (C++17). `ValueType` : type compatible to JSON values, for instance `#!cpp int` for JSON integer numbers, `#!cpp bool` for JSON booleans, or `#!cpp std::vector` types for JSON arrays. Note the type of the expected value at `key`/`ptr` and the default value `default_value` must be compatible. ## Parameters `key` (in) : key of the element to access `default_value` (in) : the value to return if `key`/`ptr` found no value `ptr` (in) : a JSON pointer to the element to access ## Return value 1. copy of the element at key `key` or `default_value` if `key` is not found 2. copy of the element at key `key` or `default_value` if `key` is not found 3. copy of the element at JSON Pointer `ptr` or `default_value` if no value for `ptr` is found ## Exception safety Strong guarantee: if an exception is thrown, there are no changes to any JSON value. ## Exceptions 1. The function can throw the following exceptions: - Throws [`type_error.302`](../../home/exceptions.md#jsonexceptiontype_error302) if `default_value` does not match the type of the value at `key` - Throws [`type_error.306`](../../home/exceptions.md#jsonexceptiontype_error306) if the JSON value is not an object; in that case, using `value()` with a key makes no sense. 2. See 1. 3. The function can throw the following exceptions: - Throws [`type_error.302`](../../home/exceptions.md#jsonexceptiontype_error302) if `default_value` does not match the type of the value at `ptr` - Throws [`type_error.306`](../../home/exceptions.md#jsonexceptiontype_error306) if the JSON value is not an object; in that case, using `value()` with a key makes no sense. ## Complexity 1. Logarithmic in the size of the container. 2. Logarithmic in the size of the container. 3. Logarithmic in the size of the container. ## Examples ??? example "Example: (1) access specified object element with default value" The example below shows how object elements can be queried with a default value. ```cpp --8<-- "examples/value__object_t_key_type.cpp" ``` Output: ```json --8<-- "examples/value__object_t_key_type.output" ``` ??? example "Example: (2) access specified object element using string_view with default value" The example below shows how object elements can be queried with a default value. ```cpp --8<-- "examples/value__keytype.c++17.cpp" ``` Output: ```json --8<-- "examples/value__keytype.c++17.output" ``` ??? example "Example: (3) access specified object element via JSON Pointer with default value" The example below shows how object elements can be queried with a default value. ```cpp --8<-- "examples/value__json_ptr.cpp" ``` Output: ```json --8<-- "examples/value__json_ptr.output" ``` ## See also - see [`at`](at.md) for access by reference with range checking - see [`operator[]`](operator%5B%5D.md) for unchecked access by reference ## Version history 1. Added in version 1.0.0. Changed parameter `default_value` type from `const ValueType&` to `ValueType&&` in version 3.11.0. 2. Added in version 3.11.0. Made `ValueType` the first template parameter in version 3.11.2. 3. Added in version 2.0.2. json-3.11.3/docs/mkdocs/docs/api/basic_json/value_t.md000066400000000000000000000051101453145653700225660ustar00rootroot00000000000000# nlohmann::basic_json::value_t ```cpp enum class value_t : std::uint8_t { null, object, array, string, boolean, number_integer, number_unsigned, number_float, binary, discarded }; ``` This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions [`is_null`](is_null.md), [`is_object`](is_object.md), [`is_array`](is_array.md), [`is_string`](is_string.md), [`is_boolean`](is_boolean.md), [`is_number`](is_number.md) (with [`is_number_integer`](is_number_integer.md), [`is_number_unsigned`](is_number_unsigned.md), and [`is_number_float`](is_number_float.md)), [`is_discarded`](is_discarded.md), [`is_binary`](is_binary.md), [`is_primitive`](is_primitive.md), and [`is_structured`](is_structured.md) rely on it. ## Notes !!! note "Ordering" The order of types is as follows: 1. `null` 2. `boolean` 3. `number_integer`, `number_unsigned`, `number_float` 4. `object` 5. `array` 6. `string` 7. `binary` `discarded` is unordered. !!! note "Types of numbers" There are three enumerators for numbers (`number_integer`, `number_unsigned`, and `number_float`) to distinguish between different types of numbers: - [`number_unsigned_t`](number_unsigned_t.md) for unsigned integers - [`number_integer_t`](number_integer_t.md) for signed integers - [`number_float_t`](number_float_t.md) for floating-point numbers or to approximate integers which do not fit into the limits of their respective type !!! warning "Comparison operators" `operator<` and `operator<=>` (since C++20) are overloaded and compare according to the ordering described above. Until C++20 all other relational and equality operators yield results according to the integer value of each enumerator. Since C++20 some compilers consider the _rewritten candidates_ generated from `operator<=>` during overload resolution, while others do not. For predictable and portable behavior use: - `operator<` or `operator<=>` when wanting to compare according to the order described above - `operator==` or `operator!=` when wanting to compare according to each enumerators integer value ## Examples ??? example The following code how `type()` queries the `value_t` for all JSON types. ```cpp --8<-- "examples/type.cpp" ``` Output: ```json --8<-- "examples/type.output" ``` ## Version history - Added in version 1.0.0. - Added unsigned integer type in version 2.0.0. - Added binary type in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/basic_json/~basic_json.md000066400000000000000000000005111453145653700234370ustar00rootroot00000000000000# nlohmann::basic_json::~basic_json ```cpp ~basic_json() noexcept; ``` Destroys the JSON value and frees all allocated memory. ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Linear. ## Version history - Added in version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/000077500000000000000000000000001453145653700243115ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/byte_container_with_subtype.md000066400000000000000000000017751453145653700324600ustar00rootroot00000000000000# nlohmann::byte_container_with_subtype::byte_container_with_subtype ```cpp // (1) byte_container_with_subtype(); // (2) byte_container_with_subtype(const container_type& container); byte_container_with_subtype(container_type&& container); // (3) byte_container_with_subtype(const container_type& container, subtype_type subtype); byte_container_with_subtype(container_type&& container, subtype_type subtype); ``` 1. Create empty binary container without subtype. 2. Create binary container without subtype. 3. Create binary container with subtype. ## Parameters `container` (in) : binary container `subtype` (in) : subtype ## Examples ??? example The example below demonstrates how byte containers can be created. ```cpp --8<-- "examples/byte_container_with_subtype__byte_container_with_subtype.cpp" ``` Output: ```json --8<-- "examples/byte_container_with_subtype__byte_container_with_subtype.output" ``` ## Version history Since version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/clear_subtype.md000066400000000000000000000013631453145653700274770ustar00rootroot00000000000000# nlohmann::byte_container_with_subtype::clear_subtype ```cpp void clear_subtype() noexcept; ``` Clears the binary subtype and flags the value as not having a subtype, which has implications for serialization; for instance MessagePack will prefer the bin family over the ext family. ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant. ## Examples ??? example The example below demonstrates how `clear_subtype` can remove subtypes. ```cpp --8<-- "examples/byte_container_with_subtype__clear_subtype.cpp" ``` Output: ```json --8<-- "examples/byte_container_with_subtype__clear_subtype.output" ``` ## Version history Since version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/has_subtype.md000066400000000000000000000012521453145653700271610ustar00rootroot00000000000000# nlohmann::byte_container_with_subtype::has_subtype ```cpp constexpr bool has_subtype() const noexcept; ``` Returns whether the value has a subtype. ## Return value whether the value has a subtype ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant. ## Examples ??? example The example below demonstrates how `has_subtype` can check whether a subtype was set. ```cpp --8<-- "examples/byte_container_with_subtype__has_subtype.cpp" ``` Output: ```json --8<-- "examples/byte_container_with_subtype__has_subtype.output" ``` ## Version history Since version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/index.md000066400000000000000000000023341453145653700257440ustar00rootroot00000000000000# nlohmann::byte_container_with_subtype ```cpp template class byte_container_with_subtype : public BinaryType; ``` This type extends the template parameter `BinaryType` provided to [`basic_json`](../basic_json/index.md) with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type. ## Template parameters `BinaryType` : container to store bytes (`#!cpp std::vector` by default) ## Member types - **container_type** - the type of the underlying container (`BinaryType`) - **subtype_type** - the type of the subtype (`#!cpp std::uint64_t`) ## Member functions - [(constructor)](byte_container_with_subtype.md) - **operator==** - comparison: equal - **operator!=** - comparison: not equal - [**set_subtype**](subtype.md) - sets the binary subtype - [**subtype**](subtype.md) - return the binary subtype - [**has_subtype**](has_subtype.md) - return whether the value has a subtype - [**clear_subtype**](clear_subtype.md) - clears the binary subtype ## Version history - Added in version 3.8.0. - Changed type of subtypes to `#!cpp std::uint64_t` in 3.10.0. json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/set_subtype.md000066400000000000000000000013771453145653700272110ustar00rootroot00000000000000# nlohmann::byte_container_with_subtype::set_subtype ```cpp void set_subtype(subtype_type subtype) noexcept; ``` Sets the binary subtype of the value, also flags a binary JSON value as having a subtype, which has implications for serialization. ## Parameters `subtype` (in) : subtype to set ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant. ## Examples ??? example The example below demonstrates how a subtype can be set with `set_subtype`. ```cpp --8<-- "examples/byte_container_with_subtype__set_subtype.cpp" ``` Output: ```json --8<-- "examples/byte_container_with_subtype__set_subtype.output" ``` ## Version history Since version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/byte_container_with_subtype/subtype.md000066400000000000000000000017521453145653700263330ustar00rootroot00000000000000# nlohmann::byte_container_with_subtype::subtype ```cpp constexpr subtype_type subtype() const noexcept; ``` Returns the numerical subtype of the value if it has a subtype. If it does not have a subtype, this function will return `subtype_type(-1)` as a sentinel value. ## Return value the numerical subtype of the binary value, or `subtype_type(-1)` if no subtype is set ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant. ## Examples ??? example The example below demonstrates how the subtype can be retrieved with `subtype`. Note how `subtype_type(-1)` is returned for container `c1`. ```cpp --8<-- "examples/byte_container_with_subtype__subtype.cpp" ``` Output: ```json --8<-- "examples/byte_container_with_subtype__subtype.output" ``` ## Version history - Added in version 3.8.0 - Fixed return value to properly return `subtype_type(-1)` as documented in version 3.10.0. json-3.11.3/docs/mkdocs/docs/api/json.md000066400000000000000000000007301453145653700177710ustar00rootroot00000000000000# nlohmann::json ```cpp using json = basic_json<>; ``` This type is the default specialization of the [basic_json](basic_json/index.md) class which uses the standard template types. ## Examples ??? example The example below demonstrates how to use the type `nlohmann::json`. ```cpp --8<-- "examples/README.cpp" ``` Output: ```json --8<-- "examples/README.output" ``` ## Version history Since version 1.0.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/000077500000000000000000000000001453145653700212075ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/json_pointer/back.md000066400000000000000000000012041453145653700224260ustar00rootroot00000000000000# nlohmann::json_pointer::back ```cpp const string_t& back() const; ``` Return last reference token. ## Return value Last reference token. ## Exceptions Throws [out_of_range.405](../../home/exceptions.md#jsonexceptionout_of_range405) if JSON pointer has no parent. ## Complexity Constant. ## Examples ??? example The example shows the usage of `back`. ```cpp --8<-- "examples/json_pointer__back.cpp" ``` Output: ```json --8<-- "examples/json_pointer__back.output" ``` ## Version history - Added in version 3.6.0. - Changed return type to `string_t` in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/empty.md000066400000000000000000000011741453145653700226720ustar00rootroot00000000000000# nlohmann::json_pointer::empty ```cpp bool empty() const noexcept; ``` Return whether pointer points to the root document. ## Return value `#!cpp true` iff the JSON pointer points to the root document. ## Exception safety No-throw guarantee: this function never throws exceptions. ## Complexity Constant. ## Examples ??? example The example shows the result of `empty` for different JSON Pointers. ```cpp --8<-- "examples/json_pointer__empty.cpp" ``` Output: ```json --8<-- "examples/json_pointer__empty.output" ``` ## Version history Added in version 3.6.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/index.md000066400000000000000000000040701453145653700226410ustar00rootroot00000000000000# nlohmann::json_pointer ```cpp template class json_pointer; ``` A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions [`at`](../basic_json/at.md) and [`operator[]`](../basic_json/operator%5B%5D.md). Furthermore, JSON pointers are the base for JSON patches. ## Template parameters `RefStringType` : the string type used for the reference tokens making up the JSON pointer !!! warning "Deprecation" For backwards compatibility `RefStringType` may also be a specialization of [`basic_json`](../basic_json/index.md) in which case `string_t` will be deduced as [`basic_json::string_t`](../basic_json/string_t.md). This feature is deprecated and may be removed in a future major version. ## Member types - [**string_t**](string_t.md) - the string type used for the reference tokens ## Member functions - [(constructor)](json_pointer.md) - [**to_string**](to_string.md) - return a string representation of the JSON pointer - [**operator string_t**](operator_string_t.md) - return a string representation of the JSON pointer - [**operator==**](operator_eq.md) - compare: equal - [**operator!=**](operator_ne.md) - compare: not equal - [**operator/=**](operator_slasheq.md) - append to the end of the JSON pointer - [**operator/**](operator_slash.md) - create JSON Pointer by appending - [**parent_pointer**](parent_pointer.md) - returns the parent of this JSON pointer - [**pop_back**](pop_back.md) - remove last reference token - [**back**](back.md) - return last reference token - [**push_back**](push_back.md) - append an unescaped token at the end of the pointer - [**empty**](empty.md) - return whether pointer points to the root document ## Literals - [**operator""_json_pointer**](../operator_literal_json_pointer.md) - user-defined string literal for JSON pointers ## See also - [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901) ## Version history - Added in version 2.0.0. - Changed template parameter from `basic_json` to string type in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/json_pointer.md000066400000000000000000000022451453145653700242450ustar00rootroot00000000000000# nlohmann::json_pointer::json_pointer ```cpp explicit json_pointer(const string_t& s = ""); ``` Create a JSON pointer according to the syntax described in [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). ## Parameters `s` (in) : string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value ## Exceptions - Throws [parse_error.107](../../home/exceptions.md#jsonexceptionparse_error107) if the given JSON pointer `s` is nonempty and does not begin with a slash (`/`); see example below. - Throws [parse_error.108](../../home/exceptions.md#jsonexceptionparse_error108) if a tilde (`~`) in the given JSON pointer `s` is not followed by `0` (representing `~`) or `1` (representing `/`); see example below. ## Examples ??? example The example shows the construction several valid JSON pointers as well as the exceptional behavior. ```cpp --8<-- "examples/json_pointer.cpp" ``` Output: ```json --8<-- "examples/json_pointer.output" ``` ## Version history - Added in version 2.0.0. - Changed type of `s` to `string_t` in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/operator_eq.md000066400000000000000000000064451453145653700240620ustar00rootroot00000000000000# nlohmann::json_pointer::operator== ```cpp // until C++20 template bool operator==( const json_pointer& lhs, const json_pointer& rhs) noexcept; // (1) template bool operator==( const json_pointer& lhs, const StringType& rhs); // (2) template bool operator==( const StringType& lhs, const json_pointer& rhs); // (2) // since C++20 class json_pointer { template bool operator==( const json_pointer& rhs) const noexcept; // (1) bool operator==(const string_t& rhs) const; // (2) }; ``` 1. Compares two JSON pointers for equality by comparing their reference tokens. 2. Compares a JSON pointer and a string or a string and a JSON pointer for equality by converting the string to a JSON pointer and comparing the JSON pointers according to 1. ## Template parameters `RefStringTypeLhs`, `RefStringTypeRhs` : the string type of the left-hand side or right-hand side JSON pointer, respectively `StringType` : the string type derived from the `json_pointer` operand ([`json_pointer::string_t`](string_t.md)) ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether the values `lhs`/`*this` and `rhs` are equal ## Exception safety 1. No-throw guarantee: this function never throws exceptions. 2. Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. (none) 2. The function can throw the following exceptions: - Throws [parse_error.107](../../home/exceptions.md#jsonexceptionparse_error107) if the given JSON pointer `s` is nonempty and does not begin with a slash (`/`); see example below. - Throws [parse_error.108](../../home/exceptions.md#jsonexceptionparse_error108) if a tilde (`~`) in the given JSON pointer `s` is not followed by `0` (representing `~`) or `1` (representing `/`); see example below. ## Complexity Constant if `lhs` and `rhs` differ in the number of reference tokens, otherwise linear in the number of reference tokens. ## Notes !!! warning "Deprecation" Overload 2 is deprecated and will be removed in a future major version release. ## Examples ??? example "Example: (1) Comparing JSON pointers" The example demonstrates comparing JSON pointers. ```cpp --8<-- "examples/json_pointer__operator__equal.cpp" ``` Output: ``` --8<-- "examples/json_pointer__operator__equal.output" ``` ??? example "Example: (2) Comparing JSON pointers and strings" The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception. ```cpp --8<-- "examples/json_pointer__operator__equal_stringtype.cpp" ``` Output: ``` --8<-- "examples/json_pointer__operator__equal_stringtype.output" ``` ## Version history 1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2. 2. Added for backward compatibility and deprecated in version 3.11.2. json-3.11.3/docs/mkdocs/docs/api/json_pointer/operator_ne.md000066400000000000000000000062301453145653700240470ustar00rootroot00000000000000# nlohmann::json_pointer::operator!= ```cpp // until C++20 template bool operator!=( const json_pointer& lhs, const json_pointer& rhs) noexcept; // (1) template bool operator!=( const json_pointer& lhs, const StringType& rhs); // (2) template bool operator!=( const StringType& lhs, const json_pointer& rhs); // (2) ``` 1. Compares two JSON pointers for inequality by comparing their reference tokens. 2. Compares a JSON pointer and a string or a string and a JSON pointer for inequality by converting the string to a JSON pointer and comparing the JSON pointers according to 1. ## Template parameters `RefStringTypeLhs`, `RefStringTypeRhs` : the string type of the left-hand side or right-hand side JSON pointer, respectively `StringType` : the string type derived from the `json_pointer` operand ([`json_pointer::string_t`](string_t.md)) ## Parameters `lhs` (in) : first value to consider `rhs` (in) : second value to consider ## Return value whether the values `lhs`/`*this` and `rhs` are not equal ## Exception safety 1. No-throw guarantee: this function never throws exceptions. 2. Strong exception safety: if an exception occurs, the original value stays intact. ## Exceptions 1. (none) 2. The function can throw the following exceptions: - Throws [parse_error.107](../../home/exceptions.md#jsonexceptionparse_error107) if the given JSON pointer `s` is nonempty and does not begin with a slash (`/`); see example below. - Throws [parse_error.108](../../home/exceptions.md#jsonexceptionparse_error108) if a tilde (`~`) in the given JSON pointer `s` is not followed by `0` (representing `~`) or `1` (representing `/`); see example below. ## Complexity Constant if `lhs` and `rhs` differ in the number of reference tokens, otherwise linear in the number of reference tokens. ## Notes !!! note "Operator overload resolution" Since C++20 overload resolution will consider the _rewritten candidate_ generated from [`operator==`](operator_eq.md). !!! warning "Deprecation" Overload 2 is deprecated and will be removed in a future major version release. ## Examples ??? example "Example: (1) Comparing JSON pointers" The example demonstrates comparing JSON pointers. ```cpp --8<-- "examples/json_pointer__operator__notequal.cpp" ``` Output: ``` --8<-- "examples/json_pointer__operator__notequal.output" ``` ??? example "Example: (2) Comparing JSON pointers and strings" The example demonstrates comparing JSON pointers and strings, and when doing so may raise an exception. ```cpp --8<-- "examples/json_pointer__operator__notequal_stringtype.cpp" ``` Output: ``` --8<-- "examples/json_pointer__operator__notequal_stringtype.output" ``` ## Version history 1. Added in version 2.1.0. 2. Added for backward compatibility and deprecated in version 3.11.2. json-3.11.3/docs/mkdocs/docs/api/json_pointer/operator_slash.md000066400000000000000000000027371453145653700245670ustar00rootroot00000000000000# nlohmann::json_pointer::operator/ ```cpp // (1) json_pointer operator/(const json_pointer& lhs, const json_pointer& rhs); // (2) json_pointer operator/(const json_pointer& lhs, string_t token); // (3) json_pointer operator/(const json_pointer& lhs, std::size_t array_idx); ``` 1. create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer 2. create a new JSON pointer by appending the unescaped token at the end of the JSON pointer 3. create a new JSON pointer by appending the array-index-token at the end of the JSON pointer ## Parameters `lhs` (in) : JSON pointer `rhs` (in) : JSON pointer to append `token` (in) : reference token to append `array_idx` (in) : array index to append ## Return value 1. a new JSON pointer with `rhs` appended to `lhs` 2. a new JSON pointer with unescaped `token` appended to `lhs` 3. a new JSON pointer with `array_idx` appended to `lhs` ## Complexity 1. Linear in the length of `lhs` and `rhs`. 2. Linear in the length of `lhs`. 3. Linear in the length of `lhs`. ## Examples ??? example The example shows the usage of `operator/`. ```cpp --8<-- "examples/json_pointer__operator_add_binary.cpp" ``` Output: ```json --8<-- "examples/json_pointer__operator_add_binary.output" ``` ## Version history 1. Added in version 3.6.0. 2. Added in version 3.6.0. Changed type of `token` to `string_t` in version 3.11.0. 3. Added in version 3.6.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/operator_slasheq.md000066400000000000000000000023171453145653700251070ustar00rootroot00000000000000# nlohmann::json_pointer::operator/= ```cpp // (1) json_pointer& operator/=(const json_pointer& ptr); // (2) json_pointer& operator/=(string_t token); // (3) json_pointer& operator/=(std::size_t array_idx) ``` 1. append another JSON pointer at the end of this JSON pointer 2. append an unescaped reference token at the end of this JSON pointer 3. append an array index at the end of this JSON pointer ## Parameters `ptr` (in) : JSON pointer to append `token` (in) : reference token to append `array_idx` (in) : array index to append ## Return value 1. JSON pointer with `ptr` appended 2. JSON pointer with `token` appended without escaping `token` 3. JSON pointer with `array_idx` appended ## Complexity 1. Linear in the length of `ptr`. 2. Amortized constant. 3. Amortized constant. ## Examples ??? example The example shows the usage of `operator/=`. ```cpp --8<-- "examples/json_pointer__operator_add.cpp" ``` Output: ```json --8<-- "examples/json_pointer__operator_add.output" ``` ## Version history 1. Added in version 3.6.0. 2. Added in version 3.6.0. Changed type of `token` to `string_t` in version 3.11.0. 3. Added in version 3.6.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/operator_string_t.md000066400000000000000000000015531453145653700253010ustar00rootroot00000000000000# nlohmann::json_pointer::operator string_t ```cpp operator string_t() const ``` Return a string representation of the JSON pointer. ## Return value A string representation of the JSON pointer ## Possible implementation ```cpp operator string_t() const { return to_string(); } ``` ## Notes !!! warning "Deprecation" This function is deprecated in favor of [`to_string`](to_string.md) and will be removed in a future major version release. ## Examples ??? example The example shows how JSON Pointers can be implicitly converted to strings. ```cpp --8<-- "examples/json_pointer__operator_string_t.cpp" ``` Output: ```json --8<-- "examples/json_pointer__operator_string_t.output" ``` ## Version history - Since version 2.0.0. - Changed type to `string_t` and deprecated in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/parent_pointer.md000066400000000000000000000012161453145653700245620ustar00rootroot00000000000000# nlohmann::json_pointer::parent_pointer ```cpp json_pointer parent_pointer() const; ``` Returns the parent of this JSON pointer. ## Return value Parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned. ## Complexity Linear in the length of the JSON pointer. ## Examples ??? example The example shows the result of `parent_pointer` for different JSON Pointers. ```cpp --8<-- "examples/json_pointer__parent_pointer.cpp" ``` Output: ```json --8<-- "examples/json_pointer__parent_pointer.output" ``` ## Version history Added in version 3.6.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/pop_back.md000066400000000000000000000010461453145653700233100ustar00rootroot00000000000000# nlohmann::json_pointer::pop_back ```cpp void pop_back(); ``` Remove last reference token. ## Exceptions Throws [out_of_range.405](../../home/exceptions.md#jsonexceptionout_of_range405) if JSON pointer has no parent. ## Complexity Constant. ## Examples ??? example The example shows the usage of `pop_back`. ```cpp --8<-- "examples/json_pointer__pop_back.cpp" ``` Output: ```json --8<-- "examples/json_pointer__pop_back.output" ``` ## Version history Added in version 3.6.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/push_back.md000066400000000000000000000012271453145653700234720ustar00rootroot00000000000000# nlohmann::json_pointer::push_back ```cpp void push_back(const string_t& token); void push_back(string_t&& token); ``` Append an unescaped token at the end of the reference pointer. ## Parameters `token` (in) : token to add ## Complexity Amortized constant. ## Examples ??? example The example shows the result of `push_back` for different JSON Pointers. ```cpp --8<-- "examples/json_pointer__push_back.cpp" ``` Output: ```json --8<-- "examples/json_pointer__push_back.output" ``` ## Version history - Added in version 3.6.0. - Changed type of `token` to `string_t` in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/string_t.md000066400000000000000000000011001453145653700233520ustar00rootroot00000000000000# nlohmann::json_pointer::string_t ```cpp using string_t = RefStringType; ``` The string type used for the reference tokens making up the JSON pointer. See [`basic_json::string_t`](../basic_json/string_t.md) for more information. ## Examples ??? example The example shows the type `string_t` and its relation to `basic_json::string_t`. ```cpp --8<-- "examples/json_pointer__string_t.cpp" ``` Output: ```json --8<-- "examples/json_pointer__string_t.output" ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_pointer/to_string.md000066400000000000000000000012131453145653700235360ustar00rootroot00000000000000# nlohmann::json_pointer::to_string ```cpp string_t to_string() const; ``` Return a string representation of the JSON pointer. ## Return value A string representation of the JSON pointer ## Notes For each JSON pointer `ptr`, it holds: ```cpp ptr == json_pointer(ptr.to_string()); ``` ## Examples ??? example The example shows the result of `to_string`. ```cpp --8<-- "examples/json_pointer__to_string.cpp" ``` Output: ```json --8<-- "examples/json_pointer__to_string.output" ``` ## Version history - Since version 2.0.0. - Changed return type to `string_t` in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/000077500000000000000000000000001453145653700203225ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/json_sax/binary.md000066400000000000000000000010551453145653700221310ustar00rootroot00000000000000# nlohmann::json_sax::binary ```cpp virtual bool binary(binary_t& val) = 0; ``` A binary value was read. ## Parameters `val` (in) : binary value ## Return value Whether parsing should proceed. ## Notes It is safe to move the passed binary value. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse__binary.cpp" ``` Output: ```json --8<-- "examples/sax_parse__binary.output" ``` ## Version history - Added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/boolean.md000066400000000000000000000007451453145653700222710ustar00rootroot00000000000000# nlohmann::json_sax::boolean ```cpp virtual bool boolean(bool val) = 0; ``` A boolean value was read. ## Parameters `val` (in) : boolean value ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/end_array.md000066400000000000000000000006701453145653700226130ustar00rootroot00000000000000# nlohmann::json_sax::end_array ```cpp virtual bool end_array() = 0; ``` The end of an array was read. ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/end_object.md000066400000000000000000000006731453145653700227460ustar00rootroot00000000000000# nlohmann::json_sax::end_object ```cpp virtual bool end_object() = 0; ``` The end of an object was read. ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/index.md000066400000000000000000000040411453145653700217520ustar00rootroot00000000000000# nlohmann::json_sax ```cpp template struct json_sax; ``` This class describes the SAX interface used by [sax_parse](../basic_json/sax_parse.md). Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input. ## Template parameters `BasicJsonType` : a specialization of [`basic_json`](../basic_json/index.md) ## Member types - [**number_integer_t**](../basic_json/number_integer_t.md) - `BasicJsonType`'s type for numbers (integer) - [**number_unsigned_t**](../basic_json/number_unsigned_t.md) - `BasicJsonType`'s type for numbers (unsigned) - [**number_float_t**](../basic_json/number_float_t.md) - `BasicJsonType`'s type for numbers (floating-point) - [**string_t**](../basic_json/string_t.md) - `BasicJsonType`'s type for strings - [**binary_t**](../basic_json/binary_t.md) - `BasicJsonType`'s type for binary arrays ## Member functions - [**binary**](binary.md) (_virtual_) - a binary value was read - [**boolean**](boolean.md) (_virtual_) - a boolean value was read - [**end_array**](end_array.md) (_virtual_) - the end of an array was read - [**end_object**](end_object.md) (_virtual_) - the end of an object was read - [**key**](key.md) (_virtual_) - an object key was read - [**null**](null.md) (_virtual_) - a null value was read - [**number_float**](number_float.md) (_virtual_) - a floating-point number was read - [**number_integer**](number_integer.md) (_virtual_) - an integer number was read - [**number_unsigned**](number_unsigned.md) (_virtual_) - an unsigned integer number was read - [**parse_error**](parse_error.md) (_virtual_) - a parse error occurred - [**start_array**](start_array.md) (_virtual_) - the beginning of an array was read - [**start_object**](start_object.md) (_virtual_) - the beginning of an object was read - [**string**](string.md) (_virtual_) - a string value was read ## Version history - Added in version 3.2.0. - Support for binary values (`binary_t`, `binary`) added in version 3.8.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/key.md000066400000000000000000000010301453145653700214260ustar00rootroot00000000000000# nlohmann::json_sax::key ```cpp virtual bool key(string_t& val) = 0; ``` An object key was read. ## Parameters `val` (in) : object key ## Return value Whether parsing should proceed. ## Notes It is safe to move the passed object key value. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/null.md000066400000000000000000000006471453145653700216250ustar00rootroot00000000000000# nlohmann::json_sax::null ```cpp virtual bool null() = 0; ``` A null value was read. ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/number_float.md000066400000000000000000000011251453145653700233200ustar00rootroot00000000000000# nlohmann::json_sax::number_float ```cpp virtual bool number_float(number_float_t val, const string_t& s) = 0; ``` A floating-point number was read. ## Parameters `val` (in) : floating-point value `s` (in) : string representation of the original input ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/number_integer.md000066400000000000000000000010011453145653700236410ustar00rootroot00000000000000# nlohmann::json_sax::number_integer ```cpp virtual bool number_integer(number_integer_t val) = 0; ``` An integer number was read. ## Parameters `val` (in) : integer value ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/number_unsigned.md000066400000000000000000000010261453145653700240270ustar00rootroot00000000000000# nlohmann::json_sax::number_unsigned ```cpp virtual bool number_unsigned(number_unsigned_t val) = 0; ``` An unsigned integer number was read. ## Parameters `val` (in) : unsigned integer value ## Return value Whether parsing should proceed. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/parse_error.md000066400000000000000000000014201453145653700231640ustar00rootroot00000000000000# nlohmann::json_sax::parse_error ```cpp virtual bool parse_error(std::size_t position, const std::string& last_token, const detail::exception& ex) = 0; ``` A parse error occurred. ## Parameters `position` (in) : the position in the input where the error occurs `last_token` (in) : the last read token `ex` (in) : an exception object describing the error ## Return value Whether parsing should proceed (**must return `#!cpp false`**). ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/start_array.md000066400000000000000000000011521453145653700231760ustar00rootroot00000000000000# nlohmann::json_sax::start_array ```cpp virtual bool start_array(std::size_t elements) = 0; ``` The beginning of an array was read. ## Parameters `elements` (in) : number of object elements or `#!cpp -1` if unknown ## Return value Whether parsing should proceed. ## Notes Binary formats may report the number of elements. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/start_object.md000066400000000000000000000011551453145653700233310ustar00rootroot00000000000000# nlohmann::json_sax::start_object ```cpp virtual bool start_object(std::size_t elements) = 0; ``` The beginning of an object was read. ## Parameters `elements` (in) : number of object elements or `#!cpp -1` if unknown ## Return value Whether parsing should proceed. ## Notes Binary formats may report the number of elements. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/json_sax/string.md000066400000000000000000000010351453145653700221510ustar00rootroot00000000000000# nlohmann::json_sax::string ```cpp virtual bool string(string_t& val) = 0; ``` A string value was read. ## Parameters `val` (in) : string value ## Return value Whether parsing should proceed. ## Notes It is safe to move the passed string value. ## Examples ??? example The example below shows how the SAX interface is used. ```cpp --8<-- "examples/sax_parse.cpp" ``` Output: ```json --8<-- "examples/sax_parse.output" ``` ## Version history - Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/macros/000077500000000000000000000000001453145653700177625ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/api/macros/index.md000066400000000000000000000065341453145653700214230ustar00rootroot00000000000000# Macros Some aspects of the library can be configured by defining preprocessor macros **before** including the `json.hpp` header. See also the [macro overview page](../../features/macros.md). ## Runtime assertions - [**JSON_ASSERT(x)**](json_assert.md) - control behavior of runtime assertions ## Exceptions - [**JSON_CATCH_USER(exception)**
**JSON_THROW_USER(exception)**
**JSON_TRY_USER**](json_throw_user.md) - control exceptions - [**JSON_DIAGNOSTICS**](json_diagnostics.md) - control extended diagnostics - [**JSON_NOEXCEPTION**](json_noexception.md) - switch off exceptions ## Language support - [**JSON_HAS_CPP_11**
**JSON_HAS_CPP_14**
**JSON_HAS_CPP_17**
**JSON_HAS_CPP_20**](json_has_cpp_11.md) - set supported C++ standard - [**JSON_HAS_FILESYSTEM**
**JSON_HAS_EXPERIMENTAL_FILESYSTEM**](json_has_filesystem.md) - control `std::filesystem` support - [**JSON_HAS_RANGES**](json_has_ranges.md) - control `std::ranges` support - [**JSON_HAS_THREE_WAY_COMPARISON**](json_has_three_way_comparison.md) - control 3-way comparison support - [**JSON_NO_IO**](json_no_io.md) - switch off functions relying on certain C++ I/O headers - [**JSON_SKIP_UNSUPPORTED_COMPILER_CHECK**](json_skip_unsupported_compiler_check.md) - do not warn about unsupported compilers - [**JSON_USE_GLOBAL_UDLS**](json_use_global_udls.md) - place user-defined string literals (UDLs) into the global namespace ## Library version - [**JSON_SKIP_LIBRARY_VERSION_CHECK**](json_skip_library_version_check.md) - skip library version check - [**NLOHMANN_JSON_VERSION_MAJOR**
**NLOHMANN_JSON_VERSION_MINOR**
**NLOHMANN_JSON_VERSION_PATCH**](nlohmann_json_version_major.md) \- library version information ## Library namespace - [**NLOHMANN_JSON_NAMESPACE**](nlohmann_json_namespace.md) - full name of the `nlohmann` namespace - [**NLOHMANN_JSON_NAMESPACE_BEGIN**
**NLOHMANN_JSON_NAMESPACE_END**](nlohmann_json_namespace_begin.md) - open and close the library namespace - [**NLOHMANN_JSON_NAMESPACE_NO_VERSION**](nlohmann_json_namespace_no_version.md) - disable the version component of the inline namespace ## Type conversions - [**JSON_DISABLE_ENUM_SERIALIZATION**](json_disable_enum_serialization.md) - switch off default serialization/deserialization functions for enums - [**JSON_USE_IMPLICIT_CONVERSIONS**](json_use_implicit_conversions.md) - control implicit conversions ## Comparison behavior - [**JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON**](json_use_legacy_discarded_value_comparison.md) - control comparison of discarded values ## Serialization/deserialization macros - [**NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)**
**NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...)**
**NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...)**][DefInt] \- serialization/deserialization of types _with_ access to private variables - [**NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)**
**NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...)**
**NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...)**][DefNonInt] \- serialization/deserialization of types _without_ access to private variables - [**NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)**](nlohmann_json_serialize_enum.md) - serialization/deserialization of enum types [DefInt]: nlohmann_define_type_intrusive.md [DefNonInt]: nlohmann_define_type_non_intrusive.md json-3.11.3/docs/mkdocs/docs/api/macros/json_assert.md000066400000000000000000000037231453145653700226430ustar00rootroot00000000000000# JSON_ASSERT ```cpp #define JSON_ASSERT(x) /* value */ ``` This macro controls which code is executed for [runtime assertions](../../features/assertions.md) of the library. ## Parameters `x` (in) : expression of scalar type ## Default definition The default value is [`#!cpp assert(x)`](https://en.cppreference.com/w/cpp/error/assert). ```cpp #define JSON_ASSERT(x) assert(x) ``` Therefore, assertions can be switched off by defining `NDEBUG`. ## Notes - The library uses numerous assertions to guarantee invariants and to abort in case of otherwise undefined behavior (e.g., when calling [operator[]](../basic_json/operator%5B%5D.md) with a missing object key on a `const` object). See page [runtime assertions](../../features/assertions.md) for more information. - Defining the macro to code that does not call `std::abort` may leave the library in an undefined state. - The macro is undefined outside the library. ## Examples ??? example "Example 1: default behavior" The following code will trigger an assertion at runtime: ```cpp #include using json = nlohmann::json; int main() { const json j = {{"key", "value"}}; auto v = j["missing"]; } ``` Output: ``` Assertion failed: (m_value.object->find(key) != m_value.object->end()), function operator[], file json.hpp, line 2144. ``` ??? example "Example 2: user-defined behavior" The assertion reporting can be changed by defining `JSON_ASSERT(x)` differently. ```cpp #include #include #define JSON_ASSERT(x) if(!(x)){fprintf(stderr, "assertion error in %s\n", __FUNCTION__); std::abort();} #include using json = nlohmann::json; int main() { const json j = {{"key", "value"}}; auto v = j["missing"]; } ``` Output: ``` assertion error in operator[] ``` ## Version history - Added in version 3.9.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_diagnostics.md000066400000000000000000000043711453145653700236510ustar00rootroot00000000000000# JSON_DIAGNOSTICS ```cpp #define JSON_DIAGNOSTICS /* value */ ``` This macro enables [extended diagnostics for exception messages](../../home/exceptions.md#extended-diagnostic-messages). Possible values are `1` to enable or `0` to disable (default). When enabled, exception messages contain a [JSON Pointer](../json_pointer/json_pointer.md) to the JSON value that triggered the exception. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead. ## Default definition The default value is `0` (extended diagnostics are switched off). ```cpp #define JSON_DIAGNOSTICS 0 ``` When the macro is not defined, the library will define it to its default value. ## Notes !!! note "ABI compatibility" As of version 3.11.0, this macro is no longer required to be defined consistently throughout a codebase to avoid One Definition Rule (ODR) violations, as the value of this macro is encoded in the namespace, resulting in distinct symbol names. This allows different parts of a codebase to use different versions or configurations of this library without causing improper behavior. Where possible, it is still recommended that all code define this the same way for maximum interoperability. !!! hint "CMake option" Diagnostic messages can also be controlled with the CMake option [`JSON_Diagnostics`](../../integration/cmake.md#json_diagnostics) (`OFF` by default) which defines `JSON_DIAGNOSTICS` accordingly. ## Examples ??? example "Example 1: default behavior" ```cpp --8<-- "examples/diagnostics_standard.cpp" ``` Output: ``` --8<-- "examples/diagnostics_standard.output" ``` This exception can be hard to debug if storing the value `#!c "12"` and accessing it is further apart. ??? example "Example 2: extended diagnostic messages" ```cpp --8<-- "examples/diagnostics_extended.cpp" ``` Output: ``` --8<-- "examples/diagnostics_extended.output" ``` Now the exception message contains a JSON Pointer `/address/housenumber` that indicates which value has the wrong type. ## Version history - Added in version 3.10.0. - As of version 3.11.0 the definition is allowed to vary between translation units. json-3.11.3/docs/mkdocs/docs/api/macros/json_disable_enum_serialization.md000066400000000000000000000075541453145653700267340ustar00rootroot00000000000000# JSON_DISABLE_ENUM_SERIALIZATION ```cpp #define JSON_DISABLE_ENUM_SERIALIZATION /* value */ ``` When defined to `1`, default serialization and deserialization functions for enums are excluded and have to be provided by the user, for example, using [`NLOHMANN_JSON_SERIALIZE_ENUM`](nlohmann_json_serialize_enum.md) (see [arbitrary type conversions](../../features/arbitrary_types.md) for more details). Parsing or serializing an enum will result in a compiler error. This works for both unscoped and scoped enums. ## Default definition The default value is `0`. ```cpp #define JSON_DISABLE_ENUM_SERIALIZATION 0 ``` ## Notes !!! hint "CMake option" Enum serialization can also be controlled with the CMake option [`JSON_DisableEnumSerialization`](../../integration/cmake.md#json_disableenumserialization) (`OFF` by default) which defines `JSON_DISABLE_ENUM_SERIALIZATION` accordingly. ## Examples ??? example "Example 1: Disabled behavior" The code below forces the library **not** to create default serialization/deserialization functions `from_json` and `to_json`, meaning the code below **does not** compile. ```cpp #define JSON_DISABLE_ENUM_SERIALIZATION 1 #include using json = nlohmann::json; enum class Choice { first, second, }; int main() { // normally invokes to_json serialization function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not const json j = Choice::first; // normally invokes from_json parse function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not Choice ch = j.template get(); } ``` ??? example "Example 2: Serialize enum macro" The code below forces the library **not** to create default serialization/deserialization functions `from_json` and `to_json`, but uses [`NLOHMANN_JSON_SERIALIZE_ENUM`](nlohmann_json_serialize_enum.md) to parse and serialize the enum. ```cpp #define JSON_DISABLE_ENUM_SERIALIZATION 1 #include using json = nlohmann::json; enum class Choice { first, second, }; NLOHMANN_JSON_SERIALIZE_ENUM(Choice, { { Choice::first, "first" }, { Choice::second, "second" }, }) int main() { // uses user-defined to_json function defined by macro const json j = Choice::first; // uses user-defined from_json function defined by macro Choice ch = j.template get(); } ``` ??? example "Example 3: User-defined serialization/deserialization functions" The code below forces the library **not** to create default serialization/deserialization functions `from_json` and `to_json`, but uses user-defined functions to parse and serialize the enum. ```cpp #define JSON_DISABLE_ENUM_SERIALIZATION 1 #include using json = nlohmann::json; enum class Choice { first, second, }; void from_json(const json& j, Choice& ch) { auto value = j.template get(); if (value == "first") { ch = Choice::first; } else if (value == "second") { ch = Choice::second; } } void to_json(json& j, const Choice& ch) { auto value = j.template get(); if (value == "first") { ch = Choice::first; } else if (value == "second") { ch = Choice::second; } } int main() { // uses user-defined to_json function const json j = Choice::first; // uses user-defined from_json function Choice ch = j.template get(); } ``` ## See also - [`NLOHMANN_JSON_SERIALIZE_ENUM`](nlohmann_json_serialize_enum.md) ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_has_cpp_11.md000066400000000000000000000021711453145653700232540ustar00rootroot00000000000000# JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 ```cpp #define JSON_HAS_CPP_11 #define JSON_HAS_CPP_14 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_20 ``` The library targets C++11, but also supports some features introduced in later C++ versions (e.g., `std::string_view` support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly. ## Default definition The default value is detected based on preprocessor macros such as `#!cpp __cplusplus`, `#!cpp _HAS_CXX17`, or `#!cpp _MSVC_LANG`. ## Notes - `#!cpp JSON_HAS_CPP_11` is always defined. - All macros are undefined outside the library. ## Examples ??? example The code below forces the library to use the C++14 standard: ```cpp #define JSON_HAS_CPP_14 1 #include ... ``` ## Version history - Added in version 3.10.5. json-3.11.3/docs/mkdocs/docs/api/macros/json_has_filesystem.md000066400000000000000000000027521453145653700243620ustar00rootroot00000000000000# JSON_HAS_FILESYSTEM / JSON_HAS_EXPERIMENTAL_FILESYSTEM ```cpp #define JSON_HAS_FILESYSTEM /* value */ #define JSON_HAS_EXPERIMENTAL_FILESYSTEM /* value */ ``` When compiling with C++17, the library provides conversions from and to [`std::filesystem::path`](https://en.cppreference.com/w/cpp/filesystem/path). As compiler support for filesystem is limited, the library tries to detect whether [``/`std::filesystem`](https://en.cppreference.com/w/cpp/header/filesystem) (`JSON_HAS_FILESYSTEM`) or [``/`std::experimental::filesystem`](https://en.cppreference.com/w/cpp/header/experimental/filesystem) (`JSON_HAS_EXPERIMENTAL_FILESYSTEM`) should be used. To override the built-in check, define `JSON_HAS_FILESYSTEM` or `JSON_HAS_EXPERIMENTAL_FILESYSTEM` to `1`. ## Default definition The default value is detected based on the preprocessor macros `#!cpp __cpp_lib_filesystem`, `#!cpp __cpp_lib_experimental_filesystem`, `#!cpp __has_include()`, or `#!cpp __has_include()`. ## Notes - Note that older compilers or older versions of libstd++ also require the library `stdc++fs` to be linked to for filesystem support. - Both macros are undefined outside the library. ## Examples ??? example The code below forces the library to use the header ``. ```cpp #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #include ... ``` ## Version history - Added in version 3.10.5. json-3.11.3/docs/mkdocs/docs/api/macros/json_has_ranges.md000066400000000000000000000012331453145653700234460ustar00rootroot00000000000000# JSON_HAS_RANGES ```cpp #define JSON_HAS_RANGES /* value */ ``` This macro indicates whether the standard library has any support for ranges. Implies support for concepts. Possible values are `1` when supported or `0` when unsupported. ## Default definition The default value is detected based on the preprocessor macro `#!cpp __cpp_lib_ranges`. When the macro is not defined, the library will define it to its default value. ## Examples ??? example The code below forces the library to enable support for ranges: ```cpp #define JSON_HAS_RANGES 1 #include ... ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_has_static_rtti.md000066400000000000000000000012751453145653700245260ustar00rootroot00000000000000# JSON_HAS_STATIC_RTTI ```cpp #define JSON_HAS_STATIC_RTTI /* value */ ``` This macro indicates whether the standard library has any support for RTTI (run time type information). Possible values are `1` when supported or `0` when unsupported. ## Default definition The default value is detected based on the preprocessor macro `#!cpp _HAS_STATIC_RTTI`. When the macro is not defined, the library will define it to its default value. ## Examples ??? example The code below forces the library to enable support for libraries with RTTI dependence: ```cpp #define JSON_HAS_STATIC_RTTI 1 #include ... ``` ## Version history - Added in version ?. json-3.11.3/docs/mkdocs/docs/api/macros/json_has_three_way_comparison.md000066400000000000000000000013501453145653700264100ustar00rootroot00000000000000# JSON_HAS_THREE_WAY_COMPARISON ```cpp #define JSON_HAS_THREE_WAY_COMPARISON /* value */ ``` This macro indicates whether the compiler and standard library support 3-way comparison. Possible values are `1` when supported or `0` when unsupported. ## Default definition The default value is detected based on the preprocessor macros `#!cpp __cpp_impl_three_way_comparison` and `#!cpp __cpp_lib_three_way_comparison`. When the macro is not defined, the library will define it to its default value. ## Examples ??? example The code below forces the library to use 3-way comparison: ```cpp #define JSON_HAS_THREE_WAY_COMPARISON 1 #include ... ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_no_io.md000066400000000000000000000013431453145653700224410ustar00rootroot00000000000000# JSON_NO_IO ```cpp #define JSON_NO_IO ``` When defined, headers ``, ``, ``, ``, and `` are not included and parse functions relying on these headers are excluded. This is relevant for environments where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)). ## Default definition By default, `#!cpp JSON_NO_IO` is not defined. ```cpp #undef JSON_NO_IO ``` ## Examples ??? example The code below forces the library not to use the headers ``, ``, ``, ``, and ``. ```cpp #define JSON_NO_IO 1 #include ... ``` ## Version history - Added in version 3.10.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_noexception.md000066400000000000000000000020751453145653700236740ustar00rootroot00000000000000# JSON_NOEXCEPTION ```cpp #define JSON_NOEXCEPTION ``` Exceptions can be switched off by defining the symbol `JSON_NOEXCEPTION`. When defining `JSON_NOEXCEPTION`, `#!cpp try` is replaced by `#!cpp if (true)`, `#!cpp catch` is replaced by `#!cpp if (false)`, and `#!cpp throw` is replaced by `#!cpp std::abort()`. The same effect is achieved by setting the compiler flag `-fno-exceptions`. ## Default definition By default, the macro is not defined. ```cpp #undef JSON_NOEXCEPTION ``` ## Notes The explanatory [`what()`](https://en.cppreference.com/w/cpp/error/exception/what) string of exceptions is not available for MSVC if exceptions are disabled, see [#2824](https://github.com/nlohmann/json/discussions/2824). ## Examples ??? example The code below switches off exceptions in the library. ```cpp #define JSON_NOEXCEPTION 1 #include ... ``` ## See also - [Switch off exceptions](../../home/exceptions.md#switch-off-exceptions) for more information how to switch off exceptions ## Version history Added in version 2.1.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_skip_library_version_check.md000066400000000000000000000013531453145653700267330ustar00rootroot00000000000000# JSON_SKIP_LIBRARY_VERSION_CHECK ```cpp #define JSON_SKIP_LIBRARY_VERSION_CHECK ``` When defined, the library will not create a compiler warning when a different version of the library was already included. ## Default definition By default, the macro is not defined. ```cpp #undef JSON_SKIP_LIBRARY_VERSION_CHECK ``` ## Notes !!! danger "ABI compatibility" Mixing different library versions in the same code can be a problem as the different versions may not be ABI compatible. ## Examples !!! example The following warning will be shown in case a different version of the library was already included: ``` Already included a different version of the library! ``` ## Version history Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_skip_unsupported_compiler_check.md000066400000000000000000000013141453145653700300010ustar00rootroot00000000000000# JSON_SKIP_UNSUPPORTED_COMPILER_CHECK ```cpp #define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK ``` When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to use the library with compilers that do not fully support C++11 and may only work if unsupported features are not used. ## Default definition By default, the macro is not defined. ```cpp #undef JSON_SKIP_UNSUPPORTED_COMPILER_CHECK ``` ## Examples ??? example The code below switches off the check whether the compiler is supported. ```cpp #define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK 1 #include ... ``` ## Version history Added in version 3.2.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_throw_user.md000066400000000000000000000050641453145653700235430ustar00rootroot00000000000000# JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER ```cpp // (1) #define JSON_CATCH_USER(exception) /* value */ // (2) #define JSON_THROW_USER(exception) /* value */ // (3) #define JSON_TRY_USER /* value */ ``` Controls how exceptions are handled by the library. 1. This macro overrides [`#!cpp catch`](https://en.cppreference.com/w/cpp/language/try_catch) calls inside the library. The argument is the type of the exception to catch. As of version 3.8.0, the library only catches `std::out_of_range` exceptions internally to rethrow them as [`json::out_of_range`](../../home/exceptions.md#out-of-range) exceptions. The macro is always followed by a scope. 2. This macro overrides `#!cpp throw` calls inside the library. The argument is the exception to be thrown. Note that `JSON_THROW_USER` should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior. 3. This macro overrides `#!cpp try` calls inside the library. It has no arguments and is always followed by a scope. ## Parameters `exception` (in) : an exception type ## Default definition By default, the macros map to their respective C++ keywords: ```cpp #define JSON_CATCH_USER(exception) catch(exception) #define JSON_THROW_USER(exception) throw exception #define JSON_TRY_USER try ``` When exceptions are switched off, the `#!cpp try` block is executed unconditionally, and throwing exceptions is replaced by calling [`std::abort`](https://en.cppreference.com/w/cpp/utility/program/abort) to make reaching the `#!cpp throw` branch abort the process. ```cpp #define JSON_THROW_USER(exception) std::abort() #define JSON_TRY_USER if (true) #define JSON_CATCH_USER(exception) if (false) ``` ## Examples ??? example The code below switches off exceptions and creates a log entry with a detailed error message in case of errors. ```cpp #include #define JSON_TRY_USER if(true) #define JSON_CATCH_USER(exception) if(false) #define JSON_THROW_USER(exception) \ {std::clog << "Error in " << __FILE__ << ":" << __LINE__ \ << " (function " << __FUNCTION__ << ") - " \ << (exception).what() << std::endl; \ std::abort();} #include ``` ## See also - [Switch off exceptions](../../home/exceptions.md#switch-off-exceptions) for more information how to switch off exceptions - [JSON_NOEXCEPTION](json_noexception.md) - switch off exceptions ## Version history - Added in version 3.1.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_use_global_udls.md000066400000000000000000000043121453145653700245000ustar00rootroot00000000000000# JSON_USE_GLOBAL_UDLS ```cpp #define JSON_USE_GLOBAL_UDLS /* value */ ``` When defined to `1`, the user-defined string literals (UDLs) are placed into the global namespace instead of `nlohmann::literals::json_literals`. ## Default definition The default value is `1`. ```cpp #define JSON_USE_GLOBAL_UDLS 1 ``` When the macro is not defined, the library will define it to its default value. ## Notes !!! info "Future behavior change" The user-defined string literals will be removed from the global namespace in the next major release of the library. To prepare existing code, define `JSON_USE_GLOBAL_UDLS` to `0` and bring the string literals into scope where needed. Refer to any of the [string literals](#see-also) for details. !!! hint "CMake option" The placement of user-defined string literals can also be controlled with the CMake option [`JSON_GlobalUDLs`](../../integration/cmake.md#json_globaludls) (`ON` by default) which defines `JSON_USE_GLOBAL_UDLS` accordingly. ## Examples ??? example "Example 1: Default behavior" The code below shows the default behavior using the `_json` UDL. ```cpp #include #include int main() { auto j = "42"_json; std::cout << j << std::endl; } ``` Output: ```json 42 ``` ??? example "Example 2: Namespaced UDLs" The code below shows how UDLs need to be brought into scope before using `_json` when `JSON_USE_GLOBAL_UDLS` is defined to `0`. ```cpp #define JSON_USE_GLOBAL_UDLS 0 #include #include int main() { // auto j = "42"_json; // This line would fail to compile, // because the UDLs are not in the global namespace // Bring the UDLs into scope using namespace nlohmann::json_literals; auto j = "42"_json; std::cout << j << std::endl; } ``` Output: ```json 42 ``` ## See also - [`operator""_json`](../operator_literal_json.md) - [`operator""_json_pointer`](../operator_literal_json_pointer.md) ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_use_implicit_conversions.md000066400000000000000000000031131453145653700264510ustar00rootroot00000000000000# JSON_USE_IMPLICIT_CONVERSIONS ```cpp #define JSON_USE_IMPLICIT_CONVERSIONS /* value */ ``` When defined to `0`, implicit conversions are switched off. By default, implicit conversions are switched on. The value directly affects [`operator ValueType`](../basic_json/operator_ValueType.md). ## Default definition By default, implicit conversions are enabled. ```cpp #define JSON_USE_IMPLICIT_CONVERSIONS 1 ``` ## Notes !!! info "Future behavior change" Implicit conversions will be switched off by default in the next major release of the library. You can prepare existing code by already defining `JSON_USE_IMPLICIT_CONVERSIONS` to `0` and replace any implicit conversions with calls to [`get`](../basic_json/get.md). !!! hint "CMake option" Implicit conversions can also be controlled with the CMake option [`JSON_ImplicitConversions`](../../integration/cmake.md#json_legacydiscardedvaluecomparison) (`ON` by default) which defines `JSON_USE_IMPLICIT_CONVERSIONS` accordingly. ## Examples ??? example This is an example for an implicit conversion: ```cpp json j = "Hello, world!"; std::string s = j; ``` When `JSON_USE_IMPLICIT_CONVERSIONS` is defined to `0`, the code above does no longer compile. Instead, it must be written like this: ```cpp json j = "Hello, world!"; auto s = j.template get(); ``` ## See also - [**operator ValueType**](../basic_json/operator_ValueType.md) - get a value (implicit) - [**get**](../basic_json/get.md) - get a value (explicit) ## Version history - Added in version 3.9.0. json-3.11.3/docs/mkdocs/docs/api/macros/json_use_legacy_discarded_value_comparison.md000066400000000000000000000047051453145653700311130ustar00rootroot00000000000000# JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON ```cpp #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON /* value */ ``` This macro enables the (incorrect) legacy comparison behavior of discarded JSON values. Possible values are `1` to enable or `0` to disable (default). When enabled, comparisons involving at least one discarded JSON value yield results as follows: | **Operator** | **Result** | |--------------|---------------| | `==` | `#!cpp false` | | `!=` | `#!cpp true` | | `<` | `#!cpp false` | | `<=` | `#!cpp true` | | `>=` | `#!cpp true` | | `>` | `#!cpp false` | Otherwise, comparisons involving at least one discarded JSON value always yield `#!cpp false`. ## Default definition The default value is `0`. ```cpp #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 ``` When the macro is not defined, the library will define it to its default value. ## Notes !!! warning "Inconsistent behavior in C++20 and beyond" When targeting C++20 or above, enabling the legacy comparison behavior is _strongly_ discouraged. - The 3-way comparison operator (`<=>`) will always give the correct result (`#!cpp std::partial_ordering::unordered`) regardless of the value of `JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON`. - Overloads for the equality and relational operators emulate the legacy behavior. Code outside your control may use either 3-way comparison or the equality and relational operators, resulting in inconsistent and unpredictable behavior. See [`operator<=>`](../basic_json/operator_spaceship.md) for more information on 3-way comparison. !!! warning "Deprecation" The legacy comparison behavior is deprecated and may be removed in a future major version release. New code should not depend on it and existing code should try to remove or rewrite expressions relying on it. !!! hint "CMake option" Legacy comparison can also be controlled with the CMake option [`JSON_LegacyDiscardedValueComparison`](../../integration/cmake.md#json_legacydiscardedvaluecomparison) (`OFF` by default) which defines `JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON` accordingly. ## Examples ??? example The code below switches on the legacy discarded value comparison behavior in the library. ```cpp #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1 #include ... ``` ## Version history - Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md000066400000000000000000000144371453145653700266120ustar00rootroot00000000000000# NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE ```cpp #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...) // (1) #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...) // (2) #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3) ``` These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined **inside** the class/struct to create code for. Unlike [`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`](nlohmann_define_type_non_intrusive.md), it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members. 1. Will use [`at`](../basic_json/at.md) during deserialization and will throw [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if a key is missing in the JSON object. 2. Will use [`value`](../basic_json/value.md) during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated `from_json()` function default constructs an object and uses its values as the defaults when calling the `value` function. 3. Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization in required. ## Parameters `type` (in) : name of the type (class, struct) to serialize/deserialize `member` (in) : name of the member variable to serialize/deserialize; up to 64 members can be given as comma-separated list ## Default definition The macros add two friend functions to the class which take care of the serialization and deserialization: ```cpp friend void to_json(nlohmann::json&, const type&); friend void from_json(const nlohmann::json&, type&); // except (3) ``` See examples below for the concrete generated code. ## Notes !!! info "Prerequisites" 1. The type `type` must be default constructible (except (3)). See [How can I use `get()` for non-default constructible/non-copyable types?][GetNonDefNonCopy] for how to overcome this limitation. 2. The macro must be used inside the type (class/struct). [GetNonDefNonCopy]: ../../features/arbitrary_types.md#how-can-i-use-get-for-non-default-constructiblenon-copyable-types !!! warning "Implementation limits" - The current implementation is limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the `to_json`/`from_json` functions manually. - The macros only work for the [`nlohmann::json`](../json.md) type; other specializations such as [`nlohmann::ordered_json`](../ordered_json.md) are currently unsupported. ## Examples ??? example "Example (1): NLOHMANN_DEFINE_TYPE_INTRUSIVE" Consider the following complete example: ```cpp hl_lines="22" --8<-- "examples/nlohmann_define_type_intrusive_macro.cpp" ``` Output: ```json --8<-- "examples/nlohmann_define_type_intrusive_macro.output" ``` Notes: - `ns::person` is default-constructible. This is a requirement for using the macro. - `ns::person` has private member variables. This makes `NLOHMANN_DEFINE_TYPE_INTRUSIVE` applicable, but not `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`. - The macro `NLOHMANN_DEFINE_TYPE_INTRUSIVE` is used _inside_ the class. - A missing key "age" in the deserialization yields an exception. To fall back to the default value, `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT` can be used. The macro is equivalent to: ```cpp hl_lines="22 23 24 25 26 27 28 29 30 31 32 33 34" --8<-- "examples/nlohmann_define_type_intrusive_explicit.cpp" ``` ??? example "Example (2): NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT" Consider the following complete example: ```cpp hl_lines="22" --8<-- "examples/nlohmann_define_type_intrusive_with_default_macro.cpp" ``` Output: ```json --8<-- "examples/nlohmann_define_type_intrusive_with_default_macro.output" ``` Notes: - `ns::person` is default-constructible. This is a requirement for using the macro. - `ns::person` has private member variables. This makes `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT` applicable, but not `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT`. - The macro `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT` is used _inside_ the class. - A missing key "age" in the deserialization does not yield an exception. Instead, the default value `-1` is used. The macro is equivalent to: ```cpp hl_lines="22 23 24 25 26 27 28 29 30 31 32 33 34 35" --8<-- "examples/nlohmann_define_type_intrusive_with_default_explicit.cpp" ``` Note how a default-initialized `person` object is used in the `from_json` to fill missing values. ??? example "Example (3): NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE" Consider the following complete example: ```cpp hl_lines="22" --8<-- "examples/nlohmann_define_type_intrusive_only_serialize_macro.cpp" ``` Output: ```json --8<-- "examples/nlohmann_define_type_intrusive_only_serialize_macro.output" ``` Notes: - `ns::person` is non-default-constructible. This allows this macro to be used instead of `NLOHMANN_DEFINE_TYPE_INTRUSIVE` and `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT`. - `ns::person` has private member variables. This makes `NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE` applicable, but not `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE`. - The macro `NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE` is used _inside_ the class. The macro is equivalent to: ```cpp hl_lines="22 22 23 24 25 26 27" --8<-- "examples/nlohmann_define_type_intrusive_only_serialize_explicit.cpp" ``` ## See also - [NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE{_WITH_DEFAULT, _ONLY_SERIALIZE}](nlohmann_define_type_non_intrusive.md) for a similar macro that can be defined _outside_ the type. - [Arbitrary Type Conversions](../../features/arbitrary_types.md) for an overview. ## Version history 1. Added in version 3.9.0. 2. Added in version 3.11.0. 3. Added in version TODO. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md000066400000000000000000000146061453145653700274620ustar00rootroot00000000000000# NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE ```cpp #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...) // (1) #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...) // (2) #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...) // (3) ``` These macros can be used to simplify the serialization/deserialization of types if you want to use a JSON object as serialization and want to use the member variable names as object keys in that object. The macro is to be defined **outside** the class/struct to create code for, but **inside** its namespace. Unlike [`NLOHMANN_DEFINE_TYPE_INTRUSIVE`](nlohmann_define_type_intrusive.md), it **cannot** access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members. 1. Will use [`at`](../basic_json/at.md) during deserialization and will throw [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if a key is missing in the JSON object. 2. Will use [`value`](../basic_json/value.md) during deserialization and fall back to the default value for the respective type of the member variable if a key in the JSON object is missing. The generated `from_json()` function default constructs an object and uses its values as the defaults when calling the `value` function. 3. Only defines the serialization. Useful in cases when the type does not have a default constructor and only serialization in required. ## Parameters `type` (in) : name of the type (class, struct) to serialize/deserialize `member` (in) : name of the (public) member variable to serialize/deserialize; up to 64 members can be given as comma-separated list ## Default definition The macros add two functions to the namespace which take care of the serialization and deserialization: ```cpp void to_json(nlohmann::json&, const type&); void from_json(const nlohmann::json&, type&); // except (3) ``` See examples below for the concrete generated code. ## Notes !!! info "Prerequisites" 1. The type `type` must be default constructible (except (3). See [How can I use `get()` for non-default constructible/non-copyable types?][GetNonDefNonCopy] for how to overcome this limitation. 2. The macro must be used outside the type (class/struct). 3. The passed members must be public. [GetNonDefNonCopy]: ../../features/arbitrary_types.md#how-can-i-use-get-for-non-default-constructiblenon-copyable-types !!! warning "Implementation limits" - The current implementation is limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the `to_json`/`from_json` functions manually. - The macros only work for the [`nlohmann::json`](../json.md) type; other specializations such as [`nlohmann::ordered_json`](../ordered_json.md) are currently unsupported. ## Examples ??? example "Example (1): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE" Consider the following complete example: ```cpp hl_lines="16" --8<-- "examples/nlohmann_define_type_non_intrusive_macro.cpp" ``` Output: ```json --8<-- "examples/nlohmann_define_type_non_intrusive_macro.output" ``` Notes: - `ns::person` is default-constructible. This is a requirement for using the macro. - `ns::person` has only public member variables. This makes `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` applicable. - The macro `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` is used _outside_ the class, but _inside_ its namespace `ns`. - A missing key "age" in the deserialization yields an exception. To fall back to the default value, `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT` can be used. The macro is equivalent to: ```cpp hl_lines="16 17 18 19 20 21 22 23 24 25 26 27 28" --8<-- "examples/nlohmann_define_type_non_intrusive_explicit.cpp" ``` ??? example "Example (2): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT" Consider the following complete example: ```cpp hl_lines="22" --8<-- "examples/nlohmann_define_type_non_intrusive_with_default_macro.cpp" ``` Output: ```json --8<-- "examples/nlohmann_define_type_non_intrusive_with_default_macro.output" ``` Notes: - `ns::person` is default-constructible. This is a requirement for using the macro. - `ns::person` has only public member variables. This makes `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT` applicable. - The macro `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT` is used _outside_ the class, but _inside_ its namespace `ns`. - A missing key "age" in the deserialization does not yield an exception. Instead, the default value `-1` is used. The macro is equivalent to: ```cpp hl_lines="22 23 24 25 26 27 28 29 30 31 32 33 34 35" --8<-- "examples/nlohmann_define_type_non_intrusive_with_default_explicit.cpp" ``` Note how a default-initialized `person` object is used in the `from_json` to fill missing values. ??? example "Example (3): NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE" Consider the following complete example: ```cpp hl_lines="16" --8<-- "examples/nlohmann_define_type_non_intrusive_only_serialize_macro.cpp" ``` Output: ```json --8<-- "examples/nlohmann_define_type_non_intrusive_only_serialize_macro.output" ``` Notes: - `ns::person` is non-default-constructible. This allows this macro to be used instead of `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` and `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT`. - `ns::person` has only public member variables. This makes `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE` applicable. - The macro `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE` is used _outside_ the class, but _inside_ its namespace `ns`. The macro is equivalent to: ```cpp hl_lines="16 17 18 19 20 21" --8<-- "examples/nlohmann_define_type_non_intrusive_only_serialize_explicit.cpp" ``` ## See also - [NLOHMANN_DEFINE_TYPE_INTRUSIVE{_WITH_DEFAULT, _ONLY_SERIALIZE}](nlohmann_define_type_intrusive.md) for a similar macro that can be defined _inside_ the type. - [Arbitrary Type Conversions](../../features/arbitrary_types.md) for an overview. ## Version history 1. Added in version 3.9.0. 2. Added in version 3.11.0. 3. Added in version TODO. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_json_namespace.md000066400000000000000000000021331453145653700251620ustar00rootroot00000000000000# NLOHMANN_JSON_NAMESPACE ```cpp #define NLOHMANN_JSON_NAMESPACE /* value */ ``` This macro evaluates to the full name of the `nlohmann` namespace. ## Default definition The default value consists of the root namespace (`nlohmann`) and an inline ABI namespace. See [`nlohmann` Namespace](../../features/namespace.md#structure) for details. When the macro is not defined, the library will define it to its default value. Overriding this value has no effect on the library. ## Examples ??? example The example shows how to use `NLOHMANN_JSON_NAMESPACE` instead of just `nlohmann`, as well as how to output the value of `NLOHMANN_JSON_NAMESPACE`. ```cpp --8<-- "examples/nlohmann_json_namespace.cpp" ``` Output: ```json --8<-- "examples/nlohmann_json_namespace.output" ``` ## See also - [`NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END`](nlohmann_json_namespace_begin.md) - [`NLOHMANN_JSON_NAMESPACE_NO_VERSION`](nlohmann_json_namespace_no_version.md) ## Version history - Added in version 3.11.0. Changed inline namespace name in version 3.11.2. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_json_namespace_begin.md000066400000000000000000000033041453145653700263270ustar00rootroot00000000000000# NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END ```cpp #define NLOHMANN_JSON_NAMESPACE_BEGIN /* value */ // (1) #define NLOHMANN_JSON_NAMESPACE_END /* value */ // (2) ``` These macros can be used to open and close the `nlohmann` namespace. See [`nlohmann` Namespace](../../features/namespace.md#structure) for details. 1. Opens the namespace. 2. Closes the namespace. ## Default definition The default definitions open and close the `nlohmann` namespace. The precise definition of [`NLOHMANN_JSON_NAMESPACE_BEGIN`] varies as described [here](../../features/namespace.md#structure). 1. Default definition of `NLOHMANN_JSON_NAMESPACE_BEGIN`: ```cpp namespace nlohmann { inline namespace json_abi_v3_11_2 { ``` 2. Default definition of `NLOHMANN_JSON_NAMESPACE_END`: ```cpp } // namespace json_abi_v3_11_2 } // namespace nlohmann ``` When these macros are not defined, the library will define them to their default definitions. ## Examples ??? example The example shows how to use `NLOHMANN_JSON_NAMESPACE_BEGIN`/`NLOHMANN_JSON_NAMESPACE_END` from the [How do I convert third-party types?](../../features/arbitrary_types.md#how-do-i-convert-third-party-types) page. ```cpp --8<-- "examples/nlohmann_json_namespace_begin.c++17.cpp" ``` Output: ```json --8<-- "examples/nlohmann_json_namespace_begin.c++17.output" ``` ## See also - [`nlohmann` Namespace](../../features/namespace.md) - [NLOHMANN_JSON_NAMESPACE](nlohmann_json_namespace.md) - [`NLOHMANN_JSON_NAMESPACE_NO_VERSION`](nlohmann_json_namespace_no_version.md) ## Version history - Added in version 3.11.0. Changed inline namespace name in version 3.11.2. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_json_namespace_no_version.md000066400000000000000000000020621453145653700274240ustar00rootroot00000000000000# NLOHMANN_JSON_NAMESPACE_NO_VERSION ```cpp #define NLOHMANN_JSON_NAMESPACE_NO_VERSION /* value */ ``` If defined to `1`, the version component is omitted from the inline namespace. See [`nlohmann` Namespace](../../features/namespace.md#structure) for details. ## Default definition The default value is `0`. ```cpp #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 ``` When the macro is not defined, the library will define it to its default value. ## Examples ??? example The example shows how to use `NLOHMANN_JSON_NAMESPACE_NO_VERSION` to disable the version component of the inline namespace. ```cpp --8<-- "examples/nlohmann_json_namespace_no_version.cpp" ``` Output: ```json --8<-- "examples/nlohmann_json_namespace_no_version.output" ``` ## See also - [`nlohmann` Namespace](../../features/namespace.md) - [`NLOHMANN_JSON_NAMESPACE`](nlohmann_json_namespace.md) - [`NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END`](nlohmann_json_namespace_begin.md) ## Version history - Added in version 3.11.2. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_json_serialize_enum.md000066400000000000000000000052521453145653700262460ustar00rootroot00000000000000# NLOHMANN_JSON_SERIALIZE_ENUM ```cpp #define NLOHMANN_JSON_SERIALIZE_ENUM(type, conversion...) ``` By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended. The `NLOHMANN_JSON_SERIALIZE_ENUM` allows to define a user-defined serialization for every enumerator. ## Parameters `type` (in) : name of the enum to serialize/deserialize `conversion` (in) : a pair of an enumerator and a JSON serialization; arbitrary pairs can be given as a comma-separated list ## Default definition The macros add two friend functions to the class which take care of the serialization and deserialization: ```cpp template inline void to_json(BasicJsonType& j, const type& e); template inline void from_json(const BasicJsonType& j, type& e); ``` ## Notes !!! info "Prerequisites" The macro must be used inside the namespace of the enum. !!! important "Important notes" - When using [`template get()`](../basic_json/get.md), undefined JSON values will default to the first specified conversion. Select this default pair carefully. See example 1 below. - If an enum or JSON value is specified in multiple conversions, the first matching conversion from the top of the list will be returned when converting to or from JSON. See example 2 below. ## Examples ??? example "Example 1: Basic usage" The example shows how `NLOHMANN_JSON_SERIALIZE_ENUM` can be used to serialize/deserialize both classical enums and C++11 enum classes: ```cpp hl_lines="16 17 18 19 20 21 22 29 30 31 32 33" --8<-- "examples/nlohmann_json_serialize_enum.cpp" ``` Output: ```json --8<-- "examples/nlohmann_json_serialize_enum.output" ``` ??? example "Example 2: Multiple conversions for one enumerator" The example shows how to use multiple conversions for a single enumerator. In the example, `Color::red` will always be *serialized* to `"red"`, because the first occurring conversion. The second conversion, however, offers an alternative *deserialization* from `"rot"` to `Color::red`. ```cpp hl_lines="17" --8<-- "examples/nlohmann_json_serialize_enum_2.cpp" ``` Output: ```json --8<-- "examples/nlohmann_json_serialize_enum_2.output" ``` ## See also - [Specializing enum conversion](../../features/enum_conversion.md) - [`JSON_DISABLE_ENUM_SERIALIZATION`](json_disable_enum_serialization.md) ## Version history Added in version 3.4.0. json-3.11.3/docs/mkdocs/docs/api/macros/nlohmann_json_version_major.md000066400000000000000000000020601453145653700261020ustar00rootroot00000000000000# NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH ```cpp #define NLOHMANN_JSON_VERSION_MAJOR /* value */ #define NLOHMANN_JSON_VERSION_MINOR /* value */ #define NLOHMANN_JSON_VERSION_PATCH /* value */ ``` These macros are defined by the library and contain the version numbers according to [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html). ## Default definition The macros are defined according to the current library version. ## Examples ??? example The example below shows how `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, and `NLOHMANN_JSON_VERSION_PATCH` are defined by the library. ```cpp --8<-- "examples/nlohmann_json_version.cpp" ``` Output: ```json --8<-- "examples/nlohmann_json_version.output" ``` ## See also - [meta](../basic_json/meta.md) - returns version information on the library - [JSON_SKIP_LIBRARY_VERSION_CHECK](json_skip_library_version_check.md) - skip library version check ## Version history - Added in version 3.1.0. json-3.11.3/docs/mkdocs/docs/api/operator_gtgt.md000066400000000000000000000031631453145653700217030ustar00rootroot00000000000000# nlohmann::operator>>(basic_json) ```cpp std::istream& operator>>(std::istream& i, basic_json& j); ``` Deserializes an input stream to a JSON value. ## Parameters `i` (in, out) : input stream to read a serialized JSON value from `j` (in, out) : JSON value to write the deserialized input to ## Return value the stream `i` ## Exceptions - Throws [`parse_error.101`](../home/exceptions.md#jsonexceptionparse_error101) in case of an unexpected token. - Throws [`parse_error.102`](../home/exceptions.md#jsonexceptionparse_error102) if to_unicode fails or surrogate error. - Throws [`parse_error.103`](../home/exceptions.md#jsonexceptionparse_error103) if to_unicode fails. ## Complexity Linear in the length of the input. The parser is a predictive LL(1) parser. ## Notes A UTF-8 byte order mark is silently ignored. !!! warning "Deprecation" This function replaces function `#!cpp std::istream& operator<<(basic_json& j, std::istream& i)` which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like `#!cpp j << i;` with `#!cpp i >> j;`. ## Examples ??? example The example below shows how a JSON value is constructed by reading a serialization from a stream. ```cpp --8<-- "examples/operator_deserialize.cpp" ``` Output: ```json --8<-- "examples/operator_deserialize.output" ``` ## See also - [accept](basic_json/accept.md) - check if the input is valid JSON - [parse](basic_json/parse.md) - deserialize from a compatible input ## Version history - Added in version 1.0.0. Deprecated in version 3.0.0. json-3.11.3/docs/mkdocs/docs/api/operator_literal_json.md000066400000000000000000000026471453145653700234310ustar00rootroot00000000000000# nlohmann::operator""_json ```cpp json operator ""_json(const char* s, std::size_t n); ``` This operator implements a user-defined string literal for JSON objects. It can be used by adding `#!cpp _json` to a string literal and returns a [`json`](json.md) object if no parse error occurred. It is recommended to bring the operator into scope using any of the following lines: ```cpp using nlohmann::literals::operator ""_json; using namespace nlohmann::literals; using namespace nlohmann::json_literals; using namespace nlohmann::literals::json_literals; using namespace nlohmann; ``` This is suggested to ease migration to the next major version release of the library. See ['JSON_USE_GLOBAL_UDLS`](macros/json_use_global_udls.md#notes) for details. ## Parameters `s` (in) : a string representation of a JSON object `n` (in) : length of string `s` ## Return value [`json`](json.md) value parsed from `s` ## Exceptions The function can throw anything that [`parse(s, s+n)`](basic_json/parse.md) would throw. ## Complexity Linear. ## Examples ??? example The following code shows how to create JSON values from string literals. ```cpp --8<-- "examples/operator_literal_json.cpp" ``` Output: ```json --8<-- "examples/operator_literal_json.output" ``` ## Version history - Added in version 1.0.0. - Moved to namespace `nlohmann::literals::json_literals` in 3.11.0. json-3.11.3/docs/mkdocs/docs/api/operator_literal_json_pointer.md000066400000000000000000000031651453145653700251650ustar00rootroot00000000000000# nlohmann::operator""_json_pointer ```cpp json_pointer operator ""_json_pointer(const char* s, std::size_t n); ``` This operator implements a user-defined string literal for JSON Pointers. It can be used by adding `#!cpp _json_pointer` to a string literal and returns a [`json_pointer`](json_pointer/index.md) object if no parse error occurred. It is recommended to bring the operator into scope using any of the following lines: ```cpp using nlohmann::literals::operator ""_json_pointer; using namespace nlohmann::literals; using namespace nlohmann::json_literals; using namespace nlohmann::literals::json_literals; using namespace nlohmann; ``` This is suggested to ease migration to the next major version release of the library. See ['JSON_USE_GLOBAL_UDLS`](macros/json_use_global_udls.md#notes) for details. ## Parameters `s` (in) : a string representation of a JSON Pointer `n` (in) : length of string `s` ## Return value [`json_pointer`](json_pointer/index.md) value parsed from `s` ## Exceptions The function can throw anything that [`json_pointer::json_pointer`](json_pointer/index.md) would throw. ## Complexity Linear. ## Examples ??? example The following code shows how to create JSON Pointers from string literals. ```cpp --8<-- "examples/operator_literal_json_pointer.cpp" ``` Output: ```json --8<-- "examples/operator_literal_json_pointer.output" ``` ## See also - [json_pointer](json_pointer/index.md) - type to represent JSON Pointers ## Version history - Added in version 2.0.0. - Moved to namespace `nlohmann::literals::json_literals` in 3.11.0. json-3.11.3/docs/mkdocs/docs/api/operator_ltlt.md000066400000000000000000000054641453145653700217230ustar00rootroot00000000000000# nlohmann::operator<<(basic_json), nlohmann::operator<<(json_pointer) ```cpp std::ostream& operator<<(std::ostream& o, const basic_json& j); // (1) std::ostream& operator<<(std::ostream& o, const json_pointer& ptr); // (2) ``` 1. Serialize the given JSON value `j` to the output stream `o`. The JSON value will be serialized using the [`dump`](basic_json/dump.md) member function. - The indentation of the output can be controlled with the member variable `width` of the output stream `o`. For instance, using the manipulator `std::setw(4)` on `o` sets the indentation level to `4` and the serialization result is the same as calling `dump(4)`. - The indentation character can be controlled with the member variable `fill` of the output stream `o`. For instance, the manipulator `std::setfill('\\t')` sets indentation to use a tab character rather than the default space character. 2. Write a string representation of the given JSON pointer `ptr` to the output stream `o`. The string representation is obtained using the [`to_string`](json_pointer/to_string.md) member function. ## Parameters `o` (in, out) : stream to write to `j` (in) : JSON value to serialize `ptr` (in) : JSON pointer to write ## Return value the stream `o` ## Exceptions 1. Throws [`type_error.316`](../home/exceptions.md#jsonexceptiontype_error316) if a string stored inside the JSON value is not UTF-8 encoded. Note that unlike the [`dump`](basic_json/dump.md) member functions, no `error_handler` can be set. 2. None. ## Complexity Linear. ## Notes !!! warning "Deprecation" Function `#!cpp std::ostream& operator<<(std::ostream& o, const basic_json& j)` replaces function `#!cpp std::ostream& operator>>(const basic_json& j, std::ostream& o)` which has been deprecated in version 3.0.0. It will be removed in version 4.0.0. Please replace calls like `#!cpp j >> o;` with `#!cpp o << j;`. ## Examples ??? example "Example: (1) serialize JSON value to stream" The example below shows the serialization with different parameters to `width` to adjust the indentation level. ```cpp --8<-- "examples/operator_ltlt__basic_json.cpp" ``` Output: ```json --8<-- "examples/operator_ltlt__basic_json.output" ``` ??? example "Example: (2) write JSON pointer to stream" The example below shows how to write a JSON pointer to a stream. ```cpp --8<-- "examples/operator_ltlt__json_pointer.cpp" ``` Output: ```json --8<-- "examples/operator_ltlt__json_pointer.output" ``` ## Version history 1. Added in version 1.0.0. Added support for indentation character and deprecated `#!cpp std::ostream& operator>>(const basic_json& j, std::ostream& o)` in version 3.0.0. 3. Added in version 3.11.0. json-3.11.3/docs/mkdocs/docs/api/ordered_json.md000066400000000000000000000010571453145653700215000ustar00rootroot00000000000000# nlohmann::ordered_json ```cpp using ordered_json = basic_json; ``` This type preserves the insertion order of object keys. ## Examples ??? example The example below demonstrates how `ordered_json` preserves the insertion order of object keys. ```cpp --8<-- "examples/ordered_json.cpp" ``` Output: ```json --8<-- "examples/ordered_json.output" ``` ## See also - [ordered_map](ordered_map.md) - [Object Order](../features/object_order.md) ## Version history Since version 3.9.0. json-3.11.3/docs/mkdocs/docs/api/ordered_map.md000066400000000000000000000031071453145653700213020ustar00rootroot00000000000000# nlohmann::ordered_map ```cpp template, class Allocator = std::allocator>> struct ordered_map : std::vector, Allocator>; ``` A minimal map-like container that preserves insertion order for use within [`nlohmann::ordered_json`](ordered_json.md) (`nlohmann::basic_json`). ## Template parameters `Key` : key type `T` : mapped type `IgnoredLess` : comparison function (ignored and only added to ensure compatibility with `#!cpp std::map`) `Allocator` : allocator type ## Member types - **key_type** - key type (`Key`) - **mapped_type** - mapped type (`T`) - **Container** - base container type (`#!cpp std::vector, Allocator>`) - **iterator** - **const_iterator** - **size_type** - **value_type** - **key_compare** - key comparison function ```cpp std::equal_to // until C++14 std::equal_to<> // since C++14 ``` ## Member functions - (constructor) - (destructor) - **emplace** - **operator\[\]** - **at** - **erase** - **count** - **find** - **insert** ## Examples ??? example The example shows the different behavior of `std::map` and `nlohmann::ordered_map`. ```cpp --8<-- "examples/ordered_map.cpp" ``` Output: ```json --8<-- "examples/ordered_map.output" ``` ## See also - [ordered_json](ordered_json.md) ## Version history - Added in version 3.9.0 to implement [`nlohmann::ordered_json`](ordered_json.md). - Added **key_compare** member in version 3.11.0. json-3.11.3/docs/mkdocs/docs/css/000077500000000000000000000000001453145653700165155ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/css/custom.css000066400000000000000000000001501453145653700205350ustar00rootroot00000000000000/* disable ligatures in code and preformatted blocks */ code, pre { font-variant-ligatures: none; } json-3.11.3/docs/mkdocs/docs/features/000077500000000000000000000000001453145653700175435ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/features/arbitrary_types.md000066400000000000000000000262401453145653700233140ustar00rootroot00000000000000# Arbitrary Type Conversions Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines: ```cpp namespace ns { // a simple struct to model a person struct person { std::string name; std::string address; int age; }; } // namespace ns ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; // convert to JSON: copy each value into the JSON object json j; j["name"] = p.name; j["address"] = p.address; j["age"] = p.age; // ... // convert from JSON: copy each value from the JSON object ns::person p { j["name"].template get(), j["address"].template get(), j["age"].template get() }; ``` It works, but that's quite a lot of boilerplate... Fortunately, there's a better way: ```cpp // create a person ns::person p {"Ned Flanders", "744 Evergreen Terrace", 60}; // conversion: person -> json json j = p; std::cout << j << std::endl; // {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} // conversion: json -> person auto p2 = j.template get(); // that's it assert(p == p2); ``` ## Basic usage To make this work with one of your types, you only need to provide two functions: ```cpp using json = nlohmann::json; namespace ns { void to_json(json& j, const person& p) { j = json{ {"name", p.name}, {"address", p.address}, {"age", p.age} }; } void from_json(const json& j, person& p) { j.at("name").get_to(p.name); j.at("address").get_to(p.address); j.at("age").get_to(p.age); } } // namespace ns ``` That's all! When calling the `json` constructor with your type, your custom `to_json` method will be automatically called. Likewise, when calling `template get()` or `get_to(your_type&)`, the `from_json` method will be called. Some important things: * Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). * Those methods **MUST** be available (e.g., proper headers must be included) everywhere you use these conversions. Look at [issue 1108](https://github.com/nlohmann/json/issues/1108) for errors that may occur otherwise. * When using `template get()`, `your_type` **MUST** be [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). (There is a way to bypass this requirement described later.) * In function `from_json`, use function [`at()`](../api/basic_json/at.md) to access the object values rather than `operator[]`. In case a key does not exist, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior. * You do not need to add serializers or deserializers for STL types like `std::vector`: the library already implements these. ## Simplify your life with macros If you just want to serialize/deserialize some structs, the `to_json`/`from_json` functions can be a lot of boilerplate. There are four macros to make your life easier as long as you (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object: - [`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(name, member1, member2, ...)`](../api/macros/nlohmann_define_type_non_intrusive.md) is to be defined inside the namespace of the class/struct to create code for. It will throw an exception in `from_json()` due to a missing value in the JSON object. - [`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(name, member1, member2, ...)`](../api/macros/nlohmann_define_type_non_intrusive.md) is to be defined inside the namespace of the class/struct to create code for. It will not throw an exception in `from_json()` due to a missing value in the JSON object, but fills in values from object which is default-constructed by the type. - [`NLOHMANN_DEFINE_TYPE_INTRUSIVE(name, member1, member2, ...)`](../api/macros/nlohmann_define_type_intrusive.md) is to be defined inside the class/struct to create code for. This macro can also access private members. It will throw an exception in `from_json()` due to a missing value in the JSON object. - [`NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(name, member1, member2, ...)`](../api/macros/nlohmann_define_type_intrusive.md) is to be defined inside the class/struct to create code for. This macro can also access private members. It will not throw an exception in `from_json()` due to a missing value in the JSON object, but fills in values from object which is default-constructed by the type. In all macros, the first parameter is the name of the class/struct, and all remaining parameters name the members. You can read more docs about them starting from [here](macros.md#nlohmann_define_type_intrusivetype-member). !!! info "Implementation limits" - The current macro implementations are limited to at most 64 member variables. If you want to serialize/deserialize types with more than 64 member variables, you need to define the `to_json`/`from_json` functions manually. - The macros only work for the [`nlohmann::json`](../api/json.md) type; other specializations such as [`nlohmann::ordered_json`](../api/ordered_json.md) are currently unsupported. ??? example The `to_json`/`from_json` functions for the `person` struct above can be created with: ```cpp namespace ns { NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age) } ``` Here is an example with private members, where `NLOHMANN_DEFINE_TYPE_INTRUSIVE` is needed: ```cpp namespace ns { class address { private: std::string street; int housenumber; int postcode; public: NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode) }; } ``` ## How do I convert third-party types? This requires a bit more advanced technique. But first, let's see how this conversion mechanism works: The library uses **JSON Serializers** to convert types to json. The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)). It is implemented like this (simplified): ```cpp template struct adl_serializer { static void to_json(json& j, const T& value) { // calls the "to_json" method in T's namespace } static void from_json(const json& j, T& value) { // same thing, but with the "from_json" method } }; ``` This serializer works fine when you have control over the type's namespace. However, what about `boost::optional` or `std::filesystem::path` (C++17)? Hijacking the `boost` namespace is pretty bad, and it's illegal to add something other than template specializations to `std`... To solve this, you need to add a specialization of `adl_serializer` to the `nlohmann` namespace, here's an example: ```cpp // partial specialization (full specialization works too) NLOHMANN_JSON_NAMESPACE_BEGIN template struct adl_serializer> { static void to_json(json& j, const boost::optional& opt) { if (opt == boost::none) { j = nullptr; } else { j = *opt; // this will call adl_serializer::to_json which will // find the free function to_json in T's namespace! } } static void from_json(const json& j, boost::optional& opt) { if (j.is_null()) { opt = boost::none; } else { opt = j.template get(); // same as above, but with // adl_serializer::from_json } } }; NLOHMANN_JSON_NAMESPACE_END ``` !!! note "ABI compatibility" Use [`NLOHMANN_JSON_NAMESPACE_BEGIN`](../api/macros/nlohmann_json_namespace_begin.md) and `NLOHMANN_JSON_NAMESPACE_END` instead of `#!cpp namespace nlohmann { }` in code which may be linked with different versions of this library. ## How can I use `get()` for non-default constructible/non-copyable types? There is a way, if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: ```cpp struct move_only_type { move_only_type() = delete; move_only_type(int ii): i(ii) {} move_only_type(const move_only_type&) = delete; move_only_type(move_only_type&&) = default; int i; }; namespace nlohmann { template <> struct adl_serializer { // note: the return type is no longer 'void', and the method only takes // one argument static move_only_type from_json(const json& j) { return {j.template get()}; } // Here's the catch! You must provide a to_json method! Otherwise, you // will not be able to convert move_only_type to json, since you fully // specialized adl_serializer on that type static void to_json(json& j, move_only_type t) { j = t.i; } }; } ``` ## Can I write my own serializer? (Advanced use) Yes. You might want to take a look at [`unit-udt.cpp`](https://github.com/nlohmann/json/blob/develop/tests/src/unit-udt.cpp) in the test suite, to see a few examples. If you write your own serializer, you'll need to do a few things: - use a different `basic_json` alias than `nlohmann::json` (the last template parameter of `basic_json` is the `JSONSerializer`) - use your `basic_json` alias (or a template parameter) in all your `to_json`/`from_json` methods - use `nlohmann::to_json` and `nlohmann::from_json` when you need ADL Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL. ```cpp // You should use void as a second template argument // if you don't need compile-time checks on T template::type> struct less_than_32_serializer { template static void to_json(BasicJsonType& j, T value) { // we want to use ADL, and call the correct to_json overload using nlohmann::to_json; // this method is called by adl_serializer, // this is where the magic happens to_json(j, value); } template static void from_json(const BasicJsonType& j, T& value) { // same thing here using nlohmann::from_json; from_json(j, value); } }; ``` Be **very** careful when reimplementing your serializer, you can stack overflow if you don't pay attention: ```cpp template struct bad_serializer { template static void to_json(BasicJsonType& j, const T& value) { // this calls BasicJsonType::json_serializer::to_json(j, value); // if BasicJsonType::json_serializer == bad_serializer ... oops! j = value; } template static void to_json(const BasicJsonType& j, T& value) { // this calls BasicJsonType::json_serializer::from_json(j, value); // if BasicJsonType::json_serializer == bad_serializer ... oops! value = j.template template get(); // oops! } }; ``` json-3.11.3/docs/mkdocs/docs/features/assertions.md000066400000000000000000000072661453145653700222720ustar00rootroot00000000000000# Runtime Assertions The code contains numerous debug assertions to ensure class invariants are valid or to detect undefined behavior. Whereas the former class invariants are nothing to be concerned of, the latter checks for undefined behavior are to detect bugs in client code. ## Switch off runtime assertions Runtime assertions can be switched off by defining the preprocessor macro `NDEBUG` (see the [documentation of assert](https://en.cppreference.com/w/cpp/error/assert)) which is the default for release builds. ## Change assertion behavior The behavior of runtime assertions can be changes by defining macro [`JSON_ASSERT(x)`](../api/macros/json_assert.md) before including the `json.hpp` header. ## Function with runtime assertions ### Unchecked object access to a const value Function [`operator[]`](../api/basic_json/operator%5B%5D.md) implements unchecked access for objects. Whereas a missing key is added in case of non-const objects, accessing a const object with a missing key is undefined behavior (think of a dereferenced null pointer) and yields a runtime assertion. If you are not sure whether an element in an object exists, use checked access with the [`at` function](../api/basic_json/at.md) or call the [`contains` function](../api/basic_json/contains.md) before. See also the documentation on [element access](element_access/index.md). ??? example "Example 1: Missing object key" The following code will trigger an assertion at runtime: ```cpp #include using json = nlohmann::json; int main() { const json j = {{"key", "value"}}; auto v = j["missing"]; } ``` Output: ``` Assertion failed: (m_value.object->find(key) != m_value.object->end()), function operator[], file json.hpp, line 2144. ``` ### Constructing from an uninitialized iterator range Constructing a JSON value from an iterator range (see [constructor](../api/basic_json/basic_json.md)) with an uninitialized iterator is undefined behavior and yields a runtime assertion. ??? example "Example 2: Uninitialized iterator range" The following code will trigger an assertion at runtime: ```cpp #include using json = nlohmann::json; int main() { json::iterator it1, it2; json j(it1, it2); } ``` Output: ``` Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368. ``` ### Operations on uninitialized iterators Any operation on uninitialized iterators (i.e., iterators that are not associated with any JSON value) is undefined behavior and yields a runtime assertion. ??? example "Example 3: Uninitialized iterator" The following code will trigger an assertion at runtime: ```cpp #include using json = nlohmann::json; int main() { json::iterator it; ++it; } ``` Output: ``` Assertion failed: (m_object != nullptr), function operator++, file iter_impl.hpp, line 368. ``` ### Reading from a null `FILE` pointer Reading from a null `#!cpp FILE` pointer is undefined behavior and yields a runtime assertion. This can happen when calling `#!cpp std::fopen` on a nonexistent file. ??? example "Example 4: Uninitialized iterator" The following code will trigger an assertion at runtime: ```cpp #include using json = nlohmann::json; int main() { std::FILE* f = std::fopen("nonexistent_file.json", "r"); json j = json::parse(f); } ``` Output: ``` Assertion failed: (m_file != nullptr), function file_input_adapter, file input_adapters.hpp, line 55. ``` json-3.11.3/docs/mkdocs/docs/features/binary_formats/000077500000000000000000000000001453145653700225625ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/features/binary_formats/bjdata.md000066400000000000000000000240741453145653700243400ustar00rootroot00000000000000# BJData The [BJData format](https://neurojson.org) was derived from and improved upon [Universal Binary JSON(UBJSON)](https://ubjson.org) specification (Draft 12). Specifically, it introduces an optimized array container for efficient storage of N-dimensional packed arrays (**ND-arrays**); it also adds 4 new type markers - `[u] - uint16`, `[m] - uint32`, `[M] - uint64` and `[h] - float16` - to unambiguously map common binary numeric types; furthermore, it uses little-endian (LE) to store all numerics instead of big-endian (BE) as in UBJSON to avoid unnecessary conversions on commonly available platforms. Compared to other binary JSON-like formats such as MessagePack and CBOR, both BJData and UBJSON demonstrate a rare combination of being both binary and **quasi-human-readable**. This is because all semantic elements in BJData and UBJSON, including the data-type markers and name/string types are directly human-readable. Data stored in the BJData/UBJSON format are not only compact in size, fast to read/write, but also can be directly searched or read using simple processing. !!! abstract "References" - [BJData Specification](https://neurojson.org/bjdata/draft2) ## Serialization The library uses the following mapping from JSON values types to BJData types according to the BJData specification: | JSON value type | value/range | BJData type | marker | |-----------------|-------------------------------------------|----------------|--------| | null | `null` | null | `Z` | | boolean | `true` | true | `T` | | boolean | `false` | false | `F` | | number_integer | -9223372036854775808..-2147483649 | int64 | `L` | | number_integer | -2147483648..-32769 | int32 | `l` | | number_integer | -32768..-129 | int16 | `I` | | number_integer | -128..127 | int8 | `i` | | number_integer | 128..255 | uint8 | `U` | | number_integer | 256..32767 | int16 | `I` | | number_integer | 32768..65535 | uint16 | `u` | | number_integer | 65536..2147483647 | int32 | `l` | | number_integer | 2147483648..4294967295 | uint32 | `m` | | number_integer | 4294967296..9223372036854775807 | int64 | `L` | | number_integer | 9223372036854775808..18446744073709551615 | uint64 | `M` | | number_unsigned | 0..127 | int8 | `i` | | number_unsigned | 128..255 | uint8 | `U` | | number_unsigned | 256..32767 | int16 | `I` | | number_unsigned | 32768..65535 | uint16 | `u` | | number_unsigned | 65536..2147483647 | int32 | `l` | | number_unsigned | 2147483648..4294967295 | uint32 | `m` | | number_unsigned | 4294967296..9223372036854775807 | int64 | `L` | | number_unsigned | 9223372036854775808..18446744073709551615 | uint64 | `M` | | number_float | *any value* | float64 | `D` | | string | *with shortest length indicator* | string | `S` | | array | *see notes on optimized format/ND-array* | array | `[` | | object | *see notes on optimized format* | map | `{` | !!! success "Complete mapping" The mapping is **complete** in the sense that any JSON value type can be converted to a BJData value. Any BJData output created by `to_bjdata` can be successfully parsed by `from_bjdata`. !!! warning "Size constraints" The following values can **not** be converted to a BJData value: - strings with more than 18446744073709551615 bytes, i.e., $2^{64}-1$ bytes (theoretical) !!! info "Unused BJData markers" The following markers are not used in the conversion: - `Z`: no-op values are not created. - `C`: single-byte strings are serialized with `S` markers. !!! info "NaN/infinity handling" If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the `dump()` function which serializes NaN or Infinity to `#!json null`. !!! info "Endianness" A breaking difference between BJData and UBJSON is the endianness of numerical values. In BJData, all numerical data types (integers `UiuImlML` and floating-point values `hdD`) are stored in the little-endian (LE) byte order as opposed to big-endian as used by UBJSON. Adopting LE to store numeric records avoids unnecessary byte swapping on most modern computers where LE is used as the default byte order. !!! info "Optimized formats" Optimized formats for containers are supported via two parameters of [`to_bjdata`](../../api/basic_json/to_bjdata.md): - Parameter `use_size` adds size information to the beginning of a container and removes the closing marker. - Parameter `use_type` further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The `use_type` parameter must only be used together with `use_size = true`. Note that `use_size = true` alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed of the number of elements in the container. !!! info "ND-array optimized format" BJData extends UBJSON's optimized array **size** marker to support ND-arrays of uniform numerical data types (referred to as *packed arrays*). For example, the 2-D `uint8` integer array `[[1,2],[3,4],[5,6]]`, stored as nested optimized array in UBJSON `[ [$U#i2 1 2 [$U#i2 3 4 [$U#i2 5 6 ]`, can be further compressed in BJData to `[$U#[$i#i2 2 3 1 2 3 4 5 6` or `[$U#[i2 i3] 1 2 3 4 5 6`. To maintain type and size information, ND-arrays are converted to JSON objects following the **annotated array format** (defined in the [JData specification (Draft 3)][JDataAAFmt]), when parsed using [`from_bjdata`](../../api/basic_json/from_bjdata.md). For example, the above 2-D `uint8` array can be parsed and accessed as ```json { "_ArrayType_": "uint8", "_ArraySize_": [2,3], "_ArrayData_": [1,2,3,4,5,6] } ``` Likewise, when a JSON object in the above form is serialzed using [`to_bjdata`](../../api/basic_json/to_bjdata.md), it is automatically converted into a compact BJData ND-array. The only exception is, that when the 1-dimensional vector stored in `"_ArraySize_"` contains a single integer or two integers with one being 1, a regular 1-D optimized array is generated. The current version of this library does not yet support automatic detection of and conversion from a nested JSON array input to a BJData ND-array. [JDataAAFmt]: https://github.com/NeuroJSON/jdata/blob/master/JData_specification.md#annotated-storage-of-n-d-arrays) !!! info "Restrictions in optimized data types for arrays and objects" Due to diminished space saving, hampered readability, and increased security risks, in BJData, the allowed data types following the `$` marker in an optimized array and object container are restricted to **non-zero-fixed-length** data types. Therefore, the valid optimized type markers can only be one of `UiuImlMLhdDC`. This also means other variable (`[{SH`) or zero-length types (`TFN`) can not be used in an optimized array or object in BJData. !!! info "Binary values" If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the BJData documentation. In particular, this means that the serialization and the deserialization of JSON containing binary values into BJData and back will result in a different JSON object. ??? example ```cpp --8<-- "examples/to_bjdata.cpp" ``` Output: ```c --8<-- "examples/to_bjdata.output" ``` ## Deserialization The library maps BJData types to JSON value types as follows: | BJData type | JSON value type | marker | |-------------|-----------------------------------------|--------| | no-op | *no value, next value is read* | `N` | | null | `null` | `Z` | | false | `false` | `F` | | true | `true` | `T` | | float16 | number_float | `h` | | float32 | number_float | `d` | | float64 | number_float | `D` | | uint8 | number_unsigned | `U` | | int8 | number_integer | `i` | | uint16 | number_unsigned | `u` | | int16 | number_integer | `I` | | uint32 | number_unsigned | `m` | | int32 | number_integer | `l` | | uint64 | number_unsigned | `M` | | int64 | number_integer | `L` | | string | string | `S` | | char | string | `C` | | array | array (optimized values are supported) | `[` | | ND-array | object (in JData annotated array format)|`[$.#[.`| | object | object (optimized values are supported) | `{` | !!! success "Complete mapping" The mapping is **complete** in the sense that any BJData value can be converted to a JSON value. ??? example ```cpp --8<-- "examples/from_bjdata.cpp" ``` Output: ```json --8<-- "examples/from_bjdata.output" ``` json-3.11.3/docs/mkdocs/docs/features/binary_formats/bson.md000066400000000000000000000100371453145653700240460ustar00rootroot00000000000000# BSON BSON, short for Binary JSON, is a binary-encoded serialization of JSON-like documents. Like JSON, BSON supports the embedding of documents and arrays within other documents and arrays. BSON also contains extensions that allow representation of data types that are not part of the JSON spec. For example, BSON has a Date type and a BinData type. !!! abstract "References" - [BSON Website](http://bsonspec.org) - the main source on BSON - [BSON Specification](http://bsonspec.org/spec.html) - the specification ## Serialization The library uses the following mapping from JSON values types to BSON types: | JSON value type | value/range | BSON type | marker | |-----------------|-------------------------------------------|-----------|--------| | null | `null` | null | 0x0A | | boolean | `true`, `false` | boolean | 0x08 | | number_integer | -9223372036854775808..-2147483649 | int64 | 0x12 | | number_integer | -2147483648..2147483647 | int32 | 0x10 | | number_integer | 2147483648..9223372036854775807 | int64 | 0x12 | | number_unsigned | 0..2147483647 | int32 | 0x10 | | number_unsigned | 2147483648..9223372036854775807 | int64 | 0x12 | | number_unsigned | 9223372036854775808..18446744073709551615 | -- | -- | | number_float | *any value* | double | 0x01 | | string | *any value* | string | 0x02 | | array | *any value* | document | 0x04 | | object | *any value* | document | 0x03 | | binary | *any value* | binary | 0x05 | !!! warning "Incomplete mapping" The mapping is **incomplete**, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, integers larger than 9223372036854775807 cannot be serialized to BSON, and the keys may not contain U+0000, since they are serialized a zero-terminated c-strings. ??? example ```cpp --8<-- "examples/to_bson.cpp" ``` Output: ```c --8<-- "examples/to_bson.output" ``` ## Deserialization The library maps BSON record types to JSON value types as follows: | BSON type | BSON marker byte | JSON value type | |-----------------------|------------------|-----------------| | double | 0x01 | number_float | | string | 0x02 | string | | document | 0x03 | object | | array | 0x04 | array | | binary | 0x05 | binary | | undefined | 0x06 | *unsupported* | | ObjectId | 0x07 | *unsupported* | | boolean | 0x08 | boolean | | UTC Date-Time | 0x09 | *unsupported* | | null | 0x0A | null | | Regular Expr. | 0x0B | *unsupported* | | DB Pointer | 0x0C | *unsupported* | | JavaScript Code | 0x0D | *unsupported* | | Symbol | 0x0E | *unsupported* | | JavaScript Code | 0x0F | *unsupported* | | int32 | 0x10 | number_integer | | Timestamp | 0x11 | *unsupported* | | 128-bit decimal float | 0x13 | *unsupported* | | Max Key | 0x7F | *unsupported* | | Min Key | 0xFF | *unsupported* | !!! warning "Incomplete mapping" The mapping is **incomplete**. The unsupported mappings are indicated in the table above. ??? example ```cpp --8<-- "examples/from_bson.cpp" ``` Output: ```json --8<-- "examples/from_bson.output" ``` json-3.11.3/docs/mkdocs/docs/features/binary_formats/cbor.md000066400000000000000000000241251453145653700240350ustar00rootroot00000000000000# CBOR The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. !!! abstract "References" - [CBOR Website](http://cbor.io) - the main source on CBOR - [CBOR Playground](http://cbor.me) - an interactive webpage to translate between JSON and CBOR - [RFC 7049](https://tools.ietf.org/html/rfc7049) - the CBOR specification ## Serialization The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification ([RFC 7049](https://www.rfc-editor.org/rfc/rfc7049.html)): | JSON value type | value/range | CBOR type | first byte | |-----------------|--------------------------------------------|-----------------------------------|------------| | null | `null` | Null | 0xF6 | | boolean | `true` | True | 0xF5 | | boolean | `false` | False | 0xF4 | | number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B | | number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A | | number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 | | number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 | | number_integer | -24..-1 | Negative integer | 0x20..0x37 | | number_integer | 0..23 | Integer | 0x00..0x17 | | number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 | | number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 | | number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A | | number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B | | number_unsigned | 0..23 | Integer | 0x00..0x17 | | number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 | | number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 | | number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A | | number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B | | number_float | *any value representable by a float* | Single-Precision Float | 0xFA | | number_float | *any value NOT representable by a float* | Double-Precision Float | 0xFB | | string | *length*: 0..23 | UTF-8 string | 0x60..0x77 | | string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 | | string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 | | string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A | | string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B | | array | *size*: 0..23 | array | 0x80..0x97 | | array | *size*: 23..255 | array (1 byte follow) | 0x98 | | array | *size*: 256..65535 | array (2 bytes follow) | 0x99 | | array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A | | array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B | | object | *size*: 0..23 | map | 0xA0..0xB7 | | object | *size*: 23..255 | map (1 byte follow) | 0xB8 | | object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 | | object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA | | object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB | | binary | *size*: 0..23 | byte string | 0x40..0x57 | | binary | *size*: 23..255 | byte string (1 byte follow) | 0x58 | | binary | *size*: 256..65535 | byte string (2 bytes follow) | 0x59 | | binary | *size*: 65536..4294967295 | byte string (4 bytes follow) | 0x5A | | binary | *size*: 4294967296..18446744073709551615 | byte string (8 bytes follow) | 0x5B | Binary values with subtype are mapped to tagged values (0xD8..0xDB) depending on the subtype, followed by a byte string, see "binary" cells in the table above. !!! success "Complete mapping" The mapping is **complete** in the sense that any JSON value type can be converted to a CBOR value. !!! info "NaN/infinity handling" If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the normal JSON serialization which serializes NaN or Infinity to `null`. !!! info "Unused CBOR types" The following CBOR types are not used in the conversion: - UTF-8 strings terminated by "break" (0x7F) - arrays terminated by "break" (0x9F) - maps terminated by "break" (0xBF) - byte strings terminated by "break" (0x5F) - date/time (0xC0..0xC1) - bignum (0xC2..0xC3) - decimal fraction (0xC4) - bigfloat (0xC5) - expected conversions (0xD5..0xD7) - simple values (0xE0..0xF3, 0xF8) - undefined (0xF7) - half-precision floats (0xF9) - break (0xFF) !!! info "Tagged items" Binary subtypes will be serialized as tagged items. See [binary values](../binary_values.md#cbor) for an example. ??? example ```cpp --8<-- "examples/to_cbor.cpp" ``` Output: ```c --8<-- "examples/to_cbor.output" ``` ## Deserialization The library maps CBOR types to JSON value types as follows: | CBOR type | JSON value type | first byte | |------------------------|-----------------|------------| | Integer | number_unsigned | 0x00..0x17 | | Unsigned integer | number_unsigned | 0x18 | | Unsigned integer | number_unsigned | 0x19 | | Unsigned integer | number_unsigned | 0x1A | | Unsigned integer | number_unsigned | 0x1B | | Negative integer | number_integer | 0x20..0x37 | | Negative integer | number_integer | 0x38 | | Negative integer | number_integer | 0x39 | | Negative integer | number_integer | 0x3A | | Negative integer | number_integer | 0x3B | | Byte string | binary | 0x40..0x57 | | Byte string | binary | 0x58 | | Byte string | binary | 0x59 | | Byte string | binary | 0x5A | | Byte string | binary | 0x5B | | UTF-8 string | string | 0x60..0x77 | | UTF-8 string | string | 0x78 | | UTF-8 string | string | 0x79 | | UTF-8 string | string | 0x7A | | UTF-8 string | string | 0x7B | | UTF-8 string | string | 0x7F | | array | array | 0x80..0x97 | | array | array | 0x98 | | array | array | 0x99 | | array | array | 0x9A | | array | array | 0x9B | | array | array | 0x9F | | map | object | 0xA0..0xB7 | | map | object | 0xB8 | | map | object | 0xB9 | | map | object | 0xBA | | map | object | 0xBB | | map | object | 0xBF | | False | `false` | 0xF4 | | True | `true` | 0xF5 | | Null | `null` | 0xF6 | | Half-Precision Float | number_float | 0xF9 | | Single-Precision Float | number_float | 0xFA | | Double-Precision Float | number_float | 0xFB | !!! warning "Incomplete mapping" The mapping is **incomplete** in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors: - date/time (0xC0..0xC1) - bignum (0xC2..0xC3) - decimal fraction (0xC4) - bigfloat (0xC5) - expected conversions (0xD5..0xD7) - simple values (0xE0..0xF3, 0xF8) - undefined (0xF7) !!! warning "Object keys" CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected. !!! warning "Tagged items" Tagged items will throw a parse error by default. They can be ignored by passing `cbor_tag_handler_t::ignore` to function `from_cbor`. They can be stored by passing `cbor_tag_handler_t::store` to function `from_cbor`. ??? example ```cpp --8<-- "examples/from_cbor.cpp" ``` Output: ```json --8<-- "examples/from_cbor.output" ``` json-3.11.3/docs/mkdocs/docs/features/binary_formats/index.md000066400000000000000000000052551453145653700242220ustar00rootroot00000000000000# Binary Formats Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports - [BJData](bjdata.md) (Binary JData), - [BSON](bson.md) (Binary JSON), - [CBOR](cbor.md) (Concise Binary Object Representation), - [MessagePack](messagepack.md), and - [UBJSON](ubjson.md) (Universal Binary JSON) to efficiently encode JSON values to byte vectors and to decode such vectors. ## Comparison ### Completeness | Format | Serialization | Deserialization | |-------------|-----------------------------------------------|----------------------------------------------| | BJData | complete | complete | | BSON | incomplete: top-level value must be an object | incomplete, but all JSON types are supported | | CBOR | complete | incomplete, but all JSON types are supported | | MessagePack | complete | complete | | UBJSON | complete | complete | ### Binary values | Format | Binary values | Binary subtypes | |-------------|---------------|-----------------| | BJData | not supported | not supported | | BSON | supported | supported | | CBOR | supported | supported | | MessagePack | supported | supported | | UBJSON | not supported | not supported | See [binary values](../binary_values.md) for more information. ### Sizes | Format | canada.json | twitter.json | citm_catalog.json | jeopardy.json | |--------------------|-------------|--------------|-------------------|---------------| | BJData | 53.2 % | 91.1 % | 78.1 % | 96.6 % | | BJData (size) | 58.6 % | 92.1 % | 86.7 % | 97.4 % | | BJData (size+tyoe) | 58.6 % | 92.1 % | 86.5 % | 97.4 % | | BSON | 85.8 % | 95.2 % | 95.8 % | 106.7 % | | CBOR | 50.5 % | 86.3 % | 68.4 % | 88.0 % | | MessagePack | 50.5 % | 86.0 % | 68.5 % | 87.9 % | | UBJSON | 53.2 % | 91.3 % | 78.2 % | 96.6 % | | UBJSON (size) | 58.6 % | 92.3 % | 86.8 % | 97.4 % | | UBJSON (size+type) | 55.9 % | 92.3 % | 85.0 % | 95.0 % | Sizes compared to minified JSON value. json-3.11.3/docs/mkdocs/docs/features/binary_formats/messagepack.md000066400000000000000000000160321453145653700253710ustar00rootroot00000000000000# MessagePack MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. !!! abstract "References" - [MessagePack website](https://msgpack.org) - [MessagePack specification](https://github.com/msgpack/msgpack/blob/master/spec.md) ## Serialization The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification: | JSON value type | value/range | MessagePack type | first byte | |-----------------|------------------------------------------|------------------|------------| | null | `null` | nil | 0xC0 | | boolean | `true` | true | 0xC3 | | boolean | `false` | false | 0xC2 | | number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 | | number_integer | -2147483648..-32769 | int32 | 0xD2 | | number_integer | -32768..-129 | int16 | 0xD1 | | number_integer | -128..-33 | int8 | 0xD0 | | number_integer | -32..-1 | negative fixint | 0xE0..0xFF | | number_integer | 0..127 | positive fixint | 0x00..0x7F | | number_integer | 128..255 | uint 8 | 0xCC | | number_integer | 256..65535 | uint 16 | 0xCD | | number_integer | 65536..4294967295 | uint 32 | 0xCE | | number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF | | number_unsigned | 0..127 | positive fixint | 0x00..0x7F | | number_unsigned | 128..255 | uint 8 | 0xCC | | number_unsigned | 256..65535 | uint 16 | 0xCD | | number_unsigned | 65536..4294967295 | uint 32 | 0xCE | | number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF | | number_float | *any value representable by a float* | float 32 | 0xCA | | number_float | *any value NOT representable by a float* | float 64 | 0xCB | | string | *length*: 0..31 | fixstr | 0xA0..0xBF | | string | *length*: 32..255 | str 8 | 0xD9 | | string | *length*: 256..65535 | str 16 | 0xDA | | string | *length*: 65536..4294967295 | str 32 | 0xDB | | array | *size*: 0..15 | fixarray | 0x90..0x9F | | array | *size*: 16..65535 | array 16 | 0xDC | | array | *size*: 65536..4294967295 | array 32 | 0xDD | | object | *size*: 0..15 | fix map | 0x80..0x8F | | object | *size*: 16..65535 | map 16 | 0xDE | | object | *size*: 65536..4294967295 | map 32 | 0xDF | | binary | *size*: 0..255 | bin 8 | 0xC4 | | binary | *size*: 256..65535 | bin 16 | 0xC5 | | binary | *size*: 65536..4294967295 | bin 32 | 0xC6 | !!! success "Complete mapping" The mapping is **complete** in the sense that any JSON value type can be converted to a MessagePack value. Any MessagePack output created by `to_msgpack` can be successfully parsed by `from_msgpack`. !!! warning "Size constraints" The following values can **not** be converted to a MessagePack value: - strings with more than 4294967295 bytes - byte strings with more than 4294967295 bytes - arrays with more than 4294967295 elements - objects with more than 4294967295 elements !!! info "NaN/infinity handling" If NaN or Infinity are stored inside a JSON number, they are serialized properly in contrast to the [dump](../../api/basic_json/dump.md) function which serializes NaN or Infinity to `null`. ??? example ```cpp --8<-- "examples/to_msgpack.cpp" ``` Output: ```c --8<-- "examples/to_msgpack.output" ``` ## Deserialization The library maps MessagePack types to JSON value types as follows: | MessagePack type | JSON value type | first byte | |------------------|-----------------|------------| | positive fixint | number_unsigned | 0x00..0x7F | | fixmap | object | 0x80..0x8F | | fixarray | array | 0x90..0x9F | | fixstr | string | 0xA0..0xBF | | nil | `null` | 0xC0 | | false | `false` | 0xC2 | | true | `true` | 0xC3 | | float 32 | number_float | 0xCA | | float 64 | number_float | 0xCB | | uint 8 | number_unsigned | 0xCC | | uint 16 | number_unsigned | 0xCD | | uint 32 | number_unsigned | 0xCE | | uint 64 | number_unsigned | 0xCF | | int 8 | number_integer | 0xD0 | | int 16 | number_integer | 0xD1 | | int 32 | number_integer | 0xD2 | | int 64 | number_integer | 0xD3 | | str 8 | string | 0xD9 | | str 16 | string | 0xDA | | str 32 | string | 0xDB | | array 16 | array | 0xDC | | array 32 | array | 0xDD | | map 16 | object | 0xDE | | map 32 | object | 0xDF | | bin 8 | binary | 0xC4 | | bin 16 | binary | 0xC5 | | bin 32 | binary | 0xC6 | | ext 8 | binary | 0xC7 | | ext 16 | binary | 0xC8 | | ext 32 | binary | 0xC9 | | fixext 1 | binary | 0xD4 | | fixext 2 | binary | 0xD5 | | fixext 4 | binary | 0xD6 | | fixext 8 | binary | 0xD7 | | fixext 16 | binary | 0xD8 | | negative fixint | number_integer | 0xE0-0xFF | !!! info Any MessagePack output created by `to_msgpack` can be successfully parsed by `from_msgpack`. ??? example ```cpp --8<-- "examples/from_msgpack.cpp" ``` Output: ```json --8<-- "examples/from_msgpack.output" ``` json-3.11.3/docs/mkdocs/docs/features/binary_formats/ubjson.md000066400000000000000000000131611453145653700244060ustar00rootroot00000000000000# UBJSON Universal Binary JSON (UBJSON) is a binary form directly imitating JSON, but requiring fewer bytes of data. It aims to achieve the generality of JSON, combined with being much easier to process than JSON. !!! abstract "References" - [UBJSON Website](http://ubjson.org) ## Serialization The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification: | JSON value type | value/range | UBJSON type | marker | |-----------------|-----------------------------------|----------------|--------| | null | `null` | null | `Z` | | boolean | `true` | true | `T` | | boolean | `false` | false | `F` | | number_integer | -9223372036854775808..-2147483649 | int64 | `L` | | number_integer | -2147483648..-32769 | int32 | `l` | | number_integer | -32768..-129 | int16 | `I` | | number_integer | -128..127 | int8 | `i` | | number_integer | 128..255 | uint8 | `U` | | number_integer | 256..32767 | int16 | `I` | | number_integer | 32768..2147483647 | int32 | `l` | | number_integer | 2147483648..9223372036854775807 | int64 | `L` | | number_unsigned | 0..127 | int8 | `i` | | number_unsigned | 128..255 | uint8 | `U` | | number_unsigned | 256..32767 | int16 | `I` | | number_unsigned | 32768..2147483647 | int32 | `l` | | number_unsigned | 2147483648..9223372036854775807 | int64 | `L` | | number_unsigned | 2147483649..18446744073709551615 | high-precision | `H` | | number_float | *any value* | float64 | `D` | | string | *with shortest length indicator* | string | `S` | | array | *see notes on optimized format* | array | `[` | | object | *see notes on optimized format* | map | `{` | !!! success "Complete mapping" The mapping is **complete** in the sense that any JSON value type can be converted to a UBJSON value. Any UBJSON output created by `to_ubjson` can be successfully parsed by `from_ubjson`. !!! warning "Size constraints" The following values can **not** be converted to a UBJSON value: - strings with more than 9223372036854775807 bytes (theoretical) !!! info "Unused UBJSON markers" The following markers are not used in the conversion: - `Z`: no-op values are not created. - `C`: single-byte strings are serialized with `S` markers. !!! info "NaN/infinity handling" If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the `dump()` function which serializes NaN or Infinity to `null`. !!! info "Optimized formats" The optimized formats for containers are supported: Parameter `use_size` adds size information to the beginning of a container and removes the closing marker. Parameter `use_type` further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The `use_type` parameter must only be used together with `use_size = true`. Note that `use_size = true` alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container. !!! info "Binary values" If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the UBJSON documentation. In particular, this means that serialization and the deserialization of a JSON containing binary values into UBJSON and back will result in a different JSON object. ??? example ```cpp --8<-- "examples/to_ubjson.cpp" ``` Output: ```c --8<-- "examples/to_ubjson.output" ``` ## Deserialization The library maps UBJSON types to JSON value types as follows: | UBJSON type | JSON value type | marker | |-------------|-----------------------------------------|--------| | no-op | *no value, next value is read* | `N` | | null | `null` | `Z` | | false | `false` | `F` | | true | `true` | `T` | | float32 | number_float | `d` | | float64 | number_float | `D` | | uint8 | number_unsigned | `U` | | int8 | number_integer | `i` | | int16 | number_integer | `I` | | int32 | number_integer | `l` | | int64 | number_integer | `L` | | string | string | `S` | | char | string | `C` | | array | array (optimized values are supported) | `[` | | object | object (optimized values are supported) | `{` | !!! success "Complete mapping" The mapping is **complete** in the sense that any UBJSON value can be converted to a JSON value. ??? example ```cpp --8<-- "examples/from_ubjson.cpp" ``` Output: ```json --8<-- "examples/from_ubjson.output" ``` json-3.11.3/docs/mkdocs/docs/features/binary_values.md000066400000000000000000000270021453145653700227310ustar00rootroot00000000000000# Binary Values The library implements several [binary formats](binary_formats/index.md) that encode JSON in an efficient way. Most of these formats support binary values; that is, values that have semantics define outside the library and only define a sequence of bytes to be stored. JSON itself does not have a binary value. As such, binary values are an extension that this library implements to store values received by a binary format. Binary values are never created by the JSON parser, and are only part of a serialized JSON text if they have been created manually or via a binary format. ## API for binary values ```plantuml class json::binary_t { -- setters -- +void set_subtype(std::uint64_t subtype) +void clear_subtype() -- getters -- +std::uint64_t subtype() const +bool has_subtype() const } "std::vector" <|-- json::binary_t ``` By default, binary values are stored as `std::vector`. This type can be changed by providing a template parameter to the `basic_json` type. To store binary subtypes, the storage type is extended and exposed as `json::binary_t`: ```cpp auto binary = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE}); auto binary_with_subtype = json::binary_t({0xCA, 0xFE, 0xBA, 0xBE}, 42); ``` There are several convenience functions to check and set the subtype: ```cpp binary.has_subtype(); // returns false binary_with_subtype.has_subtype(); // returns true binary_with_subtype.clear_subtype(); binary_with_subtype.has_subtype(); // returns true binary_with_subtype.set_subtype(42); binary.set_subtype(23); binary.subtype(); // returns 23 ``` As `json::binary_t` is subclassing `std::vector`, all member functions are available: ```cpp binary.size(); // returns 4 binary[1]; // returns 0xFE ``` JSON values can be constructed from `json::binary_t`: ```cpp json j = binary; ``` Binary values are primitive values just like numbers or strings: ```cpp j.is_binary(); // returns true j.is_primitive(); // returns true ``` Given a binary JSON value, the `binary_t` can be accessed by reference as via `get_binary()`: ```cpp j.get_binary().has_subtype(); // returns true j.get_binary().size(); // returns 4 ``` For convenience, binary JSON values can be constructed via `json::binary`: ```cpp auto j2 = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 23); auto j3 = json::binary({0xCA, 0xFE, 0xBA, 0xBE}); j2 == j; // returns true j3.get_binary().has_subtype(); // returns false j3.get_binary().subtype(); // returns std::uint64_t(-1) as j3 has no subtype ``` ## Serialization Binary values are serialized differently according to the formats. ### JSON JSON does not have a binary type, and this library does not introduce a new type as this would break conformance. Instead, binary values are serialized as an object with two keys: `bytes` holds an array of integers, and `subtype` is an integer or `null`. ??? example Code: ```cpp // create a binary value of subtype 42 json j; j["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); // serialize to standard output std::cout << j.dump(2) << std::endl; ``` Output: ```json { "binary": { "bytes": [202, 254, 186, 190], "subtype": 42 } } ``` !!! warning "No roundtrip for binary values" The JSON parser will not parse the objects generated by binary values back to binary values. This is by design to remain standards compliant. Serializing binary values to JSON is only implemented for debugging purposes. ### BJData [BJData](binary_formats/bjdata.md) neither supports binary values nor subtypes, and proposes to serialize binary values as array of uint8 values. This translation is implemented by the library. ??? example Code: ```cpp // create a binary value of subtype 42 (will be ignored in BJData) json j; j["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); // convert to BJData auto v = json::to_bjdata(j); ``` `v` is a `std::vector` with the following 20 elements: ```c 0x7B // '{' 0x69 0x06 // i 6 (length of the key) 0x62 0x69 0x6E 0x61 0x72 0x79 // "binary" 0x5B // '[' 0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE // content (each byte prefixed with 'U') 0x5D // ']' 0x7D // '}' ``` The following code uses the type and size optimization for UBJSON: ```cpp // convert to UBJSON using the size and type optimization auto v = json::to_bjdata(j, true, true); ``` The resulting vector has 22 elements; the optimization is not effective for examples with few values: ```c 0x7B // '{' 0x23 0x69 0x01 // '#' 'i' type of the array elements: unsigned integers 0x69 0x06 // i 6 (length of the key) 0x62 0x69 0x6E 0x61 0x72 0x79 // "binary" 0x5B // '[' array 0x24 0x55 // '$' 'U' type of the array elements: unsigned integers 0x23 0x69 0x04 // '#' i 4 number of array elements 0xCA 0xFE 0xBA 0xBE // content ``` Note that subtype (42) is **not** serialized and that UBJSON has **no binary type**, and deserializing `v` would yield the following value: ```json { "binary": [202, 254, 186, 190] } ``` ### BSON [BSON](binary_formats/bson.md) supports binary values and subtypes. If a subtype is given, it is used and added as unsigned 8-bit integer. If no subtype is given, the generic binary subtype 0x00 is used. ??? example Code: ```cpp // create a binary value of subtype 42 json j; j["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); // convert to BSON auto v = json::to_bson(j); ``` `v` is a `std::vector` with the following 22 elements: ```c 0x16 0x00 0x00 0x00 // number of bytes in the document 0x05 // binary value 0x62 0x69 0x6E 0x61 0x72 0x79 0x00 // key "binary" + null byte 0x04 0x00 0x00 0x00 // number of bytes 0x2a // subtype 0xCA 0xFE 0xBA 0xBE // content 0x00 // end of the document ``` Note that the serialization preserves the subtype, and deserializing `v` would yield the following value: ```json { "binary": { "bytes": [202, 254, 186, 190], "subtype": 42 } } ``` ### CBOR [CBOR](binary_formats/cbor.md) supports binary values, but no subtypes. Subtypes will be serialized as tags. Any binary value will be serialized as byte strings. The library will choose the smallest representation using the length of the byte array. ??? example Code: ```cpp // create a binary value of subtype 42 json j; j["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); // convert to CBOR auto v = json::to_cbor(j); ``` `v` is a `std::vector` with the following 15 elements: ```c 0xA1 // map(1) 0x66 // text(6) 0x62 0x69 0x6E 0x61 0x72 0x79 // "binary" 0xD8 0x2A // tag(42) 0x44 // bytes(4) 0xCA 0xFE 0xBA 0xBE // content ``` Note that the subtype is serialized as tag. However, parsing tagged values yield a parse error unless `json::cbor_tag_handler_t::ignore` or `json::cbor_tag_handler_t::store` is passed to `json::from_cbor`. ```json { "binary": { "bytes": [202, 254, 186, 190], "subtype": null } } ``` ### MessagePack [MessagePack](binary_formats/messagepack.md) supports binary values and subtypes. If a subtype is given, the ext family is used. The library will choose the smallest representation among fixext1, fixext2, fixext4, fixext8, ext8, ext16, and ext32. The subtype is then added as signed 8-bit integer. If no subtype is given, the bin family (bin8, bin16, bin32) is used. ??? example Code: ```cpp // create a binary value of subtype 42 json j; j["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); // convert to MessagePack auto v = json::to_msgpack(j); ``` `v` is a `std::vector` with the following 14 elements: ```c 0x81 // fixmap1 0xA6 // fixstr6 0x62 0x69 0x6E 0x61 0x72 0x79 // "binary" 0xD6 // fixext4 0x2A // subtype 0xCA 0xFE 0xBA 0xBE // content ``` Note that the serialization preserves the subtype, and deserializing `v` would yield the following value: ```json { "binary": { "bytes": [202, 254, 186, 190], "subtype": 42 } } ``` ### UBJSON [UBJSON](binary_formats/ubjson.md) neither supports binary values nor subtypes, and proposes to serialize binary values as array of uint8 values. This translation is implemented by the library. ??? example Code: ```cpp // create a binary value of subtype 42 (will be ignored in UBJSON) json j; j["binary"] = json::binary({0xCA, 0xFE, 0xBA, 0xBE}, 42); // convert to UBJSON auto v = json::to_ubjson(j); ``` `v` is a `std::vector` with the following 20 elements: ```c 0x7B // '{' 0x69 0x06 // i 6 (length of the key) 0x62 0x69 0x6E 0x61 0x72 0x79 // "binary" 0x5B // '[' 0x55 0xCA 0x55 0xFE 0x55 0xBA 0x55 0xBE // content (each byte prefixed with 'U') 0x5D // ']' 0x7D // '}' ``` The following code uses the type and size optimization for UBJSON: ```cpp // convert to UBJSON using the size and type optimization auto v = json::to_ubjson(j, true, true); ``` The resulting vector has 23 elements; the optimization is not effective for examples with few values: ```c 0x7B // '{' 0x24 // '$' type of the object elements 0x5B // '[' array 0x23 0x69 0x01 // '#' i 1 number of object elements 0x69 0x06 // i 6 (length of the key) 0x62 0x69 0x6E 0x61 0x72 0x79 // "binary" 0x24 0x55 // '$' 'U' type of the array elements: unsigned integers 0x23 0x69 0x04 // '#' i 4 number of array elements 0xCA 0xFE 0xBA 0xBE // content ``` Note that subtype (42) is **not** serialized and that UBJSON has **no binary type**, and deserializing `v` would yield the following value: ```json { "binary": [202, 254, 186, 190] } ``` json-3.11.3/docs/mkdocs/docs/features/comments.md000066400000000000000000000056131453145653700217170ustar00rootroot00000000000000# Comments This library does not support comments *by default*. It does so for three reasons: 1. Comments are not part of the [JSON specification](https://tools.ietf.org/html/rfc8259). You may argue that `//` or `/* */` are allowed in JavaScript, but JSON is not JavaScript. 2. This was not an oversight: Douglas Crockford [wrote on this](https://plus.google.com/118095276221607585885/posts/RK8qyGVaGSr) in May 2012: > I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn't. > Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser. 3. It is dangerous for interoperability if some libraries would add comment support while others don't. Please check [The Harmful Consequences of the Robustness Principle](https://tools.ietf.org/html/draft-iab-protocol-maintenance-01) on this. However, you can pass set parameter `ignore_comments` to `#!c true` in the parse function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace. !!! example Consider the following JSON with comments. ```json { // update in 2006: removed Pluto "planets": ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Uranus", "Neptune" /*, "Pluto" */] } ``` When calling `parse` without additional argument, a parse error exception is thrown. If `ignore_comments` is set to `#! true`, the comments are ignored during parsing: ```cpp #include #include "json.hpp" using json = nlohmann::json; int main() { std::string s = R"( { // update in 2006: removed Pluto "planets": ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Uranus", "Neptune" /*, "Pluto" */] } )"; try { json j = json::parse(s); } catch (json::exception &e) { std::cout << e.what() << std::endl; } json j = json::parse(s, /* callback */ nullptr, /* allow exceptions */ true, /* ignore_comments */ true); std::cout << j.dump(2) << '\n'; } ``` Output: ``` [json.exception.parse_error.101] parse error at line 3, column 9: syntax error while parsing object key - invalid literal; last read: ' { /'; expected string literal ``` ```json { "planets": [ "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Uranus", "Neptune" ] } ``` json-3.11.3/docs/mkdocs/docs/features/element_access/000077500000000000000000000000001453145653700225155ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/features/element_access/checked_access.md000066400000000000000000000075361453145653700257610ustar00rootroot00000000000000# Checked access: at ## Overview The [`at`](../../api/basic_json/at.md) member function performs checked access; that is, it returns a reference to the desired value if it exists and throws a [`basic_json::out_of_range` exception](../../home/exceptions.md#out-of-range) otherwise. ??? example "Read access" Consider the following JSON value: ```json { "name": "Mary Smith", "age": 42, "hobbies": ["hiking", "reading"] } ``` Assume the value is parsed to a `json` variable `j`. | expression | value | |-------------------------------|------------------------------------------------------------------------------| | `#!cpp j` | `#!json {"name": "Mary Smith", "age": 42, "hobbies": ["hiking", "reading"]}` | | `#!cpp j.at("name")` | `#!json "Mary Smith"` | | `#!cpp j.at("age")` | `#!json 42` | | `#!cpp j.at("hobbies")` | `#!json ["hiking", "reading"]` | | `#!cpp j.at("hobbies").at(0)` | `#!json "hiking"` | | `#!cpp j.at("hobbies").at(1)` | `#!json "reading"` | The return value is a reference, so it can be modified by the original value. ??? example "Write access" ```cpp j.at("name") = "John Smith"; ``` This code produces the following JSON value: ```json { "name": "John Smith", "age": 42, "hobbies": ["hiking", "reading"] } ``` When accessing an invalid index (i.e., an index greater than or equal to the array size) or the passed object key is non-existing, an exception is thrown. ??? example "Accessing via invalid index or missing key" ```cpp j.at("hobbies").at(3) = "cooking"; ``` This code produces the following exception: ``` [json.exception.out_of_range.401] array index 3 is out of range ``` When you [extended diagnostic messages](../../home/exceptions.md#extended-diagnostic-messages) are enabled by defining [`JSON_DIAGNOSTICS`](../../api/macros/json_diagnostics.md), the exception further gives information where the key or index is missing or out of range. ``` [json.exception.out_of_range.401] (/hobbies) array index 3 is out of range ``` ## Notes !!! failure "Exceptions" - [`at`](../../api/basic_json/at.md) can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a [`basic_json::type_error`](../../home/exceptions.md#jsonexceptiontype_error304) is thrown. - [`basic_json::out_of_range` exception](../../home/exceptions.md#out-of-range) exceptions are thrown if the provided key is not found in an object or the provided index is invalid. ## Summary | scenario | non-const value | const value | |-----------------------------------|------------------------------------------------|------------------------------------------------| | access to existing object key | reference to existing value is returned | const reference to existing value is returned | | access to valid array index | reference to existing value is returned | const reference to existing value is returned | | access to non-existing object key | `basic_json::out_of_range` exception is thrown | `basic_json::out_of_range` exception is thrown | | access to invalid array index | `basic_json::out_of_range` exception is thrown | `basic_json::out_of_range` exception is thrown | json-3.11.3/docs/mkdocs/docs/features/element_access/default_value.md000066400000000000000000000017221453145653700256610ustar00rootroot00000000000000# Access with default value: value ## Overview In many situations such as configuration files, missing values are not exceptional, but may be treated as if a default value was present. ??? example Consider the following JSON value: ```json { "logOutput": "result.log", "append": true } ``` Assume the value is parsed to a `json` variable `j`. | expression | value | | ---------- | ----- | | `#!cpp j` | `#!json {"logOutput": "result.log", "append": true}` | | `#!cpp j.value("logOutput", "logfile.log")` | `#!json "result.log"` | | `#!cpp j.value("append", true)` | `#!json true` | | `#!cpp j.value("append", false)` | `#!json true` | | `#!cpp j.value("logLevel", "verbose")` | `#!json "verbose"` | ## Note !!! failure "Exceptions" - `value` can only be used with objects. For other types, a [`basic_json::type_error`](../../home/exceptions.md#jsonexceptiontype_error306) is thrown. json-3.11.3/docs/mkdocs/docs/features/element_access/index.md000066400000000000000000000004231453145653700241450ustar00rootroot00000000000000# Element Access There are many ways elements in a JSON value can be accessed: - unchecked access via [`operator[]`](unchecked_access.md) - checked access via [`at`](checked_access.md) - access with default value via [`value`](default_value.md) - iterators - JSON pointers json-3.11.3/docs/mkdocs/docs/features/element_access/unchecked_access.md000066400000000000000000000130211453145653700263060ustar00rootroot00000000000000# Unchecked access: operator[] ## Overview Elements in a JSON object and a JSON array can be accessed via [`operator[]`](../../api/basic_json/operator%5B%5D.md) similar to a `#!cpp std::map` and a `#!cpp std::vector`, respectively. ??? example "Read access" Consider the following JSON value: ```json { "name": "Mary Smith", "age": 42, "hobbies": ["hiking", "reading"] } ``` Assume the value is parsed to a `json` variable `j`. | expression | value | |-------------------------|------------------------------------------------------------------------------| | `#!cpp j` | `#!json {"name": "Mary Smith", "age": 42, "hobbies": ["hiking", "reading"]}` | | `#!cpp j["name"]` | `#!json "Mary Smith"` | | `#!cpp j["age"]` | `#!json 42` | | `#!cpp j["hobbies"]` | `#!json ["hiking", "reading"]` | | `#!cpp j["hobbies"][0]` | `#!json "hiking"` | | `#!cpp j["hobbies"][1]` | `#!json "reading"` | The return value is a reference, so it can modify the original value. In case the passed object key is non-existing, a `#!json null` value is inserted which can be immediately be overwritten. ??? example "Write access" ```cpp j["name"] = "John Smith"; j["maidenName"] = "Jones"; ``` This code produces the following JSON value: ```json { "name": "John Smith", "maidenName": "Jones", "age": 42, "hobbies": ["hiking", "reading"] } ``` When accessing an invalid index (i.e., an index greater than or equal to the array size), the JSON array is resized such that the passed index is the new maximal index. Intermediate values are filled with `#!json null`. ??? example "Filling up arrays with `#!json null` values" ```cpp j["hobbies"][0] = "running"; j["hobbies"][3] = "cooking"; ``` This code produces the following JSON value: ```json { "name": "John Smith", "maidenName": "Jones", "age": 42, "hobbies": ["running", "reading", null, "cooking"] } ``` ## Notes !!! info "Design rationale" The library behaves differently to `#!cpp std::vector` and `#!cpp std::map`: - `#!cpp std::vector::operator[]` never inserts a new element. - `#!cpp std::map::operator[]` is not available for const values. The type `#!cpp json` wraps all JSON value types. It would be impossible to remove [`operator[]`](../../api/basic_json/operator%5B%5D.md) for const objects. At the same time, inserting elements for non-const objects is really convenient as it avoids awkward `insert` calls. To this end, we decided to have an inserting non-const behavior for both arrays and objects. !!! info The access is unchecked. In case the passed object key does not exist or the passed array index is invalid, no exception is thrown. !!! danger - It is **undefined behavior** to access a const object with a non-existing key. - It is **undefined behavior** to access a const array with an invalid index. - In debug mode, an **assertion** will fire in both cases. You can disable assertions by defining the preprocessor symbol `#!cpp NDEBUG` or redefine the macro [`JSON_ASSERT(x)`](../macros.md#json_assertx). See the documentation on [runtime assertions](../assertions.md) for more information. !!! failure "Exceptions" `operator[]` can only be used with objects (with a string argument) or with arrays (with a numeric argument). For other types, a [`basic_json::type_error`](../../home/exceptions.md#jsonexceptiontype_error305) is thrown. ## Summary | scenario | non-const value | const value | |-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| | access to existing object key | reference to existing value is returned | const reference to existing value is returned | | access to valid array index | reference to existing value is returned | const reference to existing value is returned | | access to non-existing object key | reference to newly inserted `#!json null` value is returned | **undefined behavior**; [runtime assertion](../assertions.md) in debug mode | | access to invalid array index | reference to newly inserted `#!json null` value is returned; any index between previous maximal index and passed index are filled with `#!json null` | **undefined behavior**; [runtime assertion](../assertions.md) in debug mode | json-3.11.3/docs/mkdocs/docs/features/enum_conversion.md000066400000000000000000000044451453145653700233050ustar00rootroot00000000000000# Specializing enum conversion By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended. It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below: ```cpp // example enum type declaration enum TaskState { TS_STOPPED, TS_RUNNING, TS_COMPLETED, TS_INVALID=-1, }; // map TaskState values to JSON as strings NLOHMANN_JSON_SERIALIZE_ENUM( TaskState, { {TS_INVALID, nullptr}, {TS_STOPPED, "stopped"}, {TS_RUNNING, "running"}, {TS_COMPLETED, "completed"}, }) ``` The [`NLOHMANN_JSON_SERIALIZE_ENUM()` macro](../api/macros/nlohmann_json_serialize_enum.md) declares a set of `to_json()` / `from_json()` functions for type `TaskState` while avoiding repetition and boilerplate serialization code. ## Usage ```cpp // enum to JSON as string json j = TS_STOPPED; assert(j == "stopped"); // json string to enum json j3 = "running"; assert(j3.template get() == TS_RUNNING); // undefined json value to enum (where the first map entry above is the default) json jPi = 3.14; assert(jPi.template get() == TS_INVALID ); ``` ## Notes Just as in [Arbitrary Type Conversions](arbitrary_types.md) above, - [`NLOHMANN_JSON_SERIALIZE_ENUM()`](../api/macros/nlohmann_json_serialize_enum.md) MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization. - It MUST be available (e.g., proper headers must be included) everywhere you use the conversions. Other Important points: - When using `template get()`, undefined JSON values will default to the first pair specified in your map. Select this default pair carefully. - If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from JSON. - To disable the default serialization of enumerators as integers and force a compiler error instead, see [`JSON_DISABLE_ENUM_SERIALIZATION`](../api/macros/json_disable_enum_serialization.md). json-3.11.3/docs/mkdocs/docs/features/iterators.md000066400000000000000000000100151453145653700220760ustar00rootroot00000000000000# Iterators ## Overview A `basic_json` value is a container and allows access via iterators. Depending on the value type, `basic_json` stores zero or more values. As for other containers, `begin()` returns an iterator to the first value and `end()` returns an iterator to the value following the last value. The latter iterator is a placeholder and cannot be dereferenced. In case of null values, empty arrays, or empty objects, `begin()` will return `end()`. ![Illustration from cppreference.com](../images/range-begin-end.svg) ### Iteration order for objects When iterating over objects, values are ordered with respect to the `object_comparator_t` type which defaults to `std::less`. See the [types documentation](types/index.md#key-order) for more information. ??? example ```cpp // create JSON object {"one": 1, "two": 2, "three": 3} json j; j["one"] = 1; j["two"] = 2; j["three"] = 3; for (auto it = j.begin(); it != j.end(); ++it) { std::cout << *it << std::endl; } ``` Output: ```json 1 3 2 ``` The reason for the order is the lexicographic ordering of the object keys "one", "three", "two". ### Access object key during iteration The JSON iterators have two member functions, `key()` and `value()` to access the object key and stored value, respectively. When calling `key()` on a non-object iterator, an [invalid_iterator.207](../home/exceptions.md#jsonexceptioninvalid_iterator207) exception is thrown. ??? example ```cpp // create JSON object {"one": 1, "two": 2, "three": 3} json j; j["one"] = 1; j["two"] = 2; j["three"] = 3; for (auto it = j.begin(); it != j.end(); ++it) { std::cout << it.key() << " : " << it.value() << std::endl; } ``` Output: ```json one : 1 three : 3 two : 2 ``` ### Range-based for loops C++11 allows using range-based for loops to iterate over a container. ```cpp for (auto it : j_object) { // "it" is of type json::reference and has no key() member std::cout << "value: " << it << '\n'; } ``` For this reason, the `items()` function allows accessing `iterator::key()` and `iterator::value()` during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator. ```cpp for (auto& el : j_object.items()) { std::cout << "key: " << el.key() << ", value:" << el.value() << '\n'; } ``` The items() function also allows using structured bindings (C++17): ```cpp for (auto& [key, val] : j_object.items()) { std::cout << "key: " << key << ", value:" << val << '\n'; } ``` !!! note When iterating over an array, `key()` will return the index of the element as string. For primitive types (e.g., numbers), `key()` returns an empty string. !!! warning Using `items()` on temporary objects is dangerous. Make sure the object's lifetime exceeds the iteration. See for more information. ### Reverse iteration order `rbegin()` and `rend()` return iterators in the reverse sequence. ![Illustration from cppreference.com](../images/range-rbegin-rend.svg) ??? example ```cpp json j = {1, 2, 3, 4}; for (auto it = j.rbegin(); it != j.rend(); ++it) { std::cout << *it << std::endl; } ``` Output: ```json 4 3 2 1 ``` ### Iterating strings and binary values Note that "value" means a JSON value in this setting, not values stored in the underlying containers. That is, `*begin()` returns the complete string or binary array and is also safe the underlying string or binary array is empty. ??? example ```cpp json j = "Hello, world"; for (auto it = j.begin(); it != j.end(); ++it) { std::cout << *it << std::endl; } ``` Output: ```json "Hello, world" ``` ## Iterator invalidation | Operations | invalidated iterators | |------------|-----------------------| | `clear` | all | json-3.11.3/docs/mkdocs/docs/features/json_patch.md000066400000000000000000000020111453145653700222070ustar00rootroot00000000000000# JSON Patch and Diff ## Patches JSON Patch ([RFC 6902](https://tools.ietf.org/html/rfc6902)) defines a JSON document structure for expressing a sequence of operations to apply to a JSON document. With the `patch` function, a JSON Patch is applied to the current JSON value by executing all operations from the patch. ??? example The following code shows how a JSON patch is applied to a value. ```cpp --8<-- "examples/patch.cpp" ``` Output: ```json --8<-- "examples/patch.output" ``` ## Diff The library can also calculate a JSON patch (i.e., a **diff**) given two JSON values. !!! success "Invariant" For two JSON values *source* and *target*, the following code yields always true: ```cüü source.patch(diff(source, target)) == target; ``` ??? example The following code shows how a JSON patch is created as a diff for two JSON values. ```cpp --8<-- "examples/diff.cpp" ``` Output: ```json --8<-- "examples/diff.output" ``` json-3.11.3/docs/mkdocs/docs/features/json_pointer.md000066400000000000000000000103001453145653700225700ustar00rootroot00000000000000# JSON Pointer ## Introduction The library supports **JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) as alternative means to address structured values. A JSON Pointer is a string that identifies a specific value within a JSON document. Consider the following JSON document ```json { "array": ["A", "B", "C"], "nested": { "one": 1, "two": 2, "three": [true, false] } } ``` Then every value inside the JSON document can be identified as follows: | JSON Pointer | JSON value | |-------------------|----------------------------------------------------------------------------------| | `` | `#!json {"array":["A","B","C"],"nested":{"one":1,"two":2,"three":[true,false]}}` | | `/array` | `#!json ["A","B","C"]` | | `/array/0` | `#!json A` | | `/array/1` | `#!json B` | | `/array/2` | `#!json C` | | `/nested` | `#!json {"one":1,"two":2,"three":[true,false]}` | | `/nested/one` | `#!json 1` | | `/nested/two` | `#!json 2` | | `/nested/three` | `#!json [true,false]` | | `/nested/three/0` | `#!json true` | | `/nested/three/1` | `#!json false` | Note `/` does not identify the root (i.e., the whole document), but an object entry with empty key `""`. See [RFC 6901](https://tools.ietf.org/html/rfc6901) for more information. ## JSON Pointer creation JSON Pointers can be created from a string: ```cpp json::json_pointer p = "/nested/one"; ``` Furthermore, a user-defined string literal can be used to achieve the same result: ```cpp auto p = "/nested/one"_json_pointer; ``` The escaping rules of [RFC 6901](https://tools.ietf.org/html/rfc6901) are implemented. See the [constructor documentation](../api/json_pointer/json_pointer.md) for more information. ## Value access JSON Pointers can be used in the [`at`](../api/basic_json/at.md), [`operator[]`](../api/basic_json/operator%5B%5D.md), and [`value`](../api/basic_json/value.md) functions just like object keys or array indices. ```cpp // the JSON value from above auto j = json::parse(R"({ "array": ["A", "B", "C"], "nested": { "one": 1, "two": 2, "three": [true, false] } })"); // access values auto val = j["/"_json_pointer]; // {"array":["A","B","C"],...} auto val1 = j["/nested/one"_json_pointer]; // 1 auto val2 = j.at[json::json_pointer("/nested/three/1")]; // false auto val3 = j.value[json::json_pointer("/nested/four", 0)]; // 0 ``` ## Flatten / unflatten The library implements a function [`flatten`](../api/basic_json/flatten.md) to convert any JSON document into a JSON object where each key is a JSON Pointer and each value is a primitive JSON value (i.e., a string, boolean, number, or null). ```cpp // the JSON value from above auto j = json::parse(R"({ "array": ["A", "B", "C"], "nested": { "one": 1, "two": 2, "three": [true, false] } })"); // create flattened value auto j_flat = j.flatten(); ``` The resulting value `j_flat` is: ```json { "/array/0": "A", "/array/1": "B", "/array/2": "C", "/nested/one": 1, "/nested/two": 2, "/nested/three/0": true, "/nested/three/1": false } ``` The reverse function, [`unflatten`](../api/basic_json/unflatten.md) recreates the original value. ```cpp auto j_original = j_flat.unflatten(); ``` ## See also - Class [`json_pointer`](../api/json_pointer/index.md) - Function [`flatten`](../api/basic_json/flatten.md) - Function [`unflatten`](../api/basic_json/unflatten.md) - [JSON Patch](json_patch.md) json-3.11.3/docs/mkdocs/docs/features/macros.md000066400000000000000000000216001453145653700213500ustar00rootroot00000000000000# Supported Macros Some aspects of the library can be configured by defining preprocessor macros before including the `json.hpp` header. See also the [API documentation for macros](../api/macros/index.md) for examples and more information. ## `JSON_ASSERT(x)` This macro controls which code is executed for [runtime assertions](assertions.md) of the library. See [full documentation of `JSON_ASSERT(x)`](../api/macros/json_assert.md). ## `JSON_CATCH_USER(exception)` This macro overrides [`#!cpp catch`](https://en.cppreference.com/w/cpp/language/try_catch) calls inside the library. See [full documentation of `JSON_CATCH_USER(exception)`](../api/macros/json_throw_user.md). ## `JSON_DIAGNOSTICS` This macro enables extended diagnostics for exception messages. Possible values are `1` to enable or `0` to disable (default). When enabled, exception messages contain a [JSON Pointer](json_pointer.md) to the JSON value that triggered the exception, see [Extended diagnostic messages](../home/exceptions.md#extended-diagnostic-messages) for an example. Note that enabling this macro increases the size of every JSON value by one pointer and adds some runtime overhead. The diagnostics messages can also be controlled with the CMake option `JSON_Diagnostics` (`OFF` by default) which sets `JSON_DIAGNOSTICS` accordingly. See [full documentation of `JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md). ## `JSON_HAS_CPP_11`, `JSON_HAS_CPP_14`, `JSON_HAS_CPP_17`, `JSON_HAS_CPP_20` The library targets C++11, but also supports some features introduced in later C++ versions (e.g., `std::string_view` support for C++17). For these new features, the library implements some preprocessor checks to determine the C++ standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly. See [full documentation of `JSON_HAS_CPP_11`, `JSON_HAS_CPP_14`, `JSON_HAS_CPP_17`, and `JSON_HAS_CPP_20`](../api/macros/json_has_cpp_11.md). ## `JSON_HAS_FILESYSTEM`, `JSON_HAS_EXPERIMENTAL_FILESYSTEM` When compiling with C++17, the library provides conversions from and to `std::filesystem::path`. As compiler support for filesystem is limited, the library tries to detect whether ``/`std::filesystem` (`JSON_HAS_FILESYSTEM`) or ``/`std::experimental::filesystem` (`JSON_HAS_EXPERIMENTAL_FILESYSTEM`) should be used. To override the built-in check, define `JSON_HAS_FILESYSTEM` or `JSON_HAS_EXPERIMENTAL_FILESYSTEM` to `1`. See [full documentation of `JSON_HAS_FILESYSTEM` and `JSON_HAS_EXPERIMENTAL_FILESYSTEM`](../api/macros/json_has_filesystem.md). ## `JSON_NOEXCEPTION` Exceptions can be switched off by defining the symbol `JSON_NOEXCEPTION`. See [full documentation of `JSON_NOEXCEPTION`](../api/macros/json_noexception.md). ## `JSON_DISABLE_ENUM_SERIALIZATION` When defined, default parse and serialize functions for enums are excluded and have to be provided by the user, for example, using [`NLOHMANN_JSON_SERIALIZE_ENUM`](../api/macros/nlohmann_json_serialize_enum.md). See [full documentation of `JSON_DISABLE_ENUM_SERIALIZATION`](../api/macros/json_disable_enum_serialization.md). ## `JSON_NO_IO` When defined, headers ``, ``, ``, ``, and `` are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)). See [full documentation of `JSON_NO_IO`](../api/macros/json_no_io.md). ## `JSON_SKIP_LIBRARY_VERSION_CHECK` When defined, the library will not create a compiler warning when a different version of the library was already included. See [full documentation of `JSON_SKIP_LIBRARY_VERSION_CHECK`](../api/macros/json_skip_library_version_check.md). ## `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK` When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to use the library with compilers that do not fully support C++11 and may only work if unsupported features are not used. See [full documentation of `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK`](../api/macros/json_skip_unsupported_compiler_check.md). ## `JSON_THROW_USER(exception)` This macro overrides `#!cpp throw` calls inside the library. The argument is the exception to be thrown. See [full documentation of `JSON_THROW_USER(exception)`](../api/macros/json_throw_user.md). ## `JSON_TRY_USER` This macro overrides `#!cpp try` calls inside the library. See [full documentation of `JSON_TRY_USER`](../api/macros/json_throw_user.md). ## `JSON_USE_IMPLICIT_CONVERSIONS` When defined to `0`, implicit conversions are switched off. By default, implicit conversions are switched on. See [full documentation of `JSON_USE_IMPLICIT_CONVERSIONS`](../api/macros/json_use_implicit_conversions.md). ## `NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)` This macro can be used to simplify the serialization/deserialization of types if (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object. The macro is to be defined inside the class/struct to create code for. Unlike [`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`](#nlohmann_define_type_non_intrusivetype-member), it can access private members. The first parameter is the name of the class/struct, and all remaining parameters name the members. See [full documentation of `NLOHMANN_DEFINE_TYPE_INTRUSIVE`](../api/macros/nlohmann_define_type_intrusive.md). ## `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(type, member...)` This macro is similar to `NLOHMANN_DEFINE_TYPE_INTRUSIVE`. It will not throw an exception in `from_json()` due to a missing value in the JSON object, but can throw due to a mismatched type. The `from_json()` function default constructs an object and uses its values as the defaults when calling the [`value`](../api/basic_json/value.md) function. See [full documentation of `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT`](../api/macros/nlohmann_define_type_intrusive.md). ## `NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(type, member...)` This macro is similar to `NLOHMANN_DEFINE_TYPE_INTRUSIVE` except that it defines only the serialization code. This is useful when the user type does not have a default constructor and only the serialization is required. See [full documentation of `NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE`](../api/macros//nlohmann_define_type_intrusive.md). ## `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)` This macro can be used to simplify the serialization/deserialization of types if (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object. The macro is to be defined inside the namespace of the class/struct to create code for. Private members cannot be accessed. Use [`NLOHMANN_DEFINE_TYPE_INTRUSIVE`](#nlohmann_define_type_intrusivetype-member) in these scenarios. The first parameter is the name of the class/struct, and all remaining parameters name the members. See [full documentation of `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`](../api/macros/nlohmann_define_type_non_intrusive.md). ## `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(type, member...)` This macro is similar to `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`. It will not throw an exception in `from_json()` due to a missing value in the JSON object, but can throw due to a mismatched type. The `from_json()` function default constructs an object and uses its values as the defaults when calling the [`value`](../api/basic_json/value.md) function. See [full documentation of `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT`](../api/macros/nlohmann_define_type_non_intrusive.md). ## `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(type, member...)` This macro is similar to `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` except that it defines only the serialization code. This is useful when the user type does not have a default constructor and only the serialization is required. See [full documentation of `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE`](../api/macros//nlohmann_define_type_non_intrusive.md). ## `NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)` This macro simplifies the serialization/deserialization of enum types. See [Specializing enum conversion](enum_conversion.md) for more information. See [full documentation of `NLOHMANN_JSON_SERIALIZE_ENUM`](../api/macros/nlohmann_json_serialize_enum.md). ## `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, `NLOHMANN_JSON_VERSION_PATCH` These macros are defined by the library and contain the version numbers according to [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html). See [full documentation of `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, and `NLOHMANN_JSON_VERSION_PATCH`](../api/macros/nlohmann_json_version_major.md). json-3.11.3/docs/mkdocs/docs/features/merge_patch.md000066400000000000000000000013701453145653700223440ustar00rootroot00000000000000# JSON Merge Patch The library supports JSON Merge Patch ([RFC 7386](https://tools.ietf.org/html/rfc7386)) as a patch format. The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value. Instead of using [JSON Pointer](json_pointer.md) to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified. ??? example The following code shows how a JSON Merge Patch is applied to a JSON document. ```cpp --8<-- "examples/merge_patch.cpp" ``` Output: ```json --8<-- "examples/merge_patch.output" ``` json-3.11.3/docs/mkdocs/docs/features/namespace.md000066400000000000000000000102511453145653700220200ustar00rootroot00000000000000# `nlohmann` Namespace The 3.11.0 release introduced an [inline namespace](https://en.cppreference.com/w/cpp/language/namespace#Inline_namespaces) to allow different parts of a codebase to safely use different versions of the JSON library as long as they never exchange instances of library types. ## Structure The complete default namespace name is derived as follows: - The root namespace is always `nlohmann`. - The inline namespace starts with `json_abi` and is followed by serveral optional ABI tags according to the value of these ABI-affecting macros, in order: - [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md) defined non-zero appends `_diag`. - [`JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON`](../api/macros/json_use_legacy_discarded_value_comparison.md) defined non-zero appends `_ldvcmp`. - The inline namespace ends with the suffix `_v` followed by the 3 components of the version number separated by underscores. To omit the version component, see [Disabling the version component](#disabling-the-version-component) below. For example, the namespace name for version 3.11.2 with `JSON_DIAGNOSTICS` defined to `1` is: ```cpp nlohmann::json_abi_diag_v3_11_2 ``` ## Purpose Several incompatibilities have been observed. Amongst the most common ones is linking code compiled with different definitions of [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md). This is illustrated in the diagram below. ```plantuml [**nlohmann_json (v3.10.5)**\nJSON_DIAGNOSTICS=0] as [json] [**nlohmann_json (v3.10.5)**\nJSON_DIAGNOSTICS=1] as [json_diag] [**some_library**] as [library] [**application**] as [app] [library] ..|> [json] [app] ..|> [json_diag] [app] ..|>[library] ``` In releases prior to 3.11.0, mixing any version of the JSON library with different `JSON_DIAGNOSTICS` settings would result in a crashing application. If `some_library` never passes instances of JSON library types to the application, this scenario became safe in version 3.11.0 and above due to the inline namespace yielding distinct symbol names. ## Limitations Neither the compiler nor the linker will issue as much as a warning when translation units – intended to be linked together and that include different versions and/or configurations of the JSON library – exchange and use library types. There is an exception when forward declarations are used (i.e., when including `json_fwd.hpp`) in which case the linker may complain about undefined references. ## Disabling the version component Different versions are not necessarily ABI-incompatible, but the project does not actively track changes in the ABI and recommends that all parts of a codebase exchanging library types be built with the same version. Users can, **at their own risk**, disable the version component of the linline namespace, allowing different versions – but not configurations – to be used in cases where the linker would otherwise output undefined reference errors. To do so, define [`NLOHMANN_JSON_NAMESPACE_NO_VERSION`](../api/macros/nlohmann_json_namespace_no_version.md) to `1`. This applies to version 3.11.2 and above only, versions 3.11.0 and 3.11.1 can apply the technique described in the next section to emulate the effect of the `NLOHMANN_JSON_NAMESPACE_NO_VERSION` macro. !!! danger "Use at your own risk" Disabling the namespace version component and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned! ## Disabling the inline namespace completely When interoperability with code using a pre-3.11.0 version of the library is required, users can, **at their own risk** restore the old namespace layout by redefining [`NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END`](../api/macros/nlohmann_json_namespace_begin.md) as follows: ```cpp #define NLOHMANN_JSON_NAMESPACE_BEGIN namespace nlohmann { #define NLOHMANN_JSON_NAMESPACE_END } ``` !!! danger "Use at your own risk" Overriding the namespace and mixing ABI-incompatible versions will result in crashes or incorrect behavior. You have been warned! ## Version history - Introduced inline namespace (`json_v3_11_0[_abi-tag]*`) in version 3.11.0. - Changed structure of inline namespace in version 3.11.2. json-3.11.3/docs/mkdocs/docs/features/object_order.md000066400000000000000000000051661453145653700225360ustar00rootroot00000000000000# Object Order The [JSON standard](https://tools.ietf.org/html/rfc8259.html) defines objects as "an unordered collection of zero or more name/value pairs". As such, an implementation does not need to preserve any specific order of object keys. ## Default behavior: sort keys The default type `nlohmann::json` uses a `std::map` to store JSON objects, and thus stores object keys **sorted alphabetically**. ??? example ```cpp #include #include "json.hpp" using json = nlohmann::json; int main() { json j; j["one"] = 1; j["two"] = 2; j["three"] = 3; std::cout << j.dump(2) << '\n'; } ``` Output: ```json { "one": 1, "three": 3, "two": 2 } ``` ## Alternative behavior: preserve insertion order If you do want to preserve the **insertion order**, you can try the type [`nlohmann::ordered_json`](https://github.com/nlohmann/json/issues/2179). ??? example ```cpp --8<-- "examples/ordered_json.cpp" ``` Output: ```json --8<-- "examples/ordered_json.output" ``` Alternatively, you can use a more sophisticated ordered map like [`tsl::ordered_map`](https://github.com/Tessil/ordered-map) ([integration](https://github.com/nlohmann/json/issues/546#issuecomment-304447518)) or [`nlohmann::fifo_map`](https://github.com/nlohmann/fifo_map) ([integration](https://github.com/nlohmann/json/issues/485#issuecomment-333652309)). ### Notes on parsing Note that you also need to call the right [`parse`](../api/basic_json/parse.md) function when reading from a file. Assume file `input.json` contains the JSON object above: ```json { "one": 1, "two": 2, "three": 3 } ``` !!! success "Right way" The following code correctly calls the `parse` function from `nlohmann::ordered_json`: ```cpp std::ifstream i("input.json"); auto j = nlohmann::ordered_json::parse(i); std::cout << j.dump(2) << std::endl; ``` The output will be: ```json { "one": 1, "two": 2, "three": 3 } ``` ??? failure "Wrong way" The following code incorrectly calls the `parse` function from `nlohmann::json` which does not preserve the insertion order, but sorts object keys. Assigning the result to `nlohmann::ordered_json` compiles, but does not restore the order from the input file. ```cpp std::ifstream i("input.json"); nlohmann::ordered_json j = nlohmann::json::parse(i); std::cout << j.dump(2) << std::endl; ``` The output will be: ```json { "one": 1, "three": 3 "two": 2, } ``` json-3.11.3/docs/mkdocs/docs/features/parsing/000077500000000000000000000000001453145653700212065ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/features/parsing/index.md000066400000000000000000000002371453145653700226410ustar00rootroot00000000000000# Parsing !!! note This page is under construction. ## Input ## SAX vs. DOM parsing ## Exceptions See [parsing and exceptions](parse_exceptions.md). json-3.11.3/docs/mkdocs/docs/features/parsing/json_lines.md000066400000000000000000000030011453145653700236650ustar00rootroot00000000000000# JSON Lines The [JSON Lines](https://jsonlines.org) format is a text format of newline-delimited JSON. In particular: 1. The input must be UTF-8 encoded. 2. Every line must be a valid JSON value. 3. The line separator must be `\n`. As `\r` is silently ignored, `\r\n` is also supported. 4. The final character may be `\n`, but is not required to be one. !!! example "JSON Text example" ```json {"name": "Gilbert", "wins": [["straight", "7♣"], ["one pair", "10♥"]]} {"name": "Alexa", "wins": [["two pair", "4♠"], ["two pair", "9♠"]]} {"name": "May", "wins": []} {"name": "Deloise", "wins": [["three of a kind", "5♣"]]} ``` JSON Lines input with more than one value is treated as invalid JSON by the [`parse`](../../api/basic_json/parse.md) or [`accept`](../../api/basic_json/accept.md) functions. To process it line by line, functions like [`std::getline`](https://en.cppreference.com/w/cpp/string/basic_string/getline) can be used: !!! example "Example: Parse JSON Text input line by line" The example below demonstrates how JSON Lines can be processed. ```cpp --8<-- "examples/json_lines.cpp" ``` Output: ```json --8<-- "examples/json_lines.output" ``` !!! warning "Note" Using [`operator>>`](../../api/operator_gtgt.md) like ```cpp json j; while (input >> j) { std::cout << j << std::endl; } ``` with a JSON Lines input does not work, because the parser will try to parse one value after the last one. json-3.11.3/docs/mkdocs/docs/features/parsing/parse_exceptions.md000066400000000000000000000066161453145653700251140ustar00rootroot00000000000000# Parsing and Exceptions When the input is not valid JSON, an exception of type [`parse_error`](../../home/exceptions.md#parse-errors) is thrown. This exception contains the position in the input where the error occurred, together with a diagnostic message and the last read input token. The exceptions page contains a [list of examples for parse error exceptions](../../home/exceptions.md#parse-errors). In case you process untrusted input, always enclose your code with a `#!cpp try`/`#!cpp catch` block, like ```cpp json j; try { j = json::parse(my_input); } catch (json::parse_error& ex) { std::cerr << "parse error at byte " << ex.byte << std::endl; } ``` In case exceptions are undesired or not supported by the environment, there are different ways to proceed: ## Switch off exceptions The `parse()` function accepts a `#!cpp bool` parameter `allow_exceptions` which controls whether an exception is thrown when a parse error occurs (`#!cpp true`, default) or whether a discarded value should be returned (`#!cpp false`). ```cpp json j = json::parse(my_input, nullptr, false); if (j.is_discarded()) { std::cerr << "parse error" << std::endl; } ``` Note there is no diagnostic information available in this scenario. ## Use accept() function Alternatively, function `accept()` can be used which does not return a `json` value, but a `#!cpp bool` indicating whether the input is valid JSON. ```cpp if (!json::accept(my_input)) { std::cerr << "parse error" << std::endl; } ``` Again, there is no diagnostic information available. ## User-defined SAX interface Finally, you can implement the [SAX interface](sax_interface.md) and decide what should happen in case of a parse error. This function has the following interface: ```cpp bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex); ``` The return value indicates whether the parsing should continue, so the function should usually return `#!cpp false`. ??? example ```cpp #include #include "json.hpp" using json = nlohmann::json; class sax_no_exception : public nlohmann::detail::json_sax_dom_parser { public: sax_no_exception(json& j) : nlohmann::detail::json_sax_dom_parser(j, false) {} bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) { std::cerr << "parse error at input byte " << position << "\n" << ex.what() << "\n" << "last read: \"" << last_token << "\"" << std::endl; return false; } }; int main() { std::string myinput = "[1,2,3,]"; json result; sax_no_exception sax(result); bool parse_result = json::sax_parse(myinput, &sax); if (!parse_result) { std::cerr << "parsing unsuccessful!" << std::endl; } std::cout << "parsed value: " << result << std::endl; } ``` Output: ``` parse error at input byte 8 [json.exception.parse_error.101] parse error at line 1, column 8: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal last read: "3,]" parsing unsuccessful! parsed value: [1,2,3] ``` json-3.11.3/docs/mkdocs/docs/features/parsing/parser_callbacks.md000066400000000000000000000073021453145653700250250ustar00rootroot00000000000000# Parser Callbacks ## Overview With a parser callback function, the result of parsing a JSON text can be influenced. When passed to `parse`, it is called on certain events (passed as `parse_event_t` via parameter `event`) with a set recursion depth `depth` and context JSON value `parsed`. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not. The type of the callback function is: ```cpp template using parser_callback_t = std::function; ``` ## Callback event types We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters `depth`, `event`, and `parsed`. | parameter `event` | description | parameter `depth` | parameter `parsed` | |-------------------------------|-----------------------------------------------------------|-------------------------------------------|----------------------------------| | `parse_event_t::object_start` | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded | | `parse_event_t::key` | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key | | `parse_event_t::object_end` | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object | | `parse_event_t::array_start` | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded | | `parse_event_t::array_end` | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array | | `parse_event_t::value` | the parser finished reading a JSON value | depth of the value | the parsed JSON value | ??? example When parsing the following JSON text, ```json { "name": "Berlin", "location": [ 52.519444, 13.406667 ] } ``` these calls are made to the callback function: | event | depth | parsed | | -------------- | ----- | ------ | | `object_start` | 0 | *discarded* | | `key` | 1 | `#!json "name"` | | `value` | 1 | `#!json "Berlin"` | | `key` | 1 | `#!json "location"` | | `array_start` | 1 | *discarded* | | `value` | 2 | `#!json 52.519444` | | `value` | 2 | `#!json 13.406667` | | `array_end` | 1 | `#!json [52.519444,13.406667]` | | `object_end` | 0 | `#!json {"location":[52.519444,13.406667],"name":"Berlin"}` | ## Return value Discarding a value (i.e., returning `#!c false`) has different effects depending on the context in which the function was called: - Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read. - In case a value outside a structured type is skipped, it is replaced with `#!json null`. This case happens if the top-level element is skipped. ??? example The example below demonstrates the `parse()` function with and without callback function. ```cpp --8<-- "examples/parse__string__parser_callback_t.cpp" ``` Output: ```json --8<-- "examples/parse__string__parser_callback_t.output" ``` json-3.11.3/docs/mkdocs/docs/features/parsing/sax_interface.md000066400000000000000000000063321453145653700243470ustar00rootroot00000000000000# SAX Interface The library uses a SAX-like interface with the following functions: ```plantuml interface json::sax_t { + {abstract} bool null() + {abstract} bool boolean(bool val) + {abstract} bool number_integer(number_integer_t val) + {abstract} bool number_unsigned(number_unsigned_t val) + {abstract} bool number_float(number_float_t val, const string_t& s) + {abstract} bool string(string_t& val) + {abstract} bool binary(binary_t& val) + {abstract} bool start_object(std::size_t elements) + {abstract} bool end_object() + {abstract} bool start_array(std::size_t elements) + {abstract} bool end_array() + {abstract} bool key(string_t& val) + {abstract} bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex) } ``` ```cpp // called when null is parsed bool null(); // called when a boolean is parsed; value is passed bool boolean(bool val); // called when a signed or unsigned integer number is parsed; value is passed bool number_integer(number_integer_t val); bool number_unsigned(number_unsigned_t val); // called when a floating-point number is parsed; value and original string is passed bool number_float(number_float_t val, const string_t& s); // called when a string is parsed; value is passed and can be safely moved away bool string(string_t& val); // called when a binary value is parsed; value is passed and can be safely moved away bool binary(binary& val); // called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known) bool start_object(std::size_t elements); bool end_object(); bool start_array(std::size_t elements); bool end_array(); // called when an object key is parsed; value is passed and can be safely moved away bool key(string_t& val); // called when a parse error occurs; byte position, the last token, and an exception is passed bool parse_error(std::size_t position, const std::string& last_token, const json::exception& ex); ``` The return value of each function determines whether parsing should proceed. To implement your own SAX handler, proceed as follows: 1. Implement the SAX interface in a class. You can use class `nlohmann::json_sax` as base class, but you can also use any class where the functions described above are implemented and public. 2. Create an object of your SAX interface class, e.g. `my_sax`. 3. Call `#!cpp bool json::sax_parse(input, &my_sax);` where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface. Note the `sax_parse` function only returns a `#!cpp bool` indicating the result of the last executed SAX event. It does not return `json` value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your `parse_error` implementation. Internally, the SAX interface is used for the DOM parser (class `json_sax_dom_parser`) as well as the acceptor (`json_sax_acceptor`), see file `json_sax.hpp`. ## See also - [json_sax](../../api/json_sax/index.md) - documentation of the SAX interface - [sax_parse](../../api/basic_json/sax_parse.md) - SAX parser json-3.11.3/docs/mkdocs/docs/features/types/000077500000000000000000000000001453145653700207075ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/features/types/index.md000066400000000000000000000306351453145653700223470ustar00rootroot00000000000000# Types This page gives an overview how JSON values are stored and how this can be configured. ## Overview By default, JSON values are stored as follows: | JSON type | C++ type | |-----------|-----------------------------------------------| | object | `std::map` | | array | `std::vector` | | null | `std::nullptr_t` | | string | `std::string` | | boolean | `bool` | | number | `std::int64_t`, `std::uint64_t`, and `double` | Note there are three different types for numbers - when parsing JSON text, the best fitting type is chosen. ## Storage ```plantuml enum value_t { null object array string boolean number_integer number_unsigned number_float binary discarded } class json_value << (U,orchid) >> { object_t* object array_t* array string_t* string binary_t* binary boolean_t boolean number_integer_t number_integer number_unsigned_t number_unsigned number_float_t number_float } class basic_json { -- type and value -- value_t m_type json_value m_value -- derived types -- + typedef object_t + typedef array_t + typedef binary_t + typedef boolean_t + typedef number_integer_t + typedef number_unsigned_t + typedef number_float_t } basic_json .. json_value basic_json .. value_t ``` ## Template arguments The data types to store a JSON value are derived from the template arguments passed to class `basic_json`: ```cpp template< template class ObjectType = std::map, template class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template class AllocatorType = std::allocator, template class JSONSerializer = adl_serializer, class BinaryType = std::vector > class basic_json; ``` Type `json` is an alias for `basic_json<>` and uses the default types. From the template arguments, the following types are derived: ```cpp using object_comparator_t = std::less<>; using object_t = ObjectType>>; using array_t = ArrayType>; using string_t = StringType; using boolean_t = BooleanType; using number_integer_t = NumberIntegerType; using number_unsigned_t = NumberUnsignedType; using number_float_t = NumberFloatType; using binary_t = nlohmann::byte_container_with_subtype; ``` ## Objects [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON objects as follows: > An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array. ### Default type With the default values for *ObjectType* (`std::map`), *StringType* (`std::string`), and *AllocatorType* (`std::allocator`), the default value for `object_t` is: ```cpp std::map< std::string, // key_type basic_json, // value_type std::less<>, // key_compare std::allocator> // allocator_type > ``` ### Behavior The choice of `object_t` influences the behavior of the JSON class. With the default type, objects have the following behavior: - When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings. - When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, `#!json {"key": 2, "key": 1}` could be equal to either `#!json {"key": 1}` or `#!json {"key": 2}`. - Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see `dump`) in this order. For instance, both `#!json {"b": 1, "a": 2}` and `#!json {"a": 2, "b": 1}` will be stored and serialized as `#!json {"a": 2, "b": 1}`. - When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, `#!json {"b": 1, "a": 2}` and `#!json {"a": 2, "b": 1}` will be treated as equal. ### Key order The order name/value pairs are added to the object is *not* preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as `std::map` with `std::less` is used by default. Please note this behavior conforms to [RFC 8259](https://tools.ietf.org/html/rfc8259), because any order implements the specified "unordered" nature of JSON objects. ### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the maximum depth of nesting. In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the `max_size` function of a JSON object. ### Storage Objects are stored as pointers in a `basic_json` type. That is, for any access to object values, a pointer of type `object_t*` must be dereferenced. ## Arrays [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON arrays as follows: > An array is an ordered sequence of zero or more values. ### Default type With the default values for *ArrayType* (`std::vector`) and *AllocatorType* (`std::allocator`), the default value for `array_t` is: ```cpp std::vector< basic_json, // value_type std::allocator // allocator_type > ``` ### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the maximum depth of nesting. In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the `max_size` function of a JSON array. ### Storage Arrays are stored as pointers in a `basic_json` type. That is, for any access to array values, a pointer of type `array_t*` must be dereferenced. ## Strings [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON strings as follows: > A string is a sequence of zero or more Unicode characters. Unicode values are split by the JSON class into byte-sized characters during deserialization. ### Default type With the default values for *StringType* (`std::string`), the default value for `string_t` is `#!cpp std::string`. ### Encoding Strings are stored in UTF-8 encoding. Therefore, functions like `std::string::size()` or `std::string::length()` return the number of **bytes** in the string rather than the number of characters or glyphs. ### String comparison [RFC 8259](https://tools.ietf.org/html/rfc8259) states: > Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that `"a\\b"` and `"a\u005Cb"` are not equal. This implementation is interoperable as it does compare strings code unit by code unit. ### Storage String values are stored as pointers in a `basic_json` type. That is, for any access to string values, a pointer of type `string_t*` must be dereferenced. ## Booleans [RFC 8259](https://tools.ietf.org/html/rfc8259) implicitly describes a boolean as a type which differentiates the two literals `true` and `false`. ### Default type With the default values for *BooleanType* (`#!cpp bool`), the default value for `boolean_t` is `#!cpp bool`. ### Storage Boolean values are stored directly inside a `basic_json` type. ## Numbers See the [number handling](number_handling.md) article for a detailed discussion on how numbers are handled by this library. [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: > The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted. This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, `number_integer_t`, `number_unsigned_t`, and `number_float_t` are used. ### Default types With the default values for *NumberIntegerType* (`std::int64_t`), the default value for `number_integer_t` is `std::int64_t`. With the default values for *NumberUnsignedType* (`std::uint64_t`), the default value for `number_unsigned_t` is `std::uint64_t`. With the default values for *NumberFloatType* (`#!cpp double`), the default value for `number_float_t` is `#!cpp double`. ### Default behavior - The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal `#!c 010` will be serialized to `#!c 8`. During deserialization, leading zeros yield an error. - Not-a-number (NaN) values will be serialized to `#!json null`. ### Limits [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: > An implementation may set limits on the range and precision of numbers. When the default type is used, the maximal integer number that can be stored is `#!c 9223372036854775807` (`INT64_MAX`) and the minimal integer number that can be stored is `#!c -9223372036854775808` (`INT64_MIN`). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as `number_unsigned_t` or `number_float_t`. When the default type is used, the maximal unsigned integer number that can be stored is `#!c 18446744073709551615` (`UINT64_MAX`) and the minimal integer number that can be stored is `#!c 0`. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as `number_integer_t` or `number_float_t`. [RFC 8259](https://tools.ietf.org/html/rfc8259) further states: > Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are interoperable in the sense that implementations will agree exactly on their numeric values. As this range is a subrange of the exactly supported range [`INT64_MIN`, `INT64_MAX`], this class's integer type is interoperable. [RFC 8259](https://tools.ietf.org/html/rfc8259) states: > This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision. This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than `#!c -1.79769313486232e+308` and values greater than `#!c 1.79769313486232e+308` will be stored as NaN internally and be serialized to `#!json null`. ### Storage Integer number values, unsigned integer number values, and floating-point number values are stored directly inside a `basic_json` type. json-3.11.3/docs/mkdocs/docs/features/types/number_handling.md000066400000000000000000000353741453145653700244010ustar00rootroot00000000000000# Number Handling This document describes how the library is handling numbers. ## Background This section briefly summarizes how the JSON specification describes how numbers should be handled. ### JSON number syntax JSON defines the syntax of numbers as follows: !!! quote "[RFC 8259](https://tools.ietf.org/html/rfc8259#section-6), Section 6" The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. A fraction part is a decimal point followed by one or more digits. An exponent part begins with the letter E in uppercase or lowercase, which may be followed by a plus or minus sign. The E and optional sign are followed by one or more digits. The following railroad diagram from [json.org](https://json.org) visualizes the number syntax: ![Syntax for JSON numbers](../../images/json_syntax_number.png) ### Number interoperability On number interoperability, the following remarks are made: !!! quote "[RFC 8259](https://tools.ietf.org/html/rfc8259#section-6), Section 6" This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754 binary64 (double precision) numbers [IEEE754] is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision. A JSON number such as 1E400 or 3.141592653589793238462643383279 may indicate potential interoperability problems, since it suggests that the software that created it expects receiving software to have greater capabilities for numeric magnitude and precision than is widely available. Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are interoperable in the sense that implementations will agree exactly on their numeric values. ## Library implementation This section describes how the above number specification is implemented by this library. ### Number storage In the default [`json`](../../api/json.md) type, numbers are stored as `#!c std::uint64_t`, `#!c std::int64_t`, and `#!c double`, respectively. Thereby, `#!c std::uint64_t` and `#!c std::int64_t` are used only if they can store the number without loss of precision. If this is impossible (e.g., if the number is too large), the number is stored as `#!c double`. !!! info "Notes" - Numbers with a decimal digit or scientific notation are always stored as `#!c double`. - The number types can be changed, see [Template number types](#template-number-types). - As of version 3.9.1, the conversion is realized by [`std::strtoull`](https://en.cppreference.com/w/cpp/string/byte/strtoul), [`std::strtoll`](https://en.cppreference.com/w/cpp/string/byte/strtol), and [`std::strtod`](https://en.cppreference.com/w/cpp/string/byte/strtof), respectively. !!! example "Examples" - Integer `#!c -12345678912345789123456789` is smaller than `#!c INT64_MIN` and will be stored as floating-point number `#!c -1.2345678912345788e+25`. - Integer `#!c 1E3` will be stored as floating-point number `#!c 1000.0`. ### Number limits - Any 64-bit signed or unsigned integer can be stored without loss of precision. - Numbers exceeding the limits of `#!c double` (i.e., numbers that after conversion via [`std::strtod`](https://en.cppreference.com/w/cpp/string/byte/strtof) are not satisfying [`std::isfinite`](https://en.cppreference.com/w/cpp/numeric/math/isfinite) such as `#!c 1E400`) will throw exception [`json.exception.out_of_range.406`](../../home/exceptions.md#jsonexceptionout_of_range406) during parsing. - Floating-point numbers are rounded to the next number representable as `double`. For instance `#!c 3.141592653589793238462643383279` is stored as [`0x400921fb54442d18`](https://float.exposed/0x400921fb54442d18). This is the same behavior as the code `#!c double x = 3.141592653589793238462643383279;`. !!! success "Interoperability" - The library interoperable with respect to the specification, because its supported range $[-2^{63}, 2^{64}-1]$ is larger than the described range $[-2^{53}+1, 2^{53}-1]$. - All integers outside the range $[-2^{63}, 2^{64}-1]$, as well as floating-point numbers are stored as `double`. This also concurs with the specification above. ### Zeros The JSON number grammar allows for different ways to express zero, and this library will store zeros differently: | Literal | Stored value and type | Serialization | |---------|------------------------|---------------| | `0` | `#!c std::uint64_t(0)` | `0` | | `-0` | `#!c std::int64_t(0)` | `0` | | `0.0` | `#!c double(0.0)` | `0.0` | | `-0.0` | `#!c double(-0.0)` | `-0.0` | | `0E0` | `#!c double(0.0)` | `0.0` | | `-0E0` | `#!c double(-0.0)` | `-0.0` | That is, `-0` is stored as a signed integer, but the serialization does not reproduce the `-`. ### Number serialization - Integer numbers are serialized as is; that is, no scientific notation is used. - Floating-point numbers are serialized as specified by the `#!c %g` printf modifier with [`std::numeric_limits::max_digits10`](https://en.cppreference.com/w/cpp/types/numeric_limits/max_digits10) significant digits. The rationale is to use the shortest representation while still allow round-tripping. !!! hint "Notes regarding precision of floating-point numbers" As described above, floating-point numbers are rounded to the nearest double and serialized with the shortest representation to allow round-tripping. This can yield confusing examples: - The serialization can have fewer decimal places than the input: `#!c 2555.5599999999999` will be serialized as `#!c 2555.56`. The reverse can also be true. - The serialization can be in scientific notation even if the input is not: `#!c 0.0000972439793401814` will be serialized as `#!c 9.72439793401814e-05`. The reverse can also be true: `#!c 12345E-5` will be serialized as `#!c 0.12345`. - Conversions from `#!c float` to `#!c double` can also introduce rounding errors: ```cpp float f = 0.3; json j = f; std::cout << j << '\n'; ``` yields `#!c 0.30000001192092896`. All examples here can be reproduced by passing the original double value to ```cpp std::printf("%.*g\n", std::numeric_limits::max_digits10, double_value); ``` #### NaN handling NaN (not-a-number) cannot be expressed with the number syntax described above and are in fact explicitly excluded: !!! quote "[RFC 8259](https://tools.ietf.org/html/rfc8259#section-6), Section 6" Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted. That is, there is no way to *parse* a NaN value. However, NaN values can be stored in a JSON value by assignment. This library serializes NaN values as `#!js null`. This corresponds to the behavior of JavaScript's [`JSON.stringify`](https://www.w3schools.com/js/js_json_stringify.asp) function. !!! example The following example shows how a NaN value is stored in a `json` value. ```cpp int main() { double val = std::numeric_limits::quiet_NaN(); std::cout << "val=" << val << std::endl; json j = val; std::cout << "j=" << j.dump() << std::endl; val = j; std::cout << "val=" << val << std::endl; } ``` output: ``` val=nan j=null val=nan ``` ### Number comparison Floating-point inside JSON values numbers are compared with `#!c json::number_float_t::operator==` which is `#!c double::operator==` by default. !!! example "Alternative comparison functions" To compare floating-point while respecting an epsilon, an alternative [comparison function](https://github.com/mariokonrad/marnav/blob/master/include/marnav/math/floatingpoint.hpp#L34-#L39) could be used, for instance ```cpp template::value, T>::type> inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept { return std::abs(a - b) <= epsilon; } ``` Or you can self-define an operator equal function like this: ```cpp bool my_equal(const_reference lhs, const_reference rhs) { const auto lhs_type lhs.type(); const auto rhs_type rhs.type(); if (lhs_type == rhs_type) { switch(lhs_type) { // self_defined case case value_t::number_float: return std::abs(lhs - rhs) <= std::numeric_limits::epsilon(); // other cases remain the same with the original ... } } ... } ``` (see [#703](https://github.com/nlohmann/json/issues/703) for more information.) !!! note NaN values never compare equal to themselves or to other NaN values. See [#514](https://github.com/nlohmann/json/issues/514). ### Number conversion Just like the C++ language itself, the `get` family of functions allows conversions between unsigned and signed integers, and between integers and floating-point values to integers. This behavior may be surprising. !!! warning "Unconditional number conversions" ```cpp hl_lines="3" double d = 42.3; // non-integer double value 42.3 json jd = d; // stores double value 42.3 std::int64_t i = jd.template get(); // now i==42; no warning or error is produced ``` Note the last line with throw a [`json.exception.type_error.302`](../../home/exceptions.md#jsonexceptiontype_error302) exception if `jd` is not a numerical type, for instance a string. The rationale is twofold: 1. JSON does not define a number type or precision (see above). 2. C++ also allows to silently convert between number types. !!! success "Conditional number conversion" The code above can be solved by explicitly checking the nature of the value with members such as [`is_number_integer()`](../../api/basic_json/is_number_integer.md) or [`is_number_unsigned()`](../../api/basic_json/is_number_unsigned.md): ```cpp hl_lines="2" // check if jd is really integer-valued if (jd.is_number_integer()) { // if so, do the conversion and use i std::int64_t i = jd.template get(); // ... } else { // otherwise, take appropriate action // ... } ``` Note this approach also has the advantage that it can react on non-numerical JSON value types such as strings. (Example taken from [#777](https://github.com/nlohmann/json/issues/777#issuecomment-459968458).) ### Determine number types As the example in [Number conversion](#number-conversion) shows, there are different functions to determine the type of the stored number: - [`is_number()`](../../api/basic_json/is_number.md) returns `#!c true` for any number type - [`is_number_integer()`](../../api/basic_json/is_number_integer.md) returns `#!c true` for signed and unsigned integers - [`is_number_unsigned()`](../../api/basic_json/is_number_unsigned.md) returns `#!c true` for unsigned integers only - [`is_number_float()`](../../api/basic_json/is_number_float.md) returns `#!c true` for floating-point numbers - [`type_name()`](../../api/basic_json/type_name.md) returns `#!c "number"` for any number type - [`type()`](../../api/basic_json/type.md) returns a different enumerator of [`value_t`](../../api/basic_json/value_t.md) for all number types | function | unsigned integer | signed integer | floating-point | string | |----------------------------------------------------------------------|-------------------|------------------|----------------|----------------| | [`is_number()`](../../api/basic_json/is_number.md) | `#!c true` | `#!c true` | `#!c true` | `#!c false` | | [`is_number_integer()`](../../api/basic_json/is_number_integer.md) | `#!c true` | `#!c true` | `#!c false` | `#!c false` | | [`is_number_unsigned()`](../../api/basic_json/is_number_unsigned.md) | `#!c true` | `#!c false` | `#!c false` | `#!c false` | | [`is_number_float()`](../../api/basic_json/is_number_float.md) | `#!c false` | `#!c false` | `#!c true` | `#!c false` | | [`type_name()`](../../api/basic_json/type_name.md) | `#!c "number"` | `#!c "number"` | `#!c "number"` | `#!c "string"` | | [`type()`](../../api/basic_json/type.md) | `number_unsigned` | `number_integer` | `number_float` | `string` | ### Template number types The number types can be changed with template parameters. | position | number type | default type | possible values | |----------|-------------------|---------------------|------------------------------------------------| | 5 | signed integers | `#!c std::int64_t` | `#!c std::int32_t`, `#!c std::int16_t`, etc. | | 6 | unsigned integers | `#!c std::uint64_t` | `#!c std::uint32_t`, `#!c std::uint16_t`, etc. | | 7 | floating-point | `#!c double` | `#!c float`, `#!c long double` | !!! info "Constraints on number types" - The type for signed integers must be convertible from `#!c long long`. The type for floating-point numbers is used in case of overflow. - The type for unsigned integers must be convertible from `#!c unsigned long long`. The type for floating-point numbers is used in case of overflow. - The types for signed and unsigned integers must be distinct, see [#2573](https://github.com/nlohmann/json/issues/2573). - Only `#!c double`, `#!c float`, and `#!c long double` are supported for floating-point numbers. !!! example A `basic_json` type that uses `#!c long double` as floating-point type. ```cpp hl_lines="2" using json_ld = nlohmann::basic_json; ``` Note values should then be parsed with `json_ld::parse` rather than `json::parse` as the latter would parse floating-point values to `#!c double` before then converting them to `#!c long double`. json-3.11.3/docs/mkdocs/docs/home/000077500000000000000000000000001453145653700166555ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/home/code_of_conduct.md000066400000000000000000000062151453145653700223200ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mail@nlohmann.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ json-3.11.3/docs/mkdocs/docs/home/design_goals.md000066400000000000000000000046651453145653700216500ustar00rootroot00000000000000# Design goals There are myriads of [JSON](https://json.org) libraries out there, and each may even have its reason to exist. Our class had these design goals: - **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples), and you'll know what I mean. - **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. - **Serious testing**. Our class is heavily [unit-tested](https://github.com/nlohmann/json/tree/develop/test/src) and covers [100%](https://coveralls.io/r/nlohmann/json) of the code, including all exceptional behavior. Furthermore, we checked with [Valgrind](http://valgrind.org) and the [Clang Sanitizers](https://clang.llvm.org/docs/index.html) that there are no memory leaks. [Google OSS-Fuzz](https://github.com/google/oss-fuzz/tree/master/projects/json) additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the [Core Infrastructure Initiative (CII) best practices](https://bestpractices.coreinfrastructure.org/projects/289). Other aspects were not so important to us: - **Memory efficiency**. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: `std::string` for strings, `int64_t`, `uint64_t` or `double` for numbers, `std::map` for objects, `std::vector` for arrays, and `bool` for Booleans. However, you can template the generalized class `basic_json` to your needs. - **Speed**. There are certainly [faster JSON libraries](https://github.com/miloyip/nativejson-benchmark#parsing-time) out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a `std::vector` or `std::map`, you are already set. See the [contribution guidelines](https://github.com/nlohmann/json/blob/master/.github/CONTRIBUTING.md#please-dont) for more information. json-3.11.3/docs/mkdocs/docs/home/exceptions.md000066400000000000000000000666611453145653700213770ustar00rootroot00000000000000# Exceptions ## Overview ### Base type All exceptions inherit from class `json::exception` (which in turn inherits from `std::exception`). It is used as the base class for all exceptions thrown by the `basic_json` class. This class can hence be used as "wildcard" to catch exceptions. ```plantuml std::exception <|-- json::exception json::exception <|-- json::parse_error json::exception <|-- json::invalid_iterator json::exception <|-- json::type_error json::exception <|-- json::out_of_range json::exception <|-- json::other_error interface std::exception {} class json::exception { + const int id + const char* what() const } class json::parse_error { + const std::size_t byte } ``` ### Switch off exceptions Exceptions are used widely within the library. They can, however, be switched off with either using the compiler flag `-fno-exceptions` or by defining the symbol [`JSON_NOEXCEPTION`](../api/macros/json_noexception.md). In this case, exceptions are replaced by `abort()` calls. You can further control this behavior by defining `JSON_THROW_USER` (overriding `#!cpp throw`), `JSON_TRY_USER` (overriding `#!cpp try`), and `JSON_CATCH_USER` (overriding `#!cpp catch`). Note that [`JSON_THROW_USER`](../api/macros/json_throw_user.md) should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior. ??? example The code below switches off exceptions and creates a log entry with a detailed error message in case of errors. ```cpp #include #define JSON_TRY_USER if(true) #define JSON_CATCH_USER(exception) if(false) #define JSON_THROW_USER(exception) \ {std::clog << "Error in " << __FILE__ << ":" << __LINE__ \ << " (function " << __FUNCTION__ << ") - " \ << (exception).what() << std::endl; \ std::abort();} #include ``` Note the explanatory [`what()`](https://en.cppreference.com/w/cpp/error/exception/what) string of exceptions is not available for MSVC if exceptions are disabled, see [#2824](https://github.com/nlohmann/json/discussions/2824). See [documentation of `JSON_TRY_USER`, `JSON_CATCH_USER` and `JSON_THROW_USER`](../api/macros/json_throw_user.md) for more information. ### Extended diagnostic messages Exceptions in the library are thrown in the local context of the JSON value they are detected. This makes detailed diagnostics messages, and hence debugging, difficult. ??? example ```cpp --8<-- "examples/diagnostics_standard.cpp" ``` Output: ``` --8<-- "examples/diagnostics_standard.output" ``` This exception can be hard to debug if storing the value `#!c "12"` and accessing it is further apart. To create better diagnostics messages, each JSON value needs a pointer to its parent value such that a global context (i.e., a path from the root value to the value that lead to the exception) can be created. That global context is provided as [JSON Pointer](../features/json_pointer.md). As this global context comes at the price of storing one additional pointer per JSON value and runtime overhead to maintain the parent relation, extended diagnostics are disabled by default. They can, however, be enabled by defining the preprocessor symbol [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md) to `1` before including `json.hpp`. ??? example ```cpp --8<-- "examples/diagnostics_extended.cpp" ``` Output: ``` --8<-- "examples/diagnostics_extended.output" ``` Now the exception message contains a JSON Pointer `/address/housenumber` that indicates which value has the wrong type. See [documentation of `JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md) for more information. ## Parse errors This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch. Exceptions have ids 1xx. !!! info "Byte index" Member `byte` holds the byte index of the last read character in the input file. For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack). ??? example The following code shows how a `parse_error` exception can be caught. ```cpp --8<-- "examples/parse_error.cpp" ``` Output: ``` --8<-- "examples/parse_error.output" ``` ### json.exception.parse_error.101 This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member `byte` indicates the error position. !!! failure "Example message" Input ended prematurely: ``` [json.exception.parse_error.101] parse error at 2: unexpected end of input; expected string literal ``` No input: ``` [json.exception.parse_error.101] parse error at line 1, column 1: attempting to parse an empty input; check that your input string or stream contains the expected JSON ``` Control character was not escaped: ``` [json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \u0009 or \\; last read: '"'" ``` String was not closed: ``` [json.exception.parse_error.101] parse error at line 1, column 2: syntax error while parsing value - invalid string: missing closing quote; last read: '"' ``` Invalid number format: ``` [json.exception.parse_error.101] parse error at line 1, column 3: syntax error while parsing value - invalid number; expected '+', '-', or digit after exponent; last read: '1E' ``` `\u` was not be followed by four hex digits: ``` [json.exception.parse_error.101] parse error at line 1, column 6: syntax error while parsing value - invalid string: '\u' must be followed by 4 hex digits; last read: '"\u01"' ``` Invalid UTF-8 surrogate pair: ``` [json.exception.parse_error.101] parse error at line 1, column 13: syntax error while parsing value - invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF; last read: '"\uD7FF\uDC00'" ``` Invalid UTF-8 byte: ``` [json.exception.parse_error.101] parse error at line 3, column 24: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '"vous \352t' ``` !!! tip - Make sure the input is correctly read. Try to write the input to standard output to check if, for instance, the input file was successfully opened. - Paste the input to a JSON validator like or a tool like [jq](https://stedolan.github.io/jq/). ### json.exception.parse_error.102 JSON uses the `\uxxxx` format to describe Unicode characters. Code points above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. !!! failure "Example message" ``` parse error at 14: missing or wrong low surrogate ``` !!! note This exception is not used any more. Instead [json.exception.parse_error.101](#jsonexceptionparse_error101) with a more detailed description is used. ### json.exception.parse_error.103 Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. !!! failure "Example message" ``` parse error: code points above 0x10FFFF are invalid ``` !!! note This exception is not used any more. Instead [json.exception.parse_error.101](#jsonexceptionparse_error101) with a more detailed description is used. ### json.exception.parse_error.104 [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. !!! failure "Example message" ``` [json.exception.parse_error.104] parse error: JSON patch must be an array of objects ``` ### json.exception.parse_error.105 An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. !!! failure "Example message" ``` [json.exception.parse_error.105] parse error: operation 'add' must have member 'value' ``` ``` [json.exception.parse_error.105] parse error: operation 'copy' must have string member 'from' ``` ``` [json.exception.parse_error.105] parse error: operation value 'foo' is invalid ``` ### json.exception.parse_error.106 An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. !!! failure "Example message" ``` [json.exception.parse_error.106] parse error: array index '01' must not begin with '0' ``` ### json.exception.parse_error.107 A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. !!! failure "Example message" ``` [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'foo' ``` ### json.exception.parse_error.108 In a JSON Pointer, only `~0` and `~1` are valid escape sequences. !!! failure "Example message" ``` [json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1' ``` ### json.exception.parse_error.109 A JSON Pointer array index must be a number. !!! failure "Example messages" ``` [json.exception.parse_error.109] parse error: array index 'one' is not a number ``` ``` [json.exception.parse_error.109] parse error: array index '+1' is not a number ``` ### json.exception.parse_error.110 When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. !!! failure "Example message" ``` [json.exception.parse_error.110] parse error at byte 5: syntax error while parsing CBOR string: unexpected end of input ``` ``` [json.exception.parse_error.110] parse error at byte 2: syntax error while parsing UBJSON value: expected end of input; last byte: 0x5A ``` ### json.exception.parse_error.112 An unexpected byte was read in a [binary format](../features/binary_formats/index.md) or length information is invalid ([BSON](../features/binary_formats/bson.md)). !!! failure "Example messages" ``` [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing CBOR value: invalid byte: 0x1C ``` ``` [json.exception.parse_error.112] parse error at byte 1: syntax error while parsing MessagePack value: invalid byte: 0xC1 ``` ``` [json.exception.parse_error.112] parse error at byte 4: syntax error while parsing BJData size: expected '#' after type information; last byte: 0x02 ``` ``` [json.exception.parse_error.112] parse error at byte 4: syntax error while parsing UBJSON size: expected '#' after type information; last byte: 0x02 ``` ``` [json.exception.parse_error.112] parse error at byte 10: syntax error while parsing BSON string: string length must be at least 1, is -2147483648 ``` ``` [json.exception.parse_error.112] parse error at byte 15: syntax error while parsing BSON binary: byte array length cannot be negative, is -1 ``` ### json.exception.parse_error.113 While parsing a map key, a value that is not a string has been read. !!! failure "Example messages" ``` [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing CBOR string: expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0xFF ``` ``` [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing MessagePack string: expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0xFF ``` ``` [json.exception.parse_error.113] parse error at byte 2: syntax error while parsing UBJSON char: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82 ``` ### json.exception.parse_error.114 The parsing of the corresponding BSON record type is not implemented (yet). !!! failure "Example message" ``` [json.exception.parse_error.114] parse error at byte 5: Unsupported BSON record type 0xFF ``` ### json.exception.parse_error.115 A UBJSON high-precision number could not be parsed. !!! failure "Example message" ``` [json.exception.parse_error.115] parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A ``` ## Iterator errors This exception is thrown if iterators passed to a library function do not match the expected semantics. Exceptions have ids 2xx. ??? example The following code shows how an `invalid_iterator` exception can be caught. ```cpp --8<-- "examples/invalid_iterator.cpp" ``` Output: ``` --8<-- "examples/invalid_iterator.output" ``` ### json.exception.invalid_iterator.201 The iterators passed to constructor `basic_json(InputIT first, InputIT last)` are not compatible, meaning they do not belong to the same container. Therefore, the range (`first`, `last`) is invalid. !!! failure "Example message" ``` [json.exception.invalid_iterator.201] iterators are not compatible ``` ### json.exception.invalid_iterator.202 In the [erase](../api/basic_json/erase.md) or insert function, the passed iterator `pos` does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. !!! failure "Example messages" ``` [json.exception.invalid_iterator.202] iterator does not fit current value ``` ``` [json.exception.invalid_iterator.202] iterators first and last must point to objects ``` ### json.exception.invalid_iterator.203 Either iterator passed to function [`erase(IteratorType first, IteratorType last`)](../api/basic_json/erase.md) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. !!! failure "Example message" ``` [json.exception.invalid_iterator.203] iterators do not fit current value ``` ### json.exception.invalid_iterator.204 When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an [erase](../api/basic_json/erase.md) function, this range has to be exactly (`begin(),` `end()),` because this is the only way the single stored value is expressed. All other ranges are invalid. !!! failure "Example message" ``` [json.exception.invalid_iterator.204] iterators out of range ``` ### json.exception.invalid_iterator.205 When an iterator for a primitive type (number, boolean, or string) is passed to an [erase](../api/basic_json/erase.md) function, the iterator has to be the `begin()` iterator, because it is the only way to address the stored value. All other iterators are invalid. !!! failure "Example message" ``` [json.exception.invalid_iterator.205] iterator out of range ``` ### json.exception.invalid_iterator.206 The iterators passed to constructor `basic_json(InputIT first, InputIT last)` belong to a JSON null value and hence to not define a valid range. !!! failure "Example message" ``` [json.exception.invalid_iterator.206] cannot construct with iterators from null ``` ### json.exception.invalid_iterator.207 The `key()` member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. !!! failure "Example message" ``` [json.exception.invalid_iterator.207] cannot use key() for non-object iterators ``` ### json.exception.invalid_iterator.208 The `operator[]` to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. !!! failure "Example message" ``` [json.exception.invalid_iterator.208] cannot use operator[] for object iterators ``` ### json.exception.invalid_iterator.209 The offset operators (`+`, `-`, `+=`, `-=`) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. !!! failure "Example message" ``` [json.exception.invalid_iterator.209] cannot use offsets with object iterators ``` ### json.exception.invalid_iterator.210 The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (`first`, `last`) is invalid. !!! failure "Example message" ``` [json.exception.invalid_iterator.210] iterators do not fit ``` ### json.exception.invalid_iterator.211 The iterator range passed to the insert function must not be a subrange of the container to insert to. !!! failure "Example message" ``` [json.exception.invalid_iterator.211] passed iterators may not belong to container ``` ### json.exception.invalid_iterator.212 When two iterators are compared, they must belong to the same container. !!! failure "Example message" ``` [json.exception.invalid_iterator.212] cannot compare iterators of different containers ``` ### json.exception.invalid_iterator.213 The order of object iterators cannot be compared, because JSON objects are unordered. !!! failure "Example message" ``` [json.exception.invalid_iterator.213] cannot compare order of object iterators ``` ### json.exception.invalid_iterator.214 Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to `begin()`. !!! failure "Example message" ``` [json.exception.invalid_iterator.214] cannot get value ``` ## Type errors This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics. Exceptions have ids 3xx. ??? example The following code shows how a `type_error` exception can be caught. ```cpp --8<-- "examples/type_error.cpp" ``` Output: ``` --8<-- "examples/type_error.output" ``` ### json.exception.type_error.301 To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. !!! failure "Example message" ``` [json.exception.type_error.301] cannot create object from initializer list ``` ### json.exception.type_error.302 During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. !!! failure "Example messages" ``` [json.exception.type_error.302] type must be object, but is null ``` ``` [json.exception.type_error.302] type must be string, but is object ``` ### json.exception.type_error.303 To retrieve a reference to a value stored in a `basic_json` object with `get_ref`, the type of the reference must match the value type. For instance, for a JSON array, the `ReferenceType` must be `array_t &`. !!! failure "Example messages" ``` [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is object ``` ``` [json.exception.type_error.303] incompatible ReferenceType for get_ref, actual type is number" ``` ### json.exception.type_error.304 The `at()` member functions can only be executed for certain JSON types. !!! failure "Example messages" ``` [json.exception.type_error.304] cannot use at() with string ``` ``` [json.exception.type_error.304] cannot use at() with number ``` ### json.exception.type_error.305 The `operator[]` member functions can only be executed for certain JSON types. !!! failure "Example messages" ``` [json.exception.type_error.305] cannot use operator[] with a string argument with array ``` ``` [json.exception.type_error.305] cannot use operator[] with a numeric argument with object ``` ### json.exception.type_error.306 The `value()` member functions can only be executed for certain JSON types. !!! failure "Example message" ``` [json.exception.type_error.306] cannot use value() with number ``` ### json.exception.type_error.307 The [`erase()`](../api/basic_json/erase.md) member functions can only be executed for certain JSON types. !!! failure "Example message" ``` [json.exception.type_error.307] cannot use erase() with string ``` ### json.exception.type_error.308 The `push_back()` and `operator+=` member functions can only be executed for certain JSON types. !!! failure "Example message" ``` [json.exception.type_error.308] cannot use push_back() with string ``` ### json.exception.type_error.309 The `insert()` member functions can only be executed for certain JSON types. !!! failure "Example messages" ``` [json.exception.type_error.309] cannot use insert() with array ``` ``` [json.exception.type_error.309] cannot use insert() with number ``` ### json.exception.type_error.310 The `swap()` member functions can only be executed for certain JSON types. !!! failure "Example message" ``` [json.exception.type_error.310] cannot use swap() with number ``` ### json.exception.type_error.311 The `emplace()` and `emplace_back()` member functions can only be executed for certain JSON types. !!! failure "Example messages" ``` [json.exception.type_error.311] cannot use emplace() with number ``` ``` [json.exception.type_error.311] cannot use emplace_back() with number ``` ### json.exception.type_error.312 The `update()` member functions can only be executed for certain JSON types. !!! failure "Example message" ``` [json.exception.type_error.312] cannot use update() with array ``` ### json.exception.type_error.313 The `unflatten` function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well-defined. !!! failure "Example message" ``` [json.exception.type_error.313] invalid value to unflatten ``` ### json.exception.type_error.314 The `unflatten` function only works for an object whose keys are JSON Pointers. !!! failure "Example message" Calling `unflatten()` on an array `#!json [1,2,3]`: ``` [json.exception.type_error.314] only objects can be unflattened ``` ### json.exception.type_error.315 The `unflatten()` function only works for an object whose keys are JSON Pointers and whose values are primitive. !!! failure "Example message" Calling `unflatten()` on an object `#!json {"/1", [1,2,3]}`: ``` [json.exception.type_error.315] values in object must be primitive ``` ### json.exception.type_error.316 The `dump()` function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. !!! failure "Example message" Calling `dump()` on a JSON value containing an ISO 8859-1 encoded string: ``` [json.exception.type_error.316] invalid UTF-8 byte at index 15: 0x6F ``` !!! tip - Store the source file with UTF-8 encoding. - Pass an error handler as last parameter to the `dump()` function to avoid this exception: - `json::error_handler_t::replace` will replace invalid bytes sequences with `U+FFFD` - `json::error_handler_t::ignore` will silently ignore invalid byte sequences ### json.exception.type_error.317 The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw `true` or `null` JSON object cannot be serialized to BSON) !!! failure "Example messages" Serializing `#!json null` to BSON: ``` [json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is null ``` Serializing `#!json [1,2,3]` to BSON: ``` [json.exception.type_error.317] to serialize to BSON, top-level type must be object, but is array ``` !!! tip Encapsulate the JSON value in an object. That is, instead of serializing `#!json true`, serialize `#!json {"value": true}` ## Out of range This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys. Exceptions have ids 4xx. ??? example The following code shows how an `out_of_range` exception can be caught. ```cpp --8<-- "examples/out_of_range.cpp" ``` Output: ``` --8<-- "examples/out_of_range.output" ``` ### json.exception.out_of_range.401 The provided array index `i` is larger than `size-1`. !!! failure "Example message" ``` array index 3 is out of range ``` ### json.exception.out_of_range.402 The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. !!! failure "Example message" ``` array index '-' (3) is out of range ``` ### json.exception.out_of_range.403 The provided key was not found in the JSON object. !!! failure "Example message" ``` key 'foo' not found ``` ### json.exception.out_of_range.404 A reference token in a JSON Pointer could not be resolved. !!! failure "Example message" ``` unresolved reference token 'foo' ``` ### json.exception.out_of_range.405 The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. !!! failure "Example message" ``` JSON pointer has no parent ``` ### json.exception.out_of_range.406 A parsed number could not be stored as without changing it to NaN or INF. !!! failure "Example message" ``` number overflow parsing '10E1000' ``` ### json.exception.out_of_range.407 UBJSON and BSON only support integer numbers up to 9223372036854775807. !!! failure "Example message" ``` number overflow serializing '9223372036854775808' ``` !!! note Since version 3.9.0, integer numbers beyond int64 are serialized as high-precision UBJSON numbers, and this exception does not further occur. ### json.exception.out_of_range.408 The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. !!! failure "Example message" ``` excessive array size: 8658170730974374167 ``` ### json.exception.out_of_range.409 Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string. !!! failure "Example message" ``` BSON key cannot contain code point U+0000 (at byte 2) ``` ## Further exceptions This exception is thrown in case of errors that cannot be classified with the other exception types. Exceptions have ids 5xx. ??? example The following code shows how an `other_error` exception can be caught. ```cpp --8<-- "examples/other_error.cpp" ``` Output: ``` --8<-- "examples/other_error.output" ``` ### json.exception.other_error.501 A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. !!! failure "Example message" Executing `#!json {"op":"test", "path":"/baz", "value":"bar"}` on `#!json {"baz": "qux"}`: ``` [json.exception.other_error.501] unsuccessful: {"op":"test","path":"/baz","value":"bar"} ``` json-3.11.3/docs/mkdocs/docs/home/faq.md000066400000000000000000000153051453145653700177520ustar00rootroot00000000000000# Frequently Asked Questions (FAQ) ## Known bugs ### Brace initialization yields arrays !!! question Why does ```cpp json j{true}; ``` and ```cpp json j(true); ``` yield different results (`#!json [true]` vs. `#!json true`)? This is a known issue, and -- even worse -- the behavior differs between GCC and Clang. The "culprit" for this is the library's constructor overloads for initializer lists to allow syntax like ```cpp json array = {1, 2, 3, 4}; ``` for arrays and ```cpp json object = {{"one", 1}, {"two", 2}}; ``` for objects. !!! tip To avoid any confusion and ensure portable code, **do not** use brace initialization with the types `basic_json`, `json`, or `ordered_json` unless you want to create an object or array as shown in the examples above. ## Limitations ### Relaxed parsing !!! question Can you add an option to ignore trailing commas? This library does not support any feature which would jeopardize interoperability. ### Parse errors reading non-ASCII characters !!! question "Questions" - Why is the parser complaining about a Chinese character? - Does the library support Unicode? - I get an exception `[json.exception.parse_error.101] parse error at line 1, column 53: syntax error while parsing value - invalid string: ill-formed UTF-8 byte; last read: '"Testé$')"` The library supports **Unicode input** as follows: - Only **UTF-8** encoded input is supported which is the default encoding for JSON according to [RFC 8259](https://tools.ietf.org/html/rfc8259.html#section-8.1). - `std::u16string` and `std::u32string` can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers. - Other encodings such as Latin-1 or ISO 8859-1 are **not** supported and will yield parse or serialization errors. - [Unicode noncharacters](http://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library. - Invalid surrogates (e.g., incomplete pairs such as `\uDEAD`) will yield parse errors. - The strings stored in the library are UTF-8 encoded. When using the default string type (`std::string`), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs. - When you store strings with different encodings in the library, calling [`dump()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a50ec80b02d0f3f51130d4abb5d1cfdc5.html#a50ec80b02d0f3f51130d4abb5d1cfdc5) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers. In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows where Latin-1 or ISO 8859-1 is often the standard encoding. ### Wide string handling !!! question Why are wide strings (e.g., `std::wstring`) dumped as arrays of numbers? As described [above](#parse-errors-reading-non-ascii-characters), the library assumes UTF-8 as encoding. To store a wide string, you need to change the encoding. !!! example ```cpp #include // codecvt_utf8 #include // wstring_convert // encoding function std::string to_utf8(std::wstring& wide_string) { static std::wstring_convert> utf8_conv; return utf8_conv.to_bytes(wide_string); } json j; std::wstring ws = L"車B1234 こんにちは"; j["original"] = ws; j["encoded"] = to_utf8(ws); std::cout << j << std::endl; ``` The result is: ```json { "encoded": "車B1234 こんにちは", "original": [36554, 66, 49, 50, 51, 52, 32, 12371, 12435, 12395, 12385, 12399] } ``` ## Exceptions ### Parsing without exceptions !!! question Is it possible to indicate a parse error without throwing an exception? Yes, see [Parsing and exceptions](../features/parsing/parse_exceptions.md). ### Key name in exceptions !!! question Can I get the key of the object item that caused an exception? Yes, you can. Please define the symbol [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md) to get [extended diagnostics messages](exceptions.md#extended-diagnostic-messages). ## Serialization issues ### Number precision !!! question - It seems that precision is lost when serializing a double. - Can I change the precision for floating-point serialization? The library uses `std::numeric_limits::digits10` (15 for IEEE `double`s) digits for serialization. This value is sufficient to guarantee roundtripping. If one uses more than this number of digits of precision, then string -> value -> string is not guaranteed to round-trip. !!! quote "[cppreference.com](https://en.cppreference.com/w/cpp/types/numeric_limits/digits10)" The value of `std::numeric_limits::digits10` is the number of base-10 digits that can be represented by the type T without change, that is, any number with this many significant decimal digits can be converted to a value of type T and back to decimal form, without change due to rounding or overflow. !!! tip The website https://float.exposed gives a good insight into the internal storage of floating-point numbers. See [this section](../features/types/number_handling.md#number-serialization) on the library's number handling for more information. ## Compilation issues ### Android SDK !!! question Why does the code not compile with Android SDK? Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your `Application.mk`. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default. ```ini APP_STL := c++_shared NDK_TOOLCHAIN_VERSION := clang3.6 APP_CPPFLAGS += -frtti -fexceptions ``` The code compiles successfully with [Android NDK](https://developer.android.com/ndk/index.html?hl=ml), Revision 9 - 11 (and possibly later) and [CrystaX's Android NDK](https://www.crystax.net/en/android/ndk) version 10. ### Missing STL function !!! question "Questions" - Why do I get a compilation error `'to_string' is not a member of 'std'` (or similarly, for `strtod` or `strtof`)? - Why does the code not compile with MinGW or Android SDK? This is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to [this site](http://tehsausage.com/mingw-to-string) and [this discussion](https://github.com/nlohmann/json/issues/136) for information on how to fix this bug. For Android NDK using `APP_STL := gnustl_static`, please refer to [this discussion](https://github.com/nlohmann/json/issues/219). json-3.11.3/docs/mkdocs/docs/home/license.md000066400000000000000000000037001453145653700206210ustar00rootroot00000000000000# License The class is licensed under the [MIT License](https://opensource.org/licenses/MIT): Copyright © 2013-2022 [Niels Lohmann](https://nlohmann.me) 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. * * * The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the [MIT License](https://opensource.org/licenses/MIT) (see above). Copyright © 2008-2009 [Björn Hoehrmann](http://bjoern.hoehrmann.de/) The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the [MIT License](https://opensource.org/licenses/MIT) (see above). Copyright © 2009 [Florian Loitsch](https://florian.loitsch.com/) The class contains a copy of [Hedley](https://nemequ.github.io/hedley/) from Evan Nemerson which is licensed as [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/). json-3.11.3/docs/mkdocs/docs/home/releases.md000066400000000000000000003060061453145653700210070ustar00rootroot00000000000000# Releases ## v3.7.3 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip) (274 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp) (791 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp.asc) (1 KB) Release date: 2019-11-17 SHA-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip) ### Summary This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible. ### :bug: Bug Fixes - Removed `reserve()` calls from the destructor which could lead to quadratic complexity. #1837 #1838 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.7.2 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.7.2/include.zip) (274 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.7.2/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.7.2/json.hpp) (791 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.7.2/json.hpp.asc) (1 KB) Release date: 2019-11-10 SHA-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip) ### Summary Project [bad_json_parsers](https://github.com/lovasoa/bad_json_parsers) tested how JSON parser libraries react on **deeply nested inputs**. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. **Now the parsing is only bounded by the available memory.** All changes are backward-compatible. ### :bug: Bug Fixes * Fixed a bug that lead to stack overflow for deeply nested JSON values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835 ### :hammer: Further Changes * Added WhiteStone Bolt. #1830 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.7.1 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.7.1/include.zip) (273 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.7.1/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.7.1/json.hpp) (789 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.7.1/json.hpp.asc) (1 KB) Release date: 2019-11-06 SHA-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip) ### Summary This release fixes several small bugs in the library. All changes are backward-compatible. ### :bug: Bug Fixes - Fixed a segmentation fault when serializing `std::int64_t` minimum value. #1708 #1722 - Fixed the [`contains()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3) function for JSON Pointers. #1727 #1741 - Fixed too lax SFINAE guard for conversion from `std::pair` and `std::tuple` to `json`. #1805 #1806 #1825 #1826 - Fixed some regressions detected by UBSAN. Updated CI to use Clang-Tidy 7.1.0. #1716 #1728 - Fixed integer truncation in `iteration_proxy`. #1797 - Updated [Hedley](https://github.com/nemequ/hedley) to v11 to [fix a E2512 error](https://github.com/nemequ/hedley/issues/28) in MSVC. #1799 - Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821 - Fixed the conversion from `json` to `std::valarray`. ### :zap: Improvements - The [`items()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) function can now be used with a custom string type. #1765 - Made [`json_pointer::back`](https://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a213bc67c32a30c68ac6bf06f5195d482.html#a213bc67c32a30c68ac6bf06f5195d482) `const`. #1764 #1769 - Meson is part of the release archive. #1672 #1694 - Improved documentation on the Meson and Spack package manager. #1694 #1720 ### :hammer: Further Changes - Added GitHub Workflow with `ubuntu-latest`/GCC 7.4.0 as CI step. - Added GCC 9 to Travis CI to compile with C++20 support. #1724 - Added MSVC 2019 to the AppVeyor CI. #1780 - Added badge to [fuzzing status](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:json). - Fixed some cppcheck warnings. #1760 - Fixed several typos in the documentation. #1720 #1767 #1803 - Added documentation on the `JSON_THROW_USER`, `JSON_TRY_USER`, and `JSON_CATCH_USER` macros to control user-defined exception handling. - Used GitHub's [CODEOWNERS](https://github.com/nlohmann/json/blob/develop/.github/CODEOWNERS) and [SECURITY](https://github.com/nlohmann/json/blob/develop/.github/SECURITY.md) feature. - Removed `GLOB` from CMake files. #1779 - Updated to [Doctest](https://github.com/onqtam/doctest) 2.3.5. ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.7.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.7.0/include.zip) (143 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.7.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.7.0/json.hpp) (782 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.7.0/json.hpp.asc) (1 KB) Release date: 2019-07-28 SHA-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip) ### Summary This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible. ### :sparkles: New Features - Add overload of the **[`contains`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3) function** to check if a JSON pointer is valid without throwing exceptions, just like its [counterpart for object keys](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9286acdc0578fc66e9346323e69fc0e3.html#a9286acdc0578fc66e9346323e69fc0e3). #1600 - Add a function **[`to_string`](http://nlohmann.github.io/json/doxygen/namespacenlohmann_a6ce645a0b8717757e096a5b5773b7a16.html#a6ce645a0b8717757e096a5b5773b7a16)** to allow for generic conversion to strings. #916 #1585 - Add **return value for the [`emplace_back`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_abf29131f898b05aad2c01a9c80e7a002.html#abf29131f898b05aad2c01a9c80e7a002) function**, returning a reference to the added element just like C++17 is [introducing this](https://en.cppreference.com/w/cpp/container/vector/emplace_back) for `std::vector`. #1609 - Add info how to use the library with the **[pacman](https://wiki.archlinux.org/index.php/pacman) package manager** on MSYS2. #1670 ### :bug: Bug Fixes - Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643 - Fix a conversion to `std::string_view` in the unit tests. #1634 #1639 - Fix MSVC Debug build. #1536 #1570 #1608 - Fix [`get_to`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a65753c68f06639eda0d355f919564e01.html#a65753c68f06639eda0d355f919564e01) method to clear existing content before writing. #1511 #1555 - Fix a `-Wc++17-extensions` warning. `nodiscard` attributes are now only used with Clang when `-std=c++17` is used. #1535 #1551 ### :zap: Improvements - Switch from [Catch](https://github.com/philsquared/Catch) to **[doctest](https://github.com/onqtam/doctest)** for the unit tests which speeds up compilation and runtime of the 112,112,308 tests. - Add an explicit section to the [README](https://github.com/nlohmann/json/blob/develop/README.md) about the **frequently addressed topics** [character encoding](https://github.com/nlohmann/json#character-encoding), [comments in JSON](https://github.com/nlohmann/json#comments-in-json), and the [order of object keys](https://github.com/nlohmann/json#order-of-object-keys). ### :hammer: Further Changes - Use [`GNUInstallDirs`](https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html) to set library install directories. #1673 - Fix links in the [README](https://github.com/nlohmann/json/blob/develop/README.md). #1620 #1621 #1622 #1623 #1625 - Mention [`json` type](http://nlohmann.github.io/json/doxygen/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474) on the [documentation start page](http://nlohmann.github.io/json/doxygen/index.html). #1616 - Complete documentation of [`value()` function](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_adcf8ca5079f5db993820bf50036bf45d.html#adcf8ca5079f5db993820bf50036bf45d) with respect to `type_error.302` exception. #1601 - Fix links in the documentation. #1598 - Add regression tests for MSVC. #1543 #1570 - Use **[CircleCI](http://circleci.com)** for [continuous integration](https://circleci.com/gh/nlohmann/json). - Use **[Doozer](https://doozer.io)** for [continuous integration](https://doozer.io/nlohmann/json) on Linux (CentOS, Raspbian, Fedora) - Add tests to check each CMake flag (`JSON_BuildTests`, `JSON_Install`, `JSON_MultipleHeaders`, `JSON_Sanitizer`, `JSON_Valgrind`, `JSON_NoExceptions`, `JSON_Coverage`). - Use [Hedley](https://nemequ.github.io/hedley/) to avoid re-inventing several compiler-agnostic feature macros like `JSON_DEPRECATED`, `JSON_NODISCARD`, `JSON_LIKELY`, `JSON_UNLIKELY`, `JSON_HAS_CPP_14`, or `JSON_HAS_CPP_17`. Functions taking or returning pointers are annotated accordingly when a pointer will not be null. - Build and run tests on [AppVeyor](https://ci.appveyor.com/project/nlohmann/json) in DEBUG and RELEASE mode. ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.6.1 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip) (136 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp) (711 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp.asc) (1 KB) Release date: 2019-03-20 SHA-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip) ### Summary This release **fixes a regression and a bug** introduced by the earlier 3.6.0 release. All changes are backward-compatible. ### :bug: Bug Fixes - Fixed regression of #590 which could lead to compilation errors with GCC 7 and GCC 8. #1530 - Fixed a compilation error when `` was included. #1531 ### :hammer: Further Changes - Fixed a warning for missing field initializers. #1527 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.6.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.6.0/include.zip) (136 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.6.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.6.0/json.hpp) (711 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.6.0/json.hpp.asc) (1 KB) Release date: 2019-03-20 SHA-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip) ℹ️ **This release introduced a regression. Please update to [version 3.6.1](https://github.com/nlohmann/json/releases/tag/v3.6.1)!** ### Summary This release adds some **convenience functions for JSON Pointers**, introduces a [`contains`]( http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47) function to check if a key is present in an object, and improves the **performance of integer serialization**. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible. ### :sparkles: New Features - Overworked the public interface for JSON Pointers. The creation of JSON Pointers is simplified with [`operator/`]( http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a90a11fe6c7f37b1746a3ff9cb24b0d53.html#a90a11fe6c7f37b1746a3ff9cb24b0d53) and [`operator/=`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a7395bd0af29ac23fd3f21543c935cdfa.html#a7395bd0af29ac23fd3f21543c935cdfa). JSON Pointers can be inspected with [`empty`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a649252bda4a2e75a0915b11a25d8bcc3.html#a649252bda4a2e75a0915b11a25d8bcc3), [`back`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a6bd5b554c10f15672135c216893eef31.html#a6bd5b554c10f15672135c216893eef31), and [`parent_pointer`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_afdaacce1edb7145e0434e014f0e8685a.html#afdaacce1edb7145e0434e014f0e8685a), and manipulated with [`push_back`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a697d12b5bd6205f8866691b166b7c7dc.html#a697d12b5bd6205f8866691b166b7c7dc) and [`pop_back`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a4b1ee4d511ca195bed896a3da47e264c.html#a4b1ee4d511ca195bed896a3da47e264c). #1434 - Added a boolean method [`contains`]( http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47) to check whether an element exists in a JSON object with a given key. Returns false when called on non-object types. #1471 #1474 ### :bug: Bug Fixes - Fixed a compilation issues with libc 2.12. #1483 #1514 - Fixed endian conversion on PPC64. #1489 - Fixed library to compile with GCC 9. #1472 #1492 - Fixed a compilation issue with GCC 7 on CentOS. #1496 - Fixed an integer overflow. #1447 - Fixed buffer flushing in serializer. #1445 #1446 ### :zap: Improvements - The performance of dumping integers has been greatly improved. #1411 - Added CMake parameter `JSON_Install` to control whether the library should be installed (default: on). #1330 - Fixed a lot of compiler and linter warnings. #1400 #1435 #1502 - Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498 - Added `nodiscard` attribute to `meta()`, `array()`, `object()`, `from_cbor`, `from_msgpack`, `from_ubjson`, `from_bson`, and `parse`. #1433 ### :hammer: Further Changes - Added missing headers. #1500 - Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491 - Fixed documentation of parse function. #1473 - Suppressed warning that cannot be fixed inside the library. #1401 #1468 - Imroved package manager suppert: - Updated Buckaroo instructions. #1495 - Improved Meson support. #1463 - Added Conda package manager documentation. #1430 - Added NuGet package manager documentation. #1132 - Continuous Integration - Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder. - Added Clang 7 to Travis CI. - Fixed AppVeyor x64 builds. #1374 #1414 - Updated thirdparty libraries: - Catch 1.12.0 -> 1.12.2 - Google Benchmark 1.3.0 -> 1.4.1 - Doxygen 1.8.15 -> 1.8.16 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.5.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.5.0/include.zip) (133 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.5.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp) (693 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp.asc) (1 KB) Release date: 2018-12-22 SHA-256: 8a6dbf3bf01156f438d0ca7e78c2971bca50eec4ca6f0cf59adf3464c43bb9d5 (json.hpp), 3564da9c5b0cf2e032f97c69baedf10ddbc98030c337d0327a215ea72259ea21 (include.zip) ### Summary This release introduces the support for **structured bindings** and reading from **`FILE*`**. Besides, a few bugs have been fixed. All changes are backward-compatible. ### :sparkles: New Features - **Structured bindings** are now supported for JSON objects and arrays via the [`items()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) member function, so finally this code is possible: ```cpp for (auto& [key, val] : j.items()) { std::cout << key << ':' << val << '\n'; } ``` #1388 #1391 - Added support for **reading from `FILE*`** to support situations in which streams are nit available or would require too much RAM. #1370 #1392 ### :bug: Bug Fixes - The `eofbit` was not set for input streams when the end of a stream was reached while parsing. #1340 #1343 - Fixed a bug in the SAX parser for BSON arrays. ### :zap: Improvements - Added support for Clang 5.0.1 (PS4 version). #1341 #1342 ### :hammer: Further Changes - Added a warning for implicit conversions to the documentation: It is not recommended to use implicit conversions when reading **from** a JSON value. Details about this recommendation can be found [here](https://www.github.com/nlohmann/json/issues/958). #1363 - Fixed typos in the documentation. #1329 #1380 #1382 - Fixed a C4800 warning. #1364 - Fixed a `-Wshadow` warning #1346 - Wrapped `std::snprintf` calls to avoid error in MSVC. #1337 - Added code to allow installation via Meson. #1345 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.4.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.4.0/include.zip) (132 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.4.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.4.0/json.hpp) (689 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.4.0/json.hpp.asc) (1 KB) Release date: 2018-10-30 SHA-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip) ### Summary This release introduces three new features: - **BSON (Binary JSON)** is next to CBOR, MessagePack, and UBJSON the fourth binary (de)serialization format supported by the library. - **Adjustable error handlers for invalid Unicode** allows to specify the behavior when invalid byte sequences are serialized. - **Simplified enum/JSON mapping** with a macro in case the default mapping to integers is not desired. Furthermore, some effort has been invested in improving the **parse error messages**. Besides, a few bugs have been fixed. All changes are backward-compatible. ### :sparkles: New Features - The library can read and write a subset of **[BSON](http://bsonspec.org/) (Binary JSON)**. All data types known from JSON are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See [the README](https://github.com/nlohmann/json#binary-formats-bson-cbor-messagepack-and-ubjson) for examples. #1244 #1320 - The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three **Unicode error handlers**: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the [documentation of the `dump` function](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a50ec80b02d0f3f51130d4abb5d1cfdc5.html#a50ec80b02d0f3f51130d4abb5d1cfdc5) for examples. #1198 #1314 - To easily specify a user-defined **enum/JSON mapping**, a macro `NLOHMANN_JSON_SERIALIZE_ENUM` has been introduced. See the [README section](https://github.com/nlohmann/json#specializing-enum-conversion) for more information. #1208 #1323 ### :bug: Bug Fixes - fixed truncation #1286 #1315 - fixed an issue with std::pair #1299 #1301 - fixed an issue with std::variant #1292 #1294 - fixed a bug in the JSON Pointer parser ### :zap: Improvements - The **diagnosis messages for parse errors** have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., "while parsing a JSON string"). Example: error `parse error at 2: syntax error - invalid string: control character must be escaped; last read: ''` is now reported as `parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \u0009 or \t; last read: ''`. #1280 #1288 #1303 ### :hammer: Further Changes - improved Meson documentation #1305 - fixed some more linter warnings #1280 - fixed Clang detection for third-party Google Benchmark library #1277 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.3.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.3.0/include.zip) (123 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.3.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.3.0/json.hpp) (635 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.3.0/json.hpp.asc) (1 KB) Release date: 2018-10-05 SHA-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip) ### Summary This release adds support for **GCC 4.8**. Furthermore, it adds a function [**`get_to`**](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709) to write a JSON value to a passed reference. Another topic of this release was the **CMake support** which has been overworked and documented. Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible. ### :sparkles: New Features - The library can now also built with **GCC 4.8**. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug [57824](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824) in GCC 4.8 still forbids to use multiline raw strings in arguments to macros. #1257 - Added new function [**`get_to`**](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709) to write a JSON value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the `get` function. #1227 #1231 ### :bug: Bug Fixes - Fixed a bug in the CMake file that made `target_link_libraries` to not properly include `nlohmann_json`. #1243 #1245 #1260 - Fixed a warning in MSVC 2017 complaining about a constexpr if. #1204 #1268 #1272 - Fixed a bug that prevented compilation with ICPC. #755 #1222 - Improved the SFINAE correctness to fix a bug in the conversion operator. #1237 #1238 - Fixed a `-Wctor-dtor-privacy` warning. #1224 - Fixed a warning on a lambda in unevaluated context. #1225 #1230 - Fixed a bug introduced in version 3.2.0 where defining `JSON_CATCH_USER` led to duplicate macro definition of `JSON_INTERNAL_CATCH`. #1213 #1214 - Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249 ### :zap: Improvements - Added [documentation on CMake integration](https://github.com/nlohmann/json#cmake) of the library. #1270 - Changed the CMake file to use `find_package(nlohmann_json)` without installing the library. #1202 - Improved error messages in case `operator[]` is used with the wrong combination (json.exception.type_error.305) of JSON container type and argument type. Example: "cannot use operator[] with a string argument". #1220 #1221 - Added a license and version information to the Meson build file. #1252 - Removed static assertions to indicated missing `to_json` or `from_json` functions as such assertions do not play well with SFINAE. These assertions also led to problems with GMock. #960 #1212 #1228 - The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262 - The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271 ### :hammer: Further Changes - GCC 4.8 and Xcode 10 were added to the [continuous integration suite](https://travis-ci.org/nlohmann/json) at Travis. - Added [lgtm](https://lgtm.com/projects/g/nlohmann/json/context:cpp) checks to pull requests. - Added tests for CMake integration. #1260 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.2.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.2.0/include.zip) (124 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.2.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.2.0/json.hpp) (636 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.2.0/json.hpp.asc) (1 KB) Release date: 2018-08-20 SHA-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip) ### Summary This release introduces a [**SAX interface**](https://nlohmann.github.io/json/structnlohmann_1_1json__sax.html) to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of JSON value. Internally, now all existing functions like `parse`, `accept`, `from_cbor`, `from_msgpack`, and `from_ubjson` use the SAX interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the JSON parser is now non-recursive (meaning it does not use the call stack, but `std::vector` to track the hierarchy of structured values) which allows to process nested input more efficiently. Furthermore, the library finally is able to parse from **wide string types**. This is the first step toward opening the library from UTF-8 to UTF-16 and UTF-32. This release further fixes several bugs in the library. All changes are backward-compatible. ### :sparkles: New Features - added a parser with a **SAX interface** (#971, #1153) - support to parse from **wide string types** `std::wstring`, `std::u16string`, and `std::u32string`; the input will be converted to UTF-8 (#1031) - added support for **`std::string_view`** when using C++17 (#1028) - allow to **roundtrip `std::map` and `std::unordered_map`** from JSON if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138) ### :bug: Bug Fixes - allow to create `nullptr_t` from JSON allowing to properly roundtrip `null` values (#1169) - allow compare user-defined string types (#1130) - better support for algorithms using iterators from `items()` (#1045, #1134) - added parameter to avoid compilation error with MSVC 2015 debug builds (#1114) - re-added accidentally skipped unit tests (#1176) - fixed MSVC issue with `std::swap` (#1168) ### :zap: Improvements - `key()` function for iterators returns a const reference rather than a string copy (#1098) - binary formats CBOR, MessagePack, and UBJSON now supports `float` as type for floating-point numbers (#1021) ### :hammer: Further Changes - changed issue templates - improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for GCC 8 and Clang 6, added builder for MinGW, added builders for MSVC targeting x86 - required CMake version is now at least 3.8 (#1040) - overworked CMake file wrt. packaging (#1048) - added package managers: Spack (#1041) and CocoaPods (#1148) - fixed Meson include directory (#1142) - preprocessor macro `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK` can skip the rejection of unsupported compilers - use at your own risk! (#1128) - preprocessor macro `JSON_INTERNAL_CATCH`/`JSON_INTERNAL_CATCH_USER` allows to control the behavior of exception handling inside the library (#1187) - added note on `char` to JSON conversion - added note how to send security-related issue via encrypted email - removed dependency to `std::stringstream` (#1117) - added SPDX-License-Identifier - added updated JSON Parsing Test Suite, described in [Parsing JSON is a Minefield 💣](http://seriot.ch/parsing_json.php) - updated to Catch 1.12.0 ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.1.2 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.1.2/include.zip) (115 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.1.2/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp) (582 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp.asc) (1 KB) Release date: 2018-03-14 SHA-256: fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733 (json.hpp), 495362ee1b9d03d9526ba9ccf1b4a9c37691abe3a642ddbced13e5778c16660c (include.zip) ### Summary This release fixes several bugs in the library. All changes are backward-compatible. ### :bug: Bug Fixes - Fixed a **memory leak** occurring in the parser callback (#1001). - Different **specializations of `basic_json`** (e.g., using different template arguments for strings or objects) can now be used in assignments (#972, #977, #986). - Fixed a logical error in an iterator range check (#992). ### :zap: Improvements - The parser and the serialization now support **user-defined string types** (#1006, #1009). ### :hammer: Further Changes - **[Clang Analyzer](http://clang-analyzer.llvm.org)** is now used as additional static analyzer; see `make clang_analyze`. - Overworked [README](https://github.com/nlohmann/json/blob/develop/README.md) by adding links to the [documentation](https://nlohmann.github.io/json/) (#981). ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.1.1 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.1.1/include.zip) (114 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.1.1/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.1.1/json.hpp) (577 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.1.1/json.hpp.asc) (1 KB) Release date: 2018-02-13 SHA-256: e14ce5e33d6a2daf748026bd4947f3d9686ca4cfd53d10c3da46a0a9aceb7f2e (json.hpp), fde771d4b9e4f222965c00758a2bdd627d04fb7b59e09b7f3d1965abdc848505 (include.zip) ### Summary This release fixes several bugs in the library. All changes are backward-compatible. ### :bug: Bug Fixes - Fixed parsing of **CBOR strings with indefinite length** (#961). Earlier versions of this library misinterpreted the CBOR standard and rejected input with the `0x7F` start byte. - Fixed user-defined **conversion to vector type** (#924, #969). A wrong SFINAE check rejected code though a user-defined conversion was provided. - Fixed documentation of the parser behavior for **objects with duplicate keys** (#963). The exact behavior is not specified by [RFC 8259](https://tools.ietf.org/html/rfc8259) and the library now also provides no guarantee which object key is stored. - Added check to detect memory **overflow when parsing UBJSON containers** (#962). The optimized UBJSON format allowed for specifying an array with billions of `null` elements with a few bytes and the library did not check whether this size exceeded `max_size()`. ### :hammer: Further Changes - [Code coverage](https://coveralls.io/github/nlohmann/json) is now calculated for the individual header files, allowing to find uncovered lines more quickly than by browsing through the single header version (#953, #957). - A Makefile target `run_benchmarks` was added to quickly build and run the benchmark suite. - The documentation was harmonized with respect to the header inclusion (#955). Now all examples and the README use `#include ` to allow for selecting `single_include` or `include` or whatever installation folder as include directory. - Added note on how to use the library with the [cget](http://cget.readthedocs.io/en/latest/) package manager (#954). ### :fire: Deprecated functions This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0): - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead. - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.1.0 !!! summary "Files" - [include.zip](https://github.com/nlohmann/json/releases/download/v3.1.0/include.zip) (114 KB) - [include.zip.asc](https://github.com/nlohmann/json/releases/download/v3.1.0/include.zip.asc) (1 KB) - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.1.0/json.hpp) (577 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.1.0/json.hpp.asc) (1 KB) Release date: 2018-02-01 SHA-256: d40f614d10a6e4e4e80dca9463da905285f20e93116c36d97d4dc1aa63d10ba4 (json.hpp), 2b7234fca394d1e27b7e017117ed80b7518fafbb4f4c13a7c069624f6f924673 (include.zip) ### Summary This release adds support for the [**UBJSON**](http://ubjson.org) format and [**JSON Merge Patch**](https://tools.ietf.org/html/rfc7386). It also contains some minor changes and bug fixes. All changes are backward-compatible. ### :sparkles: New features - The library now supports [**UBJSON**](http://ubjson.org) (Universal Binary JSON Specification) as binary format to read and write JSON values space-efficiently. See the [documentation overview](https://github.com/nlohmann/json/blob/develop/doc/binary_formats.md) for a comparison of the different formats CBOR, MessagePack, and UBJSON. - [**JSON Merge Patch**](https://tools.ietf.org/html/rfc7386) (RFC 7386) offers an intuitive means to describe patches between JSON values (#876, #877). See the documentation of [`merge_patch`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0ec0cd19cce42ae6071f3cc6870ea295.html#a0ec0cd19cce42ae6071f3cc6870ea295) for more information. ### :zap: Improvements - The library now uses the **Grisu2 algorithm** for printing floating-point numbers (based on the reference implementation by Florian Loitsch) which produces a short representation which is guaranteed to round-trip (#360, #935, #936). - The **UTF-8 handling** was further simplified by using the decoder of Björn Hoehrmann in more scenarios. ### :truck: Reorganization - Though the library is released as a single header, its development got more and more complicated. With this release, the header is **split into several files** and the single-header file `json.hpp` can be generated from these development sources. In the repository, folder `include` contains the development sources and `single_include` contains the single `json.hpp` header (#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944). - The split further allowed for a **forward declaration header** `include/nlohmann/json_fwd.hpp` to speed up compilation times (#314). ### :hammer: Further changes - [Google Benchmark](https://github.com/google/benchmark) is now used for micro benchmarks (see `benchmarks` folder, #921). - The serialization (JSON and binary formats) now properly work with the libraries string template parameter, allowing for optimized string implementations to be used in constraint environments such as embedded software (#941, #950). - The exceptional behavior can now be overridden by defining macros `JSON_THROW_USER`, `JSON_TRY_USER`, and `JSON_CATCH_USER`, defining the behavior of `throw`, `try` and `catch`, respectively. This allows to switch off C++'s exception mechanism yet still execute user-defined code in case an error condition occurs (#938). - To facilitate the interplay with [flex](https://github.com/westes/flex) and [Bison](https://www.gnu.org/software/bison/), the library does not use the variable name `yytext` any more as it could clash with macro definitions (#933). - The library now defines `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, and `NLOHMANN_JSON_VERSION_PATCH` to allow for conditional compilation based on the included library version (#943, #948). - A compilation error with ICC has been fixed (#947). - Typos and links in the documentation have been fixed (#900, #930). - A compiler error related to incomplete types has been fixed (#919). - The tests form the [UTF-8 decoder stress test](http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt) have been added to the test suite. ### :fire: Deprecated functions - Function [`iterator_wrapper`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) has been deprecated (#874). Since its introduction, the name was up for discussion, as it was too technical. We now introduced the member function [`items()`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) with the same semantics. `iterator_wrapper` will be removed in the next major version (i.e., 4.0.0). Furthermore, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0): - [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) - [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.0.1 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.0.1/json.hpp) (502 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.0.1/json.hpp.asc) (1 KB) Release date: 2017-12-29 SHA-256: c9b3591f1bb94e723a0cd7be861733a3a555b234ef132be1e9027a0364118c4c ### Summary This release fixes small issues in the implementation of **JSON Pointer** and **JSON Patch**. All changes are backward-compatible. ### Changes - :bug: The **"copy" operation of JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) requests that it is an error if the target path points into a non-existing array or object (see #894 for a detailed description). This release fixes the implementation to detect such invalid target paths and throw an exception. - :bug: An **array index in a JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) must be an integer. This release fixes the implementation to throw an exception in case invalid array indices such as `10e2` are used. - :white_check_mark: Added the [JSON Patch tests](https://github.com/json-patch/json-patch-tests) from Byron Ruth and Mike McCabe. - :memo: Fixed the documentation of the [`at(ptr)` function with JSON Pointers](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a8ab61397c10f18b305520da7073b2b45.html#a8ab61397c10f18b305520da7073b2b45) to list all possible exceptions (see #888). - :memo: Updated the [container overview documentation](https://nlohmann.github.io/json/) (see #883). - :wrench: The CMake files now respect the [`BUILD_TESTING`](https://cmake.org/cmake/help/latest/module/CTest.html?highlight=build_testing) option (see #846, #885) - :rotating_light: Fixed some compiler warnings (see #858, #882). ### Deprecated functions :fire: To unify the interfaces and to improve similarity with the STL, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0): - [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) - [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ## v3.0.0 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v3.0.0/json.hpp) (501 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v3.0.0/json.hpp.asc) (1 KB) Release date: 2017-12-17 SHA-256: 076d4a0cb890a3c3d389c68421a11c3d77c64bd788e85d50f1b77ed252f2a462 ### Summary After almost a year, here is finally a new release of JSON for Modern C++, and it is a major one! As we adhere to [semantic versioning](https://semver.org), this means the release includes some breaking changes, so please read the next section carefully before you update. But don't worry, we also added a few new features and put a lot of effort into fixing a lot of bugs and straighten out a few inconsistencies. ### :boom: Breaking changes This section describes changes that change the public API of the library and may require changes in code using a previous version of the library. In section "Moving from 2.x.x to 3.0.0" at the end of the release notes, we describe in detail how existing code needs to be changed. - The library now uses [**user-defined exceptions**](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9a0aced019cb1d65bb49703406c84970.html#a9a0aced019cb1d65bb49703406c84970) instead of re-using those defined in `` (#244). This not only allows to add more information to the exceptions (every exception now has an identifier, and parse errors contain the position of the error), but also to easily catch all library exceptions with a single `catch(json::exception)`. - When strings with a different encoding as UTF-8 were stored in JSON values, their serialization could not be parsed by the library itself, as only UTF-8 is supported. To enforce this library limitation and improve consistency, **non-UTF-8 encoded strings now yield a `json::type_error` exception during serialization** (#838). The check for valid UTF-8 is realized with code from [Björn Hoehrmann](http://bjoern.hoehrmann.de/). - **NaN and infinity values can now be stored inside the JSON value** without throwing an exception. They are, however, still serialized as `null` (#388). - The library's iterator tag was changed from RandomAccessIterator to **[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator)** (#593). Supporting RandomAccessIterator was incorrect as it assumed an ordering of values in a JSON objects which are unordered by definition. - The library does not include the standard headers ``, ``, and `` any more. You may need to add these headers to code relying on them. - Removed constructor `explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr)` which was deprecated in version 2.0.0 (#480). ### :fire: Deprecated functions To unify the interfaces and to improve similarity with the STL, the following functions are now deprecated and will be removed in the next major version (i.e., 4.0.0): - [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) - [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead. ### :sparkles: New features With all this breaking and deprecation out of the way, let's talk about features! - We improved the **diagnostic information for syntax errors** (#301). Now, an exception [`json::parse_error`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1efc2468e6022be6e35fc2944cabe4d.html#af1efc2468e6022be6e35fc2944cabe4d) is thrown which contains a detailed message on the error, but also a member `byte` to indicate the byte offset in the input where the error occurred. - We added a **non-throwing syntax check** (#458): The new `accept` function returns a Boolean indicating whether the input is proper JSON. We also added a Boolean parameter `allow_exceptions` to the existing [`parse`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aa9676414f2e36383c4b181fe856aa3c0.html#aa9676414f2e36383c4b181fe856aa3c0) functions to return a `discarded` value in case a syntax error occurs instead of throwing an exception. - An [`update`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a1cfa9ae5e7c2434cab4cfe69bffffe11.html#a1cfa9ae5e7c2434cab4cfe69bffffe11) function was added to **merge two JSON objects** (#428). In case you are wondering: the name was inspired by [Python](https://docs.python.org/2/library/stdtypes.html#dict.update). - The [`insert`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a1b0a4e60d56f1fe80501ed941e122892.html#a1b0a4e60d56f1fe80501ed941e122892) function now also supports an iterator range to add elements to an object. - The binary exchange formats **CBOR and MessagePack can now be parsed from input streams and written to output streams** (#477). - Input streams are now only read until the end of a JSON value instead of the end of the input (#367). - The serialization function [`dump`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5adea76fedba9898d404fef8598aa663.html#a5adea76fedba9898d404fef8598aa663) now has two optional parameters `ensure_ascii` to **escape all non-ASCII characters** with `\uxxxx` and an `indent_char` parameter to choose whether to **indent with spaces or tabs** (#654). - Added **built-in type support** for C arrays (#502), `std::pair` and `std::tuple` (#563, #614), `enum` and `enum class` (#545), `std::vector` (#494). Fixed support for `std::valarray` (#702), `std::array` (#553), and `std::map` (#600, #607). ### :hammer: Further changes Furthermore, there have been a lot of changes under the hood: - Replaced the [re2c](http://re2c.org) generated scanner by a self-coded version which allows for a better modularization of the parser and better diagnostics. To test the new scanner, we added millions (8,860,608 to be exact) of unit tests to check all valid and invalid byte sequences of the Unicode standard. - Google's OSS-Fuzz is still constantly fuzz-testing the library and found several issues that were fixed in this release (#497, #504, #514, #516, #518, #519, #575). - We now also ignore UTF-8 byte order marks when parsing from an iterator range (#602). - Values can be now moved from initializer lists (#663). - Updated to [Catch](https://github.com/catchorg/Catch2) 1.9.7. Unfortunately, Catch2 currently has some performance issues. - The non-exceptional paths of the library are now annotated with `__builtin_expect` to optimize branch prediction as long as no error occurs. - MSVC now produces a stack trace in MSVC if a `from_json` or `to_json` function was not found for a user-defined type. We also added a debug visualizer [`nlohmann_json.natvis`](https://github.com/nlohmann/json/blob/develop/nlohmann_json.natvis) for better debugging in MSVC (#844). - Overworked the documentation and added even more examples. - The build workflow now relies on CMake and CTest. Special flags can be chosen with CMake, including coverage (`JSON_Coverage`), compilation without exceptions (`JSON_NoExceptions`), LLVM sanitizers (`JSON_Sanitizer`), or execution with Valgrind (`JSON_Valgrind`). - Added support for package managers Meson (#576), Conan (#566), Hunter (#671, #829), and vcpkg (#753). - Added CI builders: Xcode 8.3, 9.0, 9.1, and 9.2; GCC 7.2; Clang 3.8, 3.9, 4.0, and 5.0; Visual Studio 2017. The library is further built with C++17 settings on the latest Clang, GCC, and MSVC version to quickly detect new issues. ### Moving from 2.x.x to 3.0.0 #### User-defined Exceptions There are five different exceptions inheriting from [`json::exception`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9a0aced019cb1d65bb49703406c84970.html#a9a0aced019cb1d65bb49703406c84970): - [`json::parse_error`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1efc2468e6022be6e35fc2944cabe4d.html#af1efc2468e6022be6e35fc2944cabe4d) for syntax errors (including the binary formats), - [`json::invalid_iterator`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ac13d32f7cbd02d616e71d8dc30dadcbf.html#ac13d32f7cbd02d616e71d8dc30dadcbf) for errors related to iterators, - [`json::type_error`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a4010e8e268fefd86da773c10318f2902.html#a4010e8e268fefd86da773c10318f2902) for errors where functions were called with the wrong JSON type, - [`json::out_of_range`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a28f7c2f087274a0012eb7a2333ee1580.html#a28f7c2f087274a0012eb7a2333ee1580) for range errors, and - [`json::other_error`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a3333a5a8714912adda33a35b369f7b3d.html#a3333a5a8714912adda33a35b369f7b3d) for miscellaneous errors. To support these exception, the `try`/`catch` blocks of your code need to be adjusted: | new exception | previous exception | |:--|:--| | parse_error.101 | invalid_argument | | parse_error.102 | invalid_argument | | parse_error.103 | invalid_argument | | parse_error.104 | invalid_argument | | parse_error.105 | invalid_argument | | parse_error.106 | domain_error | | parse_error.107 | domain_error | | parse_error.108 | domain_error | | parse_error.109 | invalid_argument | | parse_error.110 | out_of_range | | parse_error.111 | invalid_argument | | parse_error.112 | invalid_argument | | invalid_iterator.201 | domain_error | | invalid_iterator.202 | domain_error | | invalid_iterator.203 | domain_error | | invalid_iterator.204 | out_of_range | | invalid_iterator.205 | out_of_range | | invalid_iterator.206 | domain_error | | invalid_iterator.207 | domain_error | | invalid_iterator.208 | domain_error | | invalid_iterator.209 | domain_error | | invalid_iterator.210 | domain_error | | invalid_iterator.211 | domain_error | | invalid_iterator.212 | domain_error | | invalid_iterator.213 | domain_error | | invalid_iterator.214 | out_of_range | | type_error.301 | domain_error | | type_error.302 | domain_error | | type_error.303 | domain_error | | type_error.304 | domain_error | | type_error.305 | domain_error | | type_error.306 | domain_error | | type_error.307 | domain_error | | type_error.308 | domain_error | | type_error.309 | domain_error | | type_error.310 | domain_error | | type_error.311 | domain_error | | type_error.313 | domain_error | | type_error.314 | domain_error | | type_error.315 | domain_error | | out_of_range.401 | out_of_range | | out_of_range.402 | out_of_range | | out_of_range.403 | out_of_range | | out_of_range.404 | out_of_range | | out_of_range.405 | domain_error | | other_error.501 | domain_error | #### Handling of NaN and INF - If an overflow occurs during parsing a number from a JSON text, an exception [`json::out_of_range`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a28f7c2f087274a0012eb7a2333ee1580.html#a28f7c2f087274a0012eb7a2333ee1580) is thrown so that the overflow is detected early and roundtripping is guaranteed. - NaN and INF floating-point values can be stored in a JSON value and are not replaced by null. That is, the basic_json class behaves like `double` in this regard (no exception occurs). However, NaN and INF are serialized to `null`. #### Removal of deprecated functions Function `explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr)` should be replaced by the `parse` function: Let `ss` be a stream and `cb` be a parse callback function. Old code: ```cpp json j(ss, cb); ``` New code: ```cpp json j = json::parse(ss, cb); ``` If no callback function is used, also the following code works: ```cpp json j; j << ss; ``` or ```cpp json j; ss >> j; ``` ## v2.1.1 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp) (437 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp.asc) (1 KB) Release date: 2017-02-25 SHA-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57 ### Summary This release **fixes a locale-related bug in the parser**. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible. ### Changes - :bug: Locales that have a different character than `.` as decimal separator (e.g., the Norwegian locale `nb_NO.UTF-8`) led to truncated number parsing or parse errors. The library now has been fixed to work with **any locale**. Note that `.` is still the only valid decimal separator for JSON input. - :bug: Numbers like `1.0` were correctly parsed as floating-point number, but serialized as integer (`1`). Now, **floating-point numbers correctly round trip**. - :bug: Parsing incorrect JSON numbers with leading 0 (`0123`) could yield a [buffer overflow](https://github.com/nlohmann/json/issues/452). This is fixed now by detecting such errors directly by the lexer. - :bug: Constructing a JSON value from a pointer was incorrectly interpreted as a Boolean; such code will now yield a compiler error. - :bug: Comparing a JSON number with `0` led to a comparison with `null`. This is fixed now. - :bug: All throw calls are now wrapped in macros. - :lock: Starting during the preparation of this release (since 8 February 2017), commits and released files are **cryptographically signed** with [this GPG key](https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69). Previous releases have also been signed. - :sparkles: The parser for MessagePack and CBOR now supports an optional start index parameter to define a byte offset for the parser. - :rotating_light: Some more warnings have been fixed. With Clang, the code compiles **without warnings** with `-Weverything` (well, it needs `-Wno-documentation-unknown-command` and `-Wno-deprecated-declarations`, but you get the point). - :hammer: The code can be compiled easier with many Android NDKs by avoiding macros like `UINT8_MAX` which previously required defining a preprocessor macro for compilation. - :zap: The unit tests now compile two times faster. - :heavy_plus_sign: [Cotire](https://github.com/sakra/cotire) is used to speed up the build. - :pencil2: Fixed a lot of typos in the documentation. - :memo: Added a section to the README file that lists all used [third-party code/tools](https://github.com/nlohmann/json#used-third-party-tools). - :memo: Added a note on constructing a string value vs. parsing. - :white_check_mark: The test suite now contains 11202597 unit tests. - :memo: Improved the [Doxygen documentation](https://nlohmann.github.io/json/) by shortening the template parameters of class `basic_json`. - :construction_worker: Removed Doozer. - :construction_worker: Added Codacity. - :arrow_up: Upgraded Catch to version 1.7.2. ## v2.1.0 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.1.0/json.hpp) (426 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.1.0/json.hpp.asc) (1 KB) - Release date: 2017-01-28 - SHA-256: a571dee92515b685784fd527e38405cf3f5e13e96edbfe3f03d6df2e363a767b ### Summary This release introduces a means to convert from/to user-defined types. The release is backwards compatible. ![conversion](https://cloud.githubusercontent.com/assets/159488/22399173/aebe8f7a-e597-11e6-930f-7494ee615827.png) ### Changes - :sparkles: The library now offers an elegant way to **convert from and to arbitrary value types**. All you need to do is to implement two functions: `to_json` and `from_json`. Then, a conversion is as simple as putting a `=` between variables. See the [README](https://github.com/nlohmann/json#arbitrary-types-conversions) for more information and examples. - :sparkles: **Exceptions can now be switched off.** This can be done by defining the preprocessor symbol `JSON_NOEXCEPTION` or by passing `-fno-exceptions` to your compiler. In case the code would usually thrown an exception, `abort()` is now called. - :sparkles: **Information on the library** can be queried with the new (static) function `meta()` which returns a JSON object with information on the version, compiler, and platform. See the [documentation]() for an example. - :bug: A bug in the CBOR parser was fixed which led to a buffer overflow. - :sparkles: The function [`type_name()`]() is now public. It allows to query the type of a JSON value as string. - :white_check_mark: Added the [Big List of Naughty Strings](https://github.com/minimaxir/big-list-of-naughty-strings) as test case. - :arrow_up: Updated to [Catch v1.6.0](https://github.com/philsquared/Catch/releases/tag/v1.6.0). - :memo: Some typos in the documentation have been fixed. ## v2.0.10 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.10/json.hpp) (409 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.10/json.hpp.asc) (1 KB) - Release date: 2017-01-02 - SHA-256: ec27d4e74e9ce0f78066389a70724afd07f10761009322dc020656704ad5296d ### Summary This release fixes several security-relevant bugs in the MessagePack and CBOR parsers. The fixes are backwards compatible. ### Changes - :bug: Fixed a lot of **bugs in the CBOR and MesssagePack parsers**. These bugs occurred if invalid input was parsed and then could lead in buffer overflows. These bugs were found with Google's [OSS-Fuzz](https://github.com/google/oss-fuzz), see #405, #407, #408, #409, #411, and #412 for more information. - :construction_worker: We now also use the **[Doozer](https://doozer.io) continuous integration platform**. - :construction_worker: The complete test suite is now also run with **Clang's address sanitizer and undefined-behavior sanitizer**. - :white_check_mark: Overworked **fuzz testing**; CBOR and MessagePack implementations are now fuzz-tested. Furthermore, all fuzz tests now include a round trip which ensures created output can again be properly parsed and yields the same JSON value. - :memo: Clarified documentation of `find()` function to always return `end()` when called on non-object value types. - :hammer: Moved thirdparty test code to `test/thirdparty` directory. ## v2.0.9 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.9/json.hpp) (406 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.9/json.hpp.asc) (1 KB) - Release date: 2016-12-16 - SHA-256: fbf3396f13e187d6c214c297bddc742d918ea9b55e10bfb3d9f458b9bfdc22e5 ### Summary This release implements with **[CBOR](http://cbor.io)** and **[MessagePack](http://msgpack.org)** two **binary serialization/deserialization formats**. It further contains some small fixes and improvements. The fixes are backwards compatible. ![cbor](https://cloud.githubusercontent.com/assets/159488/22399181/d4d60d32-e597-11e6-8dcb-825abcf9ac2a.png) ### Changes - :sparkles: The library can now read and write the binary formats **[CBOR](http://cbor.io)** (Concise Binary Object Representation) and **[MessagePack](http://msgpack.org)**. Both formats are aimed to produce a very compact representation of JSON which can be parsed very efficiently. See the [README file](https://github.com/nlohmann/json#binary-formats-cbor-and-messagepack) for more information and examples. - :fire: simplified the iteration implementation allowing to remove dozens of lines of code - :bug: fixed an [integer overflow error](https://github.com/nlohmann/json/issues/389) detected by [Google's OSS-Fuzz](https://github.com/google/oss-fuzz) - :bug: suppressed documentation warnings inside the library to facilitate compilation with `-Wdocumentation` - :bug: fixed an overflow detection error in the number parser - :memo: updated [contribution guidelines](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) to a list of frequentely asked features that will most likely be never added to the library - :memo: added a **table of contents** to the [README file](https://github.com/nlohmann/json/blob/develop/README.md) to add some structure - :memo: mentioned the many [examples](https://github.com/nlohmann/json/tree/develop/doc/examples) and the [documentation](https://nlohmann.github.io/json/) in the [README file]() - :hammer: split [unit tests](https://github.com/nlohmann/json/tree/develop/test/src) into individual independent binaries to speed up compilation and testing - :white_check_mark: the test suite now contains **11201886** tests ## v2.0.8 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.8/json.hpp) (360 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.8/json.hpp.asc) (1 KB) - Release date: 2016-12-02 - SHA-256: b70db0ad34f8e0e61dc3f0cbab88099336c9674c193d8a3439d93d6aca2d7120 ### Summary This release combines a lot of small fixes and improvements. The fixes are backwards compatible. ### Changes - :bug: fixed a bug that froze the parser if a passed file was not found (now, `std::invalid_argument` is thrown) - :bug: fixed a bug that lead to an error of a file at EOF was parsed again (now, `std::invalid_argument` is thrown) - :sparkles: the well known functions [`emplace`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a602f275f0359ab181221384989810604.html#a602f275f0359ab181221384989810604) and [`emplace_back`](http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af8a435033327d9237da414afc1cce513.html#af8a435033327d9237da414afc1cce513) have been added to JSON values and work as expected - :zap: improved the performance of the serialization (`dump` function) - :zap: improved the performance of the deserialization (parser) - :construction_worker: some continuous integration images at [Travis](https://travis-ci.org/nlohmann/json) were added and retired; see [here](https://github.com/nlohmann/json#supported-compilers) for the current continuous integration setup - :construction_worker: the [Coverity scan](https://scan.coverity.com/projects/nlohmann-json) works again - :chart_with_upwards_trend: the benchmarking code has been improved to produce more stable results - :memo: the [README](https://github.com/nlohmann/json/blob/develop/README.md) file has been extended and includes more frequently asked examples - :white_check_mark: the test suite now contains 8905518 tests - :arrow_up: updated [Catch](https://github.com/philsquared/Catch) to version 1.5.8 ## v2.0.7 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.7/json.hpp) (355 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.7/json.hpp.asc) (1 KB) - Release date: 2016-11-02 - SHA-256: 5545c323670f8165bae90b9dc6078825e86ec310d96cc4e5b47233ea43715bbf ### Summary This release fixes a few bugs in the JSON parser found in the [Parsing JSON is a Minefield 💣](http://seriot.ch/parsing_json.html) article. The fixes are backwards compatible. ### Changes - The article [Parsing JSON is a Minefield 💣](http://seriot.ch/parsing_json.html) discusses a lot of pitfalls of the JSON specification. When investigating the published test cases, a few bugs in the library were found and fixed: - Files with less than 5 bytes can now be parsed without error. - The library now properly rejects any file encoding other than UTF-8. Furthermore, incorrect surrogate pairs are properly detected and rejected. - The library now accepts all but one "yes" test (y_string_utf16.json): UTF-16 is not supported. - The library rejects all but one "no" test (n_number_then_00.json): Null bytes are treated as end of file instead of an error. This allows to parse input from null-terminated strings. - The string length passed to a user-defined string literal is now exploited to choose a more efficient constructor. - A few grammar mistakes in the README file have been fixed. ## v2.0.6 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.6/json.hpp) (349 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.6/json.hpp.asc) (1 KB) - Release date: 2016-10-15 - SHA256: 459cc93d5e2f503e50c6d5876eb86bfea7daf405f5a567c5a2c9abc2383756ae ### Summary This release fixes the semantics of `operator[]` for JSON Pointers (see below). This fix is backwards compatible. ### Changes - **`operator[]` for JSON Pointers** now behaves like the other versions of `operator[]` and transforms `null` values into objects or arrays if required. This allows to created nested structures like `j["/foo/bar/2"] = 17` (yielding `{"foo": "bar": [null, null, 17]}`) without problems. - overworked a helper SFINAE function - fixed some documentation issues - fixed the CMake files to allow to run the test suite outside the main project directory - restored test coverage to 100%. ## v2.0.5 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.5/json.hpp) (347 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.5/json.hpp.asc) (1 KB) - Release date: 2016-09-14 - SHA-256: 8b7565263a44e2b7d3b89808bc73d2d639037ff0c1f379e3d56dbd77e00b98d9 ### Summary This release fixes a regression bug in the stream parser (function `parse()` and the `<<`/`>>` operators). This fix is backwards compatible. ### Changes - **Bug fix**: The end of a file stream was not detected properly which led to parse errors. This bug should have been fixed with 2.0.4, but there was still a flaw in the code. ## v2.0.4 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.4/json.hpp) (347 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.4/json.hpp.asc) (1 KB) - Release date: 2016-09-11 - SHA-256: 632ceec4c25c4e2153f71470d3a2b992c8355f6d8b4d627d05dd16095cd3aeda ### Summary This release fixes a bug in the stream parser (function `parse()` and the `<<`/`>>` operators). This fix is backwards compatible. ### Changes - **Bug fix**: The end of a file stream was not detected properly which led to parse errors. - Fixed a compiler warning about an unused variable. ## v2.0.3 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.3/json.hpp) (347 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.3/json.hpp.asc) (1 KB) - Release date: 2016-08-31 - SHA-256: 535b73efe5546fde9e763c14aeadfc7b58183c0b3cd43c29741025aba6cf6bd3 ### Summary This release combines a lot of small fixes and improvements. The release is backwards compatible. ### Changes - The **parser/deserialization functions have been generalized** to process any contiguous sequence of 1-byte elements (e.g., `char`, `unsigned char`, `uint8_t`). This includes all kind of string representations (string literals, char arrays, `std::string`, `const char*`), contiguous containers (C-style arrays, `std::vector`, `std::array`, `std::valarray`, `std::initializer_list`). User-defined containers providing random-access iterator access via `std::begin` and `std::end` can be used as well. See the documentation ([1](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ace63ac4eb1dd7251a259d32e397461a3.html#ace63ac4eb1dd7251a259d32e397461a3), [2](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a90f05d55d9d0702c075cd281fd0d85ae.html#a90f05d55d9d0702c075cd281fd0d85ae), [3](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_aeffd70f622f8f2a51fd3d95af64b63a7.html#aeffd70f622f8f2a51fd3d95af64b63a7), [4](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_aa8dca2e91a6301c36890f844e64f0023.html#aa8dca2e91a6301c36890f844e64f0023)) for more information. Note that contiguous storage cannot be checked at compile time; if any of the parse functions are called with a noncompliant container, the behavior is undefined and will most likely yield segmentation violation. The preconditions are enforced by an assertion unless the library is compiled with preprocessor symbol `NDEBUG`. - As a general remark on **assertions**: The library uses assertions to preclude undefined behavior. A [prominent example](https://github.com/nlohmann/json/issues/289) for this is the `operator[]` for const JSON objects. The behavior of this const version of the operator is undefined if the given key does not exist in the JSON object, because unlike the non-const version, it cannot add a `null` value at the given key. Assertions can be switched of by defining the preprocessor symbol `NDEBUG`. See the [documentation of `assert`](http://en.cppreference.com/w/cpp/error/assert) for more information. - In the course of cleaning up the parser/deserialization functions, the constructor [`basic_json(std::istream&, const parser_callback_t)`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a32350263eb105764844c5a85e156a255.html#a32350263eb105764844c5a85e156a255) has been **deprecated** and will be deleted with the next major release 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the `parse` functions. That is, calls like `json j(i);` for an input stream `i` need to be replaced by `json j = json::parse(i);`. Compilers will produce a deprecation warning if client code uses this function. - Minor improvements: - Improved the performance of the serialization by avoiding the re-creation of a locale object. - Fixed two MSVC warnings. Compiling the test suite with `/Wall` now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996). - Some project internals: - The project has qualified for the [Core Infrastructure Initiative Best Practices Badge](https://bestpractices.coreinfrastructure.org/projects/289). While most requirements where already satisfied, some led to a more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the [contribution guidelines document](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) how to communicate security issues privately. - The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute `make check`. - The continuous integration with [Travis](https://travis-ci.org/nlohmann/json) was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations. - An 11-day run of [American fuzzy lop](http://lcamtuf.coredump.cx/afl/) checked 962 million inputs on the parser and found no issue. ## v2.0.2 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.2/json.hpp) (338 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.2/json.hpp.asc) (1 KB) - Release date: 2016-07-31 - SHA-256: 8e97b7965b4594b00998d6704465412360e1a0ed927badb51ded8b82291a8f3d ### Summary This release combines a lot of small fixes and improvements. The release is backwards compatible. ### Changes - The **parser** has been overworked, and a lot of small issues have been fixed: - Improved parser performance by avoiding recursion and using move semantics for the return value. - Unescaped control characters `\x10`-`\x1f` are not accepted any more. - Fixed a bug in the parser when reading from an input stream. - Improved test case coverage for UTF-8 parsing: now, all valid Unicode code points are tested both escaped and unescaped. - The precision of output streams is now preserved by the parser. - Started to check the **code correctness** by proving termination of important loops. Furthermore, individual assertions have been replaced by a more systematic function which checks the class invariants. Note that assertions should be switched off in production by defining the preprocessor macro `NDEBUG`, see the [documentation of `assert`](http://en.cppreference.com/w/cpp/error/assert). - A lot of **code cleanup**: removed unused headers, fixed some compiler warnings, and fixed a build error for Windows-based Clang builds. - Added some compile-time checks: - Unsupported compilers are rejected during compilation with an `#error` command. - Static assertion prohibits code with incompatible pointer types used in `get_ptr()`. - Improved the [documentation](https://nlohmann.github.io/json/), and adjusted the documentation script to choose the correct version of `sed`. - Replaced a lot of "raw loops" by STL functions like `std::all_of`, `std::for_each`, or `std::accumulate`. This facilitates reasoning about termination of loops and sometimes allowed to simplify functions to a single return statement. - Implemented a `value()` function for JSON pointers (similar to `at` function). - The Homebrew formula (see [Integration](https://github.com/nlohmann/json#integration)) is now tested for all Xcode builds (6.1 - 8.x) with Travis. - Avoided output to `std::cout` in the test cases. ## v2.0.1 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.1/json.hpp) (321 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.1/json.hpp.asc) (1 KB) - Release date: 2016-06-28 - SHA-256: ef550fcd7df572555bf068e9ec4e9d3b9e4cdd441cecb0dcea9ea7fd313f72dd ### Summary This release fixes a performance regression in the JSON serialization (function `dump()`). This fix is backwards compatible. ### Changes - The locale of the output stream (or the internal string stream if a JSON value is serialized to a string) is now adjusted once for the whole serialization instead of for each floating-point number. - The locale of an output stream is now correctly reset to the previous value by the JSON library. ## v2.0.0 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v2.0.0/json.hpp) (321 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v2.0.0/json.hpp.asc) (1 KB) - Release date: 2016-06-24 - SHA-256: ac9e1fb25c2ac9ca5fc501fcd2fe3281fe04f07018a1b48820e7b1b11491bb6c ### Summary This release adds several features such as JSON Pointers, JSON Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed. As `noexcept` and `constexpr` specifier have been added to several functions, the public API has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to [Semantic Versioning](http://semver.org), this calls for a new major version, so say hello to 2️⃣.0️⃣.0️⃣. ### Changes - 🔟 A JSON value now uses `uint64_t` (default value for template parameter `NumberUnsignedType`) as data type for **unsigned integer** values. This type is used automatically when an unsigned number is parsed. Furthermore, constructors, conversion operators and an `is_number_unsigned()` test have been added. - 👉 **JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) support: A JSON Pointer is a string (similar to an XPath expression) to address a value inside a structured JSON value. JSON Pointers can be used in `at()` and `operator[]` functions. Furthermore, JSON values can be “flattened” to key/value pairs using `flatten()` where each key is a JSON Pointer. The original value can be restored by “unflattening” the flattened value using `unflatten()`. - 🏥 **JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) support. A JSON Patch is a JSON value that describes the required edit operations (add, change, remove, …) to transform a JSON value into another one. A JSON Patch can be created with function `diff(const basic_json&)` and applied with `patch(const basic_json&)`. Note the created patches use a rather primitive algorithm so far and leave room for improvement. - 🇪🇺 The code is now **locale-independent**: Floating-point numbers are always serialized with a period (`.`) as decimal separator and ignores different settings from the locale. - 🍺 **Homebrew** support: Install the library with `brew tap nlohmann/json && brew install nlohmann_json`. - Added constructor to create a JSON value by parsing a `std::istream` (e.g., `std::stringstream` or `std::ifstream`). - Added **`noexcept`** specifier to `basic_json(boolean_t)`, `basic_json(const number_integer_t)`, `basic_json(const int)`, `basic_json(const number_float_t)`, iterator functions (`begin()`, `end()`, etc.) - When parsing numbers, the sign of `0.0` (vs. `-0.0`) is preserved. - Improved MSVC 2015, Android, and MinGW support. See [README](https://github.com/nlohmann/json#supported-compilers) for more information. - Improved test coverage (added 2,225,386 tests). - Removed some misuses of `std::move`. - Fixed several compiler warnings. - Improved error messages from JSON parser. - Updated to [`re2c`](http://re2c.org) to version 0.16 to use a minimal DFAs for the lexer. - Updated test suite to use [Catch](https://github.com/philsquared/Catch) version 1.5.6. - Made type getters (`is_number`, etc.) and const value access `constexpr`. - Functions `push_back` and `operator+=` now work with key/value pairs passed as initializer list, e.g. `j_object += {"key", 1}`. - Overworked `CMakeLists.txt` to make it easier to integrate the library into other projects. ### Notes - Parser error messages are still very vague and contain no information on the error location. - The implemented `diff` function is rather primitive and does not create minimal diffs. - The name of function `iteration_wrapper` may change in the future and the function will be deprecated in the next release. - Roundtripping (i.e., parsing a JSON value from a string, serializing it, and comparing the strings) of floating-point numbers is not 100% accurate. Note that [RFC 8259](https://tools.ietf.org/html/rfc8259) defines no format to internally represent numbers and states not requirement for roundtripping. Nevertheless, benchmarks like [Native JSON Benchmark](https://github.com/miloyip/nativejson-benchmark) treat roundtripping deviations as conformance errors. ## v1.1.0 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v1.1.0/json.hpp) (257 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v1.1.0/json.hpp.asc) (1 KB) - Release date: 2016-01-24 - SHA-256: c0cf0e3017798ca6bb18e757ebc570d21a3bdac877845e2b9e9573d183ed2f05 ### Summary This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the [last version (1.0.0)](https://github.com/nlohmann/json/releases/tag/v1.0.0), the following changes have been made: ### Changes - _Fixed_: **Floating-point numbers** are now serialized and deserialized properly such that rountripping works in more cases. [#185, #186, #190, #191, #194] - _Added_: The code now contains **assertions** to detect undefined behavior during development. As the standard function `assert` is used, the assertions can be switched off by defining the preprocessor symbol `NDEBUG` during compilation. [#168] - _Added_: It is now possible to get a **reference** to the stored values via the newly added function `get_ref()`. [#128, #184] - _Fixed_: Access to object values via keys (**`operator[]`**) now works with all kind of string representations. [#171, #189] - _Fixed_: The code now compiles again with **Microsoft Visual Studio 2015**. [#144, #167, #188] - _Fixed_: All required headers are now included. - _Fixed_: Typos and other small issues. [#162, #166, #175, #177, #179, #180] ### Notes There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small API change and will not be entirely backwards-compatible. ## v1.0.0 !!! summary "Files" - [json.hpp](https://github.com/nlohmann/json/releases/download/v1.0.0/json.hpp) (243 KB) - [json.hpp.asc](https://github.com/nlohmann/json/releases/download/v1.0.0/json.hpp.asc) (1 KB) - Release date: 2015-12-28 - SHA-256: 767dc2fab1819d7b9e19b6e456d61e38d21ef7182606ecf01516e3f5230446de ### Summary This is the first official release. Compared to the [prerelease version 1.0.0-rc1](https://github.com/nlohmann/json/releases/tag/v1.0.0-rc1), only a few minor improvements have been made: ### Changes - _Changed_: A **UTF-8 byte order mark** is silently ignored. - _Changed_: `sprintf` is no longer used. - _Changed_: `iterator_wrapper` also works for const objects; note: the name may change! - _Changed_: **Error messages** during deserialization have been improved. - _Added_: The `parse` function now also works with type `std::istream&&`. - _Added_: Function `value(key, default_value)` returns either a copy of an object's element at the specified key or a given default value if no element with the key exists. - _Added_: Public functions are tagged with the version they were introduced. This shall allow for better **versioning** in the future. - _Added_: All public functions and types are **documented** (see http://nlohmann.github.io/json/doxygen/) including executable examples. - _Added_: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe. - _Added_: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation. json-3.11.3/docs/mkdocs/docs/home/sponsors.md000066400000000000000000000006141453145653700210660ustar00rootroot00000000000000# Sponsors You can sponsor this library at [GitHub Sponsors](https://github.com/sponsors/nlohmann). ## Named Sponsors - [Michael Hartmann](https://github.com/reFX-Mike) - [Stefan Hagen](https://github.com/sthagen) - [Steve Sperandeo](https://github.com/homer6) - [Robert Jefe Lindstädt](https://github.com/eljefedelrodeodeljefe) - [Steve Wagner](https://github.com/ciroque) Thanks everyone! json-3.11.3/docs/mkdocs/docs/images/000077500000000000000000000000001453145653700171725ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/images/callback_events.png000066400000000000000000001317271453145653700230330ustar00rootroot00000000000000PNG  IHDRсgAMA a cHRMz&u0`:pQ< pHYs  YiTXtXML:com.adobe.xmp 1 L'Y@IDATx]U>ou "bkڟPAQ&"أ>c7jb5DXQIX)Rò,_ͽ-,!7̙sg;WO< x$I'O< x$I'! ʺE5M`ڝm抗/;$H@)ta[͎淭$pWV]$ue4uewѮd{nO;6W7-rh~ے/.0O$Cp7H{B Z.x~;t;9a1`?ǭ8vA V~N3J^:P;#pD v21` 0 j Nc".LNggiu%}كguIUw`qmhǭ8vmD nn{p.ZXuRvqJ ӁGIC x/| m0=FcQ@OYiҝ 4 4Np|1.M46m_FCӃ] 躡MJv]?hPFY !lxa_#59h#<ٮֿ:&ۃ[)WRx45?ډlgps/M _W6ap*x3>YlɃ8a9,8+`wIN֒Qvv۱[~ nl2u;Ur1]hֹ3 v5!(p.ȕiiSYǾtlrPG;N|ya9㓃|۽r~۹\1Az] 8$܌w 'w9~44o<8s x/4 G5lHș; 7 | t ? 7e;xI=`99O;Ω/y~sJ@ׅQ<]G@*Y3x 4 \; n`i<w]PI_Ppgge`;x9?x _$ґ@go Cޣo]=-P)mKmȭɊ;=Jnj;\\$ȇ̊0H X)Xء6s5@V0++4>8 tC2 6g ÁO+@vZGȆG7@vT cx;bB  NX$hlZ>Kw/~%uvz! j /n,+YO=`O` ȁ~@v`ä eA |a;@qWlr<x:l as)"V B9FŰP.=a^?(Aǧ}.R!Q2ɃsS $p$t~J`4tOwTЬ\<J #>O'02ih~l`l,l4p PMxyJ@s*O:cدwT\a`9p?*X'8 |ļ>t~p2P4:@&]QAor,uLqdqlW@v,7ys#WoG?o)6?rNE:depk|8(|&Mp֊- _ȂpNpO cW y2N@Bm3rxCA!@+>4 \+L@2IKQ4tR2<RH@lG?Y9!|Hzap4vv|N]'鳳xqY#v|ʟ !Y94+H9!hjx 9adx+6I̡s+Ǣ3pA <iو82!<|1g $0"b@V^]aHQ*πRa:kɺEAA X &TF&n:4 HެlS}븿%$T3;+:8'I `:Omj y Ip>2r莀H?>4>P'^;p=E>"=_h52#Hˊ!X>Z@A̬wN:p` `Qv·O@89`p zXE)]l7 7ԸTΐvŶx/I2^ $un h2 /Xj  $芤+"ßqt8\O+S&OD g' (ȑ;NCǛ@晕z YƗzu/񙏋Џ< He]*]XW>R1-}|x ;f }E@v W0P%Џ J|(@E $ ] w7]W!L2;;.@ '0Iϸ9!t Pwb` L5#ƀwE@~¦de~Z2ÀvMG'@V> :<67"qN:wvLG,M G9=̯T:V݁Zk#mUce;[r2,?G;uoo uLyΠ y@]faN^ZÚ]`H6+0ESےN~:.Ls_Zp~r jΦ4igng k:9óO~l+ҪI'O d%*y^;̯ <~JΒϤ'jjH;I4Cw_{R5"FĻ'OA du?gp_w8Š?HşaJaڒ@wrѽx3SI'GٝOΡL_4u,?nLS +mJ- 6+V#Sd@kޞI'O dwZc̈́Y@ԐEƦɱXy` xR(/ZL7GHl'O= dw\M@UЭgYX,|4eMYZGE**q<Ó'OY+gzx YO#XȜr{vO< xnH@w:7Or0<Hi!تj}<ͰlLҷ9aU%mQ='O;GYH9Iut'@%ீ<z:P󭲩+t^PYdC< Zy԰X^Vi='OߦhNJW ܊bY(}|t(T +NG^~VaHف2m-2Ɏ aT嘭F"ݰkcB7||A3ǂQߺhQWs+pxz'O߶t[T˵lH##ѕ,"2΃ˆXP҈ǎP1FyJuPۃVay&bH:-ܞ! $7=Eh4U>}|!+PgCIYiI,'rf~gUD*T[TBQi\U3?`źsVŜ0{D@Ӵ*6kgޝuun`Ê,eV+>nG.:E_?y=.;*\i4J_?&}pH':_'ش&sѴnN_}ۢA݁۰R.=GE3t#u?lqn6&oߜgwf\Krf-O$7^zU\F]͙U{ѭK K$/lJ2ȏ.:"r"~B-[i_4J WZr)TK՚FΨX۴bmh%HjV:TTk_-9tChUTtMeeYLY -LPNDELJjގ% N9'D&3pI dzz$mK vbt5s.{(k[^6(Z׿?Ug)F] V>#5 91@q3J3i?c%_}rM҆æ[Z ШQ5u͸+n\Xg* NxeD&-{˕e{{ld(WNׁ_M|coq)yVqZ:(xsV<龛 1`p·~Pҽ-ɐ;~dGi:VXs^QG Nl;=LO} P{5e=?ɼ΁`(C߾<5q>q=V,54ėY\?r_Xs:q.yqU0SSpPא~8$$~TPQ.g g*4mMsS Lf5u-TL>::Xt<~gqwArE{畉!_aL*X-iolf+so?kK'2cɗR ϼg.K bOluf\BAê=sxᝦm,tnXSOM(JV~xkAyw>2nz7~\o4>H(O~|wzqgF5LKAs9VD@қg.EFU Y+G9xH4x-qHOms;'eƣg4ESȆp, ۋ}<_u>jɿN_R}Iqr`I_u"m]W`>{˜#kGxƗJc)NuK1h4|הiB_q3ofT&5..*jaSjZ \S7{k~C޾+.\䃢|W:%6ŭŦ?pxSc|x{єt.?bUO qYQ?cpĂ~IIcyӋRq  M39ތJx dMӔRHJO4SUf(8*K 'xC~?Pu!LyuWT8eȅa20j 04R*-nPֶ~;`&D \е˨Ӗ3/aJHRw]p\S#߀K':u|2<#ۛIdžy0:q*NҾWV4Ω(c3YZɓP=s쉅u>z_#╌|[( ^?_W+fO3A{\16)`zI"#d73PmFSR* ʕߜ>8Zv:Y}Ï egԆژ b&vZR8e)Lh%6 zB7j֛yfӏjbŨ;[h0ë\ݴt0#ÃJ9K ʲ l.Uy 6TuGyJ'uF+ճz6~6:SpV[´b庿y}c.՛G=tG,Mi:q2{غwm0xI*)u.XO,H R --B[#rOcDĕxVNwPHiDZ웓(H2l)+GW.6{.-!~a~מіGj6o~?ƕ)f>n~LRwņ;"=J: ݷJp݇j^P0,k֮/ єR2 >Bf2?c+i(tB1Jdx%xt6+We$M^~@uĐdT;{@e2Ka GSiPͷWwNqdPp}jİ/" y7.Z>O*4u6GagdW7O0ߏ4r28tƝZuwM ֲ_)K>fXF)8-< Yaaݭ*+YQTdZo6[ѭ;Ɓlْ.Pf \FrgZfaqxc)~.9E,SV?ⓅC-А.i)ik˥{{ɬfpa`Ɯc{}TPgSēhqkOA/#bw`Fw\)Xir/[0TYm-ƺx/u׍ #{'-97!'S'8BIKP%5FIUSX.Ӹo9lܮٴ,-ş.1 {6ev|VqZdH4uQF3~pGyEI*iL11SS$]/A4uHjknMN/Gr˴R0\g`Ę(Vfs}P'?C؟X1PJYn2FT#Iɑghit|I  !=UU&;Q016z~ySȍX9PvI+о A~G3C4X~}o,C `Ӳ4Aj`8hB3R1*L0lg* !^nʇǩӸ t?wag|{!5?>B]k|(|:ӽQ"/.tׂsqhi7tZmx<y<Ega?pÈKqH[[IkcU3WP'݉4ޞpA9zV}P63$| q.(FR\Q۴vhC`[1k : spJgj9aHLH!G KOGC |4-ð|ǔ;I#l, p⫲UCuRaܙm0 g~[Å?FLNe̛֦F - =8q%j]}JKT^O*Y_g+ Z<22UVφfaJvsWHQ{,V>5)h~LQ{̯J%"ƝzNv:ji71Д؟A?KLӁ_-!KP{?s6V,}|̤1<5 .4Y?XbkF7)e__4N'}fC߹:Э9c^u Md]U5dUì.}ta8qXQuK/MX)ѓg0rhnj\{<*غI^gDov~ դMߦ1L?e3daT;^DBL)4RTH,B ;|c&quZSD04KD\KG :ᰧӧ tvO9GnEF5/*1;9=H_y\AbIc'5k11l&ЩGL ӫ~8xSdϊqBa}M^iUEǀN/ӳl區G d͜~n#xZԚte{$v2ަ6os`p7'!i^<&4biD^G>c $}K 'DIc _}$5[I'^W h ])uLw6.g_Qޔi%%jfgb8凚9Mg y Kdup-8/y̯a=}Ǎڦ74M:XvíqRȦBYSmtOVCoj$P䟊y+[6L%,&N_Y2#Sj̭ 9f@9?'w/ ' |̕Ceߏʕ1~7&\ȠG}yNwܼr>t[îpKrU@TC$<UCdM?MºYim8$0L(Sք-M,Lwn]}7`/#6rN_"ݩ=DJbhMY`9jW %Mou9棁r~/e{ rPa{Q3H>,ˌ?eRT|WƁ ۜ]'lwfY*Uxn9.Odvih-(Lxa 9&bc ²:&|_k<ǮL}|OMJ~9|Xhȑ,؆2yVONʅ97chNPp J&-#\S^°{\Y /p%䩥\rvĦccjɴ4.66GB7OYG^|J0e+WG8En*07 (:$dtv'X iq yLBb7T= CgΆRkSSRnrr?50lrh"%? 6|brފrP b39dl5naI'0vOIҌB&*~ ?#3F~3rv#J#I5\\lȪhXb7bڃJo@rQVSxmBڔp%d}$+dr;5Q> 2XeY2X>B{ 5yR¡EV)"r2⪃T9!nZ67(ONyMyT.NOnj#߁(O||uf1䵰 ʀq2ҳyȝ'dT~ @;81!/mZU/>N9qP6r cNSd𠔔+s(dPAP6 Ib)FɉLSe SSА*'<꩟;y>ސ91}ϵ-%@vA"hLfC^_b;$9V,{ǧX[@f|)e8&w7ӡ+d˘} yx^!CX:DuajO _!-)so%0fSpBfÜmƽ=wńȉ<.>o,:ϯ}!'xk(3j1^/wn)wt愜KxO䙣T1yPCykSpUGH_<r ^UbKGcyT `?X5CHSrzS>fJotvG'P W-dƊPƴ܄zFАSrS'KvsPku쩎/<iqU :'ɯ)O^neHcEWiݨ4NA9* l)fg𵎀AGIG|#jO!0fw=4%00<2lt .hGkmp†,`0aj 9(*=̄{rNVjhw&aAJ~ ̣%>/G*MhAP$Ʋ&Y,3x`-U@#BVq&L_` :59:J5DLn}rSŞ@g|*',mX:PL6A61 rk2#|#˫tsݚvN4m[ǗnXH{\Ζ^1L)s;$ : 0MJ'])e@?mf<7:ڃpX-t0zmޮF.rjoKS\ϔ`LqrzY/|DW"Pk8pyOק%ɔI֖riI?߁TD3VujX@Vl ee~73k9*(? `eCPKl0c5##D>_(%݉L{oGZ' (9Z&UX&rD%Ef&zfĝ CS b|_=QڿMEo" mF}v[-+6R\JSrZhtk^VfOսaqu"ZhYNUh]I}NiN^_.MW)اZc#Qo.A g~ M=ʤ i2eHAHn}lR腛U-hI E x˛Edt=ޚQ'`bJd08P್@ J֒qRZȀ_%':%L$N-8Dms#j֏}5.%sGwu (ڨRn[_0w^d'D1A]gtg6s݉nL#~}Ptq__V&;\RϾmPdF([ x9L ~8H K89 ֵkS(j0 i)?xD(!ܳ$!H(.q-iZvN[?MY\)GykVg( _#:i0͌=+U\y 30?qKCprm_ɟp0(rݦ<%!Ř192X%V33le1:SFr Nh1Lܸ-#wfe !w&%{?-Iu3Т$jaլt[^ Qۍ/SWZ]BZd1q9:v6Tw_f  cy[KR柝YSyVrMi#䦬ںN]Ep2Yo\nEhp4 \*-)>tDzo=jpغ˵Jtq00y W«q*]qľGu/g@ul\Φ{3'}c~wabUf!b'5toEK1O1|kAWbƳ&N o,+dM,thpoUI6]aj΄,(cf/d#ȄDleXmt(.EE#y#}w.J.M;&`A&;χ.Ĉ  T9eg蜱Vu^rLLp)/>xJ)oNӒM$1l9uӻ%ysdF92Sq۾O/TE{"-liFyX vkӡHK1pG:}u uGd~9s |TG,{\\X93rP0"u̳sMn֐p _#qܥd]F?Əo2kG_4Wԯ:yߟ1ʀ&OZ}Lv.}zt ޼:Oļ/tgTpqyEz_0"ϪJZ:^[?<@Q 'CT#Mq5AJZzAqǮOGyilE梃<ڷ @9[ L%$KCIt9> r3Purə#g72T j^ugJPzRu N% 8* j("M< A'O.[]: h3 zKA#8{,93v9g];m'{9>fGTa<\xΎ@)XG1m<[5?M {+n^ޞnFqiscZk [ΓDM7-\vw\Mw۳inIn-4¥&! ljk4iu}p1 .>ao`6Ц^o8Mv#ׯ~^XrӅoGW\ѻS*X%<$P 5xJqힲ'ٰ#L#] ,HOg`S]|30RKpFוgrwj4mat['^̮ʾeLWw2˵3Nmn*Nn6(x.h94lnPx7OØ4?|ǸAz$&kqpp٧GݹjOztl2&7,Z/oȇؑ3ż㝪F"JnNNV*sy1wfepm5x|@{N!V-33|t Ơ7I : D\G7tΎXڐFW|~Q= `.t#c<ʪ^9_p/Fv|Φp^WtSwENϡsz#.ǫOf߫R{u>ˌhRÓ?ı`WHS`Q-IƩ7qȤ}). 2tNL .D,\|@ ɓ{l?Ake./YU?|לq:Lq~R+ ڬ |%{= ,ڕؼ`M7V[m~?=vc~S si'R=9|3NʲpUď?LqӽdJצMYO]wg y?JZ&|֥2Ȇ]Oꢍ/EOƯtOŪwZaI>bP 7(*|RR)|oع .(%.}%q~ӡ /Xq2<"o7U]ob84~S§O8^/SLH/S# :;-\"-oOOGgDq_ kR/Y? t|HSh؟+,뼱VyO@&ɔe3:H7<ꁙ5_M@S-\]ϭ֊ᖵpr7LVQ^G@1t="sէno"9׮CS5n>UkD=Yeee]QEg[.ꪫ8:7 Z7Ħn3 m7"w}-b@/ LF0Sd H_='F)F3n2 DE=(L˵+:K-s:(ծKqLJn-nA?yD^!3ĽBy"~>bF@* ʱ^'!^Xħ7p/78HW~ 픐 O þgId%24~:I㢼w].yޗdi]JK~/s2k >LJX*%SVpqgfNry8 2}k@)D`CQܵ^qq7ajɌjS|y]/]Բ4yJ@@Eu-/UQ FED=-%ag HDΒ;t::HfOx80U >=hca,_vxJ#VKR_mw7_nP:mI6( /|N~b='a:ߏiO*zr.-ep7)ӊUI1>(p/_c]E k|kSL\$,ENJڶ{ { }g\Hw 3JwREl5}ZIOLo1.M{QO5H{.6o\7XFGW/{_d9 qDGrn؟t6 ^ьD)pyĒiS\aǁp@MIhט+5@yjjqo`ɯΒ˞8:H5۾z+$ĸ txO9oӫN= Z.jP=ô=|??Cu+X"K7@G2A-5Boר|c}7Gfur35{B/?;nW^"PS+HPUJ^"owɒ)oW똥B&2z,Z7 |gn(6GQKb2)qVpy&*GMih㳍!< y m8WJ_`Z9y eb8\`7rqe P?"%|@YPg[HVdEi,. =oVBxFr?utpxuui(~Ǹl*]V_$:6]A`gub?f+&٫ ǵO(r_)ݒrY0!UL@t9tȗa9BOqͽjd퍥|@_:?<ʲbMFQT_'GUd8W= %zJX_^(Lt?-qP~ :063o>e\M!6F P+d(-7ފ7W1smTl2MR2k[GH`:s;s`&tvJ2:GARHU^ Jd=JLרx QQB4(R^FK_~ybkя#ü%pJ?T̨[L``jPd@"jw{$~y0deVGKSP<͖aRjī`4Md+Uwhh<8&;cN ]713-J )WYDsfzf.zx;Hٷ5,ZlkƷ9Jk+"ܤ4[i+P̣VVXkM)P6ro>y%Pac"^@~0l u"`R,H9VxDUG/w(̖ax9XxgdURe_(}n5[d:[Ɋ7 7LWX7jꐩnv̔EE≂ӡ4O曖M闼(ؒttгc`zq-+2Yi3-itɚfcG?떜~-FůR^tlkI#FmVnv˱k Y80 # =*QbN .>c閒ۚT'ZNV'<ںyj#-~: 6thSkނ#G` z0L #QPF4`Lzt>d39z5vxڃ4VSqsp  kI ?dJ)Jij/yQ!* s"(2yR uh~3Ցr& ByՉS7)^ lSu/ Y; 1-l4~ӗ1꼾KNKc.ـ΃o.ul !̎{Od9GC:OoaTǶt,)<6gΜd`;1JsyG"㻭\)eZN^rƴ|W&9"WrFPQp[ OD|pj4b*|B@P07M6z0# Ap |&'8A[Lۡۢv~h>j@||tEXCa Lp|:-&@E){vE%201G]nXG4hpr"XV-+W}2$8VkCrQ౼u:Eg9kq" lmyiJ';-q3Q`M*Y.zOηvsmRBh/c1{=p$ݫZЩ\PѴ _iM\~ֈ%0{|̾ /檆:Ì ㋍ "@@`}ÅreCUYψZ1[s;zt6撷iHRGleVG/0! Wq;냪ʬpxFGI&\qS!;S'[wŒd|/׫x+Fq 0\nɟjJFj?x*(Ri%8`_y14n#O iGe e:>mX7-xG8bc /6%fǘyrg:/\֭Ojcl,pQ,C-FiDZo46pLY>PG#9aO*t&XxYgo]mud8.@ 있$k>N' po?>GxN/Mќ>X{8$^K(u*d: o뫑ݶr}c'=RـȜ)xmKy&iSI5VOY?kYYUOV[R)?cq f}yZR(@i5U=q3a%ŀzg8<驧ɠ3݉9+z*Iª. =zzwfv]Uқ^*/֞Y,-ъ蜰S @>@;XMh:u8'nHP`:]Y;SXPF܈~F+CEy1nANKNZ%t~bB5l#L:ڄwJ8a?*I; K!U=b3-} 1Sa9pĽ2qCн  ?obp^'8$Ҋi,uE~%KݠŒk' gm@WITx'#al+XpŻQ8b`lxhklX&hx$D; B`bڏA)._D[ Z =#WYLkmlUVľIK_P wi`oOuO{V@7n>]? f} HMUZB.Df+1 DxYX3wb"TH@~&#1qƑ:z\` I̴`TT [dRO\[֥NDBVo1t0ӐGiH5@HCPG,nAa [FX4/TⱳH'RLpXM dACG}Wr D ̍'-=5P`FJKt9}Ǟ ʛ_ؗv8CB5< l.RY8.=Rܳs#-8"8<c$1lt Ym;!0 Њ@aq!KȮ $ڧ(Ͱ+zPwcz١r>rlb|߭gYh rwɼ VMYZz:Px] ߜM&`[ZJxF0>qffADDS䚊;\xn1d=c۹7ƀp, `#?_&N$jI"<>,<*坘[9ሮ0B2q: {2ׂs7MD!]pޟYnͦC?U6f/SMTh#^8 98NI!G?{ Qn ~:-m8t N\KO󹗷zCH)ؙi)-V&\"OF23?qm!10u7޶_I>i*+EWe=rOt&0ғ]i}TԁD,9dUL#?acmfψU1b 98 )bֳ]SwO'#Lj(?Aa3|F<vk'/\x.;3Ev鮆>Yl ͪ@`'za'kh=x]*# 6A'-83>Fg"G-\(j9bZ `">=_ \r.jlED6y \ȍ)/E-x݌1zSTmn9|1l_=`6R.pJ d' %P+ko6VaW>kԽ]WfJ0c) YEٮQa,4 ZEF idF6m8N!!&=ߛnqB={}Hep"|Vɞfa lGHt%[K\͟Vzސ&BH=K@tUlѽr&LfOb:b9y"b}. J۬QL,br Dhy0̘F3 Kr/n%vP#JlF"10غ\I>Rn$OǦt|r}ȉĨa˰?? }Kmuyoph TPB`ƉX;,Aq4hecD>n>$#Ɖ<}KsZՠ x$,۴{hXci‰U,R ":?$GbZ2LNZgJđL PT(}BOH}rvzJH?;~Ȋ"CoSAo=O)Qi f=L➁-/ӗC%t 6ڢFG-ޠdFc\'uzwj _^=7P1UX&u~I lo+" nR_ok0H2͵od(0F͵Yp`nxv2TO'8m>".Z> @'qŀcŰ# ]6aV DQcbW!3U2lؒ?*s„Y@DД6,߬9̰ 1j܈1=#qܸr92SaX![>.g8qHčS9ƥðR֕Gen3Z1-]#MGGaЧbyHcbݘQF8.D:m^z%Ԯ/+Yd ץEzr]3'Wm*{c|kLֿAy$IӯqOIetܟ1G-Cymr}rZj˾{;0v;D2ʥK=E1֊55dM.)#nV&QP]+O)c#/RI0z%|VV|$X] $nsC|TqTm +njH[QVZ1,7a]UzbeCfC -nꎓYP~ ʶew0ߑEH& Us7n~E G@{N81`ɯɍljU~S¾M:\ZAQJD,N`:t_m @=/+W_Ct-lFܟl]];)>j{rg3dQ;|yծ^pKa;M^m ºlޢy^Ktsٕrla8"Ł#,Y2~'~L;}7xtA]'X01;He>-BeXek[mFuAUK/{i 9EiHޱbaa"bѢnECFQN +;-h:_tQ׏Ž1IqAlj~0 _C?ڤ`z LqTSTU6󠪜NyϽCe1&"k,asu1GK@`,/2uIdRjYT]^S#& [ʯTෘI&H~g+@*ujT  3iMӄ3TrBKS( x ds2@U#?^X%8BC捐Yžq;MI[b$VPU6޳Q@0;WHO}8c0p)/O3vq8zC_W-ƗՖla+Lw*RЌ=bqSBC0h/]@ b>ԀS"zԔ;}X{*lNO46xWgZz6cY5P{+b$nZ ]%c%|BR>e7u\΄pob&ua( fEKr_o$3b4-$v%||P^L_v.ha}R;x0-|>o&MX U̘堝׸U6)?Z3{k6F\Mc|ފ^3f7EF fh1 u#˭08hR7;^T㍺KΚycژmnp0e=^krM?ܕ@#RP" >CNJAb/lF'bLX$F,YXhf' [كyDzOQke WlDtHyʕt=qNn"oSY]B6hGSV:t9Jl8t` N3=3 Q]g"Qv\VJ0 ԍ83VLh_ 98)9#D+ gRꂂ;e@X1txv[3s"@i&c![Ͱ186O/Fíi *[ =̮Oi bdg4J"# \00f p.E:Yd_,ΒPWf*1m2r{x)4.šh䌅e 6)zH+uЁf0D膮 ^L`D{L+;Un JVfs `"yy,sqS?f p2}̨N/⢥ոCqP"J7?!q,v^L?؁@F. pR>_y]7fWPȈ \R)4MY:i Xq5/[:'bmdW iueb+s®`@.3&ކ-7jb<*\#Dam ȩ)PfԅKambrsR~z)>lUSwKSlTr. myi0'd(Nc\X:1t A4 K\/@u xp¡B ctn19O7$.΋aͲ@ϋZߌM0Q0!9\URP ~%iHXt [C\!`!VyaDಁXT|^4JUx\lon}$ܽkM_ ?޳M&b 2՘ewB ya`b50 FjoUTu] َS[8P+j:s/ j( ,Q%@u_`q,=tU1',{{!1t_I Ҳ8иn H\Dp` +BCcs#k.EE;.+ss?gD k~(1,Ss!AŤ`|{A&_Jq|%ʧS1V.fVTf6bœKd"RH۬YݶĶm;^WՒQ4'2X.vѡIi8o06<#^pV乮X+%. &w V#k)0?A}^/sgRפFYL /s/iZnGa  3EFz5{v9J #Al8{GTWUCpYN@E4f NYjqml|!i6*4&Fw+,ƕT9~{EI:kXg׳V)C9cS\õg'd A"uuޥmLq?{+Wk3=m Nk޷aMp{XqEL>ln7 ` =%kisme[B?v={e./;}G 6#$mcߗ=C:HDQc1= -`L"{<1>ߣj\[ R7+Ls[EMNmp-B7_q9 H8Bym8rJwX]Euz"[c]̷n!`;6S\LkGr^-F+~W[#hi'i(>,7/C^l!lSOմZdPjӔWxZqmzO3z^|Sj&X Xs7hWaJok[I h'oT{pny1:GM%w#f돪yuu]71T+:`qwPJʷB1fjǒgFtD.&6{{l1IW'Re&z'ӡ?cjZg[o.÷-pG:1$xB*̞m})g_`ZˮZ*#1l:: ho׳ w'B "[=BQK쓃+pXz %ь?lJ`F1?8-\i sTՋ's^1wɆU+}hy9Y|;drk. 񛯽Q*dhѬL=k3kɯ UXP_ձ8_9wmkK7~gdk*o5=|iE\j-ze SywYq=UHb(ZpHsy㙫vWl:nPzbA]tFVWϵwRT<[mÛxN0MPYZϫ7m PS}~czJ0G |^~TRSSxzذtCKqvZkw;Ok`JlwRvnCq~^ axCt`Gi~i8ʎB/ Ыgpo*3^[nN;Ge,(ȅZZrVTE~[qX|pg=Z|tή)gdxq/o(gz5?4~Gmf֮@/wbaLl&`ŷN(o5mKtփ"o\+]IƶGWPLi3ڌe8ؼ?O>Ot2VI[ S[WN Hն}]XїPDCAP\;z:y2[v]֮kCo~|?߉UZOz(}_C{_3:p0@HE\X$9Y^CQ% ˄Gk-hV}Z|M6£py˻_7~{40TGcy kF_. ;w/ͻlS[;ηW9U laT̢W^djGEqgݎwxf*=%Dr'#VrxMRիWQFMͻ:gYӾ ;w2_Oܢ`|^yT?b%Å6̿&Ϛ(ӌ^olա(ﷸvd Š"2SosRq 4KDDpS~Z8p@( 3| -y#3prfxlUy3DemAj٨8BCG 5\8rmHcsUE|ιA&T;a7 ;CS+NfmEb/BMq"O1E`+hϓ}G.TtO7m~dS-Dϊj%EIpǏ9jB 񴏔GujJﮯ7ݔG~)'JeE`0H{(tY6Aa$z@Y,͕p,nP BH7p 0RE&> /-IA?*rmOp%-gFP٭2C{0d-Kퟕ=L1ajنv|v$3 _V)SǂqqgY I"rcuÆGtt5 ۔42Ommp )X6"}@OF@--DXStu?hAUUoҟLQS1.YT2KLY>Ms6nR\s$}ʡ:.mɆ΁rE~zjtS=|]UJkWGI%'Kا 53nD0\`V *i1'R|EJEi}ې7q55D3D*{ &9#!n_`RMR2iHxtڽ~x@  +Fh/=b.JDx]?)dcKĎ<} Qaɢt }g= uCJց-q@"lMLuU`Ⱥ1H{êmCt`.YSwӣNa׈99jTkd5|A./Nm6V bXԭhKlжNdに8W 9#uy~wCk&XEV2F }(mKhVsPXg\xzC|mzrIF$ (Dv*hC;5xt~ut:ߔLQzfenV햲@f3U+k/A]ȋpOPPhUEAz;h#M|׌o!7RͪM~n`:1 Vz\cMn4U4Rk)#G*U\s&!88+Q0pRSU}qh]zqfak?% f}gAq8Œ)4kj@cJGbB y޲Wqs?ͲA13"Ë?fT ^7B8bt9:yxYXT>d]ch44V啸ȢG ճ{:\ K\œ 0f= 󆂑+< ַ1T0fi5|^ hrd*Ugp՟aEy8y]?vt¡$&RPhUGqqr`Ub 2`ޤ &D-8QO +2~Q\?]c^(~MH9 eHY7^2;n|Aҭk_E OC,Yʃ*)\~Tڵ}=f ھZ8Gn2gM'?5Ǝ. 6C/iPq"m̸CfCJ1IDATҍG뎄guq7iJW|elg05Rq7ޫKiq:5w̫ O)aJ|zf5]\$Z;ߗb>kjSk2++<CSQ]=S]=HM6S.[ݺu٠j"4+kC4mܰQ"Eٽ:_O awm+ퟱGBnT^xq >x{Ō;2p?Q+,,j!G>kX nżt?{`ʭJq6@ۄKC5{Wea_' _ݼh?߰1j%+z~lxo ؄&zgd)r#zd#*_ ;;Zդ$/=HFc4SGjN0r+: 3rü}I=o|j/ǰ뼥.c惡WwRLzJ7O4vXiiLT"M߮ v$>KfHqrn 8p MM̔ҍƍ8hIG܂]NEٳs,NjN|^{CwyOo p"CƈdnZ{~0~/lEWP>JҪ > őhUXtٲehF"e˼4Oęo9[o~vk3`pA?^9cfu>ٜcyqQ8ljo[8뎾zֽ/aՙ`oh5MaJBCG+'%H>0ϦRCI4Nj1/""Gp63%g_KwU[ZH55{t&F"wz'E:)XJٌZ`_ʒC6]?;򐙈·okO8ul n,[<$Tq qx,{ 3T5:Dk_ Ņ\X zn!B.,r?qW7rcDUWSq>3*6Qz6C ]Z0Yq&μ?~ZK\DA@hUT|űXM3 9yP%NYbc 1n 3X֔~*:Wh4ݶ)}ݘ:{ 71[Z el`cO e6fwrpxcg\zG@= q$&i\%PnS\j'{ID)?e] 2sɰ -wК[ HR]}Ջ ;A_t uNG0h"2(P}S_;]qXYg m4L54Qy6X])w)P:L2DInt }:~X̪O}A u' ኈn5K!מC|T0{_ D߅܄Ee㔰uUC/E&`95fڅ3:*(g pf|M>ԷqlYG GX*Q?jl݅K?xG qY4)"8jTKF.<~?%x l\`gUb\C 3KSch  DmtKpNa9l$߮Dho-Ւ%KwPI^sw/ ʼn$cA,$hthu8=v%¶o nXW̒u A0צइP I&|.61E)p+;^8_9 aiZboǘYRt!^Ws(+}h I0obv?J}JndWPgdhңKNg\ϣ2W$SSc+pT㴘nC=į:06 zϦ3Ꙝkic5qBɩDZ&: ww3mɫ. %]__q_B+c܇^ ?9uCݜoS4"-Or"kzR!c+ r_#g> ?xדD#<z8gtecūLR-Y;1-M(HC. n/rsYl+ƥg]^97sO{`J(p[0Î7_Bw1\X#l)Ξ=&lA8f^iV8jPNp0p0gV'cLc ͣbaZ&D JHdP߭q{`=qa2P.9jRkgP{F}TEFVbf UB #NS8࿆^r4;\>38y.Z Ƃ30&mEi)a XC4mi:Yyu<ˍ[n3!0X"XX`KM݆SX l"u4Y/|3j0Ad`ъ0Y,>{DtFz_j% f濆1\%#p(Xd%CԛGm*8pc,id$0%b|z~ٿ,pT%;UtCd!sjM4l*浞49rd y0^ǝ75z=A`O _PZmw.]?}otp)ob}@uշ|(v x/|!;Ucw9J,éNjSjKjqAWRcӹ檻lΒ1*4LU*zW.7 0Y>z !t<ՌOgBX=#V./X%3wM ^~"?峇[ЧG_V-k i7FԺ(ojlbݖ]n#\+S,7~^yeYeZى8v"K.(8Ff9ۣQEx%˥,@a_}!c.?+ % 3zgvf.j<)Ǡq_q=\Xq>èo&gΜ0~k$d cC?4{UPV.Vw~ȒE/0_ p6G]V4۟b` -3.3Lmn ACCrУ7Pأ)3>0flZcn0ŀdf;o3u*֗}ذ~ӎ˞D޺AU s rwHL?h<뒪ʅL$T>KeE}'KʠrS:1Ց BETU~bÞ5Z/euXym8ϩ&ƷVwb|sbYD7:)O]NN`,`vg=3GZ]G;E3ӝac*Сm]}DQi4h#ŢT& biב ؎OR]b\.{8mN)L$7.C,ˇ, vSvG/sa ^Xj\E>D$Lh8,i/TO8=3n#8X΋qGOv5[ҌɃ0)%w_qN Wjwo_u^y{SrF^\zN=;<{ÏUQDc6KHٿ}fE<b!4a~]&&@+ C}u{$iY=}i&Ц=? 7 R8L.F!F@-z>ChD)P"Z]8_||^nq[/kOͥgW?y J?\E򐘔劁zo+ id3a+e}vYcACݘSo _9PEL2@9?czQMg\PМB+2/þX.,HL RK.i6/l.\3>S':T O9z~@Ɠ}j"Y"rcБ_C%#]mqLcЩalc,2R ۚ m1E ([`Cq4gΐg52χiZ2ݜ@z]\&&~j3NBbbwMC 尤)'p~q88Րj0ȈEgs5W&Olܼ~kk.(?zh (lc%HtM]v:,dd3Pn @n#. ݧ+Pjь4e^S[b]V}ۜWm-/BL.~Q1G_V6L* `C|wQ0@[EGrTU|E$s8(zaOŮCU_r-6FN0 `Jk4|LqÖqxQ/ N̐L3U`pV5Մ2$ IHu D0`3_y¶^vT]XNAA4ͫxDX;eTS;r"aF|LZ>f۩O?)(ˀx` (Gj6YX#:I>p@I몄+7wYddH/$r峟S.\f_U#.W\l"ͱJ+=\?MG^_,'EĹ/}LOe{c'SɓY .p:xLx>]3aW.T\xz3 !g/a0 E9MG"r1m?щu0Ahv_[cQI3Duz&P1:Bw°9 W}49a7i]neEIė47 OK0+K$4+lBAegݞ̡ 򠖕yD/u=NRh!E2 r/y"uwn/}h>{LP y#Z&/+KRWy }:sR) IJ"eKoWRAJ??J(!cx_S؛i)L΀*K` v~A㛅3;,|pϸ;^{1 ﯺc|Rܘw"o# ӮXrQjJO$vq,/AZ:(tOX_ 9t&UW#bta {L)Ӳ@l.Y5nGUױ_Bn3P~Wׯ/J7Q9%zGgf{b +ẙ?|`Pa~xaKg*4u٩ncrB Vm]ȁY+ I~b{ŋ0w@Yq~11w!i-8O1KNnOxa41,B'];bOe$t T>as *o373{/T>/ڨN x(&4]GU37 gg$,%3⎬y]6 uٺfl)cj^,փ?%wʟ_ 8acc|=zB ǗCQLgp?6Ew@д"OF(Wa =/& {˙!DjKKa-cʉu0@'AwkAg:n.iE]se).i 1 1j|vZn&; B  uH"iY1Y|+#ޮV4 5 C(k,}Eᡃ w+X, UTz[r̓u6iO Y8(W40&Hq0i(RYQ᭝LG0}Ȱ_\O3-1|;wûE/t+"!\i0G (~iH,KFߨGhhe!A=ʞEY*nҠ2`'ysMh-[)X uK1hS%wX[΁^=!bO&`su7 | @j_p{?ճ Ʈ1XxݚX⩣.+}2Jae \jGkiyB7z¤)W^S?9 脟.褸=k]}Ej?i29QOF,>3 =D-9 XN%nCgb1"v0,KRơK\C${6$X8 5&YD~z]Itjqm=; =8bs]x eS?bWHR2,I?1 Ŀŗ/T\X ]E%V=f(҄4ƾ, 9b%kVr;H"ȍ|Џ!^\;ҳ%Fr \RQ'A?;j#gI`tK [998!`fn|5c:>HDOje>:6[ 7|u&.a-t]|FǺM=;S]_~  JBnЦpV17 ކ(зu%gq~W"\7<Ūq?q(o}[Egzfvϱ?t@"ZeϑH><0/l P1ti /0o [ayI_NXB\Tl)`GuGݛ7h], 6^EeXnj,7,ܮ!{I&DԍXI7AjkW]Y0ELM{N[n! <吥.g=>1bK0'•һO },T%[KiEp{Dh qz6tG"&`W7i/bo$ST$N<=#Scwh!4s Z_keJI\Tc*0oǞ dC?ŪEpO՟B/UUͫQ]مrKж&ULٲ2ҙ^,=7> 9vS.,}we4݄Y: IՋ0c]4{ я}oCK. 88p IXFZrd }oڿ+fIvylϵ?mڤ3Wq j7ʄPuLs_ļJF$(#B :pZ+ Y>AS568،-ؔZp+?UhI(LMpIˬ,fesT4q]k#YHf1%`PId*t{[5㶍S tc(l`G'ΫoR]k鬡Vp ! 1_?wd#gv4*K6 Ukvg 3^uJ#o6jd.X8IRveɉ S $3j$Ѵr=ђ>x^z"3G`"D|`2?tEtMiE@Ѹlmo|` 0ߕ޹:34H]@ L{I v(I\b,`QHYBU?q.b|Ѱ,S=؂ꇍ'\#[OTNq~0zfWSeKܬ0/޸ f3_@khV2Eí˗W4Wc{W{͈ZdDU^t6yFSwpnҜ9iq.v~)뷏UƿNc s앀L,F* Wp]ϸD S^DJ(6x5!~IB5}KM`KUsF0Y2ڥ"b8ŰSٕ*]bFt`$n|L_2;@%yظo› iZ,L@ wkuiֆp.f#oꊯd,c"\So?`Ѣ!fun9VC:ak7]FaT+fz]tn.BE df,c1u ʊ@,ql~-$L`SOjz{ >A⿨늋-xMP,* sk|E`ki##?+fʢ/"5* Hsi'88;dxZ>P>Mflvz X})\RۗDJ!;geU :m.ۆhl.|.E؍GNdm<zF90Vܽ3sx"ԤK"N_\Y2L̑ƍ +F  J" 383Zck@a \UygPE=ȿ[UQoI@E#CP2OƼ.N`=؃'QZ) 88@]hv_81.)ɸFm \ŖfBqG`W_eǦX]}o &``D@ZA$WjYЮ@KD@x2h)X-` 6%N3~u!,\d?\+D4bC e@ꏧM_Ys` Й'yq0`A€-c)6iN:7 81b^$ap 8p0#@*mߴ# 8p0`?i ?,#IENDB`json-3.11.3/docs/mkdocs/docs/images/json_syntax_number.png000066400000000000000000001102261453145653700236310ustar00rootroot00000000000000PNG  IHDR,#sRGBgAMA a0PLTE $$$000<<8UPP}yqtRNSܘ pHYs$$cIDATxߏ}[͡'wa.P!6f7]K!H6Q$K'XFˎ(AʽHVP)bn  C;K2ɱl+Ȥ$Z6]as뜪:UBK!ȃNk+!ȃNk|'T~P[ZB*[-!`9@KH .Rsx9RBKH%K%c]Bh ~gvJK/fZB*y_/y ܙB|!:J<n'<,_3tW)yZBY]ZR3"dǸK~1JÓ?i/_C1ֲ79Nk98kYimj?z&%@7Qz=63{~Op'!n@_RMmX7#f hkVq{ueQN9:ֺ o\ݻΌ,X*K˧~wTzS"ݜ4MSZ{[qU,__Coz3>d?}p?y? RW֙n Mkwˮ7U˿VWqv?_X=?k&=ʉQKw0n:6^ p=D$;ߣ_$Te/{5t``?iS-f3 &{NZ`ΗCI|&EOuZ{\r5U{XE zOe=P{҃=ʉ<u0zZa0R`9㖚zT%ȏ|'&& .XnZ1Zӱ<.aۥe?z-B>-ط촜LtERnRR5i)Zꦫy9nג5\a+kNljOīj!О]8ݠ0(snwr*r7q3XJId8n5ԧ^r)޾H`%^=^]]YdY9r>-e Icje}F׍I[o9)T־^zL4dqTRL-GGp,F0*RoT7W=4QK_Qx+*ݳ;A&x>3TDFXk Ay{`LjP@V*kW/^>MRM?w+i{$i[<]Nm{t[LLg=tsr{5Z6Z0[K v;5Q8͂dXž4o8;2r3<ԝ,wl܌].Ch.\L'7o- ǯOi9Ol#L\9zD7@uzq${XNnPэtɫ /{NkQZn'߶rSn~e{vUo%-w> {mzLcx>Xu՛vo  fE{QKPcvEV& ٿs`/ܝb!]oi0:v-]f0o2augA_rfsZZj1GB_ >:2v$?^=?!^1>Te|hbaTShP] f{ڧ^pq/w^ ?jrz픖TBggRCggAOj2.b#k͆bK?C˩rZKKv a>qu9%ei;۱{@hWZR]f-~cƽuꈵ}ZR]%e|'Ir-=EK72@Knu.@K(Qt-8h e]tF,!cZ`$h N_LN;zW:t38O֦.R{`9S,\>,t|K*g`5Y+Ƿw'mNь9{/3/os];2I'\Asvd3at'fcz`޳Vd;w-J|>i'X*j?$Sˠgӂ+H&zDY;Uwk|]ܯ9g/.IrU`jy85SZo9~3aYY1Hҟ2<_v?0RU57)' p앮&_ŧ/ϸl0m{g$gnTu^˔*}Z#gwr-߱?^=3~saiэ- n]g_ 4۵,7ZoTe9I71n.]ʙ}oM^7b Y 0rs)<{TTX&y^:}DpM֫ ng?UY͇y> D , |F~">/g|Vk6ޟvҸQԭ!*_S0nIavOg?UYNki<E3\uQYjϚi^ !p/H^AMozzDKBԈ]%N: f5sJe=5-^>rJK#QGDh,nj2"+negxEMozvZ,f*u4+UW+&ZY$vD%zq ? |M"{Jf2e /W@&|l/xLYi>eNvXWrXpu/g-Ot |͵_-c厺Ge^w]Yi. }o[?j]͙W1|kZLGz3)鷭C,j5SXΜ&M{=tBZ &B/Y۠e4 D>uu;YZUx;&D/F 6P6m=,Z I;ҭwfhmD4-ݨsmGN3Ky6SftUom~6hӻD.xVX{NxRG?} {mRLΆh_|%,ͫ"-}y_fxmm!ӷԉ_{ߥ_lK[Ϫ WWk*-8ζ*!B&ߞj& /fWv^?kktVSK^9sQ`\R`Уg}iw/-~ṾԌ=&Zӧ( txmR7m[[Yitjy˶^?kkt6*]2Yu'-~6hR뻶6kr{}~գ%eKZe2f =gE<;K.Rcr|SkKe{Vh)Z:ZRcR -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -R -E˚@K)1h)Z_.βꦺgBOgW}Q'xԖyP[Ami Z恖b)Db@K1-@KS2-MAN-M)vfC];Öh)ZR3yEۣYv,܌#R 4ؙۍ}Zh",ޢ6-@KS *mգwSm&ZJbԢ!>o},ZۿTwܻ{FhiJ3u۳x+ {yխ7h)ZR̞ögifY9)6NO@K1Ҕg,pT-rUwgBWhiJ3}$2}b45/c9_G[˩h)ZRLڜxOĶ+r+&hiJ3*.;X:tn|-@KS;tZgU~bP7-M)zfy=KE +R 4:۱ѩOn[E.2r)EܴnQ.]Kɾo"h-M)zfi;v>[bwGR4] +.buxe-@KS nيUh>Չ<-@KS u.gڰCq7pOC-M)|fz<`\3kbW-Q`-M)~fTO=axQ#-U+xe]-M)~F`Q]˯ia]Z hiJ3iQfZ+N֠hiJTCYӮeԹK @]S-r^i1R 4T*EMmFc; R4T*Esj𣹗L^6)R)~A4kա\(#-M)J?x$o w^mW+,R4d*u ܕZz<-@KSJR?c^s-S>-@KSʦk 6T ^1gC?:-@KSʦRy'DKAҔB`$NӖ%?VZOa7':TLˣ4aR4E Ǎ$Ik> @K1T2RZe;Ob)"_^ˊJ-MIZ@^h)Z"JÿTٰ2R 4E,n)GbZvTVUh)Z"Jo |kUJ)©4ֳ|^J7AK1ҔjRrNw+R 4TR+Hv }-@KS*J%;-o:-M(ւ͵\`cR 4TbYhi! 8ZTJ/vvR 4Tz7:V/;x&-M(^ 0f;3R 4Tیtg+R 4TZli-@KSJE(vͧ-M*z1y4-M*5ܫ@,ZʁTJ*cعܭXjT-@KSJ%1\*⃖r)R״s!Z TJ#~u-R4TR|jգ%ZʁTJfXՆkr)ե >:GhiJuZW橇h)ZR]*!oֆEK9Ҕ SI5O.wNnh)ZRa*>MRKh)ZRe*F:B@K1Ҕ*S*ۻAKAҔ*SI ]]nyAKAҔJS銺sZ4Nb) 3-OZTJ/s>;*<zZTJsV[DK9ҔSIc3: [6DKAҔSiK<zZTJU]_rɯ >-M< H#ףߞ -@KS*OG.NB_h)ZR}*G|Eah)ZRC*j롏hiJ#hR 4TJrϺ-AKSIV~á-M)TK_ZJԖJdT$>rl{h)ZRg*}繯:. C'hhAK)c]GCO@K)вѨmCO@K)вh-`-@FEK)cͩhdzh՛9Hh)Z6fǛh)Z6ZR l2zB_@K)вɼ۳-@&G }-@&հ%Z Fb=-@sϯ-ћpR l.C=Λ Rl.Qқe]h)Z6+E|R l.{B@K)вDmؕR l,ֵDK1в =}-@˦f٨%ZʁM%zC?C-^Zʁ _-@fr+,ZJdxB[yhHUB@K)вW= h@Wh)Z6"+='-@q5rٷǣh8+C@K)вa *hh)Z6O&ViHZJM;y"bo<H_'DK9EZ QfhRɠ1iy6b<4#-*RZ$Lv,CZjJ2@KO1AKZՆYi=2=xguRڵlZ]eh-hA^-h&1O˥] =-hߞ9s {f7h)EO:Kg.ǠֲH9kUmVb{d-hdj@K)ZeK ZJ^-?[VRjfqabKAK)ګe<3!TZJZ-7XVZJZ-1K6o5h)E[>~o+h)E[{V ZJR-F!-~ԳdpRRja}{cAK)Ze0l Բ<Șe!T ZJN-T ZJN-rՂRR˨khՂRRM-k-h7է.P1h)E+TZJJ-ZZJF-t--hQć)>RQ{ZZJF-oZZJF-/P5h)E#χP5h)Eԛޱ|zRj-;!TZJB-fZJV-ZneMmՒ5R%RPKǏh b-G3P9h)E |-k-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@K-@]syq-@0|!X :/@K)2|,+3R 7b)tZJB-ϴ`8:-h2 ZPGKڪ-_jPKWl&A‚u-ML˥тЩh)D[\6?-Z:EK1в8rmbt--R玎h)D-hQ|J6Z RQKp=ZvՇ~pb-h=BR6jyS}|RQ{vh)C4lQK1=-e裥mrX-eZF-O}ha-hZ|R.ZJ-um<+-Eh)B+U@K6RVjM'=ZFbMG.R*ZN-p ZJ0m-hzOqRZ N-A>NMp`-i&lZOax%퀭 XՇ3-h)HKrٌZnPjHҕ5Z޷".|"ij+pRjLuOe|pFue-Eiq+c2FR[mKvHxMZ V-QC[nNw -Feq0,vRjcĮr;C˭XFoGwgRj!.h?n2^Xte2\GK)ZeLNV7ӵT=ˋK'ZJRW7&hTt-zr=al -oUh)F{L֣̋j_a7^vz8Zt^Rj~+0^֣eBx[s)q2CK9Z00G{)۽` s-up'iZbKϧ Y-r \wM}! e&[ H.rܷ, h)E ǍUY-|Gۺ-;F/E!p$:'62e2R\֪I*nJ~r=OЉԚ=`ixR +ρDZWM\z^aں^Ukqd8Oh)E4/Kjgaںnr9}I\Y>xR_Zn*jFشu&?4-LzĜXa4DK)@pd^*jFIXh$|zzZJZᵓ3WI-';𨋥5bX})-'[JrdFK)C0|y]̒ZK|xO!i-J,^IdbQ;T ռUzN; Z)Zef, i?}_L;y|s  e;R #()J2]bkp~[S %R tkisfV %R rDod{zvZ7)G uDK)RH,n,Khy®vGS-@K-/a͵W~xh僤uJh)ͱc7 k-bLeDK)R@Hj}JZ`5Kˇ"/3ڝ u۔DK)R@®|]R<_r]uf<iy6%R '^vwꇕRrww#AS-f%ZJZfnt.v&CK-❯LI-%bkl%ϱ=;-EGw^LI-nH9oci)2-'V]A2LK}b h)󲃫ZZِRU#WfR`xB5R-@KW]73vtEoI Xh1-E_7K7SZPՑ/;xMkUJhR]C\˾.RK-&M$T/zV˻R tO&i=Ռ-rqZ;h)Zoմe܊\ho-2ZKb:6R tnqK=+ڱr3 -@K{ՎUۘZJN^ZAJ˨sy"%R te4WVAeimvAK)ҭc/N{mfhXj{#2ŢhZKrhEK)-39iEK)-3њ=nyp-, 6_>p-"y)0?-@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&p-!j˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&A˚@K-k-! lв&Q^p-!R%d2@˚@KDkh)ZB&}-R%d5rx-!{hYh T!R Lzh)ZB&]}x-!=o~EK)ڨ^*RQ.Z@K)ڨ*Zx-hC;zW9Rj9#!TM-h:w jh)E[dزzh)E ԓ|>B帝bԦ%[q-A5Z:~$-hLh)D 5q-heMh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh bh b-r.BtշԖijh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Zh)Z RevEh)Z`XRe,K3RjÁ7UZ8e:hiJ37- -@K)ڪI4ZuWWGK1/jBUKabUuWWGK1RC>b~Rw-Chf>n|8Z BW-_h).?h)F-Zn5R5΃-h)F-ZoGK)h)G-ZF뚍g Sh \R #h)G-ZF+5=-eAK9. kV=h)F=ZTǴ"X-7rZah-ŨG(c:-E:heӑK tAK9jR 7;R-gpu=|S';Rܴ)R· x%퀭ǝ#AKAjr\vUjiҙQAkrԤe!ѱUjPݴTesicCRz:.'y8ƕQĴ7_ .-\b6t]msw{3R#FAہpp}-MMҷHzv<Ԧe\~/4*2r'hqi-M˸|&JV|'_>-D%x'M5~imqm-Ox$ 㗖̆i9<TAKAj2.Ã;/-{2nvҠ5jjv/Xy\KUY6K˿L%%AK12.;T&ZNپ$|xR~y-&vt$DKA2i]ssvL7޿ebIȻ$h)FZ]h^Х,-wZ7K}q6DKAj2|ˑ9C-ĽZiZnMrx~m|,h)FZ<}9@wz{*ˉ_=1ۣ{RzG}ph7F/E!p$:'hIAK1j2 lHK&=0z 2ep幰R>iJPJ#w$*@K124W}W~a'E'ZqUk>d,GZ&jR}ȴu&?ZVd%ZQKGZjj+-@pܬHKU ?IkĪXPgª@K1|2 -GZKxOm ,_ +-CppU*Ji8BV˃U!Z ≖-o|TvYz 3N:9-?rah9krjr#\ 5h)bk9nn2==T-MiYSYe>h)bk=`xͱc7Ƈe.h)bk=U=zɡw/DLҔk9^u{K*_qrGh Zt-eowi~XI-+ww7e@K1\MC3ere&hiJbkl%ϱ=-Xp-7mכćhZZ}ZNܻd'Z΂b,#Y-lHˉ A24Z;ڹ޿}>Xn24 ZMdl%e&hiJk8524ZnMl%e&hiJk$ԊhD4-@,;}KSR LE-5-@TtU[_24{ܨs24ZN/- ٠)2+YDlҔk9R+24Z޾UܭC24ZZf4h ZҠe&hi ZJ)h) Zf4h ZҠe&hi ZJ)h) Zf4h ZҠe&hiJeZvX-@KS*r@ttZ24T  L-M&B6 Z"XPR&h[ v'l(h)F#Fb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%Hb%H#9hi ZBău-AKkƠ%hkλhi ZF%p:j%ht'83E4hS0F=u%s B4-!-C4-!9h Y|)h܊\\tBKSrX? -MA˅f? -MAfp>i[3eo<=!Z#J׾{A&'-K_|,4E(_gTфEKsdRv7GKYvr$-MI۫1f Ơ)ϼ-M)|fX>sX=s+GCcҔgn҆[ҔgT=;-M)z]K-M)x怮%X<3؀` ZR-M)x^4z|4zӻC ҔbgK 4ؙ )Իޱ@KS`ZRBKfhi ZBe)%tHNҔbg`ZR<؀;={@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2@KS*-MAK 4-2,[/>uԩϽt}6,?@>7oԘhi Z2<1+L4--RUqvvhi Z1J[eDK 2kIU4-ӆe>6,aq-A|^UOĻ̧X.W1hKkYZD/%(Zl2j)&ZGG>Za-MA\t!e.]2e@ 7Eg&ޕZy HDKS2_ 4hi ZgR>ZyGK!hi Z桛^lM Zyhi Z恖b)ho@KS]>./ .S-@K1-@KS2-MA=gE 5 gh5\Ɍ&hY/s16j|4H'X>+ZfQc +6jj龫BwrE2X>+Zfs-m2yv.ۢuݳe:QH;"QM΍ғ [=+ZiAP="7U-%R=ԲO(_vNb-iQOyj=DzAyS@>YR +ZFq[ >UgbGT}:ZnӊUbczgT?\]1rFiQWydͬ ;mVZv>~eR[&qk9mXMN-BGnF}6l41VsiUjgt*.͵^YײZƭF3jNHw. J-fTs-uE3i8TA]?:wͲLOp\uY'y8X(ΤZꭧ.]gdՖ=waeϻ6l[b;de$[r;pwZWköVqt[vMd~i9Lo|Zee+3S-o[8h95gBIuڛiPuOǐk&EaG nf.iAZLneOW0|--EdR^;T-k󏆾f-3Λ)J˻f]8(ojiԪ0?[k%ZT1}s/]vv_LssGsYoL=kSg.zuz{*ˉ/~i>zGGB*EiP]m촖耟LnəFx ۮeA,[d5HK&=0z 2e0Բ>cZ8BY @G%Zs%퀑;ʧEFƴ]a7-Ԅ#-ok됗aںn Na>v-ܳ,iHKD.a_Z\d-US5ڋ@}HSdIگe8<T"-US5>$bA~-^ =e U}7 a! ~"-6n. pSVho)th `OOyˣ%=Zg]-%oT޼h `0@Kk-8>ZXy=ּv ZأGuw}ev-;AKk65?-,~ZXr?pAK[h-_w h `\r h `G4<#ucH t637ףh `%z !Zѭ 6 O rۏAKs^*c?-&Z2=n')J>h `[[x*-L|=Zpdbuy `+@\~9Zz*}'GjcvxO苖Z1\X^h5cJA˫@ݘhyʑԏ +~-[Z v-o>ҥ2ֲO`3LSV*eZ^~SO?P|^\aZN5aTQ{r<bjr=z"&Q͝hujVQ{eCZ~/T Aԧ0IP >-V@O^4&,,id=7FmZFa*m?ui9r@&RQä;ԥ{H]ZFa'Ԥe1KLjrCkXIK=@5i| 2Z~<֒ԣ:qXlRxҨGKy<4jѲO`hwY Z|jr#sEK=RE.PkbPz|#ԡ@NZK!S [dQh 0ڴd6@ w^|{Uq= ԡެU_.u1lBCX4-rpkT2<.kl G ºgndyaY4-U'QN^mV6)jFÂiza#,ܠ*j{əRLK>]d漌a`TK!,cY1{FEMZaT, 7m=F; ]6MO5uZa4XOC#*{6 ,kn6f0-jvVQJ˾a6}u &t`C\6^lnSjյ\1{ӹl .*iFr߸йl ewkgW4bi2\2rIK;lYy @u.4EҲkh!1qR/!I}9Z6fm2afHZnkjy13-tϚjJ/?&l$|(C( ,Ѳ! >07?@<-1n,[:|Ѣ@Zk| !Y7嫹I3X -asT á,Gt,};-{ZDf.ip2GTZnYF,w͵\okAvZ2R˷._w;V#s-Ux$::7j_NuWM˷~A -::OTamV܌;s..?hey}Yg/t"1W$N}W !@|='ץisV xRXWǬ7ʻVরF.ReR(-v77h ?e]h{#[/As>vۣ?g9+-$Q 7aZ$C3{l ұ+ y9<!KS-ZYef$gFy4tǰkt F}K}RbhCOPkFO.e;3^0q-e6@;#doGmiXXiS<: XhcxI6@xvLlW>ޯJd#zS{k%Gd{古K`=#י /kc/[TgmwΟ/NM}[oV'eu/K5k,GsTי''Ms۽_62g$e !nAq^zK]qvx"y7}C ̭ʚSmI-I9R>4䧻s'ʚISLn<&0LiVͬ[l*hq27X(LɍmnP &%Rqs6#ezиZ%A-Ut+tNe=w- dJ/,I+w[eҍ1hsYoߜbplNT9 5JWPwx}՛6$ɦ>r84A2jv©$a9o?$V;i~i>X g_@c7&.jL8a~k=߽Y%=pZ'1"- ѠOoܘgbQY)`*Ct-^RZa;EF,B릯˚đ͔k9^mB@gss4*4~Tcsʚ+EPVeim2;=1͑<]_:74,kTpkibMgZ 6xG3rb98j}4,MXlnY}:w]zPU ΊϋE^qS\M x<օaYkEh&v5k|[0h5GӼ=>Bg&mMfxYYh7MI-@T֤xy^kd[)0CZ_؄x33vxV/__uWٖkEF,qoHփrp_HKvㄸYR|mZL=Z.BvΌż mt쑰,2X̷$NJ]g\f1Mײ`aU*>u.N^Z6e|L5y3.^p~{)[jk$>Qw'eJgZ.ڮ|NK<4YK=Jxѳӽ,Rquv .J VFZGK!Mײ|~w_.r PN˩7O8R<^@K``-_-e8jRѲt;4:gJ\RMb k_ΔZUC}LIZոvJgӗ]%bkw._WH]th)WZ uB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%ZʁB%Zt-7DK9'%Z`-{2 =-RⓊWKogzpO@mr-RH` Zn6 bWN˿HM^j-uOX1O]bg~}rO?5:UCƇвszAxJJaQΙ7F/$ ѓÒܗI!Uwsp2eW˥тJAmZ@v9scp`bw.5JKːm-禤Mv/Ŵ׭dT1^ړr;_|t:R{3Q}BB.)YܐZ/ k-ߑi5m)Ԍh]1vR_-جCKۯ/ZuwK{kEFkxX=R, m$B,Jei}}-MK=eHq][eaծY[_HQ-zo' v kdzR ,ϓvwY, j) j9XS}%#vEX2߳vu=ZfMӫf)eOUP7u23 u_"5iދaY~jWȣe%뭂Z4 >#wnd'n>o}Feab$~ -3k4=_1-uĜ^-TfDIi$֞#6eE|A-uSvEy5J(l٧rL3Bw튉v -ܻZFAF!-R{en ǭoGW%uEı,?v+ZfpdQl(IBU]O(ś]ÒyѷfE ʖEujb+O,;E L+Bv1U#-ӉJJj.ڈZL(w"=ȩRM >$]ήn}e:KZcՉ:`;ʃciUĎ;Y 6.?͓b*Ce:E*ije(4p"7e.ɑ vM{5me:3RQ- Xn$`6+hFٶf  %)7lrZI2s]tsSjN 2>6w4~")tm*r{6Wocҥsa-7Jb:Hh9Л?nB@57>pQzvM{6kZp^Oeв[t.e )~.Ru[jhH㾂Z۪]v UP]kY^ZďR u-*ܼaUjHFn+#kyŲ;BfeaNFyY2v/sE{QԫQKE\+kZD0k/ԜZncky,oi[f}7x5O={MՖ=wau.*k /z~eyadTU9/j-zFqZĽ6o}}k" %^Qu\P$20ZF_ q.HGQJ 9|Į{erKhg_+sIƽE.kM2ݰiWDNR--wvdYʼ1Nr!*-gB($fPTg%JI'%zgVe>崌',s{eRqYt섿M\gHʚ= 9ȥ,-wZ׭,~Y-$2S:\HjŤw?S05q)X~[K,iN|OSsؗSGP1g.K/ RORf&WoLS6'NT.r7'vDo$ʗu-K4-g%|8g+^u[m@׵]]խYSYeݨ*3n͙իYdj{lI[@i;-/aѲfRAoY0PpwH;6yرrxxΜB{%9˵E7]SգLe)^t|fq&eYv0^.uxa}Z> ݭi YZѯܪꊣ*< |}ZVRjKmݝ|'GLU}[{[IIJ7/17ult.v-3YO*Fw&X-[l]96^J~6b{E){׊-jyԲ!h{<ćhYj>[}UU)"y2.nrb$=вb8[xZUjQEN_v֕ZِRU#WLGlR0$*rVVrhLRnx=;^-Z..4 7sibUc_ Xau3ZΥqڰ -`rpRݫExͣh73裦Znqu\NV}O1 m-quj9Z3 ƕ5M-" ^woRZ/gB  #fd nb3\7'f،˥k<-:6HZ6tf0ҩ?|.f&eƅNZ-B`#K.i2h鐩f\f'?vbZ҄m6hZ!-oNtDa Z:&φh-F^ kʦ?)jy -]3Kk-#G|=מNGS-Wׄܙwpe+@ˊ Y>_θ7Ch hY7ǭLUvuӵ^ABLe6ucisw'uӳbk# e #czl;eݨW5r'Z֍ꏆvвnAZ֍zcaS-/xn?hY;6`6BӳŪcCh=hY;1Jv!@QϚYfe 7 image/svg+xml Past-the-last element begin end json-3.11.3/docs/mkdocs/docs/images/range-rbegin-rend.svg000066400000000000000000001204751453145653700232120ustar00rootroot00000000000000 image/svg+xml Past-the-last element begin end Reversed sequence Reverse past-the-last element rend rbegin Reverse iterator stores an iterator to the nextelement than the one it actually refers to json-3.11.3/docs/mkdocs/docs/index.md000066400000000000000000000000541453145653700173550ustar00rootroot00000000000000# JSON for Modern C++ ![](images/json.gif) json-3.11.3/docs/mkdocs/docs/integration/000077500000000000000000000000001453145653700202505ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/integration/cmake.md000066400000000000000000000145411453145653700216570ustar00rootroot00000000000000# CMake ## Integration You can use the `nlohmann_json::nlohmann_json` interface target in CMake. This target populates the appropriate usage requirements for [`INTERFACE_INCLUDE_DIRECTORIES`](https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.html) to point to the appropriate include directories and [`INTERFACE_COMPILE_FEATURES`](https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_COMPILE_FEATURES.html) for the necessary C++11 flags. ### External To use this library from a CMake project, you can locate it directly with [`find_package()`](https://cmake.org/cmake/help/latest/command/find_package.html) and use the namespaced imported target from the generated package configuration: !!! example ```cmake title="CMakeLists.txt" cmake_minimum_required(VERSION 3.1) project(ExampleProject LANGUAGES CXX) find_package(nlohmann_json 3.11.3 REQUIRED) add_executable(example example.cpp) target_link_libraries(example PRIVATE nlohmann_json::nlohmann_json) ``` The package configuration file, `nlohmann_jsonConfig.cmake`, can be used either from an install tree or directly out of the build tree. ### Embedded To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call `add_subdirectory()` in your `CMakeLists.txt` file. !!! example ```cmake title="CMakeLists.txt" cmake_minimum_required(VERSION 3.1) project(ExampleProject LANGUAGES CXX) # If you only include this third party in PRIVATE source files, you do not need to install it # when your main project gets installed. set(JSON_Install OFF CACHE INTERNAL "") add_subdirectory(nlohmann_json) add_executable(example example.cpp) target_link_libraries(example PRIVATE nlohmann_json::nlohmann_json) ``` !!! note Do not use `#!cmake include(nlohmann_json/CMakeLists.txt)`, since that carries with it unintended consequences that will break the build. It is generally discouraged (although not necessarily well documented as such) to use `#!cmake include(...)` for pulling in other CMake projects anyways. ### Supporting Both To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following. !!! example ```cmake title="CMakeLists.txt" project(ExampleProject LANGUAGES CXX) option(EXAMPLE_USE_EXTERNAL_JSON "Use an external JSON library" OFF) add_subdirectory(thirdparty) add_executable(example example.cpp) # Note that the namespaced target will always be available regardless of the import method target_link_libraries(example PRIVATE nlohmann_json::nlohmann_json) ``` ```cmake title="thirdparty/CMakeLists.txt" if(EXAMPLE_USE_EXTERNAL_JSON) find_package(nlohmann_json 3.11.3 REQUIRED) else() set(JSON_BuildTests OFF CACHE INTERNAL "") add_subdirectory(nlohmann_json) endif() ``` `thirdparty/nlohmann_json` is then a complete copy of this source tree. ### FetchContent Since CMake v3.11, [FetchContent](https://cmake.org/cmake/help/v3.11/module/FetchContent.html) can be used to automatically download a release as a dependency at configure type. !!! example ```cmake title="CMakeLists.txt" cmake_minimum_required(VERSION 3.11) project(ExampleProject LANGUAGES CXX) include(FetchContent) FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz) FetchContent_MakeAvailable(json) add_executable(example example.cpp) target_link_libraries(example PRIVATE nlohmann_json::nlohmann_json) ``` !!! Note It is recommended to use the URL approach described above which is supported as of version 3.10.0. It is also possible to pass the Git repository like ```cmake FetchContent_Declare(json GIT_REPOSITORY https://github.com/nlohmann/json GIT_TAG v3.11.3 ) ``` However, the repository download size is quite large. You might want to depend on a smaller repository. For instance, you might want to replace the URL in the example by . ## CMake Options ### `JSON_BuildTests` Build the unit tests when [`BUILD_TESTING`](https://cmake.org/cmake/help/latest/command/enable_testing.html) is enabled. This option is `ON` by default if the library's CMake project is the top project. That is, when integrating the library as described above, the test suite is not built unless explicitly switched on with this option. ### `JSON_CI` Enable CI build targets. The exact targets are used during the several CI steps and are subject to change without notice. This option is `OFF` by default. ### `JSON_Diagnostics` Enable [extended diagnostic messages](../home/exceptions.md#extended-diagnostic-messages) by defining macro [`JSON_DIAGNOSTICS`](../api/macros/json_diagnostics.md). This option is `OFF` by default. ### `JSON_DisableEnumSerialization` Disable default `enum` serialization by defining the macro [`JSON_DISABLE_ENUM_SERIALIZATION`](../api/macros/json_disable_enum_serialization.md). This option is `OFF` by default. ### `JSON_FastTests` Skip expensive/slow test suites. This option is `OFF` by default. Depends on `JSON_BuildTests`. ### `JSON_GlobalUDLs` Place user-defined string literals in the global namespace by defining the macro [`JSON_USE_GLOBAL_UDLS`](../api/macros/json_use_global_udls.md). This option is `OFF` by default. ### `JSON_ImplicitConversions` Enable implicit conversions by defining macro [`JSON_USE_IMPLICIT_CONVERSIONS`](../api/macros/json_use_implicit_conversions.md). This option is `ON` by default. ### `JSON_Install` Install CMake targets during install step. This option is `ON` by default if the library's CMake project is the top project. ### `JSON_MultipleHeaders` Use non-amalgamated version of the library. This option is `OFF` by default. ### `JSON_SystemInclude` Treat the library headers like system headers (i.e., adding `SYSTEM` to the [`target_include_directories`](https://cmake.org/cmake/help/latest/command/target_include_directories.html) call) to checks for this library by tools like Clang-Tidy. This option is `OFF` by default. ### `JSON_Valgrind` Execute test suite with [Valgrind](https://valgrind.org). This option is `OFF` by default. Depends on `JSON_BuildTests`. json-3.11.3/docs/mkdocs/docs/integration/conan/000077500000000000000000000000001453145653700213465ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/integration/conan/CMakeLists.txt000066400000000000000000000003761453145653700241140ustar00rootroot00000000000000project(json_example) cmake_minimum_required(VERSION 2.8.12) add_definitions("-std=c++11") include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() add_executable(json_example example.cpp) target_link_libraries(json_example ${CONAN_LIBS}) json-3.11.3/docs/mkdocs/docs/integration/conan/Conanfile.txt000066400000000000000000000000631453145653700240040ustar00rootroot00000000000000[requires] nlohmann_json/3.7.3 [generators] cmake json-3.11.3/docs/mkdocs/docs/integration/conan/example.cpp000066400000000000000000000002131453145653700235010ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { std::cout << json::meta() << std::endl; } json-3.11.3/docs/mkdocs/docs/integration/example.cpp000066400000000000000000000002561453145653700224120ustar00rootroot00000000000000#include #include #include using json = nlohmann::json; int main() { std::cout << std::setw(4) << json::meta() << std::endl; } json-3.11.3/docs/mkdocs/docs/integration/index.md000066400000000000000000000011751453145653700217050ustar00rootroot00000000000000# Header only [`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) is the single required file in `single_include/nlohmann` or [released here](https://github.com/nlohmann/json/releases). You need to add ```cpp #include // for convenience using json = nlohmann::json; ``` to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). You can further use file [`single_include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json_fwd.hpp) for forward declarations. json-3.11.3/docs/mkdocs/docs/integration/migration_guide.md000066400000000000000000000202711453145653700237420ustar00rootroot00000000000000# Migration Guide This page collects some guidelines on how to future-proof your code for future versions of this library. ## Replace deprecated functions The following functions have been deprecated and will be removed in the next major version (i.e., 4.0.0). All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead. #### Parsing - Function `friend std::istream& operator<<(basic_json&, std::istream&)` is deprecated since 3.0.0. Please use [`friend std::istream& operator>>(std::istream&, basic_json&)`](../api/operator_gtgt.md) instead. === "Deprecated" ```cpp nlohmann::json j; std::stringstream ss("[1,2,3]"); j << ss; ``` === "Future-proof" ```cpp nlohmann::json j; std::stringstream ss("[1,2,3]"); ss >> j; ``` - Passing iterator pairs or pointer/length pairs to parsing functions ([`parse`](../api/basic_json/parse.md), [`accept`](../api/basic_json/accept.md), [`sax_parse`](../api/basic_json/sax_parse.md), [`from_cbor`](../api/basic_json/from_cbor.md), [`from_msgpack`](../api/basic_json/from_msgpack.md), [`from_ubjson`](../api/basic_json/from_ubjson.md), and [`from_bson`](../api/basic_json/from_bson.md) via initializer lists is deprecated since 3.8.0. Instead, pass two iterators; for instance, call `from_cbor(ptr, ptr+len)` instead of `from_cbor({ptr, len})`. === "Deprecated" ```cpp const char* s = "[1,2,3]"; bool ok = nlohmann::json::accept({s, s + std::strlen(s)}); ``` === "Future-proof" ```cpp const char* s = "[1,2,3]"; bool ok = nlohmann::json::accept(s, s + std::strlen(s)); ``` #### JSON Pointers - Comparing JSON Pointers with strings via [`operator==`](../api/json_pointer/operator_eq.md) and [`operator!=`](../api/json_pointer/operator_ne.md) is deprecated since 3.11.2. To compare a [`json_pointer`](../api/json_pointer/index.md) `p` with a string `s`, convert `s` to a `json_pointer` first and use [`json_pointer::operator==`](../api/json_pointer/operator_eq.md) or [`json_pointer::operator!=`](../api/json_pointer/operator_ne.md). === "Deprecated" ```cpp nlohmann::json::json_pointer lhs("/foo/bar/1"); assert(lhs == "/foo/bar/1"); ``` === "Future-proof" ```cpp nlohmann::json::json_pointer lhs("/foo/bar/1"); assert(lhs == nlohmann::json::json_pointer("/foo/bar/1")); ``` - The implicit conversion from JSON Pointers to string ([`json_pointer::operator string_t`](../api/json_pointer/operator_string_t.md)) is deprecated since 3.11.0. Use [`json_pointer::to_string`](../api/json_pointer/to_string.md) instead. === "Deprecated" ```cpp nlohmann::json::json_pointer ptr("/foo/bar/1"); std::string s = ptr; ``` === "Future-proof" ```cpp nlohmann::json::json_pointer ptr("/foo/bar/1"); std::string s = ptr.to_string(); ``` - Passing a `basic_json` specialization as template parameter `RefStringType` to [`json_pointer`](../api/json_pointer/index.md) is deprecated since 3.11.0. The string type can now be directly provided. === "Deprecated" ```cpp using my_json = nlohmann::basic_json; nlohmann::json_pointer ptr("/foo/bar/1"); ``` === "Future-proof" ```cpp nlohmann::json_pointer ptr("/foo/bar/1"); ``` Thereby, `nlohmann::my_json::json_pointer` is an alias for `nlohmann::json_pointer` and is always an alias to the `json_pointer` with the appropriate string type for all specializations of `basic_json`. #### Miscellaneous functions - The function `iterator_wrapper` is deprecated since 3.1.0. Please use the member function [`items`](../api/basic_json/items.md) instead. === "Deprecated" ```cpp for (auto &x : nlohmann::json::iterator_wrapper(j)) { std::cout << x.key() << ":" << x.value() << std::endl; } ``` === "Future-proof" ```cpp for (auto &x : j.items()) { std::cout << x.key() << ":" << x.value() << std::endl; } ``` - Function `friend std::ostream& operator>>(const basic_json&, std::ostream&)` is deprecated since 3.0.0. Please use [`friend operator<<(std::ostream&, const basic_json&)`](../api/operator_ltlt.md) instead. === "Deprecated" ```cpp j >> std::cout; ``` === "Future-proof" ```cpp std::cout << j; ``` - The legacy comparison behavior for discarded values is deprecated since 3.11.0. It is already disabled by default and can still be enabled by defining [`JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON`](../api/macros/json_use_legacy_discarded_value_comparison.md) to `1`. === "Deprecated" ```cpp #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 1 #include ``` === "Future-proof" ```cpp #include ``` ## Replace implicit conversions Implicit conversions via [`operator ValueType`](../api/basic_json/operator_ValueType.md) will be switched off by default in the next major release of the library. You can prepare existing code by already defining [`JSON_USE_IMPLICIT_CONVERSIONS`](../api/macros/json_use_implicit_conversions.md) to `0` and replace any implicit conversions with calls to [`get`](../api/basic_json/get.md), [`get_to`](../api/basic_json/get_to.md), [`get_ref`](../api/basic_json/get_ref.md), or [`get_ptr`](../api/basic_json/get_ptr.md). === "Deprecated" ```cpp nlohmann::json j = "Hello, world!"; std::string s = j; ``` === "Future-proof" ```cpp nlohmann::json j = "Hello, world!"; auto s = j.template get(); ``` === "Future-proof (alternative)" ```cpp nlohmann::json j = "Hello, world!"; std::string s; j.get_to(s); ``` You can prepare existing code by already defining [`JSON_USE_IMPLICIT_CONVERSIONS`](../api/macros/json_use_implicit_conversions.md) to `0` and replace any implicit conversions with calls to [`get`](../api/basic_json/get.md). ## Import namespace `literals` for UDLs The user-defined string literals [`operator""_json`](../api/operator_literal_json.md) and [`operator""_json_pointer`](../api/operator_literal_json_pointer.md) will be removed from the global namespace in the next major release of the library. === "Deprecated" ```cpp nlohmann::json j = "[1,2,3]"_json; ``` === "Future-proof" ```cpp using namespace nlohmann::literals; nlohmann::json j = "[1,2,3]"_json; ``` To prepare existing code, define [`JSON_USE_GLOBAL_UDLS`](../api/macros/json_use_global_udls.md) to `0` and bring the string literals into scope where needed. ## Do not hard-code the complete library namespace The [`nlohmann` namespace](../features/namespace.md) contains a sub-namespace to avoid problems when different versions or configurations of the library are used in the same project. Always use `nlohmann` as namespace or, when the exact version and configuration is relevant, use macro [`NLOHMANN_JSON_NAMESPACE`](../api/macros/nlohmann_json_namespace.md) to denote the namespace. === "Dangerous" ```cpp void to_json(nlohmann::json_abi_v3_11_2::json& j, const person& p) { j["age"] = p.age; } ``` === "Future-proof" ```cpp void to_json(nlohmann::json& j, const person& p) { j["age"] = p.age; } ``` === "Future-proof (alternative)" ```cpp void to_json(NLOHMANN_JSON_NAMESPACE::json& j, const person& p) { j["age"] = p.age; } ``` ## Do not use the `details` namespace The `details` namespace is not part of the public API of the library and can change in any version without announcement. Do not rely on any function or type in the `details` namespace. json-3.11.3/docs/mkdocs/docs/integration/package_managers.md000066400000000000000000000231451453145653700240470ustar00rootroot00000000000000# Package Managers Throughout this page, we will describe how to compile the example file `example.cpp` below. ```cpp --8<-- "integration/example.cpp" ``` When executed, this program should create output similar to ```json --8<-- "examples/meta.output" ``` ## Homebrew If you are using OS X and [Homebrew](http://brew.sh), just type ```sh brew install nlohmann-json ``` and you're set. If you want the bleeding edge rather than the latest release, use ```sh brew install nlohmann-json --HEAD ``` instead. See [nlohmann-json](https://formulae.brew.sh/formula/nlohmann-json) for more information. ??? example 1. Create the following file: ```cpp title="example.cpp" --8<-- "integration/example.cpp" ``` 2. Install the package ```sh brew install nlohmann-json ``` 3. Determine the include path, which defaults to `/usr/local/Cellar/nlohmann-json/$version/include`, where `$version` is the version of the library, e.g. `3.7.3`. The path of the library can be determined with ```sh brew list nlohmann-json ``` 4. Compile the code. For instance, the code can be compiled using Clang with ```sh clang++ example.cpp -I/usr/local/Cellar/nlohmann-json/3.7.3/include -std=c++11 -o example ``` :material-update: The [formula](https://formulae.brew.sh/formula/nlohmann-json) is updated automatically. ## Meson If you are using the [Meson Build System](http://mesonbuild.com), add this source tree as a [meson subproject](https://mesonbuild.com/Subprojects.html#using-a-subproject). You may also use the `include.zip` published in this project's [Releases](https://github.com/nlohmann/json/releases) to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from [Meson WrapDB](https://wrapdb.mesonbuild.com/nlohmann_json), or simply use `meson wrap install nlohmann_json`. Please see the meson project for any issues regarding the packaging. The provided `meson.build` can also be used as an alternative to cmake for installing `nlohmann_json` system-wide in which case a pkg-config file is installed. To use it, simply have your build system require the `nlohmann_json` pkg-config dependency. In Meson, it is preferred to use the [`dependency()`](https://mesonbuild.com/Reference-manual.html#dependency) object with a subproject fallback, rather than using the subproject directly. ## Bazel This repository provides a [Bazel](https://bazel.build/) `WORKSPACE.bazel` and a corresponding `BUILD.bazel` file. Therefore, this repository can be referenced by workspace rules such as `http_archive`, `git_repository`, or `local_repository` from other Bazel workspaces. To use the library you only need to depend on the target `@nlohmann_json//:json` (e.g. via `deps` attribute). ## Conan If you are using [Conan](https://www.conan.io/) to manage your dependencies, merely add `nlohmann_json/x.y.z` to your `conanfile`'s requires, where `x.y.z` is the release version you want to use. Please file issues [here](https://github.com/conan-io/conan-center-index/issues) if you experience problems with the packages. ??? example 1. Create the following files: ```ini title="Conanfile.txt" --8<-- "integration/conan/Conanfile.txt" ``` ```cmake title="CMakeLists.txt" --8<-- "integration/conan/CMakeLists.txt" ``` ```cpp title="example.cpp" --8<-- "integration/conan/example.cpp" ``` 2. Build: ```sh mkdir build cd build conan install .. cmake .. cmake --build . ``` :material-update: The [package](https://conan.io/center/nlohmann_json) is updated automatically. ## Spack If you are using [Spack](https://www.spack.io/) to manage your dependencies, you can use the [`nlohmann-json` package](https://spack.readthedocs.io/en/latest/package_list.html#nlohmann-json). Please see the [spack project](https://github.com/spack/spack) for any issues regarding the packaging. ## Hunter If you are using [hunter](https://github.com/cpp-pm/hunter) on your project for external dependencies, then you can use the [nlohmann_json package](https://hunter.readthedocs.io/en/latest/packages/pkg/nlohmann_json.html). Please see the hunter project for any issues regarding the packaging. ## Buckaroo If you are using [Buckaroo](https://buckaroo.pm), you can install this library's module with `buckaroo add github.com/buckaroo-pm/nlohmann-json`. Please file issues [here](https://github.com/buckaroo-pm/nlohmann-json). There is a demo repo [here](https://github.com/njlr/buckaroo-nholmann-json-example). ## vcpkg If you are using [vcpkg](https://github.com/Microsoft/vcpkg/) on your project for external dependencies, then you can install the [nlohmann-json package](https://github.com/Microsoft/vcpkg/tree/master/ports/nlohmann-json) with `vcpkg install nlohmann-json` and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging. ??? example 1. Create the following files: ```cmake title="CMakeLists.txt" --8<-- "integration/vcpkg/CMakeLists.txt" ``` ```cpp title="example.cpp" --8<-- "integration/vcpkg/example.cpp" ``` 2. Install package: ```sh vcpkg install nlohmann-json ``` 3. Build: ```sh mkdir build cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake cmake --build . ``` Note you need to adjust `/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake` to your system. ## cget If you are using [cget](http://cget.readthedocs.io/en/latest/), you can install the latest development version with `cget install nlohmann/json`. A specific version can be installed with `cget install nlohmann/json@v3.1.0`. Also, the multiple header version can be installed by adding the `-DJSON_MultipleHeaders=ON` flag (i.e., `cget install nlohmann/json -DJSON_MultipleHeaders=ON`). :material-update: cget reads directly from the [GitHub repository](https://github.com/nlohmann/json) and is always up-to-date. ## CocoaPods If you are using [CocoaPods](https://cocoapods.org), you can use the library by adding pod `"nlohmann_json", '~>3.1.2'` to your podfile (see [an example](https://bitbucket.org/benman/nlohmann_json-cocoapod/src/master/)). Please file issues [here](https://bitbucket.org/benman/nlohmann_json-cocoapod/issues?status=new&status=open). ## NuGet If you are using [NuGet](https://www.nuget.org), you can use the package [nlohmann.json](https://www.nuget.org/packages/nlohmann.json/). Please check [this extensive description](https://github.com/nlohmann/json/issues/1132#issuecomment-452250255) on how to use the package. Please file issues [here](https://github.com/hnkb/nlohmann-json-nuget/issues). ## Conda If you are using [conda](https://conda.io/), you can use the package [nlohmann_json](https://github.com/conda-forge/nlohmann_json-feedstock) from [conda-forge](https://conda-forge.org) executing `conda install -c conda-forge nlohmann_json`. Please file issues [here](https://github.com/conda-forge/nlohmann_json-feedstock/issues). ## MSYS2 If you are using [MSYS2](http://www.msys2.org/), you can use the [mingw-w64-nlohmann-json](https://packages.msys2.org/base/mingw-w64-nlohmann-json) package, just type `pacman -S mingw-w64-i686-nlohmann-json` or `pacman -S mingw-w64-x86_64-nlohmann-json` for installation. Please file issues [here](https://github.com/msys2/MINGW-packages/issues/new?title=%5Bnlohmann-json%5D) if you experience problems with the packages. :material-update: The [package](https://packages.msys2.org/base/mingw-w64-nlohmann-json) is updated automatically. ## MacPorts If you are using [MacPorts](https://ports.macports.org), execute `sudo port install nlohmann-json` to install the [nlohmann-json](https://ports.macports.org/port/nlohmann-json/) package. :material-update: The [package](https://ports.macports.org/port/nlohmann-json/) is updated automatically. ## build2 If you are using [`build2`](https://build2.org), you can use the [`nlohmann-json`](https://cppget.org/nlohmann-json) package from the public repository or directly from the [package's sources repository](https://github.com/build2-packaging/nlohmann-json). In your project's `manifest` file, just add `depends: nlohmann-json` (probably with some [version constraints](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml#guide-add-remove-deps)). If you are not familiar with using dependencies in `build2`, [please read this introduction](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml). Please file issues [here](https://github.com/build2-packaging/nlohmann-json) if you experience problems with the packages. :material-update: The [package](https://cppget.org/nlohmann-json) is updated automatically. ## wsjcpp If you are using [`wsjcpp`](http://wsjcpp.org), you can use the command `wsjcpp install "https://github.com/nlohmann/json:develop"` to get the latest version. Note you can change the branch ":develop" to an existing tag or another branch. :material-update: wsjcpp reads directly from the [GitHub repository](https://github.com/nlohmann/json) and is always up-to-date. ## CPM.cmake If you are using [`CPM.cmake`](https://github.com/TheLartians/CPM.cmake), you can check this [`example`](https://github.com/TheLartians/CPM.cmake/tree/master/examples/json). After [adding CPM script](https://github.com/TheLartians/CPM.cmake#adding-cpm) to your project, implement the following snippet to your CMake: ```cmake CPMAddPackage( NAME nlohmann_json GITHUB_REPOSITORY nlohmann/json VERSION 3.9.1) ``` json-3.11.3/docs/mkdocs/docs/integration/pkg-config.md000066400000000000000000000006251453145653700226210ustar00rootroot00000000000000# Pkg-config If you are using bare Makefiles, you can use `pkg-config` to generate the include flags that point to where the library is installed: ```sh pkg-config nlohmann_json --cflags ``` Users of the [Meson build system](package_managers.md#meson) will also be able to use a system-wide library, which will be found by `pkg-config`: ```meson json = dependency('nlohmann_json', required: true) ``` json-3.11.3/docs/mkdocs/docs/integration/vcpkg/000077500000000000000000000000001453145653700213625ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/docs/integration/vcpkg/CMakeLists.txt000066400000000000000000000003351453145653700241230ustar00rootroot00000000000000project(json_example) cmake_minimum_required(VERSION 2.8.12) find_package(nlohmann_json CONFIG REQUIRED) add_executable(json_example example.cpp) target_link_libraries(json_example PRIVATE nlohmann_json::nlohmann_json) json-3.11.3/docs/mkdocs/docs/integration/vcpkg/example.cpp000066400000000000000000000002131453145653700235150ustar00rootroot00000000000000#include #include using json = nlohmann::json; int main() { std::cout << json::meta() << std::endl; } json-3.11.3/docs/mkdocs/mkdocs.yml000066400000000000000000000366251453145653700170140ustar00rootroot00000000000000# Project information site_name: JSON for Modern C++ site_author: Niels Lohmann site_url: https://json.nlohmann.me/ # Repository repo_name: nlohmann/json repo_url: https://github.com/nlohmann/json edit_uri: edit/develop/docs/mkdocs/docs # Copyright copyright: Copyright © 2013 - 2023 Niels Lohmann # Configuration theme: name: material language: en palette: - media: '(prefers-color-scheme: light)' scheme: default primary: indigo accent: indigo toggle: icon: material/brightness-7 name: Switch to dark mode - media: '(prefers-color-scheme: dark)' scheme: slate primary: indigo accent: indigo toggle: icon: material/brightness-4 name: Switch to light mode font: text: Roboto code: JetBrains Mono features: - navigation.instant - navigation.tracking - navigation.tabs - navigation.indexes - navigation.top - content.tabs.link nav: - Home: - index.md - home/license.md - "Code of Conduct": home/code_of_conduct.md - "FAQ": home/faq.md - home/exceptions.md - home/releases.md - home/design_goals.md - home/sponsors.md - Features: - features/arbitrary_types.md - Binary Formats: - features/binary_formats/index.md - features/binary_formats/bjdata.md - features/binary_formats/bson.md - features/binary_formats/cbor.md - features/binary_formats/messagepack.md - features/binary_formats/ubjson.md - features/binary_values.md - features/comments.md - Element Access: - features/element_access/index.md - features/element_access/unchecked_access.md - features/element_access/checked_access.md - features/element_access/default_value.md - features/iterators.md - features/json_pointer.md - features/json_patch.md - features/merge_patch.md - 'nlohmann Namespace': features/namespace.md - features/object_order.md - Parsing: - features/parsing/index.md - features/parsing/json_lines.md - features/parsing/parse_exceptions.md - features/parsing/parser_callbacks.md - features/parsing/sax_interface.md - features/assertions.md - features/enum_conversion.md - features/macros.md - Types: - features/types/index.md - features/types/number_handling.md - Integration: - integration/index.md - integration/migration_guide.md - integration/cmake.md - integration/package_managers.md - integration/pkg-config.md - API Documentation: - basic_json: - 'Overview': api/basic_json/index.md - '(Constructor)': api/basic_json/basic_json.md - '(Destructor)': api/basic_json/~basic_json.md - 'accept': api/basic_json/accept.md - 'array': api/basic_json/array.md - 'array_t': api/basic_json/array_t.md - 'at': api/basic_json/at.md - 'back': api/basic_json/back.md - 'begin': api/basic_json/begin.md - 'binary': api/basic_json/binary.md - 'binary_t': api/basic_json/binary_t.md - 'boolean_t': api/basic_json/boolean_t.md - 'cbegin': api/basic_json/cbegin.md - 'cbor_tag_handler_t': api/basic_json/cbor_tag_handler_t.md - 'cend': api/basic_json/cend.md - 'clear': api/basic_json/clear.md - 'contains': api/basic_json/contains.md - 'count': api/basic_json/count.md - 'crbegin': api/basic_json/crbegin.md - 'crend': api/basic_json/crend.md - 'default_object_comparator_t': api/basic_json/default_object_comparator_t.md - 'diff': api/basic_json/diff.md - 'dump': api/basic_json/dump.md - 'emplace': api/basic_json/emplace.md - 'emplace_back': api/basic_json/emplace_back.md - 'empty': api/basic_json/empty.md - 'end': api/basic_json/end.md - 'erase': api/basic_json/erase.md - 'error_handler_t': api/basic_json/error_handler_t.md - 'exception': api/basic_json/exception.md - 'find': api/basic_json/find.md - 'flatten': api/basic_json/flatten.md - 'from_bjdata': api/basic_json/from_bjdata.md - 'from_bson': api/basic_json/from_bson.md - 'from_cbor': api/basic_json/from_cbor.md - 'from_msgpack': api/basic_json/from_msgpack.md - 'from_ubjson': api/basic_json/from_ubjson.md - 'front': api/basic_json/front.md - 'get': api/basic_json/get.md - 'get_allocator': api/basic_json/get_allocator.md - 'get_binary': api/basic_json/get_binary.md - 'get_ptr': api/basic_json/get_ptr.md - 'get_ref': api/basic_json/get_ref.md - 'get_to': api/basic_json/get_to.md - 'std::hash<basic_json>': api/basic_json/std_hash.md - 'input_format_t': api/basic_json/input_format_t.md - 'insert': api/basic_json/insert.md - 'invalid_iterator': api/basic_json/invalid_iterator.md - 'is_array': api/basic_json/is_array.md - 'is_binary': api/basic_json/is_binary.md - 'is_boolean': api/basic_json/is_boolean.md - 'is_discarded': api/basic_json/is_discarded.md - 'is_null': api/basic_json/is_null.md - 'is_number': api/basic_json/is_number.md - 'is_number_float': api/basic_json/is_number_float.md - 'is_number_integer': api/basic_json/is_number_integer.md - 'is_number_unsigned': api/basic_json/is_number_unsigned.md - 'is_object': api/basic_json/is_object.md - 'is_primitive': api/basic_json/is_primitive.md - 'is_string': api/basic_json/is_string.md - 'is_structured': api/basic_json/is_structured.md - 'items': api/basic_json/items.md - 'json_base_class_t': api/basic_json/json_base_class_t.md - 'json_serializer': api/basic_json/json_serializer.md - 'max_size': api/basic_json/max_size.md - 'meta': api/basic_json/meta.md - 'merge_patch': api/basic_json/merge_patch.md - 'number_float_t': api/basic_json/number_float_t.md - 'number_integer_t': api/basic_json/number_integer_t.md - 'number_unsigned_t': api/basic_json/number_unsigned_t.md - 'object': api/basic_json/object.md - 'object_comparator_t': api/basic_json/object_comparator_t.md - 'object_t': api/basic_json/object_t.md - 'operator ValueType': api/basic_json/operator_ValueType.md - 'operator value_t': api/basic_json/operator_value_t.md - 'operator[]': api/basic_json/operator[].md - 'operator=': api/basic_json/operator=.md - 'operator+=': api/basic_json/operator+=.md - 'operator==': api/basic_json/operator_eq.md - 'operator!=': api/basic_json/operator_ne.md - 'operator<': api/basic_json/operator_lt.md - 'operator>': api/basic_json/operator_gt.md - 'operator<=': api/basic_json/operator_le.md - 'operator>=': api/basic_json/operator_ge.md - 'operator<=>': api/basic_json/operator_spaceship.md - 'out_of_range': api/basic_json/out_of_range.md - 'other_error': api/basic_json/other_error.md - 'parse': api/basic_json/parse.md - 'parse_error': api/basic_json/parse_error.md - 'parse_event_t': api/basic_json/parse_event_t.md - 'parser_callback_t': api/basic_json/parser_callback_t.md - 'patch': api/basic_json/patch.md - 'patch_inplace': api/basic_json/patch_inplace.md - 'push_back': api/basic_json/push_back.md - 'rbegin': api/basic_json/rbegin.md - 'rend': api/basic_json/rend.md - 'sax_parse': api/basic_json/sax_parse.md - 'size': api/basic_json/size.md - 'string_t': api/basic_json/string_t.md - 'swap': api/basic_json/swap.md - 'std::swap<basic_json>': api/basic_json/std_swap.md - 'to_bjdata': api/basic_json/to_bjdata.md - 'to_bson': api/basic_json/to_bson.md - 'to_cbor': api/basic_json/to_cbor.md - 'to_msgpack': api/basic_json/to_msgpack.md - 'to_string': api/basic_json/to_string.md - 'to_ubjson': api/basic_json/to_ubjson.md - 'type': api/basic_json/type.md - 'type_error': api/basic_json/type_error.md - 'type_name': api/basic_json/type_name.md - 'unflatten': api/basic_json/unflatten.md - 'update': api/basic_json/update.md - 'value': api/basic_json/value.md - 'value_t': api/basic_json/value_t.md - byte_container_with_subtype: - 'Overview': api/byte_container_with_subtype/index.md - '(constructor)': api/byte_container_with_subtype/byte_container_with_subtype.md - 'clear_subtype': api/byte_container_with_subtype/clear_subtype.md - 'has_subtype': api/byte_container_with_subtype/has_subtype.md - 'set_subtype': api/byte_container_with_subtype/set_subtype.md - 'subtype': api/byte_container_with_subtype/subtype.md - adl_serializer: - 'Overview': api/adl_serializer/index.md - 'from_json': api/adl_serializer/from_json.md - 'to_json': api/adl_serializer/to_json.md - 'json': api/json.md - json_pointer: - 'Overview': api/json_pointer/index.md - '(Constructor)': api/json_pointer/json_pointer.md - 'back': api/json_pointer/back.md - 'empty': api/json_pointer/empty.md - 'operator string_t': api/json_pointer/operator_string_t.md - 'operator==': api/json_pointer/operator_eq.md - 'operator!=': api/json_pointer/operator_ne.md - 'operator/': api/json_pointer/operator_slash.md - 'operator/=': api/json_pointer/operator_slasheq.md - 'parent_pointer': api/json_pointer/parent_pointer.md - 'pop_back': api/json_pointer/pop_back.md - 'push_back': api/json_pointer/push_back.md - 'string_t': api/json_pointer/string_t.md - 'to_string': api/json_pointer/to_string.md - json_sax: - 'Overview': api/json_sax/index.md - 'binary': api/json_sax/binary.md - 'boolean': api/json_sax/boolean.md - 'end_array': api/json_sax/end_array.md - 'end_object': api/json_sax/end_object.md - 'key': api/json_sax/key.md - 'null': api/json_sax/null.md - 'number_float': api/json_sax/number_float.md - 'number_integer': api/json_sax/number_integer.md - 'number_unsigned': api/json_sax/number_unsigned.md - 'parse_error': api/json_sax/parse_error.md - 'start_array': api/json_sax/start_array.md - 'start_object': api/json_sax/start_object.md - 'string': api/json_sax/string.md - 'operator<<(basic_json)': api/operator_ltlt.md - 'operator<<(json_pointer)': api/operator_ltlt.md - 'operator>>(basic_json)': api/operator_gtgt.md - 'operator""_json': api/operator_literal_json.md - 'operator""_json_pointer': api/operator_literal_json_pointer.md - 'ordered_json': api/ordered_json.md - 'ordered_map': api/ordered_map.md - macros: - 'Overview': api/macros/index.md - 'JSON_ASSERT': api/macros/json_assert.md - 'JSON_CATCH_USER': api/macros/json_throw_user.md - 'JSON_DIAGNOSTICS': api/macros/json_diagnostics.md - 'JSON_DISABLE_ENUM_SERIALIZATION': api/macros/json_disable_enum_serialization.md - 'JSON_HAS_CPP_11': api/macros/json_has_cpp_11.md - 'JSON_HAS_CPP_14': api/macros/json_has_cpp_11.md - 'JSON_HAS_CPP_17': api/macros/json_has_cpp_11.md - 'JSON_HAS_CPP_20': api/macros/json_has_cpp_11.md - 'JSON_HAS_EXPERIMENTAL_FILESYSTEM': api/macros/json_has_filesystem.md - 'JSON_HAS_FILESYSTEM': api/macros/json_has_filesystem.md - 'JSON_HAS_RANGES': api/macros/json_has_ranges.md - 'JSON_HAS_STATIC_RTTI': api/macros/json_has_static_rtti.md - 'JSON_HAS_THREE_WAY_COMPARISON': api/macros/json_has_three_way_comparison.md - 'JSON_NOEXCEPTION': api/macros/json_noexception.md - 'JSON_NO_IO': api/macros/json_no_io.md - 'JSON_SKIP_LIBRARY_VERSION_CHECK': api/macros/json_skip_library_version_check.md - 'JSON_SKIP_UNSUPPORTED_COMPILER_CHECK': api/macros/json_skip_unsupported_compiler_check.md - 'JSON_THROW_USER': api/macros/json_throw_user.md - 'JSON_TRY_USER': api/macros/json_throw_user.md - 'JSON_USE_GLOBAL_UDLS': api/macros/json_use_global_udls.md - 'JSON_USE_IMPLICIT_CONVERSIONS': api/macros/json_use_implicit_conversions.md - 'JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON': api/macros/json_use_legacy_discarded_value_comparison.md - 'NLOHMANN_DEFINE_TYPE_INTRUSIVE': api/macros/nlohmann_define_type_intrusive.md - 'NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT': api/macros/nlohmann_define_type_intrusive.md - 'NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE': api/macros/nlohmann_define_type_non_intrusive.md - 'NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT': api/macros/nlohmann_define_type_non_intrusive.md - 'NLOHMANN_JSON_NAMESPACE': api/macros/nlohmann_json_namespace.md - 'NLOHMANN_JSON_NAMESPACE_BEGIN': api/macros/nlohmann_json_namespace_begin.md - 'NLOHMANN_JSON_NAMESPACE_END': api/macros/nlohmann_json_namespace_begin.md - 'NLOHMANN_JSON_NAMESPACE_NO_VERSION': api/macros/nlohmann_json_namespace_no_version.md - 'NLOHMANN_JSON_SERIALIZE_ENUM': api/macros/nlohmann_json_serialize_enum.md - 'NLOHMANN_JSON_VERSION_MAJOR': api/macros/nlohmann_json_version_major.md - 'NLOHMANN_JSON_VERSION_MINOR': api/macros/nlohmann_json_version_major.md - 'NLOHMANN_JSON_VERSION_PATCH': api/macros/nlohmann_json_version_major.md # Extras extra: social: - icon: fontawesome/brands/github link: https://github.com/nlohmann - icon: fontawesome/brands/twitter link: https://twitter.com/nlohmann - icon: fontawesome/brands/linkedin link: https://www.linkedin.com/in/nielslohmann/ - icon: fontawesome/brands/xing link: https://www.xing.com/profile/Niels_Lohmann - icon: fontawesome/brands/paypal link: https://www.paypal.me/nlohmann generator: false # Extensions markdown_extensions: - abbr - admonition - attr_list - def_list - codehilite: guess_lang: false - toc: permalink: true - pymdownx.arithmatex - pymdownx.betterem: smart_enable: all - pymdownx.caret - pymdownx.critic - pymdownx.details - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.inlinehilite - pymdownx.magiclink - pymdownx.mark #- pymdownx.smartsymbols - pymdownx.superfences - pymdownx.tasklist: custom_checkbox: true - pymdownx.tabbed: alternate_style: true - pymdownx.tilde - pymdownx.snippets: base_path: docs check_paths: true - plantuml_markdown: format: svg plugins: - search: separator: '[\s\-\.]' lang: en - minify: minify_html: true - git-revision-date-localized - redirects: redirect_maps: 'api/basic_json/operator_gtgt.md': api/operator_gtgt.md 'api/basic_json/operator_ltlt.md': api/operator_ltlt.md 'api/basic_json/operator_literal_json.md': api/operator_literal_json.md 'api/basic_json/operator_literal_json_pointer.md': api/operator_literal_json_pointer.md 'api/json_pointer/operator_string.md': api/json_pointer/operator_string_t.md extra_css: - css/custom.css extra_javascript: - https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML json-3.11.3/docs/mkdocs/requirements.txt000066400000000000000000000016171453145653700202660ustar00rootroot00000000000000Babel==2.13.1 certifi==2023.7.22 charset-normalizer==3.3.1 click==8.1.7 csscompressor==0.9.5 future==0.18.3 ghp-import==2.1.0 gitdb==4.0.11 GitPython==3.1.40 htmlmin==0.1.12 httplib2==0.22.0 idna==3.4 importlib-metadata==6.8.0 Jinja2==3.1.2 joblib==1.3.2 jsmin==3.0.1 livereload==2.6.3 lunr==0.7.0.post1 Markdown==3.5 markdown-include==0.8.1 MarkupSafe==2.1.3 mergedeep==1.3.4 mkdocs==1.5.3 mkdocs-git-revision-date-localized-plugin==1.2.1 mkdocs-material==9.4.7 mkdocs-material-extensions==1.3 mkdocs-minify-plugin==0.7.1 mkdocs-redirects==1.2.1 mkdocs-simple-hooks==0.1.5 nltk==3.8.1 packaging==23.2 plantuml==0.3.0 plantuml-markdown==3.9.2 Pygments==2.16.1 pymdown-extensions==10.3.1 pyparsing==3.1.1 python-dateutil==2.8.2 pytz==2023.3.post1 PyYAML==6.0.1 pyyaml_env_tag==0.1 regex==2023.10.3 requests==2.31.0 six==1.16.0 smmap==5.0.1 tornado==6.3.3 tqdm==4.66.1 urllib3==2.0.7 watchdog==3.0.0 zipp==3.17.0 json-3.11.3/docs/mkdocs/scripts/000077500000000000000000000000001453145653700164645ustar00rootroot00000000000000json-3.11.3/docs/mkdocs/scripts/check_structure.py000077500000000000000000000204051453145653700222370ustar00rootroot00000000000000#!/usr/bin/env python import glob import os.path import re import sys warnings = 0 def report(rule, location, description): global warnings warnings += 1 print(f'{warnings:3}. {location}: {description} [{rule}]') def check_structure(): expected_sections = [ 'Template parameters', 'Specializations', 'Iterator invalidation', 'Requirements', 'Member types', 'Member functions', 'Member variables', 'Static functions', 'Non-member functions', 'Literals', 'Helper classes', 'Parameters', 'Return value', 'Exception safety', 'Exceptions', 'Complexity', 'Possible implementation', 'Default definition', 'Notes', 'Examples', 'See also', 'Version history' ] required_sections = [ 'Examples', 'Version history' ] files = sorted(glob.glob('api/**/*.md', recursive=True)) for file in files: with open(file) as file_content: section_idx = -1 # the index of the current h2 section existing_sections = [] # the list of h2 sections in the file in_initial_code_example = False # whether we are inside the first code example block previous_line = None # the previous read line h1sections = 0 # the number of h1 sections in the file last_overload = 0 # the last seen overload number in the code example documented_overloads = {} # the overloads that have been documented in the current block current_section = None # the name of the current section for lineno, original_line in enumerate(file_content.readlines()): line = original_line.strip() if line.startswith('# '): h1sections += 1 # there should only be one top-level title if h1sections > 1: report('structure/unexpected_section', f'{file}:{lineno+1}', f'unexpected top-level title "{line}"') h1sections = 1 # Overview pages should have a better title if line == '# Overview': report('style/title', f'{file}:{lineno+1}', 'overview pages should have a better title than "Overview"') # lines longer than 160 characters are bad (unless they are tables) if len(line) > 160 and '|' not in line: report('whitespace/line_length', f'{file}:{lineno+1} ({current_section})', f'line is too long ({len(line)} vs. 160 chars)') # sections in `` comments are treated as present if line.startswith('') existing_sections.append(current_section) # check if sections are correct if line.startswith('## '): # before starting a new section, check if the previous one documented all overloads if current_section in documented_overloads and last_overload != 0: if len(documented_overloads[current_section]) > 0 and len(documented_overloads[current_section]) != last_overload: expected = list(range(1, last_overload+1)) undocumented = [x for x in expected if x not in documented_overloads[current_section]] unexpected = [x for x in documented_overloads[current_section] if x not in expected] if len(undocumented): report('style/numbering', f'{file}:{lineno} ({current_section})', f'undocumented overloads: {", ".join([f"({x})" for x in undocumented])}') if len(unexpected): report('style/numbering', f'{file}:{lineno} ({current_section})', f'unexpected overloads: {", ".join([f"({x})" for x in unexpected])}') current_section = line.strip('## ') existing_sections.append(current_section) if current_section in expected_sections: idx = expected_sections.index(current_section) if idx <= section_idx: report('structure/section_order', f'{file}:{lineno+1}', f'section "{current_section}" is in an unexpected order (should be before "{expected_sections[section_idx]}")') section_idx = idx else: if 'index.md' not in file: # index.md files may have a different structure report('structure/unknown_section', f'{file}:{lineno+1}', f'section "{current_section}" is not part of the expected sections') # collect the numbered items of the current section to later check if they match the number of overloads if last_overload != 0 and not in_initial_code_example: if len(original_line) and original_line[0].isdigit(): number = int(re.findall(r"^(\d+).", original_line)[0]) if current_section not in documented_overloads: documented_overloads[current_section] = [] documented_overloads[current_section].append(number) # code example if line == '```cpp' and section_idx == -1: in_initial_code_example = True if in_initial_code_example and line.startswith('//') and line not in ['// since C++20', '// until C++20']: # check numbering of overloads if any(map(str.isdigit, line)): number = int(re.findall(r'\d+', line)[0]) if number != last_overload + 1: report('style/numbering', f'{file}:{lineno+1}', f'expected number ({number}) to be ({last_overload +1 })') last_overload = number if any(map(str.isdigit, line)) and '(' not in line: report('style/numbering', f'{file}:{lineno+1}', f'number should be in parentheses: {line}') if line == '```' and in_initial_code_example: in_initial_code_example = False # consecutive blank lines are bad if line == '' and previous_line == '': report('whitespace/blank_lines', f'{file}:{lineno}-{lineno+1} ({current_section})', 'consecutive blank lines') # check that non-example admonitions have titles untitled_admonition = re.match(r'^(\?\?\?|!!!) ([^ ]+)$', line) if untitled_admonition and untitled_admonition.group(2) != 'example': report('style/admonition_title', f'{file}:{lineno} ({current_section})', f'"{untitled_admonition.group(2)}" admonitions should have a title') previous_line = line if 'index.md' not in file: # index.md files may have a different structure for required_section in required_sections: if required_section not in existing_sections: report('structure/missing_section', f'{file}:{lineno+1}', f'required section "{required_section}" was not found') def check_examples(): example_files = sorted(glob.glob('../../examples/*.cpp')) markdown_files = sorted(glob.glob('**/*.md', recursive=True)) # check if every example file is used in at least one markdown file for example_file in example_files: example_file = os.path.join('examples', os.path.basename(example_file)) found = False for markdown_file in markdown_files: content = ' '.join(open(markdown_file).readlines()) if example_file in content: found = True break if not found: report('examples/missing', f'{example_file}', 'example file is not used in any documentation file') if __name__ == '__main__': print(120 * '-') check_structure() check_examples() print(120 * '-') if warnings > 0: sys.exit(1) json-3.11.3/docs/usages/000077500000000000000000000000001453145653700150045ustar00rootroot00000000000000json-3.11.3/docs/usages/ios.png000077500000000000000000006274351453145653700163300ustar00rootroot00000000000000PNG  IHDR6EQsRGBiTXtXML:com.adobe.xmp 2017-01-28T20:52:10 Screenshot J@IDATxEǃvanݝ`p !$$Cy3oj}zfvfg?^ٯ~uuLj#G<1|Æ wщ :j!m(N&D DrFF8ڒ4Tǘѣd9Ǝ361.̨L^E cat4f2 6Fe*cr5ӧOrhG}us|'^{w"pwzj-rZk mGt|0Qa8p?y晧"td/:gy?6]`~Yfy-f̭޺ꪫJcK3x2kV5{WvIKdM@P58 ` ܂`L3Dm?߿FI?&7nIPv|I/oq>ɄNOr 7;xLw8JVx{<@d 29QpN{i>"$8,_~*n%wFb5P.Lq󢂧첋(>~GፑLN@4:Jwsb|UWy]d$cy */6ޏ9¼C!zx*#R*9M )׉ŔL0_TSM5bhz;3|ǿ 343@}F,KnX-hr0 ZoʗA"|o?({_LK#;;;3ҊP*&o=AzkƺX$gLJ}㢋.rMS+y>)heovR=jlg!T8kZkP'")H@YW"k %iߴ:}Gz\a$"Q?l& ga i>B c#`(fP2 GcWL 7f)h,wa]R"db .2N;g*'^/ Td[$f x2 qNa3jkb;cM+!{2޽XB4:]}kwWMap$j\.=X2Ԑ --YSx&;͆@LK)Rbdz4y<o䣋_|7q `FT&G7ڨŀP̞{)0rОK! #47 $OWˊֽy'w+O3T@%#<*`{g>Az1yđhM73h>7h&Nl6vmĮR*Or*nP"޲gN:IPM(2>b`'Z1J ?O# ^p8P f2!g\*AJ*sԍqJkOOU7*V6ԊKz謬ivFfI# K/ĺz| 6:P5նn2Ѿ&@s9袋³U-F`P/%Y(tvADe@}VI0Jx</TC;J^_⁓+˳iSiKy aF]ToF;/QS|&M5+N;{Wef_44Js7On)~:e@f&ٝG D`2G^v u >lf|$K9 Ц` F)/6\U/ * &[m9 /!~W^ׂ,A?+hR<y)N ,e%ɌiM`eP,X !"º+P]40J; 3AF%pf$!Z t3]x977q B`PH|ґ3Uk)Gx≚{` 1[`UFڂmTF،)0Lv^L|76HBoR+ׂ%T& iFIp{ 4Mx4NEr)HK6]9>hJ ~XJ*=r趧Xyw>]Q lH]_/>D: ]B%qO=AMS x%`31`zAX|xHCe ( |zBi!*,,6]|ä_Th.*wU;Xe*YeHSqc>U|ģ/HwZB Ib?`GCT`!ɄR>B+jS8W V9ŶC.C(e]rV(TsdJ߼JAb/- z9)+V(@^Je% Ԏ5֩PdrkL'D1PGrp `f/S%6Ͷu,QarP@pWVF^nTMe1z{kP.h* O:-K6BÆ_qiB,-Ә΀%+r)zzB4 lڬ/,›,R<iH}h`O}beEՌ3(z5ظ,`٥]~5O/[rװmꋀ?xҠxiQ/^TƌM=# TɊ\GmTad/.2W,!YkWK=6T] )S #Q_dBB-\?`^JzhD /c3X+ᢋ.4~'KBn7P^~# >.eS$w5&cJeI,( I_+ 2Q،ln楗^6dw5ބtCdܩ(OA^Xc uBMlCv@|Qa/Dw h2pdE(XSɢC5"Dahp+B 7oVKOO<U, ]{{ꑕmI,tLX&*21|)( !PdF 0\6S;*SKL.K Z-aR6*;pVaj<37LKLLˠa_(q P5,^TF Hiq.L*C 2Ç,0*cS+..-X/౛pxbǂɹoޯ: \~$w ,HK*`u+q WamZhK<Ey;#Il9n.AjW~s>L|w9S:zG$*v5(W=9U4B%B"q Uh\.Wa*TIeā%$)릇Ge0–T!0J>1l)ErX*LGfpuQ҅Z=7_t"<|uMl-37xldyT*Cspgf6HTr d>\c7l|*D6S22Q8eU:Te;h68RD]3XkظV LLϮ&doxݟKbǥ2xwÑ&#2V bkI}pz`;AǠâgm8 _.0̈Qo`A12aRa~~A *C*Ot.X_J+0P.fj_) LY$)q^SOJi$o 14u;0@yoZR9T&Q*3Rw=u] S|*XŶRLL{%[ Cjj<քdtV&@n_3g3S Qܥ2* %?xP.B)uJTL;Kh]΋HlNM~݉[Ju]d Sh"*"Q.*:TL׻[ C ;/YL}+ZWV"/WI8- 2TXe2nl[%1 @}Υ#yJTKla,Qg ŋN0%2 `3Qsatݻ0G>]>OkQ({L%SR TL}=0iV@{xLt$ŧ0%2lbW. C aD*YBܣjW#l/Lj : 2l;r! %}Qt쥬s))Qqq`RhBa&/)>ʻOtlEd>d-7&PIY[jOA`*cF$i2h[f^@2拓v6"]r(oCӚ %-+Xf،G:RҪ'Tc\_դ!n_ V@ǦkC dnQVg̐L=(":zL]Lv"3*gڤ296.b0X!f0\KIޥ+L%i ]BfikKq$mu) Ud:xLT&2؅q'p3g:Lll&}*h y̨* M׻Y C"Pj.l|-.He SP )N21>qD%)a,bTF|~3iIW$}nta#MIsNӬiJ"jx.JLFG$_|T!4iFm~Ҹ·Ek!`-[%]]lI&1jI)))ւʔM˹0a[ C"`$ƻ%=m&6-3뿮$FYrN$q"jGe ]ߋ5m |yi]uZ[e!Pylĸ*PӦ1)2c2Zd\:GvK%}P_Vʳ(ߘ*SU#n1V!Xwwzjq-ϑ$wjN#Wxd9Ikv⦍$/TJTկ*5Fexc&+G<>yK۹T[}w^ ;az.NRd1ɸ\$\X"b_{ç 5@ykZЁ@})%۴<RS*#K §2DdlTr=tu+`$1֒FdȽJ8pk?UUS0HۥO ֫W:[n2dHuTEÇ?裴[ouՁrBĴ"ig3.1\VaI9Ҍyv?mRf^s `KK^zכw8VF_1|BiΠxoG.I/k P>3z[n%%6g?F*`Xe'E4ưv=\fvI*#}1jkcsSf=OfַDY|%(֕\DV֭  mdտ ZK(Mp.Go2j[l65=wE $^x!D}Ǯ~/Tf&4hF65̴/ᅬTzZfEIdJ$!DD2$OGun8Y*{615=v<6aԑW/<`֎tq3㴏>l3ךVfH}e NmA#GBet&pvmj^/iTO>٫tvaBaʸ>sr߻woj4 ْBjޥj3qI&95}Q̯)i鳐D%98/q̏8'm1 t7TߖN+pOëN!66*3>.93fBejx_ܥGō&Lok~~;c(kYz*#s7T]f`fOe^y,gq` sgGqD>}IHu]h#Ll]&)+=I)()B(LS KF !f=L&&<?9rV_m59d] >j:PB06XM S2MXzT¿p.:~zM2$:#l٦U) .ȣ&NSUhLv;cjUt|hV*7*/`CҠLѷEֹ.İ64Wy^yv*q5 L;SKlGIUdbT кRL%TY JjAiIfDMrTfOm3'SC@O9q/x~l|Yv 'ãM>TϾo{c@Q*732t_M;6# |p ̦x|è׾hsU`'W6s'f۳8^~g}6t?U $K/tWviz۫.ny7oʽ뮻-BSီiCX`@~gI Lt CRCIs~{sӳgOpaRBt-oY'wr?ns|SAR&>h^!̛|Nyz'G#}F1 H HURR:`7}暸s5C=jϏ &K;j2 I2}*]i}],ޅte]V@״}ԨSO=n " Yӭʪn..믿@碋.RM^ŨΥ&ofN:鮻@r]-Zk`¹"4-,:$XRI4OICjkkwaM#}4K]9#&5z9S)e+ʳW%j݊UL/y񳊹e%|b5%P5 ܨD5m! )Ys+]R?ɋuOLm?}辀ef+e=M*Կ]T Ǒ"PqT^bGr@=GX@@m~^s Y>HңoMf{3RK-fxuM=w~M"2OSLL! ,k{;4}eLe40#=Zh72؟\[ μΫF(SD7|N;M3*0qJLJ|ei $"M'>at!3yqd&/NJ l\}}vS2@|>}ꒉ»S 5ٺ4ylq> 8PXS{|gAA,8^⸓r=hG_X#1iz~PapWQwP\S_}%mLٛ(GQQIz@Qk$8y4NrOӿ$&k7t#L<ċ/_C9Dp饗:<7lVRTR6pC/te-2 љO3mg WgяyۛL*ØeY!A#i~iŚf̮B{x pMUEw %HNaggv9҂'/<%=@LGk* ɡRdZY\9 *S`3.‘23_%/ǸG%4Q;jqX"W8홲~[Vjq$Xg+{j. u܄l}iuWOmJV 7/sTIlߒl؍rdp*s\JΛ^㛀I-_qҦT~tu$9 [NU^yl-= ELh:N?x}5(<*ܚxy:wVtMK+i]*#0t׏;sy "7L8|5UnJ_Ax GmrJTF+i|N7Kp4(2tPe Ը2̧p!?ZIT4v*FEe>`-;GxN %9ĩ f\дN8A Qɋ 3yqXH*xKHʤa37Z~A} 8K/;TT~CQ "Ԧuk$uݥu[I,'nZD!;x8YkXwuŹ;my4Lp7PmXVok groF+VZ"{x6.|m;[vǛ] ϸ8ɺپۢj*x}8:5اf2$tfT]NV\qE-(?CT{I'i*pH;$Вb~R! 2 ᷣ8(waMcB[PA'wx{VQҡSMut}#J4ID뽱,6G$D&/%{\O(h 2^T1QBW! g( gʕY5`%/Y=O)’\x\&ԘÐRl(9+(U9IU_#U/{TEk /ymvFap/ə1h3Ϭ*@Zh!X6yo\c=D*ÛPZ LRR27+\."&.W5N?Z(o6I\gu&&쳏z_uUp1h{G]C]pToTJPw4C5\hxPPք=(1 2RIP S(Ne@0|0p]dm-gՅ8kRA%Ɛcy'9QI$7P}g-Ie]I=л,^x5"r"w*>=[ڊx'" O hSل RoU0 :ㆫhBrESg=Syèڼ&Ar~r) IJeFIUZU_#U/gbY_wX L<\rI%$ DH2-WKe+҉멺ꪫ[ZQu.Ƚo"%H{mCR]XSwQ6|PpR!r:*z"ڌ 25Ɨ'yN LNFl()D^+v-15BՕU)4a8}Moq^NBl"a  D!URdB4tM90H(>.ЖT@8 lF_,:E Xڤ06%Ğz)I ꫯ.GQT}`KZs0|Ck<$N,Q|dzQvf$h~26#~+~ߏ;Gd ڝ{䣿X`\+淆ġ##e` !ӟ-1g[Y}^44"6Hi2[*ӄy }Awx}j6Y1dhQKhSܭd H >+HP`Oe0J#CPȅ1He=F.ѭROeHnx:U`5!jt̖+@IDATD'3Uxt։LFq'Zey喓Ŷ"SNe^Y|xdES(QQA&n\*=š0IM[ۯsQvOluL gh^Ƭ9&]IԈӢTƻy>cDY߉=빊 ݄8s ~]\ Aj4gq~ܐ{}*L̽ OP4EyVmBаDsk3pnx*Un02wkJGUƥ2b63{ Q.[?_VB*Cl(U4-ƑʸV5RuND*;ȬKn>(3L3A}oƖeGUICeM2dMƄB LdO+,0L$l⣋;j꺡h*ÃHAkKFTݚDtZͿ$1b*Sb3'Z0WnI;QevrqI0[.Wzx^R7EF} y+xHG3Y [_ֆ/(|J ! ٖj)*(M5b׸Sh$ѝ4UJqLHmmTѳ<&сG=*E'7-TRb)1ʤF F.1D*C*sIzkVd<i I6ēO>;H{,lEyU ʔѢ"lEPrZ/a5#vmT^:Ԗ79A.y9iy*Cl|ceI|qۋN4UJԩ[H1?Kˣ2ICLJC#QJl>9hw2Ww)BNL '!Qp׸袋^#~x%Ve =6gcN߿?t ."I[щMإ^3g0YºD2^rwboYuTI]ۄGkl̨ݨQ!ÄRُoGUY`|>3$ Ί1$.JeJ Qb3CG}nJƵ`3Q;FDIVقV7 <3yIe3+WIЉj_a l]k~}_t6>1T^]2ѥӊEe>|dՓTx@8"hAA"Iyz,eloR8w?#P[ 75^,T#4Mx-W)D}zc_/9 Ze߰ha3fxuq4X^W2ʐ͗t#Pz$S(*rFʓ[IHCe1.Ddn(1Q4l{6]XXÔ$ wV,-P@wf_x&QF9m 9>Y`z uFE^ U@E-ӨpgP*: Ҝ {>0:>T8&Hec4^v)LIMeJ}yKɴ'_gҍC1z~:O>i}HrV`?'܂؆TwVTRt&5YZҏbCP gEcԥk)tS4fNuTyFQFrHG)ג?ŒWfHz9Iehk:Z;3ʸ7KWƍmQ0i"2$g`MH-#X !Z8>󱖂D5 B~*G;찃pP8:'fc3q|S. ym ~[p/p[A2xi{$͝odFKO #Kc}W)GrbnTMr^}q@N7f'9) ῊRrYe© m2<> lӲ~Wꤸ*DL7y \ Uc D&Q1T8ުKQ ĬH)4H?NLnθbA9W^y%v~Wٓa[ ƒb-V&+..ʄN X.j[U\(gpw @00 vy:aTx&{LI:tn"Z;FH`1:O!<(f xtq|ch֏5.=OxrIby3xhʓgҎяȩ?7w?Uyx5oӁ>PORP{v%-Xb]_ᜭdLe&[L_'ՔP?5F=QQV8>@e<b3ԤF96'rW9%0EܔI|xY:C^g*15!1 ~G) phOT=-uu[k C蜘Sɹ4([48+1S鶮::]!`@<9&Q"Sh0g +.D2D|O[!`!Ѕ(z*)4  !+A52f%jM1 "s˙qv䵢19#NaF 1. +$!`ta߱ wS|aMc`3SdkFe*ٌb C[ PYvn^ȮVD&[L)y S%َQhPˮAZ;3 ⯾Nu.-zu헜CQ/;SNG|pwW?6|sռ;sN ߿o*O;N4LsUWrxl6va^N<c:Xц!` L;]֥2.,6lmi9wM4,oW>Hez!e'30$L"履~]6餓BtS52CE234er!^N<E_~X +0 C av9D0 {1KܨD9U P(tW,2uY?/wuVwyg믿j@}[o-"r<3TiB*Cw_ڸzmSC0 F"P=Ṝ8>HjQ>z:䓵=n ,{ׇ~QLF}ݷkbfXa:ꨧ~Z=! (q–̍]R*33=믿O>xo-B5ݗ^ziVs{<=[nWgW}x`-`_yYEc9rk_y*b?^A5EV{QSH>{ *xɸj_}$ a8zTswʅLY`o& DkBYe'<3`Q*ǚr)Um 'd曏pHLۢ`T{. su'US*y`%А2h?Tբ0\~Yxᅃ9CO_X*Y=B N *6ی^&H昝$[謄$US8`!`4\T7Yȓz 1 f")SMug2eLl(i Ĕ`g}݅0 BeЁ  2: ` h%\ eUgJ^//bú 'gdFG `U4TSNt9 pX05ɃzqMҊ׈RB lj%(PuY&^&xV$Y#OԄyuWq( 1 Ch  U<#ν>`AC=*n& Ì;{dFYqY:cV1[8d򠉧28HAiB~$E":u(Kt|*r*TJ7,iH-2!~BK>賶%R|H]t[E* TNpã !s-R!yiذa+e]&tJec; 2$u]PqL^2d, LBB$12X:$b!P[Rqc2x!ă[ $Ӷ\z4ɛdBl2M6>"` *B!aRJDA?! ꛢ dl ,7`|K.yT"8If'O&D"m$ݨP9HeD pKAJv{{; /`Re P*NS)F* Bh;S 8Pd׍Y6^!`4TZ^y~z|GBa xxeLlȐ!e$, Oepj"6_@ྌ-T0)ѣ2d%Y<"Ѐ@Й}!@8#{T-.(8ڑT/wU4ŅʰǔρI %;bXbA-TM<r QTW^#-I{{}wbc <|~G_) PR& Rq\e<*C`euT`2 暋г=%L"IZ4SS +lP`!`4P*1P*<[?Tۖ3f(dLsqQ*w0y;.S"Eu L̎dOlpE`^$! rRwܑiZB3,UR1Nn:QNQe1KlL/Bsd&X\N*C[+S&xxBV\!tB Gᬚ4;߇Rj P*+/tii&$BHJyK Xz*k!!`A*fl^9rd|>̎|gk]RA|X֒PuoOX],4ebG W>x+K/ľp=k"$ EzᡧMМ d*"9DAdᆀ!`4FS4{!=_VV]uU8 ~0ٲǫY!`@]0*SWx96_5.W_ r 6E%X 5q-0 CN-5N(sǷ 3hk!PW^0 C0ꋀQk!`@]0*SWx-sC0 C/Feꋯn!`uEL] C0 C/!`!`2u27 C0 "`TZ!`!PW^0 C0ꋀQk!`@]0*SWx-sC0 C/Feꋯn!`uEL] C0 C/!`!`2u27 C0 "`TZ!`!PWZʌ15jT]qəy +Yìr6ʒwmlu]TfM7}ꪏ=_ G}TV[m5 h$VZ[ONgm'IYīdlۛ)Ue]曯aըy~phFN;!yN/oYׯ/"(f{!y:T]!Ϡu10 #P{*O>5iL>L3Q!RjIY!ay隹暫eI5/ΒMXve fm4$R}G馛\~(,&!@f*>_:X`nO?})w}TO?}/iN*U2@*ƄלX$V%6:L0b- {ケ8FQPR!*Ӻ#Mh!`tO2S&yBF*ps1Xŗ\rɃ>]~3YԔ<<+3 h&p~onl<ʬOQ$Lid[ژ1c8%ӄ*x$[s5geVXᨣzUۋ2ߊ+ m,Lo￿2}b(ck_y&6:_ϘIB -?Ă]S=Bg6Ę G g؀LpOZe^ 7p^iB)UC̢6K?t ksmEZe|B/CWAD*M;҂Cԑ,҅Y/ L7{k7Be &h"m'$7fV™3f/"UVsύJ_zHt$'׫\p5׸IToo߾}ɚA$!"L2E_|E9#4:J4ShTc4jig'#uWFź뮛%W8t`he.mTaSN9FM80iI_?P }Q!4* 2ޠmڑah!`ԑ0 ^3)c;^ziSB#~jyK7ވArc?PKgYgu>l^xa^{m_~y3T E(:4~$Xvg NSM5!R`BBۋ%xdvvmK,_}#,dK-TϞ=Ygy <3<3e/.r-GVTSOSTBkXb|9^w|:}((tD^Ta7'6P2•;8 4Υ29<0 #9bԎ9Gˋ2;3$*F]wݵPZJf&wޒѣp3vUVY$" $1,d}$ޯKeބͺC;[8$+/mL{(M;#$쐲8z) MXÌLx`2,CϜ)C!38#9LTmK0 eFL: fqX,R|%H?xᄏLӎ4@;5 CHe ^y*8~|q馛.Kbv`дHqNX Taܸq-p+2y睒-赍np qW$--6`DOcKq]wݥ*KZ\z饨 tM&ڇb9`Jt"0TD6 SЁȈh`Zki5,Q]DP*u1S#'s2;4HSC0@TF_V*-޲24/{%1S;Be}e(ExGPIZ3gXt]MN=*&!-n ª 7܀>i4[W̐!CXg)wMrL{pǒ-kF."_}ը4HQzgߏ뭷 }W&%WJ\&P z$TS,2̰E҉TiG!2)쀘0hn¤(/Ȍ店"9#KsuƟZf1FQYUIvZSR+L5Q!+I,Ts2Eeh D*Ӵ#N CN2sw}G 㱨ЃphL KW_edJ`uegIp}`@0{漮Zo]*shGa=z-,I i/koqJbVg+_~IAT&n?>7 @QTFWŸF@SX*$_ajn(QϘ U&P7sd*0ő:QlV`smӎ4@;5 C:@ e`TFE؍#Kbvʈ;{ڢôK"&D*6~x=]BvEӝH Rgl3,^,WكS<%|$NS6k4ZePwEQRU~q2( Gz+U`LTCʠ_9Ke &/Qk։TsS;h9mڑF0 CE ųE zund%g020\3/$L'W^y]OyD%j) + :p*{ 92s4B,bus4Rg|TuGrEexjw ,:?\Lb^w@/hA =*_Ke]  8\*Ӵ#N CEeIc><56xHĴܩY!9rdp-0pțnTL{ B6KmWCM>46>zg;jW|)]  *$_4#Y}tz5Hw-Ch!:ʴFRU|iYcbxnr !`] 2i;/.c:~6Moz!`!Pʤ%|?qdq6!`@}0*S\-WC0 ChFeb!`AL}p\ C0 C!iV!`!`2r5 C0 `T!0[!!`!Pa;|ǁbi}0\koMŎl!FVl0 BTf>(|@| ѨL£>v"LYr#Xa85^cG=B#+S pw7ݲ(U?w}7Qwp%SO=f!`Sv•l>}@} DӔl!ji|Z,KU'|ROף2?P(}5ʨb!`t)*×O>baGʟ~i˅-CΡJ,ZۈR8l!{r~˩" ߳|t~GQ {x笤%7 CkLEwZe9_|%CF;2Zʮ =F 'T ChR1czk7_#L3SIU@% . Y硔ՃicW^ye2Ywu%dtVm,j4LRtA_~L4 ɞp-t]MO*Bc nnM7M9qpjI]EYǧ%F2g}6k(EWAeSs=aR/7dC0Z azj˳5O:g0 -6*0h,)r20Wb2-˥k2ޅC!`4 /5 oOS }^ge:"Ă~Y\2a E8$=߿aH,[lʋT%$jab*G ְP`j,4Cѣ!-0K2,I(5ĝBBP(yՅe;|ky% /Mr%6 a2, #p뭷FǰTy[R}"9"I3 9,HP2,+ 9H9KEG%3HP d_Xo?sg9wqnOOwuկkg++LÆ SwepF 8z8kſ"g,'ypy"Oܯ2pN4JM!>'6pe$ b(:#GhV- Ʈ 3L$|kV8 )b:a~чC9Dĝ2 簇Wݹ+#ӂ¥[(]m@221Y@9v+ck B(GF7H昹2-]QNtɂZLb<*s.o? f4G+ƅ.W 셮 2^I|$>H$%B5 Q\uEXΘ1cԮAtw(4:FF6+N+)C8xd;u2BEbimrehCF~+ C Ʈ ;Wեjg9mW&cYdl}ڋ݊.9ԣoDHPL-&Nur|W3Yzk~ș,Vx kaOK?lA +odO;4բ-~;r$2M'ݻxv.9Na*+#"+RZKAZ2m{w}WF2HYl{Y+cx i1B<e#pq(LWQ]m4v2a@H'PҕaDG8Jȭ]v؉9O;~ɺ2^c8t+Ki=z4[űHe\V2vy;'*cAW(2&? Z K+ D9y|dHvGjENdE]Zyp [\m2e-2+-f4[m]s<ڇ%GjS5KMC+ +Â.s4Is^`\mr$eoU2馛RgT]+MK/!@we(bv:8 7 8YW+SKm!ު|Hȕ!P'@x t%+ )@A 0+#0k, R)oSE#ǂ@ _?@ы[!-X"̰DuH밧2 @IDAT@":2f[%`L< d!BO5B# 91JFhx0*P&Xhcuc"ZʥpQCqjS6 ͂@A ctб"YT[t2Xb g]y! R( D2vqeBen -4 @A`BO]^KbM+oq%tl{i٬c/h @A 0SWfPcZ/ @AgWgP @A P>ŕ>bA P( =C2=4T( @(L1- @A Pŕԥ@A P(@qeiX( @(LϠ.  @A }+}L ł@A P(z@qezui P( #P\cZ( @A 3+3KC@A P(ttB P( !P\A]* @AW@A P( PA P( GSWzſ/UTwJ{ @hߕ3fW 'p2V[m\׾5YaOn닯go*_^Vzs1SO~ӟ*kZjm^y啰~K,7=_*}뭷.b#Fn?GE]NhCT 8Ny#86{nyr6"p IBÇWfsꪫkQfVժb/ FʜviM4l};| 8nFSMlЊOߪk*>'|K.L3t 7Ť>䓇QQ]}駟>;묳>s!~g2 -PuׅIO5T #;uᇫ. /w W| ]'xBe~|2aOTX+bK,L2 U&xb[*2i7p Q6ZFS2~_~y<$a.Na4#jj|&tҰؕW^Y߂@A 0h|ӡ/--1fB1` J&E[<3g[Mil7Q5\#Ax#2Vlȑ ?\BjŘ`Y"tedw6f<{7dIO"W-:H;?=02Y\G"W"‰"qr-iQH2asS   BWv?n 2%"\aSE588LL+> .ʱUmxIFM=*?te8ʡQ Jςre iq= j= xp$ϖ`g. 噃YJ|3`9ϭԕam=SD3Msm? 2@P"zmk֕1SPIlaGM4ueTI`Nde]Wg>oh937|j-!.UZalAnQ(\'P`\IȕE}3㷱BjoPʰ[]O[k1sex?N)s}O"Pbֺh %d8bZ#%^^RBE1ģoQ&1H5DNi [dAb)\YOˊX# L]5Sҕ~ԏksɦ ]BPWix+\9p}_)e&jl/JhvA1|I+Ԡ C6]p95z>'̾6bY`ۇ05W-C2xUxn42a[[pOBc}O'hü4 q؅A #Ŕ/-+C:H FRK].gCP˰"hVxk 'J[  km+C m, +Е!l6fHpZȆ %nVj2oZ⠰MqXisŕ,@A`h#о+#\p5l팶qj,0!1Cg͕єϋO ewÄ޹"N4mD8}f΋ QZ9"N}eyqѭN8A` w@G;DF1T즔A HKwҊrZw棊HVJ@A 0ԕi[ȕdcŢ-ƕL,>%*<\ P( A@_28B@{V4*- n+  @A ƙ+{GnN:juKm9/u(2@A P(3̕gP o@A P( +3XzY( @ŕd @A 0X(`gA P( WU( `A2 @A P(T P\ PJVA P(  *| @A P@qe*@)Y@A P( +3XzY( @ŕd @A 0X(`gA P( WU( `A2 @A P(T P\ PJVA P(  *| @A P veV!Vì.lyW6Z2{?{ܮ\p[nZѦ坦[ݵ2oZl?_=}kp +tbIU2 goUR̙gS<{C[l_kRs=?Ϡni*]zuyw@!5#MmZ>_fGwY1ё+su=cƌ9㧛n:DM[oF ~׿~;o*~VE*[$3k:!ޛHkn#W?\wM{{CJieMhez}2/+kC7ns9|m6>wz]xᅿ/ooy7xcVnv&X`]w} n-BK.%\bDg|sW|ߘqYd:vs7%o΂ .;O2j gq߿V[3<0w[(wꚊ?_eUfu֕VZ[o 5NA7|3 dMXQ(1r>.<3C,F K/4穧Ja[T^}묳s%񛍠GAi#wW#2~a򗿼jo}WL5[=jyJ8*ZRTK袋ByShA5!`q"&|k:(- /kW=c!3/`Ș}ieNDV4pȕO] ۨ$p0Mo.k=*.k1_])k ɚˁKSNy9& 2$Zk=%$[~mP_DVO?tFx z?f5u&tҰ͚*f}0dY[D3T *AÇx≭E$뮻hE^{`W-ܢoذaFmUB7Q*O*8cT_wN-|#&Q9 uhR(__E+YJV%/` WoF*ȊfnZ>>QaeE]#pSc15lf [}xdИ|y^idꪫ."`S4i(Ry;ꨣȔ+35ʜ cxj|Cha' +GH~_\se.BR\ꪐdIvi'o]d.֗dӓȕL t9.,g?ٗ%. ?x&+"#;0mDh:SO=u<wS y令*ZRDugDƦ'?wy% /@ICR(wP*>U|Mh@(N! +KdTB3/CR>dHZ,)\Y2 B+ ?Y3E6*,4U?;V#쎬Fչȕ1n|A~W\qE&)4/&=\CC܆VL_ahiη49Š@R\=eW_ ?ws94r,W!L<QkA!q³+'c!)d$"&x6YN3V$Yf˧]6V "e-[yM7y g%XKVIM+)G}D [񵎒~< YUڪD_쐯?(hW3 [#,J^2RSuf͈i.hFiLZ֊[0}W9z\wYu!t2KcnxpiP54&d4reڲbrXeo6ߨ" 7$fdU.RejS2>3b~Ӷhl ۖ '6ίz.{=m9#>la34-q7Y&ۖɌ\P)*x2HEfCdӟ1ɋ|Е yWJQQsbZtg5!JG=^HVhuIk. E /tR*:f$lV 7*P|Ynp0U_4[;yQw8J6:reLaͧQݚ +*B,F_?i`k߅ZH L6%44P&˄O-k~CYfi[ul' v qɒ'H~" /'ի"W&Tb>ha]_d۶>>c38Е yWJQQ&ct׺l< 2&3C"YR@!_sPЮfP=laaPVu4̚˲]ZQ82ܨ|V?Mv%܆ fw]FmT:փ梾#'p@JʰV>SX)`bS0,CN\ê.L9W.#5/~]|#i^6Ǥݖ5ߐ~"鴭PEڀ:[E62&,"dSL-q%kt2S(E;2gV߱ "xڏž`5bo# ω*wF+-9+CZ7'0`;8%^ʰ!I%(H;aI D[M"+OxK#!\-ٖHtWjσ7j1)K ddqnK.Ag5Gdzd%JTjL`aO$}I'+ެUɢQG,,,Mg3?mX?ܲ`f&_-Ȫ+ +0yaQN_:ɯsGL?.9)*v34Ӱ-Rݖ5+L"3Vl+R6q:O?1f6 Vg٤?,`(@t% p8[٘UI;cʰ^{Qc|4Ѩeʰe'AȯhRDq$%[T)> # WU=Ns>D D) ʉZAiGe$f?ppCQ o֪h0'5#i]Y,M#}npfVa\M6iߥY;lǕXz3_-sݨUx45A i7m_j Lb K8PX0*)J$蘑:V3Ӕ[9`T'BtwN[Yu*s`]VAyK,bEo̕V.w{_5~M;G7kRy]/MaT yg./)@/um$zWΥO JKf%ƕs=-bK[4 *Yb[l[SK >whSﷻML7?ꨣ&tRނjAA_`QK*ĭUW]=Z+/RJ:Y:u ${|O>*Њ}ي[| u( Ҟgy@_[٘G'2@%ywٮj7L~ߤs94_nM*E;kl** !?\{Gmvk_ @hmw -n툽xu_zK҅b 7ޘ*teyWgeh:?]ZM_~zKLc™LU`wlE-_veU~>9~5ۃu}I(§yuYNnVPW&*j F@<4סIf4{ό˰fCԴ|V*ϴ|kC[oUnS^xuO mVYzi}=Pf*~w.ikx>bꫯ.rʬ9v*XKre{OȐ[dE{o=7k`yP[py"9e8>@[=[L9jUT^?s~uh}ŢqV[mEX';$—7d>MlNs:" {.(_+y睧\?H*7ZuW^*>MQʖDXTa2ѡ2|:tٔ?#vm70_r% G|_Z|||BHp 6apG/~Wtbpɢ_@TeguYWZi%cH', Et̩zi]'x0VH6wE(i窫RyK @9.&7txKPf`Ɣun!H{!%YBÎ O>ď~#1 cƌ1[%*¾ZԲvVR [TR){wU4duc(r^{nYȋ/Xķv[%ؔ2=[Z8K <䨺'qm42nl LWvSV-#RY;w3h(بh@5/wWE#nLJƮ s'GyrNK /L2N;t]wz' Bza 5W2T ">cPX|I+ʃ/iTa{ʑ+C&& D!hD10p\l1.G.zC &4; 0#K>y@<vaox8㒿VӜn~O0L$e憱NW4t>1oR [ӕGe;n4:I,P -ŧE)Ti?sC02> YM&]w\Ve7p^*>?Qs\xgHc)[bFgia'hi#BXHw!D:,(*""_ P2ķH*ʄCꖅ4WlDJH3s=WR`eq!=[)E5y[%*)!v3h W+'mҕwWELJƮ NBd#3|gejiK[u2;*rĉ9H)d9j(G31B jP3"OQ9Ly#ҕf_D?47|"iԡ>MQʖ\ؚ N݊ =3*/>|-Jl?S%ʄ6)*-Ǖ59l4 = UW\1|Pre3Cd.<i,|7`yeȕ+k!>9T$T2ss7/jr:A,e%MQʖ\ؚ@v Ab( B2U L*+a!@]EQ!F2a;{,TYLQ7QːZݚDm29'NNoT4bc(]6veD? ։~G~4vk$!`"L̺2a*g g0qqd/CF EM993U΋m" Uӕ,a~Oҕf ;b$̇͟s'գclyZV*nwC"ޙ4ueԊqgSv :,Q&I+kr(i[` c"XpD-:o9J D]2wp#R,"Бue( ifŀx;.&kY0m,0Qː5;ʕe aoӍ]6irdr3^M ̺68dk dhx:$ΡKśSʰgMe\1x>{E~0c2qbʤ&28Xh-V K V2~s>l`|is:Ǽ)J jұRkK se|עϦC!,>uXLgbWQe~~K]V9#4ޱxĤ6SQqe.GIlkfb!BWF+lБr? sXH *gKnU=9|Mu2~fQo\z!C,ؕa7\F#+>It%8 :P6cv+s !M4bXYh;0oDX9~2сb,]ii"@Glg*Q)H_@JANpH/2ҕI_8*aY:##F \IC}Tջ;oSWzY-l`)O%e6)qedkT 'ETЕs."sl(iluY2Q-%꒙ԕ"ٮXHЕMќɎ%եCnMYd톣fA4L*{oT4p(]6veݸ: [/l7\!NEv7uey#HdE% @.Sje8sqLbtepyPG4k^#Axm*qV,@+CU/QC -B7#ߥ_` 04|c:;iLAAet+ բϦGݗU,KҊ4+u;hC8+'re|~4/UL ~y5kV2V=zwʰ\eW[JW>y=S`I&3N D?l#:Y;w?ԕIeFv\'&plQq_!Bɀ{-FT& {W`6_Ko0_bX{h2+ JfUU&gnwd8Yy}>i Q7B  *P/~~gGMdw$ N,?ÏS+Skxn0A{eЉ,LijކRvygan{ta2YVc.DMM2kn.椲g;dm2C"]A 0P/1 "7 c;~DE~C2#@A* @A ʴ( @Ahߕy% 曟~D坒².kǵ o坌=nwP4!8Vo Q9P)A/Ifs:: Izci&m2]t氏tU=PVUl=J6tSr)^[c78jşɧ=}H"JR5[$e)FՍNۉ6ҥ[l˂*]0ЪLIq=yz~2V|I)x% h%V[OIESisV?>!V՛ UHVMz+%hǕk͉S]Ʃ*j/=#"T[~>u~6nu+6-ʭl154U׹:we6l3}UzhWo=-*tO fsYm@SIє7m%2|aix>|%3XۚW%39>n+nĬ씶l1o.٨O6uWU͕3~ RcڭDO7]Q`edF-:iMR$ES;޴R4veĆRmvEYo,7fm=aLwܑOGKʕu?w'h"r]tQ| R~{.gQec /~K-s̱qY)|Bϴnֺ7p9sG}Ԫ أ4JCvr:(.L1[l1PW^y%f*2묳JzHׁJwUw}F$ ;~GHm\q7fqF:zIWd+Ŭ<GuY:uVXoiB%ʹlgqjgwpQsuV"WDqo&_W[m54$ʴރ>F,3y`wOA+;*z6a^9)GABGEEQFU$_FOӇv#bW⋹uׯ:ÇnFdZoe*ˇs |F UW]eXï@IDAT*#tя~ToI/XawuзcˑGQc׫*'1CҤB1=P\sͅ,UJAӌv؁}coFțҭs9 ԇ4jZ|j5T2 5-P/g=cHc[{w?0da+}n NzwIy5lƇ)L<ĤegE;r9d}'Pqrꩧwe"0T)ZkE>t]:ywȷK. 'pw`{$&?t,4x (+i']٨$Vx`J`t;4n-q駷j*>O?QSb]viE3JPP ] [OI+_\# E߉6ljܵZ`ʲd9X`J:g r-ʹl 40D+}\p˴mD082w^)@9^ٺc*ˇnfX{-. t2 [IسXI,Nì}.+MJ$)8j!dwRyQbNg4I!}~A5N;IgLrE ȔD_2yW0G!ƌOI& AEg=Sp$s l\ - (GR@k0[=ƞ=hZ / uS ߂K-YP"@⏯0j?\K\E@wJϔrInk? V6*5|)}Yc'<=p}$&OWЬl1Ŝ!8\4w$8*H[%ͨz(xOT ￯*P`sY:ߕHڨүNQa%Y6XOSi=_dcP '1-E:@iv':hgn I-asei $d#ӏʴ)PY9AKd*]D[ӕH\<Ҫ3MDg-RT>"Dx+>1%B"QF"=<Ω -v%KWl#T9oIb<Yfȕi-FR0B 1Jeścz 2jab bhYWHy*iF)t!K$ږEcWTE#WRcƦI2|Z1Kd^+2 VFYV'ӛ G5d4#.2#RGԁ[  S}h2ДhPP0G`7HQ,""`SVC2F\ S/-2?oI*gQE2,Vd Oh٬9Q,a]u?M!VD'tuf FVі/)2A3:L:S9Z~K4veIi, (2o:⠐ʄMQ& ue(o~*&Ύ3rZE: 5-_1yH ELO֔拆|ITӈ c*yբpt>NЕ"졓{M]r-xm:ײARL2! 1In)c)tK5Q̧'reN XZpK Yp{HV}~A5-V9f`4\;]j;-fYhʰ7BFP1q\dvq{eDMq+Cxb 4_%}&dӖJ{^{Eyr:ҠNMC0L3„a#4!NHe%cu1te@͞бV2֨GC @?5*R1S̩é4 {@C. a( *:re3qȖIKSˊ2~'rR~lTu[rjϕڰ@æ1x+C}v^BVRȕ Gء݊HV>uF@$"/[v8@;veŔB:fJ%݁AtI^2qmʘǠNOm{.?Dr *AKb .u*1 lݪ_G{F&el2,9ҍ]X:W"%{??v(ue p aVQS21:M1m˘F2?k崪TG4~6Nd9餓|4Y`8-(Έ+C,t4-ۢ2iJC5h>BS:DMlF=Xy頉whG!nSQ,P)ԑ+ܶD:j.K're\iW{ ଋbH;L?>vV-qm`Zu|)`Ych JeohĆo*CVUW^D`cncq ʠ LԕaeacT+)PZdeHq:%B'1J0UrZeh!?]4d]#n ƛ^aŢ\uJ.X:#F e|xA|""ʤ{".mMUR6Xyf&lu4IҌKGR+]MծFeDL' mMve5uv3-q\ơt#%GqYlG?-k0oL0qQ&iZZZ|JIW VSG$D-"WXD[[-: g0S $Ia)P.f Xee $UKQu.}=@jӦ12bZ.!W7z ~8<[[qִ">K` "^BRPT:|;|%$5FTt[p鸣)Ř +t0`@i ۢ[]7/we:lT/s.G[㜙eJI}LYq@(sP3ԏ?N0!5f:p2/ +SުpTvk/`!Ro  lՀOr"B@6`χo\1'g}7Գs ,Lhra 0`³];*tZld'[Ƹ--^w}ǷMudtFeqeE7& @A PF2ո܂@A P(ŕT, @ATRr @A PWfPtSa P( j+SK- @A`P 0\NU!WypX;GO2sRSff璎+ cx OaH*ěx|W^^{3B~="\M>ueB__~O3ڻ{+E'jUKrpnP33͟PD3O5J8twW8D"=7x#v ǹQ'F=f/P=n}=BKӱ V5Y|P/Xi/oYpHnDmSWf6ԕYvemwe3>5l7K+t]pPP`U9<"e;m _࣠ggqFԢ:[6tGM'v)35D3O#jӕYqi/B+< ""_%|q.`ԉe*װIJӱ] u|w'd)LHNkW92;o|~tu]_u6On|ՅR[!o6l3kn>,o&|wV˟૧|'xG曏4_]֧yG_Cem _~G|(M_x|O.oֺuuZ# tF2ܷj+^> Za8,g}jDvp} C+;,{bX[f*2묳x dnP>3Gqb-&\yT쯈fvi ud6., pk# hqh+sDC(J\}|aF zl\uRr ekѫT<mubti-/KEF~6pxc1io喣GV:&Z[ZmTbEd#)R ԬK=-ryQG 4&Q2/sN,4ar0 ,+~gm6>زaÆ-<9昃t cŔ`2$ao¡80,H(#E_Zkȏ$+j4Uկ5&h"GCcINftL9ۆB `.>㭖%N?tՕ]vVq'A3#N\.WWD3pe "gC.N~VB'.ZxaJs1*e,*5z1 Q'FQC~feɚh@Kq =Qe:&?jBs o%J(~w k]hWwO8cR3lr2Ѿ+32a5 iFqMHuvbv;D`&C2;0pW{e!034Pϒ?W!H_jR@)W8.B ꪫυsg 4'= {喓&I@`K'|U4})dGFsq4Dx&n͹* u(<  0ONy8 CBmn#krq7 Z'7WWH26sG8m3SGN?݌V+>J[^xᅬ\ ] 0.-Kޜ?fW /DUUg &K7z4Zx!ubt6DSfeɚp@K/#p c[ &([C21Ř1c T;Svm1UDٹ$ KVBME06.et*GÆ|.Q-02Y"l4|ʨ 3@ۦ) gy&qg*ί\-={A( Yj' N2RT&Ka[#h'TZ|g@ 븢0bQGv02LQHʺ'~:On,D\3]:Yݠn#f洿"\Z>Y!jǬgɊt77bpBj)]64+[N!e_tNj?m{ ܲޭ>cuPx F22!Q'FaC~֑%kPF~?RlƶDc838r0&-~^xabjOmV6=-Q_,>줳c!̦"JweljdS؊kA5%!& U!HClCivz[ɬPKs, Rwe1j~BLMqLS)B'ܵFY򗕯-W&KHU&dGlSepԢԜ}sOo&2#;&ԆZa}WƓ1R awPŒ4+* *6bƠ9a45;dڵVZdU&|dquutN|f2&lѲčfe⣏>B0Dbl8reZ1C<3kh=k(Sx睠ubt6iY&(~t&]]V&+Ĥ.Y=`IBjgp=) kNCi5 feꫯN1iBV{8D\¶U%`ud^z}aSl5Q:Gf}WCh{*@MW&Yg VFb2!Q'FaCme]G ߏ!ۤuW?gA1ëo]8I?䓢s+{aS)8ZώT324/ Os@`Ch׉PJ we%+9Sm< 3\4V,̴t#WIfN`)y硙Bi&abN)W&K_`3g CgGv<(,j2(P )@iwHdCäBa)K(T:{E#]V7h365WDK>Yv;,Yf8 \{ m59%{pgr2hY"q ?9젤Cadz9S>5zXxcyߟш:1 ,YR}CI᭾+c6!UdG7 / #7E0)'EdR.O ˓<1r&-.fɎT3";C/d.Е!4՟HqYT@+2,)F *E_zi? oʘ8PCx %GE6 cv."OdYGI'$Lzڃ2" og%͔fXo(K1c},%Ҥ IE8me&+ݠ5ݍS is?_TBW&+OQ$Ia]e+wOjvC.GyG7|OU*^HC4N.ÆH}%kcV,oYW&2 8Gqiw( WXxA|RlCjveOEY)6dBf";COlw]ʇ_|qG&8_PkH4re^|EQ O@[ZJteLwD5Eڛ+Xe+Oo`W O˘>Mّߞ(›9mu1F8;E+ 2v[ =tX20";&6kKz.AXEǨ^_M>Yv;q,3YqGyTw@l/W +Cw}Eb}D;pFD,cJ[­|U**o'hD]ZJ}J_ ߏY޲L:6Se\Cjc[>©)۴k{m=7R]1,Tj/?Mʴr 1ް  oa)A釡7D\V7"o ~*+._Vsˎىɋy B P(D@bqeB P( ~F2;@A P(2W&P]( @?#P\~[A P( +. @A(L?N P(  ŕԭ|[n,t |=8OGwk^>q5Xvd,Mtl;vZ!peb ķ*ǰ2~*+$CCN%·-ANn*lY袋K/C5b{=gFp4IڴzJޮ-?.WFD]TEQ/܈L@tb}d֕{XmKll)_hӕc}^lň( 1?oX`]w_gtvJK.$Ӊq>@&PV6lC/'H` No~ 7p9o(/TR /C_||뭷VW\W-gqEYdo Gr #)`+Pg}F>V_@@\_JŶv[.:(.m1geYgEyP<ԯt)W [%C誼CCwA^+hږ[n9zFӨc%ZgM!( X_"I)~vӀ岒hd*ѹ]u4Đ ;)U+F4üA=0v衇Z2ă]tEY +wy|3J*PJ _g/qeN} IY[,!& UwȷK.x`{ 'pWM6d(bD3tY,K~Ik֡e#ʡ :VR?(l[nLNl#Z9 "5bCܮbX"bS~'6f|**\ÇO99<p>L,ћjpw'd`|h./ =oD @H;[n6r^M@qIE)b 7`kfZ)RCy23&,wX8!sJTp@5ҽTRPd)ԲNuhĤQR*BNf;UYY0l6^ ].fa`q~;z/B:"Y* 4B'q8N.2>m|ޙ=tK@0+\F-$gZ!r#ҕL(ʿ⋢@O4)'5WF gC4EPgx+inc׷. -rU 4jDBL| [Ȩ&pY]U3FyGTѥ(!M֕GO!긞*/kdKg}Fu$E=1oS{٩+S6~X yNrS,wI38|KeZ]_L .̋x#se]w]RrP;&`pLd+#銜烷6.G:`W旿#exۧLrk6sBoW/wr<#s #W*O4-)eNXz 1V).lNX-/OS̯HH~PFx2"`1$R&Q|[ɒ< imr"լ0r$gDCLM3R SȲHo+ߌn{9X [Uo6pv[}:J ՗55ɚ 5/!1 ̱_,Riyire6[_2ecfaN3LiMp߮ >( 3WF*ueؙR[3DV2ZI$L<#0ihh%nGziBŮ I ۘVD&VYִ9aU-e) 80[ vI489'x=#V#i"/BEl?O+CF<-."d^Rp:~k_SreX&~;5Se:7;Eys6Yco]yg+ѴϾTFͬBlۘ8Դٓ1B2Yjb+d[je|oWk,̱_,Riyireʰ]ͣF+S.,h&fh28ě*}2yG .|Mte]VPʰT 1A5Ł{u2~ŔMھ#z>$iie٣mZR)fBBJj* OQr&f>X_TcOc=ƋNb:Os8G84m=m3 c{O9`a 1[o5Ly9)yIdoqgf,Rg l;[ϨFfVi}ijMY[-2iYiWaLbvB~;sa喊JN+CdL]1[PhY(R/ӬwT wO1Tە-MCbF :h"Vo^ӂs_zN:I9ށŌ_D[fmsq;-}Qip3vs;֮Lr2xly%6J,z'#3 > ͮBRIRW_kj^i^:2Bc÷5Z]g2,SÍ)g><;S2sh: @ z ԕ)3#2^4\5ғҟ¼g"jIb˘O۾]M:So  m"2(78+}ٹmse9rBb΢r~*hڕABlW߼f߅%88X0YvtHW&[-/1RI *x2?^d[f&VH: PdnF8MTKTjG@nwuW *ʢ4P7%O]:te\ƿMe;E*9+)kZQ/ zh:ulvMaUyg+ѴO8rZ~zC=BWS!Mbv;-Db؉O'7@'NPkaRFm6IM#22z[iL)Sv]H "TʹȕёLHR5wbxDA|͕eà_ M3nRy+d*=c:g )@ƿ۱κlx}/SG62 b+ZTNUҴ Sج@'|4,3|گtN|kLmɼxe4̕ѣraQLIPg,I5-f@Wf>̕pH]1r @`"Whs8k[)?ιGv 5pe&hX@ 0!` _Ν*i">?UL}W9Ɉ$ބ޷Bt5 @`zFs' 2=0u]nd@ c@2cp@ 1D \17X@ X#X#@ @` Wf ց@ @ 0+3@ @ Cwer"ԕ;bE|0=|u*I0!@ F`@W5\Catrv uo|Cq$P&LsatwSA`L\"7 &*!H @ 0& pʹ<\N2%L^O0u2:Nҧ5 @ @`2"0+si3%PI|9DW&d+T0seV,@  }2Gq2o'(9;zG"kyI'׿VZ~UxUW}ի^7⠵0h8s9t' ;2%LVYeX}V^ypa>:rws5S)sa Қ&gy.6؊OWoSfw.2(YNSg)DH63*Ǧ+O3#5!+C`x䩰㎓<\p*s+#7@`j!з+zwn6/~!5~)Ub2%LΒM+, _Wug}6e]SN9E}+_`_|11o{۸mXWރz2;#Oٞbz|^曓SNy6tS3J@IDAT䒇ʈ +!0Hv[Y7MXW?O/r1 @ 2ZrZl,7/yK9|3mݦmݖ0z+~:r̦H6Ҥ2,Crz2:쪱iSNyւr-g5+3Hwu/e?p2@ TD`̢.J?ǦT mP.mgr;F'|2Oٺ?_-d+*k;"]-EA2Zob%w>+K4u}@"cl1[$`"!E] +H 2c!#@ LEFh,+~/!t|39zknoēoj?C`̛f/.`Jte$*oi);~?|րXq#ܩH+}?#{Sgq̕^$Xd_"E y@ S2;y cuxFmdA>0OM"asוaa~Ue/SLOW=L=N~m" P@0+sD`x4Jς`} \jܙ񜐸p "6W//4Ld /K]L8 2y?ILj@ qeڤdn`˭6ʞC&ɳ>R}3{_&zw^Eꪫؓ=%R&ا|=۔2oy)]$<-)I@ (]~S.v2谇6@ t0"aRo| r @ ]P{y 7|=;I300@ ݕO#@ @ 9ʌ`@ @2u@ #G \C @ @`Wf@ @`+3rHa @ ʌ֑S @ peFi0 @ C \:r @ #! @ @ 0~+3~XGN@ @ 0r•90@ pe)@ F@2#4@ !a9@ Wf@ @ ?•?JNO?o?S%Qe:mh1]?BV&9$bӕ#4&]6hkUV׿>n7򘗽e?䜧 {(^RUW]{;F_S6Y2 am Ydu>t!,ߩ%s]%9/6K;Fx%y[=U6͗p{vOѻ2_WyK_Rk!ɘEU嵯}-xnmy*6Y2 amX'jO"{YSKN*+u{mvh+K)\{&I#Gl/L6#}2ª-7_iWt_r%^z=O83O}_6^z馛nW=kIdaעo|%,[m & O, K'-nNw[\Osp "~.ɓҿ}YYh^9_QW1T̕W^I ))HH`7&2ĥy晕"O8:2ɐO=u묳2aևgpS~{5L j `|)>`Ή[zK.ΣOH̕ĿLc2_Zj)nz!hʒ@j=|Ѕ)g)d֊$9U;Srg} gf1x!kQGEdVU4C91+C 2\qsM6MczG$IHZ&fPezfiQ"+[WYl@xRGbMz2=Us=Tw`f?)ZEp٢:iQre(S|3'0d 9Txyڥ: cfJNcXY6*[~dnF2nY)[B,p$/25KgLSnU60B8O1te,}Sn-c8=N.6{gq bWCxR~cT ӡ9kUdVHI!zpQ%+9b3?}1uWHjuFy7-rrXv]w:E~b%whԯ4&nЇD{ښ\҈6xZiU")I&4$U+69MO ,R-̡'}Yuu|>xٱ=c -Uʰ.)1Ҳ+_~ ͠Pg(8nۉUS"wZ~dFL2x7\4fT LLSIրJgʫ 25Kgrg@_:-Č fxGvYP܄OT{]İUĪELв|(8Txu-o SNSjC"'C̶JO>dD%yUqɗ4"9c$E4-o[)wh .lL摔 =;1ÖM!gW7ȺrSgjQƹ"봮.+G+` ateZ3ˁg;),.v sV3δ8ՉUOƕ)_~AQcHMl^(9PqL.]uZ~dFLr#ifyT$-rk@LrD3V}U25KgLSnR6K>B̘O۩5]l&"߄ϯFcl"[ڦJZMҨi ]l`%ǫXnAav:PܲX!{p_>&[dW/Tx[êNZM˘=()a]Ė\=3"WIl@N?R4[&J39d$xveTx3ǼF|\<@s&гX|JcH`Sr iKo4&S@çry'qAu<:Oiz=4DG\\>{jBUQmq̢s}UZWA/f+ˈQj)q3L|d >MTZT=V08Ta21xzJcn2'eHj;Slaj2AiIڞI"rR#iQZ>!ΎM3ZS.|<#ɄEӢ&!X +S՘SnfnͲdiͶǡe4[fyw„ |}E[NO')5I @ HW&E#@ @ 0WfX@ )ʤhD8@ &L q@ @ E \@ $C \IV`!n @ LDWEp*SL!02&~SǨ9;D} Tb0#U LLDW&;cC#9`zr`ɛ ?;,by,D|@hh75XMb;<;w Moi/nAHWf$0DG頥>'b&É )WqJ;dԨy^3U}W;1Q9Ȣ$ME @ FDteh[9w QA3F|&+SeVك%l-'˓諞dMF,r0|INk t>6lSfdSTX#0+nJ+-"kNO>;20CN %')8WK_=K.V[m >Bpa93bE]t饗&wG/s>λ+~\sM4 e{{K{nvȒ붐KSuʰ_a7_b%P?[0jGW_|K9կ~5OYJg"-M7d{|[Rž ]βF~KR22,,sJm?ӄ{jdWS[o\puֹꪫҴzaJNAגMNTӔ}i1\8[ʂ=ꨣt[X5@ L u]:}{{>"B ="w6?d34 7 l~ᢟc9LOL8*mv g-(NPZkA׼/xF}}{s*6wqqc7%RSrz2//2e=@ɶ JA27`4-@ŪHYfGVrȲ.`㕎+R~h,Qz)8V Ӳ]}@ ĕaH8_RK-ꡇ_gqw{f!*R49묳EPe]#4iW?YqKغH-oR@?lqC)-%,NԀc5:steȂ. #!EЩyG eIkx㍋-L_If7#\{L;S.F65ir;a̱ҕaV w[wv'2%q+ 7\="d^Զ Pd L_ʴ%RmRtSOU͈45 (e$'\/R:xYa`ZdbSgyf8s:9 9Gx fMWe)@ 0= з+6 5ll. =eOO8Ej E} 3]_f˓@% &{_]w]<gjdSJ^i,\αҕali$Yo@/ UB`&+q+,p B1M)Д׸2me=pea+GK &veV_}u煴1F^8UxXb _&/~ƟEֵF1,9;$6vլΫ/-X@`FoWc#!gаaVM'Q ܪgi/2h@ڕpltNjľTNՌp Lp$ x[q)es-|x]Xv ݲ&A}Q^4%<̣3iN^qO>Ʀ>ZI2TQ5|lK#Okdk6bR [В'segB @n U;PRQ1슐>!1)k\D2װ-Y V5ջ2Ӕ0)׋T6i\p_o٬,SN9Ewqio];K.$~EGO;sc_WR&MfmXl c2,ӟTe43|/x]zx;l֙[Fxz5>'*?YP~QLп]Rrۼؾe/#~W֭~;2/43l5i{1 @e=$3ro{+5y |:QuY8c| O5EYnSnYxxS* Y}so~nk2۳s^`2tB.%/| uKWJo}tguYd7پYW_~yiSiŁ۹,"D8Ks=ӞW_}uy û2׽N^җ:T6=M%Z!#b[SXxj]wT:J^g@|sOt\Je#,l-)M (̕r{ 'B _~y9(k_1iu/]+Mb`P~?O- T֣J23/gv5ؾ\K,T[5򗿜H)g Fߢ4zz Zӕ袋ԬُAԴp[Sٰ *CfRqϵ袋]"YM6x{ºrˑ q0 $rmQ_ `HkV.+Y+tAb  keZ4|p?==Cҧveh`E߀?ͮL=YWg?"ã>rw&9:BL<6r[A1-ʤʫW$~]- tW*w9ix[ߪH*=CJf '@N` biQfQUIZj)hpCu_5]2J,6R@!)c+Q%Ye>q@*vw+aʤBP=಻L]F: IY PwʿzU-ueh$q[(DH<-U֥O2k1'듟jWz|`lHȴTPͫ^4R-؂G84ZrwVu&L3gu6>!c\nyxɎye~&hsejqû2_Ő,F[feɊ=ho~qg@lRL IԬpfʮ<ؕ!m*G?1A/M<"4J'se*90hD?|>L5=[;/xL$R%!]LǢIFx3,*Q%Ye>)6,iWyzT4<@Qv)NuW52uYdž*K@eēv ]Ym7se Ӌ6L6CYo{ݓ ǟP Lͪ}_uUY,m[S?O|C"ZD,e&1X`snP+SX`Ĭ=~veHH ìcB a^A2ap+CioqEh*,GFŷ G1Y+Sb9H2M:,d,X8;d (ʗF2B_W\Jd-aŒmp*&HC-(0+ sk_ve'+ӗG #6ҽoVq55dt\r{XJB`Ez;ҽ^5d+ c!lduR(uivB2Y E1R%&e]L6x7.Ҷ5gqfNBJ8FLjI !4 BLy37veux/eiۚZ'K)^Wz r5Ӵdx5!Cvex/q-"g>gWfW'V{/ ([7!uFm+ە4 -TW[V"‚NL?x&$',^ |M%u2l!O퐰թdeT1'/ IɤMKo=E;kv|r|[+[nI:xފ\iD!/$b`a ܲb֋zTIVi}2ͦ2djTc6@klřս^52p饗 $gVG*1C+@eO1te^j{NX`+ҁST.m$=h5q[0z\mmkj1n`GZˌx#1UnxÖI.O2DvexvioCdve1̺:^O~-!a/|x*vg}{zqɔ^^8# /,q>$h'9ZoJCX2u42JVYF3tFRG3L;[s 8)ebulirV`&&}Wފܝ3 LzOMF~`CWX Ε2ӴD}SgnweR:QҤz1M6E*z+1ҽ^5kta|MV3#ea42H.{:-N&WFe.,S)6D=ܴXϦy <o]ٗҙ$_pCOWx5yGޕQWS* QNv3ڦd+SFR'O%zV|3f7Cpv2MViFp P:+3S U{e~-Y5pV*]z+G O^po:t fJv׻(*Q%YeY·:+㨴L}Qvw*1ҽ^52j2HeY $aϤO}W۲K13dd@0d @c2=m]A  RZmggehkjnUQYg֪ïQ<+gI|y\Ofj]z j cSOJH~ו A_wa+B`Y+bhXgKB0q!ڃY*4Jg$kvmwG;Ћ@RJً6(aV@V*]z+wxvHERML}A= }vGNr]!AUUfuhG#&i^i'J}}QJv*1ҽ^̕A/| BkY, QnjjtSߕq I4.=tK 12'aJMGŤs$.Pp{^c >'x YEoI2Sm2J[d1J/h{GTf ]oVelכ@ |3dyIhW&#myx* (uF#:³l8FJWJ+bñ .hBe*~Fm=dF>2>`"Mw]K]f=!ϴ}"VlL]2,Jc0 XP+5 du,ٿYUSj2^̕b>ʡ6.*d2)/{;Mg.PnX #|p5+MYAxXM k SL<24_BT.=k\ep% enJuٯ+2b,M[SX[yRUOVkĦTxl2=Yg9Pi0t2Wfj3tRJ1'=GY~ջ2"ZD䜄DMb8& @=}+k>r G%k+C|Vj̹3Ӟ' &ڕAtvK¶ktҕUmӬTѐ]۳mN\]^utj*d1fuiI)#WĢK0@9Da0tSA /+b =t %L_E9埰"M]te @ T @` 0 pe&$BM%\H}"0 pe @ @24B@ @ pe,@ @`"!D*%@ D \> @ @ H+3J#d @ >WO<@ &ӝ+ÑI|֖3}׳,jh f(惹\r g*G/5#fxgO\;->]7jFd  vqe gp:.VY$:Æ8QHvéC:t jHؤx\of[dH䠲WΎvmC&W!^xsqꩧZ*uɘrj' 0en&ejnURgW[ v֩4mlcT_jVt"SsX5nA|H/2jp1I+$3r5u`50=qwܑyg<cʤv㓨?zh<@PePYMus$7G'4s98㌳:owm7WbzҦ vsR3-215Ps`=l;3˺8MW-%K33AsL5m+N]Y($P9S1xG2 :vYD;8k+ܶ:m@IDATKM֔E Y p#W/`EcLbx8z9(2;c2M[fzU6df^δ.t>+3}w`}58ʕa%#LӋ#%=#`>=s9'?A46<[o,CFWu\s5p1΁XX(rˑjO~B*: .mF|jhD_`p2kq.@t ӗXb NdCVLaee_yN)[o&<-2't.z*.Hu0f 1,@63ǘ*jnVJe ۴6Aʚ gJ~i1Òtu`+#8xuwO@(Ȝ+or Yܺ&rITpn⨬Siƨd]4Xù_W,YkhE*V)IJ$= i_^L3F4o%-gZS:ose6dDh4$ۘebW\qV]g<C2O5b`IV{'?)F:oN3<_5k E4IeVhh&&Bdo%xvfZYHOpe`8}4`.XUzuY.^կ~>Ѩd'&L%4>66@u ' <-҇?)ÈbfU+&kaFSK'k:]78 k kʮLOm~ b/QMq Bk2l ābM7m2Lc,a&̕4@ZdW?WQX%9Ka28C3 aRSd:vOJcΕXm+:mKOXC(Г3Dߦ+A[v3d"-68yTP:-."3JVpk|IT6dɴ.XB=ose7C]6}تZrѥZq 5+#J7X V=E7 h)^5#-b,C4i. vifE!<_bq".+^CL.tPNJ?蠃 /lse (+3C.ު5oR{_ї̽[(4 Kئ se2M.n13E} ++"{~Ms֫pۊNei;e: ̣\,g9r,' YE%UA&d ,L= "+J2dZSREz^pe2TX`sӾU,A 0΁\^ף>*iѰ,e>aKeMbS{~c9Ʋ9AVCcEx>lRqu,a֞oVri;c2MЅAf1\DS(§³+4YYG3VRs[(:mK, luhlW5M7(m5⋱R&fh|' D(_җY lHmN #!l~+*3 ֥'mLy9S Ul+S@ƒ>Os(@dFi.]EYgXWk6<‘IeSHęOjH<%eB8k:Ӻ8r_b q+S@F"ʐ 5i3s饗 3X)YМxڕ;\Dfo8 SHn ۴>&T}|R˺+Yx ?R>J7 -QfҳS*Ks.-Ggv6 : qSWP&t# \LW;/qS!1MI_vI淒2ʺ`{>+3}4|;.{Ӑa0ݽFShMJjM$ƸI{&`zXҘpjhls09'z6H=D<:Q E\9+5i`4<@VjD2:F 4@g%Ik'v;3;̀_gWAR(̣`]/)%l€9:mhHOY ô 6e^,VT)h6INWFR˗9 eZWsp Y8,Wrוik|+#w<:xp(z0/pB?UVUfZYxϢlsed-6Tvu_*62jO_}@$4 phue0n5~E&nA$s01}2|ڬH6cǩ[lȚδn04QM^:aW&UAaFȐ P =㉴v?؜}gFKxbWGm~5MBXIklx뭷&v;dG?Q@ŭNW&M0L*u4=Y?u*+9W V( ӤS;TVYCMS9,P_+94[$ع &T GRˉ7T@€1no Y}iY,JJ bTwɁJN㮌mWCH?ꨣʐn VJ[^2,Z[+XJH_X̜YF&i]iȚάnBE ʼd/ɕawBpYqqj+#F'4`=]uU4`Bٱ=\Iz|l0 ^1>werpԬ[MܳS2U|[ITsY(Yᖋ\4MM{ZeXBX2|EZEFHyn/JMK8}Dp[֐gW]@ȞEi/Wncחb'+Fl=6k@N M[RbP%#RI1B֘ ^bmo~3L=Bg<EaFiQqz#9XM?} o0M i',x뮛`@ pe&~M<}?h3 @ K•Ktw @ 1ʌ1>@ pe@ c@2c p@ D \D7x@ #@ @`,Wf, ށ@ @ 0LVWg@Kc|4?~ 7p-ⳙ2mkh$59J\p_95It)_pu[`2r*-s 2:WB'_| _0XNt&Nc=Vi}셓Ș_G9 4"xhV1iL#9hܕj2MH;+Zh!1p{{n9E$Fj(D@^(7b ~ad M r"u]Ӭɝn / pJn &70TQ15}RȚ?(6,^q2+uAE/Zq9;찃# |TU|U4meSV 7S5ѶeEhieL(kE)NVvm#xҭORK۵*p&Q[?֕y 'tweĊ:z[RE`饗Vۯ+Ls5Ys=V{P9?r|L9eӡhȐnZ甾/oy[I'$I>`G,OL+O[A L+CuC5IjGq 3`5 KtH&I2b+/t&9i3_^F sfURP{챇2l83S9S/2_LVYoe*m ˊUm5Y!G*-^ؕK\lW3P00PtȤo&:tʜ0 2q w5)Pg0̕} ٕ1+׿~ _&@ )73Я+DZ'@rv:3t뭷S1q~i|u￿҈snZޜ ҲD9nУn39y!`pz+/]qƲvm,Xpi iTYC, eiڔH]vdꉱlc)eWqRk4HN Zg_/ &J5{NG?Ij2T^`*دBɩR!3+1ceV 2O<ͣ&P608eq2J mL)#1lfEM )E`pWge|k_CZjF DMX-W{866HG9B2 (hJΘ%Y>,]wkAꇴw}2tehږYfcz}Yf-2zǷ%"tMӟ٨Ar4rW\5 X FmzGF0*Щ2eoң|#tN ؕq #<&?Tr@׿G}2ٕsR$d5cicrWn;c,LQ¸5)$Ƭ*n36h^ȈKk' +"\NUV8l]Y6Y!zˬve(uYY+C;l=ҕ]7C2wy'DGtaz6W A2)§v^Ű \-*ѱih+<Cv؛ CtfgWF4,F@"޻箄oeIW6HžlAެ*ŮteRoxRExUf5^̾^w1eBIj`WYwڕUHf$&+XobW0seG+s饗~$-O ʰ}h|9 k|!>9+ey^Qb{3s_ҟaQTwU>/oqteȂ:$$)Εٕ~w ɫ͕` 25;56W{' Rza+CF͂+S7*> ]DQ6UdZw ~rgiiob銧Ї>${.TX&*tu$޾veo1}\ʬ*n,MswnG¡%,U |A> BjH^c~c'İ[\Lm~Jv"ceV 2]YĭXc`g 1xY"=+V?5#BC5F© QX^TҀ69]OW^P§+Iʇ/Av+sᇋC˯= YVҕήLnyPqֻunBNmm} 2@n^a4L 4 F꒦yWf-am̪ɴTzYj a~2`L`1*m 8BWZ{,xȬ*n3d[k:+2F*]L)CS c*w*]Y6Y9Jˬmpfx&4[i`7]"=teR$ -O&#ú2̴g0tnG ά0bpi RzQҕ<њڑ@ӕu+S]OW!&[/gm}g[߶:]&'Hcʐ]V5  QL;*И@"fFDY7kF~^/>Ωe1+ ]ݹ瞫|H#z/z+m17cy2S*» 3c24JaY%*[(;dU5 eMו {2T[ ˎLu()ewC`Wf"@Ĵ!ۍ'<ӡ >$+b4OS ˑ:|{M8⳰AHJFr8GN"9Fb2Q@  •&1@ W•^K>@  •&1@ W•^K>@  •&1@ WÕ?y|VK.#œx|Hgyf}(WtR\W_9e}0U2<b'q9G-NI""0Vt0# =m%1z6@$ApbN=C=HR c=6F>i]9%=d98S9-i+.A8:z^￿(I%VXו 㳙^ o+xx^gYpF gJ@`̀qp~T§_B<Ӣ1L" *g`Ny=Yٸfj:Sq&mٔ8r;<2̷v~׻ޥGm=y+)|Mi{=ĜD=m'A*)44\rz0gyf#TDմ>EO#_}k;Ĕi`24׾??ƣSQC= %!Os1qfq+Ձ- MH`s-*L\cތ])s,_ΛuY}gﳄ<*3,A9Sg'teLc(9+׮ i̐!mtfjRr0y睝?yg1+SpȺ40t֎Cd^W w唭5?񊜐QG,ᶦu9vu/yK8U2kZT;N3ONMv嚖\J͕lE{*;~ꪫTv5F2'3a8r%PF%)`[Z%Y7ƙwO1EMe5t|`(WI\N|TҪR0솾Vz _eTrk{W|/L#8" $F8==]=S|zkF{?裏V]{M6ew$EM  d%H.9+Y I2J@PQYAD%IT@ I1yy=fg淳?fn:NW<sho=:2%aUQzatl8>wuhh ]*j=ˬlfW_g?++qOy!#d l*rQO6}%@--5#b-tITvyjoԍ/T$˅B]*njw'Lu ʎ 層hGO82{4;v7P(2,Ás.裏O!Dw:aՌ"PJ*sI]:oSN>ÌS&wsXɤ²ս.iĎ:Ʋm-TLeS%8 Uc9XCS# W\1JLPE,o0 36{ j#ʔ숡PkdOGG32p(˲.I`Kz5d-sΑoBQx9Z!RjVtK/4fIZItDʯ2/Oqq*OKd}[BKJi,PT`1{QiY`2!$wuȄs["}ϛN8oFZF(͞>1|1-mh|sJ &gJ| +[U`jv42 n!Ua5hu Oow̘1<\T; jLa,7_\czLZ+*siIܼԧp(uv[$k@BeX³鈼UmЖA0MوL*#8"{m!/n&!_%7? .d= aQ^mrp|'Kg xe^dqKWUr,_R irvg9&X3RދwQk6 %$wu;hb ay']] HˈRbJ 0{7/SL^!4L3!/˩rVfGK05;z2,h=^o 5+C$u+@TyꞽF S˝ѣY 5~xdzV) j3׵^ J U_W*)#qEet# 롔pt9w!θhKe #+ehu4.c`ӹH<(ğ( |ͧ]Fr/A/ˊr/~8"tTrs,%??2lcbIZy47c|)t8fХ6dpFneVV2'BD ,Us@g !JeGv'MYob*=%L̺q 3IRp.*#@eE=fvK*G}T )PB1*T `"am?-4hhF?`9dI0.oՠoxGTI Sz)8)6f;ZASMi!da,b #/`q;(ZvPu2%kc`OC6bbj0~G*:k[u7K~e3PFgbז Dx VA[jS#2T~)Vcdoʄsk*S!a2I!-RQreʰȕ#g}V\vpE}ݗ5G/S|ڽ'{acTɢM_BHøq<׿\dvt~QwYQWJ鳺Jb@κj&l6P_,-SrPi:0(&i[oHe4~ +/~]~HsQڳLk c-af#YT #r/QXTOԭwB B.d2%VJv}=Rr5 ~f9E92*SgشI?2p)"X;F*ЃhG_#qZŖqpD^tQ[nTCLSd+ TܺB(ǍkL%fwaw}w5;<gUeWX彨]Z{RL L$wuȄs+M= /qaL W1~;>#((ҴxPDQaVUufG 3k1j0x2J!fqD?#%UCXm˩ ½ ~<& FWZiFS`FS*A[j-ty2ޢT,FӮ +ȁk_+ouAZl ݨF@•W^):tn {O+V_Vui ۪,_R NK,uQ„eKpZHi)E[]`s[XI/9C&[mDl;0Djd3gI%D%TdߝaTAeD}2h@&,/:,2Mqʼ72aWS" +g4sz>ecؘ eBEeZw{2U9ݮ筎LJ̊i2SGTz"XZU5T[؝b F-/I^ "Kߍ+MQ)8_L黰;ثa4SndxTRVҋ2H 'S;V:C*YnfBҝuܚ}]`"bi60I2xFT얘Tфt<-n:qVuڭ):< |hm7Egm8g}}ڬc9JB+O؃Ò٠A2A >hJ_V!1Z9ʶ5֟H |#|9#Aeʵ@ @ t@P@ @ 0\m@ @+tW@ B pGh@ ]!T+"p @  Ael{꣈ dL܅ wLA8^￿,<j"EQ(9[*}5H%p OONMeisڜ!`wd5B /B8@:0:,̲ +pdDR;SB,O"O:TίfJ.8==^p E8ާ ];'>:(2t.K|v,@ì&_eIAN´z*p?opt`馛ηhֵƴR rV$9=Q&HGT8[ΐk:Z[%pڻ2,R!@M_B;K쳏+<ݷyȧ_~eJ ","9[a8hFp Mg'{sBv3va WkҘX{쑝-m|A'#26?eñ2*S/ pȜsi6Sҁֲ.+Qtifte.? Tй5DrtYMv_e\>{uֱgq09C @Af0zfb"Ux7p412;#ѹ8t0d'Z9=5ay0aq%_K%).1=I+`On [r!kjI駟XYn˔!J-d%Tr4n6^p{/+Ey),Pc9!J|)\gVs>:KQd0bN9ۼS2#c*XG->#Y Touxl(oTF[o%:!kU{衇OMe7zk#22RrL3>4?^jTJ:0h A_=\(s[[`Vg Ě5̎>*;~a_ W&2T#əL-,M8Yaq8LRF_8 _|q;dIE#Lwqg$=.n`iZ@vf_[\0}aEK/Fe2u֒>}W%jvӈBf-Pq!aG/8[p{QUv+OIN!Ґτ"XS*,\;4EYvT@cWi85 /wnjd5Fz-I1;#!GP4-۝v 7pT z/9=zɥ*Oa*o DUzm2Hr-ڢXpLA?S? T|d$!y睇trh Ǎ* ؕ# " =BTy4jguR(PJWX/N/$IH& 4 hL:cЕ+֭#Q_4f cj29*}]&^fT!O-eA 0=rU9 G;ט**CD[we-pԨQ , g`4wOCTɭ% /7plY>RvcI8dodBK9(C`UWE`W@]%y' Y2O=f)f}裏*L`8:Od}r@&sFʜx#;k#-*A4!Sf iH&lBtX;6.0u*X _- v lŃ%A]ɷb}2Awbf drTR Lx2ͨ ^آ.Ō%{pL_7sgEź{r4ygxZ_c#=sb:1ϼ82rX]US/imwíN]t!YJIyǎ8UwJLJY G_mcNH;Q]:)Tc䈭ןM.W 4E"D[&O=ԶT0x  v`,)vR#D)HVC/X,hEs ֦(I=TC)mlbR/| (%:8ʔȴ ގT(o0䗊+s|+֑%MYX᳚LJa_ W1a_1uuJ8zA'*iKuZY^mԣSEe<@Smqq {#-0ѿ5t-֥rKp_! yY5sz|@ 4BeHW4}$VS%GU2啧@3<-C$`,+0{CߕI3c?Wf[opaƣf$!i |w&L}2*A&Tr)L;T!=V[ ʰKx1sm2%2=9d$V\6fej:.5^f(?cЕ\HeȦ&߬avYM.}]&^T<=Y^ K/4U9m-c'!ӖЃxDStN,pb[RͯJg;Jb Z=`I/&d-g_o.Tc䨊ʔW@t' FKYv !ʟ$ agFf$!id&SZ(yR֭'ٔ0b|+TDWh<SNe6}@}T+s|+6Y wl+|V a_ W*̟K$="0@*46d.XkGkd7$_^1\p/Ӌ'SZя~TU/J m{vC1Iӄ?]o' ]ܫ6n-R_6Mؓ(~^4[Lr-e-a5]BGĺ+1^rTEe+OII; !J|sD*)2T BO"35o%Œd5$ˠEvR,_bIkZЂ.)f z{R*CIьD2(LtIx2ngTDFN ~y(hЕ\Ě5LWcg5ؗ.^ L G )\6o5w?rS{gzSLe4um`tە]M+r"iGn tv`[#;L~=>N[ 8h^Щ('}PᎩ**څ@S!J|Kp/TiUq؅_/HZCH:-HZR/д]TETȴan`\+2.Y3*S(iJ+T|*ό(X"M > wfi>p1*`Uʰ'Q]#t@BK9䨆 1Zx2!J?>!S ь_vtFTg$룳|RFTWYH2U_"hՐ0n#ƾt3Ɍ=ggYKQeTΨLL6 t /e1ZNe ;?Ѫ32w%߁'Ad[Ly/fR@LUss #C Dt: f(UT|H:;6j~#ԙ[y κ 쥗^*5b!V@ʹKq@ ]M7݄$xqR 8MAWA/f7LsqG4P+0 < 0:oT5.٠26J/dp  6n=';V`X}s|͜AW@4 c^)rvMeveAv|['q0& V Aͩ/9OÊ{+-[ƥZi5iv2s5@9u&[|kUjplJB!\iQҁg8NiId("N>P95F<3jlեs8X%,AAETB}6K2%0dqD=Ka!|^81ѩA: PR" zF N7t`p5]|shi^@IKn=9GR,JP-^cI S̴dݖ/Ѽ_,ZI%\ ƱkZk7|xOP ]vYEPU8$\7B+勤 ~$s*6ӱO+):TN9BO[rF**آ:#O?tn4ny΍''Rmi믿>fGTĜ=9\_i :tQy=JܕnSG!]8un07pûW+Չx>C%%q);mٯk|89UW^Yq sLm=y*T$%w[Q+wfVhSƒG2ɺ-_wz|0vg. s!7<Qiy>cTJ䷾ΗT!Ri,JIWvcA܆:I^xj6œ"r9`0 RgV8ʠ誫r38ZȌr袋FwXÒ_h94XrSigqTET`׀z*3vXbAoY|1iY 3f2ˤOzTHȓO>);Y; \s rW.6ir`VJUMCT;mRJ\|;=NqWSzjJjW^0r a~裏=s˙LJFQ_ P,dQ <W\1Χ?ieyq۱O+iyt8 Ǐ/4ǐRO<x^|q_pRavD!uKiB}YN۱UVUc̿MqUr0PCe̵^{uYgMJM~ӲA E]#IJ$뮓X}踩NztGp,w;6LB@6UwUQ;Vl*QƮ2U)fzN%T.ߊUiL֕d?7fԣ'2{[Z a~K.Qc'>"ZzVG*ӱA(MN8]G>09:*=42 )3"XY4ehB; @H2&ߌ9ŴDV[uk*)O˥za,%l@$d9ӊ۪KYnD\n0Jw 2pDs-͉Z c'NkU%r 'H=ܓI<殚\=+j׽ޛm! t*+Ua6OVP見^cWG3=*oŪ4c[&lBCc9Paܟ<@2!Z'~Y` N;US(::\7B{W m> Қӎ}ZaN+g#v0DRݐRIL ѣԢZI%nҐ^F(U vZ.,_2bY+y#q 2ZTEV`6rHB(}e\+iۺJ$Dlm#HܕwW6_Z`k )WBڱRfTi0v}J1sp (rVJ>v`wyj2,''LE% ^{5^q$<]upC„4NT& ^8:\7B O,Z@-3NcVʙH@iXaZj/~Q P&fpȚd뭷 G?I햶;>\Gy$YI/ovulսRg;\6gSO2 sIYSh“3\HKQ߅cA" 5汭D2@N9֧ fj+n\=Qk )W V!\^QK*Ua6OVP見^cyIUS@ ˷bU-}jȗ]vW^yl,0SO=%~zG,-L3ͤ(w5),0s\7BkxTv2U}ZaN+g/| ̎6Ov 2b D2@',%]dNl։f+-Ar! `…RgST|toUtX}^1 J|ҼlW`~WCWUQZ{Dggwex3ԪJ,S^\7BOcWkhb%nKeZʙM-F!Bh3*S_XojXDBo>'j!|\_w$!)WRѭҪ:_/ڊ] edBrma&M8zÒqx2۬)d# >(Vr* /Ї>dY6]Te ŠZX0**',]kr DꈳZX`a6 \-V%oUt.0N>Ei%t*v &? iUV9~_>w@+*Ӷ\7B>}[lA;fhvLWʙ**ӶhTqqC%&{I1jeW_p3P_zr"N~! S*/fU|;A' P?a_d _aj9r@~UI+JYI CtM8j Q+ +@H^XA0[zሜfu RZXAeRf!4`,'6(Q oBZ @ (AeFH,@ @P@ @`D*3pGb@ @ _ϐ@ #@P; @ "Tx@ @ Qz2?f6jꪫ8|"oD^q| cꃓG%94/y^=CU`yԞr9JoXcvq(VTOa-jŭϠͩ '}K0̳:Kd mFzkNǓßS!{VH#MiҳV?0sTa:J$&ӓ[NV[j8*JWu\sŧOO|zp9&L.ɋW0X)'|r!'qp q¨\VS>f9U9<9 ؞:L %9*y9vmS|>X Xgc"hPI)ѐʜP8j-݁TD9vѩ nI7$?Mm %.Q)3=P䶅ZիQǁfI*#O O2,I9\rI4{^c5Zk70K|R Kr4Q.@ܻYgUn~~\,>mPF.8$G8 |yOSC*A\T5H@.?EРfu72T駟dg,@*"#7 z|H 8 ^}C9qƩ/ltp;LDٓ3<,KU|R'UU ^.C'հ$G LAw~52)"{L ˥]UUA9;^{ovA&CSscVh=)E@.).$0S 1AV4xf5`"qZSDc9RM*?xꆮ!1f!ޖKvu*8 )p1Ǥr>&LkSٿ-eQ,L:s뭷*9yqrjs.(;mK^S?P9{{Ӵp{_"]94xWJ[nUC Q*c8z[XviG} ?2)ťr)oU9mPFVM^g֩q?~7BRSwhA\T5H}w)@XIhBeӚ1cBIAP?bi7ިy8z5 8;/`r93h`Fz$Vus42|ci ceQ&rg;|U&C*ħP4{Pdnwn̬#Jjp[Xp.(+U OO|ED@p|oZB9cG!!<tҕ J._~GS֖^ MR͸_ 02O]Rql.-;;3\T Oc35|1~Yҟ&VCr4Q-&qL c)%R`tedQ²2}cefaiSC*6uWVXg)[,9TqDs:Ec%S9!ɾkVhV)lN>XelwYҢ;/08:t 84+h}gu1Y1wCr-({CgEݸ馛ygh֢,VK5|}YgqbEq0~9e]$oLq LA Ʃ@N;,JqȒT\j8ZLVͲ$6@`xc=׿J㮆ϓN:B6t,ύ Xr򢥵RN߮qơꈰ4sj&'ٱyREe:d xBf728tἸԎ}٧cNZ?c$?%p[7)e<5@O?}k_{^s2믿~?T$'@ F'*J_xFϠYS7iV7@o/i0]QMo.il͔G\{G)_0ɄkaRv饗hROR*9zKeRe!Yv`%*[|ӐsZ]} -Rr]tQnW[mTرcgy>ӧ2ƍKa< K]ip@ LvFe y涜LD8Nj/h{5L@an` 7LeTff)iZm݌d袋.!ؖtT)۪T'x.f}vn)2[e JHc̘1KTiANe Ns4ܟ S\Grrc*s9k\H;W_} 0$)!-)OA1-'$lSS[ .N;4H2DdɅ#@`'{3[ZIJe47>o6L}{2ŪKR*#%ӵ;S tF4U U-W IEp,3 -(lYv|\MU9%WXNRԢҍ7x#0@-*1էe)!l]Le2ŸEmS*5jTb@ F~R[`I6<|b!t}z=n?'2a0Tj#SOM3<1i뭷2UTF^u^w_6o+.f;jLJMe^?|aȌnư,Zӭ2Iֈ"<}ydg ,nUN 21dYP|O8ᄏ~8v[ Fiö \;8pTZ # q3 f*f&p@ DTF iNg}3%P,:uia,(PyHcLG]x'$6\ExgEKo*tc.any5T`mUJgT(Uߕ)4zaU;oG]w]vi%VJdRUq%/} 7b_םSN9G\˨jy^mR0S Z`šJLe̊J8@ &/}2W_} PLX/7Ba3*j!?<'L.De0QlFVew$TGf!SmVpHk@և!0o- nx4&UL%G25eXeLi;Zw!چFegHK*VZIE$)j7fN|G%Ԭ{!X9]FĦ2߬r+;w|#W  Q__ԞTR֠ _nj+/'N#:(t ђLedIej.-vq^UjOs:d[e7HEgL`TH8dCva )#tf/7`< JsTF/GXH>6]f"K RIߑ2^e$dZdpaKWʅKG*7 ڞd:;^v0g5\~JH_*c!Є [ߞgW dl&B|~m7ga Ɗ;.agSEHD^@ 2CRF @ 4A L"N @  Ae B@ @ h@P&E@ @  IA@ @ 2MP8@ @ 0$5@ @ Aeq@ @`H*3$j@ @4A-@  TfH "@ &iZ @ !A ̐D@ M*@ C@P!)P#@  T j'@ 2CRF @ 4A L"N @  Ae B@ @ h@P&E@ @  IA@ @ 2MP8@ @ 0$5@ @ Aeq@ @`H*3$j@ @4A-@  TfH "@ &iZ @ !A ̐D@ M*@ C@P!)P#@  T j'@ 2CRF @ 4A L"N @  Ae B@ @ h@P&E@ @  IA@ @ 2MP8@ @ 0$5@ @ Aeq@ @`H*3$j@ @4A-@  TfH "@ &iZ @ !A ̐D@ M*@ C@P!)P#@  T j'@ 2CRF @ 4A L"N @  Ae B@ @ h@P&E@ @  IA@ @ 2MPk^{^|^tuucy󟻊/+6@ hBef7M^y7*:{gq喻袋*ᩧJqx;I_>o~=DIݿz׻Zj8;r-iO?4:/?կ$ܸq٣BX`wݿo.<@ Q*Ӿd[A8T欳z[b v|Cz'jЖ8*"F*3f$q$!?M>ϴj>@ @[ʴLeo?eN夓NeYh!%Z!*2fS8 30_Gg};vl[ Le6tSO~}ED1"{?^j GFl`ё j;@ BTXC)~я~"Z?3OYCsNcy}yzgY'.!vR>Z&LB*Ă_JӅ82-KVQ믿^:\s5o]`?~zh*ndsW3ut2}/n&o}k[XR@ d2W\qc#駟~~t&Zk-oe]zkVCƒ 2ǣ-0K.$>⧝vs3r52a!O<IP+TM{TBS[ۓkͨ߮lbs饗aƓUis?쳩ݽSnGJo5@ T!0 (]x҉ ]xj&a=7)@=oim8 xvKew0@~YQB%T;h[X X2qvՈHHFeb (ĉê\km}OT&E(T>V @ R&!~8mKe0nU?7dTI {6[`b *Y2]dMZ/|Tc&]:N=T ɨ 씓`>igsWԧx4L3'sNeX^J]L @ Z *``hu"lN8ӶTU=ż_7MSx.b`=$ųY|+3;OJ9, Q(?A']-PNE.+B ҩ\|P^DS:W^@ 22ddL!hta_0 F#a@#?yie9j(~uiS[*/}K .QOZcݰx22a]r-k2n@Fegu׵>88F DHecqgjiV6@ h@*VP' ڷwUO[ó|U , `h"U[_X?.htJ_[QJа^70{)ևd]ofΩH&JP wv|ڗ>`>Z1@ dėUfJ8,fkrE@-&8b2@S˰>3UbG=@:9%{+ @ L1 гA1tN9S3E^y{_ba]"I G@ 7,a;,a@0[ZMX"o;!aɾqt1N+@ axR7L EF@ @25ģ@ @ v { ~@ @ P@PpQ @  ;AeB@ @ A L 8(@ 2^B_ @  Tx@ Î@Pa//@ j*SN< @ aG ̰P@ 5'@ #TfK( @ Ԁ@ @`*3%@ @ AejG@ @ 0Je^{{_/!'FAhS#YV 4@9o~&]s=6l?}ˢjV(sM7o^;{7hfG?z+Q{r-V[e!h}hu=餓4@SJ'Mֻ}gV>6~gy& 7nVXy{履~:}*wUJ* IVg=T;3R.O=TwZ~SU392Mn6lI[ixN348#׿^s5viz+s1u]WK/2,%\2 yW+]K­0O-"N;= `O?#Su}:S쀹RK};9uNiF)2B7SN9E7|׿#m9wK6)}n~{%ZZg;9Ǣ'? |#yWSoXc {('NpAB/_W{,J/| ^,,800Û"~K`KO桅wߝT6B$稣&LPp(SESO%п][H*G![ŅZUJ5 ՚JcA 7tCl= )Δ&@qkMÕ@  &Tfy祧.D/V']|A ^Ւy'UVY% : >}/ 8F&0y-4~7[l2?}p1*JBDe`!gR0FtCtVK $Ljhhق .x*&opDL dK)'[n1{8 /K&~Z CX5i3*S[հΪptETGZ @ @TL}y Aevemo{>cƌ! Ds=+neGsRJW a`!L wqg.,zزx$2aJIvMBG.b;ncJVP80Ul]`R`[nGm&nJeza)u lwCdBx;ptH!zȿ5G !<b-#a2 HoA(ŐRG}E%dֱۚjIM#DS9*~*Skt~{҅G+EQ6ք'"5yG5a`t'Wx衇閐ܲ-,J 0L94HH2/" xO[|(2ZQ {Rc c*ptJ_ֆXJ}2wЎ^GŊ&,)#\rISú HjT16tS% g[uCJBzoFe %){c+*ZkZIjM+1)Rܲj,j8P5v0$:(ⶶi* 5NE]^ͮTe]𞧸LҘʤݴ޶P !n!(Kt>Gi?p,ȨL*8<^Ce FP+3D o AԘGyph;3G%%Me`Hy*9;)a_|^VaQaPT0Eh5Yk§ !A3RW]uuQ-XQZJQE#1Y7iAZT=ݨ"u` n.Aii*m~3!5Ae=(SqIc9#4p~7i*#Q%]n;0nd:,jrH݋/X~`XQ8@ A5;`I0&z[fX;#o$!B /0_ž[ nvyj.5?+ebBfmnL^bʑ?UT^,[z[*ӱRkMsT-4YIje}jRVMˁ:C>Ԇ<). On# {DTIMFاHIZ}Mo|k_yQ2Gθ  ^B`VO0žL,}/8SC" ؀2KߙAThe9#OTXH+QaM**×xtJ(Ǣ&}cE%JkM+ZL tJf5T)#4'R~_My;%1K]!20oTeڦJjVx@ 08PS_:}u Y@ -#lͦN?<2) On/}KNW%TNeX!"" %U̚`R"lwL,}9 vhi˺S"vR4M(Iۺet_G(#l-{^2ims0OT&S[&*G=ͥK [|mexDM$ԖִUK-94ʠ>)|ӟ,=:!2bɱO!6.G #@C*r+gg瑍9=>=yzd*SJi=bBsucuC,gM-l(1fiBD:K4dn;wc QZ.?MwEeltAg?Y[WD*XG*c4bMeVT!,k2e2_x0IiFe𩩨ڛ3O}e ,iX$ƥXoې򬪨5QjZpjRڈԎ!{t4t#z JeZ%dTm,k,31n>duq֘y|,|T-Nʌ`@ j*)LF͈7Ϋ$v)l!vkjFc¼=y45cy@`L6*D.r,`Ȃ6(ڊ{/c|}+v $GZSy 0٨@@ @P)B@ @ 2Q @ @` F \xz @ :@ S0Ae @ @ Lԁ@ @ *3^@ Ae@ @P)B@ @ *u @ `L@ @P@ @ 0#Tf .P=@ D@ )2Sp@ @ 0SW_}_{)QT[e-m9_zߍp5 J5ƣ@n{n$=u>o1hBes753.r]t?+e]-V[mS죨"M7oV #unWTy衇Mh@{Tik]8^=*3:v#Yh3ێGku1]=Qz7sĉcƌY`>mvwmѥ^zw|3vmynm馬RM0dc={9aƏKW\q~>go|+ϾK#5O[E bKί򊥑YT=somfEA9Z(u\syg5jDq| r7vXk"7x?y{nWqS#aA1.L.dރA d@L(̀9F xL`lbzg{?Ν={fZYf5pI_reiMXgu>/b V2Poj %񛍠رc"m&Ox's5jwehTs\VB3V+l ?`緶~g@PUdVXaZDWy뭷&~L:U9/|gtV%4pURƏoU,1n8U]SK-_ITweB9SrRmS!? /y. q;?|ӓȕL t9뭷?E. ?x&"#O9mDh:s=wǪ<wS y令*ZRDugDƦ|>|D1c% JAT5)8isׇ(/R9 L 1{P4! E o֪dLHe]ZQ2ܴ)>QyeeGeYwawd5BeG >3aEjku׵|څil [֢wy']w QJx[d|22|'{o"1R2&ZJ!1iKf"EfL(σTƈΒ泰_(wP:U.@%v53iذ5RO%ӱ*u (>[`֌FȊfnT>Ƥ%|n W~uͥ}Qw8BW?ݑ+C?v/.uQJ\p;?FÜ"„F Y[TL+yYU䗵!،R 7ܠLvFόߴ-2rڀ:[E6ȶ‰n>@_N;}{ H#fh<[bĉ,mdFL De[U\h"JLϘC>dvʄB,ayWڪ~uE}GN%K~E"{ nl~R>Y}J.reBe0/3kەEm3Y>]P(qDQh2Lu'.AjB#"@l HVt)TbX,)UF :f$lVN 7*O],ayr]GW}Q[5կNsI#(vo2foJ_tE0{)ӡHf' aIsR>BY៟7&EisLm] g +N U Ud!8 3:` "bOQJv,P\&M' -lR*+;6AU&RL"m9Q ] )oKNVb MG~>ݨ9 AVESB"|Y5^mA)¡e;(? Y.zD! YR@"ZAAIVNqɺ9vdHJ4h!5#Qe peQ~Jd í¨W9z\wZ ᫫i' LBCTTd3K"5]H ;ifHfj!).W.tm]SĪImE*~A*$0L+X8N"uk`*&2lHRIdg? NaXRC)&.f}' (ّfla$i:+5Uє/ ddqnK.Ag5Gdzd%JTjL`˞zA+|(RxV%FCIJf$lVN 7-P,aap˂U~#;ZO##oW O<نMF)[8YP$+c[kChk"$uK5<:*Ň_|ʴꂴi·(ė($R9Q9(43趌$̩j|(*Zf$2 "+eiyD3mTn*~#;"uGV]#2YVK|uwe]Gv^e_ݥ^x!jȿ撵$=o,sOJ tӔl[m@] qW^S"&2`N D9feQ@tGy:֌DWc.kLi~nV* D|E5A i7m_j L: y1%(LZFh[ktHewA+Viʭ?0k*LMNsN:;d孬VjٷLVKF|U}io1;C-%Oʳ&o<)@թ8nWu1lh ~:ׄLfy&;>(0ԯOY/ŕ/qZ {|I…~&^+⓸AL0ѠLsg;>E 0ԯOY/ŕ/q1N˛guVV ~)>'̶ޙV,f1fmMh4(orm:z330ovvqe||݂@A P(4ŕS+ @AG2>>nA P(  ) @A #P\r P( @qet @A P7W7~_::g=gph.-v@oϤ > èJ//\>9VSx뭷72Hw;KWI# PPJǕ9Cu1> ÀJg]wݕV8pjp3y6Eiyv)iFמ~WG4|U[ni{ij<@p Lŧu>9ͩY:u pXmq*GvgUEZŹ'x"_CYe+8:1OJsnf7LN5aҜUݴmUvT*{wU>p~?2k'@h;39?n8{ML7꾨:҅bs;@^2ӦMc~uT:B*M__W2e:83U`kE-_oTC?vP@GNGu{#z>q"i[4.IM*]}ʤwWE@zld Tiz@D]lF 9f\5\" ML76d뮻4nU1c_y]C-UYgZ?CybҤI4džDM@z@8to1rHe;OFE%рreVXa{gN:$'|=z4l.i7ed tJeﮊf tMȐ[}?{'wq<slf3 _0B_EStɩ g]r%7h#cH', Et̅Zh]'x0VH6w.b3e'i"}we&iL_sE>)viaTXb vX4|3D?|^xJGyo& jR[[ "J56l=PKUѐ$ݎ+ /RA⋇H/R/av=aJZ,N˧]\..[-0w~AÐx>$iBu(.|̛-ߡ: T+o5l{PrteS}}-ij)QeY2X0?FRsd:Z`GeuJɣ f T'j"$8*o9[[?kSPXs5I+ʃ/iTa{ʑ+C&& D!hD10p\l1.G.zC rJRh~% /@#fOA%f4pʬOЂ]a!ņ-+d𫈈w#0CE"M(&[\òզ+C" _̸.JIͧI{S$)LyuU[DLL@ tPCT9f/A?Yg^5#™Hl!5("YwkU{bg @}>4P(ew.lMWcnE{AvPx6 aee?|6JB)v+R?0TL$ g.}~l(sqaaen."xaHM%gkQ&׶vBZႈ=Z\ihZdz\zQi`%q뼱uS [ WDt$;=SєY#+WW %aiIi̺2.8 ,f_c=Fblbw 7 p>Ժ\B#ƌ|Z1K3 XlY*re@ofpOI~@+ 9 e ڙ0ù0˧vYyS;+c+P]üavŧX+- )O~}=|}Y|e(+abWث:2p}+,q]w]m*ɉ+ߊU3A81: W` l1.tBZvmf ̩#!*aHhԪ[aQKK"k~nQ3CIocvgD; n\>B2U LǫUVL ByR f=ґ+C`* P ҕ6 }n_ @1,@1oR|¦ ʘ+Y\RE})/+J((ݗŧK lRdq49l4oA y|Jf9)reXen_¤CE4m1d e2tBZONMG*2 1h c1bʌZԲv jÕqp9HvrzecWGý`GcwFb &)d̬+C։zqFs N8.Kv9DhPؔC/\e|hئ(? P5]{Ce21̯)W2~s>lXzGқ;\Ih7E)[diVݐof6M]=|C?Q.삒@_}Yx.JEl)ed̺2銅^b@Y~.&kY0m,0Qː5;+2ۦ2l BM{o<̐j>h7pw460P2._gZa뜚V8.YoBW=k*ca糗_~Yt( 1&IA 6Lj"I ŊasbAJWoG޿/2R>6qrù1m.Q7E)[saZ)2kQgSv_:,Q&I+krب2al?R?Ob[IXPj_BCoSWzY-l`)O%e6)qedkT 'ETЕ{@IDATs.E B/Hie]C/ΐjmPҬ.YK]P$3 i2<X9=ّ]Vҹw(M)p,;ԕIeFJ]g7%[ FH"2$IL`FC)52RsqLbtepyPG4k^#Axm*歾YN->]ET"W@>Z 7loG޿K+~*A`- `h.L;Ǽ)Juw",Ө8<>ISWFA?E)M/ YB5ixMW$aޢ Tȕ |8O1)+@ }[EJXXݩ+6>r^un!+]cwl6xL;L4a8~;2/L vd߭ SW&g*a8\ <1 @c "LީSFT& {W`6_O?LX}Qڵbu;lJSL| b~Ǜ8Yy}>i Q7B  *P/~~gGMdw$ N,?ÏS+Sgxn0A{eЉ,LijކRvygan<j,di"jNfQpsRٳYugm26(E@A`!X)'1 "g=Vo@ v ;y0zŕh=R)!s>Ht`Q ?}a~ޥ @qem_ۘ+ |+3pX( @K+r P( @qe~ @A Ph@qeZBSn @A 0(aA P( -(LKhʍ@A P(>2~)_䬀?|{MI>aY{5Z W}&cuN՛B/{X Ҥw9VOw`DsfIzci&m2^{-s!$?^U;CuX??A‘ a78jşAmy[~i]$^If8,3٨i;#]0뮻r,' pw٫@2'i@}q=XqRK h%V[OIESis9T+GtHUBa)Uӭ;ފlzpԢ|&<5s%Xn'QuNnSIє7m%]ؐעP{[o;{'o8Twǎk˕sG}4wk.rFAs ş.ryGGͼ3ȁ}k,̶n{g Rk,Ǵ瞺ηne]vW'|Ҫ أyjp!;9~:pHO$kDɓ'if7d%\r6뮻DJtU8묳ʑG7j%IT038Gj䦛n׿袋ч~8O"[)f%!8b鬛lE 4>P;\veͳ{ᤣPk%D߉'q[nQF!QT {g9ͣ|p €{wnm×M O>$2\NINFOSN9o|mݶV[ ֈlXU,Req">yhPL2n`-x Glȑ#/S+[4$QlNxofN; aכn)'<_ɘ!QiRR'|2aG{}]V|*iFѣڟ1o)ݪ:w#:O}HuɁVo9I9<,Co!=mQL_VG~`fmpIVl+$ L;W_mI$!&f,nK-SRӹs=ܤegE;sr9O ->M" Lj/$b [bT%eԩ{G]w=s#1)Ld1cըeTDU_9L믿>F$ lSCޡqkK/UPqgp@+Q,PZj؊|JZqh(reN<.|glwEYVlݱHC2N,q@,#٭=\eU,Zk1 ?ҤDB"˛o">Kv( ʉ% ξi9C 44j1cD27528h~02j+kw5פ :`9<ю+gm ? ~G%-“l&VCLM0by%q>҈{َ+=c P )&82%\KD ,1P5řa{8I@\H@LmӢLr4J!EQ9D TN9 Q夁1[Y_ uiKN47~O@e|W"ijHfwx6+A pbN!8E61 rSܢ Pfwέy3E7l>8\{Cd,"dQV2 +G"rU+3t>; Qd=$te(*<OLD49QYj%^y1ʯ4r-`PUVǨE`ԄY+gđTҤDBTAu,Xniʴb#)y[%B,UlO#Hy=7 C8 m'M _Pid.P\'&bf`^H>eścz 2jab bhYWHy5TҌR~BI-adžnX*F OƌMdg!bl͠:%.6xcN7?kHiF\wu-Gpȩ]\g+@!xgLFZrʄs+QKDX2a:@ jX5 G,U"l2>8\")#nGʴB&te(0pt>;m4KhJ/R2-0:˦mE@ Mҕ)6"(M Ǥ VA8G)?*cMQF{Q ̩#D`E ʄ&% 5-`Q DL%Kj+%]i~1't={gqJd)QpYo:f ' }G,7MniA8IE Ʈ ]®:H<M tb)ue{E'?Iّ]". i S EֶTUp -je a<XFEB8<:`;C/5~M 4ԁ.ue04P^h $0,? ^#وgʹE s 8P8?$Ra:@PwʄRˊueNdk7L2س:\fVyj2+|X>,e)ԕK AKDNz"E#ZD` "k7M]Zm9lsep,xL@Z&%JK`UDJTZndb5pD_?eHDճ8uIV44jZ 15YE[ =ar֙ʩЪDcW8€I!n#^R8)dU evi'H8;AkW!8Դ;Cj(re}5?4ϊFSq-q:Le.klÛdoq']g ڕbʕ 1XI&p?HǟKX u|Q7lb>8+wm ת=WwwDFcʕ8::d1+hhZ|DPc)c(/yeڕA"|r͕ MJ$!sD`mLƀK]t`@W_e3d%Y#"Y=iiԴXu6sLtҌLR9gm1ȉƮ {#i\JU5Q 3.n"6.re^l&+DϤlRIc=(ϟN4CMvuL3„a#4!NHe%cu1te@7  =3ŭpeQcD`jTaA >v !JWH(`" R?]Hqͤ4aiLaҦ|Fճ8GzCj7٪e: L^_bʳ0X+>lRt8yk4b7!nǕW`X\72w93ueXqj5e S)@IR&@VZv']U.([ O+R\bQm1xn w$2C(>LA79lOpKr1 6k*3.{%̐IQuU,?=mc+!e*re,Ь rꩧ³s"δ}GL+Si1Ѧ+Ǩ /ҵ3  f q9 ˄i7ScZbX8J\hM+30z."%J+5Ie÷\BRm4JE.hf iEj1&yDHYRauÜӾ8l'4SVܢm_eēnS ev%3XG}O(91i9uZ5t$x7ʴq4[H*8 [6$$VnS}=q esv8']fe>+t0`@iۢ[]7/we:lT/;l#ʭ~gOgsk>aeS  7 JS ]x3EHЕlo^_=Vo*+S٭%s@H})dv6\Uv>Ǚfm<7#_16@e n0f][g@2D EDaW)_eNޮV _`-Vv71r_DoqP7Ξ9^Ö,֠,̠dA P( W[( @2 @A P(T#P\j\JnA P(  n*L @A P@qeq)@A P( +)|0Ĕ:ktp$w:'9`/hv.iQ(hGŷU} d~W!Dw:#z)g?|{D]MpB'Dp(pي+O-q0Bo[8>[NԪ'>rpnP33͟PD3O5J8twW8D"=wqv ] ~衇rR=tlUwMs&,U_jC$Ev#j^tNK][O pgl["s9*DvaJOal~fj GoJs"Y||jܭnNW d餻 xx.wN.{^4z,O;j(N r8<̴iӨ+vW&ɱꪫfmTֆ8p|IkCik-\s=utuZk:M#^Hxx{Ie uYsGROTmp5wPWa";xG!rM7qN!.ꫯ~ᇣ֖dM\rIN@6u33v5XCv ͙Mis8_c2px44T(hF˔mVtA";>leK/Tue8*n$""ݠb}fĉEhflA8~wO>] Ip:їKP/V[ _4h;~EǍYƲz|;TѫTNЈ:14+KEG_shU &(1Y>QPxx+TmE{YB{9p Hd]9眓 37n1ty\$n)8z3f #ޱ| `W6 y)Ć*SW( CRcHGʿ/5au+SSP!L2\h3 kQB>>ixp:8Muf2på-3fe@ؕ) }ѲC!imvbI\UU:zOCA=Tш:1 ")wdMP8~Ɉ{,Ak{x6:)C7ʖ8LL©)?яw ASuIKdK,Td_ cC^LW^yr4lx]~ *e)¶J* SWF>QŶ2}_NA\b"٨+W88jK^Ej( "=`Yv{ ,3YqfEmY (%[a1teXG@^QèLl/ڲKP+{n" M}ݚ8te$,YR}CI뮌 /bWbqۓ"2)gESa-V&æR~qğ f69>wePM%i~ӟ"T,/i^'B),[ߕB -DH̀ba2/d LB8%/24S=@(m7$Q >di Lbv( E & y q0iPGA_5 ^+H ZlČjRsONz< x8Nw:CgM^c撽PYRe]_,qGx /9젤Cadz{Pc5zXx3yߟш:1 ,YR}CI᭾+c6!UdG7%>TAFn4&ۋaRXiOȤ]>,Oķr*[U&;R̊ CWD7/4G*ˢ_eQg,\6rexRdeGCU-5]=jA;X}M|}p#˶7;Yc5t%)SE4> HdCYI@3% AFbDe4iB9dNmdzgɊt7h(jMwc.B}ϗ+UЕɊw=y`Wӧ]|ƐC]ve&5zR˰!~feɚh@9:<[֕If +{\J6p *߆)ې=z(~*ʚOɴ ;*5zb}V>ĸ½8080בaF++1xzU+c$M-оD\4Ă(]yz v)u3/;Wx3z"(ppqh=rexz:,P /6kK^lQ]u&1Q"|v>YfM0@&ۻ]\2 @)?A۳9z(m K}WxhubtiM()e|Y&(P~?RGgy˺2L!re|SSGAó}S)Ri8z_T,?cXL_dY}hǕi!,,oN:o؅F <ЀݰԔS,e>h69Ueԅwh:ˎt(` )& hd]ƫ<|G[cY wTndxU)3~Oz2f8>)yiR|uDsĄ͘d8˕ 4Cd^lG;hdG>udiγRGޢ.MpO[A"?C«0?,نm t\>@d>mkRm%S6*mle3 z5߹evĪ / Lh]2MPW@ 72zoUh᳤Qf//3 3mYuvė>^I}Z@kT&+ DЛE\V79F/ UxW~Yf ;f' o/wO> -lWWWh"@A&;fW* @A PWf N P(  ŕTn @A 0(@[A P( +. @A` #P\;@A P(2W&Pns2k"X"8=~?|t%V$҃bH9=@4Xx>jHS+뮻rBg!UracU,)$PK_[@Nn*lYk9>Hbuy}衇z݈ZTӶ"IVY]WUŚ b/8܊o| :kU~~ve dJ)t]P+e&TSIU_U ][,CXu]%{]te.[03u A2=/M0pXSM^"4,x!-|Vw,tf}΁reDZ)5IX4JڨzJXE-m̺2n[ld dN)t]*] ;2$_p)ۍ0QJϚ"C<PER]Í/R@e%шUsh!&-6%wbSj!Y0WhüA=0v'[2ă1b;+6`;#DйE|Wf2yqĺaʟwy7|vh2,eYaf_ZWK:eN^wu0 bGXnaĠ&KK*jѭ_߬rEJjJW']5\"/>*ðuLMHo6b j}F^z>3[K-K/ٞHHRf)0I{G]ws9oF$٦vwjewgY7OZ#ϰ/c$Q}d ܷHp@!fۺTpcr2dʩdX9DvC;)5S xVʬ s=FQ-0<}t4R$8H.@#p*)t~lǕ@Dp_o8 Zp*&ĽD9眓Mykxr ҕx V\_k]"Q+BV) K0zꩴHC]Mgzh̘1+!b H?N |mpy?$4jPƭ%4h(„ }+?S̫9 .R;EsMrK6ݴCV+YoH4ς_5Gy$,9{Mno%Rl*r8^*)(egajY'V: 4bҨUjOvn} @WF؈Z*,A6B䆮YC308X7cƌtEThN%N/_.2~!m̞m% D.#S i3L"YP&Zj_yQ '+#ׄ[lPy\ʳ!Z(K/M<r̕inc׷. -rU 4jDBL|QMK+fdyyeڴi*R&J#g!긞*/kdKg}Fu$E=[dhܩLh;QJ7ve`O>! q[\7Dl9=SQ;Vc2k2BȪ|b0WW_L).u)A ZvmV6HH.[DU 5iRM Dž:!.l~OaY^dI~y dTNEǪ@J V=K-Ѵ: X]%oo8FEhTRhT:M7nkHHX2}|>bɌ Uuvl#c:\}}+꧵USh@5ҽTL2l茈FLv:bj@"bSt: j!>qf@ !m#kwy'++3 sfJ#Kªa:*8w~!on*Eg$2KЕagz3 xYӕJQD P c4-a7Fy _ v +$mDGD7pȨ'Eo5tuQGfy+dXiΠ,/x3"/ IbN9!nPNzs7@DA!I&'q)Kk{wJʹ\(P ]lq#a0t]HȈ (G K3ORW&Pi'))PK}|:u4$m)Ah:[8w W& e2~gYF1O.q ND_^\6velu-5-z+chj2,URhϚTF+lZr!V%L+cufѣ6J:Zp(1Y4Z}US T(cMwƞ7|DH:.#0G9`a 9;l9)<$4ݴ#V#a볔ߐ / lS>OudL'횘gDDFp@5սTR)k e"W&PLv:"dm)AR Y%@VGF h& z(jX`,;kTtO_D_.2)98fjd 9Kpx˜t~I Tf]L^x`smDӪo~:7SZb7ސD<βv.`.ڕ6\ {-ol(m?'Ħ]`/^tEL_|:Uh1 ExSDPCI?)pwޘ==WᯍF!PlsF5੎K-zʧLXw,eD#DyǞ0PakgŭQ}̳V"F"I4սTRDO{y9+eܮѐP-6%S!g><3vȧ>qd@ Hy ljL4ē?u!KfRSW; ߨ@pMt~~lʰmCrvr`=0lhH oPT pʕ8q"wcr΢rH~*4W\Кc|V(O)% e71w;te0$DBLk G/>sUUۿ18J>"N|VG4)v"f?R5բ߳YtS D=zdSwQdP䧜 MteŌfY(+a!kgX1. 'pdeL'mHb\9tU,8aui_D]X$M*_,+O)"+㲕+z֭)CIկ~%F Z̕ؠы|OgDvh3gB%~1пeL'mo%*рj{Yaczy*.2@3١JtnW uZlDLJ}jre&dO<rex(>%oD@#} ;wP>8aJ _D2pIO )I0\:biMJ塠۴rbT\bO[a)j;] E:Z+#?H2;JpxGkbjHQ!ͻSN%X΂iʜ,V@ D]uөY/3F62!clD#Cњ^XWi[IjS ɶ؈`bUgeT!EgY'l(ret,FIc#R:;>8m4V%J,MWguPtN7BW7-V EݯKq9(U Ў)l  ~aMO,~a4:2IFU<{W,@A 0;#w9YqGg}W-M @A W. @A PC+Ӈ@A P(5ŕk @A P(!tA P( }@qeB P( >D}W/'rL>d4_ê>/+`P( 6]C=T\=ܣCatrtC5đ0y΅O~r+g[b9-0`D) @AOhǕsy ŹY"%V_`֛qe !PIکfi蕒@A PۿW#sDu(,|9?; f[,reR#W&-0`E+ @A+4veƎk˕}/qr:y-blɔ)Sw.@?NrV}ݗ#8B3f`Egy07w #G _.9䓿կ.|wEAkaV,Lpoa>z|i:piƑÇ@y2ӦMok. 14'YbGb vom9g\$ @A`#ؕaQFn/t"%3A=<) s9'??>9\hW~JK]v.x oL7|3ҿ1cƄIӴy3>uIİaÔN{o%&+s\:,e K*9@A Pk2=ًܱM3/O~]\s G.r0x' ]luBP[k C-~z)r8NjvGMC%2qDNyԵ.V+]G}Twr-xQrNA-+5(3a?I]DtΒ)t}Ǻ/~q?7)@A P%]pe/~&< 3s.e?îJG_܈{svoDDSěRPK_QPʬgWI&d!UW]ȲjC24}t1_˜tIraɒ( @?"WfeecSm(6yhV|2[.ͧlYXT^}մ9"ZLh1#<9ҕYi>VDV,?옆>e,y=WsdҤI/q,\c$ @A ЏtYV:hئ9-]lu(N"߈&+ /Ԑ '̆nH~ HJWF򖖚c 7YAMM\~=WsX6b}W.?ַ ( @?"WFfc9h8`ׄoFKt:Ё}M"aslʰC|>,S/JWݽ馛h7\`9ù uek r|W樣Dsa%΂`} ,5ug;I- @o+n\MopDX}ޗ|2[ pD_րȑs%o22~RK-eIqe+.--~d}*0+H֕yw =sk+52Ji>(Bsƍ'@>O L@A Ph@\Hѹ6Ls~yN|2[]k.&lrbI&@8En֘YdkC1kdpZ'c1!Qsp[;.d/re+fN@,Eǚ裏<2ztA P(v\V\xrkNLVY?Ss3{_KO)fw^E뮻ؓk3zXCA2OZ)$y \U2 ~}/ @Atӕ=?vsxzM;ĶT/ @o]*,( c쀱OJ+@A P(lʀkƫl,i{M- @A P%+KK[@A P(ttB P( !P\a]Z* @AW@A P(RA P( ]G2], @AwWwX @A P:ŕ:`A P( C2úT( @(L!- @A Pŕ֥@A P(@qei!X( @(L.- @A u+uH @A P(z@qezui P( #P\CZ @A ;+;_ZV1e"]$^_Qk0܆]2[!6[ E%II5ve6|9ZZwyOu=g>g _W 6ؠ8_WnU7U&J9mSu]Q|^)r"JV;Lx/,ձnEQ"s Ry*a_†풎d.ƒ~:O=Tg?Ks{`lPGvm[ ~W۪@iM蜇)RѲ"+E"]$UjiY򅍦2]#]|#A*/]Y%wWذ]ґeTx_6ve|b׌Wf@/~|krI~Ro%}˕|^ f"JV;Lx/l4EQ2E<ѕULzw %]FecW&Xe 3͕a=#WZiW^N;k_K,A lw7߼V[ 6l5`-&V\qwܑ+@wk/tꪫ~oT`[{~#sUsr:8sʯ% #FUW]?J:P{7>{!fm}裏$/'[k??_e=$# OT~{qYg/ЙO~&,m]wݥcǎ Aɓ'YK;e]#=ZMR872GOM-ܨQʱ\U*M7}E]}?{'6LVEoҿW_}5"*~뭷؏uA}_^{zc)t))G`N5;-VosU*Wh~4E!haG"jbu:с4\#~d!#ڗ%[ݚ&цauĈ젻CW9Ol: 6Z#mX1K7N5VXa;w <3,-%Zj^z7pr&NTT.9ۿ /> GӧO?a8@|N(xxs5Q@5[oU83uTrMMC[lQbS-~?Ϩ~h?V ~);DUK/4KE1JGQ0[_.Ih4ߗ.W$vDbeF<{XP`dG/KDSa]ĈCWf&2i$D1:3epz1c+o嗧znj_"HT\'L#12D}șgyh7ew &]j(&s |?9qL?eʔk)KKf̘A hQ:Bdf9p ZIS>C9L/dȑ~:Pᡙ*}/qȉ\ro7MDR8872_|YIr) )LhD%ʎ 2<\빺aXר,V%W>i>99zJ* Vh@)-?pT7J|͏<27Y5ElD@9we#ڗ%[=˦F؉Awه i:&\ ɥ^f??Xs5)@`AvMͱ I-P8kU$*NCN8*ɔ[I3nz*놦wwD OE|U99Rp9zhwwӦMSN+,GPwv]o2=pƢ,e6Jܨ˲B$Yx"q7Yd2+]ʤ Pv,YV0Y߁'^Pר,V%WBM*QDRVTE/ŠK| yf*]FF8flR=we#ڗ%[=FFջۉAwه 6 "H%'%IH$$' " I^%\ADP"`{>eϚ^k}VOOuuկLyj쮽ZZnXL?=_ʌvmLzWAӺmpo2GP^a[n o +qiJ$Q5%C\zʂ:cQ:DubUaUUqL#ĕYqMk!$r:"jiK ֕^!WDdßDe/A'c@ޢ:iQreb\%9~/R4[&J39d$xvaTx3GqwÈozvMZT9Vj5ɘEӢƬU@E"P@ueʱu 6؀&$Klo<-2#ͻK|&f+|t"iQT*vE"PTW&Q@E"P3+3 [T*@D2T*@E`!P]qV`U܊@E"PT"ՕhpE"PT* ʌV*@E" NjT> x\̛=\)T/Bc=6X.]Į*I$gpLbs$8'|L/B4,y3Ua_'G4F̐2HMy>ϐ%\rwoVlM\]ַ>2ս9~I/9Ɓ?^ܔHO 0??t%R"s'<,@)%#i '*VE⾿pQe<_/,8 &xqE$W8_o廐x\Dڧ7YB]믿> œ8$C̕M@_-br-o!n})%jwNn5_j5\L׿V{Ļ }-t~\_lpSLڇ"}Y"Ӑjh?N e݊00=esӺi†.֕^yܩ~-KdSʛ&<@g 2W-RwOv'2%q2,7\="d^Զ P$ w/qez\6Kg):dwgfDIB2JrQ<7 _sNvլ,oE"09 з+6 5ll. =eOO9Ej E}܆r@\bWr$lɂ5XOY@lj@+&L ]̖FR&y׿2_.fb2buYp/d&Ͽĕi+K$/s [9 X`0 d7++:/p1m©bW_e},\b8Y׺˰[{azIyjD՗*I]4@ÆY5D/W$orΞ)wkE}+w}yĚpxf-b/Zf@lj@Ɯtep)++GI~uב]t Ԏ@o9ph_Ire:2me=p$ Wre2KAH$](|VZɷ^D Y/o"xֹdxKE 4na 3zAy 7܀ vլ}l5k"Pە57 \駱bd$,瞑 vKTZg <@}H_lj@݄Ig̟K;1+CWjV7:'.;㴦؈)W+%fJ]Rp(n]|/~!#xӢY?SZ2}leVevլ}լ@E`GoW&ilg{ܲKA̬-s.ÐJk薥6 B3)IfqF힉;yywO?tVR>j%yPEŲoJ4Df*Q+1*-yWy&-d>;4P;u +-E@AîɜﳡI_ʴ%mR-ɮܕΘqV&_/xqwb| ;lHL՟hٱ%2WJZd d봫fMT3>*QV*<}2 c'*9.ٻ*xۓ[]f?IzI'$ؕöqGn:8yG܈a^ufnm;ek61yIzwW{-WF-{G[:5袋ğ6閞-)Uz걚=b0DLj'BW!{`%:a,*:te5% dE"^ 0HY,Z4ņՎ;(άu"];gM̫7BۢoT&qenwzi;Cv饗+ r>va>ߢo#B~JI8QٱQQ y'YQ_ny%l=ЄC>GfKt:V.J\^Z}ZP2ϟ/vX߽ X.g!(#&La+)kD:ed K̮ӕijԔ0qe)!;՘t5!ߏk8_M-b{G/O+oW=kb^Ln _~F4&jZo}VB)WF\Es% %+Vwyg3;x]q.- Iؼ$ә#sȋ=K?O:oœ\ q.L6s0L(_XփH^fTu,S*0dv0(ɑLhf}OUᇉb`v՗֫*I]ALjq@-qQLUȊ@E"0̸..|uez U*G`"2l0yǰjЊ@-Vhꃊ@E"P!&+3BW6@E"PTT#T*@E`#P]q\xU@E"PT+Sm"PT*q@ueqU+@E"PL@E"PT1ՕDžWET*@E2*@E"PTWf^"PT*TT*@E`#P]q\xU@E"PT+Sm"PT*q@ueqU+@E"PL@E"PT1ՕDžWET*@E2*@E"PKWoO~o|_ck7yW?C_(k>{m]ywu H- ×2⍝GՊNY )I-!ܒʬoj]vY=#so?͛N<Ę6կ6l1>{'ַ5sF馛3_SnO˵>5]b%|W6}W|#b "7 $N;`'?A;_, ׾5˕)'?Is^N;!#ʷgM,_W ok֝wiV tg/ŴNhldWw?xs1\R;rK>jT)"wyyycᶤ, a=:;ƙ+C'z׻Mt.Obک9L,~^uuFн>V谝\sE$c;)b~~+cW\Q b,RLw۹Dl{Jh5CCFrgŶܯQc=Vz'@|wm7t\YE[eUG"M (ĕ)r. 'E!{:itQG1anO]t"obbu/]+Mb]>~_4n'@a=*$3|>iWCeA2,D2-~9@&uL+sWYp[Rٰ *Af\<}gy.w}ʬN랰.肧b\ve|͕䗿%ibup}.1X'ow Ep7ZY0́5rtP|jW \ *zʔctuv O2<33);la HEͤۆin53gOD֪J)W^1Vd..i\;L֒N2,D&f@.BVL(D> p64y3t+_ȉ?}衇8â=XkN=T +rw$JL,}+SnE.nj+S"`PFD=Y-GdD$SEW%zG?Q1*#4({ޑg^; P-qeݙuByl.bRەʫW$bd"0ݕ~4msn"]J${ꩧ|EI(_~H Ԕ~NRTBnq4:|*~&lB< .L3{S2{7 ʔctu4(bXO8wn%9il* (/>[5G PʈQJZ3&p%]>Rp!-BFLu~,o` + '>)BN` b($ . 4M l{/2.*M"&X!<pш)z#ZD,2,y ݹʬz.V"1kE^]G atuC<,ѫ1((s TN^zMC(x+@WaAH=0*g>IZ^IDڕix(U!+g&a!f0@ V4ʔR=s 2Ζ0aƶ\F8X J/2ʕˊ\# #6ҭjj1&PRH[HVOLWˈ!GUw^o.i+Yޗ!]P3 es #ذGKNJc•IZ(:6E6_^/11T;d|طS(tq=suY0sZT1bUKZEZT‡,-2 gqFؕˌEW&n0G?ђK.$g4hGv&ŁFYLp $FO\-~I+ x ͋DW&ӕIX%o;̀Έo^T˅4>Sh34NW+ӗ$F֕A~ S2ӭwYR 3u = ̕jMBK;65XQ*/UC2Xxg!:R( |JXQtep&r|~*dV M ^ {6];Za>ux /%iۚZ'K)^Wz r5n2eBW!k2͸Oxve1lvub裏Ҁu-_gּ]{nL3sHyue%(,/,䤓Nb"Ar% x_[+hN!$m8yyH:΀dLڴ[S4sJ+fm') Ƿ/2uʭ$b ~ c cdw^D֣BLc4v ʐ&Q1g 2g~KWrPʶÅZ_.I) I[&?əԑ²0 I[pk bI+4|N2xn`W*f2pȋ+@` n7zTx}BO庮!AfthG#&iM^i'J}yQJv*Qҽ\ĕA /Pay-;#ea4m]I\w2!1@J.7v=8 ;W"7 H\!SWY =0le|'x YEoI2Sm2J[d1J/h{GTf ]7N 2M6 ͎T i\ 2h$+6C>`"Mw]Lg>R6 kwg }W,:RXFCߤ*H5q1@P2~MvUiHގY-KdјNf)$gnOX`r`͕g?r[ʐ/ ,D&h|)Jv_W&dĄYL[RX[yI+jlfbS^<6\3(4[:+3( H@Yi#&g@() ӷկrWVVD SLuX3A Cڷ3ّa?,u] I=*!3L{v4lmWJҵۭ. ۮ}HWW {ЇO:RXFCvoFa8re&n4F:vy(d1fui׉5WĢK0@9|N3kLԣ 4 еeS(a*1(i|rǥ+S^TF9>wn9ԄA`Օ;fV%-Xo-4@L52}B%T*@E`,!P]TU@E"PTD2}V+@E"PKTWf,F"PT*>LU@E"PTՕKQeT*@EO+'`"PT*dpd$>c,fB7`W_͙J&q+?'NjG\;->]7j'֊3֒0'L>O_6+9q"9m6ĉBNҡHU}n`WE& }{Zk;)(9lfsv8{1%4^as9#馛3ϴ"0y$2`Uss!)sN(<- 3̰r~v|u O<ĘVb$ sz&fuVD"mZ EZb2$|˃>KZ28S/GcgZ*#p/KSf P@_%Yqzn[q`giKdRJa% *=;n6s!Y?Ȱ󘜓|>(p1I+)$3|%u`50=c8z}ٶnKg3!DI'tRb=F4￿Pp2GЏ9ZuKKhsySL1Svv2}.W 6ĸn'2iƕ1/<[ۙY%8l&n2xnќ/Z) %m uecԴ;ugŢēC?蠃 Bh2N駟N@&YskԮ ˮpۊ:TL["(՗),x#;te2( w܁CNؙ@OWĕ8w@62ǘ*jn&Je ۴6A gJ~i1ÒtuK`+#8xuO~SOM@Ȝ+or Iܺ&|ITpn(S1mlT_J.ob!pו41kz 0^{mcX$m;#,O-,߷hDS9|%u6WfwMtFCj_*v;keap&d`(Wje]ddNb-)S[4MlXc2^+8n/DL^Ku`%p Xx\$r\dE_KdB86ܺfInXpkn+AU^NIn#f⚢`B?ݲ"ESN9V<-a&m)tH] +3wveCॗ^AR_ȅwLπJ{gq.s[,*TIJv6K,ơa@~]f9ɎUVYz|+[~vUWɥA&o"Aa[H&Ν6W8'Lݗٴ^~$u; *"n]o!@F=m48#iMJ,Cf/{I`=fJhL/[%n<`$|SugemXQLwemm$@m."Wk7`8bx:!1<$|KjZ6M,J\MEZoӕa:nMoW%U^q̹PVmQRM[8ەy' L3̈́y'YI'pF&ޜ-<>jhʘVhh&&Bdo!xvfZXHOpe`8}$`.XU. h?sF$;y5 g* ĦK鶹SN9E ]gHvÈb=`U+TB/@>C#hb uI$Mƹ smy»{ޕ鉰/<]E1я6Kئ seMЅYOUV0}Ez)lWgHwa!LjPG6LIUq̹PVmQRM: #22@,'9z}ߌ<0H :N<Ns5L(ܚ^x4o!lK2- @O\MPej_*r}8\t`I_ VUO,TFL ic d(|Ygal/JC:~y_b*q";B/!POtncEpr嗷2m~ !oU$mC/ˣ+裏f#fa ۴6`L`-9fH0ve"1 Bͼg;Di+*9 ` 8JTS P_z2VGy4+$Gny$U:K"ļ:hbB#[o!-$aI%u!*+:쳛ۨebZ ʕa~=3Q_|q|f4,KiX8z?l{dSW_ů{YllF;Jh/]ÇM*q@l|&P'W i:]7bag+> cW\\XS"6vjLt26;ݒG6šd'|rteI6ڨ0X6M0+h:.hJڒʰZ#~Gq 3`5 KtH"Ibz)/t>&9i[LFą9ʈ]b~6.L7`LTpNl E>#`b}0(kV8UmKWĬ2h29BVh®W_ZgAoW06WF&}w0֡$dT50 0+l{[ÚusI\w9]omjxj3Я+DZ'@9b)xf`"=} d\g}vw8]?I>bK#mֻkkzsH&Ce䙀E¥I֯H<_ve2vGJ<v=`)USef 0'ejS"]{IƒT+vulLDr-陳D3)Kx54Yf~OZ3`Og[!>&KL8wدTQmKiUHb$&ܒ-^ й0?ͯĕ!n+[PI\s=[ԫ Eh=+s饗‡ܝr)PRHX'l@;ohE vY.r^zi)tfgWk/$![nE&m۾Q38 xˑ"$y5M_ x m46¶7F,V(&'lreDǦ2,C38?Oq=(7&˕ή44,Rb0I$Cݞzꩢ1+K@O: 5Y<>[se:aW څ `L喉%"22L]% #BWo}K%R'rebB`O8o(`Þ |+veXBbǥ&ݦ mQ}2x<+b{VQCa8c؃){ mM&rW$;2L2Qĥmް"FֻqW!(}'trтH̅e;9[n%~_YaOEP~$_B<[dfR"1p$a?+Sc&e.TPer,LcveXKm>A40Ȣ+ܤ>A(teK i"@ ʠꫯN%a͈揘݅`ٕ_t8cTDB5 ,@ǂ p3ƮLwe\qxKGzrIzP_wJ2%ٕIӮۤw7 ::<kF| 2dVve2ۍ_$UW]%4 *{KҲX }cVb2gq̟2P5[麃{o%g`@)  د©2h*bVQ,ce 2~K +ílUVYR5ֿwg*Dk_ a1lHvW •z7HZۈ6urWĠe#"qe+5rW$;b+.e{ ҕcPΰ;Qre ĕԧ>Fl팊B
4>ӜAOWg\{՜\F޲<(_R쁽ꪫկ~ϰ(CBW;oyėGi2dk_MZl ; |#I@6\>P.T =WaW&co U|,A24lX(ITz Ӣ"ĦOw?I/~IK-62]Ia]Y{L2B*K\Eph K`!&x!81l.(S[e)_eͣ]H&Xh® mW"q}K ĕ!__6KgeԊ'yDhH8Qa]> +ы=][[ h#teh >]I"7م̡*/z2gYBW0;2vC5I[ֹ 97%& xy"iT]fAؕiBA%M>34̌[ژUBhݩ2/Ԗˆ#$>?`1 m 8LWZ{$xȬ n3d[ cVݕ\I .دݩ2h*bVyMϱ2 E[+- MWHO5]1̾cSa]tfZE:# ά0bpi R[xQЕ<њڑ@ӕu+S]OW!&[/'m}g[߶:]xNZQue.)WTlgu]Ы˴3[ B t,bxaĻL5~s\3rR|@;Ltu\rm~ я̪P6i܌aVDv@w9d d.&iaY!*[(;)dU% eIו {2T[ 2 ˎLu()e龜 X@&iCy&Cpi|q;~Vh%4=#ىu wMg'OKKLY $Q:hđ1XBz1˨zWsȑ??YaIO<G>q$/Q+|).㫯>Qd(r_1擸'$5D`d[dde 8දo+lDr'qSO=pI ĕA_r'lΛcPY'M7ݙgiN[p(Laלg}|FI_|}^Wr.feYqV</sN,8#3}| d0f8[eh8?w*/Cg!(} e]b )w1׃+iI38CK_9@;3hf%t98_Wudˈ/2s=SٶH5.2T5}QGsuH1U_R 1.T9 G򩦚 `*"JZQ'kFbY"g9ΊH<3a_W %!̏?xBHI |%\~Ӧt$hJĖ mx(W7c?Ewy ~9orꩧ-O(0TnLӕ1+(o돡<蠃{\2u3CΆqy؛)J*pw_`L!Y;pyg4ȁ3#[Kԩ9!c=VY0mI'rY9ʾ]HTݒO,i=vgv嚔\B'+S؊wUvo[eWb$I)s;24[c$y3L??^?ʈS;#%"l_+48N 0Q_T!_C7re(xHop⣊V`7*כoYe3L,0[믿~eWfٸXaL !5nvevm7l;NvUWJ__wx3ό?DUunv䢁uʔ0mE"pw}g``"7y9Yl^:A~o.ğ9Gj3 n$ٮ ˩FIN?UE]I0N[$#jkG+ӪTvy7>uWDBKJ!*Å*g\Tu{M7)c]JcC:IDD8r2u Ֆifƙ|M6bz=30 ixzEw K/y䑊)4hλnu|İjF(G%\bK ஌N}a Ln%V"Ą Qv,F*vev"?V)JW _>2'S>JH2}Xz䕸2% ;1t ]Ǵ,R &T^{mB>l1Q~܉f*4]Y;UnK,YVz:_\"+_E]\li AB6 /)*g\pHEpg+~7{b4*c )4(?ᑕ!a-E|jA' F,#(͞+L -{6ԿиyR)|x.Ϩ4oSh"͖L09we27`La5huv2w7J0T}27x#rki1wj5=\SN9EL͛ Ę®*o6pVJ˅ 2DL'u4tQ#-f#7WY| _Hq[o[9.첋\ybO1%1_,g!s=70w6gCO>lfi&&{e 'veOW: l1ܦr%s\M<17C*RފwlǍ%F'<2$c$D~;_Ĉe\ p1k%QVO~TOg !M:駟V~O[И͖L09reXzF j5+Qjƺ/`e78[awM/r9,vBYS>vGWP INj¸5G?]2m^BKMd`W1Ry[Q^z- ؒ(iҴHLF\/ Bz'>ux0(TFE1TNF8f[CeQ2jt-BHcDŽ/ +]m(2.f`(WvZdXO񨁖+ÔJtvhzꩧ)Ks7( J7h$v1l cuo?=^ƎE1qz뭝E+uI>0+@C^9(Eoz4+ϥGe0Ya*{exsUz1sZ6ʎʜp ȾB.oIfeJvj7V: ϰg+S0@w4tQĕi3ph裏NqkW&]#Z}ۈ ݉vnU9m xk\<]ۉ+7)Lj+ûܺB+Ǖk»2yKJ!OP]wU{5>H-9@[Dy+~eTsSD snFӼ'!%.t &U6?p}msp'@J1 iZU j?*KfK&#= ï]w",h|'NIh1$,Lֶܕטaȕ| +b#]76jdޕiCKAFp- oT.*q„espwwH鐊~D%-3R`deHsW/3y73` HfΚYK*J\HI:&;%IS\+ӳ W (3kEbXaK9 )Nm/`,铖ab1ܘx y:ch mTx63򣺲aޔ+C5क़$櫗0@&@ӕ)g,z۳]fc)/V&V``"+Ӟ{G9sbқf:0uخL.ѳl/IxwsNRjlmOT|em]$&`:3R6Q޾%>]\sF\~,P$Hmʅ򗔂RPe]-Enj,ECvHE[ў MM$* sn٤-7I "kW W&ْ/=G#B G *4m`qe[\UxU+/CKfޓab1ܘx S3 veړ=&WFdɯwFP?ӕIX'CEOgLo' ]ӕ 8[:BvbX%#sve0 S"o;>w'Y'N耡&;Ʋz)TYELd%hh\OnɁs岂PHIm%ärx jF+|"[C*V++VoїIˆV^ԯU~ W i1<n[] 3b KmDWQ\qU5jJMrcڗ+{E}_>JϞj Wδ8i&=2pf`}#4wlweڠs}ΨWbJ̊ix=bp*ã0V+djz8Y"g+洹/1r3;DҤcgއ'QQٷĤ, =5nqVu/qMO3ǂ:ލkƦ^6,nM!GC*OK%q\*OD@mȶӄXf({9h˺xj"m&LW\JYT*@E/+\"PT*@ueVyTi*@E"P W%T*@E`l!P]UU@E"PTB2}U+@E"P[TWflG"PT*L_pU@E"PTՕ[QT*@E/&+ç0/pz!}e/)'1pD7 ScM,1&|ǯ+‰zWR e@IDAT_廫1&<9n[wuW<$(ay絫O+A\Ns9u~n3`$뮻Fbi΂ &Μ34Ә,@9GE }8z^쳏,15Cs(Jۏ*3ŘUz|+> s2g9mmΐ2Y'+XB /L8@2f$` pfXve92"N;$JO|gZHgE v0(p3<u׵E̅m{IbڜzHXqa[0 ANM`s\aj| 4s9E`t];E˩SO=oi,kb`ħ%YĐu# i _<38rŒ@,ÒV %:9gYtw>FρKOa&6|wSEWnr-N>eYq ́>MO9Ga^Bmf9d`Wvm(n &xᇝ5@m~`éW& x8{{3% y-RbEs? v`Xpe [ZC@'y/lyarenFk[N;MxEWi WπVzH7,cWfv 90 D믿>&,|7tq%_K$]tQbfyGydqe1@$\ڵEl9Ő55p|ꩧ*;~!9D'<>$Ij,bʝ_Mf }$ SX$ !]HW™E`#Lr- 2#czfLɌnl&"$"1o:u03n~]w܁:&fN뮓=蠃S2=e" $L'S;L Sꪫ*#:MoqнA1]gdƫs}d*f'7om]4K,ĆnԭkK|K/.xwceR'L"|EEw>FmؙvOIFc"uL(pZ%O\"՟6K%>,;tpI`V#~)8Ds w*Xg s]o_W&JEeu ]&ɏpшde5 @;GPx{)> $2<)8R-1/tx3 /p[ҀŠ+L90Jl#okbQ_W&ӈ V1m20d=¶.a&2QHe$g}v'*=x㍹+t˔RBYoE`(W'dL3D0+!_|qnҔ0";EIKY Fl+`V jl<sq&HZ8{#f _i;I,z 9> Y$rWnl وa. E̞{z@*kWF=§!(bL'SN9E8/7k4iFۘ[NW&߶T*f',:KAZ&n1!*pxUX ʨV'reh5Nԙ]rJŤ:Oʐ[+"LCb\.RZp.ފH';z1tc4n2C\[&~DV)\`n1ʤ8s5Y0vw$ \yr-pi ޗT%˧?Vijte[2֢wy۶/>!T,;DB׹瞋?| w}qe<4bT.XX_2̻pRyS۬L'OfC*^/$I ēJE4&_Emcete`ajIbv|bhTbm]4%$mb9 Ip&sƍWNY#+ mŝq7-lF$g~:|`gN묳R+"#(W C /r{ǃ9BA!Ehs_-2A7bUNO,J쿰K̕A` cR#0+c~~{AQN&OOh3 L>-~ epcy .auIM̛r|QfohY4%h񇴻PBB掟}QHq>reRQmaқ.h }xpyRn<}hD"w$d&O>䞮 4ą۳c,; wOE ^xn"mD\b)Bbnb]DvP2CL O=1eT6f`Ubz1`Lm/UNO,J쿰Kؕa_16æuJ PL§W Yjԅ:5Tbo-͕L ʸ쉋+cQ{&wTkx]j롼ۛ][G|$+e dv%@@ ʐ.u$H"Tw>Fm{eʍ@<-]8YV`+3cGB/lyaveӓQte%\EdN[P|bz2 )k2N,c8n[vEɯ*'o b Z-`I+3%"׃ }\rih'.TLզ+/eu2zKV$ԾyfPB^ڸ&E/V \s5BɓF> e+CW$ث%_ o2%<@5LrWF/%5U 1mc.o&+CK.¶.afW?ٿKD`]B&5݅la#57$_^?/ɮ[oymV)^1+y䠰L4OțbF- ?{&޵EBKk7w@)gܖky| Kj?f׾qѻe ܙ02SRFҁBb|HorW SGpdo?ʮBE z .KѕU\.T^ XBY] FwO9jD =o9i_QteȂ=pbCh򄏔[tɂqДpa-(ʠvbIt!$s%TiYم=烟nHB(:;HVR:, i+@ nK&MX-HQDddQ^}WY63 22JW$W1GG+d~טko*ՋD(TUMSzeOk*)՜X@%ľ.NYC'Wwed#Y^$x BTxVSaPVwSIed8ÛfmET z2~ ñ0§bI x,\w V=p1*dYh9a:O*?deίĢ*S$oep(( ͨpU>D}td3eMs T&Km^:tHY`TeGT&QJa6ځt VSaUѲ361$Ap2?n|eJen7AD2SX 3 xXE ~4C|Ep_+>KzOz}A֙}GZ-% LkTȬ˾XG&QZs'Z4sy[ʔP˳8@3 HSTriJ׬SyFG`G(mv 6Bo;) gtGpGLׁk8#8p*S:8#8mSpGpJ#T4tpGp2m_#8#FLi<#8#=Neھ_"i_eQ>:zh>ʖu,QH;VU&Y5o#F+huzw'NtXKi=ꫯyOꨣBUU){qrUu]* ="ةq?#[Mh|P'W֪`۔ ipE'[Ka;=׮)5`;p@P5llu)!gجC2Ē(b` %jN fhePTҳb~zR kS4oNݰce%*2m ň6*Z@ǎY6VJO &D%Lf X~g٣t,M(-I2ش5ԇMh0Y5SnMtIRLc"r]*W;jt5djjd:tOeMPv3 LH##vL-u) F"@7߄;6l`p.Q>YTX4OT vOfQeCoTPhfVobDSO,1Ҷ Du"?Ezuh&zAc[_믿Fmd."DCLW\qEeapSU8$ԑDKeIe;*KK'ioyb3}Z8IZl(e+eӿ Olcl>s8Є37@KsNݻ7FG. En u6 ~lQy?*elvmS#*1$CjBZw׾r-qT;sϥHb<@ۿ;İq1sjBk8bim6ք,PuB@#QS7*/43E)HTI̞c%FQHNShސ!Ct /kk.tQ>[*6Q7"_z%bd*(7ͧ4!J)aB%喗9pN+ 5VOK)df (bo$ЌTEYgc94h'tB<[niaIH/4F ձ,u*5,sU f]XhJl- ۗ\[&_,aY&ٳgze*U# ( dav{$r-.]H+PYPUQV ?=Z*1ҳq tX鱋n3<t+%M7ݤ4<i~O9}qpDKRFCj '6&DYoyUW]52gv[fZ}Z,b64hpHMJeN;4xgл{/~ipEJNNiB09%n]j91~47va&* BA|?y+˄4B_ +Q: & j$dرj0;a.wq.]~mHpM Q%idie Ya|*1ҳq tXu`d^Izܹx]"q^0XAꪫtofLKfyeZHe |%L$#F8 @ahiz4P 7 iR*OK?<"~!2ilњv!fw"+#*Cn" R^oΊ4[ Q8H09ҊӬK]0+ҭP8t@8Y&Yҟ|I+1'U# zN4)F(?|WKo=3jɓ#8M$]Z BZب4|0d>d8TP|S,K:v`n6]tA=f ?# zDj) ɤ:y[l;Tʐ WRe'Z]„(K-o3hE, JK DKghoLP NCI jIxUV!RJ-ypg2a 풌5ػ \neQ\\BZ،.$Pƪ9묳$6B&>yi9mG25DBGt7ސQ?`F⋼,Z9SYUjT&eD0Q 'Z]„(K-SJeDKght^ "کʈ}3@^v%~WQwu˲Z>` p~s|J"5&˰šOڐC#=%͈ 9r"L̲Q1cƄY5m؋/8NX>洜u$.M$]Z B84D30/MJl*(])y;ؚ{HԩvjGs%z)=ݸʀXkGwЁ_< ,uӬF>o$>vdQJ׫ea^GT،@5Q*z )YM F"@X^zi)J2jbY.#Hp +jJJ4Øn4*1ҳq tXu`ksܰxo1‡Mƚ\3 p]LJO Q[WCjњO PG}Ez -ҷ{ 7D^ ƃj1^͏3$NcjNt೒4)+}ki6Vy)l8ߪ8]*oر+^(lFN#p뭷Vqe31;F$ 8F"@H',%17'-K_+Ar" 20 ĆبT5eiLAJY7+;aL4J)( D>K:v5ywFW/*g]`%+à fw_rYbO Q>] FVCW"ƏoظT_*S9%6"^jA7*BCQʲv^.0]l ;M_-uWGTeeo:_^)vY(E!W 6LI&`+Ӿ9RK8Xg8 TfHe]%y4e9嗠24,jbD3UYZ\Q߬L1|+:DK@R[,&۬=jc)\K.t;wSz'a@t~3KlV0!ʒާR,GeITz}L堖8#: ) #*_YTSsDfز&f2i'mOeZף@J%!*uyǾ nh~K:vɇ*y4*?/Y5Q,'Z]„(KM}A;&ON4܇>lrԞzJwĉluQn$J c l Sv:o~nfv!4F|^dPH^yÌ 80laꫯZy*:`Rɤ䔝Ֆ_~#8"e1|kv!R}L؛ N!bFbmS8PCv`Q矟zVp\GCU!*mP,V$[6¨> 0Ţt,u[Sݙ ?lk ;vd[݈^K { _it:2CybIYorJ~aCy6lV?m$T؊ X3arh$fT(Ie.bPjfSCAT]!; eE+MpK ؍dW@gDU gF2:ԒY|a綥Zʊ3r)&'+._d=7NRi믿rGxbx}M6$ѣm^FmdYd"aĄX4Q~W{7s+o$K DŽW nKԑU= ;%|z'ⓨC(iVT&(@NUP f 24:Л5\HCdfA_Ǐ/DRSO=:3#eJp<@eogQhkI؍ۚ@ 0;VZ59<+H1v^l\ 3l+Ϣ2rK;D㣊NDɊ#oɬݻAm7|SQ58('+J|=Pb8or8,#<\_2DQ݊q#(K9裉 5Lĺ3@pr8EK/)qb߰VYMD9votA[O'Q@6|*Ҋ XRq\%I`p*c%a:ݻ Ki ;dҥK)Eѥ=S-%UO%[s)=\)pI' 1FpkkvP2JexX3gϞTч~8rmHLf=>#sAرc뭷̗T,^ģFHu79,Mpy晜uAw^ԓ/n<@&0ˢTdhĺ K<e/ %ͲDhlYh&袋%| I!T; gJfOeRZQ l|V6Su 2Vg>}p B#'|# Ep05)c]:d7R"I\pqKqHh5rpa=dT/W83"&L++._d= /\x뭷0O>?³& Ф8FN U ]"puy&ُ?ie *p;*0BuxUWa/+pڒK ei:L7j)6M#| ItY%YSVTF.*T5SM 0Qi- 0_FPSO=UEK<p؍ļN1y(/钭lO9N1Bd8+GFAnuZiR:J?䓕EXL-V\ɬAIYx+XL< b S8'uGxJfԖא M¿ Plb݅"Z$aYwuO6RQS$1:롈4| IA TfJGMiYJ3x`3G|J+*QzMoBS] a Y ꫯ O *x{gyKi_~@ aaP`饗6k1p3*{!-Jf l9 %S<VU (]]uUCQ* :,Syp۰E\rIW !-.^gubaMlMMDYE+@O4UԀ ~a6Xz뭕,`)"<mIT#18,>3wAdKziH5QǤ̾+v}ެ?“,59w}ܥEF+RCgY82Qb.,G gJ8V5T'K elJF(Dx˗IA TfʙfRfc;|Mly@RZQ l|V6Su 2Z i*&|*2ZJup:]mh^T㛰&V_)2T)*1:M\ iED[Ur x4Ϣ29շL  \pV\-j$&T Z- y;d%X"zϺ#<[_ 0@6`4IJ8M;+cHh;wLOzQhذaj{bv/;=[OaPdsósKiE lbY-BS]$Np+Oؗ]v)ް549T<ɢ2%)|3/ Fbz2[.-ܰ73#+O媣ɑv1g"?3M@U ϲh2؂%q~c!)~fh%ב>͛I o xòRI!@KluMEr˅}5Hu+lEKo4)V6Su 2 M+wC*^`\~0KailwҢ ӧ'ht S2ۃ *;b0h^g@B0;# #Sx&^/u7 CgE۸yGh$(WimyQv8#8mS6WpGp#TTƆ8ᅲ5 ~ n"KSdEVIeq~gTXСC-#,5th<˒Ee U2 <)GeM maX U z衅vmJI'IC=dEW^y"ov+fgKRKk9 A#8M@ {rB2{甆dypGh ug}p B?i5Xʜvi`Y1!I/~FO?=j4|0wpdQKo;1<8@!PO*s'厝Fed K/Ԁ`NgE!zG5|0FdH&&6 Iچ3DQcUb~~ r Ӱ2PBJ!SHeL0PIeV.8&Sq/>c ..bWYe5Y5ոYf?:keJ@J T$Ӡ,-'%r)Q7ߜ6LH1B3z9 QG<8#ԓs3`IHe4o8|>Ê硙\wyNm6Je˪R/ / $K5*}QGiz)PPJբo^P+ u\h2^haFNՠFQ,KI+L'`EDjRi„ C A&iBTէi)!40f%3*C;!HC^ڌe%í\8#&2zenH>y>sg)πʰSaa *C#G"tTߕIdExgFCOtM]p< s ɪfYQ d}W&.&^xʏ n 3L3`2wM7!cUW]EyGb7prYgq2jZW߿ &XMdFeY)pGh[Fenf BeX¢\UY|#tl ,GeM4JOiqƅ`.DeXp{Y#QT&KP0T&d(jj4%PhDz ɏ>(1z'̴i:Ϥ)Rzx8u*czpfCETF` gO%bQ /gЪwQ o_Xƪ] /yc%,7 bØ^x!0 8lP>BN%oZN|<65&UJ= ԋEXb,=."hޅ54%C p $( єɨʔ/Mʐod謷TUELY27*7d67E*C1V-2|E© .p9İaÔR-1r+~- 2ЮLonQdR.YB=8#8Cexg՗*ZHeА#$H.!S!t*=TmvE /|8c_]nBX[DdK RI֧2h2> --2ppJVX cI;ިZ[FeQkVkNe =8#l2fC]b dl&wLdRd$c Kɢw2n#8@ TI*pGp28)qGp&ALT8#8ep*S58#8MS&WpGp T jpGp2MR#8#AL<#8#4 Ne"\ GpG(S2yGpGh4IE#8#P2eP<#8#$8ip5GpG NeʠyGpGIp*$j8#8@ʔA8#8@ TI*pGp28)qGp&ALT8#8ep*S58#8MS&WpGp T jpGp2MR#8#AL<#8#4 Ne"\ GpG(S2yGpGh4IE#8#P2eP<#8#$8ip5GpG NeʠyGpGIp*$j8#8@ʔA8#8@ TI*pGp28)qGp&ALT8#8ep*S58#8MS&WpGp T jpGp2MR#8#AL<#8#4 Ne"\ GpG(S2yGpGh4IE#8#P2eP<#8#$8ip5GpG NeʠyGpGIp*$j8#8@ʔA8#8@ TI*pGp28)qGp&ALT8#8ep*S58#8MS&WpGp 0mR~O/-O+ͪ`^yJy饗0o-(/;#Pvm)Ba5|g7xct` ,*FmT xz9ry_-"9iKpV\wuQ|x;$ wy蠃tWDu]b^z)8pG`G`Z2׿fm6F;Fێk[*s' GNKׯ \p4ɓ'O?;w(|O)??"LP*3sSKSw9a^xPGp-yCl(wj뮻T믿3i}B(AeV_}ul<ѣ7U4V_"M ?O0[eL98p m)=#84@㷚r[AK1>zUWmf̪wcpzoy-XjVZi%)oq5- + 9̙gi8S77FůDj Ibk;L:S7pGT u{eY,E] &$ui:C}]t!1"`hbZ}'N($*K34a &p)%&GFbrH8#Юh*kĂyr-Ѐ뮻 %\kC T Ú9wq^x!%%H2%{gN3[db?X|Wrˍ3k7V /0"i(/B]n'fQSqAԄ pqIaGp'm@e`!C>#c31Ջ,*D0BbF{#ZPu%f^C/2h7ʐب22$^):uDd |e?#MS#>~sαd!%#L*+FQt+K`%U2ĄT7%0#I[dj+:!@~蒟:#7ڀʬ暌CTT Ozʐ919 +9$VʦnJAhXaV*]R[o59{&2ڎ1²Wag W;RhC*c| S QtDeVq?ODBSG.fdTΚ$) .#8@{C5رc5Vi2,éTs<}Q曏sԨ ߾czJ_j!-!LlI7QZ kz$35]Bel1k٣ y2>0cΪ"=-:.GT%Q2vC*c>,Ld ,4{128#OexḤ>*YQOp:<?^!6L挶~{ҋ+LűKpGhoԟʀ E/2 1hA!!*C^QaS$#C kȑ#R+FywKS*{L"B*駟z(J2'xL%zw/!y¼ ݱŌqH ezGpiRi2Pn*vbj+ڶ\}cV /pGIp*$QlNٍlDR&]b4a8#Rʴ6]>kSmRzG }IP/pGp* :8#8@Iʔγ9#8@3 TjupGp8) gsGpf@L3Ԃ8#8%p*S88#8̀SfpGpJ"T$ppGp2P #8#DLI<#8#4Ne\GpG(Sy6GpGh4C-#8#P2%l#8# 8iZpGpG$NeJGpGp* :"O?| ˏ?#>_O4?lUV6@qP3lͦ>V^yv}au]^ ô[nevW[mLJWs^{V[m袋9kG1/'O tjlM.]Ǝ[5 ?0ÒD`f#?Ss=wx_}Ք7| 3o#f#4̏>B=zK)jc9^~0 o?K_snv(TO-V!MNeR9/[/zKZމ)0\pVPVӤV@ h\ lwDaʩ+\3ab-dq?n^y睗7p" P%XC~޽{#?H} p=$D(/Kl[~pC8.Ψ3i}Iʌ3ƚ)UZJK/JnP:+wW /MR۷MnB BQةLXk܁a 2fw@4iʄiFa(UX$CeYf@e?aQc޽O'.vEII%\or{4: 3,r@q*..q$'{8U3-L8TgU$sLd#[FN ,jIq{"2qè H!kb.젃pJ`~+AR8 3iSN9x~qSo`lOp.76mV]uU\wX0*Ҝ蒝b;E\xxk׮ QF 7t|>}PタyWe] %$F4k$_I.T ec~ZOUӝi>Spq' ڥMop}QBЦ~:-|aT[omsdHyEE('fȤ6:l ,#wT&Yڤo?H ?s}xV+ k*'0n ab( ?7 24O?0cY , H2N# Ŀ_n$+I8x ]:SxVY_9rRkr<D3 C/2 S[+P&Wn,vV9ju9W5kSڥMmQV;_z,2'N_wbUг2AA3CN' l&Y@hD J3zX/a^X4L9uHe +4\0? (p`5Ce5Cz2a)F׃CXg&≠O<0w\.1سԆxrb4"́IP &_eͲRx(|5j$,TƮJV;\sQ@ۏ4= :%W]uUnd8=`uPLN"4Gsg}LdP.l<~fOR Fao pIˤFeHKG!)S&f*c^Gta0;ۏTD #+D6""Tk^H8H`f)!P0o^1{N2ܨy.ve)FK/72h$ $I/ϐ{)eG̡W#Y@F4(/B 0/ "+4!%U؏"y!&H _aY2q%&]{\*3ӑ2ؘaN`djIur)T&Ϫ3ԙp)5E515"Z.X*â e On>zs{*b=|9q Qc!3ř 1"tIa0Lc@-G%u4pêbh"MmT>dO;)IhHa%2v1Fi#zJM4aKbYx%CXCEeib ȡ2쨣& c(*{"cj=3L .[Nl#s'lTp@LD$LH5yel\$i,Ta ):QF ">QWcU*d4UhB+V.=c)[oG"5dնYig-{|*#/%|M6-c\,&(AJ 9\byFc#C)$_D}:@/Y0Z[!\ ٥%\hC%S_*p> 䛬4;1jd:sKv&2$\6]gJHQt \L_+,Fbk"FyӆS#Sz ?"›Ϭɚ]&/o&aQ .}j}@Z-ZL̜ a1Uuk&SIec.f2_rE~<:aS  È5*/.Պ#"_+x7ƪSޤd-э cnf߫34K2|V-* *c@P8W!S_Bn&adLr+D*cvʰ4 ɇp)fDT މ0rYQD*xVmj֠vѨR}"FyQىK_&} *땉d6Y2) ĬyPNJ8| L'mP>*nLӤIՔZƢů^/9<+O~FQUKlH单СH-oNfPiN$$u)aBCdNx) @syjaYƳU_ʳQ}d r[9?P;\.\ #.ޖXG{oEJȋV.SOo5Xs+Ǎ^[Yܙg${kS41q;iҤ}.o18 Î#8(Ce\!Дgoh̽;,pUs̡- R:M5;`5Q૯O;QRK-&U벪0[L8q$~oQFj~⮻: +%a„ lBv`8#Tak>Yѣ ~C1ʢQ<2D;v~{e(ĕ0'`tfb90 y(ѣ֥iLIP.]A1c\s5j)C\UgQ,Zr%}7kF iӎ;~Gqw%"/S푎#8TVLRfm4yJ{ښ0̌3_+/N^z4Z;d<_~e{^y~-B%H.S JdJy%zבϋ߿?{nxݺutv#/%)6h s|':u"ҩ_GpG@2 BC*s7k$뮻,DTf5״lwﮘ<3_ 6޲GqPI8C܂HFdg!;}1[82Eq, }\HoV)/*" pGp@Z IENDB`json-3.11.3/docs/usages/macos.png000066400000000000000000047647541453145653700166470ustar00rootroot00000000000000PNG  IHDRsRGB pHYs%%IR$biTXtXML:com.adobe.xmp Screenshot n.@IDATxWw$ǵ(x&M/:Ds]~Y8 7YkmfֽΑ(钒hE(YY(t;v pL="Di& N J=]dHHH`NWwh Q _c(5H$@$@$` t#+`edL$@$@$@$@$@$@$@$:ZÕZHHHCYtZIHHHHHHHc3tjb a8Gtg$@$@$@$@$@$@$@$@1:v0E$@$@$pxԑ> ^2 @-vZXN$@$@$Nmwdهvvu? }vEHHHi&HڤPHHHHHHH Nw}vG)   @.Ga9i]݁Q8h# @r9{$@$@$@L #:Am#      8<9ȶAwx{- @MGA:yVzP n<ȶv&  8bYiG;E$@$@$@$@$@$@G@;\a_;tj'm =pVJ$6QHHHHHHH3RW86f> "ϑuV*=].vM$@$@$@$@$@$@$h3Uz['nDqHHH qdہ awK+uYIHHHHHHHtBW+thYF$@$@$v:ul} Q<걍$@$@$@$@$@$@$@8hK+kVG㈷Sw\,#  |Ƒ.K3z؛um       '@5k~3upƵ2   '*˕VٌӧѺs >IHHHHHHHV8ph=S3uCgT['  8ZjHFL]#.nYF$@$@$@$@$@$@$^v4Q֋;HHH:@Y:nWoNnk0#      x2 1ӈz+oXl:a @gh#O=uUʻfҝ`C3. (iƆz#_׍Աuvj$@$@$@IiGVNz%Iv]%i2$@$@$@$@$@$@$@Az#.YNZ/I!  , ;u#T6"G6m       @3Nz&M*{F㎈zێ2   G!GVInH*gwY^\qHHHHHHHXWgR$rIdjR9ꕷV <   %P#LR$r">+ƍsu0M$@$@$@$@$@$@$thSO$ѽDݻ:Qq+uE|   #P#'NZ2gd]D+_+j}c9 @ ڑR$i~}|\a @HȪDL劷 Yztu&      x4tIZ'\-fuozdztrHHH3 tdI"'W]ZmҭU- @+(%ZtGꑵuV <   "ȪSKqeVyRnK7X砶;ٶbvHHHHHH|hĶ$ujĕ7ZGR\$XK+n6XF$@$@$p"Y8Cjƕ7RWG6[nwK-=V.*n~^ f(Iגk<^e7V=v:.$@$@$@K ԑSK.F(zIʃ|_='      '@!%WHY#u8KX:HHH sd%uԒ+*kUbUV&,n^. t6F)I4RU|#QuުU^I 6 !Ǒ SK.n˖8[#L/HHHHHHHZO:jEwZ Qvr'A}&  ,UGVRK-z%kGOZn4˕m6}m5k+ @8HGG=mՒ+* }%ey؛j^m"  $u9)Eɇ'SaqʒL0D6 #ЈVzdto=hYVVgC,'  \Ƒ'UVO~l3y<~\~2-+[ @u$'UVO~l3y4~\~2-+[ aHJJ/QeagfS2+qWt;t>eIHHHHHHI&GRqrV/am(+'i#HHH:@MGVC%,,Ѽ$]&eQr7˕eHHHHHHHhiRK6lp[)a2EjݿIdvWHHH:@#+!U$/(V`vL=y*!LWUt#ul]$@$@$@$@$@$@$@KI:qae% n+yQverQZ1HHH3 4Ȋrʄۊ%vΨF A[m~ISHHHHHHH~8Bԍ'?L6춒#L֭ot2q騶갌HHH3 D:,e۽k&cwM͏S+%HHHHHHHjh#8`^p[{kvXvۮot2QvO$@$@$йBYQNarf뭫u:^Pvo6%      &nGF=d mǕ龪JV~r+ a @0,ׁ$ϕqӪݎKkΎԔٳgX,Vu]&       uh*3ڌIoodٶ8l.yZ'L.<*]KoT= tYa`v\Zt&qb/Ο?_}GVg$@$@$@$@$@$@$@$;ܹcVQgV__YP<'IZ{%,d\((=6VlzIl @sd҇7\97m<7ҵ(c  /###FS +w+ESzˌlmmܜqf_p[` U "s.5A XQn+q: c   A la嚧 Y`H'`:#+H㗗L_\s ,5Y) ,ʪ,--՜ոI$@$@$@$@$pt]ZЎXmiyIA$*m_   @ՑU+_O:Li, P(}~ @ uggG2i8RpZ=@6"pd͒"gXZήboK`u3KkvˍB     !c.:#>X iyI*W+kFغIHHȥZtmZצbΠ:/6 :A:]]]gvEa> @2pZJܘ#ҶO\xpaֵˈթrJz{{essSFGev~NKeGIHHHHc2|nV%mqHHH"`Y`vX<+h':qU,r}/:}25;5gYH sU_Fǟǚ:jds): 7KR0I3eUN8!f-~3,@$@$@$@$@Gu^gu,nZAy>:am3HHHEm]wA_yw\/@lY3)XUO顮#߭NL/mĂD#Ĝlف1˳HH _t;̩*2Qynv5W&sJCg6YN$@$@$8޼[:nMXl:*2݊:VVV +DL,]ZZ2jG}J$@p7,,#80/;X {֭6ޅ=)Hyd^݇%pnpì2wfov$]Ks8Ζ^{ ^TGV̝Mx4)k_>KGV ?q7||W u{p:J2mU$ӧ%eKkXZVޒ2Y7,UޑMEWD:B Hv@MÜY6_;m6vP:cL$@$@$@?CC&glivIϛu&V/} mCmGZ:XZh_+iR @, euyU %J.HeW3i)/B7Yӫ4NA60#"ΘZu V:*Srsz VU0Xwf+'SNL;x+[p]ؓ0[ҡ f~)oF8n{ӏ|YJ|_o>k3k;#o~Q,TKRS :?)R!Ay$IVФR[,]}>X Usb$@$p sn|Nټ`+_ϕ K[aen^\\i   K`#> 7M[Ygcƶ̍mڕk&!SSSbwӶ 7~95Qx` *fr;u3=QrKȖzVl=) W`C}NGp ׷[ghڂa6pBw^ؑʼniY5 ;32'3/2maC^Yӯ:ӨSfeQ) <tC?<È2]=QVVcL$@$@$Sh}X qeZǖcjVsu4NL,akvCuV*C$yچp.Qew$_ލxK oc}C2NɡL'hgjEM'woL*Y{nFƁeF42 :A(hzHZϝ2rl7Gۉ:ѷ D?e:OSHHx鎕h^Զqܴt\aL$@$@$t >8۵nimfMn× ֎ʸDtF:t-M7h_saϺ$%uHRe; ހ]f󘉪c)%%W%L]ojVr2VR͆Ҥ7t Izv J^yYĻټ @2d:23g*l{lW0྅]b! s tW]cY`[8 5y郭C;X"SY|צƇ,k2f?,#CŚbke^D'e2mZ%#uy0hò2+!˲n ҝ sg.?o꾙t&//w. |,`9OH Eɣ`: Xw`DF/öur\\ypҮ]X&.%žRvڴ7s;g|=!hsYVda 3<eKnې LesYV1s[Glo6=˦ljڏ}_/wX/F~|*[~+|AzzR{wyuWַPO̕Bn\8č-]zF2RWVVdemNkLwvֺ4Jk㤄:m3{sYz*e  h8Hm׀`-yq`nWW<,(m   G 3q!!l^Tl5~lmtƀuH`nm~iWY[i:Uclb <؟,fg1352)|03BߓWvF ˸J;Y Y\VX{4u^~Y_Y mټ Q%O# n$N>/o~U> 7?@'sge.;$Ղ|Nܟѻry/D}IϮ?4v:ù>\Yy뭗d -妎KޓA8lTVL#+9#:;?L=vL~ߐ>3vX}6YLW'y4F*;$-9ѻ1̪Svr0y+9-qZplWkr;ɧPZ؏gۿ|"pMՋc~MgLf׽گd{Kt7.ojTzI~Y;(+Q-=첄4ݭh@CXn/ݕ˷J7ߖ/, _}:SiGwvhv9/Q,7>\]1iCm\d+sB]e:S?5ye)ҁZo؈:;swPtztq .\8Wpby\Wпz[>8TFuyM˕_֢U6GO?Ƈm|o29.b݆S?|`XfƖvگN|'fui:'ݿ k_v<2t'+wĺQ7Xz}B?L }:PZӰM%ͮ@-9JyKTUݷ>qb>_J7ߴ'=,?U=PWXۦn|)~d M](|W2BU~& r_}T{,=gmG%G#*oMnseuZn=# 4sQk}z:={u1IgEi=q}kδ^޵J lԉ.X wXis8o\gޒ5*ߒ;dvC} Z~N>#oF,yfeqI~ᚙEUMg_~MR>sq@$@O,ocaynuҮvelc   ' {8rͫ7v:q6*wH]qmhY،j6оf > @!e;&Xy 0kk{K f'U,U@߆Y.P_,ƒXi3[klG6IY_暵:'T/^2yr59s[i~~^ݻ'CKx:㣮$@$D1}w,Ħ]@W>NHHH,[nW`CT:X2m~ؕu7%A\g!L*Tn6оf > @#tL%z1js^8tv(fbtƖGXM"4t0S5:F<87tNӃFM:; ǻqW&V^+5.ѧ!%g^D5xܤwKٽc)j1J7dNG  oC>ԙXqbyRh մNg\K7#30+eV[cB)1VT0?)݇w4Ƙ05[}_]S&' Z̮d|{G@#fFWZ1yGFG Nã+o'uV lOmGfG ˯~.^ ۆs,6_|y8tGa_j +=I :k;Ww o\*ъ3)wfvg7m,P*-_xC^zXi]N|/|!'>{T  '6Rq>aԘ;= }o+Ge4b: 7s/;YPgǵʞ7}w&S,neؤ3Ӵ}צj((}INv0tz\6+ajLh_\2)Yz0e}^~zo(qcGF{IN}Xq_Eqȁۓ9Z,/;X}d1nMN'4׿°==>T`+ޚeKeӰG7e>7VD*nOt,a8ޛ)ꭝ^~953S3r-|n)|^ϙwL  86t0n\[m#iv'r$@$@$@%Mry6fXllRf4jD閫woEՍʧ}QdO$Vz-HcC4t9RiZAV3ht޾Ȫ0t:% !^ͳ 0|m1uSd=xmQU"/-/sW }w 䗱6`ڢa(['JfVv0(|b :{`VWK26gdO|Yn?JIW0kejCS ,u^n ;fC֖<}[6qu 8"2r) w-MG?na=b&*C|40@2_%l>^cF+g?`v04o+~x ɀ]FzdP&aNښ:Tҷ 9^ V60 }{ U=‚ 5. Mm?o 1pǏ\Ba3m5$IOڍz{&h!L`3miwT2xB5T$NJ(ju&Y$\5zN`.r}~.qUt~TV=dpu`Yݖܦ<3R̎:9҃2V-@9U{Wf3OYgqVbTVCGg⺺{gyF>x 3ƮEYHE,  '̂ˡ?v]{/ n[$Q+ae;6%  'zMSVKۏh%}Rڵea,,hT,A'h7TusX+:erpTk 3cY?%C'.%d&6Og ݿ5/S}&=1lɔ-2+6e`t%%51 &nW& +tM?ʤM-x̾2?I \Rpf\l{Ɯ~KVe=:&CDR2; Gۀ,={Oe_Nez ޟ8*pt;jX~Ifx݃!o|g>HiIa<1-[W(GX,*{3&ٗ %Oܯ {חr߰)cͲkPPu9N~Am$amўgD_ HmrfܨZ?~7wNELSNܕɻ̕ijGmoOXNo#=)-Nɲ\FQӠ I]f?^,gkd2vJ[4m+}1+#*_"%D0{I ~Xrh2M,kz%-ql:jlJvij>5M)ܖev 3;:TySRYZԤvv$7:w&)m1gMVʴo~'ꑥgFZ˛;a6Գ~aqyA.UX~Dњ~UUܝ*ȅk8!$1kT^k%W0uw*@6aDZrw,mܹM$@$pT }6\9W[YyJcL$@$@$p Tꃂ nI䬌UOXZlL/uŒ! ,>rk=~|;Ql1KJr$@$#6%Ãe] K0 l mc? =Ez{2ܚõ+Ҩ:TA c+{G2mSRu4uGf1]:#ھ֝w5OC |p!j:#?%ran|gxY/qȅSůg͠-Ҫ3SxXR^p-3&t VSn,/.Iy~NWeQoWȘta‚cƹek l~9F_bjZݟ;>yˈ7űvݞY_Ҭ(m[+UgG3{gyR"󲭕a zށ^}rv{:hMMA{Z#60 Uzbiu{m=w@IDATUSMHwK*e8&ױڣ;oMpAr,.6*^pe=6?{{'[{;ӃPsaI{l9O!:/$s\0=2/Y)8RuYII!kwh.񚝗{S(/?GnwxmN `So4NcBg7Ey Te x"رc~yn͋DL&m   '@ȁO}p:6Lu׳](DEQj e6rM.թ YO$P/ˡ?(Y\\%~Xd~nNdffjAcx'SwOvfoL;^뱫RY7eEU8 xMy&>ofAy n3LE5zZwK{)tV>s벦?Ag`)%Z/̀P6QYg\Gm5̲q՟s[0lLq?Nn\c2l$Q5䍖ݝeiM5%*(eƀrDwmLڝ{]aUG.,fQеZ5q]&vˬJe]n|{ϗ-WnӾ푱8hy3Y^ " mCA oRrw8oZq gw:nlOJ 8udwr`:̱c+_<Jfڤǟ="lKa6:Âѧ=7LyQD='+.WA*&x1X4bAҍ,-ϩ%ykңGeziW^gv^p\oקܞS- . ʶ,EتX|)ћڲ[n-k??mHH _+V`ʴ+mv ,XGVk~<\vƮFf V :T}lmSeT.U:[h_HR @Rf|c{cǤ9vfຌAљk2#w_,g_|W*8j暽3?!x;Lᰥ >cR(ʅ>g9Wgߖ˧Y7ǔJӐw~_:ص5O3ܠ 7Q%RB^Hu٢*M?ZF2w3gsr`LN,{XIQCPkM=TsڿXw1t~J|`p<f,|"TzFτ)=^1M[yؒKy: ?u;̍5. cV"T}uw>4gw=MuglF:{M})=Q==M`ɮDv}dj>ix5$ 7ߘiڟ~+okPك&ݟ a vnw5f3 ]#Vh8G"㿌-tbUH/}oNȒ^û<έ>OiO 2xԴZ\A3'`i?eQYP筗>3)Ku,z,wOzJ6guV%xk٭4)SjuRL C>klZ?*mu2+c$2V6.n6XF$@$@$҂M[mmm~0<{~v'E:B^.|In^y邧dec_7Oǟ'dPZYP{]9}0c+b"1z\LnKUr28=ZN[dtfC&zbb~ ]nX#h(mQA7pmQe}8eÊ,b]y,7W*s2?LCO]lW 4HmKqynէͷqX+Lm:&  x GVԇ 6Vy6?*]KoX[qyCCCf钕$`6wڇיXTP]DH QB|?B.xz:"2xB~.wBv ],/6(.O1ud"3izwfc, j*}rz4GYȗy9ܨd}F*+ˏyi<*^7Aj7t-=6 O=S?08}۠VսAJ:|J;WV=42ۋwmI_w^fTDFFObKc{{GT͘~Wxtᅠ=qa!ܻo? ʍ>Fi;%'^}{W_{yѹҚl/>/}z^#9,ϻarl6NuW򥬪<-^\yyJu VTj;o&3f*> 2&lG׏ELZV:FMϿi,rMAIrWqӖ})odv}z|t+ѳ[ rrG23wdM80Us71Q,Dp(`)=4xM2OF]1pjp`gp:gʯ~cb Us2׵T1@;s3rpd邛`uz\MzY+¬Hw|IlU=6eqپNi\y5g6N ^kVۀ-3EK.Ϭ;uLM>Xy׫y{Cq*E/}y?}s`ifs4uD_y[)  c#6m~`nzwoh~0Ϛ`ll @vG&J [ϦmV-Ӵ&HyqJ} {rՁuX], #ZN8+Xk׻M\ ol:+2S2sS8&_nk%QFyeQt> 2G7cj:f*w%^b uWnyzS~+NF3㯾%t^.12sf|iTN]j3% Rt«w_QتAMh&U/%+ΣKBL<<-S~9}c=qͲIa:wnHFt~?3ڴR}#~)Av7e/^u ։i̸zuygoʈ~ߙ*?-?O׮AcrWgm?M+A~_!/^&mCg~%t>L\ݧ\_=]ّrKM/ AfMV`xTY=BfTfq x W TӐw}y86\q\^z}y矁3?`s+"l6{OSc9t0K1*>9yKC@\c'hkJzb`ћ>Ԡnf;;l $@$@- e6t=$D6)K$@$@$pt lj6nNRv[[]]k׮/~ UҠYetvV0Q;: KYX#XҨ_D}AmG^=z$ytPK٭Je z#_ڲl˭/fU޸qCN<皪\ʥ˲z Aaڦ5klܛB%/3UږՍ-Ic^\Kr!ds3tfY `$/̹;swlo{W:ZTF^Kn~;6Uped{g:zepPgdJX1[z %LBX1N2!f9mma=|; >ᯪ%:*M 3eޟc˂^Ǧ4Sn),mKU>n]'9JoEm),{X]*֭f1cjk]`y[8HHOv\FݴZg-e6n얹iW&*]| t6G@=!LsӪvٌOש{v@8Gµl#.d3e6ٯ➐-b f ddh|7>= LEo o#{/o a1סejK\Y<($2$@$@$@C҇`LT:L.N6hIH'K+X!'K绩|WiRGWՅ˛< $,ʹ{ȝ5=_kV+UaiE{G2j6c    aJlZkQi- ێʳ @ՑBB27/I:Xnu5HHy%G;.2ޫҊQxE#Ju)cw7?ܕUk\+8~I^ إ՞>L1 'i I8W6ʄzL\+4 E #+Q+2nZjr  pT_܋wba[/L,%(y9vؔ2tEvJ=NyC) IHHH.a 4}wtTCId2HHHsdCG&頾`n/]]]ݶNJJ,?R%(JwWt5qd׉\'vvJmI9p7d3dsmF8wPo&ߪϓs`%_;|#NK6\Zs󎯝ҎO%UL&+l`{tmKwe.|tR^V)'pn@COB;my0vzkg9 K vF>DCXDm+o`NbX`_}EK/TUG>T2(Y>إk WX }% Jۢ6օNdljsH̠ښ`,-,7_"zPgkOg_vX[Y9,8"1QgޑcV sdh` U~)r y&?Dilj a dxN[^`. GFb?Y6;kGkLR*dmmyX^Ҫ6&ĊjWh` K*=Iڢ ud@ nn`YE I!_erjXP}6*.&h'Xl;x6U-;LՃmڒ<믆ftr=ǟ1|XO2 teЅ/uGzcdozΧ}wOgwpN0os˿W_q8_bzQ'y;ݡOYcWO7UIFF>Yz}#KgݙqgMۘe)4V&s_-t?~|ub'i/T Dy3efͳgʚgI; O0_ j4kF@@4EI EDʢ,X_ӲmҬXJ z`F8{陕Ơ6Va yKX *,,}⟸Z;V_wYߺ_gR3,̎9Wpfp_qUo_?ůq?0_GӖj7{]Lg4cL"]#W3"5x7zY88yAse7&p\7}'" gpXv.[?y'#l:Tz&5z0u}??z+LbaF{I\۱==c{1(q<Q҅tt!Bw?H@).BH*PQ)H\[T/ÉDnn%+ ne52;A|=(}һԻAUK:ެ֌3*u|xB1xN:O! $?]y!РL* 5U='ij/ds JFZlrjJr0CJ eu[| ?N<# L{4{_uq!9D` %C--/ˈ'Ll-b#cz'?EWAh rЯ!K?l}_V`SlS4\ЏĞ |̖?~<,.s_>oHRZ7Բ k9ߏZR: ZRMY?],3`\Ṝ4[SA@ * Ͳ\势=fbղEEw@[ :͢Uܦi;$n/91 AlB#سG%K+-)O'\mm8Y"冏8YU,~Wl珆?WժJKeѧ&y[z{TXgLK1S^|ZE|[G!>EпCȁH66-i_þ" LkAӞn:ӧ+(g ̜tly%p 9U4TsV*b+.e0ڃLZwHnJƲa HpĆ?䴲s˩.b_?0[d'Q[G(_l̊ Yc.RV$?f=נV!|N1Vb#d}Rt"~gϳJ PA@ *< 'OEP*z+8~|{S cDrKNUjL1Eu~7A/thx])/;|\̿y4qwNeSng>}R}rq`P(](fV=![CęT>WE=>񼝥_3gGgLG>jկ*T*Q]aQ"T,~v3[K_Iut@{w |R!y6w zU-#?1 -ӏwȎc_YWU PA@ ?= Ra8#RdiM`g8N-zѸ Rk%V TI*- W(r0X6 v.~ _oV_~>?n+/t3:_Q'MbKc/%O?u9 Ӽ`5a)|Apb>}Y>ٗ ]ӓtV  w:F7Gvi.Ӿw6OB'~@>I~Wfr|I)̚*`_3&eY? S֪{!AC(yWw #)~;.zAT ?˕Z>UmU5hWҮ¼@vS>aY0Ec?Xd ZSsv`%3ԑjAHgW^ x-rdK^O 북FK\?1!{ &qciIW/_ |](H/ tnU$>w#?WH=.AlK8QCxͽ{ŗ)"yF]Rҥ!@gs4LXL^P 12߽oU?Dzr?=g?h7ªNr]-,ƺ&\u_b_9ѣG^ s?XH9[Jhv58<e$u {󅥞8/Y.t*T PA@,9Pn(6mHΩA=4'"+Lr=3UjЀIN]~<߻x!v7JY>The8gĉ9rX-Ua4q[\FKgG}\?b?>6n'OwÇ= _>}_,6|NB9r5Ҹ .+~L6//Ag D!fS|k_KGR'~zx!Eܟ#9F7kOO5 ZpNrz42 Awf$i Qx+=~bPXi6rӬe?Me{w-9;PwTYq_(6^\$m**T PA@ʄ#:Ѧ~ǿdNKY91 q 6/_SZ#iFIش֒Qg: Q%R|[*_͕pz% @9@?5i@,3W[{p)Lf럱{wX[= ?_{߷ѩoM5ӦUK:<,/S S=vֶ붵2/rʖٕ2 qjuvXYMM\e9u Dǿ*TXy1T(> LUh$˙>H/~*9fgdo@]{􏜥r_L||pzdǎiPYfiL EU w:at=Aua˟5ZjQ665G [Xv]/>BCzTу_Pł[F9*ԯμd̑?O܆ QY:?<}h`_t龜ŌG!_r".ϸ=kwXQXjܾЙWl0/۷7x\̍;0e|3 [wb5u g>c5󤷧Gw;[m imgr|ҾKfiCtQ ,',ǟ77۷ﲶU$'߸g׿:}v3.[{>Ҽcְ}:IP^_adD qdYFaF1=EItB8O]Jۻ4R<7fE|9}Փ ?җaֿQyU$(5;QE&-3߼**T PA@9J*GJ H_whpqFŬ: >,m45PM͌ؕŁ =N}vξ]˶}E)FPF?>YATj}y2u'?vu}%۱R2"7bir,-oTWMWn!;v[ڴ4ro#{-x[y7omvlupEnݺ}VMuu=C9\k ˮ_woN9xZ(?ldW.8E^,{{.;wC]/e7o߶i"FgɃ(:?l:!BT9˿ݻwdhvjQe.@ A/-@$n 2`_0 @&}%G .xW ttT+JȠ_~ jFb)J6}稰)Bqv5bGt 8Yjɠ+Bӌ?x=^ &4ʯ;2%{YgҍziE)"ɜ-{/.)+ΗB_}ҾRl]x{ S٨n9YfOP:'D#б^r&l``?aa9F!w_̸.^sರ,z5 ;^>5 (?NDK2htFsS~"AM@tON+MQ5{N}wT&*] T!=o([gY#GUiJ;́32-=+"F yaY3dQ[vzRk9. &ִLO ;K|ο:ol/ɑvu~޹>i{uTB @IDATa?XA9W>7eAi6@X/SL)ux e=e/>6:_BRE/%?*1d3kڞU̶!:+v{+j р-)~/J*1.8r#~Jq_. җSڷgcF۷wW͌%/:}|> @?lh8WQTKcGgGEj5CXgnC bn;ڽjݳv{}Sdpc8wP~h"}Y;C(?^')AN ].7<.d^~= X$$mH5Osı/=-{Wgn-3+iLN^$!ө _}J×M~lي5ZFZoi&B )T9E ~^/y Wf#u?wdj,659uR ?Y>T#-Lc a/dJKw m0TO>#H"O!&RN_r_3P ˽=?z Xq/ 3xᮞG֭[}&KCs&}Yg4uGhS4ρ~Vضmi0gC?8]jӳ?sAW7LxiJ؞={\$?eͤs'B1:txvGVL2RnX\;8ҘJ%4HIBO; VϬnnkvU3d?mmQ]C1uxcA4?tob ;ug,'B1eտ/iFq)/mVY6g/o[f#Կz=~ M^m K?,J;C9(K켲sܫ PA@ ~|{>$isfd%Ո"cLMUֵVuxw S|=Fǐ8:ʝW!/>Y N}w{ׅQUZiF_*>Ȧ XfkG/?4}]C*oYvnbPJjm~z5G:amNkmp[h_ Ϊ"Z=?K&G Ep:"6W[oZ5qʅJPjG<1|̙au"2Ϥ&/ر6?:4xp`T>>J3bH>fzSr"ԍߴӛX^S:Nr9tEB攄` {S;qgL߅y} Ug_ܰ~ݐЫ:;0;ٲ>}u/Zimjx5^m+e J(_{_mW/ـ9b\:7s纝Wcn.SĴWOhf[g;yt{>q- v󐰽8_} ? Mʖ3uE!. dڟ"Z$t;eZ|OY \zzÕ!?+CLVm_/Se?>TB *T PA@6:5 MF>$/8FweiYNZR4O :hDgh'4!81½{0غvu(t3ҌQR*(8EG)[*`VvJx'G[o3|̷~`7>e? R}>9v~۳CK^Ѫߩ[w޳#BI@1a/~`kdN:tGй|]7aƎvp6[w5mrЎQxf1>}[bm}n]yo;G~޻mӗmHf޺޸ *kظCKvj-O ;{v?eWԕ{biQչj2_<%Lga&$ oA7:b{ ϛM ?6!Vr7o-MjFN.ӗV ҡaɮ/7HșBG EQ\cSl$ɶPe@' W7ږ쭳?m.=;qﶦI2O߽ag)j{z~=/W?7>o:WSTr}-tB\$ سU9{WPxº5Hќ?1y~]gmGy`IK/ߢV6n]Tف'j R n;˳OcI󶷭nM\*(7 Ʃ߾ިò? amZ{z([lů#}AK3|;>tU߿o'?=!Xk'*CtS !`~C)r2ɏܸur7|Jb׿4[_5ƇyoHD̑;~ ߘz-ڵBhi{O5AB]s犙~4;"PWeoiE_{*xA}X¥xV-T_Ѭ^fQB̂ g+A&™Cs &Wb a" ]s-P;|oRH;ɿ,_t@?2@KSa Qղd/%eL;0ϦO>No!wRmʶvvz6!794_SB@IQ-x/G՚]ٹKJ `^ Jv#|O< %:~be]@X @_?1N׽x_P |wC644[hf.h>dӇrg_BzMs|Vl3궍kV-H[ZZm1'4* ,=44yI?`Iy>04ltSֵͪa3vD 'ƹbvLC񙠞7)cn:_yL{]toxY־~ [>7q'%Pc|WgWU PA@ JE`Y%Cr|y*:3RwVWtM,JY.T[DvVM/@&/tH?/]vu{guib:_=ܰN@_">Tz^^(O~'߹vYUS-sR92*~f^ :ɟniЋm B{=ٝk{Ƿhr!e=W0_3wL͛Jl=Y "[[k Illj \WL1_<+ou)91Cmʫ[ŞQTΝ־ٳKRܵc@5j6ɾ{/aLo`X$ϿoӺ-2sOvC?eOGOY߱ _e&Ya"gfB7ۢ~cJ#VdV?[X?>2j*@#;!:1OpM*[zB >Pu?޽I6ol kwOKyϞs>?w}eūM-W~ahSC7L_ĝ?) wWiVByN\bpج}vkI kۖj\Dsnf†Q|baֲ]Khq;9|www,?-!?-.ɚ{WAKX sMxN4 }Sò3,`ӿ2?{KAAo{:y4QIKy݆W^ZLK(K3t &b%{>쑖u jJߏ(y޴8NƑpgnJa~Vۭ1ĄkptԦ؟{fSO_:!~oяq;POdJFe'r0lA_?/jbY%ISt:lb,s_){9_> Sɯ _Gyu~𿱫!E "<ÀNǿ G6U&ӡefF>zJTi?/\733%%Y/A  fiHE+K^,fiZ=X On ;MZ1}l[p _!K#-a&}>);H/U!g^zYm كY \ļ,?OfxVF[٬~|j}!Lon[zF!}B5f꿛60LEzuumϬBlott&&mtTSEsL0^taЋ=Sqp?2%/@QtڃjWDžL:my/},ua?Grvft|DTT PA@ "Pd_MYƃBy\pUsGuk n*qc նbVK:499F(<5Ri/إKhIn91˽oO$UTy LqPLpb1BKVLG |V#sj;'ߦJ_ckv>k$ަe޲#oduQEUJS Klg^cξS!z~R }v{UngT5I< kGbK-=PAPzu+,jxM;n|̞ڢ=j${J[+nchwm!a_Z;Ur\HI㶿>ZFc_ubB(χ];y+r6kdH2.(RֵYwwޗKihD"!u` w<~AZB|CO<^_r tkxizypI&'Gް5`b??QԌH=3KXde>>h%vF˶e|adoϨTdԾ/t(?S#a_6O$VaJ8:?|_qȳ'W/ J)F!_kM!00FVs?9}t4wT+k^RcvN!gr]۟˯Xyw[X[?_'l[=~RsyMOؗewo"S)h-!hWG =[yg_Y%r *T #MFvu/;q'׽9Ψ7`/Qx[k7.Nw>N7vh'NU4.<8^vto9}a~|-[6ȗ)nїjjf''rCR:b:+0^ NiJm}Z dumy:>gu C\jvI~@ . Gl]F[4+ñoly}`If+{wlLYˣ2B_2k)>3C_yz_֍avn9e}s/ dumwYG+COxߘ^O2fpHoٰ\sG&[5%lXk4{6>zf{w0PUE1$]Z~Bbm n/ 6aH gaFֵ&lp6,unڠ=Ŝzeo?2s)U^]}Sլ}ۭJ]ʟIKa ' "хJqO*[9 /OҚV 4U {Q]XĊgO%c@?_`*Qw+|CK1z'i`+.i{[ggd3پ 'B3.OW/п27i 埁i-q5cOϹO{6md۵T28Me';/iGT7=aCT.=~L]!SJIt3޿ ,WS3ғFN+ĸwO11Cuf?W5c&"R2Dr8+P̱/lOu)*[E$+m:>$c`tAv{7^Ӈ* ~%hX߅/eH OԄM* v5?V|/ֿ$I׿ҟ%c']%]Fs/? 1c=/ݎUg=H%(dy~e%^tN@j`ȍO/?nTxg9ߗCR僧F|fiO V[u^~yB?H9郤0$q7(E49@ p!\+?0>c[ 9I_bmorNzQcz]jlu mlGLbnQOO3亗r^A@ *T(r9:͎_n88xt3CrNSjG_6=jð'Mp59B Vڵnsi߻o7{+a[4gN#]qRn(W~o܈>C:AJ5,]~ ~ .$73cƴܝeiϫ,+lf'74x814`k7[q-g\K]2c7lȏ1--IQZM @!xp_}u|=4$^;q{D *F vEUO_*4H:>r63@ZV٨.;K3ho%I&'keKe$?$ I?ȵP~!#ϊ(8|VCXmDx;$mbXSDX&7`#sl6--Z3J). \WRZmUtPdgGOW͈<Ȑty?^hMG=k_T..>"hA砛;K=IWQ@n^x޻N.{q&-x/Tw}8Ufap;R@z:-Aw_INIC~J-?ywAyPRtC~mD3Ic!Gw.<׏O!ܜ׿̛ de.J^Mսq?t?iO/.e_5-_JC f! zы\2ڟIFhaaOj_=2)g D3h#HMf7/~/S%OHE饗lleIcK/[sK6/xhЎN˻}_П:%cpdОȿ{ꝵ`ܹ voH7]͛6nBg/NO,/ˑrxP PA@  pJ /%q(1 @8=w#xM--b]̆Nt;ywfS ޫ|V9.3`ϮZ|V͛rRu{}G٣%/o\^)w t(иB 4AL3gy5KOJC6EyoﴽqmFͳ{/1VVjĠ LB H} ([v[?tFćiy_7͚L6I#4a;|f(2]H#`.?PbL~~ImT_CuԌF'GԿx)d9Sp3Вb+Wc%}/n]ϥw:|8(|q5P@~It=Z~0)v¾ 2ϙAe>goa G ҉dMYHTZMФ9GTX?/_:ח@ V{][CZֱiI;%Y3{tMr{_ GEwmժU2s/؈63ggt}%ZR(# 6K'$Af}v.7їwJ$.3/H_>/g{TavpA=)TQ>3m?(}){cx!qp#'?йidxϳr%"q=?ı7ٴ]Ci[ۿa ~=mœ 4"]sYIHZ/P1R?Fqe|ũu֧1}ʼn$ v_xR?IKy|:Vz !\)۶m]r5O{8 1zH~b}cQM?[~?σl;oމC"TZ_+d{PSfO^_fy= ~g5S}$ed^̸(П/.֣8HڳLGhni]8mڴتل6BvU z?Q_oZІF[UMoNݖ3ҩ2*b TDWMESRWl 0v7Ë7,1̱A`ʏ}hb㶿ݾsF[!)ϞV'D˿|эg9H?Ѕ:[/z;^sRfVQ53$2eO*T> ¤WgcNؐONh/U%~е_taP":3$.3/܏gq#"RgeP>F7un oWfmo׭ꈛn&H{<~_:JT_Y9t@\4E0PH9OX^н+\*}O4 G]ȮN-@}vƎMtv ^`M R3SE+e?n z>c7GRc Q9'n6ڪ!Ou".?2<]`I9sտyg:=^q/NCeo)_\ |?a} QmG&m gs bZ B7OGUc#ZcjgKGZ^KGS^MP"~Ć `{D>Ǭ9٩>RܬfJtsSrB?:èK8Z.pKiIz;@rVWơ+SyGy4~꠽Wp%'򃋬 ȥd s`V?{4ӯgN53N>e}}jD?'Yw_ɰx _Z{WkɡCOm݆v{!r%o?`I9x/Q~?^ (.9/G==<>C\?/±1#MOeMKٟkTj^cwlcƊW׿QΧ~_s"c%Z9L;Ҏ_,mSXFnJ3[bOꃊGUoIL _8}_5f)fkC<˟ {W5cEҔ>om{}kӦM/ig ?*u 8' R:A8zR^Ka7 qI87R zQB$C\ي9]==Gxg>\2/slk&]+^!w[3U/˿R,xl`Sk'z& vEy泴GeO93p:4C}>zDGvtE'?<>bPxR(J *T PA|xFV<7,Pt8$ QDƞthBQtnπoDĒ; 5,U:}1;+1^eVK Ȱmzl 0uHϝ 7֮cHA֤k ؙٝ?oh+7lFhJ_O?؁Ёl\3ww.mFGKe6m1-I5fQ`ifu3֛v~Lo-ۭ].&ڵ#lH즧lЊ7p݊ytw>|[vg&kOO6b^:}<܌\ vQ&{}v;}ӪnU:=% Ggun^rO c=RN_|K{uR3^.㠴''&ØeX^@lc?3}`JjXVCoQ {Feؒo渺zeC?~|`f;I?#cS~ jmj0z1QZ&_N|mC&}pWß4T(?la>Ok'(U4}: '錉.2| y_1]bKj#sb}s[]skVn7ٱLi}ЗjgUZ`K fi ]YjރNg1*mƛ#k"|!t٣615a_;H +==! wa'֬^c_7?i"ʔ?M\t腸Zܩ PA@ *#w~4}vEoں|h'{5pML'lݎls]{>_nEZ.ɗ9;y ߸Xu`uv,yԃ;YQov̊˃v[Kz<ק=6`n:z! sEgk 58aD;͉;vsJWn>Qo>x׮߼jo]&¿;\,B͗wA+ 'C폴.ޛ٣qS#YPhvLҽf5K)yǀJJKxv[)<{hMGw؇w~eUL<\ÒO{\5^z;lug=wVֲvmmjYK?f&V׋lvCe`}&{/ d49jAKz޲w( =fc'T~룽!Ɋ\#(1_LI6wNzg͠Aՠ}o^:$X雪<b_d1hR%,'AJVFהTw /Pc-. @IDAT]'/Z @`TCYJ#:|}}?7GQ=hb)ΉY1^R`P3XFC3;q/ g_Kg'[]9Qm6Ċ5c) j|xm ^ ::|r=*s^7ݠ9i.3֬iZJX-sΥ T;("/gU׿ ֢ĮB}s_׿#aX7 \쭗_q.?4Rٟ,,)-'^'?jXn(:E=H9ub֩!Y,S~5l&SY*!cc;|).SCՒ5 VU_KѰӗ .AAŸ"UYxnG4¼O$?ZъڣMt'*@+xMW} YOݶjk]VtH)>=$GFLn;s;ĶCG׵p٨enKK_/˭ _LwF ˏhUҬɊ7=AKX*f!uo:yil "Ql?Sb^|cnEK7Qs JY>H`Ʈ׮Yeߚ_|w#jsO.QuB$S,_\ChRbv(~{|ð? /앹Ye#|__f7or@$:ۯٜ_1_l M!0s祗^. ?1ރʧ{E7 ܹ *u"S 8f!=s.QKR.,]9OtK#aϞH\c%9{Nd˧#ORwM{Hh5%f_gϝ-(S~Wx: 7R{#Co\_\8K_'c/[:1fޔDU(svc;7NhG 'lj/ÅGQ\]qG#;T,S{[ zʤlV'"4=,=w&GJow'PDF&mѻ;vy=O¯ #*S]Òe'Rj?s۵k|faP],\qrϼQv j, tv4Ȕ=l??\_E3ٿ8f'̆] -AجަF@x$S~ ~^A-_0FGQftwy_`/MTzBӉ/:BFr?FJ32_`p:|2E <^%%)ߧSzzNT9}<6?E~?A,=t!I\}yw3?TNӁ| yHi-7sU/zgo2.铪@8 )*QKs9_ܐEF̻leH9Qy,(x]0E.AĂ6ʼntK]tW NAD?ёjP3 TfȮᵠ_ͼ%lme3/?5YQtVN>aG/{ _@_BtuP&}&f֭si+jZ޵'}ВrµhAȸ#*3!Hs!_lۿ- Z姂@ *T PA Y ;$7r6y+к?- %Y 7T1izӨWo~N__zd~IY*¡UXg.u )7, Jtc%a  Y+Tx665#~L+'C;?)pM[wJH?ovFv8+hn'O/²$_Ofv$5ePuD6]_/k_Ѭ"~2$LY B38 ~$ ^?y_" ;%Y(!DžuC Nigflx:_'6b: -Ҧ#q ,*oG'DOXmbrBǜzw rL{}$/][yg*C/|}3̌“vﮮ`n'TX/YG+,ZT<靂Ee+uyW 1HI ~ESHH Kx%f.$C9ki=w,>|磿P O('u 2LD-7d׿SglbPj֚h $We3mFuvzVﯰAdӻg:*y)kJ#]Rq];emkuWĆiQJw}7! Aw&y̜9v-xi c n.Rх:Y*3\t:uQ!_W& fB@ !ֽ$:(k+H&Jie&=g:׼|CP7WJ3+Nw^,Hwl٥[QDC~NK#|/}Kun%QI1bj\m3˗)R9NvVx%?Wj %gMK?|֭N^-,+xJ=hnrh0kƿ_,pB~]KAP ԃo\|r ~׏̦,;*B48l: 6b&5?:%秀_gxB zaIx%^TbBQFȘ h Y*<5ۏ8W=1𕫥{R4Y~_FV}ZEtɺWلu#_'[wMIIla;Bm5#jhLªib?_|kg&`hOM-0//l{/M>&]P壟QK\գ~lWN~eDɮ?^,^KCw\&ݻqa?  0jV]Xe%t7>XJ?i?޳<"G(fl7"%c5d(ЃTۿsW G% ៹kU?↏b|ױq *lXu=%k}!ku ŋ >z\oFqCTYQpxM]2*^ 6KG=XpR-&%>;JKpX: ~u!Ak RYIѲŋ6 xlj?&O6m)ykYSt?t@=kgj}]\l.;`ع˿%:>|wuilƯGeC"V3tw9Lp. Lm"Q95։Lo55W \K*Yu+33o>kW uӽfiPG:hN X,M%_MvV^7 Cb3JmBR-ZhV.j?> aQ?U8[?kS0 Ej?+O:+[VbVH'3Ü#{LdYV?3Jtzi40b<<,_q\$B<'J:&.-LJߛ6mR{?C,da<(+j$?~E =˗KZyA `2<'aU1Kʂ2H?c׍iqɧ6?RmexO+U)7zRAc݊_\Ql,ӄvՒC;PkpB]WUS~i&T,2,`㷼`# xI^|?VCKJ ɣ7p oҸY@@ 7MzO]EհQ#Le.*]}9L\:IċTsFzatd_-In6i{2TiԌZ8)LtLqzL[)a}S?l?^;Y|2a*wXQQ33ꟍqkJmuV(X*$eהa#:F!XuՂz |ߊwf$`N.2,-Ţ\ ( Od~Dvv<0߄u5ym?n)LA-wb\I5h;Z)c=(۸s,qʯL+?Psae/֪@̏g5d?N;֡W]^%?xƫHW:Zj K?+ۿ&?kAòwM %H GT? n}(ޠ7 &!KlUsjsWŸ,?~ TWkJ\ wYH @@ MzAJ)+f%/q3Qn5'NSLXi븫?w4j/s?AV Zk1Wo?#\K_?u+1xu_c״i5rS!k p߭CxMb0G0rYٸ:cZQ@EX kR}Ir^!'WǟZmou@ v]}mqL?ßWt^DTuL2>Y;,g͚%|ҭΆ<` _gmqJ[¹R.=I+12^RmИ$F=$hy_w5uj:?_M6ĊB}J ZM _ksP$KVlk6W羿.B=M?_wM!.%xzoȳ0a'֭_/$9@Sȼkk o}$dv濅C;A>}5{b`͵_P/K/1iU3o?ˮR,_w]qR8Y[}eqdmхG#l?ng/T'8u{OW>yU4-xj @@ }~'3NcW= R^>h/5َ+>~7koĽ6)k]˚U?&X˫6WCmo]/UJaMK^j[x A<^[6@@ 1o #noYׂ/~ygiQbGmp_MZݡ^ :dе& @@ X]V/ۯ]JO: @@ @@`M!I6/@@ D-d1V@@ @@ @@ O4.@@ @@ @@ 1a!+"@@ @@ @@ O YS]@@ @@ Ԍ@˩G7]JtIp@@ @@ H$׾ ! @d՜R.]@@ @@ @@ v!~X@@ @@ @@ !+V# e˖/???OIEK,/^EE?sO?o…я?-X ?~Ũᅬ͛}whܹѷ~͙3'oٳgG_uW_E3gΌ&O5 Oǭ鉞[\<* $(%Hcc~i]%Nͼo$ȗ+'/U5Ϗ<ɤcOMe@urNNKiɟE]]L^f4t:r꘨C%dbZ%HC1+޷r Ŀq'V&S!-et$ELi ⌵LxU#=w2㸙k0Ei'Tc#j="}\HWQeҢcNč{^_ν I2qIzgeYr)DK#~O-sd'_wژ &ABF[V>ljw%|V`=ZX`;VY^f}p^l5}IPrƆo̬]5dG SI\oGF 9, }qҽ D,~b獍:BE{j Lfsݴ>?R%Źɟ2!ȟt~G+ξ7-_eJsK<7gq9N~RNU.f/1&(;?[xO@ ^/?%{=/ƺRO'jf/?)[??5vDld:Q8e4 歁d y^~g^x|6A:6 (#ʁ)H s+/QoŁmBdP6Glk>ʗxNu2Wb,TrD0˟j=֞'gܷHo/Y?EğO{|1#ϒy<R_ |ƴ|vryijU/ae.5_|j ]=15.B#}DrY=6VJgqu`ז* 5.!Cus0 ffϞs5 p89ps=88GĹ"?o9$%y%?9'?TQQQ%%%oʕQWZZ%eeeQ_y9]͟:@@ Xod!%ی S9y2wTn!#$~es^1 WqϐL2!F s3=}bUf'-ɩOm;D(d~*a1d6=YGai~d* ɞG,+G4eBs/.g$xʇc+=QnnQ(6hD>V Ic)U$$kseR?>B$7&p D=F:6Fo'qSU/:Z2-n~K{ $KJF_5-} L OwZ ߋ8buGZ3˦2^wҒodNYw,gT޸2sXUt5ۘ`yU|(g IwA\i9$_F*JƖ򋧍󾦚lv1'^7iÝx! cLTzNq:B_p=kC{ə_.knWXLi۫/yBId|< 3qGh*!s@sCO{ Sc؞x.?F4M o "{eG^2Y,ػ{f{V̄<~jO@XDY;Yb)H^ m[\5m˘i꺎?E *bLSε:VZI379l`BQ>c:BXeʼJjZp5dG59&N#/82iZdꬰϧTo?Z g z4zi#F^}ɪY>D^3Z'%yʥ0ն /cf .?UI^v\Q |܄T wjGg;.S^Y %Q\'7Uί'OSL>y.R|FX+-6VXlٹ!1&͡ WRVfX+gÿZ6o#a@@ ~'[7aѭNXtUވg厂R`P1 S:?xKil>յ_5pW_,QqQݕ'UVS|J ^֔;S(^̣gF?24efXCeD`_zDTptR~{-!EZ.eQIɭFWaTMfZ[|zT z5g2"Ը ۍ:]mS8^CMt44]'mh2w+μ|8ہmB'OU6|Y@2(U_mOkR_oꟗy(;OvOy?%~vHG#R9}z)]dGKo$i8Ԉg8Q3W?>iا5᯦'WrtiC7HJ\܀Gn-Dc2li_:䕱+H(n#]d'h+&/F&842h8pc;D#v?R43SM 4[fySER>^u?Y"eY_e3PoGTue?:㊘OJ"`y񔉊j::RZmwG z! F><ceDZӾM˧.dg!Z_Y>WSE/+iKN6V2T0М\6Qؖ#:iAE )ۢC)Gjv{w2lR)q8Qa+/W7 Cہ$U[? xE\  qWQz/WnC%7y4Y)./g/M-0@~ C_j2}w#LΙ*#wJzI˷ΖDdf[H`4"鵵q0Neᱪm<%W<\6龿Ȏ9+lan,(?ngO'FMuRe=vt֭)ᬟ8 >&<9%رgw4v0'C 뜇ߗG<#'DzI@e@ޢ/(R ȉ9 57yhvaOucΖݮQ)*RDrU|dZ\bp%u/`yhq؄NX`PM]RGRK)PMS ڠA%=8(CVfz_q2O?y#Yx YNKOϽ!C Lis3rՃLşo=IrxPMq &["[ApC^3YԷ"і2/S1a$vS iVkt\-)1\%\͞,(ҵƥ;ΒKEӹs\x~mY kJw d@xN>~2zʃ}4x?3ʃ7 ?)^Q@J CP?Q&y}f FxͿQ3/|YHn2cS!y䭫ex+²BD{3V1oOajFFj ䷒n6uie}u=swk/g^'~ _W(gH~-z'>3Co>eUW{2l#X~ bMP-j2UXԩ|%Gv]?Z+_y'!3‬*O$:ocEBDqٙUxu<3eGnʿtXayo֝w<ݗc*SorGx|26 6%ms^Յҩ^ôNKn?Pp9~L}%?P2ڏvy!f+~idwz~VX uRsym_c@ŝ,,u*H9e\{sYgORJQ_z,k].3_.|F \hs)^{x('G`;u\ݦd>˟ 1Zį땣&zATgZ>ă2q ȫ;H[N9[Z! z̖ϑW9vf8)ߎDE>)7Y~L!6*_OA6@IDATYA;NFq>`I-&-bM&Z6beD˧gJ=_QHǓGf|*h2!o_Y ὀ71ƞot:DL?IqGdso\u81"w'WMJW3f OwɃ'4>A]6Z4k!ynX|=Q-Tt"t8ߏMA7e\ss9t.XR\IއpYuVmjdN,zSܤUH?S!5I_9Nd_>W^vʖ^6 U]>⟳[_E>7E6j`M1NC23P@!}M ' Gt)}*4i4Iǚ6wk&<6Ÿd S)ηKxn',r^{u*˷g ]O*3" Z IU)q|\;L׿2Ǖe*:To LNʍ\o^-{մV7k-{Y&o򩊖ƫʷDJ$]zz+߷8 e2+]N/kf%/#\*'CVZrSOWA6^výe€GQc<8 UVN} Q`FՈ?wzrfGL_^fV_#e Weŏkޔ.g^08il o]+;'T 9ʴAۙϲuE}8>Mbj\*FM)BZyh?G>!SS)yo䗟W!+;h?,^~3rBPמ2ޭ^tܼErWwF=]+yǷדL!Gǫ3HFH2x̀XY>92,<=e2╜C2V|NH?m\@_IӵJ|󋪖t%4TowљNWVMWgW:n_Uݽ.WhTչ?~ϗ/GXo2,؆]Hֿ5 1q1 #%L.˄$JƼ|rʇ1c=/O݋ )>uu̝rLsu9}v 뿍 ^>.^ Y|V>xnOS_!CPt(^M :߀$zI& `Iv##V;\ {s4BX'bZO(cDnSUwq'ў(0'U_~T*q Q-!*ʙ2#VWx'zjӍ%?{_K|{/y V{"iiuiԶA"Xk ?@6pr\w28G˕,#)ي| b}ꆨB>:d-1=HtÈ1D^:vMr(7:Ǜ.q0N̍#2T{=6!@@ XX=.xE=.:n¢5'& t3V=sJgʚ}irΘZq1Yn&|H>9Ax았M~sASo]67T]@9N&Sk:@}M:uDUbtܹx F.G6qGd(<$]5@?0z "+^\2Ik\妎V)R~^:Q2*Y`&~"g^Tc?EZ~@Rh+(/Ϗb)vh M'.(«$cʂeHhQ+~PsI+y47Iν/XCBJzHfC2V忊[How{a9v,4fԱFT;A ~ՏrX,Y*..O<DW4v,?MՔ\8pG./@2㩠./&L_-)SP)\s}7o ߝ .gԓ7>cAO{ Ml)V OB뿫:: ƙg /M3e>'EˤE!?F6p\U8CesFv"6--'F5/']e"h9]m][L^\$?PѨer6:! 4*9~l:gƸQK)'*ʄڨrl9l(r2LlUVkvZdfReTx}}e.N_x<{>kCR7; Iix-k\MG=Ke 2hlF&Y$"|hnLohPnzv |4?=[<{{6{b6!n_KI8p=}'D ^~ٴrzҮlYHgўMvlOXOlO7PoƨX䘒}/`>=O](:ob=5(R3RoHDcV &(?7 ~y`QN1:cDܵߤX1=3^#k/qcUT_-tk03?3 DN 3؊bs bO%(2:I̯ )pb鐕'F |l\9trcѴ+[ʂk}<6V.؉ 3f T-PUv7p](+ 5ڏv䲝A5Aw4#>ոQ)u'IS<3毌Lx*v(#"."ԟVGRdɊ#e>ö?}T.=ថOq`[gv'#/q)x>[zaHʥg#KyQWY X"[Q5L>P N긡u)em*Ȏ<49 qcWNUL%gԷq q l3%tK/'O?K/SG;?:xH~Fo ?o_u}7L=q,it[ɝrVs%×zE&g&=T.E4ń&(\E=%q4P4%xR _W9#3P?|9 OIP,~A1[KO?@1/ A- 孉'Q ?f2r2B3m㠒^\Ť˲) ج.yYCodU?#tLpR'cX}W]ۯBI[*o=9fǴm\ZldSiś}Y2dq$n89qOKM@4e 7iD Ὰ߰Qr?ɸ X̅|3k4"ܓ 'ʓI7_r'&A|+|^/EM&/lj|궓GnZqN1YX=A!ݤ(_N?V*J_g T=>k/;Oaf_3"Ywe'3 [5m.-7H6|ٰqK"yT5#'2 x("Ǟ|΍ %=BږM#{$+bo\,S6i/G+?' )zzOxe#:MR~^QqdeM6L)O bx cOρASfZ beHǘ lgM@M_,'K=7֧6h.Y%֍kX7LuEnm_K T7n.,cgZ MSb~j{9($0r'<'O;LS*XPHmۮx;*z$yrީ݈ٖwoϥt35ٯ8hzlz4n-K_X %5^>Q2=yQ^֡Q*֎?KAA@Pq6o+VbaED5X2!ǹƚqn*/xH}ye^]o*]OyB)__7_cC&SZZ/p294g Ć?ex#H $~ Q Maj5g[/~s$^ v'W0 )Q73 ݧZ(qE0r0#q~$A@ d}/s耩FE5gas.CH8?/r830xLGtff XSzɘ\"+1dƝwZNRnpPAo,Af{G^<;ɧ0Ld=˫?IH4~!63)Q.*B~GVH A=Ipye \ْ `q)Nۑ-3d2W- {tjHk4b,кl|ӿ,=J]!;_> ?ʫhi׌ _ M_:]DՀ{tw<,fטJR!#)|.ɢ>PXpyc H$>ou.B$ȹnxe/o&.sL"U9HۣeςιsJU nwƓfuNGj͆2 ʶ2'g2!1جeu8x9ԛq`t⏲R!p׿ѾzD񘄚|{#ය_lGX>Tf#9T ;uBK_KvAWT 55{h&'AW#Ajq%[BZ|\:n9wz|Ftt i50M9BjdJyr)I0JgTIlg^m/qр<~j=I*֛Kb8׬i&oݪRQ&k BOpSA׿.#d QZ e@4|'Fsx ӑ7ToP˛'?NGI '4'2E)No,??'83T)(-24a#%M}H7Ɖ1r3I&?-|x_ϕ&fCex:̙+TQ0& Z ퟩO4P x7^AFY o5Se|]E>so&{%"rG;* ]7gsHx-Ue}:a?4]pd2uQ䙑j^ZH{{&uUeRX .,;l|g,֚d-=,J^y47>{M;xX8FnF8O7?i\3ΙAHֈ @@ @%1,PNLC;%5v x]ߖq'i$v`$ʋ(1 ںיttv#916il.2t}ZJt"ɽ|Ow6j4Xxt Ա'lZw g۠ix9G;4@8*{[ ȨeXv>Rkm!,6MYHZ~ݮ3E 3~'Xıcӛ[;4ZH(]ӱ~ʏl촉e|z—QD~^X~GqȂ?ϋȜ)oe2HNR>Neb?U}|u>[ #O>MXz]s-SjbX⮮7̌: WtÇ}H=r )Z#KCX1ԧ^>Ģ?@0xgftu)O)X)oS"Yux*ux<}:^LE#J¡xĀ=]^' `$\l?ŤP-AiiY:uo[#iDnj3'B%Xң$ٞ|xeՂ]-9B/9C),DS,zy'"X'#I5YՖɟ!x/pzO"):cK2y1sPJ fʨw-a]~,V: FGqsQCg>3"lWr]S!C fƆ#DZM|IGq,yZ-(uyMII8*䯁LaԀj_E*S8G$SX%4ʲd$ٳ SHZ4\\ L߫@?CN5n"3c<ɧP|m_F,C|])zgL'x/ 3ω7*-mxh݂T_>/P&HW2XRQ~oe_B_uiA9|U^sdZQi'?9.O?}w2U]p@%鹷 wʈs< ~~wfH˷C{5ۯv) 'Y˯#f{.qI~sdnxZ%gY45o.G]I:RR#GJǫ'sJRI n'R"6>vl(G#dk^R<4*S,˩W#P\)U 6q:kRgSr'z7K rϋg)ٹs`y7C;hAgDR~w2q‡x :K{ݳqcrVMr{$EJɗ%qc/ϾjeG'ψ6j0"yq~cjܸ)g%'uex'Qu)^D*ۿ쳇#H?bL.i@Px4A/O"Ug, x<ԤHd7~gM(}*D+?ˎXOUY)?;Q ,xt+E*ʧĒ?rLn/S{6qu46E4c,da!=ɍlye<5lquTi֨hhWδh!-[dO[#<;U'nRANa$|XL;GBOǭ5|`".+i^ptnZ%*^'8+dg=/E^Gb\(?wcOH?gLFL+|N=TT{U w' zJ%qP]Gu I Y'Zbz}ӦdEdocqvĶPxT-BBcTKe2,< iM'Zymxǻ]wWֻe/w#!<}@ɦzGZ{j1v-؞(wY#߶2Lc wpcŋyo /!7 ꒮<4D,ϝ].%g2V<rvp YiLj/=bO0pvT0)cQnjdU:QFW0AU=7g`Z1U˧N3c&9}+ISjOdU,KipP+sHҳr8|[81}@?||LrٰL>||&Ӯ54$ǟ,_ޖW.9rŷ95"qYW9}ܷ؏vrF@QCnQA~'ShSuvQ_V (kWUk98u1i?$:uԈ9:nH|_@+k;}!e-T~~a-_g鷄Ȧ.hjceA5ˆWFʁṃ>>q옸L"B˓q@Y@27ƒ?MWK|Ur5e'ij8ȷ#7ԽΕϗgmz9Gtf1sZȠC5<5&/ӆw|WݮQg?/0VN"< U0I.t{s+SoD$ v(X5CMbo?YT/B^W?xC6mburAu'+ @@ ;@`]Ȫ 4{3^zػ]bڍ BF@pǠfGx;0ޗw~GwgdnҨPǽg\z4k7TLby2cvE%uT^wy>To"L~?A'g^rPZRS,;Yf~혁.QNΞ"o|`:띷 ~@. Dy\NrgxѲ䔟buNp%HU+" S[Cdͤ?PT:r58 O+E ȯVNݝ$ ( i߶r!;~𻰼7 Q9voj8sݏr>~{b+e_%+ec+s.\?6'^͙$Ӯo.}+$GFBI[,aXR8m\5/UYSQDJL>rd\?IyB57X~TG?'+.FK\!o|Ok̪ pCZZ9 Dސapz9:Vbntܣ~ۅe,x۸Jl9E @O*W-\B:yWhf‹Y3c}x]RcQ-m͒2S|, 6ؒv"2vip}"=jϓ;_ Cl?eX~gY߲NdɷI'.Tr1_cX"p}bH)!SIJjg!)X]H| "4Fn?rE^,#hgIKn2"ѥce;9pM'|;㹎cLgR<_ܲz#LtWL30JXW_cNhs +_Νҡ#l'P7SvD;c6l~Dz+g X3kLy?>)%)A>cyl[0,Rgȧh,>^?A6+Qˌūa yeW0^x8x킷?L 6˼/|ʕ9;SSDT}U)H _F 1iVZ9?Dzp66[k]^nNJß4cSz$G&"q/b`KI4MyC󼴐&G~"Ƹ0/~i^1,䍿j_7q#(o; ǟ&'VZ,6hbbfAz|ɾ_L>z\:*ӏr[*'Xc!2lޛ`KR>>s?̳P|( J9 @YE`ƍ?ٰaC룜[.';;;Zvmf^:ZjUrJX"+e˖EK.,Y-^8ZhQphyEs΍̙͞=;5kV4shĉ#FDxՆ x2yp 9F'aSBK#'Gs)[$G˙G}zkhIzaJt2 ђ|w,Gg2obG|lYw۔Iy擝bΛg?zFL>]:a/?jx+aOLd՟Dǒ~QϫMELGtɧZ'W)Xt>9%oi]O97e_QÐh#IӃO6ͻ[ *0ʟ1&mտt3=S'I7Oz4Q^$Fg?c%7O|OLU&́Eq=1ǔ12vpu' ^&I*Ɵoby$?d=[z`8(6ԥhǂI4ۋdAv_o/{Ҹ}Kw7TgF3QKaYZNqM6Ѩ%VdV.|q۟!~Ԫ+?9.{lCa4c^Zc:Ƅ{^fe\OgtgB?hLg"%aS g'q!)_sߟmY^,3:;J =!gXX_Bo^fK}wc&*{(q]Z\}_P:lpOH|kuI')d$Q >?^*7T^#_-Kpvv|"E/`uȱ-ü#Ef1c+A]IP?sU8}c s$tx*28Bya z+,h߆3;|J[yrˏ)n8E>x/!')2͚͓۶>xň?UiZJ9K #^q)I}{c $(hhdxR˴~d~HԹ`7IM8Ԅ~a>cOG|0fxq<_:.=nFpi)mtO=S"e|;VXLkMWk\{ b&õٳgGs5p k9\x5p kA~]kD\+F\CZ_WL\sO~=ʯOmڴ)͛7Glٲ%E(SPPO'2D@@ #ܭl@77c<'"[,#dGZSZ U(fOXiuۃ7q6~ԧo=h9d7/ۛ<>bJ3ڏ*#:&Qg0K*Xւx)R iwr3o<{s j#=|&k^)Jm+x*@IDATS~fZ~ןmN7ܙxݻrerFP٩#ZGoWҭ-;OOj~pdKv:VӠ!dbɬo0rT.S޳p:I@W(Kj|J;fpSDw]ޟAn?gJI,ɱ*^j*(eI9}'v{{OӉרġ4k.l-c\h2ICʷtz %˧cy_MR~ꍕAT&*[g?QrWwSiYmJ|S$xȅ/(qRq7AHKS<Ȑ_O@i8qց46@>F{2m#-M~Id<EiySg'*!iLR)ƯU䈛?;T.۬6m}NƯ*|('C_{+if'n~m:]":JtLm:RtTs $[?%xg~ȝ%/03Qi 3gQC/˜4-W7WIFs4Icۇ?1x>oC{Y5Y!m^H+TgQǎ5O-J ;d?ZB?'7G0n_-Cܟܫb>O?#< }U !baWQ[xݶA*TV'_H5,jVhꖘn Sp @@ PvH/TO'PEΥ3^ҵO#g|;F䬳̬ aƩiZʅOh~Rmg.3Y)l)F2c.%3f͗xcYm դFR^i|UKg)9PSTSWj7' US/IſK)юɯ u6wEz+?ϿJRF,^^(;첫Nn4׿kwUI o M=W5 eٱ{'߱_һ=g3/_ijJTl^B*U>Կ/ݽr$F|~qʀZx2Y VfwԲeҸҴ.~DoY%s0[-3ʗ DVK'*q_Au/#UrQqm?+@VU-\)uxnefK#~&1._Eɐ wZ5Ɨ,c?O ɢep=d+iѿ?6Lxߴ>1]db#;\FNMEF%/_!+b>^*j&{Fg ߿fv2guj),skwo4hzsgI0f;/ظs闬U&gMd滋+FCŤ9Z\,Y%+W +^ib7}䬐&K7T/Zy}dϽvDLUŽ?blxX[>&[_=ec 8i,{ݎ絑#iӦRjU@SfۿaM-_ujtVl3%],Qr(ߒBj@ ew#Lu/7 )j}D*HizaZKI/ۍNcfiizڟ~L"H?4![nlAu>P? ƪ'?uL#a7П]J0?XS#?D!n,zwˮ$EY83C'ldoFV Y@@ BG^6LL'd(80ߦfL1$`zHM0d$'\ \fBB_ 7÷EnXQG?zwk+7τ/acs_q}-z:Yyib/)Uv!@@ _@ 2݀5[N1}\)47XJ8X⑙e;W8?f(!sO okvHh;||PB>3ןoC&LNC_'_eBcgW7MίG&jn+]*'4ߝߧ}-@@ mYz6by346 6mrH~,Gi&{qY!UrcHK0  ,?R 6 4ӾL0[gF,g!!|>"t,OO}Qr|,%1ס{8@@ (ݍ,[G5%oK-8G)5O*Ź-.[nSu+1ϸjYI88y)4OѼlw 6ЀB hXB? ?k۱чQE*0X_b87UaTz6cia%aO7Y!@@ (ݍ,܀83kl6"K\@/@!3\bpr| a"kl# 8$?ډW8- YBƟ0;K'-=̿t:8/_O/S; $?SQ!=vS@ 2@R[77M\*6i}wsljX nt: "{]J_QNZBCAG0K gzEiP0[p$?}?E;E#\@@ (C,(:&ɉ$J(-bv;M -.FzBR%thB|R"NčPPwY2C"݄/R0!a /{M!<Qׇ0.K/9 BaZF Ap H J#aaNA5 @@L#P70bILwɼ5&x&ޡprlޭDg0% ?e=}e%@me|Ōx2q$ 4EC?@㯵 .|G0 /3K0^c <7 (@'EO/Qgaԍ1~AD҇`aq!@@ @ odę(oO ʹ9xc3tH#k[̦VZ%9VA`A ?q]%{O[gi%D%?a55k2a 1b7?05 1 @O;NQL_k(kI?9@@ }ʕ]ݔr̺:|c:YgzS2\ϒ+?WΞ'sB Yԭ[Kh™sey „dE4% ˆoX>W,\-Y'hkHfMd캶ykʜEdC~ynEQԪ[Ojgg(7](sܼrRry^Ԫ_Wj@:?-X' fΑk Pe5żhm?o^X.\"*J*fV]*/IV͛#HT9dV%ugI5ryx^2oRY>ST͐clͪZuNVEJafŖdB4HW6|C"׎7 /?zŸ(p@@ P:` tCkJu?xyLd_-||Xi٪ <6PX:rSCWrxKF+6$UL]|zYo ϋF^'M+-ZF*__eoZF ɯSGPxpG9Ast.z,i#9Ej{޻U>t+|OV^:= Q}:f䲣!/X8FM-]V1}##+B)dg 酓2|3@QVe~oC~,֨!M x١O)GՒg.Kd{|ԃrӕd|Ru/jb eiJiyJ}yncirޭd~eΓ(/I{v}4 AmٟxpH/vw6Pů]v@KտN:RmǦҢrgQAc6}ۚ_ߑ7_/ޞni=KJ/_'_󝶦:?;IU'rf2?h]3ZzT#?dޓg$/YoRCQ AG$t9]ThGW@_vHJ_qF^z>C_]#ǟd?^?7ҳE?^עbdoC&(Q$:˄HO~ i3l yRcKzhWX%cyPnmƤ?g:_п85\$2ѐXږhͫ7-vŧI8޴rdYfo$ĝ~TQ3 LK>T9s!+f*?[-&{7Q6".*)r4E },7:Y޴^Vfj/ t֛V''+/㟿U&3 %_\sD1:rZA7?x qI{Š2`YUlOMCEFU d:K\Yy {]S +!ɔH簅|$m\6tPVl0;YPĉ<块"yKA?ʻgBRjSZpmS䊧ϐojYT?*m{EZ=*qq=nirmP. //HlJ~ZD|B̟* $1R'U*J~ &M^%X9"B5V]e&㺫%8PJ][f|KK_G$W?sbɚ|%S)L³h!S$]ll)=(o ޓُ~3o攰!o^-BǢx e0)H*Џ9%7. Q>$ 7yGͤne<z|]ru/Lx4X9\UgLN*Ɇ0Ȅ$""WoA9Pu˜w\Ѳl^.gpMl$ 3$&$_ vJWZl6mXZ"㯚)WjR}BnN:4!Q3&O_Mz/~o^beXNl\S^$'OwQ%x %Y8l)l &C?@j̑?z^{>MiEV@`XϠ6iT)2Q{|EO$o5^cʛl yS3oұi9ֿb%CafbF(*I>р߅B ODlfCLQ^e`gFz:>Q>f oDk1Ĥ亳\0|\[ /Vq M#I}㍱TL$3䋙,/ha +Gqӷ @\y*3c/>tbi;1W;)MǿQVSb@P(}U$g^>((Z]S <OYOOcJ+O%m@ؔp:5>Q5O5Roژ_zh)qQIm[DO BÅψPv xDY^_(;((|C!ibKNCeoʇ7-5TR=$*&RrQ/j?J"EɊ|IOZӼԃgƴ?R@f,'7 B %S41ϷӚԔ?rdžp @@ PH])SbU;J=FIv[7eu[#E3qNr(.G~ޔ.Pㇾ߼(?Ѳ[Jv"_2_|û9[\:rxv sK_kYJYA~w閺gȞZ,&>Ɂ'h< p"}*ppx#X 7OҢ+!mv[GKāהJݠ^q\GN U,5KBl26ҥ:Yg#=w"A}>u$j.GJ] xMZ\A&J}[OYCQ܎ +戙Y2kylUsԨX[:s\;?m`秬Kǿ{go^e|zcG“sr UB m&> +HuU^yeRb%|PICb+HZ WW ޽ E۟Jڿ%Q_wmLFȚ ľ]1Z2 t1eQ4O__/e|Sqx&kcfc\CPZ|vZ&@uHdSÖɯK$k:}!D1ؔ[TMo"n8A*"ʫ?2+*Ӛv;HKg57~Mb1 t?_hA_е<+Sv=P#=Xrp @@ PH05Uu%qmBOҨ0\tqк傂u)R_'/Yyz,o̦ܭϗ"Ir]ҴYrߩӱN>g )d/9^6Ʀ&nr(?2NPYF>ʶZdX+}rx%F9~[||UM| N}eW5* !{`!᬴f -{ߤZ|j<‘ 2|_%.`h)_\gHM2-T yKj¦2؊|+?X`͊lPU@2g+e$ [ʸDd 3F5d˒y&G'ƠӮcɂ6rɭn}T+(C^Al]~O:X6QxRzQ9OI*5$$Z8Une=R#)ePIǍ$ |"efe91ҎdTf5rgk%<"rW0pf,pz AxI9\x?1:9#_󩆷sIe"#i C1SO=CW(_G9Ętg/TIk@}$`/t芏 Nx0c;[ ǀ@@ ee-u1I|ͯ .⎱x$Wi < 2tYRn)!";TD̸m_<5`FM)yȇXe9;ǽ(Ʊ7͎Qzw{7zn&hw!d$ѡycZ/E^g]wL@:OAP<5i(1E븫\NyrӸTg(SMj,&ro2&T_qs#&\uT$EM9~ckiѸeWҥר;999X7LC$seIV-'Q>՟rK,G9Y.P**|2pIMy8mʀI)-L#-04 ${m.N| 2PNЍV v l6 _} 9NJOy )o.㈅_zB&.#RdJɠz䀕M318q VƱ,>ېL=u,2LR+?0oI>][l(L͛Anx*iީ"'tFb馗}/f?.`P4қ?a0`B ?Iԁpn8@@ (ݍ,aqZ'va]CoΊ6D>udDX3}[(c[v[SE=)r H*SAoŒ˸;L p DyUٙV\~%iڮ`,A1#GVP$/g\>}@8n2ZyZ wDOS8*xFeVG/_ʺF }GśHۥ^QH ŤJTu$CT>wipF3={tJc"`ewugAr^[ jؐWgK iSzMzѸռҠepUB}Hq2XJGj ۏ }\*ꚇ[ ڙZ?;\h`ȘƉ$8Ϥ %m@孠r߫ĴɷȁMnU:f'?'*bA7ɯ17Hs(vԯ1n;3M9Udƹ_N!*(YT1U+s m׿8(5ؿ|@ i/k;8Az J#}ډ> 1%٣~'њ֏#Q&WzX-6^+o&Co&gacJˁZeP*+dʞ+nd%d“e%7KFse茐^x9_ByW#5bj$?(#BNtѯDqY?/_^ڻqr'}U^4Ϙ{TF_]ث JX$Ɯz_eNꆥ5_҃td'<_Ƿr OI"B@ beN[[&I[[Pa- +:.A`u1JO3ο ȉ9JE鎏X\d%IHqM@e\+7f PycUf$u2ŠWD>i4 v&*w[&IoM߀ KI3h#tt4r1opRy|qiwɄ:r1N:wښL-1 7#+"ߞ)n?ȭ 6(|\B`yص%UUt8W45upOs!8hƱ i4VP8}k$_h3.Ry9KϽ2J2"eJryHuPǨj532gP⿀R+fVGI]Pw~lid%\#va2ك.$m˫:1Q_BQz7LgpW-D7B*5KɓcKνZ/+EkQ3wC"i&='c ސ23dixRX")7PO캏l|>|i9_--_C?L tH@9&3$[JZ _ܷ?쏸 Z\Z-RIJx 罣/A+o;d-E9+TI%ֽRB}mSp2A4W0T 41JW;[gַ3iβߎxPzg^JpUhyKF[=ɖ6U7~x(9A)BF߁q_iΐ58V\z_P/?&,E_W^\٘|y9SI)miA:BϚ#͚'dUmN̓Wf0iݸ37糜?zƟ%!?Io݄<Æ0L@@ :ew#3s&cI$Mi<I˘+}Ց xNMF5,q~Y۫tU3D9VV./6EԨ(EVه?>1A@rKzg4HjRo&](\O~W'ayx6XIp<'.ǽvZfK_]ϕ/_@IDAThLGڝD!y֧: 聟Q,AD*@we_DyN9aAf&qȕqQSY,e5TX];6@YȦ|Y`j*OgQ ~=fr C}{Q#縢N>}WïݨWk(ࡗޖ^-*Y1G~+ 4UzcNZ2Zrlid;{8XUɖ>RAGí\lD);]/7#=vw0|]~6TOh:{|r9}Cܹu+?LU)S릲 53w/׼2O s,~Fq3'Fu3WVSw53Sgdy^A[L\3 %=ֿ?G ɧ4I`a:JτdO/6qh#,9̪0h7\5e(_:>"3޽Zv5|%(=/"lzSxN91OTӯǘBIZvʔ?[gEh9&}Co(3nvojrS {C)2(VUߧ, ~Z$PcHve;c<{i_pzDyilTOB[RrTL UF=@_(˓nڸ>W%8D[-'^7_Q;=^ bo!wʩm1lLWjcӻpқw8-Z%mY#+w0%z%W%h?vB";;/Tk/<7ˑkH7<ĕ!MC0(O~]7jcL2‡qJǟX|F;ʙ(eX"|bOHkB Cah_ʱQ{P\[Zyp?@@Yuy.t1,1ʌ'qIUȒx0ksR>L I.RWUX>,~㉏ދz|M!*$R?WH_qNH/ҲR\؟0mt,P*O9( S/#~=)[$ltnS+)4" VBiO!$O/jHtgNj9kR>$wq,ji^Qmݮc l2iGi?o2rUg L-TۿfM%OQU:Vi*0T$(ZQJۯ4Ŭ$C?y(xX Ac4}gŷ.<)t|KOJJWbGZ4>1;I~_&IҒ_6]ў{1!bLNh ?=Nhz !t B 1Lql0cp7޾gI޻]4F4eRY~i`Jݺ3|,rs>PgT;#I^,0c3'D-xÒw~,5ɟ]u7S=z}4#_GFcV+ew^k3䱩fOvG*v~0*7Q'Q|K_|1u?8Ra2xBڥJ.o1<zRjU"yf$gT?08!I+?ogr. ?eC_&r\W6-[?a1dG8@ @ P|q.28m1yc3`l-q+BfdN:Q o,0AK9HTR]j޹:l>m6[Y{.6;}oW<<W._Vg%Y uۖOI;i!/ m+b׾H/v4|eٸ:W}=E)OBP3*}l#MeWn?Sڐ{!YyU9#ܺŒ4b )JN3e\: 3/oY;6/Va ֮xEM=^X+l_^*0uk)NՊA鶿BbQC" %ST@Mo|Dx7'_ suuhj Xp||!)Ǟ&6Pw S-)cVx*ִŀ}c_;p\Fe~nTPPsƵ"mY釣UFUk / ~t So7m(捇RO>?l< wE:Y zIlךDZn5m#m;߆;b2e8"Hj>P82?~7 ~dT%9(|D[߉]>yY_莐LIyh|a*m"fYHbdC?#~=jLvlc?Cr3P)Q׵cM}úxp&fglo}GI g-/Ҫv/$qCmgkm m읇MrA+m;lvװa1?3e{,ae˕c3YnO>{݂z8QRx1+6wu'`7Էxoop~Xq{'m~mɃ)*TȟMPx-qYg!*,H[Nv0դhdֵ6T~9諎d#JGC%[M߱O(™SS<Ы~7=d~2GM{1Nw6>~{_P)_s7m=Tgl(({خ7^Eؾ}gN M:&L>|E{ m5+cum;^+< *d/JqD ԮT@8ӆ>CGﶿ+k7 vC 9϶&|{.<6˫Y_lic%FdxDP>Tm]wa`կ' x9K_}&Lݞ/r@B0pDeCZ~$荭{aog0QL2~~{g+ 7=`O<1msO [ c-߼Fnn[{ STZR '1uWnqcC~"Z0ړ@ ٟܥx?קfJ?adO~7[8@ @ P4m؎9'L{5$&KžhYqԸX<3oy='8㫑;ȟdO^~nmrāu+-o-}ʓӷsSR׳kp5m|[h{Gs[i?rxi" mا:窩Ć )"^"W]q *'bKX4 [ ~|9mY gLՙOYl+Mme{2"ϴM?3_8Oى;ų; yHj62|j/^ @¶_3QmW{s6w+M0ECE'|GDžO @d<\3kzyRj1<(b19b:V}(n%Ļ$R2sZ9KbV;#}[{~oY߮\Sʠl.>G~%;.:&XK7"vl>.-!Hbz?l V9VVB) ZG!"bJkX׮ř:!!)ws~'aTlz6^MzƆ_ ob׳ޕ+le@;)k{rWw񾚕xNZ]º[|@v'1tjD(bH.+?43{t5~ߡ%;(km!=`xr6rz"7տ.+^u1F]wb?k=ŶJ>"[qm7>VekbS{#}6d^?=jiO|+{[4W<:c ۪,5Ylؖ=7 ae6mqG=>Royfg6uPV rM;B:lNƓXoQACI1gxx.HJg Y</weq}219=D 7ou@ @ JWW6`9S[X 4m;\Lte 醭eNze|KqR8y$s=Vl@1)S P|a> sglˏЕ#,%bٮ~uvۤA'h/ ҩA(ow;caY޶fK8S\rxKīb {[6O~Qvk_o`}'$hjt7bh6DAKqᕉG_|;XP̩š&a3(ހ)fv=+X_c:k&VYӰ(sȞrբ[aSRvC:c8x}wAdtt?ӛE*Gw1vW{O9OE8vWF>-b+C).Ga &᫺3;yRۘq0uJ]iek(d7d)P*JddX(WcF٨{Yc eglY;eְ0?SǍ Mlo=fnFM9{.h,:6ʪSO}oW=hko4zwXxa{~ek}5|0w`>mfZ熷fдO?>#'6c''*?&iͫſZVm ^%2HSW/`?_tN<ԉcmHGԑ6~'~b?nxF1 /{6mq mbKkzc(t0^~{ϭWq$4\ QI,$eE E'= qPP\$ObuKcn#w4#O c;Dbx&=b@ @ 77Ҝ[)yEHq:Z_GDI o(27A_hq)❉ Y!?ڗf> #ubI2161e1ָSGɆ, 3Ow䄆®F$@ :Gn78)㗑`%`e~`RӓӤ&y<ՃIJhR g뜘r$nB~F!@Om]xW5ˀ.L?b$SCe@ @  J3c793n2R.YFc8@ @ PFF_ r'qtOR{V2]J|){ sr`J~HYH=гjy2!_OO‘()/wlB/v?a1x sqbC63*80s rIG'%RF(A$}? >k_ I8Jrc^@ @ ~FOa&ف 9rdS E{ѿ1RMR1! *h+Bw d+J΄ibi $5o?41и–tF KEH:!7ͥ\;q6&FK?-9"@ @ C@7Ҕ+&BOM1r1')* ԢZ8tߺ#אOdNȨD`c$t=5iH{~B? N'*BR? $w> '"@ @"PYr)]DfiW*= ,c\ip왮| #Bh)RD? "OJv! 1r #81?)} [9J&aHcQ3v Hq@ @@ndjQږMΚA*x~ӳȂ_NgYTwʂt >el?/[rfsU ?a3) O?1Weߢ;k*iTNgܴ8@ @ PFV;fpEʹ$u^3?D\I9BHf\zC y/b:?1,D1NƋGE'ql7_F,@:#? 6jg1G$@ :En75'b;j6$yVZ~Y@:D2}jDN$JbpC\ԥIRVU<50 J>{?)s1㪠;P?'D2 P(S7e>@ c1GpNʡ|h1/Cifw*O4O&} ~rINg3όķ 1@ F~7  Rt<;Mp8Y,-2(X )OU-x0(D #,d_(8ZqT*~MUїj #?h1dC=xKlE_W7 |)@ @#PY%X+A}5-T匆YJH)ҕo!gCJ^sC{JB> 4`qM J*C_?u#*IW&tR?GWdW$ &(R+1 bYr?peWGnbe`Q/YGo=q@ @@C<4ĉgIvޘJ1IE,?7:o'%^('ꈃ t GEjJ_?F؟Lih1+hg1vF!_iQL;H?\CtO:p0@ @#POd*¨oo-Wp8qբ"mSҦu6"m? ຒ.KES\?nj) tĭ1a-$Sc7 'BMc_ЈfhlMq)KQyȌ J_Z_ ڗ!{@ @ ~Y>gϋYr4Jv<)&E ]Yt1xw1<`1ė1GМ 8jllEMpx IS+F Q39CP RA_$_ǤL@ @ :~"R4s { \JEϿLِ+fG=;B~t" ;UV zȨ'o?A/AGVԣn;cMX EaK$hVd_ٙϽF10Dp1DӐmTK"Y6$ g DG#c? BKJ/w ?IM)ac7^V#|p3c/y̌'e=@ @ 35Mw+oJM|Q}]?<rVy%;q"cZVr1 aVO8OI?rHUo?acH1MW2:1?r5P("h9jȖ?.` "@ @ @n7nʼngyU%p"m0DJOiFNtIk C6!?۰4 cfy E_@d (8w?4Wa%] gw@'o?PAj$aW<WR?E.#1m_ @ @ߍș'lpOEHq.i~|fINQe>y?4 Qą +TBAwͣObME0J>F-+nh"!W@!g]ؕ@ @ PFr~xUb˜vۄ?9 1 1m(=#B{sc @ @CVQΚV|sw5w,Zi#IkXU*!hϱsxD Cf0~H?~t:(8h2^1l.a/䰿1'?JN_I#@ @"POdi&mPⷲ7^ִx򙙞/'6ovE=,=+b9"&>nvhN\nc[T?M>7mk;uh-n1 S[ǎqVE'|jo =sk{f_M<)sÆٰaCi~Y'_~a+y=uۖ]C[w$߬oz Og VU#]''O~NZ>~ԻUzjOLhްO*f@껬h_ףujSvߦ x{m^m R}2,rRۼ=:BˊD N+ ğ?:6##? GmgB}$NWZ1@ F~_-H0Hftxu~/t{ =j_nKx -L>94x|"iaY)y(Y_&nRZqNR$xhZ^B3̳YQ|"y[>چvHOU겆w+E ?#*O;wvJSVmζB⛵8{e<'TP㞲.o&SB["0C&K ~?"rmuρgHZ@S>y .تտ`+wf&M~n#F o!Ê]^WXF>Ƌ8⪵o(d <f*52iɟhȯ)5KG eX!xpi_F[f~gKC Dz_Y,B @ ?0}Ҵ~Ή _[5ZHٳ]Vݣ9"X{>@r|"ijubќ6o;ڴNg$yq' s!z(/$%^LO,ZGc[S*_>Eʼn7kS e)?~o}7r![Ǯ[7hn@J{N,:>jy)emsNw֖('Z+ & ?=+7ξv9[,<4{m*_O:/n7aW,DY~ϭ'1Vv)UM\SU$HxE]:P-T/uoCkQ*5 đ87I-l!_euc"ׄ tg91Ji"W@5,ig9O^9zM;g|O?/5 'O=@ @ ㍬Ⱦ(XNjKE"^VgNK+kQ 9:t-F`;fQ_gm  ιJ?[30x]qmv{ WjgNBi{ۉ,(bڴ￞d0+ïV!Pme+IXl lT2l; *sߴ6xP?N{JO&&frݷ}ެHiƀ㔏s6s5@S :34:<"’%JSqqOC/|/Nims- ڃh{[!'㩛3r~[?җz3qr+[x5mΟ-vσ;csUlB~S۳/h4F}Mnf(O!mֶȪk:w/h=ec7lRm+0,[ je@WXxNIn"oK~D?h~ uI[C EAj,q'U Sbb3ODCz߰a,n_kE2%?  @ @ߍJ Dx__;gqvi` YMrxY|N?W+Xs͖E:}_V=#K/9v}= ~&z B]\ >{3g{okתNB^k}_z$?udU*Ċh)]S4^\|+Kc.P=Yf^τY؝fW~Zk+=ҩoݼ?Y~x%7;l>7Ȏ찌*. {vư/ޝl^--K8IVJb68lv|BG۶ׯKp6p[t߼qG`Px޸j `QJI<{۷oSfm%>Se0q=묝m<T#O"u(7~nB~|rQHjR6;/yk_kw;P Xv=ޑG}ik .f o~wܘ6e]@')Fw6dax& ϛ(LRqr! =ь[7b|p/ig={Ud'm2dUq߷=MmVdoҔqfԎ傘l?kί_-ϭoϪtE6~K;نnz8$]tꖶ>;rH=Fv%Ο=V^aݰy%3fG0{vݖ4ߎz-69eAW1p9̈́ s  i\ZпXkljTNd])7߮Äu. LU(An?ӑ#(Xmێ[-5TS qT*4܎ؐXF^?CI@mۖr~ɦv\sR9ԁ7윚uᖋٵ#EVmnoW4OD6Vv6tfo]6PKsx5X-wqZXTNMP}'fWJF[9?/_;CF_aN_@AuƏ E"?7(:bD@ @ Sv#K"G _lyVZAf,mG]z?x`k ,6dzw Y G.|^VxQy>5z.Rg=?ѯKE!?D^h/~WNb~do>u]rv6/!TGd~3.b=S ;ѭu=1f*11ϏWZ!_K;߈6^f-6%»1.JB1=H+$X+W`v8e&אO雫;Ɠ톓]ze$T<}⥯l17P\~ްd>7[#l]sCٯ~{!$5Kql_{`P;s;7cJ6hx^g 5"/n\u_SVNo6/8FS÷TkyDCO'o3Cg.]"(e?"+J%s_?#&?bQ_AWXԬ-:/W-;0?4Itb2;*hu%\~;w(t}mO/(pFUy,ODx .>Kmm/-VB6sglչms$(;?Җ+^$(oKq#\bCG\`˵-ɅK}TtT'T/}UzB;(j[8{ƺIF!sVA3h!:M^c>)~};{9D*k%GF2M5;i}mK>l>3n?ybX\yAɁY~ds AAqV$}aJϳڿu;p*ӡ[g/)ztY7e9oc3WC?lE:xۨN0Zo~<<>2>I U?( =f!+ٔʙ?w[:ndC2/G> Zqs ?@W91{ו$Mj:3q(CcOCq'N&7Yij;kY4]~ǃvZ(J' :tѰ?acH= F, F@ @@ndLaiė%G47bxseYqnNEy8Gad6 }F<@lt1AC)EN_?@ @ ?:-8oQK4 x)͍pFLX ]p[{o:1c!.^%"-LH@VEIk7)!cbbN%r$zbV˻v~+HV!o vcs.L\>#1EYͥ3*6xj`>?cQvV`;/DzτHYUX$9Cn x+]3|&Ni.- Di*[@-YKar#BX%*c˄q{Ny!_=X-_~jHN l N^`ۏq-kS= .'%NN5dj-hlv3#1A!wtݖ,S-)Gl}&Hb%zK<)w\:؆>n0K|+7vÁMSqqGZC:]!]VNiWS44C |+$C<$&/;cg-1~J8ꔣ鬺O=Rߎ+oe6ny}{lLKՄrBFz*-i(Ywf?X'cH,,dYL&i4!z]-/O҆n0Ko|,@ @ PU$fxE2]hqҧ~0c-̍i|}( +QڈQ.F\A/z#{{gz޽oïĐ~HzpS+>Zc[q'rwiUZ*vZ3ę!Kz77酚'mf@pHx}] u)紙[|#I.QΈ6 [4 \w +?it! n 8_]s6ɽ'=%5'!?-ژ` <|tAkM].WKIj<D?}yC8?a":钛? ijw ?a~j]!B @ ?Ҳ=VUS LN}BSI&~tK)g `BqHN4W6\6ssis9sYϞ<ZMx\0b|!j_~s_ퟧn)9V+l6Qrt" Uk̅F(ւIҁ'kgΦ˧/qH-c?k'ɓX, =?ǟr2WɄ:J ]8|[~>hS~tG*\ku]3I)bo/_3̝EniDs^bjʩtJ/bbB_ oЎ.Wh_qN_| K#Ot[Ŕm <~6{v6=;~M϶"PƟ{VRz7ZҬs5d?~UK Sɛ*CP& S1*1@ b% k*dORWԤZT0/PI_ރ@ @ 9X*rm"gXPS_&67EJdRM'rE~ʹ3Lf햵)e0ʝvճ=54._yo̫ox$eZP01z 4D{V94mMɋ;&.B&K̦gToʔ)6)S3/Ѯ#az³vo}_(E(K% SR>^OJ1\*&卤|⤲7F4ǿjc̱vߕG X"jf%0T<✮61 *t?|2qUTSÁ"TQG&{[_g4zGj2,ǕƳēe/Qr%6[U5^qv%DֲV s.tn;w( {-l)kum5;TE>D5%l3l3~HɌɴLZzw.]bJn a9*Z .'J\k Gq ,q@HJg#$2rҊ]lu~Mji4@)@ Gk>5M''ya?.pQ@o]ՒĹh.N+UFNKm"%S=ַ.!|wWkY{C.ceqg.dl53.?Ҥ v_`LdI,7q(w]kIhjW[٥oveX]Nvs.Qm+ٲ>gOLc N%Ӊ{ngW۽*uM D8 +F̐Rҿ/1=7`ֶ6N-WK3BL~r $-Kiw!DskAd<|$/QaJإSWtЄ ?,!@ g:*y ,KŎ4)H XcMb/I5v$"jXhtEzv}sfoY%w̙S9So٭_umb6S@F@otӓgDܮɲA}"OgkݑThPS?/ξ/VLWn Rm7U*wrFROg,\ ;+weG6Pe޸d뙷;ӗӆ,k?Am& ui RU?X`~jHE\g6lX+$@>EZ8@nU˒j` :^ :ud.~&FpP6UW1P6?vG =&`I w+쏤~+K=RG/.jF"_NN>fLz 7d GJ?kוV&Vr4Z~kWgi&pF>[#v+ope]I{˿D9dOYW=Ep!mH;ԓqF~ !.0DkfҜiMʧ}oI"qKA3% ob#Ю 5L9OL59wdDS Ή4=0&j,zM_K}˯:^/',wzwb׾(3G_#mWg_~M*?jvXNĤ?'_''?{37z6ԨYX"E)G\a9j }ֵ+BA0UYW1SsT?>[weM*4 KV*0׺uqbG6k?Bhhqk+ > O0\Xhﱱ07?8@@`kA STĿ5rJK3^ٵOߜs67֬)S)Vn ĄK7WpsЍS\)m%%RVv0˗EMRwRg7w6[~ZY|Z[[EΎˎ LuUٿVFV+ jʢ.ͤ~=51"e2{b[a v]ΗyCpXZz n]aj·*-Y^UA2J+r~q#6QuڔVOTC= 9xk;dJe]1HJc%k eʕ|md֕J64jiA47$̙6U_(mHdec=  'R_x,[U&"Cciܰ b0DK ebAdxSV/ %DnXo[7t2ىOIv)^3d~pCu^}߰e7˞^5hQ|շ5%XXyx *v 1~V6!B"`}hTWq_ɼmYV/,[:uH^yckNu:+;W(3*^WFP2> @@ w7NUNL0ǦP<usz.&19$3%(cvIm4?fiA~Slr;Ԉʦ(>]ƨvH7ZEpZyU*}b:99Xdp?Oޣi*S9ji:W_uE9v'$|-OŘohl 6E?tȊ!I֟ GXfTWV 7*C%@@AU3`h ",2]n4Xрr*[}/tۧ A>'3NluJr~%&&G2RUu&]%F/&MࣜBddʓ'BΑf;pڬOZ2yr=%tYof@n GBゥmy^aG[uQ5qM7umF_7&wk_"@@ 8OTq5W?GW.ٯ9ҖÍלL5cL^H𔹂!W%ٮv|7ҾF`y}<7w,ZR,k֕H<ٮ޸GQCh?lk~1TC_,9]FU\ yخLvY0Z<0ƟM柀%hյ y|ύa O~Ozl @@ U*{#[;bʍENSZ9r} 6-Lw €rqMX "m*m繹O?-^YoQI^Hg 1>_ؔw9玮B3'_æJ?8"lROd8̿9 _?+H@ *@vucOfz8#,'ei-N>IŔM1'&WTncAѰݙCphj\Ֆ) 8<}=rB0wp@@  PuF}bYB41b +_U[ -7 P 9A>@1x 4%׬)QBEqmI7?aF=Fca 7P_: vaE3̿]GFײߚ@@ ,? 6-* J<k||46QyXV  42!#LjcK~Ӑx371 0 0O"@@ 8UFe|mFLP#?*4zԺOednnĆǀ?kyvTP.?KB+`Ԅ7?N3̿0_6_7j/im$ \UJ8X@ @Yvlj6bPx2 i$XN如Vf}~dл|<+B RH0J>gH 8OQHœƟ0X_z!_~x6 3Cɧ)+?+BzE&me3! @Gʾ &w*ƐD}T-0fH.8˟A 2"" b)*se=?|}V]ElI@IDATQ CI_2(WTd~S(?[|w*D WVERTR,_^$%h%e0WhRgʬO߭~|Ɵ`[^e:~l~Rn ?mee:(*7pu B@@ P7.5'<٭*-pD7')P],WNoziYP^:@j)G>)+A,~FWʋԒڵjKO*SzFUSgvZRNmy,76l>%_>"ujQo˛YV7`~GuMD۽?Wm/W-3jJٸ߳p(ugt=A~Z[:~wB]Bߪ0bƜQOccI 0񿪍?T񟋱@@ T},܀c7'rkMtA:ױS'رtiG:;2#Yy(wg“唲T7#q򇃕HAC^Ae'dLt[zIkopERxق[/@ˏh#P8d:ed_f|^Βp|SO|$Y767_UM>w6Bj &8Vh z!o!_EO*`NNh~tm&3ϭaISC2 <=Yi߼rT"yNrW:i;:I3ǛzOFCe__20m[QO׌_p,@[:Z?džN@Rr?Vɛs߆dЊ㿳F#]8?u1c-{dgU2=IW eSVM8ιIM0OuMK^Uy pn_.xs!a(_\c@ @Y7~E" 2dȗsqf7Z&4ý/M=NanZWkVט'`Y#-|8aq ':P8+7/L9NMCh1.O@@ U }#Mul\62:mɥxʍO|gJ_7_oK׺<,Ȩٶ1A$sᆄ9x 9bJ`Yw 8AaE&S# =[S&㕭eG5@g.)xS&)rfj'_ߴf ZZ"WVCU6Y j߷|Hxv @zr7EjVe?L}RShfٙ?X+/8v,t8WvY| eMoDV?H]hryS^RG;hmJa\>goD Z&Djr A2|1YCJ=!~)țwRi'v=Pv`o\T7|\]NB ~0iͳ|7f6mm ?@Og|1.ǵrӃVΉX3/LG &o\&Ƿg7:͐bl|l]Ǵ?o͐nh vmD1`fcse¸\0q 9Kg{򡗌t?Pt bɴ{Tn?)S,>Q.g-NJ'?sźmQy)&@}+eek:MN܄z.o\I0]nɶN?ϐޟydAA@@ <UF'j9%fu3XGBL_$+۟YOKꤜgnHу8LxQ|N˷rg\i2D>%҂[hƺt͍$ÅR8R.8KH9>o S!-_ON}>Z ";QreoO2M<x/ ;E"Wr2pl5ު-/`EO9F[Y[_NWVNyD O+K &ȯG-Lϛ8Ij4k+;hM(iXZ6g]8w' _$I]'ߋYQ|>!{1jMXS#9g-DsL{fhͦ/pI߈~+ʦ},;>ڕhlyiBʧw_܂k7c/ME= D9GikˣOZ՘juiMY[iڢ82񳱭e{i1r&⏏-i+$oVmY^@R3ee°2rB)Kn]l~!.h[:]L=$>45˜i`JL zbT#M ,S5?͗) WKݤ>|aV/is4+>רUԧa"Y2g,YS&&Z5"W*mZ+=/B'~4J-EncЖ1\KLO"W2ZQSZ 7Lj-Q=H.%J 'گ8.1=:K#xLejvDR4k(Y\Ko9 $"Y5k :Vϩ[mBa&fbZؿy+hs_lOqP%o'ޟ>y'o1#䃁dQi5`H>܏N~2;\5?f4ٮ\JykRLF3SS鶥-\dX>m1vM/dœsEitvXE Cݶ4w*؟%'hk$c650=TKȬFu]Ω\/,cΝn:s2؎@SVϗ/ I1a]lZ~!t\+mo_3QuiԼ%~={7h,Zjn/tNFw@˗ġeD;7'*t¸1сBeS?OGjl3&qcrL&+ʪI^z8o,:EΫo :wbùݧMYFu:NzX~\%|1q!>y J;ɮ͛Kv/u82o}NucRoh)^ >TFw8d1.}_+o~ȒdIQTdWLFט6|Ώ}LT,ӆ|y gɯLq/fgZ7+ h^G2sk {.H wu1W.."&5KFf.0WzVjE2k d|Ud!NȕzYy束McG̟:)۱CF\ vKӶҩnR{_k qyl/>s zcu?(toN}PG?3EGtfu耹@ydl9WSZ89#1554$y=}2B iH+g"5YsD*edKI?L3xMb6FW *_[ҴM OFqNԦW6:OW>-! V@QQQڵkf͚իWG[jUʕ++VD˗/߲eˢKFK,ŋEE .,X}7|͟??7o^4whΜ9ٳYfE3gΌf̘M>=6mZ4eʔh̘1K/ Y;Si$K%IҢ襣u݉ѐBϬ_޳_C۲iCo|%|\Gr`|\9|N'`~yeBO߬[DQRlɈN{*V{,K}B~&:âuI_m{>}>;5J.\ŕS?h ygM+=.p;rvUSRY- `5 ^=mP_;Pk-#GWk$RM#RczkU∅΃.?bsJp&y|\ I6%m!ƿR͝U pc4_>ꕒΑ^WhfKR _DzKׇ%|o\'Vu+ǮԿ{JgRԎnm`/@o?qA@R5b|c{- V?9e/c\6e\}mjV^AG1ћhPڧ}Թdߜ П^?2FKa"+rRmcԮxE# דs!`FOǸtx UyC\{ytn?K:%6QھoGM?#sCv&/%1Gʸ_i?S·iMo~7#?1u·фgU귗>F~&z>75(= QcP$5Z]nEzEc߉n< 6s%}'UuJtW +bw&$U<;[m_vYE?EoѪ-|"3]A>hIkt:q_=?T P$-;v(Mg #꒲'^B˪1h+?1T͢ʠONtWlqYkjW_>]o]#><+*zWʰw瀤 ;9e)51>5z>vkGѬNIs柦ci[fw:Y_~0qKb\;G~ _مCk$y&)(Z`J*z٭qc݊S/ Yz?[ą 7WP,,gѻ8lذ4G> ݞú͟TyMS|_!2^=sw8gJ`؂GzK\PpϣtIK؎Ky lb [x=1yFL;V<}e6_k$JJ(t;F8 8QDW)IA5P< `=̘1#9sp{8výp{@ B#^7g➓Q~8򿒒uſ(+++ҿ/ 'd@@ #`b_ cѤu|  }<E4 }qV"Ϝ*;sWK[݃ד?dHXI~sr! HvFƖ;*+0AmɧpA":5d3ՐδH匾NU$<=]4Rk$Rٿ{oD8osv<D9Cӑ hGP po\ WZGviuc}dOΟaD^.?Ãq P>xLAEMua^-g7\іS/B.>bO@ZhaJJ>&i5 8_PCs([8B.8~3|-_p~/rWiJ\5Bot7T.[>T?XN~}v|xgoBPJ~3f!&GU6I<"XΑ/@NQStZ)1vP@ ސH{DFO&G^g: 8V!%jߑNi1.úZƪ6Q^.5m7*;>yk9{G8yrdoGDi ?O2||)lbqdi$kEޕû [b:Ju8G2Ynꌿ ?>AwTr؇{]*o/1"f"]+sU.kl?ˆ쌶XߺCɼ[ˌWnU1\&OpwST d Y *<e?v/-̢Q0eS 5ds_,7|XAvklvQiTvE^f0[ a6ϣB5^L<ُ QpN޵ KX^I"RI)*wx[{09G%ȫG˅/.#[W.;Ƕ_ &G/Aм͓(C8ͧM-]SK qer@$/.9,&pEiο\.>XEY;AGi#}"YvG^>ɦ1g&E](VM3d򪫣 W'ʱ? w s^<܋9_-{#(w| ‚ou*mޕD+{Im9w)SV:ݕV"݊J{ h'*W"UlLSN)\ V@@ 2"*z*U>t!yIÅ9ҧ0pbte-h8ݓ77 %!˼ѐ>QΖ=o#U OIF)edOZ)mu2&yS@GS|jܷ[xS/EV&/J/%oPNpeݓLgȦގhz!xۀ뢏{oc| ˺ذ:Y>V}4΁ѿ']F+cBwR{EydEDu<\XF2hߍcsO~* n|rUCg_ýhhÚ]U7߾hOX2}̷Sկ&#˯ xe4Ó6=nj9vs%co])ˊs~0t9xchI{8F|RYFK[Y`4ǒ'Q[/^|ǏY^)}+# ߾mtkmBi:)zb cTߜrO[{oM!/=cby|cOZQ}w"5֧Ð[}7Z9znT-VS8PYSphRړટDԟ\?I}O{nӾls)\dod~jR4_8$&SZ4V߰?>l=}7 p7/fz}MJ(mCσƹSۢ&g=}~Y󣕥cYK,gkFR.mQDw<#sY,Fi >6}962`n. A%uP.TKƺOaQqn'iAn}"n 1].|e&6$~.ԯMĄ'1KcS&uu } oğ^anS]#{Ry_/L.KŨSdfa6Yy7M.y{ n>Nzqsx(aVŦ2Q^"mJoG%sS>]>es͐*,\?BݤKGѲwǨ/k>gGOŝ>gRDě&7}X7>ɶ㮊bbg/6ا~81dț,xBj}p ˙vʚTz:3J_Y}uox8 cil ] sOE#OW}SROL{wOeS/ōg9OE]8ض@sh]-x7l"(74oT|'LOk-?(./}?kIK|v#Yce'N^h(`?ϗkdS^Ndn Ο,,M{N8I /9gLHǮ/O,O7ۤua x.e}C%ӓxtZgΈnU{~>3 ? ~#ݓ*tc4 -˗MmՉDw@e+'L]TnE:~&*4$U? /tɍOQ ?%ӂ-{J#1 U,N-m%5gp$j#[W}E\ONť2˥N度4m|R,BRLf|W f̝>C&M,&M_qD_H0q:+s} DA_}a,U^tL;>ExfCFh,_R G_T Sn뮟!ɸ+ߓ9''HpzbwbXf:QrEL-QM4Io#MP2P۵p(!, WoS2pJ/3>Lt\y.(a릏=W(@e)2qD>}Ƿo̒uq\?2 ir md7& ̿5wjO". ڿT&e od4ɓd2ÜC\U!X"Yh9#=121/g 9틄_Ugш}[ Vϑy{I|:/ .e!U")kWI+_O>8Jb2rL ǚ3"Y4ZkS+Ab9 +՞R!K2r/; "q3敦KORqV&/;J+j➵rUHIy|;9oJ[m%e~,&fĢK0U V<Y¶0k^Iho_2XG5f̙Y+{V|ZD%5_ nf+qdAbxM&{16ZmIRY8rYz}jW|?`Iɶ?ly۴z?.k$ғ3to~r}W?aBKqB.&:'O>!@@ p3**:OUdXpY|cCLb^M`)yy܏4|Y){`km75* Vc~ `j)hK Ijn,^F8؞ nlʯ+Lp|o%kK谛 #JMYI&ǼIPM~cuLPw:ҢξoeG5Ug^,DpiuX][ I4Vn< iZs|S,WL$exM!ԈYiQ>ވ#˞^vaB|)I y٬ۣ-lLOW) {ud8%!#57>ZT Qc'tDq 5%_7o?ccmvf->JO' o\1a6ͱ!@a bX/ݍH)qn'ZUɏ{me/)}֊7vIEƒ[IVџ=l)MZ0$m^!)rbsa?xЀֿHhFT\X1TI~v]CjnbF>ܖ>량 wԈQr̳7js-"DuwN%KKc_d|74ٙ=pJ_;}& ]p_?PӺFߐ7NAhb񗺍e_BlU}u/Ƶv{p;XBv$|eMv2 :K ! %~{7vtrY؟{1^*O~>HB_sm %}KrMި'ODQ '4"oy^>D]Zapq2%eR1(k0nҺ%ƿGfrj#y_Z>9Ր7W4t [HnP%H*kٞMUs6B?f  -##k~$}kw7;+-^R 1rBAs68c]Vw'9 d9O?,dC1+#2P˵4:>ǧ+et/LMI1m*+_(?hֿ.8yk`+O'ɛs$c:PFP'_Klŋ4/8bn>U?+o㥋uS^%3z0+HJߤ hZ֗ s-drxFIS?SIM is%FʫC,#woX ?D'&CTY[aUs*0ex&p3Sл[c2srTQ'CF-iba@e}eZ|)A7\~ r]#KɂGKҹro?gjO^JjK>+/0/蝖;o< bB'8GJ*N? `RY2SHj%?fAcZ 4@ɁGy.Alȇ]1IEv<[s6jGZU;vY~D| Տ NW j|'x"`!2=)XXӢxUmz_\!&;ݺ(qO%z7By%|ꁚ#n/FNbM=,)P^bO/K+ƌ#p5bEU&c 3DFxm$<+\:(B,Oe o{\f2yizŔ`Q?V^%Oʴs]&W??YN&_}2H^^>(a~dYr(ZJB*`2.7 2Kf{q9qkaF;GBUYOWvׇH>bڏ$c)ϼYF](#= '# ӡrKL0.Lk^6jCn{,8$4O 0HWe_c9qB\׿.^j> < *1<`%\ڟ:/googqL្o[Cۿ0S ii~}򤛼>Qm=꿰aSTCAhN;(W)75g^*:/ތrgSYOz=Lܔ Ʒ g!ј?g? k._cBmPQFXF)E*@˴ F;Ń>#hYN*J oŊTۭ|ý&>J0(?$3UMŸlTK'^5n9}%ۥ5 7PqDc_A6%?[l?}cT''EH$򍅗2+&g9.;S^RsID5CF/@^th7UX T?;3!u#9CM)ԕ>Բ|vZjg|Ө`Tyߌso!-e2˻i _뷔+bR,6T!xnzt>Vo/c=C(I59X yeyuU/3)8G6k2b&F8!/G brȃW|Cںv堛RCuȱ(??M=#qvޭcӺb''/'Qi3`Y!d\"yC>Q\b&_+GeR {C5R}~CGwz]`FY 8i^a*7>tY2e0Ϗ_f)#d!h\؅˯ _"+ do*j(3C޻m;0f- /Pjާ#rYȽzHlGJ\y$ @L?˩,qzb8b57e^CTJG/Lr%wY??-ȫם-]vBYd!'1؈dC>A&؇C@ xkIN|9QoM]mLo3j-c-,%IiatbJ}<9̐W8G~0Kz*Oaҝ0*u.x=}r V,_&|3l!B.:w1@o,k}e;<\P\F. lؔ|Hm˗Zrع7"o,܌=?,''7xm5z\ A ?'E!>>eW)H:?DfɵߛSn@rh 'z ᄥG/ȈNvJٴW^SOׇ2r}EЪGzʻ;H.ML,3L?͛GnU T 7C&}R5_uR) 6'̕|ٟ}Um Xv nQ ~S2j7++ڏD pKGQUsd|_Lڿ^(tYɕG{k?NuI r4x(k'mC"c<%N)cieF(2rY3(ۯJ*_6NZ [u?lm$2?ǘ16$Ngit+C*xF(6 @!_V<5+_,_/~ikMO$7UŔdz{{Rk|Ȍ*IGTF6&UiU&󆿨7qCoύFy$@&7=˷O3 |ZR솩}kD ^yj]Ri[D,_-/cxl׶S M7B-פqF?mlͲ!F^*?m:p-]"4o$<#C iSG~d”LR]0-ldDa<ʻ;mֲ" *ܟ}QU?ç;󞬚fFK k=ѱ fH7PJb]Q_(>k:~%Ob@q(g|̛>1|{@55${\9.({z}4,/,#U× M<N9D^lia6nU 7G>$&dG{6C4@@ T}Ri]~:u3Z3N4jXN'pIKχ$ ,_\zr%)Jz|<**QόUEH d~BDاTt+i GrY\h κ8|W>bjWu,ѫ,[k_ȯ9@TV'=D~q&Sת޿Ѯܿaޯ*Viyz-c+__nވLw#4eTbC9ʙIʽ]._^Z⟿.ٚL~ .xrABqgjZ"gr;T|GLԣ ,5Q6]x-M[z|`_(r7\A:e1՗b 3rs>BͰ|+O-ŋq ؏MUJA¤%Wh{)UDN9*"<{{C , MQ׮]*ڻk׵bŊ}7vvA+*J2}N p̻7799KrnnriAėTLzƕfJluEBN7AO}~'u7F'Mw2lGg]ci3xDǘW_bnL?4QX?#iCr Xizڿ2=wWߋ3/3Z_z^9h{Br Zp®[:-38A ?lS$J]ktwgs?v7$ICn>P0/&_}+N/ οfnB$zyr?^W/A^s(3&WG+""_:bh@S9Ͼ9 r ٢(uN oseW,uz鞶_?˥)GATooH'_M+:ȷI;%ރy|yݯ:xIcVǝ$It$/#>yXHagoDWq,ޥq6!-%Od2[+ZЫ^'sL(AqD_^NڎDf՚u3MD#:je]63OVwqch1ᔷ}e_y/!R\pe$QKj2ѳ`YdƅĕX_0ܷR+&jɭKewq+mVrS#cE}}x]r <m{L Bl/^=ol/+E1;2'i:tzƘ5DS|ߠf cj>BXo$J2WH\| +X> o <-` rҩ=Ux?}㰀Z^8Y|-e+%z2t`GJ(9@LD"@D "H/1l|ڐWh4(qn.cx}7$0idnĄI_&BZql·\z{eU?sky _ f~_:wI _Z%=1rlp/yԅ6V0}\Go2$m~_? d'piцE2oR,,k}hp#W<33IUH!#S8#m^fW. 轙 ۞|*n1_yqbΊ"`h +XNFQ\etqH]hYr7 ^9%;F :+/~7T8y56~ó`Jxr\|?=x~j4*-е/Lhy wFO՜/-CѼoĽM ۲.u;pZ<XX8c>|a .= AhPXsxL^4l{4k'd&3F%d_Y5l?|kG<`F ܔuJwAy(T^cU}y1Ov̎"bE;u?0T/%8~>KKKQZ g~^6NN+6bjǕ?Rz6j(5xe|%ENtzᨴ4BeiR6 *xCie}ĤlJWX/KNaĨ?}w?R({Ij ?gS;e|y30Cp\`zC{. Zݨğ>xT)Ы`9ʑ~ꑋw|y QR S=;?;qmf|3o*voPXZK+;.$mYף+?{mwvVMC:$|.걨ڿ}b~Z,ČQyNFze) %!I {a6iݪK~Ҹ7{6[3QnrzLtl ?z[W`;p̓RWx(sR#=PJ^e*B5sw+

9v߲#pyY //Ζof_]GqO@GÕYc^z'?ZziXq^i2[x-=$Rz557>( 'q6uw$vwK/sSe|5fbg&@IgXUN˧E(.) K tڸBxzso8uػdZ) d!tƟj&w,ܻ_,\stڟrE.0y5*LS{Ws޺)>u@[*s7 tž|* #չ#:t_P, yYme])ibQzoXMD "D"DUVoʕ~+VH/_ne˖%-]4YdIxb-Z(Ypa`͟??7o^2wdΜ9ٳ9駟Yf%?c2sdƌӓiӦ%SNMLɓc&=o HmegɓH7 _eX:>qES.&pI$)H[YW,uuqtoF=Iwb*3?2ܝw*j2SD**K&t䒌.*[VFd5~/`QiܕK/oWyÖ&O=8Y';P>~y m=Td~?8JQ9W[.!V\˻jq2nСk?=K9&}Iv/Ŷ!Mui9l#,)t{SdLWN;\4*dc u6 Mvػ6Ux=`6iN!Q &zii:%2N5cZAg?!<3ڵđp ٟvqD2Ipdy ef (|epC޿(SwilR_ze q9Ph|/Q[i}6go0ߥ%>Jv{OW|qңaaHQ O]ǂI&\AUOE"uP)K?jNڿ]Y]8/ 3,ZOv{VI#\?n䏂-_;Ɲ$**?a_Wv9/HZJW |*mz%ϟ> 葱Q'϶ēyN; as~pqVo+HnK|ft-_9a0_[c9,'߄, }&|kY>I4JN4fLdΛɾ҇[4f$V仛k&1V|BmVig~b|a!IQN>W= \ۮdKtr_8㈧/ɌMUn=t5ȗUpAbȮo8>&&eOtrI#)-{'|Rޜ7|&r@!Y#oӮ[|\`Gm-r2kͮ4ʒ?i YveOvT8+?Nk4Տ~/_?G! ܹ׿ձZ?ey?uk?7ܘլa8c؀;dK$={ؤ[҇c"3]9`ղ<#GkAjcƳKvBòÉrd⼂iĒ i^!v B,h-M]/o f%#. ͽhFs1ԩSiӦٜn4hnGs<ќ~40/9"y#!i.)+y&90 +,,L+**J_III+--M*=^~f>"D"{tF8QZKKFF%wQJer;L%Pwڊ+ʘ?\HF=ŘۢT_OLohhb4ꂁų'EGz|ktC0xHŸwLNbZNЭ0|X&G0f=T)ƿ.h6^C|Q&lq0>6&KUIWǾŽV_bFrZ盶Ξxd*);?#'>[܈sO-r$%-@TY&Oe3>,&(^ཱི66E=k,YV6wwWİ5],_K۟%q"Kb:(t_=}X_W>*% Rٖ}9 $oQ<o.X/n~>M$5ɹ5xϸ~mécL2^yu^u Ntyi\8_6X;ߢCl%?%,RU%1W(oބmD;/'_xJ>%EVBS;ٱ茔GwYN]Ç޶xxB ٢|cJ&š[BixqF]QY[6?w;¨{<[~q.jWp 3wUPoP_Oŷ h||a1Un2{4we?쌻`鿜86s?GUHP+i㎝UsCnXO&; vԗ F4 pݳ+ׁ7x'㹉 ܉,3罄_ʏ?}|c^U1Wߑ :ђPiO@+?o?:mꟾN\Fq{HEv̌YԠ/~z {Y|+ߍak{y64Ux&7_._s y#*y풇d!J v~.bL}aL8k~Ȏj0zT6U 꼰K28m_Xf'p8%9۞g˦W[4$]w_[i|.2 $`PppZ8S?oWd`1WR* 3w69$O]Qk #u{8||ޮ_G)dyAU8J9V&?T&jc@P}1q~^}ZM|Sfkj A̓:dQ۱L~=^K)k?M#@D "D6rRE:@~MiWvgϻc;rp|'lDkN@M ؑ EʸІm()~L~qVG=~%QڶHO'!ўY~1_I]:!U f`βTk9Z4o sfżLkpcߢE?cTmZ^d/4U}X0? 1G89^˰|,ZVU 6Zn/IFv=3UXOXىjR4&M`3hQ)ʸTf=mjڔP_}[p1 8Zl)7+ "U ~Z[2jm:߀fyEUfLUVn.7oF5=Foq<qⷬFcjՄf/A SɊy6k!t^#j%95Ep jYn-OcbcJGWR]M$mH(l9[ Q 623O,Č/bkjnhX 㒩lI<~ϖnMEEWaƨhj-<:.U`׵iX5at u:.Te~Y5-5F4FSc c^gcX1$*_>"QZl?P9hp~UciLpF`t**ѯ6̄s@xOlĂT&B0NʟV7(`~*m_I%Ѭu3Nt;H*_3y^+XR'}r{AemqwLmU=}C%(6k`--@ӺahmpuqQ!9XYR 4@^uwEjyq޸PnE:[v.ҤplP>xll; 9֨Td8(c׺;0l6_L^W]:iYs}_8 ݾy7|qXKc|̔UѸ~ԭnR .XX•*~fj`[٠_-\~UK4>yᗜ1ӌYK3bԸbu7O$]GdE3/~G^xl6]^$[~jstו|+ɦ_S2>k@D "l YGzPa+9 Ph3Zv/fę=˧tX`4CADrw9iV.1>>+ 9}LS A_H)aUOȊ,YVhLa=Qsp^d)CswC7`Ku7R*М8 F_Z=ł >Zʅ8uQ,~2S5~?Cc YQ /ÔV%DS[i\ami=}x>\p9@ F < {_o* Zw\<}2m5Ьh tI8? h_d?\t*%&F"@D(&pwzOՌ2hT[wHfp}n|2X1s(!_d"X98g3նX\nsЯ;wPpT/uV{&٣wԋ5-ミvK j ߆U*S]E٤!hݮ?OU.[a28j>àWvi?m<$2񈬾?n Ucꈣ:nbMW]!^֘&"D"x!+\g." +kfBMzR{r3$qcppp){?q眮;] z+ߒ?3~{N8E<|R6eu| JR>z?&^[`:;f$֖GvDI'<ۆ#7/1v{MrǟϺ[sLNOO]~aI#;s+Xa›C;aI W!m<C h5[Jn=8gM;kUeD"@D " .d]8w҄M`˾TIIDtri#Hji^e$PGd7 bKw!ib3WOϿvt8R ]ydԜ+?zH>153b$"D"Fƻ&9vZr/N0)v1Q e̺.A2=8"@D "ll YԜ]Sr-5tI"fh"V%3y&r~Ee_WU[(OܿWwlfZŒX>C/XN0K4J*T_S3߸ UyBS81xȋ:yQaoufWqΨv%YKBlυc$ؾ@yC5{Ic%ㄚ Ѳ8K0h^x@ɰvkR]3|鋏&b{oÈp{⥹Do_aފwt+/c&;%i6S;[cl'H(;L*O/@NݪWs :(q\v8&O4۷8[;\Pa 0aDy G(qe`g`WŘ|MEJ=KK)<}? 7Chw `YNP0hޗ?ڏÒ5/{/>_ߐeÚg&InFJHMk%m?^wQomCYu&/4rm۟ڌR귖_tcpFO\xwr^L?s @D "Dl Y9x8W9a9]w*î?6?,.@Qq1-ߌ[/>+N?HRz(k:B[OZE;j{Bgd٠S5ҬT{6DM{3睇=7p -jW1ey w>(K2%J)x<\H{YOD:Y-Na&_\R7{[Vw )sW:Q`oU0EpE,ק/Ckƪ2aMDqQK^R`^؇s,7ǣlѥnܛXH)S_P4'ûY.~kjcqz+v M%=y^tN u^Q~6:xΥŕ`^B ՔORVG$U(ɨHڑL~&G5oRf'f*u7|amG%ֆrbf_?ĎYbcx."D"Fh~BH@-$Y"NUP&hm{ɸ([6SNqTrԲ,4kYiL;RZ~@v&@meGQ*RU/I;dS*/|Rtɿ1CUH1#1r(~9:Gү95~ mv1i.pYXKF$l_=.4>h61⼭M%ݢ1 ''WVτ_Rq~8{l 5צ;n=- '?d뗏׮=+-Q/h3tyXM*uųXR4/ p=Io^o;W]0 WQM[ooѦJOe?8^a~:d&mW{=M2Z?=hr)#!_&`Q~_mgCaԹc/g+οGD"@D`D ln63. ljo], M}o^ a:Q#Nx6EcZ㉘_e~gjVإ{OthXR g|yeV)nЬ _| EXͮݫ3cє0ͷm2FJ~f};+rm ZUAO|7m1ʒhVh*㳉S@Bs%|*jF5;c3$?|8OBʯVgKѮQ~7ԣ6I&biP0Kh, ^>5]Y6{~G50ˉaFm>Rb-munjO\? Etc~0]Iu ƝMpϏu2?[:ѓy(&9 `Fh >[ 1v"Vz;&  Om:w|[4p2KUQI2e˷HjV+ nWaE&v![>SnetgxDSQtw zқ:K'RbؾS=_N~m#g[z5ZO xhsp$>FK0e| T+g?8t+2!? \>~8FU547326i<2:#f7^[OLSIi_F~/C5Q/6ot(_P^mR^ VA;\M14~RRhKt ;4^|wWeNWg|77TAYڂΰE?N%RZ ೷_%(Q -l\vIx0kyԨV ڡLmX'sN`%XEj՛`ݰVuWǟ/{'hE]q S_MW׫?X*M߯ xW&ع矰s^Jo ˖_ 5 ?wU}2t[k} ?ӪIHk:F?mD "D"{!ONhBpS܆ɰspP2׎yfJv]9[ʯg9:#e?{cqM_~cyl A:epg᭟>1#5i4gnůQ7 Tr,ꃓPo{N|rMKz=q$6y`X9bҵRfpei&-_6\cO.GB$JNc^+]`!UBN;^^{1ž[TFCx/߶ |Ȏ`*|gZ&;٬Ɯ~ ;9W 򩓝r1aА?,ޑߵ.hbV۲̝`:uf\F(9͚3 $ebУtg[.BJ[O}B&.&v\qp6h ? {oK4WHm? ^;}LsҪeOӇqg+1˯Y9s}L\,Mg0)7 =vnMA>}x6柒O6[_7%#P8:4GY){n[?t$Vóe?c}Ю߿3EZ6e ,n&؈ϛ(d_W`䛯/]ڤ'&$N~pح};uӳQ|bA 5= biSG觰63=-ȗgI[K-[,I7L.0 lW{k63ܜ|KP3t'>3{B %KmiƇ1*ȱ5?_G%jR4)쀦-jDl7 utzZ; U._d>q+YN?Хs.&,ƨ _~.^}:9XWLh?hwEi«F叹 ?5tc exCUV_~S秌4xBO]pd %wܵu(A?|ڀ+T8\{_7-v8Y/Y=)~^Iy3ı[[]|9"cI˛oͧe'b\y(6Gy>b0/ǀI 'TSH{x/5JM9PN*Q[(MY>"zXDk]ƂÈ|Õ5,jO,đi)Щ0o* x&5 g 5zcS?%`LOT:xhC#ˋ?k3Gժ1#9vָgɋ ^Cw܁F$;Oڧ>X$)|>h={,1\~e `?v+OM ~,d\x(YŹ|*mF/ /Gg0_z|(e[ZvG!"@D "lpUb# 6nntv'*wx[7{ęvM^jhMߡx鳰='<}q!9Z°+ icŠ_xcо1_ƌƻ /usqH!eG-"h'c2Uۧƿf~ZzQ^`(2=pKb{=ᘢac\p %\qEtJb<-XK~PCboz$ )\3Zxй?5r%M>HXoJ$2]Fd_;[DEAeqnDD e+d.zz5x}G-:v8zlodօHz*?Z+.l*raK OKVaQRĘ;ҢBYnKD8D$? CV>.+=!/Ɂ| ;1h|7)PvS+RGp *nنS/S ,XEx8uKɅc;cqP7#-ux,dI\Zc]~Si] _ "3M򐝋5 1ޯ^Jl-Vyx槝SzG*\9b.:y74CmMyD"|:a^&~TkNv=N9d>9l^皤zp./ĘM7d6GC^3=z,K1^MZe^1mܭFD6V1|IMll<@OAJs(n:R۴>I99Kv6^/9J/T chğ06ڬo.g'yG{Q9Nwj a'ւn<Ϝ|]D "D"LWwV&(GY71wnPqxOܾ#g>XRA~n>OOz>D=C{ע)W zKaHpCQ/S鐃-Mq#~ Ƕdiؘft7+֮ӘU8s<_fبreUk"޻9ի;~,`gh{h٤MLY3^>#-6JN'38IlS%@m\&Ȗ.ߒ!oޜi|F",PJW9ϖ-341_%*QLōWVi7ƒ}e '1RrxF⹓Q5~#Gȑc1S)sL89Ғ3CNEsŽLqS ڿ 3ZVt6#O}D+ws /ڶC8Q4> 8pp=(>}T+{+G-J|||pa:u.>)2 MSE:\4/޶cKa))34o{x݉=˦y1Ͷ c$|e7u_sY[Ү ]IiKlS ,/2*3zxպ[! a:S|Ƿ9.M=ܓR7hg²H )o퇚^/װ:1"s!npǴ\"nmQ11W\\4orA-y|A4"yhN3d9]7Bw>4w_h 7s.ׂ$dJ" /MH|cygǣ 1 aO/=۟o DSEp$*SQ"^%*~TS]3Dy:7|Am\-'Y~[&Ħ48JO*Hf--t+1OUnX^~}= &!_|z ;b, D|#ZSWNNۉoeV *Mv: O>'q)n ]rRt:ñn]cם[ѕvvA߬4Wk֭ML-ъ?o8v⡠\T}9q, ݯOyQg e`!*ĬeWfKK̇<enׇG# Nv&O"+*bcn\$2JXͰ >[`r>"Dp?+a S"=[b+_(i;}vo. )'p2,b``D_1+I4Kʊ5ȯ&,c\߅wg9+ׅ>о}th۷Gܱ:ڱG׬E+O-s>vu,~Ll渚WiA?.9%Ep=|l1sm{d//5j-d߼QZ9`Uss_ R"SP_}GAf-cg ҜjtK,+S;m\-Z. wz"|y^1F?q}Oj8k tc(_bklz7$sDxtzA($y,bxuW|foC*|Jlh:èa"V~|7eN9χw Zzڞqυ{Z#bBeW&HPXt ;3?0ɗ@25oٞ1H VPAx@>x wh9䈝.ڿe{/?kx/]yG|KϿ+CD "D"?UMk\Xa蕋F=tۛ|:Ǖ2?/d7" RKJ'ĞXR^uQ\>P(jAWĕq+` }=lM|t{'?}ϋg@~EqqT/sAS3τZ _$m#3ŽNl9/zZ¾C6=;HArma}zܻ8aUhOq-:w>}6]?R}OO9sF>رg/ÛZMG`/m{Fk Rx > K4Z`v }a վDklG3yx`Eo~@f 1n8?Ǐ8'8^w]•|u|Z|C;e۟x֒_X( ?sbz]97ݾ/BYg0* r]ӫ۶ΝƟeNO>W<*LѶȸVHn:Ӛe%\IJs :?e؃j[j bt|8)AG?YlT$rLaA" G]|R=5) 22_Bq؁/,Q2)Pۯ|ed%"Lc#r)Cq䯊<%_X*G/='nk7Ųvxe4A&lm7XcCܔ猳dٿvkfWߋ0`q=.F_]V'?;9翚׵x'#Hc$"D"v!&8f׵W odhIs`.Gvg\\hr5LO:3ơm|-F7,䓏XYŸCzm݅^~>shj$r í\f|(-p&ԏ\U/kdCaȭRG)Aei-e14[iifʔXm-(yXQlz> ڱɵ:xt>^7%?S{t HW- Pf݌_*KKHl86o*ӤkǾ++,dG<=s_⫟h 7WhWx{K_3cU}C/f̮l%V}(Ľ JџޭEքjC& PUq\$G |RDYFC-q4c:*y 4E #X[{MQ5jIƊ%c,(EEJߥR[E][͙3no|OVjlZ\hnwʁI7 >Sy+ /y~˪vpE!__Qr+z,ya6(S9gw$P~oGh0RGȽEʰ' .šbS^zT86-ZF׺KyxK%xZ<1~VVZMLx32?tmMMrRԿg2nɟXSxi[ :Z,G9}F\g23U - A-*l.5؟_?zyo?Tp@@ @ndqacIO.1n# qY&r^ K󥠬T EKL_}H~wDJvgm&.={$v?NXTQZbm͸}{:&ԧzPl흱r~l|uN݊#7;%E ^d7\l?MӫZFu3*A2}9|SSvjK|0x_/ǂ+^]0J>RRVQR*')89P{73Dd.Gxtr ȁ{v#IO.DĜdRz01+_6E9dS D^<yGeȐ!鿿'NXԕ_V>L>\Vײ+>Yg\v,/Ey3dY;?Wf[b1uM3fH޺B-trwΒ)kշ|kr~`}N^Yt=(y)(1zLϏ ,1- zr⟉a0`KeRl 1q 3ߑO_%=U2ΓfȴAzu\|mBgIKsQekKw #II_eE>0g*rϘ\MEҧe:YeE,L# Tt<ЙI5./F=`('.+frO)_~KU-(6,U>Z]-{sxxSgf]O-O zth_&_&({DT̿|SE+zUr.K]Vfč!C䔽"9GoGxi{I ;Ӹuy]cI=kM{ۍ=;e8)fp4WMæMMn}o06.?u4n[џl?k)&^Eϯy& =/m>xJ3'V!]<bu@K^SC>' =sqGSe] 4A6sr|Cfgc9rY8<9V9lE!\}rKD9f!t*꯼uʿtQf2)4?_/WWuWP9Wk9W*#hi~;I;{2' 7s<+“ ;^iYN/b1-%-9KN!2d+TLh6R_5{ⓑot KR/%},#.p3#SC#QR)ַv i0Z WF,״8*&Z p?Qʴ,v #2As25btZ?b_s? c@ _*a (aް!uzF5Hsuk]9OI9?_;;[pD./zV.[n,,}Z~_x{HMc {@ zfr'#CkQ+3[4㬻h'rax<JcIcHϖ§-uJ⏳.(-M BW4z+]}Sf={9'b?stYW\:Қ\7YȿzϓIMM,A"{2n9 c'WΉzrX(s<%U]4meI1^(i u4[i&esW+ m}'!QXJ\+O97;)DҼ>m -o܂/i~)sTy-[V=2h 0%,9hZrF?F|P"=ם(kڢr{>Z};{lwmj=Vwk'RT$%!27 Xfހ2LuSiZ3Asi*=W"-IV/ Z%?1{+b=hg%u#??vUeS[@@ UTAAuu 9yM5x۞syylڴIf͚%vT44۰Y%[~*OQ͜=S,]/5[jIV5,@IDATfbKS.KeLמBh<^ K- K͂R^kY+7ȫדz?!V˂y+I(UGZ캋RLBʽ}U<^n 1Fո,'P7YDnY)NM_"̗kK nPRv7^mտd5wTCTeK]Hvl1y5TWR ,E,2vbsmٴb4SlN;4\w8Ͳj Yv_[ JPt*ۆ??>R `%겯J`G؟IɸIsdVJ4iEÆ~q2"h&7~|Y`V-l5jvm 7iYfc3,?_rv }'SJ d%_*̗Қwcyϰ2Z-K=ƒ,]xbYPk7V4jʉh(M?GyxO"oW  /_ 7_ZBe˯":u:uHVSn71<}eyv] @@ |T፬Ӡ9xrI$8p{[T[F2lu}OY w6:q4I$7҃m/oi_8VίKY2HfDn*Ӷ6o9u][P0jYr|78,F"<Xo?6փH_hCÿu? 7w}FV5mzm(@@ 1/'gĘ7A1txnh;1ϥWFS:li)0¶OXb*NbcTb}b/~^lb1k$G6?Ͷ_>y2l-7?R^.<-g7'5U$oZ# >m?aO]_h߲ '}$ߡ w7-r8@@  P7븑b ~3g} \`q4Fj?3-k'.74~ ZIK ue3_YQ.oZqIgs,*`iqLeSß>zVIz^}rؑ)֑ I R?m5< ]? g W :dö?hA `=uB@ Ux#;NyI^*&~{z(?"-H{>ɧۍqUm_]^ R~_R~$G>?ʖnUUKJ#}י/9O1o61ղ\}s=S޳9^XU"㵿?_hh>mb__US`0`h9 Íy坉]0v8`4`j 9) @G F֩O%r:HsfoRɬ =8ż 9Lzl3n2%A /m*j$6`zo5v_oک ?^42'CcC[5u5Z6_~#K7L@r9bhS  ,\2^v␓hH>7zZ:Yq#dE3O 55`GR\LB~,_ai0Fa;?+?>': @UFndUDM'6It6ֳg)f~<_Rρ %  ɜn`K<68gy3$}R#jJڵQOIO&=,ԒZ疉P4oO ڲS_MJ+-m#So/Ԯ;yY V Gvv$K{ԑ]Sٸ<@>ңҪNg'_^Uv#U>fCNAF~Ix5t9%=unzHݥ[^%}$fhY]ad )_ҁPnyrg#34IgB> /@o^=k{Š#A[}K]@o ym%#% /~EZśb$d۠rZO_I#@@ TMuP+AîM2edbY,s!/g a+#XY<ī zHmf&':=L:=ҵ2ţh+0`SqI֕M6˟܈4C?I"koeζG_F X{W]>\5On1!'Jaz(V"̌:-ǟe"_qHr3}k7󯡊Cy-?@\xm+H/NؾZx,-lko=VOO@n P%/ɌN&#x,)lxH'uscsf??F:[_M-*߲u2^Ś,> }_Vb𷺘 ~ =oPow|2tG|$@J™+;yɩr@V"pZ/Mf]cm?hss2dPkC)/\'g/:|h5 ^`_rO5C@@ P*(&n DZ+EX[N={{!/ eĩ\7'.s88#re.loϿWX5Ϩ? )5⼓epVgB_t:|_"TrT_{Կdrǀ+ϑG,u&]{y30 4hQth`mε)sbW?v[9J &]Buעk-[&|hrEgʙ>%w>ȅ}[{?J|sw;X8A5O NGlmt+_1?G)HQaQm^;60&99ZǶ?$IZz0>N0OۿֹmpWZKd,St qP:t,|~]o/I%OH5rgc0U}4r0UD *1?/Y&{&?Ukwi*>*A5shC{ @@ U*Fܑ#xЏAm0MR܄LN>v'//Z.Ǜ{_%p1ҋh*Qw5 =N,97|ղ|=* '&/3k#n4>2 BF4lěFj`QRGFi?ώ}iѪ6-W }LM\mߙ*a%+9OkudڿV) TMmnco nkˠEHr]z]n%*qKR٤[Tε'o&|ÙM&w}*"#ga|i= 8bؖyԎ1ysͰQӕ]Uv_Pn Žbcf 3_קEiG;p@@ @ndaOc4wtDMRyUmTld̸F?eR_b:Rl(Tq}?9F+/X)3!K:JT̟𑌙+1/m1qY WVn*jw6)X.?xWZV*QNzիdSpSw>I9c=}-m;JP ؠ߆&O"`SmPZ k#uzUy }L Rn:ҰU[ٽ^ҾiM%+J5HjmӬ6~/lҾ^ fek=٭.‡\O=H'˘i VAzWlZ y3K ײUtʏ:c>.;V+y>ϦJ~IK9Y+sʊ%d Vjd7=8T4Viv;w-V,KE<\yް/e%čPvo`ԋv KKD%RJQ,$ȂχˈI ,{uP~k_xYF5Ewz|s5Aokg7_J/^!fSRNfɗ=Ig/Z>G>X$ՠzN丣a*6 akh,9lCoZ2)N WL}|`ʑ=&*5p283O*tq>[UGC m# Gço,AQCIn#mwZQi3JN1GeӼ/C໼mv_wܒ?|s%R u6к2Ci~ҟINGQSUHٳI̙9Om;5$qoaeGIQj&]<^m7*K?ZY2])DL0[4.ͥ:onj+׍q1)~/ UwNR{{-d,˓isdu-Je/}f?nd:P*#MS~?C+J SNٯM-%tA5y0lEjɁu*诶he:Glix W#? Yk4}q6B+Y18RZv߸kΖn!ԗl_ȌU^;;DLІUҥ`JR|֦捖GN'nN;Ub[52q0?"ߩӧ4؊ <SdUg2I񲛢?<'_IWUYq9F_q_4ܭƽ ̗S<wSd΂ZR\~d2Crgyl.>_ ݳaU:3Gj]K-ҡV zeKt\))i*qaao&C*#Hv6~{Xe9Kf>m *a5}L vK;I.Kv}*L:hP/]"gɼŲrc!|}4l]9}}d>)r0<$xY>ܶilϒ*7#?TR5БsZU8oYMv,>FF}6KVgAFXE]"3m;")6P?`|Wƍ!_Χ-PZ꟏ؿ 9.[KS7&ʔCeMR-[x=K&L%ɦl7 -0OJ&.a<ݻG^āeܬZ-dhS~^ݝAV{ҡi #CRi kG1d/ud#iawkO')VEopȰ _s/; {R\ks)X:O`Li!%뾘$ jKƒ,v(lɴ9roo7oZ(n6/ZT |6M9FYЬQ7+6/j.[72's%gǘmœ Oؽ{tw+zO~Kk!_>@@ Ty "m޼Y6moƍц /???uEk׮տ5kDWVZ+WVX-_:2JQ~DG#}/:͕W"f_=-SC,*"9roH' +%}uDPɛrx_=hRr{WOyS_bjY4?(-;_l)y8.$+Ϗe[َȸ!Ѡ_YqF×,??zx *_uvs4DmyWƶX[';=:i*js ʣ) SڗG.-8*&c#]&D/x9(ZQJ.}W?m"G.'P'fcD Xř D̲Qu] T]<ί/^=un7\+/?tЈ'?h5.,ꉳ'ߥ2T=a^i8ϣ[Ku!F+a)_ro~x1t!Z.YSI[\@g}Esd߃8ims ~vG }m?e?:֧;ˣ#;?q9KzD'lv0$SK\6pt7Jw.Er,0X6Rڱ;w]y5%A_pcWz_24)?6SB\;ZM}~(|E?daǺ9obDσ*z +Fb0RYW(R_8Fb,w^B~!ccTU1 6§ i;;׍~D_=^o0_EC~A8/b9/P:r[߲#u,`h6 .q릨Louc(hŁg-.zXCs&~r\'K0XRjlBoOnOr%tV:<6~_X{1KrBשOez&2F !}ʈvt77I2:9&~9Ǜ*epyyq4!tO~ ط7E\3Y2YͶ~F8}+_qxF(O޻q!>ÿ<} FO^8Hc>^q|2?怚/Kݳ\9zJ7mqcF=Uwr+FQdS 5Zuoz68)._G|SpQ4y=0?fڗXd$z:ϵp-k2\3gN4w\] p5pk=\׀ׅFĵ"n5$%u%5'ףTaaa"%%%Q򯴴4JE W@@ (HT,tF`z]1xFNz?q΁Ea &{M{OrAFW$ūE7E6>,z*_ hN^ݦF|ƟOh~pc\'1X''bbgĴiW .9057 B=FQɌh_Ez:rjfH~26T~Orpj|DItF쑩rG5&5o,#ȳl9WOB^WF]y{…-d&Si^o嶏B&-Wy7\]X'9ѴNLέ`:ysfA ('YM{XHbnZ](3:4?}q_C|v8iښFϒo^wwqӼSοMp(W6 &w?=d+?٨ {v3z<)o?YǷVyLoc,5* Uâ_.GoE de6@OXۀ7k.q&>9کdv묯N2:e ?#Ɛ6fhe/NZ'6h2 |HB_m#O]+>N(ǰϞ5ZJW/6L[#WC!/‡M+KX?\?cډz0J Ӎ4 >?}$EѦ>P&'W* ^sL)/SN*_?.~)ft88+.~%?vw.aw*P/)3h:-"ؒSyUŸ?zZ-(]Q[!vz.IH͕!ILZsu4h/uϗ5_>8O~isYa<~֤[)[Qs_?}ωȽPI׶*.1yzWcD \?麻aT3jIC.~#♶ ~rHk{|~~рߟS|&q,K?0)N\{=sn֮C ~.C W86ˀ@@ ~dFdž_6cxQXFt33mxFW [ HO>^˅=rHtYo/qF_N +'OXDxn2$ㄥEESV. N )3%H_sEF*[xPjh:%zk%W{OJ5xRXoa|jv\mX-H:E sR6 c ߴq9&G#7Ak59tIb. )肧DKR(zbnY_\NL5,O< yPƑM Z7 7p̂Zm+_Fl[tAv:z73o$/c: ᦚFeoSu9sNjV#nx=ϥш+/}" 㭺I,1p}Zϊ;B{}bB +~%+2'<u]oTk;o|^B{NQ,YhCڤ>.<%Lygx0֧~z1&֬-h,{9)#ͼhoЏ$HC67 /G7>џ9_ډ/o+N/ld%7/J{kFXy?ũ|XRWE }7UxrbOn`.39z=)7u7/j[^LoćK[;H>\KJ$ W?EIiɔg}vOT}*:> mMoSV1iO_8ܲdtߋߏߍ@sfXV~>d60+0i 5eOp4] _<=H3< X}a7\_qKЇ^{KoC.۷DE&qD6̞=^>3&Zѳ젶Dq?cyn27qo[|atKO: o_kᅯ(M5r_?0Bٔɨ2O\)^9z/kfΆzmCFaV]/x(ٹ(άn6y,5ˣ=AD,cE\dec r;}|OףOv(z,fF* XowG~n顧e~6}[V+_ Dlckco3_siσfJ<u6ўU_R9-%I0c Fr=`1(ƩthY~)<ڕ޺Z|r>y2|AY$XZII5S%m?sFmSgϜ$ #+Cx6m_?㷛bymHb;:׍%=oI;+6 !-xk%6G0."j'ZCڣ}儼dqAr9'RA?hgynrcUkCgc4^iPap"X?:U6wM6X[Sh! *@C. EO bhhOz |9 {K苢qw$( rceds ba8^D>'%~0fq~26|*`If<8瓋K ݘ||Q_ηIP~ceOZw OnpV'+3GSlYB7'v膏NhՇ*]?i|Z$>EqmddG+ko XwxCOGR ~rjI{0я !ǂN?}/E~XRʴXItb.bs!y9aKiF!*O!e F^K6BGHS1N4_=d_-G.9i''ӜjK5~ 6b,+Sn>bύ-s,,ߪǭm|Y m1 2v&گt-۟cR#?MyG,ȚaC꿓>x?<ɟ20s3pQaoljV'>& G%7َK@LӇbLg0*8E/"xKۮV3X1V+X BWßv_4o[[7g66qp'-ƛx? n,̾u#ʰ۟)u 8->[f9Ñ+ދ}'q?|ۻQGhG1Nk}G4AFoݳ!S@Y8ҹ׍u^&'5n$y!>#6o+OsRc7cU܅J^{90x333_δ3wVHopWK?lӟ8 ,|̶2cCd&ݵxbEs.w l sn-3>$qqBFh 'RDpC׵g~L[|Oboh%5|S0/:|/>f+/0>/s2:ǰ vf@x# X_&v. ruU fP4xL4ETS5f'eW095) Z39YwbY'gLȂ%eҁXp}JJxRvqʯZ3# In}z&f̱? 5oSeG w(?j 4HZo3f̐_R JhL-_>--EcB4Wh5C`CD>oݒe-ȰZYf6K.Ih̓o97/.]˧2II (+ he&TzLF۱C8|Z+,(E>ꟾ|[+oLZhLK 9j$A o d;o_oA/^0Q?E媁rڞ))Y#&x ~7 ygZ]sl"󌎓<Յ ع52Rvp@IDATdwc\t]L}fp.-)Bby\רH}t?)аYX8$t==i ̫v3o0d>57/N!6~QN"fd$LixY&+>HO5cYz-gҷSjk<&o493'}O:k(r(%7X`[WI;&šI-l{N-|_ &q'a?gS75|܄$tS{?)܏*7:X9 D_dr?_ ;KJ} e˴2K*8")wg0Ӈ9.DĿaS3k+\a(2%{koI7VLMǛ]-?oS_o4fk"TW\U bx&E9RVLVہLgdO6 0\~>b骝we-n0Ka씥v!䘫ul"IX3|N#5g߶!;\3H*X3cb|oe*W~ &7ifEo_%msr4nl/HD\2^oi5Pf-Lz"a#i f̑ Z|r,,b~5* QZOfnK|l/Q`H{VԟujEy_?8w<3%;SC9y@,]͕~1'S 2i%eRV\Vζ/ҺdfvdS 1V}{ @v0=Ĝ,W/*-a~Q^ )%#^ق&%,|o2 @E |:\6:'w")6^.>c;2W>}!J_skQy YQvCv(m;"#Yp :y+-oyɵiٵp:MN`e ޅAuԙ%w 9rbnRSw!({Qc0Qr$e{<"˖gv#MnҦ뀯x p9ƶ:`~ӿAne fQg4y@(KW[6!!Wˑ>ɓc(]ϟlbze${d&' q?[jc,dmc'be7r ' H'lRْza AG^ǎҥk٣KGi _Ю$p*j(x5!WjHZI7ŕ7Eʀ#w_#35˔ؽ$;?nj#Y "{k4||{巽INv-U+[ǘ?tR1,;S,٨H&x~p@)o]Oe[MlKe [׮{n> oX/H@G)8^4CC-%2y|,7NӲP??|zX?zHqL4,~M%+AŊŅNp.6E'U =I 0-q|NF/N/A*ؐCQz.߀U(Crt?,; J$yC2o<[km ʹ7[ [ \r X kgK50.eF"3کUtE'ǝ#ߜAx\8<krJ`^ox^+oڊqwGdI-QfH)R2x&zT^?Jy㩚g9'7@gɕ+*A;eN<ՙMq~ ",i"?Ԗ(FIqq9$ˬ*ṃr5%ΔOC'} Ȭy DB!rǻ2]{ .,+XşsZJw*=W,T Hf3 /<ו "j/2&n27DL?Rq*_oe(tRJSlY]uCHȕտ xYEY#2h4ebڔc(sk )+]o*Rx%0ȾWUru#ξJx:ijlh ?ȹ~ Ij:ʩSbL\0fS0:$510L4ɒisZ>-czC%U,T+<49q@|ixr],W$?Nm$3VIfJUzv,ƇRg(-?l)هv@z<=b*rDmΖWyRi$X6?<|L-pvI]Yʄ̀z볰Է6F fNOZe"LHCPP\yr#势$O]`V?_HB{8E- ⬈m݊uW.Pk[VY{'H d'snqgs9je[_;O|v'3*ʟLI) eBc***ߞ# ^4<恷~=2snā| =L*á) Sj;P#"f7$GH9lQ>(sEzaGT̖xb%#6Z&<'OFbNsg96s|ue@&Oۓ1-?ذ)XN.u--AGqi5*6LAF<=IAa~7xu %f}#$rNfz }c,?<Mhlg=\nzq6^G2Z!m /O~H∼g~gU&o>$ghsݑ2x̺T~SIO&,gmłq^RLxgml X$:ɟʞ,m)2[}/Y-xl,t]}8&oU) :ܝDCREa dG'e6l}xeꅼdz(<\YfJMX xo=|~7~N]󼸜d9(7dSJWM/Ҝ4qL(glGD% >" ̤cx6[Y׍Ŭ7.<9s1k?7|yík_qл?%QzISs@u$. \=TaP>dc27MUUqFHG4ʷ45s;\{e,E<ғ_.@Nš}es|ɰ"6lyxi e6DMG+ob6xb7_lUDʋ_YmA>9y3/T_D>jaHxD?{?XDO vJd'?] ?DSN9 YukP|?Z\] Dl  jyp+uI__)T$ϭ)WN7Ƞ tJQ~k\&j1ui5z_Е}끁UBA %&8ſ_d<^6MIŅ1%X3 WW=+W3kSMI3 atf6OR]9Y$'JZv_~4qkLhU']J@DyR0& ^I5S#~ ë]4ʟ<5F;O mo,P |=ejh>{ˬH!Z7\y:FS%$kvi7x4 %G!FmrƇ'|jn3&78Org.O^LU "fOypg1Ya3-4ɑ&hg7gTx9$Weū<c@8Q>B:۝Kϐ@_~G&箕`G㍨ԛX^86C݈R$؆t1ڏ~s?c?c?A {yLKTT0Jęx#######@ k:Y^q|^!{ j4;8wFsJFA#ywXaj) 6ɉ_15gnc.c:f o@w 1l\OӜ5؟B'X+y_yS7l%sg3K ALՂǮT 6{wۡv;ޛox9b29"G,RzIVzYBg6eJ}\,߭_%.iZznޏ/ۗt7]+Wfj272;4=LPm}k=#}X28YS|sҌx(.ϱԕ1#B~FPzW _ ed۟t>e=g IFW%I Ly_+*fc򉓲ݬ$ Wf?d"_(kj59Z#y{]UIf8HÆLX$ar=A7|SNNd_Tz*_5|<}}yzrx{\arP퐍DG۟ {|oCz_]%ɘ8S`?o'd!.~Od,#ʠc{4xy0&+]/'_ǞH/ Wv# \dbn S񉌿"&jSYF,%LBd@hgd6j> F'_Щd<54W0iW!&.ꃌ1]2'Nu{ߤ!r]#$Wsb>9S=ˠ%rJ<#cЛU7Jy<'ۨn<^e{?7ś`S6_?A=_2?U:rhfϔ4ʎ0pmܺ:ZRQWYTa|jcʮ?2d+rOOom@@@@@@@GjiXC.USRb.g,A ӒGbH$ӣ03"+hH*_3|FM`{_sqgx-ryhî'I|j*{3RTזpbIH5<׃ %s/ 9C,LG.~x*(gP't.ǐȇ3Ņ}ÉS%o&Nv|c,O%FxD'TNϧwjsMmBWEMx(7>oʧ󏻐v5ReC8;#ޕ 9_\8!z.p>cH3=EnQ܆o+Xd-/Cn$'> t$ ;$ V0!!6vV $d_ZE.LJDk Va؞RyP1H9@lry_<[04-zco ,Sq?(o;[~x4fP/!ooWKuRlS&HM=ZUkH:rM944UK ?W܈d*!9_u $"6D1Xd#feDhR|i9iӜo J|(g~M@Na vGRtc>@O8/Q:ߓJ?ΊMQ68OLY~Rg?/ߑ!o~x6?.T!#Q7PQ j$n¥KH6mvd\{PfVo IzW`@j,K1111111MEaqx'^~O45 92:bc$9r>@ *˥x.!鞏dc䠶FA!k;g)B-x<;t2XÇvJ~xTCޤY >)*=%CqWJ^ GK< u?|bUTJ ;C'£I?"ʤ< q#C5,S>8d^q~r-כ8Li:TW1 `U'~r>H1Py!Lp_LmMگ,L+.JB͒_Zzbo#nTT%!Y_͗B|d]4S>y>qȇNȬ7)~dL~#Q,*"g_ O[ ]?_ ?~>SoF?"NK~,7G^f"vJ9ױӻY!r1;ik1dg|ȋ6J{u\Ppe2oK~ҧ>Ұ݁rKyH*S˟MTn )A,L[*k}#w4X"?~_XΩ_rTMp1/?3RUuC2|Z(|oee R ܉#I^ZPFA._~'CL9KƿnFrm#@2څeFlo,/G/>Qxܿ?xN(E@OeEWe |Y@ ~a㿖4\/*`Hi}yr ^ % uVu`yuY|{)O*;?1,M'K~9ٿ`_:]{{Y<Ն|.]ӷ#UIzv^aHq v~Gd<7~"7G^kTE9HQ7~L4}yTj_5 nB? QZT?)X瞗>Wo.!D:0!4\,/L)(*2q|טZ)WېB9_ ; *fOYI 8fd(+SmoKK)-ÍpUpX*Y9^_$ؙe&#`EoW`~2gaas11ءcipIQ~du7XYZ%%%|r Pԛ|H MEr"aS\V/40˓"t54o9*|mU2LM/!_-+7b.W">zB+Mh|/j+_`ns@9w[˫tmHd+ m3WSsT&ot8_O!o*tݧFV]_?2m*g@}xȻ`rm.T] W~Y';Ky+,;å+Vɯ&=|Jȃzuǫ:öt}[ĿdCT;ϲMcsLQUL~'^{X{>qaLl&QhH勇*^%+ < n"WtUhWuV;c_ };_uʲt/20dLle/SwQ*xGv8Ia}_0`GgR+NEZYkmnN<L>2&7x몖!ugY4wiW_ZwS>6NĊ,(z9>T~ȥiP_<ܥ6cڨo59#~*KEo&ZW1J¥1te"3Il٭Z_RmrGKw= =5>nܔ%θ+-χs:j_2#C5'9!%S1u֮%!EdYlnxs "i?8j& Dh6=gg8wS\ 4p^_67S~:9&Jb4=HX! FOyzM]Y/=(!+w%3-'>y f/'^-K* HUwnNq}@ؓ*hp<+r)Osr:1ol0CK*|{ok(A(=?'DspJ.3p sRg.z^&Wfr9.GݹTz+;n^[F>Z)$D-`3wIHɸhN] ,FR_yb 5p/- e1IOlf)XV>{}sԡ"Pds:K=#;4"v_5NjMs6.9ulӨ-d:J_G_,q"qO]ʴlj?=>j"0w:D@W2M޲93z< 稿ʴUfCۻ2nWro5w 7:IMnЌWRCHyr܍pB9+%喻*JtР4gdZ;Ÿ\-C(riyҕy}Xi=o{2p/q\9CVP22$vI=MzFegzo|B/lM%-Z+/?,vl绞fo8SvɟW9A:yĉQ4 ]Q&kAFɺ`থ-cckQ*1]],}'qoެK ʮ2cȈS9Rڵ!֮9+L>Dj'^iֻϋw}KA7Qf"^~|ƨ̀MpUW /1d>eχ4hb.rH#&xg4ĨJLҶM~Α?C' 7c$Ӆs&1cSƏ1h]|EÜfڸr&Ob.|k#"$~%\ /ё,øP^ƾ/~s|%9"B(UH)ak3A 38X|ڍd#gC2$5'gԊ쒲pWmLF>#h~J%thſ3Vp U/7F4(kITϕ6Q f^*Ou$.F F F F F F FV"/L 7qM>~[;FpGn 9|gr1 ? HI ,sRF TfYl} 9 K&I3f!JٸnVH2Y_QOvݥR%e]^ hRҪH/]\F+duQl+>\o%S#~NI^ uQ$_֭zRYP v 1)gA h$W,]19Xi#M4ĄXF%/b(>xח&Ms$#*_VɆ Ref j`њ2du[i-4mN~h92P~XV}tߡ)o[̇O=zEpV |9oKdb> k w6˿lrYW$YͤM&v۲9U#2[2%wِ%uӤ^撓Նo=_:Uok( Zser*=C4Z4UR#3?;Z/HG5#$ KY^Ζ.ߨS/ƫ};)[(QD ,EF?LJs&> V+[T8!-Ц5gV|Ħx0l/1?X2J/gc`0xT7`}B<)_ndžjzͅdqFҰI^ZT@IDAT˼8 }c iѢO-E@+H6;K3>VErr)B{٨kW=},+zhh(rf#?>Z͔ﶍJA&!L+[#,@ٺܘ /FuAfzҴ1/AW`EicSʱBXeZ`~UʪEhIFqT]jm R}eZ\6f]8Fuډ~nJ߽j" |,Y *\iq'zoI~9^X6MGlQ .>Za+iӒ[!KKF6|wFxUXdmI(Y$8uMYMm<|IR8[͆/ↇwӤӲ1ޡ[_K/yXwZZ``fo9OFmپu΢].2IVy4ƍr~ sJo1Y ȚbkK[G򟦗m{Kj{eo&[}ͷU 7q<wh_os(;!kJpN]),9Z#^7hǿ[ɯDn:)9Ma>41c7D<.[g9^ᛇd(ˮ-j[nwlM/J)DPCQK9ŅDi[+ HV[ױgH6mQGX{pr9Y3U)jWḌ<\tXwS="<6w5- &-|# >;YX>aLѝ9\ֿΗZ*ϟ&1W(so];v V7e3#<[ރ5Y3rhCWwm\),oH7\]qڸSoP ;wlo^S:KWhʧñ8ߵ_? N*bڅjuϸx.&:e܉|.c)Ey˦BVAOȭz1_򹒛RP>{VOq'%bE+"q3!/ŅC)&O2#t!C>,lh%"ϼPwN>BQ6U#,qd@@@@AV)wo9۟r3"*L#;LJvL^2+/)[\,???[]ʧCŪI֫mU3^.{3Γ?%Yԯy>'j,?\X8c[M\oo"c'ôQ$zObCyO@󩽤瞝i@xI|uks["oyK{YE,o,~'R1]7cx [MW&QtxI,;W, x'!]{;ܮZzkc$q>Z~.㏄>?g~oЋXzcgJ? Ok6G$cING9 kśB\U罺с*tEnVJ3sQ呏& { 1cCx?aņ/0T~y% j\S[(/z)?'Y^<5/;G\ՕQtQroJco+ ]qg5Կ2|܎>=8䷏1ovv3dc}K.+d:0¶?Z%@[S?=ĕ5UaOSZ*p=O.G{e2З/I}q").Bh4v[ily0;~rS\^K53z?T$;h<ʐ}]S΁r4/"/Jobbbbbbb~odv[~A(@oL iޟDIA{e[~=cMR B+G# g0ET ޢcccVMuO(|qo q?h0|"7WP#<DɱE"F? xa >ߌx񧎲ΒmC<'*׈0+ ##hJ5.Fa~Z1^EvO hlRS^z#]YQ4w&p۲*tS'8)(TYAu[gU07>"N()]v$@`@%7KOAX';K2Yձcc _Gl-箔 =Ck"--K:KoWHUE UY Zoʫ FF] 0ԃR,:;+Bj %ʌY%Ȕ9ҴIKiղÃ̇ ʥNU㏺jIqOݬm?91WIi)+H] ,_;rh2^j?GKd,?̌,iDZn! ؈2XsJ)-.*n6; Xv)~jY:Wb<7ksqqia)Q bqv+Ki6 #IKTyR F.c6:^Jc7L;7*WNΒz^dLq>_5qg?$pʟ5B\6Hd#HVңңGo > Wpx2l,ΣN{FɖJ\D>9iYʧ?dng< A[Hro|#UHxlNmeԉ2i46s,\V—?!a#C 4_"=O5 L_u$;ʑ;&8MeSG=Jvzg \l 䊷!_{z]@}Y5)§1F&k:F\ H5lZN٨_\ƟM7?b{?ڮ^h96?|XOY25mL8LYLK#o?!_:ABPuv5$,/AԾ6~XI~OE/w(QoiЊ1111111Z{!ٸӆ6sDh"Ιcb<,"8xKfr=!*멕B~ ")J׏+"5(ȁ(tL #y0+ޗU,2u~ }=[)i{sj3# Z_~ ?J+_Qnz|xcI떐hۈd l\eC-a?UPTڤIH.LjoMcrGGy@բT*xzD5ni-}<nkʾ{tm[H<2zk~^ÝW9XyFseLHQPlۿ ?H.^ƏR!eE9<@}?VOǠ\n|=6B[^lA'8*:_b&(Q,F_(_Nl#/{EkamE= ?"M mW5Q`,y$βGI=vQFBz zK6nW_ w-|CӭzB$ߔ|@&o8[8aDǰ3J Oq].s1:&~['sG1111111{!Kg=0B9o'.L=2†r{>aT/k6fA6٘B-G}WT $ɫmȧhˏDxˊ԰ vO;.AŢ[=@a 7Ob_GxHD*,밀.B?qȨE[,2k &O\7tlY7mbZ;gIkSO_62s;@V%pߕˮ 3Y?ۯi5jK'ՍȅH~A]yE&L<+$_ k R5ez+CA_+H:$E^%̏(HSu5s,MgDƩ Jώlɶ}Y`_éK6|+lXLSFQжQho~@'ʠF]FV_vFn J^c˔OKed EʼeD3Y,o ??Wr\DH^z//ÉJҨX>a1㟟G8,.u9X ݡc6:`s2`$gfwQK3p@Z &æLw9t}W)NU'G( S . K0% L񥾹XAresQ췻?Q O&|{r|ǖo7o\#W2Px+gJ*&֔/_!Gwr^ʹg5!:iϊ-.Kx뿵оMRZkFɧ?ggU{6tD?rsK9/c*;fp5q4@d~h)Cvo#q'y<bȅ򀪅Rs=sH2npYI-TJx0ab[\fmt*9etxZlʕΓ;>?dXnO5d q?D>5r>רL[qrۜv_4Omm[<:'xn W`/_թS8ZT/P)m?=P"}wf"YJ_=Ltf'`H#ٶO _`n~{4'ԑm:KRk b2'r}S^'U[Sy1~.~dCزD9Mm`*J&{gHWVNr~kKx=+ͽF~ oc@9꬟ 1EBcGhҞ+$@Ue!, I~!} 5{~yR4[|s&}?9RƧ,k\O}ڃ?/Ecl)}ΰ?og[tA@@@@@@@E^a/PaNx 7.YseeTҴ]79~ߐl+h-6y~xeLcb^&x!rLnW[A~ި liEϝ$o6lD]QnXVΛ-3f/u3[>)IB:KVo>T\%A]i#Mڵ]Ku7?Q'3%_X,i- nҾEb1ScϦ*,Lr2|79޲O <bc%g~ï2Of~|J)AydeHfMҥk{i]*0yJy2'f弹2cBY"WYs@C.[(sϲs玟"sgTްtnHM,c5eePsqr(M7d/_:E>5 ~P*ii~pAX‰.8>Eʇ>geާoPɡ'ݳ3U]}J{scɚLՁGQV?2 `4 lRf4‡{ZVvp#.k m]aiTeldK.VUg&YDܵ4Sf|*o~6HFr1}kco-yRnd4]KvGeJTfRz]cunbJbOCҬnB6./}2NVwY-d>A;s5 G +ɼ34 NWUZIǶz7Gf[(kM2X{nw-䢼wb7 wwS6ݹ\4I:i Pzujc—B>l ~Mw{%{p쮐lذ+lHɔ?/n=DGUD>nrEce%Ke#MYm%.B hCݕuAÏ]jņxjhlr_:X 9TUsx:L265miOO[ѥ'_ce/44O.) r_fMѢ캠 #?/hfi`9Owi*YYg2g#?08 XJ PJ]% 5A]bةdR4\SU/^#G ˿09gg<fNHz8H ioN.mʋ$=Gtj#E+3;fTT;Dh;4 lBҴ3%.{@ |B*ص9Za^Ai'feyKepRYcivO?4seUqddN'#ʬBiTгL#>-6gY].͉){8,wih&dGiqz}3yHL2z3r8dW{یq1Kwn˶lk#W{DP$s>{_@Yճ']Hu@)O0X$ŸH/uЏjok[v*GlBg<6hr;kPFvE/)@sϑ\#e,*ܨrQ%<}f䳟?e6|֏*q,U.iS]!0;>}Ϻ%uz+3>IwM~]eV B,'j_eUۯiCKim~hn:e9"s,:OdtnCw݅\ahJ>KH̝:]d52si\DNZdۥH-Sb|ӥyNaR|y= p^;\Jf͇c\\Stj2ߍ׈[޸i2wa(9 AfBP`*~z8yY1EǃPW;[;st4Y \ͤa ޓfhhAUa6pH|e_.ucFdmQ8O,- ֒%tH*SӸ2T>@쉶?*aVHZX>Qd#######@8௨H7n ۰aCPXX`uk׮ߚ5kիWV V\X"X|ylٲ`ҥ%Kŋ- .\,X ?~0o޼`ܹٳI&Æ ԠwiFmQ1g@sڋ_-8򑩱QG݁yz\MzutbF5ӟTc=~q@P~*Sl(S=]se|9'O> y?ذA~cq^ڠ'l"@O[=^j7NKݭ:x%C>:z-%>`E.'ZĩdܝT~A|O쏸]pqU~T{>_I/a]~"(URp'/2Տ胟Ey ұ]9.gj݂z?gL3:`{"`VElM}$X&T3#,&%ʗ{ uU~% ɋiC>0`6瞸wJ謪 ~Pv42`AP:PVӟ8#M_H'+> =:SoMxwŠSOthm(ʀ/Y_㯢O?sYo k._zZ=ZPC9XTߤ7`^cuh<ѰM1ay2X%uf8O+ܽ:g_VH Fnp]?_̸ʧo~yAk #S ?6{9Xcs;~ .N{aPX~-GDZ;?Ei޲`ŹCA_1.7x` ;_RusȬT?Mpf̷z鹏i o=Oa"crMC.tn,G0f` r~2 /Or B_}xw0Co'ô~Z!gI:U\`ahᲠHe%՝5(+g.6Ri^+fa"n &v!~xJ)ηCʏOW 79` ڮl/_uFD?y뷫?/rڲZk풳`V{S}.U/v饙7evŖ?&?yqnt^T}߇.LO7n m{9lҹ)mQM]zmq Sg_'%KB> ,B_{O|mxFK&{?XqU͂Q|]_y @ۏ4wgD矗;y,YTV+\=i=-`vTۚ:u gc=Nc!F]rTbq+`,% ׁ](6ɹy~qxOi\h1cLل&VudgndLN JoWթϿG<gmcߢϦ{ NU>:]m٢;w}Z㾡̕ ]0n]5?*o&\94Ô̬5Kocnµ]0 dTţ*W3.z_7{Xy&r j/Hmό?|~?M&N~ƽsN!pRjDZK8Z_tR;pC WE/dzr)}?pOJ Z8 cuvk} *MTd?KpR _AJ!lũLڅѤa# [_@@Eod_nٺLf^S@@]}!+\-O䐾0P4-y#:P'68Itˈ 5\6-z켃mR>_%8l ^U|T4p٦'WʼncA32&Leӛ?*k uqOZHŴe~2|2.wrah . 7ceq?ilXp| nuyU4aFّU~p3p醦H.1WvulvUR]]}?oD9z_:?}W4)^{Y,]wi+;LEf#.]:yC lyZ֕#SZ4#ń8 a9zlx'XL=կ1 `( ļCob 2|_IY}x~+u>E@k6>^>7z(65ƚ+u~A7)UDwM`vo;P)񶕷3l0 gį|6g[:1 )gtm0^߁GǙ$'=FVvqroJ.v} ^ _f+|;e\{ʠ}ac&AdVDt>G$1,e2/auM&3,ՅE#1 yx#tΗބmgbm·!c_}˹J}?{B|[c.R)`t?ȹ7U4c+_r)0>ɓ#f}ݺRNMİ64vsh3\;~}҅^13he3ѵF~odZ n)}ݦ(3ޔt ܯ<|%zSРN?ZM!u=Y@N>ϚL%q%C H!ۢѼ3W|]^; .H40Bfnu#eg?5F<ߪq=5/y D J,[u}ot(z}7(|A#m,LYUl1:r(1[DV_8򾁾<}t{R/NgpP.yߦ{ tʕoYͬS9[iD~)E:^oNSޕ&/b,t8&ǛOM{Rߠ66wo]4/ƛS2^5*7k%~ilUꍗF|0%*X? HKr;޹o|<*-t\,t7xHgoW{^7$cy%~U \nFp׬lAts)ܘA:/fWr*Y3%%3ۤ8#'~W̍1x,ߥ%HHW18]6t]WY|Nˡ}_|#+~.gYk@g&=-<ׅQXғ+M-YFZwMIX@ ?6u{# _m t CFbu4-ño,x'Z!їD7aϓ'-ocq"͎q97 ˦70~ŐJ">N ~T.z'=)Y[\t|!A(Miږ:m O]'[ !&#w"*&>¶%rpU!WfoiSʰ')} :@{bsA'3)~jђ ),[Z.OBYmvmiX=ꞆF^vU'lާ1h>Xhi7KL2Gj]yN~uWmU"hkž>HlJF \3V:yv=>ݭ8|h'0,K0i?Y1;FF#u$(x:!0^6>އb1F} KEkdm_H>D`DF/T!noh~je!,Dz7.[0OT,0Ƌ1??1w`7EC:z '*Oz߯O;DI~npC/u=;3NJ>C7++o*!GC-,_fނt[tF=3?sv6Pu.aR=&2oKӟ$iKY(XߥVՐjqbA79a3w~Uv_J}#h _cjhBhmk~ oۆifិfתf5}ƶE>7khbVLDgG#P7^hD@I<Lu?G}02>2g6VۥݮM)+@IDAT8 ξ- 3Ro_o<*y;W0ϑb|2$`Zy)6K.|=$> vAh}mZ'D56~ytñ< Y~&z/4`Z@"ߏjv OoIP,y}rm/ qʑ(>h6BiEys_q ;߆d_:5K쏓?>N˒) XBᙒ]'.SƈbJaB6nM@@ Qo݀ &..Dsyg%IJUWT&qVP4zl`=aAJ?lP-\ ~(?k^`EG,WHC{'ZROm6b^hWUJiik4ssd[%Yv=[) Xw"d{!xO6oTt&~Ճ^m\G֑w>P0Z"ޘi 붿=gaIWV YhaLTRe_^j.2˙2eR4h*^vzʎ$z_9F^ugȞk͋$羂ϟi{cs]%i[|_jfZ RR)?z?wt4L{lMvԣ(O嵴{B2o!tkDrbP 1<+?RQTsRbh,()pxF/]1"Y4 im͌Vyȕ2/=w~g 1oj̝1S?:eurDb3BYZGT ͈K㫂T&g15׊w/)R}1K䱠v0ACRD\@{ Sp  L2Yc,P =JE9xK_1e}0cPcQ*$Q73sn$DYؖ.0Cz_o_^4@"66* /UoKe2sf2=Q֔U^fmeʳ7KweL=-'tPyv%KkvsTwu 9ˬE=Pc >,)F<8' w*^hɯ~iA/B>1)#{C25ʤt| *$UT%2cuT//]}MF}͙W> 5^>`Nޞ Fȉ{̼(̛2ɝOA!cȋ2Yo,񜼡IӇ(`aDžڟnSHBs\ۣ J+gz_HZ]X|iH/Ygɞ/q|i* `G!lĪL:F#J"#W&_s=$IUup@@ @ =]ar_]\͙Jj[rcdL4iDo-gs} L<Ҫ{."A8/sqYmIYD^ӲForSܨx[叽~# qAiC* i79D I?.};ab7b8ozyU7jXv:[ z5cLL#"7k#5L3-e3C)e"CÖԱ%NƝGQ |ۀ ǿx6MN 4'Hiqy'Ը_6wJ/?nd%|knSNҡfq ~E]Fdw5eMg%j5HBXQ~cK*_7Ti󶒯Љ? 8}2ī4FJ ;Ȧ*tH!"+Nb8Q!e1kҮ%w,גqkcF \8kh/A6ﰵtھlVҾÞ!x ۂQt #PkjV~)?v704׶MmYOraj2,"y]jx\A%lHmNV&5htX`E}Svik()N PfGIN>V`)قi_Noq_6`+ؿ-k٬rH4ʧxAy&k0ϑ&4z)'x"J ׍ZxK `]d4mڒ$gΩɄ|,@#AӼ|6 դ74{}CLG>9`@ 2rb;` k=Śxj(Ii:ϗmGT2W^J,vWg(4҇/@nM β5gR_"U܁tN4Sa2<'/Kg!vH@j4=}WU!ant13_Azô$YL%y&ԸҳRc.Uu W؂d) bfAOF@@ ~ ﺧлq3' qʙrY7>OE{ɱ7t\u20WF,4)ώ У*j¢րyD&^K}ňj9 &%oYR~{;+>I÷~LwfyOj/ o#Ne8&@vyOxB&^䝻]-{.Q35f&*?OAj"^~v.;꼨lBTȶ^jⳅ MFn${~; tSOE0R[pu|LrMJfR J^19ˬb Ѓ<PdUg֗Ok;3J&-dQ4s,N.S|0""_.dMbIry" dP;KcVҷжw/;Iyx9&G G峠 tb'1JBր"K 3ΖOnV2?/LRBD=W&YɈ Y_Bƺ)<[*`i¦s na餁G.# gVG3cHᏒF*WSik?R8ScBpcZ{QRԆ z6I}c TzSkQh18|MeK-o5ܽ(?ʬ&؟/OYmHwVI$)д=W(| '^G}6Lv;g,S?Gu9Q߱u,՗v;(gqRQ}ӷDXFK]T} 1˝<13% lKՇ$2k;?zJS˙e6[Kycف5m"7qZf&̭02\|'K' ҕ_nS5i8x4=Oʧ`ʥ:kg?99D4F6[ˠ `zV[a )!hZ?(E~i"WyyGL]j_ ꟗϾarv(P:Q95"}2>Cs}e_RW {yrO d׹*~GU5.̌ qMJAW\/R7b|C2V2YxJ\I DUN>=2_;2eLqM8hB6_2HisxZkc&p3CIdܔ(^+cV/=ߏ/!W|Ϙ4v㲢蘭D~+bV<qdf43=e?.Q2BҲw:˞)WG>y8(&CxY98&n#D6|O;ҮKo0sS$,ʚT߉W4g#*gO#q`' ecY AMZg&8}ye%S"ӒC'z4%k$ַ??ƑA ]8ߠܿ#=~H^^auXTLC>}rc3ÉoQg:-9v?m.j,^U-< yH4ظi6 ƒIkia< ReS2˫V g3'ヂ&^u@A=fiʿ.wi{]%TX[&GLt}WR7ՠ a}w<9]x2/n2kZgx$iNZC|֋8S)ipt<2FMӛt06CYyZb3]gboӐ̲ Mg/WtgMo&XDXOcO; C:{2ȇcɻϼPU?F6{!@YH} X oÏ'a 0bXN/kMSne~+X?5kƊ?b))>ho郹@ln?RT,ʩ˃:fdd>bWɆ2:vzy :|~>r#>Vک9q#7I\z\?tvXS!k`GƀhX*S>{)ɂnW>p &[ӉWm/&'798z-!*~21Fi_MY/!@@ ) `ܺ@{ղ>_>CWgO @\>z+), ơ\?"6d̗|ZMs?5兦f:5g'?Y}E{qwgV?e-Df.:-_m$;>@ߧzAdYd+Wqǁ%}e$x5L-4ь4kDx& 0tiiżc #涴IˉT"L[`3_Y~mG_9v4F0!p!;b&ˎRhJiß>opMy+Y {^-p8+n&Of)WeDoP_weu"!sd?O^o8x\8\=i6U)ij_$͸x% Oˋ7h9iC\kJKiz&~,Xжo@ސmI[D:O ffY*NcQ6[ʦ|4nHA4A5ᯜ.iwINY -q{t/Pﯢ5E~l'vSY'=R䑙0\f$/~g?5{3˧GHk̵Qw-gMyeb-&̚J\쯭wKN،?_VKfRdT˿eSc>}̻f{4KiiOHJ=\~ex.ԏH)v.}d.8zW,T}. zᷮ>{jZ^"Ar?( lDnGʧ/m:rd,4DI+Dj k.S{ej=ئ'b4j+m۳cvJ2o_`{sM҃NUO.b4*[ehܽ}~.uG9H?h+/wEd-8wZv}eǡ@dGZMw2b :T|xU*_6i>OJcV9]te-oN, OS58BCF|y,GOIz OP/Y^1\fF7Ey#(?fA܃|B"5@@ ]RKuKI|;1DW-Twn)mK%6^,@qtMIt%'d J/@FI}?_Nu Ds$N, 1J *+d +ZrAl@+ĜT7_9Z[ o2Ӎ d>bWp  <{<1;-J߬?քJW/9C|TYA<e&hIu ~>&z[5}^  sAקYʝ[95'^!=1%SH'_YR2h$o2!y}ڐW~1r:FUT\Z@ Y 73 ЙY,&=-qXnw +O of=} JSZ+D::2ů7ߥCuYLmr@]dd<{nr77]~X4>1kgJJƂ Ny)'rARg++(bIc&hoYEWJ-Wxvr\Ѐl;;}Vwn׹AM"W}#zh 䯚N];z,?/z_*OQ˧ɫF1nx˯"Ͻ 2rU pV j6oRm6uXE`#Lgߞ,u r eJ,zo]U>롢|M:J!fkHKٯt_I)HM4*mSՎrC7|dYQ,ߪC$G=Z7@D#O~wZ-KO!2{$` 'ZDp.E|8G>;N}tC&&7skڏAmhtd-0gzmCHKN5Z.~ ]ZH[,1CX_;C!?KXHDPeCϳTfwRlwzk!-}@/D0IU6H)nT)~#ONڸ0_=ڟȬgn<'+ "PUV?l82]Pxji.c|%CdFKj̕OA~$Zp @@ PwyV]ԏ nȚgMá` 崛^Y<'ﳕ0 WgFA(+s|kya6eϳA K.{]/=e~?r^rQ0P*&}3<%#TM7Mq@ǿu t,uxGfN#|i y}|)ES;^@'1IArޑ.=E;?xsS2m*+1o݃grQCr9eCdegп"?2 W0wRIA]$j,UX,Uݙ x̛:V^29PIBAML|53e6rU5i։.2bl$AiFi~!>}{jٲ~^UR,KLM.C*q4|cա!BD*22[c˥>5 5mK{?ϑV3໼4 m#(2[T*J/Y˷DVbmF|%%͋R™hQIteB3֌hAKd(_ܴ\v͎jg6zmMwP(P~YR߷,])K" E>|`#{ח/K7UMʊRrǦAl/mх:K𗋿_}gwY1H~ƍ,|SVKYi[ټU>m77}'gJիd)0x!2!Z m$ ;[z=b"':RrrxÃl?a,Yll9gU㞣d+Jz_uAnwP%qbPeQ5ixô[2 ~)mu&xKq`u>D:=~כ\Dt >ҽ)yKn 09eRn`YQ:V ddZ(X>{\`~UrN+NP佧no~y9p_j+ O8p K;,}>H;0ig].{8Ͱ?H*Ard*-EMIC$m#Δu}{s]Ugq߶MlzSW=Z+/ڵ;y__1~D~e~n9ON-_Z~ _4]w ~fS, \CTGK C՝ Տ^WuW}z4mڴhܸqO< xgMG{MkKɮ=jCMEf!^E|*-"zV{92zk24Y2^A sļ7fL/o KU>Ƶڟ'qNGhS:3KYјJS3I9p5lbaѩYam"i9NcTsĻv~ZVG 2XZhq3Yd?pQeŭ]_[G/Dl7[$9D/ahz踮Ⱙ"wᮬ8zݭEu]F|crFMI?!ɴz#G >pd>(ZIt엮=9Mp^꣪*CZ|?1Oeo=XmO#C϶M۱ RGEPBmv6Qn/th Ҳ:w3T-O+Fh;V&0z(DY^k {=}mqq=6e}`wWoZ7>OTjȳ˙_K9sƟ(ZTa~4}|``Ojo%KZS=UYşdiOG1ESJ'<aQ[{0, #^ɲ)JX#VYcQwgɿƷ} WL;{;u* 4coǚ|؈1G=z?w68v-nU.?:iദ(SA^HRM?d[s M/,_92ʪ$qv=EO}e#16qX'^3س3Y c!!kQkrszc^iFFoJ,2^אQ^iũb噖,? vw2rGz |Κ[q/Rɥe*,>P/`_kpOkk`;twA~ҡr=IyS֚v$ļ:|Kk_OHÉ_fkqװ|r.w'[҂1e-c}_dv!$G A uqUކIJm<ؓW鄿wD襳97k?w oM?uݺw*ϊw/ֿm&b@>,OV'J 1vVDa0sk0\ ffΜ͚5Klv5pMk;\Z|5 u!qȯq kI~]ɯ3qɯ?(>UZZ_EEEUUUQ_5V;@]@1o ~3>t~dZ p ׮:F@>Kv7ΗwBrT~5|f鍳!S6& C#08%M~JNiȋWK۔^uDVEm{o.G"\/.>v~ۮr>NwɄewJwxF6ϕY$_N\*O n.mVϐ.78 I ]3@랤Gq~Ͽ5byUj$GpƏ Q\^a6eħ圽5994mӯos\x>-6TSW4)(Hp Y{.87E'!Oa(_ ߝ^,+GQ^>hNFr& l2Iÿ ?\mwϗîM>%< _`eP6Fėac ࿅şڹQ@ƨ1ŦMe/?# }ܢ^v!R:`w*XgZ\GCCG| O4W5S>wTZ$[6%wYQo#%O%x*~ܛg> gdsiC[δ.2kyoZT'a9m- #J8PE¨t;#jiӒ1]ߖoA2(#~"#O~{IV$PLH~cلqR,=rkFjp4L-:ʓK϶Ͳ쯿2ೂ>הǶ=)_}h{d-!I`A۟қZO v:`iX$5XGdжlo+gaB%m0}^SZ:ڮ}799裹(L $Ia:6>l]V%=*3[ eMd6ѺA~ iɧ(SU|9>V_5@6oےpGJp>Ì@Z"#[~, }+aiۦqi7P6٤[(|_SORI[HfXa^2G_@FeMt#oo J ZJհqi[iDQ+R J//Z-)bFYoк4mC|ڰ4H/|W2g9)@6I˯sgzA%~d y#NP> ̖˪776f!CR_YgLnZl [iLMkh-KJ$A}iI{ɪ'Işu5lL*~c:slsee~ iXQ"Z-CME2w:~qj 7k7j_!p`>2eR?GIVc|R+W%sf*,7AHnCCrF-6M3+[>OFMi9L^& |pN3X&}'FY+7ib5m{?At̙ Fzo޴jD7EkʯgÖJiRGj"V+6U2ttV}ƬEx`TH6Ѷ MaC]|B(]*s歐 7-؁;`Jo#ŋɒKI)]Xi/[oaJit.)HMKkVwB#5FS@IDATU4iFOcK~xYOҶdSimg9߹_-WF?ӢysiunӟjW$!۽ʘӶGjP9Ƞu{7NҗsOXx߯13gՠdJܸF,ldՀ$$@@GC̀8 I:/=I)I<x֖#5e[̠ o 9O /??o/f+\?Q%ӆbu8?>H%d Oɉ۸⚁ z0Q ޡbF?|Ze@@'@rOj &c~Q'hߴҘDp3K_x _g0Q?NP#B /?r[<-ĽgVrȋdѰkq\)2Bk/x?a NQ_ok'3!@@ Ku3z &8S7hbfll4:4"6fZʙ? [fsjOq6 + bC 6NS\hW/dxmԔ'N,*p 0Ak1?6?G#a$ ǵ G#:c ! O,n`IT1t$"]QgD/1hf. tWLSlR`%칀r?-Hڟ9hp _ߤ?Gh?i7Daipa/^BϮ@[>WCp@@ $od>)l+::Q.bzwTdqPc*]نJs`{N9 \Yw c !z zt&Mx ޷vx \$7?|"cUw?p]M$uvawp @@ Pod a7\SϻI p㈲0e9^+r!/~·)F8,\iL0|@p8|\ g-/?mFĂ.O7Q#UQg&a}e>01BGaFC @@ ?Y6g6"nI_ȁUd. 2H,f|tef ߐ { '?n1GawE @_&aa>s۬0_/UOMt&񇢀Cߛa6B@ @~#,n%86;ә_ٺ(z6ʸ^3ӢbNA~D?4k/lTYz{TpO !i7 O{QZ{pmH[ qj#'nDp,jxsjw@@ <u, 9f"qdx+" !P|,R3OZ# DX8; LcX _h(J]~4_eViҰTϪUUJ/,JR#i ~ _.5~_G=aw0yRQ&U-jg;2wՊ7l Z6P71 rF ?2\WTح!0PU8f[!eUa\@9阮omA#!@@#PA 9SKR蓕:JYCvZ2IS^z7e5B(f)pC?Y-ƍK X* bߋɓ!4i||2K9UU'}/4PM[ Y4YC.&>-O~_>ni\`?x|}X._W`5wF~ퟖ{5_f=?/Ӛ4|[z+ng}d;K-6?*EhGR =?u>w?m\͸R:_'ҿ p/k_>N91T@@ 4uv#+@= NL16)"#'"p+qA ɉS{y*uC~ ;dedJ[D-CiK^׌<(߻|_,Ϟ^2Mc$ [zkn?25dky/gNo  ͵?ũ9x4b}hQ-Ո۟#o@Ca av~`_:lg}ՀU$] M?ǾAk]x-OWl:do6(Mcx]o?=8#BV7ؘՙC݃ig_Sl$e_ *9YW5߲3-yIRد=EXx/uB@ uӂtW:J9s#@{A=/&/< )0G fT.CqAGR|Ɍ\uMW"E L)p%& ?&j! d )".Jџ=_848"o}e\ d¹ bNoǵ0#_ kbMjZ>S 0O3v/B t/xZvfvyX%3؟'+WigHƪ:eEmvg};?A&H\Wk66Ws9r!"W" [ӀtZԓUn̰Bǒ>\Ar[R}l Rl_F64VJ`%yOMHk}Ɵp3qIK@FU YQYIT7/Uu9'YDyb(GO`U&@@ ?ti*j^WGƩAmI[ J$zBMdL~g;(-9 ( g,zbL穘tg<3TD2Jf_UyK0}3=UUW_#^#H.>@5t*W\2NłOΣ>1v*T@0mYXPjn^c%_M{g%4k_ qug\ry~y;4M˵\!tL~ _K,C4 Ryjv]zTd#._Qd%61-̗΅/&(N>c߻_ 3/7N]< :2MYE-/2g!>xbLׅ]F}zuyx25ЦneY;w,̐2L%ۖN(7 oq<ѧ'd(U(?yjY6)[vX+SqY/4yrImTŴO|h9X@W4m\Wy ٖIڞMe-)/Wc l]@WAr'5Q?e^IՔMJRƟꐷVc_KaL- 8) ?Bz6 2mp;obl9:Ulbo~8HڍNjU,ݚ2{@*KIu$7YK_`#oLjZNɤ!UH%bLc=tl㾴Z†䋯'*|m9}G9A+?W||;e$`k-u8MmB](,Yyac:լ.S '1?fƭJNAh슭g7_+LubjZٲp51 IZYc)|.bZ>g^_i1G ʃ"Z/(? 92c:'ϖk)0q7n5coUP<1S WQŴS|,YfTOի hejؿeP]`;ZO>6QQU&{4/h# ku\Ո-yi0w:-^xw ?<~ķ2s6(>u7Q(7(̥ nly5F/ZGfGK{,IV7 U Jʚ`9d"5ORX [f.|SӰ)@'kg~#~;GB׌ڍE sdވ?-Ü_Ij!'v4ܹ]|̳q^c%qhHȮfo]6Mܵd"~cmLs[a".g Ɣ?NEk .*5+IL}IK?a`!lWHJɸOWż9Z7K<wptÑ d; ϕQY7KCy|V[];K|3t,/蟶ȩ7z!2\n,_C =Q[!׷_؇m-\GIS0&B!_OyN *Q>^ y5_QJ*6Ai\ej"mH[ m-ߖ-[7ov6mƍ6lpׯw֭ڵkݚ5kիj*rJb |r?e˖K%KŋE  l̙͛&O}]LEZs"{;7c֌sW#F#Fc8_?EwCDˈ7׏MR! Rr^6z=6M=ݸa*>i7|l{Dcz'm^p'_0Y1bz./WDG=!vDVF8IQwX@!wf^bE衲{˭\1yD$)qI|-AOZ~y蓤w|F۽ Ne2] K}ܔx;" mO~EӃ݆&} 2W`a8wjyȋO<p3^lmw',7zS\mRa?6o6M;fn&Jўx+&1yXcLƸ7cscc-?i3)G˻ΙO5hhmyR | )ǏGWXС>C^p+_ep;(r_K[GN ani?nsSvOpMvQ`fH{7߯prE?}'p֏yIƅ,ľfL<6Dl=զK7C;oLHDw7`cE\t/'7&QIƪo4k ]Fb VZ %/d X@*eV9bPa[r{wv_ C 2 +nOl" /yF OȤ%'OIΈ;=#Ӆ'vZf*I(S%A6mNgT|t9ޜԒseǒ*xS򗟕OQL.WEqFl]Iɐzh!׹/68>a)| n+*Ǝt^srpoP.OWq9f(K҇?0j{J?+.A6v퓒LAyO_B; ? mry.ofϝ31$˭.2~ \E |m7qE'MF[Ir_ќX+er~ KKjI_Dѧ[I%|{99vs6Z7 _ ȣ/=ttUrplM |5Jm||E*O1%ǕlqX?V :,ܪR~EAhx ѹA\b(6_W9;[q#_R&#HԊ7P2,J4 [_nHmx|W=@䐳:KSPhvÒ?$SiLLeOEĺH~CUVLrݥg?)@κ!AA2O.EĢ ߫ՎqW9&Z1yhQZn/6*J-nRId==C Փi8gdluQg.;En6qrއᣊG}r";'?Ojpm>8E^R󔓬AG3=T.GEkq#/WSle(?1MWIדZYƟU2d쏧^XC%0^zV;Xz`^yrgG|R璷t^ KK /leߠxNNw2;+{l4IIe ylQG*I'm ^+Gmv6쓚M,(#95,2{iv`>qhoYCI'>f8Sx@|TY>8G&Ve4"f𑚔\AɹEg Aeg-Z=x)njA=K/.t{Lc8>;íj mՄĜ|>]'}9cNs0d]!%m XLcpI$_`;>r+?1rkY Aք*[ڋxo1|WO{|ZYMێk+ `Ul>1rka." g"p>/yUl w*~@Ū5ݒvG/#wx nft) ʋV7C3Z&>9~{ڪ[It, Ac8+Yj&G;6y/r+n@񴇊mB%Mҵp| V))bwȭU*1E{D`I.f(mq.qP]Xw!qi~Iݚa4># vSds(q*d 1W))Ї\GyL&( [/7p,O!ku"Y'{mAcw{;)S;!/ew=|Uַg$@L1|Mm|zW>OS?W6' kȹ{ >u8ɫ}wJ<|CS[/CNv&-3V[]ަcor~nrSȧ$׏WڽOv_#'U/O"F 9~1PI#}|iG1Qr9گ: ςRDCVh.KЛxx)pnW;mVt8LZƮŎ c}_G>xx'(Do0ޮ1|fbEa#C X:?B`ݓ5!}\K5n4zM[W}1?l<-7,'ח|4IMZr_gq!^eHk].V':W^ޟGy0g 4=8><)vI2bۏ_)>6XU>k޺ۢ.OwsngOЀ澽m缽0& 7O[|_(cxysܘ1Ƽ/ f:9Awxgs+N:cH`;}Oix;->N|5r~ؿc_ EBVsz?cWGx"wtQ3.^,N8~sa'C'{GMOd` <=oر^bэk;ڐOg[.˟bOJUje O%k{l*sP['p ƫ'U~~Aň~(;KYD - 2 ڈRq6Yj}QxbZ|Yǥ"KgH[ mH[AvL.oҟGa9ZA-D&S8WU͐DRO')Ĩ_χqw\?ֽBy@Mk+y[AbtU3g"{W-NpT`J&k 9y$`}pI2x]%>0|,M;C=2 q׻y%-K{_W!ē'x0Ke\|DBL Nʜ׮XReՠl_R@G>v|BJ?gnuRyyrށ٣;* ӌbXYVm<"5AQgKBe.>c? <6V|#g}_2> %5*)8ϞrZEͼmyuҡuuEQ(2ښZE sLMb|\>"Gߌd?ezl2ҒVss #oR2 .Ókn#_l%W"jIipS.5IB Ͽ,#,y{3: FdVy{ԯyupQOTMY)D{""!K8\GQ5^6ɩ5xeaG֑U=d ϖ;,9?1-! ɞtld՞Gw|E08iON2Љ =bXL˕*!zrѲ1Qtbj=evϓ|^~7QnG-.jKW^Ǭ !!rE-$/5Z?eJ},[G1Ȋ׍y3QMaK|_v`Ey|.9јդ|0F$̻DMi>GE楷;*_fO6H^~mY;W2eq)O_7XoACN*!(쟐U nbOxL s;娚Un~Padx{^Fm G&/X#- N0g)Ⰶ`sꞐD܆vyN! ھ4Mn= !3j6 ~Gp'ƿH M/ߥeR q=d%d}MvFϿJ>{q(Z;|*c#XǀsI3C֌Oi e#}2?ջ1^-o(;文O&1pJ`x{ ԇ?Xr ̇dRrٱ-l~ty}yDY<,BM/ҏ0-*Wa/T2sbJק?"(XGi&)U0"|w}΄%[GZGj G.;FA!eӺG|,RSq!k)?vcspSVA@?kiҫH[ mH[`7B22Dh!P 'p‘iN&~.1ƹMy<9k̚=[ƚme&Hx>̼Dq9gK2JpDjy*Ԁ؋TJb5*s|enU%?菏h >!#)%#>($(ckSzP52ӟ \N21}T)_]:|'ϗ&/`6:0*~uُ[>|l/JcmA JC1C5CQ{JÔ겿^\Ajg/izpK4;RL'͛ jPXh*Qƿ۵;I!+* ?6IeK NR_&ٿ4h hDlWoj<| ܩa)x[KxaLI'YF@6(k}3lmYuaFr2J; `[$F8gnF[ЗY aY8sfU"*X[ ɔ?|"Py?*O@|@G( {5D6a-CŠ*5eC%Nʠ|zɐR^Bq pBfJ9x: oNK|!OsL=d? Hr?%`"/,Y|P:4E86jC"۸Y^elτO-]-f͒ٳfʼŲAv- ]#/ foZ7Y Cm)C2"ܢl`s B]9esZ÷:gT 8h&t6FGtb@r8[ Hd&1 >7(oMs]hQ99Q ؁Q⯕b[}RY-sg3gϓEˊM7&ӟ+E*_ҧ?#X@do[}@IDATZC؄C5x %C27RyKcriMPDɁܞǟ_ex,5Q0ZN<@HĞ#^f\~8`F)jWЧOb /.7}׿* ^1{aĚboت ;B"Ec̣+_]N7h٫K":=)fބf-Mx3>?ZuB;a/Oכ ,So7!+* o"KgFaԦŲh<5s̞9_,-xtcXg8<3&( ɭoqnx^j聂5rb}͙5O.+LK\Ne E<Nr!SHŧ|ש*mZ>*,6o͢*c7ƟefP:~|i -@i -{YP4Q@12 fE]VY8[uеҪa3iղlR6m(]wm$e"vNLƗo-I":8~ amUJ8Fu%$pA 5qfvUlDzhB+ Fg]ߓ<1F!rUuHvlGɒE]SNZ|Ш =5~j5/?"i3P e CcmQc Jm;ۥ=Cr'7׳j.-Hdb&/)ZO7Y'rǁm>U=aȠ?:-fZO Bv]I"CdȁrMoowzXFy4q[U:,SEwpW J{䆫4|3 E݅^>y?T.>DbVdm]qMR~E]Z†Z4Q'x@D}S)U4hFޤX cFBv}ڔvC n0 _|j{/̿4BrPڤq#O4D>!ԏm^NpdA&47>(X,t5Q1[҉_IRbe)W\/cX{[:RRJuЅUZ=>+.qlBkJ i&ZߚDm O5~Ъ4~Ћ_0Sw;IW,rC7zd珉_U~)?ܟ)ukٯ&{-!4q _2#6(d띦1Ge݋Ifs1I\ <Vٱ TXb@&-%ڪW0]h޳Mc')Be?ؐe{={o[Gu/.[!kOβJX6~xWfZIIf_I˲&S=V oSDY}Yr8 qF(-RԀ~g4maUJQko?H'ƹC BU'G4g=&Z񫷻Xnb;e|?rƾ-aM¦䭉|?%Q@]hm1x|Ux)6?o6 @E~kO^TNFZƚ BISKRRUt:8VЖ\W\h!o6J .h #|o\~/2} Rry)>gͷڟ wvh. 8UKi٪4nz"_A*?'rlQO;k犋Fwk9rorNK}"YzAcSqI< -kO\n?M+nί[hjg# 51i|QY4L[ mH[ mvk h8J3DZXpU?J"E'q'`t:gX}Ǻڈ|FCl#OYɇIEV8 5yrBoEO,8,攞uARтj @[_,cI&|<[ZţPB[k:`a=l0BO ցFl{<-(O p}V'I6CyR1;2=,_ ^Z?JN L>mcsem+*ĵҚyăyvj[qd~"%)߷)?mwKXRMOme; ^dlP8>ٝm},Oڜ-'@'=a?Y8˱׀Kxə₣v(DG׼ʝ?POo ?YۖRrտR)r7`9Kɾ_!?`sԥ^*ħ:Ϳ`ZUIcV8~ Ǿ!be!B N?W-OYN;wZu\pE-yhWp&. %CWowU\! `6ts{,FgqӖZr^?nlgl,lLpELs‰-*$GWEh_) lE<k÷$brKk Kd0MC1V&'|A`hɬۿtA6MH@ YkZ`?ہF}k1cN&q~tl>EvԾF >;YcXtJ{V >`*ZI%Fq#|x+KDК-H4|5s%f[K2Q M5( k$fr8.O+ Dj/ל}9+>ʉ<W t=S+|+1j (fcDXB'_ӝEoB0~4F*lŅt҃:ïZ7j!O+UB0;C>]{[9F;48I,) <@ljܡćv>ӷU|.{rLbRauޗ*E}}x+*|P0Z)R"ʣ2ށ" M㬈|E\W~!x6FcEF1'eD$ׂLx|C&ʫ墓ylbwz<?⦔ՕG\C5q|Iu4jڹd)2r7]\9"1ȳG nG:H,y-܊ Y9UTzj)ͰA rە1QrȇOIgx'YS,>=Ld$xb LXka.X} 4,o=Uz~uyHFg7eL5Bt"D|(vR2f!?o/VzgaJ->8  '-5֪w ?;"oҡ$`x/u{{Jf0i?0w(1!JX"tҶcލ)AFQ;?5WQ^#g^g2 U_^0Yu*>y:3YcV+_x K͕a6+ɡ>(` 2a Α+:Ȑ 1ىT9te>uViT^B nE.X( 2/td̛ܚB[J?0,@Ң(o|/s,7p P})˗i7J^Xl|bOh*k> R)?',0&p1id @ |~אxZ?Ax&4,C<7ڳ,KPIJN1䃉+dһ[/^sI{ڟ/!c9qwbMYR>ȸ,Ї,e쏛 \$?!2d-௔T8[/?tE' ߍ$nܗOlj%ES(WNLPG+NFO_F^ H ^mY ~Ž3U2E^<|3HpպCuIq yt@)ns9JS _ӟeZBF @˂>•Ɵ0VZ5n.iq=qdh /,ؠ|{X>c2]Pm<ۮۖV3CH8Z~Fh_>ׅOʷK{tUP8|*)ߞ>8ZiL+8-<6X``s c_|Z`V^0c9 cdqe ix€pۑmXqrur(^?"[o+W{ΪM=H@sJm]ynɘ~FXC^|2"$q%w }J 2H䫏cm%ǟѳK&*Oh uE`R$_`+xBe ~'˂%W6~vovL.9^˧ۥ_2ͳMԎ$|[O0{3؁lW)L5AbpP|[͡nGy=rieo ULGIm\ 5!C '^yFeO<\(~4 v:rXk|q<1Gq5VEu1>;i{XL] &.{Yg;ņ>WPIϲ^HwμF-Z-_ٞHe&C&eWe 9RRB{PH^Xei/DNF7И19OM޹R,F$ ۵zviz|g9:%Ie_ >#e~EM"&3G`NOub?dTV.jCJI|Y::QME!py[֯?qi/$AA<~%9[_ +x` y9QYmYHS/vR3:` ~+id1 ˤ՘,lƔs25y7)r kA$>[S6[дTɫK+Ee G(Qo|R"q%Q i`m=I\Jɲ_xsHјWsg26Lmv߳Qr߈ȟIQ\9&&ۑ3Ʀmk.'\y3Uwxci'e\ 0ڀejvb-wl8,&ag zmԓVr/wgcf c/ \$w_?QxoqY;sb"nA`Հjtdbοp,o+l(<- =x:X0 \at !{Hm_-Sqi2!/U õOTQeo~ e_SۤPD^#WM ڠYҿLSny73e*xD'Ӓvy{QjQIWc6a>Ryc6&QI~W))krch`EjR)5>` [@C0zFVbҠ wL$aU!Z#y UfcTRʹ,(2)"YS'ql#]˙W^ca#eeynxRޛF xT{iJߑ9>t=Mr8|q۲OiN}TX'0Y8i>LZmR(%o%dM夿/sVmȖ+eΤa,\y@&~$+  ~S .iYSA̓oiT8Ykj| bמC:!ob@vGbI%51se9:7/' T\%rvrKKRVq^譨yr4/B%\5۷2o4˱nܿ1Wlo)8YHg^êb`S&{ǒ芗qe=VQV/%߾p郪S¬]NgJʔbʐzTÊ4"ws,^Y0M?,y<iIEYĨ oXBq-[u.8ġӔm^ڐ7~(![":@&Ξ%xt;ѰI) ylgg1 yf L0_I$r\ߡ.h?G]S'9s3Ѯoc/J<&T\@62,k͐oJn7 _?CR~vHM9^PeԐV3uN>__rE[4qBOyc^$H}ʵrm g\&9ޯ6#vU؟rQVZ"{xAFgd‘rq}O8swjr#/3yWn>p/9g∎D6"r̈́eKkFB\<Fw@E9&",f)!T3ԍ eͭ)eŦ<F EBZIEt*¼ iu||LDjB6H#zd7b HR/A:mH[ mح-mٲyfi&mܸa~zn:]֭Yƭ^ZVr+Wt+Vp˗/w?[l[t[d[x[h[p[`?vYYYn޼ynΜ9nwuv-U>[ka^뤱v %c~oylL"Oq"|6x7!n2TyJikrT"v+@n(iIVZU ݕ*ouaw\dzb}O~!t=( ݍ^gxԗz0'_5s?_HFl [?i8Q?[p>2"jzц(r#'l7bgZYnWuvgx2r$/nF]N2i;6}EU|RǏ/!gƓU|+Lﯘ Wp8ٔۇ.U@ u&24,gK%O:/N6 S+GPsy)߆o8#?rER|UI7QE ?'WngkSHv5sGc2ڝKߣOƘma&<ݤ*J%OR_XGpԅqsJ*g)ac)OEy3Lz{Cb䜏AØq&'2m>͊fט^Ș/wX];RΛd$s|5m JO9d6~!GS+sIg78NNZ9Oޔ'""Eݐ=XAFLX/ؿdbODvY1\0OYVgќf"2ga|_Rch׾eq”ݎu߯ q?"+KI[w?tR AQ7O??(yK!r߭ bmBOc_a_3KSݠo4S:\)26Qm 粽Sldyb42[s.w__Bڻkƣ1):X?kU&>rN.V[&1₀qo~xdT=uX |/ gǖ`NJ)X1 ]&2F(1<ۑI1!c CR"%>+2~vG_sO9NCn%>۪g<::ydI֣(̟F/}ȟ>ڔJ6)\o<~/ށ+>p`?a [ߌ3n=v1TXhh]sM}:zǠ"OKOBXWbP>JGzhFL*{*^F^xbxNf BMKt|<޴*?9+_Oړ^<5hWj;:(͎[R]Y_*_mo! g =Z /ǎkyl_zA~7*ys?5MezIڻE- ˕ )qS)/RUcOmبOa -@*`h5gB/[4&`)>C!|\:eQ*Vq{tl^%x0** \<8g m//)qdgPmO!o> y UrGx#+Ї 9h +ԃ:ngZ>3:4FaqdG:Ћ]{ZO)3Ύ?ӄ27̈́M"G{3]wϗ箥@E mΖ=Z6;^ΕVO{b ?ny` AeSLycW<_=o|,E܌7_("B6q%-5r,k 3Nv_yu7T/rLߔL ƃRuP"-н+8=;'n,z]U݅8Ԓ"/Bt4q֊5eDgB%oN!BF\t ]CP C5iJ1M[MDJr4FDEt9:!9nʽ.޳^Yu H" Q@aS,ߚP4"cc*Ogv?Mo)>BAqOM [99G0&5z$|.] TQHe iV+(|uD4͕mZKʊd}z)oT* %Cw這WشD*w3N [4kgv\LϿ ZU('Inn#|'Sڶn%-Dkњ*i jN:o$^˒u5|GN]-}}=Vw*|}RZٯ8nv0V^,k0;Jن;MŎ/]W*-R\%mڴ\Ytr'$ ,c=SZw]vin47֖odJܶ{{R/kϢ|}=KIr~;P(1IYϤִ_ oG[~O?e~BiUV/!/UŲjJ)jRI;~D:Nj_(KJ9 :tޮVՊuɦ̦ ;kڡl~6V2f-w%-YFCe;%zZYRZdm"_ӏ--(vESӿDVdI.Jl޺oT8G85wP^CM.qƋٟBٔL}f !Ϫ(&F8Epaly6ۄV!؟l(8~ {\U )%xQZdMej&Ͷj6b[ժB<;G %=]]W J~kG]ͧanZ&iTUbYRNFnFfcqr7#ZYX%֝z:&⤺|#e5n& %s+pв#]d,]ARxi',K#mx+KrF'tLjP>_bR\X4o_(yR@n<дJKI]q}1Dr7Pc&*d5R h*-|0Ԏ?; 22PFOP*|3Wo;uTY.^GΓӪLIZn,[O{d i$+*X'Ս3%eUo}3*/Їako%'ݎo)砽oW ~^+&詤&|m>"ԩ(77Wڴ<H).v|"W;x-,-(>,Zh%=*O{` nʦo DvrKƲybYYT)ìsk{]Y›e\Hw{{o2[Oh9)&I/G!mW}u};kWVW"5Mvߴ"OU"y7*O xՄIJ;2i>#eHiz7j^z5VH(MMLvt23.={.?GեtW ͿKooYU{9"i %`l֝w<m"衕_-ٮ޶Ùo6NK u-T??;jl:tVk?kJ/_ Kf\Qڇ$(G_7ۙi}Є<,;_!>Iu, cG̡o}'?Ɖÿn@0rGwK R_OOQGZF"j)mwcpt^NmoV:lkmxr'v2K4ο>ݺlm8*/쌖cXȉp6C qk Nd{:Acu5IDy7H9#%?MąrTmĶ(ݦhIo>gK{)8cTCRNRĖV'&[ /2`μ?1?rQ,hA9TMZ=fJWy_robGmhEƎ&'Sǎ? 1 nŬ.+M F-2O ][A'wnHFP@4@IDAT4^>/x~}K??y:Iڟ&߰T9O6wVxty&o ק쥲']%6&H1d_*o_KNz#%]quһS4^=CO=?B0@Fj#s '~ɸ_0/a__dUKmi8Y-/9T̐/}I}IJΕ_׍?}-=Yؗ",4^Þq+Gp^ syr,5E@Ď{qGYq}sZ8(nggqv#"4*Ʌl`^4x鳽W$ґXOYM)ߵ7a%?H5gj%@ý0Xf3Xn>BZ{ yWiVB7$YQ#eC }(!Uð )`$m^<ɐ/Z]'a&n8x;ѺR+\mq4?sHso2%GC_eɤM?vvds.cﰭ |EC+,۶T͖Oâ= tD?S}[WZ.15j^nnS+[1׼ܧ(R=r@,6f9;麍3R^ `Ody<w^wr wgnm?U*|.a^~g0[Wߔ<;e/c}|'?@۶񧧞& 7Ni~ߛ]]PQ='V,^9P'J0ll$gbq ʼnǍ1h9n[di`rY d?sG!]$705f~?5A>5CY! G|isurɇIdd?q_QS,SYP$;O_Og{OU.~Q֦rrYx_Sk?~FF =N@uNW0DĎeќRQ- \39!Y͆ D_Y1^zs|3[:<9|WkzROݹGD8ǥ!1/&ƻ]Y[&INHHHHh7~8Y?ř]18E^MD3#VM*_)Ev5 CÃݜIx)m6B+:chi%/У=h/]م &@7? δq3?KM`?Ə~3Eӧ4kL22ۡ( tOu|n5o8ռVƮ.:ۨd'$$$$$OG7Ma-*^aRş.bPL TpjVTWOQGop"EqL+dP$h%ϠP,I2h! H@fQC ):z9h,&o':OI$a&-?-QDMŮukC8 FCP[Q>Ҹ˂/] [C FI˲v qbdH 535%GF?_p$$C0W$gkq?Iڃ,H;iCLv       7\m0yɹ6;yXC4Y--{:"EtU%F؟vWIKO1$-%㯆)sce$G$TI?|c2Q;ݒW;'@~#˖< B܌IY7 fSc<pk-TH>gc4}Qm Ocl%မ0ą$l>񿺈HxSIƟdƗ$H$rG!ǜI*4։Io+%$$$$$$|hodقZEDd7Ui_Y*J2%IczTb;L6{~Nz{WB 4mw2]TRZZƓD۴?uK`)i P3];I}Cb)2cx{BJ)-P9 KE-EKe왲|C#i!ɮv|f :7Qg*Ak< Jdɜr̒K7 XJ0Ƥ0PΈ?opm?W[&iiZI3Li?9gRDCAm;Oov&j`i-A A A A A A A@~#A7Neܹ}Ē1c9P羖fҴiSith3ʱh[Owԑ$_$4f>%Uߢ;#ÿlIf7zJI/{i ֤zr7fj;fI?69]mrzZ+45&7:>pקγ?xЊN3Pʗl*]'}o@٣{'=ihqpsßaש2{Ƨgdٲxߗ_o*/m7=`o񫴿8_5@L:4k8cHf 1GgMZP}5ٻÝkB?AMq ypLd?m+4xOb|mh|wN'[8?풳@ýǹ3tW89?Ĉ%g|r$Ri?,Sec˟̽h$+\cfA-› WWȕ!.[`L*HVkCEr]=SS?K&zo:`I@S)]i4[?_m\]͂,HMY%M!g]ۈHXTm?%%1O'=]\"ydEgO.~BU{3*3wiar?<PVgPOyo׿D&f *g^0Q_(G?!$qR_*{[lǶ\{e՟? ڀMз ogh2їN[x#8:%^U?䁈^m?˜ Xj5f/hKrPiߥ_-+ϒ;Ȥ k&tA,g?ӛXz#lU ٰlL|y'}nP,k@-pL!hٱ70Ε%o#Β߾NOBąx|+mZl-Ж#X$3n'Kޔ;.R.C_ n-m[*}ϖ;Cwؿ _'ޝ|Y9%W`xEOJ~AsBհyI v-d u m׿rћ/ƚg׆7R@}#!0mG3jvqMYMYNA3^Lv7"-䴿TiϱqcϿZf?}3orIoR>Iȟ$W~| =b %W<[#wܲV`^$1)'sL.۶Y!uwLzK!+l02D {_i׍H퀍7MDlh%٫Ry8~,c{oC- D メcLB~@~WhWTW_7F%4|?؀w /S0v~\D'f`N=2٩P ;%C'M1H<,bA 脢ÿ+пicO)7o:vtlv27w o%eu~N@[>m%7ޏMwf?9s| 0Td#zi[27D};?J8U!I\}cr?^x%Z178uSn޺y"Ox}6y\ UW=.ԝ7E6'$$$$$$4|,B['&!"PDˊS'"FJu60H.nbcitX'kJ*q]w7|m! GȧWIiuj.u{ 嘠%d򹲰WeҥmWdI=zH;eH,9YҼMkؽ ܻ4 +d"LvEZ82y>nfK^hL̔$ 5'ȸ emyTgG+uT|]\w+RJf-܀r}^_KdܸerΔVk.ҹGӱ99:ɽD gd]dǢ S iԤ#mL}H=cᣰP=+6 OfAgKn۹~!(|aeԭX3Wx}R)io9ޕ6>,vz?]tY|2?w,[.k qjiu 񦬧,'%U}C LK5wo 9v To]+O?Lyr #bBY_J?DQldrZFH~$ݎ6n]:p٫-%keur~*U%>+-²Nr'HmeݖqR JY(+_z·r$=>% oj#j ?tLȭб\5Ov %;4oH7}8끢 .F>}c# $K:s ;ſwOsR߭ҫ;0&4Uzuuo)A-JR?_>x{,}Xnr1ѧ(toX2Urì̖Ң|g=eޝ :E_jIȒ.#$.Me{Η%9;S2{?V\Q)M¥,yäi2qBlr7ܥ!Dݥ-GO\Dï2!h}.?/(Z.scl%={&n21ǢˤVgfHnQW/s௪S}^+ed#1 O)c]<= 9At(O𛞪5/hh1%R,+ e͊uA?TߝVFu2wd (1f!&o˗Mwޟ"K61j"&'`iƐUSt\/rsg+YPN?f~ S?/T=SYAV;c.= U`j)MeKfҪSWķyj'JUZѪ76etmW%1ϗb7Jr>ߓc4a|-/oۻ2jK 濍lZ?@|л׮;I_H,_L(-`΀\WqO~cD4?*GmؘJf/}0'7;C =ZxW_3VKv6nҾ ?N_mzoXD̺Y|1o ͘Ƿظ[+umK`coEpd}+s~w?ex UcNyHOwP1m_%o%%%o6m_aaa76l֯_֭ |[vmf͚`U+W+V/_,[,Xtidɒ`E  ,s &O AP%^ -ҫh7㉋1?# zt5/uJᦨNl !]  Oi+MzP'KɟeQ<.\L.׵uvU]OLxJ%n#j=Z6o]o#6zr%bQQ L|JeE[>pTyig¤~qq]8\ƩqS:Of_sc̴Z?0[Z-?J?S6cN;է-{]׹1,&!8vN_[57eNboTII7db0m<]sTf9xD)4b1RG'ch.c2#+N\ya8h}8;{c)^廴 O"\{ b&õ Z lv5pMk;\Z|5 u!qȯq kI~]ɯ3qɯ?(>UZZ_EEE UUUAͿj`QϿ4ؒ| u ;]~5sǤ 2`A Sb7Z2#T6 g+M19W\|^ _:i-`..7X WM6pa9YtL <=$,[C<_ׁ Oz"XrK>MH:I䋂71-ٸj^L:ؘtiO࢟ rdp! [JyƦQXqP>)ʟD"@g "S^ȗ"<':܍,x xz)o*uj&zA׈'gTxt N0_ƍ|F G4شӇxO&@UH9c忺 8W zcfl<&!'7>){1/rp\|RӑwtE}W◂Mqp}%sW}=ն*ra3cŵo^&5 ;C>X1Eۿ-;+sLa} !S1&=<|߅W".#0O?Hou>r^ܤ {s&jG?DY;pV=^7㈁xJ/4ܸbMAiWMO6>c(1=.&Ok쓤!}}#ΘƩ;i&8~d㊗+Wb-+w"vS4>[as'NroIJ ^ !v]<1#vOsy?M 'o?nq-KCL!b1׶N DnGq8) 8efQ`ꪯO=>fk*m1~)s›<򻏸u{z|ۚUF_oeI"2M!ꇪ//ebK>p>Syo0_MZ8 9W+Sutb-9$$$$$$4,ÆA$7%w>ݝ反=-'ݓQ87TU7Do7 u72LxtcWVU$H"/<%6/Éx::<Ɋ\t2nT:<hN8U\#`w>g, 0.:›U&'6b[ޢ +uڄ KP^O4L~<ڀUGQl&+m:*x#OW'<.= ]'oO|+O y7B#42?!9!^[HEGZS- ^qMćsB[C2Y}wA? ~r9=cfBfo +wj +I%hRS`OѮOrtwˏBsm.# ԛ%;v#T4 l/vKxyPZ;)ƿ$m W_YH_JVl7KhgFכ4DfgB+h.vkw#J(=13XʲB{T{KxbT^엲Qo,rȸL ""()tҭ~lm7ƻ1ßx}O'^ yan,FKN= ʁ7*\+Tk1+!k57Xaܻ*jݜ_ޓc7=MMVۙ/1OE'\RuR'>̄ڞRŢ1炷V)'5|--".?Fķk+1y$t_;GvZBla~>|xs|m_O | ,2(-*7ku5bVG`1 n]Cob[&i0OFxyy?h1ݫ\߾v԰a߆==.XAQ,Uk}%-b̫,[(spb,֬yq[ϜGm,p[b ֞' #k߿Eۋ?.}XS&`7xjuma/3t>Xs0>V^?0 q!`A\]PpsHP7^/}Jk!_z4HϴŠ ˗qc*9 τkyO9ʣG9c:hN-AR%7lK #Ѐod!@-$Ky zm,jQ| ['I { zaϲ |x3@FO[`ōo,ӕU񱈮7hr`LLvvͫm-Z$Z{ݿɗU$c[.oh5ƖQ\81[E^|vCQ'CV?e?tF;Y{Tfek]#W6-phA5i?#n ?,C 2S+dIp >Ɍɪ?WEK_o O"f0ka;8"%<'Up.hnE&VlqLrO+rt" `  TFg:G(b5zXLB_7ɿx g÷zUl3U,з#r/Цmݧ$ڿpAt6e(goՇ4N}o)wǁq6rDWA j?ޞF(;KT??s:nwoq=4NOH 3?/| iߴ|JX*?{"nlS''oY57SN.np}{÷G>ٛ@WH+)mk@{qaзc# KXBX'_˥E(SϠm}KdXO ?ư_j6 _ew2X7&)}߂a( S"n+Z<_'iOOycl)smϱO+[WumbP?Ohh&7j!x97Zmt7b?iKqG+'S6xGim7&r2iqo?_Z5sL7G}SZdqy]Co]sLdc] wshv.Oa ޺Ͼ?Ǎ\(k>9 3NYu=zQ{7 g} ~,U~Fm{hY =??v7Sh*v׽y ju0v؟S1p8gI45DU\\NO!nM|H.m|R@æ\ 5=)M 똍ݔ{| E_ahc>E*jcEg昷1s:B'鼍̱YVr'QcjF%۳?–l       nqև^q%c"WDjXR8 biE*SF$c?>äEع+Ygrd~J1)%snf? ziAEY!b>>!ן'Mt#(/}.KXXR6% ?&@UWr. z+L%Ee92{lY`ljQ( (/Sʹ}+kzwNd?b\P)MDb ʤ !Sm9Xt/|r\=`ղB $wJ/O]fbhŷhc*߀eh;LmprtY{)7ILdC ڟ$F%(\M2k=+IKd$6٫,Ջ/L!Kehej! ** 6ݙgMk*BzG㻟vfQ3vԺ1gh*^Y_h09?&r?=roE|w/ds9[9_,KJv7_/sѧHn^*K\s,]V:)RRM+rH^;ǩ$S^:?P.;uAŌa*h. ir?ykӟF6tW2Wc>łVҭ)/|\g9MńbYgɜ9ydE`6C`w/\Z~.l0rD`L}lOW.=u/c{ŵMmFM"XJvfPS/G<*Vqpwi7^/GYdY 0Eɹd0v ,]-k8e@IDATf2ѢZG{f>-?Ȉ1_fM!iYLYh/1H*H .z %ЧJ֯^iSCbU2u܍cW&mayٴN _3R` ꟭q1G-jq} rT.)RySMsx>']O(2'_ˑ 4uÎS_>|kӵ*ٴ*ĸ neIxi :x|҄"ԶA\xZ?pYWZ;{<4ZY>_I"Y3LC42MnA1ZUgM+؆E<\Z]|;g긽?Pҡ-skX+X<紧K6;y=?RMQ bk)Ie`TRC=_̂?dX#r#qL*4IJi ;-޼f~+vaɟ&!V&'o\M3U"j+R=hXV[a[W7XZഁ }+5$aŸReٔ#@Yu4`k*ax?nbKJ{Kz.GjdN@=O?pLO9Dc᜻)KAZ!Dǟ4le4V *Ǝm;# *E#C{GV[_F%AdscXݘZNXB_UB%ҿ{/ſoҳ7Gpp „ILYk>5P?ChG]dXv<1qI9 HZ@nt['renMϿ_W5 Udן!edJӦ9ҸIOt.`-Z8pAw ?S',GtrZ{׮?n~/X~XKZ!OV %v&cKoqhB`M;Λ¸pk1'5ww>Fś:ذ+z*o7I T ۟$>IhzfvRBe<;h32{fM~d4Lܷw+eu! ,ݛq|G6vQY(OUXT-w}w>܌p+AMb7EMn7[߄<2_<-GSPCao_k,Y3Aҽdm[Ov}=/ ZjvoP>{B)fs^g4/FLj{S^×bc0jmUe^)/~J}I@d߀~GbIc=ŵs bFao0J23IJدx[c9RκB _[hq$q3?OO3$ISl\Bk%5֎U#%{9@"y01}_P eȈ$HI&&F 7-G~>tOiTrfJ!Vݕ9’'~OĢk-,|>vCMX&:rmO ${4q*WEy3Q"]z]dBjy l\[}\Zu6 O2Ei ҼG3[|d WAg2丢~Pe62sJ+=:GTIv_DqMْܐLjc匮ʀ/hJ)@K |:FblƸB'bn8/o2ȿ=H7YOTRط{;ۺ͹2a >t^H ^s?*52 OM\_Se} 6y`TXcwcα4s7,c&vuEC)yqf/7H>yY: ]~3'Q25c Ժ}{$k ჸ2UskTQF6mo⣅mI,O%kr_(G)# mv7KȞaܷU={ c#nɖ}g˒`$Jg^%$$$$$$4lU5'/FXF_.Rhs1X;՘ybK=e.Ke|E{!xNu%Ŗ>Bj"3rpԏTQ't1dw4Jեt\MI:Z*3\%{&GrAlFa-l3ɠ,;ac.0lCxԪ iroa3;8vXjw}*jWO a>)&ūi>Nd/޿nxX7c*?[-gMkod!(NVd;ϔ~=^>{zJ%F .rl4liA)۟" ;KQ[?$ ).- 5qo5C??n+Ծk#z,[;,sʅs R0ӽ\gz'ʫ;a"şf|gEZF~1h\ :QV޿?[:N?Ѩ?oL+7ge -Cg9r>IEGʥ{A>#gXxKI:WEMUUV]L!KIIh/fkr3Z)uJ*gsg7%l*39|6$&ƛ +*3lCv?KS\:ȟu.iTC'oY%QWwBRy$K;= jz 6;|1o<~lQ_FXU[ƟHհϮLY%hhŨi'E_I%) \nLzewaYzWPi,D=&5*(X)I5AcPTD e]`93إXw̙S9sf{&mE/yh#r(淟: <*Au`):Xyj'e>=Kug<}!Tgl|SKՑ2|f=wM=C{hEZf)O?l =%{!jߞ,f⏢BMꅾ=~%T+?68<&ptc:K@GRm> ?Xc{0PH+K oj,R'_994etWg슓?nlF̱<-(p'')-L5Y9aQuTb649;slҫCndd3rx޳:U^8Uѥ|'3Ye Édu α'E$ZiUR:W}AgicbWi3vף(Nh rw3̙P5I/iKBϫ^|rt|Q8IYǶˍϕ9cJҽ"0T Zu7 INa棨J_=ϖP'{osy퉽Zzu⦔kKoBR"%ְ?=MIEz "wIs( =doĮF"G?vFWOeʓG[TUA}{ûK :^ܑ'>8ԽDuVZQ/>Y|9yL->\g~\Uj ©9w|_hy$n;/.)T=[W2J_WgN|BMLI}[@bE_S{䑗΁P.M ٷ%#W o+C>硞 2 oCBM폼\f z"N5z`?hֻȤ%QY|R\ %dr~2v=W*@I1Ǻ j/'uxR|!&KH/i ~XUBՍe|Yxyr eˡ4&;SUV -Ŀ0vF 3mcn}(vJHAXBUkmL.])_{Ȟjr?#0YrUVH(?i?xGmӑ2$׷x?8ReN:Cz{Հ/z+QDkXzv7y|s?>ѭ@ _qO^c2FԽ|ut $O(Z u|,!Xqa`&_ &qfS;=^YRK5:Y&)wDOpڿ8'O5Uz}T-ڙM c3չHSdx;N1111111uKU%1$a\dKdb i )XOZEIrɪᅢJ6r.y2֣&'/L^ɐ<qf;ƉMQ5c%&TК.ViH 4ј+?PZ)jyF>_T8qӨϦ9=ɟi3ekQ^QDG9i:/ς̎lFt ʁ\Wwn9!zH%Fޝ5؏,5z\ vgS,.fsof>C@o?G㷻PTt .=#撹V?I/]Pk_.SQ|ۛ1zEoSb %7o,|)cY\LOTS-teB1F{*AoWl~61Odu ߞ,EU>ƜQy76# gҔ b5O R`m/`'II/9"#2#9je ֲ1oYتڡ|(5gm? ǜsx? O mH9 ,}:Ahk㏲eEԟ+ 3ix|0l4tx Eɞ9LZHE{mHi5$IYؠLTg8Lꚺ6qVjaR&\:qd&j%reNml憼k @{.lj<9XĽ "uR?A 2k"6ȩx僎?6zej~z3 ?uQq7,؎LW'+A|C4x}Y>Ѥ6%!ފع tZ9i>iJn'û._Aq+~Vs].?{[^{]yIK6t[*qN{ ' pP$aR*F8{k. aQ~bאK.pǔ HN^'g<梅W:#/`Ԑ䨁Eg.~ޠteIg>y9^~P_Q.#?@ڮ2x~EÎ{VlqLMSh0ir@scv7?^Aj"}oO*>JM/d}!>E' ,HݎQX[BAI#7fǚiLRؗUXZPjc]2Qfjdu?Y"3ě4"}z?_F vo$/Eea3% $?BK@<&_8Y%_ʣn_*W?/m5/^ǝqHXh9[&!N@{L,w:i-دfKTt;V~irJh"#.o='p.g.2T(yԆu9-))z oƬC<苘&nG:7"_gSYO %`dL34Ts/ 1I_ 5bO)"KEtίXKySmpC/(ްLQGvM~RU(yr9˕b`+ݛJ[.҄ &s FHyFTPw꫄3@ ?N2_n|H|<1fki1ٯ +V@vkBy̟dp\UG(a.^(?f\7c'y(|H8AVW]a=)x9<蕻qSـs 6 gT6M>緓UsaDuus vys WSiɵ tSGOj-pĵ1Spޖo?*{k3 {SČ<|8b 3妫eYr{ӾRYY"&bҾOra]pdgy}r>-e˴9'W x伞lP ˒,PnQ2T]W`;Đuв#f0s)22[< ?]qC,=Yz9aK U~U%F63y<6m`U0dj?Jگv}#̕'R+y!F4vj&}YQKz'ONX(WYQ|%c^z@=Vs#ǝx{r˔M&Q8hU”^u6ݕ3,\V~6RnEPΧޜۑUMzw%Ko J1i_ˤw+]LR*F@~^RBrmܵK.{LI{+ON\.URUr9gO/{\>Cß0J`LCYd,[7f&fY8mЄ6ua-1E!߾m.O?77G2E'd폨̓u^q(r#rN6|bqn,U :%KU_*.e "~gӦM?7n 6lؠ  X~~uyyyYvmf͚`U+W+V/_,[,Xtidɒ`E  ,ϟ̛7/3gN0u`x c>wHnEg8mJ ^ѮyN-J\:gݨ|o0Rt}3 nߤAP6^'?2uCGOrm(QRRWO Bhص AT`mKFϪ?O >dl"Iw & &mSnMN:Z[;@CSKC?*_ϟ\3kD~sA!*U`B|SqkBNUL >_"O=5׺1=6F2`},i+ۅGP[6}CF^PX Gɤ-gx۔Uބ_|D0Jk0}'ߤֿXېw'^5:0%iG#wXP:lH\s _ Ϙj.SՒZw(קTgYjߢ|T6yVWϹ#c疒W:_Wpƿ:H_ )h- veѮ j\||GI0f2KC 8?OЪ_6Y\nW!|6yR8!8 MjCEۗc=%R/}bG>} 0Nī^`XxqRT54.PѶrG$mH?mKb)+N^Oו_a1-%Bu9wb>hukL:㸋1]M'1oKmG[FcVPwead_"~[नo\V_PV#ܸXrߦ}ß4<2_b|,u=%˸5pMk3 ,.\k6\rõpk>\ׂ׈V׍ĵ$יןz_*-- ,ৼ{w1k,x+wVї9$.5F\lSӍ[[gd+ .\OV/ZYĂ}/.)jKy9nB9( R}+|ܦk)'UGxL|Y(-/jsqv +/9F/>HTse rouY/$!g,M7O-v[=53r<}oQ8ugGROϷfzɯ>ij4A&)r 3h4-SϕWO/: NBMY\i?۬ΠoI&\6nspAP~A=GgqЫ}vŐ>2;K *Zi1Uִg\9d(1]bn]vGz||jZd߳7Nn2U_G5(9Ψ5`V~u(d} b򭧂=Gɫ\Lv%@0V6o$_ JcU)' 1&i?^ 2)Gd ~&\E6I$HH nW$yOeM#th$-">_ДߵL>JROnH F'ދ1D1L^1gȍo>05YkYgUKFs])c0f9.sZ?~u9s\_§ kCL΃5kߺ6Ụ2O淘pr_U#$;I'_>s)<5(7x@89ƽaC;! r&aLhj'ؚ%&\3fn-O}3?2"ğ: p2a[9@\+4t,NNM}ާ)[0a5mOɭ?C @J[oyQ|Pb r/|Fgu%tmrP[\fܩ>Qۢ^>)F F F F F F Fǀ@wPQ|FcOüh~m>{;FpGn iƤKZ:)12Sfe^ke|w ύ[JOX.dr&|:ʒ")X^2JuQoQ4N{oղ`u4mWles/(i[iJ*A i̹qE,^(ީK;\dE!^TUOM.EI~ղ0UHyV+iI^8Z"% srH͡]=ڿA? z+!7˓:_= ^]6P) *ʧۮ${ 'H[ Z_n?^PT6:Y,Aⵋ#mw]ZBCOv%n2ِLTKFVҼyd$4)}"Y/? ۀ>оu6*RUT('qm_V KKFҤI4k ;m_^|1}p> lk o@d$m1U$5ʗt:+Pnc|Тy)#&m=,/k\+g1Ii<_} )P֖ԓ6vV\cTd Mt9ϓܪd!b64mˀN~krgHSټycs eYPvettH>*C_[.Uj~7i \O;@IDAT+F+ҰmS\fKW_(kq8ϹE< $/OrZ*,2WJiҠwVX/7g.R~]"M^J6ƵmbT)Y'%(s+eI^ۉyK; D^ЭSM_0n`|CcLw1O1P>Ro#goTV-Y.YNvXo|'KՆd睚O=˯*ZR).ї-M8? bXV.^!b^RR(9-&/&m%\}uPq~_a\Y_$5iD8F'el(ٕ]i\[_$/1m1jFҮ^@$G4(_8+M7?0mShluEi)?I9)qnS]Gi2UlW:jZY2j)/آWp,};1u,|uogLt¨me+d /\k*o3QҨ_lqI~Ųn^w*qlmF!{챇J| Zh?i<3Qf4D&>111111/u_ $}NABtj.twj]Z)9ixA6*a,[_6U_CY=Khm㯗?1[ s"'='%G;tqk",?ƣ k"/"+;L?@[ǟx ;\<?{t:yc _YT>_ÚSl2&r;Ib$|N]!40b\/g&/~VtjmCߐm'S~o,SEV%11111?4)/*oQo1ɵ}^:j9k(YbKjj!P7ynp '\ >) ſDF/rΞ19?x_c b1zmO |йU#M_|J3<_ qV[΍?];Oۻswq qkJd꿟QSL^/Ȧ.[OEmv(~R1'o4˜3xA[SW<|</ſI͛Ղ5YōRS]S;K^B$%_"zRnp3_/$_\Ј㏆IC#5-R#=ϾLz.?Q796^g!F"Mu 6O[1^IšD5!0g|?@F]TJu$~OO3JKnnOPq_:7:kp u"ẊUK-xϿ#h?4:h\+ _|#######c@~K]ӍaX.w2*WS󵘄HJq`lHsӍ! jd?g!?9ERņquP%RǟxaAKBc*vK86a`^{>-##7ϿG1111111u̺]$.!l1.O/Qѧ4xGhNjqȋ?qm@.8w4n.`zTgeIfNsiݪj+Y?|X:rQT;h ˹%D[5l.-[6KK7i'Dw?+_fHNslii⟑@uU_=Z֭IYe KF6edc{*">@Ux"Go#\FCqIbY6{,/'iҶM;izœmRRFci G MJws3Or{NwK7QU*T$K__G;cFx#######POdْwJkݥvoI?P9]}XOTy)~WuR?o?ugn, h;r_*=G,> muEvmDo: ?FdҰa/)+;JnNCm(kkmuG!sH 1?t+99w?ڨoCmеF_|\o@9^7:H_<-im[>1Ć{?e3">#sRiG_1(m3*ė'6lo}]ovW!m.}Y زl|LJ,D7% >M_(C_)Ye?|QW˿3A9Tpbm]ğ蟢|ly_(ww/̤C6a~Tc>ARXm <?"6%T)hH=qtgK̀6Зo#GۿgH]ùW= #$z$OY6vQGILH^mv1:??7Id7 yueK*վx########@ZȲxlLu͈ES⢒ )EHC#pأK͖cuN{a =3ޗ\JyXsp՗*N7QUy'7\*2-!-6 v6s"!\OK,ɗsHVߟo"*1=!y-7`Q_ +p|e߸MM[rob[[%Oؗ&|Ui=]qצEjzOF ,n5FiO"iKnL㯃`/t~4D_r䈏bbbbbbb6\b v)iMXvх0{.[VJIq+!:VzK?=|5YpRs _*Wʜ7~WP>rZH}I2ig˙##> 1uӅ(zb=؟:u}PaoGZ 7ێnt񺷤C'ų?_a{+,9kt,;Cm|z\r6ʼ*盨O^ou`,l7A1.XFc#0uvF,z1u!:#######c@ Q׵ S4 2tv!).Eکtܩ'Hvf b,tBc2] ȯ$_l2qd㯟C/ݳ4 #ZhqV>M0rڋ>A}_U ަ"Ͽ/&r ^aU=lw{w_N֑ {'$#Q"9|_Pj_spΫ-7ր_~dzW`Ϣr63dγ}iC9ƒ d(?!sO@f ~BʧԨ?d?c"WT6EG峯JHL'EiJW+پqBk\h 3 `lIpMڟ xUq'sCev?wj] +}?]2 1OZN7 Y@+ =?~?mWH4:@"]78Z[;ũseO1,fU1&>!k#\ܯz79>_+6'U~EzBdtgҾX2ɞeٲ0̘tl.c7X4ɐzM:;7 u4KeE[W ;hK˪?pe\~ϓoˮZ|;T-+y%3tݵT̓Oޟ(I^唃۪P/b5=Vo̲@-KZ{h0"Zϲ6n7Eo,ͤQa}{&v `/|+K"k+d&_.+$eYͤkv 2{ɕ]w&QܸV-Cb,…@-/kK6`|:cCB[& w.adL}0@Xl;S9 #OV듳j?V&}ZQn4uWOԺgPa;x|ű~=?떭+c߃lK!K3AxUsɼޑOfnY;h٫a}j@jḋ׽\>Z2|1}tlȦLi٥fyi*͓?@&/]%ȑ﩯%M(8-cGYtC]wՙФ~g'{̏ZwG! WT>+g`g& Yݤ۞I6 P'SZ&}8V.fxbˀ]-kPs$A 9~LO QbמݥcUzbf9pSf_)ΓrԦeܾԩ#gqqL;^fֲ CuSZ]ɬ5Y~i$_"K&|$c/E+ֲaٛ]SGy5nNwE.]?% S~^ӿ][TKIEܽƢ-.Y1+啐&h) ՉPpD? ~ʞthY%}6 u2d¼ufǣlA~y1ƧyEe`C丣{b|BgW2uV_ )K4bb]u%K_?oxxƲ!}F0HkOo<|{0qwDY3獗10gAaY:#n}јz|Y_1ɮNz$1KekՅ/LtR!' iĹFCVJf-*<)SZu*--_Zx8Β6H ,,lOv qrЮ~7I_vxx790+K9pivМ~bC| ff oR~#iԢt luQshs??B-׆a\>5k6a>N˴F8oԛ[ %R1Us}d GR*o\}ϥ4fs|!Qר|/},?vzgM6K~bQ@@@@@@@G$৸X?6m ٸqca[.ڵk5kWVZ\2XbE|`ٲeҥK%K/-Z,\0X`A0`޼y9sSÇwQAP[qg&,  x|rPDFέpft%11՝kBW 뜔Ey? ]WOϛƎ Nsr3*i3`ffccwLG<-\I^O=:ب? H0a#iwO^t4Nu|o9xz)uhq( x cwK_0 1ΐ#7!#yQE*#J^J0nDp1BL(B`;OL|ΰmݟ;^E?i/lϡ V"&GzL- ; 'OQ^3Q|Wa08GsKcXs0_/>ۢ|E&7t"=Ĵ7 9 _5CZ+Z*#ltx;:4ʓX,p%Rj*GC=|選qs_58x4gV0UoW61OWw~*֦$F2'xtӞ"!=S65\B|;~o6! 8Ϗmg>e/P~d~y̅8oT?J1N:2Dg/yQ=q^/Rf1@md~oB@\ ~GK, = T?*Z069rם{7T2W|_squtM]~4tQH)F^,_H*9?}b#'sԉ"qk/\Z d6``…fõp-k:\zõq-ȯ qkE~݈kH\KJ~kN~ɯG~OEEETVVOUUUFOi˺pd Zϰlܩ-+ 3_i}ٓ2{eiuu_ /w{7&o8Zڜ8%?o߄t 'F8ܩy79Bo<q4=j*/­$Qn"k>dubT.)JOFO~"S^^Hg(Oa"\x>ƮZc(SZj?CbJڿ!rRBNj|։&wr$!O:D:А'GƸ)+{OSH({)o7bVFs. L%>)U-\emem랱øaN휍cW͖;D;OrR}U>RGا=MڶOvNCz*@{A`wnˏ)vYhm f3N 2p<5&)ڵKaf;4Tyb :)6?ʼn(CeXI]wVɱb~~WpbջHΗb38Wg5H xw;bvYMSv{6%_라qxԮM>^®]y'fWb;Q|fTdXT>Ā$/xPą;80UF^K> .<*xx\? mq>]*rۇ3ֺGLL0m艡 ?|*' XU8"",yU`*gǦ=.‘X_'d xҞ@j<=Nq4_<_:B.BRcz͆S?OɺNojwf'Ts}9hx|RNi>نϾXT o?OPv~x܅K'uPH)*Wʦ?"zU UPܽOHя*~5_[OOHժo'b_,'m`=*۹!Y<'1 <6L_623p㨅(sm_G)XJAL٥_rs.֬X'?Agle۫S_a\9HsݾvoƧXb,7vBp_,'\29׸oG\$ ÷9-Ndl(Ng|ȹU&Kcʅ,A3:qkc]poٻ}޲mRD+j{LT45IMbK^ ,`I/vv)w}- ".w̙S9S65~26*t;p/2cD=- wk] [Xm8|yOL.x+>0' m\7l_{ڎu+5Eo*tS6)=uɱʦ'yS}lu?ߵC8c c(f\5*:u!CGF_iE3:k>}kf?g\/[[F=r_=MTI+eq8y5mObl[=t$ȕqUggbA1Rd) fD"LrCeΥW$֗)epHSd%r|%o^y vDR<3y͓*U) ̋TW4k/5uOi?C9ncmkIWwgwֈ2َܱ\?wWJ?C$? V$O>Y \6Fq$#ӡ?WG Sʣߴ@N9Of8[HS6~ x }cG|ͤ%O ~TqjSr|)-<Ϯ TYRt{ }ϻO\Kw:Vz@yJו\:rL˪0'Rd5m/7s#Wkۦ5Vn:Լ(E|ǏCg֬D/߰mVE@ܲ*k:6vF"`CqZaK+Y僞H~,y^m(/y* {_7AI[1a{?VPLv{BA^b?'q1*~M%Bs/ -J X n%-iQݘdSd]ƣ;z_k7pLxco_;МuĠx&s&݊v?~A8]'rWA_|׫ߥ3 S ʰo?3ŷٹhcOu).p'? &[ sRFnp0@Q<\nuӟ!swd>?2m2v-OHv N |jᙖї^ eV\Gw0٭)z(!H<_3|qg|!47W+y"zL8 ?k]]h`[?Gs|':D@@ 4hQSY`'i9/8wJr. O__3n|r(62}tO2S\5@ U%鳨'9}hwd5cţ^hs~hMDSr]jB~uMHe  ]#3pD8BH e濦84_X̙%3Og˂ŵu8RJ:ɩn.)UJ4I(|Co Bgq Lu7:ObjhqӓqV9+H2M/+F&[b?܍,3xdC'Cg/##_LvAQ/J.A )_˚|+Œ=b'Ϻ0i}eČG2.F=>|2lH!:g5^--g˴.+鼈R},!F?eH>:]ܩ_҂Z_e.2_59z/Ocɺ /4_Gj]t0EJ_e_>gGqث/p?ky}O4\F ,8å3d~TD=Sq߽ˮTjy`bPlX~~ƍ:svӽ"JduI ]j4y* ya l ߟ@O56 …XD %^>.I;jM1"Vk , }|heVZ`;x3^@C18$PH9RSՁ'm=9Pz+?,`a\(_%'͐2 @藑<`9_) 4rlִ|$ Ռ./_~Fږґ mJ})kc~E2H5~-~iStA)R,4#l衸Us>EF@F ?.Ԙ)s Z!Uw-KYp(,4fi xC*/9c9]} `YKvcBrOyG抹6?9(Qlh UAOsge[^kW6x6$4j964)y8nw&Ϗԍ^>[ǹj8D\ w.ɀ@f>뫗JGl|4k9c=e꘽1ƐiiN5 4^>-*&cܭkKN~L-1;~K/p߄E.F&?DT#thK˓r⎽?|BYTi㦩ϳTۚȄOE).m\Ǡ t FFLnOR@@ @H,o54 1 bR-]"M.OSFޭ-ʛ7Yb|jq167Gnߎ)1X1ΑD?|/'|z]H@n٢,d;pRc`}8'jȅgC~Lޟƫheە}{UC׮+p'vꎝψ𴙿1W .==.i) HcO_|[bTˑCh\w1?%o}Yf!?fwgP1txR^QMb'ϱͪ-lE:=qg*#dd~[{C}tpZbN0SbM8*%V[9b$uEh,(%X`S[KwJQy%Ot\5`7ح٣?k?@ W;Cr+OjaHu}'+wL&-CJXunme5Q(mYkV3|Hmi=\]f@vl{\\xDK!ϝZ.<[9xS\-\E1.VtOߢ @IDATl_ dWGH{:X>1% ᷋s+/\8A>VSq."*.kQ\KPSýTm^V;ŷ}N!nJA+ H a0O}40$16O}CPZVY8/ݾV:j[odҲ= F&_-;Rkâyϱ MA@x;WIJWCrO/.{챫t~KL[)Q[_>s\oVJhƊ?|`~J]|iS<}wN??.:-Q#é .G#ɵ2In<`T垫7CAف,Mo)<dcO#1/h;Q-y*|\S+l@@ 4h0tֵL-Om,P'0qnZ)a~pԅ=_Nԅo򊓤{iJ,;TN)Oٗe>y[~P~SU߉3-ݯ0Ko$8J=y> O'C)߭ߪ `E"as]#?qB`6 $c~c`r^%cB '2Z%K"`'Ճ1cobJG] kT~_[>4͆ϔE:Ȉ,E6T6biU S> 6P?e(=|W[|_V,`)w.2ԡt?#%c֞%!!C C)a\$B-h7C)L/mnNڟQۯpl*ҩM?ۏ<~qtQYxdmxmd#o4UyF8(#b vq@$wU{pEMƟM'gN}Kq!!c'W1-jqQL ^|l:39[5YOp0K! aa ÄEfG!0vj:F!si%)5ȇ?>jʧ+Yczˎ}aD"ό+QdGa#3$ꑏl'mU%GX6;+1O+ൣ 6iϴff});yLhGpgVq#OBI~r*Աrz2T&?qhK#IrGTu{*<=24αI{ڿv?\.12eȷzdG {={Xi-́ ʬhuuधrcpm$8T/UE}Fm8oxRv yPx=YwQq\#/gxQ'eNDi;+-+f;c'U7x#9.37)2 :Ao:||Kw<0QC]QiNM E'4S8<e$~Qѧ7>gQƩ?ܥ߰#{>pU,RQ3W|Wz1 o^N=Fn}^{Q;LȣT 5޽)_r/&X*-_٠PT̙Q6Grl?oD'+O &Dm-C>y>x__y<ؒ4N /{Y@yc28~Kٿ*|<P Zl;Au3iL'?ei29(}+j1K_(DE GƤ<;aP?{Ӑ ,+2sm!j;eozO]R >V|̞|dBΫPPg!q-euNHmc3_ P*ǝ_c d1e-{xdg? i}˳Q!(Xxf\u1cqFcjHBg]RXOZ9*]mv;KGK6 lq,O܄h  Dk}bg nζW NCߖ*գR+CL18 ^׍?b(&Kx La# U#M}$!ƽ}>mY'gF9xh2XEX!MeSt3==ǧdYzC*U8/_Y擹P‰?%'|6*cR^~rיObc~:e:~K,yd¨r3eϣUHNгd#C{\׿_IB>/  /C/FQD D=\0'{E| fs*U*oXDz=R[ c/ ivi:OI捵Wi3C֤L䐰_ I\i< 1h-GDyI{< HU#5rS~5.8ux`=u6Y>E .bfgK*"y鼃8b U[R7#3.8a3xh {T q;ƧůBRZ>q@娃AMFd8}(AވJY⸙ ;U>G!@c 0_)CʦȽC".d% ~T˼O_W|S^{Ud/ gMF,H[9P)6)j~֣Y$^7i, b3Ï^H>C$C&: ia 0~$ӈK8YN|f!CIݨGdȃ]U1Q~[קŜZlTcb]Er|&.x sW{^YehT~& yU'vwKVG&E }Vy gK_Bblp@ܽ Or ÜEm:,9 d`bN9=9)}/(;bXFwD}5XP([烚lH$g˟(Be$?p\hqf 9%8'c,rӸb!/5m$Wv  U(q:N5;8G$smWNSRGߞ!Y(S||PFM?9S5v:b k*VJ提)w' ;C1o8x9A  A4pOU7ňQ2)wo=\v<~.*J۹2!QA|Džwȅ}(OW8OsMEY|XyҲ[ Wh!xte:!HsTKgt4Lf~ղvr9mk9a?92I߫d5pL']S TݝʉzxGVJE^B:S?Q\y#rM;t1^ulDqp2{-)Y\go5crNl$`(mYZY'pӰ_B@-j-PK .a|Wp<4z.'K3/.PHwm 9rhٻ/k"ƘG?]oMJ~!]zZ_nh)P;Xdx5cl\f#ݏEXxMy"e` PK&^&D?09x>WĞvй1a>Ð#݅k=2tj *R E89wWbnhOlN> 8bOir)C+fXF2?Ff](ww% &{6F{D\1_&}]=q[?3g|msfpO&iϓx9?&l9›bn;I2f4<\WK9憷H,QOna?w $\0o?'yߤu8Wr ~<'sVJ Ɩޓ{_0hs2=J#_5f0/_PX?E{\O/*|+YrCGO~4Ss l~0wb+_,xdEPGb3Nf=g/TϘ }:xxp>{l=W1b%_:bqYwczÄG>lWߔam.W}3 bٻ7Z7L(a\~O9%h׏*G֤< I/h>qqxzڗV5乬/d]-:Gcgi>Sri_i _}GLbPJp{Cwif}ڮ@gv _6#u'1r9f?y0:Τo)H3w̫/?I\2qkŀ%hĮLM=H]$_¯FQ X"5pMk3s̉Νk6\rõpk>\ׂ׈V׍ĵ$יןz_*//"⯲2UUUE_uuu+u~˿/ !wnm TP4%2޸=aWGt#h/dջ.d6rܝ dןGW,\$M.g-s ү×`!𼛁HG<ך CÝ^_*ͱ7-hi3c/ӖS! kZY36V7Y]!+|CZ>@nZ"oO!pQqzϘ>;ffL0TM)W_~G6tvG83,mΑa+F?T~Nl߁4;TO|,72e>[Z球Ly wʑ\%$Oڟt[Oҧ)_OHlO`Pi9m{Ň'_G9eB=қ'*FQd +5P~ZW+ni+d$XCID3Ȋ/_捔zjd6?2 2AIIeU%P襣yIy-E5xYM jX6aܚ=:F.}BM{ɴW }}i2lr=:eAɑ==V=3ǯ~K FɌ?*67V0~~K}*u<8P-QiȵǐR4XrU=\(mT9ڱ^e ,['9 uxȥ q8&WLJ@nVnڊq8/Uh+-MsϨ?<}=@s:.-_nCL@_lIF =~`DɏF;jI@#w[ /&7^|;F+LJtY;'6c&$GfA6 %K;ĶbMa+1o<7d!d)7NaA@a ?3n8<ߓΐτ3;X貍0GdlF_!O(Xf D\ uᣲr/7UW^Fy𹑲1sї6d#䡲bP= ޚ_;t77tTY;6sszeOmcu#eoM2Џ[i_L%C2_>>$Ŏ1E{=Lv<~^_^/K?ۆp EH#nաTy%3?'*/ 96c;i :rڹa<+r(GL#huOP_P$-3+OF (MNʋ| ,dl3BSOhb]I;Ų`JZ͚q|N(J. xBOܶ,0Rx?]6$izFlD7j3kF)ߤ˫kH:Cտ#wv2&?mNO8m/WGI’RiTX$˥8X9S=z$=oK;Ghi__I>!@@"pu@gb\FƤ <YH6H.tfw桄 _P|ss,squ#h+q`X3 -aq[JBG0+7i kx|Fw*M8Qb$o$a<=M&,1vX|ϣAt=6>Ϸ6B~ġaIauYp>@I460 pzϺC &a_ R66R @@  {!KߘraAOy vɹe3?9js Lau Y\+ʤiCa͢@2CF|@\5RQV!jdo f7URVV&eoY'~N6^'eg)Uoǿ-hר9X3dolWհ+u:VhZ&?k`( {?Usԯoi嘇sTmͿy(/`Y2Mjmǰ*hl+> @CG^dTnRJ$u](O@szF Hefk|<ۿ@ Hc[R1p\Ɏˇ6D &xSӇH~dJo[B>m6A7以q&Rqb1o7oѿ6.&?Qkh8l$caK?a-7J1XΙ8צ7y v8ikL.g;Q)Q 7mW9NW Ii1)si/fmhe/x?@7i,rʭ%c뉍qB_5gzr)_1>oJe1viZUb8lS֨n6[uV*'l@@ l4 Y6AO,1A 驚)YҳWOջKzs}gһ<澗qge%ͭTV9-XS۲Fba exWdXM1:> 8iގS:Sq8*I給 jYy[G>e}o/~z/׋`߰YJLEm}?iꓒvWG0ߠ mӇ@j̰oOzSbZBnjUFڽoW?$h'<o~,i3<-W7dշk_;1m#KB2_c?gJr[FxZϦ؟y׵ڌI^s?$}uT0_64+S\Xcj=c7[K6RIT [_~U{ 6R߂TDWgtz _3x2:"2gq. h۶x~es~0$Y_𬔲Sϭ+թ( ?V)\jJ?@@#p2 6;|-Ag^RV"#q|̟XIOQX!Μ"p*ˤz.H~@@4&Y _O6Pt|>z`l-uk/,7%m ZِjqBK?2B>kI))jZt,?$y 薅 o^%EjVMUzSwë>_S Y-j*WXR\Mߪ@m|^)h'+cAl&o_T0E9m[02)i<-h H.4 7S1l|=,U?I&HI%G|[,NBXJ#[Ozjf غslvc_SҬIRTh[M e&ܫ`n7~eݗks e t~_nƧa&U֐6 @G_Ȳ wIO\ N ĨI/ÿ_1wrrKAgC,+zU7œcT{4C 'KĐZe3sKX;ag#vD o&k7\pf|{k$OjwȖ\K߼B@FJp/{uYѥzޛr/JKn嶖uTk/Y4[D{Γn%?X 5wʕfl1e^+D36?U<|u\ [ QE8GH!+ׁuߠenr|ӬngwU=Q/V b0ICے_-*lV7ߖm%|9gx_Z 4AZˌ-?n8]BZsЬAIlI{"tIc\/zF=z, ?ƒwQJGCUeN7'%zI`5 .Pm_>Ry ikFV%O;}.k|70I{~&k}%?[̰ @@ Ѐ/d yT^OY(fwFǔKoBΕt': =i㬘<1Є\7cdny! ",KTN'8+D`QABE=ߵŏ7,LS%S;nG|@IDATHI.)v}C≛Cy+vFo.?oK&o9VosO_l\~ybտȬ'QT\xkVt|U}1~q!W[~tL~?l^Q5ݯ?fOԛ`LoMIZ;w!+X_ ebzWDpu /+X 9b쿳%djH2RRrZ vdk :~O a*n2!2qɬФVZ;0hf(_&c@+ ^*zOy 2 A%ʦ^)gH綵*G뻵1|!E몥Qcֲ^kGl9y qsGٹM)`+ gok+$O;S"u!O_U̜1GFRZ%5yҺS9ڇ_pX[-9k[ e'WjE~3!5&޷*{&'쿽4Q`R/+ei2I#/ʤI3cHU۟&?+*#_Wcgqȋ2 }d*Bv&k.̟$#G¦5iںywwG+mI} 3毂gK;Џ/|) ў :I(U&?F9y>0. ^G~]CSkJXG ];!L/^'mʗʌ+!2Wu*m "Y9ya:!n-^PK%7/_r&G|tM_)߁_], ^ehM68[_>GϴPX>GQn%;t]I'\}vĈh(}U`oN]ʞo}2%;%?/ -V#^WMeC_"-7N1VqctlX1`, $9`ϡ=,KSf0)3Efo9r{{Wy]%}D<_ƽv! ܐIyͥIҡ{zӌ>e;EHʒ/Ƽhh!#,Lb,_R$EU^*uf덿1Ex?[}&Rr6*l:g+:{#M eG[FL^$娇T=]╤rI)^Mv7஘G@~zWV-ɢ5| `09n֡@ȵe2nu?qm#)7^^G]-絑}=i@ /+WLZ(kB-979 5V4(lVq*78n?7I>5A!ϕVN8o貇t\48fqk\c~2`R@zsFn./k˘Gl7SV!+X1oB~#ZsF,?$|' t 9/ᕠǏO'+l;Ƞ!KzͬdP_i6.B@ muoڵk֬V^҈hժUʕ+W\\E[bE|hٲeҥK%KD_~exhѢE…  DϏ͛͝;73gN4{h֬Y̙3 &DÆ ZǃR.83XBjZF.rlE\ݙ0@sxI5B~ˉC[4>bvm}1ΔO~=/,yYa:g?Mx.vV_VeQU(vD@zZ>jV䶙]hSrj4j dOQ뿌E<}xɢM1OEUd+LUӣLJ~yo\~%SprXǘNLEcov~%FN30[l?Jҗ~Wt.NFj~Vm~-ηun*zeU~{B2V`sґwQYzGnLi)l&&9ei43Tt3.uOrK6уOi:*4hR9F)-3 :ʒsaӉbXOKUe8N_|lȁNW?!cį!õ9Yrq֗ %]1oLFon O %z:$h<;T2X(kӿbѻS5p\{Ǒa1|UGì >GuǢa *i7ГD{k,+z 䌨**zg&s9"&0 D0 $%-aؼgE9tWWylփU"EIɋ C٢MfVPN^Rhw:iݿ>#wrev)Jc]9% ~BUSP03x]O^Nc7f܉旔> K÷/LU[3RPWqsg;~ R3sj)O[#+&?)}U$ӣ% 4w/bWk%Ӛ_Q07؆k)9:P~ĈW+ 1wo 8"{<>`2816\ׂ׈V׍ĵ$יןz_**-S\\SRR~JKK,˃lk?cD $H4k@|HYap2<O8^XFZ6s+" "x|IɼN&rǗ0|Hp,_pMehBd5yktCфba r;K}5O!'$p\l%= 4' ]G$Ћv;7˂h|bBc<7+#;nn/ۤpYhHPWxZ<Ӑ>`?I>q=@?^gw~8m Yl{J/=Þ7&8Ui;N P< dt2dʟ¢[#Os|jtsGkX*ݘ6@6@_DE{\v[_7<菭v:+O{lM$o}xv wX D%/F޽K?6Y|+?}2RWCǘwx+]]̺s7^Cxm2K u;Q<3j{v1W|pJ=hA&pv;/ץI]\bIjY{xH .?T\mc/~\x-%)uCqOoGrg<^P8"-\{{u- h#cZsM֡} _hs^8EzSGu|1p?3F1t|"crD1X?r|iѾb?7l}7p|MX|FDLߎnhCΎ'ו787H2BݞqcXB< x͡XVejfgkq }JXj,#SK`'Sxe[#N Fkn68y'?2]_LߡߠwIQ*煭5[Vg;zت!GO^xAXlv6߉1? mE__:AEI?B{OTYrh @D f7_i&rk`uHv,ɕIsAIS&*wK~_ndlq)GJ K/4 q̸j*^"X`}8xLz>E$ۈpK?폻R9T|u=7%9RPxӿOQ8x4{'sS!m']X7O~vM^#ڿϵԩ3O_:#xw.7VAywzKL[>q.N')t@KC飂y&M^/E+PǮwwW!sf||8F4!/CP >S픶 }7oY.ğ(`O?G/1C듓X/i#`֫W#oMj5)G%]>_n LYw?~C֩w>ne?621Erjl|lrhM)OA+]~`эE"('7G|bq-_, %}ZEDa1lahw ȋV`\vY|H)o* ;Ïui&ݲiOZ8HB<k^X—&$"Fl2_)$NM`E `l1N/,M"Ώ~<).3Mذcrj@[%E˜/b6~2*Bf`Qc H ı:zU'>) yhjSzc5Yq%ob1ۑ](1W JΕD⒏}]#,Ǣq:?r\Ҫ`Hg;@4Tv%-~7;gjF(k=k !>CX7`e$_i&-W륿׋cyL-Anr<"~r"VAa~lu<k=`&c?NƕV%Ǒ.?p0 d# > mQ'ަyD $H4j`R/xLAN6ɝ@' rh- a..ړE0q E}'dN NFBZYRW(&`^nd٤->n@= :хOy";P**+.vtFןy$<.#Ou䡛=e 9+E rT .`I]\wڝVbqD$I>oFeޢ+5~z,62f]O"{uN_"7bRX'Ѝ`]F7nqje,M;?sohG=Og+Xi#Q:}C\_SkIN|^agy`U$~摋٬O;v?0}sq:Mo{t4cO}HΦ }m[̘xtoru_g}B"``A.]L Q'ΏOsz4>|6)4o;Yy_䁴RACGb'Ui Ǟ8Zy>*xk'cQw9뢳x }G$I @"SڏSEd=h_O<SӁJ?Q~l[3QH:0%7} 4Wr O<,YۇֳE`gz)d:Ci~^"H-K_N~0N#VQwt:x^*mO9H†G3h,Lw>ve]s)1B~tsDLӿx0o ȃjnmg:0BıA¸ 6oxC(Ͻ3JD'`^B} Vmcx >}O=~pq+^W2A\ݨ}}>\uE6gݼE>n<,)Or a(iYiš`>]BNnG% M#M6o+~?rz{CC1* r?8fO,>&#9V  ]X3?:,>ϕж#drLN̉8WrϹR$ =Ay]S轇{J? 2SJ<&)~OW $Ju%( s389сCmx8m7ogGZͺvp 4}u0Sy7F?Ȫ~D $H4h`@sj0 ѯ%_=eD&wY#eaURs.f ]%bǃ ,XWo6,z7f0k˓YoTנp,?OfϞ-sf͓KDv}JJQVu; rLFB)K +{) *;3LyߧP9yTNI!xkn͓YgAg? x.,)SJ@ș1oCq7OO*F> <./[]Olh?[:˙"k-P|T˳:/aɴȧv$çd"9o$?Ĕ%;gq_@ M]wto3g8a[Ԯ4Y TL?=1M8R9 7m'Q=WL![k;J^o(}rGlp2Z#3ޞIvjgN2˱i3S!] JiפEKokul 0$( Fg@ˤX=pD彿^#? RCi>,|=%U _?&PcJ~9k5,z`Zv^+7y ~aPw:vc.PQRWbY3o")hp`eeV/?*.5qH|?gkǼ( (Bpt#ԷKNH_ m}v';sn9B|<-F_HC鰆8eO世%VZi{ aW<WxP—zdp ØH+6y۽ᗀthTK_r%O#ͷ?%z|6?[а{+Ⱥ ĉDyCytLsO䏞~PRߌl\g̛HіMCi{U@TzxW,"y`eܷViIDN#;Cʖ:Hv9c.;%?xtf Pa*&bX'٭kÇkK6X 6PlWO_5J6T~GJ9MZV-~] Tk5G Ô&N:\v zCU!VQ'm(T7a?,ZYB~Ӧtv^vo* PqLS|Uh PȪsEUk٘EʦuP%.M| 1ec_5_YN:VI=GjduJOb;#r5/הJM[O:DZIɹ_Edѷ@@? Omcs Kw3ZdR7Tz_ʒ:dUr&O>F_6%GǁgLw@df?!CyMژfoUO,>7㯼~K;A8qA:G%dg 6?Qkn=PF_-1Hj.?=/wfQ6 6ʗ/#unliqD >kdEI ;v IYP]3?A#You@?feHղw[):tOA,v.1>AhdsK*~l<qY*?*1WqnGى]Dk'#@7Z~QPo=8*oDH*hl_&r@HVRqG(W{!ewsr -YݤB}ow*A3UMצSJI~M'۟rWqE8apz h^_&K7MՓ0됃X1cc_bM ~ MŶ {4ioVeRT/_8G@lux]S{119m; q^{a2E~x\ڥkVSbʓ''Y6sxzSeex"mGgƕ괫ftK[. gZm֡ʌ*WoۦHc¸џw 2Of&rਸ=X;:e'J^gy,(4yWO9RY\2qI,ʏ2 k²FxsӟIHNccOY2_911vBJʝ:ٶ5*LN_.AGUĜƉ_X;U[_UdYCsdyc2}iRrB- >{^I }HdƪrQ[ZW*LNX_*r+Ւho(5[1+|cmi]ҷ>m5=z1 b`~=v vds殼ѷ}؄e N_36qiwa[ 0@H0uنB(#Ϫ@:Dʶ5!_͝8/?ڑie%r9s9&c)pȥZ_V&Ij(,҅L%lJ<-"2i$rlhsgewv9fY`?%P~ 3jk$mձ U֌R}mk,슰<ftWyXSt[.RWhҒ'H¤ yӿ1 ӧņ 5S))v7]Xy2Xجkpr%r5b)oW9s8~f:C* sm`11|W Wx|GSoL<//hZ`h G=. P[&~GԶSQʖCn|-T j-G Y-c g^ 뛭,>(*;LcL?ڎSY%-3J_i( o~D $H4h e[c$&5i1(KQ1&>: !cǥ(VJlE<>& 2Ştb^eɋ#_(36S N[J /YB*i;\YV-8_DNU2'E@A?t%oΉّ"VܩGoWx'383nP/>m /k_9lHZ X ԇUFqS&P,wJt( Y akOH_yg}zf/WfqSJWN7 7ȣ};/G};,PEEQ4lG=p뗈Sr7Bg \9DkM\U㝘g !׾Cq|I2SyaXEBDXenTg끍tI!ɯ*bV6E=RVƹvEsJsƊM1zNR yذ 6Gק3O u5MNOTxXS(S2 9&Il^pٖ~~|2鍡rzX/q46͛ՎI$oX"Y+ha3 \q]Jy^㞕V( ]jecSW"鏪CGHT4aLJ٬ٿy).!>s ʬl2<3I( d;ڄaWi}:5T>T~|ycqixqlc^m maQHU*m1W/>3o`a7jS|s]s#'e9J*!6yzr"D~&}q_ k8c_R_f3/[Jk7&_4WhTl*h+A[%o?ਛ}MF͗uG D*@z Lg.Jljo d?\[SY~j/6$QfJIMGq,% 2|N"D=.Eᠴ'o>ORD $H4h`eqڑq&Oc AYgx4P~E I(/,3zxٰ]2},cn 5F>J<@XY ̎R7NSx}]/UTE6r@IDATQ4Pؽ6)E̚*d+9O'~XG\ sga (1ɲ^9#=%bǸŒ{'o^dLu\ J7k$E7cl<:dH[V$]O_҇JW7-KaEӷ<Ooro'M=WRXAjUFh)C*P#W##QE<#)|,Jsvmx 95jAD^X,]-O\'?5@?UPK}/7Π0 Hz(="'VF͔DA&{zdN"/|,Q'HηV`l:^63/i(Z/_/~DyA&8al<r} H?wBFq@l2`Uf"69 9 O! ϔ6i2ow)J>QCq:>xf\T!aHi(}RH~OPFVE*^Z劮{Ɏa{hҐoe|0erBa})X-?ژѓs+ɯDvD㿯|%PrMYc]!3īW*b!?3遼$M!wD $H4hb6ƭNFL'jq~P :pPc7A/tKA^fb=WQ>```/λ y[6/NM-gǶWz)C喁+t"YhDydw1Fel@ȽG`TY{(Cۑ:c2w )N"}ʞqr#/I3elA_`n$\A gpNB[ 'WutmǍ6\8u~fD,WiLw?L]3Ϡ0Yx^|y UXw҉hl(?RqȜA~ '䛅lr0 j9#k8G :yNg _%eɞFߔ.빗*z~;kq3ͦ;f/Gp5qjڟ(ӾA8O,ZCpkII&Y'hMHEa)螖%`zw|P6m[JPWb15X'"bΐ6g,8_>5J 7ƌ'I_Mdx폕 tr:[B&#4w_LGfA5_ȣ@ =enDi7/ͯ,E?KQ㍌?(S&]dRQ뫹EJ׿D @9t0z ( x=[E_{BYrnu{+'J5ϡק {p#썳eqRlH}_=a1;OlQ,xPIsso4Kx|%!Fp}tۣʟվ<s$9}kkېsPvhɓH@ϻ|ճox6jUO'xN'_|\O ) G=_v-22:~x'5gϢzC}{'g'%m7 ocl%=1m-JTcZb}2yBAH7y)MŸ O8zeAvX%kI:})*tDl7OdoH/,H* -)`aPJ[!SFIwGGs_Rb6W~ȗ_;ZiE%OW+nw eN Ms۝eN)-/ WɟȰ~evE/\WjrPƄ߯x4ir@t )(X'KgM#^*U\™Ÿ L\"@dLx*).b(V/>+ufW qH7.\n8(V~A$?9w +K욣[Z:J,Er9ժ,?q!,1vYuH/ݺ+wzъcߍRI +Τ2}U Dq1ܦ8D>yyj5J͠Ʌ j#r8ɏlN'Mz9FR"Xswr|OIm61rTVc X>6+_ ٴo?U[>]&&.5<:~(_Ejg&J>E?ȗXT;h.bO }\n"'W~!w9yo"61Vta8TN' \kȡߩzʡZ&͞#QzPxVK>%D^_zMnxY^T&EXUb"UA$1ˈ#sd͖%RV^$s?yJ|-&wATO`V"}r~'it2n>|۸32P\ROަʙK;_+7JYEl\J~Sz22w0 !Ò"~|4}L3=sAbK? RG~!߯X$;y4D i7Ȉ.hޏSfɊ RQZ$>{J`!)h>K8]/;͠b_ &. 5+dsF 7\]!(e~.Rn@G 1GJ?3@_"2e!M\^rsgHxye k H /ga$0LL+|trr}vevm1lybG(_8"G:~8e,OC$Ch^-—eбTN<~^|4oOoa׹84yLRdt GX|Fqzէ|=ƺ&#փC_r)N܍vXQckWSn W* __ oDۿ٘*xU@wH-y71Wu0Ź `VuF-Unw_8|90$"mq\4hc/H =c$N~K|EO0Aq:|xFɜ՛vc4^!n9rUFSɐrXdҬ6һ 'V$Pr K!Pf |'F lsv#DL"oZ] c0_hZ= FԵfAm˿Ӥ~ kd xVK)PϗF9S p8B,>db DOTOށ9lQbuM kSS7?a=7+t4X1U ޽fէ gVtTGa{d9eU,f{*;4vN*c ݟV)BX`}o"`s8K~`'Mw|TkmGp NjC<. oEp%lkm(;p/Jg䤘)hN.g_>xvqg}Q`]gY|Czz']u%ucUי ^ ~UTTOqqqOIII)-- ⟲ )//2?}B}2,N4h @D~= =ẗ́WUΞ8C .Gp7ex*ٰ/ƽϵ;5}lu8\)OXZo| )I>J# I~r{Hj=z"?)K\?ɳ0UXRFj52A <5)Ocx2qrz9%,)Ҙ(I;&uiYWu)Uѯ!/M8~$ ɓ瑻K1-޼C(*"?jFWw\f?G/jm|:x妑N,tRG]oEa-{HlhUw?G:]񼬝<96ᆾWgdȟ%~BT ~Gy?f]# b;7ckm/W~ umxK*;>3IQ/Jsx2ѯ|kC髽AB~inG.wsT|S)P|.=dvtuYJ[<֏'vKːxtԉۣۜ(OKBV,lGi1gA Gjʳ JT_JvWj5֨!G\,]s]GKWGW5\(S`ȬCU?q|Bk xRNBI$o#McSx5"[>'ٸϖ]N=q2ix:CB U,?}% jyƗeǽew3u>/*WI (s{v~ѯ>\Rra@wO?;=uZd5^)7,n RgoY:铧?.S="˳Bks\?%'ɃhQ`MB?^ԠLǀٯߩ ӧ4x秌ZFQqRK|9WST9(d9S~iex [$~/ o5TypzNDE >Ae<uξUA7Vn;<{"<>\_SgLzfQpl]R>9T@3VERujgbJx l-6\Dz1{A =KwccKKxai3qʿS-ϖ&l jO-\g=ӫ&\+?ϻ=YTO91;"c޺f'dpVR6p1(,?&b(`zƮ'~U:4 s>f̭y2so?wdi 9>:`/Ocl۵)'M,%_H  $H4h @DۼR\D'X]^~S$lɘ8-߄Cǫ6Z'.-U/6Djw0X-W-xS)68Qvjlp1~fG˰#+d[o{sj鸃ZwvWM\JAzh@h_Y2N5Kk+1vV[YqmNS6˥ab)hQLW7l$9RؤI=[4cOeEv]iT4nZ_r VKЗ]Gmi>D˖;(k=g%eZ9NfظR//uKfsپEhT:_aN~,Oпڒf\:g:"i2`o:ܐP%9۷؆AUE?[POuo6W״9ӄ [0Je}R>_jV9_*֭R/H֕6]vin G㕧+-uJR^iqO迴XV,^&C֦| 4]Z5I{tEոAVY ծU/V 7lKEMЬP5i* [a_]WZWvi?pl,7Ved]k^[l g Q* Mx=iJNƕzE"^ 6H?)kk(S/0. %j߂l۩[C@eťRQw;汱+ ˪M5X|iaߖ_j^׭vL-˶ʹj\ڶ>ѸEk:x2t e _m%ko*p;~PЯ.ūسN\lye=51o@n (55ƍ =,v[| >-֐+׮}|C9mlB[[BJ/;Cl(:)ŏ5kaڰymJjtqdh#;4G=Ҩv&nopǿXȎ?ϫ3 cؙHu8m?j(c;jf+͇bWwU.LQU3n:)M4h @D~I lY2h-h(c@VuNueuq$#IxW"tQx^&ȭ)ؖ=eT>%28>2/oֻ[1/%9ÙL>+8_(xF'KάC֓*AUW2@6|2xo%IO[xt&-^x?cԩhq1Kڟ ؿqtRu/o$uyZ֎@(z2z&55:Ȋzed#JD $H4i~1P-a,t +Œ/ձs_$i/wh뤃TD! }UiIt?on3߀<:Ozu&/d%iK?+_xEq3c7]XS!ڕM*!T;-4ml׋T֕?І*_%UeT7 ]$G]8e$edcQpC]8Ixe@NKO-hlEZT'~}39&H4h @Du m+12_doiN'Mg"qg~O~SkT"Ʋ5|!yP- w\(HpK_Y1c-ߒ!<*i̺:O]%O/SCwI if I_IE tI?E% T̿`h @D $ض5ndx] 2EGg8gam`E< Qn,V&BB4,xJ,IB)%Џ&F2p",Ci2&BH%'CLnH_Ӎ!E@J('ߦ;@D $H4k`PqY/6A/+$&rɯT œ( pif=cUi4Y/QU΁ KIdT*$?\_(c$$w' ZS|>|l2$hOh @D $5=O4^I\ĹlbΥK >sdPVR~>{JI8?~ԍ4O6:&&o2}u,dMw$kƑѨV?8td%/a$?nyD $H4h`[D"l]cM }+FЉ|+4ٴ)LehCxSQ-EXY@*HKIMRTTԪSK#-3oų~$;4j\Zl\Vm'0'}BR5jK߲ e?ȲuVUd$$JAz^dQ XpU tEˮEQE:Hg33݄`Y53ɻw̙S93w̛w,gTYP)dk;޷wٖǿ?Ot`G#x~Y-bxm³,<%qS&߶8uŊĒϹ}H%!a|^햎{4vH 't 7 Wp.V ߬pD mU ZvF:ѬQT9em?߻;gΝE^sb٘3V݂]nz-yV3 mS[uơΝڡy8qL@}B>9O__|C]}tp?qx<GL#Pvt&T} :|ʹ 'gM})Kbv) ي 1Q?9Ԫ‚4Z_oױ/<: IIwş9,ۯ BXG<'F7>F9H줒iid 3!'|z8]YZa_] qo_gF%[Qij=~Qy+r{1{}{/O|˻r~|8wv>x<G#PvƹQs00SϪ$ M04_Y,0l W~bq&]3{)ӈU֐&?h;3_ [%Wl([1,K_aNLUg!'~Ĵ=C1Yz$M҈ c"{LT.v.t 'pH%'iيpo$7Wװ1`JPmb?jZk_p7]mndڴimwn`)_l_uq+,;o^G#x~,Ipvqb`+'fbLN7_GocrIba.eF,LM%FcqW/\1w =W$wBc+*ħj*L2$r~w' #N_^3ՓvPDnJS&/Rh RQZ6ѭT+X)!*M>Nvؿ^v%0У"6E:9t,ͥSv[8)؟@&ZuN7Qj? =S>?;c^η?LϷ?u t ~\_egoz3x<G#P( YY<*⩳`xdЇm7s|;rJ3P~]jdNfBl\YʉReVmKcsH\fJ#EZ<^_|y+"Gdd6?={tD -b4M;%%5Z ] ߮$\_5<UKeo!+F=kUق?PݣQg,mnԉ1m6I4;vE.AH [D$f }&Mfѫ^͞/21SgabYrUTEe )YL]Ofbcu25nF*w mIE͆MPM(g4-6 % z.+~,BDBNF+fcҗӰvOʧfRLm GBgӓ5GeZohԉ0}V&.+ʵ0k_sbuz&YV*݀/ԟ,\ ,YUQIilQeB>U[㻷GDvM/xO!8n/BV)tb|T! YŪ(夹ms O?_ݵQO}af%.VKvbص.R FtH+WTڋkw.)\WtS;~VaYvGF-q@y#_|,Y 4mZ) ?{/ZKVc`QA{M^گljlIjDB6,Ůz8>hn_q1&Ne %!pR_V> w3m7Cf ^[?6|#N]'|K [:\mw#4>u1^_c?z<G# w^ٳ'g]s΀;v۷om۶`֭-[y`ӦMƍ 6ׯ֭[]6XfMz`ժUʕ++V˗/-[,]4XdIhѢ`ƌk&DˇGM\.j2yԐ=Ao>ܖ *9ԏT[-kn풛"_d>#e̘lByN~. Ư*K!`W uvTI{iS6-\;eeow'/W9S2F{nر'OPo2H V {"Q6$QS %ړ@Zj?+?l#g;\ .!u2m?u 2n`znBdD`W#?yY5J(E@IDAT|K"&T ``|=lƖ/7d0rޥ?csqSQGZ|pkSXN>><]#V >yN *Z`) dR qE g^/pi *vo_E  gm9/?Q)DJiCP+]99(q/B#HW]%reh<,HLH,oppPDb\Dw "%1KgppPDb\DwQ MNxX:Xࠈ(?{ b8'ùe˖˗/9ps9x89psAn^sD+rFC\WrLsrOn>O𓟟~ 觰0~OG#x<:Ɠ2d32G3ߨ3b(X]Ir=Ű!_fidPuTɒya/<큚/M0t&TwgK%WD*s&S#^ z 4[8HCM]mk(ĦI[?鬋1d y7*a?yOekF_RT*~ݭ&*vBCg!͂K:Q})&^Ԑ: Šn/0c<"!gSKGadr[ӑC$X$8!&LZܹh|pp? 7:z˵8"$^[fYqT9ɽ]]Fi)K]Mp$e˧I1SҐɑêEPꤠ46t!o?5}Bċl!>]S^*>vL5ُ~ʰϸr.9d,ҫ!ICq0絑&I_8Mi烪Yɕdd'1(zf7D4e2 $$:d^5ryNG͚GaIbN1nC*銠F?u ڜIݵd)'plk0KvkzLWA:iGJMqţ0jS hh*OŸV6 ̖9S|Om324?|׬. Dyd<9&Ile_oܗ#)_ SBzaF>S/]vyFʮ\9p}ϣq%@ySүw5iC(@Uiw(.a?i۶Oz9\NxS$h|#GSVM8a?~A?0G#x</01,z!bL5 oփG3VM3h`":rΙod;!Z_{>o]`g|_&BT&G_j0{!Iv\qǃ> MW"?wC90P=#|ɺh|iSEi८$zCEmA su0NJn+٬/ /2 zmˢk޶Wtz4y -cۃ/:EI蔄.e㑝{m-X (̑ݏD63}3'kRheۑTW>̧Y*?xx84e 2X]EkΤ0/6Bb}-U |oԿof7~\IL靂s?ŏgɕ`rv yk wMז GN5@Y;%ڴuqK7͓`GTƷ]fhS09|yw/ՙZ#PVRH?/&6LՍ㗓ʌ}e?/'nt_FwX\#71,.Yp[7 #xLwߢfRbFq&BFBq$x߷HaІi4َCqm:⦨AώM E_F!~:uzbwdO8x<GF⬨#gB#p$Y WeUșs!RMԮ̗D1 Wǁ.2NNFMy(I˻6:"Z[t7=0,R"zu_*+詢 oB*EUQQv#?\s;*\8\SOO\T $CQt4Du\lmA)" k2+i_h]C^(6=z>R&5vS)-E>;N`u񫥾>SdK}3k¸ʑ~$3MCuyln9ҙCƜ`n_qe '?OGc$ ;KdWQJr5%~br܈u`Ȉmjz,v>y$nkp#_=}X'gba?]'>젮"R'P欴 @O$'UPU {OFFVaT>yy%Do;aJJŗmxK gNR>I8!2h&; L\ٖiμVWW퇑-/'10ntkphf9 mT]me+>v =yG&JCZs0s9V?)ПvtzdB~?Mؼ!m<Ɛ?s9qӳpGbeV9,wgƭRI_\\aUo-IL4* (,܋lߴQp5lq5x2 eˑ2FaKuHPT=xaޜbn [1Y[RW0RC 6@vwPJ1܌wŝʓ~&c,g1iDseS a0bQ_βLh_ba|  ;YgfT7} T2!?} N@:7*YOfRT>%3()˫l#6zg63ԎEP.zX-lH ąe됲廲|)4yx{(Dǂ*߈ňzՅn ߛdͫw V-]c%X% :jnZ]io&X^([oݯ? 8Re_6 1䴎53_q0Y"k(p͙פMN\mtO*$mO‘c˴d`޼o?mĵ8Vx{ex纹}]T9_(G.rcJ(#Wy7gn> ޑ2fR_Kh|,Z.W,EW?GJN9Q'jh& I ehz?7Sxy|c? ̽ɴuM?-9ɯ}5=G#}L^<< "8b/M`hUa7k)J'_]!hfVFI%x9YI"IfYJFd$T͍6ު:'"hWAE8USk|+}b xڳ9 Pbc\zQ3= 3䊾k.,# E:5=z٢\!3ߑ9%)%1YSI,*{>!{TB fE&Y!{slܱ%w% @a+a/5 bv)MGԯd%+jBk.s<*_go}Ra+,U?{M,?u#Q)Z0BV~7:5]PLʗ @&Jna\YShH6= G]1,|h#HA٪|2g:hP@cȬQ;%ꟾkD<~X>12u˒1i.$KI튶P'!ɋɏJAKG 4l [BVѠYW):lJbkyZTYpA2ysO)HuG.H&q*3UPn.KʧXڟSAU_TgʙY;Eރ%X~G/Y?uWd|AcNθEX3#I)#B\T ʪ?) eX e$ҸqtwWвek4C}T$\*+ fB>IJ\Ш@6'ʱ*L* < ։p<4)B]4۟zcDW7-_.׌Ŵ6ϪOG#x<vF &Y‰NPD>GAzW I_\ O&ĩJrN q*Cf1P;&O2T!/}H 5@&eCC 80ed|bÑ+͜"dEa-ǣ'.q}ku:Wp.'?0_VX'i]K2Fx,O2's-nCʍ+ߩN>4b 'T"B1?$ o}W(ReĪk}50]*S4إf 9 K9qӋ=ay,c-&%F,vbztAO."gB˙~|])F%x4y*5_|eC*KXhbEii_zkQ?,IYڌ,'_xjgYPgB1EO*VLI3Ԍ֤' / 7&?@;y7$I[s`oh)[ۈПQiTHu~V A!MrbӷU}?u@}rƓr=m1je U%K5yɨw|h gsv_ O&T/@]ikdˆr5 Ucug8j&|ߞB1[p;?}? LD egI :Sj6ŐI`|&-ق`3~h ɪv~LKzI3Y:I`9~b)s3c*S)'ot??gMwUT~!c9)uWc/0YBQ\0xNz+7-,(?|6dQE!J-M%OU/(&MJcwQ"ŐE(E#r*_;Cmv)pǶ zRcԛ,2/ P$onL_\>q3lΔGTg%]Zމf]O&EרH%d,df+|L|Ƨ7W'>>0_B([ sFq,݅ϗn>嗞pXF5Gi[`Me0n6&y֕˰%ΏI}#)r,ㅤYYFßvZF/9Z%w^!۟lo Q`pݕZ _?~=G#uB'b@5,d G^O[0¼X)ILw1J05Z !UbTl[I-Q'2qlipIs3t<+)괕z+3γ2GPv=bb1pxF)-(QY IvwX[x2oFˆRd> k&<'g5L=Punb9&˵4@&Q^TI8l]iKpQyb0_.@i0\N4[ B#Yy1IR+=)ZSMt$KP.Y2&؏ܥυbqGUjYyZP\t &h|8t9 y Y_`K/N.|\e"-R8)fO"DϸhJOw&;oDϚ4[X8Pl%Y?}-f1H IG-'',!IDQ@L.Q˦/hZy6N/9 tŸ| zRtE%_?ĭo#f+I sǎj5U .?IKO*Hbᣙ|Ϣ0)XDIUbLs_@2H嚸:>fJ}w9wG${ckb_]hv6a|?lѱµqb~tRH8l>E !V(sx<G#PF(FQ':qLB!+Qu->ђq}g4U;iTq3NDV R'd*WZIҠi/y.$\3 =kGD QUWxRDtHC("W>^IoMN: />.?O?J9")0$Qs O}2 :t!L.,R*6F+fگ܍$켡/x\$"?.g1&Dg.h.BJLJ=YV_ws ]r i6Gx"u]ڢ,%9"pgֿ3t R ϟ[d c`dL #ps#9х~IrXed#ţ=4CX%.%TJoYqP-k7KgB(0@wS0ZyW',Os,L{w'LKOc'Y/*]p IYN0cFl,yVj>\"0*ĩM? o_%R$}yWB| Bgtd&q^ǃ&7-̺/ً[gYOQ+*JJ<|ÑDvt!|;I۴}(>R?q_BA՟?{<G#(݅,y|>SQ|FoGI9!=X<꧘a r ;fލZX+'>ǒճ.g,;C 'Xq<#uM]B[ߎ DK&=qE{ f=c9o-*=a㢧U8Q5#UtPz{#r ch*d+qrf,M\ۭ f(`. 4MCvr%LP+NI׷i1ۖϼJY}{Ńxm6 󐣛R]Pe+ו r ya5غ~?:ʒ 3'b2>5^g=|&Ȏ:!fn uxՎOk.YR,څo_?Aȥoy{` |trX'Wp }էS[ 3b|e£\ pᕳȶ\*%@31 c|W }\)ZZ 8@~UlAI4P~3pX!up?^[E>%Y)2I Dz ѹ f>u lʏ/d?5Fo? nA Gb MOI'9HTG>'vm%,JIF3 F囷`ocDƸNJodlĢ&etgl}1]fv0g7OxWyeoḓO/W&T +ʲֿ05ʷ"8)7H{T&M/PgqJ?D/kLl7u9)_|x<G#PLO1ee,#@dP챁}I{d#\yVOSS`2\y\6ѬA{j|J7'?צbc)Q9'uA*K!M] 뉃XuBT/J?+cy'ЃWhRK\V(,Cg}aR_fJZrk3tϻ 4ְ]` /=U~*WZr%Oo kw o,Be!5X*EF.w0Juy\~ZMZO?B E)Ƣ8텙nZTDdKy.I _ޝ33ҴsJ:h%Mʧ 5L ̻?dTٰ' Y|Ue!`藄m? 28Imr3şSR+鯨?S<_ȱP>QLϑ*ē_ 4a! .8 2RS, Y [Waˋu%KJRȴ *@I'qТnMTJTi LOvQiYQ駛>^}4S9O+SHJQ͆=d͞+~Uhy#MjDIVC>Zy3UOLZw_5H23ɲY2jH}8j"Y%/uZZ,SjɔWԕ툲Ϳ}P3 r=|ca`S."} 1"PƇ?' E7>ȷ?/~W\ G#x<@]R8$Ϗ3G}4f\ z'\~LrD0C=Gdf~ua3EcG3~bdF6SN!_#?; NߊU:i5cFONU}峘I=~2ߎ/_) !'_ӥAW&:ݖ0 ؅O`^:A l0Lrʨ`d }Zq[g[BUș<>o= &IOB?<3c QCj<|AP>gS9#ՅpYFky >LLJXm\\ 8wcz5:,xC  Jy ^cW!// +z!ETխΗ>4B4<4qߔWR짾bWAvx®ZoVaU"?R*kg~꟩?$.rn=ʰ!&*cgJR|.O #鱠 iӉȯ<\KZ` bn[2G#x<2@,''G (A՜qjkkGSx{(-gȾL$ڧAE3[mCAJEH+qÍ9I?O˱~G\~bK&h6DʜO9{Xğ\rԐo@ HLZP\~۲REԳr-i)ݛlCs\5*+uX-Glx*sNņ%'Iv^9d%YBI.?/? eLf*qNcIUXr-PUrmXӾI߶sVDʏl ; /[UaP`'Vڌ|MGuPG؟mlĠo[Cu)!!G|B/֕s*κ\c/kK~~|vka%V~ĴQ{o0PQ~ *7kگhS1_*;dS"rpOm]BYvOUB%i/?"l^ ȐgH0g6o^m!/Uj&-4Z߾ ED_>eC0f 'Eo]aOЕ=,_M7/oZre[)um 뗮SVy&G6Zg\ETR2+@݆~WzdO׿?4 ŽA{ߣ!߷yվo3h޼9*V$y9h]G]12ui4QK?Zx<em7by8 OMY%f۩;0p ,)>qT/n퓁KeO!׿s7h?Lv?җ@>n?Qps ;;uen BVDG#*]UP>>}oS7׳]^&lĦQ&iFMĖ2ͥK 3f`+԰cWϾyup F?:z<kXMR}}y41HwK<G#( YÎdMIM \L'+,77[vH/8uM~+.@Nж-`|+:}c#7vQt|DG#x2ew!K:M'DV vzwG#x~$YÑѐI&C9yB^"^,H׵,#=ٸD>!?Beᜋm)c:ֳC>/m8HGz KѴHď?et_/hL<gG#x<@ݑLpXrvguRMg^ <yA\E.RYVX2C͸# ,@z'm&_?/;N?o0*JI?/%3|#x<@E.dXMb|c8 ̹g;]\ ie׉G/_Iĉ|+7I|?koÏ?KܠPvh?8ۏ풍Ə>}EzO@x<Gl#Pft7sty HsI<^35ZJkBu/rPJKJ/X>~۟M?Gc ?GU2/iďSAg5$&Y#GAM|?O*ڔӏ?x<G#Pf*K*s-gJO,{lKBN< [WJE|?o ;=TSB'˧k+h iiE(((xTH"r߿kzbcifߏϏ~o?#}}|'G#x<eA<%ݱOL:9́v$`)8(7P~БJ [vo_coAUHFFf5TB[{kn^w>zc4 e~ꦊ2i`ذ#)Hj2Qje9[VbٚlMS2QE}P\h_EJjUPzuʬ$V9vo'Ux zF'z~N۳ym( :*IN/9q\Xt6mvQ6ȴC8O9?14x&?|cXv=Grr&2ʉo?Yrۈ=HI*Y& }s{mWjf n~ok\)O|x<G#Pv( Y2=+;Z?Rۢ()$RGV3tXjwD1SggaԒz p{ve~ld2%-y'6MRx܃Z1ycmTHL^D~9h|> 5FB(l1;$۵o?bG+BHs6>ݸ10(ڟQފhPcbOv;C **QUN=MӞA3']?5 s~PLj+}|qXm_GaJb,R49Qx1o+z!w ଩8xlF=TU;ֶ Q^*iݮ'f(/.CÝ⛯IY'J!t?^s:WDOIi}}()k [3OÅL%zaw11pg6+,TZ[k>8!mOּ~%ꉎmQK ϯ }N9y ZH^{m^ޝonw۫hI܈/Egg| ^U/n'W4Gvxd&AX,xZ^؈;\R{~7UvץV:V>yϘ4ahߜ951j{To!'^̗х/\wiv6f/=r` Kݝt]vp<M'v~]NGJ,%̄+^F!a;EZY$`4<cȼRפ_>O>DŽrd/2.x\t!taP#Ujbt)h{ t fIqN;t z}kH~ ]?BggWe CRWXX6[g1lPYZr/*pg##}]=|+ͩ1? m:gCp{E>Ev3P0ƣ/X rDХy;k]%{iR$F_`ʵoѢ네1smh~i@IDATUKBNC1K~G mݸVlM+jRr%2 ߂G4b䕐vذhӯ=: _~ +(׈|%/zux]?aCѐERE?n6H#I!Iؿ .>S=v[ư9 E?;w~P3%b93pƎr;:{Ɇ ner+q]Yzg㷬=.ϓz]&Ah+/a\U4GC{wPORBUKI+%+ Iiϵ_zg~vmG?XkœmPab9C5Ku9 Wt= K)yb#QZuT{Zާэ3Ti;a' OUmX1D"?wQqtDŖ݋0溡JS:\&&=*OkT,7 y|l;PɁ{xdpj2D+h; _"O\ }ow;U,a?YGwJ}t#˘OWjdbF_c S?`5MlQ,b_ <G# ٻw~{`׮]ٹsgώ;۷ٶm[u`˖-ټysiӦ`ƍ ֭ ֮]Y&Xzujժ`ʕ+˗˖- .],Y$XhQ0cƌ^ x\>2jC$*)jf1-rG|>x #v|aˡ`#})sg=--'a}7rLxZ3!ʲ?`?4`c4?@OO?Rk]\"|X6  9m[gw?ngbC G\/Y4> v\)rO'eZǤptW^TШa2cHt`Ѩs~n.nyhXlU퓭_I|:ǻk/6G~a0/?^si3 svB Y4m'{ySVYc3yz z=3RL=;dHp*YִW_GFNF]SlS,>mZ"ɰg< #>"K[f̜9x9OmQh3lfl2_E߬)kD`'û$~ˌ>#{XwGl\CԄ|I_aCd˙ӆ๮EX%ۛ۫M7ɕ?˞ v;#>WJ_)RwG:rJ?oCbAy`Ɠl?,}3sףm>Yo!G'5wâ[7:N>z~vؿų6pjt ggں+E=??,)%DP*zb8Ӷ|D}7_mJam곦;ٮ>]B>up1X;?9,RkM%MCUcU{2Sǧjq6"xMtw~N>&I7_7~};>zG"{OxeO0|a?=s>Vq!HG'e1ni!836>|"mGîi9Kibt;quRf30"QI0Wz|r@Fg-m0q#Ks"d.3>UG}ac gMrNSc\X%8*<ۏ&tԏǟs/\ d87lٲ`:gùp.s:z8ùq. qsEnވsHKrJnsNnG)y}~OAAAOQQQP?y<G#P(;d4;8y>7OHJpqY*sjqҲ+D|a2-|qT&o&ɡȃ/JFkXBpmҐoG#W>XeXR/VD##j|׫pT*^ųfWFu1f0<xƫ2w4ysT dWn_Icn^?t2M/G$tk]r ~N^,C09[+:c %Go6}[t>8ٞiP. Xp|U L2"/_pn^eCEUW)A<\KYMY"M_Vq{CP5kW.œ/Kn|a~bBvAX>85ؾ;|~2t߫m vNZT?)7EKY:郬<%tait7e3^.\O_@w>[yB?bZ=da{:?ZA=Kml-P|VY7]ՃI+a/ԕ.?w g{/_ǥs b??T ӝ_Ǚ}ƒ&~jV,,iw\zgCߐ0PK0;#O\**&!8v7q3 X g`VKu *愁 &(&T"* &@H I$), DA}9,߽wLzG1!"_͐/^*'+2RmKdS}WHJ3)&w]2 qla_~2ܣJEׁR?}%4Tؿ{Ew]ڿ۳J ˎM?V( lcg0 .٤S !"oνS^U$sG8~{Rpd`o@rzlGFv/]كgɟ/^!'#0he=rTMmbۦ;3&OJKlz|w,c2+!ųJmu/`sXHa_R,kǥ~2d|}tl*Z'  u$x=5^-p)͕ʣԊ];Ay^h#1?yn0+'<\Ab:h~zTX[XjRF>Nn*J}TLSN+oFƝޛ:]ou!|4(LiGeO|~?WI3=&)|iρRT4ħwQhnNkr/,/Gݩ6 *#f+7Ha5g {=pXKAg-cbb8?(3^#~ Mi#dSaG{$#UҌomhbL?ei^G__Hwmu )dP],UުƎO"o~wujB=h|}30NqݷͤS X,?Vs: LS*/EʇZD}Vr͙l[+Kʨl >(u:y]:=i!p:-~QW8]1bҫ-R"vc}[ ±*R8?1wwZ.||:y%cԁ{je?FRTHy 偔RHy 偔Ox?⟀Oһ||bQ$>5==17U>^9`A +EŏȪɞ6K;]@ Az Oʦj`vlSQR/|uvy|f|<Ǒ;pi26OS G*.e2!&yU_:\Wx:7}H軚}⫩Ժ-A+MvUm)o G}Ud|OtChΰ[Vf&ר'O2(Z[a}3] {"+HHfR,ev(+9.PiOJ}ui`@3P=ή `߯K|_þl[mZ-} 4_ r+Z*'k=|īF-|ڛuąS}ܘx:vc]8^ۄ=-hz;1M%@/6l{_R<}*"J$!9Owrφnk?8YHoϏ+gCɜَo$A|8)))-|6fq FH?skV 06B`u`A_ܓ+Џr d?=:V ~~ƽ**<4x#VC?@9s:2t`4qsɨum5>u &MMnh&cVzY?\ϗUr4Rǥ-8CYթG^jy`0g?\::&z kcrK0ɢv#Y(t"|tU;7~&jŘ#ڟ; z|k0S.|P[ MccMOKAj{3Ո}OpVzT ?< mig8|3E۟l Νd['b%Q?#xtޠn 5:Xk[:Oӝ/HMS>bwhoձd|54x?ZF"X.C`B<o;u`_ 9nmN+ދ4]>͕X_W?g;H g[hwr4o/n.}cVF\JrPe#d'@Ϻ/6ITӷLq|;9Gֆ6lוTOns'TwV. Ag +5sx8BqH quM ߨ(z wdLqޝ9?ķ?_o ql {4sr`ԲpќS+XG %Iy 偔RHy uQh|Ss=GĒ#8<H f<OUSɠeܫClѓ/'OT'ysԢ$ATF~5b"0U2!%","An) Qof`Z1 01{>l,<1 )s(%"|J^wǮs?TyDP6^v*)a)f#V + T3])A:jx";ߗ["԰"P|-S#$jV&r3|r[*c.(Vy)#@//d-d!Ұ"XDGU_g1017UƷdsbAX_;C,T~Lϝjp)E $iۡqrQ%|=*t ?گZsmaJF y\d-ʊui@RTW +w+lr8֭ _]9f?=2$ f'""hR`>S~x1'r^/6(Q$ƟJ=п1"ii诖= }`kT1U:<=Fw7 dB0K/9Rʗ%]e})jhtzj偄ڬz%}Yz= m|.>sPpš#{M$c`1SQ,M[䇱m" ׿M)S~[if},(F[5p 8?+HɒRNy}8>DeId|M5%8I§/^AaUJs h5֢^HSWO V|+^]ROӿjy_L|HR(cҲ"s>q,7?5e)a \\cl?rTȩ+'KH*ys 4qg6P4N>ż946OΛtڪ_BkVPTn|wPn61CѩW۟) )kF3H*YI/oR!偔RHy 偔Rw柨y* )r>ADqj>`INIKnuB }5Ա4rZr<>iF ƙ1? }^dJ6azR*p\wrػFϟJ Q9Q|S<Եkjdd'5_Sj,_ 7?Md+ XQk&sͿWϐ/ (J8Y?k$ OչXInXp|gyZAdV;s_L~wTaj>9;H;)TqSK ~ZB&[P#OxOzo÷efwAH@Qxfe6*߱I_wi^<^]q^v d /ڧh>&ϴ,#O <0R"!;ʸ9}bX=gᅪkm#JGU* E+߈1DlH.c?Yj]N;BeH? b]^oqNBF]VN. &|իerY~ |.!ȼз,yG>]u^3F'B;Mt)S_a#re7n ۡhReЂ_jYl*߹&? >H2q ԛ7Լ1f7~5Y1lZɈ GM4Jy{*挄! ({T|Ղ$CNGOh6Ă&d:֡uA^fV=+WSD RG\=oN% "-'! S}V  N.Ħ K:Y3Y|ú'7?u2qUKAk$/@(>CfA_?NnT׍KK[2WKyIM.:̮;Il?۟dQ`&_UQ:qa#6|y_{];e*J8Ҵ9ҜJ(_*9<_Mn9}ɆW+]o^I#6Rln0A>bZN^yyԼMVr&*l u+pԺ97GJzTouucrUE(#-{kc00| IO@+-|8׿Js ݿjHó;SRHy 偔RHyTe6X'T 0YT9 \LVjWx,uF`PB.^t0>Mb$#XpTœW&pg^3e2`tywߊ {\k$e-rIqNEscya(n]:id4gwAQ)@HS^n{0JV 68OU,YU`"/6hI%vx:AWב@Y+f{2 =[NgQ/!:R+ůVyCWOHҸ[-ҸQ|Ye!mTYfCmU ]`1Mӥ PVi@xG ԟ؊0umLsc!=dT|ys7 Igqߕp?ϩ|,lǣ &mWJ3ϐO?}o)tr%v)0~[4i*5ٷƘbPqqXaIp_`|+٬,u,o8`4>g /UIj3V IS 3EJʹ+% U}i "[rPPߤ#s}FlRjir}Az$'JdB_L1fz@9]E Lf+ĊFxٷXh? <. @嘄pV*RD2[ZNe[tvUR\vGʎP:& ">:QvUCfHKDCMÇV7_#Wo"% %\4eMV|<7aj2gɧc_FW`Sj|F@hrDYY=>X*1yַbb24`qM{S&F7ɜժ^)U1zNnR]8R];]w{d| &\ {7OO}^3ɐ2 ?.?C`5+ i\!h h6rqU#ԧO*p&l̶)EɦGɓBgk8d4/: wo9v{ՐݍGS撇FA&2dޘ(:~*I݆u>C!K8@R';KsX2*Z<,:Z07uT"DN}SYd#ύM0He9Y/{ⲉ qe; D)[< /m<(M]iQ XZz rUp? J"H zIRHy 偔RHy 6O"'~3·G'(>rqB9N>0ԽO;{|"=ާ|U=Ԟs=Pƌ!#GQ#GɨQ#dCe =k9b;¤SS_I[&tʅcҲLvȾ`^y)}?$<*$?Gh]7"nٰfX\/_)+Vrlڍ[;GF T&+Hƍ+D,7mrEu(ݹӾ g]}TqsӼ2kppA륜ȸ w%Sޠ `B߷dVX\nE4KuN$ Qd!nʟq,!ֻAEI?i| mfϯ!_\#S0~4|%}x zq'{X٣'8Fa{;СBeEX#LFѿqR?n+ki'əG ٶ3X};N*3>RN\6ʈ_2^dn(W YifB"Q`5Ŗ!{tA>ƥP||y~Rh%-P.WfRq,# 6䂖 Eh>gb?H O8 ԛ峷}ZBZwj|=&~W<{.ܽJ5>n5j,]^֮CV\W53 E5qmdV]knbҢt4JLs% t>Jabє':&[46KM8,c)m?ۜgגN_b$@4y%鳒x%!?sm#qQ^y5h'IY)ZqW @d| 1p^ʨQӎ!L[C+כkx׈Of&fqiDòh`Nӝ|6I~q}85JFeP|#_ds!2xl٢(8&e[|%o\@ͭ7 sVhhZ _y|1!={ dV?V;y=\+ +%=~ڙzOޏ˅l%gQfECv?0ivct7G'T<偔RHy 偔R{`߾}{ߞ={vڵK;w vl߾]۶m nlٲE7o6mlܸ1ذaC~? ֭[]6?5kW~`ժUʕ++V˗/.]̛7/GX(+pX/c+|4\6 Cii9^8+39L]y,c~>gx)ort~Hǟʭկ(-q#xL&"Qo88cfx[i!Ŕ z$iS#+L~թ$M`_ (-4?}dAΏ;]Q ׏[']bHΟA '7MZ`m ^ʂ~U,ӵ -Gz&;o4n-BMy]TETdS^*_Ӳݖ26|F_7c??3l(j0~ෟ};<ڤm\jv/e4x,xA#[u>+J0}6w{U]n=зPl?M5z; x8Ga0 2CAϫp,CN6w^ };Y߹LC/m'5Cw w񏙣!ItQH;?~&?">e[?<-e"*~K֝[ݔwK0筞ia$Glԏm& ۶k^a?*%q[Of G| m黪'`-&7/<.yge|G۴1>>̞(~F0־Q*4ˮxsjy.a&V#門hok{e]u 2~2䎟ma%8N"UEHi+c &?sy]WuzDPZvНĂ_99L8oH9VgcYbk2d'A=_e;-{I`N}s; h{N_ֵK`Bl ]i+t9$HEʩ]{|b_ɵI%I7'8^~7_V4Okvp+tu>sg&1HgO80a!uگݱz>+808׵; *;:Gwǿ: ۵N0u  X}6 m<cx_c_B--`sp`y[d:/ʷy|&ri?Ϟ Nha?lQ`2m: dp,uS|m#w$~/az7VvɛS" Ƹ-lZ_Ŀu1׵_OH w:xn ?:?ػĝy~<żG5Sz=m<߯n0l+GMC|7of#&A8߹f5]4q5$ 兊!FY/qKrxÍX5'@Nn+P/*@Լ2AP]A}܈ǠtQ [1ŔF;^9TP >6}QžɶV|bU&HC?Ӳ{(-߫Wi4ԏp9auDpT ,c]aЏ1|-_<櫠\ wfsLػ|߄;z^aT,R3x`40T'4Rf_Ne]߂>>j"Y꘢rËIp3V"=!_CB/(:_yPpeW*wWZ]*]DlzS7"Yo/ՓG{,rC9yLaW>J`"}OrH*wIC'h6/(K)XHd̼-YiC*5랛$R\* ڞit@Ӕ YZ ҵmuEqe/K)\­DTOU(?6s o^*&z(28#\8$| DӱVo?U;)|+BVVYw*CVivVL~@iX˄lo^a-_gh1wJsg \] 0_zX`m҄2z.a{ȈK^C;<p*9CIt?9]&A% $83x|P-k{.dU6{Xk:&m#-|G._/,wwt$>wy vm ̧&rqD4֌ኔ(Ԃu"_xO8Kr]rt<n9d3ItU>Rl)y[c/TTieo:WL<B( Ix%ăuy&s'P-oM6#iV䮯Nx=#ב1^:֑솬 ŝZ41]s#۟9xH0MHm›.;|(̅@~"4ι}bs'_)@IDAT﹫05aTc(#HgGR:euN5MM@պS`̹c,Ֆ31_@`r7I6zV9Lš2cr܀m(|<ۏ.=3q^7Tf~yOrup2 Ӟ &"Z,#F+{}0Ƞ(;?U9*p$@Qm{Y7?:9SRHy 偔RHy,7o܅Ǣ2,&6<+S"TkSTbnPf7o6$PJ=)[OKcde"Mε%cvPGF"cfL(UFD( .J05問nbxMTŸ#%y_8%#/ .(&2J%Dy/{/xC_lp#Q;GVZCl3Ro.֫,pbϢ#{#oI sJzg"J4Tr&C]po@nY$4MY>|cS ˜ת˕K=$nn\Kh&\bI+QGگd|YW)/lWJNQY t8JȾDRX/`M y飺RDzv_)5%q yKP˗:Օ}Ai }.n:ux]Jf/HyT 4wgQ>)ri,!r|9Z62<3-azE r_AbϢkdR+KZ/ Rrp8Cj^ pd$ f{ yy˲OJ(ڄ>F@ǩC9%CPq`lWJ<ór>Y>rـd` [$SHȡwv#o1(Η']u*։RrZRܻT"Kdd:y^j?Rl]gk?n:j9}Yh@ʨg}@1nmBP~\3N_JV;7&(sfϔ)]͋NT9/%92exBauƗNxT0bAݒc5uC1dG|%?V[rç.!#[#IBlo~׍rbu;*=|Owg"0eڑ*: 1ٯŧ^ϥ0z3QRb^ŠYsȤ?&lo0!RAv,.t'qz,[cB_ |^zL~`^_1!|ti_\Pfrnx& yݝȵ-9\۠tBV"d3@pB\ I90WÜ  fp>7PH&ʧ>9EiݝxʩRVgg6Q7ldǺ+q_/ hq҂>,ůMQ|H6Qc#;^VS_oJ4``2q 9M< J|Xq|F{ȴw-2ԽQl2|{"" n=GQ;U?1.3Z)%\ a{R 4E-'jmof NGFL@i'^ [e[4= :Eg10'eoovL3۸ bmᨒM6+Nh&u\}kg]6!#`|2ЯX#&9Wb㒪$48|U}:ZgzQ?okxa͂B~/"O?&_*WV C5?wx'df/U-#񩛦,zSYVW@W,n ~qP[_V9*E  s6?3\$;|ήvDqBd4 p}ALtqI 0BUYnsCgu~T ()3'Y`X~sUi?U\ʮ[YB?%Uݖ;&9I=i}}=dP_:R?^CX)hɛ. ^Q7?aN/* ?g._`@dtc @>e$saA_޽Ae);pz475?UT͈3<Wwfq?Dڿ@:BfcbR)|s{*<@)<@<UՙfX)"apq# +MT^ĝт@eo <]0 JޮR#JG4X,gk~J#)<_uoPġ콷dV!BM}$WkiTC/L;V2o3 ]2rM| `@׿ň')>O']l*loI_TktY[R 򕗷~6OSGq7qm9/]#ڬ'uV?gvQ|.j n{"WWhg\<z fiϙwuWG]/p<6O^5 髮SQpBrѫ/[E{ۉunjr&U쑷黾˫cl&6m@?C_Cc۶}yR׶Luax\cⱌ go֔~ -JCOV@;q?0)P |nV9}k 7ovʚo;ߺ6$h^x $E]4i=l'bn%KlI7û?#8Z 6xeS~EA;9W6 w7? ox7*km֎!WF;C}ڝ]>NFeʏbIvSv#FGToAuMlh{9b#eq4H=d!ǪF`'Oi.tYªDe ':X I4GkOJg!1?(apqk䓦O\.G4~T!u?j?{uxfxmoNiԦ-E.}w \ozuL#,>*,;f/a2[1ƽ:x9oR"ԣKis(]*]q˄al/ˉ4WkAׅ4G?&7әXƧӍEq> M=@AWK-EZiv3O?sxYcxtG^&(;|1M<՛e$Q.G0 8y3My 偔RHy 偔XGT+N`q X/'~'pnl+j!C:Mdq!;yr;PjdovA2?,oܙ=ܚ-T򙓙UǨr^p k4Vo/K0] >Rb>WRFy}&IWqT%QOC zCɗDO,*\%5x)vI+QJrɪ7ˋkRxgT9P)W/vx"E@($ʰv$dr6rZ! gR8;S ̾ʣnܜۅVDW`Y Y*lGTWnYi@" bJ Рo"594s?+~^*鐌M=U]^Vay._gKH D뷖%&oFG)ܸXB2' |Z]AbHK9&Z݊xͧ`cgi fXsǦ(>;(J|A?oMVwkN.$E 'Cr}xa9piiC+uQxʘ7r4h};<|f jyh::ټلqH=O2A?ҵ;kʞit7mv7/#F9k8z%;Pk:suV-ߊ];#kXbQ3o?42XR#IK}4$s'?+"px* %DW@Zv>YRiIO5p!B4C>#ϮVΚ6dnjf+ n5 q7٥;'zӝnV-O/X<ғ ^,CNKyËQt(_}ܓ_SZv ^ƾV\ao. _Dx+y)Š@UB^Z&>1Տ`$P7qxG^Lqfܩ սHV0 vATC~[(_cQStjj@)<@)=ே4I-OuUS~'s8IA"yH)~NC(ԉHwC3&ɬYdʴi2ut:u*q?ulqe#ΌҤd1St:EgaP۟VEfG[Uޚ"OGm*=O8'fϒYZdƔd)2gbSHNj<>QCN>>f/a*ٰaŷ /ה_%W\/BuKRDة:p )f%Կ2$ ,YW$d{ *R$Of25HR<|߽YҠ7JM%aٺdQ4Sߐ :J5+J5hf"fbDh-o/Er^Ud)eY2wL7_&pw׼b(}s~ 2{#MLoSe%ZfPgY.ѦfMM9[~y^Qn:K57/blu~MQi1nyMG1 T/I:QJՂOW[*F$V( jd\ v6Zg.mbW,OWQ-7T8SG ua?Hx(`7t==Zj2C_ Rp7z&lLc8M}s@*(Ɠ7' dxq0&-ͧyhou17\f|B9oK>ƪ8[ag'ⳜiمվUF^7w637>*x0o'۾\"s|k-;*1a}pq0^KmD?z9ؒƂٟXf<?=5Gڄ?j|?5笈UY3w~e}`M9/C:0yK H)1CUQ ڗzQׯf*WHRڂ`bjع.S+BGڧ>hZb;78nч:fO}$dm۰LjX4&XS-n& :>G*E6>E?B3||@<7[e R*zlN_%?iy >6\:,ŏi&R4zTR[`Pg%?[w,X̏LE90ʏp`g~s\ڪϱm TgO?:o#'}sU&_nuwl7iXaL탉'D2M^ߴt6H,76/ pAx|83>mg8Sy?vwLcKh#5n? c/*DCn8fC6 DLX`* v_9?׃}щ6C6*?z^Yғw†Lduhޔ y;[u2[b=pO{3/,Y{6ܻrýp{>WĽ$~ߟ ';;;''''O^^^~lq-[ @l OdW9GOAo,ڊg@JܰJ2;y-Y2+ڥ]HK.U)Ƿ'cIWQtP:^$xű"Ssn]PuS&4 r/uƮE2ދx{F##8] ہYJx1i( ((4[j6P.>ա1#4 wBr}{T.AΏw|=~Z$djx_J<\2~ۥr=9LJ41﮴G,.wk`h<:ϿLER`B0K;!d~*^N5We"^ ,!rOeroM` d/ɔMy}R;OA(!:k%!O&=S lZ*ѽ]U kЪӆ-E=TseЇU~eq\q7'K:=HY=zƿL h+tLHN_)؅wNjITX$_S (ExEh[%9_+jR+'^ќ͚.pp%Jןs+'a=kIE,T 2A;-EG]LPLѿcvtUVC DtAݦ|唚_鵒ks~=P"1S܃j$s.8+ms"Wc7!$Uv9jX~=Aa_9ͬ]rA$u=,W6zѿ(rrOoVpkIKr9 :*u|HKg۝\Rl_;&;7F~}K#D?'S~#s*[?]o}Kz7uI~rl % at%JOpV(`;{ge2?Q2GI(@VyEـgԌr1Z9٢0)OJ*2,4X:7Ǽʼ33`}g!cۭWBrfuh%C(xJýD'_A}M/]"4WTV>ɩ?7WCW+ov{L Dsۃ2r"+8@DfmAo}UɥL5,)0Wr' A }\߷mle*ҍ^T(iz*âOEAQ9\d6 ե,0WHj_Jh_ CaU0yJL /ݠ8h|y IC7 jo ?%[WOBצRe_VO;ӗ{;Sz)Bƿ$SOTmGn'Nb -[ @l?r57z= ŕ}99Kq'#jDjTJ)j;i^C0&='/ ]Mo|㟟?^6Z'KֺuRn:RRNu]#LOuܟd͎Ry+~`뼇o}ܼ߳N֬^/k7J;d6~ER&6[tsyxc?G6,/󖭓R-uKjˡʁ{-3iU -vZٸjdq~[m:rx:R4=՜?Om^#lȓJeɚ]uz׃ U^;tH'~s@!QvYrdy㲍5UԩwXW( 篕m6eѷnJ6?{W߼7gٙ)TMu!ju43=?ͺ ʔ;KM>LPo*֭M슕dڵRRC n-jߵ]֮]%\ٵnߧkp^Ǻ3_K>H:Aybh?#~[ի'+V nE+G}oձ<)\L|Qtc -[ @lY _d%Czm/4DaWz<7| Dwa(v1̹L?d1_s~厑`'Jz+Ri"^'>laԝe&mNDڽ&޽y5m`-+bg'n&YD:l6gk<,?߲rw/~"+߭Fi:>,iب^ Q7^_?q-[ @lb ,Z\ؽjH; w>]\fW2hFBn!"XV&ZŌr]p"Hch>z1?WS "K2z'"4nOS8X1^>zE8'^W8g8/ğ81bDYn<uJ}Eub -[ O OdHؐj]%J>Mj"%QM p뜘v=cWb_r~q5t1hxןx\P(%5'q_qɕ3iC))0;79ƈϱNEVǟ+`b -[ o=,_ZtTTˮ%53~ znЀZdB9b 3Rl1?%ϿnABϮ=hPgam^JdS]D@81G18Ͽt[wY ܡnTT#^ t_ԁ7+-[ @lp _dYD]{08^*8=Z!<25+gG[O.ύ Gz'+13_) F OtlExY#:.2c-98^G}FW_ןx88|񷏿#e-[ @lb cJ>cݠ v;n3 ogٟW 8WjZjd9KKwu "ڈ?Y33Mh'aɑĵ%^4΢]{7?+*E@IDAT+jWr}/3 8[ @lb C-~mp\hoVJ L,; k{gݽe들 1gXR ђկAcC?YxO<&nf@xSaLpXC񷹂.$_p=A__t$$8Eb -[ @l?J21:7x,eF `N{`Mo' 8QMueE׍l'E˱/}nH2w汍ua0$РHۅ4ltB$eglA|gɆeKd٪mRYA2ˈ._YjT.*K.YlZE T )UT\E+€A RmRMqDV}a4m/efΖCYF^zQQu=;^F, M̙y|99ala_JӦW#RcRRQrEJC`bdw9/ ggM6*oEW݀[}f$p(1i^פIAȟ%n*fΜ%u(#:6Dl19Ҵq>@QG)o・^dFZYm+Fr4<Ȓ&pCK'gL4 P]fg^~)}Pt!rW49]/# _A.TN`vK=*][VN yz ON)j C( ? V'ի`>D.D26 $f UԮzlKiѪx?) ?4m"0V4B XsCM`4Y۫ޒ gEj։5gɹOmޕoh'Ц){'7v6"]x\xҭHO?9cI3fg]My[i e->nϒRm>? (FȆɜW/&Ei`g/ojTށ<-RB~ |wD&&eN)M'Ǡ{=j̗^M%s,9t<ѩځX;|̜rcsW9G%3t'ϖQtbnVB/{r(+~'ts7|h\W?x]Kw V7sB3ҰEo-:̽K:$yɃ*}?^oQ :+<)'"ʹ%<ۏ5^IڧEϒ)2eJ9OUo̬OKm[eB327(մ7Eq٧6=I|ɜ5[jPFu8 -pNu!Ǻ5gi͟؜̰rx\SôI!m3TMΏGmp\ڡthUR y]Vg&aq4k-mAz"YU; d1/.~ÇΓl@`%n4W0b?ہY#Z TUKE06:YXTs,GqO_fϪ5xϚyCϪY.)+k$}d nL.mHʑAK5k,ΆO5c66Uf B_q`17ztʼn#dH̵G쓮{9}#g7Ҹ;aR*_QX;^j#c'/PQ)篶^xӐ9iĹ X' 2, "m&Z2xGg駜2Q)l5 6ys$ǹ]]όl^'_ u \X9TҼ;l6b2 o︪lj ҡ;w9>-[ @lt ڵ+gΝٱcGۃm۶g֭?[l 6olڴI?7n 6l_^?֭ ֮]Y&Xzujժ`ʕ+˗klٲ_~ .],Y$XxqhѢ,XL>=x뭷bx=!O:)b@ZvCXؿ%"9ksRIo^:IC?FAJ8X0h"64zFhqֱA? `Ӷ?ks- -*c:.ORvu0jfESlNE%/7?}K)6B7m['\5P@s ~Q*ZZ y-|r8<"1~ގ)`}]H-Q}_ ?`&osǭSt,_ :QmKM۽cjes8h38X6&3K]Nma7{X2_YLʣgm #Z`ZIƹ!OO6Vpseqg0`؅z8=;cJ#'CL4M?F}7٦?gj%o kuQ.|9A$ pko K 3yU'W ѯnmOڽlLrL1eCυ, z!dиSR-xN#_2mbd6[ ^I[xf l:8SFH18|c)Hyο7ġYlN{9m *eIdL&tK&S(V`ʀNVqMQ=i2Q4+C( D&O?9 ^s'Ɠ4l1-_ߝSlPq%/ƿLJo{wM+%F2$̈́YmpvMıuƔzq=D>C5O; ]8*EIL|OնmB*fOB(l g6?Cmz[Qh"M=#SJaF۸=pO{3/,Y{6ܻrýp{>WĽ$~ߟ ';;;''''O^^^8Dmc -[ @l'2k894Y Zj&Tq2ku]x\[ҀTxN~#L$rEu Mi8CrDUٺs,C7öO-/W磪^sQkL)ܛqy%d*܁\۴XTHdKR,] Qu'~vl5+ʌϿ|fw21,"9٠|5A u$`;IIwwT<<\4klMy8K:t5M'MmOڕKIζi*y:M&~6Rz ;PCW̒?,Bs%@RMѿLwsρS=_jaɒMVGɧ ;=wȸMUդX0N</(y&-C'7h%ҙ坳Iw@ZT $;qD%@/>r{lR-#G1=+#&[d ~aKɻ7%Z]9`ˏUeR sÚf~jA.zpM4'S׬ 2F?'zt87Yg?3}x `wXl2P<h|8Y S^{TKxB3"SS@e ZO"REr6.3gʇoVp35-7֊P@|/K\+jURy[dլ X YߵMbEǬddM7`uTg:nϒNfÖawɘ=z@0EA bsӜ F>Hȍ2t eJD~6PF>Gx#7OHgyeL~~~._b?=x5 IV ZK|mO-W& 1zx7~%}%^}M;<[ǀU$^:i܈ex2n};PٽϒzPlte̡dB)c(:Zm΍נRycėyd@!yN>_ZU}fƧ,U+.)Z >"['ޓ-&Ơ*C(۟eb%UԳGߔz YV ՊX5E?5\z r dnQg_16;_@Z"Ҧ?WFd~~z0'u,뼯(=b #CƜ'ղ1W຀ͪNYno,OkVhҲvU̟=kl<1(A !YZծ&Y~gGV'= ^1HFXϜ'm>="8-[ @l4w;`1'pL.]C߉\c>9๶~kDMR!>+`;x^"_|;LovgNCvDVWYC쩦ۅ2;/|xj$t0I@V-[$NIOޏNߕF(:KOvܓT}k4wr&M.& 2`iOd >! grA5Ɲ 5fwfwT*$2cl grsro vRews^9; Ow4;moP:ZPN#%9xl*M糆;A6h"GǴOuCEm #s|vQƟ;=36~xJ Yzw I#(E]qu!WNh2VzW 8 ?sw!˂!f 'X ɓ{@aQ/$LjDeT& QܑSSr$y8OcqwBrnn|Dv ퟖ=uAi>͖Z2a.'';?wZuImKJ:xϱO쳹|($2!Q@'?6CTlZcV};q<49))d4;yS*E7_vҺpx GT~/kH-؀1?19?m8Wn, wĔE:I!*8b^<*n.\2yH܈7NE$ű,[>xJ?=q5f{';Z^ lOu">Ѣg} >syӖێJZ !PtxD5Еɨp\;:C4g$ g0,$Gi?gtA?N p / ]oـ9Mѧ=-=?M6 Vǝ_I kN,^*c'}Jpa ^;tvO:7LJSP%kHhԵ*'`Uة7e|-[ @l[p%%DYd!uGYD9Llc(4gNPj gdEwd`*1/<^f[]*,U@ @}!?KC[1Sq$oxCfP($)?kZu-\λelVY xLvQ~G}MVR>(CXak>XJB^Si$b PEȔ`N  )Juvc <-Xı{O4`|fw|*4: Uԝq7BڪGEi+ߚW {!v.^szo5' =Tdo O(b.x2k)?z4DfzޗƤU< -IYJOQ=Ѕ ~ə9Zz0=W2. P"*M|čSE/-'KXX3;S+ұo!A8D S>I}'nT^p49j0ԫ^,@䗴F‚o7?t8JcuH:JӬYƗ:XzW24VRq2a}a.`&+JGH?ysZס)lRH`k_ЊnVtMb -[ @l=C`2rn2Hdx@WP^eg|oudﵩ;7t+^kh=O/k DT"~;#r6TS+ۗ2Y'iCAE7_ DxHC} ?>8pcyf8~FZJ8^^f kY)Ic Iܘc Wa0_/sE]Vl1+Yİð?j:˶Ӄk 4!xWnAp":Eb|~1B{ˇ͵&Cx?9?e!q~ u_SjHL}=)AtŤ2yTlL%NzW_\yq(#U&=gg4@![2<q]TSe 9osðٗW&D`DkѦkJӀoڂF=,PD88;.R 9k,F@X2!j)]/]ͿB3thrn\u(M I2Sr~]N+G/bY8v/})R_F_,&g[IOv,̿bz wnآOT7Jls5'dSvi9@ٽ!t&(9d$vJ׌4#0#vSo,*D(SJ Y0_a/IO?[E5Qݜ`)bE%jRȤwo<{ʁ䚻ÿ|A{3V4)G쯎kENA^ oヤR_)Ƈ#}u0j*M m?ϐ>/_ 1O2L%.|SM}Kq3+jS?tc_UJT5+=l9P~ ]#و ษrf0`u3^Tvm8FGeTrGЧ=RguL{^2^VCeȿ|ЉUU!a#ӧ%WW"L1˗}Vl5.O F9\b1C`5b@;I9X_ky?l G^U 29*Q*w4mףdSϖ>݀7nJ0GJYrduC(+g; rkH+ o#%5LPFDA+g]k7{ivxڤRU` +Ǻeضk|Q(*Bsq5022z¦ݡ+W 5sr\We a6=ޓJymqVYUr5cȖRǟibC-:-L^CW=z0]GI!Fs ]]ogfDREByx5G Z8BEsY-F_YFZ+%s 42U5 H۠F5򎿟I/k'^)\>U`⺶,!h^W,!-+o|P s#,-?/odz^rvS ^+_`i`?Ng*"z#pGh%xvy;ͨySc -[ @l{/|,ƈy;k8AZ2c*]maZ2j6N7֐oԻGNzTNn`l,I\wRvVԒJRU_2tlEYcWK@WI/ N+V(2ç"OHIBIާ&0&6G7^X7:nyipt;Wp!'[B^,F.LYG+1tc9lGەߧC rw̮rRPr27QIUs90c~:oi=/nPJ h!.*[qUcƍubXFwlp:R7^d3?%;p>@zj'0,J&Hk#IwB/;l'qy'q:tV&,2dϪOb2xj} R?*yG%OY9zLuZS[NlXnsA54T$'JWÉ@Jl_*YMNm W"@Sʛx\4ASK៬$$/AtcN;#P?Tύ_!HT]ȽwXQzeΜɕ&m{(0KПN Du>pKuJd[#.'ZbUI=Ggt"l^@ӓXW@ @([/UoMl\uaRa,y-e9“Egfɛ+ݭY2DIyKQke/ CCIgI~\n>UJ_"Ͽ^qB^ J}ƒ']o*-qRa&u^? ZTpNR,y 83w~KPvK5&r'n`ɝr-j8S -і,xJ*;,l캪=3˾ח>8 Χȳ+LJDC?УE@IDATN/E)Qa*tU"Y.]Iʼn9Z0SݓH* k#&"r]#j-cΤrJ ~ _^Lqb󷷅[kpz0f . |䘁S` 9'Q et_1P~c )!u p)'Vc9E=([9^b/F] `h< t5XZQ92l= 300$0>W{\&/@xtK6ȓ0Q6סƧ bҟpM_h}K>M7QQ3' ڏ(?d˫? ;JhŜK GG4?}Uep8pE?I$w2nS8-[ @l ؃ȊjI, {k& ׈2PsJx/{qV٧n}֐Sqq%2(A="|I2Xwtwj!%AB*l'|GߚIuvV~S5i#1l[H6+ =xvzf/= ڊ?M<SJJhj,pRRN+FgT_S$xHggpp˪/iQ^k`|ѵր=6h?4? *Qu[>tFmQ-H%TOD]"8Jjs$)Q&Χ}qpJG7+gZuKv J'5eA"-}!CHEQ $+_blY[["8+ :WhEԪtQ3FrOehi#UOj̓ ނ+=Ctw[{RPPNQ %4(DJ :Z|(=j@L2U֨03QT*Cnj1TD_8iߛL((uk&"]땑Y=G/>^?'C5SMT K=h%JByhԔ?̝LHCE@/Z"|,:+# ??y?:>?) r,r:Ϛ($m9@Zͦ0 @m8|{uI2%5H3xoNomIh`۟x($2xNzUvt̳WH3}̅5䜻y*ޔ> uEˠ+Gs]>W?{m) $E:su۷} t,S\l\x.nq^A{2umYeCɞ,72>yVg\5JCYct+79][A{H Ȃ_7Yx l|v0WZ~JvaMzUGB幋p[cF^O0u©D''k=k^Md'UB4VKI<@Θlr $;7C _Jhl>~XnsNrpB(+U|<&96WjV 6W 9EF0S.K^6ɕ_8DLRGUTl$+Ϳwycfzb%9 HEJ2q<r$4O`.8Ǎ.oʂkz*'*R#'ux<Ӻ"MH [nE UdGBSXr3* p]=E!fWR' /Sr!?>P:UFk$햏!>ܪ8yC UzËUPXqBQ>4zM&ˍwXQdk;!"5J(рJpU]9׀E0s 9 H009U}3`NSNK,kw 7pm~v1%c֎ &T&Nјe?[?*1厸B&^}4J{o˥~3|;% %'!?&f"KsJĊcd/ܻmR7ѯ+gr3ڠ?oB˳eXVkc3#%&/ɧ/ϑQb^%*Ei%p&6(6x<_(% 7kYlj)X4ecQpL<LX>\O9t1 ICO'Ƞ;AJieOtLKBQPk{ew#q+YRInrhMDAND/VDZ4Aϼ.W+M(aTX2.޸(kT*~@p ۟dٕā@GN @?n ^ʪP5:ʳ"S73ș DY64 ӂ|9jo>EkHw[vI(x]l!rmJ\&ԟmhą oc_R_$JMLUz]KAM1o*C\pb KuIp8/_? &4LӇJF}N)-*WC E> |zErŕ%dAo'#ycҢ1| 39}@ߋxDH'p`lSQ$v('|b=|ʜL|r.?$$-*'5qz,6['Mã"W2+)SJYe_eW.S_Bn`o#qxɲ4yo:Fx~h1՟_79e]DW. do?ȿj2J}zխŏm_QOˠQ v*Zݚ _wxo[~Gl+Ō:@tŶ]Lo+Jg}y3ϳo"R 7 %2,=>*|q0nׇ}Yr4k)|Na4+,$'ݣ 9jߒn;uo4,/5̩([Jթ~O-Wrژyٟ@Zr㽈?>Ak)YAl1!,i%7 m'*W9 M ܲey!\XwM㊲?d R]f 3/Oz7) J&jĶliq$9o`]Hiv]7:L! uG?OC.;V嵗 U(ְ);NjȐ S/7!}t꟭kk#ٴMҎi/VPhe/-[S \o2@I-Uӄmď Te_0*u=pcdzT>]?AbFg~2u瑉Bj믜rQpIEm{IǘLEb6/D*_Ϛߞ:$ =Uf$h<|˓N}HRu/Re3c*yOiXFԇm͍K?b?)G]M 0, O_Rа^_1 j6-%+rc/O?6:]tP(߱o1oda|ҴS5cC<%Mz<3~2f%lŽeגk߿F8<>%w`|O>~I noүieYO D.>Nkbݤ/N 5;'s}$ a\{lBaÇ Vkt/PM?1TS}rr}'yޛkP[qੵeWM傎ӯNyFdJ>,øiC^ց@q -`N/&ts4˩Ԛ(֒;^ p٧xu[Xy2oh 2-wSH5%&qQWX' ;M,> QO' $?榔$1;َ$6sʆʁ*q"@2cb+HQȯ& 3R3PU KSz3g:J7!o1[prԅRnYN d|Ft9wG;7$64qܳ=?Nki탌E?(|0q15j^7fb"[P%Wrܽ]Q9>W1S4$]nCWlIJQnBmom[i_XsKJ?7fO6-;u}|C8KWD`186/iutw;iyQjI Hퟏ(Eז8Bp렍 c;hֱQˤIW_!~[TFNiO %xi+ sRVw4)w.{TEjREw܄Lqu.+<)/q ?:{[^,B:tkz^*LUٙ`-2@{8'`/3[d@=2 ?ye7xo_+Xp+*v(XOY$i?z v߲)ږGvptx"aпpJQ/kрs6S8/+خ}~ΒXQ1O*!K9)[&Q{tE3ƟLRt ܜiҽ.F5=`gL 7KG+^r\>)ܳclVjg*1w¼?bL 9"K(t1ܔ<]'n~S&|wTιXPH[擊h:ۜD Lnq?^U_|I0a5ȇӠPɾHHkJ]aϕ##!+@PpMNq4%8ʖ-#HU N=}{{4h3 ֮[G3ɿdu #faȶΈVJ,%Jj%;N\x̸+\ 5$U^d ~Ͽ Prk?c,`(Vq{7tM9zrlw&Oƺ_zw9Z<#9HF!_믬Ȏ1۸6EQsPC;ۘh1+V:A"94 iHôjBNd-h5p' \}tOY\~ƉfL\bM>أ-'YQ2R0 @ߚIPǦ?Nqt'GC1]ߣdK9 k>}AmՊ r@Vfz]?uT=g&bR"=G>c)+gJ8}HU\"^AVZtGoY8 gMm_n8T̮8O\kqa5Oqn&OmERy1gS!㟶?ʡUh~׋Wv! gQJ_ 7Ho|mGt7Rq"%./xE2y0`OBlznsE++lkM&1!Ш5KV]P#d lۏR>&.ilUH1<_Ҳ=D|Jmg4=,`cjn!Ww6xkڳ{}jw|rC=' ;TFf;S7S(u2?Y`)e׎VgP(O^( lM=OBe70:Nj_jMiHLU [#KZH=|'?ca˸ac8-E1V?#[GhJq*7^߽H+Qؤ6:q!@9'<)do!;2phLLQO=|D)[7 kϓB'4th#Mҷ!OW۹AXZD(%[{$t1_؛y_eapSe<hA)=^$_!l!1gU2b| 8o?劋9N _<s)K d83yӗbq coe)΁q:ơόop uGA(3IWh#`{Kqi TO~ܲO}O5WB"ǡɥ ? ,.BZN k>@(gI"i?jQ_/^g 9Goex ̍ZԷ4Yy'b8_Q@h7F`=-m4-vxֿHcI?@0mx88W@>FPd40kD 8'f%AWsSlRQy#g ?q1eߐf|7'W kps 8oCFHm@@@@@@NoVɜi3p7nYBXU\0l *!wDv̌et#ӷK3/а5 6,{l(ev;|m`@PS:o8;ڮ=o-9z~Dh~!CJ9$2PyvLEi@@ʟv5>50'~gwÚՈ()iy}Hpk5pvގu fV4JÊ M2?1{kI~_]($u5Ot`9#gIt:>קبT;1zƿcttB*o63e(( ƅ9t{;`p%bfJF7yK-Q}b,|mup8Oz7ݯ4 :y-=ƿ8 ͢q̛7$M~}7K=7%oCnpB}VĵcgFGE'A4#*wZҎHD?ϓc^G.Sjn"oTi vu&$+JĐoS4 A('6ΕϹ/CqcҀ~-J uQ.d]1w?AnߙS @J 4*S!Cr2Ϳq1riBXDNϿ4w+'܄W_#a҉2RͬoH.s'jSVM&[&˖-_$/ŋL,FiG8f8!Cq:нʇS[˭/&! [RTJ6]Ϊ˳ ;q2Yt)^E,E}r_3@)XynsN'TY]:?ex]mޟt>m7ARPv$VHp^Q39gM'+T]1psV M?N6<}3tP&uRF_Z+  ׷4 Op3 NBU3mKC6ҍGu>61@د]?`#J9O&2f#ᦙNϏTIN{@S< G%Bn=ז.]#y]<.x_NVyK ?c, ԋKfIOr~׭SH É$jG8>OlRTEI4֟ V &!r6XN ?[OxIFtKI'jqzHT~;0T/(g d%IGx0l\qH.k|Yggpш_&X X X X X X X/`mUAY 15F;q?S@;-ivmJn9YO@,KSֆYB&??'{0&׳$% |YO8R.=ZǓG%t:IL2s[Aǿ9R ?G+WϢ&4GywȫJj;IgS'ןf!t+,-:_U;Q2tR` vlBq2~*NLl*lȎ>-wPhV㯀dl WMu,E[62|̕RA#s@9_R\Auϊ;(_Y9lv<=+9lp e;KO^}!f3D65A}pGdU 4K~,wz5tF tiQ-7C~]|̺BlurqPLK1>:p~:Qti{ݽg2̺h/_*/]Jn ϊzJSyAñ5 wlwJu% +lHnF$O#QȎWOuTq1>?>߄biIj)pԇ9ټIJq &vP-7|Y*1|!G7e鋧qEfWld_Q R f/QN웚olL^5~ VOsʞ8>@%T?Ig/tl͟m=+[߄WÏ6϶ok˞r !4=W&WA#irwh7|a*/w(*VjժIUUjlS4|C`{[&]]UyDɫ( ~L}:ydD\wǣveA ]+IʕUZդ:dϭTdx벀U_Xz4Ai*غ?4FO?R!v(m?,;H鬥(Kỷ] ]Hꯝe[,`\zbwc^Rn$Zq) _mn6;th8߳"[Tj ph̒&yQbo^R'CiX)w2 808"_NW{.vo˱wOnRuq OT4n@;R;Q+W.U8t>UIKzyy3[@<SNf=J17Ԓ Pqj۱]+~N(/PxD!^Z$>;6*d =Vr9٣9rQA@ɓ0ې^J"wWbCK0lUآUr0NB)= HtHΛ(z-lGa\ybd{gy(?Odt =Z߁ow }ٚ<}ş"/??,׶@0 >) '^y|CorCHN]ScMSd]$3~R0JX>"-*zߦ/q' <}%>HH`C՟BnswUX,J\ikȕDkTA£ʮㅇ䒆PR"xi2rysEˊEedD ;ȢK'y+H7$P' %l'k_,W`$#r2j rr]$_2W3\SU$/FqQh #sCv>K" )O eU}e%+Aia,fmA++~FOJm+p3B<PLՔ^/`ErK}om]KtͲqRf e>%%̗)kJ~7Yf~R~WoO!c<0F98\ ~ 886c2RP>.ͮ?נV!9īo'{P k:G[[+g 2-*K\a_iǧM5DM.tG1m,cL/jeh+cyTھrDݬZCc5b[09<燛tjOy?.\D+f&6aqq ux i3۩*.(nMOWf@l.v1b1[9Ge%kJeCM::Ҧlܧ(X=qsjEIȂ/?o+q[BdUE_A?i8U(0Z  mbFHA==Ͽpu &p71p%(62zһncͼ9r٠rj,Lɗz*M6{E/YY6hBvPI:xΖdf_ٓDh~kNH%툣%_')#ϴ(гPWٰWfrPZ]$$ZOjZQD׏_aWnM)WEOjxL4kv,Y]+/C/8Nn44\34e~2$S|ee|QO) _A޸FM"?7) }W䒏Q@tݷA\ί(UKg 'J "S֖]'˃ɓt?v_V2>cf~2>qsKZZؖ>R~D(T aDLOqtIOa } 'lLH_@4^c(N~rPק5k0rG x/}ފMWTnNq[6h1X@ ə5,>{-R/ >_DTc&)/嬚iޫsX]$cz>p^ ӁBm6Lv$edqڮذ?1\2/16 74rɜOoib'q8Ԧ͑ :6&ǚ81DMᘝ}`&+  7I >cq2(iSzAX9 #y˛dҳͻ{nN+Ӷ8cKaerJ9°*ʁ;EZ]>tddas"wPz76,ib]c['Usx =ef=3A`_P7Iێ?u?j#AָUd3¦^xtæMƸ1)PJ:9 -yrNR(!wx\NW/:OFŒD[TZIL 7 I K/Ƚ]g%T(; l2Ϳh۫<{ͳI|5<|Æ,ͱ7E擔kΡw섡.Z@BC{Y]Oas0_9[.9 ›[(%j'\FH6#n+F Jr'kZ/\,I=8$G i7GqQxY0?+IeC"Z [H'0C|4Iԓ坁it"jvrlS.h;vjWറhERc32I'iOvǟE鯸K)MCJh`̸2tc.??_j\3'چj?/Wr,SrUy9rh!=(4H*Lj1NJ=;QcxH~'l<ҵ5FceRD%-Ep:JJyck; T)`@BRmC+U`J@@@@@@No|hgyE}D.qo0d-%R2mGˣo"Ə3kzw[u>fK_qSͪ'LWjW+#BlKE)kff^D_Lqp?5Ƥ"\6$yV`{]~I?ƶ+>F-簔. ?2lʜJ_Qf-v7N}ˋ o՛X*+*^yՎThħNU cTHwe#{]ەPl|l\ltDGp=|KtST 6_%P|mZgwiK Mh2 svS|!>yNz5'2C䵯FQnP!Ov5*2>oOK6@ᩔCh[|Jr1u_2QZ_26#'hLj&E?ڮHA'dCa?6 ֯_|ɖ2ŵ%Y/ط}AA]VfϞ-:uPHƐs1%Smb\CVD:4k3Z\9n'۰HF8Qh,]rvVo\.fϒ VIkH֊RbuR:./o8).H=RzRݣK_&s#s HHZ*RmjR0/|*+JTɊ{zRnT|Y:;7\ժtl(]{ك܅ /uogoes~[&9K˺5e:dw o!p+ذF-^$. ereݒR^o}^Hv;mZ|;odW sv/٧R2EN/DV5%C;w;`b-q,//{mKK*n{&qÎ⪦ƻMjW3'o-;ǛH'"UxKeCr~b)S}o< wAJE捫yEe ^&#񥔝G jՒr-+ o#;$~qv_/j6g>. & _\(:``````Y 7:vąOJ`;dжvQ:m,M+h'JqtA'xLW$ퟖl~<;Ëq)_?!ǖc a93#"}6{|6_ v_/nd1+YY&     [` (*\w=vτw N8a? i |OP&}7`oZL1 I< /ğ}ld .H7. WWCcE8 J@@@@@@oF)%KZ᩽Ub'3srE7Z kQ<%J2YŶM_SU w])Գ/ 柋#!hl'Q 7?a Gȿ,Lo]rϐ)Gzjh-uLفl17ʍ'<;Au?! Mp,,,,,,,Yy]Bڎd]_@w.c]x^S%2+<}=T瞻?|#ۛewg#_!06OXu6'oBϐcLwӏpο2Ͽ4jJGAp輾P7áOt2_v;v7|  AL5uZd? >>ƝD ?y.|Іþ?߼'I9^gsubI?!"6%?6/A X5?! gȿCM敌ɐ4 , #Jȿ|3```````vYvᆆD &\zFXRNK=6mG6(8HVѷh*o~v0 G  !VX[56#g/%E?t6 /=Ӱ!X#iq&X X X X X X X/`FK]X5x^@w>1+zEO SϤɝu+72Xtoc.RB;֟2B>+ 믷EEE?]kh'gNXh?"Hh  - XNFT3oC7@mwú%WBnf&q>lbsaob^ ` .vh"b-<֎V#3( lf"raq:9cC[8cE%tvJjnhCס,,,,,,,[`网8W /V(8;"1<*z ڏ;W0dg ~?_}F<%Tav Kέd=̿B~8?aQj *a OXC&sd=!w" ```````;퍬3ָh`Cu{{T/3!?MѮ@v[ɻyY{zǁ?Om`,@EO:j!3Mlk76Ez&qm "YԁtkoXC+j+> +?D$TvR dr\/]@^Tz&>}“^pZ-H!~F~zT4IcjycɟIY=d'_ |HN_~nF*y/=:Mc! W\Eר-6O$-I˜ie2;媋W*/*]eİ[[M)ق_.hsć(El##MΪ]Fغ+x`LvƿeuCi9&<{!lʈ=#SVtJ?wo:Jr('ϕ M1/=I~ZJ&%UH KC[q-=sHZ^Wy/G7*Uha?/Zڬrݝޒs6E} KϯGu^D_\tΎ?#fҤի2e]5Sʩs 7{OjTWE*J,^P 䧇O Nf?ԧ&fGK6U:sf3s~/r\̇j[!SwԨtjy|_µs@FOut:_9=sɚrƋ! | 9YÕͳ_:6Grv!!S$ذwa XO`ʝ&c7ͿrH8m.͟?>eҸ@=Ǽy~yHT ).SRmPm3[5q1c?yqKrn_]q:VV#̭1Βz)B b='#U4H? Q gʺ~'Hw&ȬG8?W7?A^d~[>xY;~%6Hϓ g@-0FLĚRdyfQxCO!uCLlmߞ4dSOQ##o-vldoU_"K<%3:KY- XyNNwY}F~/sS:I3Nr?o09%nL1&<1ktݿ,?F+?,oŝ!TOǹ9ȍVIAV'ԂX~}Ŀuڵk#Y&ZzZ*ʕ++VD˗/׿e˖EK.,YGxhѢE-\0Z`A4h޼yo/ܹs~)~!={v4eʔhԨQQT`&De'Q'a5MG=Rnoi,r6صJAlO5DLRٷ׫E?&Zy$ǿ ޺b:^`ZHwLJh}UJZ#}Aq?cyi2._؇uoWt\W<í_ikH?Ah]wed[Z=JM}+3V$%3!Ak>Vi!NjV7L'[~dU"k.SpG^6UHYr@Q/s?jPD~3CBw cQv\Qө>ӵ`8Rt[ 6)i_`KC8RQKx@F+crb]2aܢuXsm?3-NxTɫW4jۚB7_78Yp;j7~n>B?k=;{sx죃VҔ;?-SK0NsU>dm;|^|W_[1~?#*rmIC?U~5m0dR_cx)oΐw q|BaoFZ'T(?:L)[SrL  ÐC9u"qȞƜG] ?]Au_Xx`x-dxm槟~Νlxpx-txmxx|x׀x-_5"^+׍x גu%ל'=_ڰaC6noӦM_~~~ۼys۲eKT6 %X X X X X X`NFsvfܳ=BmG_v>F,%=Q*o Џ'g1*;#"_ l$_ Ptb>W&vVidY2V._AJj?$Ayn|r#iE9qr <2jt}&[>I u*ոrCԹ x>R[pJxT6ꟾw]'ÿW #MeӃNj:L!|n0فK}s䌚[2%_}<6ytzL/HKA@nUGJrJڞ-9=Xu [< tjjiq}_i^ܲN-]&~F~0Y^{j8sݥv}J:)^V4@@xŤ"YY: GWr3kx5},K;ח 1)&#"SeѬe W\,xg2s՘6{@ %an]T~9 |߹vtfGR.}tlYRc¾4|ń?yһAYz|r=$)R`0'M6X9yr5dGo^n?0x:Y,;rE}/g"!Ize&l(_jCXU =PmZ6QO8O} 4:4]°*bk4Ioq@9P1$x,:~lKPEfsdƄI2lDN?P?}AVeYRZ0cΓ+^i##:pp:fmڐ/l"^?]MȦF]UxX4;huZlY=QE5 ?[WA&q}{ˀTV/g2ýr.tn%O+}UJke Gh+7hc ~Vԫ$k̓=.7>Iwu]=B0$SA%+d, ~MJARPwk3nZlI޾]gW)y,_\~wkf`Ol :ǟ,6h<lu0mm&ɭɀT!׸t2HyZqhGuΌ?%WK'%;.>E^c' RXbݘu,),FSƜ/W|8uXNFXuxW#Oܰϣ2ӥny1mٵ r ɪ)ʆhOƿ\,#=I*lD2ü89VwA>pfA*bEk|h(E' vCFJaB>ͤ\%Z/X<saDCNuAG@nC!{m"Y!/*g^ 0/ɟ\(I=Q:|h:r-\YI6M~2Mx:mA$%1&~z)ºav!f>;7ȫCyyOPlVt&/]cṢ or6Y^Ȏ,0vk{]3B?ɖӆKk_4:.h,YM2yT_cWtM2qq }3+XI#(Qny_m,F;-E?Cϙ!ؘcl4 g8^fi!Ir`0=!>Ng<pNTy9;e̿r{c̯ ,ɬr*WAkyWu"ch4ߎiD ϳ;gn2,T6!bɌە(~B9Ι~No9lt~A>>cژ2'K+3՛t[<Yٛ$'Z}1} :Fh9!ݐh\w3ɿCfɒ47sԗ(m!}anm{`NұX؜TE%nm?MI,Gpy i[C8Zu{/XkԹxtoVJg[ܜ^W;TX~BPjOa7GXr.;3}7+uLn_1f8+ /zޞsiEJ@g+ ?iT@ PIAB%LT .abҝw;>>kBq|z_ij49fC/>66܀,ˏ*|1|H/)E\➦"eH/?"w _"71p̧u|0 KaAtH}O\'/#^~l8@cR%(yngw\PӒ,1^X?Һf|/ &* {2>~k,!& 'ګVc2{d!_7}݄stO8ֹ4XhI]+rv}ӨN) qs' YG}t Dp'RHy 偔RHygzS0(%ĄYCUya"RR1$M˴W\v%H[973e(AHwyuKZ荼*V ?wʀ.!&Gy( i>5RjY?dD;y(g\+S8 ռ$ೌ(ֲRE2d2w Fv+p3ʰ73I,bq@K6H1խPHM2Û7?~P*7 "3FSY}wgSec;0_ũ%NZ+tZ컖ϋa!qRaP$ƅH mhp ޕŨNYSHy brsׁ'2Qf CL!Q|)Y]Ged#\2oe1L+D(q} ORJl 6xd-ԑ)u<;gy|+ft0?`6H||VNr3Sn8wy~ \y\Ѳ3eĝNL<,*^}^^JW!? (_1ԢzjcxJL_ow/3pt&.ڼmŐDRu'1 %6( ?]trEH,P67uZC,g`Ni`b;eN139 il%Ŋu,T{R<`g1eI  #dߑ2_nMFa@rqG+<@怯R@|!軮_y!e#$ໜ@tBbn#I2bhSrZbgYZXȑdgr@C|!aeTu$ɘ~b~$16d)+ǒy} Gre邱y(RLqo bas7/(R{ܜ@E]cQ((9o-H=YJE"Zʩt#EƼFzf{ l*K#!)QBTgDHFC<>0<D 5QQ|wl\.1(?=aϤel )J@<"a`A+7#gF5/khQZdT=xCu#%w (w˜wXVLy//c> ?s NޟE3(^QiD.NKّfLwPF7.ӹh)ݓB C|눢^d=h'X`۽7'ݤYR+ج;$2{֋.K %'bHhux#ɠ.7% ~#Vj3=`Mx/|6R)&Β;E{K1$(xɓ#&4F,Uc>w&"&.nO;]i?ZmC+J2ɧYe<^iGԥJ!#AR]dҕǂhqgOZR3t& Tewb2>3|x@M ۟DU9Os^A7?=7h~g]*5- zYUƷէ~3ݶζd|qlYߋ{Sq2 ^(7\cx}wr<Y/z~R;Ww0/*)Nj1/_m7'?3i6@Kym:KyK[cGUϮbVڢVtO}K\r:LY0GAޜ|ºqZ8gRc]^n'g3OdT7K|TJvsPЪL62z*2s_,ުk>1ϔCPywr?ʛ!"k HB&|?8'<XOؿȶh: {gvh?HRHy 偔RHy_?u"gXnG&uemdZ EH&g(`~jb#]T>{NSH 'Q`O=_~Օ(~8-JS  %iGa=T嶯{_`:NFXQ& <4{|҃lfcڟk|BZpW9hyKuҸ'ߣHB<uީIZ7C6Zr=mvq>%Ȣ]Po=eڽ^+'krټm%|fʗuS^OSĊ۟FǷ!QS |0Nu{ZQlϲt jMuϘt|N>jG~"8sP 5k.MYu>9l(dt'_#}g(MNғ&̲=Ɠ_m߹!hQV akTZFErcTNf:(D _TZd!íaGq?cyD.%xٛ3[stQ{l.&<:;r B2:J7T5HQ,IB;Z*\ v Ed+_*JF4`cQM}B3uwR6۷Æ7`tk;r{|$-W\օ!QņͿQB@N-OYlWCO4|giDҼ?Gx9>Fp\_,wwv&9~P Í x8"#f!n7Vz_k2bɴ ,cZb\y>56I|UG9A@^^N@ۻS|O=T\~$|kM$)itU!37B#vi9|i>:K.U߫&@q⇾תAoNfq ,}hjAyj' &?4h )f͓O@J!y4 mYV](e%d29U$uA6bA(c+sIgN޼8L251]D|w|_7`u%QlTCb\\5>}rdO8By)ur2۟WhV /s\ {sϮ$wz7tUR+mU/Iڐ@km@Ɉ 䱎Q'ۯQ}?O ʟ }UU ço>e=*V=`oL`Ь<܁y hv3Q7ɜF-dd?*JN8|_ϊ2LJ7cHkcrho8vK3L93雄_~[ydK8u<3y1h) $wbK!'^PI,9vJܵtr?7'~N u*Y N,OCɓ )<@)<)&kG\&m.Ntωf!c&Y~r^gGT y əeJICKOqiO٘(~J[m$|4g4BNx2'\XxFyKlš)d'T APE'nL ΧfgJG^0ENpS?=yDNr0GPIּ@J2o&+X7ޖ~ȶLPQ {Wk#5GO/> h<g5O׿POb}8Q/H&i)fb YkqgZ:m(k]Q9 E+'2~'#p1td=!7̐ @IDAT#GKOzI0h=*q̓e0quh+(evC;H폸…B@ɮ]X0e=!'w_IgKW:I Q%׿Xt|F4HY{#ɠUF/I{Em{Z7~$h6H޲Ȅ;(7m*:垳yx ݅j լu([;Y.+y)$e`;;/Wt,]@z'cɞASon>rH%R;dBA~8{oX>SkFS ַm+۷{ʲO QW:R6_q<{*$yXON4"k( mT*R?/Ӹ(G ļ&1}lbx,n-F*?%QF݀6Z&4BE*(9WhQ\d׸XJzgJoh$׀̵eDž4D>k;%R+z|-#,TA=PW,<+IkJQ=KƐ E?_}:N؀o_rlcρ$s( d:h{7U8l#ph `T. <TAgJ?>:ow_&>c}V-އmd2Я z9 ΩC(n?W.o?Pv} || }kҴ!FKž,#:rq㟬!~THޛؙRm$; Xt,~`94lN#IkqiB~ l/?}W.*|cBCu5|Op{7qC:KzBW5 ^iqiL-fF@S VJ`i蛹DTdO``3 O5 '%/8Qyٖ3.lqt^SY3Ci_PxRAhej+Pok>SOb>7A:p>X[/ LaK8gjdLQ1.OW{]My| 7U1ݐXb>7b1x|%z W͂yF_6:ʊ>BzsG['$E#{x"Z]8g!Apj!h4ØbؓK0Ff,X*9IR܍Ðͤk?fL^S~ֲsⷘs; Fu@]Cڄ`Jظ妶)<@)<6 W'Y~fub7ξ0 \\UI#V~l;Cox(_ޅ'Ia( 1M7?fgɎ2GdŌa,' 垑6|!eK3u@|&%MNW\R!,xJ'i/ OWʘSβlϲ8;}E}.֎ 'dYbY ›'S_m%/WPC ҔIA8R։0*&at2zSW4L[Y&CV*~$)S,^D{YS$w27t[:ͻJw/sӤQ6D\6(Izl(C^ n~FKթ_'"^#:r omk #S|) շwXE-9{fx3K)uv^d~[:kOPiXDalzc4_hiyA3(h*Z,V@έTOdT0?嵪\z5:1R폷9ǥ^Z,Ҩ*LlܢL5ɺ>W}Gҧ ?f?OA9dU8 =}{EJc^2{ۛR=!7_<ݘc+cw#'|H J7o3ח*VXB"9K TUnm?/q\T{LOUYdFտC7̍8_w2gb*X\~VF϶B;}omDYf 'K-vǡr^&hS<.dI[ǥ,+;F&?ϞS*8*(zeA6s.-dr>KFT50?;CbMd2}mb-}T"eϰP|rO>i+!'~DS^ *mOP,eCd/R+k%HU K蓦u1~n"GaǵXfۤ۝[*Mc Z T:i rr3j֎ZIsuG0H 9mIzc~1ҫeʏOHq㈶2y8'4xdDzhSV}6}S%G9/+JJ6%_Ko11 Bh҅>py 'O/ENix<(-t +Go5Et}CiTsg1B)LEd<9d^_yRI<W$]zLUno}1G{M[,耡nZ*yɑ?qE^puN|;0_eQ,j0ʥXԶ Ėf;N.A_P!*K|e&ؑdx,K' w*9}玴?PW@0<L+|~OJ_v0sc)?\tO  ^SGf6;?tQ*hj\T|gP(@ud\3JyLC6Ov\dX2@ZB,{R&(W-* +p&Y7) 6#)jJrcrEs N VTQmrwVh{3v;0@A0\(ŧ-2tj)PQIۣYJ< 3g"_~e, öibi*Dž㿩}s{+IC#zSR5{OܣtE`. WiYhbTSʗ&ih\gBW#s #T+gJ[-68|?EPǬ{9BwvOWQ]~k1D8M|m?#g8ٞ@RB^q/\xAe8VT2L 詵Muehzj7UEOYI9_&Ba`r`yT,SU;| O E*5~j5HB)<@)<bre{7fiņJ_<_':V׻\D'/K>W%U/+&;l}p_VKzPojK$Uº`XPCWW mZf#yNRqҙ|lCIh?"[ҕr2}oԅ =G#IJ&3g>M #3W~ )畦=$N-ӆl(YؼY0w%8G pإ sr5Q>N= 5) U Y;Mh%vi <Ϊ w}D:P=۽C˹1~ *Lħ|JEOgd}مCy K0K5w6|aiocE7*̉eֵ"hqdA\T3|Y,ڻ E溫ʢ8?>?t=NyÍ'y 7;םCu'5KqEOGeiA_w䈤+8jCzϐnGN}EB~g$ʸVXDB,5/1M}l}7 ꋑvWX@eoo\`^03Xi /e\J2Y+WK~> +VC\D_B= ?G+޾Cdv߀pvآ?AauSAȌwZIm99}FV\iշ"HFI'[H ֜vd]!A3q%>u+xI^[ y\F)f{Vi3A]q3rb?Ϩhs7|퇋+U?R/Ub#"q(mWHyߖp91pÖxYH@9 ^4}`qZțYy}ᱫ%}3ЏAzp>sEe`;S%B4u@$,KQӿxFr}h{ț.ti‹*m# Z RpYABk;D1"&5uep2.ZSKQwz#K#Ey] h#|˱o4 f$C2>Rp%?7M]IC'O6}'+=gp< R.{'LvGWL24 BG,XӚcauVtJ>_z SWhg:J^MbGÝ@rHIGs_tOr%Ә Wj^_οo2ѿS޸DFQ~\vk6J~f{LXu$}\)h<}~%wiyDoîjP[>d_b1fKZ 偔RHy 偔Rw{Zris"fg:s͹B rI'_A)T$)TXsb9O=QdxݣI`!ɓ&emiqRQO=}n0OqS0Ż(C>K=$=YJq(]Z:Ej d5͜{e<P.뉀fIPUYwߵS;,?)5E,<qJKђ%)%SO51na pE!ԿWm'zmy-)J?+?rod~> 04 ];J=*>N9EJ><8 Wt kF@4^:Nnd3=>3 7 oLD!պJFA\yrW$qSS1rO1M9ʹi=d(P(@4LF63 7fXoIl]ڄ㋍ ;!yΤc~-%N3J_1)vVp<;Li ``AIjqA rL\눼B|]iBdCGB.9.-JB<؋ުOHC،,m9/3RmiߛD_wk?n^ӎ]9vlnOiЮ<ڮ3F1S؅$}{9Rd |ɼ^Fj@)<@)=`lF0aM6–3n3Մb9hOI! 9G_DbC$QL}: 6ծK#Ymע:/`9|N0SΘ[n cnpšZVRoq!:/Qo " .q1=.+`w1,+4u4V/md|+2+!>k8):?ڟ ܙ!Hؿ(<7[B qY)DN̲ g?}A |C 2$I~A KvB =^$;kOS}U{mh#>rGf?K"(Cp~.:xggS&*GɂA7 D,c;ȍ7}T0ǏگOONՒd'ڕzwm(@>(&Eܘ:N(PHr:A Bg~.2r楼lڟCW|lxי$"؜oWTnyyh>J@,(׵cےD  F5Ԅn|H^zbI,^vX2ZDZ?ǀ G/@ž!4~ˉUN{ ܓ^,DWE,3~Ȍ6O.-Zx@wj`'N>C*4W= -#d"ի%4~{TO{w}r)?aTϷB?.3*)Ug`ό8a,Q2dh=ap#efW*~fE8 1FfrS,Gu/ f="Wp,;/+$g9u$kp@^Vy+K^'8xQ_ ?\}Zp>;|_W"j-?Eڌ@ߥ f}}WX\ b+' U¸ΧH4,9Hy|V1)GOU(RJǺ<Ni*?jHCQyt>Xfdf9.[ώ0fjqnmB -C2>^+J]`?4*OF+uX! ?eJV%~hWe&hw=ET?Av7՛ĪIGhd1jZǞ g  _v8)e쭵Ykgڥ<@)<@ <=wfRO;Pޤt85$'J,3ʼ/2eiue_e\wdV"}x6y]]Ȍi|S?-I\,7}2Fާ=;ٺkl+6m$7moݺGD#d3dcXHwx|'ӽ_e,U2mVٴtڴi#t&.wwnf*Kly6|Ix5 kHR2ͤlab_\֗wvĐ׮8}P_q׸ML#|J߳R&.$} WWB_7_&\×+dcs; 6پulBȦ;d,8stX€eo0b/>ܞՍ㏅˺ 2v`d @V߽R_G?7j o.(, ;d.o|C֑)3)-Im\9_þW{G[ Ө?R>4#?݀RJ&#@^?IVDoEn5z|2qB">3)#+Oޑ ɱ{پTtٺmqWw~[Yr:$#*\9,3GWR8bfX܊C)6X+om*0Čcٟ(׉pR/ <.h v\!~JGdlhL{)Ejc)[fK!c쟐o/0<r5[F@oK_aG--'kLD0^{]Upl?xB|LC\;k20|*M쟌k;|E"#-PxnSI}>[n iM?jKSDb&{2߫xfBG6魮sS/!>=p}e\-PT$wx1I%!O2P}UD<=㛕̝(SX$PU ؈Lg76@8/HG#\W?wh#rKT-#BNJ@b(U9/wO9O} K\Oܬ{Sȩ+ O1FF72Xy 7>ֿSDg?6ܟv)"s`oE'(L)#cد&$bf'j.ىW'οW<=~h?<[8jMn0/f=_شmn^N`t5C<`$ߨU% _O"IeYq@e|G5 ?'|{&It^: ؟ʅ.rxs&~smIaSa-eS|͈Y|4CT:/EQ1OU)Aw1d/J*utxakx`/ݘ/eW睈mO]T-F7Ew&R[MfEɹqer=qe4hj#hRgcLRHy 偔RHy x9'`:KybrfDҘ='(։S;4,UAP& [GSJŌGѺg]S<KSuIZ'}X騉Z 8.m"NJR`Q)Q;QJn!XN67e|EB`[= U(*%ox顼"g}P^X +Jx` 싗("'Xi;1c` wf/Sk:.x7ad/9|e{> ~,t(zD˨?̙l@+p܂_{1"٘)ΙS9_O+"Ѻ(^% >.ƏR!OOIZvyFӐ ER+)gYGM]ʵ4+lQs]TRº5{ʏH!>>bQ6LK?"[[67n%𝅯gN5]\B. {d0DlV.RUwT"lE3on.OA!ozU|-SB!M^]}.Y~f -fv~aD<;yeqgd+2~k UI{u]J,ે|/ uvТOW?^O,Rri[/ F_s}(x:੧x3c TY~DzPNKi3#a0״/?hMو Hǖ$r6 H>UǿrohtЪt(>u@o/ {^??}=HBLj_CV}^O%m&Ԏ$W@`\$3-Zݥ#:KSlg$*;|6 : 7 ~[)KS/Cb£sMO?'4 !auHjd# !󠒪XDԷ?&I.L\%j J)ZIx7ΗJ](_9G ehA?:x3+^9GUx5'G~<_}A sőȌOp_jwxfY+q<'CVԮt#6n71KNnkdHlyę^lwlql|3#čU1+!t('c=.^e a;V|<2")<@)<~R'sM83;!kJ w:ci\rmd^:AL5(%Q N_uv:IP,K*+^o"!bgN2Y|if>&5 3zT,@RUYBRla[U? Y<beϩH<*_IĤdf,Â+#bi [S$W Ҏ=c}2JQ+Rd_ELf(UmpPj#9#R{ѣd϶d2{k8Sj~J~ ڈwW 5u9;`'Mi"FLjI[GS_~|"Yh,?_,/V8(>tԿ{+';K\ >&jm~/⻸J Q-;6gW,U `-%|! p$[̐?p?>#4~K%5][  #>y,jSIz{ (5$D; SA؄EF[UGƦHIeۏI-"⩊~wЪrOZ8LEz+'kȝMXpԹ: Qʢ63_@@e+H)?cOۅ&/NRŕI&|iGkg~M ɡcϖSQm%&rXlr99[pװc|8]z[Jy@hT+ *5CIF:ev gˌy80e4mEU ~OCťa?\g螘<+q-ڿ]Uu(7ykX s ]2 @5!U\~PE(a3'\u!0KTGcRu-ʿGVrc7fӎFgII5=%?]ū`\wYՑ—uʮ#P.+pT kˬo~ Ymx&߬zv c+uK;P2JS%4hTzLL󿘏L=w?wmoq?^l[!4{xrczrMANH)->OAlݐ #ʋֿ;ɍbs |+#lkop+VJ3#EBA-L<׬vyj~5j#S; 4t!`"Yyg5;o/PKΖo0a;s<>YlW&l5?K)eiHۏ㖣L/1e0׷f9& [zUۊgMZMN;)|aL_+vo9'>x{sb $ϔfxqQm &#cnsC7*ɫ8w~AVRX:My 偔RHy 偔x`޽{޽[v ۹sgcǎ`۶m[u`˖-z*+͂ϺX@IDAT76l? ֯_ou낵kk֬ V^Z*XbE{XWr!aGs{_sQ66<-&2{ ~}5z6˃|L9? ^Y$GDP7j9]3AWU?cK0fzs]moxlOqG; O)K 3~LeY;"~>"خI0q2#t.tnO tN-!O/~3o4bQŒ:&+& YkBq(rWYO]&E!Y!Y?N$Nl1&w0W ڐVfCτrUK ZKNڑ^f`'uf Jnj^a`;o9b>%fy TLnY>& !(o{6ɳ"Ǯ+xceպs7$_/!e]n,U+nT@42;}Ѿ Ư-EYUе1e{ufUūI5 0}%1CeeUEKB(5l?VJ|1StDq uOw$oAu&q]HblJ'6<_CuqcB~ѱ.6;eH{U?HZۂ0+VUxL|@|}>rذMBM:FKC)'}IEq<}37Sh8 m/^BVUem !>IOKk+.R(|XwR$@c'}P_<C+aS˽͏TWnX::G14e+- :[Q~sQg>js4S?qcNwb(\{ b&õ5kk׮5p k9\x5p kA~]kD\+F\CZ_W?]EҮo]rQ@%9!w T@==`3D1z@A0&`I%Ia[=lB;|nzy&s(~j׮]޽;/333eee_vvvj+4oDq-[ @l cK"&Dx2B0U)1UzSTV~=@y'buŞiW囍Īzr5/^(qrY+/}Sx%sR;&nGcSVC=}g}0ow:a{.av=}}p^w}'S}E6Bئ䑥OE+Os„t#kEhxAO=t}B2kOUق/V*7ʿ\TYW݄]L^&dȗ}SҦ_E: !? ^_dȘF4yE58៪8+U_=,x~ɱx"_>$9PcRAwn~|(*|p?^U}å4wÍÛ!9XgHKIg/>R})4I۳t|c5|-޽t{\|"]_,8?{عHy?뙈gKJm$eU^FBa2hdWACVF\o%cerEG;ԟykz v CC?Tُ!`+Xoc6:PfҬRل'e{/Lڌ%=)Lܠ2qμݹ*C QbzfEGHÌ?yW,QR&*N5 7&Zad1OG)LMJ\yc ^?=yoyV>Q\_34ҁM8ؑƟx9m86xyiQw% J%k)!'fRF)J)KR~4^6\u3 u gAG9\׻|)#&Kj D#H/m=,ĭJH<_"8Vcp<?W廍9rTÆc"0NJpf3Oy$pmIz4V"x>mʺȘXܚը7G&Z**f0Ց_2, =b.QKϩo647>A6~va'£aLIٱՁTZ4Vs(uZRK_p}7&Ճ=qWH#hR .//_mʧ'i t((׾zȤ pT a4S=L:SmIm>IS˺?tk& $5{9uA\<>s9zͻ*sS+. 7NJ^])Jk]cS2DS>bxca*cאQ/lb,\lWMR,jy柔S,%-2o*YUNjϕ%jAK|! Zp&?GYiKoJuab/ _3?0d|I/RrxZzbu2w\Y>S!Gɑ*W.sdF||:Y%KJm_vוUy-tGmN"+Qz w7YB_'qm(%RNŨ_z"T CͲK,1g ѦͥnyO- -wAZQ)=}\ZeÔ8_ .JHōkhsGȆsd򵒨RU[.֫k㉛ u,MiK9y6ٵU֮Y-VnݥKεDrH9/|GWwf,'+ȼyekIVIj1"/v n^-Ε9H*零2䠺pl\ٶqz=b\[d͎RRJZ??7*x1bԫWOJ.-)^űEG}<)qa0Q) 6.-[ @l\ ۥ\.!a@/1P<pSe+gICI8G qA' wؿ @I_BhK]?98˚wiVlТj/d%wqf/+*#Ǯ ;([U8?Hhx ~!ᚨ)/E/oW)Z\Doo|m!.RyfGn4e'.t!'T`IW-J -{WrqǑCƧ:$W;‹շ_x8-[ @l w/da/G@4uíxt2" o0nQQ_G( 8N=ht` ^?fE[lTꢜo T|u a%ǜFV=O1Gpꘖ=->EcZXWaO:ϼ*2L:J NGOXϿqWHzs8G*0qoƟ43<.@lb -[ x_1-yYYY~ziРr\ Έ0_XD)qa0Q) 6.-[ @l\ $v܉lX'J*3_ر/-\پ}̟?_ڷoWT8Dl2%EZ݋GA+aCE@}=b4_lgCᬂ@?C9HWJ_q*cE[jHgUYlw{ozIҥ%%%%EsQRE:|a_+c=S N Q_FWPb -[O& 7!tg!<1\Ypzu;b?(I=S, 1ho&Vsyύ%4;xa  ;GJcjWknjfo^D]ba-gKIU]P;b}(|B'88a8iR&X%?'!mlb -[`߷>|!-\47V }JcUO"mbۘ8O FL(?x_" ݲN_qA+'4R^}X[+_+EH//$\p}@Vcl1C>m]VҟWʦRt1-&Kr+I%"sGm}EAZE9~-O_<_~Z,+ZT\YU(,k;-A2PLWGO_:݇?ߊ0?/["Woܴ҂iD0T)WV`.)iCdhé"fQ'Wd#b+&JeJzϘ߶KZZWTEU*| ?쉿do?-r1-EV9HԪ Ŋyog<J 5Քj%,?)@!э~ S_Zz{x=6-[ @lm ґEn}_s%j*-D+?$c)Im:ʅ7=&<Znt6yr|IhM٥^6\BYGFNFʋx +!Urr_#V咳N8Yn\U\,|n Ɋ? E2DZ9hlPF7rr*3#ǟ/.$N=T i|DWu$}:Y_M J*w4Q{~gJ@KxP߸?RJjbRgMyʤ)u9UΞ 'ɔ}6a4n4LK^T$I@)}$_>uf'q5Kz6n,#p"us!12)oep$M؜z:H4l'mz)vb*ȊJX 4iYx"ʘ=Kz4h$o0+WJ!ǜ*l!'4<@#6n$5\8V22N)[^sէ(*{th\[sdNri{.#Oϣ YmY&*63C}}0rt6x,dI"{hXIG_+TegzxȒߒ%/ (mɜUj#/EH_Mw?u56 rPUT̋/Z6q"uԼx} ȟ#*Q19zBfg$ صJrʷMƍ1ะ6s~i̛'@zucA Oi-yvr$S?LjGTƆΕ:vuu!y0_̗$Q m׃さ46'MϤQR$ɒ^ܹ#i3dKdg=#F9ij[8^c/&~yrma3U!?SsL>襁3aOlsǥK9?;kG(^RFK 㟙Ҥd®3\!K>"C&Amu\Yu۲𥋤Aj۷bD_1Cj@޹FU\SdҶ>r-䚟oW!_VWR˝oc~]2bRA=9VVIҸp 83 *Jsz/ҽ~/;SΔ)\BSpZV!z2rKc)! [?ԭ0w-Oj2P}"uR/ZNe{ GXb^Wʡ(h!bZC ?3}b~4U+!S9M^tL\RSM`/i DX^ƿ[W/#FM:>ݤuHZ?sTQ%Ha5q8<оk=_ e$j-s?؋xcB1/rxPgO̟ofT 9k~2`чr9ƶ?*_U2{)|ۇ qyrq{A0g)Z~Iۺ* ]̆dK-h[6ƺ]1~"q>yL"ï>B.9#CZEzD 6WnEğ)\M.4;RAYv۲)б=qyQI3naxv֗rKRa7:rAϐzLbmVa^ls~YB\(M-€}y+JTPmt){L맜10gJ )M&qȵ뤎Rzrɱy"9d[ \B܈İvG7s&F݉ cGc=a[+:m^> (]fA_<^L7`لm/ >ۊ">_e7~6I(䣼Д(c/"=V1QXgv+KI2s;*%]©ٕ.1|tCGG6T8og}}rz0~߼66E;~f/#k6hTeK迠/m|W eԯï+ؓ[*䷻q7Q֤?_W_%M a]ƎɴF$G=@9~© im*)' O_?gcyj:@G3ƍjmUmVN 47 >lv(@BDۇ8O1ókalQW:Ipp 5skӦ~38%0Y3tQ\k{yfqjפu\kBҦotnEtZQE^9 myME'1WitmOy@W~}>ݹJ;B*U*[V.wo3 ؘ$k$`y% LX`!M''>|zcR'C?XСP 9;\De012 Nq[RV;y$VήWH6j.tǟ"ڿiב?&G:Ώh'ևZvxDgߝnS6-P6i86?!r@Oyδ^=?ј4[i^O 5kaXw}p.%ֶL{s|*bA}2wQ;Hۉ{ o :y?05$fC8f 6lS_W3gy`Zv^}>8jcCԫś?i;/pq ?sskmO _ vMAaꯂHߓLE,Yөtc8ƒk-8.c2>h'fy:J%_J `m%}CqM撽OBm{99YhQxb=gs7R2e?-kAu&cFb rѫ-4 ^DP 0ipHL|rOi|rax'{l\Q,%&~!?.ޤw}*M}yyn)E.tq[dtm<7sw Iw-k٭/Qz %)Տ'?+hH%<1ЌHIǎh@uyU^4dmW \ɵ+ȦM1>=ƒ&8Ky e:.q>p쿛g}VW/0MYyRJc7ʀOΖPOdwI%9xz h  RabnW@6ϹRZgE>L >9\oXR2w;R^-'ӣw,r\\ Mebh'?+ kBWһzxrO3UHL''K%8+ӻExq}"WTq2"y-ڟܘ,q'l`De9w%]GZ9)A^oʿ}2 Ъ)!TmL7*"tLcz[wlk}R e}2_<7ҿ.G /]'ĨmcOYb%LÝmAv$՗9-uroӳ)JXRLN7{De?!G*_!!#F^kO|pr.' OA^z&,GTU֑n ]o:OI][7ʦ_VɜYFIW l p/$ծ v|8=W8 cSs}2vru}tb%_O䚯7/R8pj>Pat,Hs{%74o+>ODu2oëE32AQG?_.t@dUف$QX2嵻pBȜv, D+-\afgr:GrXL赉GZ!y2#!6lf˴I!OȻ6 ;/ec cC'rߨҕ1]xT vȪdKõLjbI/L5ș5 c;1e'חJ%َW&~5!9 PIgJuCe d`<ɣx=qrycq{ v; Ǒwd=⡣e%c (/){3>x9rM qiHFYο "|}VGOyK˲xqC&QF4T33Habi sdONm8]9x FF *E}Wm(aJ,WO?%v3V˙uT#Yc4 r˯KjD#<'NRi"v cJ<{^;GGⓟ*c Ж:Rna1yZg%3m6ȨIJfq` M|U(JwU,dk3!;js?拰,ݍEiiZ7Ӕ/}jLQΫmpCF5QO?I˴s{  I|:6{E0E~X˂A[;.E ED~`xO>-.|NrV;owԠӞP:m;=iB7'vœ>yq'`9;C6gff9ӢSXQn#e;&W$e] C8E4Ń/ }~Oyq o`h(\З}bffn`ܝGs^>L16;>'$:P?˙<-8wC%*ALs^rmmc]s8OOz#+>y?V}1Vuj "|"0Hl3izCQ?<6 qÄ}oOIy >WވG$/xO1.0y[&%vOdC/dm?Ȅ hDeenebpXy 2n?mp,gu"Ne&YbrAlF7=T&_!ҐDI}BV&!@(w]׬ U4vS3eOgSeJ*)OS8_~zGWLSyJg@IDAT'Dx@U=ߠL0;I9-[ @l] $Wy.vr _͓nsSS􂋅T%=bN2Z$<4$44ſvۛ 3L$bBT@F埽dg~ 9D9=E JIߗf.M̸UO$93^ ٠`yT}Ay U^#0m? CTE]2 ʣr<#r99gK4lCED(%%q)*6`EUfcǐJ` ODžѵi&{咤t~Hk_x $Y^F9?Ӓu =_Yqޞ!1#Dpw!XO*5vTcL7rVգ K(([ן\T@N'> >%5 x:F^u j=(ChE* ?Srs'a./RFWy{>׎/=(vRWȀ~ 20`Q6\V6ܸRаo[V7 F2F+I?Rxe e1]iO0x8,CE6] }'ONgU((y K*w(̅ϖo_IDVm6Ǡ,q+ڕ'?UGTPϔp'|#}WXx? m>]D ҃o`F?9}_:bjTh%ǖa& 2cfw?RbFWyg>zꟗ?!X AjҸLFķUH?I/W̋JmBGd0jUN:,M/ hKHKI]eCK* s>0Jwlis.OBx# {qyKVܾ{&(?quMA̅ʌFLJ|RLNs!+qoߖP'GK&SxP*i߰mlb -[`߷'dH"3dڑr;egAQ4rZ42?1>J Q$Re܇ Mv3dİEɯtOR&Tmlbq |tizϧ( V̉&vsCe6SǮ5rJQ;r; LގW?0gM?_CT[z?sr@2 xm2xy;^Ɇ\\e5VVsthgJux,e+72r_RJʂmkIB_Qh&5#]W.Y>*WIgez#Pf:R Tdgᔛ'1|xҢ?_IC"[0pG89( %05V{(|a=ˈr)ҧ/3Ү>x-]e7rKq39'*ϐ޼JF\_q(:S:HCD#dtdࣧK{?U-+y銷{6"gjtZIzބ Xg1/H/"c.&-=O38̉T g^ T;%"3Jk7s k_z^ y䃧I;SD,\&-ҫʘ7s=;Y)b!TXH1! !<kXۈzuvc~ ڬ Ey kNwTcGJLp=(qq"/g߮?UdQfϖ#1Lx郦nB& |F[N""G1k"PB6OPLI4C'0 -+C?,#X?Uap4ڢ& 9hʣ(v%F>XU cu"]_RzoSaSV$Hrc(%Q%M*rD+㲸(i'4"TDHAF\+o΀zssytEo:\{E,ל7\ht9W3Jr:܃Q=5~-'oV(Gp0W*6JyLjs3{ ,D{}/7H`SgT Q4@p/ʛ<|/~[ruv'dz^S:@e{QK\DȜKtV@@D?I?|hi|9 @XS=JSn=a"}.3$whd_JX8tvdEO--u p]3;I]H^:cRB =_9Ey[)rmy2kCk\z&_k1 ~BNҧ0埂d]wRA⫍EG籶5LDW b{]J_ {TQ._.O3K6QRv1ki;} UA<sҤ~8P;ZBV-0 Kd _(l}YlyGl'H=81%\euBt}8\mіz!lKQ\XPDwi^9}=4m O m^/[eo-mtOim |1I;_.q_. vOAC/Y]X{NܨKtV[(/ Lr]]X4?i=⡩cgO1 ite/ɉ,b;Ghp`%]jEiS&DiWQKo%ub 2&z pۿABd0[Q2*ϐ'o}'g uj,&Ci{sb4)C2[fuC>Agu4ǵrKTWْEn+:4}'`HJdQ=Ʒ+9RfJBڌ<e Ѩq_ _ɩx:Y}m&Fw$c9FKPd;nlP)a H=!y%|~w&Ta}UvDs3hA |ʫ?D`|ɭPp wѢgn~cʝxuk!׏M@iMpt֩Rl]_<Wu{9z(DreN|3ݣ2~IKZ2S>`K͐ Nb -[ @lY}QRc H 22Vj  6HqޥHl1Dvmq n++w)nKdtLݍdr=<ho&ۼBS,M([JƎ4h(f2D'&dě}a|:m@ tiS E\ɪ01 ؿđk[lJBk)n" `9sqzXÞ!?/2PnbєG^"݅- #r&Xmns39x~J%Ed|%2[&8͟$M)2SZ*Pf,amڝ3p'V3 nz֌r{~(Yl9@і/.0\*b÷GN)'-COҦTETd39+ 8D*^'a Fyۙy_}b[#@Wk}>[^~\R4&>F|!qqi1L '_\uv[>q f I7C^}.0S ,+gZ ? 0m)6EQ$zVk/He W~o \2!@Y9hFGkޔWw> lKxgzg0w9}Rҡ=)R#~$V}%ox'9H_"9DNFA{?')AfsU6YO 7ns۟"Qh$ɬ+&G#ltY .eKߏ1E;`GL?gQK*% 5\-Ӫ@Z{밞f(v(=b ~rT[o&9 u*_Pd~h`yO |!|\i*5{H.{:x3pr3%>Ȁ$}WҥHOC^AZ[TDB(Lå?4Äg/X*vyEii /Ľv*ʏ2Dn0B:c<+F[JHk0jYmNk#3]mK9`*Qm2 G'sJ՜.|B*_:|ٿ ?D.kۄb:r_aCZ*soʓ^>sf7?IB%űIēFȇO~YIҪILT#XelWyn9GqfHMNheomη"p\u,,$MQqpb}qCS)ATRǹ!$aab[SC TʠuY2͞=JnӰFPolZ$ /{BsuA{ti[7H銾>GWa)?Bvl|/A_[?6J"ӟu}#6LJ~~dtzl2o,MSyC%l1ҫkT+aLeoeV>4v,EPOc\JJ:w}$h, OV&)[==rZY6nB>)PmlxX} R.)vdq*V+夛쭛_#o^4C)чX+57KE('~boLH(HҏsePyu?owm[mB|rr"c}T"i5agP^"+=.^*z!02\iyzkdfyz/Qʺȹe*ڕnʝ廥f\1g9SSCdNea&L~$4b?ȃ"YGڍR4KUpVP5?*_oҖO1B}M6 &3kc$ޙţI.ƚNFO?6t*-eKK}ǵZ޺p\D%HF~D/o1111111>*PTFzLR0]2e44Sޡ ,Cp#[8xlĎɗ=; 2,ZɬSl>ٵ=CvΔ^.W!5,ynAh9*M;9.x()h^vC:~C&'y\WdʈOM||VJ2g,MyWɠw{aYX+XJ]-)E<f>$*c|wP xm?uxc 0"$[Ӡ=鹡V^d Yj(9XK>49|ٕ!)JIEL7@+7[adI=öemh!8pϺoJe>z }+T/H)ûiέr\ RJRJP\]a2 Dhd>&)Y?"$j. 0^vx)J7>h#a)T6R`b^RdI)I%b,N\=R~ YHWR FzrrIkx@I{wH&!E'۽Gz q|}*0AbL_ Υ؆>f_E p&s\{rWemڊT466OY|@oşԍ Ω8֪fG\Pǟ7Ƚw.w?9ʠ_H[sG>˙|;]a.pe1wa)~=Q&ɛ쮋Ҩ~=t<<5=rF!U+ Gw"+_HlLL.B=GbT"e$d'*Tbb | yfNie(_B`h(dߘ6j >`*.]JJZWE]3]%gZQ$vu1u @q>mXem2z(%Hͬl0)$PB1?XNI Z_^7/&qW^C6#WE `%(3P#uN͚L\Whf?Jr &@'U 0 Ov7Bێ{f||[B$'Eh%fҷe*&s;'BU G m\w~ ^di(_0VPHF<*P2a ӗ10ٍs_am{eOҠXc)c˾3w|-ҺjTvAQ viQZRA08 D\+7u$ß~L$+,~A7)cҙn)R0 oR &?c ےd ъɂ{WD 1(ӭ2,Zwx\iM rN1Һ?)9lE/!#7;yk\ uO#OYTDLv/<)_lE?= _lE P7Ҭ&+Ꮯ# #/y0JGZ3Օ\o < Be Y2j(#9 _aH-jUrϪ蚼+F7cc9/ tg~<ϰME" Nzl\A&)H#Te Ce"^=LL}:T2j!R1!@; `/Ɵ*&Tp>? 9O ۏ7kuqy68W ^KQl@ 3 Skơ 2/ FF:/* 溈W` XA%7?GkX䂿w?sOT%OڧXHŨyO{tC_ǐ[:I/|zC.rŵrĿ??r{p1dE8b?6;xT 9'_jtYCęq7,TA֏;9F%$R~G L0Ӑ^ELG1,uIW, Lȉ$??ϙX_M@@@@@@?j$2:cBǣDwNt,?#tpH*gU.<婾P^TLkױ}ZA[n3@Aj yl@-3ةWAf/~%9,i+p_dp}#O^E>U|Fk:yƕ;ryko{X{S.C%4]j6QRq)?邇9$G0.?]={]S5r$d#ttٔE֯['ׯuke ,ާ>IU]la | ;,y1zĜoVm x$;#T4zQ"$AbG䉱7n>:WA1}ƿcd'pL<'`cLgblo 7*3/ʩ!hçg15r?Gv'sK]׭]me6+~ȥ]L+=,M_+s50:O474ɞ NPu* e |[:?'Sn%Jl_e}fzټqp%+*3 99n-HԽw(_ϱOE`ck{D'c剿}4ĺ (eD^lՎ~wȟ-ϗwW{5a5>]eƘB?fl2WXޥY^&͇&#}͔4~( cY4B-1go歲hm( %<ŮCT2ƐՈ|~U% 5t J/% 7dpv/yN/ aqBOq6??yNUR) eb?.1|3 r9}GfS&ҍZguKnlRxQAjp/k'nd7|HzG*_( 8P>rTg=PmLE7vA@ge,~…*1y~DgV|%?{SGb_/#m;'KKE|bŊRREݗ-.G]^GE2 lOJbSpKiu4)euOJ}aT?ӽo6J7~Y {sގQ `3@brO+-Ovd9Ir(>i)},QL_erRL$?dEZBԩhrhW'_2%j6QwK l;ws8ȯa;V,6] iccl֭473 ^rzxx&e܂G_ 'SZy癗 ~ΫNr%YL7򹗕GrgSlz}"_%(僎U|c*d*/ݧtX42|329m3Q?VpuM WH'Cg-B }yZgi5]ޤ5g4mfouP>ع# N_ ㄮzݻMג>=FC6f1)ͺ/a?X7tc/hӤh-ܜX&x1)GΞ/t)b%FLb,_;eҽ]fW_yiu6faSR"JMOhۀ/>O#})*V,'%֐o1vjPRFUTҥ :sNLQy27QEǛhBG%*Wy cg}$c|$t_ |Ӈ\S3eMQruLcYGq;EuϛQ4BGO2eWU|U?gkF"/, e3,?$g\Ԉ@9*Y[k2KYa9)uPߙ2WoImG'NҤz'=? <hIJ7|AnA̒O {%TN,.iYd2p.&HerǥA*ge/O'R9 .,2o p<2FO!ucRxcI%ѧy"J2EcoY+Î^R$L"w>q Y K˖ѷR(󩡆%tWo[‡.vwt k#({l0C/"/^:z<(f?dgސA?OMc∫MmedtcO,rVU0+XeA§tĂvOio XY}y S4fϠ[7?)ٙ_Oi;Kʾr.(,GqmmlLVM*d I Ly2'k2S :Ǘ6Rn̔Vf)SCCE%gT+%u[Rcq\i%R#lBO\'}˔.=8OL?=ǟع tLX+//?-OjS6Th _Mi1[̋_BN:T6K("τդ<ڄbb2aե)2#L} wv2:tƥyl'J'J{&g^'^)%p\_M;F9ZØ1d6]ĘMJQQLq}|ٯ6X+.>oYJr Ю]!zA$kcyxڵ"W/MD7AO+(GWZo:KJE*bbIm=XzH yϥWV/HM:s1vV؞t mdUO}<} Mm)mw|.UGI2sFTc0gdaoرN~gʴځ6X&]ݭr_';+j+y 9w;?,sv@hqr"j r֘p$RoӶ쿣-P CUԉhˆ!_H-KX|燛Jw;˻eί]MJ#޽1tDb`ꕂz,`܇19Y $t#6|i(FRaa} %\\ةǿd^-OΘRl WUa}L}4?3B WnAG&K1)[1 ”?| (&= ycd#nx.u$x3!!VʣRskDM-T}U9ui׿:~sqR)sNи(X{i&I'j˳j*E\ku*oxN>?T";W-BTe嚐2nPwjyVg(oxurCަw7˝'XZWϓ􎵲~2j31ח1WGNtE-'3 uAm%71111111vo׮]s΀;v222omlݺ5زem޼9شiSqF۰aCO֭ ֮]Y&Xzujժ`ʕ/X"X|ylٲ`ҥ%Kŋ- ,X̘1#1bDW]N'3Q;\~1Tg!{4Bt&_XGH:;'q"l2 :4lI}M{%϶9MpL0iA+v6~5-),؜qmF;4L]k z5㔍_|GoSNs56_B2bW%B!;)W?aano6#}RTRޙO8eU6?&ֆy_?^?g B?:m{d||6GC RI˜#X( q~Ҿ [@;yc^џ ;uHxb)xx^O Y PU[}&8yȧVH&?ԅR$!ڗ`oսC>c9o/#,; ݯu<7ٓm>9qyN}\o5t@Qxsiۅڿ΋Ϸ}Bg[y{Q$<L:}>bk4i|ur1UNA?F/;Po3)=|,rT>yRo $ tyc:/f,yRk [rDnuoS ~,4_$K5[TIۤS$W;۷9ƥ)Fǣc$54-1j5cdor9\O:Z?w?Ndg=^>}[\~N `5,Y$Xtpk8\võpk@\ B\#Z_7ג_g⚓_Q~}jϞ=ۻwoo߾}A/+++߿?G~ox######G  0 B,(%ʘBimea<}ZȃC)nG*$ceu$TF;&RU  ĞOjBťf1c evLgA; 5R,G'J!0+˕~#~K-W2Jclj7M;,) ;XM4C "PRЦVs| O0 >57Lw9Q9JG$_0U&R0߲cZ4O`5Tnb(DFNDvzI߲_q/X*`x|@L3$g۝o$=XP1̃埊'UʿE8WNV!dyϕTWZ֡ej]ϳu@ޠ-i6xU.UA%OHU)B~yg$"QK*oΉOh5Y)Fo3KvuٹP|9<$K gU^82 py^`p|ґOf{5t{ c&3w?1M>˴#3!vxA}FjK,)q*?SQi Yr) /'?WTRx-$]ˁz]rd^'tUfبHέ; b~JsEk5r8BytЮkP:X2?~%Qw)=Nde+S3! IyA43ׂBH,9q[~3݋dAŔΨ8ԽBQ^h?i'22 JύWZ&G\8f?1R|FڇjdʂJ1in<˟GɄq䚪U_ |zEwW >ٯz ӝnr_ Q@7VZSޝX{T; zkg8'wwLVSC*56"~Ap,# 4ޮJ~`P|-)_I?׊Xr#\}ڒG Dd3٫ydxsd՗oQt i"?pTpƠz8R˰U0ڶ##F5SFȘ;A9hItqG^0ow@nR_gbf߱s%s؍rrRFI+檏Uɪsk0,& C<0OHʱYr9 &ʳC葉>ŋK ß~3e7MOR,hG|Ozջ7TkGQUJ܍KHۅ ܁_TO(:2~[;kLg=\j}ބ!yp z(A:ȳYu!+O бnF|Ṇ\͗Z3qat|(|I3A_tP9oO9tN#L#ol%G೎-6; PW?E1iE.EXn,y"Fq|P&?? gä8PS&=G)QP)(`oCg}mL*8߳rz}[BID~zk`#ۓl]Q^bR桰C%dcu5@ N]FJHʊ‰L.?IKbbbbbbb$ <=<#xH*\Ck2Т>rnj,B=[gYjRE n*KWʕ3y>k\,ϖ>ٴgbo1ذJ8RP], Ox _h|hzce/IU+l]A)T0]JW e#[?l=n<9d/Ε+6JQM+eORJY[\sE?%7o1f=<ƜF})?B0Q\?6Zw.20qq_0SG qXxӂ^ ś?]ݒ'W3R^Zę?b`6\ove)"`.ύ8ݲiRYfd)! &`Rt)I/SVzV_eEKeö\*sT)j'.+.IP(M}djred|6ťP!s))_ \`srYr˦ÚBGE0 aY;N[=ɐp1!J Jߕbh[nxgƿ,ŮObNOWc.-]Qgb;6,el/ !3dغDo͆eKTMx[_?1wjYr*,R+HJtpEjI\Ho*YZů@RTE)[ƸcRퟹe5ӵu^B Kb%l)Wr۹~,]Q2ݠ`ir1rXnt7<|1,7eAlˢa>DO J[,K㼰vܰp6s6lO3Ke,.l3i z?!,ͱڟC?W'3cbbbbbb9ps& lq!|TvzWa\' OQuKflSzY2˕0WIl=Yjמ![Mqc7/r*gԸA'ȐEcQ_^v"MPvyo5Y 屆Aћg76˴7_G}PIaCR.-뙝HmHs7KSjȢ%iX4ˆ4ր#HpBEF?ή$C|*<+";xPK)rYCQ2kwE)P[ģtWZgJڃ%(O;iYz.ȫK>W*?9Q'GR괓!8ўVs7|g"|MvX"rܰy2IdfD'sK8>w6QjپEXtC"ewʬ3_|zri珒O6YsHgR̩~׾㡺b eҪu{ix) ˨T7lwWW^N=KhX%T gX7 :i~G_iI0?KT|WZ*Fh R"c5߁P)qr?Kjk^B6˄JOtJ$WGڡw:ϬxYKisMKU7?Mmy6CRɑg {`3GY?B1Syky%]-rI?GOQ)?g?>zUeDs+NT(7h$Z|N2Qcl7s`12婋ї u˜׮cOHr hw<ƽ99MW[n=^j n,1F6'dY=rS0 ݴr_[H YRԸm6+˘nܠGyPs9r9MfSKο~xVIfH{U\YgaǕRR}2Nrc Ju;Bn&|ɾZNHOWsqv񜜞<ٯ]$Ti/uK],Et4+K-Ph=k"r`Z2i >)`oau! ^JJGٱP> E}N 8.AYsG-"+)K_l%ePDݣDV+#gϞ7Lάb?UEoϢIlG侷@odTnrx&Nj$si-#8>Q[-RO9-:/E~Ƽ}]}D"K'39.,9r|m?9'2)|dy[-)8g?'yY *>Qno/;cH8^|6$%$3$wΗ珖_;Ͽf? ;m~~K .m:\ ;n?SYIQ#o/6/lrugAIssnA.kY ,h \ءƫY8:j _*'i3?~#w,uh%z:)k/kB*LMw/tԊ|MzXKM  ߹ ]@@@@@@ݻڵKvoǎAFFm߾=߶mۂ[[lѿ͛76m 6nܨ6l֯_[.Xvmf͚`U+WKbŊ`e˂KK, /^,Z(X`A0cƌ`Ĉtd6H҄ezMV5:e<:}W*C2 ` X ؞5ݠ[.O) ILK_V(yxұA''_nۗ0+O.1?,wŝm%elfG>zu47S Q;~{{ !^ڄOy9'9(F&:6bgWAR_; /lȠS?St1ynMh o(qT~xch\R׮ |sQ(d ^i߄E!XV!l{w?6lFD,B0#L!>/l3v%zR6Y1Hi;W=} 9Q>:4~%#Tm?|ۿ v?GAnH踓ğD)ޙOi;eF3ͧꗣ'e0n6P[&6F<~~`)k*o032|<(J:M^axl藪`,zLS|b~Xvە"}> INʞ<F LDšƿ ġd`w@R~~>>ooO+ò9"clqptg"EoS {(_[iG'u`PCQzC"kX~ok/\Z d6dɒ`ҥfõp-k:\zõq-ȯ qkE~݈kH\KJ~kN~ɯG={o޽233ÿ}ѿ  _6:oCETgoqO~ץ<4,dB9ӤS<(m^ӶJ Ұ~CU$ %4RfIq~\t% 1o,ό 4:qHHI)K'xl#3T 3;AP~o(yHV_ E(_nkZ(I wT"whdw?=+7Joh/~j!ruwL+Q;U5VIyTDʷl_\=Nş\Nz-~>2<я.+owH#;ňҥ <+מW]cY>].k(G6!]'ϡ,oISȮ+egȃ/c69]xm)^[z~:ZnͤnIԆKJLo}$Ø^/IWr.YR}ΐeȬwKRg<~ϣk{<;|Ji:}tGT|4OG?J*eg3e]uLTG*WH~ >;E lWiv0YRcՎ+ek咻im^Xu\M !Q0SBw+T\KF|$2*.T"AD"?$ʋ ewoɭ޽8t/c6}[UZvZ%?~6Txy鏲S9S>ݱe_[DynS(J UA /瀗Wgʆ+!}M'RiKx%KH!_?moY GgK3;,9]>byىcj)26iR#o&MPާ˟\w"C\!5*4fm[s#Rƾҥ.Zfqߡ̫WÖ'D=!]ҷu^ HafQZV i.'~L2%]Dxy\фƢ_yk&0o_üu͹N~ S:|sXӁ5X>S%aE {z7^ӟF Y7Z\c-},!j =q ğD.iuIMdז2er=)|3nߐЭ*$y_0G3wRJv\-s?Y t(sni1TQDyS^/;۬SQKF>Kz)We:DY#+*d*+ JL7elk7jIs߻D8dO'`17=,)Isd Xm/hH'rl'/mO_n"8E~dtӧR;TmrT 3~UԵJ.|YX{>-3~k!0;L`XSӋ%W>)Y׆?t2lM VC[ 1LG䮀`M w~!'6Ĵi@R4zOSP4Egѧv=ZA)sô''w*m~Jg0-"js]S1/T6woH)?Ji Sw5G}|W!U`4_iUl6'4/WRG pfp1COir]H3^pz[h\IC>LVOllDy7zY館tNj<(q?S}?XYV/JxO|_x*ISkbܤGNjSHoWm l΢?g>7K=Oε/8R k'{~Ƿ}i1f7D*+ކkӄ\aUB@:-}'6:#㑎ĸ+x6xӮmK片]]QSQF:U~I¶ұxm /1:7#ؑ';Olv;h/N Ä`M0: s47"=8$OuuC}wo9ӡ?tosM yUTng[y/_qDD~"zqQgEvS1 {s0hA7tǍYK! ~=odH )TQp 5i=Ty cdvKp ˈwoZcaj|6c=$"-P^bXɠJMɲ"犬vڟzMOIll(?A"uMӆ 17+IUT/7#Fm~ӊM ddW-{KP^bZDbKF#A[ȨSK nIeOQz|D;jYoZN?r)}Nt~e$9rMM)smܱ}a ʥayiELyeD f7|e3<ݳ{;Y:HΫܷT'=&$/]OPE{*q|+gxɋO$il`ءo;dseݦ@_| ;p?ʹo0D&g ۠m>OLP8d:2.Cd>ICd7꣓zcܤO)+wD́bwxx%ME$h'dK%eɛr$#i 5I~7e#XH(۱U6@)TD {lH 0`Z .1,TTۆ~r"@{|NUT*a|hs!yb #^r7섆a2r][@es 3M8Vqc2(,*R/ _k6XeG]j[;-*2rf[1$#HIpOb;dl:ϧ$';~uwmDLhx.O8MJ.V>^`ʒ/Щ5nq-I=/MV=R=17e8,fIBil27y?(fPzh$(qK {F3PƝ;1&=Ѝɠ+%x8$Q@HbaƦ!'@K9/~!}@+/S~M"Nt+:h(_ԍLhdxjk{6ot9iRIr"`p'(m7/(OŒE6tE9O)>ƾ'wdycT?ut9S|Ay|" B4wH| w&zPyA * C&K~'1PGFWNãk2q.-͐כ B{h1Ub fQ2-Wk-w_sn%K\}x|6 mfEq˨&A)!^[z19MuCһkt~ Z QMbO>Z@>BaA 6((dvicIW] xÃjynlN k~;ۄ,ooCoQ*@"D 2Gs[+QrV;CLe܃cd9P Q cV\dRRhn ߐ\)V$ `blxT@YBЏ۹$gw@yt:g>Gs([ 4LjuO٭4?$/R[ #PUu EдnXu;89c1&%[>yeҧwL'ǯ+UqNH'F4>/S9 7a~M.`c1l9h.i4WT}2'oY֧-ͼWFfa\>wXH_I%[.3p?TYemïmEjHIjH 8=lpʣr!=~߆ Zxۏ ( Aָso%*yA|T>{*4jt/ZA-vrS? U8.n޲kģ3FGŒAl^A_,UVb !VG9#R+g_y/u,r^E"2't`ڗ &4:yI[wS; eL%ڦ=#s1= cR,?.*SCf\xˏ@HZqA [58t,{ՈoZ$嗉4Ԗ׮9Cc,"Sα#͠Gǡ6 t-2w>13`FVr_+0X%v$߲YjPwǃ+?8n\ԇ~t>*]]>71UӰaK3Jd`L?J(u`<ٿ[>}FY=.+J0v2o ؟/K p#0 'Ƿc EC:תh8ӊc7?ÿOO ,0niTտFׄyWF7l?2(> ?(sXo?sՍ4ss(D<y @*i3JSuwsocoyTSy[>ښi|ҙř}Zz=DyB̗Jr~f@dቄY~|_')Iv\ԛwb) \zn_"t~*#K0~гЀ8B>|rǮmxfMw*(dZثvL>^]p1'e(Z]CԅU <L7UH4[o6 A Odʼp]ud\2sO$=,"'Ij|R{kT7M~aMN"Ee+;W _ aQO@HB!Q7McSnrkiӦbf%ةt\39&S)Jx]Q}301z gdZ߰ ,~JrO'cP (_.gVW.uuJ=^el@}xol@ kY?aGMُg@aޮ}\Wk)(ʓCB{ }dNt\>d?^#lW}2GSu9;JϬaSu #TC d ek7'8 h5]+8ڝV&ĬοYT1u,ćT)qݙrdi)㆓~ID%Xg<õhA1yU "M緟2X%Td,+S$vv23-%'_'?T~z|,P '6œp fߐҦI+1!(SiqLjxՂ=w|CF~]ߝ`.'/]W:cǟ󖢘$YI?m E w߿zY%w_c 'P>?úV9R 6[8Wgfa~-u];dYNA0st!]~!cӧbߘ@Y\* J񵎕_=e&axքE@ #)4d_F*v{B%§4ڿ_y<y @"8p/dqb9%8KT!Oj]k=)QN# OC> ݛXNgӯI.s ub=HIĐh; rcg~P=&.MQۆwZGʫ#u*(=7?` "NYy^|]şVԨwxR_>J?萿T!R29KL`zRާ;@\fO!NVwx|o)՗bq#Nb }'d,Y%r3Nki]vl@9ב+ 0Rj:!EV. YLKZRHo08Q-%KDl^V}{9+~Kx;̝QPHoe{ ەVxa}x9( z{YƟ;f^L ok5/E;~go84A~A>wyoEUH+ן _}Q<YxlN*כ>a/qU6[l۩8x JfeVYܬ]0Ino@z3ڿ%`ʩKQakO wj-f5OƗ'&al j[D5AczmF-I`lݛ*~PodO,xUz[gNah+O~E $ z,j6p ZìF'ߖGzKfUU2` 솅dg _sn}eKA:mD_ܥEcx2QfҐ"1"6 lzј\ƈn]N2x{dQ۟ZpQDZ8 Jbd7r~ǵmImqLR3$k#B(7z*-@J@9q4m6OD:.d2}>%2sXGAO}/+*m{_&̲RWVҤ&OHS6Wo3AuoJC6xO 2$ Tw:Ǹ&<kBӱե&cxA]+ɟm^oȶ5 LBik=y/s[Ѱ U$D<y @mh<;Nus\ .Vh.JjZ4Oi|R8Euo}9 R|`_GdXK Fsnj_X7nWҔVKd-Ӕ>-~\yRi-jg˰Sxq<2j(M?$B.p^91LaOU1a;U@`BkĘBE-rI,#KRҕ1g?~2Q*v]c\)ߦ =uoHyhnW CCES O2#Kזj% ji*reÙHNWcMk˳ŶBgRSpPԳ1qcAToeש^V/ذe ) o(u3c֔g=*N]1d`K:{O֮1GOܼEt5]XJ$}TvL2,#&PaGِ̗OSU=é e(]msP֦2e&љ%GTJ 2҆O|yWt2;?_@d)Y5M:\k2'Ɵe*|Bⵤ g)QQb{l[M|^FC5Gq͸'Us$m&Se5NjMBs|Pjys_7Br8 _ QE)@2IGO^P!gZ^|5wIsKY΍QNo:=x T ;xJ;֎2z9dzմRiw$~`A{ӁEIQh2Cpg}9vɻ?Er<13寏ˉ3eMZ}ln~g_CG=Ik9t0{|Ϭy֩ZZB1=E߰Q-zcI''u;3!+._=;Z~Nhɏ2ʔ{wy{'CeJc!e20Ov(G5 >Y*sQhbc*mZnRbOWu'lґ͹asnj(p >M 7Aza$ 1-c PKf,[*SX2O=]dc\Y4y (tuo0>?qIUg]^0ք;cR]cPQkFz"YXvr#N"D<y @6Omڮc;|M'i߫* K굕>W,'o+y^\Y96r|y~tۏA<§lYmd2ߟaF%cmTf|SG\UM0$E `{BM|5|&qVОYnz) {ҖUYSypMH!EהσoHzѠT]]v<9숞jMfͩx!@_<ԇ;Q򱍲rcs內"cqG/Sƙ#iG||RW]Ir]wqs[ۊBgjb*MI.QR1%dj{\1L?!T4l"A:E1ד/(enɉK ['-Hv5ȥ~C:zK=aLF7/ O"=ؿp AUJ/t+b\%>"_HWmf?:R]j'j) ᭵Tx#絽Lڵk'm۵vmvr5WK ۉɋ7Kh!Pj5-ZJZj.-[5juGJ;Pz>^Ģ[wIxX+3VNɜ#wǓUR 9|KI18{-+j:Cs9N/ Qod!׌% c^k_0z1x=i Z-K 7j,G6i#UuF'Ozj?pW˸{ϪؕqB[yyo+" *\.by 2y|x=g9QޯYGUw>ʕ1Ҷ^Yi4ठLq/~tQb6Pnk^\MY6XJ_{Le1+wyOm.[;afr|zs7?OY':8ǜ~2ye;."7>0_?!);kQr=k;pH?9w8Λrv+p]p*;5KPbBR!}TZp:A~ʢ0&n XzƐGd ðw\%[G=f1ƻ+g/'byU((MN"e[#1IuAB*y9 GC%?jxQf n^$kn,G]׺6"D<y @; U-N Muw玓.KPϔj;oWo2Y& 'M/r9,Jv"q3wkyOx _SyI'I?K ǎ&]v{1K1Njzf, Br3ST"Z_qcq c)`rL&]jN-eDG6 a?F|oX}:̗ȺeLwʥ zd`vo,5nZTØKd.ߵ9勭 ?a# qIzp^KK\%FОjG=ĀYF {`"w6ЖEl)ta[S1)Kz;g.[`6as'bBt4I;Q-E$0~z i_-[-e+1R|އIM60χ}?J<y @"pQMLu>&TQgщNF܆y{V?\Y g=-:nU϶@`.î,R]P̕v׏b[\u{ JF42FHq w4:ˑy, U+T˗2Gs*XQYBJn\olš8lodՀS0^-0Hlie~g20?h(([2yr+67'g(-pLnwq y>Gڢ.׼5 3(\PN?l@.Ƀ2mŠIZZ&^HyUce$=+^LrWLԓN! +l 4WآVF֍[pg)>qMOV2&9b-}P~v ÏgՕ܏b/gJ)7h3%ϋ:D0[  _!wxsLҮʽ- NޠVVػ~U)W\JI9;I Id%HP>`JShu#>4>ڳC_T2d|x;Y+}%=w㭻!]&/3R~;+?dh1!|dR-|ײ2~-ȏm+.xIݪM7[unIn=T>RFU=MLbz}U 'oJb"O^H\UY;%CmxG'oۅ5j} n>G:kkR\G.=b |2IWN9^l|)NIW^rbUA_•;^MsGY G=+C.!BJPB1np6?~ ?W>z"R|lrhRl僥l/Q]!8_,ǏIztQ&`W;T}@CBMJpqoI6Ρ1.oS7! Vq@*NI',a.VƹF+oh#c;JMn԰6 BR #yD6<"'''<~"׏9=Q]x\d Ɯ*˷C2~v N t8G@$cN[$V'sOW>x,Kwe>}b6rl'ڤdqdS+E-$M8lݰEk\TÌʸ&?>݋2dRv 4ln+ :g2 eH3ijPi K0{c*p6pԦ̸3RL"~8.-+x!x ?+`FM`'[2D2ɮƄzFցH\^u妛n&)uc/Vx@hB^ۼ?ߩQ1gW<'OB.Kb4`Oi |M97~Ҳ8DhZJQa tz^<y @"<6"]nwH2|[zacy1\M Mm˽oF/yҝ8*e,V^nxu1mY;ʩ+TyԘ,|Vq4~^w=W,QH y# U'2`, Q35s, z"0,Ϭ $>ҝScZ&W'䦗XpX Ox`Ƚw,Vl__)& $yJ'USipȱ>gqcVf3(B^o߈,[^y.kЧɵ'GN: H[Ld.B"^Byk/S kq^eqgRh2{&KkD?Wd* /Hʏ^Z6tœ `Sxo܉ȈeH&(6ʱMƅ ?FT~|C͒fz=U_vX5 c|?W_iY̠0,I3 ?Wgz|b܍G TlRۏЩRN|Ēh?jf?XN{FnxVWݐuuZ]Ym1ErJР.x?#k]*>ʉ?rL,=`F5V̵oooo 7}$u'oZG)C/1g hLlxrW7d [XKdGFe' a`!x[{f{bRc$]^ g?WuqOSiRO5'Spe?rٖP [Uؒ|wauO ya 9e=Xo"PobW 8 ?d/GI#G:r%}Phwڗe״Kڸ `((\8>[J`=`3;o%?HhS)jO`J 4 |+Ko__ίU-ea ?8ce*#+~ED1_SJOI="ƗYcU7E:F^7dքb«n{*M)'?hlcQ<y @"]Ӥ|b_NVQOn~kV 0J$b Kk{+Nӽo|ZL]!Џz%fn[$f($ :I =aDoyɒσ~"bZNBI74dOpaOϔr88D/y[f$ۿ'M_Ƥ\}}3oEsLՅ)cELֳ9I*7{/f.s>8s9Puaoh"6,?IHxDs(ퟢ<~ilRgi`7Hxxד=eo xۿ}):}5N!܀ pHۧy l\GJ~=rBk_i*5{d+^2y G?nh*%Ta(: w3JYQ?|<8w[؛(-R\oՄҟ*(q$ُzd`Ug`Rj:6i\}NyiiOqlG/IMե7Qח╔j--=̨lXy˞*1Z7GZDV9܋WL (? uiR] z1yN#' JU"(! gT2ύeya|YN}aG+9)6l_oS?o;eOe0O$i*X˯9F"UpShhZ~ojB?M'DOƧ|mV9Fv²OK %HYrוּҹr#^2 ']wXSu_N]Hmovp@IDATdm;Yi~0x:sdO;$.ְ$_^0ª(]įgsGRl=%i9L" _HNʇ=6qgԖ\ӏ?lۗ˩> 0|A,O<*ocJ^~=ZH&M3eO -<)Kd%QB] k!{nW\>tAi;tO'g?~G)=D| Dm jQw_ye \.38-; 8WnZtR: ëʖ/=^S*#Ui/w ޙL ;3ԕM2q׿*}`9~R:sQ̝  hYoO-К}KJR|YX^ʫ$d zR5wI9@ӥu _$/Ruاr@嫦j9D&o1.]eVF2J,oq` ׯy^0=uk7q:8#ʓUƙf8憗a^0zY/i\&|ŅMW9TSV/[vKu#o<᧤ϋtkqq2H%uȀ9" Tv}-2GWd{vn;T,]RDŽwJ~wu/z݀Pxl\M R7|1Y]Ohy흝y߳{ye9|.R)??>rlOQN8񘊴l}drۿy>/ }B |u ʴޕrʔsnwJ  J*i!V~W"rΝxl[pO᝟^˘?ڼjGezgM>Q܊Pkd:̋;ƏWhzCIo2yͧ861^P-RQxR8iǟ3c GPLdNzu?ݏr52rkc5f;ALٖ %$ōT9$&-tS ,`(ߍor{C*Dy|3ѣ6+; ?YR(!]|2o~'Wkr>h"79QJ5n}TbR܎r'ՃqqyVXo$U܊qjW΀G׻Yߊ5^٩f*Qs8rϨ+GanEF F91wac/#wPݡ xȢh16v<ԠkP|@8ӆm4j)yh4Xr̛1Zq"w"bGuHJnڥti tFW w*_ 'S?+w^{1;~tyjyrroȜU=WwVO1S>9CfPfΘ3folJU-!xŠ+k?JÌU A|z.\Sz+ʵKaș`MUbvTVdi=.'mɲCe,M۟"%ED'?*~-'9s?_w #ĶfHVo#lN ~c `ҔηJ7_"z %m1_O{ulc9}5E:S={w'{_Ȕ%bcq.2C{Ű0?eL,ӈɚ鲉FK>U|x eثҮnU)P I+wԠ,xT>ڟ+xCIG/Qit/zT]|Sה'ug?价qB'*ڟPUo#\֑txIN HS-:ǝ׏5M_4c\JddHv\Xi'MQ^ѕ2S lvV p}iiR^A|i*y*& Hoo4^bt:+~SA^,E}r/0B}["!m!H䶺g8u;yRN \b喭t>.2=\n4$g?9T\Ggt!II؍5|&'^a j&]oQ/UCn/'0ڀ#95XS.l"T:SbEzN>H;OW=.aF|h | 9;CsS]+wl%>FEjoIYԹ5: H0ooW)'KE#~7o<JҙQTܳZL,ACЕM`LxfbS_<1pl{YBRerlyrX"MYRsޙcgJ(7R_HNv q+iѢ|]}'QظL=RGR8E"Tz$c:~]WytyY R7P6跘T.oDϕxt%J+uIC]cJ'|BT۟%5#D3my87C0&ac!A^v^՗=qTEΗj[͔5Dt>4f@Zp-#̯TY[1薎RfBGstWJ3EW;8oG ': (;$iG_+a.hMϨo(o'~(y @"0ۅF"S?V!~Zod8,Y\^)s~%[I?.fgve\iB%`˿R yF;z=FʃGEJJd۩ ]gZe+L!wuUQ[1h 1vC8C1p[^yobۻ0ƛX@k_ w:Qw3x1+)+JIH|l`*EHS1M䍭KxAu3d&bDyo|r-D!Kt+*.R p>0p1;=+i`QS_ƶm\ɣxSy_. P%I/YYCAPXJ|__d\+DrPVk/w4Q\o[X1Q"Wh_$Eb~jyJSM=$l$HW {|&JMdȘ r_Khw&)PQkwvX^M7;=*DSƴߕRNIĔߝhSR~_:G:$4B{Ak?1N,VFq bx"9]>x|}RK5OIl{R.qջˋ˨ۙ$ qeZh6V)WycW*x**1U*E,6ũZ+%rpe/Zj.RN [|Ζ)8d$DHgCӦ\vo k֬EʶVIvY!PAe7$CNcZuj5qϿo7ʪիd /[M.G}dp`V,k1ɱ̌bR\i)q \N]|{doe1G(/#l/RY}Torj׼%n1oՔ˥P$s1[ͷjka)wz._G*VqJn.l^gïȢd nX7KnFYṟrTY^<7o^ i'.-_?r7 ؒ%^_UÏp]xϼ>=?nd9ryROU9>a|OWyөhS)6ʏ<y @a셬p!+yRÆw p{YVdyB%v%Qv<ɌiV@R&? Q??k+!KD4x?'}t+z/)]J?nv'K:i9T֏̎yItvӀh?FF\Jo< (7@=pL ^u V^'%N4pwȕ9Y|q^EnՑ].j'QJQ? Cx ~~ _ĊN_Ó QNZQ7l1W OpMt_Ɓ hvܦc?W'm4Gm`aQZKqmwICĵ*GDwk6]!#i;*0Doy @"w{@+q~Ek Y~VX%_Ӫ]9/@R~lxwUK{n 4v VT`fL:_^hi! U$XnÆnx `v/IzI뤿bgm)q5?~ yJQX<?vqCC|#:X 1~Sb={z`WKuE]]Y~T:53SxU6y,y1%yB뮮2&L6b|];]jx۝_7qc_?KWsq},Ä~mЉa뎯\lT˵x݁jׯ$1]{ @bfA~7͌޶Y u/daAnؙA&^m,N_*rt&\ta<7Ə_uq ??&,G'?-7L= y\U^tӋVwz]4x]~Nspq)>Ef={ @| B[>۹wW (^|r'~n!PsRO.!r-G90fbm)۶+Yb|U8/؅Z/Uڑ÷G' PR?zaGH\":DEo|w!a;Aۈv|Ysp' 64ƞJm OH]X~\!Kjj$U*&+W2rJ78eAPزz,i荧%+ɾԐKľ;.>7M崧lc ӎUM9(l~29WeCVV%{TIeP汈dEz}UkK{H_O ?߅%+X"6eJjo*Hդz~Q\X~i 'C=UFo#+*o,]DVm)ewkWzԮQQJZ +Vw_@u7tC?~C#ӎr,c**%bPY/7n˼ e|y{RKj֬ct-g^"\#t؏aAׯaul+=ϯ ݰL-Y6d65U*ؽ{JۖET;gRYgٲحTPMسT,Arg?q{;/=ٺ~,^R6b\VJ*T*W쒬o~,HVm@y|*T9FJR/Q{q?uSb=ݜ~2*l[ae'x¡ =pF&[\I>Ş?<%f riwǓrG-C$aYјX݋Ku;eH=)`^ o'KSFɄgZnNe:~~. MOO<ڟ?{52%qa\UWt@eCz *߼B]RzFr!I7˫:I>Mfӱ:Ӱ\xepú2TIPY夫~k:LK^TyƁ:!=ӾUsyb 22]%zuNy?otW_/f,.CEz 9{$ib|L[)YLSMJ=q DJ|RVitDJJnr|Ӱ̬},q KIAu2ࢣ! 嘞dҡw~A9[yKc_4I|R.{y^=y$}R:;S-g׹DB+a.A66IK\hM̧T??"Xm 恌Y3#σ- ߒ4WίQo9o  e\{͂UL;Q&n%GAlI{ɵܮ}W<=S;}NYri ${7 GFs;Ca=ηz^޷Sdc>K2iw ^NΖɲ~$_>QX\WD/:e7"s)WX}aLhyD=M2+kmؖCK5Ǟ#]|\pK >rH"|۟.|:PR ҇Gq_{o{.~=+v9ZC; mOxy_W9@ZP.ԯ ȥOEPBOȲa_|. qL`WmiR2wZ \C|rW[QT&}Y|@[ڰZm7.zj %.GېO$]+^.CFhQJ# .{=,W_ 40RYy)uA ɮV[Z:_.ԫHǾ o`2$UI2XB9t7ze/K`/hJ&}(W՘#5lcW7dFL m<6:2=6{JB,vp8[_2=M:1lؽR< wsql+.l#uQ|,lP6l[K߹WXzZ?J9¾Rn9rfcd ~yΜ)^_ z%A \ $} yYU ֊_0K ސoND; ߖ/FʝuS2Iw5/|.xJnaL~7,Foq4i Ϥ}) h[j]<ǀRxlz.Pz8U{OFށl=P _:ƶgnnW|'_r͋yؤww._1>mg p9{NcV2mˤO.8Ǩ<++-1E<Í ~ OfJa3IʞgHڸSMJA%yR$!gLX._݊ RBL}AA䔪@Kj*'6yMrGWR|vrv6,C>PٟW@i|6RC- k>hHd?bc/i.(c)TwۿmIƟc'Y2}.|_CS,^={ @񀟛N_]wu3w Ynqxsg.{~%ʽΔ犄a9'?a[2{q!kfv"Wf|4 ,"G{ dDS嵙ںgr= ͐n+F\Sڟ'LN@Pz:DN4IIxMҥW4oٟQ/v[1 eoqvBR]xoz\-1Λ, [(Wlc^zQ?E2soy5]M_=i `'%Q]6:Ƿ6bHJhnR3猕)32cMR dEX)["oݒ>˱L)=G'_FGZ,62!~q˲ݛȵPGkӜ")ʔ!o|%@cʃK\@{"Ng)W7{S^c|l+,ZKc :kHqH'NN;&"/PlZ)/ Pc?E]!Ykq9kJ*oc' ,})|,kӉ;g[ ;R%lz^&O \X.dVQjîDg(ǥdo]z/L(NfN])%)_ujc!ji亓X|ԣ5bv*!f:ݔ &=Ə.&,3"&JÃ?O^N-Pݴs*Ԉ..}:Зdms`t`;?UH9cD5ռybGE tnJwABJmbl:{w4 ;a{I4mW;m,mO9ߓ>rzMG~ju5AyOfrԦ^t ʢ78~Rs"[ K8ۜ8SvwccM3C# ni;䥡WeE1NF:fw|W>}TQΑUƐwGO[)'ƀv/?`p̃TUo|3hi$E:MiΨ~Q-K򮄺Ys+n@67 9Sه ?Sf>Ra9.PYؠm%a"rRU61۴6}wVhBڃsmEb=+<=%lŝ]{! H<w-?~ jJ;}.9VjNլa =[XѸ ,'=q nڨC{O{wE!dȽ0PJ{y;OJ[IU(`P ~*( '(ļGw "Y!0hF n QYhfze$gkG)2Yuʫ:,>4=to)E֭_/+%S) I G-*2eX1Mp2}i&. \:SJd'r3cDp-jj rd%R3S"KI:x#'I_ן}&箓sVv4>I7] ,hT7"aֹeT ԕ| ҥ$gF_9w}\FX99Cn_)%;.)8wu)Eʈf*,)t/j9MI4.7S?5u8ryYA9Y4qKá.p4IUs cͫI):uh'>*?>[*`RMasnrc Wn╟%B5KvJYhLcyEz= f$F^{H ^sXqE{ߌl!4<._{žJ[s~RYT']?)X:R2%.V=>Q'Gtxsio}|&9^o>/MFgI_N38V&[/RK)k|A)k%Ҥ /GK R8V\bw"گ3]޺=KF,,Sd/(4MBt{[nlPF8rSg`%~&-XZ8 \SϠYveOeGI^B?u &gCO0@IDATȚh ͓_+ʖe显ҩ׎('O__GU5}ECQG|YZRgn2<*#nl")/D1RnJ`$9K1KQ+(Q z)rTF%?PUP?MEI;nv 8H[c/ST1rU4׾>Ni4.fse> zk??8zfPNhc>{g2'h$KҔXQl{* v-KO#0x{Lξ?qǺjW m erIO:FyYNr<ݍc3vw{nSG1פ0nUilgrSʲqzAy)ح<:z |2ƘaWJ_ఎ 2 OA~AO,ұo[Fr1F6W]b>a> 1E'<庯q=Axm pԅ& Q(!HQ|p_-L&F%d%P=ǎx\+#N&u)~Q۾&_W%?y;M].cSۮ2&QAq -?*_]u#2p>EetҬf,H&YO+t:%V3j>]'{|c9ouzϵ=׾)+_"@ko IҨVlOj~IFX/  񯠔/F=5Z8+ WHv54U\x@x+ =;_Qw|>Ƣ7#|o E關Szhub"cS1~'c<|x?tkv_NS}Υ9%MB0cuŪۺ{Lg9|pr]NI-hĮo*K%Rh=P;S3:@b<Tŏ#QQ?+3qpLmٲ%oAFF6mq`Æ nݺ`ڵ5kz`ժUʕ+9XbE|`ٲeҥK~)%K/-Z,\0  M 2o]"V`Mz)b"Wd`, DoZ$e}2Gk%lqq9V`"9QY\P9xÖɓSVPЛagl;B11붨}֌gM"xxF-9N +Qڦm|<_l. Vpcv -Ж3u3)߱+iH ^jw{퐬dc0=_{2Od&T!d/bf,oԏoAH7Z/<CY`o@S%B-?ٟ]Lv^Zɘio,`v,.}?)E?/sc@`n(A7/wN.Tܷ F^=iR Q`m:|r7He\Cg :pWҠcZrGW\M[xorrA~~~˜50hL܈<-styyA_^*ǿ#^yf޼3).ss}] ̂o}N\-e~ s^h lrKg6m u*uƜ18PC](esxZvU'Bs114amwQW1dv_:BI[.ׅQ!?ޚb0\5(]=}EA |?|،K!3nl"W_6~[q6\7Aooya=7=;LOFX^9Zfc3ۤo ma#{%Ҳ :_d.<|bү)C}T߼BOڜ=-`{w?[5}8o"u{xzPSE) kyG<Z([dHXCPz;sr`u~ovo턾jm|ogky˂t8VAyAVj2wl4jq>ovo4H؞7Oڷ8G?HCv{Wf&1B?8_ڟeAσ31m1I8cύПsY+ѹ߳38yJ eMv"69eҡI&W| D^\?n ecxwJDRwqq-Ozlx*x`'W Hky<*ύY;Ψ1%aK>b>9%-^EAӝ4hYٖO8d%9 “T1Nl6}fȈwX> ozO>xB$LUSiW _2ښLN6# ifXߑvC42nrn&aoo^l ?:(ԓp;W֤"q:D7]2ey#?tYA GfJKAn(.7lGLq,ۚi HX)>nlqE$O57gi2b?yU^IB'F>ϻ|k Jv((U|M[#)AX#S'a[g_.l?-/]Z"L^0(*_\Q@#O[BMxG^!|dIz#79!Uʨ(0V>vSj55|5L[huPz}D6V*RHV[*HS}dEJ3L+Y;@yT}a`Oߕr (_1m\VGC1N#)ˌNs1۝i_*?%W%ĶtaJǢ_%Xu c 6t[+,/bզʒۼ*`Hvbk;y5)=b2o+n OH^;P}7I+M?.j\+>bu<6cv`'moo`/>~p~"<&nQ|ͅǷG@^ ]yA*0B_"g+^\ ~>GC~/]&%%GGȆ_X;ç>A|r2}2u\e2\A瀞BK7rɮν{k, BT'qpbm{A -m˗?Ҭ>-~It^_ ~Y->#/#R6^b3?oc}@¢T۝/fY0\d ʐ 8R*Mo]Am_Rb7B7;7X\Px=I=ǿHQaX|D;KZ 0S3]2q1[CtXm_h(7gǿe#$@FHWͪ҇](ul i7}ov/s$}}|៖r=~~VI?]{kc 1=Gܞ,b)y 䏐G:m窹n@c"Wƿ!c^͋X$OаD˕lKHWB鶋wJe'?E*Hrrnx1P(|Ԁ%OSWꪥ ޓ2eꩽ/}V1QNjMK>] _ y@KU@@q~ѨdW^wk8|LϓI;reHw=!B?eੜD4rHdP 32}IqDX4s__B#GZ2R[QuEv췘  o3mALD۾Pn8a| ]j퟾EZ~G=T ):_ҒȊUfh#Š~PǺU J;{a2Uw缻҂Ǻ9ֵź|ټ1:rI[54C[++ d`Dj*%ЏŦkO f2hDN4}jv`r3hrT k?l2=|%QvRvRfQo´NU„fzo>,uH0 ~>7ɘW:Eޛ_3bO%~i՟ߧi{nv!Lj37pt7v %}&cP:x~?e$0Z)ǓwlQ|R{\ NQ(5aeWZBnKw5 7NS@*=T^uBä(#c۟) 8rqft}}丸r|KwDUOvcf<`}wkc߼g|mr}Gk\_/H)VBrNX%6ʴCI.LMh|77\c@ȠhFʽ LOYïA1 GߕL)YL%aa1JF2SrK0~'B͐drEo{Ԛ~~ ?Ӽ8={ @q緮l?2Y;Aߛ9PE2h ߮XZZ벦zrm!s*D3 ݷ*9q#v]pv'u )_PuRⰥ3r!FE'U Rn;G)>K%92e ,%<YHL#q}JubPO?ClsD=\"+']#גfNj b>X~DCT% |8ty%=OWŤjئvqnA8W+Xʾ+VJK0.##(~\Djp Q$0~eQ* ߕ1dyR"|I+?a!G .e%-71m8ҬvT<~wZqdo(odԖ㛟AR& ᶹX(.Vr4:7YoWܖ1RϘz ?Xiji{8G1$A?wUrʁM_AmzOfמJ!|?bL~:Pg`g[=TtЎgu/2Kxp#zp5=ݥ ƶ R "rYI|s[t:S`UJE]|KnE;O߁yɶ+B \ZpnE'drTQ⯒}v=-#;7+7?iDd,yC@~.n28v?xP%o O1N,ozm'~_oI&~32vt{SȄ=eJdˇC(+!_rm#}α[5C_$}N[]w?]3#edeT߃4VP%ʇsPfaeOK,*Ϸ׿@|(^={ @ɹi0.)Q򓹿mmܿbpmLz.X u$oj DuxVD#i_qDZ('@( Yҷ/{)MRem7l<6][Ftx(cp9Q6RݗДY?v@~Co/xU#Y9r>O!vD6`?,/$\bgJpo8I8Du'JJBۦ慚^$C2w#WUTV,i!w*tP2dp gi֒rԝ/IrjQRk4(P`3/0Rrٗ=ϓR|Hw7ɔFǞ-g7ɕ[Ș)侺7d[#5/h{4==a%8Y'{P\Q)~rLBhQ\) *eHj.>\v'h!𜯟R"+}mU6uoѨF?Q?RF+C*x<;ˇ2S7a`QEt$d{9X~yӵ`sl jɭ'C%T{RsUZ pA烧;J \s+ZewF$Ju]J\=VJ=6 'A' T㛬橨%.DpUb|10L9icL[1-kӣ(Ts[JNvƈd*nB~ՠO*<^׎tT:;?D/#h֕2a#.ArRuX . ۈ*Ih&쬛=Vzr,tDƥ}ԥ<6TF߻… }prԊ>S\+!Z>-"gZS)ZrR#r(KdML 뻊NF$ X.2,_wk Z֓x8NK}8$DV.DHF.|V $~wL1wu4_1(O.T:av.#L'L.uH)oQG*,r|qmo!? ^Ax+ʣ{iC2<ðv@ħ^^:JIyFRo=\ێ ū7ō>ʊ+If>tV;Y\V\\݄Ľȹ(e͔cKX2wt4ΒE:0)yYˑeAO=x oƷҋkH AR(-w_ պ F{9gn<=Gȴp :?)YUjɉjhˠΫ(,+{矏ob={@8UM2E nT;SE.{!':tF?1$l͌eW=|ȒF)D9d ($-6 qj;O ',RFlrdcj/QOM1!+m'cv&nI]թ@2q=ɀ^˿6nvg!1T 3Ju pAMÕ mƋׇTc.!# Fl.g+,XU4o}vgӅsF>"'{%VaO`~hK*7P 4Vo?KcktB}<}e4u/M?Yjg2Ψ_)rS1 >(gL/g? 1Ɇf"6̐?qRQcaPټYqT-Uj.o߀&1]ww!Ԟf??eD$uE*wMuPc&`,mر$rS@OQvqT:ϋe*(^7ET2>2|&A]jY&xa{ |B?bVRNo?)W-cm(O=yo"c>~le\%7tԗO3w{4 P;&Sp)z!,:Ɍ *k,}ZuU<∑9UNxx_kهH!|\8zWh rT'&K]!kҾKn\,c]!1U)> P}wܱ!w {;*ԉLQœ>UisÚoZLRɱ^ - دX>P_NgzN3QNl|˻j.YɭI eOu&!l%}5>82,[;4B x$=!jȜq}d,cΗǨh?uv|;pXjZS~n'UU~w=2IsX) j6qBQ<[)16wmUNNi j;+xz5 /}<ѬEл+;D*L& |ELą{ Mƍ@sugkC>42IQP@ypLzr3MkIo_KV%J"Ozgh/!-W O2p.PG>"7YO$ \i6\l.҄ڌQ7PZs׶?[*B'">HrtXu͉v│FUؼH9ϣ~x_UpF".\WYN.|]TN@f߭ZCwJF<;?^oYo()7{ fV堓sSa|=mZn<|Ưn:VضmKb=;6Vw|xQYWoߙO㯕]4axQbh9|Dr`OX>4׽`|F)ə_2AQ̍;.ZtsK|*.8`ʫeCsWjF3+u'[/qڥ-uzρ;3.儇a x; M=3R7(2i=Oi2JRmMiA?AYHct&K~t]I-_C=*Kϓ;J}iǘ׻$P̜k)0R%/S?Ohtฃ'0( l{g) Q(ʳZzn.+x`RU[v;Gk{!imlQk5|hB&˰N^)uưy"'!;?kğgxjzǐ76.bcm*xM_>Crij3/@FBnx[_E'X ܌HʃB15(oOǩ~x~=Y =箳i֯;Kl$H WWm xti޻Exdhli}!~cG-c={ @<`)ŕ+/inQ"/*ޝH~]Bm up> _6NMJSCxLrkI~vʝx&wvESBA`N2N2V}y';L.KYah{>_\R^n-]vZ.AOKK8HC ].2n7i?O|{"K:/Q#DCWT\0'`f'}2#;IH2kPSN9AdY*?g`|{Yk~(M;eMBfJQ+"y[:1l% uy!VA~#%_ŗ#',MkѤl\}KHܷ.A:J婲Uك=[+&=Og^*^Hzu3[u eE %_ǽPw齂O Q,a"em'madǏիB5fN#n"RR~@F6ꢑVMhFo%Q_&U 3M[X$? 0yIGg]uZާrr)7k]Td+<6)G2)ٞnQoϧ%d7$UR7-r_{}r\a՗ɋs f<*G!K?R_KZ;fx7G=+֣TCx_P~98|e"DZns^CFeQeR||-tJ+ƒa-Q>)C7G.;I!15&S?djr2v'(؏#?2.`8q:B1K~1P0UJ_/OHJ5Ma=HxxWdk ܠRr}HK|/6Ys| dm;쿻Toh?_KrΝ2y2.r΃o0=^'7iՔ<߲BVmF5;+څszh|!,U%+ϽZ# \N-|߷'"Ȗ 8 E9,Sъ?eŵ\T "<6;$Jٕ_b={ @?~8/*_ܚr>ACFA!$mPhzfAI0C, =PE9u ~*KWw/t2jt:Rۮ,3Sxݥ$HĚOy|)DӤN"^Y svB5ԶO\v YX¾NN@6W =aI(e*7]/cFrxn\:Wz a%&(Hϩo&a5Ds2e!o;ܐbe*lMpir)&)'Ǜ?y46}֥֓~ N=ğ+\M'%!'QNFu)HLo'}.q Ouq74"N&#OQm~M~ߛJ6V$Rq񟓟%4D79s2(N>m$mU9yE]LC'-ʥFC93u<"9kwߑJ}]EJZh)4AA:* ҫAXQ~XQ" R-?,4)R H';3}{۷&șwܙS|3sf̻ k>l<𪸇,'~M M۬5C}2|IWb]FetѣlQ6jh͑@IDAT5jvO:`D򕯨}$mv[h8nn"|7ծKm 6ǯWҖ+R-k+.6a-|Ә 篝9P, U}]jؓ~a} 4j_{@:YV_f @Tǵd sa8@IgUvC>JdY~& )d;n^GΎv.9iA$U0. O_Y| "/K6&R}!:_V;` /v@n0e ‚![^rXkwsmZi5'.o+NZVMC#vc^N4XAǑ'{vV7%F;'URqj'hZ6p D60@1C*,//<Z9?qHITJqb#]miܴ+iW H.h)f!V oD:׮y S"!U/ld`mm}=JRIwKLJqv2?#v7hoh} O#pSMv9#!ɾ ; [D&+O5~J "G+l'62'u2:aTqJ+EH= =w(qx W'_zyP>Lp \{).!iE |r sX.a% [@/6h[^W:Xm޳ %X~E8};g p{d eu;XeS>sUp;Bqf)wO^Ŷ5JZ$D],˩H78E*>o_f+OR$Ȑ\яOٽˌױ]xW'Rrh}l0tO_KM_@}q[e=)Jw.Sݧ~{ 7tR6LDjc歊's;V"/w.{6x;%t:+]X:߿N| )-/S{C@|K.D#sq o[g~>e7g6ȃ0ބ:XxWY;|KݱY.5rw P:Ͽ|loJ7^6&?d>iO\<׮vPc%N*Vfۧn~  *Ob:I>r/{^E=l`#C:sCkț̖9 ~ _]41釺/Ioۥ9>d;;皐B]OںوG߹yDPJ%Br]\{M!Uًb+'CJ%1[k<*e/v}\SPT~` p]Tzhlˮ]rө`퉢_{'X5Dʕz:/iq9;eiv'NN;RNa?  SnhQkr?z7,Fتo3;2l`CϜ{/]GEfl ۴{/>*-2tvP#;SiOۦCovN]w~E`{jѠrw|T_<hZ3kpH^0gv{\e`Kj7AEQ~ʡN|$q2RX"kiN{SDt~!@ ZC@s3LZ9&;Uʼd_/_3ɭ,580|T/:ha#C6vw+>֬VT/Oj1i[iWNiwىgMajRa :{BiofE?v8ۏ֐{WT7t[PLKUD2Ү~xZOe(?˅ζw_l/]TzbNdɌ/( -*w1LP0qE!Lԓ |a2Wdg=p3zqB+bT3\OLz]xw۪~ٷ[ N7޻!v_Sjy/]6YЗjJ &Pm4qu"0\CW?7呺տT q%Wٟnh%2G \Կ8`*Vz]>wgMFb3`Z4f^W}C ZR2%O#rjx$ UiuP鮶Bv;V`DaMD|/v .]pufصnӧ`<=־M#7d}/t7`!?uq~k'>pr jeemv޹yDG;?|߾瀡>mG~W:l]`ϛ}n_qsXU 8uAGnccQ3jJWZ nSx=BZr2p|Ǜūvf OOˀ2W)v;(={Tz\F?,Ef:2O;_teGCD%iiuKT. 9م z#OO?,b?.˖}~|GѦr '}3c&H3 GLVkq3 #?e ݡ_:G|W~GE7޲6.!=pY~iaN'vۿW'?=tg m?;|i?N;|, _O '˦UESCOZu>NY"xsM_⿯R}8fNmmKۮ'S\7{f?nZArqNdzv~QBtԾ΁k|#/=v8W899l=dWu;;ΈJIy^Ojc%n(Y4+?ٿ Qw$dm#mIuA7{y8 )Bv{;,ɋd1Ό+S~_(Sݳ^D0h_,F~/'D_ aۿ';) mo`? HA|>.ecԞ" 9r#.=k)q ڰHPi+vUl$ׁg@v" +/oeGQ8]Gۧo\?۱ P6b$?8#y;䆐ԥVտߘu6}}e>]#ײ6p}׳^لgN&fq6nX[\veYlRھ!4R/C["'Glg[;y: ?Y-Ry .a[ gRxw$o9Y+γ]){E'1n'EoG\p)^aN;யЉrg,2?+]IX5m yT/a K6m +Т %A~>A _ۮ==l*+XWxl0Ae1/wK}umv?~hCwPn}֡iuZ/ު\PY;GF=nh?v>oWO_vű; *ewTuey>F/N~AAdk#>oYI4k`w9e]?!aPAqt'r?l7Iy68;Gw 뭷OR G _/|v4y3QDRտ //Q67]hߢ8I'f8-5Ζ^xO^;갢)TMqR)9kf'~k)?B~jsˎqz.I)yckh~OxŠ'eAc?,~G~g;x[#۾T3)_+q_*_3G~lcY VN_: QLa9Gi=<sU$F6~9~%ZgcH(Cq9l}-n?RY Tpy]\+OU_n,6 jf{nBBBMz)pi{{mkߧ#)m'ƍZ'(>nѶҎ% Ŕ_*4EOBM} Zߑ~kkGtʪIQKwI"@ o(x_VyBߴY˳4D<NN%0>ũԿw}b/;z^igdO>ǷiǫeGI7<Ʈ̸BfK:9½]>uT6'X+v3`tTԦ0=~oekGS QqfI4LiGȥ@]?.(^7]k|xdl 7 vm:~c])lJmϯۦϜms(3_|j;ìm8~~/=| !{0ւh@g8ްK'l3.k xmwfn|؍ѫqxԵVHiuE,0~M~ ƽv)CM&2yYYz=ɎձZ8p{[mFw/&Z} ~ooƨ,Ϗv_+/VѸ}Wى[|[6Ŏ|mڎn >x}Kg҈K>.FOkkOڛb Ff{mi2,_Qo2/"}.Rl&I SAumY bw߮vG}>nv{N2Ogcl\nz0%[!vMwxƦ{-ѡqvbiLJv̬}IOr گOnf9mMbIA~A%~C*W|ʕtPYbUK-6ePKIcw fNlSnbSd'OɸGQc%@ͷy;y 6gO^g0_7۩{mhFm30?n(??j̘c?/h^A7Hg{הn^ɓa˔eMssqV( TJ^߽NJvOm~goxu&I>oKooCԿH lvu 5xGhWN{86KadĔϴnп&M_~]7.{s]odqv~*ޣm03{ T6 _oQe=~x{h,97gLFy(x̎ S]o7$sp9m-d] B~MH72 ɦbS_KI#S>yvm vxlQE8~]vGvՅ4\yU m9+wy(<&2J8 Q3{gڊd.Nz)k)?_k\t+]7=ζ}d7g(Ǖ.R>K&.4r2xJ!񒀾36lhDZ۴[Θo'd>0>Ц+;mQ|>ǝ~b'o`7[~Gc?}t3R(qАeAģ_SkT+W6e/49f9/K33 ˄9]+HXٿIf_|lNGr{!B2w~aRN_F/ǁtͿopgAO.=clGՆ:iS~E Y$)k^m?>sm5 XR䱁,| /8#|;m l=4jmJ/쪳!{"~mAǺQ_{rI6.} $';~7EOMǞ?ǓyC_kK viҧ{[Y (aT^ԋ^ m}.&6ٞx.\v; mI7t;p&O/9S,藢kϴOm8mv=GzҨ(WH+t|uH.]>|)Tolʉg'5^/=AJ7Kg{{(7ưOxjbtсof[w_b] ~|/0 ~gb:I?:y!BaR}>c,IAĊe(Ko,mu\̫=i9ֶ]u76:B<ohK.cmN mo_=m*Z}9j.4'7B$0 xY @ @`#PRfko2yїi[kFV>UtXiDx&3wNuOf#6qoR`g^lVJ-5RdOL9}K"ۿ&26Yv v;| 5d-/*,ͻ~f3HveJ85*mn8ѠQ+B"lDVaێN+IK#MrQFY Q Z[y `X-~e&yN!(Gj~m9Ɲ( ҵ-oUh͑%SU1A-N dǚ&߬oSrJT'=xmUm!#61r, ى(_M~q%Nk6)%,y}gn0NXkBXf?W`ŧN]@(:ᛸl8='|J[RycD9=O{x}@7D>mwM!o_AτgfI s\D;6AR<<|S.d\aow\ z{4BmW$)?m'2RnC#LʃDʒ:!iJ6W6T/hCǚ|H~Jt -Iavo^9^=[$*tXjEwð(S60^xϗ.,d~B૘K< eXXWR+tBicж~R"4-E ԣZ]\q!n/=|}k@/@~[ob8mpvdzg3 <3l*&uҭ{гI6AxWWa ߵd]~Xv _JPlhY_ۉ^>`[YmuՆ\4Xw3]vpY\ .UƼ(mg!̛C~vS'7_%>iY?9bv/c&"$g`M D̤+*CGD6FK!R(:zDwľr-߁6UA m.>{/a+Xr{!X~d6_8|gҼ* -+oO+ 9*׿ :OP:JN֣8'Sw <v4#qYHkky51K92kiG φj3_q{RFFI!o>?ۓ:&,_7G*JX: G|yY6RƎ`_oMQk(bHc4!@׹͔/G۳,k1O4?SWz=) YYB;y/RE e]~w%䘐6$FE(*;㨱UOCﰵ8Buf{y6#vȆiNը!f ;{qW$r D+R`س;x;1|EhG=I_ %~)ll#Q$[ 帑ॊH $YI?ND,Ǐ8W@Ι[BqWHi/s@ (wo&W/W/WLέАUe͚5KsF\Οޮ3]_ڙ3gڃ>h>͔6[+r—frL=??dW\:^|.m+L\VX[5Y|ijŽw?rsցj ^_7r8\hD b=@.2&ZV/k(yQ{QN{a`[vlIk"졶%<ڛl7/ou߁?^?f=t{y6r+QkZN]=}vc .ԠgW5֤f3޵Dz_UWD"R?|ѽgnKg?iW}?5~=9 pLbLEO"o~D!F}O+\뇆LZYUusϣ@i+1A_cW[m]_YrZ+jkn+× TgI:?@isV?k nO>dl:1h :F_--7*-[ogO` n> _zU[c7hp7_ϝ=t5rs6lUMk쁚&>pLxm'UVߝ|O QkiI\r6bkoF8|؂|4VdFgj i4x2ms݌&@ ﱠZQn +7gYKF9JB:vV E0'B%O0i㫇m#y_qX6Q?/Qj%?͢ϧ~~*S'ooU_F| _양>uqz_!&`Cbȸgߨhw?0j4D[Q} gչ@ D`~ƎVyZfAiqo2ʨWֿ>g\XxwDZ""F]r#-[9Q =t~RO_/6XԪE S% ܥVߩ}j0jyI s,;Hʶ17`'f_ƏuxALB|I?s ;Tl~~XF[?hEvBHIcAj?_#JSGK'϶yw>Wq@ 616ɪ⩢-U|fAf7Vxm_D LҧIRmd)"&bʕx,r%5AUP"աGc!u 6ݫ/hЊ7ߤjyƿ̫E̒Y:g<EgI\\/;_Y?iXTBQ_y1C1 SE  /r"> }8DF~&]ʇ#}@`$w?sGQH'7t"@ ,{E}nfej_SEWk~mW46 yB[+Yż+߰ |C /u@>IB1pE^&4!KkMG MěLj0A hK},A/H͹6O7/,/^Թ_#zֿ6_~1$|T$JBI+AxYNEׄG9dI~ IF^߲Tlj,C* $y/xA =CKd4?K/N? Ɵilc-P?1GsΟSu,86 Եu4@ o\c]_Phuj$=}=]<ړ7-|2ԗ+rOdq6A/s9Veiql r-#ڟZC?]Iw /pk/XU9F'O|>0j~:xD˕K."seR)ɗ?@X Z(c:(X?i~*,jP|8 D*/e߄KZEjy},al?((iO1;U/_M?;<^/#Pa4vxc @ A i,ȹZVӔ'O}:QhoYforʴD x329^[N("x-K2y!OaGc辣{ ";rpmQr?3^kxQ\O97nOQ:hj&NA°nrYW=9?gy{vIQI~ εqVSG~DfR6?dQ_> XVk!7}S=USJEl\C]NoEedJ/#OOG*ťJLK:*v$HMSYȢ:E Iu=K8e#Tٟ9ToQ?w_0UO鬲":^DO?z^]I`ǟ^.5C?C<ȰJǼ (D@ @` ǯ)P_Ǽ*]d5/i Wקeg/st灻{m+-ie,Fb+/GqM}K$Q P,{M?Mq>OIo'gaRkecK?5걁@IDATowzT>?6U4NV}+&)OdQZ>Q66qAN= %FQ/Hӏ~Eu-\F~Q. YS.'@dР4o߸cQ׬Gc#q'7ƟsG!/H||&/LY` @ x"Ǥ*[x4^E[eYt9W[yNqndſ %SN\cbSڀ5\I:0ѣ5OLK@6/_n s#-Р&*4T#>(9fE_ W Sfns Na/X q%Y¯7=LSU``p/`aT)*k}zWHu#Epg% WG2|5b?/O4f).?E=s|VY{9+wX!/@`C 3J^f#2]=M+ye*F#c(Om&ӷȀŴ~iKY~Ƴ"}?D=' uu<% hID s )we8Ih|uq @ SR3Ye*_y.fi[Vtֈ?cY{ P~" :N\Nxe4ǵ\6I6xp#DAyA;81 =T_Qfi/,7[~`T^4/;KƧE_E(!Oʒ?_Zh/Hy"nEch$3lȯE$9y)5vsW*@ X4䱮J[_DzFhr^=oUz}Z?-uU]7Jt|Y.qLAJ{MgAT5e[%zy8k鋄ie1BL"ŕۉ?H?<)>-\|A=el4hq1+-!=jT [ی~' zIB$yiG$A~n/6U22Mϯ _rQNuͶ*3,ȓBɉe_GT'BP~/C?#vۧi sӂ?OO>)g5iz 9Xo@ ,,\#}۪d&ؘeW7J+ӔsgA) 39/Ffc53ҽ-!Ǹ )OSzx0ݣN).NRSRG DRDYmo~_' J߇pC_dINcyAB1d}<9$\e~vUHeh; l DdG<-r1AiEb(˲~QK$6ĘY's"dY,p{HY_Y?/Yhx_4O{N<Ɵ?. ,}_9Qܩk.|f^WiyZNc!U4ٹ^n3 @ X|d]+4ъfei$*>^nlwmuUZM.Cչev#˗|RÛ1ox$y@Re_GVCM{TBVcPK RAk4M7$tЗg^^@s<,F`S qUI7Ȉc'5'* S^{56{֫ns̱yi&8pB@J@U4\|UfcSO>ek",SH"j L@Dz]Ӛ<ZVV$Lr;oWkF UO} Ojkذa:q\˟u9us/_ix=]י*}@ K4ʫJo%L|183-ohDy'i5Qm3MUZ}92m+灻@(.nF[(_sUny7Ln\דNNМHQ~"O%:W4 DVaXt#}?z^D'8Rr._H (01z[0xѦZ>M9w͚=^z%{Wl&(Əp'#Yz@ @ 2o}2@ @ "5#~y6zh;v65"~R^3uU0G[Ok OcLS?`7CUPSZiO0͗Gb K8PI*پ<v֐lR;ҢE }%yU\䮴|.<Q_o DtⰠ+"fGV\&:~x͛c3f̰ydk9"zi@ @ @ @ ߉!Cl嗷'̙3'x–]vY5j Cx*o5YC>U1Qz#-JXK\KZᣙNWĸِWO-O Y j<@Z|2?76Ҥx ȿٱ?.iOhDCbNǹ>8gDhE cIQKH9F4'ӑ/5YE]O*J=Yfi"IȤIXV8@ @ @ @ EkD\+׎ŵvץP+fty e=F陦?p7`&u198=T%™PQX6bLBIk EsT_+ ?6zkJ#|M cOjzr6']?DlΜ9wwV]t)@ @ @ @ pfķ\KRy3XT 9xuzZ^3xj;.rKx Mg/QM"('/ZR{"1a^J #x qˋȄ0ϭ._F"_zA:ߜ? g)7 r/j'):C6{,6*+XO@ @ @ @ *fXCϞ=[Y ϢrZu}^3]灻ܥAmRKlAf.>ZLM+HA $&"1"?[K?G!_KƎ{Qw K<>p3L|r+?&YuzY& w!@ @ @ @ hאT֫Zld7UiU:Z˼eʙ|w#['\ۃk_ Z"/|rK- }|a8yMq:8'葪/lhrB?΂XGǁԂl_P\NtHS֟e͛שw7Y@ @ @ @ 㵦T g%r<*5g|.1:՟[Y _,\czHυABuc6ӪjEijJ Xf/?tdӨs@-tX~]>sqcȗ&p^mkԢLl|Q=k-XD@ @ @ @ zG`ر^-7ruu s23@ @ @ @ גԉaTfifqx#Y<_t䲟.tr_T)p.dӺr&*Ig4hE:?ڟw:I?hmWġ#ۯQFƟ` Nw1-?9,I,wV@ @ @ @ @ 5Fgʪ+>썿l[)r*B|.q=~%D H^rЉyQND[9)ON'?Ƀ=$ eR&/Re}՟jib ⷮPl)^1 _;g|nOus @ @ @ @ )S*r> Y_<_1p7`E\_iWy\LSy,T!' ) #&?5hs]JJ Wc+o?Vh~P(/UAm)1zhʣ82L@ @ @ @ @kp~(_ןs^r~9^gY^*^* z VEC^b(7jiKĴJZV}]5lbFvε#M 4[ ~ ?ݚ8$E XFR=J2?hpROb''9@ @ @ @ #\*ּ_WNc2-2MxY\7a!ғ \"F38\,6bt$o-B3NQ'piwPW,W砩^q'WTYP=1@ @ @ @ ԯ+u_rV. ys7Utv#nKv-#OOupP 2e+1SP/;5B拧".C˲}D}ɈVB?E{P%WGnW-Hִ/#:X:Sc s΃S{si[y-8H-x"A:8k@ @ @ @ > b*-p*19/4rM9=|Y,//sD.b*F)/&R̔y=%Q$hlO:/_rr1./VI7_ 6Կ~(ȟEY((oR?0NS @ @ @ @ ;ZczS y s繞WgrZ74U灻1Mk~I4EHq-"Χa$~Gx@K$,49 1 vϛFEsg`_ f[TU7~ cyI# BqJSۂBgdJ@ @ @ @ >#7z.+e^NkuU(b*bϗ@Z\J$.qtCsZYt "8%dc$#ϻ?oE ڟoyt?Ըث_Yuu;(Aƒ$OZ:A/,J*BYv C/@ ,Vo,kaBy @ X(R (__ou9(?g:[YZ;R`Iv/ڰRȥiY|-EAD^?>~=iq6(I7g/}U9 7T_ S^!~_|R4Sٟ\2$Я,ɡ4Ih@ XO͚5f͞es_cs1Owf'a;}X|)g`Mv!Wf3.7鐕!):SGۡ?/O0@;M6x>b 6s1E~ [>*Q hiUʴ96`7tgB3|ͭs"ls&buIV`f^7~HϜym\ m*X5N&0B?w6wÆHVuVؼ( oΠ$ f?͝7wA[doa-,??^E_Yt\>Ze׍Oebi@ٟqAoCϱ7}7 6<ȔM?ґ$\::mmŸO3q:S:qѭ>2 \N֎dпW_xEMh?h_|KW1,^WDXЂ埮y6kqN5} 6vX=j|n@ n^7rr3o9Yw#7YtoCy ccspo'I|L$ rA^E)̟}5b#; ׼n::{̼p/.i7lkؖqٯ*^_R;bݽ3[_ ;-)BCvsmˡ^v^~Sm畇бxɧOq D2ЕO_,oLC-$ǟU? !ͦ8eHqB;DG-z@+M!E]L>]J6.R ^4I?-8'_Ig@ƹ@ >3g7;&6/oGasJ)N tH/~>XԺH(߆5;|D.H-lxy&<>zQ&\okQ_$Xzu'?*Uܻ^}d/' ˯蕃#,8G@V2?W/4UeUw#Ko9IyY}fS;1“b¡{y6zmVL6ͫύ!Ga:IO"'SA?oXr٤8m{ -:g$~?-~|M3pa< SNSm4ǿ_Tsl)mb ]z#Fg}JOl#]˼`ar#A"('o/H" I ڟOb#S!a?'ub_ec۟ZlEැrGSXʯ?4Ivh󈨗!h3&|& GWF~~"@ y2OPqN Ĕt*'t~/?ɑTmبb:itvDo&*/>9Tυ9Y'-ۋ X,  qOG~36&%;[ZQ7s8WK Y6t=^z%1?PT8@ 5&L>uڙsedڪsʫO- >/\˷s}]EnMM=@*UYbW} V|OTg{7lr7g{w7IH;s7_rf̈k'5sixg||V:nQKaӄ@aoH^,n#x["px]$W]} |00% !% rN_QYLZ&po<3wa MN^|^_xT>𓫇8ctC@NƁ ߹?nGTҸtOf3++;_o;~??Sxk-oe.-}'lE]}wV`s*ۢО<K&4@BJuuuj=ǹI~y՛UYgsXPgM@VȚMسMqVj5r1m P`i N/6`Z56릻oDO_%D'i9.4cDHh ν<5=z>ݴXpw 7 ޏC[(Pr^eZT40F4r/@544-$m DUm8#zob\A D\}.[(W;=Hs<>_[ ݥeA˜9W7èZQ'?OoX 4n֌"{'_9c+UgDmm_zx뛧"kP΁V4"5zW^vzw 9oweHءE`pY[1'CwDJkHQ0 2Ypuk鯂GkIX2gN~Km8X: ;RRtLXG]UpNN5p+ 0/,n<i h@pXh`|i=No0msS]$t`} Gkp g]׿y>FrU0ᅿ<6Pǐ#0e%x\#٥_c-_K7>Np>UN'}0?׿y>N.}_?v ӿSWcyL;cFK}RCVEҖ\ T{75 jھlllurMڕ`BHTwNاkGcT/9'OLo%\叅Lw/?5_'gEUZ(Y}yAQ?6IlkPOHhk){ "}l\g v3 < AVޢ\$]~`^ !7uw;WGWHWƻ _LF,rט[X3 Ӗ^M_ʗ+`->3w !\Ǽt:PFܜ5xU߮݅+}*Q.DHw]n$V БkW&¡;ʱyOci0M"BcMq(GW0p-:rh9'n{+?r?e]X1+S%L&|fj=vp In]xqވ ~\$|lozXWn?އ9r ]D6݋wljSL!nlx[X+}k-%EoRТh ,#7G壋{pZ<J"j=׵2 jo8 ?D5 Џ &;.\81M`͜<\-Ĕ4 卼NzooI, an+!b1Mqp 22ԍƮOK %ǓLb›p7_?Ǫǃ/߀n$V4Kc&ޙ-/'J0|Y 5EEy g&~y1D/ůߖv%q |]F;eOg_ht+u[ Qc8$.?QD9tyʼx[ i&yMm7{_CyZJٚ;z7kk(}pl׈?A_֌+ '/QX&vOKs+Zqj?Ma0Hh ["!]vvyM(kw`<쩮DFYcNpf^nЊ?nsϽsS^% Bᣫt뱇q/'6=Ntp*J-S*q/g\?}Xp^zegj˅_=VQ^'ǖcm >t ]c6||ĸO0۳>n@@k WbW^&՞;y O%ww ][wۿ!ȯVWM /7 \)to ?;JiGdD*_wm[b0J~w3>Ӌ|⏉ C@W3gy[2y9O˸+  T8[->wn 8/q>h0CI@L6wsg?`3G,'*HH3]߿:})?&S[v //lU_ҝ=P"gz~KJJPUUe+*Ӎ*/Xm1qBse ͗q%l쑯j1Rgme+0[)| tu@A$|GFaa N6D+'ŝ'5סGi#i\ߠjh߶om9#p=~Սh^_Ηg6G)_>ر~jDHh έǖb;?U\lZ,>_;JS\lz}|n-NZb%jb#GExq|OhŃ-栴TcPڌO>G7r\o4v/vkAzǃg=ވ߾\kX&<' x~]s _pHȌK^`ܛp?t Bn I O‡ף`@M`=hvkeM3&̞r iȣ1(fvqOs ȏ Gz͘pc_?\~-{>l|eT\}w>WxފudV 3q҈y'c>' q}<\Xq*1͈~-v41)PM'5'ysUTرx-?w߂o냷oT/v J><}S&/OWt.0~q߲V3Z34t]bBUxG_'IW/| Ȟ|53G[aDyi#\Yny97xa|?>7IxPwq.%?pp##d z\I@Gofd#ϬoS_v.ʟ6)/^5MDөGi1ѿØ4`3J GT&4I_N҃.gw~m+AҊG9q*OA()@IDAT~PtVrrԊ9gD:˯h*V[%V,,%r lqT_< _pPcŨ>ݧAj}𩗫J-yܥFӳHXv{־U>x=7aK.0]C`Mb +Iu;-,ʮ߷h3zx+fx{gVmz刡OD[6; $<#X„?w+kL/8ʫpvc؝awc'Vs[n xHzy!pc3aqSj q!=xGjxv0QlN~AQ%rKw-S54a}C:!NLJտ  ڗR'x:/B?W4IZ҈\tc]滃GW>%CXp"cx oN2|~D~_c#  pvV tgK_ )b`tQB>5./=uZq8k~?-/]h4c%P__'N@aOb<+YWt!\j&x@:e]Fp**׼h#Vmubhr*yݱ}xyFXJ<8 H>&' '!5aŪq2x?δs|UyųXڟ [fxyl>Z)\KJE?J;/ӾUT~r l zNi\ Q㉐@B / qO/vOW{\+ vEH4@l&>TAȥxlcxfm S3ǁHfpD}~fp3GEl] . q+qO?F˿[p':K=.B(G<㳏dK~Ǫ^L F J%UWr KmNn4n`'\FY= oNԷ)&ˢH 3Z~x:K|b>;}x{o:fk@7|9'R>A=ųg0@>rPc+[=4b2ynq*Lm䱋=|Xvm8 QD~ X^% lT~/g-GZrHz^O#G5Z'(S/Z1ԟ0cބQ۞Q7ۉk5x> pգ$2OT}q(WS^M.7`~]\C< !j! NϺrN6OG8)TIJSIH[!i#Ќ.lī0ՠ/"Ed ~Cw(b?xfW#.=[+;1R粿L?CP{Kb&2 A܋g({>׿:wJ+*x>404?{.8p`|3zNwFjKdJh[V" ԕbxBl]Ⱦ W!ς,#H&Wʭ_8&M|GfP6am<Ѿ9( ǶgB_|{O9X6Fzc u(~"$4@B\c86"{W>?5>o 9n 1bx/ EO5 ƠA}E1Y 2:8abcKܪO˩l>Q<;y :-^z`!^v˰a{OZNd3 lFT/='%Nb-}􀈢{d:UPEqϷIcIbKɆxŢ-#Kw to@is|R'N[A L'o APVo &e+% ޏ+1P^Tn8@ =t?'س—.>vy+@-RFc (cb-~JD2 ѿ"!Wy+=;b=^=Mq@.xZc'\kny;'~Ϟ | &>q('d'j >~.0!հ/`+ki5,?&y'Y3C?B/乡0W)oi/>\s^Xx5X!J6J.c׳qJǴ6oQPG_lwa45udpcwy}'; -AǷmٮ_kl 1eەu XKTg//)^B@5{=`„drKPs7}0,dlڎ]6r4DLO,U¾j[ wɄQmYאՁ}鏺{UyӥE9V~J@^,[V聼~1Fqpb6/Imhf.z|$QVUc^sAf7jA]}#SӑδPK*k!iT4gȃĉtkmF8*QSsJBn^HͺzvvUz? _$k42?$4߄]OBJVItZųdZ{H䷸ٿqP&ΞzաYJVF^2U9!<3eDOkFcc-ψf1$Ɔz~ڈPS陜ZWz7~ Lʐd<˩1dnJk@i}^סd-[c\J'QyWB*=z?hokȒ!ekfԖ*z.rynx<}WOΕIglΥ[4ՂG!)% i(d9*kyЯ2 5\}̜I,)1җ%i? ~yQ-ǎ g`œiMf:}̙xZB&ʫ?\9sQ׀F)ף/[ )CFk+4~C&/u1Ls#PmoRCWdKЙ[؞Wr|@I)EFPcU"$4@BG?wqia%Ĥu/FϧzNdY5jŊs6$Yz *k. t#hǵLfM`EXO/d3ǎ pN ?bU$d`!hѽ)G"M=0rl,D9YY!dMY8[kEsqCT~rs<4- r#Uu]nD~pC1~hO q {duVʟ\WU"` q/?Cթ2=Cʳ1b^̤6VXa1J5qs2`ЀL4`/P~ViZs'?'`):9`kK?V~32Gm-Uc$6d8 wNN2jgW`&53c^Mdb6 ԭp)v?KP64 g._24!c\MAX'8f:Sq+zZuQN021o 6 clH_qLpkva3WV_EgaY/zة](1jb`#?z/v9f>Wہ ێN<ؗNIyht ٿk?7>χۀGfR l׵i'f&M}FWyY͜#$Tm]EAZ'v;H?^A)ԭѯš밻XgϙDei#X("VS2~1)5LXX9oF/㠵t)1k:|R9?R/o:9u܄`&lq0xdD~+0Lпj0iU:+JwFUr&҆JG/gMAڵ+sL/߶E4,ܗCEs[P%]u|KXw-=a&l~ 16eȴ1IʭO[p>,TE<)o4}Nڼ;Oȯ&_%<7$I1IӮIM*$y.[XW+i_+TB c_W?gX'Xt]dLJJøYnkd|d=o\%a?b7+GӳMdimpzgY/5+Okd\ ^YEB`JORSR+6&ElXq8胕^9m F粮W lZlcA'D11c8G6 |Z58P;lbGs籣8ѵ;QKp`9&H k. E$Kdco9 ^?|(=8xѲ*W.ǏuAu >p@>t#Qk:^UOmӮ^~p{OGxb 8?-1"vgOI_(}dl/|/^E{7J}GT}L |/?Y~6qT& ء?zοrPݝe +NʿٴZnjD%QxT`!.NJ98Ӝ'xi;$ffdquB;WmEʞWABgI;FO\+WbWYf^ 28l(Ό8p"K;ƞSNbyiLso<+V %ZPZXFIJ_-Ux.s=3ǟWb![]#$qi6SQlޮk*KMLgǷ㹵' H7(րsyAe.o~u1О~&1}g\F#̼ήZ0[R˿2{wj/l0ٞ^alqFg2&VׯN$76I,bJ HH|qpҥ,q^X C*ʖB"s)j&Nj+̯B$"xLrF5׀}bONQL3:wӾ+TŻ8rY`~r+k]nT%C J=D#hmI˙8RSic֕(J_rW. ƠgX+ cxvnRVePk5Їs/ck]=n僒տt@&D䗥-C i$r"$4@BZ9ϱ;Kq]=+_TZ47؛[ܵ5^rb/$lEo^Wr!6^O~ ?TUb1omu{.I o8/jxt>Y404x۝~AZc2/"RagG}+['gpj\2i2s8w*{} ;%Hn!|<>w+xxns]뿅_66q ~spyeV虛g+װ ߽[ a72CGWw=&A pe­ (οZ/&T ;`V487@ʨ$« 3#'?%&"@?J9Tq/5p>cT:>s ғ۫F闯~h~㬈EY/?6 8|Oc^#p\uW0{~e\N|SvbP7h E>^szimwoӷņ VIx;\'o]]p|)/W'Vć\"Ј,@xiv-苻?qd"5ZkZv3)zQ>_T+?*+o8|Fnā_/,^p)^8lC`"Bր2{]mAWVaBTqEj I#yYW\j/[>dZPVaOIY:jBͿTP\ڶ-R4~dե鵯`!Sgcĉ0i&.m fs+ƫ*wmǑhŘ>c&fMԖ4\x" )S8u&*_W~4 ;\>S+n/y\y> &Nɤ5ɸuQ•gDڜUh$퐴9JzNie闟Ix$sҍg5F6A{S_3oS˨ _io_}ſ%vYT45k)(VsK=%+xMr#~wk,\h>.d|?Z0? gOq/ r)\-% `\d{S /=$Кї,IJ`Kp:\Ag ;zңj CЏ#On9<ϻ/_ycٱVH*bn+J@fS_" ilcn/YasOa?6bס(wrR"M?]l>QvO8 K/e1;qP'|H9Kb˨qڪ0ĥ_*e\4R\K. pj51AqR2\2c:H8Sy6T!?O-8.tQKߙ@D#+F?G!5>l)G!S;JH/+FEMDo%gsUpY+|vo?z֊ k턾/}fRQ&M.eaθ~4mލڎ_朅W`ⲙ䚃QVPm!r)٣0{ѕXr,]8#-^(?xbȕ9c{_F[ˮ\u'D&)_[yܞ;a`{]oC z4'r31r96'1с{p!Rpu[ xK;a;)Ϙ_>rOC8xy` ǟ >6k>;*[ҖJ,>0' 9|0 B+ ?0evy>tɃ J<^K BI"q^e߷=vN؀K>M<Qi,K~7 몎2;m9ibL__2Jb<(ĩJM:Q@xX~.~qۃv8J»𝛜y:1}A7m mG |?C)uc?v*Vҿ51<&Wh ~y*Nx\ăŦ pmHwLOhЖbVd`Z7V%p@JWEY s;iNX/Qs; >$~J­<:_aXF). <Ғy汽ˁI\UO5k MOhqK>y 郂a4/z0[;̴FN( B+SjKyŏ"]Bɍ8ʏǒEr44M5]~<gנNCNƌ I} "TեFR{+t|E9ѿHǞ>jaO5J#K/ ؈RЗH$3%G85^3gb̡<+qF_yN B3h .\ȭc'bP;fs1<[kA I7Li:|#6J%lvVKaԕܗ~`ɳfj9)b>߾ Sc#xn҄׺bسWSϬm%?JiJʋ? 8zߚ<@/NzI%0jx4xa4B3Fp5H4gVs3#Ii&EPVz=ך2fprG||[0}r7(;B̞QEIi/sn%)ǎ2(m b/ѠCU[_qvoUgVaB f;ԷjoK(#]#x37zOrʶA "P/ӹ#OGt&gb}.x>ָyshGlAڮ!,gDdVꆣ'EY\a4D?@P8~5s/WyeL 6ҁm?V~ Wd]{woGϙ\\r"wּ~W.D$o!9T2E>{mӜek\m+v5˿c$LЃˤgn 9N,JeGCŕ#o[K9܉= q9lk+QK8RxX̛>D[rPi鈥ec*?@B { Ďxjqϱ>>ԇ FO,7Aʑߏ/=GG:`coގ[%8x|YW݉ YğX7o)|o'#ߨ #p@(D8:ȓu^vjm_^|g{ZGv}s8 vr?߆_ 9oO|46Qp%^Xcⓡ$&?;pW }nh_=8Ȝ0㉋|'Н|#;~} ?0QwoYp/x+#Uw)6AGָH^o4xރ3n3 OxC8à>]cO}cC*څ?BG[cRov#z"bp3Ż[ҒT &:gp7ogVZ69XX'hB!ൕt~ H@B S Y@蟫4C@8[]H|b:lk0sIe2W0uu#*_Uv% .mꭀ~}8+Y8Pvɮ3g~Qk%U@so,. )eBנ+ ,^~M8j%ql8y,}W&I'>m:#KrݲKPs2rЇ[y ڶNsP:|-Q?G6S3Zp(㖏Ņ\l[O/1cGd+'c'/~/YZMʝx8tuƭrp.~?׿+jrc{4. 3&Y&%ٿeſ&_vqOe\9%UOOdN7TUApz yr*;rf=recqI1 V er *x``SNb@yOQZQt$jT72N~f-?+rq#iWnglwXj/>EkT~ &?A)w_r:f[XCcY"%`Eo^٣G$/))$n;+{~QWml=8sZ$pfs CAB(٤ H*~?~rrN3\Olj`݂Z\gŕ[ѯ*eo;l:VÖ@7T0P_bֿ^CO1N_Zk@n*'ݶkyΖ|$s<}1+"J)t'ɓ$>,*GeKѯy-?P"$4@BIg%{Iش{8{.\l(#o-RQTpv.Wyk@#ub+xA*,] }c:^5r܁"TZ8|v`Cٸw]~kP]GG\ ut'D"\k<}/w\N[~]<(@nz| IzT- #+@@_ (x=WfMHlq-QW?S=&aSD]Xr'/GW)uxx}_*uÚnb믮1nU H0M\=PӀmq#~6i={lIykD  +SNY*ɈEwC-P:p}13l "'-F'w&"<P9Uvឋ\7ӗ#pp5{Ao=gƻf !Kfjd/}MWw8{ߊcS:Q9?:)jɎ(+tO8;:{˧w௻J%4pf&ꠠ cʺFVSE&6\j8ծ&8 0*M"¹m NO/x`r.I%ZoမvחIuU D~ڵ wޝk.آHb;)`{"Qj}Z 'E^PJJ\Ӯ:ux.*Ov={^QEbf 5r^djZ8jCt ޡ'SlNީݴ?al{+4`/-A~K (9HfNPzΟdb٩5c D cƵxX%Ԗ}zohMyVcӳ7ʮ^S10;qW&Ά):&cO>#jwcp"? ,,ٱ#6yk ϼV֑Mؼ}){5b?i⨭gv/-ܦTkBtf569(ǟ`Ǘ?[S3w0zD.y4{M2]֣8T%sOs|׮V%JIM>'>DSn}[u֯i[އw| J1hɗ~m[#>uʹD*G> 5\ MvX!Ӆr{5_ o;#\g0pI4qHc{Л֛~Wԍ8j˗@LP&]Y5  =Z8hr 5X41iE8کid38)GpqWD9iM@IDATcq?D0 ҧ xBrFzfB~OvnI,eN#Cƚ~:ߜ3'Ox/wߋA|{񍸄0}Bّ iJ S#>ua#YFܴi{c!өԽ<muRS6Uoȟ7o]l\y*'3$b8G?c/~.=#?O̓@QF'JDϺF+{msEQ BY@|<+$:з'yk8 ʵCnEǪ0zVpҦZ'y4g@֥OlWDd_>msBN$p#36< ~~@j5<0?8u8 (|ϡHmm:"?GtLTg`܍ 8H\io{H NmpuUA^vGUp 6m(Bk[3ʟ;cJ+GN+Pu}KFڶἋ#fds{ֱ " $4y@Gc8sbӻfwuF<<Ί!W"j!K8SF ضD]6Xr<*hZt~;=}R7#I@~]M|'FD3?/fWD_>#F9.xlkϟ'] )j;g9A+,t)Flj+[<֮Xeg8Sm鏾1}}hC58)y4`)'ѧ5z` LNNjH^ǥjЏϕ[JH7}0/;V{vQ&{!A0g&oL~q5#_O' [P^!%eȘX-yXx*a lF_:HEOe_[I}הUXfiuUT%„>aXs/YJq?Mu6j D2RECyRcP$OF֠w#I]WY+`Y! Usari;п6?̖2v ]iokqJҋ_U "~˖\H;=9-Fa+"o,CE}<2ܜ_KQO{XpV^+-ٓ_Er*G<'Lr lYz>[_eQexN'Zү=ئ-eIL/*\ؑCȘֿ+S:&s"[/Y!@4}fod]º&Ҟ 'o(PPDP풔>3L 9h$7/,;D+ŪմW=!'q-6Оobۣq8up]ѱVB0^ux:Y*ϥJG@6A.݆* Íፎ@S5/+⾙q蓭\fY{4nB?L1f̸苀Dd$O62Ҧ-|lD&:k[J|DIsɺ =nF k+ȦZʸOVU)<5W(/@]i9QtAV ?2M_o}_HK/+e"XTfJóiWSTkNfm26qD\+|,Zl;"/Nl?dLo㯑iιf8bXEQ/9(^gKeɉbޖ>?JcKWE?\`2&\:dR3bz~3} :)K˿ e\᠀3-6@BB/1Ƴ?WhrNeY5+_[ss93C2Q2 F;Q'8rbEOgʕ#8KxB\gw}ĻEX%<"EC,ZjM'OԞtH 0T%gk7mu!*"Gh۱u˟ۤY˫>tZ2s(sv&R.YSl<GHXYkrL/YO K [NXg6aE1 &z: wCv/v3*NIrvG?i8MLgӿf mڟ{߰[ߺE+P&zT|%G\|t>Rc}(cel.yb,Z/Qs4j/[P=qM_JO"u,\%a*~x"@U+fT,.y3>{03e$rU*)Wneq4jQj)-Zr }BG7#d?amB@wI)>6m{k?;sL>A ExTϤD|r`:Dɣ Փxޥ)`18d_?7] Њ;\\W?W:??e,>DuJ*U)w6aMqt4*J cM  /-7҉4M ڍ2o\? ~rn0혾 B:`gOO !Ni~݉g铸p~q^RP&|:i]JF)rEnRKɯT ,P[]/G:[dJu1(Z3{dX>p08LxΗ={l:~*2~s[\+,]N ؞hd,۵S?Szfdbݥ5ņs9Xr& @{eZ s{f3L_ 98 gT2g9&lCc 흀9pgMaoR~;^`$>{A7( PVk-sǥ k5ts3XNгiNLmXS9_l1sU)y;mc$'#Klݼ8>o680JMzsHojLFSHg[1SV/WH۳*. RԠ t\&A+bgi'q/~F#CyqZgf<ٴ yy|d|QL9p\]aFaq1 13qx6-G^IU7>zbXb.qŰH$ҿȴjȯ%R/1O&5p|{XN%?wM[V=|UOFJ6b%?U0 &ԭ$hv g-sv_u-sO,Q6Դsg¤Cw*6.çKwTMM{laܐ,.JglzdKL\ۇ~t~4}yM,{(:Yd03$Ѣs϶GWZ`٧ Pzs@U`5sIXK/1 =vXKY:?ȆɪNoROcSLdߦU6[0a q-f.[! {#H2 ƊE$>\Isx"_4K_}b \Y}^lGv JiSi@tnfJ1O)B2ȡ q`nݧI5M+0o䫱[ot}ֈ~ò|a1+cf} YF ;5Mյn.r76mvqBfh @AN4ظcӢ>LO=wzo±N b\FO;^pwslIW'sSW#=P}G~v>G ǕޅS1_KoT <)&Ff/Sz?x8;GJOJOŏs1~M׮d&c:#40f!G}5G߉ s1f1g5& cuOGq4wL'wY;K1xNuY~sʱ4_U۷zq6Y(:zFut$}/7# YAt0(d]F}Kӽ3G$1ۻGCBB֪cXNӵR ۀ]3v5 # dd4dK48;g4xzd5Z*8G(.iG2D+|QoN:6p5\Љ8o˰yl,(A$P]=J0Y7Wt@W핥IWAQfcK.}R^卸VUB ufrq1pL\.5lO8|]s!\.?~>9g"!#e>Z+}'?_"uCɔ;&=9q}g4çsx UޘB`e)}EEXU#|>}?.ca[X=䜘@l0rpr!lW>}R3a$NҏiDߙ5~"pCd.ٛתK(Fp^ŘYwJ)[Ib%z+B}h}bLX1-X,2W}1-">WW؏D?9g4Fain=񮥑xի^Z&ӷT!Їm;?Gj.KJr_>rڶG޶a|~HlDe oSʟhMDϷ?Xf,%RO-O\vU }cRc8 4u1d]l`>a+cXIǷ8aYٻ^)6FXҬ[ֹ-4>j nP aY)&HY6n#ChΡTzttܲ?CwM|!@@{An։6L!zF>:-Zxڊs);w~sYw. Ѐ"3uF>{(Q^`@?b+w %QpNN=p`ӥ޽g x&2>˱J)> *!O|:ip™|{צᬹa-?N`'2M01C0C.;JR:9) lXÏ"yOl8'ʯBӐʽVys}׷̷w>)ڿSߕ*06E8(QԽ23H~:.﬛Hf","\<%iemcnnaWȊHdSպBf&-M!o7)2@h Tpx8ydE+6Ɖx% ʠ椮+ U)(/.AIiKP ={XйJ>N~D0~=MwU(,({5ܣP(g՚J~ C]zsVd3jN]2X M$d4b+g$nڣh&?^Tn9}8ۄÜpJB//R\ Б}! 3X/_ POY]yiL[r2:@ƣ8'þbL)O7iOT"N)O ܠi<4rPJzǠwP.n(jxI9;C\nh,-5 V I9ۉ8nk6qN_6g^{ad>1NMydpMXQQL'" #;qZn}0K #eXz'{Ek'gDj֓*[m{5GdZatl 0v%-3h;?eZ^Y3Lq»v?.E+<#iGxxK}l:.$2K(AQ#k"{ qt\trTOfBrz|~5q\J;ΐˏB1 jլLRzb\$OR{@dPע$8c(˵|ճ.$%# p gcf7dP=0O:r_0k-?t d%e鎿ѿB;K;(oG_ioޏߑ|rs+ecp]EH4E:FǫsR-uc>| ΀~T ָ/h0v򔟿HCx7W|(o<[]ףugeز|M(%fY)Ox庅~6v'h8桰МYZO# Z?~56`˙%8>Vͺw1$F"xl깬A 4gnIu 1Ʈz:7׾I \Kk,Z=@ߙ㹼Qmf^qyLjzw}Pg6*W9ZGrW1՝۪}pLR$!!8´GgqET}XCxd(J]_[F.ݜ@Ge2I\}U/g%/]!>XKJ]q_1ppxNcГP]M׏;/&A?\ :9OޥR5mʿ 5ulDZpO˾cg_L7՜>SB t5FE %H翃 O98QH~o~QYQ~7&+\eӗwI\~ Ulo?m'-;)dEA7-gT=UZ_Z:☣FəO\qʛQ?6%m'Mlkl\>65I5lt\dOșGR{*Oy vkB/4~!DIEU]RCG!R,a`<3 }=&4O-:L]}]O` ڟj'kG !I_j nmcf]]꟟o"y?3p+O^m]ȸ*ceYg>Vk9#Qw@SQXz9S~-BߞlYڳ!?93A8S6Kڗ͑^,.rBAE{. 68-_(ۨ솋v~bK$6ޗ2{~[8ЗDިdMwDߕJˣOeڤ/E?om/.JIG~u. .T[$Gѷꉭu>@ߧRfɭKW9sO%/w~8>{HiA4ۯP 7Љ3 Y[Rӭ3۞5Gd,0=_4ulxʟ35Xnm>ߑ q{WOqFg%L/THjṚK|w$2yɻ!?{-Oȣvq)n=9TzOV ?w${iVA~KHJ,Ly'~hiR( uqfl"%G?O?ժeVv컮\"qy9鰏Px/TWPw`e]ҒZձ;6{@ Q _"ԞLt(}֑eA :U'nO l.;e@Hf,З/h fbx0{φ*׽!Ȁw8#Wmk镝Eu[_KX"QH ߡbH9ȯ{(Ѕ#2y}7` cF=D<9rD-[RR/,9[z4]jkkmA퉥=KPӠgC7swF-͸!+p}TV_poO9 b {wOYpeJ.fkk]dI\q+u+߫EƜVBʲ%GWj8#E)~^(A?sHr?Z.Oexui:sIƚb<֍G֓(]~wI?f?fkPh.OZImS K/H3_A4h 7>_ַDVcR;guhBMvÃm%z({70E;#ӌ_)"A 쏳F<}W]g@+_1F,Ϸ]Y~Gi[wcvڿK6?![G[3[)1vp[WOC*''ǜToA*RcK4kwڛMm5A $ݒtkFnS!nsxі i18:8BQS2lkiRԠ={?w7ۇ^U UXVj#OfA_$ ~ Xi4p\.ޣYX63i=p=}@?M,ǂEkQF|}UG9*ND.~ʽwda\eɞ5cϩu2ҹt#iF ɸ쁔QoF|kGj" y׻*v12Z0  qt^\[ms[0ۋgYn?gEExW)+FS t .Ŏ=$׍R1o*1utNM͕?'pD*1п_ׂZ(A͌غcP6P.hp ٮmg͖{=A~ޅRwE?èp;}M.gq|ᶼn8n&?A_DߧG "]AWC߾Z2__$ $poFnNԲ%m9(3kԝAv)įCԿLb`"R( kFX9q!sqR@ӿ+,+ UyF -c [iǔA}fԿ=O?){,:Z_7#95L>ۺ O/;Oڝh^88{8j* Q\ހ846"%zpI63_*[]V|\wg>I` +&y Uet?+T}~җkʮĶ0 }vhu* k@~Ş;rDi96o{g^(^5b[+;ʭyXaTIc%پO="ELa<1}cX]D$u[;H=Ex"8}/GϿ \8MYp1HMWsهuNICQ+[5+wFmF"4Ώap=XQu+K QUـFޭP ao/V7ې^8J1dwfh}4&r/fŐZERWS+1 UrcKVeH8wpu-W-1iն5K>kTrpJiƯbx2pW&.yp/ cH楥&\Tfzɨ&iphe^qiĪl,DqMsr8&8AA62HGAV]qv M{WoeR-}t 7;vPz8S߫_pMpNJJ`}"++kiiC۟jf6;NulR]+o{ G~ iQ]C=23}d8h @=7=2OmM[0[::Z|^܅"kȋj,} r˷wٙ3=[c/µ=sr3O;EqO`.iK3dOssy/=_;S۹#>OṻٿN('5츋p]nj@NʿiƓOƭE~fc"nY.}FJSpٓ+Jĩfj e{2iE?<{xŻpZ T}Tj|zHT{x,m.yAPO۴?Sd&Rk-xoZT\p;4rh<߸ g >㽱x]zw'n]O}_n5x-YK M6'O~,gi `B4-oF)BEKC^B?.83+ƜVTk:.: lu8ԍ<ܢRg ZQ1ISp BWwMm7$5ֶ+: O__}yҌUӖ!6yų0XZłmkӋH*pOW.Հ)D1.xx@ rHqi ;p<5@c:e̠ŹIIS~͒FuZO,G_fȭ>sDC;--;ګݣkҸpQ4#]?_DC)Mpw o)Ј}z4h`@[|;Jav:gʨu[`/.!#NZeҀ 򻙞dn_2^w @$iC`{~O9ẇG N~wO&ޔnS1νfx(dgQi}Z::eSeGā&zqۯx¯ժPEˊYgO?{ bk3_7oQ!436C<7 Htş ^^xL`y yc|Ikgщe/%D?vðoo~ OC]Ⱦ:^;6vͮ-QMʖ:b̡ f[e3 ƒX-6wlt@_w#a#oCk:ێzm?/ T/hj 5=i2ˮee7&:kQ]Yݺtհh @=z;}X۴7UtoP= ?xޗhx\qh?ω`Q͊1}M;Xl{!.,uǟ^tC>mP.M LaIel:tn$FMJy\?y^//.z&bsZIE~:*hϽ :S7=x—O?_x0 >'Mm_?䌳&]?6BXW\i"|FXqw5tRexb:Tw(h #p؜>H'L@IDAT}}<~k1,y X䕌 2 X7څ錛䣺=-ʗJs'Ju-`E_NƖ9ͨg׃F8ruͿPfrP>܋\ωqxjYM3qH!oeϮVދtb>B%X4F8|_StT|q__ q૗^d'y0#y/<<t~sH|(*9dVlv}H(}O `:ra$PwA7ʡ.};ӿWҿ-}h @t}vsSMMMh3-D3yorK3#>Hx6@]B}CllfWl%~+$>MdMTU.*o ]Ѱ@x)wg?/_o!p,UW[1ZWT"{Y+ 5;s,?o/c3SxFޅt|՛6.gJdKxыk[/힇keobrtYWp'kuz1/ZPeS's )0-FϽn_Ÿ *WԎa/Xޛ_G>8RQ%W!ҧkVǟ›q%ἇ?` ?6va{3q8+?R<=d |;+1#%O0u8|ƃx'NĈso079@p+i9r1)GS;>[&2#Ͻy[0߿=} _EsCϧ)đ9vX8 =s6g9_5x3f>sGtq:7|e'iM` B5{"fᦏ6O|\` G[}܌_O4Ct録?-Uq*&t ˚):WoFuuU%/r}xi7hbu5~Jw?#}`cE}]'[a pcN-tm,N V|[q:so;$H;O%*3._ŗ\=O/8g?h { ŧp1bx~ 5nX^oۢWq;M9S)->8;f[^I)b klmkra8kgaT4|>-mF ̘.IYZ #VJFs~8bP$1OQlrGx_cMrڵi QyoD hCcq8zRcP5X?KsP,x̩8Ih^<T#M}pcI͗LfDa 5bA5 ;8gB?}9,%6>}5uU!8p 3gJK6GyT/_lrwuW{=vo"˧I'*༓'AHb6Վ(."yx@BW:K8O~dp)/ i H?~{3 >Az~7O]7xv1fb'C~E3hvpota;!l(XeMl]r0of>-Y˄l˚9۴z9Jop#k0jyr,[">ڷ,|֕:P@ZӄĔ%+3 ?шXkxIj99 _:H4ij[''&}@"Dׄ Yӷ?܍_s8&#ek~(iD\rO =6`ǟa"j:l.?U}ﲡh f? yU,BEN h @ gsj464I} Q.y34SG}l]˿Ec8)o@ed eKM{8DS#N~a_+ޅ|_/햿pwtB(+xֆV_\\?j nGw㐘h3ݳ;o@s@왜 6&Pq,\{mGuzxV+.:̣mx[,S??\5Ҭ@B:l6BI= [E_šYbQ57%ƝgvJpXq܁\:,|% ` {| ͷr1r+W-uwSGCZ{,^g܁^.e"t1/b.a7 Nrnc!n=ey6BH^s\|[`rOos,fSUHpם7л?ÇC÷V{i>{@BfV)n9H Ƌ_# Ȋuú3];GH8G3& qZz \_$. |vMϹ]CK}+.+V/5/㉟7x,9BӅYq6}`қ/onLkZFNjo)z=&\0oJIĠϣaxk7c*&zw;*&,_I*CN? tʙpr2?ÏUBIBo<:&O=3޶?SC+pÈtFz^ ʗp5먂-꨻bXOp2/p?à%ӿ1ߺSNhS9G3> 21 yf{4滼圑'7N oM ?f=g:^1k%?TL5spUKsHx1Dfyt9'8I7yKv8TN,+[D1HQ U_q(-o͊Wv;]O?Hߧ'x'q]XŒB6n<r:.(v;ba˶.<ka^Ss-ΫCyR^ C-q o|2뜂_)# $ɩ9It*ĖEXO+J'_ V*\yiFg5R"1ک#o8пq1dIZS<:͸k4![f"1Cy:Wa<緮LB"aq7r? @8ثj_ .C'͝Bt+p# .QG?,tH3WͶ_ob9,mpqhk٣bll_|6R8t:s_7ᔇ6g\}\_Xo8q;:I, )58PU|RwwVXN9CQO\9xGWε Fx<4GqO;1?)ŵgտf95#DӉ1ߵL'&9Wr5%F^EƱ,\".a.ښc/x:|kgnV2ۑv`kx /y_|3/j7oYeJ.8s3>//ξșSNkW&apZe*g狢 =Xc2s9#Ha%8@"6 ? RyO;o7sotZx1GmC˜J.X[5z4pX]O;ԂZ}/8Ay=uvWeVD }O˻3H /Rqwnt%X~}rA+ ߻SWNǻe,gprf=߼Kk5ǙfsЌjExɞ@ 4h @@ 4h @@O6b*NތF2"`]x"N?WWb7L ؍ zgkдyr[N :A]ΝN ; |1lW\o WU f> 4_ qcq0(&ʉWZ]d}oxr|>=v:| K4(`e`o<߷7Pz䞀zfHG&g$l߰G!ﱛkco֥+3D޳ƌ!99;*vG]5%\sySCD޵ǻQ?+o2@HE(E.Bwc)OӒ'pګK!_κE\PuؤbRGoR+h.7umX ;0Ё!T~x(^A8 ;oG220)>l_؞tzx%N$CZٖBaM`XZ<⓹LU"1~nҁ'/Ġ/9kbR A{iW=Bo5y܂G>.mM_J0^xgcTN$Y\FG/|Ī'p{8 7*`?ėZİh @@ 4h @@ 4h`g5;sgtQZg9OlpF"h.&ʥq$Ѝ Br LԞMBI-7 JI9c;¹ÁK?$qjv̖B5Y&K﹀'~/w禔TViO, QFGS7XO"/3Ϛ;t0~b}R#A).)b ldar܂\,& G\,^qmmeEF!X7mYꮿ֛uD{(y /nduy|depٌ'.=/P`/8V]ӧ붮UEH%qw37&(Q NlD! L@tnMmxqCeF McNԹgV5G{W҃Xn2L UnRȟepD_GtMr>F5͟M?>x9~ŏkSBgNE22,;= F9fNҙL ''QFw8m^T0.k2yKXtIHnY.0B0y~}{E,y,Hk}& r@~Ԙʂ^zm o{ @ck8E3ς_jWhr }]fhWT38á:f:aˋδ v~cnDwA=<7??y1Z<G!A3>t r߲H!ȯ=LcL-b7*kʆzc7q!@@ 4h @@ 4h j@cROc>χk/](YGV<,#FMZLޒ ,kwE@ߓaPp *T: PTN,x>o9m; 1GMa<);"{C9489絥v ǟ:}C h| s:/+WW^2wbn;m~ϫgދO[@kv& P}{\әeAط\[O~ieһ0aL fx݅/@//f-z8ro ߜU]ȗXtZAEٟf!D2:(+G-0ͥё5$]Tz܈Fޑl7 F wOkފ&dFc쓸GVC>Ǣ@ 4h @@ 4h @@;:: ]O#gfF8 ] hN0k!} FiPQn 6hB5\<42pmglxba\8<Լk>}x櫷Ag .;ߡ}wn{IqYa5iE\L+(64%+8kA1.]B,: u`wk]FӬ˘H[S V̨|l  }0F,f9^M9CϮ2e~1CǓW:~gCixji5~}4$hl+1R2E7gZw`[+23Tj+m\gn_6WtqN, K(ev&bq3~ƍ8? j엖sL:>palqbʯoc N&U O'- 5әi =^yzOD5=)k+<է/bfX ?- j5'L{Z9n. |s^IJ\Ŝ-?*9OL>"VRx"KBjlh\<[epX1vA{B8)|I ^i#wg/w_םYU-?\w~aO Oܑ) !EA2ܒEHpF=!.t&: ii ,Hu!>|Fza2}`͹ Kןa̫bycܹϳ]y͟k1wVUm?7%)須ibW`l.v콬XAEԵ PQ.5yޙss"rΔO9s޹3x*%_0-y~O~㋄bؑz:^8f3!}-]vbC!W2Yw3ߖY_s PQPbz# Dc 71CS6| &s@Q3ׂ[HGFy#`ywAjV >78;-)񦤲c'P2}H xd);:^;Vdsp;8.IŶ-gcEE\F \^k<3c).Z bطW^@LF||r K; U.ga4:\ 9 u|VfzܥN9=twqH|t?yPxҮByrNٯѯTD:gpaty7əgE7D8^WW陆WPqxt6bF~a<*/0[iJ3pjQ=wq.| \S7?3Ld"7hDW(t+}MSD2 O'v _S7[ Դwgb@Gbk= w qEǟx/[o HYJieJk.τh{_ ,4^x;d066hEFÛ]E[eި&vuV74+% Ѧ{G 6vQMn7{v謷ӛc?f-ۤ79WJ*&WcbUoYȤQb3-OSԔHNo>\xFoXHDR8[<]ˀ%/XIH[T^.a3񛀞`#5?cpٿM-T.Mc>nu ܑ,,,,,,,,,,,,,,,,,-|fUYA ɟWhOأo$I ciԕQ)Bw]'t'ǟ9 Y[۱w3M)Bǰ8O/?DJEoh[q1T?z0~ @LJ'uD܉П "/vV TIr<G')r,䝭7r2`dâͨ1b|cArs=g<5Hzg/#8w~.cwb?7>o^xնƜ9\'Q!,qSp"P^0.JF hTp Th !BST9cؤ%Ctt[)gsc{G1,Hƍ2Pt3>N) >sJT Ej oCns(r\t4I V_̓?R{1oq rn[T ǝay2|kO{0;EK3CG 'clBrJKcٍLog4ORLtb|Y#OǙ-kZA-}^i]kӜ4'Gm3ܯגˡ1סe=RpMZgz]{jo2,ndīy'*@!A qco+R;&u&.f#D}k:z{MYvP޻ܨ^h8Z M1Ԏ<O|@~ö>8=Q_:WeEo i}óHW˭z$}JGfM '!/NZz2>TrG<#+׿ wt.?++y-,ǐcnJFxo=-n9%l~ [H9$, bq8V="M~WQ("0'a+=GA~V~u<\b]crWqc]Q1 o4Gۡn9nP<ߺ"zi/)Gbѕn/*ueN5h7+Ѥ7dfދХQU. Fmp_:[4 ~tE]S#h8N] p +Ƕ#,{)cuDTja$KoF%@HuMS6,-1K9Cg|CtLl2K'$avd7WV@CM63U ԳW"#W4kU_b);k˶“'6bQlw[28./}$ZCܶNd)-8X E{ޞF-_ NTTOQD Pv;d78w 挺`\2<^N#:T#dh(ĥ?E2fe ;gJXEs{.^ m_,ih:\؋7c*(ź,2:wk^D4mEuX9t8B ET3c9H> ʈvq?[-}5dȿ:z;Zq_<3;0Є_ca 'b֣+YV\c<2l89 >\ƣ iOoݑ s~lhNK6OOyGq 4LJt2T:‹AB#fuJ,_iJ sFx bsZu(: ǦD ؒ͂rR*\rd#F+nb>,qNt{$RFigs22R"-2Cx{aVt|]Yx{?burX'\+*WޏoR3rJ{y`4T(7jP琊 ʵCQEB!2O߆3`NFqmƢiCmao7߾-ű_l6VFÅK[ ܷ>%Z*sd.]%*ZdF_[߆Ջ`uF ESٮťt$x3>K]Zf V&NFrZ|}+ǑflVq#s*LqIB* ;<;Ҳ6bُ+m\ T?<Ա_xzzۺ~۷cKv/tIB@@@@@@@@@@@@@@@@nYFݺuQT)u[;Sw1JN+?/9]8 vY4v|GFŻZؐ<.+*r(BHnF#:iVʎSoэ\r?*1 J-idv،0p)FIef֌/b D@/B"~.41tbQv&ЉGU?Gz(ߏ鬕p[X"mݬgǜPd7S`v$m7WAF- 2`0R[v.s\oٿ5=M8?֦u)и%%"?| h_Wnr5ѢcMW|7<o)U58=hSL_\XjUr=X6*-C!+=\P.@IDAT_w7@??hN> _KpwǑCOgߑchw$DThiTca O`3sd?z7sïB@@@@@@@@@@@@@@@@@Ÿ)숸7hF!^2WsNAPE&՜|cExsxs*)_li^] N>I+'$J1 2.ю8Rp%.TyϝZs_ rʹ*#4Bc &'XZLSSCӘÄnQQT>pB?,nݎ?I,,,,,,,,,,,,,,,,,? U(;C4Z,qO{JHZlr!8ՂI mٮL~U9P]pyQFlNJGI[s +5G 7n@JNmprZ& \vZOLܟ6 jUfMO=Ԗ5Z_??? xn_kVX=,7?x0#3i_9څ,̲nyޔ 5!S>KceT#G0-e~=«DrJd ^ j3dpCm(?Kf܋Lb^3C% 5vy u:>\D'ˍB&D Y@J9sƽ3lgZ2 iqlJd9XwL`=Mk׉5??ch 7/ _[*i"_nNewx_3ӛao*ȢM3fZZ9,8SѾ wd,wsGBCw,jDҺn2TBd{6deX ,Z_mCfl(a/bN//%_&?CTXUTDzC#7orv+Y#WꝎ^{fͳ]K"3i] RSSPzPJ!o8ĵo D6x\d$C3 ְ>&[TrMONǶGÛb_ix6y̋iI%`VS,\]5OV@YyD8-C  pۆmiң_J:HRx(!3RZ oqE'Kĩ`H!-&14C}pn !? 00ts0+(:2ҡ-h>2x*f(n.ss&fLCp>hts0nh_ 9($z, HSpQ<^~G+7O$1zB|"D蟝SE2>f5,161uUMoێڕ~ 1!odcgز0nOWKjCK&sGKžlMa oxoWwx_zo"R| m(r&7$>wep\^s@0\1'6q~%^l;0ᅨx@r,:>1.}Xcq<7#P$itPŢWYϘTETTb__ZV Zm|1c.ு*:uUm}M:|^]l5RqSᨠG$F 2]ue!5eѽm*/rj!包иo8JΔm_ Cz]#@m"!#S@ uzsI 3#{3O,#+Nɭ(ʌv%t_By&ݿVmFUQr@ L]%bp`vҲ&REa۪xϱtS/^ 5ZU% FEeI"̆1˩XF[+^ʣZfA(E^66ҏWWa_+2PwhcԬGK`lC^`gc m1GfG}C 柹sЙOEQ!-%S_cUf李ÑV#-:afdh*zyZリoxuOGكaQ2G)Wv%}Iך'vhLFLl[9Y[FlkofhD١ G-E?kY ; [o6b[W?"e+k~ إ*JgFX#0hԸa0Ox0dwx_3C3/za\R( YfE:hO3}6Aϙ21s3QG1|h~59 b|CT5/mF&6m{oewGUr#t q=]|[H3+w*{t/.fW{EK;/2D2k'm]G)"/33|,qƢ!_>^/M+s5ouo! >/spݏ'^)c:Py ?`g~6DHԯD~r_xk-'i}uc#TJ&ðjEb^~I:|HiaL#;%utڛ!T _``6F&7c׷eNX lFY Rp1_=<[{궘dNlƑ^-Э5dND*C/ 茱G-Rk32 ''~G(W tl}k/Ϸ~ DtLxGsHdW9c_ຎmpww5k1Og!~ECKfl_x_[:cܙ\b^Z) on{+;d1d|[&v{WQQqpvyx[mF.߃:DDTwk?gR>s~K.? aGJ^ݰ`sx" ݕmϚ:5/?-1-A9.v]KU'Y_mV YQ=*4J@QЙm֌? 0ls?)xwE$ wq3kreűk1Mp[tmEC#- 1ŸHvؚ0e^J\ߩ֗?4~AcĊtѣ%qU}aK0Z2ww;Yiተ hbW=Ɵ0Oxjaa?g$ 3Cahڶ|;: wS*<4RL?&*"Ҡ6zAB,#`!>|?E,K7CAc#8k0];+gVܱe\ĢSNeQ;K\ 7sh0WL=Фifs*JL WKvʿ1o?2g>=RągK''kM޳^-b ] ۟4p/rZHw2f1hώOm>Em%h-bCƉrŖU: =<1aB$clKw\E,$ !ucѫ]> ^LƋq"EwʡdelMeq1F.2ME9iL3\Ӹ*}1g#J8GnC (G8|qSZ$?Vt;Я3.ZK|£i߂]m+cЛ &7a)x;[0΢.cB9s'<9m)saQh2! ){b+yڊ]i Gi񣆼cxj}ە ~aw_D?,o/7ɳ^r?=&dc/NdR~ae~VÁC@q'ʧ} |ao%)7ѣyGp }]AiHw_`y&s-3=kXA0GMsA~UqR[]D|3'MV3U!N 35ň㗉%r' 𫢂 lg-Jxӛ1a4kB 2E lI̼xW*,OM[Yز9frpm/bMș(4i\@>Oֵh{fmKlǘ4-q{rj ¶ã.|a:r^$-~ %?$3M?A~cOZIޏAΪyx]kGm {lWBV7|݁m"~0`/qES011hx1n?oi,Ve2ꞋuZK2bՊUX<խf6|l{OSgws:a T5Uc9:wP6ңB%VNLڐ)\آmrg!MQ/AnE::َ)o4?kpt9s2ZĜ85F<9PRusKǢoQO/X 8׾e|# ;掼MOq6&^q".*ֹ@SGl_W،XrqI$IJdgq-_2R2Zd!#TTҕV|nduLfS]Sp[Btt޷YXȕ,yk E~ ?y#e$<}tAaYS_"={+>]i;K}2Wm\ӿo($>҉?˰<-Rb\=:<,Үڧ{qRFJyߤ}x{&RK/?]vU1@O 0aR/ⷞRN=BM~zտOƝϦY0|'f#+ұ u_ȣ mK(%=VѢ%3$/g 6qjIKC"7hR'O\e`2~` Z05j<ƿ4׭|N󷸾C[n|AtxP`VN<կ)V֥qqkʕbf]/z=z=.jU-?e%nՐTǼn+<:\̝3KoG~me&p}K-<_9o_V)e.\9!1Bs.kkZ82Ԙ$LvxMq~W^_lHy3I?)1SXesAڱ ~~}x*܏s:Ѡ~C4hPnc| .+%O<lX/ס)Y?˩UREw!uo8 " G@J_ \2]<^,6HCF#N#7qɜq*t_)`Ĥe,O=S&8(5+I.*o( OY:N$gI3Qb9OrU;0W{WsjHx1F|M4a-1u?h4G%oG ڮ>1dbAmv]_ek_m1!]H]BEBNX,X/ uC{ҫ]GqPmCoccppQd".U^(KVgp$W}-޽9 Eb`窉G:n-Rя_UN>k+T^guмue]y]flqю0w\PԬS 6_mԨ֍ͦ5\Z5DQPC9RyxQw jL\Wpc_ty(S$sDu"Ya:P$TԨI1f'g[Rnr~,}?Y\ѽ9*ISY/p"sI d'#,PZlP⣛x.180͐M;T> EN[1&҂yU7v:^_f!thuDLuw')8!c<~Dc]dDNoz썞k.,(!>v,eM A;q%{Eq-zp'puo{BO-2؊te+[?d#_#ICZ,vYе?aIXE"3/ s"t14K^JWߕpnQQybk0 SiqD?玾8GyCmU}J!9_qeY+]NVN mh `QLM2levw>;/b̻ mb?f4rW2y-2dv+,q@@"\GZU`mIRlBLەhj&xlGsM㡋>O`|?_1(cFA?Fvh5tCpZ e{_@+SWn`kOn yoXZɄ-e{W8?B?ư."$% gOiևڒP*5(nX*勈l_nӐZF7ІWvϟED0 0;+Aɿ-Iex{^m V`T,D$DܧW}ݕNeʢ ϒV4JylpD;C>8CwSLl玔r}\[?G;UDI/ן2W"A)"r>݂+l^ToOU'Alj5ԇdt%3-+0ye҃ߣ巬7G4 I(Iln \+]9L5"BysM2%m@7vnN/q7Edq8*^%19s%=noq@NU0G#}\xΉbM%fHYN[br#CڹZorH_t?t5̊>m:KsYs-)c++ig>e)ka_;atG+#^DRnyʴ2-bDDF͓x%_1?QлYle! lƳ!ճm<7I)ݝf(jt0V"#`ݽEޢt46 GN|7ʎn_ldM9\E(hD0lUj t`c/s?_"?7 OCH?9 a_llj 柴G?90o7iڗ{,/rì5&nfCTz0^*)-`oz.ˣl:sҹe`s;wtWʅCbSV)??Zawa9c"m3eԋB|>I `ꕩ %XlZZwYK]=ބ%03z0f+<q}#hE`݅r)t:y пX%qEx1ٵwb[$&d;9mϒK7:U5i>O7ve9$ς^ig6韮c }Twoi"![XQ+=L0 8Rо-,saUv.t! Q?"7BKz37n+OH{cL;=*㭅[ T(3M~Ծ5SR8Z('6Wy퀓`]uZCB'66hL³(|y! Qգ9&E wtuHR qC /?'?z0 op?w?~w,EoB9^mRHG+ڟ &rPzT4,2<~8:z68MX{|}4d6G E-$'I&㯉9=p(i'9RE:xT4a|0m.VlBVV7~!I?t%muPK,.]Ƒ'[w Qiӓb# 5:g'^QE?@ FĈoa=igf;T|Gv|hWa5~?uGw+*$X!pֱ ('U dڶ@IDAT[pTۿ-P8?QyC^ȓ`%s^FJuH.awkeX;|8bTIS  #2<:qygA<%Z2Ԝ >k# ?0;^-T.JhgcV_щ3h_+ i00r$Z] չWp+fiTyo}X|Q\}[rPd:*l=½a3iDCJ\ܹi1*G'0 ڮd]t=^67e8'sL/B4o`FMh+FGԢ(^O?# }D!=i8guJ+[g<*|e.yF@ k'lGA,s]7{9DR.Xpg*]UץtEQkTTlј jĆ%[E` v콋ƊQ,6Ι-`Mgf;w9sys'}f%VPmX g!MR ø$NM|k$W!#pv({[vab[c#u7I_rmïGX*Ugte,o>amop؟QHgmp/]pמ}୾;:ha7^>v RFŕ'b@ UߴR_:Q?0֞R ư>791kG= >[,v%܄CCQ+Rchmso30tL'nYF76ayh*ZĕʨqվŨvX*YX}.weGaˆ5WKnq5b|6vA/3z`oܾ=vM/,)BHcFUjxPRۥmVn\Kp  69`:`A5goľ`6[k-,qf)H؆z?pğv~mPe(Ql.ՇI@& iW~x1^PRFlMп>MAxM/aD>Ψ*_c3gh` 8p '++$RV~d6iv?脿-8 0V3YV4e1l GbOiq㯦M4#οN "οCqןqEҦHgr ͉);Mt Evg.r(VsRo (n:/n% ]{E JPčaZaMF"*BPRoW/kچ@-Vgn%o矏GNW=71Ix'63;wwc[=BWKE+)~x&M^׽ea:z Q+Ri_ /ж) >n l+oD)4禐ϲ7.ExVw7F/:1k `r՟uMl,śW@l@e)BpXǡPogܸv6^hg@_Mm٢ˤkl/9tgb]0l6^xD>1!c5KxaqOE~;~oz?uZo ێ5fxRV5˭KpWq+Oieĝjq4-m *  $%^xЛos^?I3/-KMʉF}_CIbyGXХNGz!4ْoA,չm.cFf?cTa\:c^?2jQ$7)o遗 tHyTLu$@zslq>KZ1td HBR=j/uwմioWT/,y%iVKN7 <}`;v^ŵ_|T%ESvg+KFU4rkiTrڵf Jo㟋{݁ *9U[ٯ JP픪c}eTMWqcZӉr!}6,]iDGG}u"oloWT9οr돸ϸ,F MZJk8O`mIW1b 7=37]7MOcD>>wyೡ)Io*YU 1m"?CtuPnu.?-)GBcŢEX `qY5lyð򗗮 he˖d 4蟪ՋgbrԮ^+sPl ԷMzX?ӥKpbɫKߨהs&X/Q 0mbX QV-ԭ[9AIU,%erb7$[մx"]uBz嫰.5}7pIDk 9o]U/%9V cfmi$_,ÝRэT7@Wg`\Lf,}"a,IW2ܠ~K<)/(T2w+_rSch RtїhejAG>'q SqqןZh7WZ,ڿ;ac 2ڵCw,7tkȂyHh4|Ʌ$UN52Zr xNn5N6kM* x׏zhNRQIWAu5P#-J;Q/q| Az높 EF [W`Vm)걏q`뚔(E֞EZr~/B4٢a4Ҟ2b!R~~?|߼N_g=;^ %heJ{O?%w H(&xW#2 UvK8جCڟI\Zu.~p湲l/ -k9Ud0␞Ye}C OLu@>t)/xJ {(i*IQC0'|˧=+PT{|+.1| tqs_A1EQ<3);V_7fj?U}:Kݶi1gşO¯0VlˤwBNR'ìST'%147#ۀ1#?LU)d2:$OW-mIVNY^d芓MhIL?߂d5yl=:ED: w׮*xBRhL&8uJ're,m#OGX}؈L'680?;?W\agӽlYܳri_r4?9W#6iyh8ISr+4zMc`Կ;mD7pPqؙ`˴]njN[_5.1\ޤEXxֱcx=3=w?+f7N;eԡ[Tmlb)#1dHp.2f7yDƔ4)pR1Æoփ_6y?3nb«oSR`(XΝ*r%aH7_|U,Fehe@b#οqqןqrlLU7od'yѸ"#onǁV gjND% [LlPtWN 0"ALCSlX[~$kOq`ˣs1t$X0/!2mT/c"t ufr}+'箎* (s!#f$ߵJB# 4ą$C] quJp)l>yjXx4 hDtQun|M0SdQKN3"nVrY[hbþ`žmGq 28돸Oi +'rou#ȒOC]9J )[ ʓN' d> _tz 4 4I8~k"ov% lk_&(ט??a_wqӅD,\7Pd{J,'mX @S}ɘ(>:CiYn?7ni#nDh?_loi.q劈O!οڈkWTq%=g\G/a w#4 xa12)6St+W^'YنAń;mh"?h\:=љH!D"/?I砻w!%>5m!hA3Aiͭ]悭g21b NT DQbOND88\B\g\GFuSFֺZ$&Yyc@w | H6 ݶ~-7eD%O`#R;'?׃b cS8bKo/G}T~" e\B<2ƆT-撖ֈ?ɧ.S4@"hGM >7?!?[f_W\ښZs_Oڄ/yi3l~m=љi`''0/ t**7T+ PTŸ/]21MVbUqBvIcr{/Eڥk6rEۤf;I#_L!-.4)tb@GSRL7 ?/5EP(Í($Sנtu+PXPhD2p7Doh~Q;EòBhR%yNi(Vu[X*8t(M #$bٳDԇ~=?ڟEVbO!S q88fqAhݥQBw*%ZH\GQ)D:uLfzX$SmLtW'r9ƕj8(>3E;/ǓjEŨ^( _a?# GV?GR<٭:ӎiސH P(<4/otM'_ B{O?[_3;Î{c.{sݱCQcYu[5_܋[l-Z/V4}1۠2 t%M6 m<#Y%7@+U!X}i իgDN_/Tf[F4;"j][ M0#̩t8미 +/%naȒJ3oZ,YкD[DZ ` R{?J 暳p q-j~s*B"h:GZkO?v=D66&,o֛Xm:)&LoiLp",?cU7 Qb`ktjPO*#ο}&qM50qA\ٗl ϸ_j'mՂ6OAũL/gJʷ`QNUp6 &%c9}B_cUߙL+,'xjowR|c>Y1WyVfmM_65gM>6X}@? )wYY'V 2:W4#o솺kdDsԝw7 8),8 _k3ȟm@"0ʰXqhN"?q8)?;3#4aON !`TO@Bna2ߣքf̟+5$-e4c9ژZ@1H}0kM$$yƿ廳e_ƕO Y.'mhuWQ;Xpy($-?4#)_ŬIѬﵸp^V/)evO۽Z<6fpm7<.O4rQq+"y&xQ;>*E8sBW).gX'YMHK:a;hX`X"(#LtzFÔp,/ڣ\X#h舔!?_`Hl#o1+#?O#ο3οCLqןq-'D?Lsl—v#Kֵ ’YTm,! Ljo&U)8%LHՙDz8hhHXX.˨4g˔vґ̏U0 OʺT_P^3nFV5_+ZVذ'k ]ʑ$hodB~"mdՃW`s7 jG3_*ߖ=e2 תTnlTgj֍t8 hmg'l7\u N巶xv~hOOʷNQ*fʐm+}/Jڮ"'q_qZ/c Wq_1syӽnY6ɉ/L@5)3߮fLz:mwA]:YYĪ|tLx7nV _7#BjnlZY9X6y4/*jbV[cQLq\>F`p53,(54h: &,Gqcc|-keܬ6hLNsդEDG[,E+I={!1:'vnU ^3b<33kl^+ Рuk4;v<5s_Cxʘǟ*jWrP'@8ܤwFb2K!ӎݹ t҂u5<-o53?o}l:A!uCFul'02aFNYlr |ݱ[LSWeuYXM6o-;-˿Of?Д:+â0gm] A C-nl.j6%|6k-h-wmPsĐߦ.rQLZy$ȢJ@u>k&թRcִ*/ݱ)@;6ՓGॷ>h'aKyo[]bk!|=A(1^yk$>Sif6`HjЩ3qY۸_`FQX>'/Te}\ؼ%*D՘q٠T^,*L|0vJI2zUǯIxX 3OPsڛ`6ҒҶ"4Oh?6_؃7?q8OͶ;?JW\w?hpʲIw#BՇ4π4-GG9JʰlAH )fzœM L0>9Vn= %؎Na&фoAuń*:|5r/ )b:fOX^(X6'nz$Zv뎉+'މD͊XAڷ%b]b6"X)ջH QX98|u#ڲ q_pԪvP_~?pUŷ.m?ض˿sǜ*>ĉf8)A4ҽĪׯD/S5ʩƹ#\m\?1]M/RZ؆v'|6]?8OUCm\,3{@o hE[1uŬonݏ /Vdo2O\h4L#_hV I/إ_>]qڣČ :u >o?ԣ2MVTE}ͧpbS6 &wOU~U čc.H :/\pE?,6ط"ҡMpm}}~rHh-'܊diON9]@P s?u3%H^YY*U_Ivw,ob% dн;k+%_<)>FIw4E B0;|vՏAB6 xhۦĊo;^X 3SY5v Ђö 3J/60ԯ/atlA+Yߤ:<l^Z@A%/ijY+p)Q% a?>sv66[< /.(7%y'LdpkHp cXB'uff+=gcW &艾}z8{>{ q#"4{a WHiIO|P?Wګ%lQ m׊*^GhtSZ![@#h'qoqIwG\iןqmNX/6losWmM`8srԹ'0 פCcGN$QS=+ Ũ"KIȼn p{k܁g}1\K0Gr<~@ z9|.ybjbXw߿@, |l\~?v˰-(6W 2p7y H}7v;^l4J׎I'^` RUNָGeHzwƨۺZotcH)|fampbWx7 G^1  c<ؔ|k#N7O~Т'Zy6\ri<; ?wL!2ulq5oND;n1cZu5's =m80|[Lݥ .?Zzk8y+g$`wb*_jlz'B.l4Y?_}Lߓ8)8%;0s5NG0V;L6z<ҏIPЩ/I2m݈/}_v:iunF &46_i1I)˴]ܞ5_qh翔|%wA)$nXBϸ6v+8QR/ 5DׁV;˲pCɌ5"LPg!tb2տys&.Yŋc"}aFQ)Hr2X"-o>+)=nz ngw5~.hTQh0h[J:IFN4告5 t:݄`.t>F ~hD_"h'qqP/لϟ+? #?D\w?pnK_l^xC𡙛S0'2mnK1?Nܣjc1SG ly 4'&e߁2z܊/sݻm1kN:ṛOq.LI[-1<@$w`r(0@Oh^q%Ga!#mh~ka8ZZ/KdWE'3c|Sx:_3y;6Dv8zࣴcO|&],Xx¸gokaydgfnuxWJi)|_0Q=zǸAbjb~~k;w 1~P\s|ӣ=p%pnC4k &)d[RН{TFϸU )lw˘qP?9谓[Ew06&{{5:c q eþbQۊoq(Y9(O]Ԇ3K,9D_GH^ Rɔ&pZcF^#p=T5Ln̾W#塈;Q͐ !_gdPH-x_϶x }tIPs[[?hJ[6 '2[Sޜ;zt~srQFGT ;M1'C0`y} fđx"T} DNq};OO {_,o!Eq _ZZ)Abep.ESzERh>{2&$UfTzhK+a jX~&c4ZJ0!r_`-ax ~^,:D@:@\!0aC_㌃Jʟ0v1 01#u!?k7}/nJ)Y6%8LY%[Jd7P^|:ϸEI]5hZbgIלU @xgnBcj+2fŒ˯bW_cXZ[}ɰl(1j"oRfbǥKy*̩q;T'l{vKWłsDhH%Ƌg?;\G#I#>ŧx(wI/a1ny%[?{ _$pG F6́(&3`w?eF%Q!/: o ̜9&LĄ0u ,ƫJѰ6+3L600T'`kÊf6@:!MYwq~AbK3xǟ8Gq]fjqA+미w\_7k81}E<]}8$]@ex0вΤH |Lw*@A|,{` l6%J&/5Ξs 7 =tb$³{p?_ &@xZi]w˔[&2  կcp^G Oم1zL"夏ӆ"3-Qo9=9oeDG*eXwj T0{deqˡh8q]slO{`o;ap_YRMk蕃iQc6p_;2!(z%rkǞܭzu {(Ҵp,0zuiyȱ8wa|sD8ypI+ߩHM-GYX9b11,-]|uA nͱ `)2[0\s؂˃vGiO4V]YQ,*,^ߍuAv55Aux.\BHvq4"lJ|r>zVS"%yq`mB ٞo`ܻ뢃80%SJ^k?tU!^o _U~{V/ Z 1~T#?9 W~y{Z&%EyX!V)//$?h潜;%iӨxD1|= G< "EpaOiiND__6yQd2 JvaxqAg iO^>)1ɰί(1d{I&v%4{4ϐ12'rlw ѿpL]&uSAIO:Y 1?ИgߓX;ئP͔?$c`$Ovv/`fgSk1t2XnyڤZ[m U՝v$,I7`r*"G琩+̓yJVzoy aYcL4 'Ղ&`7nF{W*YT[2]XFO3XNS$ ߶|^voXZspPZ/GGSK/?OCs+W_QG\1?vT/M9FXkrZeB?7u4m?u1l]? < "dr~#I wsYǪ LW$įUp'xJ;5 DS-P o~_lfzq23Z % IB-WOɴAػeXZ]+VN5eߌ(/pş2iaϖ 9xtM2mlFM';Mǫ=02]ȿn=ꗰ䋧Hk̻$qʒǨ~6ot"^Y1IR\d9,=VY,e.^9{7JxCo(p qa;n1Vs[d ! ԝ zL$+{(^5orPtp}I;6ɒKX^@> ַV*$*zbۈ%Hݏ߬2:a_n^ vG1ѿV,T̩t [qЀg@ d&M\'{%O N  r>:&3sN D-eD,?m^x71, mwt osi]#$ȑ{`M<?ae&%`QeKgڭ!Kjxڭ6c/c"/@NUoFCV)?J_0䟡)c fRڳ,93A/&5%g_&2SM!y23FeIE^촖YBT1_b qln8+?9axdqןq~} K_ܷ^g1oc??L]1\cخ(-(0cT#ɜ$Q3*Q2X#EF/λ%n'$ k^h2ܩ漑Ԅ?I aYL4שl *ꪉkX 17fGU#SX,˱uqٯ+Fdqt =2tXecm O||jgISO19!ioh4Fp`}uFR~_qB11gsq| IO `KOOtsw?Z+C<@R#o2Vֿz*0u|L{R|z-9bFK_[G݉67ɜT9B-{9;>7%4UaWN~UhbE3_=ZKFIH6Ҋ K omC~ ,ǟD/֌O 9n9yOo298'D dA2ьPYVʏoG}IbVtس]S~!mi+lboԑU76s}tB%_&_I7^'T*,W7(:>ǀlQuS:I/U}cS( jUZҌo?#nC"g[ “_wTk?'Sn?)/6I@ir!isܡz+EQԴbco[c!?q8J挚ϩE.b."{WEH'tŞ܍_}<. mp )?&tU]g1x3Q]Kȑd" t(t홏z?R 0N[7Kȧ?'7%p @"\\BpǺxŅPyF[s3R`ojmoy1#╁g>'aJp% k/e(f)ǪRVYzq.Saqχ `ԯ֓7J])p?Ȏ_ȗסU6QN1K4!Nq@.6n_{/>5FLƯ/ݱH[jͺ=%O`rqy9N~ -n2XbzZ9t1z<ȗ;Bïƛfb'x >܌uV Ry"Nm)7jt w Դ a6oIB ˅k6N¦?;/7&ƳǴ>W>q V˱|<5.3&#@*k8LhĶQfY(ĘOO*̈3lm)ۈ8,bgϥtc/J x|DV%c5RXcK>e߲iQNN^ GU!^uQ~u{;)߯٣Z|c`&%߱*j NPfތj\9g@]zacn S81_/ۺƬ.vz|qp:ܓc'w4?gx(~;nsxt>)H_5 hRjl@o| PEZN~A`ງ B!guG 8n5v>4cɟv,) r:6S'acC-_2)GJN|~\;^n9ϯ> mYyr_6&GMGp/ƨAݩoᙿ`6I]턃O;^z_@Rp ?,mˎ^Ѣ>fK-8dKv{*O\(A41"'__9_.; [6fl8=_GB"(aI1yIj_):v U1"u~߾ QǣXz47mbD-srqZ86On#xhf # e8yP'R5įNMHFn-TV&r6c?oope3JsĥHQBAlI(޵^׍vo;nǜ?Gt0lQ'Zξ@`b`Pz.&imYe3E𜌠lb_qoWqS\3,8/6`ÍQ~s٤tc!`we6 ]Ra*ѽ˖ pY5fz`cوL9d {/`9]WdiV'2=27eᐁ3Wک8W}6 #tN_j& ̊&,|^n779EVy5 Sm\;2FN:cKJmJp.b@llF"yrqb`qɓfZDI۫- AXk\V[e"h8ǟ8M5q6>_Dfzuw\W\w?"śtHZJ-l{w[5 `$}2z|v'(T$oiXzOS+(c^>fL'Dq; +<{}bpUjB$qVv,DAoIJ2] ͊]D{h% D-k{5Fł4* bE~C@qwξ{A(ϐ_?72aI#柘GbY\/;*nHcIC쿵TЫH8?D;tR&=WK>Az^iPX-?LNTVݧ?Wk6]g]u.w3|?گNgڿm5:Ϲ`ȻЦ6-=bgM3te_,ԟ,&|U!7u [T:A+~,S(!?aBO̿кJ󃭻6+֟XGb?,mv9lktkh@?N,GrՐ`,Q(Sscdzp8-m#j`gN=2=ᬳYjcj9䟩<1lX1R1ɁCmQ\0hfsM K^8z̯gV@VAN=˓[H:d噫EU_<m_cjpj&_ ?ߤs%?f/2W: WKn4סȈ2Tk0['@DWU" kyEگ|TPGCy9aP67V)FI@8CRB_1@v1X+֟w?bANZhHN4yђD(hrg7 9H```Ŋu#\yϲ)&OgFlDم̞2b 2-?SOrt #OՁڤ |w`q*2U *XA?/OߘbuHFJאtw?beL3 bǧ9&D- "do3b+f4=r{*+=΄tVqF Un9ϠW".E]1zu"ʼ-` $$a %7 ) U%M>FmlekQO2q(e"xv]}{J 9I*n!Mpj2 :׻.#'e`}h_I!1#_w?bUb?c&'97 ?mx3j I})Ow%<ȷm/vh3OhA?g#_؟dxjY Ml319Yd%z]lӊR:Qxwڿ2EOUK4>%A? "OߘbEbWbp?,E &e1aߊ+Mqs_]Q;ϫ9t̂7l H=|u$Pе deJqf(OXdxl.>ZB/ yRQ"V3'C4b O̿ZG돢bkXf(߱W?c9{5T%ecv*D,.b$cRuJ Ab2+M_ ILx/DqۖѦMZLS`Foؙ4[A6{bF} `k5+g?ۚ\lw=T}5~hulRꩩWCtйC'oF=Mu?RRܔp6*[¡t !пat7D? }՗>b0b/A?e$_;%_4`g؜Ԍ/M Ks;M??TƁn dv"^k 17I҆TƋ˜X@ ^s|蝘񍷟쉲~9t=ۥK_qc{|ԀyTv,lzcMvs?nQ6]|u?Ylwԋz$Gs9RyZaJ,{ǙtV&Jh~:L7/Z#oheo܌,e:oF:S_ujs9~A<{):'?'L<ڲ2֗RhsXAldߘb.r*_Zg۱Gb?4)94ك,&Y7x *djE>Z$򢏹☖ce^Tl#VX_PV0|;!r#)Q-П5`#-u>a{Fަ=KtHS͐^dMxֽ_%\bkK:[aYQ^aʨjM<5-W[ZAD`}Ez1ڮ]߾9$shQ"cE;G䯸n oG'Ԩgo\o~7`_jW4VG1K_ :'skp&J=D!xf˅NH UșeVzMyKpҠǬhߘbڀ ~bX;WS_hqhٔy,sgi]X0 S)^wØnN:*X ew§W,jhi]I6^Yc8|/>-,*ۉ]DSVz?/?1ղÕBhU%W /.I/oF0X1;C [SWZoLv}TS&D? ƾbxK kZv[PizAVhrT*Ƌs[s޴۟:klHO ")o(uބ GNŠGZ~-ͤ4]7ryXlk16W#l/>SE^wEwBal_q% Г1t P`Df˵bT?yTf8g1n(PIE(eSn^} M>@,+g?te"ay*/OߘbZ!Zb |6 -n/y3>Ǧ 72YR[@s@n9F>/@*&Ku20Iep:t.&jp:rc_^`+En>=Ǻ98"d_b-kvn%RR(Z[=c7'"}jOI/o9.RÄSmAϦ ʿ6c0 iyr3 J!=;+t81ǒ_g=s.(ުI PoBbᔅ'o?' id*X"֟3bCbI5;/ԹfA>}?(NsXE+KŤhfy^Sggu3@wƻ/<'GN@maRko~J7ZdZ?kOÞ&w*Qա-:kYLƄ`x}h܀Yu{5tn!yL0ԣee0m yt8FMF?6farf9^?hH'o/ j8 Tjvc{azs5 /o]9b ztYs+eUЅN-J W OSO&9Ub~aƽZpΌI}G)rS0GSCb룣U)Mݩ\e4<͚mj)cx~M zoj-)xs1M*CB&^=gUѥ\ș9Jz|2~,Ѣ,֊W)oO畡EegLBAIQ>| <2ޯrXq'.|Ϝb )_0qMZ4.`䣏q/F~~0a:BTb7vw1vj-*ˡ<1Zl?My,@>Ւ9gbZrG^kbV,ѿ0j4wj.?kCq'FN'躪%dOHt} ύf;NJ2kȮ=>:>FPAZvMt=D)]v!F6m|j_=>.'R3>yc D<{mQ_Sg:՛:8yg"TTߧMZ9ΨKO0'ԋ [bzSU?w[_X٪=7ۯ{ΡlJO9L{ԇߍ^ @VC2[%3#;&͘ T4j~|~t VO*+o`mP7{qeϜ0zmcC聎?%>3x71i.)[tZ 7;UXfί9L%ħͶ1e|M2a*sI٥.(ϞDS+gkLX*Dꛐ_?aco?bXkBW?c[%)_hΡdW\& g6K&3q>8`<3v /6<:rldYMy|gW9$5 W>@smfvgQs߸+oxeH8t5p3 e#l&ۦ7etK¡62ns6:[q,w9>{ t)Bā ]ct)'g4\7"_緛߲=8s#.o@z2|tU 49$\ȍ\-. W$P~KVƟ JI{F<*Vz&c ʫԋ)?e{FLyXou3>ms5;9u띌/ȓGdJ:}[ CXAqRLf}Wu菱F;@(b>!e{9>é=d} ʋi+ CnWGpЭU' F鍺aG}38l !t ;WZGiĎ{a:ۚ;mA_Lǒ[.6~OV=]&ۗ::IHg@oϱu]pTq[Q&*uîyttd5ic mzsxȍyXMIc{IYU d3>p)ɥ~tˮIn]paUa?Y1u00?l?tbnN1=N۶Q53lNcl?|ڿY`De5O._ۡr U |^%<z+mz"C:/Cbe6$OߘbGb˶%c?4 Kj̽GR,%y_]E{&[C:ڔW݊QN83 1|N?n0? {sBJ:}ԏ!m+~؁u˵k%^<Q-˵կrMXzc1gڑ;g!p7G~"1ђ*/q&nIY-j /g9*IDzUuBN=?_ǡ{玬6xSlbot!ʔeU-< cdѷ+zx:]&{UZ$UjOn`)1myOײKy fp)5H f>WhzjڴAe˝E^ ,7 _)zPK 9G& 1:υҊ}- o*͔<Dl?Iyv6/ϑ{?޹n^@evҙeWrH*.~ /t{y dn4!B=TW.Sˬ=$;rmYLm;i7gbe\t'\/kcm?'LzC8wM:e4rI^uZ<0>or+)96A~kfcyhAf{ř7zw! 7<>D%"ƟddNv 2̅m<99=t`TE[ƒ>Ek0cV{yRoW+((O'՞l9x&7&(]R A/O0ShHG} {<UwlqoFh'8%I/kgl  G@#Lm(G73./ÀWOm3 #zc+H 3F~5NDIw. H>yH>&f5qjX=㋧',.#p͟NWއU (Ky,arnKnKu1%Y1G9| i ?NJU HAf}UNUt,SQF㐫9u=^Ǹyl~x\k ݩ3{|"p2T)ڪOTyusqmR._ev&?og}>yf/^)RmݮïSEz30} ̸rB8c0CO?/`v< O;uuxgM8ie)xK Dx7*Ғm!+8 sBR5O:Oӆ/'YE.[Ч$_?Y?ac7Z!+֟YW?CcKbv_kAfM|"?Hpy{j'<^Dm t'pҹ5΀p/N[)Nt !<ߨ!Dvh9sQ_־;kBo҃yې/iN.adܮwêmmUF_s[_$"| -'aCkUW^'X[ɗ.FcCM,imV7 æӷ[1֠.v9aSY:.;#,cn3'cLI.3Y:%Q0oe7vX A8%ˉ'a+Oū"sXQI(q?~׌xv'~;qp:}rcYN#7자Q':ƞ݆ҡ`RukFq}A?I6#Ve&eo7+켲_wD|Y;qS::?#IOǰ3|"m]I1ڿ/U,m򕗩FR<Lu*Jo.T'̐0<y; ]7>i!= FQ>j?>?cZ|ԣU䥜O+]2<檳n‡*I- :Ni^ze 1fEV| K*Yb3,@r`32*Oy_+w*UڑO02j4([3GdW;a` fq<2i/)C:&e۩? ~YoTYcu?leyoP-)G rlCBGT-s+ ξLGcqɯ^\qKSXíW܍eE#W5;"2`C%ᓚ_Pd X!wGNO{L$gUc ?-W, U?/_؟1h K?$ lX;6 ز_]t9 gƲ1G\ke1uYrM\Ƚ75pӢQ1jhft\ÜR[WXYSV˯c?n'F }䍹5rO9}9Ac B! TF!eX#?k$H'uAS!px*D_EbxHt-s1Y?6 =(9_8Gę?gx#3#hD̪v>«_Y&0~<(V5O$e(M'~ʪx"|ēK!M: /ҍRcSS+YYR@~.|?úߚS[Y"at-Q,S@_*T=Vj&.xLv}eaW;R*yfφʂZgΝb"?`; 0^lӻx׌XÑN,$Q"/EL19ZkN#ӡȞ 0<<<|<|j&׍΃G!1+_.0 "nVJTU/oT$Dÿ1e E+^bx0D!3 C%YOv܃hQ=t GCeeehIjSƏ5?ː(:Y!.sk1SL-acm7q!s*uY\+V]5L*WCsľXXfQ;^&7e$e3䰭wHy%T?«k2n)* Nv' +ªmP^`؈b A_28 7.v4}k+XhaFEXڲ1߱4_o-Pp~[5Kbl-`_r_7Q4=W6\vԖ&}ճ7Zs-Xm`﫬rC;⢓z]:g\y4^syk@ O[sr0Լdy;0w9K./ݠ7+wo7HpsiFRT!B㰼 Г0ߺt& jF<L7)S(V4%EO+R ^7Q1/dLжzFmtΛ'UGR O1?+OO< ;F|Y(L'teguǒ*@vVߪB }@=ᚯʤ vAbG ~JHGP)UzXi?ɝ> `JPxQ` vq .bZ~A豻u\$z'&<'}$k2q/\v cM* @C+? V:%+Ԍ~(sB%:*b7W!Z_)tauA 1}Ce!\y) Jg׾kHyzLڍ„Oa7=gj2Y0qJ}h$eo"^Y+ԗRB,z|ʣ{cӊvX'U;㽾Sگ_եcy DEC JWb;,׳H_]WOi~խ3^粖Pƶ*슠y`T>bSٔl uw9bteƽ}uN?/Ɵ̅Ma$gl b0O̿ZpH/bX[%hW?9b.mLqsm FH rٖWv J`F [5?z#A+«X!Co saxџz2qlq1[*9Xv XJکmw\[ȋdxkФe0%FxqG3OB"8GJ-+%3ɎP&ݙMpd:$?CÚcͮz՘N_[~n605}G0w+[L~21e5Ouo3jMRO ΢֎jc&sT%VG/ڭ]wVA}߮bho=Cy Fn>x/vG"~F-n|BBO}66xORZuڢ0?N_:OG)É3X($72zS$Ckt`|9ȔoퟖOJ'Ks]J:J3q=c4hS* %-q.ks+V{bk<|ZȀ@H &Ng0+Of<|j })F'd &[U_cSaXj VTsFYJ*65&Xc; !?1 '柘ʈGw?bAaS3_GnAAn3X1OɨZbqw3a O8gꜗ8?:^;K ?(}:^{N[g:-Ήg-Hs8lTO*fqʜԮύoz!^X@gOd6U12i 29'EoLDry<2"JE&=.bi]JwQ*,Y W-1v@]7I?GjrL *wtJ ? @r;6^S[J)wfג-I۟]QoT EUp`3Y]G-txiRe377CGJU<p~yq!?@9pg:O5J~p >u~)d`aí'WS%NT3z3OЬjhz|Gh/Eӟ_-gTecvUٚmqeJ=V DX1aJ-aȃSSqq'AI.vpa 'إDBnH˲%kO,Kjho)(ey:TJXk!7;.N/ rGW&J1bZ`6? T`uC7A̿\[ÖNgi"+>;n4Pp5F 3YQu΁tr q-/k=' w2tSUwlӡ5:eTǍco'G K,NGFw~dzooU ,JB\msYF }i`a}ώR1&E˿#Zaҟ>~\XQ51p'/Sg%|=fLw) |gA 2˩% <uv(8'Ћ~ύHU7۬nAe18Y~ύu5x5їUAWJ,$/%5CIĢ҃]à"}ԌCςgF&{ AwHߐ5 ^pw+տz+;,FJ/:zQQH~,lDXmaO.'n".˟zv6ynП0L2 Z6(J $E᪪"JÄgcZVKKx +LYBpZh:@4,牛^/hAwky+oB. ?FxQ?[_ t)6"b 7#}u$I"VбAGb1Z4H94fLcxK锩 V>b͆L `2{MUn͟ #zX`6]nJp8f`Ol/r:OrFAk4akHO$*4 ZoW2OTa!fЃp|W5C~!O j{.ըI|p%u)pԾ߫MN?93ZYլ.1ۚ6Qb\={ACD(g8ENY;ۛ9SMk9mZƟUp)N=WfEIZ%b8+q+bq V^s_ogü375bj))KLz2%;յ [p~k\3}g|\g( Uۭf8CYd UۭHX,nb$]'}KƟD>_1ĺduI6hb5 ?e wσKQNá N~MG~y1OyFzlMh !%5e9aOgq!"/d' iL?Ia},Qf3̡he<螫J޺֙UtZ]Z,> 4(N Q$g=o&/֡B[jŀQoP@;Gqm=)&+gɭr6=2 jKEԊbb.H Y59|8u}^}θY~:R=K>3sdnb([aCqʿbwlr?kc{O¬ү_p\#a4QWd61hӠ񝣕Y BIy&4;2g" .Pit4VՖYCF7 SfagbA7([ffaof<):h_`/ ncyˣ۝򈗯h~UID!QqD**dH: ?x~WAyDŽd<^QҨ^xF,=`3v?dz~m]U9hswP[ gtGe%!j]uZz;v*_szss#qUo]5@S~Gx:]D>VG  LS~sd̫Em6$%w&6FI2+J~R6/ę:[ vKq[&| ؓRlX7mMy.ykԇsJ‘{}(:?xI8qqNאAfi4~d})9v M1j=e&SNo*tWzfu1otv 숻 ?4]&E@\h+;@ţa6f Ȼ}L =4RpN˞ֲ賂d'o?1jJAH XiXkHp`#_Tr ;MKsU`οĖr1ݕ kYc̣m˭6FNW Wӵ=***~XcpYgaZbvXZSTΈ~w$%KڲieKԨUVKԔ6 ?~%Uq P<ɨX :e]^٪Xs;ʾbgv}Z7І:\Z :d\y+Bse{Oӥ c5F?%.~Sï{|Xt]T~ZuҎ57tI['>zI̔y½V~~`,p'Z?@%Q0:v诲~#_o բAK(+_9F 'm8~桰07p3,. =QJhKS޺ 69o֑Z+ :{J #뮊u.9,Tz[>'RrcFnI8dEʟ =K¿h˱-]Ri9gJÄ?gUf㽎ŸAm$n[jozӕGߔ:|$-UlP&d~74PւQ,ʸ!c1  t.ۋ +Ǿd[* !пarz'X+֟K=T쿴7Uо!owņe3pDC6MnZ^V'We(̏QNѵ Gq*PUbR@E׾]K r3? ^r17ׁ[|TfxԈtyZeqR%Z2j\C%l(|ׁj8| nk؊[ o9N %+T:W? L5, ޯ;wTFѯ`Y-Y2$UƪfBm}aHBVU6XVvH+RMRmS.cd]U'Y2>ѩ}y,Ty}F",qxx@mg=޾IV0]1!Vlq{xVV># <ڨ ~M>dc ?/UvYpa R'?8| xIs8@À3E3GDKO@J~+?ƝoDƛ^+Xj_j_3W+`>PeS^袳q~w>Fs: TYƾv9WPb5?U#o-"[h<+;B/fCθY3823nYXMX_֓,)%2䡷h/g;2ޖOSw-i3TC:j :mk7J eΝg<6~8NjQW]Ibm&71[w@etTV;83RQZuFϞ]>7~zL.fA%MnU M60_O_0 D6fEϣi=:]˗aDΔJP>k.+--UO758cl(XN.\WIo-y0?/v]me ?PJ<7T˴¡ ? []>A5P^3 |7Vcc,Y))wN&H;`c~KeP) i˨xqCeq)rgOHS"#XB(Cb O̿W?c3vKB>O>h۶-@C_#PiK_TvMYf7]ݹ9KP3V%葳zVƘ^**- AhI #ߴQ*h% G_ong~4SVf7Tcb_f"{/fFcJ_?0/StMYP3J2:4p r\JN57 ^"0t .f`wUmTN8쬢N ȏȔ BP ŋtA_r 7柘9!#_Z,r+DFmuO͸$!mN$Xhcl4_\Z3mcor5,-9fiȥ>8U ^Tbe<]<_3cJdՔV=Nh,ç%g St0-=7V擁{'\{C/`W㰵9/qi)[e0_؟69}W4yNP#Ks˔d)?fjA}AʵIGOsqkU00X T|_?ك?.]bcl \*w?bOc&ܬCRMrəf7_3꩔xւٜmK̷Tr"R4_^۝ R~RF7C4)[/<^b")@\igb71/gĞcd=0NwUJЪ\(/ݮ .HT'Jz}\261QFsMN) ͵}aPom~Ko! !пa1|-.bXVC?]sEbw&5tD`ݥƘ,a)Ϧ@ nRLgcoJ%o]Bmx8[A˿Q71`h_]n{EkJ~'Oa=Ǿl*c^oL? 쿾>pĊm2o Mq|qA KyvcE,S`QPKR*D_РE?_-dxC,OB*g]*L'xӶL\:nnJtQ%;oC1'X+֟G쿴iԾ2C6iA9預raK%N 1UN>Ua}.B;sQ.,UQC[b5BW$Ag'/ӭC%iuRWR :B!8 nTPpyY?j)@>U6U=)iWY~GxT^CNߒSNHx׫P\ڙ-K =/[E"-32B|![_?2ae'XKmbtc;>,mhA_nA2lE O%\ɧR)BK*sXRG+mtMbT_!mIX^Ć/K?EǔCkC&W/cK44y]O`,k0M3V΃(IO ,uܩ0bpz2K0W*% ɮ 7柘cSbhj_?4- Y&DC4H#M78](r(@$ֽy&ar*U<C%tC{"&U_? ]2Z[Kb̞n&R|h#axl\nG_q 1kJ2~c6MV%U ~"wHb:e%~[Py hbUJtϬlK id 7Ř՘2y"Ni[C֘>e*ڶ,ݺ巳W=OIS&b2lYu(/o -|~1u҇dLUJ"_]u[6|ys:&F+-^8{bb?5uFAo3?|iZ M +13fJ@.Dt3_b5XLldޗ A| )I}I B{Ҕ$ee򗾸B#~Ɖ9|h<%IE|nϩ#7DO[Ո~:kD|g&2XR T`+~9kP0op8 alV<$VfWZK,";X" Wzj,{2DBr~C88dbɞC7柘Y =6烰ѻK;~}OC??żl{WDŷ5a8zxt[ C~+mߙ\.]ļ=^oWjb?t/ yr5556vkt_X^i JgKrohhY0fws)ݲ%u3e Dʞ%QK$yٕw=S#WƙD_?<~OYaL͆K$S-y lGM>w"p6p ~Qq e{W'9lSy|;41΄7kٜGAvJThʼnVDG|Lu<*ӜF^tbuͶt2īo)4ny޳xЗC1'cpiǧҒ3q `e+XcīK\ws+-dsS~ŖN/agkІv;ֿOT?K!_>m۶嗞\GSZa,d9 L4Y X6rR[nu5ѧ `7TmE-[Fy鋌sЯbvbkw/w~jk]ԝ5sj )2n.vu)AqϛT;( EzThdMߡxuds;"/w5O9}DKѦ-u*G{,ޛy~I?Qڴ̆gM1$I&mڵo뗡-s*Ǧwՠ\pqNԗ6`2d N zBrtEk6c O̿Ǹu.w#T|ibލ-).2/-Gw޻@Fy0w0~ԿqGaԸc _ZwmT3ny̋oc7/?M.tlHsq tռi.scG\RZd0sIx Q7N܉VKEBXԗkUӉ_Eg ] ӄ|d+:9WvTaaW%4*ل>w8Uw^/7T\?.~C\MYC4,RXnkJoeiVƄU2ml↽V Q4n(|3wc=#IIcdU gQ4'}ǻmniчq6P/J`+vHMA {u{C21\a .cܲs/4|=o$`XEͫ8nUa=O~|?u V?/$[7`}/yU7X=]]vr˭7 {y=~><~ T3> ?m7=xz10߭X'՚Mkb?>7 7Wj\N8[>6Nš}.(C!VY)yZp1G*]}V-27Nz(V?WGW/$ 4u!cJӈA0Sa{t] oSq-%:R,9C#0?M"&,Keٻ+!њ2iџ".m<+}e۾'e.4jlR6%ROJEI> ᕖou K4zSɳp "S6!пāʘZ 9ܡ[?PcՎ9?Ţ#{ဇKvxpC/`Ԅ031z*>0{-cՅUF3(ehޡAZ1ae Bd3.:3tG %>'Њo~5)2=k?ex$mU:BK t./ͷq|n1j/Pۂϧ=YV-vYCF'E?!Id Vŵٸ,˿-i::1CEq_hTlDc`O0$6}H-f#K%SɑAb0 iL7.c??B uo~'>oV Z@yK}Zc8+ľ Ac٧l^WWp R}pɸ_ߊe^뿆UN8xcCG8f 뿲qOqɜuyE}97[s^ qbT oǗL2dle"W^d\^5_wg6bHk,CuCpύ{M}Y]Ǔ*Y9/ ߀Q7!L,yr2Gx8>-ѯn l {cto8BM%؅ЊSݑESb`7/۸7M?kmз#E[$@$o5,HV+ q6`޼n,@Jk?g /hנ KM&:HpmsJ?/4#iZ׿>4~2I?\:4}b?oS{*}9ޫ 4QTł EQ bC7)"(H^C($|9)_Nrvgg>ݙY̅&*is[X$me؞<%h|#ۢ˗[̳L1?~[΍R3 '[￟'E l 8jmR8z$eP%iݖe([R r+v NOؓEOm-꣈M8cgq3e-~^e D+vMҼIqzgm2 +OPjmAG"V_wof&lOhhFJrDU\;v$A7din~_՛mn 㟲i̜M22NnUFX?Tj*]$I(CK!ޗ+C3U?,6;ͭ.UMZ4i%X_#.*,?,\Ѷåm,uȮJ݉%?~_~ۊ PbOFZPY}eSČ3}vM&º(!2So߳WN24õk*X<{橯'UxYT5jWEq#G2s&QYh~F5_|܂7ePB)T9oü9s|nSPedzkXH1뇱 شie:(l+OԢ-J6㕪ہ馁\pFRȉᑖ1Cw#& `NNhoFn[yFdu5ؑd QLYT:$r`?rH[m=pty/TdTVN;6?v`~{#EQByTP y) ~Cy&lޱ)qHINK[T9T-W [;gϤ!xQױr(V9rU-EJxxeksnC39Y ՞zTv(6Z+]?> GՃѤ=z@~\Ϩs.[Y0է:7ld!ӇPNܱC!.sȫ>}an-xOem8OA&z  9]`wl7Qh!˝2cſA~ӴG?Y"At^*_T៻Dw/`^-Z=ӫ]~9Vx9 j^5l EḮYgn-DpF7PG,UKSs"oT᳖5a3ڿ;&-2vb[_#gr%wGV+$`!h~wtBL2Z[ ^T?ŬP3r@tbxxN_c! G3TU ,SϟYtHc1p|0mk(f43Ix xոqT#jiL_:5<7at5/֓܂LkG]? gi;+wUx߱lѰ߱ lQ6Yѓ]0RFƮXWL(ӏ1m}ď3IVw;K Oo'U-mbCvAXl}2/sVt~7kMBoOqٝX"INWvҽA un aS Z#G߷O09<AfC\77-.DWVMX"Ʒ:[&Wsˎ(qL=y?=6\/}nI<9 ]'|&#a -qECH/xVX[mM])P+yx)KF6f&Jt.:~N<^l?7s!GWzu@ ҺazFt$%t7 eOy.( t q7?g=iS*h/R~zjP}aWLg3'̭xaAWf`vc ?1bshW[~|uet]K&m`JhsE/$7.| y MKK}ީzoݝκ"YbTCir؇I6 FE.9b[\an=^7s(+m$~/!Gq-$9/yB|,KX끎7]:){h6~oL%Txqՙv{,, #~r宊ۥ/Dq <(b\ws-z J^,5!pْHS&1IQ,jGHF?th>6P:V)˗s-Go*6-'LGKD;64\/lꥸ:NY6W<F>/ŇfL`PL]Pc/eMcQr~wFt/zp ;&L#~ゔ&CJޅ%l;;>w;e6F|h.i~Ow?_S Y怸@C ro\I8~yNKΑhԹ+;ߘ c;@Cn+>% j&)zG&REK-n^?o6>n-DodHľMBܓi\bPF`=hP\cHө }*nOkGJz&4c(/px(.: :6Dz}*t鎺`*$TKWѧy"#~]%cE}'y?09|ze%v&sD E8 >]]7}7 3v"S$GcvW~:r[UwD?%I.b:q U禸8*LJ ) <<H/_!Dד=#*r6F:Vχ?il"spW&x]y>5O<ϥܱ).㮬UY1 eK< A:ǒMeYz l'?oN$sG*88G#=z ~<|'ߚ|Ye/'l%`Zrp KŠA1I?{>lNfFP!/荆ZM\-@+G\;`a}ҹi+1hDt-LLh6sj3%_ P߈%TF" Tw<3o|n3]+ҐːȻ*4ʛ`~: s 䔼V~ʧ4fs>F3>."|(_?sU=M=1yrL"o\(kf-,3rz= <0¬/ހ~Oݓ`#f^:oط!%׭MrW=Y~O_ov_6sYky _`8e xN U ?bꟊU*/oCN?2k Ƞ1:/7ZG(ɹP~bh gXJ ?lRv.A{bJФ^ۗx1i1pdB&nŖu A[%Lgi42q&×#v>GM{'eCX$KT-3 DϴjcA{҇U%q(5(7 Px;T_!}Nw$}p8DH5F< MՓp?&ӮRvV_s;d$%s^$(}p-ګaﯾ-w>c){W֋P E,^Wb<#uHaW[jw RB2?Ô?aܩWЄX0ƼvbòQ-HoF-b=g z?ny& wXoe_ݵ?W1u lX?틺7y}CG`:fk#6fl91ſЛ2_V_uɭ |Ǎ =Y!`^1Xȷ+\!8if͚isТE#TCf/̅wxwO?? G3fXOi^@z_jgz7{[ ~ON,bpf=?E,_NLZsMG=/=wBp1 %?7[S&E_lyA+?Ҭv:ahq w9ayNF]/|Izb\([7 f.-!!N7C]w/x#̵Z ʋ|z!-֟0Z2SN/龑TILaH_`$3S6I?_bP< I!Wk:|׍_ruP=_B[e/9BPyJ^V%ZobQb$8*₷[]&pNHٰ}όrq۔c ?e/H뚛֭6/_֬\Bu"le:Oa]O4{\WTҥ*V ۂD/WEUO4G{^7˷3'~(b6bUXb~m56lJE5GoZbW&"9hr A OL/E&Iȡ?c+|pXc;M}kPٸ&5<؊ϷGObyP_>w{F(єg.f̷LвڝϟiT0|"R8k"?L- yFx˻Ѹd#)*j!:+E Xy(:?\NP ۀ WX Z`;bc22+7Hi!'Z]75xX6}\;NTW;?=lz/a{5=" .Ǐ.`QsUm&!bgeƁh`K<zd{ړq Lk̉R%m6i"*]7˂Wkg76?N=]'ĠdhsWOn= oqQO|& %oƒc"/>DѸ=h*|F%:yD>KCcgbKhx5F/*|zי(XF=|۬ocPWՒ;V*N^UNmvw=Zh{?>nzvٽ&Lnb:y=CZ6/ߞ3F-W]_;s(T֢0/<-HFuM>'_O6pd8IQ+#/ gpkFZ5PzSnS(9Ix諸G?97ʣ<S3Z) A[hX^_#UY#jJISTI/[7" (U|u)cE=% zNFqE~ud,FH1gCL5%D:v0R*A _o03itvAQY;7Чw)o[wzwH,ز3gy[+OÞubmo gR`dYս5ސY<״ǥ^;tb@abxez@ y o7y|u->)t"On}(S;AR2QBhl,?X+x <9KHmpJBhwߋxXz_Y5\~dqfقc,VmM8άVuwE.SJ diˠcc=bq߹/<-?Sfh;=/=b {ڈ}"צ#{MV_pezs?Fa~s߻+D^]s_`g.MAI<]4SN^24]{79KcOq ?ȉ#?G_vM~MDRN^ܝ,ͳws(\a 1Xy-Epyg.l3|lęs8p ?q.).QrTmRNYWM0҄3%@ &kIer([M> #eo#O,twL䢡pUǸMyEsĽ:ڋޕN2Gٜ(s˘Hu5+?'Ĝ?e9N'7+fbTnJOKb)dьOG1dQ~fN?|e=:y {k'Ibv3 f9`/yEUɨ+ F_2O0BƧ12U~!ݛ1 &<8 0aKKr,b ?a>]Kg1sOc!~#KvkN&]ߤp< $듘ot)-LTO筳"p/Z/" $?ȌK_cw‰Ic4WQ'MO$F5gh?rxN2F" _" DuH%fk.=Tף h(3;l})Y3{.2ۂ΢$/ ./_xYYm1ۣe^[Z3|zPRaV Wsj`!)DA>o,bKy+**#ܛ_A _o0_7k q ]R=^d6] 9g7EGgu](mLIڛ%϶Gi eV >A&2ҲmC>4E1za X1{sh,EvYEIFb& r#J'j|oeAΒ&nMWDH"MYۉh\Ѫj+|m#bƒأgnC1t n-uד흾M߮Fk>-Qrk>嬂97}\ u(eWnQoe}P)z' ?e?j  \`ӉX 4q[`Gdz8r47X^&'103fJ*Z-ؔ"Ah>hyJvw|5H7w0N}Jp'LΒ"؈ե& ul(rT .8Hrps917щ1քrO|I$^؆GBG'Jh^K>7”F؅`zNZo&/3_ 7mVׯGAeo[IJG^R}O@m6ub^&JlOӘV6f=ədjn*'cKWȨhvAx;&?q_V;_[ cۖ#C_dMjf: l-NY`q^Q4Zƒ׍u{WZFSp.ٟqkc z:L.La$cR}'EA|e=x1jygOrޗ<;SJ3hRpeiDʨ/%[ui1 `Z r}υi6ͤ?n2g8nݟ [?MdCa71ɏz"~9k,LYw^hqrȗEN?t۳xIH]OJP*oR*>J^T_ *ֶC\Hyq4궲òd"`?m_m.h}jA Ɵ7ڠšΫ>J6X6Qtz YU6;GMXkB۱xb,^KKWF܂O…9Blq(ȵi.ވz{&.F=bqL'u?5*6xtp)*ߢ;5u@u\,9CHBlؓW ?2P\^|W57^y7Ocn//޷0h{F--笃퀐c\b[0h2f=^W˨;-ĴX t?UY5c™$( /?>YS.}.o `QƜ`5 9oʁLXhvGfCAJhrAfЀT[KKĔע=oY8nlv3q|G0!{ɟ!>1Ys`7>[\p/P`Cb)%#kYD$Wiu/ _ҚPsXzܓʳsNeכ&V(v\+1qZzGKhNƺIĉy=ߊ 'aԷlbļTNaڗRsy haA H9!ch8l?~T5J#k:^íhU#ї6MsCέ8O8sn!U &z~{zC q.7xQtSHۿ/]aBqeRI6 ӟ;x $Z?iҍ!6„P`2e|CuƐ{&I0nBځ<9x>lI&+R[-v,JY Hr>V6:{$-ʸKϹw1i-30.גEl.= ȟtj 1|\*2.xHk0AА{{Ki4e>!>!?C%Ц} bwhVF-aew7*1!_-:2ߋQKNV~ϻA7&=>ma|C0I5yЦZ,pW`>GG%bEkqICƈo&[𠒋c9{2¼T:+ g']p,OTYuA<[=ׇJ/h}Se5ƟqЛUI%+f`ύJe?-wqTZժVC*UQZ5Ԭ|2ȒwD{W[R'ڗN9ʷoƛ{o2ְ7%-Or/ye #J-z& KL!)&кl}揶 ecl.>~koe{ʈpyP]#[zښrpQN+5NIx'@ZM)|H|8Ze*|JUK]!4h{Yy&5rVmNڟo'oL )u@IDATvRD^qyʃ|-n#ew@"h{/.b`FMщSAj?#)5]@Rܣ%2i?Rqpdރ3d)!"TBx2qsGsu?tRcΨ{PiF+ĭqLG|a;PQg_[GfO4 - {+!Dʷm?Zy+vZS نNGkICvŸEhr4hɧ'OvU'hL6HAjjVNE@4$//T1i LXK)#7Qf&E_ar[}<3Wn+M#ƇݏfH78 }fRGYW.G=e3Z9L[es=piźcS_$?:Z>`?R2X1w*^e|>d}]ʒ#ccS%M%xX;ޟ%[v^rfJ PL P?4wF{;/Ō^FSq d_.WyGطsH7(]ѡWX};~qn^ z󋟷3+b5=էtO<3L.4H^'Y?O>IwuLB z>ۑxjz 韻&sBaԜM8rGv?肪7c*hN[x4gG12YB` Ʃu`;<-+zeV*%=~pBqv1bjnrc2|Svn})<97fӘom;F1܀jj9߆oMG*Pplc>RݠD_ WͻMѲƯ;v 9qv>8Е! .eT&k/~TB7ǜT;B{r3hPMIC/>c[!2I44nz}WK2L ~ "`'lX59}˷ >E8H疯mᘚX:r%9?q-@ti:b7sIsy,nh8 GXR'СmXp~_˖%iZL5|7qwydȉ}G<u>V!}c%F*/p 0SpC=\A~h7֯~){xov\H!RC|P C?^(Z:rGFހ[Eac+D2&|`Xvp)OTHn5$MKԎ0{WPMQͺi#?A Io{ \4G}0p߬n1gBA>xun}۱m^޽ {7Ķqmlm։?7tVWn_ߺA M_F!.K:=pPMGK5}k@*0S\ 3I˟DWF}n6D|?DdT!]}08r%U>o'5/g9pzk?1'/ faG#lRUrJ>[,`ԧ]3ܶ~a0PƎKs1\@QY:j^ *2B4?Ρܨ|mwL[Jy ͟-t.ޘ.)Fd+J(?%Id8I]# __ţnV~Mf ǟ!nH;wCzGFaO snϰaGϯao 5`,-QD=οg |>y 'ǃ1A\ *䪊M l'6qv~kvWP= I ?@-2LIv7հE,&D8ą, ]A$STdɫr 8l7K<Bؔ:"m} ]wPŨc:8-yo޼Sߍ,*_?m\hqYّ4A>l TUQ`yp'>(lfeb3q_ ,-U]Ϋ Q[5@ mց)[0io+WWPu?U|8N.{V/ZxJg9_PþG8s#]=/vK0.^n3y㚑*ж[O<_;$c[jR'Ao솢 qC_\'NggSCrLbDDx/[bhkeY'L3A _o0hH_x)6#1Ǣ_y>g?ϕ|*_~~܋XSQ.,b3S ǜ8'WcްnݹJk;>賭[4A[Sq k»tfuoY5sx9<}[OƳmcڎlOfFݞNQԁu'1ީ|p5=(Yc!Tϭc埫q61pPJsZ}4mz>.lWp:=~x}]E_G+?>{ %%~vB9:)-:=k?xiii8pVXZù'k&G`ic&ʼn\J _ӶI:y8 `,\S[ΝiS2J\_FKߊ[H^nPeJ,i6},?]*/vp*W"֭ۦgq'U+|v'm_{S_.-WON^8}[fKAr|I,GA==c.9| `bM;U|;_;LS}ˣV ,ۇօ,]R?>[G%pCHiۨ?`˺Rdd0{S?1ތ(^ʔ ۼ e*BqM{9埄k7b_|Q=rqJX_E߽c-v懑2Pq i9﫦BQۅwa}ȏ#{vR?a{~.(̙… hт\DiF"nY+fFb7DƳw'wo] STr/ VmP|y˫-Xe_bFI'U*]́SWD| nԺ4^g0|֚ۄ|E`"`>)})D??rhnľ2T)1O>TqGnlؼ튐-X+l}JV_Vm\Pz 2m<2#:Sٖpt^:{+6JBa.\Hg*¾*x'ìSwA<&)ʣ5^/Hqpc>~Ƭ:N` ?ݰ~nGi$8)SZl9>._a[j{,Ģ-Ra.epEx6ft_OOR4¼˷dDfd^_9zŠǎ`{կ_=6 nF\>}D?O6 MJx =М0aVIP772˙s,*5PlqϚ5@Ϣ%L#XsEYQ98=})Y9]4? \'Ko2R t7IƸ5%>$w^{:?>?(ď 4(KG 'f\0#=mXɎHӵmYA* <}t6n^^'Aj850dJf^58A?z%34m)s2t?ZC٦ݳi"{ ]k?ێ_țjY/ԮͅŨNFsY3@WxMKL&Z _k e6PRK;t"cR.'wƝB(M݁:[G;hzze΁GEPd),APlaw.|mkjHt X1_p[z[YO YTÚUu/ENBt.DN3p㻞=1M>%G]Ī[{܆VjR_ Ù<ɋEby&8%<"1CiZ_ψBy|ֿB<`wv:4@\d/؛ZUmGX/\ N,>/?˴}c~|-Di?EcBFt7݋{kpx-b_S dzPMML]+h)Wڃ|LʉmnNG'w11[iKoUq7\v~}Tо֏{;0zǡ$AOc83tvPR_~ ?Bu6kt V&fYqQKӵM? KnR"bn0Q)Nf gOֽЫes-_T+q:<"μڜ4]CK_`žʝ'[17[DPTID߷fs '7s{̚Uff!e S$p7*beɸd7`?mAm8fʎ6=GZ;6ZR| *+*)&$=񿤲JsGQ=~s uj%Jr9yBF<ȲyZߟ.!doޅ]p|1x|OtaykG:1SKy5K0mrDxFBҹܽu4(Mաyw}8,aJ[n/ֹoM߼-_}٠Iů1(\gv,V|3KpM տ l+G#Sh%_Emo՚@vGJcPd 6ՄO_Ȧk)GqJJPخύ?^w۟kpq2ϖ5.޺8zZ6fˌՆQڂeg13ٰ T*PX/UOA @+ӿӻ׿/RnC B#mmh(4wօg+0Xh6V..YԮ  [ a%b#W^[Pv Tr +DdP&:w+br2]&ݢ.*BFm̳K|^- 3f+T$Xӧ)c _iR?%f=i|L,J?s%w"7gɇٖQVW!> U1C>A\R?0q-1"HN[w Iis,z^"‘~軫ҖY7JΤ=S ɯK=qbe<>8a)/EU~8(֊;>TAKNw~4 W6OJf̉lmd IB[$ن6QlfJ<ۂ 8;TȵRsC^?+SN'8Sm6=qӊSB6kNv jKwE<_ժ6<&l OO8SgJjB:q@} K+i F<ߎA>uAu'!;D._@Sڰ.3-IC_eT~%c;F+\N݂Y%XRѠym&+ qͥC$]>Woq0-ׁf*oaʷ?k3TCГ\w|G-=743Fc(eQ=u8DkwN5,G!|bLd=8OxS |c_<5nx QK~"5)??{?.rJ[`\hY8׵b|>{[1 J=? zE;݇N@`MGPn}+= p7c~ W: w ~q-K,ƃٌ+LѾc!??S ͟:w\/(*)|ag 07w8)ў޿/"wչIP&Q\dT  bg2V)wBq+O5?gh\M"uRDTb'_m{ _=}ڛHiv٣֧vF*cblAJ!"T1-ie:g<hZ$zE\^q")x?az{5"g՚ Fi*AJyďkkdѰI#hy(tU oP7_?pm_4͒Cڟ5ВOmk/ Aߑ*fק??}^/Z8v]\/y|vX wkv:5j}|#OoO/&L*[Cʖxܪ8b/ Q>`Oa1‘}ZᢷGK%,˽ .8dou;i't} =^|;x̫Xi{r&F_jtK{߳?YЮvލ,_5+ˢAEl'r a3Z,8LtAΠk`3pYYpY<{2iJxsZuj'7 aH3ao1Vtꕢܜ]0:lnLٝVo^-`-K櫏ɱL/``!~0۟|:T K AűTI̻)KZ~C'D%G$w-fq;wJ,&DtIdbf=>y\|l>:z8*?>[% 7┃XbdςCq-ï;㬗#O>'\3 4l!|OC u*M̧S[[(:?:\1JƓD1-(fUD(]t} =ɷ17,mJ??YڧL]IwŸDN9Gq9r5!FaPmi.> pw~@XعpN&9ǒ<}[ DϷ?{_a߆ΉU#kx Lخo<ؘ;צ P`JLH0A 6l V*Yq!I8yT!tJ"^m<N(tWֽq¸!mN~+Q ;/z^2Ǭ۟o/?/UPw+MבocJy%'ү8.^7޺;޺%.Me?/>|EI:G&?ug` h_h!^{p>qg֍ |WJz;Cy~3Ȥs$z'#FގVbg%5F|BFJ['I/k;dߔpapy,4+b!^{YK1qʝcbe9KЌη6yo.6(uW'i$_`^Ƒg@UD6Y4wt/7wB~llc~O5_OMyKow?ﲇx#ˍ$4ѥK N")X^HH1Y3~ RSR jT5#U Bgq韐Wv1_U*VjȀ5k<ًۨ]I~ɓy|@4,ʦ,9+4Ieӑkvfv6[)Rzu2+}f0U ӓѯUE^[L{fуp  7^xڵh:U!9~* eo ^¥wP"pîS%c=~WO%&΃0h˸8Cq^CѹxQh^ʧ 7/77ᱞ{X-K^MOoIjMpݧ7c C}7n MjWD,]__'H}84חNA??R?olǶU?,vPxܩ46AZj̙ [Κ_1w1cf͙%+z,lJ 1X~ AE?|m?n:53pt.I~aB%*9 2bYWuFW"ɺۮot,ϏϖG#cqk/5 ˖CyZS-ga(ǍʢSNi/ Ƿr6rE~poUŻ<ϥzAkm+Q.d5I|DKOhY|UAR.^AsPi,/\(LFmx{%o55VUɡteK?Z\,?Lu ^گD0mQlǰͭs0/^[c8w؏aW>2f.&w[j`[ۼg(CN圹O(g|̓EuׄQwa ښ%Oš7OwP ͟%9>Ƈme"YM!XGަyڟOڄwkB ]nt' -[Y":s]8}+5AGg;i3p#ekc.1̴9߈/yD), O^iݲ?W.h2~t0zGO 8vNẄ`ͼВ{߄ 5%u*DDX4cB]EfFjF`UֿZ]'QpJ~gd "6ĉB\1{GWQa 7%;ӒCg5?B2*o׿wwXɏ;,`ٙƱec :|m醓5mNs)fn[G㭒}i{P$2=oӫ7eSJ2 \/8 X"WoNW< 'a-Y[ -z`SêMxw;*Qm鍺7b0^[k[C_+q@2;$ct7qGy%N?ly\bc1e0\|t481aj|E8`w~RjӕcYxcè%\ }s,s7^ĮTA$suhoa9&O?:Ch33aE懸s}%unN)QIjJv_\6]NP6b& }'}-lMŭS,Wjzƍ*Xh:P!x1I6V+E{B?bm]'}HffF xIa͛1|zʩbñfL/?'(ʽB-$oS݋g.olcR 7haϙ9]C6"hL|KvlGG}}ojkʔA"ht> N=4V}ދ#wc_e٠^hv_z5>+Iʨei} mWѠ6HzV'{q+lW?.vs\8=;,g3yE8ykKӆAyҾ/! ,f#Z 3ςp'z^|ݨ?~@luQdTME֦dTf#[֮ƚuoހ?rXiwԪQeA~V?-]_ņ\=O߉kNP5kŞbݫnK7_kcy2,[SiYش! 3P4޻ խ5yV9/X-/+êc*X=gD+t֨5 fMww׬@ў;lET\ٿ >WXrY2U`F$5V?~6X3_k_F&M|:3܆[NL% l'܀ĴWŵRNQu2n"` F9"p 6Cj5LeWH2>;BK"{ kHZ^VP~N}=# N۔??UP4#;+רW!6/Z9Љ&ozxP;vO8yF W{h"{%b!\4>rsX;k dVam?nS \DBy M+QܡK.0LAD"v~BJz.Xf,;hDT]88$,y<7M 8ᚣQ^v#Ir,*"Ư*bkW.XIop;`x <})A:|c5G#DlT܏h:sTPUyC2c*?RPJMp-hXϟH~B?9U5㯹 (Sb{ZHRX{d| ~+NƻKE p@H_i')6USW4,*Mְy]2eKjPP@f8=}W{{3DZ`Eּ+v#KPk,lfb"@IDAT ]bs:`B^ Z5g.U.LIUGa…cAz͢r,NOE -~\:")I#gb֢CP'w S*i4,e.HYaO:ЛsQI}.Yu .I9zKI)ѼJ?Ʈr{=kML_jůqiejAq`#>SXK`*#B|=f2ހ/w]I]>?mEJviCPzBB!ekq}=cDxʬ[:_5 7e# rVu-뺅\WhU?K?cWWIzo_t(v]yѸnHcTr#KG{"[Em Bi?:ؼs΅(V/ dr)IfSAŔ7)vGzj5fI q;.RNDHcՖ<ݍrPM3qwAW7k5 HǬc54i#B% _*Lv/JBzqف/\Xzo$ Ѭ\FmՇp }d/V;j3cjQlKAFPCuHLe!k~1p#Zukn5{(~(D`'8g%X(8HU>лLtrRBv{m;v>{#/ ܼ <@93*CѼi 4npV4k%|1ӗt l6}ԣ}_9+LMdqBF'uѬiKԯ. –g Wr}!?RɕؗVɩ;}8:lZ)_}i Y4MDέP pG 7}˦vF"%/fbԯ1~2n5mSU췻%e OR$bIwOR3R{CX,K]O0ޥK)IuVPA9*cC&aJs%q3cPwm9׿?-+|_?~̉Oy/?;z]9YTŶhF@K!\ih#oM`ix6[m,At 'aЊ /]>#$: ǿ>L;k1s['VЫX=.|/ r t<]޶)9pa @WJY81-D|mPڤƶI.mq=%xw6M? {7d<%X뺱u鴇O Eҁufm-~rtLuH@ Ԧf1c/n/FɿmKRT16L{w23/B%z:9g7> 6bןӁx`l4,qХcNH?Kk-TPEwܱ/~(?N}u(w ^9kX>Y\wMW,|p ^C@T{ Eھ-X wN0d3{%:fjh(,&WoIX-"v) ػIH8集%oX|(&u_[?O3࿟=X.|pv;Z2G'[FcD VAǶdB_?j\nv)ZH,%D!4 }+탋lKH[o-kV9G?j4XBo;6G9Y}%b'URJ@^#l%|E "7#x~Ke``0-OD~p^gA);~bxD/j;]+ANT'N2Znĕ<# |^ @Hd'! q}{|xriW%g RPgY~t2HfJMk*-"HofvH+ {̌qkK$nZ3_Dygcݸ%&Dea'8@\=)aa`۴w酫=k8?R>#ҩMB',12wxj̜a'p!8;pyG-j߈yƲ]X?}jM,ɟpW}=Ϗӷ(ע hJUQ8^)dVv3uN 8]\.͞/?Wٷ8!ƧEPWJ`$lb2؟$ޝa5?dK}ic_WKIklrPb6Oƥo2]K1}! j/BL_8Bݳ;Z0ɯh  J̺,d]e[nl'nGtc2"LSOQ R ^ǏS$FoكfϿ?>Rd]Bo_;_v݃-s웳C#Z4r=ߢ[]{a` }kBܕoo?^ax[pۓ꿏[eTspӧB*'nSċVՂd^Q|Eqtk*}>aܧ w"ˍn%>1ήklRq |1쪠褧BRp_76O|x ԙ3fi#C}X1yH}{.|'.<2n3/O= SJ;lE\iu Nt6^c Qaj4W?C׺3p8:HD>| _?Ձ|IA .BDu9aZa;uh7ʽ\oތ.nM;@)LFuh)xj1PU}zScQy[C»cfsss~1a-_,5X;(olј~g_&;`^A@;xλ[ YA~< WDxݐ s_¢1!xsv G0= mP!hA9/M ृn.{b|$rPX0 |ݤ_= ݏ% iBA/ٺZLg>?{G^ :LJ|sGx'w~Ê[Y+F _O~ ~fmWCzय़ŁRF_@ Ç[#|q|yoKhN1F-c%ꧠ3?\mV_bƯko'DQBC}iy^!='E]B[Ġ? ~?巏qy %z_}/LM* Xh*lcPx׍ceR_2G(20۪yCY6>vz?Y]DLԍ׿?|_?Ͽ8p矚H__Ƴ+%J[dcWt5=вQ<(?n>O`$ýSʌ5r@z n߂!x$z>24Ww)cSE}=yKU9}ަ+@"u], U]J$ZH~vцeDC*u/pM#>.vCKj|"T~ӫ\ 9j(l8669iU鍛?8^YMyn03С2tM.G\c|&ԗ!.xa:)]90>XY&8B*ko +T3#TWWʨnO)+ 1_+cd  A=)T4,(Oz0Qx`ـ?ctBiχV~`+dʕtVd:Q*OY@pO>MG4n2lw0>4"n=7hO;0(l/?ۈ3ni=>X?&K` TD)$**1UB%"2/#Sq{2_xy_=/%|,rV4yŔM.G > cSPxo-=`yZ3nb3KhcS}W(} 8 NbҒi*n0śmK/-/~ Gۥ׶@DE/%ClG2sɯY)jn _ 2P.dOxjwN7ȸ#P (4@;}AU |n)(K:½'cRLGd㣹KJnf^bS~jZ`7OCJetG6m)6<{R~ozV/m«7AkȀy/ǥӝGJP6۟|L'?5h_Ԃ7VC066dwVvB ߱U% ŃMq3~n1mw;확h6n+BepD՛,0S{*nA1 :E5FC o4~Dg#Y-tF^?d;lk&'F"-ؐFg#++kXijpy1ppZd4)z3э&C% F~Ö@6sޟe8]iRO3w/J9!7x1_v!-Ln[JD 8v`f ` d+gXr4W_R^A&\"Wpͩhl&ҏq?ŔM*(o 'ڿ#_͉x) 4v"oa$BOm›;a<F@%쾥fP13pl2OM[O_qs{ AQi_q793)`ri!Aw`7BAWp$Nv"i,,t6u+~0kw^_Yy`Xx6Vlj'\Xf ACv Q XHOvRtvu *&& pه9D*i@̞:5ԴYDFŅ{{?Ǐ?({?O;?;KhꙫU;k5l66KĹix~$|ro/ڈ? nѮ ҴecKt8^M{J Y!.7tX]Ƶ9G;3Z VB諠,&j (5a^>7b^p%lQRrv21š>"tI_i1ƿ2wi(Ǐ9 _lZbxP3!ʧKuS&p ͚c0KGOa*axğ_8YTʧdW0|~/HG qrUώAE Mybi_L4=`;ځn'>8N rN0Й7+%~ؠF_% ݚH0|2f 'Na0h2K%2DKKSk4oij^i'P;_4i`.y/l)!10fM1 OE*9 '2N_jא,%B'+-m tyO_+)LeStR\AI Fn(AV6НD{xnR\0J+ޞf  WQIĬf$_a(Dwku#NO^ۥAu0#?eg¾$}k A1`ľp]RϨc֨KjIC(ɟZٯpmio.)8e c $"|WB(,_gsw&L׹@Gq6dmiu5'DBOdi쒽 X|5> qe-V{Nj^|]?z}OL?os@Ys3q,3MEu9MuV~d8ls4<ϭwBrO P*̷\YI~ʰ>NɲA RO!1PA-: X]{0_赁xX+nm)Kɟ`>C`wCW9?=ƹ63xT>/N|H4-^l*P$+J˳x"3Dt˾½g4:Ӈ<4I?#~1B/=B~bXLgSY|z@t폵o|X2_ɿ>Y:stWÓ@_x8d|[pL8Cv{UHqg Lp'|B#(09lW6&MGFyoк=$x/.eڎd+t&c$vwXEL{5^hwYRM X$}whgT.d!=t#lH?B{c0?!Ç3G"EKL7+?`tg' 䏤_cKgcvuq)X԰);u6Kz08}[?E2`ܘ m 7ZCaA9\R4vYʖ˳|!QpUPa@(ꉭ(=!8㶃sjX e*mu$,tmŭ}eOF!G-=E i:jl^VDKjq IL>Qv_zҋ“tyқo?`7OϿԏAk;gAְmA 'CBb`ʷ<Njw]W1Cyv2z:.lhf3n?]9`lV-|I~FxOk W;iէTԣp>|-Y8G0ggx gum&4 <gwDLSjsF(9axx0r̋v'IT *-(΅ztO ]r:1)N{ x'p(@og1JYxp(RaOxDl§i;3ƃxcTȂtB4,q & SARl3)!X/Lڜud)1B1ƦhHڰp :8ښl΁&?ZU&[qف!lAXRuF+d 0&&U@9qBtYD6fz)fMp%4ɽt"P-WH!/"N_qYw;GvB0u*U(D|̱)ɲZ$(}poctʢٷaƚ+'a"ȯ,sZ@&Hշ$c" }`7IǺf6DtEhܸ˯T/n:[k׮5k[իWh\g`2~+1.ƽĐ>!_tջ67X-O"׆Բϸ!ěmt )1(KxTT%x{+O e *5-ZMgWAӋ tMR@FH8}6U`<~RZl ^1AFFd瞈xbWgcCp-m)ыqωZY]E&cQ]\~v̭5XE1}/cKM5EWo!6y Yx 3BS-tcԕ@aG.YW(g|6r$֎% FB+>a+u  Q~ mGWneMx ^Vayw^ aexm Qdu9>RH Ƌ?i_ၲ`8O΁bHĥOY,9ҙxυ_d)nqv৩_n7_q)6$ԉ߃˿c׹O'c\*}{?Ι =`K_$鲇+ft0¸w(%:5ml,='0z,!#Ƨx}O<&?L̉ņdz¢1TLKAeJ^Ӄ˂P;|w1ʆʟ LfO/F/G/YrtyF_yHGQ/Fxwy7+k> qegOg.JqX6X6UΌ5g؈_ӗOcjߞvb'>Zm.~lKp)yٔ}( /ێb|!??VfURxخ&+k^!/'7Q>ť£/mOJmG\dl~_}?b3~=K|;6"#j1n)qZ߹X@,'"RЭ aGF=*idă(/9ol@u,"3jiA]jxdJpAx[ r8~.I[9e3 !.;9akZA^3mr=Tu$ʿ-KZQKy '=-|rH I t8HbJh+'BҒxV91L54OcAg*4; tP#< OW,F$ijӿ ʊ_w{wEG&^QĂ,K'frE 1F:[\q =:^4Y_vx.,DJ嘁K1|D&ܪ {c/.pLXtRY$Zͺ] =xc{b[8wIG*1pb^u*-閐^̛(zE1<7WOBirUFO,~yͱx6_xff&`slٔs&lقLmf㛶lf&ۜd͛)s#q,ZrFNVrI#/7W>7lӍgƯ8[=%HQ4}?Z{zK>?~ž?ۯ?/oW=sUo'rl 9hpəBZ;»X#X:2aGeaImK_<\ƍ&/CfA.2@s^5zx(_;h+T] |t Vd!+Rپmtjb!ڢ]iUw7}*. Ma xecŏda5^%S}*z-\(*:S@eza%ؐX A8 H:)"S)]>1qQ'?/ >_@}Q7;w(J1LFP>c Xŕ u+F?NxW[' _fPVgճ8>2h/ 0ن7w~άGP&~up09xQV\Y9S!pQ2fEտ[L*u08 "}ٸgm`c epөbFwc0X$97>9LG?BB*Y/++ mp_gg)hwXD]~mZ's9 WԅDe n|4;f7Wqpsl iz }>{9ސ~a$'Β?kPG+V!m4w\}լRΉWo sР7Ӧlrs_[a@P? zH-cȣУg} dFL~ea(Y .=y/$0&(ެ 6b{Q[)&)ɯ7N>duOSI2uzբE}>V`QGǁ@!X`G6ڙ Fq`O=dY6ot~ܼ&)}*Og=6' 9lnes#iK676s㉛O7mĦM܌ڒͦ,n4&MII/ˢBrP*VJUZjk׹ *Wbe>9_˕G呖VIĩ#'e&mz&nmڴmx]99y|*jEuֆ t\lêafa: vXd*j =xs) ~~7Gޞ[v\?>[z~se}g0\9ܤIe`r]Sߖ"9)pcӶm9aq {'!G 9wt(cQh(;; ,דM1%,.X2}g* Gq1B #{H-", ۴fE+: IH" X4(A-\8[P E6hWGp Ԇ-[I? Z> r\b.r܄;b(#  ~W"eK%GTlMEvvKWz3r7lqCop87+>U\b] 'K= S+UJ  gӭlW)`4]O$g |,;c g)#KqQP6vl\Gt`u ??T=3;qA[ڂI |_ߍvHYo$xZ縦k\^[$$>(` BC< (:b@D?b]1a/w;S}3Vw^=]>90 <Sq4:}o94m3S:j3}J.t} >cR 8ř۴ŕTX~ ˈF?3w(嶄,-e_;k8&<<{)*)z==?j,ʆCII/p%$'X?G3eeBq }'l>t0.mlAX2KA ׆]IDHY 2+?#+qiD_[{HLz'tk78N+%sNؓ!3^jo}N+BG]4N{z2(] {2gܓ6 Hu\ǣq'ϸ/L+n|ƕ\²MrdeywtL?5hhܰڕ5k+j,c߄d<?.DZ$$s3)=5LgKO`b\MC?0siyz!M\AAGu|z7%9q3Na9Lj‡`zg-٬q󜰔fW(W m݋A>1 }ú1bOeB5Ry{3Pt oZmi% O+_TAnQTx'f\uh\8zBg+"O;yv\H x 1c ^xǷq r-_ IЊ"H{q;8}\`HVqfc.*8Sl&iSPN'8'ɽmXN1yfh$ TZ1n9Tb3|s-ç˧vhSU0ϧ%BIEAYa%_W[dzuQoʶ'tшOWtJ|W>pXߧ1}h͍B[@~ɇzpEZnC6BugVʁS0,Xp5T ?,ܰuuVSǂWbBdVmT\ Y@_tǻ-ʴ8}@=se}%pKEcMw/>S._YUg߳ sFށ6HEG]/Vs%q_GV>#=iEkiB(Ӣ.ԀM?yѾ+:w*bDO T>u T({|>f|@׼Q0DO~o> |)&fo0o0/ro q7Psc,7Q~amvSy˸D! ߴCoWSRWP?{W`eM0 ) *-_][Ev;;0W @YDZix{qAa979{{cWts.|h d~g+qx4lJAӻA6t2&җ?&݊ǖ-x8y êϖm;@V? iUgMSQVb⊦BmWľV? + /?kVv6222dʥDaZ;-ʋƕ_YYYE^^>ԩ\>g2)\*"nmX K/mMzOuMX&!!G|[YB69'C@[g?W0$;oV\0#_\ӷCN{fӘ[z宯E ˌ3p4+_SKNYtnE\eD X)]ɵ0ݤO,SRѴ^6NQ1ذU"3$A**M(j13-叄Jl"l,%.eԂ50u SrQ~d ,Z29tNJE_Y/yFWhJ,DZBVqڛ1BUoYQ/#)9h83N4F~Uo5(OHEu<)f8ŶJ2rJ3w+j\q q i8oMڟLk?a, 4?cn=}~;!عgnxv+F̶R46fc\YhHS^m@IDAT_P%-ٸ##UWU.c%lLOvU{-[KNz~+~3]lG0m/LQע夭O"(Ɛj xS&QC1Om:ZwebƷ_L|gr&?zvf{ϔsixfBW8Mz$Je%h[iJc6huVzYq=j'I>ےBZ_IەWj=i⑜[VnG]_TkEsq&yϷ#ȟ@2HLJgZ[Kɛ($y\X\]`<]4}]#vҹ UhE(6:C+b_cIU8Ic*5_#8I?snmU+wl)}'e󗁗hp3b1x(qsKW"O, קm8#pq}#0~-WoU i9Vp SLn,Jf}k:fEqQ=; hzGѯmS[+yH  =gϞ8Ѣ~:N|h8VH *a _O0_3(L)9)6J3k]Be'u gc;jrEdzh"B86+(~ϑ 91ֳ?zgÓ2oʟx4:}c,zDdI_l^9 'J=k`i5uӿ$v\2k3F[EOeM}:6>#ƒ_Ϛ; _R,X azDcwKӟ! &"܊ u-IKi*Y h`咫mgѧ8aFfǞ3|} w-u2kkWxW.ƙeY_F'i]=w G+>_#qnpG{/7F+@/bşOz EP`t`wT Ev^C&]kֱ4b\ޚsnpG9W1P'aBM߆}C} Inv4t6m o3W:߿Rd݇W3TLN0[}衕YZQ`3L._lr1tNsNbO6*mIuUV^p[N*/UHƫ #j +۲eԪc QYQ QTRDbm3xJ+xa{Vzȗ@PZr8X:O\x |jElqh8t_Ґ]#=1?;m?NX: `ֿJR{̋p9'Ř[, &afmZKF=n8od_MtBw<5z&  ^lj <-'ɉ_*ei֏&`Gx!(]=Ox@3:?Qe_?o$woB/{uu=Zvm%ׇœ!Ѧt2O7HSF-5QRY?.M? $$?&5@X%l7k4mgr{#/'խ6/SCWZ\7ՓǛdp~N~(l=Pgu)&ι 4axO!a`:<., H/ڝԶBwx d^~I>Ol'/u/Kqd]=ôw)иc't~{?)HO1x,._Ew݉33uN8ӭGLq]/do}OaڷD~f'\hsC[Hw4_}Ѳ~N~c .1W>ϼZ7YU2=7g3OB؇0z8ufG3=S/\kM._a Z =cq:Βn!!{mp;o7hd zҜflG2dF\C]SqTxL^jaO /@w{?:)Rܟ`̩t+:D]܏`uyrk&PDqyTM_s_ԩ~"j&5_#mrW_HZGICfB Zd26'R >aq 焅⒉%Y&?ZJP =A^g[r&3:$ъG JKQDcHYY VI4^̫vnSBN?U+|2ؖzm3l5Β1KGFLJH(/#jGw ?O{׾Y~ܪY;-%O@ yYWG?E*2h[-Qj{.(/$<ާ;fU #),by GV[:s/4:%,H'$ipuc.]ўx.yXƏ| ),|ڬޜ.Ft~CPӐmh_-C3 `FYG _#/]?ʟ@oIRl)CuϿxͲv^C-qəVg{;RQb,AL|u^jJ$4dDߥCl$ŧS\a[yucՒWX 9 /@Fbv0zddJiԩq|pvU-l'w^_H Ȗj;RI?>&ql'P%VEhؐϽ E\WEhʆV씎Մs`Ejj*t^V%%'['GFKzp ʭsm/ƠU\_utUO7ɫ';Eɏ}k6`VNlX}c㏽0K65!x|'wBN+^u%b'3 o^4R|ETp޵kZR?ֵ{nb߬F6`6X)j?0j>զO.Z6s(Kv xo;-p FkW¢믏;gͶ]3k2OcF[C35X+f Ww`g"Tx/ag_UٙW9v>ÕxUNyU,2h=XVm(uӉ,榳I2s YS!tj'==ެ[NљYeCFB9 KV`c|Y,*l)2O!Z Z<j6䰉:y:|@cȕ RW7zLۏ(x<~3x:^9_i y?lx^a!}E!M&ğ( œO:4];zHF80&458$j1t ;aH|z}'>VqR*m*M@q}aN[jV9AB'7@0~=Qfy$:[ӿP9 yrt?%Uݹ)S0n6vD,6MjHK[]9}a"ة Q{PL-v8|T\ʾs_seXŹ)l|os1_:1v8_ЯG9>ol7 gm_/F|\N$|]0_ W/1Su9&Ǫv1׈[[Co|1amG(,̀(-a-ǟ2&yѝnAO)|wI.n*Rw&aR݄Pr0;Կ@_Пmh'9"ե HV(Uq{raBLOϠFGD;;cΞc%WSU`jY WB(Y%8.OS k5 /JJ:#7'pge֔%iғd'41YcGq6\CC`©iC" 4re!vk#AR32mgdU]3r6wgi%pA1 qM)Y7 4[izP^@X96 _ GQ0oO 'bƈ0Fb]ǧp^=gM\D#r(')*j/\?OIxS"5;"tM8_0sr]MUeW@Ӽt7 sIQgͶ_+T,ݘ99~ML WZL1w@'AC_vbC׉j }@r noۺLIwo_GIcJ)9(pdJg$C@j`lhd\ ɻ}P)~|<:I9:7vs_wƉc!IZ.iQ%&N$\oQO!h36[(Vp>>>~-2b%3Yocc1:rTD[)y-AW >X.E'`!TSZy_\_9Q?HU|{;1E=1xVg5H3N'<5m/Wt*/E$_0 kNu;!K\U)C:_*{0r0Sy N&cRRYӻ.kmK~?;pIy,Qq-Ktۆ3"α wo<D -ǑX_{4ҟxڔb[:1|l_=1U9܍W~9rzLqb0$SKA[ʔ|5/*m$9Xdb-&X&aCl{z $M(0FW(~.T^@_r //C*,Pp3qYvs`ѭ\s'֜a V,JBMz;\e Ϡd!s@)D4 B#E9WZ%LYIib7 Q.ByB +-؀W`٬9XP^\NcJ)T|X.qW3rmyr@/=ŁƧz9md32DFiɴWE/LTҠI87쪊$j%&+Y?ͦaeKCf~-5- =[[rۿ>Iwt窲, Bl$cV$X _yVi7ߵtz {yd;g?̳n&ڟKnEߑ1MC#[O'^B9?vFEشOm7N+nk؏ac 1~~gp1L*133sк&n[H}[*ɧcc?8*YI?$/Mi\`=}.ƯG˵\Y ΍L6[ɷJU358Ag{W#W[P<?? KJAT7Zߙ^w0#+@Mȩuj>X+`EI?Ml,?;nmĆ,'J 4{b /uiSjMˈpˑx먳C7`i0Ѻu)8TTrƯJB$zaG.9wwC 6wWZMj~?tCHBk1ǑHRz"=\܏qCñxJ4ݸ[}QOЖ'eP~cSwcX=~>ZPJVs+v_?5bzI_}?7')Ib|)r.>t ?V~A<{0d܊+hɭ `?"a Xeх~"UaUcc&l4Fdm-~'Tp2<%54@=A&5VlY>HÖʩZ\W-JJJtm"KvX8)LpP__ â{`Gg~g׫鿚#;I X#\<h;-0VwQso1,>Q3 f8nï&wD:AG.c8YFGbc|-_h=Q_3~RRZRf9rVa-ſ̍񱨛ViYe?IJsPlmmG4$l)qRP6~:/|0#lNb> Eh\R0!Im(Իy:H28Ծ4N3*j뮔`'O /bq/pʟqsO aTKFZTq9mqMY~+9u`o9YH˓}/<S :ʋ`m2RX}/`8, >-ᑨ_ O'iErB"ƹ>_3>wgݧu@&+\9oO迤J <)<"7U_0_Sȶ?[J Gk$^v^CYB@$(Oa"wgx@-\G"jH.*׃)ٗnjf!0@銙(!eG^~êL(ODK0cl̝ r\8k{$C $v u waʼ5(wVУG{[~j?t9b-XI/$~towVe+%VϚ\ W=B/9U`L~Li [R KNK0wWj|.?5Ͳ R({Y~?V̝GEjdd$dNht/hC VԹMh&~.ԟ2qk?}O' 46:z:5>jBX%^34Ndz߲`JWÜ%69bR-Bڙ/: H2^6+ĵk3G|Sr3cEŘ3mʉ?n+~ +eA{`SB1qXIyxQ贛O-9eL¬cR9TE}WiLH٭/>Yk*dǎ anjП2P c?]84RР]t -=cqѴ6H/O$3q[foOZ9Ŀ I2z5n[e}p;gGRK␸yxZI9=s+Ř1}ͦ Y_ʤ*4v01 fcEaRIkj Vca5֐٭:r$ _(NuhAY폲5X`*~z6&NF9<1Bג'(1 VbW3(ÉKt/TS瓟VnIR΢8j8,.$%r3׸%ڶnnŜ_%  t%f_Ɋ86i,c%A_{urWfiBrP)WLl=QANF<#hDA Ճ ,.dlT$i"\CQhipˁ}dnWK'ZEd΂ZURFĭSiJ˱d8}W^VSf`IX>w.:xI !ʷBi5e'T_6um_j 8O[Yي+dVL]UYKEL"8W+Mɳp,M( E\87&82vvZ3ئk׮e,B qDtivK5ٿ>U΅8]TZ۹h_wؚ#\H'iB|: ea mi~¸?kHl~CAKդpp~ y{CUY1R@CBϐqUNjly'tio) JtkW$(猽K0ⵚgoבA? הQ`}y YWRk:RQQ`奾Vq&ձ:O( 2Q|$s0a\)Qn܊vr=`3BapX]E!xYt0g| ʍI28a7tp 0ǰw+L3”?CQa?g}8 AHK=2D7 wXԓ0r`tgtr(O/ksU^Vm?G*˙>G>=rpo'8u3r)%/DvcKi )xqsj6g^wo831zߛ m#ƣ8_tݏ|[ ?!|PtOW9:#szwH+\01 c(B+}{:CELiVN3leзAszuN[_{9w "׵L} ,~HসPy1 {,zq.1㌂&yGK\x_o;ɗY"8_h-_p4}hZYק=SZezO~M:h 匯7g=H.=.|lVNVSuҵ,S*?5[k].0_e<_.#E.8~q?e8+ïv{{K?WMpG ҡƍik?K§*b^]={΁tgR2 p'+:+~:ܵO } Fz]? 2|ܷ˻~|#0rFTbеg'X$|.U,w8a8,M>CťVRasOTw0𯜔Nqk'KO“》ӤcvB6zǗU1&ݕ1lьYP?`QI2 V}UږJȉ8P N4[ ʙԪR Q̠VdiV|% )_dp*1!+/ nZurs7T$W;E4&0o:#+X˿d> 3Rz}ʿ`~c_ɠ1jHxq>usb$SޛcF'&מr[B;n{a\wTKCV1D$235_~[R8ªwMíJ|fg3SQ^9Z~`? {p%DG8 Ӂ9 ]G3ã83Պ*Bk\/{@cq6GO{ .?>"*o8{ϚezEYyJ7TF;_!Jmn ԇ#(W-.ՔI%J ćM%*ٕ]X~)!7G]_bƌ8S\_E)B4sRS*:K7=X?{]YZ% q$RF܅Ǿq^ >f9Wz`&x;9^a;WrLB9,Ky)^!4f}[:dٙFepob1Sݍ!/f? -o(_VP^fQp6S"VYAeߺ,_cnzch\!1q6iI~Ϧ?Lc*+M{ --|} B~X\N~qt@`K͹Ll4N#7?CpdKAi/ BWG-KرNtZX~y;U?z?5or* AIiUK_wyG'cN1'=²-]Ole>CW|csExL&Ui"ك,^9T9+S,#2wY _oq8c& Ul!w\i}Y:tXdr1h#Kv7j w8 ״-"-hZCcc3! S֗9 u7!_;!Wq:z `9fɿʎʐc7ࡇ^S]dʐ5o5)!V|,$v"\5)i5^݈i91B8 ݉c犊p4uD#qSa\e^IGZg?o)ƵfREChʼnVoI70,:$Tq+Zj R>mVٟxn\<s07)\J;80Np xUR0#+r'g+dWw+E'B6I97jF%4wԻ8G$ϫlŕݙN[2/*ŔʅտdpL1{UZ\jyek7#,=r"۫#hSp]U4"5+M;=kZNTqnrx$GII<[b ?֚ ۇ'zP=6 F%5˰[tј$29Q+6pɃ n$&\|ݑҖX8Ȩ䝖ʱtT,@jd RwCyVwU|!,[Ul̸@ I<m < '&޵埤R0,Hޏ7M?dt] &6 ZB׮.N#6cݷ씎2aIW=[SZ^\.'SiA KQ\t lqxÇV)컇l`o#¿=}`Ԛwѯݝh>Zg@6I8nzgVuifrsˇ<'u`hk#h~҈`FnhG~XԈuyqiqƩ?dtWFӃ?#Kx੧餉(] >=#j<ãF,~?ϼ9+#/?]iueQfݔ9œU)'aY~y΃7X#}8-v߾Ix!ֿ`v]Pb̻mU})ӽofd^չW6ӏ"2|pwXRt^:|T1w[(]~0^-F^:FO bG9^:|@ehgפ?2b|\x wM^6 M'x@,X&o"֌X?uRohQe]_1ZiI(] ?9hi{8ˌX߾F #aPx-j~^PP"d:ʐa<jO0R蝷1dQ)"˼s->ʿBrPQur&[oϪ/P??f)< otʞ3)I .ra P|MV\b_͵#Xr, <_fUӟ?Ѣ4*^Fo_uFp7/a_ ?`*䖇s^*TlwujG _]ދ^CCGb܅XsRs~28 ,1 3>1VeiR3O{lPjSj]|%ҙ[&4#!g]w]ap~LMX  hT|zމ>BjZ!CVUz\`FO^'D1ϴ <\=]ήZ%(-l5Qcǚ`]/V>ԫڵs2Zi-$% E^t$3%3ތDW?R_99˷3v^C=ۢWަ#6R!ڶi:`6{N:%@Vw^S;0H;kNT~{?hSNduT'f/a&0mǘ7>{@?n wHtG\3 kJ7ރl,rH}#<QszYyVyr;<>kpՠo|qMX'X-bOT=y~|f/6X 8tMmu*B f)/{sU(<.4&~;c̅gBԭ'f磡&Ry>J]=_r RP]'4sC51UnpC|:N+sjÎ)y7 ܷq|8/r[ UcmJ=IMl!H0,_ ~`Q.s-u!C[WcOʒTD_6HA)JuWn"_NVB5i.3?ᒴr=b5^-hy}ٜO^\=Gq%Oz~yd,n;q LtKxx;V<=jmC!rIH\2N"vˎ/q׽nMA%vDB|5>Kn|FX)8;Bx7[򢻜kO7m2YV!VǼ$<~wAQM){)_,-;{ q ]Lf4Cs5gej=FL+f$/dz/ޝ2|{p&׉[3/Z]mTB]:=[XP.by\DtOdQee!*a Л(&2j/ċW9ҦVPf%M*=hE2_ົuщC9at"A*4yh[(,/I)Yvdz3ՙɅPtnŚ?rx2.iY$^ˆApe|TVTdVj1vsGZZ:#fh\-+,I[ :TzۨWm 1 ^; O٧PPb=w0_ԹOP^(.טN?.3?/=.}N$͒r&LE߫,/EJKL?t`Zx"qr:Ʊl˫ p=^C?hѴi!`޽ ߵz(̓ͳ+hA|v<#WWḊ,\~_)x.TFՕK֕o[ef\s9V.B}?/]Q q-^g42.8ȹP?oolMo9y5F 0&te}$F sT\a,]퀖EOoX|H}.h\m_Yٔ rcR,Kd '"A+xpdo4K's+C 7CrϲhQDzOo|ꇇV<-3_W`#C .LªܓOӟ aֳxM'WPT:ylka(oEoF>,q3XҨfU磵g{WU0 ; dI I4ɻ1LڊK_!M iw_r,&*;(h–ߋ'k)]6],^zyG^GǣW2ዮn\pمYf )K ؾcBpUp̘B*sCa"fV2(7Q,>j,X^f۸#[Oi7x/&"%851̷G|Y~I#H%32mIGGf$9Z'rGRgߏyE+8:5)glqB +Pe$| \%);mOp9 5DE& TVAGօP/X.S#7rci)^0S x \0EeU\)J9@#|NVx%ռX&3% rL-#?.+a]Ə"e(0i$M}bYWA_svȸYC2cX] )RuqeKl\LteQL_`?5NF`me!/ y_ij!Bɟ -_rr-GS{hi?\bSWLu ! @ż)ƤBT\"MH0 S^[?ϼ.vpHuOf$OH !PGsix$gE!B߀`6i Z.\UsO `r{1Ex}xġ&~%hLXr Z;{Ρ^Q]>JpȈe5Zt]X;o^̾/G3'vmHjڪuK3Ym`zcPѝ:[HCu]g.p!e+H g.^J]MHq6& B~S2)εVa<@&3ލE:̡*&4?fCp#ᰰnU(Qld# kλ)RK~kaBO|lS{rzsngD6Aqp쌉&[`j@Cڴa9 4$dj~clkU=Y1z$˿`ԯ0N=qċp8m#d؀0~ S-cTFe {b%#?bpqτ[ yG:H-z׋oq {LJA*s㚟~_)ްţ<+VTp / Y`JzX5wui<PH[Ç/qS #ӕw+b/?2 S柵IdFx)ZYW,y: 4)$;W `KE]> q~IQhC/|/y7o>AawU GhE#/!)N=IZܐR˴("4on6$ϲ"l/SM.E]"TehQ&JϊND @n3X{GO\8c7g_Ɔ K݂gǩuw2݇_{GFz؆3g?,ɫ+S+vW !#GVEo!03KyC tCVїWWGKs`_o,]wa waE=X1?eG}39ylɐ-2XY}8F*X{إQl) 1BEg þ!| uGhhBLPq/~asIĢ]A!Pq0^vcE,4@)lI<e`ux(EO1 7;0>/4V-Fd|E{`y3mJR([utGWWvL-~{QSkoU,kfax-~2M1C#/֑xg?:Ƥx!s遚A߫Wӽs5TjYͿ5IT<{Y'_ֿf먣\-Wߩ9zg_u;g~tZ.^7`DJ\b~'Lur܅>踒`@̸~ ǣwK}z7HxV@2vU7-EͣA]!vnxʏ3HJu%-^pm%Pt oW&7iF#7)lhF$W|E)0)gFc\u޵2|=~fI%1Vq/#Z_Т{Ao-vX?=7]RaA[bXsR"vv+p/y+6 8G_K `f8}'WsW,f ?;&'ذSF/_5}a9jts~X ,j!i89vtW^4k}MxL_5I OɡV2@PdБڐ!Ĺ5D7~ 9>jn𞮛~x:S4jI8ϝ;x`})UV۟BG뵓;s2U /_J3 ##"!1d"gԪaY5ZfxΌל2%1{i(!L%~UQkRW̝wXpԔ&B(Gy9yFMrn&<$ޤx-^ llgU]:}ޅ%Urkytz˄5B$ѷcЯo¸ʯ#c1a,~~UCzӶG Wۆ Z*[KrC&dN^(ʴ7:*'pJy}3t +Xa1d\omO¬~aVy4,atd0 j1/wb45%jG:.A0IOi@WxQڶK;P{1Xn>?*ZFg9.8q[bOca!J?d7J$|]ֽL;?ub /jUOWH jE76RC$ ƫrHZP YG_(iT:&T|x8+4?e\ ,]l}:$ q r x5 v#z|{T+& ãWt˧^n` 1y0q.lP^_ tMGLo88'uܨ-4|;eJi1go}H*^s>V^;%>s ;yC 0Ww)}*>sV0^Y7mPgx'~9drQ>yo{KS%34џoď騿ͱߛ&F?oבkBM!^pi|!o}Ц;x291rXQyE|p',jǗ̍}xPIHlΕ24vˎ8`}hV^2} =!3"hHYEӤtde/@ J}.C,3 a)S 4HV^Mu*Z3+)/\Mۿ2GW?!p ٩#q}Cm0'U_EE{ ; r͋kU=3@V6‹_Z["tʿ=3=k`->sbq^[AJ 4o_.8_ʃġk)U?:`? qHj@W2/GG==.WV iyeqꉲ-T@maqdLMǢ;<TջDt,C m*-Y#pV-kƟ"*ġ9{}\ϲ%1n46b7k[2|=\sm\!>->v-A1B6c}G\ml"]T֤O+_M~"]\°E&իe/pU)0]C]sƉ`㼋4HJE˰T~py!\PS;c ХMϒ#eB}[i!&x&Vi ]0 Nƚ`#}iDzV*ǿBT6֑!8$XO-拏᡹%tddooO\ ;82w t-݈1Q,\ֽTy1K:Yjca ]Oo=TʼAUW߽BF u ;;jNh 쓆x.;UI! D5_Sgr@N݈C'vqahGsd8wH!s R/BtNј`8G3?X*,9.7o\K𮒾Qccڴy1xq$< j9W=0,B2?!3qk0ٿ(.;촵Yb+?:p_Ĭ%~W;/O8[/M[jR)~ –WƆT%0A_p}ݶߗ3-X O~2~~v(u.oqji\p̹8{KX[[n2X>?.Vo<øxaHg ? ɑ-;ń}7vK8>VZlrԇ9>]̿O>yq#VK?HQCH*w6n<%1oǨMQ,ZA|o3 ; O G=NR>̇O ;KĂ׹[; ĄV?" ɫ>#W;5g/X4OM7owl\hR_ǏS]>a4'Ecx#]C{m?+q%cΌQ+HB$|o w"3m]3/>&82mJX?bУω;z f ڐ$ιRFLxY %zyDh'h$x_&d̓ꖙq幧aO| >tVpI&> \74x(Kb3̕eY2(8`tyIfƃ޸;W4շI(p)2ᗎ璾B%,2@=~}c#N+Z߲{G;%&S>ح3y&ƫT+]>d vOP9Xb,.8˸H,v/9-ár%l,cl!@*_dy]*{F-^VI 7mmv\;^>BP~Z\{ qۙgx>FA|*K/vi|Tk@F "N*Ty.mhhH)^ Qf?>G[˻Ihs˪8exʊ(݂a8"xE .yWqJwad" wY(qWCml a`q,?t򊟼5ўt{N$HrNQ!L*6E@;@ca6?IU'Xk0.9qCwq>-ȭ[58Z;-s?3PcRA/R9QVUc-wbP'TdY)D E6v1RpzC_ DAgPW_?ETicG5IdDB5m }OCY1 F 2IE.,0&S~kb]<0)u.z99xkX51K0}j< ❿<@2{nZZ+&mCڏ7N5zHJ 7moܰ_Lze|9_yQ{itD/ǧuqm1̷ ^|ra~ߌ#GwDK[kbk_4I.[>k~SUnVhRO߸o L#ZFD׸ c]UwO[o]cf/=q󣷐Ƈi0.iwd'_ڶcENZ(,,8m&F,c͸#8Ovyo<rahKo=;9bpLj'e*0%uN#NQζ?o?Y0΃ϐDgN"rLn*;y.y]BtJSk_!㈛ضSbVY!NWG G ?~Y?? 6hqtmUDy'BF3?jJ316}g`t19~66{mcTZiC HuƭnJP64GT!5V6lC >Igo]c#8ț_Y%>θ 7[ݷ.xٛ⸛۟2qn Xx'-Ĕm:ld|m|"j@,WGˋQb5p7qVFyL;v7]'N.'I ~%q 8|:|b)S){'go?p8ZFlNLXF8 sFdm 3a!I,,dA0<\trEI!yWG_HW KZtdǏOCI0H'מpRL?4h?N؂w18LVǬb,pO U>Iz]Ɠެk\ؔ% 2bs"soq 7}”o0+8 #+k-1ت JƫfBX0o|e%qbR@R73h ha,S%/`gU}mPQ XndҴJ>|njjMXHӘ>Zpt{X08_g_n |΍9*&jӣ#3eZݹb[A0G+Y&W*))IPS$nRihʹiT/&>܍NXTx5f\QTjU??ώ)y_yKNi- #Fh' aG'OA@ezOoZ۴ Z]V1pcwc$\N%^ƩSN٩*kh.LpO?7G~{t.+~~Pyq9Peƕs/c3yiIMG=5vߊf2ϼ' q~[;Ny:޻wr~=6#ʬDe~V;?{:`X`A?hmbGЙ/>q֗bN!a^L;V?~͜r }>sarVyz:iɌ|HeT1"π G[eSMv osJ,O~!>#/~1~?>.1z𹛯@^S$>m$Ȧ1ˠ ⽗^a_އ{Z+?ae[wʔ6*0cr˘Ț丏qŷl= ro:l?uQƅGsdL?#>MNɖqԐ7^٘rQd~;1]tXk# I$rGw{†N7lm۪8P !.x/O^jy9M6OD4d juY˳9ޫzx{H]#1-7hBzޗ↟$W$N Bz?AM~MG#BZ8 pdj fkϾ1N.0Vǭ>=4v&ڭgq¡luW,eswC~QŜ{M8^) fa'E͑iBfc@.@*nآg jwJﲞ[(Q@gMCmsM}v\q̷1jZ@$kA[~j\K>T'@Es ?!oBy:F0i7N&ޥE"SRZ#d`w<-bJ87~:h_B@ fV鵝G9h]hRf18 (^1)xフH2 ' Ym "zP OKx:$˧B{ Cmj //NzEAwMVN<_2paL15NII@,4؍&=nixH8m &ɘŎeѯGue_6<ўչ3]ti̜93^ר6Jfr9#1JJG*4G?z]s6Rq㺢u /Kj1qbL@P/ߧcbbv{DzMF' .gM^#6f =b/7cFmy`bCe hk1zJ?Y\#mbDh. cGic-d0,α1bBgbl({?&w~zo|1wtd`dl mEi~h}'&=u5,k]nM27Xm=O vƘQ]1V/o+Hў>o{T;8v]lGPX_<7g,Kmbx*ZV''KYξmLq( pCz8}7ܕǦA{*u,yx~[#b~oGlDAJ}CE^<8H'Ŕ?cdN|ljS,wW<(x b.v6~,Y$nxD0x*[_RGN"i9|-ӡjڟߪj_gw1uT{4+C!<<†(9mr!\@>2Pg5L.K Ũ_wUK: 6wO܋]8 @[fJPl& 5/n4_*eǢ`ymv8`5'* ITOhUs6ieXϰ QԃͶ X]X"Y+֭\8fs[\KrXK,v96om}tL~bލ7u]yk*-'T('-/5ާn>/r[ل";?2NJ;6_h"a:q;KA#,83+EB$Yʓ<7҅;[(o&ԑy6m0<)tB g?vS,yfwv)9!A C 2 oznQNo( +ǙKC2c$#@rn"퇂 ed%A30J:e JŤgiTθڛǞ;7Z[xGw-\ggYoOtظ[.ź1cE<o$0U/E!HF2^]U"u\~;uߢIdH kUCUOVLU[9ΨؑY Nht|z*u^,xM H D~}4l O"d|vT_DJCYVqq5Lȗ_eb|J*iA?#"v_xnU_gڿ`,>ͼWhAYJ:x5~vׇ֫^tL0\n@2 _ ޵Y \SV/:b(=YOgtʼ&)7)φ83LsEBK{ʟdg'r-ƘcsՇ*o( CXy1ẘՊ\EŬ/b[obKZ\^!Wn}'i".a QY/̢1qP9=QG7pTӻLa7OʻhՔ8'!iZU JdlIa @$MAg`+mES@mQSpȊ-Zeή0x"(3`EH,: |ɱP&^F,AWY^,jMu#ؐ 4?uL{b`MnSNL٭լ4}2!~;bωmw.읣>5qm-֭wupl}6FşđC jP^UzIN$;S\+_Y`臀&TgQ!R6U*ujU[?|iG5bLo&su):kdSAs"h|0D d1hIj2 Qn%F=p s)@%*]sEy΢9{ߴG==ڕZD҆OᏏY\tgܽxa4=4?MxaċQC[YE.¯:].g7j*g 4LzN\=Am+ewp;s(A`-n#4+c=G ~ 5 q#9ga_* G˱:}~c+Plѳ[Z](ebq$_̟v}1ݵc0r72Coo`53@E{i1Hɓ>~p%M%`ҁ2]oDE4R!cY LD* hLP_` v!Gl e'1VcCmv@W"2A*?G.;Tۧf#g^uS~#, H5'N=˖-hOx.깄[&K.3gk^Z ;L]; n (xԄUaRѯYP:_2DbH\tB"dE* ?w{_>y-I;oҶ)@>( .kHC="cAP~vf#@eiZadKJA; Hѭx;>2$¡`ONB+PvJ)-rע|C~Nς hpU%4,xXPK+$ lĵn#v5?\fg̚89nxZֽ4/5]rA&R8Bf,V/‘\$+?rcYȯE)+Kr=ʹ*:+CbBI`9dM@% /UUg_1WD{TO2ekDn犆.$ ^$ -Š%a5o$B6 t?&-Gu'+5(N@yA+c(0I @qB/ʛyb+^ɟ~))([{8qbL\RuR46➋/ziwFk/V^Yh S8,.0=([8ZU[+ S/bE=FSrWedsj6X\iW,`E0#'R;x2܉Ox(ׯPrF Ô)c$(N,vz, hxnEaka/9&wWarp#1Hц6\I2@a D Ch! 6#k΋`H /d #]טѱh8Ş[1e|YWɏ%~!Y> o,)B_u:aeI'RΩVȞXPqUڟuH61by,Q]cjQ4d߸_<^'3a"; TNC8?gW\3$g zo_=u:YW? \qC{U5 dzrїI⚐`}30ֱ],300oKQ NgPmE GXgp@>b1iE%j; AtZt)qGQ׮~ SL(/tZl-9-Sz/w.8ƎZS )95:JiC{[A=AF6@ Te}UXH?u:bz!rHY/qǮ"OF!U$M ~ cI,<9daI y+nP=FfY.B_~mHyC:vDC2`^*\&E#j~.A"%lʛ`6y7Z A)@i0p==gu`F< Gc֨cYOԾOEف\xYJ_f9W]UYt0kRukj\T rVvjQ?U[?HՓoŨ`}vQi~<2 X r*cڈ(} ,WLfȄʈ-T+WרEuToņjR94wfy Z/F6z:sFP;9,gUw" f/4 g} e=$mLe`7J__ӄk|44G(3'Z,~Њ#_e1aqI~GtQRlkWqC W$dxmHНz`c:/?  5NA 6Q{ȕLyc6O)߁'^H_M+@S{ǖD|lp0Pɛ SOē6$\WNY?(Ebe KBa8z }$ϐH& {vx*kBt@vrb=/"/AFLFxcmx hk]Nhø쟞=KEV:R}ݪK3hc1/L`qUopzNl|'S5Rgj}aYڠ~jFy0\7)M=C<-GDjqNPѭdL &jIx]%|U{;i Q1Xs@h'>$?`vw/d/,==7__vm\}bQO_5yM_@o_:d7mwKKeTQ]@˶%`F4z`A`k - +j9 X. &ͥ:':FXd@?tv𾩉&N*8bZ[bQ5rxcҀA{/լT$&<}U(~~ dXm^w5YG0XY1Vf HAI2P4XST |pȹɟv!sE5|;څAK0l"ȁwB#FkQ``tk]Z 2<$}XP;5at;MHa ±:O!Z}@vHJ[&6ٲI7$98NHrNÀ@7wlF0-r'p!k -?Xcڼ71f̸XڽLq@ŅxK1zV(idݨd~QAYJWWQ }j#LWBG5R[nI7t#^.;\([-L B2})VNdj&bql#_[Opq92/\W<ҿ'gϹ(>|Y|FNǘ:vqtԿ,|ޕ`[`N2iqÌ9b-fEK8}^~lbvݞcL|Jt' Є6OH[?zWVuX͙"w_LYZ HEA^V8 ^,R꒠㼃 *dv5QkPA& W']]ww^v֙1b yD;sɛz5;O|0\O~cB'Pz+>)e^cxbXϲhT 0,^ 1Fe#Z@0juxE+'m^EN$S Ⱦ\0! :$Ӎț**vw%2AuÐK]R0 Z# iIVQOp-`ޅ;HpHRa @ y9Y!N-ʻ9KD/ȋrjF01("6^P &s'9 r+YoƚLX=g"G04l"7۸;%߁ϊٷ-Q1$BhqcFOw쓱X,9R(C> @YUzfO_ DH4 QS7hϳPwEݍ .ߪߪUSP0>R'C9^wu.T(sQ$9 ,2 A ~wPyQ#}9)f prDJ& ']@H_AO&M?x7c)%Tr:dzo:9aިSx:fgW8zە+Җtkc%3,F4qvv!trim];+}ȒvY[= U\ {SϺ㸢Lν8&X1>3 q 6j 7 uRnB*2^Wώ%ʟ"&>h56a$k8^4H2`}XcOԮx6⸒@OXۀaXs)&4Zz \膏+]F^Вr' l)al;a ƴh9@z~.W`eC<(|'zA8m_8Z[p wIŕ@%<{ 3`mR C&*Z,yX2.K<JM8|#x`I Sz5V"4!*>.H`)ϳ.&${R@o`lУ25y; %#Im,Mawe2"Fvuąg]ӯ؋j1+-1}=ލmTz-Z_I_r?BuxݑCT@mBn)^QM5H>ëRm mVoTo5_Ozyn@K3&09,#}\G΂ 1*)P7: 'h^}x*3.bY_>p\ X#V"FHEZ|e(?' H?߷(R#NDoWREtҫcϙsz&X`kJR5ET rG}{57̋eXED>YK?OzMLsM08UVN+CIlϿh'.eEِgW Myt:_# %|.^-]K|g%6+-hnjW^zư;/ysmސu:fp)mڝ%5&n 5tUBG'W\⠲XK.H]o)Q?h6]/j37h c}Awj5 ڟ߬Uf  8ǎ:A#Q&9rua&wB4`( //V)CH)D!X/ǟ~w\u8ja]+8MKQHIh 5K9=Le !+YU? a)nCNW/ТǑ~<.UoN9/ ~[kʶJG׿;:,އ>_r/_)!iGP.;X`qΌbɱq?f[z_J}z;n)~XԽѶc}$Л+23LJD y?)+Ǣ] s)V$6OfEԢ>0 YIzV]nz `gbGEݖ?ǙXL˶?-_0XeT/d-vӷ`Avi1;Z;GIOűxލ--)qs=Dzh<'FW46ƤaDw-ߗM%8q`ܵA pp7-s@1*yx0ǀExnѤpa1Bdtw-|H M1ZW~8ǀH_y~Zi_CQU#FwUA5RK%p!_jFPFO>~]h\5Ⱦ7a5IAYG5O1p5zrnޑN]:R[`.)*zp.'ǎ$b J& LDѿ/7qqo#D &+9PI|<>Ə߾ӻ.@o^F, <ߴe<>_ێdIO,թJ/wvuDKUw.H?} 2{olAg5*irg?'q€ު}G`Dǔmb{ks.l$H9xh$N7έ߈V-*S'ej1gyZc P V_e f2SԸu51Hd+9 oxK&(! >+$OES ʹCx**& O$ɿX,+XIx& AU[?Y +Uz)aWjGJ'ϨƿQշ2XhR_O5_Ř{z1eҹal^pto1?W>I tP\uEq]0&<+c'VM!}/Z:6m7όK/2f,Xw~Eiw̚6#>n,ynOY͔,YteGJ3 )^(Eqmȯ㞲Wx+ %f_.kܺ?z=/IkJc $#E7$ ޹qŗHŻ˱#6.ok]Ndp-'77ߜ[7zi[}䔩ѵcL#ùSkAl=jY:gĩ_VFa{஘G Ƙ-F(V|up=qۜ1lBD=/7n9+fvw̓Lm1ndzkL(F3 s.ŝר ϊ7űA@YමO;6E]<-wG`o3">0V Cgx"E)",T[9#r3GZXefV=8PTc@\ޭc puϤxݒKWY @;KN>*m(s~55quFQҙfLPTz VZK^cH%SZ3=hVw\ A!|Ь\0 9C2l>+t"Q Kɰfer, *T6<\q~\+Bcw#]ʻ7Q˦CwzjUc6 ŘWtd\3QY4 zn ϳQN,y^uY*a ^I"EFSn |ClnBlٙc ]S*\1Qw`A'0*|mشX!H :J zBPfhE ů~x/;F1 >G]zbȶj>"i2I`UuZת>P'UiΧTjzm]ezJ_N&ݵqH݀3@5UR8^:lʎ$t2K~{q3?8O⏾:%;N\of#w:!H 蔰8d۽<|BxO S5Θq\e18sm]vw,=u $xnruϩo\I/=Z4BJd(d9aW|,,BqA B>xgXB;)?. Ig"}%)e ;:%\or}tߎʰZ,Ş ?~q2O$>zZ?Bqy0S*\BZtE߃&?;ؓh^J;}. & W%7~e1qډi'4 dgG׏;wH+ R.ʬ._h"o8V,L^l)K'܏߰G/BejI-d;}块6/*8[k>_͎3_93@iGnխ7UO[OmW/8=ܴM ZOE_E1ġGq_u41㌏.o?i\i)č=*(.#:6p=cMV3)pC+nG󑸖 ]El^tqn١Q [M[辰%{EӒ2|kӒI1PrM85:LޢߘD:}.>q7wwYD (F$QI7yD}IHЈb%Tza#VĂ;/Ď46c;wd(o*r@IDAT~**'y,u.rZrkM,jxɔeVg]#>yc7׉8k?x%x0@ ",~Oa,Sg>N,{hx9f|GąlT9n@c;jl=i||LlΞesw\a\JG_ bיj0mbwı8CXcc 9@_SqhrPܡ1?ghn=ccɽNfW[OH,N+US#n-KYۡm\K3$Ki[tc& u.7*qN,`.1~8hOZ+n<6$͇'> 79'f{SF-6. 0::!+dG9~ t0v~;Wb;: zz@)R/\h~g$RγcA+!\AsiBCCgwE_ A4 ĢLpէGXl$9 -U6{>+j| |XDDJv+9FtGblחʚiR4Ȫ(DŽkSUĶEc7La׫DbQK{/^K:6ƫw:Iq9sD wOZ7`E' rxJ=q#Q8iņQz'u "1NF& pG7Nstkp{JLP8 ]e̕Q&$'ht)F;2L˶x[#? AW!+^IvJ=B^G%d 5Xׇ-ͷ2SDҩk\HEDNALGꩋO8=75;q^a>?ab-DC1aSjCeujQ SYVퟂTv}a\i`Uc3:V_Y=f^V/P?W1:gQK֋6)Y㛱7DSc~^}W lzYA[`foc"ȷw->/ݲ'dl@o'd~"ff3LN3<&?3Ec )`1P\[ϩ//IwόCK=2/WqfvIe{.+t}%i/A#n=K~oȞAA$^q/,㚇bfKl<ag?=onFG^8}YU .ZL?ڨZ_"-tT+I[ҷ⬻cr/{T/D :$]xUh;`Zʙ\gI䊸%PߩLξk}@w mxiQG篍>/3)ۏ2G #[ j;Zxw™C߬z3 59a > 'f[|KN1qЖ|x+r? +#<]G<ҙ!p"؊Dl~vVue-v#$S؉35W8Dm2 GtYV$RpwjE*<{`D4h1qk%H$)t"WűXN0kRLtTMJ_rgA17xݑ7ǻ3:Y|)k|tXE:K{0h;Kp3d'܃U4K` _o[yau`Xc-0#0dGrdN9DFו >).e_WN=+[pK|.F;9N_7ӡR~&nN PTw ,&LRV PI_9rkpXo[n8ONbjoѕė%Cd uFpt,cTz`}:H38D~n1ݗ:'GTONW vk^~bC,[&_8A󚸁p/27cXrVr/Ѐu1G{WԆZl7_}k*L'j Ʊ\2'^/BP#@J|P||lXS~۴} wvXKo-Ϝ«AajȌVہz\TdeU_`3>Ж.4V@!`;NrPq{\“pp3ȊIrxb }epߥj'JFqWvkGƈk dZS5ǙD9QW,Q ٓD͟ѷGmQc6iRvS:h+r^¡&I~/J<*Js^(q TV<-ωNj;J/@n񃓏h:RBUC~--$<K~X-ҊDNYŐPȪZqgT\%BeGЈXNxA!^;|P|ZRWeQl8Hx,7ʷҹE{x/ o֥T:QM|044'bLlJ.҄P]ťfp_^Ja'/}}^)h5(iv\0 }/IQoKU?\Hk(JoqRտ_&T5nV׉jE̢8d(.xmrțHF@x_=Xĵ?W8y˜o1EqL%hKMN/o/XlP?x\w.ZCs^p(}Ř^ "Yql#Ԙ|D9XO %n' % &-a:38f|9>鋦z-@ f, qeωs+%By |J$ew^%'{n$n-a2um/ώ$"3U[sBN <>t/JߦfLz-xhM$.o)瑛J`yu}"%8ZA&?Id\k`a^`.cmoEgrCךcc ٚLa'lNy*x_geqť8k}yߝj;x7f<zW֯o.߯;>~dyî\|㾋dEQ*'y$4bDJUv+?/t? %}AAGw#"q)#LG |xiF&; 5rwtE^fM-u6{D/]7UpC|qLp7҈h VsNz >^9QK<<0iMl{6:Q|9/ag^$QPYG$1((,p9Q 5jlBWp&ܨ Bêz yk w .)j gJzR2k \Ej(&@)AN7J4_.Iȱn'-Sb6dLJr_3S_RR2@Wt7Vrׇ# !%_wEJ/60Kؐeq1}6I R`6ɍJϘW3A9G^OGXIVOVґVy_utU[?_n s$ cѥ&GC96%j}:N)2+E_e&FeTA^BdS '`n7jX_[i>FS㾬I״|>6}3qҟriJ&/'>T7`@OrU>bD\1>IT^*7y*/`"%)'%_ V['}%>16YC۴/;c&_6Nʷt޴ʟɑm&MF_@DQ 2ӊt[Igc~Ӂr5a֍eGUS?q`ߊ̂؞ȯ 迱ݲ|;]s&y_P(O3J|#,]y -UPcbYf"$ZfSoE`$G*yē޵)_iXnx=v?xIE0Ȭ qY{o|6+F %Z|_I9KʿO_lOWe/)KE40dqIC^Hڎ\DC7}c,7ꫯJ, phJl`)䟷)ʼnm>7y2.GFWova;z  P%|J0t8nWϫ(JH񥯥}f]IY7,+Xg.7w|mkqvo(h[5#GQo}yTWDohs &_#c)[Fz_sH$:+qѨ *%ZC?'VpP2ew4Y I,CaAW&x V#9y3AI5^ {3Ol}% h3SR&wO*u&bN-vel)UV̸x_Fqv4ub 06!'Wۓlxqţ°4"oR^M{<Rrq[/]1E[Oyz.8h\H!uk1oK$Cr7`b+x8('±eH>e7m"Uf𔫏?$CQ2)4`:. I%TxKM-_?ꊫ'MVjC މEyQʱ^y']8Ci!g3`4Kl+=6 q_'_s||;N[𖩦QhiTO.pWNL4)kn#a|冸CB$G|esv!c^ 1uo">3s+6v5~J/U~^_ОA~&I9}/զ9+ddFVR6EW}-F|d8w->ݪ4ѝqNNn~%,-Π RRVBm1EzaPWԎfd9|C/'2S&ͲGa"F!iJ+21UүC?H0D~Po%6AmCcs Ƿw]9QO;px㰝<TLYkY2Jbn+ ćk_IƲ Q ƒ-sf'`͡/PD_ɫQ0 X#>.1J=35Ӈ/9g1_hUh[.9-'ڬҚqF4Zʨ?7O[ՁlGU%q|桹%xWx]qGb+Hۦ#]wvdK\E֯[-'\^aEבPyy(ʇ|g!JCeۢ??-0"iC;&ocټp0"˟tOL'𤑑#ʁTbd6۵9 EgꀪoYsMe/5O -;1IRY*c''?+:&8n䤤 Ix\¢gBV~Kj3ej- DM,.v 4h8V]_ Լl=۹L<30dAyy+ 5Au~şTUAj=(x6%> ű./vYħ%e u[8Wisb_?֦Ra^(y57\E+2x-pـԺ> p"-gᴲNb`x=cGs Ne*`e\^(BO`1 Öt'Byso1$TN⻣][ j/jr&T aOZshev"gZa.ÿ0 4?ڟ^TE[!}`4P=ۢGjЕjk],=DB_USfujUt=t dPM[ŽnP 5%x!ӹDC  @b(3;(X6xljɅb¥vx ,?YyZS|Iτo/K.Bp (h OW k=!IM _]Vk 5͎1䚷>,L/SJ.qM߳zGԙh ԥҖBr49iI_5 !VF[\O=7~wshk6ێWnUBcc]-%,#hCG+SC ~>+ԑfRt &jy\lo̙˶sb91g jY1댏h˂s, P/߰! *lJh'$POFqII}x֩{zK,_R]pL #ToԿK=sdcƎVrr M+f=D<mKPX5ck3NwzQ/0 5kԁl1vWYe485?Ԁj#'*8G: &i5*# &l^t@4a@㡆1jU T8LDǯ[}4]ոW4+TRFw.*G:7-:YjSle[ʓgա@Ȓ=bH/0o I p3tՅ|6y|y#+enpT}\ LUay+H/BjVk=!% m?UODZtbAEӗғiY@8IJwG;4FO<2KˣW[۲R/9F'Gw\a+ ES9fV/Kب_s'T?5j+{ux sGLB4p31h^zPqr1F_?u)+_t ѱL| 9|rͩqŗ0$ig`^ʧqEg?3Q(:OMols oO fƔ!IVȇ-o>_+/70{-[<('|`|9>h%zA҂.;|)/dd2(SLeWy&t,w"/kuqxꪟd=y1Qg@W(LAUxu2C+`| cgwQ2wr`D)?Zbu@l6l Ð/J׵ _וzafL%u+n}Ȕ`+eDK% E~r Ccw$ ~1G܊l_2Xr_u>:ozWxV.dmfXm ֋t}n緕MM,?;N]<$޹D?3RRe?&1-!ʊaligvAOK N3ᢽA plYt3.#0&QƓOv]If6 }0Ag$vL+jj8lK єv*jmGAT&'Π/V|jt?c!%m N6SW _3tWCԀ^̗SB^-alrܰ4xN+μXSޢe6FYXuЊ'(bI*_9NmDAY{׶ouf̹'1v/G%2d'_~>P߂j]m-e(e)hl!>\O:*h狅bdt_^?CkLXwhوH1"i) =y q+R!|g*4\Q>p~5"5cM耈-~_&qғǶ~S]PT24 }gME" _v8x.*':2N^>Opk}MY5QFQW*v\V9ߒ古-&7&6A?, T!H?Csfz1o'+Nh>DK3ҕAZ+-Q}` 쨸E!6JX"R~ WS~AZQ8sS$8dnl^څ^-L?8~ KVo~)?l|JL`>q&0(1mRl6F[B1KZ_pC@+ՅX{|,Ϊ䑎/,GEهNǜ|GƟ 2ϯ6҇Vm`|Mi[ù-\g0~&C&%>֝(zαYa炵C ǓBL蒎QnJ 5BB֫ I"^<#eFZ8AVt⣞XRa˺t)].G`Ðtg?p9t{C9BZ>ckN)bOD?b+ܶDaP0֐х׌aNCcpə* v9`.ZUB n-F${qۻbYq/3ؘ0+36^3W,֝W EUoU*"jcEXeS7/+l„G 9q~v 3bLLzyݹy /ğx^|a[)_88(p&CDIorRƈZiN=19Mѷ@4AwgTL{޸ ۝h8z5e7DL\<1ESYQ-9Z_pTym4~41RܨZЫqm|a5{ɓ^ S~#G.е ]f٣ w̕j2qHf\%>}kכoz=-tbamZfd"Gp~H$x*Hi8mXwggiEoN pX+KEV" bBפ~xM ǯC[+e=ҜA9/@2x *#LnOE!-)+h` V ?HO7f|76cqM,9z^ߧ-*f#*r_%>ѹs??HMScu&?`,C2;sz_:&^84ٱ* ;#|oQh͍nfDZsu6aEboXspm~5źTψq;9x/C6Y9SkN+o|Nxo+#jN47n7]7ȸF3N1s?ΊOם8{yF.>y]cmLcPI671>m0pdL-$7ff 2m4#x& U~EQ7鿡IMztfǏW!-xQףO֏FA\',{Vpu*WC=_j}zVi9D?*V767 &gۛڮA۶:&;d! O~pRE+> GSp`' "L'@/0~Bn!%8C &D>JPRկUbTOVO'U[8Ǣ;f,Ao^Ѥb{gk~ef1S;G ӱSYEw)n>Mk˪KMz6yO9Fe\;%>J1#刞N#NW_t+_E`O׃ukyq1CTտ7h\a7a{%m?sPGw霏NxN@~3+ֿXg8N^u h>$ĈS9#\kLfnZfR.\~-HλiMV_j/V^BmFj~_pl77^2iTN $ /gMB3NOkXrXf7ǖ>$ˇbLT[w6}$jxܫ<^.6ZQc(&,p!ȭ|3LqG#g&Tye=˃-̵W;է"LIy S_rB-T- E9:Ga>;کnRYݢZ6Wng4/F*eǞppտW߸ חMцr`tH%u.6h*epxRVW#SRO:.r$|z(xUp'Wr8:\LpHpd8]צF+SJ.yBJRw8v%+RV׮xW'iJT)ŧCrD`A9hyhkkW9:i dXj>ǙSĥ)B[t> UL+?.&$\F-q:ဂJN$e89^NZ1g lЍl:%KM? ζmKaKc_uSބ Ҝ%Q6?\sYȑJ7o (U2ob*S].ЉQ:f]g1*-T5AANYdA/iP(VBBUKY?ע?u_܅8ӃFj=sB.jCՌ֋ϾK49ZOu4`xFis=% :)Q2^x =zˎaJڎN#7Yhz!&ygiJJ/nOOL*Mw#NW7KS!#?]h>mTfzJɪpZpmxfLWgxl܃--e2[iQ/V)NI%E[}/qߐ|{jZ/ZEI%JICʹbTֿX~GmSȄZrQ;1<첲E["U)\wcܰ`DwgZʯ X1ee xJ__}W+VA3{MQYZ֥iVR|RLpB[ؾg?]fZmfq 4qAmͯhۘqէb9%ؚc||яRQۥc%ta@IDAT'sDu$01G*OXgzDy`l=@8K CWL=>ur+~ghCGĴ)y%あW?P3JPy9ȽꮸFeB uE@XgkHSYI5lWƶy72UCg<c|h!- ~s̘>cFt,>M}Y/#6bH>1&N#ág_s5_2F39CudL%~ddLɖ{cOĬvɓbL+4mOOKғÛOœ3uNXr8)5j\좥*~xO>Bvx,I{%z7ɯܜX|eb1 )@El_S%ЛMtjBeV֍bL5ڿ>g{:^k]s_rI }'gQ1r ̲(7J{y-u21_QY#-}Űm5dZuQ&(՗׬!O>9=zU#c&Ǎ?wv313|Dz#&-+boſēӥ6[#1q)1e s㙇1~n2 /GLd,APsHQ^cQ9 By`y'Gª1҃W $9?Z٦4dIaĒ!SG>X?Yc&]\ ċ%4\n*,8pQ<|~&t.\Zprbͼv%rb "ۤXv"l _[F#Pc`!7yYG8V? %l =lJ,I4(%o\-~`ʠܮ W}WԁImTNrV*δw]p@GѐF"/$š(cΜO0J̏YVƝ=Kx5cmrKl؆ L#_Jґ 4I ^# vJ|jc$K/ZGM%)CVYB֯N1]+/歊ogWG ^D =(Aٴ9dS2vbidr";|)rᔴ3Q m|h 'lGs#m@lO Δqr9+eKA8Ts^uL\r zc}aVzuFMe\u˕U2R2pUYPd. =WlABHTj]:eMQmK֫ߪn(PG э:f=WoV㏅{uE*#G;<^i }+]nBȂ{j=h5~yT$6hKܦ!y)J5H ̕EY⬭.,7=)f\WeYe+ARU hܮ,VLWRnnl6R` )SYv6QqԶxdQt&]IqCjVUƗ0L%XqvPebGĨcr<hʑ5;zl6Wj&$gqS6&''1_k`ҥsb怃'iҕFjԍZx3hEԿK S64[_3=s/' x\O=O=g/_ť{=h9jr>ƚ$`IYJׂƂL8p@(։9qhc VCLGfؾW ;W`@^R gD]\$إ).C`u:uz♭.,s8V~<`)v ݳ8f@p^&^8y 8SShkR,J"aĚx2($#!_'?4+f>< 'I:1y #_088EgVM؊HFVI.9f򤾄ANзdd⛢G? 7?+Xz*ч -[b3ت|Qʘ TF=ԣp٤V:3M%w޺q:`gD@o5Jux5 9d<,׳AfDHW쯪UQ}0mIi1K*kkt0hI!+1F~àjQ? mGB<0o,ӟB~NtsG<.p*2~؊"2.˹*y,G+U_D?3)+vC1ˉZyRte)_Y8KbN эINvrcNcyb; *.䨑',^rmvT׊$&8 rQv%X8g;)Ӏ96}88oM1]˳3[އQ;hBDl-anęO$+\V2PY{dN4qwB¡ԩ $@ՕHflcYCom[}ӰSRغ< /`M H3x@rB6-H;^$l}jZWNi*gvD(lc:Dr)'{AYʂ`P5 5._&$Xi)Y+e+Q0)IPۤv K* :bٺFIOlՎ>|>k*WQ^Pyso3f u+?Xw)mV WuzJP"4)ǕYuG튛 tfR qo ʐOaFU?USUCPj ZW f*Jr(nHݗw%`ȔX1tDBgZ9j:NVYyXqŤ_/5V&N$N G `ppogVtRM/"=6iR| =酳G6]!Nmj/y'ɗ孷 2ܦΤs%œv7mO[;; YISIvWM<4&%_*ON:zƩGҩd$GSN@e$_4y(xyc8d?"{<0u9j8IbDM<(gvѮ4 3bNp;e!+Е uir= $O2CL8~m,.ă;{̝U/D=Uί`ї9'K Z3s wO-pZ48S,7$4b7h;ĮxÇS`zmaҤɪrhiǢ7(WNolX*ȪdVR]AOUO;&aH2 ?Fje2 _U[?U[?{Et.nv cMqX'La9@U 4`k d҂uF+R5W+12->>efZQ1T_U/_u;=gxj˪M'b'a#7 gp1x1Y0;n rXtsDM>\ &|n2MW&gWg[TN_f\+qKgǘќB-\8S)*]V[)5 rMhN,U$>ƂvdlƹKx1ӗ`T'MhU +lwŪ%Hxg')3)J"(BޚO`:c@tT|j.Ą#[ VaS/'Zi8i"DžQB! mJ9z˖t^*ɨU^3O/V\/ ' V}]q4sq"xQ{0r>Y)'Hj`نYXI3,zVNۧtpDꐮ7hÄ W] Yɖ疱_|t(/.@G9&Ӹa%bѣ Q+R*b;N94TM_k֕5XvNw&̫`şm3W}l!qepAYDKXєex՞}W fo)1IGB$e8qQrYy1lXbO'qc3<=tuX6Xq';*?9ڷjTv]6 m_snMMoj>-ڤzc;N=ɮ *W z?fƥ_TsC#k+PֲI&x)v{ G<:{2T B ~u_AY^d\lGns1F5mf|psEaL'?I뾳M?fɭ-}}=LXV}ɱkƒ՗ID|ߘxb@oX3_aBQovn\;ZW~.xx@toc8 OWHFez߿Wڟ4YoW϶mVpwfk4< SW9jg>DL]A/dJĴoE藚D㖲%SRտ_ZJ7N_',HIhŃvI]&4!hFUЄn:L ίbLlEZ>U_OۉU) [y2[ vȑ#] S3⅋ΈXMA6tXS.I 9zڬk@ڮo@ٯ uVX3P׊ٚ^ ߏwMqOZ&cGLG{t#GM_`wFoۈ5"ӳ`4֯O*q@"t?V*2lKFhhF-Ҫ{[C9dm8FѮ 8\/Iw~ęV RѦv9z [8vuh"3al8^) \M"}]ڡMR>U8DB &(SP퀜,ȗ[#-N83 sjFJ1t"5oPB~s{26F^Qm3? ` 5F6j<%,]y{quka&r!2/\v6(d|nㅊ?]@*OZtڥJW[BcʶMWMʈ#yU8<' ê!;Q0H>8+˫pW+qF{8bUUMy"$(%r8 aIKpB ЋJ9zkpS=ZY֣=:kɹSK98{F#؀p*_0rF9_dL-pNIŽqt)ẫ+}]qW"+ jU+dR}QPZHUAgqCL,=il/E: `H lIRP hvNNi|pCVRc~S\Ex)CܮvS,⁶B_OpqeҪ+pew >\5T8Le1v`rȿLM =xQ+ Ȏ@13UXd Xi{&Q3$=q]{XEݛBZE4">DQ| bCPA}*vX@Pl`X@,>ҕޥ!ٽDlge3;gg~n&L8"r|{x =QCW[FV AO.lQie5M~SsJGfcOGbՆT(.g)P臲mÕn6u ?meatՖIOC/__mf}?3@FQYpqイ6&dGsAݩ5NW#_h ]sONX ^g烈QjUJ1)]8:Y<vGTsQHg|Xנy/bro8{0vr`X[-Ä@:կ.C99go7w?lX1٢~ FvGɽFbz3O /Olp k+i ːaN3p.V\lF6+d gYڴ3DVgeZ3Ͼ E:*A^ CM54k+cME!)TgTo)X eNK)XAG) o3ȑ)?̰8,4n2?aD"i+b'c ǀSfJQ.s . 3#y8sJ-)D>[Wc l3ğPxtJV"FԓJ4tTOj:[6`]zҗڣYbYDf%uA)ԩſfJ)(H2}[A+18<00J.SAlӹHΖDo#bHu.c c9~[K4AR@*'yلIiT1sR,-K3&6Td}(>U$}ťAc~ªk,%򒧠%Dff&83K8j\8lK|NPhz$_?h^Z{;EX3}`w;~wh|9K>X/>vȇ]_ ?5F'R;G?G? w=_w:cb/>oG/9턊AGBzAq4E4nE3|<7h ;ݾtuc>8ؾi#6lM'5lݲ_I)~"%} W\b8ת6cxJu}+0"xJ3O-x';>yDlز+'~{q[\V j|螯pY/ [FN{d~҇(^a7eĆK\w=w_>]Do[G#]G疿fJ^_t+QJ ]:2K{qVDPcT8qRb-Ox*]͗ s_c)xk6ث׫;2~9V1Y\yr?`PhZ}CT[ueI|CͪᱮaƹFb1e`qkC8sc]|u@x {E!Q(陃Of?IĠ(Բb/V85l~=6O*T࠼ 5+_H[t`'Ɠ7(h.@My,& 8U{ǵ)ď;`kh8ek Ƴ` (P!%fE`Ȑv(f~ Y HXBj ViKQ.^Q %{)z5 ;ZUS!}XV H4ǼY}3$ȓ3#Y=@L?2dAKձcxPDB%աp ;1)!$Hn< oJE6K @qI8L!G_8􉣾dj N@" KL "-}3,Qr--OJ3ߦg#N⌙ƣYz6INQ?ęZ=a={x%Ś%%6L$lɿӴΈLҎ2?+'.{61EWM[?$%寥˖_kojs™Ow˔)m.MF}83O.8~9N y'_99$y,(V,-ֲi!k*2h8uyژG-b=}+ ~kPulFMыWF ߶j>f tQvP\ }HAtyf꣨Ey]˳ǩ ۡ?w_O\G5GX,ߘ|hU4hUSߒ|x]k~y8~j!S>oй>;o[;bEMT%EJ#}J7vEjxB\zx\{[F}l.vY_WE,3 pf|*Ni2;vB:gl V7[cVlHu_j#A܁n',F1vy}uNY]#.:﫻ʺp}wT:XB[y^3_ x7Y[`.ڃ/T\k0kBߕMb84(bou؊gb\k`Q{B}:5`JJ$`V'm6 qU"H%d| Ϯ0o1۲@Juƶ#(cvʥHcf4,o>Gdχق_f 9H6|4:X&Ly?-|^G)%e+ůw3aL&&W8Dx_O~@fZbIGP[o7gԻ7q'De OICE`O|~,DWV.|h> =GѪuW.6]#~Aˏ%}g?'!0/]i;G:# d.*W.,sv[JT Nwf:\7>"Xq>?Y}M^`? ʠ\J(+?<_Hd`>|wȓ]k#=x/4۷Vz ;̗~N.?έ&&A5| '#Y_L&'_sah //$t}R2;RsbXC}!ц8%NxhybaLUbyclvfe _h),99c؞kن)cP-gws :pT_D#F659gg3C:zpP0K |E\[ 3,r0_"tVAZ`bՈW6CXA) 0GG|FQHx3į''f~( t#BZZNbP3XG \\L(r[E:u8 :l"㟠%LnHJo<1OeWNP 8J_c N u}38Cb0R3Fk$ $X LH9P_ n|~Q Mpr(S&{ҷ؈_ee8b<~d7d0pAqzq8s=xn|uj?j8~xn4+C#0C. b{Q /@Vnc?6.g߂o}1LW6a_'' k ]^D-׃BJ֧T%'vnAڵB|<T)Q৸L`W<^y%4璏a|ؠgʚrr,\ uh/6|9#w9j0Nw&g_FJO_c/^_W?V~͖R 1ꔦؙ/?{LsgAFIFmѴ|hngyoNW&iŴu_gݝo ^Įm·Y&^X;"ʎt?ݚD;Nxm%Lo&Y4FUdߩXwC#dq ecu.P1㊡G}֨LٿjSXY _0s.Fn5w:ʗ?>rVt^\AFg1qci|:^fOe1/،"?8,s;BH:œ;UmVw/+롺ic?)I~"Q+cB#9m| kyT?ؤE%u,jyYyrzQ'hA<.bьj}׌SPމh~ʉ8ތVgyi/(ٔ1A\2ZW̓| )I*T=>S.|#})HNIAJ[t_߱ $K?k˦$Ņk9fr.&İsʡ| =ϿQ~ۙSsn鯑m څR|Ҁ~0rM {7ݹxT=1YCl\d(Zzg$-!{nt'XqmTlf빅3 rޖX#5/ls ~}+Z/.aEXP@__:'$.aQL3JAXg8| V*ayA~+T| EK8SߤMPg<]qrc&.c#}_:d4r b'hB'ంg "J% L+[Y Q$ S t$}KwO^W&J*AR]%|g,3BJkZS<^ϗ|CN&u*MGs0g-;}oSW:g}fwKwtȋ◵ 9&#O(Rg$'9AO'jf4 >oKE>{ dP֍ho*t-ry-'tx>pǢ= 2~Wc?:RӪic.z_ =ۘ;Wcwu>z&,5Iʿbco4_;2`Ex =?罨k7q2qm_ON-6\qQ,_I}fLyH(:Fύs3i)!,h^٦,\0l=|wDg\R*@IDATݘ7ǟUcJkX596\f I ]\v|*QBxo n}@^}.>{dWrFzٶix,߰kNS<>l9=3Q:ڊ]~ÔRuY>G!yWY۞;Ji\|xqʲ4gXImaْj_ʘn_3nH _axu) o\˖b5uX\\<n<vdX٫x.T̹o"|rlYwOw7?s_N/]OhpQru'l|g-2/mwivz- !n6c7ˮ{do0_i{ ;ן?T9f }uF|']13vѳY1ggo9\Cz6f3O2/ 6s5f ~C}tq-w$9t`ݑss!QϫaHzJ?4[\u* h$>t7臰s*`6 mHsC vnp۴0BtPsrkEX~ҳVƽK'WÈ8U;%Qx`w:A/(}dzٱa;eow=93?7G & 5|;'.׮D`iū4.Molh?WD9EcIEA*Gѿ*8`?!O,~Y]jVakDMqQі'3܈pȰ̝r[HOѿYh *_H&hj[]9O0oTgri뫄[}/x'P%e/֓.#l/;f(2 I )Hez9Pf06N48IVڢx$)Ֆc=S۶m_L|&AlRK~MhM6#|Ҙl%}H9ک̬= Nɻ' v¬mJCjS{p?KI[;\ ˘dGy"+v@b쏃eИՙ<׿\ȭ #z%ʔgQ ~ 1]Tx}LPН<\*E灨 /xazٸd9eHŴMϫqBSwΨYW%-ɲ~fjWzTxlM*7KT9#{!sy)`꽣=޴s}k3d1,C+Y-Nfҫ#^at z1O拾^>ŋ R$1k}Ӥ_Ahb`R)] &=J[̗y}x{|wAR)(Z?1$ ̙%5߿(ٵ`O63y&=Z8ZU-ocEJN7G[L~YˀU[^sまQKU w\fhnˎO. 'V.N9x$$6j>~92-9֐ސ,iDC jSW& V:oKtgdf[OԳΜuDsg`ϖ-I;l.5KIM>vQ{[]˜o` 4{G2x9J@, zͨ}-Np!exv8c܅zaߙ;<C0 I(znPl۬mf!H1x2ft,}*Œͱ.yf?x)hdiF]}'F؍' R@ǂc]{ f\)E5x$X',k2w9}}Oړh`rڙ282%\ qnU2~Y/7>΂Ҭ  ygF!T)Q+'_δLua ]a"XryYo1S2J:֕ L Xr&1r#qK!SRp3mAJrB~͢S0ml{luTZ)8,H288*-ɽtI⬰G9{-|O{K5O}SJ k_6_Ϯ-_Gw='u`8vJئ}mߴ lǶ۰;c2n K\i=^ĥ N3if.[9gg<ihؐmKsfm$<=7~"g!e8[$tE?aM QjLylG.v"nxFbʢhY`x!gƭMJ8O;*/Ҵ;O@Bq㢈y8.WW뼈KqZEXb_ X|ak#ąhV?/}̮M$dLSQ)+9X#E&`'p5 j%!wKmw>ɝ9˝' ":2 nҩ,@ˢ)1JZ\t)u8ќoMWהb}\-lI7{2t+Kwaā ҂$Oϕ~i`'VU*qBݣI.Z3V%`Wc@-=&k%|(}z4t(O  71zq/Xn4Z&Iv{=MY&u`"JL=[#|z 8ܤk' `+w6::Հ36+(7c̱\ZZK:)O5Hԋϴ%}+pRaJvҠJd(sV˔3m%a*}dA83iPemx@/^Bx ›o h@H)|0.!QJAH4K 9N0)89@_sfZ:s=\59d1kJ.euK ^pi7IBHLIƦoَͫmbDlO,UNcR$gЙBfBQ8ޓK? 4-rȃԢX W-v) Ӳ t%"[Sg 䈦?Q EVI&KuU&/^gxru SkKj%. K-P~T}3̽l\Ҙϸk;*XJ(5wrPꔁ,`7ePzLٓj?S?n/7 i6l8}#&μ `b/](?RJG){MV5Tñ_{K|,y`/2#;\҄1)WӒ3oY`qE]㭋k яv|F62W#O_\uB;BgA i6ro;=#DDžcf&20_Ů.zW<7 5oR]0eG7O{dN?,&N[+Y,e+g@+0NE(X5 f ^j.^ʯ`DCH#qK߱H#_OuBe'{$lc`gc:Ln'i䳌2K|*lٙPR6E%V=0V"/ujt|O)s#= ιGd+>ыԚuQі.>g,>pתYX$blֆ5䲵+,߱:.DRٛZ5PăGx 0Sm#J<NkOhIҿ8C8oi4uڡ*h|ISJ^¤'&&7X:CfSY1*jlP4NA ӯmgN YYvӟ q˶nV9@KfǣXQ h"Er,QeAyx% ?fЯC/ě B7b}~AaBael0Hp/,ꒌu6-H>$?_LjBWT A:MIINB@Gk>ӵ%sO/Ln .~3J, ,(obq,W0E3ŷL- )q`YʖQ$6KJ0f8_ld3 +\Yz: |c/cbUIҗzXSE*D@yԿIZ_ Ψ<(trJ!c]xѠ~E/uiYm"ڤOc>4w !_ja%< ՓϮ<#ҘbVa?}_ T?gSm-rmY~e{{?啸vGM{Q$pQ>NFwcΨh:̫.ځ(5kk昹H͞{I_=gK]qe=bK6CܳXgGRpzb 0j2-: zc0 ;8G_"(ur髃>/?-q BS߮?yBc{?"z8͂gmVʺ ۻVnoYՔyڍ7'YUV=Z[V\'As,)_t?SG0サаSo[0z8Vy諚1 t};zOCWѲ/-激2rϜjxGY~1ا{ |dt[j9^:yM^ÌCVv-xte gWK%2y38n>DtԜA8.n~gGO[;쀏V~]F}ʢ (| %/ d =MMeY<mg[3a{G?#Ϩ>5lu#FfhGR拠R9?ۍVep̸;Mu+h >ΪD:~wbSl~e7K\;G?w<.j9}ٛt/}ɀtR/c].WŬm@Zafai U! GQO8׊W~5mAnS 3ex.4mmro/ueWߡ~*gg~uM.ubzR,Ie2ڝ(RL76{s'/߿ TG;ɾCnW.gߢ bT--Iu:^/a'pluts5z\e,mZ UH.0ŋtLJ$ 뢧Ago5&䭢b{ -٦5H!|niQ[GK6XV ?az${P,RF;׮EeHH)j٘BBG7mH\OYnh}|>|*Sߨ7yOQE~uruY!Y4֣K?PqW (hb*z (daw/P \gSTT^4E~?.Z1|`gtMKũ$=J Tېe Z'qƔ"3KĩShߗq-ICL¡UPnҕ)ҵUtbr-@ 3zvF]nmd,kE}xj bIIœ} x'YOi# Ȟc"9T PZQP=܆ >H>bXoFi1qk?ɩEk'c#U!"HG5$-mI\:/$eHpLJ,!> NYIU|]A(jPZFcmQ׋/g>y$q,Y8~r<ժQB,_ ,$nOBSϒt-DYKyD^YiQgu5x o3U͹t7vAkh+TpI#$OX9$L9r;<4b Q_iܴz%*&tʛK0?C LTfHxmh|X6 ~*ZN3t7KAn*zp?A0<52Y|0* {>>y$z =K 7j$? Ď3IXfnq73j3˕o}^.nzykcA8y3N3yFd}=MCk0z*sl=;^o't~e ^?!V7q2ؿ2V!?|k 0y k6R'[AU@HQ[\YT. lzˣÜ 1K70A˯Cp3h'=?SD"f(`K~`!aXA,M1< 81eǚ##>阿:yČ6C!^?jyNIAq.U+xwOl> ;&+s"> ǤŖRl,X |QK*U>ݏ?rldZX@IO IP. O'[df-[\{O3ۨVҠ@,q)n#A"!\ReP hHhK ZpO\2_#t|Ҭ(O*pxӀf%XK%0(Yoj_KspC (~&Y}#j4 >U6IҫԥD,R-FX&fn'9'ְ * ,G5R &GlňDy3g좠_zb30%jlBqxo/7JŌ %Ŗ-$ݳ;D.jjg:!Bz*{ G>0-\vxHR|ر8X䗏şARREc߲j?2}5:ٮԹuX_1!SK2ߣǺ^RX~"0pl-j/8Ō\9_Ib3~;CeDݽfmR2kpQ˯'o}v~$< A~":Qs44K06G_bC/c^Ѻ$a~omù[̾S"<.?- Ż{*9Lzɧ&3JL|<0EĈqWx}=9٣ٮZjG;F~z4ّ]ߘl^ Zɯ:7Bx~} *!7G7 '6w0!S,txYRM֨Lk1JˇsM?q>&7TH֥&LʌX/ /4Ƈi/j<1c6kojd: Zd..30;`V"i|7\%O~=/<oo:¸Sa7&<} z53' ϊ9K<ͽʪwB9ݱkoRG_ኮ˰#Oc8?9L?zcWFA>Ta2Q4fΎOG?gM*߹%jLެ>5 Éb {/4>j7zZ\\{0hl a{o29駘Rmg{y_@kJd'=(N-|sIVi+ B߯h+K$?ɐP:;Jj'#`:>agGޠ 1(]+ P]x|`(lL7O~>,Wpm/q Ig;cegwa ?}7Oa؜Biw\Mq@3r>ah0]X83Ay'[[4~5yx0~ehw~X88 H[ދ? o"7} N 94==E0?e j'@}6:{ #XbM'ڣq$T2}kI:ΊYxh2k.ڵ 7Zc7A:c16oقEc1hS^uo[5zw=3KFG1(F܁>E[#b=k?[ Fs6!rL~ٟEՏ[PAdrCBXr4Y;#nZY`?:mBp=8~fЪ7fJ{è{iL^{ˣ},8nYV,_.=ͪJAfRDYX`4@ZR 6( H9!8$\NJxFE,0@8y6."Ofb>oƓfQ(dEg{`/S1ib|xV){hX2\*5!=;VgEEZ 3Sge1*QTY̞7CGeRS3go]{C :r&ŋ_—#CrbbӋ/`NOwm6qfo u_vkۚ ù1<X\g9c~N#3<^db[q؃ 6ߺxMբe=+']2<{8ah{gT.Gae3hl5CU~aiZAwgdhc9+?]X#O?'یhwZU1˺FpgD#dFF|K'ߊ\uѼqg+qάɹ[cK_գC?w;hTLsZ} ءf>}ׇτ<^4~6Ya.Խ] `]#?1/X[~z]鵿x֯9FT. 7oCЫwo${3ͨ[6᳛jDNF.ƽ2^ye $if8+WpQUTc(}t_x=P_]ϫQjoni?ŽMyu?ϝ5x干R%[bJ{fׁuƫ2<bpNͲV1.X c[kǛT]DT2NI6XmOP5\"D,!1\+AxT(g󰛉S^'[L69/>rޜU-)G|$ƹ%"$%-{b6Pgܣ U/uw~ p ٱn"[ݕcеI# |-Gɒ?KIJV<տ(_,Wc`&$Dr;,VeG+3_&Wݣۧ.EòV0=z|Ðe6 ՙ6~O^8@$"I=_㱳S&_1z` >À\Op={\ja8zi!ԩ;*LQ9C+O%ш~34}}6<1"eSj&j[G{I i!}*luhWs/Z0^?7;G rle,/l`<OSh[l{#@IDAT5\) g'+ D>C?!~d63E@Z;.Tn-  =P,iP8~{ґ+Rl KĆ17bb{b-/KƖ+"(i rHSz0^ƪ0 3)4<ʠEz#0G^:]i9!.B9m%ӌ9EAӂZͤEZ RhEpQʝTǃCJ#]O?WE3Q-VjFR%8ʮH6Q~L+'IID\ adHkr_~FW'rUVmmKjfQE17CG'h=}bȭ%PR ;g'՝@!ճ24]#1Y\ Æ ÈKo9ܞc@B"gœ}Tqj*rh8[W[odO$o_ߚswI IN?bNաa߼SI'9A޽1` &'D8k-r?0YIKԔ{_KNwW \JjIVR \k'E-ɢ}Ol?ƏLPj'V:4)\5~<W᪫ c~sCC%X.ɛeSl6Q m_1ݞګ]qA}1漇} xݒxDBKq/b\LsJ o#e`~Eѧ;v9[;$֩ Lҿ/ʯDz]~KY?aE+hK;l?-Y%?\YRIпD#zm Btu>{:{Hﮛ8D~"̞9,+#L?6+ i'Z%x^.hv.BWG;*G7:%D`㪓=, 0k̞rƫtϿ؅c76w!;t7|Z,^Dmz ϓ}r3M7ORymc-'YdߒKk#Q ]yg݉wh ^t¿P.rN1 ekmzW ҟ,@,kWeG` ǿ8|QK+RgU]&e>]nkNA|EvT˻e=3+R3 Onۅi!£ Gi"Q'sdl+Fד V&:MN.hv^gB*/QnI75ijFGjeek~O~mVì.KȄ&!:g &Uּ2-[+8PY+fJ.R$Õ[ٟ|mr-,I",wmI>chAtg:d yH@QƏ4DB*Bge9<{#ʗ`{Ǘi9(*%%Q閞iQbTR¯J?}3dZ撱vT4\p*O0NVQ%eK 5XhZpKMu4@(ȌJnߕA+kNXU/qhUZƳpoMRhiLw9ڑBw6r<([1+/ .🁑7/8Ɛo0gWq/bfy-߽=`pߩC cxUinO5`Mas[wX%藢zRjTU|[9Ei/<[UTE-IeǯҬlCSáAއ d^OścFi &>--LS>u- pd;/\mleNт?)pHK&m*Ih4י}&s &}e*;<;m5؍Z~!?hٜMN9ݻ/J':u˞/o>$1b.h1V9L{">X<7-/7.2S뇢YجQ?jnNzf>{yXI6@}?E]Rw}[Ю'я1=$W3r81wܩø#:HOZU??@Z?&@J \&F$(7S=yZA2%R_L( 6fO\Ew 5 0rkM+FqWꋫWBcgۤϝ Ğy,/ƨ?\ 8 4 ׍4hWtgxt&1zM.|oWb~txl6E9)6!Yjyb\#sבi:<|{ҿ;gÂS>K o a Ȟ5ɝD@7OK?n~V)З"^}YN}B*\Y/UrS#`|ǿ ѓA3xYaGQF'Opu L~#?<R&ù onJs:a~W]K.ܸI_7efdz{rpY1 A/)K{]e$2n&HŰ0ScW,Hѭ \[)iÕ/MmݨtZz"ԗ/CF.(VL}0Qqbo͹ƣ#xs员 <70f =H2 =C`,,Rw4;Yxԍ)D:aEnL0N*pjRUcxå !vrwr40G &|Qgi`:Hڳ"<+SM4h1TQMXWGipm"N$_ BeQ >FzbgZQt&^oze$ Qɫtҹ0 6ʱL0ͭrL UVD1bqo2*ğəHъ(NO.5M Dju,lX 4W"glY@؃FRL!֜hNQ%d/`kg ` ƺkeY䟃an55s,-nP.p=kPN|c;W %U#`=/T6ROeId,HF.erplK䡏^z\RG+Z ۍ>~ s4i{aOO^ÕY~c2^|91Gc]1A'M񄀰?GU%Mp)%| ?/t{Rk@ft(R\+)`_|J&S?{^?_{wC_~?Y0N˜nۿTDa62sDQtϰ cR1 >:Z-o$^t. !$]GHEA}@W"3d&v h_WjTTF\T[[<馄v_jKArV [mV4I/U4;XcV>1¤ Bw0k_ /-Ny]ΊA1w`# a JYM?VJ&E"=ljSܳ&F}iV6T#^+Wܽx9Cx n|)n^ NETeWivZ!"$uk+T>TNM ք_Q;S*EƝvJ㚌4OI2ΝEI9xtҢ )g-X$m} >o!KҮ ƈ}ZNqĒ( I $o>REtpZV#dFt1Ѩʯ|Vg ,aImxժ*X1uUyNj8FR65-/"?@:dlR"-Z}'9xqFnL+Zɋb6 W?O12 N3Db+ÙP]c!G3W*HCxV&۳Vܰ0RHJ0WF >{DٶLLLʊM|nKgQedt%L=9X͕X OAOIQ/+K+V& K;chߡۓQv ㏴Rtl_vYI:2JhGw+U3z뿓iA>y@[/Qg&VLL'wBAѯG ]yF o[zN{t~HjNŎ^oųUV SR8P/5_:u,mm/iiн7lF,qۿB~ؙivmǕ|$#"Lm*\8}JBms][- @wϵcUo0۬Szb4z1ՙN5l 1ҽˤY:C0%{&uNw~k!|'=v_ [_/d5//aͽt{S*0!X'i2Ge߉3Y)YDֶ3j}&J"ߺƋ`{D7#q~E#.dlD^/P>w2Q%#8H?"c@ 21MzA;OdK3H ڄEgX!?cC cԩw,YwԑC~w_|t*vX v."tNCm) V~J,U–̊o|?}X B@6!zHRyL@0lݿ-&DYIWAL8FD˟b5(ʠp)܂n]*/L;ϒ,7o[ Vh[3M{*`Wy)7}!Wx#mgVh{4k^ 0 uMkR>sR[FIHt%C P.TGOiyi{(ay sl8߻j{xS幗מpRTddfxt~&pA0vɏbՒsVٕw<̭lD2װ@"_Z\7 !tjk_W/4s E<) Oh7cL/>B˔7M4V9C1$ V֘U&L8G+LXae12L+NҶ3y5lvr2i~Hpexʑ~뢲^L'xd>Q"S+?t3=VSI?p|G^@s*9HS`m:M+,zlB4kL vJVxw&/IHIx]Z)R8NMIw~/VۼhZ4`34a?oJY2flMO?|GJ.9˭cf,IX˄jo6HhF^EX@XO tHw.QOW TCKn1oPrRwڟ]}JOa?GiAojSjwokɶ۫n[gѧA ZhCrlXR/zEH̓P%a^Dbų?s1uk[wIHs--Rxa"N2a#_x=x|K9'L^PG98/]K/8C~j[$Zn s@=$`@W!b;#2v'3Å?Öl[oG,W\{L~@ hÿ%N   `ONcxp9ړ1,ڒOo]?ś`yEהyv9<}lXiI}ѾKtyL^^χ'X1|0a0M`k+ \(T~ o]L|\dJ =ϖ9 Cj<"',>&eb{Y*/ >Wx= S]sk|t9qR9ḥ V BdԤq?d$}uI\G pO~lLY>~Xb3\3;ѵ&嵚Ģtlҟ!~8 {YVspN-QfDYr&B N8YtNж]=v}L# _~ K>"r>،0q&M-<z=ӮA?hsAd ίA& ӾCg̩㼏AE("#-Y(IKKF<٧e"^T=JsiF!b슉<|pL('?/ (~Z=}ϦI *QJJrToU͐J5PN8.\A.tG1~oYnJ2peLWuXT 7w>+ Rl՚OT[zH] %;VJ&űU0G,&heI!Ɏ#,42PooC46OVv>('D+D#T'8Gc|1i#`(,‡T3F m+{+aQ.UdZ7\g4Йutu)=Cʒ6R͍MhYY[vj\]d|``5 2J"h>.ՒRRBO/FNYR{AN_YCjn[YGZ@߸l1?#X"7o^9P^zcA_릶F*ۤ,vݕM[h76p\cb52|[3-H3zf95r-X"#~'^{q?ZH["̊~)CSy3rj9[w3+{.-( V)呴i9Ml:ѨPpbo]u\l;Ỷ eMJMl[٩eЏuF[="tPF6>$+{R.Lnaf"*=)ZX¦ZĕE;v癋\SY႕]g+T}IU!t( lWJ+C;nQ8V$E\_Β()7Rnq*7i!TV!$2мrpϮ* xk6iQ W7?צ/q<߬].:0le*ʃgX tɕi#Id􍰕TnZ%/$\\?XqXPɖfT,yW2'>s$zvoZEUԥ&T.}1ĩK'.ٯ90쀣;ۣzHvrTBw}.zΙO| O~T51 ?NczWΕld9[2;\v5ǺIM?͡7A@ߨQ\1ͱwؙc0([eHa^^Lvb^ƵS=Nv܍9??waߓ̴oޫĴK^&nW3:uon8+g:J]uU1ζ /-kE.' MTV"< ]0rw5I򭐿X; j82IbIH - hGeg]"=D1 HVY񮱍 Zc6&w_ 4ZBpN2S=8u9DUgN$q'_(ڜw=|3>{VEwXaҹJf#JT]yR3&cIj53#8ojzeE1u]-2yWn0+3UH%#}4I*ҹ{pE3Fz Hj-IEGq`3Xf 5dK~^WdbWq{FkϼOn="$aRjTQfS陁x'R 1Q[jVn+fJ:4}q*d[B,k1te'ډ_zdytEkŸ&KKbQIwABg"/LD[eL/SdwrF#]1# S68mVWLo mkD!6˹V.Ձ\f$/ ')YXqkF.ZFZ]oӝ-_rJzH}\d>k͡VY0Vfp%FJJK|MƀQi D?rvT|&X6q@b/h7QS `X'lx̿{;6԰u/{JW+97Xo`g"K5_|1/۹:^nxFzKR-K1pQh~Dv­_>b+J{oE/ګ FY.ib?mGF9lKg$1ܧvfYnc84Cx&(^eq+0iN;v(<^8ጣ#a/_:۵GaG#tҟsEt!Kx{{coh7 ),|#;ʲҿ陦t_CpqN%G!? \])i=!dvƃ&p`=I[pzGԥǩKB|u#'V ttK~;)z\?ޱI0, A{촜]T1|tw)W yy{{>}ͼ.BR%:Ѡƽ3s#NrSXTc/oDĘ_ŮNw(1ii[ouqm=GF9e;Wv$韡KOa#iwvy<% ?_/G<}"vijK~EyC+8Ĩ'.]OQ;CeVۤ)FFgO-DW}XF#yx aX)˪DI] %7h3lCMlswyeþ1&7M.A$[S<\wtT sō2u8ө, Mۀiyk\ *Q| 'i,&P_F W6E.q`,*G1ʝq>Ybsb-;xŏwl@%\447ᶭ2^A\9V>;u³#Ptr!UP\\cN~cŗei]/!{hoL^qB)7bj]<#ɓ~c6nǺ[]WB7q( g#Bء3(aAy]@;[6rsf}-бKGsj4vJZ6^0m˨; ۯ=޽"xeRI9'虆}c ghV}ϭ6+IH r,w6@ʞyG[yϴ*w }!:O˘tjeOzy@d3ɅK/UkHH2ܭb>-%28@F#!&3VXEiɲRkEOym"wړPNϒ1ڊDꅌc^P_)7L ɷ˛n^ybJ0 #]h9KqɸaeLr`5hEe8_Hv{ 98' \/}.޺hE |}l'=lĄP&a,N'$㷇qw*~1Jhb ePV/F3s8SۙCy]J@O?(6p!q=`bjЙ ;0;1؃+h<2w 6LK_:nR%!'`6)N§>=g "%%FZwu߱6 -p[>Ka\ {uo#<q1\$%j4}oY<&Lj5x\nG&hit쁻W͒G@IDAT;^i3d8PLY8+ k? | 喐KƛӱgsWn {9Czh/\%܈ ;s2vSW'UƝⅱ=\^;4T1iŻNw cX?Q=^j2'z|(ϔLG~tjT4V] ywŶjEs_rN5Xu>n1nLc<^9ixgk=1Fb#*7ȕf= yiPUYdec/zuѭk{g^}9vXL<ht+T?)__2Pl#Π䶁8jVِNe0 >)\%?] }a2mtj%UekW]+ M$ϴ Թ_2)B͂!v)Lx/=*J3pUNaJ6%RtݵZR1C YQHMJ/FrKZim'{MZE<$a<[s`f0ıtƘ*kz|8f+'< fvR!}Qj `-]t.Yzt(݃_zt2 ?jtzkzA}1?c-MNbmu}[Dզ`i`yTtspo`$Ɵc~!k}!>Vo=ٟ.kr_Ν;cǎzSUif~MBo\/R 06o ,[!C~a8-m\[ѐ捕\ " Ϩ.bNtT&sJ:u8BMWVWsa>2imJj/FBLZdzVWbNhȪ1^Pz&w٘5qP@<]vg/v\l.j^u1VXxe-áj&z#U?c$7鮤 qA3dp@+3@3+a]9p"4pyW9L3{rN|U3(As.5;)&#dzK8.N>]AM3bՌbLJ:.D/:+L6H]#׬/لj.IMGtb,%(™?fnQT2tAy%ht -Dc2،LzSP#) 7/C/3qQʉr%իW!#==> w$KiRY|S0d2-i i#*Gm 6֜I&j?̱P4FOʄP`R_A#y]G0O_~Yv`S!&p߿~[vn:{e؞5,Eo]dǏw1zceW1li[)VO/@ jkv<FГs[rEO~ ~!TuBLF]O--\a8.=ʜ|Ut֘1tMH>|htaܔB"TF+ı@mpe4@0R^> -,+9[l5~[ҹW'TSPܵ'OX?BB'1f?z&pAV~)2P$Y./߂<ZD/?[ 3P m&T_}KRX2i[pv;qIJjO ah^m88b+IJvGl[z0NLCD|49<6 Y%FK^p,&ECMNjU`.SzS27A+mGVG,a[ 6SRixN RNG V`3[6,+&5 l9mm.Ic_ Ў *eY˼1)+J1&->Xꞿ/ ,nq%^Zm {? c=ko@USqכpL~hJ q隍OV1ϸ/Goe`vU#\ƌ^V|vhjjnJF4 O^t/~ؠu2h)rjRu +L_aúMTیGW!+IU;u-7Yݹ2EPYy[Eg#)-e)Í}RTWOq$#!$(sXQaQNft`"USY~b"uP m[@fbiJZF銜dGD*u 8HpՀ6IE#%=zd>3F iE-2WZBY71 `ͦFex$q*%xRsV D[g3LCyф6ШQ"FZӃkѯGcu5Jau N}&G`_Hďm%)]/]Z߅<+͕hesì'ARBHOA*IFL$q)U=lԪ-7R;Ը0L4jbu$'G0bH_:U]ʶl$ȯ( s+~riKbRrh5e$*s+&5"/vlΠ8"Mehn-b4hF+58kH}3ÚSa^l:n? r=s\`/BGJ &vVn˷f_aPN'rjHAY.i|<m vG.p[u -C#78zSBiI Zu$ncfUhnH: Sak(4t4c j7Ļ`׫]`1*+0"}Fuqnc*mEWd+$4,BXe\-$1pG:O 0OF ɱzX62)&57}-#@{ZLä4WF<4*8iNꈌVPTpyM0z aIH_$x[!E2JQ.+g8~KXkiU"0>"HnfYXJigي/M9.o$Ca>KVi"U(7'4 =5;= m]r:b+UeV~1@2bmU ^ CQ/}mF7.dij|jo,aE _?KrxexI;t"Ɵ]fK} jSݨâ}u +]~ Sj^(Aհ*'a/mR&*=:TawflZ0=.أ"LM<}a`sYV$ Em䴭VVhb>ƍq)4`%6 =4h>}X^Bӯ,STMyȡ!)-5*$iLi9OFiڥr{jnGaZbmF+[U)4j(s5yOZHRAG*HG:d\ /H|}튥El}%U]>]0o=rZij_s{;̣Q;w`vm2sVGv)^[JӰns˿TL h%ohTư@ QhY"Tlg)  'U߃O?Vmj'hM+Ԡ +7ƟoǗmؐW<5zқ%h@/u 9c-_=n>9wAߞۿ >lZ߭n)fZaq5~WZuDqQvYci8sX+Vo@w&տYF?|T7Y3 e>i[Lr8[Ѡ\omO2yq~Ko+GblcVM4mg''#+fXciґi\26oYZ޹X^םw:'Sx͌Ogb;"+p>BnXÉt[nky~bXYۈU hL xne IH[q⟿ZJ2wD +_XaJվnљ:Kh quJ*#~>l_ +8?1+P-oSuϱ}qʻȧ15cc12>|dc1_Ma5E!g*dpKO :˷Ґ_C"Jq vDg=TfBp1C1%gIwC&~R2"g$Q~g|q|oHmD_S_ܹTZU-tW[6F9k㨷 ^kCH#UȘɵ /ƶ#/:]9&ƕ+!M #2kxRf--$WGgQy/Y\u-+ϚЫooҐE1'هC|FD:k^*"YQxe)xs1Nn>q)89AF5 .3;xp.h52OuShAlC5lLZA('KVbCJ*zik(.Fܯ#RZ˖Ԯ Ǹ)`4{gjA'ـ%3ApaŠ^ݸ`bZ"cv5釚06XnOapcD͘ZUJLD:kId1/X2eHl&KPf h2#N+ыJ/CzwMLx4$aLFd h(m"(e㿶4ss[Ck٦C)0}F۶$:J$>O#~̍2WRw&LioAOe ev0+5oj eLV,M,xw uCF QB  ǡ%=Mf+({l"^J =ڦi[Źi_qoªט/Е=VŻQe/65+8֙5RfEGG»bPUm1qvsܨ"nArףO: MHĐ޹Hm.A/o.CME)W^}yCӌ}- =1 /_i~GRQwĚ MlļZz щ藙HZ^7t6-^Y]T:Q u~Ua߆>i:RKJd[}ȋ5[c Q14-i7ՆX>Dk-RSO#& i ON/:?W#@ب.ǠK]M]+KF#>Vcs)UW?: ђ?:[2G嘳 WߍLmTm&wF{).6՘2#? \z͝3yVV ǗƘ1.8f54Z{)U,' ]MK-K,1mڨD<}ˊHnʊEXNt\gZ sȇ4%sF,I>"NX 0L#*ce+rә??LeM Oqa]67_!yfssY8g3ZU~lj0EZ#HQSv$&rf*(Ysp@2%S)A ȨħbD|[R?m}]1zfD O0WV#7ڃPs[I?bqHNJB]SIo"у.GSZKѰYF?seԣ6mk^Ɉ\ aK9V7G˰4?|VnۛH){$ Jݳ7JJ@LMHLIŐT,]47CQVUN\qr0:@3&ʚJCR҄J#{J;1*!MrλJʞv)XAmĀ_FYikJ#FK;)l*Ub#Lb:ܵI S5ee2 mEYx[>տ)r%ޏ8G<ՅV^2ce%,D5wS;cD-VR"`XV/SWRn̥uCg^b5WgܮHre%k*9'$pʢaI{u+EXKHNs])ں6E,>Ǝ]_0yBi{&<T/,(JLBOX0m^uIn8<?_{9a 6^у8[\vW z0~G[#LciD Qx?G ˟59#Al.B6HBZH\)JY9nj[Smj,Vv.ݻ4wƿƱ4juDJrZpC4.;¤Ӿc(%ᝥpi'W߄'ߙA4h}1ԾO XnLx򌱶 DEҌ OE`" SI x`x"9-Uh%x%mhB3-sŗ}8s 2S8%$LLFdgc&E #4;h[f8VQ tHHXf>+8^5TCsBwFXO,EПfnj{?^*.YzyeEsh#+DtuVyO@V݃HGy# `b֓rJVVR󩒲Hb<+k@GXꔇdMy:+_IcT5@2͵!t*iĕe4sJ@T!Aw ӵ ѥzf ֜VtJ'CW, (Net8ahA 2Nx!G"HHF8V22<>F  5n sO[_zj={jp bkq- e}0fAZ]S :i0la@*:"B!L ??[LŸ Ɋ``G[ԶAH:q/s-kWS={\YirE?pѵ`fJdjW_R.tn~;J(H+A֌!Z^ 9TTQih[=5 _;;^{#cu hf>*GGCmMWfO%[*tACFb℉Tlqc?|/Ȣ"\ӈDDc=->ڊ&OԣGTPL*ڑHyVMcK^T5O5X]yHEWRZ7;W* ֶ֚)nED7++j1dHT=*\Yoo-JP_Sʲ2[XA++Y:_O(wFGMQ1˪ϯbbl+UƋzuXUvF{hJ,//yw^[IW|_k.3s/8nTmxu[Rq۟6IIFZqS,ZkْƵ %KE˼SRdEDᕫ.f KŢֆѤWTbɂɔWV+g8sg囏폒b a5e i\9h.ހfFsM2jh3#E6-]`Uo?U%kSM:t+S2-79},|DpTSUOޫvvEsV2cx8jϔGPe`r2"mQjJ-An)@.Y˒{coް]];z<7#q|<.d̩g>1c=j|b M?j&H&NĄ1Ñ[6[?]7?[%DxvMl ƙ(w' I)U ڼޠ5+" T0=\6Gƿ 泳Іt-&}{S,,:tG٨V>nW ;#>p8xa}yT2|M|Xի?R׎}dbފ }H/hl rژ׹>܎i<$Ga}zbNu+qh[_9i蓑 0ooD% 7"YT/hUv8=ۃQi͊//6oCSCC:"j*)CGe e[)cpܭU 9-HUY[q1"_V<8!MTڵfdm<׬ ̓g_z=szAYq8z9f0abIEBٺRpD~)4UP}-)Pʣ-+*';Z()no ӓنm([VOM5qJ) $H}Β;ȇ2|, WA%+*N"=3OpA: 1JA*`E!'ny+2R9$/ҬT>A#]&Ip=AyX*]p=UE6I/YX\qg:g1)~W>^g JZ e0h&O? _@VҀJ:F\ZVd!J*llX Ԑ{pVl[&6m܆ ?3OU3OL٧kURJ+;DL*>Nq'P~ShqW_*TF7n킕jSA:ϔOXcR\s?/1^P ՚?ݸ2 Uq?7'f ?OzJ|'ԎA~r\Edb*223Xf-O۷簞x'kEjr*">a^o,CCIG!ύҚ+6" M-+Fec-386XLH˪uHLtFkQixnq^+ũ=1=ۇ4|RT>OJFɆm5ݛRA @1voFx3fL<)yU0"&%ŗW\^u80b e7 gwn\A׃ڈ{r:$Q׊g >}w_;TLRlټ6R}%I(ޱ*F&L,D(I$ŗ8'{[?]lƎJm)6 O{!o_"R>YmJ{]mvF^}kÌ`n 0wpJa$] p3S_hESrR*w-L(b;zEzt$e`{E#J|Mo7fL*%xkxi6S9. <5tcnnW"aGFl:v|$Plq^Y($X)xM55(nF H{|[cڠD: oTaJO/KuxvS%RPy!-9wlu R_ |*j/1>gY`_ ӆ&z`T.A-3"f!7JljA4biUMT!ڃ+ qFQZRȌTZڈiQaA]$ꨄj9%[7~n EܬVaSCȄH`={E{Y _ſ=-jF4mHǰm3AEȵ#S=*oer}䬏d ,F*1;qR_J;W_( -<4 IFܜZ\h&ciЉWv~~Bssy%F|g&LiSbI{@&Qk/#iGbڴ81(#?}ԑ"/Nr$oCp13pT>u ≏j Tz@OO8)/`u9߉kBU-_@7ࡿ>L#. ^Sr0b8c0sbpd{#X^*5oKxh[?Y)@*(^Vs"N]ſ3qŷm=qA\ ?;j8i :>? )Q y{ iYw]4xJ]uϰD\VBu1& _۸l2; Ϟv~jݾk`8Fy})ζu5Gf {HdwWm&7/\U8~Lڨg}zD3ڴD\J7|yQ pئClwO@mT1ڸn[eo%++dz[7/m۱ek ꩔ioN|zռ9vP:jK={hjxDLIkRXyAmq1<+֔Nt}PF@ff6~uHXO+ nmuشߟTVLNDn9i1sQ1N$*/4J' WV᭥u:4{kpxl+DZubP /-֥8[JbICԝr摲rM@s)kLp/!h܇N^Ô>̬r,<*NFHD@ GXL)% #TR\F;xVF3{#?'JqQQP2>{Ԗ-k\%,Y|+8 yyap*7۱jc5E|HEP1Eg`i'no)>BVY{CBV`[*yj%Z_hhAz+鯖('ju]2TH?-8۱zcGG_;62ߧס;B1XBl}DQۘNuWsJB*:2rlT4oДQ)ػ7eI.ބWChV2 ݎĢMƠZ*5[?֝~3_4' ¬%Enx0؟V;?Wb܏0vYD`蟩$p}tUԃu࣏|Z_z_s$aVJ.ʍڈ$'"|qN(Tmހ&ᅪU<'@kA㐱ڐ~r^:\l'8=naRQYDc>!BalJC ՚ٙ6[eYm\J Y6jq)uFεY9`4';ם"7(ZUhZ8ZtqEZĮCG7>sLDOYRQV(n] ϰ un%WkWʞFUJtGϨ MTpE &kD456pEC[.-2)}H"!8?\q^fV7mH$WU># |*p$/MBf~I:r[q6BYEeS=Sނ#ht{-8۽QVkhp&?Te%8r2Z{Gbxz)^#GDv"TF%)IOƢa8"wdy;ǜƠt`( ZZnVQ)x N(hLKBss#b3gr%&R( MTJFrMgfEQ&oEn3E/땍zZڱƩ PY1*٢mc w^%/L] > Y XTR2E0?O,PK9١.E v=uZDJ KW)krFd\JY ֗Q)8Ծ:'L䪭,e`RM(T*KjY%yA.Uti`Q4"N_. T#HE oXp|s9T=aƅ Y>[F+eH+/9PI\4J*v%DQ~7R y["/ jlE.KͿ0R<yB#FA81\z;t(4X_j:'M'w$y*{8wO<?rl~kϟ{zBg>M kX~6 e3p4yr.& o/]O?w?ޯ7srk{-6|<~9b> 7-Ư&Qng!\l ΐ˻tN$+…IYwVM05JCW>p g #6WTG ׽BRCoƈ_bh+;ȿ?766Fі#a ݰ/(Ξg܉nq|ø>abG#kO_~nn?;3dhg4hѢ"DB֤ M^D"vs%Vx=$cO|S8'_Qrn~4-[̊d޼! ?pѾC^ܼ77*l"{4 wecՖe1}qSpBŵy@ C#Nz%[d0MӫSs%mCՖۀ0%1WΫUo{ [2pcDݺQ %mDc8:h2hc{nYTI.{_5]ypײV\2KvxN߶>z1>ؑ@-^gܨ{QËǹ`{8}J_L݊`UqхWSS*;U\a?r1ǢU[JfLڂDٷ"u軏̋' łςW}Z؉㛷D_deY<.4$QX-U;/;S^GkkCK?ƥYOrAѿOoh>%W`䙷D' Wx&Ӳ gY҇;Q)r ܎Uϰ;fb7o:_.rYK'=SOg0!t, -Tp[[W8(u٣btnfr¿;ûgLGjogFmd; }XuàXP9>^N;xg7Y 5 +{%"j9 G/\ә97{#j5KP&-RWYjn=Uk_}@))$<8;o?_8uNZk]:BoAءD_֮ [oI!'&b2zpp+ ]vPQ瓣kʚ=?{poDpqh6 ;Uy `mmm^ Sh'we Uя.4Ҍ'5)h;f\?JY6r?KY!d7a$CpD4ғ熶iuSlw-h.G<+tIEs:hBf 2#n& qp…gB%q H@}yO|TEЍ^%=% 7B}diYť%HyZi=UW`#ϠD]M)ȎA30i?"OŅEM36 x(+E|c&eN}=[ ;@wr>=S5x6sH*;s|x_K.){/,KC].%7ORj/m_<M`rk.ymk84+<ԆpT["X'HYd#1) $ar+%.x^⭨}=!ԵۺH^KfDJ75V@톈eL,sL2LN*r!7r0T^"qgu?[T@0Z`V9z<*>cB.YgJJ5ӑND@X7Yx9e"ʈn-g^# 0< n[_F_xN8zEu8q>SVxhLO@KM1C^=,סՋc06OχAöXb jWH܋iw5E0[x^`L8/[qHfp.1Dc[/}5̕tZ'!>apo w.2uEh`~_d|9agoG-Xե| 1zzI]o.FIԋFߞ%ҴiTi6~H]Gx"]RFH>FsM[YC̜g0aNnq}P@6}xzX;xĀJQp_xT)D t->3.o5\YH ?5(؏Uxgӷ )/\zv23}t,|v+ŸZB &$"Q5G*{\Kl[_$yA<[{.)VWjJYDc"~0ۚ5+ӃqF !̄Oez\~q.Qi1g0M2ٔ/@e1Vy_bZlU\[qKD}=6btϞUw~xʾcc|g&珖 7F0eeK&?7+Oao#l<DZ]o+CE;_qrw.ve bQu"a|/<s4ɀ!-e/t~\% 9 . k g=h[wȋB։jxps'J*nrxnZ^!~&R*(Fz\MX+X.k\bukg`дJ,`׿ߺQqm\m@|sӥrq粌xpKE_ =.r&\x.("ocya^8ֵp~~YEHuv?oɇѳ0X.ča'<㔡zep8^nY?gS-z=~L ߳7붏\ڿL%|?x8s,7 ř0ǧz@V,M5gхB>e1u.:-QuQP.Z+m`#CzxS![1% ڵ<ƈ+UA+U6DzA[a?saE:<rKrFոŔX*@ĥM¯Jy>å#q_j7\}#=o+ ^ő9ir?u>W$N]vo;| ymtU;aus1SGW!^ _pqxylB?4)C=h]"쮩A/͋L΂ty=KbmQm8[EOD௶TVI\uBcQaM] ^vdѻoxkKRB575t835;uPMm5ZyN+6$C>7)̕XZ67ck6l/ORb|<_Ah^KKqb<.7j>w\_ho4nz:D4 ވў|Tڊ*htLn敓וS Ǭ6,j9oyYOġg.$eUuܘ.%`F~&n_V^<* w/+V .6ooDM.{ xWkv?TS9Vs#UQ0ni#YomF̤42,Ӯ2C҅b24Sjh-byżaV2b;hrLx0?Wi;a6|/8:_ )O^ 679.$_;';)X nƱ F?)tƛBRymWZۭrё. )u)gTF_iag#ur$7gkGZfaj7>6༣qT󬥃&O9FSqk5zBЛX³tf𬣓N @1>5v%SO6L\3x9f*'݂*Y x5f18)}o-0JȃI'2'yvT"~BtG!8j~ 믤~`Ĉ1E' ,ZF)pUlu N6K.q|`y~ ['H_OT.\͘.)eS;RNƃ뚮~c ! SЫg/ =]'?Lg^KıohS}-q핎_q\7ĉهVى;Tw~53S1XgqxldZկ836{5|^tsGvǬԒk>{'j~ru WZӮ_M2WN'o$;D&#O8觸HOe;L].g>lDe#^@U//Lϱsq~1bwڧqcvN60>B(._ao&00 z M+6Y!drtMQwصbYi~|W bph6"9}!aW񉖙0\|OF4o '+"tczsoNf{ `f.UAolz.,&M9wXMTcGxb?7q-՛T?rCwLomQt6h6 LÛkx@<5Lua ^PWgtÍ~TQ"oU=âNq'ܬgfKTR?.vjx$Z))7Q1 #}榇к'kIJj.9ǹUPܭ{ojMNT鯖hS?xf =wep?]߶MGέ cJ쥒WjoZ2ñ3z!мu̇' Hzxr]mqn-h~C'*kv??abY?PUI[.cdt*-U~6sO.),|&h $s?Lv1uAY6&s*h j(f'= c(`$2e`ŴhDY"HZn%m3\.t)F^Y`O>|+26lFh $z)gXpi4"TEꌬ8D%}]ݧrA|Bt$е(MMm~b^Y?.V9Ջc#@oLy(I%'c]p@FX CM% ΁qN 4HG䠾Te1!=/Kpk9c@$ZrA-2j>)IT7S<˶Val\kXk=Q؀dTJx1G#zX~<6"CV+L@*ִ`A9]3}|smϾiD\YQ{u뱠u>0Y(9ORAa9?9e-|;J2.)|)*5- } ..&~/dαNJʊF7x Of!D8O(x-  ieee>m"GzklƊf YgѠ$zH%'XpBS(0])mmTTiO/F|e~Q%t֙WN6j-$2#6 j;OI >C@8RcuS{iYU_1ְ l]{ jS]*d ϔ+2=oNWm+hK'% w+PN r<< (YZ &Xᷘ/xCyl+˵⡳y>w"r1%ZB^-=v-]ɹ w-G VTPOǦ~܈T}{x;T?!xk?oս;ܠUo4Xe )muawAy3USї;#x>ҕR-1>i_p˜,p| \Tx5|k$"-x*.Qt#ܝ9+?o)J ܋;Nm;g7xyE;}.t~p'p'eN) ~طI(Ĥ0UV %/!sg. o`<{{)8jxdnX ,D2*Е#ZM9H#/D1.IG3@ÁUx36o@T8gLon'P$7'_|#TE]"@J!L¡KfV :k_'K|t%q̦snb.=**6XEn ˚NNʮnG,pzлqF7QY9?~7u O ZC`ބpSPƙ5Xw97EcCL]aEm ~MLVi ))z>ח6MlKD8_+G"97{+gR҃bI st^CNDl 6 EETq[4Y8 Ǟvڷ2$D#IF4] l;;&*BII1-&Q,|\ث9PZQsX&H3VoBVr ^.Ň˷V<[֡=T<-ц$D\crs&hzQݪ=FHy8SM#Ў~e^ޡEtNE7[#v@{p̢זͻ!?su=wHZɴ\~DlsҖQnXX?KB-JRҨf$m3)܅T|5v8J! nG>ӢLփAi*<_󜪜ҠjͲa]1JMNנOV%şf4Jr^>)]J!BxJ#oѢL,-LqJ J&+(ltY[rEXYy ImK(z^I>T#PBE-%%*Fq~!3S4]oYϒ)fIOrUYQʜj͕o^B9p/:gӘp/\UweX=0f*h}s=1to=Zřjqe輮k_[umj]]7wc̝Vjׯϝ;1o<o:5+Ř;ٹ쐟@2&P,ϭbE-o/‚eK1{/"a_eTʫL̝;933|c-W =b.WkX׽VU^Pw~Bќy΋\3>8}bgZ}W!T)޿`!c\W`\0EX+s_jfEe^;0SG&7Ezz*96/.Jg\PU;V>a@IDAT|ϟ{_wo.iWs8;xMLY}+bnxai}+,ߧ^T{.?3r~2Q_[g[ *+{)~kecklo-K:|Yx!ciFeP#&㼕!ÛvM+RĻ?a-W}ZQOSGWdB;o=f'䧁-GSyj9T8G>k"z39ET<,\/F>,~ Vu韴`XAkFl$G@!L&K8Rcc/fX:7|6r>m3l`_LyhRO%pGC "j-P_Z3g0?Al^ +W ;;׬Gqj^Ř3X7pQ\%DmG&R:B8f#أ!}HP.ڕ?b~nYTYm680eSVrR$o6sby>VB*B 1Y6[7mA4[JleQTX ;BTFG4=TprF<$Z"#blU&+y r8tdQUwZaͶBu- ]L۰fxh$5<ahN|(HATʣXl$VSHkT!r*Fc'\ j2=msQKi%A ۫Pi'.xų]$6Ͱ^k_"_gX u֬y tz6R&ek lDiMq0ֻIߴsQ3bvpeϘ[b.+-YYE*̨6%U5VAZyM~~" 1QThTrX*ڬYǨĊ2rS%'PiA<ぇ},nYrr >SqaPKEFlhYJKeͦl0N1KbPx"zA(R珘̉;/?iMtHYd| +ꌀѓj4|0 2Lb;YXie t$} &. m%(լʘGR\)åOY-lURZZ-V btkXłqdƹ w46ŃjKU'" Ѫ7>A Q}p+p$s?+a.,{^,߄/~>.@Ng  epWEߵq x!G翃 2  sbVlĻc sВʳt8 wih\\šxb/?+E=(_ 7v\Ħz-۱T}L?3g.ĐfKVyu'*5=yt=, } i=_bdڭeL-O*_̵  ?w݀3pUg-Nue=2j}^=?mfP רٵ-r~W_߯ |W} lBP=^']!y[mcWQs7K[X7z_98_nŠG?78~'e=?G'.o)WȭoK;#S? m,Þ^cC$:f;>*|OҺ1۶D.ŘӎGc5ud;Zi}c@̔/Q-=IEE׬8 >c_${aϱZ%ė?$mbd4<"?SH~ |w[2\._Ko,Vqڬ֫?ku^oeȱ +䥏5?.yp@=񋠷 cuw=tV Aw-WF_=zFE33|pgFc{f8Z"#se<\C[I398r1Nf]ɗpJ( I LŔL;p~G7 -׀{zǷҘ36>/m BfAG=س];_yמtzyP>%hbX]9~5&.aIw T<_{/ebĩC|=}{a׭<㴫pա_gg%||wSƻ#.U3xտڢw³\tҬ{VX9z] /гC=/d~|k/4&U% ʊVLV8; U+J )KO6E7*ڌQL"kKdCVٌ8n<ˎ[(Ȫ&mK]2RE2e44V|bAhaB%Y%ŻPYVd5ĢB<{pGdP!UsvA]QZRJ#hI n!r<}D&hAneԞ=x'fMڝˠ_gnNhQ3C J1UH9l3!M2:Ibp4n8j޵E82#vp.w('cӋyx_ߏE3 iJ0Oina} TZl/PZ)y)bY-1oA|tui OPQ*s=˲k8_%ǵ{_|_c{~kckguUd5:4 rc6}7a40qN0%;,5!lޚUO-n{]>g=ȅS񱆘hWFh@&Ùv Xu1D[սxȟBsXx glߡbݿZz(P0Ɛp \z/>}ҳA.{2Q2{N~U "k%J!WL0 xt|<-P}?6)wُGsN;gWB/קY"Ow+uדȇ/Դy~KtV}p" ʹPN|Ca1e* qFԷ-HjL;u:һorq(\5''_݇GWJ =\FS>6)'aac/Fm_I҆|t݌'z؉m`.O+لGX%Ya圤t7{m?vʟ\..cD]($/ǸWm`G{f`~pbΣ\:x"&?2 _|(,_o!'61 GRDǏ-jW'-p e-fY9v ^9%Q ??wxqA >***错3)?o\Gp,%[(C#lhu třڪAx{K* Kཥ"f 9cۉ z?NgZ$3F??..%ao(F%j,ǟu&N,ovo?R5W;sa ́ Sw05S׹D#29R%8!T)DG-ɒ~73aSyį`i50cp4e^K5LjGk/e#&` 2CƜ &.s4'Dƣy5F5 ?Jq. '~Lop #ο>}`Ƿw55 .-ZYDYЗ s=Yq; lB2^Bc> mXǷ!4z/DZhs&2b8r>*}I~SsќO_a&iЅRlJ8pdG_l,_uuDysVt\ S$q('_aŞLypuim,H%U.N~LD6ܻmӓGLpz3•5u7}$ ny{.?ۢ׊ ^$ 3'#\yƁfŷ3]bORsD[zl>jn0]-Ew݋y]yOS acv;᳈>!+5bX}5 w};>WT_cxPuO#ClA)cA}ػ aK^C0iKYْ!Ŵse>[&飶f#]:%ey8a\Mi ³oSL,X2RyS1Q#`XYIW/鍌q9+ѮKKTkqNtOz&Q~~pvn1:svV-3|Zv@&eSLaҚ6uh;XSh{)h ۪УWʋ_퉩hҺ BSZrV4o(*>wud-z@Ŗ ^ ' ?f>0L,M r4JiEZS3ha߾@rVBKON‹޽C󱬂Z5a>XL0lĭ`YP*|]XES־Vy_Qj2Lm)kBAR;10R!R@EU5FL_CY5R^yz7 ޫJqHwgdcGwk %3i2o Є `wk쮬-1I %*AebMrdb HOk$k5nTҸ _[V$+HѶnF6-lCE-Md]QTɳtfP;/97**!¼S R?yp"n/ȚؒUgJyׂ_\ˮ*RݥP ֤+ 4:ZsUZk:g^2tY'!n9#?}Oa1OC&7['4#͟"g?ԧ?ly?v&WC] 0N],N{KHnZ&*( חbTypۤ짯v>>Ƭ.*~C(y>G73ecֵ?F~:nz[9,v_'cD<7 l7u;D#aEyYAOp = Qw5p_roChYL<"C} Y!MSfL?i7-w1rmg(Eh$-xC}kF7~KFC1o!̛T"QiB9fQIJ8?!t=t@K *E|EFOB^;k8e7{~Ϸ~kzX-^S_{*Td}ҳY-Oܫ̭g.A^Nh\;ZR4p??!:q?;Vp9o d,EQ*8ے酇Eړ Oͼo]i]DƋ۠C4ї I#R !?h^texpcp1q5\ OgȌ1LE2~<p@YGC*;!ϰvz6?$䅼s!%[3 CJIxY*c!.ucRV_?} YgR@5@H>>D$D(NX\( >_G\o^9ϓV110b`*.S0hN̘L9=(L#[GL>\kG:Y46,兟Fdz!10]}G=BrGk_]*}=|2A+A#:.كqxc.>= l{|¬? X4C049?*V{.l/-k1,P1|.T%1tb.v={zqT_mZ;\N?KŪzCJ&6T(eេ;0*2P4ʠb*>F< Cr/`7'ɹ\`.D˟b-MGaoo;nj0::xhT[>EsupdYa]B7!j%G0jy~T☏eʮVC鴰ث?QTVRM Tʳ"0˱qGn 71LMW*=3vA~^zdE/ 7!)XM+9)Q |br>>bP\8+ Rfڭ:+|V]#\[gD_ 4M&"+QFqbİ8н yL][6A)D\#Vq_8}IVc9m<%+7P&؞cXZ[6^-"P6KKc1{N.V lDZFaWהBeKp{PsyNE]pl |W 9D"M2] I,#T(|*bcؾ괶X*< tZ[D`#Ȓ2l\Lz'*Sev*%U?FPUII_6eWay')ZJJRP{'QyyWɸ|!vYR bڴR2VdeDP$>4ǚ4MݔW֮aǏ;KfGBQsj+unKFbҦyέҢ`rDQ,AYщni]pL髥Zɋ[_r= ]_PAbOd`Y|ɒFP Za靼jԢUfGVV^\XҴqbGLig.1lR/CUX||mGp7}EV/a\kZX0ox2lzdtE;7 )6 `՘9>$U=~UGFGǞD~FZ)ƝxYe|!xƉ*ܶ0`׎-Xcx,B.w;-ZZn_|IN]5(p;_۸96!% m.b~w̏uѸ)z{hSġv'[$7?/m_B3!-诙3aΕ1ON5|ktX0L>} 9 g GΆ|:f$ZȽ?z%~W/zа~[Aj5;GAǧ'/Ch>ytnǘGB;> ?SfiuM>ֿ'z7,w4˛ ,Hi curz.y Y8ZܻgD@dK\oBQRro0>C FL_ОoOݒ u!}1rC8 {,Ycm_2oc=f>忮ʟ]T{9(+?ջo ש;uVtӗNs##l*%/?QRPP׻4sԡ @,<.q :_t}ޝHmңPRBV7g {_cf-x-_g.ώE*atPBo0gw.~Cۄ wwb@DJ)_~F.D:s> p1I1OxE":KMSXAyqtaZC dLyKx}zBL ź3,*gd ۟}•-œoi=iUTX#^ɻ~s sӟ֕??Yvq\WO918AnZ7KwݪUBtr />ȷOh"SKR󹆓<ae`G |p6!D_a6nڦ\(`JTA< G8[&G$J7 ׀tv Kh8G>zF8Oٗc,fy0&PH_[\ -~o%P?}GNI|yKMRN*/> '_Z;b#pH!MHBhxUiln5 XF?K,kXֹG}ErCۃ͛ˉCC-'2K *jNʘrn# e[ДR) GZ QRc J1yS%|'ˋPRVBnZu~6.nvьZi͚UZ*>%ŠI<eT )¬D.WDo$e#:ŲgģYb(}Т&vq Pb * *Jvڷ Th_v9@JX|)+/Fw+Kxdc%$Z <[~FّdQM4%p"ZZjR+кȭj=-PiF T~i=zbD&pErldibvjKWғx&)ҫjX]]F CAC$ *fJY?/Ȃ*R[碲kG׸KѴh|g^jBY6[P Yc* S=R[bJB݊"맶L[9+#DZ'@^z3ֲVKqrs:qSS-Y"q/?2AMVq1 +>&\K6KqvgP7]4-Qy 5ycD]hi6(݇5-7c=[TF#> #?o(0 "x|D˺Ľ 237X;pKolYdž>o>%\~/Wdi}8EF;bN&&\ܴqsaUB?b$ /ؓ㠎>4;*ʊrU^@t_}ՆB VZu^{8)ZaY~ &Ÿڹs1%)>o'BnY5+Jd|apI4$4Hdgc 0 ,O8 ˋ DX2~h@F&.\wJ6K[-۟[ZV^Z<L29(Z-۶3xVbmգm/\_ <ʕkxΜq0)C].\bop9د\@\B ȋ\:ӗrV{܆7mĎנI`oN>B=k!*soFLmEg܇Z<,gdऱiX[&*[>kUkh_S6gcx#{'~)4f8c|L\B=#FX)"*֟y׬?uV.؈#0nXe;iUb2{|lOe?)ucB5yhtkW{H;΋ɋoJ>y$<\&  "RlˎLx6Zi"tx`b)s8j~E.s[4ɫ)Leg d86?5 eaܔqV=S@-s@0(_QlrlVܲ3Ċ!ZN>Ӻm߹gcSIEUjS՜K! 97< RYIpfi-\%;mT#N;mБaxm>N;/)ũbF+.)xSi9& G  홊}?!:woG+rJ!ꌮ**j[b%+o>w"92JNd,Mmv*v]ȏ㉵1fND " =ܚh1ն9类@ XK.]UAU:<`J5 'dX3mn)-4ܶq9J[*VznH+0byU5R\*į_dbEl}k?mDjd=5 fuTq@vCmaRfTe[QcJ-QZ?~OaU%kbQwF7S+]8TJ#^0e%zŒSҏ|5V-dv/ %*2+L#<$PjkҪ0i i%Z -c̸<l?:/&KNW `I3@ec̩#gԐ$ 1rܰnɁJHhX^iբK6-ɻ4V߲D$?Uaâ)%KID..;B`Ϟ =!-\Zy]~H֖%ƬX]'Op 8.(_qsDSa@zd;3;;?ʕ˰RV#,߀kOϰE5qqiGfb18S\ۖ.Tvk6tA:Ƹmz~9$*>tj]mƟ*1BXSItdY~q;YR\PJQTTB m+,_ie&j?19H!о7FOry襜my x Š6l.bR^_齏¥Vs)O12X<~#1i/(B8ڙl/p:zQmɯ䟈!݋;}sB 6G}<øHioP? zw `_to Nu$.g\NZ(Vnwy6崼T.V5?5߭i緤wHglQ7 &֞xV}쩧 CX[N<-Rxvt_6G뾙RV! FeFNb:nx?i FѹU@IDATd"7D˸heovq; Ցw2 r}O?=^xh /`Μ6D)た+-8Oo͉0fZr)!!,]}btp^.Q K=;ZQ2T)DqUG]}w}!+"ƨШ~'NnSN ɡI{ gkF3 }a,QȁkKͭ cϼ.1"xG'fp'b Kĥ1W&.`,FRѬ]/ ;&<*n$'@z١Е7@Ц 1g yG>pWDGP.Qf"+>'~Myc"UEbbu]%/lZ;p)6NG swRRZ<| %~BO~ĭ~OR2NV~ 3 *l2\ڹ|!G OZVőb GR1M`>3GpYd1ɑ:KO 󭖖QRf*VpfujH[BsdEZn{F11LɋgK-_I=jhUr@:R֐? 5OjkAYEEG xi:v__my;Lݷ=CT4mg9´a W7W;u$wwahH條?:|O!nӺϰPm-?`k2q8G&Jeuw"2orPzk ȓ˗d$gxϾQ寱Ս`ICj~=.I: i$n|s>}z-p &߉41p*Lwehm@iU#c:rX6n5C@> bV\~)A!*CwSE sKvB8cT?R‚+o" zxus"Ҩ8ն{¡qaFϱeDqJitUBFF>|O+8\$O\3}X::1U(,WO"*>7p7(~ϋ ;}@(9q@ 18mœuS\F~3>ߴ _δo͹ nWP:>,SϮ|"_\;[bl x􅜈{%W=ËSYr#֥_<mǬX;$sڣW. l"查ۻ#'߉ZU}Z`ĩȆuʙq߇L^ KC{{G'PLY6.y!#nǫJQ<d8wb9?Ibpgo8/sFboGk Q2oKX&*jH=x G?K߻o@]lk9Iaӏd.VzGsBk ?;؜JAD=MkƳxiZ_ܹr&q_\rrRt ( )E|V ^ ~RW^H`)rl@~}s&e%9+V[) ,v iuZ> u$vC? sra/xJF`V$TQ$gw!] IbJ"MGk9&+T8)1}9 @'Rh ͛R²yfr=tVeehYU[V#o[ v`gB:8P>-JJI񴄖uN<Ԥ|'iC9B$ɭ59yfn&'"9`bbcO%h4 pwkq㗫.4Mo@K4m  O%Z/Ї[!%.Z7 "*)lʫљ`VXvx?sp|β*ؖCv؁p6cūw &sP]Jmnq4-;PLJjX2;6@<6@%]ʸ^9S9UUUfS4*̿ DeI“ Vr,^2!%dueҔ+*lTBmT."U-*Vո P{!{4F,KLYbɉnK2Ungea&NJ$ՓXb` 6|mm ޱYv.P9)2u Iնc~ifLhin8><וba"U+3.RNyP9>Cd6c`^DȇPstiIyc._K_4?^Y0wR8be}oBP$̒"].}ls !}`o=8}pScg#nƮ¼Wo Mhב+%&,y|;-o:{ԭ}. nSm /OhfՉD":6 o-ڊoz-8;GMեD}!U\Ѻ.^pE'mX^rB?qv$Y>j/3Z#3\]yT\q͟/'TwǍ3qQgq]XUV{{)6[ 5 =|Dv<3Oc`{K/?.uOY$p.5X̡<:}>KWk}lX_cVw>ʴ-˻>/_{z]^g&2 ԝ[3ؔs<+%qޅAՅnDduh]4Kk IȤd_múm@UVqЋ?ᒬ;}!ʹJ"o6~-vq*½buni񕨈9\U!o@:a9&pߤW#/g-xG '9-O2<N`:naJ,WQ%Jgs_ϕښ(JmXiryPʨV}QU9;vNenfnF/Nƶ`\W\URZEymŶ2BiW0*-%Ik߷wl[Ke'<\mT1Q! Ъe*'MiT\csf* 5juYk!U:;nGE[ ޮ Pa Ar)hUd'j8QϻʔMëVS'_Gx4 r T<\ȋ0hݻ r"QL9Y7(NxûM 1VUU6UfN,rjT_د2 mЦ֌CZx%{'F{n9yb-`ݠ߻:4irnSY+u9T='h&LhTqO 7|@o^ex7nc5'}Ё ̾5:Rhk@s0-g+qhz m?)-;]]J>saӘ f;Q6wb@H 9k$5(hQ3u& Η#w7yU\fϝkaS3W^JrL# ɉtd#S.oĉs|TSb7ղ0ׇ9bq ]/&*:L^yq/($ . ET fD9F yqpJ9ɯעAar=:\pgGSK6jmBlM"&siU!eЂbAEUoxXlv,|VЬ 6 ̗>ޣW.x43ի2h7bsO:=Һuњ*Ը xX-jj]!R<Oi NB;lZTmZ~e4C7~=]э6~ucNf¬SkVEx/c{ǎMZ a@$2oO* 6<|7y`𭦦 " ,]v*&7oZc1@!u)SЧ>ͩ./Rh,~s& kڍ:7sk1ʲ^}_/ԧO?A&vJ_Q/|"X[YU}sߏhúwkút@_WpBh@ӏiл&h߃ mfpX__>&&1ͱ/5mYķi-1v{!on <c`I>g*f <".:r@d~B|sy`v0%l)%<[˴VEq/m>s1ÜVcpw+lD iik=׿gҴW~YZ5׳$Zp$,B|yN7ǬI?FbuHtl~WvFwL,K6a5%$ZQ#4F#Dܴ&Q>)MdS*/IIxPđ̏ULrg]GHS/%Bб3r `S@ZbPŔ2H-IG"xn5q\.r?LA -42v?}PCiŭh˺x|_g&Mj~y :@9+_=UxPkElh?DΝE1W0in 3ʩ/`D@kyQZ|B޵58UDP=Ԛm5Z *uס>鞶~_鄙 Zv0m1c&&S5ZJF ]ZOc fd:\}HMԙ2\ks֎jlnϯ&X^TɼHyuydSLTGS14 K~=[lhoiG㖠5WRM!dN3\yl ?1l_OD%T8C,k@+(.S<‘D븀<uNyNh)c A-fGDx, Cko9#w& r6Ա>]\r~ <.3-ѾH|T&wma u4=;P{}ǯGbgG)8?6qgI/;C3cNa䌉yhz;^:S/%)O׿tDH?{|ru6 x7`}*dI6h J1Bx5w;~t#-dOϠHDH_)._O ӂu€#s='~4Vl1^cK-үyHm} Ƒ6| 䈃 ^ڴ:Ҭ"LP[[{Z.]7id~o%%՘xLf1V7f˰ͳB>6WB=:1mWgì& &-P_XMXSgNz h!hoܿ_w)DŽա}0/@;7f`.Uz?D ;hY;ƚ#a]Y n@0cȹ(%K3W 0E}I󨾲OTUU}^cUQvBz@45)r+8i'ESCYi{@=_~.p-^T;W}Lj5݆9ڸi;|͞> 5vq:yhyZzrDLqe21(pmh` ߬ eY`=t<o&G4CB:0PtO AZQh[2]@clU2-ǟ$}f _?Otu8{mf~0/ԥ?fÛ3?K%? xx$3ױ3uu|ŏ/#x ?faI̠s3. 'HXI!K?YRradoNJ(<;/ٙfCܜ".Q" 4&)0WdŞd~dof9xJHiѓ}]: |8*ZH=cٱʦM|o?Y!8GtM BX'ua®3'|PR7"U螻RP*k&)ܦ3hyE h-544 ?V71$]+՝WkV@{:B(ފ辶V_>jj! +},q= -zi?TZ~K*DGeP-^DXd tߠ?{;sNe5WxB[ͦ o/07VYOJ3ŘH4c"jޱEvoQYՎWC}c}Qya}z{>j/W7j_Q&5HZtaVjƵQC ζZtФ:|#}t3Eu۲yt*U[ 1ibIQN۰5+V>2y5}P9q5_n٦ΞA}iTPR+k  ʐnR.Mk١ }y2979#‚$?_>(t|XKZyGOcG'/_[kZZ>'<(+x=#_0! F"` gnU!CġIIYF]VhX Zq;=o9g 3]#O VXƨm@}rEA#{M-Wx(%!f,Z`أn8ٽha:HOfL#$I9}C/;<39Eo'}9I#cfo5SZvxv#q'&>Q{lָ5v{eۺ+ r? ؞jMج}H>Bs3_x@=F#yFV-z%°d_)XEkV4CA"@'Ӹ<ŗ HyNSYk6id) gex:;eAZhXIG? %HZ&5BtyQ7w]|ÞL&M+od09n\kɗ<6I aѴr&* 1?*RBRQ]nx$n:ߧ8 0eh۠]J?3Em8Jyt,!"Y4]t*>zn"}LOHLzImGX.— Cá ^1ٚ8CG 6Ke8("EvD%߾a6NˇZ)C)c>dJ`&0>R4_sEܜMQ$4l7KQ1#QnHwT9%!>&"8xG:qqp!zkkϟGlĚ3@$3;᛾yqzy_DHAlh~\/K@z>M ˷6ObTtUj]—N-n[`Q%nP4G)xA ̦ByL2I_%ϻXIhdm^yu &k5kFzh1%%e1^zYU0UK[[#?OU`;lta'[apUxՔًu˵IT7cZ_*=PAiehy`Nר_fݩ^K)r=}!/Ƽ "tTp c]x ֈ)?JJ*haE/wUc |fcx@J1qؼdWпO4o}u{2n)fӌEkm=mv1&5jv upf7a"t3O 5h5ܧ,B M_TEsK]3. 9$mۤm11)>(?k V$]-C9g_@?IsNU~) * uc*P XL ~F064hS)G%ovZSYqcjzE:n,3 r|O}4 9m&~D<بVkcLbR[]1uhkb:8hc.U7_M@)t @H_N;Ogs U4~]ͪ) T R1nyk>տ}:`NߵR3*-0w 6|y\)~ΌN_'L:U~< |*ff͟pSShw ey* RU`f'Q@;&&KU0V>ŷ\'xShxD]B{Ȉ 7pQ| >Ƨsf%.>K@0F1ΟBV%RǘquL<4J 1W}-[I0CFLZ}a)rmɚT'@ 0fq m$̀Aי. OAcߢh& ٠fE<5_6iʢ9I~)O׿tg,IuC,j{>ň`?kϟ^$$ٿ:T??S]䟵?ǮFւI纯9?ٓ#Wy1yl$:‰p1k1_q~0NG&9i N!YA,Q%ZJeBPK_:R Č5o(AJxwkdyu60$[XsqbLב2ٛ,Gqً#Go+?tF[h,j %6X] G#W¢ʎW?SF}mF4Z]]k\Dylf\r*?D2eA(|jYz=O! ʁCo\PD5i Hb0BudޡaSoR"$?~_Vބ%ZyۍZНUQSf_F3Z=4к2TV%ZW2_t瞦C֫ t.՞2]&@Fk}ͻՏ9!2  jhͦ^ԡ 50\m \rݥʺIL57]ՉC^-Ϧه6=tp%g~XؾA]Z8jm|` `UIӦ>mi*ujS79{vдꌶ?;KVWK+hu7ު_{*Cz1 X_//cZ/3ltYZTuBX 44}>)F1f:V6l$:~ :e&Mqckȃ+oX/S,6?;5 ;saJP20kf | ?TȣCIE)"hO$BVY\^[ cN8K*㌝ΚWߗ#3h5&E\&= Mny޻x$=szڔ!=W xsL'BT|+%fZd.Gnfs ^,&0)b/>7yO0c z$\@xiɣLJt/G')I3D~ka\̿|^tIiȔ]oKc!+4u$xud%"SJ@7۟i ̓Vs Mo )sd7noݼNߤƝ!UKN80@r C1Gh 97~zʫJԉ9RBLM@c˾jt۶mgx8دƍwMTF{8*Yú)3!1e1}wk鑾 aܤ*D_V^FJ1آ1&I;h & tϯ־4kqzqU#ΰΛC{ܢ^h',B;B z'!L Vp,-(UWߨM@'t|IT 1J݊о(4ܾ `]ZKͮm߶Owd(`A}?~yQ>¿٘0WSW};h5uNnbubvֹڻWSyz|е+ !Ͻ u5u[yqM2GM³ozK2=| =:S| 2}~cL ofHo;4fLYE;yVrǠSԐ69qMZj8# XzkI<7s.86ᙎ= ؂hQjn#S;'%'R~mvZYs~YSIr_'CH_3{ 7NTI@IDATo*Fq]"pEe$wir돯3u}OYG>sS|$-O~ЃOwsqbdGĂbK#w"8呀8qSNYl埄Ms9a]ǏC@l۟{ic ̞ X4'ۥ7cp Bly7t[@$Y[\1$9cqp2_Fι5)15;h\"X'rYq3:`I!INĉ|[I 9t[ ŏP{ -H884IFND?TZZ } ?/,(Oh:_# ,J(tÓ}lۋP-K%Z>M2|Lgp# 0~D*PhXRK^VNTG_6z&Θ (3 5ЧCUUuhS5LŅ38f )aX{eҮWIEc*7܄/-|>UH=*ta@YkkK $1pS 3|+C hj欅:hoZ&Z-:)~H']ZC@_@/`b5ۃIиGSifAjoS-T[[C-5sVkS%L# 8㗝1 iј3iֵ=-S;yVoҏV3?kZ1Fӎ6[i 7@ ,=5x .1e"`ğlKZQ53:[IӎT橆oٶIs}<͝g V7ǗO~|N60lqi>?Sw>ƃn5SyXhʃ8K΋{dTPE$ب vCQGE.6K+qMV/ϚpC<|ȁ1ޓԋm? 綘Cke6 E ĵjhK s82') ۯa禵\?竰F%>Q&ġܽf ;͟zCMtDyg,H/>#ڑōsa/$o Haq㡑|w"KRz! +4St'䓖h̩jO:0J~k=\sU>-|hU'=n*~zVS{K&h tF>!B6- 4]yJ4g㎟[@(~~Y98Q9ڑ̕~.Bzh`eCGqXRkSb#h|hOVҐZwF;]y3.$(ykޤS_MŬ\V> 40QehՇ+W6L !a!4W}J87hbK/~eM'uz;ߩǝC 0kYRUnLU3-},|~`]2@$G:̳U5>+! ,.[t7*$b4JȺʠ!xoiic#SqY^%ŤWMM-ZRׁA2\_]C6s^˖Z] kס^?L_g]ݥW?WN O.s<>G7NQw->3}iC.<ͭh 8iK?rk;/a"g?&Ϭӧגey{׵j$JAQ_Zw9=s?/߂^M*Rj,M'^ 0n7!WBhuG=#oE&o>s :&JݪUkZƏi4QS/ s~ŘZ͜=+էǐEhn f3AZjljoTH=I FA@9Z48Q**}ѬxEuuҴ)3t7t`D u*+/zzTsAVVjϮ=ڲz (?q٭ÀMw*Q>qďԏ/ig5l%6OVfp`]Юb5@0:::T_W ط0ӋU/0HVzGumnS'O -]2FЫq~T?D{Ey{z&ϧ<e)@hŚ4l;&=M!u <Z nצkgۣF<88^}-=bUӴiӵhBUU鞛 rc&`h>Y{gqZt2avZ*7) T&NEXd*FH.㚩[?`R{zcy'1sXVW.zG,jA=U}|z5c׌So~p>&)4%ѐ*D2鬁VfeoxZ`hxY#mr.6*&fho>-VlǼ|>Lͬu31 ce]M1Qr1cT̆io!Sq>~múr#*P]-]^z4nϮOS7󯌶0 g)!lgE̽2M]t*Qrntd[} ZU3i^XC}QW[tSC;c#[gdj{)iP3>@&54`r1__GOqQQ0+LKc1EQ%Ђg0zfV}C!y0K[!0LF(@kXr ䷏0T]9ؤ2ڿw,ޔNަP5Zyh` L-ߦ#5s)^w_|G7uזƉ \ C}') ڍnn}LLhb9 1(MAP^gu9Dky6DZyuN[K*E{bZ+"\Ư03 Q>9RE<TN?FDzǪc,0N05]ӫt&~~& a[d@F'w|;y2 T.7ޞ(Gwtؑ{ydBubwmGz[/85P0'l?tbx5%~}n6oҁ-=wrterN# ws_7CHI'*aj﷡ILg }&aMO'c(;ks!iO&^v%D|u.ȶXKQ9uK y%# )Io|V?|t'/mdid0WsN@ dTK;MkW8}tYu À4ҞA͚?[M{]^L-஭[~ q7ثIǔ͎Ic԰& pfI{ɿuiUWST̀F5UU=ikZyj|ki۪Ftx svhdsWwoګKh#5ٌ^EӁXemPC> ~߱p04b2th},_R-T3{m#"0^—hG× .QZKwj4olݻqcWϯnԿ^Vz;ZTQ=y'kGWs*mVž 6/ !LI^MHC=c^ My^<FӨaEX 7[zhܥ\aʰ@la6nا&{: j!efKJ KUھON+_?8F7V郚В+.NƿL`.,F a4:aWY; IvUZFms+}NnA5MDmMEUjӤsT\Uht UުQaٺ%'AպvdV#b.=r'@cl&>Ca2$z롓WKgcq /xJ^">Cu χИטǺ1 .㩎Ds~i$r_:sx)O׿tO?/X:l. O8,;ֿ S$u&+}LS l>r4xh}x{Ûl@ȅ;IFRR.%ocfc̃{s(΄4hoj]=o0k`ΟMoOJ/h۬~Ϯ׵xƿ{ւM{dL&\lC_W~#}t}SߩEٯNs)xH(|$OQmF/hY9\A.sirO$7=b *gŹU,?5ǢHMq8jkw:~!<9nq/ 6U;Ld9 "K i ^CBծ]oZھz5Bn ܩzWh(;MU;Фtb5t@[>2ɽ 4l`Noz,?[^ ]ԲSNU]C^7+{,E;17u/ހɿAݭ[7k5_{?U/O 27yܑ lJnEz5-*5hr +gWLk.U⻫bh9W5@ԵR|iVii10B f@{4wiU=SvRvj<ܡ}: oʄ raq{Sz)h "IGsX.C] N㏬!}݊0!^v\\] _IcwZk}i-48XhZXt&MI˵gZ=X^Ue7&Oo.Pn[qީL<܄20ý#x1| T%>dhmѼ #5_*׬eoP*~zi}T6ޣw7KsUхr[0WOh(}33N٠09Ю02?Y/165>GoЄ>5U #ap`cU3A>~abvowbm(#ġk%0E7i(GQ&y}F@,5! C0ځݨA4Nm e3O0aU);ޔ/7t9y]J?/f8bJ>dl9v5h3B?[pp(ɝ\pZnUK_7'jδZiͭ#VͼSuѹ' .!M$O8yKivQ5#`Q |󴸡4W}$嫿Qw5ok9G n5e5 .ԩS+I$R;!m<(7 C>xUo͚^Mizۢ-~6.>oj4VjCZyE6u?ӚW014ey C{1PZg^MxGUOVܡ;Q(=/xQ'kɔ1c}DɘYo{HMsȔϿHNRyp_O!tCCjq26\ZP-['IǿIqXC9ޛvBdoD-"ʔ6DOxNf1wgϠZ旷mmzFT7o9{vic!=r]zxw[RRM[z]>ǧ~Rzy#$U`Y8c-j±:~6Z{Q$'ec?2O)2ԸUwr;>B柮K.Z* Z%9%%m-_=ڱ~K͔l~p*Wjx͝ߤǷ w2ZzhFKTa͆S`2kO3o֕:UՑq:őPd7v@[1kvb+Oӗ X H"S9=Q&G2Y t?Ѻ[5핡bL",tC:wݥv ճOXJ7 [up6|ռ3IWH/t^6}率02*q8Hɺ)ڿ9-\WD7򃾦iB*1l&!4 D̚HvUa𡡮Z'}Fkͩ=*)<8uxTND&f*ײ\V܌Z-;h;:Ѡu3O8zTc{eAkgpg+ޥ{5Dub.prCw_ǴlV>BeW &.*Pk 3E;]U<ݯ떂REj޳> 8`@R }e.U~Vw&M۷c62:=Cm0Z-5)~T@O<P)6y (]Pj|baʰ-ӵ0@ އIE1ӧçhUY/`-6}8HLEV -]8_ح}R f ļRG.UՒGK G}֬9xAAPr]Ci¤38 @,]{kՁUޭ_+ޡIջt۩&;0ה/O׬7jsY\B~(lry!Z|իt`I lc3,/UhEN`/XEM dKY׉v_Fc|ۘPcO74v&#R٪8[#SbO;=nݩ\ nE꬚ 0,հ19Zܧ -и_ /0L?f >UQ3|ߩ.I޳b*~˝'I:턜w~0M4l}!%wǴz'ĸh|EX%zw=_[<x"KuO[bH^5l)ɟ"G[!p+:ZpDܿYѩ>nQn]<4piYb93XZtBયif.l|/N7}vF߿.zvb]exW_hI2'SS@?6 p鿩qێh7igvҋW|@ #woU͉lGG9Ku[yT}GD}vF?("ɑGۃKwG$qݧ<BꊱfƆXՌ&:NV=߾\ƽAb;u+O!K]c'gWbLrZ-wʇ#3f16 8ջv/ ל3#\:+jZv4iz~I=$W~n=ng Hu: ԲXXϩÝWO|;JOЧ_IqZ?h{%qgK>1Ϳ+3O,<{#U!vr]O*O/]]Lph΋?~]}ĸ;}ά&|[7J/ ҏΞt&MypɿѷR82.g]|fF?,ɟ\|)lt ~17[!Ey؍denuOlbx[8(j>I@-G5Go$M;cqq>@e M!dW-.W Izԅp,|?>Dv쬴s>󼋐T9%Z˗p 8!a[2Q>id <JQs,f+ℬAY3!<"p.@jfp@5LcW&8]7`5ѐrх\U+'k@gUT`Uz{>֦Fhr9Eo.Ch `~z RתR]w5 ww|LFb566^4y,/M,[q?*(?ݸF_Rpf=t[tZ~\zdh\CTn_5u4 'YJО5HZ˯TgנhɘJ\XIha.VWW9*>煝 R4:x :s]W1@0Gk+ CPkm۶`yX S1+<|XӖOS%& Wn|00Iy_5-2𹳔Y ͠Q媆);\#hӡh "aָ&M/0#yX :N:]v;/A:[4aiڿJIpK/tӊ67 R7Mh}b_0Og9NնjFVL/g_^=*P*hL^i]m-+%sz: G^c*5 M28I+V&Ε~ S1`h~^:uy]0ڡ^r1ZbMݧѧq|Cj(%qP #0HS (E˼7 )vh b31G:mNt͛*`ESK`/a8sd@>AI9<=F\kF]%)SS:8{i=ccs)F)`6#W>{o=ǒ]@c{W4Mk=atc&C=;Soqk4 /lZ)-'DžGzo";bkwGrI6Q/OMIJyv|vU'w-<"a.4h#;u|oЄI(s'tg>HD˧vsjb* c"'JwfD|HWIG'--늟vFqD < %c&A"W ;BlO&0NH/*ɠN;l9#nӑG w0ɖ>ϖ S2ov<M4xw^ G@,L|G?e?4Jʟu;O|X/_a$j/=aI)=VXQ<;_v^Yq$G٪NWn^:wRW^EH?ToѻIїuj5R].!o?*O!LIYEidylPo+I1rU H#VAG?kfx" c>W$s{;tcM)T}|ѫFYWV(²DqtIZ9Q59Gw&OdE^=;sVʙE@ _]\w|Νt/KcdUMY0*'BRłP`%뒯M?e׎ɇ@Τsx?*K87; P\SHݍ@@P @Ki;~S'k_&^͐6_ Uߦr|#c,Ow]ķ͝Y(3 q #qv݅zpf.t"/|uZjդq*m/nI]8Tk^޵G0VR;vvkCh+t mzm+:2HP&H\?1 }XVv>x߳aEӇUM1@Ch Lan~l}(7ȧ& ђ(tg070o`18B[zi(;]ǟl1Cx>Vk5}x}oCN4V*f:p ]e0qs`ިLgcX@@m{pӦ! pi-coef41X1`b5nݮ*5E;i彍6s 7+o|k{`:j}o5h)jC_[Sehw4e/Ofl&41jhⶇ4~.r;/}Tk7m%S4m3h>e.c tўohQ%lj‘Ck1Q.WGEGBr{^Oj<-FZ ]tK2?|,ap̠Mx$^Mc g% Y}%;F:J*g&k $ h"Ceg=*y!9g0""(*(b^sXúkuWw]aͯksFTPPDaL`r?O9w}OzС:-vhb-z2Ե5rREuppiO|K bcp0W)c>Dd!՛픒aS0 ͻ؛.|Y~詏ZX~w)U[%ˢq'~bgnZGZ*%MM/3UC|xAG? ǟq7(7`t)=z. '~mBE6 gW(%jOx S#gg3T90 z\"~ 8Oq8V E68b@cdgP%ou}n>6n0tE|`O!g}/o>g~\LgXP׼6hW[ψbA6,n ~.u=?y*'5ROYX<$ȈYtszg_ +U77; pYnʶCbw#"nR(ⷿLڈ?1w<rqFM[~kY?߾k/r9ciEnMpW.^$5\?N'd43($ R EHB˴h )R9*4GMXޖ5X;z Q w $A1g=*)lML‰g_LsqӯP%PE HRRRNkg,Ɛ/NQH&㬢 0gJG Xv%)SIńg6o OP_Xh`R-1m6]yUISIiU !X8jz= WD!\siЄ>" !ӄq)@e$4`O@ajj"5JKm6p-^tN=ir  7mAF}HN檍)M -(& Ŝt!{nڌ}`OA&x}5&yh(M_(du-P yK%aS ۤR:/-}>j)&??2g^A ȧvƖcj¯pd Wd4)[)eVN 0AYdiQ@SӣExռQ0$ 4)$ܰaMQ"?4[r̤g: O06 ӯyS_b4sb ͐kĢ;4YI'<G1g(q1gZaW*1ȟ;Zs6{t2M8 >A4M0 (|Ƿ;G- ^} mҍ)\@:gE0-LCGqў_tM:,rAe5|D' O\[u7{y$TMI_TP#X&N|1h&z1-Ynq4Aa،ś5=>ݹq]4{>ޞ_S ߯ܩaQ %p.==3҅we<Â$^,.^COE?u0/:Y3q7[f 8>`vXB{ٲ^?z.phAڅb0S6֕ɴp3F5`0+0@S:G~n+~,٧P$;Ǡѭpo~&c‡vy8]SGz~ֲZ^gc <=RqͯM)V^#w[{7 O z;|i3>-^#NPju n".gW G ]iW7ſa *v0OK[LD!(?ETz2м_MZ V,K*׮o@RS4Oq |u0:\Oݎ_4.PTkJb_`R$`AC9?pի>b_((i_.ֳeyћ`'+"\c\ϭJ +oh\sp/@IDATk'l?wt@g|2Zs7x?Eѭ/w=}ϞVtDT˛jvV%cA,M´Zt53cDChSHg>%liD rw!6df4 ϭd}Ȝ¥y$WMU RK0HKg5հlK-A%Wލ_ YQIsLPZ4湝7/eZQIIdVQS j\ ,AxcۙR1374aW&0Jdo&(O!" ۚ6kh hoE'Db>>z%V!Y| 1rU"3 A,m2ر#y(9;a!P@D8Q1.jhѴd\"z \uj%`G#&g9*h&򩾕,;wIPIS":wrWymXu,64F0Qǵ-jOE֭һHni&%cjcG_|-4gpwd":ʔxF9 <iI_o`˖rn"h^[N$yfhfsS{"j(8lV#-qcv J_A\:h$D vhDKMΝţWۈfP²I5Zq;8/̌KR1/3N0l˶'6(M*d<ʆe[2UR ޡ\$SJ, 0}9M7̿HgC4'h"MY?5e#J`r5}΄ s+ ʦʡv&st#n~mG nq7^ 7o'JWRn&@8>KbÝoƭT L+KT!n ya1 Glܔ.:Aɋņ+k ge򧡵Y, PU B?/`)@”RG{O` `)ˋ*vp,"7ĕٸ9& hC^I.!(s30k9+6fZ:%H auNHVLLRz0{A܍ju0E0 Ӆ>/$ge2M|}(^kXqgg2WlGjʗo\ec.(0?d8L3o{J /O%8y|wH۔s|9!.zsjί+@h΋e 2g0 op)ϫΛ_u.'D_?_%ȶ.MgXDVx~OK:+ Fw&[/,؊R@vT[w׻׶cbPJ |o(ӂPp6Jg`-_.Wrj96ȀZ\dSJe-A,&I!tH'՝r?E;k%˿( A䃸P{6僞mOzdl}" 0Ʃ?/,} >9% 4; 5ضckw`ں8.0܂D1bdG^IpZF]]51cO+? _uZq5\m Gm cFyڴӼ(!m;lN  #-Ԏ?[٠/'fkQphq}5}]]̬0 ˤ,->؄IKKgu[ $pF},KyIl(l`_^Ej xN%$pzغu⩽ډ|(h8r[B, 1m&{6L{hǞȳ M8$edl$6@zBs1S!S|l{E6(vJzzcjUi&1TR\D硚qe`-شn-)Ռ+ͳ*-:SA:\{cLa'd 쭭&ѯ%iKSE%P6)I"$e]5hj kN~+%5JO üSPLP-49)jF6!' 0T 2|lԔ"a@\]廒We4XߍǷ3&AǠW6wΨ-@<t<>DV1[\)y}gEc϶p3@\),i[!Fcr˿ajx/y\͛Y P.bQlJYY|gK&+8NhV_nWS2.^#u`L`j0;H!n3sFʋr$|׳Gi'{~FJ UԚ)aߙT/qsAn}m_yf ܘ&hߣ+ZRCTmtU+ ׮ntaШ9:t*iF}97> ]\c_ Vleo#+柕8q@4-o?(ۅbP(i-:W7׼G>D?k,Y]\9i:w<ߛVU]rS-侫y&)sg[uj>v6pcKA5J&9HubWI^ca4lGLGHǁTB2z05CZW 5teV%/MC. n>/67_gqn1{uW;IC$cg^Co?Mc |s&4q`0mso Ӎw߷/]`/cڮ0]{ſ3H >ue2zgD$ld?ap" x%lCd~JX&Z'B*˷3>s=*} qVӯ[eDSD oG϶ѣ[wt:9 Ӏ0׮ h|q5AoI땟~ò u\a~z@ѩs;4gė33WcXn3qC@!2uy?$]K?-Wi! =?Y%G_{z]䚂P)j](˟Naл/:+k! SE㵞{Zv.{o@t1|U%3Msqͣ'ǏVcFj (ӽGg< WN]~T?;E_8agǟ5OqXs`h ʈ^ٲqr 2D_0s)/Th 4v CRBb:F!;{7m"]I C?9?[Mee|п=tMQˏo(<<p4\cpcذq1d`] tncZ_ءYN|SěO6m00+(h~jqyaYt_$)ҏd]TW 1% YS)= B">U\ Pvj$yg-z!-B0 x4*]Kc&+IJ#VjW4$Q~`gnhZ􌦘;y<(){s6MV5# ʈ#6 E3'aQES\3'[q|3Ѩ۷'< Q30+ѼY5[jK~*{Á-0}r.Cߙ F2f6Jig_D ZǞ?מG"Ike>j6,FbROjGkoB14sR,֫S6-Qˍq-QKI!h.1 څ)s Λ?Q-W+(+PhU}4mB w0u1+4ɉׇ֚pmKJ7vn]s`3F'3FSOqCwF<ۏ<#FHK87>;[*4";b|HꎣN<#NoqС :VVp*վWy*_O hB|֣)k'!UEVTui_ab3$1cu@Q52Y|hߚcv;pD}߻C28F7c/ >9WeN9K~+O͊I =yI'%u!jxFGdVL餩Jח'b= ?-q_{ O'x :eX''r*6P_$m߀xuP]c; #PɜOY 8ѓ@6*t ES, gIvm\P;ٳI?{~n^ T|/PX1\+ɂ,>P\VgMG෼  0I峹0H,z]DW]p# mXC`E;/Z2uNGA8w6%sG#a*Y/C#2hsɸ's".R[&xo>\1a@Zw쬨^Z{B# Fֱ _5躛_>$yh1Sɤ$Io ׃lpx|O=n pڀ/m#ՂOQP~"#%O, ںe9< 奖O=\ImdmDI v MVYO Pk.tt2vWM-ꢰN0O<=< 5ςs)ܾu bMt4Ǹ T#.(grQ޴ ,K5=ȱ;&SE ztA;;Gv= $Ri GqYش<ËXczf 鴋}r] VSS+fWUZ"5kѩ6;zRxX( j$LI j)IF:+S9Ij)ܳ;HhjU{'쬲B$deEsҊNeۼvGac^1\XsJ*Kq1ZLu7#{zM!Rc=Sm{auQ#l g|ކ]+_eY,E%S&fǐS@s0 yI4nXTe/DJnv-hi^!84ӦlQӺ>.Gu(,'xYB($\gQh:G,j0kB2Z c7KG̴[C~.@0(|61{6":n +#I$ oO!Ҥ!{anQ}I"姬`Y+ \-![. @UJ!<Yc̆_4 H_W>-ҍgl}?X>/=.I<~h.`]+(KaX"_KD/Z!yq4,(emv$\ۨ~0ОWLs'+/~-9o Է|Wo o}˃#.:?#XGxz5݅n#*/2o2jזg` G:0'㒷pMĎ]K}/ϥ{g`)Wzߕˣ.jǟJD_;hñw?0~Ƶ?E}p~woK`GOyցƿ^%Zo8-Usp{b΍[PJw1Mt92Db6:6p9wƤ F!%+?%-0Z6# hmǡ[l/¯|ZoC9Ns~LOLv1%'BZ.{-?BatwdVP:[L$-4~k_'Lk 7˯8W.0%p^=/ 俈._H>AhH$by_83dT6~_yNŨƳLw&ʳ3&L{O<< rfZ[n Fcc &;<_{U8~k1\g;'WJo*ڟh*ҙF(A _ϥpn+ێy=<سn͠i)0+W<c{ EBgދkwfd iS;(q9,>{WEx)>e*Mf7ZF%J@۸i#6l؈6`=׮]5kWcո5%ͭ(U@6z4hm*5~+>(,ՔX@ I ߨuW$l5ߛI=C#تl95qbp>K^fOC6=\ :eKWb+y)B aY\ bժC 7(F[6mؼq K(*"}풑@7%|WqѼ`33?ViӦ|ȧYr.$a~^.,qqx]#+?ALZƤ?kV揪 %vf_t1Ogđo\P=+d* gptˣpuw=W9&t|Q/9ᇓP'</K j9 Vw_X$LWus_N2x .y;Cù>xslߜ͛7cBk8.kB /|VE6wͪ~VDX.jJv?8>I?{E9Oz`򛸮yy=}֯'™[B 8 _"Ld\,uM_ ;sĽw0U玽Xh=a ؖ_y#*ċWvfy_^J7Y.ؕ런~)t׀aY wopT_饰I79ȫcrÖeG&#ůD Q-1KWCs&y>ZMƼkS/ɹOhzE"^%ף4x^ ڿݴX*/s>.d4:'KaLa"oF_|!<ʋkk[ǁ=U*ıp¹n+# [_c~WvN@+*ii8z)^MwnDZf>2H#1- zgE{e >n?;WO1.1Jm:?O0|P.dҊq6=\MY\E$«ʭz֛xjB=nHEiʹF{FC~C 8.WP0W86v<SSLk+p+*ri6OF<[R1OxQ1i*mDzx"*Vn5+xPrj*z}Y1 KEήFS#-A3|2%(6e yD^yW. |j*)Y@IloRL in0dy `MKR 2N-ҳL#o_Eu94AmMMfm¿dDY<ۂiVBVYZ RYޢ=&IUi[ҭ^5IFs81' 6vMcB+6 j1c%c:qٹs't҉ )4bم'3ER4X um2q\DT\Ӓ 8Rsh4UgI_ut^WU|Ʃ>D[ѮafQLP2gS"d,cE4܃2'I@miwJAYF$jeSKͼ[mX#DmZoX>y-®Kk Jij2]c\sP~F[ a>;m@Uv~a:A* wjTRUpd(lO(XxuwWl ╉s*Y-ܰHYߏ_ )\\߲:XO,P0cÛYIa?oq.[VOewe}%SgPR{LB}ӈ -48~5q3O #=}t_~k!D >{lbϧWa QS/Gr]8<|=|WX!w2(~KD_qM!i tt.wtv~~eYNYhܼ9Ѵq t;׿k>Ã3i5<9yvw~WKৰfY)k^'׾S_cnh(%2*LJ!h1ķ.g+ Ywum_A ;Xޫuǿku'tzgu׿>tw\PO/piV}v Yѝ&ol4DϰstŒ%ohJFrt%>Wb<ݴ{y]~ߨ߇{!+<ܰ%:*+mç F8sVQދ'㿃3ᗿ1N>/|*_l=K|#jfy?T@t4i~Yhq|17<;(8Cܖqv叠ǫʛql{CydVq_{Wʇq#ߨdeaj Vf2+Z 2OuB#ՀWϖ!"Iz6,]h 4i'm ~Bl^cHhSO]y5k(dH'!ge~kl&}E-jQ3JrQۨ ʙoL  ۶oP5 ʩi#Ε4.s8ɱ<09=p7vì)\#msIl[: vYzX?$gC[O(Yg来Hm`H+յxsG< !DžŦ( >\KOi.~P8&Ȳ91jޕҴDE,n(%*pꅗ!]ONBeNͫP]Sظڭ"U6k ʱdt܃"dhVOG @4HӕxEvpǴ4{P;$ 2Pz:[_M? H{ MsxjIN2"/(s2~33aHq_ş9A$zo7s*~a/󢚲tnNBㅀxg]f54Fo zp>rڷv̈ޣx,r>sNù瞎Q瞋ӎ645m7Qt.]``u=!u5jU֢j4\n`~5jCk*J A=?cPvHN-r<)yܥ+$<3ixԉr5h]tA#1%0mU]:_J Tm?ӄ윉G/e?ӿ^g&|m<Ԇ]zk'?S~q7&~ ZL:<"zKKc%c¢_f\N]\{b.+ysND}0]/蔦\., uB|R˵_EER{mor| P/W _?R~R8E[Z] 3\^>R?[<?ڗ?'VrlHW8/G1#IVe>~7 (?6M-v}aun17knwbOѷuڽmQ]|^{s Bl`X$cZ< e!g |o &{c!j6*-\rC(bT2#,a\;zr$mҟƃΧ04C`-ΙKHG>X[x3~MQka5D6#W$F 5|=W4C?h|gAXWw)bSH3^{wv1oU08?;,O}ԮXcz v6 !'چƟX d\]{诏U}2 g+1iE5 ֚m@;VeP$v$MB1sjlCRcœPgUQ`ӈ sx>k,IS~>xb,JⷄCbTSjkxwɧP>]H 5rhNsISKX.5aS%5i6 K դe$ef7W݈=`ۖu4%XQNSw\/6P4c)Ԍ9O B:o)–X *(\"M}Vkl]=4m(-.*-"rjbOfy2UrTPuViᖒsHLN3{sɻHIm{iBiq olD/i& UISnGL6˕U<߬ Y4'37;1 Pպ|T7jVQSx}#(1mZ-&rDzHB?iHB4ڵm,Ǹ8foGHep't KYF[P0 ;F̘{)9YhIϨet5됂X` j%˸Si"R^e6 Bӧ#{_,B%^3Em!YPhjJSGTDE8b0wTw"XkAJQ^ 6e<*[y(Äsĵ鎅A]@IDATI3e㿣Oh ûpkdx\s~-fK{mظqy9Ѭ~Aq<$\tlX3kE 54XMLWKb6?w (% Q3O.!iw|-2jt5j @ 맄ttU_gZV;j|b fxODG 1p-a픺X1oEZU͑I z#O0kk0`WyM)OW9 S?xoAPW{s1>U7\4sO,Nz!-z'lI*lZ"X >ſ܊V׻gQє 0u-f%&>."_p^ݓcgUpeKAP%,_';`Uf >l6n̙3F%HPE!G`_n`&r0uƜJgzo"D|NBӿd:6#O֧#2U Fεba8ey#?P_|96]̖#o4wn#7\{Mq.o:§$Rswi 7In(*"9WH_:7"+ۀU~ebGΛdx>7|̔P8fxy=N`#JqcU6 WZuNy"J4:Y^='Z ;Mڨ܁0?~%O W"~,o$ao6S_m,S̊@ʋ4='1\)UǴFbt,W?/pJs_[?v@l|ݛtFK@,Qk` *Eo>*ʡ++SB> ] 8#ڟ5pSq_"of> QSf3\YI8׸_+ۖ z?ϘYh 8^4WօgϸwVoc|ջ'szg-iʻFSC82P&hh<ɃaJӀ!Dsّ| +uOHƃj= EQQp͜ )TSb\u iXd s2Crjk̠``29$ tSg$L zMX-C'ձ[*hqфZD1<)[)hp,[^yny\qա )m&j(*R)XDŽK؂FONϺ$R*?S%&T9fP`&[bb"Є"Awn'i(5)x( USp(`))$M,C""c QgsY@w\u6BX4kGG-JSF%ԗxYUJ zZvO>)ԠRբ%v܁5K yE,EF7ReԙC('E?Dxvf$d&t zRE-xjPUvQTX&8_4k#;rIpώ _̶ڄQEľG^F,mܭ4w]܅r =p=PJAf4gsģqLD1k)lg mB Crc ZŲoV8u.j6U9,IJEBƢ2h!չKM-4/LCFq4Y4 5Ǭh6l'DZD*81'*6RyFC-Y\C^/g%Ȳ;/dꦵa}2ɯ/.^u/x*ϟoKLa?o~݃,D.H9#(iks=o^cueC>>w9-1Fz9?0߿QQ>o,[خ΅Nc~˺#n`}o|vP}~ݙO x>K' ރўFE.X p,'9~ axtl,Y }.1}mU,>ŃgG =հ)š,zwAKX6BAMSx鷩ycO{7_8϶+l=mV/%'p)pïԍ1> +pd~ _5X9{:ߐ)_yoouEi*`e9O(+;ϥjjNjGi^yzn'ң%X@^Z0g&^s::] 4SgS~+?L7ocZ5f_=ozދ297hpjl wm] (n"r T,m&N{j#V{y{lls>x^+5!ijpsLͅ/Z66+La$Ku+t'Өmsp qpCB5U6Yjr5Pe'ȭ`Bh 0*fm"υ,`[ǯq!vпUSא`  5 sWT::z& })e4qxMGW3{zPHKŌOfƉ? yK9<:;#)<ˆwހ_ҙ,.~S9=T|R%q3L0&T69&:oRF^)qO9 /c'tk䅅}"GBUK<]"!J <9lX!2 BՓh'NUV:D c'Sj+SVwDށÍeR\]pQugԗHjf;B[["-%Q5H .a ;(:P2( _1W<᷑'j }}(!t%jQJ)(oN"d7R(&:\IyÇ Jx~oUSz nG~F?EwWAQ|IXUTވ(ՎVwbH|(="ن:7ljͧ뵔 ;2¨NEH)Ddde2'r#qD*Ħ8ZdzO gndh66Pʈ07d-m@a8˫?+(G8^pP򯞒t27fǩUdzR2L:c91p;>MO/1F7rZpUmdy|= QPZI~Al&sD4#x!7edJ`x p6*]NܲaT9[قcgW4~EF$oS"P,Ad6r=VՄh?d;L T n"Rv<<ԁFn[_/2bBMrĝ|ϸ>aעh+!rBZZU]0,dV %юABpCKvPZ쑊Ą'6ɹ-sIsǴ m&#J /1I./#0> Twߞ=Kbcu e %|Ss#-j_M'Cg輁 oҜ/qΛ+pEH3}HQF{;/TZ.@_|z#|*h\8B|pfwq^O@ɸU(<0 Tr()}!H~%6I+m;2?} +EJ? =TY2XF嬂nW`)2nyJ nǶ=˲XWe?ycHRC?c'}Ce bvGmJ% BU9•O?~ZPM_&LW3F?=( Y/E25w1rPǼ1."Arf˳!p] "sG3q3M"@ enC_W/ 'W-AyrL~^\Tk9|\l`gAI.Y;G0y%fŷ[p֒b2~9FHDYAC8Yw? xU(Tg)ZLNu{cӁw8 aYb:yIz%Vlj0 ohf)؛`pMqdJƿ#?4mRCU~ǿ  '$qutӫ_wN-5=JrX9ɍ"x QpvʼnpxiH^a)eR+f3ܱx@b|׏\^)bz΂ɃgcsQZZ ){u yjXSŽqd,qe͹Y$ؗI*1[1rKD><0L=v&嗯inX?GpŔa?cc9Hଷ8le8X%"W`wުXۏ 턕o^Vfd{w99j\b9Pp|u%GIb/og< q\w Ɓ}X\WW26hUh.-cn  0G_՟bޢy-_~uj = 7b`&.ͅ:vT~_nG5\`,`gxK8xPo8[Չ?MMrxF=3v}pgWSI Eý1z"Տ^@y5L*1}/Ag&=W~y?3d=1MJ~SFUO^"bkp? _@ 71U{tV.Ψ`Քd?[94"O{}<"#ʿ{;mp*[v8]~(NZZ/B퓀҄Ŕ"tC0U3_ǰhkJl0z%8w \떛@y[N* փ|dQb CQ^V2ľW\, ssfTRUd&\DxwWRށ׾; Daa./^q~ u3PԂ> 9/ qRBIC!~HJ !s;%\|h,Riba]͸9 if뺏4Yg,~8}*8ڷ0x Wu >AD0%ʲM xO]I'&s_8L17И`QHWl/E-5F #l٘Ћ~NgH3V*ᱱqRT`Ye!Ɂ}m!mTyaT,Jj˛(t<ҍݬ5Pyz46SA&gp"킗G[0E=$x0b8Nɷ%|&Z.i$\lM0ZS̋ CxaT 娼]6!]w S~Iǰ(1ߐ|iG̐$ 35%C?wJFTy[ ǠX.s\?v 5q@G m,&nߕK'ML!Σqð iqB*&JF&h̸RY|s̶gCԻ0{\x0m qjiƚ O1*$9s10Wo§rK^MJ0XpNffyZ, մDA^&2:H%y);ķ܊it(cY6zT)qL~? e1j:)K[cq֐4t$VJW6KX%GWTu[P_#?,uHq.)sL.1yXxuk}̩hWSq HeR`g{MՀsvLF9? W{0֕*d0 I_pR%DeҢqw%tc6o|Cb|˗bDɏ~RWYw痲Iy@2X'I#3 Te43琛?cFq|hAga*gT׎g0{YH 1%Q/;D|4w߅GHٯS/ӑ)?}4U{ VO((F }dfG8=3- ݢ/S4RFq5d0I 7La;yW~2~ODvvw7۳> m ,LobT wrr(pc(ɦ LAY'Ln:X% ?|+BDI*^RXRϲvC\1T@f#?JG#A H V-F8koRO=ޏ%T\w[jPM$sWS0_2M?y6{@7 #ᴫjF(R^GLTm=cٯjFI𦪨DY ]l17`џ|0Lm_E6`*qNȃeHڴFxxS?AT#QBb,,Rl$C(W2fV! !E2%7b<0JNh*ۯr7`$f*W:#Zf7>ړb"d%C= 2-SLE>xQ&E՘>F>KEVF9g@,r_?G(c, ԗ8jTķgQcL.^j/I|鎣*I4\VCb"'zՍ[ʫH^T|%fZUQ U brt@śsL5L&N37$C/qabZ/Alz;FU,DmxYCPHre:bt׌<%.9MYr 5.uXPTHqev!JG^P]x.R5Hi(E<T/^ ðjy@n/J0b D|nV/`+֣y̳xOz)! .J&{D%žNxR*j̤cϖ~rCM FҀ1y? uc“Fa>dkŔc雄F^ r |$Y/ O2?DMLr2"%\U\աOt:hԘ aȴؗ G5}߿Waw s7BEaݗocy㇡ 'ċQ~dbeBTp/oЁH=q2mD%IyT0 `2ν~,y5D-_^^uoȧEf~2@:o#)$*l*F# |rqІFBџ0 Ğo#}jG-U:6#GbzBE*QLMV;%Nh/3a O2{vg'Yݶ{DDVƠuN*s^l4{ ؚ*?Kiz0eᎂu??Xf]6Ea+mP9}N:bk2%9sU:QH0>[:dnJ 5˛Ho4̣P2WYWL5N\EdOg宀X+TXA$'- _Q#Ӈ9/2X(e&yh%q?I! MS7~hY|felvw{X\{OŊ6 ]k&U zyꏖR+%&I5J:cx/x\(ÓJHt"dO*׮Ԧnfn:?TKK˰' @I?f.SQ^4]9W mqg ,$ƟπQ'Hw:v{z_Y^i)R-J@BOYHTɴ)8\>;.gEDv@Suz*{8~ҫMAI~Xs)O?g(J S޻" 2:3vltw}kJ'5-o2pC{?1v%(x1- {I! tN2?TS# w8EGɿ?sxyUf8ƽL[r.'uиA:(Rwϙ ߻hMWP5Ӊj]yj'>,c LUL;_z4Y?yBmEt~H9{v6!7`Clm>ik%0p?M,s#xz8/ . O)HUqzӟҿ_)/~v{m$k=WOD%Y Ҏ5RFu ^]J@&9ALyN6|SAH)%e@c*`!ƀLα7LULq"SOX6ԍ?jw$'W~>Տk(gƟNŘ*{c|A*_-V? h c% $]|` 1$yUI:VT0˗zxRDJ,eIQ|'(_yΌdv+ak[oUA!Q!~I$¤,e.6' 0# $#Njf~#:!8"DNI䥛 ;>8_8h%pڳ22WBy [VvJ02P(u)f^V1BZY(ItJ顩3b b}i}'U9ya;%,d#EN`Ju%Q*HcIq}LN2j2Qlj%$ CW@2 Mpkxg[)e+{slo_Ż[tO?|Pr6ӽ;j¨NZ""eCW?VQ.c6bHI1/iԆ_9hWa6,$,bGo_x%BO_ޤ|鿳*\]ocFt"60RX~O ?cs7iH^n!gC2OP~TJT?!$ҚW^8骋IH׽_I' gݎ'/?e J_]lDžD%^i?{,'%/%=d"'xş@8֯ƞ6 X&uwz5.2v&L1|÷EC6r8v*ߍr'^-XpFs||w[xE":yPU;$|v14 f` ?eQ'H%=WWSc**Qyw\O ?`Z [o\`t R>=q[Aߙ_.L04bUz)|Qn8UFJT X2nuPG^\POMqd[PHkIHw&YEJ~(+VZ~mjD^B7~!_E$񦽞.,Kcީqې<(FǾڇ%ԋ9>uERL,72b:~3حYR4@юVSTk} |ٶo ]dboǷQC8Au4׀_7^&a8׬mPAĴS` i,'a}F`55رkFa`OAsK9$ `6U?ЋZE7n-T;R-BuNhkb]ܼ_f"4fGZE/"z:b B0*u,{@IDATGGu.HS;cQAh*i. lKrF+ e.%8Bl$#cF:aht%8D_M%e,}AGGT)]ů.16ڒT'Q޳GK 2VׂcΤ>\q{CxG^ -xg@ꝅ/l 3L(拁 #3q :x w܇> $#(ߞ.xt"3%чo¸UXUuńIQۓT1~J#?g\s$Ϻ%bin p=U?&ke^Rń$`;;Iݫަd_qcQMÿ{׊Oq*g5œ56ƿ5[i"ƻp|?ݧGmkڀNQ} ^a?de.RYnnR[AED3׿n5ktH҆MZCg uxL,q#߉ܬJEiلSx;p׊q٩(o)fULT:@/\{7Zd?J-xHDY'eo!v,ǿvyc]+J1MTkC _T9V̩vdZhקD488'ïs:EW6^G*/?ݩźixk`.,B4 GʵDŽ?Y;Ga!5*_HQ;2陆ߊzp`?S{ L;E+hcdb0Mi˅1y3WN"p^t8KU}FG&ı/]O& 5uȚʘHCXzғ9[drGRU tq2XmB!.[$u)0׃Y͗2IE: 5qZjL^9(P@Io?< ^3 a"MEW겪FMSl$&^V^I<v`$ Ȳ:Euv^[Ui?4ګ\?2d,vR]ېDʅpA;h ϾSg"hL"*9~▇㲛?Ga'/TWG_Q'آ <$ECq )q;4VUcĩh J]%j!**B1z0=c|f,%т"2NTx q(|Ux%6ŔrcTaGW}f xbe;rF[rѣ}NMab >diGRUu=%(O2YBEi̝2H9d:huXT&MƔݐ(iZ _>_|O<2zN%cfk5kG4lW,H?&8?9˨mmXri}ߥm NNb}o$/00Z<P8dJy㝨7j}׸1Tuh.wGCqQsadYl,Z: U9Ȝ̸`x^*^Esm~O[Fw!u^H<2aq6Ʌ0TKH؉e1Gѧiju`{D.»*c9hST\1fG)l-kQ"` u| י.߁P LR[(~#7'ct7G4XumO`7U&}kRܩzhoD}S>_W ێ};"'3 {3(cf݋8>Bji{ RsU1v 0hʽ;r?W2j< Qe-LJLs/gU̦M߽;b;?rIJn bzaoY7eyBBpixLԫ%,Z5q]"xP;d{~?Aww|08@_KKK==ߥmیCrӷ^N摱Ě\ſǢZ*s-yjNJeNǕ„ K(aq.51ыJ9v 53Z!`ޠ]%jB`v#UUOUbnkՒw2Oewf8|PijnTgΖI.{gP<q ෲC qOpE.jbX7Fu*ys1`7\ZD$:`lڻQ[YyBCb/ؑ{ŝ:Qv bvUȭ ]P偆bg~nv'|'-h(΁:PR@55$)mD&JU W?< #$ScϮ-h)c7SǏ ɴ$'3#**غi p9غ uh&?_O4dʙ"qJC{Ld46B5.d,OJcI$ڨ*QփV7a j2xHcuFlF9IJt0/qmG&ƴ`Yо4ӶU ϘT%$F̉v2+Ȝ:Drc]:XgQ(bv{31622:3|r6+mgE!֌V|;Mu 4\MZ!bO-kq穉X|^lꏛGAA>7EHxERm`8Ća/6!}boӎɼ}6`VU$VaHWTp8Bߨf7R\4:*|0j[Cɂ\-^n7e k_.O4/ꕰ&y-5#>c(qϢ!i:[hdx TIlic#%} ](nO=YpRb!? ֱAq%FUkRn$b[ZRUBBvɷR<\9vkHs+$XW;iO+[VxKdTHpb5R~*$Go"x\Pm;@[TO޾w#߀7Ό|J7ny7YBҞA#hMF^d w{xR$2[6JݨG7a|V62,M1`<Ia^R>Mqah@Dp`ݾcxdA:=Rꛑ@,g#f[4}!'dT02YoӀf>eԳ˭{3ɰ`[}_!UJHU$V=ndut[mXbFH]O `\oϜ3X[W9EU}b4xzT:kO"L|Z罂g=$r9pog% .jՑ81ݴ¿uMś̅>سR噇e,,rS}QW[Hnj᡺L _;󨚏JDvJu0cQL}L" ʪ J2€CLɤJNHCXS6lhc]||nXW BlLXf%)5ÿ]d!)%UJ:@dT . vRl0U ޹;:06p7De-xh//3O6ۈ>@WS!sr1lhIUoDlZ+y<'.F m3Ր@;Q9!2h#cdy-"PFrrJ5:SP[EXNsRܰeX Tt`"th + de`+nc9v(ܗN+F7ƂGfOP)d#}TFG3 #i*(6xy{%<#Bp6\2$[< )^PP,+V!SvVp 1pE^ވ<ښx GB|LNGߐPLW|uSjfa&>JE BS򭵥7Fu4z!$3ɜHW3 erNJ#KfM<$| (\̈Ng<2qfwڳr-D9omvXGÿ3Ľ0o h.puA^K&_~|\*aXm~UdU|KQs{.?=Xi7U_ 7_o״#TC\7Ow'0j+#TQ7Zkv`sBSL.D!Zf~t&ĈuC;0\-{}Yw)4F?9h\EQrCpD9d׉Jr0/ˈOmXǀ{RvL"3N~`SZKDf:mw:%TjTi|?Wp`f~ QY` c'4I!S[! 2GSPUUzqUጢ!(|<7ߘ[o|է A=dU)GQx8~ ъSY8}`b@t7}00sd 4VJMy0ؐmhF$dGuJ!}$!~dPuf:`wvPȏ}[V#6.( EƈH47S _bAMM¢_-TS^\QrATk^}H5N؛47`=Ds͍NW/?;mcx`ܢԛ0DҬ= L+b*>U߲R6ͨȥݫ1ںx%(m@Jef䢫j?A@aQ.@-mbyQ")L`{<ݼQE?->m̈́}[WM5vAzv<)-6:եH<s=h oeee{P2Z_I3hj+""PzPu %<'< Q)xqYͫN{Tx<zC)Q$"ݱlga[>1 Tof•bKJ VJ5"1* F9'Eh/A);eڳ3WqSy y>wB#'!dg^S-fp;RDXN >]2_ /qJ2IICO|#VϢ$^<>#(Cun4w~/?5тIS+yAgYlXWЈH6k|Mv+یI X2ku5yJ^Twasy~FJwSB;dhO;ÒF+<[ (◅ҏ&mGI}燺yO敼2pL0+a$uIi* ;D&k{K j{% W(>kQM(YiB54mdW?B T#זl3~oFeI-dTu7< Mi_af,|͖4w5b4 Y Iؗʾx;Kd?RrTvq}$~|;ʰ/9+)6P'l/?-h/AE0%fC`/%xJXU[EErPNձ<)7Ls/Od#Xoas]#O=[x)ji5% >\s @>W}t哜߅h+W.e s}?'&uҾ.N1^ 1 p 0jƟX_snWX9oiYI]kꇔ/l'أ M/~Fz9d\ づoU'rdT>hܨSR)6'fQ"P,@ڤ3l ;aZʦTdo;EM19:o7u"6:QD@u#Rc"y[fl%DUySbE 3K@]._2dغHIPRJՖn! ?{7UZ*Q=~͍}r=$ԗ vښii;߽$|(`|hce÷"edSliTEUMdyL@6m/m⨘ixPҥcN>KjZ>9h&fN̄B\5m럌rFE"y䒉及&gmjv2|Vi<'3547* ȤQ Ki4݂>},%+EE'=ޱLjyO]o/*&ctt-Y&&L馨[+!Χ]hnkQvk|% 1J\ռ: E㙼NzȌJ4bC i+JN})%$'4j8 Ҳr2K)AUGs~T } X,Ǽ%"aY8J%lm񠼓LñA ¼lP-73-ILXal.]c߂7NH_.|k\߻܎AjgwǵԻ9x-ý-\'󟆄 uǗHc,m=]az:96--&xaOW_S+9\|t} ٌstaG)kV~y_tREv/$Eabѵv ,:3># z iq,) ŻtjTW5=*ZR"xC@nā`_Ck˱QxQG}|E`{E5h's苂/zZ 4࡟_ mh ¤"e8DP>[>>z1#|\ ⼉$Bl%d}~ӉH8 u uaUZXFwX,=2\FX: J|4YR~e_藍~-"l|(Qr݇v I՜s)7q/q^Bzi Pe?0Κ\ٛŗqr2ہ2:{> k9obA$9q=ǻRo=SX뿙w+yVxQw-}/O9Uq g<UY~eF+U'0ShV"P&+.7_%{O O FyI/>NN~}cI3]ߵL g,}V oSgxX~ K_~[Xuh_p~gr̡x,ew=j#vF~7D?rq*Zw ɡeϼs\6%7s[Vu&LIjct1h QAXr@5h"XS6TƲ4[ ȷNs]|ܚv [O-[ 8j1ih.Z\45ZQyh\wttbԈqFjR DOVè}Bԑ0f?zb!Tt?}%+K#3T5{ǣKwNa qp[>u c# -׷Ko㉌ġ!ښDMMª2|9Ō l$pu:9h&V/4Wj7V{yF3 43XhZ/\+46b׿!WΖ:hw"&JQUN{_؂!.?fQ(oaTR8ĥS?XԘS} uC.\aABT:\҃qa|݌t>?!._YBW^,7 [k:[#9k Q`|r>KO+VGj 9DƏG/=1a*Zvc2}6d: @][~݆n¯77c@b0P< &5%|pׂH@mrA6g94d;_!ڸCc,q5 G;HAk8B'fۄ# ّC4&%c~cQ B@ol\@?Z  }̢g?g+By}O㣇s>858ǻqw.4Zk?kxf?Z ǻӎx]p ;Qc X,yS;JmN/YUw"(wMR&+fN➲vg.O4͑J+MKOmޣjbFױp6gJ𷷧 [5];P/?-rkƾ`&Qw|+b݈.z_%+\jnSt;O\;@aW&eM?jc>gMWtTM_W#i_[M?R}㇑}ZO&TrFYGDXQ}tH@oDCos"\9榫_ĢzO<*_os鍕sM5;yvgjε]9 Z~ bW} # |Cm)h9hyIRgFf$ 4![0C|. BHSx5Mm} 1h,4:$j1~<$)/u7[4O&_dO>XnxBX_IS{e4F Pg4w@௃y,ϗf<@1E(/ (i y*++`XOǯiN/Q[\?KSH|lFKnL዇?=`nJ$V9PL  ϙ bR+N۷t_BCUwmJӒ`7N?{'bjMS8Wmn"X@e@`X&eS7aa;۴ դBux3FއQ`ػcbl23V%ĝy!m&Y("uHN€p_HiS0m`nf (;!A@jIe)s5ٿYԊxuG_"h4p !t/ u,ZAjFvraP'z3\쟪H>$2 TOFx\9&G`Ms@ciƬwq4_׻}>yn>gM_Uw#ʱ# 4Cd [y.Oc#i=M72O~yk~5 4{%RpfN)0^GS&!ȑC~^%[A̧lʮSs)܅(92J1UQ:a>w!R~!D)t]v1~̔Np$]_Q?ߵ(QR=9^7Rwx;;pˏy?`D uY}##Y75qcY[Zņ7 Dd#ikF_78`s_UstZpH3K/5M,T~C,ak WGHaz=o.a+[j$'U]ݷN 𐩗ٽv3G# HI~d΁+s`b:# 7$| : %Ũ  A CiDlv 7刓*GU$ @mf)&Zx _8FC'/BCp1,h.<*rI%F!Q48:7gfdgb85*wDG)*B'Rx\ }* @N|֢eʷzcJ=yD`&t/\L1iS!ަC@B"QCͻʺFA}yQkܰt HSv|@4oTjs=\h'^9{5ZAKp8֭App|q9X/-0 ѷވ4toފ6(BOkrE:AFJY$$oXZHg8b`3nکqGwբeZ 'v6fΚiIȈcؘ=b,N:,<0j<`\>fi"b FEiC:TQKquy'J؏؟32">z̾b\QQO4w} [{0cZ$ڪz/RK>|هA 0E.~Z0*c~q&=|;νn}$&yr4AX$hƌwm p7c)0Ի5Ox>IO\/OW`n)X#=Z)MhRh'8k-fөxfn%)@pWBKng3c >O !MSoEyBw/t5_,ZcHrs0rEKlhJ@IDATTuaWZj+*oƿ(Ƈ'oU-o6_4,YԾ6F^͇?Oha?~Ѓ&o[qۜ*ݢfڪ^LL~ s/iOP^slTsoe1G'bsoofqo~oD%7)M&ؤQ?V,6,t9{sjnZ6wRk*:!,0=>4oܺryQPyVĻ kbY1SKLeB3>,^2/7EهZ]dQnxJIk@ ?GsHۉ6L݁Spz`u>Zˡq!+ͥ8!3?!L+M쟴,{55mk@S CpGLY R$(m~K+ё1hVUi&_^)9~bS=F$iPevj%Enщk>@mU  95<+1aHF lok?#܌XְH\ E%PG.Zh8nRlC%(/Gg!ǧv)5ՕԆjiQ8|V k% g&ju 4oȾe]X 'UHp 2O-lihT( P򊊊Daa1-c"Ch_IC;,&.QNjyCꦯ^MLd ʾkhӀ?Ø3xO^ju\y.|ZgeivDZS`d<4O7oSnl@oTJWSMƑMm5ʃ|94}g_>y\WF_aЕS^iQ=҄cԹg0>sjmnġv&DTS9LKJvSO?0FFÇT2umϸ/=8R4;+#mLhD#'g/榵`o?}bd[3+V\WvՑ̋xo^,e$sd^Mj-H R8pWMF7)<ˎkAЊӨK Gb+[`I߽b"DR=]V*sнEk9ƒw׽{ϽVr/GpivN]fT6z>{=d7fLk/f~Y KVwLo-&e9xv׃$*&%V$Y 8@%J)Y3 w~}q>j)$ JDv:tU˕+6 '=Pً>؀V1=1c1j:Pu ؊rgh٘I;]cg_X4BїLrwذVcڧ :bI>0u4`u5:iZNϣR1tdԜa9i~J] Yc{i=@Gi7yt,k?:*W;bO_/Xͻi'.?z(gh@qY.'@ΎHE{e!cT G^M F@9xN; g%&쟯```4Ou\3Ytl:?݊č]&'|#פ@qi?)uCB Մ'':Q7<ʊa1< 4EF,oXh*6/rQC 0~ J{>ƣj1?d D^VrJI%pΚ6pgd f`sߛ u[w(=|',ZpOH6^LvCV!J-"=_,Caݨ,8n #R7̿v喠U,qr&|ɆCJH;{{v\]K?^N,juhZzAp- Gawա7*!7{Gc(l 3>sէf#L¹c)W>f׆*kWa?7x"/X/+ԕs78fhXj[h)X61IK1c#\l8HMd"R* @ Ħg d'>[50r\IxgYE Sy)Y@d.A&Ug^bTtJ3VyX毲Q0*qsmbb JedeZ^UV2yLO" y__? C Ve:}Sy Dv|,>~3,9q76`rL NL}y](m?yiM/.Pin%t#)}L`qc'!匒|[8Mu!:; fPPHM‚}>e6J1h")!KPc\#K Bۇ;Q͵}Ո_Fq4CSͺZؕ?0z2`o7Wқ{‰:[2iñQ|h7Zj1tT<]DT45pZ=}i%bͻ>op9RfQ{ĠB+&Z2zj@F&$ H ~4OMA@&csnjǃ1~|K "8!m; IKFs;58zX?ٻ58xB1(-0v$58(+>!cJ10{6`u#"U\A- AD|O>g¹~G)c \4NJ&,hF399(|=pimyHj_bl_[1\W (-獉9pG\' ^^QNS~\댖`DR| cq*GkK=˨F4ՂUshù:Hw6&(9AM:`K|o(!ε˷;űx7pN0l]_,W'`!Z7`aR =@_ufDG'JP4 $[[ׄ-ōdzcQ_Ջ$9δa}󺫅}^d~%zz4yL3.>./獓&]!¨5@f,Mլrt'?盐T *|xfI4q}vkx?^U{p}_4{DZ diQ q=&EiEY¶=^QRE_wpQ 6NՄiYo޿;&}^i)ע܊w L3E57e Qhszh{tt|vbaeI4XuTR,x 7>VQ:y3r_bH -xV&CܗC' zpΒ[Pq]W?3 X;RP0lm&잵w,\;m@ ֒=/>tC[pکCpuA&<N`fnJr}1Qfݟb0EOFLPƺ:BLYxF&*nZa B7Sjz{)|iB Q. 3%$lX%Hɚ 3dH 'E6Q+,(Ï;ZB[J_DA}#=?6~@b7ծŤaxPS:̔a(%"r{p_5~֭ی#& fPyT<Ϩւ̬(Tht2k@#Sfe`ݰ1Ӱg*󪁼eM 覍^jy<ɗZRt`_ڽEyK\eM(*fg_ɷGgn򠳽 A4mTFѡ=H1 >#dGjRGڇ/j[>ؖ&4LHHE>~:V,#ƂcQø9[[ЋB4uWH u;5ߤ ؒ $o5NC_ K/hxE4g*7nkF@B 7 ƗQP^O|1/ [& ueصu=&o(osbՇFJTM4x`>233\YHj@p +_c>/!_lc0cRj DLnu #bؿlg1iP3-5~։sP]\m|%%E!hKs"tr]L 8T)ˋա鈤֛ /eH&n܉^v֖ W ֕[@jT:Ypw&>'fP~C~tZ=CR}eAyw=w}\}ӵ0%o'wҷN+o}C7V#0cYWJ#M]QŊndE2((\F9Uo_n<פU2'׿FS)O6yV$_?O[jX&oـi %I;4\v d̻xz ,ʫzp>k77 ,폴iBDբtUU+췊L*ٓ?2dҹᆛ.ǩs(a3URuX=iJo,x"d/ՀXJjpHeUqpܿCaʢ@Pb{~9k #A9wP`}Rp b٣`Xno,˄/ wݦp[ņ#dU ޹LKdA2pM_)Q7}Nw+qSD148v).F\|2Y7t7;2R#gù:BߓW]dM+jd0R{lG@&Q:JdTI.uǘh̽g)Nm|*V Z -{n,IXMkwGZ濡8\):=uNt?b yx_ \3gE_& idA&JL9jWGY&M\@,Ӯ=n,3*O͉C@D*IJ ^8 rW?r~ WS1" ?2ˣXr;'²i޽3bE ]jɜ/^B6?5޼tQ"(%z͎r8;J1z|0 6MbdR6KhV)22fd.qѸ):k=;ک<A|Yi{SO%g](@qs\a.!I#"egZAUT(i$` 4W j e15{\IKKC&Ѵ[v[<;nrRHDN CãE|5}PA;!YA(-ֵU4iJ h6.oZj.y'}QAаD'eR}Z7^o}tY:`?:˽a3OU%߱ q4sMmRQwa-eu%CM, ##oj= %"#-r$a1"'Mu#~ΤᥲW] G>`ȥ6Tg{;iٵi*hA h!*ʊ>h$*K14`Oklٸgc9^';&~Ex4HT@c}?&)|t RZS@)'' -U西+ǘѨ+8ߞvyR|Eаl8;ȫV_T纗A^)n?M&A@~-3z.:ȜyQq匉&Mj wj!Qii_-]p%15ƻ=.yzzANig73*<7}>rRx&'wZ}/7 #|H>ui,k4{6aP4gW6/d;nǙ*SR@;Z?gxf} g:\jw]$=yj${V'iV>(x• Vl(]x( S,WS73k]R)+k}_؛?? "wRow1rv+;|1'86tӟjc V`Yig{h® WrZT?j+\5🿥+^ Kc[W-^݌tart(J0%)*·gOo/Con}QWҼ:or7$:7-f-uR.F݊ j8]fY_ͷ0\¦OdX%/oGw8yu{wİMSȟ|bzoc1P3ZE_ǝM_N PȁMcog׸㑥}Vb`ZgI?E#G:JMT՗ ]~Xe0I()&\jCs6 gB˖ߺCmmKuyL)k~F*یi;q?ZYܹ%iEv _߁6jo(SR wG?R^vei 뱧|Vf_⩧G5 I RvM+-fx^+ԷfQ?s jV1i ̦"h`Z'8[9N$48,30h8E_4:!^j~}-S4iōX'Vt"&n\%A.i}C=A"݇|+u+v [hoD1d.V6jhL|벇X  |IC0Sɘ9c;pʡҒlٳ 01`x֪1(#ͼ٘|=mV*>}(ܷ I,uҚ!HUX'Ǟ1GF.%X! q5yFN]D6Z}iPGF``7tϗ4Ga`ioŶw'F)9=x>0.j4552&`bC0aURXHW-f5I/^z bGa"Hg Ta}piG݃YB-׺5kq7#6: iP1  I,A Adb* tML] Qہ՟F`XZ0%a E@йfej tѷ+Faj `O1TcbZ&KCZ`;9YeGH}?pїYw[ ~׻0{iM) &<!k,UTaՊW9~:(Ǣqp1qCs|vl%X؈&]riQ MLӲ }f櫝Y!u"h'?Y/5΂'I9[[;@?p~U{65Ÿ`R 5F@<#8hCG1c1hϩ~d?Or=zFOl&o :%m$zj[ @iYO6vf|8MC5GkNJ45tu@nK\7?mor>h2p O m-9JؓhNc7Cߒ I!g|bR]'spDUуqC`Xt0}1MDg931%lk}01"Vo1bF]I^le1RB]l&;J, @aEigad\(Dy6z+cU̬ZXX)܄fXVzDt> ^|#x,j=g+]xgCEXߡuW)_' [.C4úyᗖ9Aܱ0*RB1g[uy fb9VkLBɧt\M&[["OO/(D\]`[-eu2,? SO}Y^Us1Q(k7$9{^";SM_j꠪=ga ǟ/.A՟*ځ41TS͹E6eo֙/9id~J'o!e)9<3P=GaI5 C4};O +:!NeIF 5|\h0&%c5 `4'aèᔳ}^]hFiKäʻϽ}YSf@'}qPЃ(? aŷ)E=s ]W4XYݟ"LG|i&{ W_ma&o_ Au>2Z34XOwqLNU "H6g"$Џ߰PQQDөԌ?J$)E*eP vPhVԳIcQV2BXmU)5 8e<%ͤL@CVm(/EL:fq1Ҵ +3@S@c@{zgOJ@U$PWM(xMkQESz$:bpTM)jY7$Xʗb%&"m`ZL@`'5!)\OMB@;AN:ԗ&h&_.DSmlcZ`x@;N +bB2S}K5 KSl ‘O~>FmZ"| ch)Ƃ*= jpR3+~襯3{u ?߱޸ףu2j#m/dwp@}xwЬ0$/_fgJϟoAp_}dlC º{cX_FbTwDp"jh'`BPN!:kC'/QpBO:0܋9@JEҸusg.Ѕuʧ&L:;t]fHVϨawgMQQft AI!ߟ(/EsꭺH.A9a/,]s?VXRK_%XWtd`9&LwHFE.o/)?/wX;q2N.S?>,j`* u>&dzTK[$$V T]x#܅ҿF"4ERhvm\d:O\*8pjkMUWT;SLaԲ"^fbԖ6MMBAM#4S'朴 )#?{]XB;ͳi< P@t.dd gt-Xޛ1'"j6E`ҼSNs5|؟D  x#KcU"϶oټi֯U5ؽfj fnKwmAv0ЗT#͸Ҕ߀XlQpZ?JN L;H[wFXP -LB"3qtt:F^@OR&욙'""{6`7w Bq敷a 'T4E^t/a4|o[~Wz -=X|f4 REszf,`(w( N(MlYl|ڈɬēdwӖիVN pυ l GQ#`spjXpҪ"uhCǀj8۰LLHR1KOch96;PތBѓ1/t߰[׾F_o4Hm- `J"o.TUV=NZu4yY^QA^ e;$hQ7g~l7r4裓DVH?GÜ6FV!xlKJѫ*k*]n8hZ4<6.7'VϜyh߳?]g4 r= &!{ydS-q>|؀T>gz׮|eUJ?|x`Qk [4kqD0s LSm*]hPR|B&D~j(pFffa6l(0',*J)ZPrP-7,y-n[ME:'访2a%XK,S⟕#ӣT!+/$H`| }S58Oo/ zAٔBaci{Z3l Lqƻ/⃇>#ԈToGo(/Ɵt*NaU][7&O~-EX҃Q|C:KI} 0oyWYL6'8W(D CieX0u3&)TWLt4ASfRt`'8wiJ٬U:}-g<[mW?>nl$U)ڐ:j:Ϥt~S@nk^6q5…&e{2tt|Lsh-3=S;ӫꪟ %޹#30浆NAq_U_eI4 2gnς*¹l*FYKy"~ A!9|FACgw&$ k_{J*}3&#=jsMR6P7s 0jjjwCkG_H#F4F- Jcxx7gH^ M[_a SA 'fV)#xs,~J#kh?=(BˈAf"!PV90:5HX:%MNq"0ʏ&BD .ꡖL75JB-bC#vt"€dD׬PCfcβZDJ 8|fZkI1ȿSӠ 30Kth'B] %a K"Fml(dd Ys2xjբ`F'C0MPU[WԐ[D][ : T ₃}C5Lp^kudBG| a#Kp4,2 Mk^iZj^n+䌋C|x0*Zsvu~7(v,v??p/MT!{ᢦb?PQHsmJTr؝|%voOp <ۉ%HởD;Ѿ4rVSSC_h#e:f^ $J icyXh1 p>2}z VG?SN<Ç!\J~!|ڃ>Ԟ+AVϊ"ű]8zK)Qjӓyw}:$^e (}CrĎ/Ձ܀NY،8 | hBig)R%7>hC~2c3Zδk:|iCk{?w}>^}>{YC}y|؏kM9@e3SFgfesQgWROc J׿*ݠ91Sv_9̬BIE5"w) 57OJ!ᮢˌFx`Z4LJc.(oU'^4R?{u2A8їMߜhcx_SGk+65=&;SK2^X0It.ϴyr0\?=q~=>lo.WT2\5rm*澍+P~һGȗ4JX>S1RǷ1g?WMg0KvxםQP ~<1|'%!E<$vd0)P΃uR&09 I:Nm&R!AkhǞH]F!#?FJB"e|Bxh;=4i|A+jvKHN?R;o £RtcH %d861mHKKD+*j7٩K ? So AFDFaW`'UZ2%x !}'@iY%A_8M+_EOSj5pJ _ʧCShh䩳PK=K )h&PQF۱vוwU;@!)[Xa@IDATֺjjwU뮣j7n2d+$@I{n.:wy=xZvxhppkNu9OI 4$cΝ xO,̦FbD Y/ZY|Jwy@DGshhՈ?ҭbEHum<).Ww# XG/Luf0n"BNn55u\0sde6W-mT[+UvKcwT[Q%Xqں,ضn3SS6 RFqp!AoI1O]B)x8^lJ as!i|چ ُ6m4 r*_q>!dk"V]C$_{{kۑ-Ȩ3?&.I|qlBf7<))Vޮ_/m6)Li.97sDjZ(J(N#,2 ,KYY9RFNGCӊZk#@XGiXENtTQHUm6<ъpq~ؔS0{abڲ0,tE{oH8M5S N~LUҬ[c,@P}mtZxǶ&7tVTz5T7NTe-ˤ}-{f'oelU98@%95ٱI~p?/8 3o.Bܴ/qpNuOEW?u ן˯B(+{KYFuC! =s衅’8܈W^y?;H#T)WՙD+q >(J3b[.e㟢3j6b٬_k:9;{Pl_ݦ*mJrwh3ÎHIxH<~<_ut-bS@l9OiHT0'F\;cOc[r~ܳvO/>[~31=u0HsJ I/gG'Aς/fXe7XGԓlm=#Wy$2}FwF􄀴^{~z{"-<)iޓv~h##4%oIaqk7`_~ ݨlb˻/cŽ7Kl%b'FGp/޶ňN!mB[^"7 IdvJ#Sh}(MKI07t6zko9|xfg.Or IqAÑ. ˍ+1/ٓ M*ΟhDطv6mKg$dnraYi3+/L?AD ibaD^6ff.tf/cADf潴99a&>1ls+;E]TΕe2uh~F4_Q.(/L%1%e% q:k~z9^$xA&""XD"h"+OYDsUTE1s1 PiDDM;)EE)/YW ? '9s͔:o1;0r":JZ|-3. !,.K)s4|KD`{s5'-$hwo'LuyKL>4D98򈶫BPd:lAA~b@xP(9mfGj!qh0-.M5킕* =9j)5b9(.>@?On{Nj@N)QEt$`L޴|Oi*['J?G=mhY؟7}o: Pyt*NGE. -Ψn PF y̼DUMuA-%;y{Rڐyȭdª:K @QSݣNTuزu/|M^1h JTY6<4A9T+jEwTEcpj/֫m+Ò|3'Uv9_X?G--cͱx9QO*\/Oxv?ȞZ-?8poa'lh{}F+Jē",`Z-IRWgB{)kOmNxa [%2!FѰbf'Lgi7-hc/T̲s5So "XbRTf8})=:jTPFQOO0XZ8 ڿ:5KI3吕k/HۓefvSO>8[v;J gtB_K!3P;A. [DNWu&+y%PDjI1z~ 8F<[(EANWy(jPF<Ҳvo$@?.=hК4Oo?!#?Q<AF=W ̾Z^! Y#}.\4Cky~%p^,iS12wƃpD@//T)$Wף} L̜7/ JBZDzF|rO>%=KI'`tR3e 7SkZI %}J BI 3C?KW6qRNTB!5+}w{RFTfKaZJPh<5Q̜W v5o+'e6Nsxii! 4HljRN]\ ;`<ZL AqjC˃6ڻ Zq~m`:@rTv dZe$M#p"0o^V)lGspGi1W^HrHp U5A'RæFJ'QRRO^+,A3AfQHutKЇj7[I?Zh{1رq#MԡAɤ*ExtǛD,O0"Eh:ZTNQԵUͤEL.U!E5R@=saY`ҏ`LyU#}Yq 穄B]e:Q-(峸a˦˃'m2OJ9{R^5 rgP>Q;ц$D{)ƈ$M] u۟AĊpd}rĴ.8Y&IExrOSV7R_a>o!M -wZ fAy6aLpSgIaoS|S+b|z1$"7r D6̽CL-R_3dR#Jz\#BNɋT?{:o杦Kd3o^I~4$DoPoG#[j/62K}$rkqi:FhO72cnRf&{гO Mٯlq@hB=yfV$| [D <=ә 1L_5f)~nк h|prjZ#,ҞSS<}~LC&//aFH L$i(idQּ,e"8b ,)EH+oo? ]|(-E[0i|$ #($aiE{5MU]T/"Çjk3=0%H= q;m&]¼c*J4]mY51/YɛZ2: ̹ >~gX Hi:~AI-|te3nf;6@@TAᑡ:coj*D G7"@J11d\^Ҁmc߫܈- imA^ EXօfXP=_;Uu>؊:Y%Un݈ʟזs5pv7ڠ'p@ő"oǖ u(*<}MB汉Cdl #>J_*:l R_@d$2}׏ȰJ vCVDD ,Uh.: nj*m/iQ3.1ܽj3tΜ76`G8*QԨ9cT{`h z@J{,J`;>6 8)܆nfEw5UIr7z=uU63]|,,j:9dpf_;t&UrO3cw߱q8ޱu}YOu}HQ'{qpU]M}qS`OE'&q-^D:&}7liC#v\5(Zp=̊XŒɼ쇞⋞(y˪^zN?G @c<x;U%G| `dF(Јwk'lS- vGڢ_jyoA8~7 P@̼MdWQ'-Gξxce!&1;2Yx,FOb N aL_Rɓ,Yզis1o#EUQ}f=2OHq9%]L'l0^Z9]ZgOn@Yk#魫t˝2lw/DNU!ɦ}?3c\f} $F @]zJOOz z &ݍP>?F"Æ3p IWG`[^C-?8 +%Q" ze/\4Dxr~.R]R˜_W;(>J[TE4F&6Aѩ}7c~ݗӊ 6^6 ; .{yF}~Y0JXQZX{["3I.> Ui( jk*=FB- gOGi[ȞW:FDUomxnCu%VΧUGGqC2\SAfvHcЃ>`?fDgJ՞Ǚ۸fEiOo P[5L& Ie<Դ[˽f OX-\иF}r+R!2׈,(l=#ڹbHy ܴNw^+gc$tc+fS'%ܧ󐿁>F)d<Qp$.1wt@J6nii#1c A3ΝqQH;Y+"c~6Q<Хc_@&mhxBq~1'%G ] X;#v$(T`ZhH(.vFXd$/}O -%Fsy%vn ܭ/L|7 Nۙ*gg99ཱྀ/,3JJKNqJȤ6,OLQ2n6#XdedcsB VwT>߀W@  6_3&LU&O$JKGJ4[DM(Eb셅",R)׬4SIAElGwO/,N3ZR%%sD) lZ?F~qCH(%waH@2e;$ni~2|1Wߌ5<h [ Pd {[ `y ؟Te_%%E_?Ub֌ /muH N0ϗ*ʇ.їkc QHTU!++b>x!`ɓ}-]'R[e]Gk{w6DzK䡃1,6 }qpع9E-;}9&.2m>b8PA܅gFpM I ZSNp}n7[.ܫ…Yɓ336d~P;;2ñ/8DZs=l^h26v;8,d\ؐ!Eƈ'g vg-%oNɃ 9lv%I=~ 1s,zp04hv2$\ 12yA.ۄ0M*+^C@0ɉՙ@,I '9J7EϽ\mMI),Id4OD*=E&`W3ٴ{%c>=pjY>__jڕ#1xԹ?` k,F5^w,TNXN-?O΋bfLsJ hJ`_oG 複=/^flRmop>?zA02Rjglf-_o2}bLF{CI3`'V)`_'gɺwKX}?%CMYHOoD"1M//7bJ0~/n| m &l(M3vv!|qCYGʘWɟ9Kki1KYn}_ kS1ʯBJNǼ8Ғl C)\J:9 89iEqrG%vR < ڊ񓣭xHGx/T=&vB\#] TF# Ta'О{UmI z5.1v1*gڀH΃np!#imm%EFеa` 8c7# 1m HSƛj?FL?1++Tj HzȍUtO?C5(9 y~VpNbGj (A{ EyZ(),b=t*J[\޳bpd3:βRd]:#JF;`i/e*DvAP[UMI@ D;@njG Jd:g"AAYbϙF>TFlY|-kda$ǤY#?/uTx0}2'Tf;<#0+1e4wº[|{<}-5Ơ446J kàp7D ?UTF0r"kifYs2D") JV|v TMșRdb㭚yyr AAI9UcNC"&奏X\,sV0W֦F8=#7+;zQ12~<ܗ!@I6 8mJՁ޴aJ756Rc,bS1qsD_~ğp9>"bh.nogFL~E"tIÍ#t <pi 7ދld^=u9wѫIR>FQ׃oox_s)qnNKNtRX}}86[;!cB;'vOؾi$ Zfޥ\2jJn}2 f?ޙ/4 =H Ӡcc恒QX9/~ װcu^Ǖ]xni?/a޳ş܆$,V)e<Ҳc]%Y R>w9 $: }L=zEUoK4ϠgM$4[K?HN 41X1c #/\%|%To BvڙrGyS#ǤaU{TWX|d:+0aJh騦:p,3bbpܩp ɗ.VݗDTy3x8~q-i#mgO쇰 QWkY1?gN^$/JfUmemEs])**i*tPwŦ5׃͔"X7 O)nNOu55Td[ձ?~jL_R].{P2hw̓ ?= `&҇! %p 4 z TZ1ȝ!.^cA5h ݇7PAmX?4>:% PIl8G#[(m HJiEk il8QZ &]^%=W^VyvauX~=>ݾ92@ϱs#c՗6s^ns+5l_ns๋p}`?J_ X+X'h/?K{הؼe3m*ng{6N_[US{.l޴EBq ~hC6qy.0yc_?c8~8_9 }}lٌ\ȷB;!݈껕zq` qrSjTت6A>Xu-k pD>1aoDqD4RŒ;ω|B#3JYjaId%ӟB9%& 3|\ڂ{Vs}=i zȔZ)^0vK/R55TOF^=m˩&ʋ!<OBb_Mo%5TcF5dΞT7CI²̇=T+ ,k[LHi{Mx"ePpTM$N{f؆АHag?.E\^3Eǐ0VWWaxaTzތ$R:rhD 5+i3H>y@?;׿GAa(>,&I9&$Bq,M!?i6; $& jַA.DRQrrrwW`ƌp у,]S0b޿:hr&J@r/mCG?Qr Gc E724roN Vs8:yC 샨:E~v#ċr݉O@=SD67Q՟ە(]r-Kj_ɛkW"4ɂ\JPs?UG`$9GE[Gy%:q?TwK5A*)O5eU?"Vx>1q񨫧anT5h%؎g2_VVPƬ tQ:NlH|AIBl߁ҩ]WOO`;e+CX 6 3}1p[(N]ϴ43G3AP|T n^\[wnG  5 {jaCL|nTJVxxscHCAiv ^U]`QlvjD'|)eD ű#*Εsɶ.^{ド)m?\tF:PLU,g@G~>w\qV(/ŝc8s>:D:Ͷƀ~6u–6] lp<'=c~M`8e:[s3fjpv~@77Yl [_RKlpX{cJJ.}?c fYmM5丧Dc_8?uI\?F뿵5DA>TIkgE__ߊU˃05h2[pټTJ*4Dkw߁c<_O#^ W|>\Pž›<↑!L _x򦅈>|ƺmWOLa]G_@c4|-9wV?Ko41cOa97ǟg- woke6hm›h+MU}]wY/6ZV?A+Mm>T=]z϶30갻lU1^C{qh|2.Wwsw?US1Y_l҆_0r4?G"{-jDy %W:X"iyZr@gdaƓF\0DTYH:Y-=,X (JX˾ ToV dմ6"RR#ƞChV KJz8!ǡ iyBC@T=¯ I3AV\]߹m`y]ݟ;, s 1 6@J?ډR҃\i@^^6  Qڂԉs$R" <C`0p,TaǚQh*ic_F|wԔ O>5v|מٴ̏bXUM$z xNq'҅Mo>C{NBqOkoġ]8k$, 3THb ˝@?յL:P {RJ‰ he&J9S(.a%:r~.vd[)NB)7$P>FZh5(>X~Q Q₱2J~ybfX7 yRBhad˃υ,F ݰEg܇28moHg|+)?Xi3"XR\iL$ o0c?vT3ǖ+v|4v5%`drl߶ m\o @$Qэ<PJUݴuC {/s'˪hc .]Ǚ^]mhB4zDͱ~nj&ĹcR 8Ѯc`6 Ur QCPs`\( F[Xmٜg,8uJFIA׿Wak> cE;ք]ם'QJ~WPMTJx$s%,D2u=@c?KֿV|r}.X lBs "m ðl<^OxU5y[#޽ Qڕ+1G>`ג?N_/{j'Q|iӄD:z+>~Lwu͚W[q`eLW3)TIڰS)غp/7>"nQOC4Zߙ' gpL[Ɔ&>:12 .p[,_t'?Jַ}чi 3d0qϢӒKEG}nۘteLcV;\_ 2ACRw~ 6\=>.X»uN%ܖvFsED:A.4 ;T5$isJ4=g@jBmnJmac0[O\Oov( 5._Nc}"pβ$r@IDAT @Uq̽p'R5Քq9 .Ƭ:bLw3/]a}Of텏+%Z xGS) "$SM U䕨 /KM:uSctd|Թlk_!/QIb3Jw<BmL=s>e'ߒ| Hp']މA _ FZ)s} ~vf]&O4\rt%/S<Q|orll/(5kڨ¯+0V^"DMW\^q (.Ά]/g+E?wR~gJ PRCtT1xRm;3sBTÒH?//ԲoQ~7N{6.k=>nCb/&MBJ\:a,U';5]I:T!I0 ]U։=rem+ Qk(@kl-UV 5񇝵8))(U\s zLڞa;~ `;n>@pɁむ̡ݲ)p =bAo_r91N .Û؛_ط/X Ά>T/%η˖D>R6\GVm맣i/s^s{ + n8G|^ l?]zJV5bɚOL:RJ$d~uX5Zw'k4+~4(Ֆ[pŽ{Ɯ*au\{J2Rt~P؇R)qb Ѿc> h[<$QCDLM{ՎtRx9w5޿Nt wGJ{Dxlg 4 1uv3xsJ1|9ݠVuo= ٬oLTTnO ;}x{;3f ^ pXtCbN7A [S]=N QKɝP^TQċ>K(U`Cdf:*1u0k!J;F ڈ*ާSPO阒RTS7*TWU R.d־)Vs/.4`UػyRGOJ'ѳOЇv(u#d2u˗qtTY_#:tۗ ;zc' ְTGFi݂dJG JtI&8N) J6RiB&)UJՁ^OLEFu>jKJ΢5R&80 URJkE(A vr|. Z *R͝-6VSM>A0wJXhW$'* KiM @ڃb}Ncht%Dvl] /ev"=i'@=p/@&֔\Kb4θth!4gǤĥfA'RƢx{]H MqAGA!#Y?kX>@1dWWJ, ؏kI_;11['d ? I룏htkr7&6d+tK}lOw]ĪqM'Y \MưBxH8<V;I\K 2#7{;;19~;B9k,q`GCg^dӿ3A>ySfQ}Д3/g}{S~>?|KQ"VKaIMCΔRNY4 _QV;OăA!qg.qo1>=+?<ʠᶱ]KO{iungPɗNO51.i##-J_{#ye& LӘiaԟ?wb6_Reʁb32X8틖H:C J$$˅*Y׮zub~_WӦZ {V# % % ob1upتS+0" | FAEhW<'b1SV RW7FdYQL_@gA\t.<6r ğm USퟍBp4n[n(dEb@4 i!J^ \7-s+ 2tqEe<&(M)$S:\#6cF7,,Y3rgf]'c iO4cY_Œ[_;Ԣ^,ş3Ą?q7s #wvaQ 35.dnf:?m7czy ijUj4wF^Ĩ;zP*R΃ʣ܋xI\ FK Ők eaPQ}&5_ED 8vXrmne#2у*;E-L4d(ShkZmjmnPUY?n,$(Ϸ@K*Vxv֭y!x Fm'P:nl~Tΰ!8w |BFǑv3""Xh~G%/ቴ!V\pm'(89ux"zٮ@)QTGoZj(ji~A.lqfnGwt(=PߦȨh 4}bKGѥ淡 (USr Ș2+x:$dj ٲDa'}XF R&M@ݐ4{ TpjO?hA#޻tnYVkG5"t%3?CLX3blDmܙv>C}- z2֓f0 Q!6J5aCM=N6k~eʧ dYFͽ6ֿn1 VL3@ <~PVGQo=L0 h}@ax&, 6"/9L<$}2(Se4VMwGm1%oxLKڳZ^i\R_ڤ_&.?&S85ҷO9itfrOFc9phGY_zpHB M@@mWqee-ewX+ Q(UB 5@讫n޻w̜3gʝs<=C?[#LB]IeES$#:?#'g#k1\Qgq?cV[|%  M`̃9c ٵxxom;9^p:TNf̄*BHE` ;=7/f7Л|ߌ1 @ƒIFڼMj)k=y1Ţ_13jw%rX(/$'2A_h=\ !mkdEn(ȭOCL4mk,$M~1J4Q:t#`V;aݐܴ)Q!ްyG=,w}ء'l8L=N_LFżUGИǃeZKQSIhSÖK7s?ǯ 8y|fh´`+^w9c>c8mѲC[ hj0%(: /lC^B wdS+:w bxrvrC=kZcJg qgO=;cѾ-V<oG]K/nEֻv3gkWG0%!;У?+v8Aao/fAh5Ki֑5퓏"u[u9Cުt+O֡_9CcgX1׭߉j tWQ#www%?Ͽ]ͳQÌf_> ʙ CXF-jIK+-xiQtm 6׭y*st"q/Opsu0p\@JKSfϬȫkqe;&` `&Am('MM33W!o)LPŰ_N+j@{|l<@L9h/^0Fpĺ#! /ދ_`s1@E>hhh)?OiO~~TV \Sj)@C}Dbǚ`o x`|misTR$Mܜog:d-:.G{IF3`Ѷi3ֳ9%v򇲨024И/}RD ф]iU?ݐ10 c'M2CyyMф 2epͺP4O,S"HP$PTEćnXF#ӷڢPWҭٽ-7G ;Yxlн`,Q_[vޜ<4l]D4_,]A7u6ji+ K,FG0f16#M[֛_B|Q_]. !<# F5cco"Jk1@qVKh8l Io{P FWT۶m{\\_j`kmR_"BL]j)*ZJ)m29 IDUc+f7m*?]7f7+!:2nM⥷=SӐ6mo(s+U 37z[nDdD(AHvocՂX_jP1O_¹ِJxs1jcQr Mݵ/ꏦk?,IvDdFsY`췱~/Y 4yz^ܐ@D,3%Ha>-> I_F86y_"mR)#F ISۨk% 7j4YH`~*3'Lf=]OfѽB3p^s }Ot?vX VBYC3@֑ /"~_5% /cڂ-J6I~| Cm=8OރO? GFgwOT7gO_ֿl?g8]L\ϟoM #G[oxJ[?[LĺeɆ&]zH6w1\0wH1D5LL~.^va.s? α3\Ͽ7d3;4k!q1㿂33L3ex][&칉v2Ly2\L\ &çEﻛEd-qR@7d f j؉S $՟fZ>񥖋4dσ&崟 :IN/pHMLYq#I[ZoޣF|ѻ2ׯFBޤmɣ/L!$_arjB ?-A];41ܸ䡾R`j$c?;s*̱N' i9 3e2Vs6.G vP[3 CI?h [ZZ Zzj'VUZ]OaHLE']iQ j w"tDdO1J PRKD򴨰RTFx^rxdR_x"㻣>I; oXfO߯< +,2+@JX0XSCu_MY(v8}w3A3_FA5|HwաK +Э[C(,.V eߡf}eQ}l`~/p lǀ=3*j,V`e"I׮GԾAy9}x|w'VY^Z%XdnK^>𵣼q5|/< Bl oC;2 G'ùb6×-XCHСr1lҤ'.F&>|*w7#WhCRjA-Eb؄S LD&Ӷ쫹o? aL?؝O{-j i,:~ ./Ɓ=vÀ;M#GvfQӳ>PTJSx0أ-y@äig`\kְzú[~M#;1w|Zy8יiCp0Q"77 ¢6c̭Ǩ>>#s\ ށl4[@zt= Do\x,6r(JGU`PSo].n[kp!]NӍyzט\}N^[s1k XV J ۢ <IJ-Y}sP.G.f1ZFƚtZ\^oH^,%L.H?эkq?#%U±Y6hZsf3R6pZ S-yuyӹ.)G1;hp1i.!g,.O~޸7|ʜy`lKMb;7G/s׵6hLJG5o+.p.0n).Qjŵr1t\o f "w^ԄjjssGeTcҸ:;֠#&jb1Kk :G> Ն cp*5[Q _Oj0R;kN@# 4WKMچ@( ӺJ&(/_$r#G-4J@oW:āH= ƝȨ(MN|"KS/dͯ6jKV֤S fŸ4dQ [XfojRhD8[m3cYtF|uigMQc#}ZIMTMЌ#ܳ4qhc8n4zP͏k7JΞ,y?i%&~hjEZ:Uh.߇Ũmɽf5BP]Sg8jŸA> ; E7w M63<I10.-,f x{,JB#HzӹeO5"1 7OÓ~qaHبf<@279RPTq6|=0hlvQJgIAr7-f ? }5.kQJ ^mU5҇U]K FHp^ 7mȞɸ]*?ӏgBgܴX9;4 %w<P5jMfuo V aSdWp?DC=8?wyvf9t|4K q7ӷVɨl8V`hp'<;p V5\8c3*eza?Y霻Xmֆ <g9{=ǹw~Spg;&r!4d:"0pYװfwnfLɆ0%]<t4 pH.KytAzl5=5moG?; 318pϱ7Ϛ]cw9R;W\ ŤaK+FQE Ԋ&4K&#̄[ (1y1-a>Jlu;(Y0lv 237`=((7f;+]ӒV_kWu߂FiF15|!go-C4&c~~co^1S( 8- H+W΅6wnmO2D4R f*Us =\Yi4jAQD*.G࿥E_OC#O@,P㇠VwąҌ`j o=#`M@\N@v*9vPۅp+j5QCKͼqB-j[xCAu| ߍ0 ORDyiؠ)?%ieNB/9[@INDjZRmٸIr9ƺ \XjyfF xHs/ nqdjyc\ LPwA3/`=7mdNF_:Ϩ41H0ES;05eKSht^۳='Ý M@Xrvm#'OQq9 Γ>P톮39{ cH*-ES~*#$8O1z<յie" dFFF#$$U)CVQO.ιnl{j%/a}n 2۶HTod7TԶW2'V <+rιpάh>4lͩEq'cZ#pz 'TRB4pi2<4@*j& HŋTB~Ŋشn luE!rj=z4CmZgjڸH*Գ?d ߿_QS hacm VVaR7`Sa9E(; Yb\;ZOdV`aI4w5߶k"|էSIg0%*GM21Iƾ9R /0:~&᪇v'!6/TwYߐ4R&]EqӦ~?\vJGh! 3&匴?Zq[:>4$u{ >7. ?V_ۏ>E1wD>Q,NE6{iF!8% Sa]HI#GƬO5Z/T#[6~.3VULd- 4I]+Gu[u 4ݡ}AK?aU?GYUf]?k1sk?4|\`dZC\hՉ#3YQ:knVZ=ӿ:߿XL#0t 쓆Ę@mc#^w7o~~feӌ5xgl?OL_-qcG=k65Y@h#Z+fƤӼ٩14xQJm\Z2boW EG6|~?̜o_ >?ci"eTCmyԚjQVVn7͇ZM3a7fֲ|(jA\<){v5 n#MW?j6?8(~*orK465(]M֊ L rqQQU1m;ByK 0UXVݮju4$MB@yjʪuץJ)©Eo!6"8&1Ȧ- ǣyaX-SެIďsf?|;7桔UG+d\h/5SggCQ.z[59൧£LhCdZuqn8? aMOPN /?AoLYk:$a z;O'8fG3Nk?Ze4bwփ!̠senƋs6Qs⹛Nv YY׫`3֖[ ^N+PDnrX*[o39hՙ52+-䦧DE_<trF¦Pwi?#Dsj[ޣ~S"Ag6̢4n"4-^HK+6j[B?=YxӟP3i$i#7Q38/}0C Hm/$ )oV,FA#`߀;OJ+'J͢*{QHf㣷^&ՎrcN@NH6\4OhC YYgrdbdO<'1Ҕ@iכ=9o`11Ihxa[hCAe|{Aɽ֜ۻuE-ZCOC۰)#PNUO82Pr"0P~e\AP)ѱ 'Mc T,oBB FPMs{_5@jցE|b"\jKNj uhj0#OBl1FzόV/ k#}eg"1;>L[V#^g铦S cm( ڎ99+Q:򩡚E܁덄pjQ-85oc& Ÿ3/W@5OM ٿPl@dDU 4u%`P<^_%*x* 4_xu!|a`oĶE{HL@Z? 8 0Gأ9昇o({@IDATyZ ܷAEhtTvH 7yҊ'%E?FMهn߁\ IC#ͽƚK{1]B:ҝ0q79YnV]"[0zJ?h7$⽓0s& ;LjK\58;_㘒?c Վ\wK*7&:#u0}tm~aEJ5\::.;_dV'ٰFʰga@Ucm5XoJXѤSTS؟ PWpwqοwtZu7?Az|WkT@,[nGޑ\P½ys|o|uJpǧTLk{*,{$hsÁ'piu^*o3_*y7nacEHZŃ 0ɍҀ@7ݯ o6#Q^ބXcM_r$N;{iA.ou g?#àQPH<wnQ=}Ǡ{aVR]m=5gȼ>5js3m@Vޖ&I'*O}("0&)-72QihCi&) hH֬%䠮%tWh|AI{Ket6X+A7[ )LצlO~QXFRowa%_*yPSZ̥iJxPCIYn[GO9a)yȬ_"ώVjFěv().COގPPP*K MY[X>1HV 6!cϹNIj(+b= LR RDW/;5QC_O2H@. ݻOjmxZ^lA56l0`;ލFG҅g fsZ1jPN'f? NSR.b;xx]xlZOpTMFrb 5NGACGmg/>s^FV)%ԏk$dLNR iUyOɳ / 705黌 \m߹y ګl5 KI!LpL((Ƕ;'5 {)R44Գ]XN"Mi.^c6@Q^Ѵ_N=A(߼cCg(PP ;&jEYhyujNлt ŕIm%_/7"-QEM@2NMҏ0?tǜwL Oԯ2&W>0d堨`/2xW ŸQ2/H5ܰc.ξq,myg c?vRp ޻q NW ?oWV$t+UHgB?k[DsYpMH<+:7f ?!r7mwLfJ_tsijFIy RCiSE4z܅t)plsc2ꈡZ7nv~hbҔhU,|򶎶MT.'3.Î~ig+ufrE1> Ĺ/\4lƜ& L.3nngbmme64lLtGKG#^c⬦7BΎرk'_,ىu_ qyz ıÒ?WWߵwjzvΕHΉXc/a0f!L R3)P `PB 1 jbȊHCz9m]$Qs//WyYXTx\7JL=,S5岲9$Wן}]Q^kkjދ2D,?$@XQܴU4K_\55#%6x2raQC50.h,˦xk1&pr /w5z4w!)=Y>j`Q2z=mWýi\a>%(&J<[|1%;0h٨oA,Qfoj=-u.%iR Ȕ|@Xξ¦ek?7_`՛\79|į @dMמ>r0F?yJ4^?I.VLp }n ۔ì?<"ڏwҞ.B {y*<>39ܡeXC"̽w&!N~?iRsL4>הw2Ir>t>t^{ڃX0L y7#M./n*^ؙTg뼥_&(qI_лn 0a5Gh7/J~Rߠf1t{)lg5c:k_w\6=i>8Ss#? _5?'w&_XV ۬^bEv1tFPBcEa-XpaV<(Lb}TO?] y٣g{BI^~wl?Ī;kQ:{11 `^N5ү44;xf5~M({?޸O6QY}^i΄.[=Iw?ښSY_wks 2M5VaHܰW`+ Ql>쌠:0QS&?UDUԔ]aeNS ag 7OQغ`Ț[ZgfC p5^+ARCI!='PkkA<ۛw#q k U*-5"Z,.2'郱aH (F!hoo3laTeOjXMͪUԔd Œ˯EMP&}4諞m|>D Cpj0?mW82{w 6Vm|{~>j1L8[䋝S=+7fqpN >_  86TtL, JE٢5觬 5Ue45(Y}WDD02AOB)MFFG7,WʵлpS`$#?bIJ.k3.:W)O蓧cPPEdl5Vm*~Ug8pa O FHsC ;M֯@e`)x꙯[c f'B48n ZHW2FɶlfQ8D`Nr~(C!B`mfit%aC<~1uwbw9EMY bl ˑ';(ݠ@#Q ٸwלh>WbDК2SʷNP短?O \$_:V?{y5mUNV(͇;yLǷ, pwcXS8 LϊGZpǩ܂WoG{g=~HHr/#g0O펓/o,hc帝H\3)Omĝ6܏+qGݳ'']QCO~ullq҈64wtۘDc⿇8DuӮ,En݋8; \Ci.]k zu?fu󏣅?nZEѡZ.ks1W~k}}=9khŋf&[MXK(rY'C8iX/ y+򱳘 Wtf-rBdj*";ţ {<.z &v;諂oqfhq0`5(,˱n?1& Gb°tup% rPK?Jd2;5bqX_JSdLڣ0~x:t;(p974hmn,[lC8{8mZ~SvT17@,'(O8%j6-^5t,˫1y :8y3]Gm&,[<=M0`D ~Hs1<:hl#jnF` ,9k,6s 69aԐ_,YV'''9 Ft k(6ihM>9:wdoD./f;͈EIS1%Mgj dqsi"4Qn}ftPx<R7e}u(y5;1-2ؖi=O,&;t#ȟEzO:4}8N|<;Rww[]?O?~.[rܽ7/2ucׁZغ?n$Yuwi.OCE՛=E͛ &7ᮁB]Tlnw*hwi7ۍ^ ޛF N/ɎK.FZwcٗ+M= S&Bg*ݡy0M8n۪XE`߾ԢH LoB-۳+oa OcǢO5BI*Fkriip&VaFw@\*yT#p:{KBlǬB5{#gs/˻ģGLv.6ؽfcVUv~l4WU㾱) yۈdƖGM4a_V֊vv k^mzӞ$\0w8%g9wca<1XOF]oӘ]g~䳧Ě9D<1ID'`CyrϿ}XXNm+QVioI۴5!SJ.O,i!Yۊxjj%C)jlߟ@nXF~L1Z ޽H8ꚸ Nw>цx M{aڌf||J:+ eGugJɒzLQs6H ,4E"|C:`U yFFF2:byzbRz*W%x"-Fxt7|Ƴh(@QJ -8<('pIA.k7Amy7#{ } C5I1xRr`Oȓ So?W|m5yCp)㼡gϬ0ёl[_PY}[96so'83.fyԺ|?jiio9@D76rڶv>t5 Cq=QXY7ŸKdT+ Sn[K`H ڴiU֠Xhn'x'mlzvqꩁL SzƘm lRdH8Q 26h84۟؜~΅h&V;Sauע췓vc\Dlo$|Cv{/[t\^P>? J lI*+cs ۲qw1`Z Z2Y|8iEp҇#|= }Ƶ:DjytV\ݏr*ıFѡZ 6/g[W/h =?˝r{lx!!Ci;Vg=ȃ~(Rt Y0K\_zgd\Z ֠ݴIXsmgG96r_wFQo^|I9-f ^~.EhnؿI\5X`b˙^v܋gͲ|[26۱g0 # x%1}$qW:o›|DYeglX}7yTŅ˲rJexOv4bi3?Ňg&1# 7b#5vf#F5/֢rgsɭ4nX{'O8?i?XW,RVFs }>R) : II.7",  j1WW <*;v^K:(,.Abbښk 2H|?%IXkHS7` ʋH}_ j)G/#8IpE6 oy_Ay$Cs1 `^$ۏh*1> -[3q1xx=Fz*Z|lޛq(ٿn+#@|a._uUȓz bOII1R܌&p)Ňu,+X ialF  @Y%5iU}oYa^ˍ@vj%uOkЯOHx,kİPy4ᒋbw Ǘ7c[l04TℓA N+iJUߊ[qW/rZXlj ڥ+`6ol,|L$G_YU0HLCmk-|>y|m6$5kФ7%؟q ?ݺQF| ?"K#M‘lC 177C- kk*$J32WSmB(_H1*z*{S}%Co[[]%3k7}5o_0). gųԩ7.rҞя`bÛAo姪A}1;F-q4v0[?ͽFR:s 6_Y/ ~]pu©8N0Mf!`ÔCZkaE;)?Q& GB7gm[r!ȟh@NqOo ̢XUߵaϜ>2 jIRlۍq9soNDBӬ_t6 67ur0Z&8֠uώ~`Q8{iZᇧG)b3~ptd̜fP^pmoTݞ©b#6T]|WaX߾bB^)O˧v&#wPjXηHh/>i˛;bYlH/\p*B`F:U~ݻ6SM4HxτQ)Ahd/}&Lb0ml$g& !Qtn%?Z|*XFcmڅt}0bYb+EQbmD6FQ{f!U1gD4A[PN3|;0wtoǾ2w>M4XA퐲lY۫eGiYnvM0hxS*-~N?{&I͗0Z5|_rim0MtQ3 c&ȤH4ݸ_KJa/яSTX rdNC<%*üj2^~(E䧪 5dH~'OMdOF Z)o\ĆJӏ})e0QSƄ6K>1˅ؓ{eؼe'.|mTyfӺL4" 3~&G:}z1?OK-3-N?,j%]R-|`Hh?64vΆgP7xBa-5Lh;;E- K+PEy~p` 9N>ڤI6ObuΚQ_gh" 7jKe5M8!q .^ T_w$'_]jmط(@w%KmEg1NgQOVьQ;}U!쩔wiKQvd= djQeQO6yՏ\?Nmuz6Wkʴkc֌ҵsmZH:\qAcZ_|-c\ju9۬E;?\Yjrsu| ~RKKr3ZĜLl}>VT7w_<۹61פiȟeL΅9smYg[Ghns滹TX?6n,~'T2ҿk^~ڏi 6Q8hZs:tC{]7ϹTxU 57ޢɴRonHWE[7ǿP<3k]XY/w\ڀM``x.(4d\Ѕ%bLX/ϙCa[*<,a)B{UUmϝ;wzd{ IHB !1"ETW^DPy-AE@ IB:=3y>wf)~wsήk.gGw+;:g7w߻E4z_tJ$'a(w y|.f\MI^1>ܸt6yO8Dd46TEE9I*%T24cEeUe,IO#+-IDy9zvΏ;aO!L1$x#uE/L4&YH,AANe\''o7^r"U@><_R%B4! knMuFyGl çic(A#3icmq8WRp\bSfY vA1I}IVW46"-#.FfU~4%l߃V*ȫ%}3 =RΙGVI֑yUh2kL޳2-MuHåKs{r:R oTE(<5Vl'):scsyA:z$⾅}%Mdb> 0fteiJJѮVq3=FIE2*+H[@ھT-9ke\?n~'$[PoJƑ[kcPt6.7P^z1YQQess#% )1C' :DVVN8Lfn3cWBm)А6vY>1Ud-҉A2v=1 ۪8c#s,!%|eTJo>EI889[ G=q#%/O@!=QK\nU~@D udP&#zt̴BhɰY>+(:# Hn֖֮O8n[uݚ#O/۹m19p`+N|jQ맲vhB'o]Tg02$Lx|b]N=P@XW5)a_az[y'#+[9ˣRpRa]u-12Ʀǿ؇~3zS0GMA|/<~ >Fj'7N`t&=Z~2~qisˈ3=6I~̔]Su>D=!Tbu)J`1w@dO>?l<\{?(]~7"91@M#9,5M@<ˆ}D[tWU7wWMF&y_KiJ0oe`Zyz2__+7tjr!_6ߘ{C%_%E={hէu}n ѳlY{H,(| ; VI@f 97+^'*By%fڣh6E'?/[oqcI8W}ML6Ic|3b -ѿȾTvD:؊TJbO悟Ci?HF BMh+|(a9.WP1H7_*PHL 6>:L8IqXolNM~2_ȜY9q-UUIz=*!/)Ih'?s!i+6֏WG1-KB1l_3ۛujjtt{F2DRo:'r^JwEF!#}_ܹp=Vi ź_l\dk$Z[/z"?[ :#_d'-Dֿ2s^䮐x~Q'_vnr5NkL3p>?΍4ʅ}Y2U1*4u86$OS0;̧t+dzåt;F) s`vù+.į{RC9\#|6K^ɡ*l|2k n`,'d̿Ev=릤ju$+qqf̣$|pNlf㤆SyT̳ŕYutQOg;hF~kW* ^ Ъli-De|HJòxPUyV2X0WOQcYkck;8q:.a8(iɔQ2=d>B&1 vj(]w6'VaECT5JL!%6m\A6ڌE<,2L2bI^:(>xJF@IDATei&F,3HTtxqS΃$]C{P 6l0ylÜLbN!Au0d؆<_]ZyG3wmXCIG763*UNm(2T㵐16tTӶWk^dR-] mb &"$%է&##LҀ6SuUb5DJ!ΪX|L[WWc6ZZb%2)8s8JdU,:(u=RS0hڕ!H<2NcG1x ei ԹL`mk} @Uh>6.n9D gKsك2Q\SN~[k[{OmdE]@^zLi[Ǫs?ܬ>LI=di y)"?$/4͡IdqB#D[FwxCx_mϟ"go x-)ICNԨ) D+*'Fs>ysѱoy(tۧUȮD)?h9ј?  0c']mV?JZ g؇m7bo4˘+Y@yf̐~ y+땜%>J?r#U[q^zqdTı1_vl^+^  -#gJQݦʧ>d?I_w_CBm-{^Ix-L̿6LGu'g8؜~l?U?\ƦZ2cy}}:r,Ƃpq%Fg$NOdrmКcK_do&[C;#\1#ߑϲs'pz*jT\碪1yWoUˏ"uw`^Mbp Q}El&[6en l/LkzW3,V__{Xk.M| ojvvWM'eXv/|/sK iY. go*ʇ#+[]"t:*X_mnzٓtڤQS7.9JN jsGC Bӟ½Z0L~mAFx*`aݲu~B]+Heu6n˧2\W0߿L4Cp]>ungяNsgߋ/b䂣< ]wyEp9~,>e^8%^x-n1=F(.TCx%Z :F~G_>^zo/S0ukP-ύd^E gqV?sM ;L첪|IcRp+o, P""&(k~|~66+)B)@G&?Ϲrz@%ESbG]*: 09TՎ/ IV2SqF IBysԷ 37SMp%hRҨzP@b|%HK,1$mCI=W (̜}6 )%JhIVA"m`e+J#FRB07= _L&fƬ$MrOI,6LM4If؉SOT:CȝđIMɨX\ܸQY(ځ NE27p:<*ٽ !̎\l$RJr2TGC U߿C'A %,H22Z[03cۚYh$4JKm_*ֽi,ų[&JFM|\,k$XJ2e󦼬s%*LҍtB?N#i#DH⮥ud6ĸ8֢*ƆfP]`lCcЁxڋxGqȋmE alo1D1RPUQX4tS ;0JO2$٧QZ\g̹gwWO3{ȔXM1ozV:Sk&>Ĥ v$1H"@YyC,\ 2v!=3L]Hl!Kam)Vr֝*&cQFeX4Lql )ٕ@O"\Fm?w\T=jA0uo[ʦxlc-PR+7)Cs,K|sU?siLiӡ;"d8sPD?F/A-;\B-2鑫F޿"n{|JsDȧamgMhA][ꝉhW=0ZY£2u+t=;3hQm ¹W:Ϥr߫T";q,|jCNzfNW/oJB;qL—$eF=*>1BwqWj6F za|8ᙅ$Ж{|mTCB(՗OiAgX#<1Jq0* ߾xI5./R$F&LwE9|u,Īq2YݟǪ}B;`|˯6z,XI?zGp&>ٵ*$L2:|~p4*Fr׎ux/X#+WEAeA~YO"*׳U`xK)/psʱDj%"g;47xy?^T;? bXl'c{ _֖s+P7i! ƌv~eP-l_I3)?_=aXu|ذpvzoӏŘ=T9{|شj#vx/yU:kJ%T$k`)SJ\}ȟX37qb[,XUTEx1dEY1PIY=g Z}ÿlbИ-($i̜2Vhvl۱`eWw>k-܏#*/'56ETcThh~ރB@v2tP-ALx47, 5T9Fɫ\ov0Zq֞8%/GmR#Dr1n]R pːrzf/au<:D gS2c@E_5^9hFQ')qh~A&ZAWd2G3ө2]!je Kf]#͟^Q;qg8 }؊NbV [ iiJ2H[j^3B |)NzOڷC!}ɗP=1"L~i,*قg>ɔ8^GvW>'C.P ZY 2SR̖܏rIDYua12G?6D/׋?yF{oX|JZu$<8&[AiSc#&=մ٥819ØR}׵(lFͺ%KIB͘yd.%cMvk<4os_/\Uq^u35'GTJo̸/ F9RDb;0dRD;UI)qkv$'FxKF~d,Q;dVXf2p('f[ k)FIVzfe2?HDu-xTHIB26 7R]FA>Hcf+˵nI@ea5m:[ZQUW+l4DodyL9Q=#+fLggΪo^ iN7N2J)W^j]*) 5oҫϟ1KI/lH7<<%piST,֫sA+YA8o!]uka׺60z`zt?D[^zX Ğp8k]=_L+]~_r8S_'+Y.t&c}Žꧺ+}ĻA0>&bUK G =V[bV:R/)F[&>ˎY+wіx^\TQ;oaE H p;ɐAQƁ^Ԧ;pSU`FīGKMV$+NqzE(;T>vmU8(|ɢIpx]*#(\ N1np]^Y)X? c~+|k> z sVx;{JAM`oMp` @CN1VQh\Ke)ywG;Bs kD(FoPƼx_wUڽ{+SWD! ʊVGo}yIq{{]\wcht̵0E dZr t;\ГR2l ;Ø*AuRuWgSE1<"M;J fI3_,C0"_02@ȊE}C-X'&%_b_bG}X~^B,?vQ"2~eBF@:r{a7@ Ɲ4ކ7) k0&яTXWׄD0WZJ")eEnU ULKڂmȦz#ں=Ȧ5oAS#&\ѣWj,=zAp"Fɐ I 4Kov hZ x vLP'V-Z[ba]82˫Mę"b GaEXpz,g%RM㧓1*Ch=XiIEifJΩ^R"31>)XSWWY>S646r|>% жSm˙qk bMjI$Fݗ*d@mk,ID)hGIDA{lI vI/ʮ!(h: {"i$dQjURdF`2ZQZU4HLAfYBxQ,'QlV/aA &S5)FJBB :)G D2CfڕDڠC\p RSgSUk; D"cɴ%M746 9=g~*GUIqXa_ɉ /s"?נ?y1ypzYȺ跽fOV3O[;G':&Y^++N*?9a~tJ\/9HEvȀ{p7lރm>GdGZ&u@ ?NUn1Yaj]pS- +)ՃϽι 7 Dջ_uMy~m'To.U?~>aͫ~s vgm6s!ߋoF^J1d cyt9i;h<.TY)deS{!}=?|ɏRUѦRVH9\\r& L>S;]-q^D6pPej؉WHgF&A'%%c!֢ߜYȢ#]Ivhܾ/ݵQi8md6[짚XԔԠek6"Vl'? Xk@vJa%gjRR:7b% tdJu d>HFsNeU 5Hd{v܆ƒ,G z,zIJц\2$6J&<+}-K;IUWoTHOl dCMxjD{bhHeO1JDӆ&㜤5>GhkWm3п:s9S+TQ'fL;bZ[dBmcSb3޵45ژNMujKQ:vyߨ֎؞y2lYy2=zϡj!ú=kP=$%O{CO:?w%򇡹F3I Iţc^ d`1w)e`—L֯ k7l]jctĒ1#Ud8IE`G0bTL?J< vE7ebLMkppzA(Ih=JJ" %ӑ(w*qu ڲpHx"Nf'-!)=7nJB2̒MPLzg[bx xvzF::ؾ&,x`2=c8fRayi1F D ˮ7߅)$#‘7]Ɨ/F<j̟6Y˰kroډS7JiTBlҷ!{-Θ |[YGmgMB21XkI͉v#*Oth;}2=4lGBF~FߑsNK{gN]iCxpn]?]ougyqئA6TkCeG⇛x>d.Ơx*66bŃЬ^=Ϲ 6g3.[9'xxȢ|2ƞK POlt/z}r@ ~&om/ǜ$<[݅ᇿ_5 -U-e~:b:{.8-&TW[O ڸ<۰v9nxVr;hJXc:Zo2کOw4ɽhA:wB#;M:eN8L~2LL6C&~kXK(.9P%bp&*L(,C*JTwPEd҅K'QJsdpӶͫuRL1c:ko370JI'R1֭&㦍E8^31pp7J%zR^ !եEgTh;qXddb.ؘJMT-8}LSc[(ZU%%&29\TZ2 wa8rnOY1 wAs&Qb&~G6Yħ$d9a O;fkTD'gX2|Q{zUNOD|:s8Jt54?SN;o&rsR!}V6E ]Xlqp GڱC TTVRd=N; KPRrW6HM\]eMвWV?ߟ Ji<6\fZ_&7l})W-d%U!Q ,^ /l 4̼;h#w<Ҕ"6$5hL?ޑ?E;[/8/E$arhO87DKvF\gmr y;r9 oջۭ|jI&nu{bF~kKV'_liĶWjӺ6%Vb'\W[F:[,2RuKޓbzl0[ b,+/*'nXsd ~哼xa0ظ+?~-- v0r!|aճ)A' <~Մ=jP =]× GQa ϝ|~'yXϘp/^Ym b44Lg"L]s (z7D2K !C"kxZ~$>j(K(}>ꊠOw}Ҙt:ۯP5f^2Dr+e3lyS$ï#*6>Τy]nynةar<}*~߸ރ}%u2>lw  ],moY{Zk-?I4ᡣ?mwTY5Av.Qn? ᜡ*aPWiS|ZK'8@wѰ#1 )3Ŗ?zKdQ׿Y9 ?ewO$WIeOO[Ooq,YG9Vm^d ,Ssn=6Tԑ{8a b-\OO/_>?eͥOɷbt[s_ R~ +~w7Cv1#Ts٘y4]ϠtGrW$a$aܬ+ҵw%P@^Qĉy[x Q[- Ӳ>}!WA?UKGs,2T»=Īk`_*C~/J?~ J5IH)Ih$ɟ5^=i҆`Y rszPԞ2ٚ*c]TYJFV v~ <ۆyF:(RH| TXaR`uqul)"p,_C_ .~ =SXHR}+%Z#N1G;ڸhDwYUɾ v"sjDʧjF}UK< ?mW1iWl颅w T;H>%)$K)(ɘ1`ȭ H/eO_ciQmbXnč<;-0| Д(1y޽0y)ћs bIuWTL=hTSx9Y9DѺ}Od<͞0Dǿ5F?D=T"/כD_ZNܤٽ^{a;n/q=ʼ)ޥ E/;wą]6 ,{W6Vc].UHIlf;#k%,ZF)m|;r*AF5k_>Sm娨σ(lg (۳2Uí :̧rV <3YUp@'7aǤ"QYT/HƜî[ qSG]vOl?`+jYH:)X 9zh6CRR|hEF:R5뢿#8PJ[q2ԶS!o6DȠ h|+DhAu-Ti`:#̩hFo%Lq׎&0,/m.wPnm\RiW.zzO aM1Z))I?2))ij HȈI$S*dKC)Hcj^N荍˃%S2{=TWRdևagp(ե?p7$XY).i2%;xo@QkgFb0틩Cޔ|YvJQ` mFɖP{~$wS)sk}8KpRH$:ﭞͪcdœpE_AQ]gBWkiQ=0|xB☒Ndd-Kg%ߔ]Fn>'mLĀqг@2Z GvîUCL{S,c<[KbW}52Meq12 &NGeExoTS"*:.*L"L62dөD%Fڧp#$.Z2$1Gfd6R*P V2232HA+;) ʢZF#ʹVe SSƭ;R>}5d61$i(ugy}#⚃7 l;ȳgOw; w)d)!| ۾#Ǧ"ڭrgE J]0JOr-2C^^/:1po70l?]9$`@)ӟKw4@IDAT>!E'*_O|?~{m|.s>8w?ŸT]j(ǥSR"aЅ;?gʴ8wQŃ'yyru(Z袓џL0UN7tg *ύ %(RŒi .8FOk*L#sZJpQ|hW̛x~/R*KY=p[eD KAn::^̷hJRK:՛16i):%`҉'o ʠtP&~$B9Z w `UA {)dNеǚ.TR1 PaGSֈl;H !G15S D3f_qaRY_JnS** 2lzvf)ĺɐsD} [7#Lh4T!};ܫ("J TK&bϠXzu9y۞D`Td3m|ӐJ\DäD7dʒ̏Z;0󱧢?~\AɥPh#PtbtED%qeHdTaFײN÷/ՏfRL!g9x(~m/͘P*̍3KK@5֗Ԣ+k 1 W"-ulOG9*\A4lN\6h׊a;7 R 2(uăx$:RTQMoX1db5J~`*GͺKW R2QH{E1jJD?( LJ(UMf?+ >Xom=BuN՝^dزT&QAۗg6w)HFEa*&DAKLI P^q2tR@'DJ3Ǔ##>L Puそm鋘6,$ \h2PEn%ie564A\#V/^@^36DQX ʢPA='7s.oheb0il2(I@IJҪ:T7vgyLCoXN|1J]#4 ff(1(-'jRh2:(B_jS;6>4`wTY#!61j1s\P"t$AYTw_h'GB>jًvTGo݆kP>? K%yo=L \٩7d(҃{Q@0, -,~,0WUבaH,Q_eu9 aǐ&gJK, 1$b %2Fr/sD?k'Ms" Qƥ ?7t "7Fn?R/?v܁LSŮg=حw?>Y;{EaCצ /jD%yY1aH~mʴxq"E;x/xax??sh¶<\M ^:;-pSQ_'|ǡ`$i XZ(K'0PS{""xbKx[J >o(?8\V)R' Ϯ#Ĭry.>GSX#? <<RUgfwF/tW(=֘F&h"${- * (uXe{mvfvwsYhơs=AݎΜY}0{;0i` #>{:n "p)-:m*.$ Dے%W}9&? tE8{c^PaףYkGt8;Z D%겨9⑻ND+:=1NVA3V(."`& b@2vh"l'(dM;ZН!Hk2IJ襤7GCEO3螁 n{DꄣD)݀T|]ځ XX{`#JP𼮭s:\H+xZj#@a ]0Қ2';MH2"0?A,-EX:Y?[{3Zv06)_qhf ,53-S68#<>"xB+uĄZ%̿As@fR_ 55sF^iFZy&j@u4) m.>X?bORzNw|7+-T-cݤˌDyE%J"OltQ[~PZ\pxxEf}Q69Fl!G}5{uj#.!Kp(ܿ? -yK'`˘^aQޗ 5>o*WmE@ށ{m\~5 `ŎJ҂z<|E"O~[vLbXch#Ҩ㧿4*ș^>J0~C_WǏ; ʗndN5 KANOJZuWxRtQdXr9y)7ShvT.D|lo'OYj2KO@" Z~tv'c($GxPDwba[hpD%pp7t,[؞(\ -r[!g7r~W[6¸s=?[SӰrTF1 75q?V4H(ԱN0!<EiU\VAWzvI`Hx-PHB1fW7A#Z7B,cc<,@ =fTk*_ELLR33%ʒOc%VOfBe;v(bLnxk.}K@zz?s3/Yf ZUZfF];cUq> oox;/DcGk@#|!FZ/Yq#"24qQA0[X1fk|ZD±ʣLb'1ĥ`2K> RHkȈذngGue$%K~JP0amRm,Q 1V4ohu'6/gC]j+;DGC1:-In5UXԡhD2]Zn Z0;;13Ԁ\Z" lCZ`b@qSYmP ~/_ѱdGMJ(?_X`mNu-8L\ š-$LfNXL}{kH=K"uC;?E +eg{yLW2_Rv~b2c- gGoyN[鼉[<_K!%f$zwA*SyJzޕrTlT!Zz.?{!)%WYN_>]Yu>t1d(W_I_KhW~Td0,thLv:CŤ%a|S=J7@dZ<\ eH1ur}=pB  [/:202mxz#&- GkZ]59K,ÂUYҔc!~2ht*+4mN8#; "26\8Gt&$ es5Is1]$@рeL%KHOP@!1 x>Ss;`d@%U" -8|:UKPc%18PӤ `b=g BZlkLJ B/-uՌdDDF<<-6o7?t'iQ݊͑t)K*'yhIN02`~`c\~!̧[towZ`RmV BTbu*hu`*LZnVI9R. Аqtrh-(@XƉFRpחap]| XS X˿6ZU[P\^=d+A"٤hhF3]iҭ.\0ϥM%ƚX'{'\#HWu/"{ݼ i'4gLY f#hJfa]BiNٽF`I:dd""e l` Ɓ;Al @Æ~Co/5a-fHnPLH ftY@>7̌2?2#&? q3է?\ZJOT5e*LTc},*3i#I~_G$_}K_|NoׂnryH{^P?EKBV3z&}&L*9KzSԹ_H("!1秿FEԪQ%HkP|~hr.8JdK.=bAh)##ns\T?eGwT)x.]ٲ ?e 0"1~$O(45ײMh)B/~tֺsg%a0,Vk`>B'ca5j)*#FJwbpB  7 삋ʦ CWž1T\&͆N j0}*q s/@4yﳌH+ƹ1nW Jr e3RTYu4jH\W`= \Q{B [o;.\V3ܶVآ0w!tI˛[( Yp=sr_sZ? ]ޡյ-h"5? x{:Dk|z9ǀEBMB`;\p j`#@?/mXMM-NjxKC ut0'ӆ'~#J/t_8 !(iNzнD{¬IT QOv Ndd*&Z鉫A:)$D>"WDf \?\B~7tp WodZS:F@d[>kjyx44>;S *@='JP\}I2Q %Ʌ}$_?ik,B7_TO~T zW4Q#x'+[e?Y]K@+_{?U'S(G⒇2{k\+_չ0E|I>&$o/߳r_*%%3 R. Uy93{ WWk)_C~Ի0!5gzN!%ʤ|0=/ jR)zb4o`n³Rb= '<.DdlXIc@"h!b3!ɨG隍83r+cs͞Htf\ia@J"V"C$15y"CiBw?xO" sZ1%VPuk1|ݎEYv&.t_D=Fhtu'}ug7!euY-w'<4wD`0^:wȺѳYl2BqQG,ÜIw Yp 7]9GςuF4nCM7H4ZWJ.͛ at_p1ievJ[t$XmEw]#vvavntFD!ՍnM.=|:HTG=D[*)/g i&0@ca }tigcBc"56n*iSɃJa$ŲFk7ךBPG'ie1`!8@,2)*UĪ@8BG~=j*W" hyXd]q-Ct'غy-fOM[32>I?$S qQj#(I M5qg6Hg2{V#fA5`hMш铦x_! E` fg9hmTL 럑x[sY1#/PPc-E0<1l@i%؊@52ނ([=]ڑ:pف bۗ_ƿ6?V$ g6)?[Wk0N~LOB}Rۏ'?e}W!eX(N-ˎM܉׻q#4OG}7x|3n!M]St,Q3iU\'0鏠v6boa4wSs,HFzLć1K8t*βmbt )uOB[w)x|<}v*TRh)Mhf4|z#!>܌CGC,YA(ܺŭRc& I|N<,ǖUyA78B7Ń*rpĝr$҆ EJ$7Iv'h=}{vw IDv\ O,-l]N2NNOinUZ^OOb};@nџ/vZޜ,(vsvkZ:%!QQ(D<%J[|R^/ _(9ᗿJH*r{b=)cOi:Bkم/yNbɮj(CjB1b!CU}Ԃ(HR1U+E~ ,E Gmmi㮶6Ol̙*LWkPX=w'Zr` 0qHNS:kh=B"G 8!0l zQ# K`'%)]J;J=Pk '`YA10 1+X(>]p3Bq(hĞ}15W=8e Q9. #L>]^PL @e1ޚ:NIG6,}A6dA*\n.GXd "bbWr<$.=J hj @ڂ6c-c:H6":6<g^|=p ¶]~>LC>f3rJZthbIclurW5UA顯1b_PMRPd\3LCDT:-b'5 mč";Ec`%%yxgvea-t؁fK ٦䧸^ԣ50/Ǣ{uSdMaI$iŨPxʋH"/p{7p|Zۙ<][p4"ɉAq7\ѓd=8jV{;B|[LB CĹr+HƿǹAq4v:.X `ٳpưLD~~NyXb#}Uvqm*G#vX3][ uDtO.W5MLd3ILFq?J>x2 v,028O9||ӑ4e"SlIKR+G"D;dx6;^Y.MOO3Qw: b`y8|OP\Q쐅_>__OC^~]6*'SG*b t};xPKDY@~Hk:#!7բ wډM.2KܣI qjq1}8Lއ/Xtkf-6A 퉇Ģi.8rẼH Zxwz9cbPPcͻXkx.kD E]WJ$H{qwM;4o'wH#HG%/b^R 옥[G _Bޮl_~'\$ 8(ڽV ?wܑX'Xaç/lDEi }L+1r(1FACfEDJ o%1:VJ.`Ys:&g>b ~8czӦbP/`}Wbh/TTWery|}GЩ}oz!|IF_/>Ӯ'cgA7j 4< \{nݘxv;~O#|rǀȻpЮ:R(m?)@GoHlQENB>ԗ|+A}k7s-Оo9w( YARTJě?@B*"f3/E3?H~ӖAOMsq'?eQD ^jI-^U<T UryZ lQKEIJ$C(#2%V`|_4(+ .@4')FNB$-iG @]^ ݌D) H)VmsL,AMfs 6OJ;h0Ya5W+,tTSK+')%-]H2!XgGl 3!fd{ NѶ A)*7&F#OH~Z$q7|F U_GP0$8Brpa Caa!BBHjbrR1[@Tt8W⭞qimEkƆvT6t"v;?l$LtYDf|<]1ubնb iN.02닺ף)hmC؀8КHO뭤Ô3'fV,xi=qb^d rDj a P\VZL3-*D.A*b3nDw{5l*AkK+ZqhFK -P!0pYua;@ƏPk9 fݪef0m !HdVwc\5KxZRPsHu`<.릔t̘\ 떢VZhgŰ3v$Nλ *$t;6 {{B3^Κf#@t`tEꟋĐGz-q|n:Q\ڄ+^EXG܈]~u"]kjDSӆf;r:MX4,5[cl/7=j+Fښ6JHdH8y95P3['eIy;O1o_a-QTt;1%=O]/oToMUzBCX:z1_vӿh͍~$Omban~ =uŶuQo?vޣWw QZVKizLI;hY‚NF p½krV[{*|ӆxwgn ^*{Jהqowp Z?=7I=ETcQQ",7u"pۘLoG@ .۪W6y #?/EQ׎7.{/)7lƽ}Jbt6K?x1._AzGV|^Ԃ5/[v?*84_=R?wRz)٫ZiϞrԔomwO8~v''dBT_8ZO<}?OYBS26M4j[5%0E{s$\RMCD$^%R*T $lA{\%~;_TQJ:?QdO~/K)KJ;Iov//O+DJD>EX FP<3ܓ-:o2&HҾ|uWrৼOrE Գ en2Iꛏp..4 &V2Sd=AuExQY_2_9U IkYpp=PhoK>i9Dk6e=Ox mm@cOlZč؁KTCm̉l:Lu\un-_ђ ]Nԣ1n}{1O.Ø[. ,i3TێӠ/ͅu$#@ h\5(ƪvܗҁW Q{ΆkΜC}O=C7y9Åנ,ZZ`q`-#8 C"a*? ̞}1)dJ+.{#]VSs#?&pqwq \ D`'f cѶd08QMbBSiMKOz"&*+а.Aj3 qdCzxyNr._S'rN@Pͨ//\lt=8niDwV9r 솉e2.XB!w) :"ot3|*2 GAk?E\M:O"ĸZFmW. d5K:sb5d` c \|?LrxM٣Oɲ. ={ᬹ磼#NƁ/Ũ1G3N>Z:X>x\t%&ՖNP@qdi8Tޮb e3`*clh82M 0r"7FDv*љ%aǁJ'Fp͜8+T/=d;TcED2a)/E'O{ӷ{oX# ;?1!Cޘ3A W .϶Tq1}`F5c|F"5㿭 BZ9B"{Xz{3:s&$&B]{QRX+_O50,+@mA$d|x[p1\[S': 0X , MTaӗ.\Ve )}2`pdLSvuѥ\Mh|6G" ܝMU((I=ྉ0ҿ;QWI꠵gm hjPQ|=8{hJBO_ >۷  o`o&c<g|KUXcߩwF&[O#: _+]i|5ywLN=K*~KxyͫJxUNAL]Y;w1н<<%Մ~K4A(hwaK=*?,-ܰ>#z\^X^`a ǫ|Is;__G?v(Lnj?!=z Bdt!W{Vat9^gDt꿺N;\]?꪿|?1G":: o_(xB_()tE)mBڊ\"T"~2qSXu&*LԤD[{8e_K=s)n5,L !ML˗YtZVV \q? r]QM\ ap]jE={(\0ڰ' C3~>1FL+ݩڜ h2Fª3BMz@tmh@3sADb|XȊؽ RM+fi˛1EKf#?EM5V7m2g% Ni]EAOG\ފȄX8a!mjegn`@cxt=.O`.QΞ ˼KAଃM[Oy̨\/3͸uD aMO$"!. >_/?@wK5c0 􋯃!<glxUNZp蒰^ݴvh?X'S3Hlb/Ɲj-GБiֿ?bR!n̫4ݲAl "Ex],D*aUVENJHP;Zjh-V߻[0rU]lQ,Gp > 乌epΞ5asvV@җg"}@&fZ o~*dܰK;KSr#*]_:{*wY50t"y[aћ8 I\!,yO1&` 8ch&܇ X]v\x{X$Jpa;61 ^,P]ܧ\,H5&Ld~1"I0F[gߎk7nÛa1r(QuǨݐ5`dcY䏉c"|98QGߊI&O%ɜR_2տ랼GxlXq^xLo'`Z/[d-қop V-[enhw$=Ί@ 0^+sCS~y|nHRvStf%9\ ؗLq/;h-6^+}ck+d2lyQDc#i! ~:Q/3/ԗv ssP!jc N$SH%mqpVڃ=\LtXq҅j @(2lDAP|s0sGḿ {GQz@Z9ja#? wM܁.W M@_]v-0UV $&mA"`b (ot$H%O݁dj_߼՗oYnXC4WĥQy1^>(\q;ÿz'WzﱥCa+]wO}Fnu{0mEY񧕇{ 6^@-uϑE?_f~;0uiXw9YTqۀA}:Oyce=z|Le.koHN7P1T"?ȿ =G}ނ wqw韺 Z.Fq<o4 ,o1-C>&b=fy VU9l̟?=r%i#)L23XL2_yoǒKZk}6bn]WN2nS;d 7m;=YE֣Lt2U isfclОSd?/<3CWNBRL1X{y; ǖOVB 0'EevѬ~jC!*C͟>ݬu(s~1Q)@+_Kloc_?x~%NZ#o$ȗܐDJxj״gs,ї[%Ry?xGuzm(S0z95*a>d ;UPk~#D"%H+jz$:%Pmd@\Thl*?nSJ?D&qI5dXAyV \IP!Li-#25?M"84"K,d@a!qREqFd$ƺū@6^ tnnhiK1)ߴ06Ķ7ݳgIwti$za r 5܀n^vc Bp~.K1) Q % [g#zxwlUP(`z뾬tFf=`Zx-n d\x'ٴfaL@@৴d@{Rށ΢b_oDݶ֧,Y tv.tAׁs!5Llj+.Њ#AWy0fA{i5cR (&ܕE.nh5@]t9Js(]dR( t!X@.k~wfE6?ÔSt(cWXKoF!xp隆1L6%''{՘e ]Lb\@cƳߍ_ZL-UYhNQK1C78bME/1 :n0f@LpՀt ¨ٗ3?3'|N~br09DX]q]Nonؙ87vp ՘"Z nסG‚ \u + vSЭ ͛mk, ɗb1B;_"񺬴<"[n - £,TcCh ayI+)į/ OX:Oވ^qtHWuȧ >2n5(1\on0EǤc57y>Fm Uu4b%w:vPM:,//ݲ1XɎ>Z$$_×˷`_*&q|/WH̕Oi8vmUx1,#9z~*V]C)|#_t0'ʃWonqrqꐿ= uS4eG=$ƧOW] mvߪ^X^o]y㷅xؾ};-_wnn{- Wzs[|Mj:jjl[Gi7soǻ{i%m)ZBldA;]3@n]^Cx@-lm[RWr1W>Q{7vڏ{vcރͿ]tٻu[oP=>O0"-]h,mr&>||/-*n8{Ͽey|~Xk@ȣxX1{y]~3]"bڻm#2rȠBrkp}F[f=^y3%OlϸTfZ*m '/qKQzG_ ޾]u܅j*9رq;lۆm۶PήO j@sUC߱c_Ŧ|_{OO5vOf}:vepR&}ה?WmNS/Ce{~{Y~ (?o+{_M|k){(YߗMB.U RC?\%%l@Ȣt{1kܨbU OGǎ  B_nGHe ģ4F{Hx`&l@Y0h.|߃tܓt-ƈ]LtHP\`NcJNǹ7EUM eݫ5U[ <\֣Nگ0p0>K1 q%@b"tD;:ŊΈؔ 0X7kߨH*mD`GQ2`~=Ng ,}`9:;WAUy' Kgq0W!A:8ʉU,A܈ld7a|.xD)7l D¬$obc"Uu%T] imiNGrxmnCRB8c AUUR5(X+oF֛(C,t hkfdڂ-c6Lt(]`7A[#R3SQ_`K(&m-WdAKs EkZ"v ' 1"7pN34|٧Oq҅`=J ϊ*C#PxpZ+0 B6PuTź*C"i:ڿg^sWWUg1"iNwFLкv쁝q&&alrV@L'Wt1&Q(&JPb'_%-|>ݙf,P6HG5T koS/qM#$??r9jj#t7MI<؀)wUDE^00'֤497AY(/ZZgP&<;+|: մ, k/cc7&.گ!}qADzxuI>Y̲xaZ^D 1MbWӋv`ʺF9Ms޻/}4$K1A\0øE_aVC0BKPRC~_R9&{xOsx˗"aqT)D_/rTnD#-_lZ7Q|->{#HC(nX whG` hlZ:ƚ;qg)0MFx 20)t,~-Vqy~~;*xg{sY9%1K-ܟ&ۋ۾Ck] _$}-,Z1XCewA &ggxKRqB Fäl;|O6F \x3FZPu>7> eqv99`̤E{} ?M#ӫ6vu4Mc][}a~#oGƏ}7x3FWq[f-~5,ĖX*R(YqUQِ ؑTbIKWrZ݇ ]&<Ʋ9"`]pI<-)a6rO&.?J-Z_CO ,Mhj/4˅Yh[)xEi߅cvoưW{Tɳǩ1٤ݎm؎tcasPnv[E-&RER(FQKW+-L͔j9m0t6t+ض7B-M-RKf$3PC9|w0L\6y GUեN-6Y)HGg%0Y nBP\l\{Z ҡ2y)e+q nuش%{)$3- Chq4Ojj4Ѥi2&=gʿ^-7TC9Cmnb+!α&XYWTQ F2H*Ii  b٣]bS8+\tDMƇ.ƬYZMx c1jHd`Nj>?s\sM'HeӦ-3Fj)dWa~{ UklE ;QL Kb--tjtשQU?8,^uVR2Bfr~W&Puҡ_$/_67&<|Px{4 KЂwi%kG^aj4VSE8qK9y\/EI^KR/c6?-gym9HΖq.16,i4:X%#٤L>Q~S.Ree^]76jΌʊ +2qQY6㢌1X8e NhӟiX-.tE8?`3Ns=|,”aH)&'bէgV oZUj|i}5QQhG^- Cp_Q S Ok?P#\X8&J~8[Lg<;+<@0q9M{PgW=x#]/,xc+xxJ/ܾ`'C8Sqw<4K.{N2Djϯɍ7P98 {l~ȵ\zL G ZN*zO:C&aovaQ xt0`?k_C?@MF &pM_Hf % -dSROIFZ(+[~_*JK@BN1&:BiPܢh".0'ߟMK͝WsOk|j%)p &>h/z"Չ?y OJWQ|Ko+'$ xKH^ M=?77eK^&^We0ᵴS^ $H9&%,UV,,~ϗhvŎ:+x<4fVWV9M̚GOm~M,uh<5 "4ӟbGi[$ʼQupEa"{7x%AK߮i'lTT|!Ͷ9Zhj|j7@A!e=}h*Ά/n.Iew|:xJ݌PUY0:ĂT:?aD/h7 w5'#h0.7Ӂ  MܐڟGz 44hiN{ˠ=1wgZXvqAvEHqZ8\vnoٛQFZUq`Lu$MpJkMz MZ9-qfNĦV+{nD ظL&> Һu`o;hNZPB4עGJsЇ!& 9c[ 9mgԍ^.м&8ISgH#.c hD%"Ĵ E@f}܇,jkR+sHwE`BXma&L8˾~1.ܛ'[1>$URnOEF_ef'SU]g6!-'ʫʩLj갖&yB 0ݍ3ν SL}I| 5n]Ĉ/m)F#&La3A43%1pw] S][Úf\iN3%gD/+8ㄑpz"q+eViAm ;I Z('l"JSlm@iK<@&2q djh/]۬a1e;S#0wWkO*|kmGQAN !͵ވƈf7ۄWyɩM se_X}bS.EVM",Ԋ0LS{ BKKA_V"7bߢK_m3°9O؟o~y>x@]P=% ZϥK_A[/Mx}Qonƥ UO%r^bo5v}_>f^1mҥ.vojeQh?.DS%JZT7x1א|e[Rj~`G$8U7/ȃ6fC2u&Iuc=#sF`jKKR4E&q=!5|K_xss[qd9L+68Ґco}'>_:Ud_lc9*d-+>wŨ15:;H7U(CD_?I?p~A}l) /u8]UσOݑ_co><@d 6/;&&&&cvCpUcPrC-µX Zw~0w /w=żBU MfwN; ^&<21o -rKodz턶 "ߢ%g?zci[_EWR\=7` +qj=_P)X?v򟼿Ko_G_Aqi~KODu`R5g+dtPFmL"ȑ2k^gV ` Ky` ߁c[Y`O@)gJ{)A6dլހ/DJZż6&E]1^RN&ul[ېI$uIK~^ьZ0vjԈP\ڿ/G_LEOCnIög,B57Ĭ\,MF/˞(y<1_2AbDS+?"qn法i/$HDkRpLx:}e|6MU)]%^ Er2"ўvX B[/w͍83;-5Ȣ%jEfhV󸙚&Wr U"3 7S^[Lnuh) * ci=pdeZaOV/B"eX/%S^T sz甧 !qhU@h~pL4aQA_ME*xf'2jTw M؛yg H)ZG" Ԅj#xbG4X]C77ń?[iϘc1ߒL5-1Îb|deŴc&>H©!<qq㖼yv eOc]#ynґ6AӂAޒvZQ4YڪZ6,<7HՇAGbPI 5KJ"8v[9D1$羉墍V{(*.4mH_MV+\!V~:MU\UL-hrx3tCid:6cxx0DZl0/HGutcWmm?NӆbnT,-fH LQJEqlK =A֮Y_|Ϟ%g >̭6Xaeē87>@7D̾Rda# b6]]UY"BXJ1˗*CӨ4V6zxKhT'XAkchH[ܥjqZ`Qbd0꧱?Kނܹרk[NB4 cb΃?lR.R__=ށ~ }%޷7Vߙ5ZX@`D%N[:z}+xW+/>ZZd\8v#y5$}\}=Z%s/#nWJN&"nR'u*BP _R>_ň??ܧQ{ȝ`B'(%\1-' C⺣gzR!.Kc͡_P02\r'7K}tR T2UbOGT LvN=KevٞSQL >zikO?{ @J\)W|AX~@wvLg(j{Oi!n9Uw(SGx T= ПtQb&#u$r\G?2`Kݓ1 F(ATq(RXZIWEzYIJΈ B ◔&3Yת1ֿ̢PT_KFK(m=N0R Cկ_򩬾nI%J໇lHPy-s:qE*^(LߤFZk-R5TXm #/zRN|!PNg~oY+|Kisv#aaiBuMͻĩ~>y>OqGmwdqWf<.-Cք̌ARh~p0AnŐ4KEbK-7PB͕zfR)C:Fv= $L싽.D&Gb-8ydXh.|p44A {+==mX/X$>[jP 6V`b6(yRV*܌D&TZ&I[꘾ض'7 8e7иa-X4F ~/:p9V܄0v-5U虂7Tb]^+zK *47_Tx{ 7`N,za A;} RXm)l ;݈o'=HiMBᔓð66ғR`n;"Yڝ؄8v%c#c0`V˅U85ڕ_T]SCb?[sۚifo"yG#"P4wHgUkPQYJn[aȠ/'+lFLl4Z rR+yČ`S UsF>QN6+B3zmDmz >}ݗ)h1 'Ӵ6#61|-::BPF/V]=P"$ZN۶lIܜ *iGA.7*K˩Uւ^Fww^$v {$Lm+ JqE\x(ՂzG5= gލ6"Obn4줡M* -Dj>NUr\Ii%B|%JG՛5sȾ=xo?S5MdN7 Sk~w.[ U5xbv8e'XǓ/pQ䇱^8/]CܴU 7**I 14jT!+'Jy~eXKeQH4; Sn7/28vT@5,g|ւaaGB]E1r/\|RFah 2  ¤<Lp0' %ԥ*g\|'i>O =Գǁ<9X& Ye-Eohyp>o~'f˗l WGԧ^ePaWN5L}ţ% kGYDt8BRgc @ J+ ??X ﹝襗~+RMN4̙Cqufck_!, Lgc{ý*p4F~QeI6I{6Y=\WONNEY+4'h[/}Bפ~_J_=shF:11[Mzu!kOǟA 5vbƅ /q¿\, BmIHaR)((A9]Zi!@_ ~pO4֓ޕQ˟?K2d|R~U =-* 1ReՉZK$eL"tR_=Z!/TOɁ _1o4Ԧz2_O{2TcbYȄhpzLlNLda}D~,]_秿t㖒i,ܤp^4/,;&mhw/!j%c4cmQ3Pȣ{ yhRCSѷOC\ԌoodOb/8%ܕeQc=} AP;BkJaiCrxC[u9,Ԋi#`2p:Oi0 5&zd޿iH7E\V\c$4Dy&_x96"NH]s}0fj{iC7A9Z8Q4-Qz wZ;1nϡ̞죩fn0}NI.t-ЦmyE<'bkq#v雷:jXP_v/,GHTopEqqZX&f'whꖂ~3XF@;*[10TnS\S0*MN?GR+qXdco0!c((&LIha D g\IUhn͛A_Tn?Ԏks5XL>I&׏1,Q8"U^Kx{|l\qܯ _J4oj¢3<]? qE[Sqyǝݬk)57oYiSW𹯝gW!.q"U&QBcm tկcד]ߦOΪҟU @Mlfe%R6Achxf@% 2 xH3?֯=oTo jtV~vuHAv01mlL2 JbVb6aP2Zm\1҈?0*BKե?1')w 9s"Ёl/?fYpr3Ym9ˏ|cN\$_-R$Z@o6IN~e+'i@??,^RwF5͈YE+s3;66 EEy_tt_kJp#!&[kMv/{:OÌ83 X21I(E[A5cE L8s4zP'&o"qxUa_w'5<0{Pf+>_ PL+^4fa4GG`՟1PGseίFӉe&πNheї(2aKq $P3(ҌXƓ-H&ZT}x$nz,Y+PUᢉ) fE]4 Iыn3}LuԢF[@lm/Bop1!΍!!UކFj8 S3jބBjPĸp 3Ӝ'MA!ilRlɨ۴ӏi5p6VcܻOkÙi!kjپVɔ=j,kj}1"}4GЌvb<TۃPG|eԢ=( r,VHO!BB}&l݁Z Irh=GGVl&3]ɡv̴9,9A;I1rO9= rv\1F;6qZF3ehB96B0/WD)DGyP Y2#|*s+e 2 @eQFfļ S**J&~tt Ծ#f`OXɍ=j~蛝s$"#J* 1C+ jݔoiF'{x$,'F^س*Z8B`*+é?QU݈\}oq.ʂм-4s%V{1,yqЇTHX,dzކᙩZCeEDEeh[Vw&ˆh4DLxTLĩg Z<4YIzbrN3_lގ)T(BMA=0=G+hq h~D)\/vxB+FF3F\-fl]-&09l*Keݘ8 @ՠ`]C:.ai m#Nje98 cX/_0< M_bKSj߆+.ݨVV]m  sDGzxi2Ӵ55HfE(]iomX? xDMipp"> LA(1B;M,ۈCy7%șJ4s# ȚV0BM?ړQUEa.G!@W5:Vd477_”Wj̝uz*m :X.O;[ GhQcq"8FLvyhbM0N 3ij#=͈;&q5,86o+D?A,ٙ A4( s) >1E)E3BSB49/N-/&aј0<<}~'v4Fc*X'Ci'\+[q_4 4Wޓן8IiǩbKi#d+da?p%_N-y8 `?/_t폿Օ}\v '8a},Bw'NGGl RCH͜i {d)P[ 5;KĴy"\ћ =_NN_Ӎ Bgfmo'xg2'k⯽vɋ9O#!h\%P_VL{k߲g/n\Th\ZVۣ3?|"V0g4#N$]R)=|W_NϦ``ɨi c#X8yVЉ׊l6ׂ-]9B<\Tyy͸礡H q z1 %8K Zޥwcb59 iz[%Ow@oqgxA*|ӐB7Op݄~le߈8w ^=ƆhS?㯓"~L/vT?Bu:]_"7"-ᰀak#k)MՕKCMB*=|#I&u',,~K!rOxW,!;yƟ!YG$&?Ն#W2>/?mrJI)M͊䴖ZkĚ{i\//T>Q+U)QևIXJ x;777'd[GϚ 8""?>`:O_phm}l-j- 6U Z(7h[%(fғa9H+M6S)5NSK&`Y-7>MvS1l'_EEpdBzl0Mz3<; ߚc?AA)X]eW VqT'>V=j0`9O8LS[*4HjE0O'DX%.8v8 upu7KS+~Ho6O[lbpNx裩w_ :> VjY!$LzE;=d"x#dRGZ7Ě(*kI18o7^ Nqs$}>Sh&{li%d7Ovj~;\}ebtݎCQ /j$#'dhbqc>*)< Gb6[H$A 5D&&TVTœ}f"!"`R8!K~d:M3`9%xMܑQtRC|;t.JL *s|ԮS%rS6 ʼn\PV1ɁN,fPZRcNظT4wM X44-EBͧQjA"4/3"];O}wkȷ!ҧh#&ڳ9WRII M7+j`s`)<ۿŭztD8Z6`Z]F} ve)VDӇ Ը%?QaVmpdFveM@\̧( $u£oU72W(x"϶XibX :c gH>xEE[yYc[rvO>{k)X;<:{Lgj:͜.޽ gRV3J5G^qGQJUa%?Y*p=Os83c&Y?6.8L1ůQn !y.q`5:7:k@׉MKqOϬ?mݭ=ƃW⃻N=虮jlu,~o+}hu翮Kb ڡMw}ca͟c:h*T>DDxb-slݪ&]jqG+%/Qޅv˰},, ;td ͥ[xc7{ȯsw?Us?zay3_ )W9;寵߅hʖe˶' W~8shO._ֽqk'|9Otg8>I3v?͈KƲvdǰ9I)\_O*كto7nglo^ߵ7_%_ C_RG?6F,2]}}8oe~PגM. wƙgrI̤J6eQ*/?|7(G˦C0Rː8-e~E ?CFL#$ t")We(LQ_9Ydj+ 8v<%U0Vϯ'oWyrZ g~O"?7*Fk7=L/tԡ!Z &ٍfb,WrN(ԢJ^\HmI' {%恤j=)ObٕVx_ 7# ?QV#$B #L렣k=q?Kђ;vً 13WEE ^U5֍4 JE~I `U $1ICHPlf >"CMNii訯A}d:]QFMg{#B{#<m@hI j0OlEȲ5'y]exq4":a N iPnp䝸NؘS~c#d8t:>]OёiQbjyy=4HLfpӗL5U8Wm f;c}6-'pD|Jcfy"CV>s`}4iXZZ4$`|(d{klƶ="bQH߽O ou7V jjC&UTj@5M<>7Ό!vw^].t0;OZ!14HGhtؖRjel4c !*>P;$^J[\MO1xLF +[d [)Ji&hUx,nh^׊:jO0AZ@bj32g`VH(&p>81y9 O ^ Dk 2- (FЩJ~"Q6~_>Adde=yrhhO"eNǞHpl8Z6{ؽu3Blf _5(b?}PpM$eF*l?xꔿHJP* ]~}GoFM`Lrxx#= a#a/T?y|1Ի ѿ'b?~ׇ>R_|?/fwE˟dqR u~1lD Pe2RsF9?@QcE } 1.04!'7tZϿ&?U*y~IxVTK5ߪU.VLk]H>u_)[%?\_6Oc"'Tյx_I$|ɅO"炬URl[}htОת"UV^E+)]3#eH@ ٷ T!56xK/fD#K\pW(َh-Oo[aoLlVp7;l%qud+6rm&ݎ!eʌCOJq݈T;: ]Gö'M[pWVMysC$!;7crP5z;}^z$dƙeXK?Tv;hqbŠ)،)SOKb\R3Cc߾ K0"> qNbnDѿVAFW#";xiؑ9cR+?GV6V%M_Q3X,kƩQbэcbc¸hR&l4oLO3"a|`TX|zEE7]禮`aZSͻUj}k㳭] nFq }[qSEPWzMFtn͐6&XQp6*,E"G<fVVT$YMQ%9vrXZՎ^KGw='-DR~̫@Fj>!HZ2ftGm4[9;AE#Kp?P"D›vk!`LUIII7XscG]iVy*% xT A & >b15dڙ..1defҗ.fxoS{z|Xd,ڍ<?1I< Gˠ}I~IyD}'T{c?SH#XrV71=eo';t%dJG8cUT;~zfi_[q!}\<0=_)GVvɐ2g0VZacG\i'i?l'}/g\ W~  .5 Ӽ-iHin؏ҟ ԯ1FMPV?2+j?||zwT(aoP'J˔/%J*% u%y(:T:Mh%0^?Ɛ8H@sc,)#-o9DUo$>F&3<ˁ}G^QDͥvKŢ^%c_VU IAefbJ0C|eY,#' h6C8?_;pQ9~h?Ŭ'q8@FDuosqf4V &I?V 4װq'hmPȓ&kGa j5ٖUgwm, <|ƌ0G qVntj[ S՟RLs{.DFBS0fon xԮ݅QSNJ8Qpа{*`AM/% v 1mm4S^ؔ/5wW"[,]b͊EؾTphnD_VvQ :5Mx8%pPӡ򫍸xz gT䥩Jr4J K g6}"lĿ]NXSC1fʩl %TioVfr";+(f;Oj*&2NuTaQ IŔ31ːe5θr1&r#f}9m Ԗ݃7MfEэG"kˑ`CK>tndUCFtEVK`MBd&e#xhuE`AϿ"dтWSSa,OrFgO5# (2M~V־eN[\T#PP) .}G`!sLMG@?M""W6i淈lubRHve|0Nf5:j}+L 4|P@))QJ /t#5~!RW`14  4lE?%HҧU{szyTf /ӜS4،4*⋍BAW!_sC2cJ38o_r"*w6l;&ܽ}U^ݢOGT^"B8ZafFq."p Sz#?w/jBV gh#҂:҆F:abVp,q DU#cFgBl$h4.{99;觌#:& #sM#/CdDq{^m߂vRm0ӟ=" ͛rԓiR Ãi;D蝑w ][PA]dt<&"ewP`2~p<][Ԣ)ވKFdaw fC0{+hLyXLџk@qi| E만C=mIi>ǵE}Ɨe&PL`+ w4P ߟ'q~]_d urBpjB߁x / ϒGe&/j㌟*ʇdT^UUL'P#|L|nPU c:S /PAJ_`䏒O#6ou(eN&!'m@MH_ML4Y^SW? "垪q*Z DK D{AP^+jto-qmVhh:E-P/ S?=\0ǣOcDE= !-n\/ A2i݈2##Y 4BH,uxE0m q%/D??fԺYԘ"<jy*ڳiH b[߂H#PC}4]E>/̧izܟ߄` "Pj "<7laM8~+)`^Gj&B%jyp)E_=5]RCZ"NK@ŶBLNs Ut &PՁP'-VҢ"Gfe#kte'cfxSI4a7J` 1/۷44 .$&0OqVlʥUXK^}G_OɩT3rFK!*†&X˩'}YZs 3!+Ca"(V'ցYr{lF^hڼNkppR[+vv`܈;[΀6`'VSѬ>%bfa4g?:&C[P} zd"ZwXA6 "T,oftPF y~ 5!wVoAmm5BoKA~#]eG}SxhS^\ک9IYDamC^嵀GK4eoXvm6GE0a%%jZWVx 2^6AY?jUQ#Or zt4{1< (Yt$+@ 66:~w!I1MUp$R6G*>] ,0`y][T ү1Cm'sjLhAU QQ mmmCtD2XO"@_!z©h~3P Q^ؕ uK^}\e3}fg{H! 5"4vի\TA){IB(&l23;&(B$;}{}4G)I2KI;3I Hs~#/ [~±#P=@R;LA+g#a̱UϚͨ=4-C &wS~*jAm${ kmf(o;ZaoEIdY z%m{rvو 6ECHcnCGIO74ՇZ7rFK+|n*Oh$ _7׆1V,21U``6WqǤg%(໬%*iE6UYvrFU ^Dۜ[1 ?*IV٥f,+`[šV;@+A+@a :cѓݱa!% Ib:UV[,odL'XAX*gP BFq l,4hтg_@4oHp '[|  |"'bw?x'_6>Wz'௮OOoؙ7_}cf#u@ P2d(OP7t.jĞkTZܓe!px $:~tSV'RuQ׿D?HBoT߃* ut_Ib.W͓`SqykŌ"?Vt%<+@e-y=O\ 1Xdk{nO'Nbb";m–Yuuo৸ %Fsy~eJhe ϫ7F:(NSnوwEGQsid9`ٺ]~F'8a"&zq 5̫IA<߸~@6I6k uv!vߊG; ze=^eȴjKX} ߰dpI:b-S2EFp%Hp?B׏٧_'*1~B-ʓ^>0#EG*$b||}/Ń|L4GjDU6CUG FZrrL(@QƎA YфlaW%5j М K\  xid!+njyhnoj<0k>I AVg7ΚE;.?9pT* 4DɏU]S.>XߋJ\1"7%8}vʅ'aC̚˭yѹ 0H|_9y:}s,,#~{y):{--}y_=6 G\aE|h,P&㔓Xv0m$k/03G@M@T> Ki +$GN.:v񧟇Y'YVL| x=_ÈumOЮ6TWU"4LKb6K~ʧ /Mv'}VOu,z_ C1S|t>J*h4_L2a7Ӷhß ꠩hrEbV%%T5.-=aZ+zh#!]@o7a + ms#dR2i`V XM`5^ND_yWLqqSJ"2mǽG :+R-+V JcB`99ݱ,9u(kpw3/E#n샏AlMR'VI HWG"=?,E(+(fH2g:!Bd=%LBgN)AW5oU؇d%Bxxk"Bıb)AtY'e7aH#^! RD2 {̟6QUEuIi/( yHFQqJL羚*)SK3sC-X9b8*0_uL{-x0&T{WGT_Zbַ\(lB0|?#C-־Z,ZpGErjiŪ?Ryx`#; d:8z&|_;g9\},@jv}?A?p}qE֖ۆ$ē4iIР=)TLc #MRV䚞.QM32 ǢQ*:To^Gkk3-Jr5Q.kc5dHδǝQK+n*l]RL!iyCQK(8,G1-( f2ԠB`&rϩ,W!7;CԷURhA"UzDlЌ݉8{h:mxe$W A L's*j‚Q6h6= ,IǞӝQa')?JNck7lx֭4ܶ=u1Ψi_4!{d+_C> QLWG%de#?#R 5&!xֺ]gQt(3K-ʡs'`%W!F#& Myly#|~WNfUO?,vyKvT>˳K*h:D>L ~2 ӏBYUkki 򏅑55X,aT[(ZF`5YḤ*Yk+ZPQdJ#87APqZ nz/ݏ bkcw|^_sK 1fʄ2nɂ2i 1H3*&ɇ"+QI6] BoPo)F8XrhDi:%SX|o17XHb2$`G6Fu+[Eѵkl!XNRHR~%MU=4k{Uyh1/uű',d^-*V̡3E4(ƢYA0YTSAc_ B>G>>2 ڨj.!#o},@ֿeF dGPd.}hx,I[V.iL)֞H*OS6u7dGJh"\(X%9_Zr[Z.]D*Ao.ȢRf= Ů{Q+2:Q^FEE$#iDji[x3K,auXԂ yd?eYj&Df sү dK7ҼA ?Y8I*Nrє1 G`]AЀ%;A(} M Q.lZ{Q^P$EG`} .b? ,L3zFb]U_.ى}Qlqpx'𵻖sfTSi,X\.DX#"M%:/fR Z $Me̹Ҽ]iمCaCrЧꕌ#hf' ̈́ۚuD]HsCȑ'c!PLQqVolHq_F(` }7~SޞHEU#PT213ѓ+N 80b\5lo O$ S<>\3mmݸL/sr!lY[*x Մ#vzqj "N3wߋ$YVI^KL$(-aXF_R=w*KP4sIg02ˀKF FsВ"YsQeNH|z0eQ*]p7/_KoWoWojЦ/]ȒE3نh7\Yk>SA#-4@3 0CDӢXE=Hd_ C?~RD8b[&?TXi\@0|CHzA \6/<ɰdIⓕ #8f.[ivMLYVlG~^&!M74=8c)XOf8/&|#K ?*GBE7èoy( 3Q|kp1qK`r\kD}.zrxa$dɢ(c _k7)GuWAhGj@ @RA><4H@E GWXU_F =-h%*h&*CSӆz,NF:_kFOV E3H?_fw.kiiX xi:ޥw/j!_o$,t74aL>bʲq:}t}1#eĒsYqF/B4gh%0#g'Yfۛ[7Q?b]0+YZ!IP|O i#x>i6Ds(/t8+ 81׺V\1.\1D ˳0/&45bA޳b3 ,Jbڬ1Ɖى^&/O}9bŚL(1 *+#g.$s<ʯ->3h%#M0al}pp.oYE}&d`yP,# 6RU4z?5Oz>V d`?<]LzOo zI Nhc)2T7-%VR. %-A$,I^=_LD3BZS2񮞿&!'-"]iuGz#m3 ڛnW߫-K^ZnjPbS3#RNoBdBjgC%C˓$:tĉT`%@ҔWȹ!ՓT Kyt,Khܐcx#UnR&\^Rn),ty[hqp͕.fʘ6Db\=xw4:2WP^L |dY՛>4f=֏>|ui^iakȊU FIW}܃P8} 1 (jjF$&OK=(P?LI+*g}Շ'BD  Ad!4H@0YFU4!ciSG^ =[@/.oµ߾wބf4&maثprt݀M)?|TI(i^gZ1wx+!m:d ؗPw 4” \'+XZ\La1L6$N)3g 0!&h0`geٴ c+&#lE?J@N8kf(?N/ȱEcNMm}(s:1iD!ֻ"S[{6t苌r"͐[-ԃlRȋxQfIpb-VىQքۚ1rH5g'&/1kyC>L`T,srr)Ũ*..嗠.qLC?rFidm"X/((u.e{矑Mz3$>]Z ?$]?,FAM6k}Q&cİĜ}ŀ?2 [EʌT1z`B$jA-HZJO_dI˟C@3a4?Y. '>nD,؃t>{hIڪT%qp?IX흻v kZX?4+h"#K^=jnY6A>PR_J>.^?]ԬOz?tDo)ҁPC T;v!gBf͠G:QܫtP5AT HBUli=OU%BDoٻ :LKK:U% %\8@c.P1Kҩk>T`t+#,|8US 8*OTFP -O=MR?'}Q $C׎|ae,Ud|0Aof })Ҋ߿y]:  M*]^Ka˲Dm2;P@_P߸;X<4uv07 Y4  HdXr]-̛19>"piF ̬ 7iDS؂V6L|G(Y.fhb&2*kc'&M~D1&/lŶCzmS褮 aG,zmɸqU(6❝^8obLLǣQ2jaHe3a:^-ID")˚&4s Ç%N1Ir@ɦ~R0U`{;[kM VӷXv9edҴELVk#JPԟ@.):=.4/[ /u+Hmnvc0XAPG郊t(Fi"ϵYdeDbadsz`-aգ`dQ{}'o?_>R&|l> QN> aid4sǖ((t*&k`',MFabf4X\"as 7@oM)YO<N;dl\3AAˎ<& Ve&CL| O@qYl%~JA/}wz?]}&3a?R O ZgoE]䚴?m'm2Kګ xj]]ST; &TjOh"럪8z 폒ݫPtl% ,8Ch?\%13ȹO@,) x^3Eْ HLFjIlUF#fI^9w >*@$Ņ|H%BιR2!*3oe'EF"}sqM(*+bdx~n2~&`ҷ|J̞3WՎ$lHvZPTUlpV\}#O<˚pu-4;qqfrQT ګæ?,a7Gt#7ǡh *vE]f4 S(; Vh?N*  *KвH"F3ɺFiAVh 8gIlO\+oF]kxh)H>4PA^m*RQFqQ!kB?U(-(v"@TB$ݰHa&.i6P[=1&F-6@ȤGMMQ=:cs&ʌ+|4O_\|XH% rvcz";)'XFӒ~yI3C^w7Z7"'B 4"8#۠9 kxQ}01hbbJ¶7b&~(6 R7g6WjK}>#C^18*ǷP22a5RWͫ '4fZ8YiR DIhƑh*xWϟȟ%1]}"/F_'_5m ȡ׿' yK,ߴ8)|+ X+/O5`X@B)%2ëNBɉovU=OU-o:f@n%C3+YGYd”C1ZTuKD75bWx9 ͳ]!G"&@FbIb! ^GFŎ[vs\8z#5&JLiN" a.Y_Af3@U(`Q[3yEduཱུ4a'kԽL:|ھk~n&v͆@De5 (0EPaN`sk%z1·̱A8m#2eL>?&ķnE7k~});lW^2) 8)?@F4oƌMQy)M"B87/]/8z(hŗ/?.p*lDM>nK`RID,8)xu=VeB1pPb cI+ $pJD{:,7b,>L4/_߆c`BL4 Ie|J*rM,voooGYTT?p bu_K?Y&VR׾EX0Q f9BV*mr.m<;Yg|];fsbZ2тkE_:ƏcqxW1rhO;ĭzj \^1fYg3ʉ9Aif*K+:]٫d*>_W}!cBPT#4 i=1(m›zD& pjF&|C,T+H-BRoV&=Y?KNm{W_TU۴ˤ~ ZklƖ؎^/h?H7oF9̯SÍx5^3z,|+,,Y1Qjcs(YDCmN^FH elL_2M?ĒbF, n2?',3llGv0J];\\ǰ>jϽI'9'H&# 䗔"D6PAezj\sӏQ\Z ՎGG~((1YV@b.V?$>N$\}c(q.ĬODnq%A CdX?r"B#'`Ąpu4aISAi/rz);OJ/D-AJ,NbaXiFҋ4qx'wM+L|O"||F`4a*!z2mQI3cFgbf\<tl##nNKlu M`(QoFVm5`zhy&/F695ˌ~Yibt67:u 3 EDbr CYaS@ڲ~7_ ˤ#ظ<* <#AUɊ$}P AyɘkIÉ;MleE3 7hAeJbHkܾ~2*u´S,4G6L'f%biưP@0<ݲIZ7x,YJ+Rm?RO:\M QԥƒԳLU%v]J*z;-Npc?J?}4OڿlKueO3Uf?<1B4CDST+]Ox3nbQ3f`0>6DTZ򏋹j, t*kX. D%$LQ<Ҧ?/;BޤaLI \IIj?ozkdylʓ4#B&LA`ǫ',s0<}$?\x3g~ m**L9&q`9c&&8u !*rGC3X瑦T>~sF?Ff?)_ӍƿUl4D (%+r.*ĎxI.Pd/rλl " J-ʇdz$)Kh Ҿ?oT: 1REL &f!`Env鳪QC3@ MU9fZxG*V&BP!x}^BOg+%րůN2k/l< lxiFg@yG,a)LmeaE guҷvshTQӢaDo;Bd&C-A~ 1/v5#LNQ9|I9pH;o2L. FYGYSʱ9UY1 _N(U@GMD]x_ ki ~t;sJҬ’ U[(1"KoD] ]BMrQTLfbyG4bÛra!.DsK7L7*zEČW ,4?(e݋έ`"'iq+yM~"4G\ X|EZ S,$Ǒ;7GC Rݱ~9̢/4i_-//_]&u_@' ,w@4؋N==W) jȄw"(KaeXVe tf}),UJz2"KfptAhC&OSt[* CG&3ďm '̽~?@ur[- RD+2dMuuo a%`̦ITbk)0L2q  WI?A.)IBIv6<7c=7.3>?>~xb&s5z-NJmvhL0)~ b_j]* vP]i'S$1U7UQ|Jo#_z^zR *H?˟oՠOI>Y-?RK&R\#"Y;SŠPXLqAaxSn'-H~&ER*Rϙ$3 Ev&. A13KJ,tv5!s7mO>pa9sP34*FcW:;c*C؆u0e444a՛ϡ62Nso4aGFC1::1 =l\vg>{a7ΙSȼrww"~l4%'xa % !_ V];^oo@M0#GfCYltw󰀾0L>w]^C뢊$vj d=4b~q WoQyضbN`$[BӁuA\XmCK=ˌeJ j黅%&L!0  tL9.б6X׳ C_4l4Kg<+34D9}}e5a,h& 9Dio33Nk** 4'jQ~v0m\1R?G@Dl=!uW;a2ju4H2;fs>7,P7d,w{VԉROXŸDS4R'(vWI"{]=PIœ [) YdϿ?[.cMPCQRKi N rZZ~Głp2JIu"3p܍J_Z^:$V>A9wG TghZ0G̒!8ibH2)*,A53AVܺ=QP`eQ|OW,_>n2&N? μ ^]#7 Cp7~}op-?AÎVT8ԭ JTyO3AE+Bl_JEA(0A/|?2Nǟo}TAO} c}5fP{4>CfiDԗJ?τ;н>VͿ6@J^iG+[:@<ԀH[VT:NKⲬ=a9_+ / _"MUl>%Б(v+ND zyyOlTrqM]O⾇޹ah.1l n{<{%9JSPjLW%sDgN{T,3X{t{Tr~埩CbҞ*u)@$W*2uq&J+S:EZr_{ Yڡ-IvjO֏ӯ˜1|KL *ԃ3 eؔqV3W#Q}$v4YdS)Lw"悒ILUtUh./ !/:̪EwhAo "izOhD\u̗^n$#05Mޠ`3矀9dKd@jtśo,ȑFK;'ofFI2YXYNħ?2P zK@DtC:ML֣pi͎O`M/2wg+{9#Wo:?<:a/}\M;,$!4jpڏŃ;a{?c؃iXfDr!c?][fs;R!fpbŒc0"_ZIn,>8}G=vvyבWS"W"JSid`uvH%S3/ϢD3~!?Ȥ4zKOYW&n ?vlE;ő_Sƣ}T4eN% kbRlG9?Wt %UdqJ13A*dϐ}ǜViƹ /<IeuHv2?XdKbwbk(~@2,W_Z+?=?]_Hu$oC@ֿ%1O3gӺЙ -h䄛,H%ݞCIXrkLS::Z 8RPX~;w:}8ٱs(F,mb.|/B8w|5n)vlFW"+3~TN|&{ig+:Z{AoAZ[^U߇>O3-8fM/=׆Ʌ90 `X! F[J#Ž`ݦиᜱ p̘J. fUg1Ba.q;zCCvR!zqhx{ *~\k9}=1g;xn%oH7.X$J|pd p* L^3'"5on "&r#/Ȳ;Sjde?ADLGQPP@,4Ey":~ XV)TM]hBVi }uEHhng.+wק5vREW rpMn-{1ibiIVL6f'6L{̈́Wdvo?|Kiե__E~Z{jq ĒǸF|~x?0n~//fB+[,.^t?ݠIƧ9(ʳـ /@ד_@>>\?|EW3==W_Ã| 8f۷3||^'{ ~tEw<4$pÉ#yk5Nν#'p 碊K2ZobșֽŚv~L~6[gGر>|ğ>0~r$~$r>b~w5<\{OW " 4?zO~~ڇ_:obs 3O{p~OX#/۟ŷ'_jf`1<4G7.E)u lO=Yc\x_؀ӯo(zєtz=rʏg k1ٚ\RK0+D`Bi+Zu[__ HR @x%(@IDATҗʟ 5X8:{H~g}{jޟCx=ɚ!Y?oyC=j+$uy 90{TIdń/Ē'}\Ӑr0Ǹ P?E&%'2>4.2?Oaa=uD7R/O٣3kQuh/k;Uz֡/~6^W$gyiWny0op9O҉4dr> sG8@*!iZȡ<ثI鲕]&MleWS$oSjb<9/I')Nj} m/{3d2oQbNP^Y0J"LUm?"/ZM[ zl/r ;Ѵ+?4k{m sQu!e;n_ x\3+g/fN#ͥGz<<ߐoOz+n#.7ڼy%qϧ)eZzWOy>޹hNs g%q&F~|ڞu\Da?GY!_Q)>UqM; ݱ{=)|݃p1I', 2uIrQ2HnL̜Irư\lj9U{~dm*[fL09mMc$y\Rb߅)HI_$#7eSIpe31g˸ʞvm>= V%v F_ %;"*_f)I,*kïga{\F |(L~u|0?L̂ect1=4t ; 2UDzAw2UHW#CɤʹaܟēT%=/&wh;wkOe/#=)X.{ZҼ1\|j>* LTUskI|_1Ư!T4fvx?ȼzXZF<ƓWƨ7#O1!ɨ"*TZ".0GX,=]:cAL(ɧ28W[/ٓt Pf(6#*(LFKuBu&}O;?/+RҮIJ4soYLQ"ۅ9"U\ZN Eimy#\ͫ?>hbj߲ NR4'qSB&V ߭T$O!L5@YOYhk@Wu$#8}wP .Nj*'ÂNKd< 5j@D8R~VlY+Y^;NܾG̢a\-'FVna0Ah*@7r=.\t"$`+c+pSi%{”:Y IV:G#q3yŵ o1Z&dǓȥ3G"B/Wn )UMZ H?9>Npu Պmp74zӦsTATT ¨5't`w ET2H1 knY14v:V'+I5r]w^>Ou)˹Nmd9ʖb襯,1'`P R>ѬOGS}lW6,{OL rPh:0oꅇFu$?#߁믹N5*usuhAEyl\07;%@^_7-)D>b {X I6lX l){t9_as ~pds4Kfhv7Z[wauӷ?x4]MN2^ڛ;۰&Cfzp)veQ~$6޳:No<$[7~Tu''Mv<{%rݛ0^[_wHks,~“}`Esoz/$!$^ikTAz 4BzoΙ ~}w)̜9S9s\"5Tq5do̹OJZ R5N^oSvoKMaBx))p"A Ll(i￷yn?i~#b|~6l;,ėc *Yxn*Xqpϻ<H&2 h jE l294gH7oqP@hrQ<|w⎫^FgyR6 Lz߯ځ\.:bvMQ>&q/;Ư%_2 N s Q\*U?ixe;XyN63ysmqbW /b Wχ*X (9a_oȋ8кs]n"ǎ()FE ֍H£n 7tS.M|KBY<IXj@fXe5hne~+T nr6t!PJKƕh=6.?aԁ,P-PG[50H.YBIw[ނX&<ن(E̚4|2${{ <, PwGYa}6,  c UJ/`}m ȇ]Vݯџ6Yki!܂M;,e /: ZRcfA^z%zU.AK!?})&I ϱ Mx^bDUQ±8 sS) ,ƙ$ҲRTDMa)zPHӦ%z6`v XV=kW"j99p P- .RHԑgQlU)"=xfXm-)R}}P2ffùg#(; ( C yLhT|a!(,Y"ƒ0t/(+VW՛Jq;VƄTt__wk5m` l= ,ps/j$m+AkG̣DM?1=I[3dP0YF0 հaiRP4iαJ1[ :!ZQU[@!VQa1JJi4ؿW7+ {fS.HD[Xwo1Í<̫iJPƾ4$ׇo?3,J6&[f4.]7QV9ج# =IX`!5da8ؿo?,?pۋ.%K!XySzǺa]'C.d M{r`"q1V:?4M I"z:)j׺9bcó*mx~ALf"wD斘fen#{ ߬̓3,9*o1qGY$~ZݡUa/y7D]H|nnx7;kawynPpq!0;J|w߻/:0#tT"l{{:|pӐ ^MRGNK)|#mִ?a㯗ei]Y!d9;ZXSi8#Hgn0g~L"*?%g &0f?ɟu9`|kBH@1v@4 3gJ8$>;<0[`g{ bIue89R&^arGa(Gw7aJ׿)]QNaI2(|#؂v1Wyି2۱@<=)Qv,2MAI7qjS݀dDßg╣Ѓ%I1i;h '947LyGKo~".q\!aL+;&SMM ]*-Dg,)4BTRbD}dCgׂZill@jR{*i:I>ѡ҆(p oK️_͆/G[dRRo yK4ǤBV@,J6R'⚢eLz2GJ\h6K§zv2xY  g b*V?nM c_6 u2svR寋'I k c_o2rsiʎr..QGACxH8EFa%<*[R׭HKJ(.ac/Q)cIqnp`z\AEe@{BA& yF5Daו Y\xg.lU;~|Y4'"e'|폿BBOmj n@MĖgc`P$%WQ1?σ @ey܌D Ֆ;՞xk!W.E;F3 (q!%:;hUH?(nrPUM)(eYWv.]:[aK~}KYLOڇйK'ti>y&tÐ1|g񼽄DmܤY M/3Vi=̾hz)=2.d0 KA0pX19cGxyEDռ?^&' M7#N:\7KlDؙ_-Lq#2#ŭyxک`9%ld]Z};kTҝHCSj ƓwwDso{ 7G4P8i_=iH[q*o_af+o^lE.?Ԫ1kX:ʥX6z37}DӌMGOFo ?M%>%OB奾3?_)O{?=_cX|?]N)'G k_S4zaJWY邉HxY>:ʇ| !$?ψNJ=c_j~7XXMaO:?>^+o*|yVP,6̓ʄQh]"iF/׹y`qƈD2]3F77M*1Cij98륾Wc=o6#ʴ)ai/Q17knRŞ8ͮU:)SSXaŢX[C}:!Ś* l e˳'~wodž t=&:٪Ɨ +9"ŋ~ZnԸv5߄%'!Ai@rhX48n o Ht+5j0iC~Xl ,Lw 6Hm_( ɟW2u`SF~YPSG&_a. (0rHbIa~"@joI2j⋍pV#– P+5[ aZ#Lrʐ>5gc7t&v]v졹|[>Ȫ Ǵx~>P'Hڭ'o[QXH&#vTT܊*gE˹mḐ D98&5ёy|ssR} dB~|OmL!wVZCF}֛ZxY^Y 5*`MIGmib(VE8Q& rԀ9UQʝj|F .E{8s܋x.+(!! ?E3Nm҂bBʬd4;tҙ҄XvID,BpDoT%9)f?jVf͙XlvB QI a8_w쳷݁*t>\rEt)lBa4S^]Nt;ZQ^Jb-[a|۔5&:6L~[ȹ6]}}|k!mvʥl/ ;}8lVOΈ[۟К!e߄9עWhW7^UTӿqKAt3iis?_^{lg$qb 2AX0w$;;_F;i21OR')dC_hIӘ2؛FxޗMIRww6<FۃM~yaq ]w 6g1i&@jzYKNrv҃9"UMӯ-IuPI` YvԋBy?w7? =? S$Pq|J4I.B25dL$l,O|PUT_~^™6~Wz?9WL*hi~{?o\<3ybѥi: :"M&i1'#Y_QI~HH] wTnkSfO&_EBLG@:E0aH9;+E&)-Rhd:*~ (VEU@&Z5彇q6҆a{W`XAB[oB`Is kFo#/ x^+C;L(m2-% G6)†Kɟ|K!҆?iD/~*/?e$<@ALe/",.!Q`` pi:Y,4x qN?O{dSX`.4&.e{8TST ]1MUR_zP+@:ZL7s \#(s ]QUdzO(HB *P@p?"TAZ’:{OR.`QK)f [t:{wD9XA=Pg?#8( q4=u!ER]6|,^ª'62x65|yfBR dqܐS5UePXsvwQh)Â8D,弫:<* 8}ȷ dIK ~9x|xQ'i x[]L-F9˗w I+1w䇆D,yBH񎿝6ʷIS!|%0wfȧ)E?pY߇Y#{wnm P鹕<%K=]aۦuM G}, Z:o罵JPQ\]_(+,wI=9M9_\e➞3ybt:џ*a3͞xM=:wr b۷Oiǁxy~AlIw2GJɗ(/W@N.a Rh\W OMzx/i nnR`5Uغk6nzyxӿ>){5X0ҍ|8{6]M1 86i] ϦD _kqbװ/?XfIi.)܈g lIkL΍9O+N3W$Mbd ɨhNqM[ǩOޝ4;y0`GY@ ٗJMa.5\A#6.Ф5~y CLhUF`C;  I͠1)"$BMvpT]J: @څ(-YPfftpp)}=~bݓVvxmLw/QSjW6sXV1NiPAoh!49(UGRIֶk $vnNะ+ˣJ(.J &e*%#O\Rd&w2ypΤgE .Ի¬$fZ/?%Xa}S( ʙT挟5@M kZZɻ,a'"S"s9 YYQ{lԨ@ χ(@L\3 0RGIE \Y{j9H5PIx5w}wt( Pck eZQP:\r g_EdD8TMlyEG$*< s&#eF1; |(毖5~ؕ(fJjmY֤=pG:\'aԱ!<*)!'aC`YTrUN|]{i-}tWVZs-(*Ax3? v5yfAxУd-Ҹکkkl;.jzU%ݡW{T?,2g:uk|=#f b 9hґ`=j֛h໴R o2 A͛u!XSA-*3[2K(5媫6BZuiC IWUQIJl^n>1hgv?x=D Ѳe"C(y+_?jY R<0/;mbޤG##Ϥ >^|==04Sa iD0sn̫3} hBzJ]e%e ߰%{m y[.0@]؎b1&鞦 c?| rL]vЁ/3 lъ7c {B5l!|j4,?A'4qgR!Ntꎰ?Nr n0nVh?|@7u_0t<8j0i]1n|KpR]YlƋE .g4&~>LoKhgdq b]lOy2//߷gǂBZZ ?D ay3q7楃 8{8iQ&V=dkdsGlc=x/Do^3۟?=-, k.0eǑx u7S}SoZ?9ܩ%5bK#;e0^_^Yhu͉ v,OBfq.x SEDJ.x A#;=NT|$dx&mSpF3ήZ*¯fE3*ʜsD}D~$LYt9L&UL-o((Cb5ְK=g ɴ]~ۉg>㦿Dٯ~ow`3_!BX-d V `˫Q R3#t6ȆwI%~),|fd7݈pAa3H_`yK:)N,6Z7~~- LfFa /KBVQ9r?f#$O[GQ]gePod]'- J`-Z)(߂>jKB/~/F`@v3zkk? jV#yg(\ˡCM ۈ2RY͋OJk 3"7djfqQƏ+Ԓ3jb ~45DEdTb"}.=WpJN݋{b׎o#$$DaPE!G iίfxriP4!1 ρ}KD^Z*w陵2懦CAP^@3<7,TQ,g'je`Tx8*7B-b:%^Fs Ƣ|¦R| MLWMb"oV1Ue٭ݘyʋ/o!/awQtF(C \L 0`=@59i7'Yg]IUOG% V6w97GPW6myY|J+L֨`eb9|a Җ .mFC#4?m7~G%q2VѻObb̟=9Y)( ]q? \< )IzeJZw+VX,oU͓ pFs9!5*qѿv\c5`2gx>!ߗtӗLmտMj~C1_.|k/ W_}5zz>[?Lļ6ߘ.q0~elMWEc $:y gzM=7_]7Aȴ<;~8VL^8߆T9ڻ!_LzSVa $]Iq/R5ҋcҀ|?oB gPtV$υKn!OnSo_ \!b=[; gw ЇUb\IXɠym~_:vk .(#_θ~z纎ٸqX;lچ#Y1&.< W|7i.ׂIA5X.bħDqEhr80zN?HFΑhuW&ox1)b0zouWP1.XJx?: ݂MqUk|lR"~ J:K1L*a8᷹Pxʯq/POpQ=ޏ t&t y4az4/L[/%?Hi,}þ`hM>2,H="0 DLH$bJLcPJrɨ6< +"y$ 'Ԓy(/aMr(rHkdL!+UzoF de0W5K8qG=npRxUSKQ!6Z-a MqK+)qr\P|()?%U%pQ_ 'l-ԡ]G쥰I'd\ "wlo#&^U+P+j&bPFb  ÁJ?׭ g=hBC㥹msV^Ldžeؿ' 7%a[ aDl3!oqxnϳ s B(09sUG1 Dھ=8)j0_Vܟ3JNͲS7ž栦҅6;SgvSHWQa4zgnj  x8Qݯ>q+ar(G8Eni"CQm[!j* )G F40.bEچWyVHeOMۑǷ@IDAT[PfQ܁sR '?|@m. >߂ 3BL<|{4X\O𡪚H+aRďgZ"EkΗuKF (b8oXc-1?'>:OŕHm}He~{u?\6Mv[p협KwTmAㇶ70o!0{^yoQ~0[7}!]q :.|9y z;1~Y;Js;Lid&2Fm_~m|_q7ZDz?BN{nBkD/l=p} $Fdk=糓1ʠ4pZN4ƯD =(9ܵv| k/4[loСɾ8CYA ČqU2yu'aCN|cp_j\K9o#G/~5ۇK>\wcQp=!j=7 ( 8oԮJO%0*'{ /|H!ώFU#xs?tC5^<9^ /­c,v߁娽p(fd|jr=tG&![7~9wS2$e9Aܦ{9L&0o:Ga:>Wh 9K;D'?a69'.%R2 k!:ʻQ&<)?Co4nGoϖzzVGlNj_j/G۟Is#]yhzA_L;LIl"q6-gf5(#G 4&_-=t0Ћ$1oXM_ɞѐA4(ƂkIT qO'MKϭEݝu5pܼDbi2,Ìi&0Ytn3p-d6姧 N:[.9cv!7PyYOitymat2~dw狋1mL_Hyp%e"d2PYR& ->@eh#I} ,Z'ɡV3ùX/S% DVbb"r^P+j0ًP Б߈1N-\'^ lhb**B4aq 8*T3Ba8T N*RpP.feШ8U[~=R_Km-?GP(gMBzv>,Y\ 65C jUCnl?~HN_8{tGUS;stf˸!pڅw JF%OhҴ}[h<)y\Z5Ni[IY z4v#x.NAa)bX/1QAh*gtDچ[f۲x SΫĄA,(CV @mU~*ڶzATY>@)MFdE'Buf_#xw2).R:o1QNHB 1 M@%4-ur\߳#ί|Nʢ0KUP KNz%q5ʡ9I o  @vV.*H7'/WPKCh٪%2+1!f}i~,d9pTX҇:h"R_YWZ?>J?w714ƕ-]&9Cu wA]d$]/\w3_,$1=bodQkvG^?vlArFg_` ~sb EX/ *zSyr2Vߔct__<5|2nȱĎqtRӗ}ԗz[Pr:?Rz|49W1b1)ȘZ bcۮ8 c ;5x{R;ւ) Dӯ.:3Ǟ~#ky<ځWz ^CqHrCF'ensUu<Tf &L'F1o2V|^19A3Ԭj!uTLawFg.Kg_J I&~nxx<_u n e1 CGc_@'["}ep;geg$ miGTҰwNhOδ_.Iw 诨QWiߠ#M)~I'`_}߱_ohkx,Tќ'05.EG;`L Q ypa!F7L҇w@99r]eT+Ccb{syVDqqMד$z"!ɣ_&&{`U1mh݆c:w1$:Mgb< m|[Q>4 Q"Wd[6ՏqZP}h%aJnFח"K\៸Ԋ*Ʌ"ZgAW8: ~+T:h亮thd?4ې7\ d|8p$BE >TcNһG ?yt6KL8!]&;^JR'TӦwoIđtR^(]C ϝq/7s +y2~$fzJT#Gc7 $!`DW-ͻQx RmNpݍAea]-Sa0>a:i,OܹY97auE'u>8do9:u7"lx6.7#C%M^Oɘ!7>]xǚx?vbgMx  m*)SzIW0a(-A2PY`&|'pM"3x䬜.a *#]/렡(!}/J #nb1wqW4.Br/Ng7x)𢩘]3&wv~z(S(.hnjXI#"l(1Ņst4 ]˯_@/$:}soc_6UJ!fwCTIg IW!&wb n܁(PMvIj]L<\r2%قYw_hza] (/n}aX;]oq?Vs#xT ;nW0nwU93aɸg!G4oz59wߺ^116.? yк 셿L)vZPU'?n.P*2j+g!UlWHXNOgs-KZJ XgQS@rL?B_X_ʛf#G VR0hnfDjJ@K:Y2fHےW;BH~씯Aˇ|KZ/=sh21a;_DDgp_ܬ@YWjl#1j{xNy[y%OHRȟgfpaObڭRU/5۶nr*5Mӄg?2, skѩ{'ŴDV~s|͇ќCE% _r%|O.j9S&rWA-@ev˄o^x;q(ph~-P[3] (c{cVIjjI}4Eb|sZNyԓkCbjY5 {KhZi54-@Qe-.Z- Aӆ# =RNjUeNn<Ҝde~e;IwvQ' E(84/HM:Y"QӦ,Ś/>iZF@&oƽC~R P(Tm,rMHH=L ;0v(lMMSe/'Z'XF&YNqwš=p[2W#ӹwy95{S1% nc3`#ӣ ind<@tV?j ?:xUwam$8>ί;ir{?z2?#Id2zt]F<{[p.qc4w-& &6:4 '#joMx,jbгɸYoKyc~zN1=jR %:pcLfi%n93b1&Ξ\}OG_(FE5( 0`t,+y=PM bzd,|}edpaiF>?&:*/FЬT%>pHq]2qbWL,8f$H?YS?xP*O?J)qmg<}^'WIe#ߑ1"P\cPSK◸|[@3GJ|)[\A3:S5@q.~g'^V( tjə`GRI޸.㦅)M\6 V}876(3p3arX pf p=6 Bĕ9(Aʛf~ɾp/= Nγ6IT%ɗ܁ =sx8]Ўi> Nr-k@?g]W;s;I6LF$<'0I )GJ5QlZ ËKc7&Mɶ|u0x O.:( :0\JBE,+i$BE{E (nDF4'z?9Z3~܂@ CbD Vw;] .'YPᄘ ë˖ACGn~~6~_3ir4GኯO'u۶<ݮÆY(] ?T%MGϋ6aƨA4;ZmZCoyP;=}ia8uڻXMΪ/Ǡ3y:ΌSq$մr~/n4;~߱.dФ0*=%MЫEY ʳyV|s&0:fې_ 7mEr>`wj* N2q]y⩙`{8D?$?[KQq'QoH ĉ?M65z?yOz kq:?QQQ!|?tnt0?'Vii)vLs=WIjr%$2ʛPVg!>n'Nht3ODݛ Fh!(m8)N{·;x@羽9^8 qf\ -.~6NDt?tMN e_."M(6E(KL@h1p&np".`ED"|dUE/ݔ.?rnD%Cqj)@bѸl8؆ q~Wmylln>*ıߝ ϝ8ߠ=7,rhӕ8 ǹ;ܢ,pz?W-qJ$VBBXe/H:tq@SVKLO*2Eìp}_ǏRL8 L#j O23C^ibWBҸ+[>e!WeaVՏQL2^+R w27A-kkjQIAQmU L5 f*++y~S*Gq_ˇ 履ʫa9sp›ёQԪBkdR4fB##0lԅ8TTd*C|hN$=AaXGeS` PDweߢUn< ,4j^xylG:3aź $vGQO_|߾%}&}I<]7P]3!tM۹fgÐR+&(&Y0nZ QQ8ٵc :128ŝ}qujDDЈ"'-(kAn~,_LBͮA.G漥?4ZS0QMo[M>8{_sGղwUUkM/Lz#BK@iT<( (G@剈OlAHP{޹}0BB g枽{wگXb|c{۟P:yEQU"y>VVA)R5kC!vN@3ڲqN&+^cf㏰|vTR'껰_>+]onآW̨H|>o N֍\J_5wPKwX:fzL ԚI~sn@ɾY\*n,ʗ*C0A6b~8J| ;0.' S_tH3j7@L@YꟖ3*Hbp߉s7wҿ!ѿum8ly=@W? 4/:Ȥ~&vgk׆םCttf?/Q-os Gb˞ ,-R%m0DVA~.ރ5';lOS6ٞDGޅ)%w5}Hqn3njw3vR}--K\OW!Hls9kD_Tpՙ|*zۘ3?wKY oT:932s|7yw=q,3۟='6qk_`_ij__4' Ɨ5Z(?U{Ҿ_kc<8q"!FiglF3C{_\ϮP"gf˴7- /űћOR ĴA Q?hˆ=+P /ĈqcӤɘ0z`N)m<$ 1j8A,3qhX$˟ҡc!<4{&@mP7G|Ww9KQ4MX1?QYI<-s/O |>7؀z~sq{z"^읖ۙa?l#?-+P6rx^Y!g ?=v(<8}Y? x881}1eX MEI1@-kcV %pbmmFbbw_W~2z롿7_{?ek߿Q-2_aհ~Tm3aphʟ!䭻fdq;W dgZ- '?EВmDbQnK7򹩟Mɔ,Jdei_gh!0d *YkfrE-I@zP5|ǽx0}d%!ފ$+Fi4P2B؜; ,P@[Vmg9QEqS#Zy<_bj$XfSSXW_MG)&0`q9oS XSG\ͮ.CM<&L(t<TaXTXyW a>%bYDYǶ̛fTIIJ^XGULHJxvR8t2TWcuC\%MW~zf]]xxM8h)@Vm>sM0B8w,S{g[ϱG*JEG 5j;3$]ۢoF w(㹇 ƹw=t8E^7>?cov~{碼sLi[h +V>.YV4-(߸̼gMv}'W Gukp3,yԱans,pn{f1x̨37J Btr}bKn.\`9ŕ/q ""?w_x {G2vϿ2t"MO%/?jf _靘]*\A%ǥi LG ?: ry8ӔIث Tk+iXSpŊ8] =y1 |-XzOSψ =o:\>_P5uQ˜]CiWou~BYڎ6%˷7~?o)c _Zc"owId&HOn P"k…8ēlhMl㳛dj 昇PEwSeF?Z&6, Lu΍cIcV78"2qDKRن]mp_2,%xxK|%Rߒ"#3IIN3;)E;m2 -uQZZ)e4BN&E&%pm㞿IJ:Ȯ*8*b<<:};O~0+Qs* 9:l,Si9j^z7U߮DwLEK56tkA=<tm;gTؑ~ WsB=TB3U<%:q)@Sv.:SO; C_#ZZP-.E(TR˳$M;9X 1ԔZͨؾX'߰zY5M=dո`Åޗ7l%+Pžti>#P1P”ҕtsnޒ{kkDu[ T5Ju gG+=XRajSjq;(/ S蝲іFW{]5jPF=5z6T.^Hu1 *bOi1#1(OG*ktjZTɳ*y#5 ;4EPE:;4n"IA9Zu<7f$[0x.Xڳ!hL'Eb;KЅ9㘚ͯFcѹX!\Њ G6yj.n쳸7/ /:# ;ͨ\T445͡VuY;!RjMhN-NIY&E=D0N5O_u&G1m^1Gˏ>~90c!;t <]C}T9[oBJ]s#ާxCJA$rfyQL,TΪ5"0R iM1|r :7GA~!,Y*J` IǛhN5k.`1Ϩٵ,S%<+ S8X?.2>,2Tw2|\dWSjLf㠓̻Xʆq\MH`?D+&onJ֣'>GR JvUDkOOנּcr6^,#d(P:hFoR94nw oEM}%Ym6>i SP*#47YAVMW6s4ᤋ?OSWI~]<4*8z(?JT#q_, W][qMzχ<5ڱa5gknQ+Tzns4HMM v<)'xaKiC+~{ztMI fpᝫYa5H6j}{?k'ӎ'wMEN(~7>`· o@4qgq{Pc@nK èֈB%߹Uo> њmlUN=f_=P W'K~6,qL=b_+Ʌ_O(I{ĝwkrٗ*94G s5J3#)  &CYD}Ǟ;ݤM|mM )&m> vtz\c-Vݔ$ PG3FOJWkfKJEjXT/dmRʩ;uP 6~\fkYS)`(2TمɃ ҰG;(ӚWbN]'v1M4oxU582υ_@IDATTVQ>cfNRXʊ n~Gz躒}nQ$%PK-Rזǃd+*Q:g52V]XX&]xGq/E b=&JQ\<*/Wm ŪvP\*%d*sPCP&dSrgYCF`YT+u UV5:О# Ŭw[תg۠ZJCċ}xːl{9 3Q~ Ve1Qx<xi` oS?~~?~?;wmCY@x2,q[v9t M/٦6@I ۉ4T̝QxW̰2p_2#{_ڃoÀJݒTPgo@  ' qjWsw㏃(M ?79wҖk" g) a,3,_, t+3,I!adǴ0Pto*2T LG BHC!F*D'Hvv̢[3b"HEWҁ`0NSgaOTP0<[34fu8!df> ܻEIĎCN=mg%xNSW ABe_ո䢤Æ̩H;/|-Mn*㷭)% o@um-/}?ZXzj+XE|4O3Ԫ<Jj3--*N"խ) Ei"y3̢~+`yM5<?x oU(--cѼY&bq&mhoE %DYg/vu&QC^[+PK&Jj!޾ y.N9_\ք:KQSSW|J̞p 9E< +%Hֵy[X]<T.ԥg"ՁXVY܌FJZV7+SY" U">vg] 5 w8Z_|OcVYX^Ag@VnN[f/VuR+HPKY1JdE rE1\v+=k\߷íI_~~a{ٚG!fId7B3tg`y)ThakV8pF j=1\l (sq ^ki.ݕ)Ճ|ttG#4KqϷ?^M.ݕ-ݪr%3|X憇 Ӣ4+p+%D+SFsvx 2=)ӡҦFòH7-I/@iwLkeR4T1HEw&En6:)DQG%%fJADU:[Di|muSSA TUUbب1{Ǐ{gl<xT{s1dt^\mdwJaYn*(,:Jy6fNw/#Ęd3[xVW|roiT]I1畷VQL[+Tsv@jQñN#Ň0$Ɨƪ׉ț*+d4s/Kӥj@EʈjO{Z̷?R|_u7[:4k + < C0 ?{w.7ۮpAgR*mn0ә.v8 A_-#BIITQE\W,I(g"&`.>#JjR1u׌WQKvAіmxzw%Uj摣&/o|a3( 3#/(ulJbñ)Z;L`u0漉U1y4t0ĝwÜK:v" T4#נ2 0R+!?LJ cqꚱK쫟B'5̫de5`W;+bhG["$5H6SR-5#c1˘ $@z<KWHDYa`5Qv -LUVcY"+Vz$eXETNo{xl?k;??ـG/ |i͛4_/c~ᣲb 7R Wx?/'Y9Tբ/gGcA7tw]oDSq|7KlN^(~`GesQOQKN;LI, ^R鿣}dx?J8,mhwv2jR#ø]ÿ 5RVRL!'H\ϧl6y"RsEnZ 3atqᘛYY4!xbeֲ+LS7s;ϤAosM2B"^!gۊia [|f@JlibIH`ԭXFcؐnYliQŋ 5j .7K.FCC5f&})<XjeF H-Oa9(LvN!ۅ?|4}c؄19oƩjop4{ fa jѣPÏ zR%ޑĞ{OyKx+9ͫjxWƕQ2kϪ#Q259P>'/_y7t\q 8(XmRΜl'zkrs4֡imr.2޹Cp1mɹiROT!1mG]VL+ }5+մC p`UerFp|AB*Շ栶XK7a. GPْ|ut{a&ݩiݻ&Bq,{ex>V W,詣Pp!G\lG,`ڨ(<dO9xT]-MHP^/aߧkmiۀlؐh: EƬ?iE׺v'i:_(i? '~S6^'aO ù뉿a;Zʡwt̪;qYXxS.iL{d|ZE2)(&MD4{ߥ\ l"nf\{&5$mfi7Rv<6~TܓJx:di Jl$|cO퇁n~Xq煘tΫo=Uq.چGLo`앿 u@b4?-Ҫ={i{)8KʙQmvun*azia!j,#72l.4*Jύ] nA)G' Z{45_xi9\b%d@JB'b$b<ۉ UGfk-{6޻6U~ A3b|g/~SUo93мp_::qq`16+u]XXIɯ+5cns v݊ {0YT3jfukVJ0 XYQͳ"Xj5OH.Y)~5(Cr;XH]o6`1,]F4S*gucF%ǍQ*{q5JbY r?e`q^*$PƞD?H[-Ss)ZJ`UXex6Y Jչp-dUWR+!x IJ@TX~MU`F Is B"V㟟P~_ӯ|m@oP/bdɴ+lP`AA_}M A Sk[Hh蔽sţqzPX;WڊÇ f\|H9lx?s^\2n;e8 <螬*=?ULt\"gg#A,%&j4?&[bVh+|,6G~~`F'8bdtvbl)6尬y4}]]ۈ*T-^W\CF5a%kZj?-6LI5/'qʚj#'NulF}S;Ǟ-sxN@tـ҂B V#Gm3U:I5#.<.Ӕ,~J@Z#؊؄)Ĩ8C5x" D`Dp@6QztPcWkpߦuCAYׯ#C)mιPDTƥ.n ̘9!,T&KwU/u"c/i_n?ۯ?_ä_r=nlNakYh, 7Yt{8L)Z5TܹdK֜D5cNC[4.:q:F޼k1wkxp \Jlhx``ezWt C-E:3{"9L.GHv*E=lwwml]_kTa%C~{2!Wݏ[.>c iruWk_Ws ~obމPҿ*Tr蛸)S kG,|Pg݊9h_:0F8{bť *ˮ=w zre~Ɨ?iVFZFozGzL7gf?v!. ]:[Bnå~ S B\o\~zaf&|o߽^w3uXy1 tpsɑ`ɣ2|p GLҔܻg}vRd5+9|oNoE ie_y^& $ȶ\(ۢof:XDrF8C!ލ|=t*S~;xwmsFLsbv tiFZx.ѓ0 'x+c>}8{qQ{bX^ZRP_ g_$KƄJǥj4f>jy3LG0 v'RmnAbص |\bJLcS|ɺBJti=5' '$۳$A$e\)Jg.ȯN$"֒dMAaZ[QQqNnH.PȥETd @iJLSYR'A4N:;&سըY G\1m ׮Bbj4U4hעd|0oԮ1)d"%UlIa"־BE*#+%:K؁X\0>1xf A$'X>PrQJI b|?bƋb> |?~~?~~y~{"S7k5n}rfR_+*38B0K6֮_+Ǚ&"Jg7ؑ׳+Q2j\(=[G h.jۄFYRͫW>a)G5߲ubnQu{^bo WH_(?ZWO c"*Y-g墨C Gaw;_e9;rocK߱mj(Ąqn6MLXoߵ7sg8n1+1d5=/[м/&X7ӗng%~ N®%' uO UuQ3z_N+; w!y.uO+|Na5helPjۗbv:좝ύU<~dsf1WLQWk%5 ՟}$([8df&#VJZ?y6J,LP/H+W;u?SR磔U*&^ܦEm&RxCp;OM_Z jb#D]TU%'o JvxS Rє焝̑BG", (*:|<!^l[j 9>z?-327֧D % ھgeg^RuI2K֤IlQkeˢz87-=%K-OFhƜ1w[<,Ttrq:g9(W, C1aT" /55 pa{B3AXOХ*s1zvOkbӌh*_Fra޺kYʓ.,})̘1њSBejZ0x8zwOmXܓxh >^uv+kŒy:Op:R6 "hY>>ыzuab(n +.FhXKަ5=W,,Yv; R KBP.vgHa. 3n՗%=Юp,yxM|k8^y8_n=3Ђ2y.abtRaK$/|X;b@94L tװq1Ƚ5R_b1hlyp%L>8 ({{ -)~q$A,}>jQI8e`eQ9<269U|#GU;#Rj[(`:E\xK%1N{TT̉?5S~hj%`J!׾ؒ/i ɢ,5<;.jAc5MJ 8g'A@AR)?"IuHRv ZZGWյ됝~I gA@W^WN +/.0S"]) ?1Ϗ~ҍ~Ђc0%9LS&~?0܎oT6TL{:~ۿe. CpzvS!k]]^yL!CcРT+sxSU"}(a픸 inʉ8%LOrN1G`ˌJ6_Y'߂7ي='R`|{q9\ r%hd6ktW~ץH;sn[Ѯ~9 * x YiϾhӺYz]/|8L#Sq!ol6җRPTNH[ݾs$sοw!naߢ0Pvs޲(ŷ7[ӗ ǡ@v>Dr1^yN`}>_3o|^Uxsǧܾ>cY.V7H~aт4Q 9ϧp!vv>`bgB-T1@ה=0:KݥI8hC,&X|)tOݎV]Y +0ձ4M%̬i밈e]GnǣV4=io.U d0/0 n}b>-n_J>@Us5ڦJasf+*ٓ;]ɼz#Xd%[zaҷU\6};7R xJ;cx[Gu;ғm;'WF'Orpaq.Dt^yBlc7ě^=*ֿD0,㍏SjQ_~a]}h*Ln:syT= 5qr`#:m?)ݎSGq3?#8ƥV)nZ0\ RŖ3 *"^TrV)St5ʛ 7zl݂,-&I99LЪSjӔ|$%t+LbHQ]@UJ^*199zUk#;,V9YXǔsn}u?WFoorkצu&!3ц D2 $$iEY%, $WBJf"Na/%Y&?~~?~׿Z)>hZgCSY13dt2d.~}yT*Ma9f_a26f,ޟ{bSa8oz x x |\)Mi-|MmVig׸WQQ_ H;$p6Ġ-]k[IZ4޺,Sez `aW]xMM0?{?1O*,hӒR#xE*I42^3I-{&ȕ;߉ US-I>B} 1-Qp1p*nIH {#PB^̾dɮ+=0aF)TSSSä{6'N0ϡ=43e= Mϙ~=437Puh!JA:6l؞+cc rܦ&%`l\f9N]&zFî4db!+OR6)@)FĢIGzxXI<(;;$W*E`@JAa!::%߉X*`Pp!L >lsC3[pzr=g?t3&id2$W($I3gʫKcLm.7hh .N.#A)HrҮ\ϟ'li1i 2#nNL1UDmbI\tܤE-8TWHfLNJe壴t nbuJR+Z[W R E0-4JaĈJj@JSI-$ee*i t@Ni%L3wn|^/ĺ.߆-?߯8ֿ~~׿eG.F%Ͷ: a7^튧+̿/L {[qB<<<<>zk,t -JInhPi.IZTIꊦ-pu=4F BPVУ!zĘy'(#*Фg6tsT+ҒĊ1>tk ^߸յH||wUX@pJ]>xeUrju({Lc R?$~f G]Eo_JdOhy>d ?8ph ~~";_kxq?X(Yp󬷙F7;376e˿/7+ M=ӯ?1ʌ;z5q{=<<<8ꯟϽwgWu)ң=7wJhqjzɉZ uaKaӡXv&ZX;K/2{g!?^D P9mPdItT ft.BLYK.>"E+ 蕗ҒtjnmƪE%fe%r)MK+[N&ZUϼH3J. *yW.IYeZIu ߕI_@,4t⸳)>Q,LK}߿Ԡf-L}G2ߏo?kFFq$?o #.Vj%-uoǷn AǜiX6'\&4^_6V~f`h.{ L{SSSSS7GB7A8r_&gM4tcq^MͰlOi[ R頭(,(]~9WKKkxXyA!sQG"JR\Ĝd+S(z&ȥ|zRFY,ZLB1OvCȩ~#+ up\yLu |hB?ۃ__ WS[ܟƓF&L]/3f}+~/3 /L{_ar{/qJǻy x x x |P+oe d|êiV\JZٶ6qRNR'(  #+/ҳH/7mB+ >Ow;LO|Iusm} (%NMBB)prgIi0IҒtVlwMrfkk+j T$,y$AJijLr+Ol+ztttkU'2v> |9vUϹs>nNR18Jg\Q%`Rtлdz6w{YkUa?_'sۍ5qQ?ӂ9P~/*z_iP׿l~^qodAgn܅v[hn__a2B{h*.SWJ=@IDAT}eY~naL(~c6-XSSSSçz]mllPNJ+/-dWF+O™6+ 's$@綐`""8=%>8#OB0v1}e?YT?hj %+ˮT "@E3FjoB^ JSj+6甀YI_Z]b;).y\4Z~};Zv/II.Yy ''XϥvA_Ҁ6J5h@UX\7!a*u)0Thx3 og^%+I_1JWMO6cKSc nP#ܘ6??it_9R$Kh qCdҥo"ǯW¯wmpZ&t 0nܟp}= -qSX]aM.t0~!z|$lO,oPཌ=_y\F$ foUȸ`3OK"AMhR2-" Oh{ȳSI'%uMW2F2DkRZK[&ERZ W]YJ "%-WiY]YLZ`)ڋ]ÁbڜSSK "dP@ UD!BnǼm!F}mmuQ;v_^jiTZ K1">T # R \˦GLk1S52 DxFZR1f)w [J2Iz/ZD vNh/yY 6RML,l6~hLaD}7?PMEFʹO^yIϿ\ͿDT$  CSC{)p)͹xarq{KigOOOOs]0B[q؆o2mnse%giSm\TMw6=lci|,an_Y{Ҧϟd Kx2)r5Ȝ6Nw*(%d Oi($ JqG+g2Rۄ-Sh7iĢ[J&l+ML@-7R8 \Q8ɕmRi6osk +tT=TfGD 0^3N $7JIHjʥA_tUAz0I+L S 4ȥ_^J_mDH+IKW$wΊ?8/ۈ]R|~ڙ?W .y?4䜉];v{FQhoT=ܼm/zm9'3 &zM#3TLyZj"&C۾s&UZX0ni9m7mmi*mK=.gh]JCO2a<$z^q :pZ yJ&a3z,R1ZARL3`.UIM@Ii Тo:I$ʒ nj4]ڀ/ʛkyJ(ڟ@)Am^Nvl߅SXq0^1UD'}f*Q@ $%w71mh%I*ŕsH(/5",_̉8J2@ZLO`w+qA"O䨂{O E$Ȉ A#$*O"wnݞꞞt׭T1T1lN87 =$y??8PvH!yg0J!K'@%.(Ctu厬D.Ǵg:̏rGMY>wnSq! 83WU Y-[.t#%&J ~.l271f1Fe?0m¬\SA4It^<#v(D WCܢeңS 硎S5sQMxWHcm]p#P+3hUXtS}@9t$`nȦL:8b3Whѩb;ȡ/[r ğ*s;kn9&9X-J EF~S  L?#Q!$'7I & O/Vmw]n+x7T0]!w.ƴJG }}=]Sl+/OiB@!PD>|BSi~LSx4Ss 9WBg[0r~yݧbyTpKY̗ߔ7A?tHoM?$J\otrY<#a4cno.ymUN^^t~~ycWB@҉B#cFOiĀٸ٭A Ph!cOv֐];S-P q`TßofԿ.V&a<4 $G?_v4=ƕ3lOhN~sIk91Ɇ|9y'D%ۋ"4cޟEV(ݡ}:B[9ϑƂ g}P? u?.*؍?zp_(i\}綁 ?_L \_ah鯃@4֡ ȫc>6 -w"9MHHj˄DqVIlN |}'VLܐ ^wòiX~I?^?Ә+$_ ()DG_ DŽϦ>IK#H-_a`*@⿎K^$bf-#ѿ87YW|&Jyybڊ8#a|Oz=]B`@^֟PTcq0n\HX*MLwH؍iANw`ЖFh!}K/N!ާ#(:+@xpỳx`F $}^M㈴N1iau?pϔKHIh;9m/AxL9~ݩĞC^񦼍@ ﷁP}-~R{;/f0hq53ΣH -۩!Hr:%*(UKu{LnD!Qz]Y2 wtz:Ĵxc̫1~iV\l[G! y3*uIsyB4Z!+ rAĝX<zꢱۜq \AB6Aiv|OLSeܢ/ vCc %:xD$>&: KuA[x"ǝe|J7az)c*HT/+Hy.Я yyC~#W=pafE 3+}+/5s0h/ŹA3U._>w+䴔 [ ?w2,x H!Uϡ#+:zrb^<ۏi9htyiU?B@!8w,C)zrKOoWB[g?2T*vfh)9\ÅaRN+ʍRLfR Q9ܓD `JG䳈D)h# _rqgR߯+?K`~7"I*+?AK4<ls8ψ5i0H*Y9sL'r?O%f?]o Qxx`ҿJr6熾|㯦<*wt<]>r1^XMkxd^c:Ry=teB@Aly`BT{i KAhvc[x༓PPP@'0|xvM:(Hm?njiW\@: -_m+@xԺy M%GQўP`>]qK™7 56C x?E"K%1$'UpqqH@?.bh , A'gH`v:&Mߎ_%#$JcF6y?%쩞CY4ʻt^xϦżxd~W:vxx+ۍu1]G! X%OV:|1I'NOMhҌ?,1@fF"j?Ц,@81E]=m0θ0 b _/@$!!Jm^mqc\ᕬרW|w YO?M Z_Ϳ%Bg‡R C`hHd0kPwdEQMT> {c^^:On^˥*. y%X?~E"VcEF6q`áŷ4i`sc!B _sPpiՄ+*y;?_ e:2N0iLY4DΓ'>/Jpϧ&o +߱~C, fbȞrtG։h=1-X>N&nKq! +ȿ//ҡ>AcO2#Y<8h'LY'hDwm7/5H ??Ɋ%P H.% CO߲?b/nʩ㯒#+:tVJcC4c_uφt˞Kμڋy: ! "98"IUmUFOOؗy#PaƇ O|'s鐇V]ymzjgƟO__ G/ɟ:g?-C ?KoLɮ/?0C5xuUrdJưzs.Sʳ^pRV46Y׿x" tb<[6]ls'{O1b)[/ҿe-S8t_b+wEVq#X2ٴy:F4g>Ȗ<7t1-{LNTL?F%Ss!#?XXFk(` $ۭ֮Q/GOh4-,#Cm`uJ+hgӂa򱋵^=]&gf<g~l\ӳy<9/;o͝;+Ql16vzL& V)y4w<7o-\ƌcnjFJ.n̵Ʀ&3v;ΚE,˖/w#}/X46:O߲?SC{`y[ȪYeӲ,MKٲc}X\t~,!ؘ7 1gٶMl] ! @}#y@O"}-Ai/U]JV|PwH= RS ϻyY,*>MտHOG_:5~x4iRZTP\rĉg̙6g`̸n(N,Un }vs̘j8Bw%u͑ [UMsMK3ΐ5U:Vobx]n-?4[{XEY,Ć-o(48 <[ ?џoEG Zߥ˖J,9((D.Lð%Ewb\9¯3!0D=g kfnPoea@ xb4h9JMg9tٺ9϶csfn#voޝʫӵQB@!+< yzR!gH_ jnb*Yu!Cَ, iN-DJtny꟠ ?џk4ԒPx @yƎcإ ȵH50_rཐ/xvHM|_ҿ ^eY.h\KKϦdOL˶trCg2cN̫n,B@ ,z hߗvc=օ^  Y!A:O|/&$,?Y߅_pT|Vذ| }  4D |I'Q<εNlŶ%sB@!0n8>}-o(&n?md"aJ8<1}L[n*SO韑Xё3Zuryyդ  g jʤ1mi 1.1.ڌy: ! yDoy:8v[FݫCC)'ұr7LxH)PYaVl_H<̺_k4`B R?5bі/_w]! !ik[++ɿb-]tX} Ee0r]EҿRX֡}TpW\^^z_X/[7xrc=Ǵc\^yuzJ˶s! I4"˔8<Džhke~-CW]seVɅ OPPp[w#>t ' r' ?>7h SCd7?v'%} !Pv8U\B@ (A韀zπ?ÀR7DJ tוʔKgCJK_M^^eۏ_Lo,׎҅BoĹz ޶kcþ N)bm"廰(sc*8p^ J s%$ x\DVD#qy_k$DaW70n9o=k^n 7ۄu7M7\1hk%&kmM~5t/zksfFKN{wpO~>Vxrckks`%Ɇ3as7϶nfx0,J s,C432c=1Je1!v^MWJ)/t< {N~B@!@ն;%yؓ-!RG=Wm s1Y26fΫ=aSHF {:a8ǂ|ƟO_;9Y6i';aO7 m%6j{i}]c5|OO=ǡUvhfAK.ijȿEa~A7l,\K;rd 3^@_|oWlo>5l7g.@VvmG-Z6{kGOG{sd-]0X0׶bOFJ-Bw +;w :T2 l9+WڲWjjcye*Q! V]p3Jݿ*+'|9T\q: ʽ\trP㌕BAhd=:?!:џ0QW2<7K?_}`Z m Zfc9#fVo7fm6++> T!,v/RR5?5_Ғk/}~ßg7^{ -\gYaJG:\Xd}z>\)SYN šP\~oY!{=y1-[\:˥ƐebZFB@ ]"o(7ϧ!`UzA ,R8S4љ+ Qt]N-"SC- m+ΐƟO_ MPK[(  mvO>JyC~k;ilk>C7v_wv3fz{3C|t8e;kk[5Mж^*;;o=W]꿙?F߇!? ܽ7 v;wCvC ^²yrU]ӷQ+OU7 YFʢ15T\~4eu:=Gl?S:i|e˔+tȫ+B@ M>x>g3b+4N(\pM"_!Gڴ/Rge-Ċ\H|lJџͿ?뜷_Kacߝjʱ"p|'=iʪ [_6~Tm2teߴi۔ MgI`t#<~Y 궑V6eMlbl6Zlx8iooǬ=`Kf+/is/7^߆S׵p%;l1ߥ}۞xH3 y7m]Rl|E=[oVt)^`w4߻6^~m@tftŵKeٌ7~*LoG_ї٢7_WfiokojzpK]uYW]3vzӞy-sһ6w>/oۦs7n|aH?{h-۞?t5zt6vsљ9c_9cq#/t2x.xؚfkdJ:J]_ͣ_4 ~Wsej2ͽ\`|smx<86$̽AI` _gw*n3& eѐVVz*W)\^NOyyL}2 KW.W)^J'+?'r(.V +,K!E?y,N<t +bB;Wt -xR_O#&Jp1Wr+IͿ@AWTE5-ydk mWIwZl^x˼{Om%'ۙkdWymoxK1;͖`9dzl|,q??+d^*S'oKwOggy;+{mؙ?e4lOlvv'٘?f;z-]A(sҴ4j_SVk,#ks7<˵;`bK_| ;|b; F.i+u?rm~N>{[ཞuwM$?Nd/Yŗvyծ.k]Vo֥?i2@̿>bgl/o?;~wv46NcfGv=?|}`]Vi.[`o3/v&¿ؕɸ_onc6~StgE^4^#:W7[; MO[cY{8ŧKJҩ~[;#ޞ{Jp ,KCH-C /=PΕܪuư\WM11[.g˕;{{,מxAc@c`Eot닙p2Q_|+)nWԇVnnuE>݄cxu82 (J{_kjD>=pny D| < p¨=(xڿѽLvۺfz[cn8l]JNe}Iv?c'V4N\[{& sۮwnb>ۗ35Ygh٤MJ=2%'6*嵼}.d͚a[ą}͉Şw7~*M;>s=olav&mv߻nOtbx r0O|{КMbҦ֌[7K_C/JARi1t;==w1lî*c6YItsM5F4{NxNv=V([Z~dosԴE _o>m 2>5=l#_rbuotuG:_Xll1{:K謻ΰ?w~ƉKagP;zL_tlMy?}e=yhaҼs韤FۤK`GkpVmlh\^L/no˵I]o6-[gγסs! Xy6Ah*+tB!`~đ49Ho:?lX% }w?e{Q!_O9$4`8h'%]X&I;~念{~ۍimԇŠۂ *}v?Y|AA?ד{r5v~}u/{Y\Ħ~=vzXuߣ4k&+fu}a۾폻y?o>;] cj>w_v3ۥGLMel?Q{{^x;(l6jB(Q.6jX.k A$a'窨?m7skǓGR>{j'\}u^?_R ]p9ITxak[_m+E.6BOo{k{m~?>":}K0y3ΧPV]vaMz ;@uwGڽ{>lsm/#q;z3 ou\"g95X|{Xa߻RGNyçޣIl J-CM/V?eY*ՆʺB[J+Սy3]\[i,+ Fҵ(O+Y444?\>Xf( r)RNoBy+:w^Q1mßsC[4a<4OмwƟO_ ~7v1*51zڽNc>vWη_)lQXt;7_ޛC,edҬu}ҵM7dw_Oj6:;:}-w]SOxa /o_20kNV=n<}fN)8i*9pv8Զz'|'{ܞ}/Exyx ~KN:nV-ۡ[g\Qkϵ}6dxݞ`:W>4tu}x϶=ܝ3X;L+>u:R~yk_10 QrrFҮt_-u"eGKxmuv -e,Iӝ4.WZ蟑ELɻ }gS5e+aC/F$_=.1l ! @!9׳@ތfo {M5qiw6gXR<"ez*Z·WK ?џ\Wן !Om;xxívK}Fw:%?5l/xyk\8lx(?zeNoaNN}w|m)6aZ6uBٞ#ؾ{V7~2{饗-n\x֚ ֋;y#lmMKyywQʯiL Lvml'J Nb//\Vrt4$n8 6\7J5k u)Wg]j3̞6l)]n`a.rBJ$qR EhqKp|ahS1nO>e~M]P|l.7.*B̻աe޵v+[wNX,V4Υ vn=6Pb0/] ub^ޱ(M! @.bQAG} Q~E>hvAdž^u7v&l?iw a]I1[n_vĶkҕmp \syMNq(,_Εr媍ʬ0K1L_=uSr1$Xږ)Swmm*GV$:}uTS6:ʵ{)X^,=Vj/[VB@!P? |vK*ՉբdEo‹ZxM(p<⪾O-t 棨 +Vt=W@!5D4Ԍ8 56+wCnzܵa5?2ma{#d[v^[Ƈvͷ۟nci׼'o|v[p{KmWk<~a@:X}a:}On/o?юr97NV)]֮f#}b^Xh>LElN0h jte VmZZ%z݊&waw>\m{+1WĎpNYνleLǚnEɉ8v][n6ijc ߵ#> sT+]zB\ ˨U*h͖߬Ϛf˪KA?EI_ǥJZBueFX7q mWS7eQ}Ƌ|,#W:Vf6'B U]Ҏx1l<RWϜS)+cj#b>IKH뚄n4q LͿixHXg ^_ǰ;VlKf5:q#x~c#6߿skf-۾6/7sٞqVڸ־dmvΑaUG/ZR#lw]s#Դ\>٦W}[a{kl!"@|ַ:WuV/ .κo75l;fl0~i{M.{;QK $j|iuL6˭v)-]ӭVO m2{{{ԏ%l=x?i;|b-]wvb/|cl۶wY|`ۄ=6[!_m _6ȶ7Y8)NPXƋ#%"v/_Cߐ*8shYLoT6^ctj`2m(~[ 44V1fض;!ϟ&sXz銨w<Ɵg?jWeoc"'έ[|%wN1s+Sf{n_~߷x#?iF뮻ή ~ b,6v <29*_.2˲+|vIzngۉ;j;η]ﵫq?_p X~gZ<-b? KnLe|;fUuz^|}z~m̲ڮt5Eג-gZlZD;b{N.yx+Ys> ̻D;v4lo]`o:|b~.N,k{.>ًQ^7vۗͼN;qϛmJA4U74:y락&\C]# 1XXʝFOt}?q_?yN#}rd^Mjr<e)n/[7<]^q! 脂 {29~w/'tvq={Bq$6b E6ƟO_ u&˯1mwZ"\{Ծv7.6g>խlM k~tle96sv§īyha/: M*G Ν.;^~ǖ,Y̆v_Ǜ߾6z4éؑ_?~۳KVt3mߥnf׶͕ҿE{”g%Čv6:Az1w{s]`fs_N{C@Q=}0=soWp|~ -r\W~(ƍvDŽEYF'9eMgWo3',W8G]Kҿ_NcܯWNNW3TS/e{۶_L꫚J/E㵖5KUB@:ATUa r=Zxa阢3`+<ط_Ǫॼbl<7Yv-/5X|Wǹf-o}LJ  ̰N9 L[dk$)o΄綝n'>W/.}Z|An?>}۱fofm&Oim_c[+m Cm~~П˿{6;ls _d_jk(e<^)[2 qKnvvO`ÈNWoȟ~|rSvuDO-JTCRuV#.ݸ|UoN9~.s.liRéE-ʾ5ޱnU<Υ^~t&ג(t-v71xi;]YsEv1XEJghc}us5١`j -]wz^fFmiGjܲf4ΐ@bFZ :]=v-_klS0+ԏtwKWGWn ֓ӭ%}`Y= G9<Ǿvi:(Qojgșq* 8qXzl_W['+eWa11POc W)[A/$N':8 쮃!XxYE;8l*#<qeНߞahhBWf)Ym&~=!UFo}cf%mc;!g-\Yɾq62_gU\]pGKj};38te׶v^G^-Мy>lmɳR:5j} /'ؗdžeTn_W\{n_+]rU&79vY-q fly?w5M9Ii ˮM뵇waQ-@|5j>Q}& N&-˖J2ðKR8v<^cK+,;j_o+z .nΦzK-; 7>~z۝vށ [#K^^Tg^IbOHQ)[xtkaAd߁A_W^_OF@_o ! ̟yuic^<;KK3=ƼjնpB6mp.DŽUXhr);M!xb8 *"'L,. Fpħ%! 82/bO.lH 0=O_2 ߥKsϿ`[o!QlDmk::o`ϜeeU.p4&O["a1VvA&haǏ,kP!Qd&Wk=F'[å/=ylM{#d QoQ[;p a%NN6tLZcl#p=} ~i{zV#n@`YR7qH)An̞=ۆ4[#ݵklgϱ5\[JX5Nnjਖ)[wmfNEwt.eLն֢~_H_kz*.BV $XΘC畻,WN?\aM7<M"8tڑXVam ;T?1#_OGO_oaޙU+ѡv,]6i'ٶ]PQj_LXokDh[l5Wjz 5lQ6k;˪VSM 1ܚJja F`&-]P-گEjVlSG! }d*Ǽxxޱ\Z:^e;^x C`C>+T"_/=4ӁE(~v;xeχZ?G_'OhJ&gLͿ?ͳM4[w]2 mmvOk?{bbԋ(i뭷=v@߹|ݝ뭻^Q5E_/[wul̘1!K,_gN JۨŵJs}+B``c>a< +*HhYր+x3s(:Q:{ "•Z![AT BOGO/_=nXtAoBp5jk WGGu8OƏ#1Ǝ7t{HTC4M>ƍg#cI0uРmH-wOMV}vxUtCB@! wSp.QG,(÷Ĺ{`(`PkE܁WbX8wcy֮ $~.&^{9]_穵g Y[[YfͲ fW_݆ t.Vz/^o- Cvm|J/Vݵ}$p lul(:\釜np } +v .t^7a8kjj)FjeD9b/t &:jOl+^-ڌm啩6Wo ! @"@KɌ5Dлnh"¿QҨǶJNs6ԿKhLͿ?ÆfÆ ٳkj=ۜmn` |%,H_/Էdf1e Q_ [L@f3!ݝ_cX lڈ` wk1aÚmȭ-6k{^夀Apo??+ۀB666[VCX 9J!_jXW_eYpf~xs'Ty yןTW! VF4D W>0 Qփ`@S 0*rnvm#Pؙ???kmˤ o0i˗Qݝ Y~%P8O$?Ho@}(ƥ/gq664ٰfkCeVM0) "-{#6Ё:5Fҥlht.K推hIƟY35?њƛ[ Njw#"n_ҿelCEGo,:\j} JB@Z! 94"*E|n@$<Tv" O0Luǵ]o@&*O/"ro1 -pYV_k4hXVoaŊ^lsS̸N(iji0rrdO9!- ' Ŷ؆:ΐ{e]D p,5c1?kmz(NMh-pD-I/͠sD?U韁&s/_տHVztdśk0>i@+o<t߱B@T@KAsF$6,T$Fu *Q68sO]R~ z(\ ??iu&mē`=ݾ_lp|?{:"8O³TLGHV1ŀ.\`%6U#?r4W_UƟτw>L5y%?Jtyڑۋv~y +oSz/+9i S 'wbEy.xASvDlbU[tbtUBQ@064D4k 'S||TJRͿ?N?$I-Hx$S7e|0ǻzȊK+iײ"!w^_^ !  @I.5t~iHE^Gr_M 4K؊qB'_{Uw^DYSߟP'@s_0 _$ ? ?I5iC7!KoL? :X k}o5y O[T B@! .w8a FA{C;+&D& j TP"j5 heic? [&5D4?JAQ'A- KkT0t/ɰCYD*ǡr]! 5A(9>(:)@@rtXbRm,:XpN_ E~%&\eBA!9 F؎/'@q4ĉV(7a8H)[GI%S hlt oGV8ו=Q! @=!@|W`)+=,1ylKGbpK5hqџO4JparW $J&-HVJ$-ÊPЧwdUa:ڻ3χQ! V1U[vֹ7rףri L+򃁹kV =X|WA{~tNyy:`w X<:(v11\`/9|di98G_!+#+CK .;J-CO߲?XrKj KSB@!Pgď;ܛCL'§sc 7&^q例pYTC 6Z^@''W_?%K%z3E|*ҿe*uB@:A@VLcC_5E(,TG XAV h`LɅaI +*(yS,;Їw܅ƟO_ Hō$JAIO еD;PȪ_L+4t.+QtI gfz/08;h|S-0lM$É;[Ꟁ?џǚ%H)[5_?0 %_PɑU?.]! VAh7m0@N# HgWfWv+8OpEF\}FSwq|ΩPe$ӎͿd CBW/ɟ]!COҿe̼/>VdKB@UwD%':+_­}Tl" E L |@VW`< Q1xB_h|n /ƟO__Hܑ)8Ho_oҿJO CNy"/s3\A! |?:ǽXr7-o8*z  <<0Y'&?V N/4RԿ,'C?џͿ?d⿔7\!Ko?,KoEV:d# B@! @ @_T(Ah01x~|?'r^!tOa5XXITciG i9U.7H Bbo>I-ÊZ_rdO B@U`&d*A|_PnQ? |g"sU06,⢷" pO 48D4b.Ą9Q8do?I-P} GV=zv! XsR萢3Rɶtr UR\=N.>De zttS! T+iC3$C*")8G?>WGӂ_d4%J&w!KonKו ! XuXPC4vLEC 4zU4:FsTQ;fM1mqI$2x2Iw ɝLK2Nu!+1t0#Mu<:[: 29{ֻ޲Z !E{#H` ,`W7v&X_?r [&A \r0H\p/Y쎀#8Ԟ'"ko&,ŸM`,Y$õCT*$i 0IBUY| ҕZuc U0ǟ 8f'w75pKs.?v/?]vÕҿTn|EVm:/#8J,ُ=8Mo!AV:Bd~GjMP# +mci<όaI8E6Ӓ5wahӟ@9.&Lq˲!c+WH"_njǍEwG0^X*q\ab q1+Dl̺Г*mAۘKE 3R*-wy?>Ї<!Ge_:M*!Rr˟\vv;I $b%>? oǗqyGp=lU,Vn`"DGP 8i9)3N*,d"SXKb a( u>8_?LeJd.߮S/7d;#\{ɬYbehPh֪4Y\/Ox&-]Zd䲴C$G xprsΊ_?ro?\rFo"Gb}kGpG +zJ ilՔLSbF:++V zRIv%’ (fNgyZfb{?>翜t[}?$;ߑW%_7d:#\ȸd~dL=$e*>i?*e}\7)Zz2×O2j) &l4LVع ??N}W9\ro?})&!7pGD@zSVۘ!Eqh R'MIZl'\YB X3t)QV7]pRRAA"c{鯦 >+8E?v/?]BWE\{{L]՞+ewGp)1IQ'SʌLVX>XLhoIr Ɠ=J +CUH@R>D3}eQ<a{G$?>:!IX(K⯜2 4 KFXSh>L!e>Hi8!ItϿB p.eQF?]NMDܐծ 8#p! 1@DZo2rI$(-~e3pY(*QAM.#}4݂,1^Q$3$ǟ>KČߤ \pO?0f ?\%kv冬vx^tGpkh~ھ&2HZ4xj唌ZMjk@ŕ)Ö*AWr1#س!.4+ nǟ>h S<p#\wOI\0/?]vU1Ԏ_#8#~ Po֤3xJ ގ/?/#62Yo/@IDAT]h_Aew+{?Nڌs>:󟁗v[f~\pK=O]`ʔA‚ Y#8mMj⑞PmgnR VY2%J,!egb1]h]0r).1<a{H?>:!J>9)k&i<H?/j,+Q/lϗsyGp97B)M],1%Yx_i =P !MESx'WbvQm0x?Njo*Dp 0,r3] X.&J~81TEt=_njϭewGL5s*)E xԹY_Pbs*č8 _!͗a*94e _͛8ߤ.p^"L.rCV{n=/#85 OI%vVa:OO!z"Cyog^QzVy3W;LjΊӠҘ/B+|t DtV.ET=_=8#\3Ȁbrjҡs&v\td1#ԫ1J뮋r,%oS+]>Әv1OȈOǟ>p^ 䔜roc%7˟.AꖫL"~[t/#8#p "@ŹVd|aIv&{9r7nIF'2dArV\s F09~faDmaiqǟ>W$翜dwp;.&1,Kb8#8mɑ2cXfm'h)%dM/4?ZͥRB%_M^t 0O@$A$m.NSC+GO|u#Ero?\rS _E\i{ܐ՞[8#p!ˍcb($`[Rc(VД .ư(]3NxV]JY(,=7邓Op>8_?rh]pDE?)0KvW%umyGpIddyBeosуJ5mhQ&KhRζ u=e2\A\ (ȼe(Ͽ>ǟPx#>D?G}u#"'q2o?\Xpo?|oyGpA+'/hʤ LLiH2[;CO(33zs2NN@2Ueb<̨ei0E); e?>>8ռb@|翜 +w_./Z" =_^vGpGC jV^2ʼ$初vu!{ $W WgUChy2z*a o 7ie2_|u/(.?R? Y#8_Ft^U2,>gEIb(3gT,O}8b(RR88_?wߒ9\ .I$O?|KWם_#8#pAVT1*͖bB #. .1XY:*W&T$@3oZ \ycO,>dȎ>/M.>p翜tdI.dj]@ _btTmHY JOpG0CT$#tՁ,VIME6R4d|1 ,=$֪a|_z?N/ ft88%۾˟.Ao O2~J_iϗ~9#8@;AQڻJ%33IcM \ZT% Td"0tA~ /7s1Ln2Vш=_OQы .o=:YO|9qNo3_:MzG]roN2*vi/GpGh'Ƞ^@!<0bMFJ3]F_ '[neI3\WS\Ű:Kq7+' Qh=z?NDES_op/v?I߭ocӝvz_.+1~!6pGjC#?>A' -Tx&t/~hj76@M˼k`dH]p0gϟOǟxSO?> &:WC?p3˟.*ѿH|m~kgZnj !wGp>G.zsRd1+RmCAP-3SUd3r )-H*(ޮ޲Φ _4<b{!dGHCǟhpcA./ɂizߚ]pO]E_PҶU-*3Ȏ#8#"\;DB˜&[l㐑!mZ簽 ]U7AA!Qe } 2CZavr?NSs~|4Gro?\ro?\)M|]PuN++#8#ЀZS72*ɲd? !zp#Că6O˺ jamR h*#%)XܙYo0N]qpK mt_k W\pcB)˟E]&\/r\WQ Y4{;#8m6^]%SgNR>!X>Pг[hs.N ,' UzH7ILVniVOvHi/{I}|9qkԔ7v83 5.Oeh^sWBëƪ ~n1Gpˆ HRˈd'V")@L C +OƦi͒?ASb,1֛4<ǃ??z?>& ~9_n.߮S%/rGp"pm(Q٨1cԦ2NuudgHN7 ˧K?!X&]XEœYYb(1+z?N9_. Xh\p_(gCC]7 YWA#yGp=ZχHꛁ*eJhɕһ=aa<'*&Җ>2AEo2+0-W ^,%tw%{~h_‹!>:W$fN4>m.Uw/&.-8#+9˸dxxGK͛RR* wnR+dW)_>кB~NPLSKt3an/@OOs#pKAY)qM?]KWrܐuϳtGp. ٌQKeDD%O@inc\٪p2@K2V[gC\=?)c8_?"O:m .'Gl]p_4kU^vGpGjE|oϽMCl%N3OZ`򛑉_̀pe:{Kl ^AiadRJf2C0}t1}eA<@L>8_{ӅsFY?&H˟.,WL"~ Y)JfBy GpG*6VI}Io²xfdJhPԽQV&-/1Ci%ճ|R--0u L|48!tkrxq"v#J.]_njwGSY_[-ŷۂoP Co(ef.#{݂&؊Ztt>8Ͽ&؛ 8gv/?]vUf]_njwGh+fȡJ_R!~z/2Hz)3\35lUmF*Ma$=D6f-;|9!)t&^ckpOm=M&Z.%d'vo\ҿX%ҕ_#8#p&<$ 3xY3WVfoʗn hweӊ+Fr '@{%e-IA\*&wH?>:aoUف翌s?'v/?5;M\_>?׹%uCֹ#8#&.v¾-B VZM%2Є~ч[`J,eu3]h]`@nǟQJD>_:hb\rӄg/\vÕֿ~buZ!5pGK\/Ǵn)͠p^6sϿ8.qPQ"UFRg WFWoV /#8#eC@̀ZX2ZIWYdtb Q%ÔVTi݈kn&Gc4g(#j K۔t-/>8_8q#%9')\pO]p5_ai+2fE-_K/Ⱥ\Hz:#8Lp1Cd~=*AJok RGyRJ(XX+]ɋZ;|8!N}?RQ+5GD't[@.Er{ܐ՞[8##MϭB/wt*`LNe|%ʶD(S.w1GAoq³)P*,.0 VQXzOo'ϟ8|9qϿ8򗉊.R`|bKPB: A͟[ YgGpkKL/KGF&;'j6([2E*մ]F,r\78S&,>X2lW[fΊs ?ю_JNؗ\Cw褝M}q(-ʺ?QqXx I3Nbyt'~#Q~ XyJOh/S__} ۾_M9bf;9|*t?>PE}_rزY 㞎#8_V4IܪszZNk-m+1;Oo;I('m[_{k?Oo Qjk8蓲L(,yajaBqFw/^wZ#ٙNCa0ա&w; .@ə,\ݩwX7nyVм_xHfO?t2:U1dtF}93П;M8]YПb΢U8PVK2H]an[G3LNߩѼ%tH<q 7-^Swj'j.g0;c,:e\:ͨ؋ޝ?fq}7c`^#ߦ_ޅx kT7݋L\ocXu c{Ū d6OX_~UX꒽qۃ7 l+ܵsWF]u]xq<~C@E P 31GF濾9H,2l_2WmS(y[7^^q$(X-N\Wwg~Y}iI{ *okbUOǰKG__[*˲,sngV; VQ{$~fBkWIY1/*lx=Vu1ҵ{SYXK1蒭gJq\l9~,AIcq[+5JL]3ϔb뮝H+itϿU4o.6dDc0ۜ,ZcP! /yfF>33o\xu]Fi~mĒz`w.?WH8|?^Ito[߾10q<7_{ ?Rlٵi6l^1:0N.Km3`udd/:Çe&8gδrWWUc@}];Pri/Q_JPرcEx0rso~9uO?,d t=\!TСCܥeyY6{_MҍDiܶ59Y6OOR_#8@s-ےgka"_~=ɜ(&g|a6@LOS쐴RmRȓ;}쇱Pb| k_=Kro~UloK,Fu0=xwk C"YʶYW6Ј+tJ%R v'C276i& OOk"N\Uc4Z;F,GU0Ρ3PMĴRrI^x%ЖijXqLw_+V`C>]4۪5Sxv] LCF{J%߆HfGw'< 2;|LõHֵQF %"DkOm  2kؤWXbErTtN}a] kc8xb 2ߖ7o=T Xp)/5?T|}z2ɕڌ*ƥvk?Xj _\<a9r-P'̙|aӗ|RolA*65W;z8?cƌtV:orwk}@mha^ m nܐu yGpG B@(_?7 EbTB4LWcU34FJ (RrKtTuq488}y#8#7%.wSoVm^zu7y>ލqbr"2?z?j'pQTigc.RU*z9~gkjT.ݻp1c'Q^OSv!zv)@YXFx+nB k3ǡ $ӊMjOaüx{"C<8((iEkZ??,w nNbc93XOOOF~=Ly?(/ڎsa7E*s <3: ~E؅Cw{"lKfO3NE'ѿd.o|ߩ} ^tɃhER2:l[n%8bb:CoŷLi9!zr_Kߺ+Nq)&&(( 8 ,N,RѓǪve3bQa7waQicE[+id7aY"*(o۸gX6L߈s` TCb}bܾSaTiT'ZNt{Duȱ~O8^mFQwR i3+0Bgqp;Z ѣ[G[ۆjNηhh*y>S6W8f&Qv$*jhGn]Vآ7VsǏbKN>S8\RX2X>]}\׏%ZX?+8?Y}wԜۖ&b"0ΘicF6:,= e8::mDS)QS$CV!w冕,Omʥ5? ibgwG_גj rM$۩6cpi=u+Q,;0G+B[*BHL=fMc0~${Xy:AŨ[PЬ=y 'jK"KOnqJuk?jO nֹaoNsM'f^ Y_&$:TT%С6#%]ڐ۽7hԯ9>'+zF|ᣊ2n+yq)NQԁKpNIԔ2nF#|^蘣jdE B7ϿgYb-uah S68WB#[Y/CBװJ_T=z"7?JIgddNڤ߷O] 1}ak/kme6n4k:hr?1<[-\(ZNuW7dpGp. [2zE|K~36-%DF,c$eOWة 3l DJN?1r)<vM6lYg&$Ϡ|BlFE9b:c*C Kb[lrNctu|u"N`Kk*> +b)Xh;yJQy6+xjXj;=cD.4{WX[wo.qk/ʽ+UqNY`Ti=rG`;8[ K}xL#]xq\ >f.-NOx<s`36k-I?8:}+h \Yفl6M332_Q3,ǧXT/ߏc=+9bW}ٓ ~Qzhژ" .y//qOq{bøԯ"-3W&ʬrcs5396(y鋻:uhǁo㕏rP$WL|Qچ?|8O[? +J8fH6$')bm Fz;*غyz, IOcmPUdzn_sp%^yiT ]q ۶nᣇ!'{ƨYbP$/YNEE>|8o݊4Ҙ߻O/;\ڜ/;xрۭ[W *>}iVNb-8rʳrhR<56h6kkgٽ4v <-ƣFرsnp#*Î; Rj$z"ݎqgoСCY֜4z͛64Fݻz_7l֭߀*JUQv@{2ۉ>su܉#GE.Gn;t:塸C 9-}sG~8lَ}{H[ы7mƢ%8y$qHd.TUV+O@?X>:+Ue~Gƍ1Lz3٤Yi|Ȇ\㯥;H.Go664ZtTÞϽy Y#8Mm12WyQG#VdIQ!$b\m4G*] I0Gq7J @No^iIə fœ;)]Š Aq«X=t?fm/:˰ 1- ҭ6O03>;8K/cv⑁yሬ;=,Uc'q<iދo B{;i1.6I95gpfȒ,Q|_v1|5}f4bkൟ;X&3xa"Gt*?[;yOObDjIU|9Y|wWiZGQ"SJS|f[pE)$GK+<=s%:-_9k㱉}RWbӻqeJfcP.X)}n$Q,K(,U<4!o}x/o펍8MvhW$x0n<" wHbeE8E?__F(TF)kσOļ<ӧs5rncgr?FDq_XS7q{\Djj, @yM0KڋsHdBAukQC\?D6? v#eJ)k+i3g?[4V#QNZ:#'YI;nI8X_G\| 4H P@Qy9gxW/?`/QVVbh&O|GaLt64d-_-'gaJ]Rb2H|+0@Q)-G9q?uG9tYmyor PF2PqFL[`0r:(aʕ+1`۳k7Ea^۪7n¦ 3O3m^l˖EF>1e%l.:HRo-xm/t\uUt*߰<rs[%_chM|J<8+?x0.],`ce[||+tO`޼ DaBڵ 2AC~?Y45u=/M]&3q&a2Y\$otRt,,q#Ԫ=X<3Bf$̴5Qx@yr g_ShlR?T_ٰa#6mľ,/βmѵ,-2:u .ǏcZ6tC9j$_:X`!]h?uF}/.ytKWs-iv)q#ώ#8&1)drMABN*%LTުUJQ q~RɾDЄY|<>Câ_`8*Zхx?)OZg7E3T p~2^ȢрϜ6+?} Jl^,F?? 6p} t7q8n5lhsox9XKmX }0/ڥӟtW ҂ lYa30αصM3bw~vŞ_ş?9u3&u潼WnىPxٱ t(1Q%}"]/bݸoP'Yegwn]/ڋ/V@Y:VuLTX%IdMp\ J͔行ܩ_ͨ܆?ֈAbDc[i}QܳD0_(֟X6mDa֍=-Big01dظ1Eٳ۫&b8]z*ɞ_DŽ P%pl'aZA`_4=\Y›|[iba`?u)'?2<9m 9|,ۄ?-aW2:Q1,WZrHS/T~WwO~86cmX}sI4(I1=| 5G ˎf`5c46y@3]l$LzzXGݳ*c8 AQZp'F>#П]3dVN) 򜹏z#V@|Qlve*rwJ5U1;_Dn9hl,v/+3ӓ>ɕUif~o*?zy$Kze-'=Ьkwm%O =KEj&g[҇˾Tޤ2/m_ɜ%m<+a FwdƱwxmQ+nHUؾ kMދ7aWa4fk'{:Nm+/rp , $86&zl$n҆sӔ!_秛m:t *sKiCUHX;2^[vsN7vħxw;Q&7>|1BWg)^:eOf3&אi} vqͤI0}tSkU|@ nj%gfΜ94Gb\|>\/w΢[ ;bFƬ Ǐ6mQcNgƪo/!؟$C-.rt >Qhb g ?\YYwbXa,64#}]degO=]2$W]_f6ǓO}P3oG*9lQ9oس]w]h(ѯ~{襌6߄7zC6K-b o WC@]m  B5)jp`+nzڃ7N#NV i0;v,"a{>F[nŌO4Z)j 4bWt֯*7u#fΜҪ@IDATĜ7ߦj=02F˘g5# nK* mƭѣG[/)S0yd+:,Y'O ^}dL19Ahg:iOӨrGtK3D. #8#N5VV-5/Dt"&%HW1rxѯ‹aч&RH *Ţ;{$1TZ2y'^v7 Kz5~Fq2c O,қč|[[iT:p??FR9o#q qnܼ%˭Ժ@t9K:ʒ?ڽXYB7'pS Ǹ"#UJmD܆#FiUeI4 037ۆz'b=fґer\'hj:)Q"I[i$׾2yV#wzrg^# ̔Vp{D|yjql5d oԊ8gҖƑoFbZ_[{(iQ2.1yVj>!B`_8b"z*7u*dXWT0-]We$:%p4iՉ[ֆFpjȿ(L,%\y+2(]:#=P$b{CٞWH+c4Ȓn5Rmp%R Y$qƝM3h f9K֎V-A56%eR+?[V"glˋUB _lyƸ͟*?] S˱TL)I寭{,A}-Tq6>%!eOxtdGTgıkXqLƭ$ ai[S2E &ku 2U@S:w-?epxRчΣmZxu!2SlY1};gpujz*@LS>0-Jc;0h΍VUSX'IG }xt6$CCo?'>ܟ9+؀;7`)-+OsWz][ZʼU.LƄrTx^9?=7 _w`i{cZЅJ`'eَ-Gje _}rW/c sG@ ` .Q{2э(HVF%2YΨu>b&7_PJ_>hʟ?Sл 9{#M*ϡ]wݍO>Yu5Ll)i|ڶ_3if9XwTzQSX{>0CVCèbJ]y>j激i|*ZD_b? 6QWжA͐V{6ÙV'iy d.t*JqM׹^˖e48pKzRળ`xn"lh,I]iZέ7Ш*eH2iifS?ˌ44\)8ڥ3KCZJ*V?|wh(:j 1JvNCkZovGvФ&/-Mޭ±a!Db0v˃Ǣ'_+_U?a_+!~rҗc\4Fߛ@ 㟇Uö6Ejc㉻0K&* wY6ʒWWq{ x'wX[IWe9?*6?qÃb=833r!Aw%e>S?)ip/9|Z BһQV@n<;iyWaѩL7aV =< B+o͑L\Bc_Ҡ?=uOX =W lZPn5Re9Qal;\,3С]>CW'2ۜ|㮉<g׬p1Vؔԥ<&OfM)&gơb7UQO/υAQgrvw WB\mUVVM2T Dk?xY%Wp߼I[[u8_UOs㯖+6C48KL 5=w]c;.]y ;տ#F? ,>}JeZ,sҲ$nϦ༒C$1d8VIExlPXvs 4(YkbZv=^q1 b ƕ5*6խONJn:L7ud~߆NZ*J˕=*g5TKβzT zERLHgM1M$Uf 2 oV<{K[zmMVN6lsHe'c3=]}Kd4Q\y\픋 Z0b>)E s۟(i.CVM 7+Y˷uJKիW\j&ϝ;k׮A~0nxt[-=_eoejlU'B[O~ʼc¸qs;,^{W\e6?4ɥa@}Etn9i7/buKHoP+&[?`xDZp-goz|GpG M3Hג[ZrJdi??mD&|ribSR7A.Em (%ΒoEV;{x|f.{5J*5x0׀OA*A?MQIuʵ'0j W46. !mK>-ƌG@eigǜcrt0a'e5!1>ժ%ygAZGL%5w;Nb(nHX1W A}ЉeVFgWSijH]VZUP\Uv82 ѹ@JjS?95?C"Y<Ŷ'e WJ"wX JbLucoFU1xIhhr3S[VL3ӳ-Te/!@6!Ȣ Ӷq|>|7vPlhFF@5 $!!KUZ}Oխ[{z眻}>< ZT>߮Zkց;^$;V6# ~78(vҘ.%ف~81Ց8U>|CȉWwz֨9[h[[{zZsR)?ߠ{8hplE sa0uC]NpdvowvY ^@N\F.?>{GktPKҲ߿vOBY[|ogd8!mmOM_^{EYA }V5ctȎ-ۤw]_Ouj$93r>-o;Sgk@n/{lWomy SQn.?h[=r*Y+mû%n1;~9KXbvm7iBo.k_9 6VKZ\k]Xֿk&NCox_*:0}TM| e;r(uc?D+~ђE.1ۂ0`תϥQHZիV*ۺu\weur86vʒE k?Q "^oD:&ūig={?l1|s2O-'pkC=tj}_C{ZUu~9g)/@z"C_PA.sL}SW_%mzs &Wwb\Y_js꟭;#N֙gW6 ˖?tC} _뿒}]S7?~ܘ!2M$Og68p!  Xt,a%aP GYrYzݢ'Č&ݼj:$^f׋B 锏~q&\X" =w~X*׌},u6aڡ[/6iڅܝ>v0uoǾKV͋垷t"A&S~Yrr =20g/~\V>[_MlټG degV͑!?zT̕s6p<){qПsؒyȞ,?yzPq_~Y>[yԠ~7l> Mw(GU~QRӣl{#pޞo_qz [w3w v)'!_FOz՚ZT.?SvJon٩=Q笥g'_[o~D]ڶ?ݶտ5r4U~>˛Z^>u?n}0UgB8<}2q*Tہgek?X`iWYaG{E8 EN^vDpZculzJnW}sOky\Q꽢^+گ ߐnQnqCKٞhY\}YsW-etd^<[Wt"]}2v{Q׿&_uv]WBݚWGX5+Oosu,\pMFxζߨ߹^>V 78?hawۥmYnx[_[o}g\߭TG{~ϩwh;S]vw߿mݦh<]{'qٴMy7uzū mG{j-#o-ywq'8'ܯ~ (8Ќ?^!vo'<\hmV_qvuu u~Od_xU?VD8Ǵom~;s?urpݺ_n^\n?e_vY%М?{m~BȲ-EY2DV5IHZ8qbbB{ْjԾe׫aM`0;lŨ^da4X.D7 #n2Shz5ٺ+]7 5Q;@O34mTNm_u?Y+n# ~8:XѧsFI]>bY^?yߑuC^zbտeL]''.|_OF]t|=%;Q.?[~}\NqcUJW㏛NvyCr7zsw|WW?p>g:ta;\>u"U_&/<;^-ߔLCw;bjޓNp0ԉۣ?t,,@otvرEߢse#Cۿk8{ȍ3>wtk;J9k?:>W1ͧO<=[.8Frc#䧿kͿQȖ-;[o"8i^){/FށCԇnj4-Lȩ8KJG_aBӣ5kdں{erYZ2Zjc.By_U=?򃿗[IzW Ӆ蓞WG܌86=*GԩvMl 6=K{G^ߺW5#G|A>^{eW$?uH9+W YE mCoxvi2g *N_sڻ-UN]v+]5tuy33C'6./Qj[d>}sygɩ>=6gYZ'S׋w̱gٸEywڎ?/ۭ=utC%Vzԕ䏪hPկO請S?+vֵm~OB t#~OGY[DX-f[rȠ8Q{鮕bulej(s,uhh./;-:6G>2g^*C]zdNbj-Myn*,9 Cht,++]x__ׇ\{ep\|q誴oyB]gw>+gC:Yj,^}| p(?W֪÷Չ=cSѧS|QGBu+]st{Ot{U;u^nm?[{֡ox^Yp]^6>u>}W%A9/ȵ3o/ m>'=g+Kq"Y<}ֿm-}OvSմ6׆c{#8JgP}m?!wuzڻy垻;w'?IYt"hm?l^ϸ}ws<r1GG.[vQ02cFȣ]i~GsЭ]|O+{tyJ?x{~-4?mP?V.HN'^}e뮻ܶy _g¬>C.R)kuLݰ~dob-]Tc/.Ǎ2eo_Q̟? [E>,fgɫz9 #PeDz0L0BɊfg!^e 6ȥzQ.A\quPr]jw"{quyWBT/p▚)W9OdjL~7߾=;ɨiҧxSs^X8&0:u[O~rAE1ONcrcvy[D>i)G߾[e>4M'r2pS,m6ق<Mtd;۶>}֮ݧ@\r0َoo7f)>dO>٧j-gӽߖ}GNWǩsanٻOjt;ٯ_zv7ت5Ρww@_)[am3oعWO=fO-xbHkNZ{d={J;o]82dgGk:tקQxlzv}:?~Rtǃx)dW̜-vcgwܩ\)MإCx2-Kꞩ88ڥuMu٩O6bjGߠSY 4`'v8j};wM#CT_7ۿ_@bߩN|q:z?^N`3r1>_rOn}2709/, dq,,/ L8QYY򚩏P-ǴqA|T,MWZw5iZ\>w˶+ABpVA;Z"[C=soN_^\g?i?Ol}yt}¥Wvw"Gpġ^;^0Y,܇75;M Gw:Dtt[uGc3cBZ½͓֘=5^g+3>[i%]swr _nk zߡxmTv ??;.w>A.} Yp: z>,N,!sN,jSukdۤ]hW>cXL[ϑ9:Æ@tKn{mخS8:_3_k,7ݎ ՟1lS s!xZk 8/B<j3_{&mWwZo,!b?Z~'o&syX_u>=w:vߡ73}N_xu׿jz_ 2yQ2#k,l  DlgV\fNCY^g6qCfKv\tא*p! ?rL4 @\ by]<(Gmjvng;'i=nA}zA7_We?zWB|<\>>xzV6}7]'wGOu{7pǿ㠨^5zk VuΞsq~IW`!a-,NG.Yfga(㖦# $  xyUk;BitЉ1c QW".tu!(|*oTcL<^_94&qK9/ >puT6+.% VoʟN?R<oKDͭ}2-Ǭ:W*7p~_yC~}޽{3ϖeCӧy_x75B%G-EQYopJsHHrʲyPg=.eqL:od_^.l뤜 XEE4vqq4ט8_nkNg w2\(S/|Z&'l F?_t_pG9Oy/ן~Oq5r=wRuRҭQǪeyPgq CǘųB˃O,HH2 Rf;"ˤS6&}@ܫ1uOKA9\i&"93?pv&h]x?:ӵdz4xːEÓ\*` <_q]<_r='KGIZo͉ןû1yx)#mt˶ġˆtd%E;  N4T[ 64m][[N Ӿ[{e noӸZ^4 J8P.U{=e38 Z\ee(uinx9"_:0p#O'z1_ןz7p@}p~Y^O ԴN:0\_^C4~ ;=2;Ypc ٲy ^ it t뮘{]`ǡvAW͡52,EfWz!>ٵkloew,]z?w]˘D7-C8W~I g0@m 31 ,X?s;۰'awd2x_?JOreK?9PCj^v~e[},X f͒v79sWt7R]ho0 ec8 vL26a)PƑ/LqϜ9S0٢άukתc?U$Lֆ;d UZ9=.OS5؊V sc2ӷjx *︐m!<' =: 8_r= xkj\X];q9/==d' И;Rַ'm&[} ʣK NwUYc]!x]hdzɬ={ۥGչ5_@wNӧk[Z# n)iu+8Vmj7 mpPi?'ZUիsU']8{Î?6%n<`_.yGN'߼?y/:#앷nom^缚;w̘1=n0?\Z܍Kt,u&O q,ߧF2* IH&$sm\}J8 0ԛ,/ ua eph߿_ݫd & SP˧fQ7;$@$@$@$@$@$@$@$E vvY<Sz兡.#M&ӧO.dp`&C-! HovH=##ݎ.$@$@$@Y0I&2gq yl|8h&]S7%3}l.Jݴ%      h@8'XI>w^y)],ԧy2! hiHc~-r`eq%&tٰL":Ҧ I S)-/š܉|]^U”m(C 8 c{K2C       E #ҳ|)},KBa8Y=fB9c2 MgɛՂ&HHJS">Kt*'3]^҅c"YGS)0..v0 @uvDzt”.uc2a&T2> \HH 86ÙQ0\$ Ƒ kqkCJfTب}hC=yțZb)HHHHHHH&Ffby72a&aѸmay,3 ؘm^HGVHH&;Af93!gN0ϓz2mJB/#sdU.ӍbHHHHHHH`rzZ7eyPg8DCMn0 )PG>,E2cq4#QO$@$0 D Hj ua])',;,fva<>ד'.i       06b*aQޔ>Mg!fq S2! mJ8b eakc]6K[aJБcHH`BIws ƭM)Y]*((s”,ԹL?fgaXVF't(#|HHHHHHHgyS"Y/0'I,d aY!U[Q,5%      _)'I#-(S^MJҡ*edقe.XLn!ёe4 LJ8/dSX.3; b3חJC%l,ͮ(lV9EPO$@$@$@$@$@$@$0yd9M,}Yyl+^p˲ut,OKGg_  ILgFQ,}Jeu]*afta.ΒA%.KÖٱf]:5$@$@$@$@$@$@$@S@|?EeSXua} E"}^yUt-Xftd$@$@@N|YX20ۆR,Y:[>Jh*uіHHHHHHH`j0H)?&%ey鲺ЮYq*+>&O*,HH`׹Q/K6atx=/-[՛od)L h)hђ|Y%/# m8V@㡳 7E0;3N$@$@$@$@$@$@$@&;eʔ'K6a a|%e֫3ylGd:DGVHq  IKSZQ<}J4 Dz0Ƌlc}ռq~dɜq0Uvl4 RN٦t|a:UEeK@fK\-ՂF! 'ЈsL,],k$]5/Vx'KVy%U_lHzomK$@$@$@$@$@$@$06 ͪJYU)XӁIU}<:.HnT#H0$ qdɛeSEێu+mq^jڒ:       @s"eʳҥ,Nlө:c\wye:NՂ!-IH&5FOkegTǶq+!5N%GWV&_lϲ,[c*tEy͎,#HH`JhAR&oM.%WV&_[)[ELEe D"P Zd"m4tʦ,r,fN*Ղ# "=ɟgK'VMetf0ЮJ|,ʬR?mIHHHHHH&2Β*[f]U]ݒWn㘧b !:C  )ES\y6Y*m#2T\EeYq:PN$@$0% 4˙Q2y6y:ևBQ]mQeE= T! W"۱ߖ'ґB &,Jr4J-*V|Y;Rvq        8xe+iT6aj㨓 $@$@z5Y`UƶȦHv6&s2Cx+z       (KӦLU+c fLy}^ʢ#+u$@$@S@3)U*k[ƮY6˔gaXo IHHHHHHH`20K>TWƶY6GUl-OVEGV%IH tT-}26XelW|yXWu$@$@$@$@$@$@$@$P/СRoqe/cW-kg}joRa\Y)J TXZVeE#y㲘&       D vT[emڡUlc˟ ʤ#+E2  X8f-|H^+#/ꦎHHHHHHH!d8O#ד // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN /// @sa https://json.nlohmann.me/api/adl_serializer/ template struct adl_serializer { /// @brief convert a JSON value to any value type /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ template static auto from_json(BasicJsonType && j, TargetType& val) noexcept( noexcept(::nlohmann::from_json(std::forward(j), val))) -> decltype(::nlohmann::from_json(std::forward(j), val), void()) { ::nlohmann::from_json(std::forward(j), val); } /// @brief convert a JSON value to any value type /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ template static auto from_json(BasicJsonType && j) noexcept( noexcept(::nlohmann::from_json(std::forward(j), detail::identity_tag {}))) -> decltype(::nlohmann::from_json(std::forward(j), detail::identity_tag {})) { return ::nlohmann::from_json(std::forward(j), detail::identity_tag {}); } /// @brief convert any value type to a JSON value /// @sa https://json.nlohmann.me/api/adl_serializer/to_json/ template static auto to_json(BasicJsonType& j, TargetType && val) noexcept( noexcept(::nlohmann::to_json(j, std::forward(val)))) -> decltype(::nlohmann::to_json(j, std::forward(val)), void()) { ::nlohmann::to_json(j, std::forward(val)); } }; NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/byte_container_with_subtype.hpp000066400000000000000000000067151453145653700243570ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // uint8_t, uint64_t #include // tie #include // move #include NLOHMANN_JSON_NAMESPACE_BEGIN /// @brief an internal type for a backed binary type /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/ template class byte_container_with_subtype : public BinaryType { public: using container_type = BinaryType; using subtype_type = std::uint64_t; /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype() noexcept(noexcept(container_type())) : container_type() {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) : container_type(b) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) : container_type(std::move(b)) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b))) : container_type(b) , m_subtype(subtype_) , m_has_subtype(true) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) : container_type(std::move(b)) , m_subtype(subtype_) , m_has_subtype(true) {} bool operator==(const byte_container_with_subtype& rhs) const { return std::tie(static_cast(*this), m_subtype, m_has_subtype) == std::tie(static_cast(rhs), rhs.m_subtype, rhs.m_has_subtype); } bool operator!=(const byte_container_with_subtype& rhs) const { return !(rhs == *this); } /// @brief sets the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ void set_subtype(subtype_type subtype_) noexcept { m_subtype = subtype_; m_has_subtype = true; } /// @brief return the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ constexpr subtype_type subtype() const noexcept { return m_has_subtype ? m_subtype : static_cast(-1); } /// @brief return whether the value has a subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ constexpr bool has_subtype() const noexcept { return m_has_subtype; } /// @brief clears the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ void clear_subtype() noexcept { m_subtype = 0; m_has_subtype = false; } private: subtype_type m_subtype = 0; bool m_has_subtype = false; }; NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/000077500000000000000000000000001453145653700172645ustar00rootroot00000000000000json-3.11.3/include/nlohmann/detail/abi_macros.hpp000066400000000000000000000073371453145653700221060ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once // This file contains all macro definitions affecting or depending on the ABI #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3 #warning "Already included a different version of the library!" #endif #endif #endif #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) #ifndef JSON_DIAGNOSTICS #define JSON_DIAGNOSTICS 0 #endif #ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 #endif #if JSON_DIAGNOSTICS #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag #else #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS #endif #if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp #else #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON #endif #ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 #endif // Construct the namespace ABI tags component #define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) #define NLOHMANN_JSON_ABI_TAGS \ NLOHMANN_JSON_ABI_TAGS_CONCAT( \ NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) // Construct the namespace version component #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ _v ## major ## _ ## minor ## _ ## patch #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) #if NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_VERSION #else #define NLOHMANN_JSON_NAMESPACE_VERSION \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ NLOHMANN_JSON_VERSION_MINOR, \ NLOHMANN_JSON_VERSION_PATCH) #endif // Combine namespace components #define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b #define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) #ifndef NLOHMANN_JSON_NAMESPACE #define NLOHMANN_JSON_NAMESPACE \ nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) #endif #ifndef NLOHMANN_JSON_NAMESPACE_BEGIN #define NLOHMANN_JSON_NAMESPACE_BEGIN \ namespace nlohmann \ { \ inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) \ { #endif #ifndef NLOHMANN_JSON_NAMESPACE_END #define NLOHMANN_JSON_NAMESPACE_END \ } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ } // namespace nlohmann #endif json-3.11.3/include/nlohmann/detail/conversions/000077500000000000000000000000001453145653700216345ustar00rootroot00000000000000json-3.11.3/include/nlohmann/detail/conversions/from_json.hpp000066400000000000000000000447001453145653700243460ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // transform #include // array #include // forward_list #include // inserter, front_inserter, end #include // map #include // string #include // tuple, make_tuple #include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible #include // unordered_map #include // pair, declval #include // valarray #include #include #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template inline void from_json(const BasicJsonType& j, typename std::nullptr_t& n) { if (JSON_HEDLEY_UNLIKELY(!j.is_null())) { JSON_THROW(type_error::create(302, concat("type must be null, but is ", j.type_name()), &j)); } n = nullptr; } // overloads for basic_json template parameters template < typename BasicJsonType, typename ArithmeticType, enable_if_t < std::is_arithmetic::value&& !std::is_same::value, int > = 0 > void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast(j)) { case value_t::number_unsigned: { val = static_cast(*j.template get_ptr()); break; } case value_t::number_integer: { val = static_cast(*j.template get_ptr()); break; } case value_t::number_float: { val = static_cast(*j.template get_ptr()); break; } case value_t::null: case value_t::object: case value_t::array: case value_t::string: case value_t::boolean: case value_t::binary: case value_t::discarded: default: JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j)); } } template inline void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { if (JSON_HEDLEY_UNLIKELY(!j.is_boolean())) { JSON_THROW(type_error::create(302, concat("type must be boolean, but is ", j.type_name()), &j)); } b = *j.template get_ptr(); } template inline void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j)); } s = *j.template get_ptr(); } template < typename BasicJsonType, typename StringType, enable_if_t < std::is_assignable::value && is_detected_exact::value && !std::is_same::value && !is_json_ref::value, int > = 0 > inline void from_json(const BasicJsonType& j, StringType& s) { if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j)); } s = *j.template get_ptr(); } template inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) { get_arithmetic_value(j, val); } template inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) { get_arithmetic_value(j, val); } template inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) { get_arithmetic_value(j, val); } #if !JSON_DISABLE_ENUM_SERIALIZATION template::value, int> = 0> inline void from_json(const BasicJsonType& j, EnumType& e) { typename std::underlying_type::type val; get_arithmetic_value(j, val); e = static_cast(val); } #endif // JSON_DISABLE_ENUM_SERIALIZATION // forward_list doesn't have an insert method template::value, int> = 0> inline void from_json(const BasicJsonType& j, std::forward_list& l) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } l.clear(); std::transform(j.rbegin(), j.rend(), std::front_inserter(l), [](const BasicJsonType & i) { return i.template get(); }); } // valarray doesn't have an insert method template::value, int> = 0> inline void from_json(const BasicJsonType& j, std::valarray& l) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } l.resize(j.size()); std::transform(j.begin(), j.end(), std::begin(l), [](const BasicJsonType & elem) { return elem.template get(); }); } template auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) -> decltype(j.template get(), void()) { for (std::size_t i = 0; i < N; ++i) { arr[i] = j.at(i).template get(); } } template inline void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/) { arr = *j.template get_ptr(); } template auto from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) -> decltype(j.template get(), void()) { for (std::size_t i = 0; i < N; ++i) { arr[i] = j.at(i).template get(); } } template::value, int> = 0> auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/) -> decltype( arr.reserve(std::declval()), j.template get(), void()) { using std::end; ConstructibleArrayType ret; ret.reserve(j.size()); std::transform(j.begin(), j.end(), std::inserter(ret, end(ret)), [](const BasicJsonType & i) { // get() returns *this, this won't call a from_json // method when value_type is BasicJsonType return i.template get(); }); arr = std::move(ret); } template::value, int> = 0> inline void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<0> /*unused*/) { using std::end; ConstructibleArrayType ret; std::transform( j.begin(), j.end(), std::inserter(ret, end(ret)), [](const BasicJsonType & i) { // get() returns *this, this won't call a from_json // method when value_type is BasicJsonType return i.template get(); }); arr = std::move(ret); } template < typename BasicJsonType, typename ConstructibleArrayType, enable_if_t < is_constructible_array_type::value&& !is_constructible_object_type::value&& !is_constructible_string_type::value&& !std::is_same::value&& !is_basic_json::value, int > = 0 > auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr) -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), j.template get(), void()) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } from_json_array_impl(j, arr, priority_tag<3> {}); } template < typename BasicJsonType, typename T, std::size_t... Idx > std::array from_json_inplace_array_impl(BasicJsonType&& j, identity_tag> /*unused*/, index_sequence /*unused*/) { return { { std::forward(j).at(Idx).template get()... } }; } template < typename BasicJsonType, typename T, std::size_t N > auto from_json(BasicJsonType&& j, identity_tag> tag) -> decltype(from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {})) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } return from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {}); } template inline void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin) { if (JSON_HEDLEY_UNLIKELY(!j.is_binary())) { JSON_THROW(type_error::create(302, concat("type must be binary, but is ", j.type_name()), &j)); } bin = *j.template get_ptr(); } template::value, int> = 0> inline void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) { if (JSON_HEDLEY_UNLIKELY(!j.is_object())) { JSON_THROW(type_error::create(302, concat("type must be object, but is ", j.type_name()), &j)); } ConstructibleObjectType ret; const auto* inner_object = j.template get_ptr(); using value_type = typename ConstructibleObjectType::value_type; std::transform( inner_object->begin(), inner_object->end(), std::inserter(ret, ret.begin()), [](typename BasicJsonType::object_t::value_type const & p) { return value_type(p.first, p.second.template get()); }); obj = std::move(ret); } // overload for arithmetic types, not chosen for basic_json template arguments // (BooleanType, etc..); note: Is it really necessary to provide explicit // overloads for boolean_t etc. in case of a custom BooleanType which is not // an arithmetic type? template < typename BasicJsonType, typename ArithmeticType, enable_if_t < std::is_arithmetic::value&& !std::is_same::value&& !std::is_same::value&& !std::is_same::value&& !std::is_same::value, int > = 0 > inline void from_json(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast(j)) { case value_t::number_unsigned: { val = static_cast(*j.template get_ptr()); break; } case value_t::number_integer: { val = static_cast(*j.template get_ptr()); break; } case value_t::number_float: { val = static_cast(*j.template get_ptr()); break; } case value_t::boolean: { val = static_cast(*j.template get_ptr()); break; } case value_t::null: case value_t::object: case value_t::array: case value_t::string: case value_t::binary: case value_t::discarded: default: JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j)); } } template std::tuple from_json_tuple_impl_base(BasicJsonType&& j, index_sequence /*unused*/) { return std::make_tuple(std::forward(j).at(Idx).template get()...); } template < typename BasicJsonType, class A1, class A2 > std::pair from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<0> /*unused*/) { return {std::forward(j).at(0).template get(), std::forward(j).at(1).template get()}; } template inline void from_json_tuple_impl(BasicJsonType&& j, std::pair& p, priority_tag<1> /*unused*/) { p = from_json_tuple_impl(std::forward(j), identity_tag> {}, priority_tag<0> {}); } template std::tuple from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<2> /*unused*/) { return from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); } template inline void from_json_tuple_impl(BasicJsonType&& j, std::tuple& t, priority_tag<3> /*unused*/) { t = from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); } template auto from_json(BasicJsonType&& j, TupleRelated&& t) -> decltype(from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {})) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } return from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {}); } template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value >> inline void from_json(const BasicJsonType& j, std::map& m) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } m.clear(); for (const auto& p : j) { if (JSON_HEDLEY_UNLIKELY(!p.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", p.type_name()), &j)); } m.emplace(p.at(0).template get(), p.at(1).template get()); } } template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator, typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value >> inline void from_json(const BasicJsonType& j, std::unordered_map& m) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); } m.clear(); for (const auto& p : j) { if (JSON_HEDLEY_UNLIKELY(!p.is_array())) { JSON_THROW(type_error::create(302, concat("type must be array, but is ", p.type_name()), &j)); } m.emplace(p.at(0).template get(), p.at(1).template get()); } } #if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM template inline void from_json(const BasicJsonType& j, std_fs::path& p) { if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j)); } p = *j.template get_ptr(); } #endif struct from_json_fn { template auto operator()(const BasicJsonType& j, T&& val) const noexcept(noexcept(from_json(j, std::forward(val)))) -> decltype(from_json(j, std::forward(val))) { return from_json(j, std::forward(val)); } }; } // namespace detail #ifndef JSON_HAS_CPP_17 /// namespace to hold default `from_json` function /// to see why this is required: /// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) { #endif JSON_INLINE_VARIABLE constexpr const auto& from_json = // NOLINT(misc-definitions-in-headers) detail::static_const::value; #ifndef JSON_HAS_CPP_17 } // namespace #endif NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/conversions/to_chars.hpp000066400000000000000000001132421453145653700241520ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2009 Florian Loitsch // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // array #include // signbit, isfinite #include // intN_t, uintN_t #include // memcpy, memmove #include // numeric_limits #include // conditional #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief implements the Grisu2 algorithm for binary to decimal floating-point conversion. This implementation is a slightly modified version of the reference implementation which may be obtained from http://florian.loitsch.com/publications (bench.tar.gz). The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. For a detailed description of the algorithm see: [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996 */ namespace dtoa_impl { template Target reinterpret_bits(const Source source) { static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); Target target; std::memcpy(&target, &source, sizeof(Source)); return target; } struct diyfp // f * 2^e { static constexpr int kPrecision = 64; // = q std::uint64_t f = 0; int e = 0; constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {} /*! @brief returns x - y @pre x.e == y.e and x.f >= y.f */ static diyfp sub(const diyfp& x, const diyfp& y) noexcept { JSON_ASSERT(x.e == y.e); JSON_ASSERT(x.f >= y.f); return {x.f - y.f, x.e}; } /*! @brief returns x * y @note The result is rounded. (Only the upper q bits are returned.) */ static diyfp mul(const diyfp& x, const diyfp& y) noexcept { static_assert(kPrecision == 64, "internal error"); // Computes: // f = round((x.f * y.f) / 2^q) // e = x.e + y.e + q // Emulate the 64-bit * 64-bit multiplication: // // p = u * v // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) // // (Since Q might be larger than 2^32 - 1) // // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) // // (Q_hi + H does not overflow a 64-bit int) // // = p_lo + 2^64 p_hi const std::uint64_t u_lo = x.f & 0xFFFFFFFFu; const std::uint64_t u_hi = x.f >> 32u; const std::uint64_t v_lo = y.f & 0xFFFFFFFFu; const std::uint64_t v_hi = y.f >> 32u; const std::uint64_t p0 = u_lo * v_lo; const std::uint64_t p1 = u_lo * v_hi; const std::uint64_t p2 = u_hi * v_lo; const std::uint64_t p3 = u_hi * v_hi; const std::uint64_t p0_hi = p0 >> 32u; const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu; const std::uint64_t p1_hi = p1 >> 32u; const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu; const std::uint64_t p2_hi = p2 >> 32u; std::uint64_t Q = p0_hi + p1_lo + p2_lo; // The full product might now be computed as // // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) // p_lo = p0_lo + (Q << 32) // // But in this particular case here, the full p_lo is not required. // Effectively we only need to add the highest bit in p_lo to p_hi (and // Q_hi + 1 does not overflow). Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); return {h, x.e + y.e + 64}; } /*! @brief normalize x such that the significand is >= 2^(q-1) @pre x.f != 0 */ static diyfp normalize(diyfp x) noexcept { JSON_ASSERT(x.f != 0); while ((x.f >> 63u) == 0) { x.f <<= 1u; x.e--; } return x; } /*! @brief normalize x such that the result has the exponent E @pre e >= x.e and the upper e - x.e bits of x.f must be zero. */ static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept { const int delta = x.e - target_exponent; JSON_ASSERT(delta >= 0); JSON_ASSERT(((x.f << delta) >> delta) == x.f); return {x.f << delta, target_exponent}; } }; struct boundaries { diyfp w; diyfp minus; diyfp plus; }; /*! Compute the (normalized) diyfp representing the input number 'value' and its boundaries. @pre value must be finite and positive */ template boundaries compute_boundaries(FloatType value) { JSON_ASSERT(std::isfinite(value)); JSON_ASSERT(value > 0); // Convert the IEEE representation into a diyfp. // // If v is denormal: // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) // If v is normalized: // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) static_assert(std::numeric_limits::is_iec559, "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); constexpr int kMinExp = 1 - kBias; constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1) using bits_type = typename std::conditional::type; const auto bits = static_cast(reinterpret_bits(value)); const std::uint64_t E = bits >> (kPrecision - 1); const std::uint64_t F = bits & (kHiddenBit - 1); const bool is_denormal = E == 0; const diyfp v = is_denormal ? diyfp(F, kMinExp) : diyfp(F + kHiddenBit, static_cast(E) - kBias); // Compute the boundaries m- and m+ of the floating-point value // v = f * 2^e. // // Determine v- and v+, the floating-point predecessor and successor if v, // respectively. // // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) // // v+ = v + 2^e // // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ // between m- and m+ round to v, regardless of how the input rounding // algorithm breaks ties. // // ---+-------------+-------------+-------------+-------------+--- (A) // v- m- v m+ v+ // // -----------------+------+------+-------------+-------------+--- (B) // v- m- v m+ v+ const bool lower_boundary_is_closer = F == 0 && E > 1; const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); const diyfp m_minus = lower_boundary_is_closer ? diyfp(4 * v.f - 1, v.e - 2) // (B) : diyfp(2 * v.f - 1, v.e - 1); // (A) // Determine the normalized w+ = m+. const diyfp w_plus = diyfp::normalize(m_plus); // Determine w- = m- such that e_(w-) = e_(w+). const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); return {diyfp::normalize(v), w_minus, w_plus}; } // Given normalized diyfp w, Grisu needs to find a (normalized) cached // power-of-ten c, such that the exponent of the product c * w = f * 2^e lies // within a certain range [alpha, gamma] (Definition 3.2 from [1]) // // alpha <= e = e_c + e_w + q <= gamma // // or // // f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q // <= f_c * f_w * 2^gamma // // Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies // // 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma // // or // // 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) // // The choice of (alpha,gamma) determines the size of the table and the form of // the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well // in practice: // // The idea is to cut the number c * w = f * 2^e into two parts, which can be // processed independently: An integral part p1, and a fractional part p2: // // f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e // = (f div 2^-e) + (f mod 2^-e) * 2^e // = p1 + p2 * 2^e // // The conversion of p1 into decimal form requires a series of divisions and // modulos by (a power of) 10. These operations are faster for 32-bit than for // 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be // achieved by choosing // // -e >= 32 or e <= -32 := gamma // // In order to convert the fractional part // // p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... // // into decimal form, the fraction is repeatedly multiplied by 10 and the digits // d[-i] are extracted in order: // // (10 * p2) div 2^-e = d[-1] // (10 * p2) mod 2^-e = d[-2] / 10^1 + ... // // The multiplication by 10 must not overflow. It is sufficient to choose // // 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. // // Since p2 = f mod 2^-e < 2^-e, // // -e <= 60 or e >= -60 := alpha constexpr int kAlpha = -60; constexpr int kGamma = -32; struct cached_power // c = f * 2^e ~= 10^k { std::uint64_t f; int e; int k; }; /*! For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c satisfies (Definition 3.2 from [1]) alpha <= e_c + e + q <= gamma. */ inline cached_power get_cached_power_for_binary_exponent(int e) { // Now // // alpha <= e_c + e + q <= gamma (1) // ==> f_c * 2^alpha <= c * 2^e * 2^q // // and since the c's are normalized, 2^(q-1) <= f_c, // // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) // ==> 2^(alpha - e - 1) <= c // // If c were an exact power of ten, i.e. c = 10^k, one may determine k as // // k = ceil( log_10( 2^(alpha - e - 1) ) ) // = ceil( (alpha - e - 1) * log_10(2) ) // // From the paper: // "In theory the result of the procedure could be wrong since c is rounded, // and the computation itself is approximated [...]. In practice, however, // this simple function is sufficient." // // For IEEE double precision floating-point numbers converted into // normalized diyfp's w = f * 2^e, with q = 64, // // e >= -1022 (min IEEE exponent) // -52 (p - 1) // -52 (p - 1, possibly normalize denormal IEEE numbers) // -11 (normalize the diyfp) // = -1137 // // and // // e <= +1023 (max IEEE exponent) // -52 (p - 1) // -11 (normalize the diyfp) // = 960 // // This binary exponent range [-1137,960] results in a decimal exponent // range [-307,324]. One does not need to store a cached power for each // k in this range. For each such k it suffices to find a cached power // such that the exponent of the product lies in [alpha,gamma]. // This implies that the difference of the decimal exponents of adjacent // table entries must be less than or equal to // // floor( (gamma - alpha) * log_10(2) ) = 8. // // (A smaller distance gamma-alpha would require a larger table.) // NB: // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. constexpr int kCachedPowersMinDecExp = -300; constexpr int kCachedPowersDecStep = 8; static constexpr std::array kCachedPowers = { { { 0xAB70FE17C79AC6CA, -1060, -300 }, { 0xFF77B1FCBEBCDC4F, -1034, -292 }, { 0xBE5691EF416BD60C, -1007, -284 }, { 0x8DD01FAD907FFC3C, -980, -276 }, { 0xD3515C2831559A83, -954, -268 }, { 0x9D71AC8FADA6C9B5, -927, -260 }, { 0xEA9C227723EE8BCB, -901, -252 }, { 0xAECC49914078536D, -874, -244 }, { 0x823C12795DB6CE57, -847, -236 }, { 0xC21094364DFB5637, -821, -228 }, { 0x9096EA6F3848984F, -794, -220 }, { 0xD77485CB25823AC7, -768, -212 }, { 0xA086CFCD97BF97F4, -741, -204 }, { 0xEF340A98172AACE5, -715, -196 }, { 0xB23867FB2A35B28E, -688, -188 }, { 0x84C8D4DFD2C63F3B, -661, -180 }, { 0xC5DD44271AD3CDBA, -635, -172 }, { 0x936B9FCEBB25C996, -608, -164 }, { 0xDBAC6C247D62A584, -582, -156 }, { 0xA3AB66580D5FDAF6, -555, -148 }, { 0xF3E2F893DEC3F126, -529, -140 }, { 0xB5B5ADA8AAFF80B8, -502, -132 }, { 0x87625F056C7C4A8B, -475, -124 }, { 0xC9BCFF6034C13053, -449, -116 }, { 0x964E858C91BA2655, -422, -108 }, { 0xDFF9772470297EBD, -396, -100 }, { 0xA6DFBD9FB8E5B88F, -369, -92 }, { 0xF8A95FCF88747D94, -343, -84 }, { 0xB94470938FA89BCF, -316, -76 }, { 0x8A08F0F8BF0F156B, -289, -68 }, { 0xCDB02555653131B6, -263, -60 }, { 0x993FE2C6D07B7FAC, -236, -52 }, { 0xE45C10C42A2B3B06, -210, -44 }, { 0xAA242499697392D3, -183, -36 }, { 0xFD87B5F28300CA0E, -157, -28 }, { 0xBCE5086492111AEB, -130, -20 }, { 0x8CBCCC096F5088CC, -103, -12 }, { 0xD1B71758E219652C, -77, -4 }, { 0x9C40000000000000, -50, 4 }, { 0xE8D4A51000000000, -24, 12 }, { 0xAD78EBC5AC620000, 3, 20 }, { 0x813F3978F8940984, 30, 28 }, { 0xC097CE7BC90715B3, 56, 36 }, { 0x8F7E32CE7BEA5C70, 83, 44 }, { 0xD5D238A4ABE98068, 109, 52 }, { 0x9F4F2726179A2245, 136, 60 }, { 0xED63A231D4C4FB27, 162, 68 }, { 0xB0DE65388CC8ADA8, 189, 76 }, { 0x83C7088E1AAB65DB, 216, 84 }, { 0xC45D1DF942711D9A, 242, 92 }, { 0x924D692CA61BE758, 269, 100 }, { 0xDA01EE641A708DEA, 295, 108 }, { 0xA26DA3999AEF774A, 322, 116 }, { 0xF209787BB47D6B85, 348, 124 }, { 0xB454E4A179DD1877, 375, 132 }, { 0x865B86925B9BC5C2, 402, 140 }, { 0xC83553C5C8965D3D, 428, 148 }, { 0x952AB45CFA97A0B3, 455, 156 }, { 0xDE469FBD99A05FE3, 481, 164 }, { 0xA59BC234DB398C25, 508, 172 }, { 0xF6C69A72A3989F5C, 534, 180 }, { 0xB7DCBF5354E9BECE, 561, 188 }, { 0x88FCF317F22241E2, 588, 196 }, { 0xCC20CE9BD35C78A5, 614, 204 }, { 0x98165AF37B2153DF, 641, 212 }, { 0xE2A0B5DC971F303A, 667, 220 }, { 0xA8D9D1535CE3B396, 694, 228 }, { 0xFB9B7CD9A4A7443C, 720, 236 }, { 0xBB764C4CA7A44410, 747, 244 }, { 0x8BAB8EEFB6409C1A, 774, 252 }, { 0xD01FEF10A657842C, 800, 260 }, { 0x9B10A4E5E9913129, 827, 268 }, { 0xE7109BFBA19C0C9D, 853, 276 }, { 0xAC2820D9623BF429, 880, 284 }, { 0x80444B5E7AA7CF85, 907, 292 }, { 0xBF21E44003ACDD2D, 933, 300 }, { 0x8E679C2F5E44FF8F, 960, 308 }, { 0xD433179D9C8CB841, 986, 316 }, { 0x9E19DB92B4E31BA9, 1013, 324 }, } }; // This computation gives exactly the same results for k as // k = ceil((kAlpha - e - 1) * 0.30102999566398114) // for |e| <= 1500, but doesn't require floating-point operations. // NB: log_10(2) ~= 78913 / 2^18 JSON_ASSERT(e >= -1500); JSON_ASSERT(e <= 1500); const int f = kAlpha - e - 1; const int k = (f * 78913) / (1 << 18) + static_cast(f > 0); const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; JSON_ASSERT(index >= 0); JSON_ASSERT(static_cast(index) < kCachedPowers.size()); const cached_power cached = kCachedPowers[static_cast(index)]; JSON_ASSERT(kAlpha <= cached.e + e + 64); JSON_ASSERT(kGamma >= cached.e + e + 64); return cached; } /*! For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. For n == 0, returns 1 and sets pow10 := 1. */ inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10) { // LCOV_EXCL_START if (n >= 1000000000) { pow10 = 1000000000; return 10; } // LCOV_EXCL_STOP if (n >= 100000000) { pow10 = 100000000; return 9; } if (n >= 10000000) { pow10 = 10000000; return 8; } if (n >= 1000000) { pow10 = 1000000; return 7; } if (n >= 100000) { pow10 = 100000; return 6; } if (n >= 10000) { pow10 = 10000; return 5; } if (n >= 1000) { pow10 = 1000; return 4; } if (n >= 100) { pow10 = 100; return 3; } if (n >= 10) { pow10 = 10; return 2; } pow10 = 1; return 1; } inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k) { JSON_ASSERT(len >= 1); JSON_ASSERT(dist <= delta); JSON_ASSERT(rest <= delta); JSON_ASSERT(ten_k > 0); // <--------------------------- delta ----> // <---- dist ---------> // --------------[------------------+-------------------]-------------- // M- w M+ // // ten_k // <------> // <---- rest ----> // --------------[------------------+----+--------------]-------------- // w V // = buf * 10^k // // ten_k represents a unit-in-the-last-place in the decimal representation // stored in buf. // Decrement buf by ten_k while this takes buf closer to w. // The tests are written in this order to avoid overflow in unsigned // integer arithmetic. while (rest < dist && delta - rest >= ten_k && (rest + ten_k < dist || dist - rest > rest + ten_k - dist)) { JSON_ASSERT(buf[len - 1] != '0'); buf[len - 1]--; rest += ten_k; } } /*! Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. M- and M+ must be normalized and share the same exponent -60 <= e <= -32. */ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus) { static_assert(kAlpha >= -60, "internal error"); static_assert(kGamma <= -32, "internal error"); // Generates the digits (and the exponent) of a decimal floating-point // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. // // <--------------------------- delta ----> // <---- dist ---------> // --------------[------------------+-------------------]-------------- // M- w M+ // // Grisu2 generates the digits of M+ from left to right and stops as soon as // V is in [M-,M+]. JSON_ASSERT(M_plus.e >= kAlpha); JSON_ASSERT(M_plus.e <= kGamma); std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): // // M+ = f * 2^e // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e // = ((p1 ) * 2^-e + (p2 )) * 2^e // = p1 + p2 * 2^e const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e); auto p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e // 1) // // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] JSON_ASSERT(p1 > 0); std::uint32_t pow10{}; const int k = find_largest_pow10(p1, pow10); // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) // // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) // // M+ = p1 + p2 * 2^e // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e // = d[k-1] * 10^(k-1) + ( rest) * 2^e // // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) // // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] // // but stop as soon as // // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e int n = k; while (n > 0) { // Invariants: // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) // pow10 = 10^(n-1) <= p1 < 10^n // const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) // // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) // JSON_ASSERT(d <= 9); buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d // // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) // p1 = r; n--; // // M+ = buffer * 10^n + (p1 + p2 * 2^e) // pow10 = 10^n // // Now check if enough digits have been generated. // Compute // // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e // // Note: // Since rest and delta share the same exponent e, it suffices to // compare the significands. const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2; if (rest <= delta) { // V = buffer * 10^n, with M- <= V <= M+. decimal_exponent += n; // We may now just stop. But instead look if the buffer could be // decremented to bring V closer to w. // // pow10 = 10^n is now 1 ulp in the decimal representation V. // The rounding procedure works with diyfp's with an implicit // exponent of e. // // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e // const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e; grisu2_round(buffer, length, dist, delta, rest, ten_n); return; } pow10 /= 10; // // pow10 = 10^(n-1) <= p1 < 10^n // Invariants restored. } // 2) // // The digits of the integral part have been generated: // // M+ = d[k-1]...d[1]d[0] + p2 * 2^e // = buffer + p2 * 2^e // // Now generate the digits of the fractional part p2 * 2^e. // // Note: // No decimal point is generated: the exponent is adjusted instead. // // p2 actually represents the fraction // // p2 * 2^e // = p2 / 2^-e // = d[-1] / 10^1 + d[-2] / 10^2 + ... // // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) // // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) // // using // // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) // = ( d) * 2^-e + ( r) // // or // 10^m * p2 * 2^e = d + r * 2^e // // i.e. // // M+ = buffer + p2 * 2^e // = buffer + 10^-m * (d + r * 2^e) // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e // // and stop as soon as 10^-m * r * 2^e <= delta * 2^e JSON_ASSERT(p2 > delta); int m = 0; for (;;) { // Invariant: // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e // = buffer * 10^-m + 10^-m * (p2 ) * 2^e // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e // JSON_ASSERT(p2 <= (std::numeric_limits::max)() / 10); p2 *= 10; const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e // // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e // JSON_ASSERT(d <= 9); buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d // // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e // p2 = r; m++; // // M+ = buffer * 10^-m + 10^-m * p2 * 2^e // Invariant restored. // Check if enough digits have been generated. // // 10^-m * p2 * 2^e <= delta * 2^e // p2 * 2^e <= 10^m * delta * 2^e // p2 <= 10^m * delta delta *= 10; dist *= 10; if (p2 <= delta) { break; } } // V = buffer * 10^-m, with M- <= V <= M+. decimal_exponent -= m; // 1 ulp in the decimal representation is now 10^-m. // Since delta and dist are now scaled by 10^m, we need to do the // same with ulp in order to keep the units in sync. // // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e // const std::uint64_t ten_m = one.f; grisu2_round(buffer, length, dist, delta, p2, ten_m); // By construction this algorithm generates the shortest possible decimal // number (Loitsch, Theorem 6.2) which rounds back to w. // For an input number of precision p, at least // // N = 1 + ceil(p * log_10(2)) // // decimal digits are sufficient to identify all binary floating-point // numbers (Matula, "In-and-Out conversions"). // This implies that the algorithm does not produce more than N decimal // digits. // // N = 17 for p = 53 (IEEE double precision) // N = 9 for p = 24 (IEEE single precision) } /*! v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. >= max_digits10. */ JSON_HEDLEY_NON_NULL(1) inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus) { JSON_ASSERT(m_plus.e == m_minus.e); JSON_ASSERT(m_plus.e == v.e); // --------(-----------------------+-----------------------)-------- (A) // m- v m+ // // --------------------(-----------+-----------------------)-------- (B) // m- v m+ // // First scale v (and m- and m+) such that the exponent is in the range // [alpha, gamma]. const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] const diyfp w = diyfp::mul(v, c_minus_k); const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); // ----(---+---)---------------(---+---)---------------(---+---)---- // w- w w+ // = c*m- = c*v = c*m+ // // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and // w+ are now off by a small amount. // In fact: // // w - v * 10^k < 1 ulp // // To account for this inaccuracy, add resp. subtract 1 ulp. // // --------+---[---------------(---+---)---------------]---+-------- // w- M- w M+ w+ // // Now any number in [M-, M+] (bounds included) will round to w when input, // regardless of how the input rounding algorithm breaks ties. // // And digit_gen generates the shortest possible such number in [M-, M+]. // Note that this does not mean that Grisu2 always generates the shortest // possible number in the interval (m-, m+). const diyfp M_minus(w_minus.f + 1, w_minus.e); const diyfp M_plus (w_plus.f - 1, w_plus.e ); decimal_exponent = -cached.k; // = -(-k) = k grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); } /*! v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. >= max_digits10. */ template JSON_HEDLEY_NON_NULL(1) void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) { static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, "internal error: not enough precision"); JSON_ASSERT(std::isfinite(value)); JSON_ASSERT(value > 0); // If the neighbors (and boundaries) of 'value' are always computed for double-precision // numbers, all float's can be recovered using strtod (and strtof). However, the resulting // decimal representations are not exactly "short". // // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars) // says "value is converted to a string as if by std::sprintf in the default ("C") locale" // and since sprintf promotes floats to doubles, I think this is exactly what 'std::to_chars' // does. // On the other hand, the documentation for 'std::to_chars' requires that "parsing the // representation using the corresponding std::from_chars function recovers value exactly". That // indicates that single precision floating-point numbers should be recovered using // 'std::strtof'. // // NB: If the neighbors are computed for single-precision numbers, there is a single float // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision // value is off by 1 ulp. #if 0 // NOLINT(readability-avoid-unconditional-preprocessor-if) const boundaries w = compute_boundaries(static_cast(value)); #else const boundaries w = compute_boundaries(value); #endif grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); } /*! @brief appends a decimal representation of e to buf @return a pointer to the element following the exponent. @pre -1000 < e < 1000 */ JSON_HEDLEY_NON_NULL(1) JSON_HEDLEY_RETURNS_NON_NULL inline char* append_exponent(char* buf, int e) { JSON_ASSERT(e > -1000); JSON_ASSERT(e < 1000); if (e < 0) { e = -e; *buf++ = '-'; } else { *buf++ = '+'; } auto k = static_cast(e); if (k < 10) { // Always print at least two digits in the exponent. // This is for compatibility with printf("%g"). *buf++ = '0'; *buf++ = static_cast('0' + k); } else if (k < 100) { *buf++ = static_cast('0' + k / 10); k %= 10; *buf++ = static_cast('0' + k); } else { *buf++ = static_cast('0' + k / 100); k %= 100; *buf++ = static_cast('0' + k / 10); k %= 10; *buf++ = static_cast('0' + k); } return buf; } /*! @brief prettify v = buf * 10^decimal_exponent If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. Otherwise it will be printed in exponential notation. @pre min_exp < 0 @pre max_exp > 0 */ JSON_HEDLEY_NON_NULL(1) JSON_HEDLEY_RETURNS_NON_NULL inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp, int max_exp) { JSON_ASSERT(min_exp < 0); JSON_ASSERT(max_exp > 0); const int k = len; const int n = len + decimal_exponent; // v = buf * 10^(n-k) // k is the length of the buffer (number of decimal digits) // n is the position of the decimal point relative to the start of the buffer. if (k <= n && n <= max_exp) { // digits[000] // len <= max_exp + 2 std::memset(buf + k, '0', static_cast(n) - static_cast(k)); // Make it look like a floating-point number (#362, #378) buf[n + 0] = '.'; buf[n + 1] = '0'; return buf + (static_cast(n) + 2); } if (0 < n && n <= max_exp) { // dig.its // len <= max_digits10 + 1 JSON_ASSERT(k > n); std::memmove(buf + (static_cast(n) + 1), buf + n, static_cast(k) - static_cast(n)); buf[n] = '.'; return buf + (static_cast(k) + 1U); } if (min_exp < n && n <= 0) { // 0.[000]digits // len <= 2 + (-min_exp - 1) + max_digits10 std::memmove(buf + (2 + static_cast(-n)), buf, static_cast(k)); buf[0] = '0'; buf[1] = '.'; std::memset(buf + 2, '0', static_cast(-n)); return buf + (2U + static_cast(-n) + static_cast(k)); } if (k == 1) { // dE+123 // len <= 1 + 5 buf += 1; } else { // d.igitsE+123 // len <= max_digits10 + 1 + 5 std::memmove(buf + 2, buf + 1, static_cast(k) - 1); buf[1] = '.'; buf += 1 + static_cast(k); } *buf++ = 'e'; return append_exponent(buf, n - 1); } } // namespace dtoa_impl /*! @brief generates a decimal representation of the floating-point number value in [first, last). The format of the resulting decimal representation is similar to printf's %g format. Returns an iterator pointing past-the-end of the decimal representation. @note The input number must be finite, i.e. NaN's and Inf's are not supported. @note The buffer must be large enough. @note The result is NOT null-terminated. */ template JSON_HEDLEY_NON_NULL(1, 2) JSON_HEDLEY_RETURNS_NON_NULL char* to_chars(char* first, const char* last, FloatType value) { static_cast(last); // maybe unused - fix warning JSON_ASSERT(std::isfinite(value)); // Use signbit(value) instead of (value < 0) since signbit works for -0. if (std::signbit(value)) { value = -value; *first++ = '-'; } #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wfloat-equal" #endif if (value == 0) // +-0 { *first++ = '0'; // Make it look like a floating-point number (#362, #378) *first++ = '.'; *first++ = '0'; return first; } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif JSON_ASSERT(last - first >= std::numeric_limits::max_digits10); // Compute v = buffer * 10^decimal_exponent. // The decimal digits are stored in the buffer, which needs to be interpreted // as an unsigned decimal integer. // len is the length of the buffer, i.e. the number of decimal digits. int len = 0; int decimal_exponent = 0; dtoa_impl::grisu2(first, len, decimal_exponent, value); JSON_ASSERT(len <= std::numeric_limits::max_digits10); // Format the buffer like printf("%.*g", prec, value) constexpr int kMinExp = -4; // Use digits10 here to increase compatibility with version 2. constexpr int kMaxExp = std::numeric_limits::digits10; JSON_ASSERT(last - first >= kMaxExp + 2); JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); JSON_ASSERT(last - first >= std::numeric_limits::max_digits10 + 6); return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); } } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/conversions/to_json.hpp000066400000000000000000000376221453145653700240320ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // copy #include // begin, end #include // string #include // tuple, get #include // is_same, is_constructible, is_floating_point, is_enum, underlying_type #include // move, forward, declval, pair #include // valarray #include // vector #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { ////////////////// // constructors // ////////////////// /* * Note all external_constructor<>::construct functions need to call * j.m_data.m_value.destroy(j.m_data.m_type) to avoid a memory leak in case j contains an * allocated value (e.g., a string). See bug issue * https://github.com/nlohmann/json/issues/2865 for more information. */ template struct external_constructor; template<> struct external_constructor { template static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::boolean; j.m_data.m_value = b; j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::string; j.m_data.m_value = s; j.assert_invariant(); } template static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::string; j.m_data.m_value = std::move(s); j.assert_invariant(); } template < typename BasicJsonType, typename CompatibleStringType, enable_if_t < !std::is_same::value, int > = 0 > static void construct(BasicJsonType& j, const CompatibleStringType& str) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::string; j.m_data.m_value.string = j.template create(str); j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::binary; j.m_data.m_value = typename BasicJsonType::binary_t(b); j.assert_invariant(); } template static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::binary; j.m_data.m_value = typename BasicJsonType::binary_t(std::move(b)); j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::number_float; j.m_data.m_value = val; j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::number_unsigned; j.m_data.m_value = val; j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::number_integer; j.m_data.m_value = val; j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::array; j.m_data.m_value = arr; j.set_parents(); j.assert_invariant(); } template static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::array; j.m_data.m_value = std::move(arr); j.set_parents(); j.assert_invariant(); } template < typename BasicJsonType, typename CompatibleArrayType, enable_if_t < !std::is_same::value, int > = 0 > static void construct(BasicJsonType& j, const CompatibleArrayType& arr) { using std::begin; using std::end; j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::array; j.m_data.m_value.array = j.template create(begin(arr), end(arr)); j.set_parents(); j.assert_invariant(); } template static void construct(BasicJsonType& j, const std::vector& arr) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::array; j.m_data.m_value = value_t::array; j.m_data.m_value.array->reserve(arr.size()); for (const bool x : arr) { j.m_data.m_value.array->push_back(x); j.set_parent(j.m_data.m_value.array->back()); } j.assert_invariant(); } template::value, int> = 0> static void construct(BasicJsonType& j, const std::valarray& arr) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::array; j.m_data.m_value = value_t::array; j.m_data.m_value.array->resize(arr.size()); if (arr.size() > 0) { std::copy(std::begin(arr), std::end(arr), j.m_data.m_value.array->begin()); } j.set_parents(); j.assert_invariant(); } }; template<> struct external_constructor { template static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::object; j.m_data.m_value = obj; j.set_parents(); j.assert_invariant(); } template static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) { j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::object; j.m_data.m_value = std::move(obj); j.set_parents(); j.assert_invariant(); } template < typename BasicJsonType, typename CompatibleObjectType, enable_if_t < !std::is_same::value, int > = 0 > static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { using std::begin; using std::end; j.m_data.m_value.destroy(j.m_data.m_type); j.m_data.m_type = value_t::object; j.m_data.m_value.object = j.template create(begin(obj), end(obj)); j.set_parents(); j.assert_invariant(); } }; ///////////// // to_json // ///////////// template::value, int> = 0> inline void to_json(BasicJsonType& j, T b) noexcept { external_constructor::construct(j, b); } template < typename BasicJsonType, typename BoolRef, enable_if_t < ((std::is_same::reference, BoolRef>::value && !std::is_same ::reference, typename BasicJsonType::boolean_t&>::value) || (std::is_same::const_reference, BoolRef>::value && !std::is_same ::const_reference>, typename BasicJsonType::boolean_t >::value)) && std::is_convertible::value, int > = 0 > inline void to_json(BasicJsonType& j, const BoolRef& b) noexcept { external_constructor::construct(j, static_cast(b)); } template::value, int> = 0> inline void to_json(BasicJsonType& j, const CompatibleString& s) { external_constructor::construct(j, s); } template inline void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) { external_constructor::construct(j, std::move(s)); } template::value, int> = 0> inline void to_json(BasicJsonType& j, FloatType val) noexcept { external_constructor::construct(j, static_cast(val)); } template::value, int> = 0> inline void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept { external_constructor::construct(j, static_cast(val)); } template::value, int> = 0> inline void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept { external_constructor::construct(j, static_cast(val)); } #if !JSON_DISABLE_ENUM_SERIALIZATION template::value, int> = 0> inline void to_json(BasicJsonType& j, EnumType e) noexcept { using underlying_type = typename std::underlying_type::type; external_constructor::construct(j, static_cast(e)); } #endif // JSON_DISABLE_ENUM_SERIALIZATION template inline void to_json(BasicJsonType& j, const std::vector& e) { external_constructor::construct(j, e); } template < typename BasicJsonType, typename CompatibleArrayType, enable_if_t < is_compatible_array_type::value&& !is_compatible_object_type::value&& !is_compatible_string_type::value&& !std::is_same::value&& !is_basic_json::value, int > = 0 > inline void to_json(BasicJsonType& j, const CompatibleArrayType& arr) { external_constructor::construct(j, arr); } template inline void to_json(BasicJsonType& j, const typename BasicJsonType::binary_t& bin) { external_constructor::construct(j, bin); } template::value, int> = 0> inline void to_json(BasicJsonType& j, const std::valarray& arr) { external_constructor::construct(j, std::move(arr)); } template inline void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) { external_constructor::construct(j, std::move(arr)); } template < typename BasicJsonType, typename CompatibleObjectType, enable_if_t < is_compatible_object_type::value&& !is_basic_json::value, int > = 0 > inline void to_json(BasicJsonType& j, const CompatibleObjectType& obj) { external_constructor::construct(j, obj); } template inline void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) { external_constructor::construct(j, std::move(obj)); } template < typename BasicJsonType, typename T, std::size_t N, enable_if_t < !std::is_constructible::value, // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) int > = 0 > inline void to_json(BasicJsonType& j, const T(&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) { external_constructor::construct(j, arr); } template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible::value&& std::is_constructible::value, int > = 0 > inline void to_json(BasicJsonType& j, const std::pair& p) { j = { p.first, p.second }; } // for https://github.com/nlohmann/json/pull/1134 template>::value, int> = 0> inline void to_json(BasicJsonType& j, const T& b) { j = { {b.key(), b.value()} }; } template inline void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence /*unused*/) { j = { std::get(t)... }; } template::value, int > = 0> inline void to_json(BasicJsonType& j, const T& t) { to_json_tuple_impl(j, t, make_index_sequence::value> {}); } #if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM template inline void to_json(BasicJsonType& j, const std_fs::path& p) { j = p.string(); } #endif struct to_json_fn { template auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward(val)))) -> decltype(to_json(j, std::forward(val)), void()) { return to_json(j, std::forward(val)); } }; } // namespace detail #ifndef JSON_HAS_CPP_17 /// namespace to hold default `to_json` function /// to see why this is required: /// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) { #endif JSON_INLINE_VARIABLE constexpr const auto& to_json = // NOLINT(misc-definitions-in-headers) detail::static_const::value; #ifndef JSON_HAS_CPP_17 } // namespace #endif NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/exceptions.hpp000066400000000000000000000220631453145653700221610ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // nullptr_t #include // exception #if JSON_DIAGNOSTICS #include // accumulate #endif #include // runtime_error #include // to_string #include // vector #include #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { //////////////// // exceptions // //////////////// /// @brief general exception of the @ref basic_json class /// @sa https://json.nlohmann.me/api/basic_json/exception/ class exception : public std::exception { public: /// returns the explanatory string const char* what() const noexcept override { return m.what(); } /// the id of the exception const int id; // NOLINT(cppcoreguidelines-non-private-member-variables-in-classes) protected: JSON_HEDLEY_NON_NULL(3) exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing) static std::string name(const std::string& ename, int id_) { return concat("[json.exception.", ename, '.', std::to_string(id_), "] "); } static std::string diagnostics(std::nullptr_t /*leaf_element*/) { return ""; } template static std::string diagnostics(const BasicJsonType* leaf_element) { #if JSON_DIAGNOSTICS std::vector tokens; for (const auto* current = leaf_element; current != nullptr && current->m_parent != nullptr; current = current->m_parent) { switch (current->m_parent->type()) { case value_t::array: { for (std::size_t i = 0; i < current->m_parent->m_data.m_value.array->size(); ++i) { if (¤t->m_parent->m_data.m_value.array->operator[](i) == current) { tokens.emplace_back(std::to_string(i)); break; } } break; } case value_t::object: { for (const auto& element : *current->m_parent->m_data.m_value.object) { if (&element.second == current) { tokens.emplace_back(element.first.c_str()); break; } } break; } case value_t::null: // LCOV_EXCL_LINE case value_t::string: // LCOV_EXCL_LINE case value_t::boolean: // LCOV_EXCL_LINE case value_t::number_integer: // LCOV_EXCL_LINE case value_t::number_unsigned: // LCOV_EXCL_LINE case value_t::number_float: // LCOV_EXCL_LINE case value_t::binary: // LCOV_EXCL_LINE case value_t::discarded: // LCOV_EXCL_LINE default: // LCOV_EXCL_LINE break; // LCOV_EXCL_LINE } } if (tokens.empty()) { return ""; } auto str = std::accumulate(tokens.rbegin(), tokens.rend(), std::string{}, [](const std::string & a, const std::string & b) { return concat(a, '/', detail::escape(b)); }); return concat('(', str, ") "); #else static_cast(leaf_element); return ""; #endif } private: /// an exception object as storage for error messages std::runtime_error m; }; /// @brief exception indicating a parse error /// @sa https://json.nlohmann.me/api/basic_json/parse_error/ class parse_error : public exception { public: /*! @brief create a parse error exception @param[in] id_ the id of the exception @param[in] pos the position where the error occurred (or with chars_read_total=0 if the position cannot be determined) @param[in] what_arg the explanatory string @return parse_error object */ template::value, int> = 0> static parse_error create(int id_, const position_t& pos, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("parse_error", id_), "parse error", position_string(pos), ": ", exception::diagnostics(context), what_arg); return {id_, pos.chars_read_total, w.c_str()}; } template::value, int> = 0> static parse_error create(int id_, std::size_t byte_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("parse_error", id_), "parse error", (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""), ": ", exception::diagnostics(context), what_arg); return {id_, byte_, w.c_str()}; } /*! @brief byte index of the parse error The byte index of the last read character in the input file. @note For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack). */ const std::size_t byte; private: parse_error(int id_, std::size_t byte_, const char* what_arg) : exception(id_, what_arg), byte(byte_) {} static std::string position_string(const position_t& pos) { return concat(" at line ", std::to_string(pos.lines_read + 1), ", column ", std::to_string(pos.chars_read_current_line)); } }; /// @brief exception indicating errors with iterators /// @sa https://json.nlohmann.me/api/basic_json/invalid_iterator/ class invalid_iterator : public exception { public: template::value, int> = 0> static invalid_iterator create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("invalid_iterator", id_), exception::diagnostics(context), what_arg); return {id_, w.c_str()}; } private: JSON_HEDLEY_NON_NULL(3) invalid_iterator(int id_, const char* what_arg) : exception(id_, what_arg) {} }; /// @brief exception indicating executing a member function with a wrong type /// @sa https://json.nlohmann.me/api/basic_json/type_error/ class type_error : public exception { public: template::value, int> = 0> static type_error create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("type_error", id_), exception::diagnostics(context), what_arg); return {id_, w.c_str()}; } private: JSON_HEDLEY_NON_NULL(3) type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} }; /// @brief exception indicating access out of the defined range /// @sa https://json.nlohmann.me/api/basic_json/out_of_range/ class out_of_range : public exception { public: template::value, int> = 0> static out_of_range create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg); return {id_, w.c_str()}; } private: JSON_HEDLEY_NON_NULL(3) out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} }; /// @brief exception indicating other library errors /// @sa https://json.nlohmann.me/api/basic_json/other_error/ class other_error : public exception { public: template::value, int> = 0> static other_error create(int id_, const std::string& what_arg, BasicJsonContext context) { const std::string w = concat(exception::name("other_error", id_), exception::diagnostics(context), what_arg); return {id_, w.c_str()}; } private: JSON_HEDLEY_NON_NULL(3) other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/hash.hpp000066400000000000000000000076601453145653700207310ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // uint8_t #include // size_t #include // hash #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // boost::hash_combine inline std::size_t combine(std::size_t seed, std::size_t h) noexcept { seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); return seed; } /*! @brief hash a JSON value The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc. @tparam BasicJsonType basic_json specialization @param j JSON value to hash @return hash value of j */ template std::size_t hash(const BasicJsonType& j) { using string_t = typename BasicJsonType::string_t; using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; const auto type = static_cast(j.type()); switch (j.type()) { case BasicJsonType::value_t::null: case BasicJsonType::value_t::discarded: { return combine(type, 0); } case BasicJsonType::value_t::object: { auto seed = combine(type, j.size()); for (const auto& element : j.items()) { const auto h = std::hash {}(element.key()); seed = combine(seed, h); seed = combine(seed, hash(element.value())); } return seed; } case BasicJsonType::value_t::array: { auto seed = combine(type, j.size()); for (const auto& element : j) { seed = combine(seed, hash(element)); } return seed; } case BasicJsonType::value_t::string: { const auto h = std::hash {}(j.template get_ref()); return combine(type, h); } case BasicJsonType::value_t::boolean: { const auto h = std::hash {}(j.template get()); return combine(type, h); } case BasicJsonType::value_t::number_integer: { const auto h = std::hash {}(j.template get()); return combine(type, h); } case BasicJsonType::value_t::number_unsigned: { const auto h = std::hash {}(j.template get()); return combine(type, h); } case BasicJsonType::value_t::number_float: { const auto h = std::hash {}(j.template get()); return combine(type, h); } case BasicJsonType::value_t::binary: { auto seed = combine(type, j.get_binary().size()); const auto h = std::hash {}(j.get_binary().has_subtype()); seed = combine(seed, h); seed = combine(seed, static_cast(j.get_binary().subtype())); for (const auto byte : j.get_binary()) { seed = combine(seed, std::hash {}(byte)); } return seed; } default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE return 0; // LCOV_EXCL_LINE } } } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/input/000077500000000000000000000000001453145653700204235ustar00rootroot00000000000000json-3.11.3/include/nlohmann/detail/input/binary_reader.hpp000066400000000000000000003113521453145653700237470ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // generate_n #include // array #include // ldexp #include // size_t #include // uint8_t, uint16_t, uint32_t, uint64_t #include // snprintf #include // memcpy #include // back_inserter #include // numeric_limits #include // char_traits, string #include // make_pair, move #include // vector #include #include #include #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// how to treat CBOR tags enum class cbor_tag_handler_t { error, ///< throw a parse_error exception in case of a tag ignore, ///< ignore tags store ///< store tags as binary type }; /*! @brief determine system byte order @return true if and only if system's byte order is little endian @note from https://stackoverflow.com/a/1001328/266378 */ static inline bool little_endianness(int num = 1) noexcept { return *reinterpret_cast(&num) == 1; } /////////////////// // binary reader // /////////////////// /*! @brief deserialization of CBOR, MessagePack, and UBJSON values */ template> class binary_reader { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; using json_sax_t = SAX; using char_type = typename InputAdapterType::char_type; using char_int_type = typename char_traits::int_type; public: /*! @brief create a binary reader @param[in] adapter input adapter to read from */ explicit binary_reader(InputAdapterType&& adapter, const input_format_t format = input_format_t::json) noexcept : ia(std::move(adapter)), input_format(format) { (void)detail::is_sax_static_asserts {}; } // make class move-only binary_reader(const binary_reader&) = delete; binary_reader(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) binary_reader& operator=(const binary_reader&) = delete; binary_reader& operator=(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) ~binary_reader() = default; /*! @param[in] format the binary format to parse @param[in] sax_ a SAX event processor @param[in] strict whether to expect the input to be consumed completed @param[in] tag_handler how to treat CBOR tags @return whether parsing was successful */ JSON_HEDLEY_NON_NULL(3) bool sax_parse(const input_format_t format, json_sax_t* sax_, const bool strict = true, const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) { sax = sax_; bool result = false; switch (format) { case input_format_t::bson: result = parse_bson_internal(); break; case input_format_t::cbor: result = parse_cbor_internal(true, tag_handler); break; case input_format_t::msgpack: result = parse_msgpack_internal(); break; case input_format_t::ubjson: case input_format_t::bjdata: result = parse_ubjson_internal(); break; case input_format_t::json: // LCOV_EXCL_LINE default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE } // strict mode: next byte must be EOF if (result && strict) { if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata) { get_ignore_noop(); } else { get(); } if (JSON_HEDLEY_UNLIKELY(current != char_traits::eof())) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(110, chars_read, exception_message(input_format, concat("expected end of input; last byte: 0x", get_token_string()), "value"), nullptr)); } } return result; } private: ////////// // BSON // ////////// /*! @brief Reads in a BSON-object and passes it to the SAX-parser. @return whether a valid BSON-value was passed to the SAX parser */ bool parse_bson_internal() { std::int32_t document_size{}; get_number(input_format_t::bson, document_size); if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/false))) { return false; } return sax->end_object(); } /*! @brief Parses a C-style string from the BSON input. @param[in,out] result A reference to the string variable where the read string is to be stored. @return `true` if the \x00-byte indicating the end of the string was encountered before the EOF; false` indicates an unexpected EOF. */ bool get_bson_cstr(string_t& result) { auto out = std::back_inserter(result); while (true) { get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "cstring"))) { return false; } if (current == 0x00) { return true; } *out++ = static_cast(current); } } /*! @brief Parses a zero-terminated string of length @a len from the BSON input. @param[in] len The length (including the zero-byte at the end) of the string to be read. @param[in,out] result A reference to the string variable where the read string is to be stored. @tparam NumberType The type of the length @a len @pre len >= 1 @return `true` if the string was successfully parsed */ template bool get_bson_string(const NumberType len, string_t& result) { if (JSON_HEDLEY_UNLIKELY(len < 1)) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, concat("string length must be at least 1, is ", std::to_string(len)), "string"), nullptr)); } return get_string(input_format_t::bson, len - static_cast(1), result) && get() != char_traits::eof(); } /*! @brief Parses a byte array input of length @a len from the BSON input. @param[in] len The length of the byte array to be read. @param[in,out] result A reference to the binary variable where the read array is to be stored. @tparam NumberType The type of the length @a len @pre len >= 0 @return `true` if the byte array was successfully parsed */ template bool get_bson_binary(const NumberType len, binary_t& result) { if (JSON_HEDLEY_UNLIKELY(len < 0)) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, concat("byte array length cannot be negative, is ", std::to_string(len)), "binary"), nullptr)); } // All BSON binary values have a subtype std::uint8_t subtype{}; get_number(input_format_t::bson, subtype); result.set_subtype(subtype); return get_binary(input_format_t::bson, len, result); } /*! @brief Read a BSON document element of the given @a element_type. @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html @param[in] element_type_parse_position The position in the input stream, where the `element_type` was read. @warning Not all BSON element types are supported yet. An unsupported @a element_type will give rise to a parse_error.114: Unsupported BSON record type 0x... @return whether a valid BSON-object/array was passed to the SAX parser */ bool parse_bson_element_internal(const char_int_type element_type, const std::size_t element_type_parse_position) { switch (element_type) { case 0x01: // double { double number{}; return get_number(input_format_t::bson, number) && sax->number_float(static_cast(number), ""); } case 0x02: // string { std::int32_t len{}; string_t value; return get_number(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value); } case 0x03: // object { return parse_bson_internal(); } case 0x04: // array { return parse_bson_array(); } case 0x05: // binary { std::int32_t len{}; binary_t value; return get_number(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value); } case 0x08: // boolean { return sax->boolean(get() != 0); } case 0x0A: // null { return sax->null(); } case 0x10: // int32 { std::int32_t value{}; return get_number(input_format_t::bson, value) && sax->number_integer(value); } case 0x12: // int64 { std::int64_t value{}; return get_number(input_format_t::bson, value) && sax->number_integer(value); } default: // anything else not supported (yet) { std::array cr{{}}; static_cast((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(element_type))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) const std::string cr_str{cr.data()}; return sax->parse_error(element_type_parse_position, cr_str, parse_error::create(114, element_type_parse_position, concat("Unsupported BSON record type 0x", cr_str), nullptr)); } } } /*! @brief Read a BSON element list (as specified in the BSON-spec) The same binary layout is used for objects and arrays, hence it must be indicated with the argument @a is_array which one is expected (true --> array, false --> object). @param[in] is_array Determines if the element list being read is to be treated as an object (@a is_array == false), or as an array (@a is_array == true). @return whether a valid BSON-object/array was passed to the SAX parser */ bool parse_bson_element_list(const bool is_array) { string_t key; while (auto element_type = get()) { if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "element list"))) { return false; } const std::size_t element_type_parse_position = chars_read; if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key))) { return false; } if (!is_array && !sax->key(key)) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position))) { return false; } // get_bson_cstr only appends key.clear(); } return true; } /*! @brief Reads an array from the BSON input and passes it to the SAX-parser. @return whether a valid BSON-array was passed to the SAX parser */ bool parse_bson_array() { std::int32_t document_size{}; get_number(input_format_t::bson, document_size); if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/true))) { return false; } return sax->end_array(); } ////////// // CBOR // ////////// /*! @param[in] get_char whether a new character should be retrieved from the input (true) or whether the last read character should be considered instead (false) @param[in] tag_handler how CBOR tags should be treated @return whether a valid CBOR value was passed to the SAX parser */ bool parse_cbor_internal(const bool get_char, const cbor_tag_handler_t tag_handler) { switch (get_char ? get() : current) { // EOF case char_traits::eof(): return unexpect_eof(input_format_t::cbor, "value"); // Integer 0x00..0x17 (0..23) case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case 0x09: case 0x0A: case 0x0B: case 0x0C: case 0x0D: case 0x0E: case 0x0F: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: return sax->number_unsigned(static_cast(current)); case 0x18: // Unsigned integer (one-byte uint8_t follows) { std::uint8_t number{}; return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } case 0x19: // Unsigned integer (two-byte uint16_t follows) { std::uint16_t number{}; return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } case 0x1A: // Unsigned integer (four-byte uint32_t follows) { std::uint32_t number{}; return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } case 0x1B: // Unsigned integer (eight-byte uint64_t follows) { std::uint64_t number{}; return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } // Negative integer -1-0x00..-1-0x17 (-1..-24) case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: case 0x29: case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E: case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: return sax->number_integer(static_cast(0x20 - 1 - current)); case 0x38: // Negative integer (one-byte uint8_t follows) { std::uint8_t number{}; return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); } case 0x39: // Negative integer -1-n (two-byte uint16_t follows) { std::uint16_t number{}; return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); } case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) { std::uint32_t number{}; return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); } case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) { std::uint64_t number{}; return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - static_cast(number)); } // Binary data (0x00..0x17 bytes follow) case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C: case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: case 0x58: // Binary data (one-byte uint8_t for n follows) case 0x59: // Binary data (two-byte uint16_t for n follow) case 0x5A: // Binary data (four-byte uint32_t for n follow) case 0x5B: // Binary data (eight-byte uint64_t for n follow) case 0x5F: // Binary data (indefinite length) { binary_t b; return get_cbor_binary(b) && sax->binary(b); } // UTF-8 string (0x00..0x17 bytes follow) case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A: case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F: case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: // UTF-8 string (one-byte uint8_t for n follows) case 0x79: // UTF-8 string (two-byte uint16_t for n follow) case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) case 0x7F: // UTF-8 string (indefinite length) { string_t s; return get_cbor_string(s) && sax->string(s); } // array (0x00..0x17 data items follow) case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E: case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: return get_cbor_array( conditional_static_cast(static_cast(current) & 0x1Fu), tag_handler); case 0x98: // array (one-byte uint8_t for n follows) { std::uint8_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); } case 0x99: // array (two-byte uint16_t for n follow) { std::uint16_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); } case 0x9A: // array (four-byte uint32_t for n follow) { std::uint32_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_array(conditional_static_cast(len), tag_handler); } case 0x9B: // array (eight-byte uint64_t for n follow) { std::uint64_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_array(conditional_static_cast(len), tag_handler); } case 0x9F: // array (indefinite length) return get_cbor_array(static_cast(-1), tag_handler); // map (0x00..0x17 pairs of data items follow) case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: return get_cbor_object(conditional_static_cast(static_cast(current) & 0x1Fu), tag_handler); case 0xB8: // map (one-byte uint8_t for n follows) { std::uint8_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); } case 0xB9: // map (two-byte uint16_t for n follow) { std::uint16_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); } case 0xBA: // map (four-byte uint32_t for n follow) { std::uint32_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_object(conditional_static_cast(len), tag_handler); } case 0xBB: // map (eight-byte uint64_t for n follow) { std::uint64_t len{}; return get_number(input_format_t::cbor, len) && get_cbor_object(conditional_static_cast(len), tag_handler); } case 0xBF: // map (indefinite length) return get_cbor_object(static_cast(-1), tag_handler); case 0xC6: // tagged item case 0xC7: case 0xC8: case 0xC9: case 0xCA: case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF: case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4: case 0xD8: // tagged item (1 bytes follow) case 0xD9: // tagged item (2 bytes follow) case 0xDA: // tagged item (4 bytes follow) case 0xDB: // tagged item (8 bytes follow) { switch (tag_handler) { case cbor_tag_handler_t::error: { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, concat("invalid byte: 0x", last_token), "value"), nullptr)); } case cbor_tag_handler_t::ignore: { // ignore binary subtype switch (current) { case 0xD8: { std::uint8_t subtype_to_ignore{}; get_number(input_format_t::cbor, subtype_to_ignore); break; } case 0xD9: { std::uint16_t subtype_to_ignore{}; get_number(input_format_t::cbor, subtype_to_ignore); break; } case 0xDA: { std::uint32_t subtype_to_ignore{}; get_number(input_format_t::cbor, subtype_to_ignore); break; } case 0xDB: { std::uint64_t subtype_to_ignore{}; get_number(input_format_t::cbor, subtype_to_ignore); break; } default: break; } return parse_cbor_internal(true, tag_handler); } case cbor_tag_handler_t::store: { binary_t b; // use binary subtype and store in binary container switch (current) { case 0xD8: { std::uint8_t subtype{}; get_number(input_format_t::cbor, subtype); b.set_subtype(detail::conditional_static_cast(subtype)); break; } case 0xD9: { std::uint16_t subtype{}; get_number(input_format_t::cbor, subtype); b.set_subtype(detail::conditional_static_cast(subtype)); break; } case 0xDA: { std::uint32_t subtype{}; get_number(input_format_t::cbor, subtype); b.set_subtype(detail::conditional_static_cast(subtype)); break; } case 0xDB: { std::uint64_t subtype{}; get_number(input_format_t::cbor, subtype); b.set_subtype(detail::conditional_static_cast(subtype)); break; } default: return parse_cbor_internal(true, tag_handler); } get(); return get_cbor_binary(b) && sax->binary(b); } default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE return false; // LCOV_EXCL_LINE } } case 0xF4: // false return sax->boolean(false); case 0xF5: // true return sax->boolean(true); case 0xF6: // null return sax->null(); case 0xF9: // Half-Precision Float (two-byte IEEE 754) { const auto byte1_raw = get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) { return false; } const auto byte2_raw = get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) { return false; } const auto byte1 = static_cast(byte1_raw); const auto byte2 = static_cast(byte2_raw); // code from RFC 7049, Appendix D, Figure 3: // As half-precision floating-point numbers were only added // to IEEE 754 in 2008, today's programming platforms often // still only have limited support for them. It is very // easy to include at least decoding support for them even // without such support. An example of a small decoder for // half-precision floating-point numbers in the C language // is shown in Fig. 3. const auto half = static_cast((byte1 << 8u) + byte2); const double val = [&half] { const int exp = (half >> 10u) & 0x1Fu; const unsigned int mant = half & 0x3FFu; JSON_ASSERT(0 <= exp&& exp <= 32); JSON_ASSERT(mant <= 1024); switch (exp) { case 0: return std::ldexp(mant, -24); case 31: return (mant == 0) ? std::numeric_limits::infinity() : std::numeric_limits::quiet_NaN(); default: return std::ldexp(mant + 1024, exp - 25); } }(); return sax->number_float((half & 0x8000u) != 0 ? static_cast(-val) : static_cast(val), ""); } case 0xFA: // Single-Precision Float (four-byte IEEE 754) { float number{}; return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); } case 0xFB: // Double-Precision Float (eight-byte IEEE 754) { double number{}; return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); } default: // anything else (0xFF is handled inside the other types) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, concat("invalid byte: 0x", last_token), "value"), nullptr)); } } } /*! @brief reads a CBOR string This function first reads starting bytes to determine the expected string length and then copies this number of bytes into a string. Additionally, CBOR's strings with indefinite lengths are supported. @param[out] result created string @return whether string creation completed */ bool get_cbor_string(string_t& result) { if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "string"))) { return false; } switch (current) { // UTF-8 string (0x00..0x17 bytes follow) case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A: case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F: case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: { return get_string(input_format_t::cbor, static_cast(current) & 0x1Fu, result); } case 0x78: // UTF-8 string (one-byte uint8_t for n follows) { std::uint8_t len{}; return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x79: // UTF-8 string (two-byte uint16_t for n follow) { std::uint16_t len{}; return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) { std::uint32_t len{}; return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) { std::uint64_t len{}; return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x7F: // UTF-8 string (indefinite length) { while (get() != 0xFF) { string_t chunk; if (!get_cbor_string(chunk)) { return false; } result.append(chunk); } return true; } default: { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, concat("expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x", last_token), "string"), nullptr)); } } } /*! @brief reads a CBOR byte array This function first reads starting bytes to determine the expected byte array length and then copies this number of bytes into the byte array. Additionally, CBOR's byte arrays with indefinite lengths are supported. @param[out] result created byte array @return whether byte array creation completed */ bool get_cbor_binary(binary_t& result) { if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "binary"))) { return false; } switch (current) { // Binary data (0x00..0x17 bytes follow) case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C: case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: { return get_binary(input_format_t::cbor, static_cast(current) & 0x1Fu, result); } case 0x58: // Binary data (one-byte uint8_t for n follows) { std::uint8_t len{}; return get_number(input_format_t::cbor, len) && get_binary(input_format_t::cbor, len, result); } case 0x59: // Binary data (two-byte uint16_t for n follow) { std::uint16_t len{}; return get_number(input_format_t::cbor, len) && get_binary(input_format_t::cbor, len, result); } case 0x5A: // Binary data (four-byte uint32_t for n follow) { std::uint32_t len{}; return get_number(input_format_t::cbor, len) && get_binary(input_format_t::cbor, len, result); } case 0x5B: // Binary data (eight-byte uint64_t for n follow) { std::uint64_t len{}; return get_number(input_format_t::cbor, len) && get_binary(input_format_t::cbor, len, result); } case 0x5F: // Binary data (indefinite length) { while (get() != 0xFF) { binary_t chunk; if (!get_cbor_binary(chunk)) { return false; } result.insert(result.end(), chunk.begin(), chunk.end()); } return true; } default: { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, concat("expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x", last_token), "binary"), nullptr)); } } } /*! @param[in] len the length of the array or static_cast(-1) for an array of indefinite size @param[in] tag_handler how CBOR tags should be treated @return whether array creation completed */ bool get_cbor_array(const std::size_t len, const cbor_tag_handler_t tag_handler) { if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) { return false; } if (len != static_cast(-1)) { for (std::size_t i = 0; i < len; ++i) { if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) { return false; } } } else { while (get() != 0xFF) { if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(false, tag_handler))) { return false; } } } return sax->end_array(); } /*! @param[in] len the length of the object or static_cast(-1) for an object of indefinite size @param[in] tag_handler how CBOR tags should be treated @return whether object creation completed */ bool get_cbor_object(const std::size_t len, const cbor_tag_handler_t tag_handler) { if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) { return false; } if (len != 0) { string_t key; if (len != static_cast(-1)) { for (std::size_t i = 0; i < len; ++i) { get(); if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) { return false; } key.clear(); } } else { while (get() != 0xFF) { if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) { return false; } key.clear(); } } } return sax->end_object(); } ///////////// // MsgPack // ///////////// /*! @return whether a valid MessagePack value was passed to the SAX parser */ bool parse_msgpack_internal() { switch (get()) { // EOF case char_traits::eof(): return unexpect_eof(input_format_t::msgpack, "value"); // positive fixint case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case 0x09: case 0x0A: case 0x0B: case 0x0C: case 0x0D: case 0x0E: case 0x0F: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: case 0x1D: case 0x1E: case 0x1F: case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: case 0x29: case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E: case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D: case 0x3E: case 0x3F: case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C: case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: case 0x58: case 0x59: case 0x5A: case 0x5B: case 0x5C: case 0x5D: case 0x5E: case 0x5F: case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A: case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F: case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E: case 0x7F: return sax->number_unsigned(static_cast(current)); // fixmap case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E: case 0x8F: return get_msgpack_object(conditional_static_cast(static_cast(current) & 0x0Fu)); // fixarray case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: case 0x98: case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D: case 0x9E: case 0x9F: return get_msgpack_array(conditional_static_cast(static_cast(current) & 0x0Fu)); // fixstr case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB: case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xD9: // str 8 case 0xDA: // str 16 case 0xDB: // str 32 { string_t s; return get_msgpack_string(s) && sax->string(s); } case 0xC0: // nil return sax->null(); case 0xC2: // false return sax->boolean(false); case 0xC3: // true return sax->boolean(true); case 0xC4: // bin 8 case 0xC5: // bin 16 case 0xC6: // bin 32 case 0xC7: // ext 8 case 0xC8: // ext 16 case 0xC9: // ext 32 case 0xD4: // fixext 1 case 0xD5: // fixext 2 case 0xD6: // fixext 4 case 0xD7: // fixext 8 case 0xD8: // fixext 16 { binary_t b; return get_msgpack_binary(b) && sax->binary(b); } case 0xCA: // float 32 { float number{}; return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); } case 0xCB: // float 64 { double number{}; return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); } case 0xCC: // uint 8 { std::uint8_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xCD: // uint 16 { std::uint16_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xCE: // uint 32 { std::uint32_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xCF: // uint 64 { std::uint64_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xD0: // int 8 { std::int8_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xD1: // int 16 { std::int16_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xD2: // int 32 { std::int32_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xD3: // int 64 { std::int64_t number{}; return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xDC: // array 16 { std::uint16_t len{}; return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); } case 0xDD: // array 32 { std::uint32_t len{}; return get_number(input_format_t::msgpack, len) && get_msgpack_array(conditional_static_cast(len)); } case 0xDE: // map 16 { std::uint16_t len{}; return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); } case 0xDF: // map 32 { std::uint32_t len{}; return get_number(input_format_t::msgpack, len) && get_msgpack_object(conditional_static_cast(len)); } // negative fixint case 0xE0: case 0xE1: case 0xE2: case 0xE3: case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8: case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED: case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2: case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7: case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC: case 0xFD: case 0xFE: case 0xFF: return sax->number_integer(static_cast(current)); default: // anything else { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, concat("invalid byte: 0x", last_token), "value"), nullptr)); } } } /*! @brief reads a MessagePack string This function first reads starting bytes to determine the expected string length and then copies this number of bytes into a string. @param[out] result created string @return whether string creation completed */ bool get_msgpack_string(string_t& result) { if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::msgpack, "string"))) { return false; } switch (current) { // fixstr case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB: case 0xBC: case 0xBD: case 0xBE: case 0xBF: { return get_string(input_format_t::msgpack, static_cast(current) & 0x1Fu, result); } case 0xD9: // str 8 { std::uint8_t len{}; return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); } case 0xDA: // str 16 { std::uint16_t len{}; return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); } case 0xDB: // str 32 { std::uint32_t len{}; return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); } default: { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, concat("expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x", last_token), "string"), nullptr)); } } } /*! @brief reads a MessagePack byte array This function first reads starting bytes to determine the expected byte array length and then copies this number of bytes into a byte array. @param[out] result created byte array @return whether byte array creation completed */ bool get_msgpack_binary(binary_t& result) { // helper function to set the subtype auto assign_and_return_true = [&result](std::int8_t subtype) { result.set_subtype(static_cast(subtype)); return true; }; switch (current) { case 0xC4: // bin 8 { std::uint8_t len{}; return get_number(input_format_t::msgpack, len) && get_binary(input_format_t::msgpack, len, result); } case 0xC5: // bin 16 { std::uint16_t len{}; return get_number(input_format_t::msgpack, len) && get_binary(input_format_t::msgpack, len, result); } case 0xC6: // bin 32 { std::uint32_t len{}; return get_number(input_format_t::msgpack, len) && get_binary(input_format_t::msgpack, len, result); } case 0xC7: // ext 8 { std::uint8_t len{}; std::int8_t subtype{}; return get_number(input_format_t::msgpack, len) && get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, len, result) && assign_and_return_true(subtype); } case 0xC8: // ext 16 { std::uint16_t len{}; std::int8_t subtype{}; return get_number(input_format_t::msgpack, len) && get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, len, result) && assign_and_return_true(subtype); } case 0xC9: // ext 32 { std::uint32_t len{}; std::int8_t subtype{}; return get_number(input_format_t::msgpack, len) && get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, len, result) && assign_and_return_true(subtype); } case 0xD4: // fixext 1 { std::int8_t subtype{}; return get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, 1, result) && assign_and_return_true(subtype); } case 0xD5: // fixext 2 { std::int8_t subtype{}; return get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, 2, result) && assign_and_return_true(subtype); } case 0xD6: // fixext 4 { std::int8_t subtype{}; return get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, 4, result) && assign_and_return_true(subtype); } case 0xD7: // fixext 8 { std::int8_t subtype{}; return get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, 8, result) && assign_and_return_true(subtype); } case 0xD8: // fixext 16 { std::int8_t subtype{}; return get_number(input_format_t::msgpack, subtype) && get_binary(input_format_t::msgpack, 16, result) && assign_and_return_true(subtype); } default: // LCOV_EXCL_LINE return false; // LCOV_EXCL_LINE } } /*! @param[in] len the length of the array @return whether array creation completed */ bool get_msgpack_array(const std::size_t len) { if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) { return false; } for (std::size_t i = 0; i < len; ++i) { if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) { return false; } } return sax->end_array(); } /*! @param[in] len the length of the object @return whether object creation completed */ bool get_msgpack_object(const std::size_t len) { if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) { return false; } string_t key; for (std::size_t i = 0; i < len; ++i) { get(); if (JSON_HEDLEY_UNLIKELY(!get_msgpack_string(key) || !sax->key(key))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) { return false; } key.clear(); } return sax->end_object(); } //////////// // UBJSON // //////////// /*! @param[in] get_char whether a new character should be retrieved from the input (true, default) or whether the last read character should be considered instead @return whether a valid UBJSON value was passed to the SAX parser */ bool parse_ubjson_internal(const bool get_char = true) { return get_ubjson_value(get_char ? get_ignore_noop() : current); } /*! @brief reads a UBJSON string This function is either called after reading the 'S' byte explicitly indicating a string, or in case of an object key where the 'S' byte can be left out. @param[out] result created string @param[in] get_char whether a new character should be retrieved from the input (true, default) or whether the last read character should be considered instead @return whether string creation completed */ bool get_ubjson_string(string_t& result, const bool get_char = true) { if (get_char) { get(); // TODO(niels): may we ignore N here? } if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "value"))) { return false; } switch (current) { case 'U': { std::uint8_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'i': { std::int8_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'I': { std::int16_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'l': { std::int32_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'L': { std::int64_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'u': { if (input_format != input_format_t::bjdata) { break; } std::uint16_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'm': { if (input_format != input_format_t::bjdata) { break; } std::uint32_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } case 'M': { if (input_format != input_format_t::bjdata) { break; } std::uint64_t len{}; return get_number(input_format, len) && get_string(input_format, len, result); } default: break; } auto last_token = get_token_string(); std::string message; if (input_format != input_format_t::bjdata) { message = "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token; } else { message = "expected length type specification (U, i, u, I, m, l, M, L); last byte: 0x" + last_token; } return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, message, "string"), nullptr)); } /*! @param[out] dim an integer vector storing the ND array dimensions @return whether reading ND array size vector is successful */ bool get_ubjson_ndarray_size(std::vector& dim) { std::pair size_and_type; size_t dimlen = 0; bool no_ndarray = true; if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type, no_ndarray))) { return false; } if (size_and_type.first != npos) { if (size_and_type.second != 0) { if (size_and_type.second != 'N') { for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_value(dimlen, no_ndarray, size_and_type.second))) { return false; } dim.push_back(dimlen); } } } else { for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_value(dimlen, no_ndarray))) { return false; } dim.push_back(dimlen); } } } else { while (current != ']') { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_value(dimlen, no_ndarray, current))) { return false; } dim.push_back(dimlen); get_ignore_noop(); } } return true; } /*! @param[out] result determined size @param[in,out] is_ndarray for input, `true` means already inside an ndarray vector or ndarray dimension is not allowed; `false` means ndarray is allowed; for output, `true` means an ndarray is found; is_ndarray can only return `true` when its initial value is `false` @param[in] prefix type marker if already read, otherwise set to 0 @return whether size determination completed */ bool get_ubjson_size_value(std::size_t& result, bool& is_ndarray, char_int_type prefix = 0) { if (prefix == 0) { prefix = get_ignore_noop(); } switch (prefix) { case 'U': { std::uint8_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } result = static_cast(number); return true; } case 'i': { std::int8_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } if (number < 0) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); } result = static_cast(number); // NOLINT(bugprone-signed-char-misuse,cert-str34-c): number is not a char return true; } case 'I': { std::int16_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } if (number < 0) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); } result = static_cast(number); return true; } case 'l': { std::int32_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } if (number < 0) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); } result = static_cast(number); return true; } case 'L': { std::int64_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } if (number < 0) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); } if (!value_in_range_of(number)) { return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, exception_message(input_format, "integer value overflow", "size"), nullptr)); } result = static_cast(number); return true; } case 'u': { if (input_format != input_format_t::bjdata) { break; } std::uint16_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } result = static_cast(number); return true; } case 'm': { if (input_format != input_format_t::bjdata) { break; } std::uint32_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } result = conditional_static_cast(number); return true; } case 'M': { if (input_format != input_format_t::bjdata) { break; } std::uint64_t number{}; if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) { return false; } if (!value_in_range_of(number)) { return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, exception_message(input_format, "integer value overflow", "size"), nullptr)); } result = detail::conditional_static_cast(number); return true; } case '[': { if (input_format != input_format_t::bjdata) { break; } if (is_ndarray) // ndarray dimensional vector can only contain integers, and can not embed another array { return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "ndarray dimensional vector is not allowed", "size"), nullptr)); } std::vector dim; if (JSON_HEDLEY_UNLIKELY(!get_ubjson_ndarray_size(dim))) { return false; } if (dim.size() == 1 || (dim.size() == 2 && dim.at(0) == 1)) // return normal array size if 1D row vector { result = dim.at(dim.size() - 1); return true; } if (!dim.empty()) // if ndarray, convert to an object in JData annotated array format { for (auto i : dim) // test if any dimension in an ndarray is 0, if so, return a 1D empty container { if ( i == 0 ) { result = 0; return true; } } string_t key = "_ArraySize_"; if (JSON_HEDLEY_UNLIKELY(!sax->start_object(3) || !sax->key(key) || !sax->start_array(dim.size()))) { return false; } result = 1; for (auto i : dim) { result *= i; if (result == 0 || result == npos) // because dim elements shall not have zeros, result = 0 means overflow happened; it also can't be npos as it is used to initialize size in get_ubjson_size_type() { return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, exception_message(input_format, "excessive ndarray size caused overflow", "size"), nullptr)); } if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(static_cast(i)))) { return false; } } is_ndarray = true; return sax->end_array(); } result = 0; return true; } default: break; } auto last_token = get_token_string(); std::string message; if (input_format != input_format_t::bjdata) { message = "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token; } else { message = "expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x" + last_token; } return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, message, "size"), nullptr)); } /*! @brief determine the type and size for a container In the optimized UBJSON format, a type and a size can be provided to allow for a more compact representation. @param[out] result pair of the size and the type @param[in] inside_ndarray whether the parser is parsing an ND array dimensional vector @return whether pair creation completed */ bool get_ubjson_size_type(std::pair& result, bool inside_ndarray = false) { result.first = npos; // size result.second = 0; // type bool is_ndarray = false; get_ignore_noop(); if (current == '$') { result.second = get(); // must not ignore 'N', because 'N' maybe the type if (input_format == input_format_t::bjdata && JSON_HEDLEY_UNLIKELY(std::binary_search(bjd_optimized_type_markers.begin(), bjd_optimized_type_markers.end(), result.second))) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, concat("marker 0x", last_token, " is not a permitted optimized array type"), "type"), nullptr)); } if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "type"))) { return false; } get_ignore_noop(); if (JSON_HEDLEY_UNLIKELY(current != '#')) { if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "value"))) { return false; } auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, concat("expected '#' after type information; last byte: 0x", last_token), "size"), nullptr)); } const bool is_error = get_ubjson_size_value(result.first, is_ndarray); if (input_format == input_format_t::bjdata && is_ndarray) { if (inside_ndarray) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(112, chars_read, exception_message(input_format, "ndarray can not be recursive", "size"), nullptr)); } result.second |= (1 << 8); // use bit 8 to indicate ndarray, all UBJSON and BJData markers should be ASCII letters } return is_error; } if (current == '#') { const bool is_error = get_ubjson_size_value(result.first, is_ndarray); if (input_format == input_format_t::bjdata && is_ndarray) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(112, chars_read, exception_message(input_format, "ndarray requires both type and size", "size"), nullptr)); } return is_error; } return true; } /*! @param prefix the previously read or set type prefix @return whether value creation completed */ bool get_ubjson_value(const char_int_type prefix) { switch (prefix) { case char_traits::eof(): // EOF return unexpect_eof(input_format, "value"); case 'T': // true return sax->boolean(true); case 'F': // false return sax->boolean(false); case 'Z': // null return sax->null(); case 'U': { std::uint8_t number{}; return get_number(input_format, number) && sax->number_unsigned(number); } case 'i': { std::int8_t number{}; return get_number(input_format, number) && sax->number_integer(number); } case 'I': { std::int16_t number{}; return get_number(input_format, number) && sax->number_integer(number); } case 'l': { std::int32_t number{}; return get_number(input_format, number) && sax->number_integer(number); } case 'L': { std::int64_t number{}; return get_number(input_format, number) && sax->number_integer(number); } case 'u': { if (input_format != input_format_t::bjdata) { break; } std::uint16_t number{}; return get_number(input_format, number) && sax->number_unsigned(number); } case 'm': { if (input_format != input_format_t::bjdata) { break; } std::uint32_t number{}; return get_number(input_format, number) && sax->number_unsigned(number); } case 'M': { if (input_format != input_format_t::bjdata) { break; } std::uint64_t number{}; return get_number(input_format, number) && sax->number_unsigned(number); } case 'h': { if (input_format != input_format_t::bjdata) { break; } const auto byte1_raw = get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "number"))) { return false; } const auto byte2_raw = get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "number"))) { return false; } const auto byte1 = static_cast(byte1_raw); const auto byte2 = static_cast(byte2_raw); // code from RFC 7049, Appendix D, Figure 3: // As half-precision floating-point numbers were only added // to IEEE 754 in 2008, today's programming platforms often // still only have limited support for them. It is very // easy to include at least decoding support for them even // without such support. An example of a small decoder for // half-precision floating-point numbers in the C language // is shown in Fig. 3. const auto half = static_cast((byte2 << 8u) + byte1); const double val = [&half] { const int exp = (half >> 10u) & 0x1Fu; const unsigned int mant = half & 0x3FFu; JSON_ASSERT(0 <= exp&& exp <= 32); JSON_ASSERT(mant <= 1024); switch (exp) { case 0: return std::ldexp(mant, -24); case 31: return (mant == 0) ? std::numeric_limits::infinity() : std::numeric_limits::quiet_NaN(); default: return std::ldexp(mant + 1024, exp - 25); } }(); return sax->number_float((half & 0x8000u) != 0 ? static_cast(-val) : static_cast(val), ""); } case 'd': { float number{}; return get_number(input_format, number) && sax->number_float(static_cast(number), ""); } case 'D': { double number{}; return get_number(input_format, number) && sax->number_float(static_cast(number), ""); } case 'H': { return get_ubjson_high_precision_number(); } case 'C': // char { get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "char"))) { return false; } if (JSON_HEDLEY_UNLIKELY(current > 127)) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, concat("byte after 'C' must be in range 0x00..0x7F; last byte: 0x", last_token), "char"), nullptr)); } string_t s(1, static_cast(current)); return sax->string(s); } case 'S': // string { string_t s; return get_ubjson_string(s) && sax->string(s); } case '[': // array return get_ubjson_array(); case '{': // object return get_ubjson_object(); default: // anything else break; } auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, "invalid byte: 0x" + last_token, "value"), nullptr)); } /*! @return whether array creation completed */ bool get_ubjson_array() { std::pair size_and_type; if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) { return false; } // if bit-8 of size_and_type.second is set to 1, encode bjdata ndarray as an object in JData annotated array format (https://github.com/NeuroJSON/jdata): // {"_ArrayType_" : "typeid", "_ArraySize_" : [n1, n2, ...], "_ArrayData_" : [v1, v2, ...]} if (input_format == input_format_t::bjdata && size_and_type.first != npos && (size_and_type.second & (1 << 8)) != 0) { size_and_type.second &= ~(static_cast(1) << 8); // use bit 8 to indicate ndarray, here we remove the bit to restore the type marker auto it = std::lower_bound(bjd_types_map.begin(), bjd_types_map.end(), size_and_type.second, [](const bjd_type & p, char_int_type t) { return p.first < t; }); string_t key = "_ArrayType_"; if (JSON_HEDLEY_UNLIKELY(it == bjd_types_map.end() || it->first != size_and_type.second)) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, "invalid byte: 0x" + last_token, "type"), nullptr)); } string_t type = it->second; // sax->string() takes a reference if (JSON_HEDLEY_UNLIKELY(!sax->key(key) || !sax->string(type))) { return false; } if (size_and_type.second == 'C') { size_and_type.second = 'U'; } key = "_ArrayData_"; if (JSON_HEDLEY_UNLIKELY(!sax->key(key) || !sax->start_array(size_and_type.first) )) { return false; } for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) { return false; } } return (sax->end_array() && sax->end_object()); } if (size_and_type.first != npos) { if (JSON_HEDLEY_UNLIKELY(!sax->start_array(size_and_type.first))) { return false; } if (size_and_type.second != 0) { if (size_and_type.second != 'N') { for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) { return false; } } } } else { for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) { return false; } } } } else { if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) { return false; } while (current != ']') { if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal(false))) { return false; } get_ignore_noop(); } } return sax->end_array(); } /*! @return whether object creation completed */ bool get_ubjson_object() { std::pair size_and_type; if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) { return false; } // do not accept ND-array size in objects in BJData if (input_format == input_format_t::bjdata && size_and_type.first != npos && (size_and_type.second & (1 << 8)) != 0) { auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, "BJData object does not support ND-array size in optimized format", "object"), nullptr)); } string_t key; if (size_and_type.first != npos) { if (JSON_HEDLEY_UNLIKELY(!sax->start_object(size_and_type.first))) { return false; } if (size_and_type.second != 0) { for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) { return false; } if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) { return false; } key.clear(); } } else { for (std::size_t i = 0; i < size_and_type.first; ++i) { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) { return false; } key.clear(); } } } else { if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) { return false; } while (current != '}') { if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key, false) || !sax->key(key))) { return false; } if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) { return false; } get_ignore_noop(); key.clear(); } } return sax->end_object(); } // Note, no reader for UBJSON binary types is implemented because they do // not exist bool get_ubjson_high_precision_number() { // get size of following number string std::size_t size{}; bool no_ndarray = true; auto res = get_ubjson_size_value(size, no_ndarray); if (JSON_HEDLEY_UNLIKELY(!res)) { return res; } // get number string std::vector number_vector; for (std::size_t i = 0; i < size; ++i) { get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "number"))) { return false; } number_vector.push_back(static_cast(current)); } // parse number string using ia_type = decltype(detail::input_adapter(number_vector)); auto number_lexer = detail::lexer(detail::input_adapter(number_vector), false); const auto result_number = number_lexer.scan(); const auto number_string = number_lexer.get_token_string(); const auto result_remainder = number_lexer.scan(); using token_type = typename detail::lexer_base::token_type; if (JSON_HEDLEY_UNLIKELY(result_remainder != token_type::end_of_input)) { return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format, concat("invalid number text: ", number_lexer.get_token_string()), "high-precision number"), nullptr)); } switch (result_number) { case token_type::value_integer: return sax->number_integer(number_lexer.get_number_integer()); case token_type::value_unsigned: return sax->number_unsigned(number_lexer.get_number_unsigned()); case token_type::value_float: return sax->number_float(number_lexer.get_number_float(), std::move(number_string)); case token_type::uninitialized: case token_type::literal_true: case token_type::literal_false: case token_type::literal_null: case token_type::value_string: case token_type::begin_array: case token_type::begin_object: case token_type::end_array: case token_type::end_object: case token_type::name_separator: case token_type::value_separator: case token_type::parse_error: case token_type::end_of_input: case token_type::literal_or_value: default: return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format, concat("invalid number text: ", number_lexer.get_token_string()), "high-precision number"), nullptr)); } } /////////////////////// // Utility functions // /////////////////////// /*! @brief get next character from the input This function provides the interface to the used input adapter. It does not throw in case the input reached EOF, but returns a -'ve valued `char_traits::eof()` in that case. @return character read from the input */ char_int_type get() { ++chars_read; return current = ia.get_character(); } /*! @return character read from the input after ignoring all 'N' entries */ char_int_type get_ignore_noop() { do { get(); } while (current == 'N'); return current; } /* @brief read a number from the input @tparam NumberType the type of the number @param[in] format the current format (for diagnostics) @param[out] result number of type @a NumberType @return whether conversion completed @note This function needs to respect the system's endianness, because bytes in CBOR, MessagePack, and UBJSON are stored in network order (big endian) and therefore need reordering on little endian systems. On the other hand, BSON and BJData use little endian and should reorder on big endian systems. */ template bool get_number(const input_format_t format, NumberType& result) { // step 1: read input into array with system's byte order std::array vec{}; for (std::size_t i = 0; i < sizeof(NumberType); ++i) { get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "number"))) { return false; } // reverse byte order prior to conversion if necessary if (is_little_endian != (InputIsLittleEndian || format == input_format_t::bjdata)) { vec[sizeof(NumberType) - i - 1] = static_cast(current); } else { vec[i] = static_cast(current); // LCOV_EXCL_LINE } } // step 2: convert array into number of type T and return std::memcpy(&result, vec.data(), sizeof(NumberType)); return true; } /*! @brief create a string by reading characters from the input @tparam NumberType the type of the number @param[in] format the current format (for diagnostics) @param[in] len number of characters to read @param[out] result string created by reading @a len bytes @return whether string creation completed @note We can not reserve @a len bytes for the result, because @a len may be too large. Usually, @ref unexpect_eof() detects the end of the input before we run out of string memory. */ template bool get_string(const input_format_t format, const NumberType len, string_t& result) { bool success = true; for (NumberType i = 0; i < len; i++) { get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "string"))) { success = false; break; } result.push_back(static_cast(current)); } return success; } /*! @brief create a byte array by reading bytes from the input @tparam NumberType the type of the number @param[in] format the current format (for diagnostics) @param[in] len number of bytes to read @param[out] result byte array created by reading @a len bytes @return whether byte array creation completed @note We can not reserve @a len bytes for the result, because @a len may be too large. Usually, @ref unexpect_eof() detects the end of the input before we run out of memory. */ template bool get_binary(const input_format_t format, const NumberType len, binary_t& result) { bool success = true; for (NumberType i = 0; i < len; i++) { get(); if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "binary"))) { success = false; break; } result.push_back(static_cast(current)); } return success; } /*! @param[in] format the current format (for diagnostics) @param[in] context further context information (for diagnostics) @return whether the last read character is not EOF */ JSON_HEDLEY_NON_NULL(3) bool unexpect_eof(const input_format_t format, const char* context) const { if (JSON_HEDLEY_UNLIKELY(current == char_traits::eof())) { return sax->parse_error(chars_read, "", parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context), nullptr)); } return true; } /*! @return a string representation of the last read byte */ std::string get_token_string() const { std::array cr{{}}; static_cast((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(current))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) return std::string{cr.data()}; } /*! @param[in] format the current format @param[in] detail a detailed error message @param[in] context further context information @return a message string to use in the parse_error exceptions */ std::string exception_message(const input_format_t format, const std::string& detail, const std::string& context) const { std::string error_msg = "syntax error while parsing "; switch (format) { case input_format_t::cbor: error_msg += "CBOR"; break; case input_format_t::msgpack: error_msg += "MessagePack"; break; case input_format_t::ubjson: error_msg += "UBJSON"; break; case input_format_t::bson: error_msg += "BSON"; break; case input_format_t::bjdata: error_msg += "BJData"; break; case input_format_t::json: // LCOV_EXCL_LINE default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE } return concat(error_msg, ' ', context, ": ", detail); } private: static JSON_INLINE_VARIABLE constexpr std::size_t npos = static_cast(-1); /// input adapter InputAdapterType ia; /// the current character char_int_type current = char_traits::eof(); /// the number of characters read std::size_t chars_read = 0; /// whether we can assume little endianness const bool is_little_endian = little_endianness(); /// input format const input_format_t input_format = input_format_t::json; /// the SAX parser json_sax_t* sax = nullptr; // excluded markers in bjdata optimized type #define JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ \ make_array('F', 'H', 'N', 'S', 'T', 'Z', '[', '{') #define JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ \ make_array( \ bjd_type{'C', "char"}, \ bjd_type{'D', "double"}, \ bjd_type{'I', "int16"}, \ bjd_type{'L', "int64"}, \ bjd_type{'M', "uint64"}, \ bjd_type{'U', "uint8"}, \ bjd_type{'d', "single"}, \ bjd_type{'i', "int8"}, \ bjd_type{'l', "int32"}, \ bjd_type{'m', "uint32"}, \ bjd_type{'u', "uint16"}) JSON_PRIVATE_UNLESS_TESTED: // lookup tables // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_; using bjd_type = std::pair; // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) const decltype(JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_) bjd_types_map = JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_; #undef JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ #undef JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ }; #ifndef JSON_HAS_CPP_17 template constexpr std::size_t binary_reader::npos; #endif } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/input/input_adapters.hpp000066400000000000000000000417721453145653700241710ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // array #include // size_t #include // strlen #include // begin, end, iterator_traits, random_access_iterator_tag, distance, next #include // shared_ptr, make_shared, addressof #include // accumulate #include // string, char_traits #include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer #include // pair, declval #ifndef JSON_NO_IO #include // FILE * #include // istream #endif // JSON_NO_IO #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// the supported input formats enum class input_format_t { json, cbor, msgpack, ubjson, bson, bjdata }; //////////////////// // input adapters // //////////////////// #ifndef JSON_NO_IO /*! Input adapter for stdio file access. This adapter read only 1 byte and do not use any buffer. This adapter is a very low level adapter. */ class file_input_adapter { public: using char_type = char; JSON_HEDLEY_NON_NULL(2) explicit file_input_adapter(std::FILE* f) noexcept : m_file(f) { JSON_ASSERT(m_file != nullptr); } // make class move-only file_input_adapter(const file_input_adapter&) = delete; file_input_adapter(file_input_adapter&&) noexcept = default; file_input_adapter& operator=(const file_input_adapter&) = delete; file_input_adapter& operator=(file_input_adapter&&) = delete; ~file_input_adapter() = default; std::char_traits::int_type get_character() noexcept { return std::fgetc(m_file); } private: /// the file pointer to read from std::FILE* m_file; }; /*! Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at beginning of input. Does not support changing the underlying std::streambuf in mid-input. Maintains underlying std::istream and std::streambuf to support subsequent use of standard std::istream operations to process any input characters following those used in parsing the JSON input. Clears the std::istream flags; any input errors (e.g., EOF) will be detected by the first subsequent call for input from the std::istream. */ class input_stream_adapter { public: using char_type = char; ~input_stream_adapter() { // clear stream flags; we use underlying streambuf I/O, do not // maintain ifstream flags, except eof if (is != nullptr) { is->clear(is->rdstate() & std::ios::eofbit); } } explicit input_stream_adapter(std::istream& i) : is(&i), sb(i.rdbuf()) {} // delete because of pointer members input_stream_adapter(const input_stream_adapter&) = delete; input_stream_adapter& operator=(input_stream_adapter&) = delete; input_stream_adapter& operator=(input_stream_adapter&&) = delete; input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs.is), sb(rhs.sb) { rhs.is = nullptr; rhs.sb = nullptr; } // std::istream/std::streambuf use std::char_traits::to_int_type, to // ensure that std::char_traits::eof() and the character 0xFF do not // end up as the same value, e.g. 0xFFFFFFFF. std::char_traits::int_type get_character() { auto res = sb->sbumpc(); // set eof manually, as we don't use the istream interface. if (JSON_HEDLEY_UNLIKELY(res == std::char_traits::eof())) { is->clear(is->rdstate() | std::ios::eofbit); } return res; } private: /// the associated input stream std::istream* is = nullptr; std::streambuf* sb = nullptr; }; #endif // JSON_NO_IO // General-purpose iterator-based adapter. It might not be as fast as // theoretically possible for some containers, but it is extremely versatile. template class iterator_input_adapter { public: using char_type = typename std::iterator_traits::value_type; iterator_input_adapter(IteratorType first, IteratorType last) : current(std::move(first)), end(std::move(last)) {} typename char_traits::int_type get_character() { if (JSON_HEDLEY_LIKELY(current != end)) { auto result = char_traits::to_int_type(*current); std::advance(current, 1); return result; } return char_traits::eof(); } private: IteratorType current; IteratorType end; template friend struct wide_string_input_helper; bool empty() const { return current == end; } }; template struct wide_string_input_helper; template struct wide_string_input_helper { // UTF-32 static void fill_buffer(BaseInputAdapter& input, std::array::int_type, 4>& utf8_bytes, size_t& utf8_bytes_index, size_t& utf8_bytes_filled) { utf8_bytes_index = 0; if (JSON_HEDLEY_UNLIKELY(input.empty())) { utf8_bytes[0] = std::char_traits::eof(); utf8_bytes_filled = 1; } else { // get the current character const auto wc = input.get_character(); // UTF-32 to UTF-8 encoding if (wc < 0x80) { utf8_bytes[0] = static_cast::int_type>(wc); utf8_bytes_filled = 1; } else if (wc <= 0x7FF) { utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u) & 0x1Fu)); utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 2; } else if (wc <= 0xFFFF) { utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u) & 0x0Fu)); utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 3; } else if (wc <= 0x10FFFF) { utf8_bytes[0] = static_cast::int_type>(0xF0u | ((static_cast(wc) >> 18u) & 0x07u)); utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 12u) & 0x3Fu)); utf8_bytes[2] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); utf8_bytes[3] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 4; } else { // unknown character utf8_bytes[0] = static_cast::int_type>(wc); utf8_bytes_filled = 1; } } } }; template struct wide_string_input_helper { // UTF-16 static void fill_buffer(BaseInputAdapter& input, std::array::int_type, 4>& utf8_bytes, size_t& utf8_bytes_index, size_t& utf8_bytes_filled) { utf8_bytes_index = 0; if (JSON_HEDLEY_UNLIKELY(input.empty())) { utf8_bytes[0] = std::char_traits::eof(); utf8_bytes_filled = 1; } else { // get the current character const auto wc = input.get_character(); // UTF-16 to UTF-8 encoding if (wc < 0x80) { utf8_bytes[0] = static_cast::int_type>(wc); utf8_bytes_filled = 1; } else if (wc <= 0x7FF) { utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u))); utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 2; } else if (0xD800 > wc || wc >= 0xE000) { utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u))); utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 3; } else { if (JSON_HEDLEY_UNLIKELY(!input.empty())) { const auto wc2 = static_cast(input.get_character()); const auto charcode = 0x10000u + (((static_cast(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); utf8_bytes[0] = static_cast::int_type>(0xF0u | (charcode >> 18u)); utf8_bytes[1] = static_cast::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu)); utf8_bytes[2] = static_cast::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu)); utf8_bytes[3] = static_cast::int_type>(0x80u | (charcode & 0x3Fu)); utf8_bytes_filled = 4; } else { utf8_bytes[0] = static_cast::int_type>(wc); utf8_bytes_filled = 1; } } } } }; // Wraps another input adapter to convert wide character types into individual bytes. template class wide_string_input_adapter { public: using char_type = char; wide_string_input_adapter(BaseInputAdapter base) : base_adapter(base) {} typename std::char_traits::int_type get_character() noexcept { // check if buffer needs to be filled if (utf8_bytes_index == utf8_bytes_filled) { fill_buffer(); JSON_ASSERT(utf8_bytes_filled > 0); JSON_ASSERT(utf8_bytes_index == 0); } // use buffer JSON_ASSERT(utf8_bytes_filled > 0); JSON_ASSERT(utf8_bytes_index < utf8_bytes_filled); return utf8_bytes[utf8_bytes_index++]; } private: BaseInputAdapter base_adapter; template void fill_buffer() { wide_string_input_helper::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); } /// a buffer for UTF-8 bytes std::array::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; /// index to the utf8_codes array for the next valid byte std::size_t utf8_bytes_index = 0; /// number of valid bytes in the utf8_codes array std::size_t utf8_bytes_filled = 0; }; template struct iterator_input_adapter_factory { using iterator_type = IteratorType; using char_type = typename std::iterator_traits::value_type; using adapter_type = iterator_input_adapter; static adapter_type create(IteratorType first, IteratorType last) { return adapter_type(std::move(first), std::move(last)); } }; template struct is_iterator_of_multibyte { using value_type = typename std::iterator_traits::value_type; enum { value = sizeof(value_type) > 1 }; }; template struct iterator_input_adapter_factory::value>> { using iterator_type = IteratorType; using char_type = typename std::iterator_traits::value_type; using base_adapter_type = iterator_input_adapter; using adapter_type = wide_string_input_adapter; static adapter_type create(IteratorType first, IteratorType last) { return adapter_type(base_adapter_type(std::move(first), std::move(last))); } }; // General purpose iterator-based input template typename iterator_input_adapter_factory::adapter_type input_adapter(IteratorType first, IteratorType last) { using factory_type = iterator_input_adapter_factory; return factory_type::create(first, last); } // Convenience shorthand from container to iterator // Enables ADL on begin(container) and end(container) // Encloses the using declarations in namespace for not to leak them to outside scope namespace container_input_adapter_factory_impl { using std::begin; using std::end; template struct container_input_adapter_factory {}; template struct container_input_adapter_factory< ContainerType, void_t()), end(std::declval()))>> { using adapter_type = decltype(input_adapter(begin(std::declval()), end(std::declval()))); static adapter_type create(const ContainerType& container) { return input_adapter(begin(container), end(container)); } }; } // namespace container_input_adapter_factory_impl template typename container_input_adapter_factory_impl::container_input_adapter_factory::adapter_type input_adapter(const ContainerType& container) { return container_input_adapter_factory_impl::container_input_adapter_factory::create(container); } #ifndef JSON_NO_IO // Special cases with fast paths inline file_input_adapter input_adapter(std::FILE* file) { return file_input_adapter(file); } inline input_stream_adapter input_adapter(std::istream& stream) { return input_stream_adapter(stream); } inline input_stream_adapter input_adapter(std::istream&& stream) { return input_stream_adapter(stream); } #endif // JSON_NO_IO using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval(), std::declval())); // Null-delimited strings, and the like. template < typename CharT, typename std::enable_if < std::is_pointer::value&& !std::is_array::value&& std::is_integral::type>::value&& sizeof(typename std::remove_pointer::type) == 1, int >::type = 0 > contiguous_bytes_input_adapter input_adapter(CharT b) { auto length = std::strlen(reinterpret_cast(b)); const auto* ptr = reinterpret_cast(b); return input_adapter(ptr, ptr + length); } template auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, array + N)) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) { return input_adapter(array, array + N); } // This class only handles inputs of input_buffer_adapter type. // It's required so that expressions like {ptr, len} can be implicitly cast // to the correct adapter. class span_input_adapter { public: template < typename CharT, typename std::enable_if < std::is_pointer::value&& std::is_integral::type>::value&& sizeof(typename std::remove_pointer::type) == 1, int >::type = 0 > span_input_adapter(CharT b, std::size_t l) : ia(reinterpret_cast(b), reinterpret_cast(b) + l) {} template::iterator_category, std::random_access_iterator_tag>::value, int>::type = 0> span_input_adapter(IteratorType first, IteratorType last) : ia(input_adapter(first, last)) {} contiguous_bytes_input_adapter&& get() { return std::move(ia); // NOLINT(hicpp-move-const-arg,performance-move-const-arg) } private: contiguous_bytes_input_adapter ia; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/input/json_sax.hpp000066400000000000000000000516541453145653700227730ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include #include // string #include // move #include // vector #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN /*! @brief SAX interface This class describes the SAX interface used by @ref nlohmann::json::sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input. */ template struct json_sax { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; /*! @brief a null value was read @return whether parsing should proceed */ virtual bool null() = 0; /*! @brief a boolean value was read @param[in] val boolean value @return whether parsing should proceed */ virtual bool boolean(bool val) = 0; /*! @brief an integer number was read @param[in] val integer value @return whether parsing should proceed */ virtual bool number_integer(number_integer_t val) = 0; /*! @brief an unsigned integer number was read @param[in] val unsigned integer value @return whether parsing should proceed */ virtual bool number_unsigned(number_unsigned_t val) = 0; /*! @brief a floating-point number was read @param[in] val floating-point value @param[in] s raw token value @return whether parsing should proceed */ virtual bool number_float(number_float_t val, const string_t& s) = 0; /*! @brief a string value was read @param[in] val string value @return whether parsing should proceed @note It is safe to move the passed string value. */ virtual bool string(string_t& val) = 0; /*! @brief a binary value was read @param[in] val binary value @return whether parsing should proceed @note It is safe to move the passed binary value. */ virtual bool binary(binary_t& val) = 0; /*! @brief the beginning of an object was read @param[in] elements number of object elements or -1 if unknown @return whether parsing should proceed @note binary formats may report the number of elements */ virtual bool start_object(std::size_t elements) = 0; /*! @brief an object key was read @param[in] val object key @return whether parsing should proceed @note It is safe to move the passed string. */ virtual bool key(string_t& val) = 0; /*! @brief the end of an object was read @return whether parsing should proceed */ virtual bool end_object() = 0; /*! @brief the beginning of an array was read @param[in] elements number of array elements or -1 if unknown @return whether parsing should proceed @note binary formats may report the number of elements */ virtual bool start_array(std::size_t elements) = 0; /*! @brief the end of an array was read @return whether parsing should proceed */ virtual bool end_array() = 0; /*! @brief a parse error occurred @param[in] position the position in the input where the error occurs @param[in] last_token the last read token @param[in] ex an exception object describing the error @return whether parsing should proceed (must return false) */ virtual bool parse_error(std::size_t position, const std::string& last_token, const detail::exception& ex) = 0; json_sax() = default; json_sax(const json_sax&) = default; json_sax(json_sax&&) noexcept = default; json_sax& operator=(const json_sax&) = default; json_sax& operator=(json_sax&&) noexcept = default; virtual ~json_sax() = default; }; namespace detail { /*! @brief SAX implementation to create a JSON value from SAX events This class implements the @ref json_sax interface and processes the SAX events to create a JSON value which makes it basically a DOM parser. The structure or hierarchy of the JSON value is managed by the stack `ref_stack` which contains a pointer to the respective array or object for each recursion depth. After successful parsing, the value that is passed by reference to the constructor contains the parsed value. @tparam BasicJsonType the JSON type */ template class json_sax_dom_parser { public: using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; /*! @param[in,out] r reference to a JSON value that is manipulated while parsing @param[in] allow_exceptions_ whether parse errors yield exceptions */ explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true) : root(r), allow_exceptions(allow_exceptions_) {} // make class move-only json_sax_dom_parser(const json_sax_dom_parser&) = delete; json_sax_dom_parser(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete; json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) ~json_sax_dom_parser() = default; bool null() { handle_value(nullptr); return true; } bool boolean(bool val) { handle_value(val); return true; } bool number_integer(number_integer_t val) { handle_value(val); return true; } bool number_unsigned(number_unsigned_t val) { handle_value(val); return true; } bool number_float(number_float_t val, const string_t& /*unused*/) { handle_value(val); return true; } bool string(string_t& val) { handle_value(val); return true; } bool binary(binary_t& val) { handle_value(std::move(val)); return true; } bool start_object(std::size_t len) { ref_stack.push_back(handle_value(BasicJsonType::value_t::object)); if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); } return true; } bool key(string_t& val) { JSON_ASSERT(!ref_stack.empty()); JSON_ASSERT(ref_stack.back()->is_object()); // add null at given key and store the reference for later object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val)); return true; } bool end_object() { JSON_ASSERT(!ref_stack.empty()); JSON_ASSERT(ref_stack.back()->is_object()); ref_stack.back()->set_parents(); ref_stack.pop_back(); return true; } bool start_array(std::size_t len) { ref_stack.push_back(handle_value(BasicJsonType::value_t::array)); if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); } return true; } bool end_array() { JSON_ASSERT(!ref_stack.empty()); JSON_ASSERT(ref_stack.back()->is_array()); ref_stack.back()->set_parents(); ref_stack.pop_back(); return true; } template bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const Exception& ex) { errored = true; static_cast(ex); if (allow_exceptions) { JSON_THROW(ex); } return false; } constexpr bool is_errored() const { return errored; } private: /*! @invariant If the ref stack is empty, then the passed value will be the new root. @invariant If the ref stack contains a value, then it is an array or an object to which we can add elements */ template JSON_HEDLEY_RETURNS_NON_NULL BasicJsonType* handle_value(Value&& v) { if (ref_stack.empty()) { root = BasicJsonType(std::forward(v)); return &root; } JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); if (ref_stack.back()->is_array()) { ref_stack.back()->m_data.m_value.array->emplace_back(std::forward(v)); return &(ref_stack.back()->m_data.m_value.array->back()); } JSON_ASSERT(ref_stack.back()->is_object()); JSON_ASSERT(object_element); *object_element = BasicJsonType(std::forward(v)); return object_element; } /// the parsed JSON value BasicJsonType& root; /// stack to model hierarchy of values std::vector ref_stack {}; /// helper to hold the reference for the next object element BasicJsonType* object_element = nullptr; /// whether a syntax error occurred bool errored = false; /// whether to throw exceptions in case of errors const bool allow_exceptions = true; }; template class json_sax_dom_callback_parser { public: using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; using parser_callback_t = typename BasicJsonType::parser_callback_t; using parse_event_t = typename BasicJsonType::parse_event_t; json_sax_dom_callback_parser(BasicJsonType& r, const parser_callback_t cb, const bool allow_exceptions_ = true) : root(r), callback(cb), allow_exceptions(allow_exceptions_) { keep_stack.push_back(true); } // make class move-only json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete; json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete; json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) ~json_sax_dom_callback_parser() = default; bool null() { handle_value(nullptr); return true; } bool boolean(bool val) { handle_value(val); return true; } bool number_integer(number_integer_t val) { handle_value(val); return true; } bool number_unsigned(number_unsigned_t val) { handle_value(val); return true; } bool number_float(number_float_t val, const string_t& /*unused*/) { handle_value(val); return true; } bool string(string_t& val) { handle_value(val); return true; } bool binary(binary_t& val) { handle_value(std::move(val)); return true; } bool start_object(std::size_t len) { // check callback for object start const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::object_start, discarded); keep_stack.push_back(keep); auto val = handle_value(BasicJsonType::value_t::object, true); ref_stack.push_back(val.second); // check object limit if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); } return true; } bool key(string_t& val) { BasicJsonType k = BasicJsonType(val); // check callback for key const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::key, k); key_keep_stack.push_back(keep); // add discarded value at given key and store the reference for later if (keep && ref_stack.back()) { object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val) = discarded); } return true; } bool end_object() { if (ref_stack.back()) { if (!callback(static_cast(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) { // discard object *ref_stack.back() = discarded; } else { ref_stack.back()->set_parents(); } } JSON_ASSERT(!ref_stack.empty()); JSON_ASSERT(!keep_stack.empty()); ref_stack.pop_back(); keep_stack.pop_back(); if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured()) { // remove discarded value for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it) { if (it->is_discarded()) { ref_stack.back()->erase(it); break; } } } return true; } bool start_array(std::size_t len) { const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::array_start, discarded); keep_stack.push_back(keep); auto val = handle_value(BasicJsonType::value_t::array, true); ref_stack.push_back(val.second); // check array limit if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); } return true; } bool end_array() { bool keep = true; if (ref_stack.back()) { keep = callback(static_cast(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back()); if (keep) { ref_stack.back()->set_parents(); } else { // discard array *ref_stack.back() = discarded; } } JSON_ASSERT(!ref_stack.empty()); JSON_ASSERT(!keep_stack.empty()); ref_stack.pop_back(); keep_stack.pop_back(); // remove discarded value if (!keep && !ref_stack.empty() && ref_stack.back()->is_array()) { ref_stack.back()->m_data.m_value.array->pop_back(); } return true; } template bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const Exception& ex) { errored = true; static_cast(ex); if (allow_exceptions) { JSON_THROW(ex); } return false; } constexpr bool is_errored() const { return errored; } private: /*! @param[in] v value to add to the JSON value we build during parsing @param[in] skip_callback whether we should skip calling the callback function; this is required after start_array() and start_object() SAX events, because otherwise we would call the callback function with an empty array or object, respectively. @invariant If the ref stack is empty, then the passed value will be the new root. @invariant If the ref stack contains a value, then it is an array or an object to which we can add elements @return pair of boolean (whether value should be kept) and pointer (to the passed value in the ref_stack hierarchy; nullptr if not kept) */ template std::pair handle_value(Value&& v, const bool skip_callback = false) { JSON_ASSERT(!keep_stack.empty()); // do not handle this value if we know it would be added to a discarded // container if (!keep_stack.back()) { return {false, nullptr}; } // create value auto value = BasicJsonType(std::forward(v)); // check callback const bool keep = skip_callback || callback(static_cast(ref_stack.size()), parse_event_t::value, value); // do not handle this value if we just learnt it shall be discarded if (!keep) { return {false, nullptr}; } if (ref_stack.empty()) { root = std::move(value); return {true, & root}; } // skip this value if we already decided to skip the parent // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) if (!ref_stack.back()) { return {false, nullptr}; } // we now only expect arrays and objects JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); // array if (ref_stack.back()->is_array()) { ref_stack.back()->m_data.m_value.array->emplace_back(std::move(value)); return {true, & (ref_stack.back()->m_data.m_value.array->back())}; } // object JSON_ASSERT(ref_stack.back()->is_object()); // check if we should store an element for the current key JSON_ASSERT(!key_keep_stack.empty()); const bool store_element = key_keep_stack.back(); key_keep_stack.pop_back(); if (!store_element) { return {false, nullptr}; } JSON_ASSERT(object_element); *object_element = std::move(value); return {true, object_element}; } /// the parsed JSON value BasicJsonType& root; /// stack to model hierarchy of values std::vector ref_stack {}; /// stack to manage which values to keep std::vector keep_stack {}; /// stack to manage which object keys to keep std::vector key_keep_stack {}; /// helper to hold the reference for the next object element BasicJsonType* object_element = nullptr; /// whether a syntax error occurred bool errored = false; /// callback function const parser_callback_t callback = nullptr; /// whether to throw exceptions in case of errors const bool allow_exceptions = true; /// a discarded value for the callback BasicJsonType discarded = BasicJsonType::value_t::discarded; }; template class json_sax_acceptor { public: using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; bool null() { return true; } bool boolean(bool /*unused*/) { return true; } bool number_integer(number_integer_t /*unused*/) { return true; } bool number_unsigned(number_unsigned_t /*unused*/) { return true; } bool number_float(number_float_t /*unused*/, const string_t& /*unused*/) { return true; } bool string(string_t& /*unused*/) { return true; } bool binary(binary_t& /*unused*/) { return true; } bool start_object(std::size_t /*unused*/ = static_cast(-1)) { return true; } bool key(string_t& /*unused*/) { return true; } bool end_object() { return true; } bool start_array(std::size_t /*unused*/ = static_cast(-1)) { return true; } bool end_array() { return true; } bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/) { return false; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/input/lexer.hpp000066400000000000000000001524511453145653700222630ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // array #include // localeconv #include // size_t #include // snprintf #include // strtof, strtod, strtold, strtoll, strtoull #include // initializer_list #include // char_traits, string #include // move #include // vector #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /////////// // lexer // /////////// template class lexer_base { public: /// token types for the parser enum class token_type { uninitialized, ///< indicating the scanner is uninitialized literal_true, ///< the `true` literal literal_false, ///< the `false` literal literal_null, ///< the `null` literal value_string, ///< a string -- use get_string() for actual value value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value value_integer, ///< a signed integer -- use get_number_integer() for actual value value_float, ///< an floating point number -- use get_number_float() for actual value begin_array, ///< the character for array begin `[` begin_object, ///< the character for object begin `{` end_array, ///< the character for array end `]` end_object, ///< the character for object end `}` name_separator, ///< the name separator `:` value_separator, ///< the value separator `,` parse_error, ///< indicating a parse error end_of_input, ///< indicating the end of the input buffer literal_or_value ///< a literal or the begin of a value (only for diagnostics) }; /// return name of values of type token_type (only used for errors) JSON_HEDLEY_RETURNS_NON_NULL JSON_HEDLEY_CONST static const char* token_type_name(const token_type t) noexcept { switch (t) { case token_type::uninitialized: return ""; case token_type::literal_true: return "true literal"; case token_type::literal_false: return "false literal"; case token_type::literal_null: return "null literal"; case token_type::value_string: return "string literal"; case token_type::value_unsigned: case token_type::value_integer: case token_type::value_float: return "number literal"; case token_type::begin_array: return "'['"; case token_type::begin_object: return "'{'"; case token_type::end_array: return "']'"; case token_type::end_object: return "'}'"; case token_type::name_separator: return "':'"; case token_type::value_separator: return "','"; case token_type::parse_error: return ""; case token_type::end_of_input: return "end of input"; case token_type::literal_or_value: return "'[', '{', or a literal"; // LCOV_EXCL_START default: // catch non-enum values return "unknown token"; // LCOV_EXCL_STOP } } }; /*! @brief lexical analysis This class organizes the lexical analysis during JSON deserialization. */ template class lexer : public lexer_base { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using char_type = typename InputAdapterType::char_type; using char_int_type = typename char_traits::int_type; public: using token_type = typename lexer_base::token_type; explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ = false) noexcept : ia(std::move(adapter)) , ignore_comments(ignore_comments_) , decimal_point_char(static_cast(get_decimal_point())) {} // delete because of pointer members lexer(const lexer&) = delete; lexer(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) lexer& operator=(lexer&) = delete; lexer& operator=(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) ~lexer() = default; private: ///////////////////// // locales ///////////////////// /// return the locale-dependent decimal point JSON_HEDLEY_PURE static char get_decimal_point() noexcept { const auto* loc = localeconv(); JSON_ASSERT(loc != nullptr); return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); } ///////////////////// // scan functions ///////////////////// /*! @brief get codepoint from 4 hex characters following `\u` For input "\u c1 c2 c3 c4" the codepoint is: (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The conversion is done by subtracting the offset (0x30, 0x37, and 0x57) between the ASCII value of the character and the desired integer value. @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or non-hex character) */ int get_codepoint() { // this function only makes sense after reading `\u` JSON_ASSERT(current == 'u'); int codepoint = 0; const auto factors = { 12u, 8u, 4u, 0u }; for (const auto factor : factors) { get(); if (current >= '0' && current <= '9') { codepoint += static_cast((static_cast(current) - 0x30u) << factor); } else if (current >= 'A' && current <= 'F') { codepoint += static_cast((static_cast(current) - 0x37u) << factor); } else if (current >= 'a' && current <= 'f') { codepoint += static_cast((static_cast(current) - 0x57u) << factor); } else { return -1; } } JSON_ASSERT(0x0000 <= codepoint && codepoint <= 0xFFFF); return codepoint; } /*! @brief check if the next byte(s) are inside a given range Adds the current byte and, for each passed range, reads a new byte and checks if it is inside the range. If a violation was detected, set up an error message and return false. Otherwise, return true. @param[in] ranges list of integers; interpreted as list of pairs of inclusive lower and upper bound, respectively @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, 1, 2, or 3 pairs. This precondition is enforced by an assertion. @return true if and only if no range violation was detected */ bool next_byte_in_range(std::initializer_list ranges) { JSON_ASSERT(ranges.size() == 2 || ranges.size() == 4 || ranges.size() == 6); add(current); for (auto range = ranges.begin(); range != ranges.end(); ++range) { get(); if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range))) // NOLINT(bugprone-inc-dec-in-conditions) { add(current); } else { error_message = "invalid string: ill-formed UTF-8 byte"; return false; } } return true; } /*! @brief scan a string literal This function scans a string according to Sect. 7 of RFC 8259. While scanning, bytes are escaped and copied into buffer token_buffer. Then the function returns successfully, token_buffer is *not* null-terminated (as it may contain \0 bytes), and token_buffer.size() is the number of bytes in the string. @return token_type::value_string if string could be successfully scanned, token_type::parse_error otherwise @note In case of errors, variable error_message contains a textual description. */ token_type scan_string() { // reset token_buffer (ignore opening quote) reset(); // we entered the function by reading an open quote JSON_ASSERT(current == '\"'); while (true) { // get next character switch (get()) { // end of file while parsing string case char_traits::eof(): { error_message = "invalid string: missing closing quote"; return token_type::parse_error; } // closing quote case '\"': { return token_type::value_string; } // escapes case '\\': { switch (get()) { // quotation mark case '\"': add('\"'); break; // reverse solidus case '\\': add('\\'); break; // solidus case '/': add('/'); break; // backspace case 'b': add('\b'); break; // form feed case 'f': add('\f'); break; // line feed case 'n': add('\n'); break; // carriage return case 'r': add('\r'); break; // tab case 't': add('\t'); break; // unicode escapes case 'u': { const int codepoint1 = get_codepoint(); int codepoint = codepoint1; // start with codepoint1 if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1)) { error_message = "invalid string: '\\u' must be followed by 4 hex digits"; return token_type::parse_error; } // check if code point is a high surrogate if (0xD800 <= codepoint1 && codepoint1 <= 0xDBFF) { // expect next \uxxxx entry if (JSON_HEDLEY_LIKELY(get() == '\\' && get() == 'u')) { const int codepoint2 = get_codepoint(); if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1)) { error_message = "invalid string: '\\u' must be followed by 4 hex digits"; return token_type::parse_error; } // check if codepoint2 is a low surrogate if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 && codepoint2 <= 0xDFFF)) { // overwrite codepoint codepoint = static_cast( // high surrogate occupies the most significant 22 bits (static_cast(codepoint1) << 10u) // low surrogate occupies the least significant 15 bits + static_cast(codepoint2) // there is still the 0xD800, 0xDC00 and 0x10000 noise // in the result, so we have to subtract with: // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - 0x35FDC00u); } else { error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; return token_type::parse_error; } } else { error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; return token_type::parse_error; } } else { if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 && codepoint1 <= 0xDFFF)) { error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; return token_type::parse_error; } } // result of the above calculation yields a proper codepoint JSON_ASSERT(0x00 <= codepoint && codepoint <= 0x10FFFF); // translate codepoint into bytes if (codepoint < 0x80) { // 1-byte characters: 0xxxxxxx (ASCII) add(static_cast(codepoint)); } else if (codepoint <= 0x7FF) { // 2-byte characters: 110xxxxx 10xxxxxx add(static_cast(0xC0u | (static_cast(codepoint) >> 6u))); add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); } else if (codepoint <= 0xFFFF) { // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx add(static_cast(0xE0u | (static_cast(codepoint) >> 12u))); add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); } else { // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx add(static_cast(0xF0u | (static_cast(codepoint) >> 18u))); add(static_cast(0x80u | ((static_cast(codepoint) >> 12u) & 0x3Fu))); add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); } break; } // other characters after escape default: error_message = "invalid string: forbidden character after backslash"; return token_type::parse_error; } break; } // invalid control characters case 0x00: { error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000"; return token_type::parse_error; } case 0x01: { error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001"; return token_type::parse_error; } case 0x02: { error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002"; return token_type::parse_error; } case 0x03: { error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003"; return token_type::parse_error; } case 0x04: { error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004"; return token_type::parse_error; } case 0x05: { error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005"; return token_type::parse_error; } case 0x06: { error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006"; return token_type::parse_error; } case 0x07: { error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007"; return token_type::parse_error; } case 0x08: { error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b"; return token_type::parse_error; } case 0x09: { error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t"; return token_type::parse_error; } case 0x0A: { error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n"; return token_type::parse_error; } case 0x0B: { error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B"; return token_type::parse_error; } case 0x0C: { error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f"; return token_type::parse_error; } case 0x0D: { error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r"; return token_type::parse_error; } case 0x0E: { error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E"; return token_type::parse_error; } case 0x0F: { error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F"; return token_type::parse_error; } case 0x10: { error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010"; return token_type::parse_error; } case 0x11: { error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011"; return token_type::parse_error; } case 0x12: { error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012"; return token_type::parse_error; } case 0x13: { error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013"; return token_type::parse_error; } case 0x14: { error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014"; return token_type::parse_error; } case 0x15: { error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015"; return token_type::parse_error; } case 0x16: { error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016"; return token_type::parse_error; } case 0x17: { error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017"; return token_type::parse_error; } case 0x18: { error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018"; return token_type::parse_error; } case 0x19: { error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019"; return token_type::parse_error; } case 0x1A: { error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A"; return token_type::parse_error; } case 0x1B: { error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B"; return token_type::parse_error; } case 0x1C: { error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C"; return token_type::parse_error; } case 0x1D: { error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D"; return token_type::parse_error; } case 0x1E: { error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E"; return token_type::parse_error; } case 0x1F: { error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F"; return token_type::parse_error; } // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) case 0x20: case 0x21: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: case 0x29: case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E: case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D: case 0x3E: case 0x3F: case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C: case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: case 0x58: case 0x59: case 0x5A: case 0x5B: case 0x5D: case 0x5E: case 0x5F: case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A: case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F: case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: case 0x78: case 0x79: case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E: case 0x7F: { add(current); break; } // U+0080..U+07FF: bytes C2..DF 80..BF case 0xC2: case 0xC3: case 0xC4: case 0xC5: case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA: case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF: case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9: case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE: case 0xDF: { if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF}))) { return token_type::parse_error; } break; } // U+0800..U+0FFF: bytes E0 A0..BF 80..BF case 0xE0: { if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } break; } // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF case 0xE1: case 0xE2: case 0xE3: case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8: case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xEE: case 0xEF: { if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } break; } // U+D000..U+D7FF: bytes ED 80..9F 80..BF case 0xED: { if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) { return token_type::parse_error; } break; } // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF case 0xF0: { if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } break; } // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF case 0xF1: case 0xF2: case 0xF3: { if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } break; } // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF case 0xF4: { if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } break; } // remaining bytes (80..C1 and F5..FF) are ill-formed default: { error_message = "invalid string: ill-formed UTF-8 byte"; return token_type::parse_error; } } } } /*! * @brief scan a comment * @return whether comment could be scanned successfully */ bool scan_comment() { switch (get()) { // single-line comments skip input until a newline or EOF is read case '/': { while (true) { switch (get()) { case '\n': case '\r': case char_traits::eof(): case '\0': return true; default: break; } } } // multi-line comments skip input until */ is read case '*': { while (true) { switch (get()) { case char_traits::eof(): case '\0': { error_message = "invalid comment; missing closing '*/'"; return false; } case '*': { switch (get()) { case '/': return true; default: { unget(); continue; } } } default: continue; } } } // unexpected character after reading '/' default: { error_message = "invalid comment; expecting '/' or '*' after '/'"; return false; } } } JSON_HEDLEY_NON_NULL(2) static void strtof(float& f, const char* str, char** endptr) noexcept { f = std::strtof(str, endptr); } JSON_HEDLEY_NON_NULL(2) static void strtof(double& f, const char* str, char** endptr) noexcept { f = std::strtod(str, endptr); } JSON_HEDLEY_NON_NULL(2) static void strtof(long double& f, const char* str, char** endptr) noexcept { f = std::strtold(str, endptr); } /*! @brief scan a number literal This function scans a string according to Sect. 6 of RFC 8259. The function is realized with a deterministic finite state machine derived from the grammar described in RFC 8259. Starting in state "init", the input is read and used to determined the next state. Only state "done" accepts the number. State "error" is a trap state to model errors. In the table below, "anything" means any character but the ones listed before. state | 0 | 1-9 | e E | + | - | . | anything ---------|----------|----------|----------|---------|---------|----------|----------- init | zero | any1 | [error] | [error] | minus | [error] | [error] minus | zero | any1 | [error] | [error] | [error] | [error] | [error] zero | done | done | exponent | done | done | decimal1 | done any1 | any1 | any1 | exponent | done | done | decimal1 | done decimal1 | decimal2 | decimal2 | [error] | [error] | [error] | [error] | [error] decimal2 | decimal2 | decimal2 | exponent | done | done | done | done exponent | any2 | any2 | [error] | sign | sign | [error] | [error] sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] any2 | any2 | any2 | done | done | done | done | done The state machine is realized with one label per state (prefixed with "scan_number_") and `goto` statements between them. The state machine contains cycles, but any cycle can be left when EOF is read. Therefore, the function is guaranteed to terminate. During scanning, the read bytes are stored in token_buffer. This string is then converted to a signed integer, an unsigned integer, or a floating-point number. @return token_type::value_unsigned, token_type::value_integer, or token_type::value_float if number could be successfully scanned, token_type::parse_error otherwise @note The scanner is independent of the current locale. Internally, the locale's decimal point is used instead of `.` to work with the locale-dependent converters. */ token_type scan_number() // lgtm [cpp/use-of-goto] { // reset token_buffer to store the number's bytes reset(); // the type of the parsed number; initially set to unsigned; will be // changed if minus sign, decimal point or exponent is read token_type number_type = token_type::value_unsigned; // state (init): we just found out we need to scan a number switch (current) { case '-': { add(current); goto scan_number_minus; } case '0': { add(current); goto scan_number_zero; } case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_any1; } // all other characters are rejected outside scan_number() default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE } scan_number_minus: // state: we just parsed a leading minus sign number_type = token_type::value_integer; switch (get()) { case '0': { add(current); goto scan_number_zero; } case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_any1; } default: { error_message = "invalid number; expected digit after '-'"; return token_type::parse_error; } } scan_number_zero: // state: we just parse a zero (maybe with a leading minus sign) switch (get()) { case '.': { add(decimal_point_char); goto scan_number_decimal1; } case 'e': case 'E': { add(current); goto scan_number_exponent; } default: goto scan_number_done; } scan_number_any1: // state: we just parsed a number 0-9 (maybe with a leading minus sign) switch (get()) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_any1; } case '.': { add(decimal_point_char); goto scan_number_decimal1; } case 'e': case 'E': { add(current); goto scan_number_exponent; } default: goto scan_number_done; } scan_number_decimal1: // state: we just parsed a decimal point number_type = token_type::value_float; switch (get()) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_decimal2; } default: { error_message = "invalid number; expected digit after '.'"; return token_type::parse_error; } } scan_number_decimal2: // we just parsed at least one number after a decimal point switch (get()) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_decimal2; } case 'e': case 'E': { add(current); goto scan_number_exponent; } default: goto scan_number_done; } scan_number_exponent: // we just parsed an exponent number_type = token_type::value_float; switch (get()) { case '+': case '-': { add(current); goto scan_number_sign; } case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_any2; } default: { error_message = "invalid number; expected '+', '-', or digit after exponent"; return token_type::parse_error; } } scan_number_sign: // we just parsed an exponent sign switch (get()) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_any2; } default: { error_message = "invalid number; expected digit after exponent sign"; return token_type::parse_error; } } scan_number_any2: // we just parsed a number after the exponent or exponent sign switch (get()) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { add(current); goto scan_number_any2; } default: goto scan_number_done; } scan_number_done: // unget the character after the number (we only read it to know that // we are done scanning a number) unget(); char* endptr = nullptr; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) errno = 0; // try to parse integers first and fall back to floats if (number_type == token_type::value_unsigned) { const auto x = std::strtoull(token_buffer.data(), &endptr, 10); // we checked the number format before JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { value_unsigned = static_cast(x); if (value_unsigned == x) { return token_type::value_unsigned; } } } else if (number_type == token_type::value_integer) { const auto x = std::strtoll(token_buffer.data(), &endptr, 10); // we checked the number format before JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { value_integer = static_cast(x); if (value_integer == x) { return token_type::value_integer; } } } // this code is reached if we parse a floating-point number or if an // integer conversion above failed strtof(value_float, token_buffer.data(), &endptr); // we checked the number format before JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); return token_type::value_float; } /*! @param[in] literal_text the literal text to expect @param[in] length the length of the passed literal text @param[in] return_type the token type to return on success */ JSON_HEDLEY_NON_NULL(2) token_type scan_literal(const char_type* literal_text, const std::size_t length, token_type return_type) { JSON_ASSERT(char_traits::to_char_type(current) == literal_text[0]); for (std::size_t i = 1; i < length; ++i) { if (JSON_HEDLEY_UNLIKELY(char_traits::to_char_type(get()) != literal_text[i])) { error_message = "invalid literal"; return token_type::parse_error; } } return return_type; } ///////////////////// // input management ///////////////////// /// reset token_buffer; current character is beginning of token void reset() noexcept { token_buffer.clear(); token_string.clear(); token_string.push_back(char_traits::to_char_type(current)); } /* @brief get next character from the input This function provides the interface to the used input adapter. It does not throw in case the input reached EOF, but returns a `char_traits::eof()` in that case. Stores the scanned characters for use in error messages. @return character read from the input */ char_int_type get() { ++position.chars_read_total; ++position.chars_read_current_line; if (next_unget) { // just reset the next_unget variable and work with current next_unget = false; } else { current = ia.get_character(); } if (JSON_HEDLEY_LIKELY(current != char_traits::eof())) { token_string.push_back(char_traits::to_char_type(current)); } if (current == '\n') { ++position.lines_read; position.chars_read_current_line = 0; } return current; } /*! @brief unget current character (read it again on next get) We implement unget by setting variable next_unget to true. The input is not changed - we just simulate ungetting by modifying chars_read_total, chars_read_current_line, and token_string. The next call to get() will behave as if the unget character is read again. */ void unget() { next_unget = true; --position.chars_read_total; // in case we "unget" a newline, we have to also decrement the lines_read if (position.chars_read_current_line == 0) { if (position.lines_read > 0) { --position.lines_read; } } else { --position.chars_read_current_line; } if (JSON_HEDLEY_LIKELY(current != char_traits::eof())) { JSON_ASSERT(!token_string.empty()); token_string.pop_back(); } } /// add a character to token_buffer void add(char_int_type c) { token_buffer.push_back(static_cast(c)); } public: ///////////////////// // value getters ///////////////////// /// return integer value constexpr number_integer_t get_number_integer() const noexcept { return value_integer; } /// return unsigned integer value constexpr number_unsigned_t get_number_unsigned() const noexcept { return value_unsigned; } /// return floating-point value constexpr number_float_t get_number_float() const noexcept { return value_float; } /// return current string value (implicitly resets the token; useful only once) string_t& get_string() { return token_buffer; } ///////////////////// // diagnostics ///////////////////// /// return position of last read token constexpr position_t get_position() const noexcept { return position; } /// return the last read token (for errors only). Will never contain EOF /// (an arbitrary value that is not a valid char value, often -1), because /// 255 may legitimately occur. May contain NUL, which should be escaped. std::string get_token_string() const { // escape control characters std::string result; for (const auto c : token_string) { if (static_cast(c) <= '\x1F') { // escape control characters std::array cs{{}}; static_cast((std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) result += cs.data(); } else { // add character as is result.push_back(static_cast(c)); } } return result; } /// return syntax error message JSON_HEDLEY_RETURNS_NON_NULL constexpr const char* get_error_message() const noexcept { return error_message; } ///////////////////// // actual scanner ///////////////////// /*! @brief skip the UTF-8 byte order mark @return true iff there is no BOM or the correct BOM has been skipped */ bool skip_bom() { if (get() == 0xEF) { // check if we completely parse the BOM return get() == 0xBB && get() == 0xBF; } // the first character is not the beginning of the BOM; unget it to // process is later unget(); return true; } void skip_whitespace() { do { get(); } while (current == ' ' || current == '\t' || current == '\n' || current == '\r'); } token_type scan() { // initially, skip the BOM if (position.chars_read_total == 0 && !skip_bom()) { error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given"; return token_type::parse_error; } // read next character and ignore whitespace skip_whitespace(); // ignore comments while (ignore_comments && current == '/') { if (!scan_comment()) { return token_type::parse_error; } // skip following whitespace skip_whitespace(); } switch (current) { // structural characters case '[': return token_type::begin_array; case ']': return token_type::end_array; case '{': return token_type::begin_object; case '}': return token_type::end_object; case ':': return token_type::name_separator; case ',': return token_type::value_separator; // literals case 't': { std::array true_literal = {{static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e')}}; return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); } case 'f': { std::array false_literal = {{static_cast('f'), static_cast('a'), static_cast('l'), static_cast('s'), static_cast('e')}}; return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); } case 'n': { std::array null_literal = {{static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l')}}; return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); } // string case '\"': return scan_string(); // number case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return scan_number(); // end of input (the null byte is needed when parsing from // string literals) case '\0': case char_traits::eof(): return token_type::end_of_input; // error default: error_message = "invalid literal"; return token_type::parse_error; } } private: /// input adapter InputAdapterType ia; /// whether comments should be ignored (true) or signaled as errors (false) const bool ignore_comments = false; /// the current character char_int_type current = char_traits::eof(); /// whether the next get() call should just return current bool next_unget = false; /// the start position of the current token position_t position {}; /// raw input token string (for error messages) std::vector token_string {}; /// buffer for variable-length tokens (numbers, strings) string_t token_buffer {}; /// a description of occurred lexer errors const char* error_message = ""; // number values number_integer_t value_integer = 0; number_unsigned_t value_unsigned = 0; number_float_t value_float = 0; /// the decimal point const char_int_type decimal_point_char = '.'; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/input/parser.hpp000066400000000000000000000463151453145653700224410ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // isfinite #include // uint8_t #include // function #include // string #include // move #include // vector #include #include #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { //////////// // parser // //////////// enum class parse_event_t : std::uint8_t { /// the parser read `{` and started to process a JSON object object_start, /// the parser read `}` and finished processing a JSON object object_end, /// the parser read `[` and started to process a JSON array array_start, /// the parser read `]` and finished processing a JSON array array_end, /// the parser read a key of a value in an object key, /// the parser finished reading a JSON value value }; template using parser_callback_t = std::function; /*! @brief syntax analysis This class implements a recursive descent parser. */ template class parser { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using lexer_t = lexer; using token_type = typename lexer_t::token_type; public: /// a parser reading from an input adapter explicit parser(InputAdapterType&& adapter, const parser_callback_t cb = nullptr, const bool allow_exceptions_ = true, const bool skip_comments = false) : callback(cb) , m_lexer(std::move(adapter), skip_comments) , allow_exceptions(allow_exceptions_) { // read first token get_token(); } /*! @brief public parser interface @param[in] strict whether to expect the last token to be EOF @param[in,out] result parsed JSON value @throw parse_error.101 in case of an unexpected token @throw parse_error.102 if to_unicode fails or surrogate error @throw parse_error.103 if to_unicode fails */ void parse(const bool strict, BasicJsonType& result) { if (callback) { json_sax_dom_callback_parser sdp(result, callback, allow_exceptions); sax_parse_internal(&sdp); // in strict mode, input must be completely read if (strict && (get_token() != token_type::end_of_input)) { sdp.parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr)); } // in case of an error, return discarded value if (sdp.is_errored()) { result = value_t::discarded; return; } // set top-level value to null if it was discarded by the callback // function if (result.is_discarded()) { result = nullptr; } } else { json_sax_dom_parser sdp(result, allow_exceptions); sax_parse_internal(&sdp); // in strict mode, input must be completely read if (strict && (get_token() != token_type::end_of_input)) { sdp.parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr)); } // in case of an error, return discarded value if (sdp.is_errored()) { result = value_t::discarded; return; } } result.assert_invariant(); } /*! @brief public accept interface @param[in] strict whether to expect the last token to be EOF @return whether the input is a proper JSON text */ bool accept(const bool strict = true) { json_sax_acceptor sax_acceptor; return sax_parse(&sax_acceptor, strict); } template JSON_HEDLEY_NON_NULL(2) bool sax_parse(SAX* sax, const bool strict = true) { (void)detail::is_sax_static_asserts {}; const bool result = sax_parse_internal(sax); // strict mode: next byte must be EOF if (result && strict && (get_token() != token_type::end_of_input)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr)); } return result; } private: template JSON_HEDLEY_NON_NULL(2) bool sax_parse_internal(SAX* sax) { // stack to remember the hierarchy of structured values we are parsing // true = array; false = object std::vector states; // value to avoid a goto (see comment where set to true) bool skip_to_state_evaluation = false; while (true) { if (!skip_to_state_evaluation) { // invariant: get_token() was called before each iteration switch (last_token) { case token_type::begin_object: { if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) { return false; } // closing } -> we are done if (get_token() == token_type::end_object) { if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) { return false; } break; } // parse key if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), nullptr)); } if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) { return false; } // parse separator (:) if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), nullptr)); } // remember we are now inside an object states.push_back(false); // parse values get_token(); continue; } case token_type::begin_array: { if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) { return false; } // closing ] -> we are done if (get_token() == token_type::end_array) { if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) { return false; } break; } // remember we are now inside an array states.push_back(true); // parse values (no need to call get_token) continue; } case token_type::value_float: { const auto res = m_lexer.get_number_float(); if (JSON_HEDLEY_UNLIKELY(!std::isfinite(res))) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), out_of_range::create(406, concat("number overflow parsing '", m_lexer.get_token_string(), '\''), nullptr)); } if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string()))) { return false; } break; } case token_type::literal_false: { if (JSON_HEDLEY_UNLIKELY(!sax->boolean(false))) { return false; } break; } case token_type::literal_null: { if (JSON_HEDLEY_UNLIKELY(!sax->null())) { return false; } break; } case token_type::literal_true: { if (JSON_HEDLEY_UNLIKELY(!sax->boolean(true))) { return false; } break; } case token_type::value_integer: { if (JSON_HEDLEY_UNLIKELY(!sax->number_integer(m_lexer.get_number_integer()))) { return false; } break; } case token_type::value_string: { if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string()))) { return false; } break; } case token_type::value_unsigned: { if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(m_lexer.get_number_unsigned()))) { return false; } break; } case token_type::parse_error: { // using "uninitialized" to avoid "expected" message return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::uninitialized, "value"), nullptr)); } case token_type::end_of_input: { if (JSON_HEDLEY_UNLIKELY(m_lexer.get_position().chars_read_total == 1)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr)); } return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), nullptr)); } case token_type::uninitialized: case token_type::end_array: case token_type::end_object: case token_type::name_separator: case token_type::value_separator: case token_type::literal_or_value: default: // the last token was unexpected { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), nullptr)); } } } else { skip_to_state_evaluation = false; } // we reached this line after we successfully parsed a value if (states.empty()) { // empty stack: we reached the end of the hierarchy: done return true; } if (states.back()) // array { // comma -> next value if (get_token() == token_type::value_separator) { // parse a new value get_token(); continue; } // closing ] if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array)) { if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) { return false; } // We are done with this array. Before we can parse a // new value, we need to evaluate the new state first. // By setting skip_to_state_evaluation to false, we // are effectively jumping to the beginning of this if. JSON_ASSERT(!states.empty()); states.pop_back(); skip_to_state_evaluation = true; continue; } return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_array, "array"), nullptr)); } // states.back() is false -> object // comma -> next value if (get_token() == token_type::value_separator) { // parse key if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), nullptr)); } if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) { return false; } // parse separator (:) if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), nullptr)); } // parse values get_token(); continue; } // closing } if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object)) { if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) { return false; } // We are done with this object. Before we can parse a // new value, we need to evaluate the new state first. // By setting skip_to_state_evaluation to false, we // are effectively jumping to the beginning of this if. JSON_ASSERT(!states.empty()); states.pop_back(); skip_to_state_evaluation = true; continue; } return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_object, "object"), nullptr)); } } /// get next token from lexer token_type get_token() { return last_token = m_lexer.scan(); } std::string exception_message(const token_type expected, const std::string& context) { std::string error_msg = "syntax error "; if (!context.empty()) { error_msg += concat("while parsing ", context, ' '); } error_msg += "- "; if (last_token == token_type::parse_error) { error_msg += concat(m_lexer.get_error_message(), "; last read: '", m_lexer.get_token_string(), '\''); } else { error_msg += concat("unexpected ", lexer_t::token_type_name(last_token)); } if (expected != token_type::uninitialized) { error_msg += concat("; expected ", lexer_t::token_type_name(expected)); } return error_msg; } private: /// callback function const parser_callback_t callback = nullptr; /// the type of the last read token token_type last_token = token_type::uninitialized; /// the lexer lexer_t m_lexer; /// whether to throw exceptions in case of errors const bool allow_exceptions = true; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/input/position_t.hpp000066400000000000000000000016761453145653700233350ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // size_t #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// struct to capture the start position of the current token struct position_t { /// the total number of characters read std::size_t chars_read_total = 0; /// the number of characters read in the current line std::size_t chars_read_current_line = 0; /// the number of lines read std::size_t lines_read = 0; /// conversion to size_t to preserve SAX interface constexpr operator size_t() const { return chars_read_total; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/iterators/000077500000000000000000000000001453145653700213005ustar00rootroot00000000000000json-3.11.3/include/nlohmann/detail/iterators/internal_iterator.hpp000066400000000000000000000020571453145653700255420ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief an iterator value @note This structure could easily be a union, but MSVC currently does not allow unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. */ template struct internal_iterator { /// iterator for JSON objects typename BasicJsonType::object_t::iterator object_iterator {}; /// iterator for JSON arrays typename BasicJsonType::array_t::iterator array_iterator {}; /// generic iterator for all other types primitive_iterator_t primitive_iterator {}; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/iterators/iter_impl.hpp000066400000000000000000000567561453145653700240200ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next #include // conditional, is_const, remove_const #include #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // forward declare, to be able to friend it later on template class iteration_proxy; template class iteration_proxy_value; /*! @brief a template for a bidirectional iterator for the @ref basic_json class This class implements a both iterators (iterator and const_iterator) for the @ref basic_json class. @note An iterator is called *initialized* when a pointer to a JSON value has been set (e.g., by a constructor or a copy assignment). If the iterator is default-constructed, it is *uninitialized* and most methods are undefined. **The library uses assertions to detect calls on uninitialized iterators.** @requirement The class satisfies the following concept requirements: - [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): The iterator that can be moved can be moved in both directions (i.e. incremented and decremented). @since version 1.0.0, simplified in version 2.0.9, change to bidirectional iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) */ template class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions) { /// the iterator with BasicJsonType of different const-ness using other_iter_impl = iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; /// allow basic_json to access private members friend other_iter_impl; friend BasicJsonType; friend iteration_proxy; friend iteration_proxy_value; using object_t = typename BasicJsonType::object_t; using array_t = typename BasicJsonType::array_t; // make sure BasicJsonType is basic_json or const basic_json static_assert(is_basic_json::type>::value, "iter_impl only accepts (const) basic_json"); // superficial check for the LegacyBidirectionalIterator named requirement static_assert(std::is_base_of::value && std::is_base_of::iterator_category>::value, "basic_json iterator assumes array and object type iterators satisfy the LegacyBidirectionalIterator named requirement."); public: /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. /// The C++ Standard has never required user-defined iterators to derive from std::iterator. /// A user-defined iterator should provide publicly accessible typedefs named /// iterator_category, value_type, difference_type, pointer, and reference. /// Note that value_type is required to be non-const, even for constant iterators. using iterator_category = std::bidirectional_iterator_tag; /// the type of the values when the iterator is dereferenced using value_type = typename BasicJsonType::value_type; /// a type to represent differences between iterators using difference_type = typename BasicJsonType::difference_type; /// defines a pointer to the type iterated over (value_type) using pointer = typename std::conditional::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer>::type; /// defines a reference to the type iterated over (value_type) using reference = typename std::conditional::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference>::type; iter_impl() = default; ~iter_impl() = default; iter_impl(iter_impl&&) noexcept = default; iter_impl& operator=(iter_impl&&) noexcept = default; /*! @brief constructor for a given JSON instance @param[in] object pointer to a JSON object for this iterator @pre object != nullptr @post The iterator is initialized; i.e. `m_object != nullptr`. */ explicit iter_impl(pointer object) noexcept : m_object(object) { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { m_it.object_iterator = typename object_t::iterator(); break; } case value_t::array: { m_it.array_iterator = typename array_t::iterator(); break; } case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { m_it.primitive_iterator = primitive_iterator_t(); break; } } } /*! @note The conventional copy constructor and copy assignment are implicitly defined. Combined with the following converting constructor and assignment, they support: (1) copy from iterator to iterator, (2) copy from const iterator to const iterator, and (3) conversion from iterator to const iterator. However conversion from const iterator to iterator is not defined. */ /*! @brief const copy constructor @param[in] other const iterator to copy from @note This copy constructor had to be defined explicitly to circumvent a bug occurring on msvc v19.0 compiler (VS 2015) debug build. For more information refer to: https://github.com/nlohmann/json/issues/1608 */ iter_impl(const iter_impl& other) noexcept : m_object(other.m_object), m_it(other.m_it) {} /*! @brief converting assignment @param[in] other const iterator to copy from @return const/non-const iterator @note It is not checked whether @a other is initialized. */ iter_impl& operator=(const iter_impl& other) noexcept { if (&other != this) { m_object = other.m_object; m_it = other.m_it; } return *this; } /*! @brief converting constructor @param[in] other non-const iterator to copy from @note It is not checked whether @a other is initialized. */ iter_impl(const iter_impl::type>& other) noexcept : m_object(other.m_object), m_it(other.m_it) {} /*! @brief converting assignment @param[in] other non-const iterator to copy from @return const/non-const iterator @note It is not checked whether @a other is initialized. */ iter_impl& operator=(const iter_impl::type>& other) noexcept // NOLINT(cert-oop54-cpp) { m_object = other.m_object; m_it = other.m_it; return *this; } JSON_PRIVATE_UNLESS_TESTED: /*! @brief set the iterator to the first value @pre The iterator is initialized; i.e. `m_object != nullptr`. */ void set_begin() noexcept { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { m_it.object_iterator = m_object->m_data.m_value.object->begin(); break; } case value_t::array: { m_it.array_iterator = m_object->m_data.m_value.array->begin(); break; } case value_t::null: { // set to end so begin()==end() is true: null is empty m_it.primitive_iterator.set_end(); break; } case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { m_it.primitive_iterator.set_begin(); break; } } } /*! @brief set the iterator past the last value @pre The iterator is initialized; i.e. `m_object != nullptr`. */ void set_end() noexcept { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { m_it.object_iterator = m_object->m_data.m_value.object->end(); break; } case value_t::array: { m_it.array_iterator = m_object->m_data.m_value.array->end(); break; } case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { m_it.primitive_iterator.set_end(); break; } } } public: /*! @brief return a reference to the value pointed to by the iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ reference operator*() const { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { JSON_ASSERT(m_it.object_iterator != m_object->m_data.m_value.object->end()); return m_it.object_iterator->second; } case value_t::array: { JSON_ASSERT(m_it.array_iterator != m_object->m_data.m_value.array->end()); return *m_it.array_iterator; } case value_t::null: JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) { return *m_object; } JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); } } } /*! @brief dereference the iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ pointer operator->() const { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { JSON_ASSERT(m_it.object_iterator != m_object->m_data.m_value.object->end()); return &(m_it.object_iterator->second); } case value_t::array: { JSON_ASSERT(m_it.array_iterator != m_object->m_data.m_value.array->end()); return &*m_it.array_iterator; } case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) { return m_object; } JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); } } } /*! @brief post-increment (it++) @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl operator++(int)& // NOLINT(cert-dcl21-cpp) { auto result = *this; ++(*this); return result; } /*! @brief pre-increment (++it) @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl& operator++() { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { std::advance(m_it.object_iterator, 1); break; } case value_t::array: { std::advance(m_it.array_iterator, 1); break; } case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { ++m_it.primitive_iterator; break; } } return *this; } /*! @brief post-decrement (it--) @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl operator--(int)& // NOLINT(cert-dcl21-cpp) { auto result = *this; --(*this); return result; } /*! @brief pre-decrement (--it) @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl& operator--() { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: { std::advance(m_it.object_iterator, -1); break; } case value_t::array: { std::advance(m_it.array_iterator, -1); break; } case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { --m_it.primitive_iterator; break; } } return *this; } /*! @brief comparison: equal @pre The iterator is initialized; i.e. `m_object != nullptr`. */ template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > bool operator==(const IterImpl& other) const { // if objects are not the same, the comparison is undefined if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) { JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object)); } JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: return (m_it.object_iterator == other.m_it.object_iterator); case value_t::array: return (m_it.array_iterator == other.m_it.array_iterator); case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: return (m_it.primitive_iterator == other.m_it.primitive_iterator); } } /*! @brief comparison: not equal @pre The iterator is initialized; i.e. `m_object != nullptr`. */ template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > bool operator!=(const IterImpl& other) const { return !operator==(other); } /*! @brief comparison: smaller @pre The iterator is initialized; i.e. `m_object != nullptr`. */ bool operator<(const iter_impl& other) const { // if objects are not the same, the comparison is undefined if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) { JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object)); } JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators", m_object)); case value_t::array: return (m_it.array_iterator < other.m_it.array_iterator); case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: return (m_it.primitive_iterator < other.m_it.primitive_iterator); } } /*! @brief comparison: less than or equal @pre The iterator is initialized; i.e. `m_object != nullptr`. */ bool operator<=(const iter_impl& other) const { return !other.operator < (*this); } /*! @brief comparison: greater than @pre The iterator is initialized; i.e. `m_object != nullptr`. */ bool operator>(const iter_impl& other) const { return !operator<=(other); } /*! @brief comparison: greater than or equal @pre The iterator is initialized; i.e. `m_object != nullptr`. */ bool operator>=(const iter_impl& other) const { return !operator<(other); } /*! @brief add to iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl& operator+=(difference_type i) { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", m_object)); case value_t::array: { std::advance(m_it.array_iterator, i); break; } case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { m_it.primitive_iterator += i; break; } } return *this; } /*! @brief subtract from iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl& operator-=(difference_type i) { return operator+=(-i); } /*! @brief add to iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl operator+(difference_type i) const { auto result = *this; result += i; return result; } /*! @brief addition of distance and iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ friend iter_impl operator+(difference_type i, const iter_impl& it) { auto result = it; result += i; return result; } /*! @brief subtract from iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ iter_impl operator-(difference_type i) const { auto result = *this; result -= i; return result; } /*! @brief return difference @pre The iterator is initialized; i.e. `m_object != nullptr`. */ difference_type operator-(const iter_impl& other) const { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", m_object)); case value_t::array: return m_it.array_iterator - other.m_it.array_iterator; case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: return m_it.primitive_iterator - other.m_it.primitive_iterator; } } /*! @brief access to successor @pre The iterator is initialized; i.e. `m_object != nullptr`. */ reference operator[](difference_type n) const { JSON_ASSERT(m_object != nullptr); switch (m_object->m_data.m_type) { case value_t::object: JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators", m_object)); case value_t::array: return *std::next(m_it.array_iterator, n); case value_t::null: JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: { if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.get_value() == -n)) { return *m_object; } JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); } } } /*! @brief return the key of an object iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ const typename object_t::key_type& key() const { JSON_ASSERT(m_object != nullptr); if (JSON_HEDLEY_LIKELY(m_object->is_object())) { return m_it.object_iterator->first; } JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators", m_object)); } /*! @brief return the value of an iterator @pre The iterator is initialized; i.e. `m_object != nullptr`. */ reference value() const { return operator*(); } JSON_PRIVATE_UNLESS_TESTED: /// associated JSON instance pointer m_object = nullptr; /// the actual iterator of the associated instance internal_iterator::type> m_it {}; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/iterators/iteration_proxy.hpp000066400000000000000000000200561453145653700252530ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // size_t #include // input_iterator_tag #include // string, to_string #include // tuple_size, get, tuple_element #include // move #if JSON_HAS_RANGES #include // enable_borrowed_range #endif #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template void int_to_string( string_type& target, std::size_t value ) { // For ADL using std::to_string; target = to_string(value); } template class iteration_proxy_value { public: using difference_type = std::ptrdiff_t; using value_type = iteration_proxy_value; using pointer = value_type *; using reference = value_type &; using iterator_category = std::input_iterator_tag; using string_type = typename std::remove_cv< typename std::remove_reference().key() ) >::type >::type; private: /// the iterator IteratorType anchor{}; /// an index for arrays (used to create key names) std::size_t array_index = 0; /// last stringified array index mutable std::size_t array_index_last = 0; /// a string representation of the array index mutable string_type array_index_str = "0"; /// an empty string (to return a reference for primitive values) string_type empty_str{}; public: explicit iteration_proxy_value() = default; explicit iteration_proxy_value(IteratorType it, std::size_t array_index_ = 0) noexcept(std::is_nothrow_move_constructible::value && std::is_nothrow_default_constructible::value) : anchor(std::move(it)) , array_index(array_index_) {} iteration_proxy_value(iteration_proxy_value const&) = default; iteration_proxy_value& operator=(iteration_proxy_value const&) = default; // older GCCs are a bit fussy and require explicit noexcept specifiers on defaulted functions iteration_proxy_value(iteration_proxy_value&&) noexcept(std::is_nothrow_move_constructible::value && std::is_nothrow_move_constructible::value) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor,cppcoreguidelines-noexcept-move-operations) iteration_proxy_value& operator=(iteration_proxy_value&&) noexcept(std::is_nothrow_move_assignable::value && std::is_nothrow_move_assignable::value) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor,cppcoreguidelines-noexcept-move-operations) ~iteration_proxy_value() = default; /// dereference operator (needed for range-based for) const iteration_proxy_value& operator*() const { return *this; } /// increment operator (needed for range-based for) iteration_proxy_value& operator++() { ++anchor; ++array_index; return *this; } iteration_proxy_value operator++(int)& // NOLINT(cert-dcl21-cpp) { auto tmp = iteration_proxy_value(anchor, array_index); ++anchor; ++array_index; return tmp; } /// equality operator (needed for InputIterator) bool operator==(const iteration_proxy_value& o) const { return anchor == o.anchor; } /// inequality operator (needed for range-based for) bool operator!=(const iteration_proxy_value& o) const { return anchor != o.anchor; } /// return key of the iterator const string_type& key() const { JSON_ASSERT(anchor.m_object != nullptr); switch (anchor.m_object->type()) { // use integer array index as key case value_t::array: { if (array_index != array_index_last) { int_to_string( array_index_str, array_index ); array_index_last = array_index; } return array_index_str; } // use key from the object case value_t::object: return anchor.key(); // use an empty key for all primitive types case value_t::null: case value_t::string: case value_t::boolean: case value_t::number_integer: case value_t::number_unsigned: case value_t::number_float: case value_t::binary: case value_t::discarded: default: return empty_str; } } /// return value of the iterator typename IteratorType::reference value() const { return anchor.value(); } }; /// proxy class for the items() function template class iteration_proxy { private: /// the container to iterate typename IteratorType::pointer container = nullptr; public: explicit iteration_proxy() = default; /// construct iteration proxy from a container explicit iteration_proxy(typename IteratorType::reference cont) noexcept : container(&cont) {} iteration_proxy(iteration_proxy const&) = default; iteration_proxy& operator=(iteration_proxy const&) = default; iteration_proxy(iteration_proxy&&) noexcept = default; iteration_proxy& operator=(iteration_proxy&&) noexcept = default; ~iteration_proxy() = default; /// return iterator begin (needed for range-based for) iteration_proxy_value begin() const noexcept { return iteration_proxy_value(container->begin()); } /// return iterator end (needed for range-based for) iteration_proxy_value end() const noexcept { return iteration_proxy_value(container->end()); } }; // Structured Bindings Support // For further reference see https://blog.tartanllama.xyz/structured-bindings/ // And see https://github.com/nlohmann/json/pull/1391 template = 0> auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.key()) { return i.key(); } // Structured Bindings Support // For further reference see https://blog.tartanllama.xyz/structured-bindings/ // And see https://github.com/nlohmann/json/pull/1391 template = 0> auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.value()) { return i.value(); } } // namespace detail NLOHMANN_JSON_NAMESPACE_END // The Addition to the STD Namespace is required to add // Structured Bindings Support to the iteration_proxy_value class // For further reference see https://blog.tartanllama.xyz/structured-bindings/ // And see https://github.com/nlohmann/json/pull/1391 namespace std { #if defined(__clang__) // Fix: https://github.com/nlohmann/json/issues/1401 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wmismatched-tags" #endif template class tuple_size<::nlohmann::detail::iteration_proxy_value> // NOLINT(cert-dcl58-cpp) : public std::integral_constant {}; template class tuple_element> // NOLINT(cert-dcl58-cpp) { public: using type = decltype( get(std::declval < ::nlohmann::detail::iteration_proxy_value> ())); }; #if defined(__clang__) #pragma clang diagnostic pop #endif } // namespace std #if JSON_HAS_RANGES template inline constexpr bool ::std::ranges::enable_borrowed_range<::nlohmann::detail::iteration_proxy> = true; #endif json-3.11.3/include/nlohmann/detail/iterators/iterator_traits.hpp000066400000000000000000000033351453145653700252340ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // random_access_iterator_tag #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template struct iterator_types {}; template struct iterator_types < It, void_t> { using difference_type = typename It::difference_type; using value_type = typename It::value_type; using pointer = typename It::pointer; using reference = typename It::reference; using iterator_category = typename It::iterator_category; }; // This is required as some compilers implement std::iterator_traits in a way that // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. template struct iterator_traits { }; template struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> : iterator_types { }; template struct iterator_traits::value>> { using iterator_category = std::random_access_iterator_tag; using value_type = T; using difference_type = ptrdiff_t; using pointer = T*; using reference = T&; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/iterators/json_reverse_iterator.hpp000066400000000000000000000074251453145653700264360ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // ptrdiff_t #include // reverse_iterator #include // declval #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { ////////////////////// // reverse_iterator // ////////////////////// /*! @brief a template for a reverse iterator class @tparam Base the base iterator type to reverse. Valid types are @ref iterator (to create @ref reverse_iterator) and @ref const_iterator (to create @ref const_reverse_iterator). @requirement The class satisfies the following concept requirements: - [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): The iterator that can be moved can be moved in both directions (i.e. incremented and decremented). - [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): It is possible to write to the pointed-to element (only if @a Base is @ref iterator). @since version 1.0.0 */ template class json_reverse_iterator : public std::reverse_iterator { public: using difference_type = std::ptrdiff_t; /// shortcut to the reverse iterator adapter using base_iterator = std::reverse_iterator; /// the reference type for the pointed-to element using reference = typename Base::reference; /// create reverse iterator from iterator explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept : base_iterator(it) {} /// create reverse iterator from base class explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} /// post-increment (it++) json_reverse_iterator operator++(int)& // NOLINT(cert-dcl21-cpp) { return static_cast(base_iterator::operator++(1)); } /// pre-increment (++it) json_reverse_iterator& operator++() { return static_cast(base_iterator::operator++()); } /// post-decrement (it--) json_reverse_iterator operator--(int)& // NOLINT(cert-dcl21-cpp) { return static_cast(base_iterator::operator--(1)); } /// pre-decrement (--it) json_reverse_iterator& operator--() { return static_cast(base_iterator::operator--()); } /// add to iterator json_reverse_iterator& operator+=(difference_type i) { return static_cast(base_iterator::operator+=(i)); } /// add to iterator json_reverse_iterator operator+(difference_type i) const { return static_cast(base_iterator::operator+(i)); } /// subtract from iterator json_reverse_iterator operator-(difference_type i) const { return static_cast(base_iterator::operator-(i)); } /// return difference difference_type operator-(const json_reverse_iterator& other) const { return base_iterator(*this) - base_iterator(other); } /// access to successor reference operator[](difference_type n) const { return *(this->operator+(n)); } /// return the key of an object iterator auto key() const -> decltype(std::declval().key()) { auto it = --this->base(); return it.key(); } /// return the value of an iterator reference value() const { auto it = --this->base(); return it.operator * (); } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/iterators/primitive_iterator.hpp000066400000000000000000000062331453145653700257360ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // ptrdiff_t #include // numeric_limits #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /* @brief an iterator for primitive JSON types This class models an iterator for primitive JSON types (boolean, number, string). It's only purpose is to allow the iterator/const_iterator classes to "iterate" over primitive values. Internally, the iterator is modeled by a `difference_type` variable. Value begin_value (`0`) models the begin, end_value (`1`) models past the end. */ class primitive_iterator_t { private: using difference_type = std::ptrdiff_t; static constexpr difference_type begin_value = 0; static constexpr difference_type end_value = begin_value + 1; JSON_PRIVATE_UNLESS_TESTED: /// iterator as signed integer type difference_type m_it = (std::numeric_limits::min)(); public: constexpr difference_type get_value() const noexcept { return m_it; } /// set iterator to a defined beginning void set_begin() noexcept { m_it = begin_value; } /// set iterator to a defined past the end void set_end() noexcept { m_it = end_value; } /// return whether the iterator can be dereferenced constexpr bool is_begin() const noexcept { return m_it == begin_value; } /// return whether the iterator is at end constexpr bool is_end() const noexcept { return m_it == end_value; } friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it == rhs.m_it; } friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it < rhs.m_it; } primitive_iterator_t operator+(difference_type n) noexcept { auto result = *this; result += n; return result; } friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it - rhs.m_it; } primitive_iterator_t& operator++() noexcept { ++m_it; return *this; } primitive_iterator_t operator++(int)& noexcept // NOLINT(cert-dcl21-cpp) { auto result = *this; ++m_it; return result; } primitive_iterator_t& operator--() noexcept { --m_it; return *this; } primitive_iterator_t operator--(int)& noexcept // NOLINT(cert-dcl21-cpp) { auto result = *this; --m_it; return result; } primitive_iterator_t& operator+=(difference_type n) noexcept { m_it += n; return *this; } primitive_iterator_t& operator-=(difference_type n) noexcept { m_it -= n; return *this; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/json_custom_base_class.hpp000066400000000000000000000022321453145653700245160ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // conditional, is_same #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief Default base class of the @ref basic_json class. So that the correct implementations of the copy / move ctors / assign operators of @ref basic_json do not require complex case distinctions (no base class / custom base class used as customization point), @ref basic_json always has a base class. By default, this class is used because it is empty and thus has no effect on the behavior of @ref basic_json. */ struct json_default_base {}; template using json_base_class = typename std::conditional < std::is_same::value, json_default_base, T >::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/json_pointer.hpp000066400000000000000000001104271453145653700225130ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // all_of #include // isdigit #include // errno, ERANGE #include // strtoull #ifndef JSON_NO_IO #include // ostream #endif // JSON_NO_IO #include // max #include // accumulate #include // string #include // move #include // vector #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document /// @sa https://json.nlohmann.me/api/json_pointer/ template class json_pointer { // allow basic_json to access private members NLOHMANN_BASIC_JSON_TPL_DECLARATION friend class basic_json; template friend class json_pointer; template struct string_t_helper { using type = T; }; NLOHMANN_BASIC_JSON_TPL_DECLARATION struct string_t_helper { using type = StringType; }; public: // for backwards compatibility accept BasicJsonType using string_t = typename string_t_helper::type; /// @brief create JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/json_pointer/ explicit json_pointer(const string_t& s = "") : reference_tokens(split(s)) {} /// @brief return a string representation of the JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/to_string/ string_t to_string() const { return std::accumulate(reference_tokens.begin(), reference_tokens.end(), string_t{}, [](const string_t& a, const string_t& b) { return detail::concat(a, '/', detail::escape(b)); }); } /// @brief return a string representation of the JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_string/ JSON_HEDLEY_DEPRECATED_FOR(3.11.0, to_string()) operator string_t() const { return to_string(); } #ifndef JSON_NO_IO /// @brief write string representation of the JSON pointer to stream /// @sa https://json.nlohmann.me/api/basic_json/operator_ltlt/ friend std::ostream& operator<<(std::ostream& o, const json_pointer& ptr) { o << ptr.to_string(); return o; } #endif /// @brief append another JSON pointer at the end of this JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ json_pointer& operator/=(const json_pointer& ptr) { reference_tokens.insert(reference_tokens.end(), ptr.reference_tokens.begin(), ptr.reference_tokens.end()); return *this; } /// @brief append an unescaped reference token at the end of this JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ json_pointer& operator/=(string_t token) { push_back(std::move(token)); return *this; } /// @brief append an array index at the end of this JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ json_pointer& operator/=(std::size_t array_idx) { return *this /= std::to_string(array_idx); } /// @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ friend json_pointer operator/(const json_pointer& lhs, const json_pointer& rhs) { return json_pointer(lhs) /= rhs; } /// @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ friend json_pointer operator/(const json_pointer& lhs, string_t token) // NOLINT(performance-unnecessary-value-param) { return json_pointer(lhs) /= std::move(token); } /// @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ friend json_pointer operator/(const json_pointer& lhs, std::size_t array_idx) { return json_pointer(lhs) /= array_idx; } /// @brief returns the parent of this JSON pointer /// @sa https://json.nlohmann.me/api/json_pointer/parent_pointer/ json_pointer parent_pointer() const { if (empty()) { return *this; } json_pointer res = *this; res.pop_back(); return res; } /// @brief remove last reference token /// @sa https://json.nlohmann.me/api/json_pointer/pop_back/ void pop_back() { if (JSON_HEDLEY_UNLIKELY(empty())) { JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", nullptr)); } reference_tokens.pop_back(); } /// @brief return last reference token /// @sa https://json.nlohmann.me/api/json_pointer/back/ const string_t& back() const { if (JSON_HEDLEY_UNLIKELY(empty())) { JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", nullptr)); } return reference_tokens.back(); } /// @brief append an unescaped token at the end of the reference pointer /// @sa https://json.nlohmann.me/api/json_pointer/push_back/ void push_back(const string_t& token) { reference_tokens.push_back(token); } /// @brief append an unescaped token at the end of the reference pointer /// @sa https://json.nlohmann.me/api/json_pointer/push_back/ void push_back(string_t&& token) { reference_tokens.push_back(std::move(token)); } /// @brief return whether pointer points to the root document /// @sa https://json.nlohmann.me/api/json_pointer/empty/ bool empty() const noexcept { return reference_tokens.empty(); } private: /*! @param[in] s reference token to be converted into an array index @return integer representation of @a s @throw parse_error.106 if an array index begins with '0' @throw parse_error.109 if an array index begins not with a digit @throw out_of_range.404 if string @a s could not be converted to an integer @throw out_of_range.410 if an array index exceeds size_type */ template static typename BasicJsonType::size_type array_index(const string_t& s) { using size_type = typename BasicJsonType::size_type; // error condition (cf. RFC 6901, Sect. 4) if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && s[0] == '0')) { JSON_THROW(detail::parse_error::create(106, 0, detail::concat("array index '", s, "' must not begin with '0'"), nullptr)); } // error condition (cf. RFC 6901, Sect. 4) if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && !(s[0] >= '1' && s[0] <= '9'))) { JSON_THROW(detail::parse_error::create(109, 0, detail::concat("array index '", s, "' is not a number"), nullptr)); } const char* p = s.c_str(); char* p_end = nullptr; errno = 0; // strtoull doesn't reset errno const unsigned long long res = std::strtoull(p, &p_end, 10); // NOLINT(runtime/int) if (p == p_end // invalid input or empty string || errno == ERANGE // out of range || JSON_HEDLEY_UNLIKELY(static_cast(p_end - p) != s.size())) // incomplete read { JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", s, "'"), nullptr)); } // only triggered on special platforms (like 32bit), see also // https://github.com/nlohmann/json/pull/2203 if (res >= static_cast((std::numeric_limits::max)())) // NOLINT(runtime/int) { JSON_THROW(detail::out_of_range::create(410, detail::concat("array index ", s, " exceeds size_type"), nullptr)); // LCOV_EXCL_LINE } return static_cast(res); } JSON_PRIVATE_UNLESS_TESTED: json_pointer top() const { if (JSON_HEDLEY_UNLIKELY(empty())) { JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", nullptr)); } json_pointer result = *this; result.reference_tokens = {reference_tokens[0]}; return result; } private: /*! @brief create and return a reference to the pointed to value @complexity Linear in the number of reference tokens. @throw parse_error.109 if array index is not a number @throw type_error.313 if value cannot be unflattened */ template BasicJsonType& get_and_create(BasicJsonType& j) const { auto* result = &j; // in case no reference tokens exist, return a reference to the JSON value // j which will be overwritten by a primitive value for (const auto& reference_token : reference_tokens) { switch (result->type()) { case detail::value_t::null: { if (reference_token == "0") { // start a new array if reference token is 0 result = &result->operator[](0); } else { // start a new object otherwise result = &result->operator[](reference_token); } break; } case detail::value_t::object: { // create an entry in the object result = &result->operator[](reference_token); break; } case detail::value_t::array: { // create an entry in the array result = &result->operator[](array_index(reference_token)); break; } /* The following code is only reached if there exists a reference token _and_ the current value is primitive. In this case, we have an error situation, because primitive values may only occur as single value; that is, with an empty list of reference tokens. */ case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: JSON_THROW(detail::type_error::create(313, "invalid value to unflatten", &j)); } } return *result; } /*! @brief return a reference to the pointed to value @note This version does not throw if a value is not present, but tries to create nested values instead. For instance, calling this function with pointer `"/this/that"` on a null value is equivalent to calling `operator[]("this").operator[]("that")` on that value, effectively changing the null value to an object. @param[in] ptr a JSON value @return reference to the JSON value pointed to by the JSON pointer @complexity Linear in the length of the JSON pointer. @throw parse_error.106 if an array index begins with '0' @throw parse_error.109 if an array index was not a number @throw out_of_range.404 if the JSON pointer can not be resolved */ template BasicJsonType& get_unchecked(BasicJsonType* ptr) const { for (const auto& reference_token : reference_tokens) { // convert null values to arrays or objects before continuing if (ptr->is_null()) { // check if reference token is a number const bool nums = std::all_of(reference_token.begin(), reference_token.end(), [](const unsigned char x) { return std::isdigit(x); }); // change value to array for numbers or "-" or to object otherwise *ptr = (nums || reference_token == "-") ? detail::value_t::array : detail::value_t::object; } switch (ptr->type()) { case detail::value_t::object: { // use unchecked object access ptr = &ptr->operator[](reference_token); break; } case detail::value_t::array: { if (reference_token == "-") { // explicitly treat "-" as index beyond the end ptr = &ptr->operator[](ptr->m_data.m_value.array->size()); } else { // convert array index to number; unchecked access ptr = &ptr->operator[](array_index(reference_token)); } break; } case detail::value_t::null: case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); } } return *ptr; } /*! @throw parse_error.106 if an array index begins with '0' @throw parse_error.109 if an array index was not a number @throw out_of_range.402 if the array index '-' is used @throw out_of_range.404 if the JSON pointer can not be resolved */ template BasicJsonType& get_checked(BasicJsonType* ptr) const { for (const auto& reference_token : reference_tokens) { switch (ptr->type()) { case detail::value_t::object: { // note: at performs range check ptr = &ptr->at(reference_token); break; } case detail::value_t::array: { if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) { // "-" always fails the range check JSON_THROW(detail::out_of_range::create(402, detail::concat( "array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), ") is out of range"), ptr)); } // note: at performs range check ptr = &ptr->at(array_index(reference_token)); break; } case detail::value_t::null: case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); } } return *ptr; } /*! @brief return a const reference to the pointed to value @param[in] ptr a JSON value @return const reference to the JSON value pointed to by the JSON pointer @throw parse_error.106 if an array index begins with '0' @throw parse_error.109 if an array index was not a number @throw out_of_range.402 if the array index '-' is used @throw out_of_range.404 if the JSON pointer can not be resolved */ template const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const { for (const auto& reference_token : reference_tokens) { switch (ptr->type()) { case detail::value_t::object: { // use unchecked object access ptr = &ptr->operator[](reference_token); break; } case detail::value_t::array: { if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) { // "-" cannot be used for const access JSON_THROW(detail::out_of_range::create(402, detail::concat("array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), ") is out of range"), ptr)); } // use unchecked array access ptr = &ptr->operator[](array_index(reference_token)); break; } case detail::value_t::null: case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); } } return *ptr; } /*! @throw parse_error.106 if an array index begins with '0' @throw parse_error.109 if an array index was not a number @throw out_of_range.402 if the array index '-' is used @throw out_of_range.404 if the JSON pointer can not be resolved */ template const BasicJsonType& get_checked(const BasicJsonType* ptr) const { for (const auto& reference_token : reference_tokens) { switch (ptr->type()) { case detail::value_t::object: { // note: at performs range check ptr = &ptr->at(reference_token); break; } case detail::value_t::array: { if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) { // "-" always fails the range check JSON_THROW(detail::out_of_range::create(402, detail::concat( "array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), ") is out of range"), ptr)); } // note: at performs range check ptr = &ptr->at(array_index(reference_token)); break; } case detail::value_t::null: case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); } } return *ptr; } /*! @throw parse_error.106 if an array index begins with '0' @throw parse_error.109 if an array index was not a number */ template bool contains(const BasicJsonType* ptr) const { for (const auto& reference_token : reference_tokens) { switch (ptr->type()) { case detail::value_t::object: { if (!ptr->contains(reference_token)) { // we did not find the key in the object return false; } ptr = &ptr->operator[](reference_token); break; } case detail::value_t::array: { if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) { // "-" always fails the range check return false; } if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9"))) { // invalid char return false; } if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1)) { if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9'))) { // first char should be between '1' and '9' return false; } for (std::size_t i = 1; i < reference_token.size(); i++) { if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9'))) { // other char should be between '0' and '9' return false; } } } const auto idx = array_index(reference_token); if (idx >= ptr->size()) { // index out of range return false; } ptr = &ptr->operator[](idx); break; } case detail::value_t::null: case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: { // we do not expect primitive values if there is still a // reference token to process return false; } } } // no reference token left means we found a primitive value return true; } /*! @brief split the string input to reference tokens @note This function is only called by the json_pointer constructor. All exceptions below are documented there. @throw parse_error.107 if the pointer is not empty or begins with '/' @throw parse_error.108 if character '~' is not followed by '0' or '1' */ static std::vector split(const string_t& reference_string) { std::vector result; // special case: empty reference string -> no reference tokens if (reference_string.empty()) { return result; } // check if nonempty reference string begins with slash if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/')) { JSON_THROW(detail::parse_error::create(107, 1, detail::concat("JSON pointer must be empty or begin with '/' - was: '", reference_string, "'"), nullptr)); } // extract the reference tokens: // - slash: position of the last read slash (or end of string) // - start: position after the previous slash for ( // search for the first slash after the first character std::size_t slash = reference_string.find_first_of('/', 1), // set the beginning of the first reference token start = 1; // we can stop if start == 0 (if slash == string_t::npos) start != 0; // set the beginning of the next reference token // (will eventually be 0 if slash == string_t::npos) start = (slash == string_t::npos) ? 0 : slash + 1, // find next slash slash = reference_string.find_first_of('/', start)) { // use the text between the beginning of the reference token // (start) and the last slash (slash). auto reference_token = reference_string.substr(start, slash - start); // check reference tokens are properly escaped for (std::size_t pos = reference_token.find_first_of('~'); pos != string_t::npos; pos = reference_token.find_first_of('~', pos + 1)) { JSON_ASSERT(reference_token[pos] == '~'); // ~ must be followed by 0 or 1 if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 || (reference_token[pos + 1] != '0' && reference_token[pos + 1] != '1'))) { JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'", nullptr)); } } // finally, store the reference token detail::unescape(reference_token); result.push_back(reference_token); } return result; } private: /*! @param[in] reference_string the reference string to the current value @param[in] value the value to consider @param[in,out] result the result object to insert values to @note Empty objects or arrays are flattened to `null`. */ template static void flatten(const string_t& reference_string, const BasicJsonType& value, BasicJsonType& result) { switch (value.type()) { case detail::value_t::array: { if (value.m_data.m_value.array->empty()) { // flatten empty array as null result[reference_string] = nullptr; } else { // iterate array and use index as reference string for (std::size_t i = 0; i < value.m_data.m_value.array->size(); ++i) { flatten(detail::concat(reference_string, '/', std::to_string(i)), value.m_data.m_value.array->operator[](i), result); } } break; } case detail::value_t::object: { if (value.m_data.m_value.object->empty()) { // flatten empty object as null result[reference_string] = nullptr; } else { // iterate object and use keys as reference string for (const auto& element : *value.m_data.m_value.object) { flatten(detail::concat(reference_string, '/', detail::escape(element.first)), element.second, result); } } break; } case detail::value_t::null: case detail::value_t::string: case detail::value_t::boolean: case detail::value_t::number_integer: case detail::value_t::number_unsigned: case detail::value_t::number_float: case detail::value_t::binary: case detail::value_t::discarded: default: { // add primitive value with its reference string result[reference_string] = value; break; } } } /*! @param[in] value flattened JSON @return unflattened JSON @throw parse_error.109 if array index is not a number @throw type_error.314 if value is not an object @throw type_error.315 if object values are not primitive @throw type_error.313 if value cannot be unflattened */ template static BasicJsonType unflatten(const BasicJsonType& value) { if (JSON_HEDLEY_UNLIKELY(!value.is_object())) { JSON_THROW(detail::type_error::create(314, "only objects can be unflattened", &value)); } BasicJsonType result; // iterate the JSON object values for (const auto& element : *value.m_data.m_value.object) { if (JSON_HEDLEY_UNLIKELY(!element.second.is_primitive())) { JSON_THROW(detail::type_error::create(315, "values in object must be primitive", &element.second)); } // assign value to reference pointed to by JSON pointer; Note that if // the JSON pointer is "" (i.e., points to the whole value), function // get_and_create returns a reference to result itself. An assignment // will then create a primitive value. json_pointer(element.first).get_and_create(result) = element.second; } return result; } // can't use conversion operator because of ambiguity json_pointer convert() const& { json_pointer result; result.reference_tokens = reference_tokens; return result; } json_pointer convert()&& { json_pointer result; result.reference_tokens = std::move(reference_tokens); return result; } public: #if JSON_HAS_THREE_WAY_COMPARISON /// @brief compares two JSON pointers for equality /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ template bool operator==(const json_pointer& rhs) const noexcept { return reference_tokens == rhs.reference_tokens; } /// @brief compares JSON pointer and string for equality /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator==(json_pointer)) bool operator==(const string_t& rhs) const { return *this == json_pointer(rhs); } /// @brief 3-way compares two JSON pointers template std::strong_ordering operator<=>(const json_pointer& rhs) const noexcept // *NOPAD* { return reference_tokens <=> rhs.reference_tokens; // *NOPAD* } #else /// @brief compares two JSON pointers for equality /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator==(const json_pointer& lhs, const json_pointer& rhs) noexcept; /// @brief compares JSON pointer and string for equality /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator==(const json_pointer& lhs, const StringType& rhs); /// @brief compares string and JSON pointer for equality /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator==(const StringType& lhs, const json_pointer& rhs); /// @brief compares two JSON pointers for inequality /// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/ template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator!=(const json_pointer& lhs, const json_pointer& rhs) noexcept; /// @brief compares JSON pointer and string for inequality /// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/ template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator!=(const json_pointer& lhs, const StringType& rhs); /// @brief compares string and JSON pointer for inequality /// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/ template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator!=(const StringType& lhs, const json_pointer& rhs); /// @brief compares two JSON pointer for less-than template // NOLINTNEXTLINE(readability-redundant-declaration) friend bool operator<(const json_pointer& lhs, const json_pointer& rhs) noexcept; #endif private: /// the reference tokens std::vector reference_tokens; }; #if !JSON_HAS_THREE_WAY_COMPARISON // functions cannot be defined inside class due to ODR violations template inline bool operator==(const json_pointer& lhs, const json_pointer& rhs) noexcept { return lhs.reference_tokens == rhs.reference_tokens; } template::string_t> JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator==(json_pointer, json_pointer)) inline bool operator==(const json_pointer& lhs, const StringType& rhs) { return lhs == json_pointer(rhs); } template::string_t> JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator==(json_pointer, json_pointer)) inline bool operator==(const StringType& lhs, const json_pointer& rhs) { return json_pointer(lhs) == rhs; } template inline bool operator!=(const json_pointer& lhs, const json_pointer& rhs) noexcept { return !(lhs == rhs); } template::string_t> JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator!=(json_pointer, json_pointer)) inline bool operator!=(const json_pointer& lhs, const StringType& rhs) { return !(lhs == rhs); } template::string_t> JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator!=(json_pointer, json_pointer)) inline bool operator!=(const StringType& lhs, const json_pointer& rhs) { return !(lhs == rhs); } template inline bool operator<(const json_pointer& lhs, const json_pointer& rhs) noexcept { return lhs.reference_tokens < rhs.reference_tokens; } #endif NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/json_ref.hpp000066400000000000000000000034231453145653700216040ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template class json_ref { public: using value_type = BasicJsonType; json_ref(value_type&& value) : owned_value(std::move(value)) {} json_ref(const value_type& value) : value_ref(&value) {} json_ref(std::initializer_list init) : owned_value(init) {} template < class... Args, enable_if_t::value, int> = 0 > json_ref(Args && ... args) : owned_value(std::forward(args)...) {} // class should be movable only json_ref(json_ref&&) noexcept = default; json_ref(const json_ref&) = delete; json_ref& operator=(const json_ref&) = delete; json_ref& operator=(json_ref&&) = delete; ~json_ref() = default; value_type moved_or_copied() const { if (value_ref == nullptr) { return std::move(owned_value); } return *value_ref; } value_type const& operator*() const { return value_ref ? *value_ref : owned_value; } value_type const* operator->() const { return &** this; } private: mutable value_type owned_value = nullptr; value_type const* value_ref = nullptr; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/macro_scope.hpp000066400000000000000000001251671453145653700223030ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // declval, pair #include #include // This file contains all internal macro definitions (except those affecting ABI) // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them #include // exclude unsupported compilers #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) #if defined(__clang__) #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" #endif #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" #endif #endif #endif // C++ language standard detection // if the user manually specified the used c++ version this is skipped #if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) #define JSON_HAS_CPP_20 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) #define JSON_HAS_CPP_14 #endif // the cpp 11 flag is always specified because it is the minimal required version #define JSON_HAS_CPP_11 #endif #ifdef __has_include #if __has_include() #include #endif #endif #if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) #ifdef JSON_HAS_CPP_17 #if defined(__cpp_lib_filesystem) #define JSON_HAS_FILESYSTEM 1 #elif defined(__cpp_lib_experimental_filesystem) #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #elif !defined(__has_include) #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #elif __has_include() #define JSON_HAS_FILESYSTEM 1 #elif __has_include() #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 #endif // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support #if defined(__clang_major__) && __clang_major__ < 7 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support #if defined(_MSC_VER) && _MSC_VER < 1914 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before iOS 13 #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif // no filesystem support before macOS Catalina #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #endif #endif #endif #ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 #endif #ifndef JSON_HAS_FILESYSTEM #define JSON_HAS_FILESYSTEM 0 #endif #ifndef JSON_HAS_THREE_WAY_COMPARISON #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L #define JSON_HAS_THREE_WAY_COMPARISON 1 #else #define JSON_HAS_THREE_WAY_COMPARISON 0 #endif #endif #ifndef JSON_HAS_RANGES // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 #define JSON_HAS_RANGES 0 #elif defined(__cpp_lib_ranges) #define JSON_HAS_RANGES 1 #else #define JSON_HAS_RANGES 0 #endif #endif #ifndef JSON_HAS_STATIC_RTTI #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 #define JSON_HAS_STATIC_RTTI 1 #else #define JSON_HAS_STATIC_RTTI 0 #endif #endif #ifdef JSON_HAS_CPP_17 #define JSON_INLINE_VARIABLE inline #else #define JSON_INLINE_VARIABLE #endif #if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] #else #define JSON_NO_UNIQUE_ADDRESS #endif // disable documentation warnings on clang #if defined(__clang__) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdocumentation" #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" #endif // allow disabling exceptions #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) #define JSON_THROW(exception) throw exception #define JSON_TRY try #define JSON_CATCH(exception) catch(exception) #define JSON_INTERNAL_CATCH(exception) catch(exception) #else #include #define JSON_THROW(exception) std::abort() #define JSON_TRY if(true) #define JSON_CATCH(exception) if(false) #define JSON_INTERNAL_CATCH(exception) if(false) #endif // override exception macros #if defined(JSON_THROW_USER) #undef JSON_THROW #define JSON_THROW JSON_THROW_USER #endif #if defined(JSON_TRY_USER) #undef JSON_TRY #define JSON_TRY JSON_TRY_USER #endif #if defined(JSON_CATCH_USER) #undef JSON_CATCH #define JSON_CATCH JSON_CATCH_USER #undef JSON_INTERNAL_CATCH #define JSON_INTERNAL_CATCH JSON_CATCH_USER #endif #if defined(JSON_INTERNAL_CATCH_USER) #undef JSON_INTERNAL_CATCH #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER #endif // allow overriding assert #if !defined(JSON_ASSERT) #include // assert #define JSON_ASSERT(x) assert(x) #endif // allow to access some private functions (needed by the test suite) #if defined(JSON_TESTS_PRIVATE) #define JSON_PRIVATE_UNLESS_TESTED public #else #define JSON_PRIVATE_UNLESS_TESTED private #endif /*! @brief macro to briefly define a mapping between an enum and JSON @def NLOHMANN_JSON_SERIALIZE_ENUM @since version 3.4.0 */ #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ template \ inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ { \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ static const std::pair m[] = __VA_ARGS__; \ auto it = std::find_if(std::begin(m), std::end(m), \ [e](const std::pair& ej_pair) -> bool \ { \ return ej_pair.first == e; \ }); \ j = ((it != std::end(m)) ? it : std::begin(m))->second; \ } \ template \ inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ { \ static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ static const std::pair m[] = __VA_ARGS__; \ auto it = std::find_if(std::begin(m), std::end(m), \ [&j](const std::pair& ej_pair) -> bool \ { \ return ej_pair.second == j; \ }); \ e = ((it != std::end(m)) ? it : std::begin(m))->first; \ } // Ugly macros to avoid uglier copy-paste when specializing basic_json. They // may be removed in the future once the class is split. #define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ template class ObjectType, \ template class ArrayType, \ class StringType, class BooleanType, class NumberIntegerType, \ class NumberUnsignedType, class NumberFloatType, \ template class AllocatorType, \ template class JSONSerializer, \ class BinaryType, \ class CustomBaseClass> #define NLOHMANN_BASIC_JSON_TPL \ basic_json // Macros to simplify conversion from/to types #define NLOHMANN_JSON_EXPAND( x ) x #define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME #define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ NLOHMANN_JSON_PASTE64, \ NLOHMANN_JSON_PASTE63, \ NLOHMANN_JSON_PASTE62, \ NLOHMANN_JSON_PASTE61, \ NLOHMANN_JSON_PASTE60, \ NLOHMANN_JSON_PASTE59, \ NLOHMANN_JSON_PASTE58, \ NLOHMANN_JSON_PASTE57, \ NLOHMANN_JSON_PASTE56, \ NLOHMANN_JSON_PASTE55, \ NLOHMANN_JSON_PASTE54, \ NLOHMANN_JSON_PASTE53, \ NLOHMANN_JSON_PASTE52, \ NLOHMANN_JSON_PASTE51, \ NLOHMANN_JSON_PASTE50, \ NLOHMANN_JSON_PASTE49, \ NLOHMANN_JSON_PASTE48, \ NLOHMANN_JSON_PASTE47, \ NLOHMANN_JSON_PASTE46, \ NLOHMANN_JSON_PASTE45, \ NLOHMANN_JSON_PASTE44, \ NLOHMANN_JSON_PASTE43, \ NLOHMANN_JSON_PASTE42, \ NLOHMANN_JSON_PASTE41, \ NLOHMANN_JSON_PASTE40, \ NLOHMANN_JSON_PASTE39, \ NLOHMANN_JSON_PASTE38, \ NLOHMANN_JSON_PASTE37, \ NLOHMANN_JSON_PASTE36, \ NLOHMANN_JSON_PASTE35, \ NLOHMANN_JSON_PASTE34, \ NLOHMANN_JSON_PASTE33, \ NLOHMANN_JSON_PASTE32, \ NLOHMANN_JSON_PASTE31, \ NLOHMANN_JSON_PASTE30, \ NLOHMANN_JSON_PASTE29, \ NLOHMANN_JSON_PASTE28, \ NLOHMANN_JSON_PASTE27, \ NLOHMANN_JSON_PASTE26, \ NLOHMANN_JSON_PASTE25, \ NLOHMANN_JSON_PASTE24, \ NLOHMANN_JSON_PASTE23, \ NLOHMANN_JSON_PASTE22, \ NLOHMANN_JSON_PASTE21, \ NLOHMANN_JSON_PASTE20, \ NLOHMANN_JSON_PASTE19, \ NLOHMANN_JSON_PASTE18, \ NLOHMANN_JSON_PASTE17, \ NLOHMANN_JSON_PASTE16, \ NLOHMANN_JSON_PASTE15, \ NLOHMANN_JSON_PASTE14, \ NLOHMANN_JSON_PASTE13, \ NLOHMANN_JSON_PASTE12, \ NLOHMANN_JSON_PASTE11, \ NLOHMANN_JSON_PASTE10, \ NLOHMANN_JSON_PASTE9, \ NLOHMANN_JSON_PASTE8, \ NLOHMANN_JSON_PASTE7, \ NLOHMANN_JSON_PASTE6, \ NLOHMANN_JSON_PASTE5, \ NLOHMANN_JSON_PASTE4, \ NLOHMANN_JSON_PASTE3, \ NLOHMANN_JSON_PASTE2, \ NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) #define NLOHMANN_JSON_PASTE2(func, v1) func(v1) #define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) #define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) #define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) #define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) #define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) #define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) #define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) #define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) #define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) #define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) #define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) #define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) #define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) #define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) #define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) #define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) #define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) #define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) #define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) #define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) #define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) #define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) #define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) #define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) #define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) #define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) #define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) #define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) #define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) #define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) #define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) #define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) #define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) #define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) #define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) #define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) #define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) #define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) #define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) #define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) #define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) #define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) #define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) #define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) #define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) #define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) #define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) #define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) #define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) #define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) #define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) #define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) #define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) #define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) #define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) #define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) #define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) #define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) #define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) #define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) #define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) #define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) #define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; #define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); #define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); /*! @brief macro @def NLOHMANN_DEFINE_TYPE_INTRUSIVE @since version 3.9.0 */ #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } /*! @brief macro @def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE @since version 3.9.0 */ #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } // inspired from https://stackoverflow.com/a/26745591 // allows to call any std function as if (e.g. with begin): // using std::begin; begin(x); // // it allows using the detected idiom to retrieve the return type // of such an expression #define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ namespace detail { \ using std::std_name; \ \ template \ using result_of_##std_name = decltype(std_name(std::declval()...)); \ } \ \ namespace detail2 { \ struct std_name##_tag \ { \ }; \ \ template \ std_name##_tag std_name(T&&...); \ \ template \ using result_of_##std_name = decltype(std_name(std::declval()...)); \ \ template \ struct would_call_std_##std_name \ { \ static constexpr auto const value = ::nlohmann::detail:: \ is_detected_exact::value; \ }; \ } /* namespace detail2 */ \ \ template \ struct would_call_std_##std_name : detail2::would_call_std_##std_name \ { \ } #ifndef JSON_USE_IMPLICIT_CONVERSIONS #define JSON_USE_IMPLICIT_CONVERSIONS 1 #endif #if JSON_USE_IMPLICIT_CONVERSIONS #define JSON_EXPLICIT #else #define JSON_EXPLICIT explicit #endif #ifndef JSON_DISABLE_ENUM_SERIALIZATION #define JSON_DISABLE_ENUM_SERIALIZATION 0 #endif #ifndef JSON_USE_GLOBAL_UDLS #define JSON_USE_GLOBAL_UDLS 1 #endif json-3.11.3/include/nlohmann/detail/macro_unscope.hpp000066400000000000000000000023441453145653700226350ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once // restore clang diagnostic settings #if defined(__clang__) #pragma clang diagnostic pop #endif // clean up #undef JSON_ASSERT #undef JSON_INTERNAL_CATCH #undef JSON_THROW #undef JSON_PRIVATE_UNLESS_TESTED #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL #undef JSON_EXPLICIT #undef NLOHMANN_CAN_CALL_STD_FUNC_IMPL #undef JSON_INLINE_VARIABLE #undef JSON_NO_UNIQUE_ADDRESS #undef JSON_DISABLE_ENUM_SERIALIZATION #undef JSON_USE_GLOBAL_UDLS #ifndef JSON_TEST_KEEP_MACROS #undef JSON_CATCH #undef JSON_TRY #undef JSON_HAS_CPP_11 #undef JSON_HAS_CPP_14 #undef JSON_HAS_CPP_17 #undef JSON_HAS_CPP_20 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #undef JSON_HAS_THREE_WAY_COMPARISON #undef JSON_HAS_RANGES #undef JSON_HAS_STATIC_RTTI #undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #endif #include json-3.11.3/include/nlohmann/detail/meta/000077500000000000000000000000001453145653700202125ustar00rootroot00000000000000json-3.11.3/include/nlohmann/detail/meta/call_std/000077500000000000000000000000001453145653700217775ustar00rootroot00000000000000json-3.11.3/include/nlohmann/detail/meta/call_std/begin.hpp000066400000000000000000000007051453145653700235760ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/meta/call_std/end.hpp000066400000000000000000000007031453145653700232560ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/meta/cpp_future.hpp000066400000000000000000000120721453145653700231010ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-FileCopyrightText: 2018 The Abseil Authors // SPDX-License-Identifier: MIT #pragma once #include // array #include // size_t #include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include // index_sequence, make_index_sequence, index_sequence_for #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template using uncvref_t = typename std::remove_cv::type>::type; #ifdef JSON_HAS_CPP_14 // the following utilities are natively available in C++14 using std::enable_if_t; using std::index_sequence; using std::make_index_sequence; using std::index_sequence_for; #else // alias templates to reduce boilerplate template using enable_if_t = typename std::enable_if::type; // The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h // which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. //// START OF CODE FROM GOOGLE ABSEIL // integer_sequence // // Class template representing a compile-time integer sequence. An instantiation // of `integer_sequence` has a sequence of integers encoded in its // type through its template arguments (which is a common need when // working with C++11 variadic templates). `absl::integer_sequence` is designed // to be a drop-in replacement for C++14's `std::integer_sequence`. // // Example: // // template< class T, T... Ints > // void user_function(integer_sequence); // // int main() // { // // user_function's `T` will be deduced to `int` and `Ints...` // // will be deduced to `0, 1, 2, 3, 4`. // user_function(make_integer_sequence()); // } template struct integer_sequence { using value_type = T; static constexpr std::size_t size() noexcept { return sizeof...(Ints); } }; // index_sequence // // A helper template for an `integer_sequence` of `size_t`, // `absl::index_sequence` is designed to be a drop-in replacement for C++14's // `std::index_sequence`. template using index_sequence = integer_sequence; namespace utility_internal { template struct Extend; // Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. template struct Extend, SeqSize, 0> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; }; template struct Extend, SeqSize, 1> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; }; // Recursion helper for 'make_integer_sequence'. // 'Gen::type' is an alias for 'integer_sequence'. template struct Gen { using type = typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; }; template struct Gen { using type = integer_sequence; }; } // namespace utility_internal // Compile-time sequences of integers // make_integer_sequence // // This template alias is equivalent to // `integer_sequence`, and is designed to be a drop-in // replacement for C++14's `std::make_integer_sequence`. template using make_integer_sequence = typename utility_internal::Gen::type; // make_index_sequence // // This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, // and is designed to be a drop-in replacement for C++14's // `std::make_index_sequence`. template using make_index_sequence = make_integer_sequence; // index_sequence_for // // Converts a typename pack into an index sequence of the same length, and // is designed to be a drop-in replacement for C++14's // `std::index_sequence_for()` template using index_sequence_for = make_index_sequence; //// END OF CODE FROM GOOGLE ABSEIL #endif // dispatch utility (taken from ranges-v3) template struct priority_tag : priority_tag < N - 1 > {}; template<> struct priority_tag<0> {}; // taken from ranges-v3 template struct static_const { static JSON_INLINE_VARIABLE constexpr T value{}; }; #ifndef JSON_HAS_CPP_17 template constexpr T static_const::value; #endif template inline constexpr std::array make_array(Args&& ... args) { return std::array {{static_cast(std::forward(args))...}}; } } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/meta/detected.hpp000066400000000000000000000040751453145653700225120ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // https://en.cppreference.com/w/cpp/experimental/is_detected struct nonesuch { nonesuch() = delete; ~nonesuch() = delete; nonesuch(nonesuch const&) = delete; nonesuch(nonesuch const&&) = delete; void operator=(nonesuch const&) = delete; void operator=(nonesuch&&) = delete; }; template class Op, class... Args> struct detector { using value_t = std::false_type; using type = Default; }; template class Op, class... Args> struct detector>, Op, Args...> { using value_t = std::true_type; using type = Op; }; template class Op, class... Args> using is_detected = typename detector::value_t; template class Op, class... Args> struct is_detected_lazy : is_detected { }; template class Op, class... Args> using detected_t = typename detector::type; template class Op, class... Args> using detected_or = detector; template class Op, class... Args> using detected_or_t = typename detected_or::type; template class Op, class... Args> using is_detected_exact = std::is_same>; template class Op, class... Args> using is_detected_convertible = std::is_convertible, To>; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/meta/identity_tag.hpp000066400000000000000000000010161453145653700234050ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // dispatching helper struct template struct identity_tag {}; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/meta/is_sax.hpp000066400000000000000000000154601453145653700222170ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // size_t #include // declval #include // string #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template using null_function_t = decltype(std::declval().null()); template using boolean_function_t = decltype(std::declval().boolean(std::declval())); template using number_integer_function_t = decltype(std::declval().number_integer(std::declval())); template using number_unsigned_function_t = decltype(std::declval().number_unsigned(std::declval())); template using number_float_function_t = decltype(std::declval().number_float( std::declval(), std::declval())); template using string_function_t = decltype(std::declval().string(std::declval())); template using binary_function_t = decltype(std::declval().binary(std::declval())); template using start_object_function_t = decltype(std::declval().start_object(std::declval())); template using key_function_t = decltype(std::declval().key(std::declval())); template using end_object_function_t = decltype(std::declval().end_object()); template using start_array_function_t = decltype(std::declval().start_array(std::declval())); template using end_array_function_t = decltype(std::declval().end_array()); template using parse_error_function_t = decltype(std::declval().parse_error( std::declval(), std::declval(), std::declval())); template struct is_sax { private: static_assert(is_basic_json::value, "BasicJsonType must be of type basic_json<...>"); using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; using exception_t = typename BasicJsonType::exception; public: static constexpr bool value = is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value && is_detected_exact::value; }; template struct is_sax_static_asserts { private: static_assert(is_basic_json::value, "BasicJsonType must be of type basic_json<...>"); using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; using binary_t = typename BasicJsonType::binary_t; using exception_t = typename BasicJsonType::exception; public: static_assert(is_detected_exact::value, "Missing/invalid function: bool null()"); static_assert(is_detected_exact::value, "Missing/invalid function: bool boolean(bool)"); static_assert(is_detected_exact::value, "Missing/invalid function: bool boolean(bool)"); static_assert( is_detected_exact::value, "Missing/invalid function: bool number_integer(number_integer_t)"); static_assert( is_detected_exact::value, "Missing/invalid function: bool number_unsigned(number_unsigned_t)"); static_assert(is_detected_exact::value, "Missing/invalid function: bool number_float(number_float_t, const string_t&)"); static_assert( is_detected_exact::value, "Missing/invalid function: bool string(string_t&)"); static_assert( is_detected_exact::value, "Missing/invalid function: bool binary(binary_t&)"); static_assert(is_detected_exact::value, "Missing/invalid function: bool start_object(std::size_t)"); static_assert(is_detected_exact::value, "Missing/invalid function: bool key(string_t&)"); static_assert(is_detected_exact::value, "Missing/invalid function: bool end_object()"); static_assert(is_detected_exact::value, "Missing/invalid function: bool start_array(std::size_t)"); static_assert(is_detected_exact::value, "Missing/invalid function: bool end_array()"); static_assert( is_detected_exact::value, "Missing/invalid function: bool parse_error(std::size_t, const " "std::string&, const exception&)"); }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END json-3.11.3/include/nlohmann/detail/meta/std_fs.hpp000066400000000000000000000013761453145653700222140ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include #if JSON_HAS_EXPERIMENTAL_FILESYSTEM #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { namespace std_fs = std::experimental::filesystem; } // namespace detail NLOHMANN_JSON_NAMESPACE_END #elif JSON_HAS_FILESYSTEM #include NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { namespace std_fs = std::filesystem; } // namespace detail NLOHMANN_JSON_NAMESPACE_END #endif json-3.11.3/include/nlohmann/detail/meta/type_traits.hpp000066400000000000000000000714161453145653700233030ustar00rootroot00000000000000// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann // SPDX-License-Identifier: MIT #pragma once #include // numeric_limits #include // false_type, is_constructible, is_integral, is_same, true_type #include // declval #include // tuple #include // char_traits #include #include #include #include #include #include #include NLOHMANN_JSON_NAMESPACE_BEGIN /*! @brief detail namespace with internal helper functions This namespace collects functions that should not be exposed, implementations of some @ref basic_json methods, and meta-programming helpers. @since version 2.1.0 */ namespace detail { ///////////// // helpers // ///////////// // Note to maintainers: // // Every trait in this file expects a non CV-qualified type. // The only exceptions are in the 'aliases for detected' section // (i.e. those of the form: decltype(T::member_function(std::declval()))) // // In this case, T has to be properly CV-qualified to constraint the function arguments // (e.g. to_json(BasicJsonType&, const T&)) template struct is_basic_json : std::false_type {}; NLOHMANN_BASIC_JSON_TPL_DECLARATION struct is_basic_json : std::true_type {}; // used by exceptions create() member functions // true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t // false_type otherwise template struct is_basic_json_context : std::integral_constant < bool, is_basic_json::type>::type>::value || std::is_same::value > {}; ////////////////////// // json_ref helpers // ////////////////////// template class json_ref; template struct is_json_ref : std::false_type {}; template struct is_json_ref> : std::true_type {}; ////////////////////////// // aliases for detected // ////////////////////////// template using mapped_type_t = typename T::mapped_type; template using key_type_t = typename T::key_type; template using value_type_t = typename T::value_type; template using difference_type_t = typename T::difference_type; template using pointer_t = typename T::pointer; template using reference_t = typename T::reference; template using iterator_category_t = typename T::iterator_category; template using to_json_function = decltype(T::to_json(std::declval()...)); template using from_json_function = decltype(T::from_json(std::declval()...)); template using get_template_function = decltype(std::declval().template get()); // trait checking if JSONSerializer::from_json(json const&, udt&) exists template struct has_from_json : std::false_type {}; // trait checking if j.get is valid // use this trait instead of std::is_constructible or std::is_convertible, // both rely on, or make use of implicit conversions, and thus fail when T // has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) template struct is_getable { static constexpr bool value = is_detected::value; }; template struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> { using serializer = typename BasicJsonType::template json_serializer; static constexpr bool value = is_detected_exact::value; }; // This trait checks if JSONSerializer::from_json(json const&) exists // this overload is used for non-default-constructible user-defined-types template struct has_non_default_from_json : std::false_type {}; template struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> { using serializer = typename BasicJsonType::template json_serializer; static constexpr bool value = is_detected_exact::value; }; // This trait checks if BasicJsonType::json_serializer::to_json exists // Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. template struct has_to_json : std::false_type {}; template struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> { using serializer = typename BasicJsonType::template json_serializer; static constexpr bool value = is_detected_exact::value; }; template using detect_key_compare = typename T::key_compare; template struct has_key_compare : std::integral_constant::value> {}; // obtains the actual object key comparator template struct actual_object_comparator { using object_t = typename BasicJsonType::object_t; using object_comparator_t = typename BasicJsonType::default_object_comparator_t; using type = typename std::conditional < has_key_compare::value, typename object_t::key_compare, object_comparator_t>::type; }; template using actual_object_comparator_t = typename actual_object_comparator::type; ///////////////// // char_traits // ///////////////// // Primary template of char_traits calls std char_traits template struct char_traits : std::char_traits {}; // Explicitly define char traits for unsigned char since it is not standard template<> struct char_traits : std::char_traits { using char_type = unsigned char; using int_type = uint64_t; // Redefine to_int_type function static int_type to_int_type(char_type c) noexcept { return static_cast(c); } static char_type to_char_type(int_type i) noexcept { return static_cast(i); } static constexpr int_type eof() noexcept { return static_cast(EOF); } }; // Explicitly define char traits for signed char since it is not standard template<> struct char_traits : std::char_traits { using char_type = signed char; using int_type = uint64_t; // Redefine to_int_type function static int_type to_int_type(char_type c) noexcept { return static_cast(c); } static char_type to_char_type(int_type i) noexcept { return static_cast(i); } static constexpr int_type eof() noexcept { return static_cast(EOF); } }; /////////////////// // is_ functions // /////////////////// // https://en.cppreference.com/w/cpp/types/conjunction template struct conjunction : std::true_type { }; template struct conjunction : B { }; template struct conjunction : std::conditional(B::value), conjunction, B>::type {}; // https://en.cppreference.com/w/cpp/types/negation template struct negation : std::integral_constant < bool, !B::value > { }; // Reimplementation of is_constructible and is_default_constructible, due to them being broken for // std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). // This causes compile errors in e.g. clang 3.5 or gcc 4.9. template struct is_default_constructible : std::is_default_constructible {}; template struct is_default_constructible> : conjunction, is_default_constructible> {}; template struct is_default_constructible> : conjunction, is_default_constructible> {}; template struct is_default_constructible> : conjunction...> {}; template struct is_default_constructible> : conjunction...> {}; template struct is_constructible : std::is_constructible {}; template struct is_constructible> : is_default_constructible> {}; template struct is_constructible> : is_default_constructible> {}; template struct is_constructible> : is_default_constructible> {}; template struct is_constructible> : is_default_constructible> {}; template struct is_iterator_traits : std::false_type {}; template struct is_iterator_traits> { private: using traits = iterator_traits; public: static constexpr auto value = is_detected::value && is_detected::value && is_detected::value && is_detected::value && is_detected::value; }; template struct is_range { private: using t_ref = typename std::add_lvalue_reference::type; using iterator = detected_t; using sentinel = detected_t; // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator // and https://en.cppreference.com/w/cpp/iterator/sentinel_for // but reimplementing these would be too much work, as a lot of other concepts are used underneath static constexpr auto is_iterator_begin = is_iterator_traits>::value; public: static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; }; template using iterator_t = enable_if_t::value, result_of_begin())>>; template using range_value_t = value_type_t>>; // The following implementation of is_complete_type is taken from // https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ // and is written by Xiang Fan who agreed to using it in this library. template struct is_complete_type : std::false_type {}; template struct is_complete_type : std::true_type {}; template struct is_compatible_object_type_impl : std::false_type {}; template struct is_compatible_object_type_impl < BasicJsonType, CompatibleObjectType, enable_if_t < is_detected::value&& is_detected::value >> { using object_t = typename BasicJsonType::object_t; // macOS's is_constructible does not play well with nonesuch... static constexpr bool value = is_constructible::value && is_constructible::value; }; template struct is_compatible_object_type : is_compatible_object_type_impl {}; template struct is_constructible_object_type_impl : std::false_type {}; template struct is_constructible_object_type_impl < BasicJsonType, ConstructibleObjectType, enable_if_t < is_detected::value&& is_detected::value >> { using object_t = typename BasicJsonType::object_t; static constexpr bool value = (is_default_constructible::value && (std::is_move_assignable::value || std::is_copy_assignable::value) && (is_constructible::value && std::is_same < typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type >::value)) || (has_from_json::value || has_non_default_from_json < BasicJsonType, typename ConstructibleObjectType::mapped_type >::value); }; template struct is_constructible_object_type : is_constructible_object_type_impl {}; template struct is_compatible_string_type { static constexpr auto value = is_constructible::value; }; template struct is_constructible_string_type { // launder type through decltype() to fix compilation failure on ICPC #ifdef __INTEL_COMPILER using laundered_type = decltype(std::declval()); #else using laundered_type = ConstructibleStringType; #endif static constexpr auto value = conjunction < is_constructible, is_detected_exact>::value; }; template struct is_compatible_array_type_impl : std::false_type {}; template struct is_compatible_array_type_impl < BasicJsonType, CompatibleArrayType, enable_if_t < is_detected::value&& is_iterator_traits>>::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same>::value >> { static constexpr bool value = is_constructible>::value; }; template struct is_compatible_array_type : is_compatible_array_type_impl {}; template struct is_constructible_array_type_impl : std::false_type {}; template struct is_constructible_array_type_impl < BasicJsonType, ConstructibleArrayType, enable_if_t::value >> : std::true_type {}; template struct is_constructible_array_type_impl < BasicJsonType, ConstructibleArrayType, enable_if_t < !std::is_same::value&& !is_compatible_string_type::value&& is_default_constructible::value&& (std::is_move_assignable::value || std::is_copy_assignable::value)&& is_detected::value&& is_iterator_traits>>::value&& is_detected::value&& // special case for types like std::filesystem::path whose iterator's value_type are themselves // c.f. https://github.com/nlohmann/json/pull/3073 !std::is_same>::value&& is_complete_type < detected_t>::value >> { using value_type = range_value_t; static constexpr bool value = std::is_same::value || has_from_json::value || has_non_default_from_json < BasicJsonType, value_type >::value; }; template struct is_constructible_array_type : is_constructible_array_type_impl {}; template struct is_compatible_integer_type_impl : std::false_type {}; template struct is_compatible_integer_type_impl < RealIntegerType, CompatibleNumberIntegerType, enable_if_t < std::is_integral::value&& std::is_integral::value&& !std::is_same::value >> { // is there an assert somewhere on overflows? using RealLimits = std::numeric_limits; using CompatibleLimits = std::numeric_limits; static constexpr auto value = is_constructible::value && CompatibleLimits::is_integer && RealLimits::is_signed == CompatibleLimits::is_signed; }; template struct is_compatible_integer_type : is_compatible_integer_type_impl {}; template struct is_compatible_type_impl: std::false_type {}; template struct is_compatible_type_impl < BasicJsonType, CompatibleType, enable_if_t::value >> { static constexpr bool value = has_to_json::value; }; template struct is_compatible_type : is_compatible_type_impl {}; template struct is_constructible_tuple : std::false_type {}; template struct is_constructible_tuple> : conjunction...> {}; template struct is_json_iterator_of : std::false_type {}; template struct is_json_iterator_of : std::true_type {}; template struct is_json_iterator_of : std::true_type {}; // checks if a given type T is a template specialization of Primary template