From 73a35fc5f9d5834da96fae865d12bc9533f535e7 Mon Sep 17 00:00:00 2001 From: zhouyibetter Date: Thu, 7 Aug 2025 15:48:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + CMakeLists.txt | 27 +- Makefile | 2 +- ...34\344\270\232\346\212\245\345\221\212.md" | 628 ++++++++++++++++-- docs/image.png | Bin 0 -> 84995 bytes docs/record.png | Bin 0 -> 365060 bytes example/common/tiny_shakespeare_dataset.cc | 43 +- example/common/tokenizer.cc | 57 +- infini_train/include/common/common.h | 15 + .../include/common/cuda/common_cuda.cuh | 285 ++++++++ infini_train/include/datatype.h | 99 +++ infini_train/include/device.h | 70 +- infini_train/include/dispatcher.h | 398 ++++++++++- infini_train/include/tensor.h | 16 +- infini_train/src/autograd/elementwise.cc | 18 +- infini_train/src/device.cc | 100 ++- .../src/kernels/cpu/accumulate_grad.cc | 21 +- infini_train/src/kernels/cpu/linear.cc | 89 ++- .../src/kernels/cuda/accumulate_grad.cu | 41 +- infini_train/src/kernels/cuda/linear.cu | 160 ++++- infini_train/src/tensor.cc | 117 ++-- test/optimizer/test_adam.cc | 12 +- test/optimizer/test_adam_cuda.cc | 12 +- third_party/eigen | 2 +- third_party/googletest | 2 +- 25 files changed, 2004 insertions(+), 211 deletions(-) create mode 100644 docs/image.png create mode 100644 docs/record.png create mode 100644 infini_train/include/common/common.h create mode 100644 infini_train/include/common/cuda/common_cuda.cuh create mode 100644 infini_train/include/datatype.h diff --git a/.gitignore b/.gitignore index 31d4260..2012679 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ build/ .cache/ .vscode/ Data/ +third_party/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index ad4b6fa..157f5ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,20 @@ include(CMakeDependentOption) cmake_dependent_option(BUILD_TEST_CORE "Build tests for core components" ON BUILD_TEST OFF) project(infini_train VERSION 0.3.0 LANGUAGES CXX) +# 添加这些行 +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Debug) +endif() + +# 确保Debug模式包含调试信息 +set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") +set(CMAKE_C_FLAGS_DEBUG "-g -O0") + +# 如果使用CUDA,也为CUDA添加调试标志 +if(USE_CUDA) + set(CMAKE_CUDA_FLAGS_DEBUG "-g -O0") +endif() + set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) @@ -52,7 +66,18 @@ if(USE_CUDA) target_link_libraries(infini_train_cuda_kernels glog CUDA::cudart CUDA::cublas) add_library(infini_train STATIC ${SRC}) - target_link_libraries(infini_train glog gflags "-Wl,--whole-archive" infini_train_cpu_kernels infini_train_cuda_kernels "-Wl,--no-whole-archive") + # 修改这行:添加CUDA库链接 + target_link_libraries(infini_train + glog + gflags + CUDA::cudart + CUDA::cuda_driver # 添加这个,解决 cuInit 等函数 + CUDA::cublas + "-Wl,--whole-archive" + infini_train_cpu_kernels + infini_train_cuda_kernels + "-Wl,--no-whole-archive" + ) else() add_library(infini_train STATIC ${SRC}) target_link_libraries(infini_train glog gflags "-Wl,--whole-archive" infini_train_cpu_kernels "-Wl,--no-whole-archive") diff --git a/Makefile b/Makefile index c5a12a8..7a70cb1 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ CMAKE_OPT += -DUSE_CUDA=$(USE_CUDA) build: mkdir -p build/$(TYPE) - cd build/$(TYPE) && cmake $(CMAKE_OPT) ../.. && make -j8 + cd build/$(TYPE) && cmake $(CMAKE_OPT) ../.. && make -j clean: rm -rf build diff --git "a/docs/TinyInfiniTrain \344\275\234\344\270\232\346\212\245\345\221\212.md" "b/docs/TinyInfiniTrain \344\275\234\344\270\232\346\212\245\345\221\212.md" index bc23852..f132719 100644 --- "a/docs/TinyInfiniTrain \344\275\234\344\270\232\346\212\245\345\221\212.md" +++ "b/docs/TinyInfiniTrain \344\275\234\344\270\232\346\212\245\345\221\212.md" @@ -2,6 +2,8 @@ ## 一、test 通过截图 +![通过截图](image.png) + ## 二、作业步骤 > 将代码填入下面代码块中指定位置,并详细描述完成该作业的解决思路和遇到的问题。 @@ -17,26 +19,32 @@ ```c++ std::vector> Neg::Forward(const std::vector> &input_tensors) { // =================================== 作业 =================================== - // TODO:通过Dispatcher获取设备专属kernel,对输入张量进行取反操作 - // HINT: 依赖test_dispatcher,kernel实现已给出 - // =================================== 作业 =================================== + CHECK_EQ(input_tensors.size(), 1); + const auto &input = input_tensors[0]; + + auto device = input->GetDevice().Type(); + auto kernel = Dispatcher::Instance().GetKernel({device, "NegForward"}); + return {kernel.Call>(input)}; } std::vector> Neg::Backward(const std::vector> &grad_outputs) { // =================================== 作业 =================================== - // TODO:通过Dispatcher获取设备专属的反向传播kernel,计算梯度 - // HINT: 依赖test_dispatcher,kernel实现已给出 - // =================================== 作业 =================================== + CHECK_EQ(grad_outputs.size(), 1); + const auto &grad_output = grad_outputs[0]; + + auto device = grad_output->GetDevice().Type(); + auto kernel = Dispatcher::Instance().GetKernel({device, "NegBackward"}); + return {kernel.Call>(grad_output)}; } ``` #### 解决思路 - +`input_tensors`作为参数,通过Dispatcher调用NegBackward的计算Kernel获取结果即可 #### 遇到问题 - +无 ### 作业二:实现矩阵乘法 @@ -49,21 +57,98 @@ std::vector> Neg::Backward(const std::vector MatmulForward(const std::shared_ptr &input, const std::shared_ptr &other) { - // =================================== 作业 =================================== - // TODO:实现CPU上的矩阵乘法前向计算 - // REF: - // =================================== 作业 =================================== +std::shared_ptr MatmulForward(const std::shared_ptr &input, const std::shared_ptr &other) { + // =================================== 作业 =================================== + /* + output[*, m, n] = input[*, m, k] * other[*, k, n] + */ + // TODO(dcj): support broadcast later + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_GE(other_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + const int64_t n = other_dims[other_dims.size() - 1]; + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; } - std::tuple, std::shared_ptr> - MatmulBackward(const std::shared_ptr &input, const std::shared_ptr &other, - const std::shared_ptr &grad_output) { - // =================================== 作业 =================================== - // TODO:实现CPU上的矩阵乘法反向传播 - // REF: - // =================================== 作业 =================================== + std::vector output_dims = input_dims; + output_dims[output_dims.size() - 1] = n; + auto output = std::make_shared(output_dims, DataType::kFLOAT32); + + for (int64_t b = 0; b < bs; ++b) { + for (int64_t i = 0; i < m; ++i) { + for (int64_t j = 0; j < n; ++j) { + float acc = 0.0f; + for (int64_t p = 0; p < k; ++p) { + acc += static_cast(input->DataPtr())[b * m * k + i * k + p] + * static_cast(other->DataPtr())[b * k * n + p * n + j]; + } + static_cast(output->DataPtr())[b * m * n + i * n + j] = acc; + } + } } + return {output}; +} + +MatmulBackward(const std::shared_ptr &input, const std::shared_ptr &other, + const std::shared_ptr &grad_output) { + // =================================== 作业 =================================== + /* + grad_input[*, m, k] = grad_output[*, m, n] * other[*, k, n]^T + grad_other[*, k, n] = input[*, m, k]^T * grad_output[*, m, n] + */ + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + const auto &grad_output_dims = grad_output->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + CHECK_EQ(input_dims.size(), grad_output_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + const int64_t n = other_dims[other_dims.size() - 1]; + CHECK_EQ(m, grad_output_dims[grad_output_dims.size() - 2]); + CHECK_EQ(n, grad_output_dims[grad_output_dims.size() - 1]); + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; + CHECK_EQ(input_dims[i], grad_output_dims[i]) << "Batch dims must match"; + } + + auto grad_input = std::make_shared(input_dims, DataType::kFLOAT32); + auto grad_other = std::make_shared(other_dims, DataType::kFLOAT32); + grad_input->Fill(0.0f); + grad_other->Fill(0.0f); + + for (int64_t b = 0; b < bs; ++b) { + for (int64_t i = 0; i < m; ++i) { + for (int64_t j = 0; j < n; ++j) { + const float grad = static_cast(grad_output->DataPtr())[b * m * n + i * n + j]; + for (int64_t p = 0; p < k; ++p) { + const auto input_idx = b * m * k + i * k + p; + const auto other_idx = b * k * n + p * n + j; + static_cast(grad_input->DataPtr())[input_idx] + += grad * static_cast(other->DataPtr())[other_idx]; + static_cast(grad_other->DataPtr())[other_idx] + += grad * static_cast(input->DataPtr())[input_idx]; + } + } + } + } + return {grad_input, grad_other}; +} ``` #### CUDA实现 @@ -73,30 +158,181 @@ std::vector> Neg::Backward(const std::vector MatmulForward(const std::shared_ptr &input, const std::shared_ptr &other) { - // =================================== 作业 =================================== - // TODO:实现CUDA上的矩阵乘法前向计算 - // REF: - // =================================== 作业 =================================== +std::shared_ptr MatmulForward(const std::shared_ptr &input, const std::shared_ptr &other) { + // =================================== 作业 =================================== + /* + output[*, m, n] = input[*, m, k] * other[*, k, n] + */ + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_GE(other_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + const int64_t n = other_dims[other_dims.size() - 1]; + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; } - std::tuple, std::shared_ptr> - MatmulBackward(const std::shared_ptr &input, const std::shared_ptr &other, - const std::shared_ptr &grad_output) { - // =================================== 作业 =================================== - // TODO:实现CUDA上的矩阵乘法反向传播 - // REF: - // =================================== 作业 =================================== + auto dtype = input->Dtype(); + std::vector output_dims = input_dims; + output_dims[output_dims.size() - 1] = n; + auto output = std::make_shared(output_dims, dtype, input->GetDevice()); + + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, input->GetDevice().Index())); + const float alpha = 1.0f, beta = 0.0f; + cublasHandle_t handle = cuda_device->CublasHandle(); + + // cuBLAS is colmun-major + // output = input * other --> output.T = other.T * input.T + // C = A * B ==> output.T[*, n, m] = other.T[*, n, k] * input.T[*, k, m] + // C = output.T[*, n, m] + // A = other.T[*, n, k] + // B = input.T[*, k, m] + int lda = n; + int ldb = k; + int ldc = n; + int64_t stride_a = n * k; + int64_t stride_b = k * m; + int64_t stride_c = m * n; + // NOTE(zbl): the last cublasGemmAlgo_t param has no effect on GPU arch >= sm_80(Ampere) + + switch (dtype) { + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_N, n, m, k, &alpha, other->DataPtr(), CUDA_R_32F, lda, + stride_a, input->DataPtr(), CUDA_R_32F, ldb, stride_b, &beta, output->DataPtr(), CUDA_R_32F, + ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kFLOAT32) + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_N, n, m, k, &alpha, other->DataPtr(), CUDA_R_16BF, lda, + stride_a, input->DataPtr(), CUDA_R_16BF, ldb, stride_b, &beta, output->DataPtr(), CUDA_R_16BF, + ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kBFLOAT16) + default: + LOG_UNSUPPORTED_DTYPE(dtype, "CUDA MatmulForward"); + } + + return output; +} + +MatmulBackward(const std::shared_ptr &input, const std::shared_ptr &other, + const std::shared_ptr &grad_output) { + // =================================== 作业 =================================== + /* + grad_input[*, m, k] = grad_output[*, m, n] * other[*, k, n]^T + grad_other[*, k, n] = input[*, m, k]^T * grad_output[*, m, n] + */ + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + const auto &grad_output_dims = grad_output->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + CHECK_EQ(input_dims.size(), grad_output_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + const int64_t n = other_dims[other_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + CHECK_EQ(m, grad_output_dims[grad_output_dims.size() - 2]); + CHECK_EQ(n, grad_output_dims[grad_output_dims.size() - 1]); + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; + CHECK_EQ(input_dims[i], grad_output_dims[i]) << "Batch dims must match"; } + + auto dtype = input->Dtype(); + auto grad_input = std::make_shared(input_dims, dtype, grad_output->GetDevice()); + auto grad_other = std::make_shared(other_dims, dtype, grad_output->GetDevice()); + + DispatchFunc( + dtype, + [=]() { + grad_input->Fill(0); + grad_other->Fill(0); + }, + "CUDA MatmulBackward"); + + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, input->GetDevice().Index())); + const float alpha = 1.0f, beta = 0.0f; + cublasHandle_t handle = cuda_device->CublasHandle(); + + { + // cuBLAS is colmun-major + // grad_input = grad_output * other.T --> grad_input.T = other * grad_output.T + // C = A.T * B ==> grad_input.T[*, k, m] = other[*, k, n] * grad_output.T[*, n, m] + // C = grad_input.T[*, k, m] + // A = other.T[*, n, k] + // B = grad_output.T[*, n, m] + const int lda = n, ldb = n, ldc = k; + const int64_t stride_a = k * n; + const int64_t stride_b = n * m; + const int64_t stride_c = m * k; + switch (dtype) { + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_T, CUBLAS_OP_N, k, m, n, &alpha, other->DataPtr(), CUDA_R_32F, lda, + stride_a, grad_output->DataPtr(), CUDA_R_32F, ldb, stride_b, &beta, grad_input->DataPtr(), + CUDA_R_32F, ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kFLOAT32) + DISPATCH_CASE( + WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_T, CUBLAS_OP_N, k, m, n, &alpha, other->DataPtr(), CUDA_R_16BF, lda, stride_a, + grad_output->DataPtr(), CUDA_R_16BF, ldb, stride_b, &beta, grad_input->DataPtr(), CUDA_R_16BF, ldc, + stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kBFLOAT16) + } + } + + { + // cuBLAS is colmun-major + // grad_other = input.T * grad_output --> grad_other.T = grad_output.T * input + // C = A * B.T ==> grad_other.T[*, n, k] = grad_output.T[*, n, m] * input[*, m, k] + // C = grad_other.T[*, n, k] + // A = grad_output.T[*, n, m] + // B = input.T[*, k, m] + const int lda = n, ldb = k, ldc = n; + const int64_t stride_a = n * m; + const int64_t stride_b = k * m; + const int64_t stride_c = n * k; + switch (dtype) { + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_T, n, k, m, &alpha, grad_output->DataPtr(), CUDA_R_32F, + lda, stride_a, input->DataPtr(), CUDA_R_32F, ldb, stride_b, &beta, grad_other->DataPtr(), + CUDA_R_32F, ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kFLOAT32) + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_T, n, k, m, &alpha, grad_output->DataPtr(), CUDA_R_16BF, + lda, stride_a, input->DataPtr(), CUDA_R_16BF, ldb, stride_b, &beta, grad_other->DataPtr(), + CUDA_R_16BF, ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kBFLOAT16) + } + } + + return {grad_input, grad_other}; +} ``` #### 解决思路 - +主要是复制粘贴了InfiniTrain中提供的代码,CPU实现比较直观,直接使用for循环实现矩阵的乘法,但是唯一的问题在于TinyInfiniTrain中的GetDevice()的返回值与InfiniTrain中GetDevice()的返回值不同 +```c++ + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, input->GetDevice().Index())); +``` #### 遇到问题 - +无 ### 作业三:实现Adam优化器 @@ -113,9 +349,24 @@ void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_p const std::shared_ptr &m, const std::shared_ptr &v, float learning_rate, float beta1, float beta2, float eps, int64_t t) { // =================================== 作业 =================================== - // TODO:实现Adam优化器的梯度累积和参数更新 - // REF: - // =================================== 作业 =================================== + const float *grad_data = static_cast(grad->DataPtr()); + float *m_data = static_cast(m->DataPtr()); + float *v_data = static_cast(v->DataPtr()); + float *param_data = static_cast(param->DataPtr()); + + const float bias_correction_m = 1.0f - std::pow(beta1, t); + const float bias_correction_v = 1.0f - std::pow(beta2, t); + +#pragma omp parallel for + for (size_t idx = 0; idx < grad->NumElements(); ++idx) { + m_data[idx] = beta1 * m_data[idx] + (1 - beta1) * grad_data[idx]; + v_data[idx] = beta2 * v_data[idx] + (1 - beta2) * grad_data[idx] * grad_data[idx]; + + const float m_hat = m_data[idx] / bias_correction_m; + const float v_hat = v_data[idx] / bias_correction_v; + + param_data[idx] -= learning_rate * m_hat / (std::sqrt(v_hat) + eps); + } } ``` @@ -126,23 +377,61 @@ void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_p 代码位置:infini_train/src/kernels/cuda/accumulate_grad.cu ```c++ +template +__global__ void AdamAccumulateGradKernel(const T *grad_data, T *param_data, size_t num_elements, T *m_data, T *v_data, + float learning_rate, float beta1, float beta2, float eps, + const float bias_correction_m, const float bias_correction_v) { + size_t idx = blockIdx.x * blockDim.x + threadIdx.x; + if (idx < num_elements) { + m_data[idx] = common::cuda::Fma(common::cuda::Cast(beta1), m_data[idx], + common::cuda::Cast(1 - beta1) * grad_data[idx]); + v_data[idx] = common::cuda::Fma(common::cuda::Cast(beta2), v_data[idx], + common::cuda::Cast(1 - beta2) * grad_data[idx] * grad_data[idx]); + + const float m_hat = common::cuda::Cast(m_data[idx]) / bias_correction_m; + const float v_hat = common::cuda::Cast(v_data[idx]) / bias_correction_v; + + param_data[idx] = common::cuda::Sub( + param_data[idx], common::cuda::Cast(learning_rate * m_hat * __frcp_rn(__fsqrt_rn(v_hat) + eps))); + } +} + void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_ptr ¶m, const std::shared_ptr &m, const std::shared_ptr &v, float learning_rate, float beta1, float beta2, float eps, int64_t t) { // =================================== 作业 =================================== // TODO:实现Adam优化器的梯度累积和参数更新 - // REF: + // REF: // =================================== 作业 =================================== + size_t num_elements = grad->NumElements(); + + const float bias_correction_m = 1.0f - std::pow(beta1, t); + const float bias_correction_v = 1.0f - std::pow(beta2, t); + + int threads_per_block = 256; + int num_blocks = (num_elements + threads_per_block - 1) / threads_per_block; + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, grad->GetDevice().Index())); + + DispatchFunc( + grad->Dtype(), + [=]() { + AdamAccumulateGradKernel<<Stream()>>>( + static_cast(grad->DataPtr()), static_cast(param->DataPtr()), num_elements, + static_cast(m->DataPtr()), static_cast(v->DataPtr()), learning_rate, beta1, beta2, eps, + bias_correction_m, bias_correction_v); + }, + "CUDA AdamAccumulateGrad"); } ``` #### 解决思路 - +模仿InfiniTrain中的实现 #### 遇到问题 - +无 ### 作业四:实现Tensor基础操作 @@ -156,10 +445,27 @@ void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_p ```c++ std::shared_ptr Tensor::Flatten(int64_t start, int64_t end) { + // return Contiguous()->View(new_shape); // =================================== 作业 =================================== - // TODO:实现张量扁平化操作,将指定维度范围[start, end]内的所有维度合并为一个维度 - // HINT: - // =================================== 作业 =================================== + auto ndim = dims_.size(); + auto start_dim = start >= 0 ? start : start + ndim; + auto end_dim = end >= 0 ? end : end + ndim; + CHECK(start_dim >= 0 && end_dim >= start_dim && end_dim <= ndim); + + std::vector new_shape; + int64_t flatten_size = 1; + for (int64_t i = 0; i < ndim; ++i) { + if (i < start_dim || i > end_dim) { + new_shape.push_back(dims_[i]); + } else { + flatten_size *= dims_[i]; + if (i == end_dim) { + new_shape.push_back(flatten_size); + } + } + } + + return Contiguous()->View(new_shape); } ``` @@ -174,20 +480,30 @@ std::shared_ptr Tensor::Flatten(int64_t start, int64_t end) { ```c++ void Tensor::Backward(std::shared_ptr gradient, bool retain_graph, bool create_graph) const { // =================================== 作业 =================================== - // TODO:实现自动微分反向传播 - // 功能描述:1. 计算当前张量对叶子节点的梯度 2. 支持多输出场景的梯度累加 - // HINT: - // =================================== 作业 =================================== + CHECK(!retain_graph && !create_graph) << "Not implemented yet!"; + if (grad_fn_) { + if (!gradient) { + CHECK_EQ(dims_.size(), 0); + gradient = std::make_shared(std::vector{}, dtype_, GetDevice()); + gradient->Fill(1.0f); + } else { + CHECK_EQ(static_cast(GetDevice().Type()), static_cast(gradient->GetDevice().Type())); + CHECK_EQ(static_cast(dtype_), static_cast(gradient->Dtype())); + CHECK_EQ(dims_.size(), gradient->Dims().size()); + for (int idx = 0; idx < dims_.size(); ++idx) { CHECK_EQ(dims_[idx], gradient->Dims()[idx]); } + } + grad_fn_->BackwardPartial(gradient, output_idx_); + } } ``` #### 解决思路 - +模仿InfiniTrain中的实现 #### 遇到问题 - +无 ### 作业五 注册算子kernel的实现 @@ -198,35 +514,57 @@ void Tensor::Backward(std::shared_ptr gradient, bool retain_graph, bool 代码位置:infini_train/include/dispatcher.h ```c++ -template RetT Call(ArgsT... args) const { - // =================================== 作业 =================================== - // TODO:实现通用kernel调用接口 - // 功能描述:将存储的函数指针转换为指定类型并调用 - // HINT: - // =================================== 作业 =================================== -} + template RetT Call(ArgsT... args) const { + // =================================== 作业 =================================== +#ifdef PROFILE_MODE + const auto &ctx = GetProfileContext(); + Profiler::Instance().StartRecord(ctx.name, ctx.device); +#endif + + using FuncT = RetT (*)(ArgsT...); + auto fn = reinterpret_cast(func_ptr_); + + if constexpr (std::is_void_v) { + fn(std::forward(args)...); + +#ifdef PROFILE_MODE + Profiler::Instance().EndRecord(ctx.name, ctx.device); +#endif + return; + } else { + RetT ret = fn(std::forward(args)...); + +#ifdef PROFILE_MODE + Profiler::Instance().EndRecord(ctx.name, ctx.device); +#endif + return ret; + } + } -template void Register(const KeyT &key, FuncT &&kernel) { - // =================================== 作业 =================================== - // TODO:实现kernel注册机制 - // 功能描述:将kernel函数与设备类型、名称绑定 - // =================================== 作业 =================================== -} + template void Register(const KeyT &key, FuncT &&kernel) { + // =================================== 作业 =================================== + // TODO:实现kernel注册机制 + // 功能描述:将kernel函数与设备类型、名称绑定 + // =================================== 作业 =================================== + CHECK(!key_to_kernel_map_.contains(key)) + << "Kernel already registered: " << key.second << " on device: " << static_cast(key.first); + key_to_kernel_map_.emplace(key, kernel); + } -#define REGISTER_KERNEL(device, kernel_name, kernel_func) \ - // =================================== 作业 =================================== - // TODO:实现自动注册宏 - // 功能描述:在全局静态区注册kernel,避免显式初始化代码 - // =================================== 作业 =================================== +#define REGISTER_KERNEL(device, kernel_name, kernel_func) \ + static const bool _##kernel_name##_registered##__COUNTER__ = []() { \ + infini_train::Dispatcher::Instance().Register({device, #kernel_name}, kernel_func); \ + return true; \ + }(); ``` #### 解决思路 - +模仿InfiniTrain中的实现 #### 遇到问题 - +无 ### 作业六:实现GPT-2整体训练 @@ -252,13 +590,54 @@ TinyShakespeareFile ReadTinyShakespeareFile(const std::string &path, size_t sequ | magic(4B) | version(4B) | num_toks(4B) | reserved(1012B) | token数据 | ---------------------------------------------------------------------------------- =================================== 作业 =================================== */ + if (!std::filesystem::exists(path)) { + LOG(FATAL) << "File not found: " << path; + } + + TinyShakespeareFile text_file; + std::ifstream ifs(path, std::ios::binary); + const auto header = ReadSeveralBytesFromIfstream(1024, &ifs); + const int magic = BytesToType(header, 0); + const int version = BytesToType(header, 4); + const int num_tokens = BytesToType(header, 8); + text_file.type = kTypeMap.at(magic); + + const int num_sequences = num_tokens / sequence_length; + text_file.dims.assign({num_sequences, static_cast(sequence_length)}); + + const int data_size_in_bytes + = kTypeToSize.at(text_file.type) + * std::accumulate(text_file.dims.begin(), text_file.dims.end(), 1, std::multiplies()); + // shape: (num_seq, seq_len), dtype: int64 + text_file.tensor = infini_train::Tensor(text_file.dims, DataType::kINT64); + int64_t *dst = static_cast(text_file.tensor.DataPtr()); + + std::variant, std::vector> buffer; + if (text_file.type == TinyShakespeareType::kUINT16) { + CHECK_LE(sequence_length, 1024); // GPT-2: max_seq_length = 1024 + buffer = std::vector(num_sequences * sequence_length); + } else if (text_file.type == TinyShakespeareType::kUINT32) { + CHECK_LE(sequence_length, 8192); // LLaMA-3: max_seq_length = 8192 + buffer = std::vector(num_sequences * sequence_length); + } + std::visit( + [&](auto &vec) { + ifs.read(reinterpret_cast(vec.data()), data_size_in_bytes); + for (size_t i = 0; i < vec.size(); ++i) { dst[i] = static_cast(vec[i]); } + }, + buffer); + return text_file; } -TinyShakespeareDataset::TinyShakespeareDataset(const std::string &filepath, size_t sequence_length) { +TinyShakespeareDataset::TinyShakespeareDataset(const std::string &filepath, size_t sequence_length) + : text_file_(ReadTinyShakespeareFile(filepath, sequence_length)), sequence_length_(sequence_length), + sequence_size_in_bytes_(sequence_length * sizeof(int64_t)), num_samples_(text_file_.dims[0] - 1) { // =================================== 作业 =================================== // TODO:初始化数据集实例 // HINT: 调用ReadTinyShakespeareFile加载数据文件 // =================================== 作业 =================================== + CHECK_EQ(text_file_.dims[1], sequence_length_); + CHECK_EQ(static_cast(text_file_.tensor.Dtype()), static_cast(DataType::kINT64)); } ``` @@ -277,6 +656,41 @@ Tokenizer::Tokenizer(const std::string &filepath) { | magic(4B) | version(4B) | vocab_size(4B) | reserved(1012B) | token词表数据 | ---------------------------------------------------------------------------------- ===================================== 作业 ===================================== */ + if (!std::filesystem::exists(filepath)) { + LOG(FATAL) << "File not found: " << filepath; + } + + std::ifstream ifs(filepath, std::ios::binary); + const auto header = ReadSeveralBytesFromIfstream(1024, &ifs); + + magic_number_ = BytesToType(header, 0); + const uint32_t version_num = BytesToType(header, 4); + vocab_size_ = BytesToType(header, 8); + if (kEotMap.find(magic_number_) == kEotMap.end()) { + LOG(FATAL) << "Unsupported tokenizer magic: " << magic_number_; + } + + Version version = static_cast(version_num); + if (version == Version::kV1) { + eot_token_ = kEotMap.at(magic_number_); + } else if (version == Version::kV2) { + const uint32_t eot_token_2 = BytesToType(header, 12); + eot_token_ = eot_token_2; + } else { + LOG(FATAL) << "Unsupported tokenizer version: " << version_num; + return; + } + + token_table_.resize(vocab_size_); + for (uint32_t i = 0; i < vocab_size_; ++i) { + uint8_t length; + ifs.read(reinterpret_cast(&length), sizeof(length)); + + std::vector buffer(length); + ifs.read(buffer.data(), length); + + token_table_[i] = std::string(buffer.data(), length); + } } ``` @@ -286,19 +700,54 @@ std::string Tokenizer::Decode(uint32_t token_id) const { TODO:实现token_id到文本的转换 功能描述:根据token_id返回对应的文本片段 ===================================== 作业 ===================================== */ + if (token_id >= vocab_size_) { + return "[INVALID_TOKEN]"; + } + return token_table_[token_id]; } ``` ```c++ void Tokenizer::GenerateText(infini_train::nn::Module &model, uint32_t batch_size, uint32_t sequence_length, uint32_t text_length, Device device) const { - /* ...原代码... */ + std::vector dims; + dims.assign({batch_size, sequence_length}); + // x_tensor (FLAGS_batch_size, FLAGS_sequence_length) eq:(4, 64) + infini_train::Tensor x_tensor = infini_train::Tensor(dims, DataType::kINT64); + int64_t *x_buff = static_cast(x_tensor.DataPtr()); + for (int i = 0; i < batch_size * sequence_length; ++i) { x_buff[i] = eot_token_; } + + // Give some contexts: "The meaning of life is " + auto prompt = kPromptMap.at(magic_number_); + auto prompt_len = prompt.size(); + for (int i = 0; i < prompt_len; ++i) { x_buff[i] = prompt[i]; } + std::cout << "The meaning of life is"; + + auto x = std::make_shared(x_tensor.To(device)); + uint64_t kRngState = kRngState; LOG(INFO) << "start generate text:"; + + infini_train::Device cpu_device = infini_train::Device(infini_train::DeviceType::kCPU, 0); for (int t = prompt_len; t < text_length; t++) { /* ===================================== 作业 ===================================== TODO:实现单步文本生成逻辑 HINT:调用model.Forward推理获取logits,根据推理结果进行随机采样,调用Decode获取文本结果 ===================================== 作业 ===================================== */ + x = std::make_shared(x->To(device)); // CPU->calc device + // TODO(jym): use no_grad forward later + auto logits = model.Forward({x})[0]; + auto logits_orignal = nn::function::Softmax(logits, -1); + auto logits_cpu = logits_orignal->To(cpu_device); + auto data = logits_cpu.DataPtr(); + auto vocab_size = logits->Dims()[2]; + float *probs = static_cast(data) + (t - 1) * vocab_size; + float coin = RandomF32(kRngState); + int next_token = SampleMult(probs, vocab_size, coin); + + x = std::make_shared(x->To(cpu_device)); // calc device->CPU + auto data_temp = static_cast(x->DataPtr()); + data_temp[t] = next_token; + std::cout << Decode(next_token); } std::cout << std::endl; } @@ -306,7 +755,42 @@ void Tokenizer::GenerateText(infini_train::nn::Module &model, uint32_t batch_siz #### 解决思路 - +模仿InfiniTrian中的实现 #### 遇到问题 +每当我训练无伦之后就会遇到一个奇怪的问题 + +```bash +Running main() from /home/eq/TinyInfiniTrain/third_party/googletest/googletest/src/gtest_main.cc +[==========] Running 1 test from 1 test suite. +[----------] Global test environment set-up. +[----------] 1 test from GPT2TrainingTest +[ RUN ] GPT2TrainingTest.LogitsConsistency +WARNING: Logging before InitGoogleLogging() is written to STDERR +E20250807 15:20:50.757825 138590656237568 net.cc:268] magic: 20240326 version: 3 block_size: 1024 vocab_size: 50257 n_layer: 12 n_head: 12 n_embd: 768 padded_vocab_size: 50304 +I20250807 15:20:51.473057 138590656237568 test_gpt2.cc:123] Initialize() finished! +I20250807 15:20:51.473109 138590656237568 test_gpt2.cc:207] epoch: 0 +I20250807 15:20:51.999021 138590656237568 test_gpt2.cc:207] epoch: 1 +I20250807 15:20:52.459228 138590656237568 test_gpt2.cc:207] epoch: 2 +I20250807 15:20:52.898673 138590656237568 test_gpt2.cc:207] epoch: 3 +I20250807 15:20:53.339709 138590656237568 test_gpt2.cc:207] epoch: 4 +I20250807 15:20:53.797280 138590656237568 test_gpt2.cc:207] epoch: 5 +I20250807 15:20:54.212782 138590656237568 test_gpt2.cc:207] epoch: 6 +unknown file: Failure +C++ exception with description "parallel_for failed: cudaErrorInvalidDevice: invalid device ordinal" thrown in the test body. + +[ FAILED ] GPT2TrainingTest.LogitsConsistency (46613 ms) +[----------] 1 test from GPT2TrainingTest (46613 ms total) + +[----------] Global test environment tear-down +[==========] 1 test from 1 test suite ran. (46613 ms total) +[ PASSED ] 0 tests. +[ FAILED ] 1 test, listed below: +[ FAILED ] GPT2TrainingTest.LogitsConsistency + + 1 FAILED TEST +``` + +内存和GPU的记录图如下: +![记录](./record.png) \ No newline at end of file diff --git a/docs/image.png b/docs/image.png new file mode 100644 index 0000000000000000000000000000000000000000..4d38e7e03bef9495fc532082ca69a1419e33892a GIT binary patch literal 84995 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 bBKfu2&Farm4E;BVf9EVOo-H?b`~ANFH0)hy literal 0 HcmV?d00001 diff --git a/docs/record.png b/docs/record.png new file mode 100644 index 0000000000000000000000000000000000000000..2367db60e0e7da87c9dc6a9838f8c31e71c19b32 GIT binary patch literal 365060 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%0A@gx2Ancr&ifrFeqVpZ$Sr^O-aS}>00FS&G4zDf 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�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

O~Xz+j&`U84W8ohuY}Ag3Ywgi(^) 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

_}i8dt>Ina)nIJb%J;H zjuu>Ps5O(>8C)$-(uaM7>&qlR^Nrxi*_+!H#VC>)G)*Q!?gY}<{wTZV#|V=+r^tpy zX_E6V8{B2T*Y8>_V3i?SUa@VzfU;?MULfRd#+U9?$`6c7&3N?ik`oB@E_grOc|7E$ z_A_$8;7~P=$#K+zVE_V!wKTzBY0?`w+L51@>G#Y+vkqwX=I1{1FD22@Jw=Yw(e|}q zB<6%3_SPH;7v)~u-pmnNtzH@w{$MkrT;ZO)oftNsjn&rfM^Zn_=BeI3Gplx2pc!j4 znyAp>+rHBN{s6TFIV58@>apbab5Y(~O8CpG4RXQsU+rhun!29FLi(#3>c??))zD9h zSfnqEu5LXl?eTH4rM}jrqCQS;aOH}U9@c;w{ISL*xz9#?)+76KtUX(KHu@ir+jU_u ze^K@=4B&S9eayYpPNoQPSCZ!@e#pBuVGaS+EJWt%!&@Vu_)>jkm1@iOIS;drXa&<;Z6r$)OhZ3KYy$vPwJL zeC34A$fGPapOA7fT2pQ^y_Rx0__-)TVkM&Xc6At0oR8UN&MHbsCeq=^r328BxN@un zHsUBrYjJSIhgjT*?HK1I3!I7jbU1HVv8{utE>Vb#IAh&omx|&aQ_$uZG_%#)L0`e0 znXfPUJNzQDcr}G;Bq#XYmis}f8u74aK=UHTjmg6RG%M4u&T_3i^Toq!F;*ses;}_K z!zj%48U4ctlRlY0XOu)>{q;*$#7qJap7AM__@)Q)X|||=4`*bcy3_h@Z>g*C%!!^y zJxzOh`aD!}y#BuU(Dd}Z_A@0VCAKxAn-LKZ_KLQnB*|&~J9%3f1KM?+QrCN~9~?TV zL-Q$Lgg=ZBC8hRvdxaIOgX4FUrU$fr%Cy4NvBdE`3drHkVaq`N6$=sXh7NDCPMTNR zI`!HS_=6+JqYn){rYk{$d7byJr6cQlfA#!uXRe}P_KLDb?u?^S%#$tK1nuc(N{pu% z9`TO3AB+(=%FK_%lfMWW9U`C*-7mBi8&owCF zY|OfKbq&7f)>vQc=Q;BB7ChkZFTQ^Hn)k)Ifk&Z@q7s)UbAp@3z-fLV)=^Tn*zeDc zS%VBzy0yq?l!`Jzl8nu4EP1%1Wn2$>wEBR6%l1(#qx6fAdd*AI_<@V}k2UoMxM&WT zB_(-8&8}R(r#Z4rdz_(=x^h!n!Fgc@pypW_%oM~v(p&zpU=IgFBBG|v0PomnJ@%|V zk3u?Ahg<3T)-^#8z8M=b;K+_-=k&`{2DQ`o;86>mUCnK_Pzb|W#LNY4`2KDN4O6A& zLP$lwUQ4os%Iw~P!>;~xhS>y*`W_;A4mI{~QR&{E-TX2w#?wXTR0b_l5okU=4k9e2 zXY9yZk5q%NouFc^daTm_RP0IMnv=J><`q7wZ;4V50;u;u)?&&HQf1bPL9em1YW+!DN1%2 zODTk{Fa=x)l*d`c%dwh0jp_t@7J%P`E8XJ;BF_)6@TCD zl}$qq))>N}vxh*DP28yXtvdaB&-%8<01?6?MyX*(sK$7fEMNuhCnXVvj zt8$}hLyv=&!)_|(Z-s@Sm^6wdV1peOSJ(RoHA$qnvpUN-A|mP5BJ9@E06$kLL_Kb1 zbFW9Uu16I@ukEGzo-Ik#m~HKs7wI7l5W3{qcJF5<--QM|Uh1_>9k^I~Lb|KtVY^dD z`jo+O;|1L)=bce-T6xB`!ut62o@mbc=V#cBd$7eIY2&avrNG6zb?wsM69cLJ_rL4p z`GZY7wS*%jC8*JS_~%_p&rv9wXQ?u2toY#EToG(>+0lB=3+e-I$9@&>c+8g*j0t`< z9H<1IFs`W=%$v8Zu^iFk-`Stle^QnXiOaR0_)JTo0%Vt@zRRMANZnfYU`PkPb4vq5 z4Qko*G%v>UtrJ=>ew^KQCXZ9&vdI{cN2P7InPDP%*m5$cL)p+G?VF3l@`c9+rd`(i zZsy7gaZO8YumfL51q;|0H-69l{<}#uM7UCmBuVn+Iw6S|$QBrSz>G=fxW_{3J+6eg zo$MVP%D`qvz&v3iJOX3Bk!Rgt^*TXv4e6$_7;Ck-2$&g09MTkN8c$3xswpv!+;8vC zhAccHdTY%o$(;gh*MZ%wsxnF2I`pQxLuKv!8q^vbW_3>!i0-;56a7^T=1PV#t!c0@ zrc)?kmfeR1gQ+)f`^p0bYSD5`=m}+RC^o$_{`A7T6%Hz31c0clzrP>cmH`eN&?z{s zq)d9~;lPzDBMuz9B@h9U5x5~xn(+Zz;Jeib20(m7Y?ZyWqeVqP4Q?0Bl4~?4+~-98 zy^>@m3#3SgLxp@;Z2s@^zm^=n(M4K3bXG zg3PdOW!~Xh>(b6WcDTRx2s&U`-l$d`{*D;52Xn&7YH&qG1Q1$-#mX%~fB+dC5zaly zvnz_MxUOk?V=%*f>PIdZ7O?});NaP3KSEYeKEM5I>G=HCw^e7gILh``pBd_RtNA@n z^(Rr_J5f@!#$KQu23z|y4x~wvyPx~Pnv!|~csWw^f*EMU!P8$cL&iAs^OFSJ3cTOg7|Qlzm%g)t#{G+)>Y{@*axs9V+6J5Es8N8`GwM1*@MtDcx~GW z;NW0b5R#Q={_?fK&&a84*y7_aI$xB%ad61n-NXUj^w*1|#lbfK^HqvWG(%`8JwlNh zu^K=;uylAnnHZ~x{E609+`h&(9Vh7MJl1pif>B1rJMLMy_8T*K_fA-FBn)tjKP|v0w}4qnl6g$^RIjLs zMy4@_!dwX93-y0um0WvZa>8-_0&xSDbYy$86c)(-YCBl3Hxp0M%UZy9kFwNPeZi%V zFvK6XI6M;h=j_D9Y~WJsEUj%%-@!!7@go&It^XUUxHi<*#%G722{7Q+f2IQwlj+gdJFFm!1?BLZ^1Wxj1ufk;{0zVyH z9O3`R+Is*sxpn`-3MwiHDphHU(t8o_Fj9f^($+^lJ@t1m}ajOm~9}Oii&E# z5Lr3L_gY6#u`d3`;^3uk@-fYSts52=HDf|r?~xja@?eMYKz;tN68kD=PB8Y1V5VnO z6l8e%>@Af{&Gsn8Z6r;oz!}>y>o8maP3;`MHiQsz~j_tHYMRWm%97p0bXHS7d z^^+Q>W2Mf*W<2WOK_mfIw`OZlj5!BZs0muc-ix`sqNm2r>> zzne~WtGnO~1)Q4m{zU%r>5hADW!78gvrD_@>ebQvmoGQNM_z_3R@+QLG> zht?p)0xKEdX&r|p_66zsWE{4%O-pwH$Ur1YD!sOpBe5Y zAzr*9UL_$a*zX;bUS~|U?Y88eq5$0xl-OCzDlaeJ8vJXss%mB{dw)Es^AI&)TI`5-tGaG+xot>n1EIsG%uM1D zm!Za$a=NdCP2=dA>o>Au{@G7sXh`1Y*Lv9(w3Uy`=9hw(9bi)pIq*rkhm)2%j=jxG zV2Z!bsXmtw!QMgjBWA#d-Mrdw1cwfdpB73|D{NPnjx5UE@bBa_kCAYHuF5;FK>}NT zN&<6IWvuy<_hRdyk~kKD$@A0L9+W5HsYekW?!Rj8GW7RPAp5L$+ngg~tmcxH-8RM+ z|5GoA6)FcF<2Ri-n{5UpFi4SHy5=<__}Tcz{|X6zx+zy?>ByCR&FrtoD9%JQx(U)e z_6W(6ddmH{0W6*Wh=6|}hxW5@XAAN&gNid9Iz(<{uA5vR2$74W>`!n4v7?vdpBQ+> zFoDq0k?OmVqB<+MbDjWW_^YKBGBy@H`x6a8L|FOf2cafW>t&*CcRu#>HElCA;rGks zik{uH@Gnx%`H#pH)wLisGyf(Fq?8`uP#t5(rj_j1krm&J3RaYgl*9Zi?5MZN&t;r7w*!^01}yd+hnx2b-YrF=A@vsHXc z&Q-tnJcwtHvp^BrxPb*!(7!V{6Co{ek! zG(}u$ajZ-kJR_-x>&ULC!a@A#py@!fdgUn-0>k~-wg}|I-6F~$C-ay0HA06Y^jm@j ztR@+zYksBRX8LdMb);{+P!Z4L>0+S?O^L=p%YZ|q^#ohY82yADm^lYh8WW+V zE|78s$z7W{z~w#*QOkWME@c)o;t(neYs`LJx zvw|=XA~K)8@A$-zk&L*@LxVB>R~kqYd=C^byIA$yBJ5%nBAaGQJN7*TQ--+Zc7()Z|PeSkdvRi0>aBZVRF2 zCeXOR7ib^!mf1-4VHPsDZ@ohl^Uz_T6OqSdfrQdPOEJ&mtoQu-COclBTr9NF#^&9_ z>L-1qHZq)2!+%=icYn2kl=7ZImlU^y^fKErRY%n$lV`x_fieAtl~>p6O|_^(?=QfJ2rrREJjX9@Ir-EV6vc2tU1HK;dqst`3owa#83b?4 z<4*&YFY-0hiC~22v~aq8Yhequ&;^eE-Y@S7TMUw}GqVjQ&4JL)7#FE1?7HqF zQ&4_II2lQ@FTf&Rw%gGKY*Yy(WIwug@#7PYJ;zya=_MnawmdQr9N_=N#EsBBP`vvw z`2IGn{m3^2YRp@;cztHPlM@yyc>c7SaH1K;H->qUJq0lfSE#$2{sC_6Of%m*gk`=^ zW@DVl<}cr*qW`hyP${DwV?UU;`<8U=JL{#;la)txIqPwUQ+)itpjfl zKJZzw(%?#rmVL!NS0lwT!mp?Gf&6{&F}M`B_r#&R`IqJ}I3FD(PhJep$Ga{MH}sS% z29)<)n_qaACAN$6h+s~~=_mflbcO>sMNp8?2cTsHM^+T9bnR3J7$#57^+#fX;aSC& z##1RKl50^9pOItbd1#si$QESb;9>y<&oi!tYThx+m{nwxZmfU>3w zS7t*Q30IIl`t*YD1G+n(F>0W`k!z6+8 z4!|^5O#iHje=2h{W*w`fz9V3cc@Bh0*I10D^?*8lNQ=oSP`*pb! zH3`!W0~;J{$>WptZaQcaX=3v}B_krW!=B#2-iSJT{D5EMweJ>#yVz*3@kps(UH_j8 z1B9LSU<^3021FhmmlNR+ig*;UdGnB|jPFv|1VW1ye6@Sao)0nha%kU{ z+R8ev1cDm7NM-&>+qC})(nR-GIWBQO=89v{XP8J?1aK!v{*5jbH^t}FWUBs?KX!Sj z&zL5%fnHWXz!{(}i5D;=qGVSw`SIzIQldyOFf$YK!MOuj_Bns~nA?A)kx^G^%UJH^ zb0k0#A(qy5Hb_s_Vt=w&!%Ib(pC48K{-pt3VNJsB#S!Sqalgo)DX3nbOZ8fxrA*s9 z1T#K@TP>v5QGspw9>V^MH~jq?H9QdVv`=SgJo) zSLZipo4=KnIj(#yckH<}A^=*>oz>L8ljEqXR3*rkRk2*1H_6Op7CgzLp!iS_3{TXX z`#W71hYhVRr`b#p4AhL<$O>wAUQTZpxD{EC2}$)C4`eIjek#b$1+%9b0NLK^SVI$+Z2!oV`_`%m$7Olx4P4 zkAVoM0}D#jE1I=2`ThZ*QGHZf=Es0OAZ@-?s z#4Rt8#-e|9g0V)bk5#|h*q!a9@Mj|aKbIlu>IWfq_EX)8;f87 z8Y_R@9*ft`YI;dYbb9)Ap#(B;Y|5w0aZnkJf3wu_T*~TBycMd$2cNF>dc+p3lq4F? zT~P4`G?74$K%gg4(&n$bj{?WxK;hZ(>kPtj+3&KSa6MC@SAU$U$d=aF#_|gO?SAIp z>+C{a<&Z4gAs$>3T0QscV7YxPFOSPf^GPJ=k7s9R2Ntu{IDwb#(%M=U=(2|LRRw{w zOkG1mK~sKLC3zai>R0V!qsD39sfv^kGy%aPh~(-9ZdYW$F`hR0DRVJxt= zU2P0dab3N771*&GuTKKVSaglrUyHx?*JXl>jmKsqi6EKZ3amaASoRTq9gMs{@jnF;tPNmL=4g(uA2^hjr*m%9+bz%$&*@=gU?Al9oa)&E zHsc~-A~P6H2innZfo`%Gv^f`hQ@VioH&SMwQI z%lN~)>`dtMKysU3&o?L+11qt-zrII`R0eU?M#;kbLTN01VbKQViLk6Q*eADOMq>{(I&-F17Wx) zL7lA%-B*{{&Q<+BHstLgPt@B%FfO|h|DcB#{pYd;wFiM4 z)3xA8h#SEE=f{#rAO*A8?)ntrAFM@5Un9ko5`_H0(k(IRxJ=F{(bCXx0%U`P(R>2~ zpv`4M2s+cXNkH-urINF>ylezs%)asWLhci_x%x(#j_;G>qcke_n0BfkU`dZg{EM&j z5bPx)*a*;n6*@1e#qwy$g8{?zqShb5YH&cdIm|TpYB=xzRh>kQn^qbGdh)~Y-#Y^^=5p-4`x`@}SYR32O)k1`UR<1b;`^s&3VO&Z!B1KP z^4ek^uoXaAN}Qa&Y0CSO)*Q07>Z%ajNhKT4mN( zfJvw+@XG-W7g5{E_E7%1hY~3O;(0zjpUf5W*ra5vzTD;@Gsf8N9&mL9BRL3fi7*zg z20##4dh6@!o#`VtrRu^LwG=DuAIAq2J{KpGtFx0Oo;vXGCAGBE@1A&}oMDb6C%1-1 z=rZyb-MSSzY}ut*WGxtqN-~j1HA5j~jeAc1R8I3$y`KC;xP;%y&= zTU*=}mUw~SIMEV(I_)UQP1Rb?8R`-fayx?&UzIWjmFHo28rO?#JZ6pg9r?-M?YCaR z;#r+cZdC6uA53jfQU(o3MhTbKi0M5VDoxyKkntvCuxmr z1H_7fmXUb{ImDvrdy$exzoYv_AZMGQXib0PcjP%e)2hM3zd+b>+o=`2+tCBiegeCI z0HH^9H>@AS4gGa%B0?u!sGgiVA3XBhA(lkJ~-wPy_AZM%V)90W9 z5Gnx3gKS25URAt~>PSp7 zpu9gu{H6H91^OP0>^MlxV@*L--nYE_OXn|uElGzjaAiNozPOu!9{fhyjLdqIJAhOZ zC{I5pyFT~}Uo9vo_>zy<-%gGbkMKi^nUrY#F19AhfRKIOv9bie+gte&H)J{?3gVfy zXddo4_z5|3tE~9ARvi8>ois_6s)LmP-zw!odzDLz~0WR8%hz& zuTS0p{ILYch?~WVpyLUAY5N{ymQKBJP@>v?J72?Bvndbo?MDE5(CKGhQ5v{O6Ix_5 zA)4yFGuAmf^2wuBTg!2U8Dp+dDv-na#&G;?#!01eInKBnb^-0HcvgjBpKw+DF9A6F zRC|W@QT&m^bJFxFgxR6$Q4GwvF2Qs}uiFbD5@C~ug<4OS`0`>^$eFnW#NM$d@y-x2 z@eY>qEJV~Fa@>X`_OzmTmTE$+Bu0HN8sjL+dYJVJGNvr?Z) za&2WVoQFhMCiUmC?7VlmPLsag?O>&oI@XhrkU@<842dlCJ=DuxcBw|O!#n&ao$h3Q zgU*ZEL&lmz3R~3N-J^~^X3w{(kd3S;2l@f>i{#>A`X1b*w)ngF`8iLs+mbofb?;du zAwez_xEmC(v2Om|1&$_eQS)Y#f4_cz!Y>9=~nsNX;;pPDqs5f1V5mcDYn(V^vKwooSL>x6Zq z3e-gf$FD6(D+z;_uXz+k-+L8g;t-^S3YEfQam8CPqIaKbt;zg012Tb#_!_LC} zj^|4FyeT&lhZ<*TQ&Ek~F(~5E26q}A7v8u@2&ei8^i7}-T9U?HS?dnczZ@Oqrq^gx z_Rf1rQmTSFqVRRq5-nyusqNB|F1#$Tz6YAWl%0txJ(MqNx}a1s7g>3jI96i}^y5%; zwbTxdJaq#wDW1rtRVCzA9_X&=jMCgpU0GZrNi*GuLe}WS3j5kyvuV`y7+DOQ89rRO zVNHBS--qsmlH|R^d2TK5mF=3P9aGJEJWr%-U4)$!be$CPsR|HlQ#}^106z_`K!q4X zI)I#k&=uYBjQjwgX`nH6KCt-&pgVxRgaFx(rGat32oF%qlLvMHxNb$xZ%ad09Lg65 zLWu_8jvQmHACAag$|JQVE0W7qJ#Mc^3~%8Yb3mDIm~A;H*4wfDz9iRsnJc@j*TBw< zB;f2C z?pwi(zfNM+&)2*-BYMeuc>uCS>&-yUYuM>O;xG{6nJ5ImGFchkL$7DxW-c43PA-rV zion`V;}qQN8y8hK^YrV6iC|H@RQw*ov^8tqlU{d1e8XjDs}VT2)KL=Y?vFmhrnttm zqf2@0E(3)dl8}92D|c6oKF-scuT$z_-vtH-L*h6SE>a4g_P}j*1=fx#nM_n#b*Oa3i zfK{bDcdJdR&Y&p4e24GNL8Vk_XZmED7q&V6S5$h$Q{TG%?cH_lTl*`;(8%^B+b^a{}R zGl$k@LGUGG`5SufpuYJ7OZWW0fTcZ#kMzW7L6Zqg7&%6t0U6+G_`VDv9Q~T2KmR!j z2eR;Et`YzV-KEyMa4(Vh1q48QDUT?QaKt9E9e1rj_dM2=6B?5YJFU0aVRhd`sfexg zvaV?0(paXuLS)glLCD}@TG39@QH%7^iZSGulProvwYDKDHOJ#8=BQm3;Y6{EON+#O zhsn0~rRw%=t_SYzfD=k}50vX?o^q;B)(L6-3@i?v5M3U+kn)Y@1*3``(YkFUKAwZ9bx(|)QU-0-nJ+?$OxJZ0b1rRn*7p$1hO8ZTHALCb^#CQEVp7@TFR z?g?p=%Pa1Cp$KG-tVcwT91$sS#ZyDbd3%4bXm8ATdxxKdVh#D-d?zZcDkuR%Q_OP0 z1;z?HE=9tw7)r{wM7-PQBPBX`-z99EC1@G7=GFMq0dKNf$rjZ%-~fqSUs3(VO|TfHVg~ zr>*~belz$w`(?9^3ER1hp^}7z>Fz}4d?fZ3W6bU*7mtCIP2T#9F7uJp(I#4UhQdy_ z_t~{m{X>dqEaNIYld4aX2@UM6rtX6G@fB;=qyY`Pe2MpCr?7LQK5#?=Uegzu>V8pww%RHzrn(?^o-?C7dI-n^J|ZGpRKM_nf$T_KbOS0^CPJg4`+JEoc@JtdkLkFSzTx zD%+l(dde>s(Z4@g_R&Si1(}$@VBf)d@F+*sZfu!G@fY*jrz7{+Z?_`$Uj({0TdMbd z_Q8pn@g^u*Wk=5%D~yej1{29is}zP~xlsacU+(N}(ul6gbng_5jB^d2U>Pj!HgG*) z&9_d2<8piMDLk%!=%&6p-7=l|j#SCydvQX`9Q%&q@0Kn!XjCx6HQBkhp0Or`^qD&wb|E{F$xOTWpRB2%3jvHShJ#XbX41r;mJHNZk* zX00pR5liIv`gVIk1cPt^o_Km2Pq9f`-e>+w@znc+N2|E&2;8bSWa|jxtLlvx9A;cK znb=X#!VG!s!6OmP@cPXo_nGfgtK(<}e%w|PWGNcj#g6ZT?~NjGj8G^dr(&ay9}}J? z4G*1aX3*TV@xgDT&16EsppPwW{>{;yf!k72;g<4F#Isc#%6jMW=4UIZopfmT&vcN* z(TOAli;Bb2Z^X8~U3B0{6OOh}WuHn>7$duRGVI)FBWZ&4joy0)VwJiRV^Jy&pSSpY zGB3A60)F+MxOa78_zG>_@v4jjo%g5Q57^S! z^tX(CHB#ks%pn8>W zdOIR=(@h^ovlf!sSGhQkdvV5hTOvRhBye;9&jzp-oI@+JSnhDYwUPKY zA%$44w4n>5@+(Jt0A*ga3c9Nb3l%{%G=|9rq$P1ZhKu=ZbFCsB#^)Zt5dNyjXX-E^ z#8+!UL#um1@}=AEUxtfMBRXae zfm2O=N>873V7v?5JhSrh~uRSrcFHCCL-!1S49Z!ikVjwh(8r{Ii%;~A#b_k*lFc%v8}VRp4Qx|8_M8d-rIUgn_X1s z7m>rfu#yH1x^OVOIX{3vD(+6fk7_q$)~h!F=7Xy5Y4!>bi+3qJk+~HrZmtCSZ4IUt zALC5sKG?8GQ#@wX>C1Gy-CmM4U-gTeEcNHi(4bNYa#PzahKkT8j1s(It#Eei(hn>Z zHsk1gO>rwvrBOsYBfEt^SK!}GkauLCXbh=91)TeKF<7Kuh@2?K z?gg{TEYp(NwYZ#`J6Xr~=j>}=UmLNvs{$v5<-WXQ*=XjyN($H(M!xST8;kypXz;3m z1B>pmoux_B?73N#Og!S z^krRMM>Jk8I(KKEf+2nPVIQaV`9)6ZGh$^6TADX8&e7LU^KiPfHP4+P5U<{%Ekz2&C5@Rj|eI@*~K|*?syOQaq z+WY{YrSJm|+e_y)x&{!&e+sIEViZAK{mUTU(g z!qlf+k<)kYac3V>{@Sr{As!Z2D$>vl?T=47k#%#AT1Pb;6{)6J$_x#!h-Rl}G5vuy zqF!b`myHsg&FULN5f$idH^E0ZDl%^imE0e#xnegN6l_(fK)~jy+CWX!P z9Zw7C$iuE2Y?Cw;u75ODk3q&&xf>#1>fwf^A^Ub4v#EWM@Or2PMc}?rj2m|OG3!rh zl~>pL95NHChR<$?=fwG6$@U+Rh|sK6_AW|FpO(4{V`8@Vl@UrX+&@U4Po!JStsj2> zVN#{a>xW6c!#6(7-uyPtmnkLKyuJpZ9?E*9sqa(dYR6l=m#OPpE``X92U9NOavz2( zXYb8QWyN$biY437ke>X^g9VX4SLhPD2(;6#vDo#0S5_@qM9B82mNA-P>=!Jw7-##b z3bd#{^kB?hB&(*l(P~;KJ(k<(aCn(K$ z41dgPSf>c@)g<;O8Y9k~rOhTz2Oe{kHr5gb zmr@-s*nwd)aXhjvz4XQjY{;Y}3rFk6wY9$%F=Q`(_no5z;i4*3?z49!(zZ-@3yR_sSf=+zhAl#eHMtCP19|OD#?-*F_kmL zrujNjF=p&?nEc8XKc=?yo=@6wf-6m3mB=4gz76_wZ7fZ0g}f7QZ@hcp{_5b``rGH- z+TT7Xn#*~gJzIL&TKB;L?vYY)q?0=`dUc8M6T60oLXM;Fbw?~!$G7{s-rVS_0QEM~ z4_n^Oww__M`jfqh>keW1KGL@*?Qgm1i24l&bV{?VoO_FMm<^9B-pZ)#Zn>$%__bub za&N~Cy)&WV)cPY=gs8Wjm#6DfX=T&{c+=Widd@rZ{K3KB+aRw*Ij~9&3D7C|@p8tR z6FTMhxYC-MSe9D^FZ??NVX(XqF%7GjIYgTONvA{m+Zl@81?u}C{YBcp79IPqU_Mhg=q@R&aOV3 z8c8%LNvc(5!R1z$`w$+>=PFa`hl^TU?NM&|s@>Qs%sL@}LDsa!f zktOy)Mt43W=+)0jrLA1pW?H1Jai+tiILObF_{9NG8s!|lKfoJYQPyUjSz?9;9=V^C z(057d9B|oTLiwk7(J{#e2S?}FUwWb;Xzsq@WPQ|z*mT>4L>)kHwS0dLZ3sMCR3{W) zISfajhn%KGCyS-#hger{14Z0CM=g03pZXzLDdU-VOx|`xPTDks|=?Hr_f6c1JCcbY7 zV=lOxu~PACf5jc%v(}yTqwP%=twZZtx&7Fj=y;rd%a+x~Og43imXOsMUkB0z*&9vo z7f3bjr@Sf;Q#KaL@?I1gy$V7*@f%{F+aYV+>il-~YJ;eSvoD5qn{_DL%`WavH*QQh zT%c99`)IRBWCru$xATB|d2HBdV0K~#=x!S_3CHTTe%+{xmPELU$MMS)d8g}Qvy!={ zRM*?h^dPt#+}4QdW*6;FiTAG0&c<|is&XW{1!?86+)D1cE5AQfmYe@>T}EYhaf;y< z+r?zD1X44(8l&CTCVL9v13d#I1}L-PsWb3;Nb1)K*AnOvUOi&U+1c8#88b2Z{ri1> zrqcmG$Lf7iP#mw%CbBf&W9j0d+{ur1)Lz4v&C1QrvPKly81r|uSdsA_=cdn1>B++z z3FJ%F{VE`Kt(;f%AX9o{b`iOd+V%%YW>Gr^$xgZhwseYn`77*JZs1B4JAd5ctO33_ ziV+upj{$O-&PWzeMB-}x8zRf=X1M{lkYm<68#WVoi-l48B6qYA0Jwpuk)H0VT3mVw zF9SJnN$)K(h669yy9=9Ew3cr|ebOiJ-R?&=Y`~_x03dUhj5LDZYAwriQN>ky{NSAk`gZw{fweQlz!h^D@3y_ zB8s(q@o61;1TiN*PpSFajD zcbUk4xjg}#p_~-zKV&ef^X5m&*LjQ3I^rk^&neq7HqoNlJtvb8^9?O6EY2LP`~)TN z)_@UdPhe|4%6;aOy~_MQcjvm3#iL8DMuY?eo`^&KU|j!;hOkHza7+J3t{BjRM06rZ zGyiw=?eEwmhzOu{{_j+TQd;b@?4XA(qI^vK2K-K*E;T$CXfm_@2E!KfzfwoU{>9gf ziq_q|&@ARrGmbLN=>b}a(M%$KsD#yNy;$OH_4vuFX0K}GP`x*Pu?yW?JCQ!DrDR=T zu2zfL!Wl5oAbP*%v7^g8&iQO7Fqio3KHZ5RQ`Pn0R)kf=C`!u0kt=TKER>>B*qxuZ z%f|K@Jy_d!2PRySZv-B+H+2w|INgx{>?1*opFNr{^FPhkhkpabp>9c4mzaMD`3f37 z7+Z*>M(xp54JSrf6u0kCxA~QqEVkOK!{g3rJy;sxS$@g$$625=U*QtfakimSCIupGH_ zV+XQ&;N|M1gqKSL&BgAsndiEt?-6~c)qMJ3M6l&te?j3Up>lZKntnAh3sYIjEX2Qu=idRW8g^obe+dC;)r#>9NzI0hD5b z8j%(P_{Vf)@B2_O_2+S^^*RRgyI@hvy|SH>$4}snI?8S&d7%4C$jk#dDl^p^3=`SP zY|?aO#V4*dh4Z9*dm}fPUgG>#K@zG`?7l-Ys({3$ar?@h=qd)>-#VQ_X9kjqvSS&q zQzb)zq^ERKpC|}zRObO>Z_kC+9pJprO%I1*s2U)00zBhmVP&CBlH9eAfK1w(*0u0p zVWaeW_J2UUPxLm>#(#LWr~U4bHPc~Qd0}lE1i?bKCD)Po3!l2`-?B>Dmt3LMQq=A# z>V(_yh1$L2EPZ^Zzg?Z5_R$P^!8%qn61OFY$5$tDv)36mx(m~K|4ggcZlcrBj6^4> z;@_5PlRMcS-0sl)i=<5O)rLo=9U3(u+5mQ0_fYKxDfSAsy5l!P+4I$`TjZ7o_#PSS zmF2ICKN8$M+ML9fN;%D(+seXe)gC?0#8wM4V0>ocw}1O~0Dm_j}AF5}rR*P0;4v^);6k$o2Z9Fl2xz^IP8CG%ElI%C<=iudd17 znCRhvZUfNngg%O(fRxY`pC<*&Y(jL_KHge%rJ7s>0I@L`l%qJp2HVgsnRp{AXe$zk zidw_F_Asr`=0x3kvz|JAq-W-cWs`_913dj1&r_b1L-JQe2Fc>cMd5T0p>tM2%nW-_ zGU{HvK*O%$vw_X?7;K3nzAwu_AjoEdpviHi1p4Y@4P?v_0~c(pE{a?aF#o}{udLrH zJ+|od`4V!5uo_aCi)Vr67;tp}L!SWa<$X*(mNXjYBM5|d4k{2B0ssDw3X%iWXChRm zZFj8McnnmMPQ|^=s<>2Hs`G}4*+9R34A%iZQ>DSmVApR+>a&>zRYQJeE^NKFHLJ&B8r*tfO&HV2Axhy}cw(0f@H_)e-k><8>UY`H5<2So>IyNpcPu z@d2@3e|o3)UIo9v{q@6q&E?`7fUUX&34wIzZ*0m?j_^ixvl0x^fUNJIdQuS7lfR4Q zD9qzgiKjC$9XT9>a=scJP8~GD1P0uB<4s3;w|@%i`smYoIqP{^mGH%cHmN?zwXF>a zzP}PawF{R3k`wa2Ba4&jP=98@gAc35L>&E^x<%k0_BD%|O}%36pdGyi$sf|JIE>I2 zmV612^aFQ%O-N5Z?SXUFp@+*OFxm#<)Rn6fOlAT+ujlp2W5t-}h%{Jbeu&x)phGVO_B4^qJR|esUFZ=d7;S!tyl*x^g zp&CwDm)|cRR&XC$qE?cW>zWMJs&KxNH$FG0u-f^%-8)D5R8ploBD#~cgW4&kxehry z>&Y5o8})wWa&gmWwz|0T-*@_0$!Z*NQghVzoJg2{$8vdXv>RlT7&1f548HfSZPY9X z6=+>F(P;r+0xYMRF!2*U(suZM68GIH!c!`ecI#GDrX4$|Xq1bK1O+Wje!S_bT$Voa z-}MGFtol0+a3`4eW;W0TZn}M@!fe9QRM#y0u-b@Co7YPh)2iN;aZk5R6lk@zI%Quz zt7_a4?zXj94Nar)p7}ai<9ylas!ewkjO>KusR4e|rI-_yoz~W+o~;(C%gr(#ijoxdMAQXw>wxEQ`{EQfQxf9 z?mg*tjH!_9jYZsfzh-CTnIHTp?1oNxnANl!qoO(M6`xHRJjQ9)0ZdJCI*Ma9@)|H= z8Q?dNxp<{=SKc-LMjwv7ey{HU;4)FjuKGo8{+0xv6)*R$lo50`wqK{NF|X)Nzw`By z>@s`oTj_i+SNcA?bt!Qvkq<}<^F%G~*kXG$!%Ky_VhtyV!8=A0is)CbOm!5wNnii$ zcuH!Kkz41lrJg~y>J{uq;yOS)@2f*|`CKSEI?3{izT5a=?EP#dgE>>~crE6fEXU1T z9E-)yQdrV5H)ki4o$&6o$?i#E*$>ABb(q6-ZuwCF#j;x&0p=rwQ#JhqyODxJceG8~ z-&d*y1vazLa6HXDxUj8}bP2oZ(nNI<z`}N>BS67G6x9`%}E38j*Q$KXsnB81gwjLL8%ty2@ZcmK5 zPJSGf2)~~fD^R2<$4(35h^&4D}7U(%EZ@;!9K zBvquWQ(T#II(I03)T1ueJ`nD$pjlLUZI9hP+x+I|&8zSs!CK3ANRp~0DJkczl}TH51-LY9@#6fDZ1;Lh>q;__-Py5mA3i{mT&kXiPRd$%y46QQ!mj>8` ztQ_zD)nY{Z7BXJ9zW;DReO?id$SBI!S>{vNT)CO!<+j1;)tUTVW|=NkF&+}@dJ}BEgFXx3=JgjnDHgvH6Hy49Ux^; zWfS{q{pxcx&NpsUV)D&xLp}{%34gTm^<<4a^fL3u3e*XO_ZO(>;euYi%3>15BpIg0 z5lMHND=wGh-h8u%we-ywN*V`*Xb1##!X zXurUHy*hO8qu2fmZ_mPw?imY$gTBZDVE)$)=x?B)?|M^_){}`JO_!;%yW{Qmhog^A z3Zb?u;Am+-f2r^dVB(+8l3%!qAV|QoE}s+*G9CRFxHYE^ds%m#<+++;y4^eL^a!Oc zN1C2UK_|6^PnUAZZ1vyIZt7gkRz_uDpX^SQy@1@xV)?~rPFfgURpV3thCq4e zB{D&uMlQbE#q$M~j)G3h+-1r<bzP)25cY!Hi>kS!*_*dEb=q0m zO?BV5ip|E~|M@($74)5lhD-%&MTl#kK<@i$M5!4DArC~0Hl9#;Jsya!GdUMJo?Z92 zjHgwe`M`}iTXJ@`JNd4nn3D8Ko@(Dm18wTG972OdNxn*naku?Wg>atF<#T0L60{x> zHeMjg9=@N;{(4PB$Of;|HlkfYBKqT2^2eiZ`A?H)o-OKq`{3aO|Ndc_#iJ&)pui_$ zH}0&mcH1uxjHbjTqdV79S|w%L?K#3|!-dwv^na^*!|s<^4qUWo!dy#Go%7UNpwjQ6 z#mtj>7`cXhq|Rrc`8!!jBS1y*>LNi=#J!9rbdMU$1d8;0znd+$s5JEx=IX z^%e0Ft&uY~+WYnOW{<d+^Ngj$_nzaAmz$OO6{l-m9$bJ+4D*)4G^VL^B4MBxE&1;J-=QPv*#kNQ1 zB1*UJ-s_D)R$uYKOF|Aq(-!b{GR>;H%BH;&>x+j_oEKzI8Iv$5@7hB*`{fTicrSmG7Yoo8=lQ$EDU(ISA63L9d9Ti#zq;Jc zu-S>f7(doyE&Y!5N=n-|>O4&$;ocAXQ5m0SGk-CRcC=lf*E;I<6t$6-hueP`OQv7>)$Ccs9|^q(n_>b@&yDn(*)> zN%2^#PcE&jJc)XJgYK>OV5cf=&+LWx6rB5~;Qsd)`{U26tPI-OsCVrP&W5W^jl=;TXt2d!Fq244_;;#8g z>+3fdB&z~#`o0<-27I-aQo9+oeS)&NP(Yd1o|DF7TgCi$IL`)1#8A-em0M$tEBAag zg5LoJ$F|Df2Vm4o2R$nH(?meqDn{^AFDoPHCV`;R!rB@rQVbGNt(F%N0u9dg$tPw% zhFf0!6uCAtLy4HvK0=fF)UhgVbSqk>Y4^QB(*#goqjI*lro0_zHj@?Tu?z%-UHVYp z@I{7Y^KyqCYYQ?BnO;sM`Wp=FQf}uc;Uj{QwUN_!GHKXwBX@M`8Z+CaFu9wLF?Lhg z0(WI5Iuut#i?;29TRwDY4h^@=4R=Dl_yign4EPTy*gsn(^nUXojhAw|ybZ5@wBuYt z;=XVuJZ#eSU2j2VJ^~Ui4@R&3dss0|((S8FlWIHetJ%fQSG4j2>)Kr-GITTgcA>hss0;^Cz4qaD5tp~EN z_d7d=J}7US{`%Arh)C|gF{AqrRnFJX`30XJ0gdKt$_9iTdN=~@AU38882Ak6@@6IW$p+-JpFMGmpmE*l*&gCQ@R=Y|E@wgfz z?gzAVY)OxV`$_x}&)$mIlA{;O(bFqtg&d>s&`7DCbo})IZd6L!spYc@H$=*60&LDt zN&T|S;(EY?ym=AodN(aj;wSShBe8&f{uwhn8etVV5(sysxW%249z?Gue5rQDibE zM04Wl>xXnDrNLFN?=HAKIIe`+L?<}xzFUBBhJKabz^&2!o`3PP)ABj3|BPoq0t;xz z1SQ_{ycb2FWtQ=s14!^!$4f)4MZ3bT2v^L7aDxt#Indw$8E@`oiV(|51LEPqP|ec) zm$p?)Y~YWCZB=dxmiP45M4D0G_v;dY7C&m zg?HB_l*`iO5w@;w9>2D8EZf(Op?%i^1Gi#?Roi!>H^w@$*AAVlDdXLSlyy9sgE5X% zr5Z($_stb@iK`Dg7@{tkIT53u5%G&FvA@f!QT@I8qJb<+us>{8o-3_E60PCW(@yI& zAL@~z688E(PuDL?L@*1H&gG#ztc*o@d9y2VQ+wp=bqBWKPwk}l z?vT#tdlvL4#aPXe*nw9>)Y@1}iFD8C0E{ug?Y0}@kY*Ykiyd^6YHhs0UtC9V`E;C` zplYs3f8nMXUtN~eE_fdg!E$A(mc=ybmOh{7srpw|pB++#dWpNY8;enAr?+0eC?L4m z!2Pt_w0&V~K4j)a&2<^4)oUp$Or{vT%Fd4ILvvCp-ME2l(=!}9tH>wjzDV!8bW7e0 z%ZdZuqz1gZNY z%~@$Wpt_T)N=;F?F{tlzyBt3qjM-Y3obJrfA+hZ%i~4$9Isak2fm1S=ypo%miYPSw zl&nhD{JHb#8eEn>P#+Ul?p9DUt*XE~5A%nmZ%N1kA9%~Ux&0!@PgM3k_~%{B2oQy| zX>~Fe5{dY?`I6-75cOg71kJxiIH57>_M}u(M26gNjL+x^;vYmfMM1xj*Ds1fQl~bt zeahHPD||`%mQ3H!(;m1_rb21o)R-8sr3g%e2H+B_A$!=#xJV!qK*1U}#twmV9U2RZ zaoQ-q)$~&Q)vS3AO|R3UoS5<8<5RT0;qKLRh!`GzpxwK+w#Fdo8g_wR^cne4@2aM7R2y39i`&^T z{-caec29yOvgEl+7P{EGg_c4++k!8Rb~-%ta^?2-PVNV){mQyw4tjbA^NYkf(H)ChS+10^8% z9yuE2b9qV1qxr2IWq8j8CF}6n6K7^B?+d{x`ei@NyLX;SjCVz|^3>uln_1&!s>?R! zqP%mXgXeJr|7}WApyRH?6$9*I?)>Sz1NVtz!^xB#9Gw5RZy`YonjdXN0UMdzlgB$x zADJN=Q6B3vFNOR?3U>E5HcEvaoNwu};>=`Sy%#?=*v3nWXj84OgY!#3HN_WP#I;fN zS9!Xc1jxVw_?&w1eQp=nEg2oRn1K~Xhlyr|{q?`CNXee5NM-`X_Y0VwvYj2jq}zHv zXv+FXqX@1c$0i;jtr=SyzFQh`z(Vos{4Nrs`I{>~m zzy%Tv_xqQ13vdrKq&ow~-untuolf=CT>!2n>@e5@5ez8j(1cOlV2T{3$Id6(`(P(Z zrGC=N9LV7Fbt>P>Vxwhe(*v32k`OpHw@C*QS{?h7z*2!h%>Fg_je#?Sxc$tDdN9Yw z9fyXidWC&|0xA;zlr}*>AtbgSxzCiF{hf#H1#P!=^TVid+?deXMdgwLlcgV= zJZZ>cb4s!Gu3VE#R*=RM!|zyI}nU5d!~)ZWkD_kFK*uayc1GAh<{{bkJL z?E^Gav%(e%^4bX#1wgT6+odEU%Gv^r)^9kN~ zvow9ZeX^wz-2Qz4lrigmUIk#-;laTt@ECzE;tImW5MW+FYIErr8Ef+1`EDz|foh$o! zerb^l>>gYC7i$?8p}|!CiBuOm!M>ZOR5T z_u@)Yk4UmJKU`rm65PhBmm2AZ$0QNYwA7IrJ)4kc+pTCn(o`zA`O;DtduC5mdz!za z2S&A9kyrZ-AzX;fyCBt-yfRvXzdurSZdMZTO?q(1pi-M4n20aBjE&!%nz5x_p zx{M@&BIFB+2dV%<0)mju?C((IVC;YfBD+rzKRnuO(D-9NqOO8;k%@U;)Y!Um1w$`>oTPsSJ+p zHu}xZoE}Z1zAQwr4aN0Cc~j`noo7*2(J~nAPBIT;8+}THNjrgP>o4s_++ZLv(AW!q z-Wdb>3Elp!@*)HT8)5I?MWYp)F8gM{S4aMjmzS#WQ2Km3a8L#NziYi1{J*qb{@)^y zK>Sw-w4e9HBF64}e4se}ARAk~n)L?Q7w1JNXNaT$#fb3eE{X0kv06mD14hbt zmr-S(hw)>%mdKc{yp9CxL1d2e#7B(Z@6(CPyCqN|4o(Cj<) zO$Q#(;FbWb0_J)*l1ABICU(HtFcV|*%( zI&I%5#U353Mepm3MBhJKF9VkowUj#r?k>h zlxDm0t;jK>pr9ZLCFR4|PV@&U z{SH+94~vXS!Mc&||I>=n|HOFgqfRq$&|;(#`~7fz@0&=6>Z)?qa0imI?l=o4D2N0G zO14BAlkzki(EO z_(|X~S!dFcaaS9+Q_Gb`EmNieo zvWHE?{JyB@4fHetI(O-wi8^VAZd`8SXm34GdH_;7<7H;p$1_k-D)7V8I{4Y+%e`W% z&V$SEr|YYxXW&l5ui!U3V!oz%ovjM8MWAG%@}(^(cDsoe=PJ{kha{~1p?7cv`5z{- zDPLiFfsccCQ(!!|;Mno9KH1?#2e|lp(EyjP(EAO70=1rG(}N_4~E?L(Z2B5wY}Kb$&#Ot;{*;ls~WIc}DCfig?^DB2vCjdF#o?xG(SMm@{vh^SMpzb;uk>9=pRgg?B{tf0I<$ zXz6>glIoN-(DRw;2J$P$dJ?;b&>KzZHJ{CPEDS{1}cEe~#2GPH~x3MxbPSR$Z zuK0XwNuOj=(xkbn8ij4Ne1X#MU%t3M3^JP6L4xZaiA>zEtC3>CGF$hf&UdaI9Y2)O z{QVZl+$y^j?49>_e}INa;L51GmOX+gx{n?}`j6cb+mh?=Ontyp8ZVL~W}|n_>iAgkLn8X#C* zBMK3*6-TV1%uw?QV=;aSQz5zj(yQd#KVHXRp9eh0e{}uj19tl@W+Hu`N6~3y0*woF z?tiUy1^=oP7N}NQsZ&}0g`hEznIH3gnIPTxuKf$`v+Eql;}8Fl^<~t^M4G$O;oU?p z+qhIBJ?M}C=$h3WeYes1Y^}P^pAT1s!=Kp()oQfcXrvCOPs&wbA|)e zq=gk?%T&V_Tma)gI12K7693$Yt^J66-t(a}sgi4)3%TQ)5BTDX@{(aN`A)aew7)8s zURXU5k{YNCS;l&v0<^`71F`9GhH6&s_}o57V@Cd>VhB);=Zc$tx+f&F6ze%%?WE=O&t8SB}#`y~79ET67WzRZ8)6$$-{gP(ebTZu)Luc`H>&x%m9j;S_@=8I?i zVzi_=tdwSbi{|qLtDED}$`8er1$$>_?;I9$S*G)+S^A}}))#Q|N?1{JsU|vc^e&h( z%Zv8H`h?D6RkNZof!zOl)6r?Rzka=-SdnuBB;+?JX%r*e`&YO>&WOr3-jgXIKJaZGa=B|*>D4MTi3&o}@ z+b*5e9QUKJj~h)nx$HcTRJD0;uiJW>E2f$`c(YN}qH)0$n#r@d3D12x7t6n|#6|tu z$<@R!i@=zyp#4wC_b2%-4+t%6sRKfRDAlv{4f;PyfI#1OY;==x2Cd&&@5P1I9Yg;H zcW4ImlIlTRXFF9JrTvF#gI$>AWU^HL#J2*TVLWn;39&*<{ z{mWtjKInPGGz;!HcKu{_X79c!AmiXc+;CPoDDW=(F>kC>O*8-EYN3s(KD#tOLLT)D z&tXzbH?Qyc1x85z*I!Mb)`@oGBR5E!c+jY%=M6R>L{Td#w-w3*s*f$4n_X6aBB}@T zH2y4pUW#24JpK!0GqY&LG3c=ew7p&As5G`+^kPADua(U|`UaKnTd=olP3!whAIUhy z8Nag17-!toC)R41l*D14XvRJDeA9NIs&<2Ng?Q!!%joCiis!5-yxk=SqELT8G3nRN zNK`eZYVm|RcJ_<<%+j2LZ)E=z3OFQUi_RtW(H6+kE7r5 z4hU+KjO2{~VkZ?=Bq#Z0$MFGWke5AiUvI3QxOXBhM&T#LMaxIeIX8Wf_uMzv7cKX3 z9){oM5HaNFyeU30+LNr^P8Uc&{u%N7_(^E(xPK%?&yWueR_gucMZK?qwDb+w#@^Jne}dgaB}5{+3Dm7=-=M^bJp99C>GUit?E5i7ZuoB&@g6q#kRJ&X-k*YQF@7Y?eV6#T z`b%n&^M@M>xQ%yacdiHb%&uAhp5*_K2l<|a`}~rI{4JV!hCK*BrKN|@pm}fSetD$rG8r3DfsIjL7g>VJ$pyUJZ^fUN znAB4D{3)x|y0O=uapO_Xof|)~@+|H|BR&9A5s-ia=M-rzEiE9O%ZU@9!ti><3%!e6 z$_oSK@xOpSf(io$&s*S&k%pX@P(~)tRN8@9wMIWutO>|a0{Io7NpYzs3k+K>Nts?W zrz;~Yv+%yU;I#J2vfUkQ9P^*b_C}tt-+EMXeStPBQ(xbWSs_<<_|{}L&F=$};}Q=b zIRZH!k&F`H_yb6vm$Fn&1}MT~fWFyI0H+He{SDrzOKx%^kTooG|Dk*R`gO*T2(^0x{Y%a(o5xGvG%giyfzJmge1RWqu1h6&K(xsDLZ4N-R2x*|_Ca0` zZUOxPs8@r;X}>Vq)92DD1W+!~EB*Yx3#|J2j?f&Kk z!T#opGoK?aCU%m|$1;xe)gf;*tt*za%P88NHU$fkxn*Oy-M{nOxh%P*A%8wBjy+EJ ztTZK9kjCm%*%lo;9%|YhX{PsqWl)zvPQUdUZHOPmv!f;EZ7OYyNQO}Cj;0sK!H636 z#FZo$d-5w>D?%$G$K^H%Rsu;7e`6BC23d^aMYS$Gch7R#PkpB?jHQ|V4Saob7FnS> zuM$?gQDuliDf{<5_d4n6nl@NIR${P8zC1FZOXf}BKQl-f z`4Hw2xRBlFCpk8w^<+>eHA~D~f2AVNZb+R^w8mPsej>-uBNX-+doh-=xr9XDb8Cz? zsaX3}0_Cf=t3vfmJ>q2MC;L$T&RO7vsVzQyjtURvC7m=&n^nFzx!=yJ#Bu9ISgwcq z#7O%YwBRc0KvwB|_o>o=%!K&%d|x~6fbRhpxu|>mc2xWL(X^3C8Z>#Q6VZBI9#bt?-B3ig&$?02s=B;(e{$DT0B&zCTV!kq~u3%aU_Wsz}oyINz1 zEhXgknW<1Bmz zt;k;WKi6F$2WsFTHT-U&k4(DFS=q*n2K~4wCs1i z=H>qR0Vn8kNmDAf=uhWKn{~@6xqs8JXvkV_M@@r0K&0WAcy(NT@kHyYLK>ojekPH9 z)Wsos`fUG0o{)xO6VnPDRc8y$Y90UUyrxyVsD+6IB$)r zlmBeOdBnU46aKtiok2D2aQAjTK{@MPj~K1U#+Kn5&@Y}?ds;H%_+s@9tyqTrB4@Ue zjA#tpcZNQpJC3i!8xOj4Eug6|638n5rQwDQ%X-^u-knnT)dXm`!3vfBaxZ}z0fRZQOqJ>S!f%xkxmG}BuCVaS z=Z-RFSA&xElUvRAQ+hSsz;)nOg%#E?N6t*kTq_wIRE?x~tU2vF4A~Gd()h8Pk{fE3 z450uzdtkW(_mR*&RkjcqN4u+~S<&u50yHhP+>k(2$Cg)bbaw@ug4`j0`2^8LVo?!s zmlZwK-xsRv$RH593%#CWKadK~H2THNR-Cx)meP7c+Q1MGxnlBF+xk{NX`jZUhud>_ z_dK&dh>+DIqhuU7dzN0RE}|*Zgi}aadJDlcWfu*7TWwK>sTd(K3v6RZ~D@m$M3a@A^rt9mwsKsYN{-4nxf(L z&y4w@991Re=~N0^y75n;XWKtAvqcoXbT+qe7>bPcXXYr0g=~~2&bk3HG%0E6?i2?` zNmWn{^#od$4cuBbqbdY}j{M=Qf>0C@mtrhn z-h+s<7ULSxb!N~m&|*aWX4j(p8${I7kq&f&0qw6PXUIJ`Yy()W*+jzW#@iytDW@kc zsBtqyJKiLuGi^J|=NHy;x6T#U&VI_f0rPsbWHfw>qNr6j z1b7L>%H)fnK{+xzR# zsJanc<8GE7eKP2~sY^w(nw>9_DM-bHY!h{qyf(GNp^)K=l^PRucW2Nwf5UmLv0Ns< zPrRnnOEdZJS{|x^jgv%bs8vcg6lVRFLZq{G+xMj?$_V-e&5r<*+M=^u8K-zg09fCY&%>EUNw5B~@9&k3C2!ow6%#9>+QI}rZ1hJiKZi+O7((kA+MQ22&OpI@nsE%$XLHu?*zXK5XKXSr#?IC~3%ozHsD@Y=sP3e0?4u^B zt64hX8E(h)Bp8~F|AKkKu>MsemO2CGM@P!Xzb|W8LNAE*`*hj?>&4gCd!=%R)t_S} z?Je^ZuM#*-K6uI!UZA_w`{#ntSI_w1rlCn_;nNS_a@>4Ef8L^77o@P(HF%)NDnglb zk6qkB0lan@$(qEy2QrFc)VI?4GV}>ITyOGKuU1OirO4;oo8i?H5aLYGPye`M<(z<5 z35Kf54=X7UgKa_@(u8%^BB-BS6=ylAp9P!9bZTBIX}B9E2uInw3jetdO{Gce_tVzT z8HJzbYNrk38I{E7Wi7tLT%%SPWp*I?^D%I_8h2%PYI_;NUgcV?*7|=lNfgX29v&(B zbU_&<(;%lg);;J+EKtaev_%&Y27esg2{h}FmLlow{kp-92?KC>`pj_&s$7rlHX)>D|*7tWQIPODx$g;yW;E;UAD z2k$?(U~)?ZxD4E$J==#Q`OX-51A&&I<8G=tSlvPDidQx4%|CGsKl*;p(08|Wj}p8S`9M}2;2w_uWkodbBW5C$q$bB*IP-_J-3IOe;9U=s zc<|Q;wSv9eLa@xK5=hR&TS3hRtQeioL3p~dIwf92ki9sNj$hE<)FVfty zXzhJnV}ctC*~xOp%x=%PXuL;_^_w%%jQ-f}rLGjM3eaF>OadG%^s6{gC_WRG79jjq zpi#)U09HWlcu2+W@!{d%@G!dg4=}Q&UM-;Bi-vcbo14jny+7BV=ITwZthti5JAtD$ zJh}hEZUWq2VK@l(0n~cAwC4@4>ABZ`iWw6_8OE(-WtZYlt8nG33;Dv>kM+RL;nO4c*$UtzLhUksc z&TLZ=DbvRf26gV43|Qjg;-4HNTu;l8HLdMhKf^S3Y8!fbdVoUcwcNbCq?8n&X3msE z(*u*Ri|l(pqs*&a8GCnX2#BLBNcf}Yh6GLUX5(!_+q7$8(2GRx$fTsL&yVvsJ;XN-r0W zuzo(%+k2hQai#X`WPK;$q-|g(4on!erXpuBdgw17ULlI<3F{ecid&3&2|pDI`xneY z1Z*;|far$}{JVG?Ka&lM#+SmQlblytOBz1le}T*Ty>OV^`oxn0bG%)RrM@PsKf|&|m6F?M{Tvh%&07Gh2N?Y32MW z<*5lSWDs+mnm{t>OJB)?n710Yw*u;CNmCW1zwlA<{h|u^r%Oa@R`g zV(9>RpAYYFR|Sf!&F@^ix!?a zE?ILrby+f+*%bJ5i((;h+@jjHDyD5AB&xaP!_Vcxj9iUZQ7z@h25H8hM^W9%E!jL| z_j7$~R=QU7EByP#O-d_YzFu9XHP>X8L5j`DZE472E-iJ-cek9>0w&>O%|!#Xf95De zS?iXGCPlpULN#uZSaOUWoru3wbcqo|;u;%h2z|1(GUGQf;DxGx-Sc*HZ={8*RD z!s3Tv@*(d?y_{g2iLLi*mxU75ywUPfb0!{h9C4m5EwF={yrjLnR6ZHicVWzN(-(5g zqvTMYcG$=06U5hkl?#0ymQfNoa$3V*2YXj*qyLk>mtF<4194sP#OFXkRo^%X`|IsY ze_xROgjg4}Tpasm_&y2_lIppi#W zu$-6)!_b`X3tELI9{x_hj;>Pd#Kt;WzfGJ_aR)>JTYkdi!Am}SZa_7c$BTTB@@gVcR$(_H)@ZKI0^WK1dSiPL4cpvf5f*o{v^je* zsl{6p)jIMO+bHWu1D&g9MmjX88%zC=X6MK1ATH<^TPs-_e#B}d)L*x`JAeEpilV(~ zUq~O(>O`)OFwiA}dyofTT=)aw_)hwaMF3VTm4;jcEGb|Rle6)YzH0(Z-;b0H4Go)9 zbqT=Y<7H=OC&=fOhPky*CiA86pk}{P_@FF?)mqS!>zS@KUBCY8-{P|vER!p_ah>Sg z%!PeSJ%-I-?Y&;)l>9P{@0hkV?}lZ)FI*q;>?+19&9b$ceEK;z=rw06LK?2{T{hms zM^CF9rNsn+s6q(Qn_l5p-Ow4gDZQU{aJ51nP-X)BKXmOmJ)IKxF@Ow)VcT62K-yPt z;Iaz{bgm8OfxM~KdTQkj$ozG&cWsh`7Wna?*JOT`9Oh56TA&+{4U&nhy%Rf@CzH0% zOg)(lnhv=qifOrAddw_j%`Ie!mH}k)JnRv9f9vr|KN|w!kktT-t^MwOVSG>`kS6H< z&D}nJ@1!WA#YiWa7m9CCkzS%@gYKX1UK+3SU;}N%0XJ@gr`cUs%vk6CLrj$bxE!#_ zYpBECKCe1Ck81?sa#1W3dRbB>B*L#xhhBI+eE1M74}#6?JAUwW+(shsG%JYaZ!p9a zx~#JpAbv$N8Xye^1UI!&I)+a{^F~6_A9)K4S?OdTrXbe`wt>l!aGrs_Iz1=`ivxQc z$;wEJQT@et{lr9V@;O|W#orvV z&`L>kU7tr0ILgZ+2~~=BebS{xGAsav5|K8`!@<#1pq>Y=^v^>EIXBp?;GPXd-#^Cf zONPQZ!ILi->WdN_^gKD?lT%%h}k|$yl~4=f}QYB%Clw&zFP;>XXXu?9nyZj9#t}`MBu0 z2~0Y`W9Ag}-dE<0S0@O(G#36ayar-AWmN(Y(=~2unIZp*mXVk*c`rkI1t^j;Iuv5f zIg&`K(t`2;w<7oqpi77uyV3gTV*}$Xi3fPlK<2iLUURMU_f2siw*~FlzzDz$SqsAt zm6+zdaEp#W9<)Vqa&Yw}4aVa18tNwImhORJsk8&ULlz2t>||>1b?-H+t(<3zC&T5? z7F(xW@N{)2QGl4EZ||ldS*Ht1m(A=ldBc!|)Hc#kK%2Xa%m7d76LXRE!uG~S-4;g4 z+?;VFrLZn2jj(L(17(0XzHCq>y)?Q5*8@bnF)={ItAh^VW`;nCq>N}DNLBob4$GK9 zA!f8aLn#l4;efDr`v1Ny-P+nm}zpuqfTUINRU!&($8*5KS)khsg(Ggyq8 zTM?Amo`bqemD#I=+Jiq^69_uwbdn|I^KZ@U%P!{b+V4GaHGcb{r0 zgekqW<#18F+G!I90tk5>ZjD#onE%?)|5D}ZTK@jS_1c)KJcZKt%tThhi5SKhMROV2 z+H*8#@Q1;&=F6CO&9$aP)<6E-vlqj3(u<82{%51r zsL0n5kGMyp-t(5l{80^^FKtuzzP@uSGb7{Q!Xbqn>~DWZW|LbQk~xF+b4|Ni$A&ls)m{_}M{|q$Pb&l|NBK5rx zVV#8K3VHPRl4~T2raG6ui*Q2{&}aBpOdzIFcZyLWl{ZPf6mUu}%a z(OoSxoL2lZgY2HDbHCCJnQ}X`;(P3Mg!D*Kh)VD%s!rPE4rU|&AnRc4G3EbC7gKSt ztL`Rsi=Fhp?_zY`UDz#NW5=5d-0{O0bUgn-U|e&W`S*>^^A3>Ot_0VKypHwYe|$>X z`IVfmN@KcsUd}%H+a!)@=UqqNEo;Fi;_nOUQ|^dOy8k;Mg~&oQuIRpaK_u3G-#|vq z6?vi%_z!$qL44|s>1^JA}Mw7pAm_39eqDmD6a0hrxcl`{^f9T&%UZ* zaPf|5s4*|%V326NMMaU|9eR@fnxA9$uLX{&+(^r$6q8F_TU_*Y`v|drwtPjsQ?^p# zY!%ZDpT~MhUlTp0{}ZZ-Y0!ZT;_lYp2n#_j>P`cPtW^Tp<=F84Tlk~as}c5XBR&5* z1Bn3-W{T?3$c$p$Xm68?GFLPu({?4JS7W!Uc^L8a^z7z!6Nlz0wP;=RSv;Qn=f$DZ zD__Goeu0h7Z;bHjVJ-W@oUPnocHULZ27~lP!_4|mtxS8vx|gJG(3gAy-SEWCuyS}N@{+)f-Ql(X*jI zpQAY`R2>6(N6*FsZyt`w1Pe`3D%C z_A2kxp^iAV)hCqZ$3_m(PUhtws6Ex|SQnkNN%UN4l&1F-aGXRCN z@W{x$Z~gx9U{eItIW(IPkev+>-A3*Z0OUl=>};0zbMoQqL*O2@OUGoEUl*?eNL{9PSp)T)c7GHcezjyqcdS3P0ppPzIqElEy z)k}u8dJjJ9y5PX~@DkcA?)4dtVOxIiQ|BXd=f;;$&4$CDKnv4uUyRXv+WLe>#47I= z7@_cPMBU~nL*_W-Rwp6f6#n1q71Rc%eXz6x6jr{RRX#|Em1gY@I+PbH+Yq z(~Pt}Gk;NIG9Pd77RF)f8aTEa8QH$G>t()3wWgeIR>`kE?FP|Pm{-mz%ue;J0msN< zz(cW^CqD!`zQRNCOce$P!$aWHfEW6!1P>_O8T|a+& z+vVgd^`4SFBz>DzlZ*|G*XQgl>skAB1GE4Utzv%Cv`DQ)8yWB670`N~(Z2#P2M~wo zvXiu+eMk<5JT-Yhf|QagdkF#n`6<9ov_ty&`2jku zJU?re`&|utM0Tg>3Q)_MsQd*J*iC@Y=(4J(oHtA;YFJHaLwy09nJy2`()|FSTz&u| zNH!_e26+kq37Y5FFUxRzim@`ZYH_){ZSAN<7gRBO!S6{6N{mZ2pj4B}gm) zQ04$<$C;CenP>aUz2lVz7iC4jhl$^183%r-2bY9Gp%2lnKx_s~to=!s{y09PxQOka0+c76sM{!C1a~LEFC36f(1p%7?C*4@<>|B$eJ`Ph z!M?L|ZbBL^$qwg7^ru~!_`VBewgva|k9WmIkN@`nskLo!#suvlhI_t7?R{=O6FuGb zM2tOX045V2(2Z^(AL~RLImK@W486B6xHC|lB3qWX0nMCW#It+mES5e|;Ect8yQ;D0 zSZPtVwF+dxsH%FKlifL90a5qemj%*?KB3u#?Jt4~L9g+_y$jUszy7fy>s z4v*i`-!zN^qnUtF(iM$SqNfawa#@wTsWwW9K60O~%v(@~qiZVSv>zkME4~(@D&neM`1dlBS_|M>gXlUtVh9cfEs%|=bTsT-6CL+n4tQUcYz zn}#;DO+^I-z{}M06>u&EOBCQwH+~r(C#ke6_doXr)Qe!VZf zfzYiSuikxgyeXbV4?QW8dd%*Ln_Sb5Z*7Yp1EyfJt;9ym4vmbNQ=(tn+WlY7ctOct z#zOltMNjQ6R_<0iek0L;T+s`3g^w?Iwrk6SSz7-#Jeg$M&2gYulBZ8_8>SgJq4YnX zpXr7plSCf$BZ(VN`1<#fps8723*Mw(MKb4USNg*_V*6Ya6UKRk<@N(aTUVfE0Vk{S z^#{k$_Tx5V>r*+oM{?gz50&$T$Y~V1+YY%U?(6INUXWHXwJ_4$1SQp)2>f~tNi!{9 zDvyz=&c5#rsqz`~9XPHl$#m`m&3o;$tRc6z>Zx|dK) zTJ)%?dxTlg#Gu~iEXvVxUC-BNaifPIce*S&|8jss&{GElhW5h04hQ9-mx1^oW6&j8 z>ZgU@7toWVTE{e%EGxyUeqY*&6L%q$Ln)#mY@-B;qg*A})IDZr{mO0gM`OyX=!Na; z@Q&yHuTow75I+!NuQVCxu z#{yn^w6U?V@*4)SjoScO08Hpvkp1G^x&=&jL7PWsr>vBe6bUJ5EzIos^VgxFp(*~3 zn`a`C3*>5$!zW%75tf#g?<*_gLCwe9+`QvCXW7SDHO4q}t9+7zp+}ZBauk*(9+v^Db*dUkt0D{{9`abMLQHkG-~8$&Qi6hR6x{VoHhO zY#bMHwWG0d4LAHkW3Z{U_1Kw~UOK+=F{=K~Xfg0(2OSE4K?D=%T#*7>wwcaJqmdhZ zF*ATq_SNe(O_9uL^@e&#P(kLfsV1stZQssyeE z?SRK)|EUNA;V}qF`>8^cK0nXMihs&MzTMj{2>XmG0%qx!$x@}-^|s+fx}YQl8sKVS zT6Rc4F9tgVt3j>n=+)_Xv%%3(Nk&lNv^C4ysUht?_R5)IE0L~fFWC?bG6oy<13;e9 z4VmHY<+%&xNoSJ-l_JkZ!-(CPaE?Cjx@g5gyUjN<&4Ho&I0_l`dbI+9qOJxv2=tG~ zQt4|O4&rJ+O=brMUW^>qX=uzKL3fUODSq%!E}nr8niIl^yL_ z#W|+G1{K%c417?3L60pbFFdwo==}8JQ19aRQbVH>_+*sMSao z=GUmDf|j2Q4ix|8e*eh;?*L?}>~Mx$E)X5J7RjsJ9=yAr#q^mnZ+5R3(I~|k`=QC! z#PkR611ZH*dCk|LT6}oNqh&j*)pF$wm>)d%PEG0|D8Xrz$s1KPvgJ$8qTcQUX-=W! zWMSSVP%N42=yJUXQK-Pt8ycN0@s7b~eVg|EwS+XqKM;7n2v%6u5ZRQ1mL)~`n$ANt zQ(9-PC5oc>?X&81an$0ym;wPxd#~_H75YMFzjBY8)DjgsE;kK`F& zMDyPU!)VwTdLtT$jGD9jbNPGMEpBuWmW`}d*hU`S<#14nNdnb@(xJ;7 zp9UZ(oUL(beI~_B{9e~B*yaU96kqbLf8?(;PXLL_uXIwCj=49h$@;mEEwNKWbTct7 zM_f9?cI89x6cuvYI+rdk?)>g?bl{8=HtxXR-C~f?lhOe=x@0K3{a$o9-2;R6tT>oQxnmkKP3!J_Y=@OhS#a zL+@8CMGIo7hdtTQcD{= z;H5l?S2h5UZKWN^sshC_(P;!xZXyQEyYTI3TjdJdD?>#j7S=6It~!%5&+1(cAS~<0 zs*pjGl+irIGKO$i+;Y3Uw|U^f&+G9TJIQ6KsQSL^Mbuw^0b-!UQw{sO*+D;e>P|D` zkDbg92(AtjlPE_%BiV2NJ95EM`pn;i$7#qqOgvWE<b4MFYyiV4bYA z0|B*ShWoks0QaqlN>HTyRidvD@^5z*@TYCXXY{95P@hwBCzKTCdi z>T5V(@>eJvO(N6{2mQ_;e_F-Eo;%f3XY|X1%6RW?$s&nf`BWEd+~50ZN~c+wkk8yb z{r;K)^$4~|4lR?^Op(cs%J?+PztfuLuccF-k4Z4M^Mx(+AxJqaNAs|DXu44xiQD&%aouj*dHudC!?q;4RoI`Phn4;f+QHs(2e8#ZzMD*`@8%<$6`xa_Zd!N~!n8^ROr zWu}v+0aRJ7SP33?5ms4=bM-09aprN&E6P(UuM+OsW$j-@y@dWeaTh6big7?4mFzEx z)1NGVx@mpe1A0R5iRy2RDwe*$S8mXl?+k4~F2iRO7Z3P6cW;X{#}XSe)Fstc2A_^o zi8P7t`iu2nT!ZfbHkh*^U2WD)!`|`s#=a^MRIu+U9*%|4_Ph^nx_Z{?iKl-9pg8dq z0P;tJ&+*<~Hyf9LfDXD4?*CqE_$9)*N*RfjoaL;19&nIIb~FBKy%17pp#U-CwUBw; zd!EcPgvYtS^<`cgim3m1$E(f_&I3_hyX9c+vxw^+c(nhc+-PCG$BW_d{czn1TkFZL zh7GFu{u`(eEpwyyv&CC2O+_=PqSzKAfv_wMvq?0Pga$b{{1pdp0&@b{_Wl7I+j%y_ z3nSWnzU_w}<31r>Jb2Ej4qEsI2)COeG5AwGgTS$ThZmx(&(8~%`2gk>; zy{z5Ob&UDAnrzN;dqIm{a16_{0)$qlLcQvs%cCU52t6MGQP;H~yn2ntK@AHT`wOT= zYX9Xy-9A46-RxCG?jbC`4x9jSH2m$^3_nX@b?5`!<=hrVT zP7*o@(CG{W4fUZJx1$eiC09Rg%)N}*UVIG7Ob4ro4uNlcle-_SNC6QRKu2z)roica znA^EVAEJ4+j2YViQ6z|#YFKiXUkDxjki6hQz7oXf84(%j40vAX)h_v1z~(-nP;w}i z7cNvW1I?mebXtg8y<-KK?;x?g)%>OM$0d_kCrsawy>Y? zn7vJsS|c;qaJpi@Z`y;EGgM4vp+W$n?(w1efHrL|!!L6a*~(7tTN+*nK1i`?D*9C_ zL$hneEW<)vboXk?DzBpvgDNxGfDt=i|uqoo;YzP@ul(ELu!+58lugQ zJECd$+`>91ARsyg+gx~f_@v4!VqMI2szqVZT^i(~@+LL%04!4_!rd$B`_DG;g?5#< zW{pG&chi)8!yJV8x|zl(d>1|Z*e-fl(%^>~u1ppOKkFLAq9LDjY>49+v&2Rjj|403-f_wdvZ<+1B~ zeCtL}Se7&JEL^vq|L~diMtfuHlXW2&)GuHt!ktUc#BUQ;^Twp|i_1zz<|>h6!|5T5 zQgn@HG%uy~Gw}s;lTyL!d*{gJ*%_5RIZs5*c?!#aBL=&y31xoABhV({e)IpqIl;ui zIA=d2-7+?{B-4GmlvFiuTOzZM$5=At~vPjeiu`T#?+VWJJpgTqP-(Kcg|(sET>a^{_K`*!{}|A>KGws z=k%&YJNnx<4!NA{)E~-fj(X$Oez)gT62Iqq3!aS)latf&33hcRQ18c|-oRoYttI?| z8-y7c&-PS|nrvcZaK(pp=Y`JoDCAWm)Kt{I9{k8jlD1?Kr_^NcdD&CrZDZZ>Vc4NPJ!FN7 zp+zgFlu0IG`|1{$Om{0=+@D$P%g+A6lQgT|Q+^O0k<@aeh_`StIbd+9DU#nbV#?); zRp^OO>mXjmfm!&u;umHaxJ#;IQjdl4B+L?qN_ft`yn$A@L8~z(aApMNQ?jy438p;r z?R!676I~h4yTzlpH8n0@RiMuA_e!f=hm}>sHziex-Qvb4UI$ZYb_pYP85aWzb3sYK z79#N6@FDsGm!uh;HuUe-^s^XUJkB_qgfAFDS4EDl>=6V0ke2jQV?WocKVI6Go#NmZ zIGKZVZ;Dmj5i6WtT7VbHNhYQ@ZcqiU@19Uo(I%eyQaf;6L(9~}{dMTbgjV9dFIBr6 zKTre(f*sNm)6(kibI<@Frm9oC`7r6`lU)M5Z)*@eyE5HHIe|XKw1-dL_Ez{|e7;jy zwjA{4H)v;~$N`Ck?RfiF?>B!?lT`|*Y;}_N)T*xWEKccE+CRUr$cJoWQND{bLSWNJRDi!w&4C^|J`e>g zr4X82^Li3g&_YmhOCh$LEdNc3sk}I!hpkmspA3idyqQ$FRm_V8{_xv4oY9P``P-Qd zu;}!k3=td@7QSyg3vNoisDfoL&3Rqh>%?#wj#W@%HOfs)O*Lgr%lmXE4PZ)DxsOOI zDWA*#P)aW5?TgGX7vz#{^4j1mg{^SLCM}Pwa#)X$Y|xMuRHeXbW7?4JS8WTXo)%3t zebEq&UAtMv0T{Vl9Ljpohe0~$vuPYU>#^bL;Kw6^_4 z<|QeR-o~yuIR`RR(@98Ir;wIcUOs;`ZWRInknk1nw=AU;wxPDtESBMPQY1-ay7`WN zfVa3LrxRqs#*rX*XOCvH2p)XBPS)NKPwbd z!Xbj3yS-l;ZCR452|+52}y8+{WKURI^9fv14+SFSl;)%rKhx>#MhHtd9Sy67}kK#5ut zivh2rqde{{bFLKYs=FL8)|$x?=5?Y8-5NMa=Rfj6-w$;wIdAO+PPU z@R+hpT+wWdkcnITux?xX>sq;%_0)i~$hHK~km#PiGU3WM%g^+@`2K*hgt_mZ+5AoV z;~}N3_dCU=AN7uNXE+a8^_LVIZDP??lIEn{SlZ=W&(DVq2d{lNG|JInt40NQ%i}tq z^SiFzQ5HTVm^qt1mdR23D?BP{e@z*h90f%#pp`=EU`yb>`BA5$D2ukXwk|%VmM*gN z_b2mKeL2jjZX4qlJLZBWUY}jV3OE>8%xwiENglT@4sfqA>rgNAe?d#Vmb*=VezsRWiulm;U?GvJCM(aMKlGI~y zVc-0fjA*5Y0zBTE$yIfhoWgy_{m@{yml2!A@Vt5*^fXM=Wl~Bbv|!}}z4dK}Qxkhz ziz&vg_KCaSRDYUy43KUz{L_4(YFwd7F|pyk-vq+YhjDXpO~gqG$|{c2-jo>=t@{4) zgEhudcmb|Ae7@;aX%zw@W4?wyT<;#{@$+4&X*K16VFr@p z{g`RrZST#?JyfX7&cok+P)$B^lUg$!Mk*0bS~+5GA#X=@=uVUC?KX@FGsD7i(-fx2 zq#V1(#~zz%&hB&*;j(*P1V7na;7TVo6BGzt(mi_n26D5iedWBGn1?eq1C(uyaSvuHlPsC>Sq*V~*EbeXJe{7l8yitp*? zj7@)#k5N!XT2Q_|NKpKrw^*-7MbWxguySncnYtyDwV|01$Jc>PI_Df_*h)Nnu~Neo zOTi+SpUXWgQL{aFm3RGz6tg1C0BkHl=qcB0e%f@~|4SA8+z#kG06UVi_-ukv`*4#r z28*-U9-<9P?HO@#|JOaM4DC|?hqt#5s;cYzhYgTMq#Kb&x;rGKJEglpxQ)kHRjY%+l$WbRkFay1pefNW&`_iB+ShR)4p|$5-JYW(fc!&xFB6 zx%i2xMXqQdWkL>`5AivQx;&hNrCs#Zd^Kk4)+E2+Z&d}AmDr{&vq|Q=EZqV_ra7t` zh1J_jRX?AAHd*orDJ zFSO1?+0huypRh2(%AY_3^TRi?@&hK$bX~gmS91Z$W--O2LISQ@<bzE|X#yshzoHo$C1_~Ffa{&VS>zl@JQDy2Z^U{`4zsL)E zUCSR)nAsb&FiV14*=&6csRwecj&jN7>6CfEmsHXm{zhRv3qa9B0vFO>sq#4a?wD95 zkU#<(4WIF!Mx@?|51Uip(N^W`YX(l{j*k274%#y*%!&F60pL*U;-XqkNZ0ZKt(1C-F9!dHm7qDHH_hc*K{B%pM0sZ5`~H z+yf!%{T$or2}6p5QFa##g;%3sJ?3+3P_W)aElu-=HgN!qi8L?=K~*<>L48P=nPSr&AnBs}v1YcTZ(n z%71P(#x(>V352bPwyuZ?#QX;uwvm9aE4V16Wm&NzQs0`PN!`~!i~>MUKsOYinc9VE z00zj&!wIphsFJV7XLYxr1Rv(jhv4lkEh(@EBO{Dny9gfF)$OBw-sfwl$B!4RZ6|(` z+bcT}1O^w}-u>S9vX2>2k9}jukN52#agr!At4ROGPn|38>%+nag!YHEwt>?wxN=v_ zzRJyE&&yMf9sYZ|$8Fj69`=vA1uc2=M!;#e@M<;lfzbO;@#ApCW4(=?i)r9NCXW=X zZ7JmwK))Zhy4V=+=->*4JJ+2m?}W#3V+fzfGr)j^{`73G!q(v@^tYHEnC1tnBTLWM zO91*aDRer;R(^~|0SczqPA8*veV|VW5Q8MDgFuOYuVHTV(i2P!2Q{fXx@e;Sa7MkP zAe#!8AlsVI;_;dNfcj{7diOcL#~QuPh$9sjG(f(k;qr=_WCi`I)WVRRSA43sCooc6q71L#R}qsO#~h9@j6& z|m4+Ey?U@+cfQOUGn>E&X?mCR}bBv4y$io#3WL(hP+2dHx!2z%~9FK zg4zvNG=;s9>n?N;omw9qmiMNBhxc@J{?1nuz25!SU_fu@ z-rnmBkzSiCd^7&fmfJ1s z0A@Af@LB9=L2wD{VdzoeXgU26xjzcVrOLI^(9+hS=u>#G$)cpD?O>~$`EBTZ@7WzM zYPU!85~u`{y-FI8p(S%3IUR_vlFIAj;I<9TE`F|1OzK4Squ>wQMbD9*&OI+cfU4X> zZ&_q#WfgO2nBSV#H)Cfsc7q@!RoUXZ5n;=lm^{n^wokFNcOHGE_hwhrsry2%g5B2X z4t;7*9DYCe@nm%# zH+Dez?2A4nf?CZSF7?`0Zy%q8*>8Ask&q zRgoIWS+IWT%y&I+D`~^|huC^p$t^8p3){*^Cgo+B{~1FlA~E2@sF7jDHi0VpFmi3+ zC2f@5M@#;dSvP&{G{+0ki|(V1hXm(ItY*IiU2fxe8ChBoBri}|Ef#Q>Itu!oHq2i# zS5G01Y3jdYtz#g|O@q-v=zAYMIK~*)AWW>PYje+A1Jj&f+z%=ja}pDlr#PmT!@ysr zD1h*twl3^8b#1`s#+iYMQ>W2F_l9Rdzu?YD(qpY~3zL)IF%XQ}PKJ|heZClxaIoDWzv&>O0@bq(rD7UlQq)Gb^uJiR2-OkIJ?ND%$PBI@xD! zzp0x&{BcGT8HH~|2XriAFxCO20P@-Rjx^aJrH`9W066V1c-^-ms2U^43c+iWPIXH3A+tI5)8!6e&*a8Z`O+dw&E+?0>;AM^xAU zczW;Asg0c`wCQ*N^00!=oZ~Ui>pt7Rg4&6geYSM&haAXQbeca-d7dOJWzsk*d5|l^ z51PQVN_Ma5A>^bEuhR3@3CM;00P1f^sm+{NJ~k$xBMk_<3`|T)kAO9xu(Tbr`8*J`3oaQND-A6=Y+v`rBYX3d-2(KRXSF zhz>TF1%GF3x4G4C-V6Okkp(4g6fA}X!;wVF_Ibg zglHhKEYR+jAX7H9bs2i46?Z~02jIl?Kn-lr*!QU4SzKwfU;;>Hh;TXe!;EQJH(;oM ztpw10|1xM(SQe1AMmt6$If%?|a?v$ZlL{g36uT%vC7|Z}P&c~Nhpr?+R zuK-uLl~qD5$Slbz?>B{ig#$Qu!25a8IrO zNq@dUeQ9HKN6ae)XbyN4;efNe$B0`;8Cj=Hlh}8_SM%N4z9zMZX(O?!}<)2fs z6ehvGw*QMEEp?{{{)bP>+5d-46S1jze+@Bz^M88HYVpTQDbmBC)x347tGmW2FRk*b z#AA}xcbHBgA+GE}VSf7-P!ZRs-D(Yyi*n%tZ~ODlpk>AgA!p0BVDc8%GUG^7+3*NN zE@trQX#hj`Ul}>7b89;@YX4BOr%NKe_tg5nJ>hvrL#IsH6%Be|)t-|xZ-yI*Vh?KT zGk8WD+SYksl**8z3JMaZ4%n)8J$LI$g}r4(l+iNuu=ZbAo+0Q`9=yY@2CScC+nCaP zN_g6rELBiU+2G2s%n*$i>1JA`ANs< z^Jf$h`2KFsS|JM8#075tWVmhhzOtc>4Q$EPmsUce& zej#C?(XO+4p8`FCat>y)c=ago{$jUOsQY&TnG3^+dkUf7Qi&mk1I?T#))~IdZm;{% zMY1akLfYmDmWkXcuzE-B&Guh(RVNNMmvboA?}j^8ms$~3Ah&mqFXz{PE4eT(XYD}9 zYOM=vZaOmPB!VdID!U$nTFOW5Lv%9pJUpTivC=X>}ZlSD9sR`soTULUd5t%yjEc@{q>Vl z*)cu2ixD%YM;}FA5Ztcdi%%#T2mmfG$Sd3*tV^r3SEYoY0f!u<8Gxb}Vui(% zSK4`BIjq{th=mGAoc9ryMhZ{2i2OOPScJT!RFq=wjC}4~O#diDJdO!9?|`s*+*YcR zgJuR$Fhbx%S|?vL=h`hg=ooiA*-EC2VAM)8tYR27v<~0vB;A`Fyj!sdm63a$Q_4ks ziec<43ae3_xCjDwQIMRxDSX{Y|Tei?^gz)ic|ISH&o@umHoaFk{7{Lp1*xg`=tyT)>QC=D8NQw zl_)LFOMJ<~CCv-OqJGYgJh%#He;_6m=)sS8ZX&bZKfzXh)~Tw*DR)ig#c}Z2^tkEX)@Isz_2+Z4xOZ zl%}CF-NB=(*a}J@O&F&M4;X_MVysj`u*!ZB9V#J)luOM8pH<40pl?8RdX#TZi-zbw zCgD4m%79s-xA^Iq#%t7RU;hZ$CiARk*|>pGlwfEWvu})0CjQ6@_#(rrlPO zV*w<}7Cu&Lt2e1XDuz1$vq}e&;D19%)&By4z4Osp;sPWhPWwu;1CCR!HcGSkh2t(y(e$N&C2#$w}K? zbCd|-r=UVzW*KQo@$*%35`hUNqX1L;4cc@GSqH+8N!lDI+Gg&{b#=ZV^7bAUwBdME z<@C2?0Q9W*>mOLMxbIvEF`V{{IG{!~+<%LQqSu-L$SpQkG>aY>8 z&4a%m>YC}vt)Cwyw|~$70-)W2BZtM!Va>U(PcHj1wm=di=~*i1>N`CHiz~RX{_6MI z6>{&gJfHJE|K^7FWyj-5vC&iPFaEVTdUI%)`Asz`SwK1--Ke;g$KixI@VHyV&L79wt`#kmteXjAAy5tkgYrw|^Ft`Mw zEZS*7gRB5BWI0zM0WWDE%*C!1QiST^okDPoh#4C1#F|XzHkA9lHZ2kLEDE{#{L*oq zqt*wz)`_4}AZ-FPI2QB@5MrfvD3XSw7^CqFIGDw9I3f->=gtX@Q(moqcBBvke)V>Z z%O(7KZ852Dyj}EgKWU}Q8Uqc9Y3y2%89f7yfc>)GfHrxl84%6w^!8~0Krh$(hGs#3 zr-a(FP0M%AZe)TD;I(u=9uWFE1^Y91oyM+h#wTOpNa@fVd1+bl3Mgg;WD#~MNk9Aa z;#c>tS85Gecz{)gT$BBt3&0}k@ve7@+aZkzFjP$eC2o(!y-@T<#0y&!v`6{X`C;w& z4{K@3d_7W4Rhijg+7*_`D4?ixD?bp%H|rd@6>jxXv3yvC2kH z@hdx3wD}YZC`_=$ULDG@z?Yc z7W?!_>pWX@qvQIrJS~-2JyKmnP;H;eWrkvf&>Z$hb+!yVBPRY=0v)tpZ52SO zrYaKOru+7bSu(kcbf?f1K9+^2Bx^#(ZP1vSZlaw_k)(21(J!V1}BFT?UXKG~T z(A1WX8S;L(9+NX#|CsJ=eQhF0gKA)5NpTd~9<{zlOed28 zIqWXpF4dSRq3W=hxR}+dnXdJL4pJQZOzs+ENZqJ!fH-$^`}nFY>hh-fsB`|filoS> zPi2Nnw0YN<)P*Y<5AW9AKX32W6b|MkC_3gS=7`8 z=C+`hV;OFp-(zmz;FeUmAP<`MTj_UrG3M5BIh6BmUs42UM=Di1RiI|(zDwZ&01XnF zB0Hlaf)I0Zf5cPDTFx<~$=G3O8<^b565D87C4=i6@Viby4zNQ&L{vKR-lTvy-TVH2GvuLMq z4;Obc7M!4MYgI^q+2-mlIT(Vx&6)ej%{Op{A999Rjeu3a6mW(?ztOIISCRt)z218X z;A2qLIsM8&Scui%?{p3C#)C;Pe>VjgUfFdbXlTQkp1VWqmy(FcoTG$H$cJKqwxrx$ zbjpO#IEkJB$mtfmdZ>1Ej7Hv80%fB}s7$nPs?Lp;k{pAhMcYP-fTWmCFZ+LK1OQuD$j;$CRo!!s;ZtwCZA;7 z#LxqB$dJ3c#!{QB-JLs;7`%{ng+a6y77-HT9=Ltt@BshAPt2m}TCcxkV}pmJVd49k zvksknl3o=9vOvcOz4XDp3v%QULk0oyQ5)aA4bZuH-x66?%WYPr0b3*(v!`x6bvjT8 z283X4ZAo<-xD`_mv^X*1zv7VV&!Heq%i)E~lV0wv{kMPzOZH1+|eo7wHbFFB=A*$gKy2 zR2?iy1o{!tsyd;5p%8Nmk0ZbNE|e!J-fN$$DVAe{deStYD z(>wpOKa(a#l35YKZ=gX@v%yKIs2Kay&6SY-N~O8x;!UPx;H%nQo=wq~;d$_T9j4f? zCC$YLK@p;2nU+0ULZUCsFmru6l|`6CHSU`;Ou_UiMLM0++ryCzhhoIk3Hx;vFs`Zo zd{}d(&L53OqMXt`3V3Ta(|_!`mMO~t0gFzgLLi4hXf`=hK7SD{4`^J8|A~RBP!>XMDTxId4Ys!n-}PPs`LRvl zl+e82aT1^N7sY=2;7HU^6dIbHayIiTqg_%x;r4rijmXUhl;A{Lw_w z$oYxuSZikC{xqV`DTA_18fnDJ5-~I*(VAjsDWkH{_Dt^+f96w8r!c-4DhY--4(82aXs*s$M(JoGkQD~qnqk|uMJmT6+TO!}$wq51RYVQct3qjQ1 zERdMO`Yi$YZbs9tRt1KvMs<6gdDK}#%&&LF*K0qLo|Ay$bQW*X16LS)*hTh4l| zoHBG51Lo*Vh1WQfVPFx$%#`+$xJ6C+qJWlb;sKy{kcNp%{Jw*hO7L2}7G#>U2Y+-j zU`v54B1Y$(qF5}w_FAPZS#gPPHr}ZLDZ5-iF>1;?T9#=Ry;q1&9gn-^1E>B*YUGmyEP}=<#t*fYY=QdVB-UMoUl!6OUrCk4 zUH~8TEy>fP`;4P?7i9Yd90_f>wafl^yRCG5Xvhs+O>dLM_rQehpGkyh?y~pe zy&)40pprdF>rAm=p*moqm6b=8m?o8or)$ZUsec4RgXtn-ePPi14_S(EX_G8CyIB*Y z&U}}gnOpPOFQgm?Djekvw}jPOQQ(Ti@FA|{9q3*xY#>(mbbDazcS2S7K$Y)jnGPcL z=}>Lo>L{`T*?~IDZaJi9??jOpEgoESD^E1b~I6|89F_G>Ab!cb~ z_350B2hr;&VcWp8*z6jH0K<|vO$p)89zi*&CUqQ=wiu)?IDtN9Dd_M4B~qVR5MK^e z^+QfA-g$w+<@eMCR8wEK;PK8HXBs6~YqcUw&Cxyz`Ly;gTA#$|q!JY*y@$$=!1fGd znyAurl=3{7lN`6p$fKJN&l}C8__+nUxj$U~I=7w0uH*84DL)RYXCX+lq7OhbB@95A z;hn}X4Q+KJjva#d$u{W41~$a_HGf9ZP*n0Y4sMcr37SZt`rGKZ34l*mL@am`2r_D7 z7_eO5kBlu>>4%-tWq+<))H``Ss9)ufyV9bRJu~|fJQZmK{3B9Mp_<3%c@XpO9HIwt zJMULj!wSThn-?$b_`CxV_Nv24gH*thK_k}CpHT_nsdoV|Bj_UPT%u*Hz$5+oa??)T znXkCNuW&2ApDTH2HLCCgO>$tj&MKGkv@c_hSw+c=o#dfm<$Ig}&bS|l9)h&~Ih0T} zKPMvyRhd*%$bRKvmWbbOt>7zO!?ol?RlEazU3CfscB%)BfhXQa+2Yk)g-%q-Xy%dj zk>jL>2x`kL2jHB_lrnWlPK>i)NGtwHM=gh(VjAG7LX5vD22;;0Ee)+WuSINrTV7dy znhibawscF#DaT8ZKj{cmP<0#thRgKyG)=_w|7c>Ml!g?TNy*4aK+}W2&hz&Z=sF~; ziR=8d+}#>V>3{UsXKXk;Vw>#Pptka*Kv$+8w&bQZI|pK4_f?#Jdc>|+>E{Y4(g)0P zH5&5&h}Xgrs}P9D1ERs+-d<^jwbYy=u$Kzd>u)T7S`=7Wu(G&3I&eyynwlzYbE_hC zDYFF?NV*Djha|J5{)#6H41u{M34U{uF5Rsgl~;9Lys08g>jY`>fcPsqndq0A0yDHP zXz|R#%vhlDM@OuT$2{>|=ltYHAC4iM9yOVewVIel`1$F&nu+Bp@mA>B6Zm+UPzAoO z#w|>zmFj3`e$B20{s$g@muv8za{Ldw@1N!UUE{Ks3RB0yAX+#)F?BDjD8PdYwcL6h zK}-lZ%879gXXGWgIcz0Av39We*aesv`}==#%HZ>k^c2%n zSB#xqCGgaXxox3i$+rDKpr@gs&)nKA7A!C>w@Lrco%}yPcw_NN{IN9R;Ddgo$G}^y zB@vBWX@j_Hcx`in=S#%64c)s*f?RlcbmcjC@RY<#tr?4^gcSTeKdz}xTwg2C0fAj< zd6k{l+7l{X|Na4?r0hb$GrhDOXV9pz_K11rmG8JZP)?1SW}OxA#?5~7_gSEAk{+UH z9k3g~_@aaxu#^?@YQNhuNlvb#61n)k8QphP9K|=vYi0Xsu->tZ1!2Q|*ZqpoYv15# zef0uE?O!+7Me%8K%{QCB5|J?ScKz`GkVhvYO%qyxH+|`V!lry;B5Qlx`Akvdb!lVz zcQbwHt|G?>77n=nVLPe{c?P`Vqg~^JQNmAMY}qGPt#HcqMSH7V37%1Z`bkcQ?r-ZV z3kw6qtcE7JG&+4swf}Vq4Ngx>DA|0$JUlF8XGzDJh|kiUR7p`5Jnk zE^Pd_VZQZ+XPJaxq`qxJ1dV3m*UeKG+nWD0n^xfmeB(r z5Gofxai#dNu$vA`QzWH}$5&YUgdJfGm?-4MiUa4t0mBrBa?!^GPcKC z2rYj)?@mqzykw$`2QXVt;{WYn3a&p^;Z(AjA;$pMsH{r81js1=jY@gX5@CoN=dhB|Zl6U!N6%*W-KOTKBj` z-v-XZBwxegmiB);d5TEI|Dfv6q~vU+8R$|*TGUrtJ7c?B2On;6pb5N5k{Gu8JxO`o zD_z6h4cm-`oifV!U<~~qwAcT-sKUxmy00o_`1zBFSg%geVJBKEpOY~Q8CwV9|9svE zYCk%}=%{+MP!Y5KNXA%NCPf;Z|CXlx9|u8^=-HCt>a88kdZqO%BO5?kAVr zzb-Y~odF0g8GTPilp$yog9dL9{h{ zLi6Qr7%1RGM1SunGuy5-L2 ztH<0!a7F}Ysk~==bqPLw^J{Y&k6}j4#3g;M=_<({=9BZvY++u~z?0Utw1wcLI+rv^ zmWcsjz{B-`I+qgVAg8f1u#A>Zs1GJ7Db1j+CG(#h(Tw%X zn$2ETI&m*~0SCX^HYE$Qz_;e81OXp0vrq#x%n6sII=6_eYi22OCaLy?kW%9h-@<+; zyd{W!(be}VNot$=?9@qqZdTGA{l(3;RhwcKgJVYaG0v-k)x#k5{0~U;$0~L8e$1Q$ z{R?l5ee_-V|0@ymcX`ihH9cEDK1bLw4NOi$H>Npn`X<9i8U?-tW>}|u0*zDw#Ysbx zLToO!A5s&%{f zldu#f;AG_CVB!(ps}nZ4Q}EXj_k{RB889!rm+~u_Y`7+LYJJT0&^5?dltZF7sXsM% zJbQNA^b%^Uz0(CbCjVrP)^y&#_B7~v;kC7~b9(3D`dkup)%Lx02};UpZ#vNp9HHl$ z`_+$^xAV<5M4*N@d3?AwGRT!!IRsomzhn)(k20ln5nbt%WZc3$$P*Usr{BYl~}&5Oe4!^j(g#>oCuO>N&6GB!{MY? z(1MVKQe(1r+y|sU0+PH4no`UFVouE5VCORYCfK>IN3EBz0j;EKKaAgSX zb$tx?;@GlO%6qFlV~d4rhObcg zSY9IwQW5Q;$K0*U)<^HSOZ@r16=&z_wh7Y9N%b9gvKV3cbH3mA(JP1TrO@XA)p;jm zG25vcA}Oh<^5_AEOs+kosMK<-0uC~yD>6Cy!0LMS?L--8P@eShQ+ z@1Tfgm0Q1LV7>DW%|K{7y+i_FpM!`V_%-%Oz6wVWV;LLl) z`*5q%_G50WXYbG=$3P4Fy?*t2I(KlBS?}WomCVR6qYBt8Lp$;g3n7v%yi~LBxoWuY zL);U=dX_n*%wGzm7{(uQ13FWU?905giKS1jRIe{$Gg}XNE-wK;#Dlp$aVN;j*ZUmd zXh*<;fOebyAJ>QA+Wv0=y|)d{I^35vS{vh!R~2^?Hji*RSGU!OHeSJ_NW9C9bTYU1 z{KEB|k(Y;%Yd_h?_PY+9%$?iZbIa!Hkc7Io*@2WAYt2DF&ag>jdAmY1Gm1~F%Je`; z0+;sNi#75|?Tdj{6PCmb-n| zn<*Pc-c9PQot^%OjGt$fBp?$&kQ|y&yiZFF3?IG(f~8M^sX@9ZP`bzyfmfQUsbfRq31iyhklxI#^S+~3M_?&#F z7?SP&?z7y5PTKOtyQae}M8*3qDO_o&{mnBrU#mDr_&&yzxe1)1?1I7u7h~VMY3M*5 z_jpMABU54Ts=iyVa=&vZdciFYkNsKI=`uveBP3BqTc5)K&2(+x_X^&^va&4p_@F94 z!~Tt=7Qx0raL(tIl@kRkI9t2#KXTl4>S??FdVzI+-i@oVu#85rxFD@G)VW*QVz&jY z&B@;NGfj|T|IM%60^1dGr&<$AX=J;d?zfv{i5}OzvkV{&0e{%~Yk^r&iJN-y@HVK- z_fHFWUcU+yLo#U)V|UadPFWhfDTOz8#$&Y-Y)bPoe#I1?PE^Qp!rOMr?me{T`HLZl zf>_?LZJLTY#acIsd}l*{cX!|8V0*RT(THA7P6=s*f&Rz>7rQC2>3d!L@lBnBw9wpO zy+xJ<^*#n$Q4v>48xJ4a)bxb1(Zcib+6Nly(2`u8*}3jWNlZf}QIXE3VZN>Fg@ybbZA`^SxdLO7YZYjAn2IW^dfWo013W>Eq&-=;%8+Vb*3R zmUFKP>g+*{cH?NL1r9qdL)F~zTu4Bgp5(HrQwp>yJqM;)da8vGjSsThT2-% zC*^`_DORXj_1J%7Kd6XH z|45ysxt=!9!thiTSzqzg$4O5<4(t3$FU*7#pCX;{wPdc`&Q4_g@EBd{j3evaX2e$I zp@$Jsmajmm$SxfMxWjXZTNrj6d+(ow`wEnQWGy!?3}3xuIdejDMxZ3|OS9E7#wJT8 z%6Zg>U9rw8BMF3eDWbf&bL19MJzjYik_=_+PQ<%(QOSJG8-s@BO7@(r!b8#`^`FGc zljzI;4|x{=C&rZ@oSmO%mrw)44Im2%A24S_i~P!OdS+$5 zVEZjg1-WjCT#)qzP=~p!bQMAyK{!ZyeU2s2j?@=emxS-6sj|=kr`mF1NJAHoK&-KbWUlAIHO;2p_I9^_?XXMwz{P zA#J?9l^ywSZlOpxyFs!(#& z=U(l(C`)xQ6*633AT4Je4%4~eE7Zm_)?K)9Zn3vbr@5!`tH}7-)9xAhT=zjy@p;qU zYGp*Tx8dtD0qj4X*y6V=(_LB`T5T8HIvck^I-6G?9?RRTmQQ_*?s*fVu`;%{isxLM zex4`&qbXd^UR{v96XYHF5m$6Rj<4UO-8Q6Sk4NQO!01Q*!Ccx{%YpVz??*4RbWbau z&souv4$sqhdNgB5g6Q6uMNQ6|*&gGqZ3sV7LUts!QyZyQR#qGw92i(wx~HeniC}c^NJtyxPSLDwnDaJz6R22>Hd?~ zBX1pA`)2j^)du@$Y{@SJNSpPAB@>P-xKui6TbhF}nilMikS|&d-qRvX@nULaPJo;I zgDhzW|J`F-_bEh_GpKRg8?t@R3@57N5tFEcw;eyxL)i(HV|C~lcZkW| zBHDM8mz>N@UHuBvspZ)sbnN)n{{y*JBYi^&N z2p0Z3dmcj9m0rG=gK>A7RY;@OHRp_B zw#UC-eMY;42Nx8E=&?z}$;LC3f9AM6qV)X#N#)C<8|{%7_w;SACGupVis`6gDv6y3wgmjsk8OjlY`+q9M% z+_g|NsA8nZ#q*gt){#@#j<(uhZg=n)VT1P^g^r7h)V=K)-n(QaD0)r*wx^t^6 z_7}vS3q${jYP@~6l;|fe4|iq#ZID=c01}Yk=%Hz>jMe1vPRIowCutc*ZZ7^Ik|gN+ zb9(#a9eeVjj;W?guKZCvCvT&8>|nU(Sf~2+^NZ>sO?1x)2naxBf(jo1G@zzfip$EL zY=hNkfIMFJ>FR#M9!*at)O{gL@*oWC#o2^17O8b51EU`AaTE3mEni3&7B)fh+w5Hq zfbwi&`))Ny?zZvVTpFz_a%!SJu}q_BK?$;s#Y7tG3hx@>(vn~*{dvJj8nO8y;{Fs@ zCM*5C`ABzZN2cimbpqzQ*(RTn+oPS)k%$`Mx5-jq69+6<=LxtMJjY~i+%(F~h}x1T zHB*NFkXBD;%}kFgROsUpn`_Kf+a7t{aFI->LdWdki`NI5E{QrVJHp_lc1>$!C9|F5 zT~u1FY5#7^^%I>502{_7J6YBRKR3Qwq>lssKl^vHN04|nM$cAd4w+{@Hac0F=D)#+ z{po>tdoeYKLuQRBMm|LvOV>o0)!2wUrOD%??DMvk7U8}*hb2iQW{*akT_Vqlg!}hu zSHTYKxyl0aKgIKMU7A9)e&u(iFN3E%C)am(*Vc66PFKpK>AZcV5OT5MQASpd?z3*h zo>^M8jE`?wCF^V{4la0pkVGwykwhIDYq;|sFOgn@p~X`HI+#gQ-(ZhLq$62dv8`ib zVsh-68A~C{#L3xciJ;H9c4>s!6dbRI{i>|2EKh+- z^kbs+Bie^=wrxj1%}JaA+YlJZqlbwACNnTb2n>7$j6D0mW6WW<1q)~gl-}2PTawR> zr!es@o!%gD2-CF;f(lfIq-my4i+@^ln&9W~T;|T1Lv$SO$BI4Uv2w1?0P%vT*1;Z2 zl1i&vmp^?(`4)$%Y1gBw*ULJdsa-*1OnXpf^WOAj>*&`V&qoRPhWr=By2?Fyu4LCl z=62aRZ__JI8tFX~yG*pw7FB+GjNQ)*K`2KJai|^b=7RWs@Gj+8;@oq2U*uPuvg_Qk z1?jkiRF9IIyR)6FUOL9`I)*e(n2~Gq`>XYSn8`UiToI8ydgbO`S7m!kaJW>T34GG4 zyuA@3%%c~G()1!3oZQ(De$RIl{H9c~`x54T&za%2!$2S5mX}JHS20AAx3%l-`Xwz# zq1l$dneUHeOEdk)-N|Z?UzhDa6oJ~vFV#NRb^Wv(UH+17CZ4%bE&hw=zgGwimgeWK z!rHw;+aH2#?60n|I5ZZ;YD`G@?;hx?3hATq2bj%jY%imDd&|$Mj}srm>Akj_J+|@a zPwo(2s^Q(5{x&O^$yh(UlwsmXGZ{49EGKeL(>hSbjeNk-xjS*bKFRjVAYxc>ktNa^ zkju31HJUpk% z;O-gd3UXclqv!S6FxWm8Gj*-jPuDzfD}>Sf;qma^*#rO5^XRtSxK34f!rkOK?028m zqVbYCvZd(!hNTeC4G#G&G{~}hr2Sp<010RNd?Tl=<#iew1zqK418IV#WSx<+k)-`f{VZou3#(2LL&*C-Nyb_t4Hrsx1e;aIXBjXjr<$u&OGi{ey$#q@=9c+IZoO znU8Rid!l!OFxME@O6&=GdsY-I%zdWw@a8Y^QcBI1Uv!P}boG?Wx7Z?Zloo5~^fxh) zwACph%66ueMZP3z3VL-C+>RVn+tfNFZa0si|x zaN1tiMqK1&S1U`L4(@QAZvKtctx_-NnyXT@Rt4l|UJbr8!8wn#*E<^&Gm=C_rZK0h zb;tW`X7JMrGU-6vGjhxMc}!*y#;aq%#H**B=Yomec~5QV{esge+o2y8+}JRq(Qxj1 zdge|-tMcKw=Eha~9k=Ym2~LJ7Z{Ls>@`4^A z8b`S;8lNh2{j!Qg8>(Kp)fcn;;85OMjz1Z^ajzeInaB7#>b+0i(YG)6eB%uAwHk@z zfF%9;oeOc`M>8kJaL2lRjA0&oh_T^!3Qufy7$%FiY_7#w8W(x@fD@P)!2=kNPerNA zEhDGBtqQxM32qN6?v9eqR~Lo8t>GT!YCnlqqLsOU;x?~W&0M=K*G7@;cT9a_Qa>Y_ z=1(%LC|~;de>B)yy=6pRt;yuRV6U=}WyCxp^~sPYcT9RLn%q}VQUar1aF1x&$CaN| zOdZjCjV$E_KiN<;tOHSAm-PUw&&?|=tgP}nI%D7_0=*eXhI=G1NIsJ;r)BbEa|($z zi!Y+eT#N{qPsjXYm~CB>@2@@_i>8SiG+tXySxT*B^{%}x_}6d3mUNOc%_J>s;^8P~ z{opPNx1bW-6Xoaf4>vLBHvZCI9B4Mq;BR~tnDsnN;bX5^7<3u{WDDG?w!uv#@dt7ed5u5 zPW*ebaJ#6Qwp0* z^wDjkPr~7x6qV9a|~Ak4fynQqoD-a z>AAUTvng_FYU(GEZ7nUWy;MyNYUHWbEAp4&{`OSgC`s#oz+s|&EA5Uo$}()qj6TMW z?Kq3TLXR^roBv=CP1LpZ%!)SF-xuz!FzJ5&xh8$9-;lO5BvG$y?SsKOV&K5@(HbdK zc+$5lBKj>+*=7hSyqSZ6b~Mu5RON&E>6Kx1SlkWsUfZ==rn*ozlH9HKglBh}=4`$* zPTNZ@RKqGoOCM|<+0GNR-IheL58(u;pHF#SQS4wNZ^!6pi)oLL)ATf(l{`OH!=v!J zgR+X{Yk5{oDV3@Jy*@R85W$}8^mbYI_r~G+sV0Z>_RHdIV)|TK$ZqNgd3@%_5o3h9 z5e>@n0pr-Rpoh9QH_b1H+j*HrzB+$3D7;NZpwkRyP|tEg5ShuielYony^AbB4L5Z^ zEH%o6KTOvC?Q2WUcCOYxg~RG7z7vJDGg}FlP6tXsG)_4HTspvUv^J|UZLT$AlORsI6;E*UoK#UBM9KGX5O?T)~Ng#sepy88OQO4K6S+JwL{tg@03n1lg_-*NGZh4`z9 z4}OT?J4

mX~&Jevgg)RbZ;cIvO0co0r(Z;9nshSYAY3*NMu*DRZKjDna z-9-dW#1}DY1T|vByYrL0k|i{m3w$VLRq_Dsn%J+|dwed3_dyp{`u0|DtY;+ZmSmjt z2!Eg8p3uslEiiI56(%FldR%DC1ftVc>n0)dvX-c!MBFV~y8wrn0+WC#nZ;q&NDYAd87eRfHCL7Ter3 z=Jz^4*29bCpy>~?yXTuCGjM4(Q1ADT*(rWi6u1Do7e}qhLhQeGX0=$AwhUv9YNOK) z`V2?sDG2@n#H5Nz=EF*lp(sjYhf4G_C)=)f8x9sWjDHzG>0u{$7q6CtD$nYZn-&A+ zE|?TJM{UAm!ohI%n6p1o+E&><$<|ISVi>D1N9!1N8M^&S^g|1Q%FWFMy0L&d2u_$z zT?PhL)}HZk6t8xE&sd8oR1};Z_FpFBCO?!FB($}W)ydHUW-weVslzWA*|2)N)7N{3 ztzWB?8KGlC#D-<2jv`RPEChTFnfkA$X_)ON-rrZ-eNI%C|5+8QDkmy*4O?C@rp)_p{MKb8l-aP>r6rj0wz0XmAhTN-C^XZ3zWIpVcufpsvyDxqxqhE826jp}yYsa* zxG)3;Jo`OX|>jCGLTyW zrocH^!X27NDe+nVw^vnCa3wZ5r|iR+ib~Zu0EtCgl!C? zoc$%F(^$v#QGtWEiPw_3*+OFo=dX(jbKW|y6|2nKz4%{a?rmUrd#g_8lrAi9+Nr?)OmR9ji1`RNm<#p(|UejS&h zRsRpc?|lY*2h4h#etKXjBGepS(bJ_WeOKa-^{~kPRAWZK z3A4D}ZBCapHcAsOVbcQ7Q}u^?XuJKGv|YQzV5kXi%^jYrA4qUb3(s|jc+ys!D0zd< zMC3PaL_8Ml$BIjY3Ag#NOrksUBd}h0L7*?gGZfh2rf3GORE<)kH2kFXEP1nxq%ie3 z38}=DR~T7U(0rF4LtDIibct7^{fKZ0aN#r*C77srIB>N=pciFerT5?J>$O_E7ORYa zE^IlJC5TYUR>#U#=A7)-9k@UIEJWh(omw))JeiZW)ljP=bqme|Cnop^k$_0rUwVDvh*0XgJu{5C@9-vHL?47Z6JW^u zhrZ_w>t?nVq15r}HMRu=DIYbKYaKIvZ?GWA6A2Vy2*yjGW^80?n&z``fD_`!h+VYY zEQ7?`ivD|4anm2}mXC_9la-}O(s<{MAV3k1|K1!O?9q19 zn-%?%kE53vK%ocK`3>|$F4goYzZ9ytDh=n>GvN`>?H4586D%-1-&S1339!tpB^reW zb$PE@tTDSt*P*H=e>L~QCKeTKShHJWqEt7ifT9QP@qZJ^GK@%n{UtDY>;#Pb(D|Ce zm+E;HkbGhFi;~(xTMI&n9>K`zE5fN(+WibM)51o=xCmt{@7s~&n{vJw8~{|Bx~9ua z5Jgpzv8<9cDr-M3$;dPFS2jw?e9t|Q!=zQGeXdQhBCe;IGAMw>&B`_C7m2XPmSobc z&7jAWOoO$%YNo2l%h-I$SOMMxTbEU{UaEC5t`S zDcvfXL>H2pV1=Vs;%X;f!3PSVw5>{iMfe))5{q|sO-c^UPup;hJ7Z3+e_|6;(##=t zi}H)bG3I5+=jsma#&n=3K~eB>20NufG;geK(qQFhRr|;drr!(lvV_y~9qR2dd8cx< z*T=(-Ev)QACuV|%!}F~IGy9v1qp`HL0WFS^D&YtlJ00i!T)k$u9ef-v`pFp>hna(f zkCU)94)h;~xw{oIVxk&9n{mnbEIfbc;%u=C*EqbREP!C1X0Mey68pvI9xm_BOT06Y zZiUh=Dy8y8QH@Clk87~n(KjUI)$jL~ww2O&^GG-&!-&-oQE%zCKHB!UO!|rRHVQM(zmfoHd8h!f{iz&GbpX{+q?UF(O@L7Jns+6D~noVt4d^#T$ zW1Wvm$M@M527XE#ur&GOG-zhImp)xJMO-|MXE*;oYOYOT5j+&6{wOc2JHUJ_D*U&> z6j{L#_&9FXkW-mF*V+)Y=?g#`f@Ijg#&sESG2a z$v(|^puY;eT)jK@wA!upP?|aR(m^}d%1}=>+J2fSf;$dcE2AUHoc6e9o1nkTwi=W$|nn5+K@mjsCJFME_Cj?Fu}u-tq|C?Vj!O z0o5^^M$5SOHBlEx-?3n#uJBHE2l4bB$n2?@3>nodmVHU)rT64M847QJWzBL0%x`~2 zQ8dq>u!)mBWkD0tVoh@7UH*aTaAFw0O~;SM=G@rT=WEOPC5?q~kSOipoZ9JOz|h&^ z{_r9WH9Y-zXCfytC-Wy|vW+aL@9b7Xmk=(p8Xj(6=+k-1wL(050kzl&UOaXGuv`Ro zNw^8qYGV+#`7fDUGAaM!{((BJeQuok3GQN8S5ZpHSzcZJgf!bO*zJ=1xoG{=bvo(i zyZG{9w<7~huGya4^>-agO?PjU17PNqAFl|ziN{lN(QPs3>s;B@;7>9#dxQ5c##mi< zkj(iJy+!|!WoMXi*0~ozTpCe-q(s}l78VuiuyBz3eTg&0bi5O{oXk?+1G|jYFt@<3 zMKfUH)>K+h03|4!ketjfixT69sDXN#@0sf1d2YILLf|w#Gh=f(!YnT*=UsLPc*6iE z*nER6Nmy9e-0{toedL8ZYuLjoaCs8X7EgvV&IGif?}nO?hdiF80vr)xBZO&=3% zFZ)YXg)LN&n`+IqFCQ>rE{l}g?9tfamWDIcEVtu)9_Pko#3f~!zF;}Z)mh+NgP$#i z<#2I-)^(8meCTkLRX8EpN+k6an@F1qKOaQkdNU)R%E-;Raa|xp-%vARwlFi?VIGST zXORKwLbYJ~9rn2a!X_0C7W|OR!N<5ZIgLJm)wwmIl@+ih{ZuQV^dIJUfGi%G%#Hq;Vi zg`{)ALj#oks%&u`n%tSK_b(<=->^(I>am5|{rPAW4ek|U>f@paeZKLz^WPCbe+WWo zJjK^YH8e6e-v;P!cG6OGY*+?1qyilHZB1_*0^m6H6vFnQpEd}%nnH3$PliGgpGjU@ zol8K*yY^y)v_HXyVY-m>*%hT{cJQ)6JPGKELP;ZIon}?J`nDqCd12srWrhI4e|$d- zK_zA7ybh>qc=q`0%U8}+Hd!n_`~U?DzY*3*gIa3%92ZtH2A2VmzlRls5T?bgrc2CY z<@5m$*X;g&N|EiiD(p|>s)j)O>3bA3^@h0QghT=s27l^I#Nbhc^u3(RC1X`JHCFc< z3U_*Xr)R{xfDd2~EyJV6zUl@52xeB_4Vto7k;In_k_V5_=YWX!aYGTpG`M%K6KPd0 zNG%se;&2YDU=YOFS(+^efxn>ACO5X~sL=+|nb3)6$|6Gtdc| zObiLMdnc*!EzgkKr2e3ISA=+Epuf8#n;7joU=1>i21_-VDx=OU*&2*xv2}n`QB*`p zHWVF^uxeobSw1^-BoXzqDrVxs4CazTe3tCe_ETZ`rFPv|gk~O*ynt|T;`PY-$0#q} z-bp(6fNTk;E?Mw$@;6gf7Y zU8^z93QnC_=u)1>vb*W1@t z2JhJ#|2-+Z7Snt42PlnMtQJ%2#Kc72$?7^cFzV<5-w{xkMV(&N{BPA#<W5v2C+{?E(~&RHi@;{lsr+YT3ad_MOu^o>$fiQ-Xoz za$b9ksE`OF3<4t@94Z%y@EXe#j&3}e**hLQ#%0F5Kf91iLdleSWgnfaDWvnkJw^p& zeYa50kc%LNNrR38>(9DF46)B;8_BB`(-0HPtN6!WWY{lALQ1c2@SApd&&JAVz-dz$ z`wi3Y8agajDR4o?u%ne4pONkP7!=esQgi*uIGia1LFd&LvH;EbY8Lyi!n{O zr_uL=ke;H8RnljreOh@2|r5qv!Y7(RW_0?;F*q=xI&6)Rl!gUN{wKLot&x^%#OXv@@(WA()n( z*`0lSXfV5XnPnSWyn=%%YEk@+@IKSfV)g0Q%GB>NB{4b8Wu|QQ>{5-d&^xA*;gp50 zDQ-wb9k;d5XOd2S`|Q&}(^hcsWLL#<-aLcY9Im0yk>q{Ev2<8h(F$ee650`thy?L5 zsR_yUoXa65JUZ78qftM{%$0LHcHT^lCGLD4U8pM2Tcd8go;H5@fEAA0F|ulxz&HPM zjK!(|Z)7ay;n(;)B#D4ZTD7G5WA~={21ZDDuEuZ&x+(ght?J0iWi>Lgv8(|$o-sS` z!VLcbGte_ToUGz6>CqnXVV(t)um9j^T~+rHOKTc^3afJpP>oV5#UxvgWq3-F`gdnH zf!p zFshNa9U8AaLvemSSf-bZx{1l9~KCsxCdb%nopZdkr$ooyh z!w5$XWhY%}3z<+)73(66C*JVgSnD4JZE85mn9!^p;dbxVtx8$RwftLCvsczZSWMq2Jr}Lytbp6Py#-TQiv7{! zGJKV%@cTnpG?p7YVWTz{e`)y+%WvhCfRQgbRoEra^}expw~lhTGBND&HfnZOdV;yH zByVm0cVeX+{2?GP>?M()x&xC_(P3_7lyr4%%g`*#!PPWb1=W}))}RqW!C1LjLOQg+ zx-Nr?ZjN-?n&N{lQ=cBr&|gI9RdTntn9VaJFuo$BWt(Ed`iGgVEDz({GRT0E^&aH# zI7wU+6DrmU3bL$rQB9`5=|;Yb@6)?XWM-~7Z}+%(coZE0FAF87`p2AB3wiWU++&kG z42m}f3MlKVL83K7gUT?USVRbE#BK|RV8cde=($%I5lB#zwC|ooM{8<%4`?#>N)cxn%T~=kHG@zk-qyfVpuq@o{lk#+aVhN}fIUm%G+%sct*;>6wLv&;eZ? zK0r_3oqC;NI%E%KohN5o9*LfSUJ#@`8O9qv6seAfra z+c?P$hqWL4TOSFe(hoE3;jEZ{U(P%)IXnvCx7}gpk81ApZ!n8zV~*5^m<~`b3pn4i zotPx(*|-IwN!zXCVd_f_@sAbn#;K*|K)5tKnUOrlKF%-5^dHAUhvTwK8J?nN+d`1C zb(g9gHQR2Yyk7Ma?kvDKtTcrc<_nXN6=m#ea~6&Y*Dulc7y5BHA2Q32SATTuiw?ck z%5is!vN*-|>Nn*;ECT0XpLbjYt=K!#@~_?_8jd+bMWKj-(N@CI_-W<>F+!!*_h$J z13L_jr^R~}#$|e(LwCvB}mI4C!g>&h8- zkqnTnr({`X2XaqezmG*UBo3M8xb0FdRV@o;@^_queE0_HM9t&7Uuq`kHgo;n_AoeR z+$Y(L-vVU23>>+kWuEF3r__9CCi6C7BC>CqYjq^3Yt4@N#ms|`0%=DPNBYvCN!4PP zV(T**IwDxM)g1iEr!bU1{RPaGDSo1x#%GdtCoW9?OY)KK&O`{uv_*$B7yu-u8>C6 zE~;vbTiS4zrKQ76Z01<^@Fc8xGu*~I+m_x*m0$IbcgL^ z1=Pj-g#Z&e`%p&+1T!$kTxn_hlcemTRNIgz}}U+w<{MXH$t7x*=#=k`|VLzX4QcksdcvUw$QGJ!*_Xlgc~|Yg{IUDQF2AOFucY4NB@ah%s%$B{%%o9$v5cN) zb*>4%zTEdz&hgvL{)6tf70+exwyq~MVrFos6MKrpC>ni8Edpa}?+mHJX;zL6h*5}q z-&?I0n&vt5X`UF@ZZa4RQ<-6KCwa(b1XH}5B~`fc78}6n+V6MabRZzB05fvnU;i}#Xzfqd5_W;azmv2 zljDbOcjABhOTNtjaSC-nS_*!C{#l9*u~)X|myOwX{?u;kpTr5AG=_A?XD=T2{j`Td z+RJJz?x8dr%i6XHoR;k-C6}CcQ-_C#*DmkR?%jq*N9h3mY9hU%(|HeC`~_)n=g|=b z5GH-+#?`q_1L5QK8HrVqo78N!(f@$T2Bpn*AOyNftTvnx78gs3Jy@rtAZItx#h& zi_CIprh12u7~)CFS_m}65mS>p@xVMgCHYTC`3aDl|KR5SuJx}B7Ap$AC|GO_>MY?1 zrcl{3TN#?M2R9p;Jrgoh#+Dj{!6uB=9pr$ScGi)y_ov;`mu)S?me2aB?#R>-hfvX~ zWeX7Pw9+y3^}D496Md?(V(#`y_8XlNqqD6y^7w+ui;avZ`ck1X33YwTZx6L;_|JbZ z&D76DvU7Rj`Wxw=Bsdt4oK26dq$A_(b>7k<)sW0$)I=D6~D9dYXOxiG`w{TAq`LIET455cggq2K6 zNt)BGoAW!-lrKbw z2)5%y-&DIG+gRHAgh15%_B2lsw4$ta(ud(tIGQQ?KxS+`VkAQlTX0X-uL;J$zQDe| zb2!(14o)790|O`Rz%*QHE?uw<>!-;`gXi6JX;8~^s9m*za@M z5kU;~VdV;7Vi(&@+*C(T>BaKSE&dY>Q-sk(CPvOMz_V*0hEPv6V()D5Q@veEPzI1o@osqTl(w9=nHTp}G`W7v!jw>?=RlF~@| z`b&iFm6i`D5Gjl}AvsL9wlF8E@P0P`oTYW0%AYzd*OYBQU5~E!X==7Zj&HK5E`6dSOR=Jg%~IW(OVo|9KA_GHOb5+429!P+a-Y#qDYh| zk=aMky{QL#?b@)!CBku#+vfVS)yoW^87*RsQ-=eh;LV>4|T9+PdV27|OydtZ`*YP#kq|{pM3O={tqu!8lM3kc$F`49m*4C9ygVF;QxQOHv?KUehn2 zuCJ{wNJ>LL&L%laOB0D0TbRw)EL}a~8Cc3QUdO%jieBATqE6i$kM@8q>U@&_iAb8W zJ~LwGDU2h(`a;Ip(q%_^ECK1`C-6eqyg543ygNhD*m^mJ%{|$5emFvAWSwc&n(lh| zc`4pClA3E`)GsqJcjsdHw(`1m)nE)LZR@xL`|7cbL)mZfwb+fs)9TMye`ruX_3mW_ z{BcGhc>o2EY*+z#ff1oRrqT!l))5gvigT4NaKh$wpv3AhU43rqPqaf$mO@HO)oxiw z&!@6GKc(c#Nbpy?t+-7CRrj@u8VaNJJu?CFSM7AJ)7^3F&vUA!)zg)MYMD~8i9-g^ zLC4wTd!CLbXBKWN1JcsU)KlG|R6K*zE5|(}_8$21s_Y)bX3QhrBH{GTy2mb-XibjP z*N!?(?A?pGi*s@SfDD4y8m{OT%Q);ZdVl<{dvqeSAm4HD+`7p`n^0 z@-IL0fBWa$fsnxIIqvP;44~^e9aZ!Jk)zx6PG?o zY?j~YA0Zto^bUy+f`7qteL%Sqg^n0TP3ma%0VU>g-H>WoUro>TDG#fY{40~5>`frQ*&MSNWafw z@cF7*J3YJbw$0ZJshJejf56fT^`0K}#?FTFJx9i~g?HoQeyEOKSvwOar(nk>84x(d zPPrs_JUBP1QctpClC)8D=reR~ue_5Ha;^!uK18}|T^eZL!>($CPMKDiMIDzh?V5E+ zLOf;Ynhh#XqSz`~l;n@}yWY9Kq@i`)=BO8+l~<_qyAZ*O*3%r-G87I0yz%oEu`Z31Fa${U|>-+)+J3 zNs>TQ-;_JZDI#U=-s`2f*<`-{=IaE3fCxLccsF1C`EGFstHn(G3%+>c*N$u;3Xrso z%OypR@;K!b#}Gg6SK-dzhUb4>B+bVyi3CoC;-)iSeL8;jZFa0%WgM~r_MXB)jihgN zy}7Y584(dtf<)dGm1$fNsj|XH7z9b;gdky_*#X)G8gkQzZ&fgbKT}J*DF!i@ayC$_ zwP7H6HzL1wX#dit;iEC?*dfbxS%et0J=RY|%0Z$Jb*!^J=R-61sRGL$xF2uP)xpo~ zG4}!U(ZL@_5nT=}5)dVdtMMc7C6JZt_|~j(oWf$06teP8ezqK5KpG42?3ylNIL6!r zv{(j$v!KlVlb4Z!z{GC7km{5ol>$cs7lH`56LqU~s}=z}RtYr(nq73msGO8-LQeDp zKWFG|Ej`0RS4LU@h&pG%y#0ra?{vvp+6jmpp%)GE3dL6#{g7)cs4KsohOKX_#$QG) z$LEGPB|uP>oDZK(@M~5yUBdtwdAB)}p5$pgk2H9YAH?3NS@v-^v=laXN045A{gEUB z)q<#sENYL6(u3)z=SQ|N&HYuI;Gq?k^-jMRi%&&q{1)LMDIDKH#X?qFNbb7}EY6Jq znGG}@+kZP@|NA_h`nE*^uH8|}Atcd5fjZ&WE(9d<`kj}~e^C6C-B)s5K= zb~1#)z>Moh%`2k_24GjAIJI2ElA3Te%oCHtknA0wUL}je|e_#;#KbUNb+=vd>rb4m%Z7Oe%Vs~$}XLrp0TS4Vx4CAylVE7 zhvmcIlfthd6LDD?)E|4z3zjkSI~n_?5c12%&8I$XW9b}M2neo^u(67jo?o(|8rPr@FfZ7-V(=)57BU z>eS|PhK^|~fhI8&UD5Bb8}V-k-am%QUvu7lSPd$+$Hc_E`xC&`jrX#SR|#-g-MCgw zaRG<}a7)Cj7t2U862X}EFXl^a2az?`$>aQZxXd-p=Exz)W# zLxTH?hWos#wIQyRq}6)gPkpDjOGEv<#m@2YjCWq6rLOHn4yLbX&tNkoe6m^Q>QJ@( zk!thlR*YEgsu~_STwm7n42ajM@;}hsJ5KtFB$Xrlc&uDfFweS`AW^TgZp;i>JRL?N zPJ-!iefe9R4mJ0-hlJI(F+ysH>Snb$mUB^jvT2!TvYQ~E<*Cc^td#m0S?hk4`j3_k z)*{zS{*#vHgY`;NOU&m>NV5OFAOAYNVjf7M1Q5GWXSPhEd(#>?A#%PLAW2M3l{|Hj z3|S;bf^KYVGy>duZ$&W(mLiE)<%&Z@4KK93)yj0c+Qx(UCQm%*&xeV%Y_Ez|8!+h3%6Pa8O|%cEs^J zHLQo~f?}UtQ%Jm{I-WKv^EZo#7TcuRTv6%GFGE9-3u4*iM5}jd zji!$$PJrtZ6#xZBI9g{m#Sam9e6ao^!4#?rwY)kaAkxQ7FRs6bVmOwPk$a49{_G*g z1Uc%hel)M5Pa?0J1s%2UWEb^Lm9FQgoiH-yv+$-v5{%p&GS?`aAG81(4F8vpbK+zr z=K8Z8Af~wbfwq;WK#CN|bfABF!V-8%IWK6G5K4eTyDs~_5u?p6Dms7E)|ynHUtQol4`(XQK=w{3_`^TS_J7^3 z=P;(V?ZwsAF+g}pn#Y52>&tcdB~Y$4{w-X9$wI>wC|O$Y(e0MG8*or=OmWGi~QJ=^R7ItB(M!JYsbx{pFg4-{4fctJKkEHBIh< z+;QA#sKxDwzHJC641B6p6;T==&i&X)*e69Pxu9euuXZVP{-nLRENDX)>kvPG|M>GC z=D5~#(+u)8YdvfIOo|B@wXUlp!tm1-uPYH1?s}iY=*K3R_wz~K6?Oc~uSSrz zXNo)eO2F+Ne4|w}!Su-sETf{Xh;l0edRt)!WDte%re*W zT<_-a+D?wg0> z@3^zk#%#BQ16b3GvI?BJJ?~B=6}~jkVov26f7MW7RhVH~voiolX%%xgC}yiejgkfo z$}VT{ei&Le?#n6-m(RP|DuDncO+`8+)ld$TyrR(|#QU!VkYjrM49cLjCr z8l~GuR$~5UD?5_^uTcIEW>}`Ie*&m(T6yK_QnP4%^$j+j_oZcrMoG1Hud0U(lKhhl zAQ0$}ed_3_6fp@&{EaICAkss6dxZc`{h3S4om=Y_)ohLJ?i=3?V0wN4NX>22wU!VX zv!cY&!U~F<2`e{3C@3hul9NMb4~bAia+#?sutLoozHG>a3h2>7?6`p;)5@UqMt^e~ zAf+ELdH`9v{uk<-Y1v!@1ij4215PrllM+#{Z9s!vQFK)_G~bj=ogQ;tizix`Aj}Mk z03Yax)uCD>a7u)m9y&1hodnP4!@A?OT33e&1r5m`gAom{#tTxZJAUy}7Z>|O>bQwI zRFNBlV0oCT$B3Zr{2OpSzsGZjU6@-SzM4X&=w(Y)3Nz~Dy*;cd` zriG0_&bOGNLDn`{OWjzVpaDhA4h#>9PF-;T{az)PLCH5U^?ZDs6a1WJz3>}EBO42& zF;CU@_}m{6URh{^dzev*)F20HUaeoOoPur^DM2Tf)#kU9`A#|%Xu(WYW0cohetn{TA0$X5)=KgkYXkjNv07^RLIO&cv`Jdcc(y_{=N5MCfYIBCNjvVHHLqLTk7_DZklhI51MxMntXkM zEp^|7?SnPiF)K>0+i+n2mMgbdo$L;2vD5y-d9-rWz0uO1hzDdgX|?w6;*~38wZXL1 z>l$rxo-KuBvC?K{H>HU2AGNB_^{IM(&sT2FL-)VcO5G74LI&Uu@9gZnl@(0Ht28+G zc$nS4MQa05q5*cww5*Cs(6mX<=J}dULqb{_G4AU~EM!eh&D)s~Q}VeJ2MQY6Te>Wu z_>7ASTgzjzMee6&YzX9$GTjSFCIv}Dnzb&VQtVN`?vD`qL@4^?P&vJ!jv`EGT*Cj}pnlLG;D^dX)(0WT-KE-o#hkNmzH ztNk_9(#>}u zh^*P;OV3_sszI+YEG<1}&(<8+N(IKw#*fP45Ylq$jxG8~H5oA#4K6C5h=Eo(s+zQ& zqfne>?QD)kuL0e@R0EPeI9uzF!MOf=PtNFRFdMF)cfZ+9I|oKV!P3n+N79otdTcuL z0Nn9qLPLM((A)9T04w~UGQY%R801Mg!egNXoUYwekdqxm3TWpkTEdBhhcWBTl8fn= zz-uvFWOYCKz+VCOtpptnrnyo=7QKy!(3mi8DyWY@0Q9iO?U*J{O?frD@e3v!q^Mmp zH^9^*N{H`E{CKX(COPB>Eo2xM@f9dn|6hgR+p22jY)J(F>kv}qM@h}oOASm-+-ja2 z8G|H2q6BcJ2xNOO27pRwS(-Td>h?BTEZ1o(Qh0A~PZ`FR;Apii-LdsD^=Q5dGI>PE z(UIBnKHgK*($dmpR!OUDcuAP5djx{9y9d-^ZdQSKGTc}Cn2(^CVIp0!_kMN5OUTp=$k59cxc}895U5G zFM;X1?(W_8pUqWh*A^p3K-moqiR0t4Qt4c&D^E!(%gzj~r)|G^ak9-epjwyla+|Zf zg&eW>GLLu1E|1zchMcwG-Vw-%bY-&F@4vXtC4R)!!s^JB=NPcyi(jCr;~e<3#5XDF zTK}3RWP{p!`w-SUwsGhd*Y>#YO!ZmomDZLZAr%*M_14q+GCb^v8fuOGyd3-1nZ>{z z5^r%ole`Z$i00}kSc}Wk+mds#=C=Wc)Yy-eTdfmNb}r<0xAfgih~8DG@cWN40?#9o zM-7(D4Xvt!8!h$xV;9_>Hff`oi3ZS>zZ;9{x1;g&EUkYAj~m`MDP0ZNsVJu^EDJDyrg>hu97WN~J8R$f_IL`4OIdD#w`8>qd0zcAYxxAH7mHvz5* z4uVW4GwqF}qoJYiX(-fzF{8q?38`Q+s}9KD3mH9gB~sfDxx3$1Kx@(AUY}ZY-AZFF zZWm`vvW_q55=1d|OY+UfP96zg%z6I})Eq4VCx!HGXRQ8%vh_CFFC|rhTIk_(jHpPJ z-t%8Dqglh@^pdzI&DdfgO9}57pRu&W&EoEs2$xq_KSb8u>=wVB@E-PG*7wtr1dhS3 zMAdI<)c+fLH-vtDD4*@ur;AKaAIs;u zCVOLZ`v5Tlx#IB?O&XIMwG9moW^=#2xbLI6|FR#3v|emnW|^18(44-gq_~yo!gohi zOT*cEEQIvwW`Cq$ev+y5bG)KoaTrkSKL_V)H1PiI{mm&5d?S?!0ziS$7D ztn`T^B@rr`r>5;Y#>kDMZkp0fpREOKGwK3uN7*mmI0r=Z;UY|ki}KL}M=r9@rG)gn zt~6Rof#d#K%hl2T{y-F`AlUWZje?CGX%AmEJ@~j8&kd4Yo%Zw0&x`*!|*vmuR4(L4|{HP4tKI)d_xh&TgP0Jr~#O{TSf2XYE|Ka*02z zTs&rAU^rv;ykzFM--^c2Seu@j>W-sS15WY?k!I6DqeYl1r~SO++DxcA#HhXcG*RXi z>lJgNnaGkvv}ELD8YCq|=t1CtCIfGsM~8*5v9YOlyQd?OPLr@i)%`-3g?YTC_+w4R zyWqv6*%qPoWzt7PUQ=^4Pck{MZxiDj@84g5V2LM`9SKYUh1EYZDE+?Eyw zU{o+*#%s3eCrONzlfn>3i(Zufs)_PEXXDR{eEQy}O_Nb%0#tRN*a7feeD;_wXiH1Q z+1WW^1eE4_!s^DQ<#NerU|?VkRQa>hFto9uYq|Fyy0W#PL8n271rj+8w0$6a9aME| z!M|7PRUJq#ELQ@q2e+OQUBb*GfyPX~wPlfFJi2IHl$UgN@&Wm($2f1XBSi>XoE0PA zR)B`%a*zA%vM@jYN4S8Gii)&}60q>_wj15hZ${bXwTlWsGS<2uR4OPas4p6%Mhf~f zKHiZX!8KU!aa~+|<4&+t@YgoAENg6J12`$HZg(`A<;*}wJC+0R!}FX#2xgg#KZ&tW+tI;4G1sx`cVN-hDeDQ_7F$e3!BweY$m< z2Etbum0>)%fOsy37*PpgWU2gU5yGg*`!FE_s(5i=ID4MPjqIki7{m?h7J<$K9}E31 zr5CovoD7sN@CqHa1Xz*E6d1{Eg@r)}2PQyzQt#DMY0Fk(VETcWkGCl;Eu{pytH!Yl z1X2^M7F5og0VK)~UOYlOb*gV$Z=j72^%4?j*e%G19rwVUZ&G zCXBNBxhsV`?P+s$<3mj|&Z*y1oJeJo|Jv%g9)m|;uEeu4HINz-Y+*7}9x1Fu|z+c>t zd8YN@d13>RB7mR(7L3_^rC+i|BeYLPJ7C_90&rMg?RH|DzFDmGTqM!-A2bhO>o`f4 zDY{-Ks~4}zdCjUaF)|9ey0TMJQetzu#Gq-pMQS}CD5*C)Ap%3L%aBmm>OWqs*;y~E?UU9t@g z56^S_kC}~u^q)(MjqRpD;Bl4Vn9b1~E#N!o-Ji?{7*j;paQXkgZ~aSt_!lt$L75-) zWPhdT`yYP>E&~J|NT#W?FX6YCHc=m2`tGMuafyBVb`y+nl%N8SgcQmmP}V#;=;ZapLe}#Wd`>6D6pY zflK_zud!m|v$Fwt#&5}!@eX&$G%+_Y4Db3Na6?x0F%G6^T(|;A0$c;t5d~qX?+X1?^?GKdeQ0yu)~fm zNB|!ran*=n<6jsF69WDOh=-(Qi#~liL|6!b2@PDXsPFNhr{B?119C)P*Lqig(sNBMK+*X?!@&`nMf&@UYyZOFzOm$0iqnC}z|UBKH~uKK)QY?lWLYYNbXV92^)~SmfpA z`kkMjU+rLxn$!U1S%or13mHL)-xE(SR~pglVARw1E^Qj^s(D}m5=IXILT3!PtWgc> z(ZxvR#*F|Z$3(Ic=RjK}ASC4!zZ6f4;Yaq@KY^++vd4jFNZ#3N;2ld^PX^4Eg9VK| z0HFD2?U91OfUqCHZnxd)M||?|bg477XebgLdwHi4sS3Oz`}(G(pM6Y>_7e>EznpUxi>GEjo17`5At&9=Yn~T^?XAXuL=Z?>a8e*XT(t|h!Ob{^ornH_MxFom{ zZ`&Y*;1>~6Q0S0lg)*=S1nBJ;a6)=289pR#c^(3AAVDnOyFF{4s!wmYSm%9kw1t=Gkid^{dBZ#1Nxo16(TQRDt}xE(_4WN%!mLtn(1g?H?ENeUT30B zQ@#UgMM=+7B9r%2R?RO@Yp@!L!8YaSYQT#~cE$(O`~&un_c> z8Sej4u>mbX!YC8m0}7fK&sTy=;7jUMNKQ_l#BKOAde$OEJk!RK( zP@%0;%MNE-By;8drg%4|zvVHM6R!gxNC4j}&-m)*1^^Zyj~^6}woi!!Q5?Xlaic5C zP@&EA{5lm1R0>q_hl5$d@83T~^zj2E@du1@dx&M8xHxgXAY{4SKM9^GtE2#*k>~5r zv0ZUX7k-L{ZT;Ai{MLT&MU(m>N%7vmFpUgPyQq`%y;ukz44cCO%I_JOQ#EeUL?MfC zp;F_FxGJguA7W0NSyt98zY{U%)s9)O^((!Sc}u_Fe3G=e?H9ipn%;e0DM#tePrVcD zn#mnt4fYE0s1wQ#MEPl<$T+7dV@wW2$^C9`)N{LeJw_iumW?kh4FeM6+@%HBkwBHl zdUYzm&4dn{2W+n3tTj8faeGdJ%a6dH2im;V%kJASfFA+iD@&>rieTiEC2iGw=;S^j z3JhXMOYduO2|jT&^k0g6zwV0_OG@NxJfMC94+GdGw8M-U_E$rI;w=1@OKjN19rTZW z4!B$u{+5dWVc`k@EJ5LL?2gmhd}gia#p9i|4xiA_&_6RXaRAIxrU5Qu5xPVPOU-LD zCafRDvA~v!yf6Lnohe!JFIxc6ss->P0hIuN8Hc9Sziv~aeu4`i*aS3q-i>pozdy~M zD)rZ%0jz|2^|H`m>RA@08Qm9cnuN&H)N;S4qN2a`_^x&3qR+pcEL&399f6lw-0seb z+Gc9)4}ZM#4+zj%=bX4QxPRz*9I}jG$Za>hZjc4nOlC6Iz1$h`?OG3QCcSos|Z^pb`pO3$LiK|Bh#m0YFq31 zQrgd5qUDZ;+oQ!)Fc1=1`dhhAzfhFJbXhQ5sG^rJuV3>KnAt9SYwUA?&p*`d^%YOn zo=@k8^T^ppr?7FTQw;QN{I}z`hM6G0ELwbHw+mA48*|RFPtwscQ}LRWdbuKI-}SiB zlhVMj+x zb1LjnY4&r4pObANG4edI_Hfe;&fFh%C6H;30>*+B1sDly(@Y-n$x8w>?jI6)J8wT0 z7!p8u4k~{KmrG33f@xlPQ~3Z%iVY0&p(t=i_4_@2!`n-5kEwk6=dmCDZ;ImIt-akC zxO%dj{XlKM|Gi?zI7x^CRnNpExT2zhvF(oJN#KdLIxw6dPEa!^p@4dHs{88uLo3G6 z))paPJr^opT+_b;N0~M=xJ?bHuW5*)1G1-9QD01~?>g-?>^fQ8Up(o+rSE5(GVoA1 z=kol2w7msbR9)LP%&nr{prQg&0tQNVON<3bceiv)HzTMhNJy7-=SbJUC?MT6G)lt& zBMdMMHUGl<3Ge6e{f_tlzvJidz+v{@Yp=amUDtV@*R?Rg3?2KIOp+Oeyj{lK`b2v$ zZw=>KDlTNh6LcNMdty}t-&9rfI9w!r5vf||-`a4YHvdkTXF)P!ieH#Tif`C*if`a@ z_{~M1yoZ6#^6TW#-baWS(84Xw0TxjfhC zS=HC1049@thElC_Ynqp4Im^yx=9woq8~V3O{9+!o zpr?_&DdOiPEtD^NF5HNJ;aRfw&(!n3y4s~nKi^K#c^VFr8>LU9EuCEZ>b>3&M^y$~ zt`}6&j(@#LT9JZY9$eA$Y7=~OCNDT3gJGcZYJ^d+7DEH_vJuxq1LjSTRf3)Q4$!d% zXwsXo#60(E>Dp0yotG%9(fB7;m!~fNcMrRE`}ASU@-eD>lJnfpgXEZhur%4u$k|m! zt?v`e#8Lg@V5uOfXvH$G90D^C2vLTFmS2h^7(r^vIEuKl|e z;`wB9eOD7?xlP)?CfGEsDxm&Po#Fh2@z$FeL0l20LJgj-PUFh&iQBo8l%D*Nb05xd zeQU?SAuQv*p0{|@Tl<;M_FZHqoML^oR1iUPo_17Fnw9E)F6lY@?ptQRzRG`E9aQo} z@Rme=h(u1NGI@RX(@E|Wzw}on30EEL zlGV@XzrPxq^{#Dj^7kfBiOaRQ(9*mcA0;VDO{2AV0&;Sd$j`17_>G~6@nFP8?_5#p zf4JwbxGjap8ve-U^bO+lU3I`g@tf%Vdc;BB(O3G0SG3u5Ww43QfnSw-MzQ!m>A^;A zH>z;g4G)H}nA#-r`zbgnzaPnH3^ZkzXAb%*^9{RvdA#^+#&25vwTGA*fqp7ys}{Ur zv~JOEb?|Vd&acO{%i&GUfUTs6y{bUO)7KB#9*SOTE12M-VFP0{{NY7Am+Mebe{=VU zB*Tyn)5f|!EfHSMBcRZNLHaBphxmC6z7K-2Oo}V{HZomuk(7Av#o7gEo8ZZIxzAqt z`>tgi41a9g=>Gh5Si+8-LFzN1_MHWxAdfo$iv4H1{nD0t%?<^*Iz3OQ{@e7Cmut3xt5L#`L4p0)7ZDWEMsrashE|1`;^t!}Fmuf-%Gm*e=Gjpte>LjbnV z-<3wmoqs=4Co&p94}ToI?|+9hiL6FUnSDP;a-hbA4|F zcV;CcBr`jaOr2d9l(FJkyepd20$ZBv8~+=Zajy4!Xb8w<)C}xG;FZcLDkA*b zs;M#yU(dNi14-x#mS4F(QV=^(6y0mm_VYW@!7zarTvux(mD_~kS;Yfb~w6-z%;({IjXX)LmV4=&V4Nx z^eRH}FjFGerIPCQ6GpK!j|JH)qO`=nMVy4s` z2&YTu&lVJb#NW_)E^Of`Ly(YYIK&5%{Q|2s1BCS4l?wZYJshgn|A+An_Fi%Vx?AAk za;Wy$>>` zMwr*@O#S$yi2Bzj&jeMs90NKYdSL~-O?i}6R6w>e&$HoZGU`8<=FZ>j)g$U0RgTRz z7DQ#u8Jj6%^sme^y+hOu+`jK?b1BI<& zjKylwP|!(^%}J0@;Kw_|84s$KXa?>$hg^0g4S6yZ|B4-Yw|dHzF{#WqZ(4C{LH5{1 zQBrGKv2U(Yi|w2NF(A}HI)~FhH6^C#8J{Q2!2tyYvQQh|p67ly=tvXVjp9?cHMe1x zP8*CLa6q8JvXM*)k^tJM+^!ZJ!dM*4OKl@|)zkq;4Lq{eMr{t9rb5n=VNKPuN00sh zEcKT!UywduCZCroX=_Uh-Sj()tTsR__6a7q^ioLw>|pBZJ^M$&8Ky3N>gv3k!qC(H z1Rx%E=t*}4lJ%5>8UUnJ2eh8&*a5a+C=B|VE~RNfR@S+sp4QKwKNmn}Ye5#Cmw>v{ z@|ceNXJ;7nqWWU9E8TI?z#$kL2aWcI2?uD3%(VNsE+nn?P<=rKPtl@HhD0DesWU2{ z4_cV-_a22n4mDVp4}7}3zjxYvOXFabe&a)!>J7-ZH8~fMrTjk5RNvX*pcV}Pz>JJD! z5OY6~Ckq4Vnjy#6XYJq6RYjF==^r8c=(1c6ti0&-wIIojXCs0}CoUR*83>?slrUt{ zUv1O1_;`pf;0sc%wzhyNIACb?DS*SeNq{y8Krl|VdIaarIQR|h>HZhM&2$&?!-yy0 zMXeryec6^s-ZoR=pi}@Y0-pHwAiyL6RPmp{5x^U-2W1JutljEqqdJ}fbf#U97Pw#K z<8pv!Yd;c5y8QlYWGOBwG0^~f(ctdgyA_p{*@Ck#-Y<(%UMe|wzk>vr5J(~N7rj-f zQ#x+@*Im!Q0yjH_Mt=(u{cqSWmKWL;H?|84WPa8JFpU7-#%Z?qCX39*-u37qNxt1e zox#GQkV!)xVkHd!|Owt_e!ob|~Fr^B+tG58ZAeBUgG z4;qiV*SL*4tjV-|Jwtya48?CS?vHo9TCMkRou_>rhNppeZCzg;-dI1_*W7o29+Nk2 zYm#hH&^xpY;b8Ei7De0_D$1^IJk9SmvV`9T@Yd)}Lc(%u$w#--zYe%0N5|gDzsJRL zKO~shH%gsZoVRoMO(xuDK|953>l{K{to=3TLq2N#s_ttaY0?iDt{I3=HN9s%q`dre zIhR}RtMS~KhFrtB4iJ%P?h&>%yZvf3z2nh&MMzu3a>{b{5JfE)x!L`S9}RaOWi;9! zh=gN~csYOA+6cx;`gIMK^)r-yQT-@%bcypOq%Gf{X~2ur&G*(J*=KlaCwk!RsQ6(hqMFeM} zbi62jTOd!ssU0V!9iO56=+O{g|05|Wq-*pW=r8u^zin32GXP6=AWkfa8st|~Bl8^l z*A~{loc`|8?HG2K?+aSv3%CafS&D1<}p(reO3eC#nZ692B^zdyYT0dklBxZ^+m zES1RzY!%GJaoWbJer98L^v~OVq=cWobL3^19~!u=TbX0(RAe@cq&Yh(7L7P29uDPL zkH&btNbFwF5GeIC5$kcSt+CCixcrbi{u6m|uJsc!5rG($Z=XIStI7=o(%Keqqz#)i zM&3pQCvF^$m0EyJ7ugM~%59`*7ddEpD~<~#dBdAq{(Qxpl;Ns7 zHaz?}tWIwV*^W!nA6IPd)if`Bf#8{RFmE#I&Ui7sRN=d6GCMQ9Ze!4QPuaK3W|9 zHgTk|2}R3K&FD#_k4S7Z9@ZRBW4D7Q*O>Ok1_cO4=5Bdo^w$xGbmF*1bAbh6X4p*U zlDl6dcBUeNcBJ=BZlG;23hRt%qgx& z&96hNw&@KKoOQc^-DtnpXQp?u@du5$H=(?{?@O%s4>~{eo-5fhoM*XERY^@mL+YNq zyZC2sKL_oqKA&hszaxRY=p~iBqbi6U&3#?MPRGfS8Ah9HUmHPbGcZrWoIPXPKXJ-BpVow6V zA!+R@l)6;53`5ioiFd*~oA}Pcyb3L5c)?rRDDKqY!JBN-kYfv7D&q4O4Mvu&^DRFN zkmA2ML%ibO(i>nrz?Rmvrov31RJ$F(rFC$o`Ff?Pw z51Erd{dN;GX<*_;QDLWH{Nt^O3J_KH1x#m=uSH{`7qmMJ4X&9x8N1w2)krf5#;u@s zcxb{9)}@iL!K61EoloE?!NntusNQxxw|b- zZU@G&Y?lu@8N`8({ywAbzO}V%-i!VCRfpxK1ha9F8nU1`$v@$$e{_oYyGffHNi-I9 zxiJ_!;zKdd;L&oiosizEe^l&T{vGgOPw;a}2ndko?+gDHBLjjO|74eDqiQbD;VMLO ze$a7^5$xe_Tv^K{NWpd=kT4QU+zRF0P}S z&(3d~TYe~Zlyk<=ukbHXGH~Zjd87gVRR_2V;-w0%b z6#_}2KroV%n>+h$e)8f%`PP#Ar}@3Q zrn1#rsne?_MaMV8A%20}mbzkeg;iMB!MM3mx0ZkJ-14M| z=T6Hxg6tmm^3@#g@zulI0PDw$t!k&eyevrjd^y>>LwJj8VXrTf9~^Zdc!PeLg>A}Fm3+4f%fL{_%*NR zSLN98;#~`TAJof}6lsHbopE;*@#|!y54#td7TR+Q2A@YBF}uXDcm7acuMHK zP2QN2;=Cl|_!Uwaxj%}u;@`9rwCO4g^2Zx#zwBdnaoP$FOr^xUA`{l9jh8ANtwd?!A0W}-h}>nCZj}p zbttziN5{g=Iz+08RBOB{QTupJLPLG|3th6NMoNOx4*R2qTp=f_xhkGcLB4)1bW1rK zB0+d~b8EmVqunkLwfs%vqobokNsq8*s;z!KVl8pHZ6U5rE=QXf=O5xLD*IC> z8TiHMvw1nl@(FbAKoFAx{_FD;&$`d919$Y%^Z z9H%lnOFp2oi7oLqi>!=>S~i@DvDQ{e{F5Js2n#wkO}3Qhx?m_{J^ zr-wUrS#f}@m(+LADv~}`SO9;z`7H_TVAlU1a-B=EywDy_*xv5ku>{Zq_#>?u2n`%U zhF0btp4^rhCfd1J5n5&L=a0nMhlQC%A@G?uClcD^zh;VJe)I{GG8^Z7k0CVR#-1-L zbpJ6xvJ@#g+q;UUUkWgI*wKSFTBfbvx(SVUUat2rPB%h@l6y>d_KIMSm(FmOldho` zOYH1tbiXfNz#m*+KI~}`yF7*I=P1h&p@Obk+)RGmffBnAXUph4)Z^op8@}3$5v|ht zwrCJu@5D)ud&nCaBU~e$!Q@*3@qN9F@Qx-PR&`$%u*W5{_&^TmmM0H|Hh2keMUzls z5w!S21yr-kN1Da#Alw<)bZCsN6N>FbZ0Px;qg=lhOk1u;U2e2De!*>2_kxlRv=tjB zKPYmIFp5@SrkVCar>BwgYYRHRkE#^rlm<*cCPo&rG!X5)hKGcVoR${g~R{%3K+0*5E>M|0t6qoz3L738x3!5+2d+!wK)_j<|}G=8$YAI{y`i&b-#*k z?2G>~zfj*vFzLKo7z$;m{mqQ!a{>Y+=5cx_3KemF3+;fN)y%m z4wH^U@3#`c_Xd0p-MagH-xE`K36s{j`Ns{UNQ|c|mgX{a#*P^`V%6xUO_U9UoL`Ucjt-^LsD_Mq#pY+d?3@a~HiH*?XR*O!fq zr!rUJyuC8s!H6!)^x|}y>$qE?*cKmTm6rIq(!co7-Ki@*^mXdd{f*@|AyPfcFRV6^ zMKf)la}u2TCf7g)x@fw&rRf;BJ0tvP$ilLotNkAIsFRzfNXhM8lKn(0dd5KdxyOg` z>?8A!wK&t|+IOi(SJ;a;MEwLl9fcIj*c5-ZaXbeDB>ol1>lS{H#P0VJ(5o4ClwcKFnq?MBoQtC8b5p$-Jk4NTj-DEI!S zGzrdt*OfA)EcF74;9okFc8=|gz7wQ3D@htJq_0Zhs5_;$I2sWbrKp=0L&2D;FuQ)a zet^(`bEn{CQe@AeC6J{(@oc`d@1h{D*db{$Zq94%p7cI3GrkLFQqKXl@qNF1ZDN3#4-DXo(k-%VHi zRC!DK>$-H9UZTl!4*!9*G?&9^wQRvT&h`;dzEs2ir;&GxG6eJ%Fpff zjHcYGR={2FyI9eREAtO2^dX|XZ$h!3-21%5r`C@2IptAbzVs<=s3>SQK#tH1$7)GT=@eajbVi=j@HCj0d`Qb2a}iAb|sd z#GhgrccGggmIJ8aXG(xjeNgjpk#S;4#Gq;(rBaNX@0iW!OPR-FABDUUuIZkY;78RK z%Y5O5eBI@_7TLiZDCyIpqQQb3QH3|g>XirkriFjEG|jI;x$X!AGI`7fujNFzaK^-hZe$fX>_XriUgdSjP-L@D7O zk4%gA$Jjk(_#dR?yVRWliMDJmV{b7L02Fv5DU>$k(A9E0f1Yjb#*xEolky8)l`C!W z!uP(gj@wgG6J28KyLcx12%0G)D=jK@41TCT#=~K~BEoy$D3cOE`>`>?sEaQ?0DQ#O0Pk@y*6u>^(( z;vtau&laq?qO4)u0zKK{knbxt^ci~m@s2V4AVfH>!J8sBIdpw2UP@uOOU;lZm%}50 z$WUzKyOV(84cth!N90iVp6iQ@${5n(;tCFSMoTocg;2D-y(3*M4p}%B94RNqHSFo1 z(n!^MDJFWv!KCeZ2}loJ@6IYxrT&2;^{%i;b4BbOZjtu=b|H(mAvM+l0~O0McsrWH zydDK(UUnKe)W}ndXL2q>1FI%H-_xIC>8jW_94Nf8!z!E4uG^wNi_o?}8=}sn-7~hg z6rW7HW-)S~8oO?Wo)KH0t`9mWI3t=*mQ#DXRjSpJhK~)!i?D^kGB`xu^kikyBva~< zs|gO5H&#VouMZwcQMA`)51pjR>vfN`b2oaSt~8|77dUZU#?~kTaqhptkCuXa4ygD1 zQp#j(1%!k#9xP$8{?4tvLj(Mw`0xfuc=&ub+I!Z4y+QNrIl&jR=OW15|9q+8wD;8{ z9O(fM^Nrk+o{MrcH^5F!O?j@uj`%xRg$1!XK^vrfrC>KRI!4}D^XGj_R5lDM)Y4fu zWEh?Wix5O=1r-yo6vrN3=)bCUhd)~KsjGjgpyBS?rdI)tq3Aj4X~p9M&!!*6OAxdhVQn?5H&x1L@7zf z7@g2-BfreK`Xm(x2T^df8*z2Jth%t(7WWf{*@KxbFI*j8_Q} zi#qE+DMxY2U~m*1>0?|aYjWWR9^2XtQ}g);-(ag2%dtsEM-co+aeTQ=r37+k2N||D z*gt$!WNy4aieJ|Ck@l_g*?irIFD@^z-(S(If)?~a8+A$S-1*#Gp6zxJpC0x5Q7lMt zlehkO{iJ8&#TJ^s>=xb@e<2iYzUiHCoU$|s-^Dj@T_O1QkL82b?rym}$*nI_9r#-p zmpEw-X^<2K=O5jg#V%Lhy13w(;xn6y*zq;o_0oTIb!9MHmMGvMh$e()rlh3ML>Z-^ z4-3>-46E!8w=8wkDjk~7dX4xh&rGuu2DUpD~w@OBsr4L?JD; zWn?(nF6`#0bA}fpuyr|ic-<4+biP(%Ewu}Bd=?YEV4CDh8u@0s=PPZVkS$vjYP_bSt~qEl61DMde|eGq=|eLcZ2*c8>S9d2GzQR&I?xLXa5-88tJ$l zBk9Gj6xr#j8>`6DlicM6s?98y4O4u(`y*m> zOL~%sWYlvP3~2iEG&;3sGAcK$ZZqPZaXR7C~ake|Z9kJ$DXNg(ae7d%> zqGVx_3j%bC{QdncF|=lsfgty0z^xCc#vz@wo(`@{!eNG`4NA4q@bTLz&M3w0$v&}*~%aK+fiCoT_)Rq~_Tk3eGs z+qx77w$&~KuJl@a#9eB7`f!0+HCfsBS7;w(6>7rP_P6E-mPAShmP=5b7<=gX1M`Tk z#poV$@O;-3AW1zeaa|FR`=LiAr~(7%B0lo zjo0U8HKS$8ud96{WU~VvCFBwj{CPDQQC4J%;U&M8`}sKLAHhhK4n==W(O4OOwLy&P zx5|A`K_d9v6A*Ec`I*%~_8v5n7+jEg2DZ=k=1hLpa_(nVx)8@!8)mX+_rxHC23yiz zC-s$|-`}JDmpv0p|Tp!p=}`kVLhO09}t&;U#Y%;q~}i^&UoLeE!>Q2olK%4YUSljv3s4 zz5XF4?KAPus`B1#=2F9=9CYKzem&tC5paoiC<9eAbRyFe4OP<~8dI{UF_~=A|9aMk zb7UUI9o(i&W;v$qO4BgrOHT-i7T-3?HAh=9thUX3FrG5?o;0p@><(!2atNt~WmeOP z9Plq!6Shq?HJLbcZHS*tmQAr>Lfy~)Qm&<>bb-qsenrs<8oix`n@BaR4dze`QIe>s zKGDr$m+eraIHcnk9*o6j`0di;OB(mTa;|~BisKIEC?L6pho*6L8qdBCuN&vcYx%WZBk}C4aUBz!#|-%LXH>hH*`ksSbRs;U9NS-T4B-+kq&+Zy7Xg19K6Yz zlZ}e2-#CxUYkiz2(Z}Ep2~xZMVjBZ* zXv|`#qpxvypMI+TzE^Zs&qNhI>HzGWtc>>&@52i~;mI8~7?ae23y>|r}5JXAbLkK5u$g*ytPJc0@$UvxCdt)3~CS)OD(Pa{IYP z%1WPXphm5H4Lai^o$O?aYZdEBTvk8(CRN&Lr-hJrFa3F$ke#OTdC!B586~CL$uZ?V z$pY&$#i6XUmG`n{ejQg+$usE%XP(gwahXxY25>2*-J1A#HGe!IZ$fwHN30+1;hy2D zVv5IO#iN1Ll^}5Fn>5u93Jl zcG(FPZBVKxqUvD1zKc(X97G}d1!0wzEY;G}q1v6X4l&N(h7P1sk6(*_s%689D6Tj( zZnxN`Ku%y@b9sE0c7vSj?0HUepL+MgS0-XfYz`*`>{ulcw|;CkV6zn?)MOX&KKVZM z??@m|JUI7jzj%M?yG%gfKBI#3u2*X$A^5!U-ILy(*Y9L2YR-a5I|OWuqm-EJDHYko zr6we}+q=#t`kkHgxHiE{v@a={*l_1un|4`;&6Mh>;Gt(D1*ELn~m()8E=?? z-9(nAp|5&WRMf!IJ!3FyZ#q_?RDp`pw>i#be~x6vx(hapcEP8F#iSrp4UYN*r_jeB z$bEQxJRgOG;a@{$bFwlfG?s>|2K%*UU3r5T9Ms$LTG zws0#^r@3-cwO34utV+n;b%)fIG!7IjRIE0p9%i^@A66U;YVIze)OQu(Pn44rVs+fD zXOAacew4Dy`r#^9nYh+^MN6MbCqxMkM^mIcpjj{)OvUlsy%YM43 zPR(e~MfA?m4=-|hkEbL)WwO{y;+ciHv;E-;J6357F{ns6U6zuO;E%A8rPl`~vaLCX zl_&mEJG`y3buOD9Q@qT$4%8hl{LR|X)QkhMjXB@He+Slv#bgyj2gV*NSXcW2Vz3ZS zftxo@%(0zJf#M_i7Q*9lxwrINE-3Aa(51ba>wYIfozMcN3u@Dh)Em_?6!GurSy~;kCc6!bs zJ~QnbIFmt-216LKgZ@<(V)hOc-cFyI6;{gsvpSlC7~R-=&0N>xX0g68U1lK9M}Bd! zJPkEo4+=uz*?q*Yr8XteKEFJt*iBT;_&k;ul?_bBh#MY0ymtU zGQy**)xFyc?6i`R1*@vm$sb28ae=SwOT_O%&6Vzcky#vFA9$sIp`u(%xk^00kX&~p zR^Hmdu%w|Ym(QtDDz|rMb#6@0F^+*Sg>M{&dWCd3mJ`$)rEZMU1doz}A|M=Bt^Ib?O(OD9uV?q2j3o#LydWMBYei zo&d>7JQbWFo4Bh2V}VF(yRzQ@g@0%;8;$aoG8jpP2r^A$oeviLHI4^kANlTbrXXo3 zEZ&dJC_B~%(}?U&rbbS^x7giLg;_pTaYpWO(8}7Khk^WdwBkNmXV0Dmc5NruC15cV zKDvc$*pSdn3N)s4x+!H$d7lTt@Y9mc)B31yQVrzRN!PzP-lPhAbRrR}kh>@p1{hTJ z;+ca=sd6xaSO7d7E`1jdT)8`jT_92$*z``dAKQdM;o* zfqh?Fl2kL^R`GN@cgPCZ=TDdV7M(gxd4hTn?&uk;=quz%p{DE6{uUU-$Q5U#D=Ajm zsb{gzyqqOQCa62L$2_KMv7J6j(hupX4igk_NW3X~8!Dcv3A_W-6S@1DkJCTwpW5Ua zN%(f}=WK6|!shdUqrd}wkgQRvC1>i_Dl|XRj;^!6^Ij6zyhD6H?RkU}Q+pX3a3JdI zlc?Y?vt*O37B}E)e)_KX4Tt9eFWk6#1#GE8S3gDGLKxt7Nl>cc8~qIlf9i`KolQ=@ ziR>SfQ17K57}#!LnZnx~G$HmsHvYiaR5IVA6}huftI3j;Wx{!*av9h*7Kk5&zTXW` z91fZwxYy$2mFlbv*%^kY^TG+{g*w6H35f$Ot{sK4D%zC^2Fd%IhN~U0qeeeG)}k8b zb1dPDJz}vF_CQ>5u}gv;El#>wE=!5$hjpS7A7Bd_p$6366wBw}YZYFp_{5VFPN*RQ ze*rInz*kc2taqduX@7N+_&%03WvlS0F>Nu@oN?gXFZPus2e4PAOM9Yu%rzR(4R%4T zT$j{$3ssoRis5pZIOx%3*6gW7?@CS$|iG_v(i0e9i*vf_F?5$d=PitnH4SmNXzG%+Wep1Dw^c0Ud)B~rH7{^b# z-)o~(rem&%-AX=eG&n>nu7sZ~aPIV!7bkYw_aD=$a8n!?5HFPROzNl?b+Gk{cCwS^wjXdNuYfH=M$U+9-^ zle~wXNOvW{7x*2=K{6CMvNpg1> zD!5^|>)bXXxMBrQ)DU3R#>{R`*=kqwnrTd{YL(=hQ$vurvkThrbn;R=i;YNm^S{`F8?4r57*}V=P_kS+^Tt@Hx-Z zz&HPs&+yHaM9EG$8*Q)Js_OMY-{QlH2D56nYP$X#%XI9rl^ym?_pS_?OL`Wj)fuWz zBTBEcTxuStf@PirfbBXF{DrJ%*Ff+N%ebV>#<=UmNSPsc zDIe99biHcX%5g+lz=t=}A|hvbN4DAB`;GrDFV{$<&M2JFAcwiKib+?i(9I%_?l@+4 z6z2P#_@F6Z1A{+uKIpz{Q(3R?jA*sfLD+=XL8go6zD7}dmrE@#78W_`H@GOn;4hRX zwuT<;qYV3(q05517@I@W@P>SJYFumA00D7m2ZnQ{lV3MG;bUwiKM|ZkM7O{7EhJO% zs8zSt4@D}nYqS<`aB@QIwK*mc+K37$#+olpSnY~oAv+_`nl#?;SH!l*IalcM?`!oC zhr+(!zbI`Oq&B*_s6A2TXHJS4pUV^C$?Dv_mK?=L>Z|li2YPwm$lBgKGq1G~>qXTt zQ$subb}6Qs*jg6$;kK2wb#0X}mc=Y5rrb$KTyuZKRz*@qn^&;@DahnwrA&FA1!)my zX7^!EdNl1EUhmv-IJM}xynXuYv^^UC$NhEPW(vF1e9bZTU! zs+0@ZOh#?i)6>Wv|8bkYXXiv|7FP%v(ERD%f2T(U!4P@PVo!*#)bYbKR2}-LYaw)jQZZVZfmC_jR^cHn}}=R&zcEDpAsfQBj>LfrK4 zs-mBG#%M-(L9>wf6HbS97-S!^+k!Oc=Vg4mWFewk54_jeWaL9U|E_*rgWoUjf#BU) zLIbd2ULafZXxN;+Z`QG@PKp8ZkOxZYj>DpQg%01^6`L~A5-+8pkq&Y70<+3&&Gs{UpG%bXL58d+)+&)G=Qu%7;!>uPT#M=_g!{cj7RIhn`w zS5UpRb?RwkndWpC{ZQ=Vw>m0aOOqIlN9-Dffih>Q6X-_e>~wrd4GtCRjQ8QB}#aA0|;XrrE^zh}oWZb_XpXf6p# zS;;J%o%W>xu9Hhzu`c++8d-LBqQMqHh zE}vy8IJK}lnL8?T1Clv1URm93MODS4AsJYDju^fa4NKNQM<7NGeV51VIMHLa@U;*x z=#Hz{;W2u}Mha%La;!yt{g)^Ec7+F|<8A`(Nnp9^HeZQg)vb&6o>b@j0Ub08;Ft!3 zRK$ko%;mT^4tl@H1#=ZBCnisTEXI($50c}2xlHq@tOOaz zuTft@zN)Shr436Te?BcgJ(JL?E;NIKqIn;tbm8Mx@x6fIAZBMB>TVi;GBdf zriQn1aKKRLA!E=8e#sAH!0!S+)la`mk0V#^e$?2JH+FLb>{{12yY(NnOuH}xFgVa9DWfKwQOD<3a%s=Wz76X2SatnDuNa=9`u^etol^7=YV z)tJbxr_Q?Sk63r;x|uL9xZjledEL-zMex_>cQCxIRIpQ@aM|Wwq$%@)puFnO!^Cd_ z*t+gO;!bw!6EqFdO2ySH$f66XfL?O&-DtapQXlP<>8@K zsbg0~$(d(U!;_{O1w)PPF1vP!<#tT8_&ClgEhZ|+H5RZMz0=M!@Qn)uNG|z zaO#(%VJnqEaV|Y*WEMY%AU{7MW}R6+-lR@RxNv@6YH>7oX0K+ThgdXJ zI(K_J@TBZxO>cTUDC3*pxG)3P}&p*&?^It88{GjlbwrBVDuFrQ2-kRpdz@q zV1xx{@?i(Sgy5QdjY9BGA}NUuH*cmL3l6XCdd+PE{!cqLTP8c>*2N4^epE+$l^uZj zw%cyyf<*G(Xz|?>*ZJs?%dH$A(d^wIzjM zq9TGn_19DdJlbEy#D76G+=d>-cIGy>(}!pI)dho&C2``x{)Q^6ot_@_EkzZJ57xJ! zqL0Dn9+h?knfZr1P|?T~D0BBMiIaT>&-2U?5DjViyQb%19uW`&>Eu5OZ|CD^(C!Ie z-k*WxJo2Y_nQhB_!{c`_mn&%KzW@J7XNJv|Cjfctel=NvQ<$&xjqtSP{`Dgte1`L1 zf1G}>R1qZe;2#|gF*vE&OVXdQ{Ts(gFjYL0AGoGr*Ztq+z+P{i3OJHM@N(8et6TAi=^7yWcyzTL1IM}bVSXw>;?Rc}q*&k3 zVpklX*;0JArFVCBo@S(d!TJLHj&ri=*rVbyLBA+S198fgfO+1=$mrIDj}%p4`t#B} zpeL!buc%$63cTIsNET>(2P3Oes>J{e0g?m;kl*_ED5u8h+z=y^{|_V+Oi`x`G2jS* ztUxFX%nWxhlU2p1y8d{+ZA}((fJ|CCtAa#_pjn*sH5<`VNl7y*?Wqd6e`yBdx|qRE z-~#xW2JcFc{fk!E>FNAD5E&#{TUiaHKY8o&_pYJunL+_%5C8Kb=>?vM{ml{1$KdB$ z$D0sB^ycv#roN<5r}zfAQua1tUg)m{6jXuj25CYncdrNkc72I=*J6L-xJtW2BA6(F zUV(y$P&-!QB;Li{z3`trL}}Hp(*sW48Kk0ft9SJMo*n-mQ+^@^p}{ZBN`N|G%$_iMjdxOU+85@{s|c``NCO1Q?yT%@1OI0Y2V`S(+5Arugs{b`l z|DSn?h44oLNnlNt^#K+qsj%}r803A+e+}}ejyxqM25|(cu3*IauRDOcsN_FAk!Yo~ zfK%i2k@5@c{-C+75`T_OLnbm)ZH?1m3y2Ytd-?VChnpY2pxpe%W>(`RC!4z5CoT|t zR%xCU`hU2452z;7t!>!R5oQ!*W)wjXnNbw!B2B5H0@9@h0tq5gBOpo*C6*BeX@V31 z0qG?aDFF;kML|J2Ap%kq5D2{lBoOlL;GCl~?>Xzd-?zT^|JVP!W??3VCr_T-&$X|; z_qDHk8(d19+yZ+3#*S^zk{X9Bww?K9VRiSmL51XV5AOa8AA%ps|Mza~ z|9mP}xbsi4)mxxxwYd8IfvFTKQL)Vkn5d$D?OgMcqEB)**x!QO zLomh9P)SKi?$~q1e{uJN@(m4cly{ z#^bE@{bHj?VoTGB(3fKs&K7|7&@rQ8m4Mq_?Kg#GMnE3Lv57VtipL$n>F}&!2nkLE zw+me;~h#q+Gtxp5*;|Xgy zQfFt{xu89c*REX@)O+-Y?2y}}I}$QEc5 zcT6qZ*4s3A>;JMOrOsWXzNwXY(n>Ir**2F=jDZCn*F0)+^)Vu} zQ?@bbjtyYRI-#0!!TDDl-0UJhCVnUWX#M<>zWg0Bc<`qKuNRIa0O_b{y!hj3x?&f{}7yz-P8DPx_XpFb_93e6a?B);VUP&`Wq)$P1L<-xLY7Ir%U0sN-$s1{e+Q3|;dI}Ts_Le0yLtFO?dVVXbJXZJ^sV(p?db`J5G_Q$8{`L!x~hgPZGM*6wg*@D09WdF9Bx9#Sq4k&&V7K-yJVU6qS>%WkO-tvMIY-2uX07IEY zZNnOLgsfam2H-06`y*9kwU5?~`^@n9p3plpe%@+ReZwbfTgFU+ozL5qW@-%{7E#%!N?t>+^JEc1p@WS3aRR-&K!i zu`y%=sv>L7{iZc&K^z;*q{RzmM zUYroX>3q$*ew$q5YmBt!4sHWYMw*^t#@|Ym*iDE&kivl^FALY@FZCsZy4DMy>%+5bW5fE}h@ zyl-oM9VO@XDigVVt*WZ(pP9F}e$?j|dsX5y7jdzs}@EdL{Up)D9b23d3G6>CCYVF@IHgV%&K zYv)9M*bZqROr^N4*GjZ4xiE_pFp~oKR8fI|YGiJ9vZ20y8@uZK{{Jl|c>3q9f_HTD zn1JROq$bfnXtqHdw1rfREB;>>9-R(@Y%tSOTx0Vgq;UkKE&(Y9JQ0E|)Q_+=$(2lo z5Niu_1aBiSN5Kps5^fRZt)jYBOVqO5Wa4G=%5-n~zr;2cR#uOXFM|Qw;<}Yx9k!~B z{wiPI0cIz*lwELx#p?uaNP=ckB<7xCTL@q-u$9D?JWFxGlQ^5|-#0=cpv)i^138y% zZR-)uZ;Ft6V^rAAk)}L6zNs@Txv#Iz!PTbB&Bc9cT~M#MyPi(wtx&s#xWUxwN2R8x zp96w}ogt8=<>h&tS(t0$QpZ|tkzsBIs>-uwd^=2UOC~A#%6=(Np1BIF-I8nqJ9OD=XKqVM)peI9w@tM-Q&7`zEp= z_8qe_nUXOsr+XuSr6}W5+czXHSHS-;!8&(TpTg#(*)sI`FBH#ky&9ahTH0;`ML~l_%QJ{DYq5V+6ER0mi9XYDmn$j&<&O~A;6+cW=6%IZb|8@hIUiWJ& z%?Y+IQ3(OxapE5b9T#4WMe~F#w$%DYkRrBgfh5&wq-` zU>2yjfyQZqMdLl$qqj#+on*VS5h9wT*X(vsS6^SSq*D4XRW4l>hig*sJ%e(N`JF;t z;!m9)l*cvSKf`=e=PdufQRj5qNkSg}7qc^RZrZmo!T+|^v)5#}6DaiGiJljz3qEZe z`UW|+Z98KG)$G4K!yNng%M<_4)vQiJJ}6Mr-#k&v@8$nt;V)Zlp9^rD+=8g<3&M_>fgRJUc}=b zz%0-f>~1B&ppflcaviEg!7bIMyneMSMR1@FS0^yp6eH64{xtD!{|o<)mB2OGUDXL3 zuqyAfF&ox45lXU*3fE$p&4+>ucjI33D{Qe$v(JIY9edR_-))gU#FjGpHGdT|b+qW} z>cW1Cw|7}TrwL@0HXo#t9~&EMrgu@WrtJ-r(E%6T5~3FgjJsaZN6rG^Fo~=1T1@*K z;FaT*E9YUube%4)H?T3o%dPad9V!JTc+(b!|CUblu{n3(Z*5D`r%rkIm(D@inNU$7 zlBBn!yw%}rkA^C0reQ~W`$f?Q*Q$Bms1BZ z+*1tGBBW9wR~HaxIt(#V+3RmCiJ{?B6crXI-x zEfeX{)Qt`rs7=*Vq$ry$*%6t-F~0E?6mr_=@D0ZvT--!lh-Bmr{2Pp zuNudLXh-whSegEA^!-I4&8(x&0Xhn%7PM<0%4&TtpN-QH?x<>6Y~FJm>v9wx2& zaq63kf8s;S)ufYa{k{Q^+kZS7hM$|@@K~;6WG3@P zY4IL{F)o~1Py@rbK2C3{-`+05vTDwHhBhjJc@?pF9?_cI6QRC;mZ9OKu*gYG@_{=| zL~LeF&3|88P~OLX4iFTYLe~Y+ZgCu{h&vGJ2y*uXSI=w4X-^{ z&ifv$vJ${CX)uLxTiGL`EYrg!+wqOGfcCA8GrL}#xL$O6Ok^=If>KAHEX6LIuX7Rk z+Dp9__qw3BaD^j4uWn(cXG-)RMVV4lhU0Wq?`d)Yc=Pn zJzf?I&Xx>0I`u=dyr11k>~dH+?rar5?a3xde;~c*ky2gN+&m*Qjss_*pA?;i=_k06 z@6a+CO|8fCYkh&PNlU+A(d(qKwfF}n#pLowi*}2}wCe6FA zzl|;{w&+J_aoDv@1!W&|_we%!!1J2OD9PtUhHy!nMNT`H?nJX{FwE|7`7T#v+eIL~ zh9zg#x{DmfZs783<$OPdWWp8%iVRNbP}(z0Z`MHHd+LufL&Nxshq^xB#Uw-<$6R?B zh$MfKz5&ziIB!cjGMx~ioX6p}VqaD=9+W`Ds=4aLN69)3#B%l#R0>Lm))NN32S~wF zzSL&M9G_FtbXOvy&Xw|ehJj<@GfdG6u1s5Hb&XEkv|^YETFIx@%NaW!h(eMEi;Y(K zu*R#WI;ZbN2WHqhS&TW<_ml;;u{&M&LoO{{BNaBMR6jn__NYfjPV7dPf8WLEN3ovf z&i&L6GlfpGPxjPZ_xQl&tKf=MwKe8yWp}#rVdSfV#;fXbknD6HUZ1{5Z%VFtJh}TE zG0oJux5`{BUI?`rRM##Nm*wGj^|^m%b4Jhl@_eJ0t2GkVka!}M%QqMMr-cjN`4!FL+*4*-baDee zm?$kRcVV$E>mQ`rDBg3?EcS*aJeD&WdgsGr4x~w4OnDsos?ARno1X*^Y$r z>K6;&p?v9%eEzeJN{pr{c{gXRIB_&-I7T&$SeP}~Lk@G+IRevTspGfRvyabyl^VHR z5;qbb$`a$v6SkV^n9^6l+b1jM?LCr}Wg&|h=dlp^bd2isq(p5@?ofLndw99IKXyzb zi2AmxjdE8`JWuXMifMlDV?IoYoM_E)O|6PIjzd}g5r^7a%P&5~yH32SZ<`3(-RgKq zK_Np~PVC6lebPIlnt0}vGUcrNkZqguj!OR1WrLMSQ|nheW4puipXMHom7iK@K(Q9Jztf`{4Y7DGJii=~CPWtobFT8DHv#z@I`1i}^+KzlT^ORxDr|3QZ$$~8FF=T@oeevY|6Wv_r zB>8Uo%|m{pcd%DyAGRv3I-Nj?o8FOK(5{Q zobAukS5z!`U`6+>+4yLV+Vx^hi+bV*X`iusfrY593&%~y9M&4Bebrw0bjNPL7GhxXkqgHXYE_H}?3Lkd9(S2wNm|Q@Mt^pGYIrRI0j15}c>XMxM(E^W)U& z5kaJ?6Nzk^;jylkSz*2>iJ#+e1@-!y`u-zNxt8DGIKm?o=D1e=Gkv%%rQ0iIqr6tG z0_ROki-DKUHysVzqno>MA7Ad=H5=h)mivKdTF{pjvDst49C?S8n(AQ1@2A7cF>9ic zD74-=#gnULRPj)0|36t)r3eYx-PxJvdk9q+yq8M`>vF#SdYQ}Ip#t+5lg*|Z@+!t8 zLT<%ul(R+pN^1n=`HP(EFvgcC$SRFaxj!}zvI8;ORoR;D9rRTRUhv!+E;WruvkP0*oiqdA; z=D5n+LpNL;EXiHYJW4cFlJ_Pntu?Y?^GB3^1>T)z61Hc^Y}nSUJa)#vNmiPoF0K zoa8-YQsYU~a7|Xu9npxOjHPRMEKf-CL0tL{aedYqacxZv?rv)toqhs|B(ByV~(`l)oDqo$m(NJ~mv zbViI5s>Yy-W41Fe216*YDf0ACN(-tg$JkrwX38a#r^bUkGK1}Xyj6Bro2C7{?WUKt z)8~ZN+WE48<>@Y32R^%7YWhu5ZZ2AE=t}Ujrv=iP#hZtclzc4P4prrd?3G#+6?(8J z?YU5iMf+j;I=IjZxl;8P^z1H5>gb({@_j%S1gS_}zM9^#%=c6S-5#fe z=qnFnk>t7d9;L9%LmUosD`9>2<4R%$%ul|pj&(&>9vnT=M<_NCITk@_iosC$gf!~j zuYUz+j;g93a$`z~fbf_N;x>Dq4 zma;Zar@5~N!d1SGxl%;Guk3TJNV%*|sZU;nEbdDWT7EP1KAW}Nl01oH;6U9PF&S^< zHSx{lR#c&FRgZIT`cObSse6iHgoC$B-=x>A8~M*^CFUt8=cWuMlFB(d6lzN240P%ij04s373SUi=SyKydc?|~`B}J@B{tu*QTAF~@4I+kK)ACW7rvPZ5rm303^{$lJG~yw1&02Y%K7HCZ zD&{E9kooIh!nWQ2LA4+)_tp~8Z}Dgi?YjHv2874*`?6z-j#TV9GCBY~J~-XAR@|GL zaSt;`>O=9j*A`&PFpM32WcnY6d`5rv@ER-{u;{@|(Pa9Fz8^LRh_2^MH=iP8PI!;} z5_VF|N5s=xd5b?HWJHH3qsB1L>;-ti!JkHf~VM4C#-4&>)8PBPhJNlLl+c@er8Y+gR)g~LA~?inh-vcM>@BA=|hRHm0S+ck;boA;Ts zWgoezb#(bce}?!TguCPOJQX4PyN?Qz`p749(^TZ^_Sw`rhsjPe?#~t%zJ6Glfe?S1 z=i|yLxwCoBV5*4|>tLf6C&4!9H1yCZ%83(UL+A3?3|mTgB5J~JC6$dfVVpOh_7M8~ zuie?$oh^-Bxh<|k%j>y1R-#rgP@}&>l{4WzU39~y^ET<%#0CYij+~v^C)Hi$3gw=h zKeBC`%B}cf43S3b!cM-n&=yiws<0fEYHXeAY|jY{Tz98-OHv>4U!1#OTR1Ev(%*DE zju72C79+CHM6}iAF3baTx2)L56bmdJ>k0`}eY`j?6Q&<4^YMMU7%zDu*;B)M7&F~D zCGWrdN3zc+&ZMWZxl@F@tIPXXj)pz*r3Q}unt~fE)7ztEWTKg;_2J?B$mTQN@Lj)f{cVQ=WPrK$N)+=1^C3L_*M;-*t{qlrhvU(yJ3TIH^Nh=Xx6Qk5tVgJ3 z;T)|ydv)Sjo@5f;6_>@IRGlVelpr$iWF-55bkhD}T=JT>5>bgYx_w>#`ZSVZvapqw@A+4MgGH#WDj_ z#B4{&n3`skb-Yu5g%R&;Z%)C84XEf7?hX2*LqvUph$>4F)Z&P_i{r0TrdU<{^oHa; z)vSjdH>h)zHGai(#@s5q*ifx1E72a`d(<&)_0ga=MSuA{jKm9@?DIZ{9jU@)G8R&X zC@Hx0b%qJ!Lz`9SLb^)3wmxIb0(JvLEc0)U9^jke;|!7cnk2Z!U(c2?StSuO&*71A zn5Ug53CR8mm!9MqybLPgB4M#-8Wm-nD319&trqs~z)oISr)*oy-5#Nop$y;hSYru} zDXqDOeiA1$dq^R|sLFgqO-&z`v4hqfR4x=pa8>-|S(a~5=wDMV?iG`Vkdcw}CA#O@ z1UDRe$wWvtW~nS|eVi)Auau+j_xbT5pU>7xC9WxlCf;YRA2Lh#8!|xojhWPVyBOEU zTqK-{a@0;Fmf4K6_+Kr>-;k&+ER8F|WKf_0KZbB^&kG-DLMdl0d{9Lt+?$@mnHZ%< z9_2YIl#fRrAWx8*^Y+a~macuLv@*P-w3$nJ@&2IzFbJ%vj1TKrdi)XWicX67o;VpJsy)Z<9e1hss^9z;h7!RDFBAMia%&Od zj_wYIE<$VxLz}}rBSs>LtgYg$mQ61Z9$bAKur%)JWKtmP zddb+u!_vALnHf8j-C9#c7?0GOd7psTq^y#bD2_FQQ%)t~1K#&qSWlo|yU-!q#JVG^eI9e3xt`iAGr55X+S35uT zF7wt6BYMY6a1_tMY4a&ai>NVqGl0RLdLy#2dv*k zx}a~jiecxw{zFS*Oys;C(V9f*=ooa2sbAhG`D4YnC=fc2AJVxSc1`naPXu|p`ZyF^c< z-$GG{MX2VJfi9h@UlA|uSdmlOTqxRaB%$!>t^CVqy^f2vpKoJ*(PWYFMww|XQ~B)M z4~%4On^&5nd^KzA#dF5HA0In;+WghUJdVlE5Q(YxnZKcup7x#$;f%=!+!YC;Qh3Kn zQWuSmSv*uoiANMW#6F#6N_U8c z2kqmqSZz(#B>fZI<89LhxvqW{H%~ z%w{I803~MAcl`s$GIiuuYee7@=h)O9#Vn;1noNP;Y+{qBmC(}Oy0k*sTqQ3QdggZR zDt~Pum(}T_WH0Z?%gAz_uIROLYSy{CAV*l@Y`U*wlx5pmV8nOaJE$>Q=RlTFv+NPl zhg&axy+6LQBIll*K!HKy5nuNSxhff&Rc%&?VC!Tc;=3%Urylj6C=Ob_8{ryr)DVu&&ZnS|*8U_zhQFiUH+HIY;0SG`s4i8G1sRQ8RrQ~(AX0}53CR85Ct#^< z9-r6ZmhId2h;Qur`hB}Vc5%Q|D^^lLqCWrW(!JWEi&<9^w9E~MSxXZI>dPQunQnLk z9Y1dG#XIwjkG!JUx?&yUOI$parP%g)*WPZw&t_!W6ea1^vrtg)!oa+81g&UP#^&Z` ziZ_b{G{}BpHpngp3K5(;h$|*USCndJ^sz$rNy=nEn08)kjhSPAwMMg{$yl}?9;B9H z57UI}{0OlHLuqg4InCqq-%>3ICy$Kf-`nnLh|pVc8pUev-CgHml$aEjUzw*n({Gw{ zy&N(7xjSr){hU*O8Uc@RB-1`l*EaorI~OnCp^(~<+cZ5g+T&niq26z5>|XA5c4RF2 z?FP?)Z<|(uQ?m#kOI{edeYpKeE5`say68O7E#~Og*TJJR zT`)HFmuLQ``qfR>P;y^KAK2>Wv*JKQ@aN>izQ9z!Aw&%trf=Z3NFE=!*4y8Yhl#O& zC)4u=S&5#4*Q{{?*zfrM`1KQ*Swiy@)B}S0$?$I>vW-j)F!Otbkpj2+W0SEkQ1ESY z2h$kNC+|J~7!)ZoQc`=JYen9bi)k`P-hNj*!)R=i*6l49Yg;4fJKA&1npqEB)mM8x1lI;lE(nkv*lN+MvBa7IZQsp;rzKXi$zny6^{c z=m0v~Q^b80FJDUQ!Xz)YW-wat=UAdT!#CNB9I&nEz?G8+pfmlnu=&RpZsy}9A5g7f zYYsU#9JbCEM~9DGh+=B-tRqjDa!JtYPQzbJV<GA>l7%NSl*gU)8YaC22LBJCcxZE5e?c8Oh~`>l>WFi5?4 zG1nL_=L<8(jejZ(pIqP;2}6w3zYdLQz)PAonmHUBbj`M8NV9c6N47wQs|miYH%j}%rq~0m zFAkGJ|G7LtXhv7MJAXs*YlSks%snmlUu;#e~pEFcL;aV(M?ql8q^NgP)Xet34 z{4YZ`UH5FLz+YQhON+Owje%@no3u)p?qW6dvjkM@R96oeo|IY5(bK8PlhYPV_p(_0 ztn>#Ledyr+rKdl*YA_lj#?!pLlLg5hq~2c5TZoa98P6~sTPK&5>c3U_DP1RDoMZxP#D9@4rE;Zf{nJN=E)(KFLMWig!T5XmspCpL8$?=|0bY< z36Z|DZ?MFS?s_2Bbi5}g-8Q?tVm5Z~ev{bJt5K?s%vWRKI4Ki&CC@*6YFqj z9r~JgUL#{PE1VijlxQSphFJ=dq3y)pxBT($5!&;_p^jG_r3tyZm@L_XTe+B$=+2V2 zyTr655KTI2{7iB+x8oZH%FQavJ{^pjXN+>~W*6A}utuQ_YHKRgLv<{46%`mM zBq<^7U5)*-vT7r>v2=fr!x#gekAqB+=CQc?Sjhki_CfoU)6Dy`F(*E$;DHqSxtM1r>^T^ zq^1bHz5AIW)@Sc0a77;!a4;572H7Rt8)xF zR+xR@4rC6Q{upv|Ga_Zn6m@CjkeMZb&l6E?P!gky>arg^`}_vr2PCEC&P$u3K(B5% zC~^Vzte0||#UAZ1cb%fUHRIb3D5$h5 z2xagUh!=L;vDlN>R+UqYlvTzQISTYSr1zTuw2LkR0u!sSG%CUlfYrpJ{cao`$#5>OYo$r0Q^n^jL`#5sE zrb54GM9`i&Rhz)S`}xN-c!jO`N!KS4&3ueaihil-_XSJy#oXHgo~sg=_tk|(R&>{doUmL< zol3+|D1<>P8^7C|5gY)!PRqD-*&Pd)@}&=fWXn?A2>21A+K)LQ;^^V-o>N+Cq!E6w zgDD91dGkdA{KIxo_-X(KA8d>iV9tQOV8(4gQ>H~G7+1IjL1_5m2?H1k-t$?GO&%z? z5MZAVF1B=j7$yYQPnd`ij>+_Wk!Rk)X!#8W*+D$)fzlIr$y_&%32;0B+b_Ty3NaM) zky}&g!5{B&OVfrt1}s{+OWyS6wZ=qDM3VULPnyfCxT|Ng47F1y4R$`Co<`1*eRqK_ z_M{PQqBSM5Bo!U+XP{)$C}YYOc8Hj9in&$50gAb{6TsUi~oBQ2XYMCNOllAwMJ7wmh=v z_rPl_MjBsx?rV!<$O@MvtgkPOqJdELF2pF!YV#0~(Hn3F0{w&$OL$mdYO_s&1(*@o z_@j%u7|ies+G~=N$EN?`{rd7rv5pBa`MZqMf!poagAb68WH|~00milev;cglL{yvP z6r)dRd{*wLA>sqfQ>M`aR<{IZos>wzmsMOTWuscQ3E&I`gazHTy0NX ziJ06R<8Zu7&^l+cLtbS$3)?8}c-c zw$E>#2P{4yg7;VpBf9pYm7Z+;HsikHaMv__&^dLrDM38wCb$ckoaT$nRA(# zJhBtz_^dI;DPGjZvsW0fbK}alapD&+iX(`YTC$S;jG3gE8ca~hURaQqc*NQB3?($?0vhjHKhACX9li)BUC$cX z(-vt#aB{;+-{$WZw$+~~6Yek6Fb%lKxUw|oSl5-A`$m&K6I?VoR?8)Q!sjS9PEF1{ zx&2k-4KR+%ZfRBOu!F-?vx0z=X^V5achbE6M78y97*8&73k5Tb3V+xgWoEsWLZxje zgL9`(vSJ%hZ}=YJC+(A5T`uUcFYJ^4)*jVH|6wHzk@-^w1q1^_1MR90>=b7xjC4ls{}VG9@>gse54F#?qKYX2v?xelZi z?cU;xiV>^!A-~#YmC07ADm+p`#tq~=x}Fz{huF>ZfV=vMc>5V5=QBh6U6z<&SDO9| zO)bpfBBN%tO?oEAm?Lh`mmAV>m^Bs%UTu`Typ8v~PJJseS2O&x7GXOt&H{iP zYumw)gj@oO53r32Gi7uO`U~FYy!sD#zc<0FJ@ADcpIJx2of-bfNptLt#~SuQ`i^<> zzlqr9A`6<95{nqlT|IQ(LxvVp*L5w9(uXM(-E#gyShJ51hyDWdp)sH`OKtzG+sQkZ%(^Mif%b*0M*pHdx| zSuxnDk%=Bt-B7(U%!L^s5tuU6{MdrjfduTui3}*fn8(6H*k=a9J}{q2_k_&|bGUYp zIh*2_=JpnQcTSc8paU*5Y%V8c!HX$W`8GAl6S_t)^SyZ|@DB}uRNIzh<4+GhhP3@B zY+v?|EiOSunirhIDCe=ps^qV9BiSQ3C@MGadjKy0fCNjr8MmJO(E-gA8-c>dDOP*noQ{Ktkg?Pz=w`F*x3R&z=0Cz5Xze!Ba zutC+NZv(5;v-z8U`ACYRuXP3Z?k_LL&rP?#<4ZJ7Rq7G9lCL94u!o!&mAj8d`8h??Ca*bOpm+QBT};$7njs zg~2CH;ycHtxXQo`kau^YEl-xfk*#PG0DI`bVZZ#jsdoAG#nx5~qFA~ge7t&7? zzAvDCNE{+*$AwRHQg1Bo(6{DRpG!CeNs0eR96^*|iCLVoJy5Q5hnbMv^a}YlFZntD zZK3IEo(5Gr5og3vrkvkVY+ZAGO|2$ij1xYnNhVrv;(DkY*Y~%a&?ZM_A8%J__itWl z(&S7J0@clM;|WVLI~3J_dRuD-72K~v|F)qOf81s{RAk6gOY43^ao}RZG_t@K6~WJ` z#G#EWEEap%pnZ6~Ryd|9&bc3asaUrCfdGRAc?AV(IzRowojZ46uL`J{0{sU1#I&qv z;8TafDHJ%j3Q74})kQwL{_@2&MM(2uWDL$lJTC5~VAF$R;B4_{J!x{Qo|MuCGqis) zPq0Y)Qcq&;@6>Sk&6Sg1>PcUUMWI{F61YiN@p}iU*%MHxfx8x{5>#ZF&PWa0%i|4u z-a6T4p?H@P2`x_%Q>BSAN+Xo_^9R^<&>ikAVS_V#@E&lY$bz2bx!qU0OjolsOs+b1 zIGjp5a!#e46kj`G9b9jQ+SodEDZm==l7qn?;h0@?{`4*Dv;!ijD=@OOr1xb{|G2xEmx z5tOMJzp6vr@fN?wtQ>9q#jgT&=*BtKjX%pt-r_{1SH>Ydc5)Loc$ESZ)2d_k$Ceui z2x)1V$M@tEY{*qJjduk%250=a5*;5Rhe|a2O`XZHE56Gl5nNhnW~N*6eJDi%fZwXy zxsb*fX}n>e2rOZW2%dP=zPp&C%{fnn3^|47k!J5XYp(8d7ZY7{f}hovW}~E`A^lrq zXC{wHK-jPpaas8-6ec|fs}fo?{R+ZN_yK}c5Fa0tg@b{tOTih=f6NGAgVhO!e~_1ftDoq8@HE}(k2LW0OyFQH zODSo3d!#_KT`Al**HLi~ns&nl&_9igK^3sCwe*?3D_mJd+QyJ`Z;?H0(-05Ff+q$B zW%|pRRxbsndzUIM%@NnB3rQ(G6@~OLbj@ZIEn7l^LvtToA;dp+X!~6aDqu`2P^jxc za)AjYLC+*2L%btr^&$iqtFJBl`Q-S(OzK(~Z8$-H;zmDCKT)c`TfyC6$d6t(^|oCT zn0UI^Q;bfmpu6>QexKA-**}US3e1IflcC~^;}K|#AM#07sT+B_8}U*3p}>XP=WoaS zxF3HnAN)%vg$YPQuL!N0PWQGvdtckC8aqt6*lc2eNhzk>xyQFRPevn7T4^9X5~*}$ z@={XX_A|d!pSgV{>iaVvU%!lGEqq&9U*vx)H2?R#mtwTeEAAOxwfVF^a?@L2J7b&T z3&v(hu@=6uuker3}K2D$O$=B=dAoR!(h+>@6Y2`6qdBgil6Pe*- z{}11|s;Q)wSacLp{Aq*%t1d+Oh7vm_DLlnjS0d?jT0F+yWUhPP(MZFBfo91;y{MPO z%2Vk%yiSbQzq3@QP9K9atK5k<#b-uE3j_-Y>2}2&)r{&NJf@j;DjebBtG!Q6ZeV3r z!yp5a_g8ND_Q^i#Mn*=x zR;JfdmyKz`Yjti;$AP)UxDUm%%8TS%?A+TYb3Mh=B|ksQ zC}}CFBh4kI`^9jvuL~_|YQ1o_O5YW2{06ISO-5EW3#uM9o3tsUnc3?-ML*VX{Ni^( z<_=swTk~ob76aVUJFa*&`qC}`Nb~L?#TB(r3yf!qoBR*qIcu?*5X*j}-rR`?NAxMr zn*zeH7SyKYrG#2f^^ln?F%jo+WTW@1`-XH@SNx{KCZbwf#-$vC~Y)5kJ>2$$uQ!^{oWW3POc%uF&4Q$L4@D|D#!G$6D_ z5#1On4^D-Hi3n%l2h=Kh_+9v+!7{6qDn>JHWup{3LK7jjKWuf0^@Uo|58H#$Ns`N2 zE$IlS*eT+!+c!6Vw_c{az0hS0CFJYZqi!N(+hb~u4ttFM1d{&^%Fb%$Hk8_N;P$oen+?WGRl;XP#O@ z>IclvYasZM?_KbtGsVMw@#w;dXC5f%1bN6OS<24#+%wD-0N)BcX?F4f%?DOH=l9=H zM={1oIXc`Vj^@c^|EguYPqJ7a#?p2R5EvWlntV>=Oo(r-?&8i!c_st zh{^!J1-`Q>?IJQ@vj*>t%?zYsJ>VbBwBsDg5VL=xFhC6E(NS%+ihTe25n7OMfQ8lI zMzipFH9Dy~Won|g9&lK8{ih8vQeTL??^v1o9kD)x!5Ah4pJDk1G|zNic!G{7z**K2 zm-r`(pEr7}QErDP`D?mbDHgu!Nh2C)Xg28(afmP%6jz}>{tBWj^@*l!(c#AHTc~;I zz&8iWH!mE^n>H=W#?~D=5TFyWC*Z8YhSGInVJk{GeQ&9eJZ|REi%RXvDVxq z+KF8z*M<8G`?79Zymnz`QMTWIO)s96e}*g$7Y6C`Ej1y!vUr}Z}T^BeyPPx48g%MM{c`H-%0OW z8M@dVy1eq17dtk+I{`(^F@0zF=%rSS9sj)u)u;yIHGiaaHhv*elO21mR~L@;B=qLj zhD^`*+OhXsG%d9HWolgvBlaj~DZOGf)(w>QrKah%*5EnBQ;Z90G6cd(IT{;}o8+z0 z^5qB0Jxx~}+WBMc*Lz#wfM>puwP5Z79-6(&Xmj3-+VtX}rx1!3ABtO{+O2A-_E^_h zXOt_dMfrQL3kg|BCyBgX$JeF)>}&OT*d1Gk`t=QzS#t%BY91EDJ*0?fM!jE=)%@j^ zTlMvRi?rj!$#O51dxu-zzC9jpqqOu^3WjT%l(|GhM$BeB*QW}nl#}>&Y?ti@2q${juXdyXvovNlDX!05zwGP`|b2whL-!1srQG8TA>| z8rnezv;_UfR{0_(%d$Lg2!IH-k@G->x3PWv{I0sn*=p20S$4ndRP7>qMs&tNQVicu zaY$9pZl?O6oYAIHgG!C@@EdLiU%B}qx*6%y=3aHmPp5>EoNCf@``l`3ma(1>-d|?o zs9Xd($-G;Ie}WWW{0QGMI+_s}6yyPh1_Wfmv|R((8fZs>h5i-uo~E?1wi~@3c=GCO zQN9)5JjH+8G=02{h1fYZjF_wcNV$ZNm>})GVOx)KJBYzzk(yCI&C?`d0i6k;ZbuhY zFW%d~e}73m20TML7uPvy5wt|ILgZex4%E<@8eS@8NP*?n0obm$M3g5d5H1&1unSB7 zWtofG#_TQiuPC`0uDP72FQszLfBgKGjpCZj?BoirHa6Ds<$N?DWR~gn@2)Cq8Ok&? z?AZ92KbVNKfE&)>`fAdBf~a=6^N@SMoC~40+F-Sy%8Iuqj6!eqrQt(x$pZov@cGr~ zfT;EmT3E3j%#dP=_aN`AF55Vb{JwgYU6L733cwpiS4U?8tOtqilZKw3lfkzOU@}U; zAid-Do^%d)EC78j`=EBgFF=Ye!uQYE1-S(Q{|5_iyV6{}><4`6DbdZgAfCY11dvlM zR5CxjgS5lofse#OI6~hHL?BO3ZZB>KbI|1mL@gqpPPN-cm4jLkpskug#uq46r!W2X z!*<{*faaEMX2pOizCkOKBK-ksuQD>ac4sfIypnUzEPi|{IEFH-nB|5-B#-BIO}?i# z?yTMGkRzRM)yv>;FZ4w+igFppsx-wR#f9w&rFAD`c+M7eD`GS4Iz(Dnv6-JT9P{q5 zaumkjjDy)teTIk_(~o%{7| z8@Fw@Q)W^EKWxu*)PiVyPy^h=`ezoy4(@>F(%gFY z(21c{@Eem)YSnGLH^I@i1aX--AWoHgS?&yh_yk)o*8xauAaosUe5xGpSG1(4A3pMa zuVBoaI&8A+fugvAZ59Ma|H$8JXo8wA7K&AC{0%DlTTt)1OO;IMs!Fw+n!1IIvW6yK zkF~zrgDDEBHxT+$PD}TQZmWgtUXCO-r_~qvVvg7m#gB!N>-&(Y;so&=Uax(})))-k zqVD`(e-H@16ru`og+dj~sWY!Z^VJwiF|F9aV+_<=mYXWve0(tiV4&fDyo_4G?mh6w z-LJ97OR~8{W`YBQ@X(0}Q!Mn~G15nIi5qZp$IeC%Ci+@%akb(1O73<@7H~|{>+U)0 zujlxPlA5YvvcOWpB-{Cp-vIqJ@(nS>Du;50ge#1=&A=AxyQ~ddTdE7^s@J)gU_9`L zdBCEurV*-AIX!1Dr8x2q&vIZ%BH-v>kAo<=;`ofW+h%GHrS9F56$SVj>;f$BzNnBu z^tLS3j_VGq((0^QKN+}6G!Fjc6xTiJDJ}c?G0TQ(Z|nnR)VS1g_-lG{vr6wxfrEul z_6j?H`;j{lj`^P-?=mphP5$J*v4NMz(H~KgGNTr}St2$A+tA2@NRh9Bur0ZI#;wfCwa?%bE02-&k{$x@CMq9PO_`#PrVhC!<&yD`~C!i*)$ zScWmb=XyFkY*)U42Xj%@ zQ)9?Z#O1}0^1FIWQN80$yimkA;)7Iso5T_6aKK8Hbm234L+kvNIE3P6vzFvDM!(!y zp^efFb=W_>z>k?bo*dlJQTM3!dT=hU7%_@2Be0M+5 zg;!6e3^ne|iAf+R^c5xqqE;BeEjtHCD>yB50L?>0Soq>i;-9_DTjWz=!{*HMd|~v4 zAaI^zq3@Gd7ON}Y3PaXavBMe?6)!ExQ0lOv!n{(#kS)DG^$jyC>DshBUXpgb!CVew zj}Z!qitzk_2y)ps(cV__5GU~=YP7o z4;-rB{rx(-!3o&^@yGQ*BFST81vL~RpHC=fCTxnz-8|TU2H8T3_z*`v6BMuzBLc|+ zE)QM=vu{zEbSDn{!KnL!VeDxbpDlJQ>T+afV*-x|w-f^AeK+3sTLr>I)b&$3yLAGB zpcG5S!Lu;mmV5BZHilai+`Tnq@L|VB7U;O0{#ihECm2HpbbQ>?bc!ohqbXn5yEsFR zz&v}~Be5+|A~SOjxwFN<+(ZVOHs|4yT(sy6`3?+w9@{=yHvbcGYIbp{QW!gCo4ttZ zt?>DM+jtoS2hEUWY73le>k|Ms0bhJzGo-`dIL=}l?ucsuqxc9v{}wL{TBSOt>RT9q z>~Bd^kI8>I4*`#Umi~kEESMRAhff=0m{oNFoF-#J(CyIkbqoMr+a>YLs?&fHhT0xX z0u~;7VkQctG4OZ36K5NGUO@Jd15{%XP2PR|4Cg5muPMrL#a<~(KLSeC1iLF^sq#)( z2DKJ0f@2pXF3{Skw>}PeelChG5CT6T|K&*JnIt$#nc$FBGzFJDpM;L69yix6UWrPTYB0bUfQOm)gVW?Yfv z+pmIctFS8)RE6K6NSXpZ!3a~>TTJuGvAo;Scdu#qGutdrc4wry*95;vFs?*`7t%3&zFI#zK_82rXK z-{5kHk3$bXWwBYz-gQAQ_K`w{lr_5feNjR76}ymKqU$}e>aF@vR3gR4J~&6dPGR4n zyy{Mlu5l;l@9?Qta$PDcHNLw;Azg*(O;LRxU&bJ5wp$fnb@>d@l(?IZhn{xezE*r@ ziixi(F&0&Ha3A54i@hgo+zpfnUK8uzc_yr`xbk#|(?X%Y{n!#6Kj*6XZHB{L`BlS$xQ>MRveD(3d)m_qBGlI**KRa~@eP zDj+Fy@!1L=t(V_!U#)ASV}q^0daN)x3XMOoFU!AZB?WfdXjd-eglf7GylSl+Joh4b zjmtDz_5UyJwi$bJAAkfQ-7W7)Utt0x2(gx7PLV6;?G>m=Km=589ZBUFkPe4(4X!5- zXKo!iQi7&I|0AQdc1McVb&z6sL-|Pve|A<2y8>>=h12F{Gc%kFBjGupvW^Sg7a)>{ zi0J2y5M+fU3&<|t7p{x8FYDZQ$IfO{KFna=&h4o=DrT>^$5d%_Cy@}g_?V&t@fM?~ zG(YD1%u-g+hmVG*(a)hgjOi=00Xb=3aA4%*H?#;zz$sGONs+pR&N7}=n@ReQib=R% z^h?G$++2*KJz84|sKasXM7yFwwr&$hAZQgbpNeGq3ETXv6w&xosNG6DRBvnR8-YZv zK*V4YKYVxyCd6ax!><67Iw4zeWLEy%mxF}uV8)}Zrr7tLrPW(9ib2eCO4d5`tNk9w zLaA{z_UDoMP~x1&Wf85Q-h2KRW{HKb`|_-Fk_Lw@2v;4E(yG3Kj7_lVQgdyk{=8k5 zu(2x_%A#~~_+peWzS+xw-(C;bj*sYR+ZW!5_>M2Fm2CZkrx`y^dAAbOL1G_1EG7Sh zZWp<3&f`&aGZ3`{LJX+2)b|5(pjkpT2nCipHvOt%`?|V(1b_#I8ty*4Sl+W@8lbp8 z;0m64MTV;~%3Ay9jnH8j_l$cJydLsEC@l)?-hJcXaj*T*dcS@^d$&?s-?x%eafGjX z`@NGXE1w~I0Fxyh{z#)~T~{#(jv{!IR+zjK0DMevDhU|q*vM7a{AR#9tb%P*Vx}Tl}tiDg5c-M>lg#P?LUuc@2z5V#4n>mUA z@;k%OU0aw+^Ku}8g6yddh!i@4Q80i9)BRdkb$NIa!Ezti41NNRf(Zs%N)mDPP-K0I zrlknzG7>W_aISEyV8G?BT$V$v?&};ozYCEQIr2}Qy$kB(9&77j>us7XD!{cEy_Mgn z0FyGHQHj?aPVg6dDr_3ZTufTgV6~epzDZHxr=N1R@KtoNlRpO;(!V$H9Am_l(i!`3M2J3<(Pg;)a9+6W}VrIeJk^`S(L<>E)NNhmC|%keAerB508Po zmIubRQ_ab|EnpK1)Y%Gu-A8C|31?K+=TH9hgIKxn;X^d$V8Ge(oOyEf+rduL-i&MR z=VGv8BcHl`k#f_S7v>9F(rlB{+MyG10;BPK?|9}|0}@$ZZalmu)V~{M@9lGWd_~= zh(U^XM~GMaH14v<_Qsn_YT>?iF)ZY@u zZ4g6WYO^-h*Qzhsz`{(P?QfEolUaB;Atsl4K={&1XKruB<=?kaPIx41&RwY15>`7y zD3>5~sk`cF$qM=EyVfzPLKDVoJmMEUj@g@(FJDSmJ|^@vrx3Pi#0Tg>CnGmQe| zkoEYBnnN19;;ZCSoHBAYkhzIZq#pDD=deG)3gUKg4L!|q;od!8>H4oA6a0yojx@$0%kW7v%q`}lEN zomf?FSy|cG7r90V;}SBEPzy;4pjyCO;{sJ@SZv5y)A3QF@fl}XaYnZ6lk0l#cc@2f z_0&1MB2$~6uNaZK{>nMN4B^J<4el(#0sc6)5?l}ArNla zg|wVg^&$I>ntaCPL2$h9hT2Y&<(bKaT;hhBdKkjB@fIxGW6*8qX=Ebrxo?ix=c!=g z`Ys!{!Bxbf*h${=sfY?;An>Q01Nh;MtH$ ze#BV_)L{sTotwKIbP(|T#wO&O>okkLYreSwoj0D{zkA5Ik`q(E>xB1t)8dOg(w=6a1LB5KqnVNJPWykq zwI?gG*x;^x2}?C$K&dFg+OvrFsG6cg1TI;ew{6|>1GBo;Kw0;$`K^7^dp>O1e9bbu4p0aIb z+5#@Q>(8B?w(6MFENQEDw*I_}#;zhNn{rZ<&EJKq)g8o~wmFyJK@LPc7t9>f|MYgL z=~<9t2mIBG#bWb&Ygp`0Ke$2Sjqmb5dMYATRk7&eukge@5Y&;i&50}|XgK?gzB+q5 zdVpNAtQ!=4mwvL2=ot{hBq8jPR$|lFG(>%jo5Jt}A$K$1(RXOM$K;pNP2+vbTl}W3 zB@(3?XaSTr6jWP?lb-{D)gFV2m0B(5;wID#*L^ML8b`loQ=kfm9D-csC-laO_ehC^ z(NlxA6|!OuHjuvC(KiEqFHr79@FM+@kG|nn#+~}zx%Fv|ohH3Wj%o2oYlJJRhy4rl z9_ipQ#Xt!$&BGpp;d!w9cYiPLdFPn8c$K(sSAQL)T|z=eBDndc)^D#u2nHx32}K}v zQ|AX8VBH?{fLa&7*ca|CEzVKXHh7H{xU8^@?w6@l^EXyZyWiEYy|6O>G+_W^!?gAB zsh2|@g3_DH?8T*jS~mAcF1EI3+jE3x#|1UroG$GYJyb!f_SLupLq%__M2hpQQ0fuM zyt*l-D7>DYERK?UWFBYda%w}`>BX(`;sxPW9n)qO8-foSTsLj(9+a(=+;Qifn={u~ zCesFX;T^RlL0uE->p!8g&&HQRTA>phACxM`A zucKaXN?-9c?`O(hFo+6z=lJps;l-1714(O?dfmY?S8d%BnVBPfGEHMf;mSFt`m;`4 zE$S^sslI?!k)5FYNJip1@Mx5Mn&i z=lne*D@Q15FeiccCmXA~*cb>(%~`bdaWb-0eJqhMzH?$+3d%HD`fU!9M2AFC)^|hs z&_BbYE%cJeC!ssX%*xH%uT)*f3BLE91wN1nYueh~tI23P6C>QOT}|gM#J6waD9n3$ znqzB<3CakYbl%AJ5T8pjujT{gtcVenMBm@9YG08bi65ZsY91etyo>zYk$qU7^}JXQ{m&? zo))-h1j_Vm&yDw&twV}Vnx2V05|V5>8QKm-g9vd$ep04ysF>3wZ;Q?`Nd@;u#Drs` z*}FU*@J@+TasE*jEptJoehyFHRA}nrfT|pCex5bI0A%f34T&!`*iQ{Jw z!C6(gc8PI;9=Ib*6kYWsxHA{dlC{)xE-1)ACY8}zHg1#bODIl?mwD=^tC5j(#jb`D zqz*ij7Pk36u(M8jnBIloPGbz~b|h)RH!%9B{O2zQ4tpalQgL>u(1AV@g8CeSwES_% zYu1aUFp43+e8Ks~?JXX9TOhY5K4R-cSe?jTLs7g@%RPnE)6PaOdu1>)MEkcKIp>)U>vjs zpwDHUa}0!mPyyssg~&Q#xOS#OV*jysK}DQj;H27iHHpgQ`-SW3TJAT|Sn~6(t9wFKOdo|G*4}y{=~$yffnJ zhmNs#i^bO4RZ8a6QBIgUnHfI#GbGZ;Hda8jm80ah^C-!@cD3B7j zwTF3UjJ7_Savf!sshH(rSaW0^XHltIh`t^RBQMk!$`Evl@62t5xb)?7nW*lNlXZHW zuhj;OR38W$uWa9?oMduAuinYh$~IV|=mke#aVa6~!0!k9*ZxkMz5ea58^KrO=|O+P zETL;6R^yrCixw{7>k-p?7Y}@2&QR3YIDv^qgi{I?O)nWajGfmZSNJ zEN_kLo;OK(;-5V*-b%z+qC4KhAQWQ{4OMIUt?onrh2LHXNyu6rpyQ98{`nlErVwu| zMdHb99n}p8f}xe7!Q-ZBEVZ$ly*h;Ep+zzAQ?&4&?g+^}B_qhl)Y#`l7%8O0QG1x_ z!7Eti6%HED98H}zHX>#(?4|8l*FLJAG21i0q8s2dc9+6~rcF}1WgACcAHPYN7>k2; zh;mVb?%Z8?=dT}u-3v|I(H(q{xI2H&BNSZ0RPrb_-*obwfApNp|8hHGvFG~&suH{g zwwRY*J{_ifSoUfo7!XE_*Rp`mDF4%mgsqyYRwcamuI}ld1nRk|6)s_+s>Sk)!S=acCX~A2YFc&F!LYMh7>S}5xuBfRM3Z=$mTgj+%Cqw2W?ABM^^%8pvL|#;?3f^z zKe2lkR5H3diyh3zOqYr7-yhDcY@6*rxs>RPAo**GNCLCDX!x1pG9 z>$S`_yTDeNOrI`@EA)#`MAEl!A5WQ#A#{V9VTox3?_!gq^X)++7tTI+g^*-cm_uuX z*#Om@|8h3qQ|&!7=g=bw+2`tWfH&qRqDIO-P{YyEn=ygPD$DF_mhwRBDn^V`J7uQ! z$UXJF$!$VU>ATnw9%9Pf^2Rk=r1nm4`G+=wav_y9vc)JiKz%Y{`Ba~*|LEsu<>7p` zamC}t8MH)U5>1g`-1lR4bbee1hnnJ*onddB1U4&qq_;2Ew zT;vd;oK{}o#u=NJSEdHv;N2w1!eZ|=lgV`QsF6g5O}B~u6 zTv+I3z=rj7c5vIa(w~{Fc)0WANNthGQ9E^vkWAIn)H?O}vCmRM7(J`YXUp4TKFKI- z{j~@iPi!fwi_KAY(bY{lnHg42%o&g|@uQ_=wrZ27_lvY066yIYeu4YvFSr_{tXTfK zPrjee*me0-0{I=y)I#7y)WEq5yR&w^>3Gh;spYePnqAc5X$znQ#|z~|KE<^5ElT;U zq)E*Z`Gr;E-1`Q#Mr-?)B{a6Ha|H3wLfYTk#|DgRQB-aYQyPNTdq00kB~|Tft!}x~ zOQ+L{dW{#$KSa!p-f!e;YNVs?j*tQt4&!G?vOX>!RjSBy{?mcPbiYKx;i}n2N`Y^x zc@S`FEb>Ga4O2BA2v*iJs~0s0;g(}p26?#J>zosbTC;86FK(dkDVNrVlJb-;DxntR z^9O45&AZW;u`-@#>7O56(YFt7Y1%RR5lc#3evkI^?qgDI88B@esgDVGq9Ah;>$B88 z%tz!|mIw;~LntQyYp&XP^`g+0N0TD~3uGzEI8p4PR8kx;cT&CRm6CyH=f zWhFkGYcV>(TgA?Ek~nws2!#+ZWhEzV)D~vrsYq)nm!XXZqzw0(wLRmRQF(Ost7UU_ zxKzIE$UGaRB4t;D^KgCq%ea5$0S{8FtVB+9>bV4mj9d}cuy>P%Z89F3C_eMbg>dVP zO04B@+NQ}jlZ$04QkRBtL#%ow57g{N-i^+?Q-@My%6QGo>&5khx_DaVHYlX16q~Yd zj%ka1)Ebc*?qo)IitBA|ne~oed~S++qT{$Sn?dR5qw+bPbTOi+v$@;VMi&~SbTLt? zUq<)R<^tN|YB+p`J5#6>dL5cYRFnLw%3B$ZrLd|iuUz(2;-fYceSQ!(9j4IMC5BH^ zlu9cUR^8B9YJ=rom>ujik7mO6Qhy0^$h|a7tF-RJXOdAIb`j?4W_!iVzA2!eu4&LW5OX5(R~D)`<)jquI=8_WsH}UuLnlYY z=r<3`=uM7vk}Sw9YC*n~4vXbK=O*_@`#Pw(#hL3xrNM??+y;-N4&D<@vd+Jd z=3xqFSRv!)m8hZ)=PU`i9Fu)nWhc?x#k(c)$g@|%N3Yt)WZ(UrB(*X$EOD9YNa&MG z+7+r>Qlava{EofPM-96|fI+s`1-Ju8af^4~1>Zg1Pbo=|-3YC$`Yjiul*RM?QROAt8NjNYBwisND(dDh6?ma;*^csP8t z98f^ca`TT9d?!x$k-Pc`&t^pGuha?VU0rwU!4dUX-+4a#R1im(+*?cIxs2f|`s0<)!Km4Hqe3!%q{pI<<#OB#3UJc0IUS~=$7PnD zGyBXGMaJSaOMft>>~Cijw(7_%W%qgyE%{88O_IuBmV#p@&*X49!z7M7Jat1Rz+kL;p-2s=?GP1*fnQ4!(mWT`1Ey15U8W3e(W)j<5`l*@J zb=Sm6Y7hm}fhH!pj4`G^_wFq{*D?-sPXZx3U?;r3=k|5yjcjykyM28o7wUXIE=Kx{ zM%fEGR^~p^6C;b!$LYC~+$WNGIK9nPEKXo1tWDh}tI~+{ehzBRVU^jJgZ#4-4!N(3 z9~es2^*mL%Tg*zH&FO3BS#IoWzkgUozOZ7UMJQHiLOZ87Ldws~hTNk2&|9-u2^{K2*xlyXWimKIz2D>u6iF;G=gNS`N`YpQ~3~RngKPy=}O`wzA7W zku3hyrC?63Or!SEygMbRK*lsCx%s9z&O4>@Q)2tGE9sP$V5J`Fp@`36;o)i#upWum z8s?0i+>J1@{h(Xkp^fj=PwCZ>B4u|u<``phbg(&S=S;M7)~;ZZyR4lU*11^5PDR)C z@NtnkPlH~HsvLFEqIGh)VY1tGv2VGZI6Jh#)PsI`?)LI6s}A<=VhxULK8$RD+AtfI zY{svffAv~TLTML31w(!#2fT_dR2rIo3bA;4XHgFBH;YE6Sv@sgrLCqKMI;Xb2Md8q z#U(cLDtIcp&{zx+W(p0kC2e*$Lr@A@b|HHwNSdu+IN1xg{4xj)gsRIIOR%f z@?ixqeQ6#q?=wl{jOsm$&U@{eeK>oJzK1r3rR&jp6&8J|_(ZXHWeeBP3v+QYeLGO1 ziKT}e)oQokDZK{xT8``nSuYIz1c;bMyuHL zp3Exi5RyvNtGJ1z71e)gYSa?kaF^wDG!%Jo;+D=Gg)TuA)Cv+xbW~TJ)V;v#wyUmK zpL>7Hsponw7tlnUR9=vyadCEvZ=v7hdM@c>c^jDLY$qq`JIx+!4d*?PKbFi?5^hU; z$?V==4WIu~ItRta8|`G=<*A5twu$$_EFyKf9^_0WDM!N-qW0uB2OU3XH#m6)nMN4& zrjIY}u@$W)URsiV?~0ccY1Qh?4ElgHe%xW=eKf3S;dh)NZ?@=%!#vk zGI>+5`zZ;E!pv!ws~p5imX8tT0_!q~ZcGAW9DdtQ=B#a-DR@|-xq9ftZ` z0y(bZ`RthJz0n!B1TbCM_47PUDTBx#d$_aYN=C7Pd6c<`g~;3c7ThiUH*_4?xd;cVk!61u)@LRs#lafC^z4E=K3EfF&%Jbe#MaITB#i9$Z zWYz4dv1kqzJBb}mq-PFU;UztkZP+XcDXane@;OmaJ-a&by+p+oZ!T{e&6vF6PhQt1 z=p6ycVk-k!a*6-cai8g08qWDcM1Ygpw)l|c=3mEGUhz{#f>_DB5|<0*DUbLmpCXrv z4wt6d_t7WaN5*qxT#AJ2I%a=0OLj@|oaoE`Y!5-qvVpm$Sr5HUjGRQfYg+@6mh&xr zU3KhZ+#%aYNk>QkX`3{vJe6bYH`qBZKK37vIWpV!Fk^ti>i#MIgn4N`Y3ZjlN7s_8 zhE;QMzU~&bhR*aVy3x&ybjqBWx{LEW@$Yx~yhta-HcW16KaD5ALz|K!MozOqx5Z)d z>>>s<73;U@`Op{CeWt>W`>b?lzDd|e%upyYR~*hL{4hpRvms1wZC8&=Xls=FHB%*f zcoq{dZ$q8v<0P88>3(dj%C2wEZ7)%1Vvb3>O!%~CX#DP_nGt0|B->YhKXXRFOZA664wPg(P?3Cp1qOV zH4?x2CvulpWq*myA>CjuoD`}`ZTy|PiC>{PPLAwZXUWbXV&`{NS=}+~KEC_OxB!}d zuh>a|^h`qpPnlCPuQWrc=(ahMI)i6o{praviUvhwVw?O_dPBR=v~tO%n!~cY@r!=( zK8sH)>C+rgBJsexESIKhqG7B+AM;eOhKul0Yoh51LEme@(fm%TPp-jwEXAk)ywbLt zy-ka)F&?Ao9r^N{U(}Yv*u6+nvt{x3D}?l@y{vcblud`iCt7wTen@>Wl-zD`($RQ_ zSMbDBN&jh8$M9G|f>_=BALd<`Psz>)m{|BvyU4994Eikhr|yuSd-8_oL$1b4i27zk z#}{9vzM1dKxV8WDI^5E)GDG2yM5(A0`6GcZxzI)Nbn_6| zu3bh=1=vw~t=P#a%x^{}tU?4$CvMa$Sr-;?Dx80Cq9f1|!?)^zz*^-*}bK^Xuru)MbDd)yf zcbikD-2T5azbU@tplCaEKb)ZR9GC1inMfRMMYTOOTikG%y`z-m8Xebe@1B~g`{1pb zIbTW&I|{UIRMgT;ckq3&s9ldMth1d``#se$1Qp z*`q9JUvn$v+9}N@7}PN|xo-n#J0y7{-vah3%cEQX7ebm<5m)k&6~$nG6`JGWI3 z#dOhFO5v&Bczzz>gM-h{bfP$~u_7f>r7C68pX`nIw=<0C)LqsoaCw~+ zaZI1z^MOe*r;T^RZC}pgUPC{_y7*K65_#zMjzO`}5220ZU{-UrsTyGwi`H$}#OC(| zA>36fWt+P^^~(vnV)Klr-*C6z5(|cOq}G|HK;aLdR8;!S{@EKJTKHk*3m_)SVW$qhpVxTj4m&!`)G?5-&J&NJcA4z|>yre?%H-&ZfrL*6>N=(UB+T-wq;zCsb6P4ejF!ySHshJ9Fa|VpHvm zRX4;HUn2MZ>bRZPe)Kv#w`r}Y)U@za@o07%4=P^IXJ}-}q~h1AcGp|kna?#$3&)f2 zJ`Q~^O;AS#oXkvD@Cm{hsUoa<4SXj{d#P9Gs$x{&m!i5E8oVNwAa!L1+@)^qz3TDdAOJgn0Hd zEe(O(k8Ne@>+?AYK4bnYF;_RCRRtZJwY|*3 zX0W5qmGr!Zy>ro()XOKBnG8lE|_+kS4CGfZbC>kY?}|6bp?-( z@5>&!7DNpTSmblWdFqV5S2A}{b$P0DjlY!wb5; za{)DhL=n+hDEK>Nh>Isv ztC?7$^sl(c$;jua%=Kn4OS0O%OxG|eu`Q5vZV=@tx*)CHjLXZh(IhR;TGgk;8E_jH z)u&$w+rE3KclJnvnw_1?gdg7bldKGNqQaUz*r4hPURi4I12g=S;78kHjnxR@GIk=O zBLlZ1ab879WGQppl(p?n^1CHxa$EW2D4|T>(|h5~Bv()B^Do!)9{Z~Y%q**F1PF8& znV72nmf?oQKOu%!qz`L}(geD#jCHLdmD@3`hsl2^g{LSB7|1&EspfP3QNAfdAg4m9 z>kW5HrOE^`#gaq3-&A*>b;*zJM|*T>y5V@fW+GZwU5Ul1H@7*;Eu38Ba!mV~_v!jF zH<=D2Y-*u#oYW3Gx3r|!1(TOZAL4u_?J~)>#w*pglvPy3^#uh++Af;==w)bXkjF#s zS9ov~In6v}3N@F|tV-TB8QWb0_ossoK4&VSY$rbg_1eIfHHmtcfQm&Xt_Z?~sYg-yVx!nAPC#z>1Vvnh2( z^oxzdZ?>cFj$~oE+J*v_GGu7&M|)RNe!K!%YTZGR?hQ2Zv`gtzkUQ3y`K7nOW2y= z*ZRA*Nkad@Fd5R>+XHR)$!woaL_Z#yiE;U0$QevJE9HN85GUxP+s3lT_X9~#&9T<@h;SCQ8A1BFDlVuand*gQ|?kN zjt#W{Iyf<3*^B?sR-{~bl9_1e7%<|`weaX>(P`M)mjO7w^hx?h3vzvyTWrH}dwHWP zmt@!_cZZcN+pKHG9)9y8TI^^}YN9}EGk4B~Ps`9GZ#^!ZvArq>M`PA6-kU=l2QOw=sb2_^* zxsxLzhxjZ5m#ywEHULjZdsykL6&J{pKa&4_6$H(*W(Mw66uJU9EDqSZ5K_uXw`r|H`C ztDt@=cErwZX@)_qir&ghBEJf~EKi-r0;&N+timr!zaVM`&_DN`M0(})t4~li?Fib< zL6Xul=`R&C?6k$JXYdc?w=(@YeTyKsJ32bXzQh6^9xeuZnDXjRhPk>SS7Vq9i0NZ0 zBf?y+TG|;J3xH^00+iwt4-@R5-~tH%jQ0T(qP(X8M0swUDj;o&*StyP0C^v97umy@ z_}jJ%?A{9EF8C%Y#~)qApa_0(?ER4HpT6;cv5u*Oxmt#NNq)=qQ@{j5-aD2FWPF#z z8R9^{GuQ@Uk~246rXVvw9!MbMXEofd)zyJJc;p|~Sr*9d1?7dMDc5Hcu4%PacfJpV zZSE8&lo-sTkuHOn7A8z#{?KQx!)A+@-$up_LH_iI51U|I&3&{bjWKwf8x{1~2cN*D z%%h)UKyrS_0JVcIf{>+w_-omZ-UL0f}gsKJzw4jm?wK&fnkQKqpZq3qB_ zCQ-aFCp-2t^-s{JfXW#*9tcU~5_5o(@n)5DQgP%b^xQkSZx1Eo-&1-2c&h%>p@KDU z^KVWSJRv^wz9o1Hz6(YoYMw>#mW_H+b}BW$V@wc0_Z_Cd8|9aB0hH?Gf5hmQnr8qO zA(|8YWMJpuF?$Dx-*@fWmNCNIs;{$qwEua~*AZs7MgL>p=9i=ITIJV~C?&W)#cH9OjA6L2urOO!S6x`t z(K=KYQvi?vE90xDByLfMH(-MhK7kh(=x{zyu_G**YsBZs1CG7+mroF6N9#fPLuX}( zJ;_Z0fLm<7bO{k*q9&sQQFNq}{#Br(1EvM+%AcU15!YC}k$-S?3JK`(Aa{Wgy2^w0 z>p(&TFc{;#1$_J9&xb+IjMgNVi?`qi!s&c@&-pDo=w-jja~fx0UJ$hEYGS|86d6_s zF24)s@wg}J8N?PoRj>tsoPj62byUEb30s-6vUmyxzCjKPGD<{?iiiRWtAHf1?*>fy z^Y#p&5R$!ZU?LCR4NmP}&Y+8KN8o?1sgX&t z-vAe)%nV`0tlR+V3f2Up7J&%;H-j~5gY6K2S^{BcJDC8YUrQ15E}5&f8eo902=Y>Jr(`-#{=NHbZX57_(`E()q%nk&kZ7l6Y!< z)i?}716WogMEm92bQ-MM>4Kp(U@`nsQv!H4S3@S7|bqsIkM}=kTwI?1#`Oa zu!1>T6;`g!X{R(l@xJ(-a|Dbpu%$4|?NkEh6uE~CL=@wcfU$#fjK;d1sSiZcIKXB9 zvK^Muz|RBScZUN)`v7&`s{7x)6@>cW7vCpXp89zs7*v=CMq@z@hz2YF3{y8Z3jTg46?$ptozFn^51PJQ!y0I67S8w=CHe_?I7{#L&Z^g>JW z6sh;~elTgMnNi@H3&b*wr3S0!_spLJ69{oy zoSB_1Y!Qb|m<$8(ABeGH!R~@%-gg7U-q(h`8Hh0iWPfzK;%k@3KvV#x>D9iBl^Y<@ z{2N2y`?rQbErJ(JJTQdeeN=ZMcY>r9@B*gEKjB1|4k`N3ZabAgIGc>J+l$vlCOws~ z;t0y;|K9}UqVvgy^zQN>E*N3-R8q4)4-X^mmyAC=&Oh6~wByBjEmqcf;oy z$GFA?{31LKqXdO;%UIZ>r=yK9cDyt)!QDliMPlARO2y>EFZa~<{-~=>m(bxcX z1Xe_?+<g8S&<;R0}xEDKWM{vpDdN`q;uF8_;+ryV!KF3V=X64M>2M8-O*l zE6Vo4gLj5^wXkK^32=kBe+_;Oy~XR7>|-y#@eaVFm*$o4{PNCn&EML-MG5`9T=$;fq~RY2njFn^}il!riuYHs19U_5+vu%@Ze+gXzL z1Hx$F0U+)gvM_TLTs072Lly=M^DdAiw10Ke!{62TJx*VNOt3}^2TQA>BY11!d%^rM zVrT%az!e8^|8AwPDG=x=^aUwCqi~OJPcA_|S8uI{2=*B$ClO#F&Ik{cUM*Q z*U<6%!BmGF0ym)j^5sk5!d@2bWBoR&+cN#^J&CW}iPDH)lH=LxWfeoXCMt5X$|ot0 z@H`Jne@h6DrkwMq^(D1D7%L>PU;ix$2(f?=u ze)vCkiPdXBDJ-kuG$N@743sq}|HD=__cwdVryyVj&`nBn)2mmng)8<0(?97|c8P!UL0|PMCn1uz{_-1m zs>Mnz8Ve+X3@eF{zGkkWv-X4VcDtg6rsmEsAYEAHMWU<8kmmk{?FB|1k8T9ES2jVA z;VA()0_)RaRhSs-5R#QsPSaQ*h6bYtConyDJ;VXvBq2P|WyBB|Lr6*Luj6BKmNtg{F*QM7y0eiVR&O>UT{vp%F7oG9|TD2 zPQa51gzT=FddGMY&$hO6K(O)xxCMkmQEKqgcR(v#6R_kETL6{Su?s!}+B^o#HSS-Z*><(Q zpJ}@`UIP$IK}YJ!jSt1JL@W~!Fr)7I5aEG|&(bGRT2>=QfE~ovrw>RYbsAucK|Tk> z4Mfn~j2KC9x!izs8HxJ50WWhLo{@irE=nD;d_++9G@pd3nlA{EenvQQScD^|sY&|q z%(38|%2wW98r+e`- zDc`@K$(L({Kmn2lD9@l|bD*DKy4j1u!}yu2EL1{ww;A|UC^3P9cNXB-xyq(kMGIxL zegr5H1m#c~Kt!UWO(%b=p7#Sj6O9F)Z@2~*_D!=GZva#G^Tv?mTfi+^s)TQa)cCd| zNZx=FP33^~2O#cQrJ=$l{Xs*8%bwACfk|wG88M1Mc>8AgRtbbrvG;jz|M!^^8QvEI zp$erhxGK5>#y9wHSn6Z44;Bf+)*-~XQ&>R$v`UnyJG1}qfkBV;CI7Mh^aB^vTQYY+ z`5Uy9-`x?3>0|1kmIe6&IDaq=s=BLMKnTX5o(DDqulv#mF9UySZkoDyCqvD&=4h3j z`CG-xny>hq!}s4vm5tTa)oo+baXsL+-W^f}(+6kO;~Re95FA;Astl}|2wvDMY8ac2 z6aXb8B%=I8jrRU?O$xN>KBH+d;tC3hP?LfEFe0BM`KVLvWKzI?N3%d1JAs1#?WVg5m+L;lAb8H zQzKY(Kyugks!$BTB;RYdcFLSJ;CvBA!j~^kq1>5km=o3WzI1BJMYRPI`ogQi1wOTT zWLkxfU!z)e&iqF)jtQuOk}#9OWrlro(dg=&E9W8Ag>nEurTJ8oo&9IxHde?Zfb6$e z@C^i%g?YhxC}yMNS)b7V8XMbO_#PWa4@iGb%|~D^0QHn^P^;RAsK8gT$WVvAHE4Mp zvi{ld#$*A2aIUMV`Bn;gCiWYYf;QCHtVYG&#Eli{85z!7U9A+&AO)`R0Ry7_J3KM2 zUkiiC))rB7+yl4?5H5llLTD#Ri1HW#&cK0#YI90+KgS7hm$0W3iL_}fU`gRHhbaev zvx2HC!&&JCAXOpAilH`*WW_&f(<e0ypG5o(w zc);C*Di8zbYjZ?mH8_UY;QZVnMA65%QE6XklGd}+>VK<-zF1wCpBt5~^miUtlf==# zw4&B}iyEhwr4L~mYfNi|9U0`o0@F2lJbrnOz z3zUq44kY{oGG53bcyoyT3_;9!=l}8OSWtDRD!4}>bx2)H@JkRZhFkKfy0$_+8R^u3 zD`p&Kz^{ETV@XvlLcd1CDsfvhJlg+Q#(MSYPqf#^P4x{8)=(1F%}N#5K!6j9BSC-` zR0ZKM6hZ`}fH3&a?7=fhpejbf75HK_%@h;eB3=)X5_kl748EfW3mi>hLjjdz@5XEJ zjO7qaMun0CzR|3}Z~_QUFlzU=y0Z~>r4By}b>&wxC!rcE5vQ@5KLa*8hX8{f5Kkj8 zHF%@|q6YO-I6Dn@(1w3kYfearwlbCyF_AAWBj5;@-^6YI920+s2G*1Po=o^jDhEJ$ zd<4Jav9@Fo0HuDA1CgFm9I^TUl%JOlA^jDjS<)RSS*;#ih@qdLh!#)<`c`;$HfNNc zSMf*;Hq^h0h&{|9#?{Pt354>?oGQU*t}(6`_)qYy49}MD2>A&-y5L)19Qy=r8lsm2 zn|C8UELgD(wO!2&#a&(NkV-UAQh}li7w@&pdxz_*kiiGMTj151lhByb%t(2-zk=HE z4{`C=>cRiJZunlEAqV)4Nz+mWmRPS|(E975K_Af(_kJYcfz ziXNofLNf=bVqXb!jGXo%7;&U5`SfdI+pcEu%i16rbp7!D--Bcyip4}4VCVQ(n?M~7 zg5iU!tSvbH$pY^HRQC_o-ott}Uk$ANSEu~AZa#?Nk)gr{yU=W#r=Qhh+A-YZXM5S$ z^hD@GzVr`18rLA5b@(8}F-D?wZ}Xx+g^sVE61jE}0hg@j@7uO*1I|&>{ORkgS=IT0A)%GaKa)lQN9Z~ZW!0f9hlI;ZfyQ$XV_cKkZH zvC6lHw~!7$k>!9u&GUuJ^6Dzz{w%+1XanL_zax969(`RT0z)1miKfB(zoLAn9_o1Ug25MvQc{hCVV@ULYtG!SjZ~4LodRbY%B#TruZ!F~ zkAPNyZO-sk$0K8r0|g!X=1a$X?;|Zd2%wQ(0i%T90s|;^%CYHCE@4E+|I`A;K$i|{ ztMhk9HIfSTsHzrm2uAb;_ki7p$%xh$fv#m0aFMvGQmVc+eGdVghKv(hk3G3|VaMiu z`=L1cFV}UzF^5ekxj+lqN3r-X<-GrE=d*oa;15A0k=4+{R3@fpAykG&NN98K4lbla z6^hY(g=q#jkc*4Ui!(4b6EMXVko5O#y>Dy}m<5H>oeg7A3LF_#-Bo%vbnC&EL!Jvk z?dl8!lHpcFS#E#$(K`X6G-%q^+#lij3#J|ld{762$s`!2fFpd;Ic{Q>wSh5B(s43b4gGY;vj)lEG*2wn;RoQsuWIsqw+{RBwW5{4|D4foxk zeq;@R)_)Y2q!WFG274r+%9bxoRt$|+(CeO9(J0wiG0lGjDt%=|eoLNm)R7bbLbKZb zs4JYmH7Jeq9FIlF*+@U+DNL#{rqvF>lVZMT_+wx1y6VTgs;<688-7C1OaHa>P~Afw z+zyDAsy#p682;;jljX7I2mQ}fM*h1{k+r|b0}*6+E_Xq7g3e2B5yuZnulX!M;|)sc z^n0A-K)kT__5T*oS3cXptjw!Q>DUz;Fn=%HB0^M(w>Coj2}`+@{rokI zU4@rfjE$Im@09pudWJiFg3HIj^w*_0g)@pS(ivAOubA1`h}uJF`rh-Tqx_fSIA?r@ zTyr_KH!eoJpb7TT%svlnckIi1rX?qgrzPh#JSJwDc*ezTI@~3Jyy0aVRa0jC*cX-3 z+~C#>O2d3OIU<#3rly;cZK-vsH84ev!ZzFP@c)tamO+s%P1oo!z%V$2+u-i*?$Wrs zySwY)?(Wb)!vKT3yE_c-?(T3o&-ccCpY#2=e{RR#5!De}s-nBHDp#&tStc#LM9U}S z0?=}cJywcMWxe^u&U*7ss*{jp+SnTkXR}`U!hc74hHKB-c0G9$@%f&4?hW3`$8Pd^ z+s{n2Hr<+vO#GEuE@YU={KR!d$NX%Hvj#b0JMcj+YmrovJ?7rlV3yBjr9)D0d1-EC zkZ%ga46E6)*O{JBM7!+vrz{|$VwQfc{w&;uO06~H;~b}DF1jwwC#-1XT=J~x0*tq# zu;_3GCxg>TiatwI(LM87*;USRbb#<|HYp~zxp?-b5%ft5{Xd_OvyIMASEo;-QGq1l302+Gq~q;REeLP??*Kc= z46Qe5yJ01Hys4=}F%|7$J;~0x`O10cvsV*Vl3+&?5A4-C1#oZ^mDNl?>6c~5c}wZh z{E38!`G^I(aw^R?-xwA+MTW6_fMa3x@f4EHUM~SET+@ezIN5%Wi zO89z*%=Rp`s)}Z(OfMwpuh%(o>`{RD!(n+RL*B#tZrnQeeSoZ=aua!3xkkB#?|DlL z2-R$GF)sRnw@A+WuCdOpZ??EAQF*4NV$o%97w7r?<82c4ZPl-$0*W6ri7-}%MQSO! zv_UX0=dE_pb{CT4QBl0za)*uiyL5Z~?`%~Vj^%s`3x8v2x7>#j?{ydYTSU&ZACIHp zWbUg%#w3E&H58kL@VuIdeS6)xfzNaN__BgE=xU<8jQ3gtt?_i`ZJheJIGl?*mIkCQ zS!cVV^7H9~rx2s_tz|u7H`ZF!MPH(~f9z)IuIT=J4YaY`SVa6egBI7b7UoYo)0^^D z*JfW&5qzGkK9dRi=HvO>ehtuE#um%_)xKZ9ka9eSU-C<@lo=-f2~8veOw{Iy_%+?QVp$t>VPkE zkNGN^fZgI~tE;wORleZ0)?UE!S#@Gjt83 z|FNm5rqb%Gfj_o@D#reS;}lpE=)%pyr99VC<20)-HwP-`{OG9EI7vojw|ueRf2f*i z;i~ATc51035tY;k9*JX%wNadRLZygDEo1XiSVX5gaTIU4x?RK3L;71S_$f$pj6!Km zd-VKdp<@wL_V)Mrf9CQK?EkE#arFO~pu5@5d_Q}A2_u}Zl+i^4(Cs%PC(rlnu@-_K ze)s3xJe4}4!LG1cWKtN7 zt>Z(M9(-rCd@X5wmmPijQXiW6oTyl<42 z@W?ZBi=F%fhkK)KAB`6?II*?vKJSyfqB|)tmWg%<9Z~HcZrUBr@op~!c=Y*y@)O=V zRby}NQnA|Hlbv8s%5c*&OH0SLj=VPC)FzznMmS)tQvCqAo@^VMNItO$-m|)<_ zH$GKlDbUPW6@}KnZ0V;Vj>B+N&Mdly<9}@8I!$ACj@^ARfgz=;KmaNS0t_LfnjXrV zi^@_DpAyx=*B?CUEGUZ_Km12;2*r3$%>32=ic?VZVgT~5K!bm4+EX%&{HBl4u(2qx~K^&FmD=4Jbq6I>8QdP*VesX`fyDk%;GF4y&c&YWA3^8KGK1A zPi2h6W)6W?``-0NO;5F;nj5e$M_La?Sy;}tE4Ae-#~X&`Kf{2?$&6nE2)gxm7xHpz zBe%+l+pfXcUF5K)Y>+N9XuXg|Q%rNp81r;dWK$*@8K>5|-C}Nc?mWMT2D<-J*v7%Q zLdq%AnqdnpX&|QB?OyztW!O}D!rASl!0)~x}O|mP%l&YILlqS#m-I(DXYZQz(_B~B{GCyQ!NGj(IN9Fg^Y^9ToFO4R%xXR^UB8f)mgK#QI8t zdM2r}=U%<>5Tw32CyNh{TeJ-qLE&^0uIW_|kp+F3NqD>%^&^B2HTdHDGvOt7&hzGa(>!O;3 z04aPzQQFq^6QLN{uOPFKoPKbWVo0I$hK*?Dh3eJTKpIU+*R9^zfQxT2)B%O6;wOpCHqBe{0X-u%x45 z)+;i->cA~+|6R~k|3Id>cPwxUIr2xJE&g^5rwC{HGfr$TM|(^Ye_i?j%W>e3kNkp# zQGiE^X~|JDTQEENM>JD zW8`+t=^kdRoDfn@l+z4JFNVRi#y9YG#$wl;8I_Wl1dyt3HMd7yq36BNH3WkQpp(17*}c8Wk_wgjUEGKw;rAiCO(C7QT%|&@t$3a! zeYdd$N$!ttW;_7;4NsJpk}3vHuC6CRjQk;+1j8O|sV<45^Xw!QTO#&9B4L=0k;!fQ zt<#O2{fEPDkLApT9N-{z7;5wP5ri6TSr+M0YP2<`QO0x^>pfg?-_@S@MDVDu>=-rD zJ#o5{ci?)v>r(XT86I>x)hKmI35E;PB%G7+YMLCLHMt7v7<@9Hmr2}#dr>l44b>JK z(zWB9JW5C9z7T%A%{y3IN%QSVIre|VqKh9%$cW1`R z#+wsW{|V2~28S$W1@kmv!Yo^ACJu%hW-xmn#CPb)9FEFQ8t24DMzzYwJC2m3rZL`F z7kTb{dBFWx*J|T5B4|HyXgFUU0|(AV#n3Uf75TS$mZ83ticMbk`dR0jX$Vr(XB|Uz zbn&VPIyyUPx6}Z-lmQW};j~vbS?=w@y@Q@u&3n)PZ415!+LJ$%fa}&A(W;QzehRkuTKv{Vk!^#H`IrE51ButzwZQp($e*vw_dZIf^$f(wg zC|%Xx{b_3&O8~^sRpsE;rWm%zHv6MD5BM)xcV{Vx7&HVFI72!iKs%}snbu;}a{kKd zadw1Bv~Rp;;BV|p+K{&Ph#HRf)vR)!-QXXd%Ysr9kqyKPge@F%$vW6RWbyeW9OYI& zyT(0od5asVi=kwsL_^p7-F6jB8i|h#TE9OlTW&rF+fh+bqR}`mp(FennHeO>#G`~K ze==2E6z4b^M{vcZafsUsDe`F}ua7AgIVIu-tHqtECj;ha#*QH8_J<|qhyQpOmrq73 zkL^20SSn77wsFus{P}_dF|2MeYCc2^JheSvP7sUnOleNZwJ)xZg;je#y0|Fm+=ykT zBlVJoi7bq4N)3FRj#tz3XKV3)8$#q(=X^FRFjh@Yu$38LSsbn#44TUl({LgS zm_R@$H^tP_>y}KF*31ZaM#enFG%__!zbpSO4^CEgz9D_Kk6m_)9Ysk=Ql-nDI2MvU;29g%cZS&-vy&i5LQ803y;2A+v)U@j?%YHHgs&j;1S08Mhi z8lVV2Ac6q{3QecvkBFk(O-{ZNut@@jlkS`Se1zWC%rZ4?$_;owdDu8kOWsyX1Fb6p z%K8I28NqY{VKf4BjHStrGRuZlmKC5__9vSc=rrzst3Tc^dVh!pu;?N=Qiw zSv?RiVozs`mrrJD*WAoffEKpRag2T4V;~8D?yzDqSwZI)_6A*I2SpfFvmt98@9XN! z=m&qsqo+3bCoY>1-Npb0_2@c*N#Shx7B1gdmKhpS@Y+CoL&%0jQ5`*?$VCnhk2~+d z{WR@sWUaS{Vxnn)VK=%Zn~7qE)!XJ>PnMX}GZ{=x#ct8jH0HQ@GFOx)@3Tu4ZObJO z*dQ*r6BrTWkIQFssV;%76u{W9?tq?WF!KSuy~RT8cunkc)R*RPSJ^t*ZTJkvqBL{M zOJ@6R2ytEhv7>ueO|yCkWGDC2**%dE@;^E_hDI z4$A@Au6w-(&!stU!Z7qIICxYrq4%tC3Hfk>_+I;iq7Dfm_h;H;^Otc)@|<8g*;|gQ zP(F91L>)Io$R%_|sP_Q&b>0EQbxv_FFYYtmLO1|7w78uQI4bPZ}AvYU&^+Wa&p z$Dl-$zw!F^!sMM7?D`1hXW>bEL2ayUfE?2{8zn+RkTcUe z&)s~TRPVN$T)^g20rlWSA;(nu3Xv=2CrM9J7`eY0^ssAEkHk^yNRXi5zRjvNb5s}> z?b`ZQ=tB$|^KbBReN9sAC`@ag+-16%9K<}kXQCT7c~G-r2pQ1u++m%dO;bo+tl67B zv)_G*y1jL>usCam?wJ${&<2qZDn#SPS=Pp@H(cG8BuF~QO})E89YL~n%oB+S5q`Dh zHxNivlUvR)^C(u8N!JKrZ^EWb7!oKJDvuK6iCFY&w+)Ag%b%HG@I4|D|G4d?a!(&F zvou`6$RVt~&>GX>o?Q89>uvCu7YX{>EF>1FDm8>df-FlQMdj6TkL2Nr-*!htZn_iY zsTNc6KD<%HrX_qg=Jt4wMcomVAXgfgiZ1av6t{R#^w!f>>utZG_Q&0Kr&%+KI*KLh z55CYB!&{#}{?}iL$<`%wj#|rSERGxU%Teop@GI9Kc9%?12LXjj@hfSJ7E2o%ax2GFpzd1v*_==U* z$UC0n&Q0bLcYeE;gvGK;HY_>c}Lh4NNHD za-?3(I^TK4*7wBDb?0fi@$hl$q>T~Ms)bDGcuo0ybr}Dh|LL;|YOKg@#VU?MpY0YP2kN7x^SYB??IifCwn?UJ=Xr&0B?%s_GpIKA+@D!T&vixRXma z?=C*;@czdIDNMVG05xAYG}u*^fT~kko)xJ^Y9yG=;*xblJbZXfJjh^>c|~aE&98io zA*%pBQPz6gw5i<9-oVWD4qs35UU%M6Ow7VPZ|>9;?xVA_!bZ0Q$f{8DnuK&%UYfBb zjVOpPOB!?J#J>ro!YWOPuVqvX$!7Y>SQ4Ydge5fDBp(#g;Ip?f$3v?ca=tO>YsMIb zzl;FOZ%v|p_*(}=gzct?$(e37B^^mMGm289Qk2vag(T#Vg>314B-BShAZkjAqUR_@ zNgGG#u?!cHEx!T?OjP%0|Lsn8Q_pm*+Gn4DZtgMbSW^SVepQ zemF*W_Cec7utrqtVr7H@S@Ps+WOYH##h+7sam3f@q-JV!(4jaQIyY9-54BTI##4ne zrSJRoI3#w@43|muIsa7;mZHo6W1@a>1L8T1CNj!4W(GWXn!F^0E zhi`Q6LDdX9wxAzquSzfJ29Si;Q_g2n2IA+U7y|8H!jrwfn3`?4rS%{20 z9euBdxU)*UQ8BI#cb4?+?TKSFq48$>iNEcUbZ~cjUMjS4GK?l@38Rt=D*AWTP!-a0 zx{GUQ6r(+Vqmw%Jk|m&2C?}a3(Ut;>9M3$|l=SqXRF1{>s|{|xK|`osSasre>V+^( zOZX~*Q9?^n{4_|qQR3i*r3uNtm8IFbceneE|2+g+@-|Le(8q~3TIC2+r#7f(Iul&H z2b+;7A1Ply%pTX!e<4Yo$r^I127GeGax2QzkrC8l^Za1n5%xC03@||1J>6bgiQ$xi%nT(D9rh$ZU zt7#;VsPyw!Lv&%>MnDc5B;4*-UJfJW%@q0&eI^NRa?#*P{}c(jQRDP=fq_Db3|2Tn zQLB`5$E3O5e>wqK)a&-P<=vyR6@ zBM*pe{Q=;EoIcIDKjNMT4Oe*@J`snnmw$_$6#n;>>p3iIaZk{}~R!GT=Hi$-m`#zNc$b}0=NProVWsS?tiJ}6cI@RDMy1qrQE0LHaq$CSF zH7CS5h2%)59{PUJuJgOUap7%lhTmiz9Txf-X2o|4eyenzc0EQ0zmcX1Ki2tDnk4m` z@*DCkI&!pXgp-oQG-%&lx{@|ubO1qDttRu}8e#`Ll_WhPVtEu|({g6=p`OIL*X zX1oGl_8nmaZQ)vodPxe{o8fxPDe~Xcti@A8iqNFdGAtLrfip#2d2JqO20wvd6`Z*< z%UqT?*yc3!`qB~LlXFOCI>cka#El`mCR9^JiK-ex3My0~PqtaiumEm-9}E!_MWPlF z_~#`oTs(|KcB(3mFp(?{9mXQ2pUZv5Bnhz(zQ?MH1Oa(Q-wtL-B1a6Pn(OE6mU-xE&G za8PNw-$06zLS^B7_DD;sG=JxuWV5;O%w|=X@qBCZzT|HzrU97eA*F6i} zWzT&L?fa?*nVI+m8^UrPct0=1QCL^>9Y*`{%~Ud`#G1sprACcY_e}hDx9}$jSm{K( zl-PR0$&?)ybfW4vy|UCnK6*!n$`6$St$Y92|q+Cp;Jv*+Af8?D$DOflUN4 zeP@4b75=V-G%PJX+eG8c4Av34=mKHlsV}@@FMtAAZI6nC%V(2U(A=B>CB*}1)HW*h%V~D$j!bF^ z{o7WbV`gQo&Fz^a96I6Xz!f&$*fFw1UnSy%-t6K9s-nnmXh<2K_t@Rri#KJNGIvD* zP8ZJtsQOp@c8`qolC zZKDya?P)I;8>8TetI|$RH#Xw+OR;<{5|efK!UkB9*pxHxqfyJme@VFh?ACZJ^4+iB zd`DcJAB*`3+$Dce=X*sinRKFwI?*t;rz&V7UYO+EWCk_O^ZUOrjso9?B|d67!GMdKPA@KL*gXnXB!Yolr!_ zbGJL+x2mp}O7M)_s=;(tKDHl0k!?%oT_|De*!KX5;4!GDv6B01_2{TQxA!dJ)Nh=f zNbP$*A!G>CPT5l|l$eIsUy&fIb(=s$ivx9(SjH8Veol~86q}|N zr`S3r>pMf;jUESQjhwC)Vbss-mEbCG&R_99+s*snK#!RaId}M@mK+&Gl@TFDSH` z6W_HtyrB5!+ya`C5q#|&Yp9wfVTA{^#SbXxYKH3HiZzip3=~8Zsa)TWYvYfYK{Qh2 zgmr+i3xhMWt-#CLFj1kPU%szk{MWaZj%;Yv^+OR-Hbk`CA8Zv^(v*~xgyJWH=zo|Q zc1V#UKkHH@rY#EC$RY=4N)1!Duh&$DJdY4ju>lPw$H}Oxoa-yJe%{?BE305mdD@KW zKF0a0S#mC6iMg6SH7~Ob^xgTVLVV}GS|-CfciDs!VMww{Yo40y2}*=?-d$Ks$V?Si zFeSq>xl^7~R?y3io?hw&m{DVR9;DrAN{mT-V8FUR!8XKAPjv~8Q&NOhF*9$@ed0Yb_}nk*Zx7+v>*7sQ09_HmuH}|EX+K+3JYl#DL^O^W+HnI%CuUEv@U0EEE*2P~0OLgjv9T;_XGibj^9CnN$8_*LQBgUVlo!e=Fg`27(-Ip8 zR8^5zT=!Wi7B$Kf9$V%sG_+T37BzyK~InbeBMoJI*&1%wK)|V~*yeNtm&MebRlb<8zk`!o;;> zo<7%=W&ePJQs5Z-ugc!+qhP_a5!znV{$iYEaPJj3u7OU!l?+T;9Q| znLU4fI1+5)>ZorGm}hCdiTK!;E!zzY7_!Dy4uK2nlK%-9{+Ac;2gNt+pIUlC|4%>x zUlb&2IYw4q6S5tp43h;5p@7U-X4ApEu_#6D<@86e1KaWRFi%6_I_n z%xu|~`K;V3*_a_uUL2pC*ty(OnO0E1<2a+lKp{W}na+hJV~J&=GOuiW!uTS76&Frs z$L_}4luH$fTRtGXn&D4gAWoaClzwLHu^!2*Pf+i`eP^P9s$sX{FN@?$Cgl+)F*UiX z3}NDU98!TrjqNs5cYufIqYsrCIWsinH$@^%m0X}mIgQE8XjWyjlP0VX16DX4IGxpQ z+94DX;V8juIi-7X;m*y+|HBV6mgxsjGiLwUwmp#sPIvcj0C=0%CQS)_EECk~D^>?? z@PI#KYuIWJQN%S3s)i5EgC6k45o2xCA#01_Gd);dB3zkFv{D^Dc8w((7bFyOUE+>X zDNmk|rXggY^0OYOp=?#0-tL%D2(`Z76(C$EGYAb#n*Cz}E2=@6w!l+?#sw}3nK>*w zW0?GW^~Iq*eK#s_elZ2H(m^)^tWYyz5k=7IQ~&rcnsJ=Td?G>opGvTG`k$RfIm6O+ zPWxk6F?xr2Rh^L&-4@SesSeHBB0UBI2#1WusR`+sf|mAQJZjKfOws1i;VF+<)f9|G z3#a3y*+<#H zVKbd3t7<@6zk*|KO+zY2*IT5RAKxGUckpuLRwOETm(*f-Y@DFqP=uW|Xmm#(jFNGV zB!hXFj;gSw0o%zNeR9ZTnXKnGda;%Pem5&KV6XH{V^v7R zfQ|KrqM(i~lG_EeEWUdt@!~6hV?nO1XXjz(@;RJRnZm?zj$M~5SpsM|M+JT59wyHq z!1F#FlG` z=kw$RL#8Xnz%7kyrdc(qDnV?MomTfKomzrQI~4OxAKizZulJu|x7hkA$8#ducEQyc zPNpKY$M;x7$IUgPy1J}FATSlW5wS*wM(30;PgZpLmO!g0RsGm<$4fk=`gB=FMF|pZ z*fDB>q#%Z}c>S4fQ1+e)Gagqy2cv3YJFK#85+F5B+<0z#E6iW?F&FzZky*Y{ zA3McFK}@U_Ocd5e`l#b(SEXVZmOD?nL4t5`i1wW5x_eNMi=Xew8(5-+$bLZPLaE+!#!|@fmk%#r@2EVw?RgQpbl7S80fqLSLtBK%D{K8M1 zPITofboNIVPUytte*C-%MwNq!{x>fQN9opjJxvd83Y(79kK3m+RG?`*A#4IFwy|n< zEPGmzDUrbWy3|aq(BF+mayt5S^)RfZ46gAe=B_%UJE?t}?yMA{>;njJ6qKltBo0*-k%coHR^wZ=FfVO;PXH%HLJ_ref16# z@R<}HC${%K_XhXu?6p9i+yoltVJs6=W!qwl71NANYK9k#FuLXRd#$1J$?noW%rD1s z96nbx;uDq4;w@qp)mRdU_ehvr<9Z)AV6r(}!i$GQY{IK`ZDC%cjoNjqWw$oqU4 zvDi=-F2AE=Xtr`r8x7*eKG>0LkcZPvI0TnrTi@-_=JfUX%HEYDs;sG1j;I-uGfTJU#pg#dmwDi-2nJ z>A8c#Dh^^T16XI--Qax;Mu4h3hY#BX3|Yey&ffkj%z*j0IWfMrz(p|@0X7vcn4#f> zO2tVz4cX_t9 zL#TZ)c#yYk3dTNW(=8vyWcH3oEO_QYFQ1JPaXhAkl=BbRF~+|JMz$j%;|*N6c&m8) z@o`Y8PEWrsR&Y7i_+AylDniUtS`eJ}g~%~l2G#3irrfTOE;_G}KVHu+t|!R{j_Ro? z=_SbUvhQNOo2|0&k+$fz646-E6IAOzmEygkUXGcUjK8ln z#R^A|C?4YjCvZiWy~6#x_fS(q_SNBZ<-kb_l&Ki7imPSlnHDmhJymT`UHy z;O`G??R4$v7~0PX3)x~pqOqb%l8}7O17}lEQ4kOfK)=|f7}Z5QuWxON_V)={g0*wJ zo??v2Ix;pN?sudRO5;ExJanmMSeAa7R%@DLmd&*R*8lXkvq-tBwVPgN6?w4s*T*Fy z#0Ps=UQA7{K1JBPg8J@p)`V-7LfdNZ@k?YIf9z#+BrCapP45{wcP&}4-aF`*9sa@0 z6z(kHQM6T|EMt8AjV&PFagT{!&`IOw-5c}_67Pyhi2vMZ=fd;6R!s}FU`dGEcZ`xO9>)EYynF> z{jvSNeMIC43x6R1<&T6qCjh+XAusdL-#_4cF>l7C;*#2@+cQb2oN}l#5y?HRc!b>D zg4Sifh^5oh$}SFSC%x0FeDAEhP3>s8%daIso^h>s9wAlUPdDCMwO*7;ZVpYZI zHOHQK=2XHKYk;?PAD-JGx{R4*^*MI_;vOm>n4(*)*CJca-_~%5c_~Q|kAjq<48<8_ zQWDxp#%j!d5KVua+Ti&BQhd6uCSpA^Ctu{+&n^s&8?I`ugUXVet@26UZt!62n$%Ex z_?Ri|a$-vE>=2o}B=Gcp5;U}Gm9=m)$B2e_k-&j$>Xr9Ua`!xW=?2#`Fh5LE{m)th zk;4!*pZb`ZPB3V(>*5~8F-iT1Zj=rnq*HD`P3yen9 z9QosTl05^N+k%L{n7Lm+#(g&VzLCzDV~Xk{c!@}B=ZZPRL(14g4?cbY2mb{Jc)p|> zv$p&TkQC*!ki<50!c*R7p;;nhv(VR6DodlG?aj@rBo=D-FwaZ`7_Gt4HSv`;040Spi^#><0~WW84374X{CuT3tar3I zxdUYq#1sv9wXCE{Y4kWdlH-LNG=9xAND!c|HX;ADdAj5<#XLXltC;AMZ_B171u7?} zC~9g-S{$i1?2;!`Y8RI~g;|6i7>!@(<(TYmYh`h|1k`3H(hTl2D$iUmnWeWqqN_m_ zWB%#Bo6vdR6D6bXko)M9s%M&>J~=2{IFg{JDiAmjxku7JlAf7GWYwVf3RVNK`bNf>H|nXsfiRbJ(o( zIAj%)gmg<$QwpH*4V&v}*?&-YZ9n9%UzpHHisDr?rG=fCqcd?V%+2*j@3~xgl%+IR zV_MrI*P9unp@T_G)f7{I3Q#6*MrxG)E(7N0Zw*jPHpW>BtQ|A5+LZ6*gi1*!a{Q@xnPJ8;l+1_(xnm&m-;g|5(-!bxB`FG| z3koUH1*aqQoI{d@{0!>FDGCE>N>KC~N_Hi1Og?TBjY_{~E?%|jKN7VI%eHuHD6=fq z0Gk6sD(+ZTmE>YZ#OhvfQ(wRV53!q=hx>gJL|1k7izNXORMeCxw19_CQ1ENu$%fH? zqHF)JQ*e2aV?ON;g-nYL`44m_nEDHtZ(F=?L-SlmP%FQX2iBPgntW!-}7ByP+uk~g}w28=b0nEC(d@9~FNEqjh60al(cx0qD+i#ZAgu#1vEH*2?H(V>3=9N+d z6tGN7%rZ!9rBa07`N1c7Vy>*TJKO^ZP0$7+yq=Q9FAAEQ(~q4YQ-&8gyo(c+7Wbh= z7kt!p|3q&mc;^f`Ot0|uU7lV;p;ab*o7z*zJ^K~+t05=&1oq2MkGrMA?^{+cap=(k za~D1AF3|zQ9DFi#<8r)!w-i%X+s^mb(&8~}(Iuax+C|f&+QF~_;;IhJUsP~!Hc=j% zo}uk`m6Q0a%JE5yeK}riN*k+V4g0h#?5X-LIcB%llDb@+{aMT+&cE8aA`mrMj{gs` zZ#O&P0Ix#_GW~hCgJ%R7<0G-MgfPS3Z9+IyA_ z7d^&|BS~gmS!iL!s%1%CYW_EB!Xf1-GSuVgC-+qkk)kwnX^L)PEin4VM(J-aA}vZ2jg9sgmiRLhYQrwaV{HUKhm{a=fgH_)JD*iay9km8#Y` z46~7Vr@d!U(Q=G@2V@-lVr%ScYtkNj(httxtB4{;U{FBV{P)ynQQSShIbF6|O7VFLAAiG>sPgvP`D`iVxZfJw zpH&#SJuw+UAvj)ok()a~UGB2P>C`97&8x{PE6Bb1yfj_phq_;Wp5`vfWD|Mtfa#w! zg_V5SJi`7@%;bl9_6(;HOk5>}bq=s@{C6xb7hYkZt{IeZaE`ljx?9cVwbRzB|3*wM(5{b3?R?C*HdV&Ni0B1G|-9Wf$A06967Xfcn2Y`4Sn^9~20 zp7DZdiU5I4ztO#Ge)Uek=N95o^uH;851MJ`%f>UVj!*e**gE zZKEusK`b&gHJJ*0#{7aXyTo3cu1vhjc*8DajN1f5a}(b=a%dN>Q{wFH9bl&wkLfcp zC~k${PJYt zM7~dU-bj%$GCQk6Y9TrM8eFjqs@LQn4*P&k4?ENis5eP4i4n@e%WgAJmRIWLCYtWW z^z7vlZIW^_0oHC5m&SLYz6-M5n@tC(OKK%~QqlyI;KS1|M!$%0JGq>!zB?zI zyc~e2CbkLJ_vdR-vX0y;^h|=aVV7y7BBRrgzjCy+ra1;{bjS!OsY833q9skGRR~tZ zRjU5dGQ2!x4QU}y11m^TRCHo@kV{X8*n4Itq(1#+mY$ZjS!RZ^ho)MS5J;oLH+ZS& z-z-6N$gZH4C@mQP4NuS?m5wlV0x?Y%w+0w0NJ_KJ8Eh7-`L-=ibe@Z3;k^}ofya{ zn~av9ipa>&nFR08pVUTK`QAOde+^4D`xl<@*jQLr1`{sQ^Qp}$ zlTQnB1`Z~CcYnhn|El|GN!*xFU{v_L@MOO}@GK&@7yu)U# z%_}cDXSzR{pU0SWQ^g%4x)~db>z92Z0-CTm3DBCd=LfPLj{9PLE z2Dh==e{G}zV^DmNN29zZm;fiojOk~8mFM?cJSZ&#nP}}xwRcXmbW_#mKQMti(xw zBQObBTDQu2d5130$|0yP4zNil=+wDbNteFWY3+HCg|kD_R|Kb2zOW)1B?(}*b97M< z?@|oYyhzB}6~9+XC?HU2x5YSV zHoJmIN&iNMkZtnYN#8|QKJ$iQfxoAHk20xBcK4iL%uWr*u6_l&(n_ObatNqDNsI|4 zw~2+9w`N;(yAA^*eKXa1>z<{Hj9ieEe1yg65;U<;UbjMs%d9^_3w)1XJoc}}<#VTMZ-(@l)_3q9?{Z6)OqfU^E-zV# zMrsIy#Iq3XAAYWUxx^GG9(=|<$ekr<5r-t=Yr5tyo^3*8=pX8OYof(sz__@)ur2uE zxRG6R7O5hC<8hvR`=q;S|4a&&QZ(ecn(wxL?!S-%2wtrcKWVoLCv_CiKVTu%a#8T> z;+059h*ATHP6seTGHtcO;fyWo%96W6*(rp}RSFb`;=cBM29+Bpp6pWpVR%!;{~$lU zL(za=`&}X-Ap%m2|Dzc~g9ncS>v8q1Fo=k~lFkvB6(jfiE8|pe0iis`nGPL zmggp`xgit(4QU24LOP{_8B2u`k|9z?0->%Qa!hp(Tsu$ic0xmiIE#7;W8~dN?wAw9 zABI<$KM1z9n%RlUCkev=0RSMWAf<3UmjcZ$F)GY9yjXY@HyB7efJiWs<&+!`;YZYn zyk!za5=;>zWwkn7I7E^Zr9o$`Jc9%Sj6=~7YWV>sA~GzL!wYfW;)Q;)GEk5*HJ{9% zACr{Aci`V-fzQcK@tHN@Ci@?%z<(2l|F^xhQ7Ol?>C(DS_<#Qq{$H{c8UIfD!-u-2b*nTL`58F+Klv$G@20xE zJ?e8-(4Z3|hp#?*v0#%Tha-iH*gkV1hcoc<%CKPXWxK8Cx3+ryKWv?KR9o%Z<|%H4 zBE{X^-GaLmX>lv=?huL>cb620QmnWacPQ@e?gY=|J>U1uoHH|PW#x~(B0DSl+0QN4 z^}Andkt_b+V68uSD3zcBtp2$*(lD&`F4`roiF@fDkF}8Fz^KbTjII#fZO-T(?`VjN z0id&)Lm@CXqNX=MkmXUiwhPDj$Z(VWpd}@gnZ%g(tm;}eGx4C|{F)VfS9{Vi9Yw-+$Jvv!w)2YBIYs+&k6$-^MSk|D;Cm$dnP zQx)!8P<@@@(n>Ve8|dulKP<+c&#UxnOkWxWY@J%iTzY=?j?~q&2NXd)`Q@l#jlv=1a z-#NNs@A+T;cIf5fl)ZS)?NiL+#IrA$h5wyOyp8u(?l~YA(af<+hiw?R=2$%HM6*^@ z8f;e|FGQ%1{tFsyaG_xHPwAvfRdHhAbSx&JCD4>66}~%S9o#{(N6$I>+8mgrOVJ2S zJ^8g~Zm!oNJgDR~h#Ug7pgkt|>8D5V3WG`p>~B#C?SMUN;kkQ9F23=`7DBk)El-Aa zy4>?A(k#(~N7?T=KdJ`RGachtO(Evwkk8hZmw)d`;!!?1=X^Fn+vyE3$PF5DQ2QrZ z|BuI;#plnTDHG*0GBU)e5-AdYy+m|qwO)5EFLZgmKHEXs_xz|fJr1z`xxzz*6X8D< z@D`bjjF;|qR=YsrWW@}#+krB8ZSm7yhmgzVFa$OXAp+yeRUNuSdG!+W#HKwUAK<}< zZ20o)=P+Fi1@Y8iO1|jsr5=#~vuK<#nWe8_z2*L#8ADh0EmGbNv0w6#yV2(M%Eq=n zy=4pEo_<{w#S1J=$=9K(!kS}=&ik-&`)bv}8c!dQiNAhmq9C`@-12sdeA4z z>2)2`2P{u-_>GG;dUs5ZOX+;C!gz5kZdo~opYI-S)Bt#-pCjfOO#M2eycjGHkeKax zm6)O@uS{F*3h-L1i?HfyCQR0n?8*9^7BR`~eyQgD+9Sf+;VHYn*5{Pn{3w7uMMo?@ z&R?jqB4eh>ZT#G0Ip+GWt8o_@+L3`~n+|3+uE7>Qxpq>k(RLxjm6;a8ooOL)^d zH$CFs4AY%ci0GddYEt)is8U3cPc-PZI%lJH121F zl$_x%@Lr!D?vc$W)J!MzB&Jmk@$^0hiRJ`>zsh;XY<+n}C zhK_WIX(`@KcFvEHc$l%(py~P(up(_C#mC6a7d%D4nTn{Qh#2Pp@?UrV2e()gfxhY^35r77=a#b;yrBKh&hk1s4gKY6%e7eCV1BzVOn1^ z76$$_S>Oz9tYsk#GC#HhYS=Px-bDOrt$vcE0R77`Sg>4KIBn3dI~~MtN)4d^w0~QF zp@EbC=KIG{2vTOcKeyVb4onqYQotpcrTOU?%PK7;CRybpqHVM{=cRTDFm7=*%hbvg z--qk!m3q#4a7_-bfIOt8=J=AwPEm4mP`!U(Tj7dAX}eq#irs zul_(C#Uk5&(G!{x4^Li`o3}E^GJO#dJ?sh6uG%UA+JF8!D==vcrLOB zhx_%qc;l6171!w}w-`8eST_9oAa3QH2mQD0H59%1P*<_EdM4`!SjfrDdy&-yl_aBB zd){pyLlzQ>-G-eb|J>e)`0E#?O7aS-*|RzImS@M#hgf<>&66QTd2vvgESoOASS#Bp z?PgQmX>R`B1tiKWLe0e)^$W&UDT;Uh_s|!3LpD0KS5dimvitV6z2P9IG7`k8ofcA`xRO}5aO9b+d8DFt0SAcz7 zM%z6#zf@!fJZ=e6#exbq`QBBB)_)yS0qxZap*85bB#ckpU!zpzkms|P6&`c1DDV$m zb-qAZ8Xw&F8&{e z{4mc9dyCF_%LeTH{g%vpkGcPA?Uf?%MH+>%^~80&KTcZt7*@*PR!bpL_v6FQ}kHW>)Ik{j2PFTjQaL%Ha z4fiLp!6tT)PIZd0Gf$lOK|%ro6Biekwe`@G?JI#q`P~>TrnOpNCNv7XM5BTxvaA*= z<09={c`ECkvh3tLVdNy6yTi%MJ7c=4ssmT@w_3X;1u7}qUdy#$&n=7)_N-vZ&)soq zfWCPZ>}h(;>-}!GoL0W!(DB%nGs(;pNsVEQYmHTTgHdH8g6^&-mon)RiegWI{yop- z;=Vw#Q%C>N&RGt~9qS`&S*URt)M~($1@iqK0G^x4$(DA0fY+XA?*(*TuaDg995a;S z)kDj_i8gbE{AC$O6u-?NT2r`&qv@a4@;C=Iv4J&O#d@U<_l{ShQba@LP-T;)flfKF3#1D5CwKi~ zb^F9#AzLC-j+VddU3U zLaMgU&8E7M-@)Pta6pnp8mD|jO{yXp`@XHl@Z=A1T;M0(gB=b1KdXHm@#i~JgI={A zbfD8df~h6PRwD>K2AOcTupEDLV{#3Rg1K8_++$;1%suAJPPPVvEFh2UBNz*+f=QuHVeO2tk2*yrS* z+8jJp6iv#JddHT#+aHp86zk{FHOx_lsL`Z5xMNtKE)_MV^tl(;ttqxIx1nZqDnxh} zb`?(URk=W8@_>awcVr~Is1sYp>hdC%LCNsB7_q`o6^psqxjA*)AoG^^VITTV1VFbl zyi{$@Fq&bEml`+Te8QK^AS0}Ssp*mC(ed`lh{=QAgPG)nuRpx~P~+|;(!vjPU|9Bq z<(r5U3~7sXrd^7otIo-M7syWTrZ&_de{px}RQ*wO2{dnKt%RDV zMI|;aUygwb@yKEz5<6X@R(O=oMl!r!ECXzm+60hvAwnjNs{bwrY3`Zm5p{`V{n z>FjR#fl++%2o*9CoicHic6fpE(M%mVte__rVLk+oMSVfn2NHa%9TtW6_T{r!de>V7 znA-*4TMheX)8uPGZDI#B4rFNMmI#k{2#t2!4M|XHteph|+uBySf z8q?Dd!i}f@I5`{(YiI{&Y}ac@wRv~-uSB$mRK5hpjujz{(0=%K`&3{kG34S3%ufEa z3D?J*ThBTa`SUhq*CHVy<@;FMcl%xJkT?RRE%y`!6_MN9FN!$ySGiAYfKDDYu)lZl zwVE@Ek1Nyks;HJzRKf2_&Vc3+!9UasRB9sy$K8{E4V(%jT+>1}gu9pSQTo)hw(wQb z5@PAj$i(iHxxMB}Ox)FG?%ptc4l4N{=j}?r08BuIYgKgYtYP&$IKCAK1436U$}^l^ zZFr7NT$ZUC?Kh0a(}sP6dIFG2r|aW#K8#$$0J195++K9m<*R^S&iFr=e$?19tNFi) zjbNAPp11Y+Igyn5aRy7}qCH|>-S+aHvQ6b*DZ6c*1#VXI1AD+5`fJ8ucn4}MWuK#> zJ&UB=WT_emcHFRO)lzi?NGxY$QTnb?)c=uLe<;1>65U{Px@}{>7_QXkdGRszbxi3} z@h;_~dA{m&LDbVpZXNmiCd!2GTcxK%-Msov# z=akzzR(nHiu;SwkU$AQ@k^ZpJIkAk)J?KRzjR`l2XqlkaPXVuOcf z*%2-si|QlEHJql*6=gdF#cv?sAAvlu{x^O@MKBVI-$+rMW`^Q7rVDG^5(#3gmFbk} zaOgBK1Ru*&W)Gd~-*a^lT`DrJ2dm@At-Y${Tb=1)kR>YkQg^N6XeyNzQCrynX0SMV4JAiLa`*S;YlV)+dz;*`mita=VWIFwngjn zFvp0jz;*6|pvN24!PCCA{z!qN9UpJMFA2SVCZ_%;T>k6DYJm8@BpS{|=h#LUFv@Mm zwY}B;97!kS1 zT(f=$<#&2~o%5F8%U!(clxzN-RF9!6Mdr(yUm1%UbrS@JUe$Q>@8c+cMBDQ6p}uNg z#jIx9yxKx79~&s!lF#$?py$rVQ&YW`YjUZ=^J(WOWy6o0mzK+Q+=XNm!TL1U8^2Xx zs!rmM(ogt?u!4O{z6;wQ^Ett;=csOlhB=4-%9sBw)PJzJbAdA=zvBhi{jqypApZOh z`V5r&ufou3P?3gw;}3Vt&8`P*cJkJqqjLn`W^#)K;p0cS8H`K(7!M zjV6uNn$*(!kEXfapuC&Xhta~q#o!Oz=2AU zG2R9e_v;$BMEu?53gMWIocOU@26gMClvC&}9<$a~pTb4z{kY0lKb!XTn>-U7_b_4a zYMA3=?ywJ0nJY^Lcn~P{8fnyN$dh@;GE4Cd7;uX59AkNI>Jk)`-ciAkiK!N zZaQ|_JzQcWt`%-sO}O;rt>4hWXXRF2hGI5EXu5*5xVRRY1-1Dj<+32n(fhO5*$Zn+ zKR0gZ@L(SPg-_ZRv??d2_Zk2kJ6I#j5X9ulF!?F7-3$M$QZRp=-ND@%A3^r0P1WBI zI?lfZ>SD;hLvo;-lwEc-U$Q<_b>l#~=P}OXP*vK(^4`rlv_I2ld7yq5+C|sXmvS(q z_81?xuc|I#QHgecX|}S@-xHvF(D~it@0!*sdpox=1ig*-aK0w@(D882B7W!^UlAfu>+| zy!+SOSNJdM`+?{!A9a{cTADZ#(PcAF9k*5>{=uUTAuKF{E=B-wEW9Xu4xgnJevKdO zgBZ_u7eC5s%&rwBnD0;ip#esxeHTLue8n0Picvv2G~XuADAv@dSE1dEFt zQy&wXISY+w{Q9;QFE$ZJ^u9cbvC814#w7m3T-J|EHczn!!p^6;>UAOD9-&x+6LI#q zDi1cfW8n9)ji43N-o{h&C45TUtF7ADX}@FAb*GcPo=|)n3A_jkZ{N6ZNe_Iw@xy}Z9=`4q$<5)z7wAuD+FWs0(yWt0xT z(_0<|g*vb#uLMH(QJPCL3=$|m6LXdlB@PGk@1s{`&om2_4&u=ts!8T^Bz{dv)D2|U z2fS`PR0m#qydA~^Q#T$`J9ud6OpF4D^hmX|5-q-=g9SPYf%~~9=jN4!Ok~AX0*SIJ zfJ*#yf;`j@I)2sb8FG^0b~&B3FgI}=Q#F|2X_9C+G!~YYOBn#mr)v78`pDe)Rh7p1 z=;{OXX&CyMLbowig<8Hfr7w!#;I%Oglhsd+#PeVj zGK==?3))-bvPi*oX8P3QcTjQeKbl!Zbs(PZFm@7;>#hbPbcUw2yF)w8H$R({b({<5 zH&;w;I+6!7$JKiq%hHmg9Lzc%?hv2IAzzJ3ewSiXK|%>|rA3L|q`CMo}*ba1U) zeuUUrVO-zmyXDxmjWj@C`0NWM^psXtgSvx&h`!4$)1HacgVmfI9Who8*0LqA4ou~` zk117oGnIuI)6*hcDv^hK%mBoNXv7Zh1EdU+qhc@XlyyS-(ay^(UV~=*=OdAad+12| z*SdPuFrDjnuBt;F&h>TD7df65r+)bD(p z?_S4nF`A+yiCLXRrKwa&st7bPF>=`mBi+{m`5BU@iuN_yOOs;e1PAeY1zr`u<|B75 zvE`WZa@xUtZg_9s_U!1n;l&UBvZrA^n{R|;l1gvOIiG5l(42_wHP!TCz*BQkJCchr zxxO;~ll^-$kGxVdhCgH1%N}3$IcL*M6Iv7F+^6`-&5uga-`iMM6Rq2s(4brSt zuCX9W`D2IC{%f21Kg+2K=f4_~51}^Lvqk!2Wm<|aKuk0@9QY8RNs#p|Y;WNx%fN5> zwiBSOCJQdCJg$iYotY+_SE{r#7?cmzW7b4Ph#Uv2&#nGZ?PbBy7CP({st2b3Q~7!q zQ#L27!Rj(=iv$EEFF{*(tiS8#d$@x7E%t*4#`7_bu*ca~UlgN-1$;JB$5npXM zwOzyn1L3i-ZrurXV9tFEia4Tz0#Q;D>>rWQXkZ$?6As1=f{8y~DgQUAV#Mf=g?cI@ zYU-TOk{a+!9TTJg0RCaKnMXMPvb?Wr(^LA;qXTgE5Q-Q^1 z4@b};*kiJAg4yI&gJ#A%UY*Ucl`CKk%|IyN+?zMGB^>ihp1pi_ZjEU`QHyK#0@Z5&y#ge`mLG;Pc>1Gj$AWkxb#2 z?HcwE==M26!?QNSe@C4aWsmNxb+l$@+IL(!uTzcp{;5d*y&?v!cX!&tp|;>&Vq>(_ zvP*J6;Vve;>WjAom;vWLK(H6+;PIeqsPsZn#^c4w`@*mKa=N=hIh2a|pdrl(OE%8= zaFG2v*6CNyOyv$c^fcZg`6n>`9)uqvf_;J+)7$+Z+#uk+Pafos{pO|DV%D6t(pcpo z-Q*W#lP{nP+@i;oyXH;;3~_r0km$&p#ijmzw^bS6t0Sd)2LxW!d6>8O9tzwF9lVNJ z*3=1jhI_s3c3nbV=j%kCPe&eJyV}OK!l>?FOXU{Vwd9X&d2q$6XQn@?E3Wd%fcukU z5MNhGRCvE~;noDI(dupBuHmcN*I*nr5D_tt{NYmphvCFH)J(_?uef09gU^aBx7%(F zJNxW%Hy>L<2LGeXk(95Mef3w>V9a(tYTtdIa3HW;A|2ptMWbEfE+<=WTe8S)LzF|)BNfi7kCsQ$N zBd+6s$}F1C($Ti-Fzk}U;eurIGDtHAOq0*FF)0dqo_qlV4A#JbK5^B7jgcihNR9c? z{?Bbzhh%zB8E0s;-(WMfqF9LFpG8JHVeVHPh|$EoiAqN!da2*FkYq}?nr64@mk04E z%ZjF@P+$*J?7ZHfgCCIlog5axH&gGj%luB!L~ib?ZzA}~N;eKpj3K;Yfq_K2ok}E- z4M?=MQAgjDBYF2CeE>QL9pn%-rMYo%83ek#Rx>*IW5<4T{cK2b;YJnvlrXR$qI1l{ zGpxH?%sj-jAw6HBac%xPH7d3i8Q!oNiePbMAC7V-mP(U|^j(UlH<2z5 zhfj^S&=1{YRbzVpNj!;1w!j?=Nn$_Z%v<(Ap<(&xqH8D!4hf20f*BMpJ&g>9B zXzAte3_SEF*QRfmE_9&?7nzEw+QzyUxkfjB+&*|1N%pF1YyAG=j)PZ+lFS%8*3QM` z2^h+IRlDvh&D%#ae&g!8Uc@-B9u;Raem$@dK{ds6Jm7-Px@{ulOG_hZevt^Sjg?BE z1XH2qA_;oEz#w6OcEwkCcKB0mxRP>=dK;}ehmwsSQ9%LrEB<+q6`;piG(0b%qYU_xn=-FGs-AkB-0OUDQ_KaTL;i@~F-4=Wr#t(?V_ zq$gGEH@gR9yP1}(i977hPaWLtGh01mQCO6%CA8b<+}zA&oBo&q4me|$sitEMzlY&b z2@|wpDBGe8KPn9wM57zrZDUq8ersoA4C#xpw{^w)&QkSjN53nsGh;W$*7Gw9m2vJM zzCqJO#8lRg7cAS+m|45$X6J(B^G+Fqci#hEMyda!Qxbex`~ANXBY)UkJ-F6W#i*tW ztD7{U#?qC@n7qQa%4oNcns&W7Iy@BaxhJ**C{n!=kKR#}OgA=`hi`UDCq=%XG<%-E zv-fHqA)GqQod4WPE-Z0u2w5AWW3V{iC!GJ>pB}l(Ta29&gfHy;yiH3cY08g5AG+YF z_Y8fvh2ktzg2H&lO;gQt%fZ8{+vL@1>=il)avQR$tt}@d!IU|`%ZkfiL^YMAI`yhQ ztfnOHkZrnYPd}p+=keJf_zzWxp`p9yEjK=l&Auhmz5jhk0N|Bj@@%5`FF|)F$MECm zE6Y;gvL44T1AJ>dGBPge+Kj9Q^KsV!#3(zqo!ZaI+ z$2D@yP*Gl3bw01In<48NbsVB-$*%zOo3Z1>l+6EJFt6iE;1zXJ6b$dBom~@Jl4&stOVsPOPhR2OH!U1}3dXTI8_NCpr@(!1O<0^_^wrCx-Ob=B}GnGmg;9hY=0&v;{K{Y`dXiv#@BhOY1GlO zpAIG`>vD@7EitVIq^?Wh{M~9$Okjc9M(9$8a?)(HQx#}n&rJ7Wri#Wk-34%D~LG^>bmrStt01I*P!tYFjG zV*mV{V0HTy_Mlqz7-75N_m7t`Dx3@a!_vVYKPyrZ4pSrtPiuq=b_M(Hd@vove#QA< z#2?Qmim3!-TdK7ausk?iF(HMLB;AYotCkL=P*eoABsznA<~oixM5)$vt1_;Qp6p<(3v9O}=NM(Z)k(sRzv%O13s_3DjDtE@3{b<(j= zO2Om-CbWTFpZ!u_!P{klI?bjdPF;iehSt1}FY+C0oQKQ`qt#y_o+w8pcW4*z$HZq8 z$;sl^`S?T9zDFG*Z*qZykOu(!^>%bqoYUI?P^@V@*nTH;L2ihu;>lDD(iAx9Hfe7W z$mkDCm>;OC8;g7XO49WzJbAt6cWgZ&FAdyT#R+mH%2q04z2bf=?AqPj!dkYcv(47z zEUmPW&1yj@UW#&Q4*Pb))f;CsVWcYgQzKFRmsHl5;LkYHUZoxfkYmwQx&jo9?o^W>FN)x_M zvk)1TukO7b=u1cD7Nw@7$5uca(_Rn9NpVHj zch6qhHRWH03EzXZ_&Xo9{crm5ANL^-qIqkUQ0twawf{EY#tL%AeY)0Y^Z&Vumu@Bj z5ILAD-ma>^*As6M;LHMX06SScPISMcf5-hrtsMI|L-2UGyN2W zw&kZf2+BF|(v)oZi)x4qqW+|y(et@JiPKSu*Hl9l>fb0G9_7W0ffJV<&p?j$PMDyK z;N9a_`xZOlcqgTSnQKIRwVXX25S-UJ29ww7q#MX5VXe)pI>u0V(J)=H70oCVHd?Rr0SCduEL3WQ*Ex5LFHneicROcXyBCO zEqk;2SE>!+>2U)d;0@C2uU!qtpvGmy&W+%cVL_<%LMU~R@%c3>M-N$ z$r0#J<7gf;F6XH@534Tj4`3Rd{PQnN%*RxXFmg{1oI7B8^TXO*z_6 zV8L*%@_Xk+6E~8fDm%wE9gxdV=xLzf6FRuow_~!L6I@ssAC}KZ7c5c0i9hOwqkIeI z-qYTCA3n9Bf7HA@9(Hec3&#Arz&|#tfiA}ookT>9*pPkYW~kgEy67+FzYrlE!rqb* zPD9Lefjg)-=sYlf$eL+irDb|@W>RC7WW(Oavy`EtFl+UENN8mK)iXfoQ0TvVU$OAU z`k2vM$c{A9Az~yrJ1nd#-%D&W$nQ4|oy~?&xR#bx5B4O4f`>CwJc}A#;*1GQ*7qoX z@+BCo#!UHy)wl)anIL@Dhr-d62M@DoaU&gHgf2%_ZD4NjJkKf$#rVg1g5Yv&iHrO! zGfj9@-Or*Wm7~QdBUi&^zee}=oxR4iQsfw^d3un7R!Gd=T+#6L@d>`zTdo9n@a)Ry zc%QJUHek3q6bdRxmMiy}qrzMf&yjK;pBHacS)Q}HbNJkIIi#0npl2{xcSiiY)*7R( zcDp|&FyyxLbFvNkdVFD5@Y6uyVT{<|IM-~m1lXkbM|$|aLrc5FjL;{xF4xR`oo5mW zictN{50I8Oy{`1xS)kx0G!UxsubA~s5yGQqS` zx&3OtsG5Hs(*5jjDdC~(O~&;=u&B{nX`w-u!B@xEMsk@diIT~ZG9RRd&zZYE)qmaI zu+yLLbQ*CJJ3Pp}*1AAyYYRhF4$x?nug+prj0|{9Nw&Pu*C;|Q8~gS37gV(@l`mfM zDZ#n0U{p3`s7P_vHsNjdLfR^WSg<_nByXtq*@6&r0}Eox+>m+D0t0xnQda@QfIQE4n7aq;YQ zGl3YtfClhS){bkK5^9a%@ninHa&fR_i>4d?9&;a`Nurdxt|(N+mpm%dbKU2Jz=0ZV z46ztKSmJ9fgKH{@VHP6T8(`)@>b_E-93S_agHJI~AhTIg=C|JaW94hNn3Ua8iYeU0 zJVQx!PoX0ha#=e*8`_UNUozDna>n8(YDoUatd8+7vpP#`t%(=+jxOsaf;dcudGjkz z>AH6a|Au!+Z#tqidCmZ@cUCn0#$GJ{`hF~boNJX=c;qM8s1%ahBxI(pSlVrS5;tAB ze7Ruw$7zd_Qm8}n8!@JGo1eZ7V{#SB!;f_eN5O1S~_;}J;fCZ zHm^I5zZ(O^Zur(VN1Mm9=!G4IF?aWWkCK0LT=W6DzH>uaiH=kY5*jGQ`i*sNUZkHb z5yDph`M{R)WJ)t(A3<5v7@%eP98K}=+H6!qYx{QW$GPVwPuPWwv9fIVvuTjhq?k68)zD0Ei`5KWPq!YIPQ%MH zP>lYhHaz%I;rG4e(c{LS2J^gFY#HN)yE@=tf1x4W$S1ilzzFfVm7wzygS}&3(h73= zgz|4~=zl6DKqkQ5pzS{k@={5y0LG5n12ZtQ8gl1!Q-0=CG!800YwH?-Jni5=tgO^q zyy&?5FkF-EbUM(^(ob^wozljEm8Y1PrRHA9AI9muYBxkwSG@9e0$<yxfK z)C*;OPRI3LCqP^3i+%5tF2a_v+`lS=MR0aRQ`Yq80{0tN2TE{r7gfI-7dzS0oc(cWe zlS%{RKfc-{#=G1d#y{L$7;g1A?$VqHq{?*vWW zbm#hko>!j@R)t{%A`ZsJp-qyj@!J{5wYJZWJ#lF`1vVUk*>4C9;Q1JEJu*zD7eH5F zQ@p65R95M*9|U+Z%bFfU&U-+5JJ2@TZ8)OoX`x+Bc8y)?22M1L;pl?SkzpoRS8ale0x*ienThk`DWP@a-h;Ua& z;Xp6gY9d#C4$ECTk@Udq_*0hrvGzuuQj8k)RzG16ebi4~S6n-l)y_Y`L=bnL7@>xg zXH18!s$3g*QMT49Ol;lGzuWl5Gr`pF>uNK8Cq4VTIK9ya)>0DOFhd^WANjrX%RI-n za*ntA1A!rgGi;5oTQmN97ohzkNHb_MRnTYe0tzqkC)d5C-H)`y_)OBREszG=mPwY;Pf!m4bO!&rI5a6C55Lgw@*b!;{g_SVPCkdbZ zdcU6{1c!LPU_m_XeVt%9BS(ZCOSqSruY4}bZ`)yxHU*>hp{r;KM7}uc&<~Qxl>hzY zMZgFJHzZ-lN+P=;DKScGdn62!cc#amPyC>ANkW_K8mnL@*;*_ zz-SDyYz$Pz2c$eJrG38z9TbyyOoUOsUv8(%0$g)|>EHkU>l5rG78sRAiK$sfCekT0 zi!fKTbjGtw47HqFP960<#%a_bUyXi(!JEEzV{}}XEuj~YNczcG zRt}k)X z#qOIF(xScv4fE;%F?;)PW(9T3hK4>D==56X{ArgBRe8p{t=e_Jt=c7kGRn;YVO6?Dj&n zh8pk@pJcj;bB5VNmR)CEtCA3<qo=8+bBhn&a{0>mU5hhkDXPCye?iw?BMt(&z?U}+&;+ihER_zY(NvfHYehLb) zUzzTkU>!a9WUMdc<0zEb$TLP*j0+W9f%JXI_KI~EqaDhSmI=Dn)h7MF%aibYAy)W| zwAf(A{OrXCt-H(T+rooqVGf@6Q6hT#s7zslIJT@$_rY@+QhHIT17irSdMhp7<*DcA z=PJuEYir35?pW<_&{W5R11Ii-$}o-9b8iZ5n?i=ep5Dm^GqiVjA(XJuWRiMloE>vvemLRzNx|93$0{R{$^JTRfxu#r zdLS~n3vvsJisuG!j9J^}=&;0#t}hrM{zrJ!+>67O{_Z{R5%5S% zSB1WEMPNeZN(Z-VW!QW{M(A1g5QJh+d&%(U2Dh;B`-S`!ZUUF^8l~{-=B;*8H-P zJS5EBgA6m@?kG{w^nF<*ODExwHHY?PI92v<**f*vCu=*mV`b|5vl@;~ zpRCut;VIWKT};x%P14EP(4j5F@05^$`R&=jyyliJA=d5Rxp4V-0}qF*|kJ}7;c zHG6=QD5zzC7G=f%DDkwu75b$vh3D@AN6<)ikE~q0KqXGA{X^Sy-C7xct;cBeBq~s_ zqQkHJOnVdfStoEZKxRxZ?{cwXyTwu4Wm;su{I-qV@_g2DX1AJCbknJ^ICPw^(wDN} zGGQ2|Ui#W|dV@tm)^lXo(@?up68tTBYKs#Q5g)ma)%*+3rzI^l^(^e0>Smz=RE|FF z-ko!EqCbkRvSg1RKc;AFnaoV!xZF*PVw<_T=M@)IsOvMv6`(RP@!33LxMJ@xtdhFt z_~mMUQDo?JvB;>(q^NC9&a5>Os;+mv*CGy?QG#}Ziaw@je$tZwhJU=#K$|Gnm9?V4 zgS*7JoZwm)p7#$OSYp@y&q@tJ@)ugJ>! zNcIa~>ijpc%5SH^8cf&RWgLE2Y-3zJk9?UcJ!CIc65&;Oo8#KX+ob^L0M%u*m)lY~ z?^i8iRyekO?GcurcS651`3kB`OIE7?auS=e!Nad|cqZC)Naa|Q_s;mHP1Q2WN+Qmd zKbn6`(MZVrzO)kMHa$G_fIao7Dl`e&@5|P<_6ScO#A>=8m)IcA5qo*nA1$k@cY3`< zFtWYj7Qqa~H@(MBH}*@r5Pjv@@P4w%13nGDT!!7$KT3^l5Zo-T#5{_yH#`yK8Tag* zZeLIGr3k;=o96j+GH}jjFIolTxZ8&X>>lt-jsW+DMu9gh)rQ7@$bC;ZfRG-Z*TJsAlflW$WO@IaEZWIH=7!P!#L7t$gs-DpG3Xkd9P8uhzyEB=xmjm^a? z4waRrYw<`zwNWL54(B|OA&9z}vu=i+lD0JGIsjy1mxdS87SheVao`@9-~t|}&Ztuy zUWcGy%rDD>-Tz*_Y+Ngzu&mwGs&HLeB&%!m%u9JJe#H8kT&Ud8uFwUDbKAjv$3R#5 zD=q+3Mz4R+x3C~Jx)mMMx6{n;*+B{GEnh7v?&(O&dxV%$=OAEcmUDPjQ)^qqSQnb} z3fc_PBYvFXG{Dc>>Q^$WS9#_Wgp5Ca)TJq2UTo#Y?4S*Smw{h7t%w;P%(%5b?Z|8J zXYVhz=<-Ko|C6FFecu^>Bc2Jg<`TIJm0 zkf0uzkeO*3zB1`@b;_uk+p5wwEwi%8^0sL?6{P-Wu&0lsS2O?}DxE|QyY#UnxM)^h z3De9G42aV#T|Ol7;3AH!&50R_c5+DyVqQa!Rpr>qGjHC(cEDG4+rOndsAs*aQ%#^G5zzuc@Jja<~55)b1NPi1|}=j?y<#7fl+)nMARy{ zeNO`D{ykK?csIOB3q9}>RXz(y)MIbpIx^@Zj(Tw=ry}N3w<0&W zs3Iad6Klr@?U~yF(g$8cBXN4A7^%)-&HtO4`YIYgoE5+$gdH7ZXM2hR>p~>@ri%F0YRyO_=#ceY#EEoB zXo%51J{W-B5|aUJa+0WBo~CYg<&g(kaPuhI$R{{6NHY@i8&4r1W) zMxpG>m5r56m+$QbSsct`+p;(!vKd;;9?{!-ZaTMrR_b@;F1SXBjG+2ejZqBaPC&wI z?hufowvnyk*qnUcyK&GmI^*8b!yJ&JQ|G2oZC_x(J)Yzi#mov9y7M9OsHQ@ct8ZBO6%^aZ}F zqdJuCnMx_S`sNw{+CJTLDbXI7BEnG^W2C1amH6^A6W8IJ35~4tU9XoRSDF@57_E=F z0EzkPb-Uo={m?~iAjAj*H}re!#FWcEj~wX4oB^4isVuAM(|mpOB(U?HTv=+Z(t*HB zZ{uCS{M8RGok$`g#^1z4!zwfts}kO`5mZHzN6seDDNzC=&H|p-L+R%h5JMSUhBO@! zh!DP-;jY}-4E&da3`1Gf{bQ1l(D|_`oWF$%9Etjx%C@$AN0y>-Isl{C_jAY37GE_TGTpAGksxNyz; z`0&8op!Zrz+=N0I`rsiiZN;)b)%D;;CiM5u+b#0DCgMPfP)KD`G7N{x z-<5$n$k7Uk@JfG!$4ZJgUMd($riJW-1IWjqo^}Iw z)jWOFjRPYOx}KWac`$mF1P{?y9&)>$Ny*C4HP&x%-sU#Q4r1-h?DYgyzk@?G;B2W= z;~|8YgF80>Fdo({98zvy= zqczh=dkrFHz1}%}&70@f$^U`%Nm6^yCkPJkplzWCnETk9@1?%V>|CwynEXO!3Bq>M z{@Sh0J<$C!N`fD5J>j?Mb@R##endlzDJr5Oz>hll7F2n&b7TD2Oe}(Bqi|Vx4E+%i zrBp-$sWITNbNRH2kDsPiUJOL}mFlBLq~FlJnuycSlgaqRYn^@9C&?vE zt$FPoZD#`Nb8%h)`+QNCfpX>ihE;mYcis&tp) zFlhB#?r)XAe!0Te&Pf=g$N?V-9n{W;PVPbcsCjvQ$d6YemVD1TK58IW`qXb-fP}t==@kd$TE@5CoJct3`2fp7SYJ!{x?c#(~gD%(E@f z^Wt)PW!SgVk3IF6M-ueCPylsFerIituH_`Y>->z26R5E$X3hkchpF`pH|O?LIa=3GiKGmicod9V5fYYMSZanSzG|6W*a&17Z%mUx;o}Trdu7;Wf4&7dr>1cdhMO z%tOCT9{8wO69dypXjgz+yED-X`eoaY$ehqzjCl0!!l~OX8+9G6%@bqB`^F6xw@YAH zIucB)Qswpvj8^iJOs+VM&XNIE7#^QZO?txNdkB6d_U=(WNK2uwzcs2U@&CK{04<}d zm`^}`Ua^RODK>%AX@|Ng_$0Yi#)Thnb@ywi33e z0Op8k*oGslgYhn((b>3He!Gp=PL1yEp=h~02em!lK&NE{-V^`E<4V7cG@NDs^?1p98G3jl4OZSa}q?Y@ygW8-uAI}%3w~{T%nyGYR@nBH< zYY){g%d;l<#4Eias9qDtqaH9FmaJU}G^2Ao#D2ZCFhVoc1BbGYM%JuB9kbjAOVjx7 zyUC?6R?G|c1!+4Jgu`-pmkbuoSSCtYM6ZFF?MNh0h=S_q|fT04E7eaun zJSdRMohH_)QkyE}X@7k=bJeBx?96P&tjAldisL!xeSOO0?8_d3RORH}iF$u`&|+ct zzSNBStYCIq1gk{hiqaw}^%FzI1&0~^_WTeyrZ`-ylDI!_y$Vl)Wy{!ffj`(uI{|QB zM%n3ndZy&x4)*GKkiY~zq(-G^Dn=KhGgSjPTMR>l0*7o`fBb37)C%)22m0qm;tHh3 zo2;Sr)dTK~Mn$|A(?vns{(2%d+(HD$_c*T#UsI#@WD8CEJ@%*{C%G{XRSw;vLB;=f z5%_{rH%32II>r0_XLW+%2{h@7Rl(2NOB2=%z+&$R}Ni2ttk3oo&M3TwnOVknn#m{DK1UuY3a%kL#7g14i53=koPV`#Qe! z?fa(tHixFxl>oCN@_#@5_xW}veu4nAY2e@5>9wv7nl`Vz@+-{P!R@s7N0q+Y0`tXu z0s8-c!BfD@J1F`S_5btU-@i8Ti+U&i{oyukiKiv<`>SYb_qew^mpB!k{H3L1zmZSK za?>iK4eNJH41^2})`d^+U&QLo$}n3iY4(}rJQoWe*R0=|qBa+YF65w78kF6k_{0E2I~C${Pr_?D8ivs8$TLycXwAHR~8PJO9CiuuV+7P636r7O4+Rb zS^8gVN$|q{?*%MlVG23nb*_Jnry#>w&HE?B`qD2uBmP%J1MQ?3(o7cCNkS3y~`bkwp%l_ z*OAcDN+@zx3V){fU`E-&9J2<4J8fnh1NFM}yZ`XDU!JAqfxbh?(Ht{%!iY=6M&$R7 z8&~*_d_lhMPZ>OMj31LG>9?AhK=xlMf7=j!p)kvGdsB6o^JLy9N%z}L?y+?@%DjwM zh>klkW?{91#b2b}1JqZi7QBUP% zI5Qf`PtuziIVZcBI~&56*{mpt3g&E++Bt_itnb_8vq7-j8&NqTa$Q+c+l9i5lamuJAMv83_Z|m0QwWW5kG}5x;9PV=&j3^*7{ywsTtdM922up6$jm}X=fe?U z1OfiY2vFNYq(A443cF7F84rye7la{!#zs~_zIz>oHqFwqPV2OAvp#L#ob$6zZrwsK zDev%*A#UUV0n7kRZ6Vv0@qFy>41w(#Q=m#+(^`Xjc? zRb1%aS_;s{2>rT*9TL+m{RiVL9P7eecVLSv+1Jzu86_*?{10?0O_oXX!b-cl6GdQU zq-Vb28{3y01E2(xZgToiL z;_+vjIIHtMAkQvpZOs9PeK#K}t&lG^(O?N{&r0kk(4C0OiO7*nJrCI2Y41cFYVYzL z_Ek1E z)Sd2AP4QhC$g@nMAz?%|b30;v0o`;xA_;b74pLkqm#bba2cx>JMUL2BrRQ+<;gZnknog!y4R+SrsH1WwgszdJJU_PK5ulLYbjUgoU`)L7BEsac%K(5Y%ym^^O;w`9|YsXMW(~*kux5)Ip<=#OO?OprOU9?k5x4B_t zE_PkIbNZqd*LYI_WP2}f#RGw|tMP)t)%BJ-M*iu@H5O`*Y|bYf`tOoI`yb-JVVV8u zY`h>;@frn(qL8F>-v=|+<{St(rScVg5e;+jtBugd9z}1nN{iw`4cM4CEX9YJaBgC% zD?l#zxBLBk**>;K2%_cm0}7a_{}u8{-7tY@RYOkOz-%HK#C?x8Vbn`&8H*!=kaPrx zfJ@N31J|JnP87IKNhvNW$yb04SZ$PT&dt#5H$v|C)Bz5TXIEshF?|2Iby-ncn%{$S zzCRf`6%_!EPx1JZ9HJpQMX|p@7_O?kINFk&5PEcGmULvC(Ab*(j4|{tgp^(q38!-a^Y9tXHVCjDvu!dj=Dm22_?1kY zq{>)EBRYa|na?%!i=rHD2oYv{{&F75oSa;9Lzy1q-5p^b`CAc3?U>8w$2YDvtxGZa zEGEL}M#@ZN{+}35kmqA0Ru9PZJ}zv5Mk==y>qnQ+{!nCNI^}t~#*`8B=meBf2%&vV zw#9ww!QY^s0n{#6&h7;9mxS!ZetegrRF%+Ip@?CDS1-Q)%6_e%&gKo~l>pK0MBgVg zat`^Z-#{QYW6G`avGy*~kx|iPwcMi{bm95KO1srBmAz3L$7rj|lF!z#LfeR&Td2Co z#V8s$2B!j9jpisOr|sXrt{=7@w;D#;?o`w8WHi`)mjP9{-v?B$Os=B+In{meIK$?0 z*e+ZRAm*Eo^Rk6};>$+P87?{#TN@Q?^BZDLLiI|-&Xy=hRl*&y1RWIS7N(|T1Qiug z6cz90=I4NIys(6)>rHEML!Ix&o2vQ}I z=tqXfC-Z;Mf6JBg303`W1nd>M{z?xlCy=E!cama{?m*&~pVv(aCBs{$?GeoxAtJ^O zlQZW+2|_jNqlwp65v5jP$X6k63hpjwuClv2S)lZzd9ef0Sh6B=+`O!E<6225 z-H_yb?z=y^X=4Hta0hqL%5d2mVlp&8LlyvuMfm7*Ta>7 z@kF-ck#_<@6hVf=R9SLzQ&$_@mrIA=8`u0=ANL49N@yVL#I z?NPx4w3pgF61Kq>*&WTEU<-Q|304k znMHfedNA$E9MWqhpJ%}jtIdr%)0BbkeTLhw>-w-h z{Iojc5byZ$F7rEUu)pUO^d{rewzGTlZQ91y&7&_ArxykVyDa2phLL+`aF-wG5!6pvlm_)H`kDYXUoy>OTAjvGA+4& zQo=zJT))Z+!WybZn%+(iyvupB*G}fUX|u=25KusaY74%-H>>v{IKM9WIjFM>*UJ=@ z5#abm>ye4u-O|4__kDE|upZn31@Ya6iYRvhT|^Q*Uf_QghY9a*C;|vIYsr{*#{dUT z@nEazjGzyq0-=L~EVqnf^F#F1bX_Ax6#~Ly!QaD6U6NmusvsR~r<6S1Lsp%<3xm>3O16u80vd|K=$52~U%VnT@Fqf7k|4 z&_u+bv5gg@8=xf0u1f6N0s4I$@IwC6Ne*Y=H zb&+@TYP!MUnXF`-#0qugI$3;26k}IfWU|sPqf390(`NO*e&U zvY#%?A`(x%5D|Ml%WIk5&@nXHMrkV~sZa>e6bWX_<%)mmXAdv^w{?0o`Ulr>rcR2@ zvV#B@wXN~py_FiYd0}>Rh3J8%@d}xp^hhntaF6-ukaGkWJ@v<8nWhtCy&2v>80t!s zZ{t4{AZA+bj-$feoIxL=$r;CJwEA(Po6#XMUDQHdenKj@2AUVo#9U+7<7*y+yE#64 z8n+l9RZ4jPMnjx&)nx^T*ho2y_C*gTW20Qdq|ot2RLw&M=h+pPu+u4_RtJ+Xjh#8q zt4iq-%DSLY+r&GfZ1I)G5x%j`{3gR{v)8%;{a>0 z@Q2N5qj@_Iq);Ist1mUqU$VHTu6h!?D+c(D&1YQqY*s(b8}9AS*TRn;+$y?p3Vo3AoD=hs5!jid{&i8GBWL5!=rfXCJQ zzg;pA^;0KQWn6t)^PwmU+l6Uxq`?W__GtA^j3_XMl5j&49}=_nn_y7)6oNC~8G6NX)QxS)r{u)O?3l z+Afj?HkzT;7J=m(bh!W7+@)#W4|-VWs$~+Bx!)FqcqhWN%>7+sSW?!%b$&fz$;ITV zz{G~%xgK$>Pfl(9Y&q~VAnvbfsj#;-2szFt3EX4&`hfj&@rajpxd)SqomBDRs(P@q z%lhNKa|`L^bV)N_SZtp69`~7{^X^F+a2$1>t3WSkQy0cHOI31m((I+qs-}(v>$E=T z7vxwwo{cBj3CQcG?pG6&^ZfkMAQU3$WPf*70LA-|5~ad``_#I`4lxIUG1Fuzu61Ij;73MINEI3&gH0bgr~)f09b_)(Xn^$JTfRB#)u9L<(F(9(29+Q7L`rl(+~R(clztqrDh+K z$df^!!1gOB#LLLZ35kjl60#l}5Ejdl`GWc4@zG)j*74ER(hpCL|KzL#SmQqz>tz z5man4WHrUohrrL-GlFk?uNCXm9w;nXsEG}dP~ z_j7DW2V-PkN33xgD@uZA))dCf2u~u|+b~7@NA1UMa`8rdxkG9q?8n53@%w$*%0r$% z!(UHJuk~JFeMS$A@N17CfKHhcm~q#F1Xl&yu#_nJ_u?`8orDl)JVG-W?5s4kEuThE z{t+>7Z8eM< z0dUCbzQ^c!yJHI^ZwZ)hg7MQsOWbSbm*&Qv?((*!Sd^5?Rb#%6X||4C@g*&9wak9M zO4mB*hkafDVYJ%PBm#a#O|yQHcykwgS9g z;?3O%G=BLu>_qb4musnKPj6{i3c(RcS32U?ERYJ`do^$YbTqAwoAX?&MQaTal)#~K z=PtnzI2x??85$*LGokLErwj#Mkm=oD%`oXm#9(PXuF*K@xdxO1L1+k!f4AQu1ORa2CYT}}D7K(0 zpteUWf0X`+l16J`^{9?jc1<5TC;KOM1Wq^~H{#Eh*>Y^PRuESpL2j(8KV_!cbZ)Pz zLV&OW(<|59K+CJYcK}Lh{7tN|a*qHipyf_GjBeW`0XY_W)oB0WSiB8{1m6J}7eE2D z$~m*UOsloOsbh~0Q=f!tN=Al99JfT4WEyB##?SUx7S)BW%Es3Whki2R$FGclr7b=u zV`L15M30r&$(4UaB%+$S45z8BGopw<4`)?KU>~wo5m8aa)<`qb-QsAcH-E;g5pgh( zli%+ulFPw^q@Z!nPn^z1*YM^lMHDuIQ;Y;t*fw>4hl~Y*Fja!5kfO2a2uc=-OD)vt ziqj)5Y)An;%&Jlyu73Z)1(AJcx(3+~kmKIe0l!l^;2I_?DKK(K!;$T$nV-XQlsHHCZU! zkGs%*Z1C!JrJcb$;C0|jC|T$by|3#z{}HaSqr10#p{va^zcuETA^E1Dqa)GNhJ76z z%W;NAx<2cD8{I{@L~qfmd*qFWF&YlmR%l_|h#98KFkafB)b!;oef2>XR0tE@=_O$l zNL&S+ltU{ZK##oJOf-(;nY6)*e0wAN5;#J#z0KLf>Rk7qtpzMM+AuOQk|2K-5)!h4 z+5nc>;X(dJX;iYSbr^_$CzKeO+QDTGPNwXU02w~`=0;orPMl(Pm!}kWPWCQL0iiD? zq$NXxEhf6d=Y)88Vutwv@A|@~&A%c>YY`#|qZ5>QcXQ!oQLGG$KfZ2yw!?pvA7^|L zDe>^m!NPQ7={_x=)xf;BI{V3GGUF(-GS%1leoi42)zSTwYs|{tE}+AYupJbymgqa& z;OE9&9gy!Hb$`fqFPCk5KZwfA?ft0%YuSJH@l^Qa%9@$@{Z(K#o) zIKTz`7ohXi{1!}vP_BWJOHcxeCJ}6PY?LKQF)9>+d?0M;F~29pr*MBD1h9}PU|_q} ze$(U-p+N3Bhu(a2`-LAr5v-I;1cKY46UXz&j1PIlFB#9H$4eQX`KZrjXxYtT7w+|O zEOu9X{G6KaRUTm=>p8&k+qnd2jIiLE0TC;CSdZoYlx;?Hwe2$} zd8z~xa-`XPK5IAqcy&WD;|r{UPV<|{D>k^%OQTYtLZAVZsKve^?<otr8Q zAW;5cLSd>RmSS4fLgOm@_%v_p-dKA4h-d#Y18ffZznnK19trB|`FHG}l5JCLu?$JQ z%8VQ>IucEZ@}h9?;46j1MD-r*4g`Ro&3$3qgIQv zueYw@r{?;=t#l+wK)^0CM?O`V;b!-lkP+N{506}vn+4dw?fJYx)-CMxKb^^#H2uk}8g=WlOC=ocz-z%*k1(b}k^z;xC;+ggSF0t9&!=EdT2jfYS zeF?CHXNH8Q=w=_+oDmC?_V}IJsr#x8Hlick&ufau)gWp4FmpE?sURV@FCqDQnziBT z5hPd|-tMe9j7695_gT7IA&3@PMC1%`&RRJvc1oKXN0O`SYlVxq@pB8G zhIh#&-q_0~p>#bq)mRe|m#)*q8`T6>>6a_#m+_YQOAQ8?Z@5<0Nj#4YPWzz@H6UjkO=3Tu=bGnEsiqr>`m-2kF>q2yYjwL`qgJ^G7*2>s>X#uT{yH}L-1^+0tz z9V&v#qBu&2fV>k80Z=ZZ^-^pG5)=#=04-5aP_w%W8ocAR6JzZmJ^T(DOO&-yDDUMp zOG6(`^8nWb7OSv&R4Bj%7S~G;;$DQC{^J!pQnEYAdK^GWcvPG6w9|`_d9=NMnWpzu zWz{ellqNPsSwvT!lNCxw3yCIIa-=IxRjQy9{KGe_W0|paActmE^sd|gZ_ zFrA|mu_{(JO|X9g#yxR@o{?j?YgMs3i~{jaYG#A2$A7kVxH%LaTp0Gr#pR4z8a!O( zoT;W1I=d76;T9&h^c!y=vIx1Z`ZbobG3#b6*7c!1+|CJ`&?fQs#=%C_5#uMSGr+Z3hw1nnC1CAG)03a^&^LV+wzE( z>t>yXuwBboiGZ=Zcq@EvQQn#ju%+USMDft>sLLJJXH@;MFN|URj&~DNk~ofIcKIkTuAQ6$_WzMa)$*grybls)$jXs32z!DQRhVsYB|R z$}MJK=I}pE5Wr~`UpAc{<(inkfQI#4FX4>h1WAFo@*y7V1p$SZ3 z7J{`3d(EaknHnf7*S^I%b(?eR+`6(KDw*3CAoDKsc4*M>jLnbA3%7s-2YwcCw`$Xc z6t>JNI?(S-6s_49ug6X6Z$9>b`z@xVh{ujoslRhu;} zXPMomy1)Eldmp=gAn{B5R#kiH^blIF>j7^7j#11K+Hs}z&X zd%{HaHO2*4{q%Y@#XMYGu#zARoQb-!KJ|+;z-TU`%2|RjH5VJKXoQ3T9DKM0gdMgV zyOz>L{wqfMv&cK&FAcv???)*Ad4DNwBa|-RJFQQ!ZsS{ph6CNU2Id+#0wK=BuIBBI z=2wJfOBw;J9M7NI2pv@z`DzhDH=eI7k$fD%*1C~T$EF2^#z`6XNRUF+1cFx+ll1gV zv@^w&o(z z;y?+NZcfG_mMv}OjK?V`7bxcgr3*sTT4)^iX%enU(6Czbi|S<;qwjuTui{_{2i9dy z-`z!hR8`>MQXK|=SkQqF%$|aUu+^HXXj6i zx;wX<{2_zfDaNS2K?+%AR+HiQ3?X*Qgxg32NL32uyK-mjLT+y%hSAfHNlDXla!%g< z0?Q`~RogcJ6>L@yD3UAI>G_B{v>lO zOO&TOI+2^zl(e&>7aCSOTtle$We#%?ga-tJyanuY2ozpUHbOU#fqvmb1|P^52vJkV z61!gn1xC6xD>f=TjZYzQ!QCOcp4Bh%V? z0wO(Ip1+`7Tx>rti`O~b(*g;SJDO0R!^Wunq58^!kBz*NrsQ2gxp&$x{Lo>jSCEg@ zO=Bg@Kmq*bTe?dPJ&Ss^rh#xgQoptxy{}_G!z`PZ`Me5g=zc>}ai zdQPDbRdGr0-+>bZfx->=(QPo~80NIY-|2@NIj0RV?7u{gVL2)vLp2XJd%jaxR&ouN zQm?s3YP;Wo4N_?pTIwWqba=X|SK9ACvbGc^h-+KnRQ(IC_$wgtMEOq^=FIMj9Xe+) zrUrXjf=FbLHQW*8m-#{W0YufDcS1h8kbvWHCOM`=2zAs}o#N$ShwJl<_iG8g;3~~i zjzu2^v@SXGF|Nr($jkK9TOuss-2+?UIERGEx^*{}o(jO+n9yI~ZAMp7xaFrg8aEmCE2Ps+K$IQq}ORA=_{a59|B%x+RI4IkSg48TRa!+*$e3e zV~p;v=|#o>W7?|fMYqWq(D_!9kuhU+L;Tf_D_qv5N?+{eQQEXd{c@AMtm=$%(wn1K zyzhs)`E)NSTu#*vlb-Lrk>Ey?9K8=6PZX1N0_dtLo6`Sm%D-N{o)l*Q?^EZe;L4{s ze-{)6f4EOwpnoRSzi zIeIUxF<6%4Q-J6qlj!jx^P>68=!OA=jxW}3q8D!*T#RLOG1Y!gH1=w9s=Hn6%;t-NzFmLRA5kA(0hm2V0kid2qe**UwYHNaEP+9ScrHm)K)mh)qotwhjC&tctzQ zI6t>|5K}WZuJD2~(I`!GEIybP%`0gC-DjbcMVJUpZN&zzfCDR%0An=k;RFE*>1OoM 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 literal 0 HcmV?d00001 diff --git a/example/common/tiny_shakespeare_dataset.cc b/example/common/tiny_shakespeare_dataset.cc index 3bc5f1b..1f545f6 100644 --- a/example/common/tiny_shakespeare_dataset.cc +++ b/example/common/tiny_shakespeare_dataset.cc @@ -61,14 +61,55 @@ TinyShakespeareFile ReadTinyShakespeareFile(const std::string &path, size_t sequ | magic(4B) | version(4B) | num_toks(4B) | reserved(1012B) | token数据 | ---------------------------------------------------------------------------------- =================================== 作业 =================================== */ + if (!std::filesystem::exists(path)) { + LOG(FATAL) << "File not found: " << path; + } + + TinyShakespeareFile text_file; + std::ifstream ifs(path, std::ios::binary); + const auto header = ReadSeveralBytesFromIfstream(1024, &ifs); + const int magic = BytesToType(header, 0); + const int version = BytesToType(header, 4); + const int num_tokens = BytesToType(header, 8); + text_file.type = kTypeMap.at(magic); + + const int num_sequences = num_tokens / sequence_length; + text_file.dims.assign({num_sequences, static_cast(sequence_length)}); + + const int data_size_in_bytes + = kTypeToSize.at(text_file.type) + * std::accumulate(text_file.dims.begin(), text_file.dims.end(), 1, std::multiplies()); + // shape: (num_seq, seq_len), dtype: int64 + text_file.tensor = infini_train::Tensor(text_file.dims, DataType::kINT64); + int64_t *dst = static_cast(text_file.tensor.DataPtr()); + + std::variant, std::vector> buffer; + if (text_file.type == TinyShakespeareType::kUINT16) { + CHECK_LE(sequence_length, 1024); // GPT-2: max_seq_length = 1024 + buffer = std::vector(num_sequences * sequence_length); + } else if (text_file.type == TinyShakespeareType::kUINT32) { + CHECK_LE(sequence_length, 8192); // LLaMA-3: max_seq_length = 8192 + buffer = std::vector(num_sequences * sequence_length); + } + std::visit( + [&](auto &vec) { + ifs.read(reinterpret_cast(vec.data()), data_size_in_bytes); + for (size_t i = 0; i < vec.size(); ++i) { dst[i] = static_cast(vec[i]); } + }, + buffer); + return text_file; } } // namespace -TinyShakespeareDataset::TinyShakespeareDataset(const std::string &filepath, size_t sequence_length) { +TinyShakespeareDataset::TinyShakespeareDataset(const std::string &filepath, size_t sequence_length) + : text_file_(ReadTinyShakespeareFile(filepath, sequence_length)), sequence_length_(sequence_length), + sequence_size_in_bytes_(sequence_length * sizeof(int64_t)), num_samples_(text_file_.dims[0] - 1) { // =================================== 作业 =================================== // TODO:初始化数据集实例 // HINT: 调用ReadTinyShakespeareFile加载数据文件 // =================================== 作业 =================================== + CHECK_EQ(text_file_.dims[1], sequence_length_); + CHECK_EQ(static_cast(text_file_.tensor.Dtype()), static_cast(DataType::kINT64)); } std::pair, std::shared_ptr> diff --git a/example/common/tokenizer.cc b/example/common/tokenizer.cc index 23b9537..8684880 100644 --- a/example/common/tokenizer.cc +++ b/example/common/tokenizer.cc @@ -78,6 +78,41 @@ Tokenizer::Tokenizer(const std::string &filepath) { | magic(4B) | version(4B) | vocab_size(4B) | reserved(1012B) | token词表数据 | ---------------------------------------------------------------------------------- ===================================== 作业 ===================================== */ + if (!std::filesystem::exists(filepath)) { + LOG(FATAL) << "File not found: " << filepath; + } + + std::ifstream ifs(filepath, std::ios::binary); + const auto header = ReadSeveralBytesFromIfstream(1024, &ifs); + + magic_number_ = BytesToType(header, 0); + const uint32_t version_num = BytesToType(header, 4); + vocab_size_ = BytesToType(header, 8); + if (kEotMap.find(magic_number_) == kEotMap.end()) { + LOG(FATAL) << "Unsupported tokenizer magic: " << magic_number_; + } + + Version version = static_cast(version_num); + if (version == Version::kV1) { + eot_token_ = kEotMap.at(magic_number_); + } else if (version == Version::kV2) { + const uint32_t eot_token_2 = BytesToType(header, 12); + eot_token_ = eot_token_2; + } else { + LOG(FATAL) << "Unsupported tokenizer version: " << version_num; + return; + } + + token_table_.resize(vocab_size_); + for (uint32_t i = 0; i < vocab_size_; ++i) { + uint8_t length; + ifs.read(reinterpret_cast(&length), sizeof(length)); + + std::vector buffer(length); + ifs.read(buffer.data(), length); + + token_table_[i] = std::string(buffer.data(), length); + } } std::string Tokenizer::Decode(uint32_t token_id) const { @@ -85,7 +120,10 @@ std::string Tokenizer::Decode(uint32_t token_id) const { TODO:实现token_id到文本的转换 功能描述:根据token_id返回对应的文本片段 ===================================== 作业 ===================================== */ - return ""; + if (token_id >= vocab_size_) { + return "[INVALID_TOKEN]"; + } + return token_table_[token_id]; } void Tokenizer::GenerateText(infini_train::nn::Module &model, uint32_t batch_size, uint32_t sequence_length, @@ -106,11 +144,28 @@ void Tokenizer::GenerateText(infini_train::nn::Module &model, uint32_t batch_siz auto x = std::make_shared(x_tensor.To(device)); uint64_t kRngState = kRngState; LOG(INFO) << "start generate text:"; + + infini_train::Device cpu_device = infini_train::Device(infini_train::DeviceType::kCPU, 0); for (int t = prompt_len; t < text_length; t++) { /* ===================================== 作业 ===================================== TODO:实现单步文本生成逻辑 HINT:调用model.Forward推理获取logits,根据推理结果进行随机采样,调用Decode获取文本结果 ===================================== 作业 ===================================== */ + x = std::make_shared(x->To(device)); // CPU->calc device + // TODO(jym): use no_grad forward later + auto logits = model.Forward({x})[0]; + auto logits_orignal = nn::function::Softmax(logits, -1); + auto logits_cpu = logits_orignal->To(cpu_device); + auto data = logits_cpu.DataPtr(); + auto vocab_size = logits->Dims()[2]; + float *probs = static_cast(data) + (t - 1) * vocab_size; + float coin = RandomF32(kRngState); + int next_token = SampleMult(probs, vocab_size, coin); + + x = std::make_shared(x->To(cpu_device)); // calc device->CPU + auto data_temp = static_cast(x->DataPtr()); + data_temp[t] = next_token; + std::cout << Decode(next_token); } std::cout << std::endl; } diff --git a/infini_train/include/common/common.h b/infini_train/include/common/common.h new file mode 100644 index 0000000..5b16dea --- /dev/null +++ b/infini_train/include/common/common.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#include "glog/logging.h" + +#include "infini_train/include/datatype.h" +#include "infini_train/include/device.h" +#include "infini_train/include/tensor.h" + +#define CEIL_DIV(x, y) (((x) + (y)-1) / (y)) +#define LOG_LOC(LEVEL, MSG) LOG(LEVEL) << MSG << " at " << __FILE__ << ":" << __LINE__ +#define LOG_UNSUPPORTED_DTYPE(DTYPE, CONTEXT_IDENTIFIER) \ + LOG_LOC(FATAL, WRAP(CONTEXT_IDENTIFIER << ": Unsupported data type: " \ + + kDataTypeToDesc.at(static_cast(dtype)))) diff --git a/infini_train/include/common/cuda/common_cuda.cuh b/infini_train/include/common/cuda/common_cuda.cuh new file mode 100644 index 0000000..812fcb1 --- /dev/null +++ b/infini_train/include/common/cuda/common_cuda.cuh @@ -0,0 +1,285 @@ +#pragma once + +#include "cuda.h" +#include "cuda_runtime.h" +#include +#include + +#include "../common.h" +#include "infini_train/include/dispatcher.h" +#ifdef USE_NCCL +#include "nccl.h" +#endif + +namespace infini_train::common::cuda { + +// Common CUDA Macros +#define CUDA_CHECK(call) \ + do { \ + cudaError_t status = call; \ + if (status != cudaSuccess) { \ + LOG(FATAL) << "CUDA Error: " << cudaGetErrorString(status) << " at " << __FILE__ << ":" << __LINE__; \ + } \ + } while (0) + +#define CUBLAS_CHECK(call) \ + do { \ + cublasStatus_t status = call; \ + if (status != CUBLAS_STATUS_SUCCESS) { \ + LOG(FATAL) << "CUBLAS Error: " << cublasGetStatusString(status) << " at " << __FILE__ << ":" << __LINE__; \ + } \ + } while (0) + +#define CUDA_DRIVER_CHECK(call) \ + do { \ + CUresult status = call; \ + if (status != CUresult::CUDA_SUCCESS) { \ + const char *err_str = nullptr; \ + cuGetErrorString(status, &err_str); \ + LOG(FATAL) << "CUDA Driver API error: " << #call << " failed with error (" << status \ + << "): " << (err_str ? err_str : "Unknown error"); \ + } \ + } while (0) + +#ifdef USE_NCCL +#define NCCL_CHECK(expr) \ + do { \ + ncclResult_t _status = (expr); \ + if (_status != ncclSuccess) { \ + LOG(FATAL) << "NCCL error: " << ncclGetErrorString(_status) << " at " << __FILE__ << ":" << __LINE__ \ + << " (" << #expr << ")"; \ + } \ + } while (0) +#endif + +/** + * Converts a value between arbitrary types with specialized handling for + * CUDA floating-point precisions. For primitive types, this offers perfect + * forwarding which preserves value categories (lvalues/rvalues) + * + * @tparam DST Destination type (deduced) + * @tparam SRC Source type (deduced) + * @param x Input value (preserves const/volatile and value category) + * @return Value converted to DST type + * + * Example: + * half h = Cast(3.14f); // float -> half (CUDA intrinsic) + * float f = Cast(h); // half -> float (CUDA intrinsic) + * int i = Cast(2.718); // double -> int (standard cast) + */ +// TODO(lzm): add support for half and nv_bfloat16 conversions with integral types +template __host__ __device__ DST Cast(SRC &&x) { + static_assert(!std::is_reference_v, "Cast cannot return reference types"); + + using SRC_base = std::remove_cv_t>; + using DST_base = std::remove_cv_t>; + + // nv_bfloat16 conversions + if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + return __bfloat162float(x); + } else if constexpr (std::is_same_v) { + return static_cast(__bfloat162float(x)); + } else if constexpr (std::is_same_v) { + return __half(x); + } + } + // half conversions + else if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + return __half2float(x); + } else if constexpr (std::is_same_v) { + return static_cast(__half2float(x)); + } else if constexpr (std::is_same_v) { + return __nv_bfloat16(x); + } + } + // float conversions to reduced precision + else if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + return __float2bfloat16(x); + } else if constexpr (std::is_same_v) { + return __float2half(x); + } + } + // double conversions to reduced precision + else if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + return __double2bfloat16(x); + } else if constexpr (std::is_same_v) { + return __double2half(x); + } + } + // Fallback for all other conversions + return (DST)(std::forward(x)); +} + +template __device__ __forceinline__ T Neg(const T &x) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hneg(x); + } else { + return -x; + } +} + +template __device__ __forceinline__ T Reciprocal(const T &x) { + if constexpr (std::is_same_v) { + return __hdiv(__float2half(1.0f), x); + } else if constexpr (std::is_same_v) { + return __hdiv(__float2bfloat16(1.0f), x); + } else { + return T(1) / x; + } +} + +template __device__ __forceinline__ T Sin(const T &x) { + if constexpr (std::is_same_v) { + return __float2half(__sinf(__half2float(x))); + } else if constexpr (std::is_same_v) { + return __float2bfloat16(__sinf(__bfloat162float(x))); + } else if constexpr (std::is_same_v) { + return __sinf(x); + } else { + return std::sin(x); + } +} + +template __device__ __forceinline__ T Cos(const T &x) { + if constexpr (std::is_same_v) { + return __float2half(__cosf(__half2float(x))); + } else if constexpr (std::is_same_v) { + return __float2bfloat16(__cosf(__bfloat162float(x))); + } else if constexpr (std::is_same_v) { + return __cosf(x); + } else { + return std::cos(x); + } +} + +template __device__ __forceinline__ T Tanh(const T &x) { + if constexpr (std::is_same_v || std::is_same_v) { + return htanh(x); + } else if constexpr (std::is_same_v) { + return tanhf(x); + } else { + return std::tanh(x); + } +} + +template __device__ __forceinline__ T Pow(const T &x, const T &exponent) { + if constexpr (std::is_same_v) { + float x_ = __bfloat162float(x); + float exponent_ = __bfloat162float(exponent); + float ans_f = __powf(x_, exponent_); + return __float2bfloat16(__isnan(ans_f) ? std::pow(x_, exponent_) : ans_f); + } else if constexpr (std::is_same_v) { + float x_ = __half2float(x); + float exponent_ = __half2float(exponent); + float ans_f = __powf(x_, exponent_); + return __float2half(__isnan(ans_f) ? std::pow(x_, exponent_) : ans_f); + } else if constexpr (std::is_same_v) { + return powf(x, exponent); + } else { + return std::pow(x, exponent); + } +} + +template __device__ __forceinline__ T Rsqrt(const T &x) { + if constexpr (std::is_same_v) { + return __float2half(rsqrtf(__half2float(x))); + } else if constexpr (std::is_same_v) { + return __float2bfloat16(rsqrtf(__bfloat162float(x))); + } else if constexpr (std::is_same_v) { + return rsqrtf(x); + } else { + return T(1) / std::sqrt(T(x)); + } +} + +template __device__ __forceinline__ T Log(const T &x) { + if constexpr (std::is_same_v) { + return __float2bfloat16(__logf(__bfloat162float(x))); + } else if constexpr (std::is_same_v) { + return __float2half(__logf(__half2float(x))); + } else if constexpr (std::is_same_v) { + return __logf(x); + } else { + return std::log(x); + } +} + +template __device__ __forceinline__ T Add(const T &a, const T &b) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hadd(a, b); + } else { + return a + b; + } +} + +template __device__ __forceinline__ T Sub(const T &a, const T &b) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hsub(a, b); + } else { + return a - b; + } +} + +template __device__ __forceinline__ T Mul(const T &a, const T &b) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hmul(a, b); + } else { + return a * b; + } +} + +template __device__ __forceinline__ T Div(const T &a, const T &b) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hdiv(a, b); + } else { + return a / b; + } +} + +template __device__ __forceinline__ T Sigmoid(const T &x) { + if constexpr (std::is_same_v) { + return 1.0f / (1.0f + expf(-x)); + } else if constexpr (std::is_same_v || std::is_same_v) { + return __hdiv(T(1), T(1) + hexp(-x)); + } else { + return T(1) / (T(1) + std::exp(-x)); + } +} + +template __device__ __forceinline__ T Max(const T &a, const T &b) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hle(a, b) ? b : a; + } else if constexpr (std::is_same_v) { + return fmaxf(a, b); + } else { + return std::max(a, b); + } +} + +template __device__ __forceinline__ T Min(const T &a, const T &b) { + if constexpr (std::is_same_v || std::is_same_v) { + return __hle(a, b) ? a : b; + } else if constexpr (std::is_same_v) { + return fminf(a, b); + } else { + return std::min(a, b); + } +} + +template __device__ __forceinline__ T Fma(const T &x, const T &y, const T &z) { + if constexpr (std::is_same_v) { + return __hfma(x, y, z); + } else if constexpr (std::is_same_v) { + return __float2bfloat16(__fmaf_rn(__bfloat162float(x), __bfloat162float(y), __bfloat162float(z))); + } else if constexpr (std::is_same_v) { + return __fmaf_rn(x, y, z); + } else { + return std::fma(x, y, z); + } +} + +} // namespace infini_train::common::cuda diff --git a/infini_train/include/datatype.h b/infini_train/include/datatype.h new file mode 100644 index 0000000..70d712b --- /dev/null +++ b/infini_train/include/datatype.h @@ -0,0 +1,99 @@ +#pragma once + +#include +#include +#include +#include + +#ifdef USE_CUDA +#include +#include +#endif + +namespace infini_train { +enum class DataType : int8_t { + kUINT8, + kINT8, + kUINT16, + kINT16, + kUINT32, + kINT32, + kUINT64, + kINT64, + kBFLOAT16, + kFLOAT16, + kFLOAT32, + kFLOAT64, +}; + +inline const std::unordered_map kDataTypeToSize = { + {DataType::kUINT8, 1}, {DataType::kINT8, 1}, {DataType::kUINT16, 2}, {DataType::kINT16, 2}, + {DataType::kUINT32, 4}, {DataType::kINT32, 4}, {DataType::kUINT64, 8}, {DataType::kINT64, 8}, + {DataType::kBFLOAT16, 2}, {DataType::kFLOAT16, 2}, {DataType::kFLOAT32, 4}, {DataType::kFLOAT64, 8}, +}; + +inline const std::unordered_map kDataTypeToDesc = { + {DataType::kUINT8, "uint8"}, {DataType::kINT8, "int8"}, {DataType::kUINT16, "uint16"}, + {DataType::kINT16, "int16"}, {DataType::kUINT32, "uint32"}, {DataType::kINT32, "int32"}, + {DataType::kUINT64, "uint64"}, {DataType::kINT64, "int64"}, {DataType::kBFLOAT16, "bf16"}, + {DataType::kFLOAT16, "fp16"}, {DataType::kFLOAT32, "fp32"}, {DataType::kFLOAT64, "fp64"}, +}; + +/** + * Compile-time type mapping from DataType enum to concrete C++ types. + * + * - Primary template: Declared but undefined to enforce specialization + * - Specializations: Explicit mappings (DataType::kFLOAT32 → float, etc) + * - TypeMap_t alias: Direct access to mapped type (TypeMap_t → int32_t) + * + * Enables type-safe generic code where operations dispatch based on DataType tokens, + * with zero runtime overhead. Extend by adding new specializations. + */ +template struct TypeMap; +template using TypeMap_t = typename TypeMap::type; + +template <> struct TypeMap { + using type = uint8_t; +}; +template <> struct TypeMap { + using type = int8_t; +}; +template <> struct TypeMap { + using type = uint16_t; +}; +template <> struct TypeMap { + using type = int16_t; +}; +template <> struct TypeMap { + using type = uint32_t; +}; +template <> struct TypeMap { + using type = int32_t; +}; +template <> struct TypeMap { + using type = uint64_t; +}; +template <> struct TypeMap { + using type = int64_t; +}; +template <> struct TypeMap { + using type = float; +}; +template <> struct TypeMap { + using type = double; +}; +template <> struct TypeMap { +#ifdef USE_CUDA + using type = nv_bfloat16; +#else + using type = uint16_t; +#endif +}; +template <> struct TypeMap { +#ifdef USE_CUDA + using type = half; +#else + using type = uint16_t; +#endif +}; +} // namespace infini_train diff --git a/infini_train/include/device.h b/infini_train/include/device.h index ebc49e3..0272ae6 100644 --- a/infini_train/include/device.h +++ b/infini_train/include/device.h @@ -1,9 +1,19 @@ #pragma once #include +#include #include "glog/logging.h" +#ifdef USE_CUDA +#include "cublas_v2.h" +#include "cuda.h" +#include "cuda_runtime_api.h" +#endif +#ifdef USE_NCCL +#include "nccl.h" +#endif + namespace infini_train { enum class DeviceType : int8_t { kCPU = 0, @@ -26,13 +36,71 @@ class Device { bool IsCPU() const; bool IsCUDA() const; + virtual void SetDevice() const {} + virtual void Synchronize() const {} + std::string ToString() const; friend std::ostream &operator<<(std::ostream &os, const Device &device); -private: +protected: DeviceType type_; int8_t index_; }; +class CpuDevice : public Device { +private: + CpuDevice(); + + friend class DeviceManager; +}; + +#ifdef USE_CUDA +class CudaDevice : public Device { +public: + ~CudaDevice(); + + void SetDevice() const override; + void Synchronize() const override; + + cudaStream_t Stream() const; + + cublasHandle_t CublasHandle() const; +#ifdef USE_NCCL + ncclComm_t NcclComm() const; +#endif + +private: + CudaDevice(int8_t index); + + cudaStream_t stream_ = nullptr; + + cublasHandle_t cublas_handle_ = nullptr; +#ifdef USE_NCCL + ncclComm_t nccl_comm_ = nullptr; +#endif + + friend class DeviceManager; +}; +#endif + +class DeviceManager { +public: + static const DeviceManager *Instance(); + + const Device *GetDevice(DeviceType type, int8_t index = 0) const; + + const Device *GetDefaultDevice() const; + + std::vector GetAllAvailableDevices(DeviceType device_type) const; + +private: + DeviceManager(); + +#ifdef USE_NCCL + void InitNcclCommunicators(); +#endif + + std::unordered_map>> devices_map_; +}; } // namespace infini_train diff --git a/infini_train/include/dispatcher.h b/infini_train/include/dispatcher.h index 5b91d85..77eea14 100644 --- a/infini_train/include/dispatcher.h +++ b/infini_train/include/dispatcher.h @@ -7,21 +7,400 @@ #include "glog/logging.h" +#include "infini_train/include/common/common.h" #include "infini_train/include/device.h" +/** + * General Utility Macros + */ +#define EXPAND(X) X +// This macro lets you pass an arbitrary expression that may contain internal +// commas to another macro without having the commas causing the expression +// to be interpreted as being multiple arguments +// Basically an alternative for __VA_OPTS__ before C++20 +// ref: https://github.com/pytorch/pytorch/blob/main/aten/src/ATen/Dispatch_v2.h +#define WRAP(...) __VA_ARGS__ +#define CAT(a, b) CAT_(a, b) +#define CAT_(a, b) a##b + +/** + * Data Type Macros + * Defines common categories of data types for dispatching + */ +#define INFINI_FLOATING_TYPES DataType::kFLOAT32, DataType::kFLOAT64 +#define INFINI_REDUCED_FLOATING_TYPES DataType::kFLOAT16, DataType::kBFLOAT16 +#define INFINI_ALL_FLOATING_TYPES EXPAND(INFINI_FLOATING_TYPES), EXPAND(INFINI_REDUCED_FLOATING_TYPES) +#define INFINI_SIGNED_INTEGRAL_TYPES DataType::kINT8, DataType::kINT16, DataType::kINT32, DataType::kINT64 +#define INFINI_UNSIGNED_INTEGRAL_TYPES DataType::kUINT8, DataType::kUINT16, DataType::kUINT32, DataType::kUINT64 +#define INFINI_ALL_INTEGRAL_TYPES EXPAND(INFINI_SIGNED_INTEGRAL_TYPES), EXPAND(INFINI_UNSIGNED_INTEGRAL_TYPES) +#define INFINI_ALL_TYPES EXPAND(INFINI_ALL_FLOATING_TYPES), EXPAND(INFINI_ALL_INTEGRAL_TYPES) +#define INFINI_8_BIT_TYPES DataType::kINT8, DataType::kUINT8 +#define INFINI_16_BIT_TYPES DataType::kINT16, DataType::kUINT16, DataType::kFLOAT16, DataType::kBFLOAT16 +#define INFINI_32_BIT_TYPES DataType::kINT32, DataType::kUINT32, DataType::kFLOAT32 +#define INFINI_64_BIT_TYPES DataType::kINT64, DataType::kUINT64, DataType::kFLOAT64 + +/** + * Dispatch Macros + */ +#define DISPATCH_WITH_DEFAULT(DTYPE_EXPR, BODY, DEFAULT_BODY, ...) \ + switch (DTYPE_EXPR) { \ + CAT(DISPATCH_CASE_, PP_NARG(__VA_ARGS__))(__VA_ARGS__, WRAP(BODY)) default : { WRAP(DEFAULT_BODY); } \ + } + +// dispatch with switch and arbitrary number of cases +#define DISPATCH(DTYPE_EXPR, BODY, ...) \ + DISPATCH_WITH_DEFAULT( \ + DTYPE_EXPR, WRAP(BODY), \ + EXPAND(LOG(FATAL) << "Unsupported data type at " << __FILE__ << ":" << __LINE__; return nullptr;), \ + __VA_ARGS__) + +// dispatch a single case +#define DISPATCH_CASE(BODY, ...) CAT(DISPATCH_CASE_, PP_NARG(__VA_ARGS__))(__VA_ARGS__, WRAP(BODY)) + +// Helper macros to count the number of arguments +#define PP_NARG(...) PP_NARG_(__VA_ARGS__, PP_RSEQ_N()) +#define PP_NARG_(...) PP_ARG_N(__VA_ARGS__) +#define PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ + _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, \ + _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, \ + _63, N, ...) \ + N +#define PP_RSEQ_N() \ + 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, \ + 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, \ + 7, 6, 5, 4, 3, 2, 1, 0 + +// Macros to generate case labels +// Should have up to number of DataType cases (currently 12) +#define DISPATCH_CASE_1(T1, BODY) \ + case T1: { \ + BODY break; \ + } + +#define DISPATCH_CASE_2(T1, T2, BODY) \ + case T1: \ + case T2: { \ + BODY break; \ + } + +#define DISPATCH_CASE_3(T1, T2, T3, BODY) \ + case T1: \ + case T2: \ + case T3: { \ + BODY break; \ + } + +#define DISPATCH_CASE_4(T1, T2, T3, T4, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: { \ + BODY break; \ + } + +#define DISPATCH_CASE_5(T1, T2, T3, T4, T5, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: { \ + BODY break; \ + } + +#define DISPATCH_CASE_6(T1, T2, T3, T4, T5, T6, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: { \ + BODY break; \ + } + +#define DISPATCH_CASE_7(T1, T2, T3, T4, T5, T6, T7, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: \ + case T7: { \ + BODY break; \ + } + +#define DISPATCH_CASE_8(T1, T2, T3, T4, T5, T6, T7, T8, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: \ + case T7: \ + case T8: { \ + BODY break; \ + } + +#define DISPATCH_CASE_9(T1, T2, T3, T4, T5, T6, T7, T8, T9, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: \ + case T7: \ + case T8: \ + case T9: { \ + BODY break; \ + } + +#define DISPATCH_CASE_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: \ + case T7: \ + case T8: \ + case T9: \ + case T10: { \ + BODY break; \ + } + +#define DISPATCH_CASE_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: \ + case T7: \ + case T8: \ + case T9: \ + case T10: \ + case T11: { \ + BODY break; \ + } + +#define DISPATCH_CASE_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, BODY) \ + case T1: \ + case T2: \ + case T3: \ + case T4: \ + case T5: \ + case T6: \ + case T7: \ + case T8: \ + case T9: \ + case T10: \ + case T11: \ + case T12: { \ + BODY break; \ + } + namespace infini_train { + +template struct DataTypeList {}; + +template struct IsDataTypeInList; + +template +struct IsDataTypeInList> : std::disjunction...> {}; + +template +inline constexpr bool IsDataTypeInList_v = IsDataTypeInList::value; + +// function to check if a type is in a list of types +template inline constexpr bool IsTypeInList = (std::is_same_v || ...); + +/** + * @brief Dispatches a functor call based on runtime DataType, restricted to specified allowed types. + * + * This function: + * 1. Maps runtime DataType to compile-time C++ types using TypeMap_t + * 2. Only processes types specified in AllowedDTypes template parameter + * 3. Calls functor with resolved type and forwarded arguments + * + * @tparam AllowedDTypes List of DataType enums to support + * @param dtype Runtime data type to dispatch + * @param func Templated functor to call (must accept operator()) + * @param context_identifier Optional string for context in error messages + * @param args Arguments to be forwarded to the functor + * + * Behavior: + * - For allowed types: Instantiates functor with mapped C++ type + * - For disallowed and unknown types: Logs error and returns + * + * @see TypeMap for DataType to C++ type mapping + */ +template +auto DispatchFunc(DataType dtype, Functor &&func, std::string_view context_identifier = "", Args &&...args) { + switch (dtype) { + +#define CASE_FOR_TYPE(DType) \ + case DType: { \ + if constexpr (IsTypeInList, TypeMap_t...>) { \ + return std::forward(func).template operator()>(std::forward(args)...); \ + } else { \ + break; \ + } \ + } + + CASE_FOR_TYPE(DataType::kUINT8) + CASE_FOR_TYPE(DataType::kINT8) + CASE_FOR_TYPE(DataType::kUINT16) + CASE_FOR_TYPE(DataType::kINT16) + CASE_FOR_TYPE(DataType::kUINT32) + CASE_FOR_TYPE(DataType::kINT32) + CASE_FOR_TYPE(DataType::kUINT64) + CASE_FOR_TYPE(DataType::kINT64) + CASE_FOR_TYPE(DataType::kFLOAT32) + CASE_FOR_TYPE(DataType::kFLOAT64) +#ifdef USE_CUDA + CASE_FOR_TYPE(DataType::kBFLOAT16) + CASE_FOR_TYPE(DataType::kFLOAT16) +#endif +#undef CASE_FOR_TYPE + } + LOG_UNSUPPORTED_DTYPE(dtype, context_identifier); + // prevent the compiler warning about control reaching the end of non-void function + std::abort(); +} + +namespace { +/** + * @brief Responsible for resolving a list of data types and invoking a functor with the corresponding C++ types. + * + * @tparam index Current index in the `dtypes` vector. + * @tparam AllowedListTuple Tuple of allowed `DataType` sets per dispatch level. + * @tparam ResolvedTypes Accumulated resolved C++ types. + */ +template struct DtypeDispatcher { + + /** + * @brief Dispatches based on runtime data types and invokes the functor with resolved C++ types. + * + * Recursively matches each `DataType` in `dtypes` against the corresponding allowed list in + * `AllowedListTuple`. For each match, maps the `DataType` to a C++ type using `TypeMap_t`. + * Once all types are resolved, invokes the functor. + * + * @param dtypes Vector of runtime data types to dispatch on. + * @param func Functor to invoke with resolved template types. + * @param context_identifier String used for logging or error context. + * @param args Additional arguments forwarded to the functor. + * @return Result of invoking the functor with resolved types and forwarded arguments. + */ + template + static auto call(const std::vector &dtypes, Functor &&func, std::string_view context_identifier, + Args &&...args) { + constexpr size_t num_lists = std::tuple_size_v; + + if constexpr (index == num_lists) { + // Base case: All types resolved, invoke the functor + return std::forward(func).template operator()(std::forward(args)...); + } else { + // Recursive case: Resolve the next type + using CurrentList = std::tuple_element_t; + DataType dtype = dtypes[index]; + + switch (dtype) { +#define CASE_FOR_TYPE(DType) \ + case DType: \ + if constexpr (IsDataTypeInList_v) { \ + using T = TypeMap_t; \ + return DtypeDispatcher::call( \ + dtypes, std::forward(func), context_identifier, std::forward(args)...); \ + } else { \ + break; \ + } + + CASE_FOR_TYPE(DataType::kUINT8) + CASE_FOR_TYPE(DataType::kINT8) + CASE_FOR_TYPE(DataType::kUINT16) + CASE_FOR_TYPE(DataType::kINT16) + CASE_FOR_TYPE(DataType::kUINT32) + CASE_FOR_TYPE(DataType::kINT32) + CASE_FOR_TYPE(DataType::kUINT64) + CASE_FOR_TYPE(DataType::kINT64) + CASE_FOR_TYPE(DataType::kFLOAT32) + CASE_FOR_TYPE(DataType::kFLOAT64) +#ifdef USE_CUDA + CASE_FOR_TYPE(DataType::kBFLOAT16) + CASE_FOR_TYPE(DataType::kFLOAT16) +#endif +#undef CASE_FOR_TYPE + } + LOG_UNSUPPORTED_DTYPE(dtype, context_identifier); + // prevent the compiler warning about control reaching the end of non-void function + std::abort(); + } + } +}; +} // namespace + +/** + * @brief Dispatches a functor based on a list of runtime data types. + * + * Given a vector of `DataType` values and corresponding allowed type lists, this function resolves + * each data type to its mapped C++ type using `TypeMap_t`, then invokes the provided functor with + * those types as template parameters. + * + * @tparam AllowedTypeLists Variadic list of allowed data type sets per dispatch level. + * @tparam Functor Callable object with a templated call operator. + * @tparam Args Additional arguments to forward to the functor. + * + * @param dtypes Vector of runtime data types to dispatch on. + * @param func Functor to invoke after resolving types. + * @param context_identifier Optional context string for error reporting/logging. + * @param args Additional arguments to pass to the functor. + * @return Result of invoking the functor with resolved template types and arguments. + * + * Example functor using a templated lambda: [=]() { ... } + */ +template +auto DispatchFunc(const std::vector &dtypes, Functor &&func, std::string_view context_identifier = "", + Args &&...args) { + constexpr size_t num_lists = sizeof...(AllowedTypeLists); + if (dtypes.size() != num_lists) { + LOG(FATAL) << std::format("DispatchFunc expects {} dtypes, but only got {} in {}", num_lists, dtypes.size(), + context_identifier); + std::abort(); + } + + using AllowedListTuple = std::tuple; + return DtypeDispatcher<0, AllowedListTuple>::call(dtypes, std::forward(func), context_identifier, + std::forward(args)...); +} + class KernelFunction { public: template explicit KernelFunction(FuncT &&func) : func_ptr_(reinterpret_cast(func)) {} template RetT Call(ArgsT... args) const { // =================================== 作业 =================================== - // TODO:实现通用kernel调用接口 - // 功能描述:将存储的函数指针转换为指定类型并调用 - // =================================== 作业 =================================== +#ifdef PROFILE_MODE + const auto &ctx = GetProfileContext(); + Profiler::Instance().StartRecord(ctx.name, ctx.device); +#endif using FuncT = RetT (*)(ArgsT...); - // TODO: 实现函数调用逻辑 + auto fn = reinterpret_cast(func_ptr_); + + if constexpr (std::is_void_v) { + fn(std::forward(args)...); + +#ifdef PROFILE_MODE + Profiler::Instance().EndRecord(ctx.name, ctx.device); +#endif + return; + } else { + RetT ret = fn(std::forward(args)...); + +#ifdef PROFILE_MODE + Profiler::Instance().EndRecord(ctx.name, ctx.device); +#endif + return ret; + } } private: @@ -48,6 +427,9 @@ class Dispatcher { // TODO:实现kernel注册机制 // 功能描述:将kernel函数与设备类型、名称绑定 // =================================== 作业 =================================== + CHECK(!key_to_kernel_map_.contains(key)) + << "Kernel already registered: " << key.second << " on device: " << static_cast(key.first); + key_to_kernel_map_.emplace(key, kernel); } private: @@ -56,7 +438,7 @@ class Dispatcher { } // namespace infini_train #define REGISTER_KERNEL(device, kernel_name, kernel_func) \ - // =================================== 作业 =================================== - // TODO:实现自动注册宏 - // 功能描述:在全局静态区注册kernel,避免显式初始化代码 - // =================================== 作业 =================================== + static const bool _##kernel_name##_registered##__COUNTER__ = []() { \ + infini_train::Dispatcher::Instance().Register({device, #kernel_name}, kernel_func); \ + return true; \ + }(); diff --git a/infini_train/include/tensor.h b/infini_train/include/tensor.h index a6479de..cebe411 100644 --- a/infini_train/include/tensor.h +++ b/infini_train/include/tensor.h @@ -10,6 +10,7 @@ #include "Eigen/Dense" #include "glog/logging.h" +#include "infini_train/include/datatype.h" #include "infini_train/include/device.h" namespace infini_train { @@ -33,21 +34,6 @@ struct PrintOptions { }; } // namespace -enum class DataType : int8_t { - kUINT8, - kINT8, - kUINT16, - kINT16, - kUINT32, - kINT32, - kUINT64, - kINT64, - kBFLOAT16, - kFLOAT16, - kFLOAT32, - kFLOAT64, -}; - class TensorBuffer { public: TensorBuffer(Device device, size_t size); diff --git a/infini_train/src/autograd/elementwise.cc b/infini_train/src/autograd/elementwise.cc index 5a790a5..9c78fbe 100644 --- a/infini_train/src/autograd/elementwise.cc +++ b/infini_train/src/autograd/elementwise.cc @@ -7,20 +7,22 @@ namespace infini_train::autograd { std::vector> Neg::Forward(const std::vector> &input_tensors) { // =================================== 作业 =================================== - // TODO:通过Dispatcher获取设备专属kernel,对输入张量进行取反操作 - // NOTES: 依赖test_dispatcher,Neg kernel实现已给出 - // =================================== 作业 =================================== + CHECK_EQ(input_tensors.size(), 1); + const auto &input = input_tensors[0]; - return std::vector>(); + auto device = input->GetDevice().Type(); + auto kernel = Dispatcher::Instance().GetKernel({device, "NegForward"}); + return {kernel.Call>(input)}; } std::vector> Neg::Backward(const std::vector> &grad_outputs) { // =================================== 作业 =================================== - // TODO:通过Dispatcher获取设备专属的反向传播kernel,计算梯度 - // NOTES: 依赖test_dispatcher,Neg的kernel实现已给出 - // =================================== 作业 =================================== + CHECK_EQ(grad_outputs.size(), 1); + const auto &grad_output = grad_outputs[0]; - return std::vector>(); + auto device = grad_output->GetDevice().Type(); + auto kernel = Dispatcher::Instance().GetKernel({device, "NegBackward"}); + return {kernel.Call>(grad_output)}; } std::vector> Reciprocal::Forward(const std::vector> &input_tensors) { diff --git a/infini_train/src/device.cc b/infini_train/src/device.cc index cc6842f..a1f1018 100644 --- a/infini_train/src/device.cc +++ b/infini_train/src/device.cc @@ -2,6 +2,13 @@ #include +#ifdef USE_CUDA +#include "infini_train/include/common/cuda/common_cuda.cuh" +#endif +#ifdef USE_NCCL +#include "nccl.h" +#include +#endif #include "glog/logging.h" namespace infini_train { @@ -38,4 +45,95 @@ std::ostream &operator<<(std::ostream &os, const Device &device) { return os; } -} // namespace infini_train +CpuDevice::CpuDevice() : Device(DeviceType::kCPU, 0) {} + +#ifdef USE_CUDA +CudaDevice::~CudaDevice() { + if (stream_ != nullptr) { + cudaStreamDestroy(stream_); + } + + if (cublas_handle_ != nullptr) { + cublasDestroy(cublas_handle_); + } +} + +void CudaDevice::SetDevice() const { cudaSetDevice(index_); } +void CudaDevice::Synchronize() const { cudaDeviceSynchronize(); } + +cudaStream_t CudaDevice::Stream() const { return stream_; } + +cublasHandle_t CudaDevice::CublasHandle() const { return cublas_handle_; } + +#ifdef USE_NCCL +ncclComm_t CudaDevice::NcclComm() const { return nccl_comm_; } +#endif + +CudaDevice::CudaDevice(int8_t index) : Device(DeviceType::kCUDA, index) { + // TODO(dcj): make CudaDevice initialization lazy to avoid allocating memory on all GPUs in single-GPU mode + SetDevice(); + cudaStreamCreate(&stream_); + + cublasCreate(&cublas_handle_); + cublasSetStream(cublas_handle_, stream_); +} +#endif // USE_CUDA + +const DeviceManager *DeviceManager::Instance() { + static auto instance = std::unique_ptr(new DeviceManager()); +#ifdef USE_NCCL + static std::once_flag flag; + std::call_once(flag, [&]() { instance->InitNcclCommunicators(); }); +#endif + return instance.get(); +} + +const Device *DeviceManager::GetDevice(DeviceType type, int8_t index) const { + return devices_map_.at(type).at(index).get(); +} + +const Device *DeviceManager::GetDefaultDevice() const { return devices_map_.at(DeviceType::kCPU).at(0).get(); } + +std::vector DeviceManager::GetAllAvailableDevices(DeviceType device_type) const { + std::vector devices; + for (const auto &device : devices_map_.at(device_type)) { devices.push_back(device.get()); } + return devices; +} + +DeviceManager::DeviceManager() { + devices_map_[DeviceType::kCPU].push_back(std::unique_ptr(new CpuDevice())); +#ifdef USE_CUDA + CUDA_DRIVER_CHECK(cuInit(0)); + int device_count = 0; + CUDA_DRIVER_CHECK(cuDeviceGetCount(&device_count)); + int current_device = -1; + CUDA_CHECK(cudaGetDevice(¤t_device)); + for (int idx = 0; idx < device_count; ++idx) { + devices_map_[DeviceType::kCUDA].push_back(std::unique_ptr(new CudaDevice(idx))); + } + CUDA_CHECK(cudaSetDevice(current_device)); +#endif +} + +#ifdef USE_NCCL +void DeviceManager::InitNcclCommunicators() { + const auto &cuda_devices = devices_map_.at(DeviceType::kCUDA); + int num_devices = cuda_devices.size(); + + std::vector device_indices; + std::vector streams; + for (const auto &device : cuda_devices) { + const auto *cuda_device = dynamic_cast(device.get()); + device_indices.push_back(cuda_device->Index()); + } + + std::vector nccl_comms(num_devices, nullptr); + NCCL_CHECK(ncclCommInitAll(nccl_comms.data(), num_devices, device_indices.data())); + + for (int i = 0; i < num_devices; ++i) { + auto *device = dynamic_cast(cuda_devices[i].get()); + device->nccl_comm_ = nccl_comms[i]; + } +} +#endif +}// namespace infini_train diff --git a/infini_train/src/kernels/cpu/accumulate_grad.cc b/infini_train/src/kernels/cpu/accumulate_grad.cc index 55637cd..62e6f0f 100644 --- a/infini_train/src/kernels/cpu/accumulate_grad.cc +++ b/infini_train/src/kernels/cpu/accumulate_grad.cc @@ -15,9 +15,24 @@ void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_p const std::shared_ptr &m, const std::shared_ptr &v, float learning_rate, float beta1, float beta2, float eps, int64_t t) { // =================================== 作业 =================================== - // TODO:实现Adam优化器的梯度累积和参数更新 - // REF: - // =================================== 作业 =================================== + const float *grad_data = static_cast(grad->DataPtr()); + float *m_data = static_cast(m->DataPtr()); + float *v_data = static_cast(v->DataPtr()); + float *param_data = static_cast(param->DataPtr()); + + const float bias_correction_m = 1.0f - std::pow(beta1, t); + const float bias_correction_v = 1.0f - std::pow(beta2, t); + +#pragma omp parallel for + for (size_t idx = 0; idx < grad->NumElements(); ++idx) { + m_data[idx] = beta1 * m_data[idx] + (1 - beta1) * grad_data[idx]; + v_data[idx] = beta2 * v_data[idx] + (1 - beta2) * grad_data[idx] * grad_data[idx]; + + const float m_hat = m_data[idx] / bias_correction_m; + const float v_hat = v_data[idx] / bias_correction_v; + + param_data[idx] -= learning_rate * m_hat / (std::sqrt(v_hat) + eps); + } } } // namespace infini_train::kernels::cpu diff --git a/infini_train/src/kernels/cpu/linear.cc b/infini_train/src/kernels/cpu/linear.cc index 140e756..a0554dc 100644 --- a/infini_train/src/kernels/cpu/linear.cc +++ b/infini_train/src/kernels/cpu/linear.cc @@ -12,11 +12,43 @@ namespace infini_train::kernels::cpu { std::shared_ptr MatmulForward(const std::shared_ptr &input, const std::shared_ptr &other) { // =================================== 作业 =================================== - // TODO:实现CPU上的矩阵乘法前向计算 - // REF: - // =================================== 作业 =================================== + /* + output[*, m, n] = input[*, m, k] * other[*, k, n] + */ + // TODO(dcj): support broadcast later + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_GE(other_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + const int64_t n = other_dims[other_dims.size() - 1]; + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; + } + + std::vector output_dims = input_dims; + output_dims[output_dims.size() - 1] = n; + auto output = std::make_shared(output_dims, DataType::kFLOAT32); - auto output = std::make_shared(); + for (int64_t b = 0; b < bs; ++b) { + for (int64_t i = 0; i < m; ++i) { + for (int64_t j = 0; j < n; ++j) { + float acc = 0.0f; + for (int64_t p = 0; p < k; ++p) { + acc += static_cast(input->DataPtr())[b * m * k + i * k + p] + * static_cast(other->DataPtr())[b * k * n + p * n + j]; + } + static_cast(output->DataPtr())[b * m * n + i * n + j] = acc; + } + } + } return {output}; } @@ -24,12 +56,51 @@ std::tuple, std::shared_ptr> MatmulBackward(const std::shared_ptr &input, const std::shared_ptr &other, const std::shared_ptr &grad_output) { // =================================== 作业 =================================== - // TODO:实现CPU上的矩阵乘法反向传播 - // REF: - // =================================== 作业 =================================== + /* + grad_input[*, m, k] = grad_output[*, m, n] * other[*, k, n]^T + grad_other[*, k, n] = input[*, m, k]^T * grad_output[*, m, n] + */ + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + const auto &grad_output_dims = grad_output->Dims(); - auto grad_input = std::make_shared(); - auto grad_other = std::make_shared(); + CHECK_GE(input_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + CHECK_EQ(input_dims.size(), grad_output_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + const int64_t n = other_dims[other_dims.size() - 1]; + CHECK_EQ(m, grad_output_dims[grad_output_dims.size() - 2]); + CHECK_EQ(n, grad_output_dims[grad_output_dims.size() - 1]); + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; + CHECK_EQ(input_dims[i], grad_output_dims[i]) << "Batch dims must match"; + } + + auto grad_input = std::make_shared(input_dims, DataType::kFLOAT32); + auto grad_other = std::make_shared(other_dims, DataType::kFLOAT32); + grad_input->Fill(0.0f); + grad_other->Fill(0.0f); + + for (int64_t b = 0; b < bs; ++b) { + for (int64_t i = 0; i < m; ++i) { + for (int64_t j = 0; j < n; ++j) { + const float grad = static_cast(grad_output->DataPtr())[b * m * n + i * n + j]; + for (int64_t p = 0; p < k; ++p) { + const auto input_idx = b * m * k + i * k + p; + const auto other_idx = b * k * n + p * n + j; + static_cast(grad_input->DataPtr())[input_idx] + += grad * static_cast(other->DataPtr())[other_idx]; + static_cast(grad_other->DataPtr())[other_idx] + += grad * static_cast(input->DataPtr())[input_idx]; + } + } + } + } return {grad_input, grad_other}; } diff --git a/infini_train/src/kernels/cuda/accumulate_grad.cu b/infini_train/src/kernels/cuda/accumulate_grad.cu index 5f977c3..2680d54 100644 --- a/infini_train/src/kernels/cuda/accumulate_grad.cu +++ b/infini_train/src/kernels/cuda/accumulate_grad.cu @@ -1,5 +1,4 @@ -#include "infini_train/include/dispatcher.h" -#include "infini_train/include/tensor.h" +#include "infini_train/include/common/cuda/common_cuda.cuh" namespace infini_train::kernels::cuda { @@ -22,6 +21,25 @@ void AccumulateGrad(const std::shared_ptr &gradient, float rate, const s AccumulateGradKernel<<>>(grad_ptr, rate, tensor_ptr, num_elements); } +template +__global__ void AdamAccumulateGradKernel(const T *grad_data, T *param_data, size_t num_elements, T *m_data, T *v_data, + float learning_rate, float beta1, float beta2, float eps, + const float bias_correction_m, const float bias_correction_v) { + size_t idx = blockIdx.x * blockDim.x + threadIdx.x; + if (idx < num_elements) { + m_data[idx] = common::cuda::Fma(common::cuda::Cast(beta1), m_data[idx], + common::cuda::Cast(1 - beta1) * grad_data[idx]); + v_data[idx] = common::cuda::Fma(common::cuda::Cast(beta2), v_data[idx], + common::cuda::Cast(1 - beta2) * grad_data[idx] * grad_data[idx]); + + const float m_hat = common::cuda::Cast(m_data[idx]) / bias_correction_m; + const float v_hat = common::cuda::Cast(v_data[idx]) / bias_correction_v; + + param_data[idx] = common::cuda::Sub( + param_data[idx], common::cuda::Cast(learning_rate * m_hat * __frcp_rn(__fsqrt_rn(v_hat) + eps))); + } +} + void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_ptr ¶m, const std::shared_ptr &m, const std::shared_ptr &v, float learning_rate, float beta1, float beta2, float eps, int64_t t) { @@ -29,6 +47,25 @@ void AdamAccumulateGrad(const std::shared_ptr &grad, const std::shared_p // TODO:实现Adam优化器的梯度累积和参数更新 // REF: // =================================== 作业 =================================== + size_t num_elements = grad->NumElements(); + + const float bias_correction_m = 1.0f - std::pow(beta1, t); + const float bias_correction_v = 1.0f - std::pow(beta2, t); + + int threads_per_block = 256; + int num_blocks = (num_elements + threads_per_block - 1) / threads_per_block; + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, grad->GetDevice().Index())); + + DispatchFunc( + grad->Dtype(), + [=]() { + AdamAccumulateGradKernel<<Stream()>>>( + static_cast(grad->DataPtr()), static_cast(param->DataPtr()), num_elements, + static_cast(m->DataPtr()), static_cast(v->DataPtr()), learning_rate, beta1, beta2, eps, + bias_correction_m, bias_correction_v); + }, + "CUDA AdamAccumulateGrad"); } } // namespace infini_train::kernels::cuda diff --git a/infini_train/src/kernels/cuda/linear.cu b/infini_train/src/kernels/cuda/linear.cu index efaaaa6..4ea54ac 100644 --- a/infini_train/src/kernels/cuda/linear.cu +++ b/infini_train/src/kernels/cuda/linear.cu @@ -2,6 +2,7 @@ #include "glog/logging.h" #include +#include "infini_train/include/common/cuda/common_cuda.cuh" #include "infini_train/include/dispatcher.h" #include "infini_train/include/tensor.h" @@ -25,11 +26,65 @@ namespace infini_train::kernels::cuda { std::shared_ptr MatmulForward(const std::shared_ptr &input, const std::shared_ptr &other) { // =================================== 作业 =================================== - // TODO:实现CUDA上的矩阵乘法前向计算 - // REF: - // =================================== 作业 =================================== + /* + output[*, m, n] = input[*, m, k] * other[*, k, n] + */ + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_GE(other_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + const int64_t n = other_dims[other_dims.size() - 1]; + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; + } + + auto dtype = input->Dtype(); + std::vector output_dims = input_dims; + output_dims[output_dims.size() - 1] = n; + auto output = std::make_shared(output_dims, dtype, input->GetDevice()); + + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, input->GetDevice().Index())); + const float alpha = 1.0f, beta = 0.0f; + cublasHandle_t handle = cuda_device->CublasHandle(); + + // cuBLAS is colmun-major + // output = input * other --> output.T = other.T * input.T + // C = A * B ==> output.T[*, n, m] = other.T[*, n, k] * input.T[*, k, m] + // C = output.T[*, n, m] + // A = other.T[*, n, k] + // B = input.T[*, k, m] + int lda = n; + int ldb = k; + int ldc = n; + int64_t stride_a = n * k; + int64_t stride_b = k * m; + int64_t stride_c = m * n; + // NOTE(zbl): the last cublasGemmAlgo_t param has no effect on GPU arch >= sm_80(Ampere) + + switch (dtype) { + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_N, n, m, k, &alpha, other->DataPtr(), CUDA_R_32F, lda, + stride_a, input->DataPtr(), CUDA_R_32F, ldb, stride_b, &beta, output->DataPtr(), CUDA_R_32F, + ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kFLOAT32) + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_N, n, m, k, &alpha, other->DataPtr(), CUDA_R_16BF, lda, + stride_a, input->DataPtr(), CUDA_R_16BF, ldb, stride_b, &beta, output->DataPtr(), CUDA_R_16BF, + ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kBFLOAT16) + default: + LOG_UNSUPPORTED_DTYPE(dtype, "CUDA MatmulForward"); + } - auto output = std::make_shared(); return output; } @@ -37,12 +92,99 @@ std::tuple, std::shared_ptr> MatmulBackward(const std::shared_ptr &input, const std::shared_ptr &other, const std::shared_ptr &grad_output) { // =================================== 作业 =================================== - // TODO:实现CUDA上的矩阵乘法反向传播 - // REF: - // =================================== 作业 =================================== + /* + grad_input[*, m, k] = grad_output[*, m, n] * other[*, k, n]^T + grad_other[*, k, n] = input[*, m, k]^T * grad_output[*, m, n] + */ + const auto &input_dims = input->Dims(); + const auto &other_dims = other->Dims(); + const auto &grad_output_dims = grad_output->Dims(); + + CHECK_GE(input_dims.size(), 2); + CHECK_EQ(input_dims.size(), other_dims.size()); + CHECK_EQ(input_dims.size(), grad_output_dims.size()); + + const int64_t m = input_dims[input_dims.size() - 2]; + const int64_t k = input_dims[input_dims.size() - 1]; + const int64_t n = other_dims[other_dims.size() - 1]; + CHECK_EQ(k, other_dims[other_dims.size() - 2]); + CHECK_EQ(m, grad_output_dims[grad_output_dims.size() - 2]); + CHECK_EQ(n, grad_output_dims[grad_output_dims.size() - 1]); + + const int64_t bs = std::accumulate(input_dims.rbegin() + 2, input_dims.rend(), 1, std::multiplies{}); + for (int64_t i = 0; i < input_dims.size() - 2; ++i) { + CHECK_EQ(input_dims[i], other_dims[i]) << "Batch dims must match"; + CHECK_EQ(input_dims[i], grad_output_dims[i]) << "Batch dims must match"; + } + + auto dtype = input->Dtype(); + auto grad_input = std::make_shared(input_dims, dtype, grad_output->GetDevice()); + auto grad_other = std::make_shared(other_dims, dtype, grad_output->GetDevice()); + + DispatchFunc( + dtype, + [=]() { + grad_input->Fill(0); + grad_other->Fill(0); + }, + "CUDA MatmulBackward"); + + const auto *cuda_device = dynamic_cast( + DeviceManager::Instance()->GetDevice(DeviceType::kCUDA, input->GetDevice().Index())); + const float alpha = 1.0f, beta = 0.0f; + cublasHandle_t handle = cuda_device->CublasHandle(); + + { + // cuBLAS is colmun-major + // grad_input = grad_output * other.T --> grad_input.T = other * grad_output.T + // C = A.T * B ==> grad_input.T[*, k, m] = other[*, k, n] * grad_output.T[*, n, m] + // C = grad_input.T[*, k, m] + // A = other.T[*, n, k] + // B = grad_output.T[*, n, m] + const int lda = n, ldb = n, ldc = k; + const int64_t stride_a = k * n; + const int64_t stride_b = n * m; + const int64_t stride_c = m * k; + switch (dtype) { + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_T, CUBLAS_OP_N, k, m, n, &alpha, other->DataPtr(), CUDA_R_32F, lda, + stride_a, grad_output->DataPtr(), CUDA_R_32F, ldb, stride_b, &beta, grad_input->DataPtr(), + CUDA_R_32F, ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kFLOAT32) + DISPATCH_CASE( + WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_T, CUBLAS_OP_N, k, m, n, &alpha, other->DataPtr(), CUDA_R_16BF, lda, stride_a, + grad_output->DataPtr(), CUDA_R_16BF, ldb, stride_b, &beta, grad_input->DataPtr(), CUDA_R_16BF, ldc, + stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kBFLOAT16) + } + } + + { + // cuBLAS is colmun-major + // grad_other = input.T * grad_output --> grad_other.T = grad_output.T * input + // C = A * B.T ==> grad_other.T[*, n, k] = grad_output.T[*, n, m] * input[*, m, k] + // C = grad_other.T[*, n, k] + // A = grad_output.T[*, n, m] + // B = input.T[*, k, m] + const int lda = n, ldb = k, ldc = n; + const int64_t stride_a = n * m; + const int64_t stride_b = k * m; + const int64_t stride_c = n * k; + switch (dtype) { + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_T, n, k, m, &alpha, grad_output->DataPtr(), CUDA_R_32F, + lda, stride_a, input->DataPtr(), CUDA_R_32F, ldb, stride_b, &beta, grad_other->DataPtr(), + CUDA_R_32F, ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kFLOAT32) + DISPATCH_CASE(WRAP(CUBLAS_CHECK(cublasGemmStridedBatchedEx( + handle, CUBLAS_OP_N, CUBLAS_OP_T, n, k, m, &alpha, grad_output->DataPtr(), CUDA_R_16BF, + lda, stride_a, input->DataPtr(), CUDA_R_16BF, ldb, stride_b, &beta, grad_other->DataPtr(), + CUDA_R_16BF, ldc, stride_c, bs, CUDA_R_32F, CUBLAS_GEMM_DEFAULT));), + DataType::kBFLOAT16) + } + } - auto grad_input = std::make_shared(); - auto grad_other = std::make_shared(); return {grad_input, grad_other}; } diff --git a/infini_train/src/tensor.cc b/infini_train/src/tensor.cc index 8f8c744..ca36d08 100644 --- a/infini_train/src/tensor.cc +++ b/infini_train/src/tensor.cc @@ -25,36 +25,6 @@ #include "infini_train/include/nn/init.h" namespace infini_train { -namespace { -const std::unordered_map kDataTypeToSize = { - {DataType::kUINT8, 1}, {DataType::kINT8, 1}, {DataType::kUINT16, 2}, {DataType::kINT16, 2}, - {DataType::kUINT32, 4}, {DataType::kINT32, 4}, {DataType::kUINT64, 8}, {DataType::kINT64, 8}, - {DataType::kBFLOAT16, 2}, {DataType::kFLOAT16, 2}, {DataType::kFLOAT32, 4}, {DataType::kFLOAT64, 8}, -}; - -const std::unordered_map kDataTypeToDesc = { - {DataType::kUINT8, "uint8"}, {DataType::kINT8, "int8"}, {DataType::kUINT16, "uint16"}, - {DataType::kINT16, "int16"}, {DataType::kUINT32, "uint32"}, {DataType::kINT32, "int32"}, - {DataType::kUINT64, "uint64"}, {DataType::kINT64, "int64"}, {DataType::kBFLOAT16, "bf16"}, - {DataType::kFLOAT16, "fp16"}, {DataType::kFLOAT32, "fp32"}, {DataType::kFLOAT64, "fp64"}, -}; - -template struct TypeMap; - -template <> struct TypeMap { - using type = float; -}; -template <> struct TypeMap { - using type = double; -}; -template <> struct TypeMap { - using type = int32_t; -}; -template <> struct TypeMap { - using type = int64_t; -}; -} // namespace - TensorBuffer::TensorBuffer(Device device, size_t size) : device_(device), size_(size) { switch (device_.Type()) { case DeviceType::kCPU: @@ -122,44 +92,36 @@ size_t Tensor::NumElements() const { return num_elements_; } DataType Tensor::Dtype() const { return dtype_; } template void Tensor::Fill(T value) { + auto device = GetDevice(); + device.SetDevice(); + DataType dtype = Dtype(); uint64_t storage = 0; - switch (dtype) { - case DataType::kFLOAT32: { - using TargetT = typename TypeMap::type; - TargetT casted_value = static_cast(value); - std::memcpy(&storage, &casted_value, sizeof(TargetT)); - break; - } - case DataType::kFLOAT64: { - using TargetT = typename TypeMap::type; - TargetT casted_value = static_cast(value); - std::memcpy(&storage, &casted_value, sizeof(TargetT)); - break; - } - case DataType::kINT32: { - using TargetT = typename TypeMap::type; - TargetT casted_value = static_cast(value); - std::memcpy(&storage, &casted_value, sizeof(TargetT)); - break; - } - case DataType::kINT64: { - using TargetT = typename TypeMap::type; + DispatchFunc(Dtype(), [&storage, value]() { TargetT casted_value = static_cast(value); - std::memcpy(&storage, &casted_value, sizeof(TargetT)); - break; - } - default: - throw std::runtime_error("Unsupported data type in Tensor::Fill()"); - } + std::memcpy((void *)(&storage), &casted_value, sizeof(TargetT)); + }); - auto kernel = Dispatcher::Instance().GetKernel({GetDevice().Type(), "Fill"}); + auto kernel = Dispatcher::Instance().GetKernel({device.Type(), "Fill"}); kernel.Call(shared_from_this(), static_cast(&storage)); } +template void Tensor::Fill(uint8_t); +template void Tensor::Fill(int8_t); +template void Tensor::Fill(uint16_t); +template void Tensor::Fill(int16_t); +template void Tensor::Fill(uint32_t); +template void Tensor::Fill(int32_t); +template void Tensor::Fill(uint64_t); +template void Tensor::Fill(int64_t); template void Tensor::Fill(float); +template void Tensor::Fill(double); +#ifdef USE_CUDA +template void Tensor::Fill(nv_bfloat16); +template void Tensor::Fill(half); +#endif Eigen::Map> Tensor::EigenMatrix() { const int64_t bs = std::accumulate(dims_.rbegin() + 1, dims_.rend(), 1, std::multiplies()); @@ -279,11 +241,25 @@ std::shared_ptr Tensor::Contiguous() { std::shared_ptr Tensor::Flatten(int64_t start, int64_t end) { // return Contiguous()->View(new_shape); // =================================== 作业 =================================== - // TODO:实现张量扁平化操作,将指定维度范围[start, end]内的所有维度合并为一个维度 - // HINT: - // =================================== 作业 =================================== + auto ndim = dims_.size(); + auto start_dim = start >= 0 ? start : start + ndim; + auto end_dim = end >= 0 ? end : end + ndim; + CHECK(start_dim >= 0 && end_dim >= start_dim && end_dim <= ndim); + + std::vector new_shape; + int64_t flatten_size = 1; + for (int64_t i = 0; i < ndim; ++i) { + if (i < start_dim || i > end_dim) { + new_shape.push_back(dims_[i]); + } else { + flatten_size *= dims_[i]; + if (i == end_dim) { + new_shape.push_back(flatten_size); + } + } + } - return std::make_shared(); + return Contiguous()->View(new_shape); } std::shared_ptr Tensor::Squeeze(int64_t dim) { @@ -355,9 +331,20 @@ std::shared_ptr Tensor::RequiresGrad() { void Tensor::Backward(std::shared_ptr gradient, bool retain_graph, bool create_graph) const { // =================================== 作业 =================================== - // TODO:实现自动微分反向传播 - // 功能描述:1. 计算当前张量对叶子节点的梯度 2. 支持多输出场景的梯度累加 - // =================================== 作业 =================================== + CHECK(!retain_graph && !create_graph) << "Not implemented yet!"; + if (grad_fn_) { + if (!gradient) { + CHECK_EQ(dims_.size(), 0); + gradient = std::make_shared(std::vector{}, dtype_, GetDevice()); + gradient->Fill(1.0f); + } else { + CHECK_EQ(static_cast(GetDevice().Type()), static_cast(gradient->GetDevice().Type())); + CHECK_EQ(static_cast(dtype_), static_cast(gradient->Dtype())); + CHECK_EQ(dims_.size(), gradient->Dims().size()); + for (int idx = 0; idx < dims_.size(); ++idx) { CHECK_EQ(dims_[idx], gradient->Dims()[idx]); } + } + grad_fn_->BackwardPartial(gradient, output_idx_); + } } void Tensor::ZeroGrad() { diff --git a/test/optimizer/test_adam.cc b/test/optimizer/test_adam.cc index 7eb83bb..286ea62 100644 --- a/test/optimizer/test_adam.cc +++ b/test/optimizer/test_adam.cc @@ -67,16 +67,15 @@ TEST(AdamOptimizerTest, BasicParameterUpdateCuda) { param->Fill(1.0f); // 初始参数值 [1.0, 1.0, 1.0] param->RequiresGrad(); - auto grad = std::make_shared(param->Dims(), param->Dtype()); - grad->Fill(1.0f); - float* grad_data = static_cast(param->grad()->DataPtr()); - std::memcpy(grad_data, grad->DataPtr(), grad->SizeInBytes()); + // 直接设置梯度,不需要额外的grad tensor + param->grad()->Fill(1.0f); optimizers::Adam optimizer({param}, 0.001f, 0.9f, 0.999f, 1e-8); optimizer.Step(); - float* param_data = static_cast(param->DataPtr()); + auto param_cpu = param->To(Device(DeviceType::kCPU, 0)); + float* param_data = static_cast(param_cpu.DataPtr()); for (int i = 0; i < 3; ++i) { EXPECT_LT(param_data[i], 1.0f); // 参数值应该减小 } @@ -96,7 +95,8 @@ TEST(AdamOptimizerTest, MomentumAccumulationCuda) { std::vector param_history; for (int i = 0; i < 3; ++i) { optimizer.Step(); - param_history.push_back(static_cast(param->DataPtr())[0]); + auto param_cpu = param->To(Device(DeviceType::kCPU, 0)); + param_history.push_back(static_cast(param_cpu.DataPtr())[0]); } EXPECT_LT(param_history[1], param_history[0]); diff --git a/test/optimizer/test_adam_cuda.cc b/test/optimizer/test_adam_cuda.cc index 0a6ccda..0130c40 100644 --- a/test/optimizer/test_adam_cuda.cc +++ b/test/optimizer/test_adam_cuda.cc @@ -15,16 +15,15 @@ TEST(AdamOptimizerTest, BasicParameterUpdateCuda) { param->Fill(1.0f); // 初始参数值 [1.0, 1.0, 1.0] param->RequiresGrad(); - auto grad = std::make_shared(param->Dims(), param->Dtype()); - grad->Fill(1.0f); - float* grad_data = static_cast(param->grad()->DataPtr()); - std::memcpy(grad_data, grad->DataPtr(), grad->SizeInBytes()); + // 直接设置梯度,不需要额外的grad tensor + param->grad()->Fill(1.0f); optimizers::Adam optimizer({param}, 0.001f, 0.9f, 0.999f, 1e-8); optimizer.Step(); - float* param_data = static_cast(param->DataPtr()); + auto param_cpu = param->To(Device(DeviceType::kCPU, 0)); + float* param_data = static_cast(param_cpu.DataPtr()); for (int i = 0; i < 3; ++i) { EXPECT_LT(param_data[i], 1.0f); // 参数值应该减小 } @@ -44,7 +43,8 @@ TEST(AdamOptimizerTest, MomentumAccumulationCuda) { std::vector param_history; for (int i = 0; i < 3; ++i) { optimizer.Step(); - param_history.push_back(static_cast(param->DataPtr())[0]); + auto param_cpu = param->To(Device(DeviceType::kCPU, 0)); + param_history.push_back(static_cast(param_cpu.DataPtr())[0]); } EXPECT_LT(param_history[1], param_history[0]); diff --git a/third_party/eigen b/third_party/eigen index 2cf66d4..1e65707 160000 --- a/third_party/eigen +++ b/third_party/eigen @@ -1 +1 @@ -Subproject commit 2cf66d4b0d0ba52cbf2507e15998c4735aa14406 +Subproject commit 1e65707aa20603fc2ee9c2ac21c466ef57d23e10 diff --git a/third_party/googletest b/third_party/googletest index 309dab8..32f9f4c 160000 --- a/third_party/googletest +++ b/third_party/googletest @@ -1 +1 @@ -Subproject commit 309dab8d4bbfcef0ef428762c6fec7172749de0f +Subproject commit 32f9f4c82afa4249af66b55278df15c16b3031ea