From 7e1e91213524e7c40a989dfef93dbc2028a74550 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 15:06:52 -0500 Subject: [PATCH 01/32] updated beginner --- docs/_static/config/beginner.yaml | 5 +++-- docs/tutorial/beginner.rst | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/_static/config/beginner.yaml b/docs/_static/config/beginner.yaml index 202879534..6d9a85cf9 100644 --- a/docs/_static/config/beginner.yaml +++ b/docs/_static/config/beginner.yaml @@ -26,8 +26,9 @@ algorithms: include: true run1: k: 1 - # run2: # uncomment for step 3.2 - # k: [10, 100] # uncomment for step 3.2 + + # run2: # uncomment for step 3.2 + # k: [10, 100] # uncomment for step 3.2 # Here we specify which pathways to run and other file location information. # Assume that if a dataset label does not change, the lists of associated input files do not change diff --git a/docs/tutorial/beginner.rst b/docs/tutorial/beginner.rst index bf03bec69..c3cb40533 100644 --- a/docs/tutorial/beginner.rst +++ b/docs/tutorial/beginner.rst @@ -176,6 +176,8 @@ From the root directory spras/, run the command below from the command line: What Happens When You Run This Command ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SPRAS will executes quickly from your perspective; however, several automated steps (handled by Snakemake and Docker) occur behind the scenes. +(ADD IN THAT APPLE COMPUTETERS WILL TAKE A SECOND BECAUSE OUR DOCKER IMAGES ARE AMD AND NOT ARM) + 1. Snakemake starts the workflow From 96bc8b6f500c7d55c8912981434d866b00803ee2 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 16:14:34 -0500 Subject: [PATCH 02/32] updating the introduction to better explain pathway reconstruction and SPRAS --- docs/_static/config/beginner.yaml | 2 +- docs/tutorial/beginner.rst | 17 +++++++++++++- docs/tutorial/introduction.rst | 39 +++++++++++++++++-------------- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/docs/_static/config/beginner.yaml b/docs/_static/config/beginner.yaml index 6d9a85cf9..951dd2834 100644 --- a/docs/_static/config/beginner.yaml +++ b/docs/_static/config/beginner.yaml @@ -46,7 +46,7 @@ reconstruction_settings: # Set where everything is saved locations: - reconstruction_dir: "output/basic" + reconstruction_dir: "output/beginner" analysis: # Create one summary per pathway file and a single summary table for all pathways for each dataset diff --git a/docs/tutorial/beginner.rst b/docs/tutorial/beginner.rst index af846e71a..4ccf32576 100644 --- a/docs/tutorial/beginner.rst +++ b/docs/tutorial/beginner.rst @@ -18,6 +18,10 @@ Step 0: Clone the SPRAS repository, set up the environment, and run Docker 0.1 Start Docker ---------------- +CONFUSED THE USERS WHY THIS WAS DONE FIRST +ADD THIS TO A LATER STEp +ALSO add an image on how to launch docker desktop + Launch Docker Desktop and wait until it says "Docker is running". 0.2 Clone the SPRAS repository @@ -28,6 +32,8 @@ Visit the `SPRAS GitHub repository `__ an 0.3 Set up the SPRAS environment ------------------------------------- +SHOW HOW TO SET UP SPRAS env +ALSO EXPLAIN what is happening From the root directory of the SPRAS repository, create and activate the Conda environment and install the SPRAS python package: .. code:: bash @@ -39,6 +45,7 @@ From the root directory of the SPRAS repository, create and activate the Conda e 0.4 Test the installation ------------------------- +SHOW RUNNING THIS Run the following command to confirm that SPRAS has been set up successfully from the command line: .. code:: bash @@ -48,6 +55,8 @@ Run the following command to confirm that SPRAS has been set up successfully fro Step 1: Explanation of configuration file ========================================= +ADD IN THE LARGER PICTURE VIEW OF A CONFIG FILE (NOT ALL OF IT BUT PART OF IT) + A configuration file specifies how a SPRAS workflow should run; think of it as the control center for the workflow. It defines which algorithms to run, the parameters to use, the datasets and gold standards to include, the analyses to perform after reconstruction, and the container settings for execution. @@ -60,6 +69,10 @@ To continue or rerun SPRAS with the same configuration file, delete the output d For this part of the tutorial, we'll use a pre-defined configuration file. Download it here: :download:`Beginner Config File <../_static/config/beginner.yaml>` +EXPLAIN WHAT A YAML FILE IS + +SHOW THIS ACTION OF MOVING IT TO THE FOLDER + Save the file into the config/ folder of your SPRAS installation. After adding this file, SPRAS will use the configuration to set up and reference your directory structure, which will look like this: @@ -72,13 +85,13 @@ After adding this file, SPRAS will use the configuration to set up and reference │ ├── phosphosite-irefindex13.0-uniprot.txt # pre-defined in SPRAS already │ └── tps-egfr-prizes.txt # pre-defined in SPRAS already +ADD EXPLANATION OF THESE 2 FOLDERS Here's an overview of the major sections when looking at a configuration file: Algorithms ----------- - .. code-block:: yaml algorithms: @@ -160,6 +173,8 @@ Analysis SPRAS includes multiple downstream analyses that can be toggled on or off directly in the configuration file. When enabled, these analyses are performed per dataset and produce summaries or visualizations of the results from all enabled algorithms for that dataset. +EXPLAIN ALSO THAT THESE don;t include all of the options, but the config.yaml file in config/ + Step 2: Running SPRAS on a provided example dataset ==================================================== diff --git a/docs/tutorial/introduction.rst b/docs/tutorial/introduction.rst index bf1c1bd8f..e371a11bb 100644 --- a/docs/tutorial/introduction.rst +++ b/docs/tutorial/introduction.rst @@ -20,13 +20,13 @@ Required software: - `Conda `__ : for managing environments - `Docker `__ : for containerized runs -- `Cytoscape `__ for visualizing networks (download locally, the web version will not suffice) - `Git `__: for cloning the SPRAS repository - A terminal or code editor (`VS Code `__ is recommended, but any terminal will work) +- (Optional) `Cytoscape `__ for visualizing networks (download locally, the web version will not suffice) Required knowledge: -- Basic Python skills +- Ability to run command line operations and modify YAML files. - Basic biology concepts ############### @@ -35,28 +35,31 @@ SPRAS Overview What is pathway reconstruction? =============================== -Pathway reconstruction is a computational approach used in biology to propose candidate biological pathways (such as signaling pathways) from high-throughput experimental data. -Curated pathway databases provide references to pathways, but they are often generalized and may not capture the context-specific details relevant to a particular disease or experimental condition. -To address this, pathway reconstruction algorithms help map molecules of interest (such as proteins, genes, or metabolites identified in omics experiments) onto large-scale interaction networks, called interactomes (graphs of molecular interactions in a cell). -The result is a customized subnetwork (pathway) that reflects the biology of the specific experiment or condition. +A pathway is a type of graph that describes how different molecules interact with one another for a biological process. -Why use pathway reconstruction? -=============================== -Pathway reconstruction algorithms allow researchers to systematically propose context-specific subnetworks without performing exhaustive experiments testing each individual interaction. -Different algorithms use distinct computational strategies and parameters, providing flexibility to highlight various aspects of the underlying biology and generate new, testable hypotheses giving researchers the flexibility to create and identify different subnetworks specific to their experimental conditions. +Curated pathway databases provide useful well studied references of pathways but are often generalized. +This means they may miss context-specific details relevant to a particular condition or experiment. + +Pathway reconstruction algorithms address this by mapping molecules of interest onto large-scale interaction networks (interactomes) to generate candidate context-specific subnetworks that better reflect the high-throughput experimental data. + +These algorithms allow researchers to systematically propose hypothetical subnetworks that capture the unique characteristics of a given context without having to experimentally test every individual interaction. + +Running multiple pathway reconstruction algorithms on several datasets is difficult due to each requiring unique inputs, software environments, and some are not readily available. +To perform post-analysis, most algorithm outputs must first be converted into a unified, standardized format. What is SPRAS? =============== -The Signaling Pathway Reconstruction Analysis Streamliner (SPRAS) is a computational framework that unifies, standardizes, and streamlines the use of diverse pathway reconstructon algorithms. +The Signaling Pathway Reconstruction Analysis Streamliner (SPRAS) is a computational framework that unifies and simplifies the use of diverse pathway reconstruction algorithms. + +SPRAS allows users to run multiple datasets across multiple algorithms and many parameter settings in a single workflow. +The framework automatically handles data preprocessing, algorithm execution, and post-processing, allowing users to run multiple algorithms seamlessly without manual setup. +Built-in analysis tools enable users to explore, compare, and evaluate reconstructed pathways with ease. + +SPRAS is implemented in Python and leverages two technologies for workflow automation: -SPRAS provides an abstraction layer for pathway reconstruction algorithms by organizing every step into a unified schema. It uses workflow management (Snakemake), containerization, and config-driven runs to build modular and interoperable pipelines that cover the entire process: +- Snakemake: a workflow management system that defines and executes jobs automatically, removing the need for users to write complex scripts +- Docker: runs algorithms and post analysis in a containerized environment. -1. Pre-processing of data -2. Algorithm execution -3. Post-processing of results -4. Downstream analysis and evaluation -A key strength of SPRAS is automation. From user provided input data and configurations, it can generate and execute complete workflows without requiring users to write complex scripts. This lowers the barrier to entry, allowing researchers to apply, evaluate, and compare multiple pathway reconstruction algorithms without deep computational expertise. -SPRAS also supports scalable analyses, making it especially valuable for a large number of datasets and systematic investigations. In addition, it provides built-in evaluation and post analysis tools that provide further insights of the algorithm outputs. \ No newline at end of file From ed8d8dcc567dbd53115d3b8beb1ee0f3382ac875 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 16:52:29 -0500 Subject: [PATCH 03/32] updating the install and config part --- docs/tutorial/beginner.rst | 106 +++++++++++++++++++++---------------- 1 file changed, 61 insertions(+), 45 deletions(-) diff --git a/docs/tutorial/beginner.rst b/docs/tutorial/beginner.rst index 4ccf32576..9c8031fb3 100644 --- a/docs/tutorial/beginner.rst +++ b/docs/tutorial/beginner.rst @@ -15,25 +15,14 @@ You will learn how to: Step 0: Clone the SPRAS repository, set up the environment, and run Docker ========================================================================== -0.1 Start Docker ----------------- - -CONFUSED THE USERS WHY THIS WAS DONE FIRST -ADD THIS TO A LATER STEp -ALSO add an image on how to launch docker desktop - -Launch Docker Desktop and wait until it says "Docker is running". - -0.2 Clone the SPRAS repository +0.1 Clone the SPRAS repository ------------------------------- Visit the `SPRAS GitHub repository `__ and clone it locally -0.3 Set up the SPRAS environment +0.2 Set up the SPRAS environment ------------------------------------- -SHOW HOW TO SET UP SPRAS env -ALSO EXPLAIN what is happening From the root directory of the SPRAS repository, create and activate the Conda environment and install the SPRAS python package: .. code:: bash @@ -42,39 +31,54 @@ From the root directory of the SPRAS repository, create and activate the Conda e conda activate spras python -m pip install . -0.4 Test the installation +.. note:: + The first command performs a one time setup of the SPRAS dependencies by creating a Conda environment (an isolated space that keeps all required packages and versions separate from your system). + + The second command activates the newly created environment so you can use these dependencies when running SPRAS; this step must be done each time you open a new terminal session. + + The last command is a one time installation of the SPRAS package into the environment. + +0.3 Test the installation ------------------------- -SHOW RUNNING THIS Run the following command to confirm that SPRAS has been set up successfully from the command line: .. code:: bash python -c "import spras; print('SPRAS import successful')" +0.4 Start Docker +---------------- + +Before running SPRAS, make sure Docker Desktop is running. + +Launch Docker Desktop and wait until it says "Docker is running". + +.. note:: + SPRAS itself does not run inside a Docker container. + However, Docker is required because SPRAS uses it to execute individual pathway reconstruction algorithms and certain post-analysis steps within isolated containers. + These containers include all the necessary dependencies to run each algorithm or post analysis. + Step 1: Explanation of configuration file ========================================= -ADD IN THE LARGER PICTURE VIEW OF A CONFIG FILE (NOT ALL OF IT BUT PART OF IT) - A configuration file specifies how a SPRAS workflow should run; think of it as the control center for the workflow. + It defines which algorithms to run, the parameters to use, the datasets and gold standards to include, the analyses to perform after reconstruction, and the container settings for execution. -SPRAS uses Snakemake (a workflow manager) and containerized software (like Docker and Apptainer), to read the configuration file and execute a SPRAS workflow. +The configuration files used are written in YAML, a human-readable format that uses simple indentation and key-value pairs for data seralizaiton. + +SPRAS uses Snakemake to read the YAML configuration file and execute a SPRAS workflow accordingly. -Snakemake considers a task from the configuration file complete once the expected output files are present in the output directory. -As a result, rerunning the same configuration file may do nothing if those files already exist. -To continue or rerun SPRAS with the same configuration file, delete the output directory (or its contents) or modify the configuration file so Snakemake regenerates new results. +.. Snakemake considers a task from the configuration file complete once the expected output files are present in the output directory. +.. As a result, rerunning the same configuration file may do nothing if those files already exist. +.. To continue or rerun SPRAS with the same configuration file, delete the output directory (or its contents) or modify the configuration file so Snakemake regenerates new results. For this part of the tutorial, we'll use a pre-defined configuration file. Download it here: :download:`Beginner Config File <../_static/config/beginner.yaml>` -EXPLAIN WHAT A YAML FILE IS - -SHOW THIS ACTION OF MOVING IT TO THE FOLDER - Save the file into the config/ folder of your SPRAS installation. -After adding this file, SPRAS will use the configuration to set up and reference your directory structure, which will look like this: +After adding this file, your directory structure will look like this (ignoring the rest of the folders): .. code-block:: text @@ -82,10 +86,25 @@ After adding this file, SPRAS will use the configuration to set up and reference ├── config/ │ └── beginner.yaml ├── inputs/ - │ ├── phosphosite-irefindex13.0-uniprot.txt # pre-defined in SPRAS already - │ └── tps-egfr-prizes.txt # pre-defined in SPRAS already + │ ├── phosphosite-irefindex13.0-uniprot.txt # pre-defined in SPRAS already, used by the beginner.yaml file + │ └── tps-egfr-prizes.txt # pre-defined in SPRAS already, used by the beginner.yaml file + +config/ +------- -ADD EXPLANATION OF THESE 2 FOLDERS +The config/ folder stores configuration files for SPRAS. + +.. note:: + You can name or place configuration files anywhere, as long as you provide the correct path when running SPRAS (explained later in this tutorial). + +input/ +------ + +The inputs/ folder contains input data files. +You can use the provided example datasets or add your own for custom experiments to this folder. + +.. note:: + Input files can be stored anywhere as long as their paths are correctly referenced in the configuration file (explained later in this tutorial). Here's an overview of the major sections when looking at a configuration file: @@ -115,7 +134,6 @@ Algorithm parameters can be organized into one or more run blocks (e.g., run1, r When defining a parameter, it can be passed as a single value or passed by listing parameters within a list. If multiple parameters are defined as lists within a run block, SPRAS generates all possible combinations (Cartesian product) of those list values together with any fixed single-value parameters in the same run block. Each unique combination runs once per algorithm. -Invalid or missing parameter keys will cause SPRAS to fail. Datasets -------- @@ -173,7 +191,12 @@ Analysis SPRAS includes multiple downstream analyses that can be toggled on or off directly in the configuration file. When enabled, these analyses are performed per dataset and produce summaries or visualizations of the results from all enabled algorithms for that dataset. -EXPLAIN ALSO THAT THESE don;t include all of the options, but the config.yaml file in config/ +.. note:: + The configuration file and sections shown here do not represent the full set of options available in SPRAS. + + The SPRAS documentation is still under construction, and the examples provided (like beginner.yaml) only show the basic configuration needed for this tutorial. + + To see a more complete set of configurable options and parameters, refer to the full examples in config/config.yaml and config/egfr.yaml within the SPRAS repository. Step 2: Running SPRAS on a provided example dataset ==================================================== @@ -243,7 +266,7 @@ What Your Directory Structure Should Like After This Run: │ ├── phosphosite-irefindex13.0-uniprot.txt │ └── tps-egfr-prizes.txt ├── outputs/ - │ └── basic/ + │ └── beginner/ │ └── egfr-pathlinker-params-D4TUKMX/ │ └── pathway.txt │ └── raw-pathway.txt @@ -355,7 +378,7 @@ What Your Directory Structure Should Like After This Run: │ ├── phosphosite-irefindex13.0-uniprot.txt │ └── tps-egfr-prizes.txt ├── outputs/ - │ └── basic/ + │ └── beginner/ │ └── egfr-pathlinker-params-7S4SLU6/ │ └── pathway.txt │ └── raw-pathway.txt @@ -480,12 +503,12 @@ What Your Directory Structure Should Like After This Run: │ └── log/ │ └── ... snakemake log files ... ├── config/ - │ └── basic.yaml + │ └── beginner.yaml ├── inputs/ │ ├── phosphosite-irefindex13.0-uniprot.txt │ └── tps-egfr-prizes.txt ├── outputs/ - │ └── basic/ + │ └── beginner/ │ └── egfr-pathlinker-params-7S4SLU6/ │ └── pathway.txt │ └── raw-pathway.txt @@ -510,16 +533,12 @@ What Your Directory Structure Should Like After This Run: Step 3.1: Reviewing the Outputs ----------------------------------- -After completing the workflow, you will have several post analysis outputs that help you explore and interpret the results: - -1. egfr-cytoscape.cys: a Cytoscape session file containing visualizations of the reconstructed subnetworks. -2. egfr-pathway-summary.txt: a summary file with statistics describing each network. Reviewing Summary Files ^^^^^^^^^^^^^^^^^^^^^^^^ 1. Open the summary statistics file -In your file explorer, go to spras/output/basic/egfr-pathway-summary.txt and open it locally. +In your file explorer, go to spras/output/beginner/egfr-pathway-summary.txt and open it locally. .. image:: ../_static/images/summary-stats.png :alt: description of the image @@ -542,7 +561,7 @@ Launch the Cytoscape application on your computer. 2. Load the Cytoscape session file -Navigate to spras/output/basic/egfr-cytoscape.cys and open it in Cytoscape. +Navigate to spras/output/beginner/egfr-cytoscape.cys and open it in Cytoscape. .. image:: ../_static/images/cytoscape_upload_network.png :alt: description of the image @@ -604,7 +623,4 @@ The large parameter value (k=100) generates a much denser subnetwork, capturing .. raw:: html -
- -The parameters used here help determine which edges and nodes are included; each setting produces a different subnetwork. -By examining the statistics (egfr-pathway-summary.txt) alongside the visualizations (Cytoscape), you can assess how parameter choices influence both the structure and interpretability of the outputs. \ No newline at end of file +
\ No newline at end of file From c4239bded745e5655a2dff4fe4dbba14252492d9 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 17:27:42 -0500 Subject: [PATCH 04/32] fixing the first part of step 2 in beginner --- docs/tutorial/beginner.rst | 124 +++++++++++++++------------------ docs/tutorial/intermediate.rst | 2 +- 2 files changed, 56 insertions(+), 70 deletions(-) diff --git a/docs/tutorial/beginner.rst b/docs/tutorial/beginner.rst index 9c8031fb3..aa5c923ae 100644 --- a/docs/tutorial/beginner.rst +++ b/docs/tutorial/beginner.rst @@ -59,8 +59,8 @@ Launch Docker Desktop and wait until it says "Docker is running". However, Docker is required because SPRAS uses it to execute individual pathway reconstruction algorithms and certain post-analysis steps within isolated containers. These containers include all the necessary dependencies to run each algorithm or post analysis. -Step 1: Explanation of configuration file -========================================= +Step 1: Configuration files +============================ A configuration file specifies how a SPRAS workflow should run; think of it as the control center for the workflow. @@ -74,6 +74,9 @@ SPRAS uses Snakemake to read the YAML configuration file and execute a SPRAS wor .. As a result, rerunning the same configuration file may do nothing if those files already exist. .. To continue or rerun SPRAS with the same configuration file, delete the output directory (or its contents) or modify the configuration file so Snakemake regenerates new results. +1.1 Save config for this tutorial +---------------------------------- + For this part of the tutorial, we'll use a pre-defined configuration file. Download it here: :download:`Beginner Config File <../_static/config/beginner.yaml>` @@ -89,16 +92,17 @@ After adding this file, your directory structure will look like this (ignoring t │ ├── phosphosite-irefindex13.0-uniprot.txt # pre-defined in SPRAS already, used by the beginner.yaml file │ └── tps-egfr-prizes.txt # pre-defined in SPRAS already, used by the beginner.yaml file + config/ -------- +^^^^^^^^^ The config/ folder stores configuration files for SPRAS. .. note:: - You can name or place configuration files anywhere, as long as you provide the correct path when running SPRAS (explained later in this tutorial). + You can store configuration files anywhere, as long as you provide the correct path when running SPRAS (explained later in this tutorial). input/ ------- +^^^^^^^^ The inputs/ folder contains input data files. You can use the provided example datasets or add your own for custom experiments to this folder. @@ -106,10 +110,11 @@ You can use the provided example datasets or add your own for custom experiments .. note:: Input files can be stored anywhere as long as their paths are correctly referenced in the configuration file (explained later in this tutorial). -Here's an overview of the major sections when looking at a configuration file: +1.2 Overview of the major sections of a configuration file: +-------------------------------------------------------- Algorithms ------------ +^^^^^^^^^^^ .. code-block:: yaml @@ -136,7 +141,7 @@ If multiple parameters are defined as lists within a run block, SPRAS generates Each unique combination runs once per algorithm. Datasets --------- +^^^^^^^^^^^ .. code-block:: yaml @@ -159,8 +164,8 @@ The dataset must include the following types of keys and files: - other_files: This placefolder is not used - data_dir: The file path of the directory where the input dataset files are located -Reconstruction Settings ------------------------ +Reconstruction settings +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: yaml @@ -168,13 +173,11 @@ Reconstruction Settings locations: reconstruction_dir: "output" - The reconstruction_settings section controls where outputs are stored. Set reconstruction_dir to the directory path where you want results saved. SPRAS will automatically create this folder if it doesn't exist. -If you are running multiple configuration files, you can set unique paths to keep outputs organized and separate. Analysis --------- +^^^^^^^^^^^ .. code-block:: yaml @@ -187,7 +190,6 @@ Analysis include: true - SPRAS includes multiple downstream analyses that can be toggled on or off directly in the configuration file. When enabled, these analyses are performed per dataset and produce summaries or visualizations of the results from all enabled algorithms for that dataset. @@ -201,7 +203,7 @@ When enabled, these analyses are performed per dataset and produce summaries or Step 2: Running SPRAS on a provided example dataset ==================================================== -2.1 Running SPRAS with the Beginner Configuration +2.1 Running SPRAS with the beginner configuration ------------------------------------------------- In the beginner.yaml configuration file, it is set up have SPRAS run a single algorithm with one parameter setting on one dataset. @@ -211,48 +213,54 @@ From the root directory spras/, run the command below from the command line: snakemake --cores 1 --configfile config/beginner.yaml +This command starts the workflow manager that automates all steps defined by SPRAS. +It tells Snakemake to use one CPU core and to load settings from the config/beginner.yaml file. + What Happens When You Run This Command ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -SPRAS will executes quickly from your perspective; however, several automated steps (handled by Snakemake and Docker) occur behind the scenes. -(ADD IN THAT APPLE COMPUTETERS WILL TAKE A SECOND BECAUSE OUR DOCKER IMAGES ARE AMD AND NOT ARM) +SPRAS will execute quickly from your perspective; however, several automated steps (handled by Snakemake and Docker) occur behind the scenes. + +.. note:: + On Apple computers (M1/M2/M3 chips), the first run may take slightly longer because the SPRAS Docker images are built for AMD architectures, not ARM, so Docker must perform additional image translation before execution. 1. Snakemake starts the workflow Snakemake reads the options set in the beginner.yaml configuration file and determines which datasets, algorithms, and parameter combinations need to run and if any post-analysis steps were requested. -2. Preparing the dataset - -SPRAS takes the interactome and node prize files specified in the configuration and bundles them into a Dataset object to be used for processing algorithm specific inputs. -This object is stored as a .pickle file (e.g. dataset-egfr-merged.pickle) so it can be reused for other algorithms without re-processing it. +2. Creating algorithm specific inputs -3. Creating algorithm specific inputs +For each algorithm marked as include: true in the configuration, SPRAS generates input files tailored to those algorithms using the dataset specified in the config file. -For each algorithm marked as include: true in the configuration, SPRAS generates input files tailored to that algorithm using the input standardized egfr dataset. In this case, only PathLinker is enabled. -SPRAS creates the network.txt and nodetypes.txt files required by PathLinker in the prepared/egfr-pathlinker-inputs/. +SPRAS creates the files required by PathLinker and places them in the prepared/egfr-pathlinker-inputs/. 4. Organizing results with parameter hashes -Each dataset-algorithm-parameter combination is placed in its own folder named like egfr-pathlinker-params-D4TUKMX/. -D4TUKMX is a hash that uniquely identifies the specific parameter combination (k = 10 here). -A matching log file in logs/parameters-pathlinker-params-D4TUKMX.yaml records the exact parameter values. +Each dataset-algorithm-parameter combination is placed in its own folder named like --params-. + +For this configuration file only egfr-pathlinker-params-D4TUKMX/ is created. +D4TUKMX is a hash that uniquely identifies a specific parameter combination (k = 10). + +A matching log file is placed in logs/parameters-pathlinker-params-D4TUKMX.yaml which records the exact parameter value used. 5. Running the algorithm -SPRAS launches the PathLinker Docker image that it downloads from DockerHub, sending it the prepared files and parameter settings. -PathLinker runs and produces a raw pathway output file (raw-pathway.txt) that holds the subnetwork it found in its own native format. +SPRAS downloads the PathLinker Docker image from Docker Hub and launches it in a container, sending the prepared input files and specific parameter settings needed for execution. + +PathLinker runs and generates an output file named raw-pathway.txt, which contains the reconstructed subnetwork in PathLinker's algorithm-specific format. + +SPRAS then saves this file in its corresponding folder. 6. Standardizing the results -SPRAS parses the raw PathLinker output into a standardized SPRAS format (pathway.txt). -This ensures all algorithms output are put into a standardized output, because their native formats differ. +SPRAS parses the raw PathLinker output into a standardized SPRAS format (pathway.txt) and SPRAS saves this file in its corresponding folder. 7. Logging the Snakemake run -Snakemake creates a dated log in .snakemake/log/. This log shows what rules ran and any errors that occurred during the SPRAS run. +Snakemake creates a dated log in .snakemake/log/. This log shows what jobs ran and any errors that occurred during the SPRAS run. -What Your Directory Structure Should Like After This Run: +What your directory structure should like after this run: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text @@ -280,46 +288,23 @@ What Your Directory Structure Should Like After This Run: │ └── dataset-egfr-merged.pickle -Step 2.2: Overview of the SPRAS Folder Structure -================================================= - -After running the SPRAS command, you'll see that the folder structure includes four main directories that organize everything needed to run workflows and store their results. - -.. code-block:: text - - spras/ - ├── .snakemake/ - │ └── log/ - │ └── ... snakemake log files ... - ├── config/ - │ └── ... other configs ... - ├── inputs/ - │ └── ... input files ... - ├── outputs/ - │ └── ... output files ... +After running the SPRAS command two more folders are added to SPRAS .snakemake/log/ ---------------- - -The .snakemake/log/ directory contains records of all Snakemake jobs that were executed for the SPRAS run, including any errors encountered during those runs. - -config/ -------- - -Holds configuration files (YAML) that define which algorithms to run, what datasets to use, and which analyses to perform. - -input/ ------- +^^^^^^^^^^^^^^^ -Contains the input data files, such as interactome edge files and input nodes. This is where you can place your own datasets when running custom experiments. +The .snakemake/log/ directory contains records of all Snakemake jobs that were executed for the SPRAS run. output/ ------- -Stores all results generated by SPRAS. Subfolders are created automatically for each run, and their structure can be controlled through the configuration file. +Stores the results generated during a SPRAS workflow. -By default, the directories are named to be config/, input/, and output/. The config/, input/, and output/ folders can be placed anywhere and named anything within the SPRAS repository. Their input/ and output/ locations can be updated in the configuration file, and the configuration file itself can be set by providing its path when running the SPRAS command. -SPRAS has additional files and directories to use during runs. However, for most users, and for the purposes of this tutorial, it isn't necessary to fully understand them. +.. note:: + Output folders and files can be stored anywhere, as long as the reconstruction_dir parameter in the configuration file is set to the directory path where you want the results to be saved. + +.. note:: + SPRAS has additional files and directories to use during runs. However, for most users, and for the purposes of this tutorial, it isn't necessary to fully understand them. 2.4 Running SPRAS with More Parameter Combinations @@ -352,13 +337,14 @@ Here, the dataset pickle, PathLinker inputs, and D4TUKMX parameter set are reuse 2. Organizing outputs per parameter combination Each new dataset-algorithm-parameter combination gets its own folder (e.g egfr-pathlinker-params-7S4SLU6/ and egfr-pathlinker-params-VQL7BDZ/) -The hashes 7S4SLU6 and VQL7BDZ uniquely identifies the specific set of parameters used. 3. Reusing prepared inputs with additional parameter combinations -Since PathLinker has already been run once, SPRAS uses the cached prepared inputs (network.txt, nodetypes.txt) rather than regenerating them. -For each new parameter combination, SPRAS executes the PathLinker by launching its corresponding Docker image multiple times (once for each parameter configuration). -PathLinker then runs and produces a raw-pathway.txt file specific to each parameter hash. +Since PathLinker has already been run once, SPRAS uses the cached prepared inputs rather than regenerating them. + +For each new parameter combination, SPRAS executes the PathLinker by launching multiple Docker contatiners (once for each parameter configuration). + +PathLinker then runs and produces a raw-pathway.txt file specific to each parameter hash and places it in it's corresponding folder. 4. Parsing into standardized results diff --git a/docs/tutorial/intermediate.rst b/docs/tutorial/intermediate.rst index 5929ec1b0..223ac2dc7 100644 --- a/docs/tutorial/intermediate.rst +++ b/docs/tutorial/intermediate.rst @@ -237,7 +237,7 @@ A matching log file in logs/parameters--params-.yaml records th 5. Running the algorithm SPRAS executes each algorithm by launching its corresponding Docker image multiple times (once for each parameter configuration). -During each run, SPRAS provides the prepared input files and the corresponding parameter settings to the container. Each algorithm then runs independently within its Docker environment and produces a raw pathway output file (raw-pathway.txt), which contains the reconstructed subnetwork in the algorithm's native format. +During each run, SPRAS provides the prepared input files and the corresponding parameter settings to the container. Each algorithm then runs independently within its Docker container and produces a raw pathway output file (raw-pathway.txt), which contains the reconstructed subnetwork in the algorithm's native format. 6. Standardizing the results From 797087231e5c474f0d00eaf91f6529e1fd866e85 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 17:37:07 -0500 Subject: [PATCH 05/32] add in warning about Docker images and containers --- docs/tutorial/introduction.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/tutorial/introduction.rst b/docs/tutorial/introduction.rst index e371a11bb..4c55e6231 100644 --- a/docs/tutorial/introduction.rst +++ b/docs/tutorial/introduction.rst @@ -29,6 +29,16 @@ Required knowledge: - Ability to run command line operations and modify YAML files. - Basic biology concepts +.. note:: + This tutorial will require downloading approximately 18.3 GB of Docker images and running many Docker containers. + + SPRAS does not automatically clean up these containers or images after execution, so users will need to remove them manually if desired. + + To remove all stopped containers run: docker container prune + + To remove unused Docker images: docker image prune + + ############### SPRAS Overview ############### From d0f503a76d8a4b44fc927bb8f5a6b6701ae66ddb Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 17:38:04 -0500 Subject: [PATCH 06/32] add in one more command --- docs/tutorial/introduction.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/tutorial/introduction.rst b/docs/tutorial/introduction.rst index 4c55e6231..cfc74b473 100644 --- a/docs/tutorial/introduction.rst +++ b/docs/tutorial/introduction.rst @@ -34,6 +34,8 @@ Required knowledge: SPRAS does not automatically clean up these containers or images after execution, so users will need to remove them manually if desired. + To stop all running containers: docker stop $(docker ps -q) + To remove all stopped containers run: docker container prune To remove unused Docker images: docker image prune From 52aa0555c768373fce927821ac56916a962572f4 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 17:44:25 -0500 Subject: [PATCH 07/32] add in one more options to command --- docs/tutorial/introduction.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/introduction.rst b/docs/tutorial/introduction.rst index cfc74b473..3ff4673fb 100644 --- a/docs/tutorial/introduction.rst +++ b/docs/tutorial/introduction.rst @@ -34,7 +34,7 @@ Required knowledge: SPRAS does not automatically clean up these containers or images after execution, so users will need to remove them manually if desired. - To stop all running containers: docker stop $(docker ps -q) + To stop all running containers: docker stop $(docker ps -a -q) To remove all stopped containers run: docker container prune From 10a65f826a7848c36077380bd6c1e8ef73388552 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 18:07:35 -0500 Subject: [PATCH 08/32] updated beginner's format and wording more --- docs/tutorial/beginner.rst | 79 +++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/docs/tutorial/beginner.rst b/docs/tutorial/beginner.rst index aa5c923ae..8717ade7a 100644 --- a/docs/tutorial/beginner.rst +++ b/docs/tutorial/beginner.rst @@ -9,7 +9,7 @@ You will learn how to: - Set up the SPRAS software environment - Explore the folder structure and understand how inputs, configurations, and outputs are organized - Configure and run a pathway reconstruction algorithm on a provided dataset -- Enable post-analysis steps to generate post analysis information (summary statistics and Cytoscape visualizations) +- Enable post-analysis steps to generate post analysis information Step 0: Clone the SPRAS repository, set up the environment, and run Docker @@ -111,7 +111,7 @@ You can use the provided example datasets or add your own for custom experiments Input files can be stored anywhere as long as their paths are correctly referenced in the configuration file (explained later in this tutorial). 1.2 Overview of the major sections of a configuration file: --------------------------------------------------------- +------------------------------------------------------------ Algorithms ^^^^^^^^^^^ @@ -165,7 +165,7 @@ The dataset must include the following types of keys and files: - data_dir: The file path of the directory where the input dataset files are located Reconstruction settings -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: yaml @@ -177,7 +177,7 @@ The reconstruction_settings section controls where outputs are stored. Set reconstruction_dir to the directory path where you want results saved. SPRAS will automatically create this folder if it doesn't exist. Analysis -^^^^^^^^^^^ +^^^^^^^^^ .. code-block:: yaml @@ -216,7 +216,7 @@ From the root directory spras/, run the command below from the command line: This command starts the workflow manager that automates all steps defined by SPRAS. It tells Snakemake to use one CPU core and to load settings from the config/beginner.yaml file. -What Happens When You Run This Command +What happens when you run this command ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SPRAS will execute quickly from your perspective; however, several automated steps (handled by Snakemake and Docker) occur behind the scenes. @@ -307,7 +307,7 @@ Stores the results generated during a SPRAS workflow. SPRAS has additional files and directories to use during runs. However, for most users, and for the purposes of this tutorial, it isn't necessary to fully understand them. -2.4 Running SPRAS with More Parameter Combinations +2.4 Running SPRAS with more parameter combinations --------------------------------------------------- In the beginner.yaml configuration file, uncomment the run2 section under pathlinker so it looks like: @@ -325,32 +325,31 @@ After saving the changes, rerun with: snakemake --cores 1 --configfile config/beginner.yaml -What Happens When You Run This Command +What happens when you run this command ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Snakemake loads the configuration file -Snakemake reads beginner.yaml to determine which datasets, algorithms, parameters, and post-analyses to run. +Snakemake again reads beginner.yaml to determine which datasets, algorithms, parameters, and post-analyses to run. + It reuses cached results to skip completed steps, rerunning only those that are new or outdated. -Here, the dataset pickle, PathLinker inputs, and D4TUKMX parameter set are reused instead of rerun. +Here, the inputs and D4TUKMX parameter are reused. 2. Organizing outputs per parameter combination -Each new dataset-algorithm-parameter combination gets its own folder (e.g egfr-pathlinker-params-7S4SLU6/ and egfr-pathlinker-params-VQL7BDZ/) +Each new dataset-algorithm-parameter combination gets its own folder (egfr-pathlinker-params-7S4SLU6/ and egfr-pathlinker-params-VQL7BDZ/) 3. Reusing prepared inputs with additional parameter combinations -Since PathLinker has already been run once, SPRAS uses the cached prepared inputs rather than regenerating them. - -For each new parameter combination, SPRAS executes the PathLinker by launching multiple Docker contatiners (once for each parameter configuration). +For each new parameter combination and its corresponding cached prepared inputs, SPRAS executes PathLinker by launching multiple Docker contatiners (once for each parameter configuration). -PathLinker then runs and produces a raw-pathway.txt file specific to each parameter hash and places it in it's corresponding folder. +PathLinker then runs and produces a raw-pathway.txt file specific to each parameter and places it in it's corresponding folder. 4. Parsing into standardized results -SPRAS parses each new raw-pathway.txt file into a standardized SPRAS format (pathway.txt). +SPRAS parses each new raw-pathway.txt file into a standardized SPRAS format (pathway.txt) and places it in it's corresponding folder. -What Your Directory Structure Should Like After This Run: +What your directory structure should like after this run: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text @@ -387,10 +386,9 @@ What Your Directory Structure Should Like After This Run: 2.5 Reviewing the pathway.txt Files -------------------------------------------- +------------------------------------ -Each algorithm and parameter combination produces a corresponding pathway.txt file. -These files contain the reconstructed subnetworks and can be used at face value, or for further post analysis. +Each pathway.txt file contains the standardized reconstructed subnetworks and can be used at face value, or for further post analysis. 1. Locate the files @@ -424,13 +422,15 @@ For example, the file egfr-pathlinker-params-7S4SLU6/pathway.txt contains the fo K7PPA8_HUMAN MDM4_HUMAN 9 D MDM4_HUMAN MDM2_HUMAN 9 D -The pathway.txt files serve as the foundation for further analysis, allowing you to explore and interpret the reconstructed networks in greater detail. -In this case you can visulize them in cytoscape or compare their statistics to better understand these outputs. +Step 3: Running Post-Analyses +============================== + +3.1 Adding post-analyses to the beginner configuration +------------------------------------------------------ +To enable downstream analyses, update the analysis section in your configuration file by setting both summary and cytoscape to true. -Step 3: Running Post-Analyses within SPRAS -========================================== -To enable downstream analyses, update the analysis section in your configuration file by setting both summary and cytoscape to true. Your analysis section in the configuration file should look like this: +Your analysis section in the configuration file should look like this: .. code-block:: yaml @@ -440,8 +440,9 @@ To enable downstream analyses, update the analysis section in your configuration cytoscape: include: true -summary generates graph topological summary statistics for each algorithm's parameter combination output, generating a summary file for all reconstructed subnetworks for each dataset. -This post analysis will report these statistics for each pathway: +summary generates graph topological summary statistics for each algorithm's parameter combination output, generating a summary file for all reconstructed subnetworks for a given dataset. + +This will report these statistics for each pathway: - Number of nodes - Number of edges @@ -452,7 +453,8 @@ This post analysis will report these statistics for each pathway: - Maximum diameter - Average path length -cytoscape creates a Cytoscape session file (.cys) containing all reconstructed subnetworks for each dataset, making it easy to upload and visualize them directly in Cytoscape. +cytoscape creates a Cytoscape session file (.cys) that includes all reconstructed subnetworks for a given dataset, eliminating the need to manually create individual graphs. +This makes it easy to upload and visualize all the results directly within Cytoscape. With this update, the beginner.yaml configuration file is set up for SPRAS to run two post-analyses on the outputs generated by a single algorithm that was executed with multiple parameter settings on one dataset. @@ -463,25 +465,28 @@ After saving the changes, rerun with: snakemake --cores 1 --configfile config/beginner.yaml -What Happens When You Run This Command +What happens when you run this command ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Reusing cached results Snakemake reads the options set in beginner.yaml and checks for any requested post-analysis steps. + It reuses cached results; in this case, the pathway.txt files generated from the previously executed PathLinker parameter combinations for the egfr dataset. 2. Running the summary analysis SPRAS aggregates the pathway.txt files from all selected parameter combinations into a single summary table. + The results are saved in egfr-pathway-summary.txt. 3. Running the Cytoscape analysis All pathway.txt files from the chosen parameter combinations are collected and passed into the Cytoscape Docker image. + A Cytoscape session file is then generated, containing visualizations for each pathway and saved as egfr-cytoscape.cys. -What Your Directory Structure Should Like After This Run: -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +What your directory structure should like after this run: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text spras/ @@ -517,11 +522,11 @@ What Your Directory Structure Should Like After This Run: │ └── egfr-cytoscape.cys │ └── egfr-pathway-summary.txt -Step 3.1: Reviewing the Outputs ------------------------------------ +3.1 Reviewing the outputs +-------------------------- -Reviewing Summary Files -^^^^^^^^^^^^^^^^^^^^^^^^ +Reviewing the summary file +^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Open the summary statistics file In your file explorer, go to spras/output/beginner/egfr-pathway-summary.txt and open it locally. @@ -538,9 +543,13 @@ In your file explorer, go to spras/output/beginner/egfr-pathway-summary.txt and This file summarizes the graph topological statistics for each output pathway.txt file for a given dataset, along with the parameter combinations that produced them, allowing you to interpret and compare algorithm outputs side by side in a compact format. -Reviewing Outputs in Cytoscape +Reviewing outputs in Cytoscape ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. note:: + Cytoscape is an open-source software platform for visualizing networks. + It allows you to explore networks interactively, apply layouts and styles, and integrate additional data for deeper analysis. + 1. Open Cytoscape Launch the Cytoscape application on your computer. From 0c2bbe38b44ca774b87604f1d786a708d772e320 Mon Sep 17 00:00:00 2001 From: ntalluri Date: Tue, 14 Oct 2025 18:26:27 -0500 Subject: [PATCH 09/32] added dockerhub link to the algortihm images and add spras overview image --- docs/_static/images/spras-overview.png | Bin 0 -> 124312 bytes docs/tutorial/beginner.rst | 2 +- docs/tutorial/introduction.rst | 10 ++++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 docs/_static/images/spras-overview.png diff --git a/docs/_static/images/spras-overview.png b/docs/_static/images/spras-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..43d6082f8a12b2b497fbee480b53c6e240dea4f5 GIT binary patch literal 124312 zcmd>mWl&t(7G^i@?wUXX!68_JHlAP!u7Tk0mY_|71`iMd1ZXTsaCdiY+}+*X=5XJ; zukO65shXN!Q#C*7K7G#K`z-m^x4uR2dqo*+3n8R zU#qP`hrNAC1TM>y0x1B$TGg0EfHh*7FjtE!odJ?TLIV=a2XGpC0=aWKM>yf&Q zODqyW3C|?(A-&p2aO0A$|GH3(6(p=~G9qPiC3=?Tp72_Ymt>81q-UFjXYjoA`sA$i zBN1yMuaANtwVGFs-l$f+d(7}OReoM^Y=s;{oL^=fC|;h==Ixkus5S^vzR7VH zBhL3v{+SM9KkDjiOTHWY6NAZ{I~A`^4=31rj@3t!&9ve*Mis4c^c1la*k8+W zfM3R2Pcs0o^*!)f)y2RRr?&~?Et@ikm_~S|M#`6GH*NVk0W@Uc@=Mx=8hx z@#PY$sI|dY35x%FwP>)1_e}Z|ig9#yM>XpK)!kZgDMFvW>zE88;nS)iP}%7;Qu&uYv9J|LE+f$bKnNwspZH3Db-ZK z0Y5Zz>*^*&E1C!cnNK%Cjo>^?xsrdlxg?) z-(LC>1=h)8V`*;oW3$G^|NLh9b2K`vyWMi@`Fq`Qffr(;DyE7trfUbsYrQ@vMwk}Y zjhiXcw?Q`e&-Y)~7y+j$(l|GK=`)0iaGs`NE2BH5fveAddOOG^A@%Qv@&|5aOwBS4 zvrZ-a?W`RjXWX-d9uBK>C$T$!(wpNvJ6xq%A@JIGMa z?c)0H#+h=_q6-FrisE=!Xc<2Q9pPNex=a#_5)R0OI65J3)=}l1%&ZraKVj)7pa2it zR7xhHN0}0*hk-X+Q&E4-^805Yy$uQZMG8S>xU`;Hfx2f%RXJ2SnA5#O4H=I5;*945 zx#dz)9|BW!BE*K6;sJhpXBZAkxnz>>qlFQ2r(fJ0G=KIM>efiOv5Wu5UNHNIF&_8g ztE(iqhg<%Qq?DetFf$I~@LB_Ue_0w~Ip%FPGJs9%H7#lIe#+6LQ<1veu~~ps>4o5g z3+u$^6nYM1-cN-M=B7ctzWE9w7JY~bJ{QEAb!!}=M^OHS+(h7o!kYM(DM21kNl^Sbs+m-b-E+jEQ@y+i3RhTm%c;I_U^o za@Xr*{V-jjFu)z6+s9U)VJ*~Y#0e4WAy`8&2J}-Dkl*9^R$dfO^LCTE?r>q=cT zwa=wu#L>?NL{HykM?Da>Dzb6e)};IR_pK)=hdeF2m4!04o83)Erbc)m&1O_nzR9|N zBX0A{liw*|3^xxu)C#`q!+P0RW_Og&MF|&Fb4taA{+4#CiRN62HkA}eQw=8^*;+_& zUaK)APH>d(ghJv&1o$)}zu{oG_T-ldx4I^qR+anyg{V)+mvn}^cG-Si9_){SMDx#4 z3hAIY@6dB6VC>gWkPN>^uL}$0&7|^Ee1z}ztsvFC=^Or2`!83M6S->b=kCY{D_nH6 zAwquY?x$NFDh=1txOsO0x6LY0eJZd&sD9AS?ZLq7h*+mbkT#Ygmm9?6{$<~Q!=N>5 zAXzuv6kBqcU1}QD79WDh0}h(>vpD%}7#(LtYJ>~ZX1q|Sdy~>!uY^>I9Wv3^+0c^T zyECRQ~mYF27WMqOOq{AhQm#pRE(3HbSvb@P&RphL?d+HzmBm~k~S zviWS5fsEJn8Y9aDd%Gz@h=cOd=?FQ^R9mWneV;2wI1@|z?=H88bd~{|O8SCL!~ua{ z54R7L=4I16g-bsWH?YE)fcNem`-nLJ3}L6;&l&lLD9WiSw<9gs^d5KHq%lY1LN$LY z$9rEd7ePl;SG$##c`SwbPj`jLc9EOrAid0xvrBdu?}0Z z!&{{%`P7-!&&?hqvh=OaSPa1P4O5iDduIrrJ4u4*!iepj>fZCb}8xW8_LpFn<6n2ej zS$Z}D@{_KkyDqonr#mGnSBM{inMtqfaVZewr#7Hf>Co4n$kip5Lm0{^5ma3WexUqb zHw@HGn~5bel}rPu2%StQCHprb02%4WVZMlD)o{<3vxdi*(t0o3pt%FFZ1ZVLI(~A{?zso4QU;t3>V1<`xiel!|7~kFozO5` z`qR=$ljseT9#1ZH3QhIKCQf<%+7~q^vFIQfrXOmrp!0k6AEKNP0=kfqHx1HJS9UVC zR{Sf$v(*TvWuH}|Hup>Aeg^4?JUd30v&IN4Yl-{#9{`LDpB5rDVz)B64>mOr&9tm@ zq^>6_np6PYSt9UUq8l_iTehlXfbyrRq@w~SAJ*L5U$1aOWHfs|K`We!!TpB<3%N(8 z{uso}8aaK4pbW81^D!9yofa0DC-~W8Rbhe!+0jp>6We$h5Ztwp8yBvc-+x7x zvS&PY?T`!L6{Il%ZuF751O})#FBtGB*&{kAiXbyq%+{tUN6C)Zoi*OAWYZy+gkNST zl6f4W4j6VYo>MMg8Z;Cp@eZk| zo4Hv))Hzo8=cHTL0k7pa=q;l1!^PN17&8w9v6&bdY>qN(BTz=rE}tMmvsJ~|yg{a90+)-*0Rqi~fl_Q)cO8w)vgY7IgCMCkQ}Y=O#2waie^O+7Q?{cMqJ9(+ zBn^S)?7C>t2t_V__aefg+1t>JBtahv#pWs(KI@RdxUq0qkXTHKa9~S=iQeO@(H-Xa z_1{D&1BgbuEen*(F??*kDPq9A-Jv9N+MC}HVa5EDDh_F6=c7-Ws8f_EMQE{{HEJpeh)<3v04v(ukGNzpQ?vw>#ZV~o;JnEx~nvC^!@5XpN&2C2_e7Bt=>r;YgORB-F4aK5Fe$javtSq$RffSMr>#h7}=` z-|WOupI?U#0#Q5(`Lx7Y zJ%g{|4}y86;b89g$|znEf_K^W*-=j)?(l3@ehA}y`^9||?=aIeIOz$Zcpq-VT3y-p zk05NDucyVe5u(a$+3%4ZYdXcv@2#RWK0NSU+_ktW&%i4}AYp33>c;~c*`YVFJjmuH z2)p70=i*nRBaVcGCkk6JD{%TVDGf|&xuZSha!U3$VvH5e>^jY`ZpN?)!F=qYE7UgH zQXtga9LIV8*;7v^n#_JEY5+35#r0X7NpGwg85nM@wdUGbadzk=5t0yQHEB5_4ox;s z)&Fh{54s0A`|Sx=s4#*zzxwVIv#4iJ!1l-M-2uSh@@>A}VfAc^h^Vc0%kMSb47u?TJ(aX-f zSEPfQy@(tm7_X)Q+6?xMFnsjFoEyLhXP^8)_CVW!angfR?{7bf-cseuD z?S7V>tNUxC+F38xFf#sMgClrg9uH|k!4pW69*p}vS)krikh!&LmMyh?96>Av27>GS z#^hrCwcXgKXt2OGhkk?5faSzjo#Lm~`xvu8u2ua)NplKD2I?67f)BSq`kL$suJHsX zuq6gb0OcUbKi(Qm#&A$Fy>&*spq@o5$w!*s!{g(FM=$W*y=_@eCdx=?E!WS~azgI< znNITfbzUDhOs-TrT!?vs3KZhn`rc2mX*aq!RBRN?`Tg8N=_q#-ta7N#a-G?q(nhrq zOO2{^Zmn>c5$4-FE19eI$(iF*4Qcb=sW?m+BG-GX2V!GJSlMyzCKxJ(kc12Fxl(`Z z--?S;-)Mln>`6nhUhLZic}j~GzdIy63t^TK{=;vxP-NBEN>iwd=*TNjI9q~wXOQ{B z+I~56avj#%Lj98zlJ4TlddNNDU#xXe)IDkMOptQrN^S(;CuhXZ*hLq*w_%JOpi{nx zeyoh2m&_L2q&ju#3JfhKYyL=|*lr|R=H(D&pTdyn3;&>$6@;7gy<*j(ojnBM{oZh3Y5g=*`p8mv#2st%y%{=_>g6aPWM-;I(WN ztH>}NBb&R@KbZ_FjU zlKYHpUCDVwnj@Kvvp-dtnEgc2yW!#(!TkLzItRudJ887-hX2X-h;Wsd3heS0x167D z%K3(^g8;2_pQWeTyp6mwOB~m0(QjpC>Y}Da@uQf~>D^N-Z5P31TBqgF_|U%4khl>J zJ;na2$jI;RO`^ut^`&?i&Gu*`NpFo@&rY@KEdt%_SGz|~Pch?^&gI=rC70heITz%i zu&WAIe-4y$zl;7_kJ*HF(?+NAk{%2qcq{-#vjzCl~V_z&?R#_<~fjG z&QXmlIJBXkWY-up+8oSr+8F#$)s`S9l1M|81cJq|GlbpvcD1dxshF|xA3%KIsJlpB zq8xf1gBc@c7dOZ|?8x zdvnwyecP{c!cRlZx|FRHtp6qT@Kdn{?<;7?XBCmqb39MKTE4Vvpj|pBRLM+y+@@R` zD69aycJ%aN?bla=Gt5KZPEr1`_FJQ*F4cN zHEDy>CKS@|*QVRAwZJ!2oPYIZtu%)yJ$8KTL^C}-!`eho zg}b!Y9Xkc0Y|f$A$ou5w{&4wD1g$8^el+8|WZlNklvP*>t625MU!x;US_u_F26l7R zHe^4bR@e!{!$+AbHpj;!z!!VRy zuxDl0uMMXJ-L{!!fMy+xo=hL=vehHqr-#3bAPSp|?;nbw&)s9oY+ilH7PY(9n!9$9 zwKZ4A*`G~US!0fsJKbac4<|&&s^P zs)6LjATNU0n7X;%iTOR)-oRbr9Ik&G1K2Yv9OswfAd+xr@+;&~Z<3-5JUDsqCbMjC zfL}2Sq{eN3?(303Z5*zw&17bZZffD)?C0H%(NN46_u^1fqro^V2o*^o;Se{5J95BM zmC&cl7wlJ|Gx$C{W!{}4w{06huu#INzPxR5FyDH9NP9MKB)H)D$31XiI*glAc;32i z(8h;VEmw7K%I|i8S7*R(x-Ms!HQHg=pRA$9t@}S5oiqZ^tW>?WDB*NZU4`p; zhBb6Q+g;@4-S@jx_j}FEuo&;qQ=y%H(n3=(`II+^I-q0gmVOy9E5~2;-Y4gd9;5*+ z01`BmNQ@|DF+i|FV7anh;SCoQ%WV0{7!dWb3~e;p&{hN#w%?v46h<)QUz-Q2Om4;QGF4v6M!kiHxGZz_o$NSv z**+;vh_pX=Qf`P*G4(#C3`@1$?d5gp0tZqeG^`!9w_i~5MBci>L-JX2+x$mVI$G$! z+ri~xvq{?tFyG`ZExFmxhgdp#f3+xKCl$(3% zewdP=ZVoW_%03W4G~fx9YK6bFCxfYacYpa?Cpcf{Irg$Y6L6PSEFIsA)HzQh~65!!~D%k8Kod9HZ>L+ z@!B__33a~{{uYx^q*8_ zHf#QcX|A1hHk@?GpAUg|V>)w9mOzl>D;VsXXaj)eN87t_FVK4!<>m-C=kER2jTqpq zc1{wtbF=HMw+=q3lMq{aA`}o@%0oG1xErj}(%o|f;vvliQm}3GNtEE^+9Fp#_4QB2 zcW{AaCx^?*HOHDAz8sfUGA{?)}-kK%m7+7M8V z)9;143p}*Tjy=KL{K3F(DQVOSkEVG~JqnSmATl-)5MIIr;;`E4=5> zQ~bB4F~`^u&D3b0J|wV|{jW`;rBr4c%CT=gC1Ce7OX?RDc}O<;;k}mqGsLcV6t9Tm zfA(1rgnArV{@9n-eq%lCEqa&DmU7p}im(~f7TwZ0)YQgrx3KgoT$T)?V>_O8qMWnA zu}ON-HARTWXr#gblqtvMJJswLON75sB}u-rA=tX3%FqCYv2IlV4x7hrtuCImM1O6xUKFuJHZ9PoUaDNct7WYN(e-Yf+pdviUCf9BOpk-aBnmn|X>= z=rR?;X+7lKh_`_#qr|C!D#iHm0mf#5E&jiD)278O1og_paj%zK2e;QA#(B)EeBE(; z(u!evJ9Yd|pR2uUL_p9-C{oNaLlE|7nFBrq>#^}tseji^kPQkL4(=?t4L}ehlV&@c>@s+dAo##U7=ha znTksrv52_cq>xf%?w0c8!l>HgpcrQ2Iv6l1hXxb&3}5g$T%7fnt9lzrvZPmTA(+_q z9Vn1I0QaxqwwTNw*^0jwS^XuQHeG_r`-HR;|AN?(vGTTVOko=J@!h=k@wu}pm5pV2 zI}&#KvY*ahyx8;n?d1#1^h)PB}upP-}U7m zGLUwT*=93yKfr@ympkc?XsW^!;y8kOxvcsY#p?*_{N2%0qHXHHB_0td`zP1|7gX3t zr31x|n)Mc);SvqEuZ3Q`;)_zKc|iq9R|KVOW-{^>>~|p}uopSZmQBc!9rEZy&qIQc zmof2Qv+6PaGAnVYWTZXxKHV%fgS_zYdeSTP({+YMCZctCA}IzBQaG~@E@;2+`$P0+ zs#Rlf>fH&7`S{YA;Q8|ug-+MZ43ovuBJtgalekkBYqELX=w9ydywtUG_H5<}Y@)|j z@CiS-jEdFE=rz?3s?p`Z_1oCF)w;hsKl#gG^RJA|HrIbflScn&=V;t!=$U5tsB+wh zl@s0T)t?HU4cm>%CHx`v$<@+)$DQ@9L;PE>GQav@iteEW+_e@*x7LC16UIW7%gkPo z=o{yu>wFxKI=_|XC3MDb2yl|A^rE^ahZmCDuNMw~0)ZKb*Kt>4HBOI0fSG85asAJ}v{iDU%Q z)|WM@v?wI4K*kFDa;+v=BKTDYA;U;?1;yxOUc&lL1QSsw{Z$RMm8PTMU5m-ukEE7l zIp7%NTbG!`fCe_e-N%uL@&xKs+P!u;H(nBa1@wF)_$iI{veAPC1sq#afQH*ah-nHg zEw`kA#iVPZ%gsQe=j7^FS{<*4!MwM$KIc(fAg^b;i~1{pkA3j6`9Jz@<@L`!7!3a=_x;U)X`QVq-ey`R`$bM+V)VBYEJiO0V1`(@y2pA zqp_$PU_FkWEd-Br7>vLN^=sX9)3nKADSDhHY|6LcnZg1A*yMsPszC$#n&Y1Hq5wlJ z^-DnHa|aU7H|kf0v-Z21#;(A41oe$ekN}oLl9NZPCV)Jq(|iHkcivbM|Mkl2X9fu$*w6&4wkh`jI_(9I4Gw z;2*VQE+pdP3XiL&AvzaEVtGW~G#D5Y91cm8N!+Q`Rjb_BajZXtAnBrdzSs9cJat)z z=H{cx>Ar%vH>s`QD2Jx08(bOy57*gzYVE}YPq#qkbuOs8IqNjJ*4vmGT6ikjuNH?w zLi+44|FgCy~|K}SHV7br%eykaX}l#MZ{ zwSOb-iQ~Y1BC(^U|L2=BAi5Y@LxF#Npn%3qyI8sH-BE%74te;Da{MGrq{VS%KKTDy($&i?5`fX!`DOIK(nguQipfm6Cj}8v~_$D(J#CgSjI;uYeyXoXahK|#nN%H zZn>qPCp4W1#NL-fsM%of3y&AZqL}vcjmS(@QFyK{=fmW0bPvi%Qi>Uecp4g%?!o|Z zL2H=keWbrZ%Ga~cIqulohKQ7P8nkmw`N&q7)R^N}M`W3Mxg~2o>e=solbExk_iELl}ov3!K8J5`L#6K{>+e$`OZzL<)}KdJ|RHhv5mxjQdO z19md{iSr3jQKnC9*~b(i_uI?qutcRAqNl9v#V!b9bRk!7?ETPS9D4l-KTC8QaCo>U zaj?Q9&lxP|;S#NhnGpe!z8s&mmeTB4sCE6r+%JVZnxDQP#QLUqtQ=QhdgK=L5ukU! zd>{P1lf%O(E&3_j?&yx)}q_qz6#qD^$s zaauUHEit?eK+oWvU2fMm@14Im_7=zm)K~H{LcV4dqeHESUJh@9_|9)L|6J^gqJ>Nx zbw8cFwLuNq6Da=?&5lC zqAkw=yt1&x$il($t8r}5QEytj-tS81jNombGS84$eQt^@@7o9SCpvl(jc^&n{$Gv+ z?g5lm7~H4{pTlEY0bR%ZQzfOh-5}Oi>uovE>`#^S_kZ|oNC&2p%<9QADDlW25wS{; zJJh1E$^Kzi_v0_;oN^P_0nn?5psG#6ECOZap-BBtyA^lyi*kicoO%HNbya&B`P^Fd za+OLODK?ESIYi_nt`TO3c8-OHte=*jF=BCv&Lc`fvFEv%?LFW;u+`NhJ4*no&|O&R z-=(GsRzFVY!P=E}n*64#FA&5A@bR>@FNBsdQbo;-ic{!UiX?uJ3ACO=1vdJu%cCg; zJex!%Pn9V#TTyDa@m3n^MJQ zMIrXhoYX*p`(SOeg~nGJk`MrjjnYDDZ!1*jIhMOfEyS#iYO}Fp2i11MR$Z>tnE;CN z;;WccDe|=2J@Ot+*x@iaDjblV_!sU}XrmkHy+U;lwtR{}#x6IPD(5key3bzkErl;K zhX8tPrTT+GDoELUc_a*cp9;PEwRx{JK+fg-x#);Zc|bG;b(K&iFC%Z_Ce(3YO?p@} zVw{uT?p7Jm$_feri5LUHoM3D1Q9t^U0QR7sZWaSN<~YT9x8dt=xhJ6&Wa;?Rx?dJu%E|I5zk zpF7(m?KDXc%eTA|y@3W=J*sVC!_Vy?+ z_K)h1-`qggH;IVrMV)GXgjSj^j2j0wlt%Pc9}NzeVIZjSr&)BqRKfYR6`+1&l`Ye) zM37o%Pw56W62}5-X0bTc3<~Cl4NhtO8NsZv8SBwm@ zd<6ApNj`3i2-9A^uTRVuc!zp-HS|rb92ahM4LVusdo|@!!9eC0i;A_1D=7r<0K!tz{p#Pl;EuJS?%(x6hV_zlq}FC@ zq~ktGwCKT3u_8fFVX%h9b2CvEhD?lLtKeXq7W%9R&lS-n@+6t0&UrG36V>Whh2?Rl ziBK+dlaA|~4~|Z@Rx2KM;s5q_2z>-ONWbhw9svl5*TC>8h{9R3!1Hy3J?aT2*nKhO z?tO65j)27vMFhBL#WhVC8$y-hoWPR+;qf2NPf@`7UL*2kPY^b38{L%NFc{V0!N|WK zXE96JjugA(C}&ExHz$4Dbuj#J1m>|Nc(3;LV!O1k7N<7tdow*M2B0yhxBWxhu&gLS zmd^4D@{W@>q;U62(e@nn6wo}JzWldp3-YaSG~`4ZY2|rUlsk>SS$c@2OXjW?)moV; zwJJ;2@F91#=3fZ^5fQ;j@O(nO+ELFzy1pRyp1$Bqfz<;sm}ZiJMF`MHQ7uq@?E{^6 zaz@pGg&A={y{lchD3wUSWy7w-E3ZYocQ;M-e_NA3MQ&KA!mo-H?L~W!@{R=w)c@PI z5*lcDWMsi2Xpg!;zX?eY zEQ6YoG|PWReJrTs9`R@h@qZZt5>Trvxb$N&O*c?!3@K7(YWFUhRw?VK-Rxrfm-CcH ziYOpJj2)E#E>gbL)QN!w>knq-W$J4Xj_%n!DmF1P(q`94bC`%HF4H3CsLEacHp~q6 z`5u(dErhHI1RSKwn{u0(@O-QBVGhw>69RDS+sjr4+SA<`Y&QOytU9<6n(HIT#D{p`FCk6*O6IYmo4c<6|rV2Fpd!}6x8I#@o@G8dEN z#gN8Q2v`p5n`3e{x*k*ks=#eY`ORREk{TVLm!Z9#0CC!WmB!Ytw5#rN)EkY*`+@uh z8N=shgg={*7nfovrE%V$99b#?X#PxolLm?f3_<`Z4r<_zl7p_xE!B!8Kx^iefNnVT zPa67c@kWcxJDT8n-`|3+HW72>4uNczB#J7{dgA4~YP_42a&24*0v<0T$hlm}TtkXX zt*N)0ub#-ChP?j5)^3Bl53~Pij|qm7uq~PW^SEsco=gO6&uSQYqtg_W8G?irElvVV z1!|6h-S0nTDx8ZC{XM4e+;WS`yqa9tGyR&wBXtm%3*5Cz`QmWxSGu ztKUl=Np87OAP8v82zkV%Qc3O3WJZE;<7#N}s&D}F5o%Ia zO5)rC%;s5RBLg(q!$0M;8KdO}{(IuZ92(FcQ*o!7yT1J#o5yKke8BUA5%_08c9OcD zm7b#LC+qC-Z7GS-Ymk@xl$o^FNl$`>orRfao))LyX8i5&BX{)Au^K6``F^o%qUdN3 zFaolW6X%_ycUtT&X4GGI!Rth6vEE>2FA=OI;6z`)v9tk9wa}Wc^QsS86=+R=s1IoL zij?<`2gVnSUrv<)VywT09P$mp<}asW{!iw29!HA)j|P4IU%L?Cb+F2lh+cLXN1w`v zCH+@B1kfZuPHZtG7X95@`@fi-LW2RbRPndp{y6~kI0n}K_c^m6m`5Kqza^cB^C?k0 zig_H~!e5D_@jiR&LrXIHw~YZ^Ir13-;m5(P!OJnmJ1@=mfBQiQXxf4@nG7d0-2!2F$ga!4CM?BIK`uFFtbM$H1+6fZLA%`4t!nvv~=)0C0yG zV6VS{H35TT(~mw2EQblWSYGF^;j*%BK&L3r(5MVt9AEJ`3InX3>v87HI}^D0rOm%a zydH@sVAHYyPBNZ;%#LUv4(=%+p==uPL*{P+)=u7?gXIFZ^FDEH08Tom;0s zMA|#mLmTrxrFj50Uh9$C`<}Z!V%pn4XrB%#c(o5y=Q=D-Al9YcdBj}&F7fQa2 zH>{`DB|S9b?b<2x+W(xmg7)>vJ0v?y*Lz&RQzZg%Y1s!ZBX)MDN-@4-)SIm`{lkLeB40z? zDsd*sK3%t*36f9P)=DMoI6iThYHpj0vT)cac|44A_UxHy=vbgLaFRQoD%ZBJ*b`_z zh_jPGrR{9)ls%nES#h7c6d%j*&-71IB_{3U4-UXcW$5?9LXHBkjEszfbgJaP{Y|cm3Kl5fNA>nqip$OX z{bcA;V(T;o%^adFPLbezt3af%;AA^9Y$0F;vR4s+dK`HfGEBM!wa9ROf77B&GdB1~ z{n}Oa=4qwPfG$#{%GG_^sAy5w*CXPiYldTxxq*|-nMzs8M0ZWwH8f=pJC+{BOM0;Q zbw1WR>HGTUvlngtr5d(O5x>msHo2K4)Az6v>35$tl$_36A!d3M0%JKJ-VdRj`p8uy zmdR#Xj^&QUFsZbWPnDFGN;IYT+%pYuYKuPHI<*F1_xJZdZj?>0j?C7-Jj3`%3#K0K0k@B+76XWHnJ-^q>9h>hp>jhfD1>^c=*e|b z{m>TS2Riat$A@AObC1cXUjF?rMS-vVzGR6Nn{h0RCNp7db5LeVsUZv>P zzVeWp9LnemwW_3!NZG1q=R}1R;%?V2y^5q}OQYd&ySPV$*dONfLax*U*7+_|1X5fC zU#t;K3UKf6O(XCljtH-CzwZt|EH(PoQcV2fe(~w)=Kfvarke4#+Q+hk;E?Qo;p}nv~%0C*eZQ=2UDh?4Y`knc&ftC9rU41o#$?nKOLWWM7 zsIAuyUe;e{>4u@n^TF}0{9E8@k;TzWO1FZA2HKyV-N%u(%?*C7!A%D@TNAb%B9Tx! zzsjZ>Ken?~sQ0tf6v&_!I(SGNJ*K-%b1q-ezUW&()lPyr8@3OZ|9sx3^*Y#Fb z8rLU;O)6#qNMi24-_PwaHL3T&(7eqQ9q+FB1_`Z$B83rxcLPSC0g~I%Jrev-4R5nG z@W~bn|G^ji=H{ePZ(x>ZjnXapWdX{n!|W;LQobNK>tx~*09KsNJi4&3UnRFW^`~+lIa8OSlI;s3 z&x`q^%lKwWi5g90AU@v#Q4Z1hU1C$XWuyNMfudfO!~V9-+7cnPs<+L=C5#(*3gU%> zDD=0W)m?1?cGF#J`OHO;1dyyV1JOd#(m3f~UKG}}vp$L0%dA>KJkjN)x7|o!dUZ}SR_{#D!f-8qfWMCj_ zgfR%aXn*Vv=?*s`qB$*XN{LDDvK4T^tZZ!5R8*|2tPOYPIvI>BSXTA=HT9yD)3NfOlvWzo@uuFmf6*MMwvc6K%Zn{qr?jpf%1tMR<%uozB) z}Pr4A$sa%hzxMYVv? z_|0CBQBd?WEccnJJ%9GBD5f)lmiCoBD9a*_{eyt(?ko3Gb4tp@(b3TjH6gFukuAW1 zML!>}&ewaSv*{udGRRLhc-?$O#q~3I2cXK&Rg&Q8{32i!Ucz;#Dj3W07*vU%DC}Rk*!3IwM)vmhwCrVNG2X=>ID2{uQ7VRqhOP$7 zhsHK*2>F*Izd(J9iIBqn0Z{VL`rLB8GXP=7vS{odG(L3v1{ctXc%qGpu@_-$!In1E z$cU(^vA?hDj|>ktd3^D#hjx`)j)^Yjx)I)$V z(o=W!He6p{FS97dtgadxkc|knPP4b@(7wr6*T{bV)J*XDMhITSnP<1q@FqpT#Zps~ ztk&N!0SF5!tW@cu3=$pD!25`m{PdahnUr#s|us?;KJLBH|ZpU3d zd8u=@&G(bv%D+tY$bHcDK%jglmCZukS7`l!Y18TIcr8=w_-La4v{AzQwxOJ-_szqt zkVo?+QT)KAO8`tSli>%)84J$(Sq^-Zmvw?I*+K7|FskA@yfKa4h{)bKfy zCGx@)Vz2e%{_1@PFaA{=_)?ArL$!2qJBzd}I^qEW%(tsi>*}IdI2?CN!!D`LzE#HU z>26=_sa0h}N{w{|eL{U(1`Ko;GVHeb8?XH0?WwOqL6!5${@e|&;ow#2EHp=I$;WEzz2}96nNA7?iwB8%>8f?j7Y}M&!7AP*?coA z#an!Nve?K!cxh<~qcxI`b`waGKp=IDe`z8)BA!gKuBVZ&O?(s@kz$I-^UWyTv15Cz z%E4%rIabyoz=49x(2tJMhY+&yUIdiSIXklGJXK`y_3PKxB7@e+yAdEO`!~};13>9- z@CS+vfHtoK0Q;iK9af~1%}q=)ITv4sa}5O7x*aUXNa?UDeL~;@x)`MQoGTJZ0xsI+ zmSG8P}&j0{FhD=Y(>?b6Q-QLsEg)hMSreKceolyR)wKy-p_HlztnEX6%Eo zq<9~j=vG-M&fp1jqLnq@?r_M`hFt{r<;`pq&gqqjrl#Nn9Zn-0K$3i}vlJiWxzrIa z$KTv9<3b9mLc3S^qaR8x1>nJb3Q&TW@#QpMBO| zYwbOODW*fk+c>II^ZpwOCaVc4?s5T;vVd%>a@BelU};hdo& zz>Wk){Ss{Rdvt6(w2W}&C$kmr$W^;35xOQv8>7Jkd++mNg+2D(q@xMHq`^8GcMfHK z@ASW`aWF4IEw=DzE$D7LA~II(7S4q6X@&q4f|Lb*a4<+QC40%7!1x! z*4iS&tD>9U3ZdN?`5uSLxZB;`&B?*VrJQs<;_wiMql+;0?!gy_AvS{S)z(D}%40TA<1_zxVz1Oo$rkd#a)b?)D)lE(ic+01JdLa3zQ zAZh$w-p9Xw-i`h0NiQf(pJL{r8Ili`_qso$<3r;@L$%Nyad^|r_I?udR^5^m&5{=m zaTO|L?}O-hAHD_oGmmFRzlNu&a-~f0v&4-}44$a(nW7y;{HFxX{u^tE5RQ)Iok@xD z{u>SRKWPDIhx#Wq7j?j0ZdU7nWlZY{Kha%dI8U>^j3$UzK%(7%gEo4T; zRJb4tNcVzpfxRsS$@k_bL~4YuY#43rp{j9*Ga(Tko(cBR$oE%^VoUAm1bYVuOOO7y z<}DTHk8?-TiJ7=NgO?*&YgV_Vss~9UndfH(p*<1wOIT=g-nvCoQ~pg)i!Q zCah-*Db3?7rYx(%p7FQrTWh9JV8Ne}?x^`Q#Nh4^Kee6gVKfUIdsj_=q8u+s>v>6m zcg_$_#d6LRE@dLCh9}V#lrD$eo7bDhXZk&5)A$|XG*o^mo?|S#ZCvTXwRrsPOPI#5 zI~tqLZ0hl349V<8%9e-p#^cQCpD5D01;2=AQ7^}pns=OsFL9RUbTy=p5obFEHO`@A zwzvQ5k?6VMJaq0QGnSw6k?Y#N#4m!BD4^72m;gV1s;P&%5;%m4P zo!|{d7uXFKseXj&-4b^cFGSbVJ?}jUlQh#=?&r7`Q*&Kt3i5rtPF*}#>$RCqfxw;! z9lywswsl-9&YXu`%!4Wz)Rky%_!vmY;=0}A{q-@m?f2sZr57G;pYC!I1|m^>b?4yl z0`$NX)1M~= zI7_NK7@wMXf5v@|A-Vdr^bN>QBfJGw04#1jm*;lj6cI`8dXuf=m8X)X!9EHSkHZ=~ z4PEaQhz#p?u^HNAmfTj6*5wpKqo!G-278RJQG}wGVP_8b*_G7IYew^%g zCJUR@O`n49@de-zAi4>McPIMI0D^6j`=H%;b z#1fM`E^6Z#e2Xd9CAIuIrtbz!f9?oRXIVLxYH^o+($XO_hY(&eEKxM^2#Q}#ZiB+c z+|SK7 znWCltfJajE{B1XZqP~88Q1uDRTY=$T2md0$Yt=Xx-t&t-d3KsLbY z=MF*c=2*$VAE&*O6AQY{#YJXz0nfj0F`6|!BHU}T zR7wBzocSuOM}Ued=iNFOkhGv&z0a6R43iW{b#A33PvL(zRASWJmm(DT`C{+z&<2TU zIhZ888S}WgI+*w(&fx17jq;fC;my{z%&&h;h24_d|Tt#l@S;)vLoL zp7X26Z!ay&GXt-$_b>hwrW;MVkh!WFdD=nxkhSVLzvo>KzZwUgOsuN*hhIO=v>4P3 z_G8hR2{+B-di@p4v-(_DGJ}{)1f<>jcVGbL5ITqzM0{t1^oii=?2cs8&8I7uw%AQn zb*IURi0-tdf7h?Y8=A8|h0baJG%|d>n|>Ahdb@J0EE{?A@L&uf=SJax-_j-wTlyKk zLsexn9W63J9z?j&-1XYAbS87R&HPHXTW@z{2U*;c6dTudDW20)B3{s(c{6HIxnZ4k z??9Q(?Z*XwJMo4jT4>3OHA8!?u^XXU=dK-2md6`nQ*Gn3gZ|3W8Pxp-SJqv2TMg>3 zCviDA?;Sj%XCUlpEc!e2{)w-u{+_6#qrXk(q-l3{Rfzl0={j}oYr4|QH_T)Lv#d8d zOhKnly_b$<)5;Gd1zcX?pj+}5N2~tOzC6QZ#5EYh0;v^yp7BLpX)E8m)t&KR#{DY4 zN3q|vrGCEoBXxZ5=c|zzTKM|j>XOAOAPC1F9&Tk_ozueS1tlIa4zA;$tT&^5PxRin zn72lyPhMc;WA37@$lDNIX%_fvGY1U*Mr>)*Rq;2VVfjkXB)(6cINUT6@G}?9au3SO zOb>KigZ{1&e{;|bMY8!F?D)bjGCmkLkfEWnK!TPBB~+)bt-U=@KVMi82eu#y3l%<0 zrbw?+oraO@#q;Ma9h#tFdT{gQ&wF@nGUI2&m`}iHGie497X@PyZ{IFJj~r}l6c8bA zE)R$Wj{vYIvv}JxJxvdlygtq5Eki-B_%Gu1s%-9DoUbIFOJ?|N5R-e$x}5GUw3b=K zdN}--++)#Mg~0TN%{Wzwg@aTybo7Y>9dH8Xs%)pi$yq&g1^L1u$(Pd9JTTSAV$4`I z3pXwPndl!nAG^>AdFAsOfaIgoHP|1``UGJ9LhKWXn{4Z%+1{aG-sBs4lmT~WfDf5$ zxKI2@&(c{6!(S*Wf|6Z@Rx&L{2YnLafQQb89~er=7~Ecx;@gw!;}AoW??1m9IgtF9 z0t;C<1($}grmU4t9fg%5MgRn58+Pgt@v|nS@*orbaL8zIfn)v4f`~t&-0K594rOkE z)&x7j37=2BFiZw+YD2UsdF&?rRs=2C|A^s-1HGK`ypDoJbI|EJd@>AM{Xq6GqwI+q zojZ$|xF9DX+kiG*>hXYB@ItzxOT0zW=1r!4o}2iR>Y()NQ<8gkX-tl4b9Cps^6w{ zb3=B%Q9HHQy8dY<_`HqlFTMBcd-)rU+zzL?$b}S{n^MA!Z~L1jlt}xwea1iUEn_u> zElm}OWmG2%_t&jxs;|9YoR%tQq8O8b3_)^=kC3+m3@*kJhxZwNc~kh26zb{uz}(~6 z=i6g*r8$TjM#1wc9g&n)$NkQ<==XX40!TrqOW8Mzfpp;lP(7XREy%q517PF0G>-52 zA!#nS!UM$*sWs9>sHmt;c}?1JUj784&IE1mywFRk;Y#bV(_#HHbeH1DOmWY@LD4i` z-rh@_z%_PAeI3dav6LNXS6l)GV7wt8&;##-tSj#E z(+Ce&V%5HiQzrXF0>d}rhlndG_t#U#UdXw>k&>3stj$>Oq%gp=1~v%RW|3X^cf>NIOUKl^Hdg#@(O>_(|PMQSquX(wr2vMuCY zDl%Siof$af;9ou`Y<}Znm-_71_v|^JJh8|##`$puY+Jm&><@WR*|2ZvIGY#H?M>f+=MQ+ciW z9B^IrfZ{bpg1APrN)OXv4meGws&<|jIdpKe2Vv- zpg8iu`W5_y5mCE3kP*WS=tnankc&)xI?fXL6nW4rf5dVd!guE6n@yImcZEKiudM7g zU)_6rc4J6UNriUOSrB- zTRbbweop; zveUr17HXNr4|Eo?h`%lpi#h@%Dv!%P8ow}2o^D^Y_4D$-PBS7$N7|`DQ}Z*$1D#~2 z{tMtg$?&rbECg6(KmHObBF1|stkXd^UmD$|)Sj&1JrAC-pxKAgRs9@2vz`DWB3PhW zPSG+ZGDT=>@v8TQ&((Ssgx{?-l*uPPd)5XQT6bLU`tgTldQJt_PQr`Ac1?u`sdYeu zeF_hm`tI}o>#AsWB7=gyvrhGIj(5f0)8C2~02H9`4XPiXu{wI}V$`LpG2Y2q=DO>~eHJQdgE2H18-sp{Alm zOeir18=K%B)8LE`_S@dr`B$9;K@5tLuhT=TlL{t0!|Lz9)2==H=HFc_3$0rze@Av+ z+ha@E8JeZq$o8~+c2z_&2vSD_%0)~vNcdtN%2VPg4&qa4st?d1hVxV-|JVx}vf+zF zL`U~op!4zZm64N}_qIi{bufW2N##K4c-I2{rz@Ye`jhfEc!E^ zT!#K!CZEDXXmh__gAF`#TsXAVB3)FVL*u7?zcZ1|Q;;k7T6Su3Tno}T5lo1L{2)4{ zM)X>Tjn?=<2)#2OiBeskk{3vvM=wF5KaCU^;rXp)VAG?7Fl*(a-+80Els|@AGBeZV zi@=Msy3WA3k0|xm^xw`DjnMawj*iT@sKP277Nh~qZl^A5Xvmn{PM3jwD~ghUDj!d4 z@PWU-KUg|d7^Q^4&V)nfRxJ9eEHXTKpdNH&hKKoBa(VQk!WUSCi9V`q@;~x zTx(lfBG>Cb1=>9EeU}+Gmuo=f6Lng~*~IAS>B;1CI42r$=-JGck0HXrfuCl{MI!d& z<0*1kQb}dqcBbD=)idu`~b2nXbd4u$Szx|7%BM4O`_EBXJe9TuF$ z>&O2dNkvG#B#@HjS(E2O`kFhoB^SZxcFRT8vkTm$W6ewn1473=;YwdsAPnHacK;YZf3g^%nlv{RDr0p_C>5 z9F9l5T2f4Uc>ApWwg(P~M6-qd_5c=w7O2{}U9xZTiy&+QCXiR6)6sz<1%Ju9O+#QK(YJ(Egp=oPASp$<3DcA(@`# zWJ@k2&FBo?-1jiqHo zUAp)=)?9eoX4|^|Q**TQnh7&%E9c`Vxziwb2lbzu4$0H+@@#iTPJifzGW9?G8&>1R zvmd@{D1Pw;!vFGs3W{RkLPPd-3Sy&Nl3zZH=2fa&hw=QFDcMCxG-BOVdv^ZKnmG5` zIA%D^WzKi4*~oXFu=FmHJ-?H=NCe97u{ah&O(x>Hh39K|=4V|IFXX_O?7uW&k%4|4 z$jtxdY_gyv+kM0aAK8n>fg(Y_@c(=Et4zH9#CZ0^77yY(c_N}mLG7pPAT>{Ycs#ZH zB&Xo>O^D*_hH*5n>yEXhi=#X3g5I~ zf1+aBnztr%u%&IyA4=~L&ke}gN=tg5Y!Um0WLV#C^MXnwJLKPiu|?X?TbZ7^LG)ShuKgHZRc#{-H624 z{X&~DK324(L8Avh?aZBoI$beQ<6)^h^8V3k1mWG;H4f*;*hR{_^Jve}>#^s;%RPzs zmx@x3v&`gapa(4v&z+YTD-@0DC@YGh>4=c)F2sWy6AFdlS-wODkdJbyzj2D&HZt^+ zo@;LqA{}FEmzq-Bd&O2@s$HPHH6{f;+GleEecqh^fJ{A-iYNNYDeGp!+oKZQ`$O3d z2e#L9g+$jW&f+!`XL5M)AO<2l%!UIEsjL@`j^s1%O=^C7&)Bkl(hm}yN~7s;WU{y4 zM%^;T9pVtD?>JXa>biyW1OdpCfxrCu&s0q7lgkfAqV9iL;_@R2(rV}3@s;0n>Ajuu z`#_*_Ant`*+&K{^L>s!W@z$fX*6SWl9kmBv$m?Vk=d*Wnn`%&Qy=_*G!kpc?h@W%JoK?J;+Ot)wvXRi zZXV%s=DXk9dGhCBYR4f3-3KbNG0wzHRhzhlKcykbVZW-tQU5w>2@$Vn59F;dP=+KY zjr-Xt!LM!H_c$}y#-{E-pXaQbeNz0cm^JciR4?aQ-Vka;FYQ_07%kxx$@?1VqJ)A9 zwQ}h!MQ$pi4?MG8_iZN!Lo;@WRvB9v!7D_6zOG>A;)-T?$ejQ0MaU7jGE<{qKf<@y zojQziG5R0dv6%&5F|-S69Q5i1W=H5bk3HDoOxcpLVB{W|(^yZBzlHr|~w zQJ0ZfkfUMe z_mkX0dHG+a$wKO$7wkimc`MSC{@VsHBu%sqtM704U++WVYIPP(D+((Eli*ga;=fby z04WP6c#h2cC>pZHod!KtgDE@gO`6x@~&#{TYjr$xWQw@QfL&iiLzLZKM1$Z z!spTY%~-%sTP7W6$Sy(uS#6j-Zyc@< zJ0OWAFFzXWsZv5wtc947)O{X9$(0^ZB4kkJwlNyAz5Te{7CJe2bX}26tSV1QvA5z> z`I%=-znf~H{?+0BL~4x6+scFP3Y@-5EXz1|tfzHY{#XxuQ41Ax??nHe4&qhn=MI@C zyntrs(MOanSn`8s;Sanccb>uv{+fHY9{u)dfEqTFDTD1MMgCETv%jy8>(L`)YW^&x zn;F5!U@MFMZKWUvxIBV9F)Ywqe``)E)~?Ftzfpuq88vSaRnD*0q47T(QmL1I<{_(e zsA`y@d8c@U?W>})Nvvhp_94%4sFSEJF~}9q%>Bb|hzLO3Jo>c*8k=TBY8H8#PMPZw zxVL~FSuGWaRfbRdQke>20e<)Q|NU;LCF>X>VQulglZSMzUj84$ellPGY{bC#tz(HV z`m)8du9%kD4DP`MCs9c*Tt@?F#sP{2-{bRlzJBHsqud;sk0QE_hpW)>T!NxOO8`f! zfmMo{np#_X?DW*bEjph)SUNT(B_$(cfcsni;=!4khN0mHiLCd{V}{;@sE)BQp|NjS zSHTKOX}MiEc8S|b9%j7tm#8K%rDzzMWTy{@$Cpr^pNdOWww z^q?NyMM){Dy82{)scQmL8HRzd<~O!{4KBsUWmnS<@atBt5mB+-$413ND6-#_J%JI} zY2DwkMedJLBOdL3<@H*QmG3w9oMo1)RnP8Wi`!~UeClO{Q$1Db9*2pljij1?6s#)C z_tZ10$^->ePPdJb?o#2rmjKY2!)eyR4wKxBHD3o~$NHVEP_vx_GY3*$woLyBHHfZx zdNgLVummJcA_kGee$m}|SFe*D1AToPtGaxv#rAL#qed?QMp>_=Xdwg&7)ek|@=U%# zLLI*VzVvDK|F}hjRMrJ=WZH@p1kl#RGXv#5V7u9qTBcvf2D^e^=I!_YQ5%udEQ0o>;K@>)R|sgH=4`v)&21|As?cnea}`B zp?rWqsdHXavA5p^Y)9kKpVuVN{Lcyxl=>#o`A1yb-2AT3*6s-dD$OF>@8-%~0}AEO z-`glCY5m~5)*qa#Dt<&Edw#N8GQ6JDX-$ko9sun6+NCr3C>gpg60YwFF|9GB7eWz3nDrWzCDd zFJD(vqoJWu%8reJ0b2py8ZG)A8hgE7ZAw2szd7F%hG{~;7s$yeP&LbxWhC!3GbG{4 z2u=UX(O&2k*_&6R)MR84L3ovdMqke#R=CWsr&e{1!}MREJNtWZW;d#K{v4j5ej=xy zu=nizLz}(ZLEJtrqpyW%>1mVnOwT{`(d8x=85?|DC)e%m|zBg{WnqIWT6eD zv9Ysz0Se+?lSv02i;g$^Sw0JPG86?|eoJSRYXceb1ir^xy0zXxO0m?GU5yA&ykVEME4Uu26E-;6_se9t7-cwVzCjI+1hL1yfDWW7~)yqhE zhJe38^w61`O?#<1Aky?mIM zn1#$tOiXNEK!!;oFik-}1aUu(si_H&-BSwXWd87Q61ZJh`U6WYdHXT`^wuWqW*53;N!UTAZ!Tp!5m)BSHDpvX2i%x(N$c9LHLB3IG+`=xu%Y^WbO8V3gtBckqv}^9Tw*{4T73%w+>AtJfZ*(Ft5SzPRj}KS-QlPx& z$J;$1&w=lgvg8%!=ckYZu+)8bb{pou*)I!jaamO|g!dtel$<=UYmo5de6wWfsR#~Y zL7Ndc2}g4nchmjO-?51}uM&_Kio>*H=}~na&wpS$&#T+nVXF@09er_su ze!Z&+mxZ;&zg7oLZ|HWT{QM?30$&ubMet$f4Fx3pyQ$BHVoB#ib9UG51tz9N++@H%wMb$o}ZPn{vWxhiSDxe-Tz z1`I3S=>bBae`!nwvW=pxI5A|A8xXl#=U)hm^xXb1sx-iq(LF))lFE>i zBNk0)^T>7Cy!g;7P5u5#H{Pcg_8F>|W~yB3qHdud#1i)oOr_`##j=%toOxMoQ*%Cm z%&3jUW)8m4a&X&1(*sIWfV!%x>S389%5rE!{x6O|M*HADGe`DO?`NX5>-oW*tVyKv3At{8jG}bp z+m$ELb;aoY0?&glU-4~`N`*>ir+E0sN(M-lnQP|;~Q zHCv7xZdWsA^z_zMa9n}}g9RYGP1onvZcr}SpYX4!`)DXYX3jKFi54C zIEj83QNFLcLWWpNsr@u~Er4_e5rV7Dl+i;%6*g*B6g_x{`b~u*2M1*y_KHWXyiePT z`EAB~31^y|q>Z#KeG6K0mOKW@ct#;roqLJcb0Z;Eqe)7-Z+-lH=1^f-sPfKw`BGJu&@XY-bcU z3&HHiOQ8`GKsUJEGC(fra4CXq{P`ZeEF!vy<-#62(_$+5KX{@~2WPAlTGmqhE?vYy zQD8C6Ug*~!-IVu(xP9L#m_239W`r$4>oZSSoS*3Exui{&JDj0|1Bj>2|~;%lrP9%t#Ro2D|k$17yEOo>bZ?>#WPO{-{Cr zdZ21kk;_h8W1DwXX=h9xL6`_Fof7N+?@m ziXUmEsQ4S`=WuHPUk37tmm^BBu@hd>Ll5Cl^jy`9etK%l(~I3^9!^ev`#^OSm41X& zV3HfWR>)=?p~hC{zDv|ah>P38f&LYQ;rbVgbg2X*ul0w3E^TO)RP?8VU(W{;AMeg( zBqy`SDm;1eMBl)`$a94isi_ltdwYRD9zbMDuB3n6wU;1ZqZ{JgkF0#)AYrrqOV|b2w^ez-6L$C$at?}Yo)yh<_3GiL5$STj&zpI_ zjcp3hMk^JQM0^!%!s(?BlQa3QUmPTSLRn_@b=dmsZvet(z>3C8`N!Q~-=lcZcDibg ztef8l&{ft_pHt&)N)JHT$i8!O9qbqV{C1z!{md{+F(;SE$h!V{MEbxzq_7Y!tt(zR_}F`SDmw!k;9j$IdV* zh5eGu90jANe$16Ta8_li?M6Ec2*%%wZ)MGzh@?&)EPvv8*3We@Gi@akr>y+Pkom!n zT2Q_0ajtA_HMni-iPiXBdEq!2DF<8dSm>>+tSFH{4?&d!vp-GY9ZpOn6e~~G@zt6PiI7?*xavG|>(1|sn>>ReLd@anm=B`#M z2vwH+*Cnkyg}N{qu=;F=?ad2j`*%++p+d5ghiMbW$kdpS{#`y3;HWF2ed@^oKT4(a z_M2OEK3$If7}oy7sY$DcaR@yG073)RnL0j8n#6Q>WH>#zizvd?<7o{P%sYfncz5J1 ze?tuD+A<_pRqtKuzBR}S!M`Hq*GVpYJA8g$KIU3ER2vs2lnj=PFtL&zzcF#&&^53p3D1Lg)setcsj4fCd9YtwcfN^$?dbP6r*}k zE}LO{tsX=3LVfS*trdcbnUy#uXj7=F{>Ap?cC-D_Q}>4tII4BBA2)u<9{qlB_88#7 z+QX;@A)DUqC~?}Ne2v0!N6|EIQXH5z4>=6ql)Ct$W1yy~d+sGbhRXk=_5Q!-v#^GU z@6QLODt=cfk^Ibwava*|r5m=RdZ4Aw;az@%E10O1yVp!AVbPKP-c+k%TQU;AozP`d zf)A1#8g=E_b?vPF-I$y20l4dQoQC;KK+L(T@i_^5%J=myb$zR>3-!D#5pS(c41l-@ zNJGR6IGwHsBn=wfq75#qhXD8lcMi~j-QA$EMRK=flq1BeBcC!TecSdQ&m#bLBL;)u zD#dEerxSdvcZrTA)13KKvydaOfsPz8?GyYq)?!@fa? zA{W{r^@Ysvi-#hO*BZ%)l!WjMNwLpmOE2Yu8?b!1xr?SthpXp)nH6~r%rlqRUag#P zpMd5DaYS5Zq-?hZx!>wgxg&{}RwnQBoWWpo%@4EG(vZ4i@N4T`9GBZdx6qiGH_z!H z70u1fk&!)>&1co@N90hHx#_>RmV>+1CUd@ew_-I@4aMC4pxf_vJtWCfCY@O%=qbY) zYdhy&H4v7=q^7((iqa zf-!(lH1^5JPen=5L_Rz$e{>Flxaq!?UH)aKRkTCiF~rASyt_--9Y1FCI8~dV8rx~T ziQn>5Y@|xYjB02_Y+8Ay!v(e$3^TagM13aCCk?&QxArSXxb(edr2t3HZWpfbl11|! zPY31GS}amH3-gbRTk;dEui(Gi(HZJB8T$)RyGEKTe-VY*3AGtrM%@DxYy}Lyxu1m0 zdFE!Sntcz_@5Edz#LQ#oR=U;>q2j-roe%~2_hDL=S}ZTe|EL#fl&F*yTT#Qf6}~RQ zAue%1Mfu<2@lhk(=lay%xu6BRwRbcSb2Unguj+KRV5HYfE?6LIds>+MYa?FN9Xq5n z@o8WBl?GVoY4&Han|UV22|28LVjr3DBX7dy}xC#LC8)d{Raqp(Ey{1zh~paR8nnM1!9BTDr2QyeTx zhXFK@i+J)y(OV#MoU~{0E@bAEosA7OoJU;V|Jd?iwQoyN*8lbYtD*hdOmpbrSUR!V zb?2YZl|O%l{0O;obd3h4x}84f+2+K+3_leC5a{Jj)wgXEpS;aXeph>w1Fj)S+nW3MQ8SoLC?qb9!Da z$as9jv&J3zYgsW@pwX~I<2!yN2b#>%&A6w@uW`-O3Pz^mjH8~;`#$e!M4L20I&d$a zt~qQ7Opm<(;DndHNcO9aqhLDZFizdYg}-z)lBa1rbx05gw)Eo;3@GkoH|c1Hr~9V2 z&yR>Q_3f%)nzrXy4{zXmsv9W~amPQa zd-9LAsNTJ+oD9f{7)}hx?Y)Y-6T!%D-cdGOZQVNu1F_w0=FVyESQA3foK&GwFpRTe zb%L+~4jDy5LqmwPObCH7^<|nIgf`I@at@Z#K{>;7^^0bKR*M@9_7jkpo??vkvvZ2K zHBVff!vfm>^^{S7NV8VckTA*{!=_fKKh^7>({U-OQ8$#i#`*>Bo$CyqwN^)4F$aFk zcCrJ?TF3B*e=m&powc^!Njj+Xq)YmoELDvMDY-r57}8$HmwPVH_!Jyri;vl=hx%nd z)HDCgDsh_)A;1lo`}g2rtk?h_=dnq9n11%}o}PUXN=izA1Kl%S0b~06w_*bYt}vck zP%`Sim{DeKko1P~t1n7eQ-FZdJUpR$|Nec7kbTG>KsbH{#L+X*#1C9x*!zGz`ubJJ z<6EFFIXO81n$@;bg5RnD>v^y?Q0|2vV9KRe5$39XH)rTjphr@%3W{R#JB1dnH+UY5 zWBOZwEL4^Gk1rR7`8V-=)hI-2YkIaH6h4G`KitdNNbd5ANo|<0Uw*<(Ki0`~_~r5H z)EqH=?Wb4+#2?FX zYHakiW2FxO(bzcxd}4OzBD3GVzsh?;S!FXZ1Zs|k!<9s%*;;4TKUg^+{-p*_=KOgQ zdjRy_0|ZUh?{bTQ5cPTTaV#y*L)6O{M)AErV6Yn68$vY++sTT&bgzhTNx;^@2MeA=gfKkE6HhX zF2;xa{8!Xy*dGjAf|vB_GwS@b%;=jPU_4KXIoq~EU(vSeXw!S`l2y`CF3=XSG z5-RwjkoS0aN}k8D-0O99bZnWDf{0rp5#V4f^+uo{f`feuXiD*mt@7+=(ZJ|73%rX9 z_uH|F=ufXNcH5o-KPuw7_X{78CP0IPBWObPqp-ZG95cKCWVzqfkv8h*`O#+PqmhgZ zzw_|#Sb4}sZ+C3ki7#g3&nT&=p18J~l%=Fh z0Wy`IfuZ?y5#J*MoQk$dUet1TT&d~Hm!viYqZ?Dz_Sv~eZAvg)AaFY=iDo>cD-ATe zlIqcc&SYTup~SsN$yQprN5v+0PN>+@nc@+=K7>rm(_J=`e}pS{V<42xuXH}Tt*0^g+i9uMbL+TD5WeuzjOY{mfWaN z=GQU_%J;(MqGowZm%CSTa~F~CB0q+n?oCMr+EplHn-Cd`;cX=C!!*7xkaV^U3RcOS zWN<&J?A(g%C?m|5aAVfNG+jc$Iz`O4-D%3bAP_j@xvZ3iX((*0U0w8-lF(jLrtd!b z;25+XCj_z2YT6KH9Vu6cRV!C%)8#~Z^2h3PC)8`@%%f5Zn^&Y8w6lta*O>_AX1RbusnFcD}{l) z3;6`5I52Bq=1TLhfU!8yclfYsf+u>$#;7~yyf%xLx?=c<&DFnCyrEqLj!6^tKoe8b z{dnT9fKh?<-I7QH$h%LGHMDq0Fr)!>(oW{Uo=-wWbqt7yP)$5yrM(feS@qEr`zBmD zpeqKAfd>eEWD& z^L8QFJh{n$*Q&?jsyQg_q?G}1K6(=mDU3ciZ{5`5Py|IpCp=Ei_5VTpxc%jo^1Y#D zJY~gTs*}2lA)*}=2|>hy(lgsPav=y$GjsRz?0qQQ>=o;JoXG~S<4C|`m7_1S#j@1z z-_217{o$`_8?kVW`W}*jHXEQhrjyB1{$ZSEbylx$NEo);kXAgnox>J+&!I0VTP$mld-;Ylmse6=K1yHUS?*2qm>&)}x#} ziBEz)0MNOEdXDq+)l>h80fvUh;S-Y+<4w_dr#gal(s zLTLzLLwf`|VYU?NcF<0QTHvit!O@?f#3HjC_xW=t2KZh-D>hhL0>}qao=;7?KFF=_ z-Gz;^d$FB>l0BHYhRY6US1BoUfVJOYMBW<1a!Fv>JUDP)QTLrK6zVoL0HYc|uq*-| z8fa|bBiXD^d-r+O%@bttS3c!YgVFaH?Gk|eb z7&E?&AE3q6uL#}T@13Lope}hqT>?D{o=u8=hOLDESiZxxi)tyJP?|yXT)02}cMc{+ z#Z(K150;Z900M7$yyj+XJ9`)7`Gda`J?{SFbFHa;M{X&8J+n?t_x7d=UY7kh@vnJaFs&XrGuk1Bq5nmws??P>BKU zzYteo@;xNg9|lV5k44K08q}STT6m;ZXj3_!%>B5Dvblq3tRjLFVx)s|f%~X%t??Wo< zpkmX>NX_bo}$V(eV1wx~HCPQEB?iVE#3wOGR$j zE53=2-dEo`)N@vqfItn7ek7zwjg2H>QN}yUZmx+??pCIDW*wnJ3XdFW)yUutIE=-7rwVE-s85P%m7t_!=X5O``}qK43px&*c;6LaH z@++qr-#rRZyO1dThH?@i^*7tk5CxSTZMp<{k*}rI%Y_RnI?t(={zN2YOdD`w)$Us< z^Oc3Cb0r(-ZQs*LAl%mW#@Q(v<%~vmvDA79anbnRP)-SVi!6#CF(DFtP^9I)qZl@P zI$Bh!iEe9cS$neg5Z~Xi-c?eMozFK$FPq)$jQZ0bN2r(lM_}aR4FAOX>fO~+BrZ&n z6fpEie4d8+HxgdIP+-20+95zKPhx?`2>>FguYf3@4hNniZ5~lHexIPb^N$$c@|*pp zU`u=I%t8)4jiEt7!b$!sEjY@|fwv>H^eQY#X{qJCc52u30Lk8&4}kO3fGd_I5$<4T z9EqAA8b>1h%(7^NV){bOkbN}ai???TL8GkYENzo0qwxkW*HUpV!=I*U<_2XuQoDxa z4s^}ArVcBQN7gA*Dsh7Ua-0ZrA~qzAL&G+V?KQP|%RS5?TI&7I4(hNIrY14VUc8IP z{54lUpOTx~)j4n#9ushB?k`0YPb(}=Kb&f^vnKqvCcFx zPYS$xO}E4OK{*x~(yb>)S(XDbPj_aBSIGNur^@a{z4&5&2Y+?caw%uTO#mmd`pv^% z;=b&bj{-iJX|;=|K5n&z3f0HY_K;MJWaL`ih6bQE610ps2PvM9=)cgc6Y2MOsj2__ zV6RE!GDX1lynp#eNfALbAc1KdPGXFk)L39=g|&71|7$Tuo42=hdNCiYoMt2m+52{p zwy8dk@YmE0o4*wNtug#<3n8w}U4Li8k!y(kxfvc3seRJMrT4qyrxmDpA!`jLIN(U{AwC8WY8u#a84Jh4M&zVJpB1NE^G5ArrgT~|j# zUrndIQjP7$si5ak{&G0CA#qBhkGp$bFxR#q#f;t0Ehg>l7kwVR5)BX6DbbYwaJi<& zh@`J9CHK;4iWDj3G*TGJ{tGW^DypXANo%4*6VTMk_Dziq2r^hLKr}+nC@Us~cme-E z$@+9HpI$KfgTx+UCW)w~FYdh9C^#H~?X^0GM5}AL#3@!a<@QY5~1PZ2Z?PHK%U@U(F($>Wwr@*q-r}#0vYe zrg8WSPqGz%Bu(5S*rd&pif^p&S>DY?)Sg;l>V;+fZfs#-=)#Izov*AZP7iX^m!)%i zt9x_t`GP3B*{q*Tqcj~wOtJ*+l(8>=Lr_ zlRr%|*Ky|d>wmjr05`cm#v$AfLaf5xB^1A$M=(!>>-;Vs*FIY!{r&qLk z{zxhd52?gGU33(?$k?5}VS?QaeW2ihPIF zn`x&z0^=e6q+f@%qyHba-ZHArpy?LG-95MkLI{3vcb5PO5;Qmj*Wd(qcXtaA+}-`) z?(Xh3Px5|p=g$1#2WP>8?yfG`ReLutea$TvMNL2_<>R1;M2NG`VtX@nikm#&JwZEv zI{o)U>hQUFy^lzCsU_+1R8?UbfgKihPKBFkQjYn{D$IQg?BVeXeWB+(vxncRYaeGf z@kah@Q!!-a4QOKr&*1%68{IOG^73#_n=EP*m8ele6mn>%%>n&@&X_^>JY?#=^EU0c!Ct^c);`73bs89*~5d&HISPfd0$( z%7&1P;Dx0nB8GQ=dq*u*t&p0GiR~ACL>Lc%k{bA|IWKP;Xcd0QUGsqk1EfBiEc`0q zIWx$TA7$3Je_`+~9%v8|KOK=W*FHkJnVyu${`y!qWXe0AU4U=mH+y)4BE;4`Sri9n z`lzlR;dh`8|Dixk+&AJPH*^Lne~ed{d8fFH!}){2&Hv4=j4(XfeoHkP zalZ^?v_B$8K+c9|z?5XSa|Nf??9U`}Q84<4^Ej z7qOQ1xsr04ZZ}`4J-Lv7y+t8+J@?a9g8>PMZxW;tNVcLPE$j0cz24 zRUhv278%eK0kWE;q@c(;b?nIg;n7i#=Z3G15~E*kVNJmRw1Fwwe%^(A{=qll4q85$ z)&J&wN-IzkI>K^_ux1u15(a zvTP5ozigF73OQeADWUu1`plrD3olC)nm4Ffp~ljIRH4C(;Xh^uVt?IEgV}w93o=dZ zzRMa^I;a>M%*e^_svDbFt|HV6)U%qWc_29q^-f=S|ogiC7lZ6R-KNM19Gsz|3LVV8b^^5`cUH{RE}BDbtzUym5o&bQB?6@ZxGCjtgy^-YZ5MM1Vtt^C$qVsiN$^;&Tz}ve4NC|;i111Ire^L>7 zcV+WDfS@=SOACG14$K>zN9mnd;QVbxRNJOQ5=v6~dH+ygg;asR8xl{D%wkXH|KM#L zkUXJSrlU(DG)4S_r)Gmz-Y&pO^_FKuv26M8bor)$^ z91Q0qX612+@#(n0i}i#^58p#f{GKjpX_MkyMGsAX14jv-i$hiKM{7YZ65gMN#mCvv z|M(OgPY#8$d{ROK1MJgP!P)kth4E5qald-?#0M&t%PNd5Y|B zzHXm=^GIuZ-SLHsl&B|SCQ6x{G|`uL%~vPc8_hRC%4&5jqP!JK|DOH5vzP#&ZiwAR zSwf@?DEzZ7X74%)*?{99w9}SkwccJVZA9aH7Y5mdL0^2`f^311TDi|YQoM_b4Nuu= zwa6~t8h-miQnK)|f6k>4xGIq<;n+g2Re1XrRWmFsP#0?J3@1I&_{S$6i7+51JYK%L z+d-Zy)Kl`_Bl5ghTxZ199|&Qbe^_U~7(5-T=s9r`BOHBPji4B-5w+}|IrRuSjJ$xA zDX$d$#_Y*uRot6W8^)GjfVBLrRD%$Hzc`S}@Z(|cLRi>uH=j-|Z#ZCPK{c|lp?oF6 zfw;ZN(Rz;z?*t`SDvthBp%+ASV%$YUM$^p#rv>4?r#{eTruP&qQq>f|h*8k`-O}zO zJB}knc2c3xihz#L7(XekgO2c*MDZ7%sR7zwM04-5E?A_dxIVDw+E<9ixqUx99`wzu zt_a?n%rJQ7-UYE2UvcjFe;A7!YoH9!CXPf_l5g4HGJu-zoxa!au55ZYNMHo#);I8F zSN1amzu|d}Xe2U*Z%*DuT>xKf%3c!N4+7QzIv1mm#m0*QEu3^YWnx7ocSnioXjlD- zxVA28VtaI-FtRT7kVVcNp&A-=JfPzr>k;02d1QhicC9gfHh&3c)&V{kJ&xuAdWs zu%RMNs~aT4+ncWc8v z+;3@S3Z*laOKt^I>y28U%3C)+0G&hCk4HfjQ|6bavgmg^lhuZA@R!xt*LD<|0pJN2 zjenN*kLB{$(txQ0L7oA@%)ZysirFuX5<_JzVnxOMvVPuM=3_jj50sXf-KH2Rt|lyX zs@>E=TRf>H1iSPE?sClA4eQusoeC()xDRzrdc7h-n?x(OkopDv!@OwtC4mq7Uv3deJ8Vc zQBtb)1FhLhTlaCHzQhF@dRcJr`||V9S(S;X*c>B|d@o1*+x%S$`LE{h-<07|B-5Du zk=Fz1Re)!}01|}Z4FIA{nBUKkH8cAZBwNMy)3esgP30i3xhXjLsdS4@Jdz@f6HL9l z@l|pE?P9&8lD*zX#(v1=G)HNvV{#(L3@m?jH*qp-cs11UMjn)ZTy?`o>Jn z%xvHNd26=s2k_*%11b9&Jn@cjwrdeOEI2^9NwA<)%$lw7-L+)*4}t)e{FSn(vl zipC*KcDQim@^;L`lx?^<+FtEWB<3=&%Yu_teGO=5BT6>|jOlYfNomd+xz;hh>|b8i zUpM}*quo#rArDCwpapvS;&ii}uE-7v%F)LYGRVg(sN8}AVX63#`Tz=z2#}!BTve;S z@J}j8@QdkYeh&i(5ix^vW9JSSANdBz|v!@y5 zCPxys08=!9t)!!7B<<68XHgXb{#*{!LcRTuDx=eJ*(BW$$~VQ7|LSR|ecMxgqwj~v z30++|9ZwWMmLVzLJIj@YieNrVn*(L7V}-6IVinLpG*Bjnd^8zBk)tW5U0Mq zb(ygl-e30B%J>KPpg0+$*#s3t6ck3LiXs|$C~9k15_(2x z{Pl6fru6N6q7^X!+X1=KUk>UY88|f*xE2ZW5U#_gg6BJWLe{TO;hw&a4L@`fm5KYy z6n~&|5@Z!mh(YXE7bAJ=FUyp@Rvs@OkS?$0ZF{Gc~K} zI}wf)qA$k$TJ2IE1!YR}wh=ldBEUW_Yzd3X*h+V>Imk)I%@LkK2$wNBPKb(5B$0LC zM2Ymy+gPpd@*P(oGs>RIQs0H~6h#=(*W2C`3227`Wy>jI)7=uyKeg21i*b|xnhT%2 zNo5!cW6Gx?NRPh%9)UwukWnZzmKM3U)_Z!bUP;HZdpB2p%I`k-3Xr$kvZbUeX7Ko; z(g}JcOcp0aTUF8TMDvv^%@A?_zFHu*53d~uCFJq}&yi%)I4sxdjayi6Z-QOPD4 zm0$w21^6lEaXt>`2j%eR0sR!{R)#|2uV3MIjXV{GE%G&+c};wBj>z{M+pw;VEMehqE?h3S`0UDWCUx1ZhB~_5od{ z8|mf*#}9|wZOCtT%;>+GN%Nczc6)nJ#ew~D!LKer2`J!6Nnw4UDk%owws`24hc#`i zpJFPZf55&|aNqm<;Wyr}ho-5D{M*bf4P0>EVdn8x`0|3rj-2Dpwq@nlAk!8HTd_{M zq&NOVL9aw;uK693sygv861ZxCkC@wIX&rCQ&HK>Eqw*@|Jl^>+8__GZC-Sy z@k}|LWg)0*RVX*c_k#doMqB=!wHpSM8Fc=9C+#5#MDO&?4!%1TUz1}D z>Gd@;Ld0kxb4v}T#*+}G{zQjS7mH-jqR`mF~v! zHaMnabTP&lytYdd%|-8aztV~o>>t(CcemP=L&@=hWlNAMZV*}04res=&Djv%i6hZs3>YgxI zvts%Xm(U|$3;%0YfIYkpOvzZ06Cv+ze=hDIE@AW}_?J+&o9gccJVt07iDz?9 z(<{8?pP5gHcYHCu@n(9G^CX{C_rJ@sHpcYF z-b`C@cMfsHm8i)%`SOXxVF%%dlAZeZ*F>4qI?LaNX#|`vciY$8LkE!zK%3Pph>@gQ z>`yl&Fc&j|jn9p?HW0uRENYK` zd(B%U?)hhAGH!k^Pe-|a9#ktuBW~^53I$%a%S(*=&|N2uR%4XQW?6hk?l|<*#c*_Q zFd;qIKpXY17p(($xHJsSP}ekS07U-|jEwF%T}=;D5%{HgmEXBkK6m{p;zXp1bqtnMT6}0D^CD2J|(ev=iz30_ zy%(W5`^E9+vg+Grk6pNgiRrdOh+R^J&y!Ct{%TZDocXkp`C;)z(BsEsO)m=h2iVpS z>e#M{LEk-626!d7&YANFwdJwT!txFpO1!4d_nGR&ORqw+;WCYt$U=dzG!(9ITy20H z0HrPZRo!#t(~O#q@A|Z~;Cei!Q2Wbm^Lce|D1!j$_Vvv?U3Wml{KFok)$mQ7xHoAl z6DV7$XyyPGN?59BM-8!)rSbwR80T%qml|s!EWey1Svi*@02(#30dBuBFD%fxTh2V0 z<|SmLKRR?Q4!tJ+=`AZUj&8ci&1@(4mJpAe`mcTm?Y}5MFEp;r8j2j`2(@pL;Q{CA zbTVOdQ37kh@ycg90C9hRNzWuWgkV4tY6Jr|b?#V*Z)bR0*eQ(A=IQ89C|k3>P!65b z@w!=hr{ei!kNWI>+h{`JdA<#4>|CL8`sVibR=}gU`e*A7a3!6w5ag^kdyT!JJ}mV~ z<^Tcj!(U2g8chv{$%S0c(bS&jxa!eDJ-nC`$#UnRVKbT~g_Z4dGbup6gXVU;+TN>WoIlbhSu^4X6)d?iTb*B_{OEZN?=`8b)iLHdVw_u~>f;NAShFAKmR<__??+1L+*y=odm3Fh98PV4u*- zH?Ui0jQtJ9^v}@=N~28a)BzTDY#FM^8Zyez*x2Xfc6oIrbqe{4jJB?h!Z-j*ntizYvL{FMBk!VW&PhBKRl*-Sx?EY?a|683N z!-MO|bl}MY1RdL6S6x~ZAYLAcD$aPDLJw7Gm7=!zErP zNt$rW)9~JlL<=(99Asn|=5UHcaTRTu6+?KY8&oQAwEOPj%SV6mF-;fGJO0opA(3?8 zo5ht}dk%(tF7!KDF8;i2iEgNR+Hk>{Gjou=u#e?7ZpW7hOKy5Ikncj zXeAO1xB()Uey1r3i(RXJfRY_lKC7&)O-6kpLK|*lT^8_E=B1*`^U`RGUSDK^e`xE_ z*@6q~&h?~!X=A*lDKJm7O2tfw>_47xwyr0M>SMSZK1wo;P}GDjti~b$j`8Sh2_ysvds? z1Ac+KGdd9fE^Fv$)kvPrpUo9l510!!PKEW(ZWBHVF2G}0@eXuM-Q`%n)>yq$O=a=o z!Ip$L*=Q!KNYf+)gh$6k`550YL#T24vdpB*;dBj4IUjhSz5G_Ym0dW~%#`o_>7s)~QpH)#Zne;{nvL{UKFJ-** zoEy@$8x~K1X>q~ya|-}R;6=+ozF(@sPYt$k05DL1baNtTzJR}0_GUZN<`MXuyE$pZ zUbdH$cr{ZgnJ@WR-MFy+m6c3VKBc`)MweRkM~jvIJ)rJ@89n+h{S1H@o%DJ=)Bf7W zYzGbLI`fE&p$nv=^kV>^_&Oi`_|5Hk^0SrE*Yew!`6Xnv*ZExMdNrN=T`YZ&$C$Gm zNhk!WL_^qK@`$d&%gmcoAI>$)htn~(ae=GbW@~%w+@q5wsOvzh=^7&Y3KiW0*0o_a zhvAhD|HLZuzwUmYijk&^VH0j6SFSA8PI!8CC2CO5(8zU(i#_#%HeR^$F(XgeN?lK@ zWU{Q07IKwcVan&WHNNE9GZMNf?El zT_I?bH%vMx(r*3q5>JR5bO@-Q?*xb1)AR>kyglJ}iy`is31m>G#%l}7 z7-nImt6>AOm9mxVDZ~~>LnEOafSH#}R zG)DT>8-I}CI37%g2lLr_le&?AsuO}xq@s+z7w!?Yuoqctbrz&xd3UJZyys6T?XFzs zC3NqTt2S#b*ya-c1mp>^dsZY*-DJ51&m2FxDn#2f*=?>vJgE{P_3z$Q!Yn&)vj(BO zYc{{{Vb}FMWBqxWY45dIeL8NS(_aDaPaBtTB|rXcHeXE|BEpDPaL=Z?Q+b?mh`01c zCRn7bHC^-8|J#QZ+BjAw#@LR9k%4gdKXD) zK@MBb)UuvB1B;auKvqznUl34~W}^^9FtJH?Q=-{35db`byDR>?)ts)#ol16QxJH2@ zc1O<3aCM2T+<0=q7eA)r>lBs8pR?1zsy4~{>y{sV$A-{KUvr{YSMnsPF8J_*^1e*o z|DK~wurSufb!Hto7QUG}-xm68{hk;(r7WvI8=(IsfAsd`fnNkcX){i}kW#-4{HQ{k zs)p~f#n}TK1qd2Ev7xa%NrM2^OQau+SH{(PSZ;ZK63*6gTs#y|dNrdWpVO$k-JxnMZcO?H&PnEb5p>=WI=Cr*n-!6Msu@Zq2F86DQ zuT4rtz64IvwN^FOL)O!ZGBFj^$%2ZP?JFQ!@}^{%DC^Z0)xqy!_`k&l0NG?fhcn;h zC+apioP8>_n}Xjj`VG(2e#t5}YxN2X)YZco;b=Di%jtX~Qv_`E#PczCE4@C$?Ufre zoKdEQ?hWSvU1Cs$lk(g9&{zv^s-k&=uOEsxRx%w6CkUk@nSMH)OL_<1zLdiGeEp}` zFy_J6clKHEZdX3SpRx0mSEfTLjZ?T!F@3&s21sQSnr|4!Y+{o^f-S|ev;A3 zESLqt(=}yxEK6$&20`8yE4e$l3dwL8(fUt9HCj@cu*8mDanD-@)4&_1sJ~GnQ9B>Z zr;YJ+dGDH%;=63=w7D;F;uk;X0zFaa(L9@VYb4f;*A?PGnuIP$(l*+ASIT&@-^#^X zo7kn&+uk|THDQa)4pc!oduh#=p=+|YwZ`_qP*DWYc?;OxlDi*Iwz65Q!9msBJ&0ob zSSwypxU>9ovBPPg?#2$jf!v2~@sWI3aPR)}{%JR>m!XTww0lv}J=fJ1-N&mXBVVi< zE!Q6!vz~>>^aazk8za+MdxUM*8e;6$$KzmuTdooNT8?C&>b@Ds94aaDeNy^P8}v4R zer^L}G$xl3%9x0&JP}rlp=?!Ld!GhgcWn*s1Z;2pfnv|vQ#0|S!wvB1=-|U8XPV+K zAPUHY!^$7)Vh&Ho%(Bh4!1`R2VfT3&vXaXlcK@M;DUWXALxVyEQ?!zbg($qb0*4jQ zD5K2Zz(T}n(uK}nX+?o3E2PC;Af(A%#q2@T9|iER4GAVpK=xk2>T_YlH1>TLnb&tp zdC06zHjkW1*+c{I6A5DrRzKz0aqK^$1f|l17by6dqh|J@ zokZwjG^V7SSj{7LyZ7jg@xoeb~DXH_?(Uy>+f%BFf0rn3{ zK!e29tG}!UDHzKW85UN2W@JE^%|YqAGEyefI^&;7f?wanz7{LAiWym{7n%gSxi!9_ zFUGi}D`aX@XnVb1m~cN3PWYFt{%f59#fcvI0QzE`Qx-mz939KH$ZsbN#OS+kt$WTV zE{3iH`EDjAjQ1PBOp=W$E5r*q`#nHm4iubZT$+P?q{ZzMvM`|aM8pIF63AsGL6^kT z13*Yhi#CAJLPdS(8r4p(+}FmyTxl~aW%?t=_?H}}voBH2e8fZl#|rhI=;k`e0UMuE z28**eJW=Cv4B@~D%*nQ=XxQ$ldwQzCgH7dRIzr(>E1S#&;Qz@0=iah_q@2 zq#k3i)Sf?l0!*ncQ76Z)v_QeGkDe3L8!mDl+nu6LsQ~KZtg)dnJZzxtMDoRooA3mS zZGOJdN8B5j;n%WxMa^1;sL~LD4_72(G{(zTWJ3yG`GYNx9;H!55q>*p^%*Tb0C(}f ztuRLlfCh8SB>+8lfUf|vU3a0{$T%ni-0`{f^LTuQd zt(}*;KAJZG^SajrAK7OX9lR<7G}yX7`00LvGWg}vl0x~FL;^1q9FUEe8#BzFnXZ>` zP|&Z1%8iaPoC4?juH}hEs7r-F^GaS7LaXXwd>(-iBE$8wDmm-=!ObV!KLC350Tp&Db}x6J-P>$}SE2c5$%3~2L%M|i2Uz&t72)WC z>nQF}liSm^Qpq!`*a8pxhu4R=7?+|yhj%+8I!f;-f6Jj4uxBC%Ho|vVTHd9fE|HTG z*khvyP%rzhC-4(pkn3IiiH;y?cDSE6J1@DR&l=wcp+7XTIo=XKB2#jbX&I61%n5!K zPHQHVHQj98%kVl~0|Z0V2}b{O%m^zGF#;Eu+k~|2ZptEAgE8v)sb1R4!J1{zpJ}Yb ztVhxa3Ml7amlcJ=$)>_Piaicx<+FTdgi#4Sl`Gc72mP<_8Lzt-WLEc>z0O&LV=mr{ zcuz>JnAJezzD(y zNYVpc4Hj|VaNc)TNeZhv!YAB8`Wh$K8}JL9Tf zoRxROAJ^U4vycB~C<^H7bOJIX)Hp~Rr_qDk!NG$*ccKl;VMHIPsc8V73_Xra=o`hn zh-<56L8+Wt|IguZPX=3yZW?1YS1X1a(%&J=g=*3}=9YlU0U)}0YGwy0y8QR$1G0zm zd@n5td2*$#^PewT&fXjlN}Nn>);Tkdc;?TcItH*>wH3c-4(|BkZhlkz^vzc16DhO9 zx||1MvxHjhUUr&Qf6woG9o@{_fDlY8de9^HTu(ZG@%tCXymzL!A?uG|S(MG?A3V#z zco`7vMRd}2+G&&~S3*-hJtWx@@^U3s(+%mj$&n(gBGj%#(CC4FKfN8N!>i*+67`P< zw2B*q@y`5FuQEZ*O&S*`wXE)`&4|6D4$w`-AQL+G>GRrIFWzF?ViB_>o z@Meyg^yLsY{C*fDiWg}p#5@)wXLuJRN)CBQgh7=J{sz3h77n%ew(fLz7IlOM+aC8= z8hbJuN2;6-#fKp&xXY=!@W>Hj5Ha4kyjhwfxueA8pWz9PirB$rO9g8c*UWw+CCc5k z2oIue{ZAmclEu9Y@CAy7G7M42m&rYmxQD5{BYBEj?Zd2ww;N^oCdy>4JGZD zY}&+EuahfWA(=`{xfl1==vzf3V~8d%*e2>dP^ifLLSEm7Qu}r93usdM8w|T#H6P#B zZS1Y>d(iW>$HhA%?&pcgpH_#rE9b(2dl%X^aI%?+*)5?-&w8BtMDDJd*4`|$Az z&+Hran)BUp9rVHV_`R9tRK`Y&fp0;AQ*?trIXO=xG@IU@_JITJY6R2%-+Rw_WEnMR z=qrJe6?)kt2muZ<3cnXWCjJ%MD~Ki?KtqXm4ezRw6C_3syahfAGsiV-p!uBWzP<^S zHwLJeHP$~;mg&-NY2hguNNGLxN(RT4+m}AtcH=6DUGtFDb_%RgQNO2nzeSvj)y~*P z^yIudNl~UCse>XHwnIDkI>h!KWAFG|rA=81>6Wp|sWDFNrDvM9jh);s+3HqoyOmRr zwFggbKmsk5f}QM7lWC0C_b;=d+y2g5O=;nqq;_PH`wkrD!C%sDO1HuH4n;i=+Cu~M z6W7YC+j)fNNxXYse_NaOQC-D3SgrC8_{5sq#knDn;A9AEg9#$h>3GmCUKqtXA25biosGHzdOvgbVyds^Y?5)@q=M=d z(woM<2ojUADufFCyH}eZ^~p7(k)Ii;e!DhmzK4vJW6<7I80xMuTDYM}LrzHjqd@e_ zPdFRrt1OV{LfkUU2-3D%E=`7vX3 zLcVTCOJ^-l*Ba`?%cs=u-^22|oo*k~un5)+L?J$SzM|{4xZkjVK7IW7k%NO#Kwx7y zv8SgekGg?>dsklWErlSNlq8Mxf{)=7`AM0*OqN+p_bijK!Iol87_X|D+~C4OmhG>> zC_~-u3hBz=Vlx5j+}SmkI4alEPKcCXx{6*1&0^roD9zscwNJ=fhGbl9#g*cXqNa!D zb6@Q0S@8Bce97e-h(<&EoYlZ1FMs$XS7IoDGQi7jpW^Uv@byq&oog~yrF$LzLR znlnO|&!W#M?9tlZE^_m;JB9k_G{zpi1jtl&S3`Eb%5Hp1T_Mc8)Xjn`aSlb+^ezGRmIja?=O6^_YyP(RHq@D2*T~)xLS@2?QsfzuPtjn z3?(kmLDG04hE;f@wTVx>o~2^9N2>Xu-IVd|e3j&7LA zb^Q$4Z@onY&*w3vim@1m(1L{#%?T`TBoFqGO)tq(^E;wH;1Y>osW5X#Cb@6FqLPO z$kr6(gll@__FCoE-1D$0E~L>j=djHlTyknxC-@gaz3f)*Mg#MZ^coZ6newVwzK4v| z8$ssly?sh=b>1l2h0y$4+E7v?rGf5-YarYPIFE5J2Usxo@k1{o*N%~@rn(3Zi0cF2 z=%G+60Ey zWr!2=6rLP`6Zg=V1qcSRWt&Z&sVKZ#Fca5`vhQEIA;L2p7GDC^0>MdQ#8@QP$Bm(- z{gM135_@=A=yO}7e7Yp5ST?UmiA8ZW*Xuzr2KDQewAu%K^rmoNIk}(oa9|k*IPk}< zH0WziI7(}5D1=ix>7Xq#(HuWT#+}1v#7P;2CnP!UJEtGK-PT)?!QzqHbX1(7lp2EP zpyg|Vb>nUD@Pt7{uUrc$^Z@Up42lr7cY)1--L6g!LjA*DWsrgiC491&nO1nR4ZrcP zpJ7cJ*WR+9ZF;NF=3eWNb-vgkMa^!=O?Sw;qwc0{K>z3pzKWHLH96UUxCX0+mrkUQ z8{-+V$M9&CkL^)z!09!ZIUG$b&tR`=L)6v_;3DoJAYzXi&|I0ICa;9&z6uD#85lNt zGbl))wczmYnxib+*(gpu+}7|7j)ttPGRI^_r5^i_uD|AcX?{G=f&#gKDf&h0#>u?G zUSeVr5;8~$@pkv{*Y~$`?u$&b?IFRATM_K?4PeeeD-~DMj=AgWhCJ2G`p>+leD7?) z(N=Yv#t@@DarNIJ%BGdScsqG)>TOy2dt#+jhPb>wY`9t5ak)ZvWdb`~7sr{_C zU#4(DVf(!4x6r{t(r>uI*oEH3g;0f#pC%!lX?PkhhfSZ|5{G z!&ol=?wamcI~L1jYYon9&$D6sePSm~;KtrGYUYU=E%*Hiu5EddjPjIvItkL#8X6 z;PZ$YrNGe$WhZ*Tt66d06-?HIFFNvwFXlS9c^Qb$6wbL=xx|w$8Au3UG1re8x({{c5*3hYvh4nMrN7)K{7+ zUO!4u9X)8SOe2rWVpKOZAMHiAin|j^+2zH}IUq8VlWSt4@9A`5ok{mdo4P<2grYN^ zUY$X5$5>2|h0FXhr7XQiA#}IC_KDbe^2TqgRFdp_4wmw|1Unra9W^y*T|cWdwa_Kd_04? zmTxZg(mkBVi>)~a!7mNn^lQ$aGdE*ml&7X9Ck+e? zeAn8bW1O7t?ChLsoo(uB?epMW2B7zwYy*#a-+{seS3kWvEWvDL=$1z)R;{HxZm!NX z`~f7=_4WYocQ=RmbSg;XHi;Xdz)8pXzpMTZkxu){1O>X=b9?a08V>?-#rRZvk?gH@ z5Ecr!_QrSZOVOGV3pn3w7jofU53bZ@f(wh5!^F`gMDQuM~Dy$e?_lS0Ef~E`ObsK1tCe)wb|L3Nc z@xhqZ7oz3%M+#Z56>h!FTFeyejB0|)G@2!z#w^hZ4-HbLL{l|Vrifk^FgE$0961{q z_Oc=%(eX@2Ehm~D&e%&6>2=F>e4DyK0a`U&l324=8Z#z(OkKZG3Fl}7Z-4IKi9ue! zm(9)2h2L^P|IlQ2N9h4}JFPDm&wMngrukC(rA)O^xtj(RL=)a-?2$a?{yd?32d;}) z;SsU~*F_ryRxG_Tai<|)%%?^#4Pn}VWv)$F_{!- zrSJ2GpO${u5`#>LBO;~b3?x$m<%gE(sWRBR)cna6aQ)&!6(2KbC(eDibYsX%7m zB-~(ZAM2=Pd8^@e3XQ_ON|kDm9my-J6+4h$85mOKY?1v_|CzoQg#7ZIclQs2if$(+ zVqJGn>wYwzoQgs)`Es#__5_vrHl#!-z00ow8x?qfydSt~IBvZGjf)61)-Y zekTIDk)y#s;=Iz|Ee{jR?g}HTE$PzP|yb?#O84U2Bo%Vrx z_mLI?WP9du8>`TKq%P35e=)mb)N`e1OED2F)cqNe4k(f?28(r-C$ZQ7ZD$4nI(8bC z_dpV=qBR*<#3Y<;i#9HpY41^e+Lv2NyOPE6i1DERzZ>TcW!m`hYfBPWPw8EUPF@U~ zF>NR=eaMAV`r_}ED)W_FFCq>zZ_Ex2m^EU^8m-#1$q3@>>m38}P-Eg604W0Q#~E*t zbFuP!=}Y5QRB8>6%@0`cU&_AL8lMp6jj}=tiKMqa^v>HZA164 z_E$wUZPX;ES^EL~LY>Bp*i-nCzg402->NWP5#q&d^l<5#bIqwq-~C0d_Hah3MWr51 zsFY*%YpQbvZKrODDos4dd=kS~+ttC95YJn9jus8ZBrt+BOt`mSC^EGKa@5-w30^Z! ziC%a&(CYCnlK@6Y(D?=j?yN~Y3Vs9JC*7d@4X@4dnP;63>A|3F^l5vBLi-j(cJW_HX#_?gZ~I`JyM@OEWZyT%ax-nTYRDV zZMZ$Zk%!Rfdb5j5ozu9v1V(FQ!h~vw)!Qlv*VE0lC~VbfKthiW1VY3}nwK#U2LF%f z596&<>G>`gcv(D?gMnE+PYN^aSg1m}5yJ{-CWM+Tp zNQctQSg_8~Q$7h-j>o z;p200mkh`8G>y1L{qJ7`QJ;OK#JGe50Yc@t4hVZJ0tb=Zd>P@t|Kf=M5CCPWe*24L z%D{sAnTRQpH5X;~MG+WaOkMeG>mV4Cp3$~MZb=GQ#MB3Kz936YkV0z*$t7_lh$(1+ z$deZ!9WVqFTo(ZH;_{lsS6Xh?*WV}ZW&X*HAZSx#<6RLW;Lel)HG~X9K9uRW$(Uh5 z#G<3c27ysF$un6LB8wHb4($vYDYsHwF_#d0%N3>dhp%N{adq)v1W}PqR}ZaYP)y)E z!<*JJq>;%ebgMv=wou@uy8|x%8qB((**%@m*-`0&<%1%xd0;8Y$;k2VgxHGf2!!Zs zR}QfJx;o{;LEyyl*{D zR;wKQhW+gTDaqv$OIh2>mY-Se$Y32NtwGhP8qb##wGH)9v#Ww2w)p z(5~&jD`aEC|M)+)K}RIyOV)a)(PWINN52qS1h|kR=il#>@0LHM)|!4CdVutXa}#iW z$8IHdfz>Nbhje-Ja*CXK$JL`~FlnlU&Rf69$;y5T4Y&=gwxLCiW(aHMW@$c(P#?-J)JMS@VF9j9#0F{m{%aA``6jk z_5^Hb5u>lU#hUYHawD^4{|p>E?lyecYPMd~&bJu;n~VRy_Hszn+n7=P|Na!%W!Aqp zctooRaCOqP|BZhE-y|nDDkVdLV$DM#Ym|Ynp(IEU8=HOhUr#gh9|Y4h{=yluX(o6a zHPR2*Yqq_zZ0l^^v`oGKvF5*3@fj58*=y|1k{I|2`&Gh6yr%94#Q!4ie3|-`ZQ-`MK0~ z4`Z+f_TBvyo;f2A!@C29Rkh!~PQ){Z{%3JQ|9rb(58&IskVBweqo})sl`_T5ryofu zNre@1SvnfOLn_jez8#yIZ;& ze%t4{?|a{IuixkQpTpr8p3mNEuRYhCbFGbni*!JQ@>re*we^^PV0j&+HT{vcJ93XE z151?ja3XdT7$zxJ`Vc^yen^nU>+YyJ@6i}zix#+-PeGex_h~_-=Ib$Vy}0ZwylL#T zsj>ML%fJf|;+w@S>&ANGr*Du}oPLk-dFwOH>bP(J{&U}7I9s4;=9C+5Evk7!E^ ztQ+T=>Yof-3pL|-lYcO@(_P;F@J+GX_s1D`k1oK~`%{ka+;uG|dAGjGKc(6vv%$gOdw9Z$3)|bK9QysP(T7U}o&9>Rq;d%X9XnCfg(n3yYSu zHYls8$$!PD)D`g`R3!L^2~}f*lEVpP?V^3ztWmrUkcp9C0gF=M4y0A*^*G7k@|8Tp zN8r(PL+dJSzGd=AatCqjqpYuo7cngDgK{_TZbgD#vQVzpX?f7?I}mNfxq04+sP}=V z&N<0w{=9+SZE|Pv9wzbg$kuT~>^XkNF%?Hqb8$2gIyN~c#7}Jg(J(-qAv+=!lJ7F& z&+wI}asDgJL4XDRiFCz(;T<_26iTGKWR4Fk)@e;1n0yH(8c6qwsn5y$ua)+E6)1Uq zL76bZjyGPSg|S>sSsK1fM=w@7^Fx}n>a-TMb-}BY@fBEp#ASeua<}p7wDwE5T6e{9 zao}K-1yMGYNIlIkZQ={;w0R7?rI3U!n%kug13g-&p*>NMKmK*H|HrC<)F>W9Cq>R{ z9+JG0WAXW^R_A@OI;eCCCN6f(-$9Ua`;!qC&8)0t&w7N#5Q8LU`+mnhVXM&g0p|(Y z`hci6Jl2#w3H^{aS^a^3i4vvb311XBf93}n>%HF(zA$xvOs#hdTkS^Pl#7@CG+v@Y zf$vJWj5>dD&6z3JFBJ$Nw)vs6{ff_3u3O z%>Z{MjrU3Eo6`hP07%#l6(IWr)%fXyn^-P^4R{=5+YixE3YXB(e{g|m>rphjy5 zRqIEtbUyQT`pmO9VrB0R-=9+4Li?#XO-T7p>mgX5frsWGb`0a8fJwzOYv<*`wu2t@ zp{74^CRnj0TpgESv*3*NE&OX@qJt4wzR(mJF984(|DD;txcj7WxzoK~RL=76oEU6D zO;KnY9-!SoV zmFZ*fz;rH!?Fv*oYH-V8|DH#zboSeGJvpsSth(Rz(w1-h7a0Igq^{6Qf0IB*ncROky6bH(&$rueXji3*tpaVWeN zb}AF%TRm8sZ8{Z*f6D629t>QVsfA+P;W;F;Y8C=ORUi$Y`B4%20d!OQ^FjNa65`1| zZ*#x$6V*sfr;{kMk;|})v<>b_Dyt0|`2;Q>HE8Kv4$i{KuaA!A zBkRSB=i}~+9Dn_F0BeAKA*p3;1t! zeISwhgu}smQ>FDRBoNP~b-|E{+bqS}qqP%cJYZBPW0R!Kty zi7kF(uZw5bDd*l@%Q=xw4@48W;bXta%@kZpbm4%zeSzZUVDrrxk|td+IGu6Ye{k*^ zHLO)^@WMOl_VM{AST-Vmm}Dor$kD}0wP1$-DwIcLoT0ZAso}Uy=K(IvfPM0&&{c)2 ztYf_Em1mo*P(BTcnQdG%xgmqfhJ2=+_aqYp-pjv(i$X=+Xfu;f(J?mqYTnLWVxIvN z!A$%2xMGDrK#qQ7|0hfT`d1E1gYdk!2Jig5C`9Bl)23PWL_H;58-aNCtUkGG&IL&F zPj-B}w9JBx1{W!vwXJA)ll_X%dOA;<)jHm+hO9;38Z>#QDZECie^;wHoGofKhGn{~C|yk>H-^6CDBm^h#$@pAP?VU6(O z^*p;{bc#-u8$rrZYo!U?s*b7Ze0vj2G0T|Jzl}>+osYag>XI0k{&02ty=uwb7o14j zn1_n<(^a-^HR9*E>E8Gy9I4SwA7}8QF!WBwJ-gW7O=Fbu+5WD&lv|Rsnrq^|^lIH3 z6qU?BPbQsxRIiWNUA~yq!sxk7%}#GCqfCjV*D+5(a%hplSLyeR6I<`eP2a&eim1>q zslC7r(Uho%%*56akJbHF?|~GHPQBCMA%rsN-^|kJY3RB>9%gt zt^SoBf<_xCC90ntChqlv%_TzlS8$<=CC@iP+_fByqM4Pk-)A?*3bbvw? z%^yHb%ef|^l9jneC3TOzdIfK8BWeK#-E}umSm8FWc&HGPxNgrYd~$}r)*}V{6OCWv z)j2N1{$w-qa$E2w03axlq!0+}3dz%yY{9wH&~}94+E3CsnTVi#D3_c#%beb;)sRS< zHSLp$#Q9aBh?n|U?WGUO{hKxQCrP!o$kxB9xTWRs@{NHa1#4dMQX^)@{O z9SO$2_e?vRiNBFnIk==T0P@Ubsu}kt_k)Z@^LYQ6W3-TJGYE)c|iDDeCvYjc#AFuaCMkmPG{7J!&J|mz-cBUVE;`m z;*VY;ZeVL><^vPts_FKzcKqN|+j{%)5h;h`;GJZ^CBPZTOhi;ypSM!ou(lHA@5q2>X^w-+8An@O8B3Hx>WNoev*k25%3)ee_u3tql3?)^f+ zZOk`oDF3xJ@?F-L_omsbXA6hZB+@bomG#^JA`z4Qb~64KR&}qjb)C#Ajc_#y<#h4( zXwu|xwq6>nWTW6~(f+U#R(wHxsdul=O~A$W!2eI0K0<BGk2CbB zpE2<839HU-Vo&RGYM-DbL&hZ^b1{NNQnLHbjNTCrd95Zd_i(=1;b^Wj&l%_6L5!!g zV)XTpu+vR`Ql<|6MzNLLLHZAn*to-X*@Gd*tExmI6NIM^D1?koKB5iiHiW&n!lZ_7 zju+@W)@L!>Jwfh$=Cto0Jth;CEHONwT^WD4X>PquUxbUvj{<sn$Vn4|PtaLN-Z?6S+#2Q1Y8>D1 z;4L<32{ZxWb&W=NIT7&?X%RtU!n_t+b~kGd!vOiUjO@zF>nd#_UpyW zR*8=~4&{hR%Wd6cMQth_y#n6-a9Xg#S2e=qff2Qo7%rmXrwb)($q;;uIv{vWYbEho zpw4iZ#rlKkFv0ShJZ_Z{h&m9)KCxo+AMs3B;IW5F+fvcN&sYiD1mTaJ2{d6G*3+~7 z?on4q)%=l3cUXcT*3yk{puuDm7S~rVPpcP7r#_;`WeEEW z31Gi)!{ot&A7s-`mClsweMO&8>%8Za-xG+VMW~8sW^98BK69_Ve)*}kxVkL%-`SEf zl#V6aof{zeK=J>wwN=POuB4rr+vq5etPK~S!qtoBII;CNZW)8-<;*A%IGyJC#lQb*)^5Up?Edo*?~@h5I(E@z1e!P+Axr5A$z&m4;`hSj0!{K$6_DGLPj+Hr4KHci z^`AL!vl2vz;gT)k+t~OZ?7KJPG87FB0ejnv)o^-AflbbO#2^Rm`IhEK!!SD)vQu{$ zXtyXGpHfJ;T1SHUHpDodr*dU%AG#3*R({zage@sT03qm<8TZ_AO}Btr(2FUQR;)cT z>%qQb25BVqzWy^beA4OpB;CL<~Nvz>z3eB5x6;CN9r z41BdK4J(W0veeI=1`asmEJl|t;9rHpA3Z^UpRiCuifSeVk5M0mcw6ib7m8Y^RhP9J z?h4x}Gm@$odmqI{&`7Wrj3hi()i?I&$JTrfvIb?Qt*p<_fG@t^UgGB0sm+NtxnuY; z8p5{de59UO3>P8mAOY%C^mX0+iLqYOcY*isCWWR2IuV{vLlxGs?aFgnW0N+-Y- zFISg8$dKJzk>Wi-m7wG=M}o6xl~8urskVS5XymsvZAP&$k@Z-yYoosEML<{K1e@80pmBhPBq@{g#(0qf$qz7-n-2d1Rm_!$KFl2SCc=Jxx9RE#huZ8 z?h2(W$#{p?A8W-lNzutL;>r?&!!sCj7#Z$I1>FRdGyC83d_SF`Hn*tJuY%{m;9QV$w|oF0gy z;G1SSvBK!UqET=Hfcv=hh^WWjZ)7=lGY-Y&hX`gKdbrDI;Q|DDi513ySykDrP)vTx~ zhUd}I2Qtw(|Gk*XOgb@BjV35h&Az@hR;qXP9`ASiHEbSp#!fpzRM_JK;@4c~pOa86 zc|?>;)Ea|q!-RQ|j0wfAO$Octw@aWzQevcc$tSY*#FQb4t<)HCg$D-MOgcDZ`?I7_ z4`+7>NYaqC(p4$h7HR%^^V)5(k0@f55H>WfJGk^<5U#Dbu9~l0h@Ch~e-2U5^CpKa z$~KzYWJIeko+F#iwp#)b)r{KnuySW4;R z?CvLqh%3DT62ZjoB>Re|} zxL6%n>VjyRb-aR`b2CTKiuI-nUDrb*y`htyqq2m#;Og^>NdGEzHTN2XeN7f973#no z)te73gQ1GLb&QLYez3dC^=2f z-I;rTkiuQTi5$^V>_>r6q^9#9(lSalB#JD;rd#Ag55c{^h=xiIYh36UEz(i%Ebh@z zipQdQ^$r2%dkQ@<*2v8#p1yqfB(XlrJ>8e<4q5yN_cJM-!1a9gb49K@90Y+1sm(+T zbund-3_i(5K{WS-aY#)wMBZCPC0qX3@$HvZxXTujl2dv60XbLL<6*xwG4i9k|hX zEyf;}TBY$eN0%P9G7u>intF_2=OwXx^Q)X|6}NN3Kk<@OX$WfDdSQdW+!*| zpCGe9G5Lu$kcFCS`0;jr@oXy60?P<{ zetf$kZ?Y|T?HLZ!OgkojJpyXAnNQRHEyCj#wR8c0N(}41?(%@+RBoSm%m0UYelR_~ z;(X1v3#V|l7(qwgYlFb&OS9|-pk&P_Ix~uMw%Dc1KjrkX=zKaa35;&)Ts~(-52M_FY3R}TrClWAD`jeg6N}2(pCj><= zK7yiuUcF_joy4Z!-)t1;` zeDf;cYmnqCF*wtW-7EIBMv#-WRj5jqKsF6Bmv0jl5tI9|EBdt02*Ucuwf}Fa3lm0k zf~CcMqepM{d-j*3gl|0uq>BCiYnfc>-D>@(!(%qRrfrF6-?O!eYf@1|kqk*(jjlaZ zh}*TV3N9)Fanyp?$`kCNig~m4!gE_!3Bpf@HRcY`{R#@iNa+ZzoW@AD*dIJ%SuSKL z^u4dMAS(daS4!P~H4|tp59jwKw0kK*=%L~eUqs9X`#5+^mLlRu`+#jI_Pf@LN=5+c zPNT?NcE+_Xe*XGcg}h9->pnN2E}#(%GNORQ72wL|y|3)Q6pVE@HQ(wwtdz8$kecyW zv0bX8+RKV)$B$FhLAGL**&rt>>nxoMIAIM|Oe7%A1DEYktmy<4+$^wB;P(HQIs=rb zIJb`)6CzP6N39b`^bda-n;l>(SI*lH%CNKv*Y}ZKY6;zmsQmhcNk`g^ zxK^9IBs;>&`bV0q(z%xy>>A|atFvP&1Ub>${569o zmnt^T=US?OI&;t(dajhln_*eXX4@f7k78z{vkR28M=6}o zYaOxpNmvTxq7_%+(ESEkavrbq7%F&>BJj2d(|2Ny49%dazxl{=jGAMlm(X>FTYg^O zys^n9?4SB*W5}HbG0UHuSRTlr`O!(KR}rs z@8cou6V$6)hk1TRTHqGBkW_tjoxn6ZY6vT7tosx{Vge~9PZLlfXxiqZsvnl>>+3Q9 z!)5)?>I_U+-L3oXi1Pt)oTsvGG{dsfO`o+QXtA1>UW=&QBxeN9u+P6MLjpjvSATM1gZ7L;#E#ZE*ZN3PH2}m#g(R zjzaMS?FyOmL|Q7M=*4^CT=}M53F=7O9E+dv zMwX$Dqw$TmCOMIH3uD%S&eC#{aTu> z%-v6xS&kO1K!mfU*Zari;>H=oMNVDRTAUGB}lf@O|`^=YnWBlq< zwAKB}0)=C!50LCU)LVTCuD*7xmlL`=NY}E+zi0&g1^=d|p9)N;Hd^I^`0c zM#fx4a*c;V&UBg$iwzwzekukThMY_A`4qh>YF@eypF=kew*SYW@^}%5wP3FvP9&nSQ6--E z^Zmz-I=Q4Uefh@%g?s3+E>E}nyqX~qG?yjpYtz<8Bo~M;Un0RFT}GkbO8bOL%Io-ybfhTU(PLJ7Ml0J|0q^{TF<^N*frH2FY+zHSA|jP#BU4@{W3rm`2BEQHwf`4 zx!RHMmntr-pXO_<&Yi{lsBkxDh@PoYP3LR;K}jDJm+jjRUUeYBkS0?|^e#oPQ1#!B zX&|po*SgE}1(y$N;Ryl9yJ4S%ptZ8KpstBVriz{Li63 z0&f=k!)bW`iFeG zrpFYnyF(;^+ zz5BhoL@k}eetvig+zvEN=Vxg4bZ=v-4+BmYoXTnI5pm-Luo1-Dm$;UX*8M9_%ZG)* z%kQ?pHn7N0NYa+E#eXK0F1XJL59BF}Ka0(hMh%pVZ&fRax25vA$iT0${$!}{2)|yd zu1%r&ILFXW&>6b)W}9X~*n5i7>K8yyF4VK@H{J0Ago#i`-(=_s&T}Qm^zqwAQJS1} z){+Ta8|nX2>>h=ceg1!>9S|{&F6~8DCJ>!P;Mr>*AONnQCx1&g|F+<;R(z3x1Ffu1 zW}wY<<8cOs3)LSP7Zzi&FJt{SKTYN^;1C=*|lHa(6 z<1}U^*BUO2VV55?S@!bYE)6mgm}Qaaw8xaOA5X5$3& zRiA2liQ z$Kj&D=Qw1~P`q&0YMRj&ycP+y+04d5%Hx*a2ne|;sUx4ZY|UIW1r6rP@5`s;hmw#r z;qCKtKElGM-Hi^Kolb{;T*_`os(EjFy11;QSB9yH92B0@=(zxN!4q*%qWDwo*9bq1 z0mlWm)n8V+|Xhs-U%}-i;I~4ZCyY^%6QeCP|FCSHa9sKoasN>tZ;6c^AcP~GqJEhf{M55z( z=!L!tU3>!62N5qY+v|q!oit{rX`=yW(&o>ne5iJjAy1p zwdVodA7%j=oEYxx#2DKgG^y4>3^YF_=kdFU^3TO8oxcVoV{Gll1@eprxEfYSU$hv0iFwj$KcTG<#nF;#Ao5{}vxk6wm@)wP*M z6k8Q$gtwpsyF7~K^Q}wbvq1(3N@h9J?hQ5q98N8!)pEl7%uR0G+Wbb{flO3<2~d)V|*41%44L$>u{#>o8s8HD1ndevMu3dC(28cEpf3=bgi1VlSi!j@tb*I#2 zj=O3;i=Mgi z=(IW)bxV{n(a;cKJ*ilE0Qa0)uPG;yy;N;c5g_0KaVV~vJ$mDPKZ4SPUGo}cqm=z! zQ;E2tHQ9v2I!=I$D)es|rw1FBc<*2WVdX;LDccGl!w5LeBGYXQ-Z_kPz7D`~3_Jyt4edc_ z&}VJWMU4VSvJjg&mlPzD(kYe|wT4oC=LN~HDOsFw{+-(}qK%xcjP$LxH3WFq;Kvzw zou_GZ0^TEN$&8P|Z>~GCVp|!cP2vyJ$@2~boltl=zQODFm{k*nPijOnRyo8q7peRaZ{(to1UK_hLdPvk|cPd2cCh^no>$htuAxv?_&;vkf2G5^9{jT?^I73Wg(8v<5TXK&X<)Mat0jF zeM&Uy*>n)^`VEeDq#kjpdeXh%Q7_7k+psj39O8(K2tI5|gkae{bDfL2eXY7Su@K1BTYmk!ewz>>Tx2Gy;yNfd+})t5#4dkh<0XKn$|!Q<+`zRwa({#Ai* z>kRP(vBI+LbPQw{owT4`K`(<&gkoqr@3ix8wNi0I%CKV)Wo=cI&=YXEWtahe^wFC} zY1WXUsfyscI#YIChF&)ZsZOyG-gLgoc~x5ehpYwZ}mRWXV{xJrTwg!lK+x!3VO1|?D9~zpehrxd&?;8u!cfuEsm6%;_lPA z9}eO1;I$`F#ea1%^9f>R3q;ax-8E*_9q@<)X8)QrztxsJQQ2P#uRjf}hA42ldx)3~ zT=<3f8$+^t-PD6Mz8D8|xaM{TB$5!kZTYk=jpEGf9gc|oyu(gIgtzCXfj&Gj`m|v~ z%>donm+GC(vN9x>CP$f_s~V4D)gi*JXLLd_(Du<&CEYsfjcxJ{tk7{`59#>lKAo-H zNU&cLLAbfi##Od0RXk#d=QguWHB!lEnfa(#ItXWQt1>9H-Kgtky;$z zeJ;6GB*px46%~?1{p-WZH97Qi-?Vtj1_Vn@g&7^MrofTwgSihQ3Y(}yKe=M0yi>Kb zOtj*)(tkRqpqsKwDIGQDOvi2b3w->mkR0RJ6NODmC{I*>p!b%W+V)QTp~Jz_IuOB% z&X!qG|HN*c%!2qQ!H=T?bs>|hQQT^>rTWWvbdds<+Q3U)EnS`DQ zr%HK29K-o`A98uNay?7@;Rj*m8JHc;TF|fC6#eiwc#a8s+ldL20*H^%#($TeCwu#F z?Xd`bx+$CX!<7y5oDo3N`($w4@jk~ZaBB+d2p(w*rMDQ%M~$%?Sr02{^q4@7&O;Mh z=_9pZkQ?GIa%~Q6bqK)uSVWf8D z-O9wG;T_ToX!jP#Zdxvz5?ppK?1$d}JWJ(jMQdSh{9IjTujdNEf(4DdZ)rA?cwg^R z?TH%w`OxMYdaK*z)$Xi#IC0?m!)D+RK*(D%LrQ!P!7_`&C{-<0-VPb!r5xJ@i?4`O zg5sJJMG)PBepm0rE{G>!Nh!gqsl+J*X*Aj;CX*>yi?p#X!^YyMvqq%R_HVNtXid8f zrj=~Bi`HqFD%Y|Rs&7Cx6QI1~TQo&{EVrKi;|R@91?4^Qe4Q-hBy%hov@e_kf5(H3 zneD0GkI$JHmB9y`l%dYjh1vEjnLTKDVmL8D9cyw1b^%b4O#+;^k-TBv5<@}A)I1JK%lUes4n&*w0@QJrdgd*$H(Z1`3;v@O}%iO+sE_B><9f*X-s zP~YF>8Ze8+K_EVmmoLOsvG_1YO%Kq9Jgw$Ej>v~p^-fQ8 z{jTp93KV(+&EFQ<-Q!pf)zwB^H``x6JGDr7+A9oa(#bgyKG$;mPN$yVbL&mwQhFn2 zJV|9orth}Yb1Am_GmONamKwRrGd;@I#p=x;H?e1Hv+C0NF`!&ivaKwib`bWE5gX_gQrDiK7nFlMJ?NvmK}k^a z=0pM2JC97hJr0Q5xFoS;)8qU79f?Uu4G?BjOcnm>Q{wE)qtbkZ#CoI7r&{-%*3%H4VaYzJQzeqg ze(yuMoa%l;^b>e>fIk9>#spEmeT`ux8S-tpXOio#0Gmu0YRwUq{7yo+?TbQ-PcAND z$%cK;3HA$=C{p@oDeTQ|f`qMD5l^ra_7;lWwW{~!)0W#kC4kAs_h+DFc?Mb8H4vD# zk{&9U?w3>FqQuqvfr_U++93Rnv$oRge&VnE|2^c&{9TJ)f9+w?AD(BBv;lNgL}1)+ z^ESHs8qrN7eAyGNeSF~0{^G_@xc=-nLMv!Wg7bz){Ht#ekOYTffHuhBySb0Q>QGk1 z`M}|DYGNH?0erX^E(=Z{>)k)mPXVu__i!J2MUhbi1PkE>BTg>RO`sm_wUd{chO0eu z;gk4zFFuB-eWcy%le(bbI@XFz_FOBUjAOJK?-lAvNDqYeEuD9EzkzQYrL;Y-X&ho)cuj1;OvtlEt@bv ztPHKloPe$~r)xDX>zp$3M^LC+pOKUDhfg?%I>FU(-2?u!AII5*pT&e+y|8xkWp(EZ zJ?nS)4@7K_sE>5bEb!;+s7e$g5ej?kMUljGifyTQ( zBOmBm`hi(6-uRD{@tZe~Sp^ejR~EdN@!=8v!9d}gwO3MMgsm~uwlLt3R?Aa`lIr~b zuFXjZ=j<>TEA*%{;Ra1*9aYR`t`JuYQMjFvc3)cO16R$IaJRC!PnwV%CVX)UqjqgG zXK({MGOJ_@b?Hxk?*Hko_+OgIB`UmsH?^f?^cDbRJI?6F_2gS$Uo z&m2lfE4HGl4Wz+9!9N`ngI;qFMfBf!UsRv_q-73!{3nUv260nn-?Lz1F@A2^MIstW zhk9lLG@??CUIMIz=T)fwZqgjtd%tB6n$;}edJpmo3FS0MeWRCx| z0^&CaUVwE3+p-0eO3-gMvaZl-{7O2CicOwb%tyE0_)CPAP0_n^5gnOmnxSl&Tzm@# zru#NtE`G=@4+~6D*qW>sC2~7XuQCcy8HJm*PT=2+IGAMdVj?LTFEz7 zI(_%%YuugbN^YIp?taZX z_L|i;Qua|P&ml2jyk(e$R*k(#2N*aIzPz|ZE}795SvT#dEb`yIEC2h_4ufmF+&S-TKiNYDYHIZSH9T8XKbkfd5US9q>jwKQx#M5|;oE?RiiB@v=i{FS zgYcul|L`xtsFhlv45$_A76X>X=>1muN;(8ilNq-XJN)&_2+l&+h#ndDvC=;jEv|cW zGR~m4Z_l%-f8^ZZh5+)6PDJVk@% zv4NNBpD9%}10QTGjMLLor;W9xrNh-<1Y){&Zw8162ndeOcI){|^_ty?@bI7>H==jG zRkNnUU}y>6(o)9$LU3R}OVsjv24JvT_pA7)vWN)9%+PS_NuP>6-OGTPI35c#Zg?M<_*s!}N+uD}Li?!O4d~;P) zMqoTbEIiLxPE@*4Y0bqwQy``E^mGy;9wA|2SLJGJx?oQ+dj3Yjk%|F#BN5D3FPfY( zmEUDvxX^unz7Yc(`v;gO!)4r~`C)fsFx~rxlpM@yprE)G6cQ47=qn_osGy)AD=RB6 z{|L_uB8?z+oLg3gvp*l`eT5`XNlt!scDh}5zArJ~7#svfWU(Wahn=8zPr2g`Kj0Bad~oC89#n>>98S! ze&9{H*z7)0f=4fnN%hQeqC}@ux6$wBu~ORRrWKipN5{99acp{g$eqYX^UdD(dCFO> z*JnGfmjWCuT{A5$kl%>{2FrOd^e%g|TdO-2>Uzzt;l#pjCk-an)Hi3lG4v?((h=m( zj5dF;YTYz6QVV;0T<=S~JSK@CAS{pN-oY%%A~{l_Y$B zDR>k1LW~7E$${E!FGRnGAspw@7te4bMh4&JE_9WI8Y(S#fL|tg=8nndCHd z+1^SOcG=q;%3@Y4+L@}H7-!Y;qZXe1?m1JWQCX6dG~eLtG@nw7ibL&jxEvT2HE^`X zoRX4)iG{_>OQKt2tE{A?q@r@%ikQ63Z{3%~>wZ3vic?gaE1y`9!HM$jaz`*LUnO^U zc#OB%8SAV2uI4Tb2J^f=>rdev89s`i8nYb9QP8S%`|j`GKFlD8dO~A+0MEc6VY8a8 zvAaIo^*NQnrqO8fsLhHa;Bb+bkD!wjSjDa!$o}UoR)^Gq=@K>WU`oK|u-_4o$yOUo zEEKZ{ymH=Bz}!zZ1uaI+u&^Teif2xKkIgJ@DnpD>-LId!{u55Los8B$UwodLT7JGWc|7$YDJqvC?FKT-5sJ%4ypLyv^=? zhrnG~Xpk-mUh{W8HyLNt@ zZ8t4^TS+@kJ=5K^TRbX~8=r42cVztgjZy4@u({2r4ulilv!e}2YaOU(BW^1YO0S>%2#VCZ>vWT{&@=DtKtb#~oTyY$%u_RS_Et9_ zv^x#n63=n)`0VHCY;!ndm7IZAUg$no0sfWm#N3CgWX=y`(#4=3`+;04;_f1BwV_j9 z?J<@+{?&&R{;GwRP1>}@VQ&)95PjaXL3Q=6wt5)B5e%%!RZ0iZ6c-y8cv!__ZGq9E zk|L@o0fC1TvsF}9-&0a!uhtp&5@SVj@>|bWHF_kq3}Ir1WbJaFf*tsN~8=Nwfh+NC$GF#X@bdnN&-qy3&}At7a-a58A-W#klZQFwPmZ6T29-rnbt>0WFc z9Jb&@g%h(n+uQ3l8)S8U~z@GFjXPhr0=Wi z`p(qpHorWnXzRhrmP%K&QX-g>H#OgCaJ2dq5fw9FalY{iWX0x>hs(zsg9((8Y|ycoQ_UHLINMjA!s%90gl*pLu92F{z zH}8LjhjMdeXI0~kEKv$8;9GCG-aa(d(0QUwiBZY+(Akb-^47aL&E zbP;c_xPdK(S2b?@Sg3OYS85!&h7_@2z6b#&E(ZpP-hO~Rg9+F z%|_u+E~*&GvD0>MHh;XyZ0e_@!=$--ohCD?#na?o=YSFJVIumCIX>elT^Cx-=77@V zy29lYA5bmA+B3uHOaygFKDQ{WOX*_p3r}Z4}Oe(;H345KXc#n=jVb&9EWllT`C@TqXK0 z$OhUe?q^dn`c%ih2NtYPn%7GCM^Z?W(KtEF!XR*sY_g?n&Yj9;m)}W{IcfU)LHv_CRhgr)@c2vf5kOj}nUve1X&PfI<`Ys6limhC3`EaY(!av2&L)WsYUYyB}# z0r_g3w>!2rqg%W=eVp<^AetmI(n2ddtf(7d|E;kGu93!}_zm=A>H$X-bE`~CWxEMt z{&O9+_LWwKAy))Vajnfa$><|Bbfc@!2e>>o)_5SBo>sPQYGa<UuwXXcsod z{6y)5-ER^&Y4G!L^n>{|mh~@3cA= zv0#kIUDVA{r^fH!zmzmAi;Xz?k`QWiLd^(Ou_m*{c23<=6?5CI2}rBy!bTe=v-0a6 z9kCP^Fs<3ZO*wE?iI7(xAjuqE-S7p+tsuX)p@r07@$vE^!t(bq>cVyoKXxPV4I(Be zKVJMg$rk=zOa+U;Vn%*GFp3T>h~;So61Fr!!J|uFzo9wo-)BY{kJMmL-Xw9&?JxBBs&1w__UPXRQYTeIz8-inEr3_LQ!pDsq>maeQ+JV}6Fu zveuo_>pV;pol-KC^ndqF;!8f3#$%17?q7ybC2)&_QUBR%NC=KsX{W?2^Y`72OHxz_ zjz`nTOzxX9=?EmW4$S&p?grgOdYu?#=Ix};I&H2&S4^rC`CYODcG|Cq z3>ZSM#|%jc1Bu=eA^W=2Q#seSlzS_$d6u;$O~A>5?)%fT#Zn4A zNMecqcYRMjHe5>EObXAvfAgCx3pMZleq6$t-j^{^1_F-TmcB91cpIu(2L7j|? zgHwAQ54OhkzWn^I;!NaK;XHwX!6$U0FnwKEA!GG)htqRx%s@bK1e~<~?vgOX6Lk4h zGOhQU9Zxc|hq5#%VJr5GvXrp;suVGwfhV%nq=y64E&(J`h>m3H`a{P`UPp0vG|hkR zjgsXLD>>2SJkOCfwXCllKK2I=G?Ls5B3EsiiatNT6~86U8ITdCXTo_ujjws@;0|O$)TP<{YDsE@ScvXp*~EYwI$Kpj?``1QZIe^}2WvYhZSIT77QOk@-6@AIY#MP85Rt7D>7b zZ(i=wA2xeBP1SHr z+UWHbG#i3&M=mh!yly0R>UFY7tv&B<)^QWEj0gsAF&oA zhH<2Gf36#ednOWoU&1;{bF9km)!aH*q2}2!ut_tXisV@We4OM!wsY*Txg* zOJnW1FP)&RvlwMKv72pVn`<{ORSmT<23x%oj)4{?%tZSH|Me<({pQhi1w#F?ysC}T zN5EiZ%ZV=!Yj{7oyfS*=$gPbKzcAkN(vvm?Q-W>rSEleqH%jewuiq_j8n7+tAL(iJLGf+ey6W*aM>0$J=Yb9jAZ3d$f z)9Y8WAX=TC=TrP_Yg@c@htAg&LzM{TqVyX_HKodESo_k}8Hg;|Os2HP?`B~eRft_2 znJ$@N;S?A@oJHXjcsl6}4MlWN7w{GX2iV8Fn5#Ib*3wfFdEkI3n_8fvp4Ui3-k%E2 zuU=>Vb=nUbAUh_l0-sZ*j|dqTVLPG|BNB$Xk8i#g2UIt7=5L2D$!SVZL|J=z0jp0T zk6~wfVlbul$Bp)hg2ax#@afoWOLaAaU9piimL^Xhit}VrmL# zP0_yu``md6E}vl9j4_mmlK0hc^Nq#h;T*+aRW318Vl|`3)P-x4>9TnY0ORA+T`}%D z;OOo2=0UrEX=C&XfafCRdHQBi5>p?6J^W&3Oex1Rgq8lz#a_u5!SdD zXtq*zIh;=R*Ybmwmf@KNL0K=N=7^G;!sWz4aT|;w9kK>N{`l(a5WWrk zkdjaTEA+b#tKh-;xxD~YCX=_SsEG2J@H=cX;#IAX-=pv4-w(hX^n>*gveE19XPU0& z$?R0qh~u|Y{&3}da*-MKf$RVBu}z@(n&d3#allZspI;7?YDTK+IuCCHmT#+K{0U3v z(ZIcP-+Lh4Pit$cN<_Rn{59rh_OyRi{Ra$Lo_E4D6`NTDo1AN3wm5-Rc;k73r!DuB zF*PGSR6-?oOiSN+1RnotTjoh{W9l?f;t3az0chSu?rN|5p1fRy90fJ7G>hk`>9kqs zxi5tKZHIOk`9`Aq6&JP18G1?v)+*(JNF<1fi3#UE@XyT+s(<&|*3IKcfClhb5Sh`U zS(}56y)_g^gs9sSItl13n1x2$2~*8fB}II8XHvYUu0mj-B0K)8im{v=!x!vqD`_o_ z1WMw1Smh>Y!lDBsx^D-3i|U*T>%6l&u)}T3D4^jJ*ESNgcq*ZTWoG;>*Lr*S?DDMp zQ_vsykkA|&%v{u94_^z!^P^~dOqi-x9#LlFh?})+q z!d!SzTOcWc-k6}z?MN28<@R9Ga0bhOZ}n(y<^=Kp zDY1~Rr@OnmhQXpWkM z4N#}E%cmAz`3ywVZ&;@f@kqkAJp;g(BZIPPeD+jPe?96R^Z)sFv~kg#Q7v-_DMY|k zx3@+sIF~T{K`6a5RhZOS51ZIYOZBI6L%bvf5dxO1tM&T(yGAsZ&8PEK7zBPtbP ziOx^L4Wi7^E!X1jo;zaG|06vJQQB8L3jn20dF zQ?ES9-x(M%s*F0EK@v49^C4`0GHFoqw1=qt25 z9~~Y2A>T9Dm_R_Q!0&be_yOM&Qimu8uGt1F`BTyRy5|%7(($b;_wgfkgxa_wMAHX`YE0$5qm{md`fn-R*1RGyqIzM28rVcn4ln4=H!G5@k%dQ&7+Db z-aaqv?GeTxsT@@G^AjA~BuH`5XI9ZPn{pwMCNi^aUNVn|`|2Y|ooz%MCxC@?5vUe_ zLtj7W6kWu@#nqH;vjS44HqjzQ94Z=QN4W?t!?gJtWDbjkA_0}3?B`>kT$S(`YR|sH z<)h9SIn0{3&`KD-=Ov-CLgAS~JYXe_;i;`MxY=eMbW*=GVY9idO#xv!4`#&7v2YHG zKv$DX0Q2U3XU>K9S_oJNX`J8t?sK$|XoQNoP4m9Xv&ckyLNxF&P;?7q-Z=V1nr{%( zynJ(WDQJJNUP$Fq<90OLdA}Kh{Xx-88;`ezsnh#Lw2Lm<6_eYdQ2qDZl6F& z5OpbELOT2s!n2dzcoC5e$gmrg8#75y^$W0;f#*@3VcpM;z#V6Xu2*Nkh%SYI>6? z*@qk4$x>M_(-Hw&mmb3pOfo}NR)UV(ygl4PKp_hb4jvhiCy6B!Ts&}%Ctxe8umAM^ z{l-5>l+W$(yK(RN889N-{9JI{Tk}4uA!r`kc_+a2!R@#ynMvcTcUoJQs3HTdYIKV^ zoV;WW*_z({i|YSOus8(@*-ZjSfu2HT-L$w>id7FSC+S)GSXcrr%RgyJz8O;3*0#HA zfsrr=>8z~IE>uM$L9N+Dhh0Wdv-!#YclUGI(sky0271qH@JBLqCv>Lh&EGVC>pE8) z7Gt#=XJ(2hh{(|O2kh*v-^a9*e7MT(`$XA07`%Sv71TcD>27PLYma&AN9`XyeFs(-$;tBET=0H9 z1W;uA^x@?14rgpO`=Tt^c71RDhpVGRvr=wJKHJ4kqi?oBYl>Zq@M8RBJrzr9XH)qu@gEDY}D*_Rr zDzdGUj@58Ak~RJd@Nh~j<&!(HVyNw>AZ=QNro+dvI zNtUlp@)IhclL1)SD?CPD%jxacD^(x#g8Q2hZF8DG^^7TQYepD|r&kEB8l1(T=(f@# z{h?W??gC5gv4$xS!*CHIX_{v+?S`Vb3dq3nc>dxdlI@HZ_@8zs@45+EomTiLy1sgQ z(DLIz4Ms!vOXymN`3I7YJDHK{uhYcS2yt*U=6hGLqw+eEJEjvpNZgboEf&4UHP8R> zdKqkXLX?&gcB>pI&nrMyH&ARtWN&TB`lt@IZ&GWoP~kWnx{Y`@A{~&`!n5@8i&kh3 z1W*j~f#>p;n$g!*2FL^S)YZjLIPAL~EWS>Nz}?}omjKQOz_^lO=uc>=Eis`wx4dXG z(Z6rB9+20;QLM=lb?7MIXY)U|dm1!InF3!cNTC@8+8#Q{$drn0h80Hh$*=E}(riB* zwtAblU=G=}w(i5k6SX!J2DX+5S)DwI?ssbD=Cw8HXQsp(qaY_OEe#C~O(+?d?4lv8 z!L)uQW8N-sxz*xzmS1=rc?YwHUeNu+?r&}>`E1scqs>WG^(7!D!GQ(~4VAP9mk$$1 z%2vX9Vii=|MqO{;T$Bh3`s6JJ&g2<`3Eta1B^9vnebfGHcw*i)w6&Vk?!EqUx+%@`$R(qm1FN%glQWX4dyt=urVL5=%nhO6fhBHt&PM9Pt^SWj z>$e{Z`1aBg5`TcRJ`hV7;^1<%JBp0Q_$y=Ix%Krt;XLovS8h~rJRC- zxAhQoX6^dEp@j77uXl~bRARoxa_se0G50MA@n^aJz5r7w;J3SgH}2osQwx>_em65( zpWmLZ09mnUj6>;zcC-CTBqr5)Ogv+xoX>yJ^gO}^TnE(9u5>t)qk~jD%AEDmD5}*} zb!GO)fg*zlGTdAoB&?k-BpfH)pbS8f->$ndsH>$D5i4%OhUE|>i#ONrOVE$&g(BNA z6aG$d4+C{byI@?EC*-nAZ0HN;O=eiFNPj0!H_;`{;_bH|D)Ww=C%>!-!%ix$MyC3> zxM?tPx71>@R2w6TrPT=IJ|^__DEe3}O`qT0m(N-6%^^KuVHj*d{Tp(niB9mUVWEka zM?cNY5!k{hacg77OL)VO{Oz1XjEkZk{8caJm(#Bot|>RtcXf2oTfFJU;9V7J)b-P= zElJ~Gv&$&A!Y zgdGbEwd+0uD0?q=YXiN2n4O(^a(`EkYjE&19svj?d1+lwtG0}&H0>l;%j4M-2N9= z|6i@-FZ6zRzofo~Kz+3wmbq2$78DP(Ykc*6_Jsn`NT=Vd_KgLOEmH9)6H_=LbmIMv zvc`6Ea$Xpp(<&njhk5W~T%2nR8P>e_EceeRv;tPo7X#UG4h6;;p*7X(-NC=_)<&Fi zoSG`)-1PPH*2pRRtZc>cvvYKn-$NGm?yv{&X-BInk<28>o!w6eIGm5$*)!tC1VzU= z;{KYh6=XafWJZCxO)@5zZ3*B@QH5q=JvT2B%}uq_sV8-(BJwC?sl!bm%ewEpZ$lQ$ zqpBUT$;X4On=mI`dzI4r6IPTy6@!IdsWFGhdVl5dxe{eL9y>jp|Iyxnw}u|RmHx6} z$7AwB!kp<3bg!n44w3|j6uDoh13lmy;N>M87t_|(zB^qZ_rKo&UiAd*D7)L+>lI?J zDN2Adaxi*vIMdFjj%>yr^RZGT3TD#%EQWvo{`B866+aV{_hN&!rXnlB$oM!pm+gE> zhJh@b_x<_CfFjQypp50E{xgsMr->j5!`PrIV1EhkL&c10wt%ha$8Ci*=riw{vGF0FA#=M#&L`md3?0ut zQ`tE-KjBlutJ6@e*5_A~h0C2%6(`a`ZA}doN}Im&<*l2dUIUG^QM=%$yA%e>Ab9gE znNp6g-BUvCBc6cCR)gLU^zk4^8!C)Dz783H_xiZti z3TS}tS-I7*8>+oTuqf5RY^o#8ySE>@MJs#fS;T6c#bJ$gdI-q9fa77s{w@#-W^v?i z|1$7~Y}e!0aAPE7puOwy05=2h7BcF$UAOM#7aN{lP!H4S@zYKe?R6_?^L>@uNT+YS ziswOEfb7aT*%AIM9qFviT~enx-U^=hYAO1E+?Xafxl&9g3#R7>-5}!?p_P=5@E?ae;$EF4R$8jwq2``p=L7xT7*HB8xIpQ?F;V z3^$yJ_*|`=oSe+`jW=yvUUXmsW9y#iM)%uO z_gUxNYC}VVW0*4CbZ;tPkvM^DL$V%j1^TmF+SC~j3BqY4QU$m*)Aefqa zI&DX<0oSa(oO&4gKbT(=g!R}x-(NJZxG#C_@`Bcd?v58+mYVD^vuS8(tge3yko8`aD�H@$Tiqyx7#X!mGJfZaKFq zFG=9*hx#s`loj|Bu|K#sK7;qW z2Z@XGB=i&{Q%KSdSAlzP*8d4d;_u#-DdfW#Ge_J84;~^jLvoQLk9#XmGXp=n%lWxV zXLmLmWz{W#;NGXs4`amlJA>CXx`g2p=xF48p|lY0s6BNT5q#FstB$@aE2;P5H3%X5 za)Q|~O=JSDgRHS>6*iClY>&O$OdB9nZ-0-zzJ?oOfl@l?vw`Kny$Nmu9E}wUvd<`+ zydjSVHtb$HGj1XnP!RhvY>?ePA5jX_s0D_@VFr~^{{paMy0nb4bwa00i0r5xm3CajWP$hwp2o-XKRi=9uP5a)bJt%`mHi)fGA_J( z{fgZud49FKjAXJU;fDP!?2S0f`Elu>mXWZm(^8?zyvf&oZd)>AeoD9?VQ7h`^RXuN zquF?$#QwjSgX36eD`|7{9e~+|%L5?m`SbYax7?x)ID9?F1@nxTP5f>!`I`Teoel6t zp2v#YU@otV#e9Vwx$imDr-0j^1z~4>e;ndeKlqWk0@04g6W55{BUFNcZanu`(3i3%1Zk0bs9({WeVU3 z3jOS;Bj|e_O=c>oc$71g@)f>3gH##y&dfTTdbP+&;5)>j*6}xnD_rz5FE!e3n z$+I4r$U*?8Xxmw)^o{4R91To}G!x_j)%t0{VUMZ-^&1{s0c8xzPkzh0@+h?@`Fo4| z+C!PXuHQHPp}goXS7CMi@eB+s9<7Ab@gIgqpq2DQhJ_6Z68eNERLa6>K|A~J^-F5& z9Ki35&S#x?@_MD>{5$U2$(d!OMzM!u6V%*q2>IL>DrffdKVyL0V_I07iC5C)#Vkiz zAu{aLg(%UI#ozRkY~iToRv1HIPc60aN=oBA2c?!1Jde>n3?M70RLNpGLmJxRSwo@{ z)zH9lqb2+D5qq5)Spj(s-y%O8DUl+PmBq%!0>0m|Y)%{CR?f`K00|P|uN^EA=;Ub1 zU3>XHkJkqwWtiDKAdK~c$2owt_rbcHEJ7u(TS+-NPj@wIQekvWv@Q{4PHkvDJgPRm zj!jL~N*lN@PE&fC&iX+Ut{6+HLnN4;XAMGa-3TWJi)jT{RDbya&HHv^_!d?GPwId1 z4A}S!idN?g1MIB3?pA$P;wc$%QCz#9R?g@Ui^v#0^YgdoL=9`A!C4Igbz-XB;|$=* z?|r*~GRM8@8M2#^k)b~4ldQyJUI#D|3U4Y@9=Ul z*?eAb+3Vysd5)0d3g~d&Yp43aWSDm7*anfoGUF$}=@}xaLhLBCj#E(BrxtPPO~ipS zRk2g#uC3+}s>Mo)Qug1_lP* z{x9caFl;aspamYdv$1n6+lFiXA8z-%ex#2z!|tA{vbn?z571omg_iq_WtO-3^^V?> z*-2`-JFK#NlxLL84Xv{C>L0h+g3!EPQvXflEf50Bcbu+ommJE-FUnyK64_n%A-BN)%-uo=27?BkF8Jj_p}8?3SPB?q1#-Dh&P|!_ynf)o(w4mDWw!z3~!RO=g^%p5;4s zk9RuC4%g&Z!4Utuhdw3V6#LO4@@h~wu6JpRlH(PKyFZNmn)swBKWI_K8;Xeu>o;BbfFOqUBP_PvSL4+BP9pv{Be|Ok z?ZcXQ{C91BB`SmMUBLxO`Xo@0ciIxf3~7;!4@qBCvyc4oxMQDl+C-Tf^h2~Fn-{N+pnRo%< zr#T}@xiEp7X|+Ma4o|k1d3PLeUHd5?!$5KbnKzt zFDM6r~v1P)l_&G=Ai z`|b7YjnW6jqL2v*YEg zjBfPrWYe6vnFR#}nW+u-FWxYWRY&ga`bNwC3Mw?4+%U1o;j;?p5LXd=-au1jx5sp* zBkpPhNo?ZNHgAl}(rcy)n^{dwjg-NVO8R$27Ty_DtL)I!C`j74++qdb_Zm~bAUqVW z$KqIA9bH{LTkm^%i519w+w8$OLrfeaJi|owp>mRSe7?HMJq@tjvPOgwSRp4KB;ms! zksv;LuR%8MZ*G&xswxQ`-&mn2%f5YEcAL`&NT3{6X(ey|py>^AOhD6sqg zKyki+*Q_ddzimmNgyFs8RYqhRv%gjF;^p zA8yw4EWP_ee)~_=!Lc#!di}B)yk=Ul_|1p*t0KGfZz;>y+%IZsKdE`WfH%n@QqH_2 zZPd`<38cnx_~4MtcVk=}_s>u=n(pQn_KO|bb8b^^u7WI)?qyR4&Ov47VJ*M5;Di}_ z+gHj_2V;(EKDXJzScz#cbBi6qE=NdbW`YTOi0{6Yl-ztj(1j5mcNECJO;Hs+=+h-v zUZlvEj9(t0v*t1#oemRKu%Npf+$?q;g5pTzD3*M3wL4v-W$85ky?N58w@nlF&Yohx ziF?I$3Lp^~=;`Z!{sc64-VRQwc#>AXC-;t574c@ljWE=v)t{E=iVx?#=oiWovu^5S zxmnIyzlWj-&Ap^T%5a?Az`8N{HEugzt++=F5AqRRg~^7RR=SCXs1%Ar42CM|DVi3# zx~I|%KkFE4wG*|3d^`?Nw;bJ9ykWS ze)Mka<24N`(7+3K8)u6|z;FbnCAZP+0m_XSx}e#^HTbdtDCkqpT<>hHD@(ZZoI2)AWpDVOc*7vi0KIt|)7S=6o&TyxojW=rJ})e3#1%*8DzVZvPzfpw*y@i%YY(x#cWKv7 zuVMG=h0@2p7GKxcMAd3gxRH9zsqai7LYA4?bmHSU!dG+iQcwL0iUL~3j{AF`z zCMSb^!V-k)n!CF4=`x)R4o9{KVk+#)h=k8fp`(0G1XH+Pyq-6QrAA(+TEebe66_?R zG4y!I5}u!*KNR@Z1AvD^@#%D>-Oy_%4Y=H!S(f?QW4c05-^C<#Lv|k7Nn+5 zZ}?T&*uPxeOK8Ps&-o421C(bq13vKVxTv4(4^wYV1i9g#9vL*d8q6bg%U=!_2mUJd zvcMlUw80m5O)NpSD;$3Rz^V4|ftKiKYYf-dQ3eVZktL1zT)IX>Q!W!v+_RhOzq=ff zu&Hmc!3GuQ{CVg;mkInz_b$&|os-lz!B1)8_(OIe!Hx_az&fpx-?BUu10K zkBA|3oC)^DIrvA1zNM{f1ITc2VL+TWhugs-SFwL*+q1qnNgPcIoknGYm%1T6r`f~B zyKQ&}I;*kibbyAH5!vq=p%Yq|dopp0EP)b9M4##clao}TJR80NHL=k}@%;syMBPBl z9R@fT)F!&T9rTk%re9E`Kpuhg)0hO3p`2v%1yM190!hMPy_Q;M={Ubx(JRcrnu*n4 zfDLrrc=+k&<3s&TPw-HhF6F478clkM@E^8mcU_nGli47U^}Jy2czrx_iX~b80pw(W zA^iDrm}S5tV(DpC*I{B0)o}Kxt{V-myz^lt5-_ek98t^ zP?aYBj|mP4#O~Xd4)exRb65h=-@(@XqL@VnGR(F?qOMN#t!;pg^qJMR^y)Ntj${V< zmd)0u#!YECIUk_3I3{Lif6be@U4i1$JC|Dq_$z=7xU(;H3NufZg5nFFuIPieYC};f z8~9;9|J}G@X@ZLyAnVhQY-+<*Q$wRpzukWPRIsuVsyb?*EgU|u zW@@LhrpApo5AbCuXm@&hoEoHWtuP)rV{gEj6x3ilc+iiDYITO6s^BJVd4_L%NuO7r zp2Ob4$RO6(z)3OLy!CjM5U@5V#I5%HJ|BiXD)jYSNOKqFlojdj54&5V;R z5b|ql^k6lSApv*mvmVzPc6S+e`)Ag#yRSL+q9zDE?yvWR{H(7x@r>pBp{k{I2h2}X zQV~M{!xWss*65YsnCYwv_+QEt4v|1B%4-xcMI%4Rv{h;Te!`@c=yS^xr%4`7eDwdbONIE*^$8(fEX6`pQ!Ll5PPBViDJ)q!chPY{r(0xTU~}S4GwokAssl#mysO;8NG*T`e>|@*_S$fAL@@ud>$rHF`iC zwd4mL_%#PoMhXF0-+6jhg9u$sO{okX+}k@(B0s0YAO5QS{{1@`4BC456$BGBmgye| zgN2PnJjpSE>s1lu`xA zJ&-{kHyw2WX#kExBx!Fo8uF8ht^Z@{hK7L6SW(=-P5^VR7Q-n=hw=FuB8Dj~c6S?e zLP@4GLf@X185zL#vGKA3cL3lR1H$K?fR zAJgk`dM;s8d*MB-m#4b~c;2!pUh7F}@8>`GhOX>+&f?1)u~^ej1|;AFh8C#|eRu8V zt-+lPL$Z_9?FfuV4Zb}%DHoTkO+Ua)gJ_-t`3xaeql;b{TKO7xS0cV%fX-|k*8a@b> z5q`))ajnB?3w~?|ai5-`xuZkRh!8ALDfZN3gxC?IIcOjnL3*#a%v(jYh$TL;;XI>0 z7nuK1I3z9TQhB@Q%pRW>%fG--g|mH1TO}&JO1eYRWNYIe*yDj+At^N;c@cZd0XNo2Y_^S~nLb z^UUfd)nEs8z^g+9O6vLi;V;(=EBI#uvGy|@@H6%TJz?4w~A@Zz>?DU%#X zff>-ha)ReTAh+o$^$qAn$gRqyy_wd0qhIvDZuu6zAW*%*KI_A+HIr1YDR1OvsR>vr zc{Q!5J?fi;d%XN_?I#`N_jJ-senEH9Ppl;LK+V|;z66Xf5d+BIR5djv<6=c7?{SSl zBZGrrpd$SSMrX{&={pzhDGAp;BxZA5#NDEe2fH;m@PwG}^B)%fi&dX9yZP^hlc{0I z_`xPg32Vh}CieEscBg4t20^=(8dc#agrZ_z1MpVTqN31(cj>zJS!|~8%q|1*q&%Jg zf#^63gDxOEk8~OfYpph=%QmdR57r*w34iD&cS;g@WO?+CXMag<-Bjc;kzPmw5_TsspS$NGZ{r0 zq_xi>May@xDf-18JGFy1vJymBzhv8}k%nsyl@DLPzkDD0_S>D>KDlq@(*j zGd*7g9AM`U&AiOdZ2sVivhD9Y}w1o-cS_g#5T(4^uJ)^T;R6iJ0sL z<*c)t;<@*O+G=b-*NW{IJ%`nnyEQ)EtBYlOwLVTgrI-hBm_gFft!<4ZzYS?=rG7Ca zK8{%rM~4o2hTa#g`Cg3z9%<$;-$B&Cs<*XlTuG>e<;_1aZ29#tDL&;pU z9@kBP`1v^vh+vW`kYr%s+S^L_3~28W?SG)!#Clc+1P?97{_ zwPj(DYeUlhzrJP>Kk=kcM}+wR#LuC+*W{M%6Tg2Xkf)J>?oZAPwg3zLVpguGct;`2 z$aafu=|bK1Ub`rrx}ee%^*1Ej9-|kovcpd)dnqRV#p(hsstMcv1QnT$sG=6_QaGIz;IP^r+=uUBC_pljAoA2yIi)waV z7zV<6S#!CH?Rv5NsB#Z%fLd2c}lJPFknS|`V}b5@XadH44(hg(7YbxByx zZHq5vHZPh(Hy~`})K@<>?0EQhUY^!zt#X^rys&G&xT#)7RPg64)x~Y75OUdm0k%qM zYcIHr3udIH-8>%EC6Mr9)p0cEgsKK?MtwM^EC4RKy|t6m1@IvNF4}({z9tk^i~GrKQQd7KJrQ;M{oDu=6BW%_BkEZXG3`p@~l(#)VmrrbhSw^ZXcra zE5OX1T~7L~>?QMF*%HsE|B59lvIq93CU__RFxweQ1JD~AWr7YCBJ6o?$X5VoLn-F* zI2F~B&z0~=@~V@OZlH^y+RZKQS-$f(A2e)tw-XmK18f>}L*wJ<%`gjVg6U6+^*(OE~bkq(kHj7hKA^&Cu`jS?PSTyXhcw$ZbU$+9AIr-Q4-$#&iP!D$9-32;kz+R^nTRFrgLk&hpr;{c^;%- zI-=*kU_KGfvw`J*R=$o#OG_Ki3TG%EN-BuEEZ&h^A%`Pic{E#7{Fr$n5$e^)Bjo?= zc@4`xJW{Os<%_hOi?j1N=D6SeM|IYBPrzqT*_;1i%C;Xu%}NvKd_4TH3JAVav~HMz z@pvZ9Uv=2$xH%dcnl_W{zuNapfvhw%I1{ z!-2nx)s>eN$oZgzOg0rB>q$D$E4vHpkcb-UL5M?VkWQCA95qnU9YAY%VW}XJN(MY6|8nTuf zf5kfej^PZD+TsyGegM#G&kA_`H4?H|sO!AqHn%bQ)mpWi3De{cM$rZ{m3->CvmfB6 zpnTnQ1XSy(_?_L|aE1c9|8fNZd1e@|&Tx^B;YHJU^sw#TipedY%qpM;?4O+Qr=&iB&F4FHicTe5q zAx&8={q>CNws-l0MDIwX<;7j6QlVi{k|lS@5+Zo^Szl%^NCq}CSg`JAHPTGA9l4^u z(M4BQKDhOC=MHi_kO-?~KzGmhy_PA1?E5vvEsA=x21GPhdiT&3o zPewjAd!l?OBQ{5`e{v%wM!DodzC2x+vAu%>jC3q44kwF^fad*=%poT$TaDc_%QGCE zy6U{Xo*1{_z&t$I;8RbUzatU96BdvAXDsbcZ7SB>5Y}G3=+emXrhumX$@1?2H@8M( zf(ie66U0*OKf&30%AG}nKPp43C5vwW&Jj24meaf%cXDT1_Fwjs|D<&X6ObT)i~iUm zyHz}AX&@26%z^ngfRTjh%Xg#K=LbNK{r1cUbPPuYBnVExKP1IoLBQ)j7M0^419Ue+ z&*#1AyTJOYv+lQ7`_irc;&$j&Q0dg9RbW5H^Dh{5S9ZI%e@NEc_`){;z&DKK0I6-I zA8HwJRwk{5^lss_F~J+}MP!88dyEE)E1>jgR@dZ-P1e87?XkPAP{?(=At=x-biWBx zVBiFmk+3n+Zm6Tcfb;=qsHSh%ydW+U3_XZDqNAzTV6!)N?qwS)%+AhWGq%iYZEd~r z<0};`N@pF|=p`K0KD^NW5@!mI%t&j_EoiTzt}U=Ma8YC=xtfAp@VcV@7wdl7uTPZ2 z(!m&ru%MUd%HnY4^4i9_J$9{)+8Y)ipeVX%I=+Rbr@XXNPuXsx~KpJUKa zy1mS4fOf4~iI!k224qMHhI&z1S*xkYZ={pW%!@?LUU#{>e>gKn!S6eCJ-`ENMSScv zHD}obr|1h##baSy1^y`N|yI%99zZiV*2F z%#EBt^RVk6J!i(Us9-}4R}D54^nt6!#zqbz9K3_;k$jl zQ(*qi(?KY?gn{Ca_K+xiI@uwdZfSkOsV`r))Rvqy@Okesf@oZ~^qIZtkz6f90_1x4 zQLZ5OCv8nAYgI|d(m_tD%A@FJDSs)JPXd1#bAa_m=|}$I%jF=FvNOY&COvN2i@da@ zuN-x5ZudG`)n7!I(1ON*8~qQL2(0_!GX5QU{#koHhFH*>Lvo_BvT~z0!ql@&V)O|; zFu|c9_xYerP(rUf5Os8vDIwB9)OW-jSL0*81Lx{5kAEKaK>z%Vfs&V>A3x!<{wv6| zKlTUNXMr~64CJc@pjibUNW~G|{QXcMpT{?IDXm}ikbEoY4yvj9Xo@sH_*ZgH>3^&^ z2?CeWeX{4xvVcFaElXFN3OPR8I8-X73`BbJLd+p7$Z5Y&4}_!@LH}5>srCST%v0*B zUOv|ggdWw7{|O8?Y_OZcWM6#OB^rU#f*9+U*XAD+*+QcyMbex3%~3qTRZs~`8Ivsh zE&Iwi%&WlSEbN#&h#b6hfTJDm(jKX6p@2_Ac&!c0Z3ZfsrW<&%vhoFRnAPmg+vNlS zWzeve78bY}>9dQZ_8G`#^3Qzjde8 B|9%aMx(Ks-NEn8h%xbV?crpMseyCDN33O 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