From de2541e1b91a2007bc39cf10586e643a3db7338b Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 09:36:22 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +- docs/introductory_tutorial/burn_image.md | 2 +- .../connect_device_using_ssh.md | 2 +- .../cpp_development_environment.md | 2 +- .../python_development_environment.md | 2 +- example/periphery/adc/README.md | 196 ------------------ .../periphery/adc/{ => c++}/CMakeLists.txt | 0 example/periphery/adc/c++/README.md | 196 ++++++++++++++++++ .../periphery/adc/{ => c++}/images/100mV.png | Bin .../adc/{ => c++}/images/build_example.png | Bin .../periphery/adc/{ => c++}/images/result.png | Bin .../periphery/adc/{ => c++}/images/sftp.png | Bin example/periphery/adc/{ => c++}/test_adc.cc | 0 13 files changed, 207 insertions(+), 207 deletions(-) rename example/periphery/adc/{ => c++}/CMakeLists.txt (100%) create mode 100644 example/periphery/adc/c++/README.md rename example/periphery/adc/{ => c++}/images/100mV.png (100%) rename example/periphery/adc/{ => c++}/images/build_example.png (100%) rename example/periphery/adc/{ => c++}/images/result.png (100%) rename example/periphery/adc/{ => c++}/images/sftp.png (100%) rename example/periphery/adc/{ => c++}/test_adc.cc (100%) diff --git a/README.md b/README.md index 733af23..fbdbacc 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,11 @@ Lockzhiner Vision Module 是福州市凌睿智捷电子有限公司倾力打造 如果你需要开发 Python 程序,请参考以下教程搭建开发环境: -* [Python 开发环境搭建指南](./docs/introductory_tutorial/python_development_environment.md) +* [凌智视觉模块 Python 开发环境搭建指南](./docs/introductory_tutorial/python_development_environment.md) 如果你需要开发 C++ 程序,请参考以下教程搭建开发环境: -* [C++ 开发环境搭建指南](./docs/introductory_tutorial/cpp_development_environment.md) +* [凌智视觉模块 C++ 开发环境搭建指南](./docs/introductory_tutorial/cpp_development_environment.md) * [基于 C++ 编写 Hello World 程序](./example/hello_world/README.md) ## 🔌 外设控制教程 @@ -32,11 +32,11 @@ Lockzhiner Vision Module 拥有丰富的 IO 接口,其接口图片如下图所 为了帮助你快速上手教程,我们提供了一系列的外设控制例程,你可以点击链接快速学习 -* [串口使用指南](./example/periphery/usart/README.md) -* [ADC 使用指南](./example/periphery/adc/README.md) -* [PWM 使用指南](./example/periphery/pwm/README.md) -* [GPIO 使用指南](./example/periphery/gpio/README.md) -* [摄像头使用指南](./example/periphery/capture/README.md) +* [凌智视觉模块串口使用指南](./example/periphery/usart/README.md) +* [凌智视觉模块 ADC 使用指南](./example/periphery/adc/README.md) +* [凌智视觉模块 PWM 使用指南](./example/periphery/pwm/README.md) +* [凌智视觉模块 GPIO 使用指南](./example/periphery/gpio/README.md) +* [凌智视觉模块摄像头使用指南](./example/periphery/capture/README.md) ## 🧠 深度学习视觉部署教程 diff --git a/docs/introductory_tutorial/burn_image.md b/docs/introductory_tutorial/burn_image.md index 5b6602e..c2ae3c0 100644 --- a/docs/introductory_tutorial/burn_image.md +++ b/docs/introductory_tutorial/burn_image.md @@ -1,4 +1,4 @@ -

烧录镜像指南

+

凌智视觉模块烧录镜像指南

发布版本:V0.0.1 diff --git a/docs/introductory_tutorial/connect_device_using_ssh.md b/docs/introductory_tutorial/connect_device_using_ssh.md index 3ded352..1980d6d 100644 --- a/docs/introductory_tutorial/connect_device_using_ssh.md +++ b/docs/introductory_tutorial/connect_device_using_ssh.md @@ -1,4 +1,4 @@ -

连接设备指南

+

凌智视觉模块连接设备指南

发布版本:V0.0.1 diff --git a/docs/introductory_tutorial/cpp_development_environment.md b/docs/introductory_tutorial/cpp_development_environment.md index 5a93ae3..66537c0 100644 --- a/docs/introductory_tutorial/cpp_development_environment.md +++ b/docs/introductory_tutorial/cpp_development_environment.md @@ -1,4 +1,4 @@ -

C++ 开发环境搭建指南

+

凌智视觉模块 C++ 开发环境搭建指南

发布版本:V0.0.2 diff --git a/docs/introductory_tutorial/python_development_environment.md b/docs/introductory_tutorial/python_development_environment.md index 1399a45..6ecd298 100644 --- a/docs/introductory_tutorial/python_development_environment.md +++ b/docs/introductory_tutorial/python_development_environment.md @@ -1,4 +1,4 @@ -

Python 开发环境搭建指南

+

凌智视觉模块 Python 开发环境搭建指南

发布版本:V0.0.0 diff --git a/example/periphery/adc/README.md b/example/periphery/adc/README.md index 48b1513..e69de29 100644 --- a/example/periphery/adc/README.md +++ b/example/periphery/adc/README.md @@ -1,196 +0,0 @@ -

ADC 使用指南

- -发布版本:V0.0.0 - -日期:2024-08-30 - -文件密级:□绝密 □秘密 □内部资料 ■公开 - ---- - -**免责声明** - -本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 - -由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 - -**读者对象** - -本教程适用于以下工程师: - -- 技术支持工程师 -- 软件开发工程师 - -**修订记录** - -| **日期** | **版本** | **作者** | **修改说明** | -| :--------- | -------- | -------- | ------------ | -| 2024/08/30 | 0.0.0 | 郑必城 | 初始版本 | - - -## 1 简介 - -作为连接模拟世界与数字世界的桥梁,ADC能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用 Lockzhiner Vision Module 读取 ADC 数据。 - -## 2 前期准备 - -在开始这个章节前,请确保你已经按照 [开发环境搭建指南](../../../docs/introductory_tutorial/development_environment.md) 正确配置了开发环境。 - -## 3 API 文档 - -```c++ -/** - * @class ADC - * @brief 这是一个模数转换器(ADC)的抽象类,用于从模拟源读取数据。 - * - * 该类提供基本的ADC操作接口,包括打开ADC设备以及从ADC读取数据。 - * 注意:该ADC不得接入超过1.8V的电压,否则可能会损坏设备。 - */ -class ADC { - public: - /** - * @brief 默认构造函数。 - * - * 初始化ADC类的实例。 - */ - ADC() = default; - - /** - * @brief 默认析构函数。 - * - * 清理ADC类实例使用的资源。 - */ - ~ADC() = default; - - /** - * @brief 打开ADC设备。 - * - * 初始化ADC硬件并准备进行读取操作。 - * @return bool 如果设备成功打开则返回true,否则返回false。 - */ - bool Open(); - - /** - * @brief 从ADC读取数据。 - * - * 从ADC读取当前的模拟值(mV),并将其转换为浮点数形式。 - * 注意:确保ADC未接入超过1.8V的电压。 - * @param[out] adc_data 存储读取到的ADC数据的变量(以浮点数形式)。 - * @return bool 如果成功读取数据则返回true,否则返回false。 - */ - bool Read(float& adc_data); - - private: - float scale_ = 0.0; -}; -``` - -## 4 项目介绍 - -为了方便大家入手,我们做了一个简易的 ADC 例程。该例程可以输出当前的 ADC 数值。 - -```cmake -# CMake最低版本要求 -cmake_minimum_required(VERSION 3.10) - -project(test_adc) - -# 定义项目根目录路径 -set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../..") -# 定义 LockzhinerVisionModule SDK 路径 -set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") -set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") -find_package(LockzhinerVisionModule REQUIRED) - -# 配置 ADC 读取例程 -add_executable(Test-ADC test_adc.cc) -target_include_directories(Test-ADC PRIVATE ${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS}) -target_link_libraries(Test-ADC PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) -``` - -读取 ADC 数据的核心代码如下: - -```cpp -#include - -#include - -int main() { - lockzhiner_vision_module::periphery::ADC adc; - if (!adc.Open()) { - std::cout << "Failed to open adc." << std::endl; - return 1; - } - - float adc_data; - if (!adc.Read(adc_data)) { - std::cout << "Failed to read adc data." << std::endl; - return 1; - } - std::cout << "adc_data is " << adc_data << "mv" << std::endl; - return 0; -} -``` - -## 5 编译项目 - -使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目 - -```bash -# 进入 Demo 目录 -cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/example/periphery/adc - -# 创建编译目录 -rm -rf build && mkdir build && cd build - -# 配置交叉编译工具链 -export TOOLCHAIN_ROOT_PATH=${PWD}/../../../../../arm-rockchip830-linux-uclibcgnueabihf - -# 使用 cmake 配置项目 -cmake -DCMAKE_TOOLCHAIN_FILE=../../../../toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake \ - -DCMAKE_BUILD_TYPE=Release \ - .. - -# 执行编译 -make -j8 -``` - -![](images/build_example.png) - -## 6 正确连接设备 - -> 注意: Lockzhiner Vision Module ADC 引脚最大可承载电压是 1.8V 切忌不要输入超过 1.8V 的电压,否则可能烧板子!!!! - -为了方便调试,我们这里使用 **信号源** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 - -* LockzhinerVisionModule ADC <-> Output IO -* LockzhinerVisionModule GND <-> Output GND - -板子上的引脚丝印较小,如果看不清引脚信息,可以参考下图 - -![](../../../images/periphery.png) - -信号源我们配置了 100mV 的电压,如下图所示 - -![](images/100mV.png) - -## 7 执行 ADC 测试程序 - -参考 [连接设备指南](../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 - -![](../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) - -使用 SFTP 功能将软件上传到 Lockzhiner Vision Module - -![](images/sftp.png) - -在 Lockzhiner Vision Module 上运行以下代码来执行 ADC 测试程序 - -```bash -chmod +x ./Test-ADC -./Test-ADC -``` - -![](images/result.png) - -可以看到有一定的误差,误差一般在10mv以内 \ No newline at end of file diff --git a/example/periphery/adc/CMakeLists.txt b/example/periphery/adc/c++/CMakeLists.txt similarity index 100% rename from example/periphery/adc/CMakeLists.txt rename to example/periphery/adc/c++/CMakeLists.txt diff --git a/example/periphery/adc/c++/README.md b/example/periphery/adc/c++/README.md new file mode 100644 index 0000000..48b1513 --- /dev/null +++ b/example/periphery/adc/c++/README.md @@ -0,0 +1,196 @@ +

ADC 使用指南

+ +发布版本:V0.0.0 + +日期:2024-08-30 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/08/30 | 0.0.0 | 郑必城 | 初始版本 | + + +## 1 简介 + +作为连接模拟世界与数字世界的桥梁,ADC能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用 Lockzhiner Vision Module 读取 ADC 数据。 + +## 2 前期准备 + +在开始这个章节前,请确保你已经按照 [开发环境搭建指南](../../../docs/introductory_tutorial/development_environment.md) 正确配置了开发环境。 + +## 3 API 文档 + +```c++ +/** + * @class ADC + * @brief 这是一个模数转换器(ADC)的抽象类,用于从模拟源读取数据。 + * + * 该类提供基本的ADC操作接口,包括打开ADC设备以及从ADC读取数据。 + * 注意:该ADC不得接入超过1.8V的电压,否则可能会损坏设备。 + */ +class ADC { + public: + /** + * @brief 默认构造函数。 + * + * 初始化ADC类的实例。 + */ + ADC() = default; + + /** + * @brief 默认析构函数。 + * + * 清理ADC类实例使用的资源。 + */ + ~ADC() = default; + + /** + * @brief 打开ADC设备。 + * + * 初始化ADC硬件并准备进行读取操作。 + * @return bool 如果设备成功打开则返回true,否则返回false。 + */ + bool Open(); + + /** + * @brief 从ADC读取数据。 + * + * 从ADC读取当前的模拟值(mV),并将其转换为浮点数形式。 + * 注意:确保ADC未接入超过1.8V的电压。 + * @param[out] adc_data 存储读取到的ADC数据的变量(以浮点数形式)。 + * @return bool 如果成功读取数据则返回true,否则返回false。 + */ + bool Read(float& adc_data); + + private: + float scale_ = 0.0; +}; +``` + +## 4 项目介绍 + +为了方便大家入手,我们做了一个简易的 ADC 例程。该例程可以输出当前的 ADC 数值。 + +```cmake +# CMake最低版本要求 +cmake_minimum_required(VERSION 3.10) + +project(test_adc) + +# 定义项目根目录路径 +set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../..") +# 定义 LockzhinerVisionModule SDK 路径 +set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") +set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") +find_package(LockzhinerVisionModule REQUIRED) + +# 配置 ADC 读取例程 +add_executable(Test-ADC test_adc.cc) +target_include_directories(Test-ADC PRIVATE ${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS}) +target_link_libraries(Test-ADC PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) +``` + +读取 ADC 数据的核心代码如下: + +```cpp +#include + +#include + +int main() { + lockzhiner_vision_module::periphery::ADC adc; + if (!adc.Open()) { + std::cout << "Failed to open adc." << std::endl; + return 1; + } + + float adc_data; + if (!adc.Read(adc_data)) { + std::cout << "Failed to read adc data." << std::endl; + return 1; + } + std::cout << "adc_data is " << adc_data << "mv" << std::endl; + return 0; +} +``` + +## 5 编译项目 + +使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目 + +```bash +# 进入 Demo 目录 +cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/example/periphery/adc + +# 创建编译目录 +rm -rf build && mkdir build && cd build + +# 配置交叉编译工具链 +export TOOLCHAIN_ROOT_PATH=${PWD}/../../../../../arm-rockchip830-linux-uclibcgnueabihf + +# 使用 cmake 配置项目 +cmake -DCMAKE_TOOLCHAIN_FILE=../../../../toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + .. + +# 执行编译 +make -j8 +``` + +![](images/build_example.png) + +## 6 正确连接设备 + +> 注意: Lockzhiner Vision Module ADC 引脚最大可承载电压是 1.8V 切忌不要输入超过 1.8V 的电压,否则可能烧板子!!!! + +为了方便调试,我们这里使用 **信号源** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 + +* LockzhinerVisionModule ADC <-> Output IO +* LockzhinerVisionModule GND <-> Output GND + +板子上的引脚丝印较小,如果看不清引脚信息,可以参考下图 + +![](../../../images/periphery.png) + +信号源我们配置了 100mV 的电压,如下图所示 + +![](images/100mV.png) + +## 7 执行 ADC 测试程序 + +参考 [连接设备指南](../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 + +![](../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) + +使用 SFTP 功能将软件上传到 Lockzhiner Vision Module + +![](images/sftp.png) + +在 Lockzhiner Vision Module 上运行以下代码来执行 ADC 测试程序 + +```bash +chmod +x ./Test-ADC +./Test-ADC +``` + +![](images/result.png) + +可以看到有一定的误差,误差一般在10mv以内 \ No newline at end of file diff --git a/example/periphery/adc/images/100mV.png b/example/periphery/adc/c++/images/100mV.png similarity index 100% rename from example/periphery/adc/images/100mV.png rename to example/periphery/adc/c++/images/100mV.png diff --git a/example/periphery/adc/images/build_example.png b/example/periphery/adc/c++/images/build_example.png similarity index 100% rename from example/periphery/adc/images/build_example.png rename to example/periphery/adc/c++/images/build_example.png diff --git a/example/periphery/adc/images/result.png b/example/periphery/adc/c++/images/result.png similarity index 100% rename from example/periphery/adc/images/result.png rename to example/periphery/adc/c++/images/result.png diff --git a/example/periphery/adc/images/sftp.png b/example/periphery/adc/c++/images/sftp.png similarity index 100% rename from example/periphery/adc/images/sftp.png rename to example/periphery/adc/c++/images/sftp.png diff --git a/example/periphery/adc/test_adc.cc b/example/periphery/adc/c++/test_adc.cc similarity index 100% rename from example/periphery/adc/test_adc.cc rename to example/periphery/adc/c++/test_adc.cc -- Gitee From cd5809721dfc8a05e663adcf2519099ac76edb3b Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 09:46:37 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++-- example/periphery/adc/README.md | 40 ++++++++++++++++++++ example/periphery/adc/c++/README.md | 15 ++++++-- example/vision/classification/README.md | 31 ++++++++++++++- example/vision/classification/cpp/README.md | 42 +++++++++++++++++---- 5 files changed, 119 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index fbdbacc..4c39c5e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -

Lockzhiner Vision Module

+

凌智视觉模块(Lockzhiner Vision Module)

-Lockzhiner Vision Module 是福州市凌睿智捷电子有限公司倾力打造的一款高集成度人工智能视觉模块,专为边端人工智能和机器视觉应用而设计,其特色包括: +凌智视觉模块(Lockzhiner Vision Module) 是福州市凌睿智捷电子有限公司倾力打造的一款高集成度人工智能视觉模块,专为边端人工智能和机器视觉应用而设计,其特色包括: * 卓越的计算能力:Lockzhiner Vision Module 搭载单核 ARM Cortex-A7 处理器,并集成了 NEON 和 FPU,以更出色地处理 SIMD 和浮点计算。同时,该模块支持 Int8 量化,内置 0.5 TOPs 的 NPU,足以应对绝大多数的视觉应用场景。 * 广泛的开源适配:Lockzhiner Vision Module 与 PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR 等基于 Paddle 框架的视觉场景库完美适配,并内置了一键启动脚本。配合 AIStudio,用户可以实现一键训练、一键部署,从而极大地减轻了部署负担。 @@ -12,8 +12,8 @@ Lockzhiner Vision Module 是福州市凌睿智捷电子有限公司倾力打造 这一部分教程旨在为你提供一个系统化的学习路径,帮助你快速上手 Lockzhiner Vision Module。通过一系列详细的教程,你将学会如何烧录镜像、连接设备、搭建开发环境和编写简单的程序。 -* [烧录镜像指南](./docs/introductory_tutorial/burn_image.md) -* [连接设备指南](./docs/introductory_tutorial/connect_device_using_ssh.md) +* [凌智视觉模块烧录镜像指南](./docs/introductory_tutorial/burn_image.md) +* [凌智视觉模块连接设备指南](./docs/introductory_tutorial/connect_device_using_ssh.md) 如果你需要开发 Python 程序,请参考以下教程搭建开发环境: diff --git a/example/periphery/adc/README.md b/example/periphery/adc/README.md index e69de29..feba895 100644 --- a/example/periphery/adc/README.md +++ b/example/periphery/adc/README.md @@ -0,0 +1,40 @@ +

凌智视觉模块 ADC 使用指南

+ +发布版本:V0.0.0 + +日期:2024-09-11 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | + + +## 1 简介 + +作为连接模拟世界与数字世界的桥梁,ADC 能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用凌智视觉模块读取 ADC 数据。 + +## 2 在凌智视觉模块上部署 ADC 例程 + +请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署 ADC 例程: + +* [凌智视觉模块 ADC C++ 部署指南](./cpp/README.md) +* [凌智视觉模块 ADC Python 部署指南](./python/README.md) \ No newline at end of file diff --git a/example/periphery/adc/c++/README.md b/example/periphery/adc/c++/README.md index 48b1513..950f6db 100644 --- a/example/periphery/adc/c++/README.md +++ b/example/periphery/adc/c++/README.md @@ -1,8 +1,8 @@ -

ADC 使用指南

+

凌智视觉模块 ADC C++ 部署指南

发布版本:V0.0.0 -日期:2024-08-30 +日期:2024-09-11 文件密级:□绝密 □秘密 □内部资料 ■公开 @@ -25,12 +25,19 @@ | **日期** | **版本** | **作者** | **修改说明** | | :--------- | -------- | -------- | ------------ | -| 2024/08/30 | 0.0.0 | 郑必城 | 初始版本 | +| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | ## 1 简介 -作为连接模拟世界与数字世界的桥梁,ADC能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用 Lockzhiner Vision Module 读取 ADC 数据。 +作为连接模拟世界与数字世界的桥梁,ADC 能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用凌智视觉模块读取 ADC 数据。 + +## 2 在凌智视觉模块上部署 ADC 例程 + +请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署 ADC 例程: + +* [凌智视觉模块 ADC C++ 部署指南](./cpp/README.md) +* [凌智视觉模块 ADC Python 部署指南](./python/README.md) ## 2 前期准备 diff --git a/example/vision/classification/README.md b/example/vision/classification/README.md index 6a26cc6..2959a30 100644 --- a/example/vision/classification/README.md +++ b/example/vision/classification/README.md @@ -1,8 +1,35 @@

凌智视觉模块分类模型部署指南

+发布版本:V0.0.0 + +日期:2024-09-11 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | + ## 1 简介 -在深度学习中,分类模型是一类用于将输入数据分配到预定义类别或标签的模型。这类模型的主要目标是通过分析输入特征,将数据正确地归类到一个或多个类别中。在本章节中,我们将教你如何使用 PaddleX 和 PaddleSlim 训练一个分类模型并在 LockzhinerVisionModule 上部署。 +在深度学习中,分类模型是一类用于将输入数据分配到预定义类别或标签的模型。这类模型的主要目标是通过分析输入特征,将数据正确地归类到一个或多个类别中。在本章节中,我们将教你如何使用 PaddleX 和 PaddleSlim 训练一个分类模型并在凌智视觉模块上部署。 ## 2 图像数据标注 @@ -182,7 +209,7 @@ AI Studio 是基于百度深度学习开源平台飞桨的人工智能学习与 ## 4 在凌智视觉模块上部署模型 -训练完模型后,请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署模型: +训练完模型后,请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署分类模型例程: * [凌智视觉模块分类模型 C++ 部署指南](./cpp/README.md) * [凌智视觉模块分类模型 Python 部署指南](./python/README.md) diff --git a/example/vision/classification/cpp/README.md b/example/vision/classification/cpp/README.md index d4edf57..1618c7d 100644 --- a/example/vision/classification/cpp/README.md +++ b/example/vision/classification/cpp/README.md @@ -1,8 +1,38 @@

凌智视觉模块分类模型 C++ 部署指南

+发布版本:V0.0.0 + +日期:2024-09-11 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | + ## 1 简介 -接下来让我们基于 C++ 来部署 PaddleClas 分类模型。在开始本章节前,请确保你已经参考 [凌智视觉模块分类模型部署指南](../README.md) 对模型进行了充分训练。如果你需要使用 Python 来部署 PaddleClas 请参考 [凌智视觉模块分类模型 Python 部署指南](../python/README.md)。 +接下来让我们基于 C++ 来部署 PaddleClas 分类模型。在开始本章节前: + +- 请确保你已经参考 [凌智视觉模块分类模型部署指南](../README.md) 对模型进行了充分训练。 +- 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/cpp_development_environment.md) 正确配置了开发环境。 ## 2 C++ API 文档 @@ -226,12 +256,6 @@ int main(int argc, char *argv[]) { ## 4 部署模型 -### 4.1 配置开发环境 - -在开始这个章节前,请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/cpp_development_environment.md) 正确配置了开发环境。 - -### 4.2 编译项目 - 使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目 ```bash @@ -276,3 +300,7 @@ chmod +x ./Test-PaddleClas 程序将读取摄像头数据,使用神经网络检测后输出置信度和类别: ![](images/result_0.png) + +## 5 其他 + +如果你需要使用 Python 来部署 PaddleClas 请参考 [凌智视觉模块分类模型 Python 部署指南](../python/README.md)。 -- Gitee From 4fd8d461daba57e44bd497789e7ca3d43c1e7d6a Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 09:47:33 +0800 Subject: [PATCH 03/11] update --- .../vision/classification/python/README.md | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/example/vision/classification/python/README.md b/example/vision/classification/python/README.md index 7586921..79a0f4a 100644 --- a/example/vision/classification/python/README.md +++ b/example/vision/classification/python/README.md @@ -1,6 +1,5 @@

凌智视觉模块分类模型 Python 部署指南

- 发布版本:V0.0.0 日期:2024-09-11 @@ -28,15 +27,15 @@ | :--------- | -------- | -------- | ------------ | | 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | - ## 1 简介 -接下来让我们基于 Python 来部署 PaddleClas 分类模型。在开始本章节前,请确保你已经参考 [凌智视觉模块分类模型部署指南](../README.md) 对模型进行了充分训练。如果你需要使用 C++ 来部署 PaddleClas 请参考 [凌智视觉模块分类模型 C++ 部署指南](../cpp/README.md)。 +接下来让我们基于 Python 来部署 PaddleClas 分类模型。在开始本章节前: +- 请确保你已经参考 [凌智视觉模块分类模型部署指南](../README.md) 对模型进行了充分训练。 +- 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/python_development_environment.md) 正确配置了开发环境。 ## 2 Python API 文档 - ```python class ClassificationResult: """ @@ -154,20 +153,14 @@ if __name__ == "__main__": ## 4 上传并测试 Python 程序 -### 4.1 准备工作 - -在开始这个章节前,请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/python_development_environment.md) 正确配置了开发环境。 - -### 4.2 连接设备并测试模型 - 参考 [连接设备指南](../../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 ![](../../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) 请使用 Electerm Sftp 依次上传以下两个文件: -* 进入存放 **test_paddleclas.py** 脚本文件的目录,将 **test_paddleclas.py** 上传到 Lockzhiner Vision Module -* 进入存放 **LZ-MobileNetV2_x0_25.rknn(也可能是其他模型)** 模型存放的目录(模型存放在训练模型后下载的 output 文件夹内),将 **LZ-MobileNetV2_x0_25.rknn** 上传到 Lockzhiner Vision Module +- 进入存放 **test_paddleclas.py** 脚本文件的目录,将 **test_paddleclas.py** 上传到 Lockzhiner Vision Module +- 进入存放 **LZ-MobileNetV2_x0_25.rknn(也可能是其他模型)** 模型存放的目录(模型存放在训练模型后下载的 output 文件夹内),将 **LZ-MobileNetV2_x0_25.rknn** 上传到 Lockzhiner Vision Module ![](images/stfp_0.png) @@ -181,4 +174,8 @@ python test_paddleclas.py 运行程序后,屏幕上开始打印标签索引,分类置信度,并在一段时间后输出 FPS 值 -![alt text](result_0.png) \ No newline at end of file +![alt text](result_0.png) + +## 5 其他 + +如果你需要使用 C++ 来部署 PaddleClas 请参考 [凌智视觉模块分类模型 C++ 部署指南](../cpp/README.md)。 -- Gitee From 698591592e026f82ce4300595211dc89d447c795 Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 09:57:11 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20ADC=20C++=20?= =?UTF-8?q?=E4=BE=8B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/periphery/adc/README.md | 19 +++++- .../periphery/adc/{c++ => cpp}/CMakeLists.txt | 2 +- example/periphery/adc/{c++ => cpp}/README.md | 54 ++++++------------ .../adc/{c++ => cpp}/images/build_example.png | Bin .../adc/{c++ => cpp}/images/result.png | Bin .../adc/{c++ => cpp}/images/sftp.png | Bin .../periphery/adc/{c++ => cpp}/test_adc.cc | 0 .../periphery/adc/{c++ => }/images/100mV.png | Bin example/vision/classification/cpp/README.md | 2 +- .../vision/classification/python/README.md | 2 +- 10 files changed, 37 insertions(+), 42 deletions(-) rename example/periphery/adc/{c++ => cpp}/CMakeLists.txt (90%) rename example/periphery/adc/{c++ => cpp}/README.md (67%) rename example/periphery/adc/{c++ => cpp}/images/build_example.png (100%) rename example/periphery/adc/{c++ => cpp}/images/result.png (100%) rename example/periphery/adc/{c++ => cpp}/images/sftp.png (100%) rename example/periphery/adc/{c++ => cpp}/test_adc.cc (100%) rename example/periphery/adc/{c++ => }/images/100mV.png (100%) diff --git a/example/periphery/adc/README.md b/example/periphery/adc/README.md index feba895..59a4291 100644 --- a/example/periphery/adc/README.md +++ b/example/periphery/adc/README.md @@ -32,7 +32,24 @@ 作为连接模拟世界与数字世界的桥梁,ADC 能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用凌智视觉模块读取 ADC 数据。 -## 2 在凌智视觉模块上部署 ADC 例程 +## 2 正确连接设备 + +> 注意: Lockzhiner Vision Module ADC 引脚最大可承载电压是 1.8V 切忌不要输入超过 1.8V 的电压,否则可能烧板子!!!! + +为了方便调试,我们这里使用 **信号源** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 + +* LockzhinerVisionModule ADC <-> Output IO +* LockzhinerVisionModule GND <-> Output GND + +板子上的引脚丝印较小,如果看不清引脚信息,可以参考下图 + +![](../../../images/periphery.png) + +信号源我们配置了 100mV 的电压,如下图所示 + +![](images/100mV.png) + +## 3 在凌智视觉模块上部署 ADC 例程 请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署 ADC 例程: diff --git a/example/periphery/adc/c++/CMakeLists.txt b/example/periphery/adc/cpp/CMakeLists.txt similarity index 90% rename from example/periphery/adc/c++/CMakeLists.txt rename to example/periphery/adc/cpp/CMakeLists.txt index e20fae0..2fe36b8 100644 --- a/example/periphery/adc/c++/CMakeLists.txt +++ b/example/periphery/adc/cpp/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.10) project(test_adc) # 定义项目根目录路径 -set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../..") +set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../..") # 定义 LockzhinerVisionModule SDK 路径 set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") diff --git a/example/periphery/adc/c++/README.md b/example/periphery/adc/cpp/README.md similarity index 67% rename from example/periphery/adc/c++/README.md rename to example/periphery/adc/cpp/README.md index 950f6db..8c3d99e 100644 --- a/example/periphery/adc/c++/README.md +++ b/example/periphery/adc/cpp/README.md @@ -30,20 +30,11 @@ ## 1 简介 -作为连接模拟世界与数字世界的桥梁,ADC 能够将连续的模拟信号(如温度、压力、声音等)转换为离散的数字信号,使得主控芯片能够处理和分析这些信号。本章节中,我们将教会你如何使用凌智视觉模块读取 ADC 数据。 +接下来让我们基于 C++ 来部署 ADC 例程。在开始本章节前: -## 2 在凌智视觉模块上部署 ADC 例程 +- 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/cpp_development_environment.md) 正确配置了开发环境。 -请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署 ADC 例程: - -* [凌智视觉模块 ADC C++ 部署指南](./cpp/README.md) -* [凌智视觉模块 ADC Python 部署指南](./python/README.md) - -## 2 前期准备 - -在开始这个章节前,请确保你已经按照 [开发环境搭建指南](../../../docs/introductory_tutorial/development_environment.md) 正确配置了开发环境。 - -## 3 API 文档 +## 2 API 文档 ```c++ /** @@ -92,7 +83,7 @@ class ADC { }; ``` -## 4 项目介绍 +## 3 项目介绍 为了方便大家入手,我们做了一个简易的 ADC 例程。该例程可以输出当前的 ADC 数值。 @@ -139,22 +130,22 @@ int main() { } ``` -## 5 编译项目 +## 4 编译项目 使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目 ```bash # 进入 Demo 目录 -cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/example/periphery/adc +cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/example/periphery/adc/cpp # 创建编译目录 rm -rf build && mkdir build && cd build # 配置交叉编译工具链 -export TOOLCHAIN_ROOT_PATH=${PWD}/../../../../../arm-rockchip830-linux-uclibcgnueabihf +export TOOLCHAIN_ROOT_PATH=${PWD}/../../../../../../arm-rockchip830-linux-uclibcgnueabihf # 使用 cmake 配置项目 -cmake -DCMAKE_TOOLCHAIN_FILE=../../../../toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake \ +cmake -DCMAKE_TOOLCHAIN_FILE=../../../../../toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake \ -DCMAKE_BUILD_TYPE=Release \ .. @@ -164,28 +155,11 @@ make -j8 ![](images/build_example.png) -## 6 正确连接设备 - -> 注意: Lockzhiner Vision Module ADC 引脚最大可承载电压是 1.8V 切忌不要输入超过 1.8V 的电压,否则可能烧板子!!!! - -为了方便调试,我们这里使用 **信号源** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 - -* LockzhinerVisionModule ADC <-> Output IO -* LockzhinerVisionModule GND <-> Output GND +## 5 执行 ADC 测试程序 -板子上的引脚丝印较小,如果看不清引脚信息,可以参考下图 +参考 [连接设备指南](../../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 -![](../../../images/periphery.png) - -信号源我们配置了 100mV 的电压,如下图所示 - -![](images/100mV.png) - -## 7 执行 ADC 测试程序 - -参考 [连接设备指南](../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 - -![](../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) +![](../../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) 使用 SFTP 功能将软件上传到 Lockzhiner Vision Module @@ -200,4 +174,8 @@ chmod +x ./Test-ADC ![](images/result.png) -可以看到有一定的误差,误差一般在10mv以内 \ No newline at end of file +可以看到有一定的误差,误差一般在10mv以内 + +## 6 其他 + +如果你需要使用 Python 来部署 ADC 例程请参考[凌智视觉模块分类模型 Python 部署指南](../python/README.md)。 \ No newline at end of file diff --git a/example/periphery/adc/c++/images/build_example.png b/example/periphery/adc/cpp/images/build_example.png similarity index 100% rename from example/periphery/adc/c++/images/build_example.png rename to example/periphery/adc/cpp/images/build_example.png diff --git a/example/periphery/adc/c++/images/result.png b/example/periphery/adc/cpp/images/result.png similarity index 100% rename from example/periphery/adc/c++/images/result.png rename to example/periphery/adc/cpp/images/result.png diff --git a/example/periphery/adc/c++/images/sftp.png b/example/periphery/adc/cpp/images/sftp.png similarity index 100% rename from example/periphery/adc/c++/images/sftp.png rename to example/periphery/adc/cpp/images/sftp.png diff --git a/example/periphery/adc/c++/test_adc.cc b/example/periphery/adc/cpp/test_adc.cc similarity index 100% rename from example/periphery/adc/c++/test_adc.cc rename to example/periphery/adc/cpp/test_adc.cc diff --git a/example/periphery/adc/c++/images/100mV.png b/example/periphery/adc/images/100mV.png similarity index 100% rename from example/periphery/adc/c++/images/100mV.png rename to example/periphery/adc/images/100mV.png diff --git a/example/vision/classification/cpp/README.md b/example/vision/classification/cpp/README.md index 1618c7d..fdbfdbb 100644 --- a/example/vision/classification/cpp/README.md +++ b/example/vision/classification/cpp/README.md @@ -303,4 +303,4 @@ chmod +x ./Test-PaddleClas ## 5 其他 -如果你需要使用 Python 来部署 PaddleClas 请参考 [凌智视觉模块分类模型 Python 部署指南](../python/README.md)。 +如果你需要使用 Python 来部署 PaddleClas 请参考[凌智视觉模块分类模型 Python 部署指南](../python/README.md)。 diff --git a/example/vision/classification/python/README.md b/example/vision/classification/python/README.md index 79a0f4a..eb83aa3 100644 --- a/example/vision/classification/python/README.md +++ b/example/vision/classification/python/README.md @@ -178,4 +178,4 @@ python test_paddleclas.py ## 5 其他 -如果你需要使用 C++ 来部署 PaddleClas 请参考 [凌智视觉模块分类模型 C++ 部署指南](../cpp/README.md)。 +如果你需要使用 C++ 来部署 PaddleClas 请参考[凌智视觉模块分类模型 C++ 部署指南](../cpp/README.md)。 -- Gitee From d34174c67e4b67af52bc61f7d37996321e4b89ef Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 10:43:36 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- .../cpp_development_environment.md | 1 + example/periphery/adc/cpp/README.md | 82 ++++++++----------- example/periphery/adc/cpp/test_adc.cc | 7 +- 4 files changed, 39 insertions(+), 54 deletions(-) diff --git a/.gitignore b/.gitignore index 69e9da2..b16f3b4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ build lockzhiner_vision_module_sdk* opencv-mobile-4.10.0-lockzhiner-vision-module* -.vscode \ No newline at end of file +.vscode +Temp \ No newline at end of file diff --git a/docs/introductory_tutorial/cpp_development_environment.md b/docs/introductory_tutorial/cpp_development_environment.md index 66537c0..d17471b 100644 --- a/docs/introductory_tutorial/cpp_development_environment.md +++ b/docs/introductory_tutorial/cpp_development_environment.md @@ -220,6 +220,7 @@ unzip -qo opencv-mobile-4.10.0-lockzhiner-vision-module.zip -d third_party ```bash cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule +rm -rf third_party/lockzhiner_vision_module_sdk rm -rf lockzhiner_vision_module_sdk.zip wget https://gitee.com/LockzhinerAI/LockzhinerVisionModule/releases/download/v0.0.0/lockzhiner_vision_module_sdk.zip unzip -qo lockzhiner_vision_module_sdk.zip -d third_party diff --git a/example/periphery/adc/cpp/README.md b/example/periphery/adc/cpp/README.md index 8c3d99e..6813451 100644 --- a/example/periphery/adc/cpp/README.md +++ b/example/periphery/adc/cpp/README.md @@ -37,50 +37,43 @@ ## 2 API 文档 ```c++ -/** - * @class ADC - * @brief 这是一个模数转换器(ADC)的抽象类,用于从模拟源读取数据。 - * - * 该类提供基本的ADC操作接口,包括打开ADC设备以及从ADC读取数据。 - * 注意:该ADC不得接入超过1.8V的电压,否则可能会损坏设备。 - */ -class ADC { +/// \class ADCBase +/// \brief ADCBase +/// 类是一个模板类,用于处理特定设备和引脚的模拟数字转换器(ADC)的基础操作。 +/// +/// \template +/// \param device_index ADC 设备编号。 +/// \param in_voltage_index ADC 引脚编号。 +template +class ADCBase { public: - /** - * @brief 默认构造函数。 - * - * 初始化ADC类的实例。 - */ - ADC() = default; - - /** - * @brief 默认析构函数。 - * - * 清理ADC类实例使用的资源。 - */ - ~ADC() = default; - - /** - * @brief 打开ADC设备。 - * - * 初始化ADC硬件并准备进行读取操作。 - * @return bool 如果设备成功打开则返回true,否则返回false。 - */ - bool Open(); - - /** - * @brief 从ADC读取数据。 - * - * 从ADC读取当前的模拟值(mV),并将其转换为浮点数形式。 - * 注意:确保ADC未接入超过1.8V的电压。 - * @param[out] adc_data 存储读取到的ADC数据的变量(以浮点数形式)。 - * @return bool 如果成功读取数据则返回true,否则返回false。 - */ + /// \brief 构造函数,初始化 ADC 设备。 + ADCBase(); + + /// \brief 析构函数,默认实现。 + ~ADCBase() = default; + + /// \brief 从 ADC 读取数据,并将结果存储在提供的引用中。 + /// + /// \param[out] adc_data 存储读取数据的浮点数引用。 + /// \return 读取成功返回 true,否则返回 false。 bool Read(float& adc_data); + /// \brief 从 ADC 读取数据,并返回结果。 + /// + /// \return 读取到的 ADC 数据值(mV),如果读取失败则返回 0。 + float Read(); + private: - float scale_ = 0.0; + // clang-format off + inline const static std::string scale_file_path_ = fmt::format("/sys/bus/iio/devices/iio:device{}/in_voltage_scale", device_index); + inline static float scale_ = 0.0; + inline const static std::string raw_file_path_ = fmt::format("/sys/bus/iio/devices/iio:device{}/in_voltage{}_raw", device_index, in_voltage_index); + // clang-format on }; + +/// \brief 定义 ADCIN1 别名。 +using ADCIN1 = ADCBase<0, 1>; ``` ## 3 项目介绍 @@ -94,7 +87,7 @@ cmake_minimum_required(VERSION 3.10) project(test_adc) # 定义项目根目录路径 -set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../..") +set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../..") # 定义 LockzhinerVisionModule SDK 路径 set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") @@ -114,18 +107,13 @@ target_link_libraries(Test-ADC PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) #include int main() { - lockzhiner_vision_module::periphery::ADC adc; - if (!adc.Open()) { - std::cout << "Failed to open adc." << std::endl; - return 1; - } - + lockzhiner_vision_module::periphery::ADCIN1 adc; float adc_data; if (!adc.Read(adc_data)) { std::cout << "Failed to read adc data." << std::endl; return 1; } - std::cout << "adc_data is " << adc_data << "mv" << std::endl; + std::cout << "adc_data is " << adc_data << "mV" << std::endl; return 0; } ``` diff --git a/example/periphery/adc/cpp/test_adc.cc b/example/periphery/adc/cpp/test_adc.cc index 733d873..363e22d 100644 --- a/example/periphery/adc/cpp/test_adc.cc +++ b/example/periphery/adc/cpp/test_adc.cc @@ -3,12 +3,7 @@ #include int main() { - lockzhiner_vision_module::periphery::ADC adc; - if (!adc.Open()) { - std::cout << "Failed to open adc." << std::endl; - return 1; - } - + lockzhiner_vision_module::periphery::ADCIN1 adc; float adc_data; if (!adc.Read(adc_data)) { std::cout << "Failed to read adc data." << std::endl; -- Gitee From 7e8e0b24a4fbb257f1c5b72215476b26a223c092 Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 11:23:16 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Python=20ADC=20?= =?UTF-8?q?=E4=BE=8B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/periphery/adc/cpp/README.md | 6 +- example/periphery/adc/python/README.md | 112 ++++++++++++++++++ .../periphery/adc/python/images/result.png | Bin 0 -> 169390 bytes example/periphery/adc/python/images/sftp.png | Bin 0 -> 160065 bytes example/periphery/adc/python/test_adc.py | 6 + 5 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 example/periphery/adc/python/README.md create mode 100644 example/periphery/adc/python/images/result.png create mode 100644 example/periphery/adc/python/images/sftp.png create mode 100644 example/periphery/adc/python/test_adc.py diff --git a/example/periphery/adc/cpp/README.md b/example/periphery/adc/cpp/README.md index 6813451..9ae95af 100644 --- a/example/periphery/adc/cpp/README.md +++ b/example/periphery/adc/cpp/README.md @@ -2,7 +2,7 @@ 发布版本:V0.0.0 -日期:2024-09-11 +日期:2024-09-14 文件密级:□绝密 □秘密 □内部资料 ■公开 @@ -27,12 +27,12 @@ | :--------- | -------- | -------- | ------------ | | 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | - ## 1 简介 接下来让我们基于 C++ 来部署 ADC 例程。在开始本章节前: - 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/cpp_development_environment.md) 正确配置了开发环境。 +- 请确保你已经按照 [凌智视觉模块 ADC Python 部署指南](../README.md) 正确将信号连接到开发板。 ## 2 API 文档 @@ -166,4 +166,4 @@ chmod +x ./Test-ADC ## 6 其他 -如果你需要使用 Python 来部署 ADC 例程请参考[凌智视觉模块分类模型 Python 部署指南](../python/README.md)。 \ No newline at end of file +如果你需要使用 Python 来部署 ADC 例程请参考[凌智视觉模块 ADC Python 部署指南](../python/README.md)。 diff --git a/example/periphery/adc/python/README.md b/example/periphery/adc/python/README.md new file mode 100644 index 0000000..e06d513 --- /dev/null +++ b/example/periphery/adc/python/README.md @@ -0,0 +1,112 @@ +

凌智视觉模块 ADC Python 部署指南

+ +发布版本:V0.0.0 + +日期:2024-09-14 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | + +## 1 简介 + +接下来让我们基于 Python 来部署 ADC 例程。在开始本章节前: + +- 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/python_development_environment.md) 正确配置了开发环境。 +- 请确保你已经按照 [凌智视觉模块 ADC Python 部署指南](../README.md) 正确将信号连接到开发板。 + +## 2 API 文档 + +```python +class ADCBase: + """ + @brief ADC 基类,用于初始化和管理 ADC 对象 + + 该类提供了一个基础接口来读取 ADC 的数据。通过传入具体的 ADC 类, + 该类能够实例化并调用具体 ADC 类的读取方法,从而实现对不同ADC设备的统一访问。 + + @param adc_class: 具体的 ADC 类,该类必须包含一个 read 方法用于读取ADC数据 + """ + + def __init__(self, adc_class): + """ + @brief 构造函数,用于初始化 ADC 对象 + + 在实例化 ADCBase 对象时,会调用此构造函数来创建具体的 ADC 类实例,并将其保存在成员变量 self.adc 中。 + + @param adc_class: 具体的 ADC 类,用于创建 ADC 实例 + """ + self.adc = adc_class() + + def read(self): + """ + @brief 读取ADC数据 + + 该方法调用具体的 ADC 实例的 read 方法,返回读取到的 ADC 数据。 + + @return 读取到的 ADC 数据 + """ + return self.adc.read() + + +class ADCIN1(ADCBase): + def __init__(self): + super().__init__(periphery.ADCIN1) +``` + +## 3 项目介绍 + +为了方便大家入手,我们做了一个简易的 ADC 例程。该例程可以输出当前的 ADC 数值。 + +```python +from lockzhiner_vision_module.periphery import ADCIN1 + + +if __name__ == "__main__": + adc = ADCIN1() + print(f"adc_data is {adc.read()} mV") +``` + +## 4 执行 ADC 测试程序 + +参考 [连接设备指南](../../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 + +![](../../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) + +使用 SFTP 功能将 Python 代码上传到 Lockzhiner Vision Module + +![](images/sftp.png) + +在 Lockzhiner Vision Module 上运行以下代码来执行 ADC 测试程序 + +```bash +chmod +x ./Test-ADC +./Test-ADC +``` + +![](images/result.png) + +可以看到有一定的误差,误差一般在10mv以内 + +## 5 其他 + +如果你需要使用 C++ 来部署 ADC 例程请参考[凌智视觉模块 ADC C++ 部署指南](../cpp/README.md)。 \ No newline at end of file diff --git a/example/periphery/adc/python/images/result.png b/example/periphery/adc/python/images/result.png new file mode 100644 index 0000000000000000000000000000000000000000..a804622dff7ce8f72c1beed375ef1146eab2a835 GIT binary patch literal 169390 zcmbq*XIN9)w)Ud;vMp30_J%Z(Cep-?0*Zii*oYvI&^t*e3Mxeu0o{~~qfdc$sF>U|=_^w~ObO!)- zKC*3cvV;G4jKp3BfP=vGOWJq+m=;H`3ILRQEb|`UnM=W`OMi6YaDBA zd)I|6dQTX;;BD>S8gH3j=H%~zG=CFu{gzoTsOYpO`dfXbXx!^JrtS%%8e>Nr9Xf6@ zxW>k6YYC))lx*L=e9s)uEM1e0)d(|hHL3?0k?bk9Fs(7!6fHj6M46=N(mQFr9}+7C zWU3qBe)Ic@%88cq2+ZQ?4XSN zLYdTDm)pmNMd|={Iq(Y`faSk@Y;hg0^5>BdXgU}f;(owp5+_`<^muqO^IePw*~VoB z6(pk2#LGfZbX)s&wQ_HaX8kP@&5%DAiMqye{_4ENm-V#j0hXr3u}3km%ed)BX3M|7Dh>&9XY1&;y&r1Kgr<&+Z)Zq8zsVWBGvDA z9l(u<;lL@62Dax>SM@_3syB30s*b;U%*5-}7~E;J%~Dv*0Pa_by8c3RJNuHW;Jwd> z{3M~R%^chZjBgfaRJbCxUscXqTe~SUmXBd(Rw3nzjO80ke+Z7xo!9oLx6=q53WiMG z9@MX|T?!LC7$Q5yRj}MG%~Bnd|ADlf_e*W@>l4hw)t}g3z-jqdppd#sV!-~C3^t)K1=thIu3;I98U|w(7r_7es^FO$=akP z^8I|aYys3wUI0NYPP}qyDI-z;##&0`X?8QaI)UX!VMux)Qq5{Fy#Zjaunk^CICoN` zj!ZuJmF0nFY5K?%3TLGji5(kLjJq_DPW5xkp+BsG_W5d_y}=LTz$IxS`1C4q0B zwghg^r1&@QVq|&pv5MPYd|27I01qCU25a?w^dE|FD)hxHViH7i8b%oq#&sZrzUFOhUxjrbtM*h$ zY6glOQoZOQQdjpxZk!`%1`$~I*o5922q%I^3AO$6C|*>^rIIeqR{7oZ95AHSza)(P zZQoJg9v^_1;IVf5&({5jQ6{ps@+G+Dxkl}T;PVCqdQVy^7vr}zZt)5A;}!P7&fRmB z?D84yr*;VibIJc-8*^;He&!4K%y&)#dS)qV59Rx#6xoYJ=Zs?`e7IiN0xbS~ZdP4B zRu0J`CwB3W;1CrS(?)BTs|K;aL8iLj+|7H-_KKq1LmIWdYmEZ@*uBF$Mq?lB>9=;E z^R?XZU;8^4$v|IUJTjQr2QX0 ze?E$iPhS!i9wb`ZRH}1~aIbXB96HNubFd%;hLU}Vaz4I`HtMuw#dq1++%)p$H($El zF53d_4)e3f9@Pe%-0mYp@(_F(0?9Bof5${YQFgi50bn4CXsz&?W#+$Ti=FthlV9>f zawlZb;-=d5(Y{c34&=%oZRcf&jqQtI5RAk>)WQY)4*K#G-*};Vx-_p%nmPOM`tz?t z#SWFt5ab2FIq%Bh^wCjTvz%u$4m7A=XkAW>_cL4drpx`uv>!7%AvF^d6E_dlUBEV# z+M|9071km!3%a=&pYTa?Iu2s?v#5PiNY6DWbK?RJXy0-N2u=|JZI%ThnoR<~S`R$n zD+Qa0{7;*?W6Y5nR~r26xybfI#}{e@|FIe?Am6RSzQXP{nA$A_24ra#0)<0@sm_C8 z;4)BUAiEm6OWZSaKIpvZd=8eeWc`A6+ARN?c}MGew(Xu8XJc2~1}kvY1#qju%AK21 zI^#(A8WIPUYAQaftX81$A;=9@&#ru~q}NiRd_V1N%%|~6bL~_gOeLkxR(X3%8xs(; zTxcwXciceSL3VDzH)F*mH5U0tlZ$biTrg7lM9;_91>2Lv=cbjNUs-|jQB0fA`tLly z6i3L5`v+y_6pb~c#HOUo@+~LDgx4aexh_;zK!F|5FAvBN7Zc0Y?CGA z_nc4=lB7s{HN5do3UHhh7IsXo9TgvVFNd3Q#&w>VM1k5@5ia+OE(C1+P&t#YPNZe3 zK1oU%ZxDL4Z^3h)x$Ap@ul;c{30d&&AbZDm-|mQ03_K0x4Kz=9$$XxVa6Vk%sxil( zAsv<^WrG=(*bW-xgA6YmCcNUDKi1dxY{_coeD4IuDp~RjFb|8C*w#m_1fl3vI=uF1f@`Lk1)?`oS;LCKM^qZ!> zubKsa?XD?G21@(-+omJgx1J?9&)(Y#(PVf_VUGf@4*@Dj8bbNpE6tlzkj-i#fH(B6 zs!j}@u2hpB@uA^Rahine<~`92gV)(&S~-d8Uo1UIvEtkt1!96Zt|n0BDog3lMr%LL z-2n>>_a}U}KEh{7zAHFK{&%at6_e`AsGbj?4(bnjsDk&Ni7aiTuT<=z=U_w$fh9Lb z9)@dt$K6Hesfo{?hEnZf`;E&VJQSzx}8MJL)rntfdscMS^zgHT9<$YM>a2jdTI$5| zwEAS^E+&5^Jfw)}6I6{Oh1oq|8(+PlpzabFFO5aKS-Bh*bh#~l-Z`O2Xxosnc3$_* z1*{<8vIn?eZxey7t(81|I^d;v8&h3tjfrvWs*Yj&{*i|CEVr_P6^$ai#ZfO~KHJBQ z2x$2i*iFuSA^tZ1-%jFcmsF0GB;BihyoQ&eDz@J$)clraKCYSBt9JZ&m+xvLMlR-& z{3IpugTQ(`<1K9!9|e_d6R}^^Y25DgT|I)Cfu%nUM_0jf5vfAx>y-S#JcFz5K;fmd zQxBtxgRHo|N_YfL4j1I74UFt(G^7_gaW1bm!u(Xy$LeeRu)hKAf`dHIJ%>PNj-*4c zl+P)K%iG@EB^TAT$j6=lgfP-fb&sV5hQCC6CUjl71-SkA{1irB9Lg^!=#sXq_|C`6 zTNW>6!Y)wV??BPRI%4%w4ZxyZRweL&_xIbKl9NrhJWNP9(&35X<4h@KHP1(Yw9wmX zBZ@qyF-z+@7WJ?Fau`Epicv-`g}NuOH{5bGl(}q6-3gozN((zb2U}6tjy+s-;ib)P zLTSq@)`5iMWNBM!_~hX>k*)R3f@+Py(~so!w&4d7y9Z{ZOeq9PfjG6h+qe-i>|@#x zj)s=cp3yFDf<6lm;{=pq?1p0dS(Oh>E7e6~7*K6<_d|_1lu;O*ga6}b%pj~fXh~2C zK;v$HRFw*d!i<@&dOCbsJtPGPiDP^^IM&ZXevun?s;D$|_9E7{D+@}OO;*78lrrf! zp{Y(SFduqgZUP+8L{ufI`N9Or=2d>~g2beA4_~U$Hz!Brn-3WB49}Np^!joGPUer9 zjf}lZsF!TPzct^~@0!$;a8o0b+y)+*C`a-EA0X{~>FC!h-(ro`qwbzEx6aCw3@}Xk zTK{f|;7!}VaT;@`^n7(6F7#kL9M;uG+I!JBJ|H3)LM&FzVJkeWT{DGHepG&V+9g?M zI*yWXR-?apyDPptt3#*sxsHyK)u?CVvq$kB>jb5;t#pKPXQYXKBNSnz?>K!4IZCW< zvMffl@Z>kSjM)_S6trwVrWivqTFIp}*UYw=6KzW9ywtrEL9PIbebvAxz0+5EsPla< z204&P?*|S&|77>_uF}}7Kg*SP8`EJt^!lN+T&6m_PoI65x4eX2MF&(75O&$?f*h2n zD(|Uz++rLUa-uTNrSP=Xdl&mRzxUba%=9f}vc7d9Jfa#}LJJVOQvt!*XRVBVtC4(@ zR?^lvnk9J4JV+@aH}$=IG!@t2n^V1i`mG(5YPDc}KRK5`xiCOcuKB8BRBIysHRoDC z^-bBWa1A301pnMvg10q*Du{5kI_!D=(5J4M)|mogn#PsV*LAEcT(G%D0 z(?~z@h;-P~m|$&z62ljl>kkzyk)KXf28^Ayb4qV<9GQ@J^=a>GD(g=SF#ksSedeRF z%p~*~ji6f%Dy~K`f<^{v9VLYJWs>zq&#qsOUb{! zpao$}oh>yKAo+(hJ3+)lJzf;vQ;(f?HJJ}HNu(I?-S68tk`6&Zd?KoAhBi$oBH0Q( zkZ4ao;_ow)GhxK;kN_u{az{X^M^;ix|`x_Pa|y;iy^CWlBAFD4%Aw z+2Lt$8W2gznF|V!x{9;ksyXkAg20v}MKXzTq;|6Uf#i-0K7IZxvx8OMRMn00k^orH z_Hwf`lO~Uo5Zu`EGF7|$_(08`fwN5spLRnhI{4nR)m)+a{+WzQ?Jo3&A|8(IpVw_; z3HF?6cQ>)}|B$2s4`@TU8Chl;Tj&cg|$AZw#?>e6HShm&Q#P{($&N_@e#{=}6?8{wrrBx3n z*CH~o{-oHPX#H+wWGendtBti-6Pj)*uOAPOjC$8`yIti=OvcElQq>=*zPQ2wTRThl zNf9wBKIk}ESw6_bySrPn)I^l}nNq~c>P&U?{EblTsyl%VNR!XEjt>a^l$G~cgmlQi z6ATseIqO5IQqxXCNif&xXX>-uYpk~K3O6L z-=m)FiBDzYhJLk^pWDw(zJvpjhJJu6Vmx?SWF=dEEb1YB7Dyw?(mM7m+EMtU%PC;0lZ%$aleO8Z(V zNo)XZ{B}1?aLI}HsN#aYouh2P#p~R_m0{zu%tJN_%7BQasx(okCi+mZ6H6Of62mpv;gJGCiY~&!o!OlkeR;Ekh`v^1X6sMb&*5Wt zLhY~HIUQCVIBjV3HuilqZ=x;iM zd$0+=2+5utviZ8;Nn5?KMJfAkGVQ#1rc{#)eoe~G$4pF)@A<7ss+*t;0e&a*bly!` zWs{o;&67v%16z++Thrt9hIKY<5Tcu)?l#Cr4Jjz=z9X36WO2)2-Bf}OedLUyGF4vV zlznJ@8a2Rd{xm(eiO{owad&xXV&;-tjJ9kTJW2?Z>r8hu?LmJ-L{J2?Gm1Pc)suz! zdybXvB^Z8483fGBI+g-ge|yvGxFkRC_k@TMEzsbA4nxzWx)k^JBN{y&af_9gG@UX& z-6Vg?NsN}zbgtCx>Yyv#pro1u%BdT1O;5W-cf%FrD*i;LMj9?+cwhr%(_G}~A*H-p zX)Zu7S>+p8Bb9jd)xM8=Wz2Hd+)3eKQWYwL1MubexOL6xM)K`qNDhts<+$0iQVk+*jBCU^tmi$lbd?R!x3MvE)nm!lot89IZVv z5t~Mt=yZ}ev#q`YY6!Et3Fk5$8=A*)*h@1wDu2IVM^sH-j zQau~*0W-UkZ7|`aHKf?RlV`FZ=rKOp)3q;6s^5LQJHtL5h>0=8i$q-XyiRkTGwHS} z6OdoU=M4)JbvCOB$fd=NQ|`QrLXGROw)Xs08$M?~fB!a!C?)lMitM!YW4n?Rakz^s zbsLUG45W%TS9~I+Yh1!#cPudW%?#qu+~{h~3xb2-?*Qz#+=0B@q>5I{cYmRSF6q=V z8;>MiF`nx}J>LNdxXD|n57qtX({boq#iSb?!2ZwXso3aH-FslX zY-?eJPE*4v#x-&{)T9}>dFXNn7&TtzOV1xKex(#zfln`R9J+x#lAd|+%nV0kHg*4A zgUCDu!>t>&w7#{s1yb9=?0^__Lhmc5NB5(+h^FoRHwj&I3E z&2qN;tJ5T?G8g#88lNck2@e!Bk$*IVe-fUFt#$Xw`SD#TH}CyytHxETpk_bbWW@1C zivlbtyYnqI;d_K5Dh$mNA@OegGWBKEEuAN)rCatsder*p53xq8Z$7;juSVO)F*_hq zN}-_$0X3f9E$p1PVAP7q>S|M(am2=()=QyKFmLwMoC_~%kQ#kVeL#w%*p8XtvvO@j z=FRg+>1bz^Nux!dd(pxBPD$x?_dtKExkNR<9zPrYZU4s0VXmh1bp7j-ki7u!u=E}v zm)ym3rhn$h1@wop6N~zH#=^*A&F86uUv(}9e%N>yy>R^KW_q6}`Gk zWh7U`ca8_XOl#p|@(F<5U<16Rtn!)$zAm9sg1&zohJ7If?_~*|lySol$4Dcv(tz=+ z%*LjAoL{v+wo02fV)o^`Krk1rR8)i!)}rs6{E>zB})krFk~` zVNa9gyYqpQ(DX*yQ=)a%7dOaCtv>hEV|9N*#H{T0Xi~-!;!WH8$-_uSHNu}Dl$BvQ zdzm?St3ZPA2M^v}W|zKFi^}VD{?e7eYVnh2_5+I~5~&4>^ez(7L~((NG|nprTRUd0p0{VuN|^swsai$Jsb%eQr?gf9JljONlUlk_)9(wM7hyVl+Fx!w zacSY(T4%36hP2M6MRJ`p8s_52$cC>sKI|(po0e7766(DIomMG$?oLScSPu_35|P4w zUcBmk08ew|eH!n5M;4N={E)wT>-n2^tvBF0uoeN}3b{V#ozUr=5)%RO{ybiz*`{RH z9NA%~kkXZj^HS3blg11LopOa`zll6b5&CXOWUJlM3$b%^5~@#Kc|b39&sEN;u|{gjt`sv=oy4<9PJG4c&CnqCcnxG2^) zr42n=&KarKS(mf$v)s88aGGiqIm0Pa=t8a;a??PkoN{3B zQ|yN7*SI`K5wnRR{3qKn>7$}z8LbBtC9j6mzCQTyOBjaR@qG&ZUU>7n`*U58+Rv+Y zt*SD*qRheR3%9;5x1XJHX?$(BOTE-7elT{RGNekc%W?u3PgeEB;mSRABS=N52m5nP z_hJ($X*KurPQWU^18Io6dF=j+#%R7n?}oYklzAoq2=vpU`2@fv0av&F>3?iife zC$x%p}CBVN9+!r8WM_`r|_UwOdh8T`pjnK@T)y==Stonk1R)dZE) z%jAyS%WYT4(#Pk7hd$aKaM5@-foZanFBhOM8;HjZ0#+>#j=nN05$Fq`0XB^q0jnuu zGg0U>Uje+FxMWwn4qctb! zr3T+`?l4{}x^K}}ddWn>d@IV5OZJ?Q z$38oa8cq3p^@#Ol0f>PA=n4OoX4#?VV-aUoMMW#|?zaHBfLqR0#3l8~kX>*$IWUg@ z)A?1->;t|#1?{vlYBR6xZm@xhy(UvO&b+a`+EpowSdM%_{?4&}4EDG#cU_qeP~v+O zy}0*czq?JPWKy%4P4`8gXqt(fEX+uArrbR_0D58DO|W3~QPH4~tjJtRh);^ODN`Y) zz>eUd4F=+0P9P!c*N!-<|EkW9o zdu1M7%~(Lv3a-V<&L7vYa9KaNhu-$lK|JCaqIv}Bk&qN3(VIysX4 z#$O{%^IR{HIJB`hXAAW>{2ZTmi?GWXeAlYXS7imZD)TJSnZoA(8D6TXN!b1u7vNvN z5p|R$h5yAjD-t`uCkIg4liCn;eZ2IJbwcw-&4xN=Aw2?D;k|$}bx4W7H-_)aabAaF z(bDc}>sfQB!AX^B$O-=$PnW23ESJMnULEQry@ z?KT{g>%PUpx)PuqJ1}3~CIKXa0GE@EtnQ{POx(P_%UCc9dt4gG6ilZWPt_d(TDU5o zh_{Y^6lXs#F`lk|(GHvl-DVk4x!QAl;K43sKyb)6oADhsz)uI~U}wjhJO`|xUv?bWdHw9tU-&r6n2csQ|q7H9WdeTGaNSwOpvN#e{l+ZDQaDQ`8hTrczg z&K#V)9a)yn3#+hAa}4^1P@SE9c^B~ZlydCGVq^fk~kC312r0$v;vImks|1bUjR~kk2{qZS7y(8chTP`ld zf~gK1bE&Dny@Mgb;<dzwJ9M`00~V&7JWCW; zjE}X0DSu(XGw%4UXMAJxK>5~8k~nkVj#Gia#;KCiC2#Yv0iS8yY zfW>Z9i_9bBw2o_W)Ivh$`ntTWoa{iY6mc>0WT?He;=xFKZq zdjXUSc%U5X>oS!3>5G;#7+ULe0v|Pj*87%Sg@GY&cln)7-PK$`{|gOSWGVKTzTx}* z_EkmJ#clJoB!Wq1*ngwtS?0H9>9ZUC-a{C&Yy2au~|LgM^7%52kC z*`KkypS=16oZQWoFy;T2QhP;iCQ9|!L#my9HN6j6RFe<}k`)8d;s>IvnU*TYX!+FP zt=U=rsVzb9bSTI_*0Avs`&sF35@IO>hi2macSF*4=no39)jIAN0L_)6>}o|Yt~TRZ znuvhN?B6a9$k0nM%fSqB2jiGks20PUEA6js(=fdI_{JSsst~bW6#7Qa_TtR>KIL_J=Ml672Iz#7z{)Pa|h>!UX zAOF}LV7T;rQXY_5ll9ymKL9pb#o{e$XqT?R-_uI}OdqcInqHDbb$Lq$ zw7wnWpXPK214oKd-CyO3?I=E*eTDCHU0rZ5)V~+VGsnnqE`r&#^X_WUhAJ(Pj)xaK!_h|GHltPS%W9`q89T<2- zw%#jZ*Ceugm=F<36s`v=VM|;q0->M??6$L_KRJ@iRP&|Y=Kwjai2sOY11rT^;8hj5^vmLA{> z!Z6BtSL57TPi36r1G4q;<}a?RO>FM9$UyGPP!AQ^-CzEPLm4z_5%&Z83m3oy(VL;~ zDuz}gRjuMWQ`DTb>mneCLHKIYn3v(ln-9(U1y&wDt^u>?QFk`2^~>;;wkiKxKx|lM zyY?m1?f;q?|MQkc<{o0f)fJS0OpQ$0%O(uN5m1<$ z74A#ljuUt3aQ}x%hn!{S1{q9$Bq=z=>ohHuC4MJCG3nWsPmz0gB%RuWu#d-n70IkOyd?08-vW`5Ex&7Mh%=X=K+h31`zA#KTLkVDVX>w^+X zR^9*yIc~oRds4Jn|36G<7g2+C>ok)V+iKHu2#G?W;EL?qcFO+g7&T%Uu3kO$Rl#78CP!bpk!3p-KB=tb_zh>BBSXKx)@z)a=88t!8t3lsE zjjq^ZMYoF)dw{8fr#%I43u*p0tNYK#1-X_bihv`Nn!0|niah5AIQsmco5;>o3-S%l ztM4QCf`kJmE$Bibbi?`oVDAz<09x&{$wvhEj7#?Xhg*Me{5_@4h3{~Pn^gY~d)VRV zRh$hz*~Z2B_tvh{^5xwjf?WgLf_(Wk^a7&P{z4}Immk$R%F8V*ni4CV3p~e0DhH~! zSK5gAl|+w3%YZj(w36PhCraf}mjI9~$#G9ypzxbV=mX77JC?t`$EXV|ImUS&zBojL zdHIT&ukF}lVw9-E{Z8hG=KrwEXPwKb>VdeWCAY;%Yx=r14kVrP45WO|a7guUs$TCm zCzgE8VDq-FTp1pxfeoz_w3-rUk|JpwQDZ0y&FR{w_nn%N8jy{Sh9;459q2~d;hoM$ zcvSA-C}!rfMqs}S#_!wjnC;eS*iessK4}3?eE;->yz(Q3U3-R~LdPDyTA4q!J6gZM8C{I+E^T!rr5A-W)Yp{A-FA>-sv!?MmnvEL z(H~!2Z!XR1(%71cOCz4j(C5OBxGjW_)5hUpr9S5*8CxiZX&|GHCcuitRnYs#iysLrwOQj(jO|&o>O3bbDZ*+muviL=H%2gfMM%PKEuGj@Qe~PD;?6I-hYo@M0U3z$QNTDl6y7tE( z`%9I)%*U&suZA=Z0A~ybu1V_xg?pLmvJxw!#{!$-l&u$H57gZFA@@=Qyk*&d+Ov%v zmNiXKxXp9y#x?c9kHOe+zGCqWD$WRIP>b|D!Hk*ODFS`rmm=OP%n zxiF68=K7Dfl0wmA{?wF@)8A94KY01JUm(01N&p8$?q-MGzH92K&>xZ0{|JZ-Tpr8b zz-Vk|Q8%k~hz3iWDx9nca?eSSG;JS4ZR)%+=Q@_32kQ;Tju7hY3iv2Bh%VN=wzzNp zHxnz=eyExS1Y}Y9v(@FG80~xl5O)-U6rh~9p9w8#%H%flOakWUh^h?SYQOYZqlvDz zPY5?fIb!#nr1a3fuHNX~X<#$Y6`mtRFLqa1XfHl&_ko({{N=Mkmx{tlO8jKGvTR+u z_$t^*{IyC?ON#fT_1l0Sq3{Vx9QteJ>9J_#QISVmseao}+usP4<{1G35RK&Wn`I0- zb&N*z)rR+G+|ti2Fa_M2)vfBzOhZbOH38FYtoe~GIA=!gRM&L%T73Pg|&JuARy9T? zCL7BB+V;WhDE9~NCR43&D)P`v<*jee5&Kw2|H#`j=yH=RKoG!}d(-k>DD||`m!Bhf zTT_&0t1PB};Bh7HapG03-6=smU!Qs_@&HczHTv9}3BE`BZUY(zQhvOLdrb8v<@zfjgO}# zd6RSNnlQCAf{nPeY&KoG*28}Z(VyG8kwR1;L?6&>XY((-IC~2FgnJE zb)q!=D!EL;Ik7@D8Si*&Ga4u?k7S82Y-y!vK^O@upcOZjah_r)t^G#1`}=;LaX zVyJJ9hY@iFsp6ZxdC1a^VMXV#4KP;nkGkT@K1FN9%^p3U;nMc{FB=OefSYb6R_^w( z5drIc17~N=YTQSZotWw#8q#ov@`k9OmFotm(8qu59f`T;d%I5>4vnEx25Qf%FVbjX z8ywidyvRO*_^r*!=g!zc^uw-xbZY{93aW;aH3nQ(xr3F)X&ChhemHC|;xjzJCZaOP z>B#5}VChMqoi6v16R^~xCQ$J(T?<=6gP3R$^-n=g+tHi{R$r~=dtd~NT_>q6l9=^y z4dqFxXlfq1jTP|CeJ$z<==mg$<@qR=e~>4XIwO1W)f9YA7-AR-_th-H!UH&aF*waSWU8k7opq28Fw{Y zv9`UefZ9GFmv{S|?-p8kq*(}bn>4ISPK@vHa9F%Kz!hPrwaAS?J@Sgb{*BYy!^z#hB;xs06=ulnN{q!r(w)l3&gZBOz0(4D13FM zGm?*y6406j8>@lW55yYg8W;VD4xHZMD6P9>gu!vKN>!{#bfn>P<$~| zD8XC~sf|ZJT%V%J901zQYlP7!fWdD-S_+OblAtVwVbfR{9iYSy zBSt0!ti8+=?v-=FE-Fs>&e@U_%==tfIRGh+#(m1jbsIq!Y_aX_#ytN>4uHe*PMzy} zHb5AxPZld1;68_W3br#Y6*YuZ>|gp4DN7vunlG$pye2>M8e@lYh}r)alj9Dy^-5RO zZCvYzU)9n!57AY48~S6z|Ew65j1}xn>xHsB-$MT@7V+`6DQEG3^ z9c&XCI-tN*=RS!mlV4H+(Vz3-*)gSK>dR_uH2(5x`4i)Bl!@LPninkUky8?wMwl?J z7i?8ue=N%(X5s$8jA2PWtN^wD;r?ncp1m0n&`SxxXTcWGdD?}f1#3pYxby*fk~};d zTOH_Icnf673E%WVCgYnq;I?OeGR0j!YFV*xGj@nW+B4U*Yu)_eALBPmZslAI*1tf% zBt4!{0Un4kB0(7s3-4On0_%7ND~dKv(@(mEzXS`c@w`c@6rej~{3X5^(%WI@%+GjosS zJ<7{cdq-X{sK_u9V{HqSOnmhQBZ2%!;bi$|;gn$t81VRZt zvjPs4`^Edq=%yzwlLH&pKEQe#bzqLO+{(S!fhl0z1>+>A(c-{Vmu`tEtLYWjZ}5a= z;+*`J!iTN_`skgE;jI_+WCiL0Uj}W1W1==vrt0JhypnRMI{JZ#K+|7t zX+x|O+?t{ka7anjJ&$NE)3xuHP=ut5!Hn&%C$yJ3(0x=u#+^ za)#kwW$}5ZDs7$HU~F%7X=51_SH?`I%4AeHDet*ysxlNe#ZD6UI)U=?_+6rdIoRy6 zzBkUDDzQ^pAJfHRF;HJD8m60z0nLjJUPti+md0nzrdaXzwdTx>Z3&u4%uz~RXu=$lfSjWnZ%z`}tZdz$XelA>ccmh^C zaT?<_&y9KDY=5je9Spy!)(>4y1OZ-nTCQnvDEuDM8P29v3I|7M9BogW7&SG89?s)> z>rZ{Ig!9dW`2VY;+zmLiNy`l3p~~d4ZN0i(q-9-9*~h#MW>)c58H=*Q1Uo0=n)VHD zX#_o^D-4aKV#g{>9lD&%D?uUJlkMKWItC2(1LLg9t4-C!@jz5XBQlGfY5$y>#~_?C z8VPGI3fR;?n2*?$*qEQanmqyDM9_qI_q^1TCVDw}tTw8BSO##C&L-PP_{9+|Q<=!vt=sM$=l zrbqJs8w$LhU%dBUT!8=L@8D(WTnm4wwDT*)Z3k+OU|K6{WD=i1Wk^U!%(O`-4PQ=t zj@-8ECKn)S=^!qxXAa_}DzId6Wp>FE2ap%dfuZ^a&p?@d>wrxl-gUhy#lPtdu~Utd z`)J?(y9dO$nM2GZ3j3h9tzBQ+q`uyb9s93}5@2r?>CSVOuFII!45D!Of(Xj3;*)I& zGM?PcTlND5u2seMZxHsU0_&@Ia1i=Z#0}1+FzZTx&sjwR#+r1Z4=bXt3cq1M>|e*Q zd(S7-phv736qAgI>RRLy-9{WlgFfC$5vm$+dV;={Fnb2d*y=+11l)sza0$NH;h)7< z_XQ07{)jV^mZ-|ZAJ_Gy7!UW?(dh_Za(l5ehw2qG*GKa9H~%s;B+|idoM$$@kNNwJ z;0lRCSV59EvNW$XGZ$}QY1)Q%QY$UM0#Z->#_K{X2%4+y3dB6js7D6MC%}L>96!KL z8pty@$(ij#RpHkP>7yQP()CKi#;8*lGS8+;!J+Vr2R0K8kBL`R8<9t#kcuJ5&V^+zAZGUSXh)nNbaJ&;J?s{;%J5hp}^lx5B6D2=y$9tmL_CHVV(%kNl0*!RgLFRt7JY|C>Di zUA6y7BxxMrOD(|b%^}z@4%nOTvi8@bcOOx;t)_h1t+-rXI$FcTK$<#phF`;pbZ zxsA`F2LbRQHn`wbQI5lZFu7XQOY0{XPD%)vP(1u?7?w9C*BAz7=% zn(b-XW_HS2dCh>&gj^cl*@SavlHgV#S+^!$`9B`;>k3|^k{ujB9XN2ng>wlyS~Vnn zukfHrus${?8NzzEn!w2f{;-k*IH5Ts`4^$yeQjavOOEDd1Z)eY4L`I8&p$q> z4ybI&Z~U#}*J%}qIf7^;7{B=rRWDCAW6r(LpzJ);+35cwQ#0^h^NywU=b1Y*Ro8$t z!^f-Ju_$~g_+-OM`o?AJz5fTfasgHzUyqgAjLvi!pF6y+Xd?iPLG7zXTJLy^<%JxRbe}@KR zpx5<~Nu8nA=gOp2x_~rUQ)JRY;3Q6I5_<&B{G`oCd`kk8WJcp_`3F(I&iSCBd|(L% zc?ktzN>*&U*aIYSzEIpgB1Mw_31gGH!@GvpRGL?2q_gf~ znI&Ud^T7Ci6N}qClk=sI@kJMe`GACn3i;O8nX~{jPKmIOKr)`8+>mi+_Av5kDyb;MTi!v;|!k`tzPL)wRh~wx3!Q-Y|F~OZ0?)^l%SR zhkqpBH71;Z#;t?I$*l>uLiquJ@*Cfik_6>1HOOH)*fl~T& z7`xb6Hkso7>+qR2utQuZVm>$*$OpGTX6U`a?+or&rrQEf^A=D2IJUz#e&pALnNe9> z^Yf{wR-wLIFMewMX6|^(g{+L2S-p-gV3&o<(e&@5^=i`MD#1CU=sTel&GU-LlHNa7 z)h7oj?o(A*iagi=QRJrw9d;>cMWWfkYfu;{Rw(x~CUArJc|QQ&$AdgG8hkJz4sa5N8fD34iC z2IoGknii|}D4NWo98mE79mwuO^GDObps`eEmz<{3{R8ie*B=L5LB~H>?ZvOcipfn4 z;HwP+sjo$Nt_)p``pLb2HtB!Z6!_|g9;Uizapiv47b?iRRW%VQaNKbQ0Gu&@Mllj(I>kLxE?o1PdKMtspduLe>PXb|{C*(>n050bb*E<`r%y^VE$SM%?{QmDT$t9HZ#TaL#pI|u~=oIkT`7Yk@^ z%lYNiy^*9?pyt!%zKAMxUgI5(nu^tyWe2?9_FXvr+6(NZ_BN;N^&s!{$Y?I^B}5cL@3 zd+~#qEcbb%wh4bIxh6C5!8)2kwVHRpAu!Y`@qrmfMigK}uAR72$wn67`L%<;7X?pz z0p#;L+g3@Nqo;m4ajtgldjcn5B`EIGjaL9)(&H#d?9E1k15HJxag59SS%)0z!!Nb( z4ZdFE7hQ7#=0E6@jkc`;J?9U@~rsY73)E?k2O^9w-c|E=60%|W1 zB>>OY=jUXTw51etu+YKY?2Ft&b3$Pk18D05l_u8k zJ{mZQ;Ws|;ta3WvSiHh#x|BGbXvNR$W!$VQTQgNsVYP=`HNAM%z7Iw27CBM+hP+k1 zF)IE&$DFA-FYT4`{a9bdcFn`}1~6`oRFm<}FXa2~MNl19Gis>obL%@nH-v>F6dpJo zZ-O)F+H!)5Gn$F-<&82gP3)<)LY~?8xtvr(4eiUg+spw88b>UJK|Y7e#0^J!?uY4P z9`+MLS4$kc9lg)w5i{YpA@&zKGNLn}Nwa>1O2rxl*0mb{ArAove$| zCr|@Wy{Dbd&&~@?fb5&Ag{Lz^KZ`-s!B@BJH9b|*LeG*lbH6*AiWx(w6=qSqW%}ed zCLs)!&6|=m1hpB(D7V7aw7|-eYoTTmbRYUcRrBq#TuWX0GK3+27C}e57kJ~OHZzv5 zb3aT}g++E+k9u4#u%lNw!IIR^)w)lgFM7MBl{8$uTb{g&!Ej%eTHd5HJ#hrTedv3@dC)b^#lA)^UbRq5I;H2wmA;>ytf1)Gulx2$z+91;qqV1Iy$zTR9g+7bPXt?y? zrd?V$YH@olLo=@f6=TnKbsK(i*y`J4dV3X>1|ttQ7!~E4x3@-?BW6>4ak{eA`=TOa zxYS6Sok&>9pvjx}6-ww#Dk-d`f=Z_ufx0sBpl18c@CW zabE)3{S?LJ$~oWuk3qv*hMrmIslnl;E(f7xG-*+l7-Z~aaW`XKfwZ34vb{yvUoJT$ zavv_EAmj9|#oc@g$Ktq0q(SIfsMGM8YwN31(pafIEJVtKHc5_Q?k`rV7rQPJ1Om&aO3)jQ&(IX^<8_TOJJ={20wum69P zy$Mv(`}Q`DHkdZp$!s`Ibvg}Z=9HQvrKhYcwM?AFGBpPrGE`JRJyz$IN|RGgm8B^t zIpGX8NjZ@Nq9T%+Lm-j^pdj#m>D>D}_kHg@{r>;uS}hlg6u+O(-uv16dG_9G*XRJv z-KCl$0|*5Y-W$~;cCKgtV}HRq8$*_T>`2Yir>HLj2mMiWN%PQ@M4394Aq~xaHWfvR z3)?*HJQzW%@V=+206TPqq$FGhS79lS7M?{e(mTyDL7bpXRESqRE9*5}=%B;-@Vr(J zKfigZk1$6z?wIqPn770_di-?m(jyXji5nuWHosyMRng!S(PoW_?=~+WupZl}G>U7X zSrF4k-~xJQW*n&|xGu&XFy~4nSAf3b$(g(oL{EK)&(_o<;{zoMv*^brK##Vg9}cmx z5UlESZw<19-=qOL6t5n%sRlf}-D-X<$XHW}@gfhB9b!^~z|fyAxYp$H!0b6cI@=w~ z3W8hRI6pB!bUt-pR{bh-JHmv0ZE3m)W3pP0gWkN3@(;ANbKz@FfLY;$#&&k#DEoZR zvVDjiCvL0eon~2Z>lr7^@OFoT7t()+>4ga6FH-n91-0#!lF6QilTj1s650t$(+R2d z`np11iy3=yE~^&pUbhEy)I^$8KvkfR{V$Z0(Z?##W1Co@q7t_5Ynm3AxOcY|b^MmJ z-(l!uA(RLVHWc5j$VfTl>kFP1K3OH&4Fy-Vt;sr6^ONK!!d0`}>sFrVs?{Lgo_a{~ zd2r3^EJ(=tZ>Pa!!U^5g&nV*%$0{wqag-BZ1PPFCwLGg-y$nl%ijuY?V*q+9`CBpH zEPROq)v$Y_)}mY&==W1y+2gdL;Y|uzuX$JU$u<0~ASZp}3aj-R9D1GJmMu=u83HA4 zli(Z|=2fk(963>q3c%*RW2_wvlVVkO@yyG+o5xENJ&#)6gP@n14skNfG;epu*B5q; z=DM%>z4me@3{M^S(hhyse|8Y@cv_;`MCf`Z!XI1h~uW%>lNd>*yr$eSuJ8sY;m^x(Rpk2f@~G)_FVi8Mtm zv<>T?f@4WC;pZ!*#M5;`IuRNFZO=@HUdzn&^|n;mwLU>{NBctRPmk$|H_tH3KH3_?vB&es{CHT>2cWjqlws;mD=;6Pgd8CGd&>iA&z0~ z8Q>K8Q@ciV_d3J|rIN76$rC`vo%TowwD(5zFiR_iT zY2u@^3LqD>*C+BYjPHkoxdupaVyk%m+w_v!pHPIz0p-4JlD@K7K-kjZf(bLgRbCi8 zc{~jm6lV=P6dL*_X}t~`9GFl3h2zc`&XUn-$3Yi&J4v5Vc*y%P!2CR7)g2cV{K>?HXlOr-$CsgyPo1ipXn)(Z~-Lhl9jt z&C}aEq4)To+f2EEh_-hG-S21UMn`x}X{@LFz`mmAKT1k}|*evA!!H`MF}dX@_yigRz`<62;JlbCm^uJtO8 zmIfy8ODMb+!ul*1>DC|l@tNAvG!@XMfRcO$sj>MxHhoD5@qpfb98|LE&@ilMVR!n^+JbR;pg-sNUFVu1_~US-eor&)f@SRmNiu?|5E9Q zj(%~5esyMTWfx$dJolPBlClXQC|YKq5GvJrI7X>Xr#{~wU4AxmD&S;j-ncOQ)j8l) zAAj}?Z&9^eG%r;~koT4so+h8qS=Qs<8u%lW^~*o}Tu?ibFvf%l2Vlq^b*hzte@)xO6^BhMp3 zNYhG*2l3SS#Z~qEJscC_0MshPf8S2XPH{wq{$nX}2|nyLIJhsZ2uIHM3m$`J{(G~VzLLiWHp61y0siWNpjF5h%;z?%ey3_l6z!I5ZXX4?HU1%{!0rG z3Q=$$)`_y*niE4Ww4?->guY9+lP37?>o=`Ee_aYpLu{zBey3qqz9Xx~e5JD5Y!fDp zbgs#VJ}BH>bqF>z7+@Awp4L3Y23)O#KDck^w>l~-&m8FW6S7|!cR{KB5JTj6nrSku zracErm}bjPRji6C*KI0q;GV>02cKvRs57DfP+ISQjzY-Q|UKcO24RgztKxJV~nqS1CPOfVKEvWknw|-1g%qVj&EMSCI$VNpcU)V9qx$#Zm?NH z;3n8pun#1BI4Ty*^J^(jEb?qZ@$&E|`DDCfo!>?MaaWQsqls09y-?@UP*eG`GHw0g zWf%+o-A;K$L!5nYkn_x2WU9161J4Bt54#ffD@2Q+8c>g}{r2(hWTWy5ASZUXbO7O$ zXab}E36nbGJ(a8Ie2TDZenddw1RU0d1uY6+l4= z!$5s{rz}@o&Y}T=bKKS!t+e8_+~9>PA{9ZN2>^q}T2FXcxldJIjo)^xr~bX4msYR! z9W`1FrvnvOH{XBTdey2`4t0|o>E}ZBuw#p@2%^8(>y3l94FN^9n*}w>ffU zSqysz)SXw}w5X=PSY`JkBTecFe_SNj8m+K=dw^LEdb~;B^Tr7svaEBv_U=s}Ddqg8 zdM1`#UYGps7W&vW-9Y#tXU(`xh;R(m`{6+{(e3fUl|7X=uB?C_uUYeY_pXpWh-VKg z0Tp`!7KDabSZ!y3saPTJ4G*Xt?-?)F8jxYBQ@i$Qf4e+pO)a6@3B?ewnE#n55PU$x zz-Olvy_P08aKQWa@DDeB`=#V%Dk{`<$7|BL$CKw4YW&FQ?^oQV_uHt%a9*{I_9Jw; zuw>bZB>om!&96!=!CA|c=RgV_frN5HBCrNM6srB;{9NiPT;--(Fp-X-n`L8aQ{wL|M17#`FhRYY$7z*DP;9yx^hiv-9MRc_h4?V zs?Gq9w+}_fbw^q2#H*KDd0N?vgSSBzT%~dDXN+RyT=(htcB-alw@#{$57LLKFt=njp!D~AF?X%ty*jlbi20^0w zkHPhL1o@rttJVWZ32*l-kanX_(5tOgk=+)DPo&c!URv|~>i4mO%xFWnh*L*fDU~uC z=R9jYhuGW~Ie}d`B%W})AVy5enqNT%hyrOb?lrf%-|&%3LwRuF(t1JBOuT$zkyLBk zKg~&V&yQ}1+=llcnVi@QsO~ClIuLPX>>hMwW&5jmWahSmA2H=J$!qc%kD=4YE!MbR zUw>ZQTB>!Jw6<+0O2VKU#^SrU zIGFzqWbv*vW~L9@=*CVMsirWzdG6#l+l9|3?x+#!OtyY%2Vz*@=m??~@vWl_TIQ&{ zrhY~8e2q^H`e!Ykh5Eenpgm7JqL_Mh5xMk)+IZa}gk&YUWFG#>=2fCtB%lq)0;5{9zO@C|l`e%I{$(FbX8f2`IDSYqzgMr+a-ks^vu6 z0xoF!UHu?!betUyjbx zJ5)dyAD<;Zuh>7&qCMa@PDgrPmjFqKV0Q<+lTi2ZfmUdqxqn%oZmd|p2?pg4rGuA0 znjMEtn_~m>E$(-#pqipRqlO-`)hbB4`w}L1{;No$Gh6^Zd;&VPb9?PQLA`Di@|!?A z94xMK_bKVh54Gm?JI|JY#X+AgqN4_-Tc0-GDTr|)yk`ayz>=~D=6LocG1T^TRi#b5S=73B{c z#O_La?G<_4+~Vk+%ala1OqYemCLT|Jt5S!z&A)gI>!jmLs!}<0-&69G!L9 zgG$cB3djom8#bya3%-ZQ?};%d@TIszk7koX$S>%aDTI{KtNiUhf^QrOJzE7Hu{;Fy)bBw0+$Bk9#5C;m%A`W)xAXSCnr_*+W zzK*2Kwd>*I!h>axi|xT6vrg&}y*x<#|t!jZROJ zo;BV9%Ceh1_I{nnf^OPCN45XaCh4`;OM_Kkjc1|njX#-b-k;{V6lLUj1mt#IdeK1w z=!t@NyL2UuvZKl$WnOW3;+2oR?$Z}p?vx2ppfnRv_r)Q>vZTQ zPJF3E#~vCisfkF1*0mgt8re2i8Vx*0YqnVj{48DDvLqxOZST~yH)P~YAWH3oPwpNo zyl2zldQJClTpkUo+`W5PTGPmZbYELxIr^MynFy*cz>R+v7ca!RT_$G{P0xArj<} zz)Ev0w0aM7m(cUVrQf9S(poM~jae?AQ&*I(}1(QoVC?dkWS^{SZ!*fBMd{(L+W`R<1u+K=nM z%LDD#D0OE?o{SKkEpL08k#U{g_o2k$u*-gh>vO9fRr<~7>k~E(mfccHyY!@Ko5xSb zdUgG4m2z$Jm0}D_82Qd^q?k5zjXD}&#mVYZ3X@7dl5hZfWq$rH#XR;Z*1?8hsaOhQ z7z$r0Xl)3KFZYB7B5>Z-+nRI<9hQrdhGTWJ>N|FvYB3I|!w4#SQA40!fCVdyAG@(V znQq38W_N{cw}iB1h;ex(N1-K!c)N}{JCHuIz)VZu`p2H%_wnWLvQC?ex|_~NUi*Mf zGFwPBV#t)rGK=s>O_Pyr=2Ewkw4Dndhv&|!g%H)me%?nCYZ8{P3EFk=^~%;uyVgmq zfO*O|TnF6zTFZDsK5ElWU9y&3>mp*(qkZYeS0FLz_V=g12YfIpA|m;p`pkz$FOi~X zL0_SypHVfN=|vj?`UWGoBq>oeL_tlOj8^spx!6rU9r4mf`Gv2Xl>NaGGeZ*z@A7`g z-Re8N{Vqpbz243JpUzF+X2UdulpR-RN^{UA+&}L@Qkg4eA4;PvpV}JiKz^o0>uK)Qv zWCGf3;Ec*ec6w5|q{<&lXnl{UeZSaR@pgllmZIg9H^j)}e~pZiea=o3huF(`|4G&S z`&He+{;s?I6*QO(`czty=Mk))<<;8R8S9tnzobktfLIx0J^vV1Ev8|iN4tLk`!V~~G#^9abKT1yxK`(l7v)zGG)=bJ`I?hV78|C%7iqKJ6d?C zlx;Z{^S15hu($0u4Ja>Ce>O~%fAbEcZs&R2>DWWw!0N|qHysQs@{+%@Is19T^dF1* zFH?>x$upiDGu`ESBho*0D!gO==LFQDIblSX z#L$-)0>Pr8$trujTzXsD2)-{So=7M$`_`E>3HZJ7VJ|em2j_-V5Cg&*Jcq*JcoEmy62u=nL-53bo6s%MxNqY{7|Y=V zp>v@%FxCNd)@>4~b-2Wb+GqoPVeKC7inIwKqw%aRK0fUP6a7i7bronXC2jj`-?C+; zlZ8PPqE5Hs)o!=@ndtoL@uaP0f$9qNZgLnEXuU%m8m_yFK8g~FFFW~FO(V6*BtXu_ z3F#c~tYcf@hQT#mBpz85E7_5UsY~@<)f6nA=#W z1Iqq(9vu77$zR^0p0axX- z{oq`xQTJ7LPKLMu=$$1FTdej#q~a#jVjiYD)K#Nyh=aWrnk9V`rz%{GRR#qVSP7?# zILI%+G#ZZ>BAkqyy)zUo5HL$pu@#MF%WuI6pI?kOPV8T#gJZDZ^`O~K1d-Yu9fy!l zoE&l}Ts0iN>2K{pU%xvM^l8hg#O3jo0z5!oYaSh3o4duN{fw1Df!Rl|=&%02qj8Qq zc3~Dfip&=jq_~xgsB2;JU;qY&RLKt>`UrP`T=1-E_7coCal>3McQh#aO`QLIsxU^< zIq#6b{72VD(~*xiORpu=b=FuRo!~7%vH^^X^VI&D>Sh_M1GBse_76wjW z-O2@ojsyhIGWdv5IKrq{$|UbERwkj}2y!hUbAZ+|n4TTC|6wMQ!FJRjEgo+((5beX z567hbOezcS<`4tc3^wv`0>4#z;R%F0abF88_(-Y_GVhazJX%pQv69k1e}F!Nby=RY zIvEw}3u^)SwpWDsTVQqJXNUFK*`*>!;m6aQB9zhSos?T;Fn5E<16ylOAx)~0jJQMB z3g07gEb64+`1=I68?&Al8lo5Kzevh%8KX@Mna;CM7oNyFmU_7yM?HL7Q-fH41JhEnie&7H;V?J((+i1-D+j_5dCxS zEw-V6zCV+|e8hkU`dq%Ua{>hVWePdl)PN~=Shm_F0X!^)047z3k5ZmCrgQ4iUehHL zya%99^TPY~$Pa(xHD%X_TrDTpx_1poMUx&wA)0{hAA`!vJ6iEBs`-A<%2e4l)D*)V z)@ohvA~ui$j@(@>^UTuTq*p1=w)g^fVh#UIu$dGKT@Dr8p_-s3NVV=xc%`3|r zh9H1w39chg*5gt$!Tqk^^mXbs-q^IDAYNT}!H1Pubs<3VxWHs8qxEtId=xQdEF%Kq z8SWUJ=C5tJ!wZeOE6vgOU~5+ODk~^!hKlx%J+9G9N(1Iv)bLK7(&uzyJxkKkp=}5J z3fO$I92V{BC@irCtSI|jtM^hIxy6tfbr6X3L~!d064IP;_OXP0!6<;=jbetl)vd;)_)h+-o>o#L+!A>*}nd#taQ;EvO8~E{)y7th?><^4GEZY{2LJv9RUl>H5Ry z*6#L`s;u|M&M20_Vs_6#J=)oic(t+*N~i`OAH|Dsc8=+EP&%X#1h76HP}ceMnF)^)8l zO{sJC((AvYj5qlWyJD|)t$)cAJsZ9UlQv1FN_~X1oeK>%0gBGQ4nEL#Du0;i(#nd` zh#_mlbmGt&)jn#p^`N%P?%9Ir&dQ0jueT%ys@-P}7>;2jf@brm zOyf0~Uw9#(;_QkoCq!#tN@E1sop_}&N>g|=#r=!;X+;y+)riZpT7y2IPJUl zRmKx=ife0dkN!zb-5hX*venvpO=<4tGo#^G?z`?fFjj?|aiNv9I>+$dDe3mRT^Av8 z#%UY#aCNW826x%k>d=4g2(}Y6Nko61m>JS%{4NSpqJ(`LS-#FqXH7R2oyKhTyHGN3 zrt{+BrKc$dD%tte^va1YbM&Z$bq8m&6TgtoL2tJ=m3(S5X}vG$)WJsVYt8@w4PG2| z(>gprbipU>%~QcYo-_^+S#|v_eApG@)X!?b^e*KOExLl|h**ZCaSHCB*E+qk1&3pbVFit*swvY5|ODETO8$i(PF2>ClV}7ZsK6QuD<+zvK<# zsNl0@8e%Rxir2MO51v*@KZtF6^4iWFskd#5zOJnw3p!rsqo&i@uYAxyqj~k2ExrF> zhq;BkIOo@)W**amq>j#d`Ec_j0>!~ACweTa3@<&a(Z=IKGZKB#nmh`#lm8qS?3Wfv zTG1{H*#sArb8!`(oLo~TdnB#%R+)3fJ*q8s1qXT*PctP-(rWLzAx%R(X)K_KS;^+$ zUpjY@)C+~bu4KhuB`Ch~M`z^P`B55YpUNywPtSItsV!)Fss|^ms6(?TMeb8B@#IuS zGoiwjn@}h{{y2f6B*8RvH~Y1}bpwu#r7BWo75pr*XRsdm32THTG?Pn+Y$@dCj^R9s zf)24=hr^7c+_9U{Pvc>e1%D4u-);QU)W(WtS!a-`JUfnLd>d{3ntlWW9xRhQ} zh>FuckR@IwO6?XA6I~+P*fq+Uv7eH1F5N@r0<}*9)f-s?Vc2VkFs9uI7mCu+uHj(7cOj2t0Rn*fz@6>?p$~>yPIL& z#ab99of5I~wCSsby)ke~huf8R^?;zF7TIiK1P=L^79ieAXh~Pky1R_KR)%jI&Dv%~ zoRyOuRy{q_o#%B$`moS0r>Oz0X&L+N4{|fj?;-hUHf?~%D)bGvTAOgS_ARelO9Z$` z_R@%_&Pvu@!SYl-xbGs>f9Jxb)H>miK3h=Tbq&I)5qEG82`_s<*MS_^rlX5$|2+f! z4#j7V$b#VpQ1|-N{aWoJGH$!l4s*O@nxXuD19DbDWirE*tvt4$$bDODH@$I<@j&ho zp2E_sUm|;s#PA)DqvZ&YROFdmFIY6K+%Sag_+9Q4FOY~25wNK((WA8NZmg{|kJnx? z&K|b47K(&Ete^erj5me1@F31uqsdBA5IWgZv8P|@O6|b_8^7ubXi^n##04BUQHC>d z(>ZAk5a6&@ZS1kGgGEiiX)&VOh?Fy-ieGuQt$vh3xL3?XId8HrfDpb%@DFZ+$fEpS zZ0C-E8*loJ$Fp0V`7yA}YDse$-=7FUQ%7`dJF=DGT@PI+I_Zapi3pkpw+Ya!$&oyM z(x04vKR5zC7?F#}A%h^zdZ>y=0weKAO4x?-Sza3K{xc3kodPf1n6KAK>0X53FCa zA>S3fIC~4)cJ|9Z%_^iAh)Z&}Q_fWoSuB$sP8cbtLg{F+q&mH{Q6PH8%17a%u#SD( zhg{{7x^|En`M7V#sike#TgF*Sp;Kx8g8Ig2Qg|cz5F436g^>ZefVtMz2QB99!{Z)h z%m=Ga-gptb5{wI=MumbY<|IDmPwa`Y?G6q_klr`2H9ToP;i;z8$WlLV^gYpUuXAK@ zIpo*fPe=3`IlB89cc~{Q<9B-F@s03l65jlIib^--0s`I6OTCl z&cFMX!6+;6%^`N~MCd(K%uKh~ZZNxYJLrpFstP&c^$)TVz>3y^CY6T~q5h_y1`54u zhuv+qyJwUVp?X`LrZg-gUYdQi-CsLJ)xuRja(nFpFE^kgCaCaR^4o!sgc6e<=J?G5 z3UZSjciH{p=sqY=DR6%wscy$M3T&-ZPn~gk(p~=1M)-@!1n_;8c=4w|>T?1Rt>B?B z;J7p%z+}OS!A?bh`_tF!)xSh8hI_#^Xh*NysB?C(_J<`jPV_HP-QXlP5r3CF`1pcg zWL8u;0jKN~SudD!9KlztQ?0@~BdJ`ZR2&5yn|4S$@)sSO0C;UGgDjPd+wttpfWE z@vPQ!ZC?R$1U9-r z+8~DAxIVciLO8Vnsp&cTvB8h;vb0yc@YN9+SFSgiuZC^{n@KARX@Ev!WV5$7x|(h} zVSOHRvVgbrS*a&F|6!^2f)%o|XW2<`cQKI1!Eqk)yBY_w#Z=Pdt)iN`wc?yGT3fbjUf_bTf1?y{l%7LA_v+eu4<|lKAoo| zeXhrjWZ9B+qnN)`IM05ZV{G<)od_goLLdxT=p6@Q$ikPDP-J(~i$&&3|t{S?Q_)VCK@=E!0f!5S>= z!3%z_sOe^ zM{Uum`0?!w2%}_eGGKVUlRSvIy2_Pl!Rhi%IVjG}V@49O6Xl|w*pMb_KD8^Lv(j%> z2)w-VRgpVqhvz76fkrPx+||FjGKIS9>xjk~(u~Mq^eoZrIb}J2M2>_5xye;2K_^5bI=7Oi7**R^^!CocrB!`pLk~k&#olp(B_Pur#W}KzlB$T*-MP3m^zGHcXJm-G)pM~JY%JG zhr4j$^PR&!Y>K6lsI;UYn44c3A{7*9Bd7E7=P)JZ>Va~{iV3~BRk415Z;x;pOwK-``9O`m?W*^P*9(O zb_$-S9CeOHoxBn@HRVni%G&Hzr>nM%=x^zMD68&W6yzHK+D-vm4>fj&li(<|0)``n z5Zm2hQXW(a=Mc@Fiy2YH_1(+WKwtmihTAG5!EsuQy^ z(@jb1uLf&1BEN`P65Bv38Ib?BxR~N38;t(m_Kjs}-&W9u!Iev*M_7DN0YJ5w%-jVZ z*q@pOMhRRybv`jbzd^*O-S#}mTA2esDZwRXum|SEFi5KmUeS_osy3dQo&gX8nAIGH z5Qn(D2pH9Rt#V4%!$glO2J)`gb^x6d80HO@2(+Lg+jvNM$HB8=^Rr?vxFdT1!}GLK zRZ1gz5dYBzyt?7uT$8L!OzqgRZ-)`8_S$)2_^1vKPuKt(FMIuagM<7=pwgGu5ZwRN z=Vp6e9amOZ^t@G>l)ZXy)038YGrXhFFHd-Jb4h$Tf`{W4XSz;>UlBD>kQK<3m>ZJb z$!3a|@bv`r=;g!yql|=wF4)!Q@~;G`DY z?@u%gVYUV+oZIP++(V872#uZQ18XxVyZ%16!CsOvN8es#WSt$QW;eHeIQnPM(Psce z!y<7!EJWx4iU<+r1d2O<0PL_~vL6HdApFRCi1=jjKkx6MU;wP=oahSW&B-UGhSi!) z7?A(=r?dtG7-Z}BuPc8##w3lvW1t9Q>0H$VNsl(@{j|e;MS1hzKbr3!+F%oC6j-a) z1&mxCOb}Qw8IkB%)5sD>FJuY#&wA%zcG3gu>lYRPGUy0E0iKEC)Y61jXV*p3cWwra z464Uq`qBTDj{K9CdFc$qUd?gPCx@is{IIfrduOWYF3?dTzP{J>-(LLlKmBFRFCPG| zT?rJ{M0JRsPw9^a-~Fo!E6Z(G3FQAivDxA4n<^)FO!kFo{b$)hkn*~c`%G~lmy${kxfqVU%v_|NZ>4Ay39f>u6nCk@UpNoZ%E z20pOaEK_1W=Di;PX2ansu!4r;dIV&;GT;(xu**H>r5AuCWlFev7nqIB=Y><})n zVfmJ$IAUR@nqnf`oA4+c$@Zk1I1vu=MrIV@uS)c;%F@6|3R)5cY(iKmHk4o8>OMU;#g$wln>0fHGKiqJI;aa|J(28J_Qj53d_Je%o{b^`{ z5T>>d3;Gl=V5GA<;Q1?#r2){3Gcp-N5_zkE5`@&J>`Azecei5lNG*kVmrF9~++q;Fy4;odoucjXtDq+OErGqUX4<_zQRh zUIcK5FQUWXq-U^y=luOVnKG<-wIKHMKV-T9i!zh}xEAUDkNH}fPcD7`EoH5+?v*AZ zg$~Bdax~AywGO%Y)^?wWu@Q4G$#REhR1ig$K}BI0GjUBs=$4%_x|{GC5R?RZj-B0^ z_X9L6Tx((sIvP+*1eg#^c`Nh7{=$)pCD+0=pt}9_T^m4Z>ojuunZ4YD|r|LAfIrQWTB9f;IeKu-D39W(+W?9o}!cy&uux!^B0O` zQUkT#4&vgJOe=nI5FRWFmR#v{?sn1=FMy>{3lb7S`jglYKC{hA@70^wGxYGrx#9-+ z`@wg?ukU^(pXj)@!e3dwCjtt$+9tjRcuvA@5-`1@wqfzUJ&kpr*gU6T zN?^*S#$-2a@ujvj%fXI4@e4bslB2GPhp=*}WqYXgXOWDR2Iw~(&Y2`c zC`>xyj~-2(uX^eONf&)3tt|c_)VhNzed*8Y=Qge0f(9A~>)*E-9B5oZH6 z%RMkI=cW%}PIvjGH(@Jyul(24ro>j+xOac>J61jH^4g7JEedVo3b~u`aq!O~hfu9o zaZ4Y^_|18RWTa;71BO}|X3qoFILftNluGUs#3$@RrWy0)i5CV+UKL1s-Weob26! zv88D>;U`}KgXn0#zTK&Z@VY*WW|GE4oP+n2trnfwmTg)<@wzr+58I%12+e@gHWHe= zVps6c!L~=&)pa)LM_BII4EnP4{|WbO1vP(5UQd5%|2oFqKvyn1?4=GDJf~cE^x(*S zCkEhd7fco(w4T+he)P@9CZz%5Q!Q^Bm>1bLeESl7*4fdDx>iwTsXYW3q;8jC=70HI z`P4(y>835)&XAsIVYTM1MJzbbE~!o>XiuE`iZS1h*>_IMHNT9=UQ@9pyNo(|a4{>Q zPqxj$WHR!|mEv~IrgMXbZUz9-k^Hy~>^&IEs(}(kOtF<&%z;od!b&9>b`oLAh;_D5 z?oCG}&bckx^A^6dXh%&ke%7(yd@UsL{8Ud^q>reV>!|@c`$-S>KKOy+sy4n%g`<8n z;xWv1!$86;p;GvqjUTyq%vfNAkup}GN@YwK&lqqD5iL$8hkni~_q%fVc`EC8>T>)jMxj_j5s`0&{&G5IgI#XS<WYxPgZEoIGhBgKjFgW-TnQqoDS`HFT^RJk)H3%TiR}qI z>|tR_BhK`841a?_#>=Wqs`5Q3rQ!>4?<1`>J@aKFrSwYPxx3naxp#rSMZ5I#khLqL z0%BdwNAL3MS;ru$n`(7U#t-d&E3_t0=EWU}IJ>ts!^xFurL&`$2=6{g=s2u*ychRA zr*+8K6&iI>1GuTrloyUpE{=%>OcJ5pPpDt0@&(AA<1vkx4Lo)nr^Cz}dPY8r%ze;m_+?O%LDkbqrv%^{t(i2N-3x>4%5#mFk*|d=L7OBqNRgE z)Hs`Y^-Yjsq8O;*)jR|-aOV4bm)?`Cde^r4#E#uC`IezNwPjcY1@>SYf2HG&?F?kt zy@YsH4MUUNWm=&<5E1s1FOgDoH82AlEj8@0ryH71QaNtCj;|&8qZOk$R7o#)sF>SF zb{B^qzzuTW7yx%mkvkbV+)#*`TMrE-TXMPwWn}?agZo|sGOq)0%?zw?cb^g{V3x`Y z){F)uToszD@?aXdjgvp`w8Kbw_D&5i{Q;F<^lbp(55(MtbFSq74+8yv3q?t3I|ohV zT4nx@Q-o9z0+aQbXV!vLeB*$5MRaP*!TvsPI93aUv%A}^R0pK@zyo~sNI^5!SNBl0 z`-4k+cxUssak9cJ4sJEUVj9TMZMG#n`=@ zX}oNKHhAo%jG_S+-MS3~+rM^2c+EH!%63?D5FP8D9Nk~ zReb+(I7Hgvmq=Pp3n%c}WA`s*Wo$Fr2Y^AJc&}Nf!a(LAzsnpfT8RCITiFp$^NHtl zT0e?O6IRT+s40R5{1Tgz-Y#@o;1SCcS@gRs8AMbo^P^Iu{YXcq!D3lH8JZ8!J>~3> zitqmLujJ(a{tj1_WE_L#012)EY zL!%n5THQ>?8hCMc$ym9<(tKmBDytD-^ps7Scb@9Y5k?$vlGU@3H9#Z1Fhk&shPX>iay zt`Viyg6VGw-XlXb5rUt2+2bSj&djo=a%l7S3@AD|sZ@G+ND*0-HY@i78*XidZctwU zeaha&j8+B>9CUHl<^aipHS4DWV6W$`XTefjgy)T5p`nGQvh(DX3$Sg9lgeSqR3r8ioJ0}%*XYqo zB>(}dB_7cW@0@CM<*~ix-qf^IIE$TjlZFdn#n4kE>}_to^bge6}ER#?SE0g`I1N>Y61 zFWi#;s67CN>NpcB%UJoGG;sagAB1Phjbp|B0AKIGNLK{4y(1z;k7U!~P6IPqAj46z zB$eKDZ?mW1kyrpE0l^Qbv@I*Q3sa=sVD8Eu*7>Qt_}K>7DPuyPv@{->bR4+v+ z%S<2jJIoqy#At zX|MeTb#2)m1f8^-gxS0WR&oyggp3phm6(1lddTZEqNuxM9Sol#3=?`(LC!wqVUI$( zJdxKz8R}D6MzZ`V$px^%_p@cgF5%ICZ-av#GF8Sp0CvKGfdqt089-}E)5f!Vn+39> z217P@^eJNQ-FCVFNJBpU^rUw6$d=YKoA>X=zPYuju27}BU4;8Nn|l+IY=0Ho&B@GF z{kSFXgU<14|FdP+C!yf8jn@0*~sN`<-D4fSR5q;N~0s@d9h{eFHJDrD2q~ zrL28$B12FMenM=7*o4*2`?MW!kd0f9KBN-Y9$QlWos*HrvJX|AWB!^N2c*9QJ?E3J z;}!oQ;haV{LF%4_NXEeuKj%xh6!$*qQ1NU~Af#U1Tu-#+HTLoUVeh-6n##I(FGW-Y z8El{^ps1)QO$4Od^;1M;=v5I>dXW+!0qhEbj!Kbk0jZ%#ha`#+H8hbPAV>=kAoKts z$vYRvvCSyVtoO%T&oyg(EAUCqz31$+%Wwbo-Ue^Wl9bQwBWvzJ3kes3?Dx641fy9VP;k$XND(BbKCk?So&WVPMiDtS*j zzUSkk5!Q_&!e*6!pMuS%S2C{7Wpzy1SnRk0@ZZwB!Il!J+Q-MY{veW=)fRwv#uJd- z?Dk$$A!WhiW!<|k_M8}njU_`eXis?u3Un%{czj9K;I<8L^Xx<=VnaAHM|RWUP*DEa z&K1zHyv0+^o|Ke?|r40nFQ0axw~lDNS~?rxGe`_Az$j%bnAYXezF=ZPb`ocr9936p;+~`7wxi9 z8GD->Y%CY#aa69=PqJY@n?SaboGHt%Kio6$G{n@Ja9q%FOLH9>e}81zjq;AFA^OQUsW56Y*6TOD+h6wPAb- z?t35Zvuq-V$j%CI2Y}B-JMaZg0~Qhg?8J3}xYzg;^xNw$-b`iQ6Wfn!7MoJmu4zzTcBkKLd~n6R##-gQ6kI2 zR#@oIRKedGHvMbBm0Gt9Dtil$TeE?&tsoSVp6{?^A@{;Ba9>BBS=^T;%X~pyv-Y2% zIma1*kuM$SHCjd6F=xo?K`4+%Mlu_`c$f{8Qm+}3$L(~PKWUDB>e$9@R%C0UqjbNGfBJ0HmmsBbOu3J3N33XOwJ zSvI}s<*lwSo5U(hnfw(_Omo7Q%Nw1>si*0YMH))q>i_ex;c&V_4bK6(>_tG?9e^B@ z7HS|itA5-qe2||y6U(YOhLCZb5tI%t{o|92{ZoBXb~Ub=!`BQz_#whGNusAyiy9>$ zdrPte;j9(ByNav0P(ut6ITo2U6Wwh=_OZ2F&}?xss3W~>>j!Lvi^{}R`8@0op7zfd z40kZ^Wy6&(>am;HRS*PSvmbqDhgVYrl%idr+`&FIxBb=w?$dB((?cWsyaPAL=->{w zB)Uryff(rGkl8mDg+*z(0L;xeVXDvo`3^e>L&R%6nI}d;6rbLhX%(bqSj~7m4F($Q zrgijb88LoTgYof5%M@n8SkOOFE)cav2YFhuYHaN55HNh79mQh$`;h*~ zZvnZ=@@VE*{5dhC)2A##b}M$O+~FZiP&(R&F|cqvH5(6m)x0*`{XHmV%st5Hm)fUOAoB%@7(4AAd`{Kw1LXS5Q|dm*1Ume)Xkbd=|jZ zpDcjR7#xDkbzi^zp8>^h3P)G3+PIMh#@pp1KzH!^y+{`5s{3v&KqWJQ`VP#m$U)QH zMn|Jr-UH*HtL$^K-NvzOQ`LABwibl<%k7>>ReVZJ5aYGf85i&A@Wg}p#4IfkDuOo} zcrF7VhrO@ENJ4h3Z7r4ESy|Iv9)=8u{>t>ekmRxHIwOZ&EjahVXgFmHV#O?8^s{YH zPsmWlIRg6^xB2rseDTTlDy-brKr;R0C zR>CEF0yi{4Xsn=RqD%^+(V!87+c@@0-tzuIRE{+j&s`{UXfIXV(U5%@m6_9ZDppzqZgVNg2JC&F*`MDAXrTA6x#jJ(f;eJF8xIa`=Xw z1$AYp(W-rXSwzG=dk}b(OP~v@Q@6Wfdq2X4Gu$JY#Jx%X&LJMIHXS{a+O3Fn2^UYqc?({cfR zn!JWyy&@=S-JC=zzf{ zt}e0%?MPqcf$SQwHs1NRI-^&s9JJ`)Etnsn(|RWfg+Ls05f&&sjBvf39QdGi-TUAg znNsppGBepiAdF9^yI}z4pQfHd04~#jK5wKutUu@qa1-t+LVf8OYoE9PLHY}tPgUVq z^--HrS-07=0B>q=-rbS7vg?Y(*SUP-T~!!sJ>lql`n`hiC;5BA1CmvVh`>v0|po*$4>ZmdqLF3W>!0b2xuT0Gs!X6`<%dPZk*d`xK# zi25GkdL*_-r7zk@{irag{(d}-_Uf;qm(e*{)#{mhn}ou0wDAt_M&rO03A8D7E7B`< ze05)d zUI2oW_n9mfc?b{JEAy|B;!kTBxOk@MS*FVj7?diA{k zM%6YG24D=+Q}bQR=-a5#R33_1a$L652W(khLvmh}x%H() zo#PnF!l^{FjDeh#CfSRB9<3fVzU;A*0x|hmh*H-|m(0E1EiU;~7w-zfWEs%heT9)q zDD8^yX_w?~)9wqX<0Y@9Sd0)Gby}ayMBYOD?=P!cm`0sNU?jbnhCr`2zEAtR9NM>z zg?TnmBks>hiY5WyXNPW~oEL>+`Oc&-A>{t}+sCh}grFLxD^igTs^CbnwR(Ek_ zH4~ef$KkZb`mma(BnN|&GO>Bdr*!QI*~<1=SfP#m=ovkHSyL2XMcTzkoh}B6U)r;k z3zMW|F^i{NFP}+pDfQM>cO$G-4jg?;5R6NX9XW-*LK!j9ZSp5uB~~rG?aM-F;CZPDij-#>)b>cj&}>F=?tc4EZc%Z$|)#!@|tXw|5rY z_etjP6^cBx`toyeyEiuPAoFQ4zuJfpJcL$=^RFN#bSR7$CbAl)wDDG6-K5CIwQAnE zChKJFDFvL{uMhf-Gd38p;To|QC98u1YlFV9uYYf~aEibngoB8$YJ@G6AouRP>e+{IMP=(m17_V7y^NOzeJ3Swn%80d782W>%1+27uVVJzs8YU(6f5BCnYBWMJM$k|vZCb{X zcKIlS60i=B=-PDWp?Tj4#7ZR?A`e=`(oyY8uWYQt3}#QemU;I?fkH#W7TX>f99#|s zh0#V+i_ZIOZmZ)xP*E^ZgxwWDdG)vtY!7!M=v%>{WU#I>!k6TNZ+= z!qyVto~qvI5Jl+=0idG-(V9@@-6O0(UDMJrf_glxIMzPWCZM$J z<8Irl;>)53hiilK1jfkr$>)3)=+MbKMu3~yEEVHFmSFM2c>LqG&vFAcgNolPM|vI& zb=~z}T!I9t5PdJs3&JK~o;EsL0y0I`*4p6fb~nNdDLY(Oo8RSuj&qp~eTWuHAn);w z&G(1&UP>djpSjw&ZR2}hXmi!cpabi;Q*ZN@**-z)9PGP0eUYd_MJ_O1#{NcM72rO0 z;R3v@rvaX0qg8#5I@c4eva`_HwKyx6{j$h}oQtyws``dgw^7jEH=nZIRo92TX43l~8{x z-`oAQ7p&BK~0aNt&lW1|4IP>~=YH zG*#O|?p*8fb=U;5D@FAj^I}jXo%^O$33fWQbW2j{QdJBlPzdy9j9?rkH>h2VQ2Ud6 z_Jf!PPWv}Mfy~{XVhuzkZrsrshs%Vsr1#P$xzBXoy^6Sa8WZkmO3SynynI}rq(1Y3 zPgCKnw%<*ANV;Bxd*=5%3yz&a7t9{800WI@0+c9VQ&7k6q`dSoSV@Ib0zFEISB}%$ zPKT>(&Ne%ajH(x?&DrMy~r^d~G)d^g;&1euskqS)VaMv^yb(ypz^5pk7$?rX!k;ubftiD+I-K zTRYT}Qb#938n?3H5(bXO{6hwMUu zS&I$iWSw&W_+b6|<-0N&%j8!RsFy8F=eHh29+$^+^)-w@CG^sIG4p$W3| z`c%qUb@8Iu(mm65!H#2myuELcU?A zOiceplD(V%G$3IhiBh&EDe--kis3@+eA$HWQx1@gY;+cCQ-DJ$^;EsLvlqJeR_#hVHNWjCDqzc zA`Al@+W{E^lMJuHM?m-Ijv5dT;jKrc-A0DEH&TJXd?h2gMi69E8Y#P$Z!6wcih$!WPq^YiV zsc=Jww#k}Zqq!uNb`U3%Y?&~!;SyB7dvyBIwA+^4-@9tv`W26FMfcsUE$&vW$nBGT zK0u>Xf!w1zs94DYL&bm@DnqMqxgOhXL3e4*lEn11Z$ACZ~U*8NU)+Ol<5;?hQ4ReAXO3enYKI}eEA`BB1bFD>>&XBdzr^H8WQA!Bx3GM zzXT(r3~owFEbpRohI5b9jP}jg;<>~z(+`08NgNl^G>8qhhlcLo)4HIidbG;&{DPb22M<7ok!=1E> zrpa#VLF@1dT_u)%cZZItxDkX$QP0fq5enm>p7+V1olLkCviGQ_a5*tYnc4(z;Vzhb z7=9m{Jp9p;k2WccnS@0ygCd$RK~bacHV3&yje8K`q8yU}yYp)k&6ceg$gyfgv{+Eq zfEF%%MWh~;x4U4r(fOt8lxjNp-!Gm>Q4o;==|?-!siD~7@Hzp{U;^)TL<@x8|?>I3=0=S=D0dBw@l|| zm~^wM`gNZsBI5ks#c;Kt5VMCp+SAlT>_fK7D(5ZFgU#REq$;PU99@vO?D>(lxC->0 zV+xS|hg+yc&nkLT&o%I(pCmue2_(2#)16yDEm~D2NUys8j@=~f3>sRAth^Dn(j&pq zEHwmw$c+-|=|&Km#t`EM>4*=peR$xr(bgc;<)NKfg<3v+?=@e_E;iWo>OQ_-7x;*) z<3$)fhYsB~TemaGj6%0`SibG;q&Vlp;lo7*9~#Hs3cZg`&vzhUy3_H(Hf}!7G((@x zrrvuh)^elUT$I))BP;{AN|CidFBCk|H1aw|B9oD4mXunuCsJ?oshlQ-Eab{$!sC1? zkVv$tC)|pJTbg)@2tGWN)9g%WQr$p%nRsZg+hTfmMC@o^uB|{`wB1GFr-guQECiehH}C6GWYTh}vuE>iE7%L)SDBZa8Be4!ak5?YAUW4JPHgxl2H~ zlTwdcn4_kwpF@!TfB*v^ed!l|oPpa^Mw*h)S<#serq4w8+y;?B4(~Qg%XrR#WyWvB z_Aehhd}GV{n`-?)qoG~kir77W+z-D~4`TjC`{j~HayQ|1)5PhZr$)Y;*@MV5EnWSi zho$j#w~QM@L^X4g3o9{KRwtQUAcM}IH5>PPd{`hL?BxC6E>ypP@rN^<+RJk4i3<1Z z@#qA961f--+FiItO*7+!9IWwABE~6o zMT7U5Dzs)7qT_|s==4hC0osw~fdVVi$rrD;c0I*tlZy`mOQ}UELepQ>Ky5V>Pt_?= z;ad_CxToH2b4)30Qb!Z{T5Qgu$_k>p3b&3v zGiu!c&($nSjs&!+W#|@4nU}ijpZAU^-A&eCXXZCypEmr2FS2GWC@p2|zOMl;=iL;j z?F{yY{S$O#68fLBi+|ooKUO@Lqjd@tMxI?9K4vz$cjKPW-(CU6*?Se%%%~l-i7bBj zo^<_*JE?8QRnZld6NyQwN{P*!jTpx%fx4GR>&<+SM(8UROV=t^sSV1rg@-#}@_4t` zacf`LHz9uP?ui3A5uVW#zn|YRU>l_F;kaYJKHjq6?u6yje7HD1#q6biZTtlyX!c}a zWAs1|G|jkH%<)+I~ zmgt+As+y&qSxr*F4wrWW`=0W_+A81)Rh^bs$s4>otFXrBt#?CDZe?E%lPRkV$k$oO z-BQfi#%ZU@1v_0P)Q4~!m)UR;At&qyb@I@brs6juYWKKMpP`H@`!>)r@8YsG_Rh+=l(+g_X0>pK+OMJSh8_3a$@)I+cT#04m{H!7W3OBjYbH7T2QJOV9~ z-NYvmpnBGbXhza%h%yhu1JW6tZWD*Gpn*o>}5d;P$tclYh+8OLaWDP6T4kOg|#%JdRlEgyRQ+6 zTuaNI{vjC<7AChxaBdFAyI?;ID^CoE8SqO2Zy`Ni#Dld^{$hEgB7asRpD350{xv_t z@gZ>Soka$dV{!v9>%4f`G+YqLEAi<+%8AW-Gz4k5!eh%u=YYK%2%$JUVb{p(9wdDt zE2yaAF&bZpLAK;Hnq-)Cq)lV>JBMq`rmI69?yOKOp3xrx^eZf|{0xMgTk<-qf6Fe_`z_VSEl9b)LBh!B- zW_~(yvnK&g?hC{Rx5eGAHTd681?y8D*RSi_`l+9~Zt$z>R?Y6y z&4NqI^_F?&9XZcPQ2*J{f4WJ!@4ngN?@rXpfhn+3NnShxoNF`Lf)({%oDZF9JH z(Sq6k=DaU}7_@TsQk`#4ZF}|LimClFL!UmaIquQFzL0)9cp-Qgsx6#9?gq3nd$fnuhDqa0Qn<^kkfpD*kByyiGs*l(wBCTp02uE0Y>QLzIHN z-nj6GAekTJ+0_tn&n0IA&lc$X-W@i3=b-dHU$-w@PY$4NZ4|AW#*m<6DaJKVjnW8Kcn zK8%%2XWNR##NT3|n8i6d%a89){<$yy>1lBpaQR*XA1e}ArpMsRM9nK&Zq0sGR`TL5 zrS0?hD&5uk*6_no7EZ^ZTKoU?^Xz~oE8H=ed4SnmuiH;=Td1Bp_|^xm$rv$|5)8G` zStM=wBze5Tpc8b1SZ-~w{H?40nNLdar<>`QBAfOcY6J72>i2pIn0XIB^EJIXU3z8Q zxm-!j^7d}4ei=ZXY1Y+L>`DVx_0vZE>=R-3TLGTY%r!Q9= z<2K`UHJ8py5{ZrQtAYO2E_8jseWC?&57%}e)F;w|cENdbq6?r417OgxWmNlMpk|nB zk{^glGj*qV+GSjxO{t_a3rc+#e!Kh?Ge@2$g z%+Pgp+hsh-zNU6A1Kd#DpW=EXKTC|ae`+wxL1slpNE1~ zo@EMNgLbH5f*jdgg1UKBO1zVq5VhFMRb(k`0iowfpWBt4Yr9>Bk`R ztNj^peRnw8yGz1O5DvbrQ6u-FpQ8)4dZb8Qp@X}PhE4ySFc__Ynr}&y?#se^JOA?s z1iYr&MgQu`z|MKv>Px4ig}CNy;(;M5`ZE?_)=oq{v42#0eeM?L8lc90*COJxIRC?^ zFTx1r``uYuZ^P%hqFy3JpPy!$Sg(w`L0IqGRJ z_|K72O{>8XyAHcKuleg3|KYy;I>sMq)?c^rpWNuLaEo8J@jD^<2%B_B0J3QSAjL6?HS|REJ_8 z7*cu2=iSCZl$;TV&TkOmTW%nv_|J{{zd0mx@@i09)#fuL#d@0efv%98!gR0LO|~Tr zMMG^B`=|%4%I54HnzwmKr-9HIjT%p~`GAExgb}a7VO(d&=?yj<_#eF2*WP%)3P(7= z$;RTzlq=mHg2(I}wdamyg3M{4-%~D#Me$*vHTU|^X;jj4J@%{M*%m$vznebiZHL21 z-tD`fNd=!#h457~Nhe~VwjmAnRI~5w(KiS7#gD+pF;4)M-DR{vcdS=J(9D4PUXR8k zR+pzRTVZBZ!JE|%|KtRGugDaIXZy;nW-BVk#6dA{yj6~!vug|e{vZB*MrGFDs^a#& zeFU4ixoCJEGQC#h&zOSMHyK)H|F-n*yw-#}J>g*}`-*~L( z3Dw_&+~`BT9s)%6y$2S&NPODN&2IXRQCShai#!~KQg``dQ=_K*y|ZfJWIn{%H{D93 z-j$`DT|6H>|41%tUPx>vJUUvW_rhp*IlD%Bl=(dH3c*lM4ub{0AyQ_Nx@glKkX){| zdhY+aEBw%_6-(J{C*z$ai_Q(s zSy8+uY7DTMbGo`lssY;eHl{M@J!MBL7@ArPjUKcWJIk26mc_}fId2OoDk$ic_<)8` zgRk4wy&$>C_llFIJ85%PIGqkLciGwi@eF*66;{!x8IT3oalBI&nJ?0o&iSz|o5H~Ho`WWG-1*%`1gJ87Z!3CgOO}WFZQF5i8 z7mHpj!jv8Xc$=b{Ef+CkKI*1#XVo*v(cV5)(WUzs;#Ra+g%JJ%BY%9s@8hu<+jktD zyQVNVALClH5(*TXpiBs|>MG)>d|GJ(Mi)V11U#e75%; zV8(Jo>zE$JJqycA%Vg)i0e<-aNm}5`uE8cck4L=|%f=Q1RkfW{%ykXH4QiSEsME$* z(x!pp;)GX=nHM+UHQ+y-fX+MaTx*==ipt7zJr_CGt55@&uUh~Gh8vpChVsnr3YS9h zi-~H}RG<@_Yz+cZDZfE0?m4kO>O*79zJ-bLVJG)2& ztFOf32Wc4BS=oj~bk1iWXfC>Mc2{1MJ33M%{aT{)|GC4%H~Z{21Mt!Rav`iKGuAeg zGNqr9k3OyY4D<_yw{yk3XdSBob%h(^wZC@R$bE4?v!-jV+sV@jSX=+)Lg*Ng^^AQ>KDUud-aw;SJ_f7F~7FF9xTRus&mh4st7y%4EQO4z0*rOb*i49?&Cc7L8=pZtHj z@pUHb1?sN5=eV5^#}uG1!}{glUWnSdsoJ`_FxR<~3Qpwww;P``xU7MZK$x@oeO>wA zE<{px1v)#sB6+q=(WhJXgA@E^0{?E4{C=6he=l2H03LGzG++SI%*q zE}E;e4F@vgYXl9TNzg&={yQ_J8HWhGWzkE_MFb}bpb32lRW|b?i06LSJXkS2ofpi{ zg0L8Qed)Ty4YSnvB1(04ZjPsnI7WPNFxAx|ys6v6OuJ~no&)EWli>Ja9un{sY@^p0?Y|fKy z^Dmx4G0N)?7zaPXPK-8mm>G*tK)FsGrF}~9&9G-V7tFLIp)rOgl292(Ft6|UPx}^q z@%jOExWnu?KJ}S29-4h~?nz@Ts%U1aB4^!VbM$QcH~n z<8(%7AjrNX?HK&CI)yJ*lD>1@uZaT(I@qS%nsDoHIH>}rGS*^AD$Y-C%{1-92u$=R zNNPEmD>-0W0a9W5oTY4H)i4T5rUY=^Y;~R)QFHYQVeQ3Q^Gp>AD4Hti1zqeCA7Mc2 z-QW4!K=Y1UpxQ%+g&Ox^v5M&v+*8$2>^@Un0&Hzu#Wo)EI3_kO;hP5?;<(3y=`OdJ z_O1Ck*N}&rCdNVrGm(|Z-f0Ic!;KV#oF3~P!Jv)vPL*8l#avg-S*RhzA;dACa7uwA zi_4dPB2v-mkyQ;1jD*t}Zaq^^SvAI($ieQAG|oNIq9&X~91nI01F%51d~TFf=9k<4 zcah}h-<`05CP6Vuran*+k50D&GVI9+bsvm=mUZnTu*eA9#Gr&m@-aK$+mf0YLE!Y| zdQm!`+Je{RvnXA+djjOplJ8mqy1VCgj(fIf(POW8nOId37Wi^0= zim)our0r2HDT3;=*8-cP$yK9v84zGU#?M`I>G`i-l+51ob}QRvA2J-`3On|p6--p|$s zy0o9V>a!I(Mi$qKTI)3<@FMnKd7bcgW!cn&_!`W5+S1+K{q}vH3;8V})i`eh^juuc z%VItmD#4y&oIVF`mrdR8UMw%rl0K=y0dz&L?Si}eyH4dUU1-bai>OOVw4mJnr*r;- zgYxG;iED%-TUSb*>wa%ATTaiZ4d>Th{q(3#PmU!acs6)WlEiuppGgP(RyNqb7ltGY zDTeQX*>$M3W7^$7vBtSWD->-fL+quXvgPR8f#Y+{5P-<$y=_b#IL&Qjz=o#G-HqjGwu;A(C1(Bj2399?^RUMq2$yuK`cd@z$gfs1^Su0 zuNBU%M~-{tLDE`<@=A3-?{)T9xOOZPUKWnny#|TkGOV6XG02Sb0DE{#H_7$TB(3c- z-zujf#gfV;7Dc(5&GLg{C>j`a@jFe#i`&?PahkaUdd?r(ecQLbLVeC?5@OA>O^|Vx zwGO`*!++lxvqOZXFIV9O+6enw-~(4;nbS5a$4V+ikYgv|Gv47z1g)B%7nYa!3;27K zodz%sk^A37WMI{RXHxB0#gg@&B8bkrsZOmE14Mrj)MRYFeZHm=3k;ULRUWS3UNlgb zVwALx2R|NiYXOl1`xLbbYFcz`^dQcL96i??;-|t3pyq?-3V^6`6`5n-vMt+=SjRsC zaI@6OVY~=|0x+m7kBLSre{j`<;}vVD@RcXE6e2Qn0k1{L9xm-{2Txeb09!&?hc(+a zWYhydqki z#NUSmQ8{0EAtplRw+M5K27ao6UFvap?9T}~thC-SoCAt+SbRA}A&G!e`#x-}js zqTb3+DLL&!CX)%EnvQ$SjoNBrN^URlUzfuGQ#njcQ4{@*fdsFX%9xNPkR4|nLaZ%o z^ot(;KL$87qPR*|L8iHmu>q44gDu3J?L;sr91)4eGV?o>z`-~*Zkf-);BY-WHNwz@ z66er$5tM!@5@3IbbnDv0K%CS>1Kf#iB`BUgfQST&I;Vq{PR2HP#q5KEmR?$)`J?GT z-zsarLO9m|dh;iNJ0|j0pGtJV4&0cOcW5;>6<$wzb5GnK7J_L;zANPxIFbig7U<>d ze_KdF7wfMmJt$!>KwB3i)3Y8Gl8@O3k+0SrES;VYg;Mxtuzg%`j6L8YanIPdgJj%XBf+@1@j%MXtKnO(I`Pz(+E<%Ya*bCgpUcxJlmviqG<@kJ@KG$do7(sgj(^my zB|j?{$i6FaoKo+O4A}D$d(ng~=0&-kqpI1txdRArVyHGz=fD*o{*g#Eq~{xHD!>(Y zfWG?b54`C9s>~wLG`XahPra~nK#ei>endvn4AZ=G#j%qlQ8K&6Wpj)9^la%o2iB85 zQ*e19pRN~~nCD`(dh|ez`{dAv_Asj`1KB|%!Tv16ly+bkCF+t5v|A?<;-eA=)i1rc zS})Q~0_%kn+dMI4bFWL*uw!cjlMRi$LA$nE;b}F{ifUT}y(`4*7MS>%Ks`^z`EisC z5OWAb{8WN=e4;833h0~?Z~$}+8ub!T81|&e%*TUq-g&|Z5{xzJ@0D80(M(x!eIcm2 zc6S07q=kQ|1u*xzsMV)YUM+|E7pFx(bGSoU1o$KNmnl=SUk#u5vAn=Aa7z*Bh+qi` zdO^(v?heDS`2*(R^r00V9i_K7T*9vCZ2^?Q5?~~hQV*F%rQ)xPxaj+ks>XkNeT-{KAI{qP%hyXvGkbl7$t{ESSuh$D2wfY@f5e zh4UT#E8Ahy&dq@PaBmw?c5KsdMHt7|4;*sMgQ`Ru1m}MG5J%o>K^sVrjRf1P25Ns} zW=V6iF+$0Q>5XW7AfZ<(%qnqN1}IU@T=k=t!E-g3V4$rqgaWR5Z7Z{zOjbszAx54+ zjvV*pkNx=IzWINT3W4Lxbs<-@6Qr=)!62mgZA|(UIocomYNfJUKMc$+xm+;TW_U1| ze;%6%@*VpIvhisrz9cyRvR|;g{F06TE*r2*2w=(f z5&^UAFxf2vfD($R84nqN&Hx8C{syVMtSo@>9M$5O&dN?!AD9$)mj9H-BYYbZ9$8KMFlwFI6DmWuT!2G}@&FPnFe zhI`F{yE;sQ18aCJJ0PIgt(9D;J!d33-IewZ8@V0Jx$(_PTH%J-b(p zYqtQjhEr(Y-2GW|Q3VdMB~Z}X-KPdhs5ix<1Qpx-iBF0kVO7tIZNw!IuZ4Ya&%9#9 z%YuOR&;*)@tAuAClQt2p4X|%_>MTfQ13* z;iEu(81pXykNuvXz0L_c-~^7pibqy1m9S*)L6F=Fn3w~A%v)gOyWU;XwfXMl4|l23 zY6P(K7Ai__2F&`{ZtB_l^b9_5T?rTl>1E0SC3+Hoc39NM>_~5yA&Oy612}a}>1LkC zWZe3>FU@lXz#K!JZ|>X{-e-w`omBZS(4b{PS$ zh&?EANKWoD&uz-cPumuMjvzIqPaK6jhTBVI%jf{46=)eH!Su!j-g=;pGEi965U^xd zuwz(Eddbu%KpEL3118UC`KmLwLnIeN3WAR|^W2@+s~vj@?<&Y^7#~Cc)3M3hl_Tm(`550t>nGDb-`hNXQeE$T!%lI4+H-}}#WSP9V zmgNBY-f13yP0s?EBdx5q%c&<@0Wy}DMtvh5-R~JGVCn&;&Gz%A=|PhKxOz}uaGuY% zL|UTN&Q5XeGVSYE2qWO7vEE`$bkMgnUzmLoU__EWJ|mrPQisj@v(UBHE73(v&tb6a z3RnZwLyqHpwI!fyxk+n1i8+xIMcdV53JtJHJG_$LTleL>)Xzuux1WwZ_A_M1DL!!k zgx_1m5E@_~Vio?+q)_fXRk4ADg^S1A)nLV-dc0r8@eWbS4d8qqqDw!}9_Gy*;C6t? zW&9xb0uY-BcktxxLm!F(YquYFx0SW~;e*>4nj13+Dcm3hT;x<5T7@e9ak9J zRHg6px6l3e*rvwE^iY3Aq_W-tPku^ydHI9b*1&bjw{A=<6;{y)a4Pbhhg7OS4zlZk z-djou^2v}?g_H@VuxCJE3B!|7Aq**>6kJBQ{Bu?Gm&H4e@iPQGz%8hxf)FXGo3krRN zfk9{`PDd{YM%&uKyxtVo-pHgoQQ_L-EN*2FW|6^y5&rq{Xbv5YN1-?=@K-Wa@a?%Gbe%A3Q24-#u50-%#W zoiyBmpG}UTizW<*JMU=)A}f8iZe9V&izME@={g@q^2IfwhoR7y1#uBe{*6rhS;+fu z4jHZ`TXpS`%a-kY^ASX6&{G~RJ5^}V?@CJ_S-X4AMAn%1|FPWa?BMpW9Y1>5OUZ8P zpSS>D3%vQ7|H{YIm+&gzHg`Uz(tliU{_O$&+vY0Y&dR7yuAZ~D{l9;hzYcH?Ch2o^ z?ym#<#uxf^1OHBbJ_}6JPu1zK8~ArS_|5M=Z|JWZ`0ECKBOHJC<7a{Sn;YmiEZ8vl zx^%YKSP{a$zMh{0g(yGPIDxez z7$klFu6o~3nP-2Gz-iNn4UrHsdmYedr9(K-p2+OYbf5X!ee68`y#}dlu#d^&o ziFF%QAVGB#L*woBn|13r5NmGO`Sc@q*=1Tt`7Xsrk@Mv)fAjW$J1BvNzg)2@MCF=K z7Z29;g2|WU0h}|>{uzM}ExAia!#CWs2Yi-mAr=jGxu?w$T-6imOX)<6W}pwAy1l+@ zhaREa`8(9Y?=-L6W+);&Tmoi8u2uDXexsNY_a2URm5%o^`&8T)nR6)iL;0%vzTC4r z_x!do&uhAYxJZQ`dKewijd$tVWyO)s2r6Q^`eQpX8iesw7u4;jg4N$e5Prt+nuU%Z z_R6TMn?;?ovPy!aU*axKNt0c#`SfByS)O|R3tD00mw)NEhxa+&XDcpzEDyTVv1eU@ z+D@MBmAF&akq%h^eBdP*Wgj!N|MD4UiI>vJex;ngfXuaG@+nTTLJU#?rRY`h6ZB+? z6xgkzq66j~MV`CP`Eabukt}$QuRA)LxCR`Kni-UkT54w+4L4-a99mlIt#2f7sk; zQkF^@et{d}swVl?#nn9;HnSb=P)aumB1@7Wey3P%Lg-qJt14SeV`!(X zhb=R%L?e%et*gGyv?FEXCw4#D!ymIdEO_^@lEF98%z5zmF|#djzJYCXi#1*eIc>r3 znV6{&_6ryR2hUgga47a68Ta9T@^_eAJo!6<1~QAFhqoW72$>3zzL6qLxvEfT2#{K& zjz=h->~AS>Z@k`VG8pR};-!2YlCRNRYh8Kss|H`sz=|ULPCRRT0y?JIHA*ScgKCOr zVha2kn0V6}Lykc(nv!K9v@R#dyFki}P~!aM;msa4XeI*ghzguEf$vBi7&>&o*Tu!9 zwyT#$*llLtnbR-;?n%a=-$kEeUzXKtEC(8a|2it*hS-92no0uD!+V>{Zo+RWSA}7S zbUSGD?~!K)Ccm=m+!gkHzV{vC z`R%j`r&}?X=;J0Ea}_DC5ZR#jvO%Weln%My-kF*ZnQ%4zOyGMozWp2SytyI#y~h0~ z3N#s!`yis@G0L@K%DFH2!+sC!Vk)4sD?lQ~(UP8tOh>I2#QH57uWn`aHQD2{l`c8+ zw@uc^ug>_cA!n#0=mc~fauZy7{aYetkMwU|^+^)Y>Jo6{<0-`wBD#hoo`6=3{hqEO z)2i9E=?VsHZ9VnTtJ4F%H5;L`9k6d9dX2&%) zHl8_mL)4);#{_F%#E14i@(sm5?F`R;&ShTKYjij>q`3_Su?u|F`VISwC9xfs{g}J~ z7HBj-bkNwoXbfw*U4n4y8wJP4#U%sZxt@2AOJ-)g5!QTDpf2MUs88lWT4O8o;haYH zo@?cZJ%vz32G@eWPlIfq zz2KntfezGw5yvfpv;`H*5GL=;=-^a&YhL<|IBfp3k)Wf&6REe`LAQ=vGb5cVl|5^o&-=AXwoM_{BDF*Z@r2drY^ePzJ!X>+A4R8 z7)L)s?qzyK){h%D2jvM~_j6PU6g-=EovE4QAG$G$q8NM=FYN_pJuKsWB`?=X2vB0$ zknHgtjc(!b4-~abm)C!z?(WHhtxrqc;t)X-gXD1cgw2C0ML&V5RYZ;HGs#$(D`7Mt32o(V{51OgoS_P}dEAJg6FWrudS^|Yzl+G9mfbJWjt&gA3 z4t6xu;oX#lrG!JmRLZ~e_khtZ-z5q~g!MLbw289CLTPzvpbA~+lOUQa@jhvjT!82R zPk~H`6qc$WYV}UNLU3N{y&vU}DmHTAW^q7K2VLRo=%ubyd_Z?-sgY zhb$DoY1b=FY~SM`6eK|Pb2fF0Dro%1jsWwydA2JWvM2jRX~In*@z2^_@Ri0Z=V41X z?}TRSUFxQ{q{=#u4ozt9*W0=xpq?KsZmQ>LH^4d`BBdg7HY_i7HRYUW#A2wi=UlO+ zv2>a&&nvI%M=)l$XiCFtJq%YzB_E=E+l|%l+^msAwrz$!o3YnT8s0Y}9zAuUzByN= zO4?qC0vYz2$_qi4wk|tH-nuHlvPyXIbkN|rnM3aOl=bD+dy_Qj?qx?+>YIbnWE;uV z=H}I0?a22VSynea)bF*Tk9it+c#nQhe3mGgb!C?VyQyJr6Xn-y7^<`LZLiP->ss(6Kjl1<$o>D6{g$mFj z_B#YVo#0^M3-p}pOQ z6|0udIuYHOv7_UT=DnbOr#4nonuQ^~IP8%oTEnrFiyXr_%FJw9Q)=Moh=){r(UmZx z-ks!enQxj}N*|wXEGISS{o!*l#GMCzlP?uR4qu2ci>sf~A1?7;$swuuYUrivqJuY9 z$4_WDeyGHBR+29V8lO7~g$5-!pg~T2V45uN6OFAHmDHV{E@lj>rsIclU%p2`H_;l3(PBHhLdV{D~LI$It05@V#d+SZFlJ zBQ3p+LlZ?^LG3*_p5KBF`zE{sH}wJ-^a@N}jOG_@EAQO)lRa*o)j#FnvQrF);wWCk zsl5nrQW8WRKWnpCpGw2QJ36{SxMR_|J8*#EqW$;@=-47b=mkxASbcj zj4r%DY}K*5=CAygT*ghh=V&iya;RJ<-`NL+^1Sk_I34C0s0Qx4-;vcf>^$$0luJmo zu^jJHgx4JpD^a{pXdw(!(s;u+uP+!6U!W?1&6uIjD(rkA5TqT~r4v*QM_r28&UkS) z43M7-yjZcY6tRE7ht0>&q%+lQ-<+=C^kt+FoKU%)>B-Bv9$JYq2TMpV8qUd&tKJ+y zj5ddM4N^81MIR#vYty>U=IKj*WhHQ(v)wIkvoh+r&NvG#BD7}w`3Qb-g3mCo?0eSt zKb$U^mQzFD;Lzr2V7hQ~h+R7zKeox9`&b9*y)bvF?0M(y%iOTNhXknDvwj6ghEw6&=@{4x;Br9pygwuzz!klvyF& zH${>*XyqMTJy9boG9Vk&wU#)#wpF3TC4l_))p<>QOz{qqbQ6=b;Y|u{L-7th$sJ!i zM=@%%x0@OylDIS*?K1%X1 z(TvV|eq6VGgyyG*6!9vR=!q^@eqWz@)qb%GMKV&rd~m*of!%ec-Mg|a`CD;}mQYPL@$cjAu`c8Ab3 zhgCYLTbE>OYDN)EU23hf-umv!p?PVV)&?m2s$|Y)Jf4^eb@ND0FTt+W{TnF$GOof_@*+D2ocU*wNd0O z=X$GYW#LRBGe_m>&I>|sK=gdZ08fh2&wkv%3~W~`z5+Q;x;mf^7Vvm2@ReD9y1~u% zIU(AC@O6V1{U-SGHuOk&@eWt-vt4a)@J}g9tLA+rU=8fNmz?x1shAe>*^ayi88gKf zalkM zB|ab4ufBm*zue&5;#sC2$k>4&${YF(H$dD;)toj8EHpU&S$4rEP^Jbqj#V?x#Ebl; zRQ(PL>Gv(knUEsQY;U*8@RM~upY^t36K22t8J^I6kYM@=6|EOlJ!;!W_C#1JC;Np~ zhQ4p8*s=0SNw&-YTZOR{$<(krT_t=bCynTGbhsvMuo*Rl+Fno+VxrDc{bRz~S~+_% z<81lJXLAU<`v)yx!(lrXQpDvWciAD&F!j$z1^5pN<4BpX%pkn-)l@ja<;Pl{xogvT zfAYIARe%;UcnQ4@4RUJrD;||3PY6BEa^Nf3NeCZ)4%)$oDGWHAef8+QqLk_ANMVpy z-Z-5kCgY=t&{7z*>>M6RvsE?F`eI9xjX#P{egE+1@nkXYxTYB|Q!bdD^-^Phh2nW7 zP_otgh!=XGh|h>-KN`jpsl59sS_Hx799dm8T$XC5W~@mw{)E_RV)+BiQ!BG_nq z@pBayWdUeuc7rB0;T*ft^}Ux|Njq(P$*|a zQYhs5<_Mb(bWpn7Aw=c2a%2ZeZc8OZR&+Z?GRZN7xtDx1_nezzW{zz(+y49dM&IB6 z@z}%T^VkQE_xt^Ny`Hb<>v+H47JMEBn7Jdb4FCQ!IO=QK-YCg-vS<*_K|^lq#Vy7^ zPYCcfJA&CG*Ll|-U%YQPN0_@U*VV7IjW3fX*P#&~K)*-{-x7TmH9Ot?W@tOcUuYZP z>)pY$fd|_$bE_3%*z0@Q=C&j~I$3?GbK}AAQPxHLuFgP|U=T%)XG%JboI`=_I$uyL;kGi0M#ik6hyPAo=h8 zMtL1K`k+@kDn`zC-pXyK>*qNCAc_BEpJF0E4F+ApF9n0T!aUiI8({qK@w$VG_xm3Q z^(lt27YK|{o)WD*4UHs+2qxT-KSfjxQy^WN@*Ld~4eW3Kc~2X6XVI-tr_(Qq`#tQh z03mGE_Rg+L&NR(&^NUT=lJ>xDTeolY0!*QIm=W57?zNQd@a*G#?d2jIaCF~kZA2<#FNxGy0a-4fC8RpF*TaqHG=!FX2hFN2UUGVsU96{l5o zeLwlv^KYvUX&QK1dfT@I(Vz0kKV1LJH1lL87#&#Tw2-;+9q-MlE2iR$>V7H&iZ zzd~Z@<*WJ#^L_ZT!=~-Gb7k}YS_P7Dt>Ato$?J+!Nm=2Js$TAC5pGjvC3>*#0oGw! zY-$2&OwDs;W_EJbM&*Sb5tuL58vXmT-zct{|ze`a=j#56<4u_)(@Ac6D}MOaiW0yd+4b%RFfA zKjZFKP8}9sbf5aQQ}1Hm+UO9jg6$pUhZAj5OnKVmnh@t&UE@1tf-fU(e@T$9E_Z9` zYnh6QBD4Wr&|@N2x4Pn}kQVcK?@QQQkhYDHwpyIqDg`(MSZ+AU_u|h4S}ksE)flr| zHo3%jU-2@?RAgJZ-nTCaHZ>J8%dQpg_oe45*aWVPV0ESvHC|Na<=jL@RU9q~YUWF! z{3;8eoFP;hG8eTT+zen9Rx#&Rh&0yJLwSvVRyeC#C_o4465QC|a9MEN6;IxcQyNStNU(c*B{eBaz*~ZJsu=I_0Gi?^du{m)Ja9jlW z2%=W0c}mA!Dem0F^cjd%nN~ShI?-6@>a}6N4#vx@k&8uTnP3TH_pX~R@c6yaipNL& z510)oBqO1Dm%7N;%c`yq)5-phOOaD$fvm@;W_AFRhZQh1S@7u&#ZL3igX9SngUY5u zMXAq7lXbz!fpau+9`z+*rTX`h72(#69+<#L2K_dnbwheD|IR769Kfvtpi+qylAiKO z&#B4k2jbKxQuA;6?2s!^u%8Wb{5h!z+%dj21b?xJnhX9cTlH=~f?T$1Qh2;=iMzDoz7GXan{W zC56-d{HCj&C(V1$nHB1#F)}b0z*s}X_xOQ;sK3P-drxMjtj^rg%(b5L9~jctWkQ?y zI8F_HX$_Ii8zZ&Yx@hnMV8^R0D9fx}|9AB3KffE)zcEpmDKMheVmxb|usDYjZ-@UFS8_NT%i*8f+uz&#TqTnY| z&puo6y;%BcvvdzyjMW4OOhu=I51YJuAg9%05USN3jwMy^1{x{<-61r%80GRvp>kj0 zVA-C1^_}_JOqs|Pl`qWkjuSPGLo!E(zLp%A9hYZ_yX*P}l1xUITv+!vrNI*$YwIDkK3*Q)%ff#v#_y%I;PZ0nPw2Ysj*#uE_yP5|{AaLc zRlLFGTrMztUqdmbxoz8K)wyR%CyD70C;Dl8@LFCKWk;+uc=)qo_zzkU!dV2+R?!5A zEc9lF-GLxW5GMQlCH%T1!A%2Ep1tQMbEr`eeuJnbMI?3PN913HR}&=H+U0PIy1yXI zGZ=@J)Asgr_?o4Xy58{Lt7zAsWGTy;>OH%bX6!dx2tKowgN7!U%F=l}N;CrOqY1i$_))tFu6 z)w$SVOq`*BKhd&!m71c^$C*Fmd~1U*%cUQ|ja0a+T)ZHs=L>X#D$N`Oc<;gX7|48f zNYM+uvFt_5ZHk!4T<{@%@=p7T=v-lhCsNg!LZZH20`5(&M%6lV7;weL(4xhr)>%{i zPvte6!zPcDVLdvV(mo>pqF)koJS41OWJ!8%BsE6U(ktnn)EoUlEs-8gDP2FJ^-yS? z_O&smnRFFmfv(%3yNP-|=N?e|ErUEo+faVn$aFEM6--A|7Hjq*oHr z?W_k!qo*%CD9Me-7@y%DQ=DK9SVot&%lY^|;Y?!f%b;-vs5|GLY&ge|Pt$u4l;6Vgpv={5fd z!DXFkc5v`~;JSzQL@T=`jR|KJ~KwWzl^hM0_;^}+M$UcMC#XKK3Vl1JB~ zFu%+2%Z4tQoZY}Li>)ns>%M{C0#3F5^R4$@ za{>Rf_#4;aw!^W(Zhyb&N*hSwR~P*FJ$9$yM3Ep`!?D-e=usWvRMLb7dZ11{sLs?F z9`z)&08~e}wu%}fbuP_h3^(^{yfQtnn4|u2=x0M?CdJa*r9nDB6b@RG(XIWix)YMC$t+Uvhha zQmm-DC*XLry=P`=#xFoYvF%DRE~YJeP4}4q#XbBSK5y{S@2T`%|0i&$zo|sCIXSDg z4_X+s=>UOx5`slVjj#Fy`G?$3{Qd1KqDk2D<9B}bxOYV%Rxdj}2ZEI9QuB2=6VL>` z1!%&dMmNgm0^!cc2HQ^#?YOtD^K>>T3XS@y0^zYB7M0tPe#Eyn*&I`Chysxg zhZ1Q0BJHt{BMvCJ@zibre+BH)KTcBoZg=v*`NU~o!u2w3!)QHX=LKqVDw;M>Zp%o) zTaRKGgqF13e#tCP(AsC;N`K@yhuSRT2h^Y^O z?yl(v4miA_eWg3s6_Xh~{{N_n?_NW$_M*FH7V_Yki1}Q!nw5rKrp)8~{;VFZRC~T7 z`g==fcG;M+2$Nx))Oank7Ox6})CFql8uuFEx~i_7IV^0SwxIh<(fB^upeh-Bk8pua ztD7XYFF@Ng^{Bu4MYhpL;{nMKMIo)0vNMNMR@D}*`>PHtg^16~hXEh&avoHQsuzIz z-@JD|01Tfi_mu@E!vfi~_g$t?ggD(F|LFN6^iMBFX&iiC-^U^TJeR?jaRCUld|9X5 zSvl&n+}S{OzWXM|TK(oVa{r&#NC;|+0IZFEm{Z>7L!@N$BN}IE5m$!aEHLN$tLK0C z4zX4_Q7q*OtmY694y*7`ibJPRcWL?R*!K<3G$^NY7qmG$Ocw^*&nEz?Wa)K}YyFsk zw_O@+b$gRCoXOvD2A07s)*OF%p^6qC)5(*uz5&XsE9Bv|Wx_7-;k7`7BdB4S)|z`> z)%P1AE6A$3|Eu_UjIi<1x1O0=tA81%9&u+Rb5a)v1{@Xc0BH@G1(A2}z$YFS2>CT! z@QJE7WGgnGon`48wlI=}Kn@oFhPuB4-lu$m(Y&U&`qD9-4T-PAe;7eC#sl>~uV zQj%yP+TFvaE=>(6UAU2iHxSPV>Ea#o!iI2b*@(f($EipRXc9}VT2}YVZ7?+J#Rec9 zqLk~rbEO2SLa{ZYRokM#LCj-F`|_ps$p&}H4n~=g=>fXwC4etvD)td8qRY&)MjB!{ zpXMr39-J4jW2oC?IlTsXFsKRj-3nwq9k})Ysz2~RZd;3eLZ*^e|KeXsuN~-nj)Y^K zDOWI7P$fP5z2tPdaXCkRT9i__@E=-AytW?f8&S0xzazi(_|K*xT98Y(j1qB{3eNv* z)3ZP6HOei@yaw|HgM_nm1V97%nW(X?X;w0gZX-GQrp@8Z{tl&D%GdscaS0DyV!Efm zysi6Kd8KxZ`v7rYUF^%AxtgTOT3j|Jt>sP%!jCq%SWfp7B=-`4lF8I(2j8~j?rKEO zcp09XaS*OdBPI=kh3VT(ua_g(CbIa_Cm~l)AU)am-nR(G8FU{jvgAC|=3*~M1klk} zT>-8k{}kGYT4Juq{o~@k*+N7)n=Y95a7oufCA!h2YdhU(DCziiRR8{y@csn;1E@l? zPe;@06m%C(Q1!h0w@?a_xY~{>S=Viv^r&X}3|2ScS~&Ao;7;455qyKPYN^nV4V z|1FWvuw`H`$_eo7eQ_~BJ;`216v6;87vRfg{rSS#dWH#np#Z4a(YzE=4_888?~Sqk zAY|xm>oMYU*GM7w$>E8DVw_LJc_gTLIV{B>r44w<3esGE>ZMS~a#j?Kq2E=r)SjkF zR9%$f4~qASd*K>{@6KIRFVMVqnmyuXn zJ3B0#`NlxpB@kDO$wG2hkti;Oz-7;Z*u5YqI|s9xgMw3K;Z)-YoG%1xq9Qdlxbqlc zz)uR$En0W_Ea6Xbt{x(GGJUGmiYY>}V~h!pBRjjXb1A?AK*p*pz&AxGR5ond@#Tv) zIW7A%oOQ6JS?3|O>v<1UTk0K0r#qxuzBGPm(tDC9>t#+)Tng8-TiiqU8qGF8Uo#nK zs$7BAL3gV4-St(#uoO{@^8M%%w_RmzidlEA8lTxB7ZRop^RgW|8h>@VZx)MUufzcV zsA!|b8NM+LXBNZJBK~vJ=fVn#%S3@hn8xwo6I)Ix_zFUOaSnhR5BF@-$EEN3BgJ=L z0XY*=x9066W}Ln~!5xK^cv_1DN#*Oe$cG%``W$-LLx^YW3rVkR!ZTt+^y;qkBX25# zz(-bfCiLDaUr+e#?$mmDXS~~z)7aw%tIqceLs9b+uxvrA3dk-$Vjt~*!$ClGIZTY9!A8^H{YTe>?Gi8u`cgZ=~Geb@Fr2P{xH^Awm2l}&Rd7449Oa)%Yt-jd^=tfq?0GGn0 zoQxUM_w1WHt~drOk{6w&2>LBMsp;m1Gs=cF9Xc77J>RqZWglO2>7S@4%16*1rT==9nX6vGif2z(p7Qt{h$3u7SGww&*7_v zw;HG@*6xh5E=gtN+K!=9HCuwciw=J?y|HhH{q{b-{M;I zzOJO^VvQ2rmZ!}bPS79>Yg$_{8t-qr)@?sr`{+_-RflnHOSdU2!1A@G6c!b_3q0L- z*uj`K2+o%$uMD_#3N-wz?k`!{Lr>x!1;;5~XqWTC?wESuj7|-^afxrtmv$Cv^y^E) zj|FfcJ{upe=etWFr64ZV6NvHR#5TAc|68W6yen)L9#9yt$>7h(ol*s?bp^qeB<9%v zAUj?MzB2v#28DNsCSw)Pj^LhYvR3#M$5TD`=i$>}-kE$?Pk)O{9o`gptA)IPl%l;f zz>50*$^}bedscP9h`y}GK@p!+N#-2~svzv9lT@9TVjx!0G6ZJp|HLAn2EF#C4>jVU zyrWO3^L4nC_}?@HIU_lDOnk?+Pz9_uAqaebjmuz6H_OlvW(BDold4{U4M+z12lG*w ziH|J8Q@!QeK6ESMQ}y?wB(Yf@l{*(yWmOum`sm-7IEJP7&3|6as-S^2jco$yL@-o=5MIX8#}IVAgA={`=6qM(SF1y9)jGyyvgw(X{vkEep-^NLx)@c%?jVOQhd4t?-ziV z@I23yzTs{k#*~Y_k_2$@Jgkza-n4m`fqwu$-aW1*ysg>3E5ex z5vD0>d$$YPuRAB4BmC(zJ>9d01WEP_ppMGuN>51e)7z}&jZKE)$3#p^+U<3}`^}5y?AwxG zU-vQKtQUT^eT!|AhP7?_z}s9toCprVDtu$dyGAUe8kcqHmPo0mcI_{-G`PG=D#*9dnyU_87?+hDM+1A;2phPQ?a(e7u=%;*-xp z#%PRP`V9J#owr)^Oz`w-9+F}MOv%6A!q_(c?M74_z-ziO@IAL|+k}+yZt~lKdCc^! z>u4*fsxmUo&Y}YS@a zsU*I`vn%`n*F1D^AC7)4^N|B%)+E!FnvMTL|4&3$CC`Jg6fQp_h(iqeunlmtgUfGh z6s;!A{%_9npE_rgf#~CI|7Gj4CR^A5s1Zg1=SyUk1Y@B7*g zac(O{f_M4*Xa^%?09HyL?N;3Yb_EHrOhrkX2HG!Iy}BN~8tf1I(qqb#Gqr{bFv`-I z^QBhnnD++AAZ&vMd8aB zz?*;2_UfUEz< zdz|;jkRHakirLvYjyp(eC|;aFu@JWZ@4AzI{OSr!n>hDRn)casdyW*OQ*R?j$;ZpwC8- z3!t0nAAJL!pG**@RASiV6Q%TcUO-pu!MoP*p`iq~$LD=LrS}f+{^aoAymp8$swrybWzh zU`Za_Fw(@o5PVtcn`w*t2!gYdtHO-&TdJp;eY<=0&TIC<0Te?PBTk{2h#64H;4n3X{s*Cx_QdVA?%&t(ba;S#x0{GvlkLXa9cFekx)vk$2fgEX=x}gnr?bb) z7k?En#t%bGx`V3zY6=_>32hQLc@Z8W7R3-fa9t3(sD%Fdpr!x3o{ZUu?V4=++{+^;InE@&=E;y>rz{`o8h>?ra7z+&{#d98Z=4z=DkYFZ%5$dme;C4<7&H%7;^Vv$D7!!Ck{~ z*M9TsbIJ72YEAG@R}RgahVo2nSIfxG2a_3*8?iym1+h|p{CuwJAmzgg!Cu|) z3}033HHtkntN5y1)8W^vZL@X7l@)R5&8Y3Osld-I(ZUqYiaU43SCT-1b6F^N&aVz@ z6=hOzU;_8XWI_U^-9!XnyEpv&-ZX;T=AX_qTSy)E9qL4I4#n!(-)(OH!Loz2GenJi zlRi2GNZ_r@KokA=B};fxJxZkh8tI37;=wdi*)Q^@iba=)eY8>z!d|CNKoyBeOI7(9 zT}q94Aa?AWmY7xD3rg`^C_c=I@Pw$sX!{KOQmAvbWsk{S*6!I3#*d?Goz%bp{u8Bk z-{Y%YckQdMjSyvJPu6v1^m{%v`E}Kw@jOatlltrH=EXeWw>TLIr-#Go?4qm;K5OOYo`WIEbX_!^B(48QG2<8kdv!$!;oTapcdq6aAB@$F7Hi2`1bNog*Sm^A{O#B~rWC zLrvp_Ba{0by1uwY(uU^XL4q3NZ)KJ&$%bw6`pdR*mmZ&(D8KBzORpqokn!dXl0MiN zRQ7Z@iM`Lr-<{C>7pb|XE?gPJY7wICa0v=X+P-?u1zIi*nIE|2XGEx0|Bo})556Ds zi8tj4UJy9Be)JSbly!WJ{wo7qMSRCQJU)^KDIZmj5luoj?RBpJUM}HyN0DG<0H3o= zN!bhb;1Gg8yd~dNDxgiM*knwpKPK0}Z?x_5<>v6$vB`aPfdfD<`~3@(st-y}oOSWN zVY+C=xT-g1bnOHMa&lCS(y8_)S|u$792}&K{zAw&Vp3-7T76hfb_n@7p&#L})_m;n zSU>URDDt`K#NENndtQnX;HK`rzO`a@U8OQD`iHMe0GY_5;Ti@V6*iNoMfDc9_&kJ{ zVM{p#2>Tx?qW(Fpt!|yft{~uRlapiSNa`L^(`v1oG~n45`&0aB$I>>b`$q%as0MP$ zMCP390ERtmU2|PZ`J1|k*8#zy@;ai@Fm7Us-rRORj_yFPzEB=d>1KXuUR9B>@V6Le zWn7(KFsVbBl*SbsRGvNz)m?b&>Ir=R`21+|cEdEtJ+^O$$#Q1oIs3t~oscJ`daR|^ z>i%qUb;1e>@2L4G%4G^5uaRuKcD%DWW=|KGFr**43*ADeaD$fBe_XhyhX|jC z4ln=1(g6IGWgu7%O}E~}lPmHbst_N&b2>fWKXAfbpq8wG{v%VUaLLWea--xH1 z-WqD5)gf_bNUEPNzF4i*wl0k;1y1aNHx24e02k-8`%Uj2rU%17H~?p&-e@qG0P7dZ zE5lt-GDlGiKGOO|H_fD6_XS`9$0=fD3P=NX&y;WZ!hUjPbNt!7@tcVVsfyS-@b=qq zI%$;@db_fU#a?2`NB1SBMA$dXQ=3OY2?NidmBm5a?Q`vMT^jyh&!ZXg%`XJWK}$k& z)-V-hT*CDyLH1uLPs{tjCkt1F45g41QLkI&B0BvnElo)bkq(3HJO4;0+rfm_Q&4K& z&7__YQz)3OQx8-EBQd45tQ1Mw&$guu$A!V5S<`@*+M7=KquxLDM33Hy(}rVY#A(Mr zQ7O?YdLOQno4T)gUsVpGx|*5Nc*%AjhGO+s*OT(WgWEq=Z+Sm?`}pth zn@|3;fq)dm=Plr|1ZY^6 z#qPMH)#)!DhrJ#d581e8+qEDm$RM?y?P7hc;br>bNboMmZ}lp>>s5~|F_3rdh0;z3+kv^z=k&P z$e^hPXJ_EPcUQUQQwvN*UdgZ+2n9#6zrQs8+F8_5~6cifRTd1v-(59Q}B8t7TUJ}U?6 z6>%1YYLPc7Obwg@xq+HHS}8x3JC{py=nONVA|F-HIMpb{l$2wXtCUE0ms=aDJ;$8& zO4TKhYfg0EISZx(cayKwctyu5HotTd4M61M#b-I0nG^^qe5oa@k6+!=ff@G64*vAm zV3&rSV{yHF{&Rbn*)0A0(oc9(dlC4uA38z(q*6KS%aim+v$2|S(UfN8Qt648J57DR zJTTJ-?|4ZGIoTN>B&Q$*56bS=cjFbZ6040z%NiWzteU15t?`LJ+4Glh8!Qa)HeIJ6&%KIbGYYD=o8Ol*jID6q25>t0BC=W?E z7_hzwoyXDZ-9kJ-6W7slK?8&MAquMvS%ra4% z3}Ti57NFhnLjH`T_|j>Al-`?^*~zD?eQ5V3w;{vyw~6JI%B@G2Vv+$&J^Z}BN! zL@;_2Wq1z<6 zZp%4PmFuVEb^eL9mn)^^D=)^tG*22BNFp_fYe*7IaG)fE`|FOF8MbKv<3)Kvcb#Gb zLCSur0sA*bue)o#l>J7F)-83C_T$xmDxNFyFTNdrnVPy#o6em)~2O^$<^ZcwMM;DLG&?aXu8HMgy%_+ILIWN(1_`HOJ14_ndDWm&k=C{gAK2 zqNWEy1CManOE^W3E0(s)e>5bKoT^ z@lNoY)?|&%!D{|ncenfhb$1@{DJYCdP5Nj{eWULd{O+V|NT%m196-cE8u@+C@_DH7 zH5RST+hE#KRiv^GoYz(FA!U-mmj@FLsZ7uAXnr5}W~+(d+5s z=sNlZoHZ?4Der7Zc}%Tc+(Ssm&&%DjCf?7&`%$Uw;;KMj8wTuYmidGZE>fpS;kvS5 zG#Cg%w4NQkWWR~nZtI9W){&a(@QqQm&GHXod%rj$AT{t&YRg$s08%8eIN%1W<>od4 zM1OT6;9>0H$%-rjMmVX<_h6`%O>0}oIiJO#(|L+_Yz-SO|76b0-AM?PGsS8Q;cF;1 zFmLU&g+#OdM$V_REZ^*RP@svXan$teOd+^|<0`>l??B601^4?xm@oppVv^cT?)qq$ zXOc&*j@rMewT0{T{;{1ozJ)>`Cc*lD5PO$^l#{-c07^#L{_y>gL~M2Hk*0GFt0<_s z$xAe&-jmaRJWv$bm*NnSoDUDka|qPA|5uZPExf<)yx+B~lY4_@RYWFTZ6#vF+u+$y zM#3boLl+&ir$au%r;Bs*Txiz&ju8NujD<%p5n#*}+SRD6D^qF0wzP2yjo9e|HJ^M>VIgrH z)-s{S+$|VF&fZO;=e<{1Kx)+fV97y1CpJ@$JD@HvLXC>6mx<#Y^K$f)QC~Hrukq~> z&)nni1n&Gq^0P^^eXrh+zcsBqmIo8QC?oT(QBr6UqTc>2^@%*$&p}mgxR1w1gYoa$NEOA+eWn-h;{8Z;3}o^;aF>8#i^gtH&PiE zGVA@euC#HpvkwQvchzmYh!#`y^?1$Sk?xuAujqTiWu;8o@@-EXqc-1#+!&eyrntfS z-U6J5-a3G{*ysu!o1D*WTMLwMtrc!cKT+hUC3;SM^uYLP$C8 zksSGkOPMXu(z>40iz?YR!E{tenKDR5kg*jjJ(8?FZI%shP-MLGe;IaX>w0mVx5-F{ zyJ=s%hl{!oUjib$y*M+xU~puAR>3_WBcdG_I=hU!-DrwX<@;(=Yc_g2 z=Uk>R_G2xu0Z2|_`7`LYW8Y^Y0z=>@B{V~uT>Bc`9EKDRa8#8%&naa@A-b(4g9@0D zKd{;;(5``m{+%j)DQbZ zTkW(wT@|Gs=7}pm1%tE*KR^p-s0UrN`lRmZwp>Z7N|~I~8?0P5Ivex2re>#j0W{g2 zz4ELMtRUt^&j@vXx@HI76OGhQI%3UPbng%MR#FRG5M8oZCjHPPF%UwqgU*c)`ll1N zyAK%7l1kh9t#HMo+|1$PTaUB29y)%m{iwQGGjeh5rp0vY|Jz}`>wi0u9_UM0UNEe2 z80r*%De6@aEoEty8U#VK?Ja*~S`KA$E+Zgza#*$y)JpmU#K#>(r|Wrx~3xh$idp$XyNv z_qV=ot|#9?n0-{$NONtU)ikB<5t>w|q%d{x@&eEZJl?_U9o2-seTUV6$84`E#fxJc zI^PP;55CHaP(sYGU;om3t{sHDuD7T_t$N0lzx1Z+h`;$E@gR0`fE6`)Puim4N2IUU zd(vuu@KkQy_4hPZYq2@`XYIW9&XhZs9}K&i=J`_?U(UJQ)ZCb3jOIFf{yh9?CG)0ln}lsJe?4`J8Yuf2N&N-^P=rQKR{iGV}w(!wf-*Us*)ht z6ui~JQt((#tDwW&F@^po$0tpzD;a4a^#d84Ot%iGve7xQduc6UP(()o)?jYLe31(z{F8YA6g1i8Z{>DOl_K4iRu)HB0$7m9fg#}eiJP*5( zNsAhcUbF8&`eu3542Qpo6msbyw63g;^g8%b;_N0;&YM+^)&L0QqF2UpaxZIQua74) zuDd!-7!jXng(+oZ;s#@2X*&<)bv2vg;{E&|9~iy0;#KW4bMrjqPLPU6(dx%3k~7uY zbfqt9@S@9RFaYsf$D?VbZ=hoox|-F7=+?cd<)_7ot#O7)Po;z>UhHi<7LzT&vKl`$ z+QE*P_g&ztslW1+e}4^L>o9KL!^oypBy77VGWgS2d{~>jxn=Z)VSl|mhk!@o%9FXL zZr5E$a=;#@K-^B`5bT?d|602cY!tTR?i8gvc2rxyf$$jVGW{ie?RwJHiNA85w<)MD z4h~ca8*n6J3}+=niC;-{5?a?y6XC-Vkiho79T3 z4Gpu{`Y(uqX?V2)v9?xV>&xG-hT~&2-Z@(MIouGA*&BCeM^fRn@Fb@iI54Gw)ih@6 z?yDL0NZoh_Uky`U-9b!@e-`&;FrYc&r*G4*^s=ia@vLPjkG(SWvJOlL(Rsd^aW_fP zFPQ4OWe2RxJ(cE%=Bq4Bvgj@~WDbv(xjt4I+;`4;sI-|)J^Ns7SID3N7xvM2s$x)U z&rL)mEk%1l74LynB@?D|N5M?>H@BeT3g&pL@bTu5Iygr?ubcSBxpOEjif>cd^h>v{ zGu^{gRX(xKs>gm>vo}cate%J7H2V#_EB};mVxId!t&<@!`~pIPhedLHMP9a$?ot!a zD<6+L$zL#*3A=i22f93!Y%(gZS#}y^a<@g5KFPsBKd_DHGfw?tNV=Sht&4dw*8{Y) zCJ$>Kb(r|u4~5gL^{i5(d=gwLT>QGb5M6s_Q1x7!syXRtxSlO&pLJ#m>DQ4?OA3>| zwg)=>Y=HQ)4A%Bc3?L>b0ej3zq-<=SI`t*EJ2bF1++r{?s!B}4i;C{c}QO&By>8{OHom>v;1 zHNm5stMqIEPMY4Hn}sBkg_Ryh*F7_6={!jV;Tn zmr}lGUcd>amv;wC)bVPpZfWG^KSE_%T zT)p{v%l*Pd$>ydIT+@Gchqcx_ZPm!PGcLbjh)3<;+t=WGAw@VwsBWqrg~K`-nt>dE z4M-_)dD9{GSahXkk+%XK{o*tvZj9D0hjLY*z0?`1`vE)8N;fT8rjJylKXyjEMhD!` zar6+wc}*GkXNI^o&A1_v*f9cm$s87u@L@ML)Rr^udwYj}gAXH?`s0(sX&3WQij#sT z&(UpPlcX8<`YuuuI8PbX_#^!xSNJ^oR>N?Wy3bW`b1PlAZgUn&@sjUiF$wLibIU70 z>$j9<*B$bhj$y`j#vK7S!Y`K%REd!k^F9>qeBapNe!bg;%XeX~EhH^PlHiIL>aiqM z$E7?xSh4Oa%E|M<=K_hSX3Ri~G>yEP96_0jhbD~o)xCv61`b(&qn%h=R;PycM?Q6c zETpY0TtZVN-cp$CG+y_2UL`UhLC52uf;x&>eh4IqDqi}fS=~Z%B4+!ZE5iv7Z3*%v zy-d(75g!_5OS|Zj@+zhcMCG|H1XYGv$K?e@KV&&RinHoF`PA^936Uc0b;v7s=q=OF zF5rXhZ_eRiwyvOVhw|l`Chs{a&j@Tzuv4rwGT_)ghifmxdSV-QHH+|+b39gn0Jb|h zq$G1>kyz|6i1YX*VvrtxqtKB1n%w+(-(f3Ki2un>^x?2xpjU~x8vS2rbDsx}>&=W~{?ZV}n*kD6DCYe{PLu$aPpkqN76XZul&&EU4(KezWotfSnI74p^`iL?*6`VI5CYe*DoA^28~t4u z5Q>{3l+#RE1TfI^_QPPGApfa5q2X$Ieg=kKQ3J*UUhz14Vtked1l2Oi1kc-ccgf@| z$HOX=xNa;5|Km12lyu;TLT@WhfANZ{`=lSSqO%U>X4*=|YQu&hZO4<0xc%^8)8d)8c8W^)uY3onj=4pIs&8m!ZMn&taq>&s( z|Eaw~xJqk1y?9Y#5-VHLQrZZ))M&I8yvJJ8{rOEmN%ZBIMg^`zIn5u5^Q z@s!r{s*}r3dq3fEqsVKriQ_$Pjjv(=cN+8BM;Q3S@aeSMnPaW zVzt>rc6F9)RO!5V3ozUdPTouxeT)4!)P>juNot{Q?)=XlGrX9cMxv*BbH$v(EKSEZ z{eCR=14d2%EN5?;f%NBtq2G}K=}Sf0RlpOSj}^)&101?Brh-6K#Y%$$$rkXN$%Y0D z^ege@=eglex3zTLacT+dhSeGl>JPEZbG;=&m}G>+(cIK~qk|5$wHv(vG_xqs9O&-h zt{X!=tFuYA`i$kPTB(eZH}AOqDHUeihMNoa<-w-`x+l zc$ETProDaQ#P-htU-xfrKH4h)m3uK}!I$89Qs&t4HlJ#IicYTGf}PEG^+5M&>yvT} zm9u6KFL}h8Eq%aIfWBs~pu1*M){EZu>1X{glh$b$L4i;kcV7uZsOOF--KXU?-kOWM z++DZ~nEwuO)>rAG`T=zrYZ&HNE`pqW)_M?>6HwMRGYoB38wjPeex4pJ@+&<(m7C!< ze)|*DeT4ht?nNLLgstOkcfd&lh>q69PkI%TZGNXm>TCba!?y|D*)>qRGn>;#_-#D8 z4`MV9U$QCSwa$WvmhcBJ|Gju1E;LEWS5S`_eb*$Kf8q>(z1U=o-=cTlaT98v^OFmz zXs_;Ld=|)Af@f4OjeGN&35^*E-;IcZ0Px+hoElbh3xqdE0F^m)YhZ z@3o|-EDmw|d}|j|95vweYnQ^2I_y?OC;Slyupq4D+FO}`8t3!vJp1^eiS7H*zs%(L zoen7J+JIuVPG&^@^%s>N2SMowR9>HFL0?;;`1r^qB2<%Jx6P38=m%+H&~|ZG5mNY>X3p zX=l#sN!l0i(g`%AF7;jn=0o)DSJ4_?{%JmC4{YV`@z*2sByaT__yK)kd*m_c3Us$J zR$=Zzq!-eizIKHv53BoV)w$b+HaoogT+~gSO^^hx1oCgFJ<~t^#m2_1>`MRmpgHY zp=kpw*nhjy0zJcZB}o#5tM%yxF*o2;9cBEf8OR_UJh&(3 zyyT@iVn{rgWVh@{b+GhlyVnGL!%xrH*FRHsvdqv=5&>IjCtpi053x|rzBlGUGwYTs zJ+WQs#yzyv;M5uayy^O-j=uEZ<3Q!EcBQuqUynghQ-oG0)quPMhGmv06CXqw+4o4O zPLYqZasU?3GEW&FlAg@u^^T7kLc>9f*X~V!7eWpqm&|7CmW~jbhZ)@jl<@+u9puq} z_Y-UW&MFIGGc3Zj)B-njjkg~I3$VOz-7_DrgRq_Pk9&Atfdm5uNp9(r0^}v*pRJ~P z_MRGV1kW{|xXI@~<;Xy3gQWfZn8mM(!&WzBW@MVqU)jzLHqi1m^UT%IxWJ zBmRCn{Gs0Ly~tTJSW&sQ;hv&n=zxs62qh-`&5opmLUwXjCGJ@l4UR$`y|U?7|R&mIVzps z`@UD#)z#Jf^Zh>0{oKpv{@kBivKM$DE!6+gE=Q%A00@s$=nhY+sp~zz?=kh^&>7_I zT)V=8B&Ds@jYmTkd;kM`v3TMe%hcr21%F;<%`rMRs2@B(1X+F#Vtj+-Y+j=jUTj%& z=#RiTcX;*C0_W@(r*qWSgIOAW6ScYl)-?s*0|tS zvQhrPV@*fR)-oJ;mIZ=_M8t}A#A+CN!>T_?%I} ze^Lz}Z0&$PK_Q&O7v`ki4cMmck|2s5!!BLiRObI*{c(^D$c!H#C-OxBh z{zJv(Xw1`>-@2^uR}kYH!<8=?>$4(8#O$ZW@Rg5;S4RqWJ@0fu_)u;Pl(yXB@S-@yp|=pgSN^aK;hJ zc-O6rDzD8AqyLsAW;^fX+oJ}o$%V|LPgfK4e)@!Ot$^@Y1!K2UUX_Zf>qFhh?AS-<)AH=VxKJE$Ro(#h#Bf2*1D8>^L{+1)VkKk` zkVf3PKRJ6t<@8%CJIcqX(5=G(=&2ScORDAD?CN}aJ+>j16c=nynjf(H)fpR+_yGV1=_?iU)pq_qxcBaWUB!RCg&n(^O1-F5Q(|)LKY~l*kgz=_0@Qi?;*dKoi*&WC z&lP;GygqJz%2AZkG+u$rdjm*0aq>F1BZ{*+gj)G^tCum3tBO+G(5%BYtm5=$}`b%4}{|OJ~`ex7vP1UdaXJsbGx&E%>z zALAg-zsc+mGK}nnjlVk|&ITBn|($v^b#06`&ieQ?=k%swih>)iB@0-xA z*g^)v&g@^$wm0lVxf$CfM4UwWzVKN%ja*;1ozY}v;de8e{2xV3N$gWa>5#l9zY=Hm z@88+IlTUpY=Iz9n5HkWY?rYCv&xV&MTp^ulPSN>JJrZ3p5qG>A|8+l0L9jdaXyp|r z_}P~YBAO!8Mj~TdCl>{Z~X`ai1f} zWkCojUq3hTe&U=2ny4ANrIW$I7jN5QXe%}LCS!dnSQoODuY`D9Rd6w4rBl?V8x+{s z*I0_m!R2+}4%lSP3`5tcvweEojo}}c|toqCE z`|0;AG3=EM6wOX0h2_$#0?I+LvS%7K{7tt8FVDYPi=r7c9ck?QdP#v4`wb~Tz(y(M zHym0$(W_;^e99b;eAdT%1Sl{;^!w{G^a-UBS%Kx$rxsvwX@CeP5JIR1sRI6XCyyO#ulL ztive$L1YxbNn2won=c(|V%hS2rB8sFDq=>|5*N7SPtSWm>5F1&KsaUu--2pg>v?CWq(JNehb0kdVZh%Def$Z z@-iH8R8XfKntEI_B6$EO(QhBIVxS5;A@8R&HyCT`HxLaza?*ehv8rt2fA8GfE;UIt z?<}l@-U44kB4<3keJ=Ng4iBq$;6$wAdMeqsC@=1^hn63Ag1T|np$6^pS zq55)KW42o2+WW`eSe#L{KQe}vy}KWORjQy~l;Sz=UCaySf!I6c|6NHg#IUio!jVg$Q{3z4A|SWajwO`73Zxn48%#Qjpz;JRu$(2?2eI${Ln1~U0dV+ z52L9-gj0ZD%N?pqCM>=gAA*)BeZ2MeaT&PiigeXd=%Q=l=0$xsLBOrz`a~tG*DS+P z;4~KVRPMUx(`ePt|dZZebG#*X=;Lh*@4RB87jHqh(U;t-wU-R*gXWhKrbQ7 zfa2mP^nqNgoN%dQj3!MPFd=okxWIGHQn$-qg`bs^#OsFb$Xg4?sZXw3fb&&wKL`m-th|1u0z*;<``4XVQ;>tYi zzFoi&GiyeN5!%gQcK+R4N*%2uUCrTHGg$@PgOn#GgyY)_4+}{ydPX)V#m$+SzWXm2 zq~Dqbz@4J+74K0lz;0{Y#ZhhlN2oO!t=32!2tYq{5U@6QV(S+2C8HcGAYHUsXY!}n z*~@C@oP8AcoKc$f8)8Ur6&NvORYFm9v;9Gil`@uGHf~5Ii5V;MY&yECOkdOcUUocq zP^=UqK?y?#eSUFH7LOfkimFdkyGzE9dVIoFtbMPNt-@FH)}@iTLZuT1Q@Hr@!rsA8 z9}dn7l4@nu%D?vs0wf)%#h=%4IlQ~k$nA$>l3S`QaR1{_&G_9+DYvF3C)SU>m|3ga zfI^OvmER}C#V63B@Ui$zZayEf2t8^x=ym3g^T#3Nv0<}{uiKK&?=r!CLTyCC5$dtP z1_#s=hJnxrA}SSukpLp%)QGA#W-n&^Lo^i43$<67aw-U*cw&j4#6U%pam}= zTE-)P(F6O&%o?X}RfN;xHauaH0Zy|(lr|g|(K%=7QAr(M_#*hipJ z0pGcmtR4tz8b!ek6934rc_}dDA-GT)ptT{X4zT>hD|=m5ZtSUX zRD)N#>)KlxMS8-A9E9)vXE3NheW&jDS8eWpzpp+4{OyY$?$>&(Fr30=1;XXH%zSe< zrDyx>y_ZLjTsK7huKlT|zdG&E2f81E6cQMD2rPqA3owHVLQ|)uSQX02#zJH zp^mmUR$6x@W)i-pBB4#2g(VW}=UR)5Okm4x_i`GF$AefXtY>lTZuk2~U<$r_&UZ-O zclvj4mBtpK3rcW^|4{zK%SK<&B-7_;V|LyGu`fi*Ca{2aUy0$7Kc!!BKWN4^ueKaW z-awMlE_=yf;Y&R^G+=ZB11?&=%!9!aY{&h_0jMQp97y5 z7r=p=oe3q(ugD}`dP@*+jTDPZS;1cWDsmk;2XD|e7CNpX! zZ!U=V$-l(1A)D-rLmeOo@cxhD!A=?FDmiFkJoCrN(Dy1oo!`iDPP3;Usz$wF;Fwg4 zIa9O8kKP>Hw~yXUNpW6m0W?%&}H%HkAJo^k4m8{6C8)3 zbET-cdd9&F=c?K&;6PRY#-OjvEzOHu7bv$6ToP_q>+FevKzWad(t0tKRG{BQ0_Y{< zy{0@-lTIrq1#FmZ?_xuhKbRQ~x~f$V8;K^rnV9OT2RH>}`c;*Opo~xD;Rx6kS;%no zk!*|oVuJ`qj$pHKNZCyoFq|cV7oN$~=Z@zOe*2=!{1R>eCvzhoRn!f_=6krFgQwg} z!xCszELCMwxX?=H$aS)fiSgsubQmEQ;{>|`a;rLf>x%htSQaTys3^1d)8=*LoVG^q zd{%Y(I)e%$Uh~#R2qq;GSJ7S#w)W zI@c{j%`dc|BUg`d9S|rRc~BR%Z!f(!yHfCK1J9)h1$gLpIsP#!mDq!7?eONvj@f{>65c+uo9N{pyK#joUo|*Oy@C4$o+5?D(nYqvsym8k)?V zPq@sOu}I}M$h%(%)_va722snH6}Ov{8vAp$w3J}0cA!bO{M>NLW?v%n7sY@*kW}yk z3w}FLpjn%n;JBQ<^~+cL@-&G&OGBAsh0mJp%AW z5QVB_SCdsh)EFVn4`zcI7mfMHE023?V0jtSHcFId2dgQ!3K!7&vCYz_SL;?${r;ox7_IL}jXNOB*A z+U~L~DTlh}8Hf;kz((di?&X;kyoM?~uZH^|;k3WjG(y(;$%4X_n|b5yj8(cqlpg#cLp)6R^z4?&g_Y~1=0L!p>ysE zk}Rum^;MwlT6*xf1gF`B89R}onD)T%Y720g5&z#rdpUhM;ZbakbD`*_q3`;4Er&(e zq(3y0*IfvoxdzX2u-8F!JUCqTu7%J8FFILzRLC?Bclb_9;XIe`DF1eK*0O&|K0-S>?q;3(I7 zBy*{O9(tK=cizDERAPYrsCQqU2C;bT@cwU9F2=Cf&qiyW~(wgHKhnzh6yIf5| zKTzOWR{mRjsC%`NwSAr5uS_000Ll_^yy#dR)Ru7>DELJoF{8v{qJp}%NCO8?<)&YX zvXv9=B=Bs>33m~Tpg55Jtc8ER%9GmO@nW`^mSkn!RTIsQsc0(w^3CFh`aAc@V9}aO zRc*l;_Zn>)`eqr3p6w`78%XQB4ZJZZWa@J7^}*GPsB)(t2$s*TqxSvm_ zd&`h7b1uTv=8z##b*h|7vKuf?-F+dbA6e>2UX0vp#_-AA=`aq_wTuS}JO!t2a5yi! z;a2sP8(xp_r?PcK>YBJ3&w-bjBJD1`Yj65qyncF+4)Ht|Zbxrh)V=MT(`?emw7bYa zZNCXh4bF&`{kvBerSc8@#1w;lo&HQjcif*i2Nd2bT+$chmNnr$m1JEGK5NJ}#iI@` zl@Y;VB?q+?JgSHM45ggT-$wN;&s<*|(2*k84xFacN_s*pOGz$XWb?j-+sc;hN7nx0 zaKzmIs)=FR|Ayt;I(90dZ0^%Vm%X=527kM7SGJxq*FESPto5q_A#S%&sjblj6J)d~ zhD$Qgb-7RhsJJ?-5H>cC%SH`=u?em2g7`&WREaqSnvJLi zx!*2}DhqWB>87w55fT!Yr|53YcA1-SMm2hnp4EX=q&!dV5w-mD@p6*9&ekKXhFm2Q zPq74X6*BIbNM|di6goAGo*CchHf1yUdrkDHytFLLZmr|~Ye2!XgtMMujN83Mj(QD2 z>wws2fqsyuE;H2O;rVyEzqkN0d{<@Rmt`XN+*$LuBPn4~Z7bFY)DoB2Zm6{~kPIK% z8!F{lk+>QeD^z~!7z{i6(r&L=46^rt%msb1M;RCuZ2dk^d+~gxO2Z~sW!uvV`^jQs zOwoR~VQ)2j@e~S#JyYily6ahQKR2FjKj@w8rBU5OH_bH^p~{OzD21$-u7p~8LmUDT zOHU|Nn`7UPh5njso%wN{rbzi?wHr?^NX`6`4=WR9tAqOA1UTJJZl5&1I@+5$-9OO8 zD6Exwqi-ME3Tt!~LK-geoHT6W(*B-n=YHsw0a}mD!qB^|@Z#E1jE_Xa{;PZ?&?r0@ zbbd^S*rMk!Y6Slrf1>n@aFE@DbYr@k(00c30ohZ2Gi}-j_M6)yU*tBa6Er~&OMq~D z?Q>;b_hNeJL@Rz*(`|dF@#d03{esW7{pv@cI;-dZ+WscB+gjK$D8YU zM~VGxox1KrombzEEyTwz_7iJ|`w&xavezBc;bAI3!J|f89g4yuhEo*^HO>@sHB)jw z_0`dnHvJyhA?wA~N|)N;^g+qOgj3buT2G^TqATLH5e-#NVUH@$>u@h4Cszy^<=);P z_*QNy`r#ZE(Y*y*+4N^ufH@iZKcI=gO2lRc^}^{xc#T+yKVSFu6n$jL&X&BDT_qobDzh+eENcDPb=F*iAAIS28p9hb&)#cA*21p#%SV2p*ryQ>!uGH<;aQI+%~ z)Z4M1Wj(!?s{q){y88wq37^POarneKe{9w@-Cs7atEsJAW@=IK(jWPHHauJT>u^Gu{)if*BT3w|f%~9;d{X69W4V zr>->nDpI9pgBVtTiUXw@aP3crdtDS8D4pxw^g-d>#PI2ZnVs046ha@6#!F5N+!Wj8 zDZfy?p!T5MjmxU=Nyp4LlZ9lORKPz^M-8fdt&YCb%Wt`P4P|-i$+7%$SwxCMH<=rW?m2m=X?-UXICY)tZ z@`Py4FWtD2s8)iLm#w#7S0dbZ9rpG_KVum6$56v05z3;Zeh>2}c*Woz50cHx@3%vL zNs@W~6jL6-lJ_V7Y0TU`eA{QhzI{hDzn;2V$T2i-aje4&MfBOiMRn##pH&QGz@Qy% zH?RF+uhpyv3683x@C3_vNEuG#Btgmo4J!7cffKZ-(OWv|z4mp)qQ$v&S32inxWm7% zAz3CPPE}Z~GzE}-Hd5Ci5_`GfV>HphchU0E-)rIJ5V6t?F-oI~X7zFU8BD!BT4d6y zoGSjwee0AfS_Flx={v0)f)gwEPt+>HxXzrNdpooX$GHC>aZW$HZUXRZeY}foN^|qwKkupfx|2JX%&WxtVqUo6}e4&+Kys4 znKQeOd`ogwWNxuPVLQT4u+WfKhv>&UrnvOIVvV*g!E&ljZj7L9Bs&eyPFG~EMz24H z91vlr*fhf4LFNuVUi*6BuA)k6EQmItDjY>zq|FH-$MJFe4HE#q0`1HESLoW9E( zBb&rt+7u7I>-S`h(hru?lXjd?tyAhryWiQ!+6i`A_`0l?uyHzdCNEmNPoC>y-;KA3 zmKT~WuE(^(`z7(umQK&hmfl>`X+1zf%`$V;+85TF;o%f#`qwTHRI^l8`J);0=!@{d=ci~1Fq3TLGWr*YQX~JPzsB*u{WX^n z0Z!-#{{m4Hv*vA~wWc9isqh2P1~coLwdD)cRnRiY4Zs#!n{WENz0M7XGoUIi{n0p_ zyN}HGu{*BRd`@rHYJqZ79pmqrgXo`6(&omnbKS9+>fDc-pH;oxQf`moFN9azfy2)R zvK5n^8AWM)*@|n0kq!ktf}I0qgbX4WI=Gta4aA_8o@9RAti4|xAB-|&611+*Ewn`= z(N>S{1D9&#KQ6uzS8?i?^dh&GxDb z#Wv>f+$?L82B1XF>tqOWzs@TE)^$G~+cH$e-AhD-uH}sg&wyeJ39ALyj8VAGqV{2y zgs+bqXljs;R_Q^eO{GFcWX7rtjJxkX+F}EBv@(b|zrO|)Xd_lD$@U6(-8-OZAH)6_sUvK9mvJ-v3v>v%c4% zb>DM*d)F%eZV%B|^zSC2SFprT>IQCOd<)O8Gax#Pn96`YV@O zEBEmBO(z_Ntf!UK&C(sveGMcFHiK^LZq^{ZSw)}C&*@UstfduHL<4*hejNOzf2?Nb z$=%oRqs#iG{rLaN*uOf&Nq*DH6<%PvPlxNU(B;rI#L9wRD^)bwZ6fAt(C07PrsdAv ztK_=V0iWw!)}Sx!Ktq8699M+&$!K3X*qlR}W$iR{<%rFnkLjo7y|z=kjQy|S2KR6) z>aMa=mc`5{VDBBdai^?7e^(a1opbHcx@)+W3r|j4f{oNVVld?<*#q|TJ7u?f{}t}; zf^MYx^qOjISW5kDFVwKut5+2ELB{sKf4kx@4m7`y~U=}0al**v;3>W<9)VS>BY}~ z`g!)&rJdzqF3kVk6J#RV=T%qqg!LgxeTIr^dGqZPZ+jq_PlhcRgV^eMnY?tzZIlpz zXm-E7#2i`*8@Kbg0Xryj{E*}I@c<38%WdgdjOHK-(7?tMwG=TBHR8@=!(0iG);0vX z?D4peT10_Qaj5y|;q4mR!?3S}(*gZcj&vGzGv_~}z+pU_Q#m__8~$Gr>bo5^0dm!M z_}^Z2qFzfyMan+nP4ZIDtpOB%0Qg97I5Hd-`a2FAF3m;x3jk8c5aOJwu57^YkpIrX zXawD^K()Zf0Muf;(=bSUQWg)Z=d3tDwmtw z_=~bj1(zH;23~lSCDzSmui33Ln@t3GfWn81n2MIVt*@!6#DBYL1-$4eDkQ_gdDv0B zpBiVpxH2dVJ?D4$PRvEZ(_q#Dbd`#?a`=KQ%XfY5slzW%T%BXBs#k`tPvb>ZteE(Z z>$BRT!z1UoJ+QO0)X-j$0V|!|?w0tEEeT!w5;A>)GoJkFLH?VEu|X8B&b(+fa-A`H zRiNp5_;na=5eRlW%N`I{I2(J${<+k3?l7|jiT-WLa_W#?0Yy-Z;iAgvjfIK^q*(zv zyIu|}(l)aI1!!+}kNXaSjF2o>zH%~)j@2HK? z^wxs_vCWrVMN<<>nFT`S+MM2u*Tj%ZIv$W;LGR~WXVRF{3Ri=@$I)FmzNZh$MP4Oc zDSUJFqFaU2@OYKjl7As2e{EJ}>{z~`5VqxT)>Ue=iX3~h<7#Ea0k#ZnmgcOe{Ic&^ z_L&bwigN+N?znm?GyWD=-%g+hA z8!T0CS!+4||4h)Wg2N6YxU!12&!ra$H=(MSjl=R7!_g2IwRmSzg6zoY#xFp&*!s2S z&qcQ7^&#t$`t`?I`oLjHYJ>^4AgQr~!Dd!~GF4;OQj{D*qcc$f!>tMNX?&?`kmm-{s8#zpVOzc>~Ou{!XfBIM-N81O| z?!Vh2ZT~#@mzO(UEE|z@&WSC(HDCkVHKT5qu)0I3EGQJx@51()jn<^>X`RT37;q8AUapMqN7O} zV13qwCA1`9(HhOo$ZLfwuxVyL##eGC<}-dP!qiIGB|5!r=AGPZ{PP0E@ptLMb((|Y z*BsO{js;hQhq{x=3|s7O`O|#i$WGdtyXE8RLp|uldL^}6X1F;zPQ?cAJ?BLbg8&=) zlR<6@wzp?L-Lj2Ub2&3n^6hric7ES1kDLZER{K@BT|VwmBzx=CqDHV(kGX-4QzY=Y>GAm#w9J4v(q?4TTdw-cedoH#Suy&! z`4H^v8jP}Xrik!>Z4i-&Z?i|Dst z5>Y1V`G*#|+MK%*bNOT1kb~pbjZu|})uqK|y}IsrTjZ_{G+)sE;Rx3=0XP5S2pttT z1(f^JFzOZS1d z<~CEo^l6lD35kkY_i0??lIdtpBUD{pj-*U?<@z^BwgTaaP7?QBC3zz9^Xm;ZPQ!f~ zkB~ipF4q~X*a+MKohucM8`?L1;F*ViL)wcnG{ z|Jk()bM_*)xdD8)&;5GV&1N%8ez-+x=uB+i>@tQXxSr})i(osn?O>?z0v`an*!7vN-3oZR6 zQu|MqG=+qx7m*_D7OiqNFOoC;maJg2>82Fz1%E}celLv1!`~~1q&a^K%Y2DE@V|ME z^ghnyaA~60611U2Q=1r)q3jiQDM1HUh+w7{htuJE}3KFz}B}449v3 zAB3?9v_4Z*GBXULSC%hAhg(9b*~GCk=;nJ-TS-NWYO5B1d~G7poYTuikt3;9ag_;dHPahoe+t%e}r&7B|QphjI!&)oCSRz=!?*MiBp&v<-jtw*j)@ zJkDHv2^y{UF~7piEmp(PqvGpU?w*!r?x-h=bkyQq3^P~%zx0T{pBfIlTVuP$F8dq2 zz_q{c74_Ynf+r?)A?$MD{aR<{$P`R!0;UEa51M)!iC(d zj(kO68rsu_EGTInBiq}V4jrPtsHE2;zH$LfA!Z*z@G2w=KuTV5AS!*+zKAo>7oFI zo7~r$HG5-MqVQ(n>d_AczJF^H>?q54b2nCYA!_hgqZz@sN62EfZ)pJa=AS(5V(kZ< z_p}AM+bm`+O^QMx_3_e->C&$MoLsaYm0FT>cd=@77D??mgK5m=*~V03O{| z?`~^UlUgDnn(^NqxLoCsrylivkO4FtnTS7rb>w(>1<>;gwcsM7jxIQ?;FeKnMDt&) z|IEOT>0r}6BwG{^QM!g1_D`}${l8(hT7zcYw~imn?qe;A(=QJ@l!aCcch82N+vF>n_c zJR~3dAL54xu*M*i@bEsgVO80-nK@7iSyBmaxU)CROdz%_eN-d5V_EN*u+qjGz?aJ2 zhl=FQ6BfDeo0Y_^mZU?S@~2PjnXV;#(-zn!=sxtMslHrZm`R2?`a{utN=B6ubB686 z$G!x&l8(^6sycn?`Xjk!Zc!K>ZK{HU@9;~N(5r8qGRwA6*tVA?V+{d_@*7`I4qW*a zA=rY!I}3eBYyVe@=2{EjYMOE5chABwMEgwv>*>*+!sUL{6WRWEb@$uH{81-7B>SfX zhAAe+uK@+7#;H0b{<+!elb1F=egLS}>pPZ{;m=MH3mG>7S|@3}))s9qQl0a3+=sR* z6IsjW#_;@O*WnxQy_50T+iT}<=NGAfm(l`A^Sdt`v-7EaIdI^AmkP0U-JYj98@zpZ zUts^Y=cx-IA7sc##v-#bykTI^g=mz3m|Q?n_17ka`Joe~E_^MOyZ_Qd<6xA(MxCI@aDh_;BUNM|%`G{&< zXy9Pp4pT$BwRjZ8d~%Di*_5K&2?jF?4fo^u}#7D#dC z>ad4diUM<2-22jkF#&ENgiLG{`D1=o2FY=Pz)v50gg%7e-|V+vTvZsIIOq^etX{wU z`vF@1=wwIg{+(>xYjkqsFU;=gi=CyxW{+gKSt;)?bbr>zRhZA#pS}9l4FAX1OaDAI ziQ;dpoKw_35e*A$QS6WDU7Jv@Rz+hInlP*<3mh5RxM0WxvpINqt{ktpneI6kU6t$r z&akQ_BsVSaiLqs^O)4c~SNahwWs#_ry(lS(8G0~UM0A!yf9Uu*%6imSTJq0*f5LHe=I_acDJe~3t>Fs@QD&O#r0aiNrn>l@{BU# z?x+p94Tvl-fAGT|>#Se>b0MtJz5f*i&SlA5&zk`VF;z_1c)~7hX$GBC{CT4mac5nIFsF&@!Wf zN}h)NlT;FTBW8~<_>EmO8n)WT5M`k*Ex)^TPXz~L8azOiS6PS`SDO;F$W!IL<5Ha< zO(HH}sN;U0{*=vQH92VUlHMYl>C-y}tjs0?H%?sX$kIG18ATFpk__!=BWqHwAYphn zVhg4(7T&HELhfLeOYXktf2;DH9cYpJ|5pfMnoapjjis5Uj_cvKmnK^awh7G#XyuaZ z2w)+QXV_@NK5_VH+a*+0Wr1AXGmq_qnM}Mp3kt9=G`A$*zHiC#OzYtf90WKUKZ?$}Sn2bGh)B1$B zcHAocI1j|;@(sOXPkwO$_#JY%0g&Xtq`;Q?sZXoEf1e~aSi5&`yq>5o+NwWUR`oGX zT6k0?4hZT9P!6bxWHanTO>(mh$U%u|l~lA4yRR;S(_fjA_I$7O^OPgQKPsG+`n*H4 z!-tHwXMXK_XKUOD@F>i?C_=x;Ygh6{1}}T-#`UOl~{8ybV}7LfAMHF5<)ko)G8dHFG8!E zdULIe#!wy)nf(OTAce0qq3^XujEp^O-k*lY7JMBrzzpz;rC_j=Q^Re+`mEi(5~@Gc z8nR&pQv3?TU3+(RL8LjsY;)1cy!QA_JQU@6nMo?qFWgVcIRr37&)jyRb*-8uITS7k zSFgJ~8m2_5IvQMj99-ySpEi`CYHUyZgQxs5Jf5tcZ|5+13;w40pBwYd=dlutEa>_? zKR6r@FFi_&_h2*kN0efk)yMq0fj9axCj{|Jyu70IP&IetOq=3>na-|v_<@^UkUEa= ztkX(S)iwPss%fCkm&!PiI+d5-a_fu8v@os8+&)T6?2fpH;BC~*XCy!AbY$ASz{xQw zgg!V%lIrZean)={x70kNB30i>BoTP%^88T;wQNSSmB#!72lJy>W209@S)dts(?I@< zPyz~T;CqW+ElSr#jFPSvUU~%3&_-?*;F0R8L6y zncSE;As_m|bk~R(BCl@xyV5HeC1!sN&E#NO7EnAW<+zeFgj->0h2KisZ5AmUz{ESz zy$ydF__`f*GXF?NX}5qJFh)*VHmISifP?t{-h8sQD=l;al%%$u&_pptV6-KT_Jt)s zzNayz?VL~|Q#}|n!;iVD-15xOS-D|VZq|1)Ll<8RH~3Kd%JT(Lc;E(km*CXBLvXsV zFKlbitN)-OHD`HV2nFXu%kUM6brJh+Nqr@P{<$3%Jw98KN6dB*NHRDyX)RRh45c}T zM9|*6`t zGTN3pXlrbGxez*Q=95)Z#iR#&0g^}wf-CEptQVa@8@;-`|Z{8gWQ7+7d4_ zqTz<1%y-df5nhm3?e%t;`Vly>EDnWl(q0aKRNW(<T#f#%U!BIeIJZ7QP0b&>qz!9?E7~2NSmKz+Bn%5H=Ar) z_3}4}${xo5!MpNuvH9P1ju9N1RX{{K#3M@bBm2}P`$s>d?2ingNwK`ebwuI)Rdm2k?lr6kbjW>eFQ`GyBM0py>=3f4^;5Zk6+#%8MR|`ip`NHWA@V? z3;Vo*)Hk_^+WfraV%8EoXD+T^IY!}+CGp@GxG8>qq&~@JwRexx^I2?8n?_Yo>Ypx; zy&*A;QSX5>cX}s^unC|=u>jF@Q^(Uec~bPzm;P*;)<6aq0G)Rq)EG(e_$@}R^CK22 zX%5WuwZ(P*xw}ewM49JipW`uIBYqA42jj}dE~4`LPQ>wj3EfaB)8fr2TE-x*j4l{o zEO9f-jqE#3NIDVOT_6Qct}00HQPE3kd%-!|nlkg}m?C*#+H21Rzn1L#7h~67xr!;W zPwXeY0 z9&E7@Z8C}=QW3bR0TcXpi`~b5^hZJWdX#h${cK`X!*6%bl4|q=z9*=o3VPnXMKZ{2 zS%v~0Ql+9x@Wqv30SiqI0`i4U9uDIw(MT)5X8#-IORH_NHMt0x8#cgu%>4J(zzgtN zzr@PG(vsV~o95>!ZMvl5xRSe=7324zFnhxr&1I5@b*e)S^OMYM)NYI|+<_^EN_q^& z?calF&S7IF5e}MBhu7DH*S(ra zNXPc-Lwx&Ke0S26ie1mdsl633RUM|6L<0EoozwK1dS~o`+(7k>6W}yAVr&+xemjd4 zGQ`x@ayH@^f$5Y?D8RpXDBlg0BH?LPw*YIyAPaD8(D_gEQ57(- zZV2VK-V3UqL0JrQK%Zu|ZTp}0SmdrZ{J3KyuTpdVR}J+oTW^zj<|7{F0JN^MR9We_(DZ(^q|iRRw6Y%+pXQqVv~nz1;1I3N3RncvIg3%igMLP z;;TDez~nFzcJ<*t?r+uXTY$FAW{quqSYTOtSzH#!vdmk^r;i&fOc5k>5cXMF`H%fj ztB(v`^IL~Fn0KZ6EgfpH*ePnchWxVaj0I~}&0>C0WOD7c*p|K41CIS7j$!P-%5WSU z7dUDng-@N`DiNcs9e4QogUHYY@y8bl_Y;cD$SpBK8*a}tAckR=DaVmmI}1RT4OXyDXZVxIBLuuI<0~k zL-_I21iu+qgf>jaFOHvTbJ?BJv)W9#^X~3Hg+`wKm3`J^QM8gMF{It^9}KgpBWWTS zXaHFq2_#}Rpez1(G=x^Aol-MNONqX6fgusvaRcoDIzcxd*Ym|qvX z>n$Cl4Y3PDE?3?+L;SPvtQRsMbo!>H!e;>KV57R?ri?NpVsS-s6^kS zLBX`DU~l$?I^pAxrgWY6c?0S-08Sp&nwq=&_X73-QkC*iz2Z31OE&bf2r)uiA^wdES5rO2IZOQYe&kBgSS$n^DnzfQNX< z`N$y;s7H01?l73Qc<^nvGDy#sF<+P!VFg_G-leU~tm6K^Vto$-HK zHB}=g1!=Hn6_Z%3E$WE-hqvq-vCnQx2?M+Wj4TVg82?Sed_xtgx&3Q|jw31iKPGi` zg)`5DEQ@>_Lso2`**_^{Q|j}XR47v>S>>`_WH+5BCtNr$rNeq|Gjnxd);p%KnnD3? zrK>5iw_$VlcLZr=-dH6je_H9wsX~ut&b5}kZSt>>qI7HP6GJ6gc^FUqM7^9l?qaR0 z1mapCL7)6JqyuT5ny8Nj-3?9i)aaPu8);+N(g#_#BzJKfh#1vW+O64v7-$-VxIIcH zecVp=u+|cvhM&6sgcUzEiW)^VwIwz|h%4*mZ;yYF`S+~>IH_WM00F??PAkX`?<>z= ztNk!f_ATwtJ>?!L_n|mn9M9hOb|X}X-_7Cf@g6^dr{{<897$n2qBWmU716ryLufvz z`a9{v;z9qvLJF_)dWp`&3l+mMkThx^b6{0VieXC(ELFN+jb({$-#|ia+ztb6S!K@` z(^+X{ao{TP){K?)D1Yy*aY7O6J;s9X{$u})Kq_4c`I1G<3$NETB)C0Jfru65DSf|n zQlFLLDe)R-WBZ9XL#pmJZvWvI936B1bqqUyetHDQum>`SmxD$@!c#>f)UizwmCwK% zqS!M4SB|qWJxan4Lu~&xG5H{bQU0rHY4ts9h1kn|95$?S1Xr2brpW9b54}CEMckUg zK@P9NbG4vDXd)rU-OV0}v^SkoCnC5*G;)}hvUb}J&tzTGFg5Y=_Zbh= z-Ofkovy}b6qx`1_KGLKxL<^y~4Df zO$)vVV?8V)(L6e{g%Ijqd8k~BJhy9=(u51_qn%Z;z4uHf1;XQ}lM}d9nOSwLSswhA zsWaZ-w2uJlCsu7~vV0QT?Wvu4yn49y87{3uWldKQq zoxlYih9N3Z-W}N;=bHvYHpM*WV>7$iZqBIPkc`b#A{DM(L(BE(u3SUo5LNVaG6wOo zFx691?~{ryLZ5ntP-pq$S_POLfBs&%I!Tw2s@r`_>F4EM9pEfE_g1XOI4*iovAibx4aFG&!DpaK!;1QG-! zKp+7^5+Lmh0R+puGw<{K@mt^bW4V?q$sKae*=O%-U%Q<9zR>4TZ7S85Zjs{S2fYtA5}b`d}hV7VZn{Ypu;4q_kt$TJq5Z$YhNV zWTMSK6l<+^BIq~A4ZViRC!(|%)uy!CEpAg5Ly3;`LoEgJkuRYp59I2OyWR&+_$E!& zQm2VB+F1mBg|3b*HhMxL;>LuO}n(-VeYSaw^jlQJ|s}iW!Z*iR8`7LKG9HVPfD(){EnvR z-fehq{^k#N%M0vaThr*Bo>rB@`H#B(prC!DWN4@~znJSTSf5~y`&Az<$>s(4At}Zv ztJzwwGPL6$!f-=l)ZRT-TWIzh?UL&3+LI@4JJJ}KA^(lZ&EpT_O+Z-3r{pabFCBvl zm<>j>$=s%PA8H6rGYj={-Q4!nx*G#Wfe#gZ+y~2Cl9r9=b7vP6#q-Y6#nSl3h-r6t zRVvlpN#J)ey%mqn<~;Q@lzCe~D>{0b-89{G4Q$!;m-tSt_UB2pa>dH|=kW1wqxKez z4CmBP;Uz^~;|4@VC$mET+Vg@beN3$urnX6sxXp0l?xxC}{W7ug{UuxA8nm_?Ge_8G z6y;g#OESZ*wfDog&e&VOs)NG@`X((CZ)+I^i4;XYj$txW;~-ki7TJu zVzTQ@e5~KP{G(#CXjr{#6R?f{uV&sctErWRFVpZn7K)7=PBu6#`TW(R?g-yfsdpAN z@02AyBQI@K?SJEnh;#xeXF)$o5!fDHk(Nl+PMF#IKv?WiS8ysg?dsGH-0d8l5Ga=F zVvD6u9F4^nJgzO%V9@oX=%;&;1&WT%mAWUq{5ZBW2*bxUE1g?3N;WWhM`%uvjWkO% z3mMFJ*}8A|b<;#ZLhzcM6dI_dOkXi?vNSI6c;nF9P>6GX1C~VDH`43QOWKpxh7?3N zVjIZdNXvB1*}Zb)Yu<&ij*Fmq+bS;~74hVTpf3epe;IL0X^&0tvD{QCmPJvTaKGzUiwGy~a@AGan&n}OBv zJ!HjrB+H1Fk=+4C@9T`Ub&VT&QJh-OJ%R0P(S*_={pqYOo>_G;GMUT_31w)K$DvG< zq4uN%+2_AUm<9sbN!E z=|>7ePOw%kH~?Xodwb+Yp?fbFIxxj_=RHCDJbepDBbKEbTc#J2=HZ#<=$SSsSz2sb zAHB~vFYE9K^*#jBaxjy(*q;Gb?G$(zg1A2qmZ$h&Sy@(tc3sz@Dk?qi$-Di83~kG> zd%=;%lHnr|SX0GG$@o{xZ%6c=7E=u|G{r_b4L-B7*?{h~L_}JqnM44&(IGMeY#&#H zSKQ(*#+mmp;*^{E^l-^DZA)?p0(;8wIC6|!WUV{dNNRH`1rMagIVLEwsRn7)F83Xe z&~y7QrU%z>CiG(3vvT1SME#xS4J5}S5!`*aSThFlGrJWtnZRfwU2K{TU`{hh1PVtR zOrUqBx{(IkqpAjIp6A>B*i^Yc4mVxqGy8DTEYBM2FyW}rGUge6Sz#=>1HAIm=U*Ty zAFOUpvm*Rm%?nM16iE?xb5WGw22KC02-JPrVDPaWn#C7O%`h5{AKzDii$nbt=qPkV zE3B)(M-Jz(WuH-+k1EQ!6i9;pH3E_;HRTo%bw-3TfQzE1W3q?I*VW zY{`frYB@x7)SOw4c`QzKY(<`;J$5HnzFT6ZzIaK0w z>nV|WR^ipPmXye*QrE6mSCFc%G%a+VY&^~2zHGvIdci2nchgqC>Dn`whAtJ=jGVY? zwqkWcyA;JBu#OrM^{G^3yiu?4saBmwk`(A@yaC z+=k!9$vO#~JQpwkr z=ym&sK89rfo}YGe?3970kCii4KDh~`g3W+5KWXI{j+>8%cusb>tU7)WgMrC2W8^Bq z!!+vxCkdS%BN>=LIRyhE8vEDkI;;XiYU5l;2HBl4llfPBTT*x5Y}SZAx}!w|pD zgb}&B#~`)y{;AB9?}Nph#5i+`$J?yfo!-2=gH1X9(keBUd(`RH5K}5WfAqHfDdoG) z;f^+#^w4DXJ1D*6+{2NV>gOz|P0w26I_=!w1=LFm4xedI_Zw{Y`-A3P@EKp-%t?eO zkwRLKO3@#wW*b_Y3>`z9w`~{k&3O12ZbZ`{sVfpUsmJM_JEAL3U zT~O?qOuvuja%k;`Xlb_Ww7_~6BqrXUv#YVK%?$GH%L1Hd7BD(4m2r3_;_%9$XSQ?e zP%8;vsnjPp^-yY%RIKa^qNGKg^32zX3k(@_>U3q%IhNrcY?&F7<(8s<>?8-1ZArdp zoA#D17mtO6;7DWOV8!R-!E}RL;3(Ps#f7W^LYiN*9=ma%s05rz;Sqz_;O$+AQ3F^jQISO$5zM}j1CpD z@YeS`!-THQQfYyggcYX_Hf<_YvYjZ}1_lL$aP`BlCT%>6`~7Ay0|jFQ4c;7OQf zZ)H$e6eD!(F*wyfOiO;e)3CL_q2S(NO2u&(#-G){QBRvXp4f-Ys#{Oky*=MhuSxa< za@k)Bw24EYb%30g`mcs@RwTy>8S2RT{T?`$DaEFLT&W z`K7hywtT1E+alYMa2Qzeh}BiG-_L3FMBIz>`pNa3v{#N=1q3W%_Y_{A*`bOkdnDM=i1n++&$?u(kRD8e3f^jwPLtp2$_t!W+7+g6r8j!F-RXjhB@qpafEdqmTnDcP-ezkp_&uaRY9Dm_L3f_-pq|56$X1()U2|%Gn zc0{W!3Vtnq{&nlNB&Z@k;snEztzgga>lDN$&}>i-W?!>x~T_Pfg0r) zP1wPl9E9{bU7mKAK{u%t)*5c1?bfXeaA6h>lO8g*ryJH%WQej14YyaHi*pnG-Q7QH zINr5N3S4GoH53%VJga0WQv}-g<`U5DCN-A)keQOYnzNk3^y#D$oPJ^Y5{|>O-7x>sFNNPE3$7*ox@IfU@`APD_S3*qT+q#WF9Wb_sdB8>~8Els;YUP7b?D) zEKD|3Eu)N?TUZzIp6*EB{5XaXemh)>_cWVU6Zl$KO2kV`#-SwDE0)&F&rivFweBOh03~t8WiAT0%59Mo3owJLXw5UFJS2z1J%bV_3 zRblb^=|mLJjfzwl9FxT+!L{N2590m^Nd$pLnkOvjIk7(1@0c>)5-2$IP`imC$vW+- z-+L23C+Kq+Gy924w9p*5Ot{XvH0W0@P3xxElp)8I6Z*5aN;kZ$&EiwI((Q@7>?!xx zeHqE{pM76I&m%|g5hGJ=Rg*$r*^sK<*h+F+kw^WG4S_mB?~c?NbX1xkUEF(%FtYbw z>q!;_=zNr$Jb-}H3qL=}zgi0lKB7XmQ%h4Hak8~ma7%)K#?{ZcVHrOIhmZ&`D&OCr z(~Db7{7bXWAg;GDSC=%LEC!5+JcH({8q6}JZ1gPUQ^|gyL{C;~I(c|b>+DYo+cybf?4LZ~Q zILWcU#B5)N6$O{zQ^LNvtu#V+~{R5rT4H2rO6ueL{8L1 z4+K8RV^8TmH7FQ3YO0S?_ZCCzI4wrju9kl45&}WSJGzkk4tip|-4deaGZt@V(AGXy zENbhvbw4kx6fXis-Go`)WHPsehghx3+{-(r*IY58D0VZK<>7j7Iy!Iv9goZ$Pt7B_ z!hlBMv-;vH6HgP>om<@>5MPwN#rmA4yxB)HF{Kst6f~86=rN~ul|3Lhb^0mEj&u&3kkS-!smGjxL5Q04 z)FhWlX6>=Td$}R>hJ?70cL_Tyb=pj*>*r@ZS~BaECChqO&wo~4{tARhrpAYpAWf~h&MwS-nVBOkSLbPMdCn}%@otg2 z0CQ^5;YvYHV>yL4Yo>dklCrNL?Jb=#w%al>h=`cbOj%mdKu*>vEI~2sgjm-Wo3?GD z$|1jEoz&fmCr>!80i_-6I-Z*BS?tBh>W7DJd`n2h#X%_k_?Nn83=u9Fg=9Z+2rS*F z9$L6+gvY)e^XdL1qY}c-)p;-X9^#$83i6O?MUw9r)luuUO!8%0lamyClR8>`w)Q5g z2VcPH^}{(@@KPfccAkwH2jYq^!ICj5jwgxB&9d?#ZZM@{hdM7q+$iYJE(R$V=5nO2 zz$T}ketqcS0@K?^I4F%44W^vw!#_e2^pomFGy@n?dL$xA9VXc}cpkQ6 zSSRH*Q+=3CkV$#q+NBYUl2ddnWysq2GhLx+2u8tO)pE+JU^A58A-udLq_mV&Bo0{PM4V_NvxolJ0< zfp_m|F}1Cas9QJXn}y8zVV(EoGLc;*;i61J>qS>omefhNTLElZgM%%!0AnF z!Y6CDO!cN9iYe0p&9cZ+yR`E|0sW=<&nXj~I)2pB7FHM3F#-BEXQ-z4Q#w4cm)BCw zt~N)%_-)P_t?T#+shg3<&D{QE_I6jy`{q2&o00v+K}iwWW~wF05U!G(b7?Mn{hGHI z9VEBCvLjhR?-QEY`?`p^Zk%^i7k5{KeZ!>5>+$BnPH0fEmqooF+*||K8NlJB;e9Ry z)b!keN>6!_+MdQThpsCdHtKb+*%4eX=LPLBLMyz#GX^%WbxE-6QZV&JJtNA)R~HVA z*BaMv_p2?Tq~>xGjq0@wake0rhx4TL0dAI)iW!Z==RdQz*Aue1{5~@^atfjJ%h^%_ z5;<-_X0r9!U9F0aJEwbwWW<^T!~EPL8^E5b?==jMOlu+U^qyW#3}}}WFh&}jSlwZUpLLr-vjV&jiQIa< zb?XY+an(6RDS8=hUCU58h7j%qn@N%!2q<13x5zTVRN$=Ggiti_t{-v7V z0S9~Bm4BBB9?C!nhJlOjL9mswvzzKDJCned3pn%csYd@($Ihq?bDKSJc9YZu*7BOZ zTSGaOtN_l~+q`3$jO(o(kq0v~`ihV1M}CZ19ipJ%@cZk$)AwB{l z9b0#H-XxAog!QwIO*>*o4k4WC-8cUF&hI%f!ELbA&=5OrJ{XUK$+=HX547v@Zbnmg zJcN0^-eEp#Vav~C@NyYjxN~(r-j(NC-Yt7Nb0eprD3~#2AkKNMc1%|Gi#W)OB%KmZ z+N4EI$zN>iyWo*0O%1eZr2UR%LFUVM3cOdkVRwe3-{FXbC+nI6*@&rh7uA9h$d1AM zWn;?#0%9}FHSkLKP#2i(+hQhQ%)yRQbc<)1sJ$GYF`Q7P$7NJM%!s;|GdIQXlvOMV z14uqhJ0@3B!hizZT$vtW2W9+G8CbLi*o9WmL=$~-?L$IZB{!FM{SmezJ4mX~ZNjUc zQ(Kj}=fJRaW!)`5#wmr;`dmwzWg^vXB$W2jXxNP4=UBfT3w0SZfYl?-2XQyX)Q#rc zh4=j*xyK0+sOX=vSCU+J*SE4Of->D6R^if-)Kkib6qkQ|nIssda$_UpSVsS3OL*jI z!wc2ar}qcDYGq8|$runc=3Lj7u`LE*R?$$Rkz1%(rf)kkR6v9SjeViCk6?F}LGcj+o5a{e*u7fQG$b4v zNn8tD*!?mhS0iZ)GEVr!=5j1?g2qw=f}(X(`Z=fBw|HMDyOOBUPi;unV7E*sp7&$D z_xX^JN!dq9&Mo9dact1f*8@$JE{rgu%T2xohokuU2wT^jcb6L(mmNc+<~hTJr?GJ# z)xHKC-t&@Rr^`CN`KFRezAT8Ruj0xv;yH;{drUI-9LWT~_)I`OLX)35G&NH-XHW7W_2})WNiv~AJPDK70u-ejd$=h zL?thH5vLRoIW6*&>!d3y$J&24p_LN56&^y0Yrl;-j|PGPQ0kNJ>S(C|899`STqj3qJk(+X^5Nx%@p z++4X5efBl+W#o%?M2moNZ zaCY9bd0iCs#*$C1lrI)qDvcUYM7hUH%XXZ-_}EN>`}xTc$(&^XrnIQ{VyBzqX|aO- zDG#bcKf3AVP&LjCzc0&y z7_$SOQ!SE8V^RhSQ<&iUaUG_9^R}%v8pof|cFCMWs}P4*Eo3jt%k4ylet}A+MF0%( zmc;ev+NaB8D3>?A3R)+cJMrg3ueCs0&VE?kaXV%^af~()(ecWtqBV|rId?h_JRx`6 zwx&&i*S#Vg-`Li0#Uzw9RJz61ttr8%v3U5Jh&wgEzY=VC3YpkzV{6sy0k?JOw{(t5 z9h=`GBtOYvd2VcN`JCitQuv{ck5sye7uoVsB)IKK#$>YSdKX(In-DLj?VH~tReXcw zq-yb+*%AWvdaW*Kzk{aF2xR$k{NK2VBMT@xK8PfW z^ov$AUGgdE?D}Fd+S8DO%H7DhGT(7#-#yLOYMT#i=bYAGgV+Z?NN;eQbL4Ffo1{kk z-V0A>N`3C4P&eUaGhjW9Yi^A=`ZL33j+?F5he8rs^CLU&*~{kM6O zrd;66bMdvB^Aaha;?FGA>ch^l1kjkYkmGEf0}$FGTT?Y{{fH29ChKbVRgX!mhxHED zPO83LRWN;KDuz7<$X2aXQP0igEAUhK7h&xL%P4$$jJ!*2@YAZ|n4=#bXiZGy^qxj& z7KnruB%o7UKQ;!t_XZA6rXi+Lj*o0ZKFeiz4z_~}%U6o_=eLj0X|1h+N$&}2U-II! zT~&{yxOjnC44<`2DPG#OXjAtC$|&PpPM)Be#f69LJ^PjStN?7e7e5TQz&f}?5lUsw zF-08-c2rxs>8L3h!Q3qGyGrL{sC?;gW-^YURPVV7lLXEj8%UrvCqHW)e~{bS%!#+! zx9cW8liI-a?!Lx!jHk`@KJmIR%J{xi3a~XF*4(}kv^_0Hb`C&|DI!CASPhZA2$j)d zZb=^DGp6j+^Me$B7IITbQQ#WM$@Ng$H$^|NSYX3VxHNlA`T!M|<3v=Sxn@3|S! zxgu;BQm->2Q*jvac`WL)u45W`2o)QyXP1r$G0ei8xjPTYMYA4V3RnirC-Zohf*Oof z$_mXlfm}az^>T>l73EE(tDOvNh9^l5Chd|ySxc1y3bX-h>7EHc`<`{{Xw`nd^99-v z8)}kqjmy@o&J$xOqW(?8p>;eilhyf0G8s2*J$%RUa2+$a%(U<=fn@O|O*k`?N3dBB z29y=GxjB$v4jTKaugy)-Qo7B}hulz6l#FC}Lam1GSAFRG$uoP?G`84b1bontmkFtU zvKI@EfyETYmD%2z*k9YCFW8ds%0zXTEuHT{>P`-((A1N2OnZKX(zPt$v6w8ip(t8D zc6wA%$lr+mw$!Jk(+f`=QS^dhm(THwnHHf|wHc0a?(tq=v94%~H}zNx?{+WW(zZ7+OQEL#kK~hbyoNOx^QHs{Y48Kpyf$XP1EqG|RY+j> z7i^XkTK}>}|H6bMaDMI1LALJi%kGR>h@O$QU4?Kv7FlPp%LweQp;f#BFp`g?6-}ZD zvQ=KRx)GgG5&|yjDYFV)=Vxb!2KBUtwjyGWfpwq5cgf}YxN=)TCSYH^wM;*kHXOP+#-jY4V!i zy@^Y}rg%zQ!jxAFBZHgRNq!|36QT8bR#y%17IF-23R2(Rh@2s~vqBAK3$*#}{#7&bj6iwo zOp%GK;boIv_Ycy zD&_z}T4=E)pL618nJXRun-&?8s7%ch+#K@gwatiFTceT;gsITSPZArtRB}==r8>Nc5SK*6*b>DI=f!pU6N-Sr5q@` zBavGUFDqyckDNy}oqA*8m!6c`PhCJ@h~i@=eEM*rE~nEc*ke6VOO-CgVxl3MXT!p` ztorrP-A8OZcl&F7U>tne3_gXx>7Kd>E7nDSbOB$S|GgRc_46Z+bGHtCg$5!bua=vM z4VoxDryz9*y}i#oi>F=?dR46RB!I2bq>ZjI8%(99n(hmT7^&Z!Dvm*hBuVwD*KysU z4vmEI`4+bM4g9iqT0EaH#?l>oaTPq$pS7)k7uvtu@qmuizje33t4AA69$C1(}zpg*8hK`xXs>=# znAZ6d^qtA0t(^rD`=+2PmQTMRR2@#2{|Runqn>so1xG0httxZagt@e({zRG3rmF~@ z3wE{(f${9C$##B{19%j;So^zw6a_hHzP(OkA74ru2^K->tfDiC>IJLRvYU+)QIbU)~^CH*f+p_ZW6~LF&;VQKc;o+8NvHF7b6Ak604|a59#m$Q_qV=yYA~j?p zkwOZLGff8243}C`FvKvhv)PUdOc_YWZ9qW!RXa^jTsx^I@VDwJQX|FGwvC@(AX z3cGbD?F4Afs*2*ml?n*3U8DF&3gb-1eQrIfNtpsRe~nI$?yX_2yJUji@(j3E9MUJB zGs3EO*c8r^TTM4GRpXM9Ev7NhSBtP|MtUFK&F#=v2D(wU<|1?2Mj&^RL(8WKvXUaF ztQ2-IvnAL(o)2C-99&@IeE?9S)W_beZpnerpn{ul)fX-N9m2vj#QSuRjInYS@3}|M z4Ygt4tj&yHH9nV9SXqVNaYT#$cJ~+R5kxSqFkdfX4Ko;RpnRaaJ|b~A7TpMs+JIJl zb~8$C40S!lEmmD`+A*wm3-%UK4-7MaqFbV(bIv^S67n}_qk=Xs2k3_V;E$7YJ2s~u ztJHXR9hhmz7E=}sTQs3nXCGDgtvHfd8D??FjzF#qGU0@<%Se=U94k?-^)6}Blie9k z2JlyRFp``N?=Q=1*{-T}c~r0Odx$^^x;X_RicYPTI8^8I?!gAX#i%y}4|HvQLShfj zn748cZyJMupnJZ9Y|oW>S#e1V#kYf|gN^IkvgnAj^9|Gb6#Ni8@|stS_WX zNB=a=B%=hwMye0PU(EG5E{M;M@9^{5LT**r-l5CgDe%#%pSwDm6}~L9Md0j|WDneSn8ASVLy1*q6-ccw7LC)#{cPgD0%@Ud5&j1%XEcXMrBAyXmX$= zkJ&Kxm&(VhiqJJ~PU>8penUhB2eXdR^as(X{!=tIur5%)f;uSN^5Zrt%S+WGH0h zr)hIhQDMO5fv?YP0g-C;Y+{Zv;GN*pno@mZv7eb~bW!I=nnpH#4R0KG<@oG8vPc?g z-cQ3X8;z@%^KL74het?EENN|_>fQ1caFUd~Ik+O-ei6LyLCObn$RJ zWxuFkXJ^N?L0=-I5}3>F*=nw!HqQVT&6|#|<K?2wl0v?sWvteF$YE;bnHyeS}dJep{DBA^3;rOKD>{|Pvhee)JcTK#_Y?QpjZMaT`q2n76(Fdj|mI8rNAz0g*| zo8-*q(C2h0D0TJXh4Zc)7U8gAT#nAc zv~~<=B@myW(PW0Z*fnR`u z3UgJdYIo7dRb`%=HjiGO^bH}Vgb4$72;EfI*=*!u*dWNv{9b7AEu#KWs7uA-3G&#c z+D*9Nk(-o6U_WQ8K!t&bs$Y68ZCb&Ncv1bzk zC3N!Qr70_cayM&h-&-GacB;jOn+kU8+6IZ17neOyh|*rf+WCvb@FP&(BuyOU2@hN| zsuwR^?P9pq@;(yjGd%2Ppf6+@q2SgD5%~@K!qmx; z-+2?T-?Pb1^$NfP${H|Z&waGx)o`l#Su%{V(H<$(J=L3fHR{VjmU--L<*UtP%P;V^ z-QYXn>Y8(B=w?~LXiWHJVgXa$Y7M8g7stHG9AUiqdgH-ibET6CFGp7lK z0c4}-*U~6A5h;NFeAbBW!)|~FOKq1*wN99+#Z+r}GnY@=Az;fwV+2-&6N_%Gd7Pu* zH5~m=eW8JCcKMG$vx$y8i-B)0P1YC-@BV4H2BU9Oa%x~pIK1;Rce-?cUqzz&nXvFo zk)2nGU3Tbr1_drWRW!Mh`R8Rrza3v`l&Z}h__m9_-R?vPM2#lw2B_@CCi?!%zi<(PN&8u;q)~wh2-me&G-BjCuanp+MrcC_c_A~GnDFcJ#NOzw0l>3PMKA9M1 z$74TzvAT9Ol%fv5Odb`V-^{sJ-d_CZ?w6Y4{{NR<^BR&z0*0=Aik25bIeEf1e=?7o_S_DdS0}3zB%zd$< z?+|&;I|=Yh46dC58_aG5A5c$^u>4lCUyrhIwU*x@c9a)WFG_cP5#bkC^34pSKZNms z_EGi5Y#*1yN;t3cU%GPt?k~RlfFyrYz9D-H^ZD_s@-V(wG|6GnJF3c_K4{*f{5PWb zZtBi+!1EnP`#Xv7XRzwrj3OTGm1rx<-FkndFwf}kROGuIjpXnBOd#^L3V%1V#VfEk z=8Hu(u)O-7gYEHJ*T<6I8OPsDIG0b%zDddb<2H!!$>9qhQTI-Zb?@m`mJ9i{fB4(* zc~_P0$xt1@4|E0=&0h#~Q<^x;aykg&P`8MwPp)_Z-(Ejhj zmj6*Oi%jBp?ZF!s%1z(<&>wH6{ptVG=Jnki+Mx$Y-}s>)L&c0eX8$Nl{kP(nzp!8u z*4z7ktICjcef^zr|47q#iH9GY1^*w-oj>Fvn@`ltaYsL+eG?r0Sei3`YtAQq|G7zI z{Y<^>a9S+?3o8HpQ2ehvXy)TR5A!$uOQoKX+#;J_a)aMUc*zaUo84l;EHa5DH~2Mu zSaO3uQkbyt1?s!x2EXy&OK$Lo&T4@fF1f*PIMh-!_(OuXi25!?gWtHNrD*U+BzjST zWGNc_Iuu%p27jb5_KT?RQZ)FDTUttr{wNW#lob6Tz2kfErKIQ&WwStimy)92gp>bY zBt^60cif)u1>jYx{_~>9QiAjwpSqMF{hD;mD*K{j$x@wgao&+9o~1hB*MZ%f{wx$l zmgSS?b8)3;DP06}w3j0q7eA?RuJ6f95BI@z>9k)0l&y}Xzq_5eA1~7L27)JZRq;HjaRjwpp_ow=C9tQW<)*4a$Tmt)3s3qp~ z)>;j!9MTAz(OoAaBE6i~lD-YtRU{y4R%QLWv)h?}-2(5*Yk~in*FG)0_2?g{m0d<#N7UE^X*Yy^X(&Ev-Y;dr_cXZ ztL85V^4h~!0^*+KuQT(_1Msf@{s6;`|8BTb>ajQ4EzRd1lk!7QSe(lax8!xd3-g`| zEwJf_B;|*GNNo-8e8y4WoVSpKXJ*wa>gj*qI(?MaS^QrNmvy7~WNk~uzdnA_#5;bn zjjt{Ly7!rPUlrmg zZN)d|gTHCi`}*xN-qDPo0ol&5OIB_vQw7|Mkg}e7+6M zXv^0j=--lnnG2hEXQLhgAG$^4IxQoeh?)QX*uo=TSN{x%{fEO@ulGxPkQwo>d){C0 zdfsPH<>&v^v6Gp0RN*iY?e6XtOC^1;{C|ILh}TH<-wgNi!NDqb<&1xO=)^daZ$rGT z_}`rSTJS-IEe`F$>Hq%3!nXfzxFwgj80eQ=-uJ%n|8|$R+UJNA0Biyd{JHz&{|KN< z?(b`NxxieP+~0R}a>3g!xxWQPQ7d0^e~bOetU)bBeDlHKH)gaH@qMQ(3*L4q;#;gO zOA+7qq2PiKT8j9-qAp7j-*?Kg5MVAve2YPMDdPKoFXCH@@|KdEi@5`zeJ&+AzjBd$ z3|z>mE+sh^gT_)_@B4slsjjz}HZ0iEQeAIxRh4f=i^_;gb-l%n>PvOK1-qGlwcvx6 z>UxW#wxzn>;U}x}(JF;BnAZl{%pBT|*e|v$jC+BzM~^`+zQBs^9c*iGG|G5gA@VBG zeVdgfMnP5H4<%(nI-B^77JmOWJQf!wa+X>u6^fo#?Ag!fFCWfQu!019}WCD zsr~N$@G>2O*geq8%yr-Q4S$OT<-d!cGj_;Vh{v0=x>aE}@levpg9$CnN`&LVSn0oUZS$9+14|XtwXDHr50MK@ol@{>eLgZoU1*sh-X}NA~;t zKqq^4 zmE2R|P^&KVOkO7wSrAUJUpz~fvgQE={Ze-wZ_CWCoIkZqo2H|}8B^iJ^BxJk6{X`b zG#qTp@%tBd=E(j_NcLusc+FPfuvk?a`4!Wi_>zaV+)tzv8!~2u_-T!rg3J0W-eLao zd&ZW+)rUb>B4K5bXyAiFSUl8bj3w>#H?Xvz5E6tikzZ|vUTqiX#(5zPuT2^;5m-t5 zTU81xmeP7TY$}L}6qz}V&)k=1clj8Z(xX7>Q3VWGpxaMsbBS+7{!ulKA_TE`yQDM^KOOoRT|w1jsET7N-w4 zEE>kFM`!WnCs;lODU~$e@tw!~LCTD$6+N1pND=^CPWLvstF%=d0I??;AHK$4?^Sfh zZ&gsFEPDWthogsCD*(GEfEwl^oLozFxS(%1bm3#}RRtCCR8ex}L{(s7(_qHV<4TwW zigmv(p}Es}Fp{eu`>`cI^TJ@F@0bCEu!0lsAb&1 zD%pe^5R%LtEzW~<>7zgSpEKmt#N}-yex7PCu}ioQ`Q(jmwmy-O;(zuZcdEtFeo*A; zljmm|<6``^C9M=Z!~?kT>lthkhTDPk;23yRQ+?tJ1?w@%0l4$%bpUFYfW7Jv>4N+- zoJOFS^8mX8Y6zlzFrPwLg67QD=aHX2d4O{C*RV=ajfH3tH@(K2E+|=ei6v!u*oA-q6IYp-uh?Ql#g>4 zYJ?$J9=jE&l|n<8wO#h>DwI|Uw_P_>$1%|V#eEObS?V>O(MYH-67L?x8ih_~Y*-fn zZ-6kfKp$^P?#8pW0HVb-QN82)f+ss14O?(lq2iJHuIJPTRO%pUkZNN3k$QwXrjKpBW0IUoN+p(Y@A?^D zi*e{sZ*4bE2%&Ut`WVtn({|nmhS56gp4oAyTeriKG$W^i4g(JqTv|qOP*uP>1ZWeR z06(@0X5yT-Aa7ms>^Ty~Y!}Ejz>IC=($@(T7*WI{0V(t(L-oF>3?MO5txZq~>-}WI z^|-1i=Q0|AbR4szTr733E$lDUqxa-BMefCkT}wX9z0@#m{?!wozq7R&YH6=ABLXEU zz;=p@J5P*H93R8TEhj%G!sMncIBYHpa}Jnf9Vo_rV8a;ig)5Nj3O~{tZ6_J5)wsde zE~`J%6~J&b^MZbtUQT&VjQl~bq|jWZy7EUiW*7VjXWM6Z0YP~@*Iy(|+Y6r%VuE&Z zMzyP}f$DcMq=2j~!0;6h_{R}4(Pglq6`4q>zEr|m-4Q($w~;-)+fFqvJ}{vap0eN#p~D z_A4MbHmuSgd6Ta{t19miukjV=PP*SsKB5gIl-;p|iI%^P3DcO4+#X$Z@2Y7DoYwcL z~Rk&WE{fCsJctU2jKj*Bm+GO zgCb#EPP*OU!JHci9`ZhYAFGne3Qj71kEtsK`Y{iQ^xnd?K-Om7!aQ_`NTOkOtUQHj ze>y6H+#_KBx`~aE|1-o7wSLsxy-nyu0NX8cqWT!J!@!x8b0yhMm)vBZjb3L@B;gKj zCQw;h$x%A2PC67hP{sXt*@l*t1WN26#1ukY%0h9W$qkWKxlH`&I4>f)KValBzMWC{ zu_ft2wn26C4l_ki{k?;OAMb^-RtTJVFI>tD3Wm@P`iG_NHuztIF#SocrY!!p3~lA&=tIFHJs-uUpn{$C2`ZwHNW2lK-T67JG9D$=-6ou;&>Jlh;GqxD9m{ggAsFU~O_7wpvbEXDH$wE6 z9qB?Mt}oNCEL}m50Zm)SQwI%+M-Kj~8#Da~#nUnZT8&Ip4vX(%NbI^xx(cNvk3?MW z!npRJ>Gs*Q9-MDdW}$wET&dJ=5_snz1*s`I<{`TxkIc-ZRt-Mtf8!JHb|0(swSN7G zK*hV-kMUeS(1sHj-8;=zR5TGRyThH*LAG@rHkG%PnVKpSuL5!U6iQ2{6AjeCou8OQ z!skTpxW`o(DjC7UrM?HMuml~bLzb~u1E8i*7#!u~yblN(5U>Y5d7ner541rWl2rls zo+9U1^y3$vgFrT{HfNK!%vt2M?DnqgKQD&_tYZz1ObnFbb@NQZJ}Y0*-w|XRne@I# zifbWYpS#13LT#o>9S>|R@6QZiEc36!jl|%+ay9}c6kIgr2+t)UJf5-q16?YFqQ&9Q z9NCysFvq>*W}t+7y&0g>8u{jlXBUdy;cAm1_AdxZc-4lRK?2=5d|2wrW1fKu;uz^t<&J%t6oo8M{dWe*v3gSJ`+CUBXa~M^M@tz%a(wF$b5o5n!-* z5*h_m#_O_R%K9565FQjcz4OPHO%5^QuVr6fxw^YpVx*|eps-4nlPg$0)grn?jKN41A$gif z#xXg4$mHP_ta0qP^XVxqs+=1hmyw%OGej=nY8gB3|a zXqUnEO5DN6w$5w%i?KXq`Aw+YjXHdzkmVWH>s5>sAD=GeI(*3LPCKeA_=c@ zu~D`5H{andPZpDnEI$MruG6RM*(LO=Q?%}69fQ{YGlN~zJ_FO6MZ+pz=$X$M2A1Jkh8kat(!V-JY ztkV8~^y#wt>Yi$J*MJC^K_MikJ6Y}mYB6;J_Rs{U{=a~rHi7P=8QSBL#cwsa^!=`l_?aPXe*z>{iRi0E_I|&id5x2 z7RfyaJSfzvlPZ2~H9~Gb;B`wnD-f4XG^G^VONc_YNHw(BOdnz3uV|ZG?Nu;Sd74W^ zJkMM&5>^*;am!kVs!||}T6O-R)GEex|GII?XF}vZ>dHCo>>wfE8i8)A;tT`GffJr_ z&k2^>xu+5@sbvq73;hb)# z(h{X`ol>omov9Cyb*o?TpdRa`vu)T23fdFO9e$_E=~Wepr?Ytqc0W;w5g*FV*J`=) zkHWil#{Qv5ANh#H$a6|XAUmCSK9CXI!P&d6CmMn(ZG`CKe;SHra|XKd?o^@@OB*-b z$SwTnWyCBiO}E3hBc>+%EV)503QrYv$3sF>KkFzqddU-YMh}3!16X5HOitY$FS=G` zNzitilAtuEKc{{7gbc}D2|5}JlKvB{?bVeaGpPI%(BG@c*TbyMg5}~804Vf<5YmLl zsS=yosV!wAQnhad>|sPS*=O1g#@;*KQ)+uzTUSjkl70Fopa8^p8+K4lXDV0)TwCRZ z=Fx!T>)83jWrarp9oFg6OZHx;^nn=LA}gWtPxfAu#lutJX)7QwaBEqBrj3r~^n#E*o{qf=(BR*q#4ANOSRu4Z$F^(g_B=(6jlIMa_hqUJ)XJxD)F zV!Z57-3FdCc8%E?ab9Ws3Usys*$PMqL_fOh)M!l%G{nxpQmEWn@%8RMbtGvt!plO# zopPlkk43}c*K$7#SoQZ1kT3GzctkD>L*in1aN9LOAFgj5KaFxMd{`{h-A#}E7;y?I z>SIZdsASV^Lo%;xp83bSeB60h3L108+(YHnSaAwSuSb{IrUvxP}Yfh8W11Kk=Yo^Oo^O_1Y>rN7s-bR>_k z0?^jvamU~~9F@MMXm`2x)J0u+fR3U(ZAheUHGu?UUgNgh`qYP$h$$Ym0#+Mxw;By! z_?V*q2S{P1xPB&j1A62&3|(7=4mo3WfEN%-w~7y52^_)sZB{`2pHi+oD9JR8e|V&A zo?AuZU)sAZy9$T~3>~!Ffpn^ba zXlYPNE0%y1pppV2DWHH0Haj~_JK0R%U+;YXyz{>EywCGHW_~0_K|zE;%`22|e|ZfL zTcx@K7FKMqHh|32($7eefGA-c(yWoumVOjP8(2}f%Q54sf!@FjU`KkAvoe-vF)xLi zEW)_?#zV=2#E7F05}c21V02srTbbVW_O!lYK!r;q%DJ|FewltFcyYv&oMyFEgSURI zJa;h^cw7_4O2kQ(c&t9hG_1U@0c)~mm5zisa4Bv;PJ8SZTC3;*$?`DGOY$uiWfBiw z5JAQxI^0Ze4_sjPHMUgCG|Zju-kpXSt(gvs*ZQC7o(CH16}0ib?nn3yVoxt>>i7 zk}b=}NYsw#AiS1J)QrCoZe?OD{wsH9|IE$h^xgpth|halW&>$^fe>GvyQ9iEGZmv$ zLOTf@WIIJ`L|Yw#XAebE_Meoqq*Z#|hIxr!+D?{8p#EBv{#wqu66d!Th~;S)))c!Pfyfh(d6M%k2&W=AfM$V0eK>!VfaPh?&N4jG+qEzUp=_7hVDMjFWa zNpwF64`=m5+#6Ez&bZQ(v~Sqq;(^m6bm{*g=y(2cUm~I#V4+8r$C{P-Z;a=j2%)He zv9=X52#eix4$CQz@?^|P#i8~Amtsy8qr{tV)|W}ycgv8D zh!Z)Wy`dgPj}tFS=ej%Xo(*`E4|JJo8|!M#w@(2r#0Vt2lH-QMcR)Mk;=Tj45>1Q8 zlxW(E$L(<6xLH25^34oyL4wd1vU5+H0!(o_Y6Co5?UeL7%Qm)D0id9#ufnqsG?7i# zTUX#PS+mnIepF7eoYRYHJO#MmUBvD~qf%PEBp%JS3XaxrdU9^}R>fdxVZh+-O1>UN z@e>*L)%Wu_YsqTnSn4YeVzC2v63Z;vk|MoU#~J96_3>kz(K;M~c>rg=A`fbb9SuR` zaw2om50+^!ER(1^iGJ0io#j)`=q^s)I>dR`JaL;9iLR;&$xv*3G4@OHA`QaB@`5d3 zJTb&5kuw1F0vib!ijn!_sj?KRB<#bOHq4R(@0SD@~J9;8k1iJ(?@~-s_OZd7Qz@<435G(jwagbMi0OhH4-sP?Z94rlvrEU`^P*ZF!;c#6w!Q>_V_2gdu?J%u{- z*_%zSO{>0oL!hcp0bo0R)pP!Bn(64wN=6Io%j7K3C=tHH@Rzn(%9q4xZFQN9l2%~ zF1C#Glme)o<_w&W1s-Q-qZW2Q(&6ZebFHd?ZJjM+Q`2uZWC4u2hW9!=r8>wGW)CSo zeSWqppohLEdp}%ElJ0qCvx=Urp(plnQ~_IDbS>1xJ%p($#1`kA;250u!tDBV$!0zO z_GAd|-ar6JUNJP13-|pPOUV8J;)QNqP6uny0!p4pvr7K+Q$D=f`uY73P@8K1qG=}FILb|L2ST42#6G=gCUe8fT-xubW}iTDk?bC z00u}PiK0Xa%@GI?ASeWo5JF8LA<4hvyze=4-tP?KIscXG!br&8Pr1vw*Sep5`?RBj z?E05lLuk4upX1|C|&r)8v$b{@X z64!5iKffU4a=Igd`e3S9EtvR3zN&++MUD8=a7bjEQygo zgo;;!n3VFr|B=`o?3F#7Wh{Qp`v4GTC3XP1wuHCg^-6j9GC#>~De0li%Gw{-Uos{h z2;SCy9v^>!!pT_PSMV33{x%)r+}4fLiqon+34qsTU;rk}$})?eYnUt7L_Nu!9kFV0 zj)yt-!3H&X5*X4E6C$xyxz{%ff>{q}MEAUyOJ^al4dZtBe!UT-`kUFGbyCEnF1$IA zTe2cv*FXTahK{Vdbfx+dO*aYm6@T~vSg8Pp%PV4IESR6&$tptbyNEHupxY3C9@m14 zpQVqz+BiIEd64_Yq+mYivE1B|UW04#OwH{F5-a*|Q>;txC&t)PCUNn)t85cE;nEth z*S4?m-m+@}feSEm$_(*1SFpsSN&+2%?m_zA0{$IbZ=HmigiP!8M9cU0;DSJDzy}Fw z4-_+$Qg&S@q08TJm(4%Z{+G5O`oOS5>ZWY`ZfzYMU`GESD%hJM04$PwB20_`&Yp0Ak%W143R4q;GuPjY;^-5FOwd{3l*}wz9 zY2b9-$2_KTww46!R*~GwD=3BDutjh&A@PCXu+qm@%PGY%W~^2B|B{T1s^E;{>C-@` zR>BR!n9d6QM1(Q)*Lmx7*ew$HE9@0{&w0Z@sj+2`5*9vmHTwkjzCXdMz>8KXB?$<1 zfjUNsr>A4wQcpxP0fo+84uxmJg)8NA(@;cxOd|tpx8+yGUwsl19~z#PM#xzQp1n+4 zHW(stvAL9M-rz(xNnPM7?O^hr=l-Qjh(7Sjm;K*4%n-yAM84Nj&LcE5EZ-Y{0O!wa zpr>lmoYT1_DZk7V7$n6Aj5|5q#Bj z#0;9NX#bU0f16w4KRw|GAon)uQB>ah()l$cB1Xzyc38)t<{coR>r1piP$TP%jCQTI zrGP}!){Rq&QzD;!48De=@E$k$5zZm>veI*R9B_v&ffo9k7)?c2nCC6mDz=)f84~_s z$vS}O^`5AvqP#z$u%UAc=uP*<2q)WF2KUC=2aNtYJc1(+Jy7XX8R{w_o*J1e&%Te$A#c|GcQX=l_%qlFUkG32akbm5|Nj@x`6b#L++qupOJd8NFK$) z7%l#`^AE?gJ)KI_7r~WmT74ynR}4EhFI0tK-k>1!3W@mf{J4( zT3Ij(#DzTwr|qQBQ?6D)pH*AtgVyvg3I`vAxx}o@lE~YoHP18$2X2C;QZf7&id8A| zBcGh?AnkU-mAeoGD~{$~wR;|06O-2ya}Ed#M$k@?Gh&y$SINLJM&JhgtjlPYolC>f zYMNi^PEcNjyku?w?q|MBRtJ#Ws; z-so90`H851E!x@k(7B}k+%C-V>ztcqTBO}$!Dsl;()_5qK!+Wj=^!GNnWYFs>v}2}A7@L5F6EV!! zff|1SR=!2%S6f}L=mh0+G|k?dO`|@kl~~TW5b`hOh$kGD1hmfWbIdNbeSIY0%4u~p zGE+Puymj`hW>Z}Sqw<{9r7gi-B=wPvi5Y9-eB)FOkdazHs_<%fSz>6tEGCBR+c=_M zJygDJpcrNkrIM_I)Gg#7Jo)|$lmgPGgBZ2i*tj^`Dg<)MXxiIqT#u?T+8Cn6m|`5h zpN5z1*YLfV&oHGTE2u#PjTiFuPMKvS-TvuE$pikslEbf=tBn3)D~BTh!8ZaWWhN1xqeeAFzl6b+4p`2=ghcoFaIBlgZQ4sIS@pq zyXX&CPY76uTA6vpcurbDFZ?Cbz*jiYWX{XL(aeL>s+^>RPvd7}?<13UgIV<$F!NT? zX<*N}ebdLa-W-FOzl1miRV0N$wimK(KOr;|UmRaE{-t-$@iHvnH+8j?kqDaU93Iz=YCpOq{- z)J1QuSNvJ(_bnSx-Aq0DVkMlV+SUByr1Cl8nc8=*%@F>M%I%5`l*}MGylQU0=;`DJn4+3dGk)QJ}p|>$gNk6Vw$yMoh1&B+)R=Lv^7V6>4<%{jJx);!ip-#5nlL6 z8H4Dr=TJFv2(@r21I?IG1vrS<=R&sRROA-vyQDC!n9Pyfk(+%abzq#Q)a^aysuJ0{ zS~d+bGx_}L;A_m~VDJv8k!iECkz27QD@tVU;*ZqaNp(QWBXT%V+EgrGE5o{K9fyhM zP5X}L!S$`C>qZWB>U)x~y<5bHI;u|!dd()Y*~yko@#xkWsNRS^RFgm9prjFuy^nf3 zo2m+=A{kcq-|?o%kB6PF-<>?|ef{fGd30*9oBv?N+B0;n#~2%b=REY70XJK$H0t3& zemV6rivk~5v~}B+nbiN1oHl29*vCS?kEB)+>n8msf-s;lvh_8^5^(J}k(uHP*)@6l zv~NugzkGb}7-D{`ZNuyC^0|7bUNzL&p%EW?vKpZg-{^$bcyTf_%{McYvwb}Dv^zS! z{a~Z8lILf~<=&x6@2xJ2#Y;bcwqTqktQ6WOag2e-*qgF|U;WaiwgNm(>gI@^BH3~# zb9+^>0dMo-k^0`Aq1tk749V7w^w2-IPc1U@GDn+*QGzw2UgXxREx0kAII6@_IXYB zRbDv3ATfx~Yz#Go+H$G!F?39cu0YDtv4Aufnv1#FSEM@w=DlpJ)PsjV0fyK1g_{w4GHftYAQGmpF^GQs zJ|2;Vyhtn7n*7DGXz|J920-I#=fP9ppC%~uv>dpg{+lYsNx`dS8-!wuZY(!zI+g`R zEg!n0%T7r+yPzfEoOI1W!TvW!>z#8`1qWXa5cHLpZ}CjSvr~%R*Da&B_*M^YaL&c<*d2A-lh`HWx|1)*cQVp^yNm)#ed08nGCOQ974Ui}q+fZX#_X58`wU(t5?M?kWsmt+ zmQ1s=9fXq>6M0~ z?3WpZ6`E-1fPz7WHcw-*mJ!6!Zt*Lqvg>oS=|MwNy?X}t`=R3pX*xNKNz^6Hs>UeI zh`4k&j0&qdKY);*p<@zMP$j_f)foK;OG{|}b`e5sJX0{L+=Fa2o#a=whi6&9XD3FZ z8v8tvxqY08(7~}vpDgAp>TisnUs4KlsgqR&%dP%f#8IE&yX~A^Ahi_KasR)DMPRPa zR+2~(hn67SSJJ|AebnHD@cy5J3JxA59Hee3sSV`4l}KPvDhx=P@rb@SR--msno_Jg znTjo%-9EJe$Pat7j^3;qI4tl<+zl*A8^9Bt1LqcQnTYU*SIo>a$bY6n-0T$eG;H=cI{Vay%98B`5ad!7+L`y_{>KxN21qS(C zS!}>a=TrF~fb%@pemb}L8Kk^I6B10qmiv6LeTUJx$BI1Z1K}$oZ_VEFZM5~Q%^+07 zGb8%^*iRZ8Z8Vt7!iC-Jw1Oxa6`3}|dNjgTyQ&VS;hCsfp5Y`&oo6||+$I*>)4Bz77 z!6=Mo{6t3BIVmFcjRU&8+@!@p^P(Ha?C=GcJ318C-kZ;q>nD^rF-@yZx*RJlDFD+g z#DWdeEDS}CxM!8{@+y32*y-rO?h3tv$WP~YWmFGk(iyXDSZ?z^i~|9ezPrbt?+oXK z6CsRAWEImxZW7AYB598a6C~sUJbX2)@?D#;I;zZWhEm)hC0VT_3h8D`8Ruc0>O&ht zPTN(bm&Z&}4VYa8)%dD=KimD3P-Jj!|4DU~3s;h}BWMSo6teLO(N~fetMWbUAFlm6 z7};TyCsv`SL=IDiveBg!fAx>3IOHJ8O0Ng5S8prfj(k!YRez8~)yQG9Nb`Xlnrw>K>91U|1xJc^>T+l&V#~pRkCARq`{bi1*AqlDGxSg z%lQ3+w|FSE4(W=Mc zj(#R=IU3S&s!LsrIB_;Jg#yztuPK*q?l-Fe@#f*Tks@uygC)w33izucqQ;VSne;7%T8|@|ylv{B= zSd{UG^r_|AoZwo@Q0UGfr?~+a%Bv6=IVvauIx<_CR)(z!~r_?8ZVJ7w8!cH1`$I(g&>c9Mg@gYQMVh>$_z~rjq z*;dz_k#>EYC}9ba68V0SiB7ltJpfbSbB03OZ@b9m z!Z7<=&5yW`+*D_nl45LvZfTGC?0)h>=H$_hFH73~aKJ0SX}+eOhi29M{7{kl7KT-(M*;FS|7pH!&tffxpE1JvI zK)y#_Z2iKo^l@QP_oF_U5g;z_XzV+=>x-)gqg?6(bki@R4bM^VkP&m8*3H3mCtfy>&A6h)PzFu# zY=^G~v{9eIVz>uojNIz9pDLjHK-4SAi}k5hF%&}7;K$mw95XZOr?Xv3cJ=Xb4@vjv zR4RkRWM8EI*c^RY^C|1qNPr1>JR1Jsb_5#P>Doiegz1~gSx{0QlrZu~8Qx81CuFT& z9Y!#tq=Q3~(f!-Yqad?*IqRd#YioU#_mIcAu4C9(H_As(yW4=5)wA=p&V*@(L*@r` z+~{40M_!j)bb_-nlTlJ>;ayN^Lk7Rf37xvQXbxN4PT?;U*$w{I-b)y4uSB-YPHatf zbxBsDVyc86IfiGc0h}TvqMr3E%fcQ8eVXQ>$q%UQ(XHp9XZ09ZRU7dq5X0}@l)o+;W&OV z3v?@Ir|XDG9N>4XSnk}>_d0?Z&*VBRcO$+3V7<(_#WlJ8bll`ETl@OnOs2i?A_Nk; zVDRQN6BV`Q(bMv%usyt=D>{%=ek*F!nB4v3WogBBf+eypcP>qaNKO zzw+H$svx11@ES%3z8m=gwum0ZTHlPanYE>ou~l|P(iUduy+b6Y;8!L10YXU|ykSJ$ z9m#%L9;C(i1(x#aF0y>wl9NGyY&(jv9@3#rJ8*vkxyUJM9r8UJ1dxR+^GTm89lkC+ zXBQhGSie>zubaEHtynkU2i`cloOr&+PUrpuU*pvClus`3`!AC`oJnA=z=WAKg4p=k zg=By?*@k~x1#t*TS%g*Y<*EB<`c_RN3V3vGtl9|7DqxEbtiy)0FXNO(S4OEB`G^hE z=z}p6Gs3431dBI@T`4P9)4~^O2klEsNS0L5#=qj7&MFz-MRDLUW0RR@Q<1oK4;PMI z25#EF-9OH=pZ{UxGRLU@atBi5lQ}u4sHENcg)*bmiU+Mo32sVOeU z9F0HSj(IBoG3$AaoerS9=yyk3;ymoV4klyMm&=sRFbpHb(&XyZw+asXybFV@-bg3} zUC|8fy6byUg?Ys5rQDu(D21UbEU?V!)n>G@3(GBM&R1jvI}636)jF?hPx7ntJ)&MI zP>p|h0Pyuk8WcuE0ep(hqyXam@wrDfDLQ!B< zpJZE*<+jf2;d+fTib~4a=x)-zMGU!%-?7{pGo6Dwh`bdQ5!W+#-U)Z|ep$xl0ozNB zF;l@AeMPQ4^FIVrkP}zzCV%66FjB8k+jZw&;?rVW2}0_Af8rBt(9NVB=eh+iB@Vl} zKz2#k!;rI_vAzUSD{xVCC5g)kzRsf@H*2HI`de<(F?em+qu-7~g>!=a$-0 z9O|+BXb6i+$r!N9v~U2qPS6PEk%J+Wm7`SHLvCI5G+ywIi$!2m7?HH8xB)Rk424l> z2O*i9EO?sFuCqs?%jE$3`Y9I;|C*S0n_c$NCu1fiow69^wiMF-NyZd(FbkWW%bSYV z-96uL_A@BnZJLp{3Jc`f2E3l zBV=4C5ld`XmL1*88At;~+e+`ltipJwfvXo4dw2umwl3xMV~-+UuTi>hC!Du4AZf$} z-QEVZ#&F^V9YTw%t_IVOVBP0k_QUXtWueRggUM9eG+yEsV8Pe0JkPDyfVIzsc3aM-;tg0DQHb@Yx1(!V;ZrhoiCnnkLUQXN9`p=ZB^Olgjwalb{#^>i~sEf zFlM%e4u_2bUIUj6-XM^gU3F(^hIX|B5hs?H&bvI|G>qH$68LOJ8EfH_6SO##oVmA= z{?ut?Xw7LL?5lR3t$dHFyVS101HHv|L6?G3Wxp-kxDdwZdC-9vGih^b$iHAUnK#AB zn%$Sb8m&PLkdmAmGrLne5NQ?x%n&8y)s%Zxcdby)?_v#S!8cCrF#%n9`x%LJz z;zvirkyJD?)kxx=(YE1z?qb^W-nPmUX2T7359jgW`_fmvSHDT6h+w44-Mt)&l1SE) z2F!x{&w0*VQ(BN>_P=f{si?;uDQ3Yc;vkA@sgFHr9gkA8E=rfp2lsmZ*J~2G<28p`<(ky9*n7?_%9O+r{FR$?nI@+#&H!Ox*MzQvM$Dzq_tWt!8A9|--O$=82x^($=*zS9 za8L_BQvdm;D(1H$^*yN^|J-oM(2ymyLsA(ozFc+Y53Y+4o`4*Qf z;i5yF{e_Svd7cqT?Q9gd8tn-XNfuV4Ta^)lV`AoJGvXT>gnX8Pc8Dc9Qiw;r)k>@$ zk`EFPiO9mxk0d;n+XL!Wp^rml%FJ%c=w*m`7YZuxqK!;tS~JCH8_4sGUb$%|t5lC7 zfEzeOoRO#mHMy#hbgPifl_^#$kmb9&N{3=qdKm7_5OIftASuY(+lB1ETqHYS#@&Kc zdoIw?1o6hgkNowa@bis$N%shn*g(F8AMC=e~4RK)WcO5l#d z#Tx`%M%E82CCK^jb>S z1jP{%t3NHv4j!lrpQs$F^zvN!q9hOTU)akv4;pl9*Gfn>yW`_`xmDR!MMB)MdUKeu z=2%i9N&>HaVJz-Vohp1a1Pv00J-LaW<)fQ!%KCB!;Vju+Cdg-R@NNW2liJz=o%fb!K`rcoN#Q=kJW;GH4u#fzPb>S{YzQp~eqlZ&&^Y0{A(2OVq0u#iuEvIte+giC`4>E- z7b4BzZ#GqCB`fix)WuIPPVLknTdnN``(g5TRo41~Sci8)IDhwb+;qLagj9Ls<1k~CN(9C}hRa42vi-{HWtv7!tKmYmw zL5#NUlhDzyxjB0kl=2NtVN^H2PL$Sg#ZFJTQ0C{d2o39|eBW1u#?T$g)%H{>1>379 zX^5#Ie~EzE-9+vMCXx(GH`86+F8|BSb&>ckJS*sLY)sizOUgcH0stF`|rE z^Wf5#yA30fGxmMj{kJf?HVaZPYXE7j+3m)*f3qQfT16spN+tUkxI0&8b%xSZ%`(CA zvr<%kD9Vf5=Q+b`jBb+zJx>mc5&M$9Uh;PQ>v8>Q)_+)6;%h08$ZtI`2;vy>EJ@Su zBTlRtB7E9jY(;%I3a+)`Ce0lqP5*%*wdN<@mIk!4YZ>LZOj%Xa`~Rv8zHaQ*W~W&` zEiaDz^$9^l!~8d6egXE-gh8&ezn~jMh9Cm1ZnYthJ|t(5+-}7hu-+BTW7ZnXDrRuf z{!shDyXN`L81Qxj=E}F_@6P@wR_E72JSUN$Qkg;rkyX!i-j@&*$jqEnoDmVMCsx32 z)Sh>kwSawJEbTI3%YSDsec}n9~lpNlZro{($L`8I-c{B7Ub`*L1$#LyHUJ?5b?AYspHA(} zEMX=^F4MEJ3iwn0bPhp?jG01{S`sU)!n)OcD7oKSrm&2Pz_I;frt$g>!*8lMLva_i7ToNragDf43jYJ6MWv_!J^W*j#glf@x^C--t9PaTb1M?*;9i^4fnhQm;a0!& zC54=3Hsor{{g{y{!f?5f?G|mu;)$VgRI2@Yc-skJrcyR}KYTU?w`?=}R*?>pWFhrJ z0WZgQfX+GrUHSb2iO&p0;;a|D&eC%^dDY$A!*aII5c4@SJ$bv8u-g>!^5^U*cmMnt zKgGE?R@{&~SZiejr!!}o;aa_;f;aYSF%Vr8lD#nn?ehoozmV7;G+XmFhh!F$J>t8g)4wfXZ4=ba_Lo9?V z^JHz%2zM>PL{O%>-Lhm#K!^%uS4bp;S}&y0tH}C+8U||g4l7o}+%Jt#qjOfD1T*%J zSs;fCv*1ID9(iOqyfe$=412(*V;7JqMl|WLuJ%AKcGDYKF`;Mm5BZo4Mf)gfkgH&WWInf9 zH6-X-w4Go!P&Fm|jh_QkV5b_Zj9PzQQhdbWv4jQGqHeQA?%e;A}bOr)P$ff!s2c8aUjrtw7ydcHqlsldajTO)lYjJay#!?D&*wYIRpQ=nQ13+RP(~N8uKiKOH~yu$qR9nnz{WumgrdhZ^eP1DS=a z{%nFG&cek1``n$_Z}=@>d72DbxHriyr^vL1hR zbSp5-8{*;Tk_`k+Wi9UprL-<>0h_BHAk;I)`5&B6zgxGMO}8jLX#~0d&`*Ttk^rlY zpB_A!Vl`p2GSfu=pk1IBYV);>8U(#tgzW0o>4H`52lAwqNtMXs}eNBh%3enJGBJ zyAEhBPs!cpjp<>OsF&>_)o(A5%}*hT$1_Wyx}um*2H{<8cX%4uPe@u}uUP^AAbR3S zvi^YB+?^!(uQI}SBl%it%AW~l>dP;J$IMB;M_{$>|K?cLpS@%3bpkNFUJ{V7zYZ8I z4X>g9R#Lu)*Kn~Q_?qWzFGU_PEOBb>jFt=PnW*SH^-yNH%?B_{w>p%NVLf+jxw`^& z-qHH=+Z!YK_P`94#*JDA%Y1j+86{2E0RQK<_v05F;?L>#MI2Y0O2Hklx9f)sQb=2% zU|>1*uzVTv5+6v(0uMv{8Tzk+ysIyR=fG}=C(I_^^7>f4a}G6U(kCs_N$SDe0FBV)DlEU2=mp+b?Lo>?eEuxa&}WQ!I+9mgjdWB zzx>%6Rx|FzzWsk7qRhSSkF1v74Gw-uj~~yCbgZAbw&7duj2MJb9wf=zMsJ_lOx5}! zx@C6}SPEHSa$!AgbS|U9Aj>1-cuZfuL0}6AJ`4}VDG+&dgZRFIS(YdTWY}^8VnCj` z<*bvC_N#RRN%4e#D_rm+{WPGIgP#qB!{{umz`NSbjCJOMULP)Tsh7qC8~fNd!n)n!bJ$pe=rrw$yCa@>-e?uQR5)eW3UG7eLDE z*^kDe*|B||JEz(3ufAFPKNFJVECX_k+&_1 z3=o}s?39Mf+0_N^em>>;eC}@u^?w4Q3DZAHR`4X-pD+36QT-bdu=Rm8?1N>i(Ii(lg6{Gsu7DjI00u zifc7g*v>~d#kS^mb^pBP>hDT-ezPA%c|hd;zCEa(-;?{%+)X}zsx|(_;QqNIf4uVw z{=@6G$uVpUd2z0d## zMAW~tgL=2*N(lDri(NBjtzfkbHXGY94Z$$bvg7I|L&10NFL+RWLh8jwKh*O)$aS(96dFh^S`|ShKAV0my$q5 z!(2<5I6}!I?4ZTyox}F)XO1rSR>+ClH-1_xwjM~ABPF+Gui9nsf0j)*(CdpBF~tBM zUD7!OHfv@5(4WF*Z1n1~`?~SJTu2O*jmH>hnN1_1y%%) zL&Q!zalf$;1!9ETHy57bEhUwir}q3eiz-^k+mZkrlvg7@?99@WTrdslHAIJbs?Vjw znt+!*id$rdLpS_)Yq>*=SeR~kWqURpY$%aYZ?WP|6rK>ss1BuYMc0(M^3S0BcO#BIdsyH%PvN z06lK|9g*&JS3G6}Ja0Iv#JmLVo2J=P7H=I;u6IaVY^38qNCT-MB2Hf(rn#=-*C&CcDsoxLX!9&1RQkiPNKts&@p>KkQTPEODa}N%rvT=uyg{6vs zhud{W@#cd6z;~4giD29BviT4Q#bQUd4b_2H3xn1uZ6`WwS`BQL`2kQ+ zOO!Y=;XjE|q9-iqSpapQ;fy&VT%br8sM_(S-)6yQRj+c0cw}KC*p>UoT&ICL(^;#p z5C2a8{!{qP_Ln#z2ZRhY#C&#cFhG3X;IMu~RM1Av%@RHeDi0FyphMZdonP7B14n%~ zWN^(9S(7#Bol0+_K{aIbn0G@sDCIhWsvsW^K9Ye^qykuv4j*m-JJ*I*-Ue#cyjnhJ z!Wzr_e*4-LEVBQs#wp(o-VG`G*nnq-Lv`RLX@mFq$G~0h3A|or?Eb!l;}t0JjbR0k za+^I+4WOUGiughilbto+VHdxLnfJdqH&bfG{- zcoc_xf_LuexB?hDMmOc&5uF)-(y~k}Taj*8%a-`Afw-nfiOTl55-9(-<=YesDTVc^ zokNv&D%)DQll&cr?=3b*^kS*JZdf#P-jX4;YZG8SSzNf~Pz;#3UUxoeh(?5hL9rJM zioidDqHS@t;9$3%{deu5*O2U`02Zjf8HAJY$JL#BsB&{h!J;r3He4A}9ZJBqUWsW$ z@wpN6ZDv^oV3ke>%Rh)>-3p%-56uT9%Lp2h^R0tUq=8&2w&;t@upvW*i_okB;mUZU zk1A~N>c}a&h<^Oo4zihNMHwh!PG}obY&sck$Kj7>YNG^id*K-#ErKSsz(GnhlEj4X z8=S#?MA$IVHcmhZko~aC{ zgQgkaO0%qSRLtO6I$AD{UL6!O3~|~DUsIa+mceyQbbI0HLSej$-}q;rT`d-uUQc{q ze+2WQ9k2IF6L}EdtpQkrCy&YU@k>o}&kazQOIn@dtSeS#9?(S;^!z+nO4sMcG(S8Q zX3)&^(d4^E7QJ2j2U`b9MiXVaZ^E1@1R;-L7TK%xbIJ^~l?Bqa?i#|6BlI5k(7iN4 zPi@Yyx1>02IUUZ%ICJ=2XPx%SThAOg>y-TgXV>E^)#wQ>l|~?rUz@jr*|lI^I=cdL zLS+y+nY_I7n9hT6k?~Qn$_HB%L1p586dey;a{ca^<#P?hFZrPWD zn|Y@$#Iw6A9@K5{qGglvmQgDsn%`utJh8^eA-H2?Ef{8}SCp2Y;X8l6j}%eXd=3pN zQZjCs78)q*YXI}8^ic2&k)qyvU16j>(YZs&CkSgT+Px(bP7KE1_bDTpT+4uh%@#St ziwj8f9R^OY0%^;(KV227$Kdijo%Fz7$_DV!3&@f?L!e@1dH0TI*V$y@)4b<51(W=u z%|I&vy_VrSkXI3Ed=Z&{XYv3PFZV+XoDiL-`K5OVPlX0S*QXvt*0d?vd?(x_{>2aWN3+O7rNgS^GR*q}Asi+U3X(f1@=WV!6i@Jx3wCS`;65k~;+Ll&?v zo^H{t7}!%<3$_;Sys>yuXt|=aNcr4&ya8kn4U-VFQ&WJZ9cLiYDe~giN4Lshi5T@M zvV6$n_VFjAQe)-|6naf9ntxE1HCG3 z?N^A1Q5Hp+94q?KWtxCpd+PDjM6FumX?*C^-D+BN&2 z0`dH%@Y)9bUO)F9n&;SxoGOqzDo9Fy6{6h&9yPbS(#-q)gh6mRnu*qr=ffywzH1E4Z>Okx5jC;rM>GE;b zc2>IrT~lKYeZWceXg}Y2tfAbFX!Kb;0iP<3oCzLD`mT(bNj|^}LB@P4!SeOaj$gU? zfpE#R$N(_caeZ(QYngm6CJ*$U+1`P*Lf=k9t{Q3c6I`@<#UK2$u_Tyu3@}#;u0xPjmKDJkAOPEFu0f=e4w^ zo=BRyjhhcf%s0PiP1YBjR@6v60IgB@{H9fTFr24;YM7Ntz&`(=*6p+KLW|b5V3xj{ z*W)>sP2u@IRQsfs>`_2grYV=i=102IjJYDn+eO=M9cTa=TK|GkQ?}Ko;d}jLgFWZk6Ghs^ zBb>ZFp{i|yEb7HM)vVLZm$q9vXfeEBTJL@v^5R3%(B^L$Du*=O13y&CX|n~7-WRY+ zar!wGBd&fHKrgB*!UeCJu~VZ=Ez(2UGC4e-2j5$?1;p$_Pm(o$)(7)z@Ee4}#J?2x z%uZ-S2EQ=>_zgaG^5G?*Qda*p#k;|~DF!sqAe?PYPx$NA^5{SE?R>yvU59(5yRR$3 z!&u(eoa>>IZ&4s;ZVDev;hQumGLn~HQrp+vClb?)aH#WA`tHIK%@}E!HO}G{cqOV3+|74*d zRQ2^4d~8%V-)==_p*Xlr89=*0cEp+-wYO+1_}HC6P`f;rZaG;T0TR71sTJ&@c(i^C z35AY#2?+g_v1>DMQV-qw+EH>*`gtHEvmz@I!w;b8Z~N#8(ZAQ0SXkZ>2>ovQMc3Es zwBHL|?P^!U-^vZ%1k5U`JhH@{)eN-qIUB0F2*V6+zDC9k%f_aL3~V>hP*L?A(MN{Y z;tzuB3P7*RjyNXvQ4V@zm2s9jP0$@=W?;i{LC~Ea5&sGPR$yHNz=Ab|eG^(=q91Jrct4BYAB;@tRs zRs3bD3?TId@+DgUU2W42zBn?Fx$e`aDbj(oN%& zF5|c6T%Uq&v_zuIhDIMgYb%bNE$$D{B_9c6icoFL%xmcrlKmHvrQcc$z}Vh-s9vvt zY|W0+(Z~2FR5C)6(0pC!@=qqFM)q#Bi)3?r)KWMaImtZHM_{>r3R(z67X;YxDqZ`^ zjmk2fGhTtuhoe3KD@BXfMn;g&1mzjMPmA6eOcn8|M-7&Maz$afZh76s9QOxOcR)R6 zVXspx1Sp+9y806k|5=+?s!3rZ_SKi`j{GhM_)YAoGJaTp+v8-TZH5+Q@0Pk>n8^D4 z(vrZ3{ONu(&9AEP->rh0ys46d7a>7prgXzt0;o2E;X4x)!C*Oa6}`O8be=qlP*V$y zY}@~>F-uWDkYgl%M`6@z967#kF|T&HVGMbl|0U$A*-)6zx3(=a{A}7T$>^_{C&(b! zIFDK;LroWbw^c$y8#;VgEmrSPAgm`IszVRiO(T?o$HFO8smAu1fjX7q=TkIzsYre_ ziQ>@W<1Y)X=iY0zjXV-EX@au8E%QIvF(a03o2{#$MrKBu&YZ`y0ihsu1FB-1ni7AM zGSx<8D>~f&z@NMR$#%PBf2nRQ{evziEoubj0#t?~RTDY*x8IxNUIcHe-v2P^0|%D= zV*2nU=;R%@F~1#W742f0%3FuJVjf}h5jG$6PO)t=c2eK_);##!V0luhA{0DQH3vSU zDKq+NcxJ|dA+Y%Sbp7o&e7}h1gJ&0ls}9n*W3^kRyObD_)>sV+4|9*!V;#W;^*HVu zTZKa@8@*HE1F~WB(xzD=1#=z!C{)WZ8Wi9%qj-HJk1;eQ@*ee~3S1%8=e9?8e%w@j zn4Z~S^w~(ICT<;r&-Em^+86lm26`zJ*Mj+~Y*J~V`qj2Y(b<@+jewfp9Yq8!xv?bu zNGB|U9NYxB?MW}kyN#3czYA)CkAPH@Q0XG8ox0?XoilQSXJ!~L-{bi`boHx$H@6Sn z$k^o$gD4oM7=s})^tKhNn>tBJ@xAs%KR&z`x3=eLZ-oHb-vW$ zpo5&}_;w%G2A~=JcJ>{bG}}D5cI56`QA^KHJoB3>tnAusVH99EraiVhozPfj+x&cr z(2MS2jxwC*An1-WCZ6I6CR>1$08&TsJmrI)!aHNex^0WG6-cq~)gAO|6J@^o-l;H9 zHE|?VO}niJn#12}g^HS1#?V-Wn<)irIY#02tJ zs?`2lMp#grd1STG7NjgTj0kdQD=%Ws&4OwIHOA$TPd(GMy+2zdV*NBdZOPN@atMz<>56k9_Yd z(kHqnx%@9=B?u=b{jbFbpuZvT{|n%}*Mm(rFw_*3p9Yv;|0g*Wo&0AT^w9t3ZhEd_ z>|*M>#s76b0)e{z)%!p7zun{axBzIp?sddNyvVEJ(sSBYy+Z*4^8e$ygnj+q{0E4S z*`EE6d&8bOr0RXwIo&GXt&g^`E;C;r8nHa%L!!S^aQ{WRd3GGRbN+X5Q;7P%^|T7a z|1|Sci`Wq}*7b-P<;vNVzurspqr-2gA(#3YFTj8ERAFE5eTOexSvVNkXwi4Dxfr?m zgv|RV^VE-sggg(9Pso8NXm4>izDJDHMYbn+m1Q0Ol*DB9rOvh`f*s_v=Q zaQ<%#1Eq5P$EuA6AAt{Tb2Vu*I4+86K>zdKfa!-41l{YllIUnE2^zm>o59U$%FA%v_R?jKC(v%AC1#)bTfnE1eS zsRE2F&E!!*OPA-CyinBdblYNqY&9(HFQ zj>jX8)7r`rFZxBFAjKPh_+--}D7AkjD3>+`89k^Va-}4xmJQ3yXi{uEeUUKfM23@U zTWtQbM&EzSgK@YnolIk!0NTUm+c>q7yQ zMTvA<&vH9>r&be1eya9gSO8gZwyKx7bF9+&2LR2iCb2MuT0iaZ;s;5lA~X+zF&fBlR_ZrHWmg319o-3odABSDQXaZVSw zSd>AVNMELXJ{f^)Q~m4hDJUQ~EvT?8^@@!Ps^1N(>2^0Ussn|0>lp$b>0X9&a7I`B zU-^L@+y(Yz=ejfn*||IOYBM*`P3dgqOOzs_JH~aP?tVj;+7DM~YRWr#r;G4nYH*k^ z_%B$HZCZK}aHD4TEgB_hc<|I;b=N`mOpD}%(?hScq zMX7(k6nB}w?FbDm+u;A|vc6vp@91#B-Z>iLY7gPtBk5*K^V)LNF!^IRbxFPzkk%*d zo(*lZDD^LsX-&gQ3OPjDz;GLGqwUkBmD|+8dsjU!$U~TE{DgtPFL1QykJ1XWyioMA zP`RzRys-G-cL>oTwiaT{Fvub@sCdr@Fn~oI(2%Nd~}b^;NOAGKYqKT z`)|`g@0kWr|1jO_X6_M4xM_O#m6R4R+ z^G{pxDIOUzEQ{1|gdfnt**z_+lHq?uotlnS8@&U}dWa^W!6DSWyLy`#oH2^>)yM%K zl6A(ElS+RaSOrE>f%VJ^Tw4QL3bqCGty`q-#%(m^n^?Rm!C^|%h%pKP!uOC{q~x7? zp9h3{HUG4Aa944=tGO$*dUVhCa$&$}_Obspwu*Ok7$&^1plI31RK3LZNxWi2Vp`Ymj?R%%k4&b2~)_E{(X6~u>Su09zi5;N)MDC&Q|et2p^_-!w-T(+c7KsXr_s z02?g#aCiwk5`FKHs-n2q;(>7`pFU$XW0J)DI54|-j!Au!ZeP}we~h|sM#>Y@{mYjs z$=~Ab1Az&v+OJmz8TLc0byLsBzBq6(gpYB zR17{T#wjx;DDOt@6Ufcea70cB10pI9W=!%L%8=*qE;kV;Ud}3-2DusJe{VPJVH14S zDm5g$>%IURq0Jt8W;Y@ySOh;xCse9VZ+)bK)qB+ka3^7%(}8bvBMJzf2!P@c7{1%3 zloy7&FBZ>zAk?&n$TvWztvf0kcb5R-e0i9gK|0lZ-1|D!vl_v`A!HKoBXV{{VXSYy z>pD!~lQ^YCCctd$woA3}_(RPWhk`vO2bT52j7p2-Snel?=B1x8*JzG6F&~96cT7Hb zQtz0CGA;Txch53I)bN065^3i`))YmkXhNdy&QMQExE`($Tm zR=e8U@{3YWjws--#T(m6Shc%)eTf82pz=6jVoKdM5*!1gL^1nYZ+k61T3|9saTak!6Ro`CnKd4PHlaue5eS*)Fv8T=x zRN_N&Mxt>|t@O-(t^35?jj=+FfvO$*Bz!Gf!+dh#ODpu3ZWTH02B$IC4viI^Y&dPX zFvUP5^xeUX%UfqdnWQfWDGYNxyK-A>02mB3n?g(wnNLP4hb%B4Dz9TW^M?8Y;%qbo z35kUi#Ji^vG(@QDkssBU9f1wLm#RKjEL`5O$BFK|?YTl9p$zhhNQ>4}-g4CIUzFX4 z_}&o)XSJ<$o3kk}-wTo79~cn|9h~Hdzo47DqDvhkyY6jGA|0jkbG>~@RrH0 zfYw0m?m1iX`?O7`QB^lB4@(2&*R$P$Fj0LS1EJvcVsY%$#}%DB06TfHlM$uXC8PVb z24_ns%BcB9g~q(n?+W`K?VvU>R3>Gw_Yf2s^s`{ZAbTa%}TMQlEWPv zl$&n~tq4~VzrcUX7RVE%*?b{sFM!H1$K;|`+7LA>m=25xH9MXBrC?*AqlQswmX@ur zG3$u%1Z8$#OR-&IZzB1nV;ar&Ju3CMC*FvbaH%gWa113Zj8xiz=VIcwMYVeZi5hyg zkiaE6LC%IhdcoK`1Gu$Te#4Dr7$O2|7(K``K#Vo0b>C{07K6D8*pG{6Tr=Nz}L3HUY5P7uF8sQH6luyN&>Q|q~xN~bZY!1jv%fT%Y9^cXkd(&~oVr6xq0=<$MAF>Wf$Em&FO&(WW^lv}Q9UGh{EzBlVNlYAQz~?B+Th0Z}uOs8C9o28@JsWy7 zv2)Jwcr4~`rIT;yy0D|e(F~$4=iFh)@RgR8pb0>*O~+LB`})hc9b>e zkcx;T>Gs*^J1`2tI|R~r@QSRr9LC9dej`%muiO1z2!T~rm|HL^eJEV8aB>uwZ*LjR zm*;o{8{%dx0ochdVHRcg!2!0}D-9dJ;DBwn(M2Rma766sQU4pRsP>pA({^mg-GW*s zJ!>2op7h8)9KWVJAHQUn!)oO-k=g6h;l-^hRB(LpicDZ&XsAEkpM|GWsgU{d%J$k^usXSKNolv!W*f zhVpxuEVJ7Tvu%thojhBR8S_L~?41zqBvEggb0I<};u<4NeI8Va@wSV*ac?v^Pna#% zcSw!7ENEOLzK>`-*>i`Vcrd(ss3q=7?PwACDK~rTCO%oTp=5I>)0UOjD7sO5?|1}O z7~lzGF`?2eCE?AiwH3@(9rtC~z_eYpDFrpdy_QC-AXKQp=>sV-Rw3!$$Fa zLmnh8bk=_+kD(a)*;{V2f>HTJop`K;F2eQLUUh?0P6HYBS) zrxHlPfWJX$Zni9fJ6D2Q`jvBH;*Yf=))Nf&2D8nA7#6LFEY}Lq}x>!rSYhSt;}wUnQ4eO zY>==w?PN{_m?AB{w;m3^_P(S79QIW8ZHHC5Sw7Yn$?dhNVtH-t6(XFYM z6XOtV8n=cEXLEYqHIA$yoja>%hl2}t^XfOqZ66c~Y16v85C(QDmMFxBFrSv$EkBXF z35<8|3Kp*f;It}CScV`I_B#4Y*BZ2ELv`(n>!$F{fjwTzkq(0?T)O$%r|b~OH#5O# zBZ0g(LPGSUv))MecV}alJdTSqJgPu#4hrGFtef;2hU86SC+<{t7@yWXHcSbw8u4DP zN!MzyNY9@i2TqAmp$klaqQ)q5)-TLw*n}h4duoXJS$Dw! zk)g>^>tLg)jur&?n!xBq9C)Yu**?v*dVAf4Mu6!ONgt@>hi zZ9MyN*K+jMumMjsh^UoqioPJ*O|JEp`q2u#rK-N27lLMBJT`d^>NZy7mbNepriIsf z1d4%c+h~3`W=q%A;lehx%~V4rj{?ZZvWh9m%2UF-D-*80kXIUH+o6o9PRn>|+Im+T zYnWR1tU8MGQKU6jq{)Nipek7Z$FBTHLs7iVb3V2g&LrmKL**l`Y~MHsCTBjEkxV)7 zUHsvN6-YJYitL7rt$Uqh6Y;)`c;gT_e2P#DWeWfh`oec-usvm>BbKQ`ZSqW16gbqJliSJ1Q(*JW zVfpz!i415n&vrVV?P#02M1zB5Gc74>JxwjGFN7NAxq)fZQ@jc?2^Y}1;N&JI?sCNa zxMN*&yB$EIR2c*TA#d&ljD9^DlNwwkRL_Ot7f-`P^p!!s)bH4?EQhiVHa3z9ji#?; z*T1i&QvElu@uJMt7L3}g%4HMKgn20F3T2v_I5g9K@UEUjY_ZhkVLh(V~Bo#gsTx$z$sk&mLtVGjUXL)ir&e!C*?l?ZLC-GomQ^6Jzx^<1P~1b9WDDo`@@& zd0`rz&1?P}vc{pzNKBAN`z>#gBNyVG0U`@to}k3}$jzupQ(~M)pdd+Kx>YX?Dkv^$ zPPL+wAHMHDj4_muSA(xd=&3$UyiLE_jC0pny3q|);3h=%c#ooIo zgFNe5wPv4%310tos%m;eE2vuWgu&Fv+~_HENmA+8-xQC|{9(*^?lE6Du41c#5jbR! zCTo$s4xUjDi4KYu${~Z2VkjYt5%Dxk2Ba?2Ca0wr$~c?hTF{Usio>f$H$o}bL9=R| z1f|V0p~IVXzC8<;Z@c*XDOPyNjLM8BXbau!B1Kx_Sj<$=#~k@@mInHJ2wH2>X=30p z35=U3%@mu!YtNbtWj?PtAfL39>D*9OyIV0*N#E}?7uXYGw}R0Knl-8_myw;;AkCN` zdCB`+uB0kM%L!RH;y7;uo39Cb_}&@|1%TJQuPmbM z`QnWIO>mWO4;5c!xP2Y-I&@z3+U^Z9ug=yD*0lvGn@alHGq_C_uLL-M3%|`sLpCvz zYA#vyZIsJM<58hc2_D}j2aLH4s>!`A$-B81&c(NXcx>zB zcG~Ekimxa3GWNIGUpiUWHG0(lh!1DTlOgTl%Uk+L8f5p=BkrGGdC$YD*Nwhu4;b?j zdOrs4n~)P=%UG{V49b+j!btHwWBc%2FV($hledHhP)-l(`+2oxRI!BA38)bd}12;0>2dx@5&5lRd^gEFf8+c=ejIMQz!?6 zxx*FfSz>u1#Uy9Os0I|a+HRtHN|An-gR6y|+k90NL2jI5jPs(;g0OX)Ix9=dz|lVW zT^XS4vpn1f6rG~)Cc=xodnBHjMNp8jcamPa?N4C6dlL5L^Q^jHyc=h7;{y0$NMmt# zmgV?2laQjE>o%bIXX9h`aP^)lx8KhhQ%psMs#;#X=@f+NZBO$f-2QM(Ys)$TeWg2i z|4ki;oTYm}FQeh%CW`K3?!0AOowM^i-pBm@r_bkMbyqJLg(M!KrTYPiiq7Vz9eg)@ z$fEj_G^a!v7nZ%1mlvt%KNfh~^Uh;Tzx%LT?y^YGduOg`FeCp%{(Ho{#$4h+iTm#& zlXWr@jJ^R_{aFuHS;a?UOKvu}Z#-`g(T@kV%S*I=mEd{De5w}OqeC9mb)U-Y>NWA= zGqIjL&@-#D9dT{&t>-(Lqg z3#CRQxY-pVvf@8SD(fcPR<-EhfiNTrNrTBHl^NxfYHmS2%v#$jmFcPNHlf$B(3k&B za8#Pd02ns7y%}LIo+u#kt#GDX=yo%Q&GX-EvUIH=m$9qA5g+e%Vh~P~2ri##)C zMj)CG(uhR9^?2WCG17{75xRT~$KSZxCaY2ZD~^M>_@HIo>sNu&^lEmP{)^^7%S{{e zBN>wtJvR{oG1XwGZr>q;!KDrGEGQ{m5e0XO`)H_`dFg?RI_^%p4aYP(NkYyMJTv7cL7ZI00fwJDlVjvEdOy!`{~GW()4Hn?TYa}@DZ z##lQkLE}ztV?VVQxrQ`v?-_u*Ht)Hj*BA-JG&5hrUITFvE4~CBK5bMsurDX3WaYR& z7J}W8qKMNy3P=l>h8@!#jT>E>+wwbdzAaKVeJfcVI4E6V`-Kt)lb8S+lmCEL zHUYm4-a!NggPoj~KWhJ~5m}dO`7}?SVA=l*Eyg|+A4e2-?UeY|0%g!N<>op`DX#VD ztr{rGv9}$;4G(*60+D{C@+K>V;@vq>7^-S8CS)QkM5{&vAyV(huAE5eo!hR)3g>bU z)GiMGDdb?|+}#m#8Y#_qqYTM7X8WtJ_N)lduM6IF-HnDh+WzE{ zfVYdP9KPRPywS2&)3Gt+%4Xm5O4z{y)tTvc;80o!lcV=WRoXEBV1&*14QNZu*5E10 zUGZg2ImRT$>#=-`QGMLL=f>Gmjs-RIA9TAkVp&)DzmY+g)f3`k$A{lL4OI=TPxn`x zo<_S_Bnv))oiy`F5v-RK8G2Mb-;sOdynHsR?b(^^4@V0|KhJ7#%4B*Q_Bue~yDU<# z>e6GgJV%M1uTmmpS_2u%@k9zCNKebVUrz9%+x}!uzO8E^{hRH|=t8%u5yyj&LzJWq$&vd*bxLvy z5oG~L#RIU2(_De?sV{@Q@jf$l(wKEZj@vyWX>O5?qp)oK)>jW5bxi|a=U}R zUJ6w&&S~StUP#M8se4JO&5>FMD0W>?0Xf>^Vt?*m0=la@q{7PcY|k1>ns(iIAwt0W z7^Wt9=E+Q+#U4-Knu%Pi?l#yK&3fiI16C4uH>pqA#4{AS&t`0y(novhi`6^UWMHLz z)$A_Hc8*tVXCrsg9$mLTk5gREW-6(A#|LHG$96eeO*Y?h&9m%h%_~^@B0n@@Cy*7d z^A-2I3ej++czEb zqUt6KbVXVJ3m7D-cve34Hg6sCqUVi{YdY8DeP2=T4XpkytcZQrC@#D#k>AQ^X>~FH zwbsA;MBAZNzfl_MiVaA;Hj3}O)xMAfGupNdI_wrrTn3nE0k?3jjUT4y#7{nOjzCP zRV^?>SA)}@Ros;brixZF;VVKc|7pIam~mZwN9*(Ag>_RMc430zcH78>90|6&LNH*i zW+UP;yRyfLH|6Z7da4c7n{liX4@&3~qTWyCh{@zDBVR#Qg8eHDvDmT^r})t z8;_&sGKyo9wxXVwj(+Qk(0~ab$_;}+twq(hz%dEts-uaVXcLl?^yFQc78f74i~(;F z0vXj2i_^}vMfN<-j=eN{!5CiZoVGh&FpLO&X0vTY#_bW_GO|R`Y@niKE<; zr2?Zz4snT=f4Rt*o(-HA7vv$$x-iJC%_WQ4;iYcv5J{H@UkstqkB^LcJ>XENI! zN*8X|`Ba-duRG$df(nc!R^>axbj=%b+#aJS`#+^Eqc*y#ZetG$W=^i(v1~_Vpg3(N zUwa&8pdkC9ZxC?;`)*)B>E7pmFs4w0N5eI|2y_X;J@(jz-XocT-(biv{2lhYTb?{$p$Ksqhs zt6iuT!e?sl^P9-O&5u%J8djr%K_$u}Npq3YN=N3M;;Px_-kB023S0<54C7s>+nG2i z>I;ji^}>NWdUb*0^9WLX|7}Ww2Ir>hY>w7&tx7;R0XRDnvT!B7%wR~r9p7J<#mn6V zn|M|AFD$?>XBs=UFQ*fda&H}3{vJHFCKOkuyw$c=Eod;}g_nX~CzU7+q-4{Nkv|uv z@J(ilEBAF@;7G`X){18gq&=!Dqu<7EAroEjO5-I$G@E2+0c9W&k|#tpE?ch|RD(pR zcbk=#j-In38QUg>pj1%F@{n!foHp3Ia>kYJFf2~Hg2}^cVPVZ*J;qqQ%lP%lJXx!f z8WT?w{gfPZzqf7tj3@G!d+>H>Z<^-0lr?7$n}KUxA=_>R3qJXkiR$E=x&+?N)l zz?N*#-YzaDEJOm^0K53-kD0svy=wDCpX9MT*ci%CYMzy!TYCVwZ1xk?Cr;-qFJ3!H zN87p7BTrD^8T*f~urUXRBRYKaBcTgfk#F6~Gu+*|*&s9iw6C{4-?5*%XcN2y;}Y0* zT*s1K0!4)E5dmh9dsupBxX^aQzE z5|*f9C77h)&KWMQ3-kMemY?tFyZu~b`Hi{qYGNHB;;6P^NRr@c6u9R(**pVroz*^F zO!*Sw)^QAX2Tef+T;%}D!ccSY9Ll5q%WaQCJms+YDmR>xNr8D*MlvL0*l4E(sEJ&X za4MdAqR54LRWL2h%4Vt;M|7ERW9=Re7lQe1>0LA%_bYIiFnRn2ICmHK>Rw(wK6XwM z-f=>0w`4S}>l%mo&I4|#9Mj&GQ<7^q<9e$0<^#Qw(Rf4a-mI-@JJpj9#2P7AhG}kw9XvDr8?T zN9xV1KPOkMw&q-gB0ScPvINAQB`7jm?r8Ny+F&87?GBHaAFF;Lu9=1;L-D&+`Kn>@ zK>fhap0JxO50nB!xfwSc( zm^0{F<3lk$0SSosIf^;*z!a*%33l0jO< z(4}#?pI#Ji8%d9v(1}SJoZI=(kb9S1R)2%kflA8e-G=JqULHOhyWVDD*Qcx3bKIbv zpyYNobht+K)znal_m@cZ{P-$$Vg5iIHn=wmf6x&5w$&8edgEw@VfAr4D_F9;boVE#4rxON2sI^j|(q0LauyskqWs7rh!%*8>4Q#4sc^ABxELzZbO_AJB z^+({XANsF3eSR$aDSgkqF^`=@R@HbJ9~=AB3!D!1C`32Omvj&g+Bdc79Uo$|nS<8- zx^AkyH8kh>H5#`^jNAi`t}L#*yM9eaXgBGt!ES7u;<}q$8$?w-LUk}j_gUUE{Bkg;@6j@2VCl{*BpTDNN4XBCMYst#7w{caSX5ncxA1)y8!@17knxqf-({WCWRpk~jPzDAW}>nWe1(~8&j)mr_}Y?TX7!aB z@tI$OEXcl=s-OIuizd6(^=sP(<)LTOL8?hiJXw!1CE;#fVI9z9tnF=%66kYG4^1V< z*l@hXBvsx}FvFm*-F`mlqHdvmXwQTPhtWScP z32mWWJuX@)K5Ul zE`J?EhKSs$xR$$=NG$W!;jC;fTNW1?9iX;i=vQ@2({s-;UsvCoDx_k(XjCAx4RrTL zl?;UV9~+@jH4*J<9vSYH%g043k!l25%ux`7dUroe80;Ncm2qAaH~(D4swZc&CNvR~ zqQx)Ps#ET96X)_)$sT4+=;?qBq}n$>sq}%LJls;M#8g_UF2I+Mn@pt{ZU+olI@9P$ z&bq!kL1*mrL$>jDx@g_3Ot_HpRxYONmfAvAxSnVEb)8YoZ~rtveu?eV1nX&ESB4Qr zNKj(cJYE*!oBdjy52rK@o9czN82(rI3Rqv{Pu4d9@EQyv#!)@YhH2rI!K)liH-{oW zT5nIEZQ7e+03TchhJ%;DR14i6n2XF+xYl<5&9$oyH%=w4>r`9CrFRO-z2vEpyC>T=JcR7PJ@SAFZr>wZPKf> zeNP>+YNA^-3HVNBvP2rUfej?OUrAPVLu2W{6A8hh6$ERCx1Dd#81F&@xX(udFfc*G z{H|JUz2X>RT0z@2%bozb@{x9f7jgv1p~;|W$t9&f$blJkNqZ)!lNo28^_ovlk_+pi zczp`7YY}9-%rM?GM;9^3eG|K@eU zI$~Ah^g0TpeWVyoH$+RsRe^}utwSx3`P1ls>SFS}Vuod=O}Fs+dez5XKBVT2KYp+F zT+v5w*K4sOeyw~MNKApP!I>gZ`Be^PH_cy3%j+hWxE=Kjd?V_PBR_I&A&sj~ zj1cE`Y>1*F@b}WDGr6YIGSn^@_uH*jIepaVVcx287V?-TsmJM}sGol%8Ql&!at};L$)urj4Yg{D|`t*2Vpl>O2ay25)#bY}3 z>hL~V7;+8yyA>($t7YN*7WZ7b|9CYt%?5bbY!mCAjtV4epgzZY z9i~hjeN=p20vVAQ)Sx$X6R^)@AM=I*c-F5T%S=?mLHl;oj+^87><5Y&=NjP+)!LWx zzUt#=FL)8QROAcaqXXQnSGR{fd&G?!fhv zltQXJb3H?I5yfX|y0hJF2V9Kufe>~0eJ2rgSX-LBj*p9aS8Bw7Hq6$@5rVX$eC0@D zt`twi!pLq-UH=oK`p{+HjFAP%UPsKS4_B5HU!Fi5WL3{cXg(d6)-11z)Z@B6>ufS+ zHykAV&}#-Nr(=U9zFyOqb~Ut+)v7Rh!4kuz;@_&hTH$SPNk<-z7)$RGT^I^V`8j&s zZD~pi%KAsj89B!G%#@|O;T^va%ZgKee=n65B8P2%@x_Qru`m86WTvzmZ4QSNyfKQuN zA*hSX^D3k)Y%0;qZC}Zd66r*X;*|%vi}Hv${En%0g{lfwLtC}IqbP>^^eQ?wb70ms z1KKBr`6lyg2{edCQxY^7Dsm4AjSY|zgrWa!yOkXeS%t}+P>qS>df~lSWzqHdYBTtv z9PlXI=NP1jo|yFbMQ#4m#G3PJET6*BGI^@?j{Hu?8@|fl+R`6((C=wCAIMXgc?urw zw;!&9r??Jhn1XukOSi`lRle_{H`t^ZrN&02DC%W=MN{0O`!{>lhCY3gFf!yI*K|t} zN&+)SlNy&YUQ&$^Ex&b*I{| z1(PJ?tQRNLNL>-u^VzD594g97@qRvrcbB*Df?-m&)B8BcUapy$N92nGJK}F7R-E5C zzC8(+Kb91+4b#P|iUwI!KpB8~M zhO*92OHq?{AiMHCpAd{nZt|Jwgci}-Nr+C2XZ4n>wWAfR!Obo(Cv5xc=UIP~T-gzA zPVG)xAUx|76+q!jzNeN^f+&VV)$LG9;84}wJ5k=8RF7FADfR1v!@b>gIYNBRhC`;$ z|GB@;jDOZvMkYh7r%Y`n5PIHc?aKwbA8;N=yl`sv=yExv_hhetoMa=uyw}K*B7Y9( zeJZWrgLhS)*XkVLu>BqVi;X* zpOj#U8g|2yfgeeBL%a*lq?4y;<(*sgfDsS-+M>RfjI${TL6@`tbnGpuNh%!kx8DSa z2^xYISG4`+iu7E{lj6S=8+()U1Sz1g+Yimm$8LS=c#gW&DtzQf_K`Sxh9NJZ@s&So zmn$FBp{sT-H$~X`w=TerJIYP4n<+Aq)Hxb+=#P?och?^?PW zG?i7if*|hfn7`jUx2-$N>)fu!ukqXiiqG$wQ*{XS**m)u4CW>D2e-P1qBEWE4n375@2AKy#@oNj~_^;lUT(@llZ+ZUFf1VF0?cVvwsS$YA zCTXUOssxLf6yGLWsu@KMr+Fj!SZ!fKk3fsTDTyj zwkLF>G-OmSqC%EAs3J+d1P94DoWKq?u`H^Td(=yJ=pptiRv~;GrF&-&aM8Bi>MD@} z6kuDv?|w7e^JZj`?Mc^Xgzv#)+SR`E)=15Hp1bn^UOGc&L0SJIY-k>S+(|%HQo0d9 zq%bz}u{m0;_?$=D!4pib8v0pGe+d3riZ`F7ogm@~*XWFxhmO8N=-vI7gV(kP`*~pS zJ_*lxQ+C6_Dr8{4=R#k%*R7MlIWVvny2k)`$@0;MV%<_9!QU%O?imetPCgjlaIO?S+aiX!E|%4QZM3G#S5&R% z`M{fCXzkey3nAYwp68q%s#jf{L!lXlh@8d}Q_~kcWz8hJnB1lH#&zSZ>lu;A?laSl zjiF|*Zjph$QAFV!dTuAj75k({-pLM|mVi>Z$vGThPF=N6$xrTq4qj!n^X-f{VmGj+%d&k(9N%0>c_-J=V8{Tf!7t9+KWEi2qojK( zto;uXqtRR2W~efOl9&t9ur%j#w0HhYkid48n`nk6MxLs{B^Kp*ee9iR1-FDtWexc3 zve)y9gQj>S5#Ne=NPf6bKJGW2VZD8osD}d%m22>LZb#b8SPkZFoY|TPFI_-eb>O5T z5Npc*V|g)0TfCmO<`N!F3sT2+2MOQYsFW&sFjSm*fp~YB7Pg6ag^4+h!)u>9 zoN{4Nz9qOmR8X%X%KZ$7(y1R_=(eWw>qZN2B3NX zrR*iIV>^hXa>eMKj@u2rp5LfKh=a=6wGTL&v!}$eC15`c2O8XdUv_8@%Dj+z5a9G4Br`0aFIYKRzICr zRV8p>SjK5ONoDY}m`ATeIKNnW%DzP7qm1U`XiVDg;m1oMsKAn0dxl5$u%8=r{S9NaZDv{I2?L!{uQ@r;Qrfu;al6-_U1nnQFKa_X`?b|N_ zi~PcV-HPJB$-lCUPmevvkgxSVp$DFi?`wRoHGdRx3TQH(lc#0f$jvv$rJd2=8E8xc z;W(AuF9Qf$1b}v#Ur48CcTfK5lYPWX@nokn^?;#WPE74`T`tQ=BJ?H#n(pw9Q&3zj z_kr|$wBPwYq6zwQcYoKIKXI(`0%;~O+ij-#!8}xEdFx}_sc6;Hp0sOPnT^0EpXR)N zdiW`mt7i`dmJw4DYc+Ymy28>#`%if~Y>ZrLHmv0IsWiwuqweeGRa8S%*j@KO+DiBQ z!EJ^)zd)@d-!vyfNxwM3&huy=XMYI&By-MpR15>tu-bmtXaWt_rbv%8+^XCBcn-XogN-?QdW`4$9jSRKG$00wqw)iq`a-|hqMO+QTr`3l3ilQ&?j*=zTq><9(3`LOx<$DJ&|M1jlKbD zT|(a7L#$r4c2kNV1Vs_)IWz6zdnXPtY9Z*27^-U)3rSQtv+}LBUl{u-?c$xvz!`tK z+%8Jj)Lx1#qql7n5nIw}LlE4+xBkkZfz50U-fNBrVh^ALk8$7gFhI1(?_wyYrLO}8 zu#SerfWB@TX!KBG@b1=Ta&YDF>q5d#L+A}m;k5jV_QBtYr{u8hud5$SedKW_)tufY zXFgdM1U>!*yA;H*&k_d0hhGD)?bV`pk`ik$|Lsgj;=jxyq4l$YO9M9Y(xRxPmdw$U zFMCjdY2gX2YMCBWk*dyhAGcUd3%u(v!QVQn1EyvL7%2DB#ndV{#Y4mtCbqA){(->9rm=c>!3Sfv!ak@IzP#nx@Aa zS(j%o`F>|OHLrQ41Y&saVPnd6M}0k94yxiCOZkPZ_oAvo)@g%)go9$8niwWAFIH@% zZzJjF@W1{?_k!enWcE8&2Vha8_pQYRG0eiFhquyOY%`}47>?gQN_l2CZmoZztO_AO z`?}2vl;Si_#M4f7&tB&~b%XoOV$0Ll;G8wa;R+L|)jhVWb#A@IE;ljiVeIVDda6o^ zoDoivLOlWP0+Es@hCsUjqHWZ3BSBQP#42=XtK~CW3$hi>qo-@1S`sI9(^O+SN!O$I zl&mV~8rpRH7-C9t>}FuhF>#mUe&0}C4aGp39z%R*uye!zTDVWi$LqEziJR`u(@$&S zCxzEailf&!qoKo!fiCWcz5=~vyFa*+V&HrkKJUf`7oGcFP_h;?fiJs$e>hUbVI6?+ zR>Q8}nJ*lLi@}lQk|VVRp#%#ZxeoFTcaC7>sj6`Za0kdeq3=KT~7B_9k<4E2U>V`l!n<8#m3gVQo>Af zV^g}Mnaa!WJRFXz_Jq=gtg-uOoQgdPG7X&Mhjc$&ERB@sn0g^kHGMtg`W99E6jdXhLbL{W2ah{rqWtcmE;x)N& z9_Ke@Vt;YD$T2=l%F#D2q=Q&^Kmi@i&^iJnC%aHiEuvO{pm+~e()!2jJDbj zT-eO+zJ;%Ix?%!k7i9N)}FJMUpjd@w#vw&taTewHO`|IGa%+_N9@vX`SLWn8bCzNBh2joRwSzj_)Z6*OHSuvNN8_LZU zG|=bm3=&bM!Mkn0@OKu3pXLQv&rh^8Zdu+MOR70j;14)}m%05d`Qb<8mKxJ_%_3at zx6F0PK}HsBD@u^Vj!LX}xwvwpLcyH%Yf+eT^I6F)VJib{<8mRi=oST$^yf0PMOTJfAfb-40@c@&~WVhe81Ma&{|zJN6|z;Y5$!{hFqekN%!>r z4{jnAs!uk|t>w-A=`bG&j#_-vVAi(X{TSmE@!;3YuIc3sLcJ9cr0-}HZ#E;<1BT|4 zr_2}B^*v?vnsdAt`|Wj5X%A*9`W|LS5M3$aX?M>)@g}|jru#H~b@;`k7W!)}|L{j| z)Rhm6mK}QVpd_bnZ^E!^O1Dmbg=D-x4x1h zw`Gs23qu#p-{zViDyMpK1o9KHe$u?T*CSPD%93N`YpRIaLc=G9<=yK)1gVbiYH5@% zkzIG{onDz$?w-RxugPO#;)54_HW!|o|E@8V$Ol(_%_Mwedln=^etwc|8M*L@Pggef z`EaDktQu>DxVR}-PNp$uZ)l$fo#2LW+dQ1SvYV}p=X0DLK5^2J;OryCp;RQyxlzMD;n(2?+KJ}= z)MO%Xho7UVMCc@&2ga3~>9O^VXUrcs#B~`!CqtjF*;{S~lY+F6i>R8RYl7XtiW!rp z(==10yn(zI!ik`j8W*6YXqANB_mLwF@Zt8sdv_LW|E7uz95bFsGm;ff<9u|I?E%|X zl^)kVE`x=4P7`!qTO#7m*;&)E(fWm#{;-vhp5WTOur3%lZK%dmceQJoLG30EYp1!I zzwZubk!}KOoXvfoO;S$_`e{|EOjO`Ao0sBd@TCT!fZee1)s+Ejk0lXCclek)!q0m1 z9T?s_AQaj+XoqFzmfAmm@cF_~wVQza0^`3pA6Kj7cepgDn!w&;!3bN0&`uR^b6V`%nvT?27&4TA8 zC;YJXapsZ!X(h~j#LqPt02dID8fHA83^)_qcW3hbYCe8WoPbr`RL}xgGJgC_7|qe) zp9i0GM(Qw_8a@RLNIO)jeD8XY+EJF5K0A zWVI0~an#rSkR`_C)6acThmfCTW~a7{evbHmbsa#DlS`GA6$n|MLx01jjJ3c2QH7dn z6cq?oo{j(XQG3SD`7n5lcd622cYq;j`14Ke`Co+6zbwV#0b2lYda}PSmjXzK`B!nWH5H1e)%i*0bjDY`50N{xfXP9ZzrkUCYMO*PG|o*} zII%tbI6m6g;>fl&0}k@>AMJ}DDUGgFoUYnkHENrl6uz;Udl3z&YvTZhR6*?c5oew! z#^IY!Q@yqQl*z3#oEk=a<2*mPQLrW&q)+pT8(UEKLrYZuS5Us&-W1yRvCD&PtB$PW z>DST-I(~f91H<<8E~V8OoUOKRooA*#`|%%ZRbVbki)<5l_=M&tNg-q>{>L?W#Laja zRy`1e&VpaIk606>mtNrvHP6V690{gZ*4@h!Std+Bfn>u@|4?!GhY3ZZ!gjO5(PM00 zzj6lU#`!MtHJKSvIF&G`*^eRy!hj6{!~u+{q=GT+|K&^;g*j~&%0~``44IfRW0ebom2lFFEj!^81RdGb}h-FtUQ4o{3r++h@|}_zakgzMgF$eq(837{f%J% zA%lgUN8i7QaiMe##X+R=!YdNo&;FnP{(lJWAh5Z8chx7^ep0;uQzn1a&nA(3-{rGZ z6l=J8Pe@Ba9dQlb=v$yTY5oh(@^p%Rj^GsKX{nthohB>PUb z?8(0GMwYRgLSrZUG7QEtGtBb6r}sI($LD-L=W)*O{W*`v{fA}dzF+t2x?b0QT~D*W zNKI9_fBO}HcRaX4L#6AhuIT_ycjlrPwF6gWCI0J{|IdH%PZRrx!}4z|!#nC2Rl`*+V7^BbF6|BqW)v%-|E1~h zpLg(|w%ClB?a!-F@AS`N_J3agU;p)2=>Egp6HYj@uIUqKi@q=X#lW&t(@89RtIIj{u7BeSZT@lNOIi~(DgeD)GdiD)ubLc{W%Z*pZ!-d z_J|l>B|?b!&qTL0#{a?_t&iEv;IqE4(X4&L5sLU#8t)X~!O|U|?WWy9G%@iKR?etf1B7W(S!O%d-z*2%#dzzWjuxVzZv;O;msr&Pw6 z;lX&2UBT{o&tXGGpgqADtc7ATP`cinS^XHCfaX(;HC?+oDEoxWyOGrNge*$CC~MAI z-(hg;IV%BI?`upIo(a~!KUin{F!5Z9pLW}~`>>!U--m)(KIC_2F=6aUxtc5{d3I?4 zyCFC^b66Vz>{$?-z8gvWqLyz)b=X4V)GuQ^q7b{F2CUb$+{rR3_fpYtWY6ngVa@%D_%c06!${nI4M zK9%d!w5HXD+8G4{(#Jd6-}!9o;gwIan996Y{P>FWR|a|puaJh0P(wNY} zt62VAX5!=>e~vbj5zT1H=nNr>P_lMkmu_8mV|ks?T$6OT5W2?;V34G?)^CWHC~+N> zjt=%Kw*j>p!@v3a-Fn)O_MfWnV=Db@)*337fu&8h7<UC9Zn@5o!Wsl%?6 z5NmjD#*^#U-Wu6+N*zxt>xh>L!amJgsirBSDv+XxV+d=+4yx^qcC%W|2z?2P4e6mJ zn^VhYno(NPTx^5}OjJNDSZ*M_0-S(|3#IoCZ1LD9#YMGdd$vBv;yI@WJNkWB+IU5( z?G|8ZrYJ=ymyzc~FW1yZg>eo$lZL!YreMZV*A_$1?R1hJ^;o+Nwyx!8%#^BA(U=~g znTTS5F4`OBC1|m$u>8ITj|%P%lNXsT>It&cwzRf<*eBFpW66$;my}z{x05a{)&jT{ z3hu_IN)A`d@fh`1pK=$Xx|+_vK^bQBK_1N(ge1oHKVlb3m)} zblKN8At{n4L~u-}&{2l87fv~$DvC$u;@8gm{cN~yj+Tkl<)59etyb-A7Ei}RfEq2L zcXK-FyIZ-5rI|HVI=-a2E7gAf@u-QnNhw>$66LJ))Q{&Eg^xFw>Z{gWu;$@iH<)oP`&H zmuC90LRkX=iaR>{}4#pzzrwVd{438&&%!aa=Ljz`HD?j(AqT>GI;F_rsDbv%IR zR4aa94C&Egm&RP9E6SwCl3Hz-bW0*(AeihPeCe;kGq#skY|kw|ihJGt&X`%a;+RsA z(x6wT0m+4&I2WS|wkF02V^7uJH?BS&ODPT)BaS)?tUa)r%kOu`GJ}IsyrK2I@>N5R zl17xl$Rx^#;cChsP1wXR1q|qDCf)(2I5S=z)j>|FVSbC?^6HciOYLr7;Pt~hO~>dd zuU(HYO!!5%9oJRDQJMq|GEn)z!k^Ptu)HdkX6cMBGpLOt*X#8K6^Lhtb=m%ZvKhrx z#QTF^MK!MBrX>xslKk6%%xgS815M3^8#8nJt?#R&xa0*ELOH%Iv5>D-&gb__J1zRD zn=(O?gYm_~k4)+i5+oik=x#xvXdfC1gl~f=N42Kk}p|xo(L9`WP z=0q;TD`(4NRGB{uy}*jO7!*n4Exqrm68rUCBGt zda~~z2GDb$1w{+I+cG(9O?fUT{YLXM)9&6Gvre~)G+?1YY~4gf+vAACqLVTOj0WE; zy~tWJD4q^>3SK$Lk&#l3iKtT_XRd#rLafH@6qz1fhu4Kj5WX%wZ$sfi5{U_fu-P~s z!lyoxc)ALiS#wm84~YH!5!ouV@7!TK7*jqZ>A;D8@brrlZvZ9e7mSH_x^kCr0a9QW z_H@bggx8t_pZ(Ts(K3SykTemhiFPvh^8A;JY2D{pE_5m?d z^D7l6Ztz%mBit?TmY_YDf~u7ZZVQq+wTjCGNscBZ5_oR#$Qd=m>W#;;(FWQlP@a** zZ@ZI^Mf~_@f0Tv=qh%qkcSsH}s&nE`0RI+X4;yyz4YViq%)&ns|PW7{fT9$7r z?Yu(t^z#15WfI%n1kqY+g{U0`=d2OQ_&2Ns9dyHMrBD>Zk}QvT^u1!o=zG;0*F=AVq|`l0vc6J>(@pz=GA6#*M`3HR=w5|u*hyELtr*g&SPzg{$(H2~V=oLB;1 z=JK868-St4wyzh|<9dP^1>$Igoaqv8;RcYPIN_%s5B-)soB#x^(8E) z--UI%P87x+GvHk`*t8lb>xNi9BgUg6WHlEx3oI8shxnm}ix&L(hPcy^d}On(Y>zr| z)M=FP2{yfNK3!8LWN9V=uA2*D2Sl^UQJEs9!Im4<=mg_^!$lC!vt{?z?WMy;MV z!Bfh-?u4a8oVc`C&5($Bba>7sgZfx!u$#n@|K{t)-qv++x8X-gru>{y+uU*~zAkbC zynMx=OEA_{;Otg$`UUiuEMVs)wSio`5C>sfbwVc0PMumPI*T3Vt&6bkRD9tmCzKfN zjThO9)kH~5MZ%wHR%32Nh?B&9(lpoLmvB*3VW$KL+6`VHzK}W&+TLT$m=Tz#s_}pi zzt2C%D?7OZNb@3l+;dzivp=qz@d;sgPN>gyH=o{T^!ZIgsx*9xg z=l71?;6)~{IzzL??m-=~yTsd#2kufrF1^6|Hh;u@h(Bl;HBm({!K}uTd*V zkUX*Lr}=rwb37(E>Pwg#j#H&)-4&S zD@(^rfy!F|qR_pWQ0r^Q4IZ0hNOi{YlO|5zX^W(|RNE|?3!Ms{cjyV}zGbPQZWW~p zm|*a@H_?r`O_zHEa5yPsO~xiK4Z7 z{zA7@xdtG@9|LP$NU%Lk-W4FJo{P5ya`>Y~%q%@AAMRl+H*Z(9d}I(9z5XbF@RZ*j z&cwvD?bx#Dlt-+I_+B4`Lz-rrBRtGHn#${NK(YVD>pwx;d0I0g^gVjb*cYeh7F6!e zaRYrA;nKpFN>WbCUk#pU!X1;k? zy~pe7dx|1~g0B>ShD2g6%<_cI1&HS?`d4+MtL-#!wt#ssMf6$E3rEjClCyn>?;~{w zb|)6y+2&TN>q8g?-3a&6hG`KKm zFskfq%NL%IdKdA)9t8vu1d$=qxX0rO-nsBhc@J21kpUc4%CG?pq>n_qK13Wjb81(9 zzl=^7nXcSk8rLO4jSUKSUb0}n_$=>}7k*0B4nWN$*vw4ME4;9LTwt4(R!RF2Ugf)Z zpFg0k1Q(PLF1@pGGu&CD&3C8(`Vw5iFlpF$9+HgAe9OcOsBadknL4n_Ta&%XM>9-i z>66taBv*_%{Y{|3&W*qsq7f;4Bdx{x=lwSFpq-KZ$FL zt1~*T;8{S5Sn9MMmMz$~Q~+qjASQZSa{;z7{?w=V2t14KH0dkFS^lAbQ~Iww;v^1hvdi8I-yjVp|YWtx&`_|yIjd?TrNs} zu`3Bix1dIZ$HomQKb7p%Cbek~XlW*YA;YU3_!+y1O9qRN`FTI`P;8SgfRk4`n8Aj9 zQe>Xk$M8pb?hc}_|9HkYwpZc9HeKb`I})8xABg1>u^U{Z4TTmviODCl2O>26YZA4k z)a7}aIy1pn2kQnU+RXIbG4(44_HPaLC$6rM0VKn9eD%Dh2v+%rkI-#w6&xpSFG+CB> z)n9X}sZ&)R+GHx%{l|DFGCZJ-qt9tbU$A~PRZ6NQ^PXeX-mNt+Y-zSu0E~|>rS<5FvO8WGRIt{s$q6>!R+pL}) zy9w#SwvmP@1vL=c2_W6@9&Z)yn%h~S#V{)sQQ3SCuv z@$?)RWbdq2Zg=K5U#H)ah1V1ahr$kmw**~Jj#*0ZX1*MY=wpJyz5R5L;&p| zsMH}H7bzZ*iO%#nOTe}G8UZh@L`~q+vVpFBO(dM<7sx-;n|5ZA^rKub`}l)DD%O(5 zruSu;ChTXMFnOUgPC(h2$NcTmpAreFP~Z>+At-!XQJ0kcSj3`lf3$dLV}OXht$xyy z;Ik?__qbjv&T4TZj>wR!HkQUG5Co z*b$YXLU{eeY!L*y0($h|-t$M7bzF5HF&otJVX&TUH{f;3HcU9c1sTjluM!`+bVuSg z3xQkwiQ`GPf*ir-k)oW2Wme23H~MY;o1c6>D%LSDJsAS1!&_|KGEE+gFiNX9X%VZBBwoAEWtefF6Em{SXTM-*Up=UHV)44LA%e=$ua)> zW@bh@En;-Lj1;$7 zcb8zR;(Vh99)mDEFpWb8bzfWTey;G#bRlT}m$)oq^@h4as%kHu`>`+^*{4(o^zUA+UVo(#xk8T|MzbYk`6kX$-|}x>egBw?{JUQUKL3yDmBz66 zQorgme?P}FU}>gz78D7fuVHdxHP>hM@}yl8A%33j1CpbAN+tDO5=0KCjth;4-Xn0o zI912X-~XKr18f0)T3sL;-mRusA-9}l(EvbBmQu%|+$3$Qv$bJ@#JJ)7r}b5(C=*4~3hy+c2xykr=N1uWDy6@9i)s;f2~uCQd)4X&v}5d9Tln zYAFBBYs`{X_a#W5oxuwP1lYZ3L9kT*YSrzwR}$AJW}W=l`nR7Fqi-#$`yH)$%t zAVq9+S9ObWJ zWhO<_Y7ueAs_)@e-9ki)6pU&g~%k}5dkgyL0%n?raoLP<~Pqf{0VZDm~;D4VM6uc{^li> z>~FvT;@(Z_vP&Cu-ze|Wlo~WbfPj$*^O|f!sjq+6c4yGObHi$2785jD{`La^uR5s{ zv<+agPmA{-h0o%{dxAX0mW?dGB(8L%iRL69$+`X?3BW?r>O;o0`qQX`mpYRiz%+_O zSEf=kj-mdK35F|vQ+u3Z1fxojna=>PSc{L2UQS!u1rK=Nxju{B|M zszeonCgA{+y}^4LZCZONotaGj1wYgqkom~IpyZcRuhS0yFbeu{u3ngP$frB&Z@(Tj zYD|3~fH_*rup6OxxcUaXoaWd@XXIr3_NNMGkiXcEQ1vM>(Di|-*@D7jUpTE^2mj0{ z`n%f*e7=aD%04gOxzBj6>?1r`O+CzUAJybv8X-KX$*RUa;l?8GHs*B4haU6S?HNFi zZ1YuNP>-{q%_#KH)q!Bae}iQK>ivh1L%(eSfWqx{X%xctKT70NqIGRrYlm%tyNl|` zg^?{){{>76caIP`1qcT*e7+E_FjWiAGxIsZEF7eIH3>h@JF-M=e2 zfzP7?{SD57#7YXo|JXcl*f%b?{X)PN4S-si#fG;Jcdv&28>&zToHPw8gP!o1a_Vx8 z^yuKZ$$or3QMA#Vn1Ad`8uYdGzsWkxGy-BEJMb}6kGa6<@-D7P62gIq_;U3Maywvl zTAVx#a`cs3EUulIAQ4xTwg%<4n(WhL!#xckR(9-@s{b8r&3GAzJKQ8E9BB&%KkCu) z8&aU;tdu_IjjwtbiB4NgDeFT7Q%-UFlpXzy^czX@>MfAdgyj=51c+{Z)zgkHOWviO z0fQ{lLb6kv%cRe?C2LgB1 zi8D?YaRgEyoT!c)g^@<5y@8=5m~M*4Vva{%PHx7pT_~qfmv|Wr{81i%1g9MN$x|Q{ zG|ZI>y3?pG(p=@e2Z!xlwIFN}54PTBH0{Jr&yuER_sNvC401u^QK-B0(y0nG01B}Q z^dD#J`~67)Nz2Mm^I0LaR@-!19`|uSlo>ZyPiE?+@AoPy45_G+sMzg|waxo)2ArdL z8Ls8wi+5!YGMtG7*wLN-?Vn5((7l0yb*uDgRLZ+Ne8P*2}N5_UG1b>W023}*;+`~`_*H&K~s|?C>(2B zzw}qdB~ZVuU$qiIrX_KB$?mxlsaf>5)uuu&RjW@7?TgjM3+%s^^g;Imp<^npPY*d8 zW(KN;Z^8(PuyJ(CS9E!EHFUp38QM=$Ir5YH>441|gi*FA&7q2CaqJL^st)8MIokK` z+hWH@3SR_Nt;6gk2)|sXfT9D5vS&1R!w$Fz-D+-K94=3Ad4PU8PXnL$EkfA=oQRU4 zZ4oEr8xVe#;%JGZaJXB!_xF`Hd-JX^1OS&4rsq4#*F&SW0+d5U88BC+NmLW z>a*GV64vtMuX?%Ul7s@hbe#mQwSQt>*K#Ed-+Puq7f=Kcpru2Dib?a z@E8YeI{uW_M)=0l)dyUFtl;ECykpZazph&&eMS=Dz1T^^DF4G3f5^z#8_BFCQ!Xv4 zOm~pm2p?(Q^4&t8JsHhB)%g28{kcz#PlD056m+#O*XxteO@~#bo!E2E+clH+X#2xO z4U%i2aa`;XzH=79tQZq0GxQ4{D%{f1i%XW#ey^dhX4AN&x)bEIK*4iUvb9QYPJ;|bs1b=$2qC>zs>L6U!u_5ain<=I1uyTf7nWj3 zYJ|rP)ZyE*^T{vY8RTzK2Ebc(>XXi4{v=C~j4q>MWrpC(D_-vkyh3z+(m{OILc&eF ze~Nd2FhqzyzqjJg*)PiXMyV{wa+q#d8sv9EfvzF>Ft~-0!sZq&yq{WETgd)x@-^7k zyiKzp0MF^-F1JZVBOWa<$0Jgcnk7xm>^F;r3f(yctka`!dLa^K9P$qbL;z97c_^)~ zoKL5&e0YB^KMox5eDCWAe=(069GfxnXxWy&*4JSD`eSBc8;(>H{B3@^*J}p`4Bl}hMgv!4}TIfE`z1f?j;4&*!~&sDrNCtNgL zWerapmDguQ1pQzG-P|(ZxG3z)AaEoB{!5Qs_K!g96BI1OOL(Ed1`;CPTI9WXZq=UNMl$_l&B8+%1&f` zW15td@K(dJ$*Hx$irOHq^X>JEiPaP0UZWq_ox2W5x|y@rxq&n4?M)JdNb~P@a?KM~ zGGIRx!pI&5YzlnD1ah<6lSKbtVr7N2?;6efYtwEoOM!e2(TYDvGa;pGTI6>8R!6AA zmS){53iE+pX_|8vD^MfZs^VXp(%Uut(6-105X}t{O1fK$l`~K?U+`}iSGx`urj6$} z?jSCHu(;5jqE=k4kiYh&Nn{cRhLV#YQfQ;K1RKxhmZ@>6nsA105W^J#@*Fog(|f-V zGTnD(kzUn1cgI-2XN5P9kK5(_RFXDpuNXr|*6nXgFNQdsv#$%CWm-t|=39J?L~KxqbXkr!uk72S8#XRKv{%e=cZu)yyc3{g}W==nfJ>Z?tw zh4yAbx*mh|8EMH2FpsymB}RDB5rTJ6cF}$5&aml2Sq|Acev8SAh!|Y`JeAU@08;zU za~6QqAS8dAOu9UKi&)(oVj4vFrMY~!u)EL+GfRFoIe9>}?to}yQo~C7C_|9xCzV9W z&hFQ*ipv0!_sqEM1?r%`Jjr+Ul^HJCZPye1qs|fG`;{n);noCJXU3>%tM&}(=9-Ay zsh0I`gp{Ud`mpD`_B>CXO*Kl-kQj7CPB>o+Ude zQ-}Al|JyyC2#j<xurglW6`#>aPOZH-KO(?;)PX;5@xEDqba`CtKGm=!n^4A|U)19( z`^p$bl$pB}P~ZTT{8Q%#kEpiAO7nNU(nL#~tn7Nl-;yY)UrH7u$!;>suy?snz%B#5DqN3v7^=sUNRGOla40ilmph zh}P38jdMy%{G)lU@}cC~b&f&NnFY&xy>~hI`?4C^MN~tJTv*f0>i8TK-HD0*&0Vdw z5d0$0B)Gv!bi!5fD!8G8cV^>P9*<8SAuH?@Cp_XZ++!a((oDdx1 z{UkWPYQ6kyfVU-&r_4(Did}eZwY@0C;vod#KD4X3uGAHgDNT;*OC5Wo&tr6C`koqnpAkwKtCG^R8Yr^f z0^r8&@jA3}ii33+L}jqlbPYAc?Ua}w5JX)8;}7h;x{_W>%!|Aa#Q?C*LqJ6=<<*T01ea1Am83t;q#~=LGsKDFOM(W%3wLqH zk5=!o3_T%MS`%9v~+G|^>~My@Tgf2E!5{!N6VFu+x_ zac~j{z>LGEvE8c29&!j>heqrX^4~Eud!J|B;B(MtZ5>M)XLdm@&PUM&Mi>T+(yzY9jVx zk`kLMl?aRraO(_85B0a~qlseVmfwEm=v&;Z+cO-D6bw_6jXEy%7|!VTJD|DZ^vO1A z;h~B5W;Kb9NnXvV>u!YjhvBrc^_I<=Nv|7M$s%>X-xuE&ZBxF}koO#)f>$DQ#>%*6UR{V`-M; z&rhG}Ga(A(nZu!`=;Hr zzBE7@bnD&aE-~RNTE$NAesoe+!Cr9DU2>J;RdzxLG0l@aBGZSj=Zb;J_sL%UBoLQd zWaNC!46GODzGI}A;+3}dS~*gjXuNcDkd0x47ML(>8q^zGuNnudD?&zXRv$Ctr}R|_ zHdrZ>$wymTqtN>Is0M-ews{(@Swfy6I#xjM*@R+qQvxn;5& zw=7CmXYerr8L&NoHf~y$hg4mDFQVnCOTik9m=#gQ4-FThXpv*Y^e3P zymehY&h7Er-}ID$U!GvascboHuwumQ#XB)R)tcO@K~WGt<1PmS;jr@4>I!BZV9x8i z?ARA52sq-Xuf}&-5NKP}D@6t}Pxv2vX-a)&RPhW2MawP`sJ<|1J6LIh(EcU-4%3GD z!$(J7N}JYVrT5`fq)%V((Kpq024A)I26B|Wa%YkcALJX=%#LxC?+fmR12errzEW=j zcdkRT$Um&JM-f{ihZckHH9t6t8Z0Zha10sMq?*^KCdPT@X;n=Od3zg?$NXwC{=~If zZ-Lo9vqsJhD-}prUQ=vx1d^QYxbtSZotH8_rEv5bupI6Z;ewQU7`bvBZOKVv`lp*a6dv{t& z4U-qwU_%0J>&#rDdoq~1g&M3_0xE8>Yb6_S&2b!iQa5)b3itw9k8e)SlHE%C`NJc*Z?K;!$7*O}{jFCs}p=rE*$0OWcySe0Gw3&xLh1nlSibA$(%uop}>bubE$Uk45i;04yg`Y%We_ zZ`j@z-RT7cF=eJ09G%b7()ci4_cTA-)|@FV6RjoBt+QR`_MMx(qI#YWDMJ#mJxN5N z0~W2jmp(Y6l$CiItkR++nQg&RDd>G#=XhrCD5oXWt)~sjxL8x0RqeyH!l@7!yEk2- zRwG+KCcBeu!6j4}?LLSv95{zai zLyrAUIu|-TB~Si1ss|;ztr&pu1S;p^!cK-VVJgCHaasSkKWQOHJ4i_JH(Nxpxb_m-%~^7dF7XK z<@+H?0gL3M6jqsaox+e>`D32r&OuB4^pzLrUDofSAQ53=3lfum^_l&46#Ma+^@fNT zU*QTqITGbk@gX#2yP7QIm6o;|6hn*A+z+&HeVRAipqOftNa&IGTu+7Px(h7`l;&fO z28w4Nz9;D<+guJFUg%7#*(`453K*IU(o>f9=+ zi>x@CYjiQtb>(+B=mdj9JpvR}tC6u^G>1%Q$bHe(yg`}RzTR8!%p>NM)!pk<$rn+F zREU%3n>ug2Bi9-JEN?$SbZ*z}fg&mJc#M}oyd~b^<%jtS-P@Wy0e;Kub$^b7A8GkT z!F3UIAhX{1qOg|x*RDByPxX+@f7Sx546ECrL|a~79|&RUW^CKdQ=(761Af3_*Q+QM zKBb|B6Q`xU+i)o$HF-lod05IJ_dB{I0sTjH<@Q z;G-bjnb;Ff^Bq^Np#yXq_M3~|1fkS{vd=q&Yn)+yQRdy^*kEn;6g;s`FJEFG=!4+2 zFLCCbiG!P}VdX2lUkOJ`ad~NSu?Tl!p-oYOAMG@W`zvOvSF^A#zfb!R&m%km^KoM(Y z-4^M)foI5CzW}wPdd{39sQ;c+1>MLkZwyqYKuT2IM`#+1&@4LYWer$>$1&Fj-vc9b z9x+Qdbc#pBH5+^1d?Ix*+aZ+0Zb`%(F=c0&DIqwTxXRKeqZ3qNECyO!Y|6ZCIQOh2 zfgIz3m4Aa&SUisnxs9&c?($hC?jn_d%2#PhY^iQajxqG`gSrtkqP=<1^|iro1_OmE zo5b)%=MqsV_$!6JsV`wPcaZeQ0Zb(+H(TYwkr$f?(6$kPhnSFQy=g7C#L(AIKg?}j zCdE`djDa(Sp+w9Ud2(rX!iwWrBn2+!(b%m)@vyu-0LP#=K3A9T_-)`_@f8rgTbvz%+6#S z;NlXEXB3w9`WkrQ_!tZ>-B;Hg8=|#JhQk#KkCtZBevz;akQvedtCoSx!=Ve}-3gxr zFr)cbEYAy1+r`8OD5$&Tsb{I z1iPqrI*gb6otgKS5tbwO2_eBHeQw!PYF8XQ|A0=D)UJg&%ir9KZ!#tQrbd5{())9o1jM7fRiDjtUwN2b@v5gts@=o^>_xwbGw1uD0QH zCuP*kU%x(dD;#Wg^4x1>fH6{avesotFb@O=dfE#T#)Z7`-Yp^*R5qV3~A7^UqCSxi628ODB(c0bPH{Fgog#}y$)KZ`eqfT7fC9>tS`Sm&bp+%iCraD(ODk9`$Wv$9n`ugwejI)0i)W1rB6`l2Yt!ns z|D_NV7h3nHfqsVC5+%Y`n^9wz!d%F7F}If{?gy*sh=Ruoed8%5m?7@>ismNQ;RgRS z<*3#gPzq}TjS%wUrD+k$GIUxCqv$!*%9^WDkdv+RVEo;2K6d_UVCqb>w{3gG_jIk3 zE6-^eL6FZb41HmoGa;8QlxE}?XyT~GE zCcV;Y^($@SrB#iXbIPlHYd(MP^Qtz*$WC3?!xu?JpS@T%8+I2jgxgfCdZ(sdP7+Qn3y zGfOvNmsvb0B;ZKv!!3nPKYk;(JRylT67iY*Kg@|=d}9iQ@Y>e zDzZ7`l|YQG#ar0FA3O|Vx0kVuV9i5FaWZQezvTfU1nNjSS1s;V52@WBx-CpBwfpjd z!8evK72k0IM~?Q2{AcpiUyRmpH%pA-nZO(qyqq|8jA66OT2tbMbVrZ<7^kHsi*)c> z)v`tpFD8qys?W(WSk)(9RWf^ks@<<)QT5fM*wuGk^VsBtOopN$pl8=w6eNEL)qBfp>|^8(z!JD=`RzcbHMV@+ zaB$d85C%r+^T+5>_8KsHN-zyvAGCmuuMfO&~^}+oNaDChvD!B_6@I05rPXP$X67l`gldSUDT70m+iFY#Sg_g z_f7)^_s>vG8YYP5Rj;2XZnl+7ed%5MeGc6cVL4O7ZvT^J2Nr4 z;HM&EKI%l^-`Zgk?H4Dn-O()(=-n>1oq4&eu}aNy1m_R{ENxS5=jSUkwWC;Uph(0h z_H)UULZ-E7mmi&!)Xh`itF3HNWheEofCaNa7s6VTIKsMBuO)?b-(#Vrp?$z~`n)5^ zzk6-}j$(~dlNWqH*=65n7EZ(%ek~YoDY(H4`z5tUd`az z@s+81bqgu28$@R1UcHq;PLrwLq0K3$RQ%yb@h=R$Y)Pk&eVGVRee*6w*_j2JlGfgf zGFML&)M)pZ58-`g?xB5Htx-1dGwUR4J@PPrw}=~)&Q5PN&1%wzDjdwXrW7a5B$DoX zFpdsfN$=q@;gp|}h4^j4DP)_*xte3BE<1zJcg{K&kv{U4C!g-d96t0S6A3m`q3O2O z8<#ZwG$q(;*ehA9wGG_IU06%A#GQOUHo;VoRi9a;2SqARFJJ^Tgj-ZbFHgJdAP+Oi zOO8iZgp0DWKfE)HySVid9{bYh2w%5>l?ib-o^p+Z10Y-z4NzX z<6CEy+)X{aHgVzGDose1qB#orGoAhNppUtfV*3CMK}_2m-Ody)aJ!|OeW^Q7V`X5l zaXCW=%qXe%?P%P|WQGw3%h^r&EYgqcYhd(=XOuREwbQcHnv8K2(3_iWfbW82&Kz&m zaGO9{r8o`tWGrL^{eZsKHt9AflQRE9!=Z(P%(NVLVT$6HFa2?VZ`F<++ z_AR~o#CXnd8!Y!3XrIaC21~Vh!vVHWB){z=kRR(E$%_j)T}fUuW;Rms^__Ns++(c1 z5s2VD^m?)Oi|rP-Y9(d5?mGOP63d!ys_~truIPq*H`4^JP(+NqywucQ&Co&QbI__s zpC8|{;`Xh}wo;$Z+t+Y7Nte4`B50AdK7f80{NkIubbs?B!Vu$E>7rkfuG?5PfSSx{ z6RS3Ojl-fko;%FCj+&ee{AfUVo9+vlYPL)Hv1-^-90O6on9Rh5sr*0LW%q5z0d6lf#4M;Q0B_VPc%9{nx$v3Rh%uD&` z#OqUUhfvJA%!ouu(PxcN=8D%5HLt{UHj9R0(oVU(ar~)vtwbxqb!$GOdATNj5IJl$ zEFI&re^rtdqe#o92{1F-ri^t42J0(14GN88+467ci4~3wj&p7M>oV2c4W?4#8A3FA zl$BF4Sct0|k1f~$CbI(MU;r@@V$rH`h9xBLQ?JUxc>}p5P`;C7KzTdESxW1%* z^Y9aqef=|WAc8l@c?;9n^EBMEVp6Nl>D>q4a0E+5dP#_U?mo6p7*bmN*8H~j+l82{ zlSFZ)pcH$;%1x!+O*nlY-7zlwJ`Gyqc|&Pp8kA$DB{>`W%=cV;JVHm9OM3e4Fzvin zS18s^#zH85V6%2MJtDXgX`5QuvqjX`nJW-nOMGIiFwCG_m+2Gq((D?*po&75rETc* zt{uWs%2KeZcUy1D5F z_u#8{+>7~qq0rf{o2cdxCQ!|17N@*BrqwCy?3TNO``Oszcdb=ak2h{~UB>Y2H63Nu zpEa-?k+*B%)WaV}S*{J`qC0P}mlErHSJ5djUj>|S1ZKg1E=K}cQMsI@7=9=Z-Fl_y zN6a4x0EqJEa%8x;A3D{Xm2Kqxlh~J~5{g1^$>0vZ+$T*}Oyd^^!zEO0?Z3to?z3vS z+etD`xnN{w%vlY1+?{&3jndo)lpqK2SJS24Zv=Kz@>883AKr6q(Ly6YWsB@& zOufSL8-*kW{^Ij%$Pc-0a1fR8+VNsg%e%N={JzO4kTRG1N*Y-}xs-2#_Z!!1nb|CM zSd8RO0o_wN!fm>@z^tK(`OeT`5#Jl4+W3hH_1Fi!yd-y<(G&TXuXie&^Vu5;#!O~~ z2rA?c#$t72LkOD>f_mvOk@ip(znBcsGDVtp@ag!oC$1B96pH-6tea}+7WzJ&*01W; ze$Ju^;zK|AhTGTi_-66Ky7JQC;gVilurW`h8Ho1g=VPNaUzN7ju|(|!23F+8{e1Kh z`fK^S^uA9lw`ZOlX8aHQllvgLjkhL~ zUfpT)s|e^BbwaMKec0N3=89x`ET1Y40t~Ymd6S-)B{qF$B{eo;1p^F4x-F_w-glmvxo75{c@#3(`>G;l(*tKC<6;{gZy3XMUmD1$A&VU|bJ8sIWYqs#`djy(F$WK$eCHov5h;@^s&Bv-Mh-Ee2wGs}~hsd+rpUXq-;DP8$xdSXPaPqVQ|gokNOFrGg_F$CuK_)P+k zCPtu7eBOA51^Ms5F435EH3v)f58Y3u-!;s$UkT9?98z$)q*!jbZOmdXxorxHt6cgq zUNy>Br^m?lsk#evy|g{mDstp0^59@S*9G0pPgK-mJ>2POw*W`iQ&#flyuJJ(55I0#eKeVGHV)EeZSz`2 z1Rr~V*o;JGvy|fTCn@qXo@31XuJ6JwlY6EXB*Yh`(hKrrzESX>d>s(#Vn26=k1)>J zuG>Olu0J_RpgiN9X@5$a$H>Fj3k$N*^k4h87^`K&8{IA5j!GzoL6m~S_tX-=5toBG zn#K(K({DfAd|&=P6$z6FE~#v`TVkeLi>mVVnWeCO>bpd{t>mK4N8Dpy{HRM-a89d0 zxq5-j+QEa-%W(o9vXQf!8KS0}2n~t@XW4e%5EBVgd)c6wWC>j>*PJkWl1MtutJ z9^-qoWO!hl^T)u$X+4x`nAeDONq(uYi+($A$!~)lQ!jQOdm|%C9s$y zenWfQgXM7St;Q#8&sb3!nX>p7tZ}CtzGUWEH zqF_{cpMsw+O3itm=w$$P;C@X%%v) zxfdPoUOcpu(9nGGMWGX5aF=Jd3&V z=(Na0(!$i~0Q~hQBJVjCv@`O*z_gUFmh)6@ndZ+Y#d8n7NnJEGJ5ZmLghr#1s1|M- z4_##PA8~@`{D+uu~>HPlsOdAG`HG|BL|xlqR3gk_OFQ9^>tlQyBan+2oe>u98($t6C&>E=&6!%W~#~;Xl^y zX9U6eOmPb0-~PSLRex|jA#?DJ@!$(+Wtv?%c3luh%}w4^_idACr%_tt%E)u8uRlEb z15*5XZ_I^HW{Wqxskh4LlY43zNDL2VL2OZo(#)CKmaA?b-=Tz{veV~C9d=cFBJfTAf4{irITo(>Dag4pM`anF zEZXvuRR3SA!u)bi62M5eA<*j5n-Ia=*&y_c9Lvo97y~*fXqCI6qV(<=#b# zj4iae&$s-$gc=U0l>sa_{!C=JUGmr^N8|~^fsl>!$RQ%AB}ai4IrfKug=gp4am4<^ zy)awslflvLZc{;-cPN6%uZWs4Vs2~jnA`RNF}cPoz%%wb4=j&1qES02K_-_?qKpmm{;=E3a@5)8{Klw3QH)W+=gfQFb!d2)9mQR1LT)#Ey$692m|tS3-c(R z)RqS~B>S&7d~xyUh9MVqp5GVHj*!^CUvu_4k$ragW9K%8 zrGVfFNa9ga@Z33Vo2FEbdV`by^+o!%K`?q)CDh>VLR|AA^qa3ceKN)nr5Np#a*%ei zow0;dFBkIKjUBMeCx1iv_>&y)x*a;n)KPPV_hw5I2Auk#Z%dBK9@`K$4Z@Tq|E8aME$`92s``Z zJ4%|xMpX-K)ZCF^Ev?t!_D{3MC>)WgcKOv8hfo{?T?N!zn+x96U_ou=-PXYss3!#$ zEjt0IMSplHxkfI5&$Sf=%aya+Ql39DT7O9Sx0Z(I*eRTXC|||o9gjZ1;)ts^@nvrD zH4rQji^BV!WMNF0PsWg5!0xfP@ZS?rSbz)67rVW=S}Bw>qWGlI^Q$!6n64n0xyHO> z=8?d+^6Sa}5ei*7vNuINAB_b6c#&dAu4~GpcSyT|b&j8Ef!%*O%uydVc6sBiQHA0w z*OpVbhf1ij=&70qdyMDaHohd0lD)zd_O|g=-udpZs=w>`KXl;u7l@DV`|_iaz#sRm zd;2J*vZEMURadj(I}fi!c&a16SqSPuJF-zOf*%4uCx;(6ARj`LbD$BWiEHP8g>`ui zRbIV^WaDn7A^J}bY+!NYNbL!lSfl=Y=MFqLc1^`L58RP`1gL^*@ZyH7F=7~!#x6hi z-U7X$F2gC@NWabS3SrVs1j;Z}mqHB%HY$~K7}&Lg+N%N;2^U)xa(!5jH}r2s{nroc zYAM73!g%RxaQiQSq7sKyn{A|@y#>!EM}+RRdXharwHG|vY^jFRFBea!3rb(xs(d@4 zcX!9irQcW%K!jU&m&8Pi%=HZP=hx)5*}0Xd|Kkf-J2nJCRjdwwzJNM096Z{<#e8SD zBwfM&eyhSMl1iS85zsXye0g(3nv#}yPsOoL@7~VRhm01_i;l>7L!cSxw>bL74?zu6Rg7A0lI>b+}x@&|sTF-<`L^;5@=pZABA zPytlZX&q1jHR(6CVQ}2lc1)pxUp%mMtQ(|rbQ4-GjZd}Sbx|q?mYRFN6`q3|)sz3m z=FES>qEqchu5aq}73`;B1ca@UYs5diCOs97a#L}q@I=j`FD!!!8EZI@ccv2Ka;kyn z={tMw)IqAiORd{Fq?;qUzz>lOE^S?d@9(t&r=^x}ApUaGX|1|8;-U%O|5`{-*B@YW z;Km;+0L&pL4&ssXRG{g^s)S%`=u!m6Aa_Q!2&0X3$`0js1nZxq;66Ew{0?lgb#0)V zmAOW7GM;KY`E9;20#r8X#2!9-5bSEzIevQb|Dq9VM~i5EA{zAZFVS)0Q+&;Kh9}M; zJ@p>8oD9&tGPu;0(UKJ4hH5xVa;p8(B;u_#QA;( zHP{WRt5a4BYvpV3%04?RC^MGyeAh~|A4>jARj^snDvAoBre{#fj{BsFzq6Kqn$+dQ z|B?dd2qNPXkf3u^`*sr8uyF7p^GLS0cMA{-MuoGFL!+}ZI2}5b%TcrltARfCE5rNZ|O-}u<1prOCb_@zu!%rCe;cLD?|S@3GzHR!n(jMpFn$Xl=zAp1p%8#wlN$ITw!!S zYK78B>RUGef?@rrGJr%WV8~nI10ko3kR1fjAn^FsE^j)Xd}G4->3ROe5qM)ATjZc< z*3b2SctKz;U!2AvX_mRRDa=vQ@bo5Wmy8(0^+a4pl0oyJ@wS8Tp4I)g){0HlFt=f2 zaz9l;_Pa|b^&(Ew(nUP1>-4_-A26_i(DAc3$&l^+ykDDreNwVtSr=yK!b)fI;Nt^i zRfs@!?KKO_@iz9e4y!{^Z3qEPZAMEL6KG~mZe(dw5nKyxV678#IaHk2kkbX{e~Fwk z>{#jQF9+rSB?|}+^n>?pI~>vpSPm}Cn`$IL+$h?Yw^DEcJ~t_{TQ13ZN|tsj9l(#c z?;}r@L-)BB;C&5^7zn)V3)gHaBW8I5{V;v|>>z%88}v5w`O`+ome3__ z(utC>$J{s~qc1VZzyI;+86kWT1hL)uJ`daa;-4;>=(TL0Y?(a~eSnfsaYf+N#%HVM}i9xc;SXF#p`-se>mtjR*}ojF9au z>Ig-Jy?}wN(%!kq^a>8AZlU!TU`(>x;&%FBdNRzlVJ@DDeDvD^P&Ij4oUFMhc3q47 zYIIy?Vrz@kCP&3rYPXF6byRAoi0tAA$Hl?eg~?7nq!rHQ$eiOL$N`lMbmzh!;lg~V zhC!`r31nAGh(z}|&n$w%4&ZE6cEd+p<2UN>?|TiXs;8|!wpQhssGU4GGYXF46}FLr zWWbbB#_%($@oPJa`RUu-58PgziMAhi!6d3$>vCd?d(mPZ-`{+%BuD;CjAF~%!;L`wd~mM;0V6L-K*#w%lvfX z;Wr|I!y2U)s#-}j=HdPe1n+OY7YRdn`lj;)`b?2s9eRvNNWNlDWRSv(*ZcrNf$Nj# zIH(CY5To|pr52?K*rX_~cP>@~!JS{=zk>iyQ4#}-YtcJ~Y}a2RT7J!m#b?Pm*V~yV zCGA3W$zd3{adu;>-}OxnV|$!YdNl8Rst6{c_GxRWdlzqIF{JCH+b{tpNShiG!$(6< zAU6pEW3Ulmq-Vr|=Pq*MT@bfc%BT002aCI2&|=eW>yg7dRpy`O(xUZ>?7ME6-afD{ zL%}jdweG%(u{+$~qEEFgyt|9g)y3RuPkeRZ7E4i9|>0!xmBJK zy&+BDr?qs^-1XAT#ZCH&UAb80N8tfjY(~jDeJZF(bv>EITLYO=L5oBBP97EB9Os%# zhx9Df^;}G}h%CQoqx_zo+ICn(&_(NTF$zRSRzJe^##D7LMK$_mHE>ieak-&KO#3Xe z@(1wB3#KQGLxmsJZg<+;cY3_rcwX^Bg=6=0Xu~;3&E8taQ)nOpJ3u~y98*#@7+w4F zEx7^)h06u}FBc z8hE+#VQ8qxPDWdGGv#UZ?d82F3e@&Mce>}IO8}a7I&S~zV6(8r)P;9@DwW04fpqU| zH$*4Y-aodXCrUuxX<0p683}UqSdUUmNXO2fH+q*5 zN=^S@aEIy24H{VE%OuM?w!>EXckNWDZqKkCQc9mznQG$hx|uptLYfwBSwhOm$%A7| z57`3~E^MT)xHP70h-2H>T!+h9FjEGX zKVd1jQc_I1UxE{Gn}P(N-j3@Hmxa_8XRqfg?W#}G{WPnK&!!X$%Enz;O5wCv;{)pY zx(mtmAGHr{4LbxdJ^e4)KVM+$H}{bqD%B{(@G^3BZh76}dIzGu7(&7;0*5^h8grx^ zH4pmgT|Z4$^a2tAkTtBjLJb=izeTkrORwvlW|VU2R{n{{0i`qVG_gK2r6(B8CAy8f z2BEd;)P-3OX_-IzMT*)q_Ys`{558B8g2vCfQs>VZvm`b+c&sX1X=zmVtzK z%@_<55GMlOwc~nQ$o1<@`_6E~62k(w}Sgg~MbnLQ;$L;J~I?qEx zW`7`aA$_ihnp-&k&?5Wc^`Z9zg(E_(A}TPEal^7+_UwC+6na$3CQ~a2nEcsc?KBU^7|B1RU4Glrkih_w0c57O z3U%Tr+4i(b_Yc58fs?6M-FWA@HOCim37*I{0BkBuz6nCOGF`I4rN(Q8ID4%CSMVvV zjy!V4es-fO{BlkBG`E1<1gbY;)shTevSr=3T}Rx;q#W%gX>XpAy>P^yeL zYqL^~R@jHCl`E6YhDl$EwQgWPCl!0ysaif`ZrL<6x8!N?USwLT+B(N&qOMF1;Bf^a zeZT-0PE@TWVXB>2EaY2~+cFcXOzycJ?al5vP0hr-+^=+yh|es$FPe!j$pO0XWplU4 zYIRs1YK|B06TAeG#JAW5Rgbq>kL!Gzqc1gg{vu37B)6o)75&AZ3JyjYwVV~%`n<8m zx{|+}U&1^=d+EW&8KlNcY2)U0)!@2hFqSSw?ss2Wu83hJfJw z`V4%sDC0rApp&(B&>=A-MAV_`>-4R^qP@Dh2aoC&vxe0xgyLsUz*4A2+Qf}Oc&~kR zW0*iDd7phg0qS>HiLl{l@<1IulJs~ihsjoCQCV? zT)LJD*xVxS&xj{#i!`z^C zxq8ZZSok7hl!m7DM_SDCM3n}~?xdpjQtA91fN%Zf}`WyF;uHRKcH^@HP;y==8;w$MN>~2*$J~T(FzD!(4O~KCpV7V~b3^>VpjPuz3jOT7Ww!?0p5CUlLG?Y&biQ zu0>#L)DC2;$0uD>s44disrn}F*?I86%58sRNagw{hFE2dwGF)HTWx2PvhLo=C{_bA z@#&h~WjQIAihMRYy1gDUr6SI>CQf|F%%j!GCi)KL+|zWlTYdFmWLTuq4CCRdp>MwP z(?D3YGQuOzX`bk>R|%`tNxh0$2`!$Ewi5iSZj>6-j!`aCD}lqFTMJvPZ03v7BvI28 zporNpp6zZPNE1e$tw1ZH5cR$UC;Mh`88r=GH&T$0wleqJXt~1umG3g%Tt7J`M)<~o zcPU`v;TKhGwxRCs+1T?5ri&9x9*KgMp4-qzx`MRlG!HKBJJ~Ux_nS#(vLGn3_PgX& z{_Rp4-J(9)ow}i`S#l0&Y@QX5NWZ_as~*ZG7SdDNPy}II)dM64&y3)x9>vY{d+|}8 z<=_wi^)xC5Mz2IM`?uI)41BET!)Dk04*Rz`IpKsavLN3G^tYbKe0TcdOCADJtM#8Q z92#QTT47C{p!fPYOf)d~e(`xFbEcRz2S*9bli{v2SukTzEoiPrKLR<52Z9ZOpC__$ z(0cdF7^d_p*%k_$3Y0z4)NpxPV-Nth&se(IrTSo$;*VF^EuBtB$)hJnQ~l?~EQ z-PxxonyA(O(!1L?Q!2uwBPy3+>!pT5y@=+h?Xp9}Ms3c95L?`3FN zB&m71rIfbqeC%to&pH$?PFmg{wSsMzZ^Ab#CAXDCI5~yz5>DljVx?#&bQ7?xnS6dm zK2jmL@+jl5sDNSdUQq_^7pGXa_kH!X&n8LYvx6D!7xOAhD!1Mj&`Nw#Ywk)6QE(0` zeUxn;wCQ*XLKz|wcMWGqkT0yE7}mJFTApHdtJzqm~^k$9B0p2?7H(IqStlrG8K8xk$o!BjViatuA@_D zH6Ole9%f04Eyf0Ky%f%>VB(^FrL^^(RPB;uBFjfEIcm)^7pGvd*rIN`@mnjDCNi1| zCU}?FT*+sGo_!&io?)9NeNUMQQF`JK!1thAPV6O7!}bc<0o_4(rB*522f0_gv(n3s zm6CH(#zBcJ>iiLK&J=vF>UMq6iv)Yrq3_-)2t_W4dnXQ&Yhb}6N#SL2sGQ0elCBKS`GP+%$2C=G!d^kkK zNCK&-X$Gg1g*|4>-nxX-AzM?=vB)2h7Pi>G$;ruucSjY%Xz8kduof-t*fFt3R-X#p zCnE5s!Ff*pa_^T?BZ!bd_T;jv5VDP6$=~y#C_V|MI3lbZipkMUokcv-Flsrxi%DS* z#Lu@D#)Zt091?Jw)sIIrXm75o8u>IU0t$ zU5K)RF(z$7djjTd+qEDgk^^%eDTzAPZon-sGrw_X5NmxfX6iO1>s`w=@t53XP$4B?tqW);HG=btzX^mu6P@ zcSJ2`a~_ywpr!D5M%6q=OlfcTM6DsT4iJ|4_i`I$UogD>kTfx7-@5g_L{5h~s6wkT zI;EO1hwGe-8sR51!D*|iTQ*6GYk^fye7X$l@Q2s--PN136bI(iMRkmE_-lH|>PVcU zh37;rFc)#oEm&`C>fRhl4GPEAtymtNYoS+gh;~Zekedrkoy@&Cw=!SrR>Q~!aFMdk z`cRyC^cXkEB!_MVPiGJ~WT~r2Z6+~(?-O)ByQ&S|AcZX!e9MH6lY_P2K94X^JcF< zc?#)ai~Gu`EcI!n+_&WnoJx!Em2ExLm$rjoeYWdz6-Ui*q%$Q{jeoXML8dP2kNs7%z04Ia^<%`#H#>8 z@&U8cA4#a!^WXwpY=qp95|^Z-f>ZoccF&tjm{BbeQvC4 zkyEVsGog$ziFMN^*Ycdv!GSh_+d@g!2!m;0_%0aQOR3D5$h{pwiEE5uQ~n@!IlqZW z1mzV_c-XpDxL?%@Uw2>3c9u7|{tCle^RauFLW%3mKkl6B0dilNs%dIFTv`U5WFK;IL6f1%tO+{>{>@P>*^lHKX=ME5 zE_n7dSOJD=}TT{U;x zsk%ILkfU2UNGs7XF?9H4)+Z@3qd?m{dcc!8pYE-t6!Bbh;0RGwU{|78{->KZjP!x+ zO~O-q-4$V96(?(pYFX%D^Qc&MTmmW$pAY*>b*zbt@nu zVW|N{eo$6|StymJ8FpgI|9_SulR@U6VhHLo3QCc2i6pdqL!nmW93@`)&hOZw4WAub z(ocpM5h*~_;i`j5CLXIz@$nP26N#iD8NNIL>w)k?N6$*A_j(XlFqz-?9PN}> z69gezoD}M1khhCPv@`WzZVJ2z51pnVEFs6q>tfORuBK^DAgl>j9?KJWAGu~T~R-4@}}E;cxPn|p0kpI z27NpF!Lg-M8z2;ZFRl|6F4SCpXbxea7%@+0o`- zzDC#X&3xuw)-3aV%X(3kIF`J+KZ{qp!omCtXmTbBQQ6gfx5sqYRxg$+Wm9&~HC3Qo zSwNc?VpN%+gkB5yY@0ZXM#REN+E^uQ!?&J5-i!qm!w!x_>cjG$W$m<=V0cI+sr$q1rz~M| z{ZN)v5jVk1Q|KJpOvF5$iyf2dHG?%Jn0*+!MfoAl;; z#auDU&z?c4unJ0kshM#eMh7 z)Ab*zbYn)gGAW}XuMeTieLWcz(VlBjUEAf?((ltQ>fBmnXxPr>l*ib?tzB-$|`; z056mBrI)}$Eg~z&S?JI`Rj9R+ZAUc8u#&H61U8a(&qb%-Z!r#GnI`9%y&pXxsoAA6 zKI`kEV4I0n-vpR3jBCA}CI2n-F%DF$D!3#holQ zfC9%i5sG>NDq?Z{OFiy-A_T=QSQm0Ur|+9J(xL7mDSs4c^sIRr8pyg&+Wg9hRoSd3wd`N%z=CD%%dCV-)9KPSBi#v=aq$m|VO+ zC5yj)A%w+0XU3Uf{Bi(9=}TM1XHa*E^Lt$|>i>A8u#kl&B)l^3%^sq1k3JHj6xmN+ z^X&w#x4Z>WcColg|9IrN8OiOxs6wC!&i6mqAa|~9O$>OtF)bJGf+Pc1&Pex@to_zd zD|L>Nd{y`Li_%;n055$d#w$so333FA%ThjXf#uYVSrJzs+ICYK^ zh4P}?u~$0*pw^T!`5{x671qZNUNR1H&-!1PcO{}Y9)P;J?vCsZ!eF+bhB!ky3q;!VxP4*D-YiWLTF|wrqA$WmLRg>#LHG;qjOE13=Q_Z;?dPul&CCCs|_` zj`)4KL5t{U3sa4Adv1<(=p=FtF8s>5ifr@`BU;2lO&+Qdy*Fj)mnw}ixz-* zG?9!JcCQ~wbf+3k1@ga{AlrZ>^m^3~b?i0Wyd#VbDtN?jBA|2C7(}^%XJU$Y{9akl zE_4qhPJda$-~Q_J$ux!Sgm*j?K9aJv@|-5Lpxf(U{S-v=uHp565U=SeaY&jx(mIM0 ztLtXBl$qngofW7B0_JJ6cBTEF;~r{I-jxa^5tYSdy7BgQ7>TqjEmI-wdBJI{Umxu! zF30hfe!-3dWq{4v~sJBbQUS=VX4SxBRT-Kd!|>eBdMy zg=CSjv!Z+7zNgyrg`m>7);k0h}*c6e{Z!}`x~{zpqy|^mlQN5l<8LY00KO^ zIK@KUkGE2ExilKEMpi8509})NzKndTf-Tg|N=Bnt#{?8z0glxukvp4_i!cylrcZ#I*cxq-Qfftbj>8<{ChOT7rlcoqyWMPGAXh z>W6lN;)UHwP2xQa`lNH*z1MFH92M-2Mky#?xjDav>aDUZ)dw1IfBfuMapLcL;Afqu zCjy)?(al?ukee>vX^&s${QQrYYmk)9aCCu3k`J?rmKg6fvY*O^vo63HCjW+=a$f8# zMP(o{&0@NSHw@puKV-?j1*Euv)h z*(mPhv_JLn`p;kY_iM5EW4;uJNqlt#s}P@_Gp$!E)i2^R6UE!h3*2{WD%P#)ncWH7 z=gC0y7CgeR1@8e8;X(@3&r2Uw#%q_H``m2_@JvMsvd}c5MPLWjsIA^}!Akufx?Jb{ zgGGCuwd?Qe15WD}&PJdqQXLzxZ!qLY5F=td0U+jh4FARG{>c-ZC`8TsVzL5uO_$fJ zuI9_o)f-~}!xsE3YWk#O5~;JnYodSb7lZnXcPp6Dxq&vjTVa%>jWACo3|G{Rb-C10 zX6yiQU7PT*8dSwWzYW)Nv39C;<+U6{p{LRA&TA;@gxaFSwbo}}8Wkz-<3;?tNt3^N z6h$X|le)_MqD{q6NiE`6e^^&{`vx)01w+gltL_0Tt;DPJ=#C=}A%@+5(0?8KgV%$T zOW|*=v%^Iy`4_mLaja`DMGdX)lMBj(}*XIG8mznp-} zG?hV;7=*je)0NQa+#df|o#5O)W|7I*k=^-OKF8PZaB-@E(FB!BAMz19aU;Ofs}x=; zOrO+q6U~gzS#hji;Q-);I}gLK$2ejaz$7Cy!jSLdNhge)lS!($l?AuyEtt653IFkU z#~pJ9H;=h=Z}|!SqEr91-X2vMUpsBU?Cu~yJ^zEypDrPQzd)O_i0hNm`%S#pMiDSs zrTdM^eFq*8-$DjiX?OGE)A@6^HFC=<{9iV^ZtJM0;9B?&>-S$u^vAAG>^z~Fr7jdh zBqTx~l@Z>=?F%fFMo)?CN}j~W^@{$E1VvuZY+)rc3}rYeQ&GC+RMi6-X+RbQFg^ZH zLbt)>vE=dH$k_h*<_!!kfW8iEKtvT(!`^*Oh3OFh995WNzcJWsyX6@A=>Khuubodm zFS;soQ3>y_m-*}d`-8|mebHAcDN{-F<(*4XznCEaNGNXMi~+6!>I6KW3Zr6xr(4Mj z%<+^6ruht%$3Q6i4X_C@4K^(Rz}{MbC!gfi{@jA$vvkNB;2Yb`8vo|;j%AOr_YaOX zpzQ-OqjP4{L1NR_U4EqvVpdPAF0@;5Y>(HC1zB+Z+asHJ;gQv*Q#JhyNf@nD93(a& zRUSNNLZ>`PV!~^u$Wa2CAA*>#>NuSmQt`l!{$Bk2-|WthF3VU#Q?4t&QOS42za=D1 z0orh6Kgx!Zn)nD{-@^cG)3Q5bFma7iQ>M>Sjm`!L8}{MQR=a%*6vsI+X#g5xDOSCxc$F1q%T+i$s06DBFFU}O5^?D`3sWv9*1Ld z8t2?Gj$(G~D*CO&U3_Y~7ZGCjCEDKLSHf!G>EwB)Usge57##gXCOQPxWjxt@TjX~y z1`}to9J>izwjiNDwdm&yXp=X5aO`Koe=nPJDQP}@df(X5K=@o7Ywx|mWVrm`U>ich z<=9?ZXxhY)1MW^0ytsg2^^wRS-Eb98#yweaV=yVH++>pSHwuC=2q~0Dw!0vgehaxu zcU|GZ?;LE89-%X6LCBaK0cZfU$|{^D*_F~Lc1yjgo%nr(LB^x^H1@hgv#9Dx44lC9 z3`Q%L0gM4MK^S6KCv%Oj?v#y`t<Wgs$KrA-z^8(WC@cN>KEgbIWNYw$s|K6v9mO_hvrDbY=S+U)vH#&o8cfBg%Y6cqtsUL|*<*G0V za)Q&%3nU;aU9AW{3i9tcg;de3{P`+=xk!mQdN1c7Z`glt!hLQSqzulCl(G19ewP$P zgn|yrM`gFi;9LvEW#JY3xdNQiY89I2bQuyR03fU-GDaHGI|VT~wUMv=Yh-w2f45o; zo+P(Nwv+x&=?ob0-UOP)yVYP?N0mh3+znY6wlyGKS10w~i`oJFO42Q5R^yuYmNWX05AjYMlpmEW!UCx$Zzz3N0Zm< zT`p>Q>pCUlxaR-+6pk6gkxo8*6)B_kd&P};OZXj-9=g_{qJU)vV(zn+Fw=hH?#62L z7us{D#z{AZACXewF+BgUg4z~#0~4K4pQNeM2zY1fe4@SY@>;+EqEx^h_blV+(}god~2E1(*_Mf`Ou=yZ^>CWFxQxv$qw4}tywJW zy46mbE&5tRgU2_NvInieuq-rSG{i1+JZfL5u*@%36xnXHem@g+X7r?|K@b^R5wGRo zur!rN#DPPeWyR2oLlUcw!zB#0zrg>hYb!`m4@6LPK6@J9*2Fv`Li`361pN8>=X>mfM47`{2-?6rwNGOv%dE@0fTo8P zgvaKXdd#4GxA2gj>pY!`XKQXqs3_W5Zd=G^Sx6hS6kJMbU%(U=RlHmmTs=;0h_0C= z9fF>dZY1bFftkCMTpIc^>!x|@vBzU@-o!*>Bo(GNKaEt7W45t6W?I;V=y!o2=T*Q3 z*0b=i`9TFf5ukhC5&2X(e_y)Slw@|__==Yets@u@aIaJSgmNceEX*6qJ;#dl9N&hI zjoL#O_Z3ThY&_F5=Q`FlKR+dcV;CLQ1z-mZm7CY&-sZqcX}laN zjMiY@3IC?J8bSPdV@R(IFg4SeyyEZ)_>XFK80wvTJYQ!NhrS5oX%-7XTAn_~f%UAF z{HitC%8fzoKKSh?#l8gOX9ssdZ4ItJak%&aEe?IQo4NneEuiN@Ui;uSoAS_<$ZM~b^e;`LZ$7XwLIdg0nLPHlA2Z@2qpMY0oAJs0>h_69;37bFt^ZTYFm za{D-Cvggh`k0&@uW61T*2loRw$B;Um=xkBt$SgsY{6Uj>L!9o+(=t3uGqU|;~*UgKbd6Q z7gB+M3C^=4Q4D3s7w2tCbwg{L_(og~4ZB_15aO}6smgk1=Ej}cjm0DcOD~f6$hfQX;obVO zb^iXBvfDZ&+V8pI3Kw6LpeWko;_YjbL7innGi2(FB-=|Me;heibwtiO@R=W)D81;I4+oZ0`Hzlm%h5>2QWI!VBOw)1MoB*LPG z|MJ!4=6rVQd_ji%bASk8_5N`>_Sb~d-bHU&4I$A~d>Mam0e<62vD z%r^`licHJt%Iplg+oQ`OU{R@FYU)y$^30S3B6}*vqYJ+a6n4%a-SVr4Dx)2vg`?}_ zwGm_ipJ)~OHr%&5XT|vv-eB07R8&Lba-%V|(T5XD8Xp71*0E)`(=AD^$i9f#6y5cD zyZ`J>`B{dEV!O$z>IK?%y-1bPX;ppYLQnR;83^EntW4R+V??UgmHcu%I`YFf#6b6RoK3{_`M)H zb|OZOwpIGLR4yl zwQts;@bP9~x<%YT)kvlGq4@1LkzjyYE;+eyHj0&_`uqJp>Ljw~4`Zjoq^}m9ARv2N zPlhkMX2^I?OX+d<*IS8HW#7urj8>S^2`LMN+?tJX*p=6;c>E<-tJH$i+PW}w^YrvMa~U|esLjhgnJfC|5&1FeVqHkkG!>yGTz1~qMH zsW{RO2`x)Qjez5GD?e0Id(y6jOKC%uS8@(-Iql>xE)M3hjAemIcQ?J-LojU)3ZN&& zyBe6+%+l(;>OC)hyv~rO{`8)58DpUU{Ed&`NKFkbGG?ma%m;cdhhtvB)qy#O^A)?c z;@c~uGo926x3v}Q=7%x~z1o6Sbcn6pZ zWI`odG@lYCKkxOZ85ZSTzdjDQt45%oEe&&+7QI~({6#PKh!lfx`kcP&d>Rk5TV&TN zPEB}oI$RNP(KO-4*D`_z%0!6m_S#G)T@D!OCmQ3~r0PP=qWL&^jJ;iWCB#~==rz3I z@$#*Zr7`NmR#6JZM=2MvQjiFx!NUi&w{G0ggJcK|Mg?XOsFp#ubJ_Zm;b#VU$1LAn zS(6|hSj~#2>rvB99=lp}@z7R92R%)&4Q5esCSjPoZLf4jq`65Fv(GSD*z4>i_UL%* zqTplJ1-VQl4)0AJ9PBR1Qp_fq_aC$cUuJkHn)kT-QG;bfRL<_w_HDn!VE?W$3R6bq zccbiDC5&vyCD;ck>^gU3@)`S##}UY)LRA**x;Nz^JQKz9pA!Vg@$Pg%Fxvh!Scs#) zRiAO~rO@$oxxdAaUmxHB>TNv9At-DbbWB|pWPXmyZWucZJWc^ zLCZyBo{#-IZvvVyukp6c&W#}iyR<$OdBrwM`0;uYX3#WJbRy0)=kk>c!v*tz=;@O>`FBM0f zu#*-8kvna!*%(k{uIzzIa+Kb-1Ed@z=;}lq!Pv{=Y#4-3A&Pe?m>?mAbs{?YpF{9QOz);f{WMK;T=0l^O{P|n<4tTl6p=sJsL0~tz4YugWSXj zhwzNt_HQ#gCGB-^Jp(YMA>uSd^zIHO{f1tr&JO8m*Vi0{$Gat=JlCq>m5pA1`AN+R zl#RvqN{l6R=hM(IJ3(Gi{tB$1y4;;=cL_x`B0AJr>hF0gb^caCk#9PNR!^Fr=(Ox| zd25EOdlW9G04WDFwaew5@A6r5a^lsx*Xz&YqiD-nw7=O6UMs>DoAW0Nj3a$p?riZv z;mHLkWMg!S0 zVx2ik47tk({V?TI`L*3oAvsPMg8jVW6-9atw2$oH&)SI{X zM^f$cjnNf?PE*f{b^+7A-~vd+!0&R2H=jUqAsBM8*PARUA=Kiqg9>*aZ~@6bNllk=`McfCW^lV*y2qsDRQH z=@68rAfOaM0trQW2@oKJkmNs?DLRPr2Km2led}Er*K#E?UQ*N9RG;A25QRec56n&hnclfN_N%7lBhJUI*eLZf8HU%E@IEh$r z4{QFenB^p%wG#~r$5Fzkhm{Z)sk}F+FDxIpemOIEmKs?!%8Ka;Ncb#Ej=5xjr|Dpj zQ}41Shi+RFjCxxT`8MZiwfs&xV>mUO{D)7e&H4QblG)d98N2_{y($|za*{2-!jl zQ;W7cQB_B^O=#_uTW|~YKzCpHIg3wBQM76SI7!-Lx6QCM zQ_o1#Bh$?T9x$oj5;i)XMXWjs_htP}%zgW!>vb{M^s$j{P3jh`h&tGEzUIDcSE+$b zQ7Y>{v!Rs4!zwy@61YpN-Zz?+KO!Uu4O3OeTnb4 zT+PR~idjEBU**k2cEck7zOs_^oT0H^Y~pVRuv)S^?O z34gCU50<@~;98{~aRrW3T;0<8+>4pmnhop<@7i98L`!rOWThJCyAHD&a4Thl11(h4 zPMTUJ83z-jvHYo%M%{!H!p8k9elK3gPc@s@_saM?dGv?aTKCOt8JV#UCBbP*06$l> zRVXsh@gmw09(!Vc#ow3b6$Np+^6H*>g^Ougb3Rc`;khDe_VucnHLuTXAgHq^?JHex zDzj#juZi=fFK^E5m-O>fXFt5@wYvDWF!h`RMymN@Nyh58?8jbiiJLxgRQ#9)!;4#>e*n*Awy5=WH~XCqu^$Nq@xMa$6=z+c9* zW;1wP^-;okA?%o&iPVtIGRgztKfYjP6#Ju|HD=5V=%LSD9jN3w-(r*0I9^R?S*||r z)1z*z{5~)MDV5pqzW&0KgYw<$JO?CU%w3Lu#&aaDv(dlliDYMNs}+LFRD)KyCt)~ zfi@;gJLz>VK!?_^jXKBik-v~4gLfKXlB|?QeVTR3C!ns1ZBcF$XRj*|QnOOxkStbr z;RxC`yFsN~v(^DUO_Dgbn!;C7SuXR4RJ2W)m}9F!K@X*LfBRvL0SUaGXnoHKqa+L4 zqW+#vp;wJ6x+C2gjcd>(;gl`x&6f(>YOJtLMkz$w>@+WznzJFAGNIR?Sja?MYl_cZ zhCipPGe@!*VgYyh^{?U)vvyyWZSjv)vo~?>LW>GIeHzcC+*nm-kY*I^I!lu1K&RkT zL~Oh-YPHN1Cj%zuzU82ILP84e{w-ZY_tSbfR5#+62UmPZOc?l()l9Rpo0|uN*nX!? zgwh)N6wJYt93_=yH`NU$R&#Tij!Ri)r_7S<>)Cxvi|$<6%AFpVZoF)?(yz#U`yGwo zu~><;Y$K9DL*S(G%kc*XNCmC-^#agr8{Q|pMv;(Q{vxAodKdnnhhTt~YNk6cFW0Ka z7s70Xr0+F#6%qtlI3`-uebUMHxIv+%H|1<((QV1s2BKJQg!*P~=*wR+Ee<% z5L{`$Hx}4gHKiWs?yPe8L#?)CAjFw=8?R~X-f>OZ^V84)!JcjdBXXCJ7}C#f{oD5# zJDFiuW4EVR0~=gHhC)SRlgeYna%efk&%++SftCz zma)pGnzblxRcTQbQv1-BSvO*QZP1KTTC0+#^09o-zM(VG7pCEwjdS%JTeDjTq3PRY zWlTOd15TSZ<`^~*Iw!VYSgO^|%N6ho31mDP-FLPNri{nJwl&f0F_jiA$GezLUDe!j z$Fa7J_#}TMFR71dEArt@ZwWTY>4U@@FuR9xERRs56zF}^qU+IzsbNgOolqMDXkjkH zuff3Q7u^)1nB{Iqo0j;;h2QG4+?lnWYjE7B94|zOV@tNdWUa^C2nf|ynLIrvDam{@ zLoL@U`as{W12TxQV#!)Lmm)J?KOeq63rKQ5%3=6=nCnFI1h5e~&1U6PPN_5n-sTZv z2*LB=1rbTXs#3AkecU?oS*blBg{kd}xU6djQ?wTd<~agnHkt%amIlbfa} z6g8#3UM)HDUbOec-bc3i&k{hbVqKxaZ<|E+TVLVflr7RQ$gwx&&b%HVF-8K+!71fY zh29}2K8sX@g9{SqUvIKWgAxK|qpd;iu_R07(i^7Nx*j2{MTBO5Gm-N5xyg388#39Y zHau|n*L&&U*rC5KPPw#Z0nS6#WSD@K_0Vs%a zopOUxN#-fB&{8>n>2Y)=x~aIA?bO6Y)4n6UnJ-r1J^Hf!W_{IaZabZ?we+A~!dAGd zKnHSpw~UGzla6rD1a49<*aGnq6a`f!YnmJoyV0G>g1v*|uM$1bv&ky(0yWA=8cq+t z)fT!h7Ag|soclJ=w_)%q%wPs%TBLypf*d(uF~$);7~3pvCQ zpPg&%p=c<0r;3y4Q;-!knC-RO)<>B5`u{-MEa94EMHNqiAV%VdovlHb51}}D;)9;nVVYOl ziXy^*4*sA56d~;Da%m6Ie>yOR7RS!xn)lGL#`9k$0$WUa0{sfBAN=u~}%gRuO3;_Idy+2}*{V>{RyxK3*aTH%y%Cb6f*bVV3(elc{o2t;;z@T(s|zV_uHX3KU-#B_^9~2-Vx8b zdbEdPA*lW#X_&G+qU7(>0hHTTv9z zWceY@NP$Ux+VdI?sc-f#3HWsZ%Ui%U;KfdS=_kbrWv!Zd^?;TU z>YdEJAqdMHE@2#volJEbUdOx+YG@y5Z68uXfA7LSy4Me4EarSr&}NjHL+RTR>H#|x zoUt?eh9i)cpvm#%n2){v3CJGR?0KziQO~^X9c(>n)33SWIr-({`E3g}3%a-aDJ>^C zO8CM@{nl6B6$>oJg%?dcjcY;^3wl*7!EC;=0?@!=_4Wl4YJl7lSo_>M?*Cvl7I3Qr zRwl=oec=<|>+7B#4TOw2dhxSAv6V|oP zm+X)bvhR_SHx+DC^2SIBs*}$;oq)~TyIu12;fban8%#1;kwVZzRd1w7rkuz4mx&H8 zRL&S-NWqD3Gukl>U#}A{-P3Dt5`C}A`-_P1;qDlx`$kbC*?1qz%=H%)f5ykJpN7nI_$-rQ%16hA(^NCKO|A^N#}q;e0C0 zStgrnPCqI<-`Hmf*_V_DYo^<2Jxf3f42Th1!!<6$6Z}NBMpV6u1geLpWqD1>XY1Ly zvcxdMUMkR~h%;6ZQvrwR_Zr@JFf4Nq<&VBuh4G)MQKQWsaJS2GOkwsyP3ocU>ZTfg z)>qAHeBOGoX9aX=yNJxXn7wa)Y?^CdPaA_tic%5D;`Jh?K)fq4rT@w zou>5ebIVDpuM%#9o?v%)VHCwAr+=24r>YjMcHlt*thT z3MbTKf^|QhKir>Yp(gBA5h;lzvyMqh3W@)H%K6qQ`4Hy=c^lM6P80V z@d)W{gYDPJfNSr zv@g7!=hL>&>Rwjy!%ILcR@2M({jCL<4=@wu@Q1`g?bJfcV_HWBZY}1k|M{!2&?fq= zO7esT3!K;T*>duaxW`|$Il427-b?yj;)8Qj_|NbE^-Sj3 z*W%z{IPZV?;oI{1|3%+%6aRD*iqbR@pfq1eN;Y*>Mo|aisQfw#@;fNFQRIPdmnn&T(1hv z^og;m0ybMb&3~Ohgwt*K;KkjwT@I8RgC`6_JM-41U5N3P-EEj-e+b^7?xB!sQ9@Ja z*2Wyn^?GRD7HNlj2)BMufay$6nh>75RmMu!J}!zE03=Xdn_F8{mK_c;bkOjz&vYM` zj-doW*5LTT=T~&Aq-*(WZF%GuK~$p7vVQ z$1^Hi27g92Q@V-W(-h_lMOm$8YKBp90;NPui1omz47I~e%<%C z+>oAVxoq}hr5dxsl+lBlBzPv3rlbh72lsDpyW!^cEl+p|k;d@!Gw!@;HMiLqK)V?d zq^HE*@T<{Cwfut~pfVWPZS2)i=KSgYh2Wf!9+#Q3mQ9~u}cAj13 z!DaZ3n+xPs$K*6-IX{lLfx_0oKr1%^bei|Dm8Ob|POZbku4zpPg2OC6mmJ;corKnQ zbul=J+N?4oBz_U ztJf$-OFwP>Zws2L_XAf^$4cPRNF;SQpTrj?^u{c8~ z^f+MM>>f}*qnC+{<2Q2UplDKaLd_z% zp&-42T8y=vjf?jU8{5w>p1P~kg6+J_OIibShrl{G0kB2)0`IHubaZ` zD~8T|!R~V~JyifuFb(xL2Tvt5g#w-`tFkFxGko{X{T9`OA;q4C;MlUEj3{I{f6bw* zoo2byDxEFsES%m-G6#L!YvMuD8jLLfRAE=)@GGmP_(;3F+%eA{oJ?xPSpI>xX>CP4 zBxA~eUf|5khz3qD%X(s`K*yV&6X&T1uTHc1-cP6%a21TQ6`R^^_(e$IaW9&k_G%^6 zgL~YVc{f|P`#nF}DI^a|89WD2+P-;}-|gZN)Gziyg67}hPU2&~+dOTzsJ7)#`%72Z z9oeg^a_77uL0!?N`=0YaBQbvM2J0cR8zP07&n5W+d1w~Soo365wNW$m6BTMyDI>>s zzn01LTwW!92v$ZR!OW!q<=M~~#qKXUH%}bk80Ojcx?><6!}eu3Rl*8MNcuJ;?* z7Cr5IB^6>I$5iZ!eL#FyOHm*u65Fz|Fijj#xaQ()zFn7_wV=WG>-o~}aqYR29AwWo z*W|$BwT5Yt>%29m?Mz52{iR0iP_%N_sZ^>+ZmA$ejs%RwLN8|S*R z?5DR`?RLCDi6U~IvD2a?Q5uTF1D^HI#ER~+-oxG1dWiC#`Rwfk3NeNcqMP?92|5E( zk-B=!Ub2)(xToC10QBGnteLc=yeN;&!5JkTBpuGA18V^sXk>1vS#-s&l3uIk(6V6LgNM&^QfU^k!!7;tth| z>xcVHMSZrc5SBP>S0o*wE1{Uzg)i>xsOqfZ;o1=+e6O@5+pG2bL)piD8%N=yiBoMP zCPFyIuE^Wz<0>76X>PwD(P;NL@K3#y&U=CbOr*BzPb6lTP%m$;N(DJY=cAKC=l39+ z-WJMBs~Ph5zt$He#~pLCZ493=Ga*Wb)ecIXHdBo!F}Yn$*Gty_2!D1<<}-P@@H7^W zT;=L2Ikr9Hy~FX`%-5~^CtxLeG-3p6zFxVlj+YBvj^S;y>(f0akRE68MC+;$bXTpq3nvGUPv8gRhl3*1 zf;6v*mob!N_cEDn`@ei7yAyB}l72Vyf|kJb!ZJws653199_nZGj?5XHIr#LOUq= zhiv}NxrVe@<0VMFn}HK0PwPIIDjTfJ^cV!0Y|+DznEY*mYHnv{@^vJRTzD_PlY+vC z?|g%rt7p*q?i+ctxsE9G#)Gi4f5TYVZvW500ixXjJ3sQ9a8P(vE@VFM)z6v@+v-pD z2BWR(fabUPg;$cx7mu;xol~3rrz;7S_0t8)yY!cx?ld*=KoJUBbxb@w@KIu5^XC`E zdF-z&9q|x_0>#`X{V`G4ae)G$fsDHl?H(rFOJeUxIr}o6o#{>*OSfW8;j54ajT0XC zXNyQPfAsdonl0lNxf<3RIpSsActg?D*YEkpw@g{C9oh0}2Thby`5laZA+myV8ZJ7Z zM!_(xOirj=jr!Y(!qzJ`)HWw*)DuTWR9PLsCggiU$-bQ+(pLYa z+n{kD40x!VeuWD$I?HHXIo8;M+-@~5O?g{zVn9C_(XI`qykD3B#}uErx?JSp=aJ|= zS@&7o9Z+tS?-GWblN}++Pdu3G76SRbdC>zLX-;7t;OJ`H!AacU2vqi0_8)aisijEwf09-8<XUET0%mB|#jyLlWVGzbn?gNKp;-4mn{mA-NuNebi*O^?Ah`t*L$YKVr_f4TSj3Y`ku|UKlky zw#9_IxA_*b*HX3IBd2KG<+0&5|It7;YDTcF=QW$6qB~7Wr{oI_Kapp0o!<-WWpy=X zDY=I8R~qr?!w9^w5|6~M*rMJ9B3Ve8%TvxqGtTSb=J}pNkI8i zf}?3$W{EhO$3EoHV9a2jQhG4I+=fC)<>~e-JCHt=E-}K-?_3cWThjw1Q%86V?e{%4 z6c?`V36Pd5(3x1ho~ysIThT+UuH*%~*Kf7LM^p9d^xY=5aI38A!K%hx2-Vd#FgqM z;|xD}4nF`Hbz%sd0+a|Q$m6pI?<%upR}v+=T{P_+KPDL(65_p(m0C@Y*@WCp59VGZXoZn#up0?>$SlMkPzm>Rs+~L; zU0!HNpdhHqRNWihT|Rqjt>lJ(H>j>Ue^6u+0(39oQvpIvuXnafe@L}rKOAC8SNXA` z$bs67LOn!NM(_ePu22hJwbBo2J zx{8D7G^EFoaW??BGrU@ZEX%cGeTizBJz5I&dUkm~=mR`7>`&a8R_ocz&dS?-o3k{R z0Jb#_ANgx%C2DZ}vslYEF92Qwb*rohj@+#wz9u6w&q#z0A6p*ieaXt~RhK!kwPGxZ zaQcSg{70Pxv<9kYuJ3+~$ zqOJGd5f2Ve$y5f#uO6pPm}9E$iHp4nH^{QyI9_WGQiLeiUn&DpyzT&p&tbWG5JbmX ze2Go=Z5tV&Wytcf!x(P!5qf8kWbu9w?{ScV_nDM{J>cVVgDxC}4{bgW@m=9dJ&FUI zJ5uW0(7WM@UpMiIdCj@#EH#IHKuuOvAEHM4bvAo4|H6|LuIj@E!V!0~uxfj43h@(} zlS+H*ZmtR)m?o#W%Wo*0xU1nUHPof;Gk$xEuik1%JkR>1)Gqsph?73sH*nRNsf_u? zgQvkZX|}z?N*7T-rdlRd$yAJ^jJWkD@2$PG%K)pJ#O4X)FcYlYk4pNa;%*1*ciCfV z9905p7)`9>C4=q}sx2-R3aT}e+R9_URXw`m6nYd5K=~Z2?12{Be8>bl0*j2KTM*X| zv}D!3QUJR$6Kf7s*F+`{YA_Af8OexIJ+>ng;Fim(+AjSb)F~t^Hd>L<9X-6| z1GZW!bUY1BMcy2|*qT)Of&`|MTjXFrz)B+uAKvC*1iD`6QxoWX+fo`nxE1dybWd*o z?QYM?S&!(R^b4~(O+#m2@>gt?FfN+H4`hwY5;E%{6H)BA;_-?eT zzxsXs0c=}%STHCliNeW&xXiA*M+2j2(Ows|kmIjEYfj@wj>l|l1hxM_jjOVq>q{W` zn5X{x2{DJc3j#fW8pJ2;?iC-<#7YYr_n3amt192r57#mfKBVp~zw^Ehb3gP8=K7kq z{+#?b9mm?mgubW%J!G)Sp{rywESiEruU9!xmSy(2@2-eYx=g?t!jz*nKQ}e-1@q<> zw=C02W|kDrFQc!)$pc1L(IOCb_9nqK6)o>pp)j4AKeDr?3Jh_T2qZWvzm;Ii0x40s z{jdWf1mRvuQ1TXLD$dzfdg7)Bu5)Hx(-rn;38NRzrw50f$(66N9wQo7folFuKQD^q zq_zro@l7Y6Wi_3`U{koMhBy{_6xIq&iEPU8CQoHGJ>DKe`@Cbsva^MU$eR(xKKLrX z;v!ay)XSbx=IC(z=HQuRiTE)m!TduJpjKpD3V7X9F=9kX}@8kvkhJltU;gZaAHSPH)0^o3$7+ zB#2xyoxkN?6=tV40ndloiNoBhDkWP3?g9kxi=6YnrEk7>Beu+~h!AC3Tjjw&ER@;nk{ww-6-ksZMs@Pl z+bR$S2kSDNhIpGPoL{UolA!imG0J;XKu3e7yK)W9fwl(7fO_LxWgRajk*H74kl4Fj zJVQTTQt?2vMwY6aF2dcgGGDenU=^+G1$c4@;-UJn7S~i<&!7XTHzy$wz1A$IOE@EL zb(RfAcNr5%rP)xUSA>VwJ+}fp#^fFRnU_~y2eJmp_nkK=1YFomUn%BL#fRQ}8mUG~ zDBpY+z(e^jmt!-6jm&kj2ktHKSfc#c@bWUl;H;C(uI|A4kYS#ua@o5Np*>7=k$qwb zPf$f8SK9`F%#X#y$G73x-iplGQm{(T;(?)g89Z{yZ*@Gi2M)A-SMOFgnqx_3I<bT>Z+3O@@5%Xy3l>U&*yA)35KJ0 zGf#2HrHVHhKeV!WKj;hp$yF^^f!v!-1D?V~L68+!TLR=O6T?avWbHa0t*mf7LejL= z80h_k3uH<$X${H4N38cQlS6rOK z3V|XM{s10TA>edOWXNqOqe8X^P1(LOfAim3fMGkk_rhr%zLU^)8O-rZx@Qp!JMThH z9=npYd@GcLFCwpAF;+NiV|TPd(9IC^jGqzdbNjH5O{VhL1Ln&BQCYet!#Y{y)B39FXcf;x+wJwPpgcU7)Pv(A z4?Nx_@qJwT(d7Y44@4(I4yD{0`@OhZ#L!@-gu$|z2cE>hO^9X8B174>ZF!rk?u3UD zQRHkChOj0UiY?c_R(?@fp8f~tXUj3M3*u!enjCE6=_mwh!-PPIBKbDtU`ko76a^fn z855U)ZXHDATi&_xqT9mU2%NC8kP%I}}SQDBO&Ap}pthfDL1lMaEKQRRUe zF6LQESB@`6JSO?!C1i4SNR>JkDulb{>_fIh+Mz zza5qEkO&Rc&}dp5Q60$W?s)EhJfY-R^CJNJK88i{0x9Gu&>O=N^PO*y;6UcKur;^< z)rm)DKFdg~Y;5&_k;azyg0WC`dDESNfwgwPBb`Al&20g7)%Rz|*s&QPf#ya1g>%cVQ;r zsmKQ`o>JDM;G~b1?M{_D5{6F4d)&A6*#I?cPiojcyejmEIP={PKHPv2;BiHfK)XS{ zt4#|~rWmkJm_^{gxzY(IWhK_u_mS*+-rwIHz!oBj1KOE~pVEwR`mW&XTjd7ZUPk2t z+$pa+Y<|*zE&U*n_y>GdB8Z3UUZdH^jeyWpgq5HQtCefLdiHACp+0uuR){_fQyul= z3d(7<2shHTHlG}5w7GIwp`oezG*A~NpL(1rp}dHwDGGNU0G~T78r9Gjh5w+zwfl`1 z_dukKmF`TbsH&7%PMSixTe}}y{NoVCox=e4%U%eRn=AMRLyJwENJgZyz|;GmWNa^4 z@jWU1y;1$S)TiI6*8)v6vMIlgQ?B(x-y{5Zm4w~0DR3ZfmNZcJhG=-gxk4To*b>-n zjsyoP$su_Q01nkD;Yc+hO^t^oL4x^HUv>i&6l*jw!BYZddzOtB9~5x-4T-^Evvhp% zpsB)h?5t2vcAH|HXtCCQ@3uSKP{YrdEnv#7j?^d)CWG!G6-Wq3jrzUup2mtmJmr6t z8L)CQ>-^9Hb)FSU*juvJ&5}=!ftaavf6uSo*k!%%@7L>ZlfVQ%1EK5e(*u^q?u$qe zv^XY|Azr@%_7NF2!fJ&tVVPc}@dI!1u~$}KniH6t`+&@#x+?qJ1*iKTsk@-W4Cgxi zI~`a5D_Q(^qfvD8B>EG%VKU<_AT0Z^3$c}`1A9sVg>E6!nqz-j2seZzJj!PmfYtzNwn8cFjz z{mieKM`#gA_;Xfx$I$mEApY+iL+~hWcXsO^_r#4JY}1a0Ihly(E&4;@YZVsb4Dbz_ zzioS7$ib9+Quo=(mPOswS|G(-yKO5-u%6y7kK+*i4$Xe#g_0+Jol|l8x5^Cdq5por z)#uvYJyklT`J8@zE|qtQTkg9NBid%?3X|OE#8tnYOWowBoVwXubm$e`JHHRYbE^tV znCX8M#p;}M9M`2B8S9*1>M4hhCAm$~8?66&j!U@WnIqg7o@cIft|=_zTp~N9XO^dS z!*VheORxJq|9y#9%s#TijJ&0h-Zcf)uQ?^qN+8doKb%4=GSZs>3M6)XO7A#wj3_FV zf^Afy)3?;`F7=AKJ2b70pR~}sra-XxlgtUsa?bHlH~Oht;~Vpl^wNBZe=PBetvjDy z9}YZC@0vm^6e;+Dz<(C8^WA zB(>BT^-KMLQ6arRe)`=KugD0F-#;lva9oHgh5zlF(#cN*N0U|-Up7JK6N)_%=5_Dy z@2v+MO2md;`eCfBtaW#G=$!JBHGOl{0W}PoFZbK;x2N0h;9}gXJurpAPK*MleZw4i zNm1N;cQ&Tw&{M~xJC&~%x!)}R6>N%TU#+Bq`Jp?FoT_DZs|8w=C&_`L$j@Z3=0cG5 zYFc%Snws})m#{YI?bjA*Cq@$s5+ZnF?q0dvwI1$4{+ay<=xe@Lf&!DWkAc(O?L{V< zQr*zo*IGEOu~*&?_op2d4c6SKMK`Tz0zk8T7nFnZAwPv1FWJX6W9>RiZ;1HQ9JfnW z_N-|Kr_R=qL61~Oc=cf4`JGVW&uj+F0aLs8g4SamG)%x6u}z!ZZ(Y^in(LI00JJ(w z-xH=qZPgnZ)oWRNg{h+f^+TUu@^=)T1*c*v7VuQ{tT9R6`>E|X=;VhRqkRWke23-o z>9(t(+`r}uTwFHgXpaXpvVhA)iF?(9@9LWmB)l%ts#*b!3jtIeQ04*CN9Ro_`C zU12sG3>9h!Ovi%xu#u@nGXtCV6(f?f1y%z~_?a911$sEwoBhdve{&&ko*TZ9Xp7M? z_L`DI5#;)(yF#_=8R@m24(?lEM_- zOC)(hk40q#w0iYw**6~C1N`DaZl&A@p8(chuCn)$w>fhBohVoSQ07{#i@SI*V1QAZ z*ET4Tsp%CH#?F=Q9I)Amb7Cvx4*G&Oye)fZR> z>o4kGSXA9aFhy#3eO%jKEr&C_WAy6MUCB{t(GyF>$mqnCbP5GB)lGNUyHGxBwg(3XZmo%L|ct} zn(~VNOAcI!75$TkeN^Ct9=&$&Q2~XBLvs%)4W*ZyyGNQxP;1-1wvZ`n6%-8$3YxiA zKmaJ6Gb1Bk@m^{{oxp-f?uXb2iWZXo46uLQiTZn`^U9#_LY_|@Op?mMg z+jn=aK4O>+Q%mx8Kw511Dfz4=fHI?i39T4~m-@ADj!Nvl7wl4+XBMUKdydKL%c)Ib zP~yjl=O6XCjxNFhKviuObfDN4oS+aKhPXNjqS?(@?3Z`9b*@fnDfT~sIbjZdY@lPt z5SZa%cqh>1OS|zgy%dDX(0IvmN{e?q+t1aVEPP~0oW0!<8l4$T(>@3U&|3S7 zBEmgqKxG2aMc`$gR>6B{cl8!f5n5pHRlZaD0J->k`TTd3pH~t1AEx`M5v+w{K2euR*><|}*ZO0;busM0;Qp7HfdFXeRlWA0Xe>TXuC7Jkx9@0#-Vr7e+_GJMxh z-ImaZo}o8aO}xCsE4J=@5-@ya-6D7}nI*DPVhU}zFPSrXGIs@fbuW_QBXNJ)JUdGwP~|!v4_wJ z({r{Ns|yQ64RakWT7VRE?18+4nFz%Dx>y;d7hkxNa<>WeCI=f_lTKZvyz2u2GMShS zXYuI{Gn(666;!2-D|$}C!@d^3Nr2fl?n*J@Y*SJgRzLON&*|uZ@K*kwX<>$b_D}6e znV5=Kto`HX1gdcA7H?a;eQ;R`ooPGlB&SRM3~TMw#*0B(H$zzH%oV|}I-AG#f?1i~ z13LY0R!JNK$0#~K0FzpGBY@`YXS9z5sQvQtRdqepk%3LBuD8|CEJng=V&V)NyFlP(WCb$H9}*H2 z3f3y5f9M=2o9^8NU1T>ga{H7%s3lrWjgoFG%%e9GOT4+%?DqNA>%#%ki^y*GN^WB+ zzOhy`e#P2t4Lz@LMdTH)SG-=#H|A)lgq_c+x8^vk21RtQfwhO{3f#xU(J<%$2ABHl ziKnPW75Z&cQc{scg$qhG%zeQP?IJGYWhxfnXuWHhwjb3!$qt3A4n2^7{o(Wf{s(^4 zjX?Y+9W(QOw$1B@GeUL8m!)`8!q`&YnljQw*r*|A}@-dI7h z`;-&GiQXs5_Z!a{;hm_}{-J%HMz}178^U!iaxg-GhOj|8L-@dlO`D zXJjVbsXTh%UMuU!lg2k}c{f3E;xdSP{|rqZ>Ng;(uwvX`ZFKW&^P} zaTXkfa?ofsBLqSVjiUL~r;WYp^2CZQTL&SsZ^>?0g*x`mW^Sju@&t0UOn+!Kz`ow zUN9u>g8vV`-2$sx$13{^gg_ut-xNkhMqYSah^7*nfF%^p$oS9aECrF@B9dEgv^capJ~J2aTN- z0joi2ZKAwW z>^yNPS?+RC_HW)@pnYCmmHaf!?&t5aAV1%r44I#wpH_~vqx>0kc_L`cS zqztS9OYzuQW_9z!p=FDD{OEVZEiAYc?Z$TFBJURNxq%N4e^;FuVXJPqCdKaulXV* zA6Ee5bOfGC^_c-+;_Tz2Dkvy;9Qf3?;e{5Ar`%4*r{KhXE*h{Db9W5m@!H|x;o7D+ z^LAn@DkM!1NBHE6*G6moj7hW`F&9^;j4rj9LdK9af52$F)rRTK$0+8c)2JS z&;B#`$quP`Mf{XW!sJnc^nN^9ct8D?Y+_QxG)GiTqe&%WYO+4(>8B#YWH-%mPRke7 zG6#kY#X=wKR|Q0h2Nb3u=w+u(HrXwW<5G!AOK2>31cc&8@2kBnRFF>xd9KPPBMbOkIzyT;A!)krg@jQVrnaQ8Cz=Y8SX=U{mUqDU5 zgdzRO3B+=3ZbeFV3)tofOcf#NR|XXPX<^$JH3nN7e%|W$SshLE%+=C zfrAcL&MoF5ydV~Ij)4R?=UU0}@Di+E8oe?L$uPMk`9M;1O;f#XJ1f10V!1S4x!TJ33ENcV0_9lInSNJT0dYv=p%FT9EQ zz8v#pX$~G=Wr|N~qMO`*yEGp-quo1bDQC|@rvv$AF3G`LofU?>Cl%=iK98mOz(Bv3 z$}p?#g24FwbCYBQx%nu|2yzSfg&!lx&2t|0e-b@Lkoy_}89{D-#Qd7YGJ@RKG>{SG z=CQKhR7)8o1d@2E5z8z{o^u!r78cg8H}CWSEOa^njFb`4wB|UVY7C8Fb~>%#A@;es!5YUwxGl|Nlr=ViOO! z{jCL z=e}lc47zf@^DyYjg|b*i&)odX_Ma@4(KGiob7S<(&3B%!Ej9nQdgiV*W_0|m1%M}E zY*@_*c#MEIKg@mIQ7{7De4mA_g%R)=0q<*E`{64_z?<(p|MvqPBgoBv28>_a>c+B2A0e-i3Q#= zu;d>E`D!i648!*p z;d}Ge?%!`2{>Jb(hQBfL=5M^l5bWK253g!ya2Q?VmBjp|0j$v zuw)*L%)Mn`2?I<1qnG(Fof#u`F90o!yks7rFtCJyB@8Tq&$VM{V87{NXW%3QCl>(5 zc@dSde`D<5=9$C-Zy8v^z!CP>GO&b!B@E7s!Fe$>3yhqLF^k|EFJR=8^Rfj-KFP=@=b6L; zZyEU{BcEjClZ<@wn@9@7CZp~#FTG^oBm*ZIILW|C22Rcc#(8fUILW|C22L_?l7W-+ zfN|bi22TEO!pS!*uM;3>&DO)e?K`~y>om_9c>f2k(yA%M5`s*4{l_jC@t*uuq*;o% zYX0=_KN}^!T9J#wP!Td}-WfeVeCvnxg-$@*p>@!n1vsI3ruxs@0M=!`%<3g70;$Nn zv;;~q*ZlAGqpyBxX%lxD-|g>(W<0m~e!#HF1)PrIZ~tHx11G=fjQATy=HdbaOBh)4 zFN0V(TVP-b155r#Ghtu}155r#BVl4?UmTCQWzd+!>! Date: Sat, 14 Sep 2024 11:38:32 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20CPP=20GPIO=20?= =?UTF-8?q?=E4=BE=8B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/periphery/adc/cpp/README.md | 4 +- example/periphery/adc/python/README.md | 4 +- example/periphery/gpio/README.md | 263 +--------------- .../periphery/gpio/{ => cpp}/CMakeLists.txt | 2 +- example/periphery/gpio/cpp/README.md | 298 ++++++++++++++++++ .../gpio/{ => cpp}/images/build_example.png | Bin .../periphery/gpio/{ => cpp}/images/sftp.png | Bin .../gpio/{ => cpp}/images/show_0.png | Bin .../gpio/{ => cpp}/images/show_1.png | Bin .../gpio/{ => cpp}/images/show_2.png | Bin .../gpio/{ => cpp}/images/show_3.png | Bin .../gpio/{ => cpp}/test_gpio_read.cc | 6 +- .../gpio/{ => cpp}/test_gpio_write.cc | 8 +- 13 files changed, 326 insertions(+), 259 deletions(-) rename example/periphery/gpio/{ => cpp}/CMakeLists.txt (93%) create mode 100644 example/periphery/gpio/cpp/README.md rename example/periphery/gpio/{ => cpp}/images/build_example.png (100%) rename example/periphery/gpio/{ => cpp}/images/sftp.png (100%) rename example/periphery/gpio/{ => cpp}/images/show_0.png (100%) rename example/periphery/gpio/{ => cpp}/images/show_1.png (100%) rename example/periphery/gpio/{ => cpp}/images/show_2.png (100%) rename example/periphery/gpio/{ => cpp}/images/show_3.png (100%) rename example/periphery/gpio/{ => cpp}/test_gpio_read.cc (71%) rename example/periphery/gpio/{ => cpp}/test_gpio_write.cc (63%) diff --git a/example/periphery/adc/cpp/README.md b/example/periphery/adc/cpp/README.md index 9ae95af..6472cf6 100644 --- a/example/periphery/adc/cpp/README.md +++ b/example/periphery/adc/cpp/README.md @@ -25,14 +25,14 @@ | **日期** | **版本** | **作者** | **修改说明** | | :--------- | -------- | -------- | ------------ | -| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | +| 2024/09/14 | 0.0.0 | 郑必城 | 初始版本 | ## 1 简介 接下来让我们基于 C++ 来部署 ADC 例程。在开始本章节前: - 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/cpp_development_environment.md) 正确配置了开发环境。 -- 请确保你已经按照 [凌智视觉模块 ADC Python 部署指南](../README.md) 正确将信号连接到开发板。 +- 请确保你已经按照 [凌智视觉模块 ADC 使用指南](../README.md) 正确将信号连接到开发板。 ## 2 API 文档 diff --git a/example/periphery/adc/python/README.md b/example/periphery/adc/python/README.md index e06d513..40a1f3d 100644 --- a/example/periphery/adc/python/README.md +++ b/example/periphery/adc/python/README.md @@ -25,14 +25,14 @@ | **日期** | **版本** | **作者** | **修改说明** | | :--------- | -------- | -------- | ------------ | -| 2024/09/11 | 0.0.0 | 郑必城 | 初始版本 | +| 2024/09/14 | 0.0.0 | 郑必城 | 初始版本 | ## 1 简介 接下来让我们基于 Python 来部署 ADC 例程。在开始本章节前: - 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/python_development_environment.md) 正确配置了开发环境。 -- 请确保你已经按照 [凌智视觉模块 ADC Python 部署指南](../README.md) 正确将信号连接到开发板。 +- 请确保你已经按照 [凌智视觉模块 ADC 使用指南](../README.md) 正确将信号连接到开发板。 ## 2 API 文档 diff --git a/example/periphery/gpio/README.md b/example/periphery/gpio/README.md index 3d7b287..c0d31b1 100644 --- a/example/periphery/gpio/README.md +++ b/example/periphery/gpio/README.md @@ -1,8 +1,8 @@ -

GPIO 使用指南

+

凌智视觉模块 GPIO 使用指南

发布版本:V0.0.0 -日期:2024-09-03 +日期:2024-09-14 文件密级:□绝密 □秘密 □内部资料 ■公开 @@ -25,273 +25,42 @@ | **日期** | **版本** | **作者** | **修改说明** | | :--------- | -------- | -------- | ------------ | -| 2024/09/03 | 0.0.0 | 郑必城 | 初始版本 | - +| 2024/09/14 | 0.0.0 | 郑必城 | 初始版本 | ## 1 简介 GPIO(General Purpose Input/Output,通用输入/输出)是一种在嵌入式系统和微控制器上常用的接口,用于实现基本的输入输出操作。这些引脚可以被配置为输入模式,用于读取外部信号(如按钮按下、传感器数据等),或者配置为输出模式,用于控制外部设备(如LED灯、电机等)。本章节中,我们将教会你如何使用 Lockzhiner Vision Module 上的 GPIO 输出和读取电平。 -## 2 前期准备 - -在开始这个章节前,请确保你已经按照 [开发环境搭建指南](../../../docs/introductory_tutorial/development_environment.md) 正确配置了开发环境。 - -## 3 API 文档 - -```c++ -/// @enum GPIOMode -/// @brief GPIO引脚的工作模式枚举。 -enum class GPIOMode { - /// @brief 输入模式。 - IN, - /// @brief 输出模式。 - OUT, -}; - -/// @enum GPIOState -/// @brief GPIO引脚的状态枚举。 -enum class GPIOState { - /// @brief 高电平状态。 - HIGH = 1, - /// @brief 低电平状态。 - LOW = 0, -}; - -/// @template GPIO_Base -/// @brief GPIO基类模板,用于表示和操作GPIO引脚。 -/// @param bank GPIO引脚所属的银行(或组)。 -/// @param port_char GPIO引脚所在的端口字符('A' - 'Z')。 -/// @param pin GPIO引脚号。 -template -class GPIO_Base { - public: - GPIO_Base(); - ~GPIO_Base(); - - /// @brief 配置GPIO引脚的工作模式。 - /// @param mode 要设置的工作模式(输入或输出)。 - /// @return 配置是否成功。 - bool Config(GPIOMode mode); - - /// @brief 写入GPIO引脚的状态。 - /// @param state 要写入的状态(高电平或低电平)。 - /// @return 写入是否成功。 - bool Write(GPIOState state); - - /// @brief 读取GPIO引脚的状态。 - /// @param[out] state 读取到的状态(高电平或低电平)。 - /// @return 读取是否成功。 - bool Read(GPIOState& state); - - private: - // clang-format off - inline constexpr static uint32_t gpio_index_ = (32 * bank + 8 * (port_char - 'A') + pin); - inline const static std::string direction_file_path_ = fmt::format("/sys/class/gpio/gpio{}/direction", gpio_index_); - inline const static std::string value_file_path_ = fmt::format("/sys/class/gpio/gpio{}/value", gpio_index_); - // clang-format on -}; - -/******************** GPIO_0XX ********************/ -template -using GPIO_0_Base = GPIO_Base<0, port_char, pin>; -template -using GPIO_0A_Base = GPIO_0_Base<'A', pin>; -using GPIO_0A0 = GPIO_0A_Base<0>; -/******************** GPIO_0XX ********************/ - -/******************** GPIO_1XX ********************/ -template -using GPIO_1_Base = GPIO_Base<1, port_char, pin>; -template -using GPIO_1C_Base = GPIO_0_Base<'C', pin>; -using GPIO_1C7 = GPIO_1C_Base<7>; -/******************** GPIO_1XX ********************/ -``` - -## 3 项目介绍 - -为了方便大家入手,我们将项目拆分为 GPIO 输出电平和 GPIO 输入电平两个部分,他们共用一个 CMake 文件。 - -```cmake -# CMake最低版本要求 -cmake_minimum_required(VERSION 3.10) - -project(test_gpio) - -# 定义项目根目录路径 -set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../..") -# 定义 LockzhinerVisionModule SDK 路径 -set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") -set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") -find_package(LockzhinerVisionModule REQUIRED) - -# 配置 GPIO 输出 Demo -add_executable(Test-GPIO-Write test_gpio_write.cc) -target_include_directories(Test-GPIO-Write PRIVATE ${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS}) -target_link_libraries(Test-GPIO-Write PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) - -# 配置 GPIO 读取 Demo -add_executable(Test-GPIO-Read test_gpio_read.cc) -target_include_directories(Test-GPIO-Read PRIVATE ${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS}) -target_link_libraries(Test-GPIO-Read PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) -``` - -GPIO 输入电平的核心代码如下: - -```cpp -#include - -#include -#include - -int main() { - lockzhiner_vision_module::periphery::GPIO_0A0 gpio_0A0; - - if (!gpio_0A0.Config(lockzhiner_vision_module::periphery::GPIOMode::IN)) { - std::cout << "Failed to config gpio mode" << std::endl; - return 1; - } - - lockzhiner_vision_module::periphery::GPIOState state; - if (!gpio_0A0.Read(state)) { - std::cout << "Failed to read gpio mode" << std::endl; - return 1; - } - - std::cout << "state is " << static_cast(state) << std::endl; - return 0; -} -``` - -GPIO 输出电平的核心代码如下: - -```cpp -#include - -#include -#include - -int main() { - lockzhiner_vision_module::periphery::GPIO_0A0 gpio_0A0; - - if (!gpio_0A0.Config(lockzhiner_vision_module::periphery::GPIOMode::OUT)) { - std::cout << "Failed to config gpio mode" << std::endl; - return 1; - } - - if (!gpio_0A0.Write(lockzhiner_vision_module::periphery::GPIOState::HIGH)) { - std::cout << "Failed to config gpio mode" << std::endl; - return 1; - } - - for (int i = 0; i < 10; i++) { - std::cout << "Wait: " << i << "/" << 10 << std::endl; - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - - if (!gpio_0A0.Write(lockzhiner_vision_module::periphery::GPIOState::LOW)) { - std::cout << "Failed to config gpio mode" << std::endl; - return 1; - } - - return 0; -} -``` - -## 4 编译项目 - -使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目 - -```bash -# 进入 Demo 目录 -cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/example/periphery/gpio - -# 创建编译目录 -rm -rf build && mkdir build && cd build - -# 配置交叉编译工具链 -export TOOLCHAIN_ROOT_PATH=${PWD}/../../../../../arm-rockchip830-linux-uclibcgnueabihf - -# 使用 cmake 配置项目 -cmake -DCMAKE_TOOLCHAIN_FILE=../../../../toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake \ - -DCMAKE_BUILD_TYPE=Release \ - .. - -# 执行编译 -make -j8 -``` - -![](images/build_example.png) - -## 5 上传测试例程 - -参考 [连接设备指南](../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 - -![](../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) - -使用 SFTP 功能将软件上传到 Lockzhiner Vision Module - -![](images/sftp.png) - -## 6 执行 GPIO 测试程序 - -### 6.1 测试 GPIO 输出电平 - -为了方便调试,我们这里使用 **示波器** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 - -* LockzhinerVisionModule GPIO_0A0 <-> Input IO -* LockzhinerVisionModule GND <-> Input GND +## 2 正确连接设备 板子上的引脚丝印较小,如果看不清引脚信息,可以参考下图 ![](../../../images/periphery.png) -在 Lockzhiner Vision Module 上运行以下代码来执行 GPIO 输出电平程序 - -```bash -chmod +x ./Test-GPIO-Write -./Test-GPIO-Write -``` +### 2.1 测试 GPIO 输出模式 -查看示波器可以看到,GPIO_0A0 输出了 3.4V 左右的电压 +测试 GPIO 输出模式时,我们使用 **示波器** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 -![](images/show_0.png) +- LockzhinerVisionModule GPIO_0A0 <-> Input IO +- LockzhinerVisionModule GND <-> Input GND -电压持续 10S 后恢复了正常 - -![](images/show_1.png) - -### 6.2 测试 GPIO 输入高电平程序 +### 2.2 测试 GPIO 输入模式(输入高电平) 为了方便调试,我们这里使用 **3V3 引脚** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 -* LockzhinerVisionModule GPIO_0A0 <-> LockzhinerVisionModule 3V3 - -在 Lockzhiner Vision Module 上运行以下代码来执行 GPIO 接收程序 - -```bash -chmod +x ./Test-GPIO-Read -./Test-GPIO-Read -``` - -可以看到,在接高电平引脚的情况下,引脚的状态信息为 1 - -![](images/show_2.png) +- LockzhinerVisionModule GPIO_0A0 <-> LockzhinerVisionModule 3V3 -### 6.3 测试 GPIO 输入低电平程序 +### 2.3 测试 GPIO 输入模式(输入低电平) 为了方便调试,我们这里使用 **GND 引脚** 进行调试,请正确的将 Lockzhiner Vision Module 的引脚按照以下方式连接 -* LockzhinerVisionModule GPIO_0A0 <-> LockzhinerVisionModule GND +- LockzhinerVisionModule GPIO_0A0 <-> LockzhinerVisionModule GND 在 Lockzhiner Vision Module 上运行以下代码来执行 GPIO 接收程序 -```bash -export LD_LIBRARY_PATH=${PWD}:$LD_LIBRARY_PATH -chmod +x ./Test-GPIO-Read -./Test-GPIO-Read -``` +## 3 在凌智视觉模块上部署 ADC 例程 -可以看到,在低电平引脚的情况下,引脚的状态信息为 0 +请参考以下教程使用 C++ 或 Python 在凌智视觉模块上部署 GPIO 例程: -![](images/show_3.png) \ No newline at end of file +- [凌智视觉模块 GPIO C++ 部署指南](./cpp/README.md) +- [凌智视觉模块 GPIO Python 部署指南](./python/README.md) diff --git a/example/periphery/gpio/CMakeLists.txt b/example/periphery/gpio/cpp/CMakeLists.txt similarity index 93% rename from example/periphery/gpio/CMakeLists.txt rename to example/periphery/gpio/cpp/CMakeLists.txt index e188f69..070fc27 100644 --- a/example/periphery/gpio/CMakeLists.txt +++ b/example/periphery/gpio/cpp/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.10) project(test_gpio) # 定义项目根目录路径 -set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../..") +set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../..") # 定义 LockzhinerVisionModule SDK 路径 set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") diff --git a/example/periphery/gpio/cpp/README.md b/example/periphery/gpio/cpp/README.md new file mode 100644 index 0000000..63686e5 --- /dev/null +++ b/example/periphery/gpio/cpp/README.md @@ -0,0 +1,298 @@ +

凌智视觉模块 GPIO 使用指南

+ +发布版本:V0.0.0 + +日期:2024-09-14 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/09/14 | 0.0.0 | 郑必城 | 初始版本 | + +## 1 简介 + +接下来让我们基于 C++ 来部署 GPIO 例程。在开始本章节前: + +- 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/cpp_development_environment.md) 正确配置了开发环境。 +- 请确保你已经按照 [凌智视觉模块 GPIO 使用指南](../README.md) 正确将信号连接到开发板。 + +## 2 API 文档 + +```c++ +/// \enum GPIOMode +/// \brief GPIO 模式枚举类 +/// +/// 定义 GPIO 的模式,包括输入(IN)和输出(OUT)。 +enum class GPIOMode { + IN, ///< 输入模式 + OUT, ///< 输出模式 +}; + +/// \enum GPIOState +/// \brief GPIO 状态枚举类 +/// +/// 定义 GPIO 的状态,包括错误(ERROR)、高电平(HIGH)和低电平(LOW)。 +enum class GPIOState { + ERROR = 2, ///< 错误状态 + HIGH = 1, ///< 高电平状态 + LOW = 0, ///< 低电平状态 +}; + +/// \class GPIOBase +/// \brief GPIO 基础类模板 +/// +/// \tparam bank GPIO 端口集合(0-31) +/// \tparam port_char 端口字符('A'-'D') +/// \tparam pin GPIO 引脚(0-7) +/// +/// 该模板类提供了对 GPIO 引脚的基本操作,包括配置模式、写入状态、读取状态等。 +template +class GPIOBase { + public: + /// \brief 构造函数,初始化 GPIO 并导出 GPIO 引脚。 + GPIOBase(); + + /// \brief 析构函数,取消导出 GPIO 引脚。 + ~GPIOBase(); + + /// \brief 配置 GPIO 模式 + /// + /// \param mode 要设置的 GPIO 模式 + /// \return 操作成功返回 true,否则返回 false。 + bool Config(GPIOMode mode); + + /// \brief 写入 GPIO 状态 + /// + /// \param state 要设置的 GPIO 状态 + /// \return 操作成功返回 true,否则返回 false。 + bool Write(GPIOState state); + + /// \brief 读取 GPIO 状态 + /// + /// \param state 用于存储读取到的 GPIO 状态 + /// \return 读取成功返回 true,否则返回 false。 + bool Read(GPIOState& state); + + /// \brief 读取 GPIO 状态 + /// + /// \return 返回读取到的 GPIO 状态。 + GPIOState Read(); + + private: + // clang-format off + inline constexpr static uint32_t gpio_index_ = (32 * bank + 8 * (port_char - 'A') + pin); + inline const static std::string direction_file_path_ = fmt::format("/sys/class/gpio/gpio{}/direction", gpio_index_); + inline const static std::string value_file_path_ = fmt::format("/sys/class/gpio/gpio{}/value", gpio_index_); + // clang-format on +}; + +/******************** GPIO0XX ********************/ +using GPIO0A0 = GPIOBase<0, 'A', 0>; +/******************** GPIO0XX ********************/ + +/******************** GPIO1XX ********************/ +using GPIO1C7 = GPIOBase<1, 'C', 7>; +/******************** GPIO1XX ********************/ + +/******************** GPIO2XX ********************/ +using GPIO2A0 = GPIOBase<2, 'A', 0>; +using GPIO2A1 = GPIOBase<2, 'A', 1>; +using GPIO2A2 = GPIOBase<2, 'A', 2>; +using GPIO2A3 = GPIOBase<2, 'A', 3>; +using GPIO2A4 = GPIOBase<2, 'A', 4>; +using GPIO2A5 = GPIOBase<2, 'A', 5>; +/******************** GPIO2XX ********************/ +``` + +## 3 项目介绍 + +为了方便大家入手,我们将项目拆分为 GPIO 输出电平和 GPIO 输入电平两个部分,他们共用一个 CMake 文件。 + +```cmake +# CMake最低版本要求 +cmake_minimum_required(VERSION 3.10) + +project(test_gpio) + +# 定义项目根目录路径 +set(PROJECT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../..") +# 定义 LockzhinerVisionModule SDK 路径 +set(LockzhinerVisionModule_ROOT_PATH "${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk") +set(LockzhinerVisionModule_DIR "${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module") +find_package(LockzhinerVisionModule REQUIRED) + +# 配置 GPIO 输出 Demo +add_executable(Test-GPIO-Write test_gpio_write.cc) +target_include_directories(Test-GPIO-Write PRIVATE ${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS}) +target_link_libraries(Test-GPIO-Write PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) + +# 配置 GPIO 读取 Demo +add_executable(Test-GPIO-Read test_gpio_read.cc) +target_include_directories(Test-GPIO-Read PRIVATE ${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS}) +target_link_libraries(Test-GPIO-Read PRIVATE ${LOCKZHINER_VISION_MODULE_LIBRARIES}) +``` + +测试 GPIO 输入模式的核心代码如下: + +```cpp +#include + +#include +#include + +int main() { + lockzhiner_vision_module::periphery::GPIO0A0 gpio; + + if (!gpio.Config(lockzhiner_vision_module::periphery::GPIOMode::IN)) { + std::cout << "Failed to config gpio mode" << std::endl; + return 1; + } + + lockzhiner_vision_module::periphery::GPIOState state; + if (!gpio.Read(state)) { + std::cout << "Failed to read gpio mode" << std::endl; + return 1; + } + + std::cout << "state is " << static_cast(state) << std::endl; + return 0; +} +``` + +测试 GPIO 输出模式的核心代码如下: + +```cpp +#include + +#include +#include + +int main() { + lockzhiner_vision_module::periphery::GPIO0A0 gpio; + + if (!gpio.Config(lockzhiner_vision_module::periphery::GPIOMode::OUT)) { + std::cout << "Failed to config gpio mode" << std::endl; + return 1; + } + + if (!gpio.Write(lockzhiner_vision_module::periphery::GPIOState::HIGH)) { + std::cout << "Failed to config gpio mode" << std::endl; + return 1; + } + + for (int i = 0; i < 10; i++) { + std::cout << "Wait: " << i << "/" << 10 << std::endl; + std::this_thread::sleep_for(std::chrono::seconds(1)); + } + + if (!gpio.Write(lockzhiner_vision_module::periphery::GPIOState::LOW)) { + std::cout << "Failed to config gpio mode" << std::endl; + return 1; + } + + return 0; +} +``` + +## 4 编译项目 + +使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目 + +```bash +# 进入 Demo 目录 +cd /LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/example/periphery/gpio + +# 创建编译目录 +rm -rf build && mkdir build && cd build + +# 配置交叉编译工具链 +export TOOLCHAIN_ROOT_PATH=${PWD}/../../../../../../arm-rockchip830-linux-uclibcgnueabihf + +# 使用 cmake 配置项目 +cmake -DCMAKE_TOOLCHAIN_FILE=../../../../../toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + .. + +# 执行编译 +make -j8 +``` + +![](images/build_example.png) + +## 5 上传测试例程 + +参考 [连接设备指南](../../../../docs/introductory_tutorial/connect_device_using_ssh.md) 正确连接 Lockzhiner Vision Module 设备。 + +![](../../../../docs/introductory_tutorial/images/connect_device_using_ssh/ssh_success.png) + +使用 SFTP 功能将软件上传到 Lockzhiner Vision Module + +![](images/sftp.png) + +## 6 执行 GPIO 测试程序 + +### 6.1 测试 GPIO 输出模式 + +在 Lockzhiner Vision Module 上运行以下代码来执行 GPIO 输出电平程序 + +```bash +chmod +x ./Test-GPIO-Write +./Test-GPIO-Write +``` + +查看示波器可以看到,GPIO_0A0 输出了 3.4V 左右的电压 + +![](images/show_0.png) + +电压持续 10S 后恢复了正常 + +![](images/show_1.png) + +### 6.2 测试 GPIO 输入模式(输入高电平) + +在 Lockzhiner Vision Module 上运行以下代码来执行 GPIO 接收程序 + +```bash +chmod +x ./Test-GPIO-Read +./Test-GPIO-Read +``` + +可以看到,在接高电平引脚的情况下,引脚的状态信息为 1 + +![](images/show_2.png) + +### 6.3 测试 GPIO 输入模式(输入低电平) + +在 Lockzhiner Vision Module 上运行以下代码来执行 GPIO 接收程序 + +```bash +export LD_LIBRARY_PATH=${PWD}:$LD_LIBRARY_PATH +chmod +x ./Test-GPIO-Read +./Test-GPIO-Read +``` + +可以看到,在低电平引脚的情况下,引脚的状态信息为 0 + +![](images/show_3.png) + +## 7 其他 + +如果你需要使用 Python 来部署 ADC 例程请参考[凌智视觉模块 ADC Python 部署指南](../python/README.md)。 diff --git a/example/periphery/gpio/images/build_example.png b/example/periphery/gpio/cpp/images/build_example.png similarity index 100% rename from example/periphery/gpio/images/build_example.png rename to example/periphery/gpio/cpp/images/build_example.png diff --git a/example/periphery/gpio/images/sftp.png b/example/periphery/gpio/cpp/images/sftp.png similarity index 100% rename from example/periphery/gpio/images/sftp.png rename to example/periphery/gpio/cpp/images/sftp.png diff --git a/example/periphery/gpio/images/show_0.png b/example/periphery/gpio/cpp/images/show_0.png similarity index 100% rename from example/periphery/gpio/images/show_0.png rename to example/periphery/gpio/cpp/images/show_0.png diff --git a/example/periphery/gpio/images/show_1.png b/example/periphery/gpio/cpp/images/show_1.png similarity index 100% rename from example/periphery/gpio/images/show_1.png rename to example/periphery/gpio/cpp/images/show_1.png diff --git a/example/periphery/gpio/images/show_2.png b/example/periphery/gpio/cpp/images/show_2.png similarity index 100% rename from example/periphery/gpio/images/show_2.png rename to example/periphery/gpio/cpp/images/show_2.png diff --git a/example/periphery/gpio/images/show_3.png b/example/periphery/gpio/cpp/images/show_3.png similarity index 100% rename from example/periphery/gpio/images/show_3.png rename to example/periphery/gpio/cpp/images/show_3.png diff --git a/example/periphery/gpio/test_gpio_read.cc b/example/periphery/gpio/cpp/test_gpio_read.cc similarity index 71% rename from example/periphery/gpio/test_gpio_read.cc rename to example/periphery/gpio/cpp/test_gpio_read.cc index 485ab49..3cb8a47 100644 --- a/example/periphery/gpio/test_gpio_read.cc +++ b/example/periphery/gpio/cpp/test_gpio_read.cc @@ -4,15 +4,15 @@ #include int main() { - lockzhiner_vision_module::periphery::GPIO_0A0 gpio_0A0; + lockzhiner_vision_module::periphery::GPIO0A0 gpio; - if (!gpio_0A0.Config(lockzhiner_vision_module::periphery::GPIOMode::IN)) { + if (!gpio.Config(lockzhiner_vision_module::periphery::GPIOMode::IN)) { std::cout << "Failed to config gpio mode" << std::endl; return 1; } lockzhiner_vision_module::periphery::GPIOState state; - if (!gpio_0A0.Read(state)) { + if (!gpio.Read(state)) { std::cout << "Failed to read gpio mode" << std::endl; return 1; } diff --git a/example/periphery/gpio/test_gpio_write.cc b/example/periphery/gpio/cpp/test_gpio_write.cc similarity index 63% rename from example/periphery/gpio/test_gpio_write.cc rename to example/periphery/gpio/cpp/test_gpio_write.cc index afc2d18..91af688 100644 --- a/example/periphery/gpio/test_gpio_write.cc +++ b/example/periphery/gpio/cpp/test_gpio_write.cc @@ -4,14 +4,14 @@ #include int main() { - lockzhiner_vision_module::periphery::GPIO_0A0 gpio_0A0; + lockzhiner_vision_module::periphery::GPIO0A0 gpio; - if (!gpio_0A0.Config(lockzhiner_vision_module::periphery::GPIOMode::OUT)) { + if (!gpio.Config(lockzhiner_vision_module::periphery::GPIOMode::OUT)) { std::cout << "Failed to config gpio mode" << std::endl; return 1; } - if (!gpio_0A0.Write(lockzhiner_vision_module::periphery::GPIOState::HIGH)) { + if (!gpio.Write(lockzhiner_vision_module::periphery::GPIOState::HIGH)) { std::cout << "Failed to config gpio mode" << std::endl; return 1; } @@ -21,7 +21,7 @@ int main() { std::this_thread::sleep_for(std::chrono::seconds(1)); } - if (!gpio_0A0.Write(lockzhiner_vision_module::periphery::GPIOState::LOW)) { + if (!gpio.Write(lockzhiner_vision_module::periphery::GPIOState::LOW)) { std::cout << "Failed to config gpio mode" << std::endl; return 1; } -- Gitee From 997e8504b632329743657fdf8c66ccdd44f1e21f Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Sat, 14 Sep 2024 16:21:42 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20GPIO=20=E4=BE=8B?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/periphery/gpio/cpp/README.md | 4 +- example/periphery/gpio/python/README.md | 171 ++++++++++++++++++ .../periphery/gpio/python/test_gpio_read.py | 17 ++ .../periphery/gpio/python/test_gpio_write.py | 27 +++ 4 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 example/periphery/gpio/python/README.md create mode 100644 example/periphery/gpio/python/test_gpio_read.py create mode 100644 example/periphery/gpio/python/test_gpio_write.py diff --git a/example/periphery/gpio/cpp/README.md b/example/periphery/gpio/cpp/README.md index 63686e5..3c544e3 100644 --- a/example/periphery/gpio/cpp/README.md +++ b/example/periphery/gpio/cpp/README.md @@ -1,4 +1,4 @@ -

凌智视觉模块 GPIO 使用指南

+

凌智视觉模块 GPIO C++ 部署指南

发布版本:V0.0.0 @@ -124,7 +124,7 @@ using GPIO2A5 = GPIOBase<2, 'A', 5>; ## 3 项目介绍 -为了方便大家入手,我们将项目拆分为 GPIO 输出电平和 GPIO 输入电平两个部分,他们共用一个 CMake 文件。 +为了方便大家入手,我们将项目拆分为**测试 GPIO 输出模式**和**测试 GPIO 输入模式**两个例程,他们共用一个 CMake 文件。 ```cmake # CMake最低版本要求 diff --git a/example/periphery/gpio/python/README.md b/example/periphery/gpio/python/README.md new file mode 100644 index 0000000..ec03d92 --- /dev/null +++ b/example/periphery/gpio/python/README.md @@ -0,0 +1,171 @@ +

凌智视觉模块 GPIO Python 部署指南

+ +发布版本:V0.0.0 + +日期:2024-09-14 + +文件密级:□绝密 □秘密 □内部资料 ■公开 + +--- + +**免责声明** + +本文档按**现状**提供,福州凌睿智捷电子有限公司(以下简称**本公司**)不对本文档中的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、适用性及非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。 + +由于产品版本升级或其他原因,本文档可能在未经任何通知的情况下不定期更新或修改。 + +**读者对象** + +本教程适用于以下工程师: + +- 技术支持工程师 +- 软件开发工程师 + +**修订记录** + +| **日期** | **版本** | **作者** | **修改说明** | +| :--------- | -------- | -------- | ------------ | +| 2024/09/14 | 0.0.0 | 郑必城 | 初始版本 | + +## 1 简介 + +接下来让我们基于 Python 来部署 GPIO 例程。在开始本章节前: + +- 请确保你已经按照 [开发环境搭建指南](../../../../docs/introductory_tutorial/python_development_environment.md) 正确配置了开发环境。 +- 请确保你已经按照 [凌智视觉模块 GPIO 使用指南](../README.md) 正确将信号连接到开发板。 + +## 2 API 文档 + +```python +from ..lockzhiner_vision_module_wapper import periphery + +from enum import Enum + + +class GPIOMode(Enum): + """ + @class GPIOMode + @brief GPIO 模式枚举类 + + 该类定义了GPIO 的输入(IN)和输出(OUT)两种模式,基于 periphery 库。 + + """ + + IN = periphery.GPIOMode.IN + OUT = periphery.GPIOMode.OUT + + +class GPIOState(Enum): + """ + @class GPIOState + @brief GPIO 状态枚举类 + + 该类定义了 GPIO 的高电平(HIGH)、低电平(LOW)和错误(ERROR)三种状态,基于 periphery 库。 + """ + + HIGH = periphery.GPIOState.HIGH + LOW = periphery.GPIOState.LOW + ERROR = periphery.GPIOState.ERROR + + +class GPIOBase: + """ + @class GPIOBase + @brief GPIO 基础类 + + 该类提供了 GPIO 的基本操作,包括配置模式、读取状态和写入状态。 + 它依赖于一个外部的 gpio_class 来实现具体的功能。 + """ + + def __init__(self, gpio_class): + """ + @fn __init__ + @brief 构造函数 + + @param gpio_class: 一个实现了 GPIO 操作的类 + """ + self.gpio = gpio_class() + + def config(self, gpio_mode): + """ + @fn config + @brief 配置 GPIO 模式 + @param gpio_mode: 要配置的 GPIO 模式,使用 GPIOMode 枚举类指定 + + @return 配置操作的结果 + """ + return self.gpio.config(gpio_mode) + + def read(self): + """ + @fn read + @brief 读取 GPIO 状态 + + @return GPIO 的当前状态,使用 GPIOState 枚举类表示 + """ + return self.gpio.read() + + def write(self, gpio_state): + """ + @fn write + @brief 写入GPIO状态 + @param gpio_state: 要写入的 GPIO 状态,使用 GPIOState 枚举类指定 + + @return 写入操作的结果 + """ + return self.gpio.write(gpio_state) + + +class GPIO0A0(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO0A0) + + +class GPIO1C7(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO1C7) + + +class GPIO2A0(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO2A0) + + +class GPIO2A1(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO2A1) + + +class GPIO2A2(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO2A2) + + +class GPIO2A3(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO2A3) + + +class GPIO2A4(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO2A4) + + +class GPIO2A5(GPIOBase): + def __init__(self): + super().__init__(periphery.GPIO2A5) +``` + +## 3 项目介绍 + +为了方便大家入手,我们将项目拆分为**测试 GPIO 输出模式**和**测试 GPIO 输入模式**两个例程。 + +测试 GPIO 输入模式的核心代码如下: + +```python +``` + +测试 GPIO 输出模式的核心代码如下: + +```python +``` \ No newline at end of file diff --git a/example/periphery/gpio/python/test_gpio_read.py b/example/periphery/gpio/python/test_gpio_read.py new file mode 100644 index 0000000..7160507 --- /dev/null +++ b/example/periphery/gpio/python/test_gpio_read.py @@ -0,0 +1,17 @@ +from lockzhiner_vision_module.periphery import GPIO0A0 +from lockzhiner_vision_module.periphery import GPIOMode +from lockzhiner_vision_module.periphery import GPIOState + +if __name__ == "__main__": + gpio = GPIO0A0() + + if gpio.config(GPIOMode.IN) is False: + print("Failed to config gpio mode") + exit(1) + + state = gpio.read() + if state == GPIOState.ERROR: + print("Failed to read gpio mode") + exit(1) + + print(f"state is {state}") \ No newline at end of file diff --git a/example/periphery/gpio/python/test_gpio_write.py b/example/periphery/gpio/python/test_gpio_write.py new file mode 100644 index 0000000..3faf191 --- /dev/null +++ b/example/periphery/gpio/python/test_gpio_write.py @@ -0,0 +1,27 @@ +from lockzhiner_vision_module.periphery import GPIO0A0 +from lockzhiner_vision_module.periphery import GPIOMode +from lockzhiner_vision_module.periphery import GPIOState + +import time + +if __name__ == "__main__": + gpio = GPIO0A0() + + if gpio.config(GPIOMode.OUT) is False: + print("Failed to config gpio mode") + exit(1) + + if gpio.write(GPIOState.HIGH) is False: + print("Failed to write gpio state") + exit(1) + + time_index = 0 + total_time = 10 + while time_index < total_time: + print(f"Wait: {time_index}/{total_time}") + time_index += 1 + time.sleep(1) + + if gpio.write(GPIOState.LOW) is False: + print("Failed to write gpio state") + exit(1) \ No newline at end of file -- Gitee From 3e60f4f6ee2d73c51afbf75d9f5af5e668e069e5 Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Fri, 20 Sep 2024 13:10:42 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=94=AF=E6=8C=81=20Mo?= =?UTF-8?q?bileNetV3=20Large?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configs/LZ-MobileNetV2_x0_5.yaml | 25 ------------------- configs/LZ-MobileNetV2_x1_0.yaml | 25 ------------------- ...5.yaml => LZ-MobileNetV3_ large_x1_0.yaml} | 0 configs/LZ-MobileNetV3_small_x0_35.yaml | 25 ------------------- configs/LZ-MobileNetV3_small_x0_5.yaml | 25 ------------------- configs/LZ-MobileNetV3_small_x0_75.yaml | 25 ------------------- configs/LZ-MobileNetV3_small_x1_0.yaml | 25 ------------------- 7 files changed, 150 deletions(-) delete mode 100644 configs/LZ-MobileNetV2_x0_5.yaml delete mode 100644 configs/LZ-MobileNetV2_x1_0.yaml rename configs/{LZ-MobileNetV2_x0_25.yaml => LZ-MobileNetV3_ large_x1_0.yaml} (100%) delete mode 100644 configs/LZ-MobileNetV3_small_x0_35.yaml delete mode 100644 configs/LZ-MobileNetV3_small_x0_5.yaml delete mode 100644 configs/LZ-MobileNetV3_small_x0_75.yaml delete mode 100644 configs/LZ-MobileNetV3_small_x1_0.yaml diff --git a/configs/LZ-MobileNetV2_x0_5.yaml b/configs/LZ-MobileNetV2_x0_5.yaml deleted file mode 100644 index 851af25..0000000 --- a/configs/LZ-MobileNetV2_x0_5.yaml +++ /dev/null @@ -1,25 +0,0 @@ -config: - mean: - - 0.5 - - 0.5 - - 0.5 - std: - - 0.5 - - 0.5 - - 0.5 - -load_onnx: - inputs: - - x - input_size_list: - - - - 1 - - 3 - - 224 - - 224 - outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 - -build: - do_quantization: false - dataset: \ No newline at end of file diff --git a/configs/LZ-MobileNetV2_x1_0.yaml b/configs/LZ-MobileNetV2_x1_0.yaml deleted file mode 100644 index 851af25..0000000 --- a/configs/LZ-MobileNetV2_x1_0.yaml +++ /dev/null @@ -1,25 +0,0 @@ -config: - mean: - - 0.5 - - 0.5 - - 0.5 - std: - - 0.5 - - 0.5 - - 0.5 - -load_onnx: - inputs: - - x - input_size_list: - - - - 1 - - 3 - - 224 - - 224 - outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 - -build: - do_quantization: false - dataset: \ No newline at end of file diff --git a/configs/LZ-MobileNetV2_x0_25.yaml b/configs/LZ-MobileNetV3_ large_x1_0.yaml similarity index 100% rename from configs/LZ-MobileNetV2_x0_25.yaml rename to configs/LZ-MobileNetV3_ large_x1_0.yaml diff --git a/configs/LZ-MobileNetV3_small_x0_35.yaml b/configs/LZ-MobileNetV3_small_x0_35.yaml deleted file mode 100644 index 851af25..0000000 --- a/configs/LZ-MobileNetV3_small_x0_35.yaml +++ /dev/null @@ -1,25 +0,0 @@ -config: - mean: - - 0.5 - - 0.5 - - 0.5 - std: - - 0.5 - - 0.5 - - 0.5 - -load_onnx: - inputs: - - x - input_size_list: - - - - 1 - - 3 - - 224 - - 224 - outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 - -build: - do_quantization: false - dataset: \ No newline at end of file diff --git a/configs/LZ-MobileNetV3_small_x0_5.yaml b/configs/LZ-MobileNetV3_small_x0_5.yaml deleted file mode 100644 index 851af25..0000000 --- a/configs/LZ-MobileNetV3_small_x0_5.yaml +++ /dev/null @@ -1,25 +0,0 @@ -config: - mean: - - 0.5 - - 0.5 - - 0.5 - std: - - 0.5 - - 0.5 - - 0.5 - -load_onnx: - inputs: - - x - input_size_list: - - - - 1 - - 3 - - 224 - - 224 - outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 - -build: - do_quantization: false - dataset: \ No newline at end of file diff --git a/configs/LZ-MobileNetV3_small_x0_75.yaml b/configs/LZ-MobileNetV3_small_x0_75.yaml deleted file mode 100644 index 851af25..0000000 --- a/configs/LZ-MobileNetV3_small_x0_75.yaml +++ /dev/null @@ -1,25 +0,0 @@ -config: - mean: - - 0.5 - - 0.5 - - 0.5 - std: - - 0.5 - - 0.5 - - 0.5 - -load_onnx: - inputs: - - x - input_size_list: - - - - 1 - - 3 - - 224 - - 224 - outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 - -build: - do_quantization: false - dataset: \ No newline at end of file diff --git a/configs/LZ-MobileNetV3_small_x1_0.yaml b/configs/LZ-MobileNetV3_small_x1_0.yaml deleted file mode 100644 index 851af25..0000000 --- a/configs/LZ-MobileNetV3_small_x1_0.yaml +++ /dev/null @@ -1,25 +0,0 @@ -config: - mean: - - 0.5 - - 0.5 - - 0.5 - std: - - 0.5 - - 0.5 - - 0.5 - -load_onnx: - inputs: - - x - input_size_list: - - - - 1 - - 3 - - 224 - - 224 - outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 - -build: - do_quantization: false - dataset: \ No newline at end of file -- Gitee From c767878212391d52bf14b55105ab7ac06e6ab85c Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Fri, 20 Sep 2024 14:00:16 +0800 Subject: [PATCH 10/11] update --- .gitignore | 3 ++- ...leNetV3_ large_x1_0.yaml => LZ-MobileNetV3_large_x1_0.yaml} | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename configs/{LZ-MobileNetV3_ large_x1_0.yaml => LZ-MobileNetV3_large_x1_0.yaml} (100%) diff --git a/.gitignore b/.gitignore index b16f3b4..f488f24 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ build lockzhiner_vision_module_sdk* opencv-mobile-4.10.0-lockzhiner-vision-module* .vscode -Temp \ No newline at end of file +Temp +.DS_Store diff --git a/configs/LZ-MobileNetV3_ large_x1_0.yaml b/configs/LZ-MobileNetV3_large_x1_0.yaml similarity index 100% rename from configs/LZ-MobileNetV3_ large_x1_0.yaml rename to configs/LZ-MobileNetV3_large_x1_0.yaml -- Gitee From a8fa443d888b23c59b77eb1de757680bcc0f99de Mon Sep 17 00:00:00 2001 From: Zheng-Bicheng Date: Fri, 20 Sep 2024 14:01:33 +0800 Subject: [PATCH 11/11] update --- configs/LZ-MobileNetV3_large_x1_0.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/LZ-MobileNetV3_large_x1_0.yaml b/configs/LZ-MobileNetV3_large_x1_0.yaml index 851af25..12d2f24 100644 --- a/configs/LZ-MobileNetV3_large_x1_0.yaml +++ b/configs/LZ-MobileNetV3_large_x1_0.yaml @@ -18,7 +18,7 @@ load_onnx: - 224 - 224 outputs: - - p2o.save_infer_model/scale_0.tmp_0.0 + - p2o.DequantizeLinear.881 build: do_quantization: false -- Gitee