pax_global_header00006660000000000000000000000064137637725620014534gustar00rootroot0000000000000052 comment=a5932084e59cca6b49b8bb56592667a91c080af6 tty-reader-0.9.0/000077500000000000000000000000001376377256200136225ustar00rootroot00000000000000tty-reader-0.9.0/.github/000077500000000000000000000000001376377256200151625ustar00rootroot00000000000000tty-reader-0.9.0/.github/FUNDING.yml000066400000000000000000000000241376377256200167730ustar00rootroot00000000000000github: piotrmurach tty-reader-0.9.0/.github/ISSUE_TEMPLATE.md000066400000000000000000000010761376377256200176730ustar00rootroot00000000000000### Are you in the right place? * For issues or feature requests file a GitHub issue in this repository * For general questions or discussion post in [Gitter](https://gitter.im/piotrmurach/tty) ### Describe the problem A brief description of the issue/feature. ### Steps to reproduce the problem ``` Your code here to reproduce the issue ``` ### Actual behaviour What happened? This could be a description, log output, error raised etc... ### Expected behaviour What did you expect to happen? ### Describe your environment * OS version: * Ruby version: * TTY version: tty-reader-0.9.0/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000006761376377256200207740ustar00rootroot00000000000000### Describe the change What does this Pull Request do? ### Why are we doing this? Any related context as to why is this is a desirable change. ### Benefits How will the library improve? ### Drawbacks Possible drawbacks applying this change. ### Requirements Put an X between brackets on each line if you have done the item: [] Tests written & passing locally? [] Code style checked? [] Rebased with `master` branch? [] Documentaion updated? tty-reader-0.9.0/.github/workflows/000077500000000000000000000000001376377256200172175ustar00rootroot00000000000000tty-reader-0.9.0/.github/workflows/ci.yml000066400000000000000000000023601376377256200203360ustar00rootroot00000000000000--- name: CI on: push: branches: - master paths-ignore: - "bin/**" - "examples/**" - "*.md" pull_request: branches: - master paths-ignore: - "bin/**" - "examples/**" - "*.md" jobs: tests: name: Ruby ${{ matrix.ruby }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest ruby: - 2.1 - 2.2 - 2.3 - 2.4 - 2.5 - 2.6 - ruby-head - jruby-9.2.13.0 - jruby-head - truffleruby-head include: - ruby: 2.7 os: ubuntu-latest coverage: true env: COVERAGE: ${{ matrix.coverage }} COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} continue-on-error: ${{ endsWith(matrix.ruby, 'head') }} steps: - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - name: Install bundler run: gem install bundler -v '< 2.0' - name: Install dependencies run: bundle install --jobs 4 --retry 3 - name: Run tests run: bundle exec rake ci tty-reader-0.9.0/.gitignore000066400000000000000000000001771376377256200156170ustar00rootroot00000000000000/.bundle/ /.yardoc /Gemfile.lock /_yardoc/ /coverage/ /doc/ /pkg/ /spec/reports/ /tmp/ # rspec failure tracking .rspec_status tty-reader-0.9.0/.rspec000066400000000000000000000000511376377256200147330ustar00rootroot00000000000000--color --require spec_helper --warnings tty-reader-0.9.0/.rubocop.yml000066400000000000000000000013421376377256200160740ustar00rootroot00000000000000AllCops: NewCops: enable Layout/LineLength: Max: 80 Lint/Debugger: Enabled: false Lint/AssignmentInCondition: Enabled: false Metrics/AbcSize: Max: 30 Metrics/BlockLength: CountComments: true Max: 25 IgnoredMethods: [] Exclude: - "spec/**/*" Metrics/ClassLength: Max: 1500 Metrics/CyclomaticComplexity: Enabled: false Metrics/MethodLength: Max: 20 Naming/BinaryOperatorParameterName: Enabled: false Style/AsciiComments: Enabled: false Style/LambdaCall: EnforcedStyle: braces Style/StringLiterals: EnforcedStyle: double_quotes Style/TrivialAccessors: Enabled: false # { ... } for multi-line blocks is okay Style/BlockDelimiters: Enabled: false Style/CommentedKeyword: Enabled: false tty-reader-0.9.0/CHANGELOG.md000066400000000000000000000071151376377256200154370ustar00rootroot00000000000000# Change log ## [v0.9.0] - 2020-12-08 ### Added * Add buffer to save input when traversing history and restore it back similar to shell ### Changed * Pressing :down no longer erases the #read_line input if history is disabled by Charles Pence (@pencechp) * Change Reader initializer to use keyword arguments in place of options hash * Change history to only exclude empty lines without any space or invisible characters * Change all input reading methods to use explicit keyword arguments ### Fix * Fix #read_multiline :value parameter to insert content only once in the first line ## [v0.8.0] - 2020-06-28 ### Changed * Change gemspec to load version directly and remove test artefacts * Change to update tty-screen dependency * Change to remove bundler dev dependency and relax wisper version ## [v0.7.0] - 2019-11-24 ### Added * Add support for a multi-line prompt by Katelyn Schiesser(@slowbro) * Add metadata to gemspec ## [v0.6.0] - 2019-05-27 ### Added * Add :value option to #read_line to allow pre-populating of line content ### Changed * Change to make InputInterrupt to derive from Interrupt by Samuel Williams(@ioquatix) * Change #read_line to trigger before line is printed to allow for line changes in key callbacks * Change Console#get_char :nonblock option to wait for readable input without blocking * Change to remove bundler version constraints * Change to update tty-screen dependency * Change to update tty-cursor dependency ## [v0.5.0] - 2018-11-24 ### Added * Add KeyEvent#line to expose current line in key event callbacks ### Fixed * Fix Esc key by differentiating between escaped keys and actual escape input * Fix line editing to correctly insert next to last character ## [v0.4.0] - 2018-08-05 ### Changed * Change to update tty-screen & tty-cursor dependencies ## [v0.3.0] - 2018-04-29 ### Added * Add Reader#unsubscribe to allow stop listening to local key events ### Changed * Change Reader#subscribe to allow to listening for key events only inside a block * Change to group xterm keys for navigation ## [v0.2.0] - 2018-01-01 ### Added * Add home & end keys support in #read_line * Add tty-screen & tty-cursor dependencies ### Changed * Change Codes to Keys and inverse keys lookup to allow for different system keys matching same name. * Change Reader#initialize to only accept options and make input and output options as well. * Change #read_line to print newline character in noecho mode * Change Reader::Line to include prompt prefix * Change Reader#initialize to only accept options in place of positional arguments * Change Reader to expose history options ### Fixed * Fix issues with recognising :home & :end keys on different terminals * Fix #read_line to work with strings spanning multiple screen widths and allow copy-pasting a long string without repeating prompt * Fix backspace keystroke in cooked mode * Fix history to only save lines in echo mode ## [v0.1.0] - 2017-08-30 * Initial implementation and release [v0.9.0]: https://github.com/piotrmurach/tty-reader/compare/v0.8.0...v0.9.0 [v0.8.0]: https://github.com/piotrmurach/tty-reader/compare/v0.7.0...v0.8.0 [v0.7.0]: https://github.com/piotrmurach/tty-reader/compare/v0.6.0...v0.7.0 [v0.6.0]: https://github.com/piotrmurach/tty-reader/compare/v0.5.0...v0.6.0 [v0.5.0]: https://github.com/piotrmurach/tty-reader/compare/v0.4.0...v0.5.0 [v0.4.0]: https://github.com/piotrmurach/tty-reader/compare/v0.3.0...v0.4.0 [v0.3.0]: https://github.com/piotrmurach/tty-reader/compare/v0.2.0...v0.3.0 [v0.2.0]: https://github.com/piotrmurach/tty-reader/compare/v0.1.0...v0.2.0 [v0.1.0]: https://github.com/piotrmurach/tty-reader/compare/v0.1.0 tty-reader-0.9.0/CODE_OF_CONDUCT.md000066400000000000000000000062351376377256200164270ustar00rootroot00000000000000# 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 piotr@piotrmurach.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and 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/ tty-reader-0.9.0/Gemfile000066400000000000000000000003541376377256200151170ustar00rootroot00000000000000source "https://rubygems.org" gemspec group :test do gem "benchmark-ips", "~> 2.7.2" gem "simplecov", "~> 0.16.1" gem "coveralls", "~> 0.8.22" end group :metrics do gem "yard", "~> 0.9" gem "yardstick", "~> 0.9.9" end tty-reader-0.9.0/LICENSE.txt000066400000000000000000000021211376377256200154410ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2017 Piotr Murach (https://piotrmurach.com) 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. tty-reader-0.9.0/README.md000066400000000000000000000273161376377256200151120ustar00rootroot00000000000000
TTY Toolkit logo
# TTY::Reader [![Gitter](https://badges.gitter.im/Join%20Chat.svg)][gitter] [![Gem Version](https://badge.fury.io/rb/tty-reader.svg)][gem] [![Actions CI](https://github.com/piotrmurach/tty-reader/workflows/CI/badge.svg?branch=master)][gh_actions_ci] [![Build status](https://ci.appveyor.com/api/projects/status/cj4owy2vlty2q1ko?svg=true)][appveyor] [![Maintainability](https://api.codeclimate.com/v1/badges/2f68d5e8ecc271bda820/maintainability)][codeclimate] [![Coverage Status](https://coveralls.io/repos/github/piotrmurach/tty-reader/badge.svg)][coverage] [![Inline docs](http://inch-ci.org/github/piotrmurach/tty-reader.svg?branch=master)][inchpages] [gitter]: https://gitter.im/piotrmurach/tty [gem]: http://badge.fury.io/rb/tty-reader [gh_actions_ci]: https://github.com/piotrmurach/tty-reader/actions?query=workflow%3ACI [travis]: http://travis-ci.org/piotrmurach/tty-reader [appveyor]: https://ci.appveyor.com/project/piotrmurach/tty-reader [codeclimate]: https://codeclimate.com/github/piotrmurach/tty-reader/maintainability [coverage]: https://coveralls.io/github/piotrmurach/tty-reader [inchpages]: http://inch-ci.org/github/piotrmurach/tty-reader > A pure Ruby library that provides a set of methods for processing keyboard input in character, line and multiline modes. It maintains history of entered input with an ability to recall and re-edit those inputs. It lets you register to listen for keystroke events and trigger custom key events yourself. **TTY::Reader** provides independent reader component for [TTY](https://github.com/piotrmurach/tty) toolkit. ![](assets/shell.gif) ## Compatibility The `tty-reader` is not compatible with the GNU Readline and doesn't aim to be. It originated from [tty-prompt](https://github.com/piotrmurach/tty-prompt) project to provide flexibility, independence from underlying operating system and Ruby like API interface for creating different prompts. `TTY::Reader` forges its own path to provide features necessary for building line editing in terminal applications! ## Features * Pure Ruby * Reading [single keypress](#21-read_keypress) * [Line editing](#22-read_line) * Reading [multiline input](#23-read_multiline) * Ability to [register](#24-on) for keystroke events * Track input [history](#32-track_history) * No global state * Works on Linux, OS X, FreeBSD and Windows * Supports Ruby versions `>= 2.0.0` & JRuby ## Installation Add this line to your application's Gemfile: ```ruby gem "tty-reader" ``` And then execute: $ bundle Or install it yourself as: $ gem install tty-reader * [1. Usage](#1-usage) * [2. API](#2-api) * [2.1 read_keypress](#21-read_keypress) * [2.2 read_line](#22-read_line) * [2.3 read_multiline](#23-read_multiline) * [2.4 on](#24-on) * [2.5 subscribe](#25-subscribe) * [2.6 unsubscribe](#26-unsubscribe) * [2.7 trigger](#27-trigger) * [2.8 supported events](#28-supported-events) * [3. Configuration](#3-configuration) * [3.1 :interrupt](#31-interrupt) * [3.2 :track_history](#32-track_history) * [3.3 :history_cycle](#33-history_cycle) * [3.4 :history_duplicates](#34-history_duplicates) * [3.5 :history_exclude](#35-history_exclude) ## Usage In just a few lines you can recreate IRB prompt. Initialize the reader: ```ruby reader = TTY::Reader.new ``` Then register to listen for key events, in this case listen for `Ctrl-X` or `Esc` keys to exit: ```ruby reader.on(:keyctrl_x, :keyescape) do puts "Exiting..." exit end ``` Finally, keep asking user for line input with a `=>` as a prompt: ```ruby loop do reader.read_line("=> ") end ``` ## API ### 2.1 read_keypress To read a single key stroke from the user use `read_char` or `read_keypress`: ```ruby reader.read_char reader.read_keypress reader.read_keypress(nonblock: true) ``` ### 2.2 read_line By default `read_line` works in `raw mode` which means it behaves like a line editor that allows you to edit each character, respond to `control characters` such as `Control-A` to `Control-B` or navigate through history. For example, to read a single line terminated by a new line character use `read_line` like so: ```ruby reader.read_line ``` If you wish for the keystrokes to be interpreted by the terminal instead, use so called `cooked` mode by providing the `:raw` option set to `false`: ```ruby reader.read_line(raw: false) ``` Any non-interpreted characters received are written back to terminal, however you can stop this by using `:echo` option set to `false`: ```ruby reader.read_line(echo: false) ``` You can also provide a line prefix displayed before input by passing it as a first argument: ```ruby reader.read_line(">> ") # >> ``` To pre-populate the line content for editing use `:value` option: ```ruby reader.read_line("> ", value: "edit me") # > edit me ``` ### 2.3 read_multiline By default `read_multiline` works in `raw mode` which means it behaves like a multiline editor that allows you to edit each character, respond to `control characters` such as `Control-A` to `Control-B` or navigate through history. For example, to read more than one line terminated by `Ctrl+d` or `Ctrl+z` use `read_multiline`: ```ruby reader.read_multiline # => [ "line1", "line2", ... ] ``` If you wish for the keystrokes to be interpreted by the terminal instead, use so called `cooked` mode by providing the `:raw` option set to `false`: ```ruby reader.read_line(raw: false) ``` You can also provide a line prefix displayed before input by passing a string as a first argument: ```ruby reader.read_multiline(">> ") ``` ### 2.4 on You can register to listen on a key pressed events. This can be done by calling `on` with a event name(s): ```ruby reader.on(:keypress) { |event| .... } ``` or listen for multiple events: ```ruby reader.on(:keyctrl_x, :keyescape) { |event| ... } ``` The `KeyEvent` object is yielded to a block whenever a particular key event fires. The event responds to: * `key` - key pressed * `value` - value of the key pressed * `line` - the content of the currently edited line, empty otherwise The `value` returns the actual key pressed and the `line` the content for the currently edited line or is empty. The `key` is an object that responds to following messages: * `name` - the name of the event such as :up, :down, letter or digit * `meta` - true if event is non-standard key associated * `shift` - true if shift has been pressed with the key * `ctrl` - true if ctrl has been pressed with the key For example, to add listen to vim like navigation keys, one would do the following: ```ruby reader.on(:keypress) do |event| if event.value == "j" ... end if event.value == "k" ... end end ``` You can subscribe to more than one event: ```ruby reader.on(:keypress) { |event| ... } .on(:keydown) { |event| ... } ``` ### 2.5 subscribe You can subscribe any object to listen for the emitted [key events](#27-supported-events) using the `subscribe` message. The listener would need to implement a method for every event it wishes to receive. For example, if a `MyListener` class wishes to only listen for `keypress` event: ```ruby class MyListener def keypress(event) ... end end ``` Then subscribing is done: ```ruby reader.subscribe(MyListener.new) ``` Alternatively, `subscribe` allows you to listen to events only for the duration of block execution like so: ```ruby reader.subscribe(MyListener) do ... end ``` ### 2.6 unsubscribe You can unsubscribe any object from listening to the key events using the `unsubscribe` message: ```ruby reader.unsubscribe(my_listener) ``` ### 2.7 trigger The signature for triggering key events is `trigger(event, args...)`. The first argument is a [key event name](#27-supported-events) followed by any number of actual values related to the event being triggered. For example, to trigger `:keydown` event do: ```ruby reader.trigger(:keydown) ``` To add vim bindings for line editing you could discern between alphanumeric inputs like so: ```ruby reader.on(:keypress) do |event| if event.value == "j" reader.trigger(:keydown) end if evevnt.value == "k" reader.trigger(:keyup) end end ``` ### 2.8 supported events The available key events for character input are: * `:keypress` * `:keyenter` * `:keyreturn` * `:keytab` * `:keybackspace` * `:keyspace` * `:keyescape` * `:keydelete` * `:keyalpha` * `:keynum` The navigation related key events are: * `:keydown` * `:keyup` * `:keyleft` * `:keyright` * `:keyhome` * `:keyend` * `:keyclear` The specific `ctrl` key events: * `:keyctrl_a` * `:keyctrl_b` * ... * `:keyctrl_z` The key events for functional keys `f*` are: * `:keyf1` * `:keyf2` * ... * `:keyf24` ## 3. Configuration ### 3.1. `:interrupt` By default `InputInterrupt` error will be raised when the user hits the interrupt key(Control-C). However, you can customise this behaviour by passing the `:interrupt` option. The available options are: * `:signal` - sends interrupt signal * `:exit` - exists with status code * `:noop` - skips handler * custom proc For example, to send interrupt signal do: ```ruby reader = TTY::Reader.new(interrupt: :signal) ``` ### 3.2. `:track_history` The `read_line` and `read_multiline` provide history buffer that tracks all the lines entered during `TTY::Reader.new` interactions. The history buffer provides previous or next lines when user presses up/down arrows respectively. However, if you wish to disable this behaviour use `:track_history` option like so: ```ruby reader = TTY::Reader.new(track_history: false) ``` ### 3.3. `:history_cycle` This option determines whether the history buffer allows for infinite navigation. By default it is set to `false`. You can change this: ```ruby reader = TTY::Reader.new(history_cycle: true) ``` ### 3.4. `:history_duplicates` This option controls whether duplicate lines are stored in history. By default set to `true`. You can change this: ```ruby reader = TTY::Reader.new(history_duplicates: false) ``` ### 3.5. `:history_exclude` This option allows you to exclude lines from being stored in history. It accepts a `Proc` with a line as a first argument. By default it is set to exclude empty lines. To change this: ```ruby reader = TTY::Reader.new(history_exclude: ->(line) { ... }) ``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/piotrmurach/tty-reader. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. 1. Clone the project on GitHub 2. Create a feature branch 3. Submit a Pull Request Important notes: - **All new features must include test coverage.** At a bare minimum, unit tests are required. It is preferred if you include acceptance tests as well. - **The tests must be be idempotent.** Any test run should produce the same result when run over and over. - **All new features must include source code & readme documentation** Any new method you add should include yarddoc style documentation with clearly specified parameter and return types. ## License The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). ## Code of Conduct Everyone interacting in the TTY::Reader project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/piotrmurach/tty-reader/blob/master/CODE_OF_CONDUCT.md). ## Copyright Copyright (c) 2017 Piotr Murach. See LICENSE for further details. tty-reader-0.9.0/Rakefile000066400000000000000000000002421376377256200152650ustar00rootroot00000000000000# encoding: utf-8 require "bundler/gem_tasks" FileList['tasks/**/*.rake'].each(&method(:import)) desc 'Run all specs' task ci: %w[ spec ] task default: :spec tty-reader-0.9.0/appveyor.yml000066400000000000000000000016501376377256200162140ustar00rootroot00000000000000--- skip_commits: files: - "bin/**" - "benchmarks/**" - "examples/**" - "*.md" install: - set BUNDLE_SSL_VERIFY_MODE=0 - set PATH=C:\Ruby%ruby_version%\bin;%PATH% - ruby --version - gem --version - bundle install build: off test_script: - bundle exec rake ci environment: matrix: - ruby_version: "200" - ruby_version: "200-x64" - ruby_version: "21" - ruby_version: "21-x64" - ruby_version: "22" - ruby_version: "22-x64" - ruby_version: "23" - ruby_version: "23-x64" - ruby_version: "24" - ruby_version: "24-x64" - ruby_version: "25" - ruby_version: "25-x64" - ruby_version: "26" - ruby_version: "26-x64" matrix: allow_failures: - ruby_version: "200" - ruby_version: "200-x64" - ruby_version: "21" - ruby_version: "21-x64" - ruby_version: "22" - ruby_version: "22-x64" - ruby_version: "23" - ruby_version: "23-x64" tty-reader-0.9.0/assets/000077500000000000000000000000001376377256200151245ustar00rootroot00000000000000tty-reader-0.9.0/assets/shell.gif000066400000000000000000015753101376377256200167360ustar00rootroot00000000000000GIF89a1    "    $      "",<"4H$$#,$*0%?W**)(*>V+,6+9J,,?M.BU0f`Zfedfhlfmwh\ShhiiWDiXPiilinujWIjjjmjkogdor|p\Hp\OpnkpprqZKrYErcTrwys{x\Hzrnzz}}jX}lb}~{{xn}|yuczǹǿ÷ǺǼǿҽȼ! NETSCAPE2.0!,;H *TÇ#JHŋ3jȱǏ CIɓ(C\Ip˄)cʜI͛8sϗ/y JѣH KPJJULW:zׯ`Ê֠cӪ]˶-ϖ'hАәt->0`@C GC a}1/GnC@\:점5̔~ ;^x11ݼأKt끳Znw#: D Wx0~; Ȁ X N #  vg5Š% %֜ihCe7{]gku >DN;p/sÑ'c0)d ˜Î u `# BKP^)☃=Ѐpw@5v. r0'_Y&Wv7Z\ޅ7B5@ h!`I;ܜJ'f %Í'|b pC+PN+]pP & $S$w/1 4)`.Q$"G#\bNAJ@!x9d !0Qd٫hvlk"TϚ-Y#@7C˴RsxqN!"f- h-]@SL p9fVs@ '-B {//0 CA!å.~DSk! $l DCIR$WzNЊ'ϺZW, L*UYCXr:7P2p8i |i3`Ä*|SLLȔ)hj;T@!`` 0$,0Dz:w RX}C@0#0cRgd`,N |ps7S"aВv" [|" Ad 6Pt?aAı :P0P/! Q  .PځfP9va 9. dGD qh;j7, mP(E3 !l`0F`D`-Z o$ëX!V֐rZjT  @>vi4z(YvqqicZAjAfY7C fuR$v @x3 $zv\P3Qȟ$#cE+pq E.a^* q0 n,l u` Eg5S 8I05`D.ъfgF2ĺEl Ň3뵘/ Nbs5_B8G'hMI"h7BrB8)P5>L`c0 leҊ`4p>pʬ]?<7k+خj 6)jkX@DZСl U[|Cv6`\<& ϴ.#(8 U(W8.ъT՞%@!  Ⱥ~D<)Bwzx Gy<yGN|: %@{R6Ez#` Y@!@ 0 Ts Pa }F3K zW'h,`QcrgGPR QLT|Uw'@pYS×*Dؗ!;# &Dhu`޷"qw wP񆈰5 v Gn &1 8Z2t1PspkXsA=i s Y (I {2bI 0K4k`?H N4p+ ,6 QMPE1#6l21}:R5u!#b3 1Bo;c40~:9"dZt!HTbw=T3 R\`F`DeB.p7 &rjP*I3Je`1a+ME@[27267|=#*exc"3(q&q!wJnJVn  +)'( )XI^AnUF37q2@hcr4T#o"!#/m2V#QI2+1eI|`9!B^y5 scJXdlsD1b+"BB#)t!#2T)B #6 -@L4 J^lbaY -?\Fi! /Yz* 3q23Wn'on0떟>!d1q"ɗ܉! 1qjXsh8@jJҖr`'ɠޙ-* .FjmbA1}zMzֱ:qٙk aAd-@Q)a]j5Q\hg\2"#g98z̹_yH1x7JګJJdabJ9#In) br @c8n5+wa\apba^`WX8i^ Qk"_ I" kq!z @$  Bv !rYU:Q` 0n"pH 0&)u Y3!4 R %P@` &K40M`- 2$G1"p f+°O碅0p 0){Z) ) Jdw @@FZnc@Pd[J] q Vp#Y.ze|sOZ@c 4 f &Vp OfZ2bA!qb W AKi4ķXC_:`+ 򱶈6>"s  2Ts: ~'`gU P ߄ :G=)Q%*i@ ;^/NegP:%*ct#PxoN -4 11p\\ƥ XS5gI}1T V~:@`pL` -'1p_>Gvճ D29Pz`8B @Tb7~ +/ Qf= }x!^ T!$ @!=6$ "dNP#~ ܰ a2p p kԫ *KP ֲe T*`8&xwIR1S n 0T 0G% Mw @P u`G㵰H3^ڒ`U/Kp DNU5X ٦a  @ )p@ A#p! ]ty : <@c 5 )%>T0 i |ɟAh[;.;pQD-^ĘQF=~8ᄣ{e0 "`aB#~- h$ ÊJ`@ $@T4'Wp>V`"B&HC4Tඬ\s sN5ONJ L`2n: 0ψKqbB4  OH•Yѡ CЁVg,8!_8@EZE"4HӶ`Ačs&ɟGШ` * J0@$@AiwL R(ɡV\ U$A?@ c(v1'(ʡ۸ HE>@OD .p 'BR $NbV-پmVX'ȉ=Qe#(aȆF+4Ȣ$1ǓA()d5&R0"_ڹVHK:ȢG3P̱$ .h;i%$GJPs͇ \ЁSqq.1/[(&/\?Oء,<0[m[A!LNlH|9g`vy2iw!BJXar sys a|q&8P&RJ \hVmT D4=.S&`va'k"=3zyם\dSxۙ'6Xp2H\qg0|!E-D:s'lD:b]tqx+ )ya%v1o?=tѷ !uW# (j@t0[0# `$ > 8M2T4'2ʃ7(s.;x@B"."#㫝;) J pnc`3k;.! 2"g8C.3 P p@/u1!M}*$MF7CІ~:o*| :p;%bYWDyN> H @ { HCv0 L%Hv7Fl.KbJG= \3D#(8dC@`Om@xV.z뎭Be(e!zlٚtR|tW< HR5t]#jlL8Lb&krcW󰩘CfIARf6y0Rc3\ ~Lwӡӝ3KLz~6̌YTf,)=mԠ eP!xfPeN3M2%gg.9a(Be:Sngb`1+Ja;aGJ>s/*LU޴WjV)2Vjk Pt<Ψah⃀Qֵ6ok\ۧU֕"jLǑr'\V¶urElbjW6vD?o|0YCPvֳmV/1%gN+Rٓ K5C;[ֶ;OkVC/յ2Y!<8_+Nֹυnt52=bp2V 7:"ȕrcY׽-u1gdwAp bzz/ާFpgj&i s,#S`1 +q6 ,s6H<͉x|5-{Cp6xl7 wx qWx5qwyE>r'GyUr/ye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>vgG{վvo{>ww{w|?xG|x[D|%?yW|5yG}E?zҗ)GPzַ}-x}u{/%~?|G~|7χ~?}W!,'H (\ȰÇ#JHŋ3jȱǏ CI$ɂ(Lh˗0cʜI͛2S\ϟ@ Jt΂,ʴӧPJ yTBLQׯ` JYU'\Eۉb~}K]<ZV*;`^1&vA^ J_(pϠCS A_pñ;DqdG IفԘ5; KD>o_IW:|3 i3T&FEpD c|a = pf K ,DC& &|`E89Pr F)\t45``A t kBҐ;I.B('y,C} ;P B4`B'} P: dp ;0'`Q$,8pBB8P ;QvՐZYUB 9`B :_ u;ԔrB8I'lЭ',4 P 8_ ̖$Ă hE`޵q8PB t#C'C"L&RF*DV@dpqOCH;r U\O<J e`BD@`% 7 \@ z 8(Dw`V U 1-$F@Օ!Kp6$*gGPMp | 0sbE b!(Cю=8VTH,Oʚe>H&EfJ9A EyFl>njB>pf p+BnrQ|X #'Z8Yb2>PB9 5P Q`E | H4y҅O>ۦ62Avď 6OV5̅C;f u8T D@Áde̼ONp_G=j@C.#SP<#;]p"b/@ wX qTv]$C̅Z'a 0렁{@U`.~ a ) &2Y!$P2 |CcnܒUMa;F)hA"p'hHb%D144lsn>_PU!=AhCm>k 2|#ZAh+|SmL' x@Ϩ_eM`Mmdl^9 s`;zv@N;("* -8-h gBN,b$ ̧A ~.,pi-?a" g =g7HSy>V'TG #' +SsAUu 4 :Tt1T$ }'@5P"ЄjZ4 _GP.T8=r.[3Rѕxvx*aR9- T#ўѕz.);s!vқ5ٟJGjYZ9`aU1d1n2kI0c9ZH!^a1(1!0 dV),"!>ɖ3@ C)uFhI7*rp]=Mv b:CIx`1)mJ#& hIƚ Pz\1UuSTj2BL F` uq + Eh%9mJoQYMTP2ѤS~Z}3ڛJ5%& B|qy*,Tj? :;!Bf_B q&U%zM!1rCm GK$1MBђm1!|!Z!X#6 3YR $ߘiiTZQ"+ ֩:BKxb([lI)@( P bCp+j %T3&mpı|%QVkcȲiSl6+A AȊA D`Gʉ}(MeyPI+1Std*PRɰ #G]YGR3" 3+LLuO«Ih@ ^X2g*qI)xL@J6根!&0 5p3 @ Sm|5L2sW'X P @ :LL"0-w!3 a- 0捦!8r@  WqR@_  h PR;t%20,Մ e6 4ItK Ԡ m2Ӆ5P=  p >]7¡ F  Q`0 ΰB5R۬ sgs+` b p;d3 2Plݨ424B@pv %` E@ż1%piB 2S"`1'A z  WB! >v|coS W*0UvAp(,y>>e|%EmV81<` P`J[$񓚗F .PA ϼ ǣ0B2 s)* lƾs$ B8F#M.2D%a1QdP'5\ M#!i4;6 .@%ưPWף1 .5MaLA 0Zғ# cP Au Sz`$4˽%a1NSډ`BTk"pN,ݐ$5g%Lf3p s"űA9-;Z@0.[R @.w$Ț-`1POKp8TPb@J' T6; d! 003&jy WPPZxnɀTِ iu 0Y$ .4=f',# 0y`hiaՓ"hCV 'pհ SJŗL0C7 %^G: C 5Rf7PƘ45Ð# 6}8 qdNuS =$+ONfO.Q! U>1~!p͞x 0KG`'WP0b? . L3ʤ &)N;I {PO 'Pq}>"}c0~K!@ )! YN&2)Ơ>0P%R , 0fTiI1c4, p"I/V r, , xth8p+ M2 !#ڛq0 pLp@!AHHPp@+8'NA I V,8 4!(a@-:,A 8XDEC,A(sbu@֒&w>@h8PevEKPmRQ19N&^drA& O,4FŜYfΝ=ZhҥMo))RkXuA JSъG=<-:  Yywpr L#&51;]#VhONB%I6u!(Ȧ@8a~p V1gvQ> iK+0,`120@.TǙ3KLIa/LX8'h]QG3:L3D3M55@.ȯ `>3p>@r` F 1`kBFXρH"H 2ԺF 0  2.n;@:`0̯ AG+8# @?8V\' H= 0H0/3  ,^IFԒf❶vBF֝BMpݔP'f)8'8`N8\ DD6I{%B &6`R ?&,0P`a PѪʘIP0 ?ń)Š䐁g"_>` $8vM#]F_B%զ|A%t =nE6Alzpuj =D+@& g 'P4, { r"([s 2s M )t`/@$ YDàhY{#LD^;0B])W hK)0A#.HǽRxGZ9Wu=g8(dPp7TЅ!I(`#1(1 D.(3bB-X|qz `1PM ,@GQp@ $,Ap?" 3AE "!o&b/̄0>DHƍ8p@r4J,8`]bڪSV H<*(*` 00."cЀ8}ÖN`L '8A8|Pa(#dh҃ X?ֱ<`i,Np:| u 4 q ;PX r pG;T@±bŇ J' rƹ.0@p VH42CW,X86B 9$YIV ؇" "]pS#2aA"JHal=O`yl0B\w;Q:p>QpЀp8 /<1E2 Th>`h1/~sN@G(lp[PPX2Q#&x?x ,=9ر bBx5ai$#@`ze@zA~ i@@Y"F)r-qP՘AUЀ F&~x>xOHhoN%GHjnle|,4@5~{ xp' c5&IeHPy8<8;`L ,Rgv;Svp?7yP y 0 N ֐  `.Js 40g>0,aPn ;: P֣ c"_gdXb"IEԓ ` $. ]f ` -nc` 1Bp 0* /` &B"AG ~AJp>*@v]t`p !0! Ԑ 0( @nvsˠ. 6=8\@KjJ7؋'ӰPԸ!.  7/ G:֍!1!JoQ1p 0U20Nr'Y/exi$V9Q^ _0 )P0{ @/p #wk Ј%"d1aaN ' U|0&p6V FEpޑ)L"ZX-0 pG6 60 4. ؗE1u@, PodC`GB% q%H0R_S HS^6 N41Y7 /@w}lЛ  YiX( &0)`N@:v""  4@f)-$ )5*@w +!"a)LG07 aJ#p 0"2#VDEK,|w SMP{#dJ=P3a$SJ>xrX42vRrJc= "Ҹ1&P@ LaO" ;3+# Ȕc@ 1.12!9a+13 l˫x&7&Aa"j)]qp-9#bb!K"ȴ\)&bۺ(8bAD&bAX{' RU(!w `kի ;)d!WJ4 %Grs6:5 a ! c!9Gq0p& aY[4մȸ+ȚWAa 28ƅ{ G p 'ɑ*[ 1"O )$90HP J @ 02 !3¡& %* ?S 0 810Y K ,7\r%9Q8UT18M0C *.h&|ˉ|.L"_y' YP )P,|0@2ݑ\,0 i~+<  P{0˫,c}%`*0  @/a@ 4(bզqg)P0സbRU8'A"h0EqXX Pw`ee lpp"GB~|.k h*Jpb@$<" s4Q 82 @ +pNyt;W@ZbP6ţ JMc@<Ʋ w:IdP,!e͋B1dQR)Yr;X0A` %x+S%jR(0^`> (xV -a @=I'JCܰ h@ 7ʺ{PPל2f IZKPrRdGNRmTE )@YED]9# SpfbCp7f !}4AKS5e3P"|nX@k  AB(z> 8hG'ƀ .JLhSN=}TPEECpq@%DXV+Ms f~\H1`Sm]{FAZ L A^ХQ6&@ ACa</^z@֓X*~}g*^ٴ?NLN,XhM=n+ŴUm`?sYߗc@?:'˒b- ZtOc.կIb#aOѶ[{ K @@:a^kM'N qBb7=˦Mgr#:(@]mAwڴFwýhlbf2L.Mw:(jp3n0O>s]w6}GQqQwx'PM.x(}9,>vbo؝| Lw YؤwV8}wEq% Uρ\Ž~?DX10p" {Jctl؃d&fI]^ps( +T@jpgpniSh0p=@c"4#؀ 10(" ˘!DA$0Cj7bat>8/=>TMZy`uDwȀ X]Z:C89KLL0LNNt@cuKBLtW|y2 ^ =X`? H ٮ8atg4ɩ'‰I+Z)ܹ, :os9dɋÍ7ppxq:@[R%K yȀL7i ;hs*9GnȊH"4;㳞6Ȓ4ȓTɕdɖtɗɘəɚɛɜɝɞɟʠʡ$ʢ4ʣDʤTʥdʦtʧʨʩʪʫʬLwʮ VʰD˲C4˴T˵d˶t˷˸˹˺˻˼˽˾˿$4DTdtDŽȔɤʴ$4DTdtׄؔ٤ڴΟ$4DTdtԽ$4DTd4OsTO_O4P~dJccТ< %5О!,H Ç#JHŋ bȑ;wuIɓ(1<@`s:IM0qz Jh`PJm^*1B`N*M(µp㶬S; ܊_eO PdaP1 4UT rP„Ϗi>P+/Zn!/X *6[AҸ#&*0_t bms AlceVN5b`A]}wvb 4XP&BYY_M Bl@ D`vh5UrBY$pmn\AɊ~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PJԢHMRԦ:ꤥTZ$rS*AUm4 !,!,!,!,!,H@*ThÇ#JHbÅ -:1Ə CIɓ(Sʗ0Av,ْc̛8sɳȚ } M9$ЅC*]ʴϣJX'ԨSjʵU]VlسhӪuӱ!˺KP/A:Zdм6/ .L`-fie|+yrdA/6˘f⽧ B.YǢ#>۸MN=!  -@&!p ( v:#0`_=pO!]>x7)W{[8n|MPBo8 G.w8VB Ԋ*,yE5zTanH&Yc|5(q '"t:>'ạ̊f'!@rɅ~F <pf(>` 8C npA_=A:9t%Np岏Pb0x6d9a@rA> y]IVH(x7z \q$E@l jPÉ@m d9 n!T -A@Ӎn (ׯ :Ms rZ\1T3*?#*H@4!H.J!")0<Ɣ8<ٱ.b :RL s@+V Ot@ :hC,V\ gg>)9`~mp ^1cxB> dO=TTO 6*o `X>D   T4&+2P@`FF(R7%XsAp^V$ ym  o@:V$ jhzI 0`A07xp$ 齒mqK塐 x"nqli ASlfh@@-[8 @? S9,iD:4ADM XG1xAi^t3:~_ E r!G[Hh j}A z FPC/<@@Ş964~py0 `@`f]QqSw*Ԣ=E0 @.N~;  G4Њf! (*ۅ@UcLPhU*=isxG4a :r*pn`@>H1cH j݃ @`#yHq 0pj? 0(2JxvTVmS-Ap( c*"pd y[^)JSmdu@y @)hEېBo] \~x)@威DC 1X 4 C'gKx`#rOCQ {È"] h -NY61A- G~35a4 Ԑ S6}7S)Xwzg:4SBvjty ! /03/cq 8P ! S,~QW!9Y"UT1@'4;`CsBP 5@ P @`bPV0_ p؀9[^^ `/e~mwrHQK ] 0P,6 2 '?dp @ Ȥ^PB$h-`0X.,Gw/`58 nQG!؋8! `mn+b1 0p"/ %/v 7Cx Āp@T@c}@nPPdr#5Vd`je@e(C5==q&~I)P6@ %#ZDZrT-%K_w+V~#%pHMBv9X+"(8$&A4`)zf;$?€pUy3 (VM,Il ͕q@Av0lq+B?pY, X 3TZ7v7^`V"*X46^vj_g p6,#6j&'F4! 1oPDZD$Tiiq"|X1-4VfB1/(&(u' !pk ? `:yu`)p*6e9E#aC`` i$@$kW#hA!6!, ,+eCa1a)6ґ*5 pq,#9V*'z77r32-R7N'Y!787RޑI +SB+#z0c%pF/"{2WtH8 wA,ϲ9=rH&6vE@1UzDz11XXTG.c{A[Q6x"R)O9X$~m+ <)!  Sq(Q%9AV-z1r(sER<>mYʺ# f 4rm' [`@n^8hk,OX~aC " L[ \` yizX +`ʾy{r9(M:sq5읥i2@P;6&E3(qK+\6F7=;6-ך] su$j`' Π5 `H 2!~ۤd`eJAQAdyRg1K a*vp^\e@ @6p 0z \tr 'c2 piĄ i YW V0Ȝcpb[w0MTei?- -ˠË|  @a ` @T3S3P0 :%'+`0tP0B Tߠ mG\t\AR Wz0A`$F pH ਗ/L5k%z E` PD֎' @N vR7 pdp ! ;ZͰ@(T AI.P pp@,Y!PԖ#@]0LÑG BULPJ]0_)`@iDpJ .ߡ}y=#h59@<P\\pfeY$ @,^3}D /4$ 8jR۽BTvS -`W~jYAbj< ")$ᒿ &Z. 7@ t.8t;*#%pT6tS`4<  ](šB(A4D<#e佨3zv) VB  0 p]@CRtb`.}Y-Gv"L/YpK + 2C p\Q16cb4K*ZHy%M? %̰)""Cp5_7 /@NH =TM y -P'P */r1 e`>!k kl_-PLp lpvqB$0{A.@2"l'O',TiVF_H8 !ɚS(su V'jRB&3 hhn! /08jZc f:-2Fʷယ֣21_]oyAY::Q/3VNYSUi[G!‰Z4pŐa 0q@J$`m؄ @,@!( 5A:p,  1B lp,JZ D:Ä8 `Ab (`Sm79hD%x2)N&`@s` `} Qj'uZhҥMFZj֭]$yt0aBR ԁq2t؁`*9`C_ p&@ $tFt@M td a/R'px:3@ i!RФJ2r8aH 6S>wK HRH@ 4G.xJ:^@ 0; dM7߄32h|  #`hncHbS%>gb;xf %cP>a Bx@ҁ0`I:O` +U">qq%>ǁBRYRݥ@^dY SEPp`~!@HŐ$*`S% 0',k aJ'2VSNOF9e|n3AO>TPH "zG p yQ?wʱCbsr'l Uu"@ cxu1$M}~)3x@U  v'Vd@"p9 duց}qhxs}qN@ǝlMʶveb Hᇜr̉#Z ,P)$qV0g qq@}H`(aG?}O;+FF㎆tV` wX ЄaGSrJb]NC`_8`fܤ)a. o)܃RB"@O΃8@K Q82)27F2ьbSFOZf)o+ " F 2P9hƓ$+`!Y D+XQrEꂔm`,Nf(@K8Jl;c,e9Kary !H!4[sAWKcjئEJ%I曎s R4O> Ŝd<6KV9XҜDi̧0CAreJQ4:Ty(Sl%jɦfK9OBtib)EHLҗgFst8'wbZJGuHU@YtGMf%P,vϏ泠%=@cSP>0sn)=jRO@ZD:ue=o)5$R׿i=lb@WmQC=1+ti,5D]l5E½nvwnywo~x>pGxp7x%>qWx5qwyE>r'GyUr/ye>s7yus?zЅ>tGGzҕt7Ozԥ>uWWzֵuw_{>vgG{վvo{>ww{w|?xG|x7|%?yW|5yw}E?zҗD!Uzַ}e?{}u{!^nl'}?|G~|7m ڀ!,!,!,!,!,!,!,  (Ё*D @,Hŋ3jȱǏ  $S\ɲ˖"I͛8,29 JN+Q8BѧP<r@A `ÊUe<n˶mT-q08`A!Q7&>! @̸m^븲˘3c.A6YMK|EʫcW`e1<( k>q_μУW*Kbҳ]`0oi>ya! >7C]1<<|߀)zA&`F <(!G!,  (Ё*D8.,Hŋ3jȱǏ  H\ɲ˗.EI͛8s.Y%8%,t J(EXnpPJ%,8X`SÊzMJ[U]hv$OWe} Lዀ^̘l7'$mL˘/)>M1CӧSwnxqה:9an rσw aȓ+_μRq1Cu?^@89=ӫ_~qyFnO=2?-PvdA F-F !,!,!,!,!,!,+8p&HTC"p6\1#*Zx0UZYZ0H53|`$֯vFDt)2f  0 XCQ4&<ZhҥX!QHft W)قH XPJHktջo ˷_n/8Z W Ҡϒ@ d Pݥ;a>9X1ԇ~IȪg.5mZ)+"R &txwkE껸8qYri "0_;i6 ?TH%:a@!,8H*LÆ4,P,.8Gl8`Ɠ(N#0<ʙ8sTaĆ͋,@đJˁ0eDM`nQ`mṡ= vKARعt *+Ł)>`N6<5"ގzsLZgɯp@  -<9޽i!d TZ7-@@_jРƅC_BDO׏c8F09 90 IKe`  i\h 9.TJh5g_I~鳟$ 4z X 9W.A CG 8 -,s 4P,@1tLQ(`C O?ŶJh$.f1=hII  PQd  @<@I?tQ  )BO<:@Q''ipB &Jd94dK d@d"(P" :$4)$B @Y@]3в[9PB 4p*e  #Pӽ:A".3Pn)= KVL@TNA&dix&A@fPB}Z.H@t0nc'$'宅ZQAß5j@x8ʉ3@& A *"Sf̓ Z]I81@ 2m hXxۻ& cnATeq wRG7Bv@DPHh8e/)g8d~,(B苐8֓IfէN،ڸ.%B5m`(H%1,Odr0+j鸎81FP,s7O8 9wM?K4(IS/ ّ&`0$!II`py!, (H&4ȰaA J4qņ/0a?Id0 %c9#2 @I6GHjfB$;$H A *&Ֆ9L8`"(P@BӧQ2A q6<D `q[Ƅ rw _R`jM *^pCo'~aBO D6!wM0pZ.MP6<\KɄY80@a0@0P! 7c+@@Ȃ>%P;O?;4H?8 ԱcPXU+ Ă-4A /L@ Ua9ZiMd]`")#MԤ+@B LP,YEYn*Y0%TB hb:@M d Q@!,(q:H*\ȰC^xHŋ'bȱǂ|I$Ĉ&S0c.D'M=&y'> JѣH*]ʴӧPJJիXjʵdH<zpr8@ .CX_hFuX+w.W@2: `-aN}M۸s? d[ޫ`p[!oxXmBŖ (|s\ w㒟>A RMp1j|_N@`ja .ȟYHf߆B!$b]e@ ,`K: XqG.&9WWw L)L0t1s=I&@@;ZNы;aԎ$ 00E6 G30B[1lր#TC !N5M0/pt1ex7K+dM +]ZCYIO1R.`%[P 0X?D@B4Ŵ4zJc9C 2ݤp} @A` T@ AE ^b GHrZʜI͛8sɳϟ@ JѣH*]ʴS:Ā`nuHدGL \9"fR%HA bzp@REd]@P߁*s $R09@ex^ѨS^ͺװc˞MA H0'n'̰8O0.M0iC=P`eB @` EH:T" ,PSIGLp;d(Pa_"+: :@Z ĩp"L @p@ ; @rud +^Cl8TU8 XBN0"2Fҷ½/~ IbEs  ESs ҷ nK;93e0 3@ @GѧEAR %8E>2 BP8+nяT, B~=a2ܔ^Xf!\C!:oaEC>XHX`ew/@BP;r&& }1cNRaAlC&#@ R ,]lpHbC@ *dgqQKpe@s"8B 1y^ bܼH" \' a&U>DSW@M:`m+KɧyR<@=U\$px:`NZDa!`AA, @u@PzPPCLpP09ʶ<`{ 9'q?u]AjA2=0%⦝}ݪ>%")r@Vѷ8T4樐9kSVnqG݃ 4 wc 8lZ%7ORH GIaIr!bZAt`e% 0@ j.cH!{2Fwx0D6\|rP!JhaH Rvp  @ Ҩ5D)Xkz鳗pҕR`MfĆ&Sq($2Uk5V %s| )[;\?""(c$'SH,@R@RH{%B4^Pa2KI|1!@mІ0ֱcT#}2m rf4°J Ӑd$ˆ3ʖ0!Sfg0p_K*?60FD4&t?;dLq@*>zs30j ` $1gZGm9 aM_,#z ѰE$?um.px&Efaɢj6WH; ьC^M](ÃMg9?̆Jt@ BrKiF3_XBojH w$ oaD'eT[㜆Q{U+GGM1uHnmU* @+`BEJ axLwc91{Yx!7|!Sz.sWxD 2ΐ^o8==^tɚQ A0hG㼇p)$i}{ߥ^ +K?F~@ :'2)ȍv.y@܊G0@,7%| HQ bkB!*vyqx ww!~ TL;C)(D{"$03@ 0wYl}$9#VSkhDa?2A %F?V`) #ATF- a"F nZ k3GqF/!R ߇t.AӉSr~C42b pV,ea ͡oHi   L%#ưKhZ(s|Q 3\P:apqP;#(b Q@ %]d'{(D`O9Y pJxXQ&f@9zF4֍Yq D| u!m5 (! % ':lC3-Gm ^\@ kj 9ƩB<(!-7d1`s.2Pd ;6Hr Q 1#@BH H ]=J ń w tu=#yŀrUsau`z~1%rw*!j_fV3P}-]"Al6$1aursk5Zbd#t Ar'K`"׳Bt:UaR!L!NuxZ,a% '^ 1Vhn qeƶto[sq;{~C OUX=Us";s#w+z˺We$w Gs!۴c!d;GClqyw{=5Yƻ{ً#P(eK7v۶?ҽi+Ncu `KS3f` oHF5TH[́bvk4VTR9A"qp嶥p0\5zhT;Ѓ@`6K ֻ-,O10,ҫ9pt 5$ @%vR">M̼Pߋz&+  @1.4 ǒ 0!D + Yӛ '#bPu` `- Yk<ɸ\0 40P6"<`/M]|p4 3A1KEwP!ȫsgF"@,'N  t&-.$`< %8Y#̈́V [?=p7@|P[2q v"=% sh!&@}K( r XpP0'pN@5069s GJ}q!rQh$pp  F7'P' wdl\"ל na aaGsw9q`m!m]ۇa]Gg"=_ ٛmȭs`"k!&+No$MɍˍqVp.rm7ރ3;= !, 8(Ё*D8.,Hŋ3jȱǏ  H\ɲ˗.Eyp͛8syPfɳѣHr[&JjL.a4iׯ!eg+سh.}yE!iʝIMe5`>)f _#{%e/D;̹33xM%+ͺuKc8AAT߲7ȓ+_μУKN9'?IQp[^cLpQAV?: wNpA}5p#XQ)`Pf%D ]OC!i"tc@gM@@|h9@@e/4`d xIfP l.$%RVA/T1] - VD= 'O`Pxʦ{EwY~!Om:MT** 9PN ]fz*G:)±*~(멦j뭭tA'G!,u@dXF["bO3_0pl"Sds "<# 뮷Բ0p7jmG$|-IJ9äGfZ+CgB/'h 1)cWB ( oL-( 46&Pj6iJ+ .P*\'g]]d[8; MtL vq i-] m5X+C.vԊ8GvzGPǡꕇLJ^ ,G!,!,O1"H *\C # B8 l,x M:8E QF,fƑKдYӡ "O2,Pѣa8jV" 2: V,YgZ];kүo ~[] [/bpȁG='ƻ@e0nnrm.0ci5ll@ctM2`0M'ƙ3ɜa <0bzgh/]s rP0(tn5PYzĕTL$~# 8 9G`*AP -4L8.+Ɔ5m ܬ#,d '|L |@H3X",1/8&L *,A#H"4Ё4͐Z Mu2z A626aFQE]@C{ rLVhVs>S YU),4,@Zj@4wB1襘$V}՜q܆_5$0 S@!,V*"H*4x‚:|8CM9P  H%Z)PAHt`rT3s0˖S C*TӇ>-U* N(1 @l*sB Kפ<nm'xP>`ΤXG_R7bMpFU7d#r4`V8\A!"!ٕ*bb9%@} X )qI 0PL2![|Q):N-4@6̣= B$C p$)'IP`} \^t]<ᅜ" X%y{ $R'r`mkT)^ r0A!,h!!H`A\ȐaB; װŋ3jȱ#R?K` 0Ӊ(+xb8si upУH0`@/:s#K@ҫI "8ذhÚpN9 ݢyԨ8qc.7f@!,g""HA\ȰaB' װŋ3jȱc * L?AH (-⋚ !:B` c O@$ C;@3NT֜W:Gٳf/׶jE#"jƌsqIU o͔L'd D qf&˹=CFhjÙ҂V0vNwqiaN濮 08C۴Iӓ[/B 4pկ iysgٮ IB 1_< 2la_k D@$8y)`׃a$@ dB&l }IE'C.ӏ1a54(,†*‘B U ,ЁQ,:<ФJ])Vd! Pn]p#7WZǖ[m9`NAA!,p&"HP *\H0$ȁD 800 !pB\!v@aBJ75*,QB 0pa J8u2(J`X ÈJLiB ٲ('"pa#lvP#ٴ 't2L('G{7kpt.\3pI~:łbRmI@3jYzeڒ bHԬ[{<ԁaӔm8ucW M^s)7'X[`= K"6\5p+ ݗ:onz4@` BJq`מ{$ t"M@8BfX)Yv=jȀ@ $#t`cWQ@8dq;갃O?@PH 8P`@%,pC eJpAaN&@ H@b*ift@H2$Ct^{UjjjDJ@ t)Ra^EJ,C!,H*\ȰÇ(@*N8Ǐ f@  7XFCʜI͛8sɳΘ*^(cGH d @&ӤXjʵׯJ ` ʝKݻZ k-ސ08P$ãp]̸]La`*~ %r :`BZsMm:P(Nt6N8 !4ڸr 5N8L`V ] (| Y;8NTw-Ob-wcwW 1@ą 6 ߅C TQh@7@P7L')8d( u4퐁E%D6t8@C}h@# cC(A% '6XX@ŔR,d+#_''@(wf؍@ĈELy>! xQ_~_Z|b: 5zܽA;0Z8`Dlk}ALIp6LY6x&Z Xy)Q \B hI!BV6$&}&4U@8BEѵ:Px ׹& ,Y -dB:Ad@VuDD<\LZ Y$hT|1wD&@gUAm L7=dE*TWmI\wn9@- $Ddsk.qFd-bS{mMh x*+qe$G~tsN) tN'T!Aћ*Tqy!t@t{`@qZXl<#T("@ Ō #lRE𪇤;AXa8u{b b @B5n! 8FJdpA (A`CAfV> < <p03zp@lA>Kb |G MiK87-5Ύ PH Hj5$q@3b5(!0|)P!o80&KpG* ap$ Grׂ%i /~c&= S?;N$H9(} ZYd1%L!Z GX.Pb1τQiia27hv, Ba:Zdw!Tp}lA֥ۅmLR$ڞ Wе^Drx!MBřAEjtmKPnv}20`5Ґ^٬kg}=0v`!j]!'Ly d}-N5l-MM A pc,[,u @ ^db; .cK$s]\ Xg5L-r~@StOH-mPOP/b+_9x .vAFOGN4z`Pbg)VI"Alg8ӎQE ,!q@! %yDL uxA! F-xL18 1@hԨ0Ʌ4}"`<:2 "tx|-l*>X;`ZM8߀-r <`\9X6`D̗(GI߀F t\Khq: aM0 Q@ -jcC13 0 phg' ֐1jPm֖48% U a`#qT nP ^Bo@0V!xҁxA~%(< &VVh.XqR" 3Ѐ1~o6W)0k!`u801W w"Ҡ|jw31<a,RTWP C  ~S )Z! a^Y=G@v@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz[~:Zzڨ:!,#H/L@`a JHQ!R,@@ "(@" 9Tls`B-sq  L`ȏg.eDH =avD:+B  bLnPz^J(AA$`)Kd5kŃu9Q1E :0 S^͚" 5lָsN a?B?sܠ2|@ؽFh@£խg75ʁb \C 9@'@{d 5sMj=@t@IaU} 0Efu@ $0@d:! #4,]} ^K}DQG9HdF1:0 Tu8cEyy9\ a5$RjĠF8 !\uu!Hj*l6#qt&5A ,0B -`_Q$aXe }*wGF&QLSꄓ+щ/axf yEB  z*10D.@ @;Wf9`>!1,j`ưjN xUF (w*ܵꡣCV8 i8@D1D|i@2tJp>P2!Ea.5#U?!N P@aeAQ&Y`pGq|G~X@u"|@C;pde`l% \P"0 -O9=PR&dQ %%)xuaM82{]8 Dp@q8;m@C6_-&=/8 T;8Pc|i@˗7 &g d\"840 =.;`R~/ x`i^  -iC'=@ s@~)N4|b@_Z:tJ[@ X0 B1a nIc NmD3Rp \M p+ dcE@)/Ta;ILf&#t HHNOHvh"#a. i:9@A7 2 q;Dr/~5jfELZT De*>d'6I#4:mP##(>f2yc Ȁu,"=1; jXj f@t֠e @O9WAJ @&@SH fdZRAH恧 Im ,p b$`l7At@o'~%c8p`BI9Brh%H'7X,:p ځ1EAh wc\hq\{ h+0N[ǐhP+QZErQD[\O/8@$@` xsD;8 EPک,@q3x3ˤ e`u@ @@4[s 10r W]7yЕ# e9 D.RO(Z + W 5 HAl!c͎D|2W4R+8z{D+#:xP0 XS|:G&=|ϼ;娃G)Z8Jb&@Onf`0e#Jq  eE|$a'bBHY|'w2}է:3G1}'"xq$=5tDG!!7&"h!IH!,#H'@`aAJHQ!R0E' xC *J$RI$98Ɩ8U^dA>80ς8JG9}( )rW" , Jb Z܃$(X>&@pKx(Gf|Yņa9QQ t k}  kF^ͺFCH)W_^0 >@ὓ+_^Ѩ̣Ko- Cν{bjTvNXUU;x>6}'o>_z;4\v2- ^wy V`=A%xч Nƈ$h_`' u&4XpAWuM'u 7^S, &ׇ EdeAa@#,r%Jؤ YB HTW"e@'@$R*VİH] c6裎nY ,$PC 'AB tn z)2@`lЄ70J6j / ;!9PJ9ʝpժF824-&9PD1;7+BGptU*A%Ђܽ# .Nu\{fB@ 2Lm sno{#L鰧 6H46` Oԉ'4Mus #ТѪs-@=@9p>gz,Լ+zo$/L減ޯtx )!=[xS:-=*6.0]2dȧP3#q~&:T`qb1 ?z F0:Gw !,!,!,(HpW P! &`"A-jŎ 9b5&O d#bB,i2J5,XS J%ډ8!%ѓ,N0@P[^ЦPp::*p1װbvL32/&pl\J]{s>/\8AbAĕk.<F''\ jyA$]Jx$9 L5d@1 dB9q݂@Ϙ&= 4߶ct=a/|091@GIa5Ā ^ $sPR/}q_ e]6`siA `, 0p@D7*.@jb%RРt4"a JGz#W8@i68 qZp1G׀M8B<'qyE E0.yPBrN XЈ2"D?iC(` @4BLFЀ8$\$iɀ@(dI "%_9j#5H c[qHT73bΕqi,Ly9*/ n0@:@c,5ib9p9QȭP ˋaP#Z^%0fX:I:1S mCp?T R4@=zIPx`S \&d&Be\μ%HJࢦqCM'C ɱ@!KpGJ&;  *t[cǝ,B2{ A[\c0 (?Byn,HA ҂"%z(I*NI,Cv6UO1C,*0jZ E,iLrD:As|Y+:J91Q>wVuh l8-%8QH@ŮvnȁbpܾW2h|)FRĀ~v$ @A ${Dt U]xwΓ4R(a% @LpԎ2? @Zb &Qi1)x6s*+o x( Re K>w"=03ڗ  AƉV@Rqp[*#H :Z'u@$. @x)I.E  K\pÐ[P4{a .W>6ye,!S&ŠqϴX1T{,l.pUWbт8WX4?wPpHЄW!w04UQ`v!#mE<1HM%V7MCrQ j4L0Y`F& 8Nu9Rd(Q`d1YQVY91F~S;I7auXk}1qU Ɨy7xqXeY$qgUJP! !UA|QH)x0|SQOh;1^Ȅr(Lya4+,:!C̅$`M#:S fX`o+Lx"4$NUͨW*$?a(5Tyey7/RTTAmp0#&IA9ИYA7EIF  4 W`#QOM'PQ6$Y'iuՎD.qy"v] ;:_{dx0@ w uj`[Mh7 ]r> VD"%)KG` P t`3@ Rvb/) Xb#Q,k&b<`LC/PwkCh{d& r0:`_qHQF(@KQ|Pxp!,xqY,@0Qĵ]bՀ R22"P WoÈ QëN-v˸@8P8 `:'76W +"Q !h _S`uv " pO]($%$ \7' ! @i&1!P V :vՠ 77AbkQIɋP_`\\z"Rl$&86gG}p A(u=\ 5/F^PP)^P9 \\PA05Bio0֘]W ` E&Y$Ohe!&0q ( 0pA>2I0 ؀ %xݩ I.6d P/UzG@nCl 0{,$ MPi` =vbp"H10;q|PMgpح`ȏ*$NKka\hD4K= {%nX'(B2ƝñN$3 Tp-p- B#ܦA8m/ P~`6x4gg" 6))X+yPDoTT$Ȃu!#!g!)OQ `c%7Cf(L(u@%$ŋ}aޒ+Vfޒi~7k~7$uqMDꅘb &2d*jI"ȞȮ$.Q\i}^!ޔD~6UAM3xXzD2JhKIAePJ\ή՘WB՞egȷpgф\;R'QŁ 0Q`!, :H'p#JHŋ3jȱ &`Hɓ(SL r˗0ct N 3s&pJш"@pӧ3 d ի$o(8ׯ`#>/@]˶990 Զw&)| lA@ÈM!U:˘/ ̹,0 =FlX`ͫc˞M۸sͻ NI#Lmܨr)\ߕ6 ;7U ƀ!,""H`A  `@p@<Ĉ!I&8ХK:)7p˗nt4-vLAѣF(] RB%ԩԩON-ȴ5`Ê}ٕWhɖUzmXkۺUJ3`  &\WM# `&!I .8%0ɗ dBn0+ jX4ɀУH*]ʴӧPJJիXjJ08Q;  F@;8  $mFU3vSVtp΀!,"rH`A  `@p@<Ĉ!I&8ХK:)7p˗nt4-vLAѣH*]ʴӧPJJիXjjt!Q.!,""H``Np0> `&!I .8%0ɗ dBn0+ jX4ɀУH&ձ 'tPfHu"_R-ȱjَ Ӫ۷*F\vۻj⚤.^zp>:@rcqAVN[8b\@@pA 5f G+9@'B)Gl O_L0Bl 9@GMS)_8&0 =pp D' 6qTi:\DOxR+dc Eq3  29@J NhƈNbȍR\9A80ct&/eƤi3 .ul'МB!F`AOBg `M@@Mp@ |0={GjABA{gAl Ԩ ŌK"~_ 3`Ar*9aC `0Tƀ͛NaBG*dԯ fʌ't@ĢyoZ rH HH} zu '^;w!6!p℄^Q )FgD<@ L`O/9Hivrف_\4bm!s*@8RSb$RBr4R!,:tA&LA Hŋ3jȱNJ LpBÇ"~\ɲ˗4r@ǁlX&J@  9w>)'ѧPR4΋ W/]J2 d5O`RӪM U†U;jñ l D82)J|Pf)"8bM  )&E $W֛j \Hbw+e C %swH .8=psN|k7/g )gP&C!8w8`q@Ap/%$, b]07qG%b8%Zd%(@)$LD>40A%TSBSVIe@!jl9A^bE%iG ?vi~CADt^d@ACʑ=!@ؒDvgucM%jEm&Թѡ &Q)$4@3kt;AH& ,"?QttSS SJk@ @\4j|& s'0 <<G.qQ)c ( D!9@IkH$`>)#L 9`Bk#FH9:` $6mN O,SpFN8@1%>PR`at[B&Ǵ@9@@ob̼@)A,3 -55M@c+|8@E0;\^B*,(b" h(~H Ns\`Y af9S9J `XOk\uMqUB y ~ ҁ0` FIu 82YS6A= $$;fWbXX8aA )00VS2Rq; q uF?!6?Q ڄi8ƢE vh9ʄ"KY֏N F1Xp$p5p pMCC rLD'@FVƕ܈D\. 2Rp~Ft$SQdؠ -½xBB\00Z 2PTdF6|8A9< p?1r :AV@ hG;q\ 87Y^MpPC *ڋΈ!4ֱNۥh >P͡i& !,(HP80a8FX𠃄 N@@fDE.tG2\͚jԸ$s̛7s'M8uN,ji U'(&NW uF"Dxz3D~9x@`3M,@0`Jۍ_ T  tÁ r^v+& 8F +c2X;R['>rfZpaqB4@i8GDPYǃo\4  莚֭X Nm:H00H ,Gϋkg(Hp:@&P\x0 +1`0'"9lj9D Ž:'(RvSC*fw\b )4dPjG, Gt P!,3 D8n@b :(7Pӄ q@@^$'҃9x%8&2~"ձ. !,!,!,!,!, 9Htp#JHŋ3jȱcdHɓ(S\˗0cTG 3se pJшyӧ0 ի$q(ׯ`!Na2]kP G eQaB*HA5J97A˜Lׇeц )!61ĵAPkض!BHpl'\AMM @/ϾvL]:w @BZ}2 uUuՅz F(A< 7AvHNa!Ȗ`8թhauEC!h08|-@ (#8B^(-XGP^cMXr5<<@`dD@R5}nP O P%5.!A8P83\tP9Rxeb )&*A P&S@ r { $TVz xJ`,V<@9`вNSB>,-F]{(ŜM'Qx8#]QN"9 mph5ȁI_O,` @"?2 d9c"CO`c*3fP ;@2m,J<)OVvc )2M gq;‘2 Xnȁ` PdRq%1r"Lp701-aE6eCf8Q 9T( NE8N7/)-:4n1ds!(`qM (G% EIx8 " $7ۗ+|Y I=H3b 9 F0 @@{@>KE?zM@/2\%pPM8B;q  Q YG E"V pR=#GrR-Ac/@]˶990 Զw&)| lA@ÈM!U:˘/ ̹,0 =FlX`ͫc˞M۸sͻ Nꃆ1(zzs3Uwx=_@siâb lwwlL<@{pB5q~mBL{) A?YҏA 7D:Ec' MDY 0H/4m%D !D$mQ |axؖu8@cWEP U=0'@k D=`'D_"dBsw~,|N@^zhO =@iWT( JhkԨ :اAz$xي"@޳R9jW2-F -Q^kU.ۭ;rP;pgafApB jljkF (: `pk c< > ?J 0Ѐ)ܐ |x^#)%o 0-1̫εT- ?/c@S  2մxqȁ+41]:C mO m-q(̃?)BP'I @·g!F=1/|? 8ujyV&Bį~'P2 7ADV!{8@ AO /@ BWDdkY;8pF&QMġ HN o@V 8 D!䠇3!X>J@E+|Q /;<_:)w d^87l+^P\~L$N!H *9a$30C .^0Y@{M/W@qxSb"(a%Rq$#1IH$!, $8p0a*\ÁvP/jTЄ9 ch\.a rɲdnXb r,zˁs`2\s!<`E~R-)C#DpJիX.Qׯ`GB KٳhӪ]˶۷pʝ6Ճijߑ|f!,&$H`A |C E{>` 1sK3ra  H`́j׌; P5E:Yv9`v1R||pF6h$B0! f ^g!AČ+A"}8X+W\IH'W\։thtpPOsz%LU Lh,vXmрtP fPh8ÍXuuE4 @8Lt4F#G$ :($ӎpb] t&x–@3@cp5$ Ғ#`_Iѕ]wI-%x Kf 0M3  !AcdiWp9vN@8g`dQJi~4MTA%dvQ@!,.GtP0Cm3&8 }@ ·N=w穡:`GAu&p$p, AH\ 'n Hq1݁k 0‡4Q  86pcM$n@@18 *9@ L:4d&gP %vP2 @8pTK88,apEFRGcyqC] aM-(pWB@p08^&Cn d.9"+l҂hc Q,@78@Pp 8:$n3u%/8(, @@#U%Qԏdkej( D)0XWh"<0`@‰M+؆*ĂeLMdP8 @\8kyc҂ҕ|%H<5ܚ#C<(>tʙ3#>SFpӽA@fȑhqeDЁ~R)7B 9Dj8ͦ?N9@ B+Ա]Udzn{'M-(pPmp=7~,)21p[&=F!,!,*"H`A  `Á:yx `QÈ;CǓ ;Lpk#ʗ' tRn8 Zɳ3AH*}`ӧ 'JիX.pԩ\8Hׁ`lmǁ8(Ҫi߿ j؂!^z<&mAlyM0wKVjJIW !,6"H``Ç@|~ G h1> fPIs ˚ dBn oXaњ!Tsӆ ,0B#†\PA"!N@aЬC.r3ve'J6trlzIOۗLnΜiPW9wmСc#c6 ` ݍ 8c+|(M3Aㄩ[?g($rA|ԀHӋBg `p6ВIiXCJ cbh11r A ) 㤑~Sc402S lDŽ5rO&|01Ͱ4RK.ӌ@'J9ph0&'C$ /|,A( |XsN2,#,e490 `2;t\,I6:dO(ed4@,B@hDnr4p3\E<#&Y8@;4LSc 'A )@H4?,0BpZca'|sˀ |RN(,[ :\L7aS dzr ' 8PH*X\`2PH< 4,0J=c-% Lp@;I't!:]r')08\#!\@7;@ B b \AC 7H2r ! -f$ ްb|  Ow$cq5jd $dYwPK 4}A.Pu pw`sdp "? Dh!, 9HtpA p ?`Ŏ.|Hɓ(S\ɲ˗8$/bAyPx!̣H*]ʴL' L5 얃NÊK,l>ZpD#Ղ,8Hx @k Z w͂8H@`Wv KP˘ &ȼ2 @ d iz d`9FF DA!%^ TUyr d%Xc.K bP@@h pQV4\ uG[Q.MN4ѾI&HQ@s d#PPe} kr?2N#W}iHD@c BHZ^-Ra`14[pD@mR]x+hKQdSY\}CLBnn617}_Q5-IQGnS$9_2zo8+Y@O "V.4`S#ra $"e)@=:&cnz$ N*Tɿtta F-@L  ht qA,uE2x @#\ 6=1HT8h0&qA 3 W7v%/(S+=RJ ;x&r5Ԣ! ~)8 ҂|3X a-EEa0@H2%ȑx@l$n|#L0 Z|p" fNGP$ rIAD; De.x I Id~\ ؏M8 0@n([&ch\}@Ц !*@LA,!5Y) h81(8J bTE&U 8h8NǸ074J a$FPDd_4G `?%Ez6afhmHp(R d@"ceN/ >kS"I I ElxW㌵,6e:r "K^j"h";AkaJI >B5ŠǰląlkAUֲ4كx/'l jZ6<1knS;Au5}4i:@@@I!K%y "@: fI-؁ KsDr#Wu (,&B8i+w&*L X7NaR7jG6U v#0|8p@8`A> $:3aWmagJ\xȣ#'2h%ᎁ@=H 41iC8ڰAuLKA $ivTshe ",*pT^6 Ę 0SdAuT І?DT=І4%`F(q%B00nD*` 5T!$W;xnwLhk<`:u\ѣv`z14-rVʑWI@#@GE 0"3;H+=,$G3p`Ac0AH6!6тLӸ TX΃'@0@p@8P%3IFg:$|a|7, L/#p !jp$>Ȅ  5)SP/ =FeT(7f| @XO)"0b T5"pg=!crP0v`#8)vPP,S_/XH4k5^ D|4 0Ƒ]B`+SbU_2%IuISc:e@p%)3y5'XCsIr )EXBg f4\9Lj%pP|4}ɚ:1`3Y3Iy<0- 002#hE:nQas)qZ!, 9H'p#JHŋ3jȱc &`Hɓ(S\˗0cT N 3s%pJQ"@`ѧP'ԫXzѢ`ÊpٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#K.9`S yg<H\Eғ:R? Zr@V9"o 4X}|2B/?N|  qAНvywpA,@{  }g"(B&h8`h!L =! ~vK 0"jix"z6k, @AXX=($D¡ƑH−qW)dEJ`I9%U^%y9ebfI&F+B Am` ơgaj$0@&ؙeTʐk%@u !hav9 dHd:..v U980R#4!Uddh;lf4/3`:˜< 0ƄD`67 j>5,xE5  ` 'tSj46A;HӋrTK87L@Ä^uxB -,9w8&$䔱"Q£@5kP6+|3M؈ /M3zABw9u8`BU+!@m ("Vd9yaR< <ՕAA+)IrҏT@JV (8)X T),V]?#WP8`MtnuQR\vy` :p='I"@6M9yXZQRuf0hf h@ QG ;*TՖ j Ӗe\:XHЀ#@ -(R ͤ@8d?FAB[ s0Hܲn\5`BGtI A+@ 5UTpNu\Jld o;z:II- @9G`&6)Lo).͢{vjv"mP]"pty`[\0]6 FP_-d{2K teZvGjm袃(7A $zrHP,G69u >[I55q4ZOp9d6DoPG, N*餚ێC䒋4AL0e>N/TA rN&$eMH5\& b[^b8e@\5{ɶ6 ជ ⣉.2BU=/^agf-5>E?38 @ù`Ύv"h 7=@cb@[pA[>dH3 1Xr -(">Tb8b 0X5H3dA*),P` #jg<:`8 q0x250xJLB=z0>Ù8ZED$3H=^ CB*.SK:8!O I:%dH##;_ڪ_l@-@3FЂ3&H*! t2'ad\pX pCMR^%E#Г IXL0 X"H@QcoL!=T`M=ꡍ/G"J;rGpsp;Jx "Uߘ7p,5`m|hX6~PS&_hAQ uCdPX _P˔pJFp>¶PD̠,`Ft/`,>)@!",xicڀv bE y$v2^6 8ܸA$0|6$#g:1d(u"KlBQXB`G% x,(wqy!RL[<,r !"d#1G:pEX6xU {@(opCw Mh n`xG8h`.!dvP+@AgN [`@xB 49G;H@n F0r0=%p@ޑh7&Hhۏy )h@/pUDX64LI g#Ih"f$E7n Uc ̻9I # he:\ hXqgd| @x0߸aPrg:8Ő:'iA /sHjO(C `-;bpy=>Ua|rΌ/ew;d0A%C$0W_:v-n@)':@(m@!W1%0'a2K*m~,S4J,p 8'36lpc?o20+Q  t 5 Ā а)"eg#9To QQpl \U,k! NaPh~0cU} 0SP  Rvf,z2D x "6 7O`>rxpy1 Lf6W4Mp E4u r@U'K Fx'Ѐ )> 3p -pmd ϑ `  @ cjX z@ 0T?#P0d `D=Fǖl*hO%0QTu-{6V{#$ 1G?8(:7%TPIH9` g(&n(0'(,uǁ| Lp GmP n_0S 0 40vw/ d*؂|$ (fp$/`zf p-`ZW Pc5/P^0c(b= L7p xaFSEZ0pT$E  `0crTUP KRt0! j@] p  *& @ V04"QEpluP"Q j"FqYyX$n\8@j6z_SǶt9-8$%7p1oN :)r+Wss pan78 _peM@9P%un 0F$vK˷~PK I,9q?Q,䛤<VdJ+/J!IKPjqR1L`*WumAB!#:贓1>%V,_þR,a9ps̑YoBY@j`KJ3{`0z+ؓ)T1社%KDcZD!++HHtq Ph @b= -U,Cl>ľ*0?a#abQLt1@нAZL?F=L0\Oc66VUL?ǔcap PYJuIa6Km=9p|-Ocþ9,6m]mY5C'.P# ?tLR\ ͒ɾAE wséfR,ϮO|N@jUTQ=k4l>r9*\IHAC"DQ2AX!.)cS!6ӁA<l!,*$H'8PÇ#: 3 HbA0JD#S\!"[ņ4eXqŞ \ Ä@ sKgɏ;JJUr`YH? gՔ" - J!bwe h'NCtaj8Hw= ̠[0laCXv8x<I^2R ЪƁ ) [Rt¬B +/dǣK>u8(@0 ?@ӫ_O՝@"4E0sAB߀`0@T"(!k%6N9QIFZ]4FA#d#$FA5ʈylAtУHrx&9p^F:y^E#k!Z9`GpV>AIEp(bpj䩧nޗ &gqgjة|EQy|rP'ɚQB*!5,(OtjO?^RL6 4"8P.$*JiL$64DfણM]bd@:@, o Mt^XC B XTXD:F +m@p[@ 8Îw(p#򡬆D ,z^(xJ‡rP" KM"T|r*0 @R<ԄXj 9l@#P403 0 >ihF-UHr$,`) c[BP$T &]4i6 P$b\b{/!`OB(G%Z )CwXAy @zHqdEz m2: 9JCyQarm)0 !&˪~Q(y{uL9H*>/AdF¡$PCH;4V :P`SHQ;ȈQE!X !iRI9@X 6'!@1Lg}" d y(peDoH8G(Z$ Pk)2mYO38q0\Gk"$;4k9q6.ƨ,0Ys[8`[)H  V>&eLXAgzf鈤E !,!,!,!,*9H*\P " ! D4aÏ CIÇ=\ɲ˗#JXEkϟ OH ѣH}>|  @#EǤXTׯ&4u T1pt`طFK c@טA ]\)CbL.d fpIY*nAX۸r`u`$ #8\)X @ $00 T\sد+ ;A^^\P:R_ m0@P8O%t98@8;%c eJE Ԛ%ЄN@d,C ( ˱_(D@ H<)0@ T`.`11 T!yT@E-8P + `CP?+i#>ET @-T6)LPT@488:`$ R( 9:fB@-K }>́@q 40[y '!(90A$͆9XAz$1j$w@ , &Сؠ~~"=Đ8(ZO)#&<ᨅN`'/N@'"> #t0 "C',lG Hk͛v! Sa&z! qC$+*E `B t@Ly,#^"\L@ 6=`.98ew䤮E-'dБQ=7ݔ]Vx _ " z^Tٰ'`!N8(d鏢N nNmDaEaSDؑuƟ$T;{GD%KyǿLH H 2D%0*"J}[ Z(\HX7#f=eOIp p{2 09Rp~ҞGl@J*bA({',3 R^h?v8 C$:@р866o@% d3ySF^c0E"I!e`4Z OAhx@d+etC%]S|r&y@ٜ5eOJ`=q 8}`Y O$(?:cΗs!+yPaF32l},4HXDNV*w4K1HHd9'XȫP 4R: C˨Mk dCI80Db4͏hR1p_kf =xJRPyey@8PJ$FAu !` ET]`Lm$êiP@t$`R|DKZ0ҼyHR0=hbaJXs 4L7Z"7B%VBMH%0))*`!5b 2d|8D#$80a '"HbIMO#[%qt/qG<` TeE tGH'ʠ%L {(ףuścT"L|0DH S΢A@zE8\!Bn] cϛ1qW"RENE W {a ,zR'DȜ\DD$$2u2s.0,{!igP^Aյα#-X l*J7^aC@} 24OLKI6]:#kaJH 2sQ8xqCA (4[̏KDiapODp(m6ŽhP U"OkJ`ګ]8EW^ikdͥ+scO .&ӌ'-P ҁFC-mQA#*V`/: dHC f(C fjp`3׾(6d46lrjzvMB Cx0F <'(qФ&r(t|Ȱ pO_  yGe 0|QL~@? @B<@ 5,C+%oU kW)Ѳe2 f@8P^nA;8 ڱ}!/ ;0us%@"`1֠D1 .vP@ 1Ps0 r`q f``%πL0 /St+xa ,2 _`q)icQBu(ks6p=LP y 7)*j#u z5PkũN!P VDEDJpf[  7Pk]V[6^vJdtt ǒ0[1Yz?& P*j@5U|G <4B_0, 9B7"P.Z`=<B[s1 \P_T@G` }xMA|<K\  y5 Rpx/\2q3_b%X%Pa1 VVnA˰G\C ^3y$cp B  I! lwOQ9!0+ t͒ lɀ <Ȣ X9eD4c5J0 X`__r*;TzaxI 6M 0  ) ` pMn,DGB0@U0`>@; !Pg45  *Up$Jzy-0n4u!@|M'p<w0 0PnF |1`Q!$,%keV"X6`eJ3hj:?Wr P2 Bm/rB 8^dXP& 32yMB%點'/ 9,V!{ @X@L&$~ ̽( pggPB63gP~QK-0 PZvC(pV!miaavxeC_$$D&VJddSG&: 67#cOUdC  !bxi=u41#8PSm;kk̃bk[ a &8̜?鏣NgNrQtu&IynF>:T,76!u.$c'B"<B#0|@",jb][7<7 cf u4xe8wKFToUC9W6O1'6w>a/p I\7j ,Be=v45I%bJpJޖ+_Hzp@xd!ͩ>॓eEH>O_GJ1$sF` $ VpcgQ &*NpRbj#Iuߗ Ec[gM9~D/8V:^Qvt!,!,#H8Ç# 0@*("BzId"6$`IL$a͗8R <s 'Ȃ"s*]jp˙$!LPx"ג) H4 Aqp@8;Lk@T=ѧ[ 02]KmKu%瑁?G֣\fE^ͺyX N`9ncb2nsɣK>Rr89Ë?t?SenK$<Θp9>XğWh~6F"Xuav ("k &WbtZ Z_8Ɉ+(::t=C/P>f#`~0@БuAenPQFuYP@y<:@M籹$au&%@"'B $k&I~!,(6H'8PÇ#: @ f`aC)qˆ3DI"Ǒ <8Mk:H] ecD4Q&Md$FtPׁjKtGJN~FQ>|i"A -D|#0@>(SNEjC ltpl^'R,-B%j!F {0Yv1} p*7@?gYp䔹 C@*:Pd$\P&+J+,8Ъ<u @z:Gq/%œM3Zr̩,"GX|M qAщP].@Q,I @)4/Zk3[CDY&mZQ]uZO<9$/Sl@M#R M F8ЭE/COh.Ԣo - h K6^-10D.80̷0$KzFaN@H6a ђBCE>}@a@}'?aG.Kx\r&Ǔ%1Y0wCƣqeDqi6I f\` {!X%D/"n!P`!a acE.lz>r(3 1Yp T@5 DbHa @@`W2F ,`=#4ׁ !@px,@  V` J !*'$Pq !F(ٙP 04 |30I~̆1[1"H@@Q!2Xsä3CHoQĄXÁb }XЃ,_Q0&vB8hSl8 i~ 2&PQ#wW j|2KL :-`?+eXa@kၲ/@F%ؑ"2,`N30`z0qhbzyh &@ lDa%[d]4623 p@,t0➣ %Dxf @`ܸ"X0kư$C:" 8`8) 4O/h KlB4"†% x,$n0N1yZ0 v!hɊY"BSA'XU Klԡڎ*b8E#PVnxb,TD8p@% fq&AMT!Є dh\6 ,#+ĂHa Y j,1HKbe^7n-W >PػQ@{!]C/4N:msc r'M;@ 8jyX6/"8u6k Q*%r!ʎhOx6b|kЁИF B#'ӜcdL*y,czaGc4u}pPzz &'oK -^q$  .5BM0 P % P >2h r7p:)d\8#PQc@":BiB)gq7&}R2Τа 30TQMVՀjw10S'QXbz@ pOP} Ma#P!A$ k&"dq PCN% EFd0 )P^L%0Q -T 7&9A  ) dF`DT'Ҁam)CqSh!0s#  }`.- A u4O g6iqyu8r&ȓ ,E)F[4`ZУ#_ 0Piא^ `/#@ Z%q'$ 0Sj#u-p:0[ kdd@}2Q % Ftb@"1K*ViT"KP z` 0.@9cs2 `"‘^ &B{`Vyf`@ a>R fY0K!u1V*,A0x\@` h/*&0^3b PݴP" vC &PNG 5qF+p "$.WHp Hz;Sv0}B|63:!Lti+kYU0Qu%laUkUx+0ק 1i1P pa`Xpp,;`R %RNq1N1Pi@PYYaq"e-)`PQ *!%pFwP -=(Pp^pPi: P"ЪBLJ"h1#P240/i~9D4,PP1P 1@w.@,4 PhD!W.)0B1* Pqf?ƦD)G|3apff1 {3#?9 |,vYG)0p)`-A,'vphu`pxZHc&PP %cBDdiRRC'R%4ߒ*X:3+Q)`.C-bBnd;#<S  f `"݀q%G;hѐ!Ē*qRd"-zBTS.âЂ4c,T"z 2![ 7苼s%?UrHyDL?;,r(ҺIw"T9 @Vdq;@<}af\(rb`7I,K*M\~@QlV<-3S,`L}bA[rƮK-Ag 8AM!#ȾHȾA-6\@0 ̴^\Xø\8ܡ@7S5%?a |S5Q=^tWMm+C ^}.a ~p*؋.p03 @ ;0ǀ_ /=D ԐI ΀ 5 P \\ղ37I9x0^C}9<eą0 0 = n ׂ+Pp:P 0P vS1؃=7e ڞ @m ;ٜ f)SY زF.aŐ|J) )]|JvNʋپm(՗j`n},B**=!,0  H*Lxa 0!E1ZB `Ă`Ɠ&THS!0at(ѣG/ `)҂s@dG ! H`p@1t0 FN*)'V' DILBT qXV8٧ƹ#Eo |wt0Y' &#ef"p@/;8ܿB@ӏE:&K?SxٗAoFL;Br`@8P T0QOwAVOn8^Mx d"­uB8@ `$"jXch 8sU (P#t0@C4Qha>5lVF  \aT ɘJhC^"$)1a)P,)FġL@ hMu=Zw <]Bh@Z\p-ú)oݤz3s tG0Eb,` UmA &V@p?} Aa`I/~ }MT4V6/ht W˙`>Q"4055P y9uH߃qЅW܃;2w!1q WQ  2N)4P=@ ܂ZTA;$@ )`636 ) =9!m̰ 򀱀S@,8pN3,0ně8`n@t EF)<3b6Zi|8.2OF6$N6 xu  SeRMFŏ%r =p'N$*>H1P-X :P.  2Q -@E䀜9+MUʓ"YT3Ф:@BGw1Pupl6*0I0rf)N\1Eێ,<28sɀҳQ\@a 7 iG-26ː{6 8͗ BHAܘ)I;P@4Qy9 《ձ? r"ZkT >v`\ н,7.@2$ ȗE#"M$ALH%#kP`H1Dc1M VcDӊHRBOމj_.9`S 08!p\M"CId c1Y\6X4 `Aڨ Hc8ZbC6EIeh*rcGM oxPYX`mx.~ ^An?ˊAæDp!k2 hxט4b,B0#\}`T 0a.zs<$v#/AK`9J #&#075.4oڑy$֯?J1D~(qY1~\$)  /8`lT@i z! FoFK1d2\`NY &Qf!N>GtJ(Lc@A~X$ZBMw% Ac"M, *̙e!aAx5S)( &BHpf$DX#{X>t`PC00cX3*Y[drĤֆ&+Et 2형$ @pǒ$[W 3M)vg wn+%%Ì- 9HmR,+d7YwDLn#79;s@S9I:]m"?fl~n眅j8F RŕpAhT➷rEkyO\.삻pZRoAV$nE",{ωHfyJ.uE)N J,^)Z\*]"w G< sb}%\Ӆ~AN&y+,-`A a:ЅLDNQd?7|ݢ)8x?nyߺSQvfFQz@&P#` oniog7-P~gWwEnJw%Ǵ+B6*c@6Pc`Mm_3GB" 0@#p/b0PQ'P7&c [6m=aBJ{I{|hq`q8 1M# )Ej>!A@%P 7,C)x(A~{-#xD qwAsu/rBA#@@)g(ʡ'\8Ip0B ,MA<Ր/0뱐*6С&'&1z(ByFVuJd]$( #,3c \@'_)0>d` yTb>J:'N33v(p +@U$&)KbnV]XBl3惲1 .{lRG mEQŲ|_Hp|OE.vKlÇoWcqZʜ$Q{2?E!?* `<7 V1A0hRE6D/D0Aa^_*z̩(kNA?8 ,z"jq` p}q`3-o1G@ +j":=*zgtdI'S ,O"6 |2L1Eqgv*Ǟ lw)JlL=<1>$Pnkdl,>4ySO*4UU{kbʈ%WҫUoŵV_ #s%XNelu6ZivZk ǀ!, 9H'p#JHŋ3jȱǁLɓ(S\aȖ0cʜI&8%,^ɳO^ѣH5"AҧP"'ЩԫXƼѢ`Êb$l?8@0'6`XA980U VՃ{c!xyƀ.#)=AR 0P`S (uD-m&h 3g@0Fx%80A8@`X{RdUkAY9:tQ`cIIQJ8`'@H,, EaIG$85'8e`8@wDbd逩vd@e,@A7-`l9AH 'k-x^{lN Rz,( `@{Ѥ"&oI+GN\Bk #-6,@_ AA!P0 1/@n@ T+LgBY!C 3P覃C k.LbNΪ6@e=6N@@ 9j$'&`ۍ$w$"*DK|@f\:0*&0!,!,!,!,!,!,8 Hp  *\ Ç Ad&<80x Cpc!= 0!$(cFMO5@{ b L8pZhRND:ՁQͺUauZ+F0;M 4 L%[F*PbzxkW93%ⰵ,P oRHDpΔ-]9Wi , 4G? ^k[`t={F, eoe!wp}t [}7w@  Pu0cf9A+Sa0heM@wHbGWuSV@  D` Aj$P2*Dc6 cA7B!,P0 0  †3jȱǏ:(@(DAE^B q:φǎ:/htBˇ  PS*E Nغٳ4{0J-_VY5!:u5bC.d03.>1\NňC49Ro;@$Ke10q#ƈ:Upv3'CwɁ|Wxq (X H9UtTA4̀&8COM8=!B 8P 9d!FxQ $#8pN;1AK=CiT^> @r^ZІ#`D2B2@,#9P d. $0BeC:РZB< a-XOB8OB-VLWBSY% _KF< J~N05> ;F/ yŘYf飍/P9 @o 8M-;@(@?7 ez&F  7Qq@D = ( eCV(8!aϸ[# :f5s0Ȇ;BD!WS,؁a : )&d1AD`@ҵttJSL>(+qp#xPB"8` ZpSBX& D07L :Ё&Sl .Pddg\v2u*aC55HB; lJ0;2iʄҗF)&Ur$g炬ˉlVk :lgLxu} ڄ*$ ^op[ g>1.q`:8& JY2)c×A;dLZVʒnY =2P! [ˢcV& z DX+$ڶ쑣-0*0!{Y!3 n$,D)uni n10$4lTXM+譾nYeFIE~5 wFx!0"= Ƌ 6ֺv`S`vL& ` prh` Sk ȀbQF6By) qO4A@^x;@T> l0ʂSHPGB8 $@ <* )G 7QFY2)1r@ cc,kk("!Emܐ}:2,!;Ixs4#V8t{6_hg 0o6 Q(ao)`BJGhCerg`vs2!`G:slW iȐ^$tW02H!/XXB%tO=j8 Yu&DӅ5JQ|ACA||s ՗df1wr  83gj˕ 1 .~p  "R- bvf]7Xch6w qTM ttxJ Pt  Yk33rtp Djg_=i)` -`iρn7LVtirrd'p,]Q °ho-!'d=]c p/u#Owxǃ#;e ~zwj@0YQL&ASޡ?q#e6 sP9$p C- 1A0%C0| x1'gZ- F*""`Dgӈ0"- -@p~pgPG Q6e P>%Ef@6Q@>aVfslx-\Z8a0rm`#YQdFr8.!~ncUȂ8Txrg0f5YZ[?A$he7QgyZvahIkrvcEm8Yjx q _q_j f|fi_*;_Wqę4֛P/0%Ae ! 9l+ܩ1`6@ae!?sUkA@];@Wi2Id 6(x,ډ鵜rRmC/U>l sX]#J0ԠA $÷% ōlj(ˀ6b5AH ݀@aC6M AVZ @ elj(K (eO\-9Sn/}? k J$~A8 0 ty P 1P4 +#R 2֐@)'coa5)IQ9O A+0@ 48+p")C9U)9-:S ( xcvIg \+KGѣ0 kE"oԮs"!@ m,ծ 1*,PHL)P PQ#`P&j )"@B2ԃŚUM}{c<-r.21k Y ^%u-@ w\!b8Xϩ k\[PObx 7X$;J m MiG.%% a.U;a-@C(p48 ;L0`@&tP' Hh"  @23gBHaę3fH5CU3dxpഹ,&`xв8b5+$N^M8supO|‘c 0p!(ڨ'Yؚ֮0jL#@{v8g4R+WMW#rLnss.DX,EM͊&jT߮p1 ,TswMY ~TR@M$ 4E9f'@!, ;;J<O6"~enB &0T8` ~1c'uSaHe90aTuf8A(%$@d)PL[!,+0$HA1\РÇ;dH"*jq s`#EW53p_xbi0 "$(I6DO=JP]xX4dzG `pH=<;5!h F@1fQM5fa  8C6( v7gD6q]/AMl٠% _(Qb8 {Z,>& (4ƇTqyfĠbܸS`nAXS9v8 &9sjn@,^# {bfZ B!B6CtJc R$14}@rړ!,/<%8C  Ȱ  p(p„*:0ŏ`CR`  % <(&@ 3j"Ucƌő"K& +8`ÂgԒgV+ʅjXs%eg .X0؆p@ uLBDrD 0EfƜ;$A 8h2_ ޣ$"D#;$pbMbԜN&Z6 wL@5=~͐vP l8>@n\P7@S@B9u 0 ` \ G! yYR0Hf#fd㍀}T&D!,/? ࠠ'L0h(@!C   "p C ,pCpe ApA  8ttHX.(40tP ! I 3r*C.>v:aP["\\zC:(wߩk$pe`(Z01 !,?0#*\0@ 0Hŋ `!7RQ$~xrP D Mk!"A0NPX"(pzS! A);\@qF^4  ؄:,XCڪbɚ;3jkf'ٿ4`jF!~a0.X \g{!f`z Ï: "c͘_`LP#̗Zh$j` $t b^QX`^xe_g&LayP@!,A0!t@@*\ȰÇ#JHW#T"#BlIN.L .͚7BM 'PqQdPL4mQQڬW'IRRfp0V`=U#E**nޫVIN`30ɳt}۩V!T56 !,JHR\0(H *E(Kn\ɲ˗ ~D (hjɃ(12C/*] 8$pA2jx;wr'S6]6\5Qb…?r k[Nz(Ҷ+#A&n@Y` H],@# /^ݴ@qCl/n]i f^Ag-(ںNV 8V co/s&R0pM` 4=8@D@6 P/YS@)ڄ %0- % .]ዋQ!I8J\@:ġa"?:7 >@QTPJ% :RxTB@@;:0$@$>@ PP= 96%ځj*6-%]fT_n4T)K'4/D*K8qa 'A1' d ?@,\M ʪ`)h, xݸ#.@#QtAskLCdX/5if Jj (0Qf *?e~I+rC+Xa.Kx** BE- 9@:P@Ռ@j7yx#fz 0kA`ctL7[7 Z HhJ*@g@XFSٛ5}P_mn080wQ@7AaC gzqpBÃD8q[&V$j|k>3p=Y0r薈"A (i@+ Bg4\@ BЎM 樃B4 FF _p@2JP0@PCqJÀ*~b Ok >;\;H @a _5 w`b p4ń9A{J~rSIxn9HY0Pd6A T0=E>fP,haõH%-Hl2ZҁM;IrF5ɏ)d2Ct ^4 ف% Eh#)H ZPt EPWB*l%<@%gٌE0WuDs.VWy7eZB@R0L` (B9D9;b62!rX)Ѓ,hE+ZNJE#INNLTR ҂`+ܨLq2J3K ,9+\Ly)%Ӎ" ~ %4ɂ)j}-٢G@cG$Īl 7( EBu ('RPԂ>PII3 ,iU O+z3<6YHb*BF<`an*@" u $ \9W-cd9`p8,rjf%;Kȕے<84 xBN_6(@y%v*݁:@a$1>4MJ7rf,?@xepP#^\\\;!GԢ t+4D@(-ˈ'\ 觾aZN Ґ9r8<^4dRIG }h"+h٭ ަ@,P )e 2A IA.J4A'`=!†D.ud\AО'd?Q(%ep9ȋ@Csw@Z a4Bpn  H9@5d$eA /e8[d[f2P-izLZiLlV#-@=Y i# s=DO%]2G,fAD7m9?wM\P`GB޵UY#ŀQdxLAG #QZ fzt(`&7+] O,~g%'>!- Rz0DeEe y%?+?(N%y$P/0R#2p,ASI&eMeU#1m0o83ek)CBqZ A`qܓQ 4Ru8`8A;=cRdVe% p0{zq&ɐE Qy}-< A8Q9)۠:~ Q2/0E!'gV#  @vߗ#p<6 G  ` hց{p!k1k*;P.(5Uv ᐬ'3F]5   ef 0E90MF4Ǩ04#<` pscq˘z g<0*x>Цyit)>O3LP rHfA*:81R//.,[t 0@+qv c/ s%Q`g:M0!_-|[M.?E:(xfr ms PMSd59b.qPtr5{MqsDyt'gŚ&)S| 1QrOehT礗h3iu[ 3gP !eG"i3ryk-*l||tfpppp৻I[R~2n!pXճC뱫? KԵ^۵7K{44Q=V[[{J_X8{~jx|RRo$UfõrKg৹{ ~ ӷ;*{^]7[ELA1 K@D2#qqˈA;+f+;5+! mG9 YLr{q!a=w p P]0P8P ~t Dp ] Ik,5t䐥 >s0Kۄ"^2cfm@<E@ PV I7P^K'tamgp8;4Lm.&> & A,Ʃ4Į{p}`3ig`Xܻ[-@ix$0-prD8Q6`UM< YO,W\m6+"(yr֠ ,Ppx `ɘܵN,&0c١|nPŤ\[~A67  01@c Pjd{ P @; t{ȼő>A+09,o04S^+ @ r},87p `iP̓A+f08(bWjL8Bd П&'A8(쵨= &/=VmPիrWf!, DH*\ȰÇ>Hŋ3jȱCIɑؠPpɗ0cʜY1vA \@ϟ@9 0A6w!j14ӧP|QЎ,j$' 貫ٳh/B @۴pMxn˷߿'ut0È_- K K@ 4+Ϡ-f)S ШS/tiX@L5l ogAwq<;ӾWᚷyhہRP7E2<Xn0/w::AN|8P%@UGPQ!P xd$@_$PBf  X |axQA~@RExaNMfd@e,0A pя$ו%dmm Yd` pX^ O.=|i&L9AqRyIl6:{je䝃6*iLNjKyCn%tjmi*'@Tc Aʪ+Ba'`KMcF@H9o`k:8$룶6¾Cy[W}P$@"S , T?ُ t2ā@6"+Xfhf|tRb9ܮTnVtgAxAiY :$8-lƈP6@F/-: RPjmgE d6mXB)jFpHkqڍ)߂nW"`*yO.!c{9[φce0cmq:i.l 7C8h `$#&#@ ȃ ๿NxMl@hآ0@& $<0@1V Cc}É`Bq'D?z ,uΰDAR7 PqrC "@@LP4i΂FpLw DLE -0;skd,l"P@ 731ҼM%թwKd3Suf@c9h?80I@Á,8c`;/H88x@{0@0)>ha@!,?=L\  @8p #JHŋDE!Ə CRAk"SA֔X +sꄨ'H9Ёb }*]Ay.թ@",JRG \ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL <07/X,:`Z/s tH(۲,ȐC0pVKD ~/HX5g̨1C]i< ÄM8paݴQSBfht)!FKє#AVMV:@E*% ?@ p@/cuޡ7(I`&ց ltSXQ3MdHT5 P AUdGr7Mr @ Yy, U!МqҧDC*&*AԐ 8 y.C }`t41@K1D{"qd@8`P+0СE',J [,aL/:c y`&(Yur͵wqRm9pM 1ԥ  <6R܄7'Xqd]Bl ΄uj`d tBdƊm8'V#8ބ{x ^G.yN@pjIO#=i~R砧M1WNH (sԛWK>3a1.CTͮ4Y *,lۻ%@y:-u[ʜuu$7\~_ ydAS{,tb$XLpڬ@ pTIA +|0UJaNx@TqZ1[ vsC0 i0m B$ r0(^ DAtO VF @E `P"8`K̄X@@C t瀀 ZsF8 @pI2K#昒5|tҊA-\N  V KasNz0F @N„AeJTA @CI.Q҃wM  ɣG'SE%H49)^tj^7R!S@bfwiQ:I.`I^cP`-#8!#`d" H8#0bAC(@-R $Gx N Bf-N(`MTk$ApƠFsHL(* Đ"@A/d H$LcEQ0@`USZȎM(&):X ){0;Ei3fЁ,@Ch4,hBDÑ;3#V\*N ,``ՒK^L0Yޢ"X嵉|+lNݒRl/B 仸ۗ3  |%HDC,H~9 ?E!_[-Fa a8SMTXkq{]#5HVaLhAX5xƣ!amKGIYj2E\W2$ "!F%wb/gp? ;"dɀTg̋I:(DȕgfR$8X?xP@Ʈ(SɌs~4jt iMow WBcqPtAzjaq&o^4к֠\&?8`tThO59P!)TLbĢ翼U0{AFŃ(u(  JTVU N wS@(uaSNiQ kֺ֟ `eM!gjYw,gpHB.P,`kM.6S"@|~fN:p97P58@j0ʈ^n6`spH ^]mwa,*!Gv] 6;'p0| `#m,n ky P0^f!.^N#6H"v4H# K9B h7p4 @@ /0V`! pUL|ɯ;#3uj$ c#~T9!)π. .Mt1L7:ۦYt0"EQM:Wx):$lMEy} =(D,@XD(,&!h ְ6`,wQPpm@I p@7md\m') peVm~g(ȇ戔XnjHa7!]!,p=;taH0!00| Ft> F3(͘T 0A8r܄ó˘33Ϟ09mtDҦBu":tX`aLpA`=g9`R"'$L8` KKh x@3g̨f#'>D(& 0<Rȉ&Z[ @`a8y @, u'ܖ0$v΅V eK8 ='`-8H&$;o^+,Jı9($Niڳ9-'"s)+@) 0ïLxp/z ?8 M6L0Ҋ+lbZmaeeQ#  6쒋:<(fAQ@ 5P1ʹI3 uF!Q P$P $@cK (I9?TD%`tt1A بJxpF[,]xsO94Bb ͹_y!`jD@ vP@%amfgH T0ܤ`gUU(X30ڭ+Afdaq ;KlfÂ@!,!,0$HA&t0Ȱ@.8thxj` H 9C:/D|gc@A.G'|tI@A:6XHE@;C$F0!NNEP ۄR>x0` J0B3cYlFNa`2P8#€'\(Bf z@CĄtVh>f{am /8_d)@&n|_T"fC[?ܺ@sv8M A*aFqpZre# `ҏH9V lm(@  N)3Lmaypĵ;p tspj(5P } [l)9w*C4؀@ &e] O?AgF $WsN1ygm`9BɦsA0a@ YjAAngM ꪫ#81!,Jq 2sTIA)v ҝ@]tbP&~J`ٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS=jpӃALRAI>PfK9CTݰ(VQyr).5 2<`mW@.2O1=%R ;B8 <º.10ta>8'q0+A\B8 >, 14; 9/T%C @+@ALcVH1#Հ@ . ,?X{h=K,(P6RDH@@se2D/c ]Uk D\v)4D0^Jwuz"@CI9/AP"RD#P,nBM'vG8J$,ك6 =~C8H-X!:ԮlGx rK!n"H>H22І : LKFcE`IM'"~}r+.՘@ Ȃ|cA.J]qvC} ii4@m)*9x HXH2z<lJ+AĈpep `B!@酠fчT!DML`PW:9Ɨ9`o@V aV ˁ 0p2"S8 d1Nj<7@ 8U{Sl L s8=sC.E9LF!A+fx(*$^<^ p S'@f&Ap BJS S\9 HۈrnP(園l Tb:2uaiG(Z67:4OcqE d0$:@@=ـ0xxUElB f42HXi" $GA#51-ypLA [.!֡V SrD)㹔i@XxАlN -HLRıLcw DM@ 9Ĥ ;4!Z@ud2Ȇ|@I"RV: D NK`$kjQ,L\htL;`FΪh*/&$>8Ajd/Ut&m*!"L%L`|x@kA:jV2cBFD5!H@ \I>?2UV.}VPn%;h?'Ż鄶!2͊4 N| $4 4|<=ZOӴvDHW[}*C쐔8` 񣽴(QkB !dfIb|A,6t#6T"XkͦfEw4uz;|60-_re OH.hjF|ϚnYi**%BfrЎ*7GZHK,!P`bx"(@-%Ӥ|ɘoTf|00q8lEsO8SsewTću,"R3 !&HÐ_؝`P6 `+KȽv?UDlJظIFr?nX@ [JJ䥴\$"$]G85c: vܱ%YPH KQY0\3t/|^3YR!`>A2 Ɩn&q@0Lq+<d 0@s$ vq&@pv^&"7 /KÀaR6 \CoCn;~w+Sؔ[4([&``c"($܀5v+"P0C` BT ZU R@;(P p&j340L^+ Q֐HFԈ-Hz`Yr-0 kDH!%P$-|UPxp-P;= zv;Ha=0I  $$0'mr]7p*I5yUqCla["2A-R %!C0Y a7P3$2iI!5Apj% %/@F /C6\nB@P (PAH/_͹5L]iu-NaqUyj=1!:qA-G #,z[F. [1kt(qyS5(ڣt7k< MHk6ғ :IZgMZB%Q'PGڥLjjmDڐ^Q__CC iڦƥ|vo.0̸Qei0_᧎*"wl"#<Z?!!awNBpPa~%]oUQ{ pOC021W6i]aMvn9POҢղH߀'VT; !oC s=aHG A֒pn*.B )0|Px(` Ʈ<ѝ0EC\@ q6I7 xYpw,WSPǓ21a:0'(xKR `Wq*{9ia-C! I{ArQ5Z BôA>O[Z=E Ps+5¶aB"6U*1W˕ ,[(r,7 sM7aK L `0[-nI7Iڹ|l&gZo7^H!`bBf>!p"Cs2 ͙ؠtI+ɀ A&6N &Mbfl0{34|/S`뺤ࠉϲ'J`XZC*4-sh22PZaÄ11ҕ, [DJ,!6 A!PqvC yH" #֔16!n!(jHD^Ļ'BAthg!`CSi gk." qj`'FP i$r:6ǡTkd*rŲɎŚa`f\V/Hd1 Li&`hm˾\-˶D/%t*-G11Qb$V(!@fr`qwid/%AΛÜ]+33 V #`sj0,ϕL̿,!Uk,FT%{<6=j/]Q#=Уq2A4;p@8-7kJ)21Qda#3Y$d --X!A( &zrmr R ھ^p.P 0`v H Uy6v@ @pMpp]w}<(@2(cDbDH Hڐ" eC ,f1o+pxp`|pFx|0q`ipC0r44& P` kp 0 Fep @1jpqt}}ڏ}%=Fzd,s0hH? -@QI`Y8/a KepMv@Va @1L% ǶL`  p-P[KPjA I 71q9 p<81 ,s(JBd %b.W@ P%30{*%T [ (| k3 #D B-SsHBt }Ӊ% PBD6n f |PWy~A2MP0`J@ lj ͙npPmnaP<` ŊgFnFs, Fhk"WOP !Įޥ#e/"eR2Ce=7q`KM&Kf*+1X #!0 IjP^ڡ+%Ag#`59Qg6B9b ΑaC*p K(Z_aR Uڇ?HNS ,a N?%;QR_Hs7㦿{_kܳ_jlfb!, 8H' \ȰÇ#JHŋ3"`p|Hɓ(SX`୕0cʜI͛8sɳϟ@i.zAH* aӧPS֋J*ϏXP׃U@]p[eTV4:6($2ȭ|f8N q~)*` EL ꋂv`QZ_!08@--mN"_μs⍅Vzʸd0!^:!ځY_8KbV!u cCy fA01(O-'z^r|'^xPz<h{xw^@' "砅D A &"DCw(J#?HS$Zjތ1"d!B?ڸ#V I$[j$GJ9Ay!B:eofRA߁rzec*颟7襚g:ylh{Fi$W~$&-#`*iY~*ꨅJ@e)|j*!]*Nz(*b,#ٚj(3ȪþŞ邴6믱F,ۦ)Hfjd.nzb~1z;ҒxN9 mP"Zl‹jq: j#kqXrȐ,.R5%*k0_+̕Ԅ\M5l3GY]I{U %GA XU4]\wF!,.*H*\ȰÇ#Ja!ZxQǏ C3:Pp .tI͛8#. N޼4ѣHGT(4ӧPJJիXjʵׯ`ÊKQ̪]⃞lܻHeGߑـ )˸"$>Ŧ; C'8qS9lZMEE†3A6;a:0xǏgȀkeϮ Z`t_/hƌ_QMoU6 y|˟ *RP ~V \'EA'A| <f@plj(y+7+@7YGP.`v_G Ԕ ``M8P- F'QС@"P# db):\e/&dzϱ^Dd=AMX'y&~FSG Q K&b i=Bc iL|%` ^&A a1 $d~i%&fy)Г4-P&@ )@p!f 0LD] V@ %UY ,6dӿp )D,0#\rr# 3 ܰ('000W 5 **pC%"C ' B}N2Wew/K2p2p A$;-;9L<"lCC @O`8ofOJ;/@#p8B6.Qnc- q؆8v0uwH8j CMs8{+@ z# )h`2( DqӐHD2` >1, :G h@-֡|` <~@h5| pE@/\ {@p9!E@q+U( >` j (0{X"D6,x ,+e+!,;QK3D3qp]#A A*q(*pf`eN(+XP6‖KF D(~DU !h+Ա4"y`F2"u W"D $xH5V1x " D!E ahH_35IEE䌱&řt?q (9tpxhB%)3X.d섄=ޙ&c 9"Q=B& C9 YB` ! (NЈ|c=#x.`XqH&ҠC hZkhh^=d#/1 Hm юvø 3(F >R DHg%8 $(g "/8@@k#,BF $)`aƄrV%ȹ('^@c3/)^.># DiH@d`-Zg\+Po h8e脐 OpmF9 "`]6W$](GA)~|!H|鉐ao0Fh"P@&P f[,u]r0@& 2(E2a~oP pD  Ŏy #< 3q)0BH-p|#6 [4`A (0x"X8b+$+؅;,сd /M !``NXs M<9 =g` X;A \E|a P q (`Pn>0&mm4a MW4#8@F*=Qq18hQr`jP:t 9.PxJl0!9#ޑ@ X}0휈xpw@pqC7tph` (G9,q>Ӻ5ob&1$$P9!*zpP f4s,L<\ w8 0o&C70p#PFpv%pP%D-3p!oss `p {-C1q% 04N{0v|D%/6ˡ01!2'!"?1.N"MT {.'C ܀1.1bEs!{ 0`=W0@ FuTa, !nm fn(9U^p 9@ H,AH{HF^24!B1-$aEGX !'wֵOQxƈʸΘ(ш!,<#H` \ P:H(E2t'pǏX8dɗ(!A38՘QÓ'L*!@ B4ӧN𠨈'()ԧ@, Kr `P'{[O],aBxN8q ybٷoމ;_'\nݎ AZ&ϒ&KQRy ~b(PB,@Ha\΁ BC+D5TG*F W{v,j+\ @aHdsЂZ)P8t7~p90@3/Iaq A8p710'(_zBP8e F` S>@[E6JME$*g4W@6$N@_ }T 9u>$Ƃ A@|@4 ܀SKq:<1PGɅg̦渃h,6tsA<vVh7$1b1Z PXK橣@6rc3PU{8F^ h0cԣyAA&0H98\8p0яgXC \޿H)瀊AeQo f 6ͷHc^pG  ` 7Ā)=!{# /8@"<s#-P"J Fp9 t~) 1 `6:6|{Gi0 0 uHPtSbVb_  !fhPgEW 'P`[ P zOGs ~ q'ftg )`h4 . fAx7"![dfP=Y@TL0d1 )Op`t fL q0 /EtD phcPBI`M Ćn@(͐`@?  0:/4<| 8ip  Q5~)rn;3`D 2V@O" 2$ ."p$%E 0R A  InF<H` W3 iR pW@ kB=FcR05"a 2 ۈ Mupa1@O`c O'!P@U4E`E 8ȉ8NA}ICֱcq%4#@Kh }'"Ґ6p/'CK)pEP@2u(p @-p/ 8P2[ wc]$  7p` 1"p7 rt$s֠ ,Pd ia).#P2= P2I47K@6yPMRNQR4AN p &p!i*p)硕 D Ȗ^ !4$ 033*cP6PMO _sΐE#w-/AjR70N7 1P"@@ =ha05`@ ` .T АEAJs aP#0@ IClp٣R_ L? q$yjsv!(@.oIo v)`X>y)kz*z#%=9N` Z . {6t pS:Pc!0$@KD1@ $!Ygتz^f$]a6O@^x9 T~/KMr1ib}v p6D1Gr(&P umvM|`~Q%"0D[՛!S|0zP)#+JQM"PLfW&`wǕ]q6X ]/=wBd (ͦR6܅(c2:[%Rեqg'S P!X~Ubp(q7#1)!q 9P-%`" Q3$q'K,$.d }o*`u Rs!<8 8WӢ`JU΂5 ;@J-N!-qJ?)rx6-@W T @!Y#7V%)<+5-!,!,PH*\ȰÇ  @@ċ3jȱǏ'VIɓ(S*8Q˗0ct̛8s<Ο@`УHBD@ӧP bUj*D `ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M8q.-:yPx80P9:H h*rp->}?xN%VaB#`pIL(]uf!fbDM0np|!ADvމ+hr Xo;z(@#ء,gPE@ 䢈cuAA -9xVw%5 pzqXK `j!Ggĩqh%b/3%樨0&An@S-=pMpAh]n)b1@`#LAA6ͷ@Q$*a 4AnO4 evpFpdnH&6-ˑ]0Q @;N;8"8s7}Mюss:YHq!r@ l,М@́u8 %U"|``58 8`BЋs8h3,U=aqAzԳh/$X3,, ~p nhf0`؃8@G& -xEX(x a8\Gc H 2E`6Etwk`*Hp*$W1!AeHlɁw0&1@@DhV 8"MXQp1fM 5">kP>A.: : l : <@\ 4uxARsSC\ rVRh DE DdaLWBԣ ,hbvgd\#9 xC/5ʍ G4%p ?eg ЀcaO^Dt cu,3S٣gnCpA#2HP FV >i>p'f.Zql߻6$LS s5 h8i%X$ģV`nx "`0bH:I 6N7 ݔ1\8oE@wBd!qC#27?ᰄT@R dn*F12k\0uEN=H(XFuxԃ@x10l`/\PpXq $@[k8 "0rd )^7D耬, ` q,`hG;2~cL<+1q qB9 cp@hA @xa:IDi !)ЀGuwuw$[ @`58@1 @7r|PJ E ȁ  ` | 0E @` } A41>."`g{ lʞp`#eD' 'h1E ൭ |;4[ :8wsࡸO4HV N3 /1s000'^z=pd@Txs ޱ_VxP^zl/L! 8s 1BR[8f  q0EF  a+`gjwj!K3d.xa ą@8&q@kPp 1`6!fB]cuf8N oEIQ z{ݠ.@F4ߠ` gpc%ee0(b i!9 'Upe#B1:5y(X  _ Hn>@E.`Ynn3aQ#wt!t+6" -n 8hv p7%!Ѹ*27f. 2xT0l>!@7ŘXi#u:E'MS$ !405%FS&br4kyR`pt;s&6"p&?"_7.&? IYH 376sD8+2x́f#_!Bqw܀6S 0{."Ax䌇WuBO%jx 0g40@ 34K,vB1cn {ɒs9p2ҘYTICї!kCi1 ah0~ Q&)A9񉱹ƉȜ!ќA-!,<H*\ȰÇ#J3jȱG!@Ǔ(S\%xH 81tϟ@!0ŀ&<Q3jj0iЫX pp1kC 4hB9۶U'x{+݂1@p!6q½˸%O@DI'Q+]KȐq9΋A"`E' 2a$ p3yg=[@of&(䏑x6d IF;H栒K$%qb!Kz 4 )26ƜO4@PD@| uQ AC0D/>@$5uGbdW%0Pe+uh3RH> X!X#BLXbM nݼ/\< tbpȽA!N=;M('HPy9  8R-?hRe LdPs$mFpTQIƅfAj!,@y0a€8XȰ&tHAAbƍ0 ! !#u8ld!  H (g.I0Q1Ҟ-sҨtZB\M!c9!,!PH 0`,`tPǏ vI%Pą'bEDH`@ !sɳϟ@ 7ϝ@~3j~8Ɇ&j@A&Q\e̙Xַpʝ+0QiA>u"xJ mэK\tr.\@hA1Mn PS@` >x`A dQg>%R f @Nz¬O8FP OXk`s~—9aMFnLUz(vq7wQk~t1P@~O $2p@@n}^!D?5 ۉxsـ!&-dUD҂{)Xɇ@# (06 @|u7,LI#PTB:Py @ mĒAfM1TP+뀺8RQ<$@I&\dMAYpA,W+H0K D@V#;`@y-8jT<8)4,A-bDR- L0UkbKEF)8oA%(YNwd§ $p\!o kBweG2rixkkElm tB 0[YZfLeX/#-sedd dC PQNݥońA,`AQ$\ .Y /?BF6PLAbB X*0U_h DSH`A#F.5 ҰVAF&$?.\ֹy!>]G$:d BEp"' 0<&m'آc`bx"w]'S,D40B pˈBwm\_GRH#&3?s" wD3LJ^~8@ f\ "M2?Ra zrY` LrQ>3ya9#PX4mlKEB3-ȃɈ m({ċI8b".'eT,P iJjx2T+#ؙ5PY F Tm8_biATT(2 8=d5D9,qp@ "KZ;u9ւ,`-့Zן\Ҝ"cւ6a#5 ?*v A"SB0VFFh|[_XJZjbY#“@0 (K_Gs $ޓ8pǝqE*)h5m h@ Kݏ  m pb 9l mxr@(Qm9[-T%v_H)G9l#%'xL`Lzi҄ MC$vICI/mj?9՝B YDߊ Cih A/21DZ1D}T$%  eL>%8:պ@N'L`R 63(ҺwiQPV&"`>8 {`Lt7a $8W`q,m@~#% Ud7H%rX&"渄BԬ8 Tp^R1 1}PuXgiBKaXj|#R`Vx]źVq|4xiX+fN;I\"Ap@`#@ӬH Hw>z4?@bRӦE]lm,IgN<ׯ; @f{v G%X 4Sa0]YYS rE&1"~ ;!-bS0g=PAqG8L7zs7YFP2)Y1@rז>%4 )wΐ\<@`1<MlT &d_AW!abYt &&E e0AW jC:YN3 &Ph"`r@,߄o1]ɀ AY0‹PYp)lP4P)Tg,51P"3W18x%tQ1 m`B3S/@%D*P18"V7,҂.YYq)08| pM`Cp_2 x_)")Av8GLBb{8 {X0&s:%PpP0!=4oN{3q1ųZpmdLF\<ᓗgfx&&D`1JEI؁J( quRdJd yoX$Eztf1{x99r'hC"6ayWA#PC2\c' '.qA|V)AqH!i.aefgiqVӑu IP)joaypyfaF6dmffjPITjFyf@S.AlNt9CM91,9TV`y):ɝS`1!P?9GIH`P#63[%Ko&?ARm#bq q` pyJ $ɠ `ơԞ]z ҡ!:[ڞ&ډ&:󢬃Iyrv+ڣYAC>ıJm`rQjXahamCf}fA)?& hJYjX:i#16 *Wz q B~p-=o3Ne ٤Zp`: j2 jZ&?̺jKdAti&bJú$8Ǩ ' aI;P$%* Nm_:aSđ )\ \qCC=dܳi1%{`/:U`H{z:q)0,qf' Z) p*,d:-  S+je^T?Yсp2ZT#f:jp&[*0eq?)B@ [ dKB@KCY\vXr K+0*q up,m*@Rr0; Q &pAkZ@ p |ʑ~qˀ  B@ Y@IA  . K/)sc@P,#\#0 8s~40ǀt.i_cjr 0v ,8@8a*/i&Kp =6p/P` aPD.Wr/p 4;8^? W 1  i/PP 0"@U4p Tzp r;a a {@)`%=M .:{ i0>8P!8*tY4IE&3,!Z  Z &\2 KD Pȝgn` P_`Qb 0@ͷp ZaJ[ <& PQ%Y.G@ w#z`sFڹ@ %Pm:U;D$#u3(V,-$oa>;WDC@E'0E+n$|2Z'B-ǀ$  # !UyT 408p4XU'caN k4"B@V>. -P!Vgp㺹oI{p1` )V"1 (b|2tg)  ~#P:3 '% ]` 2 ,P p LB|,:HSaڨYa-%&MP?*B p`N!`=$ |A zˍp 5P /gpRՉF4!06 QM`*_!*8,z$!'d;Cܳm@wyR/o)ᇼ',P#4x{=b tbq P_]A-pP` 6fa.U P6A+TT,^"b"A)& ,z%;& 7p` +&PDQ:-7'Z0)Pd`ޓhRP%}$Rpb) 0p2n 0*@g)=R nD480#` `$n_ ];WfD< A@qaخ-=ZPlc20>C -@1?@ O>3 bj S/yF-\]:f `P)_Б`Y@Tp K{ȷ1!p. 8wQ0pc:' ?!<QaDd 6 ֝S枵Q7c!brvwqqrؽ z AA99@=,X:HR8Vdžfsm /S9,k@B{rGwsn "DpA "D [ Z:x @ #ylg8c„(9qvnhFthjEZ5j>x0K1`7uH8`UT> Ԇ dpg%,e7c@ A?.08}S0De @tȐ|h@@ . f` 0耏r ch6 H!:Ю2A(a `X n <0m >`Bܘ8C 94V#LZ(M7&p3 g r. $t%3 F A!vXRфnв|P@ 6 Xq T'CGr "@>Xgrx$,MD3@`S>h\ @8kHD$J)cԲ 0U#L5̄7^y\Łp7_21շ_@ vy*7a_eM--wXāجc?v( IzdWk $d"T{ffblFcC+t8ive㌺3jl2ߩu:xaF;5NU6m^{-nN- !,@ILp *\ȰÇ#JHŋ/NQCIɓ \ɲ˗0I͛-ɳχ |ѣ(;XӧP#>իaEJtU^Yؠpٷp/fX ˰)3HQ |+~Ў,KN !  Y/LzE^ͺ뚪U4(7g0a5A‘+L1TwK94Al:vr:|ӫ_5ԋ{}D ƈ?Di$. G z} 64!Zxa:z~a"BHb!mdcƢBYW_i(p}PaR>*A$0A0t +A=t`H=@Iԛx* M\@#B%|P<g/&K]fP*8A,0\8 j<<7Rr(CTO( BQ`p5 =Bc3m|b >:8P:P$ &pBBij;NfYٸ;5kл+q%V)nkt^^ _qw[|1vñul[tȯ +Lq(v&O s̭i܌3_,8< `2İK4_-d0$G63u\,=ug_ŖAl=ç6 wU* Bkl<7T 8 m~:B Fd:!,2x" 9H*\ȰÇ#Jt'ŋ36AǏ C|ȓ(S\ɲ˗0c\9a̛3;숳'@I͢H?t) /8H UKjhiV5wX#j˽'S @ODP5}pmv 0)h==DaCfnZ58P#|CG vpVW{)')H?d @@"pH,@ O) ;uG#* .h ,Xc%t=IJ`B 5)U@amhّY!RWlyX`dIvr9\1uQGzQW@@!, #8*@o@]‡*pI0pA#N3D AȗY` ΄1x(1-:Gҧ{M5;,0ׯ`ÊKٳh\-DUj9wB.9#0ghN gn >R ȦH6!w R V@  Wpv֝Rv[0O 0!@ƍw xd@SDnXBBV7DCM t& t7Y#]7Bjh' 8$fqGwX7BKⷢ@-txG}םB?N@'YMXbBObFA#@ވA"P)Č@8AFX4\y`jP .( P5xA ᇣ@;>$L!,LࠠA pÇ#JHŊ#Fwɓ(SF$@Aǂa:L͛8YLAJJhx H:WpѫXonAeK3hէ}zW݂ 6O ,p5̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ N&AsKNu9r" gP` ɴ Ad1vkC TLz#~SPtD@8rI4N?b q\%\Eu0 ? '?MZ%pA,7arЕ""AArp^p.v" Jajq`F.~%e )l٥rǝM0:2'+Pp坈1@"x#`8pātY 8@ ,0g tPB%p:gu]Dʡ\x hP@!,@|8 B Ł< D 08Ш#^\)΋r3K6800_*)́MG v3E, lAXaArhMy2 !, </0yS\耰b.( V-*"`  lh`D"cFfਉ3dILh&8PH-ZRg<գId@Z״aǶ5ZqٶEZ{"Woٷx*F y2b\y._k1 gpMYaUcw*U*cرKN)ϩ"8aL !,%PH `C  (@x D&@Ä(S\rHqGohɳϟ@ M9O`;|l7iybx9 XNH9@Ƣ`pʝ;d!P,t0o"("n8tTu` t F(@T_ : ɰqӨS'ȁCm&@(b  A5-$<-M;xA )F@<4HË˰@#8mF D/n$`B5K&9,Umc9J4( 'z{”e!80N#]`6|@0P -(&rT[&Gt=A ė75 谝͸"{MZ 'O%/N r<.tO?;8St3d'@4pÏ98c $ r:@/( W @o%gS8M C p =d x!D ?H BA@kPĎ=Xd ԃ-D & (0"P)p81@{J^' M쏹1oe3Jd+"P 1,Ȭ~C.kA4\A3R3j hj 쫬fLR_TA g82Q9(  L71J!_Ul1bR!R'V$&GXƘʸ2U`H~!fX(a4uڸz`kȍbAXE6iÈV#@X% qYXA)#!fLOi/UAdOh2Up\QE)o+Brw.d]X;AaD%"Py8  ;1`aEi  Wjqp @V=CXpbj~ PdA agFtnnXŒ=YcA R/"~HgA'C)0}c1#H@1t Ps0~ْ` r]6=? 1Y a 0aD0 XY VIY:@G8p#>4POYad@R^z2ET!nq"<ydĝہ! +(Pa  1b2U .p E)e)W沓1"EŌ n2Ht2ぜU" e1( N1l i704vp)IHt`pQ-Ng.(2B#N)[DPcdآX!:2qO(t"Oc4ug3fH vtCfTWA1xW/ ZBrr؞ƭ͡Srª1d,":n[a5X%AHi3VarFhVEn`q q03h2"K,ثg"uf`_K"_{\4)M+pp0pEQ7K fz"夭Z['3)uT+K23i`EZ:+VdOE/9!QoZYڭU&ն M_a:^qaeۯ(R#sUVo N]p&k= 7;fC3) OEL a9po$ GSA'9i5 &xfc"OFz?]_+APl@*u1>gjn>Qn싒 ?T%S/Y 4@MP`j 0PDp F`wQ[b#I^G6@7AZvʹ 1C^ ;{{*` B A@r*/@|08PopRi>AжqvGb*RMT2I mAL" BM` 7G`9`[ {Np*  @Pi{Ƃ  pKw 2@p 8W  Bz F`M[ 0!`$) )jF3 aU ŀnqƑ *<x|vq5i' @YSeT@Pj&'ob36$H#F$a@ )Ǿ! ʓ2|P":u@Qz1jꜳf}p\h ,*tA_C}=-i$` ]Pxc1`.G̒.010C5JVE$q  ` ()'+00NxP.M 3C ^hc`30u B`#C,M]Fʫ-f=* wxux]#e\DQ/`̀@M8 Pw`/`@2)@  1@eנZ!atYq023aX1i&̘M\cp\A+[B!"+l%p PP T0D I NpCNSG^VYE^T"y@G%F2˱F~4\PrbLiBZB0ߦ0~gq́x>Kxdz^Q{f_kcMC$F d 8kk`OrҊ܋4S^xbYR߸aTWUĨ6s!,2 99HA5xC„$Ł.j';61B#e!,2  9H Aw* !,!,!,!,!,0P  8 C2j 3NpF#H`I &j|ĉ7n4EHaF&hhB5ujL@ A8@ H0)"!@ЀVPQ\ jzƆ 7L`x܆.H0h1[v9hoKF0ͷIk7֥DB= m[UYsMATm2v8@·Hu} @] LpbUe<EكBhRqe4T'urtQx҆ h3 )8;UC-H9t4$XUU 0Q7@"<&V=`ZP@xSTA]'[Mu㟀ι%]%tࠆH2Pj%0Ul.U P"Bn(Ag=wR6y(K9IN]KF"HÃG` ӓe`@!ȹG[N ",n%*o!A B 0Y EjeE cI``@Fào$@X8H8<  V$`5̤ ҽK8P=鐡:3M: ]FB dc!yx<AY1`#rՁ@Us`ԕ ڪ@pTCIp(%A`ἐ4+F++88`F,+k' Fq'>Q?'X I-$4(Q>B%NF jd68 8d@PF$ ,d+pVT3V`VN0h4h+Pa;8CFW*Т0 5'@b ǠFJb Q,<WK@*}I0 4D "WcAX ܔ)$ =ԂNd`6njt@9Bct yE;byA a  GHH L "+`0OD=:lp FVx$JYc*1#xYu/<p.4:#FF=%J$9*wOj9X" |@#H1~]8@6`<h&m 4̦mG^r@rƏ "0M:/G*2j5 u+T0PJ_m cqq1ؒw22$Lfd,d6%544=@+v6J+3 N[9%Y:) 2% XKpaqHP.^P^9 }*7,Cۥx n>x.J5vuKƖm?: !Ն§V;b3 o Jaȵ)te~0] Q1Fa m}oVF4Hl rQp`AFj@a>F<88'8k `^%e H@a<`6 0DoRn0+f@b)&#CQ~y^4lkWpp d"vɴ|BQ^X7.XN֤t&" %"dr' TM$a ZL݄ ^֏ HݘXR $mو-qZ r'(DkC5`褸eVDbef?"hWA0(+UL&$ J(C" 6L))CHWF,A:5p-6@> @QF#4Uev 4+)nd*Xp@+R!@ /Q+i"XXu2eWe!mZa^,Aa&p)7B@$26!8xwy"Y#tG5aV~ִa~Ar1; @Y32b~N5$1CEVbQ0Ob9tSY!C (#5Aj*"p*NSX{]8/@=1ah'Qva2`  |(A Bf!+ !qB)f$a#lna-t'^1V-1;k$lX>)E&k Y@!H*:W)aP'I qe5AA/ `+"U!*H!p5ՒPds(Q)')’69*X*`BcB2DvHB$ 7H7v%ɌꈐVA;B"  [*  !Fsy#zCi1{I}nV↏1Za!9R˜r$2yQig}xt%s&!BTRa#xN)D.Bs^ %W9AM R P;c1=69R :#u%i \|_b)h/@F8n &6NP&alY*IyY02fqB1P)apD:MT'e9~e*cI UfN=Si5!a1a4̩B#6"#upd *ҡcS)P:b#C8 9Qa 6N p A*ewRr?r#%e7*{ʏH=02 (yK6&,A TbAA[T# !' pD!=csGP?1#' ' p @TjW R[2ђ,f#?0`aP}:VjI b" !$%9(" `y=QՆ"?r:eЭq  &D25"HSYR6QaKgUƠ!6:1\` PP/&Ӡ;\k*2~ VMൺK Q_aq\2+K|7KKݚ%u$p q&la! SU$C#'DR2@) 0pQ;oE1%8PRgLpJ` p,#,<CU0lKK)H1 ]: -0bC~^6# Vpc< 0"/?{8 #ڇDp/Z Ͱ QSP )s|NPQ4 -`1'KV,Լc';y&ɢ "`?< .[ AK0B 2b)Za28,-dPmPT`Ǹ-L4B! F '+pROOԺ `8PU)5Z^ue)0a*-å4M' ]_l6 54P- Ӆu#_"(6bP 8<^|m f   Mv-b:=SU$!r6Qi{ŅbЀH1,w/"bւ> !:RBp|Ġ_{0s#By = b~Y-ި޻piS;tn[q?Hc4: ")4w ERQؠt{@ #@@5%)/B>=ƺePGR ISGZ#'P 0m±?eYO9)Arn$% Yl{` 9u4]jy7(Y. k!~9>0>JB X7"`-9ސSnΗe#;Y`))/,OM $ob M_]"!:4P bl-d 1,ƹ*o('r/lk~ @uO/R'.~/RgII7k洹&/7swn b+AF(zb@DKI7Q4Bik4b颿Ta!ͰZ9:NFv# <ٟ:eQ[027|/=W'PpAP^  &x tp=~  H0pA5KTJ`0!Q :aBWjVT /nxe.@ ^^råÒ*20@PvŀIWA,8@ "j:0,Qg ;y"W!fڵ(T 07Ƕ^Ɗ\G q`CWOCs`jبp#7~?b~JM󈂎8rR(d$9#m@%āyi*J:Jǁ::,Fiddq`^Yg M<"ecB1Ļ Rd@`PFJG"ρTpGh;H%qݑH}TRHy  };ӣJ`ALC:<cQ%*<#Jx(0 "jpPɁ3^U *Ԫ]'b= $hw; [GShuD]qlԥ(z'*_u_hZ 1uxq+'&'΂ \#۸H_d;vr1ʤE(!h@J= TnV^nȭr6fŅV17 bv "p'M.!@\C%fU!ؑaHK_SIQPx IGą60@9 yV:#FlV D#?@"0h#RI;29.1Tt%FZ{g[k&H&p.IDG<)@$ʎT!~# q8;ʑ "XHsr*) Gq -6$qT|P>5Ԍ q TdwɏD+QV8 GJx#pH LR>̃ )+1rLuz IP,)d2`"r[kֺ1C~eK@Y䠄-HJQ$Sy@L!eYJ&H IAv!W2B66Gh#EYg$ЎLs q* Ƕ(ѭDj @,u~ћ,/ [V.P*T`%*I^̻NA6̯X+a vҖ%)<'|_z+p2#-m&d8$*qQ[DK&xDb`Dሷ8?]<Pip^\@ˮ; +.`"x8Z9E$8?)  1C%=c]IZ J⊗07n+\:˚3ècɽtzK "5#Hpll%g! H)M٤ϴ]h@P52m j Hc @(XqgG C-o5-O,FzԸʨULR--bG۲4X'tG Q2"6I0mL'#i )X^oQn0x) `{P*.aȽ=#'Ɍ,nZPxOUd1fW,m?$E 1XHex$f }vJ.vX%BDˢ; +W8"pHE.!󆺥*X^L3~~".Hk/t1C`DS)`pWy32H%K_ N^!XD?,g^5 `X{x:@6 9Ɋ[-xEk h yH 8<ڈXD px Еeq )x/ZĠyy A-ϋIQ P60ßp3Hpy )= d:xK@8=ry Xbz #!@Xv((O2 Iuv(q=(C3CX;vS"+S:arsj h(vpm<^hqIs8\S8pC9j4qsw00`zF@ƲXtVpd!|Њ y*X/,H)pnps 8ItJ\_ J]3Xht(x X2Rh,-QH瑌i38Xaz#\qXVy{Ep er@,n;%2@q(<&W8 s))0EKe>g8%ptK!Fȇ0)kQ i <r^`qu]K;5v32xrpX[Rx [>0  0e؅H 0#<) h֥P1YYNʰX5y(uP3p `.p}(0 \Y+p(1@hX _Hr yu@ۗH x;mfp0P;q"7Rr`FPh( h (=Qp| *0adn!SZya%_Xq 2`@|=2NN6rNL5rfxyI 1pVTE/zHgppчRJ(hleߐ`>.3|6JYZ9 ,x1o0IOrPo)Svl5 "EVIP/f*Kvwh<pl f`VF&YpuHNhh ɠv&TUЄubPj(Y{ڃ LbVEN,մV}pxX斈z]+>;nubx)MrpTN >'.Y^34hN-h15XshYZTX $38/&(@3뚗В 2Ƹ bj^hxqZsͰdj `*BPL*x;؀ȋI+,0yՈ g th2o}t6M۴ r Z/ hh9~ڧxWq !) :iѸʊCi`@0 !қ,h ]:J/`X}_5isX(31QXʀPO&`{W|3. ꈲ,9ǘqAe[{D,ٝGH08Կ  ?C0Bڃ? "z ~G 7{g}+~hpO}d~g !,(LH`JHE\ȱǏ CA< F\ɲ˗0cAMdG@G7 J8-"]:p 9 b j5!v %;8(!}c- k͐W<堞pNxXF$p0ł`AѨS^ͺװc˞M۸sͻ Nȓ+_μУKNسvݸ98;`:+ ѽ+ P۞غjyYRX}=@ HAiA[P4`@_|n9DA taǎboب@ME?<֣@e6p`e|Ԙ j961h d9(Kuךp4 "|'Gx%zVf)&&aAAs:Z S!P0fT~fI@n jbH@`@*!C3Y%A-.8L a,AbN>`=9w"|^F6[]Ozi_-`ځ č -11 |@ )-1BWҙ%`f!$u04[فj:Rytp-4WCp_ i- Qu^9@ 9?-V Nɱ]T@@IQD[)F'Q;ݭbhe94%%@z7cu;8`FjEL9i`iC.jAywjWLAU:q ÛKcE 6AC#(@mL){!\՘ ycɋJFK HޅLkPC 3 Fa8xB*WТJA:@LK#l]R j8 )Ȓ) T lAV$p&zf)N'ZA:  BIDԄ:X8~@0.M/ W*r@` (HqDq@2I|*+JH(vL}Hb1$'K 9=I N x) t` 1@D #11@NR F8 ؀ԩ̐I<8hGN!9ep;)ys L %]#YtLhT" &,IRNC&,D !qtJ9Tl/# nGA^ܥ@ Уw\E?5t(RQD#A]Kb L aN$&IӔC Y@Jb%K+M -8 v [H0X#0@xRU< _y@Z  l YXZxDT <6@VbdPL=Y\ 'M(:x bqyb#7Qu6Kn&:$j6"` \f^䅩.Sjs@`Fp"X <H@ X0 Җ`\ HЪ$<0Zq-9P^{ " U=Jr%f\ݭ`!A ԬfE2fh'%RO.H@!,@e8*\ȰÇ#JXp CIɓ(SlUʜyҔB o8IO\H8gBv~*U-!„ JUJ]b* SÒ, سS*쁶DpKܺxiB"A!wf<À KV8!؇!,`<H*\ȰÇ#J3jȱǏ 92ɓ(SDq˗0cHfM58s4 >x0ѣ8pa @:(XT(Q`ÊE)TTX͚u+͖KjP脑l,9PÈWZiZ_u{&~M̹" x` @QK<`;w2LCj.'nY͚Bilԉ!ÉF]B$NwQh@;w&!cb%wibCCAș5t8'@ (4tGq}fX@BO 46G0a p?$2pbR(RH1\<05Z9;sO<54;=$`@՜PB )]AP)d )[vzH)ĕA L(i:M6 ǓM:dRz_Aq%P+VP:!,-E2p6*D(:Kp[P Ǐ Cr!2!J !,-<H L0Ȱ !:x"E3f` 5 ሄCq" 2ȑj(v0`Fp"*qČn$Jt$E 0 -E!\5O5. R!˘9w qEdjĸ3NS8B\ 0@`7[61sbkfŊE m סkhڵרWk% kZ,E8jTdp *uKA|B ,=}abj r!,"ݻ7nU!rq#LgE$@ \|`m,xR҇ ">adI(P6!,><8` `B*tċ;L8Gj̨I2$xĀ#0aAreK1sLcΘ;+.L`cϜqd"`S1́jb}G+Lb< %̲[KqExABzRY 44!w3 9*):(hg  M Yd5;л bx  !,!,aP0 p` 'Hd(@Ë!"d8⃍14bEbbXa .,H!Q2…x QbŝXs"Dp ra'Q(A[45/JEAѢ]̸ǐ#?v8q&CW<gyatq>|8à etiX9QA@ ?\B<7DcP2"p F,\u`@!rk6 }>`a8dh.Qf Ta1ŘaVJ|: @[cK I&/|bf AFD8y8 RMфF-L@0b0č/^&C T@0 ^F@8UB* _6AYivJtA B "%plt#70A$O$|@5gd@P  ݃ T#788}hߛ Yd^0K7(P -HOUѕI@(&Q=x f@"@g]h.C `.5DdP E)H0pT VЋ$x(7)Ȁ4@ QTM3,90n-s=8|>y`C803{ʐ*9bZ9 1-V<덛Qdp@C .u[PE r27%+BI 7Fm80 P@ m2t-9Ax9c3_i3,J[4"<U$2Fd0 CEa? \3O6l|S ll2$pFp>VsӳE8" M 2 F7`H C<X X J\`} p5(4Ua6\F ` 1(FXM -i KXڎ]f!`+J0r*!dJs@?r dڀd1^5`0H09;ZW-/ڸc-,Vy<7q@"BkƐ[d P7X/ c͚~0DCqEE !"%DD2uxɂ Ѐ!\ mCɰX u-Q,Zb0d EA0X~ `z96Nw8 p72 "` .,ZLmLmkLgT4EX2ī d7qde\%r>%F4/88G2>W%sXo &v ~#A `}bN&HE5_.:d=2 Eh80:@ AE:#C~1D E~G:@=.pd\XVa[.xKܴ0`l ED6h7`Ɔ[ޠ%Xl^T)j8q@) Gt(W6QE2 uT]E"\50R7@XÀ *il 5f'~k8[C13g!E9K|٘٭? p1~P$v_8rָ@QC/v 2D 4)a;m0U:sCoHg乔: |dg71m-)uo]È "10#T;\fax.p_CXUr؅'@GV) e*jIw)>7"Q:z# & qf P9]0]!7'Ym8!ah/ÑZqGb; Hd Dh $ ?>W4Z7 > /ilZQo@t6Vj⇣U70Kણ^Ȃ@9&ٔ! ˺bO-Rpxx4JFfOP7PrɀyЖ @VZ5L7W@ PL $G$6!'KnDyezjX717pα*[Q@= QA 6P x !)LR:{ 4 А  Z$"~ p;F l:_S:Q >7JZ`CD 82 qMbt 5H@cd #`FpM#:"t3` m O(1p#_gv%`= ?`#zN+)PI!8 ` P cwrۀX  ðK9=8KT{@>~/`& h;7PN‹Lb)``e%^24J"5> 0ytоr1#:(Ra"1ð L8pѕP 1`0:6EQNp%G4z57# @@p6x]4 0 ; o, pSpOy!bc|$L0Yc Qa_ ,".Ă\ҹ07 )?f LǑQa  (2QH0UK P@q@P -{,j^gcLF% ¿Gp3t@ P"!P0 9 $^`[ AϘ0<,@Z X3 ":-%@x`+' `{8|?1aea-P%p 1R GZ AJD[=`:,,9GOԔ2 :/!H@ %'TERsw ɣנN '\bFTF "/94&tF6v4E^}ңw:JPo_Į8'p2X6r$ d!p 6+8u@- œ6"/X'==p7(`  U5\}}zE&Wjcrސѐ=  K9 ^'ʻ!Z&x!JɰA?p0k" ܂&c _2q?a! ݕQ`jQ݋0psaxj@shUݛ"|@?E e` H 发WTO`# ,`IQ!28d`pbz'@ ~>(WT2pr H4v0{:d0,F~I@HDIa>NTT.FZas#<F5 _bXNIJujxuk7~tf(7p$ a71A'J4+Aw危G #@z+{Aw*]0IXucdji׍!wLX7mBQ x~(*BUZ a yvcH mb pLY#Z $B3x¼zusceׇU }5Vaqg /:h9 ʯ:1Y_ӟ&&t0a@> `Ĉ-^hB $`…bD2eE-R܈eK.męSNy$GAxre̚;p$ćJv0Sڜu"E1Vږ Њm@PIQbl8`@ٗdxA aA^4R~_Ƭkf18O \;mN\4a`+v4^W ōWY%X|*R@ @ 0`;. `)1.iP@{O⼐k:d (@8M0@6,Z+ #8y+S9r 2`&@*\+:pŁFh ?eJ`/2 :'s\'"\ @DHr 2@8}[;Pl0EKي+:n@AZgop ~!#I&R( o1gȦ @ĉ'y(G!z+qDiw1 GҹCPFg\P݁9RUȢ_R g 6yp-TD JD AD0-fmM鐁D p-n͹beSm ZZ'6`öNXDH""ځ;#vsHq !mpp`LL Au谁q@sfn0 qIaV:eY B *< -B@GHp:RU|ȄL*uRZsW 5 ރI" m(2hd3NpdeqiaίXl gz} ȼS3 pjp` R 5T@H@,*`[9r|M7>iXχ!1209pG= "^8b ,)b50C FWH#:b"yR!4޶Ne|$@jgiȤ:  ' /=@́I釧̢"op?p@CW2dy2Jv12"ABXB#st?z`<$+AL P $Jơp΃r" C$IJ,wL hB9 i} 5$91J$Ct ^hCJfCJ-D! x 9^'1 |g-%>O@8D (yGB1dB9a q )T.P0~xZh:6ďu0:@<@0CaĜ:!J҃])7of!~>Єr1Tx"Qq̠ ^,* $k"A.p@ wh'@W rWKaE18B}rV@ j!#x2=`CE7E8ȀHj )ч` p@;A7N7q# Ba 2!'A{g& ,+e.`X'<1vEOYr^y{Jn9@QU!?e@@ L Zj(@Uu@aUaP1Qf h" 002cd+`Bx*E>ԛ,LkPd#+,&")ӒN^%-C (BB6`jDP'5P$%zYv;e4bKwE!@sXk2:qK? kޡ$Jok ::GIR'U.q0:vg=^QHq<"rE^ I$;!cf{UN24 LaIS0sDDhe .kMNkObqsUu» aSN7" P2s{9[t^k{zG Љn#S;NF w7kgoN?E0ʺ>`WQRZH`8p)'DqT9t-bKPOفQQ"ޔDu$jGhͿtg@>RFAl,Owx z?= i?x h5{5>P0 S), @:Ӌ `jC׋|C<޻>s+>w:H> @hS> û6P3$;J{ O 'к>;c8$?!PP KB fC?\@(10HЋ,(4Bi5 ɊHp~J)L7>lc !H @*XyX{>I(ό 򇄸)~ ؋A? \ C?Ȏ Q: Tr!<1'Գ)R L G@?GGX^ 5g!( Pd8 :@7DX(p,˃s0e`+H Ďds`^Yaxy+n !L۱J8umȂ/_5:euЇt,h>Or|2lt 0xRPty(vpg gt0wK.lx0<0 N,pq0;3S@H@Tn؃P==a_"c4¹  І9pw@RPG zᣈJQ\-)hI0u`ϢJ ف8GMpEXaׯ R0;Xu .HƢd yHqЄsEHM*pn"K 0F(eyppEqjrnx8 x 'Щsyv={BsץIQ 2偀?PD)Xs?5-X(/}KXn86hZ ;?uځ#VҁH7K=Ї@`P4 }I=*}`JrVWMjr0ע10=9xMR ρ* xrБB7nѽ0U1Ê$y@iϰ AIWxhG=W㕔&nsx7s pxz@ [J޻*۳%ʞu Hvy(8]X`XW܈u{B6p38]8` ,@w  !kf  Y z#Ӳ 0D똄XhcqrN*\UЈdu( TXQpxH*b:LP\0E =bXXdI0+8c(-sectrpX2H>pA\5 `<)V9h[pWhqhZ*Cia8/9,%D &™tXgPcYcccЙ?viPȆl`R X:.($R%$`?k\Q` ЀbЄR^A8.)H pekaȅ/ (qF:rx,"Th|CšX?!HP&pfJzi~&´j'XxaluƐ ԋPֲIۉ"{9M]u^_Th;Z|`ƎhȅEPj|{U3P7n`(_qf GMqK} 1 Q&GK9 zv 1]kp%bx9$vXghRxĜDk(6a>,mJ[+|Ff`$lؓe,G#(HBr顙Ҏ PJuy  wfeex"n&p9bOlc`()'apX!k#"B({ @dبHBe}xs&p6ƝFJau&QphPX{C W$0r+Cqr `*wn`%KP'"rdDr RErd-3-eHn- Alay,YQ|ZB~a(>8UxBx9hӼ{Ց@g 8{ / 8GzP0\!Q%&فPZ6z+p[K8:.h4nҐVb/BB80c';8[ ;;3ھ; $ ;k%/[<;ի=&wy{_׫|0ߛ︜ &h ޏA?wg0+f w,}:L ]l&K ru_C!X'"L pTa c8(K`]ذ]}xAc1-B& !,29H*\ȰÇ#JHʼnjƸȱǏ Cxȓ(S\ XʜI͛8sɳϟ!JѣHɝJr>jʵלLٳh:\۷pʝKݻx˷߿ , ^ LƐ @ptfT_h60gR 齖pya@!,2" 9H*\ȰÇ#JHCw3jȱǏ CIɌN\ɲ˗0cʜI͛8sɳϟ@ JѣH22%&(*ՆRjtb YilY5hӦ5`[&H@ t÷߷cƝ L()] '㖃4HD } Ƙz};yat"|W47gԼ,؃U96,GN cB: Z#&@LOϧ_'$0P1{| (I30 JH,lP`2!Vdq[~8:#X,@J#!$G)$rවT70AH9euMuZh)f5IQ@!,`<(pB*\(@ 2T8ʼn,j8jB A R>@$ɗ&#\9ˑ1ODhfN4{̐a/Ts!<ÇO)56-ɺgw ڵt+EtBiV8Yk~JfNKʤ{vc͙JA%y_\ъX. F#FoNg]r 1, ,G #6#&\`֊5VTdȐk7< %bDoc@!,aH 58a@ %EC "P8-8c8`A@!,!,`< ( *\ J!ł3:0"D AI'@Q%J\XM'S|H`.JLI&N<l@tQ89.}`YhΕ1<XpHPӨD8`7M߻sĘS]6s(U8Zl]Kml 00պ XuD!b!{U)_78 &0`B :8^{ >bDh;sgц\Q|B6(+,@[i% =)rC 0@39e0 {-0uOAfr !`A("cRH%]E#YAdF="B4O!,LH*\ȰÇ 3jȱǏ CIdȉ/\ɲ˗0cʜ8sɳϚ7 J%] $qOaLjp`N7KK]VR1Jq`7 VAt=:01EA*L9d t0Eesu Ƙ0>K ȋf 0r]!d_ry2LH} ` `2,8IjLCP!@P:L_D@7E$(dB&P*"d@-0P.RϥQ@#p '("'v䢏PM pRH%t]p\"D9@ lj6i DM'Hل&HhJ-ANogB^^"RW([o7=0D)$ $+̺H$vER6*CƖZWXE LPz% ق@ ƫ^+oaJ ;o[/[!A EBlC[WLP4AďH:7{^l깛SV(rp;p*t]@̪w".:dQ1$ 4@P(8 b >0ۖ @7, $O A@&$㔻P80>p1MrvxL#AdwyR @!<3@$AOA LJ/]q!*!qiHn fehyh_)"A6 ?LbRJRk<6 p1r&!ċ 4n0q uE Pp)! B2e fpt@ t؀k{Wf"0kB !f"QAX M $ (5oHAf8@"A!Hv0/K 1Ac&SzleBUS)jTeUOh?!, ?Ur8ir+SymUh Q ILRRS{PZAL:Rⓦ,Y8U1 JMj/"db\ƄJT2  6Vݎ*j^5^=H2T~uURՆԚZ+ p35r넎{B#H(-JqF#@b| CjXmM8bX6N +#<X`;jD}qCS1)YGT0!y@D "mR `iqj(Vs"G@p׍h<B=@\tAbd6]z1VeZ3fUS:q\F$H6 *#jdBɍSd7{,;svP<>V6i)3dN a%(CHd[dE/e3nMjSxAD_`R, y{ͯ~^h`sKXKAWI0(z.@/.hJ /YeOΜ p%LίsݒQ,}3iZI0 nplD9`4 $U%p) 5 NZ&L$ o[K@pͼz@Gw5Hw_{%yB{ȶj .Ё OWpd*qX]7&5ء pzy?¾ ߠ7P"l dy(@^7Rbn:Pk8(8785drQ8vC x)@ |{lsQ`g Jno:h爗r,W@ 9+! +@"r+ 8A-̑,(Ps84?7 p@Jo4NJa/C@ ,w:_ `?x@h ',y3 HOG8 qr4Tn1P<`uxq2qN^hF 9c0jCo_LQ6dabր#(BPް6`7 {=3$|)`7?` r)PR1lsAa H1$lPG076` z /^X  }A#;h3" y^  \6 8 O.\@|PH ꠁf`va_Xf@7dw80@6Y0a0f`BÔ\P Pb  M7`8fmpf.5%P$#+pD71c0d_0U#`|$%k8gQF"}v6Q8(!ɕ`ܲyb^#`7q0-]ejЋve9&t*Z!,p@H*\('ŋ3jȱǏ CF\ɲ˗0c ͛8s4aϟ@ UbѣHTӧPHAըXj] A3KUʪ]˖jʃKWٺx] s)~^xe\1 U˘30[~t~iI^UN`ְc D۸snw gzD~y[iXxXn{ ӛ_4zlj-/ H+qn}-AS $anh]MP#‰{ )UBL9Ol X@$w!Ci UZ1u@ng@ qܲQ?z$У=(8PQ 6dQ]s!E!ơ<`&K1|~Wg.xg'IbN/;.$'py3h@<ЩA a d:EEXհZ a 'A[ۊw-k覫+0 Г@ T*@ߦc9)P uȰp1ANER*p !,2" 9H*\ȰÇ#JHŋ3.tǏ CI%S\ɲKxI͛8sɳϟ@ JѣH*]ʴӧPJJՋjݚׯgKL\˪]{-W5p5x> 0È*fA߿ .FV€+[L:恜=g-@tҰ{~@0 Lb޳8_g:&Nx`tذA 8q.yH:]Do Ku[O"A!|p5İeHA8߂$BMX3 []mx8(,b4@{9A)-`8Z4NdC(dC8,PppoZ8$0E"d*䖘U暛 \pq%t.TJu|!,!,<H \ȐᄇJ8aD3f` 5 ሄ#pA8 FY+!|8s&A0 |(ч@{ТNHT$ʃN @\* 4BR=[NXsm 0@ŷ`,쨩:P{4&PCmRHVPʜ+8MZ# 0\%N,Ҷ& #(ٳ`1`i,P,:. U iB  *X0`@ *~w)XA3O)), =qC a,0! ( -BtDB& V4TQB!,!,!,<,H*\ȰÇ#JHŋ3jh9Iɓ(S\RǗ-cʜI͛8]ɳϟ@w:4ѣH*)@ЦE鰴իX.ǁTGhKYDx IA۳pʝ;1Zx;ǵ0 Lxi2-̸㛴R$^$HV(ϠC;CڨSN CMr쯵s i~Mx۲78`y?4-K"u5FZ8ϿB @ا~% Bv F(aA"8 V~އphy$"v)bs-(n1hj5ި#h9ce=(daAi^E\I.YM>)%VaߕXNeYpe{ifU&Y!,`#JHQ > :@CB(@K @<%nj+h@ 8iAU !;^LիXjʵkB 9wJVɌ9_;08Dpʔ/_|@2aQ'&Dԁá uPk$(k`߉S ̹,K[!h6 Զ gnyx€)0( 3Q`Q0H`=Mkν{Yh:ޫ:1 (p>-&Ĩ=o7%Y*tCSaVv4D00c r !9@ m"D7t(\S 9P~0D/8%(3<A@M: I~N=1(Da%@7%TPĢ@`BqB@VRf}Ȁ+ȳ dBFBP8B"8!P>4fNU$dRiN(3}Щ<*PXvA )CDܣ.Y7#P!t@,D=77@Mw  PC| ip`$-P <$0kdga@U9@O0,r9p >t; ~.B6ADsO?3_ P)dD-Lأʂ *46h aC@lrPlUq 2nNd@ iDB)gJtp6  : =80'όF" } rd /3^f :0|eA x0f lOD2%LB#>P~J @eBp˘@B9ύ=#|(&$n=2BxVubb r0E^ @Z4s+9 DF&zgn 8@E R+T9`w 0H^-XHP6a bBu@@dr38܀c@pm jQ"P@>Br% PG8';abʨq x1 ҏ@gt^$P|CRC^(=h) 1Hy Й&:P; ap@z ! XԅޕlQ0a ft 8zh+'  ( .q*|%4 ʄ,2bh`'4oq(E A֧wlxvA4A 6HD؈dJw k d1Dʀ`f>"e@JE[~n>LGBƈ0)MYU H %5! )`A p'aC); &ϊ\"Ȳe)m0PBpކ E?(*e zW\|+a+h٨X,^Y@hr1nc+&8: `8͈yH ӕ$J$:۞T LKP]!ZSB !IZs$x{H$%%KF z9\$v|ʘT-BL^kBY|:K`}xV][PL@GڍȊ[L,r.ۊsML"K4"cHob8ΘΝgAnjςR|֌AhE_Z0[AfZ(5Nn^ d+6[$m@!҆]ӯ#m;!­DpG76AF;[,"+#@209%@1/Xt@-!@wc4`{ևW!em_ R* 8]jxW bbx x>$5/m 6Ѳ8 ts"9@=+զ%:Ij )Yx.GDiVLaKw=K@V!!;7|rmLQƄ6Yo,DoFڠ/zN@ !yCd!xQr A|> O8A!V9 +;HvWP"^B'bE45"j҄#P4:tֱ:`p+K#IGH4C2u 2ؠ\] ӮW ӑ &8p<T @1OUxſ1qaE"<6"TЇ ]x%`3^@ 1I 1rptUu@S SWƝ7%@kFY &0[B|(F3]!a1t}$u3& Utp h`LH4=P]1F^q&t g'A҂ =!S,Ec",v[a   7Ai, QNS;lfqca5w\y<  p6 Zr6@c"vͬ  MDd #=I$cpj6)ҽ!;EGD0xI*$%pأE Q0eɋs1Vd {yR 뀒 `,D 0wUb{qV 6W{C=qJsS(Ef2`e+)$4@'Zw" N̶:2T32Qt-J&`` #=?W""7#ry7Y !Px1x a 1v$ŬA[ pI%Ul&%R0 P NAuaeị % ce'cj]8P"XSm/ sTqӁ Fx384eF 0.#b6tT$\#9 0oW:AsqMMRQ03~`BBc!\k R !Z~6f0uLX.Ҏ9FM"I>$ 1 4V\y:ui HP ǽAUR̳h3U~r33IFwbH#K ZCwW0 @C!&'}f!'B4RV@DŽ 1T=E9"H|x hT2?ҳAСG 4eA4: &\  `2!Aº@ `0dWq K#jU( "s Jk*сRa;h(n@/T &0꠯, &|IX!t3>XęA.LԾ(Axǁ+ c#`Hgps0E*FvR $r IĸGOY`A#h*IeuČЁyI)H*"\Ab'%1˜s}ǥjǁab„扷XՁV,% RqgV腮L/gM iw0FJAE!.FȺlPI~tSPz.3Ȧ]8I(pnhjp<Tj ~!GXX'y!]2p!D)RI(ҁQ$Y:qO1@ U  u<B"ej :Ȣ.X 2`O8 v4oX4q.w4ʊ,` B r"4F'.X`m`A 0:ɐ;%t%/ )vBX2& ${(3f"pD4H+%Z#%!d$ "()#,tXG <!'(I,,p f-!pE**T옇;N(~ W3BD$p@3L3C95'Xyd?sЭPJlQt\&Qt9@Dcx^yUL"P}E@-Z"pN9(A~CdJO9ۨHPG# it#MUH(o #Tq:UQ]c>7 iRw#H8:Kp"Yك5A m#]<#ŰK Zx!T 4ԈEEbt͸R hė: JPO. 2;Y4.aH = !݁q PB,+ M;b9$ P=`Qe!:.gXGq H6!:\L dt$XF+Ҏ%H6{csys D~.BPؖKSX5wh0dh:EH< 7F=Ѹo86jܷw$EaH@pah(MEo#Lv >0%(q*Q0rS}EAbS~2զ0m#tu@ )zvAB^5Vv Yy! pC@ `8jX^`'@Z;0.$]@ ~XJWQD-nSO8 {PO .p-  Emf!gIvV1T23$i*f$ K/$͉AsiA ,NL ;AQ 5K~} N0`dn,"\E F8` l$ZB[X}~GZ ƫa?{Cl7/HNL@/|x!U̇~He=8~Hr3!qՠG ~0J̾҆ ޏ5~G#[ 9P8P6h8 =㠍Ӿ09P@t@D!  tA$,̿|A  ӵm۶DEH,ِCA!,„^__cx( X6hA+-:A9cgpgg /Xxpf0;/B+GDP3p bj99tHDT? X@ dmn+ESCU_ܽ (qhuhvuX5r \^E`m@1NGqNp4PzXNp7Fny"p X0prǏGz4ȃ,C8XESDȈ@Ax#HQ^Ȍȣ(ȍɐ܈슏ɓȊH0E50 Y&Iz@<ɝG\IIJnII;T_ !,2 99HA5xC„$Ł.j';61B#e!,2  9H Aw* !,!,!,!,!, AH*\ȰÇ!Hŋ3jȱG JHɓ(S\ɲ˗0cBc dɳLJQGzӧ=C8j$WvK h'Uk[}KVsZV% D̸1FŎ#Kny \U@PmA g. lޚz.xS;cNOgfG`;9ؑ~iKb (;!,2  9HAp!,!,!,!,!,!,27C p ͣGdH@;*p /QXjʵW'sO$[8-M xLx˷߿i"!0P5.i ,{?D6880@{8KO/W78ZBME8+ Z%m5_כf<.&P"Av_- d~`vTMܖ= @t@!X @10A~w[q͜{]9WR@g-7C .{MdSLT=9ds{Vo9dD`?Pe21|^K"ߐ1B`C`,("p IE?dhC0` ŧC @@G6'Pm ї;zg٠LG $ݜGzDDL'`ehqͤa('4*rrH C@ܱrA?QKA(88P႘B:ؠtS #+&Źp  TίP ;7O>s@`GO dނ+T ~* VHc2d9pG$+;܏F UdniA `@ ܝ<$F~lEZ$}%ne7;x@Ecu8̉{CIb`smSi90w̥soEtܠc;1<@ D:z0$c $9KF* Jbv:셤6NaqAq#B0M`(F f hPdȀF#7Ȑ>2`_p9q4` `\V,P@w|~( G 0Pc B|y~GPp @/P ƗtL@g'c` @6Lp{w ~%"3.1L ` 0/ݗ(u7=s p uo4Ȱ@P ݰ?p  pjjh2@4 p}^ p'pApLP xpN  wȀ & p~0(581|@ Pʗp qP@ `p9@ G{0 o0 ~p `50X@P 6 p :@B$p  ) P0qR P r]P ~g$h0P/@@` 46BHhq `N @ 4P{XP P~ "9Oa{NxP@ zEH  `( p-I \9 P80' ` qqhY{,>{|`  hN!X C{'-C4-pq k0' tyi 0Vmy y`s@ l0449q`A# 0l1@[qmzar謁p1!֐<%&' @ INI1@9`-0vYԄcY,'#0u@`0 0$p .4]@ h*Wzj'0 !ea P"P-o>p /pҐM.'0 -  Xq'İ p 00 ,c6G`  p8 F @b \=ѧ@b@ 0 z.8 Pizt' Ȑ40o우 F` " ` TjQWz"`Npߊ 64fs0 N$w<p$0-#DʌEKza0loZ72xp}@|* %`Q"1j;#N T@Ӡ+`6`p+ J@ Ez@ 1P-O'İ ƀ/ h& YC J ?AH: rtC P `j5 pK` w{| P ܰ| e@`NTH LOʣpMP0 \ ;-=P ǣ6@JR*p p}7%о)ԟ @pv>3`r=IH F`ŐH, BQ#!mz0q&5l. v T;H: 60^UpV}5S0 Qjc &Ж?J dŽ*'` @ ,н<l#v˦ &KA S pJp Pibk ɐ pPbP  1\*: 0 <@l B<Dla| ɵ1@,ĠrVYl[dqt+lk P8҆y\вq6- Ȅhp@<! p&8)L `&4Shyq 5 ZP*rdpP͒!;31&y ]  &\ 1P9" = \  ̐LQ z̶'oP )WaEc P |A,' ` ̷ٖ/@;@/?[wol=} ͠)A/FޫU в=bqG!p>|(R-f+ MvЖ` ]PЄ,O§ @ "ŋP uHp &hgn$ p̰p #`_|0 e #7"NPh _0 =  ,P0 [@"` ^@A` ^' *"p V4\ p=l] eH 'p "0@/pP ޟ F` f> VP= p@ QpY _E[ O~O` <$@^yH k~P ~`ƛYP/ r0@8AOJyz, lELِ.@] `zrsPhS@pL 0p to- PeβAp0i7RMP z;~h -%xvC e7 p Xh ml§*  +X{%c #ÇB=tĄ `! 8=/T97!?||PsN<|9xP [W„÷#T:)0 G 'p,EVZP !ԍ^0!d,J ?+Bx $@FB@"`!+= F "hj0(~@  >pkvС$"E 0`pΕb$@{ Jh!] (Px*h/ $(0J!6a+Jh 81P@H @0`HX0!Db V0Î+:h..^x8< X`XH#2LH"8tKK4$2,4PVZhkB4Ѷ hy h&h/́Ԣ(O;I O`J`,t`7Y+c`8 dx( ,& k+tWmIA qց<%.:@c5HfhȢD1E [" #v *N=9JT-l3x`-x2`x ^u/oJ`NXE-p@а -,EFTVQ.TPNI8e,,O:n7Z5#Ou# vܹq(`g6cK@[K%TQwhJksһ5qgẍs>k13qƠb.S2_Awx@X0A;WUl;ӻk>{3VXiBŊj$I Bؒ&)IaiT@Q"Y@u . X@qKd ^ZVm ;%C)IB0H)lSz{kAi"V|VDT*(Ö]qgwV36g4F .yU(Ŗ=xkE*Z0K!ZBy@DpB֐;"<0% gq$ZAzxE:#nRoI j=Qd(5K}"μȴрcc0Sb-ZrfI--2"2P=ś;Kͩojq,hCVe؈:8+"rF,\Ӧ;( ,uſ 0bB ML=cf:fMjӃI »HWZo*m:jIxrǖ *3diRf[yZ qFu: eFP°c"HUok\:Wgwk^Wկl`IְElbX֮l;d%;YVֲlf5Yvֳ]5gE;ZҖִqiUZֶumle;[mn!,h<0a @:AB3jBx8 T\ #E=.)`@%BB 8` :XH1&G80%0H0Ԅ3RpЪ,`@GBV9¬ŪVD,È+^̸ǐ#tB >۹(< ߖ` 4栝?"tӧRh\J/G |Poi'L/HJ\`Wf=}K2`huQGIf& 5eJĉ1I) I'8  0,, SO1T &5[MMi@Y]FNMQAT!6P'8PCgE@!8u!x#c6Xmp2hxiPXe I%p7( @PTPDRp26UcFl0=P>fe>GfzQ' \"d $@*f!ͬdvlaX)(E8tJ~.k@M@H YtH$pD]CJK&N2tLF8L 590NB& 6N=dj;UbF\M RY5RNTq8Dp? KJQ0T@H`55. nS +d/֔DfYF,+$JKt9 RE`o-@6 p,D >N)bQ; ,<5hA #P$X?H?S;0tM 1SV8C}w{;a }@->V{'i"<+s@%b4`G$]FXpAD/ļtp@x8 '8-XPe9 P0p2i#FtM3gR EBRӃcJ \B$SO Żei7q 2n/Vc?=h4%ˈ "&ޒq0+V m(G%r Y$v%feЀRь  0֗B>)6 /Hs@m[ aQ4R."0s1 > fRpZ҄ YiIjl:d^#m^QLH@,}Ax뒄Dΐ !!P60Xs@ԃ X`R|H>r& jM T /rI\q`xiW )*pnswlF1\C`G/5 |D#G(6 ЀZ-Rp)ymB䗲ɹ {Ņ'>^M` (h4]i*D  Vc X.0J( iVtbfWAB6ڲKlZBBUJKȥ6jĘ3V *xx; > 'BQm\(R %ཥPN `HZLJњNm A "6%D$m>KCB'aL<׳20`*B" }(F$FW櫀ϥp Shq)h:$$9PV1v(WN*” bg,1L֕L,'ABD,m[}3s?' K3n 8*'+l{dUg*hA xՀ%๑| -`?`A 8D@ɗX 0mX})!It'L-%*OHoՇ.Q'衈t4u'YԒ#!~qG`6y"yA5YlS+K2}aAAFЅSz `18KF+;&( 1P[ ؇!C\!|Pxdu1Q "l1.~d#Z/0R2UsHc7 pZx¨(FK!OVCeC'!a)xRm8#j\PA!57ӸSeqhVm2 w8h ` x4&##`p&a!Y PhHlX?х1luM4UԱ;"2S*A+cH B$4s2AGR@ZO\kBL &4+ǡi&y ';OA! Y &o;uх# _2pMb !eS Q rP/wmRp2}BPՕOxip_.|n2U/A49]ps7 )!%$)' ;A';'+ o"'ynX.R.i`\9n Q #6{ Q q4d4Sؑ ߐ `%# !8Էq19%n Ad, "1)$pWpV3 S(sA0U 0 "sPÑ )Z'P}4Ĥ rR݀@  aA =6` Q 2 8b4p;T!.0HQ+ Fݐ%J{SKe`p%ƀ*U6Hb*[ Dw//qXހ4/p]p S0 P19 Z@@<0R8@LRe(s)Ck _"ژ;=>05:it,,H6GJ p2waU@[ p .~u ɰ]H9qz'!@`~X@=`Y|-22*Uz >9HM'@sp D_Qـosb/uS AͱZ!ҹ;3.^UqWt* UZi?H&.ESa1'ز"saq`A\XCH>`^W.^0whdd2.6j}nH!ıT᧐!R :B=!1^' Spf&xoK({[j~Z&ѝ#RqqB?9nx*rwf|]8 0iNff+̗*1%h|kQ&1`doQ&!/_ /2s!~\'Q)s:q@_0_"ľPGvR~Cu]$b?X&/bdf! O苁!RJpoziރ!AQ xGQ\ami 8 fN Xl4-IkEQ?Grf OG`:`/0 Oœ6H‚YE"Pq 8Pe8p0!"Cvp~ @>J#zj <ƣhlpoqoY HΙ:0!FgN *<"pEHsFIhMG@Aƒz"` _p0 jD=:T*1  tB5A`C h^qlDpxp`,8~Z@=0q:v$H)|;E&"U&t`9ӮJJ *D@g.!j֙=:퀈dOFX,&T4aBI8FpF āsgށUP rیخz-Æ8` Bԁcҹ\<ꥋA.B'&鷮` :l"2A p`oqŁUq?2@FoP?́qRHr޲g5㢏v@i2" V,~l~^vv 0(T6 cJ X>Ss*( G}D.B&kA 3rOj(^P" »H8n7I$)PF P.i"`$* h Z@\x`41^ЫT@(O X$,5]s<M.>Eh@Vptͻ.<cW䳼ʻVQ@`Hx@R/H&^sFBzH)C%X{ LZdag.Քo @ 8tvY8 0Fƒdb%Q"$[٧yk Z{.sm)e LDS{K0ߩ9N>NL"9E"yNLPc?|0RF.laK~/?!YU.t7%@袖x05 '$-\]Ø`)AIf@颛>3T܄#bQK9X짇Oy;Xk-@T_>!Sޅs Dy5/_z `>#>݁:V6EDߝ|Cwg!< >H=q>t:#! <, cK ` (@Q(@깗؉  ?@q:9F)c8>) ˜`![߈ý+?@@@7wzAOɜ7$ @x=,‰P!q@Fh[^`@OhAi9@ӒD( O,:`,îwA0B4DT  ??{[D#)R"A>Pً TEN Ҹ C@@@ {~2-x^}\ų˽փAHwLȀK1iE,I G뻝QDDF*@;EwGȣ9']^l9,` =F{\F8܀ Ɓ )nT o>KЀ a -xv8l_<v+ -y ZB__ H)3l`0 aL90r iu7ÖB`.o[3DA?QaKxXHK H9 8 HPŲ9 H0ꀿ{ >Ԫx3[  7( ` k)(7QщK*I` 0˩8?dO<#IX? Pˆc$#(( 0 d+0sHvX2脈s?@4Lre ʼn()wPvH*!0 ȂhՆ`8żr2H0PZL0E 6Pj=" ~ pQPH 蘐E(,v>p\U1 iDc*6f&Ȁr \#T0`c0?N@=;B_ݒ&psaUhKѬoJ%dt pk`r#Xe {6> +"z+rW8w ;H i HH 'h[lI4j`lǪ$v#yF&"(n .)5mp* Jױ N &w$Ȣb"XL "8Yx7 ckl ]: &XkI^Jk{Pe#@R ތ)fر)t 1p=Zv! i~Q8ao8fm3쥬pr.iɐX#wb=Q5M!QG " & sh>MᮎWk9nP~ x +NNjxF)n#X x"F\XQ,]!~P<"H*Tnpy0apIPp0 !" 5ߚ|p ؀hb230HPiႈln=7:Qqߖb$t6|if \+۸&`$ "C`#XΤ B$.1BG @N@8.Y US.q-)7-=vk,S,"hmܮE>!`v!֌"'bEzx `^2>@!8EEE\;`"bMK{`ZTT`{z0\ ^7t`\nV! 0|=#2`1GscXIwԃqs4en;@d@t~2#\# 6Xŝ9p6) <)ăX< &3hc|p<` H ,3"8 B ~\TLb ؠ ?J$v0G<<4P!0֦ 哖%qnWxF~Á?hG>R `p wC8Nz 4x9 1E1GRc/wY:z`8A~ :N!ܐqc`QE# !k)Ǵ\D1\pRQ;P" *: R %<< rnW9~!L9`RX4yh4"w%"TKlb ,x2ڭf]Fuر H8!Wp@:Q!.A0A2xAP >! DS+}NXC &@GtxGH/0,HCDY]7$beE=$`Ѕq  H?N {PP yne<s98Wn"u& AA ?v!SB0\DJHwc١ P,_u2Ilo_`D"#4c,`腮uA wӘف?l.Ro"]  ,o H `@-+A8\ ZR@S`J&F*8#d$(+p:!"XD9eP-V f0$ T !إhKt -P?d*iC.`,  PPwd@!/Ll1,cz/X7w7毃ǝKIE>B}5!w Ǐ'l&>r\cCZ@$Z0vD"$bwК`Y'56a =XMJ: WbE< 4$]Fd[B @@G\L d@,=įA؀ \B`!О 4@]4A@%E^(@HDŀ@,DDGdq|g 2STB;C( D d86,@ H"8A,, ?("D@"Ade@},j]=@XCqY0.B;:qho˯@ 4PBp\ hx+C @P@G@lNAEXed@ @Dֈ>>g,:` Sd%ֆ C\C4F>:I G4E(@oQ8e"mDq2 /%AUA&Lz|)  0Yl3 ܭD9@1LW=~0e=ޣ =D?͘=y tag0CA0CŀDvGIEB`($a#a۞9. X$aq\(tD49RveS<D\3S UnX )tEXGT'Dpy޷m.,mu!_8ilFX@A(4_pȐ^h0rA * = )5@]Hl tB(F?fFpDhQ,O`#i}}A<&@>5Q2ʤvH0]!Se0L\!L&IF $ˤA[v0A ؞M8` Ww0<>l6iC7N_|Ј%DDSThR X~KHB  ,`8@5@ x@2Wޒhx&FTw)$|:@be L2 Bi"= p\("8-8 ʞ9@fu< RM!Ml{ @OG">A׏?CT)-j*PSyؿĄ0A=Cd&ejoă 8%gk$@&!/jaCeT h$w 1\ _=EeL( D@X7|IuCS I=eD%OI:>%DVD~6[6b@Ƃa=C@@T[C;S@ؙWʢ,$ D@ ĀW4 d(V@,@ "5UY0RaDvt @+Á@ d@ @CP9,Ek@p@ @ 'rL(EET"pJmC2@F (C "%׈_h i) 8 EPr8g$D\z< @Vv^Vq\VNER)EXE%HX s$LBLXrdLrzq@T $CLah8VppLqD,UYu.GR\tRV""Lƃ AYRG04h NGP)BšRH\Hf#A=;=o \EI0vLRֳ̅d_(eqF1]o|2t^A9,-7D{DF_,G|ovQs7 % lx qlF7 pˋr \B)h ϋzr(8͉zfps(GkoJJ7SgzRHTRFo&yA:`Hzgћ jM{芫;ʉ;kvԪAQ(::?zpl{ZLik{CE9z&0;:S:/5,Ĝz΃L9qTx;+ g8;yn W̑}GlUqxk=HkuǾ#) |_O슁w@<|ݐKz{R,|4| >G N<͟HlVɰ<<ӌ]F =|l O1}\;ozC|*{}cCE'DDpm>.w>~Ԩ>>>>~꯾WM>< /?Ӹ7? G?#W?g?wO?!,a`H*\ȰÇ>p$a3jȱǏ CIr〒(S\ɲ˗"30!ɳϟ@wp0O H*]ʴ)6uMJJ“Pcׯ`[  ^۷p p(AqKqLp4'"Sǐ#kYs%kY0LL4gS;)*p۸BH-RMYmq@O[b` w(E_AM5s-{߯~tBL0Z&P8ЀVQ*_P`; VA("A袂(v 7<@~=)䑸1䒝)0=0䔛EWcc?cn!7\)bIW8 &t08pd=}PЉoe Vʑ~LW9x Ҥ@n8:  @!D:TNeBQY&P*8E@6*"< ˫[n؎ͱ|YM92(P/@^3U:M@@0g2xPA< .& @&;goM@8ö)(P{%3c.8MFV| Kj,-x dbk*ל6ӏ3K8,4ImOĪG7-{NG͒ X3$WPYN'Y#A`BEoMr8Ph3`AAm'߄ RdQC 3~<,gw砇.*'@umt !!oBLNyQ=XPKo`LP4fA"п@"`rAo@T{94]og?drCAKW+ 5<,!3 AM6p7"er&= ^7x@!RpP \O+1|Sh#'<0@ӧit)T/ Fj5"Ɯϲc'p(ִ$ia"$ԭpߑ%D)B:X$Y5F1(YFfl0nE+x< }=%mqfrN Aӊ)4)X$9MR'< ̉HW?h ҅;XV2f7iH@` D;eJP3fȱz]&zek#%5d?U@LPpAiUN!XlYtAE PԘcQV6^|5-buըS#@G2 `m&|r`*B[at {g#E"8 )VAUd]ڊ \NQlDdS I;I::cUhN@f璎RDYA} 0)e@O fNJQ0 X5PF ,E2\F$Q #8%0k[e L}DڪTU1U$ Xqwr9Mةf WM6ID 6<Ђ&< H6k0 )T  Q|#! @- 7@ DtA]/лj4 vgm$j0O?b  x A k1PC DPqN;R@4:P*M HB/@2 hD6Rc ,x) g! qģZ"xفXG l`p782 9D` 6G8pp?A _>upyC$LP  gTh":0XKHHG$F.=H/-X;Afl 9)RD@?)z7B78C@%>,A0a 4Гwu D>UM$h<ؠ# I"A>kC~@G>tq ;#s|/H|D."|D+ڱHKXD/Q>!5L-͘\;Q @`JAz0@Gl1 ! X1bi/0Tb8'?z ,tVu,:,D?M HA'H9'I;mC#h# ;P"T;04m &4G0bІ3AqH[d,-iW۠e2bj5jOchA 1Z@ ( uh6n'- \lˀ Hr!)$!$!, $9n 0p2r̐x0W6*# ’FROL)8 񅌔0 H dH]()Z  -@0A ļ#@`L` @ >}|&&'!&`HC w7ġ qM{OMtjHb5eKj۾2QZ@rJd0dq @p+ViIp N}XhF Hi" =L )@\)?x(a^@PRӨxz FV`_~!*q6  iN4Ua ?SD@ATL` U u1V MА.' U, xj&l/F!pn7D_P$` sCYE) p&@8Ǖb,J,_c)1,\ P @+D &P* @G` L;!QP5p 55 +1x  P$hvZJ񌻑7ʈ~i"a[pr Y0Yܸp^H|p &u?|  @ 0ِf19 W` ab'P`p@wPp P ؐf6"W1wМ[p P ^C ؐ/$Rɀ ; 0 0@ד4P d`^ 0 kq `*FI6@ P^BP 1 YF ^~~6m` (P/ŗ9DŽF1'P `I>p<0#@ؠ0 P0 ,yBQHP2 Pȏ'p)P;5` P1@ I$0uP] b<z|uGn0  {/`{" 5,@!@ 1p& 2.f:F9X`C젧%p$ 0 cH0j{&#TZٗ#7`,1' RE%a8/khW -6+vBqa#w@)p `'@.)9 P-}W11:Wp͑nBC-9v[L[%3 af!$kb&1 0wP1}vCP>>1v`o&Z+``8ʖ^e06% ϔS0"$;[$ۗ0,)8!HaPuqecE. EOjLRC2eRB`L S:ɀ:gWWO)"Gv7C# 8wF+rq&x h2|Hm:dS `;j@xC s+;>P00' g1;#ʲ9%Oa s"!Ÿ1Br%7!17RKF:WgRCf 0`;'1*/1o!up@_&b~sq4.zsrU6)|& +r#@ ,POț@uz 2K Y*7HLu##[JnRIA|"O/p ,E1LLi515Q%`@s8&gIW-qq;w)(&7r U 1Z>b& #T7(>*{ZRͭ,iM .\$ M[_'3 3J)Q&ȸ77+=bŁ]UQO5"v ϴkQ(!o,iq 4$5s)u-+d$5{4q<!/m! L;X.q]Q/q4b]b58e7@ GvM>um$ntYЎM2ص-؋][#/]2Vߋ*ٖB 炲M{ i}4 ~!/"$18 -],uOP֗,Ӷ!,@POH*\ȰA<0pNpCIɓ(S\yCā\x@<ɳϟ@|"YЧPJJˈM0կ`ÊVE:EaS=K]  KA= A l;P2˘35;@ .|K˚SM? |L L:x~8=!" 0N ڳn7e8O,l&A[ D-I$l8fQp!5E"? V H t$ ;W%E4A$@B&8Ap5@t 'aG4A PP @p!GH 0@0vvW\@tYz # 4aBHAYEv9N6D@&8_A \pAfa7NJĤp!YJQ4* r7B#P,L;A3Y9A4u@Mӂ px 'G,pezq,fTj !IV/%B/ACBQ T4l* heӇ`@5a6 A8@ /tB(1\Ӧ9U !0 yЂ)0W (8N#;@Lhy M  m;--Xp $B4p5.Kh4$AK1ʹҋK =3: DGA:@"$l @q^E0r $8M\)%{Liyl DL*)aP(=T\2@`9%}QkyA$4q@cd @PsĀ ^Ӡ=EE iof#%ď%D;aAAdD8@@ehGP IOh&f"&%$ \wPDRZH(,#41:tG]s kU  ^Br+uF{ F0t`TTŽ[&@"A|-+!(Eiv@ Fsm13yLr%eT,hjSR;@PeYp3GBr$<)v&;Ň w$K@!,X _0p9pC4  ` Āс,(p r3IW$r\HNR%:C"& !,PKdWR88` 0A-VaFp`@#;: ㄃-_^r5!`Ό=!,`H*\ȰÇ#`9oBɓ@˗0cʜI͛6d`y%[{9.IALJJի.!lh0-I&L@UjնKݻx Р"DL@@GpU6/· ŝา˘3;HB4b-d#A;aTXо A+ Ё'--`ep 18pL7q:pcJ@vp4EU Q0#d&0Ƃ.pWР.t* K4L~J)H@Jx7Et5̰@ f@,<e^+PH?<$A8`~;@tVtQ`.E_8h 8 PG6@` < ǻ! I<IY38 X`F8H[2 Z,s6ďD5) u@u a(A@ ~">KER!`i/mH R@dVa:P$zYQ⎘! &;J(*DH"/E"ie H@L䋣 EFp<&haH"[f&iRSԏQ$&iF~4 "0i}7A_ZRAvs%kIKK"JMhA$:SHrДI\A96ѧ8il zwb=VQ0Ud#c'G rzy6B4@@"rMƦ17gJ͍/W^ 'B%J]IS.jQ*""wf4-P.}\-~-9py$"BvZx>ʼn~@ٔMr"%HʥlIDKH`rA@BdQG*`b h,QDo"vdDEHZObS'`Fq" em:F1re-b }RqX(W-{YzCVE`0V7*d DЛ 0p8 vK^wK ԶN+΀}r6Cm8~8Nׁ+ {haed16(z|@v J҅xԀ rX2bl_r;$utPzhs~19Hb :aK$҂by&3l$8ᆅ!P 2%sVV@%o'pLDEn;v:nspi`dХgF70 Rp?w/yLb {CP}D@u?쬐P1e8n&HiW @1-@]Gp)Z 3F ( V/1ʫhaWLAr3˔PW lRфzl5+%L-^ 9A(Hސڬq@IqQʸRt$͘fX?Bur@K'5 1*K&`&WL\&/PwI.N-] 1 a}Cy$K1@j%r$0`ǎTH (A @r)'s+ 0wgWUBG|(`  1Dutb]q~A %W jte1 u&T!P$ `&+ 7kvBB:rFr@rYa!3PPs QPX(iC`$$'u.w#+?s8a@ZX1wPW`W ,|pAvx_pp5E57F(x%x (Ӈ&eCL! W1O&P.6#`' aX%?0 ,pB/ ="\a0TEn6V&:3Ѓ+QENs _ 1ZLeT%qCĸM =2w5+1((@3hQW /yasqxMS_Y#Ra'PU+T*HQYϡ?)UQ41b9dY*vYD'IIq:It$[(QXuɗihZ/9=qR )P#i5H`F՘$B7SE=LyrE/a*d>u{!i3!`Nxk=ǛYO$q3 )HV1u@by@9T1=7#5HY[}:# x`9c0k`0qAjc0ДQ:1?W?ߡEEI3Yh9(T)cdqQ4O(fE@ \mV67kGD?$G G1ߑD0x!qm ǰ  5]5:'hg! gT-gٱ!&phu6E{KN D 3pZ95 AkbY j pfSx pQ 9 `l1@" 5 {0ARqj36P|P}F00Az! !ԆC` tdjp (LƷNJi&0py`ٓ1 pH&#}@47^`î;t)*j`WasA0wX3%whY.H[|MQ cmuHi>+H࠵ R`A tL !fK5賠xg!7 j%7zBغKVy\;^ T e+,7jBZrs,TsZ]I~K{Lo\pz1 ^0a;~t!60~YrCZGA$M /9)M{8Tq 'W^m=@{Gp,uCbzƫ/*k\ ,=   m[JI9 &@IV\[>3PoQ! /`7P!5CU  0=`n$|$pReSH/ p7_r('~'FvP_1@y4N!L8Pr<1=ڃ')IDlQ.aHOsQC"Y=C-9TTgɠ>)".AʁʐʲL )0a4&>*tp# l4 0@:}%A)"!%~0?gf7W_@ː *z!d N|.{PN00 W )H Аo QE_&wZq3a  JwFy!DH%a&P$::q8ipF@9nrC$gPh.x܀,@0<% 20{*n @ Qo+Ql*DC^e(V[|rhK%@ i2j4Ks FH|V$ K8`T*!%gk 5pm^P.1n/h4e< p;=rS;k%@) 1:Pf"p,Bu]F_/`t0qvvV%Q" ?)F >b4c- i3 `BHd)p)%M=70oZQ lQ a7`(h*`('0cS n"pc)%{k0;!mQ| <h ѪftpР (8`xLXPF%6`CkZpV GH(@1gBF@p@0F~9z12Tv>8 2e: $u.A?RH*EFaON9&ؓW^8x; 20Y$4°v|A BW];0@@Ɲ[n޽}S 4"`Ȁ60q`0!C i»lSt8D ;Rn8u+!ʊC\4"J Ƒ JHH !mX`l0l0pRb`> %4L(@!r: TGp#J-KHHh `HD+K- "(j+̔()„4N 2!œPppDsE  ТM\Ш BK BKѠ>P[Ё :L­P0H`0kFk6bXy3Ұ,At߅7^Y&06SN.{(O%}@g(& vzQ٣u 2d}]FhԨx!zXIȜsp 62$IȄa&XFpuFA ^᧩$" pCIwcQiRZ(zm+v`*,ƌ1`qcA" Pڝrcscp x6 pquԡ\ix"ǒs.ncЗYײ6R Ȋ`9}C8@R 9@ FB Z]AFb#$GGF:lJ#l! j<FazyeX ylW dC :ݠ"I0 "I @.@a`!cL? *:eTJ lR.0$SjD3 I B (`FD%*!!0EDJQ,R,YBSVb#2I XmQC/V37x tRP=gp@%2Sgiv<,!89>4̝nB}< L"@ vc8S`P>(!Yx36y"3JKGr_"x[L<ـG *1 J0t  /B((ЪJtKʼn@G!s3 @";C;ˌkwp4Ky()D똂r ;( uě{;KdĠxx(H<|pȯ=Y@@ ҤT{/kpL5- s?1WxPxp*pAH|HqxMH@?pDthhe]p X(8[f?",А*sejA HA<yLkqxhPUcPXo` h!(hԘHY p=Q p:.sQkJlX$ǞP+8 P%pch ؈i0 i( ;ìwXo0 |,H"3+JP6Xa`?e9@E` 3y8HJ&u@_@@ Nh'iј2Kij=lH(Bh,)Ori *,D((3xt8H XXpo1h@Hi @ N-iRba|vp^iFP l*ЇP69-2ON<t !(xABpȃ`Qet <Dd(0 bԽAX |JyE T9ak}\"FHeAN؇Xm1lcG$i F0ҩdMq& *U(0gТpRxIZM.Є _ʈsNQAu:U6 ;P-6"Po=l!GIKJnptxm`V xmHWjA) Z$L{tHF 0yFSL#=oZu 9jwx| :hC (ayF1#|BbMcP , MtF{Tumb(S8+E%~L ʼnU*4/(h=uxxx(&uZ@N{PAł0IPڂ, x{PZsԀCG(` O $ބ+,z#Xɝ P0#(a39r`[hT [)[l p .H8/lߤ$9u"2\0Cyypd0[jy;~p7p{E'ܡxXDPh'qX)q,E$@g\v~K(?Ȅ9Sp r*hq`Ib3ܚ|PbE w5|~bBu@xm4rhu{@.pKO0>Hb90i+B$A\;kC @ +`I Ʌ xe=7,0z P\8l=HVh 712 H`x4im䡂 @|`נXm #k?0-90*%hug?ہH 9h`+x.pp80h&9x3QAf>)Ґ.#; ") )4}kT.(NCڝ8p{j٢oZ! nBZ;Eï  X:B5H./3|135;V@EG :5kf{19$( ;v  л:R` ؝o{˗Y:eyb*T1 ['r3o2Kў0lH , ͒9 7Y# 1zR"8J~dav3]vC.4 +ӥ PPq`21 rJ"3@eA JB+q;+Z: 2p 3fNWz8W2[f7 o.WVm&]&xq Zrnr{frrH?|ق!7b'o9ge]ֲ:-.A@*o,[3uZ1-_PSt玲pm)?~/~COj1 q][L+8W}[Vg ' XKf|@t3Pa6dFP$MyGP2A@Ž:c@*$89Ђ h0&$D$X]PL$cTz@ T9,h`B$AWihj5 pGؼi@+@"wb8f[p@ЧXt)H8"P _ M@D !XiA`BA$ 99ipP O$Vޚ%' ^XA"F+Vkf>`TmzguAPՏ@eVec2 ʌ>а@LR+М`..p2 0EPPXP@ BXtЩ ? |JEӫ>EC5:!, @HArÇ#JHŋ3jȱ# Pߕ &x\ɲ˗0cʔR`}0ϟ@ -HJ ]ʴӧ#pxaXjݪ@ ׳hӪ0 kʝ+Cw˷/ 8鷰È+^̸KT0˘]̹ϠCM.Sp!Y0„ղ]Z&[ Bׁ7o9L?%H1OvrP'pȫ`Tdϲao]@`ed.,(!SWԋ99@:xM!P3h@<3%@&`0ec :Ejz9tA/h RzHҌa>tk"0`k&6F+N%Xv$Mg߰ĎChA:@ƄnOs65Rd」eK ½"!/P_OcP3aTvJS0@v@>-+VFO!,!,!,!,!,!,!,0 18 P "\(Cn՛Q4U!4C4F Itp!,!,!,!,!,&`H*\P xa )@ď ?p!Ɠ(S\ɲ˗0t QcL6fHM@, ѣH*]r@ pn   qX`2]˶۷ :POՕWnkXc˚E;.È+V9oMXE 6q.M遍]9A-6A|5R;tb0"}.8@m9Hq. rb`Pzx 7[_\ET(A 47}L B4@oĆ-)!C5\LAn]`rMADB (T߇‹@tKGN@l /Lwr$iZ60#ݸf &8`@)0>5D%M1A |0P \C p$PU CMP瀁$plhP7=0p׃ HPY 4 'V͕@Ϙ"P\6փP =&z"O@`@C(,T滔Z6;`HA h,0!># >80O| 9@;+3S"A10A[ t@X A,Bc D ET PpA#`@+t`]!P<hEYs/RtQ5xDM "d@7E6'~:Ur`@ PY'QAJ ,"*e*B%T#8~}_^DBMsX @IX!+8v)d0"Al#4V>4c6XF9_94Xqt=tG}wTcAy ?/\Bdi& , z3!c$&6cPE*X"RP/"j,~d$<<6H4!C7!KȐxWBB%"QFcy"dj9q.M$c 'w984B, RTU{#B4HdJ9 IdS1x Dy \-@AQ:"HL$VU0#UHQM dN&8;I 9Ze+(@Um” DI'y|%bBAWB9 Mo`E)@NDI @a8 hl:D*~@ ( X0̂|R kЎLH,R<rfdZ $`lOJ6kyM !8IRhyc' auX'PCHx4qDҭ ʋ]V ȀnT"I[7q0 ""a$cWR0?V`ID2mb mz.D M \by .8ĉAIBUPD7]أHg;8`@z$<$HLƶ{f~AEebF7)) &Z}h" ^6:@vC=.6;`D!X GQD3kD^lH` +VBe 37h0FE@>](KLߤbkN."p]f5GGwF7fD^6 ƚs0jiLRmlY.Gllf'M=q9vPBm_D`mDb ^]#ؑ-V ۄ ` d }nG-K #B—pZ%ɾ)3k% "IGv6Q qQRY[utMBάqi0`ȭ򛔕 [s"Mw (f)_J}FoxG,1疠 #Or;&]0v8^hpF%yf" o;s& &v.ǟ$7X^W֙"NHTVߤ&$ J 6VbLG:q4v"5F1%Mv$1-1J 8JNR*NH}]mA7}#^"Eh@Xz3Gd_ P3=rb&t H6e~cP| 0R)" `"P6Iтɀ A0ubh" $ag.wˑ2vW|v0Q06D*0W8/%q rB C\qP{zW.A}3#">7(vz?~m< djJQ?RgAaYTm6 RBhRIN8"wc+r"PY#6>) B>ĥC;Bn1Zg^B=q3:QqM!';A `-8^WWB`m0(F}y mg,`g9 Q1@:ؐ  @$`{#BP!# 5w{ÐZ803b  lAD f)0 yE"f:yy X P&@/;|Q ' &r@SglC @ ,Ȱ4 cE>, `]xV1aH. , *tVz9$P @ Pt!37}ā`9HKB$h" P@`&!ACݒMf!  fiYDD PR!ؑ[u:'`+7Pm!r0!Lx |G2 0 ) )-Q2,~!cyc'XK u`@ +E "@cA zKqC5s@{EԂX; XxGApWB\?\֑  m p 1K;"1AQP4 cۉt-;$AP *g:`Rr% 8hJRk#P r dh'MP$PqZI%$p|I\W*<`Ux]gAXDfBt[%p;ehF@y1!sZbsBW0G9c!P B8AM{`(upG*4q3oԡYq8k/daR}!%QR %QO`GʎU/s+f+P^3_[aBt-a'|7_8 غz=U_U#ccFf96=  t P|Y$WZ.\x3A5^bjxUhpvf`B19SQա1nd1a-x 3 ;3\t()tq8F'Ke8^ǔj,6eƏ qpGn%"A7.Qbţ CU<\ʦPALrm 1͋1<[ 1{ͥ\QUL"1Y 0wa Eώ|/Mj"`"p wG *dG ڧ2қW<  F8?$Y#  [pT.1qgp <,+u١ UE/+\]%$49{A`y %Q|D0U}Y}z EopN0MdR'05s @R s'sdc҅Au6xA$p0-{ t#B͠m 6 ` !ob_tF !Cr .Jg'W[.r4) /Ԡ7"@qb# 8P1.|5SiyAH&aG1#P0!6`r jTQiȌ! 0 7G_,6.՗,@t@.'QpR:PdeR[pThJ\ PS@iOp e~7Ghd9pnt>KVE8䐋`z>@.cQlUR "C' iqMPp 3Ɩ22*GblJU{6vpqR'P0/mq$ Bk(@Kr "3y*F'S؋ls`/\uy#ɏQa&@{ljB[QzAC&@S}$7;K`:L~ľd9%&'o*jɑbV/7T1Yl`1a4H`fā-^ĘQF:QH%MbZ(xRL5K8`A,tDҒ!>O TUV9l4crZS>p@Wu^ 6,a=!,`H*\JHŋ3jȱ#&,Hɓ(STmG +cʜIM ɳϟ@BРH*]z1@LJJu˪Xjŋ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#K.L`*#'Em^Tت Pߕ j T? 4nlM5s (dtPVrp8\R!xaj !Lx`=hYt=~1dG&XƠX>XqECRawJXb~5V!{uhL)>≻X|Ҙ`q28d!ȝ8B" Vrz8#M8{m]uaсf\#k`ء^fY_fTߕ.$kA馝:_^0YIRh'IYu"ގfܝ ⟛zJjif˜*^S&J(2zDtYRZd]~ᡠjdwL*a0YNfl6BƵW *樤[f("gQkUlkUy1l:zqs!~Mp"+ㅱ*ief<< 2<ԀN6xuo7+S|?!` 4̯ N \P@6PCF M`/::T[B?qL=ȓN |2K7 J2N8 Ӄ5EPT20$15X 2qBV yRjяظE `p`#(b6 pYc)`A H¦E` 0#Ilx Udc^(@2@Х 0 :"C[5>Y#"@Q$6h4ḁ2 < q<  2 @(;pb45xyQEB0>1/h4q WbߘƉ2pchE,\ f`Ɖ:FH2rC 3X2!L^PBT9 @c/H!AĒD-$@uL+xzYPAڀ d B ABf@*S$ EJ`H3@PMġ'D21 W3b˞U<``2_pkc\)B X2xA\bR(bUH@@s!y*L@&R *^<7RAD6` }6I6`.rԣD ^Z@Ũdpט +aH `"@F ĝAqhgB&`6P:QP.`P 7a΀FEMZȶ.JP d @ , dfuAA c|:ڠ7b?^%S1@5bcƙpB.{Ѐ@pM4]P>10** Y&F168q1PEJOt |M/Cf,@ŝOX| D?'E7&x"!qqF * BYP~Gd@ET>wםE8fl "3>HpdPjw_(A"J|o+| ݍug#C;4HL-nP%)?d 4y)pA D | H:+|`fj[PÃQȀTq T C=h ,P&@q %  {l" \0 0AKP . G=&q  l[H!J!}#,4 `>QoC`0Aԧ^u [ -8l3%b&100 UPE N eUؠ0 7Ut0*  -X0!pSPEJ9JSj1pd @Bs$S>{PE0K  8S iFؓ?@o)04NP " -rHyx` Rj'OQ - wz,G#0VD @ZdxIp1#ߕ. -EvwPgXk!_) ^ff `vP& `1B'+v@hPے)БCsX )Y1WB7i PR%ĊbjP*FdqEt" [ I 0j P5K-( *JBqo" ;sƒPOfQ r[3AO%11wOo_x?9;60a15Qy^S PrHUY2 G<Gcd!VQ4$&Qʦ$%hy%r%NJp @,a%^||r2l%CAYF&靝1$yiDPtٝy J1I`6 I9_x xQA ~a$U(Bܙ]2%ٞnWҙ'AkQ2cN22j4ڤd?j4E:b6#A&џ)sQ0*XQQ:-Y !,QH*\ȰÇ#JH" 3jȱǏ CIɓ /\ɲK*_ʜI˜6sy'ϟ@NУH̵BӧA@JTc$۵Y w[iʝ{ PN LÈ+^̸ǐ#KL)y+k6y9o@!,,`H*\ȰaALpHŋ3jȱǏ CIɓ(Sj ㅃ*cʜI͛8sSK= J-*]ʴӧPJu෩Xj5)mׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ @` rH ݸ9U"Hr F(Az*#hA @ԾWA^ uP@y0â$p@wE0@@`p5x~d@$EPQfY`cq@6M q80{cFd;@x硐NޏLPF)TVi%XޕHfɥ|)bnxCP08Kh'8qCw*蠄j衈&袌6xM2BkM&3$#85}J p$Yd耧n9j2Ji:%Zap7\@&& [{8@XHvP;a 4-@<3̈;.H`b@`(8 - ,; ^ $q 4&ʎ>&$4@ g<@;tqñIkVp8$]&'p3g(Z&02MM7;q8O @ `8`2 ҔMG(0Ф \8):`@8-pDA!5n Q+y"@\! Aq!0!P ~ u )y!/,^/ٔ@1UMjB  O-3R "~сn X:RjNp@=0$lkhR7`,`ktp ф 2! t4e UP,Ƀm#B玵!zó"P!j0HUj"c! %ilc8qǛcD ] 8DҞL7)D?H\; I{|~Xp NćKxg&E RcS8 tHȟor @!'{yA\!E~/IA Q{w& A ^p9 |mdA h@#pBddK_x[X |4/x/т$,CaA k)@J`ra a@ @&,&@89Xp"û Ѐl܂8P A =Tۨg\c }tǯ-8(q4qH7 41X8@qƊM{pG=m<t"̰32p+õ2 ~hCr(&u83>A0y <0 $ -zwFTbG0 jj Fo!3Ƴ:S3`FG`9P GɃUs ;GANC`S7na |'.*7,zPGA z0@=dt`R.c &pҰpjE %k@(rzBD{~"X`kix{"m `]t#` `9Q0mDo&֠[B]1'A* D 6pEψkPoΑ7d``4Q uAH ! ÐADu#  R  7ZSs+*'':La 0G@ 14fXh'pF&:pP p&J"QQ'Au/d &{H *%'E ndTmC \wXgp@ ڸa`su/a2+ b]$x>A0P0 Ȗ4iW9|P\0Af6Q9PUu"v"Ƀ0 V`qrTX"p>  o )IuSD5Au9u 9P 0QuC2I)e}s4M"yw$u$P X7|;1@(ņ dmS@8/@U0@A?3ipU3@'rei`* A|( >ʇ`͵HZ|ꀣ:4#I10<p3zl-pBw-8 `V1p 9#R8p`_)GU8^@4/GcUDY,-`sd8Wzr  Ph\uI`zr0%~`%`0~&*z,zi6#E &0F *YRG$.93RIuF #DTd) #*-@w'Rbq*rh_EaFFyta+2X=U!;fq`GcD^KEBYutp<;*%+d0<$-0)*rQ'Crm%A.P%juF%B~7-KR@9Km$ OA;jm.̈́ՂV aO/4)B Md*2. 8bIRm#+%Dl0{@ 1PZ :a-G_{++乐 OJ;/p);d*]cM4-a>ATNLjFtMKc ^ht?*aQdH Ob)˸1{Iл ѿOK L +/Rl$JU캍rbK:!,``'8*\ȰÇ#JHŋ3jȑ-Hɓ(S\2a-cʌ9r 8sɳgDZJ4bH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ L@ 88d1װc˞M۸sͻ Nȓgz 0 '>z j«CN ҫW?}_><ٷ_C‘_~G_^!zc L`v8QG>8s8~ @0@ga L cF8l D@1SN:d)Fۘ9$S$թaƓQ‰[9Pg6JI`nꠡ8(h{Tݥ=]JP!!,P!Hp`tP‡'8!āj2NƄByƎL88ËQlٲIi)0&N8:I Y'ΠDtLmD:@@В4}f8U>TDZN~jU#vU5΋e8Hu-ضwqWH!>Fg+ݯvi԰5/s"cףHС m@]ႃ17 -zb^MPd3e 1$H'$1QŊXE PCVE`ʍ3\A@!,X:8 CA TC Rx1a/bTÌ Q C,!,P28p@ Lh@ :t8` "Dp)1M:F-ᴜ@&I+ Rc81T3M&s`;qF ёMN(LWoj{8S"[R+SeJ۶Y5rⴡ:ձ k 1Ѫ1S.≉9 Zmi4X 8`hC[6S-f*|Z2aS;9"4@-χw?Hz[Bu_f.yQB U>,Ԇ_eg-4 r٭MBLjԕ^B萄jezN4B E!*H0GAWC2bbSK9Jd~!,P( p $\ÂL&fcG>(8qਁR !c1]dS̈́2CXs͜)Y*eTЧW\ GXͨIJU:p U8u(69gxmv(J5f+HwisL6xa;%L1dlo_șX-h)l2^veӈLعlл}Y/O\qD˜ ώQ#DԈk!,P<t0A `C 8сă8!#'tHHf\"G;# f&O5jX M S % tA@qAV9R/#AY= 1 aCH#D\u;p (`C\:AݸsN2X 9AD]078DP )A80̫I Q@U\2RD|A*甼B %,1@C ECRW)O)E@AP<| 2,ک@ P8BB@@QFC8)G:됽: + w| .^Vtiu@CJ $8Fu@t90A$\sCq/$){ubr:;@(pNA.0p b,3!P›] KREUS!D@7ȼAs879┤ЀN;>;:iL@!̣;^,%YH ; !Ac,-Eri@hJ#", !d FQȦU $cL: l&0vS 6bܥ )i#:@;bEG1ҐJo<2\D B@5vX <1I( `7pX. G  HwHŒpabHݗZg `ʝjfxq 097d/ Kb:Ќ@V8\2nS Q&M*mӛLgD:6 P< Z"&!68@m (*a @/xd< Q%>K,bt"lǛ8"p@Z;)=.e8׹͘DWn{t@3^}/ybw D䱎8!7WtI2 a]  ?-b αM2x~Jهֆ%AÃI W ;̄< 0HV즰@ Ա4xKy7vP읂 E'Z%0@$ A]$T!!?lAUĀ0s(teώ^9z!B!19/@zP4 ~8C bPYcE2wݑ,,|HFJbehMEEV,ԡ沼vs?Jqڜ6Txzo:e1To8"pACŇw{"|YhY7Z#% ^9P:QMu\"<(_ywWp_RH80-еMtAܸIwܬ9@%OHp$dp@yFȢ+*^y~֊P kRgش]CsTDs@2?9@^HǤCDV ;H;ql@,-)|:ĠA.Wd8`h$Fg b}`M`{Mt" djp2O$Y- P !y9q `4A ~aA`4hG^5c"Š ,>7y"A0_sc+S/\ Xj&n6k ?suDG!@‚&9  `{Q3PJF7x.nq<@԰E#5F3F Q3pughAs9'UR z[}H7 t4QwY@.'*u: C^ Os$7 0=P?w4qaQQ Ep!pibi./F*P(qAĄQ"s!92,&F 4$uQ>~T\4g \Q_2dQ( ԙA?FܰayK&I 47p A  65 5py@z`wa+ (K e>VGj4',8/@ Tg(}@6`STK!1{䨹ɂ1 pv^>|HHŕu[@ $Ip `͠xB#wVk=an@ Xbft ubZ'`UtpJV%+ '0wA|]F9ʡ*HYZhY%,g 4sdpL;V61~&7 YH{,[g? *Th/4#V@b / i17BF7G+iuFVdP 6wE{A ۴ Ev`4|2e1PqTA0 NQ? 9G`PQ". `!ziyR"vh ';Y$T ^ sM@2u51B0()Eқ sȹ0,B 0`%iűYGz: 1U1 g46!q\ʻqO%rV%@Ӫc\YS20)#`w;,&z#0"*"OJ`Ʌ3aCDa43s}ѡV>}g,Ԛ2yY4%@)0;9j6ET)IdxW'BEJ`kDq  P,$'k9EHAQc WsY} a%qz pqR"4v xy0!iK*w,F{Ɂ /)7DpeGX6zn߼'p`O謱 ޷ҐQ W ON׊!y Di|~npwp8 r,'RfdDF0`Ұ )Ē,#`0@6"ḤEwwx&us9~ծm 8^SATwp> s jW⹉2I`+[Z~5Afv?y B^h`p!`6.Z#IgH׌eW\47I 1!h`U=׺Law`1 21O>PP:4N];~-^,HƂ.Sx_ 4hP Xԁ$XpG< V碸Tc`@w;T) >}:TTU^ŚUV]* N<`"6bH@4C&8p Y`!AAm_ xX+0\ ])T{MFZj 0O`!X E ,>lԒ;`/O/tP+;Ya A8h&RҤG^cpkԾ}>p*ے pj: s 1 :vYsK#DO.,P!J^ԌFr  Z(^l"@2I%EjE'2ʂdҾ)mEp\́4d!-"-,7uc5N;4KkE͒E+߰rJ,6OG4RE?}tH3>J0`"%E5U!, sFH`fwp@Ç#JHŁr:\ȱǏ CI䀅]a˗`h͛8s, @ M5IѣH*%`%J}&Lʵ׋ LxիֲhӪY XYc3s4ZMo9`!PÐ#G6'@wIǛC*Âڳ'Y'iqٳGޭtց#Ϟ qͼ[VbtϳkXus[ia9ɟG( s>)G{a8 & UY C B|iQ5Yձ(cE%WQX7#I1:#; ft#dI4A6HM=S"Rfɑ1`PZJՊ PuDToyvRCgYig]) @ <)* 8:Qp`6f@dԋ998:mf;:8P:P$@JAjl fmhb'Q1+k覫+k\ >4F1M|FWPN%H$@rPmPa`-;AG\ 2A AwM4sD=DC,,$C &(ATC=^Me DHlZG.~y5j.G5s@ؤ]=-TwnG7G>hE ˒+5AH+P*NA8$YВBCT=@iy8ே")sU!T;{\?a(7 0W.>ژR^(0P3 X3`(!,PWH A(\РÇ#J8&dŏ C:̨8(Svl(ˈ۴)RJ/s8$͚pnIeO8?k X)H'.uH>:a*ՐVC4 4Яh ƜU״p&y]rҭ{Be2K@֭5%T6n>˘7 Nr,L9cRES]ڭg9AzoGD'f;-F,mo|@С?7F8j!,PNHvtÇ#JH"XǏ*I`6pQ% Kʜ QMj̤L #͟4ui˞*%3NQ8O' D5N9T@eQ5gPL |TnXʁ;< ~6R-lx4V̓qRr p)WFz&3 |-."91lфIPl;;ndr0/qk%&0Fs+@s)CO ը^"Jp?q 80A$QC`I$@1=HQ@!,~Pr1`;LX2ŽAy ȱǏ CAtp0ATp`‚#ssgK3fFM6 @pa '{JJudJpihN.Z٪fzQp<+Uv7gڢr}+W.ݺ{9Uxb 5چs%3B #KlYf͇AT3 4BMɒbΌ7<2>X` 3vp}ڷk`9Mp~N~dtsAr|7/aAIG h߂EA4tp% B Dpg(n @$!4O6ո` 1@68 #En3 I <`%ۉRAAIhdedЙMpu'5%@r-}AcUEUapi`@!,~`49H A= jiqNB /R,qI'Of@1 !,nN(*T(@‡BD&\ȱǃ Ǔ 5&Ā -!0G h3b*5a1ᄢψ%bT8/)"ҋV:PBVdAϕ P qÃ> % ?`"YA!H8aݝVFX2WM',4 T櫄o[;…0I&O}{6hμ'F-3^_[9qf̨QcF8q`*7 :MuHg& NAgf!Gpц_dd%F.Tx#qfġ~=( ȢG:(D|ΨFq$1ߓEF^Te\v9"geb{:NlQtapS矀2X1,injF4'%j饘v$HB-qw(a@#zfꪘ΅D Ǭ(^ꮼ9\.9߭V ! %av>:_& f@:MTي!|r,\A ) %چr/ _ 1|ow@`Ìmchn,ZB %Kf3%T'Q KƇ'8рs#0En*=Yp{2Q5jXٙfP>i6p{!,nN8 *T‡HDD ,^ȱǁ Ǔ (`p%" I E}bF1$D!J!D@ ; ؠsшB/S< *_Q={U|h{&A.` >(!zFDhP_Nѥ!wvAkx^&VFE?]].bGA8p F##$]9^עS~ 1PDT@ #8Іv at!p5Aaf8S A 8@"P %\ՌZr 8@yc@.& ׼Tpg*/44z""A-`@m(BDpL!0 @?N=P4]Oʗ_BͰ$K P?8MLčï;l>t0VTU)@VvĒB ·;^_ͣ#-A$%`-M(GAOЄnG^v ;C MF@x%hê0з.@[7a{(  #d 8((@l1 #Zh0-!ox]V*9o- j!JZ@ 9ےҽx+y/"]$R$M5&&g@ 9Sc`Kr.ݝ 0WOq?PNvmiP[f/z!.Dc7DBB;xϻ^>(>vE"-}\ЏF5=l"@o@ZJݵ,wK]*>,8`ʑ ~PUa>AT?*(nOw @ 02 H spG:n&1)"u z!b,bA%=`5 Wd)ұ""jP,3vw !q`yqwCy=qHV0E+gwxzxj`2.炱]H5rB6[5)؃%/=!,`098H@‡#d(E^XQF 0H1I 9sA.clQ g-JѣH*]ʴӧPJJիXjZU-U aVMaF۷oʝk]5sB8FW,RmPx/P7vSMdɍ|yfΑ=pϗS@8m\^8mQ-ivZNwh qŴC /$M{' @sxyW~{c;<2$4:CD \qM O>M$Po !,!,!,PP!H"Dh;0<СEj2jܸcŋ7T#HpR\Y$ȕ0x2&˙ kL3'9@4nbt6m$!4w6q( a@lƌE9qsg U3hȡ[wҊ!h &ri8C8rpy Z];ylAy^s҆WZx/Lܝg7LHTM O@8eJ#ҧ $`}STO?a{!,!,ON38 @P# | `$jDČ^) C\2`I3I AgD0'>@x&A(tI3 ՘ЃFM<5գR"VXg̈́NxS5vI<ƒLbP s!#0\,)3\hƩ7H>kv]֫Wf(e0\k,2RO6Qן۞^ri^;|B͓_Ͼ˟OϿ(h& 6F(Vhfv $h(\,0~8Ab1hz!,`H68a|@RcA( PAQN ś!Gbp dH QrT1r`AӀ@DI0@CrH=DZhӪ]˶۷p*tGpysS  Ւ&\ݽܬYϑ.qT(tg0x 8RiJ<Y!c]-{Vȓ+_֯?>}Z̓'f(I@I MS !te)"0 #P)@@T̈́P 8%MR9 sv *J|t@"AVaPlVGKزA)fA!@97!AA@ 6*@ 6ȠA$ @]0AD P3p!UD`*)|t4s( %YP:PS8@=c YGP 1#N=-h@3 p@b +)$6Ztډg8T@9JpA@8` N!@>" TEAdT]jPC LJйx^І@p϶2 T~!j@-804 u:=7@<I C|-ہ &(cVBWRZ!1k҂|xV@P*@VTNѣ/dzBMX)0P>d ̈́u+Ԃ G@SP-t@z<)O3+@M>24uH؞[{ 4!yA^\f'I7Ì`A,p@0#T#Ex&w+@/6 Td o9W(\ YA0 mmr.!F[`Bs$ X;>" dDR_t# X,4DHi@Lǖ7Vh@'|ch9 ^]XjaI8)R\Nz~@* Q,'I#A .`p 0ȣA0uIzupX`QX3< q[/'! hЂRs1"s@v~1~2 "*CpH@18dP@{ #@Vc*caA L"HbS%\A89p 8ZqNw}ad0$'= 򎅤M 1 !GD1(yZă _`d `YB @` 򉟚X`&:;P%%@PN "jrd;p%>")$̐@QHdR eW$@i qojp}J vHh؂(88@܁i v/*T@#OJ?LȀ@Y#TI@6r] tEڡVtD!8%lD&%o> J)xX>@ lH0X>\!מ4# X3$M"$%`lm .%AAp)J@L yv$b!sLfBh>4>>)═dXE,@yȈbvA1,i7Ϥ0˥7]"_TdCӉNh2Z24Z&mzcעMZ"QA@9Uni&W!V{[k"i ubuV | rB#V6Ac;xN{>5kk_{-F5Z-5nArwr=[Z@5$G00)o4\:El ;Ju^`xcPԖY*12aG x‡>ѷAH@OHj;!7ͶuzBUH,r3eoҩO6DdD*ŒZlC&@g,- ZV* i5`;*](2}al6 H Y#=Wx%:|z$5X(`̤ _;dX8)Y_FqCFfƏgQρHHB 9\ufPl1a ސ.->$AM{#tg0|7prP@#ldz4p0;p+7c18 ˂75~8=]!6s`0+ X#6E%Ѕa'U0tЂ}B'O¥UzC 1 {4[P*yhtSғ0h5 # cAi`i-v Գ 03pha' p|p7aC 4$p @O#|ACM;BW ՃQh1)=0-B2R$w #! T )`1n)Q?R+ RbA=Ќ"q5%3Cm! xL%DX(m@s`Q6p (P0%́*DB6sGomu&>+S1qH]V ^o i1c-T֓ !dBcS03gW12a:qr]\Q001dZR+g@`ClA U PJ֗v i&T+"0lG )w`LS! gc:Qu@Qt`P FɚȑvL p>gNd -.*pCp 0tS & Pu1<׆9Ѥ!Qprc!1zm5%a!16,q!"%a@2vA}oFQxr!( !6f&"7ִ%v].isqdQ}cA\\!lVp$-Lu!bYvJrA}7ʭci%spY ;{ +3Dn!r.OnkچovsK6"8%sֲxo|TnO]I 뵗f 1"]i l]˴.^47x`+" Pɶ+"n4®n'XZK] zJ&a[+_;kICRm bQo|e# H;11qf+z+Bj2s{ƺݵ}1!$i`~m2eޫJ(11RoWKl+vtqJ"b` [2Hb241o:iM[>b{weiԸkWYlq|;Q3d+1' eeSq0+`&Gj1%>u31n"HL%72sCל ۢ m4R.), %/-2iW`Br/X9Z\LY+q .25D'PV/fIvf yKq0i!9:0#3XA$ `g6Yc4j`7a@,aW&jY ɠ(yGlzb[[LcqP!Rz]HQq  P)$\a1lR 5Of+Ҝ3)ۥULjs1pؠPc"48w &ȑ%tQP*GPWB\q0m|D])2S0aw)[q Qf ;/ @-cC$  1/;BA_FL^G^b!ĽkhsueCR{3(p0p3 R3%Ú程!2a=}@ge9g. ȟBcyW2faލ׻kKI6˞!늑uQ$AhhN;r ]LrȠ h[ceZ&ݎi^gj1b ^\?=BB+'$flX-ih lko/.d&"Lq h,|ݚ)jЂ)#׾zu{`7n@Ûk U(WIH+Ç`S1TϞjV+ʁ] wt/ 0]jAPtBnVIZNaj\X1&2G6c k@KFepVOA7XX* ic|J4-`!@gvi&t/vlv~4ma4+p΁%8d5PB/ T5 r @@M*p0l:T,2 [?x K`X5męSN pH5Й p̎vp^U&SX8Y1дhWch@ᆲ Krupќ<.8⁍rfC@QLqA>)WDE4qnc+eh]ڵm|`\a*uxb;OܥBD?)qam*vb9p1p]w!>HzҮ21 p` b` HЁw``[ȽH`pŁ,Wa4cEm|#l) voCD8An  ewz&ӀH@!hp&(^`(`I7>`̬)7af C!R +zhic2St&Hq ofq@MnaJEMo)xJ@AB.elUQ0ANnR =Á) lO:hdbp`lf!k4G'rW[`(O@PGM :r"bxhȘbR|NOf-`LJb_ PnҖd*bPR:pS 8ZK ~-k (:ꁴhrC@Z_SRU;e 0 ApMV1A*%3cz ( 'qB@[mQ z,-[@5ρΡz\bsW&Q~rtɃG͆^' T&0di @:sP얷@hb '. E| xRrtk FZܭ!EC0 &@*HN!2I %ɀW&̜S!P1 cb M Oې d2<]."%u`-ʳ8W4Bvkpm:V%yjZRȐJB%K[kd%᤬kQ^7>ԏD)^֜']ڕd!eccRYħ,l\CkW$/BmgȊ2`-M@ jCpjvck-2\"6 A6V-m]v׻nmC^Mwջ^n6 ;\׾/؊[oN fC=H |=^/iNJ;BjPH1RI$)Z/ӷB Ӂtb :8vMn'tw( d>aluM`G-mb:Q`;Lw;\7xko> g ߋp7_i1C;gS_9wH[Y7'G`Y !,XHa‡#JHŋ3jQ⃄tIɓ(SL ʗ0cʜI͛8s9ϟ@ }"r`8ӧ@  իXjݺU \ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#sAe0̹糡^,p0a&M^Y˾( my G`ȇ+'xy˝;]zHʭ_.\;U-~n2 ߙ>|ռ-CAé!?!P0,p=AqVZe 2wZ?yEpj`@E!3u1|gEh.ڀGbN/;ˉ@6D@=4h@<Ζ@AXriT ;D:)ЙhITؕ m')@^Aph衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬR7@,F*[*E{]0P8YfOӫ_Ͼ˟O8ߟp W}w_xb%_~W=WDžh < @^jA!fa,F/bxa9ib2(&BN:F>`"ÎG#}@P7dC /QbUb)ؔCǓ#"I 4K78` +^xcHPM1)A#^>g37XC d@Hm<*g}B4Ĵz#@4͘seA`=,6f4bJ;bN%J{_ ,8@" @ x<·b~p-"k}u |0!,8m p@ *LnÇ A| !,8(c@p@qDpCALq !,PP!H *\ #v fdԨcD.LpBG8(Ygb`2MĔI͔9c0O8A -NǧO$ S`Ivq@ӳMո$XK9vy RX!?Y0@d  N|eoڿO4!8/Np{gKU璥qZ!ZEjv5l'qNF /VsBb, "66hm'ݭIΧ-( 8tk!%0BAO;(‚5uC\#0Ѐj\1 %@SC\@ ,BMY 24t Ln nȡE/҄ aQ%tЋ@@1 VR=БS!,]Q(*LH@5f@hÂhT#CII(玠;mȜ@m|p&M%0qӂrZs/A0p R%8aLmFSAɷ;0p`n@!,r`H'(`PA@ ȱǏ CHY0<ȗ0cʜI͛N༞ \ >xӧ-U%+׾PÊKA@90M`lp(Ьݻ#0"D@XR+^p`AA b˸sL ^x^ͺ5$ LJHxG;A>@(e{Aq1!+yŏWX޼wa8@qd@~jA`){F(!TQ@}7P77߇7b&` L7,$ XI@#-VF $8>F x$!?ܐ㓈ș@90BڎaĽ$@8@)0[8@hiYEB8>$| TMQ 9@gS@; *!!Py MPRbę~4i)~1@1Đ3mKyVRHQ] TAAL ]C:@"x8@WKԴ~Qf<@bd.ƠXM@C -}%[-]Q"f!od*ŵJA ЎEksbYCQyY2̙\PCTW~3XgB~6Zd=ǣe{QOm6t47Fu$7}׎8 6]dAP:dC')h~SfbQM9uӢ =ait0yB"|Cy)uؐO #%Y(6w|Dy"&XbS7q5m :M&X.d V!lO XGZʉy3+H($c~"@x !E ^&dTi%R]zHD|ho s ?]^8:ARB%(Dp8XPzYc@Ȅ8>;2l < 52H#Їd` ,%tq -hXBp-bXX׏"' Xq@ YȎ5s9$M0y s򑑄]x,b<8I!]-`rzoq$).s\j*y@zN# H,9`=e@4~rdr\Q |-03M 4  ԹN+kЀWl QBO,E〯* bPXd@ `*$LG*EZ>4쑕J0TA\069YՖ& c7'ԭx:@89z/|#߃W}?Bvv%h(Uˑ)e;P<"0@ڎ#${4!⍈=!˔`p9/`XI`f(aAM&$:HUvY8Bu@AZ2Ռ~n\E8O!$C1A89`d6A d;@ @\q7N9;Ng1tҬf A@փhSTAT9k3Vx53q Z3FKz6RE0:~u[$DWTVX8oqf\(!HK{`~xd^p rC1au!wx˵臄~X!A#FS608>8LQu0ckV 1z5;ZHgSaPos[@˜Y^H/dGttNH;fDmX%uhx(WJB>4>}7`؋$6,!|* =bruaR~PDP @EdO(WP#ksdx  YW#p }F.i$sIqD`  gYqFf 8HuH$k$rcQpk4bcU p mQtru`us!Rk0$ -' qe/@HQ ^nW2Xgn1ivq /!G(4~2|tS@& ?XfbQ8Ƃr|16 RdC A4=y()<y,%0!$X_ 0@4)* ,glN2s"Ӓs) )G9dA(%BAMA,*B]tDhd@"51Z-J1_U17;%%A~ө6tw*ejJKScGV\ŴP{OH\`# n];_h;!@e+gr lKoq;z # K @Ǵ{Mq5 P&PH 0mIJ+;Sp9<&cC,4)&GAUNd x:hn}_HzNǟZܠ &`(6j(D+b . "B쒋;`Jv)+b 3@)-~8z*Z\=MB8 )p6B, r( p>n /u @lA0ޓK@.0 ؁b3qĿ@  +H#ǹ#P*I'9h`@cάy%ߝ=]*ў Du0/ jhS7UװcTJ`O: }Jt80hj3s0Tp9s$&Q.up=! I H~w}LJ6a0F"+ BI:wy=7ctYvYw06"J " P?87@"t` $UD3t! ԠE( !0X:@\SOA7%IpPt$1:=ZO=P$H_=`ZB,D@GAb <9,@NB8-B)b@5"@ )o4EA8ydA /F}MAB*P w)W9=eʾb adV `8` S!0-:7 @RP:Pp,B$$"1=72.Q( ͟W38e APIeB @'@/0&85A] 9`B93%C } LkE 5*6qBX`Мg 8ԁu,Mp7roc;\MA8PL2'.qVy#%T2ͮ1@  ]\ꝷ9Ø@wD+LDc%# 0RhN+J qvT z8AF Ӏ*@n5itfԒ(`ul4BT@ "0"A ;1.ݖ^BApV=$Q0hG tQɀJYt*X.aҾG cWuՂ"(d%+B%,!0_Jd@ 1  ֙kA"68(cVxT34zx:0dFHa̤[0ŢDƱOKk";Hva2V9^!2=TEr0zfW"wC @i]%HI(q}Hа{c'!X&4!WyNaBLqx[Q >  { Ep?p @%&]ow}E0 @0(/~YrTb^F0Y\% VV* !cvs-E rL7VT 5 ){r)zr7Xr$'A/@@ 0 0(Gȁ2 hSd+ A"GhC5 g M(w 015Pwr~75FQ/u58'QuAFQ<zbr CV&$KX -pffA"tθXq+W*?9X:qct `O0qBJ`[҉7}G\7n3wV "p:Kx~rq.u((K"_6Xu#P8 PadVM@fb-:tv6b KD*۴,bxa1!gMCY`+EZJBG>IH6K*7 PRN)WEj,Vy.WNgfNᱚj>:6\bp(E\dW(`x)1=@qj|&uv~;ag..M(ّ.x"1Q c:$X/`됔.k~.yW$K)D1ZA%TE(). Yd =FjQ$"X(":~X(Mo5ٕs;[#!yԓP905 lB8%ˀ p-@}A o% {i7i4%+D'S>"'֓ 0$H,9; lB AwMx@ )y poz`  /` 8}WX 6ܠ @D) 9Pre $FBw Pža1(i>lU^Vx +ﴰ- y ) 鸬ro$`Q1` @*z,*SgA 4a@=@ A2~YNA f"( '~- 20@Is&t0N9Y2kV]~52QOmS堕q `C7.HHТjL =ȓ ;eA:l-8Gxvp3:ҦO6adōwE`:'&.S sG͂ lAf:5HJ@X+ǃi  r`(Z X0@l(H * V &ND8s`j0ȠD>#HB &P8 J< ppp`:%/0:Ё "@*lv4 qC3Ia<1bZ E?iſ\LFi3 6( "N,2r 2g)#LiG41v xh!#O 6Ϋy@zdO )sbUIyADpV4[m j l  g$ Ɗ(pZS?*( 4hX0փfu\ gQ4~ Ҁ z Vṧ6-𙧌!)ٽu&/,!ǁrg"X\twDy8`Lσﯼi8N $+ ԩ%#3a#; JjL ۈÁ#` :rkx2ؠj:[0 t2j})*pI]{`+V+8s ة"" A,[|1!G-8vͻ` ujOf\l2]jjZL0@mM`b@jP/ !@DD#< ,AP, ~B ` I5![g3Ih8D" YPxp,: T:5WE-?0ƅ DOh)rэo,3B"B%0c.5mc A9y[4 Fwyy8HJV҈G,Hh@,2؀7$'6De*"0h9 /UVPÅG8@001` :8!qa*9H/xǂ#v^:@q6c h Y)R97%5ጴ@'XG!B$ k 0p ZH <)IP^pj@:9 S0pf4W&!"> gqCpE,VAgh`ԫ]P'@ `g"t+;K_x!*A@/ TqhCUfp8 >"tP.0^%(c)(.[EMcuk9["?A6 [)$oIF30|p@M;gw;?S]LU&p%^XK(| |$`RH aAO xAxw ^6q$3uŃp=@>:Yа ŋupeL35nbQFWlJ- L3_팕dM7r#}-튾vd&wYߎL]Pxj[d8r#9R%9ϲ:A J"1p]ʴ9`!PXjM)[Ê Yrp ضK˶mA({\v 6ڿn6;㌋x˘& `"FL4Alf¦cv10,wcW f2,.  |11E:@ 4qvDpyg<ڷW*Au˿ҏ`ǟK8`A N 䆂: PulaGT@EpP`@ T@-( ʥ<Ɉ w :`.($Sԋ99P7: Q;Nf:8P:P$@QnaZyA^L tĘ7P<)#)(K0衈&袌6裐F*餔Vj饘f馜v駠*ꨤj S@+pkڨY`gj#N%`Pm믾:k#gYmv8dB.PB׎[,kU&D[ X97 G ǩ'X"cVǮJ|*;Յ`'O`B 8o~Ӹl sBϦP1`0Q2N 5 ĜO|=NU:!bOi]0q0*@^!'  \pmE8?9:S ؠV@8N<`pt ?LrݹNP3\P?@HN~oV8U_lgs|v:fVM׿]=x@@0Yr|5k !,xN H  aă, 0!Ci0 bG0AfD([>\ @K >0ӄFZ+$Q ^,aSÅ@3@FR 1(PkAVp4V\ө*#3Ku*cɔѲ%L"jR?B}0C-qm0]>;8YmУKNسk@԰˹wO|u7Ͼ_:W$p?`A(ұE& 65 =Vh!r7V("wh҉(W(;EHXf_ -xAj08e?jlĎܼ#Nv` 4,&MFñndT&  ,| -P+6es*oGaHZߐz #BX(\v䤳:^$G^mG9 QLN҇yGظz l .Ђ93o=!,P8v".hb  `P|H )Rt@Q#.tԨ18j,R B,QBfCNƢCpz&8q~GMY ;t}a @mS,ZA`hf{y"\P"EО#΁< |X4_Kܾ( ]-!Frpj^:-" G#y;J&`5Q tPȆM'Arl`(\U區`KX#,=?0',  ,`J;xؠSOA@:` !,-PX2s!,9` @~]2;rN4f $ IF @ a% %z4@ d;԰j=U 0@t$pC !)@2P" ,\U[ ڕM jMթ@Pj@!,!,P8`(`-@L8QA<С .HqČ1 @K5pȉ&΂QTX1S@N jEK;fiT ӧQ- 8qƄЁ\ar&ak67SbqK5 \Ysd#Py'bp>s [~ өMW(t`„q[c N Ås<ZFl<8-ͽ^|{ ?2w7Th`Nu2䀂d҂!,X4/\QpLA8jPs!=~`Hp$2 !,`H*\ȰÇ#JH /VȱǏ CLq`ɑ(S\ɲ.cʜI&̚8s |ѣ1}ӧ}e OPjJPNhx`m:T[q Y+kKRځ*l 1<Տ6.\) cx D@* \#D B̴PkHU >8@ DMWЭ@VENA:3Q žp/^ bMEhTR 1 эcRytH;2Q2 d8lIU |BF [Tb! ~#C\fJXz@ghDsG<;$Ctn,W/i>cEђ SR4uCBo AF@p8u= `%uт@Zp-] L@l@H,!( >Ejcp. 4т# pK9S 7L dhb %ys4v'< /<TZKJσ9Q5f!]f \ U pděbU CZ~ %wJ7z@8da>1u1e)yD8M@{-Նn8["D @ C$QNJv !~+.#xNŒ( ؀-6ǚ/ O8jPCUӾA0>IAA8ѝROC6Q@:T@zV^@^ ^vr `i_#QhpǺܡ1=F2g6h#1oOGLrl_v| + 0/0ԇoBpl W=1{ x@*QsA ^6 D`@ ebtA1r&fSXulu$`  tPyAׅ?ǂ) uQyYCpPi%#  27 #@PB*p Ӑa(]uϒF@1PfME?Б kq   ' g&R N!j`VwPsRXz(r 9 ,PL 5'A^CU*x(A@CPP h` y8pfxO`5Do Nr#8&*0F5 / 7 Su<yP+wGqU!Mr'@  &C4$Npscgk@QY` W0qmP?'$SQ:q iP1f 7 #06Iij Xp쐘);`@w5f0%&c p58DfAeB7Gp{0yh0)-ЗYttqyAs>]lYs-`fyQd&P Y%@u"h!nuDx pq{|a(JDc JfGp)8^qr^ 0ǁ1#_Gj`_1GDCjlWJaG8O`!7?sJa@w8Ggtg*iJUnrFuk ]]F!,0+8 P`*\P!#6ċ TQ C"PA(2HEBXJ\&MnvDRϟ@ JѣH*]ʴӧPJJիXjڐl}bdPJNIevp'0Qa&DW ;q "7j$,P $ @m@2X8>(c :!,!,P"H$,8 Â:pËGtGjB F;\#ȑ#L8PLC0O52i*$;; 1"3R8@g"$ 0TVEd:Sܜ 9ŃGjx5;G`;6r2@En;6kY/#ce'&"džvGcΟ*$_nrLxyl<`@W,[G A"DL`Aq_\;$l;AĠT\- N;:>$9S9~jE !Lft b%YE3u@^yvRl(u֙L-@R=C<.yPKeu$8ބdT&y%Z2tP@!,Z/LG A*\ȰC&qb@!,P8 A,0Ç'H/Ɓa!-fgǐIYA"/d ̘-g|yS%M afАCq"3#P [޼UkQ0;t;g &؞ups3j6ju[d`_ ,.lUdKD; 0rD;{nA@!,!,` :p0‡#JHŋ3jȱǏ CN0BC O\re#rlZʜI pAᄂ~:>8X!ѧPV$pN8$!ky.Д`׳hi*X"E J\pBx1q(T.;6L(.5 3G'`&ͨRN:ǴԆ(P QyQh`v cEuroZ(@CĵNnlф"אB 8]A18A#!˂rADu'aK8ЏDT!y $@Q  De0Yu¥R3{D< '} 2@`rq<0&B$ҿP Ƅ@pF, p=td a|KC  [:*@ل*W !CI7" `$8HHӰN(QQ3`Auȣ  R rsl/uiD}l0"ijdD`^'IVqzը be ӞZw8Y2Ile8RFDs Ie(Ft}3}zH! 11S!~P^6<xx6M\1 7TLq x>z1M)hF"sʛPj+F5Q !Q wl+iKχtlB3=E,(GmfiNuzT"[jO2ӈ A2dQWZլ8 +HiƧkg62U>M L1\B 2`Vy!@"ֻbu8]W̵ Nrf#"`F BŲձ5b`3Uo#"PH0i~$o qe~S<RDG@ ^40ѹ*H ʱÞJB>:CxA~-L$#hd=$aLot)p2@, CG%Ύ,ą(m!ǹpE`WT "0G#O|3ExЋdD Y@'p.pB:0Q\QG L==?1 14HdԀjL,B!h2'meVBZ\; 'C  [H XDߍ j¤ȭ'7^ͣ̓$@gj2re-2 0~ *3Ҁ,)eMU.٨X q=OIAkގ+ڵpz7֠H 4,C7Pp-q /Pc:ŷQh@Wkt,c_7p 4IC F v 0 ' WVa`0[)!2\7gR$cl1# y["Qb~NGHw"Fu[@@ 12C@ Q` Weh@3ĆA_1%w%\%>{0pB#q0BQ vfAvP.92&l' $\#Pu! #d`ӑ@Wa7;5]2J(EFEnܸSV%pX/SWRZҎNHEpyю܄Ew4bP!,JF I/I AqАqSg oG.S`8)ri@ +i 0H Ɏy&Py6yph@ f8fP/X )f39 o#IX\Nt31 P5 P sLYI̠@ hg  >a2jR {!'@z8:Qeps Qqx9:s/d|5`1`%cc 3" 1dHBp#EA0@}SКI>ڂP0+sq W@p,jRjl 0NJn'> ِ,t6v0P&q*\C -Ж~PQJ8 R˕8!01t%e1rQuXeSd-09)Pt2%Q_1eڙɝ$Stwssr3${{ZrP *b9r&36zȑ2tw*1Gm1# 1Sj!bcS8>$f!, @HArÇ#JHq%TȱǏ C>L!]bȗ0CF(8s ҥ&9pѣF!]ʴ)G)VrpϩիXjCl[QhN$68h풂f1a/jYpOɶsn`c CLv);`g͠C蹴ѨSh">OY[QG{F#_<УO fMV5^7v&\p;m3m}|((=V~,V S^@1$S?X|DXaYtS1l5x&@=4h@<Z%@&T\yihXu'eBkƙUтx.Iy矀*蠄i@rM>$-(pH:ɃC1+Vj(8bjk iJ*E T%&>6묚VkfmIr@1lSC&"#ݶ!9k0vx''!,P蠠A\8pB @ jq#Ad H$I9O',IQҝ0]0 ԯx٢W,@r%I*D['`Ђs&c@ЯWNR1*um[8R E˯I+M[]:\(Qb:,AK !d\ϥH Vbx\d-[:ڸ.qt%D@@A Sq^e@1_IEDr``@N1=@DҎDD >1$m8 1;Dd^OY|cV,1$ 14`Zi;xVAD C Q)Q U GH2u-FEHHI^P*Jt E.@&~rE@T)w} &D:pa @@N@dHd5%AD/L 4}TKD E8K)FdJa_ =4 *D|\AsK(}Q8A180DmI ў!@TcBTµ=v&18`@/P׬p$:$*C(,:8uXQ| %D軯H<ߕ/0 Y~D"؀p[ <id`i^!p 3$@hܳ`; >80'10;/ &QpDIGRv%jBMAi+;F*)@A0B) ܱBD1p> 'I/aEm?:р$G"lH4$ 5 p@#-:gpɢrqaJ"qāQ PpF.GIF$BRD.AnD.nq 6$~(i:_0BL3!M !ՔBl>A +#Nd怈.oD̛5\ H5 &US&0xH殪Ѝ2!Ibi2(xT)i|_8 [Df)D`D]QV Š2=Jr 0<&<{jfDzĉ k"b}U3RS TSqMTZxQۣPB+53}-I N"䀈|V:@,pHӋu@:^*=` X\O;H : 8!$- Bv)h /DQ6@Fy@Znvqġ6p1^Gw+RGȔ :x޲%$UCDL 7WD `2Hd9qUy"LKDPy/k8?1NJ% :lHj/yȔ,YaXqKO<-YI+Hpqh 3x!Bq(sjLh(ZY e*&Rn D&2:"ٷ!{'&ɀhrڈ``Vo,5 R<>#"3n4Qs!i4[`v$<`<l6K,d!+AApץh,s{FG LU'<\.~QU^D{.˛M5yAdKqJ$؀QoM 1HJdћ,OEn[l0p3s3c: " pM<<8cI$RqM5QnUhM7>*]zlHM؏ҀBE"` at{-¢e*)6KA %ܣ6/H&BA&ΗĖonH"҉Lt"B-RLIf,%7$&ElOĂOfFI6Z{fH$w%1%&DUA" wS=aS9UhWKFb` 9*c&P q'SdP 6/fT=s@R\a Qi]*WF8uF9S #A*[Q?1D\UcM2N(Dp x$W)S0 0'5ChP7Fq!cȖG,"r4-8b{-1+b`䘁(bF)<""P!t"Ebe`bkA5M &`4X I 0= ,c)W>&tcX%?,:&#`2m08%T_IBG2ae;*A-9w(*ˉINF"p QB" WH 4%0N2Q 'RQ5x=ev}Q`w3Hfjy1WT 6sP)-&a29l{@N" 0Dh}b?V9cXCևQs=7x{q~gxH=^s VOqjc0 1pgj*+2 Ϧ9x(*RwP | gjh+{"//F1 !<%|I%! .Rb3g~rD'V*'``[4~T53A0eɣ=q޸lAWoBg } T`@j6P `/Ұ n*0 ]bڻ9^Q 19k~ @@ b9P0fj#f$L>[.BpBsm YlE heA) 1@)7>ZYB T|7PGJĖ/e ېQb sBЙ= P -ēA;3'[~t3P(r s@"mT>!3J_ or^]v1^b*  y`$2Pr `laHN:~ x)@"0 P…RZK3K'`>JSS,0I3> є0' &oU`0$i] f$ 0i$0ؾ8q;Ta,{F23n ;TJq :6ө:+ pQpE0P4&&U`- +,)ov0x.pfK;rpA~8C-i&Fe@kbgK>EC1KT=E%@G150@pA  0<(a C@ Ea@ 8FM/ SN=}Ig_JA4.ң Ax 8p"!EM‰D/ V1` \2L1$̾n3!,``'8*\ȰÇ#JHŋ3jȱǁvppɓ(S\ɲ˖#IĒYɳϟ@wB-ѣ'!]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸@;},Y*L/cicsrP/|pbTc۸sͻ Nȓ+_μУKNCiP  L(]&3|@t܀ )(5K2('A`ĈpWꄅ΁AP<*YAJI tʶ(aB,)2 h+jf ncpGؼ^/4KnC1 (=9K|]@ :@~Dld1С2q_٩5(j"BtD)KFBipP ͋!Ӻ /σYbA" Mw P%% UpxZm-P\OЦk=)Ѭ,TZӶ@U8<0 &  w:ӫVFF$p b $t[30@@(?|MCb\_= $ 8iQ f"9@럀 }p X8@b@U G)$"M'  vXA/  wRX8rs မq@Dz#9-`p!Q(?=@GoڥYD[dd*p f{A PѤ: 1`K,> =A n3W!؃ ڹ O $"('%1+iwHo@*H@ B PPP)  TA "DZxaFjed@.'@"L v'X=C0ɹͧ@ p*Ȁ&5< H4ԍk49f5+ ӺqP+ `n2L`&p)]qbdHcrw5I",(I!hOY)iChMAulsGUq\> ݅*ݨIuxES,M$7ƙpwCoz[űxs |k!,;`H*\Ȱa 8Hŋ3jȱǏ;8ɓ(S\ɲFm;ZDtI͛8sL@Ο@ z]ʴӟxJի&ebʵW\,^xKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k&J`*%7Em^tت Pߕ N T? 4NnM5s (d^Vrp9ZR!xAp !Lx=jYt(^ `e=ppXg|AAeMEcX;3P=z%.6סW&,Wx.ƈST2xm6p f!bxFA &B@#TB&iXgN$v5j-Xuc_=j 0HÉ/;m(id 6;`F'an.Es65r3ݽtbD=c9(3q1 ~ [14 #``jX G 1A qEa y`188VI1lhE)X;/@!. Q R5 nAe07T#hB]D& A #I&dF5|pǩx(AJtc,4 rdH0.A8pap( _Q:*P83O/q <@ n&Ȳ˗0cʜI͛8s\@"E ȒF ƥyr䄒':TիXjU+ψR? !X ڵݻxXjaٳ8P[~˘3kެݚ%T6"Tl?Vf@tL^ϾkB r>cQ  2P "q]@ )gfXi cB   BJA-4-DDi# p ,PXMPMe„%4cDP@̔(lR/uqij A9@ V .80AK $#:ԧH%%V*S5 A`yA `eFRj9iz 4?:T0=]0@ ' dSL &ЉѼYJAm;8Ad }{T$ѳPB;8 @'p480F54mB@}T‚ '(/ğA%fU\ϐ(0BsY - @OPZq "H@5.*Q||LH7tM3:) HxL>ݦ Z(!8b n}jH"Ua)D"uE!ˈmfN\pSKpQKJ`. ,%€9r& ` mX `@Wt4ŜLT#;xAb07L^ @G|a}A`f+BFK$C݀% #Hc-ax N;.ׯ~#BAqVXl/P48Ӧ4$a\ O{I D1*BB[H<S3A\ԥ@@ZU;: $9@Fh2ؽ Ao8@DŌ?zп" &Ry  XB `3DSp+GzT@)L_ d^gBS)R=#1J4)<ΖnfeW.S Œ<"~E%Bv a#xAH^( AuzSDWp8hEyyETXf\/rH #όv$܆S0WI#qF2/'>BF|g^`b4I6$$Y#I<b% 3Fij!8d 9eDx-b!/( `ATKHwVub{Y,[T14`xK~!#̓uA HX<ꊯRٰ1J<4@˲41 ˅e[I*ɵDj u\b0ժbd[~11& Ko36@y=5-Rc"MVU |b4Oq D!L-0EyK<AO! +5caw`) Q:3 VP0d"`Y9 `bp[UPq94U2)!thQz/ PI%0 @  9V~7'uo]q@1q&7[Fa9 07 4  S yP01Ԑ(4@|ws3H111/@ Πwϐ > ve.U' ! S / 0q :e'PD+5`)iwC>'S 0{Dq 6%2-1̅4W(P#F 8AÃ:#WϵvDpw-,~"?б0e0 yے9x3B$\;w08k0 _uـ&9-,&,02 εw|eG1` p0UPq $ @+`[$:4Yka +ٕ@P"$]Y? &J ve9R0q" bMQ 0I[VU/71pa9qDq>`dV))P,@ӕ'zMir"` t9 =] o%@ ~c|-0؟AY^r?oͥ5=0wfE=@L0r-7yuQbxJMY .p1Vk=@Q ߢa1Cys  rK̫5j-&,c(AЬXA-!sZB$`d]TY1,A[ɿwE?Vs^[?p(T <{>e {[Y? =HUaՕv#f91P"4&DRe}"a,`Za)d}#<0:GHOJY!Qu"@ !Z!ԍ=N'%"@ߝ~ -0%V{e@!q pK)Ex=ѵ[Y/1&@.\^S5qjb76 aPA*dZc쓁 `vj)IMl>!:UPպ XO!_.aV2 v⪊xKgD<@aBjb@;͋aϬ+yfѰїiX[ ӄ8+ 2`i!u /`BS_kc?>t ;`$WuSIq2%4SR,bk='}Fpe=4€4 p 0KB_r01!z-C O+9N HsOB DР`!F=~RH%M N.` dÁҠ+:EC/cniRԌ68F'G(>КVeCL`Fcy a=Ua`>MzÈ +Yʕ-_Ձ Wf@Q> t Z9 ]P9U bF1:jv@ȥbxYB ғX)%~4\96c@:$#ρ3R#@H-(ERhg@v0u$"S;Ahu gA6b& i -'IR'#vcʆ':@gW'pD@@]` hTaSPc08N.s"RwxdrȨ̐h.r${zdԃƺqH%[=Md+YiTXXg$ K. \4,:1ȄL bN=$(#22YR$ fOQҢz/'a]ٴC/H]kfJQ6RE(%UZtG BbȺt <јL>4L)eZR3-NXHy4YI48v8ͩKd-HƕK(2+X$SkFVayF;d6e2SR5R2!&a9Ul&шTJU2e{d8뚀ʖvr]i.-[vůke?{"5Z,+gHDjm5 !,0 08 P` "\(Æl-UOR0"(Bc$tscH@m : ;Փf#p&GA1DҌ@[q{' *_E[0 !,@X 1 0! t`pC"@XaD !<B&!,!,!,!,WpH*\ȰÇ#| v!Ǐ CIɓ(I/˗0cʜIH~lɳϟ2!d *]ʴSsիXjH cK,9Vٷp-X =~s˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװcjPUٸ`( :'AǣMI>6D\N>k zz=ťAN!.0L!Trh&n-MU=(IMhf;]P[RLAzIqXLp `PNȆpD7_lvD !L7"ͱdM6Fx=:ٸA2W3|t`k D65K2|j%A`Qc]Ž:cQD@ 8-`P^⪩Y@)^@[7 rJ@®&1jbH5{6\ -8Aˠzk nCz0*|x]@ PP, AT _9Uc@½/w1ܱ@ DAGwї)P$T­+R0+1dw얲:( 5xv;39tt=.mKִF AUVnH d %j=uqЙP .i_ ѰP4LGA{tp8~#ζ.5y>kGi%RnN` `@֧ Ԏ~jYh@0cW霼gy\o&? $_ATmЁN_(-`0gx 0 "=8D =!8tŊc#Ml0]7EN(7rn< ARޑaP.'zJЅLx'8%Vݱ( 3FK ʨqÀ# ^Bm|{w\. tS)Q%$C_8ʼnJr:Ŝ @S.НH !,!,!,!,!,!,!,pH*\ȰÇ#\0A8x ! P(@S\ɲ˗0cʜIM 8?d@pЏKɴӧPJJ!*㠓`ٳhӪ]˶aSd`p5,۶߿ .HkRLP1B ;s`o` ̹.MB8b,Ѱ$8P,&@(D"j̈́  #olCH%|8C0F eʝЅ 9,/m273_~%r l1v+ ltr !C `G6N s %J+,%J#RBNP[#F X>#$gFCc@Z p xiZ;EQ emvxB .09;&%g%jglX pZ[dJ:D=j& %@(k|9B7&M#PC :Ec5Ũua"߶3B p2/D?PEgvC!>f$*u?n?+A&v'@o:W!:G-ʖ:9(iOMuB_P~')4 c"@]#E8ㄠQ`h&RX 0W8[Z-?dhaXfX4HWEkH+ᅁ"~`8vx - }HFhqhh`6,VfNOEIb%P"2Ob_d+Q10P%L1,6&U!`!tGsA @c xI! bhxH$ `N1kfNr;nur (AP+*O0攋e D2S'dC#@ ֌.DаZfp6ag>>~Q# )6@FF'"SPpC[ Q#t;( #.@Ix!/'` I#0 d Q-@p +0 17i5_CM c Py 8' P  tŌPO ])P@8H<49 P}Q1zpf7R3 >I@`69b}'L%8尘q /#]Ptp q >*A_C@r2‘9f*+#Szu9}p0MQF9ZPE呄@}`R"')0 7h*a+ke?1Q7<UP bpA @76*~1 ʠ@Ʊ4 `4Fpk" s #̠BC uU <1"=z@*J"D;q@t` "ig  /)e0 2] 048"#$` `36*G3x7/wJnjp0"7psyU 2Yaxh Wa"&vp n&)]—H 1*J7 &:TFR`fT0u)Aiadu!}.{`=*vVpi+E 7#>}W/$1"`SL(wT,P`07¢p7 y` 197J~@;|QXIy-'_CnVQC&!pp e+}9od"ViHȷ~ˇu$yIAK STu1rACK-)#ce%US+\ wIh2%]!zqQû($-H#z d7[:ǫ<ҁ);`\cxGiX-mdIYPdBy:sյ<B&0۶0ً@`xQd%OIvl؎$Ez( |Q, :a`E,~0QqY< LY 61hSzCd3%pd Së51R|QcCM A6p 8F!61qK ? !y?K %HQsM$hOa"JAT?4"ZnIg .n>\:7%v4#V&ۨГDW/@Y`%IfH5FqmLHpM{#9Tfp QY`M "u4{/``K"#! bP8x:pW {7EYp3RU k0pq+*}0Q' P@_wSǧ)M Ń)8 7g ' @4ˀja1 0~ҋnoIP`@ -@! 0T)К@( wfz`l l>EQ  =2c-&p'[`V28ox %Ir _)Z p(CX 3a@"cb"/87LABд1!ӵY`ubW%`@4d@F,y5-p?gfv@R?0`7iG%@SiVl ik`)ǬJg|nc(//A6^U^,w:).ID3{  pSWZN)`+PyX \Ξ! CPN"J=U X+]>^ Ekp-J*/(1}6:02[7}Q6 &%'0ej*̩A /̯g#jcz20b!P `J@bRZc` pihpDRNQ!0fimgv 0 _3z!Qp2ﴹ+@(` b֩/J peb'` @ (f@ԣI}p1 `,O c~ #,(bvf0 W:@`)g010Mс* {,х4PQ]EP@ :Wpx+DԽM1.,9к! 5r1V Qn0V&!@ǑߠpPqF*AMP3P%NuQrf~80 >QD *t6]!?02$(8"80E8ЁE0ѡ :p鰥.0`ȐC p!l] DH)hN)@]}X`NCQu`  P!F %/f`8C\rAL쀫C>~8nA0019 5 qazĠˁCN Ђ,^ͻ||0ŊJ2$h4oyi x3g ëG$DDWd K 4(l1GwqG.BG 2JRH)/!/H.,D*Lӯqt@V7O? "MִψIC]v6!S`oQM7}&%w"#S(_L&ӕ4!#!OM`!$WU1VR/ kV+h^mֳa4$IiAl(h*~#6 ov*lo$7" R%fa((TJ`\q"dď"X`a,h!ɡ!CbUb5^Sbe(.La‹L q(.zKTuH>[,8[XJ Y(:΁o` JWhĦ/v %w"L.0 j},X5!8 r!WXƦdYfZ{ヒ\F ( X{87 #ɟPN/`,ШN$zO-1H avqCcJv0RXȰ0~A ؆w쪧)~83k~e QIXCюyGAj P,3-@:`@d8a ] D{4+{1"FXQR@c X+H <UyFrbӿ`@'0# ` 5q`3r%/4 b$*'HD]T m?C!{4:$BKTa@6SZ8V   /@$ vbE#Fe04 r tHa2 ,x `h8̢A8g Plxd1BuH `ǂx R8T܅8:ڡ6pޥC0sPD "(9@BFrRX8ĝKCkYοtIhH<Y1PUlC*p3tr(a@/.$drJCY-McCӁܵHHhLp&KL(*DГQiг(F" wѦ VY$&pOb@ɛ l=U*·!Yq ++ҥcL0x)0xU1n"(FG@Lv"YC0^aNq }lL8ɋ`sc!<5Đ1 =Ó$P.R-a8 +'jDAh`)}ytc>jP+?8/>~"#2C2f&l q&+'(/C$HJRKt acJ7v@@t@ pG1`d{}"t)He}ЄFKw]x0Ç#BL(a5p.C"&h_76"x!,1 *(*\Ȑ!pΆE2 x _<1h!,!,!,!,!,[H*\ȰÇ.@8!ŋ3jȱǏ'@&=@\ɲ˗0 @(ÅG1sɳ3 /ϣH*ՙ!;JJ*C+ZʵWK$ʪ]#p- akK0ҷ0̸y;L9c8`Qg d:ϨS  "`հc0Bٸevp:oƷ Mœ@J(ηpp5UO&hg`9Xb}`h8=8pro bEhaLD@];!wa0X8,t  (#HT8~@T^@)D2@H^@L"\PF)TR\Ey Yq%פ3]0XG8SAȡd#$? @g& Auٞ@PQfI$:@@$U)g4(8pŔБ< E A ̔)`D sd!?Q9AP<Yy#:Ђ 1d VFj ~Q ")ȁ-AY@,l' 7G,Wlgw lؙ~AGY>q0\fj[AAU# 3Zdsl5 n8l$aB|P @MMUo5` "+C]U]*9'FWO&M808ol}9Uk/ ߲E3}@p)@\Ì B0bw݀l]8{Ci4Kt^Pv ,kF)rI<{:Q 2[YRP[_!,[H*\ȰÇN@ ŋ3jȱǏ'\"$<@\ɲ˗0 V<#1sɳ'Hl (ϣH*I<JJ*2jʵk^Ê 2BGdӪ]q ۷pi0ErzZ" ӭ(%+^|A#KHA7ZL  ^XbfӨBȐ0Eװ8[qm{ W `ヱ:h'0ȣ&[~ۺ w6-{)\;\ߕ ރA~ք>8Bnvp bT5(aLxM?t`܄\0A Հ("H΋449@^<@TDZaH \L6PF)hXQqtdT"d= AAK Ax@EPHFdc?kZFpH`@OfSG (6iڑM>V@/A):Oճm 8X[ & +px:-L3MY9dfL,'+k,l' 7G,Ved8[ۅ h:VQ8m4`"oI#@"by ,0XC0fVUFѯ0+r=ALk1@@=MGFuWBGfͭ80/LPk=8mxk//WmG& 2(|ƂXPM11P "li4T;`jc?SxM5;&Ml~KE.r\8 bfFC vfqN;d'NV?EbfjW!, 0xIH*\ȰÄ xHŋ>x@Č CIɓ(S\ɲˊ_ʜy͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻxQ0` YuA;@Ct8/D$`'pY@LFdk rM5qrǹ}[.mڦ՘û鶿gc`F ĉ-….d~#} t N >852p f|מ/@*J p _wAcj8{ P :w1%SpbB qx#!eMXS&(nAWXK3sÖOdj%@#1AXO8<h<ޠOBg(\*lNqo0%jf ɦZ YB!, ^& p@A3ȰC9Hq@ `8is (PM :"E 8a DA 'Af<HJfjҭPBt4)ANH:@f慰_&D(ߤ1ƍ8jQSQAzrUC:8,гN't1jڴ,nj5gV#:BN"0Ԍ8quAq/yC.Cuܐx %JLg8+2\L7uB|7]~ 1<^E@- 4 F=ܱH0HAj̨Q @P1 04BI4} 'A$p Ye2B@16&'8m*މC .1d[(HLn6` NH b̍ɂFs‚!,.^HA*TDAwH 8H6|-t` F 3 Ȑʁ&,X p B*` :8@D`AU$;a5pQC7$؝qĭƌ|:8z*X,xWJ;\j9Rͳ*U`xѕE80AcEvyrxad4RYv;+B~< `X΋y2p0EGg.]0x"8 8@8b D̴$k48@#|dCǃ@h CF 4fD@C䃅cSJc8-A/P-$ؤB!R&<=YqNm!@|q`tQ VU!S}PPeF VQX`F3gU8mifA!,.^&HA*\0J㧏`u SpDŽY ElA#~Ip%J$ & L4x0@: :D2'PVQm ӳa'P8C/Xu ̢F 8}ItB t`Umh=+R#Pb 7 +"~& KeM8aˣe]IƹU0dmq F\qؾG<`7, $5<1@?@|OA rpW8P,,P P}Fx #@8`^<<PMGd9\X_)@8u\G9SNcb@--XQ=U2!B=_2V\c)E`k ])P-`pa5$\M FP@!,?` .r@Aq` 0@PE(hQF=1ƀ!, qH*\ȰÇB@a@q(Q=0!"#\ɲ˗0ct `s0턉0)g*]ʴӧ2 P_11K8x'IL ٳhӪ$/,08Qd L*8(s`΁lϠ (@> 0;I Z۸sM@wU!0MYjp$ |\EW@_ B?/v!9CAr Ë@xb5AdBL) ŗs'9 @̼U>e@4 ,_2@8'"@T@w-F@v#TuAK"1 .$BD#qcA |50a $1] @`U$zx|( <t] P@ 8N1p6DO{ :P9NG@HBP9 tAG tf $At (djd²"!@ˡd_W PZ-S8A 0@j @{"d.:碶_IR+4JF+@V ,ЉRrCG;dP+lC.ǛdI9R@P|uL7-\r4A}bKպd:`@p1,o_sa #1'=G ~f A ]%U92's#4PQ/9 Hs{d^M2;Vٗ b;D_@= t\T* lJ2@,`0æD+pHep&y[c"-32 *BHJaABE+z% \:1q}/0@6:`"g I!%*ke>Im IPbxYMyBjz6-TVH!}FHQv<.c'\" *C, #?Av8Ί6P+<ؠ @#(&= 0Bba #pʙ2I8 ɒb#TR !!49`K٨Ê{D1'M+9֨C , dSY'G3@I DjKh42G(5KƩ$l@ExӇ%#= dKS65 -orjYQn291xba2&ۤ.iEz1 X ص$j,&1\2#)8qi֊"ii `M8'֖ }ao)"zjpX\Vc(r-9Q`Uj6Qj%@ǗNlWHa ,  bFJ8 S )a˴7B->\H $q2  $a]Sp NLk_כ@w:1/ H1@51!ߒpD Mxr ׳1"AT5P1 O]1A R% #ɅXSv 4g欭QHr1Y}q:*< Yor M(4f\^ `}Lc(R 5D‘huHnmtέmxA'bpiܰSlc ˶"R]+hG)Ӷ}mi"N!/^H f 9r;-|)@8 nf0j<t/G=A| D)̌r[X$c8,K*S`LklAOf8LɃ 2H-{7?:W8TshC[17fQ (xdRȜc!!f +XB n֐ĂhUl,; q9ugc A+ q A1(94| < X P `D!-.!h/`*nY=h؂FQh6b"Md=,_wÇ'B4$[)t36&%t&1H02r&Z0|Q^'t2p.Ca~"Hr]m$`F0n7*aM22DTz*Qsv0ݱ4~.8Z.'$}6rEL&)ŋmUp6(C,o#= s3zG"3H:TsDZ Ql55-''B1!s<YO[ y3%!$ `p.j`DZ4jRsӑ-qڔ.BY[$BEyLY[0Qs"8t I5CVEy$YrB/pВM6iO9HSIYǖ iэ_92Q*-@/"$"DZqjpwImamR/H'$ZZ(HbR# X<9Rl'&É !Ո$yr"xB\)?aLelH )G VM PrE \/  a0ٚƩ$x3"q"/bUp k)A\Mֆ' gɚ0Or[i(  P !B@V@ ,B0qИ9 cs$  AMP9 Y;ʣ>KvY/)WP" cS`];*c: #N`N(tU6f -P9d'?$阄*:Nݰ"b8ne QcW*0 0Lq`ŹM!+!0  M1,8R P & Pm鬂!qp06!!` @):P xڣ-!a)@'CsP'P/uSYT4pn $g{qbr xw"Z3'WE5k8h )PDڔ'U#Wz]T[d gJeoYUc2^PFK[[sfSPrK K!,S0FHH*<(@ #JP3jt@Ə X*Il`xpFr8#Zc3σ'dI͢H\ҧĸ4êE#<';vf^t83\@˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹]5F;|Ax#<1!,O^" ࠠ ! J,  hn9ʤp@8sbj91:A Ɓ ) :L(N€86HXU@e/l[PꠡDpj; Cb < .8j䘱qyALU'N8p@065Վ!, T5ml9NAx',߹'{tt#N,?XR8afġ}7#()`!"QB Æ \!HdK+I $ | F6z Zi70G6/b#S&vaGME4B@)1?9`n"<@5`@L!a {4C 8izDR^9\N()$8k J+T }wA`  B| %k@o[cpL`mWl[@t0UJuĀM:!,hd '蠠Af9&3pT#Ѡ'!,`` 8p "D ;d-Ď|u]@B:8H@  XHr`@r <4 Hp8Oք Ѥ?mri&ȝCJ almQc3vڴW/b8pQgUy]0+嶊|gs >oe;ÉO~|6ݜ{mWFnr}qr/M۹o>l7v 0,Wnʃ |-atux 4؁wYuLdq^a@n[!8q݇@2ކbp$x,ruxp0V^G&y"M2'`)$5Zn"s!,ap98pgG0 >@!,hpH*\ȰÇ#JHbBN`Ǐ CIɓ1j䈲˗0cʜIS!rɳϟ@B*]ʴ),; pFXjՠ]ÊK)u]˶[0Pخ ѷxvIB^IEl?|zHRa!t⠚R9X@e\cӨn8ءja 5v ˁ6vtȘs;J3F'l`bB-Y' lA2"|tO~D37_%g߂ 4@4i2@w<$F 6h"j5!A&zt LNL!q'Xs#D\|ptPFRU=@CJ'YIP,d[SR;qeƩUt%0IfA:U(X @@b-#Kjj)SgDjv@=-0.@\Q1sd. ]Ѓ<]eҊu PBZ9 ,k,DDR8` =g00D$Ԙ@ pPIp`O%-jV)-@T Vm47TAik5lkc|P;* [_h@<)\fX8=RY@` wHMTB#p&P|Mc#d[5B< hhl$qHm׍v-Vk Y0:ɬMYve 1@ ϩy Cth9̜PFy1 *(I Mi]nA/%Z/ fDnj’ 0k= #N  -F3Y}V(DAٌxH!#`Q'0R6K8'C}S Q yԤ iHZR5q(d\@ZRB9p!"fx5KOCLMHC_=bG=ꑨs$jZ ju!\ Ѝ>a:7Sb5u&b a~ r@yx 8]1 2 "-S Tiq*Gf*u@Bi ]@=A* lq"  ı!xD=q b}:8$tV!Os9` @x\(.p~!@C!!JR9H\0SuM?sqB@о :0]@xU YX`,ځXc%Z&8bks `NbdC@F+r Du:~)@0%5D*H&+ uЇS1j# @@&dVY(eP.   HrP,8%phʢ aIT\ĶA3d3I)`6#z@z E$qt) 1 A)M02%%Fd+9 *yaE_<*9.QTDe P:(=+)TP !ϽAJT1^ε/ =BDD8(YgH ~ #Rr0{FdpH43!JP8{7GvY $e 9jp(Vm&x 1FC 0L DFZGҀy AJ47#!(oC WQ62B00נ nA*`H4lE ٰ0>8&Ax Gi(ɰ @ XA Rq0UmhQo@ , SWDRNQ Rnu؁T;D{p `!,6(Q`98Q W #CRN a ,/( &Y˷#~wH/~C[$ a`^p% P m s!p XWQ^fP`fsk#{0H`!2!0-p  N #٢ !p0i z2e 4 G$.X@ X4 @B"{a'Nqʴ:ёK_Q `u$T$IfOv vԏ ,Q)˒"LC$Pη&9ёaRBY"!19!"Y1O&A#&_٧_ϑ\Vy2d9T<3)#a tH##RN%Y PAP:44(jAN< PUZSm #6e#D")5D"=dbr#%p73N`jfm=jf ME(.:G',0WQ )&OP!5;;o7T,#'G*7Ӳ'ѤR NzzT*#C $5"@jwgNe'gj!R P rK7jR&327ҹ"rAP !C]jgpЪp}@/OU5IC dN7&j1c ހ[? ?75Ri<:yupKH@*)q!<2H °!armz֢z5ZBpVa7@ P mZqgՌZd _gp 4!h8J rxM@c0Peha-@#] -pUⰔZ$ 1jw ׉ !  >p*3 %!ggj1_&L'?r5tQK@ @zX ڵ9 0G1,ts IP udl"AWt 7q0 `!#'ڥ!۵+1Uy9! a8V@U8)0b հ @ &P%twA\g$ @Jڪlj;WfW%C)7vT$$RM  T`:˭lze'Xh-wOS!VappLo.?NBteD QZԬT;mٜ% ώRݜ0Rˠ ,!}-!,hH*\ȰÇ#|`I\3jȱǏ C8`ɓ(S\r`&8@ 8sIѣECʴӧ Kj@ ԫX0@ЁAٳh? pps(AiʝPk˷1)"PSÈu`#Kٸ 'kެϠMqF % ,0x _ `<+g-;=r(8퀫@}W:}3W!+4D_3.ʂ/{JB27 gd|A B4(YR9PFfX٧fUH-(H$H(I(8\<@@DA !@]1],:„eߍ=X8<Af a=0Z)l@$g@@1cLx @UA%)A,d AeY|z dCj=3⊣a,6d 6䩟@aT=4h@9uA<0P&@&K&&3l' :;f t.uq'0 D. ,$l(,0,4l8<@-DmH'VHqS= 79{h5 ѳl4UQ `ӊgBuu4Ou$r,!u9e kC0gN5F:7^$tj@cgIө0#ٻh5:h4V]XPM11x Q "T9S:0nSqb4ڤ6u1}AEUd Qk4`*@.sŵm {<( l|-(ف!9%PG;z@3@20 5 *@F\ZiJ`^%xʋJ3ۼw H@I`TBJ]@ {<g pM\IKD)m2OALPԤ4 EA bL&0\jkOMŶqQfP(G3`h< xMhQmhCԀ)(V$' (phC(Tib sX"S.DMj8.A J/ 0[HrK^r)$J`msf0g~q``p3ۄS9щ&R"@0 uͥ J~şOuB%8ԓ 9 Bmn%Pvdaxpj<`k>𨠃ҥp±VbqZWtچK!,^1tp@AH,` 84 0^VHPD J u! 2$A,:P s0΁, Z Z 'Ƅ @LjA$@]JR8/*Q  )40#^t@69sfr[8";tڜ1N8p̘a@ѣQ~fj`#;킄0"&[76Vuԏ|Å#cþ'v  HSg]{#'<0/ߌ4TNA10A @ ?cF 9~HE ur6AIZ%кf aūV*kA G&,{ZV@!,`!H4/@8x80PٴpC D`#B l1@t0¤9P7%0`MF dK@8!EHi 3fԈ{ U8\;8bê)[!&hYBUpL6ܝ`280£V9 8A^pḂ9s<KLY6{gAXI֎3.-9^6 DР=o8s$F⛍}A> J6Ƃ+{O?@A t@ df- )$@R;G][[F0" t琱|@:xԱE (K~F+GF TALipC-3nj@q,p%l,؂Vc\hIa06St׽GbK;3}9[m߀zw=x'Tp<;`"`-N$38s@W8BpW1^#‰sY;D%DVmhUYg0IK)C=@n"_TvF>}T~癓UH>:B4>3 &B2S#wi@R&WHrH2 '$ J @8&8`븝6Ux<A0Pp>Cs6AFr(zp-PE'"EZeab;AC ! `:6VR}]@Q!둍l0|p)vz$?Q\at>bJiz`Tw yV6_ET Ҭ,@=:=m=hFag#p h˜qUlt@ZyE`g:Mn*HZ6l]]M^~2IX)X%qw†jp,@ ؠ@b.<ݠK'ΤXaꔛo2<_Ă sI鞁C_b+I xp‰>QÙ3i7/>Ucci!!;t򚦓#e%rؙǹ޹3R1`U6Y6)br1R8Y/*U=[xiʩ!J#9 `ɜ[MQPyir73<&:2= O6>i2r2a/8V a7ҲyJѡnaACUj)v=Vâ1V065 #A& CEG=TJyyS4޶56*%KJ|h#f;3aUj! g: @d pK 'OG y v Zu[‡7Xor/հPKb@ڰH%e gS1A IuPK*q;ְg8RD4e%B2' @\Lpry# g 1p=r)3bp/EzGZ>._#p0 8GP ԇ s4 `E!IY+..,%`Ȱ$ 0GO:q.7o)PNp[3hK;X$  +,U#po[R fq"@Xۦ8%UsjQ1\d&!φ @D24(d`?s'P/~@22=0a Q3'@:msUJcP"2`M{B: DU'~ 4 0 {<7 oA\76`НA -0!"-PmaUĒw*3&mͪq%C&^7;}@ +p@r %3 "2%@-@(K* tK^3 ² P>ҦJ&8Ȑ*{/Qaqr*ۇǔ!&'q!̾,l}qsTE!LzjDۡlz*  tQ"0ii[ `RO} _nm6eB@ E+i)AqF\yB rYՀ נNa f-<I޾ 0oaTYă"O1 g!70S/[6-,W|)Pۣ:^ `X  sFp/^U1nL9tMPX緩Y jP tTa1P!n&SBRw`Z~\5RPA_DUmE9a0A J#~'%$ܩ6FY>'ixТHprXrJquS7^ /d҈-3&0!wê[Ha1!>lb5" v1&57!R"\T"ţI&0{`n9ZKa``gB$3&B:9'( `&[rP>::ْϑ_g7H)c-OܼeQć0<,q0a (P :RęSΝ8Xqʂ@^R@ $$p@oR@…0 ې]<-HlW^}2 5_… FXb &eY'_ƜYf?;,4dTХMFypj}E[n[l >Z[.B\p,6'>{,']kwcnֽz97{"~NȈp HAuIbp@$a( J/!|A=GB1wTt ڃ!:Dlb%{%aHq)"D,# iNR"bk !8a  '8饄)8a~@r q+Vơ >hDZq|(+Ȳl-lq%ؙlBҥf@HW_!Gq`6ȠKlq o#\> k>k'8u!#zˁ/ LPo &!" ʙ5&d:I!L3w1ZYv8: w)6!  ƣIZJ4(W-H P!X8 @Ɂj` he FIwc7+qx^}(JAh':r 0FXD#0 ! XJ u|3.B>UwB"yZgeGHa&S &\:}lBlXqR*q6~'DU@d DЀZq4Ps9~"9 8J:`,4sHH 2'>#D>Lcs(&4a/9שB>Zt8Qmؙ & hR&H T.'H ĀWL~BY5P @NB/; YD0D ")Ú?8 J| J`pE@:.rZM \$P;L#5pk5HTV; $ C0#a/yɭXn(r_Df@ GPmg9 .ЎL)ofT)7MЁ6O;Đ(q+xK( %-1˂(Xu׻Z&d#(%`P+_&*)v-Cى$Nq܆( I`S8K͎T]ohNѼD0!:8̤# d _Uֱ 0 oK.Ľ-[qE,>(@2> >i =*A r0d˸\r+\5  A T캐ND *wt_ufeGštbjF6j_,Vm*A 5?Ť ?@XP"4v`1Fpρ~2Q +;_׾*PD*  ;2hN `'E?p%^<`%,|;_@-KԴjTXoYa4#/aPFJ̀GPD$+́anG㴧 $bwzđO+3&%RfylP\0 P#nDЀ^<+JG@U( i0*_2\10:^8v-`cp `5U@I:$9:qA  XBQG7bץ-s8L/idx3R (+J қ8VGG"TКB8Y<u+8EW0qЂ HDAwO{oF,enuM\K'!0Lg=D]O*:wBn@HA ghhEB btFXek)> , 1y!q0)7eN` -!7anA"dG1>]"pr,W7ȸ/-_t)?aB!ê(HFR7 ,Ma `>s|:dѪ)=̯`&W\֎1G{Tݐa 00 +A[/p gpS/$?*˧|+!fX0΁pr9q,H/0pjpr}H/pzp' Sі??)J'R* xhdqr r }6py`H _QKhi{A­y X_Zq)0p3@` hI{ H8Gy ̊<ô/ji+8J8 x8GL҈>:>_2@NՀX/Ĺba;8#`ZbE-M|*N[lPt'Qt&v{pP- (i2X?B\h,i䩀!,00Hp*\Ȑ@JH =n3j$` 'Aȓ m PPddI"ȣ@;JA!,`8A\0p!C @B )`yX#EvpF͙1fȑcF Μ.tƎ8j☁`RTTMQ&x Oi("ˆVZ\b… %J.ުlS7oW  e{XAu,Zm8r-AW|1%DIv3B8!iEO a*MGh5kAjZ ΄ iܦSG zvNɋݽk8r8C f4ם`{& ZhHX TMdلYY|(GOMpVR0"quF!,^*`H0@ȰC !,^:H|(8 Çr0!Łp&', p@z#f$ !D:h90N8pt,!DBB %:8R@&HJuСl?',:a)SԺ X(߾f|m &}Qc&d3g 0`@[ōJlF3fj&BkU _XV3yr6ܮTj ݾ ۸+A8@GM޼^-PDYsP)*7q @$;BL!:h3rVf`ASŐ@KX E^iZ&ه P T,DՐb)mhiV@$L 8@) yIr(YL@@, d1p҄V&012Pc٦pScǛ!ٓ93NT*D-<ɁgpiPj@=a pi(P)~'_9@@#x9\a2hj*{ m[!P:gIE YІ(N!,!pH*\Ȱà s/|Z8*_Q`fp$!0cʜI͛8F9PA  JK$ʜKBJիXv˄L-#5D@֦;\ppa@Y˗;ԑ5V )JKFJL2Ǝ d8|y YMU bpE`CT#0F6kÀl'u AZ'<ο0H x 4Ad<U BA^ᆴAx0zH8A#U:X~(^("&"}wA|d`[3i$NBO Us D$AEx\ʔ$K :JUW%ali8̰IcB|柀)=`"P yhBz<^USI Ly V% 8W< #W2 b L|CYII  : HRJ3YKaB.Uxԁ*MI'D$EX Od/.Q7bä D`#H(-WS*,@@,]9e9`b@űrPC9H @yIhB PxRa)%< t9~@$A}]B'8Dx$D:&rt H[B쵟fUft%i@6KZ)9T &C(FHG?kÏxAǂFU",3 jx1adE P@2d1W+Ї/F%0Y  ֓2@ЈsP;v1*p3 j8la}Ö QTEJp $]hA3DO; 6 Q6ĭ\DW%\[6s}y6,D Y4F3\i DC+x>dҥ'@d:\zi⺄Tm8@"8$GÖd `qi]? ‚jẉrǞQ,R}zڙ@ /U8 p2H# `6c ,H'b|4p2I ȳ1+ZFrMubtb/5@)C0A2jBЋd@02U$F $.؏KRL $G3%&JN H`:x [0S=%Ape=.҅"L0肑@% T pLTS$/,R@2Vby׌K$ͦ ? R@_#~~i<@rKR ``eIXpA`YtJ;RN{a@V@4`2"5{-@6Ѳ];ϕ<"^gf% D@rBI $PC ,vA>#+eb#*&8'Lڄ(:@p } *1 ǔy:ď2s.)藃]'.D|I ,yB~*Gg]YB#4&;>׋eĆ8~̖B )QllЩ>/vb2zb9J}X d|˴c)o_%- =!ݝ@pm@HF!0|3™R(65`Աۤ(NI _$ @l%0dV1 )S|CA0t6n9QvC&W5Q20#!/2' .uA]U` .@PFLP&%p%^>TЃ1 eP}UA}apbND$@QPALPqSMEQn1q ]6 PEd>_)`Q Ht`|&yaAgC㡈xs!9@Ic6,)1^\ >0s W5P7a* .АZW d-1{b(\qX])1bD3xGws7,X)i<ʣ1p'X\`kL"5QM2Ao#EDA(exgV ppq0 c@ q]a@A/!bp֘#"H f6y}z"^Qqb`+4G1PP.@~wWXJ31qE)0r" aS50w!xQx~2"1mzg!l`Y¨=11qlG `qw\Ǜƹ5% A|$%Y!@ֹ1"hdJ)4Q,yEj 1q 0' `X6ñ 1vQ7IP0.R`gXP 3T QHTT%@iq vk&N{QC8 $?# ? ?E UW? 9y Tq&5X1S 44+>ZPi#MDpYY11_ 8 Qb^A8[J\)t`Qj@gp>YpR CdE08'EoZ> ѧSc1^Bx"P,g7)!5)4wTK0֑ ڜQIr+.0K$;ACPuiUCǫ ` Y u 3ga 5_BYx;ɥRc  9_"!KV/Ng!P,a)+@B,)j/[ 6p9 q P ".9-aJ$"u`@$ p+1mp#Q,$y+#`  ۶8A&s'$q" ([G'KvKDB`g'tDV>k})3 &*)'!}rqhQJ -JQ&iF,- k?dA$N'!22"@YDsaikbwtzTlқ%6"%4 b^ G-ml2 !){MæUvxQ, y)w:i-\"wu6,KpqmpK‰G,r@{$&T|A%bWd|Mg J1%7zgpq]\pvmq7z%|s>,Dvh|j*KYWDzICP` ~ 5t$% jfȸY'ɥr<<O7&b7fCߙ-Dݰp!L%RA}\ǣ\ Y|q'&WDN`.Eq! @ P9"KC 3~e~ j#BC((p Yƈ l !5^!c/T-^Yxh` @6YP9&!,±c91+p5NC0 ^۪ %N{N-OJP "y^3Y^PS @`A !<7`0 lP>+rnꗣ0R#1yIguD|3U$塙pOQn]lnɘx{R6 .R>sɞLIzW&5^ݰNŮ^nhl~W8fp76ھg,Mj᝝Nm΋n$!,SH*\ȰÇ#|`I\3jȱǏ C8`ɓ(S\r`&8@ 8sIѣECʴӧ Kj@ ԫX0@ЁAٳh? pps(AiʝPk˷1)"PSÈu`#Kٸ 'kެϠMqF % ,0x _ `<+gM8_uCOu,<dyrr 栅'fٳ堂VxԄY!Q(u,H'`rqLƝ]4Z2xKgy}Gq8`B9 I\9Qʕ!P0 T @1;tmpVLx ƙPXq@-1U?pPYzT TT0 6dhA4P)Y@&z<x%G5Wc68iy#TbN Γt >:Xr":AL I 9g0WjE+%dQ j\%Ym$#o\^/|?cF\ZLP#Ѱalv+4l8<@-DmH'L7PG-TWmXgBW:Y@1 td} @\ DA!ME1]`EkJYHsb&TIbe4fےPa$t2 4N5FCpAf"22:yXb#* M{:^ i18@Zb(> !,`3 HAD81)砝v^ȱ hсp(ɲ0A'P4dC C%>SbeE͸A U@pp P k"t6k:\a @@ԙ?h%8B(?"2Z)!(䁧UgC5!,a YpPB@*\ȰÇ#JHŋǏ C),!ɲ˗0D͛8 C9 ]ʴ)2a: പ՜8yׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ0kC4I)dAȠyP,X(B;X0D P@<\PntBq A BO  r!f A0 ```@MB I\G Tm4tC]0=)cdpT#XE@O`P~GEO djFmq % `f"& L laƢj,Ctt0\I""Oal¡p8 qtpj"G$@26k [B %fjD@%^8.ܐ B qu !#@:u168 BȘ` P ơR9 P=:P')`PQŀP)P@Nc&(zjsi )DB< 16F٨*r)|O 6 ! A[W`7pg#w8` +-x7r6*X“'+!d xȀ Á(˹R@!,r$!, qH*\ȰÇ#J@%J Ǐ CIGj$ ɗ0cʜIA6sɳg &"鳨ѣ 0 v@ 3dp`ڬ!#Y]V m`U` ] N)A@m ܰwfc"ס|:LrYw A964H`L &/^vl˸?w^TpE[ B*@AkZ0].T A4}9<(ڦd (L ݀H` < PH6@t08hTV1ܕX8fM,8 V 0W؅%w\poa:PA]ifj|0<t`d}}4- t`uE]a*cYTWijG r y<+YPlH,hd+`g@XMvQqu{^{· ``&ʮ K.GppWu Ion0@)9`27#_*_t&d1\M1*JZ;$\+xO$}CcǮq -&@YGp3d/G9 x|=ᥠq'~5.@VQB"xOQE p@CP 0 <0ɒ>A 9;@Pև ș!Eu&TAOGF@!'ȲN^WB6'{a/E:M<`Ny a^Ձ}DSم$J#SȻ`{#9͘@6@9cWu#R( `E0l|!e,cɘ F@(uYQTRI>TARH_ âYmfƉ-[6̃ &PS\`g!/pD'#~a7,f UM SY'ֱpC3k-Gr/vG)nFT)N+"JgBm b+u+3)J\EZߣ8‘o=@X۲`7'NpDRs O(N'8(sb1H4/A\ȁ&1歐雐9a|wRiyDpK$@vࠃ1jPRfS ϗrcLT@"x)Ӳ 1,\n.if&x!b&#$DWRHB3 8K*H 3&H"]$uVo  6 a عbZ GɆP(p´G}ARs4@5`AZS%qGaxx0)$Ij%1\n *p nLݽ(w S !Ry#%H<$>lѰR@po pb0YLY#Syx)R$Q]s p2Nb Xe+"!@n8U8s_ zvp)r2w!=!鼀 Ҁqbi6v<;J ֖첱!φ6N}kG \ 1k8:vA!p 7(zSגG0EZy ]F%Jİo:KT2ڱWY`N $iC-۫,29 B*\"H~nJ*5+"CB2N=HN+/*2az2 3r&g)_B.Q*2A+iM57r*ZЂ%W-GA !r;3r&L\w[`# -G 401 QEgh YM`>.@$F3gI1ejSX88pu6|c:^R*`n1lQ`Pó1]p5ճ|N1 Q"gQKD"y{Z&"eEPHR43ZVP(׿w=0N9`_  "PA6eKJ9&pl90S8Npq+$QNdN4'tnN /F \  r2sqc1 0E`A 0`n2E/a HeR/怼PK ]`15q0-_&K}tz0zp QP  tes4!&?*@] V C~1~߷1m5w&ҠUDQ]Q #k @F6#*h 6؀!D ܩ "O @IR x'@ -@t1a"Y q?a IF @Tȁ 2zp4{xpO јx К^=~"D".q p X $E#.p : 0(@ӿU^ŚUV ]!gHs²p$Ȋ@PqryQ,rb  IBFH&P9RN!xօ[l%alً.PҸq['=*3` >'$EURS(^\\IyaQ*,K5mW'0j~qwpH 0a:asNGsivȝnr R獿 `R^ 0HBQgwqIHDv@P'2bx(.ę'I~P#:X1[H! #H(j./z`HX@`( ;ecJH 8RlIM48;pRHLcA..@nz` fD20%IY JR#!I0|1b 0l Pv_HD`R߆;jLvTKtQIGĄje/@(C\M(@u⑃`s,ڷ\R lAk2[k+b놑vI|f& ia{ \QOV5kk) "Pq03ha xhOc.g,&i*9ZnDhLc^t`h9Y$g:RAD)@.)-mzfF%G]6L%Ѝy7Աw8Hq@2\( .Ȇ>P#F0xK,t>pF'$6+(\K'0q>qObtxz<\,f@XF?b P iBp7(!H#G`DE@\& z8sI5Fz;`K9ɀ6c; 9Q=<Jx܌LېG6ճ\zH/$i\$H &@LN$Q8qks @b8%FbĀۀl} ZCRc#A#;p9rU&Ui'Θӡp+ۜL/!@ G@$9YkVN5F#LЪ>p10-\ALbX L{E$YG]  ԄȈ#ClTrKBB(N ꫏gRL9_-<P DKt=pޚGxKN !ERByH6{t9@=xPXAcR9t|aρ憁 c$0d?ҘM;M M֠D@ԡ0@ʁV", P]&Hȩ⽬45"$p>h; qlpm:P;-VgBt9(t GF`/E~ p"ǾG@9JH= D"Ԗ8[glvH`**!I:^ `?f|:n[ ߵ7&g-^4/r>hMOU@"p | QZn`[޲ux"Dاރ '2 a@xyn0_/ݒD0%$LDkI 2y?k 已{ޑl ĽmJs%ЀU47ÌD_.`ҭDZF c8~i43p!ZJ @@X*!,0C@p*\ȰC NxHE]:: H$icB8Fktfl<.!{3 ?1&6ipϠZ ʎ[w~# ̪]˶۷pʝKݻx˷߿ LÈ+^̸n`7`˂i*dYog X黚?V  3A=8o 2!oPq&!,`tBsu1P` &:\HР2` Dx&paɃI ,`5jFj(49NׯptImz]2m ݻv•tB]wB0nWy \az[Ʌ+{uff~䂈A>:iFagmumݼ>< !,` 8H`A!,`'L@!\D9kgA @B;K" ĈP#G C+q.$A1Ab,3 ):Pu`' @@5fԨ]$KW-9lN:0عQ'5GM8fFu*u&@LbRwag8uٲK˝d\.Hn=!|P6D{Sb o8'#+q0:LXq.X_BmZjeY Gں]Bw(5ŤiME hBXWU7=Dh…M%@DBO=3N$=$vd$H@dM@-X96ACT LEЂ!,j '!,`8p΁u@ `B& ؠwPb & 880$''pa$%*Y3e@\СiD8jF59@ mڨiGmW5\CVqj=MN6pY S5Xl"ř3rԄV3I0 3jC_պ²g)2p@BUćIAp`>+ 8<6gڒ&Ĝ %[0AŴ;|pXTqZp"$8 '}JNJAs6ؠvx Ѐ+C -d @sO/U WBLaUe'%.b Q)A0C5#Q5 0~ .X@!,06IH*\ȰÇut}9F`t0A(3 \ URXT(I%ITA#8@* 5T40P4f%H$Ad p`qL#F0)c+R'GO2D)!NW֤$HI ?,OQEt{0,@C0:ԡԇ  ٙ @cUP2|򯁑|<\R  uB=Ї4 YkأP9n^f$:Š@E!rfsn5BMͩ  X~k&aΔ `cyD.ď0@Swd3(\g+x` `C6Pr >l p (P;ZAHCH@IWɂ/R@(6H0d,b?3v!8]9 AGD>Q'A8 G@@854{Ѿ#H_(pGn M@E:r>UPA*D0M\":0AƘ;3./CR" d 0 t^l`u98 3.6`@ttRDw'\E~$x։ Ӄ 4ƾxba哰NaKJ "VMfTgEo^MH\ %`M"Ve}j_șM@!,0 HH*\ȰÇ ċ3j܈&L董ɓ(Sf9,UʜIaI7ƬɳOѣ PdN`)X #0XZÊ5w6≱s۩:t 9Ѯ_Q k1Y 7\CWxqZN4,*n@%<ȁ@8GL@85I.Ä@jp^Fϙ,\k_! d"`t@!+к$ZPkA@ЫPStnq:@@ d(Qb=sQu &T9U9%FgԜ07V*!2Bd"/ tT ˒H@HYnQ /~ aQ"%40@AwT~dZ(R/R^pG:H!DLС=~uHdlۥMD R WbѺXg9ޙ jzpRF Emگw:?famGNG;cŷnϏx<ꪳF?JV>Y#7!%.wt9/SH* OSsdwg <` sT!UJ!A 2*#Tu)qz+Pϙف Ϫ!,^+HS&\@n9,x %8'dȏ8Ѐ  tcJ R  @x 4 ptD3$XBl0 NX;ԫ0$KV]5fu0mZK fN;306m±aD ptpVsװZ'\J) xāûwP,Ha@oj&ͷ 9\ 5CS,(ҽp };ÆC@{r0"bCtّk^ 8 |Ѕ5z7x±P$"O|0߂aYZ'@O08xf\qAu #7r[oD)`"AMCG jđەeQ9 ’fVP[ASY%GtlzSf xBbGTDXerѨ%yC!,^+HR&m9,` = @a$85h1QʜI͛8sl;e0fУH*]ʴӧP;(QBcAkb Tg&ȁ)80DUH@`0P@3qB=|`8rdhHUpa@pԨ J !PoD %n٨39N?suӳɰqNgn3;Pzf@!,^D1`p@0@!AsH"A,&>xBF":x2˗!d( Mn.(!n*dXPj*I3_\2%/j8H#[_r#hptpt7,< %TspAːkw0D=h!ԵS\$= GDɒ * #hA 0s n.&XoLk,,送qs':9V讝;M6"$ RL&Dx|0pDjt ,0L% 8Ђ@ 4[/}A+P8`aZ#lHQB)%9Y5+^ ̒:瘣ow/|  )H|1Lב A0b9Z GbmKTJ?q/Sp ȵm |ɦ¤j$:jզT]0g$g JH:s\J8G$bnV0@ 9UX[@Rgn X&%p0R$XC r$ET .Q @m ɀ~'2zHԁ`p7jvk$aZ15   <ѻrT `[d#{6tTef62}(̦~3{z[&8tTAEktK 1r#n┐jt1En'c@%  'i@M d  G+dTJEP]@q vPqDbcPf.TP@Rd@JoXGSJ@&7m$sJ9&N\j K x0?T(0{ؔ H'!=E>PK !sPo W0NZpH2*,)L HDP̃\XCqsc,r 9؇ Klf;ܡⒽPL;\u]@9 X̕gK 6t aB~I 0fgCNo|8JAw/ mX v)0slTT+2eNpG8CxQ 0cq"a+ `L B 2@ ' 9U1!N@gg0^+ 0DhePU .1JpV Y@ R/gkRg &T yDaR1MG Z)q* P$0[E Ntp!u`O3@  Qd+Cr0 4ZpX&/P!0.}.P^0 @ "!p!s@N 4@ЀjD Z0nu P Yx  R@q&BB! xpr&P dP! U#f\R|B-;ia,f`7&[ UGtq l#oA-ǒ *, E" }#Y p5GWv0  AN@P  R?9" @X &gq H {:N P0 * U&PSp * '@ !s0mn@*h=)VC qP?aKP "B0s`AI@xp )Ӝ` `8)@ 9H{'|5sd o&uL?y5ETbH Ai`)A`İ7[!=GCEb*ĠML3 qtL9pix`$ eI pw p .V/R82 ; 9LAo2n@@)*CA~/]9_2O?s0J Jdz=1 "v"%: ꋤQk`=#i  p Ь"|!8Lv SW:Orc#…B"FsA]fI@ 7ip H PP`  )Q+# ` qZV2YCrSA^@,QGTxN6az!Hd%z`^ P'snp{[aLv ꜯa >S@ayu1ũ)!C+맯Aat;Q @pg/p#  ǰ !WI  pqdP ȫ :@A/' )ZD'@ 0 0gH;D s#SgtHR@*+ we0e APo2@0XBVE0Jda0B3ѷ{@cl՛ڗNAUX a;P qvȲSP15+AO:.Es2r9v 1 A`D)UX p!RB3_9^D3)0 9[qoaq2/^@ %W0&`V[T/0 te> VS)[?J =TĠL<$6"ő+G5)!G"c1` q'у #t `)Ǐ_|̔eZPg|>?Q43 Ʊ;Q1msFMlʨ\atSLA"!e9"J=[]-*\5:1gWK+EKY2GK![U5GO9 Q֌&]$4G9XXKnaiWMНFvy]NahG:N pGMu!AYq'a=BP{g$4P(A{Dn0*Ӫ{kz&PB FvtsTGݬ%8Tŝ#Bc'~XP]nf TthZ`9즫,\kAvg"L4=ŏY;Դx´pP?t 4@gsp PsЯ )TA"| '$BpA'bL @88 ȃy:BaY&$SSshB"]G]HP +,K.8AZ5@O-p=B'-&)!PX ] dC-C4KN8P5rA{d%tA~#Ag+<<܌AS^% PԜZK;J ӢhzG&S& 1ԎwVplgA+pyi @hu$T]A 0r!0] _>Td  }PJ)WЕ#WylBp WA5_c"B8v(Q'$ 5*bDsID@xǻ > !,`=H*\ȰÇ#JHŋ'8 ]; CIɓ(C )cʜI͛ 't@0q Jћ:P ѧPJ AI&Jٳ~* j1#7.ڻx%@`mԝ[WÈk0 |@@1'ysduąú5ɕ/ڹm =_ :,кukV) ;П~Ǔ[&-9 7b{c'S>1`s(I8H A2~(J.ށ>< 6ۀ hQ& dB pw .85'@:@=  P<éFc~9:w^\vIh&5vh!^)gC`srLL =Cm &SM`\`UTR6 觊f @!paɬ SqFo#Q;s 1髰*V]Y! `Akv@ڰԂhZZE V+mZQ@F VH-k+f>pa'wF+0@i!,9l Y8HfG B js#Ey,hTCRMϔ䘐JI:8 M8NAi 'KHw:Q`@!,qH*\Ȑtp:<  ؑ ?v@CÛ8sɳϟ@ JƁ9a:IҥZ(U&6KٳhӒ)A^a(R`Ŏ h}B@y?^ǐ#K~V`ۡ.ExE(\#xɰc˞M[r ,*7_9 3f9a@ oνmu IH~s`ѱ $`@vaA\'8X2P NFhm7s CK L 0S-P+LH -(8cB t/8p25̈́+ AJB&LPюXfHb  /RK3.UA2dh@yt BşA%lht`y!E @SQCJ \@SjXy B%)4P@A) ;p@lI{M@B5F((/T݀@_Ixͷ M@ xA&0GAs@뿽+<8CړsT780[8RХ*;bHp; f4A\= $+Ό ,\:0 0P=@PDMcB B@f 'lR9<}k&K]$ "(kxo)p / HQs,TD C-UJb MT.<_gptd@#~<|r&blREPW!v4upԣ|} ;A`0 ׈a4ASJ$uOСd;QrQFa1Vx_B H^n@:o+h8)Ѐ i7BIԫhApQ E-p%'$O"@n/ zP=C"AJpVpV<`RH Ji=$ H>o8G@v#&eD 4D F5FXDAFZ@Az6C28R a XwB k.27ecq@TIzv"4,?|X09.aLP !mRd, B4Mp!5IfˌrHH,,Wi !CR@΂ (d|S"PrX'! Q( $J- B ǁ0}H#cR$A3>/PqC|6QPjB 8J9Ԫ"2dBZ9Ѫ E!WVZ)< ZIHնUoSXfw =Cį Yk`+!ŌyUbKYxdmb% ʚz ҅D!CONIbY$/@f7%(D-<5 >"R`ohr$ JL,@tj 9ޅɟۑ @"{YLDJ{6sHE싙مnu r Qȏn.H >@G?eAHGK0H%ءJ< )RG5(RA*h=.`<80U( 9Y9j6Y"Ĉ,`@ IȆ$,!H0A d8@ ЀXMK;$4PZ[юixqKx (0 A$z:D<m&؝(HSr ޴(AFd'F_޵{`id1 04eHeIҁiO'`:sRL dTN'W7`Hp `eL*Hk 0)hlnTK 0!!c @Xu +v)IlܨɋsHm`;¡W0@`@ 8D>x'I@Q ,=p/ -.O@ȱk;(\8`_l 2nHt㱂@Itț!L^FpZ{ Ju8'1 dj>xF[XS5>D`ELH@p & 1 *4b`%`9CdU Ox>kbpA b>8χ0@2co $߉v5X!]vm9{/ Fv\B =^ D QP0 `#%: SF07fp P)pT&b o@lb_ `-Cb)q0&:&]"-J!k6Jz&DJuP0[=AQ5JPJ0,{0Q&hsWHU4AUч1v |#%pF!6, 05-,I0R! -pR9v vK6X1*<0YŇR]Ie)S@ q4AC8MA?N1="AV^ю#A"w@j}hXVT@8}U:h)Ad`AalXU F"OM%D 4YB"kTe:wyUX)OJy#8x! NO!:U!7X# e%NqԹ1[#;>\B ^CC7Y~rCd’Jh@PS US-Oda>T}xJ/C \pa4+@h ~b"&MJpq) h?20 Aq_&@ 05/`"K4k.E3(w IWp QH JaR$ !IЛQRڰg0,Pݐ%pAAtnqo(C3Ss ,0{ IzՉ~4SP0M06!).)5efr-6 "BlWZ1j0lހ:;b7t* 0@z05v 8廃wr(20u${!+7#np+3=0d%Y5b8Vz.tAf%3Õm7 0ܹ1> /"WiٰZEW/2:+>a'=YO]&BeY(ējSb=ØD*;Y2$80uJ^_!9buAMOl: _G n-&ma ? ϐfzPn(XzL7D,[|F]F9 u9 -Py#uqǝBZX`=rQh z|Pzi Htbg4N$- "czY:(i;Sޓ pha0 Fq9'(p@))c0/hF'H< "kYG":a:|Ƞ aT RS.B&8. 8:lB< 48Jh ;0G|<5$2a&j@ )J "h$WցăT ZF3 p@PG>*F( d1b 7ml]'b`R01MjÁVXp܂΃(^r.`S4 bH 8 n %D=H/XuMժ.<$RbfjEG.& z+&8vs8#j=2Pps5 9\?H Zd {`NoCt*&gdK/8A 0sݝW ՉϚxNY[{GB 9Jba0p m ] g/MǶ! XJ"e,Hwqn*C$uwZNVr+ˋ^܂ zlo#T %yODFB1uNй^N*MiLowD͑|61I^$R7 J"fz)[Wڅ8 I9+މ؇MkaBNr"N(FOzPAٴXqwԸK6.B8 e^^RvnCtxI1ikRFD䢪KNѝF%YHp(% JTEj0P8A %eJ)SDhv1$„'˄n #%쒘AM5r}S"=OlI\&<'up;3rN#nFqMQ`'*Mbã>c`ED):2olK JœfRÀ[#Dz)hQBvxa Y'7|&<AN!N^fj3}zW.u9X'F 8RqNDdpmC%G+Zk'2'T l70hNvʟ ؔ9^p<@Y&MAh9ؗzz膑y h>X/x;(d@PG9px~K8S v` zh;PT؅BpI*؎hF@q(,}B4-gI8pMm 80 `bq}PP*п=p5Pds=xXm@wjp"PGn@q8 8EX(}h;\( :XڃcxgF YdZ'܁}, A~ G<IJoqqhZ!ZIx8CBBp:ˆtp,`B"Lxv hWH!X qHzp88XqýixЖӈ ,!sFXP p~?ߑd0 U8⤗@eLh*”+D(YpL9`Q (*X`X\ e0[pZih jp1OU}ĆfzXHrhP3U *Āԙ ypJ c!n{) \"!JɈ Jħ=7 ܆80c -t;)9#σ( iKx8>u= L= f8 P`«t=M=ahi8 <1QRXI2P 0eBA>4) t f[ڃЍn9 h؛8(IݗM9`2σ"N#(N1u%H-|Hʌ>I '5#Y7P@Nhe0Z- p_pnRؗwu}2P3#9YGDλ; %o  z #Z Z } k HwQZcpZ-PЇP0_(: @[=i Uݗnh-%XZZ3xA wx{\|] 7ƹ3(//'CH8FluC9G%x]9 :KXcMhR8YHhzrЄ0 I(EP HE A>[Yk!%Kuh=vvEHex`vMȄy>`hP}0⁐H|9-D{T@S P;,y:'ab" . 4ȻԠPr(qh ~gK)pbT.f_^;R!Aa+ dҌpE;;r&76#h38L/Dw"'qYaS8%8J,1&)&-@ҋc '54lB) KU9 &ɱ 1PI**I,8ɀ_oF{ |2n-v5K'QE Z{-m)U!0K$ ਂm! on*n*^m1j IEAk cm/n때b4R=L "5E-#% XIуai#r-o'9.Ѽz6+ 0:q!6 q*'ȁ2q OrU8FvEJ$Mٛ!B%*g:Ùts9%-JoFp~l*sыKe5'ishK!BKm@ t< W7[&KX[H7Ɍ'nڶ{L+N`wP2(YJ6@?{+2zuJ%H&]J 7xrG~x!,0Hp*\ȰÇ#JHŋǏ Ci7(S\ң:ZʜIfw60<ɳϟl P*]5:HJJ5 ٪jݪ4ׯ`m;\سhUscڷp)K.;vf^ 'pAǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKN=wr@ ;T]5ȇGϗPD{'pGS~`*rmgG(yL`pD@ ! /,ч"]GPy@D7tbDn8z 0@pp$dHL$L)L\9[~F,"tx)iv4@,jfsCe&A"CN Lv> )I $ hFf)  7Z5}!`%eРи:Ӆwa0@`rM ҦAv0 :%d͵jnp@) Ś xI2"0YRVZa `8u黷3>ht?0,a  ppw $S4 xlXUr(ih!,Ve :p@  Dဆ|bcZ@LrM4DYD!,Pd%H&La : @v@hFG8 QcbNȲ%'gĄ ;Ƒ&8%  *TG!j2Њ0y"ظҪԪpVD0V`_G-Hhb!̙('@n:ɋV9鼈}gk:e4NJϋChFW A Ӂ۹{V̅ే6#'VWV' 06=EvuY F]`#z9`@4Pq-%PBKV=:@;#N ?__z%@I ]@OMYm5A`&pCG 0 hU&  kucIWҪ<)@ʟ0/ZZ @0*C })}<$nj.B{8w,̝gδ&69 7+a[e&0' ^'=7jD [!rB Q'AckB np k@pFTMs!W.oM!W$׵t` 0`5 AQ ;0{4~fYWg.7@a0%rj~FcbDi`)m0gGH6'=@d97(rf,`!+/o 0B#&0|\0>F0`%c.#^(#SG/"s86Gf8*TVaPN]M)p)ْOKA.9@6t@F:i;0@9p_D.aLA9BCrFc4b#FA@FZ4P@j'8XP r]Y3W 0L0)r@qC0ҏCQOEG=C75`3%D 0tŕI`Sqv  @9v@IVGUB`at0 WJ|}ћ'<}(>;'2t$G @J"<Z6,IYrr)RH}P)@2`l |2{,p+ q/fr'%#7!IsquaW3NZ&C+̑Tؑ$279~@%1tBb3`O/R3Fjj=Y6%dQz/1 O#A^p|aj4>u:%e^@oea9ajA9XFd47"/q3Q( C&V9𖂚 & pB5B201fp$`Y]-pvYɪz_q.ɥr/C/ ū:ZaZFXr8CXoAq0 s# MgJ[:J @)`6H$0F3\}WDC +! $c:a7mj V0 `r"P1[p 2ӡ+(/ S]Ct("{$8" .\R `1 2a3N= ?2=v&qBUP80A:;Z5Q^AdQ;ag˳=LÒ:`.Z ,LRS;:TxW3  c ^FD `(X0hLImI^[*&k" n)3\'N }12 I7 /  E UE`vD]q  &5-c<p 8p#'wX[Spti;tk[P*#Z*:~؀g&-0 @ЈXL@N GdG5DW`TU] ` paÉA:j&*&D H, `&(Ppϰp;-_NNN@ ]  Jr G#/S@1ЧF`~+sbG!& %0jGmSC ൹E<7P ^Z zi "L/F@:,$$<d`E3# mauu a~=!.qsܟl> 0sћA ?0 ;Q G [PP@ N҇j^a o| <<2 uLO.T5<4ѳ7AM RDP 1ҽNXlOPOm4Y[05]GacƉ (7:11gU6@$ha^d!ѭ\Jz؈5bC<7j98K>ʳ͔,b4ۺɩZ^D}3͂;؈,>K &9}-M7`MU;뚳Pz > !,hH*\ȰÇ#JDHB3jȱǏ CP(S\ɲ% $8I8s d:ԦѣHpSӧPNd:OXjMJA`Ê]UcӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺ_o! ,l6o>]-6l8(ni:a=>$]@~ rL;t'ڏ`  5]AŸ@5N}eM`@BA:`‚Y3Pr! Y }xhS)@l ZbN ;]O;m@8#8:8Pϑ&PI8Cg= %AEA0T deIZr΅ib۝'vYj dkdƅf&\Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼ږI]y9,n71 A^AH7 ԡ+e!1|P%j-с{H@H-N8++5  < 8LB $|59pQ^O(J. g*f5J sT2A=P:ǰ @ylu2aԙ,'P xQR(YPn H"P80S.@l…%QV:i;Zf"v*p7} $[8QxX('b~%@`ft*:\hw|F:o> SMG;\8GA: Og _4 AΧu{]SM8wmυ~Ͼ[4>~ޏ!,h 3̀@@p 8/qO` bI/dp!,h /8pAL ;ħn 8`#tL !,0P8a*\ȰÇ#JHŋ cƏ CII\ɲ˗0.͛8sT@>; J"3,j'cѧP-တԫXׯ٘ٳhHp/@uiʍjS;51 L (̸Hw#K"˘1LӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËO!x=l{~p> ߏc t@sM $`58f!XWQ,8jU 8j\!TD} @$)pN=Dq!EԀ\6(G|A,稒reZ9G Pe")@!0?,@LZaN>z蔙D@*X1c^puV dRhP(\O :>=`@ z;A0К:1e@A/4hNS T@5(!;eAR--hж* +nT(!ҏ, "(KzկBG? `0`5a}A.%&L 'sjpE5Į! 1 >S%.L+Eu#̂"nxqqBpV40nX-"$9Qs Tgh"I^ mx|M5qB!,b(P@ *\ȰÇ#JHŋ3jȱǏ ?6 Iɓ$8P9aA(cʜIsɳ'G-} J$ΕE*]ʴӧPJ%nիXjaׯ`ÊKٳ>9*+p} %`۸xi&Sǩ»yA rd]{ ue RʝCK`p!,!,!,xH`J8ChP!@ 2(|@`ɂtIvΚ@ JѣH* *S<XqAu'IuI+[:xI0Қ>w'  nuݻxנK,c ax:Ƞ D};(10 bװc˞ 4,8|a  Q1Ȓ)8rf ~L[ !0@@NTOys vs ?Z 4N=^@m3PT@$ xœ8 E 8^A PdRN P! 4@X e 'GI8FZaPF)e^ 8O=4B(U|G=0G-& Q'#P B #5ǧSj5]7':U >ђB vɈEŽ)8h{g 諰JUƑ PA4V%! :;8tZ/ᇖ~9jUFI0G`B  4YA P Ap'@v m<޿ MF5HEs@|R_D͟}瀻l^ AJ/UY)l@1|p6'_ۮ@di'']$ӉrA9ՅA{-ꀶTL&Ab>l)fAUDre pr_Pn7vwYP{9&sCuXvnp2'o:07e`yB&Lp\3K u4c_C7ț@gIa;DUzg=nxQo=oo^a, Q{o6&\ ڡHBbX BI!#8ZaP TMDY@Gйm8` 1N@))|,R. R%q Dh)h=)Ƕ`c3aApKq1(;lZ`1QH v)OOT(<}(26 8$tG%ƥ:jc=`P " do"=lG̃ckA䱏qu@xԃh,_Z4RKL lGBl.22Z00xҞt3!юi ^Ma42PG]!6 #Eh&:pL%@g(^?|bDiK ]yfH@ x(B* '3DoQYR!N` Q]@$`q@Zg U/c>'.)@HfL(GզLVE V'@U:'dT(6E7V'mJ7C P& }72KQPD&1b Eu'*cc(>JLP ؘЇIT ,cڡi};\TP#Kah8{U0 p;F* .>q@S5D<%S KCјNr4:`5lv2Tic[0iR?A Bu d\ɛ`4K.JE#vꐑXMB2;QsQq_g*"9͂::F E+'8mR5RᨦۼG `*FSغ 2A,}[N] vJWMΫ#5T伡$ I^!fOVk I;avn{{{fO0ATۢ~Lb,P`lS*ݥ ,^RvA Q8ONP;ȕ;{!AU`WF0PW&"x@k;HPyu՟+A,cL= @":JlTu R %^ib%Yp)pe8k꺔 [ʉK4 H!W)0l֗4yvU  0P 7prQ1@o1!rXɣ'.6 ND XKB`w\bt@*DZF [%$ I ipI2g 8"L )`7J ݰnhU 0B7| a! fAD1 <4w5! r 0GV4iQR$7" @{}F `MTT>*X0ˑ `MAp/P(p/b7;fK v0E2|4 p 0P%Hrۄ 8f}C|!W0xBu&@:`7 7 CpOw22E)`.ّ2pI$<ԣna  FCa#r)TAZ4' ft,V'ǒ6a13G%@nsj֓J ΢!3/0/go6Cc+q`b d!gu'B9CpmnV!1l*Iq4>Oy,!1vv , _!cN/㔻eUe"'V՘gDH)VI"Qȧz4(%tdVN{IIhlA)ׄ[|ƖQ, sN-,XxlѹfDHHi׉:QI'&)AqY(ɞ" 2B Y 3&12B6B1VeꓡJQQ92KFᝧ@'%!7 @ik 4pi Oa4X4 \% p r ,@Y (V @ЅF\W0OA+'q 0t 0(BR!.]9 (R% o`URD&;`l4/@r| c{]w`9@gHl/qZ$ S::*ci5߅ 9 q!-p P) e/e)l wB 4!P7eR%e=4sA (ёM5D:g*1 YJfhX+$@IswKC`a1<7!\3Dga"~ i)S k(wLRP_$0 -^,37ಳ0Ր $г ԣdA!M";; 5duQ!Q')8^'Ւ$,b+n"=fJ0=xZJ҅:%ȉ)$R ~U  DlbcXCLP+j| Ћ3w( kK wBsG`0 ) E<0W$WP w`/y `' a@0{P)P0 B` `) ag@q|~C]Ѕ0 :G^Ѹ1`))" /@ ]\*RLqd+'*P PÐ 䀲BYC$ !mMpd+Cq"0%H SIqQguvu191s$Y@_u-3uLX•Tc" s7-σHAP)Ynhn<(k0zSGi( 02V't=g7\4|\||9ԛȂ1\φrS-j+ A<%X3?Ei#qJh&1ѹ%9bQVRq"0r 0 G毂 ɰ1?PYa,)<%@+0Yb]WD"E%KMPVA5rQ z0֭dЈ`kjDq;lِ0BjIa;QJ27 UZa\l}-pDP RT cP qM=!U!keՁ-!י :1i0z@33Ǔap"Vwֱ,\OKНJ@᯿5 PTFEblFшc:в9 wu  -#P`9I$`B8ۼ^ڗ71|ri+v P% !  )#÷K2pZ8X8|1Gv-ps%WgIiUEԸB_^a:Q;.Hpy#ѬѤ3a]A{>\bq `PKAh>!>e3kkSehQbH!WXTU.>ͪ$^©F>f.Dym?رvI6Z;Hb=vNpq H!H#,y2FA\DAr.T{aYe`4qjPAV^}'QA&D4n@ȢB': Jx"B 29dpRPIM+x̖,Dc͚$hXe ]gUsgZ(AP$NNp0R`l!t3 6p@0aQ2 P%ۑ9&[U@@gHu5tpgPDg'10SU~ޣiZ?T, dg@1Z+R "E/Dk~ZatR;8 Yr%}$, .n(ia* %MA'/CG@XBבS : @Pމ@A3mp<$G;": @4R[q"E?3 `*B:n>PG 3@! (m95G)9@)DIbĐy E \XP ב`(a0/`1 'ԡ 9x!f8hK!\P@p-Q@N@ M,(@Li h@-Qxd`4†\Xavtlh& ` t( jDSu(B:> ymFd7:ũEh5}SlN0IG-`4ɔv)AnjT"=H@!,0HH*\ȰÇ  AE30@ CIRǒ(1aÆRʜI8ssr=Q&!A*E YQZZb8X@׆̴ӫ_Ͼ˟OϿ(h& 6F(VhfzK@u@8gI ]F3nU>E1I ]OYHs~(d l.hAtU"8@R(:5  g`%@8b6$QvqGW]Җ+ TBvjRx/IV̅;2W: Ab[@+ω(} %P Gn]&YP PJ"P80@7@ dRuT:4_;5miuxې9ao]9&mF֫,l' 7pr>J_dƛV1hY"WFH!,d' \xP#FT&ŋ6tPDpB 8lP,9J3gRx/opU@i@?V~r>H!,!,!,!,!,!,qH 'LaC @ADEB(1`HA`I |( L2Ad jU0JUtTC2BD+0`8Ө?y@Ŭ#{a` !'`sM:LHsFb]a2*fb+t`#i]; qN 䲾/R l1EȬM*N /x[d$)u x 1n`ps "y( 3 RMuEBPЯ4`&AU\Đ3 B>N 0\H>o`^h\HGE2~f8,㳴\(꙱j %b0R bۀx H "w"-- 9 zzM @B$ T+:`p&AT2(XF, = JzQPrs>=1| .ș+hAxNy;l,U= 2q\@شrPffD #)DT{"1> #)\a ւgE@Ӛll cT0@B KӧHX@u1n]Gp)ҭ#1g$J!,Xm!Cl6!ۺ@zݑ1PQ̏@[JH<񾂐2XJ Ҿ*]OBuo(%vRgӌ@{)W!J CCqdy qiP7u3JS0'r%yMt"pM%aw a%T[5r'rc%v(#Ys'` PafqWO#8NVחPgBgcHHݰ U5)k4k.6@}>/rP2b 2tW n31!"Q"6~vgݱPP %3 aP &p? Hͷg7'mSxQ}7LNp )C[Yȇ^psq-Q h0-!!y~xpR&D0,!op|}0B)#$ p0`LUnMP`,Psp~ft̘@D}x 1T Y631f])jwl0ADDUK[l3UY&r( I+”a"- 3j,K#{V[AH9a%!4vc8^UDxi$ rFZ Y66ShyWCubQsA~I$Ideia%,rvA#!Q9ٙɘCeQW1ZhmRXc2[v1Kt);Al:`4Px t,P!!1 QU ie@$#YyS`yU^!0!Q*ZP?_(PTrw}2:1#b]!bp=yA#p!:M8"Р&s%FDx4h@PbGvA @ hK,`_Fcso!2K/ǣ~Q,]00n  :` !0 ."R"`4c H`@C1!8i~uрg5( }4 "R!U tMy o  CT +  `)uQLz@P ֥&}`%wG{yYT0>'`!0g000 &;% ˒b572,6P^l@0*1 "Ң>㊴)z4: W*QJDP1V PQodytBW$иF !~0 8EXCiv&yR56ईQW#pV k*:Q}u@UH &7'ÂhE, %S )P 71kN$Cp+ApW/2da81zN2 , 5P p 4 KEkRWTִ(w&Qʿ@5XB `8(u7 X (p ɀ>Ұ h+!| ed$ u-ꭖ 2E-m/mab)_"gTR@PRgH6)@[!o1$F0H!~0 Z!00cd +J|5 p 086S|_hia!+i7\KAVpyxXQ\^`Kip` t%QxO!v_PݪUDB `+p'iP ,Cp'(o]HQ,i ɜ'GH .g F0/ @ /`icP2_i!L00]]iHqpYp) L5xEfԮ,M-[P&!AoP0Aj<,+V[r\0'Ndk~`=1 MZCteQJPa^&%pw!UޮYiA31%`v٧l[p]]Z;| /#02 [Qi CfBtܧ@q5!r᷅l /ab  z8~2sJ>E96.*%9mufa¼P5żBAD8;䆃TNM $yb~>ke5ARޚb0^sj7aFqgT-!c!N7Q5)Vo>;*"=ux kEg޷yn-` .Z[B1[IV6Wq=$uS?{."tة L Nn!@D]͞\=A}9.gnծP >:TkEy8GUZPZ6#Q;O Pc8R0ԧ:!\qy_Q% !Uu -0 K m ~`} M;1 l *|469@6'X_ZSm0L}b( `Q   d0mDd{ n1o{ Ht `|( 3W @Ɨz܀R񳩟iPB2mM ѽoe *3@@ DPB >QDA8xA.b PN 90qqvP)vD[8`…. TxU G%I\M9RH@ "pA7S u**D !w FXbƍI\9`F 원̂j0 u+ d-@lZ5`As8DƘ09 rpnc z ݿ_CɖA-Bhx )J+b P^zp "32(Ébr~(g>e R?O4(;X> u@11N +OE5UUj  魬# ͠G SA/fH/ԆuA2F0(F Iph'6 Q$#O )4Z5_}>晇sr]ׄ,h@8'Gg4q u@b @ە. v8ظ>x4w֨iǽ4A%>)g"lj_(MvH0ᴬa$Fb! 2.W xrX\ N8)#2B'y } fMJ, u@6ȁr9lyZ 訞F( =|? J:@x@M4 zb.x#-r  :`$rJkSD0#Q-V`zS'&M4&/<<6 @/J.&\Ew'D\,@9$#$L /4ұC6,$A( <^<W1^H2 Ł@06Rфyra`.H@ p|La"9yB19"5INvғ dB:OҔDe C9 I*e9KZrJHBrҗf0 1t 0AL әd IHbz`L\Nӛ\Nd!m ɹNv3>,\ötѝfN@0 RE #3@X05>@`v-Y8:ƍ,4s$zl"@*;8GH}VKL^ R@WJKm=0h @&^@ ,B Eh8 x?TuӜ>Kp` )Qq:p@q  GFL_.[8i2Ч ,`lQ: P#Lj-:TdrcCsP@Ђ`pQ'{D90 pr> dL 5m= -b hb`%12 P]TYAa oEԻ^ԏ,A ZW-9)) Crz: +8  Q)ҀX3USL]9,iB gH $+8 `\B 펒d0i< BMsG !H L $-hߡ$5jhJƌ$gG"U!nЪYE5S )= 2p$XH͹ا 'B:V#ɝm;kj,`L$/|,[uHYXLp@(EsoYAp OF8b$=(60&]Ő%@;Sop5( @Y+iኯ,d369èB 8%`)Pƚ€Bdc10y[ɒ@@~!!49cNQ @:F =D٣{vB6VYpE5Fr1~X@'a{he,6*$t0EPDz,pwvp8h9BC M$F\b@A/j!+ Mܴ) :$B(fR2CGƕ8*qCGX)H *HȁƊF\!r<:Gzq{wCӢY7 -;TdGr4G=P€)/ O1G}4j&Y<'R4ÈG4G9|s TʐW 8Id$If9{aŧDE9H\ëhJې`T1G01ɂhC\$iJ bɜ#| Jtʀ+s;JˑTEÚĠʃJPʷJJɔ%0KylL O25: P5KFȫ@<ш2$JeDKnM { ɢhlQ@͌q" 6r ` HeY<{)SHXlyf`~(6h\LBz Ɂ (CHDTLLqyLT9KGq ًN, թbPKD>\臔BPOH 5%:OL9Ȁ؃y3\u\+r{D zj}PY:#`*r& [4K?X!|ib24)y W0eX ShpaM: Rnxnx58M0Esq >/&;;zk )M(! )p 誷z:S0g:BE_vȬ#Ȭ B  u8gȂ k(s }xsWu0NQ%V" Xũ;p?Xz(^U8Vໂ@?Pb[^R nghȒw3njlusl^@lJϨ*`j1hI uUy=K@UE ǫT؅M XC%V#~5I>$X0s0)T33PP8xǜru ZǗS  m9JhړjPDƈF(ɘpx\I8I=2\H G=pGU0\S˵#cHءw%Q]eMԁ(l;ك=8pX1kӪyZaILDYYP &XḌs)g [W <ukX0W` ?p`KE Mp` %@fptD~\3^Rau$j# W0[#sRVk֐P@gy{ 6JTEq&(3B (Dn`x*[=bx"ϽE>p C%K_hd`9k(f@">IaeNG(ݘ✂0b.!fh=❏ȱr؁3(*).` W~ AP/KxnkN;Bb豝Oh FJ%5z{mH Sb( ɉI+ڀt( iOjHJp[c6yq(/Y@iГ[jP8&S.=FADIމxZ+ ڈ ȫOЇMhA`+uATkڀ \88lNnӚ н滵  4sop*i#d[8 (( (*.s k.{I*t)[m6cz%0rЃ@w3P6p\,S2ĸq;0VhWPWF̀8 K z!ĂZ,2GN S)~}FmŨ'3=Z !ty4U~ڱ Nt'NzqBoZ\ J̅V=azcF6:rR[Q€1B芎Ei<qUVwR}X`l\7@],RM `wV"NjL ZwFvV8vkdȂw !,aH0*\ȰÇ#JHņ6\ȱǏ CIɓ(S\Ir0c@8sɳK> JC*}X .*QUׯ`SEdӚT ʅyr߿L(.È+^̸ !,!,!,!,!,^^H`=;f^8`2 Ըc CIA%SR*c P14eɳϟ@,4 ʢTh4% 5S!,HC  `*6T8p  08,8`@ȗ0cʜI͛8sɳMw 7|sI .1@=\SJ(&D)+I>Ӫ]˶۷p,%P( 2 !% ^[TV d`+a3k̹ ntah@ |r{4Xb;x,pre? N#D0Q#e#ZoAu+{I`8(s<˟S9srA $@P Mr" DYB 8PAd 'B($B?dA@YtVsN'@ B %&LtA) bN4ԉ"P 1bT 5)d9$d !$0@V@6ԗ4J -BGˊ@`棐A Tp@Iq 32 d  :@;)0,ZP?jOTG\2 A8\ T1ݰN,"(1@&ImjN"kP<*Pi>4V1P=VҎ%j(S Bd /p'+$BlKd7P \̯iY GX!L`<\VPԱN+ ]|A)HjJ&k K$mc 6a%K@mz@H T@"9/-9U`3l[2ZCbL l@G Ks2!,i"MAR;aB B H2:Ji sx#Sqĸ! D_! Df,#tB+h;Iq%uUBHsQP]} $!/ JĀZ>T4 N3xDkHHQ3X 8LDDV٤BE3pbR#Ϙ) 淎ȃJ|h$m46lc4HpRdC EL PP]>_0E'QM.%Њ ɨI(': | S 6G NSQU"gr@ ƞX4&Q h GRz:Sp0\7>60pɬsr!.n(rdbUԫX9ɽ֑Wl"Y"`i$sleB:ЍtKZ89.|>B7QSOŮxѥM]GVwQmȴnV7fS!BIB#dP)` #鈃b 7%=ISiE`@6p%TF[ '@x&p+EN:ʶ P$ cJ#dL@c3`n9V(3^E4of6Q'Yhow;G7v%]<.!Y \"0Z t:H) #!tA$h A@ll!Ax3Lha \%܁ (VQ5D(m Sz|,~܀MM8N&IJc>t[T*QQG;2c)%@Z'#}GPN$3zeDZ/%n4pDQ2U2MPsk5À;X>r3Q>*⟏ͭDe`xy77"}eqOX9 倨#m `\wA"4p~ 0%=3 3r`La炷8@a([4SwJlr_wk:a]'':kct  %1p 9 400p PS ?=P V= 3X 0`P-y 6iİ@oYfM*XC$ Àiby=w 5Pp v1`x] Pڝ`@h Ծ]Ҡ=f=c f/Vaٵ-Ae#TbjMF$hOjOLԴ=$j&]qݎ=P|CI!,Ap *\ȰÇ#JHEU첏tzݎE#!,!,!,!,!,!,!,aTHp*t‡#JLDǁ;<$`~]\Q!Kj`%8&G!,aTH0*t0`‡#JL8`DNǁ^1$tw. D4A(倇@O8M!,!,!,!,!,!,Ap| *\ȰÇ#JHE`X8Ǐ CIɓ(S\IRŽ,cʜI>R&pϟ@i#0 s`gЧP0PիX%3H5ׯ`O 1;v ˶-M$ҺK A]YR@oÈN>(wM$>STP(Nup"I @L8`N1JBG HJpt۵[ۆI.Rテ|~Z@!,Ap *\ȰÇ#JHEU첏tzݎE#!,!,!,!,!,!,!,X8H*\ȰÇ#JHQ": n^ŏ CII N\ɲ˒&BɳϟXѣH>K`MxBիXI(AS܌.ٳh%Bp`Nт@ Sڻx\+-rFLpˆMn K8L`̹ϠCӨ jv9װc$6XAܴo; ݻ8qg9EΣ%.Q MXno#Y8L˟O`@8PL h bupa>@:؟^"Hf! oa0B 5M!7XB"@'i8@(4/" E'O=!>b`Ӑo)([OB;x,&H.B9Paz%쟚:?Ȕ q A"a:PC%,u PXtElPJ<#raQ9,(j 5aeOz@x4$d \ JӨ12$( u\K4pPw`\ 6%|=z@81X6n@/Sd1( x я~ :z obBI(u`,(?A)|tR $@ Ɍ ܠ*%@b|;As#20g<߆<@k@.q N@; 0b8.! SqӢ DAұqF$ rq0h{)VklľR.I@!,a+H*\ȰÇ#:H ċ3jȱ CIɓ(S\ɲKIjɳϖ~ Е *iG .QݪSׯ>-RDd^T  y)s߿ LÈs Oh,q1/ά0(wWh2nF >*XO@*y0 t L_gfS _x 7ݐ:>` a ,H9 @QAX\T(BapaRs03QB@Å9rZsԂIT4P 7?YEЋIS3%$A.)D=ԠP}L)NA*@JƤ V J.P&@(pn<C 4IV U@&d%f|!,!,!,!,!,!,H*\(Ç  &B CIɓ(S\ɲ˖`HdM-:X NJ/ JѣH*5 2V|`ƥXjʵW$ɀž:ajՁWʝKݻ"2qplp.`^0p\JL9Xpb:P c.˞M S&hw/ȓ+_>@+i d-HrJ Ë/DPP*aࠚb +5Н[8( FA!dVAq%*y 6B9 8 2)00@L>P{/ QR4`:@2vQ TT5}" VBA9Ό)`@8-5٨AF4* Pu1e3PPyRW tJ;\*e^  N$%T3 `#P1Dps U\2A(0:謴nipD%x !_j5_W ,8]eX:+R6@LWb9 TLDa9AyVPXAk(A@ 0? ,PM1QP𛚿Y #T! AU Z0DE @0:G;0Bt@P[7*x# 3\ I}6ڱ'<S:?ݺR+⦆+v%tVwAê0yJP~o)qZTJ89L A"OI2fLd` Ġ` A %vr(R% ?_`LP$Jx""pP8^ p"//c88B#z`DHB/{d\@2J-썈\ۀ0+SF z>2xANaRL*WV򕰌,gIZ̥.]EQAXOa `>A1"S0!]R: -xJ;# k*GgLˢ  8 N@دCjA9NC:Pp;(z; dW A'iա  X řH LY [h<k_F@MIQC81X8`HAP Yp@ Ҩ%1ĨQ D /lXc/ ADӁO`cj#hBi] r1`d+ Fu(tq@uk?maL(7` ȄBZN\Hi)teGS@FDJV(TdFbXZu1Un&CG$0s :\d*|vUւȩ? 84 TW` @Pb %`t 3Q~6mhr؆r}nq OYj g8LEP*ݭ @PhuSʨ-..Y5Y!oeLΝUe-+Q>{@ܡ.8)r>*Tڛݲe 4QυfTiG G #pur@aD" [+jo (jIy8(R=U@*p;M)@*L#Jl%i.&]F8qTv$ d~Gդ@s:w'*"m):@%xIP6w͏@@~aGb@VL f"ȃ *7a BB   ^Kx1@S%PT4QeNHQUP PX6$%X09 0 v 4dD~ ok7 KUbbsIKtUixЇF*!0 

 cCVX4Cxc8VP $` f@GP'tR $$0ʹZu/ a qoy! 8N= y8%=E;b Wg3U@ F"4/ 0l-"t4IC4X8 cnxGsC "8x %"qa;1tfp8X@EgsJG1|ŸpR=m6o&^@bE;:QΕBWP.  @:P+4^FOS4%0Փl4 0 pX&fqpg`J!= *B5)d23q,piz&-<1?ա:|9<"tX(i -P4v1D_+6*%ٕR.ae@ywP!YPK,`!)T/ /#2 fQ 5 Wb4}'/41̹+ +Qs!~!\03!uNU2䬄~f1{:3A`rG 'Gc R30z&gBej<#{1Kf 8fC0 ;\ c(1s3 3W:*)` 3|(1JE |!3|F`c3 n4"0 5o d&C p C%fZ;e!`؞; /T R%! \Їv 5((C; @C1r I%)S %P1@ lPO  `-()B` &F ՓU+ݶ P+yEPl ҃B/@&/r X5?P5PMXp a/PBx$2ӍP c@:,[!eSf܍1AF;.a.3 P;c 43A yuDvRI e)7~o>9`uRCu!07P"Sx$u-&aLiDX+ [} *`}ǝ  pT"PI A+4Ft<H SblnuP dG URe3d *%r q.a$CC.B~$9(^;vsV a /;@R*bApH] P'E 3y-B!</<:3qаQXǔ˗%b\_0CyG7/x3S@j0헃"a`vH8`Xxi ;L蠃Hr=J@`ʽ&Xঋ:=h3.őN H,/-ʽK#& K4KDJC|RDp$08{O%D>{8@V[$R!Z* Ӫr0 BPXtR1>?Dmx< *+85s344w3N-/%#W,AĒ 28)TRUu:4B{TT-WPN/p  PR8oMw;K,PIGVuU@XILa O]A`%_JXPEIfL6+zvm[7Fi܆1RiX tӕubC+;@] TPVY9:h&yÁY9`K 5tZZ&lVV%s,02qK0J -(X gjfqP>XD;uȓF h" )=\o=wݻv}fqN8J^^J*=a"Z "j@-F>j 'PG?}K}50&H WR!B@䑃DMy Xn ꐅJ4AF?p E0$8,ؙA99 wȃ i6 22vyء^ɍ4 tЊW>Jj"  ulRd(-8at#ZBЂ7@ jݍ@x4Ayǘ0:8PGu(  @`ЃMCV?ڲv3:Ch=M5v4>rHl )B7S&ԣ}:TNY98}LyfizZZ뮼+k&6F+Vkfvmnqm @|؎nV>7\jq mKW! d"* pHA3uC H'NtylL1B-0C- Y{);XdyTPmF[%T\bpPĀ]p 5Qc^2/m?u@Z6Nh-5cCVG8. Ti"P`]:36TY>peUi;8 v ]t8@ ?wPOo5_+Ц̷_ W&Q$(}ADϾPlR@;tty-reader-0.9.0/benchmarks/000077500000000000000000000000001376377256200157375ustar00rootroot00000000000000tty-reader-0.9.0/benchmarks/speed_read_char.rb000066400000000000000000000022541376377256200213570ustar00rootroot00000000000000# frozen_string_literal: true require "stringio" require "benchmark/ips" require_relative "../lib/tty-reader" input = StringIO.new("a") output = StringIO.new $stdin = input reader = TTY::Reader.new(input: input, output: output) Benchmark.ips do |x| x.report("getc") do input.rewind $stdin.getc end x.report("read_char") do input.rewind reader.read_char end x.compare! end # v0.9.0 # # Calculating ------------------------------------- # getc 2.557M (± 4.6%) i/s - 12.785M in 5.011706s # read_char 14.553k (± 2.3%) i/s - 72.875k in 5.010291s # # Comparison: # getc: 2556748.9 i/s # read_char: 14553.1 i/s - 175.68x slower # # v0.1.0 # # Calculating ------------------------------------- # getc 52462 i/100ms # read_char 751 i/100ms # ------------------------------------------------- # getc 2484819.4 (±4.1%) i/s - 12433494 in 5.013438s # read_char 7736.4 (±2.9%) i/s - 39052 in 5.052628s # # Comparison: # getc: 2484819.4 i/s # read_char: 7736.4 i/s - 321.19x slower tty-reader-0.9.0/benchmarks/speed_read_line.rb000066400000000000000000000022631376377256200213710ustar00rootroot00000000000000# frozen_string_literal: true require "stringio" require "benchmark/ips" require_relative "../lib/tty-reader" input = StringIO.new("abc\n") output = StringIO.new $stdin = input reader = TTY::Reader.new(input: input, output: output) Benchmark.ips do |x| x.report("gets") do input.rewind $stdin.gets end x.report("read_line") do input.rewind reader.read_line end x.compare! end # v0.9.0 # # Calculating ------------------------------------- # gets 2.181M (± 3.2%) i/s - 10.988M in 5.043046s # read_line 1.265k (± 2.8%) i/s - 6.324k in 5.005288s # # Comparison: # gets: 2181160.4 i/s # read_line: 1264.6 i/s - 1724.74x slower # # v0.1.0 # # Calculating ------------------------------------- # gets 51729 i/100ms # read_line 164 i/100ms # ------------------------------------------------- # gets 1955255.2 (±3.7%) i/s - 9776781 in 5.008004s # read_line 1215.1 (±33.1%) i/s - 5248 in 5.066569s # # Comparison: # gets: 1955255.2 i/s # read_line: 1215.1 i/s - 1609.19x slower tty-reader-0.9.0/bin/000077500000000000000000000000001376377256200143725ustar00rootroot00000000000000tty-reader-0.9.0/bin/console000077500000000000000000000001441376377256200157610ustar00rootroot00000000000000#!/usr/bin/env ruby require "bundler/setup" require "tty/reader" require "irb" IRB.start(__FILE__) tty-reader-0.9.0/bin/setup000077500000000000000000000002031376377256200154530ustar00rootroot00000000000000#!/usr/bin/env bash set -euo pipefail IFS=$'\n\t' set -vx bundle install # Do any other automated setup that you need to do here tty-reader-0.9.0/examples/000077500000000000000000000000001376377256200154405ustar00rootroot00000000000000tty-reader-0.9.0/examples/keypress.rb000066400000000000000000000005031376377256200176300ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" reader = TTY::Reader.new puts "Press a key (or Ctrl-X to exit)" loop do print "=> " char = reader.read_keypress if char == ?\C-x puts "Exiting..." exit else puts "#{char.inspect} [#{char.ord}] (hex: #{char.ord.to_s(16)})" end end tty-reader-0.9.0/examples/keypress_nonblock.rb000066400000000000000000000005721376377256200215230ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" reader = TTY::Reader.new puts "Press a key (or Ctrl-X to exit)" loop do print reader.cursor.clear_line print "=> " char = reader.read_keypress(nonblock: true) if char == ?\C-x puts "Exiting..." exit elsif char puts "#{char.inspect} [#{char.ord}] (hex: #{char.ord.to_s(16)})" end end tty-reader-0.9.0/examples/line.rb000066400000000000000000000002321376377256200167110ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" reader = TTY::Reader.new answer = reader.read_line(">> ") puts "answer: #{answer}" tty-reader-0.9.0/examples/multi_prompt.rb000066400000000000000000000003301376377256200205140ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" reader = TTY::Reader.new reader.on(:keyctrl_x, :keyescape) do puts "Exiting..." exit end loop do reader.read_line("one\ntwo\nthree> ") end tty-reader-0.9.0/examples/multiline.rb000066400000000000000000000003101376377256200177610ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" reader = TTY::Reader.new puts "Press Ctrl-D or Ctrl-Z to finish" answer = reader.read_multiline(">> ") puts "\nanswer: #{answer}" tty-reader-0.9.0/examples/noecho.rb000066400000000000000000000002461376377256200172420ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" reader = TTY::Reader.new answer = reader.read_line("=> ", echo: false) puts "Answer: #{answer}" tty-reader-0.9.0/examples/shell.rb000066400000000000000000000004621376377256200170760ustar00rootroot00000000000000# frozen_string_literal: true require_relative "../lib/tty-reader" puts "*** TTY::Reader Shell ***" puts "Press Ctrl-X or ESC to exit" reader = TTY::Reader.new reader.on(:keyctrl_x, :keyescape) do puts "Exiting..." exit end loop do line = reader.read_line("=> ") break if line =~ /^exit/i end tty-reader-0.9.0/lib/000077500000000000000000000000001376377256200143705ustar00rootroot00000000000000tty-reader-0.9.0/lib/tty-reader.rb000066400000000000000000000000361376377256200167740ustar00rootroot00000000000000require_relative 'tty/reader' tty-reader-0.9.0/lib/tty/000077500000000000000000000000001376377256200152105ustar00rootroot00000000000000tty-reader-0.9.0/lib/tty/reader.rb000066400000000000000000000316661376377256200170130ustar00rootroot00000000000000# frozen_string_literal: true require "tty-cursor" require "tty-screen" require "wisper" require_relative "reader/history" require_relative "reader/line" require_relative "reader/key_event" require_relative "reader/console" require_relative "reader/win_console" require_relative "reader/version" module TTY # A class responsible for reading character input from STDIN # # Used internally to provide key and line reading functionality # # @api public class Reader include Wisper::Publisher # Key codes CARRIAGE_RETURN = 13 NEWLINE = 10 BACKSPACE = 8 DELETE = 127 # Keys that terminate input EXIT_KEYS = [:ctrl_d, :ctrl_z] # Raised when the user hits the interrupt key(Control-C) # # @api public InputInterrupt = Class.new(Interrupt) # Check if Windowz mode # # @return [Boolean] # # @api public def self.windows? ::File::ALT_SEPARATOR == "\\" end attr_reader :input attr_reader :output attr_reader :env attr_reader :track_history alias track_history? track_history attr_reader :console attr_reader :cursor # Initialize a Reader # # @param [IO] input # the input stream # @param [IO] output # the output stream # @param [Symbol] interrupt # the way to handle the Ctrl+C key out of :signal, :exit, :noop # @param [Hash] env # the environment variables # @param [Boolean] track_history # disable line history tracking, true by default # @param [Boolean] history_cycle # allow cycling through history, false by default # @param [Boolean] history_duplicates # allow duplicate entires, false by default # @param [Proc] history_exclude # exclude lines from history, by default all lines are stored # # @api public def initialize(input: $stdin, output: $stdout, interrupt: :error, env: ENV, track_history: true, history_cycle: false, history_exclude: History::DEFAULT_EXCLUDE, history_duplicates: false) @input = input @output = output @interrupt = interrupt @env = env @track_history = track_history @history_cycle = history_cycle @history_exclude = history_exclude @history_duplicates = history_duplicates @console = select_console(input) @history = History.new do |h| h.cycle = history_cycle h.duplicates = history_duplicates h.exclude = history_exclude end @stop = false # gathering input @cursor = TTY::Cursor subscribe(self) end alias old_subcribe subscribe # Subscribe to receive key events # # @example # reader.subscribe(MyListener.new) # # @return [self|yield] # # @api public def subscribe(listener, options = {}) old_subcribe(listener, options) object = self if block_given? object = yield unsubscribe(listener) end object end # Unsubscribe from receiving key events # # @example # reader.unsubscribe(my_listener) # # @return [void] # # @api public def unsubscribe(listener) registry = send(:local_registrations) registry.each do |object| if object.listener.equal?(listener) registry.delete(object) end end end # Select appropriate console # # @api private def select_console(input) if self.class.windows? && !env["TTY_TEST"] WinConsole.new(input) else Console.new(input) end end # Get input in unbuffered mode. # # @example # unbufferred do # ... # end # # @api public def unbufferred(&block) bufferring = output.sync # Immediately flush output output.sync = true block[] if block_given? ensure output.sync = bufferring end # Read a keypress including invisible multibyte codes and return # a character as a string. # Nothing is echoed to the console. This call will block for a # single keypress, but will not wait for Enter to be pressed. # # @param [Boolean] echo # whether to echo chars back or not, defaults to false # @option [Boolean] raw # whenther raw mode is enabled, defaults to true # @option [Boolean] nonblock # whether to wait for input or not, defaults to false # # @return [String] # # @api public def read_keypress(echo: false, raw: true, nonblock: false) codes = unbufferred do get_codes(echo: echo, raw: raw, nonblock: nonblock) end char = codes ? codes.pack("U*") : nil trigger_key_event(char) if char char end alias read_char read_keypress # Get input code points # # @param [Boolean] echo # whether to echo chars back or not, defaults to false # @option [Boolean] raw # whenther raw mode is enabled, defaults to true # @option [Boolean] nonblock # whether to wait for input or not, defaults to false # @param [Array[Integer]] codes # the currently read char code points # # @return [Array[Integer]] # # @api private def get_codes(echo: true, raw: false, nonblock: false, codes: []) char = console.get_char(echo: echo, raw: raw, nonblock: nonblock) handle_interrupt if console.keys[char] == :ctrl_c return if char.nil? codes << char.ord condition = proc { |escape| (codes - escape).empty? || (escape - codes).empty? && !(64..126).cover?(codes.last) } while console.escape_codes.any?(&condition) char_codes = get_codes(echo: echo, raw: raw, nonblock: true, codes: codes) break if char_codes.nil? end codes end # Get a single line from STDIN. Each key pressed is echoed # back to the shell. The input terminates when enter or # return key is pressed. # # @param [String] prompt # the prompt to display before input # @param [String] value # the value to pre-populate line with # @param [Boolean] echo # whether to echo chars back or not, defaults to false # @option [Boolean] raw # whenther raw mode is enabled, defaults to true # @option [Boolean] nonblock # whether to wait for input or not, defaults to false # # @return [String] # # @api public def read_line(prompt = "", value: "", echo: true, raw: true, nonblock: false) line = Line.new(value, prompt: prompt) screen_width = TTY::Screen.width buffer = "" output.print(line) while (codes = get_codes(echo: echo, raw: raw, nonblock: nonblock)) && (code = codes[0]) char = codes.pack("U*") if EXIT_KEYS.include?(console.keys[char]) trigger_key_event(char, line: line.to_s) break end if raw && echo clear_display(line, screen_width) end if console.keys[char] == :backspace || code == BACKSPACE if !line.start? line.left line.delete end elsif console.keys[char] == :delete || code == DELETE line.delete elsif console.keys[char].to_s =~ /ctrl_/ # skip elsif console.keys[char] == :up line.replace(history_previous) if history_previous? elsif console.keys[char] == :down line.replace(history_next? ? history_next : buffer) if track_history? elsif console.keys[char] == :left line.left elsif console.keys[char] == :right line.right elsif console.keys[char] == :home line.move_to_start elsif console.keys[char] == :end line.move_to_end else if raw && code == CARRIAGE_RETURN char = "\n" line.move_to_end end line.insert(char) buffer = line.text end if (console.keys[char] == :backspace || code == BACKSPACE) && echo if raw output.print("\e[1X") unless line.start? else output.print(?\s + (line.start? ? "" : ?\b)) end end # trigger before line is printed to allow for line changes trigger_key_event(char, line: line.to_s) if raw && echo output.print(line.to_s) if char == "\n" line.move_to_start elsif !line.end? # readjust cursor position output.print(cursor.backward(line.text_size - line.cursor)) end end if [CARRIAGE_RETURN, NEWLINE].include?(code) buffer = "" output.puts unless echo break end end if track_history? && echo add_to_history(line.text.rstrip) end line.text end # Clear display for the current line input # # Handles clearing input that is longer than the current # terminal width which allows copy & pasting long strings. # # @param [Line] line # the line to display # @param [Number] screen_width # the terminal screen width # # @api private def clear_display(line, screen_width) total_lines = count_screen_lines(line.size, screen_width) current_line = count_screen_lines(line.prompt_size + line.cursor, screen_width) lines_down = total_lines - current_line output.print(cursor.down(lines_down)) unless lines_down.zero? output.print(cursor.clear_lines(total_lines)) end # Count the number of screen lines given line takes up in terminal # # @param [Integer] line_or_size # the current line or its length # @param [Integer] screen_width # the width of terminal screen # # @return [Integer] # # @api public def count_screen_lines(line_or_size, screen_width = TTY::Screen.width) line_size = if line_or_size.is_a?(Integer) line_or_size else Line.sanitize(line_or_size).size end # new character + we don't want to add new line on screen_width new_chars = self.class.windows? ? -1 : 1 1 + [0, (line_size - new_chars) / screen_width].max end # Read multiple lines and return them in an array. # Skip empty lines in the returned lines array. # The input gathering is terminated by Ctrl+d or Ctrl+z. # # @param [String] prompt # the prompt displayed before the input # @param [String] value # the value to pre-populate line with # @param [Boolean] echo # whether to echo chars back or not, defaults to false # @option [Boolean] raw # whenther raw mode is enabled, defaults to true # @option [Boolean] nonblock # whether to wait for input or not, defaults to false # # @yield [String] line # # @return [Array[String]] # # @api public def read_multiline(prompt = "", value: "", echo: true, raw: true, nonblock: false) @stop = false lines = [] empty_str = "" loop do line = read_line(prompt, value: value, echo: echo, raw: raw, nonblock: nonblock) value = empty_str unless value.empty? # reset break if !line || line == empty_str next if line !~ /\S/ && !@stop if block_given? yield(line) unless line.to_s.empty? else lines << line unless line.to_s.empty? end break if @stop end lines end alias read_lines read_multiline # Expose event broadcasting # # @api public def trigger(event, *args) publish(event, *args) end # Capture Ctrl+d and Ctrl+z key events # # @api private def keyctrl_d(*) @stop = true end alias keyctrl_z keyctrl_d def add_to_history(line) @history.push(line) end def history_next? @history.next? end def history_next @history.next @history.get end def history_previous? @history.previous? end def history_previous line = @history.get @history.previous line end # Inspect class name and public attributes # @return [String] # # @api public def inspect "#<#{self.class}: @input=#{input}, @output=#{output}>" end private # Publish event # # @param [String] char # the key pressed # # @return [nil] # # @api private def trigger_key_event(char, line: "") event = KeyEvent.from(console.keys, char, line) trigger(:"key#{event.key.name}", event) if event.trigger? trigger(:keypress, event) end # Handle input interrupt based on provided value # # @api private def handle_interrupt case @interrupt when :signal Process.kill("SIGINT", Process.pid) when :exit exit(130) when Proc @interrupt.call when :noop # Noop else raise InputInterrupt end end end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/000077500000000000000000000000001376377256200164525ustar00rootroot00000000000000tty-reader-0.9.0/lib/tty/reader/console.rb000066400000000000000000000026241376377256200204450ustar00rootroot00000000000000# frozen_string_literal: true require "io/wait" require_relative "keys" require_relative "mode" module TTY class Reader class Console ESC = "\e" CSI = "\e[" TIMEOUT = 0.1 # Key codes # # @return [Hash[Symbol]] # # @api public attr_reader :keys # Escape codes # # @return [Array[Integer]] # # @api public attr_reader :escape_codes def initialize(input) @input = input @mode = Mode.new(input) @keys = Keys.ctrl_keys.merge(Keys.keys) @escape_codes = [[ESC.ord], CSI.bytes.to_a] end # Get a character from console with echo # # @param [Boolean] echo # whether to echo input back or not, defaults to true # @param [Boolean] raw # whether to use raw mode or not, defaults to false # @param [Boolean] nonblock # whether to wait for input or not, defaults to false # # @return [String] # # @api private def get_char(echo: true, raw: false, nonblock: false) mode.raw(raw) do mode.echo(echo) do if nonblock input.wait_readable(TIMEOUT) ? input.getc : nil else input.getc end end end end protected attr_reader :mode attr_reader :input end # Console end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/history.rb000066400000000000000000000073371376377256200205120ustar00rootroot00000000000000# frozen_string_literal: true require "forwardable" module TTY class Reader # A class responsible for storing a history of all lines entered by # user when interacting with shell prompt. # # @api private class History include Enumerable extend Forwardable # Default maximum size DEFAULT_SIZE = 32 << 4 # Default exclude DEFAULT_EXCLUDE = ->(line) { line.chomp == "" } def_delegators :@history, :size, :length, :to_s, :inspect # Set and retrieve the maximum size of the buffer attr_accessor :max_size # The current index # # @return [Integer] # # @api private attr_reader :index # Decides whether or not to allow cycling through stored lines. # # @return [Boolean] # # @api public attr_accessor :cycle # Decides wether or not duplicate lines are stored. # # @return [Boolean] # # @api public attr_accessor :duplicates # Dictates which lines are stored. # # @return [Proc] # # @public attr_accessor :exclude # Create a History buffer # # @param [Integer] max_size # the maximum size for history buffer # @param [Boolean] cycle # whether or not the history should cycle, false by default # @param [Boolean] duplicates # whether or not to store duplicates, true by default # @param [Boolean] exclude # a Proc to exclude items from storing in history # # @api public def initialize(max_size = DEFAULT_SIZE, duplicates: true, cycle: false, exclude: DEFAULT_EXCLUDE) @max_size = max_size @index = nil @history = [] @duplicates = duplicates @exclude = exclude @cycle = cycle yield self if block_given? end # Iterates over history lines # # @api public def each(&block) if block_given? @history.each(&block) else @history.to_enum end end # Add the last typed line to history buffer # # @param [String] line # # @api public def push(line) @history.delete(line) unless @duplicates return if line.to_s.empty? || @exclude[line] @history.shift if size >= max_size @history << line @index = @history.size - 1 self end alias << push # Move the pointer to the next line in the history # # @api public def next return if size.zero? if @index == size - 1 @index = 0 if @cycle else @index += 1 end end def next? size > 0 && !(@index == size - 1 && !@cycle) end # Move the pointer to the previous line in the history def previous return if size.zero? if @index.zero? @index = size - 1 if @cycle else @index -= 1 end end def previous? size > 0 && !(@index < 0 && !@cycle) end # Return line at the specified index # # @raise [IndexError] index out of range # # @api public def [](index) if index < 0 index += @history.size if index < 0 end line = @history[index] if line.nil? raise IndexError, "invalid index" end line.dup end # Get current line # # @api public def get return if size.zero? self[@index] end # Empty all history lines # # @api public def clear @history.clear @index = 0 end end # History end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/key_event.rb000066400000000000000000000025601376377256200207730ustar00rootroot00000000000000# frozen_string_literal: true require_relative "keys" module TTY class Reader # Responsible for meta-data information about key pressed # # @api private class Key < Struct.new(:name, :ctrl, :meta, :shift) def initialize(*) super(nil, false, false, false) end end # Represents key event emitted during keyboard press # # @api public class KeyEvent < Struct.new(:key, :value, :line) # Create key event from read input codes # # @param [Hash[Symbol]] keys # the keys and codes mapping # @param [Array[Integer]] codes # # @return [KeyEvent] # # @api public def self.from(keys, char, line = "") key = Key.new key.name = (name = keys[char]) ? name : :ignore case char when proc { |c| c =~ /^[a-z]{1}$/ } key.name = :alpha when proc { |c| c =~ /^[A-Z]{1}$/ } key.name = :alpha key.shift = true when proc { |c| c =~ /^\d+$/ } key.name = :num when proc { |cs| !Keys.ctrl_keys[cs].nil? } key.ctrl = true end new(key, char, line) end # Check if key event can be triggered # # @return [Boolean] # # @api public def trigger? !key.nil? && !key.name.nil? end end # KeyEvent end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/keys.rb000066400000000000000000000107731376377256200177620ustar00rootroot00000000000000# frozen_string_literal: true module TTY class Reader # Mapping of escape codes to keys module Keys def ctrl_keys { ?\C-a => :ctrl_a, ?\C-b => :ctrl_b, ?\C-c => :ctrl_c, ?\C-d => :ctrl_d, ?\C-e => :ctrl_e, ?\C-f => :ctrl_f, ?\C-g => :ctrl_g, ?\C-h => :ctrl_h, # identical to "\b" ?\C-i => :ctrl_i, # identical to "\t" ?\C-j => :ctrl_j, # identical to "\n" ?\C-k => :ctrl_k, ?\C-l => :ctrl_l, ?\C-m => :ctrl_m, # identical to "\r" ?\C-n => :ctrl_n, ?\C-o => :ctrl_o, ?\C-p => :ctrl_p, ?\C-q => :ctrl_q, ?\C-r => :ctrl_r, ?\C-s => :ctrl_s, ?\C-t => :ctrl_t, ?\C-u => :ctrl_u, ?\C-v => :ctrl_v, ?\C-w => :ctrl_w, ?\C-x => :ctrl_x, ?\C-y => :ctrl_y, ?\C-z => :ctrl_z, ?\C-@ => :ctrl_space, ?\C-| => :ctrl_backslash, # both Ctrl-| & Ctrl-\ ?\C-] => :ctrl_square_close, "\e[1;5A" => :ctrl_up, "\e[1;5B" => :ctrl_down, "\e[1;5C" => :ctrl_right, "\e[1;5D" => :ctrl_left } end module_function :ctrl_keys def keys { "\t" => :tab, "\n" => :enter, "\r" => :return, "\e" => :escape, " " => :space, "\x7F" => :backspace, "\e[1~" => :home, "\e[2~" => :insert, "\e[3~" => :delete, "\e[3;2~" => :shift_delete, "\e[3;5~" => :ctrl_delete, "\e[4~" => :end, "\e[5~" => :page_up, "\e[6~" => :page_down, "\e[7~" => :home, # xrvt "\e[8~" => :end, # xrvt "\e[A" => :up, "\e[B" => :down, "\e[C" => :right, "\e[D" => :left, "\e[E" => :clear, "\e[H" => :home, "\e[F" => :end, "\e[Z" => :back_tab, # shift + tab # xterm/gnome "\eOA" => :up, "\eOB" => :down, "\eOC" => :right, "\eOD" => :left, "\eOE" => :clear, "\eOF" => :end, "\eOH" => :home, "\eOP" => :f1, # xterm "\eOQ" => :f2, # xterm "\eOR" => :f3, # xterm "\eOS" => :f4, # xterm "\e[[A" => :f1, # linux "\e[[B" => :f2, # linux "\e[[C" => :f3, # linux "\e[[D" => :f4, # linux "\e[[E" => :f5, # linux "\e[11~" => :f1, # rxvt-unicode "\e[12~" => :f2, # rxvt-unicode "\e[13~" => :f3, # rxvt-unicode "\e[14~" => :f4, # rxvt-unicode "\e[15~" => :f5, "\e[17~" => :f6, "\e[18~" => :f7, "\e[19~" => :f8, "\e[20~" => :f9, "\e[21~" => :f10, "\e[23~" => :f11, "\e[24~" => :f12, "\e[25~" => :f13, "\e[26~" => :f14, "\e[28~" => :f15, "\e[29~" => :f16, "\e[31~" => :f17, "\e[32~" => :f18, "\e[33~" => :f19, "\e[34~" => :f20, # xterm "\e[1;2P" => :f13, "\e[2;2Q" => :f14, "\e[1;2S" => :f16, "\e[15;2~" => :f17, "\e[17;2~" => :f18, "\e[18;2~" => :f19, "\e[19;2~" => :f20, "\e[20;2~" => :f21, "\e[21;2~" => :f22, "\e[23;2~" => :f23, "\e[24;2~" => :f24, } end module_function :keys def win_keys { "\t" => :tab, "\n" => :enter, "\r" => :return, "\e" => :escape, " " => :space, "\b" => :backspace, [224, 71].pack("U*") => :home, [224, 79].pack("U*") => :end, [224, 82].pack("U*") => :insert, [224, 83].pack("U*") => :delete, [224, 73].pack("U*") => :page_up, [224, 81].pack("U*") => :page_down, [224, 72].pack("U*") => :up, [224, 80].pack("U*") => :down, [224, 77].pack("U*") => :right, [224, 75].pack("U*") => :left, [224, 83].pack("U*") => :clear, "\x00;" => :f1, "\x00<" => :f2, "\x00" => :f3, "\x00=" => :f4, "\x00?" => :f5, "\x00@" => :f6, "\x00A" => :f7, "\x00B" => :f8, "\x00C" => :f9, "\x00D" => :f10, "\x00\x85" => :f11, "\x00\x86" => :f12 } end module_function :win_keys end # Keys end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/line.rb000066400000000000000000000124431376377256200177320ustar00rootroot00000000000000# frozen_string_literal: true require "forwardable" module TTY class Reader class Line ANSI_MATCHER = /(\[)?\033(\[)?[;?\d]*[\dA-Za-z](\])?/ # Strip ANSI characters from the text # # @param [String] text # # @return [String] # # @api public def self.sanitize(text) text.dup.gsub(ANSI_MATCHER, "") end # The editable text # @api public attr_reader :text # The current cursor position witin the text # @api public attr_reader :cursor # The line mode # @api public attr_reader :mode # The prompt displayed before input # @api public attr_reader :prompt # Create a Line instance # # @api private def initialize(text = "", prompt: "") @prompt = prompt.dup @text = text.dup @cursor = [0, @text.length].max @mode = :edit yield self if block_given? end # Check if line is in edit mode # # @return [Boolean] # # @public def editing? @mode == :edit end # Enable edit mode # # @return [Boolean] # # @public def edit_mode @mode = :edit end # Check if line is in replace mode # # @return [Boolean] # # @public def replacing? @mode == :replace end # Enable replace mode # # @return [Boolean] # # @public def replace_mode @mode = :replace end # Check if cursor reached beginning of the line # # @return [Boolean] # # @api public def start? @cursor.zero? end # Check if cursor reached end of the line # # @return [Boolean] # # @api public def end? @cursor == @text.length end # Move line position to the left by n chars # # @api public def left(n = 1) @cursor = [0, @cursor - n].max end # Move line position to the right by n chars # # @api public def right(n = 1) @cursor = [@text.length, @cursor + n].min end # Move cursor to beginning position # # @api public def move_to_start @cursor = 0 end # Move cursor to end position # # @api public def move_to_end @cursor = @text.length # put cursor outside of text end # Insert characters inside a line. When the lines exceeds # maximum length, an extra space is added to accomodate index. # # @param [Integer] i # the index to insert at # # @param [String] chars # the characters to insert # # @example # text = "aaa" # line[5]= "b" # => "aaa b" # # @api public def []=(i, chars) edit_mode if i.is_a?(Range) @text[i] = chars @cursor += chars.length return end if i <= 0 before_text = "" after_text = @text.dup elsif i > @text.length - 1 # insert outside of line input before_text = @text.dup after_text = ?\s * (i - @text.length) @cursor += after_text.length else before_text = @text[0..i-1].dup after_text = @text[i..-1].dup end if i > @text.length - 1 @text = before_text + after_text + chars else @text = before_text + chars + after_text end @cursor = i + chars.length end # Read character # # @api public def [](i) @text[i] end # Replace current line with new text # # @param [String] text # # @api public def replace(text) @text = text @cursor = @text.length # put cursor outside of text replace_mode end # Insert char(s) at cursor position # # @api public def insert(chars) self[@cursor] = chars end # Add char and move cursor # # @api public def <<(char) @text << char @cursor += 1 end # Remove char from the line at current position # # @api public def delete(n = 1) @text.slice!(@cursor, n) end # Remove char from the line in front of the cursor # # @param [Integer] n # the number of chars to remove # # @api public def remove(n = 1) left(n) @text.slice!(@cursor, n) end # Full line with prompt as string # # @api public def to_s "#{@prompt}#{@text}" end alias inspect to_s # Prompt size # # @api public def prompt_size p = self.class.sanitize(@prompt).split(/\r?\n/) # return the length of each line + screen width for every line past the first # which accounts for multi-line prompts p.join.length + ((p.length - 1) * TTY::Screen.width ) end # Text size # # @api public def text_size self.class.sanitize(@text).size end # Full line size with prompt # # @api public def size prompt_size + text_size end alias length size end # Line end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/mode.rb000066400000000000000000000013741376377256200177300ustar00rootroot00000000000000# frozen_string_literal: true require "io/console" module TTY class Reader class Mode # Initialize a Terminal # # @api public def initialize(input = $stdin) @input = input end # Echo given block # # @param [Boolean] is_on # # @api public def echo(is_on = true, &block) if is_on || !@input.tty? yield else @input.noecho(&block) end end # Use raw mode in the given block # # @param [Boolean] is_on # # @api public def raw(is_on = true, &block) if is_on && @input.tty? @input.raw(&block) else yield end end end # Mode end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/version.rb000066400000000000000000000001501376377256200204600ustar00rootroot00000000000000# frozen_string_literal: true module TTY class Reader VERSION = "0.9.0" end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/win_api.rb000066400000000000000000000024271376377256200204320ustar00rootroot00000000000000# frozen_string_literal: true require "fiddle" module TTY class Reader module WinAPI include Fiddle CRT_HANDLE = Fiddle::Handle.new("msvcrt") rescue Fiddle::Handle.new("crtdll") # Get a character from the console without echo. # # @return [String] # return the character read # # @api public def getch @@getch ||= Fiddle::Function.new(CRT_HANDLE["_getch"], [], TYPE_INT) @@getch.call end module_function :getch # Gets a character from the console with echo. # # @return [String] # return the character read # # @api public def getche @@getche ||= Fiddle::Function.new(CRT_HANDLE["_getche"], [], TYPE_INT) @@getche.call end module_function :getche # Check the console for recent keystroke. If the function # returns a nonzero value, a keystroke is waiting in the buffer. # # @return [Integer] # return a nonzero value if a key has been pressed. Otherwirse, # it returns 0. # # @api public def kbhit @@kbhit ||= Fiddle::Function.new(CRT_HANDLE["_kbhit"], [], TYPE_INT) @@kbhit.call end module_function :kbhit end # WinAPI end # Reader end # TTY tty-reader-0.9.0/lib/tty/reader/win_console.rb000066400000000000000000000040651376377256200213230ustar00rootroot00000000000000# frozen_string_literal: true require_relative "keys" module TTY class Reader class WinConsole ESC = "\e" NUL_HEX = "\x00" EXT_HEX = "\xE0" # Key codes # # @return [Hash[Symbol]] # # @api public attr_reader :keys # Escape codes # # @return [Array[Integer]] # # @api public attr_reader :escape_codes def initialize(input) require_relative "win_api" @input = input @keys = Keys.ctrl_keys.merge(Keys.win_keys) @escape_codes = [[NUL_HEX.ord], [ESC.ord], EXT_HEX.bytes.to_a] end # Get a character from console blocking for input # # @param [Boolean] echo # whether to echo input back or not, defaults to true # @param [Boolean] raw # whether to use raw mode or not, defaults to false # @param [Boolean] nonblock # whether to wait for input or not, defaults to false # # @return [String] # # @api private def get_char(echo: true, raw: false, nonblock: false) if raw && echo if nonblock get_char_echo_non_blocking else get_char_echo_blocking end elsif raw && !echo nonblock ? get_char_non_blocking : get_char_blocking elsif !raw && !echo nonblock ? get_char_non_blocking : get_char_blocking else @input.getc end end # Get the char for last key pressed, or if no keypress return nil # # @api private def get_char_non_blocking input_ready? ? get_char_blocking : nil end def get_char_echo_non_blocking input_ready? ? get_char_echo_blocking : nil end def get_char_blocking WinAPI.getch.chr end def get_char_echo_blocking WinAPI.getche.chr end # Check if IO has user input # # @return [Boolean] # # @api private def input_ready? !WinAPI.kbhit.zero? end end # Console end # Reader end # TTY tty-reader-0.9.0/spec/000077500000000000000000000000001376377256200145545ustar00rootroot00000000000000tty-reader-0.9.0/spec/spec_helper.rb000066400000000000000000000021171376377256200173730ustar00rootroot00000000000000# frozen_string_literal: true if ENV["COVERAGE"] == "true" require "simplecov" require "coveralls" SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ SimpleCov::Formatter::HTMLFormatter, Coveralls::SimpleCov::Formatter ]) SimpleCov.start do command_name "spec" add_filter "spec" end end require "bundler/setup" require "tty-reader" require "stringio" class StringIO def wait_readable(*) true end end RSpec.configure do |config| # Enable flags like --only-failures and --next-failure config.example_status_persistence_file_path = ".rspec_status" config.mock_with :rspec do |mocks| mocks.verify_partial_doubles = true end # Disable RSpec exposing methods globally on `Module` and `main` config.disable_monkey_patching! # This setting enables warnings. It's recommended, but in some cases may # be too noisy due to issues in dependencies. config.warnings = true if config.files_to_run.one? config.default_formatter = "doc" end config.profile_examples = 2 config.order = :random Kernel.srand config.seed end tty-reader-0.9.0/spec/unit/000077500000000000000000000000001376377256200155335ustar00rootroot00000000000000tty-reader-0.9.0/spec/unit/history_disabled_spec.rb000066400000000000000000000021111376377256200224150ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader, "#with_history_disabled" do let(:input) { StringIO.new } let(:out) { StringIO.new } let(:env) { { "TTY_TEST" => true } } let(:reader) { described_class.new(input: input, output: out, env: env, track_history: false) } it "leaves the line alone on :up" do input << "abc\e[Adef\n" input.rewind chars = [] lines = [] reader.on(:keypress) { |event| chars << event.value; lines << event.line } answer = reader.read_line expect(chars).to eq(%W(a b c \e[A d e f \n)) expect(lines).to eq(%W(a ab abc abc abcd abcde abcdef abcdef\n)) expect(answer).to eq("abcdef\n") end it "leaves the line alone on :down" do input << "abc\e[Bdef\n" input.rewind chars = [] lines = [] reader.on(:keypress) { |event| chars << event.value; lines << event.line } answer = reader.read_line expect(chars).to eq(%W(a b c \e[B d e f \n)) expect(lines).to eq(%W(a ab abc abc abcd abcde abcdef abcdef\n)) expect(answer).to eq("abcdef\n") end end tty-reader-0.9.0/spec/unit/history_spec.rb000066400000000000000000000116531376377256200206010ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader::History do it "has no lines" do history = described_class.new expect(history.size).to eq(0) end it "doesn't navigate through empty buffer" do history = described_class.new expect(history.next?).to eq(false) expect(history.previous?).to eq(false) end it "allows to cycle through non-empty buffer" do history = described_class.new(3, cycle: true) history << "line" expect(history.next?).to eq(true) expect(history.previous?).to eq(true) end it "defaults maximum size" do history = described_class.new expect(history.max_size).to eq(512) end it "presents string representation" do history = described_class.new expect(history.to_s).to eq("[]") end it "adds items to history without overflowing" do history = described_class.new(3) history << "line #1" history << "line #2" history << "line #3" history << "line #4" expect(history.to_a).to eq(["line #2", "line #3", "line #4"]) expect(history.index).to eq(2) end it "iterates over lines" do history = described_class.new history << "line #1" history << "line #2" history << "line #3" expect { |block| history.each(&block) }.to yield_successive_args("line #1", "line #2", "line #3") end it "returns enumerator when iterating without a block" do history = described_class.new expect(history.each).to be_an(Enumerator) end it "excludes empty lines by default" do history = described_class.new history << "" history << " " expect(history.to_a).to eq([" "]) end it "excludes lines matching pattern" do exclude = ->(line) { /line #[23]/.match(line) } history = described_class.new(exclude: exclude) history << "line #1" history << "line #2" history << "line #3" expect(history.to_a).to eq(["line #1"]) expect(history.index).to eq(0) end it "allows duplicates" do history = described_class.new history << "line #1" history << "line #1" history << "line #1" expect(history.to_a).to eq(["line #1", "line #1", "line #1"]) end it "prevents duplicates" do history = described_class.new(duplicates: false) history << "line #1" history << "line #1" history << "line #1" expect(history.to_a).to eq(["line #1"]) end it "navigates through history buffer without cycling" do history = described_class.new(3) history << "line #1" history << "line #2" history << "line #3" expect(history.index).to eq(2) history.previous history.previous expect(history.index).to eq(0) history.previous expect(history.index).to eq(0) history.next history.next expect(history.index).to eq(2) history.next expect(history.next?).to eq(false) expect(history.index).to eq(2) end it "navigates through history buffer with cycling" do history = described_class.new(3, cycle: true) history << "line #1" history << "line #2" history << "line #3" expect(history.index).to eq(2) history.previous history.previous expect(history.index).to eq(0) history.previous expect(history.index).to eq(2) expect(history.next?).to eq(true) history.next history.next expect(history.index).to eq(1) history.next expect(history.index).to eq(2) end it "checks if navigation is possible" do history = described_class.new(3) expect(history.index).to eq(nil) expect(history.previous?).to eq(false) expect(history.next?).to eq(false) history << "line #1" history << "line #2" expect(history.index).to eq(1) expect(history.previous?).to eq(true) expect(history.next?).to eq(false) history.previous expect(history.index).to eq(0) expect(history.previous?).to eq(true) expect(history.next?).to eq(true) history.previous expect(history.index).to eq(0) expect(history.previous?).to eq(true) expect(history.next?).to eq(true) end it "gets line based on index" do history = described_class.new(3, cycle: true) history << "line #1" history << "line #2" history << "line #3" expect(history[-1]).to eq("line #3") expect(history[1]).to eq("line #2") expect { history[11] }.to raise_error(IndexError, "invalid index") end it "retrieves current line" do history = described_class.new(3, cycle: true) expect(history.get).to eq(nil) history << "line #1" history << "line #2" history << "line #3" expect(history.get).to eq("line #3") history.previous history.previous expect(history.get).to eq("line #1") history.next expect(history.get).to eq("line #2") end it "clears all lines" do history = described_class.new(3) history << "line #1" history << "line #2" history << "line #3" expect(history.size).to eq(3) history.clear expect(history.size).to eq(0) expect(history.index).to eq(0) end end tty-reader-0.9.0/spec/unit/key_event_spec.rb000066400000000000000000000054451376377256200210730ustar00rootroot00000000000000# frozen_string_literal: true require "shellwords" RSpec.describe TTY::Reader::KeyEvent, "#from" do let(:keys) { TTY::Reader::Keys.keys } it "parses backspace" do event = described_class.from(keys, "\x7f") expect(event.key.name).to eq(:backspace) expect(event.value).to eq("\x7f") end it "parses lowercase char" do event = described_class.from(keys, "a") expect(event.key.name).to eq(:alpha) expect(event.value).to eq("a") end it "parses uppercase char" do event = described_class.from(keys, "A") expect(event.key.name).to eq(:alpha) expect(event.value).to eq("A") end it "parses number char" do event = described_class.from(keys, "666") expect(event.key.name).to eq(:num) expect(event.value).to eq("666") end it "parses ctrl-a to ctrl-z inputs" do (1..26).zip("a".."z").each do |code, char| event = described_class.from(TTY::Reader::Keys.ctrl_keys, code.chr) expect(event.key.name).to eq(:"ctrl_#{char}") expect(event.value).to eq(code.chr) end end it "parses uknown key" do no_keys = {} event = described_class.from(no_keys, "*") expect(event.key.name).to eq(:ignore) expect(event.value).to eq("*") end it "exposes line value" do event = described_class.from(keys, "c", "ab") expect(event.line).to eq("ab") end # F1-F12 keys { f1: ["\eOP","\e[[A","\e[11~"], f2: ["\eOQ","\e[[B","\e[12~"], f3: ["\eOR","\e[[C","\e[13~"], f4: ["\eOS","\e[[D","\e[14~"], f5: [ "\e[[E","\e[15~"], f6: [ "\e[17~"], f7: [ "\e[18~"], f8: [ "\e[19~"], f9: [ "\e[20~"], f10: [ "\e[21~"], f11: [ "\e[23~"], f12: [ "\e[24~"] }.each do |name, codes| codes.each do |code| it "parses #{Shellwords.escape(code)} as #{name} key" do event = described_class.from(keys, code) expect(event.key.name).to eq(name) expect(event.key.meta).to eq(false) expect(event.key.ctrl).to eq(false) expect(event.key.shift).to eq(false) end end end # arrow keys & text editing { up: ["\e[A"], down: ["\e[B"], right: ["\e[C"], left: ["\e[D"], clear: ["\e[E"], home: ["\e[1~", "\e[7~", "\e[H"], end: ["\e[4~", "\eOF", "\e[F"], insert: ["\e[2~"], delete: ["\e[3~"], page_up: ["\e[5~"], page_down: ["\e[6~"] }.each do |name, codes| codes.each do |code| it "parses #{Shellwords.escape(code)} as #{name} key" do event = described_class.from(keys, code) expect(event.key.name).to eq(name) expect(event.key.meta).to eq(false) expect(event.key.ctrl).to eq(false) expect(event.key.shift).to eq(false) end end end end tty-reader-0.9.0/spec/unit/line_spec.rb000066400000000000000000000071301376377256200200220ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader::Line do it "provides access to the prompt" do line = described_class.new("aaa", prompt: ">> ") expect(line.prompt).to eq(">> ") expect(line.text).to eq("aaa") expect(line.size).to eq(6) expect(line.to_s).to eq(">> aaa") end it "inserts characters inside a line" do line = described_class.new("aaaaa") line[0] = "test" expect(line.text).to eq("testaaaaa") line[4..6] = "" expect(line.text).to eq("testaa") end it "moves cursor left and right" do line = described_class.new("aaaaa") 5.times { line.left } expect(line.cursor).to eq(0) expect(line.start?).to eq(true) line.left(5) expect(line.cursor).to eq(0) line.right(20) expect(line.cursor).to eq(5) expect(line.end?).to eq(true) end it "inserts char at start of the line" do line = described_class.new("aaaaa") expect(line.cursor).to eq(5) line[0] = "b" expect(line.cursor).to eq(1) expect(line.text).to eq("baaaaa") line.insert("b") expect(line.text).to eq("bbaaaaa") end it "inserts char at end of the line" do line = described_class.new("aaaaa") expect(line.cursor).to eq(5) line[4] = "b" expect(line.cursor).to eq(5) expect(line.text).to eq("aaaaba") end it "inserts char inside the line" do line = described_class.new("aaaaa") expect(line.cursor).to eq(5) line[2] = "b" expect(line.cursor).to eq(3) expect(line.text).to eq("aabaaa") end it "inserts char outside of the line size" do line = described_class.new("aaaaa") expect(line.cursor).to eq(5) line[10] = "b" expect(line.cursor).to eq(11) expect(line.text).to eq("aaaaa b") end it "inserts chars in empty string" do line = described_class.new("") expect(line.cursor).to eq(0) line.insert("a") expect(line.cursor).to eq(1) line.insert("b") expect(line.cursor).to eq(2) expect(line.to_s).to eq("ab") line.insert("cc") expect(line.cursor).to eq(4) expect(line.to_s).to eq("abcc") end it "inserts characters with #insert call" do line = described_class.new("aaaaa") expect(line.cursor).to eq(5) line.left(2) expect(line.cursor).to eq(3) line.insert(" test ") expect(line.text).to eq("aaa test aa") expect(line.cursor).to eq(9) line.right expect(line.cursor).to eq(10) end it "removes char before current cursor position" do line = described_class.new("abcdef") expect(line.cursor).to eq(6) line.remove(2) expect(line.text).to eq("abcd") expect(line.cursor).to eq(4) line.left line.left line.remove expect(line.text).to eq("acd") expect(line.cursor).to eq(1) line.insert("x") expect(line.text).to eq("axcd") end it "deletes char under current cursor position" do line = described_class.new("abcdef") line.left(3) line.delete expect(line.text).to eq("abcef") line.right line.delete expect(line.text).to eq("abce") line.left(4) line.delete expect(line.text).to eq("bce") end it "replaces current line with new preserving cursor" do line = described_class.new("x" * 6) expect(line.text).to eq("xxxxxx") expect(line.cursor).to eq(6) expect(line.mode).to eq(:edit) expect(line.editing?).to eq(true) line.replace("y" * 8) expect(line.text).to eq("y" * 8) expect(line.cursor).to eq(8) expect(line.replacing?).to eq(true) line.insert("z") expect(line.text).to eq("y" * 8 + "z") expect(line.cursor).to eq(9) expect(line.editing?).to eq(true) end end tty-reader-0.9.0/spec/unit/publish_keypress_event_spec.rb000066400000000000000000000062611376377256200236730ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader, "#publish_keypress_event" do let(:input) { StringIO.new } let(:out) { StringIO.new } let(:env) { { "TTY_TEST" => true } } let(:reader) { described_class.new(input: input, output: out, env: env) } it "publishes :keypress events" do input << "abc\n" input.rewind chars = [] lines = [] reader.on(:keypress) { |event| chars << event.value; lines << event.line } answer = reader.read_line expect(chars).to eq(%W(a b c \n)) expect(lines).to eq(%W(a ab abc abc\n)) expect(answer).to eq("abc\n") end it "publishes :keyescape events" do input << "a\e" input.rewind keys = [] reader.on(:keypress) { |event| keys << "keypress_#{event.value}"} reader.on(:keyescape) { |event| keys << "keyescape_#{event.value}" } answer = reader.read_line expect(keys).to eq(["keypress_a", "keyescape_\e", "keypress_\e"]) expect(answer).to eq("a\e") end it "publishes :keyup for read_keypress" do input << "\e[Aaa" input.rewind keys = [] reader.on(:keypress) { |event| keys << "keypress_#{event.value}" } reader.on(:keyup) { |event| keys << "keyup_#{event.value}" } reader.on(:keydown) { |event| keys << "keydown_#{event.value}" } answer = reader.read_keypress expect(keys).to eq(["keyup_\e[A", "keypress_\e[A"]) expect(answer).to eq("\e[A") end it "publishes :keydown event for read_keypress" do input << "\e[Baa" input.rewind keys = [] reader.on(:keypress) { |event| keys << "keypress_#{event.value}" } reader.on(:keyup) { |event| keys << "keyup_#{event.value}" } reader.on(:keydown) { |event| keys << "keydown_#{event.value}" } answer = reader.read_keypress expect(keys).to eq(["keydown_\e[B", "keypress_\e[B"]) expect(answer).to eq("\e[B") end it "publishes :keynum event" do input << "5aa" input.rewind keys = [] reader.on(:keypress) { |event| keys << "keypress_#{event.value}" } reader.on(:keyup) { |event| keys << "keyup_#{event.value}" } reader.on(:keynum) { |event| keys << "keynum_#{event.value}" } answer = reader.read_keypress expect(keys).to eq(["keynum_5", "keypress_5"]) expect(answer).to eq("5") end it "publishes :keyreturn event" do input << "\r" input.rewind keys = [] reader.on(:keypress) { |event| keys << "keypress" } reader.on(:keyup) { |event| keys << "keyup" } reader.on(:keyreturn) { |event| keys << "keyreturn" } answer = reader.read_keypress expect(keys).to eq(["keyreturn", "keypress"]) expect(answer).to eq("\r") end it "subscribes to multiple events" do input << "\n" input.rewind keys = [] reader.on(:keyenter) { |event| keys << "keyenter" } .on(:keypress) { |event| keys << "keypress" } answer = reader.read_keypress expect(keys).to eq(["keyenter", "keypress"]) expect(answer).to eq("\n") end it "subscribes to ctrl+X type of event event" do input << ?\C-z input.rewind keys = [] reader.on(:keyctrl_z) { |event| keys << "ctrl_z" } answer = reader.read_keypress expect(keys).to eq(["ctrl_z"]) expect(answer).to eq(?\C-z) end end tty-reader-0.9.0/spec/unit/read_keypress_spec.rb000066400000000000000000000044051376377256200217350ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader, "#read_keypress" do let(:input) { StringIO.new } let(:out) { StringIO.new } let(:env) { { "TTY_TEST" => true } } it "reads single key press" do reader = described_class.new(input: input, output: out, env: env) input << "\e[Aaaaaaa\n" input.rewind answer = reader.read_keypress expect(answer).to eq("\e[A") end it "reads multibyte key press" do reader = described_class.new(input: input, output: out, env: env) input << "ㄱ" input.rewind answer = reader.read_keypress expect(answer).to eq("ㄱ") end context "when Ctrl+C pressed" do it "defaults to raising InputInterrupt" do reader = described_class.new(input: input, output: out, env: env) input << "\x03" input.rewind expect { reader.read_keypress }.to raise_error(TTY::Reader::InputInterrupt) end it "sends interrupt signal when :signal option is chosen" do reader = described_class.new( input: input, output: out, interrupt: :signal, env: env) input << "\x03" input.rewind allow(Process).to receive(:pid).and_return(666) allow(Process).to receive(:kill) expect(Process).to receive(:kill).with("SIGINT", 666) reader.read_keypress end it "exits with 130 code when :exit option is chosen" do reader = described_class.new( input: input, output: out, interrupt: :exit, env: env) input << "\x03" input.rewind expect { reader.read_keypress }.to raise_error(SystemExit) end it "evaluates custom handler when proc object is provided" do handler = proc { raise ArgumentError } reader = described_class.new( input: input, output: out, interrupt: handler, env: env) input << "\x03" input.rewind expect { reader.read_keypress }.to raise_error(ArgumentError) end it "skips handler when handler is nil" do reader = described_class.new( input: input, output: out, interrupt: :noop, env: env) input << "\x03" input.rewind expect(reader.read_keypress).to eq("\x03") end end end tty-reader-0.9.0/spec/unit/read_line_spec.rb000066400000000000000000000065751376377256200210310ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader, "#read_line" do let(:input) { StringIO.new } let(:output) { StringIO.new } let(:env) { { "TTY_TEST" => true } } subject(:reader) { described_class.new(input: input, output: output, env: env) } it "masks characters" do input << "password\n" input.rewind answer = reader.read_line(echo: false) expect(answer).to eq("password\n") end it "echoes characters back" do input << "password\n" input.rewind answer = reader.read_line expect(answer).to eq("password\n") expect(output.string).to eq([ "\e[2K\e[1Gp", "\e[2K\e[1Gpa", "\e[2K\e[1Gpas", "\e[2K\e[1Gpass", "\e[2K\e[1Gpassw", "\e[2K\e[1Gpasswo", "\e[2K\e[1Gpasswor", "\e[2K\e[1Gpassword", "\e[2K\e[1Gpassword\n" ].join) end it "doesn't echo characters back" do input << "password\n" input.rewind answer = reader.read_line(echo: false) expect(answer).to eq("password\n") expect(output.string).to eq("\n") end it "displays a prompt before input" do input << "aa\n" input.rewind answer = reader.read_line(">> ") expect(answer).to eq("aa\n") expect(output.string).to eq([ ">> ", "\e[2K\e[1G>> a", "\e[2K\e[1G>> aa", "\e[2K\e[1G>> aa\n" ].join) end it "displays custom input with a prompt" do input << "aa\n" input.rewind answer = reader.read_line("> ", value: "xx") expect(answer).to eq("xxaa\n") expect(output.string).to eq([ "> xx", "\e[2K\e[1G> xxa", "\e[2K\e[1G> xxaa", "\e[2K\e[1G> xxaa\n" ].join) end it "deletes characters when backspace pressed" do input << "aa\ba\bcc\n" input.rewind answer = reader.read_line expect(answer).to eq("acc\n") end it "reads multibyte line" do input << "한글" input.rewind answer = reader.read_line expect(answer).to eq("한글") end it "supports multiline prompts" do allow(TTY::Screen).to receive(:width).and_return(50) prompt = "one\ntwo\nthree" input << "aa\n" input.rewind answer = reader.read_line(prompt) expect(answer).to eq("aa\n") expect(output.string).to eq([ prompt, "\e[2K\e[1G\e[1A" * 2, "\e[2K\e[1G", prompt + "a", "\e[2K\e[1G\e[1A" * 2, "\e[2K\e[1G", prompt + "aa", "\e[2K\e[1G\e[1A" * 2, "\e[2K\e[1G", prompt + "aa\n" ].join) end it "restores empty line when history has no more lines" do input << "ab\ncd\n\e[A\e[A\e[B\e[B\n" input.rewind chars = [] lines = [] answer = nil reader.on(:keypress) do |event| chars << event.value lines << event.line end 3.times do answer = reader.read_line end expect(chars).to eq(%W(a b \n c d \n \e[A \e[A \e[B \e[B \n)) expect(lines).to eq(%W(a ab ab\n c cd cd\n cd ab cd #{''} \n)) expect(answer).to eq("\n") end it "buffers non-empty input and restores it back when history has no more lines" do input << "ab\ncd\e[A\e[B\n" input.rewind chars = [] lines = [] reader.on(:keypress) do |event| chars << event.value lines << event.line end reader.read_line answer = reader.read_line expect(chars).to eq(%W(a b \n c d \e[A \e[B \n)) expect(lines).to eq(%W(a ab ab\n c cd ab cd cd\n)) expect(answer).to eq("cd\n") end end tty-reader-0.9.0/spec/unit/read_multiline_spec.rb000066400000000000000000000052431376377256200220730ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader, "#read_multiline" do let(:input) { StringIO.new } let(:output) { StringIO.new } let(:env) { { "TTY_TEST" => true } } subject(:reader) { described_class.new(input: input, output: output, env: env) } it "reads no lines" do input << "\C-d" input.rewind answer = reader.read_multiline expect(answer).to eq([]) end it "reads a line and terminates on Ctrl+d" do input << "Single line\C-d" input.rewind answer = reader.read_multiline expect(answer).to eq(["Single line"]) end it "reads a line and terminates on Ctrl+z" do input << "Single line\C-z" input.rewind answer = reader.read_multiline expect(answer).to eq(["Single line"]) end it "reads few lines" do input << "First line\nSecond line\nThird line\n\C-d" input.rewind answer = reader.read_multiline expect(answer).to eq(["First line\n", "Second line\n", "Third line\n"]) end it "skips empty lines" do input << "\n\nFirst line\n\n\n\n\nSecond line\C-d" input.rewind answer = reader.read_multiline expect(answer).to eq(["First line\n", "Second line"]) end it "reads and yiels every line" do input << "First line\nSecond line\nThird line\C-z" input.rewind lines = [] reader.read_multiline { |line| lines << line } expect(lines).to eq(["First line\n", "Second line\n", "Third line"]) end it "reads multibyte lines" do input << "국경의 긴 터널을 빠져나오자\n설국이었다.\C-d" input.rewind lines = reader.read_multiline expect(lines).to eq(["국경의 긴 터널을 빠져나오자\n", "설국이었다."]) end it "reads lines with a prompt" do input << "1\n2\n3\C-d" input.rewind lines = reader.read_multiline(">> ") expect(lines).to eq(["1\n", "2\n", "3"]) expect(output.string).to eq([ ">> ", "\e[2K\e[1G>> 1", "\e[2K\e[1G>> 1\n", ">> ", "\e[2K\e[1G>> 2", "\e[2K\e[1G>> 2\n", ">> ", "\e[2K\e[1G>> 3", ].join) end it "reads lines with echo off" do input << "1\n2\n3\n" input.rewind lines = reader.read_multiline(echo: false) expect(lines).to eq(["1\n", "2\n", "3\n"]) expect(output.string).to eq("\n\n\n") end it "sets initial input line" do input << "aa\nbb\n" input.rewind lines = reader.read_multiline("> ", value: "xx") expect(lines).to eq(["xxaa\n", "bb\n"]) expect(output.string).to eq([ "> xx", "\e[2K\e[1G> xxa", "\e[2K\e[1G> xxaa", "\e[2K\e[1G> xxaa\n", "> ", "\e[2K\e[1G> b", "\e[2K\e[1G> bb", "\e[2K\e[1G> bb\n", "> " ].join) end end tty-reader-0.9.0/spec/unit/subscribe_spec.rb000066400000000000000000000030341376377256200210530ustar00rootroot00000000000000# frozen_string_literal: true RSpec.describe TTY::Reader, "#subscribe" do let(:input) { StringIO.new } let(:output) { StringIO.new } let(:env) { { "TTY_TEST" => true } } it "subscribes to receive events" do stub_const("Context", Class.new do def initialize(events) @events = events end def keypress(event) @events << [:keypress, event.value] end end) reader = TTY::Reader.new(input: input, output: output, env: env) events = [] context = Context.new(events) reader.subscribe(context) input << "aa\n" input.rewind answer = reader.read_line expect(answer).to eq("aa\n") expect(events).to eq([ [:keypress, "a"], [:keypress, "a"], [:keypress, "\n"] ]) events.clear reader.unsubscribe(context) input.rewind answer = reader.read_line expect(events).to eq([]) end it "subscribes to listen to events only in a block" do stub_const("Context", Class.new do def initialize(events) @events = events end def keypress(event) @events << [:keypress, event.value] end end) reader = TTY::Reader.new(input: input, output: output, env: env) events = [] context = Context.new(events) input << "aa\nbb\n" input.rewind reader.subscribe(context) do reader.read_line end answer = reader.read_line expect(answer).to eq("bb\n") expect(events).to eq([ [:keypress, "a"], [:keypress, "a"], [:keypress, "\n"] ]) end end tty-reader-0.9.0/tasks/000077500000000000000000000000001376377256200147475ustar00rootroot00000000000000tty-reader-0.9.0/tasks/console.rake000066400000000000000000000003331376377256200172540ustar00rootroot00000000000000# encoding: utf-8 desc 'Load gem inside irb console' task :console do require 'irb' require 'irb/completion' require File.join(__FILE__, '../../lib/tty-reader') ARGV.clear IRB.start end task c: %w[ console ] tty-reader-0.9.0/tasks/coverage.rake000066400000000000000000000003221376377256200174030ustar00rootroot00000000000000# encoding: utf-8 desc 'Measure code coverage' task :coverage do begin original, ENV['COVERAGE'] = ENV['COVERAGE'], 'true' Rake::Task['spec'].invoke ensure ENV['COVERAGE'] = original end end tty-reader-0.9.0/tasks/spec.rake000066400000000000000000000012551376377256200165500ustar00rootroot00000000000000# encoding: utf-8 begin require 'rspec/core/rake_task' desc 'Run all specs' RSpec::Core::RakeTask.new(:spec) do |task| task.pattern = 'spec/{unit,integration}{,/*/**}/*_spec.rb' end namespace :spec do desc 'Run unit specs' RSpec::Core::RakeTask.new(:unit) do |task| task.pattern = 'spec/unit{,/*/**}/*_spec.rb' end desc 'Run integration specs' RSpec::Core::RakeTask.new(:integration) do |task| task.pattern = 'spec/integration{,/*/**}/*_spec.rb' end end rescue LoadError %w[spec spec:unit spec:integration].each do |name| task name do $stderr.puts "In order to run #{name}, do `gem install rspec`" end end end tty-reader-0.9.0/tty-reader.gemspec000066400000000000000000000032311376377256200172460ustar00rootroot00000000000000# frozen_string_literal: true require_relative "lib/tty/reader/version" Gem::Specification.new do |spec| spec.name = "tty-reader" spec.version = TTY::Reader::VERSION spec.authors = ["Piotr Murach"] spec.email = ["piotr@piotrmurach.com"] spec.summary = %q{A set of methods for processing keyboard input in character, line and multiline modes.} spec.description = %q{A set of methods for processing keyboard input in character, line and multiline modes. It maintains history of entered input with an ability to recall and re-edit those inputs. It lets you register to listen for keystroke events and trigger custom key events yourself.} spec.homepage = "https://ttytoolkit.org" spec.license = "MIT" if spec.respond_to?(:metadata=) spec.metadata = { "allowed_push_host" => "https://rubygems.org", "bug_tracker_uri" => "https://github.com/piotrmurach/tty-reader/issues", "changelog_uri" => "https://github.com/piotrmurach/tty-reader/blob/master/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/tty-reader", "homepage_uri" => spec.homepage, "source_code_uri" => "https://github.com/piotrmurach/tty-reader" } end spec.files = Dir["lib/**/*"] spec.extra_rdoc_files = ["README.md", "CHANGELOG.md", "LICENSE.txt"] spec.require_paths = ["lib"] spec.required_ruby_version = Gem::Requirement.new(">= 2.0.0") spec.add_dependency "tty-screen", "~> 0.8" spec.add_dependency "tty-cursor", "~> 0.7" spec.add_dependency "wisper", "~> 2.0" spec.add_development_dependency "rake" spec.add_development_dependency "rspec", ">= 3.0" end