From dd75bcfedff534eb67908126ba65b2293e603815 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 20 Sep 2023 16:59:46 -0400 Subject: [PATCH] + test code coverage + writeup --- CMakeLists.txt | 8 +- README.md | 2 + cmake/code-coverage.cmake | 678 ++++++++++++++++++++++++++++++++++++++ img/lcov1.png | Bin 0 -> 125426 bytes utest/CMakeLists.txt | 1 + 5 files changed, 688 insertions(+), 1 deletion(-) create mode 100644 cmake/code-coverage.cmake create mode 100755 img/lcov1.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 9318caa2..7656fc0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,14 @@ cmake_minimum_required(VERSION 3.10) project(nestlog VERSION 0.1) enable_language(CXX) + +include(cmake/nestlog.cmake) +include(cmake/code-coverage.cmake) + enable_testing() +# activate code coverage for all executables + libraries (when -DCODE_COVERAGE=ON ??) +add_code_coverage() +add_code_coverage_all_targets() # always write compile_commands.json set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "") @@ -18,7 +25,6 @@ if(NOT CMAKE_INSTALL_RPATH) set(CMAKE_INSTALL_RPATH /home/${USER}/local/lib CACHE STRING "runpath in installed libraries/executables") endif() -include(cmake/nestlog.cmake) add_subdirectory(example) add_subdirectory(utest) diff --git a/README.md b/README.md index fb8b2deb..bd376bd9 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,8 @@ $ cd indentlog-nix $ nix-build ``` +For some more detail see [BUILD.md](BUILD.md) + ## Examples ### 1 diff --git a/cmake/code-coverage.cmake b/cmake/code-coverage.cmake new file mode 100644 index 00000000..b6b36064 --- /dev/null +++ b/cmake/code-coverage.cmake @@ -0,0 +1,678 @@ +# +# Copyright (C) 2018-2020 by George Cave - gcave@stablecoder.ca +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +# USAGE: To enable any code coverage instrumentation/targets, the single CMake +# option of `CODE_COVERAGE` needs to be set to 'ON', either by GUI, ccmake, or +# on the command line. +# +# From this point, there are two primary methods for adding instrumentation to +# targets: +# +# 1 - A blanket instrumentation by calling `add_code_coverage()`, where +# all targets in that directory and all subdirectories are automatically +# instrumented. +# +# 2 - Per-target instrumentation by calling +# `target_code_coverage()`, where the target is given and thus only +# that target is instrumented. This applies to both libraries and executables. +# +# To add coverage targets, such as calling `make ccov` to generate the actual +# coverage information for perusal or consumption, call +# `target_code_coverage()` on an *executable* target. +# +# Example 1: All targets instrumented +# +# In this case, the coverage information reported will will be that of the +# `theLib` library target and `theExe` executable. +# +# 1a: Via global command +# +# ~~~ +# add_code_coverage() # Adds instrumentation to all targets +# +# add_library(theLib lib.cpp) +# +# add_executable(theExe main.cpp) +# target_link_libraries(theExe PRIVATE theLib) +# target_code_coverage(theExe) # As an executable target, adds the 'ccov-theExe' target +# # (instrumentation already added via global anyways) +# # for generating code coverage reports. +# ~~~ +# +# 1b: Via target commands +# +# ~~~ +# add_library(theLib lib.cpp) +# target_code_coverage(theLib) # As a library target, adds coverage instrumentation but no targets. +# +# add_executable(theExe main.cpp) +# target_link_libraries(theExe PRIVATE theLib) +# target_code_coverage(theExe) # As an executable target, adds the 'ccov-theExe' target and instrumentation for generating code coverage reports. +# ~~~ +# +# Example 2: Target instrumented, but with regex pattern of files to be excluded +# from report +# +# ~~~ +# add_executable(theExe main.cpp non_covered.cpp) +# target_code_coverage(theExe EXCLUDE non_covered.cpp test/*) # As an executable target, the reports will exclude the non-covered.cpp file, and any files in a test/ folder. +# ~~~ +# +# Example 3: Target added to the 'ccov' and 'ccov-all' targets +# +# ~~~ +# add_code_coverage_all_targets(EXCLUDE test/*) # Adds the 'ccov-all' target set and sets it to exclude all files in test/ folders. +# +# add_executable(theExe main.cpp non_covered.cpp) +# target_code_coverage(theExe AUTO ALL EXCLUDE non_covered.cpp test/*) # As an executable target, adds to the 'ccov' and ccov-all' targets, and the reports will exclude the non-covered.cpp file, and any files in a test/ folder. +# ~~~ + +# Options +option( + CODE_COVERAGE + "Builds targets with code coverage instrumentation. (Requires GCC or Clang)" + OFF) + +# Programs +find_program(LLVM_COV_PATH llvm-cov) +find_program(LLVM_PROFDATA_PATH llvm-profdata) +find_program(LCOV_PATH lcov) +find_program(GENHTML_PATH genhtml) +# Hide behind the 'advanced' mode flag for GUI/ccmake +mark_as_advanced(FORCE LLVM_COV_PATH LLVM_PROFDATA_PATH LCOV_PATH GENHTML_PATH) + +# Variables +set(CMAKE_COVERAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/ccov) +set_property(GLOBAL PROPERTY JOB_POOLS ccov_serial_pool=1) + +# Common initialization/checks +if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED) + set(CODE_COVERAGE_ADDED ON) + + # Common Targets + add_custom_target( + ccov-preprocessing + COMMAND ${CMAKE_COMMAND} -E make_directory + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY} + DEPENDS ccov-clean) + + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" + OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + # Messages + message(STATUS "Building with llvm Code Coverage Tools") + + if(NOT LLVM_COV_PATH) + message(FATAL_ERROR "llvm-cov not found! Aborting.") + else() + # Version number checking for 'EXCLUDE' compatibility + execute_process(COMMAND ${LLVM_COV_PATH} --version + OUTPUT_VARIABLE LLVM_COV_VERSION_CALL_OUTPUT) + string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" LLVM_COV_VERSION + ${LLVM_COV_VERSION_CALL_OUTPUT}) + + if(LLVM_COV_VERSION VERSION_LESS "7.0.0") + message( + WARNING + "target_code_coverage()/add_code_coverage_all_targets() 'EXCLUDE' option only available on llvm-cov >= 7.0.0" + ) + endif() + endif() + + # Targets + if(${CMAKE_VERSION} VERSION_LESS "3.17.0") + add_custom_target( + ccov-clean + COMMAND ${CMAKE_COMMAND} -E remove -f + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list + COMMAND ${CMAKE_COMMAND} -E remove -f + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list) + else() + add_custom_target( + ccov-clean + COMMAND ${CMAKE_COMMAND} -E rm -f + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list + COMMAND ${CMAKE_COMMAND} -E rm -f + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list) + endif() + + # Used to get the shared object file list before doing the main all- + # processing + add_custom_target( + ccov-libs + COMMAND ; + COMMENT "libs ready for coverage report.") + + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES + "GNU") + # Messages + message(STATUS "Building with lcov Code Coverage Tools") + + if(CMAKE_BUILD_TYPE) + string(TOUPPER ${CMAKE_BUILD_TYPE} upper_build_type) + if(NOT ${upper_build_type} STREQUAL "DEBUG") + message( + WARNING + "Code coverage results with an optimized (non-Debug) build may be misleading" + ) + endif() + else() + message( + WARNING + "Code coverage results with an optimized (non-Debug) build may be misleading" + ) + endif() + if(NOT LCOV_PATH) + message(FATAL_ERROR "lcov not found! Aborting...") + endif() + if(NOT GENHTML_PATH) + message(FATAL_ERROR "genhtml not found! Aborting...") + endif() + + # Targets + add_custom_target(ccov-clean COMMAND ${LCOV_PATH} --directory + ${CMAKE_BINARY_DIR} --zerocounters) + + else() + message(FATAL_ERROR "Code coverage requires Clang or GCC. Aborting.") + endif() +endif() + +# Adds code coverage instrumentation to a library, or instrumentation/targets +# for an executable target. +# ~~~ +# EXECUTABLE ADDED TARGETS: +# GCOV/LCOV: +# ccov : Generates HTML code coverage report for every target added with 'AUTO' parameter. +# ccov-${TARGET_NAME} : Generates HTML code coverage report for the associated named target. +# ccov-all : Generates HTML code coverage report, merging every target added with 'ALL' parameter into a single detailed report. +# +# LLVM-COV: +# ccov : Generates HTML code coverage report for every target added with 'AUTO' parameter. +# ccov-report : Generates HTML code coverage report for every target added with 'AUTO' parameter. +# ccov-${TARGET_NAME} : Generates HTML code coverage report. +# ccov-report-${TARGET_NAME} : Prints to command line summary per-file coverage information. +# ccov-export-${TARGET_NAME} : Exports the coverage report to a JSON file. +# ccov-show-${TARGET_NAME} : Prints to command line detailed per-line coverage information. +# ccov-all : Generates HTML code coverage report, merging every target added with 'ALL' parameter into a single detailed report. +# ccov-all-report : Prints summary per-file coverage information for every target added with ALL' parameter to the command line. +# ccov-all-export : Exports the coverage report to a JSON file. +# +# Required: +# TARGET_NAME - Name of the target to generate code coverage for. +# Optional: +# PUBLIC - Sets the visibility for added compile options to targets to PUBLIC instead of the default of PRIVATE. +# INTERFACE - Sets the visibility for added compile options to targets to INTERFACE instead of the default of PRIVATE. +# PLAIN - Do not set any target visibility (backward compatibility with old cmake projects) +# AUTO - Adds the target to the 'ccov' target so that it can be run in a batch with others easily. Effective on executable targets. +# ALL - Adds the target to the 'ccov-all' and 'ccov-all-report' targets, which merge several executable targets coverage data to a single report. Effective on executable targets. +# EXTERNAL - For GCC's lcov, allows the profiling of 'external' files from the processing directory +# COVERAGE_TARGET_NAME - For executables ONLY, changes the outgoing target name so instead of `ccov-${TARGET_NAME}` it becomes `ccov-${COVERAGE_TARGET_NAME}`. +# EXCLUDE - Excludes files of the patterns provided from coverage. Note that GCC/lcov excludes by glob pattern, and clang/LLVM excludes via regex! **These do not copy to the 'all' targets.** +# OBJECTS - For executables ONLY, if the provided targets are shared libraries, adds coverage information to the output +# ARGS - For executables ONLY, appends the given arguments to the associated ccov-* executable call +# ~~~ +function(target_code_coverage TARGET_NAME) + # Argument parsing + set(options AUTO ALL EXTERNAL PUBLIC INTERFACE PLAIN) + set(single_value_keywords COVERAGE_TARGET_NAME) + set(multi_value_keywords EXCLUDE OBJECTS ARGS) + cmake_parse_arguments( + target_code_coverage "${options}" "${single_value_keywords}" + "${multi_value_keywords}" ${ARGN}) + + # Set the visibility of target functions to PUBLIC, INTERFACE or default to + # PRIVATE. + if(target_code_coverage_PUBLIC) + set(TARGET_VISIBILITY PUBLIC) + set(TARGET_LINK_VISIBILITY PUBLIC) + elseif(target_code_coverage_INTERFACE) + set(TARGET_VISIBILITY INTERFACE) + set(TARGET_LINK_VISIBILITY INTERFACE) + elseif(target_code_coverage_PLAIN) + set(TARGET_VISIBILITY PUBLIC) + set(TARGET_LINK_VISIBILITY) + else() + set(TARGET_VISIBILITY PRIVATE) + set(TARGET_LINK_VISIBILITY PRIVATE) + endif() + + if(NOT target_code_coverage_COVERAGE_TARGET_NAME) + # If a specific name was given, use that instead. + set(target_code_coverage_COVERAGE_TARGET_NAME ${TARGET_NAME}) + endif() + + if(CODE_COVERAGE) + + # Add code coverage instrumentation to the target's linker command + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" + OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + target_compile_options(${TARGET_NAME} ${TARGET_VISIBILITY} + -fprofile-instr-generate -fcoverage-mapping) + target_link_options(${TARGET_NAME} ${TARGET_VISIBILITY} + -fprofile-instr-generate -fcoverage-mapping) + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES + "GNU") + target_compile_options(${TARGET_NAME} ${TARGET_VISIBILITY} -fprofile-arcs + -ftest-coverage) + target_link_libraries(${TARGET_NAME} ${TARGET_LINK_VISIBILITY} gcov) + endif() + + # Targets + get_target_property(target_type ${TARGET_NAME} TYPE) + + # Add shared library to processing for 'all' targets + if(target_type STREQUAL "SHARED_LIBRARY" AND target_code_coverage_ALL) + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" + OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + add_custom_target( + ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${CMAKE_COMMAND} -E echo "-object=$" >> + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list + DEPENDS ccov-preprocessing ${TARGET_NAME}) + + if(NOT TARGET ccov-libs) + message( + FATAL_ERROR + "Calling target_code_coverage with 'ALL' must be after a call to 'add_code_coverage_all_targets'." + ) + endif() + + add_dependencies(ccov-libs + ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}) + endif() + endif() + + # For executables add targets to run and produce output + if(target_type STREQUAL "EXECUTABLE") + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" + OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + + # If there are shared objects to also work with, generate the string to + # add them here + foreach(SO_TARGET ${target_code_coverage_OBJECTS}) + # Check to see if the target is a shared object + if(TARGET ${SO_TARGET}) + get_target_property(SO_TARGET_TYPE ${SO_TARGET} TYPE) + if(${SO_TARGET_TYPE} STREQUAL "SHARED_LIBRARY") + set(SO_OBJECTS ${SO_OBJECTS} -object=$) + endif() + endif() + endforeach() + + # Run the executable, generating raw profile data Make the run data + # available for further processing. Separated to allow Windows to run + # this target serially. + add_custom_target( + ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${CMAKE_COMMAND} -E env + LLVM_PROFILE_FILE=${target_code_coverage_COVERAGE_TARGET_NAME}.profraw + $ ${target_code_coverage_ARGS} + COMMAND + ${CMAKE_COMMAND} -E echo "-object=$" + ${SO_OBJECTS} >> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list + COMMAND + ${CMAKE_COMMAND} -E echo + "${CMAKE_CURRENT_BINARY_DIR}/${target_code_coverage_COVERAGE_TARGET_NAME}.profraw" + >> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list + JOB_POOL ccov_serial_pool + DEPENDS ccov-preprocessing ccov-libs ${TARGET_NAME}) + + # Merge the generated profile data so llvm-cov can process it + add_custom_target( + ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${LLVM_PROFDATA_PATH} merge -sparse + ${target_code_coverage_COVERAGE_TARGET_NAME}.profraw -o + ${target_code_coverage_COVERAGE_TARGET_NAME}.profdata + DEPENDS ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}) + + # Ignore regex only works on LLVM >= 7 + if(LLVM_COV_VERSION VERSION_GREATER_EQUAL "7.0.0") + foreach(EXCLUDE_ITEM ${target_code_coverage_EXCLUDE}) + set(EXCLUDE_REGEX ${EXCLUDE_REGEX} + -ignore-filename-regex='${EXCLUDE_ITEM}') + endforeach() + endif() + + # Print out details of the coverage information to the command line + add_custom_target( + ccov-show-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${LLVM_COV_PATH} show $ ${SO_OBJECTS} + -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata + -show-line-counts-or-regions ${EXCLUDE_REGEX} + DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) + + # Print out a summary of the coverage information to the command line + add_custom_target( + ccov-report-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${LLVM_COV_PATH} report $ ${SO_OBJECTS} + -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata + ${EXCLUDE_REGEX} + DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) + + # Export coverage information so continuous integration tools (e.g. + # Jenkins) can consume it + add_custom_target( + ccov-export-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${LLVM_COV_PATH} export $ ${SO_OBJECTS} + -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata + -format="text" ${EXCLUDE_REGEX} > + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}.json + DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) + + # Generates HTML output of the coverage information for perusal + add_custom_target( + ccov-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${LLVM_COV_PATH} show $ ${SO_OBJECTS} + -instr-profile=${target_code_coverage_COVERAGE_TARGET_NAME}.profdata + -show-line-counts-or-regions + -output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME} + -format="html" ${EXCLUDE_REGEX} + DEPENDS ccov-processing-${target_code_coverage_COVERAGE_TARGET_NAME}) + + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES + "GNU") + set(COVERAGE_INFO + "${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}.info" + ) + + # Run the executable, generating coverage information + add_custom_target( + ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND $ ${target_code_coverage_ARGS} + DEPENDS ccov-preprocessing ${TARGET_NAME}) + + # Generate exclusion string for use + foreach(EXCLUDE_ITEM ${target_code_coverage_EXCLUDE}) + set(EXCLUDE_REGEX ${EXCLUDE_REGEX} --remove ${COVERAGE_INFO} + '${EXCLUDE_ITEM}') + endforeach() + + if(EXCLUDE_REGEX) + set(EXCLUDE_COMMAND ${LCOV_PATH} ${EXCLUDE_REGEX} --output-file + ${COVERAGE_INFO}) + else() + set(EXCLUDE_COMMAND ;) + endif() + + if(NOT ${target_code_coverage_EXTERNAL}) + set(EXTERNAL_OPTION --no-external) + endif() + + # Capture coverage data + if(${CMAKE_VERSION} VERSION_LESS "3.17.0") + add_custom_target( + ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND ${CMAKE_COMMAND} -E remove -f ${COVERAGE_INFO} + COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --zerocounters + COMMAND $ ${target_code_coverage_ARGS} + COMMAND + ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --base-directory + ${CMAKE_SOURCE_DIR} --capture ${EXTERNAL_OPTION} --output-file + ${COVERAGE_INFO} + COMMAND ${EXCLUDE_COMMAND} + DEPENDS ccov-preprocessing ${TARGET_NAME}) + else() + add_custom_target( + ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND ${CMAKE_COMMAND} -E rm -f ${COVERAGE_INFO} + COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --zerocounters + COMMAND $ ${target_code_coverage_ARGS} + COMMAND + ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --base-directory + ${CMAKE_SOURCE_DIR} --capture ${EXTERNAL_OPTION} --output-file + ${COVERAGE_INFO} + COMMAND ${EXCLUDE_COMMAND} + DEPENDS ccov-preprocessing ${TARGET_NAME}) + endif() + + # Generates HTML output of the coverage information for perusal + add_custom_target( + ccov-${target_code_coverage_COVERAGE_TARGET_NAME} + COMMAND + ${GENHTML_PATH} -o + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME} + ${COVERAGE_INFO} + DEPENDS ccov-capture-${target_code_coverage_COVERAGE_TARGET_NAME}) + endif() + + add_custom_command( + TARGET ccov-${target_code_coverage_COVERAGE_TARGET_NAME} + POST_BUILD + COMMAND ; + COMMENT + "Open ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}/index.html in your browser to view the coverage report." + ) + + # AUTO + if(target_code_coverage_AUTO) + if(NOT TARGET ccov) + add_custom_target(ccov) + endif() + add_dependencies(ccov ccov-${target_code_coverage_COVERAGE_TARGET_NAME}) + + if(NOT CMAKE_C_COMPILER_ID MATCHES "GNU" AND NOT CMAKE_CXX_COMPILER_ID + MATCHES "GNU") + if(NOT TARGET ccov-report) + add_custom_target(ccov-report) + endif() + add_dependencies( + ccov-report + ccov-report-${target_code_coverage_COVERAGE_TARGET_NAME}) + endif() + endif() + + # ALL + if(target_code_coverage_ALL) + if(NOT TARGET ccov-all-processing) + message( + FATAL_ERROR + "Calling target_code_coverage with 'ALL' must be after a call to 'add_code_coverage_all_targets'." + ) + endif() + + add_dependencies(ccov-all-processing + ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}) + endif() + endif() + endif() +endfunction() + +# Adds code coverage instrumentation to all targets in the current directory and +# any subdirectories. To add coverage instrumentation to only specific targets, +# use `target_code_coverage`. +function(add_code_coverage) + if(CODE_COVERAGE) + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" + OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + add_compile_options(-fprofile-instr-generate -fcoverage-mapping) + add_link_options(-fprofile-instr-generate -fcoverage-mapping) + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES + "GNU") + add_compile_options(-fprofile-arcs -ftest-coverage) + link_libraries(gcov) + endif() + endif() +endfunction() + +# Adds the 'ccov-all' type targets that calls all targets added via +# `target_code_coverage` with the `ALL` parameter, but merges all the coverage +# data from them into a single large report instead of the numerous smaller +# reports. Also adds the ccov-all-capture Generates an all-merged.info file, for +# use with coverage dashboards (e.g. codecov.io, coveralls). +# ~~~ +# Optional: +# EXCLUDE - Excludes files of the patterns provided from coverage. Note that GCC/lcov excludes by glob pattern, and clang/LLVM excludes via regex! +# ~~~ +function(add_code_coverage_all_targets) + # Argument parsing + set(multi_value_keywords EXCLUDE) + cmake_parse_arguments(add_code_coverage_all_targets "" "" + "${multi_value_keywords}" ${ARGN}) + + if(CODE_COVERAGE) + if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang" + OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang") + + # Merge the profile data for all of the run executables + if(WIN32) + add_custom_target( + ccov-all-processing + COMMAND + powershell -Command $$FILELIST = Get-Content + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list\; llvm-profdata.exe + merge -o ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata + -sparse $$FILELIST) + else() + add_custom_target( + ccov-all-processing + COMMAND + ${LLVM_PROFDATA_PATH} merge -o + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata -sparse `cat + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list`) + endif() + + # Regex exclude only available for LLVM >= 7 + if(LLVM_COV_VERSION VERSION_GREATER_EQUAL "7.0.0") + foreach(EXCLUDE_ITEM ${add_code_coverage_all_targets_EXCLUDE}) + set(EXCLUDE_REGEX ${EXCLUDE_REGEX} + -ignore-filename-regex='${EXCLUDE_ITEM}') + endforeach() + endif() + + # Print summary of the code coverage information to the command line + if(WIN32) + add_custom_target( + ccov-all-report + COMMAND + powershell -Command $$FILELIST = Get-Content + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list\; llvm-cov.exe + report $$FILELIST + -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata + ${EXCLUDE_REGEX} + DEPENDS ccov-all-processing) + else() + add_custom_target( + ccov-all-report + COMMAND + ${LLVM_COV_PATH} report `cat + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list` + -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata + ${EXCLUDE_REGEX} + DEPENDS ccov-all-processing) + endif() + + # Export coverage information so continuous integration tools (e.g. + # Jenkins) can consume it + add_custom_target( + ccov-all-export + COMMAND + ${LLVM_COV_PATH} export `cat + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list` + -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata + -format="text" ${EXCLUDE_REGEX} > + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/coverage.json + DEPENDS ccov-all-processing) + + # Generate HTML output of all added targets for perusal + if(WIN32) + add_custom_target( + ccov-all + COMMAND + powershell -Command $$FILELIST = Get-Content + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list\; llvm-cov.exe show + $$FILELIST + -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata + -show-line-counts-or-regions + -output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged + -format="html" ${EXCLUDE_REGEX} + DEPENDS ccov-all-processing) + else() + add_custom_target( + ccov-all + COMMAND + ${LLVM_COV_PATH} show `cat + ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list` + -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata + -show-line-counts-or-regions + -output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged + -format="html" ${EXCLUDE_REGEX} + DEPENDS ccov-all-processing) + endif() + + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES + "GNU") + set(COVERAGE_INFO "${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.info") + + # Nothing required for gcov + add_custom_target(ccov-all-processing COMMAND ;) + + # Exclusion regex string creation + set(EXCLUDE_REGEX) + foreach(EXCLUDE_ITEM ${add_code_coverage_all_targets_EXCLUDE}) + set(EXCLUDE_REGEX ${EXCLUDE_REGEX} --remove ${COVERAGE_INFO} + '${EXCLUDE_ITEM}') + endforeach() + + if(EXCLUDE_REGEX) + set(EXCLUDE_COMMAND ${LCOV_PATH} ${EXCLUDE_REGEX} --output-file + ${COVERAGE_INFO}) + else() + set(EXCLUDE_COMMAND ;) + endif() + + # Capture coverage data + if(${CMAKE_VERSION} VERSION_LESS "3.17.0") + add_custom_target( + ccov-all-capture + COMMAND ${CMAKE_COMMAND} -E remove -f ${COVERAGE_INFO} + COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --capture + --output-file ${COVERAGE_INFO} + COMMAND ${EXCLUDE_COMMAND} + DEPENDS ccov-preprocessing ccov-all-processing) + else() + add_custom_target( + ccov-all-capture + COMMAND ${CMAKE_COMMAND} -E rm -f ${COVERAGE_INFO} + COMMAND ${LCOV_PATH} --directory ${CMAKE_BINARY_DIR} --capture + --output-file ${COVERAGE_INFO} + COMMAND ${EXCLUDE_COMMAND} + DEPENDS ccov-preprocessing ccov-all-processing) + endif() + + # Generates HTML output of all targets for perusal + add_custom_target( + ccov-all + COMMAND ${GENHTML_PATH} -o ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged + ${COVERAGE_INFO} -p ${CMAKE_SOURCE_DIR} + DEPENDS ccov-all-capture) + + endif() + + add_custom_command( + TARGET ccov-all + POST_BUILD + COMMAND ; + COMMENT + "Open ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged/index.html in your browser to view the coverage report." + ) + endif() +endfunction() diff --git a/img/lcov1.png b/img/lcov1.png new file mode 100755 index 0000000000000000000000000000000000000000..c8e66e119fda63dfdb8c6f453584fb017be09ab3 GIT binary patch literal 125426 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 z zve!a>%jaG4hyPA*46{7QvU@r=+skKXY~_rCESfE=zrDG5n(s%=_iFcTXBybWC*G2& zea9zfW3eVx=+cc|Nn?vGs!T9@nN9XI59~G|^pBTArKEP|>*v!97l%6bi7@^Cw(#Pd_|MPIe*Mo8w6Hi#Sis3!WlPeb`)AJ{ zT@||eOD{)J!DCNjW7`mM{rKy(!j`|)cdfj4*k|_}4hGQRXwLoeu>Tw6>}w%I8l>TWYXifvS!dN# z{>-;ddH?WpqVA*z``WGrmu2kTQW(U3)8uCSvDzyU|JP=&wV7nJ^J-MuoiDPR{>)F_ zRCzs9(ynmwytdcpuJQhnRZ-fIuy66^X1_0YTQZj&JyqMw#Zn`8s=I&6)%wHf%RHX_ zKO-u==KP;yA7`$8_1oT9>-DYEd%smRoIkc^`rO~=Pu&q^FXh%du}E*l23goR$=&<$ zDo=0wUwHbV@PF@`$nP91bsz3#-K>AoRAZRe?Dvqpch$2=TfS}M$&A|_?6ugP`N8vL{*}e<{J+-=U0W}d0_u#KPt%DsI`zF*q<-Q1g*)pbBh3RG z<2NVC*}j>g?jEH%>Asbo*?SAcdc8Y}?R|5nPu#zTceih+oBIK{(5Lt{jV!#&ztjEO;!dz&O6_66bKy^-x1_^TK>wrhlL;fLk>>m|0U;C zXqUCwXKFlX>}BhG535cGp+1?A^Lv+cHSUSBa0+~Pm?fG$^h{vqHHR0%ob%uMs9rzt z&t9ZL=dWn!ge3m8T?d{-8~Gae^scezzr5Caf!?-?t)=XTf+Kb;=<`_U)cOQ;LU7Ph zua_TFPfzm%-Q(hy!_q5dlCi+r+V!+@vGT{;`TIRjPkV9b^r@MDK{L^bkB^GSPjPH! zd#V2PL!6pJYYCI2QObozl`RgZrf5#C3*t2w2b}8Z!sX!+E$FXGenYqqH9ENDFHIn!oi%!c32hkpEz zTcvq6D^h&U?6SGj+T-S~W!BD{>YX}K@UN7|qazdRmvb7IpPKEwS6bWd>bjOMH79<_ z8DxIbt9)y`dcKB!YIhnJx0kDm*8HEdqOMPNin)I9%fFPBf6UJBx>4vg#h{U=cI~z+ zt9y>kp0+~gw((!_6MsUl{WJSMJ1p_9Oyca)n$%@{61!5*O^7*GcO!!R3&ZEKSGK|1 z-hQ1Y{@OTQEIV$+jlxCmCK%;^yJGa%TRVd5hP+(Z@58ME-`Y=nn>+En$pziHpuuI0 zZ>s|rxA84w2)cT8Wpj(h!?W}4<6m9>ZvT9iRcV%G{l7i?+Kty%eh`SCWs+IK@B(yo z;&<;I;jb<&?fz#Sv`f*trMe1qWcA_dxNB>pmtUUjyfNu0)1^s=r)UP3e9(07ld(!@ z-ZxR8tc6*v7Ki;;qjH-<@rA!H1mHkn0E7vf6IYOll>Rn&di>9v0ZS+%Zd|% zjLJ3qHSue>i{(2Lgnk`!-M^z@f3oevxU$>Zaux5I=UJc8>i@wv^=AerQ~wq{<+rmc zmlxjI`F_hDtBk&wT|)ovtqGZ^^XVP;*ROjencQ=C{mc2Ux`%1!<=0@0p>;`h#PuGP!scNYoCbZMT=dOne9=cO0i7JpVGNicSNY<|bZ zA$9OT+|{Q`&pj>4GWuhnTq+qQd3Du<*nL%-^CB*Ac!_xEKV~?U~dpMlqU@$JpcugncE=AZcSuwA}HfunI&z=HKkca$If6Zl?T5zkVT zb$#91_sYH(G*)fkvnqe5v($Tf*!7d0Uk|rs2wvS$m^{-k*)8HihlW+aPPMs8kc`FDe~WY=+jB*@>bSfhQpwhqVK0? z7`876blS?F^v|qZbULH0^o!c59Z77zc$}=PO46Dd_-`#*bk>x~|J;JWl&V!t5Bz*X zKiK_XUAf?t_$n9GjFyCp2B9D7R1FWd@g>-Wv#y;fu;9?Ae~Y|!EV!tf&hp?_~LA5E!#5>#A1u3B&>oa2g|YLLE3oi8S%=7Mr}jYWk(6nP1O*3sF*1>hk_k z?dRfR__TA{&ck)VRa?%d`>QJLGFAa4?7%r6Osoyn7G=D+X}DkH{Pa_D!gm+G{rcK& zXUWsHIacMq-{f}coHm;?E%&!xl<|%Qi!^Ir9jU6g^hepK_GO{1O!N}Ji5~yH*A!O! zq?|ZkopSix=Wh~%f;$&Jew1DjEBU0`+x`)V%F$yyudl|B1Ydb9S$q%}86+^*$VYwwxeZyQj^vnPJ<=7-xKM{ez{ zd{J3^znHc8{{0*K_^eG&Dt^^YyK;EHf#xUp!nm z*K+>R*0&(0% ziBE6gf=g{39UYJ6?f6hVPd7QJ^6y2bPbsf$f>uUEot&cAsSTV#EE`Ai<#6bsx0&Wl_cRW4`nE z?XWL+(-pI)=<>X*gTh7n_7M(2YTSQ1|Gar_`{~{Z*7tWKf)! zfMDPq!MXQ8*9$W_>)S^J6s7y-`3vqWySqHvW&Q0szwKtb>JC@^yS-&g*XegHuQ}3H zS2sQo)Q;BNXZ$@T?x|nq(NDJzEl%98nVc@WY5B3(xaWH7i)93l^819k7xK;iCmdK} zaanDSO|@^F?6y#T=ZAMRpEm9;@>-{J@{Ohv_w{*` zOaFF#FnhmKq51f`ZO2_siF+=dX1(~y`H4>Z|4+>}fBInK=}k3{B_o&YGtc|fvqo}~ z*Z<{RH5m_L)c!U{X|KGN25a%s z3x_v{&ztaZGym(v#j%IqTyohf{>HK$Is(mRGA+HW$6V z*Zpcwna5o9!`qn-{alvU+7o1u&Q-h5u|V$hF4wu*>SyhBSc{fSiJSZBc5$`zkH>m9 z_x(>=vhr0yf6M2hi8d=$=GN}BsrxmnPJrS0*3Z-bJTEKw@7DTjZ^8P|#XePkrKc!m zI_<3ax@^wwirBg4`met{-LbvbCuObb%x!ul6aShC91ZgU)o@Rmy8k)azr7^N&8C$S zU??ogDWq~??jo~Qb3DV1EcL}cr+Mq;+XuRYJ1soKI@N1MhEuEiVK2$2YmalkcIXp+ zRvqo@uE14)_|t+U=J&D70-(RPu?KV)45mKS~8a_RZQCM(%I4FM0$mmE?L zSN_Rg{)U@F>flms^U@8+B~1>M9*XuCnYMdX>a;mC*RuN-%x!$SE>dmpo{tfVE5lCB zzjf|sb67oh`n}9+-idkE zHtSz=I0$e}UBBbo#&!NeFQy#Y;ddxqu{1vLy0cM4e65_OhG^HatJggu_(CG~e+ppK zoTB}M+4SO0wa-FctCg0mRqkraa8vaX^;p~YyD7-1KI?9m;Bk|8rEzaW{_R`ly!efk zM$6~oV_U9S@;v9C!(H%axsTMJKcb-)-}f&&7kl+;rSN{$XEmMYv%-`&Tk(rtJAAO^ z*IogY>HNI-<#J7>gn3 z!@u{p%;xh6Nme|{c{M5d*WS7Qch5!F1})RE%Ic34TWhT<{9Nv0YUAI%QY&UF+H|Hp zSb1kKkvPmbo1xUgA4vE$E44=A8li6|Ni~tPtP|!E^^Zq zRuH)Sb6(7@sRnEA)TpgV6`0p_{PG7k#nQi%FYf#2@OriAt17k$cJBqh$~|KgTr+!p z{oUo!8S^cQefHd9<55JaN zj~br1B zeot>dMlGUo#$deV%vnUBhp+IsIoWuj*cTAG&|hf9r*zI_KtF^#9xSVMU(n zQx7#q7ZFuQKYte&myi9{tX{vac)nS9;o&momodlA+UeZ)ySZNfi?-P2c^S+$sy)|y zJ&rb1UcAl}bd>R#qm-q?@#_^vXC40KEU7sBzvBJB`?=FIz58G8e^?vf_~gs?X`4Si z|MYm5!dYIEHIpL$^H=l5PwKC`p}Bvh^wNdG-%m~Y`mavzL&%)XO2;@wE#BAc_N|*y z7$APfV&S9AlUDyPpHS14eW00kIMUPA#YJTHLLO3)Hm0@BK3U2V|8Cn!8h@VPGpF2z z?cWCPb+-?yv&8$bDz9_Dw&JPDoT(GeJ=}WxeCyVVLzjOn6B2QhTO%EltiXDyW99F) z_8L3d9J{skwl&kI3fG% zUiN_(vQ{1WPlD&C--*3juivtu>VE#Vlm7K`lkSVlUq1Nw`o23_;_L5RaFn~_{MP!B zJ$rIpaek{%q}6G*sYWl0?H~Mm-h9!z^p)kD?{5B|mpi+AAK%ovce6*!ue}!ziEQ}x zq2b}J+~;2^zx1mffAZLH_tp0Y{QiFLP~e?={pab}3Uzmp{RW_GheetLK0e&{yl|Pf zO)mxmCi6YrE(8*!wkzxvwyAdK&a|(Ld>h`(+MlDk&|xk@KvmKHjb3#v#qt zxm~<}lW%-&k_x&u^M1L=mUV__-v55vaP1IVli~^!lMhe+^!*KE;NEbi?Q{9gq>o!B zMa1?kShRW3)BVoFO1&sx?{G6RbA(Pfz<-jm7n*#5jpj} z$+pbC%0iv5V%dr>uY)4Cr(}g%uRgcnAp7?Yja{IItI{ULyz*mtU#f$X_b{`M2D}%j;hAl@!TwJz-Vzwl{a_-fHD3qCgedpc)Q%M86wFIFD--1T`* z?z!vllI^wlAGo%EmMOhfdcXDdF7CeK(hbGg8uz&`WSy#!Uvucq%tUVl)M7MOj69J#Wq`4zu{o5CNr2HE#KS#AQ={5)4nKL))@gliQ zfu^bP;t`tBbJjcll3Y@?L-bwW*2_zHd=w`in;N7R(KTH={II=hj>YAtSG8t4E?;Fh zfvv5hLqqStVX1T14j@7-_x z^~KwM$DNod^rx&~-r`HU&iU_H>;2RseE0cuH&93ky*#`AqxI%!HGPX!?|0A9ym4C8 zQ#n=HbFZh%6Y#YlUEeRX{6FgVlld3B!z;5T)t#K@7)0`dE(mIAY0qKxf0AhFb6V+n z_J=3A!R~%}ho8J)FYjKmG(N27gon#qr*scZTsn72zPiMYn8)YRO5&u-? z{$WikP+_@2^rOr*8yAr|pX<1F`FuCXJl{X5ukK8q=)2YlyDmE<+)HsYD6lJFTR-PH z!}qXUi`2Eh7{e34-tYm*O_x(2Zlc20SbwfCZZUA8_V>I)t_DJ@#DD$r_g%C^r@%Kdg)?ouIVRK8z3 zs|D&an{%;UTE+XnwBEt0K`qqS`_qzZqIPzM^#Z3C_o{Aw z`LIj&n($upydPhTW_{7~2y9Tl$@R=<<@_+`b9pW;KCC=i8@)t57B~C%YNd0%;HZAt zc6k@SipSDC7pbsKR+rk2zVB>vyjHvvy)fM^dxc*3F-G zed4>YDD2t>z7rp3heiIKcU5=3;esnVa~=QJIhNF&|2R8x`JVrb+?UPSv}`8&oeMd! z@F|ZL`^EA^zOU9j)3(2rdN$#i>E;vD_KH7!Q24%Ny`S}!Pa(Q9?biHv-eX?3+*{md z?K=5OFP|Q-PWm%{?(;9fPu>0FCeBJVZmC`W$@P-gt}C5OGwy|4T3E;@o52*))c5Og zL(GmR^}A&KA3m;9XpSo1(dLm9-uKR`L^I}pm-@N5;Ma`hQ}n8sVSa12NQ}PC zC7tO{PR??Ac5Cf~LfM7Zo!67^T^Fp7+COX8GsZL14P%4mZdw&~^Gi|rR-MG#;$rJ; zm#)v;@Q(YbpX9Z4&R@bOmv2-2w?BTZe7fq}r>o6VuW_wDziLIyH6(HawJR zD(*}cJlql_=v~Oa?R&_-GM1-%o*yc-s$RN(zlFX<+r@M#1!bml+Dote^~x^oPkWcm z@KQs3%}4fK(yNOTx%!JOAINmI-(YxY7@lXhx_$l1>P4HrRmwd#m}73dvRM9C+1gmW z#Woe?evvEe4zuhlUirEDB-6E8-glyf`BSxvi)z;yG%C(Lwk=&xw~JeNaAdvW8E)+H?OM7tC zDP)1uiMe41f0`Hz3SNBMbgKT3U7Pkz=hxaAR&_JV6xK}Dd-eQ-$nVK(Kc5Kx{_LV? z!OulMZf5NKy?=fgE6dD)$|#L+FIk;K-wpj&&F*q5sp)&ov*jD3jbVR#(z|ujEOi=^ zn%v@Q4Xgh8{ePO3%ksNFZra6Hwr7HWaP*aCO>+J||6{@BIYEnker@17zv9N0-+SH! zzt3Ip=;zGepH9Sv8nbUXP$d2N`N9qFc~%G%z3=s`xhfe~sS#H^*Vu zxwffBuc}x7ewDU)IZJ!-t$t&^w!L!CMN=lMh_-W%FknAuFsJ`Q)Qd2M3w>deET-Gu zvYB3zJ3CxIJ!tn=k*46)X3>mmPgKm^Ey1GRwI9@^SX9By$QL5>;H5T;jh)=)=;v)^ zbJ znLp!bFYC0*$Ll`-N;{T$=1lXi>Id)Rri#umD|*FP+x+SLxzD>cv6>rKNC~WrK6b`t zNpsqdIWG=Xue2*T^E|z_pkk->$ZS( z|LGrhOaG_2v-}O+W1Y0S=JV~k$h}|J_|0w07K<@YkXYMfFT346?8e$=#)H~R)P5EJ zEVL~7)5SO8fvLydwkgH$d+!K-Q`vL-)Y-JfuOtzFD?-K_blsYF!KLQ^3-`PU5BRVORINavXU|KWG*uU3b? z9=n>oZv%Tn-|DA^cleoGt9;AUxUM&!TmJE9ie2D~f;qKo`pji^TTFit5x4#CoIUnc z?Rh^XE??Ni{=Is&+5D@|rDc9+B({jzyjcJBQRx4lOpV{xtGx~Vo;dw$rRJ)Fc{TM{ z_~vesex6q&wom!p$7O#@W9Dz3TPx^#{fg?py52K?=l+zLbKXv3ud#w^Ldu**rDe;N zyY3795UHM_;rF1`LNM@6+wzz1R;Sx`ZuhurP;38pft;FBm+!tev0eTbg^nhMonFnd z%jgTkip4GRRdzCZsfTPUv$ zQY9h>o}4K;-Sx~y=w4>dQ-5<#_oA4yHi9YW!C#BN z3;c{-L3#rZgQpITO4!`&mbrI%y4>{l%Z+t;1O)}}%DwRC`dhw0{=|kl+jT!nILcZVN?T(A0kAlv|)L3=nxS*hGTdhoB3|IhUJp`W+j)vY` z1fJgzJR1B?%$-LjaL(qp2IY|;19zFaZc=|xs>*u6PLWf%>x0WQlQ$VFb+p`TVy@|wD2)swKNb)ig~U$cK-s^uDb@Kab|>N>5wuc0TG zoyxQo+nqSqW|@~}sL;x$(#KC1Xq{gj}@hTcLICdQRw5(a=*Xn{sCdPpuA(T-+6% z8#?FrJk9y5AC)GuL~WhHlvNqh@{Wk%|my3PwiRt;D_WwF9Z9PL2jZl&a5Fn1E#L{^3Bw3s>!N~xB6_~1fPHE z2~nM~Lhn3lXhGiBs`#4s(^e(KAGSLDn=eRp%HN(Bep5lW9k~=9+JCe2*?Md3 z+@Hx=-F5#?YIVxJPqvq~SI5>~{1|Ut_i2*N-)kW=e^}-ne8(fbU3U8Ux(LO?zf3nT zcgZ<(h1aP1qn>5uvq@iG2l}59Ir{d&{==_h8goBQxuv%Mj^phk-Iij%Rwg$tVt;;` zJ$}o%>77D%e@Py#)cF#6-05b99Cvityb1m8I+NG`S{$XC_pr`$p~fWJgSxTdVy9<% zRA`I-&atd;7IN9_ob^U{lEK0w$Nk<1PAtDC#k0IoYjfzqDAxxZQ!@oC!=^4=<+4RI zptAcx`}J9Fte=fS11x3Eq=epD(bOQw6uN$O6W77sRZoIh_k}OrthGX>hDCT0v+SJY z`9H+>Ea%eF`#ASs*wZepI7Y>gyzQZ^pBFO8F>a1sRlzzdpzywjC`-Iti0X7L>yXBO zt7hb0@twLp)Uj3fn)NlwYai#Ydhm7P!7`WB*V(H|j<$FxXtXNavf>t`2=;O36d&04 zd9l{PbEdyT56-n|;(EWT=`YXoX&+Z5{BL@@>cO10?}zHdFIH-6yy3q1=kCr}freVY zsaC6=gt9*8V(ArI)%5sed=C^a(#dM&^=#*Sf4Yp^xS>leL$t@ zzQ)UtnTxr;>EAi)zGct6f_WXOzgYq`!q#%t)U-D$cNH(HZmxg$$n@o>U++J?oL%mD zt!GD0=bed<#Z!*&3l7@Mq}RMS@9eR|pRVq>YV_r8n&RDjm#vFzmVK48aG!NmSLN&K znYVSl|LcpLy#HTjQheJz`A_-xzrHq4J$6X8$p5d>y!DYgiq=ojnBi)aex$glF8F!= zbWdZm(q#_q=J88Q0ZdUlI#n%IUX4+(T zSN-4mY2U4BOS>LaZoZJPd+qHSl{^0=X6F4}cKY(G-+yN}Dz7hgb!l8Y_qX3^?)MMF zY%bis``Tk^kY&ojuDzdLuUVV5FZj}qFvq?B|41MEyD_kD{w|TF=et)l)vdi%XYcpZ zy=?XS*+!{BnL(Qu*ev+={lqzC^SobAP8-&P&S5##${oHmU|-Ltkan&hh4QNEz6a~# z_AYFeon0m~J@}Q4(W}E@lN9G}UGH9|qm_9AJ+bVZC~{4PU_2V6ZYRy-t;-OQbV@>@t(FeP1Qw3z#!>?M%9H&M?%=r!k_Yo&I>yla$(UV@&4m6L8-cG zJH7;@?lhG!%XdjzvB_6-&eD$(l3Mxm15&%SE<}rlFt9auIkB_}G&nphkq`Z_#4<`T zapy0d;c!T(cV#VdIo;8fv}NCn6UJJ)TpVy-IKW4gML$5Y zzm|h>L3pU)@vjM?aU0m0owECC(^(j|3Pk=EU<9`#G+*llgv-$(`faqaS7S zf(086Roz?eCFaw?(9|)5T~|)<1n;q(HW?S&o_^$#5e;Ge{lq5p%q@3;KhmKBCMEg) zEKdsO9eU5QZ~pJvjr(^spYUI46eIe_ZD;dE!K4Qrk2K03ytu!UNvVr9P3M;4|Md4d z50+b34DEn=@0h-u2y#xo#7*e;@TMlR7wIZ8;uR?al?5Z^j^_yc+Z2s$Z znaq^9`)8)Kf3?|HzkTWytx2)>UZ=}1t({}@bNv@tgYZw!9|yiWGs!MjYv2+ldik5 z9aw1^wcb@%Dq$X{K<+-Dyc@4Q&vt!Wul}6N^Qw3I;fEIUBNto>WnG*oCpyRCY>1A; z=f>UNvm6h7V#!WBVBzz`(PUlN!2|8Dr|y>Tsl2yBq37(x1C6ZTPVzZx+&Ev@loPJ_ zNpq*bYvtrM|M`=(1S8h$TRzv|SXeplf`QjuIplbCyrS8FEEyP$ar{vuiT#N z|Hb$49Vn=n-fxt?K-}g0O;u?dDHktgF&qCI`@el|)Uw!Uxm?A%caq>1`Omo@{z#pk z^JzL)`RRL=Of$B>WS&!W@xVrp+tsCNBAu3UGBfYFYuqyyXOZVW=R0SPg|@KW*`FMu zl^(l-In2LX$UL_`d0@`lf;m=e*yIfpTeoCL7+e$d{S^5B=BG=)g`YHvx1DB>-^{0W z;O}|<$=37aa>9J8Bey(~-}(LL!cFfR-ixIk+?4yPzWsEgb4nZEhQil&k=v@;O;*T7 zl>O_Oh%yz%<+X8qm?@8!YJl)+epX2S*?3R$X_X5IhDBe65W>ieve zIA*?O*X=*0DlXHXU!OiFQ@Zc_#_M(FD?jkb+3C4|kxA3Np<*5vd`Y4++Eh#P_ty8* z*4@hMtG)Z|$FW$R%iHaKb{py(^85SyOmy;+t@DyM^v$vPxPH&|{I)xba{tHlZ`@SA z|9xTV?{&?S)O@{G254=ufrL{2Bl7;e$NDEj*A9?Nj0o_`mTE5EEeb;Ic?Ll3*xDtoz8!}T4Zw!+%Ga zx>x%7eadd`@9NSz{=A<$@!$W4$=42@y%hI*+P{qD$!RYletQVXmMnbVQ0ZoF`E0v= za_$m+qlYKgEnb?teBq_XpI=_ud){QHcYXEITd`@?Tki9ihetSl<>X^3IdY06_wp@K z{r=14CCjsR))W=)%1E2sA`trd*zw?=e+6_#AwKf)ZoOGj9K;o}wqq~;E11`U=ogNP| z9+ex|2~Ty7GF`Fo(5j-WjV?w4aU3_QbS*p$z9gHRTjr#z6m%rALP>R#Muq8KUr&jO zBwqeL<*b`7%~vYdd|O^Gl-#puo$y~7Eng+Jq<7~!UHd1rh` zfsw#cjx)kC=AWnfmRIg;y4s~-|L)fPKt)?+!9|@%&oLh?UL`x(V&&q4Hi6-)ReYT< zT&(4`RnK2z7oh0X>v8;ufoto|$sA$rkDXKuuV=L@-!v*c$F}p!q>>`ni9cR@7+92M zg$LW!Je8WcKWDX02&wXw!;jaZZRE32ad?EWV9$=H48OF!_S_@gPp@C3swq90e9kxZ?=#zF^SY)lKJI_&ld1L7#o_Cx>fg^&6!qH3 z=CQ>6{>x`~e($~MG_QI?+n0Ct*5@?RZ|?j(;moh>$uY6o|CApdxIcZC=;NCEr&D+8 zPt@OSYJO>RaPm$I=d6{%ssfT1KmL35>0tNuANP+gPd)tT*`H6(JtZ=oZz;$WS)3@4 z`Xar>!SC1F+2(Pztuj_sXO;3g3;nG65TEvc=jQY&z0u!1JDYBn#DDBJ0#maB?=Urv`ce08pgC99m%W-8XK^zAz3s^*u76@mUntMLT~s}1 zvPE#!-kRQ;uVLPQ?PosyyS`>(!BMUh)8~b?i-lGNvwkTxRyOlhar=M0%J))XM9{w1 zH@)I2muxG17a_qtC;meON7~i4*dU7*XLTv<(lhB-4d+^B=y_@Jv-h?Jvo6=m{WtrZ zzjydMgZ1WlzB3r>Ufg(k$w=eYiF4B*F6!NuXRVNLfBV9cqkmpK|C#2;_-l!Gi=8Le z8TR=#=F#&mZai++;d>g z|MOaJ`kj6>F750)B9u4p!OCN5ZR*?P?;eiy%yQ-awc+-6Bb_TdX0AIFY@DfiQ+?Or zNj{5?7r3!sk3bQRwK<;_z7^SvEv>w!hI5Z`I7pOQsx}o;vYt^xo|Chb}LR%)Ghe|M#Es z9xsV%JuQ5t|A3`o;j^erv6Klu3%8qEm&u!4)R8#pE!wNAP<3pNZ_wtTx|7pi3q4+v z8MS}LnHl>H^Nw0PNXWdrrzi5EZ`F1iOXFEDma1z1pSU|}s%cx{rR0h0^3Of`vHC=N ze|%!lmDE!b8vdRoSDxH_y)>11lW==mN%op&`<9g@ZtnUYVp;KH#+j%sk@xDhP2BS} z$9bk%`QDz{?@qt*J>u0~z3Sxm!{Xlk`z}A3cw0+~y;-$hX&Ivjr46iYDe!) zR6c&TJo2Rf-G#chzt7%woHKM$L0II@vhAI_6q8cU9<%*bH+_o6ktiGatLu096usP6 zt9^O%%)0F&XUbQGT=?cvuQlzYuJrbwJV#ds#i{VF7M=30cG;=ke%>iBZ-sxqBT-@V z>(_PGV}=tIPu%2?dEMCT-m53{H}u+jn=eVX|GpAFTdK=Z{F#-{`*67W8s?e@B5TL-J4#2YI5#sk7qsm%G8;dkBh$C zpYi$DD(BT^Ka^JAc%E*5ZfbSD8gpq))9u==%kM5;`f628YTUuf?s>*?1^a^7HKcl` z8eR@NZEHTo*vcuy>#kO#NyQ7k=Y^TaN+#()S6y~~r8D!v{gtUb`!hW+sLw0pHWtg7 z(j$54$mQKjoUGs7DL!$A^@Zxo_p7GztMKl8`AYlD&&7*-v&F9b>-x6iS+j<5$;8^5 zKaWb!OgrYZvL*T8=?RAWJk}md%=+KL?Ed;W^Rv@`w@E5AYQRv{l!zhtEX>A&8gelbA>HENMDw( z{c%m()W25@9!_h$DX3h%L))M&qWXGAp{~L2<80n1_q5qODqU&m#1f?PLsn@@gzNbt z=4n!87u+s(=W&^(9%1GE%lzKue@kXAUTb)$x^r4|<8Gf{S)G;7 zXY0R_Ic#xUP=fc>QbT(Ke}nxC)?Znz$kb}t9a5FQBH`jg&FLYXX1_kxJYW=^v-k_Y zV2s5z`%q7vvL2Pvbq5$Tet#|jl>l>A?!9_wPdD!;8-wr-HdB5+33=wxu59^O#=Y3OZxwmMGT>g*DN6RPfYj`qy{n9-zS2h>+e|utM zaOe7(8S($3#5&#_kaXFrpk#82T{8aVei89l70ti%+C?;jB$RV+ZCTl~ShaT>f1t6; zTv@xCm`lq&byd02CyQp6pSqu2=CRHD^65RQ(LPn1Cdo0|tz4_KWn;Lz-oe7B`iT_!7IE#^%w`F}9^)4%J+zQ4>adDfceOq_FJ-$S*$A3L5N zyE)08zn|kHXWsXpinnZKEWUf(KmOyPdAk0soIZOgi{gu4=d21}=upmZ*yfz|Ke_Mk z%~$T{wCGX#%K67IwRh!Q;j@{~TCc<{F>|iF{_~jAtRp$o(+t>tB)rHkc|P&n{+XXE zmR@(c9KZ2EjMME_YZqg&KNZKDT7RXw+}`seU~PqmQ>Xp^JeOUQr+MM|U3Es0 zQr9#zOr6g>^i-|TnWL3i8fRbgWkyNmqIEIrlV4t#`1s=@-$V}6_fjIke?Qd=C`;PB zV-@E|*6|NV)KJj^-YB6cmbiVe( zg^JCFU&BP_nG~@21aXFMZ;PCI_4R>Z4$TWf+{bn@Ye|T#^ktN&jQ_Z|hf9#t#cIQ= zIVXhXDEWrug)CIC3)HaiGnn#7<6y?jAFtM)6s}Ic8*sFmHSf*;?70~(g&R_of4sY< zH+j=U<%bHs30pLneu=jW2FktQ-Jd?avq1ge>mS~EH6Q*LzIjlvz<=?<%6rQW*?DHN zy41fR6_}^mb@u>OW zy=NB`Hu2aVvOPpWRHJ!<5CB#K>EEXh`Gk)Zo(gZ~eF+}hs+8U0&7 zw|&oq`qs+HPctlL`}?2cZda~+G;fmZbK5K8JJ;m}CU3Eg6)^mAx#Q@vzGLlw(~m9< zX1=tDcYZ^oL1Lz@jMCfpt90V`UOlwtmfG37p8d6N78$gAR4toZ&HU7^{GDx1R&m8f zK4JYUw>{?TZS_?CR`@*IS8JXAy*=la)NY<2wbtX`nxe`HjrBig$u7Ib&30G)o(9?=9s(4K0RIADRT95-1f@;GtqlO-(^I)iRs?Yld*OYo6EK2s#cW3Y7y-j zS0$9!uM0i0=9+uKi~_#3a&if`%6{$XU8Z;Wc5P(y<6@J5;8%;o*H7F&KQrT2#m;x< zALV`zsFf4`WvUdvM)|0Pm(A}-OSj);|Fi9gMSmV=QApt(i;wr}UuI4ATUB~FsE~io zmd6FJx_-`;zQXYOO7fbO7mKvs{yX>l^3tT2cRpoKU-r!W^z>6}kH4~vXf<21ty5g4 z!9vZGS;F{V?2%8iJzKZLeV(2-@mHwu^ksct(wyyf9_4t+q#roa3kaulOY>1cY*M7IWrKpR##bSoD0x;wMj!zdEwCVT-_4vmeR#D<9nW z>f|C7Sl#+L-Edc_+l9}nyZSd4XbE&~yJv6C^f_f;jMe;~ic@9#g7VMq4nF$LQ^l#5 zRgC%1>c=-%8EA&<&NN;+^>2IMv9FugK4t$S=cltydEz?tR(<~pTg%H;GewkMEFC~1E1C->J4?16UEu#q!~0FB4s*dD z36|=a!EB9yd#DoN0Zd=*a)7JbU4CxyYN*|qhvcTpS%Lok#B)JDi2wQ6^1aD&otAtD_^y5)z*#8 zpHrH+_&jC8E!Zs9FAptfxVN~8?_rLG{K3k@J2w9n&@PkX=wsXZezEP^qfzX-VT)w> zZ(r1(cE@P{#BCSOS$_?EQLHqv;{Do1-Xhw&PVR9`QM)bM$1PdjTQcW*087oaL%x@m zlohNzzodEN+r8`mPZ8toKHa=ldxl2;{CfT?rHXr{wpw_Jd1kPv@4a)*_6}d?60eC) zmzMgz{W^KZ`?ohrFDyy>6tpx(Zl+Q8+?+eR{P|>T)Rd3uPS*;5*8BZ#z=Mv3(=L=d zi%T8WaI52LpWMc0As!aJJtIQrVDG={`P+MpefEEM5*EJL+$ip>&wA|sTl3g?JC?7~ zjH%zXBFt|7AH&qGhGCcdCa15RuI>Fp&hh&jYo)#W=c>MazbYw9x_9m_FEM?7m!mDr z>5fY`RX&{_c>2kOhmX~C1KBP$iJnW__VnbuK()-70CQVW7$Xm3QSt_Stl= zeAwLFVJ7$gxs>O0wW)^l;-Z&l#Ozj@W8Al>@B3sM=lqc-!ql%D%Z*B_UFytI?R>06myhmf8>SFv+G-boL%DdYfq4Cu}X*Ek-+MZ z<2v<)K{u~o)Cf}OUitp(-3$BA%t+sNz>@Pfznp0?4`0rg*WU%c#{JOSx~i#ub=lHC zn-X4z-M!AXxi`w9JJfv9#+~F!Ha)EorD?>jT z{j7bYb#vk8Ylrs#H+;Oz?WjYG$Y;OFQLSeqEMqUI*JsWzuzUDR-8sIUO%0YE6}y%6)0cN zIX~eNud~*aP{m8l>N3;J6eTV<9bAxqaDvRMi%+aY-xV1g`uc>~-bH-lC3$6eLATAJ zdrC8fet&8EI3px&iRtFfu(zStt%TM%{`wNzdp_6WzT2C(`C9k1H8gKEaPTbnC)l>| z-?O>=>$>)+_l7UwV4Tx#vsRE%h_mNZa_BKuPJfdnhL1}{MY&!7bjm58dSYnD;kbfB z_16q3w>Q_L-8(h7OU}-I-)yaTY3|Lk0vC0|&n&s!n;Di1w*6kI<i%rmCg#U377Ay7T`}LFFso z`%)_oCQp-87CySm(9OOsJXQGWmP7KQhq5nyX{joR+Lt!H*dC|Wd-H?E<3+yiEsGnzq~}Q6H=AZuDPP>sB64DSq+CVe4x5j^-Y;WwYksxQ zqbKhE8IwRsizh2`udMTRt^9sk@?+TP_QwmOwWXGyep@vsdHH%%*Sm#37`NJddU`5F z>Cz2zL9ZqG)}p7TozTpkHGP`7-7KB$S@Hbx+nwfRhbue2S``p5{pDHzWi#HFzOoF< z%Z>8VJMWwJ?ZjI-PNm6p68j?LY7%GI{Ct*CJpId?zgHiZyq{>TH8Z30w$-0SwMNcz zJNHhyXgI?veeoOHf)Kg)pQ7*NKeAz1YkGSC94V>j(7##{<|=G{iJ*M z&rTAr>YM()geNdxV@CAssh1wd>6>qtSBd|ZGdZMV%ifi9o}8Y0(&fV4rO5}S)-67m zU-#taS)+NNQF#_?i$jig*Rov|a+CgRme_jd%MXR0zTf>{dB=S=m$LXCSF>YU-}=2) z&)R2ANt*rtW2oGMWx|5WZ@>PD|CiA8|ET#~Llxq6KA&zb1tGnNXm_A{m4KeH3D&@0IBnX}U`?^`|p z#&dk9r^&J(xwh!jrEQl5ivKvwzq5Ro|NItd?zn;ugZPIT-!|o4mMiA5ExC87^Ze`b z-xGCXmt@*zsXm?3Ub-*2W?Odc)FHEAi1%y{(bM$Cu{A3pDz8beq!l7lNE11?~B$tv3iw!Pj;4IW#`kXpod*8*M+}) zYBgRm{o*YJ5!lS(&x8NPcO(gT9uU36wY6u@gBOaE7(95zHMLYlY&0L(9Qtv5u4t*s z8p9d81J(;`O2vpqSo(!Zg}Sg6PQwdF?N;@0yy z)oo128A_cONlx3L?X4pF5 z^)D3OFLo4JwAa{Wdgt@>`h797N+Fk3t5m|`LLO!=+TQiHcu_*dUDwu)PIFD(_03+T zl3wu2&}=1h+c{&q7s`v)X0#s=Zpha$+?R7j{1V1z1SJ&$9@C*7=yQayw zua1*llcDg%ajWlD{p_`~p4Q9P*qrhI6Mt#qt;at-j#k?&dBr`ie1?N#Udi`&UaVC`{8YiT<%RN+9Z^{?!1ukvsagI@2s!?8SnJ!Zt85m8T&mM=Xy-g z{>jwXRkcvbLPz3}p-WW6+I;1Zf~c10+&H)E@8bX-zsnS z)p3P5^!OW#%Gis2J8GG%k-k#SPfDij%kuI{4)2cz2L#qSztQW=sFc@qYEap`=7ju` zL+{mCWf;v@KKQY5@iY$QXlrc=p7Um+qPv`DCp_}Tb92+bq@Kqo7O$1O?^0TkIB$dLxjno1s-7D2 zG0j=@#n{_0vaCJ0<)iQ4MG*=1F4G^n94&mh*UP}}Ua;bQhI6T34p~okVU4vozV3W- z$i2{qdrsOP5b{_0KSR5DZqkyEU##Zph6tsuoc{gH3+-RcACDIqW<@^S&~M@$7OHrv zdtdL;sadOUv~tE-%zN;()YDQ|2psZX6&U zt()Slm3BrSnrEk6$hiM?N$GFLlehYu=3DB?__aSiVe2)w+T!@c$6JcTWZh5lF7lTP zIe76&Z=A*Zoei??eFh7-&v^<6y;?A_s9=(pPGH(|-gAXdJeFA;pQwDZSd0G$U;E=b z&-d#8pQ2fO&AV@n_-v8-pXY;)EI9nIz(P;Q?`q)_i~j|E%I-{a9-k2GDVDKpD(q8s zH$WKjSnh)?Upq*-%x~jH& zMNNIAwSI+6Naxg8E!hyRRU7(kv~okQtvqr_UF(nD@#x6ZIbH@|LyA_uF?%nw{FJ$t z`Kl-33#*RXYF)Hg5aiJM|9(GzQp#p8uc;@W#X3D(x#4_)k<(G`Q0Z5zW7ag?vsi;7m5V0@tIqXOoZ22@w#q_ATuc1#>L2meGAElh zM;@v8b*J~!Y5CJjs*kh%^VgF(<`b(M{48g}bh)*;d3%ymf1h){^zP|HqZfx~|Cv8W zZlC-=g}o1 zo^tWGcgVNjacT_7za>O(uabE4des}#_m7${zU7~KX=_0PS$ICiBE*|?4A}Zr`F@dN4ZM9^7h*opxg_8w20SnI;GVNK{^th<) zl)skw>H}P&Ul#P9damWUt7-wa=bm>Ki;8`gcAW|n{WY<$m$}1mpM&Z&^=(VFmWKQb z(mczqn2`5iSD2gXX0GeP&lKl`zSua|KdGtm(90HONuz4B(>hGx!eHVR_CL(*{U`tG z^GyC8pQU8EdDA%!tLW|W6Q;f{_w41G{?p!5=CfG-MF09Z+I!=7nk{?Yd-U{n@AdiV zr;g8!bT0l@`R(n-qTIPkLF=;`JNg!z+s#ules(;*JaA8d*~^bPhmD_EY_hra(>(L~ zvsEm|uB&QqeY6?xgpA-g9wXDhR^4V?|oO-hBZPAAhhMFZemlplk695Sptp$^1EDA!pL{4b& zZ(Emei>a+YTJNy>nkl)~{4)xRtGh1+eO`6?tl8-U6TMTK|2-4_USM7R?$h~m&7VG& zZ%#dU|F%l)t&l3c)F-oUty%rmF?vhor}UR!FPTo#uFfewa&fWxlJxzO%WBKt+UmrY z<|{@Tea@IvF=_QvT|}|&%DId3d#iHyB+oL*o*NTr(VlYt)UIQf zop2XG% zm#*lq))y)~pEp|dtqXgYxvbx7jk45YeLv1GH>zX)Jk!@&9cqy$vB2rd9f7IOY6P^; z6^aP=yxd-+KiTA1;u0@o(WqIK?8o{29Dco>z*XxzzpeU}`~3o)$9rm`pPGxx_*!)S zTD>4VB5ua{0<*MmPoZ;#C2l{xS`E)EVyTurqK#n2OKNhduLC#Y~Adg z-9H~!*>#9Mw$9JOe;D_H&rUw1%x?^bF%ka1`Xs(+<%A2ChxcwQMDy~Jq zS50>1l~g}#d}Z{ZS^Du3ubX>r`ThJ8ectYP-(1j)q}SxA)*eTr(pMs%ZuS@djaDu$ zU3=)$x6QpzKCe5wv~FwDr(f=qpQaeqa-5j1z1XIv+V$`0Sr-{5-g!$-IP_~HLv*>^l$xE7 z|3BNw_WX0(yz5J6Uh;fDef>naThEVvI$kayWLf&?$bLiXUY+o1ClqCGebOj?D722Z z?2VPm^{d)y^5uD2=eMucT)b?}6#HeLD#T}IR7rMTeO>N-pYijP%(=^}GULz3Z18mR zk9>MxO5WO?{r=_a>!$qQV%7W4yWm#OtSv!NCJL7BIU6o89rvTHEN}bbk88>#FW-oT1$Q(s(5aCCvii6*~w!P>@I3wLljjneAX(v zDLj#7$xbeIx8x1wxn-WMe`OwjDVuul+1$q^6K5Qcn$u^&b8Gd6OZJ8j7^K!WC2JWj z3s>^Iz_=)6&jXo52Q%inIb^vhaa`E?zV zZ7LP>Hq^g;Zn5r%U2*)Rxo&;Ne2>l7b6s37wx+~lVuxKX>lfX?K6(3VQWCmd*B)BL z7xpP1XJuS{-LPb9hJ?W!!P<|g>l)90$^TgR|MTG|eaqQrhhB~oTl>TPU2WZpH`WDL z_QY?qn!=eWQj9VBxeno(nHJ;O*)PMH>o9WN*NosE|{o(rVl|@9I#J&^zUFCPh zNh#j7pRE=B<^PAY?)rwDmG%Fx^)^mU@$&PHX3C1r$8@GI``RUuy!Ppfjl!3n9`?Mn>+ktX zOTRzaQS3KYt96OzYVAdMa_CCB;#ndlT!?PpIq24VfbDC!&lX| zz<>YO`u|g!Th%jpy8R3d=VSkJw-w6Gt@fR?yELBp%a8Y!Wh?f4pIY1VZK>sxJDK0> zn#DY%@3xEos@U;L<@qT)3$qzp3pRUBcAdTb@_mU{|7{N_RGlw&e*8r2ulNnN4aGuYRMoTBZmKMFf&tgT@?vsJ@1$6wLGpAnfZ44i*44u zE&1}oGjnmW`V}*UsE6H+pL_4wUixW%S-z(@K__X#zx%nOy~!M!K?)yU{P<)2_{qw= z#ZPa1oLu<${rj!ff1_(3%iYcSd*uA53);%5|Ag+}NZ~O7uP&_1WO~l5d1}vRElXt?+#wJ112L$Ju-w-dB$o=^(U8RZhK*jI* z^W=|zITM|n@_XHjsa$(<1$>%cvHCuV-lp?%X~n`dK`VXYepdS~h&?RmtFP?1B&G7| zO{1elGdA8`Ql>c5q_~!;xnb_&*Wuh}E}n`0@}IY#XTr{ZcH3Nbr?p(3=wa~w?uU$o zwW_<${z)lSoYTj!>(^C%ZlCyjf8PlF%**)mc3PqFH4nwy<9{kWcRWy@CHKa@B;>fs zYdz=BpWl0*{m@c#l=&>;JEDe?6WjYpzL}9`m4utA6T-s|K6GJ=Yz&XAw2qspBc<#CJ6wJ!jU6 zYp%JrBI2>)%8eaGihC~zYds7SvOH(wGH;^LJJ-*8g*@Sk-*!x_6t{lC?7#HNwoMbx zb?rW%@LY7|xdIoKc_(C-cV9L-Ag=D7MsOi@YN6mQ#>jc~^_Fm6*qEuUH!$6PL}OtUKp+%k+I_eQr?{Bj7W4v!mW# zmANs2D*vp6cxva~x;lkFey7_r{o7jJf7oJQ-2Q4+`Q=+nX04a_S;eob#HRSy&roLP zmz{j?{+TJ?zK2ZfzI;5sxdE~&QBQaK5<7!GqWTkjf9=2QW%u@yq~DamgyFI{Q# z+kyAwT;;_--|mZ@E!iw_CUTE!o$Owpxa|1rOEyLAuk2sB_sP>2A180BIqNsM=;i6{ zQ68;9YeYp}UM$~b`MoZG+l1$GYZUkXK5wSEdrv~Z{IA#5cJ7*1tMa8WcunTtMW1r} zU#t4Qn)2!E`jnPlemBpa{K(BLVb5U;_%4-AT(;tW!2P!snz{cMyZ4`7^>yE;Ef$;w zQ?9Id5Ixmz*N$`jSEu&8ygcJX|8%)^sdEx9-q?^k|H;|X&Nml6zpzhP7&Fa!a^aed zk7PSGyj=U%scLVVDYw_@wxcPB&N$q>`+fhc%%0`zzs^eO>9?5p;J9FSZ{ZhjTmDP4 zbUBPz9(U~7RVKLkzW>($X<5>ba*{;$DcTeICMg}?U0HLg!@t*@Ux-G6PGe4G9>*VC0xglyM)KRKOuw)e}MD-lL%9=fHg zST0>`RgU^y5xFyOddk^3aYn1pu^g^^=&|ADp;e(L(o436E&WsEJb98^dZ)$#hBK8c zuWz0zwO;D-FvpF*Pu6<{`;r-p)~}kn`;0`Pu0-YQ7x_y(Cp)d0&cBye?R=Dez21!s zC5{VocXC(yeA$@xI8SrJ`=H9_-7k-A_+PT!KBaZu>ZPxPzdn82*W0u3cHjO-tTlq3 zx4+ozT9J3BqSW)}x^(TzrxR}-+bGz3OH|+dcyUarWI@mbtK}63bB-On{P=U`r43b% zbNSbqS2FjCs*w4K$l%>s&#$Fy#7)8EBCCQv?HQU-hxT9PTuxo1;aFHzc9t# zh2QPYy-HfKo7=8?-;$FPBm9m_v={t-xb^L0kKYPSlSERlY*#eew4N(ay?^zMUy<@F zZ%9Q=l)2aUpYK@4j*qARyxXkR(*BdhTOn}M#RtD!^+dm&{r|i(Z;DsaGo|*&HHR$w zWW-rqa!vRrE?b^;vu2WFtd{3&wWT8abh>kn6^JnB&YC*S_gDS=_m+OELU-6Wp5;<1 zRy!A?efHH+^Epc|+@3AFn}609UkPoLg@VZw_FFh-fffoDhE;@5pB%T=_p{Nl557k{ z=gpDy{UTJV{4Oi>n#2>s6%*IxpG&$H!y;i<*XkLVE~_T?ul{II<(cx?<{DX-ezF*+ zy^>lPztw?BIs3GmYR|(hSwCx*tyO513op&p?|ER5|5EI+#^VUZ&#IZK&cCiaGrqL$ z>6x;PZ*Eo}$>}~aQTe!P?X4@%%8&WRC)csBh-Cz=DCWrwmSm6GH)pzs-nZTFH{4|V zem5rWUgf%tTXwG7a%Gi-hwq7>W~+lkF0HJaqB-xdh3%e#IXgGU>r|G`e-R*d_kZ49 z{fS9Czi#GQT0HxF^cDVG2h~>b=R6jz3qDP)>@A*Dw`6~z9^3i_#~1v`+b>yE`u5PV zO!3}~x5)=T{QBAObJ;cbf-6G1z9s&jd1*(OU~)k(+d08SyQZzXlekFg$G@)9-Ai2- zu6g!-^;G`#?4_%pOh37~w$GO5sl>wU-*eTeuf?)q!@ zfuGkx{;HR%nl3DO5*xjJhNQYnW2N%60wLd7Z;P39Vz=J?lXp_#FL!HhbIw1r56f;X zIeW}6UibT*0Kel-QNpZEi?1At$h){ZRQFuf6rdjSix5d9*+^Q1$<_RSA^||fHZo4`$tMkf450}dmFJ2CtY1wVrvh%l; z>}=yNHG9v*ZgK5f-4|?rqDii2=C-JJd<)t0>mGIc)qd&?+*JCz?z5C)()a83(~j=_ zpMKp@nDglC@_h@A6fmq)-|8IWpY-tkRqND0J*GwO-tT8!dZAKQ*X8Oi!`J@UsVyQR z$gyzxkFUD=nFcu$qD=lhjK2M@^qJ*VH`JJDmUo_^SJq0RcoUn;Lmwvl-M zU1&3ZmbRh2f&YgR*Dn{jM3o*DIK(gg)W#(yJMT>Ayp+7cIo22MFE^?ylra=Pn#7Rq z`A|jlmF7a_hyxvFUGpvQHH9Z;Y0mX@eBPRTDB)e| zZ@u^n?}GFD%w8^+t1Dd+xp3e8`9*vlkuHDLFU??eww0)EOyq6xaT{wov)_ zl0Tw5eYP-s4LsmheY5Gg_|NYr<9k+$DV2YEc1C0E?5UIb_sz~d$N5dp;!QTQ{Y=~S z2j6Mu{r@$cqj&GE_=)?{Pfk@{7+81qnC+)q?UQ@zCKzRZTXdFljq<|VpnLoK>@VpT6J#D9@!>K(Q~9gs=aSARdm0VrY9>d?YTMmCx#;*?-822oIkUF$ zzdYd+5*m`sr@| zt6m{0ekOZ)T%+bDUlf%2qi+{;`o+Gv{W@nZS_n2jf05C$J1s(%^UH&k!k+Fk>?0dK zeEeSg=-Ic%{ra8{c;uXTm$MyxWI5;27X_Di`yzMO%J)B4KYi-{ddA!LdoLW}_AU&ufbN>7Uk=u-Ounjg}_wS=gs$>*!MkrvW;bp-;)T> zH-ALBA&p$FwoTEYJ6@~H$uZCR?q@$i-*J8Dzx`sr=SiB@sh<3CWD|eKeiMC@kVw^2 z9akS7VGMR&+R4@WU9-bKORH;D{VFFe>mbpi^@|GUPz*un0n*=TdmKbGSAt1E*3nVeteF{Pqs-x`fI0g^}RnH;<3U1 zpG>&^`ND;dKs<7yLH?tYSlwwgKMfLa~|Hv ztPf9}JnPLn=~J^z%H#H*a82YBTz=Ni|H)aup2LpkI9`{0oMh`=HTl!3@7mW-9iO}2 zH1o~AiqBR%KW1&R{H<^`X5ybn=XICvZFSGT`FDAnps|JTl@}{lFAY2T=a_)J_7Y9& ziWe)^+}m+`$(2uH{`{@WGkGQE`m-%Puhi9%A*EEs7-}&8{Wd*6elwLT%(s@7E&XGZd97-u%#=lE^ORL*-%ac9Fx*(}zhG^7 z^)a4{<{#HQ=gR-jyOhJxpwDUP*Y4J+@Yp;Vw=3RBc?)72UYO^{n#5H<7hE*8AnQ!@ zrlT%eh3Dct)Xkqvj_!$x?Jg~}Q`*Y-b*;qehv!tQr}1pM`rd@sb;tc4Ho=Nowlfo_ z%dbw(l0E8WvX_TFQ&RHqHdFJQd+Ce5uUT|~U%8~uud7&DCd^$aGkC?$?l0XIMY-37 zCDS{XD8JCl_52lRz5RRT-kF6>5i2^~)+*%ls&`y&7O3rAtW|yO%Q4T^V41lN1*-&9 zPn)&uY~SUS^Vv6I=dbCDXetFa z@?3TtvRQm7t~FKgN{8ZG@jgj?iFn<6w+z-i*j}!X8v5pHqr0q~`om0^Y{&bX7fr8xzIrnA-OzWT54AjfcCXGXPD|{R{(H8Fujey|>)VTl z*&F!ptW|6ATDio{$EWCVp;mV2yD-jubA-!#A6o9Xf6+Z?M(e7%k1R}utdBXL6&A?b zxA8Ya7q`kYF+TRkEK|3KdQ`S2Gu*9-YSq|Y9TL&i`uTEU-T?_-)BMHk_kL9^^vK$4 z!p-M8Evcxt*h0?*v`Hk+`C;KJJCl{Nd){fhOxRxi{jX79dt z<&j3DN@A4erPFV}NS6jL^-z3yX<1+T>1Wl}WwItKXYL8nobJBtOjLT7fs93kk6TZ) zUg)|r(mCw@497nGsWduW?kqm*>W$<5^G#T98$Muu?j*vnwaV#j*Nf>lyUk}$NpL>C z&LDG^&YS)ziM*@WgJO>|wbcjJef?XwF6I0zMLpZdH3zsZW+nEs8il^_E)w z`o6UZ)>~I@%ZNXFdE2sS7dCv{ct0&5c;$uENFVEsO!WsRIrPrj`@4U}El>YD!B-`6 zn-5+%_rCCP^`9mGx9;n_VrMb=-tVF|Pr-`sUsKPPzxkf5Yzo7rc7tQCC{!?S(u zta+Dbyv+77kqd0I$kAEa{WRpSy`pgXI^*N^NsqWDZ!&Oi;gII`o4tQp-qg%p_WO31 z{$`9^^D7~-=Eg1K<9>5Gs(B?Y7+$HjEZBEthn7HW`@~sxM;5X@{< zdk%cz%@ya~##^9wnN4PM>-}}{TPM6L-gmLQZ?Z`CG`6eUrydxdPPy84*G*sSwZ-F@ zWW^Zifa{%Gy3XH;cP`4bUu=KH;j>fj(lY&CgI~Fw%cf8BvpweZU-6^7a#oi0<26dY zN_?GxtE!hg+EOf2Tr$m|xFl$!RnxiFOM)Dx<*`K@^=;KJRy1tBBIN5X6{f9npYPx4 zFRFa1b2e;~lbRqkfn)cV%*WQ>E;h6My1V|+3&)^`H{N_z5qVhBQdj@8nX{;N@uQ%f zK5>`Nm(6ai%6!4G^~auy=jwAJ7d~6AU-D+}r-LrW`caEsb{qz+c?GYHd+=l7KX!i$ z5q9@CvaF}iulf;p%0x8iaA5SZ#a(l=4fou#{Aw-wsM_!iXrbI6`Gigvc2TbD<$)Xb zAAVIJ!?W?w#xKDOC+zff$zI=JCU;$GNpk$BXC7SJS3WrL@szsO3zp2o74muub*)T7 zSefgRenhd_Dj!YKn6)~=;hUSaV64-n#Gr_s)eV>Zla5(@W+`_0VDqq)C1`U_C)Y1W zE8hc}6(h(p zltEjaHzllGFO!0{hV5+DOX*otOl~i___6WTrp()RJN?f;KbOvS`amF~y7<<5RT>g9a^P7r=x7%Jwbg&&OP*PiQ(51xr-5klKJM3>A6Y}Km%9_2@cdpm}G+%+( zUJf0{a>}%D*s7csh_yMwlr9UZaK(*SlnA$w%$d@cJceVw(aj|Vt4mVl9y@HjVQD4OU-s|pnZK{i-%p$u?_>Vg zvX1R_xU#UXyTX+_NB@A9q4}g-^?vUkP|Ig?$>p-(Gxa%lmMA?nzyH5#narh)ygGIU zrgL7kl|6E~#C%}ot>xaq|97_t@Xl2B{$o=A4YW$_!siqV*_nGYx@T^-`&s7~V{hzV znRt$Z zyT%?`aOK8K>E<`i`=$#nl$%()DWU$%A&EA{?We5wO*d?GejzCOtugt~y}esL{r@|k zE6_bSWCwGBpqgj;E2mXz@I9pQ_nZRWH!l z7GBr+c!lPgsju9yYhU#Im7i|DzJ7F$(ewQ*kJGjmRX)9C)u}B|zwlGp{g*+D3a+^< z-*MCD+n?=N7Tq*m&+bFb?s6aEJa_HBNg@bc!$ zjZaR?zB9BiI=PqE&%CVf-Q}lNo^xN_nZJ1QsfPR0PR!!n-TU}u&ck);eNQ|#-Vr}q z6EE2%R2h8gq}P$OIc{lZuBvbOTwZ5&IUv92<}%@D`9TiqXS%w%KL}cG^{V+^Qxg}c z$aV72sd_u*s+K47Ex2#35cv2wHp=0zz@nKM7q^E*yv;v&(Lq*5$-YA~wNp_0u=VOA z{+FaBUm4jhbaLTrOXDuQJU65u>%*+okA7=e=qI)9d2}z-Lfqm?(?UHTjej8@mx+Bg z@^1CmdOmc8r6`|Fy^G)(llMuFy+wlrCq?z_QhAs#Ut;FZ(?*W-&U9?@_DPw|IM-w5 zr=~gTLf$(J&!yj6T6jkInxlw~{{xAC0jzg_Mz^Lm_oU8oFbz#|UBAxFer4@7-=o!2 z4@~?rkL&n}$#vnP?_-2SOAf~FKChv(a@qSC&kH#wR(*+`>cM%|ebs}Od&`7$zp7Rp z`!}=RWBrL2YTNnvw4U|4=uc0ZS77zfqwUN*+uQ$7wHM1+PLkbd_h9n1+0H^0D;_)EcITb- zP3d|1oIiik&hG6VuCn#N`Q@fA-`zX$TY31jOGk_5e13e9yO@(ldUuT4xj6N^)@D?aB*meC>w|msy4$pZNF> z$Q7Ig&^2fr$1M9~4uaON%mno(Q~Ik9ltUM0&Cvom4kV9Fwa^=jqH+iLN-yXdG6>aN zEMtjv-4~Bu=v;^rl+|E-$632p7e4X$wj<^X)Wp8vqgO48SRQA|SPDJJlCf+8tv&;< zO#?4WGXlv%-HA%I93gVe8NwYBa~_`ntz&~(%{`+(G-{z}T%T%9{T{-%x?<+i zqV-;xqC8w7g$`k>kDM|PeP7<3y3otSE>Lsbp^sr;DD&+|aI-AEaO0 zQr5a1vggA;GtqzY$IomG5C0jcIwL>C;{PA5ZM=v6{u9@F@kLeZg-h_%nOc1}JkQuL z_7s;W?e@}|>K*!O)t@Co+~%t*p0@^Uic=L54q3ITV9$#y?OF%-EIL$Ua&wQheMhOx z#qx!>L>KygTY11{sz>p+f~gTd;#v(QyyA8ASDOT$Ty<#Q{t(Wi!CFs4-~2gdx^lMH zhkeUe8GPShyVT2ZYKG`3z7-$-EB)PfxKOd+;{LAxTMtjvv6$`Jv;6#Bjs1T%`s^yt zdGPN$uO^a+AvR`KLR|-+S`^$(Ij*Ke!sDoyxko^ZA65 zy!h~SI`b~?Kl(9#bNYS3m%mPmfDVUL`3YN)j>)X>E4Wwm5~s8(x@{^BObovmIw zrv39)y`=MN^(kI0i=KDkm5!{=_mieFX*C2hrgOOM-~B^DGvI;DTnl%}RZW{)_8oS7 zVp{M>=kSWI&(Bpw-(}ec{S0Px&SDikU~ne;)_YgcIqt%tRjX_kG&Sqp>R2SNA6yy7 znjWBWVX>{2gRK1 zxVF~!{9pF+oKBm1XWw+r8w-kBy{x8Q553SUsb#V5hWVO+ok6W1KkxK1iRI_qHQ~tX zb2F7LStQ-LS$OKF@xMJQ+N9mPOHUN1_1wLvb#TwhO+Kx43;Guylt}&m#c_w&W4+mS zCzm%Z?yTc}DzQIm=^C!SGgq|c+z!`@Sj4s>;$A?a{G9VLqR(8!tXy6h&I$Ts_FVMc zcjZGig?%qu4hwQ`PCx%`|EGuG1;at|ANXZ#)V}XG@VQsNvh&HAQ&lZ5a_-hSgsr=; zYN}NrJ*VQC?meaX|183*_7~;)oR{vNoZ>_lHx<6NtNgVuD`>gV_71y4 zThDh+{(nmS{`rZK+~y}6ncbIqG_LuS@S1CxZo-cpPmO90dEMOhxk1u=`*sao)Af%E zjSj%q+l73rFUrHd;OjmXBUs6uz|iKF{TSyT8dzTfb}j z1f7|cCZ0AYuNI2jVT&)zR*cmDy7l0nrO`|OUufNw_BZe31jSyHb%7Ci*>P5{Y)ee` z_8iNf9Cqrvv-rt}%Ey-`_BvUuJMG;iV4wB;MSt90vwMcVv$p!J)0pGDDc$$||0h>C z&C6BWmRR-8kpA|@TBrYB;K~0dXCAM%?OdXKyG&-v`MO!FZ~wdae0BZPRhKH4++7=f zQdNAp;caEX(|<(zmb~)N=~G_!R5LhMMfJ-r37^&OY$u+_&i1~ha!$DK^68faGIQ6o zoP1jW3qu5q!`>^ucp}#y! zWi|%cR)py;7ka7Hqs-yX*f;rg$h_c#f(gABB`m#H2~2c3;yB5&UDjRVL!@JW@C#1S zdHeSCDc@=?TUh^QlU~>(@z8@B-txvlKfI;?Ehy^lYRza>)Y_uD`irumZ|nU7g2L}k zN;;eUefZRR>g~{9tL_|UPqbKfXlKzYdml9hhL_hoT^vK$ml&tWNG!;GUogF5ub0Mg z!ChSsW!jhAJ@)Z|!J!Yn)<@57&=S56wmSM2!G(1Kl2cXAIUWzxIMlm1 z;a`Aakj|{bDeJka4(t)ky2Dx=qT0^Y7jvxE;?0g@3te5LFE(wo%Ij!LmAkVtX}-+f z&n(3(zk8opIO%7vT(JGmx?&kiJ(VU|_vg=KCmb$h`%(MJOS9e;bU0$eM~jty$`VFp zJ5AQde~F1(B6j@KR_oN;eau0tgGv_PHs%kR4nAct^whJfWl6Rt>JM*BR$p2@f90hm zVT#EUeCArU)_hA|61|Wi{JNG-zWwbJ5}#g$Yiq2pH;MF9yWHMTv(xC*;qBp9_J6$o z%Oz`mz5hS$l|joUi2o1wwyWJcQ{?1)*SP-`MR$rX-23ak^zK^GC&qWL?RqJC>2tT_ zro`^@wKGm!o6D{m|1RR1_}}sZyZjfGv9mPieyRH@^>SftoKAg>Fzdu%b-zE-n=hXz zO6`=nv{08*KriOd)`NYq?N4@99ewinobS`0Wu~cDrcC{G{K|{YoJB8FRl?Ta*R5qg zGkJOGyjM$WZHo`8N!qdohdI5Gk*)EM-yQVt@+*^H`Uf+Ovo3jMUTkm?-FVQ6TSoh# zgkfTd%j@_}*lK41#WyGG%Ds9)!Y32Cei4D#$;Ca;aR4eeT z{>62N+W*wQeSce3^jopggl((8n7u#e-@*5YQ)kZM))QRo+)U3{%j-mEEOC0$us12` zOzQ(}@%L+;6{MO&wN|-Q74elxF|K4${5R=H%Ym-N6rYxr7!+#Z=w9=`NW{9kvpol7B`75diqA0abo|(yo*iGIe%ZT^E0{pUTaS9 zq`7VGK?ccA>~u=f+#t}?%VXZC+{{JiS)HFvH(6yLe}al+5UA4>nl_FC*UaoSaH7P{@l z|A*Ues;~a4Yu_KG_5J1Z@>kz2@_HJlt+nR!czvAxGvi-K4)3FN(6LzpmKYk z%=F5tIi=dSmk8Lg_5X~{tA7=Kd0Tz9^?^fA|IhgR<Gz+`K3G4qxHo0b7M*K$4me@X=|pc@9vwnZEoAF`>*b$ z&${#Vj6mehvgtqbT7!0~rf=h!q?s&ra$&t;(mVSHuf2H||M?$1|BtKHR|$3fdV|2W zp48k~>-SrIpQTd%dLP@1kM}>n38;LpeNF49!db=Ve!IU*Z*jQw!fwxnuldyI=A-B{dX+j|9eKZi`Da_rPQ~-`0psL!@Ek<Lbv!5+p8gnuxE&8q&tBU(Ho=sVM*T1!JKbQPyes*u& zqRlR%3x0ozHPGI2)^fQ=)d9o1->&FyDih9@uJxI}Jy7m?nN`)7C0j0T6wZWcNMC0>0Z428AhnKFddEEGIL+#(c8(a(h z1pB7`Y^*%pG;y~-&$$a8xeV?l_Y&gIByM?nd;Uf{6Nblc>#OQyE*t0fPJFvNVz#7Y zzBJ3_1yzp1Kd0$>S82v+tPatd9R4p(IOBSO%jMG^0-BL=rQ3Wq%B1C(uZ;CjI~yba zy&-dBamnATM$1{1-T(GKoXBW&{r>T38P|IXtb{n9?Uk0}Re9jBedhc%dM%d)9m4nj zN^N|3diQ);rTe_S`|lcoPCs1oc7}a^+JE(nUlaZ>Tx_*0vRrc3{QCH;fBqJ4zP4nu zx?B?cvMBWNq+<`y?#PMRz2Vh~z6sBTe3tyw6k5JW*&z9zn(^_Ab&pH_Z8q3;QT|uA zhQ9v$8pFdmhb_;>9F{SDU_R-~kA!#iKdw%ER&}`a&w19_f1*L_5Z(yv(B^uums`Q> zsZU~d!2_MF6;89ZWC+|nwD$UStt-zJOJyIZByP3PKH7Q6GM=~o&RxOSqo@8Butl%C zvhb7s1Di*lMV*z;SF1Yl*!5{B744WLbh7oM#NiqpH|2MKB2Uhb$l0r^w4mwXkIq$( zUVfDom0{~&t-=~q_Az>kB%kXv!;g{|`91xTD;OuusBH33$=;Jbr%3$&+ODlh0);ao zcI;NGl@JN*+{SP1|3SrXzVK4;@rb{2FUQVX-y-F1;d-didFHo8WfG+el^pj6v7fMN zSbWgNv3K>2B99|%zmEL;yZF$*nZlkMCEwmS{IQX%nC0`r!w(Dkl#jC>x?(8}I-B&Q zsOzKk$_Fo8Um5HB^TX8alz*GnZaR{Gp><#E`pNG3{xhyEFS#fav_8x6=a+WNq7N4g zU;aJolUeVdy3?ZePpP!TIjQS9Ij>|QFcu(QIsby>1&Dsnp$iZhh43yw4Ey8mG$+aT zwfNNh>KOgZpygB6*FOzZvXf9X+?RS*C_=pA&k;|{k{>fXZ@bP~^v}7LZ&T2%fA0Nq z(?eg^KFur?O3+yycyPPc+>*k%@~gEaFE2Mdww2WNhdx4@KPvvOo_Va|SJZmXV?R2C zIqPIL-jHzLf912n+M7)Z&IWxaR%eSF{{9>CJAc_W#dB(52lwC3-(^!1?J9h7OC7i4 z9nP5s$!qugbFuyD_51a;w0*~;HnrPTWV8PKHuv?@r|#LO`45YqUi9=1Tj#v%s-IG~ zKXa=p%hHiFUNX%plJ$NN;TFbDZu48M9RHmzreSkIo)FXoq)cq(2! z-F}Y^bkv2tc#er6%Zqb&T2pMkZzN*<;lGd&0?Q8#942F5e#kJ9>*eL8(^{?mF)&*d z&oKX*V38wT^B}+3a-La3UGuZqQ6aY0rW4oi+B!k&>8D@YUzDe>pU$W}-Q)Q0)u+qf zZ=19`daCK;4<(zj4(n;k9I6!P^{A5MIri`L=afmU_4&q{=KA5a&o?KmZn@%>UL`&O4*nYw&QLr03O%9xj&z6K=dS%P!ke5FDyE2f^OcI(Y2r@vdTDF1!FsQL9k zVcx%)OYU<%TUot&R<34noXUHf>o?9An#Tv9+8-)kRBGR|Q@-TQ-kS>>Rm?tJd{|)N zXTD@oa;Zf^#L*k&%Qlz>udqHi$##zW$La4>Sr+g2J=<12f4NB3jDj^+-aRx{i z?(_cR^dGAEZ@MaOHB6~{s1Pdu)so3ursl`A)vQ4cf@@u^td$%){ygH7XtsHIpyNnK znP=RpLz6STKkJo6cwGr>eF55sb0k~qiOB=ciMKqjr0#T9)w~clf7Jt@Baug@&Qf)_ zlJ8knC+NPUvS~`e604M#LT(jbc+_S6Z=GLN66mR8(en0^>YR>?@3vjk4H8_m*uvej zv!i+P`+chp8Oh4VMy43IEtbf*yk<+zrT@Qc&KCx)J@k|_D@~j|IfV7Y_7gm^AnEw#43MXE#^_M`NF0^ z$f<+#GqpVy9uJMZ&8=*4CVJOVi&GY1Cu%&SPEN4f`m<+Cw&mtno$7C&I3#B(yZ3qj z+OqQO`<~hRj{V^a*v(XweqKZJ(lR5yEj5<<6Jy?#$17O;+c*2Pv~%3-*IwRhyBgiu z&ux#KyJ(W%*Tp^`Wsbdk*!uX)+`maDSO0ct-}K^N`Rlq)k<)AEhic5dU2|_yT?Vt3 z<{pdm1DY&T*PqFrGx>}1-`--w3RYXTr{%xTPFS5SZsxZ;!zEjuyY2dU_A};N?V1)( zyReo2_xUNuwsuK0XPXrC30&P;@|170*8KPDBeq9-iJZ!++aLAwLsh_buezBwx1ZlQ z9MC7YYuo+Ir0pB+ck><>6>z<}qDnE?x&^ixa^eq)S3~kXwdhnk`^}PZ+PYhLb>fRl zOmd`CK5uU{zp9pNR`x4v=kvBAE3r$nGz4UpiXAKJZadnW+JtT`pBTtO~L|@>NCbU)OSkLZq}> zsE6k|maIh##zv*pN(V#PnAOWCANfm+43&Fm7Ji}*)bo^NJq*QA;|SQaMOdOs;R@{r>|=4J1vl2bFvPrIlm zO!4|Rvo;Ilik^7? zz=P-FGtOUqR*`1mEPS3Ne9w7S3JKqS7r~nIzj(Tf?(7JM=ND_Aan4(J;ku}n1$)81 zNm`$IMRlxfWUoC7oJj?po5vv)C8xI#P z;`-^cgDqh7+q|huKCIv}-8D&w_j$pb^`Kqxd)S>tRv*l6(U>vUuJ(bLX!8Au$&Fv~ zCmvXFe?^+2u;E3Q|7^}vcr-6GanHD4>Ky4gS#7Fku=6VAY>7TLzrHmynL61vrFo?X zU8sCGqp3SL|Nc|&*I%y8UhMlz^U{M2PPO~(pUO9UlHG?_u*po{9-AGu$7k8Oy9qqC!OwH1M2YHk8@Da{vj4!wgr_X7tcxdv z)xW+lF*)d8S4^6#In`EYUdw>3&it~}eAmlc2eQ6;xMa&a@b7{gFDS8TN6r4m&u9N1 zJSoP#WPa4Xyy=Bpv6B?nc1lEUoYtW{fAf`Bj1jgQ9&{XC={jqjW!1l*pHsSu6OQCw z{(Cg{^LFJ-HvO+Xjo!xW$9UT6c;5JCiJGmCHq%gy-uB-7<@rSiEe>_g6v>+L`HSRd zPvMi5%*j^4$F^97)$E$=+JF0%-~)x(%icO$83~7qibQ@ZyPtXK(ZcyXf8KST>b}Az zap>jYg6B?K+}3fJJ~;F@O=rTjf)_WQetP7*RY$cI7`; z<}NnzJMzHNO6uV{$uM^&+lp5%mjs{riz(Fn`8#LF&e{j>y@f2A+XLn=cidRPx7@;( z#kR(mh*7SEc*E6@71rr_T06& zWnCgGtFOBJ@WX;Rz6Q(gtvVEI-^aky_woG~fBrK!*8I|6=yZ?i&KD7f?JPoX-P)w= zCHOoSy0Y+Uzba&VFlB*)-O81>RwZbtw#vGlj>uX)XLUlw(ZrSlai>4~^xN*IPk6p{ zuk;Ql*2i|`xi+Q~PB(D~$Y>-?pPJA!e}U61b)Iz+euZ}gRWCWK&T5=*(%9Ll^kCIZ zuU3^ai$f0SK7ROaI@8xb@xLbS_g}4Irq%N8Kt-RSMEZ=Y{r5vIu--EIcX^t!)WOdz zZNDE>GAY~qIw31IQM1QiX2y{=W3l`IPoLf2!$0aC|GadX_nEs&`%l^=_D@VsKBwR{ z@k`|k>(kQ;v7OR zxwqJU_v!`OX1r-@49p*0NU_`Sc~x)Q(WHduk?oJ2K+}HDZLh4^u`Vz0@d1n2gblwl zk0b?eet7ubW}hwnty@A4t0%1S&agPV@$$cQr_@Yu-Zh_Mn)z-|-Nf!gGD?24=gJ+v zLU6gLoN~>CtaTp$)+mN&zQ0wh@h*=~IjvyUii^SF-fO#l_A1(ic?6ezxDXh*w{W}X z%BQ;XHErhj?Gi=r`OClWOTHj)X&}#WOXOn zG-ZCfQq=DUb6(s_UnO#GzH5}Z?~5KOgQAT(v3q0Z)oyT`BWNwPBszLy-g2Gjt(PUz z3mXC-uTHRwms)9Idt*WXf5!A%Q$L+v68So{D4@%1ckh&(ve~vu$Bw+SZQS-vsC^)QQXDoMf}@%O??a$3lDlr@vokFrm0ztitJwqR!Zb$S(ulaMnKFkr$o5%5#XT#f5 z!E#&M8oq6-?Q_1Qc9qZEzoIg}^?rKZfsewsW8<9)DjsOmMzbzwt~yay==F#})m8eO z+Z>MP$`g+XUUX}CtRb|dJz3AoC&fSL^#WC~=$u30AFaz~JilQ7-m|Ud>CQ$wjWISxYPR6xY2H({KeOFFDBQ5orheX;Pj@f0rkQ^G z_*mWdU>VPk13Lv+9oEhZ*sb&{_1mMfYN|IbY}EFdrN;eRIW?mBRbxo_#)gOUr^MIR z&(XfQIjzInUrbx#iul?EF^LQmEJEeGa-fR^WfdyR;p1$kQ@LWN9o-_V{XtxZ^U8{w zyZ?8rocra7ZD{XBGYOuzf8@;f9ryng|9ZB^+h*gJd-c<2h%}bR$6u>CUdP|&AE7Ax zFGl_R*43ITLmu7`^R6svSZc1`4c*gug`oeZ&=vs8977Qsil{7`Pq2y z?Wauc%HO}c>u-ZjSnUP_yPUT(lhyr>>}BJ5A@ORzj75A_jA+NY!ydl!j{=%MR^8cl zR`=^FkqP?saS6ZLwso`KX0w={$=rAIQ2zDxQ6Aqd@4v7eri9v-n4BzpYY|e^pAq&p&ezmVS zq_|f=Xvg9Yt~~{=&U?(2ywP=!gq0bl4agOx@g-7;vD$Q8?XzlL6+q z6%n-f=5;ufCq3xHB-Utd%}JjpXfRFs9A^Gr$=P0DsgssX*5fMyoUR(j8Ozz0%y6F0 z#95KtT*E#`d*!J;1*Xev{jOS8DNdYGd1#w<`F4xx49`_Bx;aR>?!MAd*<`6yF>k{H z<1qWq5U)9`N({xp?xN4cqxH2b=4~inc(QU{!;wDacT)>jJxu6NvrXn(xZWdFg8PL> z(5nTmN^_b8-4#^y6nE;cP5Q7WD_D8by9wVr{g1pYP^l-h;PuzFyu^s378vVYy)36B z=Kh=&duicojo>-^|8Ho$v@mz7g|pFwzSW6m4}HpbKJn7F%K?!arubY|67_yQ@fmOT z>F)Qv)64Yv%~vnY&p7n9zQoEdAl5ARw)*#%KkxiJlOSo)b$T2BDrC z{bY*ZB zZT`bz-mLy}CwMH#_usZwZSVfMsh9XfPoDoZy6b>8Er)>kKLd$WYy z*N@wGcgc}O3H#QXHU(aB+H%RapWjIP<^9*+msjpBe0{Iu?dIa|iOFk@EiBsnuYO;% zfG&&kzaP=pUjBPmS>|zPo1zulqDI3x9h_MPf_Eoar@Lvs>)*D~iWj}^VE-JarYT3Re&yq zvnrEUmfrr>UqH0eIO*`Ty}!(hLgtCzX6yfbd%>jTybIp?K2?c-=kuxM)t}f^*Du?e z7XFZ3BzXT{&a5pLKOZ?L;{E%;-t)h2F?ekDkUp^D7SNSm3ed1-qPT zZTHW}`&Im>=fR{)oSn-+#Y)n@{ojujscm|-^t<{BJN6)MH>?X@zg8kGc;!~@b^aWA z{k4kwv>%#x-h5qhNOa-zlLb~r)fdH#(`!HdowK7ZZQiFoMKRk6Q9{SJPd{jQ#^0s> zpL5C7^!nwCln=ywd(eIO>Dqn4Pbc2io_Rw1hr@4%zdw^tX+2)yUT^nzqKge<-sRUB z>+{oQZTnH^lEC}@hyC?awZ9}kTM6zg-@5D4{-X~IEY9&=Y28pTRcR7KdV^@!spyWJ zhnx%tI};OCt>-^H@FDKCbE0zd4fFEdYlP(2GwDp|F)z>CFTNWRo*ZL5lAU!j!sDcyugaV(i8F;-f{`wa6}SCdk~dD_ zO22npD`u_r%97B79Xa72+M6_(_K9~VcGfL8cWSPdPN`z=Jkk8OnsWr-eAb=1KJ;Fo zqko6c!Zyzbc_+oMCVg)dp1gaT4MZ2VAu=w!3U{VizBZ=)AJ;%-tSCnTjj@-K@uC`sPGDkLznS>|yPz zQ!mwgUlHFD`d64qD%p9iYJ9oL|^9S3RQ5?Um*4d&?fF>~AmkbKS9w zahmzP<3{H#Wu8lmzjUtKQf<}#cuvyKX*WWqX-s5~lhBH_Ht{IAHD}48SHJRVmz_#q zA1_{fYR-S5p4nGVJ)N5UTBXePSnJ8#wadLb4@C;keZ=+HzU}_|`&;|h_eE5Ey!%m2 zbnf*9*_~U?Udq3~79E@m9y9j0`A`|-0PleY+it(scfm9&Jo|o38y>%R zzV9s@+qAf0skqCAhdnBny6pJOo)zm!bU8b6*}ndAXyuWAh6d}y5@#xGHot#dVUEUy z&MBIAZ3LN0I5rv^B=e`M)OPOMaE0x;;JL%?p>Iwk&3j<{;heC;DZ^trYtPX(0Y_N&n?5*3%)UL*DL`bU!fX-(;?zeoD5Lw|>qKsXKFh zqr-l|r>^&pUGlP!%AGPxT&8#1JAua%>_0+8fA!`@uocuiRQP6ftiUMnw$7Cf-fQOi z7Hcj@KI8p1TVsa$oxO9ELFcI%K46^l_{79F9bXyeZ^`>SEpKXCY4@z8cj;2E>OlLZ z{a#F16{6O^<XlF-MKicUYi^Uhky@W>gLG zS3hpoe^_C2H@9cY{@t6V=uLY(N4`I9hIhh^8&8c2zgfM!w{hW?p1^#itp{7zRlhiI zlPmq~#dW(SSHAz`{N;Q_r?jYJft57Rp9gA^Cb!CMGw;>~Y}&fGqO|4pkDUf-Z}vR5 zFrLGAd}8$!tM8zGL8j_Vi@tx{9d?xgtuGcnc+vWK7Wa+9CmhVX9^~C{a=Mf&#`@t) zYIba_0Aii)`IR;gtYwxrbz4|jPe|+E5?;P#kCCHG;F8=WY}L=!+WVYc#q%=A`*M|Q zvfs;!bsryaA689WC35NEy;VVL8q6Phq+~Sr-D10auGy@>LZ;97>`JRXndhKs0gr}a z8B6#XmEiTkCq+QVd{y6J-UnSY`#1!Ch9wr&Qxc9(+|7)9z9UrI;fDoiYi*%RZu!~| zCl;)Hg>}uaUI6GE%1y_gE6-oB|>fcu%iTazm?3Az8&d^IMo&>F2 zZsepYHGhRj_{kMP;Ik>;bl1K^KALj<`#?_iP$AIqlarjEI!-XhJRYhx0iA;@{u^=e4wQ|vnQ{W}PO@$_N)>;0m-nR12(n+DM`}Vk{c6uf4aC*vn z|MUu(0LT29&-XoHZhy@5bWy$N|Lk_<$O5x&3IF-K1M7Y!&n$U=sx-U->1e)7TpBOl{0{`(qu>D#fQpnqIGzRTOn-&KV^U$<$wLHR;u z`Te&-ic(6g9u>^t>w3EH#gup2-cNirK`ZN%Z!Qxq3KZfFS}Z(C=_qUL7dhqJQc)SJ zY1c#IKJ7K>TdZBHfB2LA)O%VNs~FW;+*0a{XNZTyec#K&d9G19q(I`~ibwyGUqr77 za$vpj|E`wAUjqv@POdqNh54L=MP;nESiij;r8*_Bbm^&3t)(IJ!hX89+BuaMd^l?4 zWFJ-;nmU>5+`NQit4+ck`LkAJ_@CUaWzku{XR|2jV8k8&*2nV}7rCVNdQEbG9aZ@| z5u}kCBcbyj_heG{wyil%(W)KQUCUe znst+wtY!x-x$RT7Iv%oWMNa5K`9c}PW!qQi1av;_%w5U#`C`15#e~Hlr=0q(b*B7< zuZnu5#|-s3eiopUb~nFK24&VsvYxdE>6pNsu>vogT$U*0yIAJwy$_|Nt_zqBVNcy~wr>KWTIK0i5s>GjfVmGEyj zo^>pC_xCtoXYBL)-L2|~eXs60ZAy7|QRSmb`0>C3>6)8sTT}L4xz6@^dfwE3&f=$L zeci3<+-7oVhg;&#wUsYde7|tiR-zd%d{IM$S{W8u%N5m?Fd1=ahv(>t=(mPF!;7)kMZmmDit5GVT1_^7u=U zm5jT(_C_`qm8mxlfR3$Per&gv3rB%^i!$4uzQxX3pKJ9WUyOU|f8Seju~6>K zyZ5!8hVZQx2|DQM@Pvb{mS^{Yu1^III1UvWhCH>J`aERUYJt`(eyROlo}x;VIxIYl z&J~LA&oSO++VLTCrO>IulJ%#~Ypo7>Gx;imsEn_3$cxPxF>4Q9_K}|&pe&Uxa*nz0 za8sjXyXfEjef)na`hQo6E_yZR@ryH`)|`soH$Bbglbo{+pNm3K?t=HJ5pJtYf)_6B zlseSVAN)y7^qG=O!0OOLwqGA}9NO3;-0)({{g48ahbphuH^n7ZCccYWHYrxs)8hC= z$*0<)Vv>IrCau@CV6B`~@6)=k_u8-gRW%DY-PzO4bM9%BR?PGQ3CrUXA3G`CD17p+ zK}MWszki(O)Ac80H(%y3kW;^!$>MxWZ~C*Z-D=(Gy-%~tPi>QBUlO+Th1>RYxfOcM z_B#yyR!up(`t6kS`@g;^esja~<-PP(CM!cvNT>ua_fwqz*W&tqQzJslTBrZ8|0uY! z_Mh#~^-H{FI>r5o*ZukBYg&*>y;$Yn$0rNVJ63;}pIWv(Y{L1H=-11_JDK@9=VcdQS=P#~h`y|~-$-2V;jM(@Sa0?2FQ3@CZ2H8Ay>;8a$Qt<1 zyH>es`nRuVSZAkv5ji8qxv{w9gKh0wub=*_FTdE&vi$4{Pwl0y%#(_buyN}atZ7L; z(jr>);zQy8-7Pmjw|6(b_Oy__x%c~qDO$69ca`U8ytljWQufYHrMCXi9O1bU&z1+w z;gc-{-Ki_c^VXsxVqU{UbCDR?)vTP}N^52^rVG40x#*%d>vF*akt3c5-aleFkSKC8 zlSQKU;JvLkL5o^@F5eFAs41FbmsGoE>p8{s!ON#|O=Maabdq&*cx#7}Oz=a!gG=^* zekbp-(PIjCpjX_Shp*op-of^3$#O2fN6$mwTyk5~>X9nW`7JU3e_?{KZA;wE48=u` zb>H{$cz&=+{D13wVa&(B>$E(}q%6-_oKdd~-E&`z%}jwhHC8l&eVGQS)J|xnlDPtP52S1b(iA zFH~KV&*gCC_@=AYOB_q{Cf4NqOW$wv{anP(wTJbK!jB*PbohhoKi#Urs?3&>|2eC2 zF8)89zu7`%!F(G{F4GFho5BD=bLW*b%%S;_q9tC zO3edJ%WeLy-cnuJ;xqsFt)4-*Q1x2*?5Kqyc_(M;Hm97L;a2n_zGud7{vW@D4r~1X ze@(r9qMz-tlc(iw~t%e+W*pM=Hz7k8EC)*JslXu*C=iS6b8yI~hC+9oKmGWE|w zU#GhJ^8Tyl?=GIb=Kn{Bf3H!{GyRXfzQ-IkR~=n);pucW1D(l>&RDO1@Wp|D`npfO z?6(eo`}+N`*ilPYi?C-Xdo#ew36`?cL<~C9h*`0aD_K~q1%at3})qOq9 zba{HYy|v3eX{q|%sdsuzgFJ2<*55nx&wtVDga4e}OMUdYciR7W`hDrM|1F2({C9*o zsK`3%N15tn%G~QYeQYcD>b^G|zi-DWo%Nq+Au7vR?)$VN{$lo#1NUohUaS1?bpGR~ z*Amy(ckTInlxK0Y#qyciGm_c~mt1X%MxH(Yhar8Bv#;ZS%`_Gx;+}=NPOY9QOSN2!FR|I(7{{Q0QW6-j29W6g5 z8C6rQA7M);>#h5oT&kM<%jDROZ;F@&p>u;wB zwQiQQwJ6hBC^sRgYu~D{cSgxawkAATyLkUZHD9ikaduzKX4qu!{j)P+ai@Yq`7^yI z8?PRp)w_GC!#?k)bM===AO3gw?!O75RqLj$^S?TMyS157Tb}j5F7XepD!G?GzgV=Z z@bOjEr@QB^eKOTOOZvE*NmlrtJ2K}BucjVg@O?Gs5$k42cK`nK%RLXjVlB1Xaqk81 zTLx9G)X8672Ay`2t#4qQWqD?Hm4VDQUb_$556bvUJM4G-?5n$K-rQLy!tX|TOf6b- z_mg4ew<<}4qRx^%`*+oR&(q$yJ2cXm&tHAD*_%m+6z8yC>{v4WV8WaIHvVdnKfaqy zF8W+_wcL)oZqb(Fl3yi_mb+39KU(%*|NLajB^R~tkafW2CKang>J@ceM^?V@*paPu z{Pw?hTFdr^=if=5^RMRGB1g{8dzZgkn^mHndaC=$+~-oWEuTHhKC$IpfrZR-wkv-Q zM8pTSPQAAAP^?~NO@q34ki*fYy~4*ITz74?(zx?8;miJD)u3ACiip-DHrH>?x^W=SafcYx?Dg1O0kQqzwUj! z|FAZTPbc=%!`k=Nw>bTG{QYq2o|fA!cUIA$DS`LfwxrdDc34%$9KCk_m&eg-7r6H8 zocb7lXpUf>U1Ht$NYO)wYnoIi{HmS!VAqj5jh{6NEj?uVK8u5kkc0!7a!S7bS2z7s zao!a&$;{VFvnEpPX3s+nwp%9Jy0gFhx4U0FCuDU&Wz#HCmuEh6c81Nm+MRFVy>PoZ z=+5kyvkhFPYDq;qeCes2y(DevpJNL3g>6?ZZK*SSyyn1y9L2p+v!A8*Je=Jz*#>lD zw(2XlJ6Bh&F+7nRpd5RD&e1hHISgw4a7|ux&dNvU&;PEapJu!_%MZA+GyAHh*2@t4QzGXR=g7rboV#;Vf7+g1{v{gS@9MX|o9?mk z&acSUOFPd#*L~G)wqVks?qaq%P60np?Kx)YX@BXyg?MxLh2(&`?e}?h?kY=syrtW1 z%eRdQ6@P0E)C9j)w#ed){k`G8PiD;O4#OR8%+EOjW4*)Q83gjy)F0h-H)v5n*yrC@ zPqklf-WB@k^pl%*#Y}BQJr}nA^%LIR`}bz9#kvNKRc=?gXWmkLvwoNQSrxyyo+IH? zPwB?*zZ&$_X#Jk6=}~)D%q#GjwbO5%&dk#mYv0_^l6Btwc){sOntOFF-Df?wec3Df zmD(#gTb1A6+I94dg(BCPY>nfdCYjsLb8aZPTK0LjYV#L;k!`%2e%?MXJ8QC;v~}&) zJH^hHvfP=zA{>1|+{rs#4?jA#@$mb?zE0oU;+=}gH5ZF}vsKb~i&OUU9G$rMc<K>+T$E<@{V~j)I&|ccv%JMQ z&Zha>n(iO(`d;06lReXXru+=`id{;-GFrLLF+S7DO4_@y$+cbm^C7J>x_!m$zkY}0 ztt^z;8qk@>P#@CzrTkBP`{9R>Wm^)9B6#DJT@Jqa@{+mVRpNJ_4EK`yZWgz{Zl>Hb zJ32vETrW!TXcUV%@MoR$DX&>3D}8231<6JpE-)!5N;xYMkw4Wm*lM!gaqiuhyK)p5;t z!|(k2sxK&2y>-7*?fFUC?oNyU%<8RvvXx(5@~^_$i*HMPKN#^Nkd_9speAw>>Ao zX?;4ZBx9d z=c~WoF79|v^#ieMMZXgEU)h)?_^3*#*Z1}}@9*cAfwp^i&XciIFIuBgR_C><@51>l z`R(f-u3ss-{!H?>*kvx~J}>i|cKD&i|Al-4dIiz`Y|p(E%RR+_ z{;COw`igu0yF9kIdqZo{LYev+vHhnqoIH|G1m_rk)-&^nsqH?MtM&dv<70c(3E{5q zGym4>-uwP>`h7K(J9QPg?<*I-Wd@(2=|9JUV}@}@kcz3=*1HkgT7opLY2j;o)ss!*py{OPjHb_1pKWa)KsrOqxmZIhx+1=V;J#i00 z6uqY9auoBIw%&NwtMjNT=*OoE*C%@v_||T{?y~dyvQI(R<}Wf0d-KO7`iPaiYN-2* z=R8%uOZOg*4fbUBI`VYWRO^&?kAAFFQarNdeSw9{e@nBZ7wMwYm=#>!M-=FMlr(kP zv!UyDU0J)=iil{r(jCT*d%VARbf$mY^=|L_$M%&j&m~29YWJS8j(=tQVqMXCFI`cY zq>Wc@6spKRnq&B7Qr(5>=g$8p8|j3s719s!TDw{(yC_*pNI0=2aR!G)`jcPpAD%pF zRkFhIS?sFzIELiAdiGrA{tw=4tT?{*E_*hmm6(4Qas-1J|7U!)J(Nu}Ob>(Bu&6@n< z>zdU}Cr{UU`su`!$k#r+ZJ?X9ItouOJvFtm`RxPF0}=D={nLKty>Qwr_4~)i$;%R~ z*=iodbTBOl^Is7w_}8fVW7=e)oEJAl)qE$n{+(#F#__Aes?`w(KKP$nzt8^M)HjjF zN0zF0i}Jkc4hvXk(4fCH+Dp=|Zs$toPoH0;25pV8o9v|_w1xTp&0UWh-rOs9*(bXx zfKT31FkE?Y(ak+ZMVGuR*F5*ioxDGsJuAVr=~hVemi5mvql3LOZd5cqOm3d#)v9+o z=~k!c5AJC!JpI+*cx7#Y+FsBt%t{~Ly*@qb z{f+krKX7WN9Gd_7$<8uU)u~!Cx05{Iw>76cy)}2)Ja*0B|7L88;(B&kCjG|Nst=J8 zwkx8yHu%iid#&ewl;gRh1-DndwCtU^@0iPD!PJcIYtAo|EJOeMpExq}^_h?TGj<$W zqH{)2@zAlR%g@#?jZU5QuK#`B-8u)c)pijQ^4q?h*$BGynVGGG=W9IQ9DUPuTrSrW zmn`EiTye0%Ht+VcX;qTl#^X5;x4#b8UGjTQ{+GFrRgTVD z>iD(EsN#%KBn}-ZS3wtZDn;7zb zyq|@gX9LfwW-h<9pnzM;g}*cu@|_VrBY5!hk-J)D^A>zNBP9AISwUXILUaAMy*->t zQ>|8A2|Rd{_u%K2z1*drkL+Ylo+Be?@keLR^D4niyT*vuO9j_j=y})$GG3DXWcRUi zhiu=I{$j+{(TlQm|JY?N^%Qn9x%g?T_1CWjm9Ng)pE2WEEwOxE{*%?_AAiJ7^$nS< zyXAa#m}Yww;@;@z(0ij*&rRT2@;EDE^9Gw+l}om~H3<>Z`8u_EO@vjyNq$63TuuI- zE!CAfB6Vw>Cr?U?Ho;hhsP*8K==y z8rDi_hN^rlwdv4PEIJnLuMw7)8|Jm_TqNik<&>UR4a_YWGbRd$pL$!h#=T$8+;4Bj zgD=XyQeSP})hEt4bM@PcF9E)f4=^v1FG$o( zW&8Xm{`oe|!ixWH)zmNl@}}*%P`syRxm8hW=YdzhkDlH>JH%7u%=WEr23=7dVY^;_ zbWBtITmAQ+$$Im=yV4tL%ih`L^jx(F$-DOde7V4))`S!C^{1`w-nTu^*LmB_<+y{1 zL7T9lBd^*b>7wUnG>-ngXg1BGDj?*xPVTFaU*_3OFRZpL<=)79Sl@J!T=iS?mzSz1 zh3HHUU!l%&W#uB?I*EM|w_f~EPI@U>EAM@F&YYV@C%F5sOlnk~ek#}hpVIm-vn0-M zxV!DLfN`AR9OLji%Xd97{c!v9k%-)bg>Ee8zdMV29)Fjd@_5@{&P7UvZaFtLh5tV` zZ4qydw9UKxX0Lf>4cpA8POjN$d{TJT=kk?t{@<@0d05^tr{eeK%u8)qAQ zHJ>M+RGS*HRQt08dlzfF*N%+E?$-a)p8fke`@6?^{bjTN$=EX+hovlf$&es2>#lqD>3qEW=jLnAR&A&AlOL9(d|RZOcJ9}c-vOZPtuXkuGfzNM?Ab)sz^|7&Cao4%F*BN$ zE&qNlMS^M1Xm@p-4L)aO09$F^MB+Wq^>qPa`_O5dHo z=$U#T-#g`O+udUyOSW0WuTvNA>a(a3Ib9og=KIuz8WYWz&RG+3?Z4hkqvUmVg7fTm z`RzRkyBOL)TknqYrov|t&ANTcSq&A5TkQnp41!uk?=DQRFJF0KQU1yex9&GRZhXO{ z)EBmDgUpI9u0Utr(42#+=U33ofo@c8%oL9AYL6`b5vD+?y9n3j< zrBnT9%hR7Kgq+xwu38-W=q|!|znATA)#mr99vz3jg@%hJa%%9M3sAO>&|lo-x5Ve= zvrdTvGf(_++#<_{GdlL^bG!M>SxTa%f8N?xgv@(q=636T zY^0a?>B4jU?)qm`4RYQT&9tbVTk`%!K-94n<`Zu{aJp{$C4JsD-r_IW@{?{n`P1@Q z#sy@oq{Pmz}XbXSe)t;Sx(<&Y4?maeSh( zM9D!*&U2O>W=k^;)Ca9U1v;7&vLep!DdYWz7NRjnF5YZ3sa~>o*W#yBIhDGUa+OVQ z80Y^@%nA!UurG7(BE#h+HrFdYv_70<6w39oAU{+yOySb5Ge0h{$!_J{HkUp30cgwA ztl&}^%X9Xi#g7cnEs9tk%eeO?%mFQM14V)+=*H-8JJ@U5A&c9NuLK>~36h_PP4&S( z<#P5Xq^@=gx@w7S5njv!(1p+`{ij_)T^P`!J&RD#syy)R(2U^Kcvm~+{l0zPUufZy z=Uch{Pr)PZ|JLn?mkaZ`7ah53fqgL`fwMZ53~JxGf$qfpS1vA=ylmaH>vnTgI(@Hf ztbMMy^W(+Ff91>j-?!^e`aNG>&D_Sw;oq<7+5dx&?>sQC*8Pk{=I1B+m%dKc{O3Pe zU0HqI1nYTnIpVK=3nz{Bi|A|vycQ0{kJ^g3C zN?&F7_7ltP&rQ9zK1Mn?>kZlEsE1tg%lO!0mQi~1o-Y}>J5TJt`{~&6 z;FM#3djFN%b%~!+vz?clA>$5NZnx*;{-<9)Wjw#XBzE@dC#N1+{+<6L0^6#p8Q1ok z+T8u+GgVc4+v$Uck1x59I{nn&?I9B$v2OmgT}^+VuN-s`8Y zn;3I5dA4$&oUNkm@3RJPcW1v({JE-{`{X3cx%JtP4rqSxgxykoviX78k4@3sC#zPj z=Y6JsSL<)P-W1c<<=$;PnM(?L4;4j!zEl+WVTq6nc}Ekn!43uOye#;v&Gt9n>BZ$C zpX!UAeT?&0dU;}-Ec?^V^Pj!iR{vzlx8I>lKYQ$sUO&lO&o6nKyVA6unlj5*DKEUS z_kG8ge`V8jV)pr7TIQ#D{hF@Q+S${-<%|CPBmZ*s^IdtL<4)FPR#pD`_sTFfzfaa$ zGoELTx^Sp|zpTCHR;@U_{`;Xf_g_8URl57hOY{E|%&hiBnd?6Ne?^cNwxHFc0lupB zVHRjXu4$jlNzw4fCkhXK`c1(#yAoG-eV?i2n-6pO zW|PkEHkx*F4^F`pls=% zu-Mjkf0@b!FBMl2|IhQN%{w_By z$aS;l_dedIcc0Hbaqe#WlK1|f|3rgV*mYfAsJ!sUv+MhxoVfV-Q|r0S`L>rm+InLZ zH~+hpvdvIz*Oz%Jy{p70?aPl*pDVX&<>$aJM|nRy)#rZl-qiZ()^DXxFJGVKb@&zQ z-{_hL1+T3W)`^^$e)E4Pq%4ON>C4+dXDxC>?Co2)+Vyb5!=4x2{lCsnn|^P;0{yGZo^iM{9fr`EFf&HBzgE%)+&>li*6tF(L3u$yn=PWEic2Q*T@SQ7SK$(Xr==e{x^x(*tkiCBM^yQ@j7k*Uhfo6m|d8=M_tf=GWCN zuj_w&Od;E_F*0=mz_Jpmb)V%rjt={LmTuY0*&*ey}1Rpb*~`3*YmeZF(SVyEkW z{#^-~0c#g@rg_X%+Sh6v^n1yreMdfYCE9r}D=Dg7{OFcAduTr2%=eqB_L6?k-DSD| zVt?mWNW&Y4$z_jrEar{3UPat6%L{bl}U=yXW~PzHd8rKTpy;xmV;;*_rv~4?;SYvH#|my=u5u=gGeZ)9+88 z^3_wvXIym=KN#`0{gZ0(=~CV<&ueF1`h1De;f{Rq z+%P!&WO8}vw_f(Yd6~9(`WAb=#7@o2SiT)OM?Wk89SC<2aUk5L-}WCH7p@Q9J?qm$ z?dvE0q(-N9E??$(f8F(yi?^%$ybj)#!M8Ge>w=nJhh;1)Ud;INFKyYD{mVDS%(2`0 zzy8O8f@?d{5>n6|t$IkM+DYWxXw9BuOOs(^F0nSCwPh`~X z&cB{^Oo6RfEPrCWyT0-2UeDC6b)V&aKJ8CUn+?C2*6%swV7SUN&uxGCnLoex{;b%i zJI$s`%KzWw%t}cJNDuvTb!*oz`;Qp+($@dn&T>Gb^P_I|v;(jHJXZHRweaw9pIdsD zM83+uDxNU)(l`66FFV#m?Z3U}xM#!SC2p+uSCw2kT3WYeU5d~AV=i@jz7*&_=IK7x zmit>Jf1P(q`#ksmirh~(-I>{w+$;Ltp~W{pSNzgz(>0L+QD!=7!fES_Z$J3EK27TJ z%j~^sl8=@BRDKj5NlKRa8+5*TOB#0*&p`{N_3L7fy!jsdcK^&aR|Q--_RE_IatXQuT}G?O_x0@9&I@tJ|{ek3r2wov45PH_Ia54b;W7 z+h?3lJbUbJkiz|?pU#P2?oIsvGOvEd6+beT?bKd$75DtubhD><`SItMeV#bfzs>&A zR@NZYy2MQ5@Z2Is%SMBMu zr>oxAh`kX_=*wGzzI4a2%a5b{tjDT87o|yk44O(arSDzcr?OWm^RL=@&K};=8#bO^ zni{YrP{r0FbjLgcakhB>q|~do?ygdfOzQgZQOE|8hfD9g;<(;+{N0K**L&>GF5+Cb z+&4?S&)fX^8o$7q+cQ>o-bkunU3yRPlH|3V8;gI<4zt>0c}qubp`1+L@{9>a;;|2` z4u6keFnV`>>%X=8KFh5+Uio=z_z(L+3q(KY@s&bQHf9WzKI^>X<;p0t`6(XLy)G^D z)NIv1tu)(E=BUH$w56$&|J{FH-8VT)RL?(PbJK}AoyOO_HdlS*P1k&)baUhH1)h=3 zimO5{{^(m%aAwAK&#bUh`8=P*(>-*3UyB>Nsl4yXxwLv~X52A}eVrC3CmS#Bj9Zj< zBzEm7sb(8C)1HW8vHWlKr;mU5sO{5b_1a+LhyU8sP9^WVy~i9P!ih_Fm-8 zcJGs!{v|Vb_I*k7+TNeC3(8oZoSPSDw8S@6CgW#OoYKx4@An-}lfF}4Tv_>i=dnxA zc3lcuoupu@_`F-uVD2mTnU5@cE+6JTKGXX5(MjRoJNZ&C{(XP#uaM@nX#3RxR@;B> zas7LNEhMO-@LWSMhgST|>lW%S-G50xPx`=B)zk6*+ib<~>v}nJ$}VEt`_HD~{G{6kJF>IVDc)<$I>*(ZOHm zUzvKP<a|BqQnNE4EGRx%lbC!r*S-XGUo#gmSoa;8*%|E#he7Abe?wz|Y z>fO$TbNX7hsBy8luWa3TXHjC|;~NjZTO7YEdC(xGN55)aVXs4rzmChL(*YB-c-n0z z=3ai5YqG0<;(hMoFD!Ex&%Wk6r&#%p>ETx%TU}mxs4RMULjE$Tx5w_>{CNE{TfyD? z|7|?8$8FnNs|=-u6@Sl(8=ooHjq%TF-!bpVq5G@LPyLY0e$qEB_0RkxZb{FVA9>;N zp>$5=-&IDHOM?41ZpuEdxbx*L2U|s@o(_Q|MW%_>zOThPi>GXwk#uU#*H07b9T`7c z@a@U?u=nvU|18Jae`&>=6&@bWPdnvS@3n7zeQbi5GmCy4N>&O1)rgf8-uhaVrI>Pd z%DE*AJ|8knH2A)$cDnxB%b-hN-PW|n%VvhHc>jI*9OfXg!2g{lX$J%Nk5#oqyxd=2 z|L6Xft#28Vb-p_7+WqC9hj!oT+v`lVs@4;8_gETxy-r*DWbym7*~LwJ z+4+9oI^dsnK6}IOuG{ zR~DbWKdw1dWznFx@>TKg6xdo8iG{w{ZhTGPSPr}Kb;&ud@3S{LL>(sL##c}EX%dG( zYr$BmK3wTsqI_n)#ZgR&)GZ zj5ZZKxwXsniT?gzOQD+n>;t^MUNe$agmzv?jZ8VY>g}>=A`_4CW{Z6L|Gs6;sU4+= zO5%8HH)s;AdPQVm?A=Aj8Vh$RB)wQJ*zJ3^jsN#~qlkwg-|yX8 zv#+F--w(L9WasB!u6kU>9TvG|RZ96~NiuvzZV}77r@x83GHqW{hrD&MMw!Blywsh;2RWt5OJW6ggNoD7kHPx)~z;?LSng?uQ zuaa}Rk*{L?etpS_l8yRJCpM{{h!meyuR7WO(+Qz>)fV%bDxZIT8MLt^Z}Klbb^o71 zJGb&Ov7hGpd0%ba6u$3ayf>dO?6_uUp$-~RX#Jc%@tUu&)nc}u7#;8M{ORfPYXsAe z^s&9X7PjWL=IOAvCdVRW60ZEvnsI*nFFQY?Zel%lr{Y?1>-PU`K`jar?h7ydI_k7` zwVpYj@+(zC^9y^bl9KGJoeyxR+zxgyWqEY|e7Tv`@TEdElw@X4)p>PF{; zJl!wE&M{vizqPn}{`J|C>K#{$vK9qupNKxp3BIoQ@rqOPO!pQBJrp@#m&vwR+(M_I zYy)rNyM^lnZtt1s8spCuFZZiTh;!Y__1|V`e7_eGcj{O0mSbIW=Vx?BJYODsQE-lh ze4X{>D_XzuZYbT{X>D+?gKus8+J;R1Ig_TIel~Sycde#hVOwGE#s@4s`}VaqRa&*q z6XzDziLv^jcdp`DKvvO1iAB$(UwYhs_j>hAc2C*ueK$a}A0p=`A3ABNcJH^^@tMh; zr*yTBT;Jr=D*0J->I?58CV}Alj!PGC{Z_Esw$@8wVM&Tz;KTCBya4bf=C2_;HvJG% zu|DS-;Z``Et26%P>FkgT>yI3`{8oD3bj6vgn(`*f%ux?7Irp$YMgCjPZEg9xm&4^w zeB80+?4J!K*}vB1#0c3>_A{BM_qplMt80e$7#n(?bH39QWbIQX`Pc@^$Tsw zj@UB~cQ}9=T=3(v1pliq=R3dXeeK`no-e;7yyjBd_3Zim>A$vjk#={hT7Y%pksVKi zo}SusuYHoKOBP1<`tFkE+LnBP{amXCL)O=pTcQ{BH;d<+X&!9ri%q;_ z5_v;j^RQG1|B_u@tUUjh{CV~Jam>kirp_@{n<5S_*q70|-eBj^>9=&3^2qPMbA|C| z)<%Ao{cS5@m)Pp_qj;{(^>xdZ1hpnd>%6>MFkwy1?%<$h zdrqv`^gsDjmgWro;yH=eUmZ+O{IVeLDwC0C{w<09Tbt%|Kin32xme1$wzu<`@+pD# z-lZiQ=dAj#p7Q8S>9Zg1J~4?wV$V7jTG%4)Z1p}n@#rdkv19FPZHwO=>D+O>fl=1^ z?{wzp-o2}tE|yBHeCaHcWf0eIedAo{dN0PGpPsWW%g@*yu_3pi*m4K&kGH=0FQ1KhFF$Rhj+3rQ~ATZmXl(#gzFFfD4)OONKP)+e_Q*3aB`WMK>Q z!E4UULCivl)9rF=j@wloDBsVunB5c4Ia#lkVml}6vE^4kSNDRD!1nhCqqR<$mU4No z&rdt{mAlyd_~ET({o8bF(=Sg5)1L32_Il3Nvd?kFbN2g2sirnxy3=;ZMRMv1Rp+ht zGapZ1cPsIj#<}m=uSI%`xfK7fef`mKt7wjGL6C)I`H{l18Osm(7(29TOZ)4c4vh=m z8K%17jiQapoi&R;t>c<{`v!aY-uP7;-aD9Xzwl?(rwv|WqPzQF|Ebr#zrrV^GFtVc zsF-XzbIH=qQ}SB2A^QRzo?~y1|MP0o!-t-8UhTg=yL{onl@^{$*LYo8Wnd-K_rFW{ zxSz-NWwxmgXQ&qaj^6IEdtYwq_i475mOhN$l%D;f>e9iSs9lj}dbgFPM#Vk-uc8Mr(kJTStovY9*c5E}v55Ic#Tjb<<<=h;blGmY^ ze(#R_1lr0r_tlB1s!Xfji|gOd3rY$!xPMLRphlKr)XQbZ*=J7u^8V}Z%X{vvFb|q| ztNrRHiPeQG?yUJg|Gk0>_rVGF|E87h+Fw0SR%m-}M_*$`0*`u9la!B(`IB=q1G|1N z&efUtWxNeRg>TOX4_!%%qLp{PJ<1M`*Lmf3V&wEC&JA)wcw%~ z##OIwCYM7?WE%sD#XtYwYd+0*Vkl_)?pMnRQ3kX64D261Q4`hN|MTB<aTCP=IvWH<<0H-BNk5|e%!4++e2^N*8UZGhVD1B zP0xL~y-r(s{fp8+@1D2KIJ{6k>ET3ct&>%Ax$|Cs=zjH-r}E1;uUqwY?NbgvEche7 zCHP>-@zh7bqSHL?E?~0A>R{<&yQs)rtAF;N$FfXiw*ncPr`3|v=7-Mkjt{DIcp4|V zXl`9_qpjBY6<5L(XB{of`!tu!-}wHj3+*l&dBYW*c-rSb|0FvtJ|sfT%OudkYUP6E z_gAwNKs1Gk;3g zJ<*%wt*1Tr`hQQSy2{}BkH4P!_U6L3pr>tJmsZ5u?tH)4I`v~qs!@K+`=4hY?zphS zL;h3pPBCkl=RBvkA6d4^rPJoap@5gS7CJ7v{7gkO?0WfY<50Wmzq@7xKl?L1;m(>c zz4eh>-*oW3toIT*H|vE+xWs?MKXw1}wEwH)K2+*b@{^t1e6Osn`KHaAE2VzZW6qu1 z4@#1szp#s4H~GrSbAK(ZR`UGF?Obzn!)=Rs=fs|${`$n}qF{S}(oX%ZpZknNmaI}f zy7uv%#w~rP&E^`^PiC@842#*}{$#@hr!#63)-E(U`u&nc-43P;MQfhVTPn0tJR;4Z zB``~L4ojIO(@vg_=B1xxG|wE;-M=d`b-}5KslT*btS4&qzgVmuA{TmarD?e8hA+CD z2FLcUE|6J1RXQ|ng+TG!tKv%6Bc?UFNS}3C@lfH&MG#sL%M|Zu5E-?SC<<^6M(C?|t1Hz4?2}>8`b(-d$Q3xc;~P)f#87 zYg&5S%b&jzoW)*jtN3)CUam~YG~wg^C;r})pZ;ol$TarfcOL&Yv3k*Rc%sZq+v;uq zr}Bdi2(nJ9J)pk!_MWBDOC#?tQv3dYW}As&v3Tx8VXGxtQ%@@E{{Md2^6weT71w=@ z3a$ucUfr?e&Zi#=|Cjd_@Zh<=)%HHp^{ul*zb)KWdvWc~&Yq2b{yg+GD*q_9a>e8P z{|6U;D%oy$>EF9kLAxUQitB8u67?Drlc%3Pa`W|)>f>#fjNJBiUSSj8^=_g4=PkK2 z7RUddkfQorea`b0C$*n;Ewc1sxq36<0lWFh1sC_d_I&-VdD7awS63^?96$fuF!}jq zZrSG+R{sn778{?xu2ud!?o_juMY@g(gW4 zYxPrmyqNEwX4$jcsaBBH|MZJYk;P7R**ZqDNuJx(!t=bYX}?D^}m zMPlXa3yXgkp8Ke1)jQ)Kr`FaV3T&V?DZ2{$78{=qUK&5)&Cksziv(Z5d%T36X7JJpeBZ;S zCb4RW%1A#CmbQ=)XX?4SG1z(bx}YU{PApL=nPWNU@ryr)E&I;dxRfSbY46jrNYhba z_!Rm~c%fG84wdu9p{rJ1IAu}sFJ$AEz@G=dUs@u%`|5Wi#w#wnoLjBD8#ccP6+Khs z;uQF_a3h!D?LT}c{W|l!OwJXSxGlUTf6npOE$giNAq(|Amr2`goO0s0))(tvV*6Jm zSHMHfd$*1MpZ$A(GxRTdb%^1Q@z=KyUEzv+S=OKdbf4@xt$tOyAAgJ zcs-eey~|a3dh)dcl`~2zc`l`N?o!`vI@vto-iD(yN>Y3H7%Ypw?oh9qF4NNY`1Yc> z^p~k;pWSY=e{gJR^pA%-LIX_Gcw_=&jvf#^TFE0LC@3g+adOgw7f%l#xVSl8-s08L zS+$i0tN+X?Ff9lFF8vSEyc%=tz(r%#y-!b-P1@Hdr(O^ezg1?{$+GgVvF8s6T3T&{#|IzIWfd*y;1RcD0vdh;G~7rwRd zox17SjcjavFG3$lSUfUUP=bK2iS0k*f6V-^du>C?f0ya{Z%^5@q%1z7vN~(hRu#v^ z(W^W+JS@Gs<~uYUO`;m8E-oFEq)y@u*y^KW@9$nyKdf>u%mRtamssh_* z-XHz8|NN1D(y%xu&dfsg3b9+y{Ztv*m=r|!Nv}EIr|DP;Y z&k~)WxiCuUv6_my|1odwiGp1z9TAR-Cx1<-o2cV{_PjWnJG@5^DQ2K71(g* zkG+@a&TrAb4ov(vbvq^S886J;anBshgs9WL%_J!^Pw>A5*vCoeBMF!k}I=NZCMLR{x3 z$5lyo#JTdw2p%n5+MRajiePWx@<}Cz(p$Gni8z_{PkDCXw6B%!vl87#7UVg zF_-T1&ZB?$7n& zS5;nT%+6vBnXDsTWw<49?T(-EO!b${LzS;SDYAR%ti9^;!Tylwm9xHti+t5gmX^Qz zY?kjQu_s$LnC4iE`nu>Z%6cE_bnekjgMD}PZ+tl(_GZp*@%yHK1wDh+93RW^F0$cZ zvFAFrFw{M8UF4V4S30`C%$y=JH1=g1@$D9Wb9`64Sz^?6NsW-b3|^*_Vxks>^E11D z3HqIKp=gec{?&E7@4rWNtiHZf%E+MZSe(zVYU}BiiOKyIp=dOIS*(?fvq% zNBH-@cgl#Ep_lyqS$eTy{#DNs>3vf3YqrWP*S|5(+3R?%S&3@Y|9r-MzcM$^y0;^0 zq4Ry!9gk9Nw!3bMxc7D=!}c2H*tmH&qPD!-qIdP$r^}WTy*9djpCersd+5Q(*@xH5 z#B6)WXRfvs*~=aN?!~5pps4&`hm|hbGdznZ|q)lZrdyV@bEwH4T;}Xi*vrbcK$?3)r!5&y-|BaDrUdvPB}e6LBYLymTa@T-F^ARPmQIw^se3u z)7_g@6uXb5pKawfr>!&Azcyp?|8#cW?kvmD$;Ukoco^)|TKb5qTiniJb17Dwe?Rr&0*ZU2`>)mrh?FkP+JA>1LpO+M=^ z)|J3HcH@;L8a$anP@SsBV@{!2bO{=A&0%Je9A@R{2# zg@H{9iKyJIDP<2vW?1>wg} zX{=c`^}z%d2{FH{*7?icy9ESrRF$k*vV8JyE53-P^S7tD@73D5vF5Sl8>=_13*)ae z{NL+tb>KpTwM4!-u=~-i{e}p7WeL1 zcYXD9$HlXLe*8WudB*lvEX#T`dU!G?TgI~6p3P0tJs+^u=1^Vbo4S=nr-Q#-<3K4T*LQB`7iNTFUx%XbHdJ1 zMEvdT?dSKTJ}_6PS{kY|QS{^_6^BPIc_$|8^6uI5e%5!1x_{OB>tepU_w)BIn7CK! z>5}O11p)KEd@zw$zo{X4dG}(cP92X43U*P~^j92bwc~I*Xp>p^?vgAEYx}D+)4Q+# zxw1i@>&Z6Owv@_AYG%{aw@1lk?>j%~Z}BOsf~S^Gv%2MEwGyvwdiLD3)ufD{8uio z;OiCr!GVc$l4bGn_l#W6Jli)<&wKpkXtc*{Els|8JJz+;2A5V`wl&5ar{U+e#? zZ_l{Dq~Y*o!OK=1UdKvK23X`*v9Px>4W_D{n-*OM9d&D|u+ z*m!BLKB(#d6VA-PA#r1=Rg|et)5iKYmu5N{dd^hh ztobWH!`W?t%P&{2xkj9yo_ch9&#SYjxFh}ET)QnfJ@3((rMCr*`W9W@;AW>Y?~d2@ zdGcW<$8UMGO-?yrquVKT>)PBM{|%A?Qr-vZ$F}K*Z@cm%{iR{?8b>e2sMEiWpHO=i zp&am}{=H(;*`L2w-riIfBY64K37hG;R?TXqOHSWD@$Sx4ts89nck@p?cJ$4Hiij{_$9KyLqioJvTun`deJs<67d+GnsZ+r4tUl_G)nk%f(U8osh?b)*{+*hlzI17=z&RJmlyszq+7hEIH+yy_v2GPK5sg_ zOJ4cpiI>;*HSuY2XnIe-s=SoX#G~P`^4#i*le^VJHz(<-_&jJU|G%9fzHU2T*pC;N z7ixbD{J(U^qPYM3``?CapPu-5o%gf7fs^g3S4}zB_n$YuH-C9f@aft2_OMIXC-Y~m zey+VHu6auB>pyvsJ-?I1-yIKF<-6+A*LM+;+1ukCX3yg;jrZK7Cv*C$WwNgS_xzrx zni<<|k}mGLoDsF$;m58rm6@?~+4K&V2XB9T+3e{AyWYTa?>0+Z>vyjzzp{1~`+WZB zM*d&A2OmzpSG9*_{W5)vrteo@|EM@%l=9J|ao5zM*S{e-7(_l=Rgu_LIa|ZeqImA^ zH>V#RJe;uQ-9ComWBWT>IOXj7YF{1F?fH{xUH5lcVa0z>P|#jHIbTz5e|QkfCVz!} zzx+$SNU|f6G?#P-6_s=LQCC^vr>i+ijcKSUdg94YrzSZ_0 zW|#fDzQAp7i(7eNOKYrD3z3|3x`}8l1OCH=PZCT-b za|37enT`K-Bh{3Yl&Urw7P$0DSS<38uuyX6k(tQM)^|dX*uu)w8IuKvOC+|}FW z96oc@{p(wqnZXY?Z+lvD-yh`c^TN#TPdXZvyILBRi;f%+v`l!=Ap_DhHTglu{f3Sg zJ6FZq>ZkSOExY|eZmWa|EUPFfRW%ws289(2zYskdR4Vd(;}Q-~8DXnAZI!aSPN@6D z4I#3YNh__24g{4x=~((oV_nipD}*UZN=03b%EYw>b4b$6f!TWyZkmu4CFhXZMEpLi^TPOUVY69aW#X>+$t-^^f+&FR0YNxLQ4K zM$$dCF5!9U>c_14V-7cMU2d?dT(g2=gyl?FIE!0*M=Ul&XTlwcQ1yIYQb#j#A zyvK9P*m`fbTwndn?dvDYGlu`y-aOs^cv-%JU2gC-na}rs?D!v4^V3uG$$3rt{(0-= z|KDkjZC|gr?^d3%n|XiP?}^3E$MW6Ic3B4QcJeFk`K46-UD3_wUfbz;bsBL7%D>9j zW!)35{?6Qd;qB{CjvA3BnVG>!73XhFyw}|S_`t^3Gk#o;yTe=2^6V?uqq}OZXRDQ7 z{X3ggQn6XZOLW?0owmaIH*V+FXkL7@)#;f;SKsE^Cy_tD-f#ApWWjjLOgpWwvS!^o z<#iQNuOBFv?s+48_~WO{b<9;;pPUzY-?=Yb?93y!e^aVH&iTX>ct2n6{p8?poJack zw)Vx9ExZ+VRp`~i6?a3|c4fJL4R8^1xV12mUjEmvbz6V@ zSnTvO3)Qc$2(x=~cH%LaAo(8)6KDLmZdY?5pEIh~kpJ(ooCB?^x4r)VFQ!1k*ZRNo zy%ek8_up!7pX2;nU;Odhyw4v`zhUO+ecJ!a$klkE+s`-80`6@7zCwIg?PjU`)urmM zAAYZF|7x}MOhie@d;3lA%-(m_tbKN}czeO4JG?&fS4E8Xm+NMz+)lsHKl_W-^vdID zQ`g@w6qM(WStfrwJomNs_1xv+DL<>~c8lrmI(PB+k;?+Bt{vTC$$oL$ccm>acM2re z-EKX=e(>4ei~8p$M{WLUW0daESAT3E||I3ZEdsm?sqS_w|}kE{OxgFQG3Jd3#Omv z{hwFUws*PR;XV1Te|T0$SxIY6nGl@gf9`7SlgO^O&zE)N$(n>8pAlUyH^bS*e?Cj! zjkq~(=Z~weI=NlrrAGOe2p5Dlnyd#XQ+I(UO#K9p_2NSYAN%@Ch?{> zA2o;kjxe=!Rln({9V%S6s&-{m=~X%F443nF?yr&!%3TIZv)#Efvp#VbZpm7=XSMi> zY2l{fO>VzKe@AZ3|0*DOl=b$%o2}jL>mFQwDZls{`_+J#Z$JGgDl})gv$KC`@|D2* zt;|Q~wX#ppT<<=`QF-Ho+e@>;K3+)oG!My$6#HtovbAsWtw%qW1zYThak}ZUUXHEr z#ng>iuPvu&&Eb^1ylZxH(zA*8WJA5ujoXv*KmIb#2(pf!v%}-=bRtdO9yI zVQJ9HH76cTJR}n||M|j1j|XD%%)3JlPsx{hx!{tyeSU92(}v8uOf!C8p1td@(VD=D zg2#uZT3cyc`2F~l#Q#v{H@0s&O>aL@U-tS**Vjj^Mzfp?`&rcN@}uQ0yO|v8n76g? z#}@OjT+8%(+$mo@`qt&1TJ?WhX`X-6GPx`{PN5z9oYg`uUt2dt_`O+g?6XD|*1B06 z*<&u|=z zIDPqQV&%MRmTK>Bf1hYN`SVvfS$*4ojX(a@x^c#@^)ZKKj4S2qzh;*H`Ij49b8%Y}pGy3vDZwrWroWO%lyzPb zsxi@3_W0&qQ?{Bu+dfw#R%P-%ce|S1B5wY-IsaF$W8FN@^e2z@O1r~0mt6nwXiu`Y z<$C6q&Udu7|MSkDo7OTbEfSwOMPT#3i=km_CubF1iu3yvJ%8(@hr*Y`*Vv!^KWXNd z=B%Beuh-A|dbVI?(I(tR?3)ig?Ti2|*dd->b=U3gY zb}FmSh;CYMVxH%w?P7W}e)sBcKP<1heA)9hx=0{%^Ag92QLJYT9d6}h25c!yd=pvX zPsT1|bLKH=c&W42#pH^;@t-e31!=}c7FnLX~c zow8eG7T4YFdz~d!nK$$K!pZlZ?LF}4s`|yi-sw49k?-95pR8W*xXz*ed3R;R-miPk zt;kqCt@`IN<6n01|Jfyeo-V5m{jVOcd;DB;_}2>e?(1_8N^kx2>Oh~Wi3-o-y8BBv zH~*^JFZb`e+^p|6PITs<6#3!ko1V(x8(-qGpY0^ujil*6l^DDIqo!YDTx_B_c|qk~ zrX7W^_eHrypS|(p<0HjDCG)#NYFl(qZ~Ge_xM>1=*VFS2JufFc-1=(g)jjKHe3yFd zFzxb9s~fd9g7weu&f068w%ui`uiUDyw|D)n`Eh4kXx4P$?Ll>(aZl%n9ycucGws8A zjsH59ZTV`srtLk){pS`3yx0D;XL0@1CTX+Xd{wVQTf{YO{rBC zt7_vm{gSigI_i7>x5t`oi7yY$Eb%IT8WeeTla%_m);V+5M;NWH<2`rc_nPY~wpO_3 zHlJ$_e{g{_f3Kga@R8`Z#$wsCJEXTWPp}VHx z7A>bJnLFvF!ugL+%U^#CohE?);Wj0O7662uRS(@kN=uC3(K8}63 z^;KoTuSdGmn<`sBEeZae#`QJMqvgx13Weihme062%c71?IM9C3VnyF#)6>Ue^nB-i zzc%;xiWsZa_uNm3o?XLy{hs;znZYi)yJ}rLUi#nM{=`E0IMeITkK{}DZ2bRbV(J8+ z)03a)&rIg|B&qiPyjt1(M5Epu{Yt-+W?R(HtH1Zx^wpdh+;{x_j6VOsiI3aX+jmwQ)Ng;-a`^eOj#m|ucdaJ$IPdhoC%o5f?Zx+JEwy_cHqF@mipAU z?}FJ%sYQZ<6N|s?pYevfmo&iS9x6(SOUTkFdA{3)nA&pIVnsPuuyse5;K*NWfd z^47S0Ot(>bli0a6(+*yiasHB(_@E<>^Y-_6*HQ0vfyR)$$N_*1kBl4Aw9XxU;ggO`q*`6-rru?#W&~9 z2JSYFotNt03;JJKKkd9svPIc3_wRv*kAFY&SYc-np5Hm+p|ZN=(8MN~0=A1jFf$ZMDYWFKTJ@E0ZOyBmMg(ho;Mi9$d2j zo7*k5*JUvdyPv6kIDSG+;#cbzj8~A&6^2%MlyY(K4^KkagzE0*WqByjjxe&FjJ0{{LkWM!+5ie+a@nLR~&o~6@=%eT}P zx$Tsxvh_0faPP0e8|$iAfBiL2Cl=LT`!pr|bn@EfwZGRToa+*P@i#E_kL@8n%K-ETh@EUH{z*kl(z zZHmO@^>VZJh6&jJ*`{q{prn3FeC1=8)oqvNzQ4S&^u6dCyBc2m+N%uByTT4LZsm)) zx+ahDZ&XoA*}T77+|Pz@s;QH@;_!X4>UmX_6^1pB#Qx5kW44G>ZRO+4Wyd*M=I$?H zuiUh}aAnJ)2|3oBF*P;`nnAnN`RwCv-CoeAE|lXpTkRQ-R^>gntz0kuT13ctFY%en zl3AS6X(_Fphc#|3f;OrWbzv|PP>!KyS_|RzJJU< z)YtCjz98RyVJDX7JUK1;!d2mS=h_WBdwV9oP1DYLH;0Ai>FtRr`(53erf#zL_@MFW zX@ScZrQPM$4(W`R|9ndP->$2RZh!c1?hEHL)naemyS``!EZFqcGF|__n1qye{OWIw|n)Z>s$1`MvqnVwtMXBXk4@6#MNt|r=MO3f3{oQyTd%| z`E_;EwZa#i*8QvB?rB)Nb#Ka?lyfs;()CZCJY1&h_2SLkJ2!(~7uEjmKfN{5?6ldu ztE#V_ysE9L8B? zX*SzxKI%x^*t&}^Zi?Qk#`WsCS0kk#JzShnYZU0`_RgY$*Hc*i%1xGUPfmTh)~md( zd4|h&-&NC2%E?*mTE6Y&$Ia#e87Rb|M5q5ri^4lwNjsu6#f0vgwMK$fpah58Uc={VeV1kv;pwy8PV9T&g|Keb(=LB6@PV zW4fzHSo0hG_2I_*WUQj+@xPgte)n7VE}x`%Z&rRSKJ_^=(xIBKdeKI!x)WtBXfJ{PpAtR2K-`wNr{rT_1ja z^>R-uItYR)MBGzU0t|rG5!)@N#JPAL&f7MCzQq8&Q^Opq8dl!CH<$Lv< ztRUX#U*?niRV+m#JWa26J-YN+>9)04e7@4e1A)O;ldLwX9(2*HSHCP|X|?gC2;W*O zsf8zxZv4^|Fk8uNf3wWn*b;`+*;9h{Z(L*OV!m?RGSxi%{)>2 zUBx$R_o_%gF?*h_h$wX}p&2W}P0i26?`*z)wcb5Q&(|x-^Q2Do+o)*{i(EJ_6hD!Q zt;;!W7rk=piywDu8@8kcI4$v==`wx6X7$r5>LqXQelcCQ=f%&rQn5-NUShJ=#m@5! zwtKj>O!=J^w7kLcm|81~;FQC7=$y{omeMB#vv zqqJtcs=7?HsZNv4&7kD}hL2eileXTIv*EesxVtfSwc>}w34D8QOnxxqu~mm>$!!;- zz9sppnqSq_PpWDp%EwHeR5|IW+D*=--M6gLrVB6lBxP*%#WhKP>#a61&TDr*_D8T? zP~Q7F`=JVh()vKFjnkh`U;SskSU=Ck(?Sy`pZi(7^zgpLaaPO@O*KoorC&Q59bPi$ z<_Ed0hV_S{Gh(#m*?MnxJeV+}de8K~Vb|tvUZ1ncS1&H~_LIK5W}b;T!Y36hN*}7# z{olr!)}OtS*+}?|QSP-*JsYCuHD*;dUD+laH0|7B&;RK{JyV3@GlOp#g3Oy1c0?)>n0%d$H2`!j{kbcdZRNF5Ue_ddjVLwiB$T zzTNS0$)y>Nu8P0c-;Yh6KecqaUg@R}3>y}U&OYC!zj_LPvC8kWE8@2={O&$=!qL`* z^{Spq<|!e^Z&ZaAJ>C*EU8rP3y3B88CDx5kW?WsHRsK*`IFbkc{6=gK513gE#JN_^HM?U&44_KG^GJ{{_Zjqu^?L>V>O4;_Or3qsg7?S?&i{FD zPrVLGcpE+KLh3uGx91ig?@kh2I^}lmZsFAJPoHeK+iCLf*^^TpUos~tWln0DVX;H8 zPVQE~be&&sZy(!rW|pg$<;kfpgV^-8v6Zb{$83}Q|AuHClbxE;+?3iUCnvJK-;+3n zx2x;Rb`^D%)|9(3A2-cCu=iD|dC<1r&7}gu>9>#En&Y-?YM@l^@5a>+RWIrUeS350 zs`ZJfx?A-s(>))~^RU0BKFiLy=KZZpE1$CLnX+(`x?|gn6C&d4tp44ptC{2~8eKFg z+Nfch{0^bGWqux#duuE&zp`srIlQ25>mDm+zbK!S{ZmVy|2P_OqDnW|#JEg$Q?79K z%JXp_T`RZpy!=u(-ywaW$4vK!IhA{Aa!xDX^t$JF>3r(k6P>TB%StD|zuUjBZIkWI z`>MPB?(=b7?VtK{?%tB<_tux@Phe3jliSm_Urhe!i1Uq(QHBH8`<099ky<=R7&OXoOXWE{NAS%gC<-{bY_YW3YaLg zcvGLs1l{8^l$YnKUWet0r9BH}n%9~={+;%4sqN~iC)f2GF28E0_L_-zs-rsd)L@@5H*yROz<$%)77Gnv1TH6+z!CHu5jlXecRl&0K4+`J#RA(=}Pw%v*(4MNW@8sm~&*e|8s(ZhKZ(fX6TO zP5L)-zDB4YT>fIWVgDQNt50U%t*~X$G5+5l^w#<6s+DT0r{7GU{VzI5=Jw5R6aG5v z%XF=^x^ZLQrukPdI|ojd<9jN-@r}Pw!j!ORQ^lDcMl!+iUM^qmPyE;0W7nqi&u(YY z7b&A>CmUQmbH%?~S#9`ZAf)2eu&8vgKL32HVl5T_*-YVm?rXXPAPcq9yylS|7! zmnnRc`+7ySXr7p5q*>mtyx422E?Y1CdUDUt)qbJEHe}KkRQ3tu^ILPj0pTYr9&eckGEj+l*HP+_`4&9r9#V*30!z z-mAKQ)rNF`*SgFsi^2lgN%Psjw)U++HRiCncL^?+T`%~ z-;JfljN3(t~2v-UofKL0YP`qIwdC%Mf7m(BQSwRm&UX-k>#^NO$CHwjEzW53$lJW|CY zvD8CeChJb0(z^#nm3z*ptK66|@y@pMQj>x**!$wIKi#`TWVY+CRhHE^Ir>i6n7!NA zq4J7*Hj8A-oGI5nhyGuxx3M%jM1Q(-ezxUIy~j(o%$~Ajv&&ZBPph8aDLxULFMYTF z;y&$N_hldERH_J{h?-|LwK(zOu3(Gx@23C#^5f?0hpJDtrkz=}ZT`egwf_AgrxWfj z`nvqfwu!=zBaN0dxbJ!**ra($YwD?0r?+@s>vcUPcpyC}iKSOyODAwHN%JJ*n1V+icsHo4vgFz2tMg{fjK~`Tkw?rt$4>@dxcn>kr=9 zmOVSwa@)JzYqqU^t$IV{w&q5wX`TkL-vm#Z?Ws9?e(8d$lHVO~qKoG2UGYp+#o4=Q zp4iO&EXDt3RC`RX+G79jMEZ?=%l}BKeO@1|Y5uS0*$yYV}$;hnSpw0NV?)T!PZW_ENWsV%>! zC1JkN*;JFa+;8i>Rgv?hWJ5OFo%Ly6(UvKE~Z^SvFXpcsQ9aE7A?QF zR5`3LTf5+B+}k*rAS*w}io*PfNGl3`etvzwa@)a$zG1#!0)5-&$MxAAb+w--+gjhW z+%@AOtMZGVlZ=YDue*Efr0?>xh6mne@3YwUQ00`V?ozw_H+2q{6O2k#UyD00I$}7z zT_4Z-!Y@ISg}0iXdfs!T+}~%(<*)s}^snA@2?~0(_}}RZpKovdWoNllN8Mufb?p`Y z2Wl^_+p|yU&zn@`lW}?GYl9EGbiY2cd*2JgB-48@?d0oqZM)>;Lplm31^fzG8EwjM zC%ubF{!8>C|9Rb;T#Xld-euag<(hiD?&X{2MPIjRSJlTz&a*4O7`S)dws^fmcdl+z znEqw8vijT8A{(bhcI%$(d3kMJ)4S%!UsyE-1Wh&dx23)pl})Mm-CbF6I%iYg(RqvG zUVMBj_4Sr`^2=kJUo4(x>;9wj|CJvP)=t`WWbTwZ+Tk|E75`2B58X7|7``n+toGB6 zgnM5Ezb*b~{OyJIHSXuW%hzvt|0gd}R%CKfxYIP#)luKx9S&bSH|l+#`X%lse(iqD z(;x0$dArnJD~v(es*%5`{;@gzG&L+u^d6O4O7-nim ztuEc2b2#$L-z8oZ%fD-z&%OG2YQl^uD<<9k6z{QeRpb1y!*@j0Ki>N+V6h4?)ifDryKpm!u6-era$WaSIT}b z^t`5{z4q(Xv7d#iY`;ltWUJS=TsHr3Xpo<7oWzH^^Q|{FycVjei4eRvHEf%@`ukM* z_iOHbUc2jT`N}ENSb~?X-=N>N_Q-YN?Jr87{;0WR9&m^yuj+2y&%0K|I$x?LKfaf$ zZ~te(w(TD+pcx#&ajq&rn7e`BK zy0YXa@?3_lqxo8wv_GcrwL-qmwS$i`?95wb^zAoV$3>+k#745`&Jw+RJo~55+`V^p z9B}MYzbr0u@x8ZZpw|4ArP{7~*4{2I=R9wkpZq<&|Bc@&&joJ3W(k^xyw17PGwq9e zN^SSlpC`BfTK`2r;l9Rk3G-MbM#Ymd6DvIw4*asoO#JtL(X15N++g3LXw}oLaXh&p z+Ijz`AGj}bRcfW$eunCmVpq$Vcdp4=nsqj`J4>oNWyjT`jMPx!Pu)>%l}SA>j)uP7 z>vba1M*7(H->kF$-RPQI{Qc4HW%f#$r&KcTEOwm2-uS@%;I93viq0<54^Gd#xLxp& zlk>;e$%QxeCfHy5yNUDiu5%6xU$F+Pn)u|B(B7&?ttTUs7g;j1Ze%=(j*Zy9QUqR;cYfI;mVs zQst6(@0s(V_A9T&nrg;g3vipEQod(?R`J=}Q$v3TZf#n%)92pfb#Y&v`(5>>PWiVY z<+rDUhZk30sP3*s&$L4(FPLa!wySQ!BBi|xyl%R3hDF}Y*9-oAWKBS&3ew`q^G)-& z+oye**V}xWUpeBhpH_sa{H?xB*<8+@&D#A5KHZ!%-k6HLTbaBsAbig4V#fNfGZ+8& zz83lO+0u(?S8f;h3-7k;OTk=X^t9_sv-;kPE7I)lwx8In_H-Ga%br&o6IMXvL&sxu2&$NoD%;M!Z_{*v?8<_qti{2hW8S@*vFl;MBoU*SESZ_2)%OZLx*}tT;8nCxLfXU_-grxj{*Cu;%a`Rd48Vv z|J-rr=?BmMXXJW*zG2_oRWJ7CcFf!QU+J-jS3&L1yHR)By*H_Feso(~qc?r4ic-~8 zo6H9tadtd1fhs&Q6O|#>J^?L?0$bE?|Dm&^qvM4qt~FMcY<)j?JCK11TOTslBY7qA zlBY%CBEKybS@dsx0Wo)DzjDzLyFLw}Z-p*>H;xNhCdj)#>8OZjFWvNOLe zE4;jN&#Jkmd2XKbezRY-3DsV6t9;efu(NTxSN&F$d2PL7q_pkE@j#V*t9V0m_hsE% zl^V2mUsiBP@cRV?m%N?yua>Qz=Cf67)k(9WQtOJ9(|ou3t_qzj=y#&d++%Bf$nJ%+ z-Ym8adA(wma{6iI-&tB$lb))+e*EIkz3vF(O6GI#?E16S_gr~+-s0cik}?saCtmCG zZ%@vA#uwZ2Sla*5zIp|tCqC_3Yqb}7u5a^rGw;NlQvwg98-5<1o^-zH?}x9unxACe z4ct^`xW{&h<)u{rY(LSx7bXO(nYBYsy8eFC>-0Sn6$+i6te+yT``g^DaaEuD(i46; zR;~MgpFMgt`T7K_;w+ONd*oi#M;+gD-5~vhlTN_tpI6)VX@uxLtF%gzcNd&{uTJds z^4w!PZN(o{e%f{Kn*Chq)O*>+%bv2liLE&x)1{IB^UjZ|-wsDM+pln07`~Bl#kaUr zlkndy#^K^5De-?j* z9RJyP|IF{?nwhJNSE)^$Z{(l$y4hCZ$#3RAPJcf-c7^@0Nv-}o?}m2STDxl%XB?if zNS-z9KX3mo-Xp=`zU|ClG38-M<=uOaitY<+aGk(?+c!%IMI)7=c`bD znbI&{zkk-7-L_U8^L;CPwazflZBx|N8Fju#L@XvbTqu0JEEu#(E2{D;c$HSsE`Pbn z!KQ}JrazZ{YtMR{a^!Ks0}UolDNh0SrqWIPA|Yqpx9(l_clE5V=d71UNnY(*p>|M; z^VJD6t#!B9uEtch|66lQ;Odi|i++{f_Sq`B>TB@YDOsmOW-ps%6ZS2=Tc>{x=Y+qf z3M;Rz7F(_RXA)~)*q}7N24Ws1UmMO~TFJ~Wou5mSB+oIy_ z>whgu-`MCeMMW`+H@mU7KJVzw*yk5(!^A^sR?nID>{q1x7tOCz`RZyvy=Gtcb`GC} zMOVhdj-^?#`Of!>b{0H5kji4uQzm6$wfV73UiGQKqsM;V;r(;DUhm$YRhsvtmfU-2 zn8Sa5a@>o^8U;7`KTb1Ynd^W4<<*$HLc&OO!h8+?;~T8)6@CAN{P%qDg8hHy4%s61_~kDp|5-|j zh_&2g^uDN8S#0{waNk=Ef8&BH58d?ly#2=}rP^I#+8-gggVXrEZcSR_;#~f3Ni**I zM?C!4{!8$~6ZJQTn;^;jS0g7zG6d|8Ae>_CRAx3}Y{DMA(!Q#)T2)JkW72^OLRX(iecrd~WTxjyr%4TM^RqVbu!cIne};3Lx)PYW_y;y5RaPi<&_YwnF zBO9^$?K0}y=Usd}m$i>ARCe9+smVFVJ97iq%%cC+b?N;1&{#NVF=9KdcTHAEG-~BJUx_z9BzQzK`o^^Rl;Q|68;T|XTIHgW{{@b}~YKX7j(X=q%CX;WC3Yz9>DYq(D zdHyh2mAP2yrhL(*`&mLclNL;#kQ9D#z8~9~8us$f`=`hWU#mE&Hqqgli>-@)b4rQl zg%8PBRWd|kE3R_!MLJ3;E`9i9%bt|(qetSm_O9}D3k=zxS3c{%Y_nZ&$YdEdPPxcM z(eqqa?X6mvG&_j5>+#xyX9Irq3VF=Y*=T8Iq#3CG^o`5EQ*hZ*NO~ls7Xkg;UjI2E+UM|9yN+ChxCvyeyW8bgLGZzq0hrqRo}RwteWmoaMot zqB%!0Rcfls(d{bN19H>XTU%_hdUeNzQ?K*LyJN36#mzUZyS`_y#g<;%b^S-&ouK#}Fe0fQWe$PC`doQZ81+*%+ zI*6_}|9IQhb6@|xuMecHx=$2Yy=bb-nPK@nx!-T`&hN)Hiq{Gr`~83A@yMn_O&|B( zU%#UAuWZQIDsKCq{{{b9RChClEiPD8b7H>1bW64$_usDn`j{(bZS#W-0>x_<-uwF9 z(9t$rd;a-=!>?uk2rItp40Vid;3BA zD?gIdAK$+BqH*8${m#zs`6|926W<|Q<$mA%^F5}$=f2xob*=wviGj5UtxUV&DFr$|JPS@Up%r~c~#ZER=Mr%uTASeTrAuxv#IXbFV{UyFCy16 zgO-&qdhYparDfWkD~yaUmEEd-PFQ4L6jaxqC3ZaX|MFRXw_H2<=f*=e8R}xbtWljG_pH`ME`IfZV zMx|EKbKf+@>Wgb0-Zo2~$Kx^O$_=jR{P9xFxur8~gO}ah&`s$N>nh@RtZWuq zTDK51Ig@6RMJ^dNKM8pg8J$c}~!4mMnyMKfm9eAnM= z!)@eu@KVqI#LLaG5ry_eiLEcci>~(&Yg?p{B~%+qgU@}yv_fs_ORWAd86%Tn(a@JbyjC~s>i=yxOra6-08j{Jk3G1>+=2mzW46aSF`_p{>aq_uOnU?2J5~q zpYi0s_%}P7HSZ@Uod3msd&8B-=02YGGSPA#+m}uB+;%bgq}0pnspswA%!^~+pYlU2 z{;nkV{0Y&|Y}<~0zy7G7=YDeZw4Fb6T&?$RpW+qbqW^#PyL<^@%L=jA4WM@Vi^@&* zrP|YPc?#;i6h7v?b?K_BA!m2J(OQ=I^vmknW$ml$O#XN0J^TN{!)?+OmC2vVc7|Fn znpJaqnoWy;=;YutLGS$bT|RA@dVEubNOjOJ-!Fl>tyx8ui&$RptqSuteSLi@OJ+-L zS-HwoNRY@ z%O?0_cV$IAd|rHg&(k^cx4-?jq^$q)X9NHDKirM`W0n>#`1-;8VdW>QUE(jAzg{+5 zT(j9I<3nZa8QE$^2I{JVo`Y1-6f$9<@7Zt9r5ou#QFJQP{+l>#~a<3 zKaedFj$iU-!Fz8}d)7GbsM!18cbsF7Z!3S{yJz~InR?pS4O>G(w#}@rx3mjCKi#Y@ zYe}JZXZa-4L$}y(pQ+}JmVe_|uqWY)htg4*nCmBESM@8~c%M|i@*`@$VS)NB)%?yQ zAB7giUCKH!*dr{p1eff3zy=)7pFPrkeiWS7%-N ze%9iuQ|RPNl|oM@1eFB|`8UaYsYt2q+Oz8K;#n+ZOX78Q>dwp%IwE{+oB8?I$7iJo ztqt+5yXb1pzw)!<=}Z2moMB#X+xLfTe&rIOzI$FtrN$s47+G7R@?WFH=--6^R!}jv|DkH@2QGyvyQHOy!^uF&FTkN+^9n2 z^S@FC9xJVWKGUhaxnz=H*A&gk2OM*jm0pdwy5{nMpkI1s`%9K2OihtIsn5LAWZnL( z^{dssN}^0t+ZD^LaNC%kTfI}|Vx9EKr&Eh&U0)TO_&2HhNA_uj$2t37%!yt;>krp7 zp^A$WA3Q9&`Xqdg&g3`D^H-}ex+s2iO0k?@Qh8#+Ddp53ZTsJs-`|nAsqL=N4#mo- z^5m%C1@T9UrM|yy3r?M~A@531<&AgS>*wstl`{!CX2Ab&o|WXMY3F;l-0Ugl*k3-o z^GW8Ni&+ueIX|=6)A-{SoPPgx&i9#oUcMQ>we@6oEn2?xdGhr;dw10&oGn{7wUrw( z3EuOsH|g`jhf12k>NovGW6#tnRYe*WxIA%5+s?B?u1Gnk-tn7CfPj$LNA+l~ISk0*Z>fBNQnZ_nm!J6Up6B$Qnr zyj?!^ZGF(z8NcRE`nPV0O;VPvi0#dE74s*PvVztHc&R-L@jdZP?Aj-byz=nr?L3vI zJOe!rUwu69;q9{0mmk*>|2{MX(;Ul}g;YG;{Q zH1*WN{Pxy1#TSkf@)jy?`^-{#>gKP~ePuD*);&CBc+%A5iSFuY+G35(y2j-%8k}bb z=D(g)&K@Rn%{uGxJl+z4MQOWN?Rs+W;@0D5-7kFJka^5(?|qSVp%-L?_cEX6e_gva zBKG*b)AQ~$SMzVYeyYyvVbnL_i>E=G`_#MCv{o1w)_wUe%kL!r>Ot2Oug&VJr}%8F zq!f2dv8wY@>7UQzE-!hvS&w_msz&CW!YS^*eq?U=*(l;45a02B{k8wPx|7WgMC{MB zQcz-CI@$60#^Z19yL)V#IHk{9Oh2jjfqI~NrfBRf-xHtbR;h@d;?=$LI(b*sxyg>l zcDz1lzCr7PmXhG+o{yIwhD=z?>|4E4_{o8t3%oz@ZoFzI7Gza$Y;P+E$L{sash?`L zP734Opa1V~s8#R@<0I19Oxs_5oOU%U>f{Wqxi@}>|KI;!H|R6(k;eAp1v)Q8R;f?R z7M{Nr(k~Xg*zMrQwZ$;+)#QWqQs$-dW?}nHgPi=1q(yz)o)z@lq3+-x1!WnZkh4}x zb!w$;-?cuz^mOl+?JB9CKAq$^%9RzlcUr{$Tl3<4JHx%ru0FX{{Zll%o^wG8hv!|^ z->*N-UZK`#ttp=#xnNezGL6Xiz=^e4ommsP``!Hy@gEJD9MpL@bn>BhsUe$Pw%hoI zR^R#iE>+-*fkb)!z00~PC(81a4}9Mzm!A47MR$(mPc4bslXGqs@<}htYx`~~|L1PH zUxnz-S#MXr>{fT}{TBN5|APeyXWp1f+ll8T{WJG2c)hC7F@5K)838Y(4QwY-ON8 z=xvGTl8<&vE_YRpP;qkZ-FsWg|NOl3Kcy}9e&t!UeeI)9tb41)lVf4CNtkJ+)ave3wbFFgKgF!-z1^D+ieLQwjia`@@Ich(dn$mmmU<~-nQuQ*?S)E z({}rL8PyzH`j<=i&p#LK`R5B1f6S`d^VWG?_NniI8i8?pUS4)Rzj^)p6(531%bosi zeDW`9&wII_+Fw>K`24HX^yAAF?eV++?UUQL{9v#KZl#uD~zRR}d2YtUH8E5$Ny>-<3)0K>;4UH2T z_u0NVSMj&`nCL}luSoo8z||%DB|dg$1^qc`bx>dR#XjS_tivIjcPYJJGRt&rjr+7r z)x*c93V)o`YI1YO%F{ht&GU}Un)B{&h-swS%kGm^@5G+{*IRYc=wxccr|fn~wf_7i zS?VE^pB5_To03D~DGaFLj#zUg_J*Z1t*^|R{UMb#H;64zh8q#WfEB&KI#a)#r|jt>t7|7b|GhszqDy0TN@(5DK? z)0?aB?bDc^e)-E=kNLK;U02FFdmYWw-Q0OV@|Zm{BL;rJ|G4r>LZ~C_MI`&&PQ$ zs#6c@i3rmfP#z%{~ptZZR zCIwy!aGSBjV@J#`)9ZV5f3n)I5?dYIIH~pnk5yd%>9AF5zgxa!s@zQ3bT0L_lp>R~ zrlR`o>g`#R3e_5IX6o&-YfZ7AP$lsxBHY8_L-^GvLjIfyr|dKsReslAQ2P8P_22es z>07b{xo7Nlcq_cwNp=6*ryE|L&z*7SqT!Xa$?KEkYWALeWy!Up>=1WxyWXLXz3PSc z?E|KZufDX4Y1X$o=FYoI1D5(WkVA6YP0U!J4czP8!otX zJ>$w^yL-|f!&(@QzVdv%@zL_FRg%Wy9}ZaG-*UxKJA7-|Z-LEDi{jeX&r*Kfm+bP_ z@L7OMuG`ADw=Zw2eLCgKf39!NvvgJ(RxEC5N-isSD%g{0$vD~e_^W@blNL>1-WVmP zF8{Xg_w1BorTQ1d&tCm^)$8qYy;#Fe=#`R6Z=3{Sd!xYp|O3H>j6_rCoUxxehE&{N^*2d=SK3oQC) zw@>r>HdmF`=ecC|KD~QY=J$Qeskw81z5957UI-`=Ef= zxuKg|HRBxgBOi3klVNs0e|?L8`hnkT_fkp2KCcPIVb+~pLSH9jly9he(B2$*+0~)*Z*Q#Gu@h8qx@Pyq#zH=w#toN$B-%&py_?@#z1+!PvIW##-p( zqobD(e_J>A!=XD1y9;U_d*1oZA98t_^VDmi7ng)PtCabt_@#Cf-MW``D@Aa5uUA7p z!!!Q)E?e$zhp)fpo3y;t{p7EsAHF?!<}qD)t!3zyYkoI7o<0sceEl=uCXsVJ-`)20 zF51d9^Se~r)xUi6vLcVm$n$-_a`Mc^b;F{#P>ZA+5K+|RO zEzOjcpEmZ@?LYiZ_UR{{fYXz&Zhg9OPtNZnKlh4nO#8%EI>%!D{p;5>56wT<=hPPS z@@sDOMoT}JpK|hx?mfPlT-VN4xvGxtUb zSN-?d-K&qUTlsdL6tCU-_Fwa_8NN3?Be_X{`$|#WR>fDfx>h!RHqk{r@qg|XeYM-) z;mxl9_+qodpNcdUqi5$5{2tDVJIc1;R`t}2F>kHU%|XoWUD^0(*FE=oEAvx(%*#Nr z7ur_~J`97e{sCl8wd&G=z=Jw@57lqHI9hnh_(*2J5mEi<2N^!6IdAO#(O{X_uGlpiMS*Z+Pe2wLa_I&oO_G|iXHa~luctE+w&d6uKo1$Z@r@W8r_4`(fs%~pl#pHZ! zDR5Di?r*+dYX3xYI(PKdUu&BlOdEZl0by zKjPzKDWCV2r)4%3idl4>EmT_e{Rem!ZE;IShJKc0upxmzlCH@(#H==M`DGuO@k>Nr0r{^f(~>ig>iGVd3% z_6wiCwsLK{!MC}dCxXqynEzy;0d(yDqAG!UBOOt0zbwmhQQzesB?&4DTwdnE3%y zKgz0abKSVB^<(+{oj3L#uxPyS@VME-@R$6n7A?D*>u2rh8+|gM+K-rCMv@9<0J<%f??z6H)Zvps%Z-%C69ooP$wvh~fmc>43goi?uu z*Hzv8*4eDx|KfYyy-zz!!;YU^oBpLDy>amk8TENzZ1qxZx|vEYH#3>AK1r@*<}bx{ z^S>YLUt51{@c{+dhDnbj4;|q=>+Z7U;db30OE1f3+*xdQt0$|qdG(b)QvJ?XuZe!V z+2dDbFL^UV=iJ+!9rAtr?pQ0PQk3&2S^L;LnZ&-% zGyf`&?XhH>&KC#T1ZvsWsQj%ER93pUxO|zE`NP%Lnd@FKNW%hzf8XrEW{!7 zQ~SB=-2UuC%K2_vB)@KxQ#bp&GxUG?oNepwZVA)Ly8LCWVcO%|xf`AT`%f@ny!Zc~ zY|5Fra%X>=UTS38SpLy5_L-JeKa>2+|6$L(CZ!y!x16c-*p!wvn%7$mP&~nk8Ym5@QbwSgc~*Tmcn-nmHzBq z-zR*ny8d*DviFO^`;U`8f62AVP>JHrT<9I-wP44i=%-&TH0#S#z82QrmV8~2AgjLS zdV24D(|motwRTQ^FG`h`Meec)Wq{HjHUl>)e-g~`~VR8N4MuyL)TW?ff z;f`%zEb@uf3g5$sY_RUo+|HV0fixxx!Aa|L@JYT3S3W>HMR=RS|v}@i*!@v(@um4(F|Rjc}{_ zCwHg1qrv)nVcPS`KgJ1qMIxt{Z4OB)O8A+m;xUE6HFk!XnUaow{Z^Z!n^!*XxS=m* zDgL)m=~4ClivHg(3;Tb|iC_9Z>FB;a5#N-yegC?%Hf!f1i-$p=i4WPWpox#wkB?m2 z-_uaqclg z-Nw4_Z6Lec%e!BHxNZIXx>EGyY{t3wG#5X&+>mV=ZuAtiyr-jMp0$1c{}00JPX?)) z=FM1>XnC^weOZIyTFqsdiy+7ZM`Ybs)NlKU9?BY$WNsNlBzhC^E^!LGGllhMpf0_Syb=Kk1Ytj3k+LkzI zs9kCg1$Ce`x`a~tou@r-z7m^zS~ymJQ_w?Je2OZ*#|rhcB0+;Jk5M@G$;FkW!#oh0od{pTb4ehTY>kmwMD!FN6{*k9E?b*I3X-s#Uc=Vmc z$BOqKJ>JMk1Z(AK=4 ztE_6uegoV@ID7<6!#l2Vs9FZHtcd1m((o8#*e-!9>OwpV2Caa%u|lhrm;+uzpxKK}A{+8d3f+{Zb; zUpe`u@X)L4ufFFQPmGZ@2Ca?Jt$%yq%|Y&xpL^$hw!7@Ok~6pd=u+qKFIz;m@4OW+ zC1`mZaaQ1C>DD7PO!6*1wtcJmZ+yv|wCL&U)(@XAv^~r{_Wf+hvWXf~)MeRfqj-(? z=l31@X_T-lR?>Q*dhuT+aILMh=)cRnqMc`>4}iu#?USFZ`s1E9LDju8$LjR)!l-V; zx5~A*XN7rO>u1SY(%RPYs_>F!-Krk9qixdS`41n~J}!Lp%5d?i<~a@LLbclWy^0$=lujSrqx1y~n^z-X|;p^l!>zdoz-|S9xU38@L!P0M2 zU%ZK}VQ9@3xuE`gzG|eLX7KY;KVAO%-N!Y4J$5-{J~*{;^)p?C{K%~_8#y>U3?i90bKUl?^}Z(?Q5cc`|Cp`x3!Uw=-mZEzsoMRz zoVmPX;mysj^m|`~9s~uRQT37oC%MhPzLjNPr=)S?o2tu_(0Gx&-}l=8+ujzJ3|wBM zrxRJvCcaK`ri=MiliODx>q?i!Iz2d?u;XYy`}T^D6HGjhSe?xbRy*qYc_Sp>oxj~& z&0qNaneAPjg$oxxe7t7z&PeWbw|!i0_xaPy<{WNYIs0MlIrjSRGZ!E41dR&*@4M`k zX(_YFCNkG zzSj2KsV|-HECm1E3qQ{JdT;#V+R(rEr+(jI=eHuch&O$LdURIB z68}D*RZ9ad`~3aRuuR{gC-?U{rC_#lk#n=-?BDU5zWctD-LU?v=aFuC{<%@p+o~_Q z{IZ*<7;AJUwv?$jY|ep)!FDSG71cKMR z^S{f;)IBoVmNMT$s_cMF*YCQwHnPIE{xzxIU(aK&sg+tituJ!r@sm^k9(^rxQ9bSR zw6m?bo6BBKKJk0H?4eVfuOC#N+Hq)qL2uKG507_0{OkN8^S|Np*et*5OJ=#h3$vm= zFM0h`IecUK!@AntE_)Yg1gOs6H+OxK++UkZ8~^^S6)&wUMt-OC^lIf@YPJbV~E@iiS zp8x35LG2q$uKit8S3J?k*{jB8sjblJ2PdN>?(ICt3pJ#x3Ner{)Lf7P?}d|H{)wL_6# zwygWH`n=4XTUBhf;x%&f1XUf6&i(xDRWgfHq-(PbdprlAeTVOfyT^RDSr^aUtpjS= z+0Ohk^O5bv@28p~?@Tzld#k03ep9yO|AU(6CmiRKIcaC8{lvUj_LG-)zScf`U+#{~%S9G~FM8%o z__z7E{fo^@ti4P%^7>fi*ldp2Ge1lGzNhwA8K}RX_h$ErAcM)4u4kfl*Zv54EA0R3 z{(7;5gB?qs1-RUQBhj+wY4J;kd0+HPYYuzf*-;UkzBuK?OunV}G#ZcDzEVzY6M3er z^n3UH7@6AzOoz+)jE=kL?|M41(qpCZUYosFKCP%V-FEu%nbX_+Jp^)#j<1OCXKC1X z&+LFq*WE&;Q{R6Ge3d(&SKa^mu}gL7oB)}A;Z1+Td}I21_vbfW&&*fxnG~>pdi1ya z9;VPc!k!ERxB58CqC5J@O21h^ z2MErecri2aLB}JR@cIYlZ~v^Xe0_97MUnPrF;L|Gy*|(FL5Ka)I2#_Bi>rPp4l5A`oT^ZD=r!K0x(GJ$g-BXCMp zLH<$}i>C8~P6JhMISCr|I#SyN9{d2E1iE)G$SxS3cjajyj}+-{@nti%E5ERLB{AooBcz&!kcEe)*twpKKKB-Uf_B0& zSV)6u^w1YeMIENB+PN`A7OWCVSRN%1eNbszQ+_#{11Be|fBpX=W>*R4ym|AU2^>}B zmv4RWC$#?W{0)4kN3$2 z?kdSFKDEO;?()OK?SZR8G*$fP-I4kI!xid%s9>b$QIequJ$OcQ9E7FV20;q!D`J+b{M%Tcjgx?<}r)H+vty zLCveWJ#m)OQemeP`)Un!W9kL}9)Evmn|-u`?Tb(?4kJ$`%r^CG{a zYi`tDVSoQMx|_E;M>6#Ix%jqo*`~_YoeV)w_pU(16#o(Jwv)iJ> z3%*;D$l2LqKQ}EuVmhB;&+YWJe0shz z0kU$h_8)!ytk&dT4(p|*eoa>=OTR4qbmul--0^=m^Is-bM}MncczMHFiMxx9q^?(N z+}!(5d*Q-Fi<)OghDl4kq-S_|BZ;nPW zPBmUxE0Lq!;_j*Cpyc3Pn{g(L56jJq?a^Qab|6IEuzXR=y z9Glr9_EZ?Ii{0IJYisuFGmB>$r_Tyzh~Adt`1#q{uQivKcs85gt6+Y9Zm#ir(-TGC zUS4)*?^@C`KP5xfs)R#aKd#4cvd5-LD#h7bVxT zK$c#<`TKgyn6EuPqiSE=bM}ks@{c#SM}ItVX5YlqOiQQSsjj`gFlqMB755Sa+5B&H zv%jj;F*>UrpMPx6*5@CuZ!*rfmaBSdueJaA|I?!O38u3e-H5PVu|%pxe>f7!AiyV&9d#Oi(K+FA{Ab(F{=)KKKFuTvh(g~{QOd!n)Vf^ z^?&W#0V+T{;#{HCr{?Ktx`(f=jsAGn{Ju+c+Sz+&XPcMqcmMqS{BiO4n#TSAetA#d z`TFK&bupcY1V7e4zu)h-D0sjSwLP!5OH@1Q(UHy*({!bOeS0gdsG$6La)X!8=gB!5 zGw^hLm;Lns?PN4>q&!idW<0Ia%y8*Glx{Bvt3z+j2`C+)tQXT^)YCQNHqw zyL|1E**(IOctiHr)yh`PGD_t-)+4#N*+NKS6AK&Ls|9^icE7&9UcT=C-}2Zhzb0Ry zkZ!#Km4j=~&NhF&;OdEq${$}YpP%&U$;ln{|Lvl-X0=+EzkBggMPh5_WwpOnZ#`%3 z*5Cg}=U5a%+d!3XRhS-dvRt8qx{ss^#^4nTYIZ* zHva$N`{(^%p%ZfylP;W?q?jx8_y0p><%G$)lP5+#l~9>!@meGAUgZMgIg6@psbtOk zF1NpNbNHXLhHc&R$_>+gDTe4zmh2Qdc0JPazw}<&#s6(OqMmL}xbk1?;oY{M2Kjd@ zd*)W&s1Yf6wn^UX{pUkdc3!%Fp0^|;O5pD8DGp-%<$Lbu%lgIcY1Y4|-S@F}^~3J+ z?$?#ei_A}5dTaA&t^8!=&1>V=Ox!Q)Fn^`4`K>xVf7SC|ZECofzqdoBK*dod{FmCKhFkkrpMP1@{PMEI?ITK! zYeP;7&vpit94;b$e-D7>EtIOBZq2!Aq~qEplGxbT_)OyP+1ciY_w3noXm)9RK|w)8 zuaxPbSJ&1`e|vC{+19V6rKP2^qN1hr?JZLs6O)kbUtV5re|mbl{+n-aZ$Ar3OniN9 z?d0O8iPGkIR}LHPpJkf;>ZfhZkAQw*qy0WJjb8rboEhK7BY9|3+F7ZxzrRXt^{m|c z<#@Zr_2X`ANj~_1{ zo@-Tl>GYGgZ`ZaTUFtpki^%&NcT*xrlso9TXO ziRa;8-`}rqZ(Xyv=;^7}tLx+A@7F&%(z(H{SE^MvZqJQ5hb;G3_aExoGDGy+;U4E_ zGdi4{oDQ$r5-o78@PnIad~u4&z8_`T5hu4lZ@J66L3jV+xa6`H(L6hCoezl{` zZoDR7b7bP_?J?I5Ke}?%I`L@KIlkYe_c)7tiWwUntKx#6yU$s7x8ZBz+TUw9eLzkVt%GmlYkc`24il&WVY})8)&>1V6Xy?nKQui4*gty|@H+*|rpuja4( ztDin|O0UQW@9lk7b$`$K%QDHItDY}SoZFVmRs3-!xFHc2RsH>4?}ZtVd6M-uUu`9` zudj3Ml`@@Ru~C=V@tC+)2**t0biVvaAC**`J&n@s{{JZkwLaAS=UwqVby3x00t2V8 z+Lg<)wpAhNLZ0_Mg1()7^gchO-(#hD;#q&A-gEQq`6OAHY7Oy{iQqUZ^^4Gnz4QU z@22N&E_oSrcX?2W%54pwv)gI}Z-2UFUHGt1PceMy6!)H+Zj)|o`TL~Stl_wE0W@bbKkiPPV_{=f5|jW0x^uAS{Yz<$u8{;K^R*459wUZnkgx&8Tye!b=D zlJ?(f^4MSTtd#Wjd-&;V^|KotWvfdg7tYAF{b%!BB5wU0-mO|GhQ}o~rIuV@e^DvY zY3HUT2Y&Z{nw`wU_`P|;*~7891;s8rDRzru0-xW$baCC`dj;L{`j@_#*T_HEblrA} z=A3(1mxD)wt5OXLz#1#}udZ+&?Gn9QE9J@Hd1~LuP2M}LUcNq|r20U`A;sV8(A)d_g%IVJ-Ipg!OS)KGuQ9wTXCZJv`x2&W>TNw9NX%!|J&u` zcN9GQaNy!hH_N!@bO=s=vo42>OIQ-AWEn(|C4o+YFs`T0EM4j1n z=aTIz)&`mF<NF9Dr`~Ahm?!Wf4#J}0ObLUID_9dPSi=(z?Rn57vF`50=_Wbp~e^0Dy zmWke7_V!DOP{+jMyLU_1-ib)rQ(M+&YM=gjQrcO6CVe3nuc@ajH1j2GtG2vj_cWSx zZGC+I%gf7O?`u|B?f%Pi)28Ytr4?0GZd@NueCFo7U{PIn@{6EQ$EnHc{6R}PBrGQG zo0?L$?n}PPO~1Y+@#-)2y`JSxJTQ@Eii(2jUxTT-(PFW?N(|qZ-krDDJU}NtYVOX* zJ^>phJ{6Hk`qSTM>RYfuclNP3kBk}bwriAjxnz8;iYwMB*`S_d)9ZS@6sv#k zdM&T#gOx#@CnT*m)$HeA-Ktw}a`?nM(NcM*X0>+*f39{rc5~h0d%u337C*h9oqz7G zrT@iGNEXIVIkVJxdH%w{uQFBvDYogAyM0tQzW>4dbsl&3go7f&i|ZGEsjA)OH0`Kz ztWoiaw0pNcSKW<1s0*$zHzh*G8saJ^9aL(ZJ5@Ve3DmdBe*E_BT4wcckyZx}9^6rS z+M-ZSR6F3&jJw6}@7cb&yMF^eo92Idwv|;|OfO~yvuz)vR^Y}Y*T46b z&g&;du|<|0XPBK5;pw?&k!!b7ZPoKg+e2ELpa1v~ySwb=q~g1~N{x?8s4)956$d%x ze}8v(7fXD}O`mgjcsUMra__UU5WMRAIn}(0UHV(as~$P`Ns`4UPix$rrdewgTbFnH z;A;-PPMfbY?D-S_cg~i$wbUkPhr3Sd^t;MC`DA$im(J%)Dy`qYqtgG(CXZtitKQ5@ zHs6r&mzC#TjNTrec^sU)t_}$S6#_b1yZe7A?28gi?UpzwpMGh%UsKxFqJ_!c%FO;= zdpRrDutZ&2VsgszUVX+JWBz6(yXQAvwog=wbeh|#@}$s+Uz0oCzsW)JlFC)pH!+F_ zmm5$26R@!2%I!-NQ;JVkZQNe-I#tH9HhOJ+w3r-t7~m$NAp84m|Np=K-=AOJQJ6e; zqw>?&OV%&Ex;p&v=JR%!9cSO#nmxOp;nlUZ-A_+XPd+t8(@Nse^XJRG_wvfwNVN0G zUb-C7D0KYIytUEWUpe&FI;fj{E}nK(`RSV_cjnxw|NSl3XO;=)TtrNayn=qlJq$egDB5tL58dvwB;6=Y?%=zF)dLMPq{4)2@^QO{L-nueLK=R6gu` z$Nc<;W&9tb?<`U!k!=pf9!iZJ*LXiaT=YEli_~W3<$CuH>h5p1TD|i02i+O_o|v?i zXtrNpopSl|?a6h0dNH4mzj_;PxFL9^#&3@zw@sZ(T;l%EFI$*+Rc1w))#S>4N3S!U z38_EU|1S01&ED^HrTFgA``YJ{eoj06EX3`L_2a=8PSpWCth-y_~_9)IY&?dlfxb5AVi zrq+1=w9>BDw8}1vyL$We`J>0S)rp8KYFF(@TVHlu^+(1DwY__FRX;61{Lpy&#=yO1 z{~HwUnqO&{U-tO0SZlz>9j|BlL8`V%6|dMgZ0>#q>G)^{@%c6hK0ela*-^Ut3;&m6 z()kPA`{h=|?A&B|jpKkvy-SeQxk)OXLb43AY^%4OOPFPl*u>}Y^Vct>%A&_lcE7m3 zUjE;Y$NUwQl8xMopC|Vya;}S5^YiR1Q*ZmYXX>XFBOUveKHB&1S9ZuRfmh*zXa(KF;;;udiQsO`ES2 zHGQS{(Sen`A6-<&kusu7Daye zeBjluZ7i{EzBgAlTLtBv3o^-<+L9Z@;G6x7>wM9~HS+@Z%O2Uk`h08pk0br^{8PQF z7F5rEWaaVb%#xeOL4!Ukf)%yZzO7H|EA3^mQ!!9II3rc~oh-@O&g zwNBUKua|c%a=zSDH3OU)7HB8kNQRWvC;C#DJnbFI-`{h6b!BDgOY@UCon0(WOU^Ga z$-MMJp)2`=^0s*?b=TL&U++IZ(^%aorNeUaVM)$w9u96ynUR}P8r$33EBkxzls`Ek zxHnEk+k+`|qpD==Co5G0)z>#?&NNP6lzhC;%6L^p;q}wIY&)yJHy8Z;Wh?t(f{y&l z)f!qte>N})1+|^qXmYpSaZ{FF^J3`%(;_o7hw+klE6b&GaUZWA+*)%p_|?AIV4t06gDwoMdMImC5iot<>$|(n*?1%p z`g-Ro>88DA5C{zM)2TVW#}$-GzPy5sj>kn@S{`(Mo^9!~kl)|l8kWAga{N>VxKdM6 zx(+R4UG&!^AMbk^)X2&$<}y)f+rBKYl^ri`CP2ax!tLlVIetJe+YWsFE4Yvb4bwx% od7*stab!Y+{HVG$5Bz8R_O`f9Ve`T;1_lNOPgg&ebxsLQ0FEt|Jpcdz literal 0 HcmV?d00001 diff --git a/utest/CMakeLists.txt b/utest/CMakeLists.txt index 187a92c3..707b7fd1 100644 --- a/utest/CMakeLists.txt +++ b/utest/CMakeLists.txt @@ -7,6 +7,7 @@ add_executable(${SELF_EXECUTABLE_NAME} ${SELF_SOURCE_FILES}) xo_include_options(${SELF_EXECUTABLE_NAME}) add_test(NAME ${SELF_EXECUTABLE_NAME} COMMAND ${SELF_EXECUTABLE_NAME}) +target_code_coverage(${SELF_EXECUTABLE_NAME} AUTO ALL) # ---------------------------------------------------------------- # 3rd party dependency: catch2