From c62cf6de6e251aacb0faca3081dae1e5d0629d90 Mon Sep 17 00:00:00 2001 From: oliverheard Date: Wed, 16 Jul 2025 10:17:59 +0100 Subject: [PATCH] Sync with internal repo to release v4.0.0 --- CODE_OF_CONDUCT.md | 262 +- CONTRIBUTING.md | 114 +- LICENSE | 42 +- Makefile | 74 +- README.md | 1187 ++-- cmn/debug.h | 192 +- cmn/version.h | 98 +- cmn/vsyncalter.h | 109 +- docs/chrony.md | 119 + docs/images/directory_tree.png | Bin 0 -> 7645 bytes docs/images/graph.png | Bin 0 -> 67035 bytes docs/images/ptp4l.png | Bin 0 -> 96420 bytes docs/images/swgenlock.png | Bin 0 -> 190421 bytes docs/images/vsync_test.png | Bin 0 -> 59051 bytes docs/ptp.md | 120 + lib/Makefile | 133 +- lib/c10.cpp | 973 +-- lib/c10.h | 511 +- lib/c20.cpp | 340 ++ lib/c20.h | 102 + lib/combo.cpp | 571 +- lib/combo.h | 169 +- lib/common.h | 287 +- lib/cx0_helper.cpp | 528 ++ lib/cx0_helper.h | 525 ++ lib/debug.cpp | 321 +- lib/dkl.cpp | 608 +- lib/dkl.h | 146 +- lib/dp_m_n.cpp | 177 + lib/dp_m_n.h | 54 + lib/i915_pciids.h | 294 +- lib/mmio.cpp | 531 +- lib/mmio.h | 129 +- lib/phy.cpp | 303 + lib/phy.h | 49 + lib/platforms/adl_p.h | 80 +- lib/platforms/adl_s.h | 78 +- lib/platforms/mtl.h | 80 +- lib/platforms/ptl.h | 40 + lib/platforms/tgl.h | 86 +- lib/utils.cpp | 98 + lib/utils.h | 50 + lib/vsyncalter.cpp | 1520 +++-- release-notes/v2.0.0.md | 99 +- release-notes/v3.0.0.md | 118 +- release-notes/v4.0.0.md | 66 + ...k-remove-drm_timestamp_monotonic-par.patch | 266 +- resources/gPTP.cfg | 40 +- resources/shared_dpll-kernel-6.10+.patch | 88 + resources/shared_dpll-kernel-6.14.patch | 88 + resources/shared_dpll-kernel-6.15+.patch | 83 + resources/shared_dpll-kernel-6.5+.patch | 82 + resources/swgen_doxy | 5324 ++++++++--------- scripts/config.sh | 124 +- scripts/plot_sync_interval.py | 172 + scripts/run_ptp.sh | 280 +- scripts/run_vsync.sh | 215 +- scripts/stop_ptp.sh | 134 +- security.md | 14 +- synctest/Makefile | 124 +- synctest/synctest.cpp | 416 +- test/Makefile | 124 +- test/connection.cpp | 1080 ++-- test/connection.h | 195 +- test/message.h | 156 +- test/vsync_test.cpp | 1329 ++-- unittest/Makefile | 54 + unittest/test_genlock.c | 415 ++ unittest/unittest.md | 134 + vbltest/Makefile | 124 +- vbltest/vbltest.cpp | 354 +- 71 files changed, 13262 insertions(+), 9536 deletions(-) create mode 100644 docs/chrony.md create mode 100644 docs/images/directory_tree.png create mode 100644 docs/images/graph.png create mode 100644 docs/images/ptp4l.png create mode 100644 docs/images/swgenlock.png create mode 100644 docs/images/vsync_test.png create mode 100644 docs/ptp.md create mode 100644 lib/c20.cpp create mode 100644 lib/c20.h create mode 100644 lib/cx0_helper.cpp create mode 100644 lib/cx0_helper.h create mode 100644 lib/dp_m_n.cpp create mode 100644 lib/dp_m_n.h create mode 100644 lib/phy.cpp create mode 100644 lib/phy.h create mode 100644 lib/platforms/ptl.h create mode 100644 lib/utils.cpp create mode 100644 lib/utils.h create mode 100644 release-notes/v4.0.0.md create mode 100644 resources/shared_dpll-kernel-6.10+.patch create mode 100644 resources/shared_dpll-kernel-6.14.patch create mode 100644 resources/shared_dpll-kernel-6.15+.patch create mode 100644 resources/shared_dpll-kernel-6.5+.patch create mode 100644 scripts/plot_sync_interval.py create mode 100644 unittest/Makefile create mode 100644 unittest/test_genlock.c create mode 100644 unittest/unittest.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 58dba18..b60c133 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,131 +1,131 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders 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, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -CommunityCodeOfConduct AT intel DOT com. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders 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, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +CommunityCodeOfConduct AT intel DOT com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f682f4e..fe70f1e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,57 +1,57 @@ -# Contributing - -### License - - is licensed under the terms in [LICENSE]. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. - -### Sign your work - -Please use the sign-off line at the end of the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify -the below (from [developercertificate.org](http://developercertificate.org/)): - -``` -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -660 York Street, Suite 102, -San Francisco, CA 94110 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` - -Then you just add a line to every git commit message: - - Signed-off-by: Joe Smith - -Use your real name (sorry, no pseudonyms or anonymous contributions.) - -If you set your `user.name` and `user.email` git configs, you can sign your -commit automatically with `git commit -s`. +# Contributing + +### License + + is licensed under the terms in [LICENSE]. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. + +### Sign your work + +Please use the sign-off line at the end of the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify +the below (from [developercertificate.org](http://developercertificate.org/)): + +``` +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +Then you just add a line to every git commit message: + + Signed-off-by: Joe Smith + +Use your real name (sorry, no pseudonyms or anonymous contributions.) + +If you set your `user.name` and `user.email` git configs, you can sign your +commit automatically with `git commit -s`. diff --git a/LICENSE b/LICENSE index 166631f..288e41d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: MIT -MIT License - -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. +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: MIT +MIT License + +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. diff --git a/Makefile b/Makefile index c3c04e8..53e1b0c 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,37 @@ -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: MIT - -#DIRS = $(shell find . -maxdepth 1 -type d -not -path "./.git" \ -# -not -path "." -not -path "./release" -not -path "./cmn" | sort) -DIRS = lib test synctest vbltest -.PHONY: $(DIRS) - -MAKE += --no-print-directory - -all: - @for dir in $(DIRS); do \ - $(MAKE) -C $$dir; \ - done - -debug: - @for dir in $(DIRS); do \ - $(MAKE) -C $$dir debug; \ - done - -doxygen: - @mkdir -p output/doxygen - @( cat resources/swgen_doxy ; echo "PROJECT_NUMBER=$(VERSION)" ) | doxygen - -clean: - @for dir in $(DIRS); do \ - $(MAKE) -C $$dir clean; \ - done - -distclean: - @rm -rf output - -release: - @rm -rf output/release - @$(MAKE) clean - @$(MAKE) - @mkdir -p output/release - @cp lib/*.so resources/gPTP.cfg test/vsync_test synctest/synctest vbltest/vbltest output/release +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: MIT + +#DIRS = $(shell find . -maxdepth 1 -type d -not -path "./.git" \ +# -not -path "." -not -path "./release" -not -path "./cmn" | sort) +DIRS = lib test synctest vbltest +.PHONY: $(DIRS) + +MAKE += --no-print-directory + +all: + @for dir in $(DIRS); do \ + $(MAKE) -C $$dir; \ + done + +debug: + @for dir in $(DIRS); do \ + $(MAKE) -C $$dir debug; \ + done + +doxygen: + @mkdir -p output/doxygen + @( cat resources/swgen_doxy ; echo "PROJECT_NUMBER=$(VERSION)" ) | doxygen - +clean: + @for dir in $(DIRS); do \ + $(MAKE) -C $$dir clean; \ + done + +distclean: + @rm -rf output + +release: + @rm -rf output/release + @$(MAKE) clean + @$(MAKE) + @mkdir -p output/release + @cp lib/*.so resources/gPTP.cfg test/vsync_test synctest/synctest vbltest/vbltest output/release diff --git a/README.md b/README.md index f067a54..b2a4beb 100644 --- a/README.md +++ b/README.md @@ -1,564 +1,623 @@ -[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/intel-retail/automated-vending/badge)](https://api.securityscorecards.dev/projects/github.com/intel-retail/automated-vending) - - Copyright (C) 2023 Intel Corporation - SPDX-License-Identifier: MIT - -# Introduction SW Genlock - -SW Genlock is a software solution designed to synchronize the display outputs of multiple computer systems to single digit microsecond precision, enabling seamless visual outputs across an array of screens. This technology is particularly beneficial in settings that require highly synchronized video outputs, such as video walls, virtual reality setups, digital signage, and other multi-display configurations. - -## Key Features of SW Genlock - -- **High Precision Synchronization**: Ensures that vertical sync (vblank) intervals occur simultaneously across all connected systems, maintaining the integrity of visual displays. -- **Flexible Integration**: Offers both dynamic (.so) and static (.a) linking options to accommodate various application needs. -- **Comprehensive Tools**: Includes a suite of tools and libraries that facilitate the synchronization process, such as obtaining vblank timestamps and adjusting the phase-locked loop (PLL) frequencies. -- **Extensive Compatibility**: Supports systems equipped with Precision Time Protocol (PTP), allowing for precise clock synchronization over network infrastructures. -- **User-Centric Utilities**: Provides reference applications that demonstrate effective usage of the library, assisting users in integrating Genlock capabilities into their own projects. - -The SW Genlock system operates by aligning the internal clocks of all systems involved, ensuring that every display refresh is triggered simultaneously. This alignment is achieved through the utilization of industry-standard protocols and our advanced proprietary algorithms, which manage the synchronization over ethernet or direct network connections. - -## Known Issues - -Users of this SW Genlock libraries may need to adjust the value for SHIFT. In testing, on various displays a valaue -that is too large can cause flickering on screen when synchronized. To resolve this, adjust the value of SHIFT. The adjustment can be made by: - -1) Editing the default value in [lib/common.h](./lib/common.h) -2) Providing a new value for SHIFT when running the sample application: - -```bash -synctest -s -``` - -# Installation - -Installing SW Genlock involves a few straightforward steps. This section guides through the process of setting up SW Genlock on target systems, ensuring that user have everything needed to start synchronizing displays. - -## System Requirements - -Before the user begin the installation, ensure the systems meet the following criteria: - -The build system assumes the following, prior to executing the build steps: - -1) The system has an [Ubuntu OS](https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview) -1) Libraries installed: `sudo apt install -y git build-essential make` -1) [Disable secure boot](https://wiki.ubuntu.com/UEFI/SecureBoot/DKMS) -1) MUST apply the [PLL kernel patch](./resources/0001-dpll-Provide-a-command-line-param-to-config-if-PLLs-.patch). - Compile the kernel and update either the entire kernel or just the i915.ko module, depending on the Linux configuration. Note: In some setups, the i915.ko module is integrated into the - initrd.img, and updating it in /lib/module/... might not reflect the changes. - - Following the application of the patch, edit the grub settings: - ```console - sudo vi /etc/grub/default - # add i915.share_dplls=0 to the GRUB_CMDLINE_LINUX options: - # GRUB_CMDLINE_LINUX="i915.share_dplls=0" - # Save and exit, then update grub - update-grub - ``` - -1) Apply **[the monotonic timstamp patch](./resources/0001-Revert-drm-vblank-remove-drm_timestamp_monotonic-par.patch)** - to Linux kernel i915 driver which allows it to provide vsync timestamps in real time - instead of the default monotonic time.
- Note that the monotonic timestamp patch is generated based on Linux v6.4 and has been tested on Linux v6.4 and v6.5.
- Please follow the steps to disable monotonic timestamp after installing the local built Linux image on a target. Compile the kernel and update either the entire kernel or just the drm.ko module based on the installed Linux configuration.
- 1. Add ```drm.timestamp_monotonic=0``` option to **GRUB_CMDLINE_LINUX** in /etc/default/grub - 2. Update **GRUB_DEFAULT** in /etc/default/grub to address the local built Linux image - 3. Run ```update-grub``` to apply the change - 4. Reboot a target -1) Turn off NTP time synchronization service by using this command: - ```timedatectl set-ntp no``` -1) All the involved systems must support PTP time synchronization via ethernet (e.g ptp4l, phc2sys) - To verify if an ethernet interface supports PTP, the `ethtool` linux tool can be used. Run the following command, replacing `eth0` with the relevant interface name: - - ```console - ethtool -T eth0 - ``` - - If the interface supports PTP, the output will display specific PTP hardware clock information. - To ensure proper synchronization, the Ethernet interfaces on the involved systems should be directly connected either via a crossover cable or through a PTP-supported router or switch. If the systems only have a single network interface, it may be necessary to add a separate network adapter, such as a USB-to-Ethernet or USB-to-WiFi dongle, to maintain SSH access and connectivity to external networks. -1) Displays must be at same refresh rate (e.g 60Hz) - -## Build steps - -1) Git clone this repository -1) `sudo apt install libdrm-dev libpciaccess-dev` - 1) If the directory /usr/include/drm does not exist, it may be necessary to run the command`sudo apt install -y linux-libc-dev` -2) Type `make` from the main directory. It compiles everything and creates library and executable binaries in respective folders along with code which can then be copied to the target systems. - -# Software Components - -## Vsync Library - -The Vsync library is distributed in both dynamic (.so) and static (.a) binary formats, allowing users to choose between dynamic and static linking depending on their application requirements. This library includes essential functions such as retrieving vblank timestamps and adjusting the vblank timestamp drift by specified microseconds. Additionally, all operations related to Phase-Locked Loop (PLL) programming are encapsulated within the library, providing a comprehensive suite of tools for managing display synchronization. - -## Reference Applications - -Accompanying the library, three reference applications are provided to demonstrate how to utilize the library effectively. These include: - -- A `vsync test` app that runs in either primary mode or secondary mode. primary mode is run on a single PC whereas all other PCs are run as secondary mode with parameters pointing to primary mode system ethernet address. The communication is done either in ethernet mode or IP address mode. - -```console -Usage: ./vsync_test [-m mode] [-i interface] [-c mac_address] [-d delta] [-p pipe] [-s shift] [-v loglevel] [-h] -Options: - -m mode Mode of operation: pri, sec (default: pri) - -i interface Network interface to listen on (primary) or connect to (secondary) (default: 127.0.0.1) - -c mac_address MAC address of the network interface to connect to. Applicable to ethernet interface mode only. - -d delta Drift time in microseconds to allow before pll reprogramming (default: 100 us) - -p pipe Pipe to get stamps for. 4 (all) or 0,1,2 ... (default: 0) - -s shift PLL frequency change fraction (default: 0.1) - -v loglevel Log level: error, warning, info, debug or trace (default: info) - -h Display this help message -``` - -* A `vbltest` app to print average vblank period between sync. This is useful in verification and validation. - -```console -[INFO] Vbltest Version: 2.0.0 - Usage: ./vbltest [-p pipe] [-c vsync_count] [-v loglevel] [-h] - Options: - -p pipe Pipe to get stamps for. 0,1,2 ... (default: 0) - -c vsync_count Number of vsyncs to get timestamp for (default: 300) - -v loglevel Log level: error, warning, info, debug or trace (default: info) - -h Display this help message -``` - -* A `synctest` app to drift vblank clock on a single display by certain period such as 1000 microseconds (or 1.0 ms). - -```console -[INFO] Synctest Version: 2.0.0 -Usage: ./synctest [-p pipe] [-d delta] [-s shift] [-v loglevel] [-h] -Options: --p pipe Pipe to get stamps for. 0,1,2 ... (default: 0) --d delta Drift time in us to achieve (default: 1000 us) e.g 1000 us = 1.0 ms --s shift PLL frequency change fraction (default: 0.1) --v loglevel Log level: error, warning, info, debug or trace (default: info) --h Display this help message -``` - -**synctest sample output:** - -```console -./synctest -[INFO] Synctest Version: 2.0.0 -[INFO] DRM Info: -[INFO] CRTCs found: 4 -[INFO] Pipe: 0, CRTC ID: 80, Mode Valid: Yes, Mode Name: , Position: ( 0, 0), Resolution: 1920x1080, Refresh Rate: 60.00 Hz -[INFO] Pipe: 1, CRTC ID: 131, Mode Valid: No, Mode Name: , Position: ( 0, 0), Resolution: 0x0 , Refresh Rate: 0.00 Hz -[INFO] Pipe: 2, CRTC ID: 182, Mode Valid: No, Mode Name: , Position: ( 0, 0), Resolution: 0x0 , Refresh Rate: 0.00 Hz -[INFO] Pipe: 3, CRTC ID: 233, Mode Valid: No, Mode Name: , Position: ( 0, 0), Resolution: 0x0 , Refresh Rate: 0.00 Hz -[INFO] Connectors found: 6 -[INFO] Connector: 0 (ID: 236 ), Type: 11 (HDMI-A ), Type ID: 1 , Connection: Disconnected -[INFO] Connector: 1 (ID: 246 ), Type: 11 (HDMI-A ), Type ID: 2 , Connection: Connected -[INFO] Encoder ID: 245, CRTC ID: 80 -[INFO] Connector: 2 (ID: 250 ), Type: 10 (DisplayPort ), Type ID: 1 , Connection: Disconnected -[INFO] Connector: 3 (ID: 259 ), Type: 11 (HDMI-A ), Type ID: 3 , Connection: Disconnected -[INFO] Connector: 4 (ID: 263 ), Type: 10 (DisplayPort ), Type ID: 2 , Connection: Disconnected -[INFO] Connector: 5 (ID: 272 ), Type: 10 (DisplayPort ), Type ID: 3 , Connection: Disconnected -[INFO] VBlank interval before starting synchronization: 16.667000 ms -[INFO] VBlank interval during synchronization -> -[INFO] VBlank interval on pipe 0 is 16.6650 ms -[INFO] VBlank interval on pipe 0 is 16.6650 ms -[INFO] VBlank interval on pipe 0 is 16.6650 ms -[INFO] VBlank interval on pipe 0 is 16.6650 ms -[INFO] VBlank interval on pipe 0 is 16.6640 ms -[INFO] VBlank interval on pipe 0 is 16.6650 ms -[INFO] VBlank interval on pipe 0 is 16.6650 ms -[INFO] VBlank interval on pipe 0 is 16.6660 ms -[INFO] VBlank interval after synchronization ends: 16.667000 ms -``` - -# Generating Doxygen documents - -Please install doxygen and graphviz packages before generating Doxygen documents: - ```sudo apt install doxygen graphviz``` - -1. Type ```make doxygen VERSION="1.2.3"``` from the main directory. It will generate SW Genlock doxygen documents - to output/doxygen folder. Change the version to be that of the release number for the project. -2. Open output/doxygen/html/index.html with a web-browser - -# Running on single system - -The reference applications vbltest and synctest are designed to operate on a single system. The vbltest app displays the average vblank period for a specific pipe, while synctest allows user to introduce a specific drift in the vblank timing for a pipe. Synctest serves as a practical tool to verify the effectiveness of the synchronization methodology. - -1) On the system, go to the directory where these files exist and set environment variable: -2) For dynamic linking with the .so library, it's necessary to set the LD_LIBRARY_PATH environment variable so that applications can locate the vsync dynamic library. This step is not required when using static linking. - -```console -export LD_LIBRARY_PATH=`pwd`/lib -`````` - -3) On the primary system, run accompanied reference apps as follows: -4) e.g synctest - ```console - ./synctest - ``` - -Building of this program has been successfully tested on both Ubuntu 2x and Fedora 30.
- -# Synchronization between two systems - -Synchronizing displays across two systems involves a two-step process. Firstly, the Real Time Clocks of both systems need to be kept in synchronized state using the ptp4l Linux tool. Subsequently, the vsync test app should be run in primary mode on one system and in secondary mode on the other, ensuring that the vblank of the secondary system remains synchronized with that of the primary system. - -## Synchronizing Clocks between two systems - -The SW Genlock feature requires that all participating systems' clocks be synchronized to the nanosecond level. Kernel patches included with the software return vblank timestamps based on the system clock rather than the kernel's monotonic clock, which tracks time from when the kernel is loaded. Accurate synchronization is crucial because SW Genlock shares vblank timestamps from the primary system with secondary systems. This synchronization is achieved using the Linux ptp4l tool. There should be a network cable directly connecting the ethernet ports of the two -systems. - -### Clock Configuration in PTP-Supported Systems - -Systems supporting PTP typically have two clocks: the system's real-time clock and another clock on the Ethernet card. The synchronization process involves: - -1. **Primary System Real-Time Clock Synchronization**: - - Initially synchronize the primary system's real-time clock with an NTP server. - - Then sync the Ethernet PTP clock with the primary system's real-time clock. - -2. **Secondary Systems Synchronization**: - - Sync the secondary systems' Ethernet PTP clocks with the primary's Ethernet PTP clock. - - Sync their system real-time clocks with their Ethernet PTP clocks, which are already synchronized with the primary system. - -This setup ensures all secondary system's real-time clocks are synchronized with the primary system's real-time clock. Synchronization within a system (system real-time clock to Ethernet PTP clock) is managed using the `phc2sys` tool, while inter-system synchronization (across Ethernet interfaces) utilizes the `ptp4l` tool. - -
PTP4L Setup
PTP4L Setup.
- -It's also important to turn off NTP time synchronization service by using this command: - ```$ timedatectl set-ntp no``` - -### Command Sets for PTP time Synchronization - -Assuming the primary Ethernet interface is named `enp87s0` and the secondary interface is named `enp89s0`, the following commands are to be executed under root or with sudo: - -**Primary System Commands:** - -- **ptp4l:** - -```shell -ptp4l -i enp87s0 -m -f ./resources/gPTP.cfg -``` - -- **phc2sys:** - -```shell -phc2sys -c enp87s0 -s CLOCK_REALTIME -w -O 0 -m -f ./resources/gPTP.cfg -``` - -**Secondary System Commands:** - -- **ptp4l:** - -```shell -ptp4l -i enp89s0 -s -m -f ./resources/gPTP.cfg -``` - -- **phc2sys:** - -```shell -phc2sys -s enp89s0 -c CLOCK_REALTIME -O 0 -m -f ./resources/gPTP.cfg -``` - -The output of ptp4l on the primary system after running the above command should look - like this:
- -```console -ptp4l[13416.983]: selected /dev/ptp1 as PTP clock -ptp4l[13417.002]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE -ptp4l[13417.003]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE -ptp4l[13420.445]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES -ptp4l[13420.445]: selected local clock 844709.fffe.04f07f as best master -ptp4l[13420.445]: assuming the grand master role -``` - -The output of ptp4l on the secondary system after running the above command should -look like this:
- -```console -ptp4l[14816.313]: selected /dev/ptp1 as PTP clock -ptp4l[14816.328]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE -ptp4l[14816.328]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE -ptp4l[14820.220]: port 1: new foreign master 844709.fffe.04f07f-1 -ptp4l[14820.250]: selected local clock 844709.fffe.04eb0e as best master -ptp4l[14822.220]: selected best master clock 844709.fffe.04f07f -ptp4l[14822.220]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE -ptp4l[14822.650]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED -ptp4l[14823.275]: rms 158899 max 317730 freq -11742 +/- 3075 delay 14 +/- 0 -ptp4l[14824.276]: rms 820 max 1257 freq -9067 +/- 1113 delay 14 +/- 0 -ptp4l[14825.277]: rms 1366 max 1436 freq -6582 +/- 359 delay 13 +/- 0 -ptp4l[14826.278]: rms 866 max 1148 freq -6099 +/- 34 delay 13 +/- 0 -ptp4l[14827.279]: rms 280 max 465 freq -6364 +/- 102 delay 12 +/- 0 -ptp4l[14828.280]: rms 52 max 80 freq -6666 +/- 65 delay 12 +/- 0 -ptp4l[14829.280]: rms 82 max 88 freq -6805 +/- 21 delay 12 +/- 0 -ptp4l[14830.281]: rms 50 max 69 freq -6829 +/- 3 delay 12 +/- 0 -ptp4l[14831.282]: rms 15 max 28 freq -6811 +/- 7 delay 12 +/- 0 -ptp4l[14832.283]: rms 4 max 8 freq -6795 +/- 5 delay 12 +/- 0 -ptp4l[14833.284]: rms 7 max 10 freq -6783 +/- 3 delay 12 +/- 0 -ptp4l[14834.285]: rms 2 max 5 freq -6788 +/- 3 delay 13 +/- 0 -ptp4l[14835.286]: rms 3 max 5 freq -6793 +/- 3 delay 13 +/- 0 -``` - -Please make it sure that the secondary sytem refers to the primary's precision time - by checking if there is the **"new foreign master"** message in a log
- Note that the rms value should be decreasing with each line and should go - down to single digits. - -For user convenience, an automation Bash script is available in the scripts folder to facilitate ptp4l synchronization on both primary and secondary systems. Users simply need to update the `config.sh` file with relevant details such as the secondary system's address, username, and Ethernet address, among others. After these updates, run the scripts/run_ptp.sh script from the primary system. This script will automatically execute the ptp4l and phc2sys tools on both the primary and secondary systems in their respective modes. Note that the script requires the secondary system to enable passwordless SSH to execute ptp4l commands through the SSH interface. - -Since the ptp4l and phc2sys tools require root privileges or sudo access, users need to provide their sudo password in the config.sh file. As an alternative, setting up passwordless sudo can streamline this process. Here's how to enable passwordless sudo: - -Open a terminal and type `sudo visudo` to edit the sudoers file. -Add the following line to the file at the end, replacing username with actual username: - -```bash -username ALL=(ALL) NOPASSWD: ALL -``` - -Save and close the file to apply the changes. -This adjustment allows the automation scripts to run without requiring a sudo password each time, simplifying the setup for ptp4l and phc2sys synchronizations. - -## Synchronizing Display VBlanks - -Once the system clocks are synchronized, user can proceed to run the vsync test tool on both the primary and secondary systems. -Installing and running the programs:
- -1. Copy the release folder contents to both primary and secondary systems.
-2. On both systems, go to the directory where these files exist and set environment variable: -export LD_LIBRARY_PATH=.
-3. On the primary system, run it as follows: - ```console - ./vsync_test -m pri -i [PTP_ETH_Interface] - ``` - -5. On the secondary system, run it as follows: - ```console - ./vsync_test -m sec -i PTP_ETH_Interface -c [Primary_ETH_MAC_Addr] -d [sync after # us of drift] - ``` - -This program runs in server mode on the primary system and in client mode on the -secondary system. - -
VBlank synchronization setup
VBlank synchronization setup.
- -If using PTP protocol to communicate between primary and secondary, there are some extra -parameters required. The primary system must identify the PTP Interface (ex: enp176s0). The -secondary system also requires its PTP interface as well as this port's ethernet MAC address. -An example of PTP communication between primary and secondary looks like this: -On the primary system, run it as follows: - ```console - ./vsync_test -m pri -i enp176s0 - ``` -On the secondary system, run it as follows: - ```console - ./vsync_test -m sec -i enp176s0 -c 84:47:09:04:eb:0e - ``` - -In the above examples, we were just sync'ing the secondary system once with the primary. -However, due to reference clock differences, we see that there is a drift pretty much as -soon as we have sync'd them. We also have another capability which allows us to resync -as soon as it goes above a threshold. For example: -On the primary system, run it as follows: - ```./vsync_test -m pri -i enp176s0```
-On the secondary system, run it as follows: - ```./vsync_test -m sec -i enp176s0 -c 84:47:09:04:eb:0e 100``` - -In the above example, secondary system would sync with the primary once but after that -it would constantly check to see if the drift is going above 100 us. As soon as it does, -the secondary system would automatically resync with the primary. It is recommended to -select a large number like 60 or 100 since if we use a smaller number, then we will be -resyncing all the time. On the other hand, if we chose a really big number like 1000 us, -then we are allowing the systems to get out of sync from each other for 1 ms. On a -Tiger Lake system, 100 us difference is usually happening in around 60-70 seconds or -about a minute. So this program would automatically resync with the primary every minute -or so. - -Similar to ptp4l, an automation script is provided to setup vsync primary and secondary on both systems. see ./scripts/run_vsync.sh. Make sure to update config.sh accordingly unless if it's already updated for run_ptp.sh. - -Similar to ptp4l, For user convenience, an automation Bash script is available in the scripts folder to facilitate vsync synchronization on both primary and secondary systems. Users simply need to update the `config.sh` file with relevant details such as the secondary system's address, username, and Ethernet address, among others. After these updates, run the scripts/run_vsync.sh script from the primary system. This script will automatically copy vblank_sync to secondary under ~/.vblanksync directory and execute the vblank_sync tool on both the primary and secondary systems in their respective modes. Note that the script requires the secondary system to enable passwordless SSH to execute ptp4l commands through the SSH interface. - -```console -./scripts/run_vsync.sh -``` - -The console will display logs from both systems, but each process, including ptp4l and phc2sys, will also generate its own separate log file. These files can be found in the ./logs directory at the root level. - -## Running vsync_test as a Regular User without sudo - -While the ptp synchronization section provides methods for configuring passwordless sudo, it may be preferable to operate without using sudo or root privileges. The `vsync_test` application, which requires access to protected system resources for memory-mapped I/O (MMIO) operations at `/sys/bus/pci/devices/0000:00:02.0/resource0`, can be configured to run under regular user permissions. This can be achieved by modifying system permissions either through direct file permission changes or by adjusting user group memberships. Note that the resource path might change in future versions of the kernel. The resource path can be verified by running the application with the `strace` tool in Linux as a regular user and checking for permission denied errors or by examining `/proc/processid/maps` for resource mappings. - -### Option 1: Modifying File Permissions - -Altering the file permissions to allow all users to read and write to the device resource removes the requirement for root access. This method should be used with caution as it can lower the security level of the system, especially in environments with multiple users or in production settings. - -To change the permissions, the following command can be executed: - -```bash -sudo chmod o+rw /sys/bus/pci/devices/0000:00:02.0/resource0 -``` - -This command adjusts the permissions to permit all users (o) read and write (rw) access to the specified resource. - -### Option 2: Configuring User Group Permissions and Creating a Persistent udev Rule - -A more secure method is to assign the resource to a specific user group, such as the `video` group, and add the user to that group. This method confines permissions to a controlled group of users. To ensure the changes persist after a reboot, a `udev` rule can be created. - -#### Step 1: Add the Resource to the Video Group - -Change the group ownership of the resource file to the `video` group using the following command: - -```bash -sudo chgrp video /sys/bus/pci/devices/0000:00:02.0/resource0 -``` - -#### Step 2: Modify Group Permissions - -Set the group permissions to allow read and write access with: - -```bash -sudo chmod g+rw /sys/bus/pci/devices/0000:00:02.0/resource0 -``` - -#### Step 3: Add the User to the Video Group - -Add the user to the video group using this command (replace username with the actual user name): - -```bash -sudo usermod -a -G video username -``` - -Log out and log back in, or start a new session, for the group changes to take effect. - -#### Step 4: Create a udev Rule for Persistent Permissions - -To make the permissions persist after reboot, create a `udev` rule by adding a new rule file in `/etc/udev/rules.d/`: - -```bash -echo 'ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:02.0", RUN+="/bin/chgrp video %S%p/resource0", RUN+="/bin/chmod 0660 %S%p/resource0"' | sudo tee /etc/udev/rules.d/99-vsync-access.rules -``` - -This rule ensures that the permissions are correctly set when the system boots. - -#### Step 5: Reload udev Rules - -After creating the rule, reload the udev rules to apply them immediately without rebooting: - -```bash -sudo udevadm control --reload-rules && sudo udevadm trigger -s pci --action=add -``` - -#### Verifying the Changes - -After applying one of the above methods, confirm that the user has the necessary permissions by running the vsync_test application without elevated privileges. If the setup is correct, the application should run without requiring sudo or root access. - -## Running ptp4l as a Regular User without sudo - -Similarly, the ptp4l command can be executed by a regular user. This can be done by either altering the permissions or modifying the group for `/dev/ptp0`, or by creating a udev rule to ensure persistent permissions. - -```bash -echo 'SUBSYSTEM=="ptp", KERNEL=="ptp0", GROUP="video", MODE="0660"' | sudo tee /etc/udev/rules.d/99-ptp-access.rules -``` - -Reload udev Rules - -```bash -sudo udevadm control --reload-rules && sudo udevadm trigger -``` - -However, `phc2sys` will still need to be run with root or sudo privileges as it involves modifying system time. Running it under a normal user account could be possible if permissions to update the system clock are granted to the application. - -# Debug Tools - -When performing debugging, it is helpful to have the following libraries installed: - -```bash -apt install -y intel-gpu-tools edid-decode -``` - -## Debug Tool Usage - -When encountering unexpected behavior that requires additional debugging, the installed tools can assist in narrowing down the potential problem. - -**[intel-gpu-tools](https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/)** -Provides tools to read and write to registers, it must be run as the root user. Example: - -```console -intel_reg dump --all > /tmp/reg_dump.txt - -# output excerpt - GEN6_RP_CONTROL (0x0000a024): 0x00000400 -Gen6 disabled - GEN6_RPNSWREQ (0x0000a008): 0x150a8000 - GEN6_RP_DOWN_TIMEOUT (0x0000a010): 0x00000000 - GEN6_RP_INTERRUPT_LIMITS (0x0000a014): 0x00000000 - GEN6_RP_UP_THRESHOLD (0x0000a02c): 0x00000000 - GEN6_RP_UP_EI (0x0000a068): 0x00000000 - GEN6_RP_DOWN_EI (0x0000a06c): 0x00000000 - GEN6_RP_IDLE_HYSTERSIS (0x0000a070): 0x00000000 - GEN6_RC_STATE (0x0000a094): 0x00040000 - GEN6_RC_CONTROL (0x0000a090): 0x00040000 - GEN6_RC1_WAKE_RATE_LIMIT (0x0000a098): 0x00000000 - GEN6_RC6_WAKE_RATE_LIMIT (0x0000a09c): 0x00000000 - GEN6_RC_EVALUATION_INTERVAL (0x0000a0a8): 0x00000000 - GEN6_RC_IDLE_HYSTERSIS (0x0000a0ac): 0x00000019 - GEN6_RC_SLEEP (0x0000a0b0): 0x00000000 - GEN6_RC1e_THRESHOLD (0x0000a0b4): 0x00000000 - GEN6_RC6_THRESHOLD (0x0000a0b8): 0x00000000 -... - -intel_reg read 0x00062400 - PIPE_DDI_FUNC_CTL_C (0x00062400): 0x00000000 (disabled, no port, HDMI, 8 bpc, -VSync, -HSync, EDP A ON, x1) -``` - -**[edid-decode](https://manpages.debian.org/unstable/edid-decode/edid-decode.1.en.html)** -is a tool used to parse the Extended Display Identification Data (EDID) from monitors and display devices. EDID contains metadata about the display's capabilities, such as supported resolutions, manufacturer, serial number, and other attributes. - -To operate edid-decode, it is typically necessary to supply a binary EDID file or data. Here's an example of how to use it: - -```console -cat /sys/class/drm/card0-HDMI-A-1/edid > edid.bin - -# run edid-decode to parse and display the information -edid-decode edid.bin - -# sample output -Extracted contents: -header: 00 ff ff ff ff ff ff 00 -serial number: 10 ac 64 a4 4c 30 30 32 -version: 01 03 -basic params: 80 34 20 78 2e -chroma info: c5 c4 a3 57 4a 9c 25 12 50 54 -established: bf ef 80 -standard: 71 4f 81 00 81 40 81 80 95 00 a9 40 b3 00 01 01 -descriptor 1: 4d d0 00 a0 f8 70 3e 80 30 20 35 00 55 50 21 00 00 1a -descriptor 2: 02 3a 80 18 71 38 2d 40 58 2c 45 00 55 50 21 00 00 1e -descriptor 3: 00 00 00 ff 00 43 32 30 30 38 30 4e 50 30 0a 20 20 20 -descriptor 4: 00 00 00 fd 00 32 4b 1e 53 11 00 0a 20 20 20 20 20 20 -extensions: 01 -checksum: 1c - -Manufacturer: DEL Model a464 Serial Number 808909324 -Made week 12 of 2008 -EDID version: 1.3 -Digital display -Maximum image size: 52 cm x 32 cm -Gamma: 2.20 -DPMS levels: Standby Suspend Off -RGB color display -First detailed timing is preferred timing -Display x,y Chromaticity: - Red: 0.6396, 0.3300 - Green: 0.2998, 0.5996 - Blue: 0.1503, 0.0595 - White: 0.3134, 0.3291 -Established timings supported: - 720x400@70Hz - 640x480@60Hz - 640x480@67Hz - 640x480@72Hz - 640x480@75Hz - 800x600@56Hz - 800x600@60Hz - ... -Standard timings supported: - 1152x864@75Hz - 1280x800@60Hz - 1280x960@60Hz - ... -Detailed mode: Clock 148.500 MHz, 509 mm x 286 mm - 1920 2008 2052 2200 hborder 0 - 1080 1084 1089 -``` + Copyright (C) 2025 Intel Corporation + SPDX-License-Identifier: MIT + +# Introduction to SW Genlock +SW Genlock is a software-based solution designed to **synchronize the display refresh (vblank) signals** across multiple computer systems with high-precision microsecond-level accuracy. It ensures that the vertical blanking intervals (vblanks) of all connected displays occur in tight alignment, enabling seamless, tear-free visual output across multiple screens. Such synchronization is critical in environments like video walls, virtual reality setups, digital signage, and other multi-display configurations where visual continuity is essential. + +In use cases such as digital signage, there are typically **two levels of synchronization** required: + +* **Low-level synchronization** of the display hardware to align the vblanks across systems, and + +* **High-level synchronization** by the application to ensure that decoded frames are delivered in sync with those vblanks. + +SW Genlock addresses the **first, low-level synchronization** layer, making sure that the vblank signals are precisely aligned across all participating systems. This provides a reliable foundation for applications to build on and manage frame-level synchronization effectively. + +In addition to precise timing, SW Genlock features an `adaptive clock alignment mechanism` that allows secondary systems to gradually adjust their internal clocks to match the primary system. Through permanent, micro-scale adjustments controlled by a tunable learning rate, the system "learns" and adapts over time, reducing synchronization overhead and increasing long-term stability. This makes SW Genlock ideal for continuous, low-maintenance operation across varied hardware environments. + +## Key Features of SW Genlock + +- **High Precision Synchronization**: Ensures that vertical sync (vblank) intervals occur simultaneously across all connected systems, maintaining the integrity of visual displays. +- **Flexible Integration**: Offers both dynamic (.so) and static (.a) linking options to accommodate various application needs. +- **Comprehensive Tools**: Includes a suite of tools and libraries that facilitate the synchronization process, such as obtaining vblank timestamps and adjusting the phase-locked loop (PLL) frequencies. +- **Extensive Compatibility**: SW Genlock supports a wide range of system configurations, including mixed platform generations (e.g., Tiger Lake, Panther Lake) and various Linux distributions such as Ubuntu 22.04 and 24.04. It offers flexibility in real-time clock synchronization setups by supporting both Precision Time Protocol (PTP) for high-precision environments and Chrony for simpler or less time-sensitive deployments. This makes it suitable for diverse hardware and OS combinations across development and production environments. +- **Adaptive Clock Alignment:** Implements optional, micro-scale permanent clock adjustments using a tunable learning rate. This adaptive mechanism helps secondary systems gradually align with the primary clock, reducing sync frequency and improving long-term stability with minimal overhead. +- **User-Centric Utilities**: Provides reference applications that demonstrate effective usage of the library, assisting users in integrating Genlock capabilities into their own projects. + +The SW Genlock system operates by aligning the internal clocks of all systems involved, ensuring that every display refresh is triggered simultaneously. This alignment is achieved through the utilization of industry-standard protocols and our advanced algorithms, which manage the synchronization over ethernet or direct network connections. + +
+
+ Synchronization +
Figure: SW GenLock
+
+
+ +# Supported Platforms + +Platforms based on the following architectures should be supported: + +- Tiger Lake +- Alder Lake +- Raptor Lake +- Meteor Lake +- Arrow Lake +- Panther Lake + +## Important Notes +* This tool requires root privileges (e.g., via sudo) by default, as it accesses the PCI address space directly. Alternatively, users may configure appropriate permissions or use cgroup-based access control to avoid running as root. Please note that the accompanying reference applications do not handle this, and it is the user's responsibility to ensure proper permissions are set up. + +* The vsync_test reference application provided is intended for demonstration purposes only. It uses unencrypted socket communication to send and receive VBlank timestamps. Users are strongly encouraged to implement appropriate encryption and security measures for any production or real-world deployment. + +# Installation + +Installing SW Genlock involves a few straightforward steps. This section guides through the process of setting up SW Genlock on target systems, ensuring that user have everything needed to start synchronizing displays. + +## System Requirements + +Before the user begin the installation, ensure the systems meet the following criteria: + +The build system assumes the following, prior to executing the build steps: + +1) The system has [Ubuntu 22.04 or 24.04](https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview). Other Linux flavors should work too. +1) Libraries installed: `sudo apt install -y git build-essential make` +1) [Disable secure boot](https://wiki.ubuntu.com/UEFI/SecureBoot/DKMS) +1) MUST apply the [PLL kernel patch](./resources/shared_dpll-kernel-6.xx.patch) located in resources folder. + + Apply shared_dpll-kernel-x.x.patch according to kernel version. e.g shared_dpll-kernel-6.10+.patch applicable from 6.10 till 6.13. 6.14 has its own patch in resource directory. + + e.g patch -p1 < /resources/shared_dpll-kernel-6.10+.patch + + Compile the kernel and update either the entire kernel or just the i915.ko/xe.ko module, depending on the Linux configuration. Note: In some setups, the i915.ko/xe.ko module is integrated into the + initrd.img, and updating it in /lib/module/... might not reflect the changes. + - Following the application of the patch, edit the grub settings: + ```console + $ sudo vi /etc/grub/default + # add i915.share_dplls=0 to the GRUB_CMDLINE_LINUX options: + # GRUB_CMDLINE_LINUX="i915.share_dplls=0" + # Save and exit, then update grub + update-grub + ``` + +1) Apply **[the monotonic timstamp patch](./resources/0001-Revert-drm-vblank-remove-drm_timestamp_monotonic-par.patch)** + to Linux kernel drm module which allows it to provide vsync timestamps in real time + instead of the default monotonic time.
+ Note that the monotonic timestamp patch is generated based on Linux v6.4 and has been tested upto v6.15.
+ Please follow the steps to disable monotonic timestamp after installing the local built Linux image on a target. Compile the kernel and update either the entire kernel or just the drm.ko module based on the installed Linux configuration.
+ 1. Add ```drm.timestamp_monotonic=0``` option to **GRUB_CMDLINE_LINUX** in /etc/default/grub + 2. Update **GRUB_DEFAULT** in /etc/default/grub to address the local built Linux image + 3. Run ```update-grub``` to apply the change + 4. Reboot a target +1) Turn off NTP time synchronization service by using this command: + ```timedatectl set-ntp no``` +1) All the involved systems should support PTP time synchronization via ethernet (e.g ptp4l, phc2sys) + To verify if an ethernet interface supports PTP, the `ethtool` linux tool can be used. Run the following command, replacing `eth0` with the relevant interface name: + + ```console + $ ethtool -T eth0 + ``` + + If the interface supports PTP, the output will display specific PTP hardware clock information. + To ensure proper synchronization, the Ethernet interfaces on the involved systems should be directly connected either via a crossover cable or through a PTP-supported router or switch. If the systems only have a single network interface, it may be necessary to add a separate network adapter, such as a USB-to-Ethernet or USB-to-WiFi dongle, to maintain SSH access and connectivity to external networks. + + Alternatively, `Chrony` can be used for real-time clock synchronization. While it offers easier setup and broader compatibility, its precision is generally lower, and time drift may not be as stable compared to hardware-assisted PTP. + +1) Displays must be at same refresh rate (e.g 60Hz) + +## Build steps + +1) Git clone this repository +1) `sudo apt install libdrm-dev libpciaccess-dev` + 1) If the directory /usr/include/drm does not exist, it may be necessary to run the command`sudo apt install -y linux-libc-dev` +2) Type `make` from the main directory. It compiles everything and creates library and executable binaries in respective folders along with code which can then be copied to the target systems. + +# Software Components + +## Vsync Library + +The Vsync library is distributed in both dynamic (.so) and static (.a) binary formats, allowing users to choose between dynamic and static linking depending on their application requirements. This library includes essential functions such as retrieving vblank timestamps and adjusting the vblank timestamp drift by specified microseconds. Additionally, all operations related to Phase-Locked Loop (PLL) programming are encapsulated within the library, providing a comprehensive suite of tools for managing display synchronization. + +### 🔧 Static Library (.a) +When linking against the static library (libvsyncalter.a), the final binary must be linked using g++ rather than gcc. This is because the static library contains C++ object code but does not include the C++ standard library symbols (e.g., operator new, std::mutex, virtual tables). + +```bash +$ g++ -o app main.c libvsyncalter.a -lpciaccess -ldrm -lrt -lm +``` + +Linking with gcc in this case will typically result in undefined reference errors to C++ runtime symbols. + +### 🔧 Shared Library (.so) +When using the shared library version (libvsyncalter.so), the final binary can be linked using either gcc or g++. All necessary C++ symbols are already resolved and included in the shared object. + +The system dynamic linker will load the required C++ runtime (libstdc++) at runtime. + +```bash +$ gcc -o app main.c -L. -lvsyncalter -lpciaccess -ldrm -lrt -lm +``` + +This allows the shared library to be used safely from C code, since the C++ functions in vsync lib are exposed with C-compatible linkage (i.e., using extern "C" in headers). The reference applications are linked using g++, while the unit tests are compiled with gcc to ensure compatibility with the pure C interface. + +## Reference Applications + +Accompanying the library, three reference applications are provided to demonstrate how to utilize the library effectively. These include: + +- A `vsync test` app that runs in either primary mode or secondary mode. primary mode is run on a single PC whereas all other PCs are run as secondary mode with parameters pointing to primary mode system ethernet address. The communication is done either in ethernet mode or IP address mode. + +```console +Usage: ./vsync_test [-m mode] [-i interface] [-c mac_address] [-d delta] [-p pipe] [-s shift] [-v loglevel] [-h] +Options: + -m mode Mode of operation: pri, sec (default: pri) + -i interface Network interface to listen on (primary) or connect to (secondary) (default: 127.0.0.1) + -c mac_address MAC address of the network interface to connect to. Applicable to ethernet interface mode only. + -d delta Drift time in microseconds to allow before pll reprogramming (default: 100 us) + -p pipe Pipe to get stamps for. 4 (all) or 0,1,2 ... (default: 0) + -s shift PLL frequency change fraction as percentage (default: 0.01 = 0.01%) + -x shift2 PLL frequency change fraction for large drift (default: 0.0; Disabled) + -f frequency PLL clock value to set at start (default -> Do Not Set : 0.0) + -e device Device string (default: /dev/dri/card0) + -v loglevel Log level: error, warning, info, debug or trace (default: info) + -k time_period Time period in seconds during which learning rate will be applied. (default: 240 sec) + -l learning_rate Learning rate for convergence. Secondary mode only. e.g 0.00001 (default: 0.0 Disabled) + -o overshoot_ratio Allow the clock to go beyond zero alignment by a ratio of the delta (value between 0 and 1). + For example, with -o 0.5 and delta=500, the target offset becomes -250 us in the apposite direction (default: 0.0) + -t step_threshold Delta threshold in microseconds to trigger stepping mode (default: 1000 us) + -w step_wait Wait in milliseconds between steps (default: 50 ms) + -n Use DP M & N Path. (default: no) + -h Display this help message +``` + +* A `vbltest` app to print average vblank period between sync. This is useful in verification and validation. + +```console +[INFO] Vbltest Version: 2.0.0 + Usage: ./vbltest [-p pipe] [-c vsync_count] [-v loglevel] [-h] + Options: + -p pipe Pipe to get stamps for. 0,1,2 ... (default: 0) + -c vsync_count Number of vsyncs to get timestamp for (default: 300) + -e device Device string (default: /dev/dri/card0) + -l loop Loop mode: 0 = no loop, 1 = loop (default: 0) + -v loglevel Log level: error, warning, info, debug or trace (default: info) + -h Display this help message +``` + +* A `synctest` app to drift vblank clock on a single display by certain period such as 1000 microseconds (or 1.0 ms). + +```console +[INFO] Synctest Version: 2.0.0 +Usage: ./synctest [-p pipe] [-d delta] [-s shift] [-v loglevel] [-h] +Options: + -p pipe Pipe to get stamps for. 0,1,2 ... (default: 0) + -d delta Drift time in us to achieve (default: 1000 us) e.g 1000 us = 1.0 ms + -s shift PLL frequency change fraction (default: 0.01) + -x shift2 PLL frequency change fraction for large drift (default: 0.0; Disabled) + -e device Device string (default: /dev/dri/card0) + -f frequency Clock value to directly set (default -> Do not set : 0.0) + -v loglevel Log level: error, warning, info, debug or trace (default: info) + -t step_threshold Delta threshold in microseconds to trigger stepping mode (default: 1000 us) + -w step_wait Wait in milliseconds between steps (default: 50 ms) + --no-reset Do no reset to original values. Keep modified PLL frequency and exit (default: reset) + --no-commit Do no commit changes. Just print (default: commit) + -m Use DP M & N Path. (default: no) + -h Display this help message +``` + +**synctest sample output:** + +```console +$ ./synctest +[INFO] Synctest Version: 2.0.0 +[INFO] DRM Info: +[INFO] CRTCs found: 4 +[INFO] Pipe: 0, CRTC ID: 80, Mode Valid: Yes, Mode Name: , Position: ( 0, 0), Resolution: 1920x1080, Refresh Rate: 60.00 Hz +[INFO] Pipe: 1, CRTC ID: 131, Mode Valid: No, Mode Name: , Position: ( 0, 0), Resolution: 0x0 , Refresh Rate: 0.00 Hz +[INFO] Pipe: 2, CRTC ID: 182, Mode Valid: No, Mode Name: , Position: ( 0, 0), Resolution: 0x0 , Refresh Rate: 0.00 Hz +[INFO] Pipe: 3, CRTC ID: 233, Mode Valid: No, Mode Name: , Position: ( 0, 0), Resolution: 0x0 , Refresh Rate: 0.00 Hz +[INFO] Connectors found: 6 +[INFO] Connector: 0 (ID: 236 ), Type: 11 (HDMI-A ), Type ID: 1 , Connection: Disconnected +[INFO] Connector: 1 (ID: 246 ), Type: 11 (HDMI-A ), Type ID: 2 , Connection: Connected +[INFO] Encoder ID: 245, CRTC ID: 80 +[INFO] Connector: 2 (ID: 250 ), Type: 10 (DisplayPort ), Type ID: 1 , Connection: Disconnected +[INFO] Connector: 3 (ID: 259 ), Type: 11 (HDMI-A ), Type ID: 3 , Connection: Disconnected +[INFO] Connector: 4 (ID: 263 ), Type: 10 (DisplayPort ), Type ID: 2 , Connection: Disconnected +[INFO] Connector: 5 (ID: 272 ), Type: 10 (DisplayPort ), Type ID: 3 , Connection: Disconnected +[INFO] VBlank interval before starting synchronization: 16.667000 ms +[INFO] VBlank interval during synchronization -> +[INFO] VBlank interval on pipe 0 is 16.6650 ms +[INFO] VBlank interval on pipe 0 is 16.6650 ms +[INFO] VBlank interval on pipe 0 is 16.6650 ms +[INFO] VBlank interval on pipe 0 is 16.6650 ms +[INFO] VBlank interval on pipe 0 is 16.6640 ms +[INFO] VBlank interval on pipe 0 is 16.6650 ms +[INFO] VBlank interval on pipe 0 is 16.6650 ms +[INFO] VBlank interval on pipe 0 is 16.6660 ms +[INFO] VBlank interval after synchronization ends: 16.667000 ms +``` + +# Generating Doxygen documents + +Please install doxygen and graphviz packages before generating Doxygen documents: + ```sudo apt install doxygen graphviz``` + +1. Type ```make doxygen VERSION="1.2.3"``` from the main directory. It will generate SW Genlock doxygen documents + to output/doxygen folder. Change the version to be that of the release number for the project. +2. Open output/doxygen/html/index.html with a web-browser + +# Running on single system + +The reference applications vbltest and synctest are designed to operate on a single system. The vbltest app displays the average vblank period for a specific pipe, while synctest allows user to introduce a specific drift in the vblank timing for a pipe. Synctest serves as a practical tool to verify the effectiveness of the synchronization methodology. + +1) On the system, go to the directory where these files exist and set environment variable: +2) For dynamic linking with the .so library, it's necessary to set the LD_LIBRARY_PATH environment variable so that applications can locate the vsync dynamic library. This step is not required when using static linking. + +```console +$ export LD_LIBRARY_PATH=`pwd`/lib +`````` + +3) On the primary system, run accompanied reference apps as follows: +4) e.g synctest + ```console + $ ./synctest + ``` + +The synctest application offers two specialized modes as command line parameters: + +`--no-reset`: Applies new PLL clock values to the registers without reverting them after the timer expires. Use this mode for persistent changes, particularly during debugging and troubleshooting. + +`--no-commit`: Calculates and displays the new PLL clock values without writing them to the registers. This allows for safe previewing of changes before applying them. + +Building of this program has been successfully tested on both Ubuntu 2x and Fedora 30.
+ +## Direct PLL Clock Setting with Stepped Adjustment + +User can also update pll clock directly via vsync lib function call. The newly added set_pll_clock API, allowing for precise and direct control over PLL clock frequencies. To handle large frequency changes gracefully, the implementation incorporates an stepped adjustment mechanism. When a significant difference exists between the current and desired PLL clock frequencies, the function automatically calculates the optimal number of steps and adjusts the frequency incrementally based on given shift factor. This ensures stability and reliable locking without blank screens, even during substantial frequency transitions. The synctest application has been updated to demonstrate the usage of this new set_pll_clock API, providing a practical reference implementation for developers. For more details refer to the set_pll_clock api documentation. Current PLL clock value can be inferred by running synctest in regular mode which will print the value in console. User then can run synctest with -f option and desired PLL clock as an absolute floating point value parameter. + +```shell + $./synctest -f 8100.532 +``` + +# Synchronization Between Two Systems + +Synchronizing displays across two systems involves a two-step process. Firstly, the Real Time Clocks of both systems need to be kept in synchronized state using the ptp4l Linux tool. Subsequently, the vsync test app should be run in primary mode on one system and in secondary mode on the other, ensuring that the vblank of the secondary system remains synchronized with that of the primary system. + +## Synchronizing Real-time Clocks Between Two Systems + +For SW Genlock to function effectively, all participating systems must have their system clocks synchronized with **microsecond-level accuracy**. This is critical because SW Genlock shares vblank timestamps from the primary system with secondary systems, and these timestamps are based on the system clock, not the kernel’s monotonic clock (which starts counting from kernel boot time). + +SW Genlock works with real time clocks synchronized using either PTP (Precision Time Protocol) or Chrony, depending on the system capabilities and hardware environment: + +* **PTP** offers high-precision synchronization (sub-microsecond to low microsecond) and is the recommended option for best results. It typically requires hardware timestamping and a direct Ethernet connection between systems. + +* **Chrony**, while generally offering lower precision (typically within tens of microseconds), has been successfully tested with SW Genlock and provides sufficiently accurate synchronization in many practical scenarios. + +The setup instructions for both synchronization methods are available in the docs folder of this repository: + +- [PTP Setup Guide](docs/ptp.md) +- [Chrony Setup Guide](docs/chrony.md) + +For best results, especially in display-critical environments, it’s recommended to use a direct network cable between the Ethernet ports of the systems involved. + + +## Synchronizing Display VBlanks + +Once the system clocks are synchronized, user can proceed to run the vsync test tool on both the primary and secondary systems. +Installing and running the programs:
+ +1. Copy the release folder contents to both primary and secondary systems.
+2. On both systems, go to the directory where these files exist and set environment variable: +export LD_LIBRARY_PATH=.
+3. On the primary system, run it as follows: + ```console + $ ./vsync_test -m pri -i [PTP_ETH_Interface or Local IP Address] + ``` + +5. On the secondary system, run it as follows: + ```console + $ ./vsync_test -m sec -i [PTP_ETH_Interface or Remote IP Address] -c [Primary_ETH_MAC_Addr] -d [sync after # us of drift] + ``` + +This program runs in server mode on the primary system and in client mode on the +secondary system. + +
+
VBlank synchronization setup +
Figure: VBlank synchronization setup.
+
+ +If using PTP protocol to communicate between primary and secondary, there are some extra +parameters required. The primary system must identify the PTP Interface (ex: enp176s0). The +secondary system also requires its PTP interface as well as this port's ethernet MAC address. +An example of PTP communication between primary and secondary looks like this: +On the primary system, run it as follows: + +```console + $ ./vsync_test -m pri -i enp176s0 +``` +On the secondary system, run it as follows: +```console + $ ./vsync_test -m sec -i enp176s0 -c 84:47:09:04:eb:0e +``` + +In the above examples, we were just sync'ing the secondary system once with the primary. +However, due to reference clock differences, we see that there is a drift pretty much as +soon as we have sync'd them. We also have another capability which allows us to resync +as soon as it goes above a threshold. For example: +On the primary system, run it as follows: + ```./vsync_test -m pri -i enp176s0```
+On the secondary system, run it as follows: + ```./vsync_test -m sec -i enp176s0 -c 84:47:09:04:eb:0e 100``` + +The secondary system would sync with the primary once but after that +it would constantly check to see if the drift is going above 100 us. As soon as it does, +the secondary system would automatically resync with the primary. It is recommended to +select a large number like 60 or 100 since if we use a smaller number, then we will be +resyncing all the time. On the other hand, if we chose a really big number like 1000 us, +then we are allowing the systems to get out of sync from each other for 1 ms. On a +Tiger Lake system, 100 us difference is usually happening in around 60-70 seconds or +about a minute. So this program would automatically resync with the primary every minute +or so. + +The app features a learning mode as a secondary mode option, where it gradually adjusts the PLL clock to align closely with the primary clock. This adjustment occurs at a specified learning rate, and the app continuously modifies the secondary clock over several iterations and a set duration until it closely mirrors the primary clock, significantly delaying any drift. You can set the learning rate through a command-line parameter, with the default setting being 0, which disables this feature. The time_period parameter defines the duration within which the app responds to any drift by adjusting the clock. If the drift happens after this period has expired, the app does not make permanent adjustments to the PLL clock, assuming it has already closely synchronized with the primary display. + +Similar to ptp4l, For user convenience, an automation Bash script is available in the scripts folder to facilitate vsync synchronization on both primary and secondary systems. Users simply need to update the `config.sh` file with relevant details such as the secondary system's address, username, and Ethernet address, among others. After these updates, run the scripts/run_vsync.sh script from the primary system. This script will automatically copy vblank_sync to secondary under ~/.vblanksync directory and execute the vblank_sync tool on both the primary and secondary systems in their respective modes. Note that the script requires the secondary system to enable passwordless SSH to execute vsyncs commands through the SSH interface. + +```console +$ ./scripts/run_vsync.sh +``` + +# SW GenLock Key Features + +## Drift Correction Logic for larger drift +When the time delta between displays exceeds a certain threshold (see `-t` command line parameter), the system supports a two-phase adjustment mechanism to quickly reduce the drift. + +The shift value is the desired % difference from current frequency.  0.01 means 0.01% difference (either increase or decrease depending on which side the drift is). If a shift2 value is configured (typically larger than shift), it will be used to accelerate the convergence. However, applying a large shift directly may cause display blanking. To avoid this, the implementation internally breaks shift2 into smaller increments (based on shift) and applies them step-by-step to reach the desired frequency smoothly. There is a minor delay added to settle down frequency before next step (see `-w` command line parameter). + +After a configured timer expires, the same logic is applied in reverse to gradually return the system to its original frequency. + +If shift2 is not set (i.e., shift2 = 0), then only shift is used, and no internal stepping is performed. This results in slower convergence but avoids any risk of display instability. + +Using shift2 is particularly beneficial during the initial run, when VBlank timestamps between displays may be significantly misaligned. It helps reduce the initial drift quickly, and subsequent synchronization steps use the regular shift value to fine-tune the timing. + +When a very small shift is used together with a defined step size and a slightly longer wait time between steps, a minor overshoot is expected. In typical use cases with continuous drift monitoring, this overshoot is automatically corrected over time. However, when testing with synctest, which runs only a single adjustment cycle, this correction does not take place. Users are advised to experiment and tune the shift, step threshold and wait values according to their specific hardware setup. + +## Adaptive Clock Adjustment via Learning Rate (Secondary Mode) + +One of the key features of the Software Genlock system is the ability of a secondary system to gradually align its clock with the primary system through **incremental, permanent adjustments**. This mechanism helps reduce the frequency of synchronization events over time. + +When the **learning rate** parameter is provided via command line (e.g., `0.00001`), the secondary system does not only apply temporary drift corrections — it also updates its base clock gradually in the direction of the drift. This behavior helps the local clock "learn" and adapt to the long-term behavior of the primary system. + +### How It Works + +- After each detected clock drift and adjustment, the secondary clock is **permanently nudged** toward the primary clock using the learning rate. +- The adjustment is calculated as: + new_clock_offset = current_offset + (drift * learning_rate) +- Over time, this reduces the overall drift and **increases the interval between needed sync events**, resulting in a more stable and low-overhead synchronization model. + +This tiny correction is applied to the secondary clock base value. With repeated learning cycles, the secondary system adapts and remains closer to the primary clock with minimal intervention. + +This learning mechanism is optional and tunable via the command line parameter -l, allowing fine-grained control over synchronization behavior based on system stability and timing accuracy needs. + +## 📈 Step-Based Frequency Correction +To achieve smooth and compliant synchronization, SW GenLock applies clock frequency corrections in controlled steps, allowing fast convergence without violating PHY or PLL constraints. + +🔹 **Shift 1** – Fine-Grained Correction +Shift 1 represents a small, controlled adjustment to the secondary clock’s frequency, defined as a percentage of the base PLL frequency—typically between 0.01% to 0.1%. This step is used continuously to either slightly speed up or slow down the clock to stay in sync with the primary. It ensures the corrections stay within the compliance limits of the underlying PHY and PLL, enabling stable and gradual convergence. + +🔹 **Shift 2** – Rapid Drift Recovery +Shift 2 is triggered when the drift between primary and secondary clocks crosses a defined threshold, such as 1 millisecond. It calculates a larger correction to close the timing gap more quickly. However, instead of applying this large adjustment at once, the correction is split into multiple smaller Shift 1 steps to maintain safe operating limits and avoid abrupt changes that could disrupt system behavior. + +This two-step correction model ensures the secondary clock reaches alignment with the primary efficiently and within hardware limitations, even under large initial drift conditions. + + +## Offset Overshoot Control +This feature allows the secondary clock to intentionally overshoot the ideal alignment point (zero delta) within the permitted drift range. Controlled via the -o parameter (default: 0.0, range: 0.0 to 1.0), it defines how far in the opposite direction the clock is allowed to go before beginning convergence. For example, setting -o 0.5 with a delta of 500 µs shifts the sync target to -250 µs, helping reduce the frequency of corrections and avoiding abrupt PLL adjustments. This results in smoother synchronization and longer stable intervals. + + +## Data collection and Graph generation +The tool logs key synchronization metrics in CSV format, such as time between sync events, delta values at the point of sync trigger, and the applied PLL frequency. A Python script is included to generate plots that help visualize the system’s behavior over long durations. It is recommended to use a virtual environment (especially on Ubuntu 24.04 or later) to avoid conflicts with system packages. You can create and activate a virtual environment as follows: + +```bash +python3 -m venv venv +source venv/bin/activate +pip install matplotlib +``` + +Now run + +```bash +(venv)$ python ./scripts/plot_sync_interval.py ./sync_pipe_0_20250610_110827.csv +``` + +
+
Long hour synchronization with Chrony +
Figure: Long hour synchronization with Chrony
+
+ +**To read graph:​** The data points show the duration between sync events. With a learning time window of 480 seconds (8 minutes), the secondary PLL clock continued adjusting for approximately the first 1.5 hours. Once the sync interval exceeded 8 minutes, learning stopped, and the system remained stable, consistently maintaining sync intervals longer than 8 minutes. A single dip observed around the 4-hour mark is likely due to a transient issue with Chrony. + +This data proves valuable for debugging, performance tuning, and validating sync stability. Additionally, the logged PLL frequency can be reused as a command-line parameter to initialize the application with an optimal frequency, allowing it to skip the learning phase and achieve quicker synchronization. + +## Running vsync_test as a Regular User without sudo + +While the ptp synchronization section provides methods for configuring passwordless sudo, it may be preferable to operate without using sudo or root privileges. The `vsync_test` application, which requires access to protected system resources for memory-mapped I/O (MMIO) operations at `/sys/bus/pci/devices/0000:00:02.0/resource0`, can be configured to run under regular user permissions. This can be achieved by modifying system permissions either through direct file permission changes or by adjusting user group memberships. Note that the resource path might change in future versions of the kernel. The resource path can be verified by running the application with the `strace` tool in Linux as a regular user and checking for permission denied errors or by examining `/proc/processid/maps` for resource mappings. + +### Option 1: Modifying File Permissions + +Altering the file permissions to allow all users to read and write to the device resource removes the requirement for root access. This method should be used with caution as it can lower the security level of the system, especially in environments with multiple users or in production settings. + +To change the permissions, the following command can be executed: + +```bash +sudo chmod o+rw /sys/bus/pci/devices/0000:00:02.0/resource0 +``` + +This command adjusts the permissions to permit all users (o) read and write (rw) access to the specified resource. + +### Option 2: Configuring User Group Permissions and Creating a Persistent udev Rule + +A more secure method is to assign the resource to a specific user group, such as the `video` group, and add the user to that group. This method confines permissions to a controlled group of users. To ensure the changes persist after a reboot, a `udev` rule can be created. + +#### Step 1: Add the Resource to the Video Group + +Change the group ownership of the resource file to the `video` group using the following command: + +```bash +sudo chgrp video /sys/bus/pci/devices/0000:00:02.0/resource0 +``` + +#### Step 2: Modify Group Permissions + +Set the group permissions to allow read and write access with: + +```bash +sudo chmod g+rw /sys/bus/pci/devices/0000:00:02.0/resource0 +``` + +#### Step 3: Add the User to the Video Group + +Add the user to the video group using this command (replace username with the actual user name): + +```bash +sudo usermod -a -G video username +``` + +Log out and log back in, or start a new session, for the group changes to take effect. + +#### Step 4: Create a udev Rule for Persistent Permissions + +To make the permissions persist after reboot, create a `udev` rule by adding a new rule file in `/etc/udev/rules.d/`: + +```bash +echo 'ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:02.0", RUN+="/bin/chgrp video %S%p/resource0", RUN+="/bin/chmod 0660 %S%p/resource0"' | sudo tee /etc/udev/rules.d/99-vsync-access.rules +``` + +This rule ensures that the permissions are correctly set when the system boots. + +#### Step 5: Reload udev Rules + +After creating the rule, reload the udev rules to apply them immediately without rebooting: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger -s pci --action=add +``` + +#### Verifying the Changes + +After applying one of the above methods, confirm that the user has the necessary permissions by running the vsync_test application without elevated privileges. If the setup is correct, the application should run without requiring sudo or root access. + +## Running ptp4l as a Regular User without sudo + +Similarly, the ptp4l command can be executed by a regular user. This can be done by either altering the permissions or modifying the group for `/dev/ptp0`, or by creating a udev rule to ensure persistent permissions. + +```bash +echo 'SUBSYSTEM=="ptp", KERNEL=="ptp0", GROUP="video", MODE="0660"' | sudo tee /etc/udev/rules.d/99-ptp-access.rules +``` + +Reload udev Rules + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger +``` + +However, `phc2sys` will still need to be run with root or sudo privileges as it involves modifying system time. Running it under a normal user account could be possible if permissions to update the system clock are granted to the application. + +# Debug Tools + +When performing debugging, it is helpful to have the following libraries installed: + +```bash +apt install -y intel-gpu-tools edid-decode +``` + +## Debug Tool Usage + +When encountering unexpected behavior that requires additional debugging, the installed tools can assist in narrowing down the potential problem. + +**[intel-gpu-tools](https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/)** +Provides tools to read and write to registers, it must be run as the root user. Example: + +```console +$ intel_reg dump --all > /tmp/reg_dump.txt + +# output excerpt + GEN6_RP_CONTROL (0x0000a024): 0x00000400 +Gen6 disabled + GEN6_RPNSWREQ (0x0000a008): 0x150a8000 + GEN6_RP_DOWN_TIMEOUT (0x0000a010): 0x00000000 + GEN6_RP_INTERRUPT_LIMITS (0x0000a014): 0x00000000 + GEN6_RP_UP_THRESHOLD (0x0000a02c): 0x00000000 + GEN6_RP_UP_EI (0x0000a068): 0x00000000 + GEN6_RP_DOWN_EI (0x0000a06c): 0x00000000 + GEN6_RP_IDLE_HYSTERSIS (0x0000a070): 0x00000000 + GEN6_RC_STATE (0x0000a094): 0x00040000 + GEN6_RC_CONTROL (0x0000a090): 0x00040000 + GEN6_RC1_WAKE_RATE_LIMIT (0x0000a098): 0x00000000 + GEN6_RC6_WAKE_RATE_LIMIT (0x0000a09c): 0x00000000 + GEN6_RC_EVALUATION_INTERVAL (0x0000a0a8): 0x00000000 + GEN6_RC_IDLE_HYSTERSIS (0x0000a0ac): 0x00000019 + GEN6_RC_SLEEP (0x0000a0b0): 0x00000000 + GEN6_RC1e_THRESHOLD (0x0000a0b4): 0x00000000 + GEN6_RC6_THRESHOLD (0x0000a0b8): 0x00000000 +... + +intel_reg read 0x00062400 + PIPE_DDI_FUNC_CTL_C (0x00062400): 0x00000000 (disabled, no port, HDMI, 8 bpc, -VSync, -HSync, EDP A ON, x1) +``` + +**[edid-decode](https://manpages.debian.org/unstable/edid-decode/edid-decode.1.en.html)** +is a tool used to parse the Extended Display Identification Data (EDID) from monitors and display devices. EDID contains metadata about the display's capabilities, such as supported resolutions, manufacturer, serial number, and other attributes. + +To operate edid-decode, it is typically necessary to supply a binary EDID file or data. Here's an example of how to use it: + +```console +$ cat /sys/class/drm/card0-HDMI-A-1/edid > edid.bin + +# run edid-decode to parse and display the information +edid-decode edid.bin + +# sample output +Extracted contents: +header: 00 ff ff ff ff ff ff 00 +serial number: 10 ac 64 a4 4c 30 30 32 +version: 01 03 +basic params: 80 34 20 78 2e +chroma info: c5 c4 a3 57 4a 9c 25 12 50 54 +established: bf ef 80 +standard: 71 4f 81 00 81 40 81 80 95 00 a9 40 b3 00 01 01 +descriptor 1: 4d d0 00 a0 f8 70 3e 80 30 20 35 00 55 50 21 00 00 1a +descriptor 2: 02 3a 80 18 71 38 2d 40 58 2c 45 00 55 50 21 00 00 1e +descriptor 3: 00 00 00 ff 00 43 32 30 30 38 30 4e 50 30 0a 20 20 20 +descriptor 4: 00 00 00 fd 00 32 4b 1e 53 11 00 0a 20 20 20 20 20 20 +extensions: 01 +checksum: 1c + +Manufacturer: DEL Model a464 Serial Number 808909324 +Made week 12 of 2008 +EDID version: 1.3 +Digital display +Maximum image size: 52 cm x 32 cm +Gamma: 2.20 +DPMS levels: Standby Suspend Off +RGB color display +First detailed timing is preferred timing +Display x,y Chromaticity: + Red: 0.6396, 0.3300 + Green: 0.2998, 0.5996 + Blue: 0.1503, 0.0595 + White: 0.3134, 0.3291 +Established timings supported: + 720x400@70Hz + 640x480@60Hz + 640x480@67Hz + 640x480@72Hz + 640x480@75Hz + 800x600@56Hz + 800x600@60Hz + ... +Standard timings supported: + 1152x864@75Hz + 1280x800@60Hz + 1280x960@60Hz + ... +Detailed mode: Clock 148.500 MHz, 509 mm x 286 mm + 1920 2008 2052 2200 hborder 0 + 1080 1084 1089 +``` diff --git a/cmn/debug.h b/cmn/debug.h index 58c195a..d1155a5 100644 --- a/cmn/debug.h +++ b/cmn/debug.h @@ -1,83 +1,109 @@ -/* - * Copyright © 2024 Intel Corporation - * - * 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 (including the next - * paragraph) 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. - * - */ - -#ifndef _DEBUG_H -#define _DEBUG_H - -enum log_level { - LOG_LEVEL_NONE, - LOG_LEVEL_ERROR, - LOG_LEVEL_WARNING, - LOG_LEVEL_INFO, - LOG_LEVEL_DEBUG, - LOG_LEVEL_TRACE, -}; - -extern log_level dbg_lvl; - -void set_log_mode(const char* mode); -void set_log_level(log_level level); -void set_log_level(const char* log_level); -void log_message(log_level level, const char* format, ...); - -#define PRINT(format, ...) \ - log_message(LOG_LEVEL_NONE, format, ##__VA_ARGS__) - -#define ERR(format, ...) \ - log_message(LOG_LEVEL_ERROR, format, ##__VA_ARGS__) - -#define WARNING(format, ...) \ - log_message(LOG_LEVEL_WARNING, format, ##__VA_ARGS__) - -#define INFO(format, ...) \ - log_message(LOG_LEVEL_INFO, format, ##__VA_ARGS__) - -#define DBG(format, ...) \ - log_message(LOG_LEVEL_DEBUG, format, ##__VA_ARGS__) - -#define TRACE(format, ...) \ - log_message(LOG_LEVEL_TRACE, format, ##__VA_ARGS__) - - -#ifdef __cplusplus -class tracer { -private: - char *m_func_name; -public: - tracer(const char *func_name) - { - TRACE(">>> %s\n", func_name); - m_func_name = (char *) func_name; - } - ~tracer() { TRACE("<<< %s\n", m_func_name); } -}; -#endif - -#ifdef __cplusplus -#define TRACING() tracer trace(__FUNCTION__); -#else -#define TRACING() -#endif - -#endif // _DEBUG_H +/* + * Copyright © 2024 Intel Corporation + * + * 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 (including the next + * paragraph) 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. + * + */ + +#ifndef _DEBUG_H +#define _DEBUG_H + +#include +#include +typedef enum { + LOG_LEVEL_NONE, + LOG_LEVEL_ERROR, + LOG_LEVEL_WARNING, + LOG_LEVEL_INFO, + LOG_LEVEL_DEBUG, + LOG_LEVEL_TRACE, +} log_level; + +extern log_level dbg_lvl; + +void log_message(log_level level, const char* format, ...); + +#define PRINT(format, ...) \ + log_message(LOG_LEVEL_NONE, format, ##__VA_ARGS__) + +#define ERR(format, ...) \ + log_message(LOG_LEVEL_ERROR, format, ##__VA_ARGS__) + +#define WARNING(format, ...) \ + log_message(LOG_LEVEL_WARNING, format, ##__VA_ARGS__) + +#define INFO(format, ...) \ + log_message(LOG_LEVEL_INFO, format, ##__VA_ARGS__) + +#define DBG(format, ...) \ + log_message(LOG_LEVEL_DEBUG, format, ##__VA_ARGS__) + +#define TRACE(format, ...) \ + log_message(LOG_LEVEL_TRACE, format, ##__VA_ARGS__) + +/* +The existing trace object initialization code used __FUNCTION__, +which provides only the function name without the class name. + +This macro extracts both the function and class names for use in TRACE logging. +Including the class name is necessary to distinguish functions with the same name +in different classes. + +Example: + combo::program_phy + dkl::program_phy +*/ +#define FUNCTION_NAME ([]() -> const char* { \ + static char buffer[128]; /* Buffer to store extracted function name */ \ + const char *func = __PRETTY_FUNCTION__; \ + const char *start = strstr(func, "::"); /* Locate "::" which separates class and function */ \ + if (!start) return func; /* If "::" not found, return full function signature */ \ + while (start > func && *(start - 1) != ' ') --start; /* Move back to the first character of class name */ \ + const char *end = strchr(start, '('); /* Locate '(' at the end of function name */ \ + if (!end) return func; /* Edge case: If '(' not found, return original */ \ + int len = (int)(end - start); \ + if (len < 0 || len >= (int)sizeof(buffer)) return func; /* Prevent buffer overflow */ \ + strncpy(buffer, start, len); \ + buffer[len] = '\0'; /* Null-terminate */ \ + return buffer; \ +}()) + + +#ifdef __cplusplus +class tracer { +private: + const char *m_func_name; +public: + tracer(const char *func_name) : m_func_name(func_name) { + TRACE(">>> %s\n", m_func_name); + } + ~tracer() { + TRACE("<<< %s\n", m_func_name); + } +}; +#endif + +#ifdef __cplusplus +#define TRACING() tracer trace(FUNCTION_NAME ? FUNCTION_NAME : "UnknownFunction"); +#else +#define TRACING() +#endif + +#endif // _DEBUG_H diff --git a/cmn/version.h b/cmn/version.h index ab4de6b..48cf5b9 100644 --- a/cmn/version.h +++ b/cmn/version.h @@ -1,49 +1,49 @@ -/* - * Copyright © 2024 Intel Corporation - * - * 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 (including the next - * paragraph) 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. - * - */ - -#ifndef _VERSION_H -#define _VERSION_H - -#include -#include - -#define VERSION_MAJOR 2 -#define VERSION_MINOR 0 -#define VERSION_PATCH 0 - -/** - * @brief Constructs a version string from major, minor, and patch numbers. - * - * @return A string representing the version in the format "major.minor.patch". - */ -static inline std::string get_version() -{ - std::ostringstream version_stream; - version_stream << VERSION_MAJOR << '.' - << VERSION_MINOR << '.' - << VERSION_PATCH; - return version_stream.str(); -} - -#endif +/* + * Copyright © 2024 Intel Corporation + * + * 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 (including the next + * paragraph) 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. + * + */ + +#ifndef _VERSION_H +#define _VERSION_H + +#include +#include + +#define VERSION_MAJOR 4 +#define VERSION_MINOR 0 +#define VERSION_PATCH 0 + +/** + * @brief Constructs a version string from major, minor, and patch numbers. + * + * @return A string representing the version in the format "major.minor.patch". + */ +static inline std::string get_version() +{ + std::ostringstream version_stream; + version_stream << VERSION_MAJOR << '.' + << VERSION_MINOR << '.' + << VERSION_PATCH; + return version_stream.str(); +} + +#endif diff --git a/cmn/vsyncalter.h b/cmn/vsyncalter.h index bb0e28b..afb2d1d 100644 --- a/cmn/vsyncalter.h +++ b/cmn/vsyncalter.h @@ -1,39 +1,70 @@ -/* - * Copyright © 2024 Intel Corporation - * - * 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 (including the next - * paragraph) 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. - * - */ - -#ifndef _VSYNCALTER_H -#define _VSYNCALTER_H - -#define ONE_VSYNC_PERIOD_IN_MS 16.666 -#define MAX_TIMESTAMPS 100 -#define ALL_PIPES 4 - -int vsync_lib_init(); -void vsync_lib_uninit(); -void synchronize_vsync(double time_diff, int pipe = ALL_PIPES, double shift = 0.01); -int get_vsync(long *vsync_array, int size, int pipe = 0); -double get_vblank_interval(int pipe); -void shutdown_lib(void); - -#endif +/* + * Copyright © 2024 Intel Corporation + * + * 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 (including the next + * paragraph) 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. + * + */ + +#ifndef _VSYNCALTER_H +#define _VSYNCALTER_H + +#include +#include +#include + +#define VSYNC_ONE_VSYNC_PERIOD_IN_MS 16.666 +#define VSYNC_MAX_TIMESTAMPS 100 +#define VSYNC_ALL_PIPES 4 +#define VSYNC_DEFAULT_DEVICE "/dev/dri/card0" +#define VSYNC_DEFAULT_PIPE 0 +#define VSYNC_DEFAULT_SHIFT 0.01 +#define VSYNC_DEFAULT_SHIFT2 0.1 +#define VSYNC_DEFAULT_RESET true +#define VSYNC_DEFAULT_COMMIT true +#define VSYNC_DEFAULT_WAIT_IN_MS 50 +#define VSYNC_TIME_DELTA_FOR_STEP 1000 + +#ifdef __cplusplus +extern "C" { +#endif + +int vsync_lib_init(const char *device_str, bool dp_m_n); +int vsync_lib_uninit(); +int synchronize_vsync(double time_diff, int pipe, double shift, double shift2, + int step_threshold, int wait_between_steps, bool reset, + bool commit); +int get_vsync(const char *device_str, uint64_t *vsync_array, int size, int pipe); +double get_vblank_interval(const char *device_str, int pipe, int size); +int set_pll_clock(double pll_clock, int pipe, double shift, + uint32_t wait_between_steps); +double get_pll_clock(int pipe); +bool get_phy_name(int pipe, char* out_name, size_t out_size); +int print_drm_info(const char *device_str); +void shutdown_lib(void); +const char* find_first_dri_card(void); +int set_log_mode(const char* mode); +int set_log_level(log_level level); +int set_log_level_str(const char* log_level); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/docs/chrony.md b/docs/chrony.md new file mode 100644 index 0000000..85b487e --- /dev/null +++ b/docs/chrony.md @@ -0,0 +1,119 @@ + +# Synchronization Real-time clock Using Chrony (For Non-PTP Interfaces) + +For systems with Ethernet adapters that do not support PTP (Precision Time Protocol), **Chrony** offers a practical alternative for clock synchronization. This method ensures consistent time alignment across systems required by the software genlock feature. + +However, it is important to note that **Chrony-based synchronization may not achieve the same level of accuracy as hardware-assisted PTP**, as it relies entirely on software. Its precision can be affected by factors such as **network latency, interface speed, and overall system load**. For applications requiring tight synchronization margins, PTP remains the preferred option when supported. + +#### Primary System (Time Server) + +1. **Install Chrony**: + ```bash + sudo apt install chrony + ``` +2. **Edit the configuration file /etc/chrony/chrony.conf**: + ``` + # Allow clients from the subnet 192.168.1.0 + allow 192.168.1.0/24 # + + # (Optional) Bind to a specific network interface + binddevice + hwtimestamp + local stratum 8 + + # Make sure primary Chrony doesn't sync with any external pool/server. Disable/remove all of them + # pool pool.ntp.org iburst + # server corp.intel.com iburst + ``` + +3. **Restart the Chrony service**: + ```bash + sudo systemctl restart chrony + ``` + +4. **(If a firewall is active) Allow NTP traffic**: + ```bash + sudo ufw allow 123/udp + ``` + +#### Secondary System (Time Client) + +1. **Install Chrony**: + ```bash + sudo apt install chrony + ``` +2. **Edit the configuration file /etc/chrony/chrony.conf**: + Replace any existing pool or server entries with: + ``` + server iburst minpoll 1 maxpoll 1 + binddevice + hwtimestamp + ``` + +4. **Restart the Chrony service**: + ```bash + sudo systemctl restart chrony + ``` + +5. **(If a firewall is active) Allow NTP traffic**: + ```bash + sudo ufw allow 123/udp + +#### Verifying Synchronization (on the Client) +Use the following commands to verify synchronization status: + +##### On Primary: +```bash +$ chronyc tracking +Reference ID : 7F7F0101 () +Stratum : 8 + +$ chronyc sources +MS Name/IP address Stratum Poll Reach LastRx Last sample +=============================================================================== + +``` +The reference ID in the () should be blank and sources list should be empty. + +##### On Secondary: + +The output should list the primary system as the time source (Assuming secondary system address is 192.168.1.100): +```bash +$ chronyc tracking +Reference ID : C0A80A02 (192.168.1.4) +Stratum : 9 + +$ chronyc sources +MS Name/IP address Stratum Poll Reach LastRx Last sample +=============================================================================== +^* 192.168.1.4 8 9 377 354 +7943ns[+7967ns] +/- 45us +``` +The reference ID in the () should point to primary IP address and sources list should only have primary IP entry. The ^* symbol indicates that synchronization is active and successful. + +##### Set Real-Time Scheduling Priority + +Chrony should be run with real-time scheduling policy (SCHED_FIFO) and high priority. On both primary and secondary run + +```bash +$ sudo systemctl edit chrony +``` + +Add the following: + +``` +### Editing /etc/systemd/system/chrony.service.d/override.conf +### Anything between here and the comment below will become the new contents of the file + +[Service] +Nice=-20 +CPUSchedulingPolicy=FIFO + +### Lines below this comment will be discarded +``` + +Then reload and restart: + +``` +$ sudo systemctl daemon-reexec +$ sudo systemctl restart chrony +``` diff --git a/docs/images/directory_tree.png b/docs/images/directory_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..42b1a1854b53a07679182cb483b9f692adc76857 GIT binary patch literal 7645 zcmaiZ1yo(lvL+5egS!(P4jSA!xO1=|!6mp8+}$O>3GNbHgS!WU1b25oxD0>po%`mk znYU)IwX19I)w^YPb=UV*MW`rAqahO^LqS2I$;wEoy_IEecMlT6n_QUGX?QE(oW*59 zNN<-nl4AW63MU(dx|st72O9?$1v?u*Cp$kU2Zfj-1rr-D%wVA>6cp)4SxGUF zN5)B}p9;tVd?pf*LAGMDZ2pU6Ht&yBWr|dk60M?B|1uXRt_wB?;TW=Gy@i4`G(!rZ z1mjRLxW!OTF$Rq0iSK~8jA|YTf+-bs>NRaBrj5sKj%c>i#b1=)kFiS4wWwXOo{E~L z6rp~QeRLlMmQ8&13g zM)CireAX>VG!WA%kp_=1BEezafyGl~)|`UNdVxQtlaQ9IMRyJfywptU%b-&aFeK#9HH&X#AagH^ zCsntkLIp78x}GM*OxY@*f!_(SXM={0xmcbAV`XSi-9uH4Ns(mSprf1X~Q3AA`maGX=o>YrCA zMI%_k{)~uZho_Exn1Ms~c#$^=;3f$3zFi*LdG!tv8T_>o8-DRgEMu^-_RQ39^Kk$` zH4K%Nq(nPa?+K4o1_$l>J|5Jp9%gq}TJ>-qg){An%a?%KE@MKi|M1Zy%-+HGwd9T9sBHiU}xS7SlHF zU(4G)N1kusHhG^LeS63?D@76RUoHQ(`qgIrm@yD%&hWf>8DDJJI8qBRq(^L^C~xO-K->o z-*r%OwT2LJmL&~PkL&8AbmOG|6i@ka?AwkcFX*5BZA$RV_-9?2uuB=tFf#c;dPE2J zk1CG!@J-cu%Wjr+M{)2CF+N95Ltk64EDE&YhKI_oDHH*=dkgJ~ci(o@YbTkNCOgn3 zOK{D=1jxTHq_}O{8GkE4ybefok|ORkijnGn{`y^nYu3_yxKkIEA9?M2NXa(mZzSyE zAn zAxgzWCOeq3KRJ=T%|&lO>yt@(qy{hX;7h+Y62&zE#PkL zl)1st!w)^w!*ED(#krr$-~r(bzshh$t*0nO>e{*c@szc(gqcfXwk8-pzA1f=Jk_>Gb~7&(GY0-$!yHaZO3M(hwN>Ew5{1a8 zff^FPW25FK$x_}SCxhn;Lvr1pCPChi7x+CrB{(PqAZe&^FB zI#r3wm}9*Q(ogP~kq|45VYcUMy`fdV7RQ?nK_`0rFqO?p^~j32131p#Q|5>|tzpyW zGdB-adF8;o^4YCsJC)=?4Ai0`GEU=E4h6vKMSu+Vig>i(WJ7>yDey3+UT789Y#0&_Y)x+e@e}A96);Lx~0@y&EEODg9(l9zr zUuSM;gWNEZ&uhiM7=6XzkGK~`CJGG_6tZymER%B<#~86EaNZ2#0YgZ`DB2laD=NL7 zn8f+I3xt1qwksNaE&rN}(1{$#{yi~sVMFV5Jql|1gY>FHD|Jbr5|wd8)q}^?UaRr< z+|Q(4oJFe0Pu=nk9f4xBPiE3a9TCThZndY%QiRybN9jz14vsc7tO~&*^&9Buoq1EY z2T-OoM&TwIDt}&t^)L@fQ4so)@;rRVRVXsn>FR*9qZk&;Ybimf%Jg9D=&7+eT_jAp$W6ed# zpcM*4W=@K*o(%`t@L5ou1c21kwQ4u+Z8+8zWgXkSMj$g!fv+rd<6Tr+`>83-^ZrjE z_!IN@5;UU13`o$eI%fznFhFq4g0d^e6Oku{E#5 z6PVCXa#R6I+Ln7jocJ+rCl8@xyY6*seWsI;?Xy?*Dy>qReb0*m?qIgb@+Al)?5^S~ zI??#+<4s#$n12|VG+)Zx*j=$yyl6%MH?g~kE(JCGbMr)p?0pq~ky$k34|;VY9bt_^ z1aMRGq*ERGue8GO%Fq8sD%z?=;_hg=b8ClkW9Y%Sz_-``2rhdd<`{aPsa(!G^OL~N zmxyPQC6d^U>qeEEY4ChrCR|gn&QjjP+6quf3H|F}U#=zfejR;z6_wvYMdc7=>{Bjs zeMo4lFDzdtucVYReCK@>bFCIl{(hjxs>o1XRcMcE3hqbbSqoz&X$##;K!80Wl{kZ^l4+6{}A(Ju)C~J8l zLBnA6cqZxM83(HqH)le%J3vcX#6+BFq=y8Zw9yDPj0t=j8n;j4q;@s7e^Z@o+Mksw zKi~v=spY$D0WNtlgv7Rt8ks(~JKno75$wzVjdIVvjnitPLtUYq%V#@Ot%M zp-nlm^!nRwV3RvnaEXF$c+|X<5db>Vs;kztWpFeo)@14q?FMoy2l018XPVQAzR6=L zQiq-^Z1cdC$;wIV2VyG)uZ)#ZMH&0ADiP)rX`!Cz&V^CCQd&c6*HyN>KILqze|q6x zX)5S>q;yggA8-)`;u?cTy-Le@l4_`fTz;ZSue&woEnohiXY5ecoAXP*K!}#bdU$kK ze;wjJgV4plpRk-GdDkDl!AfYd;Yfrs*ok{iOR*sZjN2)Nv58A#XO5Sqex5jrhxX(0 zlKKIO<}nm-NXs}2&TeV_#sc7qBPJ?I^|_O3tP3h(9Q%$PnVc1kyE7m|17N54kj{H8 zb#vDgy1c&!8?dwx=|pS_e0T3*7aaKrIl<}Vh7VfS0I(GD>?8EWA+ht$pQ<%t2q&?QwaYXuX+%TVganT=+je95$!~r z=s%BhcS=f1tDx6{cG<5K7?CeLQwK1!o5UstNNKCm0{v&*l`v%*-cVK~gKW1$9Q@Iu zElve@4B$TEdqC@$si3i>PL8yQ4XkRbrRQ4E#xPc6#YYou%Px=Xlw%7wLq9ee;6x!b zTUs?URJ=+@Q^fI(i5bzaEKDz?IcDX%>pcG#_cInwyooDMZ%|&)M5i6`;TkvOmFRPIuF6e5V8sft#(d7YY*Ot&JXYRQQ!yvj@pbb39d1wG zXpxEB6G`h4c5ZYg?rcm^T+Ws5;;%b`{ab+6e^%}qxfjxCoA}P(?x^jRX z_JiBso^|mC-fzJUHfumf_r)5uwR_ zEQm{fIIO2rj(T5DJw)U)+%VyUqOlF#6zCQK90Gn_~c-v zDi1tue?)d$ys)e4E`^DzV_3E^U%wNJ6hJf-*7w&367Gb|{PtB;?lOF)Xc4y7!lyLrjY9`)MQ;U>29qz$_|n#rJDvqvXfS zqAJRukd7(f_IGu=+cwdl$VbEbFh%W7-KZ;STr4cvaN?ZjAJ`LnU3&(C__SK>OPLGS zz&Bfc%#6!xqbBifM%1c8v1koyTs?2!BVZfTy3ixRw%fa1zmP3pR)C{*{^T6&3FDa` z5X{7?*Up32VZ)UtLwl?dGhg+!%9?laL7ccE`()rIs<$B1edEw|@*)6sZg0*P?3UiI znG8iL-Bh;&BC@&#vxzi^_K=$!EjDF>oqI93em+qs#3NHV3FYS_EYgkzjN~LOCJK_= z7MaL$o9O6^-e52%i}=Mi5;|esjAcNSdp0-DPP#5MS#|))Q{D^#T=Gu)6-;D;sb;8A z*wRr)Xaraw@8=E8k0p6|CaW16F#K3p+p=b?7p+2fyJ>8M_TCy@Ct2sun4vHpNYN}1{6G5wpAxn{10uOHhsQ_zN%p%g9Gk6<&bqPL48IPA!wrqj#;0(|I=Z}uezQyek&Tz=(}@XWH}s@O zT%tCTehR?@PlT=c{SL4F9sU)Fce8g@GmhaW_2uLJ5huH!v{+}CzZnEM@!~SwVpp=> z+IyBfy#z0=obl<8oXtc91KnAwx}#Hb70B`VfdW@exG|fQ$^!jvg>>d64;;He zS-%KeDX&Pj@r{_%d^~Sn+<(v#2|XHf#NNog?-HI-BpzCQ!Mgdme&)W(dy3R~R=BgH zHg8JjwIn}phU9(P?K&=YWY|2E%6O$#$Kcrp^_=0bxz-6N=KD4lL?rglW;P6Udk#zw z{Tm?phn)RoX#XX`hm-%I)&u_adEr}~t70wtLUx4WCG0uAr+N7++`Bo;!<0g8K@VF% z@qKl}0lQo!rgj$4&FUM#v8!jA(dKZFZ16Bua~li2ov%U?w4t6Z$U*V668faDa{x8< zyu|w;ZcYzlT^$tk9U~T_LHC=oh81$JbHEqyqpZwbyEGmy@kXwR**DIG)VbabvSzz9lMX|AY2Hb<-u zjPg=G(%AX4lN{>BlR=K{;;l?PLB{p7yp8M!?UYQ}5l1Z>1}2Mu7*qb=CAc3v|BeT< z62akCX+YEI1On?ZphtEWl)CN>AA~wS%C0AZV)Hh1^9uUu)BuSO9%f%KDEdEN^_b48 zng4C%`f^5+kT*|9uqcKXHfms*+OY=u9tDt9li8y|p%iJOn!fQd@jx_RJmz16bio89 zb&SWlmIiKg*c`_ZUSzrb<}~*%^K3`mPn6ZorI6pMiy1>89(Ku@)bV5f+jO20#U6fG z4GXD{nY0fz)G1GPVY9Fxn}&YIVVd;mDK)_^fVur_B@N+t2tjOTq zPU+u&6pU-e$UItHHY0lVZ4z}X&>kV?&6XDaZA&Ad{Ys;w2VMP$h5sV}^EVXpHwyEw zkem|iF3VuaYqrkN+PaW=YbNj?x5CvjH_@k=?16owbz^w2JX}{57y5ia4%o7c&A!b3 zHl1L)cW%Hr{ve#FRhZ<>b2rYT`r<@g**&==6IC&vJ#Jd&BZuFubE7VA3IG}OE%J_eTMFrj!cMA z`2Nn4+#)oDz{1olGH8l4#p9)CBsLY9Vd${nuEL=!VpUGn3X|cKzif1IpID*G^cRgR z#&x+%+a(uYRdCD8iX7}$KqH&*w%6fXN40fhFy=pS`>({9e3Z=-zACeDuXKqs9mxCC zcbt-7FKidKm%>j_u+59`%jCygrV<|zpr+i;w&rQr;Ur9&E~eFJ z;ymbDIWG)7XQeON(M4cX(fsU;Ijo^-KJ4YWl+MLMEu+97$7eCpw((cib%-TIRzP_B z@FA^R6GxxL$dgRGe~se7_&`;o$&u~0IREagQjUe1oR+wFH? z^`@FP>%1(i8C9Q7n>3{o7-cpb&{f@j+op^dWldxSwrUY>@J-l6Cl4l~iIV^&i{2!w zlFZo2Wfd63yva%t{sGrVzWR@te(or^Rql?&JP&~ccMtlViLob$92JB8rOtu&WJYgc zG?@R0z;uB(Xhi=P8cmD0Gu)v1;F&=*wgHa_XO!WQMInr7LY7Y5BAQ;IwLMbZ4+>+l zo_9S#SEeku5PfQ|7pE`iOCLp)7O8~vE;!fi_WBZt_=OSib{+Ps(M))|`r4WjnEff~ zxF^D=AMHMZalSC$pfdaq#Hj7Py|KiGIzbB)z0h_a9ZQcXdym7mx*v7_5s`%c>!gjK zS7T@fOrUO{R0aKH{IG`;?$siO%8Q%FV|{1Bq8Eq9FgW(ofOC~MBpB}8?ak3+K>4=e zSB<7qH7ovejv@bFv;xDRA*ylho_<82XCutZ0n*~oC}4SnJIT~U4Q|MjlRChjY^v=sRD-f?}3AJ&Ozm8Hm~>M zxRx*p|KahHbAaD)>UDV_+g>NzO3#3GV#6=H!kJ3-!-3y>qEpgqZ{9Cd0Rr;r4R3v+ zD4s%&-p;}OB!e4V%}}h5P(zw-Alw{*#uOiN)WKxhY7To5fN5I12FCd97ka;GSq02u z_D`w>G)y;bdK}+~<2x_6gr_ATfbWiIYcz5<-=2COhd&Xpw%)PD96^Kl4HkyFG5S}p z*}ynuopniMx~#K1SmO@ICEkAg<{2PAK}HD%2GXPA29mq4ADAc1bXUR%HxBU;y#Ze5t&K$+Y z6J$lSGrWW*WrW;q0^EDL{FP4(1V5i#bX0}yi?6T+eln@YkMpS}RR3V>z5miO@I~b$ z_h$?IoY}e>H=5NT{gW^MWmxR|r$6-c<+ZY%n}&On->P$e%j>tNN0Sm3jN0{XrsXVEwY7BK!Y8&Iz;w58&CY~P4PA*JTV1tpWK^S)u*Hus~;oV z=k9J(b?h_Gw?nfkO@24KkC`*hDckJ?KSN@(+JWy;7BeA_OIEEENsSya*D2<_Yi=v0 zQ&THasMP5$W~j0e>yUNQX>gf@zY;#*l8hu%q}*DuK{%zgT>UXiPLGCE5(ueMqV+9n zBHfC8FDB6Vm{a~d23aXh7Pm9NE24p)riS14<>^XabB(rshRJRwY#vn@pq5I8_q?7f z3eW0_+wH~?J_`wjRsI9p~&p6ie9)sP&p74_W{4MLHA0P{$eAhYZ+IIwbsC{$Y zRZ$Ppq($6o76)3HZH~uWS?q|&L!&RD()drGl?*pJ~(L9loD$M>NVbaxiFQ2n|sz5R0H)WLf%;8_Kw#d4iVA;p%odv0?zCIej^0%<|Z@ANFBPwXsHa*R$Ltf4QJ}_9MEb@$e-# z9e&l0I)?9O5G1vA{RhB!r@7O*fBBFx|@-pf~ zL_2>F5$)h2*@2&&sCpKHuS5zm=QZy|P4+sS3;MFXXJ$Xy4o~JuiHnCXo=?*ixjYH zMa6dT^YiX35+YZ9++{1_)6Lm|YCktu*Jsb4-xrU0{P;qdIbzPGpZyuOdG}@edV7<+*m3eCetT?lWzc_hb+tRId%Mhjyd}rz%g3rJ z2L}hLR+F<=jg5_qY7Oglr{UmL`XWjIFf_>?S(08IBwgw(WcO=+O@Aj@?9( zOcI3Y&VP-U^^ZbQdht}fqCanMR5dg<=H=z#jV1Qu>Oy~Cjeep|fAsI%nf0aOc=YIz zd0n+1jg(@Nl+XI|^zzgXAzt3*4*4uIYir8X#JxtO+zPBH)%@L zU43(X*|sh9FeCHHlY{uN9}V}`e3KMzQ#&}De@#G|B%IIeMPA+_E(DT0E6T$ca1 zZEv~Vy7l{Ow3wKvsBiT^nbS1awNm@lxnWWU$v1jMS%vKSd-=@1_T-s0br;<7*qD|3 z`()GzmhFofI@#_sKR>+UH7c~~`uOX1=fbB?pRgqRs6rwl6iIUO@-jx)Evq7hY&SMH z`zzea?1t-VgHHb*-}E45qxQozt}TpfaB8b?5Fa?gV_ZYFR*aWPedzLZe}9o}e@)=Y z0zF=7c~@6gE2~L=sjbw6`R&SOYD&soyLK@%GdJMQA0F-Y?Wc{A@{mNxef%hGtywsC zOvq+(c(}mf_xEq#RI5+!e$ccx%lg4~{H>0x!_q9uQK?5>P)O@vyCxwnPN_jJ=_+jg z?F0u02fhF3#Du8BL>q41qGWGxckiAsW8#IUhwQB$$Hp2yJw!*sI6u;8v`3uz)Tzv? zd0th&Hn!HMt!gz=lo9DzViOJXhgPY}3*)Vr>a~@XSCNs&j~pp3D{G1nxWpDUH$Ojk zTe!Nq8nfwm_wJxw$)tHWri|C^*Tky&nMq0i-XkkQ_YN*w7Fq;j-k^@0LOs z?uzRc*0dw*TE;8ZKzZ#f{qe!Us?mAGGxoy^2C1x9jLgiQRlk^7ShB8_eXpu|{AEx? zOspwVNQEmbBin~uV0s4!AKzWf_~P#lA%1>-KECz2dhRf8!>sgkJ~C%92Zx^W-5t5? zb%Xzn*TaV&zQtYG%joo{Cyp&$HkIRGbFyuaCi`=5@7s6o{F=S@=g%KSql9s8&c41r zra!-Cn$~{RUkPkeEapy0c=eQa&oVO$Cp}Fq}Y0Evatnb2frK_ zv`T&TDlqUcEv?m!8#m0&J9AAgB^lmp<9}PZwU&X5{|&PYiK3k^-S*FP!y?B{La1*Rn8gU5oSqG%~75=N|u&SiSJ5JGcgWW+NdMI~0y zqD4ljkV7X65hKt1@}Hf=h%o&!N9)E20gtWKQOpJBnKPF!U&apSHh6b$yd~-9&+9Za zG}7LFgjYQ#)78zb>s7<2Po7@myu7?Si4VN?;eS_re?IxjnUVQbt9^|MBqDZ0HA_=J z#O%j@j*gxVtIsy9tg!0Jy%ffEt->|Dewh7xp2zkU!g{(T$j<-YUP$tr9cYTee*4@S8;`B5@`CD4(f*seKx*ip%3G)+|7t*^io2{qBf> z2aS1*r>Ey3I?=?WqyogOO049~9AQaGcjVcAk8QWE9sBp~LzGZZP~_dL_O)nDwzzUo zYxMlxhYueL+4fC#7i45*{rT{C&uQhTnqj*yFX%265%1Z-Y0N5S z3j2F*X-Qk_=j#0Es;eZOW>t5N(H=%)WZraxr0nb_$*+x#7(u2y^D#-+d#0u%4|nd_ zv112*pP*^lMeI2CE$;pMbM*c~_hznhaAc&Wrs7Jm*c3?dh>c^RQZ_xs2p5jCXU}30 zXHQjbZ!lRMYedXw+?J|lwXa-`o`Rw(`P+L@adG_|{t|r~8=Jn@=Xb90i-|>6 z{rWaDFxi#Ie`jUpmuG-Zwn1|Wk}Mk=o7x%UzIXRM12Dq3Y!ww1o&i{pcW&#UO2P8X zTwGi`9{&8(TV{3B%IZy4mW@BXgl2RQLgcVCQfmtPWAbAc8^ihJxWZb4H#Rm*8zaVl z|4vCv{1%Lel=jZZxMgX{u2frBcb1p;Fv+gTxaL*?Jipy?{I9ZaZ?5u5*MxHFQ5vqV zE#6u?!OI&+MovrHz;oHz*|{}YsYL$|Zr#ps!p#g(*p&RvV>{;a7o;?Hy<8?~@9b>u z_23F6L-$n^0|R=c`*TA+F);?4Ym4KpJw5t|p3Ya(7}gk{UD7%me&+OPIjzNg`}Wz} z+jr+%B)obR94td}=k{$?4|A(idl@NMF0*oSCb40!YB+P(Szo_@|2`7Lm%-jjkJ#kk z(9lEl;;+cgdThBi)?-hUhlgK{7Io-k`NY$(w)lH5BZ`Xl8%vCWG0|;(DT0=Us7>}S z63~8g<%X42gS&{+-Mf*(cLuN}x(*rMQ1uQQs-^=tS&f*aYJ-gp`DY zD&i-KhiHY*ksKAj_g39`rLy@`ON+XOh6ZYN^%dV6M?@`6dP^M^*q+xoO?Jk;ddebs zZ{~rd7DM2zIj)}KI~UxFKYwm)ij~4p`Ocmdbz93%Z}8otOfueIDJ3yuTe14Nw$_KN zrO4J$@Y5Sr8TVfwcUOz^^GZp@uAUySYE6FLvZ{HKk?|o}OSYj@^{3w**%Z>cg;r?_ zdp*e{V+~bR-zUo_sY^&mFfcGADY6T^HT2jFA)9Ly>StwPIgJWC&L((Wsc!pE*)$2` z=+|f?jR-;Oy1`k>N+MP4oQdp1M5*mOmb-sSSz-;1zPymQJJQgep<|0G4g7Tw>AAmR z6RD@%d6CJpr_9NpEI$8wUQW)PJk!Sb_;_-1auiwpI0@|0Uo*d|u-lOy@O8&S0@UHu zD@uY7Tkmw^oL>b#H0NmVrIy95oET3l9%xYyZ&D za7Ik5EO*a7A^|!ky9e7`$U?V&o)hKe;^yW)bH)mDj$E#+pwQgWky5X$r>DnJUibZb zD4Dv?#k8)tA$}&TOgXkBb}aRoD*>^w+5Fy7WOGwR{aJ>Uea+1|NJE8%h4!IHK=XB3 z#0i?UPSbsdrI-Hn>e&cx4Z@SJ6ONBIXUTifi4R8-HAp`m=6UR{fTd}rWLhO@@rmszk_D?mM@bfTJ-?wh;! zQ=1#?xU_j+*naFA(lW5BT*nHP7u z5#7opB4YIPmWfA+5fc+LGc()XT<#x=z0P#<5}vc^KDSu zSeL`jiyn%5gFJkvqz9pEKBsfWo(3SB+lj{hV1Q*@ZP~eL3J;zGQ`k5%GN16Z%;9(P z#4R6oK0Fy)YY&h?Jr-{)NI>xX+J5c;oIvUhU>!s zRCRq!N)8@45Xx=%m8ap&)jV^>5<}v#*Dn8I~2+&4=nS)BK~cIBD?kJ`5%a&y}hwCL%TCd1P%hkHXsnM({rrf+a zzO%ElZucG^WsHv{|is)8>rXW`XzH4t9K*fUcWw9RivP%t^FODk4nSN&Q4KL zky3|T6Fd!YBka{H`7eL+Dz>+P7k+QA{mupoSKJvzPC>E0Fg}kd^3_&RnC>gT$fRa$ z%q(W=bK@0*`^tHippa`3n~%YyFGx$%OE^E+^4lTe~8GHnCAuU&&n}S zpusQx0Q)wPg4UChlL$Zz_NI}MgT1|=O^>{s)$g&f$(|Cv6DMBdO*{7-vUhZ>aGdJK zH1+oMgmPU=Pri*rg{;}{zWy9sMp*c^a1@fepA6HSicCyMNIRUc^l1dhpx3Crt**Uym=YFb*?^(E`1DCi{dy@R7;%vlpfZSByT zUbz_zXAj)nTyroqG+Y{8|MW@5ks|s*O%`bl4*{xJ2$u3NWxRfU9ka5)P5-++qv-mF z9in}&Cv%;L=?AfKk}rp=XB$Y+`=6%Vcbwmx$F$)UAc@D!5G55=CI}j;zP7eDa`orW zpAR16KO$mhY;T{ht{i^35Eua4oaBi#G=ZTZLRwOa6r`f2ZaH8dccHq9+vRiH#^IA? z=|A`M@AkUU(%PDWd!;DTxw*Nm#YTf}CPvm>OSp}+;TiBfQ?GS#Pd$4Xy@(%|c2!IR z&{bQ8j(`2IsE9~ow3rU|=`3K*5DHMfZGYeQ@7jij{a?Rkff_LA#|LJOX6ExVp9++B zoa}5)xNi{LBa!VLUh5S#xGCU*PsGX|-xrws1j969;P4-;N$oEN8hO7ftrw5w}2 z1_lQY4GhHJch@?71Cb1ZvoH(Y0IDw+8A-BAtN~}p#yu{BcVnZYDfhR$y}co82P^5k zVK_4Jogp_%`$B$Md!KBb9Q7I57ZyI-renh))Nw;$dl=%#-)x^rFRBDTlR## zgj#@-s4>4mduTMFeYgtcl8%-(|H{Md;D7)!rS8wC%l@z@#vgv-<5Nq}hjkscILHD! zB%z;+(>DPUG&D3cHBCd!^$Z|Td88k$Ggo;F6I`GdFa@TnCCGv_H`UdxUEd3R`~3Oy z(sAFqyPct-Qgyq?%X?Q;NcJX_m94ML4nqDB@F;-*)|?>6kuP^~@@f(YutjP5$@IEF z?QY1_J-xkPK1oR?kg9-4+l&wG-~Xf1L(1))Ro7W=?rg}|R2IVtx6#pzzTlByuU8h)9YntBAu2-^Lv zTR$*gP}T)jsj|HZ`ZqB#gkab8sUqJgW(b=Qi@@!rRqYerY)O4-qySGrK`}+DK zM!`oHJoi#`rhv{(^_Dpae194e8u~p$ha2?c&{GN;8lAWfmQ$zh2uJnw^!TgsUYzPK zaDhzxrEh-*d5W}}rKKf=uoc&eprBTi0*>I6_;F}Kz}flpI+F$Lx-VFQCDSE8JLovH zldA=Du(SJC{kj}28lu!yXnlNBe|~1Bv&fbqQkmNk?gT;v>gAM?W^(d*83PUw?Kgl8 z0s;kiYKHNhUVoBazdj)(wEXkKW6&%^*V&7*vR-Rpmr;T-_-uo6-{;T4Nq%QnZt2EJ zD8J$XP&~oSJqc#7uV^@;^+sxy!-UET!A7dn3FnA}(dstRrP`Ay+ zj);ESOP4RdF;DUM_3;V7;V&r0pu69{e}`t?E>0TT!~jTN7s3%TCnqaw(_bMWD7f^m z$gsKe!&V@>sU_)BLVWzqn>Y9E-wy=Q53!@sFk@n7|Ni}ejn2Tcm{VweSZlC2c{jEF zG+ggsA|Mh51_zCdjA*zG^acH+qkA!aK)#INt-$V=j@icqj(CXxo8fuWa~dd4E1O?A zQN@##loaBAza&vTEnP`eR1`i(TAk9v38tXhBVMcg>+H+SI$_Woj~|c3KEfk3zTzFk z2qQ+*%taZELA9`88U$?5CFN1&br3dE zeDn)p@K zj#{#_Q2Q+|F532%UX0yZXjK6nx;^vryg)nG^1XJ3Ko&X0 zes3u5YxZ@)Y;dIxR8i8<_|uBCKq_RV1fGHhkvF+NIy$=k`|W{GK9~#kNM)6e&|^6{ zIRTbC6G%u&r+dqUs(3(fI+~lIdW_DmN=iyj4g&k8iZEgZA@MP}Ma9HqB_zy4SlBlV z+5E7NjPELl-a34()-Rw&{5(9Y?Ck37d@L-VJ35N2+)ACMB|Ww_a>wBsNH{ON6222J z&unLJzX7GhT=YlOo6O9v!sZkeh9t-MRO}hxWa#Rwd-goVf;WHJLrQONXQv(#B(bfj z)lIJ9rt@5eiC0Ld(teygvhw_6VxSwNBVJ@!Z;6Ov+kQ#NHxJMK92%m8<3T~Nt%~m$ z1pHRH81GH5y45Y!#sc=94_JtEK4) z>_0v}K0FK{_uI%iYaNL4e5MU!sPTb;&9I@U#6rP73!rf^ljpeY{+lCE;tO+ga|;Tt zRl1kUGyD4ZsA(Pj9?YfzHlA{21xg~g#urm~xm;7%i>!Z)jE~nQ3t4sEMgmeyDtBGY zg`SGS+SZnjxx1P3>c%VNOzeK-99>=ALkyDQLPBAt?$8_{QV`rHrF~P1w*S=&po9=x z|B!CEn`y55>E^S;e$^Vum*XUo)n)n$ZgpTo1_x8x+D^l+2JvWVL8^kNc_OG5^wSpp zA+#*EkT)!lz(>9?cvv;Z?{-6N8w9muFW&(4_9RQwRE(9qcrhHpeP-oIPBrp6_T*Tg zsF+x`Zb5otBD07{7g7rLnIe_;g!=MiS5ROeV^A$fUen;LL4|8t^2oxy#>Pe^C8bDy zi`-isT#IsvwSnorHQ17qgM;vvPlgd}KZ9~-t)(Z!?)(1yC;~ot)t3OnSt64D=+U&4 zlp@zvJ0BSc4hbnK%g`)F`VYqql%*|v<+_@ih-z!%H2T-X)m}W!lOAzQ*w zexM5W{gER_-Ui+Q?G8J0H9mM0by##yvgquu^%H_f4DhN zy&p30u^BA7%_r}}C^m>!gud_L5+Jmo(<;ViuPP|`+`J_PaiBhw^QadaC#N-}kK4Bi zbth5X0;uWE9o~faR;YQ%u}6h$qOP2w_NyLkily221cEUq8{6Lf`&--FH{}nPq*J&< z^YHZCRif{X>;^VQu(3`RS+=vEI+avhyaL4O82~i^-V{O*{7_dR$-AeoPm+sEnLPwD zOKABRlqDflJU9gK7-6NS`qogXRvl|a`Ctu+Rr%_%A(-Mg3V%$aBY z{-d+^U{K#UG6L5bAabD_#foa*69^7$W&6EuKodsSM%BlUkiN1E%Gt?C#+GkuP1SXD zbhNb0!G5(Xd6$~%J#_`@7I}Kh%b=io?QuwF(0NatI^|oged9))zrTv6rly6(IN0==GiR_n0W5%Y2)bm2ASUIEF zb}A9yZ?q|9;)j+uZ$fN{hVL6Jwj#j9^btJ-U%ztk^FwFu^$b8jLhy0__WFEjY3cK0 z0>?z`5(ge|Ds}$&(dz9g#tAft z@gViAULVHzElo_4GBU)_qd`jQ4~s56O@z_7_T?#f<~21nS4!>2hiZeiR|ZK17b$}> z1A~0$><^efOsbdvB&K$eHGpN~X{!hX4roRx3!&8m6o%d(e&+>}a51N>b0^;B<^66++8=F`Xp9F1{{ff-z~kR3kpt~V zfS*6Hm0VLxWtKT3jr@`lLri2OiiBR$hSs`J0Wob2rC8XFye>(UQw4iw!PlugQL!LRX%P^VftI;Pt*Iv_g1obon3jc$!(STJC8 zB|RvOzkmNWGclnsjxbTS+jK zhDJt!%+Oo#xxPNbiWr8*(s@P2eT>X(Y%o+bShlZ}IcBDpIHTkyz6uXdtG#YzrLU>^ z>CpN5`g#hIT~ysq(j`DGC0thmGB>bE@M^DgY){uh(y_NASej@fYahidg~&4x*p;B& z14g3Q?Vk@K2rQj|G?H<6vx7^stpV z8Au^gz^|WdwewdC5>KD2H_nZZXKHMUeDUHdL~OVhv5}Dk`Hmnj0I1kgOnunPxR93^ z|CBpW9$j45jg1#R9M#2TJjs^G#&#Yg{biJ&Wal=MZqXe7i%WJKcQq<_b5Lqy_Y=oH4A}KwTmC z83Nu!Y7@Ob$J{*0ybUV@B@?X@c6aXhprfaL7@EIbNl$xw2t6HLPB>yBDryoT*BkPJ z|DpHBJer~|GrV(Ntn2HGAsZMQgNo4K<3UMD`L_R=0N@-dcC!1`QrzoqNe^~wYs#HF zceJ9UVPjObN+9XE&sNh|4bP)#ZE!H;Z0ir{wh#^-7!vN_{=lK2=IE8=r3#<;M4dF@ z%`c*UtelF9syStHnL$FL{O#MfxF}%G3MfCIdF#8IluxTH;D$W-XD54+Y3P8DdR2YB zUwKCiM1#;!?WH3EwF&GV`ueo~U+y|NWnY=v+uYiU6rx99_QNx$$ZKKU<0}F`#HKIU z1bq1C&)4@zUc7jLY#+3#oy4i-&7#u?3k_t!ZKUBSQetjwAe3=1UL8f0Z~dH`yY(Wj zoZ(tO{wN;0fcb8~ZOH_h(Mv$$uGabD%jadnR9D;Fm#5Nf<9yXv! zpVQ>O)*h#oL#vfOCkSUsIsEJsiRY-=r~>LCA_4*-(SC1^>`g5VsLy-_UN;bLfRM2N zN2z*0BOhO0Vxo*&V-pbR*f&N9D*N~Q!AY~mN^t7tpCI&fWW&Kij>k&l>(8%DHgY0FQv}*@?Nd5-U9W)D$%g;ir6kIrpc0eFubgG4hg$V(nq5(K}nN90zfn|Hi-BE~LN4-|T zWdSv>ELMdnCc!=@_p3(v+x#g(zeGmOsT+*#91}w@F75P+FSBrPaRL4Mj>fTDD_n>$ z6hP|t_x07q_0UdS*C&K#oSq1QTM$o}!|FkKA+E@ggri9cIO_7AJZdT`#DVgrsPiP* zVd)w)026%ZxgiBuT@Jss9j^pN{6!~~n@f6ddtLT#Bg3MiVLCj?K%e1-H2{=h0@1+@ zXKm|et=bzEgc8~bq;7olgzyu7*>Sio1SaW0vF9KOsKZbmE-(c)pk&aA$Wlg>$}q8U zahZC2=}<+K&Psv4l$?$lfw%$`kKw0|)l`wjpB6lGW)k;7Ed0nd@$+hjcHr9)!QxiT zgx)LNAS@{E4<75ZFxGr*B+YycV3f>1g(}8=(U3l8^Pf@0BfvC&UnN4SE1_qC%$*ZE5vrr__ z71)KYXBj4Zb;147ToqC$esAVPw71F4oADVLXl6AtGJ+-_3(KL|He`H!+@8piaBoG$ zk+0Dl)PCch90!#P1MmUznR#-G0O9}tN|J#rv5Fhq5w zAt0@+&iw0lq74fAlAsxYOV_xVFOm-sF+oeWun@t}?0#pPzBm?EFCZvLO|lCejtF!u z{o+CBtq@-G3Ja-yWFW~QiR+}#pln~$*Oy^x7V3A!REj!IUWrpR$Axecu%tY*H$4$% zrly7F&C(~xNOnEKymN3B#}Udx3nU4Y0Pz2N5UmJonokT4`{=Jzo2|MHScUIChn;trv|9^z=4h=~h;kQ=&t9)6&DE5j~LPN>o`B589!1 z#_FLj1#1`EHZIOyNO6qfn*%9pDeJB(9;m}N7&u^9R-_m~cvg(fSB42p8u{y6t)Al4 zLv~hH_#F$sDI8E>00c;$d?W}PSq1Uw8u3yRXcm7X_@cW3#0?rW25$r9c}c z9^Ov9_LXtwjPw@N->Jz-bV!deTWDnlHjNTGmL?6L@wUQ@2J3(lP+k3ja{ac}efD5_ z28QXWsm9THC~?RSpnwJ?cEPC;U1^=WdADP_YGXu`oK$BUMIoP{v_nCHjwI$dnQD0~ zXF!(&4i0{5Boy)^D|ldE_0~M%2z!fs-xD-~qaY{yK*UF<3R)2a1qBIj73;(C3t-nj z4PWi{n;kKQQJ0mKWq)T`a zBe}#t_MK33!9ypuH%Iv#ad!xF8=H|YyB*qTK^g#E?8VIs0&0yhUNn37YOwH!g@g?M z`V|-x^Yu_hJN2OyLAMb|UPB+B?1xIzoh6@1Nlrd6I!Z%M9v@N;?f)*~RBQDq%gO>e zHi?MRgU+2$m8yFe4{3>pp5CD3b`%-ph&<;-%gm>P1s{Ok)81!5|=cJjgY zKBX^jcWBZqwqE#vMv7SmukBm<`uh0}I%zB!*L0p&R(dQ_o12&jpz~L;602WMe%D)y zIO(vGfGS#uKuOU}^XAPP9GuaMJKXX*6;hdRMzE_mij*&3%3gwCpHNSGeo8&k{rulk zLn|BC+Xx4r{2mqeh$L>+HS)~prk~zXLIEhX_>6Rwl+;UIUF}3 z9F`)IWI)fCu~sSSY5eT$b^ZMe^<$4lzFEDF|7QC45BWE% z;Gxk`oNH+z2|B^lK}PpRdi%qA&=lavv7<-#K9SD9_Kh~;peAMafxmxtL@1SX{`&T+ zYcJu3{~w2(2ygj+=?Yl$KD>&~7+?hpGqW$hZoi+IwI8}5AULZ! z20;k~LP8VQGBnD0Sa-E@k88&4J1R-xcQ@ zB9VaztPZ$qobK<5F3mFkBY{p+-3~}M=t|@)V*}X%=tax)?81V6iJghN`_|(KC?(e4H)fh!ypwCaTLhb%8Gv9Lh1<;F&iz_L)50wj@V{&2?f1m!K;&4L&jjexmlD^Aq zq2^cfGSPNfm9nxhd1k#rE0{yTu~s+l-CF^NjE;%|JE5YaM6^KoF)}tLoHzsevgyuO za0>_AL_^=gEYwv@!Y7-3BqXmy9oQL};ZX7L%%sG+Prw?2Lyl@%jGk32XFbV2Hb|16R$_1em3q%aNlQ~R zaYggiVUgG-Lh~T>e5~wM__#1LpL%(8!RM0j2b}Ef7nYZy ziEBwY9#lwb85KGohq+TG=pH)R()Lz2l71-G`7EO5pxD3(=l|TA|vC$y%!ejrM)o`kh&NN z5)qI*l&TT*h;Zo_6Wm_WPaBvjcm>PL%SE}l=uwe{3JRu@KKPoDD_%!j-Ftw&yg+*e zxelvC=)+`a{n3P{MzeHVd%GLNIb?y{ygZb6z%KgZ$8j#<>Nwpd($&?gSCJe6@JN+l zYbq-$GIE1Ry+1B!Y4xC)ZsSd?0v>OCAs1b`exGKWQVC5Ld1PfOf@kP=po z=oUwG`5tJQ_YDdCJVQt3RZBMAS4j(fG(UBwDOL)HH6?)?v^ zblyW>>Bzr-6jPn^MCN&>A|;%tscy@hd^#Vh}; zkMZo(I}A7veyRV@QP_fWCtcLiqMCn^as1;?M&38bx9W1@(Z2_1EuU~S+j>lSHjP3%6`Hq>-Qsc49gNz65w*q#2*<(kLXIi|Ks z&MR*nEtuQ2{OO2|5egAL|NWI{`s9Uky{GEkYxhHyNGt}-na&QeCvWqW@EMA=r)&Rv{`mEXubb?iKt1*( z59J`S!+%dJpF60JML1)UfNnm0;QapTo{=s$t_N?3{+r z4|$ShWxa?@;$1xxs(1e1qtOD&X;CFJ%=3;dV$$-*pE!_Gxe5OF&>HPVZs`6np^=?> zck!t=X|LlT%1Lh5#1E2MGu{%4e_I*bPMFaryXB4A=o;`wzWg_Fn>?P|?md~kdFkcJ zzlXISM8s=;Z4jH4x0t0|v+whfOWHQjuI`mRM{+;>RA|jmZ2BXH-T%(;3hRH@%pQ5y zlwagegedyi`smDfJrjqi`Y*etyfQz1mh8w_?NCGgvE_vHNaye)s<=tBs`lSg$lc(c*( zf_G-k>n9oE>T6O#Vz-vYT(@6Q>`J}mlh2RB+LHpOTDA;)*#wy$D^Yp-H z!Oa?~{VrKx_h-b}IcxQ573T-rBvW4tQpc{$0(~dMOpphap#@g zXIq~=;*JXWlHW#MOxTtM3hh$k|46#%#@UWcD;XUvThaPU6npCqXB<5pqKEVuD5V#Pl+^@ajtR6={Z!jo-5; zmkiM+{iiE0B|4h!X_bicLh3*=jz0m5M@B~86^;TfpXfFMU=CtY3a)cSZAE9ofddC< z>F7Mx##1J`Y0f?WPiojvWDx5(HofR?zp1USEs(Z*dFJQ5>KRU@CT%lpJDMxHtMG=17%(YcAd* zs`eU86x8V7mpILLQd(Z|j|->v$lVA7 z?MuH5E?l+I{ygc!!#iYYl2z?@nV0cXW6LYDmbPY3GV+x3GF+S?rxR%cFhJ&g9Nca* zg&vKS^intf_PIRSPXk%0XfhdUE;MYy2|W`b^jHE&;B*+wy;L+~!STZZrjpoL1~`hn zrHlB)1I?*FFv=j#;_!yfWrD~J^)1KfX-di{jP(li9m2zCQ3Agrw8q3X;e!>>1*U`s zfc8T)=fwC)ci$%Ue?mIlbZ+hk&c!B#2S)oaf)%Jl9$p>gFMlKWvE0k9*CpfviN$pe zX3wFDu+SPssRdu(=ERdG(LjGC?Jrof-k!QY5|(A^8K5pgaYwwu>gQKR<368zmCg(+V)+rTHNW;Kf2}>knnOMl zArh%w`q6BVk2=QrWz2SE#t+$=$lk^aRl7?hFBRlx+z;0}M{;OG1T_<6r?!95a- zl8Mj&`Fg5LNesp9I%RFCf_DWajpl5Zsla1D%$nvI)Bo62!Vh&5AP4%gErY;UzpZ+gi zhK~*jZEWJXEH7UJp(7H#Y{9{a#cUE1z3|rDEUm4TD2{s7*4O_=&tzoeamGYk$ixpe z$A9ykV5TjV6QZJP6w`+-!^FC1rR}w>pZk{2F7aL+S{GlUMJ#fHd`yHDR1P^AH`3_Vp{r%w{d;~t+`_pU+1>1f3>f3d}pzLYmjDQXnm&!QOT|4f|qWId#J z9TY3vjafNDQ}?cofF`E7q*Jcc^S1HPri-PbC7ySg*A#;+yQ976*s21|#_<~isZuv~ zA2R7P2ki6wM1E`ucf6Omrlia=P8M&ZIrj&yHC6g6E=JqE3hAdhjMUTu2U;VJ1iIY6 z-@J$a0Zs$)t`lrr7&5FI9bu6WFF?QvhvF*s!;r#9Tc86K%nGWe1-erT3+o z0|?YrqvdNaW2QP9G{UMx)<+KO7`JCe`WLcmu$#FX-Vr%jDZ^Ix6I^0I>DWezKxRa% z>0jPwV6&&DHiWF+i?edWlVdYY?OOD!k$t{N8rfgSq-B>^+2yX)%Sgti^QS~(Y<-GZ>YT7KNavQ^Ttvo+BF`L6LTMM)XZ6udM zGHzrR(~qz0*H(H~)5Q_>f?3U(J*+-tj&L#&yI#C+JDaf|U1V?_{&W}AfBwvJ^5kQs z6#u{HYSBIdhi?kaN9aJ|0lfl`MRH)Lt_Q8GPZU^PDEHTP+*cr2!s zlb*uiM`sUi(-(Fq(e;kb zke&xOEce)UhqwtNdGp~Q1W=H0CeM7!_6eM$oRp8otUy$O2G@eX6NKu9CJ;;XD5Kt_ zWUlSh+%49suh!*Y)_&&jqR%!@e0=(yulkLvW)`VTB~fvHfnt%fQOi)E{$^54q;d{a4b!6%$8Gf{p9`b?b`s^TF(IV zcL78YK50S;jplF~T^7dhIX~#>fO-wDy+sTK%yNO$$;nCD8=&Ly`3bei(w%t2> z^v72%4!=e<-K$p=I4&L08f#)JD5!a<{b%>5@~@}1&j^p*{Cax(jEbg1gi|7S?k7(& zAr2$K>K7^pibZ!<$xhB>b0ctY?QNQ1`d&W`~pgxH(F{s3iN|$R8kG2Gz%7RI3jM+S+@n zC~d|4-0l>cf1g@+cU#JAslhnZI9F+jY{x%4Jl~Qq`4$tklsZ)Pb;p1I-e+0Rr?uwdKUgxtL_YhHeiI-?Hg()7eENNvB6x&&v%NELdKy>i5ZJex# zmadkhoaT<7wH{HWHyp1D5({c=Dpm`nM16db9u&L(gaUc^0j|`FBY}E74|7!cRX*s= zv6AQSyJ@!BMPWh1A;)#;;moBQ zJV6H(Z{Xq zMG$es=Bnr1#~b{E$D&dKa;xqToj6^d$8Y-R(1~-}Rc6_?pYV16+RI)uiO~cVqf2Db;?Zs`TpexP`U7L=E z@{A#`W5S3F^iy7z>UeqCSmN<9_ZDr7<)q3~UPNV>9RM`N{a`O&1+18yIK{duMo&RD-#6#3`6 z@)KpYpdCc#$s8^oBO1#wJy%TrOr~GThM4FeXRpEQP`*$hqd3-y#7j+q7o_DM%hv2w z&url8P;pHqJjcgV%i-``Qo`Sljhz)*lo2Wgf>%kOixMWa1q z(~^IjS8S)+cG{_y-VNuyLmD7+b+npR#F(E+MdjDIQ#Cgf?+yjM36!_^Q}=T7l1n88 z(TL8`?)7L>od>h&L6sKoiIr}WR(Aa%tv<~g?zs{xMr~{n;}hnfO{H4Yc0^!mCl~W_ z#EI>)qOva|+~3)Yq+A=*7?*7&MT@fQm#Qy@JZpNiPhs)?oOGkGZO{n21W^>-Z1K(; z(Y|badF#?+Um{HE8r*dh#O1!;I23g2r#J26+Py3d zwYOHO#V_kD)96J3%XS~{cRc}nh)m5)4|V5L9a@^6QF7l_FcDmNC`sv>HG)5t!wj=Gj+HYg%-v7vR;~-i3Vfd z?}+~wOF$>9k_PEcfrEsEfOLKPz4yEP zkbiQ{6Z6chwPua11x({C*L*$mgt+x1)TzbJ?7t*V$CguVg2uYj)(Xr*`#lbHTf=>7-TzHwK&b26!KPg*$V>&^q{f48?(UxOhDWGMDL;AGROJUi zY&ee@pPII@u+m`w37Gpb96f@KR)KndVj=rLdK~p=`Fl(Nd+<&HK$ew{6rJ!LOGs~ISSK12MTTkvsWsd)~MC;5{@P* z+9dy;VpxFh)%zMLECI!gUMXBVB14nCgw3{7{j5e~0)BNh=R1}y3%)jj66#fHX-}up za=Rf6(C|aR_37>*eR?`|9+ERzoqL){)c~ed6KfL{h5AOq&x7`(N%>`^Hr1Vgka&T} zl~S{UDlRS%hEyG)k%@)(DT47^t;JJA(CO&kFg&5in8Rzx@DV@!lQ0Ca(|aM`oMgn1 zAS7AV&!^JTUDOW}c(Jh>8`0jJ%1wmI0srQ>cV2~5z&9zd8gZ4P10q6<^8;cqZa&%O z1`R8P^%BO}xEju;XK^*@d>Qc*hr+1!9aQ8-GI5$NKn0c{mi|zJDh%*FZWsMF)w4=H zG*3NWO&?t0vcR7!VyRR#DVk0*$p0o!%ca-^xLW%dN{QTsr(}7c7lcV?Yf4mQ=~Zcr zvYhsYqVZf)(;sBUeWA;&ME8KcRDI_h`gY?HNyU+_IjdQN6oUI{ z_X~H2twBAyDx8Nw&(}cWp>YAF^mPG-?e7NZ;6cHN8{tSZgiCoQv|F>M)i2hk^o$Fa z73w^9Gw7Ln_XXenZ39k@cDO=_l&jeAHX5Z9Gq*IvgL{s#NueZ7$&!gV*7DQs0sW?3 zfi412nW+G0dc$AIHnJvWV9Bhpt=YbSJ0X6P!pIvZ$JkyljE^tgfpGpO_xW6g8I0vx z3drE0t<)(CQk;0@LxmbCt{*4#Hrh?!NtyWHXDfD`ar<@tB&)JvxltR>!>?lknUxp- zd*Mekz-Cw$2GoIpts~ejKNv|M#WB%A`oIsp_+z`XF+Tv_tr4H)fre%$7Hs|jojOiA zO=)*3)u12pF`q@x&fr4YQv3khGjBC-D9wseX5(RiE97=%(T&Gs-i{Cd3zePKYc1x4 zI)i)@8A>ENbsj#dVN*yHw^B)|b2@6TxC^*?$rh&{-s5gv(Wv zhS!mbyM8l%#niN8J`vlV(G_$yOR&h>1OD3YSwG%Jbx$g(pH<{3nti}1Hn@N@wJvWS zD#MgE@0g536(XzV^{DvzF15>zjbeim$nkseV0EI6!wU84r&iuBXUV20N2}6_10O7D>$(><5ywg zx-zS}&s$J9pw(JtW{gN0_&b=YAfq5sso?xJWU}@H0E|I%Nv`Wf$0sw>5hB2MD4k_hvQX%TqsDR9n4PprxPe1*4 zEn5h$A^_7=`If3ppQ0tRD~RFzp~mYyDdi0ZDSn8yo6Qn~cXq6%1WP6F=B(lOs!fJ0 zb695WoH9?8S{~i&V6{ZKHv>ofR>1TsC5<6m2)JXlEH&^Ul_X!LQ6t?j@Don!6sI9H z47vZap#L(njToMdZ~rwv3=QL-0yjA_6%gaMCfajUkh~(;<6t%wTkk=FX-BdcXZVjY zUcxU!ML7LMI)|5UfnQneJIZoCQ%1stgg``=#WsU%zX&zes%^|;Pay*Ew^&;1>z^3l z4XykTL5eV~HwEcQqYnj?x|T_^5|(I6Glc)~-Ki%ars&xhu?ODxqA8B_dMfZ;ipyf! zGc+{Nt~y@<{U>oVL_*zTtH82$f0$7n^Kh3J`xW`hJkNq3a5MwtS(|A zIm#>e+s|Xv1I>Cc_Z(WAt}_>bGSz=LAoKv=Q?+iKlh<;zQk|_yw1)h%yFf^I)2mBn z3<|mL z2lFf=Z@+YsQdqNn#|?mlabUq#;ve?zw6$38rc8xtU+f=H=%;E8N~?6$h^Vm_K4hRQ{? zrQEBuI}Rgd+2V${C~DJBS_(BNQ7SYl0EFbV)VY>xK^(tG`TyGsJA%W_MCU6idWc^b zDey&;20-T{5{}j0>5}R-Ey-4)oLT^GVQ4??#+BIm(OeU_iOVS$m!qsYX$5(OGRd@?p8j4OU z!5q7>k@YEMboY<-(_zh^ZCUVo9bfTRXBuM3SIOK%^P0>%;ketjRe`-IfQhl@(~nGR zxZcu@>muuYg!86cVxYvZX$MV4mCPVp?Ncgij1pIwheKm|e6hr0!1G|5Q zP{Gix{l~007pE|sh3a^2TVPFZ6YikEFP1AW~mVGF&-uzVe;W+>HMc^sC}DYmyu$DczS{z74=umVGgegV{RFH$W>4Sl0niWlV9_dNN%@61@x z$kg=7E15bTDVx1GC7VIqxJ>O}0Wuk72wUZ}tALEVxl@ojFpSDl=E*QhX6khDyhEKi z$jjkGt3bPe&EBY_i5}J)aX1wSD%+lX$h|fmaSk^N0pCJ6U{3J@0~BAfR51qls@z~} zOXYa!%oM2{6MDe)W}%Yp>Y1~FPhQz+=S4+t{ zBocGel60eyf$yDb;aMQqFD&;|N;=$fc6_{i&N1%jDNzmFuh)+dBP9cp;mi$fbo)Ek z<&bY@lwz?QoeAW+G~O|3tRjGU4)27>2PDO@8XmShP;+pqu)d$8jb~&;NOiEmN9g?$K~sVl z;MG%PTHkks(d}0D4(N7Q5(eh+?7;UHH>Qr--%pP|+=1mI(2B5q*3*|cA!(=hNuRZw z^71VYE_PD$}H>flzJs^w#~?oknY)-fed(jRFATcn*L33c&5d4BWOvFI?%np-OGO%Yh^WeYX58hOv)amX1_Qsqz{rE@VVN2pelvk@on3 zQb${yjAq!1Zi#d@@eKZ!RGsf9Tgnf$N9GEIdm|my-KMY|?b+?mmam>V%9;US5-b&~ zwdU{_zxq;*LFY)e@|N{s^h!s^n83f>k>42KWu504E>buXV^m@SvIt$_#KI}h926Z6 z_IOd#VL5nnL4JyJ!ptQc{cduE6kZv^p{^b*Z>5$jcX%M5mDLs|Fi&q*=|_Ub@I_Z zTU6$3U1cxrtaMMkShHFDmaez+OQJ~rUdB8tH{dixi8uUINer0U>@z&A4voe(jK@^H z9*niRJ6?(Xg8Xv%q|qnm7*tGNESAj4$RuR`&CZR7rJM}4U7wmVRBm?e z#1ip*iQI)9(zt}Jv&vHDk?EQ_65=}!8iA-46^)=9>SUI~Fx6PWxM*3tHvlzwzGnc6l+f^%I9Lp`cl zZPiVu{{2-JMn|@~=VGoy z%tpBE-$Ds}SC3`>fH7xsrHOpVWS-oFSMiq>SN(g&B!w>*&<)hfH9=mmKGoa1H^A5Y ztM#Hn{6Bk%{9*0)XmJdWaPrt)Ma0gUJ`-HXDMvr1471+SFQ1I`rbvc~Feb@zQU^WkGW>Pat2rfmBtm3^1sUYe7(GywY!PZzmXl_4d3A1LhLA z-tR&5KWZXrXbtO_}BMtdPsB|RzlOtvZzRkhZ02#gQ zv3>8C-^u^d7aM@Q1o^U7e4JV2>o_GAnVj!FfT?zRbA_srPLcT6OHEN?FnYKvl$?86 zq+{ATJebn>1x$k|j_q3X!Hw`du8CcdJz>hMF|IcxOy z2R#}8y(i)qK}s{`NqjOC$v21>VnQOn3Z!5j*^~%J1oJ(rh1$N^iq z^RYBqS1Isud^2KOtXT@n94X+qDBd6-{h>Xg)u^-%@5Gfq*=S@GV=*yem zl7Rqt`oS)r=sj`s3!-Wy{E#BY-IQx#`(T+WYKiJktz7D(%}fynfq~g zQp>*RbR7-WHj&=VU}(NDUdOTH)C44daV^drw|xa5hl$xi;LK{+2*piS$I=JE#|eCH z#rPIEKCoU2ACQuGAz9&su`0>*r`)VY-mddRZiLFkBrBp6>2eP+3%b+D*1QHvMJJZO zf?(18Qpy#TNrIZTT+X%)pfNM)M8b^D5)eeF9c;zj$;b`EzRIe=zp= z)D$zX{adf#TasGRf(}cXpD;J707}PquD)T|V4~q4@VW2c<;#wXAGj3`RNG@U4b&Vn zaj0^beQ_gjd4{=C3eWQ2-oK62BB)Tic6M{31lSX!$`D6w2*3JSyWuXK z9_KG^i^IY!rE23=fPrz@rJT6|uy@gzu%-aLUr-cBhQlPG^ zIV9&$S62fWIEhxmIj7yQJLYyHuBLgf$2iZBs>B7~i?1&s#Y7qO$RAfg#z7tVd0nyB zdGH7WQ(zbw{&x+Q6sIIa^+B8LK{onnCnt+}sW9&wKW z4yC<+=FpC8QYja{L>gnq59BS#aJMH&GA&Jhwx2U%W6>CY?U3=2cZ#da+fdU1 z{hod!$S+N;(bDbJ>BG3%C;c3I!`q*Dp8W(8G-mCI%>6RwEw?xNng(gL$$DM+xSwk7 zv_`$bwK;B}B;(hSa#n>4Nf(uUK2OI6bom}WP!2>cxmZV% z6r%35BAiMig4<45+QZFCu(x96N$u`gDz!gn3uisQsVA&ZDm$q}UC?$Z+d6e2erKIc z=nCKK*`VNJR|AC5JO6g|f)5GqFnhhX$d-kztL-Ai=xP~KHq}w4rw}!=n?E({SEwoB zVG#J_73^2?YePHNfu$-zo>*zZ6}9?A5Y&M}_zg9=oYzXbbv5!*1s}KLD0LJ);d0I1 z#%ysa*wsdJ%85U)$B^=urr=Zac6vFlY+f$Dr=Qr$Ke4VGT)}}~R@7InWbVdSemlH7 z`xtP(@b@i)Y*5hr*F|ea+K>Y!N-5&)QbZdtZqY<|CAr3te(GZv$L}wGOkJh|qaPHD ze|UQ0;9sO_YpP6~Azcc^{#mt91Ok}0k0)O#Rvfgnc%^wqX;bH=$i%8qf5Ul}$`%RB zcE+}glt_e`8a5>=$C0Y(2$h4v!>o5#aJ?-xHMnvHIEHHQyI>{$o|CkviSB-!?Pph4 zF+9%eDR|fRU!{=}bmB+h*)~#SOv=H_xG_LH&gf?dOz3qK_-C>2nxa$H5730>ElT&( zu;SVNNHuz;wPX|T2TU<+igj>k4oZXy)aZ}O<$B2o2$eS=2^cDRDpWX7m%>rWCzgp4 z6s!FDWAd;pNVbDVe5XKEQSgT(mre!T4z+S+T9+EmUc^~g8SuT_P_}x35v~IRSn#OHjcZ`TTVZ8UgQzF6W-?s@waThB3w~^#PJ&{zYjR^N0!Z&_64}jG z9(YRc=xt~=->JSJ(MJaRx#O-??A?Y`&h4m;(6mhS9JC}PekY(=#DSDs>Z?7cn@zQ0 zW8pzOW7(-89Bp8#7CTtj5)Foqm2sMBi>qwTj$)jhZikY>kA#9wqt8W*(kST2A)H+o z#7SrFmmhVwlRKAqJj#Y=I1cQ0RvNBfQ4imf_CoqpGQmV1ERh8TWy#xvWM+|WR-gVO z3nA@{Xe}o~qB~?Bag3IU#VA2Ja)bOekjXn zdPNi#iN3YsZyvZLT* z3#2MZ&k?6$eXe}LqP-|tK0_Dod}lT6q%;!iYWb|oj~LJ-;KaqZ#ee!c@7km$yn~Wz ztA(F>9GVnReB9Ih_6*B)_82~7EKH~?gZd9k776Q^jMcvO=JJ(Y(;o5En(nU-8 zWa7UaA>9PN_H-k-HLu}h))J$-J7<{repKp58adPb`#O)fvCAv7KLU7MBZq-GWR-) zh<=wPj>K=;D|JXhjRwn>rGxN^n(?li)xmEclj#raE16B|U@?s0l}OKQZ}YTF4Gbhy zZJBr5ums?Km9$xDp5A4jv3^r9mE9j9V;jy)d;a&1{#C@k+jc#YnkqP;NdodzrS7rI z$coKRw!QvW>GC5`w+7rF~#oOfu#3OYjR&68~ zBiFyeC4m^N-VvxfH;Tmd5qv5!)zZRo1K%c16#iv4$@zdByZzh2#!;uB zV)4pk{-^CE$(rQO>jDnQ*4+%|hiBAN`bn0BQ+^v^u46DR^d?qOfN~NDquFKnb6sgB z#jjniLQa(Pk)xs20iC5)GwZjFfF52Z-u8li<2XOCiCl0O}6t~S?^4=29 z&FXQL9uJ>+fhYAfY0xMA^P%k^pw-`(>;Xzu$!8zqTRL$H!jP4CoI`CqzX;uLe?S=f zQh(FGswQ6%rlRZP)ke47Upc~%Dd5nP_?^t~X9Cp2{}0nmCYSh8e8{a?LjPO>y#!y{5wQJ~C;^{O*vZHy>2ILa2^(Xf&Vr~r@vhP^`LDcGGlV!?(^x!U z*1LnET;ya!Y)@~Z6QbEJ-3>}P@53;`zT|bhN+#;hgXBI#7cb) z_2?z&Qb2Yn$jAP+2_X>7Y(_L9zTnD z`%Q(dpx@2xkSsUhBNH?zzjy~^;4`tV@}oK}z#=e!v#tmvtQ76husqgG9$T5;#QDNQ z1q$yohz3VGL3*)4xLOcghF}I%fL0)%l%L8@05OHDAkbdZhI*DPHB?TT&*B1a zy5rkX@>Fmecnl!MA!YuA2vKmyXz4)Xcb-dh+! zeaNzeQT273L{_?gk-r3;wKJDGj|MTbJ7Y$i;vNvHA)ens60Vl*i5X+JH5)cX!UEuq-b%xw}++ zS&5EXK5&F_z5K`>e&mDl>-ONi-T7;#eC-jMe@5XxYm+Et+UhveYM&_OaeUWi!i}wV z(G-CYno%ig!c93fA4Z6S(!V3xpLCxh0`Z5zB)|0Ix@~bxI=#$M6))yh;nClsQgnY> zp$Yd!3WR}O1Xi{&Xag1GS`n@nglXrEbN_xR6DzEvPj-yq9tBgLuFlej!b$9}%z0Bu zg+|?t?x6Zfr-*;r>18}rs zlByJW^w4z5cS;*gX5IhLYgDyS_1ZIquHI>ScRfMTaILW$S6Mv-(?{FgCu#^=}H2xn&L&WU#t2jqN~?k zeNmqYZ{Ew(A_`zLyd)WCZjnVXSSF@hb#6!Hl|wIxaqsSY>2ex$F#sNu5wfV@M`g`L z{^u@z!3ppR%(-BTSgG54#1|nmkh1ZX5gG>te4+5;HQdIV0jZAj=;qRIwggM~19Cop zsy}&OW({Bp4opoM; zkpOVD`aNsJ*u;t@Q((;t8HGJ5?G9!)F2xLuJQ*!k(@!KY&{~EZVPkoLjKY?oRl@i6 zf1j~_!#xlJnsFxds;{F0B$d91i8-o{k9(|t0)f6SVL}mqDQ1Rw$)SZc7Y$0Ji=l7f z6|pOb({Mp_$`2?16(FBD(ih=;lz3#0t}dkSl}naFXO9w*1vk&mT>K5k7(3R$p_q&Nai!#MY^yQ92fIDL}B1MugOP4 z4|of<&h}fTy3D**1f4#;Tw8a1lyD5bB_6YYzNeCRnGa= z{a5s{fA1&=K!yJ0`n{_VLT`5mJ)6Df;oR6`*&iDthO25w( zf&`UerlLfKr#I+%e=Qeh+7zPqO~#$-(EW1r(=04+NI>KJkV&O zv|4}@O8y%~s?1>d&TbNVCg_qPj|_-;E{Fy^eEzEva;%4W%~xh{-v)unHSG{*CcNVZ zC^D~$=TKJ?t->f$mxkYWl@AZQ!@{tAK{W&ENAo~A`dI5PZU|D9?*M_HWxUg^vofIl z^F!(W=j{kq87Ni#nTy|S2fBjN|E`1@*8IP$5z37-drtX-5!{LtQZ8yFQm~3@Ls0NR z&V-gC;?z)Zd|c&+{K~KgGjNbi<+8H5koICWD%=d}5G9Oew3KIZp}{GLqcs%wTTyt% z=}k6O99{a5p3~iAx6a-Qk2mxx2Tt%;onM&UyrUIrw*wD}@}4s>a@EcBk+LO6uFoIm zp^+JtHzlv+sZVJ{`*zyl0ls-BStqLyE19@7A1itQBv$=TBmvi(3xUZHLZ^^`S*t>4 zae)f~Z7JmznjZEeutKyC|8PS7O1_-2eL3QH%pd~LF!arn4&#mVbIGw`NLpw8h_(Yo z`z2;}^1svmC`10J&@)47+;{xs&{E??dFYTgcY5+Hlb{91#ba@q{#`#ocO7WiD*G-l zxqYu~KL>2spWb@DZgIp!|8zG2)muP~*^%0Bj zsl_Pvv?(UrlbmLG{LHbiuWW-$n$kkYwNervl5JJc+Y>~+1LZG{Mb?~YbEu~h zs`0ee<$K(wz$|tB!;*)h`>S@VLaF&zh{fAf) z9-1~{-mSUx+7@>Bgy@TErxE_Fn|o>6(p91Aw(=K`j_>mw_txxx>{6bJq~uTlK> zpAXP?SForq5iWG`yyTNVR1B#%2)>CKfT_c$$IZ=@!|sLJ99Y)R{^tHiTdzkC8u!n? z9V7rSO%5KTkZ_z%4(qU*sj4r^4Sq*4c6Yw4-bbjPV%F|dqR%l4t0-8<$_~_$N_7)o zLBTTxZHdd}@o&y1CBH_b;!rP5OtCtJPj*PQ*8)s$!o#2p3JEIAV>TqrN|dA2klLk6 z)tF3M7^H3OWO6luogYK%I%lPkAp)#SeBy+-DpD3PFJA&Ya_+saYQ0rDhaZY&R5OCj zr#;J-Fn8)77^s&eHL5{uglH_d?)@l8J4JgRM))O@4I5=*h8My>!Yu5=c^0hd6WddU zQIXp7+SY31hF*(mp0;;xrcQU$56%P9hijjBY~`|FbhLk*?O}E=h+tI_f5i_1K0S4H zi8xT)f!0y>?I1##4KZoVcx4LG4ZnVPpoQlfn$YpseSxvTR`+GIR&22?Noj@ZPa+#l zf(mfEK`rpfs2_q7X|@8$5Ic5HgO_ESA-y))jWxdf(@E)z5Xc_3x!ZAb%c8uLjF%Ez zzSq+jW458LPH@|WPSlVdyt|vIyBRbx+PeFrMgzDbQ3Y7deS-tr4JcDS7kpP!`MVy4 z1eEM2TD}@M7y(CcfpRXFX_pnyZRL1{QIp$@m86WR5$uN8IKL=Gk6ar6WE-=-W#!-E z1rf_+Oy`Kwp;awW_nR6SxEDS3S5Op>5e zG_@=l?eu%HPpqY)Ra#?&;i@BX7S7@1K*AZ#ySC$Bidq-%T^Rg!tkocEAHSa@TO}-P zMPf+GGONQ)fi$V8ctPtNrVtfG4mLu~fx}&%Z#u;u;0{`FVym#L*XZQ8?CvULB$KA7 z*TrhTu`N9AFT0sfAepuQnT9jM(|uL+3LqYD3>e4psN3+gA_E$|&^20Aq$Gr!v?6w- zj~KhGD+Zg)#YhPL6`szvs}~`PzoB*ONTFB_$joUH`0`IKhZ^*F83x-)u0eAX& z7c@092B)U6P`#ih&Tn6FhHN*c*c1GV4xwR|i8bHZqyY7iE3@eu@Ozr+%9WCMwn&np zR2P&>x)h{Zqs3q{)6QdEQQsg{smWaQtlBtrDw{LrKV<-Cs@DbOBI0k62yUDLRp-(u z`pbDCpQU zQc(0^Wopy!Pc=9!6Etgf0_VbJIMk$n?lXf#l2%EK^J#RzM)IOM$CY$(UaNSNXy>uy zfOmQKET`zX>x@k{r_(p?uZrnBLnBi<{hPyv2b*MjkdJgtPF9TmXh($-2I>~FNFm+^ zfechz?#^$0{KVjU*A)=N*wp`AaP);(aHco@lCcb>vvK`FfPfMsbW+d%NuQ%Z)8Bg8 zy>)ogMfRQ{ZX*r8secEP?`gY20;nMx`u`{lBfieB|0L_rR~R7u1nTJlSLT-jOtmVl zg1!L1K76)6Fb-`AehAI$Or3I-TB|gl1Oy9q90YAW`b_v(^TWpezoa+e4fTgp2<$^X zYV9t_PrK}sYl1+grJL?xu+<@)WWQ49(LO0+b4XZb&~#^=p7^-|Yz?uA5Pq06P%B4Rvwamx z_1|h4K#fLGW0qomzJbOVu34H(!AgIg&RJu@{q4WE#-ZTd)rW(u_#i@BlWF}a7+255 zztIyy6{1!PNICW4&V>af^QS>CcNVYjNLrvnzgI*uBG`%#8f$~*KM$Z`e(Bcpy8G1A zP4LSNILW3Iw6OzFtkV6dB;S!1PZdkZ&}I00XSKg4VAZ>9n7l;<7Ck}<=G0ojGEy`$Usg&CM7nI} z=!N|!^`N?6*{Ilf4IlmXQ|Y5G=;grt`0#ycdGI@*C*9fX8j}5Fk!NRF{~q^g{)kTV zXKxqY|H%T}>to?R62l;jim771`@z+P%Nr`w9xEEn;V7rksmc-bb{_nK2U-_#b8~|$ z1pYKNHG%)Gyd&WSTU-M{-w2nE6Q2868u{n@rJm=R_#lt*_bn6PXvzg06Ed*Hb3fY~ z$SW<4q=*77J8=WQfa4qf8=Vf?se}EnV^dS$oXQih74~f)cn`;)=d&+phuQ71lA}p| zyW&{p7`bLO%@fn*Y+_qCzAPXC2!_IM=|?{3pC6pIS{A3(>MGHt?6MRXjQh+~)hGrteK*ZDaaSxA|bDsTX6FftuaB#qO*)}opO;GhAN zqN!7+ytU&ifr9Zu$3#Tz>0v-r#j4g1>%?QFlb~xk>DmZB1jnf}0&gWJt`%YA@jM4l z1K-7P^W(xHPk1sNlOSAPsHhI77R?kCbd(2&lRjPMzI;gkc&Nvx1P=}#!2h}jPBxW& zIl8)Mu4y#~M>v5tSF$bO%@e)5stq<*co^F8AETFf>XNks5U(=VCATMVR_ipaOyM-h?Fi+$R|BF$db zEX2{$zPTbzY1ty%{y)q%2aHod6yB&X$CWQe;8p6M6r#t43UmeFp!vRk`)^J|Ay8K} zN%8l-L1~q`E3R4Op`Gq@ll8~xe}EjQPkF2_7yjvPU*YR`GJ(X?vj3cKP?V~5kn*X9 z0w}Y@NlCU04i!jw3smKZ@sZ-^m?4Ud&phqR*8GZ3xXvO6M8_(mY{ZQ9Fri} z8TH&iW>7^x8-OB!;N<<2@W$y69_*y)yX_hDeHW3>9gABZ*v{chZOpgQZ1sz9t4q=t zNXRCFIIh(1-TE>DW+%c8R%mnb6i$!WKtilfSncCh>SZA(yqwF@%=^I3_;@`O;4mj{ z^Sx{6CEOZPG$CX4Tw*EK=?;G@UCMg8J!`aN%Z5yh&(5V81&+aWgVXWKgmo$)x2l}G z#_1(v8ez84-xukRxvcE2l5)bc6K^x)<^AXhwk$nmuASy!zf+0%OdqcxzluOX9tst` z_cv&z&$zA{^qt6Z$HwO!*82#bX4JRUIkTF#pMAL}4kVDBdJ0`cRvSFf0s{dlPT+(Y zyErWBuu;*C64#3Fx1nGByFTr=IP&vqQH$R`1>N_IQeS|6ZU)thRk1dSX`tWRJ%aQJ z=>1##Oh!bs9WaI!eES2Own+GN;?+@EQQ_QqE|bmLu_`FA?dk*i(D1Iiellb&L(5@t zhUa@4{_$Wp2A5=fwY(|=WlRN6U{8IpVd4-Tl`%iFlAwH&8?0&K0}dP@CKM=mhAhg* z|2UDVZ2u?kW2t3P$-repoDtCHxy0&Hkv7dCL&n29x)%>SibH%iLwL7%*%7%R&dMvW z_hizh|BKoOetTc#_}}Mfyh`WCyK)r(KG&elQQVVmeChem{4kG6nF%*Wo{MwwvtkPi zo{#H~x|^o00CSWv?bP$?aJn@a$5P;XYR|hK|XJ0dcJuJ(tvhIr7w%`VUXH z_0N9Ebk0CCWI+jv_vlb#1~JEd#bOq*t%u@(NUwpt%M)e9ko)P~1u~=m=a+t1o6e z$p%;{^gVnGk!b5=FfqG|@FRuOq%$xm_<7vMRjq4r8NMmPg9zyGCL{OUPCz7c43E&H zkqr9|Kg7THKqNnCHmbW%;oSNCDuo{swm+|#G#*)VyHX`r2@mK{eCb}E;?{|i9(mX4 zndOJS7N3Q|DQm*h_1Qg9Xx(bJMF4}GW~%sX%RH$AeC?1_MfseT(Dm(5h z`tR*-r;1%5xrcRf%Y>=ZF;4#bre~q~?#L|Zw9(A zwMm@}^`mls{_{lzT<_WN`9L)npjx9N+};dTKozRD##g}or~A~i8HBISAxofCzwJ;Af%x4)6!`S^(!lw71{q zN0R%2ISiQdCOnw=`tn<8#f>759GW-F^A>7;^}}es>5!6{)i||;-ysI13%-X+A-RAO zK39y9V`7AqAOeS!+X@8SgDQ|W<)7bO4qQY9z!Wb%yA@ergv7ZSGKK~ z20OjLzM+lgJe=0J-tVp~OROkqMc|kGujwgIAOgPky9hmC$ln#UIgxU@%-6soTD(`5 zW-EBISab+A-YO;?T{UG@Ea}{ek^?sqG}@hbW>^0OP6k*q_J4m*a@g5(9_!+`+IR?+ zB|pCl*t%bA$x`0e(lJ_CUH$TN1oS@{nfce1w`wY4#=m&>hF?*+&9`6#clH?dbK$ux zhQMRhw>CNJB|=ow>|7j8q6xS@4~XZ$vYR zKxbvwxEZR8AaDe-Cc$4};f4SEz;;PP$~vr;PVC>9zm55^`AQk<=y)#~d4n?r%_{Wa zIds9P^zsnHCFHQ%LzUqBx!mVuH-B*K>eG2lDVRe2XVb7kbh!8W%ZM6=D%c&Dii@9o zhK)rLTk4iB}D1(6a+9VRYn-Xc~k5Vqy4#T-E&SivOxd3Y&b;oN-sjzoW`-uOAq^pucc>{lQQ`iR-NdSdIW80(^PQW8X!P z_K%`4+8x=QC*%_8h^cS9SN;=#g6N-Z0p-Q#JVe519q0y*;|=U`>#Go&e+CGjKl@3_I+SF6`J1# zd*e6{!?lsy+~s?t#4X44XupAybr1y|f48_l3eB+(DyH0(z=on6{u?k&`T3j!G>izI!R)e5&_G?f<~+lZcS;HvZ){9`s;) z0jr3gM{hXV0MMB;B-LKhzvognH_4f}Hv(d^8R(^{(0il(vy7)gRJ3QuwYDM9Gz;Bm z87(}JjhYmR+>R|pyQiS$FUT?7@2=3(j6rosxC6aJ0rbC>+CX0Q7C#J?p=e-Z{EzW^ zVE$s+=DCYG#wrm=hoNX!e*`#;1rDKJLB&l!9w))RfaSo+_J=I3F@X<|zlkB(@o5yg zwc22JdRZ$j-X=@g&ig+DMJElP`;gt`t8TzR296sE+)L5<4;zb?x&Xh(lTOdQmW2g% z`=91DXM;{3w^Z4vbU&fczoV1{G4Ue=ngpHowMZvFF8W67nJs5EtaX~yvJ>(Jp)JBR z%sB=Nx?}qqeIaV}!-N0;GLsc>s^!L4h$o+821hof;yQ;bUWdSmcck!Q-5~Vt|4!L* zlfL@e!3KUp8paAro=oiHCQgoed*>A6pztmUF;)?QlnJsZZ^zL-MR>Xf8uT}kHQ)cX zVY2}rY#QT__lB(!j)!4%Z9SWc z&jGnIR?WGlI8IXk{jh?y5ICXPJ{uzpbMO0d`BAg8l>@y#%B% zeuxSCh4I=OAi&B^ODmKZ@9)*}BdE{6%juV8zyX^(LZ~lL5}fFhG%uOqjU(;DJ$9Gy z^}G7kJ84Wg75klO*Ei1)LyjaoXKcFB2w!t)!EXPH;z6JvdqxKFWXA{MpUkzLiHDSC z5X@%FR{#^*MFQ*fKpq-V-L(8sw-AU%wl29$?M~{=ffkDXV0cEh{rg%AQ?hX0K#qkI1!0 zB;k?~g={H%MzTq=S623jYm2OGe&^Qb`}=->!(Y9<-Pe6R*Lj}vIFEB43T%|;JrP&a zSo}^aMy`bZptOk{pd>rjtCstC-QCS#+y;qxKY10=nsH7s%e2pgEJ<0Tz36uV3F6Dl zB}IH0y_LX9d#T5w^e3-MZ(KxN7m|)>F!8vz=F0(+V7R#7r$E%r2MnK)*HQ*gB;o4^ zPvkJ?q|*fUZzenm++-gARP;c|YD7a*%CGQ=r=g0$gpp7!NiX8NMTy;je0^RIgP_5g zXM}ed5JJbM_n+nH$k#YkK#f{WHerqf4YprH^NfO7Qnt8Sh)&?k5B-*?&Vp~%m8L~^ zFFv;&3-Q9aKD|!#qQOLBmNl{!Yi*$m6gh(Dat9HF9H7$C!r&b?fyQ&LB*T|iCzz+q zC;W`mqQCLo{uiI|&Z@k7&Cyao;utgo`1Hjt!sBd+wZw^`mRO4~EC2giXZ`D0+K)#U zx6BdWZ!c#|-J>o*Jkw#5AL|Me5H>&^`RWcu83n%pcqGh9gjU4>v8a55*`0}0c(Ow^ z)$rD>I;~a5n1G>yQSF~mP!lN; z=U3(>36CmzI!YT6eco1Bk+xr2eJAUR{W=4!kLh9M`q5nWy)t*02$XE{<#I_1fAi}v zDEJAcYJ)z#VIaydFqv!RyoK6!G*on`r;5^4im>_&Y;{8};ZfS2jUJvv>xh~#JL%`7 zA$ytEfuUDG!lxN14P!DpRvpsQ<9sa;>$EHQ#f0xI25TF2xMC2+pc4Q>)zk^ag?|zjY0`aCbO6{We^JiO`}Iaf>c=#&6BMyio`(=OGlmFTO*8xJX1q9bWk$ zKeP>BVIui~XeaSw2c@Ok)TC|CZ3FgS%vqjm%Pe!S~j0+MbhzmAJ->}G=0ADSD^r|QFWVN(s(rxT<{a(|J zI`BI|Ux^Vh>Af!g!K}fskk!>47ZHW~(}jvu;h*=WsCe=NT24Uwvv%&RE7Su(Q|w4_ z*74&=*J;J_z@Tmb@f*5MrKTEpdsx&l@FJvcJDFch%axk2+I0`#Q$srJ1o^zSazicPHe&5u;(LE-*qAd)|ed4$J3`up|Q} zlWXySJw{H6D;ytUB=0L^oSS5AFyTu=_kB{x(BPuOdp0^c8ci0Fjqg12N&rD=GZlm! zqm3PMqG|5p9O}q;F-S}IB&_zSJ)hiHSnW|}A_U2~k6y4zeLPT9;(N#BmI%E;y>xZd z4VHcLZ-QOi3oiMII!VNchb$X2-5%xL=`WSKkP+j=Gx@hHW0w%qpGL0FCrV$ZGGlhrEPhJgF zhp(S;`6l$Rvxpz@rRa0=FPa@ri*G86tLytE}RaxOgT2mPH zxtm`l0fv2tZBc^9fv{KzU?P1+__q4#=|RwcTD#On7Lr|Rfg`$JMkLKla}EE|lqdJo zi-MiJ=buSF?b}+Rw>o1o*h!`}7f-4d;q&F@Wqf%iXa>SN@SXAXtLQ`j7T>5kj2d)U zNW0R{j&EFi^KA#!_$SJMh7W|$p=UhbhX1B=9rYQGEQdoV$`kWAzIc<<_QS}Nh=;4{ zjQA~7%t~f;XAz&1877^)&LJc!O*+!fm2w!r({8&*23-x(P#D=+#aN(pBS=EOA<{BN zzm#LF1z@$q*ec)9{m<_U%?_J|geAZNH~INN6E2(fbgxCy^0C(2q^oq{XF!4^u`pG; zowGxAZ2WpoZMl{V6vFtGm%j9k>tO6o>rA+cKA1WB>}xfIE>g}yg$JHVt9oLHG`cCl ze46ci4pCQJycs)B*ga&=GgwDFuj;%>CtPP@#us<<5!Zb_SY6dky8YMpB|K-t1p#tx zv@H{{R{lE8r`hq70T1EhYg8%K{h-DnQB|X>8Pl2%EWYDd&ldHQ2%H}{N+ zKPuxvTvi)pt$dBrU`>$?2`2Byr3=S$J`K$#ytGgHbuQw*CIehjjl%^zUDdB@e8Nq= z5_r&)tdDBz)|3)|j-?sO{09LJa!Me!m+*NZi+nVtX=xl(b(9&-5VxFE6nQ%Y`fE0m zhezR6|5}h2yGLh?Ey;4aDgJlX$SZ8P!7kt5L?0zi9nBk`9t>eKRb+AjZS=3q*=Pw+ zBupg~cWB$*bXGCUwaVA@zufW{#g<4&tQPncwZbsCV>rX7R>c0m?6)MwIyVpxV2+R7B;p)z>Esnm`K zXq8vAwtSfsL{EwtNg|?m>wWEKhYa=fr^8z#=|$y^C&tGwB0#HX;QAv2 zvPZlRzxL{3`|w@J7h*>$|G4Whfy%BXyk{0yc0jlP~vxA9`kb zIp|Scx$0;-F(P`jLwU8|1U4O*7pbiVY1P>EWNm5c( zwhfkNO?>>Yt33(_3h#^hXM`WS;e2VQZt^K&$(-$B9msw3?@1I2g)HushP~FGihn;U z9B?S_Fy~KJjqCC^&5UjocSAr`rWQ&>;d?* zE2@q4?P!nTCZ-d5g?%PfH0!KIvOam#!dZ@KxdIW=Y!dSG<2j!>WHPc>DRBlDa7{)3 ziwm&9zJzn_!1M0|8w^Xp$Az1LmF(RV*`?r?=H`++teq77j*PTB=jJpX8D;q9wnSf# z#vOm;^3x^y^Wu93gc$L?!_xmO!+-+BQlLc!TPuBP6FedigWXyVg5s zL!&7kYab;rt$O!Lgra)K_LUuW3olBGr}xCA3SMoBBjDTls5-4)V`7r;OCE3U3>i;N zPWl4&`Im_S@`>9&gBdOT?BBNG&IL`0h#?Ty2ZM4LR4*&gJjr4|l*`BlEAD&Rm5Ei!-YR}p4UsO~q+f!kchVbCe^%#f1WPK8Q=R z_od%sW&+NN{9#g7XUYqTHY67xCso9dx8g zbdwK$@n&EPqQfAES zG~ses4I@a10~_Pu;209P@s^f(kzsWda8ke)!O-TP>C{_lb+Ct-49 z7>}m$0Nep3s@Y`s$^EgZ6HsLPy$h|@d;CteLTXk@dnBqsH(m00={~%Qu+QG_hwc*@ zLo26}-n$HpjkTx5N8;Xb9YI&gWXXomtl90P86VgLWy%I$DrFlD^uEvVQOJ{_%o6N< zY3n`O7n@#xIYTBxOIyAC8n1Nk3uaQvl8|vX_xatH)$VSGJJpq|_Bu5wkta8ARmbnI znkQ{dx=*I=T7j_AjwrUzf1zRJCa?*DgM+dCvw`wh4W0JOr+k%=a_^l0?DY5d2Muee z{=ToEpw1No@&OL5(}^j#g@T@kxm^iq5xSHGApvy4#%0gxKtlt8pA>u^f-})Ss>JHcx(?Xi>IFMK7>xrz;alFWtV+<`SD0eU{4^Z+On{- zTLJ$8T2(75D}zAOPuTX5L_>3cB+{KbKZb^M^9KJc^|!3WuamfMqN2$P2xu-ZcJOKG zY3$#($>>tj#vQ;44C z9rOp}<>Wqt%$XmI*C?w$Sx zODcc*F#p8&?j-3JxPS))5}@$+Aon=sv!wzWUC_)tLC{gHbQy%I7G0`9HN4W$L4XDn zuLMAk^yeT*T|rl8@?N+Rb@KIkLGK#GHOYHHX3Ff*qe7!v8Y(Ki{`gbiae};r#Nle` zk%P3fKS=~RY5hYrH7O*hLL}X`)6vtTB6S7r_=6lSZun6lQ1!i*XH+z_vNJfvNqSrI92d!QrtF>a@~zrmxGFN#|5A_o5tgG&y&# zA^{=~%e2DZol@e{A3vHpb0^7TAa`x<=Jp5Fc;`FgUneCUHQ+HW?i^$&#oaL{fgyu% zo?RX68?5@Vg+=Y&%uB!^lle@~p4w_@QPel!eTRtd*?0$zEaqXQygQs?c~pAQyT?H|p4 zZoy5sD0WLt7skf$dld(T8x`KislXYRLKFFEJ-&z1I zY4-Hi*47JGc;R)B=+?lqWI?96>m@vPyGd+pY@jg=f`Nb}Q~0v-@u_92v8MwOU=uII z`s8RI^kYXr#|skuAnXh*D?!@v;OD^aC{>Z(LLWA@ntgKOLrOltAG7?0j3>)u@Lyh%9ZG3{>z!qMox?f(0;s6mi|JcXRvKHM-9@L&)& z0Hs7vfI@d9#^7Z8ogVMbwnSpx#@1E1C$BMA8lE%~OSaB!!i%#|^U!&NRq>8fgCr;{mvv?8zvPSff}sz;+XKc+3}VC5O5diZr$Kc& zF@P(^7S`95W{dv$dTfCl?hs`ap3Uy5t9XkD^TK+uB5%>pVEDS}h*`1URX+PDFuYCj zdOEqykH0VOaarYaERju|eTrTjDjoWhTJK=4VobA>Sub-H+-U^jS~pG+oONhsukC{w zbFBY0QC)6+_j&URO16g`i+hvU|oX+O3`!#zA+V?1` z^B1{_h--RRVhB3+Mi#N;CofLkh`#<1bmsjmdQmi5NLAf{CNUxRtw>C!DjPG+&F9^z zLclQm|XzMeXa-R0n|MS4o-ucL;@y?`aJdv1K?wB%GOUO6Cu-Qah3%-fu z>hH4`V&^XM%+ue|dRElDL0c?F0>4Ky@gpwydR~=@s4-2ydmL~iFz7seQQgk?HYw*E zlqk;dQC z-<`VgDzjtu3v}AMpZ=%&2iDCY&oL>FI< zVBlnZQBv|jWWWD@e~;wQX$u~4=6AK_!IxF8?<<|{4mE4N)D=Ru%41?Rc4*Mrd96K> zUOVY%{Lt_W$Gp6=4?`!sgN-NKO<27d+lbP?w+F27jZ))v%J^dF^F4tQdPOW zL|gAVEcXULqydu=P78B5-}U}26(Lc^kg;I0?QfIOPa$aQ8DxT3JcGxxDz}VahV)!6 z=JaSXuhpA`7vB5h*le072z_j3DzldE?RA;IxU?f+bxBrUv&d+B@x9Az&=ThLwce+@ z>d14Xq>bOZ5|PMYV$IVN3QF1D-t95ROwFf9H(_#Xy*0h6ULXGcg5&b@xsCU#Uey9a zXlS}=V|LmzG{=p|1i`FN0?YluBJP=C7yCu)PgAPgvr@!u{@B|NhHh@6(cLK-@W+nE z@F8M}?1`d=lpcxq-_>Y@zN224X6J`(d+}3ce|j@o#=?B?=K+|mvp6B9iJ={M1eVja-B z8n7agNmnVXU=&zcia?ZyBnmE#SlM*Zi1@tazqOPRx43B$-LbS%wDj8)*81pZ@pxCo zQNlG;LxY3+rCj8l#xE}sz^_}EN+9pa~*Ia+JB8tIp{8P0(HNAv#OGNJ%e*wR`B@?Hcva-EV zEZYru0#8Lq)lHdH5|Ffl8g6$21ABK?kVrX}aK;;c3s`aKOLS@XB|xPpzi?-(XCN=` zmtRrMBhe4zh6jr*2A^7&r!j4q6{Rz01~Q2#uk>&Akdr>Fx!2H;Dfr^W_okOfq*Cnn z&iKsj`rnl_$y@Qs5X-qV3VrGNoZ4z!%*I|{@qCJCvmcDvR^Vx+(Yf_GV-^ zceAGa1nG|s><*T>bFKs2YRucaw>^V z4*$85A_sf$!Jjh2sG`?SVYAkKtOwILwm&+T_af-Om1wC+@l&fL-P@YiKanzJxf6St z_d}`G(#fIC7X*8pGwlMYFe&xLAW()+mGtxNe0vkT7>JI0ZOb4a)gZpaT5^m$c{3>A zbPI!3$?DbL*&1?b8rB0_(cZoo zCBHaznz^%Lvu@q5`Z~w_$-b3l=tKKq zzC4!-Re9KqW|5?%V4?M?#eXAUp;CQh%$nb>{TlxG$>S!edhn%8M||X)IC**z64Kf| z=5RU%$z$Y=dSy~l0G@6~v?RmPy~1mV4ub|-C=A^8MGvdxkd8GQ&7JYLG8k#^eQiZu z_>37=9+-0_z;#teeR4U4ODJxaET3=sFTUO9PEl=mepoRiL zfx%pf-Gray(~a{^bTP4gf>Q&_@(ez&`ucP7!_Z(}R8#Udk|(N2J2Wh>k@nU-g;lHd z>OJ1=|MM$T=69q7%7qEUx3@LhThrhq(h9Z?#Tk75kjr(jXC^N>Si}ebtW`G&X@SvW zuDJS@LJebMGTR$q@za^}QfHhocTPvNviA1jB*N%DJ-7diQCyK1btfZrUA-sjM$$ss z()*(zQ}G~}F|#W%C+(R~gv3Fs)_c_a#lWDxTRot3)bEcIArUAF7l)C@&p_|B$^|G( z>FV@jpaMImdeYzcc+tcmN-dwcnRJ4upPavfw}}J=@~-9Kdmgq!-P=*1n&JS=5n1GfK0-93P6BqS(ErMDLPzxWSS3+4=}77l*C-j$@VHLosn)^!CQ z4aN!V%X>xw{4}^u@fbfC)h_NiZEn1q?^57hxbv9beppIfJ+rbnLTPx#{KSXr`fXRq z8m~c$7WdVA7cPIV-PKs=9;mvllA??R%Qo;HZ)Z)#d7)2qy}}+r^iAlo-EfIT2PCo4DlmN`^s8x{3HX^Wzw23HKP*sopv zIAgtqY(+b3kHpiA@!7B3lWmhzo_~@%B~#IB#h7>Zm<_6CJH4yB!`H9W{BFPxDdgxi z!%?A1q0Z(OyTzL|^t$&R4beoE?8e4+>gn5Deg``?w#?8!Dv2DoVUtw^)K)-+Z{f0+3%O=2979Fuz+5z$#pE3}<3=9l3G@`f7a1@Zi2YCB7 zU?c2LguasO+fq~!;>^fi;qO_c__2yCqJ)5sl0-^ALg3F;!(Vf8OLKA8t5a%>GTEOn zP}e{$85BT0@bK`Em2G-^(+p5Dh(C^?n6bk2$<_0fVG2r@*tceGi}{M);d%Co#hueR zV*Jxf%IDzRrHL#EZvtipuoTu8gkk^?jeyUr)>fybjO41U`6xf+GW^RI4WcUGx8`Y^|Axq!h>9-_U>L9g+zfWH9<+$hU}$zk(rI_VNi=-Gj9h;zdSQV#$! zltGOL3=-nLU}8pxX@U^+Y{j>4$RN`@k4IVQYCJY(01)0gcM7VF7jf@4-WU)l=CLvn z{@SU^*=DbUFOwkwZ>Oc1C$b5INxRkIk03>O09g|Vt+2j3wv^DQwrWzh7QU-?caoNt zwi@;yAYV|;^%>Bc9f?GfkrIm|q=m6`J#`3B zx}3axa8OWlQR-VBPJ*u*0Cgh&VA5;2H*06XnrwcF#?tAGL*!ArnFoCTCd0y;N* zvgz028UzSuPxp0n^tJnNdx4(bgO877r|O;pwNnKNkX1xTNTt_KuF9|q640ylsrplZ zJ03?|p`gJ32@@~|xE|7FW2OoAZ(v{`sd^mm!(3t%aL+DW<{@Fk>L$m<>E4y_5I489 zRCJlAjrk^th$}K|Ypp;c%iA%?&XcF!H!2P_@94J_-b8MG{c1-|P0b@Orz4H5KdR|y z`Ew!drNZv8lxE<6!;;bfmU;{UkqNSkb%1FjU5@rPjD7blAbrv!dFmr2^#u^{WpVsi zi}lI{hPo7(|4DY$q`k%WkuT6RN8#cnv5n!Zy()NL4YzPyu|qu*8BSDpBBPd9{A{*D@?_6!cWpxQ^k@srtbQ!Ot*&=*Nhv5O7#Mh0 z-PR|Mq3V^~Ezp?KIQda&M@fFy2wZfoCr6%6vRwdYib0YIJa;@?T-Xt6LcTl8+RQUJ z2Y~ZOQs1(KlL1y$Nl6Jz(?quV`)^s={}VxuUQ4GlE3~wvIwA8>k-b$$cxqrMoAZjC zw2==IFyq!Diy7)0Eo?OoW@33y9yI><`+u325K1+TO-dRE?+5BcZ`=LA;-}a(TS)a= zPI&d%X}xwgMc7$x_;{;FG9Vye<>_b0%g~9s@pOct`}+GKz)(O!rxrkqZ}9M7rT~b~ z8MF<&fdi|R3^`h`@xX^?IyrWKqZlyQsTwi6XT<$>WJzYeC<-|rQi}ZW<|pQN)Akx#0+A4ZS1K&;H~UPJTNgyQ=wM^0}ryoAsir% zDkkOw+sm{7394eDhVaQ<$-!T819pMv z)-MTFmU(l1nU3omnZB5BQ5lu2EU!mYRdC^bMB}#%ADWwE;6qJ6J+!q4M;Ijm zAl(NkHqpKvnO<8D_Fw*9?@Y5NCh360^UFyh_=>TFfbsZfYA0McS zB=%Fw(17&mxc}BwNB6P&m>a{-GI?_~xFu~Rh1 z!F*pyi3JAy3b?(>?|Uok?oE5ahwtk@)iN|TRx{k#cl12E!`>dn60l;xpLx)!s+@El zKFZzQSVTa6O-oD52a1!xY{<&WB3(d27u4jHB=0;SV(GX(9Bp=sO{b<~p>+p0;#Gs| zZOsKIkSBrI5P{Hhp0t|-kMwTP#f_~k*k#^uB^@0fLu&2`m|5IAQs>Hr-#%ca$Q!mO zMBO2qk=4Dsdlx?Vq}}rgAKZW;CQ zH$=$2=8Fd84uSZQw9rb-C}CfkHV^-1nL0~wcj{EhUyjar>O#iyOC z;DP>KP)IFh^@l`aQ#H__AlClg^rPN)C(^z&c>M&z>MG}FWQU?dP?${7uyr72z=FVQ zJ^F@*LMN4?A*|8BrbxxT?^H2P%3=7gT^CO3Oy2XDc|4$XFPL;ZWm&$kB{v&8hR7{+lAy^K$a3S}6QOvO&|tkRGbw(LJMN|rzN$U6+{78T0VV;Njq)>oe zy7{1Y!M~Ku4;V9+6#)CasA&BHRFi+baKpN66q3?&9dXsBPo@phKL}aXDw$vUu3k1{ zkVz*@Y8rSI-Z0yLD>nwp^Ru$Du$RQq8r{YSACH{Xp?q`b=-xt%?8`O*K1oGUjzr=F!*E* zR~Hy@qzmwruH#bC|HwDl7vYF+X+G z_YL}EHi(P9Fd#81KmL&KYw9r0A>~6mc8+jUDas%6!D%{2r7ns3&sidg61?pbuPE)b z|Fs~if@ac;Z}gYE11mGzjBH$qQR!=zf%EV*soQ0tt&ZRwgCqC#t4yp#U;vo==y1a2 zwoK)WYYP{Y+H5V^jWzupMhdN#eeWUX*TtZbKTIUi0_i@a8R7nTU|^6tXiMEZaP7G% z6%vz@=@qZ263V@e%hHiB6>7xY_w%&v_pSk?*-@3TEJiNZPq_1irAT-5_O=yC=+-U0~2X z&&qrwrY67r9+IacBv0oROI(BvOioVZUwiOJ2#S|I=c$>!ew7Vc26JxG!5pg_UEuotpvc|^Og3CgY!Wb^?e-oZ{S_*KRtbC-sO%}T56^pEh96(!HvE){e@Qj z-kQ7LUKX<5(k^)Nb%@Dl0TvlSTSj=vcYiJpb~`p7zBcap4NY2qa*#LB_TU${x`awJ`A9;c)pMUs5;un0K`@@VVF?Ri)Fwo^2)p`ME!^p@8 z)*!ug)m9`uXAz}tV& zA1LXU88KNooOKr*mQ?0zgzO%ceNDhYmT7daFL!M)qcDXQ2BrN+$?|M*1Q({TPyY>1 z_dDLvMWIUeTG6B|06?(OY6QTo$ueaRF;uuXolTpCvH_~1OIoSIYMI}Gb;Wm>HJ4?G z!@_*R>pW?t9l=jQzhLze?9&E?BZ)`L9qXMJR5zkheGhT~d5b2>k)|M&P1A>@;a>ySceMS$lYLeAtsLD(Las#L;mb{sSQHI;WO#5&(C&n;)ohBoXz{DlMw1W=%ffWr58IDS6BNdWG|L+~Wwf478D_XCD8FfagY zN96>8B`h)G^Wz6Qn%eM89i7cFk>m*UwpXoDk^7j{&!V~QP+}LmGHdg_H$|oB#nKIT zck2=R#gZv>wxZ+rl^vgmaT5W;G2{n9s&?)jitH)Qc5F~gMxraSG7jGzXmZU+S-7)(VLy} z#FqD$1D3(?O!T3?{s@3le@SQ82d~MiA^|m_xo!LA8;-L-pfA2GTwKe*#?}RXBDBBR z8qmDIA-@*~%)q-yKx)1^$jSz)X3aVV>)F~a16OMAakAIL+u;QX7)lt*O%zU8RiD;LYo={GHBcQk3<0{`9v!Y3Stc-NuJ-(7G);B&R%4zfL zgKqw@8P1pg5q|v(AJIo{0|2c65(G$9#1y6Pu}{{8#D}pKd8yI`IuPe=kY;EsowQ`% zxiVOqIYTaYO_0!8l$x4Fw>VSMA0j*ry$?aA=C~0|>6TpmI3`zv&{~ATC&?AD?MWnp zD2Lj{@Xh?MkBRsi~vQ&Un>)>c+J z9LIU--&l1g#U~}v(b4(LwZ{O=2h1IyKneUw8-FL`s2^6ULE)ym9RAg5gZXyS4xzNU zL)-Ho!MyB8{Xgq(b2@oi^i2x4Jz@c3}> zE`4&CsQQREcPW-mxI=p}Fi^O1S?O%No4zIvs_YfZ!mMo5uZ_W#JIt8YeMgl=U#w3x zC|tx6*D<%hzklY;nXge`EAh^qqY7sj;(r8@yIbVT!?qVMUZCBfs?jjf;TA*TSB)HI zgSW5C@()=gRFORLN6g8#&Ji_dg;62e3Cqth;o?{~*>}SnO9G6wS=paECR2xoF?P_yNe*6@q<_!jW&G?jOu}wmS9P1 z0h-;_5%SBI=OcQhf9atxbXGZ>3ql)V_Y=|MNi2ea(=nL|gh&kUH6DN4+<}(Aw{>>2 zI(7|Ik#sHCa1&L@8K0|>1L&FrBxT*hF6C3}ubDWgn<~gYE4n5!VC-;d_XTwl?hmrS z2fGGLiRdIhh1RGoSBx#(fX#Zl1`Yq7+6_-lOjJUC{P>afj=gnndSG?Xxj&C3qv}nR zRDGS!*VAIM0NKBf#%C_k%A(R&+P&*!lw?t0<(7csl1L{EX(aa2wX)}mPhpm_yFGn= z1D?P_=jigEhz-9bBs;C*QTy_H_{HnWL?H-jF3uQnr$4S`V_xXg=H?2_>8?CmyZ^y7 zk>x)l&D61TgSg%X93Y5T@^f>^E`fE{DpB{R{7(qi5X8y+bpc@dpTP{#n)*&!}+a2hWVowiTkVvGF5krd; z1SaLQxOg=X;m)j9JY#9UQ78mqUU$^XbZ4d87g|Q#B=aFh^5&*F#g8IsT-~!5NrP{T zVmGm6_iO-M6hLibkn}Zt-|K_zM+Lk#2$TTPiURE=P>f)C~vaAP-xtq^v`yPvW>kNtYCZ|}4*Z-XZ!$SK>9g;lruH3B zru_hL-y=WGo{d^mJH0BYvV-BeOM%G>xwKOxEDxQo%7>2CIOA@zc26@i$06>T8!_F> zfsX6&Bzxh=FMx2AyRRED11bRkZXCn~0ycdgppZgA@(y2A$Jhp@$d1>_J6%6#Ty5l(}@bFM)CJ&TE3~5J@mq{TY||k$jKQBHDH?Uz`C=S z%o0XI{_gT(Xc$RCO1d#*>{n^ZF|Fkp)4M_2O%ba#oH$}*uJCrFZCxiG2PvW8kjo

s(Ft+)`X3$ZJPZdC*4X(m1y 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

e^v7DPoF5%-k^Rk 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

HjR6KuCm#42$3M_GGsxpVomvboeQ_SB*mJ@y~ zVlD7B!x*RgpircxdUX8|_p8dJr7g=kqD1j`;G&jZ6S4DUnchbWQ0S9PS-y$JmGHEK zQKMModw%wg!e{=)Ot#rdZ|C^@o&5uVPcOHo6Bg1mN3Ud%osY^uxVSsrL06jvbY6_6 z9Jq_;V=__vPsmX5bN*ccTJCw1c)C^+`IBg@2Y4}+z9<1wIIAL;0}AI3_Wrugz%@Ws z`7VO0qY_|7rPt5Rc#in#JP8%d z&lpEzd$F?XNy`$yGBx_u-j>D%QwaVP^ejO(5OKsL-d#N$#d0^X-aXHhxLunw_6+E5 zuXH>F`nx{bbNpKngo?R)0lMe+hN*5-!7|Y^410PH|52!!B?N7Du=50^4I-v+H&wN}|0d`2YN>$*IvySj z(Kp+@U$YxGAIHGgYT!kAus_k0&*4Z$um@oVM6{7dD7(3o61u-xK0hhI7(P7ewRPMt zGellA@1Jg1o5mGVF=kCdm`A3(u}QuDdRNY>bf3OPUC$I20dKa}B48oRl)YOymTrN= zp)UB)N(@3$aY;C}x)`#m9oYzIrA*3r3F4jiEoq$_-^BWknK;X1@4fNI$lnTPO)wv{ z76vwvvL{Ph%xx$z*Or!Q0z+^Fz*N$4DM@1%I5qZOh~Y(vHP-6P_)i+phVxz7(-Dgt z<(Xs75nL=KQ9&v)i#}d)&TYeAC)JMAwR#4AV;!d{32*i}xsB1Ad)F_8)-=BEk>?F~ z%I3vtUtlS&UKS0M)`_@$TEOy&bXmY!;OdC-ElMu6ouD<}>Y|O{KPu}@7_}rg4Aa*r z`WCYEN6r5^Y;FH5GLe+6<1(4MUiX>7a~Sce|D31J?&)}R(Dz$p3KBa!sH3K{y=auq zGu_-g@L$XIdbC%11E!Ej1;mXw6cmTMBM@~NpIg<($-2?E5v(Y}O8F0o-j?i1Vh1M# zlRTY%7|fn!y$Jj@`yz9;i}Pm8ZVjieI>OjmUYAq25W+h8b^skwweKwz+a8?8N-5}j z#jLsQax8c3loz|jDq;S-K3mYl3D=4?(a+{(ZXSDCk<}KzyK}Rn+Ee46*I)~G6i(2Z z)>Bip+i6U3<7q;W@Nzhb`e{Po*yeioRDF~jRgaEM0Bpm0tkhUYY!xYgVe|6V*-6e8 zM)x0A2L~%$D3Li&7ON1>?L#9)ED9o5E`tOny6w-O>sK+9KjnrI#`zcTMpjaI6yb}^ zdHoRi?PiIEb;|Lv;R69%5OQOtTHk=mu%RKl=^-M$rDu(qL9kcg7ndgd4Dt~y4nqAyLbbE-GW>Ul{VEU3c&%@!*4`|18czjgY@VL(vNr%BR3u+1mCuek zcFh?JDhaLxv*`42#^hc+w*NR^{`1{EQlt*wpZzR)@vkVlJONE-xcxwKmicfGe_NE; z=%2ff#)cO%Vc@^glGS*FRL-9D8C&?DK_k%l>PH3<6V+xx?D?HLei@t{FIDJbKFpFYQJyXC_dIWUu`C(vl#ZVPm)g+8Jn;#DWx9SXNFqPK3aAXASi8OPbB>vf zR%=2zA-~GIO1VXHEES=09Qy3dX=%J=^?Z@?xxo_2=X=;m8;Xj!Sl>-?zt~xdIz^Up z`4!uQP?r3>3@r8zD}mcQ!s+~>oTx(UQj6~Z)>Vymp|Qq4)XE>5iFWJs_CnLL=#k=| z!5d&tlrb2B5rj*8)W7hm|4$qO-NkIy0oMhys}KF?Cxl3#<=XM?%aF(xx3deBz^Ruk z{HK>6qx8*gOd4z@i9V-wL1Rk`j`g0kM`d727L#V;j#Dof{!gP>1U-xs^1HwZ6-8(; z;BGbdH>$f}%V{-dQi5gyXJjx5ZJj%N-@V*&&sN(izID@&w<#zJ99y(2ogyc8GK)A zJ11^#_~I6U)~@z~d&xKzg!Ngqf0sMNCc4CqBh&)vrc<9~q-9uJL&8k$6ADBiR?Xlg z?3@1?_LC*shaC2jP3gsFK^ygXD)lK~`Q+PHT6||ANZL^#dM`$W$e8(4ys@l3(YpO* z(bYHh7LW)!A)AkbpuYF59aOoR**2jz1b|SiUhhy@j%A^0FC*@sel-1``LA+{wTKp- zP+eCE{GecOd@!Am*#rmVZw~sp8DO7whWvi|1KXCDq%5DC1<}3R1Pv5B=QY62HaMAC zYTm?6;4p6u^0*mS8eh%^`B|2M&rS^Q8Z}ZVnVnro{D=;lvx&!u!N(HwDz-^A*E|3c zsC2b+XG>fBCTBHH;k&F6kUrycpY}ai!qe5Wd~;%Y&Y$h$6Me7-M`!Vd-XF)+Gg=)H z4Oe{f5KSRR)W+VdLHe6IT+QSDY+Q*(a^4-KGs&`DKB%Chojsnx=~3+V%4j$bP=> zh8b@;MT25-d;7NCETiYgSEunl5LSWW?yptju|S`7Waq{yKI5tCao(O%K$*Gtrrq4d za|)t|=Cv-%*K$xVI-$b@9P48B*KCCjJt?InJK5FW9-$wdS_miplB!}`D93lC^c%bm z^f3pey01q4m$Lxe`<`ToIkBRqo!M^hk;hrew#jJ|+3!>x{grN{HS$I;e`_obEiv{{ zUpLka6l|iplc%+n-ic*ropxa2fb#3*Aw#Lv(&^*%wgiGE{@VR#c2`>q&2kP2;JJ3y z4w(*pB4!nslsqwCeK0kLe06vo}Yf182!!s(6^7LU>lv$u&;!{&ErYnc}8446dVt9oG5o1pdcmi>sWTgbd1GzumK7lZ-n9hJD@kw%~) zD(Z)obeVQcpbJ}31U|N{M4-8e0Y{RWYVV8v8Q|v_3_#_CX`iK~$$)fsBr3<4sx{)T zRTe1A`@8Uq^gwV4e!s@)SvaHSXiFQ*t3{d~#x6SnOr!h2y+oQAd*;)&c+ZRM%-o{X zsGT7E#$#&Q$@hJ~?2Z$eZ?x>*r2)dQ;ZTlhHt&oh8pu5tNoqp_c_HTvlkUwG&v97W zPujE0^jkBh!$vJ$E2UU5qH_+W%DA`}=Jc)~9yV?;J`h?FU~jII+*}d3cTJT;#vGH@ zbtD#)Fp_u>J`*bDuPaps((?yvE^>8zJfny051RcjF{pR??C3L|kfeXMH1S|i+4(ES zZ>?un4`GPE9uM#knO8M}4eewG2d^aW0o(b%#~!)r0ZNcqA!Qkje?BBZL<`5Di?Hg< z=)qY<7q3;^1tmymqLd=?GxHNRR6M7T=<#T0?ku5+?xs35-d81zDiX&rUMShlZNHex zxA%++cP2!44|km^s>%b^Ld;p-F#pmuR6-K0bl<44({%@PxFZzIi=9yVj+I~if!CMn z32C2@%~Tzj@_!s}rgPjuv)8nk`~R+k*mIbQILUrM8iJ=oa#I3~%Ho-r&+0(v<2_5lG&eGiD95RDJ(8#o5>hXfL!WDUZHs;28 z>3_?a7rHxDmmC0xPe(&vdxL}sXr*_7b0_BT>x#0V#HlkHGc{k zbiO1y^P0@x1svtbWeo)lQnoW!3Jj#SG&HE6`X92tUha=vN4mVgg#VLEgXs!{RemOX zvoj1&C&~++Scyw%ki0Hdk~zR z|DJkZXCEo$4sZ7Pg2%GEGN2JTkrFFDKR%i({?iN|p{30SZG6jg7YoigtJM2Qlyr6R zoO8M<)&mOz8$1VUWEVL~;;C60*`@7pxuab5y)MnNxS@d703hCX`aJt*y56io53bx0 zqHXPMSk0CV(WU->avARyhQ~n`W6PWRJa`9_KLwEEjx5BgJ;d-hvvH&4>5?YfyGx3q zw!^)vHi;R1h1HCBLZoyqqSFBO17HPVHvh!Adwj)rBQTuQk?~l+9Z5e)NXweQ)flDX zH6TnU`NCE$lO6P*nymBBj8WJB&y4ZOYr>n9tfE{CAR%p^=D*$^`7fR9eSj- zu8W?z+y)zBS4oo9ceTKG&aPubwxO+FLXE`jal(-gWvgH`O3nob_R>w`bjKwRefx}VU zi2MXFBB{JS{|>JREnCQb?~Lhg`mH;kJhniGe0;iZaEjXRcWG*EjIA%}R}VXP73Is= z3ac9psqG?6-XMW|*Zo0fNzDfys6EK}X9SIQg@7D)jWD`asb5Vz4DQNqh2(7BXktp5 z&zo!EX)ai~`hSlFUnpHD=fSO?@I4tM)H~q23Y*@7Yy~^UV@EhIw*3WcYO4B=mprlv zH@dnf*#({JM|80BeD(E-+Q0mpTtk%rm_qp}ww4kGt-s)1hu#Sr=~EogQ0V&EE~_b1 zP_REg>-FS#W!8M`G+`~1$lz`D7){>=&%FD0**zGBK)IR5%YX^ci zcu>ks^o}LQpg?sC^20wTSjOCD!Z|C=2Iwc<3} zGRkH44$4zv4me7yC2qo@IVZZE=etycLv)An_o8<^XNiVTw^S)^&g6M@0OxC-*E54V zShtm;q?bNj;s#s|7~H4m&yRBNFbR+mVtDAFf{e*pX?20PBm9%&|2_z)1OP=6x!4ui zzWiuil1^EkJp3p+uOJNLaPd{axNaFlE_`i*|}oaCn+j zID8|<4j-F~Bl5bBms6Wv7RtwOUMDLRXes~svo}gP(9VgkoyGBe`nYLT6j9*2Pib&n-F_IeDH8uB5 ziKoaCF3JwMj50Wadn>2M7Hu@%dM3*C2B!NtRx&@cOF?fx__O^F+}uZNud~H|W?yF~ ze31M1ud=Z^S<=6GZDT`~%3M)PE=`rVwe?D@6D<%2;H*CXP{Vh3)r!jV7DZ^eI4^|t zcxu8-wi`eES34kw#~TcX!V#600T>+y1ZVYa)zX|H^UGTb4HW;`&(Y%l{sUX0NSwL? zVXS{*ph*OcVAVptXIW91E@+M4v@{9GsoM#q^ij1=coqda%(qO^YdQr}l<{(om+t#D z>H9J`%j2Vb>z*7_-6lM7(Q%!P-YWI-Zh1Rc`1b*%OZi8qP=Ja7;yP|TMHc#rtVBTN z_ber*(7g{UETioh8uBM`e`foz58(^Ium8X&GU>gm%A2+V@tHer z>T;8z2jFxHN=w^O0MbpQ5Y_yUHwN%NR}Y=&+!r690M=2WvxGCZ$pf^aF6a5%8In8i zt`+qkO0oUU{+nittX^Ip1KP0YtPQ7i)APFVEHbqIS4Cq)?})+aoM!O;0UzXRxpwW( z>D?Esfcg^yH1-2LOfkn2!hCP2ZjlKRUO(LMl0|x-9TlR^v-B;rTCTv#Of;$BPJEQF zF&6!&KCA8aY(}rUr^qtRU1P?^BPdlY8*Lyc$)$7X8rD z#39Y1L;vRm__tb6C<)2?-&kKnW~AR{+N5K4Rh4y>=Evf~v!xjd|8@0g4;FXc^luD9 zi7}eQXo6K#(Fayu4yeSSv-wOU1azOjKboQyN^A9fE1N@0XnA1Tss?1;ooa|=Nt7$?-!v^()SImQ#+MCZ% zE?lI3#!Xm-p{j|zDjX_tbq@UK;mqYVd&F!k>);+n59nQ;S)XD2c7QZK3Z{N(CINjg~*Z^4z zcwBkxx^G0%Z9A{!V0h6ZYnDlA|Bk|@^lh9}g4d=4@`{VHsnV;$vdb(=I_e5okU1yiS@I0WOp$K@-4+Ip=rtWqNlN;oD;)BXGC~BQ~`;J@P@s z-M!`s?Pr|ItXCel{V1M~f%q{JgL(KLqt4g&EGX-2Bp4KYy?zzyI5)eQb7_qI?CbqP z7~~ZZ+wmOzle+WPol@O=Y)};@7UXs7g9K%7Nv}?S| zEVS|ZZUG44u#`}h+CNbpV{1lK0uWCD6pOlPay-|3+-`Va(@_N4N-lJ#*UM74zOz{+ zBWbU0O=`#7oF0BKS8>A;Y#q*>UN@gIp0c*I9+wHK^jsP>-S@y7E6`YWXZ^lx)5#z4 zqb@q;czO}+*dOk*Mi{9}dqysSQk?v6#G`zD8G}F;){)yeU>d}vwCx__{1|CaKXUT! z6L-*5xd@c5-=6dF!-;K=uqoeIN1y3m2MDgxC_rJ};n#WGfXM}P(*|0$el%~4N(%d! ziC<&Tu#<&-$61r`G#kMXw>CqZ8;<9QolWCo@_c7_{jtyRLfHOR$lggJpH*2$>v&~i z8gkOyw>par;rnP1o2++q_Hd>zU3RGLV$HVC_Rq8Dw;DgT1S>|xG!=6o$tjyJ-`n>6 z_lk=;8+=wM8Sah`h&17>Y1^>Qeaur%!xiDib>8`Ckr`;7JF(l_FAAUDa&!C{`A<@u z8aa+w@IGCA`feI$yZG-vS!ZMw;v2o4(WI0M(a%%bm9KjoKxUr<2U(l$vOtLj8&B2x z01u;&6RKionLPd>7%1lKv9Xaw=OH*hybGt-N(l$@&rKEK=Ev*z*K+9T5imIdT;nb6 zj{eYZk32PtTUKlzaO6JjW+Odu@?x(~CzZ5yeu<8-(uwp4lW4u#Z8s^d<8HnwBrE`m zR!^edS90@DwJ1c-j^{^iEjlQ^e4Vn!8Yd*~dzRTsZ)jMr6M1g_S|p*`K%@Zp4GIqP z0Af_=pLB^`#pjK(_En{fb-K}CWK zWsIjX6SuoxrB}0oH^tw_Ewymj>HQt+Mb`>+RQQc}5kK_KJF1q!Y7%r#pMT8O&Q4N+ z`EFc%_Si=L!7;x>;(hOs=^jp#myMn)?#`@P;vOOYu1RWC=oXq+3h)=p zll!g#p2W|p@Ogjf*J;PpYdrPWHB|ss7idhITDEYf5=IQfc}`ooH^kiV7HiBCICV=>gaIL_3c~&4m9*kb&u3>;5?G}niU~W)D-;~dFEBHaKX@v7 zXo7qm_GXx#`7_=s@ow<+o6WcY?^Y`N1zg+Re9b$rhUXLC?aRP_u9dr{8TGAwy6y7c z2>?QvhmihbEg(HWcz)qzWZud1hL(gpax<&gJ9zTR1!XXj_D+1UK4Uc9!Md2qL-9EM zo$>ElL}0>Y%VZZw1!Mt0)9r~|BX?NS@rG{pm1nbvLHaTX@&+Z|y7E*2o+YI0Q*7a& z7jCoBb@RLBW4F>WYZ?X`Dyq((iPtu_#8RZBG(mu=A}(p(&DA)d3P;=a40mjJBLFDn zz7IRZLg+X>3^%H-LaY;#k;`h=!irPRU;jR*WZR&kwp`ouhm=NJZTZ~&n*>KHt;U9;m#zuCg?{FT85Ptzx58^f)h$R$t@jD*9+0A5CU?^&rIK*&qN4D-LpP&4&mJFyr_agyV|n~LAL0v8W?%K3ONn}xiZM1@ z_eHCQHAO3bb|`_t(~Z?YfFsV|-!*u7;$Y8bf>A4BJaUa)y?50^oSZWU>tyBC$Can* zEwzu(Lc;msI~o+9d#@tY>H|gET{64+_GcHoT{#ql_2`_0nxz>k+a_MkR`#MH=Q}5X zJ9w0i_7v9}2%ccNVDcsl9d|$bC;=8!*OKo8-|YtUKS$1zUOrSR-%M;0Qc*2qNpP6p z!UT$f+-7v4M9bESpVdd1*vrYY16@J7yhTKBZGDPZ-|8GPtt6K|VuJ*OM)SJ!NHR@Z zWTFlis6F|Q8zT+4x-4>XP@^7}gzUED$iUIx%P}A_8X}AKzsq8#{KY!(?s8<#MnE%8 z{9nD8$=nH}LnXpf>ib)c_?Ix|RuNy>aU=n#r|A*sW<%xTtHx!6)uHS}mc3iR(gnEi zs7n+<)m6NjeXT)aeId;?_klG5k03`#9$^LYtmD8Sl=$@(42eKXB4~AC`qRGxK4fKw`Eq+$?1@r2kFi9@oKHoyfph<*ozuqVfm$2;dFfg#cEO5ysU1;TzEX z;hrmCuTkp*~ z{vSSyOL2F1Cg5N8qo?Ungr)@ajSjNxaf;RR|;6YuIMKK9VkYf%@e|)L`8hHR&1Gg-MP*w zfhcbJHUaLUgxc#kD=ODD(n37rEXG92j{UEI(No79(Nqx#Bji+_DVsEEH8feg-om2h z367aVoEh^+y*UhGVz>5Sh-NdF1Ru=!*~*=9CUw*oaeUM|(GuiinXot10<6#RgRH;dV#Ud! zfvQxa;j$j&d}Sj~$fx2_va+O0bU`HB{6Gk3%V1>Y@{7{t9VKbX>bI$V){_{B8#&$t zK`x!=Matsco-7>2Y$sYbEXxDgf~}pXK1Zo!Pw{8tDPt#CoP1K+A_CG2RO=k zvroQUC2t)~VN!1h{T6M==4HdxSb&;nGibUHDmU_mY~+tJNlW|3sEDF3af(}B zD_St`=Ibj8C1uUAVuEt_`OGWNtFpxs9u4)ns$_?Z6wT2n!-1cAc$4YGuwDg5!X@X= zNXpYhIuB2{38=5quoLaJOKP-4go9lZ`LYh6KGHjj^$ItiLPuE38d4pz=KI|7-!+_U zJlVi4xOi;Ao^;I$8T0YL(_;VP<4GgCpEz0Va7?%D;MYdVnoQn}5|`J<#8K^FO8E?D%4l~bMzA~2rXI)N2&)|?pD?!%nXMMft!*lNaNT}T+)sy&ix=aV*3@p?{Jo$Zi-_S zO@e#qVs&((q#ifFrSZ1m?ZFKpKjZ!Vbc-pJHlYDU9ZFSWn%HxFZu2pFucF2Wdh1rA zcKxs=02iJbc@a<8jFEb%DeVM9JXpS~34=^#GBDFdL}l^poWc{e3bC=)8~MeSuG?LE z%~;*_U#WLr`>xp}tzV5{GcBUiTd$~#aBWq6`gb?T zlMv51yx5;vZQP9zclM<)e$BiVvD1iHJd1b}>LV|(t?qfZ)olDdgU?^RNX8adURm`7tS2cvZxWW@ zI}aO{iWHv4&KvkJ>!kMhV3vV@{NiK+y3!0;XRYYjzxw5p_%>EFbcajbs(eYYZvk!A z{%q^(F&}89=49m+e#40&JiSMvE@AXpYI7m=56Cnci;h7Mr5b0u^6F04+~$Z_=}qI+ zQAP`};=PbP8qpMycLZ_s1Itv0`liC_F*5u-awLbk(DMc}PrUy)*uVD8Ml((-Rjb`M zKIJ*@t?XNloCH!WGOG9 zq$JEWHqr$_%V{e@!jt9LIA1w`3Gu*Rt8h^w!?}Tuwl>=9>Mu*gh*_J!;`MXr2}UC4 z0#i#nqKr+EqA^awGKcEoSJY{?|wb-uC&QYo4oZ&d*c zqst3BUrf{r{sKQgHAW7ty3^mTVM48SaP`~lE#0A?`=t0U z{vb*t%Qos*M9odBlxo~7WT8%6WusLfb#LAx8;7T<$AYv z7gcBqV}k}97IV2>SO=HaFyF9K`2duuoz1V3oVubSkS6$-nS9|AcpDnHBJ$#1>Sqg` zBK;E61QL092|fG~M54tb96WkLC9PnBA{cihmPS?<|2UD`_2q@9{aL&jYbM^&ocEz! z@4ecAIh1GY{+fyb^JsI_crv%qDz$Do#u5XofN=NQK)K$|F1txI_GZ8b1{*{f-vm#L zvxgnr7+wCK{HB-s*w>MT6H@pmkM{9fLK%j;JH$AVj_EfWt|9v@QtPEImB3@N^Rms` zdsWR-`6AVKr-t~d>gm@I;OvG(xMw($C_3t^Y^oFq8$@g$5{GsJ5h_zj29>!oVC@%a z!kW!=y|`A85ze{{TF&kWn8=xbv-4hCM||~ z4X&g|_~~_k^r;7)-@w{Z7;gF!|j;(XNC1GIS)H*%2q}@s?OombBB|bczMx?cW+C zFn1)?o4>bypM_kyKZOrO0dUEnKT%5rF4#r6Rc^n~$6knqqi^Iz{kbjGM0SR)i51v` zvd_x?0jrLxFSj$ckhOyt+E|jQx1p^ z-@hB1lvfujD_*F1KI&%hYUJ!<(JcNwFcdUuU6{Mj$kHlzGGkLeK2UG_ajCN3!0^~# z8-V9gqB(0{e>`6Jvo2@$hHKwlqEF_^GclBL#wuFay&wZ=WcHk-Ia1uj%4fS`;-Gmt zJI+EwrY$!Az<8Qb40Z4LQ>s)<@pkj<(|yJ-(n`h}O~3A860!Q2leGp2p^)e2L3PJlGd!_1$ys?V)j}4|*27;il*-3vh>0kd6_dssdd3|2-&UDkJ z?a7(2V6XWUJ-U-uD5v}AlJsN7z*2zPkVIwki8AErwWLV zQ}aB=JLY&p1V{V146%Q2uD3g-(b%8iVpcMY&R!yD@Z!e(sW(5U@Q?YPDpvQ2c$iAr zYXlqPV_E&a`z8opEQbgBweHRh+{LK_5tHn*6ir3P-4h8J)!Iv-;GxM2qC^pA&d)01 zyIewe>sf|=F7L?K`_y>9FdE{%9lVYpWWP-gmM115VdLUzv({<^oIglHZ$Rv!X(PuWKi?o z&%)0{I%|qQUR!aNbqBW1@eAEdlvSBTzTgrU9Ax0++o|x{s`ZPagg>T!hfp$oZ+C`0D^ERqa=%ZulgyrS#{SU@evDgB%+aajZAOtH9wOUwdDw!_8q{^( zBY!AgQtucV*GCX?+e4siaY9Jo233=Lf?_*$@WzCG{Qvz4+urVM2etO!szZ@}HtkvB z6)rEG-+in{{1PRQ1T4@vS)|bIpAcrZ>+65cBd0}JIhvo3Etx#5+aj;w&sU4eXkc%a zFKF*3cB8Wk%_P|)`@bQi`r7`IilmbD3(nZQx7Ow5^^RXr=K8d0mV|0SS25Fv;uAHb zJjss-4`YFGi0ov}@1HMn4B-W;y2HEZ_yWtDgv+B`tCU+cgQ!5aXtTUtaP|8jHkAV8 zE1%Kh9~H%QN1sfV%bi=t|Jah%@%t#`8)|0g?WBHRxzDq)uek$}?=(yH%+Bk`nK+So zKTYwX^)pV{5AT6VTX1}98S&9L84tih!^$Nm$@~I>lYzjLjsJ4@&7lXAX|lSlF^xCv z!P7?6Cu5*5n3?k%E?!;uFT+W`ee1DlyEpzYNf)){Usw2BEG7scVS@jAD^J8E<<>|3 z;L@rk?KKs1d@ANi6$*LdHWa|2V{sO^8e{o*<9VcGcHU*x`>QZ#mOxpkzA zK6aRGBG&o+?T^4xi&rtMOR^2^Xohe!hlvh74>V6CJL)`tfYq2!)KcNnmh93kl&G7Q zkH=h_#hQ=SU+MKQAAjAZmC~6U_~{2F`S;>>v~3SAvK!*MD?5h0pexzUpE||=QhRnI zw>puLuRfK?Rr6M)Z!cafMb~LqdsQ<>oy-_>Sewy{-QSK^CGjFKxC>zCt5zR}O z?ZWWgvnz%p&yoImE@8a!VJ96QQM=Bg=F*S34)b`}2YrtH#`Vrw5)r=Wz&81#F~hg} zwP^gyA*Gt-Jd9T+7=xJP1I2oeeg+V_q_dk$QK%z4*fS1yefXQ0f7r{*cRWjEx)m5~ zF^R@Zu9DLd5kfekh|<$1(BVQcKb++@-(UmUvpq zT-|>sKxt7xlZ<|P1d3AS9cAVC*~%RQg6wd6EY%ELnY3xAbwe!=uuVZK<_RgQkSzd~ zEtx=dHH>#)GS09%XJzYJ9{0#$6Sfz#_&|I4e=zLG;;D=Gbg=d+UUk23ZO1&^A(BZ!X1}CLs5>OZd}D%dzv_-;nz5;E3m6Gk z{Z5rZlLqwpHre=kX601)s4wscOAB<_Z2us&oL;DGs>`ArANLtS&KG1QlN~)U$8%OF zmMPvgF&}YsjizB(NSPGw{-Ax&2Q!-`V>TjEb=9-|8}=UYKLN~dCRte=mFH7Z!_iE% zPy0P=-;z0Sf@+O@g3W$EeTfo@DbHv(tWj%xp1*Ow>26-k8wALJgP+d6>Nb8q@V5nM z&?cDrSW9>GB!a-Z9>VuQmLw~5z71b(H{N-@JiDQu8%1WrQHG+sX_QwRX;Ml3jI?7pRzpM zO3W|$EqN_YOOHiYwNRcN0jpL>sU=HYx74?S6o-u1NH5`U z>IwPV2Wmdmp{vjtkX8lYTyIy}FhkFCT&oj*B4Bm4QQmr5j(L=x$}!11o!<#wNtk{P zSjcgIPI=Qg4Ey_fZ4!LJ>hJYYi;JtLMyG(c4tRE&6$Zkv&o*-VW3e*RR1Nfi5TKHO z+TA;7WhlDq!{LuIv+8*M1WsI6tHMDl^cyHgy zuv~{QR|cXqIh)Z!YUTEN9OEm*#@SB7noqy)Ye%@mnmpfYHB_$=&QkRjh@3a+GN`dX zr-qyENUze>IC)YcijaylyJE(nqH&e#A^;ocpcNE^G$n;XD?MqRE<>^S3(^$DdMQ`0 zVN2aqaHTb>K#7W_7yrxopv#9rxY4QnM*(&tQk z>*BZ;qJ1p08QnFVf97iA*3HdK?QWSVQsjaNL1EVC^PduEj#B+0uS$Iq)wto47{Cc5 zHo!|H03oY%UPA(WhNcB>FRVrasDl%TSSspQUh$eM}0sT_O^(p6!_yx))=Teu+ zEIge5B``KVNuW&AGD$<~%SB6(PA5x4F~*U`s*+m!WKVF}K5`QeuKQ&cD~;TN#2!*J z*)B3ZFtpUY53)49lqgX!tWVaQsu~&6gBaA#0kHnOhfUILW8m}OVD~!y5&~a`jEkBX z*Bl*BZ~ewtS8wT^k}^~-#!8z{iaEYaMG_pgD&$fH{^g>=vOdnfdG7ZD))J`h4zRm3 zU|t5sC*U_gJFvb&u>x+%xrW1ddVons!ay-1*mb)v3os&RfNmGapC4Dy0FQj*-qErQ z>QuA;4~NGUE1eaMW1kIk9rqcLhnAUtXr&lf{H4v;M>J)hWbGUM5Nn>?+)GJ?A$4sg z16Rv1&z!Pd=BgmnDoO!qG$14_V)1VIN#YuW%R)#t9Z|L7kz98Cz{Zo7@PNz|_U76L zFkf`PsXD>E3h7N5Sx*m1DRGjH^LIrM0BY>s6ZlG0e942LiO~34aHSrM{)Cu%`%jy6 znbqcUsZ}pn#jB>!mweQR%+Z&!>($HwOsrn*Tp#O%;m5`2ra6Z>N(81Q8>_e{pEiMz zxv-?TI#cts-?Q_V7{7^Q8R;#xomUp#DM=nM9CMwNw`p;6C6>Pv2FO$Uy(zQIRulG% zm6aox^s1t8@fg_`dUp_^0cTp)6w+b9X00{NLLKSL!Uavb?EzkD;=RCm zpd|bs{XV1D{6iETM4mfzzDO~t)bwk3FRev1WeP~ku%NlzD8{I)9{SRC3k{Ykn9$V= z7wEtk=GBd!-EX!U{gr=7A_SNBvmmV&5q-q#3wWTX<3Xc6!uvwy28z5ZIeQ>&WX02P zUSOTf%p;%;pb?*9a%C*4ftg!Pwo{22Lx(hllM=_#kNf< zAIiVP_%*@w66f6LywC0d+`LNOlk53Epe68^>qdLfc5pUMQ%&l}24~BI=lVMSQZ5ex z#)q0sHpihN{yYEXud5F%A}gF(g}50(xhDQH%1k@+UONMyzf+L_EWS7t7?rr>^#f!h zQj}%*2yu0(H{0E6QMb1_fVQ>9{bIcFe-r!pdT5wx#)xmHxtvFR-l>=Xr{3|lU82B9 zW0?J7IxHyqh~e%!XTT5-DGa?%mJUeB71pujCCGd$aGUw9EZBQ6TQ>0_c|Od|-SR^+ zLn=%A-ww8CBixOX&fA=vz!0}@B^=`n+<0U0pYuhXe5}tzl0L&kf43jsQBImoF+blM zOFXU0Amo?petk}X<|)-P(|kJGmYhm{)wgi=3c*$Ai72b>NiXe2_2oF^`%W-jdkV<( zB^?gB#3r88fsKfI=0N2Z=eabNQPP`gHO*`F=jj0_9x6ujOD|hl_=T#*v|F}Pi5xD~ z-YehvL#y8XUkaLJV`k+Qe;jB4)B=!6iEOII14}NVPWs~85{cGB5_t*^1I6qf3Rvvp z+)k_QxIm=;a(qu*GWhIBFh*eJ;`({H)Wu5-j<;khgwS3w*Eb8QGK+gcf4d+%&Cv<8 zJ>h=N;0pB7P5JZtbv+c%EaB&WVE_^4i9zLMG76d?8Bi6dGP@7I>=_)|6aKSVJ_ zGTGw@Prqu83J>N$GwCM{ z?u#n2KgGA7NM`1GECPNOVZPEoU!%r0QQ>qndPAIn*S}0fEATJqcz|%Em2`=@@04~5 zUEhg(S0UrgnkM#*Ni6)OZDnf-Fw2EFuV^_c{3j)Y9Pg9aGjBJ1^D44WXEPm4W=0@J;`9}>=CiCQD6xSgZ2nOk#h0GsS{!rEa{H+pe*e3a*Q)}$Z( z*j_&RXN?o=+iA7EofUoRv-z&!!2bo%zxe~d>}+(5!pmy?E)!)w8%^!nL>X3;YD@{3 zbzFCNzZRL96Dls^08>=-BB4NCUaLg_q4uz6(Sn}2vWv6j3%DRxQCEO41r+Y#kte@M z1x*UUi0Vn1ue@^jvA%hf^H=49zf8VFj@~l7UR{5D;F9*l$LRT!7vTr5`&r1Q2f66) z0uSU=j1)ZCP|DBaDkqM2Ex5VhE8m-Bi3)=~Vm8i)OEN(8bt+!AGdbmUkH>W_$_aVK z?5K!o=_j@oo&eO}qU7zJy_f;V3@(%`uxnRW`}aj>)VeNVev7Ni;`)uAs53iV1;YaE zGnG>qBkmS7T?Srf;}%~BO4k6NGdId&d*t+j$C}6O82-LZBcrp!%+o$gEQK)o&nE;y z#etNoDT(0j`}Ly&mqnjJO~LVLqgds%@^tv6#C@=3e?>pu(Y{BA>Y2ScyWlu#VyZ86 z8UwYC%S=uC$YD{>WoX=tQ?s}dU1$b7sZv>C-3vr6Xf5t}b}qNRS>UjA?O5_ev9{TA zbZ}Ju<~T<_Pi1j-nh}LGsnm>;awI!Xqu`S~*K+_83P#eakKO3E1(K@P=1xAMk!*&j z!E4(E@35rC2M?ym%dDQl`0h#PIinV2x^Z(k7%xA}mQ#W=t-xWAKCE zxaPr-!R5JJc5%v>XaQ2ffOon=$){~RGbKuVkkD(y?xr7y;8NwQRb928baXKouCL}? zh{1n;e?j#$fXvM$YVDk_?5P2+FXu{0Udwz#PDNSLwMe>{H`~0P&MIrS4bbkgTaqdB zCyl;(yPzuT5i%@f%Wh-~Br0x$XZ#lYGL&@YGOYJySk@QgCw?xl+%v`ET@ zto4A+1t7QqW)L(5*Wz2Nz~xL3(uO7Kr4g#{lN<3Z1ASi7=i zm0WT|G=i#Pgw2ZO8N%$)>F=A381Kz9a!?X9!a{nyqZQCISy9@AgwoX`kLSZ0WQ4~# zI=`%+9CU8Q>Ib5@^MLK>aupcIEaCyoS6m92N>S*VP6Cn?FC0d}9yH>F6wh4|SxMnH z$8V0*vb>%be&CxO4gLRJFp%duVsaK9MLyj3!F3g*1?k=CC6+Z1(**e^*AP1z4NC$Q zqn9EIJl;|5Rjxpi9jGngg*rH57Z6_i=1v#d4VqcWRyxvMW7wnOD@&oYaew|&px_5B zvUJJ4AZNq*FtD(ejnwNE@ej8TxJO$S=0@RX(9sKoTLQBL<2>+RmmVoRUyB)fHLee} z0pz8Y=_+s8gnBJ^)sG%`G4&FPZ%DTlH2+5%I57fa-B&?Ae)?QhXw=SKNtapfWKs!| z_@+&Y?)SLD#|E5G7NoTuG~La`n@qEdC%~reK1I^LdYv;u)%^fYPnu|38CjGHLSmEk zB+3=d`E>9rc2~ePSE|Ggm4o2=Y9#mK^2=}D1gXy79P582?p;cJZm4y!*tB`$^}%GB z5qATMhK=V_Y9fH3s)#9-)$4r|<^L@AN+{uXL?{cdnwz}y z8}9;GuCGg97%yVvwBVa=c)32<*A)RiQsq3>mdK)8e#zz zQ!N*eF`xDc6D$PTUv9q$bf z+-=X~6<)m;tYgU-o7JMJ672s!-m|Dcf$?s8)0D(vUkgEj*IWEq(N?U)X5K5+0>{>% zM_06Gh6=G^y-oFYy{pIw&*klx7`bihxBNq2l(R`nl_LADJ0y!77Tf6t5Hy%pj7fuy zJ+f;*KHizh&wo8Je#bi&IFW56mlN#E+4vXWaAM$W`zH;Lv)4jA9};*xyp-#Ms-F6- zrolmQPrIEtyF$!YA94$+RSl&0Ew2fxO>|#ROIYHwbgY@_vS#3QH~4)6m_wu?_%7ND-E3m*r(+s(ZQlec}Q0H+JIG~=iD<{9QLN=Mi8V<1IX$YOcSKXgiO_kyXn{H4*vFKSeqYF#}# ztZDs;xpeq5w%$for`?#&cSB8(Se}gSw=q9bBs_5Pttl>z3L1hOPYXtwR2vk?HCyWa z_B_kIej`yS*Kxp$U4}pOF{L7z5|)t5PBC|*l6>3-N#*H7DZz;S z&t3=}d#WOR<5#+`*G?v}g^5H%3%7$wzU^81vU9~3zo}gf@#Tcuokk&FW<&5ai)q2d zlr0r@9cf_81_ih_{iOWwrqipiyr<!pN}yzSNUA!boB2sm z)ja~`8$wvuaPq9<{+Z7LyHz1H8knR^f~b4cJui$I4dPmMwbu~Qrx7p*PQRFUi3AES zBO64;-=?86jHhRt%Do)Nk0e{eq&${ku}$I^9wnWOsCmq|aXbm}oO8&>ESvT=eeIVi zB?Pj+3r-xV|*|gPg8NGwf|%miMO#-~`QSy4)TH{FF#iN2-M^ zzw<%UCr4|ZPU$?=o7-=1DUEm)Y=ccCVcC7}BADrH_;o0jebkNi&?Bl9OX8XDcNuy; z77D9sk~N=R)h~!i9|lTO95^07u|Y=ICtGoId;9l|-y4g52u!1v#p*P<&Qg%Dmy^ln zm_T^M%#W!;5+8<5=~1L@9uoIT$TD5>#0oV{P!3HoyzThYsW?z_4$1zFsD9nCQJ5ou zsYB#4Wn^?MT`)XwTQ=Gpg z{Oj~4>O`Xd*6-nI&oTNcU07OUI+}+)yc$svK@IB6M&)(qnRY4r@@?v1sqdxzb;P;- zAacs@OH$}IU4jgA}XA>7}xEb@j&ze^&lox~&MaB<)Wu`l+ z-u7X#x>S#v=}w&LFuN1#{yd*rh>oQ_rVO!Y=&_L+l~3={_To7y#YEdp!IMqC`XGj{Ja?NDabI4<@=Byl_rE@UVF6XTKu({_1+f>rZA{+|55&3^x&kAqyiE zj@;@w^|m4M>NtQk_ zl8!qIhb3ES68~JdcCQk!!E_}F|~PT&)A4P3em(I~&F3$EXaoy5oaToa zWBba1#2&ahyM7@Bv~H<;=sc%oavbK`2sBUV2zf~N2PIQ8zsZbx_VFx-FQBIW_bzq5 zg)&cZ&s*)$-ek3pUsE=(=bk>(r#=hHMyPAv*)5jJGP&*u+O&fYzWRF!$i{M8(s?X% zpUX^+f50`06;H&kBd>}+ZfCB&3>2TD`^e`D67lJ*$!vwksMP0SMZWi1`-s4E$k)-F z^*BNMh%Xx2<91-d+I|0K%>2mjbJ-t>#`d6EUm}yO%c?@=j!0#cMfjZ0(%HcE7v;t8 z4d@XAPZ||I(wp0GC9;S zBBPrzPgEmI{Qm6xqZCudQJY8Cm#74m_|9XhP2IO`DWC%pyZIq* zW)qw-)BS?UshcD||A@MHG#OwYr%XQ*-u3TFbGq+Gv5|m0UII-=E$+Vnvbql_7{Jzw z6{_+7OVUda&9~c~&v~-*TxhIR{Y;R=!;B$O=$`X?AzKbPhZd5)r?d8sdK@i5ynp?h z^DEsi);FD!MY+r!qBC<+wOXz!#iwOToCfW@o*oIY+>mhQbTOt)-ujQtN`Uc7l+Sn7 z%o3(aRrUU1Q+ItKozdAhDG|c;+}njkDcF)#S9>?0?H&ziK}N0my?$8ka=4g z1O8)i?aD!_qoL~&$|Mywb%MWu3@#FYBjTfvf$Y-nfumXNz6oW`xhA@>2QkZ2j6*;v z;rdEb9+!JxE4tj9%D1k{Jutui6*~I4?S>F=-L0phSl(sG-_W@gh>U_6KcIJ$ib@~N zgKE%PIZBs8rp1p=QPQvq4q8%4D8Iy;_g&TDY81Q^kyPZ$*Y5n524=wKj3Y2XVq;P& zc@w*-Pvwt|sdgf%&_L3{T+B2T**CtXuJ|aF{k^*b%bOg7E1)Q7&I_ycl@J1ohybCX z$_oeTiNKZKz*>#rP%E6@%T^7*05Heu`L#z-G$)W0Kp_4eZ7`UFH*;v&p!eg8FB)$K z5U@Re|4=nFw`PwZ7%dR;+frEh^409GUsY9(=@JENiH`UDGfB3t*f^lngLF@>F;y|6 zpLFvdP@}gu3*PZ44f+iY2*42{iI{-TDDRxuE@0Tm|9%yluGoK%e5I;;5(cEPzTgm( zYzEXPpeIS)c`CmgN2gD~Xmf{g+{aQy-cY^$0w3Rx2SBF(WfMI2Txj1aVz{IktL&FIKjr0MNwc({|4%%uIH~=t z0G52EuKbB$nCUB+{3W&?Lk6+;-+*+D?#~}^_;-=;Pg2+gysfzbm2Oq1K3l|D2if@ZhypTgb zLT}SBDqP$D7m!&8iYubmcm5Gzmb!})<_X|boFF8Ln+q5q^+#mCd#aC8QPc%A^5O@z zK>Y^+Le&y``XJ2qLu<87c0Jv{ohPhjl@7WQ=B>$V1`KB}3twLrs6BmDT@{1`45(WT zqwql=tJTY|sU5TT^xV+*)@n%|90Ap{Gy?-dt!2a4Fy49~1k4Ylt3of1x;7~mZ3KCv zUBbVr{eLaM;z*R`Ws5 zdH=uOA#Q@y=9x;mDUz+V{nlaj%?@=#``-J@>F6n@5ZY7iVpT33WUk&ANC zx089YgZuWoi_;ylI$$n|fS2yZ&_bCv+@Yo?X~@29?<0OqQ4EXBT5!a+nxZ$tRrnw* z_ov^`O)%aHaIZ=cKJwggGHPNeFqh!# zlu&D$P2_)pI{>s@+n{L_k})aIZvfFiI;>4(7h=8SOZ|h2?3ifC>-Zob%EWYrQ{8H* zq2rFXLZV`;?bT-5gz<44B+8A_Oj)5O{bCt))=~-4mGi>@W!sHYZ%V z(toEXmRD;EN@b36y__W6^J>b?{1&0DM9Lh!`H>NJDK1lg#0X$BNup!P90ccKuS2X1 z+nNP8KqC+ZfwDA4@>lWtT*`aOJLTHt#9#hLx3~T{R}~|E{bp@YceUkEZFJ#|tXCvN zB_b^SFKF361>}ADLUzS5>IK*TO)w)sp^c~zN9^4xwT9MPFIxT9T=fw69}}`jBG>|A z6X7HF1zJppD?<3MNy@_cTh1v491kzZx-YS5?7N@&oX?Z7_sahLH$ZzE|1ZUEvsYMV z!ePB(hk$|o98vi`?mQhCNVx3s?LaI?3=bx5!XjT<7nA%0)d1l@M~}_jCyM1Lo6k9Nr}GCmc)ar>StbB;uzc+UAIVGSu=bL4`fo_8=u3O@ z_u2E9t<2jL%l}t!BI?`D#?%fDN>LSBn1ODn)xj_mng^BBOju%Mek0&U-9 zo1L@&cj8uZ>SN;>yATO1>9uW1+qF(&(9X_0>~sh`n>*f@_36Ls6LnI?df;9KivL{s zl3@C$NT-x@_S!(3fN|kH?9Le`OO-9b2H~OB2dfRZ1P6GcIQlpoxEj{4Z7JfibSH@N zWp)4M%?AqN;{crzz)-%w!?vNq2om*A5p}}nDMLw{o)}*SDhB`1uJ!?kRquCW`geNG z^MYtn*RD=%zlt)*S{0n4d2Hxlky1t-$C;sw<|R%9TwIB|BXz~ zQ7RQ^dIfwh`Yp*nnf@2oZHgD44F#KkO{t%BijR@z{VdbOQ5SadV5} z{*zygYcp{FJXMgq0e;tEB2wvVlHJbs7Cj*BWLvrzs`cmJT^G)%%@d^l?^gcrWq7)8 zG>y|eKjZ%{GXI{oHu2;g@KxX_fyEy-xdqVEhI{@jIsKL*Ou7mese}yikakyt83h=HOIP!Emx`7!yitTAQ^(j^rOpQL>jbiBspvL*FN`MM#Rcf{64)gF&rLW zsd}5*7QVJmQuZk3?TpnDpPoDU_@skQSX`(E-nn;sDKVPr9o1z$86U^#ew-V>$Z6)2Ef?V8vL7epJES2GWv?1TQj2s zW9-hA*=9Yh=66tT;TB|82Vd%tKs&|`cYYai_+u{`m}oOY4B(TClV#%a| zv~XU(|MQ$-Y3n-n#_c4aaFqWCYF>(BW%8&vv_(co<+bV1o6e{@Q+A`T%q5bJ4D^h> zCUy3F3=yp%b!1ks?we=5Kkl-14o5l$_tzUe^IUKE*i(_wIQj1Wz}#-ilx=$1bQBHt9UNkx+RzhBv}8{zfJJu)eHO zCi|Yvm94}m&zO+SRqb|%Es=5c!V*g9K%SH#zv}{IGyYC02FzR8TiRX~A_LnjHZ!%i z$@-h~v8}8EkvT)-T=X3;*BhDQX-24b!-}qb5Ox|Cj&X%&Lg=w^>?+-W}hlj!TS89}$5+^M;SCh+U@NYf|gjGIi1M^>x zD)ZQ||AQGG8}GhU{5Wqa;}uiXDbtQaxi$RzEghc}v4aMT#%>Pt;7K6(X;@wemE0sz z5FW91?d)y;Z0plt$N11f#M+AQt9rJ9g!$#Rttu0MTnuUxUzFbwhlP4LT0Nb$>+t|?tmq{z%@txYCp`H6$88&=e3& z{MeX)ruz_$zIlJK?&v5-pUTVbzG^GWML+U%|K!|_&Dvm&2wQ!k{E$Y>7d?&&mj?>N zJWil9c~#Gc4sg03Swg?nZ+r#`xf-^^Nf7dl3CC~ZJsY=L!XB#EW=t}0PS2kcPdn=z z_pNkmJzN7|EoXldmcU0O!)-D6M?q6!`Ks}pT=~QxEDFg_G7`6@0TLIk_98_m3mw(N zOye>j;)>eiDHL6pF~aFhaa;-sId%uGtuE!amC^kP(UIc$|2ZpMQC}r~&|8%xf>RX} z&X7{ZTMkgf1s>FHug#j7VW?X}Hg)=%vZbeR~HkoL_d-1O?qP!QU zPo*Y1e#dBUL^eVe?TPKo(FxMeh6fa=9_=SDt2dV3ZUnx)s}Cq~^MAH)0NNL{3fdqV zdLc(o;Jkn^*KqL?7|Dli;bW`9>V@F^YUjp@;t9MnwT=+KlQh$xZ^fLPlA`(N_^%SH zi0ivJS<=4{ivF#w+2OVBidfov4qtt9A!RF~psmw5 znM>5EfNlToI;^C3wpvt{9~d+bQPZmrC-Y0Mc3l-XHviAUdXoz<#VM0L{w|tL8iSB4vmWV zWEmm%O9W&{#rjHDSbTCMi;eC-cl^)8_x|$TLAO)V?biMlhPlujBzDw-L=Xw{9j2 zeB<&N8-YXTy79Vlu05m9#n#AJo-&P5%KdWJ`#cKuSW0TE7QDFRUqnd6<%n~*m2>#f zMJay5v`e=o(LPXyu)r%bqenc1bcDW4)q)X|9Qm^twI1&Gbc__|fMQ?aPi`>bwK#-z zn$KitS26c8aa%n~!|ji_W-qY8Pht2z2MNZhQ&3k-AGIWrREyX3!F69}J3zcWowrO~eyYKUV5(NyB?0`tKJtE6 zF93C)5FXmB1pD_;4p-tt_1vf@X)!Hkz*h5dfBK0<&^{f5s@4vc@9$nao*(%&0Cs1# z|5S*lV{bnq6}In3HnJ6_X^L2Vn&hLo9FypF8C-{OdsyUbvj{!p4{vMm=gmxAX1yV+ zx?0cK0yDD=I9kD5snY-ebCxiOLz1;^aw>N&k}I4B;)QjVN+GNqg2;W8AJqqm1I3X} zC0r~rz$R%}rOw$`pO4N@)X3gwFMYyo=U_7~a(IpfV=mQ(n<`@47ndia#T;(7v}&U3 zGzY>IaO@je;(0lLq3b{i@+x3hmM7)W8F8?cF3(05bDSQP@50q!TgHf|r3Di(zI9P< zX)62~E*zf2Yd;wGN^?1S8c@ONIWYG|f2me0w}HoKTSUw?+LW;rySAv<%*nQ=;H-1+ z@Lbb!pF*R7%{eYU&kV2wY0SdL=F}@waYy3i6HKESC^=KRIojYEHt6af;IHlp_Y$%==J zY#>~IhRev+*j}VN!8rXj-e+G8vC45hocv(P^MkQ7dP0m^EDuZ-CfjSOk>wElc@>?3 zt<>@n?hn_@6$Ouyr*7fk%uZx{Q_j9#oVekE)ozqwpF>*w_up$)z0Zj}6L-jTyZl|( z5}s#-pVoWVTE*=)ee`ym+zyZ%);U7M11DtzGQP>_2g-aq9doXBCwqu{DGM^Sl~s*H zLYqfmFUd7tVp z5c2FE^pkp(=*E5z)QpaER+L{JzDNnxebN5>e6;N9rf3ZBIQxHPeRWh6U)Vp5v;vX> z3JQXBHwX&Sl1qnlce8+`iiC8Bz%HU-S6Vp-|xKVyz|GLIWu?eJohz z*hBH!PS5p4h7@G%vziHWx(dxRYPDO_^E$pJlaX3q67o#HP`f?J_Xpj7CNz#Ofi+p~ zD(|5(Ada)W`DpXYek*7`&P2r**uZi#REir>8}c3XEw1|s(&Em$@4_$0&{|@S`~o0C z&I6t7P-W+zQgjEe-}p;OmdagCHJAyFsvvFdt{JcU{Gq3g|^k5Li%yB+Vi6~3}^6?vBmr21%lu; z10#IFJ|90(RwLv&`loSWZ6wlT9Hx9 zp6#V!XCU0}A$H6)GW`3O@d`QzNZa?CG)&`f6le5E&uk@rMDifEhCgB-`{OSl-cKYx zC7e)NnrfoqDSSoYOGAaGROPNTvG}-Np+rvDYBtP2QB81eL=^lCF`9L@VUzK!OYKvC zU(YAe_U*6`InT0j9m&KpLsz&jkqA@#pg&>hnYhgO^!4g%*7Y@&iK$?5Rr+yY)%Nje zKAkX?cR-_UJqr6K{27vFGH@{ceLX|V^BRcd*NJszSZL^4k(TNCQY$-bkc{>GmB?8fcY<1Hx4L|dRO!c<3B$;tyBv0I~e0hy#UQi zYi0{->`?K$fG#h*@NOBo$s9%m4{wlps;+X6+<%W+4sTToJ3ZJkYn6T13soc{f2N)5 zsIG>m#3!0@^OP<_vpWRl$6l!<^kq=bY$k$8n3o>gkA@&+Cf7i5rDZKzzN7PfwSjk1 zh{Sz&X}<;BlH29@xV04)lMzjXP>E^jSJxIn&i=Q;onu&S<6QL& zB4Y*bm2iX}BIAB(SqM?enmZG}Av`(ZPfN2bV-`Qqy`{!E%-I5}my8{m-AT!d0#nam z(~D-kL)6=(EvXe8sVqFt4b&99jF9!cc}IIX!qaSNAq^R;0Y3B@)qt8>D-9N(fOduf zmF9>$!yCM#9eOe$YC`!nssNzT9FxT~TDlJf3DDLXy2fR63alUSFQ}{7v)KKMzjJOTCU=yE`QAq5xj@}^BH=JS8mT#h%1AlC?=7>)K~hh$ zsnTd8(0Hr`?^9E9&v&AYCsvv%^;HeXo0H|Q1Z`z98>~0XkZcw_1A=KD+LB>@Pn#_@ za+Ta*y5-3JleW%S1v`MX8-z<4F*N8EOurr{0|Qsa9r?oRx-Eh{EiSQGp4_`Rbf!e|MJ$2{fAYS?0qMm)cf-x7XkZQ~-e+moXuDId zhP76pt)IZ~OxweqlIfqj?A z{a0Sph$6}fqniPjVvzaDvThYKqo08il49p{v9pESaSryhmuFtr?O<(=b&;LX(kZ6L zZg8Z<+`$_{w*iLIYWLjE%ej#wk6M8f_$k|D!yVa8#2;;RZap92PcwIJj*HJ_11jyC z9z>7~9(>8@iyQ^=lzQ5Pmebdb;X)Xv7Q_<==W}fteHy9d!VL&N4bBKYoD?%t2+B!o5i;(CDe#2y1x z&QyOqUzISY@QHIvxg1ed$%u9kgw5Y9?uu58iNC+jncWiK1uxKmH;-N{8(}aKQ3s#Q zzJC+$C(2=p&gxlZk`#!VDuiY~@Rd(2$d^Dujnc!sxc=TI$xF*zopfXQI+cDtLNUi} z$G)sTm4!3U3`s`sruZD@vWvWY7>d?xa^WvKYMpS)~7 zO=dt}vz>^noj&q_*ACK0-2f)ZMb()U`ql#EvHEb#?%n~&P-R2$p2Sq`7ee5EhQi!{ zQjCwoD^VUM(MAF0O4cmA+pD{ijlAJw-*_9q29(st>4NFf@K{Le(R ze$ouZZZw7`^)o=VL&J~D0_(5Sy4vSrK*igA=NkY*EDlranxi};=bH&i-j%bE_!4P^ zFHr!5djwuq;+S1<>j^{!bxN{LRO6S|CM(w7s(_3>$1^_hDhanmy1pJSuP><<%nK`E z{ zr$Yr=px5utoG09e6k+k=*kAAN9H}to@}2gLWsJnl)ar(*og?f^NaIBWl@pMQMty6)Q^bH86H`+{(%OxviJ>JFZEn1m=}ZiHq5J&@FeeK#`)} zydezt!nk(SLG=asqf#xB8!dES-xGg0H_G#SxoQ#<5ED^1Z6y z9{?_j@F-*B0&_f7@mxz|&C}wwwK8cI)R?s%7M`l97ixP`?|JZ0$T)Idf0}xW)+RsY zyH1gMb;Uk>YU=!ly$|T^)piPabwccd6Ka6p_FUC{a}LbRB_pP<tNKB#H)U*NdAD0K+Y9*+Zawb$0xyKN zQ?&VoKY;;FU`8Znb||DiPj$Tzl-GTYf!)h(F@)sqVmol6lt(X96xyJYi-D_8&01(s zY?UT@H4R=XEGk?mw2Jm+_kIyFN~7!|rH5@SYI2T4hpbs;G+5>4IQNsXm=o9~T!H4# zmqF#LcMci0ICOHTtVg;`DSx){IxV!}1<3@#NAU2W#AhPky6Eocld{UZCF@_$^^=S4 zthgz(J>f`=IN!+uQ-&*zTVM29?+}Q=Vl+iWHm;2%7E8G(AC7Y8mHN}h4~`+W&ccF} z7i062AJ?8!gfk1$^uaGxU1n>7=d_aG=XtI1tFNc`X4=wE)kd&!G_CE_%-))`uZ7w4 z$TNVuTNp?O%U?5oO~9kawuH~#` z_{t@g=2fuvgI{ET** zL1LFF2{A;>E<{m;4x2gaX3<<04)Ykzn-yR2IE*WkGhUSun~9-aAvfw3aPiB1d0LU_ zpweZ?9&So$(3;7P7>I_AYsC4*NLk$QV4==Uifn~WKjY=B!D-{P9PK*L+O~xA>me(6OuR$YKrtEzh z_np8M(xaYj+f{>ilz%JtNlcnt#H1^;PBgN#-*sJ7?90;jpkMj;95HjPJfMY#4Cp^k zahqvXMdt>0rJ2l6ks%Z@!h{%@NZ0uc(EI&aYI;j)!$dQ{X z4I!#4CT$P$@F)zsjBF>4y-npGO@P6|b)GMrQ~B+#j{b3ey|&@V%a>y8$@Fw<>vOAR z2$lTky_7=GLUqf&h{ZnH6Sn3rjds~j9pL%6@l`u78L=X$LTeU+*#Lmu^Zs-{%6S8f z(8!iKkhaMRbr8GiXgb(DZ*e^s=Wx&6;TC1Ha?vQ6{yflf`?i80mKk-j4u={j5x&#= z{8POO=ee}}=oq*O8~nv^m~fH?=NC-PO#z+kr_?m{Hg-$7iGksjCgF8^zWY=-iW%J*n2c5%|D>SkS)4Bjyjccx`D?U$)7;B<@2P5@ z^u7N*_`2LwiJQpGXTU#nzMOnBRn(Ep{miLVn+wNM|L0)sL` zyAm4hbuQ9P;D2(FaO)abw2LsprSx0`S?Dm`&Dcamj(23LOy}cCz@mP16>REXG zIP%30{t;PIOFZF*u&xK;{)kGG2y@fYTZtF0zJQXf$hK+1O!w-#yXB{6Ub`+P1m;fV z{IQO4t)c4KkXAnRige1A17Uo1?O$JcSOmZP+->hT7nvF@#zdlu++UlYKC7LrqCw&j zY3M!>NHl&nCyUY-jP5hlAkwL*OeS=`Zg`V!r8DZRgC_j6NRhRpYES!UrRU7)^2twM z605rQdDqe&;wLuLx#h252Xce3(6T^v0Yn{<1@-V{B$e_-6?&gDN}o%NhKp$Jc}xG^ z!WUi%OiG-d)ITXu=YB74dM4h-3NmVpuab@p%7E5gVhsE*i7(Aw+1wF^xB+fNsEdj( zSk!6YW3#$LdE-|&+CgYhr#Cvgch{!#-nQIG-WOd_P8P4AfadP>s!{*m476m9CA)}w zZdCuRL45FLf0wX}5&`7Q_v(%eA=CBdW&I-V^y#+GP^5P}5bAJE?Cb3xc*9WR9}CeE z7PUo3QWAsLNF?p$nwsR_AtdlVLgVrR^ zl!U*xyWgXFCL2K3euwHguGUxRBGS}fToR!nz zvGe$j6}N)}UF8l0G#GbYg~(+Mi`jP4Pmjnt)XdM^3PjBUD4pF@5VRCVX0{vl+2Y@3 zb{cZGp^YYtcF|PncERxCi>D)Ij@u62n(&?Kz723_F3=mCd)jeQp!)w@fb%6=XBifo_W>EJQPy_uOGrPQ5$$q;t?n>MUa(^*6vnD3k` zX&n!*wcS%jofUrhE>K?bm3^8JY&!=np4U9J(FWAWRP0Za^Iue9pj~z=nC?Y_G<~)0 zf^#2X;4N;FTrPNMR>|l+TsnB%`i-xA7r+xzl!zh-N~A!iPXP(>S^l%QY41114KsW;kDwh3OtPvh^a zHz3erri4Rzic-e9V7WPkp^XV^%WS@=hSx#RFv?^2@yVC@zU;)qg0r&9u5aWde(w82 zL45ZmPF=CaUCT!{_uo3oOGw2m)kj_*IZ^oCd!`RiB@<`Nq8>Uphj50Hy7QS=YU5SJ z-y^mB{Ql;mYj7rwJVyHPHpM{0D)mwReJb$_q0yeo&l!R+`PM#YVDP-4+FD-I(e)cq zhP)~6qtci;JwB(aKB2nYL1Y-$dy!&8&o(s81Rd+9E(HXJdmAzA1gRYL_DhAT6d_-) z2a0vS?e=B$b7TMbVX?n26IJnUT4mvF|COI=V6rARd~&=VCzNaSQ#UNDdOqnhz`fyJ zio(evSuLF`kBo!E=d(Y$MJYi@1vl2(Kd%Ga*KyI%#M>965tet#F}U-|WR>=}dpun| zW^fJxlt`5N2_vJ`wf+|40+)Uu*2>a{%H(T(Xm!1w^Bs3MhVQNRUWJXBX&*^JR(p@w zD;7L$Zoo`nvXsX)0gvrbKlyV+3KB%EQ7KKTeQY0QDqsE2TZDks0=H3~psCo~j81qw=55x82q7xwfcc9r8nc5)bUw19D| z6c_A{{-({Ivq>J7tYF#dt6svn4{y`frrgWGwnz%i{-51vLyIXPJ;^-PbLgOqeJ5}%M&AY%fOU4GDbu`I4 zRLhm6j{8$JLL9Zdb$FWuzFE%j$ea|0G5OI(jHlx{fTT~z41s%?_XVNuXmkZwCq6^erH3(0XS6m}DJrZPvlcUVaYgbvTP{A2XL$i37 zH?VEqHj1$<*NPuwbJy)~p8+3S4u~bVM-hA;?&$1DTU$(%9r|H}hqh9dfy2w)J_4G; zr8mv}1)iyhh|bch&50Khpd z9{BYcaIst;Ys%wLeUGACkCC3Fn4OgyO3EU_EVel_-BgIwSTSdrfn@(C6~izmpFAol zP)brKlA^L|ls%^n1@)cq9z~j>X-=Y0Qi8@pX96wd8RPJleBYjY?%7G8-Gs$&A}f)x z!o&nXkJ@#4rS=nR5UV=EM6Q|JrE{<<{^8^$t$g^iUaO}T*%b|VzVrJo)(bgpH9DhR zfytuP6Ezoa;O#JS0zUJ7pcw~dHjzy+mz^dbeZ-#eg`1pT&$)|x8C2i1p>g&{MI_S* z*(b=@B#;^PmL-GFz~0@bvB=<}x|*%Azh^kBZ4mI$f}3J{$|Iw+s!;Yux{*MAwXr+? zr8yv=xLwm`j)q2>0peejt>Hble{*JP{rd{$EPu}S$>z)5(1dgat|k@uz|~GmYFa{&5BF%* zjjux+qoTE)IE!4UI;~B3Z@i#7B4!gpesxMUBpNkYkPp>o>Z%)#fvry4J{pSYurpHm z#**4TPxatXzQu${hB#=tz~|(oG@XIuaTn8jzKUJ>EJR!)VmV%msU${jNxf7h<6(cW z!M%VNOB2=jeH!;K0^ux!M$0XMR?|IdmeWISs${SJ;CvgW zD!X+!>&M)lP)!gXRGmE9I<2AL+dDvJgr(P=JE&hN`x$;`{z71&>^Rks0Xny_VgmEc zkXpLQ5c}#dm#9}nYzH{`>+Lbx;7#j6u~Jb1o$$FzYJJ?uHQ^wl$lRqq9NBcJg6^}1$^>7 zWjt2;8gPL?6mh#mSXw)W;!Vh~$vtdnkW$)ck$!-83dWb1N0FE#1ZSI<;dD;|bZ559W5BGI#U+?S(_mmpFo#j9i)yk30+?~eD@WI#d zEtqZEb`Kg{Z(GV{`ZiVk%4HYnVGGaT7JE<>vpu9hz8?$JDdwKE&9|}M7Fz>9pgSm= zwZE}rKepSPAgxZeV&bzy3&cPgY`Y{cke5{uBRdbO_q`=j_vE%?io6Ar+Oy4cFP7OK zweC7rVnGHQ)+h!1&Yh}$Zmih*ZG6Q#I2i>GI(eJ$4~lVoBR?pjD|`rRxV!Z`JUKGl zDqz9gocaN^v$w9gi@A_K+CR?Nd}z^a(mmuqLj`J8I&m>5rb0px;5=NvlYd|#{=MY| z1(amI7QY=dj(WGdB$`Jql@vmd%!pWz0Rz+f6dABQGtG=lA$zGtU5v#gG0i7;ni zJpl2&!kM+^YkwPaB}Jdj0WD`Xh_xcNk|U4^lcA zK|8}AO`S!}t!l^1spXS$0!o^FF&d>?A3$-14|}v@-|~J`PF$v{RL3*zsYL^;g6*ICJJ}TQy4ZpXYj$y2Y$-9ZnQ$8wmBnrKG2+3Je)Eb3;ZOV} z$pq*;c|I?zf8GX2IGtcSxVu(cjKrrW1!e~p*A6FnCMiOyrkIO`w~_=l(_RcGjOxA> zV#v6}=^=jpe7IC!LEraAXPx;zJt*zuQ5iuv6t2*NpBH4hFtG*r29%|cDA(J_xQ@h#=9V20vM zJ+=Ig^8IYu42;J$$0#9mAgeY6B=Xg32KfzUI7mg|cP|Djgs_|2d0Z%<31vn|AYU-9 zdXh;;r9QhZDIsAxQe=Mq+#GMy<#Pq-u2WbP^fHgdOC*T9(hnN9y1MBflYQoF`_AwZ zkX#y9V{4|t+5@Ptc)BT9@l?HSQN>BnnFMm3v)*Yv;3a(~4DeS3S0Nn6;nLtyZ3HAi zgRt(=aq0a7DdE{>lhA4IaK%40CO@x#47o?dDhHu)_qm?9 z#3Qg9j_hA{rRhik4Zbz1%w=D8)p@*0>l9%aF1Do;tj1kOnChEtl=U_MY(8zY-lrN* zQyhX1XENyWjBNL}=aT6dh%Q|rR?C%MOGNy${`3le`+wl(MNO7k-HA;irb29Gj&#qB zfVfS=U9{mC4lciy)KgCQ1xClm?&>49KrXsGGUdr%Sns3#ll6a6O~nw1K7<1?zaUxA z41cRJAd}hP^(&(T^5p5vq)1C&m>n@Rb3XJ(BDvU*_Rcb1JVitbz_N)RKU>Qq6Jlmc z_ND=Waky;n5JP3~f=B!3+%>?{+jydB!jYSg1Iy%|WmfNuIpyf399YahtNWWqcHLSz zr`(B)yV3BwY%TshU)+yUF52OHUitsAs_k{A7I`Rj;r_En&Pm+9Lr5quTpm(e7R2`M z)kx_$17#5pE^BJXcO9`TG(z%c3jW$I{yY8l`XpYVOY!A}jSKf9^x8d1bnE{M*Poz8 zhB=v72~QO^HzK@>f48##PAv%Fy=z1fQ-s^`iIk*kr1+CpnQy`M(vK+y-~685kS7xk zKH}@zVJ8<*$8fQ=j^j_bGXJGl;)(KH<(LT4|L!jDEtEVt`Y-h3>~EiJ_(#N>Qi`q+ zZ?wl(YCEQIEo2dpafr*{u`Bz(pZiP4J@3ex?%z>Aag>W1&wXr-l>Zlo`@g%7Z~TYX zTDv798vSqFiBm~VtT6)r#=}Q`l}!71{STzzAC-c0?A$56Yq#Z5uTd0gO4_Lmh{leiZ8J^V^m35t$OP^L0|ER-39=ha9QZXKfj*x3bT>$ev~)=$-AgaIl!Vfuh&0mO4We|XAhm>aJ&X4_ z=l|lFH{@scH#6V5u9=P2R9Ae4MS%qX0G=r;$!P-sD2Q*77BSEeUjlaSRRI7xfU=yl zj!)J>n{TVNo*T{0n{xM~A7@M24O8V`nO@`}fx>!Oo}&nwp@$uU7JZ<>D7TuR7dlP302O=zKOuqHyKp4X*&sOW9$6hj*29Go_dab z&BUthe|Bg^cw;qIFEDhuKXulnXGMt8%)=;;7NSkB*B#o=&=(PNJ{FJrw-oCBRGA-p zOpSwIJ{;6~ulF7x>vCpyj@}_BOpI>MlREXgJZyOiIV?AjAeDB0arP(cxLyBrvYSt+ zkVq^f$PYUk*NB{2s~Xi+4iqV>Qg4aqy0HnkA1_=hk~p?!Gy?^$_u> z>cCZAvCYu<)np%Z+}w=5TbD+3)q$wS)7E$fC%Ek-C z#5)iU-7#*&oM^c!J6+0=Wj-FrZG5(`$I*3`Q-5s~^w4F=?*q3z>bM?e)En=8 z*uD607x^DN+F$(xhU>y+`*PHA1#C4^wV|Ttlj*5PR<$4NZxWG!D#zr^W-=d$GN_wIPZ3gBJRR8h4`?;SJpLs36bTTNBm0{4yp6k1kBGK>f zP5sxdg${c?_VTD3v0-=*_ZqER%GeN>NIi*7vAccA4kXxtsL1J6_9C8{y)(XhEVaa4 zaU~1`vdMoY1>xC+CWIn=gY;nSAcuxw~D>k{)8m4Pz1Tib6bH@0~?Z z_hp4?6EHou#eA!J$M`#91AO>{9`GbWB=7&u9*<&=_fC`MM4LY3@5t!5{oZ3Hy+?=S z-nV}{?%{4EBeX<;vLsA!m<>EwX26@7+u~g!YiBqIZr-RK|FBe4py}8|@XzvG8;4-i z($p8=59Wf`;62&j`5YYiL{oHwAn~;6X&R_roYY55=~dVWzFL z4U(;Rj}tKCSf@`j0KmijZ3h&#bmvJWCJ~0a@MCG)pn!Yr4=pR(Ex_G>LIxj+_UU+T+N`* zC(-Lr(GGaLJD=#f`LHUc%A*vg+E7M|5AYVN!E2CcB-P7u@XGfN*!tG!Fo0xS?%j{i>7nsLyo82ajgnpXgiqtBtye<;cgw+uVq{5$4>xXon|7 zz4~m2oR^=!{=NT-XT6Ek2@Qh|@H9<4aWAr4*!WsUz^NbzKWH7jqW|M|%2mjYV^8qi zTDt3bgzd%`Q#U3F-x1j>cy0@}i_b&fT(ddT^GFn9*WdO$_!m?nA)k&G<2U)SuRd`v z!?;%;S%UVzn8s|USgy`I@Zwj9z;Uu_&6#MHEVph3r>JN|#UlFD0f3IHagB{^+Ky)v zZFYnv=cCwFk8>}A?k6e+rk225OW)DXVyP2eO_<-dTY|KVtKJdk)E%lVovxV}d-n-9 zT8;RX8Hyx$-yd>b^}v=xRqM+J*mK<^KJSnmn@YHedL2kcN(g;gM+c!^b_afClOH9n#@Gg)gdg_P#JwNjl@Ax_4f%+%jyd_{S3U3Wj^yuG z&;C@d!zA4(YyK(uxyvK-(`zHp|7Jpj_T^F?A^dh}86kaGcYjt_qY+QvBk4cJ&ns+W z`X!p9H+Wyx|75e{9v{k>c zTJiJmFd=-N-c}-VxyVON{L|Zdbnte zt&=FBH(U&Q&Yr#&H$CDyKXcx=(fZ8i@!93t6T)k;sl8}~5)iyut0~_{0&usT8n@o; zVIy$#iAPXLf0yrJ*Ro;lY563)&QKaVYpMUa|Ch*m+<#t=CwUvFw~o?rBYXAIB?uoe zPm0yY`peCpm&{)ah9|^KPcEoO}CRRWn@u(KERYzsRsP{fV?Etwi*_+XkNEu$W?b+OSSVhW6*Z|1Uu|i+_U2v_K80B z3cpkNZh-5yukG4W{I@FiN8Y7|ThLMPU!Hm=!?314T+s{K+s|-n#(n{WFZae}qbF>x zyhV4r?eTZ(YoZ*!_U)-7eR3VwvwMFY@dl_YvyJOTGqE-0M7tf~xJd^x>_9x`){C~g z#~-%Q%CBo_?~K%fmwi>AQ2Y-+l!ew$2}j+*!=UPM_XS#XwfVHRag8-KLaA^o{bo?F zzUmo=klv46ZZt?I%Dz`pVj^65B*yM;s;4Kf%ciZuoYn|2PP8i{l!WeA%*9y#Ium+Sa|raavd0a+`6}x8 zD*UT(N$|s+MgQm$_<}k!NPA%N$>xsB|A$fW46og@W zQ*2Ol2?E4kN4Ee18LaRF_UaX@EFXDWFN8@Yj;^fn~Hux)j#prHIO?c_wGKvK6pB zsiR@M1J``q<4N%?udrYzB0gCMMrf=)V65DK6+KQKY1oLW@TGX(kEY4;WG5>(rnz&& zQ~xH9CtC{;c<~}@M)S>qIA1*8vWKK|u-)pQ`xEg+Y3c>j0Is`N91o}c{%#gFNRI>i zInTgr%el?eQ31rO5%OJ6Go*dolVw<(_x7OhJ`{o=maoXA@YxSUstec}!CR9I-eO0{ z5?bp~6O0rvvEYS<>$!RBkuYgc50@0e z5`nbWrzqR-Cj#$Wpj<6hia|Zu)7D5$`~|qqE#@Uw{&uUn-MYZXFDCL_w?G4+$Yc{zgiJ7!E#alIJM`MsMeKLw9aOy*DN#+---@ z0@&3O@LaE(DBS{VkO1oji{k-HV9QFMeqVh-;mAeWmDrcTj!3%DGg zsASXmB|H}yuJ*Z?qKXN7n9r~Osi+3-D*&Rp%9qm5WY)PXbT>YCK@Fh;rc!IyM>{1E*qILAEI2eZa) z&pNKt_K%r!8>xfuPK>HEiiwUM=3=?}G}<;)IBwC9*KS(8)(}ECvKnhp6<`6?lQ+n~D zb8l|o1=mu`K3&jVvBtoDt~Whmo;{5Z$3JUN5MbLV7;_leoPFztd$i&Upl$vm@w7LHd^J>!6tp(Kc7%mI(JZn++kH3wESHV8arnf4G>iaks24gX}p~cFsWd;-%%; z!gjGMG0*;}ER4FV$+oOJ?VLSPz8YZ|VqR8QzuaTV82e9$c(ZEVm}WR~frRk^M!`4vKouw_hEtq}GU~RTTS0GYnlQ1sqdbngHq85l4bunq7 zLO{6p(i)Mt+{vQJ5#61dEz5i&$U{(xY&`{l+z4~j^DZ)xgl#CqAW zxxr(#u7^yvf$5iJ|F$q#;03nk|27K{AuRlV0>!^y{r{Q=-zgC7f?&YP-S3x{US1b1 zZIn+0TCLUZ2ohhp9`_Dv@GeBWF~Jj`?og^M2XGzds*u=&E`p!{O;ox3s?{NO2f3WQ zUWIZ}kyNQt5CAmSQ3?UDT^N7;adKH=haxi5 zp#yWY9_jhTA#X-t?%D)ZZoG?1CAY)7$yp0S{b@9qux=$Ty6Tw1< ztcga1g-?k>%(|IZO)ZJOcPnT8NFE0SSL{^95lJg|0znvbAvI$R5myoqqjJEd|?F@5=!T z$PG}1ZEx|Vk3>A)D$IKBHsjXJNxzTeSa4wU{-F+0PpqYjm1=f`VLBp*($Rs4wopb< zWGML1P`X_cJ5lDAG`tc%I6;MxvdB^igzytFw%k+aE5yMa{X@UCg>9hJ->gbl7;j-L zFR&92sZ>aAA6_G~caGL4)9|NaDz#0JWp-E$03kXfn*g5kq>*a>OJ{`IiU~Zybe)K< z0K`k6BrOL>tiHxa#?#qQFX@%-yGjsOXgfr0VhlEgy$i#lM+)Uma{J;^(;@dp3MkC| z38%z~8~S?Lg|kRGs)Dc-Q%&IIB|%@cwr?iOaHu{qq&Vh7jVPBG@aWCoSu%W5 zp2emZ7^&pWU`*Z*kmbGMcn8VPiXbuNJ@OGOD^h^w=_T8H7o1J8y+N~u4uuUxD>5R5 zGJza)X>$2B;GY+hy?|?9X0Mu&JfUD_Jd%0lxyQpL77T*QwC?>*dCr)?goPcg(O(6> z55(~AuH@tOZ;YH)H5Q_oAu{y#jA`?7<W{eW)AY&F=S912-|@{qp|B)kRO!ZZ!; zWd#=t9EpzZ=>aq!`-xa?FHwou9A&71@{t(iCwhbmbdXd)byJ_?Yz5|P)LNPFZ+VQI zl2f8Ki;^wvQ$xWdCl1*1`m#>#eb!{5LhZ8$vPD5~#J&XRJ%z^}RyrWyW=ksmpmz*^ zSCM>^w^RdNFM==#+ZEh`!2%pJ{f1SgIJT!Nu1yoH)%F#AsI>A8^L9I}Rj#tSkL;il z6*hRo6uxVZLl|*iYDna})vtc<{UKfSQN~IN1L9-#DeQ+G$Oe^FI;*t?Ig_)hoQ=+! zNAYjsFghyl*6^J_d8(hIX5N1MtF%D^A-9Bvlz39~fimW*975XHn^jzi(1X_ZP)b6j zdUFOF72tDEX{*XjzE>DB3V@-Bc+G2~M@Q!U?em8wUfN#4U1bmhzlqWCUAh`VCjh*0DE8&qD3EER@ig;FBU(4j79Q%v9=B)bSXrtl(sUN_e?{VGwG4;{;ie0932Jz8Hi1v-P zJ!pg1_NUvkW`csafj39dEOgJC`GIBiF)u(eRA$LaRyN0Ie6BTM7jl+mWEH7K~&TBXVu8!GHRNs~}-1Xo1^^Q81T{O!m`AvG1{>3wPq#4)Jz*Ryye@^|< z3>9cmnJ%#&J;)wU@R{zNIjJVY2L(fN%xN$YzFY0*sr$G%RMvF8lv4ENw|Q6Xp>b9i zx7DTD-m!MyqB&!-y$DQ{9OY`}3%Z&1R28gZSdL{=R;n-MWX8Ovs-c@Pj#7bhgQSE= zsR4Lu5ME{wMkY|j@hn_TtZM+9=$4a<@lN(DGmn%~?}M*3x@sCdM%&^0u@`@Xv9xS2 zIxHEsB^9cs512=Fb`;}av1kOT_m;HU=O;v~l1!*cNv<}rYJ_5hTa%W(LAgMt31}1K zb#9pYJk5l4VSy9UJh{BX| zPTW6z!252kJ6G<8OpNAhGuGQo#}UuV&D4HiQ6ScpvB29{B?lB$ORf6M9Q4$e^Tv6y z!z|=pWk&feeGZkwR8lNde_-;IvKc-yizB}<(&$ffKtEW7nN;ALSsnoylRo1tP2D38 zJ^}M3WY(^Fx#S*K6^M(CbN89ni|B~1X`k9$|E-Gg_oaz!{!}IYF0myPU^H7z5s;I$ z7xI{W=UEgU=O|+p&TBVDfk9Um6vSSQ0?_X6M2$#J+nN7b8J}eI6&z?jj2@OU6j_jC z$vkD=$C5Mx_9Kffrw2j^!i$&_jW-&7%DM+8sxW{!7AL=Uz@cQNIK{yD-HJ~W zo3nGR(OQdDB?=S+1(Wnz79F&TWPzjaL$#qooL(tB-Kl!ELf0^u9+C(lF`3f zMtapG*PgFFX5G~idPsKcb;Lp#$%V&(!$1$WU^Lz+ zwTc~Oj3uPhr3u>b+(tFG$XW8Qi&1mG%jU6bt<3{W*okx<@YymFJ3;u2MHaED!l6Kg zh1%yhfJ&`nI1)*RPEkUP)5`CxZ{(qA$uR9?nTsYw%+cU{I%W|S_BD>wMUtaghd*+;8%(nT9)q6#yf|MF>UC{|mwwT=`yp|gD; zaLj-7!jFW^JOrRL2;_M`pLnBgQ@1fHL^HCWvyXA!%78z8c-zA%QpU9K)+(_8#2i0? zy?0bkt@S5cW6{*@XU`T~$yk~DydLiaN7+hl$%-h%j}|_6OH>pfN2JT1oM!39OPYeJ zGZ3!XD;2D%GyVG|k<5JeoeA|TtB6sVa2&KMjL%k~vQExymz;({<9(7+CD4yTc(4g% z{r+$rP#rnJ&Xl*9fAtGM?TQ>e&-b|ypcL*#<(>uSxYvXV@oXMe%}iNx4EVOb?~r#r z8vY#xQ@SRPP&!@Iqe=FNsA(i|Ji0@tz?9+ff{gEgc~3KsD`wwXRedAhnUDy=C;i%L zz<912onD{w=LGVrAPz02acC&jR3-<*4D%bh5#+qkEtLf5GMBA9eHm}Zf!}w6^nu{0 z=wxf?2IFOW%U#mV@-!klrxrY&c)f0VV6ge z1!m1X2quW7bRcDbIgjZ%=R3MsLGuEhuWVmD}sFSMv$-cc?Dt>dJ&|lC zufi!zr#0!NPNrI39C*I}dYzrYtL`@xu<_w;b^)|^-+<%A(gsb4#YS{`n4l1rFkzI` zypQ?AbXNM83@|JQvZRtJ2c4#^TjPSqHeopGHzpD4O}m`JQ=wG*LjWLOo^W~(KbW9$ z+O43}n9st^Q)-UIht? zq8_yss&5;zbae@JVqxbhknr^=Wp42hQ~+;{+Pmx*4AL2$lx#f!rj((Pr>mz(VUff{ zt_*tS#g-<0%q^1sH|U4~8x+wdh#sLSqE-Ap$TDI6n(2bOZRKF!)cfaCE_t2sbY7*7 zG+8}R1`x2Yk*ifW?WqCDfAwOhTit*5lOfRY&%KNc3x*Cbdb#r8kX9Bbr)ACbGqN$0 zl6zJgwD)(W@I1l<%#!Y|Z1*@GC!w5h4-drkn-n|WEtZ?&>mD_%$8RyT#~i+PeXnl* zwN#ScQQ@-Zb_G=G6gld(9-`0?B$VWFsv-T}KkvPbx?fheE^tEIPMn@7GXcuu|Ajg+ ziQF2bOux6csk0Bh=}VUKK+%St-L#`(ocnABv_M#v!?Q}{eVut)o2ijoIc+m38JML; zSb9fmugkgK*AnW`5f1aRuo6xFOmTRH6>w+HoNXKjnx3EF0t|l8Tu;@Kr8_>n^sdGF zv63346s0cyYjd_J{IO$J<>k1G+L%b8|AuB^PG@jyr`~k){S=pE49EHz{6LYf#_ICU zzuJYwLwLdd0w|>?4^Y+^RL}$OiObByqy@ApBU%5#W6WVv!|_D2OQRggVR6TgRnch? z>GPzNMlQeYbi>_L<=QHU9jhAX^NxN`)OcH`4K#(fog1MsWJj%)n?A)7?f+s426iG) zm_YwlB9HWwg1P>9heICmhqHZDyX1*g+N1D(Hm-+Z;*fKYc#aymHYCvFli1E|sp*!ZZ-pyYOQ}{+2u}@h<+d zRMET%bS2_UGyoe+>m~U9r!9Jj~aAucqK`Zy=tq5RifS?2YdKw(0Fku6A zIBamQ14BM;M{^02{c7`v-Vaj zv_?P<|H;a~G?mN2bfM~wygXK@*I*(>ZPA#nG6`YuR?a&M;JXHPqrrrv>F!5u0)_T+ zwa(5RWTW3w_BZ9gXELAx?g`kD1xX_BPx1y}bj zb$W4i6oyj~eWD!jf7AkzRkOSl`7>Ed_sXhzZ;Bz@1|?djbr~@Yy!I6MnxFLFg6Ze@ zozbJSsyce-9xbR475kXOu7HP0X+^rW0SB`WVjEN?_y;-XU?8qvz;`)B0sgc0Q!vc@ zU3}HR&Zqb;C*Fr5sArU$x_K_sxd2w>+rQxcpCok${^F!^#}WC1G4x|20IsxXnnf0^ zJ$+jG!SC`ig?@!uu`=J^vbjOKAIQt#TB{B12Ryft6G+SlF)P=9FBxYHF=Ae@F}by%)2Gt_Q77~<$?4d38R7nJs|`Abo1q) zJ!86mc$-4Ry#ib=WBvxl47+3P)_q-=A$5LTC#lLCf7W<50!uDvs~>sHvG5R4OzX=Yyc(!1sI_3Tk7rhdcQAycHI#dGWqu_5w*cj3OM5Fgud4u^DS_eU)!P2P%#o%G0q2enK^ zEp&k9#h?#<286EgH6g{I7H~M{PmPk`1)lB(z-I9MctV@{~2~bw- zknVt*kS4REIi=HIn=)w$wcJ|_>a9!y0VqZ`Y@|u%kWEW}Y@A=_j`vE9BZ}+UdCT^> zbR|LBV01fM1Jv<)!s1r|*5<_cEd$D*1lFX9uym52&&;K!#@&Z^lVLAY0^wJ4?6+B# zY|DC4?VU8Ua+m%TPqQR@?GA5p6(y9`Ems+e!)N6%4Qz>Ik^uwU6Pgv_Y>gpiO6+GD;Z7hqsFnOYO23235O(Wo(phm4;P{@W&Lz zZTAYKixgs==%;c7qLwD8d*|h4t*9-gLx#Wk%jw1Ux^piKy;~aS9H$=WP`77W{ytG! z!E$*1&VyJ_rjfT@fC887guv%k9kvi9Yih|cbo=-3b3LfE+=&;Qx%cxsq(utS2;B*3 zNj_1L!NO5V4$A)hvJdQCMy~z)b$X82sI4d@A#}Y0dm5oceQQLAbc#-rL{7N{^7d4e zQDh~S0u(G477l920Fq+aDY{hpFJ!W}rV3N2J~n-iho&#V>URvHc`LXAtq=cuF zPv03G;Ay~x%{F~sD&eGs#27Xwb9PWkPvU}l#Ap~w*N4>Kzjv}weUlQQrue;bfnaaA zLLEs6OMugG;s}lx39Yl;nXzdG_xkrG3RE%MT-3`ZDt40UJki5NenLc^cw|A}jiy(*0}jHQm5NyJ)!g=5Ol`I~?_xb2$6>D9|m&)y)qdf2ngj&j+B7Xiz& zRVW6L$O5;&K80?J>}vENPBFgx*9*bA0qXAueha2$3MHf?ij}oO8n!7}(QX1!ojT!X zBzs<%337W{A#0Zk(lOW5t0+wyX?xi)A%*DBZ3v(pSUuM*jJVvKRUw=o@=J_^YEn$f zM~4r@4%7EFL7g)U8N#}jZwD9 zrrN^Y59%mck@Y27AfsUg3E{h;bN;EYhpmnhJ#K<%&Vb@`G7kSuM)4W}aZxo%3X_N8 zxseqa^O6>$f=xQg;G>R?9G=BliNb>Jg_s}j12q?ZmC7iq45Wdi)!J&H8CMU5N2YlA z06A41x}F5_6yLFVRM4$krq84Zm6a$Fn9grjPll2k#~h8&AJ-_Q+py9eW)`_UhO4Sj zaNk5b3CDzF`J+x;$Pr`T?{<))Dz3X670Eqtih{NzWdq!J&Yh)Gr?EbaOu;s5eEX~1 zpwl@$(zFg=wY2;Vn{PnA!9i$J$TmjPdgO_z8`~EqsP^AO+pZx7iyQu^C)6{a!o03u za~u8YP`|A_zb5Gl@uP2|D|1iTh%H1!L{|BKtimXO`e@PL-OnrpX$aKxeCRd&Hm1_M zacKum&lgM_VRG0OUrz% zPS5+@Dw#fdFmNS(C5kCB3Msh>b6_^6p|H96(@$LpG#UqAn*5k0|e zIrF-so+8KgmHmmMqo^(y3pk@GPP9d;;GqDIX(Xg(&&^nJlKShY09 z>4CRzr)FjvC)@ecamB~aoM;*cOpDU-f10rWFkXawWEo5>qdBk4hJ3HZK@y4hjk9%7 zE{U`?Irs?eP~N{(oy#ba*#6SMoRmGt|L*H064Ef14JtG3s$rdJM4iI7Igm|#IhgC- zAKQ39Qcl6~Ys~i*k9~OML{rJ(?w?7p676L_f>3aw|C&;AR=ji09((Ih$ELA-g6Blv z6zIKz_|@`GCC>-SeE6E2!X2K|J?k7&X5=T30Zd^8qNh%14q2mvn{C-^C|FCh-1FpC zwJ;;^o!}z`Tlt@F6rE?qZFH?dyIZb$m0!Df+HuGZVHvCX_t-ru*QLp1yV_l2FmM?L zY^sM3_GD7T@pdWnENYARvlcZqT&ndHl$X zl*L8O)R(t4LslgE8s{Hws?)skrTZPZn7~z>kA^kK+djsP%Jc@zNfNY-3^s;uW!m{X zppm=6w7R^f-LGS+!>^=R<_iB*b187jRnB4nOa~JjAGH3$;4UpTV~kK6C^FYbObAAw zA<^#p3wNtq1*NpUlUWbfTUa=t3K~4id_%AtSfJE+^U#B>iXYY4-sV2VNVNLH^)3X>emrslVV#an5tc{6Nx z?Z2tqGX2pcY)LG~7qFtq*~pF84%xEX^fcvVoZ=}Le)0YydnCvBL< zuRLsQOz54(hngM|EquMctCb?*_uw^}k|fkIqi%j-ue9Oc)f;`mCn9zK0L9<6mAUDm zDU?$`y)WSTNh=+h@e+e~NGVIjL32Z2H>1@OWZ&D-`q>Wi(}bh@4`kw*Z!8ss+F9^W zlRfj)1T9V!M8J?l|F47J@1uD;<&emz+ICsE8Hf*(16i#+*q`&@C)pvBOBEnx5O&Te zTT9Uc(71%+=oZFA+3fos6z2W+^id0f!o#v9%Qd*cuE%6NHwXtHX`XRxb zp!L|P{#T$>IZ2b9pCAS%jTv{smxGd1;#Kfd8JZ{{J6{Se%;SA6*v(A-vBrR7>4HGM z0N>-Kq@Wms)uv<-Junn0QsHCX2OljyBnT)KC(@4u#k!+}n*uyVp`}C0R|s5PRaU?< zIQ$@kVX2n%das+gW!G|AW-M;Tnr`J+>}ga8i{op2am9L6f(*2Jjd}5hmFBtywJE*4 z=egfpk={+(_+ z73^cnk>lu}aSYSWV?A>t!@m#bX_%@IG$#tHbE6ufn%jByLo_`oXT5d`d?lE!Vnv1( zQ~w$xBrTDitR(3qPQI!pX|?1PBy{PND2;yF*nf9tfre1MBokf0^aH;(1(|UAfddWM zdcy&+k(F_c{5|W8QR4gYvf|W_&xVs)a3|?8gSb*Hv+WiYTNn@S6jEu)l`=y(cEgie zP^%0T6#41q?{2kt;;0^*?MCPMpJV+|V`L%Y020)O7S`4In|{$-gF=5QhzF3^ zN`r!<9#=NsqAR~8iP2$Q<)}Yp6rF6ebZ~}lg*{_{#_U^PBm2AyGT)rkCm;iqN7Iri zsAfJpM|_;b73;tI3qStIRNm*+8lft1(6(W4Dw=v!DZ(+kw_b`fuoowOC{%3ltNK{p z@e-S$k<>HxQ-_gWY9eAiQ{#ZohQVf1;OJI4Zhq;ib7SJS`Y&}7>o}a^uH~yy(?l4& zN(}>-x)j05`&thhinDBq!>d3$G$DMF#Og*Kc+m`pMC=qjFC}X-Y9}Yw@G%#kbbvcO zt+Ke)!J9(h<#X35WJXv;lmJVU*zqzL8~qbXG-nC}vIQNXv@k=0oK9jBN@^kx2Qo+B zg+&sSuI_=HC=;(nzB#pqR7=+lT^sh^Xliu@1N7|fZmM4O;K6&JWV;{tvC7V@bSrk$ z@Efh^YF-5oWpVXhCiS+X_(?wK2=KQ{N2Kf$l)abvF93ZLi38S^RaC>54Qxl<07x=~E~B=B~5KV`ox9yczM2#BaBtF}y$dr8c%=gQ{HyIKkqJ zK%M-|@<0Y)a-4o5_li|GJ62SRK{%uIeBgL$-ja06ZKiUbv1lHE2V7z=-)A3*5AqGq z45%}&40NU6(lA){1RA(wV-qd(4UG(LGa9bjGdB@25RlDtvi&qd@6=`d{c}&pTs{Zi z7We&ux-CP9*+{RC0$tqUkoe!~Tun44FAJ9>m&tL9;Zh~C0uHk+N1aI{YFwTVvKs;7 zWDO+#c-{TPYO~S0bG;i>Uy=o6hVFVbb8MYUvfWg0RZ1R2{EOH7ZQ?VJ*sY;BE_+Y@#zW4XB!$Ng2E1BTX@? zAA|-zKaWeVw0LEc&3{k4NquPI;HG^26y#X{ee~`NfT2OBoHHTh@m<&L?&j**ZTd!w z4iHJ0bu+c|1<>s@bQK9L)sYhkj$tL=rA~qbS^6}tz%>P5s|Te(cme)8nP&CbEEKP# zL))CdEw-~3tqNpeL=0j_`RJ|F)&_H`_9>t(>7LjxL)Pk=ojnD6e7fa-wE%PQl7ti%P$h%(bF@*zP zzY-#bM;LtrRYvP5e$6T$aB{{ibuUodT`!XGO#|DDm8mn5WBxtlxkh%kU$!E#ri#MD zOyE#6diBh&aGJV_w?`+Q4sr8e=|uvG1IA6E#?cQwcg*?m%CyF zVi3^e9jK5(pgV2yY}B%BYZS+brHq-#9xeIcwoq*48y@r^k5(^GEs*K2iMX`ntC|0I zVvLmJ+n)WGVro!i&i|_ARiWbFHLKjgqf(MX@BFpCjtl<31KNR-vxnUbUG!3^b>ClF zF?VV*h|s}q(jTX}gbsS?uLVVIOAbhq4+g9`xfzc2UWu4apVOSwGbN-b4CueJ%%ibb$;sJaTB6_8LbwL?~6QrsRGhbeE+P z<_*aVAW0Zw9OY88v^OXDD>hqGYQ6V$$bA;(Z3_{pX6#7lm})fJXy-F^ z&>O7%l^*r2k>sCkIGq*^b{lxQc;Moj79K8-t<+IP;|J->ifJ3}%IJ{75LSMo!ojLjT!J<@2!Hf_;tw83-UR^4RdYHCo zr-0E9xFzk|_o;DNJf8xQKnz%W^ntzcb65!VmYYq-C zvp=qm_PFi?0yC@6rwYe(R|k z%ysb@aVjOsr&TqQ<)?0?@Fdw*I=(Uf1QO&gdTHaEA9mAJ%aJBdJJ0K|ZvPpaRP}Jx zu1a+4x2TS+%(TKXu4T^kaKgKA*7P`0^@Q+CHBRx<2`sC+ zBR>4JH+fUSiKs8zP`?sR&GGdKel>*nLBWPh4QKkZuP&=vo(;wZGdW^lnO2iZA?vi3 zER-uHGptZ{cgsg!eI=ABYc=vN$}M(PRW&~|nJbeRCn}fd;fL=r4SuC<6UmP`M2og1 zB^>pnIgjX666}PNOCFEo;fj-ICE%_MUNVWfpJ zr$b&?W|g_vR8v&L81tENtlyb+%$E!t_`;OgrVcIK4{d` zy*OU^zX~B7hV%|Zr2eXE@fRPoN#_V)Q2$yg9J5VU^14ACi~}zL#(GcGxdG0;7c(n3 zG_1S>7Pg*P=70F`K^Am;GS$cF2EmNYcTg~PKvG5XkMtY&$&-PmT2qvyXT12DGZHMZ zF?|lV54oUlnroQFg0_{z7H!y;$-Pz5-Ijougo_MLC`KyUa{wBqnAI_zylT!$!29Y6 z=^KVH3#YLAMU-k4mlrIBKvRs-N@}=`fW^tWiB5;c-MtTn4MR-ds+4)s-+Cb8$nhP5 z*lhn18{!}9N*qe^$9ZaF6pR*wI#}q<^mAVhgmXHRc;8pr%|70nx3u2bhVEuTFXNQ3 zPL@__8X`a$xzZ)uX$Ifor+CBu4gaU0^8elih)hrde9>B9el%Pn-kTiJ-x@ab6)7+P z`4dgH{a`JK3$Mvb@`U_>$4Uy;e9|pZIoi}}*o&nQ27berM$JRky4Y=XVsBaiF_WBR z>N1-XF@N(W7P(#mT60@$G1_gp8LMd(=kLaMh}$8Tcr9Y`+66NLs$B^_H2r*(u9Omc zz&)8Uw^yjP+~G(N_W(BgQ}A(SEC-TpI$(VF!aU6!sCN9L5*KYI!Ag>vh`OuY-Q5d3 zog?d?DeGFecH^L=H5(azHP>iC+-%VIw+oj!!B*|n*n02!eTIlcn6op*D0zx1fo{1Z zHX-GVbpKIb!BJ`X3(KHJxiFuQkz?E#*V?>0Mb|T+SR<^!BQgFhZ7?Ipgc_fAueIs%fYv-%rrkJai070 z3e~rZ29vbGSnEs%_wC7tklQO^dN*V=8b(*zSF9M%xxuy!_wO?9+S0_Kg8>+*jbo9q z;aI$H!ceqYH74x^zs5f!kDk@X6lw{3Si5{m^2O^tc#>I^kFW$FilW z-dH(?h(k-OJDO<-T-B-*Vy&Q9P_~9r(k$G44{{f>w zT)+E)GS>iZzkOu&`&$Gw7PbQ7xFa3XFZ>PxsOVdC>^N<148||Pb1!%Up1Wo%Ru6~h z7WUw=6A$8ny`R8M2OdN25&mNR@i`SOA8V%{0I=>ghYro*#G?yXFH3+`=Rnu5#fh2Y z*uDJ@9NE4f6YCFS^~SYGlS9y800m=^fJG)8o+ON|Sc>^WhcLIBv0`!yGABH^XE%23 z+>QhL9>uXE2e3GI0lxG0UBc+TqNSHYP2k{#}`)~2IgZ~Zx`PL6%=kXo34un*j zOc9MG`tRhw(;^mfM19FfrHHLzp-N8R)!IrS!E82mMF>TQpBSS$+q+IY!(hagw5)es z=6O~{PG{ly&wnf4{ETa`ZRHAJ_5ij&b|=1i=X>zJ>pz3t^Wq;QE^4XH0qxBX&yGoN zj-kE`WyR|99ihGKkzX%ii{Xg!TLyrW5q?g!sFyf0S1uNakUY}QlNaE%Z}?-pW$B0T zDZQ-Zb(cO57w-B)d|=1jn5kV55v?6ZvjM(MHHov(0sHnGh8`ne zny_d0QH)KVz@g(uv9LfGA7725yN=-4o&!ir6S`$Xq@`n+STTXQ0b_QWFg!elnf(ko zKES^25!^C8h54x?n43NU&2t!=1Xis|Sbg>oOII+46HB0+(d7=^%4vWVoHEW`@eCZC zI*3_0WL|k0jf#iQKK%9Y{`pa`9@Z-L?msHzHnW&l(mStJTt>;YCxXhA(Jgf4G24ym zZWkxz!#&k=(Q63od}4$M9Vd;hyZ{If|E>n4Gj%X0h$14XaKPL;4D6U`vH9Bjstjb&-9aipLLtJ+m+qe zsgObodxy8%1%Nua1eb`L5neA=B`5s~TbZ?A3<{JRw*o*~j~D*h8}ahXQ;F#>?%jn? z{@Ta!>8~Ed7vH-b&%E>^tQkLvv;@PBo%Tp+cEYAoBk~~vPLAeA7{6{Rh&>gOGZO9h z&ypY)z4z3NLnUWr_b9rKnB79j`@SavIZ;gB*PKMagCI3*zmtMu^#CGxDQHk100QpW zGomw0_3TIyL`5ATY%4Jb`fclL%++pp;%@|w05;`@9 zOtV;61Qr(*6L|u{<5*k(#DPzg%F|0d#Db}C66l=~|iizb3 zsvV#iUCzj|2$`I~V4&z0@4*B6zKVs#DL@3A;cG=W36`GqCo8mb@}G@-W)Ua)7O5vC zulwkUU6OhoRIObIy|{1;;+Pk6vD=5|KWcGR383Y8`qjUTA3Sp>-uFju#_!*`&;9=Z z$r#pL_E!AXKY2A?wCTOLegFO<>*CsrZIjRInD-@fhW_)F0EZe|gPF^^0U&SHTQXVk)3-WNsTHbG0l#i2#4kp!sD_4yrv^;`G@RD> z;ys7(_jeq`r*Gen#ZJHV8%~1e@bbfM%1&7a0!oS`79~frl}$|$WU%_G$0?zMU;sf*84O!^i3aTKP3j<0J%3rWxFGBh zj97|~QuGK?HR!;qoDl?E5md&viCGO2%jwk3RY?yn7!o*DYAq zh{Fnop6@?ele*;zjA+}~%>##b9>)0W5-b@X$Mmt|NGcd=hRjYO&m70Z=A{_lxD4H~ zX^b5O^6^=unGS;mMqcb7I)mXLK_#Qp4r$F2Yi-;0gHRRT)r0mW(W&EuiHK zh>6VN*z|tPX8~oDVqbNVFImj`)4{DjQoQyO0yMH8>?`*Q0m|q!7XN~0pVUaO50I)N z$GAZ;jB#94h!>TJr=db5WCdjWEL?H^HsI0U#mDa6gKp0Dit^Ue6w?PlEx*l)(ef9=W#Fk`c5l40$Idg{}F(Fx#C#0TORg;2p(CK?$C9 z2!Q}(vJPMg(j))&`s(xXOb@h(><~=s=L1l@e|`&g{rCXGxrA4L=|5oWnz(qJy6+?r@mwbeRd0>RrH zdc;$>L;?Xoy~Ry*+99_TKx5V0(coEF*rT(_VEH&E#sFl&^yj~XkG*Fvx|D1|A^_>? zi}CW!JMrZYPh-^&Ok&gE2tNO|Jve;w!A*`~jdum%q*rB>)Xc8S&D5hU51UT1&41uf_oki`=;r9vs(t3-`N3MmgDl*Ok#3q=R=P# z;NcG+!=af0Hoa~YCMNu-$o$92ZB<=T>-57JoD`bGJktY!#69H0&Rd6e5CxKXGb}4H zh}Cct1}UNIS%9*LXDvbn1fjFn*m?@RReYUDh2SXz5+sKJV2H`V3QRI%!B<&giq(Y| zF`t9bF^HF7^Z(D@d&gT=mG}SewbtIJ+-qk%*52m~4kjk(FOc)_ zI@~+=l)cZcpXYf#&*wAs^_(&D7-p8M;6~UvbSL+0zL%|u4J>%*>^hax7M#upPn}Gs z-OYxjzu@X`UBP#MDU6Melh((WbnH9$%a6Q^a}JqJw@KK&`Bz+j-B*y zxpn0;MJ3#dVCiDNgWk<~N1Vgavks&)+sM+#|A8xhb`?+5gpRo%-ooX;9FmL9oKG7eKHygMm#MnueKMA zqL#D5OZSHkRZd?cPfoy^7;#YQnnJ&}*rWx#hey3pFKAy%K|JkMy!%~$!E28?h{7`-1)TZDzu|qSp344xWkz>C%zd|gfv^AU=WK2Sb)4$Koc`KN zdEaTLvVU(GCf4)hlCSfXpIpIHV+PfC79abwf8p4Tf6vYCTwZbbp-iuoNroQchCBa` zE1zCZ8WKZOJ%pE^_5m(9_;99{6E<(XhdZD8g?Ca`nkX_vl5R=RV z+jic;jmv((gTrG`K8|-R{usyBA7QmQfcbsXVf(kaF*~0N2A`7kvZK(h&G-_gq$A7$vt@Tb0dd=Y+Ff}LC0Aktlvxm9uz7gE~c^p4~f~S8q zR_L^s=kzlBuxU(}U94Q5QaN}U^JdmrbJr+!fQ|~&jxJNGr_@I+<6BaaOwoBjm4RNU z?XirlO-QFz>8Ve!?79iYtfp&jnMtz@Zpcy}Oxe9n(YGKbTU}%4poD_ErZOd_Z(f;b zM?!5_DDT%nch&2u*H(?O;TemXQDydFv6qJo6=a*?f0rO3nJdYN0Jc(>I2VZKQ?mPeb;jLmKswJI)~StcLH78m$PJ3LdO|@##LYa0H;LD`O&Rcal?vD zn7L>1`qR&1zp-C&|N0?R*Rj0nr6+Ujkw?(^^c8&K(m&^$4-T>aX@9^Q4xP=OU3ajq zmLXl|@s7oxVo~=HPp)AFu;k^Jt7lRhMTV=nu^Z8HxD{q*&h5K*4j33`<$&Q^xo7PjT<4Lz?E}~H=`-fC<5&N}Rd?LXMsoybo&A1ZK6Nz@E?ve@3i8?=CgRw8#s2}Lgu==x#}mM;-4OR zkouJKc=JgwqkGQ-EZZ{y9Y^t|*Zc#2bjT!juKp1>EW4kr(P5l-+?zPEr;4dB=l%`L zh-O{H|2g>$%&b4o0~_yQ**MIZc?OGTOkr^MqikgwNA7n9^ZVw|oh;?vXRhYw8y{lT zct1zYJ&FE_U-HE8h&KTZY3Cbm0#Vy?YnQ+_;C_zF3FEnCUx;OI9V!pxza z{N>a-Y> zWlX+h4^J(%46RM!)GBk2%^02A%>nxxB5iQ%M|k8%qm1lK85!vz-(u06K8`)Vhwd`C zEM@zy8hciz>|EuTGrf#TQ}(P*u_*fH$CQ-CW-S$2g8EOUz)+|IX{-Fus8PYN%5#jt zdjmwuAX=kDqjiLl2%M*dC~a^GFBuvl%~DS-axQ1~_GM0AKv!>AO6!X^0t>>%)?K9j=K|o zh(c#I)-U~A{$a%?R&3fq-8$0yZ{q3E@A2_tU(bnCzt7LmCbbd5?6 zT*Hd9KE;{G9mTcFf59k1-`w*#Y1#;n-1u`gjX7K-IH!F=S7_sV?C3&8*|fC9VpYNv zy0RfjQ_!#}Sci7ox$oNd^MB*da`7pj;j4>36W-ZibZ8r!pShdc?)VzterN?XGmTTu z|1-|)d4wyz@OHlb)G$g3Ke^{lHvah!dC&PDy4ILy?%|1{ zKjR~dPNc&a;;78Tp4++hSNE`Ga6L5z=wGmG?A^Tg@MAe)%5;|Q2%Z*WKjVsr|CuN1 z79_*ef5FnRm$7KhBKF(7l}%Yh+;I}ePMO5uj@#JS5MmXhoJDk)87Qh9p+kdr84hZ> zx}z0x9BEE7!_m+LtES^UyaONX>+Q95{<=I#}v74Iv8(P8ce8uXL#Gnc-3Qx84IR@X zj1!#Fl&3~SSh6uorb|pZwU^0GNOq@;Pgo?4=3EKKpm^k~inwAXK$`%_jVCq7vB8Q0aTu@1h%H5E z<1yj!DmHl(5EdLH$dJkf%+Ro!UpJpT|$Dk}D zBagAVb}TRHnae5ex%Q6xdF4Bg!!ZQDtmMOllo>sj)|cUg7d$LMvA)H-T=mhhz2q?yI07MtzlnN?3Qe!?-# z>ggieBZwVl-KwSRN>p(S);Il}n^$~<4;}w14!-^uJUlv$!%sS!nY(|=KQ7t8ctcQG z(CBv=#zff2`h6dcFKtxO1xGQjyO*Bs zsZ5%F5GTC!9lU?xsm%P+tNGlrBRS>pxr{FT3fHe3As}1y_*2~Wi#vGZg{QD+-l42K z`gjKR+{Bmfd4zH2k42F>>+gIo7v2epnZ;|~aw3xkujB9Teuz;CTz#Fe_R+6%!|5;M zEr-2~{U3h}rC@yH-8?>&qDU(n&vV?qjWM$jMn)&F zE>wX9^u&7Zzvpf)df(ZceaIJibls_(c|;#;e|a5C_BgEbF2U9cS(>7C7F=m5)N_n6 zI3;w1CD!V-0)TotPceg9%mH{qGKJXfta;)VR)={31g^e!17H8EPjTu=C-CicRVG)U z`-CrX?Ui5J$Br4MuUetn-AgjGhD{?0iET+<^NhXJO?P)M$?$r%)&S*20gP5CyOXU$ z4VcA_r=e;d%m9Uq$Hb zJerdZIFE%>_GfCPW3M&e8AU|KcdjzY5Tl9xbTdMOExYev-MouAYSujN8Q;Z$Gmjw} z`3_4*hd^gx5ZvLg;j9k{fV7GgH(5T-l&yIUYnj0>uAbU8V?Ob~Gir@H}H=jC- zKRSCZUDeSaF5sHsW1S^LM+P|8ASJ3$4+r zjx+SjA=WOl=)RcAGh!;;3Y}Soo~kp_2%nwn<~vJfbpT!tF+$G)5!-fW>{&Way=Flf z`sQjs62&C9Ve`wur$KwW-6juDicMTDAL3&hEa`dm_4?{ ze$^S2m1W3U#9ExQn9?jJSIU0-&HMl#d(#IQ*me~+-Su6z?%d8u3SF}<;!n>x7?=6u zEKikfIL`cH>TG)AN`ATPJG}JdvpKT&d=^$#@V)yUVY*dh)a{4SEf2D6Pn`oQy^w8Z zXB|d2U&fbje2CFd%2xQ%A8doI>o#%d!aAk><}kg(@pQdluK91Q05{C&=n$p3bD7zx zSTP)uYz3+`m6^R|NJdF*-u=}+=6-er=`NKU?uAZEE+4FMLGm=0MQ)1awz^_d9BGm_R`&Y)bH$wMB))ab zd)dEZ3V*r$2LRl%<8kgET*-Hj`vB)p-)9Qlj&`)8CE9))?Re3~wZGi*8^QmASzY|? zg)iYlubKZ}0{`F#Q*)`qESEfV7IDr4T?@)9DEfiLe3&$+w}gS#TrXW@Z{w||j(Ye! z*91~I5OysO31&-HgiM;|I=SJGuYS6g#Gv&xUZdUGur7OjQ?*y64rdwJYC%WLJ$Hb^ z&h6oVle?Hb&){tS*{T3}`7m^=BWye;rn3xgFlD?3YFdfz9#4^SLE~S7l8gU5!Vsqi zgEkdx3TY~2sgO1tX~U8w7Td7ch6_J4Y!V)glq|KRNk)=nq>U8UXi6AmNlKceq*+Ru zCS+NLwH9ZyVjmz`C?7ZXQK5E{Z>_Mc`lh~>cb)JTym`*Sbmj(TIVdudnKxx2Gt~&& zC$=*<`V>2)hpDBMEklp<%;4j!-19gqht{&kCJaq%WoYav*4APA)Khp#UzKuqC)z10 z-G}kckA9agox6}|^*!9RRXFC1w{m7b*jhq&RHAp_Bwl;!2@DKA%44gB=vCgsy5xju zXeMhzmk27&6GTTkv5ckLH`6!ebPn&(B-WB-mc(^2f5GcGqy*v&UHykKohP{QrMZIt$LKQ0>nL$Q7mOZ|8HLf1K}q;9`#IlH5!n zB%c)yed&96`3%^+b}2h{KhA^8)>E2s5asQ6bNl_*bNhYQamNEU@XHOuB%>=>yK6m9 zJpK@)Q(ny*Pg_WLL?MMa>9|X|?BieL+$lpW&0n+l1bPaCtO|3FeJ`(^1FM$Z$;Pxv zJ=5AJ0Y>XEU>nXw8D`a{r%5|c;N)2|sYam#W;FfN&*Z4ymz z{lZJs=E_X@{%z76rD(xO%cHm$y4Jt3@9M)o;?oDef%_JJhVIBG@FQ7`xBcp?+`D`E zf9n11XvhENXmWA(8Q%)S#g=%E@4;Py9Efsij@GQ;)uHpvk znqXf-a-f=(&}T=H1ZYjQTfv@;tq+Z%7sRlq&elikOcZ>eR{nm_gm*cY8|a7`m|16Z zt*`ra?;le(9`pz9M034b=ou;p8NrHJG@-MgJPpEGj01@>&t-PjyTlsr7_6*kSGh=G zEVwA2Re&r>yw1E;g|507FTNS!HQ22Sl85B(vdwt~Xz@8#!qCvYJTYW$pKYYj^_J;H$t7V)~{2I!W1SURVVMJKr7E=688~^)NFIaYO=Ye1wjXQFJLL>yEH#7C@LKZLH^>rQc@J zv`_Mfi$6(r?>D%2Fy@e#{2A{#at;X~Hetu6hgfGn!C7bg2~SUamlfIJoVNH+dE+tD zfI0+4tgt&nwO5+mtZay#yW< zw=QL@QRB`ZeT{pM_yQmQ%q=Xu;|JWkVm*51IlSq-H!^wkr}^MlE@Ra%zreqrbPeyl z;2JKQ^-XSGHN>O?U(G8{UP$-)uW|Xr2x>;6zt7F{|C-k?{0O6^?{N37Vfv?^%lU_% zNQZ+=6e``w)_TlwbI#|)&9SIpy)V_7EOKhPFB{> z;iNto-29KMO_E|pMsnYb;%p7caI^gpt}+z+Px9+dajrHy$m@8L-oXbrOWEjY~XHQ%Q+lNa}5?;T~+ znsHXI34bp~RI3@aT26y1R=|IkQ1SH!XqxKmn9|yWq%)>}nr`y_$pN)0z_kjT?!05- z^0msvUIa3yf;^}zIxNNsCKGfdXyY)syrUI}BE&W;$61o0j0cojo1pXKP)Y~MLWNbP za81?ws8qK8Mbg#W`_yOHGV`^ZGV25mntE{9?lp#MD|uk`9V{7KgZG{uX4S^8^S#Ea zICJ{ZoVed2vUEF}N0xHyvfFujWSCTh!RSQNp%srjc7GKO+07FZ;@f&~3o^ZDy`@{UvfKi=`$3wWP~Wbh`w@zYCKaPH?h!U;pG{)xZ*uJD1gFXobu zeV7ukd)Zg{^0y!7;)`G10>FXLNy!bR^Q|_t_UGKX{G%K>;+{qOn|=biZ}UUuFvn^!-?!`Hu)D{s4=_2Z!R!(9I5 z*RcD7zv04@-_M6mE&~m=Ecp_bUik$c84;9voU1N7o87PbA{U82Y(>CpB#|to)t{dUKUw!O3pMSo<|Ki1qnL2eU zV+SuqM+OyXR2V=t#(?oIwMK`5(#WfHsNiCnJ9ir0;@}xLzs8uN^{=(@j+;scZn{Rh zl-(-_8FLl-7fhnB+Jx$!lP;msZ)t4X!Pbovq`e(XnE{ziu~|m4b%V>#<)9kTHQDp^UCmP4ZL!8sousit8RO$Z zX~3YyGA1U3sK-z$2VH-!42W3A*pe~Uu5gqO?&g4FB6LoTYHo=?mZFNq*F*}b5NAC zU8dNzzQ%?n8yMdArcvSeXbO|+hEk^JC1zrx&i2MQ4VBWcV~jS& z859fU5?x*0lqXN2dcaH?GxxCBtYsptW39znM`i`m43{}<>Tns50+~Ys1;<$jsh4YY z7T@u*Eg;e7bj{yelD*Q@S98hd|A_5!i{-x!u3a)e?RXoA8`;NC0M+&8MZA`mq2bBA0A<0&eidX+-; zMyY1vueFBAUng{AFr|nnjxmuz$1zbH5k(OyGDLAq6qShL2op!dQA`v?Xk(hkooQY_ zOt`j0+Pf6%LOrWVO;RfG_f_6Kw0;grG7yL0aFQW#^gJZGApaQRbLvN_GdEK!ED z*2{o~E?quPly`Y_I1idIqvcv9F6@(#1%x4b70kNVe(L}ljRrT|a09LI#~aW;QvFfna`U~o%OsfQ?kr!!iz&Yjf(*BMmJgn z7lDLoF_EA!exTGzLGuxm=e1~8uzs5UvO#7v%nNG;q9XbanZ|(fibFOSTtTkL;lZL4 zi%jZea&HxD6Ed3>GXQE*m8re4=eVa4J@YDbrXJW?{5r?eOY}QW5y}gFx-+7ugQ7ww zfUX)kXB+Uec=SL_Z@;G^*-}h*KR7E$P6E#hhP8}68y%R4zPY9_2ij};TwC17{UFj!q6+1Xj3dYUIBcYcbgbt63nZZv#e%4dt;q<_B#to=5}VPbDs-Bd z$(0WJy80Q4V>Z^-(?~OHX0bNRnWPSvSU)75f@BUdK~jgL4wV66L;?#={5}u!+F`KS zZ-G2{^8@e|W-NRMr&gEqZ}&dRaMr>Jr-l7P6MW~h6vg&w373IWE&y$s{P|qA^4TYH zo=m6~no1bh-h23E-;uio@9S^*`u;iuZg#euIJ9`c?Y%<0(?qecl=6wB));M?K;M{< z1T>2e+W3UPC@(#1w5RE4zvpHDR z`Fud;=_k$!5*d_pU`(?T>PvM^MGf+)N$vlp@h-H=1UFh2s*`)&K5@7J9<%VU*g(6m z&SIS{<^l4dW4{VMDRDrH_)N1Rs)E*fEAV<&^A~g!J5Je7*PfB!7N6G{;ix^w1Ymzj; zMMNT?EXG7ACur*vFHy=T8DfK5u)~S*)#BXzNC{4~PZq>^s)`O}%>Y2r+E+~T>aqk^ zR8gQ+QSok_fAIbdt^mB^gmM%yeP94R-k>fS15hggsVNF9>-p>dZwTqY>1 zz~Vbdxl41-@o%z3(0Ps&Iyx4Rjw3nmWv3x4KFQ7N_V^)WDe_??U}2Sm@|M^auy#s{ z<*0l+s^%cOde*yhg{I=UqI2N)>90dl$-S=pdTI}(RZEvbtC09BS2R8pYOkcgxZoAy zZKuI$v`91YP&pkfC>|N#X+mp1TNDiO@~VFne){fH@Egg0SD_l8tMX_Gz+4dR_C9A- zC|pE+%${;O)9qtiw`UtxiJuXWAQc?WZlwaNKP0RLbqR{WWg$PPY0~$UYU%9w^HMcc z3I0n_)-hKd{~=!Uz~Axk&}x3T-vl7OgMXvN`kJrq>ZGPBT1EDxWr ztnUU`t-J$pP=3jr#u>22VXVVs7HzyofHuv`V3s6kXUT}XbFdB-d8KhWuZp^`Xa$&- zRk2~d!gmOqcY*UA1N^>Is37g>_my%@fkeS?bKlkQpXms{J3rhkVNS$v0*k4ZsP=X< zxn5^D9VL|-BegNQ`Z{T(j$LkyX~Ya!$B1iCR~f0xNW@Vpl_|#-Q4teL=&DqymMZji zcF|ky;o!;~)(vf?o>?+0zN(%%ROXGja^O!Ui1j`d;wX;qX8(p_Mx!{q@?GeO`N;SK z{QUw#uvaIn8XZhkDk(b82Cbn$^xrrz%e) z6fK2$SKb9sVY_-!&tSk&bXIn=di{I(+qD+wvf}&beBTv`Q=nLB<*z4sbzfS)d&{=X zzdZiKTJZmWh5r9*F{9kaH;(>e&bse2>`F%Yi>JTG!oK;ueCm6~S9WRb(Cjjku z!N*sxU&Fmm4es-~_n$xScLx3e($o^UPzp4vDJAFx?eJ6}<2wRbsQCM$phFuC##f8A z(HJp^i01}}&VchT3Hr-|E1Z7|sZg=tY|zpd5W7zr zMIJds&F|%|D1C-__P@hxZSh;X)yS?d&=<4>MQ5BUzUk%S!#kE$!i|yJXzghhB zV6o_4;As^eXljJeJqXkkF&1S6r7bFMb^y{W!KeshgB+?=-sCINI59*{JP;Lya=t6$ z9hx=T8Q&qmCoJAaKm~e`E&z~Lx+rbyz-4zu5+DWWN4&|L4T)Qx$U*4VSVuXF88B6P z%AJ(5IzmKT7RED2tRh^e!8HsOZ5VAN)Y1mdKw=C-Ngc9;awWz@G3Aa9`ln7IF30pl zWe)F~&qLdmvtxXMOne7GWdeccZ!M6C-<~03F#*KoxndqJ-}i_&RijCt$`i*N{N~3q z_{x6{;tAVHsiK}74y#`)>-#EoevX9qDn)Z{K)1fff0hoATUw6Q=ZrkLSIYC=^Uv0v z(xW`_JuKhD>(&HV>7u~jTyLN0g?-#ioJ9Mskmx|s(fJIK3Nu2@Iig~wNE0gjIpwEC zi(e6vfUwPj>Q~;`gFLU1(CPDk*WtT}@?8rpxt5RrOcTJp=;ryGFE3}tH9H}D?=Syd zz2Tl$JNxga0Y~-D<+F#rg+G4$8vuM_+0`uUpHE-h`QQHRcC_Qg5bXq@9WUtk_q#T6 z^H~QD75puT|90=JHcq>X+loWPNS?L zGZKbaeZ^Q=!DxdR!G#-pUdeRYH`W6_DnPFa{9KpM0O099*4h9dbB_YatxyZ_mPfOC z+l-<%S)et4JC~gH^6dL{%MCw#Xi;T_0P zK02X1ncn|fi?7U^AW3PxDv-+cDFK@#C~+t)I0G&YphPkdjdD6reR7o{P4IBWDu-x; za~^nU@jy_t_|FtwR9>6F-*3Y_hs^ocHmEsS@yT2!xd()IXmd_b4ob>U)e)}JMNhfR zXuSr>5EV)3>g=Xmt>C&GYFC4f(G=%kyacLJVy0G1OzffBQD)lo8BCrrgN}h-%9RN1 z9Me0da7_OJJhgorHEaE`k_jpUv4R!9eYI_&+u%W>%gec;vh3MUs#y1;B_JMP=JK4m znOZ*9A_0~|NPwjURH|k-K<9uzgpTqxp#c2(Ozz%vpHQ`Lf#|sjUw&ZzMx6`^QkHoR zTu|g%4sB^Jvq(x*b3oaj4?Y1=tpfVRds>nO_WmrN1ccx7zqKS5N;lt+axLJ0U$u5A z9{KYsT+c+guz&K`w02hVtdAyTs=0e z8eYREmR-%)kGlBz`S5nM;{_h=1fU%+*tqH8ZCrN!nteWZ?16oJ?2QY4=j)JVo(|%9 z{k}Tw2Y$78p>+nW9oC2+)^pAe3Xu&vx(*oKR$}%pv z1zYl)r*{hWuAJm`WS;=o4C}lTlURo>49jwJF)4s_ldqc_gax2a&K%CUzD*E73wV+i z;M97n&l8AemjRm&20oN{z?^f)B?mjj@|yG@2|#TxDb4`M^5j9`0Z1-csEjXPdK!`- zQBKM6VUyHXsUsjFP+K%Q=*}x0d2|}|UPUxwG)^>5YZTUVt+kg5)qbinIKKM9NhQ7n ztd$?sRLXYtfpF03jn=$4Z)NBLif+3m9XF4n;iRn-kjH#evp{LYIwNznhT*hUN z5vypF6yq_}I~AoyiK*2JY1xp)h7Ki2GM(POUb+VQF>wiHG;yraI4W_K!zV9b|H?|1 z?A(MwlZ1+Y-f=Nudn@taGg69@HerT?FnbaP-bDhxI~-5Nb`SIs)%2zGTy-fxz6+Eb zty%_a6)j+Q@7Vwys zIS=;FJ{f6IC?c=Y7w3#`FZe`J3NY^v8)*V~-ICF$yxR}}d66{u<4eNI9%y_^3M zz=ks?KPO!aH{Yv^QFJGo=65^Zr|X4a&L*he%m3xm-W!- zW~DQj9eLS97pknkEJ@8g0EQhdARYEe>$jcK{^DTIXpehM+g^P|kDFG5HXz zzlA&HtA`FR>*qvpcnXk^I}=-6mic5Lvq)xfHauKT!^vkDG)`%(vR>yq2d<&IXO-Y| z_&&<(l_;^z`r)&x|LR#k0Y5O=L}qBEh;$sBj0LN_D3XNgqe77d;Aq97i2y~GWzBg9 zXNzvYUepQ%XTv~bNCdQ2pnZp?5|xYf(oPq^)`%k#M+u0W*GJb@h?EcoP=p364jcH{ zMl?!$Di=y&R79i{kr*NjMl`W9l!@q|Ouw$sttxb@5?!TEDyE8wswiC|OB;-2V{EAJ zV0CRL+w3q6D_AV4&8VshJ-VBcDPt-^NeSh+L(HI zo1s+?QCvbr8j+Mp8T@~KmST4IbWWRn1k1MXA`?N|3~@pP80Y+evDS3PB_?%rF}tgu zIlYtVu5{pR#>B(~qZ4C{C3VJR{tl+u{UG-qqT^ZG+29~}}@?USh3L_tQ=KU6rVJw>KDi0;?go7MUJ zC0}!&H5B9@@d*TZ@)b5rbLcits0|hyW{g_NOD*|(o{+SB`@9n%A$ckitI*jYPw0y7 zP?&)tCw?h^-Nd2f`GY3Y%DsHoXO#uJY5ZpK0FgCHFkki8AyB}RFfMRc>mh$52=E3V-50|niul`2p)1C-|p7$DXL zhmheAr%+L#!-)0s66Dpy42{MH_hh4Vp;cedHKYkr{F;R%E3B(X4%s}=&BIymej15~ zRN6VTbC}E#DMO439S4VsA`r+#aN44@P!j(=szy^bCAxJ7lT{a!bO*fw=y&K6B~v1n zh-y@(L`0-Z7!*-zaS0>>I_^O#Q#r7_A4imSvt(p7PuI7y%Z`yc=rFx>>V7(mpmc*Q zNht~FIA*vufkD$->A>mOQ_YkRtE{NPJIOqq-`0qugg7ptB1L3ML`H*HI-?55&pMPd zw{PR#^($#O!DxuZ9~-@uGW+!maKfwuICo6wJi}C?-6^5%#Zb;`7l{hY;&`8?AW=%NU>~)3XSV_^5$T{{( zQE>H5?h#UOdOXE1|EJ`0K1!oiF5wwrbX0VZMEMH5V8d{Eld$K+;V_{iLpYZ~i4DD| z&Hw-)07*naR4!T}L3I{G=o(1gJP1l-l6Rznk`;niF_IQuPTsf6fj`ZYx_FKv`GA%_ zgZOksBm?DVazb6fckU$2Vmyxt0KoavkK->6dL5r#`D1o8M)<_CtGVH%k3Fx;Xh%C< zXwgmp+VO&mpFOgjTOZxI&*whzrh_k4k1Iqb9yh!6B!B~xT zf;Jkfl{f#<8e@S7|D4u{0bBzU#nfGbv5Kh07!2cYs9J{`zw#Bq0#U0b^+&{ps(9W3 z@JWEL{yUr%uzuD+iPyT%wd}3+oO3Um=>d_oE)3RcoDkeun~u9GRK)`<2&1>5+E375 z&lQXafG4>7B9J)`NHc5wu%~zpLn}ffO9QuGW1U5dkUBr$jQH6An{R`b$el?|_+CY2 zR|SfbQ`8%2aV2b|DN!8ZoCd2&(+pG%i7k!{Cnc09Vj?O6QBs@=M>!?og_)>DLqD$Whq&b5IMg+^PzEP zGmD48cZd=cAGC?^mF|Th1C(K^J!l_f3-&Liz zdjMwzH$FstJfW)+q2m&@xEt*{F*vfMfn=FKG97~3aCsb>w6ETxt;XxNOzW@M6A<@etAN(VX3rWG|-IU=R8F7;V{5c^uxMa6X$pql9T83`DI%ks-nVhI`C!k( zb0{1}oF7KttH0n|FEo8)dnHWQY?6sFv2EM7?MWuKy<^+l!Nj&Rv2EM-#P-Skyw~{y z{b_Y|t*Tn9X(npXr2S{){=(@)9Ivy{qcIJrz?&V&gQ9OttG}-6gnp?yp61!__VQP> z*dC*9wD`cJ(shT*{%qax&{z15`iexjg3ZKYs(p(YI*#k1-+ZxmPb<@J?|%FIHQGGl z_z+5<#woW_)FZ;~FKQ-w=C~&(~4$RvhuHjI)wsx5VWNq z@Fl=ycEsdf9sH5)th)eyTp{nHUfmQ3ocNk|WAYK%Hj&PeNCZ~UfOh&lZV41VkWBZ7 zjG49V3Ow!iIgwH&*o^VJV1S(|{&98A66_Sk^CHSX8AanT>{0|LAKbbs=2=lIiBi0- z561S$GA=RU1YKkec&iMuP6}I1u$Dw3EDtgZU4obk^;P{Ey}GA76n_y7e=>n5tOuu}OQxAk*`m3K2;-5l z0sO4*F83D(aV#1~mGKZISIgRXCDqaBZg63NNF^@Y95^WsE%pAN0#2G)Y~0F8DO(A; zpQ&bKF+BO~$y|>rxmtl3l9lk%W{zVh!x)D+Vix%h@KJz?i$4Q|jGhn`&GtKGRk&rY zkKbk>qiOE~HW}{{D^E*S-o@{_aydm!%w#9TKdvWq!j|F`DFelFCK$%_iz>k!x@lGe z10z(@=`0N;Nh+<8Wn2_bipLhnX9~p1Fz0lQa?CseeNDTYHiWoFnzqpi5;3!Xhl0PI zk|o3D?HCD7kT3wX47Z^5Zf1!e1WgP8Y_C0>LC7=GdF58!;rq|fX!2aABtLR0C((`{z)k1**W6NPKosS`*Q1TnnJ`#1 z9s6g4*}PpHsZAalbYB(9)BDcpnOuC^gT%#OQ`Z@`v=-s_R{p&+>UM4Kx5Ks_hi2^ne*lnE}USr=pCAHE`n?9A2?HXA8=t;5xw@;uuUA_1BLxBwydVV0z&sSq5v2N8EGb#T%AC!DKP&){5BUTC=?9F5r{!Mip zg`_L*54v?NYn5Jc`|62kJ34&TwxwfL7sV5s4_*B5w2YZRRv$> zOoiRgHe|6dT(`t*g3w=K)i$3U9r$Gl-3lMOc44PPRalJ!K#bp>6|2czb!D(j$#+PmNsF&X$ zpCO3~l|(8A9hp>XBx}3CyJeU|cAHL>#Gl703^X6G@}YeZBqR=zV#a}miA26>o6YCm zETkb1`cmN9e4^KjUk*l?nV)+&mKsd+a1MdiFK8ay!A^e|4badcyG1Ikv3g>hVmZ^$- z*TnXfZtHljUlJqoRub*|!QFfp(W`ZYcr^#GA>1dKIZgC1BIw|^exp^rT`XYvrUN=>x!RZc6$Nmv&xc(X2T`XNX=3)RsR1oAl+^pDSo<-K<%UWgEwcvm z*FWJ+UyCPh`V?amqArkT>__$Q@esv z?&_*|PQBO+)iX1GE!uOb2k^jB)r}fPE{_wvd>#!?TYm#tAVZZp?gFgfDzQvsXnTe9 z2Y_^V%zE{3k>Q)y3iK7{+1e1SjsD_MI769ZBX)#g|6P);5Wm)@`OAsg2$$E<7aZqyzETXdEh(?&g?=*SXQ6W2dCArgMpCBPPt6PUiR(6mZhuAO?AZn)5*DU%P{EO!toc}3M;SLJVQx|W=pB;P8mYL4~7PjwjUPjoreV8ZEyD|Gq7`hch zBb)BtP4@BjdbGo%4T6F#$iNbskvZz%6b$qXrD&&bFsdB2(bWO;91h|5L(b0Lw(}6z zS9D`XJhyvLH?+82s^dP|$2&yV0qXAhs6ftMG3)+5 znXX^cw62j~!&@1HBTZRPKHc_JjU_mqTzB|ovJp5o;!TxAiS%PB;N&Ras!~W;Kjp~k zLAt?}!6^L$4#-FR!KDb^b5jp`BS^`RjGu}92ZX|rloiBS>QPuo#AWlvA`cEbQ_WAD z+uDoyE2$B!FLVL!H3wKs)7<%I{rt`C73FRhXXTBLobOP5!k9|=21LC56e~$n4lq?R ze`%1Zkhq{+WU@w@jAZ^+mz|SGSxwd3J+FK{MuEJyYWf1T z=9MgBn(?#Nm6j+M7TGgC(`Cfd!QMgEJda#sauyBfIiaQj+~0qECL}hD&18&>Gvtbd zIq{P~MAb_mWUm2SvP7p-NBxAri+;q0$A!8A#CMxU54ZRD&dTjnOgjnLrruJXDt+P`aPHD5K>I97m6gj3)#d&%|aIHFnU+R z*X`nWO67zr;50VVUmig@kIW~=*bN(wM#Uv-z&g2Qx1g#^0NJ@Tcm$h`8&sqdipZok znyIBK&U!RQAwwDnl)3{o&G!uf%jW2&=Px9ntc-t}e_%EiWus@JqleT8(U^^+iY$VB znQNy`2IgI@R{nNf4k+5#jcL#f7Y|B9F~{eC%(TZ2jqQDUox>>=JmrV9ulia16ZDEZlS@Ux4IdOLzQo>(-|Lzonesq6_9=T!3Q2$o?evVgWI=0~3C*kq-$G>f; zo#U?O@%KT$n_nP!`-=K_aQ?>c5#c#si<~e2QZ=sHK8EUdO8oxeT0cGvOJ?sYIsk*< zj>FlfQT>BqG^kh>$YEv34-wFv!Lpbi$EZjki{@7Jphm$Bh)acL%Esb}P)9KWkoZtO zfN4@APEo#WUq*8)emJ5zC1{S@RZ+yU8ABt`bMg#5q_O(NFj9d^7DHruNZuRmcM94c zU_5TZo!g(|_>Z;P>MKUz=N@;;>YHDo~WhetgR7goYZz{QJ z!pcBkaWMmJGzV5yVss%ivuDTo=~60u>iOyBKMl=N*BDePxlw6#<#LigYRqPK2#8xiO55uHBxkVO)vIH8qJw;PGctzt30miNRGR`a&CuJyhJ)eEOyFU6`~o~W4u5cK!=?u;ZXA2UeufQ7$|6M#@8fj5gAa6I)c>TFLOx&6z64%r$Y$PO(bT2qJ3^zdQ42F1s{J8foGFuKY0D=jpPS&lC-%}{+` z4@RrX+6vj*c+Y(M8Rm1C(=Thg;}z`dZawF~zT;I`z~$<#D{tB(+PK5Qkq#vGrf>MF zqjm4t@1f$#V|)62{A&MUy}{gD;th*eKWs?Y7}L7LJwH)j2<1535;mT(I>MipdX)kR zAd?~*+GSCt;)Dl*4?&13CnN=_&f?A{9+=JbzbA>ktU>56=IF1kvlX z2Y6D!wFgNC*l0KlD}|>WDGR0m&?KW-m?{|&$+|?6CD8`;8O$hCsS6j;%IGSWr;BK! z6-%7LhF~KvX(e?@eF3L7Kgqtdu#(yf!(hZ--=yzf9>Bx-dz%M{0d`sEH`SC}QMtb+ zrc0h0XyB7$(PWVGi>~Nx?^k?t8NT&v6wJ&efQpZD!n`3!z#p!Y-)mEQaH5s$lp%R) zIGdSD+1q(-Hz;i8@R$S~`bEkRvHo`i*7OX8)zyfnK7^H`dnx&N@rF?_p}pF$H{W*& z4$b|@Dp=?6vYSPETwjf%MJ7cW0Vq*)ssOJxM3(3Z?@w$cPe@XI#VivLxq@V|fTw7( zhyV^32Q_(^OVy8q%j>#jv?;_S3w)AlhM0v9F;m7iYb>_H34O^7tH2M6+h9Q3ez?`W zeBvh~k)*K!UEq=6oq=3a&?%u)@3q{i{C)wy!TYPQG4)J6^@ zmzX{s&FtGSZuryC+C}F2d*Bjl4ZjKzTv;sn-d)`CFLk1(zXfm!OV#8sn{2vF379D0 zm5=86Zw|HOfhxVMpOL37P}k+YT0R5^lyJjjCIm&yI#DDJ>INJ=kviMmn*oK4q6St+ z`&`)rx-1PTOS+S63KHdp1p`)F`O~z=q7_VV9@Dbq~kT8`zk7d4i^pByT>8`Kgmu7(v2oT>(M8B8+p{?$J zXxnjpbJzW<4*7QZ=NjtkpZwy`)k?VMPrb zS%zYsN&+xf+K@)UAI54<N?(x|du*hyz9SG-gFnkOD=*h*C_ta7-&}O5Ix25Ei)Q zEGd$AL({2fcS7_F7|E6_jJjgy_Kd_-oU4XI=sZjG!wy=<6`f(Kg|p_*DZ#dFgm#{6 zSQEa>I@w@byI6-f@=7(wGgbIpY2Qw#c`Yb;!j$Lzj7o4KiKm{aP; zSa{|g(L_b`qQpQ&yE!XkhgsvQ5*l{x#QH>LoI`$Xm?4Wm3&^X}uz+GZs+ zStYj#^5^a@jk{LMth}h{e++aa*)6_Mldj<3 zY1i4&kMvz)vx|$034Z;xV|a^j`Rot0{zu0hltsl>?c*pyB13?N4twu;5C`0w&DQg zNy(E1IwR1ErJC9lHUftRtLLZ*7T43JkOV3lEZQi{rv9N-#<9NkOl8v5e3(i zxQ3XsjsI7vGdH8#K7BQQmpAQpjBtb7?{&vl2kxcO%)VI;P4gejG#T3M!2=|5O&CdUqXVM&S*BI&7S&jp(4>mL#$s0ZNYcq#{Ve$Ys|eS%S; zClO*Ic!>@6(5)aNeuGF#iE@1%PgwLxv29XfgW<{%TxDu)^t*+ubTm9-E`7hur4TR`wJq!?X?UE;eTGFC9Oo-2wXjSL$Yq~MCFEz{RM}ts?<27&n z=Lw4@8cp~2*lf{pypf8qZgz)6Y<=D>ySTDND;bTZY$_P5PFHpzp;gR)h%3(?0w2t3 z*=bQrESW9J`Etr0Ij2$!@rOJ>hK`*9Eu0}-1}l_+*QRWv$6KJF{Ony@#ioW(*&-`) z;N(^tnGLy$|7Tt~gzA!X87&!=VmRnIRHY(>KjNtLddT0V5eKd+Htp1ij;Jv_w2-)O zsya;!dIjZ;1e6u`9&s`p!UD=b46Go9bHhyC`%j=_!H8Reamv_>$h7#RJR>mgIR_w# z*A9mERywrx4+aqNEAs?iMyv(g7=QsmWn>owoV_1|x6_zE49Q@R`5A_8j@cgI2S%CQ zZK$Fbd$V6yFGID+skS*={h94TsU`C7IeB~^V{&#h34Af6RQoB z=i+Weh8aKh->y8~rr%f2-~TM9PCwgh;a}Nl^ZSfbk_g2~PK!4r3JMG3LuD9C?=w|sV5yng3TMbe z$}J}X=l38RwJD;x7(AlPLK4yd&q-raZSij)#L*n$%-u_Ac|0%n@q~O7FenZEwIe`i zF%_fq+EL>teU;&jFd*8Xa$aUMuaqiURdAoh{Yg!{Zek2IQq^qY4t@bsRQyPqxR%n% z2gk}YZ6+ejZC04X-*N@=MGcfbtz_MQq(_DWru?{`13ys_B ze>LY;BcMggnAkdk}0_5E6Q&X|@Xc!y9g7S{qM5gFC4Z|P9{khLJb3A3OQXVsa&C>B{n6KfW zNT`zzaa5!6a1%oTD#Y}Cy+sh2bbi7YB`6a_b<7MD8H*uI`&rYfPwkkv-4P3Y#Fck>e2PEEi$h?{Q$pKIfSJ%ZlHoX=I~jCam{-%VAP{o4$yV4N}DzQ;fv2-grC zZuiSu>N{b#&rS7u_x>V;;0Kt?m*GHT7cZGxpL*Av{PRl7R}m0zgdmJiWzL%mBd(M# z0UO1V3syL2XMTYQ6UmFuPHyd!S(r#fZsiLJD*rFIMmS%lrz2^pkSUgE0gb{WwOhKT zhvkca-K2g#^BuS`&S<}w_jS_0lCk5W0+B)K=S;3XC#?2QrWm0<3mi5>yhQteskYsh zqHv4+S?MgYQ~1j~p;l{N3Z)QfnA+LExSxNOq*Ur>#|qSiP?ec;C7(2E66dXBi>a0G zu=AtfucVH*ei=TTSi|@8PE1V^LB3nb8`7!QhEcfb$F*YSq#{?$iD*+ z%=OMG7dyP-ruIni(Y~v~g zjsCU~x>3zPs+L;L&>ZoXE^DXq24{ij$`u2=H!vA`7C~auL_EC{G*n~cw$_%-zpYfA zTvkOum(=IKuj>V>)wZ9CW3SyfXN$2l##rYf?a~AEABrB#|fZ z40>zVC>MD=C@ay<*i0FhAIofSE@lLPD7)y4>YA_6p=m40#IaS$LVQxj?!l zy{T<=Txr3If+iUcEAk$wath4&uE`mqqG8l%J;f{*6X9Snz(wQ}_#8l{=Q8bed}vcOga zmzOgQfe;Xr-$^(*F%nA~w-F?v&-*~{gkZsnEmP^5Q$$xy&+E{I|0?<+A z3RZlJ(E?&3%c`#dJjQ%YTLEC!%`Up*21k5#k@x{vp3y))$CN3pDG{MCA?naA?KZ>V zi+L~@#wmjC$zt+;nng z*x;j1Ta1L#{7s<$d(2Z}23DPFDMQv}!>F{yQD9gyHN0Xmx||tJowYO0%rW*!v~NDl z|CZxL|2a5H1wI^chn^VT5;hmEkSP}-oH(*CE{TyXps+DV{;zWajUo(4bOp^2@_5er z*%+z7^qESRps@c4Uc`W@wAj80WJ>!Dje%*FFJ9q;@wS(T89%yE~jW>}+ZnGaIEy<`Miy#e1`cM`0i74!-R|>`~U$||jJ6^3)RBv7+C`l}QA8cYo7!5;UF%x+a zwd!pFn+z^Z!R(MfK}0O|C{`Q(`U81>@O%Snxo3(2HV?Tp%8yyfpoZCt71K|D%_yMx zfK6>-eH$_;a#&;li91lybO3E#5{*X1TD(l?9E?9F@2Ue)ed?NI#m-=*F}(A8T0HuU zYCN_qcBI-&)syM-L;+TJ#DkZ#5E4MVgksc;^)R2#h&BSR9Xy>%FJqqO&{p2 zU!G){c6RlpsWypE{%GFccq|ohJ_NJ9&xFfFPuHepc>8G$#j)hrx>}z$Id@DCo*$iJcC}+URwXwIXm3Yv<-vymD>yOXtqvyfpK)CI)Av&iJiJu9eCF^@D*Up^FoT1 z&_Yd2j`62{E{G#QbHFZN^mtrj6=`WeV6LaUX<8pO(0Fhykbf-IZ|X4*1P|v-%U*W5 zh7CH6uCBsJz%4zl^qNk*5`Z1NB5(x5z>=4fQN=97RAVR&pyazDsS-!bo{)$R-I}YI z)^lO^p&F$h4Nhc*kE$YG=_ouKzv4nEUS}hDKdwoIR6AoFLsdHO=xP|tJjKa_6{(TH z;P#&3r{1>nDeLDh^LDs@hqL>D+E7I-Zjz*Wd4ohU*WAlX#Mr>YR${0{*cYVJ9L2#X zDTDj>nLkNlY7t2A1@TJRc$N~|pvfiD(l>O1!zSU0s&7=Q)5aT&&ZReLr@kN2QU2X8 zuZVX~UAN320=JKpu@F7XpKAZd1+e|l9=}Al{SXUsE(Ukw;K*O{Ujg4nkwumXcO!{d z+`z(xYND?K60taNVOJxB2_8R$<9XwpaMD{Odsa3&seU|-iHtq(z9FS@0~J9#Al1R2 zIz4~%d5B0oMvXPU z3>ta~qVFLxZ!^zFv5NE#_8#|2l+n(=Y(+<}!Sg-X*G;^=%dGLzaZ43)*lD(Q^P$o! zih;&%5%h{qh2!})_(b!RRh4FKYwjoifQv8g)v8w91ODM?U}MZ*Ju2^kffO$+j{KG@ zJ|By+WTQ>QUx?)Cy^vUl}`udd~b@Yp%mcV1IwC zckRC)1jAXcG^Na+oOGC1paIwmNL17j))vB-MzNb`#1N;%Ju?odylPrEV3vMQ$q#F( z=YOw8$%f}^TT@{NErO3qf-rBk6S~L36X5dBn<<(hK`YM7%u=#MFzk8y)&{1cVhwBW zr&ylTcwcC${0**!4Rw1Ulkw9UPE&49NaRDK8JJ9SX9#8?i_o-jfgEK*NHHfsf7z@^ zd?PE6Utu~G4ROCKo}2xEULs$l9;s)96$gEi?24NC z&O>b>VwiMvRwsn5Gkm_1`HMSyjUfjo`KVYT_}WG_iLm1a-}~h9=|&b&V9;LAH{k2g zx_h+yajyGbZh9AM*nR2$q}M_7uD^Sl0w349&3@yX*n$sWy?*`+r(>9XqI~gVV%=E$ zTfD&U)%6r2S;`cKi$RiQEHN9MqUU5a+!RyD^#si_f+ZNg&+fnXHO)2h86J^_D3oy@=^=L5yK`K)1=-8qrZ*ISBGWWu5)Q@F73axY+(=_+$w1z16HBxwP0ZPB9D7nLJUB=gnbQC~m7cbC_2i9jRYdDK^_LN8V^5`^+hv7%no9byi|E@vR>2dqv z>Kt;x(^MrHZKh}W_v&VCN9_7MtjFIHXFw}l^j3!Id!)@s?H8p^#J(y0#)^%{9-sbP zs5V@4-G)YJUb9Z*k=>$F1sEZTHpC@8toE^1)Qma6^+P&y9q z;s@pUOwgRiv4fzHd$yBODSl79c!Pd)%cqKG}aHR%y z0z3IfjupzL<9+UCfd0w#wQw!*%%zX_ zVOi{ks!AEld+3Z7jRcZdo-C0toZ?xoMcEQIk4!ive+*7Lh7U5$od;?jB%psu0EIl^ zhMZckh}wvRC=PXy2pM12Nz#bqNrvqdi_6632{oY>>MicQJ0B_IjnC{?{7k7;TO} zEoJ+JHT?XA`5kgP<4^k1v}gA|f#~}r{NEwWU9EflHNFn7pO{;(&(3^F-_0a0p(OMS zvtH?QLG9N!?|DjFe&xUN%Dy?ht_#kalp%tmafe#*{&|0yG!{1^HDbz!C0{JEivJ5- z%$%i8#!O9SX#Z1{;=u8B+iSBfj7DCD!s`&FFIFcdp{ zL`*FFOS!C*T*fPFdq%>>JiFXq)nYEg?ffBMNvt=Fc97ZkEXg zC%EEY(uU+^y2tlfo&(_PZtrcxU$4*zhnPiSk0+5Io116SVW<`5RnmN3d_8xA?{t4n zfBx*H{MpO&_rBjBkP_ZUC91y61_;DbSN{{f)iu19-K$;sAcbZoFUtPCEajg6qng}> zUP2reJ;JpA>^AUXa2>0l6oZn_{Y|#TwLc=3%{>zr>t9d*MP!Y@YCT-K;N1n`&g@wr zryH+c`m_@Clh?4N?%j}$blCNvT@aBPL#_IEG}aWVy4iXRt5tmgi+bLiwqnnM9^THN z@!aB~$Ld<=r-MrB1_OMm?zA~U4Ri6%^tQmEL>c#NU`qgH27U>9hpRR-E4ub_TE56B zielig(!#R=G5kW5v)rOVLZNm6t{La0GOql6tbjkdsBZE?h%j8ZMP=MS*A%;2uKFf^ zkvu@)F&etxdH1tD==0U*ykCxgU!DUf!jMOM)-jYNf-%_Fnt{m;3J-KFmkFl%34ZGdQ2zuuOa~!)vu2;XzZV0?qI5`B~ z*AQ>?{dO@uX7uk8ngx3O?gRXiaSt2*r-*3%9}7b5ep))>hx7M3Mkjm?z=V7A!*T@f zW_}88iY}c<2Xn6`IXt~?lY%mCr{28Oc5}%nOeo(HSblhsz25AsWgLcWsiPi<8Pwcl zHS+EK8Y!&wo7>MB5Zx1lmty1{g^y(q!PDtgAAyO%L5&MW+kzN>9QE1q_9oo>n(WAQ z^m2^j9Zzj(?HE4&M`1q6ZGM-L$zi@=8iOnfk9^hpCiV;9^Br<`v6WqKbkR-Ri7qrL zva>RaLOqIt7(dKR8cb{}qlT5wLt_@JgoAfgB>1@1+#dSLEv%MaZ4uw$nC2-_hVZ@j z3g98Eh0#(^5&7dP>7R+~-9_j~(mA`&vI=5KeFS*bpNLSRN>L&U`7$^&3FR55#U{QD zafQI+P%#CyTo`)Yzg%U?#d5Dt?l#f)TeG}z0D|Km{UEaz)$1uNo^~4SPiJ75V9P;8 zqrONH_Ze~{KuB`PLJ*YRUu9})jZ6EmEr5NXmevk(rJ8}&f{jF8FpImZuHrhvXtxkd z(QI1V?)?xqE2d>wY}5HE)NmWV!#RBzw)wi&UuvQ6Pp(Q?3?Gi~xOJE7HVch%Hydr% zF!D`w{Did@7Xac~>Rxj-OX1Aa)Kl;HF2N*}=VhJ>u^q%a`Gex)JHIvhe=w}S@!5UF zOMVd6Mq>U#4=}RABU}0Sds|Y3Ln?)&WO)%B&kQ~%OVU$LVb#u7#T+eD^H}b8R^r@G6u)Dm=yo<$z;pl`f{_-U+iPQZS0=y z*vxa-U-OCN_Y_5VcyS3s=<$a7&TIeve8*q*AKao1gY953%Dtc2cjCVOxKtVv)1-JC|F=7b}j(+ef>c==b&rsi%dyA+#MKQLnQW!Q`H+P0=ULxKW{vZP#nw zf~_xsIKsG`0})E`#Qr^^f4rgd%EJ|{Vq)YzU+z=@oRO?A6A(0?fjG`MKmVInn94SU z<#xtvDE+q|f9Dp&`}6q>^|G9_vz^?0Q&TaX(llkGfh)c9h!~tJ2SSywa?0~;vMCMN z4Xe?sm4*U2s_GEhWeegG;S4kD0Rm)BP56*)m$@MB=b(2l(ev}H3X0QQS`4KXfhrXT zc}SjX=LqYI=Db9R`LkGnL??8Jh8HB&B#V*q+e>n~xV=j0w9#uN12I`9s*2({N^`CybLRa$3Ei zNA^43YhK9})Y^9#Vt)CI>36yWO)_HGi(4AE9fJr>z!V{sNahV@sW?f8so_lA1+ zX>0C@-ly4g`Eupb_3wus#L3jACO7|YmYhkdXklbW+pw6F>dpGrE`v_3{eoJq*3sJ` z`lE4fd3B{Ssgs(MX4<8oqNnsZH8y#1bmCDY5fei+z_mMWJVP!}1eh0*&YPcB;U9~9&Ziw*&Vp8M zz{%BQJHDPutI?kA0or^-PFZAllJuI;@Po4=QP;W$Nk~m7iWz?VDFt4%xmU%IznxZMcG4rj4KbX z#DkggON+w2gA+FcX7owO30aT_DoP-l!)irG2ftBY3#zwK9n6xG8KK<$V0wo>3*`Mc;4*8Ea02NP)C7Q}@zr^}sS(k60 zE!;d1BxbaKL_RI?0%kDDgbOh$B;Go{(m$;O&S~ie5a}}jFHa;I68q+-#6nJMsry5n(^p)i=r$Kc2ZRdM2I#^`z_fSm=fQ162ecPS zK(<&wrRz?Y(WIfL{|Q}!P*WCBF0^wG&Uzw>oKIRuyNNd7jchBn!BJC175RR?+2n-{ zVbjfG5n|;zcQ$(R7Zx5e^D`SV8JWwCs%VxfWHsWJ)6Qd8_kzuu#4yEKUU+^XHrs6< zdNvvYI`?k&DRus!16a)k^k>)*iYpUuFkyi*6mIImT1yk@@cTEQSA0vZT!Kit{wH-^ zrj4!Bc6Z@nyRv+@S2Kh3qs+!^4~aGc<}=#(3>zI>l77*DYe|WH@T2xDc~bcq-P?8$ zliWbu4Lzd|V7<<`gF8vDc99&tV`q_KgObyUM47J)abTpqUBF(8)`%UwjBatDlTv%S zJRDoJqR;ZfvOY$IUv>s0asma*-Q6{Ab~Ob@1l`|~gwnzO!&7h8q5oNT$XAOWP|pd1 zZg2ede#oNPuj%bxih%b~(iu^hG8P0_F8^mH z5zjrK*uaK5ysE5nu>xtlfxKcPo+PxA0tLn1or_c14=mO~!v(zQrFQ(o9Qp(sSH%Twi}$9?RN~l_8S4aoQ+)@*DDm{Qs=s&t5BOpu0WhFD4hxTp=s5KrK6-_TBji7DY8Yg5 z*7H4Nzuf4W^wuC{-fN3R`Yut_>TEtke(>@`gsF7YbeU3_7!733e-`U0lhvYSf%TP% zTdf$G*0ZM4KAuso&ZDn4zZYESCU*z7jbfd7W8b0$FJKRZ0wJWD? zQ&og8Ix`*|ur4oLMPlkNZb)U4)6!a+r;|UepIdk7$f1s zETWc3>FTIGh9~rMn4(V=S9#+KF>LhfnKQgKDyIXE^qJW(&VMNSupPxn3W@mVWBV!g z-HY{{nxXg9jrZ_}9SvSrmyEl@O`g~GFyhwpPl20*JMV)F#p@jJWBvVgOiA=MV{hld z{|eSQZo0d1cmM0)JF4^bdBt};-PPs&)BJv#fE0ltR@$!XRX(*PO-BIH@tzdQ00&Kq z0z`4M{^J*c5eu>>;)){AM)2$l5A^K9rJw~@Y;BIqh9ip*9}$b>AE3xk|78-m^mTTN zBGC|@aT~QWqy)4QpFeA~_{9BRLq0ptDrOn0JxPzq;LO~gDZSbn7wr1(_ZZJ#a6v~y z|ALpNu5P;4Yi@?Jo*a)4&|w#I^JjSD%8xfXUQou9oWGyPWCkjyeD>W8e=M;6nFcL= zM@Pq;sNuLeW#_v~*$tml@)Y?Pw}gvgQ%WL3gJzG3!6dlQT&_-!p!t`~IWd}|*`68O zm5U}DSAJz|4EaB`Ys5PRgRZ(PsoI%y#PF$cH%mrjN@97`@T{n{zC@7Ia&V@GEob;u zL9Jw9)i>E0LC4^emM(lc%_{;b+dO$p>Ag@#?yxZ7Tmv4Nw%9gKMYeK<7j%dmyi?}r zjEp$&{98Ombggw%r<(Z7>-5dIG1-(M*&(wVY_&+eiNzALY-o3=YPza9*(ez(+to;d zxq+f%k=2;h%eX1M$_ddYXZg8q0gVrQE7e-I%b5(kW>L7g@NG;J7;t!zpEu};HP!AN zt4_Y2Nvq!7nk!ocVycVIF6_p;d_Lxu%fFl25i~O>fffIeh3|{bs;{(&yan~do-93V7EGFPv?%9^fdv8 z74Zy})Ry-9y#RK$C3M$;{-XWb_-@yM5vSqSC$WnWvN#RpI^1H;M5Ksh5{X4)`tr=DPCAeekP}GmyyNF`%w2*h-_Cpy!&%Ze-Bkr0I^5%$}jS3XZ`cc zS)ky%y~?rw4`%tEo*SnHJg3+F4!k~1T)yT99Xg(45&ros(+~J8XKXBLzA!USU!c+u zkq_tJiaVC0qgY4;%At5%=|XnAWp~aYs_r56320$mt-HMp=gh-J6v)i(CLrQQk`nIj z04Us*Ms%lxoD=G(Rz)#}jN{yQ5?t_{iIETukX3t8RBn|@h2nu}-nP!YycLq~OBr9m znp2n80jXUpM5Q}s<-GnGphxSzIA*}0bM+S+#ZZb;jxGPk?r=joFC%Mig2Et+wc*4Z;$LDXyc z{wSxDxLM<0*okl3Gn1rQ#X5@ke9{>G&RoAGyAPgeh#{wii)$hfjO+L|cEfsx8W-G+ z99pQ<@~Pn2Xqftu$G{5E7{CLc&_X~6&LLqDSbx+Zy%M2mJL;vv2NfabsX1uiGPv>w zJxz>(k=!pCRuvG^bv8?Z=FNi3yp}qcDR6g-uhJotjFo}|ocMbYksx!0Tng8T^E2~n+Fj_M}jV~|JGA!xu4@DGY<^;}h5r&uNW;0UT8g#DCtiRDUXMC8`Ln~WD zgOZMhv@_tQG(aqEnXEV2aHLi)eRCz;vkP{0RsWmH4^o1AzaH@~3dJ@kKJ4lUntb^^ zc`9|XC%f6`pZ$7l;Uc8&hI?O3=r(MRKv*W7@XFtYF2L4m89I_P4 zEKVX>ZTlFitT{iH2q}$>AJC-Z>+x-!9kPC1=in;Y+DzEfisbDV$QHFMJ%&v38U`BE0+s)U; zT_>U5@Ca|!JSJEQ3Xnq)VtB+p=?4El3(z?J)b>RR$t97zGxEYIl0u@!Ob%!4{2rf@ zs=(;>NtW+C?BuD8-2_xPKW)%dBxfjSQ)0+>+9S+ASWcZ{-OW@*$?Kax4NxozR5`Uj z6+NKEe0sU*%B9)IVH0)&16N9i2UoZq3>CpX_pZKv zW^Bz)D0*yvw_CjJ;;N~C8bD7LbT8gg&d1>h^aaeq(+5wv)wze)M(nKf!vE%(w|5#f zT2qfl;+nI{=;j7s(b+bC+a+M=Br=#v7`gD1qu3#t0r)NM*BEgO1oIb=9G$zpO~%yd zaoUoqOWr#gK@a%)-p?RLJB8I+Ddd|o`K*tg^N5u^)A>+0O6$+`sDL^&(jcJ4qzK zJa1XB7k>ncy=uyQ2X>P(?ruzh(Bb=2JzdE4+ws}f-skTOf*wy^FDD<0cXd(IH@}zl zkERK;0^)Au|0h^Yv-@7KVs-#->~62(e5dJC8Zf{1xjEi)^6!tLHJv!^|A7Q!Ex^;J3G~DK90tv{@_A1 z9%dGWA)|or{zpi8B@lC}Gt@0F^XQxpQ0+|q@7=c*3-0d(o)MOaOf->>kglt zF<-d$ca%o7^+?7&rPNcEjiEpQm*bF+PuB?)#m`;EFk8N!(^u(gGdKO29O}-mds%q} zd(m*N(1>YZ3y_PjbaI^oByp!b?!M}tjtpJZ)wjOPubijwtrSeZ7v`9ekp*Le2gZOx zfIv>oK;lcE3+nKG1R59qO$ZN zMJ8mH!ZLAev0qWBRna1Xa4IQ*9Dfe6O9#GArNE+Yc~z#jX!+WdBIlS+TUYD~hGx@euBW)x+JQ`-4F_b|+DBM8{N8(Gj@ui$BSE znCq1chKw1hE7_6{=<4}Gw4%-jYg!zWQ{_l{BD7(4b7st%>6--(rl?gsCiaLK4Oa?u zd{a4nvr&urI1OP-cbYj>Zr@7u1B2JC^!p*F(sfqRE55(pqAIGc0w`pe^fHl-ExT@# z>&1{_JY7a=cP-Kx)%quD0W8Iss}Wi`%@1yJCJh+w#b4bJVEZy&@qcYIzyk*(f9M`< z@V?R10MTOdJuU!cPZWNfgG+XC|V4Ok^|ea1gYX^uXHHz4ZWTF!u?M-@#x-WaW)e zn~!qjv{Ry#w2dbykdW{5XySRT3EnE`!ax3DQ`OTu0|*8a$0#{cpr@6mXF*~=Xturw z0F29(hQHR>mCK0pl$|HV916Ioq%pZSMLh+S0dNCU5-yR03E(^kmPC<9r%XyJ;BsX{ zOVQ?ZjdT>W1?e{waO(DWBy#AP(B7$qVgPh167&f}IaI4s%2;dZjmPO{zE%>8XxzOK zk6fT+r4W4pwGSF4?Mq;^NVaumE-<&CC<>H}6&?)HwHd^8gK;Y!OJsyrFq_B~4(m+} zoGGX&O4mipFWOG9VJsbBW>Yo0jV*3n3W)`;3sLoe5(cm0-=WFZtp+EOlM@KYY0#_Z z_r{HdKe0A)R5h_Aktkx1FE)pTGQv}e7(*C@OxzLhq&q!E_QHkr!T~@_I|m)U!fFYf zg5~*42OLu{QqY9mMD|?@agyEU33E!V_cBwflcNC08p*^nc)n+?IOl-l0MZcB>QBW< zPUU?E-(l8sXVs9e7Xw0cJgOmUYr&|{mz8_7|4@ycw{CUBhV&NO756@%3u$WOQ{jhN zgJEkYz==L5ND#pSnU#S{Kc!$;WNB+ho?2r=iny$$Lq40)dF|h1A+}LZ6TR9GoQ^Mu z*FmCqb*QiH%dlWLb#~@5oQWPcjm_Af7tJ;>uU~~ZqQsp+vv;hh7QgLb2OO!Csz|&9 z)vS5OQEH&jP;n!&;A8D#FF)#atR;B%)pe1h=M0_#Km|6E>fdxs7Do(qq*LAu1t6}x zpP*+8YOKVqdoK4wRDx4+77Xur;WdBTc#Y!?5B~a*vj%s|RGZtJ^rIYu^{yd*#*J$<+gYyKI%x>nN= z4@Wv6@jzc3Fo%tl=c!&dgaZj??|Jp;+!UQpxhe5eBezwvuyIL5M~9cNs=)Fgw)o zeYv?E;+F(Y7H2xnCQ@AmF)}cb@C9GWC_~LoWmJYc9I<8}CKQiO>jxD!9<2ttjx5cX z;Bb0kJZHuvgFk!wV@M}Q0TL3m8zoSnj^<5$$cm(QaY&&YjeQf5{-WcQi;Fo*InA)4 ziNbpyliv_2ds0Y?Fe0G#O0s$E1@d*}h`!Q3=f+M{)S0;DDxX_8wPx)5_*B+Znma8? zmfBE|QK_<9mjl8@09S8dn+}70Fm^5PB3>a_@Ewz66waK8fnObBsZ29)J0yQbx8=Nh>ZYMH9LNP1+Jyl_TocN~H`uFLQ=5+<1q`x*Oi zY&b%$$zmBjnya&9Ms#l74-1_Yc{vmAueW@0>=}2+(LKZkZ9FYlbplY4;%k0 z1~*NdIY@k#IDD@8S(M3*&c$R<$mpz371pW6tiZXA7+S+cGIQoawiC2Co-$#cM4VUeBhV6r}(Nn};Y$nvhDh zEQ&DQX=+|G`W5X@M0ILG^dbLkAgdt^iw;q`T(OKwjTWHuEDTk~(RM~tiJqLVR0zmZ z3kTM0S3A0nPGVZq^v}C^{=q7?5iQf6yf}Po)~7l=9QFX`o*GJseRPT>VhK9{(S_|I6?-q?vh z->W>35!v=LtnBOxsu~xZ!9YZ<-b8=8&)RCs0gj21D`Cln;mnaF%7rT>crx*tfpCh_ zvN%*w0c1>3YlT=;xBL4fSh3}aG<4)e&=^uNT+w0io|1=V8Q2Z29dS{RHp|Q{$rFwG z#&Kjm$h3%8s9iCK9>qxF((&_(SFtM?e^<*GXJCtzW*z77+YVQ_*QakFo9kVgq8U2H zGi1}gZ__u(2fuDejek}X`$sL(C*=dl>>@wfN6wO;R-AnGat|$_T%w*dbYcykK=^Bh(`|{zLZ1`kz3nFm`7GUS zVaO_7G>&5sRqrIbQc_6PwIvc}=I97MV}#k0L?;;n_Aq?@PfAm2Eta^8j}xzNUa+Hl zBQ2Ob-lXKRYRI%Hs^9umLR=Sqh_#-Cs8wwithJSDcMcsDf{9Es%OPWMvBfWP`ZkT} zl{=QK^8(z}pUKh5NeV0OMH-DmeDA_(V~0rwvI6(ZR~S;$o;=G(pGR# z9-Ag6Wg@Blg>?#vbgl%eB3p-1P2GwlK7rn`WkR%B`HkB*l15UbhvdPuZ&g&ZkVSNW zLus{aX7<~;KGBkJ3cxVTiee~=gd>djB(fqMrP|Mh(*E)ZhdS3eKu9^HYCN4H)Yc@n z1C=T&K#T@0i29mu^Jtme_G{H%9qw4VupZ-wENRC)8W6ZYOm#~I49mo)UZPc79&V~1 zX#Y`mSnsfu3r3Y+4Xj@+hE2jlsYV1NfxI~QCBej_ zRBmXkuuvj#7QK%}fwg0CMGH6tl`sQ&w)bS$f7;1`X%`eZuaPEvzlRc$N>uD8lb{Qx zE=sy*_gB{z4)RR9y@S{LJL{nRVwPVs+heT#S^Tl=k`%TUFxyDU%_zrpMd0Z~$r1a#T5Ne(Y3JG>HRQof#b(X>b*h4U;5e5zh!jZVdX5)kAQ;Lcgzu`qtnl7Y_MVFh zv%pbr74Fy90x-)3IJlsXc_yQ~3vh2*=$_KJX0*`rMs22DpC=sK63YlInwpf-W;3I{ zQ-s6Po81TpjenEcCQTBd2&V~Gf-AhcQVlOraZXQPL8iUF70+LC&OgU5S7dl%+cz{`9yP6$l7-S=|}81m@;7^#jXm!Uv%Ha3xPiXX9!!5)Q_3if6C@m`Ae-6-BKvf|~D&!)2F z>p?XMr~VT=W{r={_^dwieOh5R`;He%xn_*|kPgdeH{n0owF!h5F*OFe_-(1o*udqd zPO?@jCC4%F4H-&b^!nz(P$j(Je*(OA#aDw+c@USq$mMwkwBxTt#jpFUivsgUU8Q>9 z1vq~$sHwdd1m8J8Rr?%i#u_$|YGwSTk?bAjMk%Z?#l zr}8o#*Zf8X*nNUZn+@&e%SuhZobd*M`!-m-%Ui`l06S}9K6GyRL^4vUSqOHVyf!p6 zR5TUxLV#1Df0BSw2~s1*!2GG=Jh(p#c!UEG*$&~;@WBwl#*@%-{N7X4 zSKd;X6mUrtG*w~f!m98}0ipBvfeur*iX11G9^fL@1zSPI$@4fzgr>}NGrUU^FB9}f z$eabvVyT0wy>LmjvW(SuZE;Z|7LQ7>GH!7pEGFc4vw#6Oq3=5N^uW$d#075G8B0Xv zbUchHCl$)ZTn!NGFT;YB`(EF;8NU-S&V|vy+eFo(wA-oLuB8?GjjL`Q-qC=q!EX!G z-F<-Ww#$UdGJ}IRPJjQwaGg3zp;|V=X3$wNiw@4itK##U|`^SYiUxU*cgprbzXk!P^@BO6_R)or$o04OoHc z^2^LiGPDGSGcTOOhc{39{?tA<*$OsYQLf7p36}WDWj7X7JdzXJ6}g3y*$>J z7?8a^vVj|Psg5G~x~{z@A&1wI#1TmSK`)`oi50DY+i;bVKUgl&dJpnLQY>QM&E$E!of~G_@|K#i`7A^uL9sw|Gxs@ zA$pY@p40yR-p@Tn{IeN2Ze}m#hwNp5e@}1-1dMO~xMso^(1^+Bb)vl)EPc4jYPZaL z)oCpiY-!?k8I9kFr@GC_(c|aQa{Fl5eUA#w8}n|l?PbpT-M(s@AyKlyjn~!{wJT~- zTXs#5sZw}4R8HI*Kzm4Xa(2(i3Z|oN+&t1#JMMoUjM6(y2FJEfkzY>s))LQMOq8Ci z8&D^Qo;LqQtlp@g3;YihW0|BNDE_ET2x*Z={0ys^4(LxTz?0O24T~ju7Ku(ifB;yP zH^y2ENXn=LfHEbE(3Gmgfta#v-Kt1&p0TBP2_Zi{rV7focBREL={Od1F+?&&G7ZfH zNtF~4(IHS{k-cZN0hF@Wv0_T2gU)}w1%_Ib3UKB&nGF>Sa&hL;yS5UTvfErBu@EOj1{{U2*CX4?` zYapdWuCcU}*B|^Ap`Gg(JF)PDEpRRTW*HU>7iS5Kg`HxZu`mm_Phys5cz8+mR9B%k zwDy?4%H>%Bb+vGxKfO`SURwWFq+L<=$Edzq0AVR2BeDGh)5+XSb*xlyB3+w_k`5y5 z=r_BRRqd>GB$~>zSQh z)u-RvYcGFtOO*~eHQvoOaBvI9FK~=TKeMFj<)07r>E-u1Pgp7*A~YjkWpWu>4*m?j zS1qDSfOP40u-dURS?K$4VafL|Qg3lWO_MzaJs3eW9dr(gNp;4hdMx1!kwq5f5?xGl z>W2-U9Eyh!-%ex)UqZ zCqLj{tSiJFE}cYm#pk^pmp|-*mKNkL9aW2!e$>G{R6!XS^#^tKk@f(p=mU=t9C*NQ z9TwLWshqT)K%o{SEz2HhX~&WN)@6{}T9!sKOlli(ELMU-DW!lW5e`sOie_7w?~A~c z##0)9F4R^=x<&b_FOt}OYU-SiSwJbESEl=wTI&Lj!MKQb(Wtne= z1JC|n8C6l<^rHA#BR6N&2GMiPl#(QTWesK2WEXjT{GVn1SF)8>| zcJ+_3D9iSGAwk|v-CO=*p{ANp0!mbx_LGcxBWWQ$1F*i*hhg={C>lBv|5!X`eW&kP2wXN_#n9X$Jw(~N%5 zs>=^Cb%LeoJDJs^^;!hsT@u|pMf%ez4!_aR+QMk|#U!Ubqvjn|-RHw#<-OyD2?o0^3ujaP2JDI`Q;LjYHgZmRLMmM& zN7phjnlFX=L`h=((jwgIrNd|K>N5yxm~{_|0yLF zkzEtC^=3Ug5!{mn;=@C%3<(u&sm9h~Jx_szw_GxZHdVDH6aJ}36dk`b)nX!rB6C6g zhTX%t3b2C2Y%_8+tr#iw*v1G8vS`pPHt&;;M4IxoCw5(XN&~*iCC0-&x=vZpa7SQ$ zu0M`{ky$4W2r!8=!p3Kr*XEa(k9OCNKJw?+)F$LjSzL;U-<(`8T%B*8s1-^*C|Y>y zQWt4jc7M`EFm^H*^R! zB%aJajrhrFuT#RCM!(@-T1igXaJuQPfLBod1G~2I^`u&iT!SZR@cL2rruT!!NQyW5 zvx=n%r+^DREVWvj6QA=g_B31Ji^d*dTVWTZZYh`!J(M{^7nF*{BW7Uw`hAN-BJD`z zqES|(1R+=EwmT34==nCu>McX+Mn-*gA+F`5>bKaE$qB}_y~ul`#Ts2cDQ8WG!>u? z-+5l8TI|8tLQDBGx(k{TGn+9}yxmw`bYrHMaPzKBXr+;oJv#~d9yr_v(f(pW53QPG zgE;A%m2m(TFp_Gy$j-akgp}C`xu5U*aj$iHK#A4DMZK!Fv_z}~gHnAVY|1}y-hpMj zbcT&+Gkgz;((5C+?5GucS|~5qDsKHk4=a_V)9xy4S|OWXMNtO1lZH@=0;@oNg<|~* z1-5&0PVki)HCK9t+&50FEq40HDDc?oe08KG&bm+F+yVdpEP&mA+4qK$&J`!vKi~Ea zUT`7xYiNX+fj`;kP~O_jsVRS2GPI!0Ft{y-PC?wA|0 zU>qcoM?6fM$nfktC{G>n&6~cAo1u1-8E03@R(Q*bMv+KA^(g=7!rM0JmyNvhLBH1F zpg1l5kdaw9%S*yUzUeZA9*i2&KUf*?kspPk&=nYlF*qC>KJCw@I(~ zV{{EEXnYj%RVIq_QYqxD97gki=DEt`^2Tu4$Fdo8!jq39``&NUqLSb7?c-~m-%22 z>{#gvSOwp-;ZEO>+lhN86qMZZ#rt3y!Qn$TlwokIt!jj{MwH;M8GNWR)SYW@T3a>xPy1u?%Zai1HVu9GT$ zRuwP)phbn(ueR;$&icnwYfX+Wd1+5mWIdJg8HGt#wlhw7w1wn3aeVqPK#Tq-SMqwSA z4tqJ`o_FaNlOD8`5%>PXI>WxXy>9g_to-{^^V8DCT-s7RHC^XGhK;`AM#JLovB08! ztv;sJS9SU;C~cX-cuQKl*wudnvek3)ld?N=56#nU!WSGF(NWU|i>%IRdm6j1u0MFv zk1KABp@aK4I_&0@B}%ATgUb{z==JF9$HDq;lN!BeB`oS?izu(j8P@ zex+laX6LnS5rmjdzP!BfcxY524t*8D;85K5e|)eUipr7pniiw2zOtOM2>~=^1t$H6 zjmG~2=ba`GZyE1*h+-!@rVZ@mT_ zusNzguGi4|!SEl{-$DtiT1N_xL0Q2R8ToGiJ~v!R0md&8%z1vlPq`tMd1393BX&bL z^gj7Lx#Y)V0>|!|GPxbyUcD1?n7m{nWPipW@LqQLd+>u5N5#L^jZ|UH4Rf>gm9))7 z_|%JO_kez?_%Pa_*8Js=%POV}xNm*;qcti=&kNVBl9@!oa`;PRYrGFw1UT%FSLW&T zJwG_AbK1Gu1qM+^Sp#m8t!h^EiPmIU4SgnG z5_&?+5qrhIwuc@?mG7B>Ns%SRsgS{A^;G}XWIAWf+ zEx!8mxDAch{-f4Iw;QfWP>9gLlvN`ksw5gpmuisvrO7DWGWAwu`QDHPq8Gdhp?0CC zc{#Y>%nAyE79;yg_B;}p1|}P_?ErpjXO|@mAL?>33AxVHAh0&B;^V+}(c-%fRncSHjE1C7& zPt$F05%V1_({(v^;P$;kI}muX`&gNq9PgVvP%-F^>9pqxu32kFp~@LmOVOVSm1Huy zfK0hL`^r*?oH;BqZ>cwUuNyM2Pgjp&Vt2Vu<|8y;#$%pl9qbF5Zz;OmH{6~t1`1+7 zfB$f+{62E&P9@m!mNIUy-@EqOHQ}`W%~jxv!S|*Li3aOPnB)q_>*}%PI%kr!`wDr@ zb+;Z0xJ)R|1Wa(n^N@Z@#EWX zr4du(73BREatlRm_wUF|oN4If1y+f&ndlDw8MVOR=1mPF@>#?W70A!l4?K}{kwMvS z;-+_q0l8c+DA7x0|6WS$4}&+RZ7bNrF|v?quRa={`pFgP7Nx#@jcR8We<@j5RQPLe z0STn`&4l|t9$lFtUiqv(>=A?eow^91zqF%J@y>EY2EZVH9zRL<;nMzj10>kdzNe zDsnJF&`=_AC$IsNE!#^pZS*%FkhHTZS{Sn`ezWeGgccTDdsOLbO4L1J)MO2HmTD<* z9&|XUDJgFEs}UWftw(4CdAQic{Bd*zxRhZ*Ke?QJ97vKb&?e zDTJtyUlM;7QA;3eg0u>gt}&6=S^e%bJhef904Wnzc2ERIQnS^mfsOLqwAA@s(uSIM z{~%{9k`3##YaP!kmCJuu$X|ISvxYyF_Gm#1)q9u6aeag^N?`@3tH-`=8|D6#4A^8N zndS@skh;RE$MJEH+YHHD>4Z#l-o7OVi%vx>kvHXxf zAal_w*C(Nbnw11dr_&UoP*{ayP(e@ykC!5d;12z~@}3U2MoTNzeEw$Nb|5n7bCKbF z7MYRi6T+{rUEsEx!Jxwy%1iu4iTr~;Zv|;*mpW&lFly0pI|=*t%sdQqb%wh}k+k!v%k`v5j_X9jYVVdvwUEaqU9>7)IN8LL~ecofZXx<$#d;J@XKgukw zIVxP9zr#G51w~RO zqHltsi6s30csi6*Eq#6*k`K>;IKt#Nsg;ScQN*keAmZ7~4TpcxM}DT3IIXmL9|GZ1 z8*kljto;$`53jcLx(}id2M!f2Qg=RQq}T0>-+&tk>N(gr)>6eqCiJSd9iF zFg(LQzOTl(yJ`ud$<3fsBnb9XGd)p9^Zs&6pJT6dzb4JjG$5n?_c&C)c!YbF?$C?h z%{lj&F#^nTHLDaHF6Xr0MQ(mee@V5KPes^hp(Pp=0REw&0!GtKGP~ zi4lBdudo^9ei*5Hl>8k3e6HO}(a0X|W`akBfS6*Vg6G=|-1dBsB_ZW_{6V}oEwb8% zD;z(ViUtV@b&~~i-IWDb>35(oep#{1Yfrci%vmIQ!pQN}Rjf{rEQ%%Sx-|3Q%Pdb) zoK0K+d<`Z+#HiA<5(C95=BLvVCA5~ODzEq>vNPDE4=OEmJylXO;UV~RX3oeyvL|?8 zY2#+6{zXuK%SNcwtqNuG$*5wvXr4FSnt85=$Mu>D zSq|@{3cxSjsxE&JZlU+GnxL(emw;!Fx~9VgbQ8{5Bb~1CzrLqU$TV$B{ii<`|EE87 z)f1!=@;hq!vS3Z7EO+i*H&SVc~JI%j`2$*+9! z*~|=|qr4B}@t^gFh-6oNkO#4EficTrS=7YiX9Yj@LSN-d?!y~eYJ4~(Wdk|wTjRPP ztaTKrORKt4+6|t_V9q%+d`duEhJ(=vKc0A+yEj7FHt5Lo$NCn1|F+`2T~j;0M3y1^ zXi3j7IG)T;;?W*K_iIh|ko3+GwV2Gk$0ez%v+NONpj-4g=vh#>eH*;x_T9Mvxb|rNjc)(rdZqbzw zF)5T)divjn*rx!6$qGNjHe*X{Ll-*A3%9e=C|z?VdWwYyhp@|x-N6iflb)AYNaVJl z8vDO3W*e*>D>@Jq*@tmx1&MjlG+7q2!khbTOqpYQUDWPx0fJ~)7PXgOek*f_3cDlt z)#j6L`?YxV}v>M8iCXcDFKA7~z3h|k?l7~{1Q=Qp{d_R6aoM?_z zIQjOBX7gpS3XH$XcZWzPbWJc-w}z4;uHcUWRl5I$l=x26_&Fkr7R2ngFzNLkrvT9m zt`Uh0u;$*f=bm@E-~8XTH};-+s|}Zn)r$!}q$i(@dG{dbd;`4mf|J*y56Oon|LHu^ zIdtA}$-tp6`K(y9zGbw}zSV5*^z@iRd1yaAG0$nd2MccA@MrtoBHn?++I%Js za*R*qJ^xhK0;8@7`~P4!?H19?ew+Oy^D{J$_xpwA}Ag+5*P;5G06us1-WnRUXnNkNCtg z4EC3)yM`8G1VjuVsxF_g7BfGkUx+@~@m)U=hB_=HwcldpDlQHl-Sh@T*F~j{N&VlB zkbggfc1@mTx#nqAnT+T>I!#rKoi~R|%J0Rll-TvwWqME36143i40`>k)brwO7W|s9 zzeg0g-Olt|Ss>8%O&{3EKI67Wt9&Mh*A^W0gF)Rcjlq4I{a=;7)WP}E^zzc<<=XWhJWNM%>9n(I9mA8$N1Kja8O{;g z@*0&OS3zgQfS6Jy&NTk391e)z!UNCCQ};~x#>DVbF0>H(X6+e-_;&HOJf2-g9^+t3 zokCxG$*pkx#;t>EYDanAiZuvD%8#E?=SWjXRjZ^T+d!Fz(k5l0Xks!2fVQ5e#nMJW zsx-e>jMCFtwZtZYrM*W;{Yw^d607=3lVr1(u00GxTkt1V`SQ1?&3Dv53V9SEpcS_b zfV99x79$ucA!d7C<;NBf^3iOuuJ71T22yd*phUe&Ne)Zale$sw}_2S8UAkyb?7^QolSjq{&@nRRG=@#h@UBhT)|-)K~JbzF+>%` zBAZD8`%Rgqz&M{D-3OFj`lnl=T})<%M|bqWy4M&5A7g^02Cz!*P~c!Thtp;&!xLlE!$xQ2- zM%GNO(hhL1aA?0}#q z4`kM-M*QdL4>@;_oS6b`+?9^M9>`327VpsUV!4Tui~f6mBnd`oC3D7#Q>=mRLW@

#F>F;S(SueKsJ956{Ty$z+T>qmR!p}$A+eB1ZyeaRe_K2@R5~_vRs!93;AU>m zYB$}Ut_6LQzxyCNU1lLS0519}wJd&pcqEK`?li2mROYN95$^{weS{!KdL~d4cL#pU z;92tOR=BBC*c|oxaL2=*()ycv_4CK`i3`DMYtRtUJI8H1{2ALVgTOF{Uf%}z&SwSUehLQDI?*s3*S$jiXO ztSGc#up?z?<1wq*&LNQjDEDU-*oj3k>I|j^z?u97Niz%_Z)Ew_nSY_4p1*}59G48@ zgM_3M?W>CljO1{WdK^vB(#en$*c7&_6~kH3yt^t|y8>Y6fzk@#b1T*vPVlC@^7&XL z6pE!KY@?&>`SUlN8kAT22TT8TnYb1*PTz$_R9$5;Sl0%nE6!0|I9>X}=bkbgM| zNQpD9^$*fa>1QR-499LLYSIOfZSsXl+j#)xl?aKqPBqqgmV0*BUbc{19QCmA`|w&H z3ZC8$r^u1hSYkng-KF&DAkD@tH@=Q*^=N?`$Z^|G*ig*Pt&pLE2HHq4IfB*LTGyO1 z^znvw^KW=;TuBH1EBfRC^_Sdqe>yd2j4^TbJig<72jr;+CYrxa(ECog)x7WvTCe`$ zcU#V?3x=r5Qc2^vCW+?X5vksIBzfri2(2Xg#5F%BInHWMcS$l=hSIM~6RI*9NJrz9 zTTa2917JL6$=(k{c=&EZE2oLN$AfgSGd}Nd?ZeUXqy4t{z2x#AZua?}XFchXf;9c- z$J~#r@wxAOHjSs=AGene+2|0p?t67XNu-xD!&W=&x9$b6P6TXb8sR29X-$_H(E4pb z)CT9!;7aMrCtAa&ZlBSRkF9?XPROW0$#EFGQk-tgWkpHp!>Gk*?6v929jta)S>u_r z{e|9uqWRvVFzTy~H98K&YLnX#YLBBThhIJ8=u0LSa~--wLwA3ojdl*Ye@)=qOmhcV zL|8`kn+9Fs8R1Y^iDjiilu4av;d^cB7SNGG%^x@oMPdJZKsPuHiunjA5U>_36?yU8 zG~Lf|YJHqB_-SGGT^ngHad*m8z4;-`1#Ta8Z6m??lL#8KNR$bN;aLqc(FK{w^JRQY)jS;lI(ANuJ6wI{0?%SXSO$Y z?ox7gR?5?2W=;%l-v!@87HxzU9iB(dP10Us4jpHKogQy>?BjfQ-WwY3QJ+sSPEUO| z`sgkO?#S?h?&v9#wi5@J2kgx^8SR(G&*_|B#wBYb9T$EF<;X-maS7Bc4rOW-C+)#G zYae?0ILvf9!FNmyInS6#%VusDI{Yzo=?{eFtWNV_HRE2Xh(^XHuixQcb_F+7yDM*+%=k!CRXPt(2%0X&8HMm$J`mC;3~xzBE|&3eX)2EOM!R_J7Qiyovq& z^WF8BgxHptaWf^ky~XI>M7R4!i9-VNvs*C5%0UMpqL-rsDgw)Lh6cO0@8Q6;_k(1L z;DVzfbYx%jbHTE45X_Oe@QlxH5w-@_qDvC^;JrexuXWf`@>d*Ot%W!}FHQ2+UJu%M zRPRNrn%-=61mT`#e0^DS#y;(DpCSz47|?Pah3kYYxmNl)3VF%d8}7 zJgoTrNFAqTVqz7c%yd-qa@K_aPLJn(PSn`~+Qr@$5O*b>?QRA&;pi7N&TcK5dCFEe z+|D_y2z4;47q74?Lzu=3Lb$6oW`?*)*Tx|2bZM1}Ftgc3QwDQTpVrAASdQZ*9nw;dudKhtLN*Zhx@jaT55J zstu38OjFaDmZR^3z6d<)x!^sYJQB$UDXA=5^#%~QEG<4y3d~tOUoZ2`b7Y88|I2Xu z;Jx*7;UF$(^gGD@X0TI^J5>7^1P61$pVX7WwAB>6el&dNH$6gk@bQ3i01?R(r&26u zcD2vsbXtKwGb%NxtTVtGqdNo-m>Lm#&<+lz4EDIoOey}prRR8Qq^*(Pp4|SCD{@04L*_ zh{kK{M@;k2(_V+)>k7y_522SvA1`>j#XgySeC7tA4PTy`^*64V^%p0i^lKFXr{#Cq zuE)pmQ^El+WPvDji!-sQH67Zdc1_Qrm{itx4ex{c*Hq_A;?(9JQ`MoFeQ7Wk{j)Ig zhi$?5sO_yvs~-@(bk(LMusjzTl5}E3J{N9E{in+gc3@Yv<)pS!8VaC8Jk$^ ze8>`bi&>gHAPRQq{?w6NL8hxB&Ia|EIV~-%N2s!^a!Hw4{+(5n^(f78=}br^I!xm- z$M(LY1mwkSFdRheg%=E$CH_vYr5$B0@*%T|M;n01V}li+W()br=wS^>2~7qmh|bnE z?=FH)^)rrT#>qQORWvc5Pi62z%HmW;m5z467$%EXHqU2>A9o>L^qIG=%?zU5XOE0( z4{PrJ;19*0cPZn*;!evPM+)wmoONv-%X_xj2%2fhiYrSz_OS1Syey@h4dvdjp~Uy! z^fmdS-r>huZF-F9Rz#(urbo+nrRcrV)~n94*#m!WrraAN>SWQCx`C=PsH!^#P9rv0 z{H%lyTio^=-*z&W2^t?&vyW}4vG>v*uD@u&u1=bIqgv!>Gb>N&%xXjUM>v%WQY~+` zf5&1^DoJ6p8)i|ug!Jpc*7x2XwaS{Hv$a|IhH0Uw9y#a{_$pL@(Aty`C547<3Ag`@ z@35j3J7k!IjMbC@iaKao4G}lEO6G_!-UOL1)Wpq$Nkv;H6cPWZ>hb@d1@MWQx749W z4OWX6BTvejZ)ESdT5-zsd}D~tEtX+Sa2zq zR2H=cYZ?GaNXt0XK;-tF=PI?cluf6ZMZWIB5em=wee`^__s)m^w-+PWe3)#j_i^jv z<-q$gRc!g!q0ZFQ{hB9IG4)Ko~wa$1>0kGPrv zXiIc5S>`+$X%iR(sy*iRy`BnX{%pDY)gvj;Q#Uluk`o1})Vqi3ez~4%eNH=E#<8AO zQx|-2nf!9%q|6bBQJG2|NK@jBz~Y~@(;yymQD8J>{?>W3`LrTvw}pSG-xEgsA~1vz z0L<`k^9`YQXv=Dh6RLTGG-!8+JoNi`&3wtbbhJfch14)1ThG{vZa<<%1)roTy$^zv z0}|aw62Z^rh~;;u&(V$fSDN{C`=7GLzYLfEti7%boC#il+iTUv|4N0g!@S$?O?J_r zzIqI5uZT`o?9Q=AFVj=^ue{XWHNp&3?TZfmNImUhj)+3m8}S=AP;k06mB8eoeVLG| z$@((Bj{3eqVq?>JM$|3B;!aW^QFO=uh;sUh21+(=3x&8*LC$BbQoJ@%uRPoKhnzh4 z`>tFyzwJBkJd!T5?#kJ6$kk`Y^uOay_!|-alMSdv+h!u*~Ql zVUgpPmS-9=!uK5iFM)!mh=A4;ji%(G4Y9Kazourp7BbrG@#kZ`wa0iWNL?Z(d-%sI zac?03!jpK%4DZkKqTUtii=DV;IyTNjEBZa01}EwQZ}RJ~ck831yPXz>=CS<;E2%&##h)r(|}gM~Du=6_l>)2t&oOkBf6=F$~=; z%G=6M6JjAI?cY{+epI{sw5F+R3~n(1^?^IZF>alp`#{K|1( zON;nD9LDKJFjIc=`k2674L496eYW#WVVwAh@-wCLF?x}L_R_0cjc~*JhTF;fVEily z@$73^0JYZLM=Ky0v(lCl%92v2X+Pr3MkkqB*9Rq@QU=tBDKrx=EFwaKLcs`&lKTyc z!I2yu-@nZDHNQJeDE#%Wx&fLeQdQ)3?2%{j}=Dv-k3uf2!pI>*B}{ zk+UE9=J0X7Pi!%jow7aKfNZhv*X)>{6#Q!(rpGvgV5Le6;%Q-Ecgz<2r>BEIZxK^(&~EkuK$A~oeMfph_oLwdkEU-33?*Ee zjcwbuZQFKEZ0p3fZQHhO+fGhwColKj|1D-Wi&^yaS6y9S6_5AH*pH*OPyBze)O8*Q_?d8UT*M{Q_|N~N)D2K?7J{M|nPTmDFZ7IPwmIJsqP?(LemZwUVT z*{qJnS_R>Fq3^`S_u{5IF1JCu#Od%T#=@xG>8ZXqH^2UNZ0(9=^7U1xZ-CwBN$!yP z^W%6uN$v^k&pv>iy*Cj;6yBS#-iMLhe)Aqx1=sMouwB)=2>&CR&p-Yzz*=T78lZkE z`kOcWXAIic)?LOxi#EG2Vla$@bK$Kv_T%f9FF<_m)`#`zNqKWHaxZ=Lo&AS*>B}&d zJ&re<0oP(0&J8(QuY77n!A_``4>&I6pwgcRdHf%)p7Ttfz}k*CK|KCOQA-rXHAB}o zDKyg!lu=)JHT?YC+>=M$+`Nyj+S5IDy~!iyTth2Xv)O*L+o{qThR?N|dv$#8sOZ?9 z)LGp(d5;}x-{j(#-oQ~dFdX-dRmaB(-lE)Y;(}44DKoNTrRy=2qEcwrIySpiD{XzDg zd)2eucifOG>h?QP`qL6@GaI~c7=&>PwN~O9-}gukrcZ*{7|&k~7f=iicNBk1%*mAN4*KhhK9N6!1==cC)N9qr9G`{(7ywLx{ASOJ@WSKMjOo_0GQ z*C0NwZ&I|f?|8PE?ICuJhUryx@AznIcfr=5n`L@~-4$J)o_7kjtq+QyqxROjtJU3^ z*DjND&9{qAyyHwgd+c3@OWn^^`P^ZHxI0vypOsB_(?Sa=gD$sX8A>IlM3AU5D1!d#ublZrkkkHZW!|L)}*G z4eUqEH@>vBy$^_1Dsz9{LbTH(4UJ*6meIN#l8X0u-hLx!17CQ59RvTlJxj(e7V0+1bi9OltFQ2D%_DVrJ~jU5S-$c3S_163 z>Equs0k<jhSE9jDq+LIqI#N%WZ}z*#5?T1 zh6U}+Z&U5sJI%EygUO5_gk)&qw11d%H#~LvocQ1$ZrRB1xM>r^4KA0Vefd1qt<&_V zxVv0vXP~`^w;4sVYuq_m@S6`<-(mSERp;RG4f9rJ=D9zuJ+&d%pK8o;MHY`~SFe$x zZ0+q^8QmRS7mszK(?s6RGM2>&t)cV8q!tWL1S~{Gw z5B@e}$2)dw)stDe^*N}s4E6|i%J&Y&_n8CFNC%BJ;ybASd5>-GebegnDB9{E485@Y z(SGyt4T}F+DNp=Ynnvy^EU1WABX5^mdMn+;@cr+^E5TyCK++0|RL?E{8$Lhd(S_|t z@7u|$H+VL{()*~#(U-5tZ?JGbLCpCD{q4M47wA`jw);E(8=@_opbcMN>Gi8LTJA?| znsUH0ktuvY%=v>mqo{Vuqp)yqb=o<|(LKl8%3_{N0P`m0!?r~UcOwlvoa58|qPy4C zL)L~*So57^%da|ToCde-@ge^k@;F9I$)%pQHZ;fQXu9hqUfW}sy(jtSt&02gs4%u( z%@~7odS{USsPaYD>E8_ge(a5YuyZ7P?*qKYHT~CoLuX(qIANrj!arM&n=k?tgY1_5{ryFnR!f}gh_mA1% zmwe(=zdu?Ve{}5*j7qg}JVsvbarIq5;d_6IyUueO_w8(e*&M<$ne7l}Dz07$}Hmvk# zT6wP4AN}IlRQ-7v(0*=s-^GX?<3g`J*x`9UlDF!bCU!rcJ~*>CjJh#xD&CB6AQg;y z`_*|Xeeksrs+sx$tsufixGj8mNHnk+a0IyUmCm@x_pYxFKRZ2lhI~EGe%JQ>+OIvp zKYrAnlRWc|7YDG*&-%67FG2dg>aNF=$^ZH9=qkP5^Q$ATeZSQKz8^MbzYuGCerT6Z z3%hwg529=LtWtaaP1@l(0d`RKKz%x!X~&Bv(XQ{zLD48ln8|7;z8Ivn?%m%Nz-@ z@LG+s#SnP1JIL&PMr*s_zc=%#!c?|Eb`d=xLn>nfqBAXE8UFZ<&6YN^w=lHO=PhYp z3OVn`2}Or1DkXnNRtqtQFcF@<*0wQ9dVE>lD=PHV8j(Gkw(&))S$R0F=N7G z=6u7$>-}&Inq%`|M|k{ebHc^gxF2NPH9k^4`*8j9jQ-ib!p5BK7byJzV~Qr>B7uT& z0>&74&+*dp_0mR->F_>VN_p!q5{#03-hOUO;OpL}EbrQZSw*Qew{6)@*j=#Tj_vzwO zHl+|}+7baoB)2oMZJEfn_3bPdSKJ`-uvyFI?*syR#yQ4&Am5^{X#F=uq?2wKOJ-sK z3v$yCN?>s&N0&XU)i_nG9q-Wi^lT$1r=SIsh=8g#uqzgT(B7-XKW|fKa=UMQ{lV_p zH^rV0(A_EMoWq8iNLsnPKfBKo^jn)@ zO}>{m_}dnCFJ8OPTU{8|w8P%<*xnNs^4=R&ud7Jk1oRd_myp=*tB<$yT~BIqCx7?L z=+8CztbK63Z>^s5mDT$JHW+pO$t$~eFrWQyUz-a67O_GGHOkcmA)AbdzdoO>?pL+8 zj+^X1;Cc?5ZuhmMM^>#5+`jM1I&TTNds;?woA`UJKd+uaSvS+&|U0(AVYmV4;J;{3ccx8Z#k-zf(1f>-8o}>d0bEhNf~+8rLZxR{J35G z!mQcwgcU!HZD4Aap|?an3(&Jp!wtI3wq-^}hp3iR9cl|(r}{(YOcADFBFVNvCL4kx z8Zi%5h^l2GqS!ZJoqH@OqEDX1u^x3mjfKbq666HK|*91X{r zDw+(GdF;Mn>BE6z6ah@d=tVeL(Hu=?@%EPKP93A;@qe7G0_W|Ki&^}Wf)quzY!@xv zAO-;lZ4h}0fe#ppkb|di+LKFlw@n{*UgG7T1{ewmOkFhU+OwInP>zZL5EHP6)$04t z_Xl}8T;WSw`D2NU{snp0M%BD3u=2qc3>zw_^}RY&Gz(I(v%$LRVK)XQ ztjw6~w>T{OT(#8<&*FR14@?unh6xbs*aF*TL7sCw0-q=3>c#{b*y|D+7= zq}+vf33v+reuqLjLQOq+fdw8u0boI{DJRfG-?4Ix zqU=wSf!D&>Vjgtl7a^t8=U_d0FoOx#Be}+O?hwn3N>3?41~WjB%m50ItCX!=CCp8N z3DuTah*G4aWcJTODRP`zVJKYH6$?w4Mvh%n!cL>v-+DhhI!==#Fc&9Of)Fbap%5&G zC4(?``@mQ%xHS=;>MVe2n0{*cAx7E>Lqns67!BVV0g%IbiFERIO# zC*-#f5CsZ%xf#3jiUFU6g$$B#UXzDiR5jJ2nVxIr!fa&YG{m7y5?n-zu4zth@BFLl zCns-vITBxY?g0yLQs^Xm>BTP{p*$F&x*j;rQE6!)M);$c3p7Iizt z-W*S;b1h}!$TnKYp24X44H1LVM?QyThO-v|0mfIf-~FWI*ANdFs5%0Rbe#Ct``Fm< z(AVb^YBi*_?u%wKoNlM6!@l=ipX$Qu_;Q;`d!;FHvDehPs5ge?S;HBqR)B6Dr z@(id$yPH}5sQE0jtYxq$vmgsGprBj7@`v|%O7Zl1uoY#sn&WkKzQnJ^$tGioJn52+ zkYT~ltme7l#E7F2~ z8jl1=SEH%dN38B;+P~d=nu>L1H+-h=jYX0(VjWU;b4Du0C>|4^GMPTqrrufhf2oP% z2tP`}E;V%oKxu(Mim516#!WTtSI-0LwT}NCCtR4KX=G^azdqwsR+?ef)W(}ZdSv`b z5(9{jgUA$c7zV^nH$)hesm;T!YBXz^z5m3Uv6k1^oWO{YYQPyV z=v%sk#mVXp+3mfMztVWQ6p#(x^vur(k;;hxCo3NsDQv#8|=t{b%$tqf0Pn9;nh*ms@^MoB;+Sl-IF(A5h8*9`j?y=jE8G&W3*g z%>L6WlA2C?wo=RmzgIi6?W9@TOx@{NZt`EEi3~mmD-r!Y;A^#thY_p~JJvTY_iJFY za&~;RJKPmPcfkt72tmmRS+H0;%jD|LEyA=~+7ta}nCJK2qmwXU?a~f(J@2W_vZa;s z`brwr=S}zbj-gV z6OYV*r_z;2!(Y0o8QT}IO*qlHR&oK4wvbNun4_^A;jO=iv^ZJ%gmYMgEMIGNrMreE zh8f*Xz|J}Lf4s+1(oKql69(c=Ie+6CmCl$(iy%$7$Rx#3&eIww!Vc1SKb{>Q`-s3x zj3|`kY)g2$$S^DDw*7yz7>T4M#X(Kt3n3_+{n!9K^5dC^loOb(E=V$88r?_>a9!pU z@rTKX7)UJqm558;c@y^8zVfCG7y_|unAxy!AvYRCmmd z1Su$!rVACc2!SQjDI;{^PYAWs^LJy`=#bv4lZw;vA|If$HYGH5@f+K-6HGbD!YX%f zE^2-=1Kf!>tu*|wVpQ$VIRBSRk>#vBwgwisUmZSh@fuwH1s!wtb&ks^KD6TDDhj`FT=_t+2HcW?g@88vv!X^8k<{ba_wBzbdSYn2 zdm+?qw)hI2#r!b56WG63jk@apkzli0Z0w^}NpU^ocjR0kxmlwc=1XCh?Z`fN9}!dO z8z=Z8uJ7g?uJ-%`Z|~?$^>v%g1b7`A0fyOmQ`&jh`WbpS&AorIytyHstj3IiRckYI z4*(xEb9Zi-K;0gmbnX5<;H4@5+fCWp(_ZlR{(YtH0=R#ib9uLgCa^%8YAQ-Hwd~Y(>EC+6hsSIL^GhJ zAWg(6QL?;udHHeq_UR8E?snrIyi5vcy^9<2x=fsHmhYa2NHh(R2*O;0`Y&~rTV)M)oa%rT`d#uylOO!}|mO*R69 z1Sn@>YKw-3U&om;P&$2JTSl{Opy^H^%fxGl_Kd|VW}XN0UT!w_#TR3m3JsfQ*}J0H zJ4z=|oHYv-p_B>57iX-W(}}{P$vm+3jkr4@TX)Z- znT=PPi^u(AVWvds1i5*gfW3lO(3&rl=4jX4G{QaJO_B7{SBn* zqG!OgID*g~vU>)Y*Y+-$zJkKU+%)pC`Khn&cP@2rPHj$S#!dSJx(A6S=^`on?j4rT z_xsK9F3wj+ubbyjrQ^jy^cHi|T4SsYU)z7!#6&SySU=r%Ye&XUUkr$t>nq)r3!lBM zZm&b}AL*yJ=h|<^-)XLsX7%5Y4UB6%I~^@t9tD)jeglw2pF$V(g2nELAOr(c?d6D} z2;dNtSdg5>>IfB*ZS_hILM&huSsb9CLGqMRa#F?6-wT}qqMdyW@|nM`*rim!2?8Nw z1O$$C;8$v20#fQalEnTBU`b+|B60%fNC-((;+zwFMo}jE?P0=p;w*y#1SHjM$1nhv zH&vc$fdbTV)qV{sXeWV$5JHtP7_yotS)shQxJzBP9qWBGMc%9cBx$r)F&G%sdc@O*uL-<4PbE5eSlqlu4~N ziJ=P9lR}1-7ce}K*4jy6f+^=Ws7ACj+~as>>s3@ExacHzMZt>%2q1%k2$~@Kq}GdE zOFyAugrv+?0$2dW%vH)E0^9q{-`S&JAVtoeH;KKy!!y#S zX5c@xHU1eFO9v3_4Q$-`w*E%3VBz`9)894YzggJwe^>x~Uv1lo5P2NWr+PusesA9| zoeM8N^KOp5wRq3A)2yy1>$Wfbk5x~MJouq+eEC__j=gP=|CV}sQ@48u)a!CyJnqZ` z3=}e|I@NNI&2`PU?*zzGGb<;xWIkFTL@{O4YD5k z;`Pd#caUoe3qNW6|5|`~3=pXcEHWbkXKV7Eu=;qEXht-B#UxTKZPJOqaI(Y34T*Q7 z9Kh3_-@3b<#8SGISW*@n4pWzpK;kLzPTTobnpqjb)X@qVKDE;aGO5YKlwenAqWPTl z@eEWjhfN|DW70NOKmbe#dD2mIl#P(*#u6Da6vai%78vIhw~khZokUh=OGj_W^RF1W`f}2?)a~(#Vqu<0Qn{ zFy}3#WVnbaybJSWCMirf=+-saq>?BOI85fyC#4%rMTFy^h6Io%eWsS(4_|UJh9u-I zN??tYlgy1{u93=>Rw#)>9?3SSM^}ns<>E!8QBs3S^k(|4((KocWKkM+tr)T5Y)A>I z&INI<1oJ|1&9=3Lz0X$;P50Y7`-fjE#%RG_$KmK!JjhcO)h(c!(f? zp{2D(Cht^uI~}2+?0kdgcY{gB$xJoP!jq8zRE6sb|B&`iNSDOiSUW^`Yk~nNqov_* zRek#N7-tNYxkfX0ffS=Hbc!Z8-c_n;lk1*mfELTTsI4=FR^o#*jQeJcapy`FrJ{=-Jl|14bqzQ%X@h8C}&>^3`|ub;-i!l`V& zz{!8oieLY(ac}-N46?P~)bE3S(2;-ZV-Hf_yyN0YssX;%SN4YE^Eh9abm9pl$kWWM zhyw7GtWgY$dc5CFv}?cOJgZ4`z7iAAJDsk%NxH_6NN^mBaHAz;Hv@~H{(0GHo*=NN zZWN|gpgho%w0A3O5<6{CE4!OB2P{Tvxvx-0fSRuov#z~D_w^M-~q)X;{D7e81ZTObjBarVQz-#T!G1 zf3UW1gtO%orxB8-vl2ME>JS8XZU|``t_`v*VG(N&{tV5JmHuoGzRmEfhBV;w8Hgq79$s354Imj5B ztw~OwznN~zBLf)`6r4^OM2P{r5p&IHF&er*+>;25b?eHFvb zhB(RbL6AXG`LU%40Z`IVV+{J_9rrJ^cgbJIQgPgt)=}d_!te=3v3V#`8%jzLl#LiS zo2cPPYQdQNrHC#SnR`E1l(-8*2L*1N7@RD#Uy5U7CCE4-p7htu;G`qHw4v5BjNaNO zV7Asbr1>#QHK^HP9xOAjCL7TYtjRIimmX>2-T+lG)@I+phmCXlZ>y~4T0OOw4HSE> z7f`*YdKhk^c$=}8TMWv|B0cVJzGOtJJXgz&0AcsEfda<;LT_XixPD+kS<)Wqv@d4O)~0mEpYePO3GBm%T-BL7KmECh8gUD0)kqpV}- za&2YV>52udiEg_-rlk0d=Q?1zsQ;g$=#}o)9XCtP`nNuT@idC##iH$gL^1076(1W} zAtuZQ%`EI%Z<_#)6q)4sI|C^ttO@1#LskP#_2`nIu$G|#>Z`F(JPC<~kQUl+YkOPA zguBu-FfsLGi)btim?rw8VM%s~=)u;HG_BDlxfQX_%x+*}D3F1krG?FiXVO#%Kn$D^ zZk&};Webz8EWkh*L4cCsQ*<^O0!i4-Ay6zllf3}~MMOBZh*)?R=W3TD$S#6z#KtB~ zCMlJHdOaG~#BF1YLKx_$Mot6+vU!-5s0|r9;P({>C|DP&Y&c}^l-)qH{i;fm$Ot98 zaS>mhCKH`@W0BGc%yq?AdKfnCn(5pot7mK=MPvk#?O#z`q#(-L)D+2gtfh=XYGLYx z88C7LEi&>wOb5;UtLlo<wHsHo2DLEixK`NK*DyCexThvAWfj2{&^8UC+&&j=W-bPAiH;VvPbK&PM<5scQ` zSl+0}gs`C;c0jaU#>Gmt*a5cKg5i~ejSOG)v7{jwg_ZWN;(SFwxg)&wQGSm0KyD;^ zi2ax0uFS|3*d@GK1^FwyXP%5>4@29iRL-|kE&Ce1x!0U7D50IV5Nvw_%aUSxJ zs$iXG$SA#LXJ-R-s`h`8GR-ei=I>+upqGdBbIbjL;eYGH2evQk9J{FbnwfOWei){W zjA4UkKzlEAbMFx?u3|&y@U*?+YMdw&;Lre4xwwYoZMpBbvN!p#>q4)$?UkFc!LzLh z6BrIIkX3btu!DGg&UiVSMRu{8_PuOTH_KWX2p046=F|SP3eCDHv2zZh)iNdq(Yt%8 z%YFBP2VS`D^4Z31kCPEjM-lNdt~vqJS}DE5EiT6}KQ}($JNMDt(X_T%5NA!IG(sTtJbxYum^J zTPZBti%lphsaYa2@Tayj-n0Xqi0G_^1UVr@OhA}hA`*~XF$pP!KTF75Cc6$6{mIsBrhnhL4x0>Y2Af%>VphdLko#q2|H z^_{ci0LO*_{cSaMBoy6>YGLHzJqzRqdO7Du?B>mFNA%-GI#nI#Gc-%K^)>dT8?%i^ ztgpTtn1_WES_5OwCAzGy=5pev=Kp#jJsx1&BV=DWo%{5cuZFkJH0$m}K6zMp{<%N8 zm}YS4{omD5578~Up1+}{H|T49`%A%``W7akru9ZYG0P2lg4E>1Pk*|YrRE-+(lZ8o zA*qpaHoF{x#Z>Y(6#H$1_^apXPYr>w7F517V-@)=AKtRnS8kfu6I}3FP$`uc6QJhL zI21p$g5#PF+0-vP6Hax0aPVGVjR2B7B&j3P&s{Y1(oBCAi1K09a*nL6vLa z5E^-w3swhCY|DV^!pluG5hUCG)C`i$GHMEC6gz7HcDsh5Fi5ck`s7l>;pe*>CoASN zET{*r7@r4ClaPdwOgfHzf3x_f2|^FrI|cGMOz}wNCkCl#nJeIll5iPmn4^J*BnzhM z@eH4H7(1cFlRzdCmC8y+jhHG4*F;b;{qfbmC|-eTs(P?yYbA?HNRqRPT=xkr|MnB6 zcB--&%F^EaW92EKNpV1Nv~iAYzIdX1$~R=`y0X9Ga9Ct$&uz1j*@TX}h`w1v1m+ug zuOEHERd8~e3@=4cZYa52*OFLWz-|+S6!kHn{#lLlGBOS9)`QzWz?k`-8WpScYI#({ ze;HZhLl2=4^Jf_gETHd{QDr{vy`Ab=rAx7{QQev!JIMU`D3zZ7?-T#NO3S#f?-{+H zv>gZzcGYdnVlKd5&VPkQB>z`%k^4WjTdR#re^WK|ym#?$*|BrMX|5kk8O1iE*x1Yf3Agx3GIv*rNk+D?ExrBS%=TT)WfQQdQ4U z%=U=^N)Ax^tx(x2^Bqzahx0INUcBDFvFP$=DLGh|&9?FD79VbI-n;@!R^n-X+?oI0 zw}#terhRKREeg7c6ic%bE<^&lj%%2gJ%8;Km7$WSgwTrjzs}5)=Vb(tVEXcHmzX+km*zwRICxe;CT!Ra!LdPt^gUz z1|+ELx;fhPbJz1JHx6X!6){BZ!ypoAfz%;?LN>G*Wr{$h9)#3oD$qPtUMeZo1bLW5 zk@{xVqSbYS*-MnhK+cXkoKhi<)*i7Gk|4t=)a^os!ZxQXxRnUjBzr`%n|`;57W@X* z$mm$>Y<$35ZT(Mg^=Z>uN$5r+xhsZWmks>TPUI4cw#}Pn#$>l`>g$2AiPu#z76aaA z-+&QjHFk1y7HQSJI)@O4aY?oM)*DEFS|1He8Pz1XRAq%o_L>aHH<#{U>0Y_dR&2eI zJL716&L>6y+m9t|jwRirbY}71%a+XWzD^l|&U@qd|0-|VQHuBbl@Fnx_2E8$xM#f* ze(r7B0TFa?4_A3+m3UaBWV37A|+-*}>yE+6RF>-X*mekOLly zWJBkXb15ykbL&Z?>e|2l_u0~YK)?f9;YuStG7lqlQgYJvHj>%?J;z9d85eD3^fa~u z`bqp{islN>NPhOoF%&X9n3JL77ZMDNWXQIR&GBm3}(s zm8+DTB?Z*tD49X+SgqJ00LxC%!04fvm-H)gN!Lz0y}ifDMp$7Uc7;paN6^)p`6}Bi zv?4LYs9!*@^9~r5%Q59%rIEo5v51+E;F)F6LIy?jh;OLxjz)<~wUM*2Zmj1ttyukI z(j!kEXKtdAOJYreX;GtzfBZNBcTpHsinA`gffpBw*sd_f1YA5mN?9m3+Q1l(2*oj% zE1C%?mI}joWbrRaJz8$`XaQjew`p8)LxF0LV^ZUvTic%wdHM(rQlJ&Ys793F0#q!Z z!+Tbh6OQ}r7_XdxvglwlOcqXsD3n4Hqd7e@55st1&y%xeBDri%SuV-n6xD@psA5OH z79Vi!;})X}eqZMmvFA6VmjkhLbVi_{Sb*31^Ic?D8R*mJmr?UYg}LBd$mtfVF+JoK zlBi(GWn^3Nusp;tYcD$hb>hMdyBWW-Xi%zAzxcIx@{wgcds}bmL`&ePn7=c% zA`w`b#g9cR(Vn2^F0VJ9b!v;$#nU1w@V}X^G33dJiUSc|KUi0sY!N_gOI@KGSybGv zDMg#h`8b~wp;d|Oa4zQ#x4+n*;wobMu+;P@0lnk^uem>F-|(arVnS4iAmSh}>)d?! z>Ag1ik1CR>6+Oh_Wx}x63qzl;2x(c!rMM zPALmAQNaiU3&VILYH1pHtthAIbQ0qv?G-|4LoK0(Xey=q0)knm0g94Ue0u|n7(wha^!uC%C{(2R|39pe;c6f=>96d^&6`;TjdeCu`r zF1QGwwXM9y?#998NE`#gW#-L7G;l~_fHF4mikJ~hNS6XgwS_4c^KaG>9Ox(<%|oA> zTu$_SfdCYP$Ba8m07G9IL@`nf2qHK*FT-NiQie^pT>R;>o#g^bpvW+7f=XU<-W*`N zltu=W#=qw90Xila&0RQ*SaJ$L2LMBB?`f{wHX#qWeQU7}6~N>>a4icc*bC9|lQRyd z?na!oR-sOBP;z;`nUi*xrW|_;t})XOt!pfwknkA=j3mE^MP&|pPgZoVpc!U6)&i}W zMqTWGB^&zqhilF_Wji}H*-l7VqdSXE9c);2EfLF;`r>PBHf$Z+7N4H|uj`8p&$5R( z*wHF);II{YSZpfzw#3{my8N}#xhVs?6%MX3r5{y=z*;QtgWX|K{lqo{(CZ$rhdfoGrs=h{tR%xEv*pu zsRR5fDuCRhEqrdVn|g`l!dL9M zSR$WzE!}GR$%v!{B=EZtB#atV%tfe!+}Jm~peTWg5QY?|;*STr_DV7}HP^%$H-yd;)G!(tbg@gYH<9J4;V6^p zr}*46l(cgR?7uJp{2>IaBAf&0oTQ4^WR#r|8hsu7ji?`J9)(trrq@{v5-2md^O}z@ za$zVRAU)C*Q%IR$&g5S>ns{b~YKL9b>QX4gB;|U#!^c207Iqh9%Ceukyv9%pVF5Z+J8^Jxsn_YO;bCsq0ZkeQ_G1_e_ zv+TR^!;NBfgvCIRj)}n1)<^N`Im7eHysnng?lzEJzhW$axi6>^u|VXBqeY*@MP%Wo zw{7+yVO)JyZ+aH@1Mhp?%m>$RmG_pM$Mc!0$LH-_-!U^DqV0E!3NBXan(p^2Ga>%( zV$`wy<~8`$x2*}$k3LHNVG_O@+AsNe3mNXqVq%zQ+oxAwgSXZDxH$AL<8bYIfuL)+ zHqTXVXuaRd%X(vxgA~W5Oiyur99A#d>PrBJzJDEb8`{dRRRD;Mrp70ukTN+G7aF45 zF)p6(4^Iw#my!tGitLWWdVbaA){Y@{`g=w4OYRAvUt9|YVt@e1;{lrb75~6PEN>+5 zqSH~KY!Sob2JJH)ouh#T<|_gKxtv|%2`7ds z@kz+RMXBbn2noo-Qc}nA)|2G;PNJ=SGt572rx{muroQ7!3}sZHM@}GDya-%&{ra!8 zcN;<-<9en(T;p+ZVoTtHeES*W(|1kE5yJ*PlRX+>QBSY}?-Z z+fGe->!ST+@t-?n_^&(1Zy~#ki*DUF%bu?d?w&zSbNhX7s$s8F-vzo2RG>a`xD_b3 zMl;@2UvCiDHNWzN8!9>6QK#z%be@z}kR-5TS{VsU3WxBx4V6{KXFyk;Svd24kCzo5 z+f%nEUiLtY=7gi|P#1kIH6;DueoJn!N`zpc1v@wQfB9DJZyBY`tN-F-S|Azz!%4fF z@PE8q64PGnOg5ktIyO=1B%53qsue%6jT%Z|fS9W)96@^IFiI)6JY>n$&MtqvIBxfd zcGMpo4cU_=M=b{MG`IhPvomX%_?WTCES_0Kt;H+n_0G1w`%6EWBQPSMWA-y+P%h78dhDS^VcK+EtGkRrmI3l}~h5WtiTCsd9oP-!ZN^C2H0 zSeIa_Bp&>$l|UT~1Hy!0UMLA2%oe}_LlKz}&LlGtAXt@lJpy6~;{c7^92O9lNAdd& zGL&MP{p}7j>ym;LEY!-3(v8ZGB_-k7Hhl_c!PEJajw12DoluF?BBzm6l9PGD<8mvG z1h;+*nv;Xyz`|0XbGd{i&Pvi$sL2|!wKS|yj+ad;Sc$Y)iK4hd2ceP#I%y%sQnj&} z_2_b4^}ay>d(2soKEt%wB@Hb;8)T=@mS(%;E^uiY@TzMUW52-s*|X8;T6wm2MBk*f zV+)_MxET0(q?cH(?8JuG|4#B#$GYe3v+y4%X~jb~p}{UqO??S)e{XLT04<^`)mnK8 z_VmR&u0r=FmDTu{hl!px=&o`CR&RAZD~q#tPtREAq0;26{*RKaW*eMeXXxnL-G|T5 zq-Cup!e!1jkDsmw(wHsC@8yB^tnCT{)~(f(|;UJt@blGbsGwJ`d7a{efQdqN7hW9CJ1T1S#Xo!h2{t})(|lOhh0%TK>s z?!@TH=%B#$QIMvCDVBag8Wu{O0EPfzV8F1bh=Rog(1UQiz^{o$^WU+ITSt(SE)a`Z)E}J` z63u>+Wf_-^$IWPnLYS)g6W&85wK?`e)RMT(| z*9Sv^oy~2Dy6TWN3yJ}sEH$X!(XUCV^p~F%1_J+QWO)DEQ}gugf4!LD|A!u7{)ZluyOykD zBA}md(k*lwtUm9BZ-`b~GLEQYdxi|Xdzlt=j-uW8mFcU*%)J$S z75byGq}{4zUO()PK-Z)_xP)Xut%Us4RJQ+g9mq!qmL;JzCZ>Z->eAVdFT5uG1HhE1 z*>oeF<@pOtix_W)`K1?I988*m_6z`cI%8AMi+6L&ruEs-62&GrpQuDsjB6yCqg)ms znZqpO7&T8bHDhn=k;BXEO(s>BZXQxjd#P$^Vg;PXNEJvVn#^fpf$1BRG&MbCZ{QH( znx`Qx#fF?_JRt^=z-SVmA6>u#hAASVDAT)GfIdJ`uk$|fH6w`N53`LB zB@W&HMH4^>H7QB}HBl*w#g|1z{~GMTw$;;7J8eZ<;-lI(&TIf~$O2-wKR8XyfcukA z-;Y$Pe~XI7UM87}z-A*Zv}{gs+e5XUo{B>?wcH?SQoiaDqPzS0vhHqkJAqrzb%R?% z`G8AR-2;}*l*>6>X;kR%?+Clhh&*L2e-yx7VdlOVl+8N*^x`xH zXZ_nIbIoS;hGiGkKf5p(lQzB*^KQFK+Eu^={ZRa)1t6-F5W=L!lZ6l*4r&0#632~a4i=PRm`^m9S9^;bMUhv3%Y zHo^b~K!v&}63#yDg!rpt^y1S}YSxqTL;QI%^+7^1op zQcM7;rbI0URg?5XjPJa0#?a6+ZQC>^TdXh(YgtAVh*+2;%L`zfeyNidQ&CPL1sPac z_QfBQp8O@WlAO>gz%0(-p{Kl0Vrsq=A_YSg`5kDkTrwc#Xt}Xiwvxi3K^TU5FKzj3giO>Yo}${2_?xfiYX=$RH+KeWY;c`;7!k*!9ffm zfEttHvX#7+}x0W1j=9$Lc`Nh7+P!grUJmp^MC=0%RN4iEOlfW5ZF_jn&;6L#nE>uH8$* z)&lWYb`Twy8Z%UNTRR%B8j;9vFb_m7!;rcEd|7>6=!bN}*|x=8Adi|T#|sf`_&K1? zxDB}mF0oRQ@q`bLD4SEUpA1w7LfUW~(EMFVMGtBzw%U~OpLf!@(<2CyKnCW+=s;L& z%CYif*5gQHsHC~c(L%d`oi-hBSbyxzcVfQmDsiIDm=371YEb)%TL*%!QM%n@XDK(F z*Ku6evER|NcYDH%UFmAv~9|C#vw zH#?|E2H1}kn&z;`Gc7bEBg$0JL`;nsp7AA>zM_s20qsYrl-Ye`O1KTtEhUc`$_PfC zf&i3U`QFZ1L&${bE-;myhRQRF;W$9@xJRHrcAuMHDA_w(*lsI3%s%;jsQ$z1^KftT z-O2vV2fr!({Zac#^Ro#5b&CI&_fQXjn=~)mn|loo;PO)H>ihfyz_0LKYDFK)*WZrz z$!s!YOsA)NUqM_Yifehr1WP`=N&NjpvBH`TL(*MR!|0CDR7?7X%1R`D4%naE$hae_ zu|l;_QC_er!X2$SnvXE9FqWzqVudSNK1%Q$pzsT5`V3rzv(pr%2)!6BED5e2jJTwf z)}Lzu6oj;Lel9MvlyhFfg2e#@U?C25jc;mGHb6u|tgdDNBNBD6D&t;U?*q_ws&<}@ z)`fL{quFX{5!37xokdqU4IF`Ze8b0uFfh5nZDs8n!-fqzC6g7slC-44{rsJ^=OXxY zEmMwjn?#PCRu=ob>n0oX>o9*Cp)+O1%{iYqVQq8sbotcI@geV|!N$Ewk|tB)l$g+6 zsFBFEnyczhoo#><>&Ifo;l^BbDh(T~&Fx?7Xu*G+%v^e1s)tp@Hrz4r$b_OgCh1G4 zl_N&V2kw0R+gwEn0?0fgS{Wk?>5!NIkEXYZs-t0=MuFh&?(XjHF2UX1fUPS}Beuf#xJa+FcRJPrYH zTD7~x*l~AayM3o#4KZm(Zzu(I}EgbhfO4ScV-<-Z>f-gt%^D*aV`&gXd zAiTZHy+2;}ryyR3Uit@*ud58Ef*weMa)RDEufgNzuT?sPK8L#CNWxnV@z`PfnBubQ z`xRr8T;dSWyxa~{O0Wj*Gr;c_yPf|o=?B_~LQ=@=IUR*VhZcekNeHn3F@hfx^u&T- z3}Ktjo2PiJ2N!#ql&nCFsPwmWs^|P7twemmSl;dlGjbWgKaDDNY*w!dJZUctS&8`+ zgGIYc3Zav)zm(KVye(!?Ccj-8@23wP-xf=0Sn%dk;^Ss!hS&9*>SEP>I=T{jC980t zbLiy`A`4!D;{D~4z@9xV+%bMptJdQQTsM;RyOzF5B-el*u=xd%T!Qmzl|K8<)NxkGorI#=l0F8qEm^||73!xO)kBRp;#oN zVi+yx!y7nm+u!zI0rYO-;#gD3CApoEi?GEapZ^ESWS0ca?#p2kQr| z9KP<799|!AWNB52QaKcg#}@#?XZZlaX7(mo|L#@(&5oMe9E;19d7_i*$?QA+#Z|rn zrcpmN96CtKl5Gb5ODo)+`&j>g7%+W16MLHfv_bVlbpdT4CA?n)g1sN=HvTW0zR`lX70SJve%EKEvU0zTJ^^JtF}vT!RnNscWDD=?_<&2QC)M1bqaJcjPEsPD80uNUvh_V2gv$`pzjP z{_!ujOZ1@cC^mk70q}jAMcC;j%d&dDziI{uU)Cm=p zodlEc%cuU>48{5Ram&33P#xK4q%=4-L1~Lf)QKaLBjgf`%2>>fhVPtqWsLZaOszKF z!kO|PB`kCv%%6BHd9Cj>cx(y634U;- zk;sMeL6?N#qMBqT@C%yZNTV$pL;$g?E;RHamlK&{#tM$BlO!c(JQ??6pph1_wci#H z`6cPwhr;_qzUfgV@J0K5dn@QS@W-R>)1&EgDVYNa(BlSCY@`w5W^}KY1mf=+m$MMW z&laY(7d1!-O0r(~r%ctrsKOuDs}SYyuf=bfqKnTBlNuHMcjDy0T}5bMh0#3!GaoD> z_OrN#3A2JWoXRZ~smH5|2E%M6Dz%Gdw?{>Rhgf2tGiXcBGdxgyZIujW%{+P(Eg&*H znX{2!h_neJX2GWe@KyHVML=XovNMB%p;GV=CoaoB`RjxQPXu|5$-_6ZdF?UYOK=1+JMvu3xZ04Tsu>+9&3E;kc%way zSXqC3cULvmPjpsJH8>~Osh1)k~@5!8LD&=D}$ z76J#zGD=xq=J5&YBU!N>e^{o`2@Soan!-WEe}PUV2MBBlz1sg0Efa?GNDyZOWjk8< zZh!DQ^7mC?t9%G|v{jh>S<{pCQdOItGw)DBOMybhL`bth^S5dp3eap>;GlP(kcqf3 zH2)Z(`(PG(+irxqS?zm36Xk~ZCDOeh*54w~x!82+WUKrC2Uw+ga0BJ@2iOPjY$^Q| zlllH6X9CnVxLCH26=Rool~veKk zMoyIYaX*aWO-}l#%8RTDYb8@+a%kClon2x+J&!-_pAWyiB)UeJ1Q3M_!;F<-|0@ie z;6Td}-OhA{M4SeXrh{hhm_;Jb-rw9GZr)lrNU*cF(2aFNlMx7?FUj4P&5r9V4BfBNFb8`~C z!B@C%Mw!=Iu%u$qhT58s3s=kQ>un^1PM4)P7{T-V{)bAuBd)X3zNIJ`VDg~15+#N{ zF}?l=wnKcF$o{QySQ9E;3@fZ^rlTO)XHd{bVyV z1;=(f#P*p;ZgoE}GH)%kTDbBuX%^C(xeSRf>VIe*4Mllskxi|MG;N{vBnpp9v)ash zct+pkzMJ;t#8cibeuy3f;H0I0Urc+^{L}cnx8+{%cd;{qO+bTlC!A5XCdo~2KJ~2m zL#<#F+`R1)2n7)ww0}f)B=$C(^iQl040`=N1l)7!`8=U3d|E(zecM=q4DV~%h78UZ z*=YX)A=ItmX8^lXD*JI=r{)WBgT?mdCK_<_PtE}NX}bn+(7LpKl21ieZw#z1#?b8q zmoI*rbHE$LG*uR>&khKoJDKnv;oLQc2YAlSF9n$YGS75#z6=Ij_=`z0n9t|6T(7bY zb->Z9YrHXr=~2U5&RUG`la63*ko6W)Wm*Y_it+@6n^L{Q{yXP($bdc+`mNwGI`{qz zJU-g?==pw$3)f=#K<77I>8H0(j>rp3JDMyxKij_+cwOIkd$SO*{!QwT(Z&ysn8aj% z#IWP(O4sDTYRT=`X~efh-Cj$5J((iaVu1Sc#vwqd#U$BZ4vUhAENjMgv+tI8j%-@b zGvvi_ZcUQvn89%|>fkoFZG|y9xJl2_P4;iDU}BAYi@{GPVdwdMqeO>E3^UzTttAmF z&M`wZMJ0cukngk&745JJDc_cMR+TDPca0)0$Xa|Z1;6c8<&Qu%)L=NG1MR~F7(066 zeoqp8dc%SJhjz=3e(M`hK|^vx9#9oKyDl+UxQEpN;3=9E3YM(PRDUzQ#9Z?W?##G~ z|0AizzvaNpl|@=h8`5LJO&~BD-FXqf3^|+x9i902pN{fu-;)%Bq;H{tJA5}2=Z*hv z_WZ#2kM9V^|2EcsZMV1RST~GvDru;Lh+{X$j&HE&{1^qe2xce<)N00TM&*UXa9mAo z>?T2N^3I&{J{2YZ(&KJa?C)X9C|3piSDnVl0gPH_?$XbcTio80*2%jpZ)zHhwQ6sc z@Ny6W@R+`Y8f#XhQc3tA@n@(~mxQ+i$HHCE^(*Go{Ecq^GuqPyQzI8RxJJ4gd0@6L z|Nk0?hgQO1JW&hCo8#+O4dDGFok?JO$%g~Yp4jHLqICTx>KK7fq}j_)cB!Z>dJGQa zB67UV^b1Kc2PQ+cm_K-E^Fb?gS7X`{WZ#oyhx{ge#uC+vpOH%$h4;;afOF4DWhZI1 zv|XPj^B3INER$-fCAq93cJv#HC4dAE;7@+P+>Y5R@{;moSSf2po8|bSH42a~nk_Nh z(p#Xg56~|TfO&8A+llx1=_yOsy&%l4k<<&U3wEe0+pJ(Ud(@l8V#@cGYd>Nhi( z{&8wQ??^NR3i{ph@ft1{DhA%XcAR$gT?~fxv?V!G{UE3MN>GwmKUw~i9yNr z&xTpCLi#s4n04A)6ZvGy4zxBo@zt3dV-KL@nYDBTXJqM6S|uN1u1_Sd z-E8l*WcJ3o&cM0zp|~-Z3?L)r`3I1>cMeoZ@&V7COsIF%F)KG*!*`7<_!WW`v_Hc{ zcyevB;42zi4+1(qSDBKCb_GY_B|Rko1EKxz8Gs@%eGg4ZH;fl-A2T0s=Yb}-41H;8 z0co-=Estt1y>l->MQDiE1G=F2xqgt6zq40i|MPO;eoJG|EGVrM_~f zMc|D#-qTj-W%SZ;Rnp7$qp;=W_)-%Xw7brS3K4j=^^qIo+n_oY8C)(Yp)F}qHd(t2>!Z86OYBM)8w8jzX;SQO_VpW-~yfzRH^i>vS$_%H|IheZ> zqmFI=fEXHkJ>$e~etR%?59fn;@QBoi0Fx!%WhfgfczDces;#EKtrU4SEJbrY-dqc> zeRs3Iuzr78pt@p(!b_NEKq0k63G6iopJ1HN5Nc`@6O(wf1`V{m3Ba9(F3COWxe(fA zdQNF}&BTJHaOjkh*Hp4dFlo6GzY+gizb9Zb=^ljPIj-fIno?S^J@!of+YhE(3UiE> zj!*bA>uQMzY;wt-bGaGqJic0kQCUKll1{}{&|N~%7Ljrck-AD+z>pe_3N9O$aQ<;< z_dDTD;MxTCD&OR%5wm>XNQ!nawDYD-OY_$X2!;5v`P=>gbt3k+Y%yOXi(&jJe_l8~ z^EQJPebzw(T&SR9zM$9@m)4>lHt(4>YD2me%QWg!2721L1P-8zBE=?jo^0;reLcvy?Kld`7gn}%cSd*i>LGkrl00@Z({1qI&X z7W%#5f#ZPp`^sYCECZKoD1EKpGiCm|uCNF+JoF)yZmrFV_FQs))*qaH29WIj`#cc+ zz7II>S6d%&^Ls$G*}{*=v4*X%aj^E}o}ug7|iU;hf04~Ng1NA-vG z<28#YR?PDD%S-W+lW(@2q#N`hvKV zhjWBAR*+!Su*xj*WQ8-0EvMm5)wUU~=qPCcOroe5sBsoB?Z{(Y$z##UW8>j_^cEjdgILT4N0|Q%vN+@ z7SF%#hW(2Rz~Kl3Ce^GCe5AF9f^xZKV|>MdYjedIaLPvZ8hJ7UY&vOqk@+1{_~dTZ zL$tzVOl-t_Hn9<*TtFYJ+w>YpO_-40p0S3D)_PHbbRj;;F$55wGH}xkAtK*3nMHe{Odm8mGKdk8j_Q0QiB=Dx8>618cjTL%( z;S>D1SpN_FnY?(*4GyprAyK*`D_GtGjyYj(v7yRL)3~Pq%3(VCzasi+x@ELeI;8-9 z3)+8w7wL7%;zH^MLX0E9DnLeb0t1Dnsk7kHgm_2#Q=_R8rU}O#V z^(!@Z{yUE<*-M(p(K4y?(zj*zzV9H~C^$G_;UB}`HHJRt6aYIdhJWoyJrswxw05+v z^05&4PbWiCVP9$G6r!;x|Kob9qqf7r!$`R}oZR-2mqc_yi<6~gXpy)M9gAp>>&1g!-;e<{O}*wI01ic zAbT4rHJXU5oz}@58mlv^nDm|Gky>22KQ%OgPQGmEFg>;jfFC&Cejh=*%Xem&Cqc2Z zool#+7?^FCCKWD+8*s7^$O~deXloL2VgtXDz(53Dtds40IvnlDkpjmotr5%fWYtRL z{Z;3ZxLcJF1DSbJCq=j_A5{De!hgyK9UWt|N*#O4g>b;1yrporLasm8`D{n6j$Gqm zI0fE$!cpPpqNl-5N-o?Ig+*3wKD{{Ov+G1gab+pyyBi+L_j?eoH4@M28(F)h3qGc| zh~QT>@4GleRWm7T?;8F1b#YfqnK-is5rF@27I1^!6`WFxHt@bpalO?&b~=GzykSLW z+zqI}Z*3Hh7GatCv|@BPXv~d#B<+>MBYb$Y>2cl9%8lZ>D&*_&X}4TPBiWnN2D6{6JtZ0sT@IbRlp0k0I zo?CzcM>S&|JS|PhHT+{cp zaaarLu|r-xM)e?nd1AUfIwZ4vf(O@`Z(>uTe2Gekj8FF4Yt!r-eZiK{Tl4*2UmQ5o z%-3oL0bcXghF4}&BxOKBpJsC)1FgpV4-&bgzFdBU7=?a3C2pYEPyT(^(Y>IpuIf}H<(BQtu ziI;M?zKMsuJA*=)r}8x5?seY_Q~$M(w?>iBi}wbCe%=4m0yG(;{1;;dtdP$Mw;y63 zvutiY9ojj!+Ylz%-SIC;hlCWK9uCiyl1)i4}1 z@f_Kx=puP==a>X{ybWO{2-YB+G9Yr;3c6!iJ71+U zX!6QvoCx5UHA|((;V2G&7tMxbg1FiWlHaIvTd}BXFpVEtS0vG+aW|KjkJdX!51E?D z@wwU>ft%ai#aK;B`hMRTFssXQoyW{?TBiVS;e{5vBFM12fl_-&!y)@q+w|OQ_>DG^;(wH26) z{}Y;7o$Jf2*(K!tZk*PVfGltLUj{f~cp?}6Ys@L{k+#!3a9N2yf;uLJY{?__r<<wh7Ki#yEaGwcaZmvB88FmjQvK2g2?i?UbJ-K9|4Jv z(YhB^jj^&C#&W%3d3aK?fW#x)OaVE!V(B|YEz$eLI1fb{*HIfqS?Wg0V%Fb03S_jSAwgPDc`xGVt3c;t%>^3s170CqHmsBrJ2P|O3)Qumi&Sh zj1h$uSBqTXZe)^o`>^Hn*OTSN?}hk61^k80giiXGN7t_V@>y2=T|$ONY+2F1p|Qzg zn~A_`y9T=z%TmqWcaxUS^&`xm^%zvWoDdowI{`&xDhA`ihmjePP{PTWIP*Octz2=! zPTf=+ZiXUs6mN>6x?R_B9b?X2X!MYBVl}Es`F5_wI@WqZgBVo3S{|PPl56)0^FTz~ zcLnq>O`tNyui8A@e$f)S5#`|w#dlep{3^rf{Kl}`{;rcubH;d`fR8Ur&BS)s4r1T zxJDRg2B{NP3^l8qQJL0HLsKK<89ruFCqVkg60lcxfbCepCrgJCj>u#v3Ol*;2BtmK zas~2I2-#u^PJqV2d6);Pt#Jjb1iWBU`Xav-H6q~WXtG8bh-6mh##8o`Z!7TRLzlfEfbf2}wD=!m(xO6C@ZCix=t+KduIJJ5)wHrE z`~5!<(uCBFv5+S&n8UZ_ks>&HJ6ThsvX*UJ`Z?sY)L6MlkV zoJOEzMR1i=B5uNSLpbUJQQMqqpxZl=HCzChuZ#7KJ^=U)S)i;S&LcrKMvAmW5XEko zP-VlgGDVJvi-tky3n5spdm<;#oIRClP8L#P+m18mO&-buMpr++i8>})oo@L6Ibvjo zrbdbhM^whCLOD72Yq{N@)0jyfHI9^FGfMcBA3XaL}jEY z7092&n?-G@AnHhU8IIk`PKC8^z(#T5e-|6@eyNywe-F=HEt{VQ^N4ysCI53%B`* z(zN8JIupL{TL|p?5E9H~RxO_~pzX^199>~XP2MtX?azC=Dl%*bXVmqdI#r|AciX4^*8d3!wiic5JG(7Cj+$p4$BOjP@{Y0 zLxkv-CpUT=_@xVq<<550TosAb`dh;e&_wEVdL~wEc-^=;hX3B!HJP>9-6W2!9i1WWL`RIHpSTkP{g90nAXI)u&L0w)JO8qF%kew|^j zJjR%#z&k7EHA2y8?ygJBybrr)x8QKVb~R9Vl8g!%X*b#9<>;R>8S^kL`8+11G~90* z8&me}b`AyLW@gOm`5)V_NA^Ak?>`eJ<;1a6E<}5iqEaYD!W(IGIkLuL8>pT@a8%@T2N-G-6?IzOI;S zm@hLtwY2}vL1dCWw2P81(3qL5#isz97%LNzo`Y@w{YWK{5W%5W%)lGZPTn42^O9FM z^s=1zbUW~l^euya+G&HO9x-YqMo6{Sp&uuH0ml+(z{ZnA2@5?O7kp5>|M39M;E}#( zD2Dbu?E63O99FXWm5Q3#IIa|LEq}JI+3o)qgk3*AIhi5IU_M>6=RKg9*M2wnKP`^p z=!08!5~Rks1L@FPkh~Kf!?3bMifDL+k~JaP*NkaYFC~V5%kzdM_oa3LN5?i41;jsf z=zs_Pg!Zdd{V9WBQsQ@Fx9O4o=LW&$2>v=$Nbw^2;9<-);)Rf50~jLqJ%Op6pM+r? zC*SLAR7T0g>rR>`=0*@Fs7r43-1MjnT$!6z`T0&dwe4mi+Vh61u+9IBHz3eDRyf>= zVMa@Dul1wBoQMC0HCXyhB|_RcqIdnL1L152it{;- zgVQDY^6aJ~Q+wq)!Pr!@CoV)5Q3=6K@CC_SIvi8+?YI^v?C`X( zjA5a{Gcd**nGsN4bz=|@Ris{ z-_&-&_RiE)_y0g*`~NEsd32K@pY|p)pN~Ig-;VX-NNr zNCv8{u{K$n8Kz&IeYj4gVYY2zitTsm$bPzG=Pg zDe)A^s0HpxH8)D%GV2ePN!O2r7_Q9#&&f4#r+Yy?4Z%dj2Es4{zB?+Ar{;wWD%QI7 zmu@uiEMxpY>0zW75%xHC=Q1FA@R6InNiki6QHhvTf=0*?xBy1A7|_P4Xbx9)glg_e znVgkJ9Iko>Z~GVw69_ZFGAcYh0A_q8`1>O3AK1S&?8hMDc0r@zh72J#ToXJn4k4;D zYMlJ7!&5%?6Xx%a^TGP2{bDeO`S}u|PlSsdIdNpT@I=2~_4yQ*4t=ReGkC1EkM5HS z+Re(D+BwJs^`LD}C8z%tJfG6l4BAfTYEouQ)9{|`=r^?aUaarz z=Kj3;8;h(w{OgHe_H$ZXkkY96=X2@!a~_EE6Qcts{=_zU7LUNW8v=@9WT13MHYHF+ z{nV<7m`_2#vuG97u}oKB(NTNNbyfwN0;)L4fBZWi=8cu`si8w*z@gXsKO(W2Yu2lO z9oz4eL8smCECscnUN#q(YhHalJyWILgMzKo7koNM9WD6*dH-XSISs|iVa*Hzeh~(n z`af;Fff~nJ{B@j87KL2F<=?Ns3u7o;bX9-wQDcHBQcV^w4kHUABMSCn>8<6y@=&Iq zDeE7j{Y-@n5uD8y-v(uV4&NW7XUyK>syKZ+Lzha+1ka!3UU!wRBURhoJ-H*r(_J_t~KD=^dAr4dlt z7dhk&bOBe*9Ub&SG2vHw#&u@9Zjmg0Bb0>aKSt*uCcALsFTA-b#Ud>*o%be*#ubiD z=~HTHqKC2JEH-YGSHSU$7Ka}`aDzpqolFz$+?@B8i1SZasB&DCbkRnvkvldh_WY#a zXwzBljpfdToO86#Z*`pCgJTTjFMH*ho6({Dm0Pzpi7FHNHN;PfM66r*%kSAZJv8fb z&zlkp_6}LP2f8y;ei(c3H|5!^Yekb>+Q?|@dTxc9cE7Mag%}p@{UtH;xP;}Pq>%U% zFC9%GrfdAsvgC0D5=c{QfgnL36Lg+zhk=ki6R;vwVw~;1L$!5TRO1TJ=Y;Fc%<(N^ zXXXkHhWa48R%J0XGb^jmB(%I6C=4XB?xP9EU*?%>L0yChMRG&5EH`n9I>5;!*+rH%4HCy|WV4pvm` z{Rg}CKQDg#&YwZ}fz7~q;qCi;G$jeKdzvwWWPC8-}f?}(^^7G9AXqj%}v$l&xG8n#AKpMyXc*(hiN z<6=;Mq8AQYT5DGZxr$tVcQcprbqfyugm>3#KtOJa=31(nVBmmWEX)ID zgD>#!B)j~BX)ITgI#}(TdBt7~B5%Y1k}i9(1VW;PK&M~sRJnGnd6-92v|T~Vm$SU= zUE?TN>FahAsV)TptZyQLcnyDUT)5Y3>Y;4C2R;=sCmmQklj>v?-=+m&Eb2wL>({{+ zT#_B1Bl?WHUM)$CjP&PjpQ^gj_C)P(S~zjreVTCJuZY_)W?3_tbsR15+S(~n>{S%4 zIV?ER&6ip2ah1|I$G!uDJbP-E&a$c~z^h*(!$5;8J% z&V|S+i@(O&cu6ifWi9*tdWL7>sTQKcmoJIssyrX>9f=%TBVC$YY$Y61?W1TXX>myM zo9cdT>2@^P3W_;j=J2zLoI-V>^|2Pu_Z4|nS)KPTcnkYtBr^4e!P;73sSK%jC?s{@ zdqG^ghbD6AFhy5Bc9z@<{h@H&H*SaOQT?aF&S!gY_Zr8oWy$0y6V);qFP)oEuG46E z0fc-4LaphshlQ(vVZTR~sRDA`_$@g#z7sCymFYzM>~LitI~K z?!Pe&1%^(7vOt9&ckI=0r*jqdxI4DL?i@uQSJ(ncAbuLd_k5~Z{BWKBQzz3rv_hFZ zxndUu`9AP`GEaC<57F;ZZg+4|h40>?*e7T1y=sjq>#3@h*y~3)lRurv;?s67DEKO>i~ zgo!wlXq`{1S^`vN9%1ad5D@D$e`~O*XfyQ*Pq*?GJr($JNg9wHEaJ1Qo-H@!#?wN1 zk%ylE^rcz;%H`Jz!FIe*G0G*A?$7vD@#XG`Z@mJ!HZyCd3~?hGRP80}R|^JZHLYAt z^!K)$`S%W@6tpaoxUTBy@ki;UppdA_%sSn3VzG8LC7e9O~Y@W{F?LOs+9Md--5-?BKdPuJ|U-`h{@pB`F0dg*Cb380@aRkku#fq zqb@NqvDtY*UVe&y=5h|Po)S@bcV(u0voh0As8LygR*B~x?H@{EJrRo~76Es;%`78Z z;8l~Y?er!fJC}olN7T8QyH+lKUPg~Q1nfULbR?RzQt3H}CAWTCoGGjFX0K2D+$XN{ zuP6QXSS@>BWAp9yobFiGyn$LFNiCwsETie_AjfCAVcG?`+HoPz32kB8YLeQOojPQ98kQ6CMJ;u2-HI;9sFnIW~*O)VdeXsCRO`2 z5+Z@E(qA>bF;77_RyimExDpIZXJ%>L5RT!(ngN_|mD2Achmz(J%fa;fE0-I4|L%4i zAb1)0JSh*i5d@wKF{SSh{ZK)?^`&2#Pf9-)zt9iD#yxgEtr*y(F{EOmkqVo6b&^LG z70G)BX++p?RJkr=>#FcO&dNjjcMKlG_hL{)NLwRg+46Vmxq7=PY`~ODN5BsrGbh_* z$JgrB%{`rMu}Rtf;^~AbNyuDpC|$$vn%oVLyCYRFz(Ow>5eUOqT7o4ci$xcD?Hmg8fx*?qWdynj;@(rQqQq9@Ep3{0{KbpAR>NaNG<&O|4e z6>5G`nS}xn;xK%~&CWG@hO`V=V)GIll>tsX)l!L$ray~_JG8v4F(>>|D+o?2u;NM) zy>l_0Z7S(6$0PO{N%dB0g5V~Gm*ivVLNxgyZ_QIhljayJbPh>z#8{1>S49+AydJ1v z6RTj+V0Bg-gD=U?Z>1N@mZ+Z#Cv5UxfphPdc!62{?`=WQ19Mw1wrVgCZ3ITOw4T7$ z|1_Iqquvl^wz?K7FL%fT2U33^{BKimA&4;EXAFTpH2crLSQ5LE7MD=|QK8DXpA}W4 zl=kFj;FVP(*&FdKkw44(LqdStSs6UeqkaRSAe31JwZoI2nSkWcpDxt$BzXaUima;XVM0*dB7G5}daJFWQ~+z6a6xON}CEqC#7~MnX%R9e&i9X{X^` z4SL2#RxCk4wkUOU^fa?-x8=M8#w*rq(8C!?L9I&@Q025she1RjP`H|y0{Tjn-~7{M z!vrl79h26cPS=)YRK+e}O7|)ty>UAzjR=(6I&mzkw663!7nkh34z_HjLy*mLo4n!o za^lo-q}O@&T%~v!h(Z$#4g67Z9o@GqtJT?Luv)Lj%67xS;l`yLp!|Ec+e4mV6@#C8 zaKs`6Lg$WxQvODo%ks)*6RlEuAPy=iGUHFa6gF~(Vk^g1*|;$#g8pvRJ<0JUjp%c+ z32knunEN$~$f}37cr|XZkLt@RO{nQ?10*pnxpG0{7byDR0BmS{fxV&R#TDT66VXEK z9kE)I^es~G7Un&4Ymx4$Yz_=NJ~bZ#5#=emtRI}2;u&S}{>(ss_&4tEtj>=B8!Z2L zZqfPYA_w)-;k{qGK0))(VUKsn;>Cy}Gwr?z!le(kE^iQp>p?L<{hq10t&jUkRxXaP zW<4yQ&&Zjp_#Y`bye;&cFta-v?pZv_-)zJ6y4GrSt1rlGO7sS>HYGAj* zjP=+G3u$(G_~*w?8OCgfz>P~*YFDb{oiUl!{sIBd`vr0$ePpF%E4u#FkszMqt=&A@ zit@1kqHCBkt_n5CJz3IQ%VNSN`2`+;iemYwNZ+JIkN}LfLCL7t{rZrtYIC86mb}u^ zWyDY@TI?Wql4Q9FIK9XM4~i<;|8TtZ6aFh~MzCVkvWj3*TEhUP^GW$xM?}$8<{9N- zX$%V}A&UPQuk}z3GIjiZd?3$Cj<@SNEDDCA2`fvx6f^t9@tRjf?fAK0?JB zUf?%zy-eNLWmcb5oo88TyY)zP+8mx6#U>1-eBh35CiHd61hG)R1W#{>i)!>`PWa5E zbRsWe?Wn8XjBCkaUTET+My&=$sv}0|?3dOb_|iF9%dyRr$;0A`>+I8GnB}~0n`bPt z$`er7a9z^>7zPZr{o3`Ip)f&4lSmohs+8}~CmmUPb*PCgDJj00fW&So$Zu-*5)%IE z69f&ILq-HAVvFZ5*rI{@hRQz*j;)<%U6Et0hB`^&P*cYrB51yBnWG*AabQ}MoomT3 z4i}B_Cp2jP2vS5Z<$p`+z7eTn^im7h{l|-sFTT=(0woH1Mf>-ug!o|z-qy4i#}fLb zbIC8?+LA9K^}k*W)32W}7!463@O{w5eUSy?Ddo6N{A|wj!o`tC&yy8E+rWkQ_g&uzwUshv#$!*ua0ILS=@Kf$*CCQ*8Mt2 zmT@gE6C>@}9$L*XGz7`fb2*R6(%)NgbIVyq z;1{H|g&FJP(lX2u(nGJ`&{!co3Hl#~NkXlrb?fXcWh zVHhV7Leze#joK+AX05Mu5z*4(t}cfrZYJkMC=|PL{zM-D>#kV1OmIIOtscE#XDqd7 z;ahlr`ck-1Nt%@bY`f0N6IpQ!klzKLH!m_B%zxQ(XD!Rav6xz72@W-4DkeA6a+HE3 zrP?aeD%q7P3+xW9n$GR%)f)a{Axn;cMFp;+P&oXWGRA#BA#Pn8aC_nlI7eyzC>R8+ zKs=$_^~`ORX`67Q3`fwHB+NeL#pZzdnsaK?$NM9!dKS!nbj)@c6v&)FN=(Y~+$}mb5Ib@L>M&Kvl+wWk0GRU#a zphsjDlXvh7ifl!O5dP`sO`TX;6oRsj(yI5rP_+$Ke_#^&6H#FGVqtc={GW(aXfP)y zW}3gMk*mJaX-@#}R+?&L&75&dZvta{dsXQRod8ZcW{91}+#{PSQ|kBWx9dl!*na8& ztCowcbskS0JIev0u(b`Tv)C0`Uf%f}nyDF)oEcdfUZsQ9*H{J&$+$;_+~ARc)*N;> zo=iNZjM_HdK}3vZ?i!xR6NleUqe6ISPk8;0bDcimpJeyV#%|4myI4_docYQz3&*4O zljmv_W_dE~>%$DPvv09%Y`{^2v1$E++Q&A2LB5@{uEe5PpRxa^1!%aeVv-}mGQq6% zo*A;9@^_KgXh;FLE<;yDg+If0-^zbOAnB=eHVm!TBOJQ*S9NAGpv*i+BFz(kRlD^Q&J{f-XCb;tjKPv#tQ2{<6KsTECV<4H;(NddBVDoQiASDH zpYY&&vuPXsFKemly&PiSpOi6U0;0g&kNQ+QQlk&vj<=~$rt=%UDV=+OjN+Gcwh<@- zO6qRyC5^lbZuj?&YB}p__uf=t9T)@WWBV?haxpoAB)8rOSh2tFZx*CimcevVIEsla z%%%f^!UFBK3-5O`V$+Yrn@6T5eIPBu`7Ef`sZWeszwLh*_g}dgh}YjzED(X_zSD(0 z@6}91t7G55eFPr3MVom@0n`;7gW>P(y059C{NI{2QzsKNU22XvY`dW=kb-n$H!G1_ z3m4gAl{MLMSu9x02J`|^wzLW)sAl!?0XDi^Lb523G=clI-DQGH&m8B&nIs z;Tv`m|8=_kv6*#pPg}dd_3)Wi4+!To|s%{AR#y<5r8cEOgpLe1N&koVbB+ zciI=_FWs@3kn)^Doy@Nzvq-bb{DZA;C?Y?#B8BybAaGB}D>Ydi+V339e&qGn%)*;G zjok}1>XYjOwA;I;U&bY4e9>0fXWahvLF>}Sa-QIs+02wu+RTCag zBcV%@mq)kpESFIV?52nvCxC?VzOiQOP31O>X6y1-Rp?pD=R>7cTxO}+D4&U36^I($^S~69an&qqB;48%*&rjs<;N4{LwI$;sHw*k;Ta_A|)wT(LO^UT@4kH zbpFVf#slEHBRsyIG50SLv-8Wh3A}{m-hcYZcaLlYUm#;~kMU!19ljEJIB=pTzXqzt z(+{B6Q!Tv1E!t8^n?sJQ&Du`Wza%HAL(Tv!32%!_&jmx1sMEC5C-1HXIfni!iJ?yX z8#a95>@z6~(woL%4cLV;+(hv9*{yLuUon`ZM@e3mBwF~p`f>1*NIr)%TxH|Q- zi0y%n_KLgEixZ`5z2otI1%Ah$E7s3yl1{_=3D1U9inUD@KC|^rdQ<`drg?=F?%QDq zk*hL_KRpjvZi5^FLM|i77_%2{0$f)|wKbwE_;qf6B-foaSNu~z}Z_)+*L)Q7A+Z>-F=1=td(}tVSMV7ljYw$sQs&b86kjYB30V^va_#(1f7Ir`1!XD8iWxfxS#j zrx~z+-@KInG_J1ya$zUYz$*i9pNBg4KsF#n84oIt2bF03spm&@kNX-YHZ44iTl6(F zTsbEPUyh;KMNt`d?(1Rv7s_&d4?B`&>2R+v4Z4jR;k`$f*O>w^g!MRmoG`ny6E~O& z9$Vjk8+H8VzcrC8@ic2rF~7!0lUcM|8b|S%i5x_WOY-Jh5#X z9ou#~wr!_l+v(VLI=1aE?>>89=lA+M=c+O98l#Fs7*9F?=gWsCLp0PCNL))?6Cg(| z=S%}RTylKXCtkxMh-{J6;ASYIZ7u{8U1a1Mxd%g`428mC)L)Bfs3KEQja3gm?B(=zoSBg5{^{fR$c-uG);@5jipEj zChbKQOfef8O3DY-R7?a;WoyC>UJAV?G3m+``&*F*8lj4+h$9(^K-q)1do)R(&dT~o zQW`dy4rt;XykQIkeT*$b6=p_ec6~E+IbPQMMw$Eom74q3^32ZUheBv`>p%qsW!Te8 zdWqjkXyr_Z4iwSvjAst>vXd`S)pCv{qPWn6jFVYHaa&qh7BO!~yT`K+Hcn^P!YsOT z&TF0Imo{N8Wk@TNh-qw>)wd@#Pi3ucs)r?0OD9T6vz9;+kG_MWC@0C9mH)vLHGRFR zTIC?D?M%s(#iq^TRL-d>R5iP~PfR_+lWD0buCH7&a-SV%Yewm?ki#xpmo`~9^B(q0 zDJ{rM;RQGKvK+DknjecE>jB{C8kVbuE7$4|0E2F9QN3#-~#{pJ^CA0(~BSYMX1T3GZn@X-cOLx;hXOePV z)yWdUq^Wt&N!|lbL6MbggtPJILne1Kn~^L=A^AObAZ_s?gVWfwcoZ@PgUlNuBqhht zKx|nep0ceiVVaxg#d?jEV2HiWSV|dKZ?)>Bx+UuU50MrS4Iyz9yCCw*5C!9WwX6TX z)4BDUbC36p3^ThJI{E{0zgP7*O231}`UIXbmtTbX$6qR_-cp!2O)$}uFsh^_IF>2i z)S+OARLLfhe}PpN@Bc7r+*eG=ifWJ;3Zgpr+GyGQvgkkZT+{K=K-yU-1M#s$s-iqF z{ee)Vxx(79zFZtSk=8|JAb}|Su{?z62qQlzflHEFYLw;AxOkoScTvS9J4i}eQ!|~p z%(<}k5DH2|01|YQEKxA+2f29KyoKqav0^Edj-_lP2|fMI9dt6`xye}(NXQc?8;rmU zm7pUuT)5^0agk(jpbQ9leoUV)6j_R@^>+vJsi{`>)aT+;cs1L!w%iiRvL#9O%DWP=N!lp|IeEFN$M!RE;^=6x1 z$`a~$4Q=FAY4^dpB;u_}MJKTJus#f3>(1>>`vAwbpIlx!vsiA4-UbJ4zU-$U@eOph zjHwgsFmYXg4%9i)>K7^%DT(28v5R3N%2Qu;+^&W2l`!W>{;jKE|MS@4U1%&7`78Aal$>hjlSta5!tbPh6 zR1B`c-YjhcdEEb(D7gG&en0K zytPAU=!J36@n@2VZ#WUMA{1!Bzy&1C;~UEcoQ5wel%!GfsV&6JTcQ|JisG-yj*kV& zB*)<7a$>@Zi;2jzfNj@ePn;s|PnhqL3zU;|9E4Z*ye4i(TqqIh4Ap5_F~`~d(pboR zHXsQ0#Iql7D9sf2EeI`A%~W5WpfsYE8*6cFDCxAl-pxs4;UuCNJqdMI#bbcMRQ@wX zs%?mKEzeicbw(Kr7;Xfq57SP6JmleyBbo(~GQ#9j?FYi`qMO@^u&XJB;~z746+p$kV=L7&!wki@o8q6jEh=1BcE(7 zuZKNMNryGFn69LxA_HFMsG<4ZR#c64OcjNmoLgBa?s9>6zC1!*HhdAob|OWD?c7Tsm+)WAHU>)dI5RUr25z(SZ=tncs8EX)X7xFC=wSg*KwA4F9+!VVg*F zP6~N8#5Gz%eE5m-tcRXE$6Vd>17-iB+rNALnPYvHm^opK67lHGDTKhq2G zij>K0`m65A=r7~2{!(Wro#LQe#VklId5ukC>ph#{}K z>7?#9w46y(!O#$CP{lL849_KAamV@1%90G2G7!6YwuM{?W7IdxdoT478b$4)nmc}*-B^m; zYi?<7YIrJYZSeu)wP7kb&C5c;aNr%nger|BLJT=D{_5X0+_!ULLM%feC@M4}e$Y$H zuPlTmNnItjf~v|1v!Ncm=@if-2qb9K1UDs3o#az-eCZSrz-1UhWJ`hxXU_}a`Y&lp z&XPSs7An~hT)KAIB%YR8`-nFpu0z?7*am3~J|1*(qY-eB0#K)R1a9sYWo30~nhI(# z+j1g7>O2z`IZsP_ngv%Evn=RfanHa@7W`^Nl{$Rt$Kdh}{KRlzJ@2n(Wuq{IT^Lr9 zZ-!9eE$r~+`up;ti81a-9^GHJ_ofU|rq;H5Yhdox?cA6=jLSx%Qca5W`XB?`S@q$q z@4woD3)zp4RKxg?NhDNg?sYAZxvh^>)0;6kHfhEkEGp&E?$twxkhm{Y%bO__Glh{9 zsa{&jf=ajwY;wB7S$y2G=Wrt0=eVCXkYoGY*xh3FEF38Xk;EnVMckZv>nE-CR763~ z#(*AH&HKIZ0thz9TUcQfj|i!N^f!B$eRvCfp7pqY#7s!t)>gjpjGo4H;SBdb{O{N( z#n8ST;XtHv6}0U|W>7zg&qe`6ts(8*#)nrJA?+6mXU)bNo^dulEbDiQ`77}kkGy~3V z=QN3kuKWGDeC}^KRE2|0+PF?h#NVPt&A~}G7uN0{>mUsd8KMafIhj#-osQN>>e{Ra zy*$}xFe;aGu+_6dfi^ukH9oBRf09K>A}|P~J(E*a6;;@=^lmI|v}JVMlPcPO*m~8R z2S_l~K-K89>kfWEGeU|w#E_K;ILt_Gp)n)3sQ1ei&fUNx)xe70gMhqiRD<3T_=>x{ zXb3O0~i~^ugXi-GrZnp%o;4|=WqfN%7&2E(D03tpTE+DaHqG>Ejwxs z)UlZFWacN@#*buh8i_0e_UQK8mB0(gCHY72-lQD|I&0iH%CRqUdDmbqQD?%%w)Q%E>T&ednUxKShM`mAtazE2Z9_WYm=+ER-%lEo@AO1nNv zAcTRXPqmFu>(sBI%`ha=j{R_3N*_iu29_#e#q+*Y+Q{bn@JbTBSj*-t5!jC{ zHk9WG0qrD`kd#W7MJ|P~{GG;Az;SxUMWU7g37vSV*cuCU@oCk?7*mufH>QN{lY_TW zNgF*N)?kELqCW@7wwqoeIkK;_Vni?tEF1L}jjP@0UTGm(F&kp*o=Q%?J|5@qG)R5l zm>5sgiYG92y^)}-LdjlmNRmjqVQa8#(t_XwS+<=eqLeX+q1cHSMs6<+)O?YS5cu46 z0sN~OR08Z;#O_Lk!*J4?gLoHAe_wl4nHG9em6guXZTe(0xaNK|WQj8x`Mk|bAzIv! zMVwQT0d373SI~+~=p`>`7{C;a|p(wvko)kjPi~P2%8ou~YBD zZLG+^6XlY4#mAYO07yV8G%5m$HA^?82iWFhf4Sv!dn_Ch!w!>%rkD$I~ry zIi-exE%~EZ9{<07&NWAgon>=oDM3xHZmw0g>DGlul>x#?NJE=^oCF0S#yZ3iEaJ*I zko5AEG=(7O_)%Xc>n{Ixmf+jq(aR3_Q8`+y(p`bn=aR3fu0UstKo*Vjl+PW3ylm1| zdlP}7nto}GU;v4$`f%U_%`{$UhLr{b|DE50vNg&>BcZEueFk8rz;_;W$gO4>mCoGy zTxPzvxrm})ZX7WgKY6X2po6{>^tEGtX0See1E+n@u8KbLTfZ@@3&1&!uRI zxVE2)>t(@W57})dw^I zypRj6L0?@G_WuQ?2O-S_Z&YGCl5^@h(ub)xH@a?tn9*4VyV$#JTx$0C9F9f%KYlwd z+_PFt8l(HFN=`Tc$%Xm&+p0N0#l=to2kAK>r)W!@Gcp*_RHOa_s)|DBbdjKIiwy(* zMmOzL(qYd&%M46@`a_&@D;$|7Z`dJXEeVAC#;ECZ#-Q%O5JD->++#8*Q(pZBM(Tp?Z7&J;ri-nNx0-Msy$Av^-m-HqqEj< zq_?fB3YpP!(er+)`?z$^b(bR3cFL$?32l?m)vd2b-wh~vq+u1AIxY#C;(F`B92p;W9WTUxp@HH6U$~d_YDV;7Li54D} zh8rUX5mur~q~tP>Cv)lwWvff0giUq^4^*YZ8gU|+(drKk_}FHb?@6j2ce{vgD=onB2G?5 zWE(r5<1=0%NeiAI>$N`*v`-EoaDAA>}$+l)>J3gxh()^=B=bmbA7aM$!i_ zlK+5i#dCt&H=8_Ky3}G*T3PKgqjB-b=5_&dfn(}0`R&Hqlr+Jh4fFKU1gd|eqm4AD zR(Cv;3w>HbMSCh@`{>~HOdxK0jWcg5Ws*^s?GckUFKLUGm#AC_llT*vqR0toK=J7f zioBzdX8o~W(OTMQ$r!ugA_XH@aFG=r+g)g5b^EJU)eHk>iNP6!W5kze#)Ghd>`hrq z1XC|Y#_~Ete|Hk>4qxx|Wx0AfUl4?gvK!0y#BB`c4GY4p$<0#<_%OM9CXv2DJMQZ6lNwj}|N##VFMS0P8ckG1WL2{C>5j=pzqX zj6S)r|7qEGm;Y5c4Lqk{AJ3`*kv~d@96JC(U?K}XN^7ef# zwkJ#6{rHBiFT4Q~IRJ?m3OPaK7wLysPvGn>{mw~5lqCG99VSm$DWpIxe;mN+@@GD7QJXWL@_&H!{- zZdrh680RT*7Poxm8kejg?P+Q7hvr>rtuk{yl1yKlly!I)6*?vjI)42jQ<99G8?i?* zens*yLAGR+EU6d;dVY*dS-7R=hsQWqHQF`hZUW#W%GH|agehqu#uL;_m(w36*Ij*l zXT}dRXRPPD5f8(Suv;d5GCk!&u<#Lz?aarLC)#{U^I5YH4G<5VF7u)m!h8sjs|i&U z@}uzXJ&?92@=0{7id^xzE$ern({6>0j#p{GEF&sA9k=~Y@YbpPyC%fC2q@}eOJP8C zj2re%k({mewey}b=jI81yN=^k)4-r{QT72Od34R)mM}VBuij{SUMOeY_!n?ef$F?V zL%YY{S*cVe`sTIePkCZVt)6$k=Z9A=#Dpb%s?!%5I?7QU5W&kw_^X%qf8I_E^*P)? z{$&t`jylP}SW5hcX>q4{^{rXzHxH@qo>mh!94?$6gFE-UxR-9oqkD>_^cPXUzSvPF z8@MgNyK{0o4k@fqV5j3>545ONbfTOJs8EY&4egQ@3W9%jDs(;jr?T0t?5&aj>*w41 zhiN^7Tleb7hJli1jIrEb>NQy2U?Md0E=`li-JZQiyX^~WcGoK0eA$Bt?;MzM{K-P5 zmZP@6Ue6$32RHmpJktczMw%cRM)N9E4lo?ox z(p^rbvblZm*r_dSXBvL#P}=s0FUYp)%9XMxST60#5;y|Ft~qjvO=s76qfVpz#+BiCIgEvpSpdb=y8r}qw1eE}6KBv+odZf0!9Q#G8r|K|k|_EI?gcmA?A zmbCUXytK*h53dyhJkPN%b)iuC3z8`M)tYk4Lf6I3yA~%Vd35KE7y&@XVMVUY;rp&;He!y8=?qVe zM@0X@dmmhpJ)LPkA-|2g7DMe0^<)^B?*Wm~+zdN{XV8)&5b%f8? zeXHa2mvQ-&V2>qoW9bK{!0Uwd;&Fk`PFCCXa#V%)ogGI^dyvXA`~7^~!OZ4kRF6cR3WtP5;Ks-K-4lV0f=1gz^J{Cx=1Tzk58^CqXxb=6bU) zVQZQWsg@6W8=*CBY#pOD$#Io_H{fB*a{!FJv? zX#aM;InRK!P0hEIg;^0(JpE~BaT_E}Yyr3OYWDlgdDMiH9PpwgKm}duhF;ek45_0{yi|C(URTV96Zwtj# z9D_mvp4+4x$bukhW5QBOO5jEvGvOv3K}5uNLngm&PeS^~$;NhFP|uuF2BSntC^jZa7xTk5aUM#E+UTX=N+Vn)0MT& zlQ`??zljXZ=GfNHQ1P4*XiyogPCE>pzeot! zt`x>@Jn2GKI11g4e9!(&QMyx>*?=do@%7UBt`c~beXh^8Fo3^@|9UIEsa8@kpVD+V zuo@ioV|-4OhwGB_2{5JO;hej(su}$KGXGy5S67p_?BOB4;Ut^P;jkPj2t?i(k#_`h zMJL+EG=br$iL$!7<{)NoJn`C=)5#iZ3dMX;#^IPxnvt}gncuA61DW!K=v1otv#Ce< zAmBX>8Nj5rni=Pig5FYmv5Te+I1IQ%1EY;mquk&*Ss7-73VAgec`0-J-|5hG=P(;9mnhTk^B|D2@yu#;foFy1g^7*Yypa?y;cKrJ@?G* zu%bl0{a{HWIl5rmtQq8K+rNxcUdo|RG; zz6hAvZ-CHNS@W||2w#lA3s*VeMtMkF=|d zJD8uSF+J(~eBdkt* zz;$Lo{gJwP+rlEweDG^NO2>xOa#PU{EO1!vv;sXB=NEb&X&UCdeYofA<=B4wWq4fz z{h2G8o0+6*&$2z9hrZeDci zqx0-E&CP=(0ykv$uRZr{*0zLv>vFD-_m8hI z1M^zj+WSdZf3sn)Rrh&JF8{r&Dqm}uiTmGxqX$^5)*1dqwwZ&OxUI2I#_nMjzFbxc z#Io0|~KG6u4mqFf~mj>{SFr*4jBx{8y?X6ju-l@Eo9;JBV%F3 zBSdnjAJ0w*V_laq?QdzT3hC6s=F*>x;kvd=K@xV1%BWz13^nIpF(YVX)yLXE~aS2>w>U37w*3X&W0AU1NZAQ zl^_M^jX(0I|F8Rv&87#1s?$yVhqs}1-`BnT2)uP`#?a)aQWB**&ekN!^tKdAxo6$7 zHM?R8vC*Cwmytm%=g|?w&a1t`c!ErbZSUKx&5T$6G<-LnUhWIG_Xxa8+l{pbHwu-V zH}*JsO`-ntiQ=T1ayP>c1^AiJ0o3pL^Wye7&s{lo!{p# zyKLq>d9q*Aq+L$43hk!>w{W%D5m;{q+1(PEA@+J>amRG|D!=0u?yp+%oZguY{tbNU zoBkEX#h#ft%CK~2=_ZG?*?rX#C@{F>!|S;=DYf@QVgAsT$0E{dJ%KiBjwRBo8C~JL z@#{!#e7Y7Zu_0DV5jiMhHN8sdn&pkFeg(6LYi+UlSD9r0?;r8|z4RvyDgaLX?qkya z{@@8gL`YJ>RQ}vicHNlwcWSM1iZa;*!of{{_gc@HX=;=9xLiIdW#39U5mSQKIgkfS zB%Va1L;@~RNYf%7t%hX|h-tCq09^nQccfbf^rdzmE8P$;5Bp?%K zrOxgZPTyx=NMC(9^vh*tHHs<$VUXAcFE!J zZ(4)-=Wn0OQ2U$BQaYe#zIU*lj>i!^HY-9Jj^vvZ#`T%a7x>(rL@~*JQk61?h07U- z*W=!)%4>sZSzP9s>aMJ;uVaEEcgvyD9q0F2cjK4p6{opi(DWx4Qi4W2>y#tuf(?FRfg;}9fjCZ2Gs9D-j_VOfpe6lSB<$ zB3kTUJ(h`dmFn4er0oJ^iCyIcw@lq=K1Zt zagowX^Qm52%{(u=%j}An=-C;uI2bzZu)@v-aJfrt?Z? z(juPfG6~^pGO@9DnFiI}{&0)Zz*GgJ$pxi#d>n2As%L(gIZ5=^ z*Oa@&npD#8h@p_cbN=B~@s`HRS^&pWXzu>!VH`ZsyESA?h6~1s;M*)P&h2F?kf za=B~rtUBibmn-9Q!8)Vi0yHyPu%i+rRIunb&@Qd&zqZ+U+0ubm+40~UT1(3+;_HzjZNBh4HPXsNH%^7Tm-EQVDeZSKk zUNl~|(-Ty`K6vOhpP8PdYIaX8?dS3ni%a@Y`CSQlN6yb@_On3|%@>c1WC_SLZ*D-l zwCuAnOVHR9_RDs#5CxZ337sDd)1Sk3SWKNc_TD+CkLHd`9fn=^GrDGg%-E%i$LnqS zajV8Dr96l0$Lzea0Iml6$^AtqTdjRYr0zwguY+CP1zU9`!J$`P81%VgZ+z4F%Csua z2^)Q>U1NsiO~R*cEu6L#JT_3DH1qK*7E4o4Q#z+4Qrrn7NeqAO)2EYD06m^3T6j#Z z1ozx;j-x~S*sBjH&kVJLwA93?U{uvN#S#UIP(r`D9JuUqkN-xxO&QQ+2i2esTB46QS_o*e9#Ug8kKJTW zt@I99%P^Wx@+Yme`coP|5r~d7biSUCzs)i)zPe7n?PGVLQ@JcjWwUxQ;ltMMGtz2H zjTX1>J#rlNd=cFb?+g$_;)&L_@&%9A@BOx{8Y7pYB+g@;?XbeRw)w;2e=w}j9B^9Yq|JU$<83r^B} z_nq_T2Vb`D7xe`1Wd8#_C|iPRp@QPnZNBKy^M8GP`%eR>Gu^9iTWMqP_d5Jb@Nr#* z78BV1jwVln)~&B@Ff@>kxP$+cIDvWy>-c7_LSaPXV8k*fPLK?~%P1G;sLh>L_hxZ-U^D4yD5KCfF&_jy2lv2!#C>1+x1Ddld1cjv4;S9L>L#6Os_J=GcZ${7y z3cEJhhB&{mG3jaglFj8Pzfh2c_!gxITj0Wp0**h}2)&uin3Rz%^&d1WL=ebNBTq?k zx4aOx8(GrAj4oG?j97!pB^ zTzXj3oH^+XR(T(nS73@ZT$Jj*wLT`_baVBuImpU^W9Zs!%$2X;PKKPmU|-0_ibBMS z0|MQfoOZMkp6cqgn1)2@`KAWT4Y#}X+tU3~sT7U185?rzqWw^w9XXj#?)AH*6TOVm zVy*nK`Q=439CM=+Hn7VkS2L+JwInGwm7K|ixwe?$7Q3KCuw1rdmX#$*mFY5+c#p*g zK(I&{!Q{+I5fIds^&%vG29%*f1%;OqKn7 z+dIaz9WA1`;2>Qa2hkLEO5{&U^#~G>y2D?YRZoXS9!sDyNYmM$F!+Q$+Oi+I?G(ybYvZD0 z9TG;A@TZg_qp04K6d&Bu+ZfB7Z=)xnS`QGauC8(lO(dfu0!w9tR>@Ybi&}jNnE$CN zCSbnGTI*-abD2>V<{)w{rubRfP7lk#+K{U7fLPX<&PY~7?5R5b6fqHlEDSQ<2(d7ux0VWVXQ0 zh7~ac^Y>67NzAD=EF0WY+8O$Uzs!}@{Rih+#sHuQhuOek^SpnOMmT5o(kcy1OpiHm zVDWwYUsZTJEGho0!PZY)fx$2Dax~vsxLVBd{HM}q&bD1EU6E%d*t7pJ#j=(EVc0{< z-AO-z{*9QvJs83F?eMQK5ximEuu{bN;;j7UW~U!pkGyiR0MH8!(EkOX$GJ zVmUhgXmgONM5#7*&==oJ()eN-+WgL#t_G)QZb56(%N5;k0+|gbIQf(Un2m}Vp^=vF z-7C)Hd9y615Is)U*h`&OmS5j^6<@!x6=5nj;FD9@a5Mv9v@OnUD3|;>txy1|hm&r} zi5?ZwRx&E__64+5NI*YJntxUYlnRCu9dLN&?yf~e2C9}gvw=nGYH-?K#<+mNFRGLE zgJxij8$o`=GF~oE@3|`6eT>^K9>WqrFu5(FM-Pf_%N=O#MuA8h>WdVuZyPNyN42?( zf<0}l_9^+^(|KEC;5KrD$qQ$NYKPt#tIB|tx`Dv=5N_qe`sE6Gq#s$b(9xx)i_3u9 zc0xi1sv$*E!9m=e;BQ8t9im%uuWwwyNjP6Z;@cQ}6YDgfN>b$4x2O0Rk=pY*QmV9? z-}>ee-OOT-Zys@&4wO*Y=1&8+KAzuP6Lkm5_(KY?tMv;|<7hCaAx0%bmEz49U}URvyA_$V z@(L$K;E(jJlsDD&B3GEsQAjdiGFLleT4z*-&IYqyBpl!ZF90RdivzhoZXd(I5eq=V zmL6wyace2El`yDASC&HZJZqsh@wOwWZ~?5#BTX$H%b8C$JIogJ! zE?#T(LNcYcmiFgyvR8j+#tfYhY3`FDaQ6@`df1s6HSl$#gwnJoP z46$=+w{r>{<8G(oAvn07T0CTpKI2IqAA(!=;UtjjaAE?jTri7KQ#i`pAUuMt$l(1P z$l-0Nh<)>km3;(bc&}wlQ1-m*A)3wq&HL)Z+1^(nXR5{ePF%XeH(5M3a{p`UG@4Os z+L(2_Y>?CFThoV>?&swlSQ^iW^x`*k{j+6?GgdP{=;oQ><1_i6s0^%-V14CXoKCGO z_BZ>5$Mnvp!^(iecUbHvMrvZav#=%$rg@Rk7R`wFfv@k#FD`RI}OrB*8Se&EI4 z|JMy-3z_QbfFfjD2+QA}C=Vt>h#-ZDCYTL(N(V#9k-~bRAwApJ*Rk_?>-K)241=*t zyEtqJiQp-aXk_<@{&+Eeo$0;snGPn4`x1n*?=#5~Thi%u@6ZGI(e-7u?E#NQeT^$= zl=@^z(F%38=WKuSMmY_L)l*MIo}LHph-&NY?%Au0D*g!d`=tVOsJosb^xLH;^vJ_+ zcI#~u=+sdyB%CJv5*`DQp8g(7EgryTr)PF(6WTSkNmxdhQfNqAES zQ*zr4!h?vvi1%-AE3by`wse}$2vep>T$gKU|1jZzG++d7;4N-Jldn<1BKtJJT3Q6b zX%Y#R#+QQxzeVhJTLt`6^K#s%*rD-hpe(DEwt*0G9B_(~TPZpSBDr8!f!>O^UZQl^kf`UqFfVGn@bcg3tHp;h; znPS%)1(ps?As#%*;c)$sL{NYTOwl`4rZ6ySJR-2Iw~v0)6E^s~Yj-H4n*=*M$2gO9 zgN?aF-pxzXOn4_qrRMAG9RBs3sKELp?{S$Fs(bn=gY&V8Zqs}bl3wA#q7-~41A{UY zl4Pi(q97TPd*nr%39=MOQizPF36f+#(V1Y%{skz7x(%UL=M{QJhmqSbr5sfvICDKH zq_KWHr%~)^$>n;hbF=lcvidq;2!s=v^L34k&)v$dMhh5wMxUf5TP^M^eiNMq-EF0!j+&j>op*2$PqGS?-QPgl?Jiqxg09SjE z`*Dwg3^9`o`;Ber&yFp7=9Pv=&~2@{Tz<&xVWr=!EsO!;qtXamPr3+H%quc~X8fY7 zY)zl?YK~)fb_VxrdB?2nyT(7JrM=RCwEr&m#&RoK!;a(b9EP0ImUF$p^f)~g)IH2} zwUnluL^A8A>MYa{=>OJJ3GFCx34j3!BFg`VDVrB1h`f3}uEGDBA5e=1zLD{gq;2~r zoABb@b35Y&lmVBQ+Q--LTw6Z#lhm*AX-T0g4xc_(YI@^cPXG1gE$M$4eof1Nkj(ej zh88f>hb{K(-p@_$A^8Wt1t0CT-*NMrz)qSD*nRJ`d1qN1#}q@!Gb&=dB+*4aq%isL zuUgFMv-kXsiK#nEKk^a3gYXS2v#3J8lC0lP!&or}i)VJ^SrWd)Kdym&RS~6|t({s9e6^x5>7?0TKc}dGemB9@+CH zuTn%6L!=S;LD5+9TP^H#xQlV05NdM?)kW2R&HL)Q)0x~D$3ft>1Xt=SssoMR^@gMd z*V8+?GsZKM0A4f3YotcgA!zeYc=0Wc8JAj>a^D-NmnvGbjxZzF5Ux>ICQ4xuINsVQ zNWtK13802TjV1WuShf;FNYM-IE248|rj}v_#TLjA1d7!n4z}|9uH$o{k8K3mInr%7DAB3-4)|9tVtk=gC1#x!=52sZ&m4*ig zwT`!bTDc!{@0%RX9C7?_l=5At%6^{5iU>ZZ0Cnadsh^+aL4S2umjkY?+_}d|J!FQ@ zz1qiFnF!$K@3AI2+~LiB?cPv9we0Jmf`_X$XU4YMzm^%nHoHM%6q7EB)G4nJ^ml`C z=rURqRx_5yo+v&9-iStt#q|JhL5&SBoTb}nJU6n9M{gSy&{gkQrRZ}V=$8VJxQeud zWDhBrQx-39b`w`tzh{ip8UH}jk*y&ibl0xeakdsTGL~HnE0!*|fl`%qfYWe9L>R8g zJnXx($1)(MSP=YYjK#0@x1!g*in!bN-`hsJ!*Xn|fOxeBTrV`p$4Zm;!YmI@Jy7nQ zeuGkh8KGmpl&o5u5$kIOBQ23seG!G@s^8*`zUvyAw`V$&p8Nb}m#?7w?yq^L0{4zb zoa)RzlUjJKGln=jUXee~nkvuR<1WCR9YfcbCxonL@H2-wmfMY3Hm4nwb(v2>7>11m zVry7g2sO$wPD$`3@Gtt_+!cb(EKA6*Z2RpG*0y7P{jE&1P0OAAjWWdk!=}5(C{5+G z-RwsDe*?C?M~`xrPkBD@X*tY+F!@t7@oT3DONj$J%)Ke(_WU#R&h}@L*Yv;0lTux;dXZ~x&lp15lgW4d#(0-V;#I?G`i|LBJo0JWF%DN1rUkK z)U&3ey5J$pQ z{Q`Oe0Tb7|hwIh=YVsmfs~mV@cql|6@n@JL8{M%3X%Fi|67A#^ui{l^*Jvd2!cb#k zS7N)GbB3DtKPBuIHo-fK=)rP-H&?4j%P-AC(87;iKXx(88gEYQolYannNG_GCr4my zZPu8g-mlx^Ms{*VMAVBGIZF9nJQ>#9NO$hLK-qig`r#=%n#GDv2CT8{_6~V}|)) z))||GXoV%`7_*<*n_##ij6e?L#3p-q(KL(e*8vu(>v=o)HK`(5H<@V#%O6#Gz>@q( zDyN6@qib|U#`rxg=N@I@L%QI)e~h%c$FyyI^RgWu)_o%MIh}aN1Hy;5vhcHTuFnBo zD&ZUaw7?!40?+Dn)XwnJWuxca7^KJPAUGQ&3h}*-fd@~koBduQD#Kn|5#l~tZ!Y`! z&e4*9LEi$QkEA(J|8m&NoPCS)spZbz38~%gC|mwn`uEw=$H!^eS~g_&t&-hqzZ*m6 z3&J$l69R>KezzSlTIYicQFa7(V7>&@9T5=kKS|p-K=My z1RcIn+c(DFQ}dx25hJ zv>2U+!OJc+o+&H*UAdrd^1B(&D`C?i4#!(cP_`gU@)1#oR}LucW))&$n@9ksr#jP{co>JWxluX7H5 z3mwEh)8CZ0eXEu3YfqH2>4G~wzH9T(w#DFYrSHeF9{OQ@;E{DU%(hU4XuU8*tVQ0HJ<13i-j8kqDwMm+> zqk(4zBA?sjTQPX4j4U{`3qaqo(UC@l@HlrFrtfoiTQI--{ve1E+k4#mO;e77zkm~7 z>HyW!0goyU%xTZoTA~5z&|qfb0Ed*o1IA;aiZW<&fr&tvr-2>T?{i_3_F9a1YOH`n z8kt5chKrjU9-@eBG)q$~4KZ{;>>|=#1;J8v6Gc{668>V*oSo@LSMAN{F;^^Sf=Rup z!WrfXy*D2B`AU_|vzh2vz^@~hC@#}VX_+RPC~N1#LqiYzAdQ9gRkZrwJ0-UpU@n$H zHb8*DJMb+(9yuY<$F&$2lVPWQR{`UbF50%E*ER8qajS1we4W;(LPzClqf~gg$6;ik zCOG|H%QZ+X>Dy?B-XJQ|mziNw=<@@6(;n&N&KmV<(Jc4J+>(_{tY}oG%T|UkTJYU} zd6xrycUGQ!S1Po__)cZjrHVk&{nTI8jU=Gc@`-H%j%wCc>4F zahl!F#I3sQCaDR+C5B7KqHRwC( z4ZlvN-+wb0jSv{2w3vw?&LyAR2PdeBWG?*%f|`U0A^b&daS5$6#`0dXqHs#o1zHFy zyUC^N`z43#X|+H?sf%8PhZ<>pkW@}MIbj*yLx?;=7yFOO{91ZhXFEQ=O9qGnwG?Hd zYKoeYwl+9)97lbQk1G%M%pfX(uw>IsRdy*`r-ma_{@|WMb(3qj4Vr2Y)T92NcIWg547~B92*x$ZhWea*Z#TAT2fCO2rJ=jrt z69+;}%NftETQq3CaG7vOJ}p?v6JI?jR@60VQ@EHCo2%EzjPC<&{qtW50h^*zXhtD! zEn#5_s1KkW*x6J{29TI1^7ZGs@^us0lr&M4AQYi|m=~Hj7_?l7QAG-w zv54&lfg9mi$=ZWBSj+`_GJRo^U~@t8gqmLL=4fDvU3D1`s92C-AY%4;?&BJr)Jh5|s3D*8|Di=N8I3omd-i?8tqp!by0w5c~=gc2|nwvHwB{_pQBDd4$QBzwZ zN-#wiCRICRL?7=qP=o?NC5v=%IPGE!{KTQ=S*a)eju3j?UJ^G1}T$I?!Tq^l+pHfWQ*AL`(MQ&dQ(GM|{JKy<3=!7&TZ3af z*JWsO1uRu8CrJbar6(a}I&rvWzEv!IbA!jp{Q>%P<+&S{Dq2Vz`UUt87;Z_Qx{>__ zCCX2AAQviqgbBXiS+m~9;v&+WpDmCujoZhoa#{t zrrOgTRW~jvKfR5ud@x>4IArEf`Df-ebOhxG9u{HwKVfp3Aol`<-}@lsQxC;4UwwYf z1kHD~TqAv7yJR&zLLvKjuFuK&;N5leBRl1S#Ayfc6H$k-JciPnVDNL^{N{vTq$?*m zoa?5I+Xw!LIN}&gpKt?jzSp;ePQHW&a3w}yw?lR3l&Yk+)>ND#TAT!md5bM3&o`O4 z&>2``?64_RY!i3M@fWGisXNlkR=M8+B1mh033hjrNt9xZ6=PLm%lWAp2}l#gQ)I-5 z3kqUN_iG?;hdce_m%1;VDq3C|TEch}kC%3ka@)7Hx1P5yuW~j{Hh%X~xcdDW{hxCI zjCHcqsuDAal8wLh;dk`w&4Xdu%a)!7U?IJdJZb%LrN!--BUopo5e#mZx=q-5f`UsF z(%7e+DLygV+l9T9OISH2l!f5 zv1YVy*VQ#w!MC=$Cypcg>y$( zQaEr4@{b-&Bf?bk3eQQKs;WOCEB5(1f~Almk_7ZhRV&4*9TKZ(l@7C<4;3{=p@B4+ ziG(F}IBA8hC463W$!u>|y8-3_Bv10vXr%)rjR0o|~P#JYzw{Apg%p-t({hpiL$hm?(MK?kJYW z*WdeXV=P-u7~MQ`__=kg_xwR;o#vMahEE6%tqTbnUysO8C=)hGwMZHRjWMv$VRgs^ z=-n<1e|JCyE^ZT2L~LYvtV?O^25h`Snlh!ezlM~K`^+(P|IBx)Avff*FlL0y(v78o zqi|aisB1g?T?x|`pQA<8l@GWVT$S)ENXa@k(SR-%lTo0PJvLsR zMdr-@HfEOfM?T9Oud+RS?Wff`Yk$`Zd>jS2-Q2hVu2sThxReT#rw)~8ua9@=X$=Fs z0UG=jt)xDcBZ~N3!l2$;bqloqreFj-6k%*jA4!kF%gpIL7}gWl-sz-6mVsTJDg|zP ztm-kogwvXd7<||wA`c33G7^U_k8}z?gWIUYjJRS&oalLOism>D!hmM`+m0Q*;6j&? z4@dPSV4MNDkTrTiB=k-Z4mglUj^%;f*Qr}U=k=hZE6&Q9h8|z*=Lw|l??-LS%5Y9# zj{IB{VlS~aYP*ZJ>>DODr51-;;%@UY<&iS}O@cCF@TQgv(Lr@5aW`sQUC~Z|VK;Vq z#&)Ho7HBjBW5TF&{}*r3s$JbO!gb;g<6x^GZz_{__kCHVdQxBg(CSswIgVPlYGK=g z+wlU^;YA~ox5@qei|cAAqKOLTkB8$e8-i1uFSrX8Ec$Om=fk#6_g05|r~{0=bNvwi z6x>BnR5ydy-~h(VhwqDmrA(~G(GWAZcK%iBO#tN+;Vtdf2wwOz0c8NKWL_6dd@DBK z{MBPk>=VH=-x<>V$;TQib_chI<%fM(FnJ{d;5CtM3>P{@H{d^U`M1P(HS9D$+sXj= z#0YyJCNSvV62KS~^d{i4F*{F^@T(ak;@H{l*gY@%49=0H+C)4tQvNRnN;_Mh0!KJ! z_*c%}KB90#wRJsAer6tp&#HhN@7_^Us8b9W99rdeXG|-1S&le~{f< zL&1h$Pnzh#z0C-AVCQLDF%MO$?9jpkbwx$-vapj|`XM@^^@hC3S0u%fW!jA5dyg%NqXrg?yxkn*4;BfKrU|kO+Sw3?&gd&A++M z|0CMLhdf8ui6hEadX(R>R2barFWNbigu5`sZTWlCa){! z>h*W?A>4~4s2y0~S8C^%rgi3X{YY``w1oPF9NvFt!7N&Mx~^EnM7g zza?cK_-e6x^w|a`_a;cHbQ0`57io>8(&xNV)$mQNJ8NAwkuh=JmQ;d#kXWJ1Z1sMM z^PRut6A9dW=eH)+-b4hgm*?=l?`Ct*p@k%;?T>K=IB!lunZw^PzCY0lmJ&R{7+$>Lu?L(bMW(onK2W8a(*pU;Clwy(BfZt%sus`1}03F_AWj_PYBmvK( zSp?@bHgC&Ve@->970oXO@vRYhS5X%0>ubru$T88!5sS`B8MyNbhCbqm0eyAJ=^T9q zi4iESm=cfd*;zg7bk8vqYmaxe3geno)MLx2+}d;YVCm>x)y8QnWwt5$>@N$d$_BRj zPU8Nul&K~3{wba4DR6zZUttiIZal_noQ&9ke}apJe;5C8q_jE(|Enu)FCQ`J#Xa2G zh{HoH=v*@|+zQ2G<(LhHv@MlL?G41Iyb~uX#y@@bu^QJsX89??@$)lFs17V>)$qAF z+Ur%aguF+qtrsOpqK#v*#%^_6!)S`4mRMr87B3CcR{f6ge$a*!1TRJ*nRX6B^5#@%UEQ+OQC##o5YgQd5uN$;&PB z{AtxOoD-}PC&?ekn&lywo2)8UJq?=AGUQ3rp2j5VpAZKdB8?^`D165Ar;ix4o+USt zU2BqMP;K&G);GBsC65?Q(Xe(%^Nxw5V?l0y6>)X%ZrO@#5D{)JYYUy3O)#0#C&})H zljiZmJSs43dYHd;)P%NY4Y_wb%5ujSBHoOzea&)kc}U0TUu@`7UPy6*@s!_3g{&p!HSpvPXZmLmQ$VXxbC4y@-K<{;7`6}Z&VaOvOL zqc6^2c&}!KcHIiU#wjdJq`7Ilmzl_I%e5q!*}G7&V~;0;Q5e^Ujx4n@YfHRrn=);g z33Sn`SM>iNK@o#G$8?CUm#?7bIj!;GOF9N8H>cv7W80CC#Qkh)z5L|$Xo~pokeD`R zglCBOM&$+Kq8hz^P&FpuE{%mv6W{6cr?DawGj>X-Il{-m0!COw8u%F8AtyfM1>_WQ z-CbN31|$B&CPa%uF+Sm8D&2#y-no&jSpn2g=!1{-@E5GQiBHu%uf&l~k^G=dSSF@$ z6b2kq+eYNh1!gyS)&ueWN`*VZV_)QB^_B9^7Wx>BZ&l<~H&agMnm?b$htQ4c zZ~v_Lo~{PX?YiPfG!E+a4oqKOeOO*+LAv4rp;vGIf7}#nH5K? zw;=VcD7^2U(3$!OI@JF{fx)O%j!CW0E2+s+*WkXkT;3O}%c}x+R4<}Lj2=omtX`I7 z#`pqT`w6`cIrhiY8lA&$=I;e+ViU8>VSr-G4pw!>i z6ie9-%dbrfK#J_6E_Z`7g79KUNVPBZ5LG_s;x1pSxjr`X^2emm>2PSng|(b_{EGyNwuD2fPFl-ef@NJ zgJ62N=HDr~NndKYi7B|G!=M`LP~~;GXozeZm*!Rmp}54O;VS-mp-=SmdF*SoV%k!s ze)PbOmNJw2MRJjv9`KxshM|djzsh3z(qTG>aNH?EsX68A!Z?*M28X#|IwMP|rk)=c zJxZ6Bl@2f;b(xmidLdBS)ipDcrqSGuh$1dLOJd38v}b3v)3-X!JYTEO{a}}M7jpPD zq=oi3lWgl{D|`tqWeDFjo!cZ3NyY-!a?N4yw4q*bc3GtVWhs45N>y>S5i`F&$FAj- zV;6=bD5i4|7W8($2>5vqdJ$L;I?S8$eYufzSgLEU0Tg5A4{TAtOWT$yP)vuch&1@l z`2kn-1Bf)3FVBy|Mc^cMS5JB=MGC>|>X^PhiVU?{W0quN zcGU>sU>2`FqhD)@t(_)`K8qZa2B8>nOcKzyKZzlRx%V1X#z9eyN?x*`G0PnAZP%1j zu_CcFL{%9}TsEbgF;CZy5v95pZ8n!Og~f22eG`X2VgR|j6!8HIn}tU;x#x0yNVM$ zZ7S}+TlE``-n$pf0=aKzfa1#-Xb1U~_d7}bOqBfGg${eISEmE)0wI{AZ$44w09|r; z8qUMqDAo?8bf7)~*X|+xp~}-xo3Fb3rBE5OLKd30NJPFpw2W6E%Ytat>D`2GL{pYJ z!Kv?84yk6gvJ&KYWciRM;bc8{t`B3wDQ|br>-)n9WV;{RPq*Lyy4UXPUXTBDi%hU55^*XF+|M^G3 zZ=3{et`B+{sho013_wZHgGWX8`*h)_E8ZqrwmNbw*2OOKK&%nW{Kvl|EYMET5_NUU zdWyL;C)NH#yTnVjE=7&RRxI+ocDynpgPg_A=HVqwAFo|MM5MaMWyW&K?pl%pQPpp2 zt&xqcr!|DHr4r2R#mEnOp`dap9rf~KlANas-K?m;t(lowT_-LPex~fyq5gg4T{oq! zo6=Zgzy_?LDUVy2JrX7Vx+SUE_=CnW7Uy)VzI>E-A$;Ri_e}o)=4Kj!E`0f**UiQx zd%6mcl9Ez_V&ulL$qJzH#QL0OOXNY_UsJTZhOOY#M&q*CR`VE09q5zUsN1N4TQuVE3;N?!~Nv{;q&KVhMAOERY-Rs ztNu`TzN8ebAUKJzZiI**4L?!__k!V#^c5?hL|NA-m+*mYfat=^7D8MY?ooUR2F3Q` zgEYm1zMHR@lou-z;Bri80@k8pZ4nLXzkfQ(pR)@l*LlwaVgemdiZu=54c(8i;H zZR3pYG4sEI_Qon?;A)`hYCv_|@%2ZRfnj}fazp~gon&hZvfy)H$^0f6#%?sUS-x4x zjs7Y_IgM~8vltit{S--W$>n7XS$axCzB>QRb+!%Kzit9kazFk_vn6Q+0UV}>{G`c1 zp!W3+LV1GMKg;px5(&?JfO9I4)UGyYf9++YWedcodOkaRyn z8UDPY)s(IGGA5!9rLwML^e|I_ZfqiSGPv6<7sln=8TGxuuUxx5vLX_2SMs4 z)v3pFBX8EAn8sefO`-QypGzl-t1z^(Gu!rj)pyXZn@9N&Xp7a(PfoGX0}^t`Vq3Kt zEU>b2x*~u14+L@A)B*U!(ARaJocBs|Md3GY99TDW7Q0-22OwT&8V#Ouxpw%uM>sS!%ksPcT3~~HXs!mSrKg4#G6Dbb+w2~oDvj0Zr*PCa z0e?ZG&z`q+EsNqBRTRlYmM~c*G!8$-Wr3=kKG61Bksa8W*jCk1cH}vAyZz0e7Thg*>=TVjj>tiE2ak{F()}({6;?ulWYF4u-hJoCH?m;Sj$`tN z=ZG^Q%bGu#FjZ9;R1kY@Q0{-=1y<@oXZd{xgksA_E$_Y6dwV;-)|vDt`SewFkn{5g zG-$&{{g@-81BaO>yvn%yUCEuF?8dg~JYy`HN`-xXn;+joTex_QJg{IZ77+>hV-h5w z7w;Kd<`NaK+M?ka899(0trIg*9xh(|)U+uSp-K^~5Cnz)75B!69dYX|_~Dn;tOesL zeOa*(61j!-_ZAJoX0o+Xa{nVXcqH_?6!CQnO8uTuv}U_1Wr0arS*~`Wu-KDQopq!a zh4uzkfpN@2h@`76nm~qevkaRzw$6=QIVj=vLkrwyTPA!=11=}++z`r#4)I?HKtw#t zEzfgQq;xe?V4c0Zmds4LcPwMC(r!S2u~_Ul;wP4JKspVtU-(U&{z@VDi#k_HLww70aR>)t;t1h( z>_S4L%gM@AWBRD*jXstuF#odt%24Y-?AuILWz4J4nApA;lDum<L63<(nvk(Pa`sxEE~ z%4%($a)k6XsE+Wh6lDE87Y^CssU=D%TfQ&>Ny3%aiTJL}2uH`7S+iFLZ~aj^Vi2+1 zK3=SqBSmkxpfM4Rlfh8~q_u3RzE zs=%OrB@j^0_CDNfP{PD-a>= zzVaBjar_lXIUb8)=Cxc>?$n=9pfbYWXnF?1%CVt3n2m{YfcQzfTK2`A|9Fw-1wFS1 z{QH*uu&QAqa$G+~ENLmB?#Fkk>%Ct0!I6psAqhH>pV?XgT0|3?ozxh;=ev0*#uF_I z0QB?pUhl0pz4zF^>JNQ*B$Cd9lnjb)>_aIs8m6XuaGcAiJUh4#(VlJV=SMolB}|oI z9Hhb|u@`AkkL)RXN2YI+re`^}mYll2rivv4VNZBj+OgZ7=De?qJ7Co!SR%yqRY`o1PVCpv&L%qoCQ~% z()%SHOTs?{Z2R$Lt9Do|3 zhZ09)x6_UV(b*_WXUYyQ?S)rHlNssYYmS;a{jUU`{p*yX zbuSHP9c^~dqU(fd1=}-omX*{L3nysodpP+y#Tr)6Z&q@(KBkyr6yVP!=@ML8&Cd`P zR4(7DA`w!S_2wq&p+*`%C#>49iZI5wC=Jv#(-z<4EoLm~Eux3U;z{;UT%#i0I=Y?9z6)CvjG9`A2I5p_sRQA3K>FoG^v8UJ6NaDkd z6QUji>anV}O6_t6kva0}wp%h(!G9wB1&>LO%*;4u+u{zdPZTzhqg`W&U~cj^=;tu>ru!QndhHoL-adg#nAf}sf?X2(S z+?NdR7Pmu_ZAicurCKH?B!EE)UR94IOUYK8SGAB+t8=NEA~{q@qoyA`qg>HT(Nyvq zzKW+*r{3ml+tL3ys8r^z&c$7{op$&aG5eBpvK*ZDfZx8^%4T=lM3-RMCWup>Ebx-J z3F9JVp&OGcJeh)s$Vks%I~r}_5B+vb*NF_9;<_Ktn8VLDw~seBRsPguMeAuy4|*i# zs3%yj)2n{!AzC#kbt$uh8wybJ6kLmmBfiiQQ8C>F;SHyZXAIbg(`maWP|8Glz4f>1 zjYOs@6^D>)ZzO#*8+q>+1l%@P=&l*o6nN_1pR~HmXm$g;o>v2 z+E}jln9E_7HDqGc?wS{T2HaA}heukcMnW64Z?XQ#(do+KbkmOANfX%Ou1ee27(FU= z^Q8R**D&7<>0wOBRwb%=ZY#Xc{sE9R%{JMdgZ)P3{;H)OxPHjwyERPJ9@YVA+y z)_jOHcr741KHVMfo##qZpou4dL}{2aK7G&0@_H?h4~G87Ll|WTv0b&twAM6M8sV%c;aFx#4hkBUS&x% zLirH#PY|kMQMkuKMda6H^za|9uE-Dm-m~KfMD`d-HcF_(aYKlCe@TFaqg1-P>`S%` zp4z*ZHmvp!m<4`OZ~vyOVxQn$;BP{~;FGe_Vy*oqR*f|22{^AMD#)}&^?ppA@PjL5m+eTW8cS4?`{T^@=Y#_i-8By38H#}CX`t<| zHq)Pg*Cx7Mar>O@7K>RI2_JmPa~&aS?U3uW226?Z>0)U@U-g2cqJfXxbrjahx&If@ z0XW79ilaR$;Qckp>w{v?_sD!_ps0YcDLi*en9@oQ3TwyM%IL)Aa7qlk`#I%OG2l%O z5g$d(FUWcD+pkip{Ru5ZgB-9j^6w@`A9MrPZdCCMu(UcG%{s}*sDN&9+wvCgCEYd)kHZY ztGQri7D$*Tnv`K6rnNV1!-AQDWHWw)Z@8&o|ET+>y7}qe2bAL3bk}+QBV~ZGB|c@g z8fUBCVR--RB_W8MUWQl_{K0rKX@UJK)U6jv>F8_(I3=slRig73t~^qf1cl|H`zKuP zVv6KbLQgviCL^CjjD4&HQ;UucrgXhDc%z^Epl~V&dVR(st1ND*c#0yOG(|oK6C5;rz1{%ls-2m56EY?AfW_HUgE^+tp^N)I|G6yv$QF zO;LqJcwVc$@Fw2c;0&^<_L|>N)x#E!_j&3EZ;z`Q|A%Y@myK>P$Y`CDCG##&nNloz zPzLgjN7;KFrnMd?v1d}&bF&?LUF)mnBZu3d7JY*^(ttjHDs$TFn`zkNm@SIb+&lq3 z$4p99ZF!P>zmapD=`(pE*cz226vt$&n$8RA6?JZ*HAHk|8K9ttm5Q;%1i;q(E5#18 zM5R0d4DoUdd0EYy1=Av?+$&eYJNTuvDg5{-ZeyRcCPg6NTpIyQSGu$g6LK*vu`0|E zyYt&Y{GuPm{DDxKo3l8}G)K-mXO@meJq87x5?LHKrjJX+JO67gdZ?mf7j70^_`?m0 zG?O(V)J5MMcS8|kQa8mH+uvcy=VgE4dxeqtn;$37KK}Mkc!AzJ*^=~^fVNr(RDviY zVK>8H6aO(4OVJac(*$-!SL?k+TvAdMa4IU%rOI-`X8zLU;2-~5pr#*3>6tml(B|31 zHpXbE@)Z*Hj)QkP1Yb`uLsD~VVBY(%-mxCRoI;g-_5Bgyv3b_;7>IpV@o4pf z1l{tjh2y!*Im?^SED&1Y1rZB`!I(;mxE83g)Ob_bt+h+8use7CRe{vw1^!BEcWDIUj+YNEzX(M{^tS*0fu+odGeM2a$WUMiv(&6Cbqi(b9u!kP zkJi$~k@#lgXvJ`g6jq1dIT(3AaG)PLi^c5ZB`&oztw~>+KUDdpPu@MNaRA$$3)LE6 z!39o?GNdA*D86v}3#Up&-+N6zioSXZn>!-+RT;y;K1$nIr-W{bQ{Oik;$SW4m~gd7 zEZ75_fTbmOOiNUf8oR992sXC4MM{?$q$UOJIty_J>f{45PaKC2$PG~3&TUvc9nn8n z9xpO!PJZJ*j>7KR6Hbk#a;)9BdkbFvx$P=++Gp={kg(%UhNwp{VP7C9E{AoICnXng z9bL`Jq3^TnxGak24qc40dHDdPE?=CuR<+UPVlAMs5{Al+@T(qw$XXE(-zog~POPbu z8Dc+YF%vm*aQ-&;ter^uoE>7F{Q3KgYUp^{ulj*&zl{2*)u1|f3!ai0Tp0~pB|9|Y z^kG%=!vnJ1!sE6zb6a{jrYSp1WS|jGuDZey9rA60$~22$N~xF}B$C(_K+>ZXnEHZL z2m9lzD{|=drVVG>h!xfeSD z;=UCTu4;PER!;t#zM_PMyja*{VS~cY5>Z5;=qGO+=hy;2&8Yp#yhZ!iraCDYnexOP z58d#m)uhdQ*g&~q$mhl}2{AfC=`FdwL>rZJFY_-iNWE%M=Vg}QWcd(Ue1i7~8>WSS z+rK?G{$~j)Iu~p4GJ!#6y4*a7HUIj0t3$(X$&>{bcK8|OH)rdJAYdvs_J|O zlAY?DG{?eUgwANma&jSq2T6Ttgar4adW zZ6srkiWF=HI7aP;Z)*+|99@M<^e9JJp-AM!nyJvh&lUKofTKYnGfEv~AQx)VETdmZ z3B3{0!uUFqygX;>jOtgJnqS3ImP8T;EmPyBu(k$mZTqDF4Re&Zp~a`WN_{()h`JQS zMgaAy2}^!sR{h72Lp?_nVm;-<)G;9qQ?%ti%f<7ZSEPF2*AAx)?quD7=--b#*Amva zqj2HqgV5qcZ1p$jyx-z_5(pDpxL^7Tot73WQm=z~=q z+r%~We}d!)NwBP=K*xtv?_ubVG;}f11ENpyApLZH0lh2}OxopINYi={>@!C&74EZy zYPC+ByVqzPT|i5M{?$g^^mC<}P19!*4yK^*vTft{rb4J+?!-CCNJc z0t2eH0-O|5M9*l$UkLMdh+*GE3Rp6>R!5Q%FZCIgWfsbD*-mJ4pf@_O)Dasmj#B4! z9T>*G>pVK{{^1}#5hkYk3)5E-)f<{^B~ZdJQlFzJw}`gn0OU+AHypeV`oO?ujyg-uaC27@K*H^ga-D{I6)@0E6IXeoQxfu1?qSx8}oU7NyD zum~h`08i_3)-y{w=qRe2)-FF5d&kVA%@XQBb9#E>BU|pVmNnw`NT~&97Ot|ZJvi+M z_&U?0l%1XkvWKj$6frPA?F9MZ%EDIeB_LUGgv}D*0y^q9W`$4}WI>a$IO8Q%>kP#M zx^dsciPCYK%TEhN(RRuAR3EJM)msV5Bls|7friQaux;#!5mQ>O^PxGl&W1WxG$pKo z)VxL!Eh9&FMN=EjPuXK~Y?>&W9ipSwr>z&O2_<(F#1_8_X)Q+FBbtewxaArA+Hew> zwFj`ZO31w}77?~P(&gp;g5ZI;3t3ArKtqh^3$!p6b%xrsB+84QftRZ_)PB*-V0HWPCM! zuj~k}3L?7(RL~u_*U8#b-vWk841fLur@-duUjL_6L61v{7(Mly@KvAowV`qMN&x{u z|03OT7pr}tj^VW@Jc>U>-gVt|Dk>|B+=NC;L0oHm5{Szu)MdXuu(%iaysvOe4uW~KLpJ07mG__w5PA=qMa%HvAnt2}+xF15a5!WZS!U?9fTO{H z`+^^}UhW9w{yWyMS42ND3jnqbOEasGDlfC!+@n&3d75za94?7`AwR8#&qS2%6YJe3PSrBuG)QCt+OrmvxZ_$1~igf9e)?NPohGPtjF` zoR!1Hy5Y6|?|+$-8bGMUWROYABOIz#wLm;Oq>Kf2w8e0?N;|*)o#^eaiImdsgqzr8 zWSN3w4{Ff^|Na{v)aJB_+!Npqc&vJ(IR-%vL4!{>WzVvGr|c`RvGvkI>I1&59t-aB zf165p>A{W;ON4|#Ix;6F~~M81{wg(LcN;RW0s|U6BdHwb;>m@39!;Sd~=A^;L*FbP`z%vK^@p zLJ0Y%jKZKpyDLJo|1BPwh>AL}hTx!I1Q2597%CR|iY9^`?fc&m_;c<-!JUJDi9_aD zfRNq1FFF?zr?BWYGV1ZPS8b~atk)nDGq3yazkj}6{J{%uy#@e$9PPbxL^7bKIizD# zg*;q&Y*4}9_vvxo<%nOz(Rk(ufO!Ib``XB#Tx6(7j>eh}5_I&v2z#o@x1`RoSx&gD5Pp5AJ4rY%?s*zi?Ix)FURnF_ga-DOAD6im~1z`M=C{LUyFWT%JI zz;>JQb)UVzf+Ql`tzms_%fF_G^!=xIPnUFn08y8biYrp9{~bJmAg*TrU)Hy=s7g}R zO4yYDo22V*PPkzbH1cKFL;tNy-)N^HGSBOMd^?Y_3A_6c>8JGn=&-f1rB68BJYtk1 zQj0B{8jKwi31Qmac=g>W#0?blU0AT}M)DqmR1mh@nbLRW;87r+^*?zV?8T#dk;qwF z`-9W3_p$WApMVy7IOcz24XhafY<`pU69LXGGlsYTC#BeL5c+vJR)7B=@go$pzmrr3 z*SGUcW`=2T#O%PyGQ&gADg)wS^qxUx)q$!a!&?_}1;Z zGwvJvKUEp*mo6f2ysgi42_R%MXXKywNR*UKy&RU+G4PO~}QfF$vbkS(m$ zAK?mRO;xw*{>P`7xJ@u#8Ho2nD&S6d?N5L5>dUZ$ZZzz>$dUeh3CW!31{l`{Sx&BG zG(f8=4js-6ZHT8Uysv4_;j!E!U#<_Rt!$-HE@RIhxS)MsawigFQWJ2gSZ`;H+;htx zcza%e8{CHQz8#2w`uMrqJHXZ9VkSm2|Nny|XAkY1S2-J=&Q=rz(*IvBfb@RstaG`5 zOW7LiKUK0|Vc{}>r37bA(>}-SJJ>;VxC{+^@FZ05(d`kEf<}J4NrN2-A-bDv(EWx8 zx?&pFo{PTd-H|B!8)-1^Ti!d9%ecxOPP;>fKl=X)=gJB6U+f&Vkd2ml&)SuAe}ZX9 zfBWmR_e|^w2e+ZxC#op`V0fncPbX|jnE;~MKB4K={3O9foo+$y8#CJ+U@2&bk7s)^m14p2dFjdGe>urD zh`)%!j{XYaA^NBanLy7}v&wjeXx@%VaJ$2ZvJHmlasHT6%4#`1B-iu(#6r1tqd7bi z-@2qWrausFthB#J@q*q@tlD)`l-n@5?lbh<2kL6u{^a(!g*PR9;Qk^ENJ60a?*uNT zbkJu9rxv~zgztO4PlE6md@bLvB9f$6RM~g&{>ZobLX&WIG@jA@@SKX;)S$PJk^3~U3x6|w z?!ar96eTnPU4G{eJUohvH2mzMcLgXW{ckTq6VcHs&B z39n8DA;x=L9kt8%ZhQ%p(S6g+E=UUy^}e^9^sB_qmrjKhN&>?D9~BwldLp{xpPYLr zQ4b2D>E1{Ggs6)Y`NAaGYl9_)#nnUAUQ@NpNn1L@9L#sYX9QDk$kzt%S_*6KhnFw6 z+HdYVa>D^~D6a@JPRk;$#Ns;(#rp9Vfj8F z))MAwS?B+Bw&YI_*i4Lo#sBkj4rJdK@46+@C7^Jq;yMr7Q$TzpQbh~08~jpc*d>ZU z0feIa4_c@7=)f$yZ`48Xj(-m_8CL7zDILeq zWJWjU@!N#TD~)n@z(a5Q+X51Da8Ik!e|MBmn?}MN!afw>aWte90vmPju<^@rQ#6c) z=j=#y13MVT1L+NFY0d*#>eikDye=hsb&oJs{ zU3aWo^fL*dDobJiAJk9(^?tX<&~IFOo$LQM1sky*c^P>QVayy!`uEAP7ynBXmA_aX zo7mAsO6q{`oBwj@e{Qy0aP74ayRYSfpk7}tR+b?51fbh(Hil?qAAj zyP*FVqzeW+v&79kjaGDduQ}*^Wb27P73n&cx`d{QN0Wo{`Eu2|(%fL-;yv`NG>#`msm(SxJ)cJn7)233z&%RJdzp2#rrq)bWB z=cs!*1oKC5it%)8suWc8M&r287ajU@_ohP3kz?eU)4+PN&DmU|)6alBy;i>i27qRubUKEH$^?pVqIVgU3&(F?Q zV<+DARt8E-tatS{?R;)?d@ft12F>i+>HWjQOMZ*Fe;+mob1x5K?JBDh%5OmOcjos~ z3@5wKdm{uBzN_SCAZ}$B{Wj;dr+4_5GOue8B9EVgz~>Og?K5*wm*YIG{wxEc31Rzo zMgq&lI3$_>)3?dM#jE%U2fH6aVQ6fB2fk=5N2O-_Y)3jH51x_`S$%khhXq}9G7v>&H1>OqytE4^}_U@cV|?8{|* z`@LMXrY)5lw=8mxTA{~clcC!MUcfm*k>TUQ-NiSRpfAU-!#swaZXffWlNDOGOx)Kl zquJaie)vP0rVlHDKEt^@uNde(Ik@a+f!g8|o^R$21wC=dJ1*lo&eA$RIXX(){oM3l zv3YT(TmWUHJ%3C%CqK9YK=9;Ug6OE`@PdE*`&o770pdJA8Mai6wqgBqLDqvLXT!7z z+6es1|7yN=*F@rb7eRed#kB4zkS%&GciZt#XtKL@uqOFa2zu^|xBE+a^R(X~kKx@# zOM@HYhJ20B1!A_zLr_ikCi>dN>_jZ7W8T%qm$SG!FGt9Qr~@gNG{m*v9eH*d6ikx$ z6DN2~+hs?(2vWx@E+{CV#}}{wNqxT#NxfS8@701Gle^C*keltjb}XWMKUwqi)8>tO z=G^PgkrMM*5+Q@6a!%A6ug+rAWW4y$oMX z)+V$Flp7jVM8+3#Yj1NrbXO{^6LPvjyr^q!R=$lO)TT)ey#6qn=6!p)7=3)pp33t7 z2io`^s0`&}T>ttX*27wD%d!kB{S-A>Rf~YCwnhEK)>GYnw%@E@F)g(vn~WP=B>tyh z4oa{mAmWy2ti^Vs`7d-Ugay7Ebr(ceCa)cM{~uLv8Px{UMGFUq7I!J`#ogVCdx7Ha z?oKJiA-KC1FHqdwp%izw;sgnrn?CQo-&)_VtmIeb%#nTe*)wC{viMR1@sEijd}|DH znd-EIzy&xxpPwC{BWZwD|4WDld18vd>=RS*^qSiK5NLu>Kvel4k_79*t?P=OJ?&Kg zAVhwU+@cz@aT)8nx7D2w+~i!$Ulwu^Je4(hhVyRdx*ytf^!{nd7Ms@@zG#Z*AktPh z0eLwrZVYPKUWPzDwSL;Emlncn`G#wM3u>z;A3X7UG5@a$(qluDC$R#5JrnLYcs2Rq zYFqjsHTXPBIcMFi%SA)r_uwoP)X9A-j5D~aty|0NS$ans_x46GAqP6Qktf0MhfRI%3o38kbF?AI8wpu#>g-PJd!QhSC3w`Elmq zU2oV$s3)lG{bTxLZ7%?#4oafOmP^t?IA-8<>(dSZH&?YExDc^uq@_ohAs*iJZ?E1jQ0?lPkdWDL9IE+nS&1Ltt-nPmzT&h?>Z*f1f$X& zbTjTC?T#&jCy!qsFrqD8Po`CnZQB15GF3zU;@QpFPI9aBiz{@3!rH8SzPo?#)=M-v zt?%~n;Vd}pl}=g7*1Eh-b#`wTPJ?_mPa~FtKaKVLmt(Ee9sv6qLnn2@ zuHIX2I(au5;at{4ola{kxU%HgFm!nwGzi=9N9M-QkJTVH(O`t0o1*X9Z;$^{am$Fo z&E*hN-o$0jlOkwS_Q%^Crk?Ri<9~luMQgRP&pliP*5q^$J*baw`sHu3n3?sZxWUD* z`*;5YS^x)ut7Y{E*#ED*txZZ&M)X{BTy!4rUI-JfsW4}h0CIX?W}HRG&oRz&If4sH z!5cc0Y^E*KJ6|9@O(3IxBEw!ih^E7Tk(kHW88Czh2y!zaVY^+pyvN50^mSGH4kHmf zy^&brzIE4W4*IgnG-ERGp09o(Az8 zW4T>amNb+y3+ZLlwns!hR}%UZspna2T< z!*c7_regcHGd5?l>TmW5ehGmz@nldu1oIdZ+yx{T>kMAJ40=xb{vHCk1v%f;7(T#G z^E^&eP3J%GzL}mb`E)iSh4AIPU_*~iGy4etbN5fe8>3;-Mj=8EB9m;j>zF;ygTHhk zOsYYQ*3UU#Pn!cHSdhqsIKM6X(i?X=#wO|*4W$w&F{v(p899I)Y#4a%AbSTL#~EB( z^VQ$iEV+(Augn`ZHdZ;p37#a`x|b(oS>Lrcel&Fo+%^&gm7gv@?Xmna0*Q9lA5eCK zH{DzB;DRT&wnPr_nU{V(igf{jFLOKwuj9OYZ!36E$Lj!ZQr_3|2*AY?Ll@fDdiaF& zxG2(L^?K1_6vWBqcYhq(+)?En(&K-ucnw;xW}bW^SBPlVnkKLDUkDve`Ui3c=Q7(L z{5vyt3DWc7dacPIWGxrnVnOLBM9E*@7XuAAUH(^Y`^;WPT3q(fTKW;3kBZ4#lj6$j z%t84^6FkmeMi%P=!-XCsnDj?VoqegLa{>6gO}*b7|`Wz#lP*OG5=r=;(8Uh&g*4?&c^}mX>!B^cFW}2-h!t# z&%O6D6(7Zn0-r)#UN2Z6!yC_rGKDQUUMOsO_c^}K#ZIq~;(6xzWxVUsjfW^ zc2kdrPaw;0aGM_EY{N6q;L;DAcv~D}E36?7c@MX0tVH?-_?$CP)~J8>IxY9Oe?A9$ zBV@h~Zn-=vZaLo-AIaPnnoAA)bAoPBL-ZQG8kjG%U7V;-P0i&`;_2^!UJs;pDfy4q z#R=;mUme*Bc0H}$sv)+$xt~~?nOAU_dsMiWsqk9#M?K`%0DJ;lrbgyy$zGv|ba+d2KpmmoC**fA(&P))8h2g?x{Z;^v`6*>lS{=oVr`qZJs$roW zkBxWCs`ihb&&B#Y%QXlaAM5pbR_*$l-#MLP+p!dGh7u@X&Pt<%DSnc~9!*%wnar8E z1iDX8W>Ok7{n~!)G?F@8?>X{U8FhaY&L835?{FtqUgBWKgoly9oaJ6vmFs8s;8v!u z4zt~80RqJy!!Y=qtu8m|q}46vM-y|>^Jh{RH3>N_kdtUAkzvD43r+=LVUw7LYMGE> z0hN_h6C;pMsBrji0TZSzZ0%Oe<_)S!cjdJmQU3P9IQl^*FMQ@3?}12Bvyce^`(7e? zZZZN^gI1TFU5{Q%DSA-4S7YtP-6D&D*p1mm)hmmsNI%Gbvw-=**!+2VqAk+eyAEkP z*sFV5nc8|gSvddnX+?*%^ly!Ug0r#Gqj`+pYerKaK?yjbO4n}&Z-4ygXQed^tyrGw z8xSU7->4@C4>(P2eqOoPVd78QqCBzB3kaR`^+7n`Q>N7q4A(Y%HKsm(HfTBCMaD!e zrwz!WT3K#EyRbOw<^3(AE{zGVnWG3WoQsq$y1irk)pA*GY7Mv60u5Id^7_YtsSo@v z0Qr;zOBBpV*{4s}W$dqH+DnA37ugCY(eeU3Oph6<6E&VT9zX zyx_--7~Or3ld-ie@Un(ODk6#%;LA6;$v;+m-z1cMeXx%`$ywu8+Le|i`29@Y_wcO{ zk=MbI(qBWuq0P$veK(eM(V1;%jzOp$T+_K|XtLXwiqI2}!OOYJst};Pte8YF+>~O% zP4XA1coL0=NH?jH97Sd2?d?7GyYDu3tBSAp=MHPlainW4js6c#=pXn)U`CU|XeJIl zJxJxT6Q!|~7miO)&9Aom4E#i`sdf&ALvACd!M!=HhFjds7P8Y6D+pe$VvxEhP? zaJ0GX{4-wp`{BBdWYvzT)h;o7=u3cEd^h{kVlY=*N1LM$!?+{&f$qU9>7B3Cy(O4k z-eUtfiEcT~CxJmVr zuKc>f22B6{{R=)W1|DBr(6O+@-QIdw=*1JgseG7W+f0mw)a4|PecKurDHMS7u@5HY zbNVPZa*L6l(?GG<@Z$3u>MvWO0a>itJ7>QDs>*G5?&U0o&;aZI9y141lc=(}Zu~yP z&SsssGd9{#`>?rNrJL)iVY$0lBjV2=g5A18(hpkx*Yaf14Rm+@n=^1rFkrXsUo!xk ztZ;^Cj`lcHLX`FA%}t{(`ues`PGuDpQKUj%YC1Y2n`Lx=lwlG+#|=s&O!Ti*Q!VBc-WIN=rGM*7>cbvScJAVERmc3zuu-n9Kp=!<}RfkY)ni zboYXN(tznf;8dKvMn@5r$-rPDa?h;XFlTai1Yo}Z97^s4(W`2_)qjh6Phf1tefuj3 zG7O={S~RZYksAa?RvfQZQ(50B>62Cyd9TSob z1HSpUvgLW==h8*bTsS23pYBI0qTp?~#Txw)`?@Y!OG{ek&TB;d7N^ptrqrKB1$M+n zb?GT7xJ>A*6wzj}f6a+cp-Iq44)go+o%HFK_S(HWziS_1>0h$Kj9sxKFyM9Q6Id>G6} zC*dW$Ot{+D6AVTTY#*PODE74*_fCM<@frUw_FDm?x99~mb;)R?Yk(_cZ1?Gxk3Adu zXyPrEG@ruIm5Dw97f1A;?N8>WR1Ai!_X7*f-AF^&kW`*gLuyYwyuIfZ7l-pi{B3M( zOxBtm&o;ZV7Z*RbcXZ5h*BH}MFe?BJ=?iSV!Zz;{5PHS=P}xx@$pyomDD?D@)_%0) z!l>h_YvZZo67f0^A|N0bc&%6}WpX0)Yz0f>74Wq*gXYP-8;aXnw$7=;pB~RK$^vU2 z+rj6M{hC)#0O}q3J_f=16hh{n%CUj*+RretrmVlxJ(JI@eDR(8?r~H9TO$9)m8%Z5 z@98C-olS`XSi`4;iXekk8XX<-Xq$OEfUzm7^s(Hi+W zYHvCcJrA6TrrBBgg#3uB?8&o~lB6akx`1e=V6iRn^TVa}>0(Xi>;2lx0b8)?R2ENl zje+7_xZU5=Q(Jrc7@mAg8IJoX7DX!$@|Y7gWV5r?X6_#+aL9*bp&=9@6w#5Pn3~vb zo4~H=GHg#TFAZbknGy0}B?eq7F0SOhZ%EmD?Ba7g9){&|v*7&k+?TTlq2uHDdm*v! zIEbKI(tNgeF1~lzi!H$)^o@MqNDX*z*Kq`wf)~4RlbJg#=anvmtS^p;v;U>}Ru@-6 zGu?6V`;SOqdmAKmDf5C6RrN)hx8FB90OC}*l-Q5a=VIateVE%#ix@D+bK12iIsE5* zM73~N2fbrc0K$xhEcy5l3gmi6%&m*{kv0b=@MyyacUY=KWKvSne<>M5>?Psp$?soS z+uBN~;})sUximBKHgoN8zc@w~A%}*zo1voSFkz2a4i1|VhL~oweGU4HepVfF{);gD zYh~rX!1lYf>3+MbbDxzV;0OS_pbl(L)tn1IKan+`pNpRT3fe2;dfZ&-EB+G^ANCj= zn3EcJIhd9|W1NxTB}`WBxS@0%P7cS;5eR?E+Ijh2=i~oUHLD6i=a%}6&Q>Qu$WC|P zKQHJu1kt2E+W~w${-CYywuUYeolN+XvNGCb_cN=fr)QWXCDi@ZaS;rc5-kPreOu~I zWA_INmHW>e!zl)Hu#>FD9^ab@BDvB7>|;;dqlsfL}8uVpW%lCCXZ-V3j zS1^HrfzTZr*^9D7cF0s7U^hb#Q6_-J&I!%vyR3%$84J-h+x^soiEh5tE6$FJDl&WJ z{U`M-5ANS;XV_6oZUM4~(j}&viGP5bou`Kra`oHx#b!s>e!w2Jhs7z?>)Tq-`h%G@ zgZ&Quk6_<#6{Z18dX0L#C*e4v>HqWRYsG-8h`s!SU~fSfKtItOre=g0xS>}J*HwHwSi6-nKyMmG zwr_xtk(sWj;PL6B{+5e!y%Ruz-;)$Bs;E#iWbOI1wfc$j$pcRv6YRbdI60c-)4${m z&Daq2N|Yha*k@$LQnpSd|HO--Dprl$FYg?j55vaGBuewS@PR#{?JRy1^D z1u)7af%sfEl+Y(@FOZ^E5RMueaq1|LuZaOLVY-w*o2XC@aRnL0Kl}w8TY2?nB4Dxw z?6)3W?|CyGq4~S&Y2I$ch^yyPV^bB|E$Qt5b_>c)Hd{i@@uMl7%U{2&u^Ss z135=xc+ILC3hXy*+D{q6ky%|7ihMzucd%MO0RDCHW5^i{Sr08viEL zak)COe1|mczN{c##6YP)mDH7Q!TR28x4Z14+RKw!s9AzMz1t!s)L&wExPZPFziMSQ z^xsC0Q@T(mh?VT@D&_eEV|Rb={A@o7tla?XDv2_W@MXlMzhrbcObeV#prmq$ z#hVm;qcdO!JBXe-S=ldwi zesWv`JFHnl`;Cy=T2`vSKnl#GYkj2vbzHMa5_xQnSRa^r+rjrXSwvscELZH7X%h{` z>`A8X{br-VYq7zzc7H9G=gBG4;3Cz(?lxKl&5|PYPUp8fnGpIh|8=f{KM9Y2OQn^| zZ=5!?am-dH*^y8uUQK-k>W{ebJ}L!!o*iUY^2A^*NK_vJ)Dh20&f>C#p+!5f0Nd&+hF9_hijtF(<!G{pU56kU2_rRJg!Zsnf2@vb&UDY z+Ha;o9?DWnXfG8NN_m{$nQB{;Z0EWqw__bT8XC7MO{3Lo4(SF(k1~YJ|bm0WoF9&u|A<{^_Ua)7t6Tpun z5tBTcRfHWcwfkakzQPvA@1qj-VpE+GhH`US((;lE+*-;~X(Fg(oMEA%lC0UjM8$Nm zrFwr0n>!Mf3rRc4SEtLS!^5tP5;)SbWevt_ies4bWrZ91XR+9WHgW^(WEkEdzwn+l{yl9rB*NM|6O9LA-!EKC$eTJ*NnRxK2cfshxGOt&T$F7mgFK)iDc|8) z#Kh_`*!}Gx{xqw+3U0gP+xt+H#qVFxbaD{`Zn{S7c%KuKTUzLmQdRMw_StUf@y$$S z()qKrBxh`#Kek7J0FTOTpVY@Yzqf@Z&bK=Y8Bq2L$eoH3^Y9NI5kd>fw%d15@uCUp znuGb-2s6#lQ}I|wPx!`REq+rh*Z$iR#E;6(tuOPb<%iT41MN>C-Jjs4Fh5;CMoAZk z4Fr~yfNh>yC;|sGjuRJxMg*wsVflcqDb5E57Dh~;e+Rsvi|Yc}&)FWXT$jiI&|OBn zOBV?;IQqXR$lwDRnn;bo(=^-}dQ0+-{K5GN#`W}@U^i%I4xmKD9}O)#Bbd&9XM}Ly zCN>$1D+8GT5Z`G&@GRIK`1qee&IT;xZgbJ}&hzg@n@c(!tHv8*XO3b>t(jC-?|$4L zX^q3@a3l4yqh7qdVXU+`lfxmR7C>7(Xy+qK{lo6|HvwyzlR4}0Z{QAD`8huqps4t` zIT)!IYe&`3|z7RC^13~smH z8?)AKYkbmsH}Q>oMQ-WLm=tvVzmoGk#(aRQqq5Z!#0CI=p7t=}zvRVtctgPJs0?{K zz1Y0`an$fP;#dQ38=Mm|w*vFqGuMV&fd(520HJvAb31a+g)_9`8W#)!CbT)N`FL@f3Gc3is_rmC&0){VLn5(U^-!XXAZcT`2 zHM!n42V8ghhX}%gH^5v$9WBHmTR9LB)~T#f%S++G&rI(jRWIMy*>`ut%!AsXuP$qW zK+8Avf-obe0GjLsm2Uz9#Cek~-U_Ys17(YmMUiE;^~ixY%cuhs(DSgUPkDKH84^9- zmqt(o^Uvn~_h+U{wT94URESrW9{Q|sjQrV$2*(~jVKO@9tikyT%}nTK>)h| z3LrBwGS-{tPTA(Vn*t@~eq|(;x_6)X*0+#T83*U^dn`i2k1zgGVaGL?KYPi>f9PAT zx1QbPjVwE)108m4!cV>NBSo}QsY({s&HeUvigACDS^M2YL5B-NzXVu*rqPVdAqwHg zejifby~hsrJSC)Tb}-goN;c+%!@@-U_j;ieyj0{J1}1Hk3wLxlpdnpFM&ib2Y;xLa z{9-mXpF5FtMq+dAk(J!}Ipo>sIRkj;bog}omda5qn?&V{NsHn!;L0QyY|9(&b=6zW zb{));ZFU;ubfvN&WLc8|uKsiSlv_n2bn@1T5YkRuFka6|D*uivgjOwsxL z^D1Bo?t7>%I)@=!cON+iOUAkI0Qi zRx0Mhd^d70^y+A(-t;kVS>yZfaTB)E^hidI)N8iKYbiuW*X?CE=n>}6%fCppwNWAl zpp*ghJIZ%S4==Aj^YhY*itnN5tf;W?D>QBdg@m9ZfrzW?uNl<4)i5scePp2e;r?70 zWA_I@=G}eHN?KxGk##q~LT+{sD8m9$ge)nO<`4gKP zFc~hHZ+K3LM7b_v#QlCyMT-^!P^qkSK_pFf52X_1J5y}=TX9J#U1VUj9uknq19|}X#h2SU0*3OkgRKvu6kp%uRw&81}~fW zeYIPtYOdrACs84B+J>4ERHF8|+Hg82=wj|4QA!rn+?51bw)^84Gc#&Fg&zn1G)q!Gj?HAA5R3A2$mq&DW zi$c4#=%T^cr*B9YfByXGe|vrYMM55Merv$QAgNw0Ibq+OaP8?I%3w=G?Ib-XhixJ@5xhJg<>FOU%sa zQQ@SaF!Jptl4D>qh|*J84#&g8FtV%q(6^7B*;y~LXY^2!Im9MjamkaW4#+hloZJa2 zS9h5miWPYNKvS1~;gT^;_C5X{of8p_=91}%%WK`|W;$DTA>U~4n>U}@eR94A`?+v! z*CFw{o+rEpPA(2^Oqo+`{4dnG|Da=PoHIyb=qTge%a3mhbLK= z-T*%OUj1a+S5Gt{CuNR@$F_*wS{AljUk)23TX_F{h}jS2P^@E~`wa-#n)hYy%x6u`8KDAkYZpg?G-#QnImpQT)?gNxNesDikICifkXAvRF=L>x7n zK-npsW{!}c;J;e&e1Bft(UEOKqhMTuA)~H_`@OcdR`*wTaq%}OkqPBrZ5$m-TUz+= z1HCnL9Q;R(tmWFz9q$E?g0jkJEr@93sfc;969pSF$CmyA-$1_G4oddMYbP1}OE5p; zmBL;dtEyt+Nce7cBFKv>?al}X*sq>n_xJY`l9QzmHPEyzX zXOCJ8QisvBgf%4I<{!($;eHz_5ACJ0+Y7|hqL5iyllPs_rikXG=&60t4fMux&;LKceCvQO>QiTXOpbnzrX{K;d&eU)nV%T=cY*Tdx=q7W}v>@fc1q@&5lJ5t6m~u;T^%v;PN~bo=Ir2 zLv@M7x%%@GFv7abQia)#fd7U6py=D9SGr=XR z5&N$EmlM2ij!^2fh+%$dNz>Rkc(e&Y!lV~E3VandgV)p3Lxtu%X#Pq{N|J;+%~$ad zaf;py4)f9RaY^h_-OErYxXf6mYgBZO=0i|kijtkOJ2UL?!ithcMw~Ib+NN~a>dw8m zaI(;&BaWh*N645Y*~2s!TRfh~By#zIa%T+B{6$4#w`4dqG`g&P zk1`DgkgQ^HNomFei*kJIBZ3|0PvU!0nhyRIB$RHfK3T%3IZDW#u=zu!+zh|JvQXs>yqdqwyhg&xAc{Bm|)c>+b23OkSxAxzbKm{Eg>wc~qMI*X0 zV1dOx>SpILjM3v?vk9<{jc!NSiiB7uHC=+3Bdj^+E7<+0VgC*vSG>Y_YIgz-91%|` z<_!Dw7Ql6Br2GxmW2xb$Hq)XEi7+``^{o}~hQ+1#qQNpg<_Dt+|B)d?tSWK{$V^q| zL=;0_OEn){^_@_XgsHX01~!unrjOi2^4je4Vy5@%4fKk7gi;3^=Yp3TC3sa)#mx%y z13owl{B%uw)lW8XF`yRvst;Nk2+OUOFouz?Vff(?c~e^KLyAVv1 zyUPg*(9h2h^$Qut!ka}7=#t&mIwglu@i5(-iz{E@hwI&G8{Mrnx_P9hq#nTtVvWIM z!2|;eaH+tJ;WKwGtd~rs)&P#G)8x(hw2x5mHJYIWBXNZ@nmv)!gjVlkgp@C7Q^=f(60Sr3t&JuNwpSqz88XcP6GA#j68PgY?uk)XOVZKdsT#%rP0X-5rV z#oxmqES~YrL%L0WNMO+23rHCJTT1w83s~>yFM>$lhS+-vD%2aoAOk`<3ZOREX?r}4 z{Mp)4DE4PUu^?gdP;;mbB~lL)Tkw-{3Gh?C-U;dZB9e^Z?o#}e9EE7PCk$1Bh6+($ zhbL77d~R2Ns@Sm69#j78jFmt65#tssU&_70drQz^vV0jOxZit9i2od>e21jd-ckM4wFcdfY~4Ex0gyHK z@9U>`_$tPO(ewk%tsT+p{^NSwBA;BwZ6xRDdNp~t!zlPjB=winnzSkBb>+490u+Xy z)V|nN*v`-de@Q^awad#;oFz@QFlve{^~OtD(U2J`R?HCTN;{~lGufe;Tm8IhulpF< zpCgpsU?)rI+x8AGo};DHXgtSv!lunlz&?+eaw)S-UC8FgWiP=b^@F=;nc6v`T`E8( z8CHH4V&0m5y_n}&#i$dl=P~mx`rW%xu|y6_0`>bdjesqdQmbK&w5=3XcD~3ugt@Ek zs*K8dcf9}|0r%CaA3i=r?sf0#?asL-iO|jrrb3yHG_XDv>|a&W#YOJcqX<(=e=^9^ABr6{x_MtH0lg%{$ySK{;I2~$5eNm0-r|Rn~j|Jdv1C< zsEcLh`Z+Dm!~UIRe$8PNY4CnoV*1TFRysSaIk$MM{??yAk_@>0dv{cN-^<%gKZ5xe zT#9BH+G`8-484>amDn>;p9Y4<4dtAk^{<%A1mj+_5r+=())$gIQLX_`KFB{* zyn*|jm|sb$zbWF5efUScXgTi`42>fesXqZ(-&RsKb|cn5)(}?l!~ageqcrS z@WA|wJWFuWSk|8#5PVYi(#TfUk_WUM<7 zrsRuKC~8$aw;}`8ezbUtePs6kmDHv>RmkoPyV8vYKf_iu>J}tn=Gp`02uY~A@zl3f(z?2+IP*=< zq5Yu7gdt#xrrUwWq>%7rr!|4*y;kOlQiAdr^+ZKYrt;8SYRY6r1Z2UI*%$9nq$B>_ z^YZDT26s_Lkz9KHZa5XbGK+lRk0>MYH`doZ#;>A~%Va#^&pqKk z3SHIC4|=?{ZlnjuAIrIJGTGT98j;}nneI>pEgM_$`)Z5fXEA5Lw_a!ODoS96WxOjY zJF%%$pdpsg(S{dM$D8H7a>OGo-^s838cahYgi8-M?W8To2~H;cKtHmz^1e5v?|~u` zn~>PV9T!>UUIW7~z$&w$AqD zHC=H(h(*SD01fnX!M5!YX?@isP;mv6y*N2LlWwH5owlE-GmfQB93_5Mpv zf|8^h6^zPrn2vPGn%5(o%jU1OPf_5Jm=NXe9 z!qLYp)cgeBaM?r*4bQf=RJ2gck3ZVNz4$!Y_U=d@7b{eHJu&!|g!S(ic&lK&54It; zl0l0%?o?x8B4f0MLr5{SQG2yVR+^#R{wcvJt4fgpvk=F^@R44Cz%z7o)O?59QfunV zq$38t`s;oU{D@3No!Qi9_u88rtfg6*6oc%Ezd9dR=0zjk6e_re@siS;LzSDR81|&J zYMf2`(Pq>%{7Fjf`F^`O(xLG*dBn2PiH*pCVyY@M-suJ`<-n&BY?ZVzcUR;T9eu7Z zv?N0aVY7$*?i(Syk-e18`EWwq8iZg^mOIz;B^Ff_qaX~0e2#{3UX&wwk{*2{NyHqB zDbK*;ldBU*f5e6DS&4p@uRWxHR!*IgSO{1OO#AS65|G*VLM@ct04(wa;cVWWoq#g= znnF{X(846Aw7NINw<|dhRo&2e)7$u_ELWzqt5=AN!Um=~fM+M}jBbKJy+_;`WR3bD z9F{_=tfkMh!d{}Z=(Mz>6qoJT(Rl_+2TzFjD&xYtA3|)wOyH}w<{oIpAq}k<@Uhqp zIPB~}4H*yQd6__hOgWdoA{E-O)p7S=^osRBG~cckI@&%ycS=oPC!>JcTnA}8e;%>q zZGjM#6_BzDLC_NP(rsz((BmqF2$Qzow&x=e-8jlK@JrJHq?@8FG{{G>P;IMqmobGO zCp&dmx7g4ax#)D3T0OW-p438K0lxQfDcOr}uIYibdiD=hi#vE(R+E`KOdj-^-`u;- z2=Ce=KgHWtl$ZFG!PSgoivRgE4P^O&D#A_(OAzrBRXEYBXq%PJYKRu9p&T~6bYn+) z+gU0W!l%3ED<2Ce#e8ylI>7F6e{O&Hih*0Elqne$Bw8$o8^d|{|Fi&chXX9+4bEHt zm`141Wi(0JnLm~}b2Huv+Tt2{7%D>BNagPH5B!1)v|ns%Oin7nuB@OE^C!4C^EuYk{JOMjnqF^(VVXcqMcpS8JQ;5mtJzrLand4w1v#!lwMev< z_`YC!F(hjQ3}dl`RK*>BhC15<0dF|_FQJpUsj9Qfk^v9Zg?`p#Q`y-l`*_&5jNHGx z3rY~irWEpI$XEIRqCC=aEq9X^*s(VSz?vzp;D1{1ShBY@~YJ?Pb zvTjp9XK{{0HY$|%=-F9;>p5?%MVNwR{wG|dA>5GJm=P{IHU8q`(U0O0-*P1Gk7rff9@6wlw^E>YD9!264F?o4PK#cJy{)F;(wJWzzvszNh)G0xGJR9%xZr4 z+wv8iqmBjs!v>7a=3H!&`X`EWtrumeWM*jAMR}X)#c4G+0Q7AH05+UM{9_kT{Web3 z{kaRO6m*2y{`)|-Gb_*Ma-`RYAutkl`ymKQ^IQnp^RjVw4}m(iwg;vSq0I{BleHv2 zWwh%T@5w{XT|0pW<~`7((t)JCe@PvN_MBSrtWQ3T;@44^Pr>(G1?Cd~U98(Z$NPoL z=H;F!4|ir$V&GD?&6!j+*#hr0t$hFK^)~3)9I^XMRife7Yi_e`gF$6uaLBnht+$3s znc7LaQ~ZFJD6m3Q<9~u%kR%RE84wZ-JF2 z8uaTA8$@c^coV5R#OBLomHa<)a&kySL`3ytn3$2$)Ss`Nccr2k5%nrkTEFJMu-B)_ zua5jVqVL`;dl_s*UgV?_Z1>Da(t(1kH1SnEQ zk=7`==I`UFcv>63a?Gsp3oPLdRGq1Oax1L28iG)0`BF6GIV@B0 z)`h4^R-trHft^0ul!B`g5yO0I)GDUMVGgXFILcL`zb298X^gJRjM+Q#$v9{E85(Np zZ$-guN1J-D^T=SheQUV5*IZulw?`Pk&6=W0H#n9)v*;14gj{VU%F^mD#t3K${*J6f z4ZzrHrGO2z`DUgB6J4fX+}y?BPz$ozs|kvSvLW0{1BDgk_bA;OeVx~@XKdC9LM)Na zjywx-?|fg+lfx!+grluUnQBgTFKG`lrtcqJ2`iIhPX@<{;5h>Jx z61mvCZp;?KCgo4YDg~Iw0278r2S(IC`gf50Soy6a>(qBty8#{04~em!A(}MfT%BFq z5fXNO_F;nxvyUD{oMHb7omMs*fd|RX7Z1Wxnuu;tFMk%n{(-MKV311qo2PnJV@>=sRK2)>NrN@;^BpVN2KR5;F;oQ-#BhpT_G4^k^)yV8 zvO?C0yk)D6%9RuvEZ|7YOnQF^j4k-pYOfYbIdR>@8$M@p2Zv+jiw;cw7`)K*p3Gs$ zv`Y+sG{h`f#-&z>3=OHY`&9I4-YyHDq=b@!ii()3C@3k407_t?B)SQ`n)>q~QXq3O zGQxe5mzTgqXq=VihSEj^P!Y9^wsyDI&=NzQ;iSHE*N_}}ptOR*J0uLUl8z3No*5uR z46-^*&rC#RMg8f@ORzPXc*9OGKT>b~@T2IUa7_?pNWq9bnv%Y8OKc$4045eZ%OPV7 z6_j*`9!F9uE-R~bh$ajzK;h@{1cPcJ(JAc|4o@0#(EG zv8yd0+i{y=&?5pz1`?_%OG-Yh{Je?FQ#>JMs_5>?S(&rf^8pD*mmyv^IhzboTUM_V z7tr`%W!8y~zI1$^OE4TPiXhPFrPr!~!2gN3n%QD4DDq%@e>qlgTWJum(NrDeL&UT1 zdbuE1Xz@bbpFZ&tk*>~TFB)@+v3rW1i~%0T=kkBiNON+c1LgUmU>*NnMB}!AA4`y^ z4?0Z=a}Y=DvwZ~T>nlIzp@+7x(q|OjK0&i8w&_i8_{gH;7Aziml8s`zFUmS2dR$yPOH6z-(Dih)| zOTfzLtMtJ6!LDa{B1=8!j^FbKr&7DhV^w|uJc0WD@m>M1H?%X-barW-0=_ zQAJ@IO4J?p2AaciHRi7zn*0FpbxUae>UznEMPlLk_mjRXkS{2O#OdUmlQj${#*S%?0Vpu+1WSvH;lR>|z zSFL(=XABQ7aZ`3WeYWO06U zUAirQy?gBgmA93Yl?`h#$f$>wJi1nrliD6KH+!Ew7otl-wh-7!;j6Y+dp&5l7bf$L zcpd<@4Zmd}4Aucbsf@ zz(30MCWD(pYJg4_w6tl5(j`mSLd)!-*dFV1f7xJ}$sN+CA^@#YbZ(`5ko@`UhrAk` zaFaiNXGx}%%`v8a`bEf}@q5b6z=VU{V56i&XQwD|n6&V3y3EZjBEKwPW6zL*$E*uJZPUxI;@x4F% zC=u>@OZeaG(si#9&hg8NqV>%*&B1=_bdAqH6CVkxdE@f_@skEJv7PL;Sf_7wq0z6j z%mHV-Q2UGBZyu#<`n_WS+#zi(`=*E(42ApRaqH6NTkNa51*23QGMBmd@x(agDemZ! zPdRJ<+>cV;7u6lB6armYBA`5FRRp;rq;^ZXl^f#Dm`Ntt-g1^zx0$TGPjp zOt>W}{Q5oPPgIXBsD5yxDXFOAh>Po2l*|%-(uxt3j5^R7bN4xX6M#P`CM^00mW6hj zk_b~escLS4h(v6u0`Iz_3{N*tnKE8M8sl|uW?6-_`H~Rjdtg5(e9kcu@mBY`eV^L zHyOF+DJr5W;NN9T@_gyL?sqj$SFk8?4O)@`it>JDwyfAaJXDzgQ{loT)+7B8**Xd;nA9jV7S!Xs*$ZC2Ik zaHLz_S!ioRb2TFP)xyFe<9mHk*oe8th_-ed-ngFyl#fLUw)+Uxe%39;ES++YBB`@C z!WWq=n64_}n|YR*4BE+^y9(G#59uOqGay2h@!s4m6TjoY8SJM#7J8z)uJj8qm@;#K zrnuk*1=UYUxSFT+^b^deSl7>*iIx~58(q-zVkVJP{tp)i4?Pf(V*=cD6<*aggB_nJz)9uoycG-9RQ zW;sJ7#s8t{D}bv0qOJYY9nu|MQo6fax>KaPyQRC8?(XjHOGpVwNlRX&>yqEk_ue<7 zV>`n==j>Q(?X}11O%nJw{RZ|fx9`hScqnrVC7Z`F;N))0f3B@f&O{(|b#<=-HWYbh zEO3(T^b(f8B;TJV_%No}w@u)~{|8D{{&QbC_IdonuYc7?yA-tip+$aaP1eKq3QqcR&JOU`eRCLNKsPIU+`Ap7-k-8w z_j&bgtcJg)LT|Ju$1uhzQw7@NijS+K`uvAh8<%v?T6We1`sndz(?|hYj9PItL+d4j z4I~?r(OYTrClOhMca+TO;j=n8-sbEUv)>!H50e4{v776e${!Paw1Ybnd+hMlpHE@Z zepDCjcHu1wi6+{Yro{;2H`rTIS=6&UOQ53>uqewuu;@#T3XhskQR$!XsNE{S<6%x) zTJE9z5ME5Q{V0)z7x8=urS4s- z{hCiv)St@&TgDw{!v3w^&Xq7RGWhl8PCvC^-(1{&nJ+vKgb8XXA< zv#{*~EnOd{|8c@~$J+HD=TT0H(@u&ljMwzuZA2|0eA&u(tX9r?iwd!x3FSuWW}!~| zPmTNW5%-ZA8&GkV-7t<=?{$@>l8w^}nq2;89vyo}8LG9EOa8C7nDb9DnMt z_9_1-P+0*&_o8_@MbB&1ER~!Y94`cnzmIW-@DA&P3wqFg(vcTYSA(AsG*vR#@^4y6Kf#WhR+~H4X>AF*f zXKijHF#QS)>;T{e;BGYYeo$D?Iw@_{(Mz*fITSxl#OB}oQ86iy}~s+4rm`rC`c zU&DYUE&rg)-PG*=fD-0KTW1|RNMlV-YMDE7gjRbe@{1>Yny|aO`xhhxTg`nyJXhM= zoBR8>VN--9RTPXvtphMnQgob!7tkILd6oHYh`RmY_>%fOl|&i(J!y@jADjv!acYvu z!1hTS_doGAfkVAx=4_R;@7!Uhr}i^KoCDi~p~)7RcXu!L>vu$e6z}-ttf-w=k#0GillB?85gjmah7W z;vB$Gs)Dcaz*~Xn?6QkgYb>++QT1w(F|BJ10J>ylgEFQ0vx~An(R(|xbCbM|+JXnnPJ|T3K?MHCp4pEPFW&spt?M$Rde(6t#SIdioyx zTI2$4U{ECD%KCQ$J~zaCrFg!vIO)2-S}7r!P$HSBzw4QpQaXpZhy+lvLW>Uzk#UC+ z*aRAE52P{=k!-5U_85;oyQ6d;+>*S-7pNEDuRoyRTaXx-8bt+Q!8KnjhfrBZ7XPL* zha0HF!&h9A&rvVIrx~XrsJ9bP<5nnPmEa>S10+VyfXFP~^ocaf_NTWdGfQffU0djv zm2dcNA`TWb@-jC_Qd)Rq%!O&&a(tbPVhjv7x0y;krvwveTuqfnJdqQ7$;qHq!(Z;| z>i*h|9g5pOzRLR@AB(4eB*>^>b8wFR^0(VR%}`Of5GU%mQM@g2Mc#8%r9x54@rWwH)gA^^S`6To+5Soq}4L_b(y z%^tFvUkxPtzwH^rUUc`8R6y3Ia;>HhN^QKZ?p_4~TMy9zsWQ5z${6A!gThr``s#4_zilL*)K3U=_!C%jSf60@p#9&N=7pt=y;IK5&7I6GXM1}Kq<#MD!Z2_ zBOr+Rb8}M}91QF3;RSvqt4JeF3pUdEqCEum2E-Dlm%46@oYtxcMdp(R@+peO`KGRm zH*d3>e&7j@<@?R^h1r{?0G*#zUK445HeJ|OuuSzOVE8~{DcK5VN-UkcDtR}4#`U;) ze`q6myuS`enreigk0IdfA$06Ac8;gm%U2uOWP6skYvhXt9_C~k)iQM=lgu98694^S z<96`F`rzs1MP&2?d2H@an3h)xk0bpT=QyIfUOL9ZhcmC}B8`t^;vbw@!OYm^rcW$S)v2fT$`bFd zsJM^Nc;Dqwd^-+KRv2$jT;a_PZEHE^<#=C37ovklVV*BdTjmH>8oDOq(i-+8NJ&{u8%@1(e4pL;tK=ZG*W+O48xz zD>TF9|D*@m;>8*rlN4#gFa}(#^?4dI7hx{iusd09!VXU_Hq z&$p%vm9Z~`HPAj^-#@R)ZVtlUzrcEJJuW}*h}!QyZvCEEBoH0*d%Hp2yzdO6j+MVl zNxWR2IzI?{Y4^J58&djxG4avo+@R^x`E_Z1(;nRghor(>{^<*2K1Dal*KW)FgSypn zpSKJ6=b5VZYcB(lA9UKr!SPfTHcQLoVcjr)?7i2fi0YKQ|R=NzZUQFAi*^Sl>*e)^0aAk zNlLdxlcsYW+RPgC_zh$v%l8drv5k$5@H;Ji=dsW4wi4an^?{hjd5&r@*L5H_n`N9L z(dUT2q;iX5FC={PJ~bZ~*i>Cy>zFf5jomYAN)KNPF@8r$*u#n)Z7|@;R74nNv*yXd zMS;I4Sh8p5;gM-oH}UqSzvyy8bsE)-ma$&N6(652rX6v~sklgoRasFTheTBNVE2M$ z(`ei`M%u`PW{2DCt6GV>${PJwT@fM?*xf^2JAa@e8W*fu@9r(wqBJ6kRnJE~7$-RF zd0tEsqnp^B_>p^5OAC?HrB9g>B2<|aAc)&3O(AU2;U^aQh-g>iA%)Xmx6#U%{Iqdb z5=?apATR>fh5)8Ub#p!E8vaLQxs~hH-eBXvNXXlhpsvMG!t8IUl2-(|zuRW{P*_ilzC_HIB|#tAO9aQq$m|D5>0M_}B4VF&nQ`I3*W?{H zt2cyY=KeScW?^iZ{t}IWFSpCrDqC-K3gs6~q70vd zk@#913DWWl4NBn1l!fbYO)s>=BDAWt5-3EKnF(9aQ+)_9iM`g^AQ9q>nIm!F3vl+Nl1R(*G^fn0AhsvQO@FR8`4*yG-J47OQzi z5%!<4$M|Z3z#=LzZHY6?R&+MzVFc2X(bB?|Mh>ejT3_HoS6XUh&feKE(bU@S?451& zhq|Uzf-W-}n%#xdZA*zglomKSaX(3G*XSy;m(rw{F;$+X`%Luz&X|AR4?F1Md-uZ^E3B0(ts4C{dL;YR@6X0tBI6W_ zrxxcs)M$>T;58;bC6T+%ZlChbn8H)a>eoBRyqE1g(yEby!=cjqLisbN{;7k5?T~_T z&gdy$9v8h?TE|>p;CurT1ugI1T|gVVq0cKDabr*323ww+g8t+>_pCF>)*5m{AtGD? z(MPB!s;ONP5NAiS@hEA#@fzgBziC!1o7gunFlM447i;NJgK8mG?k0lKW6o| zeXR4saE`PhBO-L$?1>VEuH@X60hC+||2rn-$ zBYQ4o<>i&%K9>Ass9HkV+rwFec%;ZHRAJNcp@YeMO?%*^a^O{SvBrUoQ*xVgH$ z0y}|Kdwi{A!BO=8y$0@=2Vb)+7T|T7j=6Yw(;ZA@t-88wn@)02^_EF1U+F|yL@)<*1JY*WHvrelv!X4z>%PM4OeOMS zUu_IKVhR&8lUTsE#ba!kkjK{T2Lc)PtG@^zb`?}-`I2)Fej=iL z3VQp79+hEaZKo#OPF7J`#aO8sGchqyk#y#-pqF+@HfYc8fwQ2vP@%()_T8N)+^idy zk%nubK#f7QZWh@73K|`_#&zG4brH6okW|N`rK7XqBF5Gti$Zz3(5H`)s9uV(7Gw2f zF21Mf*}CM(U8VX$(dM)@lPB!Ab|;e;Nfe8`6H3P5;EufN1qEIbtZ%;R5Nvw+bX2ibn^UmpS zNqe|{y7F>?Gx4~sZiZ!CXXhSnEREtq0q_?!8ENc4F-L|*VyH9WC)2R+ndq5%iouvm zN5jmU%MZC28G@zFkvayiKUKtp*o;Mw?u{toC@o(EBm$x5@#!fugV4&?GE1gee#6zK zh>f4~lSuZ5JVmuiZ5y8Kqbis_*0K_Nl3}*-!|S80P3G5bAbkTld{-$3l4d;SF~z!f zcTCqA@QCb~?~`(9r}6Gb%jEOa&bcJU!^I^0Q)W9kEp)?0T;#{J?sNbRw zcCkk_jQ3eCGjyP0VE5M~t;aOS1CfD=eu$KU^2&45Nxc=au1~55dMz!>e z7)cZ66-!m50{&6@tqP5*1)uAsXC$D83A#cNMU#K7eT24(Ki8XOA@pIoxm|M+qdz`A zQjRWvI@^w0!H}o7R3o;4w2d)G3nNgQ-VXM{h zwX1{S=u;@dc)6r}bI$kRJXNWcl!q><@Hv5cDI zMh1Gx&h@>ca<7v|sXO|QA7K|t@ZDgWl(iHGHr;oHqKe5(|EK>usG`_qsyZURY&(RR zvHJjW`qRU8jYQX}KgFljvSUjQNY zX6duq>tM+$+uJiaLFi+ePlwRu$|oz*R%%Xi*>XDzD;h~ISZGQg>_n1_YvGcDX)MPY zfD^Xe-DBrfOR&_@T_o#Dz|s{=m{#K5`a$Nk32oX0(=Qh7!LC7rPYv-CV8W)9tthtc z0ac8dukT~nZ7x`Fm3`PEck)HqBA~h|oR$aX=pszh1Syix98aUH6kKUXxL}Qu94JmIIigaNk}dEhz*-_3^(} zL%1CIruXKy44-&Vty=zz8Z}$A^YA?T4ZNcrJL4x}Opyo5a0x2Lx!p^?tTGcld;o@h z5&>=$^ElR=2cBLUbz_6$QCy-5o3L;^L;%RPu23OiVIN>1CsVP&hH=UEyLu%PiYwT} z*Ed3nnjB9M_#GL*7K5*%iuP2V3~{~b(x1X;S-y1Pt4go786Xgmf4}(_%tSVOAHrK< z6y{qON)nd2nh*~+UlUq~0$DKRhzCuTaOnBMkV)2RkG7!%H`gc@+gx4@C#vSKvayTI zwAHQy9u`wgjru%whdV9$B`NYCy|FeXe;p7QS{Lb{r(1_r7l)R3F>m}rPr~aEmd?g~ zFEc!m6>)*DJ|@6yvtH=(+1;-aGHk)xa{*IaTuf)Q)%mvjMCaG1jA}I1B(>|orq%V} zV&5GddZ^<+BXZ%gfYY9y)3w!%G56G|9 zdo@km+tGWylZ^kX1o_l$;{xeqPQw{%UE$?Z)U@E2Ju0U->h@9;Xu~gbVAk7IafzyF zPS_WYN>?jjQwYslv&5BCV$1{wof^DZ^xi{d`p(Uc5L^|;Tx#VA7$j633KLsiD49Mj zCS+9=jhRYe4}=vO1pe716q%>Kzpvob1vnR6|Et2{|=kkI;AtG&P8P^!6jJ_p*Mugf~F^XzqncJ=(rMSHiK z7~7)QL$Fd+4ZXD-Py(6j4Y~-MHtK>xKR>U{Si^2ViA0;jY~2ICDd@{aUSv@JJiqha z^v+Ix^-4|6r2mp9`JWqFd%swivg0U0M!C=xImdqd;L^}oXwhdD+5&r!`T9LYjhgZ$ zNHTsO^AJAqz&_aSq81ff-~!%pYO2P#cqDI=J&18gX<_8PaLIPwda;OF(fjC=cOQu~ zZ!9m%ABS-EIr6^4U4)I&L#TCELX{2Bb(u@U%a7UWnRDnpK1Eb$R%?D#I%&mEFe|K# zaprdg9UR7d`^2r!j3_-HCL@k-)6YZhsY)r37H`q&%tW$<9@8-(!VhC{T`F_&-ReuG`GY2kk$>L};B>Sp zEx1^BY|Ejb8`QXIDX9k32=pyW=#Vnrew_&;!2L_PW2UFHws?)BhhGS9?QJ9x5n2Z! zEQ?N-qx|$fUMAJDIk<%0)KLHZZQ?mJnCjKxuSAp+iTuNw?R<5oo>XlMJZgO_Un!S|+;eb-* zQzqb2;35h&SadD|T>fL8DqFQzWx_84?c#mZhQrOV9f1-M7-EbJs;gdnokPOvWtqh> z{p^nnZoDL&N6ILZ7r;XPH%~Lw(H92sEyB>zJotoX?-k-(n*iba7K5i>3$zmfyAOF% z9GNCdCvdCw0XtC$rE(-kZ2%&1^btZ3)g5WO^dxYP1(#G_qqv5H(D2Kdv- z?;nl3aeRr8`Zevi3#s0_iyHiRT;)l#VD=_uf%x06^Tf-90&*evr~H||Gz)eCfyqWQ zaL73;>;f0T@AGGaN=@B9e;@PQo<*LWSECqh02;W|rz}a4OTkAkKoLj`uCo0$3An<; z0f#*62E^)bQx+VVXlV|Gm5gK zV!)Gb>_P=;&-o-oZe?m30w(v1`yiVj)%-{2GU5&(l{NK*wv)3^E*#N5!~rhtqh7SWN8vPmk5AIDz4t(^=Onga1osR*4M}P zUHu^jTf3KF3h=cMP#vz3C4yp!h_}w=4)8vB$5bV8r2wzNgpih#a{<^8=z4R+&NNk4 zPDe5KpF6HJ2wSI`n-na)uxLG^oQCI5aRn8s)~=UW;Ig!`s$4p)U`I-I|Ib{n1%OwqwKjtjrlxGwer{t%e?LGoHLD`g0U^+s& zdG-DL&%DSgTXQ$)m#pd0CNgvRu_jX6X=3JOTi%Z?B+T+C{yw3QOodW5v}@_DYL>1C z8<~|6bB@gX6@KqL*=ibzcY<#b?QG#3im3T{d7m5p?!FB50~nQF+Jrer$$||>rlR{+ zn}ca1VWV!Gx6lmW>=k5M-w!-`Z!;=VJ~gdO0Qdw@rPK+8Z#YDp7gJ7L#F~tF2nYy7 zB!Wy8=}n5ot5RB;LZh+v!h#IUJ91ufvmT_83avlH`sWON>pn5zp zopfGKB;VhBq6lSE<*6W`kso7of1k+&1bHp3My71rR*71D9H@FLW2r5kKc;_DD1?^b zeN2h;8saRDXGyeFh&@nWW?~(lGP`%9xg1!%3#lX>)JaJW$aEK&rb#y(8W?zI{Pwuq z390LDaKL`VLtu^KIwmyI<^6d!I^-1Qp8j#l^uQABEtCOm81$Ow=0;HmGDSy1 z=wTOMUaaK!5`Gwu9*SX{kl6dG0KGKWc@L)DVUJp|?xWow9~AxLMosHaTp+gsz>5cB zSf^o`A&UkRer8_Y*tHMHDo2~jMa{4x~f^o)1U9_pDivVU*{vJ)FbSjGW;jR{( zLVBGPkUf|xiLAl*uRdcb^^$t>2gE#!-2qOyKI`}D5fL9JT1XLRbyU$)H|;rWnMlEf ztM)RSV*psf#vF!JRR-@-9!8W{SZP}jia(kIk_P}4p6m~q3e+FhU~>}_-T%*MlzQ|Q_A^OCKp+O(x){&%)>^7?6bLebV7 zLd(PGWm$$(=$~Wb${6Vfqk@>oWodt4Tg%Gu8YltqPpK>Nl&7i(j`YH%VWK+^xbc`M z$pV8yB+jDMda-)Mj2%s~15Q3A5z@JM;&FglOD{I<7EZv@l#!*5OM~=^;*OL@aXG4A ziyy%v!o{w^M=5_LG3xg(VvorH@06SX0kJ$(CE!Hkx7SvHZkn?VWU&s2jertwHJAMq zK=lRvXC*aSt!dRHB((5$FX8eIO*0TYM*%M};%QoNA_ZOgtVXrAi*TYhbubCv%Dew! zB?>nyOfzKIPMplLXm5Rm=ise_(>TmcJNW8I_+-|^;(U7(&Y#SiJJa=MAHFHjRPCco z01MU#3Y7nI8tbeouD zW$?;~hUaiWdWN%eJL6nRK+bKlT2SLAt6rkclv8W2?#NRS!Y^O7M>t>=sDq&NYIMGzZ~9c4GKZ9&iysF8` zS|$h|pyUY_YHg$_;naN&p#(p_nR7|fk@H4pMt}W9&i2KeNNFLQh0~G}F)q15{3M6j zTJRl%!%vwn9*k|q8K`qM!+}kdZOifK(!c@kV80W2zG8jj=JHE z8S@U!vRo!Ds0g*S;uT6`OpbPt^Iq*P_m2)fy>B!}L5_Cqj6>}BOrLjK@vG|Ly?5TH z(la$j-4GoL+}|-(Kp3$Uioi~6{acR*Pg77p5`n!Gk7~tGf}^`qI2cFbd{3iSSbUIJ zb1>TWS`@IJDCxlXfci65vd6KH3Vj$!=pp>;Ao%d4x}G*y*=;zU*L52jI*6;1rprX$ zX@ew7ZYBPZJjd@1_|pAYCw82} zYv+>@Y}^|D`C?3U1#GMgt{JCq%3yJG_~hTf4et+Ygo8^x;bGI7#YODF)Q#7PBA*gj z1@Bo<_i4(O%92U*qGWrR>XlmwM@wsB-__82C*05lx_@(jn+lBN71K^3LYGvhy#NkP z^e<8?3M?#ajdB001=;ZZODYfY&I@3)C1Yv^&8V{*Zwjd+ktEb zvfJF{o1l4r7{8#i>CS5w^&;Ti#r=*oA_)gi*&u8|97s6W(dIGP{ZJ+HfEzXaY5Y)0 z$wA!YuqxZHi8$Vuk>r&oU53=j1xrl=5^*I1mEh6qk?i*|el+sZX``Akf1@y)k#IiA zq-pMutP%ZOjBfbvQiy6u3ztfLo=fWom$yiQ!+Z;qxt8RTySvudy%awR!cRSlLLW8z+zMC@XEH8xHF??#dAl_ z#LBGUq259dSieG`bokj88e1A1$wIe-cDMWOB0ZbsGvoK8zkiMX><3N@$Zw1t{@gWe+(Pa`-sV>>{6S*qTvrV0~CV_UMA49#6xgmX zi^>2PA7B=mR+)f4BRIDk8#z&l6Q3w&oYhTLBhB1UzJU&H_{;vJ7GFXGL{711VAvpcd#YP1L z_=5@Et(e6nCZ^6FhRg>DZYQqtDGSmlX@vpn8b6SNjQ~t5&~cuvMY5Q59q4g)p8{`a zhnw^`)%8>>CTCLeyCyw((n)(Hnu zk%2EPgIa>x{YBS)=5OqdU2pt>w^hw64fZzT5RFKyhtt1_ZdI%=qEFkUq`4m#Qe&EX zSYKjhAetErzdGJlk;wxBQ`Bq2>n3YR$6b%p_D^*=AF@Qe2pq!1`PB|4AXu^4p`}@I zY*J2@Nxh@U+vN(d=V;3Yj2*zQ`xg`l?!)B6tE#xNrx%p@F-c-By!LU@5vG9a2uIo{Y6v=(aLPdKG#Oc*{-L-1bjuhx_WV@ErO@YEl$S2?+_m+@7@BuQr9FLw>P$*~4+-4`cQ@<4MabaT$UWK7&K9PanQ| zT^@wiG4kbs(eH((vj&-*wptIu9QtmzMI1X0Z8rVpW%9E5W_T&Q6QZlq0HzD4{UUUS6X@w@p#`oB~D+D3f?;}C1}w(yffFMF0*?WOh3^q95b6$ zX>w@E$9wrJVVttv|Jv_$)fdZqC3r4yh?lz@yK`h1KKuKQK9MxTyo64g$7I)6B=J;q zj2ZLqA#dI41gl|Jv@C|=)rM@|VX;o`Z5A)cs3#CRp`c$kl|w+l7h(432lX?Vz=lDo zIyUZ3!q)E#FMfL#czE#c? zx~*Tdj_h4pFG5RAU0|_3XD2y)1);de?rMl}%DsaEq>3Bb&t&An^U% z&2lNU^ZN+?!|8;1i1sIRYpJ0xl=!g#ZDX?t0lmLW*O_(aD|!kp6(l?CE1)WJ$ot81 zSXxnY{%0-!;c?daQsshU=-Rti{VR}vmv61zDRG^leFZmBASHkMLTX9* zIataPeiH3Q^QGV-$YaH?uzHf96c@i#d`J;^EtVILWZdziuJ{2qz8Iyp#L0m_?A3MO zi4oie$Zzku(DN?7gm^Q(qW_#jWu#K17#sFrT-_C^crp9LLRw6=A~*8_f7Ka*f7Pz9 zbhzMr)Q(G;+Gp34pYwaifZGo*7_K%avBV;&$>MQo8BxfP(;k?Sedd=Sn8!EbLn1Ry zL-3RH_0j;-ZS@zPz0oSz4F`NYOZzZjk=eTbmAt<2xekjH9hOKsDOk{Jv6dEI@TshJZY0BZuOTeGxGt!iEP5^_%6NC^zfA=7{3dc ze7XNVuqUlc9(E>DK1Q?;?MLfzB>p;6S&K8GmJ)UvYm?QNM_w2Bv_4_U@!NHZS*X^Z-6Rh-$AoVQ$G$3zO~i1&R(OqfM$k@s;!@{v7~ zM2=$cU#N&OrMVlK;N!cOVdqMr9Tj30Yg<`T$X)0QtWpO@1NqD43-#?`AU}Qz;YvbiiG1g#z|Mp0A>%WIOyw&6DZf~~ zT~{z?k5$y4-$3T+;rD&sHt^py`uMQk3k%LDHqOA4$Uabr24Ne>KH-y=+X()?+75hu z$t&-;3qkkaZkjGJ73ivB;!9T?lF|aDum=pfex2QXg?qbzI9XJw?)Mu83HF_9IPu3( zu)3XfnQXev`<{6}Q+l0~4=-v39$x{YbOoImjGE9yiog4IqH9yYiCfi^Z|^yYW>?SZ zHGfq&^d%p)O%1?t>j^lt^<7|i_ZW;9U;~mjy)U#0+{^F()VaC)_w8P%<7~3_`L%oY zFmJ=m|22V*k53PjA9K0$vHj|4IS>3V(?RMt6aRKB8t||x;;l6LCaLtjNxa@B&_OrN z5aq$>A~$KZ&yU=K87zwru_Qs`SDRc*Wz)GTtHn{94*{eid2o^@pAUAlV_et8FW zqW)>C>bcF@m>03>4hI1QPEuN3zfb=u1C3^D3_DYRLwp~rqF$-Z@M9MCecgvs_PVAI z#s6OmfTuS&8k-e4<9jx;`VGg5@Is|VcId_4fQ`^!9<3rGda&;tk^0X-zGz0gHNjzd zoy)UyQ2J-Tt|^rfWKM=y$S8r}X%RTqN=Lv!l%U4ohO~(fI~fzNOAEn!gZtfF*+$sZ zu$rfqnlo9tCdZ&f`ezB++}*Zy$GyI%vtc)~i*Ulx=u=@>(LiZ&6p=4OTU(;3px%WC6KPxE-pbrO%$$Sa+ijclXd8Z1qeOXZI04TiT~9&zR+QJJMq){&8?;Rg zxCL0EzLq(Es}Z7(cR6n=vnh6SS|w4lLP{@ypC6<}VqAo)^jwE|7{3g1lIAd88Jz!? z9$M_U-GTLgICt6+40`CUdpo7(^OCb6CivFdr0Fa5r|0SV&+;k)Gx@Jim=70#ucU{L z<6*E$Kp5h^@<^pUZ{@!PJaIjJ+NeSd%1pdP>g5Ls2lUrARkI@4E@vH>AcW% z#Lp9VL1SVK6j|ec{J$#{kG@^oIhE4k9Rm5BE z-T%BkFgif?@S!>A?Y}JQ>tAHm8I1q)(LAp$33i;Hiwyaf4pIbMvIJf)w7U%l1@R_| zh)%@ciww^iH6$#B>K#m?_qiWB0@vAe!}*NHc>Q0GOc$!WAv3OwL=kD7UEuulcBhYO zz0mDtCRY%8Y9%^#ddie2d`Fo7dQLPy}Vkj6jw&=*P9is~h; zjo*V{Ar9M6A(p(4F&R&RYs-;G!9^Gx-(6JYO(!~;vOIk+Om$(@qb>lY@Bj0Jny}Hi z6b<|ObBMVFgJ-5l>)~o*cJ=-%x?3`ys^r4r zvI^{l=@G6eR?ljgO_LcI1HjyYEdCoHGk?s^?)i}a6SS2k!r+1QI(Ecv20#DK^$<~^ z`%8!W>Pfx$Ul>GEC%WN*plH2qydpKUzKZc5xvZg~G4JMyk`9R3vZqsK5C46o4EV7^ z7Xz^4P0rjX<>EB*MfHGJ1D>)ZVCMmhs+bbWfC5opT8F_qFD&Q%u~_RmcW$o{CTG4^ zY&z%q!@uT5$o&Fip7L|IA#c~csFtyLLVVMLucy`YWK%-3hy6Wf1n1q}ADZ{aLd=48 z*RHKsSrQ;Sd)Li}wR<@#&mXt^PT}9R)t>JCyF|c`h}%G6G+O_1?N!Mw4SVKGelP46 zb}sZNbl&F-+YkJ+qy&=s2kvrH0a3TRD!Ka$x5N5!Rfj9%EjRMsV?I&8O##QiFBB?0 zY@<*T8E;3^ge~7gmbx_tYw1HLQp>Fo()`B*Nq@72r{X<~`;v!POyjX2zjNrR2;a0} zC&s{wAKk+cnTl(V;h|gqy)w%d&m<6Ceby6}?1}ykUk9+PwV9si?X&4sxGtX! zCp$lMeQdu>`}^^~hYLJ|&bLgL*SlgTixN6{9uw!m2<*IkCaJ}8JJyu}ioSao-vxHy zTi-=={(f%ID|g?^Mc^Y~gzS<#)n2zl zwSno=N>IB#-O3J1dJf8{X)?e_cd7#7$Rlr)0^`FypmoLjHf@;-&^fjBOSYQTOBD%^ z4`9(5inmLOh4uBR2y~JaV46%t=n^gkB+b*+$F#GHif*ckNECrR7xu^VH0|c6KO(_g z2X;*a{Gj&E-ZBk7L_oQ(^oE)fH3ek5q8hn_P{vbL6>{FXEbn08E6(ZFV2>!t+p%4A zE#2hIIPu-7GewgFItH{3rh+-IjShgBIgt_jBv|B*9U#~q#(4Y03suD`#`ltS>{nKa zn;N$>a;5zbn;J+kYD?4Jk48DOVNSK-^YMvgOA?S@_H@1Q1;9 zAt-?ti-far(@mcA;M;bQp#<*G=TjdDzI}HfXcoK$v~4;!GE?c#UH>!pirNK!$SsK6aZR2I5+?htZxdX z^tIj1b3wIpP|}zp=i4P6jrwIk2v(|IIcLw4to7YoKpHrVPJi!v;5R_|=-!(fd>di?ZfJ;K=y+~Z3E+yRXw#=${07#(AE}<=h|CS9~byP&dJ{+lZ21!^bb>2xapbGoWvYX?z^fL|J-7g=t3I? z7H^!~`YyHrOeuh?)&YEL+~Uhl*9_}7nc~5l8?J?g1-jn6CMH1cAYZ;PuP8~I8tn*# z#a&Ss7J`i{s1R@oH5r$bR-PF~d?1mlJw=JxXF&;Jm2T%6X3w`CIyntSzvosuJ)_#~ zjgJ(sp3Q?)QugczdRfVH%ZnadDL{f)9IUw@k#vxJ7rsZJ) z^YbKk_pdou!`DAk_f3a$QzS_5=(P=25)cO&y6R>XE62**S=V*YFTShvMGkY)&?cnw z3mNSu_IdLz7)+$|r1_jtY(67np^8Da}5)R|$=7t+94FKZd62Yd8 za)qk8Yyv@yVRxBjHZt@ zs{l7KVSmF*Oja(HV$0ZLPeHEWhAG6_6n7>xcR`i{DS4fkIr zDWIO04N9GGA8%n}T)|Lq;3iUawvINh}o7wK_*hY z2j4=m4I?aUXpJHNWX!x;N;C-2%{%D*zN&S)8m4%S0)piq!`55Eva;rYC(kry0~tVt z80TT`|I8}`JIAk1@zX-Wx{Lmzd6h}0_m(kb0%ZL7Go27%3U!${`1rg-DmvU`OfE^5 z_+2R+mya`l`#^*~TSe(TAVf&_@9_a|M@Xdvr(B)kSH1CUIDz4~G=VWl0#Kp48-YDG zJd-Ipkd~^r2X|5|fOp5`w%z5pn8};1R0Rld;58~WD>NB_84}>b1{7>Syi>x#kCl!Y zrIt+~)w{|fi2$fbOyK(E<&gutN6~8Nzu6%K1VVChOK->3O`^uT*RrQt{!}gUR_q_SnaL=^1J?sVU86(~w zZQoxsv+;R1pU^bI*KG22ILfY*+a0a$2W>>IbHNYscAl=ks$MzQ;NosdbT`uv@`TOo z^*2AU*l_S0?;H2`XB+qUqaN0gz(@tZ?7e{hr~5i&T^*+}&`#pwHk>`Ya8Is(-qzdn zy;Bg2sx)XDp6^5n?F0c4G9sCrWvdMca4P}MS$_9%$;Ke_K!%5z53~O&j~P8)so|!7 z0TDwP?_Z1Vc zbKUPm0k0YWp#6Ew)oBQzzv4{zA99t=2myGFHmg?!j!1q7EwBPH4!qvU5=#+zvps`A zX?Xq=h}E$4nWD_b%aH;Dg(bW}Xr_#_#<&{;+*YYs{p}MCyBI&`aB?Gi-tXS*^DP&| zQdc}ZY>~GVkfnM!iTTlwqhPqKs$IVNy!F|s;rH=+bGT6gYFw~QOocXG&OvA=@(dYN zj*+vI^y1DLu`0Ft(hJhy+>CciV0=#2qFbU@1hBsRueTEOhXB&*X-@KoT*ehds| z07yVPZqjAxe}pdIv3blb_Ytx|pvS*Sk6VGItq9FIsGvqllSN0%Jvv%s+tR z`X9g)zf_f83OC*PPoD<=20so~V8<{_e>2e$?#(U^=$7Rw^6$~g@M>@ayW9v48YX75 z=Z5}_=$pUi>54c@`mozSq4*Kc;(S5anWW>F%TC?F?iHD7mmF)x#(8ViTJ7S@;0u>= zOf*@_A=XmU#_`|3Nr4I!C|})9SJ;8IKW*DkTxqII#gu8wVgxE+yn>5sBnI!JZl^2F zN9~#~fS}f2q`yE9vU?lYLX8dJ^y_gEzI$?I~ zxwm<}z9gX6%>HJ}T-W;rR>z)XzdKQ6mX~4${Dnn6i0A*&^p#;zwq4gCD5-#Sr+}1n zhlqf5cXvpqw6t`0cej)@NH<7#cXxm1-0$=K@HiZlnYqr`d+oJ$bZ9nq_@{_)nk=2t zx{g3{dHgmw2?RV-ft19|#nlhU;h2~hNE*`P?V0K4GF3Wxnm8Z;QxSHkD6vf(Y}s*v zMoT$g1X3+W4VmS}vGKfi{}9Qgfa2l5IE=^}N>WPN!RL?iRX?nil*9_;4OwtO-4dw- za=cW{)Mf<#omjZEwC(N~>2cc&bnD9#4>bm&;QKnfDXrF%NprP|reu9vEMFW{tS||a z^D3h`Q|QT+8%*t7%gJzmhCYBK=eYBej6sI%^< z@O!mo3eX)7{(M1=l4R!Lk;sxINt3PtlY>Y2A1uIE^$aKAdJk*<5h*!P+9Z1f?WGb2 z1s`6BV|VXJ@9umH;&<#vxB}U}Pk(*9?|$u-$dp;U?=wRt7X9Nw=G@DU$$!tG+=QCZ zoIM55_}?u4nX(p6nS(qAaI-*Ohyh4H14)(OLpp(1Ldd};{XiQh9@TFMf-#UlB_b*c z8G)%$XQ2n?+X7%4i$5uMC5u*ZBj<0 zd!_5t@#n>UFv1121I8Wt06E6sS43Ujj7kli4b9R4HHCS-edTIX&thh4U+a4zJAJyl zUNT>xNg*43z{N*kasS>&rK4-s8cR4{6C@kIjJp&|A!#Y$4p4D|K@vGn`uU}*-|bdd zHV8PCbuWU6rr+M2{zXy<9gda7Okxw_vJ;C5+Av~R_~YYt9a?3@Im*>x(UrAFR?pjz zvEp^(0>w&~5_m({Wy|-*UX1^2j%Su}qRU7_1w>fu4Ge&ueyYL4pLJ;^?sE+PnlnCmW-cR*%Dl`UsHr3rfdo)#;O!P)x3| zL9Yi;PJ;`)q^aqzs3^36fB=Zg1f?Gq>>yRGi!l_qiG3n04}p*2k0s+!bdE!^NCRpd*Uvgn}7jYhWbHKXa-H?oPCju|_cA`d1o{Gla8nI-2j^pDJMr zoe}vr*KL+L=hx_hgNt>8Lge@CxqIX<{`#8tHMS0HInv~$EJIgMnEt{}Mqrdt5|TI{d4%*OBy4S{a2Rw^|L(bBCE1ED`v=`gkzd`J zvOi%ywY%*6wCswq9b;9kA~0twoXV<)TZVec7@ks_zlA&!i|6D!AxJIl?Y zJxX#uf>goIT7$H#2HKqK`a@xIfH~f5om4Gw_N)wzo9_XbtF%nftjhqohQd;*JAd>Y zmT#hrIN)_HXPim%G_KtZy|TU=*35xoLMD25kgBmf?Ew3eFUK$VTg6}etkr&GAJGCW!RCTqPfwROH};cK98641-g-Dx z7>DhzDxSNiGqOlHQXO}5;rxkFLG=Eg{x+5BaXlAh?L`?Q7{B@X@T|w1ZV;`Y620}r z{(8>Dewc0M>w2tmNjGT0^5eXpYVLo-<-j!r>7sOl!H3=N2sqn)QTTDr5I|jK!)Yf{ zf-qRND9-GWTy`RbYJ+fqDn}CRjtOA=pSH(^eT%y~~vi&Dyd;S9V5!JpvAGxmfgGU3| z*Mg`c1&xhKU_e*3+l>`yFwr+UT2NM2CSyK)p>*xYO$bWUDJUu5qoWJy>ywR-kMBBg z1K%VqEe*W08PoJnheTuML zs8>)`-2E0dKfNq%A_`~M*vW74a5*1~=c*b1p(>}GoZRj0?dsm%-tIWp1NVI{?Nhj$ZJqtTVD*W# z0{e8fw9S|?At*wC-h)zuW_Vp{QwzhUSL-TT%{Rq*3 z1KYvjVQyyT&(cylFw&`Ox=h2&)N~hpFN2A_g zzlM6mXu&tmvVM8-2zY;>=8XT+uIL>e4%^>1 z2cyu(_Z%Q&JXcqBL7~@PVdZr*sjK=MZ~|Og(i0PLz?eue2M5;H)>gnXiEgzP3>MrR zwJg5icv@|3ZGrh;m0(;YWK1YnlHJ|ic0*>+*JY_drKh{wA55Fem&uR@rKBJ!4uCd5 z#;~D%)?!vJX{mmTv!exKrGw%*$s{r=dkRO9iNrmR~|aub$7q+1b^40BD22E zH|w>})6oMvPJ8#9w%EyjfC3vT9z3`gE7MMHGTu{fuEJJ}q08_S{~SI9yj}>rVXgmC zfcEHd^f1l#bDD6GHT(P%ypO?JX}ZI#zrVl5a&r>sw_|5-KiWTEph!d5Wv8jB`712U z=ybJ%f{H38HukH9#UWSA%1rPeJ=D+Eux4HBw+R#oC5HAxlfOsXevg4GY9#!D%gz4Q zW{T$A&VKLsSY&VWtE40{n7DTRx_?uem5n`na?j6uzT)f%7+J< zzjj5|IjvLX#3d^{uiYaCkNDG%is7MLWvKVcZiuBu1%6IU$n(EE+5_LQ*%!F-f1@SA zJBJeSCI9>hRcA5xMM5H^g`0PMBZ-Wy3CtD-#iRGTy|Xs-iP0@u}snz{{Ns1|k<$2xg;Zz?UqC zN6T4@_h3Gp`)P+4{M)yDCyn>1C%*?DjvsAQxMBN1UybBNX5tH zaiY`H(}R8e8kCZ?z2y3kz;|K}n%Bx}Xh=v&z3uMqKAfw8^g9P{v1n4O4t`U#SPCRS zW@l&PfUk3QcJ{Zs8<@!P2o+MzLTe;h*O`jNrNsu%0gPlkd@j#NPAZx7+{Q-Sl5QW+ zsty_&`m3-oljS_CyN7#gjl5SQ+*g4qrE!=s7Bg%c$<{p&H7zYIKtA*>sEq)XIVUgwDai5Cn8eM*Y9=KEA$3TA~HC7cD9u_!Us^ z{Q@TTgo(@js&o_3#i9#KO2~m1@_4wmy*OX68a(3SNb5L$@xjT-G z&mIa40(d83V^S~!qQq~`!b$NqBqRj%1t1j=$N(oqbOWq1*ne~kjIZCm!Go2f`0xQ( z#?SKd?~jiKtd63-&&7?wtlB7}e9n-H{%T@UKt9~mp=)FK)4|?es7!w2$Ux^G5Jt4Q zX57)VFrnLTxOjx+Pwrj;pGzR%l)Big3A`pe0z${a0)C6OjHxNLm6er;@uiNOb$H27 z3NbLQPEJwrtDYWdAPVvJSeDS{&d%h&f3UN@tzhQ?K+De0mZS7boN9PVVdbmYtIWiik-W8D$OE?}EzX zxus7K8u=Vs(|0ftUq?%IQqJ9nVl+-`qC@|*xdJ`G@^f?lGHIFu=Sjfr(07)VIl1>M zB*frfp`2tYXO!(mPtckmI8!Q6DZ?USVhEs*AUJ=Ma(gE&)mFN?nFjPpxw#bj`udP3 zURrueF6+~hRFQxpaTh>?f>$Z+=@9|D#p!xU4Sv&bq0SQU5d>noAcr3e zw-FQ+gnjcSIEzmJ1`SG+=PMM6=Gl-jOITQ#qM~9YfVlkkyX1(7h`YzfPIUc5=;&Qf zH!Gu|xGY~IeuBGV)NaaJ?Q&uKe39`InUNu5X-R){bo7%C6EtXh4=MHo%lv_p6Ni|X zSW`>uq4A#z$N&ErHVUy$Q&uoq_b;e=askbP!R7pG!OlY&^cI)d4^ndWQ6WEbzqT_2 z@@QtDr(dPnBxU?39ceH}S4v7MaoE_985dBniw=`gL&A)JE&VR2sdww{X93S`AWayonOFBKZA#yupB62?! zjB4CrCi&kt{SLScIAV`Ww84Z=1;C$QUpu9yr8QoR@TgVlLL(p`tiyamg@|_@zygjTL zEi5hlt6v2g0F540w2gohVC&>`e4>x&L!voes!R)ND7Ll|bhf)t1pb=W0^s>8C`fO* zR1H$g0uITwGn0SKFR0ad+hu5{eDVXABaTU2ylrpE{2l=pGW+Ms&`|Vz39Z(QaxPzg zvFq+u!w!2@g~^rI?-}5jlR^O~PWO6t(e}JEqLfbk1->+J*Fz~B5g|ygE4_n^f zV#HWZoRj56%XM7*@n~mYBX4d}H5R)!yVhS3yVPX-)I5IaMk4;`UTh=jdn37^WYmy6K+xpi#@)!Fc){;Pksg zus7D$I?C#o=U0R=z%|gHwO|K0zBl9L(F8EWZ`!q-m%0ri_h8@$eiC{UveT_+-F0PfJ-IjJsgJ-$$>*u^t;_0S*;!2vV>J71NK#titIouyA${?B zX@jeLvTYQZ{5FQIQX(i!BG2bSS{Btt_K58oAM}wU8th!oH&A!segt4>qnz-124hb zDjy%8+ocoF-kb=2#Lq4+ToMTkTi|v)X)*)fK`Uxy#bDj`#7-rh`ngE4+Gg#Gw)>ed zz+)~higf<8z5~9D#ORF~Wuym(Svxd*p01gszW(HoNw+i2+CpZM7*7V=Yac`UtOB+l zu$lS#iEAYTL>Ipj zxjbCjkSlx~%)dkDH+sh+dYcnpbS9JDpIyJQl{Z)9*R&8wE%nkR9y~w#2P;EyTcG}@ zSyW5$9VN`v(Q4Mo4z&n(O4V2Oo1HoNYL54*p1WPSoBcI;-L&=}eCJw6dFuVeY%iwg zyy7YPRWHL?>6wLHolL?MZ+loj-qm$a#AloL%W6?ux>$R&KB%00^S6vPq*JBI6U~>9 zI1dfKC~M%6JjdtLaiz+UEiR{yoqn>c!@!Ou<7=8E!DSyw=!~WL=(5ZsuWS|+`*2nx z|Az>{Bl!2KFI`bCtBU&B14jQR+w$M#_o*dO#WO>3on$5wC8IS`sII^e#6Y5Ggvj6O zWtW$eG7^+AMQtG;fHRomaomq(wO-~G%NhUn^YXL{MS_iu?MaJn4bf=!A)M9AZZ^r4 znx_8~yKwT^Lf%9?Vh)9v$j6&cd(kV7qvC1-lb_578+ck^?YGwbb9o4-CNCxoc_Mu? z_1p~BBanA7u1ZGVBKV2PCgAt&;FqHNTP(A^7TfnE{=@2IWweFyh#U-2#=ZAqdtQTa zp(`Fn^3yu`VtPW`5(hM%BRscHBX6NxnG`X^8*vYEr%veOumqTdf+ruuSe9vGL!(>t z39)%J)a7Wz_}YF|_Dke`5vu)ttYRxaD5eqZij`KBnBL}I?$ z*#B~51xvzS^g--?4JnuYD%z0uIh>W8Svt9GS^I{?kS;RXz~mckIQ|EN<@X;wbgO@_ z4o2J4ZkoVBU1{XL7V0Fp(%{KaJfBAXXmR`MV@dv3byuOp*vDSFUMIIDwmg-kDQcr9 zCSk;;Bf_H11v01_!2u7001Rv{DfQ|LUd&C2L!N}WNx1GPUOhY(Po@l$m+H`Nj-vhr z!;|-C_$(=AR&%AZihf005mVob#ai9o*t!Y?j3f)HE|Vi)Ma~88e$8Xvslff0YO?KQ z@Axr~iba+6i{mA*k~U`5tN*a7f!?nEb4n;QA=xUYpcM7rh$P08#}voKwXp2(1;^HpfRMTq*wmM zn6OS6UZhGl+B=9qRf!So2{KlMDPS={Hgt~`3@ZvKm6EMIMkU%gJvWBZ*V~x)RJQ2zp6LD3r0kJq$9~#@YL&w1?`eCB%}~q+GolzDGy*&8Q=1?>Z$UxM9H<)!F?cl8)-z z7?T(xSk>fy&xa539`RCUESWPoDz9iTUE`ig2IQs8YM(eth?xT$$;H*q1G`Hre#5~J z-+fnQb>l|j_!ZRBnfD>4|J%23pFs}G{JglWEt5!2)&K0+{_bvO?dnU0sVI@Pt`w;oIgb! z38Zn6AI5#3jACoPo{2NuoY9ppKAkLq#-wQh?XdjS&2s;M=GRbdirXXa$PY#%DlHOP zmd%QXwwG3h4Yvp9G{2p@P4-{WHJjmueBZ9r@8TH>Z*gD7-!X&^PO0~4E~|(tA2QlI z$w%AX5PU4{HiV)R||J}VzuaDAXw z*ViEpfT0VEin5xUn=>RRAaRYkscB|*_A4j>0fB$!jsgka8nW;5Y77+^N{EAVT#xj( zb8k1$;z!7d@e{9&u?}7qCsE(-ZX`0fQ3nXUSvMXg85w^5Eq)SF?C?55veM)#>aO6T z+zyNe5)(ba>OB!ZOK)*MXMtA(j<_cn|AhZBbx)UWSL1o7vwvM}?hK7b0wiE!m)u2@Ys8u)Fo5;h! zz*ybd>IN`T7=*FlpBn-a!%Mf9ELuEp{voik9VU1hnz4niByy=1ef zAYFefQ&7J=mPC^j1iJ7mU&@rx2?@i-O*a9vtEi$<0|I4WuOJ*(mh7c78lVmsaD6-4 zA<+`}Vjt<~zA_}R7!Tn?iAYP_%D4ar|Y z3Eo130e~)N-PkS{!yIOomcpP#*TzPd&ht6;apMlr*%}pmr&7`H-?5PMq*S5|F)cE2 zYxQkU^b+xO9dmPy84}d+oie15_d;vET}MiH-TxRI5(16{a9$t+>+^YygacY1K?*J( zJF5>s6nKd(7QMT_zYbW1Qq?LS5cbVf;be>Fk%4o|vHZgq(2AZ6MI`XpUtpnpPRW%( zbUVZ{S_uaH;Njs_&RKx2f_4j*^=IucD3OtoKcx%My#Yy}f-DwoYG#&IT^$X+=o!$x zB4VgyUR~eGdV70Aa-Vt6`^a}4{yfu{g1450yfwONnKJ+5sSt!#kd>AFtffU5O@W4o zHvmHML~chK;5BX^9zs5UM)ez1HZh?Blw~TfOEhR8c(E2pEU&Em=4VL>ZB|wmm^Q@Z ze5@JpjxZSXjuJ>vMfD32{O=R4BvG|%%`rhy0Ysn)2zWyQ+AK0g0?vUE$QExC0mspy54tUC44!TD_74skJX{|g&Q`(rc0kS2K7%_2KEf945es19Ko1^)1a1$mU)+h3Y<0B6ZZQ;Y*X zSWXTNNHq}se5uLVe*G`PpQa}0v4bnXR-}T4^ejdL7|}5?K;L}Qv=c=2d)N6$7i?D1zg+j zy1G}Zo11*6akU%mrG6MDF>7)D)q1oAF zATv=H<;~*K5=a8~^Y>>02Ly6~fS&@-y0VNFFy_|9!tsWpRB_tG)_+|pP!%4Hri8xZvx0IUFIY}O#$^>)Svi}{s}PZ z>+u>^diR%mU^O^cLv2a?3|srA;UqV+x)fLjZ8eC3k3WosG0 zhKq#Z2?GHLY@hz^=~~~`IX}wUz}Y~rTJv)^k)5_zq^wR=uYyitB1oji~)DRN8u#g&T6}TS2&H?S`tE`Q>P)Sr+ zOPI3siUQw@wZKf_~ZNlMv+*wjQ#%~?E8m|&V08yP5nW(SJ|)8LKFl{+cFKi=u6 zr1tva{(HxwZBM2|mS)qv&NP0bF`u3MAza12xfnsH34zN0l>mxLH2EVA#x~ODl&Tc# z>x9+y+|_(JIe~3<_ymNI?k_-!0GZ3>`GE}FS3v7Wrl(7P`Qp>JNDkkLl7D#e3fv>ee*;Tnu-IUW6D9(J3~_1ccVGe< z1}5hC*w|-#dlq_n`hQbXXTVclfIl!0J~}+y7`Q!%h8r8}S6|NoxVDC-rj7mmVD++A z%HF4GHs{mlZC{Mk(hr?0Fkqbf%RSA$hAj1_BtB7p*^F?ElB!^BR##O^&)7&14NO&s z_K)wQbO9KIyFnQsA;1Zv`brl!3Yy4NbEGtSer!IdYOwP!Da_rHWzH|eQwIwkMdi_` z0ZObzc0{NY3fn_PbZg5#BR4^=B`jK34ood$TFW#oSl31t>w8Ay{O*bQx$XhWz_F&H zuTVBgF%$^kMgkKL#1982r-|ul5l2Th2vZ5p4gr^)AIQ!FKb$V;m0?KO*xn8Rydrnn zI}{WYGIDYV!3{YSxXiFJGNUJ)O@Lsm|L=O`0|8Vh09g+xW4xDRLZBhDJy1q~yx7B-5Fh=y1bFskB?r>wLPT`{RbZWL#qKP|y^7+dJ>E$V3^Q zA|k?*uF^!!+AXe;6VmB0TiLA zq%=M;@x{#SV_se!NNIw)c7X*J8!+YQU?D+CK9C*phOO#q|Ab zr7s}m=dO+@HQZT4++N{q9<3|Q7RRu|^(3+i*W=_1E;$kk)>M-I3g;Syx_>lFDYjZN zX;WD0J(MjD4le>f9|m=OL%?5I;zz!vN>xibt)_@2QR%bO-&sQ`?8u+W=515;Xa?O#q;=SH-tubry6GN0@a(^W0q2r?8=18c=*Q{?}8>g>$2n?cJg6DN*|Bk1VyH+WBuGjiL5wO{sbXY zJp-1nDc)YLRcVN$}K8 z8l@vi6e>@;V`z!w+;Wd=fbRRT*fg`U*}ILGGb+ifilD-L{ix#Nma^VYIwq;`v&=DG zO8fAPaF(;u+10cD^SK$j%t}-Acw4a zi}~8{Xj!FDoL$ejxHq&!VxQm+CjN~Kagy}<90{CQVVewa& zk&}o|fP;f$a%#$Pd1K#!8?p;$XB{&$*dRazFW`}pDFBuOTLRQfkN}bGsDtV!Ap!v} zm_Rh&y>h*Dl#(n~U5*dBpEb9>AJpeX}lbduw*YNP$ zFp-Vh`3p!}rz=;${kyghefsnXY|VxX*jk{+if?T_Rpd99#}(&0MUy`?!JDhhpD~v&sA& z4=;cMZgj^;*A{P`J2_TKn9F3KUY&YBmvXoFg!=n0?un@c(vkJ?&FgrcS3R!c=E#f5 z?|tXh`l}Sec%P?5-X+Xj3=x_+Bn~P5t3Tg#(=cUoVsTW3RZjW4Gbj4vQfH;oVObHl zw!*YH3%(!GX5?feuu$wlGR~N5`F3RVq_^42qr`(ijH9^%t_y%;Ny?ZUpA{C#f})}z zAWHXgJ^^_Oa!pq1Yiq}+r=6Ck-8nCw@fmfY0H_Dp1PvAS^XJb{%gf8*H^QT+#2}e3 zCT7wl0z%(@)LhOO@F96L#0v|Ej70tNW#o4|5Tbe1+1zM8gWU#JLrzU?52tnP!UI@e zVEI>E-!*C;_i_H?;Ryn5;DM(E`y!qPP!qQ+CP-5tC_-}NPBW0N4h#$=mvND)9JeO~ zZZ3R!92(}$d2?CLplZoZq|+LNC&Y8Y=Sg0l|Cdwy!Hd?Z((?qN z=d$>>vqO^F)j#9_5#-OWj*}w$K$?3`FAtI$w>6E~nIObso!={WzS#xI&Z&j$l@H%A zM~8_#mYFl`Pw24b=jVYW`{t1T3>YXV04YWD2o5ptA$#-66@ZGW>bfcOyqp{mr+fym z^Np`}c=$UIM}TCO9{sAZxw)Vz^X~tWd5-$p4VaT!YwcEqvSe2e4kW;~JwHF+-rcR8 zoSfja=1lGppdY&t0UbU&`x5|T{{=U1fpqAEe6}~v;$2lzG8h#HG_$a9_#NwsohQGix+n><$Yc6J|9I*+anbJ98!}-;|4uZV zOZSzUGO8&(;20n^k^t#Ebj-X+St0Peiz83SC`zQkv~zdB({>?AI|%fDSv9zdS5xiy zx5NK+{5x~)7ly8t$uNP%^mWzUlH8tl?+NZ63fPVEs?mzwB8rz;zaif@?{wYe3pY%3 zT4*^Ug7wDX7O45tj{i++NttVsxT-ufB1%uks3~?>eq;(q=;Nzs@meQgMxvc_ZVtFb zeb5Yen27oHwt6Qf0a^~4D7WXeg7%8I(08gLTfu9(Z*T)Rcx!>m8=YSD1b;;f^o-RP zT?UtczKw6)+%aGKT}G$guUp^Nu)RvXEF95ubX2+Is`+8wg1xsDfc;u^5SfQpv|#t% z^Ml4j!0rQR0V0FW-rim&k+y;fP*Dn^4X%?7^`viL8>S#(tW6l`h8125bKL^E*2=Ggv@s0^XkM z6|8T^GPfmj67V+;r9U*4l(yg*T>~hg!$~Fh${N9E{^YY`=cAY{lOKvur2OjO5Pht$<~zyO(>*Z)=YFNpyt1czkB7Es zMEo^kW2#dQZi*qy2rM+f#A#Z_0NFHfrg@dYgB+^j8Fr317Ie74>I+#e;jOngP4xfp zxEtx&t~CasuC)muj%m58tLyCH&@2ef?X@-tC8y?3fN40l3EK9)Zk2#Dc3KiK@PjtYpEHVz9HI&sav`9hjt`>?AzaG-I^ z`#|kTPZ&y!F#y#$(HjY zX6!W1?aH*!-#0EXSk^N5_d@>n``^M)^rg1Zij(Jmm@Ct8&y;+Bf`_C+g#pA1xIl08 zsW)H|^k6QjH$B|MK(w#M*wq?+n$Q$+_QJp7EAkz+8IZ*RgwrpWRko7 z+#0w;NNR==x1@1+y7||S3Fx@1-aT7^1;(WorW;?C(B-_-VO_7ZZii+q*KUg_hm>iV zytP-72QCy1@JFAldBDLE7{(3ps_5@*adc9nuCUH(%|lnHf9Rp6ozr{#!=uDL&8dGQIVTqS4i+R4E4=4$D;k2RuvuOZ zf(3TXB;F%8`sHEe9fpp1>{x=v$s$4Rnt zPM)@=?3VSv36b&bhkdvpAzjuc0$+Qrnhek&fQU+()6c6J^chfdu?k3QYkO-MhKd2( zDB3;))9fhw9SZ+52Xb(rBM%Atdpg3^1GvDD4hbX}-po?0RIT<21R=PNc}rBxH`P{S zF6}{xV`d~{*x_-$CHRR8dOw)mYu|PXeKv!^ej7XEGyVDt%xb&s>G>;z8a|TQSW7SM z4{#XQ%;vGNe@qJ>jCpbF-2H+ zB?(^=bB5TSC1q%W>=*VaZ(um`mAa%$KxrY`ew)L1+EfQtWm4(@Y- zFV&8(By>v6>e|CmFTeU5o|_H<9q&``$T*V|k00x#(rLvzf89zr86TjdJ>5{Gh4XAy z;hQgG3m=id>CXR(0&X|B=iu)`f9JRU`x^j>Z~wdX|NA+Ft^dD&m_dcu?f+hNvVDaZ zuK!+v|IRfJ0xl9@JOPNV{#bFDYKi9Q+Cve*$UE@jGkW22EyvwN2XOLJ8tt7jTkYh8 z9@(NyM2N!6Q;6IBQ`rz6VeiF><8;@uvuPb;})}(I6#sEMMlg-a# zpKt}6>Tn?=$M6hLj0t|I70*Wx_5wTR)(-=AEgP_9yP8TruJE|mw#tovYIpU|V?pgF z^SJD!@ba&C#7>V`y?J}N1)@@B8cL|VFVdc3^cC)@!Xs5Q!1pb3G6#c@2W{Q{cr4l~ zBuudS@HP#9#QO+FOHQX2Q!-QHO8T+(Ps!J>crBkg4YSot> z?(PPB6#MV@01P|_`8LqAZKobAJ5`46s2uBx+i{}E;0F{mJ!w)EBR5|;GT>ihPUjoVr0!wjNGvVSVQ)>Z^P zmuOL@nyH1>dz)9IH|%fIzPB@k^N8J<(*+Bd8%bE~t$a%G7X+=1a7j)>gsR{#38{+*Pk51c$76Zy%a;iyn30o(#n;MsWi zmpAwOee~sdrRBIfEdl;4@`*`U5&-Ms!bz{6?DcrDAl^P;b9uPB8!{)dQiOU9HKn)o z7Q5Il@n2^Y3U1}DZXaa3Z1${`&a3@x!oOg0)cED~gUdNQ$Ussbz6p_*K+vM2pL==f z$ImM_8QmBPD;%tjPX+JvY-XWamvx4CRyNTO%km1dqtK_Mete(ebsGG3Oq6iiwZaLG z+0$pp&3~lZSLb$d6C!GgP&`{)GGP3j^5bqp@;a?>yMIApys79`M+7>8{v{wHy*aE8 zN(KaDQF2w@i<~skctUU)Cd5Ld2^aqeKkg9d6h*R-aYy0@h{|fObaqV!Farmz#DloU zm{bMI3Z2mN*oHwgSJ&qHiP-Yf=9Em$sh!HjW~pL;@cqTZP2K4j{=qD$TP9%mzMAD# zO3t+y(e~ns$QJPKxn&QkEKQ4-jTRHQTPVOePXX?4*qNxyv=vaRw_q*f92;g!9vhtH-CA85Xm?&+*oMTSYhZ%wG34faCe~ zxUL>wIu|AtZ6i-j&^vEin98HA))o2>$5Vjib>5fl+3Sk85B+>{T|yib8*BO5e~Qv( z1P0gQ;3m(;|3uqn4xvF2(3F_iKZ~U|^S!R=7O|CLIkDt!$48NY?8Ned!_Rv5&9$7# zNSysa>*dE}a?H29yq47EG$!mjap$)h_%0hW3Q)5in;3Z5R1j!J3ZR=1L)&w&E8?;{ ze9YVzZQHl%Qq*lp{GnMD_qCfr)x7D^VW&l{?M(wL_?R3Mv4=Pfl(U1pgGRj{u(e>J zQ{;XoG$ji==gCd}>u^hXw_0qcFZl%?kfoe*mbz=92kvFp9yB9t~ zyJ`3QyhSvyuTBX4xxRa#je~Hr2TktLVEGCPP+HNl440 zofhkhtKmG?jM;u2>Smb{uyruJno)y>ysj7Uo6KAsVZqxcI){1(9WkLYczyZJ?|oWo zfvc!G`GJYp7)oU=qX!-d3Xm;&H&F@%Wfr-mb^ah)EPd=MLk_EyF>SRqq{uj?`NB{S zM*>s_UJf@_gZGDguYg4hy=p9=p1!7w&z5G4X0 zTiDKz7+?*+UBucUboF>ojBjHrf9Z1cs}Ks=Qe^qo z?h{vUF{j#s4>)eqBMhBSe7lTEpTu#MMi3qFuz%y3XewPxekrG+5*2oG6U6N;N&a@X z^sv*cOe!!rZ&f?b`J*~sM~ZO5Bm=OyJIz*4%jlf6Te;nETxW* zp-wnP;ORW5isfiFf2aHbhc|na%>zGdAP6W5`Py>{bjtWrmLiHH0!QS3wT>hMi|{on z#2dQJbGi(lM=&Z@woQ%5L-=P!3M;}@h*RN#!ReWK2)?r$wM}nwLoTxQ26Dy40F|1> ztn<2C#9pyor(xYC0tQgAEPIYK6h%N}H5l{_h6cWKbR9beZt|bi`iaiwm}M0+B`J<` zEsM@pYG!k*KM-9TsmyP^GInH@XTAU@3DpvC=KBTV(yjnJBR!mSxZBnT^^te+)?o%s+&sC6>32;@r4L|;1BCDFwJb;gQ|4kl2@S+z zfW>kF$i`fFSH)Bht5E->I=Yx7Vo}L~w6f$bojed9&HxEWj&yOKiL8L$MDl?Fl`3x$ z%`o@x>v28i3qcWRpmg=xGC27DXyXD_!@t05px_V#DW!nRz?M&oD}f?t#EQj}s5}?tUAO4T z!1#bjbuf(?$Glr?YAj+h&!56VYe!gXK9OEHIqjJNpfxD6)haCglLj#fU_r0;h9Lsh z`ye9V5yahm^YblHW zDM0DR<{+{t`fep!V*5O8-@pl`W1elLEXt1``HZ)5-)8C zFD*&a&*;F_2;pHPE~zEU2A%{KzW8}%r{8g9NfL}n5}8R{StDr^n)$*!1|*FlVmt4P zSo*8>_5^o&V668WpS`=UqoLiF8_W)jT0+q4;sT`d&X}@CpPHSDQ zxp{EUFuB`!*t&CXUHMd@H8A(m()UbmeZG;7+`iee@^0O6OHZu%4zv%Fc%>Bai01Y3 z>7~ON#W5$ZSd;KikEqa$S{0|g=G@(d{A~#{M@8Uhn~vXEQR_aoRk!tan;=xBt7=Rx8XuLgZe0+#|2q8FX;J$YCgNnw)>Lg+|$(1B(*PcF-jRvL*SW?0bfbgqEbr}dsUz7x`Db^l z(c#V2vNH*iQjv#^(i4X7Ibj>eq!;TaQ_dxai3TH4>nLzqnWzfO^$n(u20zkGlzybp zc(0b6(xJjD;bN-BU|#+Dd+_TD+6W8!xCeWzOrC(4xSdf6z5mzNRfjdzhW!D)0+Koe zm6(V+LJ0|FNF!ZRFEvsTkPQb6kW@iHLIfruG0L&g-6ajuqr)*!y1V%XzSsBt^PT_B zeXhHo`~KbMT-SM?oonEDwP5Z}BN?j?4J6g)dcQfyYLw`K;VQJX5d6^Vb5 z5*@tu-m7-mD4-GE7#Z6(o$bO=?Ym!9e(s5f3jI%|Qx1ba0(bAV%fS_Ig%tHaXZpB= zX-DGEDWi)=?d|!NrZtKmQu9^K+t5`=j$W3+N4}h-T$-re)7QZCR=m4cL8EwP;4F+c zj6jQ5J;e#NS9Yan%4FuXFe$cuQfD6F&e1vE(W=ed(9|0q<$jH?j5BL z@IPm1n%Es>AUnL9NpUu#@9yB8;9bRFy(#Cuo77xABKya?tjzO5u-pXP*^?ZQY(Jtj z{h=E~JJrd1fByv_5B^MLtMDiT;ep<>8ulx0t$#A9U>6ou$)Nz9;x# zob*i)VeM2e8z(jXW{CqO#4_#C+4Bjc2+ZH7kED~Qxa>WM7UJvH*_*J zE3iH`EL~c+w%OpR3kcBjwD{5t(?$)g>eFed=@h_9pa<4uNuKpU(F)25vF6Vd^Nd@- zri0KmZ7j8W_?vK~jbRk<;0^jr(@p+75mw#bihuwv=9D9)t^w(BIl{NgnZx2!g75r- z|Ap92dT?2eB)eI?3<-Ya38XWbz{>n7qT6QU`)-E~Zjsb?fAs!n(auXEbd8d;vg~MG z!sWQ9v_I|bo3Qj-dhqQO$6Xy3dvGCgxJ|}qdI!n-c)pl}x~~QwNFbwarUKDBk3uz? zRgqR}rxwAFW;D8Q7=1Oku*$V7g7LOrTdmHrbu?KCB!t_$GHyQ8*w{R`8OF+wvtcG8 zB@UV_OP01dMG97pqyLO;#{2mK93a20vDiOQB~0lJ z53j@Nr&rgKcNARq;oWY%W5}Cp(N|2xY$l*jPn81Bm$N@((d*CEWZDP^hvWmEJzFX| zLj*r!rXyZ(pbTrfm~)y1Z-$fx{iCg~H?X1AY1It5)WRsp1a?aQi22uq8ohWABKC%m z!VnWTeYn_hh5Yp`yQggTD}{m(A`0O-39~zg+wik99!}zFBDrZDzb=5JQ7&jyMCm@j zqQ`m0WG#Nf{a_)u_W8%P4R~-8HpNv#fZFu6s z>^aKs6_sNQp+Hsbv%jM~`*>b0Hp2;VfC(cIqqp#f4U6k^o-Gbf#BQYQ9Y}?8?maZ= z9j4q^!KJ>`qDa6~OPN2Ng|&263N&`OJ+9P75#J;e(O0OcJGux;pC`GUwVGV7RP-|$o)v{u`)G!!qx?z*(Z z{?c{br-~M*URhFr5|o=eMm=LvUUknno~FJT8e_Q#xLclhB;HQx<8l1^YMY!5Fj8Vz%30F)AimrI@0&TL4R#^BexBHOU45q0DFGa2 z(IA)GX%Yt{jg`g=xUYW%c2obg(q`g;7J&8+xIsY_M8|sn=G5GQ-SW02Hk0=BukYn_ za5egOLO0R`q@Kn0H2v@;9fg}_c4hfWuvPN{eg2Ux3Q-bvgE;5sj+6*aog#fip3KS! zqSJu3EIvr}@(gMVOYkEZt;K91fCCrj1?a>8vr;Xfdg|-Vx=n#C&@XLENK~$ql}4eC z_Ozrnmd{cYX=g$ixqkFcEZUSXI*C^<+%Hnr!rk=}gXTC%`LXp&c;z zuKac&&gf-^t!HeUW>k>RKC6%TNb3QEz-E$AeKTL(j9(VW>0nIBR5-6^eeiGSCtpMp zNO-^@kh>;=&#xhyOXBrnSkx78ep{Oedr4+I&5`NKRzDYnKT#CkG3UK^IEJ8i==%|L z&7%-CwG^`(Te&!-X6R!RI}f3tJr`8>F4SGobu0|+ zkXlL5nxuKxN!yj}8n%`u`jE?8j@2$Ga&_a@F0ZfAS`!S_X6OZW zPX!-JoQSYqMjSWNHA8SlpkxgiouZmJ-tPVl9iZsTSD!#jFNPP1RxRTzBCJ04Zl%*( z?(2{{{^qp3KG?v@lG?skz@;mFH=UoCjE0Cc5;}xm(QoDzB=Pisd8zM$4V87Ssc7bh z9;y3uKI(G9OB;MEu@6`?J})r2`W3^=F5KO?f0wY6;|;j2#|*FE@|$K=qa1Om_92v% zhz5yjRNZPi(U7u);d3>M;2jZC=iP%}Cj!If!KK8U<@z1D*is?!fBG6l9VDHh-ctf$mqap3kU2x5%s^enhN-K*ar*>i3e2Z9v zfc{i@Urw0`RqnXrk@i11H88!|n+k+r3+O_v(X3ZcCQ^SJzMSmocy&_ClSeum?{3w3 zaur-XsdjKx00yO8mk2mw^cYZs`HB*EjZI7APE>1qYvMuX$31Z{m&>9#BOSX90>2jE z7jAc|6xIDfJ!{+=Age?}WR6V*BHSo%1hvjffWGh9((Htn_9Hme=X7Hho-#LAq`aT% z5R#S645_y!`^Le5-`FzO@w%&SZux~GzGaSSK7QBP3)o1pkLy4U>OlJy8~X(Nz~qfx z0((SrVVfmr2!&%D<%+Vu@`KMyU9OdZPY0w|Koi1bn^!4c1RNIkvW3 zcH06l_oLl@scAaq<~&FSxj3&&7aAy)5^As1Q)I1hSRN6XYy&CKYLhV#P8|6pDCqvt z{R|MGq12NQi^-lI*oh~K`#o=x_|b?V#2%Xg0P$0&(fL@bm09}?u=u)uN{s9{pHp#8Y~p- zd`km{OrTBw5Bz;L(XW;`FQFDWd#jGb)!>WfT>fzs`cGR>|EBHLL#`c{q_cfqnU-;w z$Qk#CS*Nr)rWx}LptLiy{NA+59P5dD%t(PvMX#_@gYz%=_k}kvCOTv`qN=DJax;W6 z#D`nNgmm?7WndR{YH}*xYja(Q=ZU0Gb+p;o=k3qtVRLe^z2SERFPSc+m6b7g>r!;} z80eO?OZPkSQ4}n|oG^I|(?vVIg&FUMoFPBDnsvcyq_Lc2<_1sKDx>Zok8gHlbjKvB zYJ9_So!EibCQGY}>3$6Pgq6DGcBvP3t9ym+Qut*mk5qp&uAy#>dagla4R+tSzhMKU zm+FYk@R5)Gmf?*;w{xHw@R6;B?&4s-5!w3gG6v_>WtY;`q~>H-BN;H9zFPm2)g0If)5}g+DDnM^aDdM7DW~o7(S84(0e$uQOM@;<9-YCC z9D-GZny0nPRjpku4>@#)1q+_24P0r@#zK0aOC$JMT)WeNV#t>We29qwRmB)k%k)53u z=~r6{@88!N z($<=Dc#W!Fy{dxcWJD3+aNs~75Tdx4kUR+Vp#%g1gMxtqzR6!SQUU(KT8pXLf! z@4sMiR7kiW&}Wdi5dROS)Z-Ovv{ zhavz&^q)VmM9Y&_pnpHSe_cs#BK+TnC<23caB8Uk^KukJppVl3X`C}WAy?}|+uv1@ z!1)`%&N>#| zl0dlleJaEv!Sk^Hvuv>>L10iAq7R_YlqXRC?oJN6jnik%el*~Fzo@gwU1ZYtnSj;s zQ=yU@{AZ6OU^JaR0?&5@iCV8roj(6hhcFbj|Ia?&u$KrCALdEF5B}aGihujUA z<;!uG>|@eiG7Ax-0zdT{A>r>6&MDs?{2dk3J2ukse9;n}77e9uOZ8l_L1zNEBx*HV5*|LAbMy0NJ~5}K{P3a1Lcq2Q^RPAf0YA#L)}eTqoWu? zThD;GT<3lzBW57Qf}My4f%I)9**KcImKQ(aA?3%a-(3xk40Hr~?SZ^xHwdHA3E|D3 zLUNb?#*lpsK4+&Vh$iX~3kih+C8{oUR#f6jQI|+I*!#uG`VX55d%VlKg6pV&#HMkL zeT!>#`?~gH*YaSsN`(8?HTCxHHW&yz19C&34@SdWks{t5t!I@Bsk=GabC5dHi4gKl z@(v7yM02ZBZ%Z@$O5<{kE&=kP17KPDnOn;GbTm)5ra|(GRRjdyT$$D`Lsxnqt;Em|IYS` z*V7-2N;R4=tK9rx^=$2rfQ!T4mv~vt(6}kq^^O~|+!Z|F)C|3Y2zE|>oeio!|8%3x z1)~C?z(J}oyMFW0=ApQ`eN9D1eL|$Yxs5&E+D^Zrgir#Z;9~o%iQ0?UsfZQU)vaH= z-Y_n+*X4T$i1ni-g}#ZRIIvM^=Z`SUg@$>Ro<#XBH9>uZnJt zWP?(dZIM7IpYXJBMtXVa^*rhwm@PSZwYr7#> zycLHS)z+UQy!Ym3&p$ch-3>YM8rz;yZu#N%9##^HFBkPCzYnYgQ>d$?WXepb?H^6S z_c^BegzGP0M~*#yk9663S64fu9nztyJIrtQ9UTjC6m_ROFlf7_y(OW2zf7(^&U0`i z*r5%`T3uxo7GKUXM(XP7_rTwI&!f@!R!8t?_Z6Wg0ULIvgT0 z|NGa~l;&qQrG{oVqwPKUMB8{k*?{=gDpoG`{66QUUaHk|4s{S zq&Ca`)f7;0nE5(a*Q~)K0N!Z(LFuN; zbYv}-|NK_+JAofAD^H)^x|FG^bDle0e_ar8(w z&o?{F_YV)U#GjzX$EQKOk&*e1TAPcoyxk(bnG({*cKd5kirgA1eVD;QPA+?2tWsP3 zgYKdW4mW&UN}A>B8pxPxVhMl08=6ZS+e(!k39G+l?)A%^BSLBEF@8Z&I^FIc^M&Z> z>wL1SaEtDwbV+-9K2sj!Glpt>nM*FOu=OkTj!vfbu8t)YazhZ%vq1L~AOiiVG?!Mv z)O$KEMj-7G5ma77*`2K&zMS3`YOX(n_U6MYw!X6fsrPjvE1+#(pe6S!PYikFpY5QMRN?(gC zEQ|^(c_RB-MT6eZy;F~+uy9g3t5LYi^jA{}y;Yv2m(GeHVUFW!W8i@dpup zDsT{89IR3fXSa%>!6YSVPd*6rTIbFJn6It1lgS6jEY#~uZY2V(51@N2lzGsZLh25Z8Uh_$(n#SWDhs@ba4F z!wp_2S*gKHC|r2&LCfC8N;c%z7xqsYrO$W}fF->vPAsZz3981aQ5YC(fyN)h)cQcU$2|CpK;B-l1DoF zKflzCf$t${b$Zu`CSDfK1;X7J9?A89>1u;3UrYpxg-HhZ*CZ{TfOM8Jno!XwknosI z*H9Rh-?FN$JX%2tu46`nQ}MC_SEJ!zpx_GeL~a8xG!PZa1rMAf&1x41Xb73w&%A{4 z9?(Q@xJ^P$QHv1pj*G4+v4c{?g8%(rWi5#jnu-k!lgRkJT4B9?~~Zun2L zct)2drY2_X!;>Fu1E>vVg5kmg))qMFs+c-<-)8xgwV@|;=@Z%4kqwLtDh^lJNJio7 zjuu5!<`b#7zP{tSZBx^u@i-{~z(JXy{i&tRl*(! zz1RFDiI)0WF{Pb`__B$Dt>N?5W1fUw41VwvPJIbcuK9_sRoegmT_`Nimiv^}na+L4CI6F8Rt=Q_OmofO55P6~- zS7YDJKU6S&mpEONISGt@tjS1-UATGlR5wO|{?{FVCpL`rXDS>DhV5{mh%+tU2OjRI zgcOoG8FEI_i{Xxv_r<>ppHQHCcj%Kx;$&Un`zneb-0=wR)07uznzDtW-5nV}*&RRG@&SL^=v=6ED-x4$G}RiLinXF#r&?|m|! zXDkW0Ox{Bq#AKY90Bq^@z7b90z>XQSNZ~3 z60Fgoy!JZ`69?2bqXp3ia4^vN#toU1(+jM^&+Tjef~71Zn@Zb?15Zws4z;(?yN#6= z|H-XrhKSZ9z*X!<%xDCKe!Vjuq%uMfO(F1|@Lc{mJWgWIL)N>+T1fB>M5o_Fz}7Sa ztmZ4A!}MRCgNGX%vYT}7c3A0{bnm1h?@`DxV-J{gzL_zbc!y0JaJ8L5ztJ*cLvgjh zduS0%DUeaH;8cm)=~yn+Te4Q~PZM$>5&+$Av~_W!-pa(l>CTor%zM20Yy2cM4b1sC z17Lz|{kHG@gHl}`(w_8!kMas1FV-?G_qiXH8%}sXG`A15E$}Wn;B$f9#{K@DZ9&)7qYW|gODEcS@W)c4k1grN&lo4eWn<>(9Vhf@_6cxldSdG_h!)f(Gk zn=Ylai_H${Z3AP0wRRLlb$g?h*E!jXjY)?WHRGpyP&Uon7WwE7ZHy_D8d; zPMUg)=o_4*Ij06s1#+ggOFvk9*1(HO$6tq*fR2V_GGalWi#6V*q#bjk$R2NX!pxHF zqRYgb=gbZ74;9hB*cwDHbH7jYXqD#25g*BZ6YTlBsg0FvFTa+nl4g{Kvo)97Iy~M= z(8bx+E=HKLd!{o}Rb=A(OXv)eP&nVBf3dL}?^zJ>JFM;D&YLs%}Ra z4;?=hz9xS4!IuL)YH3n*-PY;x4jG6g-Q(1aVp_c+xcGb9J-q88P9If=i+x3eC;LC0 z?h;GCOu37XyD@urmGb7D?MXzOp9W{t%iWQv=H~yBgwhYX63hRdYQ;Ol`G~+`K8i% zPe>W<0AUQ1)k0dClck_8^={s7qa62M-y`FRVtvB6GGvg)i#aDwO|*t*%@H>^Nwa3s zvl8Gx3zbDHv`33aSLkCuJ<2)2s3&;qS2(28YVn*aIJ-$xTQXTKAtom;Vlg}*H*5q& zj9Q&r%)$YN&BaFzaatRb*>Vno$5xrKBLu+x0InAt8^>yNf$AR}1c5ZTDkV+F z5ARQFhOg4Q$cA>(<#P?^UfF6q(WtB)ciTUuvX?`y1WF4O%wan-FGE#G{DT2% zMs`AS9DB66A?B$R#bYuhlW~m!{HJXpae}`!qGxp8d|If>+VgiS>IIO_Zb~{%}ln@b~Yp%#EQio z+Lt?&A}hQC+)Lcdb}h+{Y-Rv-$o@qaj{&b}rdW6J(8x$vcFGuCE83GX_L~3Jk5g#S z>mny%gd#q?y#{)gOiR30V&gO>9!-K`zEvnkRL$Yq7di$;y_ur@!PE4o$6sE{7nBX0 zy63U4baX6oi>F90OLR{#u7t4Oas`+6VD0f&=9z^hh1Q;NhCZ^!NE%T^B~XdH zr@JoElmzCceKBt-%ne>{xNAGHl`Hxs-7u#ZWsV41ZF_~ul*_rS8P7iEc_&=CkOF-)I)Tu?kobctGAR*4q&gYX5_*P^*x1S`rZ9{W_jiY~i*m7=>!xK3* z-Lph@;dvCdJ62gXobGg>u+LfZG|foY>Bl=;;W8(7H;Tin90S36-Xmxflv;hiFJ>Ty zh;Olw+opl9=){Fs%xwdInvS?Vo3_w~O|qoaRk~A!fh1dPU)=qOdb8W$iB2HsV)92} z24~ncF=NblW@-}9Qe#`D?K9b>%Ql+sw~^<64LS=8*~2v^}iCr=Ruacj_A z%8g^-M-gjr@P{`zU)GL(-tc-91CVU`=fG*&{Ug2W2WTSDPBo=+?YH@0Ex@Q(?S8&4 zW`}t>ifE4+C{nQ(8O93xOF%<;H&toQ_~S}Gt-Z3~G2$eX&bcufwn_4Ieod55RQAHU z?y-dQEm7281k?N}HmSh{4nZ0rwsdZKQYi4%GU>91M7d*3-;=#ZsJn9Tre&us7OtzK zhk#6rpgTvH2X5}CYB}2P#?h!D$DQ4Q*7kb0A3O=&4_ygKd!wf^#i|e~_OaKMoaL|N zt6VNmiYLlD`Z`!w%hQt|;we9-H~lcy4l^_!jO?Qwuh)c7S)w3tS)WPewv%75h$tmE zUN&^&(bnY#s1-l*-krU82clT1Ez^ic3RL(MB;n!fGCHqwIWbDxY;1T%YD>N*AcuGD zWUa9cj0?2Ay$UOFa4K7CSs|I5=w#4OCGJ7>9uxgdkUdt!?S96Y2rp(+J_;)ZhDUq3hJ&4^ zLF~l#?_oi$%$;tUwKydT`bR9NIkgzRzL%mHc>MSHMPYwO4pPF9@DTy^c#gXuKtzIY z_biP|BE!SFno&LVrWzF2FS;35_YaT$cspuxH4}|4+1V|LBP5a^YiBy(pLp^%~ZkJ*(u7pYGBcxN<@_X%!xEqnEP8W5}y>E z%TR{-&Jzpz(#(d;nVJr zW&#Ph89@KK%=IvNL?LgOedpjxy;0$g9^83%8~p7dP0R{gZwrq{Pc1LmDZcBT(SgRN zlwY?BBGND2zJtzhAKaBx7wAEJ$|J4l0|TQ%4n|Ou3JRY;!bK+}0Kk`~s+Fz-bHQM@ z62NTV>r^@O$d=L-Z6~s9wP)#NPFC7uMMv(73TS97SDsPR=u&xPI7VWB)V4bxay!sFHq_Vf zf~f*KH$!-|v}k#v0}DaoZjck)b`3cCkaKFAs}{tWFwm@Giwr;rqvnYU0bi5a$?<1I zyk^SgF1x4FIVB4N65z23EUm^oe}`~$Wdvf7LC+|V(3lsrY2FM~uMN`$!)DpJCD^-` z4~U`eU$kex6Y}bIu>C^%>y74`{S-tqPV+W}!o)|Gw_BHSfNh1SBIu`0lXY#bN{*|iCMayuhdG20bGP2Ivtg0Vf z=yl&e1rF)Q86HWru{y{o{-~97NE7Q|0QC=zcKYJ({jzz3>h>!-!yu{CW;PUVL{91c zP*PdNfP#yGWZo14+O`#TX1RRb^%P{oBQTq`3~6CqC0ZZQ{Fb~NS>rL0}K(AZ-t;{H!sGbym|LZ-Ve0lPBy1+M_ zjPQ@R`mJ@-)7;zBuDiLJ8ULEt=rZKu^gDx2u!t+fa z1j`+tkCM6|epa13pa5Ykh^LU&cV(&JD3mVplcZK?NZTt~w$zyZk zM32Xq=kC<%CoMgrVz%81tQ$)r@_BC7P+D1qv*A9#!O|U@;k(AW2wiTRdScQ0(PZXi za}=}O*f}`ZFQ+XY{MFLc?WWcb9TSH@B?1cvmwW_Tk>DFv(+5>-RVnA;RNaEPNq8uc z$90_qKwV$3NNFr~&x)jq%<*}hLUEQ2;;Xr_Qg7Z4hfu^>&wyK%@90m{P|;4+^k;3J%r|f^JfzpwC35 z=iH5L0Tz?+3x11hf;P`}JFX*APhqNEipeO1F*@k)bnKgV-8vRT@0dvB#_x;uMRto9a~$)RLDlT@wi2@MB@SK0 zb=qTI?jF()w(!fjmrWF1V1Y>$QBjjZ+$CZSQFs|Xi7*4jjBPX-L8HElU4MNbuMzAr zv-2VFx$#YoJTmx#GK0bX&eKGdO+X}?PbZ}6dO^y451 zpf^qw91_g!pFrL0m5VnQy%&2=6Yli}YMTJrC?ram{ve8fuqEQ}=93qn7qSQ#FPMiU ztduG;Y1lWEZmt9Zr35ToNKP`$L^YKncQNQ4&x4Xuc-I>*T911LRSDf3l?Tt|2i4o)rFhDiP^ zwERoFy+kwOB!6MMafc09=AtzEn2fT9!J4m+mJ;M}iIlEB?SoCD(={axUNizC9#i4Z zXczGdCMPTg|1^ltTxwR7If&c1qQ3>2&&4Nce~QQs=m?()wn1 z;)M9j7mzT1DtQ`f1EX@l4~{G90<36Z+n8q^ixacHY=_&amw|-~Kx_WVRK1>Pq=3x; z0K1L`mkoxG+m5y#5alcuI&$x$Ajnt+f~dO>zUGmtRZuKe%Gw(&K)6Q2*fBO-FiE{C z|E4A`IhcWzPU@g68DLN=1_N21i^|iP6wjdF0g}X8)10ie^%k+4OqjCj+07Pbaiv{) zni)e^Dh>YIQ_QPzhVwv4i_q;3+wcrkrjc<~n zrkOEgHHs@s<0&ZDx__#>S1{W(vA?vb#Gn}ylkRw8mBlEfLh>aW(NEWAZy;2bkyzcU zOfUtLL^N+NwwP0%pA%$#6V*oJ;Bckm9@;-%!RWVVw_~4uRWpN*EA>BT6RVB=KDy# zxwo^`xiM7yh>>ccVrb4OK2};B_O03D`jd|v*rWpE`SqyeF5~3nZ09(|OHyM(q-I~Q z^HMb4n2cNU*qA5)vSrS=BYA29HF$CTnO$bbh5>tT#swfH+OJ%nT_UVm5TXX>*n{?t?N@F3Kwd_zFQnHpkSRba>7 zUPS~d8i5Zx$zoN!JprB41MYSBuq9<(z|iV8%F`Q^XPoiB~E3_5gJ zm#ug?zuw;(lJ-;tvVHCK==8H%`{_ggVlrD%JZL<$PjQ>!86#YcsDiH5aWYp<<*dgL z|3zQ?S>8bjYLsx*Ta(JDs@AqtNzzIij|TIlcf??D5_bM6JO#FN*dh{iKK(`s#r&(g zD+P1gM;S1~8ay-usOk$XpUeR&S$cn8;&Nk^>y6fS^y11UI_7iIxwy+dF-Qt`{3DP7 zWpe`Nbv-sv?_xvv`e^uP&h9pLwI^yit*HKbPSNxMXchvK^fwse+&B zYYjXs_gSh*Xz*LU)-5+QZfa{y)7R*XeW=PFswk9qTb0Lf$V-LIIO$uBx%cM zSPD~C(SDrE@#h%=fj+V9qQHC*6W4iLoC1Up3#Y2da;{iAT=8`+@k{aLU{~n6d^Q8< z&r!Jyo9jBj6!xsV{!DEM$2I=p_>-n^EbiR`3mY3y4(!zp^2{jpjp4J6UJFnSt zz|KOQAuWlWhA260mygsQpGkLB?Rl~(dbu_oQJr5<0d0fOce^&D(u68Zih8KPT|`knQu*QS-Gj8%(eOPQV+Bbmwq$7i0eA0GpH z=WP|aj;Fdi;j;7I{JD$vz(Ig-t}9;#1>{W#xSz=YDQ=l(7rVi{Hn}d7J68|dFRLHr zHKuQ?KZ2o5c=8^5eoHNT`(`*6l4W(pd=%HRtYS-f~{7F^MWoUpXoE<~7ZT!m&Xv1QFJrHM#Q!17WDmmUtE@l^EJ zIF2}jEXGCKF~VbHPwXu&{LO&Z7LbHB2kM z_(m{rv(}Hjsoyyuw)*;k8Am&ZuI6yjop>@K(SFEOHxKQeK{P;fpi&_Zkm-6}v?BxI z&F@&{X3I(s#ltGs%8>d8trDil`G@3GYYMQj>t;1#2_|LCuoOnPvIEl zIPC7f=&RKlI)3jCQkzef?kS)B+^2o>ZOyEB4AFjW*g~KjK==}8WMJkkQF?5yD5$T1 zm7+>ntX;$}sq}DhGQ{Sp6ABElPkXhoP>x|xbHuD+rP}c=G3lVNcn4s&x(g1Du|Mha z`qO)o0Owr^uC&O}I6nTz3xmSF84~`}H@Rv7@{jBC=k)Vf9DLeC1%4^QArOIG-VNc{ zK$vS|R~2KGTfMzqO#3AOE>R`%^NTGMrP43HeEt(%i@e9wae%r~5@7+tWG)ehK4x0S z@E>U+fixFCKyz0gt|Ejl&L}5O4Ga%{I4Dd4qH?e&k2L|A!JDL^j{%QC!9l)~;e#eq zRbMFkhwbtUbG>PNm$GA0&_3#Yj7CpD02RnhK%G3+^`;_D$(2Ol0&H1S%sKXpyKANd zqVX&b6BBdP1v?rsl3cbHGn45WNNv$SV<4hyqkVA|=dO%LFaD)bZ&TTm1|(PU7s4g% z5PVF8`7=5U>TATxOr2_eFBZ2sx!Wri1uK^DM%3mQFzkZ7U+5}JSNGhR@BMPn|BTVwm35t>(v1mr_RP%^hf#ia)%_M`aU zJVvB>YrifdkSXu*Y8>EVXFr_}l$TcuuU|p;CtxQ-gW@spCi41p!k*k~G-58nl^if8 z{vPpd8yOQb-PbHX%0Tq#9&Vl#?9QlIrBx(Bav)!Nw|b+la$P9bzl}n;)44Cu#4)Y_ zNwe!W2?h)Ad3-x&=^<1$UQG!yL?kba0Gn$^$b!lN7Za`QPzG6+cY=cRj6=ZyyQ^+@ z8p?izoE>8>?Ish^*H=fYqh}OcD(IeB*z=k>)8at#!{(~}NVIO}Qmy8A8QGQvFCZzG zn#OYgde(klXf{d`)ITulv$o&~3i2hd!L3tzc~UzisD9SW3$O*5x+zw0wNQ4~*AqFKvVI?0V^iWL_wHtFJQ+u4%(KOt(%1Kl zNSN*s(SKPxbd788>OT`6ZI6PXdMQU*5q%*7a)_Z@`lJ$4(ojI{8=rYNe3CXQhSp)} zs^q!gosAZao86qyK;wmPDr`!HrR4+r7ewsP+}z(XvkU8GF+_7nujsX-0x66i zGnM>%%NfcQe)vZbCX12t+=McaX#JX}bL6y2#~?#zW?=4KtE)wKjoMPzQrEL!=&gy9 zDr_wpHHYS+G*ONQ$1N8DbVjeP+{hWH zMo6qCaVCms;Q)&JKy+bA5wxazSJ|R60IAHs0(S3;7}*wJ%%Y>y2dneRpHN`^`$tAZ zWb*F&m=O`Bu@Vyt7eZQEV2E?O#&cl(eFSD8=FdX2<`m}LcZ`gQo+K}A7GBV|(G+S4 z?T-{UuCC~+lh70hn10bTBBrTqzmSul!$rk^gVi|L$1T4U!RTdtGgqM(WN^{Hn`sxg z*^S|@Ep5#lT>V*TQ^^?pI|&Tm9Rgr=3fw*Y1;7}lras?)T;H)~qhn&GowY43&$y{e zMceL+k4cLRCFIdx({W7Pr+mGOdwhzvDPjW0Go?6?0`fQ>rS~5+U3T1t%w50z9vjTf ztBOhP@jNc$_of8w$@X6RhK;U<6nlELy`5^;T`QEV;8oF5*M?1Ic9HhBSK#%ne@iFD zV0bH#!%_Y;3D^Q0x$kw6KVhXl0Ks)i)}zlEvzzMH4P1$0I}MLGP4Q!T>B@Iz^7|Ws zYc9uG=|6!i?ttDrZTsR*kANP{$XHn>*Uv;>_IphoHqUp{+N|<^p9x3NwvT>!O0*d& zl?Fo5iXs2xFvAcD9iK5@CGN2x#p#+A^4tiEhlC>t+xQqHYMo6?NmMZVJ>yN^Rc9?% z`=P@}%lY{pkq&Sd%@sjG2);1f++h$5j|R@rs z&*w1Qo%O__J*gNPJB~5Ti3oTwO;3eHeY`xKfrjxH$XnJFx4D|Ma~gtGS}1XdlQ;Xf zs^KF*z#GQlIyq9L1&{;yBmiF2fo>=7#MS)@MNt3-i1Jd9)@wYH`Mg6qzu4BjyHdt6To*_0QlF%ck_vhnOhwDK-P7;m@M21I%ZR}i z&Q&7GG_!&J9DhaDwzUv19Qi8-q-r#y4LoO{2#~%m|AJb;-X!!6ANeLX`&t6zUH06* zX#pfRzbs%;8ePcEElIaUe+2!(_)E1deXru!0dt@GPtl5etz5j}`#Szv z42t}2Y{Q24MFn+D+80`p9yaS3%a$;)^)}{U_7WrrNYzNCVUpJn%>J!CMG6FaSn`Pu&BX8_fED{e&GD3tp5L*o`4upqEa#95T!IwJChS@ z;2t3|{Tpq~^39OLq-SaxEKof!MJxn0zZ#bhm}}IesDkrHfqrEFu8m1|SN7hx*JEMw z#XBdW!%v&Tlm}GMjq?B5p|X96C}4yKdiTIYjGg~gbAtT;v*sie6kV__uNS|bDTe)( za^orjMPMI3=%49FRr>$$(v$zERw(n&e-7+FbFv-O84t1fze`#ifs&Sg4iZIPV1G{% zIJNCQQh|xqK6r(Mf2)pij{g+AcXFx!i1fXPfsN~ZS^xA0NUGz`-+YY7A#dX^B-4K_ z!X6c+iBN*iX(%C(ePS*szu_-9`%GF9|NAzI{OQCCC)nWk@xc)pLf1U!0qU|73!hi& zV;~vywz(tCYdgjY2R;xYs6d_T-!@S;A*XBN-Zu1H<2@p>8?dzI4+S{u))IgC;S%@F z*YD46tQ{3?rH;Ng*x~U1&$NgeJ;^5DG5p@d<1fKLJfw14GyFWfq$vLe*EM2ddT5Z2 zRY7oixCMPq4T;T_U+$+bGc%i+J`FUWKaL8n#q9X<9EcQx9@|$D1$&+(=noH_lU7hf zVco;%q{hMJRC`>#2!|SrBmYd2!g2pKt^e^L5Lyk}lwVz8GSlMt5mRhv)Oe7dqG8^K z2m$&fOUJNS5l5OdM+5F93j9rdBXyX&e1tVUPe@X+u*5uG7nWi>4GJlj_cO zs+<4KWaX8rCqknd*S?8OG%X4-x2U}jD~TrJc|D%N_O>rA%0NjK%Y;vB1eDE#KzH6Y z@t5DUih>_BsSy)#E8o_O!)v0_$WHxZlBm4+3hr&k=QcW4HK2k1KztT9NO}raKWgWG zXg{Zm)pgDOz@7cN2=a=W|2FITy}efmmnCnLV?vxgNLIl;_2-p-hNE8;VS=0xHwczO zni!PJwCD@elTc(oIXd(9zC7JsP2E**?hR%56{?2FK7*^_XlQ6J`cd4eKBG)fG{7Ax zmHdfpnd;fHT=UD-UGBvM>W;V(r4E#^@eddJEz!`EB9fZcK2xMcQfN|TdrCsjx*$Qb zF}D#Zyq;4)bj@<<&(O0@cR%x66)4aAuzDLXbxypx!)=b}k5ZqT9zmz-1xi_@mM-81 zOx?a=tA-yes;uvqkXx`5!nN{!z(unhKG0S?RZ-69(SNwO>mSTj#qFQlGCk_ZePC-8 zB+8|^9l^*EX`?2eK%8$iUa<=kRHZd>o zSa5z2_#l$QxI=TZBdZ~NblL(GBA8sVu`yMZcA^o0mhliKCWdeTVaq9bgalbvFnV40 z9q45T+QQ>daBYCK4~xMsP9;a=5aqNWPd;4^oI57lCfPwhy zG7<_da;7!{BR;Y?ulB{Spl5>*uOQCcGlQq${ObRojiQk42W zAd;b~WGz7ZN`{q?(Ki&%?v9^6O4&5OzoBXO)jX*v&A@Y^0bIxef^|lNX-Z#6%-&&;LNGl=oY-j>&UojH*M6E>hx*Fv2QsWVe zInltW5ouhQKFuAiwtsrE5~6f9Kj&b=m~w38?@gfbiR8`MeD(>Tn@tG&A~UkB-#AXWV|oud?28zQ>Q!G zn9cs~_j04Nuf{K9Lq;bK?8^APbAL7$1)Iw1BKD=NWB#7I&Im!WcMVboZDi4KlD=%934~Kh-L*{!y18xJXL zJ2BbZc>|nR4~GV1-&O17h=gl3Joi37vdeh3b>x}f=~^7s)!o_J1{WnJKNX)_RteVw zYL^mEM~fF}!;Sjax!ym!4#kFV+#&ku$Ywhr>2%Vy;IENghe%Fa_TX2~gH=wu4~-WD zCaPUwH79cnzmvrI)qUadsUHHFsL(8P`*@Bq2RJt1{dy&cCv|@%iT$7(;`^b;a<$wm zl`mEXXrKRR{OX^$AS{BYhiPb2Cx zBIr?)oARhh9PJH%D{x)uw2ZQ&Tg_ufaXt-R%Pdu(&K1d}d~p z%gf8_2M4N)Bkxs#A;4J<(bjO62x-4kQG9X!26DoW_V$PNJ#Qnj0)fcP-A&A`qf=-{ zpFPPw!!kZ9fq|F`t&jjiw0-Vh3{&Q*Q@QN%oALgAQzR)m;h&^6l5bYElMSuPL zKHS8Ge5R+rD5?z&4(swOKtdt+~} z&rH^Iq0ycSq%)Z#PRGL1`*?FiZ#anl0UEk%W~S!HQXYakCm=NM@-o!AY30#yV*2Go z+9`R`9`?W)CM5P*VrhH^y(TB7RnrYU6t7k8;5PGOLB*5hgXP|8PpPEt@Fma4v2Kof z^+b~R!Ld~^ZPyekR$S&~bbN_ZqZDw+yph78pLECn@b?c7|ImIQv%B8^j)2YZ0SpXm zxN@dQS%0fH++?ZNGPrIp!}GNxibyc__6HROxHl;D6SYrC2{j%*J{V}F(H;VHyxP*l zlp+Egwi|P!=bJP7*LKBI8#M|&^TBi?K613hWqS&QqIaWr?@$u9PCh``u@Fd49yW{z z_S*W%JHoz1*Eka%RL(FA*Bf@9(I1G9rPt9bH|%g_sx^{_1sB9cycZmP@rg?cNY^yQz=o8xW-$ z4L(nIXI(2R_}s3yeoalBpmkuRdgrUJ9CrI&MapHJKpT7xyLO;W($)}%!!g#!j~~~! zwjc;1^UIMy%T12Rk%YWZp!=sM5-u)0YV}%!S@;i|ez|>-grXiEJclzyfxwtVyu5@w zJUrI6wp}Ytj=wg$VH1;+^`7r9%By3aad6Sm{odC}LxYsYVK0!uG)_wEJ>rNV3|P0J#0~ zc>Av{ZVv~(O08+B>$^HZhJC9<9PG+gEwxaX@B#IVJGitT+Y^#nFP(!(W6TY+5UJ1x z2nSMv5E|SY7Y|6j(WD$?sqm44PgY)jr!)4xcFCNsS40x!YVx+=ti1Z*gpwE*aB2kd z@)$WO-_R(iOaShBxD96E7XSiI~IkvYc|?-yuLhb932gP<8?a!JX@k3 zNFo}c16+aO%V0DzaL{6{B|H_?Lt#2Rm)kvxWCD$UN(!!8ofRVJ{OZcLtc+HvObd~k zni|B{7l9w0kuip6d$l`K@A=lc{93Br7Qte|{0O67L_1e|zR2nLnP z4ViSZ-|(>1{=tFnc7L=D_s(poCOjb_p~YHjnkt~cxqyy*0P=Ni4l_MH-RWWz(mW*) znJ~-a<}W(WeE*=||27vA)fx9!iH=3h-LW23f@m~&= zn0qc75X%?lAWqEHJ9Dx!VE{f?OMiB%+RP(;|N4p3jQ z0jMM*AdtMgd{jn8Byd~6LEsP&(aFhh+S=MqPEMa08PVK$2#;nSt z74m`D%=oxmPEJk%f(n=pxF+O71W0G0(hvmPFetjA~5PqYJhrKp+Hy1$TERxCbX_ zfWh6}A-D#2cemg^xVyUqhv4oGuler1?+0rQGiyzEpHpX7?W)=}p`qWUq(0Zx*H=62 z$uoCfwx%Xtp-ft!+sz>{EiJsOtE*~*CH7jId(cP{BY^d|qs$*6 zKg7nxF}q$GrgJ-e2F@`wgl3x?IyE)*{&WGn`E0Q-E{8P{B_%Ad2Jn~+fF{(vUzUnT zuN&IX(2(iu>h@&0+T~0eFh|`kzmE_;dlOl#H#)7qd;$0bmM%_htwfpj-`*apRhf1h z_Yu~|57W`nHX~#2bQq1J*}Le;MNPm{u2iEEm1$5TeITcy7S5a}jjH@nb7Z=urBm74h)vn9Mqm2^EFY{vr8Voz9D7!*Wua&Sl9@k!tM$H2hA zU-#$45S;@9u)uCXLM$$Ycwe>rx*!2?zw>xtc=)rMo11x*O1U~4L?-|p(J?U}zI^#| z|L~9lAZJy5f~Kif>#rED`BXNGjh&r$DE($OEn@9GSE4KoL^OW>{wX^-Imhsl2QR>u zA_B`Q;^xLZI@;SI82I~l4iGC8t5gzLuQYzZ$G=sY3PrpA3wCa0!^ z+T3m+AR=(sx(8!OKR~p(-}RR$mm*_f1t()&ocmTA46tPR#>IVw*jQn!N)95-+GIM?*N>9!TAQTD!^a? zmkJ9301FIIu<8W<*#w>l!gQ&Ie8vk1Edf_WLQeki&!0boBZ|DxIl7HTLX6EdeiM7b zWE=hydr8iUpFTho^yI)1uOqE?%)GReW$~NVA9!GOZ`CSi`s7rnsJcG$X$R2A?PH*3 z{XW+G;8@?Gxeq52EHRo``W{?9zxdueB)6}reL-QCxb>!?L zS+z0pI}wTrSyJU~#X(Ra^XECnq`ph7xgx_X21uI@+Aci#DnZZoKOItt^8#bOU>VRe z(nlao){V`&`*xh+@(W%0^-agY-OVOnkSJi11Rs)w2oeQ;5x&96&WT>N{mHF!m0RW$uZuAdahyP1Z(f&Zh%bVWa{k?PNaZgr76gEMsFIO}yS-_hgIKP83j48k2 zF&l8Vi@9!pIy*a;Zi7@*91aSSxarFxVe_W;(aKY6Q3?wSou#U{)vzMOiasu8yE{uTO^3~z4YBgug(>O>@y9{5S`^}*J`Zt z*!2JhDxr0@TmX`uZ)ldaXhaHWK?Iso3g5G3np!Q`?`4?5EG45ABIgaBW&+9>l?!=kdSfwpL#{#({I z;BA3$Dt*Aoy8Tp+?*HzS+4sy>B>@GBP^{ zMOhR?L_R(~5Jh3S>gqVzy+O^-mm?X>nSg0sTwPruM;{&@PMX(e*qen!M37TchuE|~ z!1%y3GZxNyL(z(TRy-AP@#{YAE>mGqbaaifmQY)urBEUoxJ)wb(kNJsmsd%s(Kr{(3yH4&1=& zQ*Dg;8{1RVf(_Zl6@}H&^4G~Yd|i$p1GzlF7J`XwF5&f2P@8^-jYPRXkO=vcY&vjf zCNM1{j2$Zm%RtE7biWn${`auqkEGh{NDW}>?CflGTH1(B$4h^2$k!BZCmLE%nXURb z8YZU8aOm!oIH8mJ6YuLU3yx&+ABk0lL#SKZ+d~r*CcVKZ;rKlBJ-gk0d8j9`^__{QryFXH;vs&f2Gk5fsjA_^3uM@Lf`%RWEoSQt`7kQ>a63RUO zlzx>!ecr)YK-d{5U5-Q{M*cJ|joR%g5q{0JI>u=t@#&73c*Us=w*TSlLE^_<&Ah6r zXcZmLgfNEY;5_jtdw}_xbl&`6Y(oQp7}y8b?FbGmHghz<7@%QbE?=L{czy>zowh^) zfbbO;cO;$5fg3?=ZS;7lw&|cSEt%B>F^)pUzT#}Pg@a?o7OE6fzO@y`*uQDZ1VqjN zF8E6od@uNEHzUJg_j0p9Dv1h2{{|OZeInxGit_TEm^vO^<>0m9$sFN~n}VXE?d|Qy z)gsx9;V&F3f=Wtg!1{1G>~hxrjlkzg1hzRkGgDSuTRUjaZq0SC+VSA0zJb9zb^vT9 zUoMM3zo>}EzyJs_qkwxxYSU&OP$``QNJS7ft1;&h96US_ac01Mr67_-6?nP+TG@7s zBOHWS(At_lI4F@wr`EkcmG^#9-XUoTY(ofaG@W+qqFDsHe(xvX^Y50HbO56;zCYi5 zzMhdA1unF;rT=()G6F2BsGD0eE7OZG5??Ppcx9_DRtDyULv5@4Ox8g>%Kfo?^NW<2c^ya=p2!!*wmab-T-($-W61%eM;H2rzXw@t#zF znN2&^zD0ISDAU2*u3B!g6(d<#Nq1{bBjpUC^R%GEo!`xwe~SHfFm7GyqN-0M$?R1= zZ!=zIzCh-@-N68%`~3DYZ*{^sCjxVr%uf<~|A|nlWbAmj!dP7Psf$_;GZq?GTfX8h zpyOFAx-t+QzW-{h|NHC1&VkbaP;O&o`}h6w;S31B5D~iAGVsl<3XI30x>_*)x8)=(D5%!JFRYzab!GZeF$LSodHB zh-pE7elK$Y!?kAj+~+qC9t1cmf1jWv41*>Be6n1Jd# ze2#+Tx8##zWz9VXsv%aw6W?&=McXh^Q13nrB__cNItaVWWMm04y3(U z%%RGSN$Qz2#7uCYHE38*Z^&o1c}kStV8hZpbb#-ie`xH={vaX~9Jv}ngrX#1l-SS* z0NY0&?i+AcuHD*LlU-C+j_EMqUteFxb(gK|7PMS09*-(r%Dak?WPH{D|dDWanw*jQ)|=@8hBzRDVAHNJ8VC7M5DW%xz#-u{6@d!o87lNF|O zjKd4ms;f_b8Ey$ng^NJU4oYZ>L83&Glmv0Yu^S~J)zA-S4|g0~C&uz9ju9Ihy5VA^ z??B!B5fQ-Fs|kUu-rnBr3b}HS!&%#%8$GL`ghfm(W$u(|GKWp(0?Qaf@E#6#Mq~%z z0`b>K0g(N7RM|nn&W@p$s8(l+0-S7-JQOWK;3y!cX9Qn7E&blFet)>wzc9EIVL#$o z_LZJbnm>&1m{{Wm3~lLNa8&3H9`um9?w62x+?Zo{XN*xEeNJD_^}l&`H71!66VrDY zY`wK&&$6QG-i*dh-I#dOngfOop`8z0L+AQ^S$R2R*wsw#oZ52xOe6E$QTmiOSN!Xt zw8x`)ja;xVfa*s38wqNf*6y55?SqFf@r%K8;}NP66SvbZXfJ+qmMaU_ZSjdR%Q2(V zr-?IJ7s0QH{AwzlNx1MaMt%B6w_&J_UiQ3h8KF?F^{tOq>^u$$mr3EF`j5d9{P%28 z?hHpGKKBs(T5%I;0z1SbEOIN!-=niopLVmrNQLcF;~gDbqkKtZKecQMrY!f6SRc>( znhjd-oe*PuxpxcijQ<8xk->Q_DRjpsJYY8#Im-@SSb9YmApzGF; z#`8dM9Zx_bm-4!G!EiM+1)E`Y_VC@MNi~UKMyvKhsM&i zMq4N(&6wUQuP%>f_AEQ<9D)=2@>?{|I`g5FVV8-izo3Oq^Q0KEUndiP5F`0Vm&{|3vF4RAElW!5BbsGOO-{*T3lhXZuEtyS7$^;F5E#o?wknU zyST#2eFf2S0u9WP&Z{@hdwaElcR==L%gz z1C(;qK5lPxFHxcm!&b^f4a7eFX3qdp)b0frRFm zPgMBVD!W`;g0&<7T`$#ri1AeV(A-3s`C?{54M7p+PuqV7sk_}p1HMvek0QkDpRTWP zt`jMbZ9Mc49ZXBdsZcHPRV0FU9HF{AE=s||wajQoTotwQk5KMN0``4@TA<-Q)P6se zw(L_W#F171b1nr=s0tczS$-EQAuo|hYq<-h53n1wCDf?H=X{WAEoum;x&?O2@1@>q zLBph=1d4;(2L_z1rCvX4>~p=Q;02LPm${JJFeN3S*wO+oX%8pO9@HXO>=E_l4j7v# zaFwl2p0hwrqOP&fJnncXT4FpLj?u2_5{?8SB<|-RM6RwW!CHJF%23D*-&%lCiR!@cJrLtf>#C%I)Ik9`AVeKMQCs z@1!XL{4>tG)$O^Dp6lY3O7Af$Q(=uF#O?Nbf6Ag&0A`FG)}~xupIR#h!#_$k0z{93 zU2JeTdCmZ?oI2bXunN^!wFJB6K{{zV0@LUsDTGTDhPnbCE%-E1(p;OUpEko>3R#RK zuuwj5qmp_yx*HR=dpOeJB2n2DWTwY`&yIrem+c#kQGoDhzQw}O*ejdDNrNt4l!v;| zgMmb_nsD{#kVJ9Wl@962R@^j^XSD$dK=7-joz3BlZAL%*lHrF?kqhq1R?JcUAp(or zXsD!A^mj=MO(j+JdWqPWevuCPeQW-E;EiunIRyz!Vdwymqux@0>s$!%HmhHOQ**Cx zfb#ah5CmH(y%jbPU*^fd3!by^tU(xIN4FdMX!mSpOyZrIvR~~v_olJ1gJ80~C6gzsl6IqA?d86Vnsviz!rH8M zWxxVHnVBY3qv&RL-mER-sAE-WuyB-yZ0PBN|DoK6ma_LU2;1|%C!Bx$M!6o8XhVOh zq#*~LVZ+4lS!BD@-7tYf#5}#14+gkaI)M^RNHGz9fmqm;CkdykL@X+9P2=BiI$obh+{{=M&+%u`qNGC? zAMi#icT|6eJlLFct-cNb`*PIco*^_Pg8{1|Q2V>?pKk1SLbF5Y;iA`Ka1U{un(BlA zKkr}{FlKfj{cWDW(wg7OIcSvh?9@peH-!$-+S81(=MkEzOos_#>9>>R2s^jdCV__o zV^Ty2$)Maw;0wA{=GA36xglQJzgB+V>yX>Ly1%0pc%%a~(h$!_rIw&K?Oopf_B=LA z9!p2WL9aznw{NR@$tq-8$K91eVmYH@!%dviN3?j3ShS-F;OL;Kq`2N^v?Z4zB7xhu zYcp_Pn&i&gjH2E*-yM+As-2Ea{YZI5Mh|f< zd1)%W+8n)0!J?_zmAVT$Tr@dc^wh&|C-W?NH8F~}dJ7EaG3bW|LTG_OIbp->iq#X} zcARcVjh0aM?Xx`MLGa5jQxqYXZ`zPsL9q4SmIa<`Q1`I+bsbveiQEYNXJa^W!JdBG z#LUw{d#{}NV^(pym89Gv6UtxRs-0c9cpR3!_-_H%2uI4s9DN7c<=G}`5Ghi)m_+w% z^3XgoMB$+SDf{V z7w1H2R{ig)w)|A^+z+2;{H1>Ob+++s_a)~-gUOOfi)FC>kI;*oW^a8(_OaXGFw^y$ znThOMn!%3`=96a2nD8$M=9T(6mD>L5bFa>ApdID9uk)TKS4%bn_qxjM4ok*K)qjlu zj-lx;gf}pZGx2H4Tp~*l2p%VbEa0>8PY!GrkaQ2vKRNGVJq!$_B$qk6iQk_Oul5AP zu{nmBqNA5>|ApV;j8<_^3YhC&dpiUtBcH0+5?5@jU9A_Up(fxcMXRmX_?)h}H2aC8yeXZADQ@WBry_ z+P7`lY$^tgT-+;Y`HE-u%dhAFwBN(o3F6Q%FD0^Glva8qsx+d^TDT#4ro;_OS_`M! zW|NH?V=%a3sWq)0QY|}a!J3=ZxWIrZ9$jo#g_T#@@f6HB>kF-Em=Y6}dAd=V(^yJU znLfR(RXc_fRkDb>wU+7~berO{?Ei@3qwg~3s zA0`lILhdGM&G~-+3xN_&UW}LCZfzIp6}_(lj-#^EFdrIf@%CwoCxGv%5l7N|FSL5R z`%WYD0q~fJLE%xdV>%W41F3C0A}|L{mX_c8VQ}AG_>-Up4jZZ1(l7kcl18o-6cD68 z=^o|K442TaxJr`flrwG&Um3uCnY=uAf1<8nXU(-CN{R~8Q~mj=1ySYVX#D3q{(kGx z&Y+jjii@j`AJp~nXvx+XVHBr<_Nuq54vhtUGTvf~WOYR+hrh;WTcd&AC+Zq7T<68t_gcmiH;R z`PzvW+|~bNMxn^XGC0g}|AO0D)$qTiE_W>8j3VMlpV(9u*Xv%8G$(-4s(+ciO-;ib zYo~VDyKo^gnj0Fx?yZ?Q`tS1@%g=njYa=B)xBXH7*9fS->`hmP)<4W{#z3@Q$}}j} zx%~t30GGAXZp;pj-{JsfLDy5icemwB8w)W=Q*1DQuRV&h9!C3Cow8-l3YNY)rqyQp zmcH%~A&rYNREH8Xexo8CY}8+DYRub?(jsiUJ4i*)Vdqo3MoZCa-xr|zdOwXgPKdV~ ze&urVG1T;Cn_Uj&wzWNU@pW1yD8o;gbu8EN4NK?sE=j>Bb|crjOyHf4KKKLNvfmn@ zRAB=m4x3dH*W5|+T-;m%rI~A^(Y=Dx;^I(D?Bwy))H(6WX;WrO`Ckyo$LIr99fLFB zpoAZQ1O(57+2bHpVN|$1h4?|R1;zDN7j0a$5hpOPI$S|v6bro%9iCl5-C(m>(k_|K z8G(DJ$!Y3*&>Fp5L{5~5vla_Ta^T)YovTxHs`QX9eAy_0YioSj(b8VG@!KwXIw=b% zP%dh6mC~f`I!p`y-e3&Ua~VXC`|RvY0s&C;fj!*M`wE51K&V5sj|O0gTD30ka!pC& zTLd4FRP$356hC#~W=s^zSR&Z(n?8^p&zXLx=c(;}RL#x-iZ3TY^W~FD=5%2hq5yUGa zF_c#~Hh)yKh3!imcyN1F#vu&t#0pEW(fFI_fSHp>wi8W|( zhiEVz&2;MFgn6eOJNQL$tLgDz42{ib*@2P^#MM6)8|YlwH{y~3+iAsUxhJpi&a(yH zn3C_qzlAX2nk>6e^f^=LGFZ*9e@1I~{)BSeib1IU3 zk_75QxZ@&%A@JXtT(BSxqHOXDr^K?O0tvGSCWKXPOdjTM=?R7G{&=1bli7zIJ@owG zsb0h*8@RuC)e*Cw1K9AD0|5j~Myj{BQ*tFsDAO-HLZHxR!r{NI0S{_%2rpYvlS-MA z)(l_-5_Zwk@k-QO3_kf(I*8~QW7gv)uqHN0CAiqJ$elp?=SWiT6ZKK7?2|NF%^zDrEnLe@-5<2#`F2|}3<(S1F+5IYB z9`ic<}?x@y$Fp9?IU*D{;6WPIyQ8MxA)p2F!fpTklEhh zsQwH9(Nr_wtCTd?N5+XbYBzPZsr&1$9Vqf%WCRW?-RqSr!4ZHAkr*L?G!M38%s>z@ z+R-eq4HKw;V{A;f&-`hs1d0q!JDF#;sg-hJu;*=g-PlAZQSWB$^EBbQL~zI5u@pZ3 z47MrgR6YGmg4Fk-m}va#;8ECjYEhW`Q&JiaXS{ij@^a)BH42Lb(l>k0p{}mWEWsf+ z0ETLb%_PbuBjZfhi{6<7%xiP8t&Tdcbe6COmc6uPs?6a0L(d5+47O7shUr{1Z|M-S z%NaQ$>alj2@{lE$xhP6CYuNpKamSAUXY*IU)A8Fu9v>K8B_(==p^^@A28a*7B}GJb z574)E)lXP%s){bZ)C1^=)Yg{tq1p@I81F6+ApBOS6Jww=P~VB3seRAs;p^V#jIZUg zJ0Fkr1m<1apgvtYXcczQb4_l3QJyii;6ShDAc1t$p5#;u1bYn{E%oOj9?1aF zJN|)ZGSi|_p;bNCuk9zz_Ek;kjHWAAdH=1KhXH!1kk9PrJq`L8Ua3wVl#aRARqjHQ zW5Mg-W!vIxmPIL0aRhQ)=>2DUuZZCvRV=-MGOM?Jh?TS1_P@Zo#W!F@WXqnM*pTvh zWF?2waVH?Z4*WoD!xBJFlztV4`l|WYoB6&C5lg z8*HqUL3zPi@2ok>i`LXhW_%|+8Pd1&w-h;-!QO|~CZO%MYdB++!B9ZCl#BrjZMd!W z5%udK_JG6o>*qDqm>(d8Cx*Y-s%_da7(E$DWNu|TZKdI0Z*F_d@2Nms@mw1FPI_0i z++Nq0-Ki~^6>QljFZQ?b&eEa?|Dk$E#?QJN{yLCl0JO_p<^F$HC?wB|QbOLT`qk?d z&vK2%MCOMTt~{4CHPkvB^tQ6dgSYYOabB|p0pgD6%t+L)iIGz#247Jfe zjngT`vPhWr??wYH5E;3V9Z@j#Qs1}9C52esuh3NDTx%bz^>jY=iS1x73H*&ZbhAi$ z3K{d80`8^yLXf;b#!tqcQGmw0JbpnneO`n)$IX0O5HEQWF+a;dSWqf}u z2{*KuZF&FeW{d{(tvEFIb-VFzxd1Ga*(*09I?cqyZb(;@%3ke(Zoxt`4!tvm zw`a0zZJg?DFK3ih2EJ*XXvWfb?gS$9+h4`4?8Hv>(;RmUNAD=g(MrF4Oe9w~i(NJy7i?m_i9-`XB!*vZAhf*KbH9(F=I**V&f z9A=)**Uub=7%i;SL16iDSC1K}f5$~P% zbz58f@ztvauq+P#z8Ag(BMD9?CPybUA7I#Y>VNINHP?o-qY#4KD=DP=9iLY%?F9_S61%u8|CH+LfNY0-@5DR>@1wYobO(5~xQzAKx zHkSfG^sf0&s}A`Ntnvf?K-$|CoUAr7k6Cr!q8T+i3ncCXTnO=m46F3Nzbur-HNDBG zu$KxFevw=IHre$2UpSrvyx3Y;(&Xk26|cY*%??e$Xp902zl};c$N!FpAT3yW*#J>ZBLp^{I7WWAV2YLY!7_VE-?aEoFu ze{yqR=BbGo#ld_}F8mdvJ-Sn_xvBbjR57p5IwoB9~QDL|BI z^AbIBTSg;@l4tF0$HOWnMl5-LRKeni6Y}oqyurTx8^}O<(Gq zq@YlWK;s~Fm~gb}*n0CsOI5+b6^Bp1uHOCHio-yNDI8syc<4rZbemYq3WiYwJ+{`Y z)OTJ(`feQSnr1=l-8s3B$PF{^O5dj6H(nB^QCB!)$Fx3cF>uI4ZdXtwb+j;?j4Y&u z@`>a>F*r3r?P4sj-tA~v8(e8ViauPf5W*T93p&P;-H)KZV5OlR0_{eu8iQxXm}i+H zl=S7}W7(i)3^NDZNKyhN6G>d;t!Hgbqb(gB6R_I_XkIPl?$MgxRV3s)7f?F$<;U5} z(lu0cGxlknhC%B39G?O{YlyFMmit&=cssXnE{Jclc4nsM#0^c0$+xGC{HfV5=t$ci z$IlAj&8U|xgwzAqhOkS-Q=>v0n7lu6mQeLctu!DcSP+;L%zH1htIT$cSo>7$$u?KfDv?oo@rPtQ$Po+W9Nan(f|^ z)<1jYpFkW~;n!wQ&z7tSi{6y~EZ;v!{P~xqBKvL=Sb!jbcBd8>rh2BV4!6k#xiz1_(xA%cDdq^i#+0AeB-SKxH8s> zp03zl3g^A5PVe&3bZ+m&SwuyNX#avttfef1M%Hh+N~rX*O0(_ew-tdOI+fimziP(B z39DP4#c(Q*k!j;h&yY?f#VS4PvCjJH!f-NKOTO<>)^cE0yQfW{t`2?eOm36D-$-1^ z033+2>oNapZo)71Ea}30G0qM~t(5gsX$9>j6Tt=`z_a8lQ}rqUi052&$q6FV#+)Y8 zq}+%D_zOucHP+q%W*Ol3vhb;gi71UcA&AB3*&{~hvFDUBRFFPecbSaTg|BT!4HH+p zx}l4xRh#1%pUC7Y`uOu}Km{|*>0Tx*u@$7QFguBO6Lxoc@L~Hp?;9A4JI)C1CP!Ac zXbixaUE2xfqvI$+&;GHKpz>4B2(7E{f|z|;n$pnHPx^;ZtTn@XLHb`!2{|1qSi4G) zNFu~3M4#=Z!5ON2gr)UW3-L}T2D;N|J2xX&xkdvYBQ0-L@WMIh*l9GApCy)u!CB4n zhO;Yld!dY55hSv3+kKHwb4s%f(>(g1;J za|3$zMZz!LIgn%dtxJxa4#C3Gt0tI81@CA}wI(ea{!uEv39_``h%2Fa0W(78`wqls zbg)3!{K?xwF-f6PSU`ZB|7Y`fY^*elWAo0AKbBWK4CCL8Of6=%v^?XJ)VB!whNZ}% zZfMS3qM7p}-3Vd5ZVnMyKY#w8I{PPRz7Gb%cLP=SMLLWNBIh>lBdv+64zotess9p9 zyH|0J_fE9JJU`j4mwAn!IlQ&yy>B)=vAS!QNr#8M%QBYror>@651; zrg5-uySfSfX-XM)sM;KXdc+Y(A`+fxQKfeu^OG!ekx3?*VvPFP^S74O`WX5AAC}l4 z*iDRF=Lgo)BzYJ^Dz6u{ZF944jhT9&@-kKB4>9Q6dyjf)P&w*QZS=?ORjJ{#k09UW zv}!iWA1FeL|5u>p^WgX4Vj$)ND>qt)9nCq ze}(C50E@FImHG%AuNM?L^KgDW?T587R8M$E3B*t3v#75vEVTv*ws4!UZq&Ih=hiwa zY}8p|=w`T(l3HJ((anQ76ba1zVG2A!8KqT{>(?Y0xe5PUC(DN2$b`tX2`4Ox;|x^J zGQRm&f2Miy@@g;R4b#|!pE>qU{pO!fS%Cb6y$ARe&Ja6_&bRATov|P%DossKRw1Jn zF>RHtI2>^b{I`;Ic2?uzDF`-wM1k1tv?*UM=@4k8pc0xK`IZft*MX0Y3V7WLJ9%8& z^aE2*JT!4th?Ei{Tq1wT?-n+00Y^rbI6GV$(b+3Hf7Xj6u^fsG4}+*`<%fP(m;?y> zZGD1AM8BUamEWoOOPryab^GI_!js#}2F&yoe2` zORvw$^(dT%rBJ!r)tLO6Rj5AI2d8fgOw~Gsz_q;b`4n-GCIvtl%l5|DaOyd{^z7LT z)k4xHd03FHPe^!5f~91o9}_L!910N~P)YcoA}F5^YF=MY@b=UZjN|ZRer-RM`05H0 zCE^$H%bMkV!-YlH6KfS-a~I71I^P^E_5kYA`pXqeHG-qeX6E0ud{zO#N@QnG_hxFU z0D^LBtj^BH+c||cvA$K-r>bj4(zdn9F^@+L->WBlOv;ARciejHL5B~tuR|DpyH)wvfU%00-I?czdcsf5z9N*G!fZ9wE?g)AhtqZX5R@Z&NN zg0s+Hj1A2!Wc75Q@ry45hoEF29v`Va-}dF76I3X67(ri*GE~DONiF<y(`)7X4ln<$YzC{-QU|P^X6{d1b9BiU`X{Ol+|VQmDtJS zSd)X3eyhK2*C7I))=zQNuYe&cr=8hrG$V1tiH_e+_frQytM4mwJN|qd$Am+Ts|Sx5 zKJlx%bu#Li=IfAExL1DNRNiqFzm+5oM^{C!rrHK-R*h4_R)Hc!e`NfmqscijBZ9u?=a8v-u zl(qKzNs&(p^d|*XN*W7#K>Y9?Gmy)4p^b6@?b>xs+M4wH-x1&p)eW%A+i=gBow~2J z5$(&4N35&ZfMOD@e2(Ws@JMLtMU>o{KZ++E1T!eEoUK6RQlcG6m=4f0mZ|?xcX~SQ zt0s5T{{j3+4r2LqENJewUEM-)`CyF|9cGiR?l>$_`zOC(8DMf40%Owu&HPiRxcr4D(}${?gcLE@{_7a!=JmQ^82%*z9ye<4zI0PO-m6_sy(F7>$e z-UtIpYmQKU6t%EA`xw zmw0F!JZP-7fj4PnpfB5M_|u}MjZwt!$s8kphMXJ-p=a;@0tw8N4J|Bdyu~2f;0WPW-nMnDt+WsXh;30n#oPD z4V#xdmKl_+^=)rr`r(tTNAFu}QBEwmzRP`FRi(j<(fd+e;~5%$CLJ|ID5Esc{uqhD;QZd7^LllPLltNc`Ldu;I_q#5oe9=J3r~kB@F%FE=Vco4KT=rDdAYe5Fp*lBMzC z?4MQpQKzGMy=v9wa()Q4#2D_cf8zbXqO*3SZ?=_l@LSxd?PlF10vE)4aVyFh+lE)f6Aw?103tc~ ze=5oMx;NFbNiLj*iH^CgLt7gI_yy04fj+ZpQWkWrHx2|gFDupEnn14UMdzw5aS1qb zk?E-nVDb09D!!=nbUfp+)IJTHwmv|QxJ>5&h~wfC5`NE_i{^1%oOWA*SH)yy5!ute z)IavJ%3A{xWQ9Dji#7K%yJahIhOH;y@)eMc6rfA#ptcboh<;SLO5>BIF%de2pfTl;NOBI&Pj{Ycr0*0>b-*l$g> zeeQ`1Xu$wxnKUgg1rHKX{nu!gEv~4oE&KB)D$pCA>986@Dh|Qv(P#yJh?4|)amfUM`w44o`) zdo?XbRS#1*=6e0VUVzUxAIN3Hm<6l%k*dI_{VFh2-Lu)AQcJB0PL`Q!L%U(L#G=*7 zQS5&@i$6^*!+iUBcGOv^9kF(7rD_|g{w>pbo%RAHEAtiQle&HSoxBOf_kef)x;1~$XdU;2RX3KZBnf|Y5J{L34g+osL-BS%E^2&$LoR#R5=KR5DaMzaJ0 zhaUKNcsjyegWS&?FsSMU#7<7gu%uq8<;y?MEQ-j! zFP#!#ftC5(QpPYSos-1DYjf9CUC#Fb~GV!{h#bJ1T|Kj>N5vpiO%MP~rS7`;llw;I>b!M1u|t#kg@} z(D8m@1Jq5B?~?A`{{9-%DUzC+n*C)kqrmGuDMXg%EjBSRvByOprfI$UwHqIxhA(*6 zS82O`j1cozFE`%o{yk_dM2x|x9Zn`W&hCA?WHN3Ad^b4@%e3n_Fib=rP|8bZ@?!f? zW_iReE~;WMXi8{l;R6bD$N2(Ksq5>*UdF)VeqPikc=+uw#`bqvHgLCqBAJSYW@{%& z$GPEb$t25(;BEQ`qY)stY6Wyp#dGGs%>XL>qO!8lBet*U#)k=~H&x0);jh%a+h4Wj zou;a%vV-+#u*rAPnasfg>S3YL=3j)p6o0mv^wXHlzu?S<^O_UU&ji(365`2xScE!a zGqprDO9KcoKJ?PQN6U;y5!1G` zO9mRBw2eciEc~Zbmm8G+d~UF}{T}8?Gn;Sqx!ba;*5KzC(-kqI8=C$yc=H9EGV&dn zy;XFsKP0_}pCMPIGeVh<61Ghc{sgU65T!Ih1bF~{?4WyUoG%ao8?qD7nb;Icr$7n< z`bI!}Zg{%V1Pu)h5xSqdaMZMusG(Y82nSwsqkVb2G3X9}Be+3FL$f_92ea61iM$J# zfU!Lf$F&oUfZzs@K*$xBmiAb(I{>mdR5Y}IWj4d{)bUA4UokLt%SzkZGXY!pouus+ zl4ji;0)U$vA0{wa0?@2cGcZtaawY>?{{8#+;!2e=RT^5_52Cs(I1!o-V{FoC>=A%0 z5mc`JK9mIzL+Sy0Tc*>IIY8*0zS$GR>aZ)F>HX@uJCQY!FBzB2ZiU0xeoq4Eh48z& zy53cX%m)1s=YWQ`#`#2@|K(aS)BTjo#QnRl@VgL|f+7%@iE#y-09N-~OR)%?K6u8~ z&gX|KY$jcZBpolVgoFeoWo5fDwgo27M@K0sDb*%>azKH)XvuCokvRsOmS5LX;s-ND zNWhQ|K46qaUVeT6pl3`3bauM+>JNZrCiA+o0Mk2;0(nGjSZy2jlV<9kQj#BtPM8(YM$nQ;I_AAgREWLQWOK4EGev z-(r*if(;A|G07pnr))S)s3NO?Bw|6}EMNQVkx|XS+)t*OOl^Uq!H@>v{YYOu@#}9m zc!rUc1;2jr*%@)yodgT7nVu^IWB>+=FnUMg;o6lG3v~Jn2SRwrm^=5T5iRx3i+nW; zQita<&gh|5CAYkyoGtF!H_7W)=_ejKmMHxgA$=|D?WSC^G_{N%Nzrg^(b9eja8IV!p z%ItzAgs`39yW@n)LBi*b2WIQ&GGR3WCm$P_R>RnO?x$F01_-DUfq?}xl{x|t(iC6c zu`0{!kvhxcGNcyJy>6?vxv|0c`_|Qcdwt#$s0Ai%Ff{Lzn51~W9O=-hR{6Xe?A^L| zhcG5ECcrp4JzaXe-7|&5hTvVf4bkF!VqW_^BPTFs5XBcbW-MGf_ft`^=Wo45(}o{B zr{g{{6byncpi2wKVG9MMqcbfoHlQ+9Uto}o%bF`C3JMCHW@GgKqvQj1+;;#IxpL|}0;QBv02%5vUUcn4_Tom70cyh5akL)b@GU9lzy! zI;rD*KJNo6`JK3l*wdo`Kx+>OOvjzU_gL82|9A&l9*@d0pS<2)?nX1Xu>E#+e%?aX zW7iUlX;NYMaywVbE`_P5gPp*WXoIa07nvb8)cUf@c(yCdp7TXERx zwj7{DUF6t>D>UENq-_}#;2bQHSmyeOlYRS!q%DJ>yMKE7gItP`PywS8ooZGn|BK|0 zo#S_PvrVFZR79>UA5L|AUrx(5|;{{rs z*h-S<5?O5vwlB6+X+Q*RF5r@4hX8Xc_HXwq9Cmb}zQVYATZ4sgX~TgGjUq}Ki#%Rh zz@wyF^WYswx8QM|><4=K~pw0d^FX7lKTNpeTfp zkP(mwdHlzs`l@X6-_vm(z65wL1VC^lo3nRoWxdj+VZ!}|MrWV(iy9Y+XE9ooj3ID2 z^NFs>vsGoRO3*D5BlM@=arBG>1-QTlCWHd&g?p{ouYj8h`#UY|h>ioOghWNyUBV#Y zCzOZ7N*@!I0;J^wP*Uu+6-Ie~toOFGXAf!KMmO~a7_Oi{3kafTGWQ`U3{Ta?*oyb912BB#<%ZZyAWN#l?N?K!aS0x=6U<-b!MlBo+ zTxBkORCCEIvsfj&u2`Y1dr1My?2x;l1=)&bvc=9Ko1uH)_1UC&HnwX#NaxtFZxq1} z5fZNChXe5w(a2BSVy4gBkB33Tc>3MdmlY5erSHJx<^EaJwd<2Gp>nWRSn-8{Qkp}i z;!00hC5IS#6v_&#;h`1Fp|!7$$6>)g5eMM9zu1H=kj^KMQL7_$o4Unz7>ewK4d;aW zU%!4a{~Y`skN=PVfXnNi2~hKt&KdCrb=1(idwV8wVWizaIeID}_kc2V08}`R&^Mg} zIFH%q*{!nuQc~A_H_;}h$>YX?LM9DP(8Pqo$A|A*1HZ)jynTO3K||Rf(CNz?oHX;$ zST?kN0%;hXDJS)n>1JLQojnTGne`?qpG2U4Adp_IykfN+Twi$M_Ujh4jyax{#Z~+1 z_k|jaBm9o}{PAw8;Csa%3~9FWj@EuT8Sn>JoC9v>rmESOjvk?FA-!;nr*2GI_!>z& z&y1ky?yPSO{oC)ouQX`K!T zEi3|7`Rbx&SuR}TI=*0vw56f-X_Agh8bl`6E9$Y#r7ZB|q;_DZaW}2o%GdrDMB;?@ zXp=nj-a?nQPEmodDY+~93*?-YjEB`2ET4ThRWrJ^e_}a*3`VTcb_~iY(o}0kpOqKw1!+l;k4aRYsyHHaAPwTWryW!%Y1%%=$KQ1V?T`6{hr=d zE^{i+Y$AbagoEggSUv2VpY)LH(EA(t?lqR($>pP_*#2_)cqPK8pxHy*hHs%41RVnA zaturc7E{>`Ww@IR^JVrN-E7TLV(kYRAgtaCMAS%4{O`iQ(4FUXA^rScZJ6G-$_$Nj za#q4Oh@hRlY7*>!tG*rOW*@US|LI<$jk!{+GSK`3&*&7B9NXfAl+U6lyjYWDVfumE zD}G2vcJHhy*S>oai|>Ia0Zi1y@>@YF@Z4JMi}RyP!AgHb)rgX;*(_J0zDjc8y^2DT zkqPdHj^l%->mkZ4eSnumO6p3}_urEOTtY=v)d7;XdoifWmc2Bi02Y(Fze-?$scmIt zv?$BRqt}T0<$BtECsquqK>6&TymF0Bt1%ML7)pPGc)7XL0NxYeh7tXP&-nQGRE&)K znXYS_brS$vf2a3~J(wsVG0~twlkcUy72&$`_0e*|jk_{+)}o-MCiauA+h#s^;U8`X zI3m-5O6oMg4nUHxZ9ypOPmi`+B2laHvSdTw*Z1xsS?RsSGiZX2QvQxY8g!p}ELNEK zTm$@vWY>~Mv=og>z551AiG%Hwvg!lPBJ6SxShFhN*c4bfp*&rsGkakNWobl>FL{>h zogPJ&a<&bv9Bfz~zHox@prd5z_+=ZVZJ|C}S0E{s1 zbXI)vEfQ${jIVB4D-s7^Hzl;jPBv@I|6!mh5Ff_U=^I63;857W)EI8mS;?Gd%5$|s z6|aev_Z?sOH}phG&yhmsTJu5&{?sz*gJm|WA)8 zprGUx7Vb5J^QRBho9##e<9WAXUU$1?AG94zU~}M{b${>1!ouy%9TA#$V-Te^TPA{ncwn+lP^*&NUNO{n(7Sl3PfljAt}zBG7x3Ko@hd{H#Hu zh8TvE;Tc&>Bz98-BRHgenbF4c&UltnA%`?qbzdhs*$AO-iS>tvt2STx-;Obyyfjv{VqRo{LSJch0#P;5-cj1{p~DUwd{O~h~V7~ zD|}6*KAH6%&gJE$U8}DwUTUgWofj9GXk>PAbtpj5_B$nI@cv?(ucLzh_1@^{_;|{q z0iea5T3QfV>$;n`USj5oKP^gXE2nIud4+a!T?+0*h{#{u) z8Ttzxl$)Im1(4rWSv3K~sY>eVp@8H4@%j+-cYq{9OK%};N^C4p4Z}!UQ@*Jn5ff(W;|5fto~4 zvV!o4hIF`ArQ^DaP|WO_cUL^oD_;Qm7*;Ex#=bA(o zlnE`cDg)d^Cawa-G#%Izr{2k){E4udQRwI)ixOP9qXS}z=wGbAAuJ%-Owt$!r4F|s zG@8{|>VRJ58MLkJ^g@C%C4)nBP<~9|d`bTX$8M1``U#6(Ib2nM&RXa!3}<8jo0E!!?<1DaNROuTXXcH(4sY zVjLjzl5TzWy*Wdc5S@UZTR`=+{M3g)`CI)`s}4tV$;S50D&2CpY#z*(ejO3N`f0DgcTRBkUo>L`l#L{KFEgEMU^01iE8#t0JI7 zk>>)b<8M4^A5ND0bz{ozru5HMeCA$XDX`)byOkBkKR}Jj676}=N{E2<5dqSh>`O}X z16&I&!h==5RYUB*q44-x+`cA#Vvz{lhCr_|3-6(HCOmnV5DPZYhOV;Hx2x#k-pfdZ zs{IV0nVlvMHuiRd)%C#?2m)-#7$kOQv`c4P9+wm55rE9>A1#y%p#Y9aS$z7dEzd=c z$5|&`yg?Y4o#>Ncb?lKe=_7b4-LD#Rq-L(wy;_irN^b9Zk<$*d{QYtWXFYlv?PRvWRjVOPmf#vzQRiaxnyD0{!WtEs*Gq=6guv7CEUkU#41N}`P8HJUr)m&U7*2ux<9nj-3*Bp6P9o{} zG|rgDN-Tv-Gx~Nk`-;W;-S;N)B1U;>2l({HP z$L#LD_Xvp=8|faj(4A)m;A`G8z2cz|s4fueuE+4&v0G>Pf@WY<=aY3Wj3)#3^|WQ{ zSoiUy)-6c3NOW3?FDvHuPi=vu#d6DQ82#5@1kIj86nGbW6LyqAm|NhSmLsS!6+{FN z+$~CrbNGs{M%qwIy03#cTi+j2*?xKxbXU@`1}){t{J7U8D>3Hx3x8e}Mdz@fma|X` zpt820x-?dfg|3h(Sm{Gql{*r7(4w78m!#&OB^;IYc!>E`-8YSx+ge^}&d0*T zXU|$lNS@J^)bV6=AiUvgdZ2G;SjlQGd9F3pcJ4#z>eMB&OWi3*r1wc^$Y?bkL!qlR zO=+*JoN`C3N?2kTNoKwgGHCJmdP3x5z{HUrC@#*N>Z=2@Z%d%Vu*zbjUC2)(cF~zb=2&k#;!qFPGz%|2rq)f;`9b>BOoyMvI!%x{r^*XTVj^J?v^pfCVRmb>Fz_4WIm(_T!~(tK+}lzve)(r$w^6oA{SHG ztBQe-K1r%@0DDbp+wI>cp?MPj|2sy8RKmX9Y3z4MoSpiKBZq$52VtatN^+0>8p*ca zyd(W{S0(_d!>Y&n@03N-(#4>wtGpIF2Rdk<*6p=*1Liv0!>+E7*ncgew!oqRs{fl? zg8TI&;j?E7w0I~9O7gc99N|!*91>rJ=HD8fzzl#ESH2l$-84Lu>G(!;dAX5AZr}eM zcwZA2)AQf=fBXozY(DTbhz-i15g+9ITZ!TC1GP!XG)&}wYxr+zp(Jr1ECJyE|KAFU z{onZwCx6S9{`<|rXTFO6jhFq!pBDJ#R#BBe7lho5{J&4XGiFq}5HcJKVu%21ok)=- zVwx1e#e8|E+46g$EeNv+)LsRQa&K?fT7F{HYy@mQU7H z2?ZuxnLhh>B_RH9ic@kNGOdULSy`rG!N64~nOoKZ6;#`-3t|`v-r&_ceEGo(U|hL1 zHDE4ImQ1e!2P_l<>rh)T@rX8bz<@sN+BAtz1PJ>OFp1w!O(ar;gb|yZ*GX4cK2*}` z#yN~@%pgqE@vb4n?G#{$=l18XzMpQk^S=VC!9gf_j|++JvN;@ zqQslV7DoN7r#B{uArxw3{1yD)NdGNCyf6{d&@ZFybD-m=pQymW=Tz35f*O57AnrGi zKk@%{SAs$MH=EGXypn9pz#vKZ;++=i|4#EqKZp1L`oEj=zZd&@e%1!A#}2)Rmps3L$GZG|Wq)nUD!?yqDf^mIswApS&s z8l|_gu-JGG#r2wjO+i#pf4dI;Pxt8#0UB<{}~jn_na( zJz7F^hh*2PouIW$ZNrLPJRQ6HNpN1R5_@54MLeQU)=w5(oj2#&P;AEG%U7Sgh2$7I zPtdwLaAL<~`sATHO9ZWdykL&X0qydXICnU3@VoW_lHV)P2`_oa!e5zJ8Cn4$;%4hka<105JZ9k7y#cO=DJ^N|TcF_*= z>g5Gno1Q(VIKykozu+f#=i)KxmVzk#Obl~T-}<6ry(9hS7q{9+N7=ujI{)3XQ0SlL zb+me8jl@lh4IfZ#|Nj46fL7&)y$`DmGf8aIOJ-bbh}Z&D5!2A!w{v^Y1by_scpl1I z18lu0S=cze^bzduI?lU&+mre1KRrJp>^?2O!o_rKcK93{;wH^L*`u&`2VHd}zr13( zU2nz{KqQLmG>}%C371Ae#ujf-N1`$m@@09GE5b*u0JYYkSIKy~kUArDu19(UID7Uu zk-WT=r?)`i;=Xitp>;@h$=n+8?y828<7|0gx&SCdcuh?kqem*?JG(NwfW{$S*le(x zEgq6aMc(xl8*a7(BUCxR5wQnLecARP3Q2BMU3%(jNPfaN-L1@B)g1wi4ekand<|b7 zLtU&z7^T-e#*j%F!|b?#BT*1{&;I}N#;1**;g=S+BAzkwnddg7k7Fd!Z#MFMwJBHm zo4Cen+f%|xS+cGIjH;=eUkB~Rt}oRwD&zragHE2`w`DKOa`()?{>iF;;^3mA zlxszNXxxH@l2V_^*@W*zQz3FrEKqd$fy-ei+Tyl?zVCyL{?3ZBQ)ik@jCm9HLR(?v z@QX8?C~g=5j;ON5JE&87_S

az4i3v@KC&4pl?sS=O!V5B2=3Bvp^{umx=v(RfC3 z=r)zP2W`l9Lbs8ma6eKP8lEu~%t^l&{c>w8ThJ5RedTu8|61p4|9$7HhD)c6}UQ(%%&oZf@G>@iG7@Qgm*|X znDP5vIRmBMjB3sDN^dG@EI5JF+00?#;ar@{c+N%i5s`)UYp>GW^iK7a^Xhw-bgjV~ zjGq>ExT4Pc4do3Q56!IslIg#u3O}0!e|M{em87@!Qq~cQ?;B^z3o|F(O!+pn>bVvNdsaV$tqECqK z#Cclq1p57wcAWZWhrfANymQhwd`Y_7Sq=6X)N4^iQ9~RjpevqCUv>?da1*@Od_El= zZCrCPIRw@EoO16T=kk1J`|0R#D*tPrsa|i}x}d@P`~qPK zr1mS~8IJB$M^b?*R;HUtVdGJ#tadc6x{cQmgWGc5Dyc5@iu3;DYJ2Rjls)eIg7Op4 zIW%Rz0v_?>U;|pXbcbX;n7AUuA~4RgYDHFnF2n4!2VR^!y!d_u+i?$$Qw*Tuimmmt z?U@C-pd&ANXX?YAJW*dLn{c_!i#Xx56ZTy1>w0b? z&P)brO?vd?h%#4OgpIaXZ02S?Bd*tB%iF0qSg3LWZ~PXD-863&FW#%h3R8D)w&d^q zMy@Sp)mli?&PgYUT1##aaW0dhz!9?Tn3e%qZ7(IYv4K5=FWz3MAF+hWt1dfd^qV$| zfSz3?iwnva-P_a}`E3)X3W^kW#4959>8U7WhBaaXx%PV7;OScTqS6G$bOO)khw#q- z59~rA3NjL`wkr*BTwVA><$BR@*$q>@5x(k@m!a=WT9d8s-2_N@>(}bm+kCb9)>Y{Q zArSAtg(WkCsrtNOke?nuTgdgZx`kA_+snlIZ*GckSOQwUW3|qfi1c+{a2aLN^kMFv zJ}idbH8hl~uQPS9kz@Zbh}JVrAlw_PUNMsWxv6l?n72 zHpa3Uzxy{c1xKZY>mLTmc@=wSjEtn8dl$Cd`RX?xbSkX1_1dm(pVCFLhJjDdc>=n*qcC=GRiuD= zqvP+c5KEMFz5&Fmx|5S=)HvdDev6q3jmgOx>S?C2F$m1^xILVHsF9&`&IWbWn|D5a z?UR1*)o(z|TOYFu%{utaYhtJdVgP^y6c%$>-mG!tz@^HdA=()xv-!?gNp}!b5@@2H=a#+wMQdV z*5R3`tMah#T>11AA%D(H_p;P+s*!oD7?)U8=1R+on<4F+dt?!cS3y|Rhvw_Q_riC( zytKLm*G;dG*@HvUkXG-ff6FmT3oW0Cu~6=%q&Jq|Ef1nn(KV|2Y65kx_+U`ESeM#G zfw9YYW(>8>UUloSmWfB)H3GaNQEPciC6qrvZED{WjYd~dVR!@R)OSayTR4-mWYo|=@nELbW4zWZb>BvCYS=OJ>zKBFW66qmdPHvv_rq7%ls-7B>Ev^L$ ztL9BytB;=jpohhu!#H<^XyfZ*v5!muQ>iE%C2e-qH=O1lK%R^f{Q*;bzc>cUp7jrK zfRb(FMa-b#a=`qw#!VGWTMOQKS>Q?abRC+HanWX4LyE9grvU zO|{{?dl7Q6-lkS-HdFvQMYk&7`Sg|{bhKc$)^5brrkbc&)0DK3V*s)qzMHwcPaKxn z?roYN|6Km`%1+GScGt;<`|RCpx@f#$jSi?Oarp#+o~c)5!s4Qm!YDr`SZ8Ay^-*>T z?Uchs@99s!GA@>R_(!Xi|eO{bdqKjN@4sdj_`NQT6nt#=6 zwN>vT=8BaN%1Nkin%b(~wrjy{bZ3M5@lY2!P4H0K7+%*{u^roo*v!E-ja~g{bE3== zNs%BFw(<~3lK{j>w2%C2qcsk8J`1zT$5adGhCv(cPUE%k4c|FW_wrDUvTJ*H>m z%$R3&Ft=aea)qd(v&|}*n3K)Tcl)?vfFizZKLSm4)CoJTnIByev8r27X_}v8$?MFP zw3}}Xnhk~aUDk<|CC@Jh`WP!iCg%F~=$R~j?z20BdwoIvdpLs`rEqNwo$m@W5PYBE zd9PXETn`l*4jn^7{UkK1Ek0STA{dF%F6y#146|2MoOg>1-x(8-(n$}!i-_{q@l4!( zWPr}ElyfI^9n~^P&@%N4lux%aSY?VZnLq1n0x%?VYU*M6BamIj$)~tGYP`fFi%*A@Ey&AU=KIH0n;VX!m z=iuXqHEtXHP7Aa~hJrM7?Gq=&1L9(uD`W;4l&GEQ6MIxgQx0!=o$*s7b0|W4y)2kJ zM^4EiBc5!961!$?04P2(D-B+=+E2fpwrl$=IG*%7i>Yg9^#>flfn-Qz0q6v|gJjPd zK)mRitCpMn^nLK+2OW1q+Q&`%7D{ke=kN25kk_h8^i8#B*V(8hTErBAWK9YW=ixxr z>E*7^gFw-b2w-@Fz7X522R`d5Jq(ZDDq@73shqAO<4Og(d;dS@nb$fOz(<^zT!oG#arQc zkwtV#9LIwcD7e|!Mv(#QtXneBYJ0Qw+rQf|^%BQ9N*L zp!U%MN|%^B9PW;JZYPq=eM}AHZ5u7ubLKE**fhOYA5Vfgx-Gb@fL1FoMtn?t?D3T} z3dQxqxsNk^SA^8w%Mmh^O@!RV68O-erd4VWzdNX#A4D1RJknu6e6n2S<-3+zeX6n0 z3448}u|eF?Q3nSZ9!bca%@J7>Dr?e(6%YuG4Em+kEug0~{Nzx(SuY_uSz3nR$^?1+ z!L(~Q$kX)1Jn)@bZ{6n;Ll7td>f64H1g6PWR{t4ip~@b=21FJk9;q^+#c>6 zb+dw*ey~WJeX8U#aSMBEG zlt^lUMEsBE=C_vYWrH#kR*i03Mc&|pj-nUc9PTP2Zq ze1egGr)CouO=xj+n^x{+jYuM}r{m&s?V>Y++`vta(rv@TE<(ZE^ZmQx1fO&CZCmoh zR+ygGFbW6ti!VbvSynqrNF0kQ(uUW=i3x=cd!*cJ0o4#fL2>A zKMVC_nb(CGfS;KOl0503zHpG}B|4l+>)3cjo%u+;z6=tkVPg$_oI+|>RgfNDB1c6* zHP#sCEM4X3kW2V*`CTICPFB>Hj$v1{oeVa=?37*->g(c$cc8C{K2?@V^7Kzg2L0d3 z0)ZsGWC#z-phMd==#q;jRB>iba=6iX5^NP9q+`=Q@lL7s%}1|3BI1kTgHkLO6t3~5 z4>91u;j*4?(jB3p$Xq+#u2!T5il+2P+Qy5dO3G?RoG%>LC!2^9pC{R#s8)!qtSyy1 zJ@&I%i@G?^g@#3hmDev{7plFZ{zzxSa^fcwL8vsGs&0g z&Bqt%`Ncy}ezWGikZ zM#;M2yrCiOs`1nB_qe^aCp8}$8(55|X(((Slla_OhnOBc1G;sbGttiLvzY=^eFm+!mse&wBY)vxS=F?*|Pr2qPTo1QH8KCnjUzW;cKY6Zd zL@4k-+Dx?MHGS-+oc);5;mv0b-BUh@H*q#cVPd86PxIdc&_Fab!0n4S=bP+E5A=z- zHAT^e<(`d>)anlFyE9`7@GEX)7m1vv!1&?QvH8aYICFqEA^`B42BX}rBcUNatttQW z#rmTSML{KC^+fB-_$1f1KB=MI=lxzK(ge8 z2md^XXuOQuBz4tC;myY!thb=XZ1~TrIoLUpPrTjIu6gRy#}4&;jS9acta4IAgHmFc z5Y1C@MX2z|wnv;zD_!)zdp{&Q{Qarx%~pEE&V*-}G} zUk>>7kHCmA|iHS zp~EI+L1SLO+|KgL9Aq6=SGTw5S7nFKZo`7#)Eid1#M3 zfm3>!dd`!eVowa3%u|NhRZfR5(D?LIogSTdTw&(vY8M{HC6otciY1dUi?7ft@d-nG zhZyJo5_lfwz13{dXz7FjF_FHKfNvH9wNhHSoYUk@%;B zJ{8a$2w92;Z7eE#YOCs$2kLLE!Hx1FX(9Zt9K{m10;xlVyj27j0$dro&`6O2#hUh< zLcM)2EialX)enxdo8C~`B$*4RE+VL4_YOurJ@a;5%~H4+c^LT8;9!22lY!)j&5XJp zLx1p!%p)0DcF(HWs@0iQ zmgZxZ0=SDI)5J~0q$>%C`U>;Nr*oqBeovre9&gFjHFLQ`6SlQgTwO3#@w$dD>irJ8t-@dovc z=Hpw5Jj-a|ub?|ONrLnvuF1J!_f2M9RxuwP*Pz9m*aaPiSMBnIpvRJijd5iw=LIA? zM3U39toWWxqL%Wrce47b;&2jY1E+U{Yhax)JTqk)IkHFl9s^GMO@~eD(~1U-)Gno= zgAC&GNKY{-Y#z<@=FhwXO6X4(KbR--_YG&v0GE`b19G5f-%ZaZ@6_Kv^Eb2FxbIQA zeaj?=P~K7K+V0e)Nn+g~I7kcWD}Y?B(L;(drZ#+hZxzba74$@Edk)-VYTL9|wmT~~ z`LU|G6<9p~&owRJS7TaKv*o-S|A_R-B=_b5U2`Vko8x}I+7LfIh=^7SD#c4;j+u4e zST@|~5Jk(~ss}vU&YoPrXvMe5`~ZLWusULDzm5kvAJCx<8$l-Ht=U)XNosW=PJJWY z6oDDcOx4QEXVAV=fNzse6f=T+7VehWN-wIX{vKKA_6~ zE+!#%#b)pK7_xO{-O+=2LpDc1ODfm${Pd1fb!TO(-hRd|Ls9Pv47XnJ!IN3{VY)8yWkOl==g|HoOr9 zHFUMJqc=c&vea z8k%_-6OW^@KU-ka-#FW|Tsf;9m&(02bp8lOG}hh&4;)$uJvk=t|UrS2Z; zt(*?J0e@*3xK{bylQv*zCYOCtGfU&cP$WrT_9iZ^`G6@nYx)fb`={UEf^j3Cf$#yx z$*Sb&5u*m?N4c=sUdcPljjdwN6NXQ$O;pD5ViaTKE8yfS04QyU<1MM^F%5nALvwe_ zSg>DPQsQq`_Dgjz<@rKBmJ_@u5>r0gUhqVClLaQmrD=)0! zX00k_c}vMXH~)8pixt#1akWOb$?nyP*GV&{Yg-)NL52&uTp{{)(^KR7h9i{mh|vCG z)hp40OI>g8Ys|gVwfs@tQjXu7mikp~BrDF$VSnyHx%2ZAzgre<%wh99~k?@bL9&eo-f`Uf+Rxnn)52dkY0w9C!Va}D@xW~=1?ASo+l*m&UTLhvQIh?zLmKT#Y{(71 zP`0W`)r~pPmPS}D?4srlZ!t3lyr9C-bM?iQ?#1`aA7ZkEnqwI0-C6HNypYwGG_+iU zGP32_V={*mK9e^m?-Co$UsinY=;5>ZsF|2HT%*KA|205F<|bRU&g1&$WkBB$E4-1i zWicV^FJMmUib_L|x9qwj_-LZOa#>Xb!el9UF3PFIk_h90XBuN5$>H;F*N_;(H>h(~ z14Y+(*!Lgdf0S+3YMl2poe%H-j(x|-UwmDOj2aY4g&VigAy@n!YpWv$2pTNtBFo_1 zgXz!be++Y0b!evgGctc4%J#S;Xttv{(Lf&>VuH}&rWV8f3NPK9|J0q+@H-(N&Mc`N zA$98fxh$ zhg*GQr)C&@N$AL_uBjvu|Fm5@L?A`2KIh>)!*Y-&rRUJKlZo4~zjh zxnA9($OvhF${zYdVP`88Q|DnN#^}vr3wU*HzUu@!Y@r@cTK;n9!zk(ukljV89#co7)OmU z=}V!`Ab7uxx4mu{>=y&#bj7^Am?1oq7*^H|jB;-0bo$yAA-9aZb$z^15B$kDY$FYYbrt_!CS-7E-4h;H`oNHe#51;r8 zN&J3Vqb4ZE6uve;{xxa$8=)Z`Id}rHlA~$erZOpgFOWhSRj%f3ar9An8;36S z=jI=>Mjzul8Yy`i&%WEL%NjevevFrew5iP^apzn`j|Uy8nk}w#E$ho=$dY5uz69R! zKk4Z`wQBQK321ciHDcPtls9MQE_K{nDoI>+xo3ws4zp;C<>DCs2p&V?`PyCJ?Cl_pkc93nMa!764m~cH-_J(22jX zg^Y}WL?CaO4i48jAEHFPvVtGrtG{vhW`|65w7usS zT>JmI01(21_wPs%!bpr|bNkNz9NOKsMD?vbv4cl;oi?j^4s*~_{x3=n*le6Xe4K>J z()yxS_|J@iAW_r&=_@2T%kil>xu$VZZqdjV@XyaBwEBJcm3>c8w5r$-fHPTZ^T4DX)`4d1BHzUquCad@=NZu0L@ z^W+~4{C%{r<6f9v8nt^{EAk~8y-m~VUK&rI{RsF~C-2bLDa$_Io(0BXg+~3#I2qrI z`SD{FvJLcgSx)Z#!s&%8Ec}@@4}z!b^EvRsTME_YGUI=zHnfWcsTxkY)6s{}=565_ zA>$w9WF%;izPG~TiINt0^CuGTK}fOdykj9j`(PV%gg=-%d)0Z0=m~1*KMX=)@RytO zU|heajvVA`VgCQgOZSV%Vw1!D7v8U44p}NZRzQNwyt!DG9sfV;?D6GbtD_>DMbGZyj;!)B!J?R2$iIo=;mSv?N@( z>8KT97d^ES#(c;l!Jmav-E7s)gf82)6_R9Wf8<_yux)mH|9t%Z9%8ii1O%RK&)_?7 zl0`*gCbE46O5n;X1wP@dp&p}blnV4-qu9-!2^^Yd%8g%i+Ws$Xfiwu$3PGh%#WL^L zkLk6~Oud78o$Y_>Rty{+p6-*8!oOXXneM~r+ti*P^pnVUcCFQ|7Tn1iUbkP{#B`WC zQ@=f|s_Bl1fE$v zya_DZGS_(pl6R)2_&{1yg_5AoGsi09t2Y*Z*Vo42!5u*xPYBF}L-KS#AM1L4#o{nT zFBRNX^%yji{IkZ?ntC=Qop<@=ArA#93Ii&;V|GBxmEIH_jy2(-RP6slis95=dbLG= zUzERuVV}c(h*xJxgS`<5t(9Ar?qfVPc_ys_CUS26s7=h3k2BYmtJOxy_2x>mZTfuc zm{Ac+?}wni-QM$4)1N5;p)(d58lFLa{PfSl@p_#-8>@|0oPr+^&pm!H0}+YQ%&@~1 zU$d-z&X|03qXb{f>8A2qx^!%uG4Ox>R1FQizJ#%|cH*bpLC!T|c7%`TLeB7?PN_B^ z)Edtvc51*RJDVxSZk~ZC-)5T$b9OJgJ^GRlg3)a~JFC+R3$etQiGi@i1VK__&lY*L zcZg!6>&1_aee@)sOKMzH$;DNvDnTVyZ5O0S!kltjGe5@8prQDL7lGG*DGgGL!G2I? zmP(Bg=zbE|iIA#RVI)lzWg2kjfiUEP_ciG9=9e#(KV=&c|08aa4{V-TZ#yd~FQJXM z`r=tlNMc;~%!m8=>FNi}(m+H~t`@y{iO?Pqm`q_*gusi$1!rj!OIG73L`19qQuz3l zbtwD^{`s|3eaFq^;VYhDyd`jPL@&nik4DmwqM4!P8;fxKhLX{*tlD1tUhZ-0pKtqF zOX$tFx*|GvyCPKI$K#1QX$~@j8P;5aCONUMUYXE4x-g`&)<^dkBL+c9;%DXGPtHaQ zfvp7|wRDsqA{d)zv@zBbf$jK=;sMjKtJ4c5Xq zf!nyVryfN|+rOw4p{p#}=pZxJ#`!q0mn6z`f8lZ|4@jC7HN`;yF>4cj1g}g|O3LxoV|z zBk*zNP__!5lyBa{kY7LRm@u;Kj+@tCQeLRRu53ozi}dd&SS9d!=j(+j*%UAY*W*!a z7BJD}m&&>kR+Ko#z)zzNF9|98g+aZZ<;c#Ej52Fpm%ZUvd-8y>xkOVQeq7 zf%O;xKcSEHFe$DhZlKm%R+kF83%Kx3H^mk_5=R$q>!@KgFQur|uBtZV22q)AJK zea)Un$8@h}<}o8}>G{evTUpZQA5p%a{{OpZsTn;AFFN7SLHjdV3v`PL$ww%MLD zTPb@kos734UW!q*N)2GT1DVNFSyF2ikXkUy@T$_$@_@%$Io%$Fy6;}a3JXeaXOGqO zSaXhT&Y7V8$j;|G-P@3IZ9pMh$fiRNkO~L5PsTDP#f`~|0t2y4;)^+8&V?UxY+`Qg zhM9cc=V>3i0^|CE5h8t{c|jo9ZZjp!sj|+Ui_5-$duh=?0f4}fss+8f4zbxBaSB@f zlx!-xLSXaUCw^KUeJaz`9(SOskm&O}^v+ zrHWKiZ|Z!n(OdA-*{^6MM4R?^udU+dh5Vad_ovp?jw1UtIJQBF5UP%RVoyRGJ~TOg zG+%(`(FZA2Y4b$S#ir{VS$$FlXKi1PN)PfxbZ}FAd!hoP>f52fr78kzwTR5^N_|$H z2Qmsfn-?};l+XiZ1(g0(Wv?tDJTM5|W;%ZKr?dR{AE4S&F9oGHKJTElW~*qc;zDH! zw8VyeGM$<;G=2+47R^cx*ZW;XX_n~f6Rbv3eBeahR{GP_x#|7j1}-)tyK?nmop34g zF}1y^Ef>)mLD9bRc#_FCYQA_vc8GKs`CC(JX<*do+sOBU%w<>oLB_#Pe%2%C7kins zDbC&un_-fIRE^tSSxbLr%7VA6c^>v=Prp;ZV-XtVR+i%d(h)U}Y)Gs?k=aU-kViFX za?WaZnZpI@HxFh1vAyR}O+)?JyShd7{V$>*(kdM*Eg>PXAhC+HbT5pso)hzCh ztenyMNUBcyA*}t?8HQXf8D#W0v7@r{HSu5){ z4V-~d^hsytTw3ghF7$Fly!3tCAYY;p*uB=?>9M(n_SfxMlds&4NGK?NIE31dh7E9` z&Eyjg3%r0mAa^(rTfd_ZzxOeY&WSG9iwY9bCm{r91DHvZyxV1_{_+GuXEaPu29#%# zuBJgjA_;Ayu~#x-fOq=g6$N2pg~o3C@^3Xxbm#+)$26vFnN~%nME=+G!28t*Fx@95 zdAWArLpY-UUR1aFai`3^mG+RY|MkxGiKc)3`{G===LDJ_6sgoxJ6PRnhVZMRLlUZH z_woBDr8-qmO?i25#uZzWk~W`#)~&m5*7+n3yl59(d^^g)QDoqRbLA(UuanF|hg#ke z=3u_Sh&>9U^*r ztF|_}cmh>ywpE0hFqC)s^?t%mL!(BUGxyQGTeqq(3epPw@3u2DGBOsx>(22B-uLgT z-r8GViIb1_&D^5z^dIs6J-L1^#E$%2S@rdaO8PRs;YEgq?j0*DehG?V<$d&QtPoz7 zFQci!-RWxcp0VDmfSKE}6Z_Q!WR|b+@bJ49z+p|}%+qX8Q77L^{5pQn zm>~#($jJ41ebW8_ayBEVUuO$m2t-EyE+MhxZ(q#ElFU9t>pr_Q)zKtuZ|~-xlb}z) zJKN~l1{~l7dQq=Y!Rr?Mw2y~N9E4%$kEs~;qn=1Q?~@O*5|`+SlX;^Z0tT}FCl$uZ zumH9}Y-K8OBq{Q8xJ>!l@u?;6hZX2(g-uuBiJQ=GLt-I|Ah(x4=UOBY9|@V<)&&L# zOYTPh-E+=%3zimx{8?qC_>it+u~Uu|i3e}*jDN+dXMU^B{rD;LY)_R7n$lBIM~{@)Nsac0fCn>(S1!TBKAj^7|Kqk ztdQ?+=2sS5jeHDrzZ2m0%5)pX(see+VJ{Y<1gMS0BJ*no7uSqC&18JSdMuV2CaGou zo$`|Od^o{SGqy4rnfyNYw-i=(YGbN`?7l4c>qh3l0U0E09`=Ux zL!96^j~WcX9FaZJ8$Y=~xev~#W2#}_J9zsbqMSkLW{qU;3a$O5Wsl^hhqaR@HBzip zP`71IU8YS?T*bL__dvJ0{1EiCLjxF3q`e2_ctGke<^vQZsTzdc)N-fpc$m%z#t+d= zMQ?L&&pp_}8MQ9Za4MlL7D{iJ6G>Pc?aXuD>d4oLa{M!=4u)Q=@bnLQ+AZkwfqO$k z4&2uQP!Ac%!$ajM3nj1oy)4* zm1)=LJ;zB=R)<}*xitrIv*5PQ;=JrKANtel`07zqB1LTj_t!eceC7h~!r z4rek)Y^!jLWvUesBg06_5x%&C4L>zC|ICay5M67sYA2nDOUbTZQhg3RMTCc&H$vC{ zZB!W@9Iks<2m>EZL9R)!V^Q3eN=Mw@0VC_T+ zJ!yXqz<3bVaAKp^UL+F!q?b#W5ioZinY3KTzJh%lH z*;i5p6YD^`eWx1-4u-C=$B~!^0<4HsOaVXhHvyWb&NUvV(+7ClD#U6Ly&UZV1Z1>y z?fY(}2ed?ZaR00OD8Kqh^if@9z(GK6Sg7;Tu%c@7STrxmJ*#(x$z4_EtpUdO8AH9Q z?eboA<{=L40`JcHvh*ET2h<9iqt`~72rTP!6jzP_?`ep)s8ro^FH&B@n9gw&9oN+F zU_xn@eY=_Q0oyk|Z-pWPqAMo0u>!1T`1g0vUD1h0iu1=02BXnq3s3}wrIxoCN3gjH zZLu0*q{BDpWcO?P;LH7YpFM5l9n@mOImSDgX*Om@Vuv}v;TkN9J$g&O+4vt(@3!H< zo97#`C^7Y4tQ~ejohpLullYN2-|2zaULgFj#is1V4-xy@*-Wh6jlA~39wMDyQlX=I zFQsowU_nC-jR*DLJoqtwqJhPheqSGyMtqyRCT0^xbJ5&i z##NKNCHTc_<9O4P%i})zMuJdA)%sO< z>&h1@URIZZcFHaByuvI?8^4s~o>4C+3$4S4y?1Um2_==EZtIii?M}7l{JdEsdp~Tgj_M}LBqi*qcNie%ae7-f@{}RO*V3-~gt_E^R z2-w(k&L_6kBF5KiC26lQqC5Sw+rt~Ju=-b1U3*~vJLDEhiM!(6{)tztDU%cCo>Fz) z%F6m+u$tu7rZWKBq+At(M=Noz^A|k|LH>pnUpK#X;bu-uuPUptxy?7a(R`}4-XAu( z>LbV>V*I(eGO3+X1W7&HubcppOz4@QH$!yHbYbO%jU7XunjpCRl0uz5o9{#3`XVd__U zZ~e0nMuA=^LIC@soFs3Yk^WahDxK`VLiskfJZT67pc>B-t9iAk00A5TvUk^qS>?C| zI|x0JmoYA@UN6fU`z^pKbFpOY;NW9sYBCy^OPe-=Bkt)8(u(i&cJij|`SgVsniQV? z-YHATYBJ|3JhSdtrW4N8y%5~L*qhU3rE^UGq^##ntrWSF8jDTOoyrwwu>zfAl8av1 zQ?l{Vbnpq~`1xGjf81~_{;~g@JWlFS`)rg~Af&bDu$WdbFr_Vcc*6>09Jusogl0OX z#el-^+u0uiXnD9VW|YW#u;%?x7WKHr8N*R6@>pGLojqj#mr8^L7R%T=?=xhc&aIV~ z`iZtnc+_Fl`GrSaA3Jj)RWQ!2=HHwp<$G^eNTQEQBJqHHM;1$@V!t1ncvXTV#Rn^P znE+VT6LouFsK^a;iSLVL2ut+j?z4oiq?e1ENSW1#iyQFO%!RCowu*3ngOf@wY&Cm0 zh4{T~aQt42M05#zkL&2x?9^Li&0x$rT*$dgHh3!AWPV4n1ZLUQuyvRtG-UzDO7xPD zEPiVmS^bIetoHML-_<&)7G-skufOZ#!EF#K{F^oz*Xl-b2^Wp4*<5alEnplF@pLpJ zk1I!JOl2OnESAoz~*Nf{TB{-ev9XzbdtpVjWl{YW#TfaUF2gkUPkZ><9u*~ z>;%uOdm<1?;e;t7615tu^W&|C``L8dTVL9<`Y6Ks_yM1%F**rJW<3T3Oc}s-#T$i% zR2OX-A3i=WTo;W15WR$ENBdo~bNoAkyizIIHlN)3>}QL<+J7#eKNp+SUO4xzfKUsv z#v-4qJv}PnpMdc5&Yw%LI}EKv#GE`>cFOFS87{LD){#L_T?I=B(E8SnDFOT_6g7ZN zgm&w|C>6H_X1|jhJd~h5nz~@*x!k*_f)+#;br^8zINq96cLOo zmT2}pU$C>DN9@B_(yR9UDbSi~wAJpa{zavx+~1W>!LEjlf+tTHZCov&Sq*1I;a1g} zmi0%U%6_HOrMQ{$w3@;tTJ}L8rT|6>e#m>1@PQd+Lt(Ue)0Ad57x{)NtbxM#y3-mI zo)T)jQ-fnFsQKWm zUAZJ^rV^|mVvx~j5`L>Kzbb2VlHOd`jtEC;^Dh%Kb73t!u<&BwVr*9`A3#f%ilSpF zHgs*%X`Qh|%Fv~q?jF~hS8}OcBADjZsLQcupf$e1H=RZ5y}frTxl20DoBZXuroHmx z`(N`(UrOG!9pm^?j2i0HnI013OZpjn>y)!BabcEs6SeyUF1SmIjoseAz;)XDgS2}g zvnrD^L@9-pN^eN8jEHnrj>SK(KPudks}jshY~y|Q9GGYi9(2*yHtY?U^XR9_8mh9z zTw2_YF@wZEffXc*l%&y0K7Myf9f+-Rh8oVp;>`P$#uEfxm%0C{vB)UqNFfAcd$XyY%un{b>|9zMX11HZj0|Z(*y1zDItLh{iGS$raaxRBl?co>7TT=p39ztzSPglNt>erd z#(zak1y;6whaZY&=T)g?&(RgJ&!7L5->t5>NtcpI89N*!F}o0kDim2C%Y zM8Jgf+C2M!$S9iPclwN8pKXpeMD0DX*qm}keI#E0#y4i9tQwc32fOxOAh(yb8`vk) z-EmhIG2n5wHhxsCl}97SkCY`MY#X&U_TwKOqE`~TtR1afV6r;aQ9bQ@826#3Ay7V z5;@R*F-VH*d{y%Tv<(;OMpl26!_BH)-(0eGRzNcBg?n7SlIb>}`nW@?Uy_|xrN2nJ zx4jH3URnm0YtgALJpLBavx0lml<9Pax{0Qu>>t|};<^*_oofq|tK2QKy3WBEBPYho z!}yMmG!H@TO=e&_FWbePqgwu>1CNaBAEeDyt7Ko+yr=->M)idx#P>6zA69WOn)x#C z%HV8HCfq8!bilf!nB_?=gW%&>z^NGwC>Cs=JY>Sp)irLk8pG&G1vV0r)ma<5m^!wy zkh1UrXD8P<>&kX$+xJy3Jrc`}gmq1I!&mOMgE@z6#UnoNSJoXR9oH#Q&iO@Q zQ5OupFVGY^N5^0Ml&uL%Fb@yR{(RmE^lx2Hy(ts_YR1$%kw{m7>D_X{lznZRP8IO<5x zrKM})v^PFxYL*mr5qW@dDXjlQDEF>Ko=d-qiHa1`XR%lYV{=gH!qN)qjJ-N9z&MKaf`Vb`0`cHS;xe5Vv~=ty2ScURtGUPo~mHPCYBFsIRJ=K3mvRSO(^Z zSfbwd2au1qUSDA?(kP7#c+{Orf|L~RF8%n)g>~B9r;Nd%!~B44=h!srf!(1hk=gnUwdi2mu84U7R^=c6W2f)N^- zst#lcm1uE^v%<>cY7KKvQuHv5iNk;w=Ih+b`!XnSwa$);yExnka+eehb5r4NPs zV=P~~c;3PM5=queN?6I~dr%!r@;#rzC|c}ql8-Z1^#ix^iTQx_EH1R|4=5We5ZYJ% zO*P2nm#16K#*eKQdD?LGz&WLF+b(_S4RylqNaUQ)HVvl+$)MR4^Y1K)rfS6@(AEhh zCk*h%_y@)70=V#Gq*gd2&>jYaRI7~yz;}RFFj=aK5;6;c_nTJULG!>sc)j82V%@pet|ZQ%p36+)}xm6Q||}^ zI!WChNqr5In6?=45-*C{Gh=EFlHAKOqo*t&|KS5E)@7 zZ}gBH7v0tvd-%jIv+fSucPbm9U^ejs7oAtFRn~RZIu$$Fk<_vfq0)4t4{+PeLvQ*8 z5Uelvn;6d-XLefS?yJ$}%LR9Aol{2&>O{Mby zYbjBqJ{fr&uQQPKcq$9RFx+>+y|*{!vTx%>~yqEkVkgM&suDBc^eW z%}oLIKqzI4Q>?0M!W?)U9}4;LBGIJXP5y2Ik58c|*=kXqhc|E_c7$D$8M~KQ5BLL~ zxtR!`H6;OlX7V`Gibsx_B`?Wk9aF^1!w$>HJY!)M8kzvi zpnlGw?@HW&NJ_cOBiBD{Et@ceiE`HQBs5p?=!G-6&TLT8_x~)5Jbm*@3JjMT@D2_# zVTcFp$-nm**voi|egMK{&7Cxb4P?>iAaJjBRp#kimv!g8++3O1>dJi zI>!K-Gwb3-_T&a6-wcIi&2t4VK%zcRsfirR-CR$e-!v7MH9n883mk|^!v3APIlJNU nKV$T!gsJ@hX6gUw!umCC*r1y&w`pk$2p~mSRhe?>*Fpae@wLFK literal 0 HcmV?d00001 diff --git a/docs/ptp.md b/docs/ptp.md new file mode 100644 index 0000000..1ad869d --- /dev/null +++ b/docs/ptp.md @@ -0,0 +1,120 @@ + +# Real-Clock Configuration in PTP-Supported Systems + +Systems supporting PTP typically have two clocks: the system's real-time clock and another clock on the Ethernet card. The synchronization process involves: + +1. **Primary System Real-Time Clock Synchronization**: + - Initially synchronize the primary system's real-time clock with an NTP server. + - Then sync the Ethernet PTP clock with the primary system's real-time clock. + +2. **Secondary Systems Synchronization**: + - Sync the secondary systems' Ethernet PTP clocks with the primary's Ethernet PTP clock. + - Sync their system real-time clocks with their Ethernet PTP clocks, which are already synchronized with the primary system. + +This setup ensures all secondary system's real-time clocks are synchronized with the primary system's real-time clock. Synchronization within a system (system real-time clock to Ethernet PTP clock) is managed using the `phc2sys` tool, while inter-system synchronization (across Ethernet interfaces) utilizes the `ptp4l` tool. + +

+ +It's also important to turn off NTP time synchronization service by using this command: + ```$ timedatectl set-ntp no``` + +### Command Sets for PTP time Synchronization + +Assuming the primary Ethernet interface is named `enp87s0` and the secondary interface is named `enp89s0`, the following commands are to be executed under root or with sudo: + +**Primary System Commands:** + +- **ptp4l:** + +```shell +$ ptp4l -i enp87s0 -m -f ./resources/gPTP.cfg +``` + +- **phc2sys:** + +```shell +$ phc2sys -c enp87s0 -s CLOCK_REALTIME -w -O 0 -m -f ./resources/gPTP.cfg +``` + +**Secondary System Commands:** + +- **ptp4l:** + +```shell +$ ptp4l -i enp89s0 -s -m -f ./resources/gPTP.cfg +``` + +- **phc2sys:** + +```shell +$ phc2sys -s enp89s0 -c CLOCK_REALTIME -O 0 -m -f ./resources/gPTP.cfg +``` + +The output of ptp4l on the primary system after running the above command should look + like this:
+ +```console +ptp4l[13416.983]: selected /dev/ptp1 as PTP clock +ptp4l[13417.002]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE +ptp4l[13417.003]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE +ptp4l[13420.445]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES +ptp4l[13420.445]: selected local clock 844709.fffe.04f07f as best master +ptp4l[13420.445]: assuming the grand master role +``` + +The output of ptp4l on the secondary system after running the above command should +look like this:
+ +```console +ptp4l[14816.313]: selected /dev/ptp1 as PTP clock +ptp4l[14816.328]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE +ptp4l[14816.328]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE +ptp4l[14820.220]: port 1: new foreign master 844709.fffe.04f07f-1 +ptp4l[14820.250]: selected local clock 844709.fffe.04eb0e as best master +ptp4l[14822.220]: selected best master clock 844709.fffe.04f07f +ptp4l[14822.220]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE +ptp4l[14822.650]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED +ptp4l[14823.275]: rms 158899 max 317730 freq -11742 +/- 3075 delay 14 +/- 0 +ptp4l[14824.276]: rms 820 max 1257 freq -9067 +/- 1113 delay 14 +/- 0 +ptp4l[14825.277]: rms 1366 max 1436 freq -6582 +/- 359 delay 13 +/- 0 +ptp4l[14826.278]: rms 866 max 1148 freq -6099 +/- 34 delay 13 +/- 0 +ptp4l[14827.279]: rms 280 max 465 freq -6364 +/- 102 delay 12 +/- 0 +ptp4l[14828.280]: rms 52 max 80 freq -6666 +/- 65 delay 12 +/- 0 +ptp4l[14829.280]: rms 82 max 88 freq -6805 +/- 21 delay 12 +/- 0 +ptp4l[14830.281]: rms 50 max 69 freq -6829 +/- 3 delay 12 +/- 0 +ptp4l[14831.282]: rms 15 max 28 freq -6811 +/- 7 delay 12 +/- 0 +ptp4l[14832.283]: rms 4 max 8 freq -6795 +/- 5 delay 12 +/- 0 +ptp4l[14833.284]: rms 7 max 10 freq -6783 +/- 3 delay 12 +/- 0 +ptp4l[14834.285]: rms 2 max 5 freq -6788 +/- 3 delay 13 +/- 0 +ptp4l[14835.286]: rms 3 max 5 freq -6793 +/- 3 delay 13 +/- 0 +``` + +Please make it sure that the secondary sytem refers to the primary's precision time + by checking if there is the **"new foreign master"** message in a log
+ Note that the rms value should be decreasing with each line and should go + down to single digits. + +For user convenience, an automation Bash script is available in the scripts folder to facilitate ptp4l synchronization on both primary and secondary systems. Users simply need to update the `config.sh` file with relevant details such as the secondary system's address, username, and Ethernet address, among others. After these updates, run the scripts/run_ptp.sh script from the primary system. This script will automatically execute the ptp4l and phc2sys tools on both the primary and secondary systems in their respective modes. Note that the script requires the secondary system to enable passwordless SSH to execute ptp4l commands through the SSH interface. + +```console +$ ./scripts/run_ptp.sh +``` + +The console will display logs from both systems, but each process, including ptp4l and phc2sys, will also generate its own separate log file. These files can be found in the ./logs directory at the root level. + +Since the ptp4l and phc2sys tools require root privileges or sudo access, users need to provide their sudo password in the config.sh file. As an alternative, setting up passwordless sudo can streamline this process. Here's how to enable passwordless sudo: + +Open a terminal and type `sudo visudo` to edit the sudoers file. +Add the following line to the file at the end, replacing username with actual username: + +```bash +username ALL=(ALL) NOPASSWD: ALL +``` + +Save and close the file to apply the changes. +This adjustment allows the automation scripts to run without requiring a sudo password each time, simplifying the setup for ptp4l and phc2sys synchronizations. diff --git a/lib/Makefile b/lib/Makefile index 7fecc7d..1da48a0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,63 +1,70 @@ -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: MIT - -# Compiler and Flags -CXX := g++ -CXXFLAGS := -Wall -fPIC -I../cmn -Iplatforms -Iinclude -I. -I/usr/include/drm -LIBS :=-lrt -ldrm -lpciaccess -# Directories -SRCDIR := . -OBJDIR := obj -INCLUDEDIR := include - -# Target libraries -TARGET_SHARED := libvsyncalter.so -TARGET_STATIC := libvsyncalter.a - -# Find source files, create a list of object files -SOURCES := $(wildcard $(SRCDIR)/*.cpp) -HEADERS := $(wildcard $(SRCDIR)/*.h ../cmn/*.h) -OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o) -DEPS := $(OBJECTS:.o=.d) # Dependency files corresponding to object files - -# Check if VERBOSE is set to 1, if not, silence the commands -ifeq ($(VERBOSE),1) -CMD_PREFIX= -else -CMD_PREFIX=@ -endif - -# Default target -all: $(TARGET_SHARED) $(TARGET_STATIC) - -# Shared library -$(TARGET_SHARED): $(OBJECTS) - $(CMD_PREFIX)echo "Creating shared library..." - $(CMD_PREFIX)$(CXX) -Wall -shared $(DBG_FLAGS) -o $@ $^ $(LIBS) -# Static library -$(TARGET_STATIC): $(OBJECTS) - $(CMD_PREFIX)echo "Creating static library..." - $(CMD_PREFIX)ar rcs $@ $^ - -# Compile source files into object files -$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(HEADERS) - $(CMD_PREFIX)echo "Compiling $<" - $(CMD_PREFIX)mkdir -p $(OBJDIR) - $(CMD_PREFIX)$(CXX) $(CXXFLAGS) $(DBG_FLAGS) -c $< -o $@ - -# Include the .d files --include $(DEPS) - -debug: - @export DBG_FLAGS='-g -D DEBUGON'; \ - $(MAKE) - -# Clean up build artifacts -clean: - $(CMD_PREFIX)echo "Cleaning..." - $(CMD_PREFIX)rm -f $(TARGET_SHARED) $(TARGET_STATIC) $(OBJECTS) $(DEPS) - $(CMD_PREFIX)rm -rf $(OBJDIR) - - -# Phony targets -.PHONY: all clean +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: MIT + +# Compiler and Flags +CXX := g++ +CXXFLAGS := -Wall -fPIC -I../cmn -Iplatforms -Iinclude -I. -I/usr/include/drm +LIBS :=-lrt -ldrm -lpciaccess +# Directories +SRCDIR := . +OBJDIR := obj +INCLUDEDIR := include + +COVERAGE_FLAGS := -fprofile-arcs -ftest-coverage -O0 -g + +# Target libraries +TARGET_SHARED := libvsyncalter.so +TARGET_STATIC := libvsyncalter.a + +# Find source files, create a list of object files +SOURCES := $(wildcard $(SRCDIR)/*.cpp) +HEADERS := $(wildcard $(SRCDIR)/*.h ../cmn/*.h $(SRCDIR)/platforms/*.h) +OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o) +DEPS := $(OBJECTS:.o=.d) # Dependency files corresponding to object files + +# Check if VERBOSE is set to 1, if not, silence the commands +ifeq ($(VERBOSE),1) +CMD_PREFIX= +else +CMD_PREFIX=@ +endif + +# Default target +all: $(TARGET_SHARED) $(TARGET_STATIC) + +# Shared library +$(TARGET_SHARED): $(OBJECTS) + $(CMD_PREFIX)echo "Creating shared library..." + $(CMD_PREFIX)$(CXX) -Wall -shared $(CXXFLAGS) $(DBG_FLAGS) -o $@ $^ $(LIBS) +# Static library +$(TARGET_STATIC): $(OBJECTS) + $(CMD_PREFIX)echo "Creating static library..." + $(CMD_PREFIX)ar rcs $@ $^ + +# Compile source files into object files +$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(HEADERS) + $(CMD_PREFIX)echo "Compiling $<" + $(CMD_PREFIX)mkdir -p $(OBJDIR) + $(CMD_PREFIX)$(CXX) $(CXXFLAGS) $(DBG_FLAGS) -c $< -o $@ + +# Include the .d files +-include $(DEPS) + +coverage: + @echo "Building static and shared libraries with coverage flags..." + $(MAKE) clean + $(MAKE) CXXFLAGS="$(CXXFLAGS) $(COVERAGE_FLAGS)" all + +debug: + @export DBG_FLAGS='-g -O0 -D DEBUGON'; \ + $(MAKE) + +# Clean up build artifacts +clean: + $(CMD_PREFIX)echo "Cleaning..." + $(CMD_PREFIX)rm -f $(TARGET_SHARED) $(TARGET_STATIC) $(OBJECTS) $(DEPS) + $(CMD_PREFIX)rm -rf $(OBJDIR) + + +# Phony targets +.PHONY: all clean diff --git a/lib/c10.cpp b/lib/c10.cpp index 5f1fb66..eb42963 100644 --- a/lib/c10.cpp +++ b/lib/c10.cpp @@ -1,734 +1,239 @@ -/* - * Copyright © 2024 Intel Corporation - * - * 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 (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - */ - -#include -#include -#include -#include -#include -#include "mmio.h" -#include "c10.h" - - -/** - * @brief - * Constructor for c10 class - * @param ds - */ -c10::c10(ddi_sel *ds) -{ - - /* - According to BSpecs, MTL and PTL DDIs for C10 correspond to ports A and B. - Consequently, it is reasonable to deduce the port number from de_clk as clk-1. - However, this assumption might not hold for future platforms, where it - may be necessary to derive the port number directly from register values. - For guidance on this approach, refer to combo.cpp. - - BSpecs: - Port Usage Capability Alternate Names - DDI A | Port A | eDP, DP, HDMI DDIA, Port A - DDI B | Port B | eDP, DP, HDMI DDIB, Port B - */ - u32 port = ds->de_clk - 1; - - int pll_state; - for(int i = 0; i < C10_PLL_REG_COUNT; i++) { - pll_state = __intel_cx0_read(port, 0, PHY_C10_VDR_PLL(i)); - DBG("c10: pll_state[%d] = 0x%X, %d\n",i, pll_state,pll_state); - } - - c10_reg.done=1; - ds->phy_data = &c10_reg; - - set_ds(ds); - set_init(true); - -} - -/** - * @brief - * This is an inline function to multiply two 32-bit numbers - * and return the result as a 64-bit number. - * @param a - The first 32-bit number - * @param b - The second 32-bit number - */ -static inline unsigned long long mul_u32_u32(u32 a, u32 b) -{ - return (unsigned long long)a * b; -} - - -/** -* @brief -* This function calculates pll values to achieve desired drift using the given shift value. -* It programs the MMIO registers of the PHY to achieve the desired drift and also sets a timer -* to reset the MMIO registers to their original values after a certain time period. -* @param time_diff - This is the time difference in between the primary and the -* secondary systems in ms. If master is ahead of the slave , then the time -* difference is a positive number otherwise negative. -* @param shift - Fraction value to be used during the calculation. -* @return void -*/ -void c10::program_phy(double time_diff, double shift) -{ - ddi_sel *ds = get_ds(); - c10_phy_reg *c10_phy = (c10_phy_reg *) ds->phy_data; - - int pll_state[C10_PLL_REG_COUNT]; - int mpll_frac_rem_15_0, mpll_frac_den_15_0, mpll_frac_quot_15_0, mpll_multiplier_11_0, ref_clk_mpll_div_2_0; - int pll_freq; - - for(int i = 0; i < C10_PLL_REG_COUNT; i++) { - pll_state[i] = __intel_cx0_read(ds->de_clk - 1, 0, PHY_C10_VDR_PLL(i)); - c10_phy->pll_state_old[i] = pll_state[i]; - DBG("c10: pll_state[%d] = 0x%X, %d\n", i, pll_state[i],pll_state[i]); - } - - - - if(time_diff < 0) { - shift *= -1; - } - - int steps = CALC_STEPS_TO_SYNC(time_diff, shift); - DBG("steps are %d\n", steps); - - mpll_frac_den_15_0 = pll_state[C10_PLL_REG_DEN_HIGH] << 8 | pll_state[C10_PLL_REG_DEN_LOW]; - mpll_frac_quot_15_0 = pll_state[C10_PLL_REG_QUOT_HIGH] << 8 | pll_state[C10_PLL_REG_QUOT_LOW]; - mpll_frac_rem_15_0 = pll_state[C10_PLL_REG_REM_HIGH] << 8 | pll_state[C10_PLL_REG_REM_LOW]; - mpll_multiplier_11_0 = (REG_FIELD_GET8(C10_PLL3_MULTIPLIERH_MASK, pll_state[C10_PLL_REG_MULTIPLIER]) << 8 | - pll_state[2]) / 2 + 16; - ref_clk_mpll_div_2_0 = REG_FIELD_GET8(C10_PLL15_TXCLKDIV_MASK, pll_state[C10_PLL_REG_TXCLKDIV]); - - pll_freq = DIV_ROUND_CLOSEST_ULL(mul_u32_u32(REF_CLK_FREQ * 1000, (mpll_multiplier_11_0 << 16) + mpll_frac_quot_15_0) + - DIV_ROUND_CLOSEST(REF_CLK_FREQ * 1000 * mpll_frac_rem_15_0, mpll_frac_den_15_0), - 10 << (ref_clk_mpll_div_2_0 + 16)); - - double new_pll_freq = pll_freq + (shift * pll_freq / 100); - unsigned long long temp = new_pll_freq * (10 << (ref_clk_mpll_div_2_0 + 16)); - temp -= DIV_ROUND_CLOSEST(REF_CLK_FREQ * 1000 * mpll_frac_rem_15_0, mpll_frac_den_15_0); - temp /= (REF_CLK_FREQ * 1000); - temp -= ((unsigned long long)mpll_multiplier_11_0 << 16); - int new_mpll_frac_quot_15_0 = (int) temp; - c10_phy->pll_state[C10_PLL_REG_QUOT_LOW] = new_mpll_frac_quot_15_0 & GENMASK(7, 0); - c10_phy->pll_state[C10_PLL_REG_QUOT_HIGH] = new_mpll_frac_quot_15_0 >> 8; - - DBG("Old Quotient = 0x%X\n", mpll_frac_quot_15_0); - DBG("Denominator = 0x%X\n", mpll_frac_den_15_0); - DBG("Remainder = 0x%X\n", mpll_frac_rem_15_0); - DBG("Multiplier = 0x%X\n", mpll_multiplier_11_0); - - c10_phy->done = 0; - user_info *ui = new user_info(this, c10_phy); - make_timer((long) steps, ui, reset_phy_regs); - - program_mmio(c10_phy, 1); -} - -/** -* @brief -* This is a helper class function to act as callback and triggers resetting of C10 -* Phy MMIO registers to their original value. It gets executed whenever a timer expires. -* We program MMIO registers of the PHY in this function becase we have waited for a certain -* time period to get the primary and secondary systems vsync in sync and now -* it is time to reprogram the default values for the secondary system's PHYs. -* @param sig - The signal that fired -* @param *si - A pointer to a siginfo_t, which is a structure containing -* further information about the signal -* @param *uc - This is a pointer to a ucontext_t structure, cast to void *. -* The structure pointed to by this field contains signal context information -* that was saved on the user-space stack by the kernel -* @return void -*/ -void c10::reset_phy_regs(int sig, siginfo_t *si, void *uc) -{ - user_info *ui = (user_info *) si->si_value.sival_ptr; - if(!ui) { - return; - } - - DBG("timer done\n"); - c10_phy_reg *dr = (c10_phy_reg *) ui->get_reg(); - c10 *d = (c10 *) ui->get_type(); - - d->reset_phy_regs(dr); - delete ui; -} - -/** -* @brief -* This is an object function called by the timer callback and actually -* calls program_mmio(). -* @param dr - c10 phy register object -* @return void -*/ - void c10::reset_phy_regs(c10_phy_reg *dr) -{ - program_mmio(dr, 0); - dr->done = 1; -} - - -/** -* @brief -* This function waits until the C10 programming is -* finished. There is a timer for which time the new values will remain in -* effect. After that timer expires, the original values will be restored. -* @param t - The timer which needs to be deleted -* @return void -*/ -void c10::wait_until_done() -{ - TRACING(); - - ddi_sel *ds = get_ds(); - c10_phy_reg *c10_phy = (c10_phy_reg *) ds->phy_data; - - while(!c10_phy->done && !lib_client_done) { - usleep(1000); // Wait for 1 ms - } - - // Restore original values in case of app termination - if (lib_client_done) { - reset_phy_regs(c10_phy); - } - - timer_delete(get_timer()); -} - -/** -* @brief -* This function programs the MMIO (Memory-Mapped I/O) registers of the C10 PHY. -* It writes the specified values to the PHY's MMIO registers to configure its operation. -* -* @param pr - A pointer to a c10_phy_reg structure, which holds the MMIO register values to be programmed. -* @param mod - A modifier value that affects how the MMIO registers are programmed. -* @return void -*/ -void c10::program_mmio(c10_phy_reg *pr, int mod) -{ - - ddi_sel *ds = get_ds(); - u32 port = ds->de_clk - 1 ; - - intel_cx0_rmw(port, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CONTROL(1), - 0, C10_VDR_CTRL_MSGBUS_ACCESS, - MB_WRITE_COMMITTED); - - /* Custom width needs to be programmed to 0 for both the phy lanes */ - intel_cx0_rmw(port, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CUSTOM_WIDTH, - C10_VDR_CUSTOM_WIDTH_MASK, C10_VDR_CUSTOM_WIDTH_8_10, - MB_WRITE_COMMITTED); - intel_cx0_rmw(port, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CONTROL(1), - 0, C10_VDR_CTRL_UPDATE_CFG, - MB_WRITE_COMMITTED); - - - __intel_cx0_write(port, 0, PHY_C10_VDR_PLL(C10_PLL_REG_QUOT_LOW), - mod ? pr->pll_state[C10_PLL_REG_QUOT_LOW] : pr->pll_state_old[C10_PLL_REG_QUOT_LOW], - MB_WRITE_COMMITTED); - - __intel_cx0_write(port, 0, PHY_C10_VDR_PLL(C10_PLL_REG_QUOT_HIGH), - mod ? pr->pll_state[C10_PLL_REG_QUOT_HIGH] : pr->pll_state_old[C10_PLL_REG_QUOT_HIGH], - MB_WRITE_COMMITTED); - - intel_cx0_rmw(port, INTEL_CX0_LANE0, PHY_C10_VDR_CONTROL(1), - 0, C10_VDR_CTRL_MASTER_LANE | C10_VDR_CTRL_UPDATE_CFG, - MB_WRITE_COMMITTED); - -} - - -/** - * @brief - * This routine waits until the target register @reg contains the expected - * @value after applying the @mask, i.e. it waits until :: - * - * (intel_uncore_read_fw(uncore, reg) & mask) == value - * - * Otherwise, the wait will timeout after @slow_timeout_ms milliseconds. - * For atomic context @slow_timeout_ms must be zero and @fast_timeout_us - * must be not larger than 20,0000 microseconds. - * - * Note that this routine assumes the caller holds forcewake asserted, it is - * not suitable for very long waits. See intel_wait_for_register() if you - * wish to wait without holding forcewake for the duration (i.e. you expect - * the wait to be slow). - * - * @param uncore - the struct intel_uncore - * @param reg - the register to read - * @param mask - mask to apply to register value - * @param value - expected value - * @param fast_timeout_us - fast timeout in microsecond for atomic/tight wait - * @param slow_timeout_ms - slow timeout in millisecond - * @param out_value - optional placeholder to hold registry value - * @return int - 0 if the register matches the desired condition, or -ETIMEDOUT. - * - */ -int c10::__intel_wait_for_register_fw( - u32 reg, - u32 mask, - u32 value, - u32 *out_value) -{ - u32 reg_value = 0; - int ret = 0; - - reg_value = READ_OFFSET_DWORD(reg); - - if (out_value) - *out_value = reg_value; - - return ret; -} - -/** - * @brief - * This routine waits until the target register @reg contains the expected - * @value after applying the @mask, i.e. it waits until :: - * - * (intel_uncore_read(uncore, reg) & mask) == value - * - * Otherwise, the wait will timeout after @timeout_ms milliseconds. - * - * @param reg - the register to read - * @param mask - mask to apply to register value - * @param value - expected value - * @param fast_timeout_us - fast timeout in microsecond for atomic/tight wait - * @param slow_timeout_ms - slow timeout in millisecond - * @param out_value - optional placeholder to hold registry value - * @return int - 0 if the register matches the desired condition, or -ETIMEDOUT. - */ -int c10::__intel_wait_for_register( - u32 reg, - u32 mask, - u32 value, - u32 *out_value) -{ - u32 reg_value; - int ret; - - ret = __intel_wait_for_register_fw(reg, mask, value, ®_value); - - if (out_value) - *out_value = reg_value; - - return ret; -} - -/** - * @brief - * Wait for register to match expected value - * @param reg - register to wait on - * @param mask - mask to apply to register value - * @param value - expected value - * @param timeout_ms - - * @return int - 0 if the register matches the desired condition, or -ETIMEDOUT. - */ -int c10::intel_wait_for_register(u32 reg, - u32 mask, - u32 value, - unsigned int timeout_ms) -{ - return __intel_wait_for_register(reg, mask, value, NULL); -} - -/** - * @brief - * This function waits until the target register @reg contains the expected - * @param reg - register to wait on - * @param mask - mask to apply to register value - * @param value - expected value - * @param out_value - optional placeholder to hold registry value - * @return int - 0 if the register matches the desired condition, or -ETIMEDOUT. - */ -int c10::__intel_de_wait_for_register(u32 reg, - u32 mask, u32 value, - u32 *out_value) -{ - int out = __intel_wait_for_register(reg, mask, value, out_value); - if(out_value) { - DBG("Wait: reg: 0x%X, mask = 0x%X, value = 0x%X, out_value = 0x%X\n", reg, mask, value, *out_value); - } else { - DBG("Wait: reg: 0x%X, mask = 0x%X, value = 0x%X\n", reg, mask, value); - } - return out; -} - -/** - * @brief - * This function waits until the target register @reg contains the expected - * @param reg - register to wait on - * @param mask - mask to apply to register value - * @param value - expected value - * @param timeout - timeout in milliseconds - * @return int - 0 if the register matches the desired condition, or -ETIMEDOUT. - */ -int c10::intel_de_wait_for_register(u32 reg, u32 mask, u32 value, unsigned int timeout) -{ - return intel_wait_for_register(reg, mask, value, timeout); -} - -/** - * @brief - * This function performs read modify write operation. It clears certain bits - * from the register. - * @param reg - The address or identifier of the register to be modified. - * @param clear - A bitmask that specifies which bits to clear (set to 0) in the register. - * @param set - A bitmask that specifies which bits to set (set to 1) in the register. - * @return u32 - old value - */ -u32 c10::intel_uncore_rmw(u32 reg, u32 clear, u32 set) -{ - u32 old, val; - - old = READ_OFFSET_DWORD(reg); - val = (old & ~clear) | set; - WRITE_OFFSET_DWORD(reg, val); - return old; -} - -/** - * @brief - * This function performs read modify write operation by calling intel_uncore_rmw. - * @param reg - The address or identifier of the register to be modified. - * @param clear - A bitmask that specifies which bits to clear (set to 0) in the register. - * @param set - A bitmask that specifies which bits to set (set to 1) in the register. - * @return u32 - old value - */ -u32 c10::intel_de_rmw(u32 reg, u32 clear, u32 set) -{ - DBG("RMW: reg: 0x%X, clear = 0x%X, set = 0x%X\n", reg, clear, set); - return intel_uncore_rmw(reg, clear, set); -} - -/** - * @brief - * This function waits until the target register @reg is cleared. - * @param reg - register to wait on - * @param mask - mask to apply to register value - * @param timeout - timeout in milliseconds - * @return int - 0 if the register matches the desired condition, or -ETIMEDOUT. - */ -int c10::intel_de_wait_for_clear(int reg, u32 mask, unsigned int timeout) -{ - return intel_de_wait_for_register(reg, mask, 0, timeout); -} - -/** - * @brief - * This function reads the value from the register. - * @param reg - The address or identifier of the register to be read. - * @return u32 - - */ -u32 c10::intel_de_read(u32 reg) -{ - u32 val = READ_OFFSET_DWORD(reg); - DBG("%s: %d reg: 0x%X, value = 0x%X\n", __FUNCTION__, __LINE__, reg, val); - return val; -} - -/** - * @brief - * This function writes the value to the register. - * @param reg - The address or identifier of the register to be written. - * @param val - The value to be written to the register. - */ -void c10::intel_de_write(u32 reg, u32 val) -{ - DBG("Write: reg: 0x%X, val = 0x%X\n", reg, val); - WRITE_OFFSET_DWORD(reg, val); -} - -/** - * @brief - * This function clears response ready flag by calling other helper function. - * @param port - port number - * @param lane - lane number - */ -void c10::intel_clear_response_ready_flag(u32 port, int lane) -{ - intel_de_rmw(XELPDP_PORT_P2M_MSGBUS_STATUS(port, lane), - 0, XELPDP_PORT_P2M_RESPONSE_READY | XELPDP_PORT_P2M_ERROR_SET); -} - -/** - * @brief - * This function resets the bus by writing desired values to registers. - * @param port - port - * @param lane - lane - */ -void c10::intel_cx0_bus_reset(int port, int lane) -{ - intel_de_write(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_RESET); - - if (intel_de_wait_for_clear(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_RESET, - XELPDP_MSGBUS_TIMEOUT_SLOW)) { - ERR("Failed to bring port %d to idle.\n", port); - return; - } - - intel_clear_response_ready_flag(port, lane); -} - -/** - * @brief - * This function waits for the acknowledgement from the device. - * @param port - port - * @param command - command to send - * @param lane - lane - * @param val - value - * @return int - */ -int c10::intel_cx0_wait_for_ack(u32 port, int command, int lane, u32 *val) -{ - if (__intel_de_wait_for_register( - XELPDP_PORT_P2M_MSGBUS_STATUS(port, lane), - XELPDP_PORT_P2M_RESPONSE_READY, - XELPDP_PORT_P2M_RESPONSE_READY, - val)) { - ERR("Port %d Timeout waiting for message ACK. Status: 0x%x\n", port, *val); - return -ETIMEDOUT; - } - - if (*val & XELPDP_PORT_P2M_ERROR_SET) { - ERR("Port %d Error occurred during %s command. Status: 0x%x\n", port, - command == XELPDP_PORT_P2M_COMMAND_READ_ACK ? "read" : "write", *val); - intel_cx0_bus_reset(port, lane); - return -EINVAL; - } - - if (REG_FIELD_GET(XELPDP_PORT_P2M_COMMAND_TYPE_MASK, *val) != (u32) command) { - ERR("Port %d Not a %s response. MSGBUS Status: 0x%x.\n", port, - command == XELPDP_PORT_P2M_COMMAND_READ_ACK ? "read" : "write", *val); - intel_cx0_bus_reset(port, lane); - return -EINVAL; - } - - return 0; -} - -/** - * @brief - * This function reads the value from c10 registers using bus mechanism introduced in MTL/PTL. - * @param port - target port - * @param lane - target lane - * @param addr - address - * @return int - */ -int c10::__intel_cx0_read_once(u32 port, int lane, u16 addr) -{ - int ack; - u32 val; - - if (intel_de_wait_for_clear(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_PENDING, - XELPDP_MSGBUS_TIMEOUT_SLOW)) { - ERR("Port %d Timeout waiting for previous transaction to complete. Reset the bus and retry.\n", port); - intel_cx0_bus_reset(port, lane); - return -ETIMEDOUT; - } - - intel_de_write(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_PENDING | - XELPDP_PORT_M2P_COMMAND_READ | - XELPDP_PORT_M2P_ADDRESS(addr)); - - ack = intel_cx0_wait_for_ack(port, XELPDP_PORT_P2M_COMMAND_READ_ACK, lane, &val); - if (ack < 0) { - intel_cx0_bus_reset(port, lane); - return ack; - } - - intel_clear_response_ready_flag(port, lane); - - return REG_FIELD_GET(XELPDP_PORT_P2M_DATA_MASK, val); -} - -/** - * @brief - * This function reads the value from c10 registers. It's a wrapper call to __intel_cx0_read_once - * multiple times for accurate reading. - * @param port - target port - * @param lane - lane - * @param addr - address - * @return u8 - register value - */ -u8 c10::__intel_cx0_read(u32 port, int lane, u16 addr) -{ - int i, status; - - /* 3 tries is assumed to be enough to read successfully */ - for (i = 0; i < 3; i++) { - status = __intel_cx0_read_once(port, lane, addr); - - if (status >= 0) - return status; - } - - ERR("Port %d Read %04x failed after %d retries.\n", - port, addr, i); - - return 0; -} - -/** - * @brief - * This function writes the value to c10 registers using bus mechanism introduced in MTL/PTL. - * @param port - target port - * @param lane - lane - * @param addr - address - * @param data - value to write - * @param committed - flag to indicate if the write is committed or not - * @return int - 0 on success, negative value on failure - */ -int c10::__intel_cx0_write_once(u32 port, int lane, u16 addr, u8 data, bool committed) -{ - u32 val; - - if (intel_de_wait_for_clear(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_PENDING, - XELPDP_MSGBUS_TIMEOUT_SLOW)) { - ERR("Port %d Timeout waiting for previous transaction to complete. Resetting the bus.\n", port); - intel_cx0_bus_reset(port, lane); - return -ETIMEDOUT; - } - - intel_de_write(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_PENDING | - (committed ? XELPDP_PORT_M2P_COMMAND_WRITE_COMMITTED : - XELPDP_PORT_M2P_COMMAND_WRITE_UNCOMMITTED) | - XELPDP_PORT_M2P_DATA(data) | - XELPDP_PORT_M2P_ADDRESS(addr)); - - if (intel_de_wait_for_clear(XELPDP_PORT_M2P_MSGBUS_CTL(port, lane), - XELPDP_PORT_M2P_TRANSACTION_PENDING, - XELPDP_MSGBUS_TIMEOUT_SLOW)) { - ERR("Port %d Timeout waiting for write to complete. Resetting the bus.\n", port); - intel_cx0_bus_reset(port, lane); - return -ETIMEDOUT; - } - - if (committed) { - if (intel_cx0_wait_for_ack(port, XELPDP_PORT_P2M_COMMAND_WRITE_ACK, lane, &val) < 0) { - intel_cx0_bus_reset(port, lane); - return -EINVAL; - } - } else if ((intel_de_read(XELPDP_PORT_P2M_MSGBUS_STATUS(port, lane)) & - XELPDP_PORT_P2M_ERROR_SET)) { - ERR("Port %d Error occurred during write command.\n", port); - intel_cx0_bus_reset(port, lane); - return -EINVAL; - } - - intel_clear_response_ready_flag(port, lane); - - return 0; -} - -/** - * @brief - * This function writes value to c10 registers. It's a wrapper call to __intel_cx0_write_once - * multiple times for accurate writing. - * @param port - target port - * @param lane - lane - * @param addr - address - * @param data - value to write - * @param committed - flag to indicate if the write is committed or not - * @return u8 - register value - */ -void c10::__intel_cx0_write(u32 port, int lane, u16 addr, u8 data, bool committed) -{ - int i, status; - - /* 3 tries is assumed to be enough to write successfully */ - for (i = 0; i < 3; i++) { - status = __intel_cx0_write_once(port, lane, addr, data, committed); - - if (status == 0) - return; - } - - ERR("Port %d Write %04x failed after %d retries.\n", port, addr, i); -} - -/** - * @brief - * This function performs read modify write operation by calling other helper function. - * @param port - port - * @param lane - lane number - * @param addr - address to write - * @param clear - bits to clear - * @param set - bits to set - * @param committed - flag to indicate if the write is committed or not - */ -void c10::__intel_cx0_rmw(u32 port, int lane, u16 addr, u8 clear, u8 set, bool committed) -{ - u8 old, val; - - old = __intel_cx0_read(port, lane, addr); - val = (old & ~clear) | set; - - if (val != old) - __intel_cx0_write(port, lane, addr, val, committed); -} - -/** - * @brief - * This function performs read modify write operation on multiple lanes based on provided mask. - * @param port - port number - * @param lane_mask - lane mask - * @param addr - address to read/write - * @param clear - bits to clear - * @param set - bits to set - * @param committed - flag to indicate if the write is committed or not - */ -void c10::intel_cx0_rmw(u32 port, u8 lane_mask, u16 addr, u8 clear, u8 set, bool committed) -{ - u8 lane; - - for_each_cx0_lane_in_mask(lane_mask, lane) - __intel_cx0_rmw(port, lane, addr, clear, set, committed); -} - -/** - * @brief - * This function performs perform write on cx0 registers for multiple lanes. - * @param port - port number - * @param lane_mask - lane mask - * @param addr - address to read/write - * @param data - value to write - * @param committed - flag to indicate if the write is committed or not - */ -void c10::intel_cx0_write(u32 port, u8 lane_mask, u16 addr, u8 data, bool committed) -{ - int lane; - - for_each_cx0_lane_in_mask(lane_mask, lane) - __intel_cx0_write(port, lane, addr, data, committed); -} - +/* + * Copyright © 2024 Intel Corporation + * + * 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 (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + */ + +#include +#include +#include +#include +#include +#include "mmio.h" +#include "c10.h" + + /** + * @brief + * Constructor for c10 class + * @param ds + * @param pipe + */ +c10::c10(ddi_sel* ds, int _pipe) : phys(_pipe) +{ + TRACING(); + if (!ds) { + ERR("ddi_sel pointer is null\n"); + return; + } + + memset(&c10_reg, 0, sizeof(c10_reg)); + ds->phy_data = &c10_reg; + set_ds(ds); + set_init(true); + done = 1; + u32 port = ds->dpll_num - 1; + INFO("c10: port = %d\n", port); + phy_type = C10; +} + +/** + * @brief + * This is an inline function to multiply two 32-bit numbers + * and return the result as a 64-bit number. + * @param a - The first 32-bit number + * @param b - The second 32-bit number + */ +static inline unsigned long long mul_u32_u32(u32 a, u32 b) +{ + return (unsigned long long)a * b; +} + +/** + * @brief + * This function called by base phy class and calculates the PLL + * clock frequency for C10 PHY. + * @param None + * @return double - The calculated PLL clock + */ +double c10::calculate_pll_clock() +{ + TRACING(); + ddi_sel* ds = get_ds(); + if (!ds) { + ERR("Invalid ddi_sel\n"); + return 0; + } + + uint32_t mpll_frac_rem_15_0, mpll_frac_den_15_0, mpll_frac_quot_15_0, mpll_multiplier_11_0, ref_clk_mpll_div_2_0; + mpll_frac_den_15_0 = c10_reg.pll_state_orig[C10_PLL_REG_DEN_HIGH] << 8 | c10_reg.pll_state_orig[C10_PLL_REG_DEN_LOW]; + mpll_frac_quot_15_0 = c10_reg.pll_state_orig[C10_PLL_REG_QUOT_HIGH] << 8 | c10_reg.pll_state_orig[C10_PLL_REG_QUOT_LOW]; + mpll_frac_rem_15_0 = c10_reg.pll_state_orig[C10_PLL_REG_REM_HIGH] << 8 | c10_reg.pll_state_orig[C10_PLL_REG_REM_LOW]; + mpll_multiplier_11_0 = (REG_FIELD_GET8(C10_PLL3_MULTIPLIERH_MASK, c10_reg.pll_state_orig[C10_PLL_REG_MULTIPLIER]) << 8 | + c10_reg.pll_state_orig[2]) / 2 + 16; + ref_clk_mpll_div_2_0 = REG_FIELD_GET8(C10_PLL15_TXCLKDIV_MASK, c10_reg.pll_state_orig[C10_PLL_REG_TXCLKDIV]); + + const double ref_clk_freq_khz = REF_CLK_FREQ * 1000; + unsigned long long numenator = mul_u32_u32(ref_clk_freq_khz, (mpll_multiplier_11_0 << 16) + mpll_frac_quot_15_0) + + DIV_ROUND_CLOSEST(ref_clk_freq_khz * mpll_frac_rem_15_0, mpll_frac_den_15_0); + unsigned long long denominator = 10 << (ref_clk_mpll_div_2_0 + 16); + double pll_freq = numenator/(double)denominator; + return pll_freq; +} + +/** + * @brief + * This function calculates the feedback dividers for the PLL frequency + * and store the values in the c10_reg.pll_state_mod array + * @param pll_freq - The desired PLL frequency + * @return 0 - success, non zero - failure + */ +int c10::calculate_feedback_dividers(double pll_freq) +{ + TRACING(); + const double ref_clk_freq_khz = REF_CLK_FREQ * 1000; + uint32_t ref_clk_mpll_div_2_0 = REG_FIELD_GET8(C10_PLL15_TXCLKDIV_MASK, c10_reg.pll_state_orig[C10_PLL_REG_TXCLKDIV]); + uint32_t mpll_frac_rem_15_0 = c10_reg.pll_state_orig[C10_PLL_REG_REM_HIGH] << 8 | c10_reg.pll_state_orig[C10_PLL_REG_REM_LOW]; + uint32_t mpll_frac_den_15_0 = c10_reg.pll_state_orig[C10_PLL_REG_DEN_HIGH] << 8 | c10_reg.pll_state_orig[C10_PLL_REG_DEN_LOW]; + uint32_t mpll_multiplier_11_0 = (REG_FIELD_GET8(C10_PLL3_MULTIPLIERH_MASK, c10_reg.pll_state_orig[C10_PLL_REG_MULTIPLIER]) << 8 | c10_reg.pll_state_orig[2]) / 2 + 16; + unsigned long long temp = pll_freq * (10 << (ref_clk_mpll_div_2_0 + 16)); + temp -= DIV_ROUND_CLOSEST_ULL(ref_clk_freq_khz * mpll_frac_rem_15_0, mpll_frac_den_15_0); + temp /= (ref_clk_freq_khz); + temp -= ((unsigned long long)mpll_multiplier_11_0 << 16); + int new_mpll_frac_quot_15_0 = (int)temp; + c10_reg.pll_state_mod[C10_PLL_REG_QUOT_LOW] = new_mpll_frac_quot_15_0 & GENMASK(7, 0); + c10_reg.pll_state_mod[C10_PLL_REG_QUOT_HIGH] = new_mpll_frac_quot_15_0 >> 8; + + INFO("\tQuot Low: 0x%X [%d] -> 0x%X [%d]\n", + c10_reg.pll_state_orig[C10_PLL_REG_QUOT_LOW], c10_reg.pll_state_orig[C10_PLL_REG_QUOT_LOW], + (int)c10_reg.pll_state_mod[C10_PLL_REG_QUOT_LOW], (int)c10_reg.pll_state_mod[C10_PLL_REG_QUOT_LOW]); + INFO("\tQuot High: 0x%X [%d] -> 0x%X [%d]\n", + c10_reg.pll_state_orig[C10_PLL_REG_QUOT_HIGH], c10_reg.pll_state_orig[C10_PLL_REG_QUOT_HIGH], + (int)c10_reg.pll_state_mod[C10_PLL_REG_QUOT_HIGH], (int)c10_reg.pll_state_mod[C10_PLL_REG_QUOT_HIGH]); + + return 0; +} + +/** + * @brief + * This function prints the register value + * @param None + * @return void + */ +void c10::print_registers() +{ + TRACING(); + PRINT("Original Value ->\n"); + for (int i = 0; i < C10_PLL_REG_COUNT; i++) { + PRINT("c10: pll_state[%d] = 0x%X, %d\n", i, + static_cast(c10_reg.pll_state_orig[i]), + static_cast(c10_reg.pll_state_orig[i])); + } + PRINT("Updated Value ->\n"); + for (int i = 0; i < C10_PLL_REG_COUNT; i++) { + PRINT("c10: pll_state[%d] = 0x%X, %d\n", i, + static_cast(c10_reg.pll_state_mod[i]), + static_cast(c10_reg.pll_state_mod[i])); + } +} + +/** + * @brief + * This function reads the C10 Phy MMIO registers + * @param None + * @return void + */ +void c10::read_registers() +{ + TRACING(); + ddi_sel* ds = get_ds(); + if (!ds) { + ERR("Invalid ddi_sel\n"); + return; + } + + /* + According to BSpecs, MTL and PTL DDIs for C10 correspond to ports A and B. + Consequently, it is reasonable to deduce the port number from de_clk as clk-1. + However, this assumption might not hold for future platforms, where it + may be necessary to derive the port number directly from register values. + For guidance on this approach, refer to combo.cpp. + + BSpecs: + Port Usage Capability Alternate Names + DDI A | Port A | eDP, DP, HDMI DDIA, Port A + DDI B | Port B | eDP, DP, HDMI DDIB, Port B + */ + + // dpll_num holds port number. + // MTL has port number same as ddi_select. However PTL is different. + u32 port = ds->dpll_num - 1; + int pll_state[C10_PLL_REG_COUNT] = { 0 }; + for (int i = 0; i < C10_PLL_REG_COUNT; i++) { + pll_state[i] = intel_cx0_read(port, INTEL_CX0_LANE0, PHY_C10_VDR_PLL(i)); + c10_reg.pll_state_orig[i] = c10_reg.pll_state_mod[i] = pll_state[i]; + DBG("c10: pll_state[%d] = 0x%X, %d\n", i, pll_state[i], pll_state[i]); + } +} + +/** + * @brief + * This function programs the C10 Phy MMIO registers + * needed to move avsync period for a system. + * @param mod - This parameter tells the function whether to program the original + * values or the modified ones. + * - 0 = Original + * - 1 = modified + * @return 0 - success, non zero - failure + */ +int c10::program_mmio(int mod) +{ + TRACING(); + ddi_sel* ds = get_ds(); + + u32 port = ds->dpll_num - 1; + + intel_cx0_rmw(port, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CONTROL(1), + 0, C10_VDR_CTRL_MSGBUS_ACCESS, + MB_WRITE_COMMITTED); + + /* Custom width needs to be programmed to 0 for both the phy lanes */ + intel_cx0_rmw(port, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CUSTOM_WIDTH, + C10_VDR_CUSTOM_WIDTH_MASK, C10_VDR_CUSTOM_WIDTH_8_10, + MB_WRITE_COMMITTED); + intel_cx0_rmw(port, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CONTROL(1), + 0, C10_VDR_CTRL_UPDATE_CFG, + MB_WRITE_COMMITTED); + + + intel_cx0_write(port, INTEL_CX0_LANE0, PHY_C10_VDR_PLL(C10_PLL_REG_QUOT_LOW), + mod ? c10_reg.pll_state_mod[C10_PLL_REG_QUOT_LOW] : c10_reg.pll_state_orig[C10_PLL_REG_QUOT_LOW], + MB_WRITE_COMMITTED); + + intel_cx0_write(port, INTEL_CX0_LANE0, PHY_C10_VDR_PLL(C10_PLL_REG_QUOT_HIGH), + mod ? c10_reg.pll_state_mod[C10_PLL_REG_QUOT_HIGH] : c10_reg.pll_state_orig[C10_PLL_REG_QUOT_HIGH], + MB_WRITE_COMMITTED); + + intel_cx0_rmw(port, INTEL_CX0_LANE0, PHY_C10_VDR_CONTROL(1), + 0, C10_VDR_CTRL_MASTER_LANE | C10_VDR_CTRL_UPDATE_CFG, + MB_WRITE_COMMITTED); + + return 0; +} diff --git a/lib/c10.h b/lib/c10.h index e15c436..8219ed4 100644 --- a/lib/c10.h +++ b/lib/c10.h @@ -1,454 +1,57 @@ -/* - * Copyright © 2024 Intel Corporation - * - * 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 (including the next - * paragraph) 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. - * - */ - -#ifndef _C10_H -#define _C10_H - -#include "common.h" - -#define _DDI_CLK_VALFREQ_A 0x64030 -#define _DDI_CLK_VALFREQ_B 0x64130 -#define _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_A 0x64040 -#define _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_B 0x64140 -#define _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC1 0x16F240 -#define _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC2 0x16F440 -#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) - -enum port { - PORT_NONE = -1, - - PORT_A = 0, - PORT_B, - PORT_C, - PORT_D, - PORT_E, - PORT_F, - PORT_G, - PORT_H, - PORT_I, - - /* tgl+ */ - PORT_TC1 = PORT_D, - PORT_TC2, - PORT_TC3, - PORT_TC4, - PORT_TC5, - PORT_TC6, - - /* XE_LPD repositions D/E offsets and bitfields */ - PORT_D_XELPD = PORT_TC5, - PORT_E_XELPD, - - I915_MAX_PORTS -}; - - -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; - -#define U32_MAX ((u32)~0U) -/** - * is_power_of_2() - check if a value is a power of two - * @n: the value to check - * - * Determine whether some value is a power of two, where zero is - * *not* considered a power of two. - * Return: true if @n is a power of 2, otherwise false. - */ -static inline __attribute__((const)) -bool is_power_of_2(unsigned long n) -{ - return (n != 0 && ((n & (n - 1)) == 0)); -} -#define IS_POWER_OF_2 is_power_of_2 -#define __is_constexpr(x) \ - (sizeof(int) == sizeof(*(int *)(8 ? ((void *)((long)(x) * 0l)) : (int *)8))) - -#define MB_WRITE_COMMITTED true -#define MB_WRITE_UNCOMMITTED false - -/* - * Like _PICK_EVEN(), but supports 2 ranges of evenly spaced address offsets. - * @__c_index corresponds to the index in which the second range starts to be - * used. Using math interval notation, the first range is used for indexes [ 0, - * @__c_index), while the second range is used for [ @__c_index, ... ). Example: - * - * #define _FOO_A 0xf000 - * #define _FOO_B 0xf004 - * #define _FOO_C 0xf008 - * #define _SUPER_FOO_A 0xa000 - * #define _SUPER_FOO_B 0xa100 - * #define FOO(x) _MMIO(_PICK_EVEN_2RANGES(x, 3, \ - * _FOO_A, _FOO_B, \ - * _SUPER_FOO_A, _SUPER_FOO_B)) - * - * This expands to: - * 0: 0xf000, - * 1: 0xf004, - * 2: 0xf008, - * 3: 0xa000, - * 4: 0xa100, - * 5: 0xa200, - * ... - */ -#define _PICK_EVEN_2RANGES(__index, __c_index, __a, __b, __c, __d) \ - (((__index) < (__c_index) ? _PICK_EVEN(__index, __a, __b) : \ - _PICK_EVEN((__index) - (__c_index), __c, __d))) - - -#define XELPDP_PORT_M2P_MSGBUS_CTL(port, lane) (_PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_A, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_B, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC1, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC2) + (lane) * 4) -#define PORT_CLOCK_CTL(phy_num) (_XELPDP_PORT_CLOCK_CTL_A + phy_num * 0x100) -#define PORT_M2P_MSGBUS_CTL(phy_num) (_XELPDP_PORT_M2P_MSGBUS_CTL_LN0_A + phy_num * 0x100) -#define __bf_shf(x) (__builtin_ffsll(x) - 1) - -#define _XELPDP_PORT_MSGBUS_TIMER_LN0_A 0x640d8 -#define _XELPDP_PORT_MSGBUS_TIMER_LN0_B 0x641d8 -#define _XELPDP_PORT_MSGBUS_TIMER_LN0_USBC1 0x16f258 -#define _XELPDP_PORT_MSGBUS_TIMER_LN0_USBC2 0x16f458 -#define _XELPDP_PORT_MSGBUS_TIMER(port, lane) (_PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_MSGBUS_TIMER_LN0_A, \ - _XELPDP_PORT_MSGBUS_TIMER_LN0_B, \ - _XELPDP_PORT_MSGBUS_TIMER_LN0_USBC1, \ - _XELPDP_PORT_MSGBUS_TIMER_LN0_USBC2) + (lane) * 4) -#define XELPDP_PORT_MSGBUS_TIMER(port, lane) \ - _XELPDP_PORT_MSGBUS_TIMER(port, lane) -#define XELPDP_PORT_MSGBUS_TIMER_VAL_MASK REG_GENMASK(23, 0) -#define XELPDP_PORT_MSGBUS_TIMER_VAL REG_FIELD_PREP(XELPDP_PORT_MSGBUS_TIMER_VAL_MASK, 0xa000) - - -/** - * REG_FIELD_PREP() - Prepare a u32 bitfield value - * @__mask: shifted mask defining the field's length and position - * @__val: value to put in the field - * - * Local copy of FIELD_PREP() to generate an integer constant expression, force - * u32 and for consistency with REG_FIELD_GET(), REG_BIT() and REG_GENMASK(). - * - * @return: @__val masked and shifted into the field defined by @__mask. - */ -#define REG_FIELD_PREP(__mask, __val) \ - ((u32)(((typeof(__mask))(__val) << __bf_shf(__mask)) & (__mask))) - - -/** - * REG_FIELD_PREP8() - Prepare a u8 bitfield value - * @__mask: shifted mask defining the field's length and position - * @__val: value to put in the field - * - * Local copy of FIELD_PREP() to generate an integer constant expression, force - * u8 and for consistency with REG_FIELD_GET8(), REG_BIT8() and REG_GENMASK8(). - * - * @return: @__val masked and shifted into the field defined by @__mask. - */ -#define REG_FIELD_PREP8(__mask, __val) \ - ((u8)((((typeof(__mask))(__val) << __bf_shf(__mask)) & (__mask))) - - -/** - * FIELD_GET() - extract a bitfield element - * @_mask: shifted mask defining the field's length and position - * @_reg: value of entire bitfield - * - * FIELD_GET() extracts the field specified by @_mask from the - * bitfield passed in as @_reg by masking and shifting it down. - */ -#define FIELD_GET(_mask, _reg) \ - ({ \ - (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \ - }) - - -/** - * REG_FIELD_GET() - Extract a u32 bitfield value - * @__mask: shifted mask defining the field's length and position - * @__val: value to extract the bitfield value from - * - * Local wrapper for FIELD_GET() to force u32 and for consistency with - * REG_FIELD_PREP(), REG_BIT() and REG_GENMASK(). - * - * @return: Masked and shifted value of the field defined by @__mask in @__val. - */ -#define REG_FIELD_GET(__mask, __val) ((u32)FIELD_GET(__mask, __val)) -#define REG_FIELD_GET8(__mask, __val) ((u8)FIELD_GET(__mask, __val)) - -#define XELPDP_PORT_M2P_COMMAND_TYPE_MASK GENMASK(30, 27) -#define XELPDP_PORT_M2P_ADDRESS_MASK GENMASK(11, 0) -#define XELPDP_PORT_M2P_COMMAND_READ REG_FIELD_PREP(XELPDP_PORT_M2P_COMMAND_TYPE_MASK, 0x3) -#define XELPDP_PORT_M2P_ADDRESS(val) REG_FIELD_PREP(XELPDP_PORT_M2P_ADDRESS_MASK, val) -#define INTEL_CX0_LANE0 BIT(0) -#define INTEL_CX0_LANE1 BIT(1) -#define INTEL_CX0_BOTH_LANES (INTEL_CX0_LANE1 | INTEL_CX0_LANE0) -#define XELPDP_SSC_ENABLE_PLLB BIT(0) -#define XELPDP_SSC_ENABLE_PLLA BIT(1) -#define XELPDP_LANE1_PHY_CLOCK_SELECT BIT(8) -#define XELPDP_FORWARD_CLOCK_UNGATE BIT(10) -#define XELPDP_PORT_M2P_TRANSACTION_RESET BIT(15) -#define XELPDP_PORT_P2M_ERROR_SET BIT(15) -#define XELPDP_PORT_REVERSAL BIT(16) -#define XELPDP_PORT_BUF_SOC_PHY_READY BIT(24) -#define XELPDP_PORT_P2M_RESPONSE_READY BIT(31) -#define XELPDP_PORT_M2P_TRANSACTION_PENDING BIT(31) -#define XELPDP_PORT_BUF_SOC_READY_TIMEOUT_US 100 -#define XELPDP_PORT_RESET_START_TIMEOUT_US 5 -#define XELPDP_REFCLK_ENABLE_TIMEOUT_US 1 -#define CX0_P2_STATE_RESET 0x2 -#define _XELPDP_PORT_BUF_CTL1_LN0_A 0x64004 -#define _XELPDP_PORT_BUF_CTL1_LN0_B 0x64104 -#define _XELPDP_PORT_BUF_CTL1_LN0_USBC1 0x16F200 -#define _XELPDP_PORT_BUF_CTL1_LN0_USBC2 0x16F400 -#define XELPDP_PORT_BUF_CTL1(port) _PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_BUF_CTL1_LN0_A, \ - _XELPDP_PORT_BUF_CTL1_LN0_B, \ - _XELPDP_PORT_BUF_CTL1_LN0_USBC1, \ - _XELPDP_PORT_BUF_CTL1_LN0_USBC2) -#define XELPDP_PORT_BUF_CTL2(port) (_PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_BUF_CTL1_LN0_A, \ - _XELPDP_PORT_BUF_CTL1_LN0_B, \ - _XELPDP_PORT_BUF_CTL1_LN0_USBC1, \ - _XELPDP_PORT_BUF_CTL1_LN0_USBC2) + 4) -#define XELPDP_PORT_BUF_CTL3(port) (_PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_BUF_CTL1_LN0_A, \ - _XELPDP_PORT_BUF_CTL1_LN0_B, \ - _XELPDP_PORT_BUF_CTL1_LN0_USBC1, \ - _XELPDP_PORT_BUF_CTL1_LN0_USBC2) + 8) -#define XELPDP_PORT_P2M_MSGBUS_STATUS(port, lane) (_PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_A, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_B, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC1, \ - _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC2) + (lane) * 4 + 8) -#define _XELPDP_PORT_CLOCK_CTL_A 0x640E0 -#define _XELPDP_PORT_CLOCK_CTL_B 0x641E0 -#define _XELPDP_PORT_CLOCK_CTL_USBC1 0x16F260 -#define _XELPDP_PORT_CLOCK_CTL_USBC2 0x16F460 -#define XELPDP_PORT_CLOCK_CTL(port) _PICK_EVEN_2RANGES(port, PORT_TC1, \ - _XELPDP_PORT_CLOCK_CTL_A, \ - _XELPDP_PORT_CLOCK_CTL_B, \ - _XELPDP_PORT_CLOCK_CTL_USBC1, \ - _XELPDP_PORT_CLOCK_CTL_USBC2) -#define XELPDP_MSGBUS_TIMEOUT_SLOW 1 -#define XELPDP_DDI_CLOCK_SELECT_MAXPCLK 0x8 -#define XELPDP_DDI_CLOCK_SELECT_DIV18CLK 0x9 -#define XELPDP_DDI_CLOCK_SELECT(val) REG_FIELD_PREP(XELPDP_DDI_CLOCK_SELECT_MASK, val) -#define XELPDP_PORT_M2P_COMMAND_WRITE_UNCOMMITTED REG_FIELD_PREP(XELPDP_PORT_M2P_COMMAND_TYPE_MASK, 0x1) -#define XELPDP_PORT_M2P_COMMAND_WRITE_COMMITTED REG_FIELD_PREP(XELPDP_PORT_M2P_COMMAND_TYPE_MASK, 0x2) -#define XELPDP_LANE_POWERDOWN_UPDATE(lane) _PICK(lane, BIT(25), BIT(24)) -#define XELPDP_LANE_PHY_CURRENT_STATUS(lane) _PICK(lane, BIT(29), BIT(28)) -#define XELPDP_LANE_PIPE_RESET(lane) _PICK(lane, BIT(31), BIT(30)) -#define XELPDP_LANE_PCLK_REFCLK_REQUEST(lane) BIT(29 - ((lane) * 4)) -#define XELPDP_LANE_PCLK_REFCLK_ACK(lane) BIT(28 - ((lane) * 4)) -#define XELPDP_LANE_POWERDOWN_NEW_STATE_MASK GENMASK(3, 0) -#define XELPDP_POWER_STATE_ACTIVE_MASK GENMASK(3, 0) -#define XELPDP_POWER_STATE_READY_MASK GENMASK(7, 4) -#define XELPDP_PLL_LANE_STAGGERING_DELAY_MASK GENMASK(15, 8) -#define XELPDP_DDI_CLOCK_SELECT_MASK GENMASK(15, 12) -#define _XELPDP_LANE1_POWERDOWN_NEW_STATE_MASK GENMASK(19, 16) -#define XELPDP_PORT_M2P_DATA_MASK GENMASK(23, 16) -#define XELPDP_PORT_P2M_DATA_MASK GENMASK(23, 16) -#define _XELPDP_LANE0_POWERDOWN_NEW_STATE_MASK GENMASK(23, 20) -#define XELPDP_PORT_P2M_COMMAND_TYPE_MASK GENMASK(30, 27) -#define _XELPDP_LANE0_POWERDOWN_NEW_STATE(val) REG_FIELD_PREP(_XELPDP_LANE0_POWERDOWN_NEW_STATE_MASK, val) -#define _XELPDP_LANE1_POWERDOWN_NEW_STATE(val) REG_FIELD_PREP(_XELPDP_LANE1_POWERDOWN_NEW_STATE_MASK, val) -#define XELPDP_POWER_STATE_ACTIVE(val) REG_FIELD_PREP(XELPDP_POWER_STATE_ACTIVE_MASK, val) -#define XELPDP_PLL_LANE_STAGGERING_DELAY(val) REG_FIELD_PREP(XELPDP_PLL_LANE_STAGGERING_DELAY_MASK, val) -#define XELPDP_LANE_POWERDOWN_NEW_STATE(lane, val) _PICK(lane, \ - _XELPDP_LANE0_POWERDOWN_NEW_STATE(val), \ - _XELPDP_LANE1_POWERDOWN_NEW_STATE(val)) -#define XELPDP_POWER_STATE_READY(val) REG_FIELD_PREP(XELPDP_POWER_STATE_READY_MASK, val) -#define CX0_P0_STATE_ACTIVE 0x0 -#define CX0_P2_STATE_READY 0x2 -#define CX0_P2PG_STATE_DISABLE 0x9 -#define CX0_P4PG_STATE_DISABLE 0xC -#define CX0_P2_STATE_RESET 0x2 -#define XELPDP_PORT_RESET_END_TIMEOUT 15 -#define XELPDP_PORT_P2M_COMMAND_READ_ACK 0x4 -#define XELPDP_PORT_P2M_COMMAND_WRITE_ACK 0x5 -#define XELPDP_PORT_M2P_DATA(val) REG_FIELD_PREP(XELPDP_PORT_M2P_DATA_MASK, val) - - -/* C10 Vendor Registers */ -#define PHY_C10_VDR_PLL(idx) (0xC00 + (idx)) -#define C10_PLL0_FRACEN REG_BIT8(4) -#define C10_PLL3_MULTIPLIERH_MASK REG_GENMASK8(3, 0) -#define C10_PLL15_TXCLKDIV_MASK REG_GENMASK8(2, 0) -#define C10_PLL15_HDMIDIV_MASK REG_GENMASK8(5, 3) -#define PHY_C10_VDR_CMN(idx) (0xC20 + (idx)) -#define C10_CMN0_REF_RANGE REG_FIELD_PREP(REG_GENMASK(4, 0), 1) -#define C10_CMN0_REF_CLK_MPLLB_DIV REG_FIELD_PREP(REG_GENMASK(7, 5), 1) -#define C10_CMN3_TXVBOOST_MASK REG_GENMASK8(7, 5) -#define C10_CMN3_TXVBOOST(val) REG_FIELD_PREP8(C10_CMN3_TXVBOOST_MASK, val) -#define PHY_C10_VDR_TX(idx) (0xC30 + (idx)) -#define C10_TX0_TX_MPLLB_SEL REG_BIT(4) -#define C10_TX1_TERMCTL_MASK REG_GENMASK8(7, 5) -#define C10_TX1_TERMCTL(val) REG_FIELD_PREP8(C10_TX1_TERMCTL_MASK, val) -#define PHY_C10_VDR_CONTROL(idx) (0xC70 + (idx) - 1) -#define C10_VDR_CTRL_MSGBUS_ACCESS REG_BIT8(2) -#define C10_VDR_CTRL_MASTER_LANE REG_BIT8(1) -#define C10_VDR_CTRL_UPDATE_CFG REG_BIT8(0) -#define PHY_C10_VDR_CUSTOM_WIDTH 0xD02 -#define C10_VDR_CUSTOM_WIDTH_MASK REG_GENMASK(1, 0) -#define C10_VDR_CUSTOM_WIDTH_8_10 REG_FIELD_PREP(C10_VDR_CUSTOM_WIDTH_MASK, 0) -#define PHY_C10_VDR_OVRD 0xD71 -#define PHY_C10_VDR_OVRD_TX1 REG_BIT8(0) -#define PHY_C10_VDR_OVRD_TX2 REG_BIT8(2) -#define PHY_C10_VDR_PRE_OVRD_TX1 0xD80 -#define C10_PHY_OVRD_LEVEL_MASK REG_GENMASK8(5, 0) -#define C10_PHY_OVRD_LEVEL(val) REG_FIELD_PREP8(C10_PHY_OVRD_LEVEL_MASK, val) -#define PHY_CX0_VDROVRD_CTL(lane, tx, control) \ - (PHY_C10_VDR_PRE_OVRD_TX1 + \ - ((lane) ^ (tx)) * 0x10 + (control)) -#define TRANS_DDI_MODE_SELECT_MASK (7 << 24) -#define TRANS_DDI_MODE_SELECT_HDMI (0 << 24) -#define TRANS_DDI_MODE_SELECT_DVI (1 << 24) -#define TRANS_DDI_MODE_SELECT_DP_SST (2 << 24) -#define TRANS_DDI_MODE_SELECT_DP_MST (3 << 24) - - -/* these are outputs from the chip - integrated only - external chips are via DVO or SDVO output */ -enum intel_output_type { - INTEL_OUTPUT_UNUSED = 0, - INTEL_OUTPUT_ANALOG = 1, - INTEL_OUTPUT_DVO = 2, - INTEL_OUTPUT_SDVO = 3, - INTEL_OUTPUT_LVDS = 4, - INTEL_OUTPUT_TVOUT = 5, - INTEL_OUTPUT_HDMI = 6, - INTEL_OUTPUT_DP = 7, - INTEL_OUTPUT_EDP = 8, - INTEL_OUTPUT_DSI = 9, - INTEL_OUTPUT_DDI = 10, - INTEL_OUTPUT_DP_MST = 11, -}; - -/* - * Add the pseudo keyword 'fallthrough' so case statement blocks - * must end with any of these keywords: - * break; - * fallthrough; - * continue; - * goto