From a4c90ddf7d9a6e20a5085c1d19f307afeff9e4f9 Mon Sep 17 00:00:00 2001 From: Giovanni Cabiddu Date: Wed, 7 May 2025 17:12:51 +0100 Subject: [PATCH 1/3] acomp-dpusm: add gitignore Add initial version of gitignore file. Signed-off-by: Giovanni Cabiddu --- .gitignore | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a63439b --- /dev/null +++ b/.gitignore @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (C) 2025 Intel Corporation +# These contents may have been developed with support from one or more +# Intel-operated generative artificial intelligence solutions. +.* +*.o +*.o.* +*.a +*.s +*.ko +*.so +*.so.dbg +*.mod +*.mod.c +*.i +*.lst +*.symtypes +*.order +modules.builtin +*.elf +*.bin +*.gz +*.bz2 +*.lzma +*.xz +*.lz4 +*.lzo +*.patch +*.patch.conv +*.gcno + +# +# Top-level generic files +# +/tags +/TAGS +/linux +/vmlinux +/vmlinuz +/System.map +/Module.markers +Module.symvers + +# stgit generated dirs +patches-* + +# quilt's files +patches +series + +# cscope files +cscope.* +ncscope.* + +# gnu global files +GPATH +GRTAGS +GSYMS +GTAGS + +*.orig +*~ +\#*# From f9d99f746596d79454ce5182495ca0680d856aaf Mon Sep 17 00:00:00 2001 From: Giovanni Cabiddu Date: Mon, 5 May 2025 15:16:00 +0100 Subject: [PATCH 2/3] acomp-dpusm: add initial implementation Add initial implementation of acomp-dpusm plug-in. Signed-off-by: Giovanni Cabiddu --- Makefile | 44 +++++++++ compress.c | 222 +++++++++++++++++++++++++++++++++++++++++++++ compress.h | 17 ++++ provider.c | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 541 insertions(+) create mode 100644 Makefile create mode 100644 compress.c create mode 100644 compress.h create mode 100644 provider.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..22da6f9 --- /dev/null +++ b/Makefile @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (C) 2025 Intel Corporation +# These contents may have been developed with support from one or more +# Intel-operated generative artificial intelligence solutions. + +# Define the kernel source directory +KERNELDIR ?= /lib/modules/$(shell uname -r)/build + +# Define the module name +MODULE_NAME := acomp-dpusm + +# Define the home path for the DPUSM and ZFS source directories +HOME_PATH ?= /devel/zfs + +# Define the include paths for DPUSM +DPUSM_INCLUDE := $(HOME_PATH)/dpusm/include + +# Define the include paths for ZFS +ZFS_INCLUDE := $(HOME_PATH)/zfs/include + +# Define the source files for the module +SRC_FILES := provider.c compress.c + +# Define the object files for the module +OBJ_FILES := $(SRC_FILES:.c=.o) + +# Define the location of the module symvers file for DPUSM +KBUILD_EXTRA_SYMBOLS := $(HOME_PATH)/dpusm/Module.symvers + +ifneq ($(KERNELRELEASE),) +ccflags-y := -I$(DPUSM_INCLUDE) -I$(ZFS_INCLUDE) +obj-m := $(MODULE_NAME).o +$(MODULE_NAME)-y := $(OBJ_FILES) +else +PWD := $(shell pwd) + +default: + $(MAKE) -C $(KERNELDIR) M=$(PWD) W=1 modules + +clean: + $(MAKE) -C $(KERNELDIR) M=$(PWD) clean +endif + +.PHONY: clean diff --git a/compress.c b/compress.c new file mode 100644 index 0000000..00cb1d8 --- /dev/null +++ b/compress.c @@ -0,0 +1,222 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2025 Intel Corporation + * These contents may have been developed with support from one or more + * Intel-operated generative artificial intelligence solutions. + */ +#include "compress.h" + +#include +#include +#include +#include +#include +#include +#include + +static struct crypto_acomp *acomp_tfm; +static bool acomp_init_done; + +int acomp_init(void) +{ + acomp_tfm = crypto_alloc_acomp("zlib-deflate", 0, 0); + if (IS_ERR(acomp_tfm)) { + pr_err("Failed to allocate zlib-deflate acomp transform\n"); + return PTR_ERR(acomp_tfm); + } + + acomp_init_done = true; + + return 0; +} + +void acomp_exit(void) +{ + if (!acomp_init_done) + return; + + if (acomp_tfm) { + crypto_free_acomp(acomp_tfm); + acomp_tfm = NULL; + } + acomp_init_done = false; +} + +enum comp_dir { + DECOMPRESS = 0, + COMPRESS = 1, +}; + +static int acomp_comp_decomp_sg(enum comp_dir dir, struct scatterlist *src, int src_len, + struct scatterlist *dst, int dst_len, size_t *c_len) +{ + struct crypto_wait wait; + struct acomp_req *req; + int ret; + + pr_debug("[%s] dir: %s, src_len: %d, dst_len: %d\n", __func__, + dir == COMPRESS ? "COMPRESS" : "DECOMPRESS", src_len, dst_len); + + req = acomp_request_alloc(acomp_tfm); + if (!req) { + pr_err("Failed to allocate acomp request\n"); + return -ENOMEM; + } + + crypto_init_wait(&wait); + acomp_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG, + crypto_req_done, &wait); + + acomp_request_set_params(req, src, dst, src_len, dst_len); + + if (dir == COMPRESS) + ret = crypto_acomp_compress(req); + else + ret = crypto_acomp_decompress(req); + + ret = crypto_wait_req(ret, &wait); + if (ret) + goto out; + + *c_len = req->dlen; + +out: + acomp_request_free(req); + pr_debug("[%s] ret: %d, dlen=%zu\n", __func__, ret, *c_len); + + return ret; +} + +static int vmalloc_to_sg(const void *vmem, size_t size, struct scatterlist *sgl, int nents) +{ + unsigned long vaddr = (unsigned long)vmem; + unsigned long offset; + size_t remaining = size; + struct page *page; + int sg_count = 0; + + sg_init_table(sgl, nents); + + while (remaining > 0) { + page = vmalloc_to_page((void *)vaddr); + if (!page) { + pr_err("Failed to retrieve page for vaddr: 0x%lx\n", vaddr); + return -EINVAL; + } + + offset = vaddr & (PAGE_SIZE - 1); + size_t len = min((size_t)(PAGE_SIZE - offset), remaining); + + sg_set_page(&sgl[sg_count], page, len, offset); + + vaddr += len; + remaining -= len; + sg_count++; + + if (sg_count >= nents && remaining > 0) { + pr_err("Not enough scatterlist entries for memory size: %zu\n", size); + return -ENOMEM; + } + } + + sg_mark_end(&sgl[sg_count - 1]); + + return 0; +} + +static int count_pages(const void *vmem, size_t size) +{ + unsigned long vaddr = (unsigned long)vmem; + size_t remaining = size; + int page_count = 0; + + while (remaining > 0) { + size_t len = min((size_t)(PAGE_SIZE - (vaddr & (PAGE_SIZE - 1))), remaining); + + vaddr += len; + remaining -= len; + page_count++; + } + + return page_count; +} + +static int alloc_scatterlist(const void *vmem, size_t size, struct scatterlist **sgl) +{ + struct scatterlist *sg = NULL; + int ret = 0; + int pages; + + if (!is_vmalloc_addr(vmem)) { + sg = kmalloc(sizeof(*sg), GFP_KERNEL); + if (!sg) { + *sgl = NULL; + return -ENOMEM; + } + + sg_init_one(sg, vmem, size); + + *sgl = sg; + return 0; + } + + pages = count_pages(vmem, size); + if (pages <= 0) { + pr_err("Failed to count pages for memory\n"); + return -EINVAL; + } + + sg = kmalloc_array(pages, sizeof(struct scatterlist), GFP_KERNEL); + if (!sg) + return -ENOMEM; + + memset(sg, 0, sizeof(struct scatterlist) * pages); + + ret = vmalloc_to_sg(vmem, size, sg, pages); + if (ret) { + pr_err("Failed to map vmalloc memory to scatterlist\n"); + kfree(sg); + *sgl = NULL; + return ret; + } + + *sgl = sg; + return ret; +} + +static int acomp_comp_decomp(enum comp_dir dir, void *src, int src_len, + void *dst, int dst_len, size_t *c_len) +{ + struct scatterlist *src_sg, *dst_sg; + int ret; + + ret = alloc_scatterlist(src, src_len, &src_sg); + if (ret) { + pr_err("Failed to allocate scatterlist for SRC memory\n"); + return ret; + } + + ret = alloc_scatterlist(dst, dst_len, &dst_sg); + if (ret) { + pr_err("Failed to allocate scatterlist for DST memory\n"); + kfree(src_sg); + return ret; + } + + ret = acomp_comp_decomp_sg(dir, src_sg, src_len, dst_sg, dst_len, c_len); + + kfree(src_sg); + kfree(dst_sg); + + return ret; +} + +int acomp_compress(void *src, int src_len, void *dst, int dst_len, size_t *c_len) +{ + return acomp_comp_decomp(COMPRESS, src, src_len, dst, dst_len, c_len); +} + +int acomp_decompress(void *src, int src_len, void *dst, int dst_len, size_t *c_len) +{ + return acomp_comp_decomp(DECOMPRESS, src, src_len, dst, dst_len, c_len); +} diff --git a/compress.h b/compress.h new file mode 100644 index 0000000..aa4b3ce --- /dev/null +++ b/compress.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (C) 2025 Intel Corporation + * These contents may have been developed with support from one or more + * Intel-operated generative artificial intelligence solutions. + */ +#ifndef _ACOMP_COMPRESS_H +#define _ACOMP_COMPRESS_H + +#include + +int acomp_init(void); +void acomp_exit(void); +int acomp_compress(void *src, int src_len, void *dst, int dst_len, size_t *c_len); +int acomp_decompress(void *src, int src_len, void *dst, int dst_len, size_t *c_len); + +#endif /* _ACOMP_COMPRESS_H */ diff --git a/provider.c b/provider.c new file mode 100644 index 0000000..9d0b345 --- /dev/null +++ b/provider.c @@ -0,0 +1,258 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2025 Intel Corporation + * These contents may have been developed with support from one or more + * Intel-operated generative artificial intelligence solutions. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "compress.h" +#include + +enum handle_type { + ZQH_REAL, + ZQH_REF, +}; + +struct provider_handle { + enum handle_type type; + void *ptr; + size_t size; +}; + +static void *ptr_start(struct provider_handle *zqh, const size_t offset) +{ + return (char *)zqh->ptr + offset; +} + +static int zfs_acomp_algos(int *compress, int *decompress, int *checksum, + int *checksum_byteorder, int *raid) +{ + *compress = DPUSM_COMPRESS_GZIP_1 | DPUSM_COMPRESS_GZIP_2 | + DPUSM_COMPRESS_GZIP_3 | DPUSM_COMPRESS_GZIP_4 | + DPUSM_COMPRESS_GZIP_5 | DPUSM_COMPRESS_GZIP_6 | + DPUSM_COMPRESS_GZIP_7 | DPUSM_COMPRESS_GZIP_8 | + DPUSM_COMPRESS_GZIP_9; + + *decompress = *compress; + + *checksum = 0; + *checksum_byteorder = 0; + *raid = 0; + + return DPUSM_OK; +} + +static void *zfs_acomp_alloc(size_t size) +{ + struct provider_handle *buf; + + buf = kmalloc(sizeof(*buf), GFP_KERNEL); + if (!buf) + return NULL; + + buf->type = ZQH_REAL; + buf->ptr = kmalloc(size, GFP_KERNEL); + if (!buf->ptr) { + kfree(buf); + return NULL; + } + + buf->size = size; + + return buf; +} + +static void *zfs_acomp_alloc_ref(void *handle, size_t offset, size_t size) +{ + struct provider_handle *src = handle; + struct provider_handle *ref; + + ref = kmalloc(sizeof(*ref), GFP_KERNEL); + if (!ref) + return NULL; + + ref->type = ZQH_REF; + ref->ptr = ptr_start(src, offset); + ref->size = size; + + return ref; +} + +static int zfs_acomp_get_size(void *handle, size_t *size, size_t *actual) +{ + struct provider_handle *buf = handle; + + if (size) + *size = buf->size; + + if (actual) + *actual = buf->size; + + return DPUSM_OK; +} + +static int zfs_acomp_free(void *handle) +{ + struct provider_handle *buf = handle; + + if (buf->type == ZQH_REAL) + kfree(buf->ptr); + + kfree(buf); + + return DPUSM_OK; +} + +static int zfs_acomp_copy_from_generic(dpusm_mv_t *mv, const void *buf, size_t size) +{ + struct provider_handle *dst = mv->handle; + + /* + * If the handle points to a real buffer, free it, + * and convert the handle to a reference to the + * user's pointer. + */ + if (dst->type == ZQH_REAL && mv->offset == 0) { + kfree(dst->ptr); + + dst->type = ZQH_REF; + dst->ptr = (void *)buf; + dst->size = size; + } else { + memcpy(ptr_start(dst, mv->offset), buf, size); + } + + return DPUSM_OK; +} + +static int zfs_acomp_copy_to_generic(dpusm_mv_t *mv, void *buf, size_t size) +{ + struct provider_handle *src = mv->handle; + void *start = ptr_start(src, mv->offset); + + /* + * if the handle is still a real buffer, it is not + * the same as buf, so the contents have to be copied + * into buf. + */ + if (start != buf) + memcpy(buf, start, size); + + return DPUSM_OK; +} + +static int zfs_acomp_compress(dpusm_compress_t alg, int level, void *src, + size_t s_len, void *dst, size_t *d_len) +{ + (void)alg; + (void)level; + + struct provider_handle *s = src; + struct provider_handle *d = dst; + void *s_start; + void *d_start; + int ret; + + if (s_len > s->size || *d_len > d->size) + return DPUSM_ERROR; + + s_start = ptr_start(s, 0); + d_start = ptr_start(d, 0); + + ret = acomp_compress(s_start, s_len, d_start, *d_len, d_len); + if (ret) + return DPUSM_ERROR; + + /* + * TODO: understand what to do in case of overflow. In such case, ret + * is equals to -EOVERFLOW + */ + + return DPUSM_OK; +} + +static int zfs_acomp_decompress(dpusm_compress_t alg, int *level, void *src, + size_t s_len, void *dst, size_t *d_len) +{ + (void)alg; + (void)level; + + struct provider_handle *s = src; + struct provider_handle *d = dst; + void *s_start; + void *d_start; + int ret; + + if (s_len > s->size || *d_len > d->size) + return DPUSM_ERROR; + + s_start = ptr_start(s, 0); + d_start = ptr_start(d, 0); + + ret = acomp_decompress(s_start, s_len, d_start, *d_len, d_len); + if (ret) + return DPUSM_ERROR; + + return DPUSM_OK; +} + +static const dpusm_pf_t zfs_acomp_provider_functions = { + .algorithms = zfs_acomp_algos, + .alloc = zfs_acomp_alloc, + .alloc_ref = zfs_acomp_alloc_ref, + .get_size = zfs_acomp_get_size, + .free = zfs_acomp_free, + .copy = { + .from = { + .generic = zfs_acomp_copy_from_generic, + .ptr = NULL, + .scatterlist = NULL, + }, + .to = { + .generic = zfs_acomp_copy_to_generic, + .ptr = NULL, + .scatterlist = NULL, + }, + }, + .compress = zfs_acomp_compress, + .decompress = zfs_acomp_decompress, + .at_connect = NULL, + .at_disconnect = NULL, + .mem_stats = NULL, +}; + +static int __init zfs_acomp_provider_init(void) +{ + int ret; + + ret = acomp_init(); + if (ret) { + pr_err("%s: Error: Could not initialize provider\n", + module_name(THIS_MODULE)); + return ret; + } + + return dpusm_register_gpl(THIS_MODULE, &zfs_acomp_provider_functions); +} + +static void __exit zfs_acomp_provider_exit(void) +{ + dpusm_unregister_gpl(THIS_MODULE); + + acomp_exit(); +} + +module_init(zfs_acomp_provider_init); +module_exit(zfs_acomp_provider_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Intel"); +MODULE_DESCRIPTION("DPUSM ACOMP Provider"); From fe53b8d814358f671fd1b4ef7be78ac95d62675a Mon Sep 17 00:00:00 2001 From: Joel Schuetze Date: Thu, 8 May 2025 10:30:44 -0700 Subject: [PATCH 3/3] acomp-dpusm: add README and INSTALL Add intial contents for README and INSTALL documents. Signed-off-by: Joel Schuetze --- INSTALL.md | 177 ++++++++++++++++++++++++++++++++++++++++++ README.md | 57 ++++++++++++++ docs/images/stack.png | Bin 0 -> 83510 bytes 3 files changed, 234 insertions(+) create mode 100644 INSTALL.md create mode 100644 README.md create mode 100644 docs/images/stack.png diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..4070c17 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,177 @@ +# Installation Guide for Acompress Provider + +This document provides step-by-step instructions for installing and configuring the Acompress Provider for DPUSM and ZFS. + +## Prerequisites + +Before you begin, ensure that you have the following: + +- A system with Linux Kernel support for the Crypto API's acomp interface and zlib-deflate (versions 6.3 to 6.6). +- Administrative access to the system for installation and configuration tasks. +- Setup top level source directory. + + ```bash + export HOME_PATH=/devel/zfs + sudo mkdir -p $HOME_PATH + sudo chown -R $USER:$USER $HOME_PATH + ``` + +## Component 1: DPUSM + +### Download DPUSM + +1. Clone the DPUSM repository: + + ```bash + cd $HOME_PATH + git clone https://github.com/hpc/dpusm + cd dpusm + ``` + +### Build and Install DPUSM + +2. Build DPUSM + + ```bash + make + ``` + +3. Load the module: + + ```bash + sudo insmod dpusm.ko + ``` + +4. Verify module is loaded: + + ```bash + lsmod | grep dpusm + ``` + + Example output: + + ```bash + lsmod | grep dpusm + dpusm 36864 0 + ``` + +## Component 2: ZFS with Z.I.A. + +### Obtain ZFS with Z.I.A. + +To use ZFS with the ZFS Interface for Accelerators (Z.I.A.), you need to obtain the specific branch that includes Z.I.A. support. Follow these steps: + +1. Clone the repository with the Z.I.A.: + + ```bash + cd $HOME_PATH + git clone https://github.com/hpc/zfs.git + cd zfs + ``` + +### Build and Install ZFS + +1. Build ZFS + + Notes: If DPUSM is installed to another directory, update the following command accordingly. + + ```bash + ./autogen.sh + ./configure --with-zia=$HOME_PATH/dpusm + make -j$(nproc) + ``` + +3. Install ZFS: + + ```bash + sudo make install + ``` + +4. Load ZFS modules: + + ```bash + sudo modprobe zfs + ``` + +5. Verify ZFS with Z.I.A was loaded: + + ```bash + sudo dmesg | grep -E "Z\.I\.A|ZFS" + ``` + + The output will look like: + + ```bash + user@server:~/zfs$ sudo dmesg | grep -E "Z\.I\.A|ZFS" + [59203.606953] Z.I.A. initialized (0000000029342ebc) + [59204.818383] ZFS: Loaded module v2.3.99-313_g325a5e241, ZFS pool version 5000, ZFS filesystem version 5 + ``` + +## Component 3: Acompress Provider + +### Clone the Acompress Provider Repository + +1. Clone the Acompress Provider repository: + + ```bash + cd $HOME_PATH + git clone https://github.com/intel/acomp-dpusm.git + cd acomp-dpusm + ``` + +### Build and Install Provider: + +1. Install the Acompress Provider: + + ```bash + make + ``` + +3. Install the Provider: + + ```bash + sudo insmod acomp-dpusm.ko + ``` + +4. Verify provided was loaded: + + ```bash + sudo dmesg | grep acomp_dpusm + ``` + + Example output: + + ```bash + user@server:~/acomp-dpusm$ sudo dmesg | grep acomp_dpusm + [62503.851101] Provider acomp_dpusm supports GZIP Level 1 Compress + [62503.851112] Provider acomp_dpusm supports GZIP Level 2 Compress + [62503.851114] Provider acomp_dpusm supports GZIP Level 3 Compress + [62503.851116] Provider acomp_dpusm supports GZIP Level 4 Compress + [62503.851117] Provider acomp_dpusm supports GZIP Level 5 Compress + [62503.851118] Provider acomp_dpusm supports GZIP Level 6 Compress + [62503.851119] Provider acomp_dpusm supports GZIP Level 7 Compress + [62503.851120] Provider acomp_dpusm supports GZIP Level 8 Compress + [62503.851121] Provider acomp_dpusm supports GZIP Level 9 Compress + [62503.851122] Provider acomp_dpusm supports GZIP Level 1 Decompress + [62503.851123] Provider acomp_dpusm supports GZIP Level 2 Decompress + [62503.851124] Provider acomp_dpusm supports GZIP Level 3 Decompress + [62503.851125] Provider acomp_dpusm supports GZIP Level 4 Decompress + [62503.851126] Provider acomp_dpusm supports GZIP Level 5 Decompress + [62503.851127] Provider acomp_dpusm supports GZIP Level 6 Decompress + [62503.851128] Provider acomp_dpusm supports GZIP Level 7 Decompress + [62503.851129] Provider acomp_dpusm supports GZIP Level 8 Decompress + [62503.851130] Provider acomp_dpusm supports GZIP Level 9 Decompress + [62503.851131] dpusm_provider_register: DPUSM Provider "acomp_dpusm" (00000000863c55ce) added. Now 1 providers registered. + ``` + +## Runtime Configuration + +Ensure the zpools are configured to use the provider and enable compression/decompression. The operations would look like: + + ```bash + sudo $HOME_PATH/zfs/zpool create -f test_zpool /dev/sda + sudo $HOME_PATH/zfs/zpool set zia_provider=acomp_dpusm test_zpool + sudo $HOME_PATH/zfs/zpool zia_compress=on test_zpool + sudo $HOME_PATH/zfs/zpool zia_decompress=on test_zpool + sudo $HOME_PATH/zfs/zfs set compression=gzip test_zpool + ``` diff --git a/README.md b/README.md new file mode 100644 index 0000000..be96ae5 --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# Acompress Provider for DPUSM + +## Table of Contents + +- [Introduction](#introduction) +- [Licensing](#licensing) +- [Software Requirements](#software-requirements) +- [Limitations](#limitations) +- [Installation](#installation) +- [Legal](#legal) + +## Introduction + +The Acompress Provider is a plugin designed to integrate with DPUSM (Data Processing Unit Storage Management) and ZFS, utilizing the Z.I.A (ZFS Interface for Accelerators) framework. It enhances data compression capabilities within ZFS environments by leveraging the Crypto API's acomp interface for efficient data processing and storage management. + +stack diagram + + +## Licensing + +This project is licensed under the GNU General Public License v2.0. Please see the `LICENSE` file contained in the top-level folder for details. + +## Software Requirements + +- Linux Kernel with support for the Crypto API's acomp interface and zlib-deflate (currently covering versions 6.3 to 6.6). +- ZFS installed and operational configured with support for Z.I.A. +- DPUSM installed and configured. +- zpool configured to use this provider and compression offloading enabled + + +## Limitations + +1. The Acompress Provider currently supports specific compression algorithms available through the Crypto API's acomp interface. +2. Ensure compatibility with your existing DPUSM and ZFS setup before integration. +3. Performance may vary based on hardware and system configuration. + +## Installation + +For detailed installation instructions, please refer to the `INSTALL.md` file in this repository. + +## Legal + +Intel® disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade. + +This document contains information on products, services, and/or processes in development. All information provided here is subject to change without notice. Contact your Intel® representative to obtain the latest forecast, schedule, specifications, and roadmaps. + +The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request. + +Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting www.intel.com/design/literature.htm. + +Intel, the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. + +\*Other names and brands may be claimed as the property of others + +--- + +Thank you for using the Acompress Provider! We hope it enhances your data processing and storage management experience. diff --git a/docs/images/stack.png b/docs/images/stack.png new file mode 100644 index 0000000000000000000000000000000000000000..06b3193e98830d561b3d15ce4aa7100bd43c86f6 GIT binary patch literal 83510 zcmeFZ2T+q++cp{t77$Ss5R7!B1yPC^1R_#G5s=$+A#AFINtDVZoi zAP}{pf~*DzL;(kZPGZiT0iI#ZSmOcyIpM4Ue+Vk-1}^}=oVJoykp_WEBB{tvD1hJ3 zKUdIq27xX%9{)Mf>X>T*0v%;3%1Uc_m@KDJd0ZVL9UYBbZhBDnIPbwM-??+zdG2`> zHkbMNG781C9ux?K$&Kul@%>i8$5c)sCk>%nq^QxqBzuBF`d0F3TH0GoQTY#8FP%Jb za?OA8M=EZ4wsU!Tb$M>NlejN|g1fuVbte574>(v)cRplcJNJ_HZ;##EQRu(@3cR!{ z^ncJZF&RI~tZ2GYp|SFBu1TLddok0{p@ysJ#fekayX!xF=qYFz5RH4? zriX;Y4=fYWQ!I1-hnpyyudmNZ}yG5Pu_6z|L`i1-h!T%7v;CdE4e%M z>dC`FdvvWMEFDKIMX)i!ltY)wvPmpz62$uleq zv1(G%+c9w-#k`F}_hE;-=5pcZV#EW$5dua6d-LeXpjo;jnX9_NejCjUEil;)$(>Qh zhAhDba?DNDRJ}aH+K{g4c0}95j1KOq4>_}Jom4JfGqlk9+M)%W*FG=NfZ9-TH?^U>xNg|S`I{B z-$W(lZkKwBa^kJ5hQsY*HpRV2e{v(k%eWly)LK8B#rJjCk8{z@JmC##_ub{m&Y`e< z;D!*^4KVUgnsVQLH=N(J_t!N!KK~t7_~p~mbqs$*ErZSzarfEx-?Wm}4=?D77n*#k zogSK%-9qK(XRP>V(DsPpo^Kv3gC*p+N zvLly*=k-J8b#JHT?c^g4qmuRT?ey6A zc)3?+X|kctb3CIjz;Zy^xKRJ`DGnhL7kfgvPxI28Rr?m{T#QvmTH}+f(l_dsAJknb zZd2!Wl0gzqKJxigO^}+{oc>9w)@22=36M6E5)&DQ@n2V+DSplRJkuW`9i#OG*NpT< z?4&kzAha$N<86&P^Mf;$SmEgK+?PH-0~sV>U}i-Vz1mG;pl+I4X8G%X3<(&++gEXc zCPMUA2&G_4MotUiS)Ld^Acb#5p%vIqLYa*JeHOGxlu7XvD8pc$WH|CZ%l^^wtULf%E0AbQhRvLx%rl|4SoN#(K6EB{gCXp zPHOF6BW>cZA58uHlA*GCg#{0+%m{;oO;W>Fzw#6Q-SC~=GCCD+H+!ea-Lkpa)ES## zBHdb={!9H&Et?7i(fG*LVd6p#3c0{?+QUzI^(cx><{?U86&6mtDH^|jH3E`L3FSk! z zrHoy_ZR2D=>wJ0m=@3Tya&Z?>R~(i(<`n5r+9ZQb*SA8JVNQNzXt+-LhEF1ydA#Yb|V*Q#Rec7Sp9w?%VAtVNTYdnQMXKf1|n8=JA+^V+hu^d87o3CBo&tON?$ z(Y?J?%vU@_szHapt2OriYIURaC^C?W!QilQqCmgwA+g`1mP#VB7;FJFt%+XDY$CkVWA)>8$C| zo^F$G(y)oQz}(W$Z=!VgcA-aHa2RR!O2?A5>oe|Qu^@SsVxRp(5* zuPaIZQ<&%d%nf*mTxvaD2M@NtPi~w@wVvfMJ!N9V-M^v7nTxbU4jgWZ0`;KCNkvm1 zS$eG&SQ0XL%jW#zdRzWGv21XCzObd{@QLr|!D3&{`r0dgdVlUtyD!jS`Vfgg9qkP_ z@D-moJ$vXAM%Uxnyk*_J7O!h^rznEti{OLn7fAud6e&eiEt0Il&mOqEp?vRd zO^klQI}%NDzm`6(gV!~rOv)_%;k#~L>j0bvXA4*0b!z}%M+TIu`)W7&1juQYVWhnf13EUoV++%r1g zj?g5(E6IOAcMz#1*Sdl|8Og6W*Og)=A^0^u(g@1uSH5w##OO*@(ZW0FS8)fIV4bpo zH+6kVIm=^{Fq>lGatUfi?Ht{x(FiR$z8>L@wVWES82@*hcM&-B_kRIO3Jz7r02$C(#BqBSuSZ1?}NMvhSU$ z_IN|`r>nkU@*u4WFs|p-Jt_ZgoU*^7Mhk6tF_&Y9SsE;VZbi=Z8D|o2@FYK*_Hdyg z!?)}!KnV<;-uyZ|WE9A|%H@NiLs2AD>7Xd+(HXEYW-9n$Q5cbLWQW;%`HuO0hj6aa zF)=B3dNKhYSGA0S5o%^GnhDMNWEIXWO-np^rbRTKU!v=P4o0|^b28E2VspnwfFtcnhX~sT zeS&_d7|9o@WrIDbp5VxLq8;`ouxVyygqmBls#WG@*J$bOnPF0@c57_o*GH*ko}<>I zm+`+%BorrltaZXLxZ&N_`z(SnoU!~D^*u0^xTUSBS2RH*5hAjQlivE+@TKb!t!t!J=Kgew8@p9N9PT1Bdok>?mPd3aC@f{68;0jO|(SKiW5K>M8f2(a%WUx8;WGzX@MzYu(#h zDmJe-0hW&f;SVsP%08Pbv6ibOi?GZaFb}1arl-L8ref7EDy!WO;D(2YCAjpNBzhF_ zc0fGm8y4%DBOMN-=PVQ|AO;-ml9%ZgRejm(Z4jyvZ5?1~-IM?T+WL zNU@dXbaGJ5r_t};kZf+RoLk?HYWCpVJ(#uo?C-aMVu)Uq0frj9|FwU#-E*BN?bD() zt;ww9C{~pR?$aHT(m})(`yL%0MEJ6YIsqtCw)l^d9(xXo{mH^OR&>S2hC#i#o&CX( zst7_Px$UKxMqoa)&qOmpN}>ssb1jNNxCBE<2SXITE&=PC$?r2e(`8nlF>>O8pVQ5G zsUxcuT>3bk7>j#{p&aBJOaI;jk#45JTaRcq7rFtnlyIR>;S!r;*TeW?l>*W>NR`=d2O@nu2y+id+h#?^P(T0drvbZapk@(7Ea!o zj<^&{rtv3R#gVNdZum$pzy1xl!;ui16MDHFYr?1wU*fpcmS8{l{oJ~l64@$>B&pu6 zo_^**(L2?quR6ymIQ_2_w9dr#S$}O*kTb-vM2E(p!EAJBd&4bW9lg_|)V>U~ZS7J1 zY>DXjx9ny`DrF&b+DRoo4th*)iI>AEHfVaSEdz3qB5VAaiF&{Be5)QpYC@S-Qe(|q zk<@7oV@0`qI9qOR0v22oc87_?s#_*sW}0~~9*vjPL;SihmN^&FT;bt$Vx#e`W%&H7 znhcR|=e}H7shIn~NqZ1&88Uw9(0W=2Sd7-?2(?t0vTKbon;7Zi4dn*&_*6noH7|9| zxB`&j(&epJWss!%W`3qF@o0qJ&IeY8;W49j-U&FpV#zt?JHr|JcPXJv5zj4uH2aod z&f(TcA(e%E+Xb^cGy(K$p@xm9<|tc!bvp)ifsXx-&8L)?6VJV$f4X}>8y^dq(Dqfy z1k>4XTItsN0cC44f;g#S!`q==R75w){d**8{}qWrhYGKYy7rGyQsYqp5DL%xt1_Hg zLbnZ|SoYB1;!P+0%(s#6*+=YRL+tqAWNT+cH)LmeAskX02vV11aBPA$3%R7_r!^fC zUdoh;;E2i1{DKm+g&*AWZ|E~6bA^xFMVnO=N1;{mf}(H-F(&AxCBNveEAlaDh;_y% zKezqtmteZfn>h&o*(X2Uv=da>gTAHUDI?^NrMp)*0}NKUF%(@gc{shaSc%gU0ygwL zmptmlLYLxzcEC%`!Umi1wgK$}!+R^06B}gVbu44LLu05uta|-T$TB+ZZbm^tK?cPV zNqQ#KT9fSi`e?~TRqwdA^!!y@qFZ5J)m>KUp4l2H5}l(9MpjR!qtOx)rjXUE0(lU) zc^cD$*MV`n8+=VKq9)0Wcj*_NA|V6Q%@AFEAGy7aF6|P?;!08UfLrxmFXjeGq6=2N zViJBe-#4%~#I;DPX59MpYl%0b3ttsf**UXqlR<5L?_6T``Rh~6>ec zm_l|ly}EJivJOIvIcTNDo4we@#P`@*oo8nw~4E9?QSM&Qh&b`cZ`_;BwYIQQ4ZQqPYW@x*-X-cqze5>|~ z%d*T2VbSDUn3Y8m?!1nQ=Raakb1WE^=LQyf*vi}o)+=jCyU{#?F}M~Qcnv|=L@R&8 zd0#>d9m~f>e_02A)$x9N0^00WmxV48A?x~EL933OmOLh?K?Zq-qv)f=X_Gbu;LbcO zeMl1K@#xYfQJNG6y7=hX?07J)hR4(YUj6l3%%uUmY1DDqlM z5$!u*AAakvol4d7vork0$UzNfhmAgxQh)!;Sr*v?->R@Ew0X;$J98s*N5QNBAW~fU z3;egu)YMi>9;&kexMd;m-7KGEPHPO#r~sk$tTEoV??NCwY*s@b*>bt6H?oQ7N2Y-)yahB0cIX-xJ?|9iP2_mc>(H_be`|i%`Ex%w zS6*8{j{?f{#@6pK8*LXtc%q394$Vl8$JO|BHBZB%>7QZ3o@~3t7lejX=Y&8bYiNvW z7FvkBBOzfudbnJ2y{xd-L7Mx-dEd2I(Sr2RS-Gxbz&LZ~G%rxf7tbKBN?$td1QwHH zK8m^mo9?7q3K{O~7tv_C?z#e7wc`?a2Y+ z_2=3Bv*A?EKyVBS({Ctiebvx1C*ai?pnQ9rx*lPCDt?h1p(^}PKEb)!Z%XSAW3+MP z*oUg}hL<~r2P1mo)84qS!{v@pUW<9TdxCsAq=PsdPgN_5rM{}2O0@aPCX`^MDA9^i z6boJl(v!9Q{GX&isD$UdIL-aLRiaMQvNQ0YMbVFKo3C5g;rieWC(jgXzwhUG+xD|c z!8j62v*!meG8+bY)|8s{)P~n0d;GRb{&Q5dJ@g?Dfo2)AcY-PMU7Yz4(s+LZJZfu7 z&ylgnXCTd6)!xKD#O$*!ZEl)?;CsIyLI7tQUC!I{$;5yyPc#m&toz>ic31XkcPeA8 zD&gfLp9>_3u|2*I@%vRnVMnTs#LF8dt+lM0koa_h6Qe%zmfi$JdlQ)a$B#0-Mpa;Pm=2&MirAHrMC`b~6QfKAeqI4b&v4 znYC~E5Sjyyyzt3t?qHT=p0@L`$ZAzgAhM|rO_q`!)uoTd`0Iu0A_>!qW88PfOxyZhm%ho>opD2Gb>3&P zpVVWgVV3w_E!OTkWye2(x6W7BuO#3*0Mer*!xM#$M~_+EIf69cRg3bpUq73}Xb+X7 zwW+J0V2b!aUmDXB5RK!3ciy*kH`1Q)Kk}W~{Nfyr^)0zleJK-2ojk@r;x&EQvu-y= zFDbnwWk53_PSqkg%8@LiUGB&YU)dAHu%xA;jZW|*(-sk0Ma-5bW-M505Z@N>Wq8FE z$Hvw?)OQK>-91~VFLaJ^wOsNd)xC{F>`?TyUSDSwFGklg6zq7P5IK*DLYK~4D6&)8 zXz!MN#djRwd%|`v+@oWfYuii^ht`8v!!P-flRg-d>M=O$f|pT^bSQ!-wx`G4C*t1R z5~prN*oQY)N*{5lY5(+nt%b8QKfKVy53lj8)x;#X=&S8wL zCb-AO8=Md{?He6z5pE8^=>?+F1!a6su;%49Go3p8*qU{4pfjx5RRr}4%srhTcaKVO zH8@sDr^MrmW6z4vQz)NqBmv*j?)t>(*3KQ2TIQn8IgQiOQGeO#B6hp;!>mv&ZQ2$p#~LDQR+Pk-|7bsrD2`^T70`Abdu%nPQ1CR`J%_rDG!8?H>J zfBD{3g&hs=If=@TPhFdAXegmZm1%SF6LmXXJJ+t$%rHz!mjQfK4V>gEC6@126FFVh zGK!haj(vahdnVKUk;$*y!s+PkA?m5Gaec=m-hSybvp&8{LNPyCuN?)eyJlNN0J4EwG$jG3s>vr7o(1*xyzvtc(%R1$)>)Y}BHe8mTd}m2MBwwoq?y6=y#Ice8 zeaa{zKMe>mxW33N`E(zg&gYYU`twP-k0s~e&K|qf5W{N;oMcH{534^5$roqG@7UPt zreSZO4WJi#!5NE*N6vZ*rJ1p#KZ&pQn^A%!@%BmHpeiRJPSc{N7Q2#BunzM0Ol33v zwP{sMy+fONy?=-uxXVl?dX^_x?s^ZNZ&G=8f^*dq<6J?D2GjeL{&t0Ulf-OWFQ$?% zp-+NNDJhZmKjRM<^NWKpP(3WU7RR7_Wxe9cB&^T99@a7H)R3x$4a4fx z_{t~LJXP-q7Y;Sw#3vttqbI4PZXKByqybsXKN9Xs+UG7plO#)Gl2vDU;6+jqn+!mhr{L@dmwpbN8WN-pJG4v)ojoHD-^=^QAEX5?4)_Cwkrj z)vM@&_7^-?v9(|k_0fxP&Kt8$wWtBvT4uMO#77B{e0r?+(ope@YrLk0WgnuSEYNi+ zZAnBH8hgK)&oNGcoZ0nRnQ#x{3Lbx{?NF{6kI;H;c@-55VZTPt1xdoK8B2Usr#nnt zzrC-p#@{#`4HHz&GSqHYzeuHVhb~~=9|ByEuYg;$zrQQ~L;D5BEWw9QFRWy$%5In% zSO;`TkfYSf8CfJ^*NAjL7yo{4)1s+H+_z!(fL^--vvaNJ-5V`M2!^ri$ojV+E_U73 z7Uu{kq@||+UjN25`Zs+>S1u|mZMxpot;NQ_Cv2Q1o2vG2MK#$Wn8o?xr-4VXA zAPF#y&{9@c@k|x~&nWu+j!0J;Gb|?RJl`)~49b^X_Ip%Im!L>+s$m&pfd%&HK8j{F z4OYIWabZ1$SswUq>0RK)L})iAtagRF2nJGu%mH7~ zbalH)^1!ye{JTO2h;&Wh1iaa9#kHqEqxnnS%%lCau7OU2b1oz>%R~INUU2X+>H!`K z+7!Rw9T1UFUbBm;S`o*@HSoy$UDNH^0iBJjxc`aSr+{{OG5HZ1>ldnO|W zeYAFT00R{3zkYfX#y`62e(!7x03R#afBtv`z3w=cBLDtKL+t#plKCYA{2tKbzo#31 z?+yO;OvnHK%>P%>$SeRGH~2|{p3Gm>KKgSm@69xYUZHC!(%?ty&>l=8-dzul)UA^~ zmjTe+>lei3hW<*3?iXMR2Y~1L4y+)LGie!%EPuX-)dS>7F`!Z}pM+9Myi!%)rupNQ z7s9OYfD~ZH-GBs2m(I!EJNw5gpBbajpH+Z0@DaGS=bfh3!Kpu9nYz%XK6Nt+9RetS z0am@dn8Oo)yz>0aEYI^RZR$;cHuzci-)`a*;%YU}(wG5a?-Zj;7{>pPOF*e7pp;{$ z5m!q9?DfCp?KE`sO;4L)J37#S7&!pU#R3VB%K6zCJOC&;xuy+%gJ?KSEucu|0T_R< z&ePepKQol=!a#q2uE{4at$ZDU#+40!(j8b&@upjyZ@y09Jb*Q_k9`Y+RgR`iw|@gs zU%&e%-FHWy3Far!l_VUDKp=8+b3;^toxG3V_rK5Ct~8Pvig;aGT51h!w_8nD)E=Xx zd~;=jF9x+0=oA{X^=OOcp!~!u>_-#4wihkW4IX zi+k&hG{+{4!7OD448V!EeM!nQ{dlIrS}(EaUh#?XvAbz!Tx}jT-m-hhQDmc(Bq?P5 za4li$i-5iLgyU#m#>bI?81Gw|xP$w>nEm@2JD*kKh*NUqhwr;v{tCna`Lo}EgT0L7 zQMsejD(A z{MU?+)k;L$4Ht>dohbx9v#l&mC%;zxy!dQCs&{s>JYy_uv0E#P6{K5?XkKt-w28+& z^4?ii>_`wm&$N#F3$y*VRTQh0@QcNvm!|bA^p0R$g=>=xQMLvy5t8m&VDL>`zJEDV)y+ltW8~l{|xI{oh-#_cy@oe+2 zty!OI;vyO;s2Pzo7YD1EhjQsnRN5mAvxna=8D{o1CW>TtGI!ayHB^>Q*CP$6n@#_b zWiIAR@`I}d1G#S7nlf_~$EnVdn66CaH=Iu3?|!d7p4?&=g$~GdNdG+fAC)u|Fuio@ z5=|72mOZ7$M;D&i`tR7pTjV`D7!l2tYpj*eTIjMLuz8%=BC=e1Q)D_hJMIU^tD9R6 zHd^-G`}X$@Ty(u*u=Yr z-aXY@-Ldn(`DwS~Y5DEmqDvWoHBCcHOl`{X_X7W$oa=(A;-oLp7MR9D;l0o&r z4i?nnP^jXui@+A}{QB`;0+?x@e!H+NTjpS=Ea>j&pwP~Y&rx66svUgi=4!~6^bD9t zRlHb%@^~^zn&>W-lHO3n>+4}>x99c%Zf^Z)am<1hp7pm-O~@o9HwICoU%otvbBlff zc5OK(`;~?P9k5}u`+lB5b3-P|sfAGlAWGj(@;5~DK*gVSUfUaA^Ml{G?{?vn*dxG# zv4G_-7O7Vgw(4%$KMev&0lZ^%=q-c`uyVEZ^yYUrZ$yAAWG-0xe{`qvT4hjKDCy|V z3NY?|KRSw1Y;YKgDzY7UA)clgDa7>cJ?d_*3VyIyZXst#giq4bVIY~#IqhE|_uVWP zAN;xOC2wilLr=X>>1M^0-vJxhHezzM*YqmWrAi)OJEnKF+9i!2OF1KoENq3eQ}0{ z`O$Il=rL#&fG%?VBZ8+8A~mx7$4-dG%HV4e%wjkm-SBU@myL`?3;??YN1ZzeH1!KT z%-@7JPdc$HYP9uXAN>39f(;Q@?{P3ev2}$MS#%o=ltN;*WUFsN-0J6|Yenm>C z0l;$cVp6!*#ePAc7sMA}m0PN~`Q;yFGG-A0*CK8JpJVJkPG=k3JP$NSH+)TZci(zn z1%b!_4tXAXm%&69XvBmLk!>Q56RAQ%LSL)rGs1J7@!e;RO)$V_F3_YRHZJSCw{?DI z!h0?2@L)f9qm3i77ab{OyFRF?);FLAyU_wD<#`U{weK5pu$fs|ecwyW^8i_8df+q^ za}uEy_OAjpCCLhp4Zi~2`(cF&4DF*5tcywzG-a-&evULmlmia7_nz`KW>-s@K%fVl z$FNL9O0aPw6|b#Q_O#1-tlBAvGXjoGm=i$9a${{qzr*^2U`Dh%BLQ^I^Sc3`$`{mz zUo)d1F!|9I>b&y8srglw`L;Quk=^gwE?cbvT7J22?^1u%sVVH6aN6H7qxi?*#sCw@ zeLfozpWWv(g3d-xt&LHndlF<1VDod?9?}gykc$jvZ6FgmDt+%Lw(Ey)!avW$3<8|=vBk5z@Wn_F0m;bkn1pp0ao;*&j#k3;^*LOt;UpgJ`+zOj_f$N<1uf?2N$6x%Pq8b0nC)ockF=8pl#k6JyU5BI^bX=nKI zFVnlxX2e#RKWRN_xLWq0O=3u@xQ-BpU`Yb3p_0@4Et`O8=&HTpli>tIgqD`%Z3k^6 zB@}Bfwe#J)g~;Bov`en>SO9Dukucjq9`m*|Thk$Pb=)2(ibApe_;kRdwc&oz51bFSe6Pr@*8hI2*m|ayU#3{UU7bGp zV@`vHq6cCqR~>3leV0?BgJvbCRKPR-^n4L7$AavSCnLhj0;)6r5r%+x2o$SrhLB6W zVZ@lb7@LBKyCdk=q@m%L7CjoG^~5$1;F&NIeSQ$L!Majk&Vti<5OMvJ1{F43@RglA zjhj09#_$A$Dkti*QdBJ$+_7$>r57sXP#`7Pp}y*$>3=)Q^I&_J|HfpUb=;NZ?pKqi z^eN#FxePr6kF57jOH+c@X^$t^ZB-!qV4oQLz0OmZj-Ea!IxS5_Utj-BID=p|umS_8 z{9of5OtE#qCLvFe?R{u+l4f}s&(d7{m?t)nAMd4(uH`cz!$U$WoU2 z{`%M1`2>cw_g8|Ib3GPZMt0|M?^kLvwER@H6|pPN{k3FvIZi z8BiyM$f<0`M_1#D%x-DaB*zhX^*?ex(`&etUjq4l`k#RyD`bNs%BN@r>p3cQsSDL! zgDq#>^yi)jrbytk$Lm#Z6Ac6PPPg+yTrHo_D;8lj&*gTvLd4UyxJP_vN!>_xX%amnoF_@ z+G`$4?=uneGqoMU(AjeIKldzRrCXb!(>1!h>3IV5LiM;J^(i9n+VnT=wt616KIiA< zn@#}ZS|JZ!H7*7Bei_;n!12(a1xGj1*d$1#nAGN=?^^BZY%+nfv%_7ZA0%*|YTBWe zCK~^M2~l#!rGQtY56Nl3-rgzOt{$YT$1qyzW2T5b612#(Wy!f0jrQrZ*2zt@K)OmbP3R^mYa};!96Hp4_S^bX`MH{$3a5Hf zwCM^VaMGve?5DdL_qELi&I1sJYI}U_jK3<5$eQqEwRCyb*}1=Gq{0qfAqfJ_Up(eb zjDb`ZFnm*^!U4=Q0Jk{kb*4QP3TJs>^fF7HqvOJ+qNlT!kWBW6)qxjrx3UV0B`vgG zB?odhnAFXpKfEVyfc`nbxylJ(R}EkNctl)tqHVK#y4{^`OB}a}qqg1Z+`|f=@i#|Y zYEh8k<=I@#q-!fuZljx`G5dJgYuJ^f;05l7$mE|=oBO|UDHmolMgagYS^Vp$Yb*-Tm#O447Xz`?d5_emY0}$2Vjy#nEzP^>0N<3sEPy#{Nz9@ZyB}=1VG?tshO_2v$z7bqN`~aM61x4Ssrr};|bM=rEM;VqB5(V%2b*- zhH%=I4XZCjlKL4V+sa(7X{=Ruo=<(Qo&*k4Daak;(Onhfs+YS(u99;HmAmFf42_Lu z;GoNz)8kq`7JtU^8G)nf*t-%wB^&pEz4q^o;2K-FxL`-0T~SR-rDTAa5GtXKn((`3bOj(#)Z%gN*hm47AAMY!pPG)e9)S3bjdpNtZ>}V`3*{ys#%^M zTstbux@ZMBgtFgTqW$u50{Ri>`}VezgGTm?T1a_}HLfQPqK0N92;Q#xIXeadeYX2^ z@P|vAdF6J7eBO2!;wv2=ek`(2e%G4xrFHn85BVnS&?c*Oa(q7*39#~n{XVZ znn|6)&`m0)^j6JhR>SEK&J_{Pm1P%2ibQZx)!SmW~yUEg_DWJ zRA?`iv(V(EB*uz$OV7L!`2_UFqx;WiBE&Qd445Pjwg!+RQ&cb`L3`kiYT+gJk;3o_32~5wxuSV=uk3Ar4Rj#4O@w6b2 z1|Zo?-SkU!j-yz3pH2O6dSh^gYK3Kz117~`6Pb4MpS6svAPVUAo?&hb5WU~(T3!ZP zTD2l?$P`m)t!(TN9=i=0y(27@nB)T|4`y5_yo;>k&Ikqnwlo0 z`S{`vLwW#qfcWtPF{w&dQLPM2H(DA32xs%${tkM*9rgrLGQT>D-|o-eyJOv&YLav@ zJp((vozLj4Sa_xdp|`eZsLc9=@A!b0@B>_e8G9*%9|V~Qz=5m~q9 zxG6v$6u%-9hc@{S9Q}hTl}S4sZr2)=Y(qu>4z|wN$14Gs=vlQ?a--{cqxdf$xSyqjB@cdv)s? zD*l=Fc@=&=7i_C$yUynNzCtcWxoa~~{3k#&I&IYe{QvkdPK&`H%HfgBEt3?h3oi7y z3(J{tfqrIfS+MuDqWJ?rQ}Jk@xK{jcY~p8cS^fbFi}UPNXj)^ymVcob!lD>OU{?b0 z9`$zLSh|GIxJ2s28;JVK+=&Wyz`{lQz3!!??pofCd8pOIH_D8W5QpcnEdeyzgbt{X#t%ZbPnFO@a9TISM0enzw1eb4t$rVe}nLTTEnEMlbo+zhNp`$ zPSc3*_MKY-jG?Lst|!I({N$d0+*Rl63D5(p*!5w=6QmR>h%>*bgveH6{H%YCU&iFV5Tt4p~@eci$~b<%i~<&@q^PjkZ!u*#E_QD(Z4Pexcm%}t2l+Oy^ zoz{|?87V~0&(p@{_2{-k5l*6P2{xsjuKfmH_76Tt)o3O%VI0v?r!Zw2rLXO30rGb zWy@2{PoYG!M@O;-M7x+Cr)<^6W2C#v?S{MG%J>py+W~g+ZTUXv?-Eb-*;(Kmw8x)x z>m2w$wWBv!<#e$Li5_q5uT+ozl#L2bYLBthl>IM! zAdMW!s;>U7_t+VzpCW)=(d&?ekB~D0@P|dGr5DhkUzgb)Ew?d;G>v2`UXi&*$jIJa z8qP7Oux0eePahG?{nAbGD<1pb3JnLi5{(`L;&u*jR<|EGFnnQyv|QH16z<>smq3<_ zJ)Qe+8sukyVLJi(Jo;-7{RqgNKtlXW?py_wMi6M?n8p1+Q;Gb4L0H|pZP(7kw6i+w zGTM;vn3zbfiNA~*Pz&zKITG`@*!%Wo05P|50M#dGV)U%eJ(6Ogkw}kwEFG}t3mm48 zsyz-I?zP*jXOfJbYX`<34XCTl+pf9uVS&Zg!`{Moibf#Gy!d(P1mQR`|=?w{BEKwRDr{sl@p6ifa3!vJ9P%^2vTL=RKax+1l<`QCvblP~2?rQ|j@ljv=rqoB*+M{Zr@% zHmWGGw4J9%D2?wRP>h=Tx920t`}KrBK2eZ{oqEgo5E?Y1{TfSrQ(2$XsZAt@DU?+dNzQ3^&u=aE6GtucSnqO>3QVztjJWhb-X=qB0ZXGG(h@(AqQba@ZRfYKVldMc8 zZv#m1v=6sniBcweYD~n9wYZowpm#J!d%Jg&Nw|)56jkf*AD(OhWwjsR`E0sVp>eUXGIDZq zF2EiVX0iY{Ieyo3wVNZMf;@p#AXZl%?4k11{+q?SUus`&yU5(c$Oqha@qTiruv0&W zToAyD@;zW-+HbfYM+@ARU~yM{;G6*J0R;sKyH>gSt1iC+OCn~^Sz2250bk274;-$3 zC*`~MIQZg?3(@+81{G1Ld|Or6fs5^Er2udn9hY)}yUL*B*Lkd{s2Crr`PZ1f%+>wS zD&2F-dUgVoN&CshZdD6M9E+?Iu@lt}zD9A2P({?u@Y4EHWtZ3oH>C~7-+4th^`+iv(BJ@ryQ9bWWZ%4qh$ zyIT=9-z`MZK6Kg3i6L{DIOo&Q+_SARH``FkjVxh~`zZ1Bgf zAZ!j#a-Bd{p;*2<**~O_?ulFzw*st_2BtNCjRq-+wN2^j} zvgc9n0PrI6eCk26gr^WdRNq{Y0_cigds#8x_t=B-howLV7456vXl?$b3cFT2X}v#t z67u!5QPvMr`rc&M-0lSZ*sA24K0;9@$rEKU)qvs}^PDHGDN>Q(P-P(2-3K>ar zWg5bmNG|(aEAqJkMR3}Wl=HqPp8j*1+Mha4v?_f$2~sewEJ_3K`t2J|k@w46RYt9_Ht)I5L-|HdUdHkUS$qQkM(i)O?3mwmB2GT~*D&07&Se<^ zLAWKS-*|G;(Z8b)cIXYAW1=|!{wT$iaq|a8%H1#Hw*&Fyo#x3qam=7d!o=5xz7f~F zJG6kGs#=k+qwkJ+%e8RU^9|o5IU-uN+7vt)7hhL7SWAml*vMAcr6vn+w{xR1`}_OD z@@G_mCH%`A#T6Stn(Y1JxT=Yz13g&OsI3*Gn-kRVTRZql*CWsrr4|5$mHp&Zn36xz#&ziG%#0y0Ylt=M8y0A$BwPrUI&-$rm-JLKT=n{Q4|*|+#3V1;dmkM@6VA1@N%ti#TH-z(d11&Tx$@o>Z$H;phE z*cZ)ngN6EO-I7EjK0ZFo-`YJ>p&y@~mTO>u1Vw$)_ow#hIpBq(_I{(7yH0T)*LUQz zvg8Se0p(9C;^fqoZ2yhO&j+e&i|W8!-30t90|NupIRKdjG`RIQ0i#UbzrXcyfz<-$ zQEI;|=yW~)Fb++lN~YWd(h0HuovZxTBx+JHf%6JpQX!X#;xh|Se3`M`hVScG=1(5W zzJPh-LeLP3Ne4LMb|$0N^Q1o-u(m1R1m2A=>o`!*^)BClwHg?%%l^m!=vHWzBKu5t zb&$9Acl@^qZ%p~QC_$f7AST<)bXRBj*UpO{(}+z}2(2k1MbhcNJ2qkzH^ffGX;6To z_P_??iFXTnH2sL5x?KeYTFf4?zBiIUu;EBrNHYaV(BTYPFnz$wTJnz}uI<>!eKHWu zG#FA-{5oK(ox|U4_uBr8&0S88u@M0DqBzQSmy@;kc@oY|TX zD2%|9?#x=V{wa+&SRky2x|H%xg4WOY6@pi`I<2D6tnWpRI&$jc(V8&-m-6Po2Ly|Kmjf&tSPQ?c~FO#}dj_yU0tUw_8arg0oE{m3p&N&(Oqr+XR5x^av zt=2KyORR8Xn%UfR4>=^($8{}ms|WbZPifuRJ60$i#RTkNvGFSdkperd;T#%vtop+np2<_4TA^g)JM}jLEAbJ~ zn5^IRi$_N=2ZAX=TZ<7}T{XnZ^yVi&o06T~ObrqnbUf91k3DTSYuow+3@aZ$dGday z$GtWJEL!&TH|}ItLqo3`Z)X{$oqMndgPh^4GZp!xlPy*2)869)He7U z_RwvOerrrHx!*i7P5IQvRGF$OSghYThRt}W{DiA`4zs05feg(4aY}cdX?VX{zKxa_ zVJusee@-0tug-4H#x=L`$MzfSV7dTPzx_(Lh)$wEV7e1o9Le5#T1+qUagw6w!bUJS z{%?yD818ZB3Ze}*#m(E5?ejIC|JCKy0**7uJ{2UTF1=z*_D4?mr_-~!SBJW;>|O`l zuckuBnR46=M%_E^3;j+a1`i$}7ek8>TEB5A4zR)b|1J&wF-N~b1ANvC6kr=Vj!FOA z*YI4x1UdNOiOj2GlqD}Oe~rP|<+AJQ*pI0ZyW%Xs{SjEbke!mNhLU}H_j+mLx%ni zVQ=25v!5y3)QP8{819Ikj(4_q^J|u5|FV*(1cM9z=V%3V_PZWs_m>{f`8SsJ9LB6{ z9mf0=@sc;wJvj0krWE%qEfv{wzz=UJ1%i#E4%9}xpDRyoP{;3_eQ@UYC@YSiiFoM8 zr#=6@gafb(H0~bh&05<`2#I@Uq*g{8aMsWlS__9F_MAq!ZJt6D(>CWN*MctXlL%qKLUrJ6CZ3q() zVTgz{))2#xb;j5w$&w{QLY6jU-w7cm`<8tt$u{;avZOGGkbUQOkCvlzPM`1c`+Oh2 z-}n4+9*;Kf<$mAyecjjfdOa_b>VQ~uUkpB__uZye+1?rhD~PX&$^iU{$P=ie|L}uw zrmRNk+M^O_sl#eK><$)?AyhNZTtn8JLqCc6W3vsv`HD^3;khU&nbaF<%*m_YKj(&) z@|rx?o$aGhf>w!d-n_Yxlbg%I$=P@v0MqhJ+T)J`{n|^~i?^Q4wFu9)y_5@<^r5}z z&IbrLA`49yL&qS~AIgQh(`iHQ0}G4`Q2HSC7|ME*>Uh)j{h;D@<-UO$~_~P2%aE-+Wyhxjfar#6T0eY zu|jvD-5^moiaUVTy^DHwl1k2B&5vO)KLYX2g%-lc18U(x*c$o7_D|O|4c_FMZ1*FB z$^-mnxDE$nftv0`Wt96}atqEFV-8NrVwyKd7Ist?MSm;D@9(hbpsC4v56RBmyxxwL zQg!#`>@1qv{V=!b%D@eLRur^N@;Vmd}8c8yL@p;Kb|9F%oCmUS4%sm}ZR``ubK zq2x*^jgZK3@z83ER?Q_!sQ9tG{pwQl5zZb3qy>Kz7_z!2al7#IucQ>87pwd@xgEuY zUZLdHK^5m*Vt0M)tdqBV&5*l$xI_0LoK4E6V&37|if;KF_Vv;x)0fS)=WEXPQ=QxV zLJ~Hw9l=JmyRZl~w4b{csXY6k+!W-{!&H$hgRC&Kr%h))B&(;UN7-l5n>D0)bAgS% zTYl4nmLjb|K-YX&+*r0poFpObnKv@?9Nro6j{6Y(JD#^@T;!J|_6P`nogf!-(LQ8y zLSY#1cRu%!qI8ECGWG4sx=ebYH{w_|GfMzN>NwF&c$}$}9PWUNxfSNIdyi6GVR+Kz z41DP-4Xnhdk=oF*Q})|);rulp9Q5d+jC-6mu8mV+kkKy~5tg!_UtooKAIVM$!b-Z6 zH8f;J6&g6;7GhG5HM zN~e{=Jh=9Wx6;ZNYg0dgYB_Lsx!wNoM+S0d4rlCZaW#Pzj?{N4n}=arwO2-;_%X@L zJmeCE>3oiW<>p)+EVe3d_v6ykOvf!`Vs>&WVoz&bi`}ry3=>!Z^9({A#pSXlQn_Y% z&f>$?HQ9Ib0x--M<(jauskK_6TwH)f&^m0l?#->lE##%%3GE+A zecz-hsNPpQ`~8uCxLk||qQ|(okX*L-AOS+f+@+z>u=rfl&&ydefMIY=)FQoC??vi4 z!o2?}GyTityeQ&&%k=%WS0z5Bns3fSRC94V+~1=?p{lQWL2~#)(YmuyAe#nH^F6u{ zms<{}N+Cvm;iNU^tc+*ss;a9PBM0D27n&FRaF0+fzBQ9o)urb>zL4KEpcU~@b57>E z*gaj}Z(Wl-IQPzKgV|P86QM1qT}k}y+dP2zZ|W9!BEYIbNZ0R^g@7=hjG?yNdPB9p zSX48JZow^bj7=bwm2>$J1#6++nWvl=YszBXO+wuBOPSz!+_km44izd4kMz`eZw~5& za-hTeDSfDLzIlh~0rXKj5h7URQxIz%8vXAG8vb&V99;4?g-!@k z#F_`Ph)V#i9R_)?J?EvR5t)7bIq=3h=&2OP4m&W3x?L4$6^2sZ^+N9By#9VebGgz7 z1}~(+tE6NB!oyg6AxKC+LaY#6GHKZoy z6pmZnH+%&ZC<~)YSI7`CP7a8Zbj%D)Bt8npeZGV10ZG{r9{0CWUr-DAI6!xlp$B{b zitoE$WkdT`WvL$p_x96*%@IZDmOa_&8Rzq-buKrr&-vQ<4`tYI#*zEas)~KMv`W`^ zLBpB**6#zO8*T|$9VQ{;CGt48NT5n-s*vj6pXH8r^YT*8Mu?$n!=kPxpK8gZQ*9mR zVeE%kx*Ds9S-jt}kS&q)Qy2Zd^=*RfY-imGI^7rM*WwaOQD}t_*IQBx2LQk~Be#+m zTFJz=w=*ccsNCGlEOj%rS&0O}$!SSm{5V}kX(rzgluRQ$?sKZMspC1p?fi;pN&+|OHarkyP zr^56B6E4ijoQq;-;Ddx?;i`3u3iV643r2`)J2RSzLCW8CYI%fQ$01#alB7rmBeD2>$(h4Kj4p}Ts~|+}h<|@dIg578>@R6k zSz?!OK3j+IarQA7?_icm6TC)ws7jWcwxK(z%Bxwe&Q9KsFPbBfX2+~MRu8EZ%#o^u(0 zfRl%l=hjWJ%wk;EH5jy&5qd-Krs?D`T&g>sIhAQCr)$&!m2s1`@!bikN1-Qx*7y-d z&^~5On+BRyL;rA!TS?`0k8XZ+ETE?n&R{@tVB42xY70(L^goSEY7!@<+RESHHiX;u zN4Lfa38c~Y+yIgeq`KW?YnJ_w+TX8J^vbKdt&z%Z*r&;219^rKRetezAC9kjbfrwE zyAMazu*ttopA}DZgJpH*Y~J&w`hXva@W{NVIGP*~0|_f3oVggYoH9GwY&5TWJ>!(5 zRWX3ZPokB#5010p>&I(t{KhObuOt}hd^+JG+RQ8ftPfIa{t)4t=8e3JHVgh~pC{(3 zsj}1|jWX05fNrq6@PMQj3>Z=3fKAVBQ)|VCpRV)lV~pXcpcu2VyHeyODc8=X>SDDf zHe;RU<)G(*cTH#pgw(qhPkla+A&lIar9ogC&s7N9`|l^{hleRW!b!AWKJ%!GGLX=+8`vg2jm7{e>=FDuW;m*&QzSh3 z3RlrvgOs$?)ew&=n^BUeo6n!qGy0F;5JeX7d`-TQ@06ksxJ>Rq@pD#MM%(U_89Ija zZeEQ@vdfQSBeYSa1tfe^fUy!;YBwEVES#Z!w`92NV6E~(L#1ixd`{k(*QAAcai78k z5!2nK~3N^E8ha;O2MI%{i&Q zK89r2`aN7(k!{(+S*U>koai_xkYA`q1#-!O4Fi>W+$gX(>!xr<|2nLE1%IK@V1;ks zL*My@l!=e;uE;0#4dY}i$1~Pe4i@CnRWJhGEfj!fLJ7M;kIBaxlSu1ah=eOFO3Gr zN^{v`sWTkTnx_&S{k|Cx5|_;Vg;q&TO$w8J`JCWLeRg!<8OXg8lJ>UF-u#ZMLA4?8 zv9RWuo-p-+9+kAX)ilNlS)19S2er#0vF>)F;g;ru-xBtj4B+6@87DEG&;TO zsTTbOU1?|@x=ZG#u0`^Ds;6s6u(GlmbQZB({PR|!I2BDjYov|TIfP$~h~wnJ`UM}M zW6=_F_Rs;>LO1QNPLEwL_g*6n-~#jaY!{y`u;WRc=tIr z^1lz&V@STdwKXpuk8j^xTQCK9^~KGF*3Pe=s!iKoNYv^i0#8;sFR~IKze558CBRMc zJ~05ktQ426^}jirr`~0J4wC1N11M#+p$cbHfLC>2CFmx7L-FHH5mGQ13<>@-BJTQW z4-b+{ZBWr8lB19p3@t)Dfe28R``vn4rt{gXd)&TF&JRO%KKinNKMlIER(L4YX>c$s zwCL=L>B(R7w3TPgb~31R_B^4GCf{ABzBu){8NazT=W zqr@J1KsJD302^Q=8K$d@ul&?{dY^g#JB;q+t)v_2>XkdU`=Re{DtGVxVgEuZ&Z3k9 zKAkGnY}3RrG^f`)mGTI1+~iawz?*#-O1N0VYc6=k%j7et(d3Vrr8BC8$Nlymp5c>U zBYwI5TjOT`XRIkRn7j^R1&SK|c%Y^Z%V*|76i4Pc&Axfr*a0NVRmInGwH0dh4uVwd_f4=M0^fg*0 zxw~Q5Dwvp(TiUT`gkUbj_fjBB@7(Df0hSjQ#96t@hE)S6>8$1^c^)xM^T zKe}7tRjGEI32xM2!7A2Fl`YhKaVq2yZ{l(5(K~+;DdU3!~rR2c)mCpFNwL24Bd}q_f><=(e zUfHexn4!=c=uff!WtB;2>G_au&`SS^oy&TgNv?>icpf%$wEJL zKxf2myIhr3u|5wxp=|!{LncM4YWdMrz%szcW#u4S9?j*OxQ=pD1bf-TbT9SC)_gSP z=|$(^)lkX(v!OsY>t+h&Zenro_NNzY$px9I_~8%kIPg~9zFG$h-{9_Vk&sj^NaNXw zwhv(VU7nmYO2N#J${kMY0lgmn#9Z8{v6MKMdy;B`9qtfn1LK0A`rjK6_LY2H=3_Y_ zZjsNgHXWi98G7+WzVGHjMG$7D z_kbg)C`XbM1~t@s>)G0Qttw1m_jf;-X|NS>z?;+B;88bu?5TKw72{RV%ak+l>D>#k z><98@4Y>|v0MQ}5p{5`p&=M2k znW)996~qb;&L;|{)x1^932*M)_cjQr^{fHmN7fXCG=@!H^&&e1m*9H^CUP!IH!zrS z5R9>!2$g*xnjpMw%oD;~0nUTJEsK*#uy6!oQ%Rl`y-~`~I03#kE=x@zFQ)nI`r`Sm zhvKH3!v(Ju!XO!WM4f&s#I0;&8hn;uADx-sFfGfX2neoULk*q-RO~kqmQMB%0=YFEdr(qG;7z zDfr5@6)~M~{659WgWGQ@wj-ipQ!@BVfxXTjH;Vd+JokYI*#_>^POuk1RJ^=)lOlUo zvWBaqFf-&?hCwxJ=|={%DShuafSpK&+BW;Jx6)mhSq$Bo%QWVg1948%z>m7S``t;+ zxZa(XTkz)XSI?X$N~|BL0THxk_e)8EECJKl^3}6&JcN@6OE}Af8*gg8w}gVECdm5i zo{WFaYd}^ASFjDhj*&cjG^|pdL0ByCREvfY#%h@wwx#nI+IQDDZYA=ght_)M>f29v zRA!m5t}@7U`mNEu#Jy4YUM+he8HN>J!FMK}ZrsnMmV;&Y_Y0FhYfP+}cgqP!238s% z&E3tZ{<6W{RPDxuq*3AzBt$v(o5((a9KmI)85ED%&dAwxC-mE>pHuZaIQ~eKmBjE^ z^&B&!xH`;CVem}8TE#t;k82Zs!1c$uOrZxdbk3mC*8pZlasWR0L_5soLv-Fw8^v~T zO|P+QgPo(%*b$t?7SU*O#n1HLpC}xj2xJ08fLx*QEjt0FT_5VfJTN;Vysd5OhZH;4 zsL!jEA`5Lso5qm8v*3j)3B1lO;Z_`-$Ubj%KrjD8rqk^BLt~|KhDL{HG&X#cjag1& zg6?{0z?QL_VY?y?B7AUKav6S>O*#IU)itsGqU!zab`3CZ0SjmM{I?gS!x{`W4?GAi zi^yiKQoryF!q#pkCrW$9%jI}r>*T)*#T@sVb04y~ACX*f$+EuvmFbZiPK+848tX0; zf=VAHsO{5&@PaBESW_5+VsKJZ1T(JwKaTtvxM6j`bv7JS>t4X?f(D(}_2U&QOT%-l8jU!je>pv_16xyT_x!QPO2<9n@J{WA3wMO9K0o^6+L5_MUp;1y zw{z)@mY(HtcrMer8j7hLtdUs5btrYo7>@i`bHBFRN}zvLz0`*0ahyeDMEMQm z_5K&4s|HGTvgc%uN98;~xoy-u6*op%lpUK$a)PAYblnk8I1q+Up4(xo?tfpLMTF@h z{^zekFW?YSfX2_SiVMsfi5f93QvK|}=uIKCD|eGaG^UX2MH!L#j-0X^kKk3mt5a?^dyr zOLWH>;QQJwkp0-93D_ukfQtHFz6a+-l%oZzeAc&6s$ngF$(SE7Ef`!8*?~@rK zHy{L`JbAaO#d%7qqt#5d_)6F_eVR={g^ymvSBoW4tQ1Co^%>QL@WWMquIyjS$HNYg z%yMut6;`3J9{wZ=T#ZAXu^;s1e8@)anyN>Q0Pu#RV<7e8$^ZDx9P@@yN#Rkb#4#Ay z!IP55_+KVAJH`2MU2cAZ68jLJZ>2sN%w)g`)zwtSkxKwSz5`?Fr}e`;bP16*U8bnC zGwcpZbUo5xWjT=O()F6xYnm%0Prfg_Z)Y)iMMcl%=jToKX!A`$7cPF2wlkAGS&U0S z%8yNkDSE6Np$*aB^!D}GoXQj z4YY)@;=gPzI+f{v{k=kR{0fimzh|HET+p$9LzbeEAM7+fkURmqW==Esp(~= zZmD`uTz47@8}|8bvT@^IvsQs*2k%`PO{7S7d2zP6e1w>;f5C|kP;e#(Q;+2fPw}Us z${l;xF6gWYVMb*^Mp#X9_Rx=${;yRAB+?DyYp3CS$G&W9`38j=bW`SOpPl2R!+=Sw?1=ZU zGiyKb^z)#a0BrX6Wd*>!CIA}Ehs38hZOP)^IcMv8_cPq<*}Own?!6!tij}%+cF^O) z0@KS^s~VXzU`sL7XqQQY{K%(B0H)TszR zzM)wy+P<)ARAeK0V#hdaWFl(zmTG$yqvVY?#TR7n%wuTYG0av|Me%4N&4Dwx_;~2q zmGk!+A1NE9f*aI11|>&kQs@@mWje33P?8d@Hh$T5hB zrq%qX;bS5C0ZCQ&p^xG>OD{mN$Bv(0@%!%7yTGnj7`yPmCX7=E5C#AbtuMl-N1%Iegs6niZu4 zE(lLc46-OkHi-XU{}7`Kc??857cA!3Gd#KowT$oBwnz$?*6-AAtD1f;xwkm3JrjJU zED9uW4u&(Li+7iuplwBFA>e#(`9Ckj^-}tu!K>|EUR}blO^>p6d?!_iL|VQiWU0DT z3E@Srun`*CU)ZMt9OVpo zLwme~RcC{tQJ(SG?L33}R!)o7d8GMmm-BkRs6gaCPl_Sp2>O4aR?0A0LelMPDH!M0 zI7({&7ww(EQuviwO?-pXXgu?<)6i0755aSi(*HuGUMYbL;1FNZ37DPQVf?od!FVE0 zx-L9WO(qybq|!Dz+?R@RvlTsr9M0=mOo(Rr82S22l7ENE;VjbEYGtB3Oje7+P`IIY#C=!v%qD9XIhbb=5-)pvfE$-wimR(6Y-_h5y^ofB1&nk zvRWst7*7TzCKccpS-aJI+|kg|_01+Y(LT;*98yffP$&AFG9nD#mjP`8_<%CoVc`~( zi|g=NVc{r1=RHi#qo?3aeV&ZhW=tWH*HGrvY}o<@sHAbcea36Z4)}_1L3;@`)0TEZ z-K;rMqB!YM!US61SsGO3YR5T5TMU*!o5(mLwc%K4Bb|wA+B%^5)f8ulgd*{#&65u8@ytNePA6|i&B2%>yVjx&0 zgm5Z)(S#lc>IjuU+i-wNy0woEq9^`@A~VK{1MYCj`Muxl;ZF^%;iFua-U4_M87-8B zt_dKXwboE%$MI{E;l5&j+`f@vNL6O*^VAH0anH2d$S+%%-{3Lb3lV;;vq(F-ylRN z32BSE8z!PwrT53u++PDu6}FkNuq|#NA#W+)!^ccH_v>hncevBZON(L*zYbRIW_NAb z6KFQUL5DyOA%?QFlQ%zX00C~mVUVxq(1=xPtcaHCthA5$5VLZjTx{GDD|C(3gowz~ zqtX>P{%BXl#I7>B@Op(gT@0S@8Rw|1Oxfjh@8wN_mxnjGWAE(QZs+iMpF9kDH97lL z&}SH^18n4+5iMD`-=~pXeg$=n4rCbjD7$a{wAF3oxRX>2ZBqf;^=<}|=m7)Rg9X27 zN5erAM!sN=p8f_E2Cdd=eB-5s)Om>%0QalejDsu;EBI&x$hkC6RL>bcv*G{nr*N!! ztjs?Y11wY}=DNbLuUqb5CI*6^`~9Z_8KzMUMTld!q#u$^G0|RWfQY%-OU3b>AJ7`h)~Jp}In}NU%qH4vkJMTl=@U zi|d(f?%b=+!VY%ok;y4qFo;#gZb$rub%d&-bjY1(o2)>zg8@5VfUlrm z)!WeS`ymk^a@@6xSz&C4u=m<3l+LxUC@sfJdEZk0{889+XQ0r~b+b*ETeL!A&A$Jv zsA;v7ZpiqJgL_b&S*g9bW3U8*pOa!EXZz%;m{jlIe>%D_5!p9|5GruuJ^k5UYl$2O~yuSgA;a||d-qv?C4KnxEwUVSx&5(<)f>o*4J(|>S0vb< zr$HZ@y~GxwSFqU=eNjus2~UA-TT10!tcm;wbNotg>#sNW{iHjw*r_B~rZr?|+(C1% zFzFFH=lSy2{~$qASKp(X6W8rk4v@cZBg5`?nCQji`>3sx7CMzOYg!&+~8hsDcGO*>1Xzsnza3d8BguCvN#?T-d;8WXKi` zRCf^0VGb4^tZlb%p7?Eci{`DY`He$wzE@|y&n&srMwP(n{zA1|x6a+2?h7^RNwo3gQe<)BZB=!6_>I_w5jTiWRadw;c_W zU7{{ou%A8q_*)X${Rq7(;1#5Rwgm3|BY&C!e~)?LY;654=H)5nx4jQQH7E&z*Q%}` z^YXvA=e^Zx&=KRo>aPp^FV!Ic4jBe!ESCKsCL(GB|NmQ~i@#odZ!s10&iLyK`_09> zVjeB6<$dXg@o#yLf1Y-r?3}WhN#xC4ZzV-Jk$-bhRB$P`_pS2|5qeSGXbunptbfHd(VO-S8*{K(CCqO;hZ45ry(%6+ zKEC4g?aSASSZieKxSh)+y-!x4D0OipA*-Y0kq-Wz_Pu{`Nzod?+hH9Z-tZ29%~18C z0f?usLvA~8&RlWqqotI)u8;ph3E49O{PmG#-HT%b8=n(Ci*kAr_G4bl7Tr9ku>s-` zC>sCv-S>0?s6$6-thgeUNoL>Ilfh%+3i`%8vfq#aduz<%U_j@9D=_Hc5Z**@n+}-! zb59{CAHdgU$CZ@rxOuu>?vzu2?f##?0?_+|M1LnrruD%olGlw+Ws9*P`mYonDBHjx z_BVI8$px>}E%iCqa{uXtR^Uq<^M$Q+;2>KbJyO4W_aBX6LiazX5&Y_GPKz}*eQ19I zq2V9L=_4A33%WU6MtTT^C0c#lGyXy9y#r^+%6?tKw)~G@+iQ>!d0)7LB?tjHz-Rs8 z=3MGZ@{2S2KMcov%VL1D{_P9jgu)#jQXftseXTzs2ITy|eMPwTlvr^IEbmJOB7I)d zZASLWGwA>5Cl9UJf>bb(nBgYdN~ci0N)N%L>JpBvsi^_IYvBvytx29I*g6(k#g(c( zD3c@}A5 z*F*%RrRc_&Tz;2L`^byN6!_6mWfhfU(IO5x@#ys*n(CjQD0p+fw`scsVBvm{xb$?c zNIoMn(Yd!Lx{{O_C)?s4Gx4RN(x~TcP|W}#rwBxz37`=SE%DusmvVVGYRI4*94UO( z0B-REP4#UCf{|Uv`Fub)d>1|ujE4Uk`6NG=6v6}beX01VCA^ z5PW%#`DR^w!#deV$0zn&%MJMt)cXW=tlrd@{{X?F5{j3+|Ch+t<=U!V^gL5!gIOD$5S(h6lVxzGv3&Z2_nEeG$JcDFl5$hF z-Y21g68OF|is(WU1q-hwN$ApbzG{qYdwM%k^_KtP$hJ}t@xf*br%l>*r;i*eCD4he zE?W|sF`-pLaXa|BO_9o${<-Ca{TtUx^N*A}8_GK_tskcA&PY+&C$wtp3%Zbew!M~n z(0zg*{W#K~xIb$vVsV%!s{PHCQpu;dy=T0i+r}@T1sZ&Egus5`_VoU~j>f?#dexk| zHPbGka&CcS-9dHPb5V|9x@^)_zJWOGpq@k$<`` zf9~bKeBN_F!~XxY2g~>U@|Oo6!Y7CCJ-z~T>Yt(dPn~+b%IvSi?mf}t&%qb^K?5;B z#!lPTw&&T%n^#0zs_~)7skA+b6 z%5^MW{vQH6fQ!Bbk|Bchiik*j-!}!}$a8fXm1-H^WZ*+M*c>I8+-y(wDxa6bjm5e!7;>(4GuVEyStmb%my!71K@*LFfVRlCr# zKDc3T4gu8!F4#3)_+BI_{Z4* zua3Q`oNv}G>4Go@y;5XGYJJHGFAvX7{_nvo>=~o2Q{uCVTIHq(EqHL)#~y3&#)gmj zMZ_?5J(&$eL1zi0Skg)bLhYoO__VrRFv>6foPq)vQ$Mo^1Yny0; zP6wI}_2owsnI%#j@AkSVKHQTj+B4NAYuqjLJK9I!&~0}rnE025_`NP(-2Ye|1y%`-LyDu68q1bNm@dyb>$+A^BU3at1j0z7_U6EU zz9Z1xsdTnNK3v}g25KW5`dJ7)`%ff>22Vk+CJudc96-Jk^dVMAiNLxXoAyXS^E8NY z)+yixaj%kk6*i22mfHJlsoG^o=$9p6;R?Vi z&JWnMwu4rWzECkXg24Xt9u7&v0U*l{0?+q<+l%7+$y9;`27Q^V(aR(#h%VMey}{%G zyt>TJOvQ#JJP64K45XixVh$sYl|q#->R4!DUe@>eW9cq2ctebCYDP8N*dd7dLr2+j zZ3io*>hPbITtXim9%Ua*4h9aMXJ*~0MqD8a06Km(1i&a9<3UsM;;UH|>t_F+`ozz% zQO9&~Nt2W`sz|WNrFui6OYGT0V=pg}FF$6jKFgiMlIz&H7@#p&%u}g~x|t5-NCjhN zji8p-G&hf}6@%0R`dhcC1gUNCPrnc7w3Y{2R(6%%vjRbQL}{EhHa7UAIx zuR^erPw2=wBVsN#s$}z!cVLAplYFWAK}(94e`$pAeOtZIr~;aZ$O2q*(Ntz>ND!DM zP>aI`?yC&+3yan2 z@-7^w+E^2{g~HJmn@_zcwvU#)gM2V1=%C*vZJFjt8!gNX&sJxS1KiAkOyfKGW5>Ox zBFuqBtd0v#q7M8~06G(Z)h;mS9lLawSz5Y77gRYK6&Uoa*x(K(qLkr0{Y_~&(uBlN z2-SiIrpfyv?+uA_YXVrxI)8(fc6;m((%sMH5om(syb^_O5k|`>n%a%ta`Ydz;WgLAgp`u#pYu)C*M`M%<~@jhx|JF!Ps|xbAFL zuzK~~?b-<-er_1H`)NLg__BWH#kJ46>%$Y)^yx7nH1Ix=Vd}oGUu$Y_Z|dvaY&a#f zlXTmsP9$q$4v_Eb%C?&S%RPV-bC;Fid6N}k|jFgbJ3?*7Ia*=lGRdz;!q4~Fb*oZ$)pa9 z8-;^KTWM_)HyUAoh3sDcVV5R+F=91+=`BP%}<=G7r9FD%S}}A zIj=)FC5%$q;M(ZV<2gM?k2Q4Jlo}#8ss8BwyJvoQN_}U2D(k*_5KcAk#TokwA*A0q zZNTG53thMiI?J5f*w{e@Rb%d__KW?S7Ey5l0LL7Z6X|covK5PRS`5;T8(U2XvYy)B%tqFt$#o~7pe$K zUp=|>7L)}?9w;I^grfa)?l4S$iIIpR-k937uRddZ14v*(nRhgZAGCjKNc!yr-9*kO z4UAiPXMz!4WQ1AU-{)qOz|{pl*Bctk+6%Ks@{V!KM1Y0Xi7U+oH?4U-gavJ*C3lTh z^G>AO)XaVfhx#7-`1m)$G?0h8ll)S88fY^>EK{*%S-@NQ(k$*Yt?np0xlXskANDSdD;1l;MxktH z3yoQ+(N>%6T~=bZUb@haYci=d_cvNZ)O_wJQ}e!*lB$8ibSc`W9$kotEEGUH&5u7A z=ggO^zp>EfP#n!mN09<-#7JxqDy+2nJOZMtE>x9^BHO>curScC_s``|*heqbs${?pw29jAxDVNmClM<#Z5 zG$9(;J#!8KIWy(ps0j-P^tdlXH#eMk<)PPUY<(5>YAM1qXa7cJG<>lzt9x450P!)& z)>7r8u>G@%&2FJAV3QnCJ+T2qogs%1Z6A4SHWM%;?35_9 zT+0vLIEcyC7Gif4cq%tBS3#_G7-rV8LP{K){bgblpCo>Cn%v3vIm5Qb$LXgs7)ig9 zaKPnN1}R|4ADxmVid87!O41)n;z$O&5|4FfTAPiw{6oR?=Vo|06sspi16ms1Hj)*4 z3*`wu4=#Ioh#G{Cb&QnLuH7g!N8!GfU)F~+@HA==AMkW6xE$`r zHiTg@BqsdTBfF5D5u|uD0u_-OfSu#2zsc%P$uK4@py*DmcU-mIQiU~*B;u;}=9(wV zrHsChOl$G2Rc;~a zyG}47#2i1v{%V$7gppfR(+4;G9uTVKF4!6o`haEt$14X&C zXz_aa5fD1nyoFT|5I_Yy-l`uek$rz}W@THdUuxVWEE{~oAV1`DjTDNG6~i74oLY9X z8n-=F@qoq>DsZTlXMdp?XEqrua`T`2p6DqkaIvK9FMEvyz2j5RS$h2Dy%#|3`gn#$ z_9FxWA-Quo5;zNLA6^zbh{>D$%M@FBP}7&`OfPxEv$`XYa{(M9;(+On)@frtHNC}?+pMhG9{4U;v1m) zvwKaUM1M?#eVVjIgGis&7w)?+wQvK)SuV zqY^#j3S5LU>_(iRV6 zk_k{w zuU96DevtEwdcGs`2!l|ow(=7phbAo7ch4Pw5Dl zp{73{$Yd~*fKuOa6jl~f1N#){S4hr@r^C;o5}y(q=6Dm|4^oU zoF~y%$I-bz4i}o>`8ow6K<%ZPUe?+jf8YNAFHQ2onieWuYah(3mjuI4@wS-PGXxv! zyi9upfJS;{#BKpHvCkoMeFr=h-UWJ9TZAKPfV!}G>r)SEGQSije~z?-&wT%BKtqq%|B8Y>lvX{Wjq3sMwY>+ws^nx>d@kdLtCX{Wy5ZOYo{z~jM70LQBK#xvpcD;4Z9H=#F;^%G-1O~jU=@L z-{c#<`>ib%0H!C(s)E+;a3=0%Rl^1^rsiCAJO(sD5A8E>+2|hv9r}pX@@hb}W`1h( zdFpAvN#Mn81@(I-26bQi%ToM(Gys;P%%t5|+w&6R;i2$_t%tbd9b9niXMGWHM52cYS&*_2t9ZD|G`N<^n0}|y7%tL+dpT_ai8ZD89fk406 z(Oq^86$cExKcgms4s*Ad;R*MvJrRRl=>CF>S4IP70r^tn=@$2mT!-TFrn|_qr%fcm@=eMhpnve=p4`q3Tui zo|yVb`tX(DR5FP|Tb;X7zxGTAa4JSqWO#sF}m{zF_~PzFHp<@f3$xjXrtmU&D{@mDpH&AWn|SjhJwCdskM;R6-JZ ziOPfVY#7y?A(Ix2?ly2t3;wwEdX?fyHFs$aw8i{XAQXXzDvKRtym&l^NB|8Y2UPbP zdG(2tsGXm=x1Z&a;XthC(eN>? zOI;I3^}`<*>tkXKVdGch|8ZmiTwU?dCg33GB4V&MS5G=4v$K3m&>SjuFLoHskt;Ad z*d+2!EilO6paB;O@F>rHjMTA@|R>@{{ zMAywI+Jn6;rZ1pv`gV|V()#K1tr2YrdnfeAy#?3#Lg3OO6 z$Lp@1C2zLzj2tI7(!?>VHnBk~6D2d5Lkq+GtEU?_-U4i7Zu0uyYs6SUmTce{OLtGb9a6ofM!WD#Pi6@+qk6$Q;lin%@@D=LjWBm=_ll!>iXlTN07yREB}Gn7Z$kD_{QU{ z4L&KDX}N5;oJ$zSg`OVc_GN+7Qb*6P?U?YoraU0Y(An4crt|ZX`?q(@#zk2JBh#>p ztYMNzs2qV>H69Pr4=yxn8V>D8X2`VGS5G=HF4%$DWFMVPr`NgxngDT{YugN+fk#Vs z|3eK}7tfAO-5z~)d2@!Sy{Gi)*vaEtJg;-2uhOraI4wlYjfBZ`n?8Xmv0*~oremr< zP22Q4oo;%g&T3LQ@X2Wg`E7&az8)=ZUHCfX>^0B!whjrUTKLDAwmI?L=& z%+_sq7c{AcsN|EtCb?3#|6b#p-~!M6lGIO~I!1Bist=zckfblf&7c=OjBd3Dek_Y; zql&&O^jz=TV%Wu6M5mUy=yO26R>S?Hc2!*gJzwjiE*%Lol0u{WD<^+9)_@{hbi>Bt zW3N#nLZS5QQ77RB)7lj9o8sDtuH#*h88|-`7BD0Ta3bzE#6cviXoE;j0a|KrE_Q6F zmq=dpN^lKJ_3_|XL*CmA2rD;~wvHTbYizs!w-5I65rpbhh)&L9lLd)*QJpx=cFJR! z#|O2J>l_oi$XU`o4a#Z6nPzwk-wN4i1E!LxJJRCu8dnjZ)80>-+202)7Bp&=W%!-; zOh2Msn?rH8UEglghTrJ(aP4z88=dl<_tlTH0h{4`-xqBr_=%&0OjIu9JU4gZ=BATj zWDV%QJGAKUy7_n;G{0(-q7=Q!)zz%VMX2oAesZHx1^%3gvV|6GtuMWrqoa_3N!x?T zcNy{mW?dIP?u?JG3Vd)c6y4ceNC5&O+ckW6C!u3%$<}iJ=PFXhm!GOVIzbEgdy$u| znL$O`|6Qi8JfVwLN5g229BA$RO^giY&^IL_@OKKwZU@Q$J>W-9&})Y=gR>s>;e_q3 z>!1fe@o+z>3E(a8gKmqC!=7vtV^LO@ZW@FByQnnv^P^+7A3^at2`HW0jtCCyG8Yb= zIM)UYL#Tvdz)|~E07cOL{i7RF09In!d2YScb=#1uXfWFlj!jit6}$-AD=9X2PAd1D zO9E>0&d;FLX`7+Acz8_3mht^Ya>ElintPdb2xI+*!w zRbnOMI%iO}mJMEv+4mlq>+Oa}{m>lP&}m#rWB!~P+mSqPQ)t)jE&(YO}(6`anWZ*|W*3IwylPzwRZcR*#IEPA%3(~2M< z)G@gLh@CE}JjZRPXr3mIUn%}$+8YDDHCPDnwLhb~*;l^#OeMRR z0n?;eDsP>jWA5d4a)2om%5Me^V!wXW|GjEb5eU8*JnpfK=&ON_ZzLLEvXbG7F)HUA8lF=DbQg!2+uOK^%+r4~#DD_nlZhVg zd7rQ=c?{I~)Z8HW>AZAsN8#`HXqv^=IF99ygF7!MKO+@uHDpP%dfzru5p|H_13#=UEPho`Tov5k>~@J37Xlr zA}ao9sa(dTlNbUtu4DB(AD{eHBdL(f=L}>vc2do+eqefX&eylYJMq@HeF}Jf@xy%N z61ofcB%K^g$b)ZD9B}+s&xE|rX^r;tmLFZ%3T&0^m#t)k?5vgdmYQepA{$Hv?>cxN z2CGn+aEj}3_c?l1n$!JN2sSHkZAq*?+uQv$u`cFG3ftm|s`EpGaXpHiNB@PJ;t}$u z$hq6P7^gdd`k&?)U9ZW1knekvP+#9{xZ2rRzWQivng%ZxBENW+bjOb9V7Wt!3qWgU3VFG(v3wjTbM5V&-xgA zc$H#u&-i?-m%#1JY5g?9_|r1+1TTi`>NzI4{Kl#T`dCNx0$W~*m3z^SlR?JG_6d$p zza;z%7?%|{=&UPj-PF9?&wE>g%4v_(=_qMv*HB{;s7~8a%iO=W8UU;qVM;qGC$v$P zP8f>sWag(F9qQpv%(v`$(x0Ro&Cru4)6I(Olq0+b^)7u`{Duxj2V_4k3RCUA&F8A| zR<_pLeo}hmPuC)+aBwvzj0H=p0fQF0M2C+TQkL$CIZfWI+n%+biqtVm0q%`g)($uQ zBdk-JdCyCVZ`0+Z>h2decaP!v<&A`@AhK}e>wQ%0OglS4@s8$yY_6a3T5q_bx7ezJ zH%`vn+Q|U=cE77`vBKCwgK(My$Q014F{1ib(04(=fX^!bjPo&_Fl_(9CfUEw*6*cu zG>5+@6_lfRQ-JN~r$633&n_t``J(IG!2*l?KBmWfe47Jy1bHP!JeOLPWJ#H7iB?(x zBGx^;HXckb1?&%p1^hE?u~%>hdm3YYG ze_p)zDr^XkK=c9A>O&7Kw*DVNeKD{z{{!{4JPz(01NekdwXYfkDrXkIWHDx2Sl<@IJ3s5bt_07yFm-o%CQ~&zpIDWR7 zb~dw!k8IL-{F{uw5ED^8CY6y%V0D~Z<1$_5rEC9jIe&dP1Oud~KElS91harIE6Y4a zNWy3At;1Lr5K{g)24VxS+jl6=pmbe8@@AEJtDG)QXis;;9mD8)M_BdaES(%#Nm42;>jF}v|2?4k>TG^d)qz91hhZRHKZq|8x< zrO6lny&1sT>peuC`*bkGZ1h4zTrUvOMnK((RS8PnN$GCQlejf&z+WteKp*t@10n_9P{zwCuRoYy5f)*r zQ`+!A3*pRN&H;|hSgdrb*O#T!USD?O+S{?x3wt7Z-(qecu-B-L^ENAQ>+ynJF&~iG z=>5{_w6n{nQN}S=V%YYPnU=6Pzt)LiCc;;IC%6aVlS;#nQw6pd6$e;t8Pz2En~Y~} zXiVSV-2Uikbh}TVwj)XQsj-ko8FkyPH70nPck@a}a3iJik#u)pYF$g)fp>1@axYQ8 zQQiWg>KN6xMFXvbw)?DpZmQtI2=gU|!dpX};a8v=U&`gg(`ILoypN2G=PtSTXCyBa zIoj_P+e&``o_X1C-dqiwnX$p+@q%}&A7A6sE4lKaC05AtW8j7R;Nm3?su0so?Rg-y zw6vURmsnCshr+5{=hd!T9~w_O7L{u3wL%ve9bF|zx^ldoS^Dw2kfg2M2e|4;h-CHX zMedz1&p%z=N~PF$0u!*0jzCWEZEDHZAGKFw@pS2pv@eE{$E@`lDch}~?uOS9v%i)L? zq_J6cGpiOVag)o)B$r#Zl|)+og7^{hO9_BPYPy#sBqdfgY49@gwlt>)w9`QG)-e)=e&|VhYK5MLPgYOK#fSVMYsF_U`*km2Ut}1hSVl!WeEVM0ra7kJ zaD9_nAWGk+#BDPTyB{i z@-|QxjojI3;%xLXDzY@5Gynp@`>1|r1{<$Q6o!>oe&iZWGRbx=(&so1a1KfESB-Kw zLPE_bU7q#+U__%4g)MYThx&YsUnS}<`G|a=Gu&Yqf!Tr_hhM861{xb>TMV=wyQAZq zQ=f-tOQzI&f1^u#2*j>VNEShREi_-<0rAbd35t;zk1__^=2__X0X43nKxf2Ute1q zb7!wJoW&?yvl8ay_e=J>W)(f2b6{Dp8?okSxHj&j(>CHpE$1SUSH4iZ-C z)i2A8TU-%;K$=g8PnV2`w3=Gf3^3EZvD*tlkAfpbuqqlGQ!Vgrdg{%pbJDR^dS1tn z30ZU;0@LlrKMRf+JgQH>|M{aG$eaNm?vlFobC1M&JX56}Q z7O$!*)Wrnv7&i_Xdza0I^H02SD}bnS-tTO%k!D=TiO~=lGU<4yUbvURDXLdTcA3S& z`?4ZaM5dy%A&8IB`2nRlf`l3MTA)mSJr4c5#Ek1%GiAh(F@rS9PEFF%vUYe&piFFA z&DCPN#zZPIuHRZT#nWphA@oP@@y5bvV7=f1kDvO=+}CGOoC*?nb-J!qyg9&Mbk$T+-e zXqf_Zpl0b+KUT4r8fx{yWr_D(KJRsoZ~+PD%^R^~$7Be7z+b*qA`VA9>%j}&GqfOPw- z4BT-Rpws7At)3!^L$rR0SQ^ZvL!KK^CXA!&(31m4a4L8V~b4@OFBfBN6!^0#k498LC~?ubwy8 zh3)fhy{kL_+tLd9t%t^pgIHwtx7L8zB^6Z)h=~X5psjqyC6ibdMXKw2cFEZyt-cUL zyCb?mZ2@9q%Aq8sY1(OlbN9nA=&zoW*ciz6O#VFXva~dRnOEnB(?zapZ7~o-=rX+n ztMe4&NZ70ya~FS%Q{2+yv4QqRVwRN1fIekyav?H(Ui|nqxAN&R?0Bf?$hun9CfQ~7 zd4)H32u8t1wEg4zh*h zeYIy4oQp)!fNF+nOywmF7UCprQWB#pQ$_;O@wUBg>Ek= zSTq0h>Qu`agd(*-JG*n$nUl!v91 zc5cVW&BD&nfnKr0R!`Ncw${T)sR(7sfvw;(R8gF^t^2gj^;fgF=L#7ND~8JW453&@ zH&If>IJ~ffa(^wIwd^_!{9xPKj`H4r|w7i4tXz|xoaLYm5m`zE-D8{;Fr`R`Ofb0 zA?#~d#jBjd7)c2>Zd*tcv-<7%g&s|J+!yOjz4iv+O$1h&zB?+T78lPapPXAzDmx=c zcqXqGYE_oLnI6Z}H8?U*pwf_`ol9PUk7A{#9Wy+gldXBT>(0O#pFF6i$CZgHToJ zS&3Zk$TV*@zRVw8I^ZIzRZO2dKBzP;*&4w<>bSfi+5ESIHA~F==Pny z;ktsE$qnhEnMRmA6LZ+}Mz6)y_3(=`r27ZHEg?2nDxZW7sB;joOMaiWTgPhlcMV3V z4NTm5>`3S4n3Cbdp0AVPPMxJ4UpdgBOE)q&LYLBnH8>uW{9u}yipmsL*i2Bt2x{m& zvHubp0(J;~y-`agJ^d2zO8+fUrkyuN%!W1vB>s{#0?X2H%8H$HcG)}=5Cfn(!i*z4 z_J^b6s<+*o_&e}J&W-(oQXO@d3bd0Im5M?zc&tzr&Rl2J-w#$Ntp>_MPY<*TT~uMo zPSdBJG7M47f!1us%#x?sbC^`M8?5Y<%^falKIArnS}EO^^fg6fxhFl;pQ|<67mwcR zuAQEarOT@L{m&(WO$Dh%&#T1Fc$@`h=)}~~OG0ra%jGMk7T@uUwRlxMyV63Dvu&)9 zCAZ4Qf7{f+%Aj7@3_qK9C9w=!##o-xpY@@o@j9;p)cyU@%eMiwKtyYbH9wmUF7$u@ zW`ShS#JO2&!3~2rys#O3TezxZ#!R%}GooZ>C1|;kBK^4!B6#EKMN-7S1trOviSBM}cnOlbhq+>Q&`}=dR3NYULH1ZaFF|g;lDG>=KA$9-C%WCutgf zEO_n6t^_vWP)Ik+BDc^;j5#TpIWIzAAxf#Yij&hI>o!*!WF@s|xq(&(PYSJjA>rMO zOa3VD`+NN6W%n96*=bu@@`@WcaNb-8x6^PXBOiXJ-n@@XLXT3V@9iG+qOev zJZ&wZl%`y=prxyKNxPP8qM5|KQ8`EH>xXw_3$`AVZs-BwT^xE(cUin3tItmCxL`Uf zz?J0lY-`(9J|Q+*{dH|Sc?`}r5x%#M?nmRsA~D>Oow^?^X3=5`Sv(CM@((kRT4oQ4 zy-vKtCMC(uW&XJV5_LiyBTo6gCo4qT`Iu#=0{{fL2Vp4XXy-wEJ02!KT-;_;CdTfA z-JWWH4_6f1de4M3OFlq+vK^-kBH+<8g)j2Y~(%log)4rsY>OP)@aLUNqzrrLtZs9rXF)vA(5Ut~Cjfau?wRX%$&M(g9 z&n8&mPt&i46g|Opz@s5tuE{R1PD~EVoU|I!i0e59AGbE%jN8kP7XiiOexC5EOR%%A z-`{CSJtkw1NK0+cIiaG(XZ3(7^Sy?AYMHH)niq|&K;r!g_i82Wf=^C4*Hss?wjIlJ zB2?H#=_J*7BwA5Z*ESMtZ`aby)+PDo+4rNh130H;MSj{C&;o|^;gMqM8Ec;nn&IV@ z8kjTJhH7`djQboN&+_jaFU{#P*9*cH^=z{>@$jE*f;Whl81cY|teq=hMSEM`d$1ia z6-;*J=ANq%kntHeei&eb&CfZ8Sb&-);pQbbTkoJkEwS#G3@2qYh@_1GQ# zbSqXBziGPH594`6watWyJA9ZS6=D`Rrb(j(`mG7IN3 zV#BrfP|ZosM}O3li-A}apX~*<*+prvP7k>vb?1_BeSb&Mcs(G{7B=p*@3!Y#eC_Vn-!C|Gtlvn9;BSFSDJJ4#{RA} zAWDD)7&NrOgZsI)6)$t8#6hSY)u8q3ORy#1AM=TMd{S8UD@RyzMHI##8X-wgTHqAh z@(N&az|@b7tx=H5hVgp`$DZp~2Ugn7V%ftn4>@v@WaWtkJYGabje@-k=l9VBL2y|q z$$eCf9dXS%fQaWc#bnKTzD*GS?@smV@z_Fx?e&OsQN|Us_ad zhbznq`{d;rVJNvZicdd*j0f6eaMW7WNRvFhAyF%)%(_=?4?rcQGsFX#B=Iv&z)npK zF$uIH+2-qZYi&NiVOfk_MR6ZHOSIVcsNm@{NGmhSKhK+rDufXgh7mjH+2+qz=-rj` zTlGvIwBrLCB+?T{u!v0W%w6i=jVlzqpIlln7viRxirN~LPFCo5TJu*s{pcebvtGL* zyh67yC4cDJQeAGZogg?;_(Wyr_P@X}QnDtSjO$v7+2Atg+FEE4aoX zMM9WtLuDbi>~X_pW;}F$JZKRgv1vwb#F!B-r}xY|6as{*kq5RbR)FeG7v&bz^n*ti z1+7qLi*k$jwgg3I`w_v3LpyCU`2t=3+W1sImrOLKsR$@)>Xul93ekKyE>L~x`5_wQ zdH2eNj~5fOFE}6jps6m|9hxl`xE&&UG8Cjpl@t~IfF}7z-BU_DnsnQ`$(^>9!E+w# zqrS~>7$e8!WX~c`lK4m{^Uhb_#p2{`mASWLCnH;tZqE7d^n8y_<3P0mFoHb z>{=htwYmDfiFMZsq~`hc1d{W!b9JV!IxQ}~c+by_)Z!A-_V2Z*lisq?G%%JHO~WXx zLBFgy=hS;#^R29cJ3v`Fq6X#;hxUFgi?_If;)YtCZ0fZTFWU~m1U0@df(p8mWfyxz z`OEw-P<>?%4&2GF7Ne*O7C60J@i62Cq4EVhT<13Vfr6NMX8wtJ1)ubjw%$&5ixpBe zlULUkgIMDw9V1Z{hD40O^vnME`U$WS(kEsvhpQ60r-O_sg?KI7>57hZ%YBP7G2>Sh z8GqTtSUEF{Z4x}(b8pzfgb~XtRUD@={FQ%nmXVitpS_`Z?yATE^ZvTrSeUXBCs$7i z#rVK@rCdgd!eWYD+xWzb=!GU)SEYYbO#gssuc z&wDIW-zYs48wSt0JkMNygHJJ99g3ZNL+K^uN2#;UPM`7+((}viPAf|&21B2Z(p}2L;hMZd-eGD@==iDb z7*q={@W)b_tep>IDMLe`WLTj-+48GL;M|{b*fy z#c}5p&fSq|P=>4=f??MU!JPW-$HRqS?i_i~4Rc;de+RhUeeZvdvGfj?A2;jqcnZAo ze)R9HdtWteK*0D30M>7@9064b*S(7*pmUk;B`{Q@fA|&ZGzGftFdGF!d<>pJIGUb8 ze18Aq&v)?@;&bbi0#pnPLam_vF9Lfrw))n(F@N38r%yIm~X3eof z$AB8u=$8ct>ClRFX5IPYD4@AjaS*B$Mh!jo^heYIWb=J4*#ID=5o7vwnxr>=l=qHIm{Ut|ZpT5YXYC`y)pGdr zd~b#?ZUJfsc@!DJejIsj|MNe$n8V0($7DVeC+iE6%_BL1hieF?f)?48{HrklHj_&# zmtc;}#4PFW6XfqN5TxdB#@s|tNd3!m0oku7SD!*!y+SZMzv}S4!2SLG(74S@u)E^*5M%Rt}was;~kNjBZ25v`%2!D`!I5(?5Qir~@&SvCik zn<=SEdvNec0~HrYJXa>pjg)vf+R!C-@bOp>l9cF*e@-iPMWFiYGnJUDGWh1^^r9k- zRq(|FLc0h5F|dAar{bsaER-=wHW0gYj3YPa>qbsTG%|Zvvu*Efsg91Q*J){TKo^k> zY`TSmUTZ^w4?Y};6?e^_=`YP$wK)c2@PC`yf9nI8aLjaX!CuW7j?r~+RLe%hepq5+ zq`JhWNA9Fur^be}6(7lY{?dV9=p8#~Vfdg|Kg;5$@+#aI$vJ!!oT{%yqY%S2)zK;y zixzIXxP8q+*$*EJn4ZDs0Qd}#G6epIR7>%e}38F zmvC@8S6SbakvrR)`eu{&XZ7$G3R2yGVm7^&d7hS<%382?@V|9l124=uzm0i!y|JUn ztU1QSno#1G@TsD7@R29X4V>{}y=W0#XW=0btcd6!Yj;C~%gpgJ9-sTG0#9Al;nA(TUK!QZI%BCGKgDadF2 z{JBlKzD(VcxaI83q%bm>+|LsUX64`4ZxB;B1q`viEeGc?kUcTF#0q(VdB-O$Rrv)7 zhL=Ic36DZbtcJD3oXPALMQpNaH2Mzzx3LbMDJ<+vW2PZETRCXvLAs}l?1n1;*WWIN zAb!(kmd-VjK`T6{a=Z0*;ip~W=S4?j2HE999ZLpotpELUEy(5Z`L&Sw)yYeIaXm+G zZBt&f<&D1_6UTQRsBD_C-n=15;JgsvL*2U;>237M&`z>2d|5g-Z$@9-b9g)u=U8CW zq1ivz+2R%m2?9~>7mvn%+LnG^=h9-vCj+fFZY)09_P?F*&{-L_WA&u~{OUz_Jkx>%V}yPkX^}N@ski*`q0f zCpc=YU~aa04)hUzYkE_ukEZd)Wcx;fU8k4R$k9-fk2_y;7CYo66Qr`2wfsB=6cdU4 zAnr21GIQxN&h62Dz=U^P6k^EIo7=Rn$js8aOj$4l z(-h-vXzaGOh%sIF8A`;qjU;sF+RgOB`RBc!Xm(Rt`EApUGq=;t6?ve!w#rjol|GO+ z_Kue2>Oy^W@|xy8j~N&9|LPuDwnnF5h{vGJX0zx?YaY_t*%(S^}}`D z@8i{~TPceDiJFRWp71nwtV?%S8?Y^csaO=q>Y!1A^-- z^LGajR;x2uNmjSAxw`_^qTZa2QXZN~Ox_6MXGe0WS&>J3TR$5{x5gnLptb^%7fy=YqEg25aCHcnHYgd@`E$WomqDu~iXnjS6`SbbqvtjwwKc1KAGn%A zAv6r%BJlqlsup&ZAb__-se~RKzgLOuYRQkYqP*EkPeV5Iz*b^l3bb$Ltm}DhT%W=d z=%y!{hHE^mgU|Gp%mxG+iJy+e!G+xC9HlRYpOqN^)`Q{CzaKL`fYjNFX*Rp%QDhe| zU{W$WjQ-Rql|msJ`&0|utFOyCKGe}VI@dDF-GU_ z+>FYNGYa-EEjAk~qYLdJ_jk6yN26~(avRU$jJ$Jw;h37L7;?F(oIe_CIFPWtk}w#U zuyOIimb(k62ZVGhedfrS=~dP(P0@0h%SWy{3uV9Zxr7vk{up;xV1{QDJI)ZZ=zcK^ zWWZM&?`}jVcrG?+=;>Jv4aZ2V|M48T(ygPcs~hWF6@3d2XXH|u3?3c%GOvIQFKbr(QuYVM+WdY@B3W3M@-`?a0-r_g%E6LoX zwY(<2@OZTMtzDE->PvNlRRrP4})-)=}4^Md58VB930(gw3l13dKTnfuI$5UN*2q4O&EY{H-fteN& zaC~9qWZ`86y^%NL^O=IGwX;hMQISRG4`{6E1=l*DRMg00=EF?C^<|EBV`A}edFpI8 zKF|?<( zc6^kua0|> zW5tFs+2Btcd~7osscDE7V}FQ3$-|nOiWd!k4)>V z2vo1wDj(N+$DsOU3?U zPveGZDiR(vMx@=ps9hkJZsKHyo_s`EH&KOdOinJDt$b96+>f$)Tm?-tS`+foUGJTivg&GR4ehzjg6;!944dpsf+*q-s5<6^Q}cg+Gi3j2qk6E7jLaMXR@2j6(VJ%=nq+8F0ZT7)h-xej~9{Gt@W(n z)i2{kS2&XJ2~bA}P?zTg@^1du+?OrfwpV(`)*GdFSlR)f5!lG&p~B>~O!&=vy`Gue z3U!}|HCI}ifESvNm2|3wuZ?&cTUn*9Jqd%H$T1e(C@3-~q224JZGp~3FONp)EvKa} zokXiUI-v4+<}+tx`hx7j5UECX4iV$OAT3dp%`J~+SlD@Y@TV9=wd1?z$oGoIw7KV2 zQp1)73MOjLw5FvXon#u;V|eim&s2=6yHhg0F5?Nh$_nyrEdBI(M^xF*8-`}fl1rr> zZVCE9R@yYJjM$2ig7H4F46LwHhAvN9m2C5}Ov0=qYwyD^)s1HN8^kp>C{=|^R{^*k znL1b7Nx!XGd$;athqfU{woZsbCikma?IJgIRVdW1$C#Bg=|A`Z>|K&MF1C(kmL>Mg zQNbZcLuxo8XQp-N@{X$6vNCv(BCfFbFO;LA+*&zjS>w3w{CH%i=CM zl3$ZV<1w!ZuI!BY>@}oqLv5MEK>^I#In1C|Wu|U-XGKcfh>M)T4nsP%;tn%TWlLAd zf-oL|F&V`h59BUs>PN2bK>G?!(Mt(jFuJ@ed3}}F)H1B(r{?&k$C8$`!^l^+K}d9` z8s3|%audx^xJ@|t^9Jok5_eT5$)2R~fpn+1i_uRd)~iMP8Wk&t8-(~lx+yoEy$g7i zg?r6KkivFv-?H&fzlaB9i(~#x$A-+Rf`HYb+2DZ@C!nLjDAtqJ=H!s0biD~k_=V;} zRF|17oUseFcv1x4&Po;a)wrSv@x+3<$xV=(}vnq)KP8Q-$r3*k0 zylEG0%;Ty$Vom4t>G8TMnoLRuDxccl`%Q~F&A(;x&3aY|NRJ`XvGB?~SYq)yny1`3vc#h;oF2P*cBg+i(uHH*j>{sJ z1i&5$0;NQM6C3qyad-A=z zHPQdV7-Dz(@e*d! zOg&f7K{;1F_R}e#M;TeZ(qz-FkFa{6t(<{Z%H|}43W&=OPWFioT-~g0&AzKDB``^{p2prWj@=meymECjChOUC<2RQy$?SR| zO+4~LAn@e}a`5u{AC9*VteSQ9cdNwiZ%Sqa`lX>Md*}bIBP|N_9yz@p`#1y4Dj>Rz% ztRpPqo|-=9k&MpWxb)tMhdF{adbefWv19Gh++diNa@=vT^y1ecx;~b3_S$Y%X6bI* zsxnhU8DKB)dyyGrnZEn#sFkC!d_xsbma16iE-VrHI$-i>ltkj(`Y7Wn$S~R-M--jc}?HBGV z`<{=F)B>1`UIwBxPHriQlg%(TmVc_OTpXz?-1cTgnA-?sD;(n;6N79gQW4;ZHENW4 z<-QO+`Rq%x={28mhGAkk#pG`-d&!~ufz+5P$G5k86j@>ye=@!obissF{s~o17~`m( zCfoIa^1D28&N7^Ic@rXD28JoJTd|J9IiKy4PTBn&QV#MRtWr}7~n}t3x)mfK|2uFE5ic3ea{-tLXE>(#{PdlzNoU1U z|Ed7p3I;~Kq{=g$>4iiKS$fkBilr@yKCdjOHvgp0Zr3C%b@i-YW2^#)6;?jvOzG*! zVuFz^(fO9)RVUuYl86!P9`2rD^{u)opf&M)$-^B}lph5>F=_>;PWB#kh_1>_i)z~#x~u`#WIs7C(X}P~T`L4S-4N_W+Uz^_b-DgJ!KE-arPfwaYlISn@*8wbC;a7a}ycehUl(wkvaRU*0YHg zPHi1xmYA?EPOiQ6hJ{nV!BQ~QF+rhSU#N}MY_9=`>Mxq<`9`~bOH9#I0XtmAxyHX$ zF~w=o6)r{B(ODMEZRAX2d{eq4Qr?u=g`o~J=Y@1^h-Z`TGd?Y}0wM%WP%I1-0^E1*c+-ouJ<_&f8!?j@9+ol!RR96jz@jFF!H#qY;);flSx8Xm-}I* zYjXSVGP!MAT+B9-HeAT6A8tLS9{D*(lsC*9Hay}=IvM0SocfSM_hO~{Hh$%J0#s=_ zdF;ar(kn>mbCBB92t+OeHTdv7ctUM9l}*|73tdgx)}bol6JpFKXZUp1w*6;1bF&>K zlTaI$+4=eT|9hYv-WtLpYg)Ix8cmL`85ru`=2X(o1e_hrpp&| z7Fs`Qmt4aE7U4Sx_V)zq-y+#}$Fnl3s|`><+ElqYiq8a{C*R45yhZ9k)-N!QPwg8r zT`l#3#9D+0HoSi}y@{6=nB*@{`mDIY+@rl}%anJ<`NGwEPg-KG$y!;FCkopT|M`l3 zN;niloH1YQCO@Tg0Fg#>evRJp3P?|WdIF&|Z)^GUf$^vIjNEJjb1a?t zIlRu6eYt*+!Ho3f=`OuPPJd6CwVm2-Y@g<=7nor&;ortqd$y${Tfqld#M52%g$le!IF1sdyAhZ zI6bnS>c~$ou`)7#5(n|#T3Bp0-qBD%L%0Cq$Nkw0WD)zPNw)OHKG|A{rWOgFIskEBZaMdTK?(|m+2l=_Z9NE)|({PVYjxeEYab|m_d+Y zUHs!YEq;%rIm@Z?XhJP7H#efjW36Yk1tg&VJ^6g*Ayi4@zh$ESe`lA!AsPQb41P`| z{ECP8IiL3bGQF(3PdR@StM*s61xch}mNPP)4D{R5xGXW9gwI z$G1_FYo@JRFw^lZl4(^UxF+G`D^pC_kt83+}Faj^-4Zt**E<9iY<1bf@zu z!Sw39L;mZ}qhRTi8x?iMcnB3v^5Vpnf;R6~`O4-Imp#1X-@21Rmq_bSKRBW{PD4dZ z4st~CDbuSKqoi4w{##2?rt(ufMQ&}X+V>Ao`It1%BsbxG*m6fSv%aSZeoZDMkE}m< zS6s9*#*>$Ni0W8-nQn9wmZC0Kn>>0(DE7&J>5z5-&y6Nl-Qs(%5N%X9$BONCcI9g` zb1m%uBu|#-O;DzE0Lbv%*_dd+5da-XR{wcaZM~0PVlF-g&?{Q&iEWNWuk>eKAjkX- z<`A+syi6M;mYF2H@5vuaMDN2&x|CbfHSd52;os>V%G1c>Nzq`K6yblP`bwWOAPp|@0z&)f0jeF7fm~+L zZ}oX2q&IuR;gksQ)$;I;dRO4x$gM_o>2tLpMM_u8$f`zk9a!W14Nj{2XsSrzJ#W1K z%B`~YO1UWhxQE+DzNhzar8i9kE+H8HkKXoD|Fcv_M9!KAhWrbNW3AHD=J7kX5!LUz zxyhRzl(YouxO0Dg#~vxwRH$=w3BCVCzn9dzm4*x`Tjj{vo4S4zvqwqr8Cfpl=iSz`9?$#YoPzW49Wj-gnY+ZYALrHt241Neu%1zCc{Dn;?? zvI1AkP@vb-3<&k{{HnRIc)LnPexNhFw~HpYle0UjTH%<{Mg4_wnA|-0+%k%`2j&@(&O=FGWu=@>TDT`38o;(cC7Pv_QJ# z5_>h&_7yMpGcJ!kBf{%VJ0pd}NQ@v@5;W6<`2RJx5I)Dvb z#rl_kaS)V$Tdq}ob1RPYjAR}>PzF#vL6jL5Fr0+Bsh-8jBn?7 zG=pS5?te>u6Ps@9@1^eNB)3mh%mRXXw(u~XT2dURc(^=@e^yT^XQD|y@7Rzr(0CF= z5^w94S|Q%e0mZWK%$m`1*5ble_Tu{6R!pZ-*UScTo4@^F z{J7a}DQdnRU`v2f5LTjG4lo^DzHEw%A1MbD|Eu&KV;mSOB8LZHUmXbrP9qg*VDe|d zF=@a92CZ2Iknq^Y@&Y3?p#tar=akQ@r@GOlsjlek>^vKZ2PEB}Lqbj`yIhfu>I$kh zX7@4CgGtQ|+#JAm8)SaJ4{||rg@rPGkzRlNIMsSEOu<{nC~@m@tPb|LKwsTJ!yfmi z2-q7S{XP(@zq|;ji|XkOz4ZH^*Bg!=R?GodzhkCa5pb#c8O1r)M5Yeb2Tu3rq^(KY z&_ziYdOs29NHFHHCrWwb2F5Kukyz_dU0nanlZX|LkJ9@oi?QlyS~I!0$lB{ zphQ}>4T&CT2sMs=&*0V@j6nm97NpkwyIxyw+^L}qem`>g1tEJYeU8??CtohN1PHPK zT6GV5-vaOmQW4Zc(VsWPg3_p;K5vuYRgA!bQCz$-mcu&YNW5~hc26O69f(7M$Be=V zc-Q%QmctHP5=zugk=rjj+3|@&M&LX4Qi8S5i<$YUQu(kAT4ms_Yn6`W0 z)@-DIbcx?wF3DphEUCjK`C*&MPf$+XEpSYDs+|pHbo**7eN*Q6Qtrq$ke>f`XrlUh zcyAK{%$d1CXJe>u=i$|;J$|mX$IaXF;VX^k`u@@gp~|wzWG0W-5?}LV&4>+>ru~Q- zFVSrqfXL79vjUL?8=5i7?|MvT!GHETpiwZ`Gz z+3G3PspXm7TstZFHRiy0)LHSSp-jdvCkWmW9c^Ead*EV}>$vBQhLtl6+)Apwo$X1^ z|J!wFbXhSyQ)zHOjm+K)+Ui+gei%CSM^8t(p|WMSgoAXX(cu{$omJ?~mkC3N3`6G< z#0=|CQM+SDk>@Ub2Je3n@I#>1esAJ~ZNQy?#qaJ+UZD&?eZ}iL+UJL5+!@~_N6ZWu z#0h5$uv`px*%XdW;@HIZ4fQv**Y&`eq`nu%6n!I05b5D4LBfEz-f}|58A!$_&qP|`S;?`?*vRi z2yGxxBUZk=s+`3ExdFMlxEm93es8ZUyZrxC@i&JI{7t0w$|V=-ot zLGM3!5zMlkzh>DP=_Yt@I7rL#;pC56ts_}~CV-AX}xn2eG>E^hX zL&SztB{h!07zvwrflQXEmlKD?E{pI%apVF1-rvRA( zX@ociLOf;)PmTb-g%~K*_R8TMH9gLU-srbRgpMHxxO6*1$_J4FgYMILC--)fL67+w zhr#jw6hkU11qMYq87-Fq+YT%uC+4yc@J&xV!6>GM&B?KrR;&ocFz7ss8?Z%|Jls65 zEAIZv(|t+NVG{-23NG>(i)Qs$6GLhx4^(8_a>?H|IKNxzJy`3{qpowZN>^&Tp_gpi z{xc!+tIqddJ?tFGsT%iTD^QPVun5(1N`I??W5Th3&<9>l3ESb$G#l=9Jc@%B; zmss`fhb8gvtV}tylYS2P|MI7_ZN)weY88G0Cq2ua+}I^Y5v0@5WF0;!QJhRu0E&%V zjSFsfA0xDC8arcU454I5u}QpE)JNI|*W|U66*~7BC>p&eW%e8_;7>q#?RP-%mp}C% zM1?jw{{rPTo8*eQE6$S@S~=DkY_=2;T6ll`;z#Mr;!!OQNkZdUsdVYr^+i86Y2{rR zsxk8#bR1UF_&@EvcT|(<*YC|Z_O3LgN|z!CQVdn4gpQQZ%OD*Dlq%gB6$A#55|KW1 z2tuS2ATSC-=!PnNl+c@$gc8cRZY-nxe9m*$IqR(VUF&`MV`hykGk320D*M{|`~7Uj ztlDhx&J?kk&1lft6d1-o%hi51JE{L~iWTe=JG7Ke2liCm(vi1z)A!Xe1cfCYtvo${ zx&#&QB5oOwH!X_n-hA?Q>5fcfnns;3arsc9FOti9D|X9y_v+71<0@msJOLtBfEYEf& z9oIrLAanwCub54hOo!Zd#Z^~bkG>+&mw#_SbWjB#{Qsw~?0jvLrb$xG*K+v(QL*!9 z?}o!aGCfJc^Es4`%F;+lzWtfrff)J#tU$nvYfD6BY85+11LYDsDN!w)M+BL`>KNuy z<}-P&6cKIxy*TN=*#EvS)}C?E!JDsuPwpOSM5Z=@%Dpk$qz+Ia{6z~IFp|AsF=--xrgo1z)q|2OJxKU*77SDWxwYbI15Zfy{<#*!LmO#@V)?~b0C zVT$0XA5-b_-+KGXh|p!0{Lfb6UJdmE{^%0}WV@o1&lKy2QV{Nq;FNX$yDE0T2c-P*Y$R{=Fc?8lRDf4w8t+}-Ln zX8Q4?48%&-a;bk~OO{%KJz9tKH603q6FgyV*ub+cuYc8iUL)#NbJ6>peyWXmGkSvU z)gPabTLGkJ9MC_S1ho7gna~|hIs+omJhHz$$*#8>!=xdzU819>*JqkL2O`$bmqEp6 z>A|_CZg2u)i1KS}Rk?UinxIlewjpZ5#6qe77=aE0bINx|J{14Qv&aVG{K@mQt`0VC zcD!f&szUiHb}r<}ojgB&E-=Zb0*KH}4TT-fR~`Q89qb@1{)Lp$M0btK`3)~80%m25 zN9ob4tCTLnAYbr(%tw{S&=V6I+X6_+7Ir|--C9^`J0Pb%HDu^?y(V2!>aT>>nz9Hs zO2?=|ef@iWW*d`-hR1s;C6spS2AXTy(h+I=zaBpM?BX?RMKv|Gd1RBx*J=gWIE4l8 z@YR?2^r*DEip+9#OS2VuPFCVvahjj@zdk9-CPyB7R3!r4vS{Pg9aP{puA+YL-fm>3$*y=$y$7j z6SN3eM?h}vWy_2!$YjXFJ>;Rqg&~0|ktO&TsBG7a6k6}PO z{A_#yZ?-#}`#lhr_Bz_}wGxo&!McBoMWak?kX{x~1K!N#J|E6A4QHSn)fIKo>3IDT zRVtrpiGmrl*_}Ag*|}@!(j|F@x~I%P_qsZf>CnX=XFsqnIIsSY5Oe9biiM?VW|~o| z$Xi=Lt}~#4iVPK~(T6&!UIZGu)+7l%kNE+FkLZ&#U;I(f?%vCVaGzQbaqe{r=0qM8 z9?wzM5L3^bdX7Xp!~EjWXGsQ$##a#zmLD-T9wa5F>xU6T*PD!d+80Xi4fbOvWO^;?4*YOY z0IoILA{_(*lz>z$n`5|zeAn+?lzi}N$i2_R1@yCS8jm$wXdU;O$<0Z%zo{9v`Dj#Ax&K@>(sL zwv48Rf!e|61SPmLeo6g!}< z24!VqGERU01{z}`g6osGe<>9gjC-b{cbF#^r8_n-pzTNJP}EDW_0!YMIo z*(YF8ICr#j%3*MGF`q%rUFyxz&x1Luz0<@Rw=b76UMR*N6Qq!IibDROzgbWiR&se8 zt7#hNQmdLIVn~CGHLP9qKLDQThw=*81IF-gpS7|Zp2by}70Jg`y9mdf)KLZW64IZP z5eaj33u;1<`9SP#n{vLk02Z559&sOm;m#-u^=cp4NpKNHmYf24Z0OdNZ}ELf>B$KS zDuM6J-3kQqLI;^?pOqAvl?@iUkFB*>;_d>y+JVk`D*r47Vo19VFQ)2+EOEA}8MM>T z*%ljItx5KBn#P&D_0@2}n*v=2bY|L?Xt{k&pD9yQ96fD_*qkU~(bBDX=PhHay5C|9 zR%*%V#b=9CX>ue#YG-*{R)aWR7+t=unweJR3uNNRld$9b@KdQT(bRbol0cBb{i8Wr7(zvHlv6;hT17gZTo6Of38DJQ@Xp@87_X*7 z=qDIU6KuujE7*OuZ?$L^Ck56IHg5Luc#VF3tB(!B+Xa$1G{UMBnCRTqrS2b~cy06k zJ+I|Nb#TqOjQy1Y5D6K=hm@C2DW<`MBh%f<3G>3>1aF1T>4;ZAqW7;$JLii_yWEdO zF>;^f8ak6gJf%CZ5`8dMevZiP);Uw67Pf4K1uilj@^{7wc51_Lx-J^REo)Y|_Fn43 zJO&t|rJo0A+_@}8A?IcHX3=utO$6&&Py-fVw|*=WK`{%J_NC_J8Jz31lIWsjrs(Sz zV7x01#r10ZIoNylS$gi?6JKrCH1W0jH2YMOBFCb&q_!z-S!h-&{Wg?^`M%`&`2+8H z(_T@2f{Cwe;JxC?0Z(#l_(Q>T$+nJH#}gc2PCjj$$4ZTkv%#-nX@J5tYi~({s+3Jz z3ZF(eIrnPEWr`P)f+U_e!Nnv6#{Y1M>wy5}*TmFM*3}0DsU>1hhcFJuQ)r zOK3(eIAx*_|9H-Mu_rg#g9G~p+h6lOiu^i`P547r#pAj6e|>_|q#Q1^)_?jDLpK~ek=NP*%>!14`JJB{klNMY?N$rk_Ne|J^wO9T1FU`VSR;_+* z4DMWs_4#8sZv1hZ>O zEC@n>rcFJQdr9pD`{Y9gwY}^Ukhq0=JD&wk_)FZto0Qq>qgeAVg5h(KpO@V{Hhto( zd%kh2LV*{pwM$Udq-=Pl?OT+tf&I7@pARZ&vSd@6BV+zLC0s{glc`UEec>$07pF;^ zKZH<1^}YR5TZv90sQwKdES?TJmybp>d~@JmI@S@f`y>V_P%EMy2pa6Sb9BAM2L(LZ~^Y4YbbD-fQ3j5ziu+q%u@u`8zSLHgFmUQv;|)GIsd1Cu1zDwVV1W zee;zm3!_*c&*?sNiZ7sNJy+q!$Q58oh8SSQ9@hxijFtrPh>*veew>(dG631!+_Uua z27F~jpi|!iTNx`bt$dfX{5tADDFfAVCtBm!>VnS1j&3h_x_}lgP(;KS*`J|AnWtfU z(y-j=3Y^I+BN2o;;WzwtHYUf@Bc!7o2g^iI*X4o8<(`a#c|ETZU_XAIR!~r~bP0Y9 zl&<)KIKmd7V|L~)Y!DhOl6Ge-{7lPd{VR9Z zare=tL)yvYg>yoLxdNBni$TqdT%OPA!xt~hTt~^N%e)L*<+I~(T(jd;Sk8s$ewWE*HwGn>5}k=!FcQoX9U zVf!01ckKs#xYOqE1~T((WB#j%i{9-YTn2-a2wMw`gq&YVNE)?-hNOrzBpNDAT7g*B zs}`ykT&+kcy_zo8ginWqdg1|f9@vbsrsvTxvvJ$5fq;YC1TGn+yomkJ7Ge<2um9@r zIQs4+vNi;l%09n3L3uigwzkiNrdQXKhIjm2i8q2*y|$;+1k2Oq+75$*loWrJ=j3FV z+}HOEtUaaBQc3_hBwl%wEq=I(7BJp@uE*Sv1d#z?wQ;@WfiwHe3EG@vUmI<)@o?md zNa`t_va%J2?zP76iXWBS)m&fgm;`9-Am4=u70|o0%Yz#;#p?!SdTxeo;TRHxK0m%pz*S5J3l$XPT{o0Qf3+NO z_sjoyRdtH$Kz_U!5}1dZ0#DJ~qqP8??sLMS@3!imXdirfK9t))Iy@)|W4zW8QHm+I zx0-*xIYcDF0Q-(ubdc%_Y%9TqxUuH`bG+QV#K zS|ySrUPm345q7P6>+PbufVY7mlR06{XK!b4c6a33+YRhH5Yqv+^j;fesl-X5pi7D9 z_c?VC37|h*g3~jj8QhiFl|pZZb4EjBeEDEU?RrOsR>^zJ#}M8-(2+nf{qXbQ0*b+I z4I+LFzh5VE!CMy9rSvyFhBV^6c9MXC{Bl3M9hR0fv|1XzJY`@)XafY*h{L3%p4(gh zu^m)NiQ_auQSr(Zc}gi2!=@`-Zc(28Ln<^q$+AJZZAp$e{J=L?02FD9;IM&@7#w|p z1&0>RPAq0ngNHy01GMp{zqV>0MMUn>-sYZ>=a@D#m1^X<_3v2@_Aj-O+8JA@3fY42 zt7XO36gf*7*ni!uvpZLT`j@adCf+=6w#c`ZoF@2|$XCq9 z!$#H$rk)G#ewig@Jc!-A2%^_;0eO07jI9yteP6?Cp$fi7R@k;-n9+GS0+1yeuQfSb zHq9Lw@YDH+iD@otou<2N0UIQ9A;Hc9UO6E7O8)7W)Y`M0Yy!OGs2gJ5Eh7hr%$A!y z7oP9-m1z@3^Iyk8OUv!W_7`Vf%UKEv+AoUB}oqeD^`HE|%H{N-MG2O8x z88sj!?}7G)E&I;Q7JJ$ZtNH1@)xJMi(iTsoOzi7fd74Q|v@TWeX<@^?_-l#sSwyew| zi^+)r-Sqy7`4hSN67ZevkzF8pyOtLiRwmIru+YmmYt<7dFLZy0GSY#_IJ?BT*t(qn zVIX|mgaP@05=Jtf-4Rt#tx?+pK#0e~N3Y8`F;BXa>TA{0=1{pLR5Gh^~!T+)cB<#F-7uXj11$VGW>h)duBPx@LH2d$$p=a(}FqTAgIDw6T^ z7u#47JA*Xy!$w0Kk>xrtk0w2w1+p0jK;T`G;^tTz0V$;!DgsV$_m^X|r*mBsMA1pJ zI{!{nlYx0QY;94BcAU3*IcfP(`c9*P$qq=rHf@hy*GU#fCscb)>$wWmGw*-LeWXY!o;#)aZUx&5BD?oVrPun5WUz?Hu%;)fFii)H#+H0V)nXzLU07g6(ZB)4nzDA z)^Gd~zZw-6cKD-%F5Q&h7d@>7;Er03i|y{}Mj_2&#dkEpg;Iq$p!sniH(&oxz^8D+ zLZhM9pR0th!q~JV4oHm+qCl2D@j?$Y!-;QQ)U#f7&vd-^R~Qcx2VA zX?DoFw#1WpmrGHu+T%00NcY-bOAnN;t{fA(KQbm{K5{h<>sI1hn5sis$RC8uTMM1b zoA<{obt&d8HS(Dde^*UpcJ$m#3usyvVQ%rz5V0##zMa6(Be_EQ8%J8r_|%Kq44C7H zPERQF`>^WMgqqgn>1}^L-?KFN%8eLwQEw^UMQ8L8hmxr)g0TImc}_|G@<9-Ld~tt) z3ZQnjIuZyYai9s|rNMG%v|n#BNN7my-|>84bb9j@*#m|bQOg}KXS%nmWyjpFm(x?b z2iIqnGdib`77EB?ouYS#>Z$&+4*1A(n>QVaoVXvNXFI@y=t^=e*%5guaH$IusBCN$ zIaNA@S$&NwTPNM6&h#!AnO#WCzOP1Ua;A1KO>PRC`H0N$e-5If92G$EKYePnm}^rn zC*-X61XNK`uP}{77lPF0;w-DphQiL#5N>$axg`9WGs1Fl$^ljH=jOKM z1%cA)Abk%oC%T&$2q_tY7~#kdvyIyW7Ozwi@{Y5#C^DVrR+}7$@vw(L*0U95QSB`b z6ra0hZf>VWM-%UgTlj6UN)6V??3H_!lM~blStnI>{bqDg_A+-nuQI}BhPe_PavqH5 zsQt+!5i5PR-*ByR#O{!4+DGw9=d_Nic0;RV|&A*tTYWHdEf)(d+}c~+GEm1mXH1aof^>rpaegWYbNf3XDsAr# z&h$DA#-#K7>e(Z=YhzU@J1gVb?iJA`kW}17U4a4U?gnK>uXB#qx>6VR03Xu}@k#B1 z@sZjAUH`x|LIG^@^XTL;xEDfXmj9eD5+EAw_PQUKS2gd2k{&~eTv-XuQW{NC^aaVf#r|3Z7`cYnF;+z+E$wApBbCDs2m3bR z9TBtXYdr(XnsB~ekxir9le`zO~#p7TRJ!Gl$DU~3#^(03pjRUj;QL*DMzEF zW;}wvnUxF==*ZB{oj#o_U?iw1de`LK#wltkQ9YOLxqvL$S$bADveZaAGzl(vCLahy zK7YGuuT{a$RM{hT0M8>E%WskaAj$U`Tw4WQ<_a6deaGlWpIvLe&em{<*7y>w=>u~H z&^8UZBEzBPgc+y75POXn7ci4d7yxe>tC%kv%m8ga1@){u3rr*~f|{3(9vprq#*zgN zX>{7%c`cXFn|*_2uJe;xn0xVjHS^u?Ev%N%vx|AYkhaBU^0Wa2Ww0hZYVQD0lnBN} ztI7C~0g`&TQ^#RK4%hb)W1Bi?o*s3j#PUu^B-QwO_|0YGy{M)Q z6NaXIb+;$EoXE?zo(#bBOlw7ZVKDHx$*S9 zg^lg@RQ;{im#RI-TZl%_;r_Dn=$mK9bGT11?=eW0NA99WsJt>(x}A_c^fWLn-&aep zi-H@yI2((syZxyF6$*noP5H>T;wky_zSjKyS4d2JhJxJVFz0+nqro2kY1iqeZCtD= z5?BSJGIUrH+J{M;u|C^ORjofTZE-#}fu^N>0A{z54>fJG74l zHfx5d-9c3VzVz^@Z+le$fpZLp*Kn3rLOs6{6YrP+(Mod4(QI0Ip14Y}G_rR&M0EM? z$TDxo2exQBKgl{SCnZfiapwl8m^KWowmaG>@Lnp77dE+RcRH^86s_2#SScdco7O`p zy;HYCc1`^tBi_kEENC^jEhx?DtkcRt-|5(nh+DY2 z>oV)h9B-;;R;&zGME$V zDK#=;z%4kS6QvgPB85kkjtA~g2H!ayHngU9dOOp1GZg){tRHmW7{OX$`IdBioG$Dp z&gl!mNecdp6)tXdMjcHfCOw6XpaC*q!nE~<>E4e&vF{Ws`2ftwqqedi{iLYFM-YRK zc-Sp%1Zt)_!>M}ZK|DIrHe3V#iq28Ln5(kLCoPo>O#YrevLCU5pw$6%*8d6{xL0D| zg;XgZxR%F-3TGO=XmXT|zFVu>kIi=4X$j;%ZK>Pf{RA>e-Vzd@%)+{8j3X5?GegDz z>^xu9J)7s9rTDH5@a5`0s%)I{Nmlik*>E6E)_X;?yb1BlSY7e7m?ZYcGQXX#^0vTe zBPCdh78_OIErIzdjRnXMMf9bxnj`qJ=%n%u@iFUdj$Q?Tb?$k&pmU1OZ&ZdafV;Q6 zc_u8r!hJ3|1PC$Wui$WHp1}GZ@s9fv|Du%M7m*%#&qonmlJ~ zjmSODp77gB!TV%hP_IY;#v;?1HMIIVm?D^3Ug_) z=vvXx3rAfF@LU)j4<(*pBlm5G6LnGXLK!GHEzjQydM+3PPJDPBp()y`Geb#G zA%f`&x^~B#0f04S2mrwvu>?3_O(5qz;LkH_86=yW4#I$j?K zkEW=>j(beJPV%`MiRDo`gWYAK8uT2Y&S4}j%Ac*ARY_XE!c=tnw#&gx`RCrW+Ac~Z z_aeE~+RV47|LVyYpk*|44lVyf7|GDqC?Xf$@L2_n4~(`q)zm(qp!XMgcax|0<62V~ zgUBFJ*Vj4(bD)YFe;0`8Jkg=$@x5>J`9<_f!7H++o0k<2mGu%Fx6KM}U!)5d$!aZj z^u+UM>J?=fnvYT;A*jSq4gSM6enZT$t|k3|2#+~7>RKcN!rVaHDD358`I?^#zWH{! zkiJEkxs!J8#+(H4ZBA&-q7xBq8Y_38uj&f*l{GsWasne=Ae0E(4mR6k_sHGl*NpB` zm$a4qbmIO5Mdm6nHd4-4-jw_rkA+;m=8sP)%*}8GMSB%bb>A9yM>zu;r zd(ra?#@hyuXztz$_r60u!n6mSgenh?6%0ft6=6xKKDnT(KBZ2%6KdQOpS(PKyj)GY zP+ooA5}YO_sP3w#F>9NdQR&JBXco}u;Im9Z^knv}BHfb;94S~w*P||OzsEf|MkT1k!ojAj`wMF7)25}1&Y{VPHPidyU6Y6$e*mTde4aG&O!I1G zGnV&O8_UYVN7b?^-<(r%u~g9AmHEMEf(Mj00s&+2Q{rCL2~07(~d~Zv=Z@dHYHCzw;h^2L26N6QPUUdX5xX_PFsD$JR`@ zO2kcVE7EF*+h4*jW7mPA<5~3KIHQ_o7LmwowSDpb?>%sw52e=e# zm6-oD-#aSG6eieASuQfw$R;d;f6DSGSTYd!$eh#(KXVGwB<)x>bh~#@hsk{aT5AHw^O8dS8=y>c2YOWJ7THeQi^RM2Q9MF zNeJt&ylOnN`C>!l&)E2HXJ9-`yu-4nr;?I`hjvy)Sw;Z2s(!vHUNM{}7-XdayLmD3 zuEKi4mN&C30YEW*@?z;l{EF(ffg(Gc+Vefuf1wrC5*KO~igkuyHd5v(ijwhl>(Qrz z^j3|HbCVUrt>fhY3*$rtuRH=ZwH9Yi+^H9EDM?Fv6E`RvN9C>^B@07U)Xj<@Pt4M& z361CQ-f}O@bX>`J>!cz4XYGziNocc9-)*4n__EQp#+6#?JUSF{ZEk?gMdxJY+9YUV6s%w9 zRC9NztTQ*q*Lw>QIhodJ4+uf}RTh+dbJ53LpH}Os0x(KhDp50+A<6o0pJc!zX@T%F zb^o|;9^N*75QM4%!>E1bApvlCPV?a`&A#D~KKErS1X9Y!3evAY0~P7s56h7Pzo`a- zj|{&z%t&1@aZ8ndL78Yx%sGzmQ=4FDyZH_B3QZ3z1F=~-?D$)t8x)`C-n`EL{J2v7 z@}JRCbFXENwQ>uR5n-;Z62!^%1^nD8k@-e zy9Tc{#)RWp`bZyo`N7Q~Y>shwv`jG)Gvnu0nB2N)*Y04i{O(Z8Xfw*>t+87(uRfrV z48Gem2!+GQaNdh!@=PwmE9S(BPwR5zD%Te?#Gd&H2X@0I>BtAImim6+x=5cJ%+Tii zxjq9iY;gF?3%A$7?i18I`_2cnwuk^9nYm|Th-sj?v;6V6mKffTY_z6!=!fVV%mV>9 zHRFt9Su`Kd#`#l><;ObZG!5bw{!pHH=BI{AT@F#x=L}J9mFsIrjPCwZPhnyPAn3k^ z+tyPIi3O|LOEK#1DY~lhvXhPNbW~gy+va&rr!@U`j-@!Hhu5@CSxqggCq2uU*sQ@3 z$ABn9$nQRLC6{`SafMTq=J$p(gmu0<6n8$jeM@ZBhfXsIz+E{S^JvZPBd{qodd3R zF8fZeV@IzBq@uBo&)XQh8iWa0S0cn4lKj|~r7J(04CcKYq1v!>?riRs`zUDWPM5Ev zCd@wi*2K!xqU>D0N7#;$>Y$>iXYN8CIp=Ec;^Tg>F8o&#Mz<6oXQgyL4pPwIQOE7(MOhKv_B7`WB1C^m>KAU=eRb^7wUW~T=e?CcWJG=E>v`Z++g*Q z4!#D$vb}FIOp!7s z4lQDLdeQboo>kZVBuny#`7U3{t4AUv`lS8YiDO2r5gOO^Y0Uci_9W*&mNXdZ1A7*8 z)qO5Y9|T4}NSU0aQN%Jg{agF!^ig=kJG^}xxLB0>$fb9>w%a&2KlX}%U*J3;69DhM z;QGS8Gxw;-pim?9#JOYhp)BVh>x%$x3_`66s@X|6$QHV$mD?*JyrfbIJ~&( zQm&@p`pu1_lh;0dA?_49j34i|Eb`e|F2A!Ftq`H4TNtM*X)iL_%eZ;OdzDD^>yvNb zG~AqM=xu0d7Pv#sE$LaTs|QR0nK5eT7Sh0Ry|DaRaEpYrA#a2yr$F1k<}#;wEA5nD z8J6_lHAbd%dHc!@TMWY359~{xKhkiM->{8pJ9YduFo;3#dAitpEL$+u!pI$5&EKd5 zPw@5}?-U5@Q=(=ZNGagc!Bn}fg%7Yr!^d+SFJqO&UAm2)#M_Q&gPwj9djuck1w`wU z1YsVd=-_RgkD5U<&IQIvpRS>Vx?VDsmZtg{mS;K{K9uXH*b%Io3pWZ!*8A@Rkv~Q)3Z{PasEZ^rlX*?6yLWIAl7^YPoo~qr8~v-Rqp>)GXi}Yz`F6|89!HKw7B0F~H!BP;$3t0>XiQ=i2Q%PV=n=^Mu0U%H}sIj26_vH$Ue7GEDd*nK1+O z2rFFK-Chh37%cC*^7o6puZ8`+7nEZl!y+2vzqpXERXiJF;_9x;ZQ2*_21HuxPuX2#imj=ZzoVDXc>{#J3b8M3gcy*^uL%7%K zOaA4FOn5W=SMs|3<(-!)q{#a+o2ZjgllL(5_3F#ROrPZ-&(+dpC)B*x7Ow2mgFu=F z@YTPFv>=1Wx33D(f^^ZQ^Q}tWEmz8M_Zu1YG@i%LjTXhZIgB>v3S)uG8?#dp?n3U9 zXz|Nt<^ci~L^5pmXtw>ze<{4_)yZ>VRrwN zO*;N=pX3ICrt98o8P#XvnN$sk3PpGOi~bn-^*d?%PgGaYkR}~M`Lrj(APM)z@S;B# z$n&OZd-a1HE@*V_)ZX5pK>I>`8OJsbnx97xI@g*c2kdxlOr=Ly4wg9eq=gsR&W8?icDaa#C4{kv1tS~#9vq>0L2SG5a&nd(pOR1_c)<_?yH|k z;l9%dg5B+#m}{Rv_Ww1H5_P4xpzJshWm6RM-vYX1fMof10sJsHmR)lR^I8DMkepv! z@TYG_9h2+!#7yx%yil6Hhi~QS7KD**4U}Ew$lOJNz{TBT6;`J?QZWLUfD|c3z zW`!(O;QkCLT7DdA1Bu0(d&Yko0Q^zd`^z?x*N?%DdyQ9+IU!%OlT>c-SScKO>|zJj|; zxHZW{m(@+1QPAqibmPM-JFPO@&c+GW0Ol38yraKR+}oH}M)jVZcc0<7K_*nm%ij&J1ZAGXPRKkR5}>mI%^>#4 zd@Vk0{Bdp%xY9^_B00ntT_=?>k~x^Ps6S3~Ll*Xro^#Vy(LMiK1+3W9R3gQ1<2_Al zVgt_riDKV_73#~ZIpx`c2Q%+VG;8{}YyhBy7rg!<#_2@dQr{SExpqrWWJbth;h@({ z?XOQ}G%2on-5Js#)M3UltIzE=^8Lq?EkTGS=~=Sw2LO+F9dbxOuBJmLtdj3CZ>%eG z+?%2FXOx>VSCyn+bUi?7`u{e!YOWJ;;0A-UIz4M>Grgxcu;J||EzJ+f7yxI-ddex+ z#TbodTK(EVbL*-1{Y9e!jRsbL<+d z3unT}GS>SA@O04}ZYRwN!uIC zVMn->C_`5dD84=&}?mU&c zaTK4r%G_=@bm&DjI5mFoG;BN(SvhPZ4?ZlYbY-ViGX3JGSp2o|hh|tS|aT>JNgEnG-vK+8nGn4$bB3aaonW-~5c+8y3ytYtXo^;UG@EBQ}IU`{d&!miGm@a?8-1(G*tnTz#Z8PTPGdt3Vc3;~f2A|P`u=VgI-KE1jsjdX68NbD<<+fT? zkC7@f`H{L4>0vZKe8pQV2tKQNNdZXbpz m|2v{bk6Hac_-k{y9hrNIf4wc7XV8VdfRenrT*0m1{`eo$gaJMP literal 0 HcmV?d00001