From 6270858027f463c72ce1a6ac708bd8fc3aef3c32 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 15 Nov 2023 16:12:36 +0000 Subject: [PATCH 01/34] data downloading missed tasmax and tasmin --- conf/archive.yml | 2 +- conf/variable-dictionary.yml | 2 +- datadownloading/dl-era5.bash | 2 ++ modules/Scorecards/R/tmp/LoadMetrics.R | 1 + modules/Scorecards/execute_scorecards.R | 7 +++++++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/conf/archive.yml b/conf/archive.yml index fbd2e9e7..984dde60 100644 --- a/conf/archive.yml +++ b/conf/archive.yml @@ -7,7 +7,7 @@ cerise: src: "exp/cmcc/system35/" monthly_mean: {"tas":"monthly_mean/tas_f6h/", "prlr":"monthly_mean/prlr_f6h/", "sfcWind":"monthly_mean/sfcWind_f6h/", "tos":"monthly_mean/tos_f6h", - "tasmin":"monthly_mean/tasmin_f24h/", "tasmax":"monthly_mean/tasmax_f24h/", + "tasmin":"monthly_mean/tasmin_f6h/", "tasmax":"monthly_mean/tasmax_f6h/", "psl":"monthly_mean/psl_f6h/", "tdps":"monthly_mean/tdps_f6h/"} nmember: hcst: 40 diff --git a/conf/variable-dictionary.yml b/conf/variable-dictionary.yml index 0bfbffe0..95701157 100644 --- a/conf/variable-dictionary.yml +++ b/conf/variable-dictionary.yml @@ -25,7 +25,7 @@ vars: standard_name: "air_temperature" accum: no tos: - units: "degC" + units: "K" long_name: "Sea Surface Temperature" standard_name: "sea_surface_temperature" accum: no diff --git a/datadownloading/dl-era5.bash b/datadownloading/dl-era5.bash index f6b33f86..84dd4a49 100755 --- a/datadownloading/dl-era5.bash +++ b/datadownloading/dl-era5.bash @@ -40,6 +40,8 @@ workdir=$SCRATCH/cerise/data/ "psl") code="mean_sea_level_pressure";; "prlr") code="total_precipitation";; "tdps") code="2m_dewpoint_temperature";; + "tasmax") code="2m_maximum_temperature";; + "tasmin") code="2m_minimum_temperature";; esac mkdir -p ${var}${suffix} diff --git a/modules/Scorecards/R/tmp/LoadMetrics.R b/modules/Scorecards/R/tmp/LoadMetrics.R index c2afed29..8ba477e4 100644 --- a/modules/Scorecards/R/tmp/LoadMetrics.R +++ b/modules/Scorecards/R/tmp/LoadMetrics.R @@ -158,6 +158,7 @@ LoadMetrics <- function(system, reference, var, start.year, end.year, ".nc")}) allfiles_exist <- sapply(allfiles, file.exists) warning(paste("Exist", allfiles_exist)) + warning(paste(allfiles)) # Check dims files_exist_by_month <- seq(1:length(allfiles))[allfiles_exist] allfiledims <- sapply(allfiles[allfiles_exist], easyNCDF::NcReadDims) diff --git a/modules/Scorecards/execute_scorecards.R b/modules/Scorecards/execute_scorecards.R index 2c54c48f..b2d96516 100644 --- a/modules/Scorecards/execute_scorecards.R +++ b/modules/Scorecards/execute_scorecards.R @@ -16,6 +16,13 @@ datasets <- recipe$Analysis$Datasets for (system in 1:length(datasets$System)) { for (reference in 1:length(datasets$Reference)) { for (variable in 1:length(recipe$Analysis$Variables)) { + info(recipe$Run$logger, + paste0("System",recipe$Analysis$Datasets$System[[system]])) + info(recipe$Run$logger, + paste0("Reference", recipe$Analysis$Datasets$Reference[[reference]])) + info(recipe$Run$logger, + paste0("Variable", recipe$Analysis$Variables[[variable]]) + scorecard_recipe <- recipe scorecard_recipe$Analysis$Datasets$System <- recipe$Analysis$Datasets$System[[system]] -- GitLab From e184eda010cb3b9d65520b6c8d47d9aacbeafdb7 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 16 Nov 2023 06:43:09 +0000 Subject: [PATCH 02/34] era5 datadownloading max and min t --- datadownloading/dl-era5.bash | 4 ++-- datadownloading/rename.bash | 3 +++ datadownloading/shiftime.bash | 8 ++++++++ modules/Scorecards/execute_scorecards.R | 16 +++++++++------- 4 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 datadownloading/rename.bash create mode 100644 datadownloading/shiftime.bash diff --git a/datadownloading/dl-era5.bash b/datadownloading/dl-era5.bash index 84dd4a49..c0775aab 100755 --- a/datadownloading/dl-era5.bash +++ b/datadownloading/dl-era5.bash @@ -40,8 +40,8 @@ workdir=$SCRATCH/cerise/data/ "psl") code="mean_sea_level_pressure";; "prlr") code="total_precipitation";; "tdps") code="2m_dewpoint_temperature";; - "tasmax") code="2m_maximum_temperature";; - "tasmin") code="2m_minimum_temperature";; + "tasmax") code="2maximum_2m_temperature_since_previous_post_processing";; + "tasmin") code="minimum_2m_temperature_since_previous_post_processing";; esac mkdir -p ${var}${suffix} diff --git a/datadownloading/rename.bash b/datadownloading/rename.bash new file mode 100644 index 00000000..7e8a6372 --- /dev/null +++ b/datadownloading/rename.bash @@ -0,0 +1,3 @@ +for f in *.grib; do + mv "$f" "${f%.grib}.grb" +done diff --git a/datadownloading/shiftime.bash b/datadownloading/shiftime.bash new file mode 100644 index 00000000..46effb96 --- /dev/null +++ b/datadownloading/shiftime.bash @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +for f in *; do + echo "$f" + cdo shifttime,+1days "$f" "$f"2 + mv "$f"2 "$f" +done + diff --git a/modules/Scorecards/execute_scorecards.R b/modules/Scorecards/execute_scorecards.R index b2d96516..8647359f 100644 --- a/modules/Scorecards/execute_scorecards.R +++ b/modules/Scorecards/execute_scorecards.R @@ -16,13 +16,12 @@ datasets <- recipe$Analysis$Datasets for (system in 1:length(datasets$System)) { for (reference in 1:length(datasets$Reference)) { for (variable in 1:length(recipe$Analysis$Variables)) { - info(recipe$Run$logger, - paste0("System",recipe$Analysis$Datasets$System[[system]])) - info(recipe$Run$logger, - paste0("Reference", recipe$Analysis$Datasets$Reference[[reference]])) - info(recipe$Run$logger, - paste0("Variable", recipe$Analysis$Variables[[variable]]) - +# info(recipe$Run$logger, +# paste0("System",recipe$Analysis$Datasets$System[[system]])) +# info(recipe$Run$logger, +# paste0("Reference", recipe$Analysis$Datasets$Reference[[reference]])) +# info(recipe$Run$logger, +# paste0("Variable", recipe$Analysis$Variables[[variable]])) scorecard_recipe <- recipe scorecard_recipe$Analysis$Datasets$System <- recipe$Analysis$Datasets$System[[system]] @@ -30,6 +29,9 @@ for (system in 1:length(datasets$System)) { recipe$Analysis$Datasets$Reference[[reference]] scorecard_recipe$Analysis$Variables <- recipe$Analysis$Variables[[variable]] +print(recipe$Analysis$Variables[[variable]]) +print(recipe$Analysis$Datasets$Reference[[reference]]) +print(recipe$Analysis$Datasets$System[[system]]) # Plot Scorecards Scorecards(scorecard_recipe) } -- GitLab From a767ff010015ebfe7225fe6f1d5e0de7364d5156 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 29 Nov 2023 09:26:02 +0000 Subject: [PATCH 03/34] temporal Corr function --- conf/archive.yml | 10 +- datadownloading/dl-era5.bash | 18 +- datadownloading/monthly_maxmin.bash | 18 ++ full_ecvs_scorecards.R | 3 +- modules/Loading/R/GRIB/GrbLoad.R | 16 +- modules/Skill/R/tmp/Corr.R | 485 ++++++++++++++++++++++++++++ modules/Skill/Skill.R | 6 +- recipe_ecvs_scorecards_seasonal.yml | 4 +- recipe_tas_scorecards_seasonal.yml | 2 +- 9 files changed, 533 insertions(+), 29 deletions(-) create mode 100644 datadownloading/monthly_maxmin.bash create mode 100644 modules/Skill/R/tmp/Corr.R diff --git a/conf/archive.yml b/conf/archive.yml index 984dde60..a1bbbc1f 100644 --- a/conf/archive.yml +++ b/conf/archive.yml @@ -6,7 +6,7 @@ cerise: institution: "European Centre for Medium-Range Weather Forecasts" src: "exp/cmcc/system35/" monthly_mean: {"tas":"monthly_mean/tas_f6h/", "prlr":"monthly_mean/prlr_f6h/", - "sfcWind":"monthly_mean/sfcWind_f6h/", "tos":"monthly_mean/tos_f6h", + "sfcWind":"monthly_mean/sfcWind_f6h/", "tos":"monthly_mean/tos_f6h/", "tasmin":"monthly_mean/tasmin_f6h/", "tasmax":"monthly_mean/tasmax_f6h/", "psl":"monthly_mean/psl_f6h/", "tdps":"monthly_mean/tdps_f6h/"} nmember: @@ -18,7 +18,7 @@ cerise: name: "Meteo-France System 8" institution: "Meteo-France" src: "exp/meteo_france/system8/" - monthly_mean: {"tas":"monthly_mean/tas_f6h/", "tos":"monthly_mean/tos_f6h", + monthly_mean: {"tas":"monthly_mean/tas_f6h/", "tos":"monthly_mean/tos_f6h/", "prlr":"monthly_mean/prlr_f6h/", "sfcWind": "monthly_mean/sfcWind_f6h/", "tasmax":"monthly_mean/tasmax_f6h/", "tasmin": "monthly_mean/tasmin_f6h/", "psl":"monthly_mean/psl_f6h/", "tdps":"monthly_mean/tdps_f6h/"} @@ -31,7 +31,7 @@ cerise: name: "UKMO-S602" institution: "UK MetOffice" src: "exp/ukmo/system602/" - monthly_mean: {"tas":"monthly_mean/tas_f6h/", "tos":"monthly_mean/tos_f6h", + monthly_mean: {"tas":"monthly_mean/tas_f6h/", "tos":"monthly_mean/tos_f6h/", "prlr":"monthly_mean/prlr_f6h/", "sfcWind": "monthly_mean/sfcWind_f6h/", "tasmax":"monthly_mean/tasmax_f6h/", "tasmin": "monthly_mean/tasmin_f6h/", "psl":"monthly_mean/psl_f6h/", "tdps":"monthly_mean/tdps_f6h/"} @@ -48,8 +48,8 @@ cerise: monthly_mean: {"tas":"monthly_mean/tas_f1h/", "prlr":"monthly_mean/prlr_f1h/", "psl":"monthly_mean/psl_f1h/", "sfcWind":"monthly_mean/sfcWind_f1h/", "tos":"monthly_mean/tos_f1h/", - "tasmax":"monthly_mean/tasmax_f1h/", - "tasmin":"monthly_mean/tasmin_f1h/", "tdps":"monthly_mean/tdps_f1h/"} + "tasmax":"monthly_mean/tasmax_f24h/", + "tasmin":"monthly_mean/tasmin_f24h/", "tdps":"monthly_mean/tdps_f1h/"} calendar: "standard" reference_grid: "conf/grid_description/griddes_GRIB_system5_m1.txt" esarchive: diff --git a/datadownloading/dl-era5.bash b/datadownloading/dl-era5.bash index c0775aab..ddc4a8f8 100755 --- a/datadownloading/dl-era5.bash +++ b/datadownloading/dl-era5.bash @@ -13,7 +13,7 @@ set -v #workdir=$1 #model=$2 # freq=$3 -freq="mon" +freq="1hour" workdir=$SCRATCH/cerise/data/ if [[ $freq == "mon" ]]; then @@ -27,12 +27,12 @@ workdir=$SCRATCH/cerise/data/ mkdir -p $workdir/esarchive/recon/ecmwf/era5/$freq_dir cd $workdir/esarchive/recon/ecmwf/era5/$freq_dir - for year in $( seq 1979 2023); do + for year in $( seq 1993 2023); do for mon in $( seq -w 1 12); do if [[ $freq == "mon" ]]; then - - for var in sfcWind tas tos psl prlr tasmin tasmax tdps; do +#tasmax and tasmin doesn't exist + for var in sfcWind tas tos psl prlr tdps; do case $var in "sfcWind") code="10m_wind_speed";; "tas") code="2m_temperature";; @@ -40,8 +40,6 @@ workdir=$SCRATCH/cerise/data/ "psl") code="mean_sea_level_pressure";; "prlr") code="total_precipitation";; "tdps") code="2m_dewpoint_temperature";; - "tasmax") code="2maximum_2m_temperature_since_previous_post_processing";; - "tasmin") code="minimum_2m_temperature_since_previous_post_processing";; esac mkdir -p ${var}${suffix} @@ -66,8 +64,8 @@ c.retrieve( EOF fi #file exists done #var - else #freq 6h - for var in uas vas tas tos psl prlr tasmin tasmax tdps; do + else #freq 1h + for var in tasmin tasmax; do case $var in "sfcWind") code="10m_wind_speed";; "tas") code="2m_temperature";; @@ -76,6 +74,8 @@ EOF "tos") code="sea_surface_temperature";; "psl") code="mean_sea_level_pressure";; "prlr") code="total_precipitation";; + "tasmax") code="'maximum_2m_temperature_since_previous_post_processing'";; + "tasmin") code="'minimum_2m_temperature_since_previous_post_processing'";; "tdps") code="2m_dewpoint_temperature";; esac @@ -114,6 +114,7 @@ c.retrieve( '22', '23', '24', '25', '26', '27', '28', '29', '30', + '31', ], 'year': '$year', 'month': '$mon', @@ -121,7 +122,6 @@ c.retrieve( '${var}${suffix}/${var}_${year}${mon}.grb') EOF - fi #file exists done #var fi #freq diff --git a/datadownloading/monthly_maxmin.bash b/datadownloading/monthly_maxmin.bash new file mode 100644 index 00000000..4190c13b --- /dev/null +++ b/datadownloading/monthly_maxmin.bash @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +module load conda/22.11.1-2 +conda activate condaCerise +export LD_LIBRARY_PATH=/perm/cyce/conda/envs/condaCerise/lib + +dir=/ec/res4/scratch/cyce/cerise/data/esarchive/recon/ecmwf/era5/1hourly/tasmin/ +cd $dir +outdir=/ec/res4/scratch/cyce/cerise/data/esarchive/recon/ecmwf/era5/monthly_mean/tasmin_f24h/ +mkdir -p $outdir +for f in *; do + echo "$f" + if [[ ! -f $outdir/$f ]]; then + cdo daymin "$f" $TMPDIR/$f + cdo monmean $TMPDIR/$f $outdir/$f + fi +done + diff --git a/full_ecvs_scorecards.R b/full_ecvs_scorecards.R index fec1a53d..5dcf0972 100644 --- a/full_ecvs_scorecards.R +++ b/full_ecvs_scorecards.R @@ -197,7 +197,8 @@ crpss <- CRPSS(exp = res$ano_hcst_ev, obs = res$ano_obs_ev, ref = ref, # Corr -enscorr <- s2dv::Corr(res$ano_hcst_ev, res$ano_obs_ev, +source("modules/Skill/R/tmp/Corr.R") +enscorr <- Corr(res$ano_hcst_ev, res$ano_obs_ev, dat_dim = NULL, time_dim = 'syear', method = 'pearson', diff --git a/modules/Loading/R/GRIB/GrbLoad.R b/modules/Loading/R/GRIB/GrbLoad.R index fda8ea84..8318eee2 100644 --- a/modules/Loading/R/GRIB/GrbLoad.R +++ b/modules/Loading/R/GRIB/GrbLoad.R @@ -92,7 +92,7 @@ GrbLoad <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, attr(result, 'edition') <- gm1$edition attr(result, 'shortName') <- gm1$shortName #NOTE: Tune varaible name!! - attr(result, 'shortName') <- tune_var_name(gm1$shortName, dat[[dat_i]]) + attr(result, 'shortName') <- tune_var_name(gm1$shortName) attr(result, 'name') <- gm1$name attr(result, 'units') <- gm1$units # attr(result, 'validityDate') <- gm1$validityDate @@ -248,7 +248,7 @@ GrbLoad <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, } -tune_var_name <- function(x, y) { +tune_var_name <- function(x) { if (x == '2t') { res <- "tas" } else if (x == 'tprate') { @@ -262,17 +262,15 @@ tune_var_name <- function(x, y) { } else if (x == "sst") { res <- "tos" } else if (x == "tp") { - if (grepl("prlr", y)) { - res <- "prlr" - } else if (grepl("tasmax", y)) { - res <- "tasmax" - } else if (grepl("tasmin", y)) { - res <- "tasmin" - } + res <- "prlr" } else if (x == "mx2t24") { res <- "tasmax" } else if (x == "mn2t24") { res <- "tasmin" + } else if (x == "Maximum temperature at 2 metres since previous post-processing") { + res <- "tasmax" + } else if (x == "Minimum temperature at 2 metres since previous post-processing") { + res <- "tasmin" } else { res <- x warning("Conversion name", x, "needed?") diff --git a/modules/Skill/R/tmp/Corr.R b/modules/Skill/R/tmp/Corr.R new file mode 100644 index 00000000..aaa3e1ea --- /dev/null +++ b/modules/Skill/R/tmp/Corr.R @@ -0,0 +1,485 @@ +#'Compute the correlation coefficient between an array of forecast and their corresponding observation +#' +#'Calculate the correlation coefficient (Pearson, Kendall or Spearman) for +#'an array of forecast and an array of observation. The correlations are +#'computed along 'time_dim' that usually refers to the start date dimension. If +#''comp_dim' is given, the correlations are computed only if obs along comp_dim +#'dimension are complete between limits[1] and limits[2], i.e., there is no NA +#'between limits[1] and limits[2]. This option can be activated if the user +#'wants to account only for the forecasts which the corresponding observations +#'are available at all leadtimes.\cr +#'The confidence interval is computed by the Fisher transformation and the +#'significance level relies on an one-sided student-T distribution.\cr +#'The function can calculate ensemble mean before correlation by 'memb_dim' +#'specified and 'memb = F'. If ensemble mean is not calculated, correlation will +#'be calculated for each member. +#'If there is only one dataset for exp and obs, you can simply use cor() to +#'compute the correlation. +#' +#'@param exp A named numeric array of experimental data, with at least dimension +#' 'time_dim'. +#'@param obs A named numeric array of observational data, same dimensions as +#' parameter 'exp' except along 'dat_dim' and 'memb_dim'. +#'@param time_dim A character string indicating the name of dimension along +#' which the correlations are computed. The default value is 'sdate'. +#'@param dat_dim A character string indicating the name of dataset (nobs/nexp) +#' dimension. The default value is NULL (no dataset). +#'@param comp_dim A character string indicating the name of dimension along which +#' obs is taken into account only if it is complete. The default value +#' is NULL. +#'@param limits A vector of two integers indicating the range along comp_dim to +#' be completed. The default is c(1, length(comp_dim dimension)). +#'@param method A character string indicating the type of correlation: +#' 'pearson', 'spearman', or 'kendall'. The default value is 'pearson'. +#'@param memb_dim A character string indicating the name of the member +#' dimension. It must be one dimension in 'exp' and 'obs'. If there is no +#' member dimension, set NULL. The default value is NULL. +#'@param memb A logical value indicating whether to remain 'memb_dim' dimension +#' (TRUE) or do ensemble mean over 'memb_dim' (FALSE). Only functional when +#' 'memb_dim' is not NULL. The default value is TRUE. +#'@param pval A logical value indicating whether to return or not the p-value +#' of the test Ho: Corr = 0. The default value is TRUE. +#'@param conf A logical value indicating whether to return or not the confidence +#' intervals. The default value is TRUE. +#'@param sign A logical value indicating whether to retrieve the statistical +#' significance of the test Ho: Corr = 0 based on 'alpha'. The default value is +#' FALSE. +#'@param alpha A numeric indicating the significance level for the statistical +#' significance test. The default value is 0.05. +#'@param ncores An integer indicating the number of cores to use for parallel +#' computation. The default value is NULL. +#' +#'@return +#'A list containing the numeric arrays with dimension:\cr +#' c(nexp, nobs, exp_memb, obs_memb, all other dimensions of exp except +#' time_dim and memb_dim).\cr +#'nexp is the number of experiment (i.e., 'dat_dim' in exp), and nobs is the +#'number of observation (i.e., 'dat_dim' in obs). If dat_dim is NULL, nexp and +#'nobs are omitted. exp_memb is the number of member in experiment (i.e., +#''memb_dim' in exp) and obs_memb is the number of member in observation (i.e., +#''memb_dim' in obs). If memb = F, exp_memb and obs_memb are omitted.\cr\cr +#'\item{$corr}{ +#' The correlation coefficient. +#'} +#'\item{$p.val}{ +#' The p-value. Only present if \code{pval = TRUE}. +#'} +#'\item{$conf.lower}{ +#' The lower confidence interval. Only present if \code{conf = TRUE}. +#'} +#'\item{$conf.upper}{ +#' The upper confidence interval. Only present if \code{conf = TRUE}. +#'} +#'\item{$sign}{ +#' The statistical significance. Only present if \code{sign = TRUE}. +#'} +#' +#'@examples +#'# Case 1: Load sample data as in Load() example: +#'example(Load) +#'clim <- Clim(sampleData$mod, sampleData$obs) +#'ano_exp <- Ano(sampleData$mod, clim$clim_exp) +#'ano_obs <- Ano(sampleData$obs, clim$clim_obs) +#'runmean_months <- 12 +#' +#'# Smooth along lead-times +#'smooth_ano_exp <- Smoothing(ano_exp, runmeanlen = runmean_months) +#'smooth_ano_obs <- Smoothing(ano_obs, runmeanlen = runmean_months) +#'required_complete_row <- 3 # Discard start dates which contain any NA lead-times +#'leadtimes_per_startdate <- 60 +#'corr <- Corr(MeanDims(smooth_ano_exp, 'member'), +#' MeanDims(smooth_ano_obs, 'member'), +#' comp_dim = 'ftime', dat_dim = 'dataset', +#' limits = c(ceiling((runmean_months + 1) / 2), +#' leadtimes_per_startdate - floor(runmean_months / 2))) +#' +#'# Case 2: Keep member dimension +#'corr <- Corr(smooth_ano_exp, smooth_ano_obs, memb_dim = 'member', dat_dim = 'dataset') +#'# ensemble mean +#'corr <- Corr(smooth_ano_exp, smooth_ano_obs, memb_dim = 'member', memb = FALSE, +#' dat_dim = 'dataset') +#' +#'@import multiApply +#'@importFrom ClimProjDiags Subset +#'@importFrom stats cor pt qnorm +#'@export +Corr <- function(exp, obs, time_dim = 'sdate', dat_dim = NULL, + comp_dim = NULL, limits = NULL, method = 'pearson', + memb_dim = NULL, memb = TRUE, + pval = TRUE, conf = TRUE, sign = FALSE, + alpha = 0.05, ncores = NULL) { + + # Check inputs + ## exp and obs (1) + if (is.null(exp) | is.null(obs)) { + stop("Parameter 'exp' and 'obs' cannot be NULL.") + } + if (!is.numeric(exp) | !is.numeric(obs)) { + stop("Parameter 'exp' and 'obs' must be a numeric array.") + } + if (is.null(dim(exp)) | is.null(dim(obs))) { + stop(paste0("Parameter 'exp' and 'obs' must be at least two dimensions ", + "containing time_dim and dat_dim.")) + } + if(any(is.null(names(dim(exp))))| any(nchar(names(dim(exp))) == 0) | + any(is.null(names(dim(obs))))| any(nchar(names(dim(obs))) == 0)) { + stop("Parameter 'exp' and 'obs' must have dimension names.") + } + ## time_dim + if (!is.character(time_dim) | length(time_dim) > 1) { + stop("Parameter 'time_dim' must be a character string.") + } + if (!time_dim %in% names(dim(exp)) | !time_dim %in% names(dim(obs))) { + stop("Parameter 'time_dim' is not found in 'exp' or 'obs' dimension.") + } + ## dat_dim + if (!is.null(dat_dim)) { + if (!is.character(dat_dim) | length(dat_dim) > 1) { + stop("Parameter 'dat_dim' must be a character string or NULL.") + } + if (!dat_dim %in% names(dim(exp)) | !dat_dim %in% names(dim(obs))) { + stop("Parameter 'dat_dim' is not found in 'exp' or 'obs' dimension.", + " Set it as NULL if there is no dataset dimension.") + } + } + ## comp_dim + if (!is.null(comp_dim)) { + if (!is.character(comp_dim) | length(comp_dim) > 1) { + stop("Parameter 'comp_dim' must be a character string.") + } + if (!comp_dim %in% names(dim(exp)) | !comp_dim %in% names(dim(obs))) { + stop("Parameter 'comp_dim' is not found in 'exp' or 'obs' dimension.") + } + } + ## limits + if (!is.null(limits)) { + if (is.null(comp_dim)) { + stop("Paramter 'comp_dim' cannot be NULL if 'limits' is assigned.") + } + if (!is.numeric(limits) | any(limits %% 1 != 0) | any(limits < 0) | + length(limits) != 2 | any(limits > dim(exp)[comp_dim])) { + stop(paste0("Parameter 'limits' must be a vector of two positive ", + "integers smaller than the length of paramter 'comp_dim'.")) + } + } + ## method + if (!(method %in% c("kendall", "spearman", "pearson"))) { + stop("Parameter 'method' must be one of 'kendall', 'spearman' or 'pearson'.") + } + ## memb_dim + if (!is.null(memb_dim)) { + if (!is.character(memb_dim) | length(memb_dim) > 1) { + stop("Parameter 'memb_dim' must be a character string.") + } + if (!memb_dim %in% names(dim(exp)) & !memb_dim %in% names(dim(obs))) { + stop("Parameter 'memb_dim' is not found in 'exp' nor 'obs' dimension. Set it as NULL if there is no member dimension.") + } + # Add [member = 1] + if (memb_dim %in% names(dim(exp)) & !memb_dim %in% names(dim(obs))) { + dim(obs) <- c(dim(obs), 1) + names(dim(obs))[length(dim(obs))] <- memb_dim + } + if (!memb_dim %in% names(dim(exp)) & memb_dim %in% names(dim(obs))) { + dim(exp) <- c(dim(exp), 1) + names(dim(exp))[length(dim(exp))] <- memb_dim + } + } + ## memb + if (!is.logical(memb) | length(memb) > 1) { + stop("Parameter 'memb' must be one logical value.") + } + ## pval + if (!is.logical(pval) | length(pval) > 1) { + stop("Parameter 'pval' must be one logical value.") + } + ## conf + if (!is.logical(conf) | length(conf) > 1) { + stop("Parameter 'conf' must be one logical value.") + } + ## sign + if (!is.logical(sign) | length(sign) > 1) { + stop("Parameter 'sign' must be one logical value.") + } + ## alpha + if (!is.numeric(alpha) | alpha < 0 | alpha > 1 | length(alpha) > 1) { + stop("Parameter 'alpha' must be a numeric number between 0 and 1.") + } + ## ncores + if (!is.null(ncores)) { + if (!is.numeric(ncores) | ncores %% 1 != 0 | ncores <= 0 | + length(ncores) > 1) { + stop("Parameter 'ncores' must be a positive integer.") + } + } + ## exp and obs (2) + name_exp <- sort(names(dim(exp))) + name_obs <- sort(names(dim(obs))) + if (!is.null(dat_dim)) { + name_exp <- name_exp[-which(name_exp == dat_dim)] + name_obs <- name_obs[-which(name_obs == dat_dim)] + } + if (!is.null(memb_dim)) { + name_exp <- name_exp[-which(name_exp == memb_dim)] + name_obs <- name_obs[-which(name_obs == memb_dim)] + } + if (!identical(dim(exp)[name_exp], dim(obs)[name_obs])) { + stop(paste0("Parameter 'exp' and 'obs' must have same length of ", + "all dimension except 'dat_dim' and 'memb_dim'.")) + } + if (dim(exp)[time_dim] < 3) { + stop("The length of time_dim must be at least 3 to compute correlation.") + } + + + ############################### + # Sort dimension + name_exp <- names(dim(exp)) + name_obs <- names(dim(obs)) + order_obs <- match(name_exp, name_obs) + obs <- Reorder(obs, order_obs) + + + ############################### + # Calculate Corr + + # Remove data along comp_dim dim if there is at least one NA between limits + if (!is.null(comp_dim)) { + pos <- which(names(dim(obs)) == comp_dim) + if (is.null(limits)) { + obs_sub <- obs + } else { + obs_sub <- ClimProjDiags::Subset(obs, pos, list(limits[1]:limits[2])) + } + outrows <- is.na(MeanDims(obs_sub, pos, na.rm = FALSE)) + outrows <- InsertDim(outrows, pos, dim(obs)[comp_dim]) + obs[which(outrows)] <- NA + rm(obs_sub, outrows) + } + if (!is.null(memb_dim)) { + if (!memb) { #ensemble mean + exp <- MeanDims(exp, memb_dim, na.rm = TRUE) + obs <- MeanDims(obs, memb_dim, na.rm = TRUE) +# name_exp <- names(dim(exp)) +# margin_dims_ind <- c(1:length(name_exp))[-which(name_exp == memb_dim)] +# exp <- apply(exp, margin_dims_ind, mean, na.rm = TRUE) #NOTE: remove NAs here +# obs <- apply(obs, margin_dims_ind, mean, na.rm = TRUE) + memb_dim <- NULL + } + } + + res <- Apply(list(exp, obs), + target_dims = list(c(time_dim, dat_dim, memb_dim), + c(time_dim, dat_dim, memb_dim)), + fun = .Corr, + dat_dim = dat_dim, memb_dim = memb_dim, + time_dim = time_dim, method = method, + pval = pval, conf = conf, sign = sign, alpha = alpha, + ncores = ncores) + + return(res) +} + +.Corr <- function(exp, obs, dat_dim = NULL, memb_dim = 'member', + time_dim = 'sdate', method = 'pearson', + conf = TRUE, pval = TRUE, sign = FALSE, alpha = 0.05) { + + if (is.null(dat_dim)) { + nexp <- 1 + nobs <- 1 + } else { + nexp <- as.numeric(dim(exp)[dat_dim]) + nobs <- as.numeric(dim(obs)[dat_dim]) + } + + if (is.null(memb_dim)) { + CORR <- array(dim = c(nexp = nexp, nobs = nobs)) + + if (is.null(dat_dim)) { + # exp: [sdate] + # obs: [sdate] + if (any(!is.na(exp)) && sum(!is.na(obs)) > 2) { + CORR[, ] <- cor(exp, obs, use = "pairwise.complete.obs", method = method) + } + } else { + # exp: [sdate, dat_exp] + # obs: [sdate, dat_obs] + for (j in 1:nobs) { + for (y in 1:nexp) { + if (any(!is.na(exp[, y])) && sum(!is.na(obs[, j])) > 2) { + CORR[y, j] <- cor(exp[, y], obs[, j], + use = "pairwise.complete.obs", + method = method) + } + } + } +#---------------------------------------- +# Same as above calculation. +#TODO: Compare which is faster. +# CORR <- sapply(1:nobs, function(i) { +# sapply(1:nexp, function (x) { +# if (any(!is.na(exp[, x])) && sum(!is.na(obs[, i])) > 2) { +# cor(exp[, x], obs[, i], +# use = "pairwise.complete.obs", +# method = method) +# } else { +# NA +# } +# }) +# }) +#----------------------------------------- + } + + } else { # memb_dim != NULL + exp_memb <- as.numeric(dim(exp)[memb_dim]) # memb_dim + obs_memb <- as.numeric(dim(obs)[memb_dim]) + + CORR <- array(dim = c(nexp = nexp, nobs = nobs, exp_memb = exp_memb, obs_memb = obs_memb)) + + if (is.null(dat_dim)) { + # exp: [sdate, memb_exp] + # obs: [sdate, memb_obs] + for (j in 1:obs_memb) { + for (y in 1:exp_memb) { + + if (any(!is.na(exp[,y])) && sum(!is.na(obs[, j])) > 2) { + CORR[, , y, j] <- cor(exp[, y], obs[, j], + use = "pairwise.complete.obs", + method = method) + } + + } + } + } else { + # exp: [sdate, dat_exp, memb_exp] + # obs: [sdate, dat_obs, memb_obs] + for (j in 1:obs_memb) { + for (y in 1:exp_memb) { + CORR[, , y, j] <- sapply(1:nobs, function(i) { + sapply(1:nexp, function (x) { + if (any(!is.na(exp[, x, y])) && sum(!is.na(obs[, i, j])) > 2) { + cor(exp[, x, y], obs[, i, j], + use = "pairwise.complete.obs", + method = method) + } else { + NA + } + }) + }) + + } + } + } + + } + + +# if (pval) { +# for (i in 1:nobs) { +# p.val[, i] <- try(sapply(1:nexp, +# function(x) {(cor.test(exp[, x], obs[, i], +# use = "pairwise.complete.obs", +# method = method)$p.value)/2}), silent = TRUE) +# if (class(p.val[, i]) == 'character') { +# p.val[, i] <- NA +# } +# } +# } + + if (pval || conf || sign) { + if (method == "kendall" | method == "spearman") { + if (!is.null(dat_dim) | !is.null(memb_dim)) { + tmp <- apply(obs, c(1:length(dim(obs)))[-1], rank) # for memb_dim = NULL, 2; for memb_dim, c(2, 3) + names(dim(tmp))[1] <- time_dim + eno <- Eno(tmp, time_dim) + } else { + tmp <- rank(obs) + tmp <- array(tmp) + names(dim(tmp)) <- time_dim + eno <- Eno(tmp, time_dim) + } + } else if (method == "pearson") { + eno <- Eno(obs, time_dim) + } + + if (is.null(memb_dim)) { + eno_expand <- array(dim = c(nexp = nexp, nobs = nobs)) + for (i in 1:nexp) { + eno_expand[i, ] <- eno + } + } else { #member + eno_expand <- array(dim = c(nexp = nexp, nobs = nobs, exp_memb = exp_memb, obs_memb = obs_memb)) + for (i in 1:nexp) { + for (j in 1:exp_memb) { + eno_expand[i, , j, ] <- eno + } + } + } + + } + +#############old################# +#This doesn't return error but it's diff from cor.test() when method is spearman and kendall + if (pval || sign) { + t <- sqrt(CORR * CORR * (eno_expand - 2) / (1 - (CORR ^ 2))) + p.val <- pt(t, eno_expand - 2, lower.tail = FALSE) + if (sign) signif <- !is.na(p.val) & p.val <= alpha + } +################################### + if (conf) { + conf.lower <- alpha / 2 + conf.upper <- 1 - conf.lower + suppressWarnings({ + conflow <- tanh(atanh(CORR) + qnorm(conf.lower) / sqrt(eno_expand - 3)) + confhigh <- tanh(atanh(CORR) + qnorm(conf.upper) / sqrt(eno_expand - 3)) + }) + } + +################################### + # Remove nexp and nobs if dat_dim = NULL + if (is.null(dat_dim)) { +# if (is.null(dat_dim) & !is.null(memb_dim)) { + + if (length(dim(CORR)) == 2) { + dim(CORR) <- NULL + if (pval) { + dim(p.val) <- NULL + } + if (conf) { + dim(conflow) <- NULL + dim(confhigh) <- NULL + } + if (sign) { + dim(signif) <- NULL + } + } else { + dim(CORR) <- dim(CORR)[3:length(dim(CORR))] + if (pval) { + dim(p.val) <- dim(p.val)[3:length(dim(p.val))] + } + if (conf) { + dim(conflow) <- dim(conflow)[3:length(dim(conflow))] + dim(confhigh) <- dim(confhigh)[3:length(dim(confhigh))] + } + if (sign) { + dim(signif) <- dim(signif)[3:length(dim(signif))] + } + } + } + +################################### + + res <- list(corr = CORR) + if (pval) { + res <- c(res, list(p.val = p.val)) + } + if (conf) { + res <- c(res, list(conf.lower = conflow, conf.upper = confhigh)) + } + if (sign) { + res <- c(res, list(sign = signif)) + } + + return(res) + +} + diff --git a/modules/Skill/Skill.R b/modules/Skill/Skill.R index fd54f17f..411d5bca 100644 --- a/modules/Skill/Skill.R +++ b/modules/Skill/Skill.R @@ -15,6 +15,7 @@ source("modules/Saving/R/drop_dims.R") source("modules/Skill/R/RPS_clim.R") source("modules/Skill/R/CRPS_clim.R") source("modules/Skill/R/tmp/GetProbs.R") +source("modules/Skill/R/tmp/Corr.R") ## TODO: Remove in the next release source("modules/Skill/compute_skill_metrics.R") source("modules/Skill/compute_probabilities.R") @@ -35,7 +36,8 @@ Skill <- function(recipe, data, agg = 'global') { # warn(recipe$Run$logger, "Anomalies have been requested in the recipe, # but the climatologies have not been provided in the # compute_skill_metrics call. Be aware that some metrics like the -# Mean Bias may not be correct.") +# Mean Bias may not be + orrect.") # } # } else { # warn(recipe$Run$logger, "Anomaly computation was not requested in the @@ -207,7 +209,7 @@ Skill <- function(recipe, data, agg = 'global') { } else if (metric %in% c('enscorr', 'corr_individual_members')) { ## TODO: Return significance ## TODO: Implement option for Kendall and Spearman methods? - skill <- s2dv::Corr(data$hcst$data, data$obs$data, + skill <- Corr(data$hcst$data, data$obs$data, dat_dim = 'dat', time_dim = time_dim, method = 'pearson', diff --git a/recipe_ecvs_scorecards_seasonal.yml b/recipe_ecvs_scorecards_seasonal.yml index 47c91f6c..023662fc 100644 --- a/recipe_ecvs_scorecards_seasonal.yml +++ b/recipe_ecvs_scorecards_seasonal.yml @@ -48,11 +48,11 @@ Analysis: Workflow: Anomalies: compute: yes - cross_validation: no + cross_validation: yes save: none Calibration: method: raw # Mandatory, str: Calibration method. See docu. - cross_validation: yes + cross_validation: no save: none Skill: metric: mean_bias EnsCorr rpss crpss EnsSprErr diff --git a/recipe_tas_scorecards_seasonal.yml b/recipe_tas_scorecards_seasonal.yml index 9a5d5580..e755f335 100644 --- a/recipe_tas_scorecards_seasonal.yml +++ b/recipe_tas_scorecards_seasonal.yml @@ -5,7 +5,7 @@ Description: Analysis: Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal Variables: - name: tasmin + name: tos freq: monthly_mean Datasets: System: -- GitLab From d1324c38cdabdb74c73409fdc947f7af04eb3730 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 1 Dec 2023 16:03:08 +0000 Subject: [PATCH 04/34] attempt to unify var names and use autosubmit --- autosubmit/conf_cerise/autosubmit.yml | 22 + autosubmit/conf_cerise/expdef.yml | 44 + autosubmit/conf_cerise/jobs.yml | 16 + autosubmit/conf_cerise/platforms.yml | 13 + autosubmit/conf_cerise/proj.yml | 4 + autosubmit/conf_mars/autosubmit.yml | 2 +- conf/output_dictionaries/scorecards.yml | 6 + conf/variable-dictionary.yml | 14 +- full_NAO_scorecards.R | 28 +- launch_SUNSET.sh | 2 +- modules/Indices/R/tmp/EOF.R | 293 +++ modules/Indices/R/tmp/NAO.R | 574 ++++++ modules/Indices/R/tmp/ProjectField.R | 272 +++ modules/Indices/R/tmp/Utils.R | 1779 ++++++++++++++++++ modules/Saving/R/save_metrics.R | 3 + modules/Scorecards/R/tmp/SCPlotScorecard.R | 2 +- modules/Visualization/R/plot_skill_metrics.R | 3 +- recipe_NAO_scorecards.yml | 34 +- recipe_ecvs_scorecards_seasonal.yml | 14 +- tools/divide_recipe.R | 2 + 20 files changed, 3084 insertions(+), 43 deletions(-) create mode 100644 autosubmit/conf_cerise/autosubmit.yml create mode 100644 autosubmit/conf_cerise/expdef.yml create mode 100644 autosubmit/conf_cerise/jobs.yml create mode 100644 autosubmit/conf_cerise/platforms.yml create mode 100644 autosubmit/conf_cerise/proj.yml create mode 100644 modules/Indices/R/tmp/EOF.R create mode 100644 modules/Indices/R/tmp/NAO.R create mode 100644 modules/Indices/R/tmp/ProjectField.R create mode 100644 modules/Indices/R/tmp/Utils.R diff --git a/autosubmit/conf_cerise/autosubmit.yml b/autosubmit/conf_cerise/autosubmit.yml new file mode 100644 index 00000000..e4633c3b --- /dev/null +++ b/autosubmit/conf_cerise/autosubmit.yml @@ -0,0 +1,22 @@ +config: + EXPID: + AUTOSUBMIT_VERSION: 4.0.73 + MAXWAITINGJOBS: 99 + # Default maximum number of jobs to be running at the same time at any platform + # Default: 6 + TOTALJOBS: 16 + SAFETYSLEEPTIME: 10 + RETRIALS: 0 +mail: + NOTIFICATIONS: + TO: +communications: + # Communications library used to connect with platforms: paramiko or saga. + # Default: paramiko + API: paramiko +storage: + # Defines the way of storing the progress of the experiment. The available options are: + # A PICKLE file (pkl) or an SQLite database (db). Default: pkl + TYPE: pkl + # Defines if the remote logs will be copied to the local platform. Default: True. + COPY_REMOTE_LOGS: True diff --git a/autosubmit/conf_cerise/expdef.yml b/autosubmit/conf_cerise/expdef.yml new file mode 100644 index 00000000..b4327f65 --- /dev/null +++ b/autosubmit/conf_cerise/expdef.yml @@ -0,0 +1,44 @@ +DEFAULT: + EXPID: + HPCARCH: NORD3 +experiment: + DATELIST: + MEMBERS: fc0 + CHUNKSIZEUNIT: month + CHUNKSIZE: 1 + NUMCHUNKS: + CHUNKINI: 1 + CALENDAR: standard +project: + PROJECT_TYPE: local + # Destination folder name for project. type: STRING, default: leave empty, + PROJECT_DESTINATION: auto-s2s +# If PROJECT_TYPE is not git, no need to change +git: + # Repository URL STRING: 'https://github.com/torvalds/linux.git' + PROJECT_ORIGIN: https://earth.bsc.es/gitlab/es/auto-s2s.git + # Select branch or tag, STRING, default: 'master', help: {'master' (default), 'develop', 'v3.1b', ...} + PROJECT_BRANCH: master + # type: STRING, default: leave empty, help: if model branch is a TAG leave empty + PROJECT_COMMIT: '' +svn: + PROJECT_URL: '' + PROJECT_REVISION: '' +# If PROJECT_TYPE is not local, no need to change +local: + # type: STRING, help: /foo/bar/ecearth + PROJECT_PATH: /esarchive/scratch/vagudets/repos/auto-s2s/ +# If PROJECT_TYPE is none, no need to change +project_files: + # Where is PROJECT CONFIGURATION file location relative to project root path + FILE_PROJECT_CONF: '' + # Where is JOBS CONFIGURATION file location relative to project root path + FILE_JOBS_CONF: '' + # Default job scripts type in the project. type: STRING, default: bash, supported: 'bash', 'python' or 'r' + JOB_SCRIPTS_TYPE: '' +rerun: + # Is a rerun or not? [Default: Do set FALSE]. BOOLEAN: TRUE, FALSE + RERUN: FALSE + # If RERUN: TRUE then supply the list of chunks to rerun + # LIST: [ 19601101 [ fc0 [1 2 3 4] fc1 [1] ] 19651101 [ fc0 [16-30] ] ] + CHUNKLIST: '' diff --git a/autosubmit/conf_cerise/jobs.yml b/autosubmit/conf_cerise/jobs.yml new file mode 100644 index 00000000..6f6e6931 --- /dev/null +++ b/autosubmit/conf_cerise/jobs.yml @@ -0,0 +1,16 @@ +JOBS: + verification: + FILE: autosubmit/auto-verification-CERISE.sh + RUNNING: chunk + WALLCLOCK: + NOTIFY_ON: + PLATFORM: ATHOS + PROCESSORS: + scorecards: + FILE: autosubmit/auto-scorecards.sh + WALLCLOCK: 00:30 + PLATFORM: ATHOS + NOTIFY_ON: + PROCESSORS: 1 + DEPENDENCIES: verification + diff --git a/autosubmit/conf_cerise/platforms.yml b/autosubmit/conf_cerise/platforms.yml new file mode 100644 index 00000000..c3fa6dcb --- /dev/null +++ b/autosubmit/conf_cerise/platforms.yml @@ -0,0 +1,13 @@ +## TODO: Change platform +Platforms: + ATHOS: + TYPE: slurm + HOST: hpc-login + USER: cyce + PROJECT: spesiccf ## TO BE CHANGED + EC_QUEUE: hpc + SCRATCH_DIR: /ec/res4/scratch/cyce + ADD_PROJECT_TO_HOST: false + CUSTOM_DIRECTIVES: ["#SBATCH --hint=nomultithread"] + QUEUE: np + diff --git a/autosubmit/conf_cerise/proj.yml b/autosubmit/conf_cerise/proj.yml new file mode 100644 index 00000000..679cf63b --- /dev/null +++ b/autosubmit/conf_cerise/proj.yml @@ -0,0 +1,4 @@ +common: + MODULES: "MODULES" + OUTDIR: + SCRIPT: diff --git a/autosubmit/conf_mars/autosubmit.yml b/autosubmit/conf_mars/autosubmit.yml index 03008116..8302d9bb 100644 --- a/autosubmit/conf_mars/autosubmit.yml +++ b/autosubmit/conf_mars/autosubmit.yml @@ -1,7 +1,7 @@ config: EXPID: AUTOSUBMIT_VERSION: 4.0.73 - MAXWAITINGJOBS: 16 + MAXWAITINGJOBS: 100 # Default maximum number of jobs to be running at the same time at any platform # Default: 6 TOTALJOBS: 16 diff --git a/conf/output_dictionaries/scorecards.yml b/conf/output_dictionaries/scorecards.yml index fa92042c..8eecb20d 100644 --- a/conf/output_dictionaries/scorecards.yml +++ b/conf/output_dictionaries/scorecards.yml @@ -8,6 +8,9 @@ System: Meteo-France-System7: short_name: "meteofrances7" display_name: "Meteo-France System 7" + Meteo-France-System8: + short_name: "meteofrances8" + display_name: "Meteo-France System 8" DWD-GCFS2.1: short_name: "dwds21" display_name: "DWD System 21" @@ -23,6 +26,9 @@ System: UK-MetOffice-Glosea600: short_name: "ukmos600" display_name: "UK Met Office System 600" + UKMO-System602: + short_name: "ukmo602" + display_name: "UL Met Office System 602" NCEP-CFSv2: short_name: "nceps2" display_name: "NCEP System 2" diff --git a/conf/variable-dictionary.yml b/conf/variable-dictionary.yml index 954bd57c..3b05a10c 100644 --- a/conf/variable-dictionary.yml +++ b/conf/variable-dictionary.yml @@ -21,23 +21,23 @@ vars: accum: no tas: units: "K" - long_name: "Near-Surface Air Temperature" + long_name: "2-metre air temperature" standard_name: "air_temperature" accum: no tos: units: "K" - long_name: "Sea Surface Temperature" + long_name: "Sea surface temperature" standard_name: "sea_surface_temperature" accum: no # outname: "t2" tasmax: units: "K" - long_name: "Maximum Near-Surface Air Temperature" + long_name: "Maximum 2-metre air temperature" standard_name: "air_temperature" accum: no tasmin: units: "K" - long_name: "Minimum Near-Surface Air Temperature" + long_name: "Minimum 2-metre air temperature" standard_name: "air_temperature" accum: no ts: @@ -47,12 +47,12 @@ vars: accum: no tdps: units: "K" - long_name: "2 metre dewpoint temperature" + long_name: "2-metre dewpoint temperature" standard_name: accum: no sfcWind: units: "m s-1" - long_name: "Near-Surface Wind Speed" + long_name: "Near surface wind speed" standard_name: "wind_speed" accum: no sfcWindmax: @@ -111,7 +111,7 @@ vars: accum: yes psl: units: "Pa" - long_name: "Sea Level Pressure" + long_name: "Sea level pressure" standard_name: "air_pressure_at_mean_sea_level" accum: no clt: diff --git a/full_NAO_scorecards.R b/full_NAO_scorecards.R index 3e24c6ad..b5130b22 100644 --- a/full_NAO_scorecards.R +++ b/full_NAO_scorecards.R @@ -17,10 +17,10 @@ cross <- CSTools:::.make.eval.train.dexes('leave-one-out', sdate_dim, NULL) # Paralelized: loops <- array(1:length(cross), c(loop = length(cross))) - source("/esarchive/scratch/nperez/git/s2dv/R/NAO.R") - source("/esarchive/scratch/nperez/git/s2dv/R/Utils.R") - source("/esarchive/scratch/nperez/git/s2dv/R/EOF.R") - source("/esarchive/scratch/nperez/git/s2dv/R/ProjectField.R") + source("modules/Indices/R/tmp/NAO.R") + source("modules/Indices/R/tmp/Utils.R") + source("modules/Indices/R/tmp/EOF.R") + source("modules/Indices/R/tmp/ProjectField.R") res <- Apply(list(loops), target = NULL, @@ -51,7 +51,8 @@ res <- Apply(list(loops), target = NULL, space_dim = c('latitude', 'longitude'), ftime_dim = 'time', lat = data$obs$attrs$Variable$metadata$lat, - lon = data$obs$attrs$Variable$metadata$lon) + lon = data$obs$attrs$Variable$metadata$lon, + ncores = recipe$Analysis$ncores) nao_obs_ev <- NAO(exp = ano_hcst_tr, obs = ano_obs_tr, exp_cor = ano_obs_ev, ftime_avg = NULL, time_dim = 'syear', @@ -59,7 +60,8 @@ res <- Apply(list(loops), target = NULL, space_dim = c('latitude', 'longitude'), ftime_dim = 'time', lat = data$obs$attrs$Variable$metadata$lat, - lon = data$obs$attrs$Variable$metadata$lon)$exp_cor + lon = data$obs$attrs$Variable$metadata$lon), + ncores = recipe$Analysis$ncores)$exp_cor #Standarisation: # Need the nao_hcst (for the train.dexes) to standarize the eval.dexes? nao_hcst_ev <- Apply(list(nao$exp, nao$exp_cor), @@ -68,7 +70,7 @@ res <- Apply(list(loops), target = NULL, sd <- sqrt(var(as.vector(x), na.rm = TRUE)) means <- mean(as.vector(x), na.rm = TRUE) res <- apply(y, c(1,2), function(z) {(z-means)/sd})}, - ncores = 1)$output1 + ncores = recipe$Analysis$ncores)$output1 nao_obs_ev <- Apply(list(nao$obs, nao_obs_ev), target_dims = list('syear', c('syear','ensemble')), fun = function(x, y) { @@ -76,26 +78,26 @@ res <- Apply(list(loops), target = NULL, means <- mean(as.vector(x), na.rm = TRUE) res <- apply(y, c(1,2), function(z) {(z-means)/sd})}, - ncores = 1)$output1 + ncores = recipe$Analysis$ncores)$output1 nao_obs_tr <- Apply(list(nao$obs), target_dims = 'syear', fun = function(x) { sd <- sqrt(var(as.vector(x), na.rm = TRUE)) means <- mean(as.vector(x), na.rm = TRUE) res <- apply(x, 1, function(z) {(z-means)/sd})}, - ncores = 1, output_dims = 'syear')$output1 + ncores = recipe$Analysis$ncores, output_dims = 'syear')$output1 nao_hcst_tr <- Apply(list(nao$exp), target_dims = c('syear', 'ensemble'), fun = function(x) { sd <- sqrt(var(as.vector(x), na.rm = TRUE)) means <- mean(as.vector(x), na.rm = TRUE) - res <- apply(x, c(1,2), function (z) {(z-means)/sd})}, ncores = 1)$output1 + res <- apply(x, c(1,2), function (z) {(z-means)/sd})}, ncores = recipe$Analysis$ncores)$output1 #Category limits lims_nao_hcst_tr <- Apply(nao_hcst_tr, target_dims = c('syear', 'ensemble'), fun = function(x) {quantile(as.vector(x), c(1/3, 2/3), na.rm = TRUE)}, - output_dims = 'probs')$output1 + output_dims = 'probs', ncores = recipe$Analysis$ncores)$output1 lims_nao_obs_tr <- Apply(nao_obs_tr, target_dims = 'syear', fun = function(x) {quantile(as.vector(x), c(1/3, 2/3), na.rm = TRUE)}, - output_dims = 'probs')$output1 + output_dims = 'probs', ncores = recipe$Analysis$ncores)$output1 return(list(#ano_obs_tr = ano_obs_tr, ano_hcst_tr = ano_hcst_tr, #ano_hcst_ev = ano_hcst_ev, ano_obs_ev = ano_obs_ev, @@ -103,7 +105,7 @@ res <- Apply(list(loops), target = NULL, nao_hcst_tr = nao_hcst_tr, nao_hcst_ev = nao_hcst_ev, nao_obs_ev = nao_obs_ev, nao_obs_tr = nao_obs_tr, lims_nao_hcst_tr = lims_nao_hcst_tr, lims_nao_obs_tr = lims_nao_obs_tr)) - }, ncores = recipe$Analysis$ncores) + }, ncores = 1) # RPS source("/esarchive/scratch/nperez/git2/s2dv/R/GetProbs.R") nao_hcst_probs_ev <- GetProbs(res$nao_hcst_ev, time_dim = 'loop', diff --git a/launch_SUNSET.sh b/launch_SUNSET.sh index 64374e8d..fda1dc43 100644 --- a/launch_SUNSET.sh +++ b/launch_SUNSET.sh @@ -133,7 +133,7 @@ if [[ $run_method == "sbatch" ]]; then verification_job_list=() echo "Submitting verification jobs..." # Loop over atomic recipes - for atomic_recipe in ${outdir}/logs/recipes/atomic_recipe_??.yml; do + for atomic_recipe in ${outdir}/logs/recipes/atomic_recipe_*.yml; do job_number=$(($job_number + 1)) job_name=$(basename $outdir)_$(printf %02d $job_number) outfile=${logdir}/run-${job_name}.out diff --git a/modules/Indices/R/tmp/EOF.R b/modules/Indices/R/tmp/EOF.R new file mode 100644 index 00000000..734c71c3 --- /dev/null +++ b/modules/Indices/R/tmp/EOF.R @@ -0,0 +1,293 @@ +#'Area-weighted empirical orthogonal function analysis using SVD +#' +#'Perform an area-weighted EOF analysis using single value decomposition (SVD) +#'based on a covariance matrix or a correlation matrix if parameter 'corr' is +#'set to TRUE. +#' +#'@param ano A numerical array of anomalies with named dimensions to calculate +#' EOF. The dimensions must have at least 'time_dim' and 'space_dim'. NAs +#' could exist but it should be consistent along time_dim. That is, if one grid +#' point has NAs, all the time steps at this point should be NAs. +#'@param lat A vector of the latitudes of 'ano'. +#'@param lon A vector of the longitudes of 'ano'. +#'@param time_dim A character string indicating the name of the time dimension +#' of 'ano'. The default value is 'sdate'. +#'@param space_dim A vector of two character strings. The first is the dimension +#' name of latitude of 'ano' and the second is the dimension name of longitude +#' of 'ano'. The default value is c('lat', 'lon'). +#'@param neofs A positive integer of the modes to be kept. The default value is +#' 15. If time length or the product of the length of space_dim is smaller than +#' neofs, neofs will be changed to the minimum of the three values. +#'@param corr A logical value indicating whether to base on a correlation (TRUE) +#' or on a covariance matrix (FALSE). The default value is FALSE. +#'@param ncores An integer indicating the number of cores to use for parallel +#' computation. The default value is NULL. +#' +#'@return +#'A list containing: +#'\item{EOFs}{ +#' An array of EOF patterns normalized to 1 (unitless) with dimensions +#' (number of modes, rest of the dimensions of 'ano' except 'time_dim'). +#' Multiplying \code{EOFs} by \code{PCs} gives the original reconstructed +#' field. +#'} +#'\item{PCs}{ +#' An array of principal components with the units of the original field to +#' the power of 2, with dimensions (time_dim, number of modes, rest of the +#' dimensions of 'ano' except 'space_dim'). +#' 'PCs' contains already the percentage of explained variance so, +#' to reconstruct the original field it's only needed to multiply 'EOFs' +#' by 'PCs'. +#'} +#'\item{var}{ +#' An array of the percentage (%) of variance fraction of total variance +#' explained by each mode (number of modes). The dimensions are (number of +#' modes, rest of the dimensions of 'ano' except 'time_dim' and 'space_dim'). +#'} +#'\item{mask}{ +#' An array of the mask with dimensions (space_dim, rest of the dimensions of +#' 'ano' except 'time_dim'). It is made from 'ano', 1 for the positions that +#' 'ano' has value and NA for the positions that 'ano' has NA. It is used to +#' replace NAs with 0s for EOF calculation and mask the result with NAs again +#' after the calculation. +#'} +#'\item{wght}{ +#' An array of the area weighting with dimensions 'space_dim'. It is calculated +#' by cosine of 'lat' and used to compute the fraction of variance explained by +#' each EOFs. +#'} +#'\item{tot_var}{ +#' A number or a numeric array of the total variance explained by all the modes. +#' The dimensions are same as 'ano' except 'time_dim' and 'space_dim'. +#'} +#' +#'@seealso ProjectField, NAO, PlotBoxWhisker +#'@examples +#'# This example computes the EOFs along forecast horizons and plots the one +#'# that explains the greatest amount of variability. The example data has low +#'# resolution so the result may not be explanatory, but it displays how to +#'# use this function. +#'\dontshow{ +#'startDates <- c('19851101', '19901101', '19951101', '20001101', '20051101') +#'sampleData <- s2dv:::.LoadSampleData('tos', c('experiment'), +#' c('observation'), startDates, +#' leadtimemin = 1, +#' leadtimemax = 4, +#' output = 'lonlat', +#' latmin = 27, latmax = 48, +#' lonmin = -12, lonmax = 40) +#'} +#'ano <- Ano_CrossValid(sampleData$mod, sampleData$obs) +#'tmp <- MeanDims(ano$exp, c('dataset', 'member')) +#'ano <- tmp[1, , ,] +#'names(dim(ano)) <- names(dim(tmp))[-2] +#'eof <- EOF(ano, sampleData$lat, sampleData$lon) +#'\dontrun{ +#'PlotEquiMap(eof$EOFs[1, , ], sampleData$lon, sampleData$lat) +#'} +#' +#'@import multiApply +#'@importFrom stats sd +#'@export +EOF <- function(ano, lat, lon, time_dim = 'sdate', space_dim = c('lat', 'lon'), + neofs = 15, corr = FALSE, ncores = NULL) { + + # Check inputs + ## ano + if (is.null(ano)) { + stop("Parameter 'ano' cannot be NULL.") + } + if (!is.numeric(ano)) { + stop("Parameter 'ano' must be a numeric array.") + } + if(any(is.null(names(dim(ano))))| any(nchar(names(dim(ano))) == 0)) { + stop("Parameter 'ano' must have dimension names.") + } + ## time_dim + if (!is.character(time_dim) | length(time_dim) > 1) { + stop("Parameter 'time_dim' must be a character string.") + } + if (!time_dim %in% names(dim(ano))) { + stop("Parameter 'time_dim' is not found in 'ano' dimension.") + } + ## space_dim + if (!is.character(space_dim) | length(space_dim) != 2) { + stop("Parameter 'space_dim' must be a character vector of 2.") + } + if (any(!space_dim %in% names(dim(ano)))) { + stop("Parameter 'space_dim' is not found in 'ano' dimension.") + } + ## lat + if (!is.numeric(lat) | length(lat) != dim(ano)[space_dim[1]]) { + stop(paste0("Parameter 'lat' must be a numeric vector with the same ", + "length as the latitude dimension of 'ano'.")) + } + if (any(lat > 90 | lat < -90)) { + stop("Parameter 'lat' must contain values within the range [-90, 90].") + } + ## lon + if (!is.numeric(lon) | length(lon) != dim(ano)[space_dim[2]]) { + stop(paste0("Parameter 'lon' must be a numeric vector with the same ", + "length as the longitude dimension of 'ano'.")) + } + if (any(lon > 360 | lon < -360)) { + .warning("Some 'lon' is out of the range [-360, 360].") + } + ## neofs + if (!is.numeric(neofs) | neofs %% 1 != 0 | neofs <= 0 | length(neofs) > 1) { + stop("Parameter 'neofs' must be a positive integer.") + } + ## corr + if (!is.logical(corr) | length(corr) > 1) { + stop("Parameter 'corr' must be one logical value.") + } + ## ncores + if (!is.null(ncores)) { + if (!is.numeric(ncores) | ncores %% 1 != 0 | ncores <= 0 | + length(ncores) > 1) { + stop("Parameter 'ncores' must be a positive integer.") + } + } + + ############################### + # Calculate EOF + +# # Replace mask of NAs with 0s for EOF analysis. +# ano[!is.finite(ano)] <- 0 + + # Area weighting. Weights for EOF; needed to compute the + # fraction of variance explained by each EOFs + space_ind <- sapply(space_dim, function(a) which(names(dim(ano)) == a)) + wght <- array(cos(lat * pi/180), dim = dim(ano)[space_ind]) + + # We want the covariance matrix to be weigthed by the grid + # cell area so the anomaly field is weighted by its square + # root since the covariance matrix equals transpose(ano) + # times ano. + wght <- sqrt(wght) + + # neofs is bounded + if (neofs != min(dim(ano)[time_dim], prod(dim(ano)[space_dim]), neofs)) { + neofs <- min(dim(ano)[time_dim], prod(dim(ano)[space_dim]), neofs) + .warning(paste0("Parameter 'neofs' is changed to ", neofs, ", the minimum among ", + "the length of time_dim, the production of the length of space_dim, ", + "and neofs.")) + } + + res <- Apply(ano, + target_dims = c(time_dim, space_dim), + output_dims = list(EOFs = c('mode', space_dim), + PCs = c(time_dim, 'mode'), + var = 'mode', + tot_var = NULL, + mask = space_dim), + fun = .EOF, + corr = corr, neofs = neofs, + wght = wght, + ncores = ncores) + + return(c(res, wght = list(wght))) + +} + +.EOF <- function(ano, neofs = 15, corr = FALSE, wght = wght) { + # ano: [time, lat, lon] + + # Dimensions + nt <- dim(ano)[1] + ny <- dim(ano)[2] + nx <- dim(ano)[3] + + # Check if all the time steps at one grid point are NA-consistent. + # The grid point should have all NAs or no NA along time dim. + if (anyNA(ano)) { + ano_latlon <- array(ano, dim = c(nt, ny * nx)) # [time, lat*lon] + na_ind <- which(is.na(ano_latlon), arr.ind = T) + if (dim(na_ind)[1] != nt * length(unique(na_ind[, 2]))) { + stop("Detect certain grid points have NAs but not consistent across time ", + "dimension. If the grid point is NA, it should have NA at all time step.") + } + } + + # Build the mask + mask <- ano[1, , ] + mask[!is.finite(mask)] <- NA + mask[is.finite(mask)] <- 1 + dim(mask) <- c(ny, nx) + + # Replace mask of NAs with 0s for EOF analysis. + ano[!is.finite(ano)] <- 0 + + ano <- ano * InsertDim(wght, 1, nt) + + # The use of the correlation matrix is done under the option corr. + if (corr == TRUE) { + stdv <- apply(ano, c(2, 3), sd, na.rm = T) + ano <- ano/InsertDim(stdv, 1, nt) + } + + # Time/space matrix for SVD + dim(ano) <- c(nt, ny * nx) + dim.dat <- dim(ano) + + # 'transpose' means the array needs to be transposed before + # calling La.svd for computational efficiency because the + # spatial dimension is larger than the time dimension. This + # goes with transposing the outputs of LA.svd also. + if (dim.dat[2] > dim.dat[1]) { + transpose <- TRUE + } else { + transpose <- FALSE + } + if (transpose) { + pca <- La.svd(t(ano)) + } else { + pca <- La.svd(ano) + } + + # La.svd conventions: decomposition X = U D t(V) La.svd$u + # returns U La.svd$d returns diagonal values of D La.svd$v + # returns t(V) !! The usual convention is PC=U and EOF=V. + # If La.svd is called for ano (transpose=FALSE case): EOFs: + # $v PCs: $u If La.svd is called for t(ano) (transposed=TRUE + # case): EOFs: t($u) PCs: t($v) + + if (transpose) { + pca.EOFs <- t(pca$u) + pca.PCs <- t(pca$v) + } else { + pca.EOFs <- pca$v + pca.PCs <- pca$u + } + + # The numbers of transposition is limited to neofs + PC <- pca.PCs[, 1:neofs] + EOF <- pca.EOFs[1:neofs, ] + dim(EOF) <- c(neofs, ny, nx) + + # To sort out crash when neofs=1. + if (neofs == 1) { + PC <- InsertDim(PC, 2, 1, name = 'new') + } + + # Computation of the % of variance associated with each mode + W <- pca$d[1:neofs] + tot.var <- sum(pca$d^2) + var.eof <- 100 * pca$d[1:neofs]^2/tot.var + + for (e in 1:neofs) { + # Set all masked grid points to NA in the EOFs + # Divide patterns by area weights so that EOF * PC gives unweigthed (original) data + EOF[e, , ] <- EOF[e, , ] * mask / wght + # PC is multiplied by the explained variance, + # so that the reconstruction is only EOF * PC + PC[, e] <- PC[, e] * W[e] + } + + if (neofs == 1) { + var.eof <- as.array(var.eof) + } + + return(invisible(list(EOFs = EOF, PCs = PC, var = var.eof, tot_var = tot.var, mask = mask))) +} + diff --git a/modules/Indices/R/tmp/NAO.R b/modules/Indices/R/tmp/NAO.R new file mode 100644 index 00000000..e69afbff --- /dev/null +++ b/modules/Indices/R/tmp/NAO.R @@ -0,0 +1,574 @@ +#'Compute the North Atlantic Oscillation (NAO) Index +#' +#'Compute the North Atlantic Oscillation (NAO) index based on the leading EOF +#'of the sea level pressure (SLP) anomalies over the north Atlantic region +#'(20N-80N, 80W-40E). The PCs are obtained by projecting the forecast and +#'observed anomalies onto the observed EOF pattern or the forecast +#'anomalies onto the EOF pattern of the other years of the forecast. +#'By default (ftime_avg = 2:4), NAO() computes the NAO index for 1-month +#'lead seasonal forecasts that can be plotted with PlotBoxWhisker(). It returns +#'cross-validated PCs of the NAO index for hindcast (exp) and observations +#'(obs) based on the leading EOF pattern, or, if forecast (exp_cor) is provided, +#'the NAO index for forecast and the corresponding data (exp and obs). +#' +#'@param exp A named numeric array of North Atlantic SLP (20N-80N, 80W-40E) +#' hindcast anomalies from \code{Ano()} or \code{Ano_CrossValid()} with +#' dimensions 'time_dim', 'memb_dim', 'ftime_dim', and 'space_dim' at least. +#' If only NAO of observational data needs to be computed, this parameter can +#' be left to NULL. The default value is NULL. +#'@param obs A named numeric array of North Atlantic SLP (20N-80N, 80W-40E) +#' observed anomalies from \code{Ano()} or \code{Ano_CrossValid()} with +#' dimensions 'time_dim', 'ftime_dim', and 'space_dim' at least. +#' If only NAO of experimental data needs to be computed, this parameter can +#' be left to NULL. The default value is NULL. +#'@param exp_cor A named numeric array of the Nort Atlantic SLP (20-80N, 80W-40E) +#' forecast anomalies from \code{Ano()} or \code{Ano_CrossValid()} with +#' dimension 'time_dim' of length 1 (as in the case of an operational +#' forecast), 'memb_dim', 'ftime_dim', and 'space_dim' at least. +#' If only NAO of reference period needs to be computed, this parameter can +#' be left to NULL. The default value is NULL. +#'@param lat A vector of the latitudes of 'exp' and 'obs'. +#'@param lon A vector of the longitudes of 'exp' and 'obs'. +#'@param time_dim A character string indicating the name of the time dimension +#' of 'exp' and 'obs'. The default value is 'sdate'. +#'@param memb_dim A character string indicating the name of the member +#' dimension of 'exp' (and 'obs', optional). If 'obs' has memb_dim, the length +#' must be 1. The default value is 'member'. +#'@param space_dim A vector of two character strings. The first is the dimension +#' name of latitude of 'ano' and the second is the dimension name of longitude +#' of 'ano'. The default value is c('lat', 'lon'). +#'@param ftime_dim A character string indicating the name of the forecast time +#' dimension of 'exp' and 'obs'. The default value is 'ftime'. +#'@param ftime_avg A numeric vector of the forecast time steps to average +#' across the target period. If average is not needed, set NULL. The default +#' value is 2:4, i.e., from 2nd to 4th forecast time steps. +#'@param obsproj A logical value indicating whether to compute the NAO index by +#' projecting the forecast anomalies onto the leading EOF of observational +#' reference (TRUE, default) or compute the NAO by first computing the leading +#' EOF of the forecast anomalies (in cross-validation mode, i.e. leave the +#' evaluated year out), then projecting forecast anomalies onto this EOF +#' (FALSE). If 'exp_cor' is provided, 'obs' will be used when obsproj is TRUE +#' and 'exp' will be used when obsproj is FALSE, and no cross-validation is +#' applied. +#'@param ncores An integer indicating the number of cores to use for parallel +#' computation. The default value is NULL. +#' +#'@return +#'A list which contains some of the following items depending on the data inputs: +#'\item{exp}{ +#' A numeric array of hindcast NAO index in verification format with the same +#' dimensions as 'exp' except space_dim and ftime_dim. If ftime_avg is NULL, +#' ftime_dim remains. +#' } +#'\item{obs}{ +#' A numeric array of observation NAO index in verification format with the same +#' dimensions as 'obs' except space_dim and ftime_dim. If ftime_avg is NULL, +#' ftime_dim remains. +#'} +#'\item{exp_cor}{ +#' A numeric array of forecast NAO index in verification format with the same +#' dimensions as 'exp_cor' except space_dim and ftime_dim. If ftime_avg is NULL, +#' ftime_dim remains. +#' } +#' +#'@references +#'Doblas-Reyes, F.J., Pavan, V. and Stephenson, D. (2003). The skill of +#' multi-model seasonal forecasts of the wintertime North Atlantic +#' Oscillation. Climate Dynamics, 21, 501-514. +#' DOI: 10.1007/s00382-003-0350-4 +#' +#'@examples +#'# Make up synthetic data +#'set.seed(1) +#'exp <- array(rnorm(1620), dim = c(member = 2, sdate = 3, ftime = 5, lat = 6, lon = 9)) +#'set.seed(2) +#'obs <- array(rnorm(1620), dim = c(member = 1, sdate = 3, ftime = 5, lat = 6, lon = 9)) +#'lat <- seq(20, 80, length.out = 6) +#'lon <- seq(-80, 40, length.out = 9) +#'nao <- NAO(exp = exp, obs = obs, lat = lat, lon = lon) +#' +#'exp_cor <- array(rnorm(540), dim = c(member = 2, sdate = 1, ftime = 5, lat = 6, lon = 9)) +#'nao <- NAO(exp = exp, obs = obs, exp_cor = exp_cor, lat = lat, lon = lon, obsproj = TRUE) +#'# plot the NAO index +#' \dontrun{ +#'nao$exp <- Reorder(nao$exp, c(2, 1)) +#'nao$obs <- Reorder(nao$obs, c(2, 1)) +#'PlotBoxWhisker(nao$exp, nao$obs, "NAO index, DJF", "NAO index (PC1) TOS", +#' monini = 12, yearini = 1985, freq = 1, "Exp. A", "Obs. X") +#' } +#' +#'@import multiApply +#'@importFrom ClimProjDiags Subset +#'@export +NAO <- function(exp = NULL, obs = NULL, exp_cor = NULL, lat, lon, time_dim = 'sdate', + memb_dim = 'member', space_dim = c('lat', 'lon'), + ftime_dim = 'ftime', ftime_avg = 2:4, + obsproj = TRUE, ncores = NULL) { + # Check inputs + ## exp, obs, and exp_cor (1) + if (is.null(obs) & is.null(exp)) { + stop("Parameter 'exp' and 'obs' cannot both be NULL.") + } + if (!is.null(exp)) { + if (!is.numeric(exp)) { + stop("Parameter 'exp' must be a numeric array.") + } + if (is.null(dim(exp))) { + stop(paste0("Parameter 'exp' must have at least dimensions ", + "time_dim, memb_dim, space_dim, and ftime_dim.")) + } + if(any(is.null(names(dim(exp)))) | any(nchar(names(dim(exp))) == 0)) { + stop("Parameter 'exp' must have dimension names.") + } + } + if (!is.null(obs)) { + if (!is.numeric(obs)) { + stop("Parameter 'obs' must be a numeric array.") + } + if (is.null(dim(obs))) { + stop(paste0("Parameter 'obs' must have at least dimensions ", + "time_dim, space_dim, and ftime_dim.")) + } + if(any(is.null(names(dim(obs)))) | any(nchar(names(dim(obs))) == 0)) { + stop("Parameter 'obs' must have dimension names.") + } + } + if (!is.null(exp_cor)) { + if (!is.numeric(exp_cor)) { + stop("Parameter 'exp_cor' must be a numeric array.") + } + if (is.null(dim(exp_cor))) { + stop(paste0("Parameter 'exp_cor' must have at least dimensions ", + "time_dim, memb_dim, space_dim, and ftime_dim.")) + } + if (any(is.null(names(dim(exp_cor)))) | any(nchar(names(dim(exp_cor))) == 0)) { + stop("Parameter 'exp_cor' must have dimension names.") + } + if (is.null(exp) || is.null(obs)) { + stop("Parameters 'exp' and 'obs' are required when 'exp_cor' is not provided.") + } + } + ## time_dim + if (!is.character(time_dim) | length(time_dim) > 1) { + stop("Parameter 'time_dim' must be a character string.") + } + if (!is.null(exp)) { + if (!time_dim %in% names(dim(exp))) { + stop("Parameter 'time_dim' is not found in 'exp' dimension.") + } + } + if (!is.null(obs)) { + if (!time_dim %in% names(dim(obs))) { + stop("Parameter 'time_dim' is not found in 'obs' dimension.") + } + } + if (!is.null(exp_cor)) { + if (!time_dim %in% names(dim(exp_cor))) { + stop("Parameter 'time_dim' is not found in 'exp_cor' dimension.") + } + if (dim(exp_cor)[time_dim] > 1) { + stop("Parameter 'exp_cor' is expected to have length 1 in ", + time_dim, "dimension.") + } + } + + ## memb_dim + if (!is.character(memb_dim) | length(memb_dim) > 1) { + stop("Parameter 'memb_dim' must be a character string.") + } + if (!is.null(exp)) { + if (!memb_dim %in% names(dim(exp))) { + stop("Parameter 'memb_dim' is not found in 'exp' dimension.") + } + } + add_member_back <- FALSE + if (!is.null(obs)) { + if (memb_dim %in% names(dim(obs))) { + if (dim(obs)[memb_dim] != 1) { + stop("The length of parameter 'memb_dim' in 'obs' must be 1.") + } else { + add_member_back <- TRUE + obs <- ClimProjDiags::Subset(obs, memb_dim, 1, drop = 'selected') + } + } + } + if (!is.null(exp_cor)) { + if (!memb_dim %in% names(dim(exp_cor))) { + stop("Parameter 'memb_dim' is not found in 'exp_cor' dimension.") + } + } + ## space_dim + if (!is.character(space_dim) | length(space_dim) != 2) { + stop("Parameter 'space_dim' must be a character vector of 2.") + } + if (!is.null(exp)) { + if (any(!space_dim %in% names(dim(exp)))) { + stop("Parameter 'space_dim' is not found in 'exp' or 'obs' dimension.") + } + } + if (!is.null(obs)) { + if (any(!space_dim %in% names(dim(obs)))) { + stop("Parameter 'space_dim' is not found in 'exp' or 'obs' dimension.") + } + } + if (!is.null(exp_cor)) { + if (any(!space_dim %in% names(dim(exp_cor)))) { + stop("Parameter 'space_dim' is not found in 'exp_cor' dimensions.") + } + } + ## ftime_dim + if (!is.character(ftime_dim) | length(ftime_dim) > 1) { + stop("Parameter 'ftime_dim' must be a character string.") + } + if (!is.null(exp)) { + if (!ftime_dim %in% names(dim(exp))) { + stop("Parameter 'ftime_dim' is not found in 'exp' or 'obs' dimension.") + } + } + if (!is.null(obs)) { + if (!ftime_dim %in% names(dim(obs))) { + stop("Parameter 'ftime_dim' is not found in 'exp' or 'obs' dimension.") + } + } + if (!is.null(exp_cor)) { + if (!ftime_dim %in% names(dim(exp_cor))) { + stop("Parameter 'ftime_dim' is not found in 'exp_cor' dimensions.") + } + } + ## exp and obs (2) + #TODO: Add checks for exp_cor + if (!is.null(exp) & !is.null(obs)) { + name_exp <- sort(names(dim(exp))) + name_obs <- sort(names(dim(obs))) + name_exp <- name_exp[-which(name_exp == memb_dim)] + throw_error <- FALSE + if (length(name_exp) != length(name_obs)) { + throw_error <- TRUE + } else if (any(name_exp != name_obs)) { + throw_error <- TRUE + } else if (!all(dim(exp)[name_exp] == dim(obs)[name_obs])) { + throw_error <- TRUE + } + if (throw_error) { + stop("Parameter 'exp' and 'obs' must have the same names and lengths ", + "of all the dimensions except 'memb_dim'.") + } + } + ## ftime_avg + if (!is.null(ftime_avg)) { + if (!is.vector(ftime_avg) | !is.numeric(ftime_avg)) { + stop("Parameter 'ftime_avg' must be an integer vector.") + } + if (!is.null(exp)) { + if (max(ftime_avg) > dim(exp)[ftime_dim] | min(ftime_avg) < 1) { + stop("Parameter 'ftime_avg' must be within the range of ftime_dim length.") + } + } + if (!is.null(obs)) { + if (max(ftime_avg) > dim(obs)[ftime_dim] | min(ftime_avg) < 1) { + stop("Parameter 'ftime_avg' must be within the range of ftime_dim length.") + } + } + if (!is.null(exp_cor)) { + if (max(ftime_avg) > dim(exp_cor)[ftime_dim] | min(ftime_avg) < 1) { + stop("Parameter 'ftime_avg' must be within the range of ftime_dim length.") + } + } + } + ## sdate >= 2 + if (!is.null(exp)) { + if (dim(exp)[time_dim] < 2) { + stop("The length of time_dim must be at least 2.") + } + } else { + if (dim(obs)[time_dim] < 2) { + stop("The length of time_dim must be at least 2.") + } + } + ## lat and lon + if (!is.null(exp)) { + if (!is.numeric(lat) | length(lat) != dim(exp)[space_dim[1]]) { + stop(paste0("Parameter 'lat' must be a numeric vector with the same ", + "length as the latitude dimension of 'exp' and 'obs'.")) + } + if (!is.numeric(lon) | length(lon) != dim(exp)[space_dim[2]]) { + stop(paste0("Parameter 'lon' must be a numeric vector with the same ", + "length as the longitude dimension of 'exp' and 'obs'.")) + } + } + if (!is.null(obs)) { + if (!is.numeric(lat) | length(lat) != dim(obs)[space_dim[1]]) { + stop(paste0("Parameter 'lat' must be a numeric vector with the same ", + "length as the latitude dimension of 'exp' and 'obs'.")) + } + if (!is.numeric(lon) | length(lon) != dim(obs)[space_dim[2]]) { + stop(paste0("Parameter 'lon' must be a numeric vector with the same ", + "length as the longitude dimension of 'exp' and 'obs'.")) + } + } + if (!is.null(exp_cor)) { + if (!is.numeric(lat) | length(lat) != dim(exp_cor)[space_dim[1]]) { + stop(paste0("Parameter 'lat' must be a numeric vector with the same ", + "length as the latitude dimension of 'exp_cor'.")) + } + if (!is.numeric(lon) | length(lon) != dim(exp_cor)[space_dim[2]]) { + stop(paste0("Parameter 'lon' must be a numeric vector with the same ", + "length as the longitude dimension of 'exp_cor'.")) + } + } + stop_needed <- FALSE + if (max(lat) > 80 | min(lat) < 20) { + stop_needed <- TRUE + } + #NOTE: different from s2dverification + # lon is not used in the calculation actually. EOF only uses lat to do the + # weight. So we just need to ensure the data is in this region, regardless + # the order. + if (any(lon < 0)) { #[-180, 180] + if (!(min(lon) > -90 & min(lon) < -70 & max(lon) < 50 & max(lon) > 30)) { + stop_needed <- TRUE + } + } else { #[0, 360] + if (any(lon >= 50 & lon <= 270)) { + stop_needed <- TRUE + } else { + lon_E <- lon[which(lon < 50)] + lon_W <- lon[-which(lon < 50)] + if (max(lon_E) < 30 | min(lon_W) > 290) { + stop_needed <- TRUE + } + } + } + if (stop_needed) { + stop(paste0("The typical domain used to compute the NAO is 20N-80N, ", + "80W-40E. 'lat' or 'lon' is out of range.")) + } + ## obsproj + if (!is.logical(obsproj) | length(obsproj) > 1) { + stop("Parameter 'obsproj' must be either TRUE or FALSE.") + } + if (obsproj) { + if (is.null(obs)) { + stop("Parameter 'obsproj' set to TRUE but no 'obs' provided.") + } + if (is.null(exp) & is.null(exp_cor)) { + .warning("parameter 'obsproj' set to TRUE but no 'exp' nor 'exp_cor' provided.") + } + } + ## ncores + if (!is.null(ncores)) { + if (!is.numeric(ncores) | ncores %% 1 != 0 | ncores == 0 | + length(ncores) > 1) { + stop("Parameter 'ncores' must be a positive integer.") + } + } + + # Average ftime + if (!is.null(ftime_avg)) { + if (!is.null(exp)) { + exp_sub <- ClimProjDiags::Subset(exp, ftime_dim, ftime_avg, drop = FALSE) + exp <- MeanDims(exp_sub, ftime_dim, na.rm = TRUE) + ## Cross-validated PCs. Fabian. This should be extended to + ## nmod and nlt by simple loops. Virginie + } + if (!is.null(obs)) { + obs_sub <- ClimProjDiags::Subset(obs, ftime_dim, ftime_avg, drop = FALSE) + obs <- MeanDims(obs_sub, ftime_dim, na.rm = TRUE) + } + if (!is.null(exp_cor)) { + exp_cor_sub <- ClimProjDiags::Subset(exp_cor, ftime_dim, ftime_avg, drop = FALSE) + exp_cor <- MeanDims(exp_cor_sub, ftime_dim, na.rm = TRUE) + } + } + + # wght + wght <- array(sqrt(cos(lat * pi/180)), dim = c(length(lat), length(lon))) + if (is.null(exp_cor)) { + if (!is.null(exp) & !is.null(obs)) { + res <- Apply(list(exp, obs), + target_dims = list(exp = c(memb_dim, time_dim, space_dim), + obs = c(time_dim, space_dim)), + fun = .NAO, + lat = lat, wght = wght, + obsproj = obsproj, add_member_back = add_member_back, + ncores = ncores) + } else if (!is.null(exp)) { + res <- Apply(list(exp = exp), + target_dims = list(exp = c(memb_dim, time_dim, space_dim)), + fun = .NAO, + lat = lat, wght = wght, obs = NULL, + obsproj = obsproj, add_member_back = FALSE, + ncores = ncores) + } else if (!is.null(obs)) { + if (add_member_back) { + output_dims <- list(obs = c(time_dim, memb_dim)) + } else { + output_dims <- list(obs = time_dim) + } + res <- Apply(list(obs = obs), + target_dims = list(obs = c(time_dim, space_dim)), + output_dims = output_dims, + fun = .NAO, + lat = lat, wght = wght, exp = NULL, + obsproj = obsproj, add_member_back = add_member_back, + ncores = ncores) + } + } else { # exp_cor provided + res <- Apply(list(exp = exp, obs = obs, exp_cor = exp_cor), + target_dims = list(exp = c(memb_dim, time_dim, space_dim), + obs = c(time_dim, space_dim), + exp_cor = c(memb_dim, time_dim, space_dim)), + fun = .NAO, + lat = lat, wght = wght, + obsproj = obsproj, add_member_back = add_member_back, + ncores = ncores) + } + + return(res) +} + +.NAO <- function(exp = NULL, obs = NULL, exp_cor = NULL, lat, wght, obsproj = TRUE, + add_member_back = FALSE) { + # exp: [memb_exp, sdate, lat, lon] + # obs: [sdate, lat, lon] + # exp_cor: [memb, sdate = 1, lat, lon] + # wght: [lat, lon] + + if (!is.null(exp)) { + ntime <- dim(exp)[2] + nlat <- dim(exp)[3] + nlon <- dim(exp)[4] + nmemb_exp <- dim(exp)[1] + } else { + ntime <- dim(obs)[1] + nlat <- dim(obs)[2] + nlon <- dim(obs)[3] + } + if (!is.null(exp_cor)) { + ntime_exp_cor <- dim(exp_cor)[2] # should be 1 + nmemb_exp_cor <- dim(exp_cor)[1] + } + + if (!is.null(obs)) nao_obs <- array(NA, dim = ntime) + if (!is.null(exp)) nao_exp <- array(NA, dim = c(ntime, nmemb_exp)) + if (!is.null(exp_cor)) { + nao_exp_cor <- array(NA, dim = c(ntime_exp_cor, nmemb_exp_cor)) + #NOTE: The dimensions are flipped to fill in data correctly. Need to flip it back later. + } + + if (is.null(exp_cor)) { + + for (tt in 1:ntime) { # cross-validation + + if (!is.null(obs)) { + ## Calculate observation EOF. Excluding one forecast start year. + obs_sub <- obs[c(1:ntime)[-tt], , , drop = FALSE] + EOF_obs <- .EOF(obs_sub, neofs = 1, wght = wght)$EOFs # [mode = 1, lat, lon] + ## Correct polarity of pattern + # EOF_obs: [mode = 1, lat, lon] + if (0 < mean(EOF_obs[1, which.min(abs(lat - 65)), ], na.rm = T)) { + EOF_obs <- EOF_obs * (-1) + } + ## Project observed anomalies. + PF <- .ProjectField(obs, eof_mode = EOF_obs[1, , ], wght = wght) # [sdate] + ## Keep PCs of excluded forecast start year. Fabian. + nao_obs[tt] <- PF[tt] + } + + if (!is.null(exp)) { + if (!obsproj) { + exp_sub <- exp[, c(1:ntime)[-tt], , , drop = FALSE] + # Combine 'memb' and 'sdate' to calculate EOF + dim(exp_sub) <- c(nmemb_exp * (ntime - 1), nlat, nlon) + EOF_exp <- .EOF(exp_sub, neofs = 1, wght = wght)$EOFs # [mode = 1, lat, lon] + + ## Correct polarity of pattern + ##NOTE: different from s2dverification, which doesn't use mean(). +# if (0 < EOF_exp[1, which.min(abs(lat - 65)), ]) { + if (0 < mean(EOF_exp[1, which.min(abs(lat - 65)), ], na.rm = T)) { + EOF_exp <- EOF_exp * (-1) + } + + ### Lines below could be simplified further by computing + ### ProjectField() only on the year of interest... (though this is + ### not vital). Lauriane + for (imemb in 1:nmemb_exp) { + PF <- .ProjectField(exp[imemb, , , ], eof_mode = EOF_exp[1, , ], wght = wght) # [sdate, memb] + nao_exp[tt, imemb] <- PF[tt] + } + } else { + ## Project forecast anomalies on obs EOF + for (imemb in 1:nmemb_exp) { + PF <- .ProjectField(exp[imemb, , , ], eof_mode = EOF_obs[1, , ], wght = wght) # [sdate] + nao_exp[tt, imemb] <- PF[tt] + } + } + } + + } # for loop sdate + + } else { # exp_cor provided + + ## Calculate observation EOF. Without cross-validation + EOF_obs <- .EOF(obs, neofs = 1, wght = wght)$EOFs # [mode = 1, lat, lon] + ## Correct polarity of pattern + # EOF_obs: [mode, lat, lon] + if (0 < mean(EOF_obs[1, which.min(abs(lat - 65)), ], na.rm = T)) { + EOF_obs <- EOF_obs * (-1) + } + ## Project observed anomalies + PF <- .ProjectField(obs, eof_mode = EOF_obs, wght = wght) # [mode = 1, sdate] + nao_obs[] <- PF[1, ] + + if (!obsproj) { + # Calculate EOF_exp + tmp <- array(exp, dim = c(nmemb_exp * ntime, nlat, nlon)) + EOF_exp <- .EOF(tmp, neofs = 1, wght = wght)$EOFs # [mode = 1, lat, lon] + ## Correct polarity of pattern + if (0 < mean(EOF_exp[1, which.min(abs(lat - 65)), ], na.rm = T)) { + EOF_exp <- EOF_exp * (-1) + } + eof_mode_input <- EOF_exp[1, , ] + } else { + eof_mode_input <- EOF_obs[1, , ] + } + + # Calculate NAO_exp + for (imemb in 1:dim(exp)[1]) { + exp_sub <- ClimProjDiags::Subset(exp, along = 1, indices = imemb, + drop = 'selected') + PF <- .ProjectField(exp_sub, eof_mode = eof_mode_input, wght = wght) # [sdate] + nao_exp[ , imemb] <- PF + } + + # Calculate NAO_exp_cor + for (imemb in 1:dim(exp_cor)[1]) { + exp_sub <- ClimProjDiags::Subset(exp_cor, along = 1, indices = imemb, + drop = 'selected') + PF <- .ProjectField(exp_sub, eof_mode = eof_mode_input, wght = wght) # [sdate] + nao_exp_cor[, imemb] <- PF + } + + } + # add_member_back + if (add_member_back) { + memb_dim_name <- ifelse(!is.null(names(dim(exp))[1]), names(dim(exp))[1], 'member') + nao_obs <- InsertDim(nao_obs, 2, 1, name = memb_dim_name) + } + + # Return results + if (is.null(exp_cor)) { + res <- NULL + if (!is.null(exp)) { + res <- c(res, list(exp = nao_exp)) + } + if (!is.null(obs)) { + res <- c(res, list(obs = nao_obs)) + } + return(res) + + } else { + return(list(exp = nao_exp, obs = nao_obs, exp_cor = nao_exp_cor)) + } +} + diff --git a/modules/Indices/R/tmp/ProjectField.R b/modules/Indices/R/tmp/ProjectField.R new file mode 100644 index 00000000..810b2474 --- /dev/null +++ b/modules/Indices/R/tmp/ProjectField.R @@ -0,0 +1,272 @@ +#'Project anomalies onto modes of variability +#' +#'Project anomalies onto modes of variability to get the temporal evolution of +#'the EOF mode selected. It returns principal components (PCs) by area-weighted +#'projection onto EOF pattern (from \code{EOF()}) or REOF pattern (from +#'\code{REOF()} or \code{EuroAtlanticTC()}). The calculation removes NA and +#'returns NA if the whole spatial pattern is NA. +#' +#'@param ano A numerical array of anomalies with named dimensions. The +#' dimensions must have at least 'time_dim' and 'space_dim'. It can be +#' generated by Ano(). +#'@param eof A list that contains at least 'EOFs' or 'REOFs' and 'wght', which +#' are both arrays. 'EOFs' or 'REOFs' must have dimensions 'mode' and +#' 'space_dim' at least. 'wght' has dimensions space_dim. It can be generated +#' by EOF() or REOF(). +#'@param time_dim A character string indicating the name of the time dimension +#' of 'ano'. The default value is 'sdate'. +#'@param space_dim A vector of two character strings. The first is the dimension +#' name of latitude of 'ano' and the second is the dimension name of longitude +#' of 'ano'. The default value is c('lat', 'lon'). +#'@param mode An integer of the variability mode number in the EOF to be +#' projected on. The default value is NULL, which means all the modes of 'eof' +#' is calculated. +#'@param ncores An integer indicating the number of cores to use for parallel +#' computation. The default value is NULL. +#' +#'@return A numerical array of the principal components in the verification +#' format. The dimensions are the same as 'ano' except 'space_dim'. +#' +#'@seealso EOF, NAO, PlotBoxWhisker +#'@examples +#'\dontshow{ +#'startDates <- c('19851101', '19901101', '19951101', '20001101', '20051101') +#'sampleData <- s2dv:::.LoadSampleData('tos', c('experiment'), +#' c('observation'), startDates, +#' leadtimemin = 1, +#' leadtimemax = 4, +#' output = 'lonlat', +#' latmin = 27, latmax = 48, +#' lonmin = -12, lonmax = 40) +#'} +#'ano <- Ano_CrossValid(sampleData$mod, sampleData$obs) +#'eof_exp <- EOF(ano$exp, sampleData$lat, sampleData$lon) +#'eof_obs <- EOF(ano$obs, sampleData$lat, sampleData$lon) +#'mode1_exp <- ProjectField(ano$exp, eof_exp, mode = 1) +#'mode1_obs <- ProjectField(ano$obs, eof_obs, mode = 1) +#' +#'\dontrun{ +#' # Plot the forecast and the observation of the first mode for the last year +#' # of forecast +#' sdate_dim_length <- dim(mode1_obs)['sdate'] +#' plot(mode1_obs[sdate_dim_length, 1, 1, ], type = "l", ylim = c(-1, 1), +#' lwd = 2) +#' for (i in 1:dim(mode1_exp)['member']) { +#' par(new = TRUE) +#' plot(mode1_exp[sdate_dim_length, 1, i, ], type = "l", col = rainbow(10)[i], +#' ylim = c(-15000, 15000)) +#' } +#'} +#' +#'@import multiApply +#'@export +ProjectField <- function(ano, eof, time_dim = 'sdate', space_dim = c('lat', 'lon'), + mode = NULL, ncores = NULL) { + + # Check inputs + ## ano (1) + if (is.null(ano)) { + stop("Parameter 'ano' cannot be NULL.") + } + if (!is.numeric(ano)) { + stop("Parameter 'ano' must be a numeric array.") + } + if(any(is.null(names(dim(ano))))| any(nchar(names(dim(ano))) == 0)) { + stop("Parameter 'ano' must have dimension names.") + } + ## eof (1) + if (is.null(eof)) { + stop("Parameter 'eof' cannot be NULL.") + } + if (!is.list(eof)) { + stop("Parameter 'eof' must be a list generated by EOF() or REOF().") + } + if ('EOFs' %in% names(eof)) { + EOFs <- "EOFs" + } else if ('REOFs' %in% names(eof)) { + EOFs <- "REOFs" + } else if ('patterns' %in% names(eof)) { + EOFs <- "patterns" + } else { + stop(paste0("Parameter 'eof' must be a list that contains 'EOFs', 'REOFs', ", + "or 'patterns'. It can be generated by EOF(), REOF(), or EuroAtlanticTC().")) + } + if (!'wght' %in% names(eof)) { + stop(paste0("Parameter 'eof' must be a list that contains 'wght'. ", + "It can be generated by EOF() or REOF().")) + } + if (!is.numeric(eof[[EOFs]]) || !is.array(eof[[EOFs]])) { + stop("The component 'EOFs' or 'REOFs' of parameter 'eof' must be a numeric array.") + } + if (!is.numeric(eof$wght) || !is.array(eof$wght)) { + stop("The component 'wght' of parameter 'eof' must be a numeric array.") + } + ## time_dim + if (!is.character(time_dim) | length(time_dim) > 1) { + stop("Parameter 'time_dim' must be a character string.") + } + if (!time_dim %in% names(dim(ano))) { + stop("Parameter 'time_dim' is not found in 'ano' dimension.") + } + ## space_dim + if (!is.character(space_dim) | length(space_dim) != 2) { + stop("Parameter 'space_dim' must be a character vector of 2.") + } + if (any(!space_dim %in% names(dim(ano)))) { + stop("Parameter 'space_dim' is not found in 'ano' dimension.") + } + ## ano (2) + if (!all(space_dim %in% names(dim(ano))) | !time_dim %in% names(dim(ano))) { + stop(paste0("Parameter 'ano' must be an array with dimensions named as ", + "parameter 'space_dim' and 'time_dim'.")) + } + ## eof (2) + if (!all(space_dim %in% names(dim(eof[[EOFs]]))) | + !'mode' %in% names(dim(eof[[EOFs]]))) { + stop(paste0("The component 'EOFs' or 'REOFs' of parameter 'eof' must be an array ", + "with dimensions named as parameter 'space_dim' and 'mode'.")) + } + if (length(dim(eof$wght)) != 2 | !all(names(dim(eof$wght)) %in% space_dim)) { + stop(paste0("The component 'wght' of parameter 'eof' must be an array ", + "with dimensions named as parameter 'space_dim'.")) + } + ## mode + if (!is.null(mode)) { + if (!is.numeric(mode) | mode %% 1 != 0 | mode < 0 | length(mode) > 1) { + stop("Parameter 'mode' must be NULL or a positive integer.") + } + if (mode > dim(eof[[EOFs]])['mode']) { + stop(paste0("Parameter 'mode' is greater than the number of available ", + "modes in 'eof'.")) + } + } + ## ncores + if (!is.null(ncores)) { + if (!is.numeric(ncores) | ncores %% 1 != 0 | ncores <= 0 | + length(ncores) > 1) { + stop("Parameter 'ncores' must be a positive integer.") + } + } + +#------------------------------------------------------- + + # Keep the chosen mode + if (!is.null(mode)) { + eof_mode <- ClimProjDiags::Subset(eof[[EOFs]], 'mode', mode, drop = 'selected') + } else { + eof_mode <- eof[[EOFs]] + } + + if ('mode' %in% names(dim(eof_mode))) { + dimnames_without_mode <- names(dim(eof_mode))[-which(names(dim(eof_mode)) == 'mode')] + } else { + dimnames_without_mode <- names(dim(eof_mode)) + } + + if (all(dimnames_without_mode %in% space_dim)) { # eof_mode: [lat, lon] or [mode, lat, lon] + if ('mode' %in% names(dim(eof_mode))) { + eof_mode_target <- c('mode', space_dim) + output_dims <- c('mode', time_dim) + } else { + eof_mode_target <- space_dim + output_dims <- time_dim + } + res <- Apply(list(ano, eof_mode), + target_dims = list(c(time_dim, space_dim), + eof_mode_target), + output_dims = output_dims, + wght = eof$wght, + fun = .ProjectField, + ncores = ncores)$output1 + + } else { + + if (!all(dimnames_without_mode %in% names(dim(ano)))) { + stop(paste0("The array 'EOF' in parameter 'eof' has dimension not in parameter ", + "'ano'. Check if 'ano' and 'eof' are compatible.")) + } + + common_dim_ano <- dim(ano)[which(names(dim(ano)) %in% dimnames_without_mode)] + if (any(common_dim_ano[match(dimnames_without_mode, names(common_dim_ano))] != + dim(eof_mode)[dimnames_without_mode])) { + stop(paste0("Found paramter 'ano' and 'EOF' in parameter 'eof' have common dimensions ", + "with different length. Check if 'ano' and 'eof' are compatible.")) + } + + # Enlarge eof/ano is needed. The margin_dims of Apply() must be consistent + # between ano and eof. + additional_dims <- dim(ano)[-which(names(dim(ano)) %in% names(dim(eof_mode)))] + additional_dims <- additional_dims[-which(names(additional_dims) == time_dim)] + if (length(additional_dims) != 0) { + for (i in 1:length(additional_dims)) { + eof_mode <- InsertDim(eof_mode, posdim = (length(dim(eof_mode)) + 1), + lendim = additional_dims[i], name = names(additional_dims)[i]) + } + } + if ('mode' %in% names(dim(eof_mode))) { + eof_mode_target <- c('mode', space_dim) + output_dims <- c('mode', time_dim) + } else { + eof_mode_target <- space_dim + output_dims <- time_dim + } + res <- Apply(list(ano, eof_mode), + target_dims = list(c(time_dim, space_dim), + eof_mode_target), + output_dims = output_dims, + wght = eof$wght, + fun = .ProjectField, + ncores = ncores)$output1 + } + + return(res) +} + + +.ProjectField <- function(ano, eof_mode, wght) { + # ano: [sdate, lat, lon] + # eof_mode: [lat, lon] or [mode, lat, lon] + # wght: [lat, lon] + + ntime <- dim(ano)[1] + if (length(dim(eof_mode)) == 2) { # mode != NULL + # Initialization of pc.ver. + pc.ver <- array(NA, dim = ntime) #[sdate] + + # Weight + e.1 <- eof_mode * wght + ano <- ano * InsertDim(wght, 1, ntime) + #ano <- aaply(ano, 1, '*', wght) # much heavier + + na <- rowMeans(ano, na.rm = TRUE) # if [lat, lon] all NA, it's NA + #na <- apply(ano, 1, mean, na.rm = TRUE) # much heavier + tmp <- ano * InsertDim(e.1, 1, ntime) # [sdate, lat, lon] + rm(ano) + #pc.ver <- apply(tmp, 1, sum, na.rm = TRUE) # much heavier + pc.ver <- rowSums(tmp, na.rm = TRUE) + pc.ver[which(is.na(na))] <- NA + + } else { # mode = NULL + # Weight + e.1 <- eof_mode * InsertDim(wght, 1, dim(eof_mode)[1]) + dim(e.1) <- c(dim(eof_mode)[1], prod(dim(eof_mode)[2:3])) # [mode, lat*lon] + ano <- ano * InsertDim(wght, 1, ntime) + dim(ano) <- c(ntime, prod(dim(ano)[2:3])) # [sdate, lat*lon] + + na <- rowMeans(ano, na.rm = TRUE) # if [lat, lon] all NA, it's NA + na <- aperm(array(na, dim = c(ntime, dim(e.1)[1])), c(2, 1)) + + # Matrix multiplication e.1 [mode, lat*lon] by ano [lat*lon, sdate] + # Result: [mode, sdate] + pc.ver <- e.1 %*% t(ano) + pc.ver[which(is.na(na))] <- NA + +# # Change back dimensions to feet original input +# dim(projection) <- c(moredims, mode = unname(neofs)) +# return(projection) + } + + return(pc.ver) +} + + diff --git a/modules/Indices/R/tmp/Utils.R b/modules/Indices/R/tmp/Utils.R new file mode 100644 index 00000000..05878259 --- /dev/null +++ b/modules/Indices/R/tmp/Utils.R @@ -0,0 +1,1779 @@ +#'@importFrom abind abind +#'@import plyr ncdf4 +#'@importFrom grDevices png jpeg pdf svg bmp tiff +#'@importFrom easyVerification convert2prob + +## Function to tell if a regexpr() match is a complete match to a specified name +.IsFullMatch <- function(x, name) { + ifelse(x > 0 && attributes(x)$match.length == nchar(name), TRUE, FALSE) +} + +.ConfigReplaceVariablesInString <- function(string, replace_values, allow_undefined_key_vars = FALSE) { + # This function replaces all the occurrences of a variable in a string by + # their corresponding string stored in the replace_values. + if (length(strsplit(string, "\\$")[[1]]) > 1) { + parts <- strsplit(string, "\\$")[[1]] + output <- "" + i <- 0 + for (part in parts) { + if (i %% 2 == 0) { + output <- paste(output, part, sep = "") + } else { + if (part %in% names(replace_values)) { + output <- paste(output, .ConfigReplaceVariablesInString(replace_values[[part]], replace_values, allow_undefined_key_vars), sep = "") + } else if (allow_undefined_key_vars) { + output <- paste0(output, "$", part, "$") + } else { + stop(paste('Error: The variable $', part, '$ was not defined in the configuration file.', sep = '')) + } + } + i <- i + 1 + } + output + } else { + string + } +} + +.KnownLonNames <- function() { + known_lon_names <- c('lon', 'longitude', 'x', 'i', 'nav_lon') +} + +.KnownLatNames <- function() { + known_lat_names <- c('lat', 'latitude', 'y', 'j', 'nav_lat') +} + +.t2nlatlon <- function(t) { + ## As seen in cdo's griddes.c: ntr2nlat() + nlats <- (t * 3 + 1) / 2 + if ((nlats > 0) && (nlats - trunc(nlats) >= 0.5)) { + nlats <- ceiling(nlats) + } else { + nlats <- round(nlats) + } + if (nlats %% 2 > 0) { + nlats <- nlats + 1 + } + ## As seen in cdo's griddes.c: compNlon(), and as specified in ECMWF + nlons <- 2 * nlats + keep_going <- TRUE + while (keep_going) { + n <- nlons + if (n %% 8 == 0) n <- trunc(n / 8) + while (n %% 6 == 0) n <- trunc(n / 6) + while (n %% 5 == 0) n <- trunc(n / 5) + while (n %% 4 == 0) n <- trunc(n / 4) + while (n %% 3 == 0) n <- trunc(n / 3) + if (n %% 2 == 0) n <- trunc(n / 2) + if (n <= 8) { + keep_going <- FALSE + } else { + nlons <- nlons + 2 + if (nlons > 9999) { + stop("Error: pick another gaussian grid truncation. It doesn't fulfill the standards to apply FFT.") + } + } + } + c(nlats, nlons) +} + +.nlat2t <- function(nlats) { + trunc((nlats * 2 - 1) / 3) +} + +.LoadDataFile <- function(work_piece, explore_dims = FALSE, silent = FALSE) { + # The purpose, working modes, inputs and outputs of this function are + # explained in ?LoadDataFile + #suppressPackageStartupMessages({library(ncdf4)}) + #suppressPackageStartupMessages({library(bigmemory)}) + #suppressPackageStartupMessages({library(plyr)}) + # Auxiliar function to convert array indices to lineal indices + arrayIndex2VectorIndex <- function(indices, dims) { + if (length(indices) > length(dims)) { + stop("Error: indices do not match dimensions in arrayIndex2VectorIndex.") + } + position <- 1 + dims <- rev(dims) + indices <- rev(indices) + for (i in 1:length(indices)) { + position <- position + (indices[i] - 1) * prod(dims[-c(1:i)]) + } + position + } + + found_file <- NULL + dims <- NULL + grid_name <- units <- var_long_name <- NULL + is_2d_var <- array_across_gw <- NULL + data_across_gw <- NULL + + filename <- work_piece[['filename']] + namevar <- work_piece[['namevar']] + output <- work_piece[['output']] + # The names of all data files in the directory of the repository that match + # the pattern are obtained. + if (length(grep("^http", filename)) > 0) { + is_url <- TRUE + files <- filename + ## TODO: Check that the user is not using shell globbing exps. + } else { + is_url <- FALSE + files <- Sys.glob(filename) + } + + # If we don't find any, we leave the flag 'found_file' with a NULL value. + if (length(files) > 0) { + # The first file that matches the pattern is chosen and read. + filename <- head(files, 1) + filein <- filename + found_file <- filename + mask <- work_piece[['mask']] + + if (!silent) { + if (explore_dims) { + .message(paste("Exploring dimensions...", filename)) + } + ##} else { + ## cat(paste("* Reading & processing data...", filename, '\n')) + ##} + } + + # We will fill in 'expected_dims' with the names of the expected dimensions of + # the data array we'll retrieve from the file. + expected_dims <- NULL + remap_needed <- FALSE + # But first we open the file and work out whether the requested variable is 2d + fnc <- nc_open(filein) + if (!(namevar %in% names(fnc$var))) { + stop(paste("Error: The variable", namevar, "is not defined in the file", filename)) + } + var_long_name <- fnc$var[[namevar]]$longname + units <- fnc$var[[namevar]]$units + file_dimnames <- unlist(lapply(fnc$var[[namevar]][['dim']], '[[', 'name')) + # The following two 'ifs' are to allow for 'lon'/'lat' by default, instead of + # 'longitude'/'latitude'. + if (!(work_piece[['dimnames']][['lon']] %in% file_dimnames) && + (work_piece[['dimnames']][['lon']] == 'longitude') && + ('lon' %in% file_dimnames)) { + work_piece[['dimnames']][['lon']] <- 'lon' + } + if (!(work_piece[['dimnames']][['lat']] %in% file_dimnames) && + (work_piece[['dimnames']][['lat']] == 'latitude') && + ('lat' %in% file_dimnames)) { + work_piece[['dimnames']][['lat']] <- 'lat' + } + if (is.null(work_piece[['is_2d_var']])) { + is_2d_var <- all(c(work_piece[['dimnames']][['lon']], + work_piece[['dimnames']][['lat']]) %in% + unlist(lapply(fnc$var[[namevar]][['dim']], + '[[', 'name'))) + } else { + is_2d_var <- work_piece[['is_2d_var']] + } + if ((is_2d_var || work_piece[['is_file_per_dataset']])) { + if (Sys.which("cdo")[[1]] == "") { + stop("Error: CDO libraries not available") + } + + cdo_version <- strsplit(suppressWarnings(system2("cdo", args = '-V', stderr = TRUE))[[1]], ' ')[[1]][5] + + cdo_version <- as.numeric_version(unlist(strsplit(cdo_version, "[A-Za-z]", fixed = FALSE))[[1]]) + + } + # If the variable to load is 2-d, we need to determine whether: + # - interpolation is needed + # - subsetting is requested + if (is_2d_var) { + ## We read the longitudes and latitudes from the file. + lon <- ncvar_get(fnc, work_piece[['dimnames']][['lon']]) + lat <- ncvar_get(fnc, work_piece[['dimnames']][['lat']]) + first_lon_in_original_file <- lon[1] + # If a common grid is requested or we are exploring the file dimensions + # we need to read the grid type and size of the file to finally work out the + # CDO grid name. + if (!is.null(work_piece[['grid']]) || explore_dims) { + # Here we read the grid type and its number of longitudes and latitudes + file_info <- system(paste('cdo -s griddes', filein, '2> /dev/null'), intern = TRUE) + grids_positions <- grep('# gridID', file_info) + if (length(grids_positions) < 1) { + stop("The grid should be defined in the files.") + } + grids_first_lines <- grids_positions + 2 + grids_last_lines <- c((grids_positions - 2)[-1], length(file_info)) + grids_info <- as.list(1:length(grids_positions)) + grids_info <- lapply(grids_info, function (x) file_info[grids_first_lines[x]:grids_last_lines[x]]) + grids_info <- lapply(grids_info, function (x) gsub(" *", " ", x)) + grids_info <- lapply(grids_info, function (x) gsub("^ | $", "", x)) + grids_info <- lapply(grids_info, function (x) unlist(strsplit(x, " | = "))) + grids_types <- unlist(lapply(grids_info, function (x) x[grep('gridtype', x) + 1])) + grids_matches <- unlist(lapply(grids_info, function (x) { + nlons <- if (length(grep('xsize', x)) > 0) { + as.numeric(x[grep('xsize', x) + 1]) + } else { + NA + } + nlats <- if (length(grep('ysize', x)) > 0) { + as.numeric(x[grep('ysize', x) + 1]) + } else { + NA + } + result <- FALSE + if (!anyNA(c(nlons, nlats))) { + if ((nlons == length(lon)) && + (nlats == length(lat))) { + result <- TRUE + } + } + result + })) + grids_matches <- grids_matches[which(grids_types %in% c('gaussian', 'lonlat'))] + grids_info <- grids_info[which(grids_types %in% c('gaussian', 'lonlat'))] + grids_types <- grids_types[which(grids_types %in% c('gaussian', 'lonlat'))] + if (length(grids_matches) == 0) { + stop("Error: Only 'gaussian' and 'lonlat' grids supported. See e.g: cdo sinfo ", filename) + } + if (sum(grids_matches) > 1) { + if ((all(grids_types[which(grids_matches)] == 'gaussian') || + all(grids_types[which(grids_matches)] == 'lonlat')) && + all(unlist(lapply(grids_info[which(grids_matches)], identical, + grids_info[which(grids_matches)][[1]])))) { + grid_type <- grids_types[which(grids_matches)][1] + } else { + stop("Error: Load() can't disambiguate: More than one lonlat/gaussian grids with the same size as the requested variable defined in ", filename) + } + } else if (sum(grids_matches) == 1) { + grid_type <- grids_types[which(grids_matches)] + } else { + stop("Unexpected error.") + } + grid_lons <- length(lon) + grid_lats <- length(lat) + # Convert to CDO grid name as seen in cdo's griddes.c: nlat2ntr() + if (grid_type == 'lonlat') { + grid_name <- paste0('r', grid_lons, 'x', grid_lats) + } else { + grid_name <- paste0('t', .nlat2t(grid_lats), 'grid') + } + if (is.null(work_piece[['grid']])) { + .warning(paste0("Detect the grid type to be '", grid_name, "'. ", + "If it is not expected, assign parameter 'grid' to avoid wrong result.")) + } + } + # If a common grid is requested, we will also calculate its size which we will use + # later on. + if (!is.null(work_piece[['grid']])) { + # Now we calculate the common grid type and its lons and lats + if (length(grep('^t\\d{1,+}grid$', work_piece[['grid']])) > 0) { + common_grid_type <- 'gaussian' + common_grid_res <- as.numeric(strsplit(work_piece[['grid']], '[^0-9]{1,+}')[[1]][2]) + nlonlat <- .t2nlatlon(common_grid_res) + common_grid_lats <- nlonlat[1] + common_grid_lons <- nlonlat[2] + } else if (length(grep('^r\\d{1,+}x\\d{1,+}$', work_piece[['grid']])) > 0) { + common_grid_type <- 'lonlat' + common_grid_lons <- as.numeric(strsplit(work_piece[['grid']], '[^0-9]{1,+}')[[1]][2]) + common_grid_lats <- as.numeric(strsplit(work_piece[['grid']], '[^0-9]{1,+}')[[1]][3]) + } else { + stop("Error: Only supported grid types in parameter 'grid' are tgrid and rx") + } + } else { + ## If no 'grid' is specified, there is no common grid. + ## But these variables are filled in for consistency in the code. + common_grid_lons <- length(lon) + common_grid_lats <- length(lat) + } + first_common_grid_lon <- 0 + last_common_grid_lon <- 360 - 360/common_grid_lons + ## This is not true for gaussian grids or for some regular grids, but + ## is a safe estimation + first_common_grid_lat <- -90 + last_common_grid_lat <- 90 + # And finally determine whether interpolation is needed or not + remove_shift <- FALSE + if (!is.null(work_piece[['grid']])) { + if ((grid_lons != common_grid_lons) || + (grid_lats != common_grid_lats) || + (grid_type != common_grid_type) || + (lon[1] != first_common_grid_lon)) { + if (grid_lons == common_grid_lons && grid_lats == common_grid_lats && + grid_type == common_grid_type && lon[1] != first_common_grid_lon) { + remove_shift <- TRUE + } + remap_needed <- TRUE + common_grid_name <- work_piece[['grid']] + } + } else if ((lon[1] != first_common_grid_lon) && explore_dims && + !work_piece[['single_dataset']]) { + remap_needed <- TRUE + common_grid_name <- grid_name + remove_shift <- TRUE + } + if (remap_needed && (work_piece[['remap']] == 'con') && + (cdo_version >= as.numeric_version('1.7.0'))) { + work_piece[['remap']] <- 'ycon' + } + if (remove_shift && !explore_dims) { + if (!is.null(work_piece[['progress_amount']])) { + cat("\n") + } + .warning(paste0("The dataset with index ", + tail(work_piece[['indices']], 1), " in '", + work_piece[['dataset_type']], "' doesn't start at longitude 0 and will be re-interpolated in order to align its longitudes with the standard CDO grids definable with the names 'tgrid' or 'rx', which are by definition starting at the longitude 0.\n")) + if (!is.null(mask)) { + .warning(paste0("A mask was provided for the dataset with index ", + tail(work_piece[['indices']], 1), " in '", + work_piece[['dataset_type']], "'. This dataset has been re-interpolated to align its longitudes to start at 0. You must re-interpolate the corresponding mask to align its longitudes to start at 0 as well, if you haven't done so yet. Running cdo remapcon,", common_grid_name, " original_mask_file.nc new_mask_file.nc will fix it.\n")) + } + } + if (remap_needed && (grid_lons < common_grid_lons || grid_lats < common_grid_lats)) { + if (!is.null(work_piece[['progress_amount']])) { + cat("\n") + } + if (!explore_dims) { + .warning(paste0("The dataset with index ", tail(work_piece[['indices']], 1), + " in '", work_piece[['dataset_type']], "' is originally on ", + "a grid coarser than the common grid and it has been ", + "extrapolated. Check the results carefully. It is ", + "recommended to specify as common grid the coarsest grid ", + "among all requested datasets via the parameter 'grid'.\n")) + } + } + # Now calculate if the user requests for a lonlat subset or for the + # entire field + lonmin <- work_piece[['lon_limits']][1] + lonmax <- work_piece[['lon_limits']][2] + latmin <- work_piece[['lat_limits']][1] + latmax <- work_piece[['lat_limits']][2] + lon_subsetting_requested <- FALSE + lonlat_subsetting_requested <- FALSE + if (lonmin <= lonmax) { + if ((lonmin > first_common_grid_lon) || (lonmax < last_common_grid_lon)) { + lon_subsetting_requested <- TRUE + } + } else { + if ((lonmin - lonmax) > 360/common_grid_lons) { + lon_subsetting_requested <- TRUE + } else { + gap_width <- floor(lonmin / (360/common_grid_lons)) - + floor(lonmax / (360/common_grid_lons)) + if (gap_width > 0) { + if (!(gap_width == 1 && (lonmin %% (360/common_grid_lons) == 0) && + (lonmax %% (360/common_grid_lons) == 0))) { + lon_subsetting_requested <- TRUE + } + } + } + } + if ((latmin > first_common_grid_lat) || (latmax < last_common_grid_lat) + || (lon_subsetting_requested)) { + lonlat_subsetting_requested <- TRUE + } + # Now that we know if subsetting was requested, we can say if final data + # will go across greenwich + if (lonmax < lonmin) { + data_across_gw <- TRUE + } else { + data_across_gw <- !lon_subsetting_requested + } + + # When remap is needed but no subsetting, the file is copied locally + # so that cdo works faster, and then interpolated. + # Otherwise the file is kept as is and the subset will have to be + # interpolated still. + if (!lonlat_subsetting_requested && remap_needed) { + nc_close(fnc) + filecopy <- tempfile(pattern = "load", fileext = ".nc") + file.copy(filein, filecopy) + filein <- tempfile(pattern = "loadRegridded", fileext = ".nc") + # "-L" is to serialize I/O accesses. It prevents potential segmentation fault in the + # underlying hdf5 library. + system(paste0("cdo -L -s remap", work_piece[['remap']], ",", + common_grid_name, + " -selname,", namevar, " ", filecopy, " ", filein, + " 2>/dev/null", sep = "")) + file.remove(filecopy) + work_piece[['dimnames']][['lon']] <- 'lon' + work_piece[['dimnames']][['lat']] <- 'lat' + fnc <- nc_open(filein) + lon <- ncvar_get(fnc, work_piece[['dimnames']][['lon']]) + lat <- ncvar_get(fnc, work_piece[['dimnames']][['lat']]) + } + + # Read and check also the mask + if (!is.null(mask)) { + ###mask_file <- tempfile(pattern = 'loadMask', fileext = '.nc') + if (is.list(mask)) { + if (!file.exists(mask[['path']])) { + stop(paste("Error: Couldn't find the mask file", mask[['path']])) + } + mask_file <- mask[['path']] + ###file.copy(work_piece[['mask']][['path']], mask_file) + fnc_mask <- nc_open(mask_file) + vars_in_mask <- sapply(fnc_mask$var, '[[', 'name') + if ('nc_var_name' %in% names(mask)) { + if (!(mask[['nc_var_name']] %in% + vars_in_mask)) { + stop(paste("Error: couldn't find variable", mask[['nc_var_name']], + "in the mask file", mask[['path']])) + } + } else { + if (length(vars_in_mask) != 1) { + stop(paste("Error: one and only one non-coordinate variable should be defined in the mask file", + mask[['path']], "if the component 'nc_var_name' is not specified. Currently found: ", + paste(vars_in_mask, collapse = ', '), ".")) + } else { + mask[['nc_var_name']] <- vars_in_mask + } + } + if (sum(fnc_mask$var[[mask[['nc_var_name']]]]$size > 1) != 2) { + stop(paste0("Error: the variable '", + mask[['nc_var_name']], + "' must be defined only over the dimensions '", + work_piece[['dimnames']][['lon']], "' and '", + work_piece[['dimnames']][['lat']], + "' in the mask file ", + mask[['path']])) + } + mask <- ncvar_get(fnc_mask, mask[['nc_var_name']], collapse_degen = TRUE) + nc_close(fnc_mask) + ### mask_lon <- ncvar_get(fnc_mask, work_piece[['dimnames']][['lon']]) + ### mask_lat <- ncvar_get(fnc_mask, work_piece[['dimnames']][['lat']]) + ###} else { + ### dim_longitudes <- ncdim_def(work_piece[['dimnames']][['lon']], "degrees_east", lon) + ### dim_latitudes <- ncdim_def(work_piece[['dimnames']][['lat']], "degrees_north", lat) + ### ncdf_var <- ncvar_def('LSM', "", list(dim_longitudes, dim_latitudes), NA, 'double') + ### fnc_mask <- nc_create(mask_file, list(ncdf_var)) + ### ncvar_put(fnc_mask, ncdf_var, work_piece[['mask']]) + ### nc_close(fnc_mask) + ### fnc_mask <- nc_open(mask_file) + ### work_piece[['mask']] <- list(path = mask_file, nc_var_name = 'LSM') + ### mask_lon <- lon + ### mask_lat <- lat + ###} + ###} + ### Now ready to check that the mask is right + ##if (!(lonlat_subsetting_requested && remap_needed)) { + ### if ((dim(mask)[2] != length(lon)) || (dim(mask)[1] != length(lat))) { + ### stop(paste("Error: the mask of the dataset with index ", tail(work_piece[['indices']], 1), " in '", work_piece[['dataset_type']], "' is wrong. It must be on the common grid if the selected output type is 'lonlat', 'lon' or 'lat', or 'areave' and 'grid' has been specified. It must be on the grid of the corresponding dataset if the selected output type is 'areave' and no 'grid' has been specified. For more information check ?Load and see help on parameters 'grid', 'maskmod' and 'maskobs'.", sep = "")) + ### } + ###if (!(identical(mask_lon, lon) && identical(mask_lat, lat))) { + ### stop(paste0("Error: the longitudes and latitudes in the masks must be identical to the ones in the corresponding data files if output = 'areave' or, if the selected output is 'lon', 'lat' or 'lonlat', the longitudes in the mask file must start by 0 and the latitudes must be ordered from highest to lowest. See\n ", + ### work_piece[['mask']][['path']], " and ", filein)) + ###} + } + } + + lon_indices <- 1:length(lon) + if (!(lonlat_subsetting_requested && remap_needed)) { + lon[which(lon < 0)] <- lon[which(lon < 0)] + 360 + } + if (lonmax >= lonmin) { + lon_indices <- lon_indices[which(((lon %% 360) >= lonmin) & ((lon %% 360) <= lonmax))] + } else if (!remap_needed) { + lon_indices <- lon_indices[which(((lon %% 360) <= lonmax) | ((lon %% 360) >= lonmin))] + } + lat_indices <- which(lat >= latmin & lat <= latmax) + ## In most of the cases the latitudes are ordered from -90 to 90. + ## We will reorder them to be in the order from 90 to -90, so mostly + ## always the latitudes are reordered. + ## TODO: This could be avoided in future. + if (lat[1] < lat[length(lat)]) { + lat_indices <- lat_indices[length(lat_indices):1] + } + if (!is.null(mask) && !(lonlat_subsetting_requested && remap_needed)) { + if ((dim(mask)[1] != length(lon)) || (dim(mask)[2] != length(lat))) { + stop(paste("Error: the mask of the dataset with index ", tail(work_piece[['indices']], 1), " in '", work_piece[['dataset_type']], "' is wrong. It must be on the common grid if the selected output type is 'lonlat', 'lon' or 'lat', or 'areave' and 'grid' has been specified. It must be on the grid of the corresponding dataset if the selected output type is 'areave' and no 'grid' has been specified. For more information check ?Load and see help on parameters 'grid', 'maskmod' and 'maskobs'.", sep = "")) + } + mask <- mask[lon_indices, lat_indices] + } + ## If the user requests subsetting, we must extend the lon and lat limits if possible + ## so that the interpolation after is done properly + maximum_extra_points <- work_piece[['remapcells']] + if (lonlat_subsetting_requested && remap_needed) { + if ((maximum_extra_points > (head(lon_indices, 1) - 1)) || + (maximum_extra_points > (length(lon) - tail(lon_indices, 1)))) { + ## if the requested number of points goes beyond the left or right + ## sides of the map, we need to take the entire map so that the + ## interpolation works properly + lon_indices <- 1:length(lon) + } else { + extra_points <- min(maximum_extra_points, head(lon_indices, 1) - 1) + if (extra_points > 0) { + lon_indices <- c((head(lon_indices, 1) - extra_points):(head(lon_indices, 1) - 1), lon_indices) + } + extra_points <- min(maximum_extra_points, length(lon) - tail(lon_indices, 1)) + if (extra_points > 0) { + lon_indices <- c(lon_indices, (tail(lon_indices, 1) + 1):(tail(lon_indices, 1) + extra_points)) + } + } + min_lat_ind <- min(lat_indices) + max_lat_ind <- max(lat_indices) + extra_points <- min(maximum_extra_points, min_lat_ind - 1) + if (extra_points > 0) { + if (lat[1] < tail(lat, 1)) { + lat_indices <- c(lat_indices, (min_lat_ind - 1):(min_lat_ind - extra_points)) + } else { + lat_indices <- c((min_lat_ind - extra_points):(min_lat_ind - 1), lat_indices) + } + } + extra_points <- min(maximum_extra_points, length(lat) - max_lat_ind) + if (extra_points > 0) { + if (lat[1] < tail(lat, 1)) { + lat_indices <- c((max_lat_ind + extra_points):(max_lat_ind + 1), lat_indices) + } else { + lat_indices <- c(lat_indices, (max_lat_ind + 1):(max_lat_ind + extra_points)) + } + } + } + lon <- lon[lon_indices] + lat <- lat[lat_indices] + expected_dims <- c(work_piece[['dimnames']][['lon']], + work_piece[['dimnames']][['lat']]) + } else { + lon <- 0 + lat <- 0 + } + # We keep on filling the expected dimensions + var_dimnames <- unlist(lapply(fnc$var[[namevar]][['dim']], '[[', 'name')) + nmemb <- nltime <- NULL + ## Sometimes CDO renames 'members' dimension to 'lev' + old_members_dimname <- NULL + if (('lev' %in% var_dimnames) && !(work_piece[['dimnames']][['member']] %in% var_dimnames)) { + old_members_dimname <- work_piece[['dimnames']][['member']] + work_piece[['dimnames']][['member']] <- 'lev' + } + if (work_piece[['dimnames']][['member']] %in% var_dimnames) { + nmemb <- fnc$var[[namevar]][['dim']][[match(work_piece[['dimnames']][['member']], var_dimnames)]]$len + expected_dims <- c(expected_dims, work_piece[['dimnames']][['member']]) + } else { + nmemb <- 1 + } + if (length(expected_dims) > 0) { + dim_matches <- match(expected_dims, var_dimnames) + if (anyNA(dim_matches)) { + if (!is.null(old_members_dimname)) { + expected_dims[which(expected_dims == 'lev')] <- old_members_dimname + } + stop(paste("Error: the expected dimension(s)", + paste(expected_dims[which(is.na(dim_matches))], collapse = ', '), + "were not found in", filename)) + } + time_dimname <- var_dimnames[-dim_matches] + } else { + time_dimname <- var_dimnames + } + if (length(time_dimname) > 0) { + if (length(time_dimname) == 1) { + nltime <- fnc$var[[namevar]][['dim']][[match(time_dimname, var_dimnames)]]$len + expected_dims <- c(expected_dims, time_dimname) + dim_matches <- match(expected_dims, var_dimnames) + } else { + if (!is.null(old_members_dimname)) { + expected_dims[which(expected_dims == 'lev')] <- old_members_dimname + } + stop(paste("Error: the variable", namevar, + "is defined over more dimensions than the expected (", + paste(c(expected_dims, 'time'), collapse = ', '), + "). It could also be that the members, longitude or latitude dimensions are named incorrectly. In that case, either rename the dimensions in the file or adjust Load() to recognize the actual name with the parameter 'dimnames'. See file", filename)) + } + } else { + nltime <- 1 + } + + # Now we must retrieve the data from the file, but only the asked indices. + # So we build up the indices to retrieve. + # Longitudes or latitudes have been retrieved already. + if (explore_dims) { + # If we're exploring the file we only want one time step from one member, + # to regrid it and work out the number of longitudes and latitudes. + # We don't need more. + members <- 1 + ltimes_list <- list(c(1)) + } else { + # The data is arranged in the array 'tmp' with the dimensions in a + # common order: + # 1) Longitudes + # 2) Latitudes + # 3) Members (even if is not a file per member experiment) + # 4) Lead-times + if (work_piece[['is_file_per_dataset']]) { + time_indices <- 1:nltime + mons <- strsplit(system(paste('cdo showmon ', filein, + ' 2>/dev/null'), intern = TRUE), split = ' ') + years <- strsplit(system(paste('cdo showyear ', filein, + ' 2>/dev/null'), intern = TRUE), split = ' ') + mons <- as.numeric(mons[[1]][which(mons[[1]] != "")]) + years <- as.numeric(years[[1]][which(years[[1]] != "")]) + time_indices <- ts(time_indices, start = c(years[1], mons[1]), + end = c(years[length(years)], mons[length(mons)]), + frequency = 12) + ltimes_list <- list() + for (sdate in work_piece[['startdates']]) { + selected_time_indices <- window(time_indices, start = c(as.numeric( + substr(sdate, 1, 4)), as.numeric(substr(sdate, 5, 6))), + end = c(3000, 12), frequency = 12, extend = TRUE) + selected_time_indices <- selected_time_indices[work_piece[['leadtimes']]] + ltimes_list <- c(ltimes_list, list(selected_time_indices)) + } + } else { + ltimes <- work_piece[['leadtimes']] + #if (work_piece[['dataset_type']] == 'exp') { + ltimes_list <- list(ltimes[which(ltimes <= nltime)]) + #} + } + ## TODO: Put, when reading matrices, this kind of warnings + # if (nmember < nmemb) { + # cat("Warning: + members <- 1:work_piece[['nmember']] + members <- members[which(members <= nmemb)] + } + + # Now, for each list of leadtimes to load (usually only one list with all leadtimes), + # we'll join the indices and retrieve data + found_disordered_dims <- FALSE + for (ltimes in ltimes_list) { + if (is_2d_var) { + start <- c(min(lon_indices), min(lat_indices)) + end <- c(max(lon_indices), max(lat_indices)) + if (lonlat_subsetting_requested && remap_needed) { + subset_indices <- list(min(lon_indices):max(lon_indices) - min(lon_indices) + 1, + lat_indices - min(lat_indices) + 1) + dim_longitudes <- ncdim_def(work_piece[['dimnames']][['lon']], "degrees_east", lon) + dim_latitudes <- ncdim_def(work_piece[['dimnames']][['lat']], "degrees_north", lat) + ncdf_dims <- list(dim_longitudes, dim_latitudes) + } else { + subset_indices <- list(lon_indices - min(lon_indices) + 1, + lat_indices - min(lat_indices) + 1) + ncdf_dims <- list() + } + final_dims <- c(length(subset_indices[[1]]), length(subset_indices[[2]]), 1, 1) + } else { + start <- end <- c() + subset_indices <- list() + ncdf_dims <- list() + final_dims <- c(1, 1, 1, 1) + } + + if (work_piece[['dimnames']][['member']] %in% expected_dims) { + start <- c(start, head(members, 1)) + end <- c(end, tail(members, 1)) + subset_indices <- c(subset_indices, list(members - head(members, 1) + 1)) + dim_members <- ncdim_def(work_piece[['dimnames']][['member']], "", members) + ncdf_dims <- c(ncdf_dims, list(dim_members)) + final_dims[3] <- length(members) + } + if (time_dimname %in% expected_dims) { + if (any(!is.na(ltimes))) { + start <- c(start, head(ltimes[which(!is.na(ltimes))], 1)) + end <- c(end, tail(ltimes[which(!is.na(ltimes))], 1)) + subset_indices <- c(subset_indices, list(ltimes - head(ltimes[which(!is.na(ltimes))], 1) + 1)) + } else { + start <- c(start, NA) + end <- c(end, NA) + subset_indices <- c(subset_indices, list(ltimes)) + } + dim_time <- ncdim_def(time_dimname, "", 1:length(ltimes), unlim = TRUE) + ncdf_dims <- c(ncdf_dims, list(dim_time)) + final_dims[4] <- length(ltimes) + } + count <- end - start + 1 + start <- start[dim_matches] + count <- count[dim_matches] + subset_indices <- subset_indices[dim_matches] + # Now that we have the indices to retrieve, we retrieve the data + if (prod(final_dims) > 0) { + tmp <- take(ncvar_get(fnc, namevar, start, count, + collapse_degen = FALSE), + 1:length(subset_indices), subset_indices) + # The data is regridded if it corresponds to an atmospheric variable. When + # the chosen output type is 'areave' the data is not regridded to not + # waste computing time unless the user specified a common grid. + if (is_2d_var) { + ###if (!is.null(work_piece[['mask']]) && !(lonlat_subsetting_requested && remap_needed)) { + ### mask <- take(ncvar_get(fnc_mask, work_piece[['mask']][['nc_var_name']], + ### start[dim_matches[1:2]], count[dim_matches[1:2]], + ### collapse_degen = FALSE), 1:2, subset_indices[dim_matches[1:2]]) + ###} + if (lonlat_subsetting_requested && remap_needed) { + filein <- tempfile(pattern = "loadRegridded", fileext = ".nc") + filein2 <- tempfile(pattern = "loadRegridded2", fileext = ".nc") + ncdf_var <- ncvar_def(namevar, "", ncdf_dims[dim_matches], + fnc$var[[namevar]]$missval, + prec = if (fnc$var[[namevar]]$prec == 'int') { + 'integer' + } else { + fnc$var[[namevar]]$prec + }) + scale_factor <- ifelse(fnc$var[[namevar]]$hasScaleFact, fnc$var[[namevar]]$scaleFact, 1) + add_offset <- ifelse(fnc$var[[namevar]]$hasAddOffset, fnc$var[[namevar]]$addOffset, 0) + if (fnc$var[[namevar]]$hasScaleFact || fnc$var[[namevar]]$hasAddOffset) { + tmp <- (tmp - add_offset) / scale_factor + } + #nc_close(fnc) + fnc2 <- nc_create(filein2, list(ncdf_var)) + ncvar_put(fnc2, ncdf_var, tmp) + if (add_offset != 0) { + ncatt_put(fnc2, ncdf_var, 'add_offset', add_offset) + } + if (scale_factor != 1) { + ncatt_put(fnc2, ncdf_var, 'scale_factor', scale_factor) + } + nc_close(fnc2) + system(paste0("cdo -L -s -sellonlatbox,", if (lonmin > lonmax) { + "0,360," + } else { + paste0(lonmin, ",", lonmax, ",") + }, latmin, ",", latmax, + " -remap", work_piece[['remap']], ",", common_grid_name, + " ", filein2, " ", filein, " 2>/dev/null", sep = "")) + file.remove(filein2) + fnc2 <- nc_open(filein) + sub_lon <- ncvar_get(fnc2, 'lon') + sub_lat <- ncvar_get(fnc2, 'lat') + ## We read the longitudes and latitudes from the file. + ## In principle cdo should put in order the longitudes + ## and slice them properly unless data is across greenwich + sub_lon[which(sub_lon < 0)] <- sub_lon[which(sub_lon < 0)] + 360 + sub_lon_indices <- 1:length(sub_lon) + if (lonmax < lonmin) { + sub_lon_indices <- sub_lon_indices[which((sub_lon <= lonmax) | (sub_lon >= lonmin))] + } + sub_lat_indices <- 1:length(sub_lat) + ## In principle cdo should put in order the latitudes + if (sub_lat[1] < sub_lat[length(sub_lat)]) { + sub_lat_indices <- length(sub_lat):1 + } + final_dims[c(1, 2)] <- c(length(sub_lon_indices), length(sub_lat_indices)) + subset_indices[[dim_matches[1]]] <- sub_lon_indices + subset_indices[[dim_matches[2]]] <- sub_lat_indices + + tmp <- take(ncvar_get(fnc2, namevar, collapse_degen = FALSE), + 1:length(subset_indices), subset_indices) + + if (!is.null(mask)) { + ## We create a very simple 2d netcdf file that is then interpolated to the common + ## grid to know what are the lons and lats of our slice of data + mask_file <- tempfile(pattern = 'loadMask', fileext = '.nc') + mask_file_remap <- tempfile(pattern = 'loadMask', fileext = '.nc') + dim_longitudes <- ncdim_def(work_piece[['dimnames']][['lon']], "degrees_east", c(0, 360)) + dim_latitudes <- ncdim_def(work_piece[['dimnames']][['lat']], "degrees_north", c(-90, 90)) + ncdf_var <- ncvar_def('LSM', "", list(dim_longitudes, dim_latitudes), NA, 'double') + fnc_mask <- nc_create(mask_file, list(ncdf_var)) + ncvar_put(fnc_mask, ncdf_var, array(rep(0, 4), dim = c(2, 2))) + nc_close(fnc_mask) + system(paste0("cdo -L -s remap", work_piece[['remap']], ",", common_grid_name, + " ", mask_file, " ", mask_file_remap, " 2>/dev/null", sep = "")) + fnc_mask <- nc_open(mask_file_remap) + mask_lons <- ncvar_get(fnc_mask, 'lon') + mask_lats <- ncvar_get(fnc_mask, 'lat') + nc_close(fnc_mask) + file.remove(mask_file, mask_file_remap) + if ((dim(mask)[1] != common_grid_lons) || (dim(mask)[2] != common_grid_lats)) { + stop(paste("Error: the mask of the dataset with index ", tail(work_piece[['indices']], 1), " in '", work_piece[['dataset_type']], "' is wrong. It must be on the common grid if the selected output type is 'lonlat', 'lon' or 'lat', or 'areave' and 'grid' has been specified. It must be on the grid of the corresponding dataset if the selected output type is 'areave' and no 'grid' has been specified. For more information check ?Load and see help on parameters 'grid', 'maskmod' and 'maskobs'.", sep = "")) + } + mask_lons[which(mask_lons < 0)] <- mask_lons[which(mask_lons < 0)] + 360 + if (lonmax >= lonmin) { + mask_lon_indices <- which((mask_lons >= lonmin) & (mask_lons <= lonmax)) + } else { + mask_lon_indices <- which((mask_lons >= lonmin) | (mask_lons <= lonmax)) + } + mask_lat_indices <- which((mask_lats >= latmin) & (mask_lats <= latmax)) + if (sub_lat[1] < sub_lat[length(sub_lat)]) { + mask_lat_indices <- mask_lat_indices[length(mask_lat_indices):1] + } + mask <- mask[mask_lon_indices, mask_lat_indices] + } + sub_lon <- sub_lon[sub_lon_indices] + sub_lat <- sub_lat[sub_lat_indices] + ### nc_close(fnc_mask) + ### system(paste0("cdo -s -sellonlatbox,", if (lonmin > lonmax) { + ### "0,360," + ### } else { + ### paste0(lonmin, ",", lonmax, ",") + ### }, latmin, ",", latmax, + ### " -remap", work_piece[['remap']], ",", common_grid_name, + ###This is wrong: same files + ### " ", mask_file, " ", mask_file, " 2>/dev/null", sep = "")) + ### fnc_mask <- nc_open(mask_file) + ### mask <- take(ncvar_get(fnc_mask, work_piece[['mask']][['nc_var_name']], + ### collapse_degen = FALSE), 1:2, subset_indices[dim_matches[1:2]]) + ###} + } + } + if (!all(dim_matches == sort(dim_matches))) { + if (!found_disordered_dims && rev(work_piece[['indices']])[2] == 1 && rev(work_piece[['indices']])[3] == 1) { + found_disordered_dims <- TRUE + .warning(paste0("The dimensions for the variable ", namevar, " in the files of the experiment with index ", tail(work_piece[['indices']], 1), " are not in the optimal order for loading with Load(). The optimal order would be '", paste(expected_dims, collapse = ', '), "'. One of the files of the dataset is stored in ", filename)) + } + tmp <- aperm(tmp, dim_matches) + } + dim(tmp) <- final_dims + # If we are exploring the file we don't need to process and arrange + # the retrieved data. We only need to keep the dimension sizes. + if (is_2d_var && lonlat_subsetting_requested && remap_needed) { + final_lons <- sub_lon + final_lats <- sub_lat + } else { + final_lons <- lon + final_lats <- lat + } + if (explore_dims) { + if (work_piece[['is_file_per_member']]) { + ## TODO: When the exp_full_path contains asterisks and is file_per_member + ## members from different datasets may be accounted. + ## Also if one file member is missing the accounting will be wrong. + ## Should parse the file name and extract number of members. + if (is_url) { + nmemb <- NULL + } else { + nmemb <- length(files) + } + } + dims <- list(member = nmemb, ftime = nltime, lon = final_lons, lat = final_lats) + } else { + # If we are not exploring, then we have to process the retrieved data + if (is_2d_var) { + tmp <- apply(tmp, c(3, 4), function(x) { + # Disable of large values. + if (!is.na(work_piece[['var_limits']][2])) { + x[which(x > work_piece[['var_limits']][2])] <- NA + } + if (!is.na(work_piece[['var_limits']][1])) { + x[which(x < work_piece[['var_limits']][1])] <- NA + } + if (!is.null(mask)) { + x[which(mask < 0.5)] <- NA + } + + if (output == 'areave' || output == 'lon') { + weights <- InsertDim(cos(final_lats * pi / 180), 1, length(final_lons), name = 'lon') + weights[which(is.na(x))] <- NA + if (output == 'areave') { + weights <- weights / mean(weights, na.rm = TRUE) + mean(x * weights, na.rm = TRUE) + } else { + weights <- weights / InsertDim(MeanDims(weights, 2, na.rm = TRUE), 2, length(final_lats), name = 'lat') + MeanDims(x * weights, 2, na.rm = TRUE) + } + } else if (output == 'lat') { + MeanDims(x, 1, na.rm = TRUE) + } else if (output == 'lonlat') { + signif(x, 5) + } + }) + if (output == 'areave') { + dim(tmp) <- c(1, 1, final_dims[3:4]) + } else if (output == 'lon') { + dim(tmp) <- c(final_dims[1], 1, final_dims[3:4]) + } else if (output == 'lat') { + dim(tmp) <- c(1, final_dims[c(2, 3, 4)]) + } else if (output == 'lonlat') { + dim(tmp) <- final_dims + } + } + var_data <- attach.big.matrix(work_piece[['out_pointer']]) + if (work_piece[['dims']][['member']] > 1 && nmemb > 1 && + work_piece[['dims']][['ftime']] > 1 && + nltime < work_piece[['dims']][['ftime']]) { + work_piece[['indices']][2] <- work_piece[['indices']][2] - 1 + for (jmemb in members) { + work_piece[['indices']][2] <- work_piece[['indices']][2] + 1 + out_position <- arrayIndex2VectorIndex(work_piece[['indices']], work_piece[['dims']]) + out_indices <- out_position:(out_position + length(tmp[, , jmemb, ]) - 1) + var_data[out_indices] <- as.vector(tmp[, , jmemb, ]) + } + work_piece[['indices']][2] <- work_piece[['indices']][2] - tail(members, 1) + 1 + } else { + out_position <- arrayIndex2VectorIndex(work_piece[['indices']], work_piece[['dims']]) + out_indices <- out_position:(out_position + length(tmp) - 1) + a <- aperm(tmp, c(1, 2, 4, 3)) + as.vector(a) + var_data[out_indices] <- as.vector(aperm(tmp, c(1, 2, 4, 3))) + } + work_piece[['indices']][3] <- work_piece[['indices']][3] + 1 + } + } + } + nc_close(fnc) + if (is_2d_var) { + if (remap_needed) { + array_across_gw <- FALSE + file.remove(filein) + ###if (!is.null(mask) && lonlat_subsetting_requested) { + ### file.remove(mask_file) + ###} + } else { + if (first_lon_in_original_file < 0) { + array_across_gw <- data_across_gw + } else { + array_across_gw <- FALSE + } + } + } + } + if (explore_dims) { + list(dims = dims, is_2d_var = is_2d_var, grid = grid_name, + units = units, var_long_name = var_long_name, + data_across_gw = data_across_gw, array_across_gw = array_across_gw) + } else { + ###if (!silent && !is.null(progress_connection) && !is.null(work_piece[['progress_amount']])) { + ### foobar <- writeBin(work_piece[['progress_amount']], progress_connection) + ###} + if (!silent && !is.null(work_piece[['progress_amount']])) { + message(paste0(work_piece[['progress_amount']]), appendLF = FALSE) + } + found_file + } +} + +.LoadSampleData <- function(var, exp = NULL, obs = NULL, sdates, + nmember = NULL, nmemberobs = NULL, + nleadtime = NULL, leadtimemin = 1, + leadtimemax = NULL, storefreq = 'monthly', + sampleperiod = 1, lonmin = 0, lonmax = 360, + latmin = -90, latmax = 90, output = 'areave', + method = 'conservative', grid = NULL, + maskmod = vector("list", 15), + maskobs = vector("list", 15), + configfile = NULL, suffixexp = NULL, + suffixobs = NULL, varmin = NULL, varmax = NULL, + silent = FALSE, nprocs = NULL) { + ## This function loads and selects sample data stored in sampleMap and + ## sampleTimeSeries and is used in the examples instead of Load() so as + ## to avoid nco and cdo system calls and computation time in the stage + ## of running examples in the CHECK process on CRAN. + selected_start_dates <- match(sdates, c('19851101', '19901101', '19951101', + '20001101', '20051101')) + start_dates_position <- 3 + lead_times_position <- 4 + + if (output == 'lonlat') { + sampleData <- s2dv::sampleMap + if (is.null(leadtimemax)) { + leadtimemax <- dim(sampleData$mod)[lead_times_position] + } + selected_lead_times <- leadtimemin:leadtimemax + + dataOut <- sampleData + dataOut$mod <- sampleData$mod[, , selected_start_dates, selected_lead_times, , ] + dataOut$obs <- sampleData$obs[, , selected_start_dates, selected_lead_times, , ] + } + else if (output == 'areave') { + sampleData <- s2dv::sampleTimeSeries + if (is.null(leadtimemax)) { + leadtimemax <- dim(sampleData$mod)[lead_times_position] + } + selected_lead_times <- leadtimemin:leadtimemax + + dataOut <- sampleData + dataOut$mod <- sampleData$mod[, , selected_start_dates, selected_lead_times] + dataOut$obs <- sampleData$obs[, , selected_start_dates, selected_lead_times] + } + + dims_out <- dim(sampleData$mod) + dims_out[start_dates_position] <- length(selected_start_dates) + dims_out[lead_times_position] <- length(selected_lead_times) + dim(dataOut$mod) <- dims_out + + dims_out <- dim(sampleData$obs) + dims_out[start_dates_position] <- length(selected_start_dates) + dims_out[lead_times_position] <- length(selected_lead_times) + dim(dataOut$obs) <- dims_out + + invisible(list(mod = dataOut$mod, obs = dataOut$obs, + lat = dataOut$lat, lon = dataOut$lon)) +} + +.ConfigGetDatasetInfo <- function(matching_entries, table_name) { + # This function obtains the information of a dataset and variable pair, + # applying all the entries that match in the configuration file. + if (table_name == 'experiments') { + id <- 'EXP' + } else { + id <- 'OBS' + } + defaults <- c(paste0('$DEFAULT_', id, '_MAIN_PATH$'), paste0('$DEFAULT_', id, '_FILE_PATH$'), '$DEFAULT_NC_VAR_NAME$', '$DEFAULT_SUFFIX$', '$DEFAULT_VAR_MIN$', '$DEFAULT_VAR_MAX$') + info <- NULL + + for (entry in matching_entries) { + if (is.null(info)) { + info <- entry[-1:-2] + info[which(info == '*')] <- defaults[which(info == '*')] + } else { + info[which(entry[-1:-2] != '*')] <- entry[-1:-2][which(entry[-1:-2] != '*')] + } + } + + info <- as.list(info) + names(info) <- c('main_path', 'file_path', 'nc_var_name', 'suffix', 'var_min', 'var_max') + info +} + +.ReplaceGlobExpressions <- function(path_with_globs, actual_path, + replace_values, tags_to_keep, + dataset_name, permissive) { + # The goal of this function is to replace the shell globbing expressions in + # a path pattern (that may contain shell globbing expressions and Load() + # tags) by the corresponding part of the real existing path. + # What is done actually is to replace all the values of the tags in the + # actual path by the corresponding $TAG$ + # + # It takes mainly two inputs. The path with expressions and tags, e.g.: + # /data/experiments/*/$EXP_NAME$/$VAR_NAME$/$VAR_NAME$_*$START_DATE$*.nc + # and a complete known path to one of the matching files, e.g.: + # /data/experiments/ecearth/i00k/tos/tos_fc0-1_19901101_199011-199110.nc + # and it returns the path pattern but without shell globbing expressions: + # /data/experiments/ecearth/$EXP_NAME$/$VAR_NAME$/$VAR_NAME$_fc0-1_$START_DATE$_199011-199110.nc + # + # To do that, it needs also as inputs the list of replace values (the + # association of each tag to their value). + # + # All the tags not present in the parameter tags_to_keep will be repalced. + # + # Not all cases can be resolved with the implemented algorithm. In an + # unsolvable case a warning is given and one possible guess is returned. + # + # In some cases it is interesting to replace only the expressions in the + # path to the file, but not the ones in the file name itself. To keep the + # expressions in the file name, the parameter permissive can be set to + # TRUE. To replace all the expressions it can be set to FALSE. + clean <- function(x) { + if (nchar(x) > 0) { + x <- gsub('\\\\', '', x) + x <- gsub('\\^', '', x) + x <- gsub('\\$', '', x) + x <- unname(sapply(strsplit(x, '[',fixed = TRUE)[[1]], function(y) gsub('.*]', '.', y))) + do.call(paste0, as.list(x)) + } else { + x + } + } + + strReverse <- function(x) sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "") + + if (permissive) { + actual_path_chunks <- strsplit(actual_path, '/')[[1]] + actual_path <- paste(actual_path_chunks[-length(actual_path_chunks)], collapse = '/') + file_name <- tail(actual_path_chunks, 1) + if (length(actual_path_chunks) > 1) { + file_name <- paste0('/', file_name) + } + path_with_globs_chunks <- strsplit(path_with_globs, '/')[[1]] + path_with_globs <- paste(path_with_globs_chunks[-length(path_with_globs_chunks)], + collapse = '/') + path_with_globs <- .ConfigReplaceVariablesInString(path_with_globs, replace_values) + file_name_with_globs <- tail(path_with_globs_chunks, 1) + if (length(path_with_globs_chunks) > 1) { + file_name_with_globs <- paste0('/', file_name_with_globs) + } + right_known <- head(strsplit(file_name_with_globs, '*', fixed = TRUE)[[1]], 1) + right_known_no_tags <- .ConfigReplaceVariablesInString(right_known, replace_values) + path_with_globs_rx <- utils::glob2rx(paste0(path_with_globs, right_known_no_tags)) + match <- regexpr(gsub('$', '', path_with_globs_rx, fixed = TRUE), paste0(actual_path, file_name)) + if (match != 1) { + stop("Incorrect parameters to replace glob expressions. The path with expressions does not match the actual path.") + } + if (attr(match, 'match.length') - nchar(right_known_no_tags) < nchar(actual_path)) { + path_with_globs <- paste0(path_with_globs, right_known_no_tags, '*') + file_name_with_globs <- sub(right_known, '/*', file_name_with_globs) + } + } + path_with_globs_rx <- utils::glob2rx(path_with_globs) + values_to_replace <- c() + tags_to_replace_starts <- c() + tags_to_replace_ends <- c() + give_warning <- FALSE + for (tag in tags_to_keep) { + matches <- gregexpr(paste0('$', tag, '$'), path_with_globs_rx, fixed = TRUE)[[1]] + lengths <- attr(matches, 'match.length') + if (!(length(matches) == 1 && matches[1] == -1)) { + for (i in 1:length(matches)) { + left <- NULL + if (matches[i] > 1) { + left <- .ConfigReplaceVariablesInString(substr(path_with_globs_rx, 1, matches[i] - 1), replace_values) + left_known <- strReverse(head(strsplit(strReverse(left), strReverse('.*'), fixed = TRUE)[[1]], 1)) + } + right <- NULL + if ((matches[i] + lengths[i] - 1) < nchar(path_with_globs_rx)) { + right <- .ConfigReplaceVariablesInString(substr(path_with_globs_rx, matches[i] + lengths[i], nchar(path_with_globs_rx)), replace_values) + right_known <- head(strsplit(right, '.*', fixed = TRUE)[[1]], 1) + } + final_match <- NULL + match_limits <- NULL + if (!is.null(left)) { + left_match <- regexpr(paste0(left, replace_values[[tag]], right_known), actual_path) + match_len <- attr(left_match, 'match.length') + left_match_limits <- c(left_match + match_len - 1 - nchar(clean(right_known)) - nchar(replace_values[[tag]]) + 1, + left_match + match_len - 1 - nchar(clean(right_known))) + if (!(left_match < 1)) { + match_limits <- left_match_limits + } + } + right_match <- NULL + if (!is.null(right)) { + right_match <- regexpr(paste0(left_known, replace_values[[tag]], right), actual_path) + match_len <- attr(right_match, 'match.length') + right_match_limits <- c(right_match + nchar(clean(left_known)), + right_match + nchar(clean(left_known)) + nchar(replace_values[[tag]]) - 1) + if (is.null(match_limits) && !(right_match < 1)) { + match_limits <- right_match_limits + } + } + if (!is.null(right_match) && !is.null(left_match)) { + if (!identical(right_match_limits, left_match_limits)) { + give_warning <- TRUE + } + } + if (is.null(match_limits)) { + stop("Too complex path pattern specified for ", dataset_name, + ". Specify a simpler path pattern for this dataset.") + } + values_to_replace <- c(values_to_replace, tag) + tags_to_replace_starts <- c(tags_to_replace_starts, match_limits[1]) + tags_to_replace_ends <- c(tags_to_replace_ends, match_limits[2]) + } + } + } + + if (length(tags_to_replace_starts) > 0) { + reorder <- sort(tags_to_replace_starts, index.return = TRUE) + tags_to_replace_starts <- reorder$x + values_to_replace <- values_to_replace[reorder$ix] + tags_to_replace_ends <- tags_to_replace_ends[reorder$ix] + while (length(values_to_replace) > 0) { + actual_path <- paste0(substr(actual_path, 1, head(tags_to_replace_starts, 1) - 1), + '$', head(values_to_replace, 1), '$', + substr(actual_path, head(tags_to_replace_ends, 1) + 1, nchar(actual_path))) + extra_chars <- nchar(head(values_to_replace, 1)) + 2 - (head(tags_to_replace_ends, 1) - head(tags_to_replace_starts, 1) + 1) + values_to_replace <- values_to_replace[-1] + tags_to_replace_starts <- tags_to_replace_starts[-1] + tags_to_replace_ends <- tags_to_replace_ends[-1] + tags_to_replace_starts <- tags_to_replace_starts + extra_chars + tags_to_replace_ends <- tags_to_replace_ends + extra_chars + } + } + + if (give_warning) { + .warning(paste0("Too complex path pattern specified for ", dataset_name, + ". Double check carefully the '$Files' fetched for this dataset or specify a simpler path pattern.")) + } + + if (permissive) { + paste0(actual_path, file_name_with_globs) + } else { + actual_path + } +} + +.FindTagValue <- function(path_with_globs_and_tag, actual_path, tag) { + tag <- paste0('\\$', tag, '\\$') + path_with_globs_and_tag <- paste0('^', path_with_globs_and_tag, '$') + parts <- strsplit(path_with_globs_and_tag, '*', fixed = TRUE)[[1]] + parts <- as.list(parts[grep(tag, parts)]) + longest_couples <- c() + pos_longest_couples <- c() + found_value <- NULL + for (i in 1:length(parts)) { + parts[[i]] <- strsplit(parts[[i]], tag)[[1]] + if (length(parts[[i]]) == 1) { + parts[[i]] <- c(parts[[i]], '') + } + len_parts <- sapply(parts[[i]], nchar) + len_couples <- len_parts[-length(len_parts)] + len_parts[2:length(len_parts)] + pos_longest_couples <- c(pos_longest_couples, which.max(len_couples)) + longest_couples <- c(longest_couples, max(len_couples)) + } + chosen_part <- which.max(longest_couples) + parts[[chosen_part]] <- parts[[chosen_part]][pos_longest_couples[chosen_part]:(pos_longest_couples[chosen_part] + 1)] + if (nchar(parts[[chosen_part]][1]) >= nchar(parts[[chosen_part]][2])) { + if (nchar(parts[[chosen_part]][1]) > 0) { + matches <- gregexpr(parts[[chosen_part]][1], actual_path)[[1]] + if (length(matches) == 1) { + match_left <- matches + actual_path <- substr(actual_path, match_left + attr(match_left, 'match.length'), nchar(actual_path)) + } + } + if (nchar(parts[[chosen_part]][2]) > 0) { + matches <- gregexpr(parts[[chosen_part]][2], actual_path)[[1]] + if (length(matches) == 1) { + match_right <- matches + found_value <- substr(actual_path, 0, match_right - 1) + } + } + } else { + if (nchar(parts[[chosen_part]][2]) > 0) { + matches <- gregexpr(parts[[chosen_part]][2], actual_path)[[1]] + if (length(matches) == 1) { + match_right <- matches + actual_path <- substr(actual_path, 0, match_right - 1) + } + } + if (nchar(parts[[chosen_part]][1]) > 0) { + matches <- gregexpr(parts[[chosen_part]][1], actual_path)[[1]] + if (length(matches) == 1) { + match_left <- matches + found_value <- substr(actual_path, match_left + attr(match_left, 'match.length'), nchar(actual_path)) + } + } + } + found_value +} + +.FilterUserGraphicArgs <- function(excludedArgs, ...) { + # This function filter the extra graphical parameters passed by the user in + # a plot function, excluding the ones that the plot function uses by default. + # Each plot function has a different set of arguments that are not allowed to + # be modified. + args <- list(...) + userArgs <- list() + for (name in names(args)) { + if ((name != "") & !is.element(name, excludedArgs)) { + # If the argument has a name and it is not in the list of excluded + # arguments, then it is added to the list that will be used + userArgs[[name]] <- args[[name]] + } else { + .warning(paste0("the argument '", name, "' can not be + modified and the new value will be ignored")) + } + } + userArgs +} + +.SelectDevice <- function(fileout, width, height, units, res) { + # This function is used in the plot functions to check the extension of the + # files where the graphics will be stored and select the right R device to + # save them. + # If the vector of filenames ('fileout') has files with different + # extensions, then it will only accept the first one, changing all the rest + # of the filenames to use that extension. + + # We extract the extension of the filenames: '.png', '.pdf', ... + ext <- regmatches(fileout, regexpr("\\.[a-zA-Z0-9]*$", fileout)) + + if (length(ext) != 0) { + # If there is an extension specified, select the correct device + ## units of width and height set to accept inches + if (ext[1] == ".png") { + saveToFile <- function(fileout) { + png(filename = fileout, width = width, height = height, res = res, units = units) + } + } else if (ext[1] == ".jpeg") { + saveToFile <- function(fileout) { + jpeg(filename = fileout, width = width, height = height, res = res, units = units) + } + } else if (ext[1] %in% c(".eps", ".ps")) { + saveToFile <- function(fileout) { + postscript(file = fileout, width = width, height = height) + } + } else if (ext[1] == ".pdf") { + saveToFile <- function(fileout) { + pdf(file = fileout, width = width, height = height) + } + } else if (ext[1] == ".svg") { + saveToFile <- function(fileout) { + svg(filename = fileout, width = width, height = height) + } + } else if (ext[1] == ".bmp") { + saveToFile <- function(fileout) { + bmp(filename = fileout, width = width, height = height, res = res, units = units) + } + } else if (ext[1] == ".tiff") { + saveToFile <- function(fileout) { + tiff(filename = fileout, width = width, height = height, res = res, units = units) + } + } else { + .warning("file extension not supported, it will be used '.eps' by default.") + ## In case there is only one filename + fileout[1] <- sub("\\.[a-zA-Z0-9]*$", ".eps", fileout[1]) + ext[1] <- ".eps" + saveToFile <- function(fileout) { + postscript(file = fileout, width = width, height = height) + } + } + # Change filenames when necessary + if (any(ext != ext[1])) { + .warning(paste0("some extensions of the filenames provided in 'fileout' are not ", ext[1],". The extensions are being converted to ", ext[1], ".")) + fileout <- sub("\\.[a-zA-Z0-9]*$", ext[1], fileout) + } + } else { + # Default filenames when there is no specification + .warning("there are no extensions specified in the filenames, default to '.eps'") + fileout <- paste0(fileout, ".eps") + saveToFile <- postscript + } + + # return the correct function with the graphical device, and the correct + # filenames + list(fun = saveToFile, files = fileout) +} + +.message <- function(...) { + # Function to use the 'message' R function with our custom settings + # Default: new line at end of message, indent to 0, exdent to 3, + # collapse to \n* + args <- list(...) + + ## In case we need to specify message arguments + if (!is.null(args[["appendLF"]])) { + appendLF <- args[["appendLF"]] + } else { + ## Default value in message function + appendLF <- TRUE + } + if (!is.null(args[["domain"]])) { + domain <- args[["domain"]] + } else { + ## Default value in message function + domain <- NULL + } + args[["appendLF"]] <- NULL + args[["domain"]] <- NULL + + ## To modify strwrap indent and exdent arguments + if (!is.null(args[["indent"]])) { + indent <- args[["indent"]] + } else { + indent <- 0 + } + if (!is.null(args[["exdent"]])) { + exdent <- args[["exdent"]] + } else { + exdent <- 3 + } + args[["indent"]] <- NULL + args[["exdent"]] <- NULL + + ## To modify paste collapse argument + if (!is.null(args[["collapse"]])) { + collapse <- args[["collapse"]] + } else { + collapse <- "\n*" + } + args[["collapse"]] <- NULL + + ## Message tag + if (!is.null(args[["tag"]])) { + tag <- args[["tag"]] + } else { + tag <- "* " + } + args[["tag"]] <- NULL + + message(paste0(tag, paste(strwrap( + args, indent = indent, exdent = exdent + ), collapse = collapse)), appendLF = appendLF, domain = domain) +} + +.warning <- function(...) { + # Function to use the 'warning' R function with our custom settings + # Default: no call information, indent to 0, exdent to 3, + # collapse to \n + args <- list(...) + + ## In case we need to specify warning arguments + if (!is.null(args[["call."]])) { + call <- args[["call."]] + } else { + ## Default: don't show info about the call where the warning came up + call <- FALSE + } + if (!is.null(args[["immediate."]])) { + immediate <- args[["immediate."]] + } else { + ## Default value in warning function + immediate <- FALSE + } + if (!is.null(args[["noBreaks."]])) { + noBreaks <- args[["noBreaks."]] + } else { + ## Default value warning function + noBreaks <- FALSE + } + if (!is.null(args[["domain"]])) { + domain <- args[["domain"]] + } else { + ## Default value warning function + domain <- NULL + } + args[["call."]] <- NULL + args[["immediate."]] <- NULL + args[["noBreaks."]] <- NULL + args[["domain"]] <- NULL + + ## To modify strwrap indent and exdent arguments + if (!is.null(args[["indent"]])) { + indent <- args[["indent"]] + } else { + indent <- 0 + } + if (!is.null(args[["exdent"]])) { + exdent <- args[["exdent"]] + } else { + exdent <- 3 + } + args[["indent"]] <- NULL + args[["exdent"]] <- NULL + + ## To modify paste collapse argument + if (!is.null(args[["collapse"]])) { + collapse <- args[["collapse"]] + } else { + collapse <- "\n!" + } + args[["collapse"]] <- NULL + + ## Warning tag + if (!is.null(args[["tag"]])) { + tag <- args[["tag"]] + } else { + tag <- "! Warning: " + } + args[["tag"]] <- NULL + + warning(paste0(tag, paste(strwrap( + args, indent = indent, exdent = exdent + ), collapse = collapse)), call. = call, immediate. = immediate, + noBreaks. = noBreaks, domain = domain) +} + +.IsColor <- function(x) { + res <- try(col2rgb(x), silent = TRUE) + return(!"try-error" %in% class(res)) +} + +# This function switches to a specified figure at position (row, col) in a layout. +# This overcomes the bug in par(mfg = ...). However the mode par(new = TRUE) is +# activated, i.e., all drawn elements will be superimposed. Additionally, after +# using this function, the automatical pointing to the next figure in the layout +# will be spoiled: once the last figure in the layout is drawn, the pointer won't +# move to the first figure in the layout. +# Only figures with numbers other than 0 (when creating the layout) will be +# accessible. +# Inputs: either row and col, or n and mat +.SwitchToFigure <- function(row = NULL, col = NULL, n = NULL, mat = NULL) { + if (!is.null(n) && !is.null(mat)) { + if (!is.numeric(n) || length(n) != 1) { + stop("Parameter 'n' must be a single numeric value.") + } + n <- round(n) + if (!is.array(mat)) { + stop("Parameter 'mat' must be an array.") + } + target <- which(mat == n, arr.ind = TRUE)[1, ] + row <- target[1] + col <- target[2] + } else if (!is.null(row) && !is.null(col)) { + if (!is.numeric(row) || length(row) != 1) { + stop("Parameter 'row' must be a single numeric value.") + } + row <- round(row) + if (!is.numeric(col) || length(col) != 1) { + stop("Parameter 'col' must be a single numeric value.") + } + col <- round(col) + } else { + stop("Either 'row' and 'col' or 'n' and 'mat' must be provided.") + } + next_attempt <- c(row, col) + par(mfg = next_attempt) + i <- 1 + layout_size <- par('mfrow') + layout_cells <- matrix(1:prod(layout_size), layout_size[1], layout_size[2], + byrow = TRUE) + while (any((par('mfg')[1:2] != c(row, col)))) { + next_attempt <- which(layout_cells == i, arr.ind = TRUE)[1, ] + par(mfg = next_attempt) + i <- i + 1 + if (i > prod(layout_size)) { + stop("Figure not accessible.") + } + } + plot(0, type = 'n', axes = FALSE, ann = FALSE) + par(mfg = next_attempt) +} + +# Function to permute arrays of non-atomic elements (e.g. POSIXct) +.aperm2 <- function(x, new_order) { + old_dims <- dim(x) + attr_bk <- attributes(x) + if ('dim' %in% names(attr_bk)) { + attr_bk[['dim']] <- NULL + } + if (is.numeric(x)) { + x <- aperm(x, new_order) + } else { + y <- array(1:length(x), dim = dim(x)) + y <- aperm(y, new_order) + x <- x[as.vector(y)] + } + dim(x) <- old_dims[new_order] + attributes(x) <- c(attributes(x), attr_bk) + x +} + +# This function is a helper for the function .MergeArrays. +# It expects as inputs two named numeric vectors, and it extends them +# with dimensions of length 1 until an ordered common dimension +# format is reached. +# The first output is dims1 extended with 1s. +# The second output is dims2 extended with 1s. +# The third output is a merged dimension vector. If dimensions with +# the same name are found in the two inputs, and they have a different +# length, the maximum is taken. +.MergeArrayDims <- function(dims1, dims2) { + new_dims1 <- c() + new_dims2 <- c() + while (length(dims1) > 0) { + if (names(dims1)[1] %in% names(dims2)) { + pos <- which(names(dims2) == names(dims1)[1]) + dims_to_add <- rep(1, pos - 1) + if (length(dims_to_add) > 0) { + names(dims_to_add) <- names(dims2[1:(pos - 1)]) + } + new_dims1 <- c(new_dims1, dims_to_add, dims1[1]) + new_dims2 <- c(new_dims2, dims2[1:pos]) + dims1 <- dims1[-1] + dims2 <- dims2[-c(1:pos)] + } else { + new_dims1 <- c(new_dims1, dims1[1]) + new_dims2 <- c(new_dims2, 1) + names(new_dims2)[length(new_dims2)] <- names(dims1)[1] + dims1 <- dims1[-1] + } + } + if (length(dims2) > 0) { + dims_to_add <- rep(1, length(dims2)) + names(dims_to_add) <- names(dims2) + new_dims1 <- c(new_dims1, dims_to_add) + new_dims2 <- c(new_dims2, dims2) + } + list(new_dims1, new_dims2, pmax(new_dims1, new_dims2)) +} + +# This function takes two named arrays and merges them, filling with +# NA where needed. +# dim(array1) +# 'b' 'c' 'e' 'f' +# 1 3 7 9 +# dim(array2) +# 'a' 'b' 'd' 'f' 'g' +# 2 3 5 9 11 +# dim(.MergeArrays(array1, array2, 'b')) +# 'a' 'b' 'c' 'e' 'd' 'f' 'g' +# 2 4 3 7 5 9 11 +.MergeArrays <- function(array1, array2, along) { + if (!(is.null(array1) || is.null(array2))) { + if (!(identical(names(dim(array1)), names(dim(array2))) && + identical(dim(array1)[-which(names(dim(array1)) == along)], + dim(array2)[-which(names(dim(array2)) == along)]))) { + new_dims <- .MergeArrayDims(dim(array1), dim(array2)) + dim(array1) <- new_dims[[1]] + dim(array2) <- new_dims[[2]] + for (j in 1:length(dim(array1))) { + if (names(dim(array1))[j] != along) { + if (dim(array1)[j] != dim(array2)[j]) { + if (which.max(c(dim(array1)[j], dim(array2)[j])) == 1) { + na_array_dims <- dim(array2) + na_array_dims[j] <- dim(array1)[j] - dim(array2)[j] + na_array <- array(dim = na_array_dims) + array2 <- abind(array2, na_array, along = j) + names(dim(array2)) <- names(na_array_dims) + } else { + na_array_dims <- dim(array1) + na_array_dims[j] <- dim(array2)[j] - dim(array1)[j] + na_array <- array(dim = na_array_dims) + array1 <- abind(array1, na_array, along = j) + names(dim(array1)) <- names(na_array_dims) + } + } + } + } + } + if (!(along %in% names(dim(array2)))) { + stop("The dimension specified in 'along' is not present in the ", + "provided arrays.") + } + array1 <- abind(array1, array2, along = which(names(dim(array1)) == along)) + names(dim(array1)) <- names(dim(array2)) + } else if (is.null(array1)) { + array1 <- array2 + } + array1 +} + +# only can be used in Trend(). Needs generalization or be replaced by other function. +.reorder <- function(output, time_dim, dim_names) { + # Add dim name back + if (is.null(dim(output))) { + dim(output) <- c(stats = length(output)) + } else { #is an array + if (length(dim(output)) == 1) { + if (!is.null(names(dim(output)))) { + dim(output) <- c(1, dim(output)) + names(dim(output))[1] <- time_dim + } else { + names(dim(output)) <- time_dim + } + } else { # more than one dim + if (names(dim(output))[1] != "") { + dim(output) <- c(1, dim(output)) + names(dim(output))[1] <- time_dim + } else { #regular case + names(dim(output))[1] <- time_dim + } + } + } + # reorder + pos <- match(dim_names, names(dim(output))) + output <- aperm(output, pos) + names(dim(output)) <- dim_names + names(dim(output))[names(dim(output)) == time_dim] <- 'stats' + return(output) +} + +# to be used in AMV.R, TPI.R, SPOD.R, GSAT.R and GMST.R +.Indices <- function(data, type, monini, indices_for_clim, + fmonth_dim, sdate_dim, year_dim, month_dim, na.rm) { + + if (type == 'dcpp') { + + fyear_dim <- 'fyear' + data <- Season(data = data, time_dim = fmonth_dim, + monini = monini, moninf = 1, monsup = 12, + method = mean, na.rm = na.rm) + names(dim(data))[which(names(dim(data))==fmonth_dim)] <- fyear_dim + + if (identical(indices_for_clim, FALSE)) { ## data is already anomalies + + anom <- data + + } else { ## Different indices_for_clim for each forecast year (to use the same calendar years) + + n_fyears <- as.numeric(dim(data)[fyear_dim]) + n_sdates <- as.numeric(dim(data)[sdate_dim]) + + if (is.null(indices_for_clim)) { ## climatology over the whole (common) period + first_years_for_clim <- n_fyears : 1 + last_years_for_clim <- n_sdates : (n_sdates - n_fyears + 1) + } else { ## indices_for_clim specified as a numeric vector + first_years_for_clim <- seq(from = indices_for_clim[1], by = -1, length.out = n_fyears) + last_years_for_clim <- seq(from = indices_for_clim[length(indices_for_clim)], by = -1, length.out = n_fyears) + } + + data <- s2dv::Reorder(data = data, order = c(fyear_dim, sdate_dim)) + anom <- array(data = NA, dim = dim(data)) + for (i in 1:n_fyears) { + clim <- mean(data[i,first_years_for_clim[i]:last_years_for_clim[i]], na.rm = na.rm) + anom[i,] <- data[i,] - clim + } + } + + } else if (type %in% c('obs','hist')) { + + data <- multiApply::Apply(data = data, target_dims = month_dim, fun = mean, na.rm = na.rm)$output1 + + if (identical(indices_for_clim, FALSE)) { ## data is already anomalies + clim <- 0 + } else if (is.null(indices_for_clim)) { ## climatology over the whole period + clim <- multiApply::Apply(data = data, target_dims = year_dim, fun = mean, na.rm = na.rm)$output1 + } else { ## indices_for_clim specified as a numeric vector + clim <- multiApply::Apply(data = ClimProjDiags::Subset(x = data, along = year_dim, indices = indices_for_clim), + target_dims = year_dim, fun = mean, na.rm = na.rm)$output1 + } + + anom <- data - clim + + } else {stop('type must be dcpp, hist or obs')} + + return(anom) +} + +#TODO: Remove from s2dv when PlotLayout can get colorbar info from plotting function directly. +# The function is temporarily here because PlotLayout() needs to draw the colorbars of +# PlotMostLikelyQuantileMap(). +#Draws Color Bars for Categories +#A wrapper of s2dv::ColorBar to generate multiple color bars for different +#categories, and each category has different color set. +GradientCatsColorBar <- function(nmap, brks = NULL, cols = NULL, vertical = TRUE, subsampleg = NULL, + bar_limits, var_limits = NULL, + triangle_ends = NULL, plot = TRUE, + draw_separators = FALSE, + bar_titles = NULL, title_scale = 1, label_scale = 1, extra_margin = rep(0, 4), + ...) { + # bar_limits + if (!is.numeric(bar_limits) || length(bar_limits) != 2) { + stop("Parameter 'bar_limits' must be a numeric vector of length 2.") + } + + # Check brks + if (is.null(brks) || (is.numeric(brks) && length(brks) == 1)) { + num_brks <- 5 + if (is.numeric(brks)) { + num_brks <- brks + } + brks <- seq(from = bar_limits[1], to = bar_limits[2], length.out = num_brks) + } + if (!is.numeric(brks)) { + stop("Parameter 'brks' must be a numeric vector.") + } + # Check cols + col_sets <- list(c("#A1D99B", "#74C476", "#41AB5D", "#238B45"), + c("#6BAED6FF", "#4292C6FF", "#2171B5FF", "#08519CFF"), + c("#FFEDA0FF", "#FED976FF", "#FEB24CFF", "#FD8D3CFF"), + c("#FC4E2AFF", "#E31A1CFF", "#BD0026FF", "#800026FF"), + c("#FCC5C0", "#FA9FB5", "#F768A1", "#DD3497")) + if (is.null(cols)) { + if (length(col_sets) >= nmap) { + chosen_sets <- 1:nmap + chosen_sets <- chosen_sets + floor((length(col_sets) - length(chosen_sets)) / 2) + } else { + chosen_sets <- array(1:length(col_sets), nmap) + } + cols <- col_sets[chosen_sets] + } else { + if (!is.list(cols)) { + stop("Parameter 'cols' must be a list of character vectors.") + } + if (!all(sapply(cols, is.character))) { + stop("Parameter 'cols' must be a list of character vectors.") + } + if (length(cols) != nmap) { + stop("Parameter 'cols' must be a list of the same length as the number of ", + "maps in 'maps'.") + } + } + for (i in 1:length(cols)) { + if (length(cols[[i]]) != (length(brks) - 1)) { + cols[[i]] <- grDevices::colorRampPalette(cols[[i]])(length(brks) - 1) + } + } + + # Check bar_titles + if (is.null(bar_titles)) { + if (nmap == 3) { + bar_titles <- c("Below normal (%)", "Normal (%)", "Above normal (%)") + } else if (nmap == 5) { + bar_titles <- c("Low (%)", "Below normal (%)", + "Normal (%)", "Above normal (%)", "High (%)") + } else { + bar_titles <- paste0("Cat. ", 1:nmap, " (%)") + } + } + + if (plot) { + for (k in 1:nmap) { + s2dv::ColorBar(brks = brks, cols = cols[[k]], vertical = FALSE, subsampleg = subsampleg, +# bar_limits = bar_limits, var_limits = var_limits, + triangle_ends = triangle_ends, plot = TRUE, + draw_separators = draw_separators, + title = bar_titles[[k]], title_scale = title_scale, + label_scale = label_scale, extra_margin = extra_margin) + } + } else { + #TODO: col_inf and col_sup + return(list(brks = brks, cols = cols)) + } + +} + + diff --git a/modules/Saving/R/save_metrics.R b/modules/Saving/R/save_metrics.R index cd4252ab..b8cc95bb 100644 --- a/modules/Saving/R/save_metrics.R +++ b/modules/Saving/R/save_metrics.R @@ -12,6 +12,9 @@ save_metrics <- function(recipe, dictionary <- read_yaml("conf/variable-dictionary.yml") global_attributes <- .get_global_attributes(recipe, archive) + global_attributes <- c(list(var_long_name = + data_cube$attrs$Variable$metadata[[var_name]]$long_name), + global_attributes) ## TODO: Sort out the logic once default behavior is decided if ((!is.null(recipe$Analysis$Workflow$Anomalies$compute)) && (recipe$Analysis$Workflow$Anomalies$compute)) { diff --git a/modules/Scorecards/R/tmp/SCPlotScorecard.R b/modules/Scorecards/R/tmp/SCPlotScorecard.R index 4373057b..dedbc6cb 100644 --- a/modules/Scorecards/R/tmp/SCPlotScorecard.R +++ b/modules/Scorecards/R/tmp/SCPlotScorecard.R @@ -407,7 +407,7 @@ SCPlotScorecard <- function(data, row.dim = 'region', subrow.dim = 'time', table.html <- column_spec(table.html.part[[n.last.list]], 1, bold = TRUE, width_min = paste0(col1.width, 'cm')) %>% column_spec(2, bold = TRUE, width_min = paste0(col2.width, 'cm')) %>% - column_spec(3:n.columns, width_min = "1.2cm") %>% + column_spec(3:n.columns, width_min = "1.5cm") %>% column_spec(c(1, 2, column.borders), border_right = "2px solid black") %>% column_spec(1, border_left = "2px solid black") %>% column_spec(n.columns, border_right = "2px solid black") %>% diff --git a/modules/Visualization/R/plot_skill_metrics.R b/modules/Visualization/R/plot_skill_metrics.R index a97a2a53..56aac41b 100644 --- a/modules/Visualization/R/plot_skill_metrics.R +++ b/modules/Visualization/R/plot_skill_metrics.R @@ -148,7 +148,8 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, } # Get variable name and long name var_name <- data_cube$attrs$Variable$varName[[var]] - var_long_name <- data_cube$attrs$Variable$metadata[[var_name]]$long_name + var_long_name <- var_dict[[var]]$long_name + #var_long_name <- data_cube$attrs$Variable$metadata[[var_name]]$long_name # Multi-panel or single-panel plots if (recipe$Analysis$Workflow$Visualization$multi_panel) { # Define titles diff --git a/recipe_NAO_scorecards.yml b/recipe_NAO_scorecards.yml index 88929bc7..488b1e24 100644 --- a/recipe_NAO_scorecards.yml +++ b/recipe_NAO_scorecards.yml @@ -5,26 +5,36 @@ Description: Analysis: Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal Variables: - name: psl - freq: monthly_mean + - {name: tos, freq: monthly_mean} Datasets: System: - name: ECMWF-SEAS5 # Mandatory, str: system5c3s system21_m1 system35c3s + - {name: Meteo-France-System8} + - {name: CMCC-SPS3.5} + - {name: UKMO-System602} Multimodel: no # Mandatory, bool: Either yes/true or no/false Reference: - name: ERA5 # Mandatory, str: Reference codename. See docu. + - {name: ERA5} # Mandatory, str: Reference codename. See docu. Time: - sdate: '0301' ## MMDD + sdate: + - '0101' + - '0201' + - '0301' + - '0401' + - '0501' + - '0601' + - '0701' + - '0801' + - '0901' + - '1001' + - '1101' + - '1201' # fcst_year: # Optional, int: Forecast year 'YYYY' hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' hcst_end: '2016' # Mandatory, int: Hindcast end year 'YYYY' - ftime_min: 2 # Mandatory, int: First leadtime time step in months - ftime_max: 2 # Mandatory, int: Last leadtime time step in months + ftime_min: 1 # Mandatory, int: First leadtime time step in months + ftime_max: 6 # Mandatory, int: Last leadtime time step in months Region: - latmin: 20 # Mandatory, int: minimum latitude - latmax: 80 # Mandatory, int: maximum latitude - lonmin: -80 # Mandatory, int: minimum longitude - lonmax: 40 # Mandatory, int: maximum longitude + - {name: 'EU', latmin: 20, latmax: 80, lonmin: -80, lonmax: 40 } Regrid: method: bilinear # Mandatory, str: Interpolation method. See docu. type: "to_system" @@ -32,7 +42,7 @@ Analysis: Workflow: Anomalies: compute: yes - cross_validation: no + cross_validation: yes save: none Indices: NAO: {obsproj: TRUE, save: 'all', plot_ts: TRUE, plot_sp: yes} diff --git a/recipe_ecvs_scorecards_seasonal.yml b/recipe_ecvs_scorecards_seasonal.yml index 023662fc..08a21f44 100644 --- a/recipe_ecvs_scorecards_seasonal.yml +++ b/recipe_ecvs_scorecards_seasonal.yml @@ -5,13 +5,13 @@ Description: Analysis: Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal Variables: - - {name: tas, freq: monthly_mean, units: K} - - {name: tasmin, freq: monthly_mean} - - {name: tasmax, freq: monthly_mean} - - {name: tos, freq: monthly_mean} - - {name: sfcWind, freq: monthly_mean} - - {name: tdps, freq: monthly_mean} - - {name: psl, freq: monthly_mean} + #- {name: tas, freq: monthly_mean, units: K} + - {name: tasmin, freq: monthly_mean} + #- {name: tasmax, freq: monthly_mean} + #- {name: tos, freq: monthly_mean} + #- {name: sfcWind, freq: monthly_mean} + #- {name: tdps, freq: monthly_mean} + #- {name: psl, freq: monthly_mean} #- {name: prlr, freq: monthly_mean, units: ms-1, flux: yes} Datasets: System: diff --git a/tools/divide_recipe.R b/tools/divide_recipe.R index b22274cc..c5d10ed7 100644 --- a/tools/divide_recipe.R +++ b/tools/divide_recipe.R @@ -149,6 +149,8 @@ divide_recipe <- function(recipe) { # Save all recipes in separate YAML files for (reci in 1:length(all_recipes)) { if (reci < 10) { + recipe_number <- paste0("00", reci) + } else if (reci < 100) { recipe_number <- paste0("0", reci) } else { recipe_number <- reci -- GitLab From daafb4c5ec99c20394b212facfd3d9b43ad277b2 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 1 Dec 2023 16:09:50 +0000 Subject: [PATCH 05/34] attempt to add var_long_name to global attributes file --- modules/Saving/R/save_metrics.R | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/Saving/R/save_metrics.R b/modules/Saving/R/save_metrics.R index b8cc95bb..0fd00970 100644 --- a/modules/Saving/R/save_metrics.R +++ b/modules/Saving/R/save_metrics.R @@ -12,9 +12,6 @@ save_metrics <- function(recipe, dictionary <- read_yaml("conf/variable-dictionary.yml") global_attributes <- .get_global_attributes(recipe, archive) - global_attributes <- c(list(var_long_name = - data_cube$attrs$Variable$metadata[[var_name]]$long_name), - global_attributes) ## TODO: Sort out the logic once default behavior is decided if ((!is.null(recipe$Analysis$Workflow$Anomalies$compute)) && (recipe$Analysis$Workflow$Anomalies$compute)) { @@ -68,6 +65,8 @@ save_metrics <- function(recipe, times <- .get_times(store.freq, fcst.horizon, leadtimes, fcst.sdate, calendar) time <- times$time + global_attributes <- c(list(var_long_name = NULL), + global_attributes) # Loop over variable dimension for (var in 1:data_cube$dims[['var']]) { # Subset skill arrays @@ -77,6 +76,10 @@ save_metrics <- function(recipe, drop = 'selected')}) # Generate name of output file variable <- data_cube$attrs$Variable$varName[[var]] + global_attributes$var_long_name <- + data_cube$attrs$Variable$metadata[[variable]]$long_name + + outdir <- get_dir(recipe = recipe, variable = variable) if (!dir.exists(outdir)) { dir.create(outdir, recursive = T) -- GitLab From 60370f24400b66efc9671bded6fd66c55fc10942 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 20 Dec 2023 08:23:06 +0000 Subject: [PATCH 06/34] autosubmit conf --- autosubmit/conf_cerise/autosubmit.yml | 2 +- autosubmit/conf_cerise/expdef.yml | 2 +- autosubmit/conf_cerise/jobs.yml | 4 +- autosubmit/conf_cerise/platforms.yml | 19 ++++++-- conf/autosubmit.yml | 8 ++++ datadownloading/dl-era5.bash | 8 ++-- datadownloading/dl-seasonal.bash | 8 ++-- modules/Scorecards/R/tmp/ScorecardsSingle.R | 19 ++++++-- modules/Scorecards/Scorecards.R | 4 +- modules/Visualization/R/plot_skill_metrics.R | 16 ++++--- recipe_ecvs_scorecards_seasonal.yml | 48 ++++++++++---------- 11 files changed, 87 insertions(+), 51 deletions(-) diff --git a/autosubmit/conf_cerise/autosubmit.yml b/autosubmit/conf_cerise/autosubmit.yml index e4633c3b..b94f9326 100644 --- a/autosubmit/conf_cerise/autosubmit.yml +++ b/autosubmit/conf_cerise/autosubmit.yml @@ -4,7 +4,7 @@ config: MAXWAITINGJOBS: 99 # Default maximum number of jobs to be running at the same time at any platform # Default: 6 - TOTALJOBS: 16 + TOTALJOBS: 20 SAFETYSLEEPTIME: 10 RETRIALS: 0 mail: diff --git a/autosubmit/conf_cerise/expdef.yml b/autosubmit/conf_cerise/expdef.yml index b4327f65..ae93c79a 100644 --- a/autosubmit/conf_cerise/expdef.yml +++ b/autosubmit/conf_cerise/expdef.yml @@ -1,6 +1,6 @@ DEFAULT: EXPID: - HPCARCH: NORD3 + HPCARCH: ATHOS-hpc experiment: DATELIST: MEMBERS: fc0 diff --git a/autosubmit/conf_cerise/jobs.yml b/autosubmit/conf_cerise/jobs.yml index 6f6e6931..4d4127b6 100644 --- a/autosubmit/conf_cerise/jobs.yml +++ b/autosubmit/conf_cerise/jobs.yml @@ -4,12 +4,12 @@ JOBS: RUNNING: chunk WALLCLOCK: NOTIFY_ON: - PLATFORM: ATHOS + PLATFORM: ATHOS-hpc PROCESSORS: scorecards: FILE: autosubmit/auto-scorecards.sh WALLCLOCK: 00:30 - PLATFORM: ATHOS + PLATFORM: ATHOS-ecs NOTIFY_ON: PROCESSORS: 1 DEPENDENCIES: verification diff --git a/autosubmit/conf_cerise/platforms.yml b/autosubmit/conf_cerise/platforms.yml index c3fa6dcb..74e6bda1 100644 --- a/autosubmit/conf_cerise/platforms.yml +++ b/autosubmit/conf_cerise/platforms.yml @@ -1,13 +1,24 @@ ## TODO: Change platform Platforms: - ATHOS: + ATHOS-hpc: TYPE: slurm - HOST: hpc-login + HOST: hpc-batch USER: cyce - PROJECT: spesiccf ## TO BE CHANGED - EC_QUEUE: hpc + PROJECT: copext ## TO BE CHANGED + #EC_QUEUE: hpc SCRATCH_DIR: /ec/res4/scratch/cyce ADD_PROJECT_TO_HOST: false CUSTOM_DIRECTIVES: ["#SBATCH --hint=nomultithread"] QUEUE: np + ATHOS-ecs: + TYPE: slurm + HOST: ecs-batch + USER: cyce + PROJECT: copext ## TO BE CHANGED + #EC_QUEUE: hpc + SCRATCH_DIR: /ec/res4/scratch/cyce + ADD_PROJECT_TO_HOST: false + CUSTOM_DIRECTIVES: ["#SBATCH --hint=nomultithread"] + QUEUE: ef + diff --git a/conf/autosubmit.yml b/conf/autosubmit.yml index 4ff15ffd..dfb2ed84 100644 --- a/conf/autosubmit.yml +++ b/conf/autosubmit.yml @@ -12,3 +12,11 @@ mars: conf_format: yaml experiment_dir: /esarchive/autosubmit/ ## TO BE CHANGED userID: bsc32 ## TO BE CHANGED +cerise: + platform: local ## TO BE CHANGED + module_version: autosubmit/4.0.0b-foss-2015a-Python-3.7.3 ## TO BE CHANGED + auto_version: 4.0.0 + conf_format: yaml + experiment_dir: /home/cyce/autosubmit/ ## TO BE CHANGED + userID: cyce ## TO BE CHANGED + diff --git a/datadownloading/dl-era5.bash b/datadownloading/dl-era5.bash index ddc4a8f8..3ac24a8a 100755 --- a/datadownloading/dl-era5.bash +++ b/datadownloading/dl-era5.bash @@ -13,7 +13,7 @@ set -v #workdir=$1 #model=$2 # freq=$3 -freq="1hour" +freq="mon" workdir=$SCRATCH/cerise/data/ if [[ $freq == "mon" ]]; then @@ -27,12 +27,12 @@ workdir=$SCRATCH/cerise/data/ mkdir -p $workdir/esarchive/recon/ecmwf/era5/$freq_dir cd $workdir/esarchive/recon/ecmwf/era5/$freq_dir - for year in $( seq 1993 2023); do + for year in $( seq 1993 2017); do for mon in $( seq -w 1 12); do if [[ $freq == "mon" ]]; then #tasmax and tasmin doesn't exist - for var in sfcWind tas tos psl prlr tdps; do + for var in sfcWind tos tdps prlr psl; do #sfcWind tas tos psl prlr tdps; do case $var in "sfcWind") code="10m_wind_speed";; "tas") code="2m_temperature";; @@ -60,7 +60,7 @@ c.retrieve( 'month': '$mon', 'time': '00:00', }, - '${var}${suffix}/${var}_${year}${mon}.grib') + '${var}${suffix}/${var}_${year}${mon}.grb') EOF fi #file exists done #var diff --git a/datadownloading/dl-seasonal.bash b/datadownloading/dl-seasonal.bash index 3efea020..548fec3b 100755 --- a/datadownloading/dl-seasonal.bash +++ b/datadownloading/dl-seasonal.bash @@ -17,7 +17,7 @@ freq="mon" workdir=$SCRATCH/cerise/data/ -for model in ecmwf cmcc meteo_france dwd ukmo; do +for model in ukmo cmcc meteo_france; do #ecmwf cmcc meteo_france dwd ukmo; do #model="ecmwf" #cmcc, meteo_france, dwd, cmcc, ukmo case $model in @@ -41,12 +41,12 @@ for model in ecmwf cmcc meteo_france dwd ukmo; do mkdir -p $workdir/esarchive/exp/$model/system$system/$freq_dir cd $workdir/esarchive/exp/$model/system$system/$freq_dir - for year in $( seq 1979 2023); do - for mon in $( seq -w 1 12); do + for year in $( seq 1993 2016); do + for mon in $( seq -w 5 12); do if [[ $freq == "mon" ]]; then - for var in sfcWind tas tos psl prlr tasmin tasmax tdps; do + for var in tasmax tos sfcWind psl tdps prlr; do #sfcWind tas tos psl prlr tasmin tasmax tdps; do case $var in "sfcWind") code="207.128";; "tas") code="167.128";; diff --git a/modules/Scorecards/R/tmp/ScorecardsSingle.R b/modules/Scorecards/R/tmp/ScorecardsSingle.R index 1c010b1c..1d9f76ac 100644 --- a/modules/Scorecards/R/tmp/ScorecardsSingle.R +++ b/modules/Scorecards/R/tmp/ScorecardsSingle.R @@ -45,7 +45,7 @@ ScorecardsSingle <- function(data, system, reference, var, start.year, end.year, start.months, forecast.months, region.names, metrics, legend.breaks = NULL, table.label = NULL, fileout.label = NULL, - legend.white.space = NULL, + legend.white.space = NULL, legend.width = 690, col1.width = NULL, col2.width = NULL, output.path){ @@ -94,12 +94,24 @@ ScorecardsSingle <- function(data, system, reference, var, start.year, end.year, ftime_dim = 'time') ## Load configuration files - sys_dict <- read_yaml("conf/archive.yml")$esarchive + if (is.null(recipe$Run$filesystem)) { + filesystem <- 'esarchive' + } else { + filesystem <- recipe$Run$filesystem + } + sys_dict <- read_yaml("conf/archive.yml")[[filesystem]] var_dict <- read_yaml("conf/variable-dictionary.yml")$vars ## Get scorecards table display names from configuration files var.name <- var_dict[[var]]$long_name - var.units <- var_dict[[var]]$units + for (i in 1:length(recipe$Analysis$Variables)) { + if (recipe$Analysis$Variables[[i]]$name == var) { + var.units <- recipe$Analysis$Variables[[i]]$units + } + } + if (is.null(var.units)) { + var.units <- var_dict[[var]]$units + } ## Get metric long names metric.names.list <- .met_names(metrics, var.units) @@ -129,7 +141,6 @@ ScorecardsSingle <- function(data, system, reference, var, start.year, end.year, ## Legend inputs plot.legend = TRUE label.scale = 1.4 - legend.width = 555 legend.height = 50 ## Data display inputs diff --git a/modules/Scorecards/Scorecards.R b/modules/Scorecards/Scorecards.R index 0dbcd921..cfda527c 100644 --- a/modules/Scorecards/Scorecards.R +++ b/modules/Scorecards/Scorecards.R @@ -70,6 +70,7 @@ Scorecards <- function(recipe) { table.label <- recipe$Analysis$Workflow$Scorecards$table_label fileout.label <- recipe$Analysis$Workflow$Scorecards$fileout_label legend.white.space <- recipe$Analysis$Workflow$Scorecards$legend_white_space + legend.width <- recipe$Analysis$Workflow$Scorecards$legend_width col1.width <- recipe$Analysis$Workflow$Scorecards$col1_width col2.width <- recipe$Analysis$Workflow$Scorecards$col2_width calculate.diff <- recipe$Analysis$Workflow$Scorecards$calculate_diff @@ -142,7 +143,8 @@ Scorecards <- function(recipe) { metrics = metrics.visualize, table.label = table.label, fileout.label = fileout.label, - legend.white.space = legend.white.space, + legend.white.space = legend.white.space, + legend.width = legend.width, col1.width = col1.width, col2.width = col2.width, output.path = output.path) diff --git a/modules/Visualization/R/plot_skill_metrics.R b/modules/Visualization/R/plot_skill_metrics.R index 56aac41b..a2f842cc 100644 --- a/modules/Visualization/R/plot_skill_metrics.R +++ b/modules/Visualization/R/plot_skill_metrics.R @@ -8,7 +8,7 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, # skill_metrics: list of named skill metrics arrays # outdir: output directory # significance: T/F, whether to display the significance dots in the plots - + var_dict <- read_yaml("conf/variable-dictionary.yml") # Abort if frequency is daily if (recipe$Analysis$Variables$freq %in% c("daily", "daily_mean")) { error(recipe$Run$logger, "Visualization functions not yet implemented @@ -148,12 +148,12 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, } # Get variable name and long name var_name <- data_cube$attrs$Variable$varName[[var]] - var_long_name <- var_dict[[var]]$long_name + var_long_name <- var_dict$vars[[var_name]]$long_name #var_long_name <- data_cube$attrs$Variable$metadata[[var_name]]$long_name # Multi-panel or single-panel plots if (recipe$Analysis$Workflow$Visualization$multi_panel) { # Define titles - toptitle <- paste0(system_name, " / ", str_to_title(var_long_name), + toptitle <- paste0(system_name, " / ", var_long_name, #str_to_title(var_long_name), "\n", display_name, " / ", hcst_period) titles <- as.vector(months) ## TODO: Combine PlotLayout with PlotRobinson? @@ -171,7 +171,7 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, cols = cols, col_inf = col_inf, col_sup = col_sup, - fileout = paste0(outfile, ".png"), + fileout = paste0(outfile, ".ps"), bar_label_digits = 3, bar_extra_margin = rep(0.9, 4), extra_margin = rep(1, 4), @@ -242,7 +242,7 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, "Reference: ", recipe$Analysis$Datasets$Reference, "\n", significance_caption) } - fileout <- paste0(outfile, "_ft", forecast_time, ".png") + fileout <- paste0(outfile, "_ft", forecast_time) # Plot info(recipe$Run$logger, paste("Plotting", display_name)) @@ -250,7 +250,11 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, do.call(fun, args = c(base_args, list(toptitle = toptitle, - fileout = fileout))) + fileout = paste0(fileout, ".ps")))) + system(paste("convert", paste0(fileout, ".ps"), "-rotate 90", paste0(fileout, ".png"))) + system(paste("convert", paste0(fileout, ".png"), + "-density 300 -background white", + paste0(fileout, ".png"))) } } } diff --git a/recipe_ecvs_scorecards_seasonal.yml b/recipe_ecvs_scorecards_seasonal.yml index 08a21f44..4fad5f80 100644 --- a/recipe_ecvs_scorecards_seasonal.yml +++ b/recipe_ecvs_scorecards_seasonal.yml @@ -5,19 +5,19 @@ Description: Analysis: Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal Variables: - #- {name: tas, freq: monthly_mean, units: K} - - {name: tasmin, freq: monthly_mean} - #- {name: tasmax, freq: monthly_mean} - #- {name: tos, freq: monthly_mean} + - {name: tas, freq: monthly_mean, units: K} + #- {name: tasmin, freq: monthly_mean, units: K} + #- {name: tasmax, freq: monthly_mean, units: K} + #- {name: tos, freq: monthly_mean, units: K} #- {name: sfcWind, freq: monthly_mean} #- {name: tdps, freq: monthly_mean} - #- {name: psl, freq: monthly_mean} + #- {name: psl, freq: monthly_mean, units: hPa} #- {name: prlr, freq: monthly_mean, units: ms-1, flux: yes} Datasets: System: - {name: Meteo-France-System8} - - {name: CMCC-SPS3.5} - - {name: UKMO-System602} + # - {name: CMCC-SPS3.5} + # - {name: UKMO-System602} Multimodel: no # Mandatory, bool: Either yes/true or no/false Reference: - {name: ERA5} # Mandatory, str: Reference codename. See docu. @@ -26,21 +26,21 @@ Analysis: - '0101' - '0201' - '0301' - - '0401' - - '0501' - - '0601' - - '0701' - - '0801' - - '0901' - - '1001' - - '1101' - - '1201' + #- '0401' + #- '0501' + #- '0601' + # - '0701' + # - '0801' + #- '0901' + #- '1001' + #- '1101' + #- '1201' hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' hcst_end: '2016' # Mandatory, int: Hindcast end year 'YYYY' ftime_min: 1 # Mandatory, int: First leadtime time step in months ftime_max: 6 # Mandatory, int: Last leadtime time step in months Region: - - {name: "EU", latmin: 0, latmax: 20, lonmin: 0, lonmax: 45} + - {name: "EU", latmin: -90, latmax: 90, lonmin: 0, lonmax: 360} Regrid: method: bilinear # Mandatory, str: Interpolation method. See docu. type: "to_system" @@ -78,6 +78,7 @@ Analysis: inf_to_na: yes table_label: NULL fileout_label: NULL + legend_width: 690 col1_width: NULL col2_width: NULL calculate_diff: FALSE @@ -91,17 +92,16 @@ Run: filesystem: cerise output_dir: /perm/cyce/phase0/ # replace with the directory where you want to save the outputs code_dir: /ec/res4/scratch/cyce/cerise/sunset/ # replace with the directory where your code is - autosubmit: no + autosubmit: yes # fill only if using autosubmit auto_conf: - script: /esarchive/scratch/nperez/git3/sunset/full_ecvs_scorecards.R # replace with the path to your script - expid: a68v # replace with your EXPID - hpc_user: bsc32339 # replace with your hpc username + script: /ec/res4/scratch/cyce/cerise/sunset/full_ecvs_scorecards.R # replace with the path to your script + expid: a000 # replace with your EXPID + hpc_user: cyce # replace with your hpc username wallclock: 02:00 # hh:mm - processors_per_job: 4 - platform: nord3v2 + processors_per_job: 128 + platform: ATHOS-hpc email_notifications: yes # enable/disable email notifications. Change it if you want to. email_address: nuria.perez@bsc.es # replace with your email address notify_completed: yes # notify me by email when a job finishes notify_failed: yes # notify me by email when a job fails - -- GitLab From b0e4353db98492d49a5af6508d3236f95a785574 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 25 Jan 2024 11:23:30 +0100 Subject: [PATCH 07/34] adjusting plots --- full_NAO_scorecards.R | 67 +++++++++++--- full_ecvs_scorecards.R | 42 ++++++++- .../Units/R/transform_units_precipitation.R | 6 +- modules/Visualization/R/plot_skill_metrics.R | 10 +-- modules/Visualization/R/tmp/PlotRobinson.R | 8 +- recipe_NAO_test.yml | 89 +++++++++++++++++++ recipe_ecvs_scorecards_seasonal.yml | 39 ++++---- recipe_tas_scorecards_seasonal.yml | 4 +- 8 files changed, 222 insertions(+), 43 deletions(-) create mode 100644 recipe_NAO_test.yml diff --git a/full_NAO_scorecards.R b/full_NAO_scorecards.R index b5130b22..b1c5006a 100644 --- a/full_NAO_scorecards.R +++ b/full_NAO_scorecards.R @@ -3,6 +3,8 @@ source("modules/Loading/Loading.R") #source("modules/Units/Units.R") source("modules/Saving/Saving.R") source("modules/Visualization/Visualization.R") +source("modules/Units/Units.R") + args = commandArgs(trailingOnly = TRUE) recipe_file <- args[1] #recipe_file <- "recipe_NAO_scorecards.yml" @@ -10,9 +12,10 @@ recipe <- read_atomic_recipe(recipe_file) #recipe <- prepare_outputs(recipe_file) # Load datasets data <- Loading(recipe) -#data <- Units(recipe, data) +data <- Units(recipe, data) # Full-cross-val workflow sdate_dim <- dim(data$hcst$data)['syear'] +nftime <- dim(data$hcst$data)['time'] cross <- CSTools:::.make.eval.train.dexes('leave-one-out', sdate_dim, NULL) # Paralelized: loops <- array(1:length(cross), c(loop = length(cross))) @@ -22,7 +25,28 @@ loops <- array(1:length(cross), c(loop = length(cross))) source("modules/Indices/R/tmp/EOF.R") source("modules/Indices/R/tmp/ProjectField.R") + # subset NAO region (because grib is global data): + sub <- SelBox(data$hcst$data, + lon = as.vector(data$hcst$coords$longitude), + lat = as.vector(data$hcst$coords$latitude), + region = c(lonmin = -80, lonmax = 40, + latmin = 20, latmax = 80), + latdim = 'latitude', londim = 'longitude') + data$hcst$data <- sub$data + data$hcst$coords$longitude <- sub$lon + data$hcst$coords$latitude <- sub$lat + sub <- SelBox(data$obs$data, + lon = as.vector(data$obs$coords$longitude), + lat = as.vector(data$obs$coords$latitude), + region = c(lonmin = -80, lonmax = 40, + latmin = 20, latmax = 80), + latdim = 'latitude', londim = 'longitude') + data$obs$data <- sub$data + data$obs$coords$longitude <- sub$lon + data$obs$coords$latitude <- sub$lat + + res <- Apply(list(loops), target = NULL, fun = function(t) { # subset years: @@ -50,8 +74,8 @@ res <- Apply(list(loops), target = NULL, memb_dim = 'ensemble', space_dim = c('latitude', 'longitude'), ftime_dim = 'time', - lat = data$obs$attrs$Variable$metadata$lat, - lon = data$obs$attrs$Variable$metadata$lon, + lat = data$obs$coords$latitude, + lon = data$obs$coords$longitude, ncores = recipe$Analysis$ncores) nao_obs_ev <- NAO(exp = ano_hcst_tr, obs = ano_obs_tr, exp_cor = ano_obs_ev, @@ -59,8 +83,8 @@ res <- Apply(list(loops), target = NULL, memb_dim = 'ensemble', space_dim = c('latitude', 'longitude'), ftime_dim = 'time', - lat = data$obs$attrs$Variable$metadata$lat, - lon = data$obs$attrs$Variable$metadata$lon), + lat = data$obs$coords$latitude, + lon = data$obs$coords$longitude, ncores = recipe$Analysis$ncores)$exp_cor #Standarisation: # Need the nao_hcst (for the train.dexes) to standarize the eval.dexes? @@ -72,7 +96,7 @@ res <- Apply(list(loops), target = NULL, res <- apply(y, c(1,2), function(z) {(z-means)/sd})}, ncores = recipe$Analysis$ncores)$output1 nao_obs_ev <- Apply(list(nao$obs, nao_obs_ev), - target_dims = list('syear', c('syear','ensemble')), + target_dims = c('syear','ensemble'), fun = function(x, y) { sd <- sqrt(var(as.vector(x), na.rm = TRUE)) means <- mean(as.vector(x), na.rm = TRUE) @@ -107,20 +131,27 @@ res <- Apply(list(loops), target = NULL, lims_nao_hcst_tr = lims_nao_hcst_tr, lims_nao_obs_tr = lims_nao_obs_tr)) }, ncores = 1) # RPS -source("/esarchive/scratch/nperez/git2/s2dv/R/GetProbs.R") +source("GetProbs.R") nao_hcst_probs_ev <- GetProbs(res$nao_hcst_ev, time_dim = 'loop', prob_thresholds = NULL, - prob_dim = 'probs', indices_for_quantiles = NULL, - memb_dim = 'ensemble', abs_thresholds = res$lims_ano_hcst_tr, + bin_dim_abs = 'probs', indices_for_quantiles = NULL, + memb_dim = 'ensemble', abs_thresholds = res$lims_nao_hcst_tr, ncores = recipe$Analysis$ncores) +res$lims_nao_obs_tr <- Subset(res$lims_nao_obs_tr, indices = 1, along = 'ensemble', + drop = 'selected') nao_obs_probs_ev <- GetProbs(res$nao_obs_ev, time_dim = 'loop', prob_thresholds = NULL, - prob_dim = 'probs', indices_for_quantiles = NULL, - memb_dim = 'ensemble', abs_thresholds = res$lims_ano_obs_tr, + bin_dim_abs = 'probs', indices_for_quantiles = NULL, + memb_dim = 'ensemble', abs_thresholds = res$lims_nao_obs_tr, ncores = recipe$Analysis$ncores) rps <- RPS(exp = nao_hcst_probs_ev, obs = nao_obs_probs_ev, memb_dim = NULL, cat_dim = 'probs', cross.val = FALSE, time_dim = 'loop', ncores = recipe$Analysis$ncores) +source("modules/Skill/R/RPS_clim.R") +rps_clim <- Apply(list(nao_obs_probs_ev), + target_dims = c('probs', 'syear'), + RPS_clim, bin_dim_abs = 'probs', cross.val = FALSE)$output1 + # RPSS rpss <- RPSS(exp = nao_hcst_probs_ev, obs = nao_obs_probs_ev, time_dim = 'loop', memb_dim = NULL, @@ -134,10 +165,20 @@ rpss <- RPSS(exp = nao_hcst_probs_ev, obs = nao_obs_probs_ev, crps <- CRPS(exp = res$nao_hcst_ev, obs = res$nao_obs_ev, time_dim = 'loop', memb_dim = 'ensemble', ncores = recipe$Analysis$ncores) +res$nao_obs_ev <- Subset(res$nao_obs_ev, indices = 1, along = 'syear', drop = 'selected') +crps_clim <- CRPS(exp = res$nao_obs_tr, obs = res$nao_obs_ev, + time_dim = 'loop', memb_dim = 'syear', + ncores = recipe$Analysis$ncores) + # CRPSS -crpss <- CRPSS(exp = res$nao_hcst_ev, obs = res$nao_obs_ev, +ref <- res$nao_obs_tr +dim(ref) <- c(ensemble = as.numeric(sdate_dim) -1, + nftime, loop = as.numeric(sdate_dim)) +res$nao_hcst_ev <- Subset(res$nao_hcst_ev, indices = 1, along = 'syear', drop = 'selected') + +crpss <- CRPSS(exp = res$nao_hcst_ev, obs = res$nao_obs_ev, ref = ref, memb_dim = 'ensemble', - time_dim = 'loop', clim.cross.val = TRUE, + time_dim = 'loop', clim.cross.val = FALSE, ncores = recipe$Analysis$ncores) # Corr diff --git a/full_ecvs_scorecards.R b/full_ecvs_scorecards.R index 5dcf0972..3116feb6 100644 --- a/full_ecvs_scorecards.R +++ b/full_ecvs_scorecards.R @@ -12,6 +12,15 @@ recipe <- read_atomic_recipe(recipe_file) # Load datasets data <- Loading(recipe) data <- Units(recipe, data) +data_summary(data$hcst, recipe) +data_summary(data$obs, recipe) + +if (names(data$hcst$attrs$Variable$metadata) == 'prlr') { + source("modules/Units/R/deaccumulate.R") + data$hcst <- deaccumulate(data$hcst, ncores = recipe$Analysis$ncores) + data_summary(data$hcst, recipe) +} + # Full-cross-val workflow sdate_dim <- dim(data$hcst$data)['syear'] nmemb <- dim(data$hcst$data)['ensemble'] @@ -23,6 +32,15 @@ info(recipe$Run$logger, paste("ftime", nftime)) info(recipe$Run$logger, paste(dim(data$obs$data))) +info(recipe$Run$logger, + paste(as.vector(data$hcst$coords$longitude))) +info(recipe$Run$logger, + paste(as.vector(data$obs$coords$longitude))) +info(recipe$Run$logger, + paste(as.vector(data$hcst$coords$latitude))) +info(recipe$Run$logger, + paste(as.vector(data$obs$coords$latitude))) + cross <- CSTools:::.make.eval.train.dexes('leave-one-out', sdate_dim, NULL) @@ -216,6 +234,21 @@ mean_bias <- Bias(data$hcst$data, data$obs$data, time_dim = 'syear', memb_dim = 'ensemble', ncores = recipe$Analysis$ncores) + +mean_bias_sign <- Apply(list(data$hcst$data, data$obs$data), + target_dims = list(c('syear', 'ensemble'), 'syear'), + fun = function(x,y) { + if (!(any(is.na(x)) || any(is.na(y)))) { + res <- t.test(y, apply(x, 1, mean, na.rm = T))$p.value + res[res >= 0.5] <- FALSE + res[res < 0.5] <- TRUE + } else { + res <- FALSE + } + res <- as.logical(res) + return(res)}, + ncores = sdate_dim)$output1 + # Spread error ratio obs_noensdim <- ClimProjDiags::Subset(res$ano_obs_ev, "ensemble", 1, drop = "selected") @@ -226,7 +259,14 @@ enssprerr <- easyVerification::veriApply(verifun = 'EnsSprErr', ensdim = which(names(dim(res$ano_hcst_ev))=='ensemble'), na.rm = FALSE, ncpus = recipe$Analysis$ncores) -skill_metrics <- list(mean_bias = mean_bias, enscorr = enscorr$corr, +if (any(is.na(rpss$sing))) { + info(recipe$Run$logger, + "RPSS NA") + + rpss$sing[is.na(rpss$sign)] <- FALSE +} +skill_metrics <- list(mean_bias = mean_bias, mean_bias_significance = mean_bias_sign, + enscorr = enscorr$corr, enscorr_significance = enscorr$sign, enssprerr = enssprerr, rps = rps, rps_clim = rps_clim, crps = crps, crps_clim = crps_clim, rpss = rpss$rpss, rpss_significance = rpss$sign, #crps = crps, diff --git a/modules/Units/R/transform_units_precipitation.R b/modules/Units/R/transform_units_precipitation.R index 5cc1e812..4ddc5479 100644 --- a/modules/Units/R/transform_units_precipitation.R +++ b/modules/Units/R/transform_units_precipitation.R @@ -74,9 +74,13 @@ transform_units_precipitation <- function(data, original_units, new_units, time_pos <- which(lapply(data[[1]]$attrs$Variable$metadata[[var_name]]$dim, function(x) {x$name}) == 'time') cal <- tolower(data[[1]]$attrs$Variable$metadata[[var_name]]$dim[[time_pos]]$calendar) + # grib files doens't show cal on attr + if (is.null(cal) || length(cal) < 1) { + cal <- 'standard' + } data_list[[var_index]] <- Apply(list(data_list[[var_index]], data[[1]]$attrs$Dates), - target_dim = list(c('syear'), c('syear')), + target_dim = 'sday', extra_info = list(cal = cal, days_in_month = .days_in_month), fun = function(x, y) { date <- as.Date(y, "%Y-%m-%d") diff --git a/modules/Visualization/R/plot_skill_metrics.R b/modules/Visualization/R/plot_skill_metrics.R index a2f842cc..1e2fb4e5 100644 --- a/modules/Visualization/R/plot_skill_metrics.R +++ b/modules/Visualization/R/plot_skill_metrics.R @@ -250,11 +250,11 @@ plot_skill_metrics <- function(recipe, data_cube, skill_metrics, do.call(fun, args = c(base_args, list(toptitle = toptitle, - fileout = paste0(fileout, ".ps")))) - system(paste("convert", paste0(fileout, ".ps"), "-rotate 90", paste0(fileout, ".png"))) - system(paste("convert", paste0(fileout, ".png"), - "-density 300 -background white", - paste0(fileout, ".png"))) + fileout = paste0(fileout, ".png")))) +# system(paste("convert", paste0(fileout, ".ps"), "-rotate 90", paste0(fileout, ".png"))) +# system(paste("convert", paste0(fileout, ".png"), +# "-density 300 -background white", +# paste0(fileout, ".png"))) } } } diff --git a/modules/Visualization/R/tmp/PlotRobinson.R b/modules/Visualization/R/tmp/PlotRobinson.R index bd427448..e066852c 100644 --- a/modules/Visualization/R/tmp/PlotRobinson.R +++ b/modules/Visualization/R/tmp/PlotRobinson.R @@ -118,11 +118,11 @@ PlotRobinson <- function(data, lon, lat, lon_dim = NULL, lat_dim = NULL, target_proj = 54030, legend = 's2dv', style = 'point', dots = NULL, mask = NULL, brks = NULL, cols = NULL, bar_limits = NULL, triangle_ends = NULL, col_inf = NULL, col_sup = NULL, colNA = NULL, - color_fun = clim.palette(), bar_extra_margin = rep(0, 4), vertical = TRUE, + color_fun = clim.palette(), bar_extra_margin = c(3.5, 0, 3.5, 0), vertical = TRUE, toptitle = NULL, caption = NULL, units = NULL, crop_coastlines = NULL, - point_size = "auto", title_size = 16, dots_size = 0.5, + point_size = "auto", title_size = 10, dots_size = 0.2, dots_shape = 47, coastlines_width = 0.3, - fileout = NULL, width = 8, height = 4, size_units = "in", + fileout = NULL, width = 8, height = 5, size_units = "in", res = 300) { # Sanity check @@ -234,12 +234,14 @@ PlotRobinson <- function(data, lon, lat, lon_dim = NULL, lat_dim = NULL, if (!identical(dim(mask), dim(data))) { stop("Parameter 'mask' must have the same dimensions as 'data'.") } else if (is.numeric(mask)) { + mask[which(is.na(mask))] <- 0 if (all(mask %in% c(0, 1))) { mask <- array(as.logical(mask), dim = dim(mask)) } else { stop("Parameter 'mask' must have only TRUE/FALSE or 0/1.") } } else if (is.logical(mask)) { + mask[which(is.na(mask))] <- F if (!all(mask %in% c(T, F))) { stop("Parameter 'mask' must have only TRUE/FALSE or 0/1.") } diff --git a/recipe_NAO_test.yml b/recipe_NAO_test.yml new file mode 100644 index 00000000..091b913c --- /dev/null +++ b/recipe_NAO_test.yml @@ -0,0 +1,89 @@ +Description: + Author: Nuria Perez-Zanon + Info: Cerise phase 0 assessment NAO index + +Analysis: + Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal + Variables: + name: psl + freq: monthly_mean + Datasets: + System: + - {name: Meteo-France-System8} + # - {name: CMCC-SPS3.5} + # - {name: UKMO-System602} + Multimodel: no # Mandatory, bool: Either yes/true or no/false + Reference: + - {name: ERA5} # Mandatory, str: Reference codename. See docu. + Time: + sdate: + - '0101' + # - '0201' + #- '0301' + #- '0401' + # - '0501' + # - '0601' + # - '0701' + # - '0801' + # - '0901' + # - '1001' + # - '1101' + #- '1201' + # fcst_year: # Optional, int: Forecast year 'YYYY' + hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' + hcst_end: '1996' # Mandatory, int: Hindcast end year 'YYYY' + ftime_min: 1 # Mandatory, int: First leadtime time step in months + ftime_max: 3 # Mandatory, int: Last leadtime time step in months + Region: + - {name: 'EU', latmin: 20, latmax: 80, lonmin: -80, lonmax: 40 } + Regrid: + method: bilinear # Mandatory, str: Interpolation method. See docu. + type: "to_system" + #type: /esarchive/scratch/nmilders/gitlab/git_clones/auto-s2s/conf/grid_description.txt #'r360x180' # Mandatory, str: to_system, to_reference, or CDO-accepted grid. + Workflow: + Anomalies: + compute: yes + cross_validation: yes + save: none + Indices: + NAO: {obsproj: TRUE, save: 'all', plot_ts: TRUE, plot_sp: yes} + Calibration: + method: raw # Mandatory, str: Calibration method. See docu. + save: none + Skill: + metric: mean_bias EnsCorr rps rpss crps crpss EnsSprErr + save: 'all' + Probabilities: + percentiles: [[1/3, 2/3], [1/10, 9/10]] # frac: Quantile thresholds. + save: none + Indicators: + index: no + Scorecards: + execute: yes # yes/no + regions: + - 'NAO' + #Extra-tropical NH: {lon.min: 0, lon.max: 360, lat.min: 30, lat.max: 90} + #Tropics: {lon.min: 0, lon.max: 360, lat.min: -30, lat.max: 30} + #Extra-tropical SH : {lon.min: 0, lon.max: 360, lat.min: -90, lat.max: -30} + start_months: 'all' + metric: mean_bias enscorr rpss crpss EnsSprErr + metric_aggregation: 'skill' + inf_to_na: yes + table_label: NULL + fileout_label: NULL + legend_width: 690 + col1_width: NULL + col2_width: NULL + calculate_diff: FALSE + ncores: 4 # Optional, int: number of cores, defaults to 1 + remove_NAs: # Optional, bool: Whether NAs are removed, defaults to FALSE + Output_format: scorecards + logo: yes +Run: + Loglevel: INFO + Terminal: yes + output_dir: /perm/cyce/phase0/ + code_dir: /ec/res4/scratch/cyce/cerise/sunset/ + filesystem: cerise + + diff --git a/recipe_ecvs_scorecards_seasonal.yml b/recipe_ecvs_scorecards_seasonal.yml index 4fad5f80..289bc273 100644 --- a/recipe_ecvs_scorecards_seasonal.yml +++ b/recipe_ecvs_scorecards_seasonal.yml @@ -5,19 +5,19 @@ Description: Analysis: Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal Variables: - - {name: tas, freq: monthly_mean, units: K} - #- {name: tasmin, freq: monthly_mean, units: K} - #- {name: tasmax, freq: monthly_mean, units: K} - #- {name: tos, freq: monthly_mean, units: K} - #- {name: sfcWind, freq: monthly_mean} - #- {name: tdps, freq: monthly_mean} + # - {name: tas, freq: monthly_mean, units: K} + # - {name: tasmin, freq: monthly_mean, units: K} + # - {name: tasmax, freq: monthly_mean, units: K} + - {name: tos, freq: monthly_mean, units: K} + # - {name: sfcWind, freq: monthly_mean, units: ms-1} + #- {name: tdps, freq: monthly_mean, units: K} #- {name: psl, freq: monthly_mean, units: hPa} #- {name: prlr, freq: monthly_mean, units: ms-1, flux: yes} Datasets: System: - {name: Meteo-France-System8} - # - {name: CMCC-SPS3.5} - # - {name: UKMO-System602} + - {name: CMCC-SPS3.5} + - {name: UKMO-System602} Multimodel: no # Mandatory, bool: Either yes/true or no/false Reference: - {name: ERA5} # Mandatory, str: Reference codename. See docu. @@ -26,15 +26,15 @@ Analysis: - '0101' - '0201' - '0301' - #- '0401' - #- '0501' - #- '0601' - # - '0701' - # - '0801' - #- '0901' - #- '1001' - #- '1101' - #- '1201' + - '0401' + - '0501' + - '0601' + - '0701' + - '0801' + - '0901' + - '1001' + - '1101' + - '1201' hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' hcst_end: '2016' # Mandatory, int: Hindcast end year 'YYYY' ftime_min: 1 # Mandatory, int: First leadtime time step in months @@ -66,6 +66,7 @@ Analysis: Visualization: plots: skill_metrics #forecast_ensemble_mean most_likely_terciles multi_panel: no + projection: Robinson Scorecards: execute: yes # yes/no regions: @@ -82,7 +83,7 @@ Analysis: col1_width: NULL col2_width: NULL calculate_diff: FALSE - ncores: 4 # Optional, int: number of cores, defaults to 1 + ncores: 24 # Optional, int: number of cores, defaults to 1 remove_NAs: # Optional, bool: Whether NAs are removed, defaults to FALSE Output_format: scorecards logo: yes @@ -92,7 +93,7 @@ Run: filesystem: cerise output_dir: /perm/cyce/phase0/ # replace with the directory where you want to save the outputs code_dir: /ec/res4/scratch/cyce/cerise/sunset/ # replace with the directory where your code is - autosubmit: yes + autosubmit: no # fill only if using autosubmit auto_conf: script: /ec/res4/scratch/cyce/cerise/sunset/full_ecvs_scorecards.R # replace with the path to your script diff --git a/recipe_tas_scorecards_seasonal.yml b/recipe_tas_scorecards_seasonal.yml index e755f335..e50b6055 100644 --- a/recipe_tas_scorecards_seasonal.yml +++ b/recipe_tas_scorecards_seasonal.yml @@ -7,6 +7,8 @@ Analysis: Variables: name: tos freq: monthly_mean + units: K + flux: no Datasets: System: name: Meteo-France-System8 @@ -18,7 +20,7 @@ Analysis: hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' hcst_end: '1996' # Mandatory, int: Hindcast end year 'YYYY' ftime_min: 1 # Mandatory, int: First leadtime time step in months - ftime_max: 2 # Mandatory, int: Last leadtime time step in months + ftime_max: 3 # Mandatory, int: Last leadtime time step in months Region: latmin: 0 latmax: 90 -- GitLab From a5c8d510f42dc4371882894b6c44a8c8dc8efce4 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 7 Feb 2024 16:23:07 +0000 Subject: [PATCH 08/34] grb loading for missing 1993 sdate --- datadownloading/dl-mask_seasonal.bash | 119 ++++++++++++++++++ datadownloading/dl-seasonal.bash | 4 +- full_ecvs_scorecards.R | 23 ++-- mask.R | 2 + modules/Loading/Loading.R | 1 + modules/Loading/R/GRIB/GrbLoad.R | 175 +++++--------------------- modules/Loading/R/GRIB/grbload.R | 156 +++++++++++++++++++++++ modules/Loading/R/load_GRIB.R | 1 - recipe_ecvs_scorecards_seasonal.yml | 8 +- recipe_tas_scorecards_seasonal.yml | 4 +- rsz_rsz_bsc_logo.png | Bin 0 -> 48040 bytes 11 files changed, 331 insertions(+), 162 deletions(-) create mode 100755 datadownloading/dl-mask_seasonal.bash create mode 100644 mask.R create mode 100644 modules/Loading/R/GRIB/grbload.R create mode 100644 rsz_rsz_bsc_logo.png diff --git a/datadownloading/dl-mask_seasonal.bash b/datadownloading/dl-mask_seasonal.bash new file mode 100755 index 00000000..733d77d4 --- /dev/null +++ b/datadownloading/dl-mask_seasonal.bash @@ -0,0 +1,119 @@ +#!/bin/bash + + + +#module load ecmwfapi +module load conda/22.11.1-2 +conda activate condaCerise +export LD_LIBRARY_PATH=/perm/cyce/conda/envs/condaCerise/lib + +set -v + + +#workdir=$1 +#model=$2 +# freq=$3 +freq="mon" +workdir=$SCRATCH/cerise/data/ + + +for model in ukmo cmcc meteo_france; do #ecmwf cmcc meteo_france dwd ukmo; do +#model="ecmwf" #cmcc, meteo_france, dwd, cmcc, ukmo + + case $model in + + "ecmwf") origin="ecmf" ; system="51";; + "meteo_france") origin="lfpw" ; system="8";; + "dwd") origin="edzw" ; system="21";; + "cmcc") origin="cmcc" ; system="35" ;; + "ukmo") origin="egrr" ; system="602" ;; + esac + + + if [[ $freq == "mon" ]]; then + freq_dir="monthly_mean" + suffix="_f6h" + else + freq_dir="6hourly" + suffix="" + fi + + mkdir -p $workdir/esarchive/exp/$model/system$system/$freq_dir + cd $workdir/esarchive/exp/$model/system$system/$freq_dir + + for year in $( seq 1993 2016); do + for mon in $( seq -w 10); do + + if [[ $freq == "mon" ]]; then + + for var in land-sea; do + case $var in + "land-sea") code="172";; + esac + + mkdir -p ${var}${suffix} + +# if [[ ! -f ${var}${suffix}/${var}_${year}${mon}01.grb ]] ; then +mars << EOF +retrieve, +class=c3, +date=$year-$mon-01, +expver=1, +fcmonth=1/2/3/4/5/6, +levtype=sfc, +method=1, +number=0/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50, +origin=$origin, +param=$code, +stream=msmm, +system=$system, +time=00:00:00, +type=fcmean, +expect=any, +target='${var}_${year}${mon}01.grb' + +EOF + # cdo shifttime,-15days ${var}${suffix}/${var}_${year}${mon}01.grb ${var}${suffix}/${var}_${year}${mon}01.grb2 + # mv ${var}${suffix}/${var}_${year}${mon}01.grb2 ${var}${suffix}/${var}_${year}${mon}01.grb +# fi #file exists + done #var + else #freq 6h + for var in sfcWind tas tos psl prlr tasmin tasmax tdps; do + case $var in + "sfcWind") code="207.128";; + "tas") code="167.128";; + "tos") code="34.128";; + "psl") code="151.128";; + "prlr") code="228.172";; + "tasmin") code="52.128";; + "tasmax") code="51.128";; + "tdps") code="168.128";; + esac + + mkdir -p ${var}${suffix} + if [[ ! -f ${var}${suffix}/${var}_${year}${mon}01.grb ]] ; then +mars << EOF +retrieve, +class=c3, +date=$year-$mon-01 +expver=1, +step=1/to/5160/by/6, +levtype=sfc, +method=1, +number=0/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50, +origin=$origin, +param=$code, +stream=mmsf, +system=$system, +time=00:00:00, +type=fc, +expect=any, +target="${var}${suffix}/${var}_${year}${mon}01.grb" +EOF + + fi #file exists + done #var + fi #freq + done #year + done #mon +done #model diff --git a/datadownloading/dl-seasonal.bash b/datadownloading/dl-seasonal.bash index 548fec3b..185ee061 100755 --- a/datadownloading/dl-seasonal.bash +++ b/datadownloading/dl-seasonal.bash @@ -42,7 +42,7 @@ for model in ukmo cmcc meteo_france; do #ecmwf cmcc meteo_france dwd ukmo; do cd $workdir/esarchive/exp/$model/system$system/$freq_dir for year in $( seq 1993 2016); do - for mon in $( seq -w 5 12); do + for mon in $( seq -w 1 12); do if [[ $freq == "mon" ]]; then @@ -80,7 +80,7 @@ expect=any, target='${var}${suffix}/${var}_${year}${mon}01.grb' EOF - cdo shifttime,-15days ${var}${suffix}/${var}_${year}${mon}01.grb ${var}${suffix}/${var}_${year}${mon}01.grb2 + cdo shifttime,-5days ${var}${suffix}/${var}_${year}${mon}01.grb ${var}${suffix}/${var}_${year}${mon}01.grb2 mv ${var}${suffix}/${var}_${year}${mon}01.grb2 ${var}${suffix}/${var}_${year}${mon}01.grb fi #file exists done #var diff --git a/full_ecvs_scorecards.R b/full_ecvs_scorecards.R index 3116feb6..db72b2fd 100644 --- a/full_ecvs_scorecards.R +++ b/full_ecvs_scorecards.R @@ -238,16 +238,19 @@ mean_bias <- Bias(data$hcst$data, data$obs$data, mean_bias_sign <- Apply(list(data$hcst$data, data$obs$data), target_dims = list(c('syear', 'ensemble'), 'syear'), fun = function(x,y) { - if (!(any(is.na(x)) || any(is.na(y)))) { - res <- t.test(y, apply(x, 1, mean, na.rm = T))$p.value - res[res >= 0.5] <- FALSE - res[res < 0.5] <- TRUE - } else { - res <- FALSE - } - res <- as.logical(res) - return(res)}, + if (!(any(is.na(x)) || any(is.na(y)))) { + res <- t.test(x = y, + y = apply(x, 1, mean, na.rm = T), + alternative = "two.sided")$p.value + } else { + res <- NA + } + return(res)}, ncores = sdate_dim)$output1 +mean_bias_sign <- mean_bias_sign > 0.05 +#PlotEquiMap(mean_bias[1,1,1,1,1,,], lat = data$hcst$coords$latitude, +# lon = data$hcst$coords$longitude, +# dots = mean_bias_sign[1,1,1,1,1,,,1]) # Spread error ratio obs_noensdim <- ClimProjDiags::Subset(res$ano_obs_ev, "ensemble", 1, @@ -305,5 +308,5 @@ data$hcst$coords$longitude <- -179:180 Visualization(recipe, data, skill_metrics, significance = TRUE) source("tools/add_logo.R") -add_logo(recipe, "tools/BSC_logo_95.jpg") +add_logo(recipe, "rsz_rsz_bsc_logo.png") diff --git a/mask.R b/mask.R new file mode 100644 index 00000000..1b80381f --- /dev/null +++ b/mask.R @@ -0,0 +1,2 @@ +source("modules/Loading/Loading.R") + diff --git a/modules/Loading/Loading.R b/modules/Loading/Loading.R index 22677811..d51ba124 100644 --- a/modules/Loading/Loading.R +++ b/modules/Loading/Loading.R @@ -30,6 +30,7 @@ Loading <- function(recipe) { } } # Display data summary +browser() if (recipe$Run$logger$threshold <= 2) { data_summary(data$hcst, recipe) data_summary(data$obs, recipe) diff --git a/modules/Loading/R/GRIB/GrbLoad.R b/modules/Loading/R/GRIB/GrbLoad.R index 8318eee2..6be0651a 100644 --- a/modules/Loading/R/GRIB/GrbLoad.R +++ b/modules/Loading/R/GRIB/GrbLoad.R @@ -4,6 +4,7 @@ # If exp, has.memb is a number; if obs, has.memb = NULL # syear_time_dim is the time attr dim of exp as the input for obs #---------------------------------------------------------------------------------- +source("modules/Loading/R/GRIB/grbload.R") GrbLoad <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, regrid = NULL) { library(gribr) @@ -14,153 +15,41 @@ GrbLoad <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, # times <- lapply(times, '[<-', .POSIXct(rep(NA, length(time_step)), tz = 'UTC')) for (dat_i in 1:length(dat)) { - - file_to_load <- grib_open(dat[[dat_i]]) - - #---------------------------------------- - # HOW TO FIND THE VALUE OF EACH FTIME STEP? - #---------------------------------------- - #NOTE: ValidityTime is not considered now. So if the time frequency is less than daily, it has problem. - -# # METHOD 1: Get first message to figure out the validityDate/Time of each message -# #NOTE: gm1$validityDate should be "s", "m", "h", etc. according to document. But our files have "1". - gm1 <- grib_get_message(file_to_load, 1) -# first_ftime <- as.character(gm1$validityDate) -# first_ftime_hour <- gm1$validityTime -# # For monthly data -# #NOTE: may not be correct because it is calculated by the first message -# cdo_time_attr <- clock::add_months(as.POSIXct(first_ftime, -# format = "%Y%m%d", tz = 'UTC'), time_step - 1) -# cdo_time <- format(cdo_time_attr, "%Y%m%d") - - # METHOD 2: Use cdo showtimestamp (DEPENDENCY!) - #TODO: Change to method 1 because can't predict what cdo will produce - cdo_time <- system(paste0("cdo showtimestamp ", dat[[dat_i]]), intern = T) - cdo_time <- strsplit(cdo_time, " ")[[length(cdo_time)]] - cdo_time <- cdo_time[which(cdo_time != "")] - # Check if there is member dim or not - has.memb <- ifelse((length(unique(cdo_time)) == length(cdo_time)), FALSE, TRUE) - if (has.memb) memb_dim_length <- length(cdo_time)/length(unique(cdo_time)) - cdo_time <- unique(cdo_time)[time_step] #"2000-12-01T00:00:00" - cdo_time_attr <- as.POSIXct(gsub('T', ' ', cdo_time), tz = 'UTC') - cdo_time <- sapply(sapply(cdo_time, strsplit, "T"), '[[', 1) - cdo_time <- gsub('-', '', cdo_time) - #---------------------------------------- - - # all members + ftimes: length should be memb*ftime (e.g., 51*7) - ## Method 1: use grib_select and real values to filter - memb_ftime <- grib_select(file_to_load, list(validityDate = cdo_time)) - if (inherits(memb_ftime, 'gribMessage')) memb_ftime <- list(memb_ftime) - -# ## Method 2: Calculate which messages are the desired ones -# gm <- grib_get_message(file_to_load, time_step) -# if (length(time_step) == 1) { -# gm <- list(gm) -# } - - ################################################################## - # Get data as an array [longitude, latitude, (memb*)time] - ################################################################## - if (grepl("reduced", gm1$gridType)) { - #NOTE: Need to call gribr::grib_expand_grids because I don't know how to make .Call("gribr_redtoreg") work outside that function - # https://github.com/nawendt/gribr/blob/main/src/redtoreg.c - values_l <- vector('list', length = length(memb_ftime)) - for (gm_i in 1:length(memb_ftime)) { - values_l[[gm_i]] <- grib_expand_grids(memb_ftime[[gm_i]]) - } - result[[dat_i]] <- array(unlist(values_l), dim = c(longitude = gm1$Nj * 2, latitude = gm1$Nj, time = length(values_l))) - # Save memory - rm(values_l); gc() - - } else { - result[[dat_i]] <- .grib_expand_grids(memb_ftime) + file_to_load <- tryCatch(grbload(dat[[dat_i]], time_step = time_step, + has.memb = has.memb, + syear_time_dim = syear_time_dim, + regrid = regrid, first_file = dat_i), + error=function(e) { + warning(paste('Missing file?', e)) + list(result = NULL, time = NULL) + }) + result[[dat_i]] <- file_to_load$result + times[[dat_i]] <- file_to_load$time + } #for loop dat + # If there are missing files it keeps loading available data + missing_files <- unlist(lapply(result, function(x) {is.null(x)})) + if (all(missing_files == TRUE)) { + error(recipe$Run$logger, + "Any GRIB file found") } - - ################################################################## - # Get metadata - ################################################################## - ## (1-1) Everything from the first message of first file - if (dat_i == 1) { - ## (1-1) Everything from the first message of first file -# dims <- dim(result[[dat_i]]) -# attributes(result) <- gm1 -# # turn result into array again -# dim(result[[dat_i]]) <- dims - - ## (1-2) Only save the necessary attributes - attr(result, 'edition') <- gm1$edition - attr(result, 'shortName') <- gm1$shortName - #NOTE: Tune varaible name!! - attr(result, 'shortName') <- tune_var_name(gm1$shortName) - attr(result, 'name') <- gm1$name - attr(result, 'units') <- gm1$units -# attr(result, 'validityDate') <- gm1$validityDate -# attr(result, 'validityTime') <- gm1$validityTime - - ## (2) Lat and lon - latlon <- grib_latlons(gm1, expand = TRUE) - attr(result, 'latitude') <- unique(as.vector(c(latlon$lats))) - attr(result, 'longitude') <- unique(as.vector(c(latlon$lons))) - # Save memory (though it's small) - rm(latlon); gc() - - #NOTE: Find another way to check regular grid; Ni/Nj not always exist -# if (has.key(gm1, "Nx") && has.key(gm1, "Ny")) { -# nx <- gm1$Nx -# ny <- gm1$Ny -# } else { -# nx <- gm1$Ni -# ny <- gm1$Nj -# } -# if (length(lats) != ny | length(lons) != nx) { -# stop("Latitude and Longitude seem to be non-regular grid.") -# } - - } - -#-------------------------------- -#NOTE: Just use cdo_time -# ## (3) Date and time: Need to get from each massage -# for (time_i in 1:length(time_step)) { -# gm1 <- gm[[time_i]] -# #NOTE: What's the correct time? -## dates <- gm1$validityDate #Date of validity of the forecast -## times <- gm1$validityTime -## dates <- gm1$dataDate # Reference date -# times[[dat_i]][time_i] <- as.POSIXct( -# lubridate::ymd_hms(paste0(paste(gm1$year,gm1$month,gm1$day, '-'), ' ', -# paste(gm1$hour, gm1$minute, gm1$second, ':'))) -# ) -# } - times[[dat_i]] <- cdo_time_attr -#-------------------------------- - - ################################################################## - # regrid - ################################################################## - if (!is.null(regrid)) { - # result[[dat_i]]: [longitude, latitude, time] - res_data <- s2dv::CDORemap(result[[dat_i]], lons = attr(result, 'longitude'), lats = attr(result, 'latitude'), - grid = regrid$type, method = regrid$method, force_remap = TRUE) - if (dat_i == length(dat)) { - attr(result, 'longitude') <- res_data$lons - attr(result, 'latitude') <- res_data$lats + print(missing_files) + index <- 1 # using information from first file + if (any(missing_files == TRUE)) { + index <- which(missing_files == FALSE)[1] + for (missed in 1:(which(missing_files))) { + info(recipe$Run$logger, + "There are missing files in grib format.") + info(recipe$Run$logger, + dat[missing_files]) + print(index) + result[[missed]] <- array(NA, dim(result[[index]])) } - result[[dat_i]] <- res_data$data_array } - - - ################################################################## - # Save memory - rm(memb_ftime); rm(gm1); gc() - grib_close(file_to_load) # Doesn't impact memory - ################################################################## -} #for loop dat - + print(index) # Turn result list into array - attr <- attributes(result) - res_dim <- c(dim(result[[1]]), syear = length(result)) #[longitude, latitude, (memb*)time, syear] + attr <- attributes(result[[index]]) + res_dim <- c(dim(result[[index]]), syear = length(result)) #[longitude, latitude, (memb*)time, syear] result <- unlist(result) dim(result) <- res_dim @@ -172,7 +61,7 @@ GrbLoad <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, times <- as.POSIXct(times, origin = '1970-01-01', tz = 'UTC') # Reshape and reorder array - if (is.null(has.memb) | has.memb == FALSE) { # obs doesn't have memb; reshape syear/time dim + if (is.null(has.memb) || has.memb == FALSE) { # obs doesn't have memb; reshape syear/time dim result <- s2dv::Reorder(result, c("syear", "time", "latitude", "longitude")) result <- array(result, dim = c(dat = 1, var = 1, syear_time_dim, dim(result)[3:4], diff --git a/modules/Loading/R/GRIB/grbload.R b/modules/Loading/R/GRIB/grbload.R new file mode 100644 index 00000000..40d285af --- /dev/null +++ b/modules/Loading/R/GRIB/grbload.R @@ -0,0 +1,156 @@ +#---------------------------------------------------------------------------------- +# Use gribr package to load GRIB files +# Atomic function to load data if there are missing files +# syear_time_dim is the time attr dim of exp as the input for obs +#---------------------------------------------------------------------------------- +grbload <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, + regrid = NULL, first_file = NULL) { + + file_to_load <- grib_open(dat) + + #---------------------------------------- + # HOW TO FIND THE VALUE OF EACH FTIME STEP? + #---------------------------------------- + #NOTE: ValidityTime is not considered now. So if the time frequency is less than daily, it has problem. + +# # METHOD 1: Get first message to figure out the validityDate/Time of each message +# #NOTE: gm1$validityDate should be "s", "m", "h", etc. according to document. But our files have "1". + gm1 <- grib_get_message(file_to_load, 1) +# first_ftime <- as.character(gm1$validityDate) +# first_ftime_hour <- gm1$validityTime +# # For monthly data +# #NOTE: may not be correct because it is calculated by the first message +# cdo_time_attr <- clock::add_months(as.POSIXct(first_ftime, +# format = "%Y%m%d", tz = 'UTC'), time_step - 1) +# cdo_time <- format(cdo_time_attr, "%Y%m%d") + + # METHOD 2: Use cdo showtimestamp (DEPENDENCY!) + #TODO: Change to method 1 because can't predict what cdo will produce + cdo_time <- system(paste0("cdo showtimestamp ", dat), intern = T) + cdo_time <- strsplit(cdo_time, " ")[[length(cdo_time)]] + cdo_time <- cdo_time[which(cdo_time != "")] + # Check if there is member dim or not + has.memb <- ifelse((length(unique(cdo_time)) == length(cdo_time)), FALSE, TRUE) + if (has.memb) memb_dim_length <- length(cdo_time)/length(unique(cdo_time)) + cdo_time <- unique(cdo_time)[time_step] #"2000-12-01T00:00:00" + cdo_time_attr <- as.POSIXct(gsub('T', ' ', cdo_time), tz = 'UTC') + cdo_time <- sapply(sapply(cdo_time, strsplit, "T"), '[[', 1) + cdo_time <- gsub('-', '', cdo_time) + + #---------------------------------------- + + # all members + ftimes: length should be memb*ftime (e.g., 51*7) + ## Method 1: use grib_select and real values to filter + memb_ftime <- grib_select(file_to_load, list(validityDate = cdo_time)) + if (inherits(memb_ftime, 'gribMessage')) memb_ftime <- list(memb_ftime) + +# ## Method 2: Calculate which messages are the desired ones +# gm <- grib_get_message(file_to_load, time_step) +# if (length(time_step) == 1) { +# gm <- list(gm) +# } + + ################################################################## + # Get data as an array [longitude, latitude, (memb*)time] + ################################################################## + if (grepl("reduced", gm1$gridType)) { + #NOTE: Need to call gribr::grib_expand_grids because I don't know how to make .Call("gribr_redtoreg") work outside that function + # https://github.com/nawendt/gribr/blob/main/src/redtoreg.c + values_l <- vector('list', length = length(memb_ftime)) + for (gm_i in 1:length(memb_ftime)) { + values_l[[gm_i]] <- grib_expand_grids(memb_ftime[[gm_i]]) + } + result <- array(unlist(values_l), dim = c(longitude = gm1$Nj * 2, latitude = gm1$Nj, time = length(values_l))) + # Save memory + rm(values_l); gc() + + } else { + result <- .grib_expand_grids(memb_ftime) + } + + ################################################################## + # Get metadata + ################################################################## + ## (1-1) Everything from the first message of first file +# if (first_file == 1) { + ## (1-1) Everything from the first message of first file +# dims <- dim(result[[dat_i]]) +# attributes(result) <- gm1 +# # turn result into array again +# dim(result[[dat_i]]) <- dims + + ## (1-2) Only save the necessary attributes + attr(result, 'edition') <- gm1$edition + attr(result, 'shortName') <- gm1$shortName + #NOTE: Tune varaible name!! + attr(result, 'shortName') <- tune_var_name(gm1$shortName) + attr(result, 'name') <- gm1$name + attr(result, 'units') <- gm1$units +# attr(result, 'validityDate') <- gm1$validityDate +# attr(result, 'validityTime') <- gm1$validityTime + + ## (2) Lat and lon + latlon <- grib_latlons(gm1, expand = TRUE) + attr(result, 'latitude') <- unique(as.vector(c(latlon$lats))) + attr(result, 'longitude') <- unique(as.vector(c(latlon$lons))) + # Save memory (though it's small) + rm(latlon); gc() + + #NOTE: Find another way to check regular grid; Ni/Nj not always exist +# if (has.key(gm1, "Nx") && has.key(gm1, "Ny")) { +# nx <- gm1$Nx +# ny <- gm1$Ny +# } else { +# nx <- gm1$Ni +# ny <- gm1$Nj +# } +# if (length(lats) != ny | length(lons) != nx) { +# stop("Latitude and Longitude seem to be non-regular grid.") +# } + +# } + +#-------------------------------- +#NOTE: Just use cdo_time +# ## (3) Date and time: Need to get from each massage +# for (time_i in 1:length(time_step)) { +# gm1 <- gm[[time_i]] +# #NOTE: What's the correct time? +## dates <- gm1$validityDate #Date of validity of the forecast +## times <- gm1$validityTime +## dates <- gm1$dataDate # Reference date +# times[[dat_i]][time_i] <- as.POSIXct( +# lubridate::ymd_hms(paste0(paste(gm1$year,gm1$month,gm1$day, '-'), ' ', +# paste(gm1$hour, gm1$minute, gm1$second, ':'))) +# ) +# } + times <- cdo_time_attr +#-------------------------------- + + ################################################################## + # regrid + ################################################################## + if (!is.null(regrid)) { + # result[[dat_i]]: [longitude, latitude, time] + res_data <- s2dv::CDORemap(result, lons = attr(result, 'longitude'), lats = attr(result, 'latitude'), + grid = regrid$type, method = regrid$method, force_remap = TRUE) + if (first_file == length(dat)) { + attr(result, 'longitude') <- res_data$lons + attr(result, 'latitude') <- res_data$lats + } + result <- res_data$data_array + } + + + ################################################################## + # Save memory + rm(memb_ftime); rm(gm1); gc() + grib_close(file_to_load) # Doesn't impact memory + ################################################################## + print(str(result)) + return(list(result = result, time = times)) +} + +######################################################################### +######################################################################### + diff --git a/modules/Loading/R/load_GRIB.R b/modules/Loading/R/load_GRIB.R index 796327cb..10701641 100644 --- a/modules/Loading/R/load_GRIB.R +++ b/modules/Loading/R/load_GRIB.R @@ -165,7 +165,6 @@ load_GRIB <- function(recipe) { metadata_list[[variable]] <- list(long_name = attr(hcst, 'name'), units = attr(hcst, 'units')) load_parameters_list <- list(dat1 = list(file_date = list(paste0(hcst.year, hcst.sdate)))) - hcst <- s2dv_cube(data = array(hcst, dim = dim(hcst)), coords = list(dat = 'dat1', var = variable, diff --git a/recipe_ecvs_scorecards_seasonal.yml b/recipe_ecvs_scorecards_seasonal.yml index 289bc273..7be8cac7 100644 --- a/recipe_ecvs_scorecards_seasonal.yml +++ b/recipe_ecvs_scorecards_seasonal.yml @@ -8,16 +8,16 @@ Analysis: # - {name: tas, freq: monthly_mean, units: K} # - {name: tasmin, freq: monthly_mean, units: K} # - {name: tasmax, freq: monthly_mean, units: K} - - {name: tos, freq: monthly_mean, units: K} + #- {name: tos, freq: monthly_mean, units: K} # - {name: sfcWind, freq: monthly_mean, units: ms-1} #- {name: tdps, freq: monthly_mean, units: K} - #- {name: psl, freq: monthly_mean, units: hPa} + - {name: psl, freq: monthly_mean, units: hPa} #- {name: prlr, freq: monthly_mean, units: ms-1, flux: yes} Datasets: System: - {name: Meteo-France-System8} - - {name: CMCC-SPS3.5} - - {name: UKMO-System602} + # - {name: CMCC-SPS3.5} + #- {name: UKMO-System602} Multimodel: no # Mandatory, bool: Either yes/true or no/false Reference: - {name: ERA5} # Mandatory, str: Reference codename. See docu. diff --git a/recipe_tas_scorecards_seasonal.yml b/recipe_tas_scorecards_seasonal.yml index e50b6055..4dbe79ec 100644 --- a/recipe_tas_scorecards_seasonal.yml +++ b/recipe_tas_scorecards_seasonal.yml @@ -11,12 +11,12 @@ Analysis: flux: no Datasets: System: - name: Meteo-France-System8 + name: UKMO-System602 Multimodel: no # Mandatory, bool: Either yes/true or no/false Reference: name: ERA5 # Mandatory, str: Reference codename. See docu. Time: - sdate: '0101' + sdate: '0201' hcst_start: '1993' # Mandatory, int: Hindcast start year 'YYYY' hcst_end: '1996' # Mandatory, int: Hindcast end year 'YYYY' ftime_min: 1 # Mandatory, int: First leadtime time step in months diff --git a/rsz_rsz_bsc_logo.png b/rsz_rsz_bsc_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..59406d7a5f242aa87eb276bea39d6544a802b986 GIT binary patch literal 48040 zcmV)lK%c*fP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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%0A3Fm_ZF`(A?~^4VB&GJu_(J;}aP77WAIoxPs+ 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 Date: Fri, 9 Feb 2024 17:30:45 +0000 Subject: [PATCH 09/34] scorecards multi --- datadownloading/dl-era5.bash | 2 +- datadownloading/dl-seasonal.bash | 2 +- full_ecvs_scorecards.R | 1 - modules/Loading/Loading.R | 1 - modules/Loading/R/GRIB/GrbLoad.R | 2 -- modules/Loading/R/GRIB/grbload.R | 6 +++--- modules/Scorecards/R/tmp/LoadMetrics.R | 2 ++ modules/Scorecards/R/tmp/ScorecardsMulti.R | 9 +++++++-- modules/Scorecards/Scorecards.R | 4 ++-- modules/Scorecards/execute_scorecards.R | 16 ++++++++-------- modules/Units/R/transform_units_precipitation.R | 4 ++-- recipe_ecvs_scorecards_seasonal.yml | 2 +- recipe_tas_scorecards_seasonal.yml | 4 ++-- 13 files changed, 29 insertions(+), 26 deletions(-) diff --git a/datadownloading/dl-era5.bash b/datadownloading/dl-era5.bash index 3ac24a8a..4513f1e7 100755 --- a/datadownloading/dl-era5.bash +++ b/datadownloading/dl-era5.bash @@ -32,7 +32,7 @@ workdir=$SCRATCH/cerise/data/ if [[ $freq == "mon" ]]; then #tasmax and tasmin doesn't exist - for var in sfcWind tos tdps prlr psl; do #sfcWind tas tos psl prlr tdps; do + for var in sfcWind tos tdps prlr psl tas; do #sfcWind tas tos psl prlr tdps; do case $var in "sfcWind") code="10m_wind_speed";; "tas") code="2m_temperature";; diff --git a/datadownloading/dl-seasonal.bash b/datadownloading/dl-seasonal.bash index 185ee061..643433c0 100755 --- a/datadownloading/dl-seasonal.bash +++ b/datadownloading/dl-seasonal.bash @@ -46,7 +46,7 @@ for model in ukmo cmcc meteo_france; do #ecmwf cmcc meteo_france dwd ukmo; do if [[ $freq == "mon" ]]; then - for var in tasmax tos sfcWind psl tdps prlr; do #sfcWind tas tos psl prlr tasmin tasmax tdps; do + for var in tasmax tas tasmin tos sfcWind psl tdps prlr; do #sfcWind tas tos psl prlr tasmin tasmax tdps; do case $var in "sfcWind") code="207.128";; "tas") code="167.128";; diff --git a/full_ecvs_scorecards.R b/full_ecvs_scorecards.R index db72b2fd..c4e1c8aa 100644 --- a/full_ecvs_scorecards.R +++ b/full_ecvs_scorecards.R @@ -1,6 +1,5 @@ source("modules/Loading/Loading.R") -#source("modules/Units/Units.R") source("modules/Saving/Saving.R") source("modules/Units/Units.R") source("modules/Visualization/Visualization.R") diff --git a/modules/Loading/Loading.R b/modules/Loading/Loading.R index d51ba124..22677811 100644 --- a/modules/Loading/Loading.R +++ b/modules/Loading/Loading.R @@ -30,7 +30,6 @@ Loading <- function(recipe) { } } # Display data summary -browser() if (recipe$Run$logger$threshold <= 2) { data_summary(data$hcst, recipe) data_summary(data$obs, recipe) diff --git a/modules/Loading/R/GRIB/GrbLoad.R b/modules/Loading/R/GRIB/GrbLoad.R index 6be0651a..aea20731 100644 --- a/modules/Loading/R/GRIB/GrbLoad.R +++ b/modules/Loading/R/GRIB/GrbLoad.R @@ -78,10 +78,8 @@ GrbLoad <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, attr$dim <- dim(result) attributes(result) <- attr attr(result, 'time') <- times - # Save memory rm(times); rm(attr); gc() - return(result) } diff --git a/modules/Loading/R/GRIB/grbload.R b/modules/Loading/R/GRIB/grbload.R index 40d285af..418273e3 100644 --- a/modules/Loading/R/GRIB/grbload.R +++ b/modules/Loading/R/GRIB/grbload.R @@ -134,11 +134,11 @@ grbload <- function (dat, time_step = 1, has.memb = NULL, syear_time_dim = NULL, # result[[dat_i]]: [longitude, latitude, time] res_data <- s2dv::CDORemap(result, lons = attr(result, 'longitude'), lats = attr(result, 'latitude'), grid = regrid$type, method = regrid$method, force_remap = TRUE) - if (first_file == length(dat)) { + #if (first_file == length(dat)) {ç + result <- res_data$data_array attr(result, 'longitude') <- res_data$lons attr(result, 'latitude') <- res_data$lats - } - result <- res_data$data_array + #} } diff --git a/modules/Scorecards/R/tmp/LoadMetrics.R b/modules/Scorecards/R/tmp/LoadMetrics.R index 8ba477e4..f36d6fcc 100644 --- a/modules/Scorecards/R/tmp/LoadMetrics.R +++ b/modules/Scorecards/R/tmp/LoadMetrics.R @@ -115,10 +115,12 @@ LoadMetrics <- function(system, reference, var, start.year, end.year, ## Define empty list to saved data all_metrics <- sapply(system, function(x) NULL) + names(all_metrics) <- system ## Load data for each system for (sys in 1:length(system)) { ## Define empty list to saved data by_reference <- sapply(reference, function(x) NULL) + names(by_reference) <- reference ## Load data for each reference for (ref in 1:length(reference)) { ## Call function to load metrics data diff --git a/modules/Scorecards/R/tmp/ScorecardsMulti.R b/modules/Scorecards/R/tmp/ScorecardsMulti.R index 89f1df44..1107d95b 100644 --- a/modules/Scorecards/R/tmp/ScorecardsMulti.R +++ b/modules/Scorecards/R/tmp/ScorecardsMulti.R @@ -87,8 +87,13 @@ ScorecardsMulti <- function(data, ftime_dim = 'time') ## Load configuration files - sys_dict <- read_yaml("/esarchive/scratch/nmilders/gitlab/git_clones/s2s-suite/conf/archive.yml")$esarchive - var_dict <- read_yaml("/esarchive/scratch/nmilders/gitlab/git_clones/csscorecards/inst/config/variable-dictionary.yml")$vars + if (is.null(recipe$Run$filesystem)) { + filesystem <- 'esarchive' + } else { + filesystem <- recipe$Run$filesystem + } + sys_dict <- read_yaml("conf/archive.yml")[[filesystem]] + var_dict <- read_yaml("conf/variable-dictionary.yml")$vars ## Get scorecards table display names from configuration files var.name <- var_dict[[var]]$long_name diff --git a/modules/Scorecards/Scorecards.R b/modules/Scorecards/Scorecards.R index cfda527c..fc638f6c 100644 --- a/modules/Scorecards/Scorecards.R +++ b/modules/Scorecards/Scorecards.R @@ -22,8 +22,8 @@ Scorecards <- function(recipe) { output.path <- paste0(recipe$Run$output_dir, "/plots/Scorecards/") dir.create(output.path, recursive = T, showWarnings = F) - system <- recipe$Analysis$Datasets$System$name - reference <- recipe$Analysis$Datasets$Reference$name + system <- recipe$Analysis$Datasets$System + reference <- recipe$Analysis$Datasets$Reference var <- recipe$Analysis$Variables$name start.year <- as.numeric(recipe$Analysis$Time$hcst_start) end.year <- as.numeric(recipe$Analysis$Time$hcst_end) diff --git a/modules/Scorecards/execute_scorecards.R b/modules/Scorecards/execute_scorecards.R index 8647359f..9e55f9e4 100644 --- a/modules/Scorecards/execute_scorecards.R +++ b/modules/Scorecards/execute_scorecards.R @@ -13,8 +13,8 @@ recipe$Run$output_dir <- output_dir ## Loop over variables datasets <- recipe$Analysis$Datasets ## TODO: Improve dependency system? -for (system in 1:length(datasets$System)) { - for (reference in 1:length(datasets$Reference)) { +#for (system in 1:length(datasets$System)) { +# for (reference in 1:length(datasets$Reference)) { for (variable in 1:length(recipe$Analysis$Variables)) { # info(recipe$Run$logger, # paste0("System",recipe$Analysis$Datasets$System[[system]])) @@ -24,17 +24,17 @@ for (system in 1:length(datasets$System)) { # paste0("Variable", recipe$Analysis$Variables[[variable]])) scorecard_recipe <- recipe scorecard_recipe$Analysis$Datasets$System <- - recipe$Analysis$Datasets$System[[system]] + unlist(recipe$Analysis$Datasets$System) scorecard_recipe$Analysis$Datasets$Reference <- - recipe$Analysis$Datasets$Reference[[reference]] + unlist(recipe$Analysis$Datasets$Reference) scorecard_recipe$Analysis$Variables <- recipe$Analysis$Variables[[variable]] print(recipe$Analysis$Variables[[variable]]) -print(recipe$Analysis$Datasets$Reference[[reference]]) -print(recipe$Analysis$Datasets$System[[system]]) +#print(recipe$Analysis$Datasets$Reference[[reference]]) +#print(recipe$Analysis$Datasets$System[[system]]) # Plot Scorecards Scorecards(scorecard_recipe) } - } -} +# } +#} print("##### SCORECARDS SAVED TO THE OUTPUT DIRECTORY #####") diff --git a/modules/Units/R/transform_units_precipitation.R b/modules/Units/R/transform_units_precipitation.R index 0d3aa4b5..22fe4167 100644 --- a/modules/Units/R/transform_units_precipitation.R +++ b/modules/Units/R/transform_units_precipitation.R @@ -80,8 +80,8 @@ transform_units_precipitation <- function(data, original_units, new_units, } data_list[[var_index]] <- Apply(list(data_list[[var_index]], data[[1]]$attrs$Dates), - target_dim = 'sday', - extra_info = list(cal = cal, days_in_month = .days_in_month), + target_dim = list(c('syear'), c('syear')), + extra_info = list(cal = cal, days_in_month = .days_in_month), fun = function(x, y) { date <- as.Date(y, "%Y-%m-%d") num_days <- .days_in_month(date, cal = .cal) diff --git a/recipe_ecvs_scorecards_seasonal.yml b/recipe_ecvs_scorecards_seasonal.yml index 7be8cac7..7681492b 100644 --- a/recipe_ecvs_scorecards_seasonal.yml +++ b/recipe_ecvs_scorecards_seasonal.yml @@ -16,7 +16,7 @@ Analysis: Datasets: System: - {name: Meteo-France-System8} - # - {name: CMCC-SPS3.5} + - {name: CMCC-SPS3.5} #- {name: UKMO-System602} Multimodel: no # Mandatory, bool: Either yes/true or no/false Reference: diff --git a/recipe_tas_scorecards_seasonal.yml b/recipe_tas_scorecards_seasonal.yml index 4dbe79ec..a3031782 100644 --- a/recipe_tas_scorecards_seasonal.yml +++ b/recipe_tas_scorecards_seasonal.yml @@ -5,9 +5,9 @@ Description: Analysis: Horizon: seasonal # Mandatory, str: either subseasonal, seasonal, or decadal Variables: - name: tos + name: psl freq: monthly_mean - units: K + units: hPa flux: no Datasets: System: -- GitLab From 0e96743fa99821ad184ef28c6234738f616d95c0 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 8 Mar 2024 12:03:05 +0000 Subject: [PATCH 10/34] datadownloading --- ...-bb479a3d-4ff6-48f9-9b6d-654aff127d5b.grib | Bin 0 -> 622980000 bytes .../dl-era5-allyears-3D.1993-2017-01-12.txt | 29 ++++ datadownloading/dl-era5-allyears-3D.bash | 149 +++++++++++++++++ datadownloading/dl-era5-allyears.bash | 152 ++++++++++++++++++ datadownloading/dl-era5.bash | 5 +- datadownloading/dl-mask_seasonal.bash | 42 +---- full_NAO_scorecards.R | 11 ++ full_ecvs_scorecards.R | 94 +++++------ recipe_ecvs_scorecards_seasonal.yml | 2 +- 9 files changed, 388 insertions(+), 96 deletions(-) create mode 100644 datadownloading/adaptor.mars.internal-1709842918.8984334-4366-3-bb479a3d-4ff6-48f9-9b6d-654aff127d5b.grib create mode 100644 datadownloading/dl-era5-allyears-3D.1993-2017-01-12.txt create mode 100755 datadownloading/dl-era5-allyears-3D.bash create mode 100755 datadownloading/dl-era5-allyears.bash diff --git a/datadownloading/adaptor.mars.internal-1709842918.8984334-4366-3-bb479a3d-4ff6-48f9-9b6d-654aff127d5b.grib b/datadownloading/adaptor.mars.internal-1709842918.8984334-4366-3-bb479a3d-4ff6-48f9-9b6d-654aff127d5b.grib new file mode 100644 index 0000000000000000000000000000000000000000..01166c8898827ba0ae4bd6c31818cb033d778154 GIT binary patch literal 622980000 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¨_C3CnxLdJqZpE@d8|f%tRmR(`FZw<7STYLDbG& zq}KW9dJ#M$@|Y*!${hjI2)a&8FM}nwGRrx_dn0@sx2TVPWOg8Y z!%D(;`lZ;&jtfO~{sVnCyV(&%ByE)7{Vqp7hHz}uH|e=e0zLP_z1$z)hTvx5Zk~*$ zJR1gHU^20fiUkwTW%w>#O8xa(ym6c9x3fKD2d8bUZ*1n%cs-Y|VWzg4Rlrr;Y9*^4 z%i!xpQ1xtxddmMH>h7k`qowKdsFUEA7Tw+dWF;{>N2Uk$JRro9`X_$wcxqeEp-S%| zZ^XAsGMRUG5XVwSjQx!67Z7Y@pw+f;W?9|MF+#_ zXwsvDhSLMwr%QK$rt1e)#Uq`czJCcZ)qA!xF>&t##h?+Rw%-`rtEq^_du!^wi z>j?-B@FRWW35u2IwY|;kq&c82(7sV?(fd1di}}h8_BCNf=av|RN*xu zZ=^IXj{@9BWY>v=yJDPAPi@|J^!S}Pl>3p}Ru9dv7TR(v$hkY2!XibYq$9ns3Ge5{=c$xOZ17;c{2$ zuoP+=Y74ZUv2M1Wu%)!svmJr-#!1)YRC0ivRJtNfM^U!fPTA%_wta15@MT1}+m9o~ecC$`K$vta*0!gQ`$u_$!z!nZ=m$7xj3Gxm_d$@E~mT*{?gJ$!| zq0$RY+k$iI}~sz2`Or}&`V%r7>orSWgHQ9|Sw@>?anGG8r91>rk9 zFvtBD1T?~3JQA(8JpY5QQ&U`q8TB+i4SEM>3R*|HdrJR@j`>d*{yt5Hbd~CsL^ZWnYcU-%inREj8$%{v1%)I0o8`j@w5c- z?q;`_!Y|%~WRP_vf!wjbvH#GLX(_c-nxAIV9Mn{1(n{hVAHur83GJD~N^W2QJU^|O zkxgN4dWa+cGwUyDIZkVn6h4@g!?nzmAJOq97d>0n;_WC(-p@;7oe-}Q1w~##d9)&H7vl`CN#iZT-4$U0egsg&Np`Tb6FN4NB z6}Rb~@RW4Qt{pytHTBozB-CKVeQU&BI%3DtvAJo~2QnG*qd<18ZHdlF4A_kHlvC(ymO1r17FM29ySch~=poVtQN8|6^iQaoxe~EVb z3kO6h!-n@E5SsO(_!czE7*)}G>l(F;%0>zJHk}cP9&F{7N#Vkj+}e(tA&B9Rcft=+ z{Gz|((Vn8j#+$?U`;q>Lzn%(BnR}|ZATk+6VC5EQ$HR>&XvC|H?ZzQ!^tSO5E>_^- zbne_RYgy>Gy1SOUj=R3QvAc!4y}P@6pnHsax_hB}m3xzWr+c6Kko&0ng!_#9g8Qob zwmaVa%Kgdx)05m|@yH&Pq43+rUw)pHj1&nYxhI(?iTjuPhx?oR3-|cs{%HRE?Dmb1 z?)UE3?&t2u?tAVy9{Ifc6wkBYy~DlHz0$qFJ=HzZ-G}XI;4Tldry)8lrSaalZ(KmD z-fpZ#%U%do&t=R*+n#64F{T^i(5<@|4VfooFdV#67w~>e%bT$CVdqZz_AGPGaZaL#PjC7MHY1NU%}81sUo}rM<0fG)}j?o!PDB4TEYhCfF-CV6umDz za90%65{?oW28D&-pAA6Gl+3EHAE<(F(FLEt*uLJ(qEE_kvp4fLd{nEUyG16$&W2)r z9rpy|3N{vWoH&-6UG~;+k1aS}_rroGO)d2rE(Fn$`T>vc8xL?L+~<lzQHqP;4>~e)F%kK0Lr}}=qhYa6Lk45u;D;z zIDI+L)0r78H0gN@zURZtYc8Ta-{Ez7$~z)*pMAa!33_(&9(qj2voEKvI1c2BkaHaz z8_jvgJK@ym4KoX^c{pnlqi}1CVP=)+*qCAR^Fp|H8T`A-6Qu?KJc{*VLoYCXh}btL2{eJqcMoM6R6j1&BIglqS5+pXMh9giiLI#IV4K9D)^ z`b4&2Fx%7>P5dvm(nr(f>C57CPG>CU{*1WS==C2 z8QSs6)x?!kl+}-{I6U0A(Nl{#(7!Z&8K?CAgnrMNM+B#aqa{-Ceg=KQ-|>+3(ewB__5^JrBWeNP#p6wfM^F46Z6RsV!>~FD zcx6bF`jZ5_tY&xO&>)Sf!*6DK^fl^!4pL{hmaJ%z*D(@5V|UXdT^Eing)2G-wS~Ss zXg~Dm4*}2cbX>vBaR4oP74?Ku0!E@n3qN!{)ac>?c@lE$Ec6+COXltkIyf9bwen@x zjWxMZbj)sy9$TA4t;8N1qEALCNK$kM5w(R8_<#e=nnICKEaNv$1!MofGyMj76}cO6 zXw_F>+wZg2cVw>40aHYE!@?+x$Hc3jjyON^kpe0x;ca++8>5a!#*PkwhG)4DYb-334RD7a%W4%GGL>|#1Z-5F0u*#sq8q}zoFj|=(2=Cvri~5e^G=f!9%uH<2#99ACvg?XvcgyyVnSv==?vU;9nf;1%t- zc1Sx0Nk7F09YEr8B$>-kNT_I~g^~)_&7KK$_&S_*7O(IZ7%vi*cBpUBm&d5pp)i}8 zoLazQ>IgN?p4H5}xN1K|id$|xzq&FAFF`%&J>K0J(i$mV&MnW9f5O?LmBn~{8z`x8 z_exS<+ece(o6~w8r^0OON?7}sEr+cGO!$xOx$Tqfwe7NPg{_S(+IrmD(wfq;$Wp@Z zv)@*~5q_N*L;cqH-L-^Ts#=CyHdszsE?dr7_FGn1##{PWx>$NxMqAceu3N3voYuP5 z&ek5*HrDc1x8<|tjAb23T|-yj%{DI@m6ugQv8< zw|Q)Hr1EkaB}|poNA@Y2T`P+RIg(eYIq4f4)P8C=vO4bBOWTi<0CJ2u&Sb|;j_rKR ztS0!MBrUydzy&T+AWT#lN?u@nS(9S7Q@xzD7(T; zEdqzoD8~h6!2|rC(53xcV41+z&sgCuKtGe|p(jGWlgivQY-ZR$;mPPz(Ik8VNeE9Pf+7k-H1i_P z;m*hz*@mtp7ow8U-MJ3QWh2RDSMC1;&i0BwReqit#BQ}8}X402`@EvwIQ-G z)Vl4#B^F$&JX{yY!(d~kvEDd_diu)v<(AyR?nq3&X-xID0QzhdSha<_ zBc$4sQz!RdXtAZ;dALQSJJ79i4;jL>yET6L89$BJXu>CqE%+ZMLBj)#zD9ri6eDpt zOoojoLyaShfkrRmZ#)k@I5!TO++-X#;*2-$q&!Ll%5heA0W{uP?w0P}?(y!$Q0i&- zE$H>L`?n{RNAlP`L7p&=?n&>-?YZZ<&*?7b;ygD!HyAg~al>=XbJ=r_+a31o^=$WS_H6L1XKe6n@@(Z1 zwsYFd-z#~ndHT77paBg>%nYxu*DldJbPJ{cG3(`QMW9>jd95I%G(&h%@z)K}24u?Kw*OW@QA zq{rdIsI&B|SwRix@TeY9EyzqMLLbB6$R8-uMbuI7_We5wz!SN{cJl^Nk)C~?tfo>XF znSLl4ac|i1J-;{g=QAAZo6SCgq8CbAY6Po5&jn!Tj8Jn7`Q`pjn==^+b#KY2dqi)P zdyw)onE4kR9cK2Oui$J5dH2OFJ&FH2vz@b?Q>Z)a<7~|gG#`(VGUN$dy$O;T2~oGh z6WaiS5gjwCvCdP0Rd&&hFuz#=mYI2MI;z0LNW+LlzZUgisiABu^Z$;`P^TA%e+%(~Y7Rehjv-wmwZGXYTAE9I65_kYb-wKYS)9DS|0@vv?Eyi{J zii520L)A}V>DPD)-ow%#89tu=MeU&ZQ5{iyBD=D+X&;`(-OQDBX$C=O!g6<3v z_QSt13iWv!djAq;D4UoY9Aw7upXd3d@I3R0DSD)&CQ-%UUCGF7$j8pb(48xo?A!=4 z6;*=W;nV?CR|}8xcxF*Ec;6S`z*r91`dB$pKNi2&Ld+Y{EPS-Q_y5rHQAqhDsfcGo z&ZB8u;S>4>DT#5+({3~FB#hhqeUmEgt09-^+jEX1?Uc#YMY_kHf7rg~q zkoQyz*K~P&9!1H*%Smq*FY0tauoaKTdlIGZkb-xX?zo4b>Fx0JT6`W0ae9axyg~Ff z>_}H|;gzmn)*a@e?(mNw7dg_7APWh2pHQYB;FdmzF1?#x2+OGmnna)8K4{W^p-ESU zr3;!YEpj>(QaV0SUw8{&^bvZ!t*4jDT)HicA)BKY-OHNujan9`WM-=SQ`6fxDP1hy z`ah!!aU4A?{(-0W(8ppWHHI_kqcVnm(t}WDdz+Pp?eI&BF2^-U7%q=CD^lP7ge`NU z>t?{?5QWp&j%Okn9^r2Z?vGa{QQyL=?5noh3+3)XkvPqVaq!Vt`fm5-uZ~c3H+W+_`@NaIBxi7!o}&BW zDqe%0+`bI^n4Stk(HUHaqC@>v82Tafz7+RHQ?%oBcra4YZ{!`WiznJclW?xXI2W{Y zj0>E*rp0M@O!m1016@XS7WBN2T(=!)(CeU}sr3A4LiTcyJ)UIcVdS=DgO)$2H`Igb z3bH3!;OMpCADBk9Tv{c${1m6{6SP+s^wtsmbw2qT!>Fl?k#EYA^cZzHzm(i|$9BPX!}dvvMrj@*ZIsSSH>DG()5UNo zYd+WOAX6U>oDsJNHw!fv!1a21@-o` z1o-Xo8|2s0ucO~IzYFkn6U!3V`jzFS<&tHYrL83+41UUQqu*M;eekzr$ziE&X~(Ex zN$2<0Z=GK|zg&L7eu`g|Um3rVepf7pr45g88lHY+dBAvQbwbc5q2$lf6880xQbieu zhoc6sN>z08WVX(1%@Z{D=29x@vV1_mTP_yVuSS3aX|@qINW^*I!-tbERQ;FEnS%Eu-? zSuel?-{6A`tWE>&@)V?JeXj>8;?c z?rq?0>Fwej;2rCo?OpEO^|sDn|fqbAcCydfOzp%?gz$g`0f zBd1bdS}(F7)uu@zZb$5jm`ZoTa^%|i;p8|@qTSf=&h+ojLoHzvd>n`An=*o)Db?wh zl7<4a6rt}!@8QnhMOVwoG{r-S0%Nj>fQ4eg3LJ(pn|1E6byoW|U%XU4rK+l2DB%o+|^-WWZLU`<+B(|xeM7DGRTfC7uz(LgZf7lP9){DHlXUrKs<9qgF zMiGKa>rLn}n4dXM30|>kc#WGu&RwbI6Wlx;a`tJ?B28loPUZRN%xj?JtqF?q9(Z=Q zsV(nCTRsTo9)oyKadiCyE1!dwFL10~g_dt|q&;G7<3-48=5O!u3W@Rl-|>OfkI&5Q zzLTQ(lkvk`5&1yx_!l9Mnd{w#tgk`dm;W7?LN4+Qr+LQxF#CF_ejZ2OIJSBK+uxPh zozSOiuwO+vax$4758;`%Fpv6yHvP&>^Eih>zm3;xHoblZ;e+YOIzwU&Y*qB>lJInH zUUM&A8lTtW6RQUCW_OnJDAY&LsCNZ#r3!H+j*r=?hnGchIGU zCVc`r`3DX68cqn2dnY=K979#!mXO=AHX)Z|yP0hvH0VY6rKdyB)9_8qhg(;3i%ksS ztrotJ`HaP!--aT69!JSjd>o&kXWtMsZG-PUq&}BoTU(fV^I-O2G}JuBe-`_+ntj{L z4B`ZPdK{0-PX7%gWY1zxheO$2&2A-?m@%aD4~EMhu?HL2qW(BHs-irncZ5^7_X~o4 zhHv9Oyz_`Iees;TK~BatGLQR{ac31Us&qG?(*DQ1=Ej5mOUk#W#eA92F#?lcv5Qj%+e9yCR6d%R2 zoF1?9ZMB5Do;|2a246oCn?p!qE=@9B7sV_8VE@8VhmWA{uCa%q=v<>^e;}?~ugj#n(|- zj+4jXm#!!Gm5<;!U!tZ{x7c&om*U$fLE7I$(m56}mcYu}=>T~jmwbRDmS-(Q$MC`= zcI3iUpBG+k&b;yjig^qF(*gMdw$VprC$$!P_~co@_ee!_m4kfV{Xj0^?YoZaQ&w`nO&qNL?*ZRR)hm42r zl&G3TVb?(r@_sbiFEE?elLy+Z<7ov05A#g(EJIU00fWYS-grKGK0$sjJ&!!M;J?e9 zZhM}4zI$bFq&K5CpSKu%SejFDZ&5~ZZy9ez7`2wSCcg`N(|ZFvA3T>lTRgKoLm}kR8_T#Vq{Ol9kE4D}M-?3d|yD+-Ob~Dd)h;0#DFSdMa-dK06j7RIQ;EqMnKZ`=&9{-F#KA8Qa>h;v?==tfPa6|R$HRxv^aecA1EO0+SBcIS?T(hC-cf0| zBWe~LT{|jIlr!=xRfanvXGZp*mt@Y!z=*f_IaV@@YZ_662<#Np6dohtWh5O{%8>}| z2>TFrJ!~IYb`!#Sg*9gmm@mv7rjlcKi!PVzLT7QD_kf}s;)X62nlCg1JqBgxSG4F0 zq{yr{yQGYE4up8ykS)3=M(PZaW?}U^DV+5U zmDmG)^g-==Eei8baC(Q3+BW&&v8DZnqzDx`vwgkRh1oI*fCM z#~1pcShW}H_Tu~jxNAGNU&+1ZKs}S-o-wS-jgj6 zm1~1ozaNs|C-Av&r=g6BsE!s3lPvkm`XS>8>4(HY)cUW+Kdno=dT(pVF!&OmS zOaANbjzpF9hp;3VD-|y9-#8tF&-*?EdIrD84m<$Mq0^Ztm!sk6zBsho;n;2fMOVg8 zQ378@KIk?hN^!L521tb)K;);r#`XN1@r>c4=|@oXeK=Z-`zX}H+2Qkayi9O)eB_=# z{;e^cD8B1Wb$J)>-M)k& z{1}3nPr}O=AX}j;$C+1K`HiE_@#Zxcuu}cM9Op$j&@%S;y=7*!s)S`*Kis{J)BjC#9Z@w zsQndqkN?E|E_gbMxst|AN%(by=luz*4A)SpMJ3{99Mp?(Pfv%Z$I^vhaB$z?ze)CJ zPO?X3n7RNR3Np~GML4J<$e9i@`-dkF`UX`$!9RT|=v2@Fvvc^;pxHqaq3J$2K3bA4 zU4tsbQuGTKeOl6ER|eCu@b7>Q0j=QbIssM5$tq6rY#uT^GLh8arUOd| z-5pZ;fAfDuj`S6>@D4%K+hNX4aOPTS5*LvSAaXrAvG!dZowpEfiJatHh?EP_&HE2> zNA{9m>TsK=yP zr{eUOjan^y(qbe!rk8Om(LwqE_r3_5Kf<;B6*siXbL+5gb`*2bRj?8i-4yok4<9dL zFGQljRT2%ZB)D2Oz|$)^ZSdbpZ}VN;Vi}~}nVgPvB>X)`fP1s6x*2DUyxns;fvT{(zxt{q?K z68+Nb`!^M3v=V6!MZrk6s^|mZe?;QjxNa+9+d*~VO!V}|@=nEunm${3pr*xt zanPjaNjP4flS7h(bm_~?K!)Kc&X2b^HBN|ddTi(C^=t+~53x_7hs-WI$b8p4T1~or zAJu-aeo&3vld&8{>v=~nIG*DB_uzPMVXjI{pfgPq|7@(P?BG^e(1G{T#2 zg(j&>k{wT4-0c7dFYfN{aBw}iySux)yF0~Qio3)2U%Q<9-utnBNn=g7ERuO<%`>xy zq~OPV2gJfE{loYFTU4E0a2t5fN_I0=woe;=q0eYc+VMG)3O(sSa!h_i=8o(fxhC=% zzPt^hW=GwKj=(ixO7unY`byLLwl?Q&?jC*>1@T6k0-AaX zSGzXx42V;a6ql4IseDo+Q0EYE=VDX`2a?W$+8%=5-Y0!c`fc_%2Z87k;A;!R)z&e$ zfKlyk{>R+M+z)>BU-JYo;0E(y^EGq2`HLl!#m|z-`~`IQ#C)Iegj+u>0Tzl*i@*6D zm~kDy(+C`G2Pwvzo#sO3^5*JrvW3kC{_1>qSPeSi>0sv$iT|Jx-j(Sa%)av8a!=HF#cI{CbI?H-o)G+_IHVSxB06115r&rORA-lWsGI1 zWvAt&<*Mbb<%#9B<+C-5Rcnp5daT8*)vYb8J*-2lW35xIv#fKi3#^N+%dD%c>#Uot zJFL5{dl`GUwb{DXy4zkI>kECI-cJcWgX6M4zTvNcDHu2wzsxrw6}KV{rd6v zDC;=u1YS4FI>_49+Spp&nqoCsvsj*4E?V|k*0W7>Ei*0CEK@8KK;!*E@pUaFERrS2 z{FbfX2g|(xHhVhwf3|t9c@96v!IQT!S2m}Z!>DAgByCTc1D|0(&BcblpapcVU4)Lc%x|0 zNM9xGd=B%c3H^r7KUn%S{f0A{U5##-q4$%q7LUi?N=pijFiYK++Ek z7s*lCU|4`Ix({B^RnSFS$;iwS@iyWfZX8G8qgO}Fix?Nt4-{P;&lwwNBr~|_ z3TLT1P?Lm#l9ZsKpYV?FK;tiP z(0hhH0JTIfO8$2#n`^BpNtv^UD1E<{wLy2)uepWnp1vc}^Oy!1xg;r`Rp3f{6MZ1jH)*v0?2+}ZwLP8vt(@1WujC^cS#k_A%EP;Gpq zgYXM{^?yTXp@03s&VqY3$=tIARY8UhIxi^hFVI|d_~#aAvqgUQ|8i62qJCaW2lal` z8yDE(yKMOjG%&(*LvYUmKik;P{BZK6sgP3TPQfPlU38#M=|iBqIuqK#Eo()>&gN^}sk#TW2Gbf6A z&dQ3Rmo<-Ec|GDI=_dH{RfKgfNP@V))56gsoMWTT zkxlmWc!gd(4fg&Z$8jyka~@Tb=z$&eCoAZGy@VB-swhe27lWRrP)A`VQB!!v6bYV(4HT(^T`VMYYr}YO( zJ6wZz)iin#2jb_^mTZ<<`buEx!mv~>GQt1Xg_z+feFOdUIr3Nzk;t+Mu6jO>c%yU! zbv;pj2wYuPR~^Q>G<)#xE?Os8NU zaPeZc`XuQ29-RAa826K*`{AFra@h|XeF0>B2~K(=E(e|22Rj}dKhcEX`5_!X=qG%F z_Ie8bbV+1RpGJ|f0|fLLt#eg63I~Cn3Zd)hO$u~-_{mQ2lb1DH$*#K+fB69l=yUiaZ^y-WG<|3JgR*H3lkHJhlP&NXp3WNr zci`^)3Pc%+%UdvRY?}kS!$}9>8>bE|hU11A{?kL)Y^YG;D;P3@|zZlPunxwca z4K``p1DQI~Z1ZiFToODpZODGvM%tJwD1P#g7$~^A7S97*6Q!P!z7o~A^5DP2IT^AIF_3$4z5WeE=CDoK{pDSS3-htCgxK$TyG_0knEDX(Epa={!; z$#H@2-g>xbd^Qv@3?)PRC#bo;aWrmoZ%sB+E6~Sh6wRX}uSA)m>P5|px)!aAE=PLY z37q9Bk=cAFHZisZs@8{brnpLRgK>L%OcGvc)EVpIA0&i>p1PyTIG6A>F&2l2R!MhY zk$=I@hM{DL0mX^|c;Y$E0EoZK0?qD7QcH3Y+VSZr#WieQCTdKpV&a&*cJhg^c z^I4mL9=BSrTR%xkDMSjiezm4q*MKAcvW8n;SuR+PSWZ}OSU!MK@^3QRq)lt%cOYD~TBWV!GxsCad#ov-_sbpznX=CXO13b(!9fW$;^2VwI zwN?e)jsP340}G$F-mt!~{*rW(Bo&dWORc4Uq+!xHX|gm;njy`S=1EJWHPSX|zjQ)6 zFI{F_kWNcSq`lI1X^XU(%XVqEw2$ZaNjs&D(sF6GG=X>MC-s!NNnNGxQZK0w_XbG) zrM^7YNoplEl&VR8ONAt#lq4CXASsLWGuv>VV|LDZ)Vho9S^&=OV{Hz`_E~dSeuMHa zS`Ko|)?3yvR$Eqqw&z&Jv1bh}MJ>_h@9^mxz|$S6KJs!N1Cn0BR&Rly?v7f1#NB%)pzZ0lk;z1U225=W#NbO#VxCoKFm-Dc(T`zXUwphMq$w z9fvP*;$DG!M>CwH<4}3rK;bbVrVTpjI5JqSM{lEY>q>&5Ct5>#;eNR2PEmi8v6Gop z%KedxB8SVJh4~_5BD0yEk@mg;7npvg7N*Lk0w#+|N4ob@;{}qv7ctwr(O>vC4jr+^ zK-{4ppzPQ|uF51l7&{pnp>v| z!wjEjnqu(WP=UDu(S2xPG(*q{2yf`@FwP%n>wUC-m&>U0-W)v~GsFX^gajArkrZ&|>b1-FB zj>1s*+DWp~SvY72A7|mAu?`Hn8|-|XdgdHVvltga&S}&!4>_vusDZx8nu~87XEDBm zoC9Et!{sVUoGmdday8}Q{O0Femq4Fino%m^FD_-6169x)HDqSBqS|ZCnqp&A{I!@L z)wtATrqtzgzaDd@2CvMRF-5853NdT)bN*A9GZtn^4pG&?Qh#C2J_k+Tffv7ks^kze zdE5WPO^;?ZqX&wWMsoG^7b_9MZQ8>*PvSUbM<@RO_nST=>*KePAhZljJstNJ;gdHI zN12|oHePg@){#9visE+e;hc+9@$6{WgE-6nIJEqatxl735f8#wZwX%uvR*)c|HSZ7 zAnQITK-$Zwx(3L$K5$Pkb&N^%)5+ozPL&4Xcdi zBR>uwR=o0ZprOt{)vwS{U)7()X?i10({uGxamgE@A0#V3+UOhMGhH5+>HOp!y7Usr zIu2|dPF_n^@>*Wfmw1`J!~-}5Z-%j6iPQ8f-FO)5E@0|Pu+%Ox)53Itx@@{k;OQ^m zj#r_N(SDqV)!hb%JD+sov1lbk-l6E(YY(s2fDXlqGMdhhcV3F@4kyyH6VXxU5KhbF z{C$O)ehDxAQ1;JD15amU8y=RG&!Qu79f(Hgre~t0n8x*daP97yPew35a=A;6Li#s;SD0N{?clqJknQ;90=^fKRB6n=5vJSKEPP zKk*@DQUxgQD%U7`qr)hIyGCQ>ROL+^k-Mn2tKO+2QBYUK&22FL$tTob@VuxN*gJ4C ziF`9~ckYZvp<-YqvkF;XxPRqVvH1 zHrKWXJ9h>z57bT|3Go1l+}}_O+k%S(S7jYw5GeOh@Jlo|ziPaogpKGH)(eU?I80-iHFMHXmNIFDwC0Z zTe~W_1!Y3L<5=VJVSJEG4zL>w7f5I0BTC!W>EgnljOIb@zGzL9jLKj$e zTW(r@TNABitzE1$tp}`6B#o3T)tAOfhi!hgQnrb<`*x4Lw|$TOjYH!IwtwPQOWO}y zU+F7|QEA->7Hnnh22*>~`Wm$O4)(URWrO*LIag8-^aiyP4Ja}SCr$w&cS*Wv)}#H1 zPx^vdxqnh>QZaNK(Hmq_V>on^&>rE-MWCp#ql}1TRr9IL`>9O?1rm{uaJhtMt z>b91)9=5@@F}BIJnYQ`1Wwv#;owlR4i?%zqXSO%C_qKPoSGK3N`?g!Q>$Wu84IY1B zd%}2RyKB2@J8e5)+h$v9TW(uoTf|t%d(5&;vW>9ywRNyHwpFv0wUw|HwiU4Dx8<|t zvE}5iT5Zv`P+L~%qx49+A{~`>NUNp!;P(;W?T%7osj5^$N|6$!Fv%aBoo>BlJ?Ap|8M+RA^h@%<7m}${i}cA55)6;x(=jlrQB(Eo6<>x-(y;eS9Et%JyQv4M4j=c@tN_8@vw1|aUotEedshy zH5M>h$Xdy4cw@M0I7_$TO2cGwR+^Erl8cO$P(xPK9j{4Pxq@5A8qjVRx&m{;;rWAp zUV${8bNv?9@Dn=JAMnV5aC;KSq&&!_5u+Bob6z;ZD1Iji%+ip=p4~gyvs1I2jgHp;LjMyGlS$IZVlj-{TO}0@qN&H_loEl(Vczjgxhs%wA&fp zeHFlFg{T(XYn9WJxp89e1fnA5Z9Np^y%{!^0tho-xuV-UG`0!wG);t8hG1+I#M zr_{hw{-mc-Bun3;*YOferRY1{j_!B`?iVw_Rm1V6?kVeO8-sMKgQv@*Sw!Ci_)FZUV!>xHK=*Ltn%3g?mUF*=Q5wd_rar27>^lGSTA^mD&r@qt!j>|P+W+i zr^+&Nv?ciC+_;Tr;9J2S=VjKEpu(!n`RTyf>WR9j3!mvNsI!`I-Hyiwpt&DUr8kke zGm;rFkn=o%c`%$=Gm#lIh3nBg-jCOIq))ab@70vEEs(ZA)qhdB7344FW^O0T=RKCQ zuA+i^BQw*NQT&zD2*{2^j0G__8jNQT0e!1JXlwrEU@4P}WwL2+tF45054t(H|G; z_c-T0MEfDS6pxTHzAkJLejlUhP3%q9SckAyaMg9mMJy9m2wa^+XJT+zKv*VxK0ctQ z7Hsup{c+r<*RcjXgDk|6_)iZaQ@l5vbw}AZuadr)K3SiL21JF^$9wt{@9M7U&XRq& zn*@#}x*7B*3g77_@Y8?8PN(Q3T?~$Sf%GSSCi(C_c;q}7^dS1;?cj&Cq07M3)8T!G z!v1zaS=>bKORNO@CsMR?fj<7r+!lE#N;ux1Fw-wlW84A>3uh03jx!wW&cRLZM<=}o zRkU!x6Mcl6P*xo0Rad|;B2)YlBMp7X8~EaI)U5?Tz%}5-8}XN$@%KA}o5r$D8__+V zM(=$=)~Di8O_T4w!&4%NqR!G~G^o-)o93;vqE8~dKPB})o7uSpOs>P}w_{vShnfW;xB1#O4 zO@W@kDj>nVbTk$wuVtZTH$3@nob<+#Ay`jSPE!u7~@!x$Gsb>WA0WdhZP8b$G7JT6qEWG`j!o1@*X&hHL}e}6^h z-w=LRB4cnT3E2to%`LTqw6jSszoPv@>R%C*<%6hVHll{O5}b|`iWyux7MBWRXjAID zbe##W^qO?nw!!VK19jm)^xKZ5?{*qqko}m~#iGp9R`FAOOiJWIPEsDmb6eFxP_ zCVWqps-jgN0)sRaf~IND1m6zX#jJdQ=DI&Uz#pk<|Ir@`)3Dw&oZP^>uiTfM z?Jwj+4S>t}z_(LD7?C#cU$fEJrSpwfna|UGXf$FCECCfVrYn~`)n=?4nnGW4$vW9@&l`6!Bj2j&;%cW}prt;MXRtQD>GLC0fZjn9H{ zRZ^_vkqSs9rHWD=u;yTC0i5eATZFBct*vc}ZIA7VU1u+5?`hxW$m~dUtZ@cAyE|{Y z3b;nQ4!N$m_PcsGzdHYNw6=G&wUIhnCtIGP0WO9fp{-?!!uD$RcJ{&c>Gl=&t@i!)!lE(x49s5=LDXNJz_PO?P_CfYu_D=S;_LlZ0_WJf3 z_KNnB_Iy+x7JIZk2gg%mSJ*S#zS>@c$uHXu+cty1C)x(uI@;>n%7eLW9DjxM8N`2C zI?O&UfG7V)Y9^HjUz?=N*2mV9aMzR2i`2H}w?lc57&8hST{I>-`bYFNR2^fYTSb>7gU2uGQPi=h zRZ-(`ysH|OGb%jtQ{>gi9k|^MkL-eHbUAcLvAA`-G@UnXG0ij$Hnlg^MJHVl=S36Q zg|Cg5;ic!(ao7a~Qx)T1#(YMHF$!+_tKp&S9=*yi+c1{Q?~c@-B~W>&NL)FAPI{J% zQv{|R503p84!I?KUkMOMUit`YfpDh5T_1}O{vL}#s^ueM@w-dU@jN0kn6y6l_p%`? z=-F#<7z`0VaH8H3F`xGu$-B(}HE)KUJ{)lr%)T#TCp`6LdJ(sij<}ykj_}MuZtW#! ze6Re-F|rfS;xu_K;tbu8$N9Y@jH7JnX&$>kw&G>*|9|5$_s{dnP;`F^?7T{5n?*OEP^}BUxufvTS6PF2L3Q<=v;Uj%3*VN^u=^U&X*Bhe zowWcbD*{%TWp+}t6ybQ+kon~1aLSEj=D05RTjEXLhnY4Olstv%X(F>_JlE5xu$FTE zHb-n@Y+`P%#=;Jh_wmfc>WvgpAI{HiQ3=@N^YU`*ala#8m-4n)+L6)$9G46-;T52 zQudmu312Vt@&Z%4K-D(6<24>vng434&m8l&F#f{b<%L{brGc)GG8?v{t6t5ST8cyC zJX{+mqpuz&>#IBCpwjHmnnh_Urd+auJ`TNm1n4>hbnOSSevL~0DjkagRjT`4|?n42x61I9GtGq%}-C9ma ztOc&F@JCneCEq0uU3G@<$7ithV;rfk=+Een!gpmj=}pxSCn2$=z9z08`S@^;g{4;O zGl8ieq5U`lKfOpd3HRwO}c$SW(WQVv*?m1pfCa?D9aI@QncgJB^=W8ID$2^}dkC*V-KVY`AqaMi#+gJe%T@MW1oHhF{Am~x_hb;v& z??BnT6ZOVAIO)ZVWhhcM^N7%UuLAcE0CkmNO+6MY9wP8P=>9P-eG@=sVI-YQ3vL!% zlup4M!Ak9W?Rk(~4Q*CDG*W{CHFq@UHTQ8-D;CrlmieC`pJqK-B__39^_Oy}GLz!4 z;yTXB=TswbKmHat0KE8)&c9{gW~2HMc=aHucP|1n2L|9wcUawD?NZ&wy}28{ZzENE zK()zq2bNRkz?Iml9IUve$Q7_Lpjtp8P8N9sS_dqak+NBlM^Q{sR#6*|xv7f%is#B8 zWej?WUpUYWR}>ET6>th~j4c6I6~Vk_tuhLVa$7hH1> z@bB)xbXedPnr%TExbmgsb$=s0`~fU_yP#P1_+LCiOt9tOGzz-q>fr$Ljn|z6B_E<^ zas%9LJL;b_&h2Y@O!uKMX%^zaL3z%`tS`)qo?O8*+*s!8~}b zY$m(Us;fmF_9AM*vpA_g*1aO(^Skah?&`nsSAR}E(Jqp*d!ac_)`c^FUxeOaed28B z5oX8&D!|56d^y0(H_-}hLq#+Z7w`P^kxmRwLY471c{ck=U)dA%ko59IdI%5T-dzHt z-v`Qhia{LbvH^_)zA3Y+ng?dqtkf0`UKDaDbPfusS-J=MC|op_>VHxH?!XWf& zsK5G<^E5epFa3d4vTs0p)&$n$Dvr&W@!8VzIb06r;Q;Jb9m8_N8>8FU(m2O>$)o`_ zOfubz^hOSfJRfC1p)oh=c64-f)9CdvelfLTHpOaioZA@tGp;yH^BI&GP2;!Ym)s`d zNTLxYaRZ(cZaV!ICp|!c(agNu{L~VQj-fl6+QqE?@3b7YoVVPwytn#WbD*S1mhMO| zrO&oZHZ|DH4mz%F>uehaLY`w=z?ct$TV>l}J8yes53%RAH?)tmZ?QiBH5PO9bgXwg zcbc7zoeP|gT^`rJu2=5H?gyTxo*Q0|H`VL(Y;@mrt#RhF&y{{#`&&wyTY=bKnBC@u zmPk|;gDiQ?6OyJUwoOO@mlY%3V`rQ$Zdd$_gyHB);?Zfm!yf~qB#?ha^IS`iWilN2 zTFD{}m5xd8;EatR$|AP9aJ#d?n)_|LZ7Xb}Y%Oem+1xg>%?Z=n+&0d(-FDmd!yamn zv%Bqu?3F;TL+wlKM?tv1z`aopv%}@cS*m4?3m-&;yB?*b3AZ7bv$>xbi8$Z zab|I9ohGN`Om^mX7IGGL7Ifxw=4FU`MV%!W#krNo>ESgA&S+k1aAtSvok322#}CIF z$3x!l9PfI>aoBOtvCpy7vB9y#G1W2D(aq7qQP)w83Z#;wqNAMSFGqfd13_(OQ1}J= zZu=^5_Y{!#DEq(Q`abq9Y<*pOdG^C)kFsmP+7E4~Z0ljTyV|PSQfy(;Cn=3OVG-hcaa5XRtpa++0)PGq?RIk`V6N>_l|CahqNO)IO;8a9jl`LjcOiMiUbyYBOfyq?Q*Kj&Db$n&&Gdcac@#~{=%E$ehgFQl(RxU@ zNe7b0a+5Tc8TjB;qwmmWh@&=51W{WIkp};W`?ziNfyK)XRuXFBSLjO3AnEF?o~Ob_ zn_#DJ!rmQ63GoZW)D+}$D&mbH0582jL*|GN;PM9%kKm%ebKk_fy2u!}!GK5bifj?T zBfdp^!MFM|dE;Vyh86!|$jt9+aGK1{t0K4#gD(%^qUT;TTPK0eov_>%wl-3JML7P~ z25v{wH)-NGf(-#=$$Y?v5P7~EqJpnp*wLRik1Pg&O_koRx+ZlOSNAfB}4(% z{T;B=F?eC?$e78B$AjoSe1K<~$e1|~sy+#h+7C;)5mdbd)H{zcAGT7sU1wxC3jgVG zj0vEt8L*i18T0r#6P!F1wSdSKTmcT-N|)PCF5AKA+vSYGQ|L+V$qpOuaj6sIbM~L8 zo%JZ#eK?Plg+;H*Nabf0w7-o(h5vvM$J4zzoi4#Cs5XQ{-8{7L+u-ES%B~qVVCb(g zZlZg6nd2*++QA$tBN)^G#~jY>DCUL_hFR$1Yk*s;$!R@hsj^aGnVYd1&<9jIf>j5x z?l3~GswOdG7Raj-Yr(~98SAKfgbwH^wbK>O-Ayi6sFu!B8=a*_x{jLvG4tw~oKJs& zdTBo^A3M10r@A^JS6TXvxsgdQyjQ4I_=YXN@Dj(7Mb3O~KmxTIvbk?-cbu4OLFU8C`yXtb1*P>fRMuy3*4qZMUWV>*M)(A}7BhT68l!})g0{L;c+v3u z;VJmPCX)H04-W)e3zuqvu5ZXL)w^U5kj3~^&w{z0h_Bv2G}bM`YT{2VauaP~iKszL za^g!?{bxAq%XBQR*Uy8k9xV4NHo%j*1Uy+Ht{+)(`Fg6m^(WJ1lWrOO^eDO$+vysD zLCWb$;GdTZ%|{ZfUog3df}y^LZX$!B-UWVL3Pv4)b69IwX_2E{9M_A2plRWhXQvA= zJ08rxQ6IkmJ3nMR20y3M)0fWAN3#EP8u5OgtF z$I(#6&mHmT>xaf<657;dFytEuN-ns}*c3JqV*Wn(I zp`Tp~>g$X8x_?lL zW{)N=u&sI(NrB~+rjC^US+^P?k`nG)l8HdTUC=(rIl&Q@`^2r_<*GWl>%%5xdJ)_oB}m3Qz~#^7Ea7f z$T-pCCnx-xcPVyr*`%0@Yjb5qLcq^}M~vSJANMaSJ<8$At7t3A;?TTMb&+(y8tV0d zVWd_+)BH_3^^>3|JTRKzJ24EU$t3vV;dJ%Y4$2#pUGqtE3-o+N^HSEVObogOr`%n; zH`otOxF_BcY3N*{@VzKX=1eJ$U7?V?I7{RP=jP{@HzY1ZiND4E;OY3dRS5Rsl%ddm z!lC3C3g^Ds3fkzPcl2Ox0I{zO+8uO*JQ6##${_7Z95z1SDUugW@*w)~F7kIAtPe~K zIgQr743*L;vib_MW-?oMQ1@6LKqgTcIt0e(S2DBD=`Yehut&cF-{*dG;?~APIS;j> zA5J!_=>{mS3!wtsPv7YXI#5&Tjm^Yr$7r-1Vff3fM+03wI97X8J5(D(YIttV3DQ~; zsDsW0u7z`Vp-Rc5ic{JY$pMZ0FZ-|b{}ixQ@jz7<{Jc~v1-A`pj9+;d{vX`Y>2wWr zr%51v7dD2hreWdd!aveWBa#BNRNK9>pQoE;N{$zNm(^rVt}owlb0QA&om$bb+89F0 z$#F12d2-s;nI6KzwTV1PH{kH7=g}o_2}_F!kEsBwcP=(6wnuCl3D*naGoesj6#qQI zMS8{_9FJQj9!*M08klqy)pBEc%Pye(Er>F9kJS%ec^G=y2i6~wLQ5-%m_yv?w>VEaZ#thj z-#9-wKf$2?cBx!BT#_rltDLKrtC6b-m%6U%u2e=fR~=VVS6f$SS2tHzR|i*1S3_4# zR~1(!S4D=nF6$}@Bk$!XMY_UVLA+Oh%g_1S`NjFldEa^2dCa-fx!$>q`eT-JigS!} zptG~Hp|h+rr!&T>ar|_=bEG>SIqo@bJFYt}g1`4T);Z=o#ybW$Iy;&=YBar5|u#$$3qbKJjmbRZtY z&7%|fIYwNi_mUmn4E<0zSo(DA^4P(#^-yb+6Kfv4f7U#QQhYp6{fP>D3r;)Vi-+y);wTOyk=26P>2 zP{^1%9sHFB9yv;@`qpj0+M=*LP0n@ z{Krr4!QEjU7;_0ct#A$*hhn@hXsQkTWCQr=n&9bF5Vgpe@q(v~=q7~sbXG<-E?Llh ze8lZRD5$T4tgrv^xqgUC#w{@LIdm5y;pI47@W$ zN8x-2l>R*XClUpN&^JfX3l|IH9LcSC7}A_{306d_(HM-^g3%HW65+8i1h#p$>_@j2 z#&sp!#WJop&`){{rN$l98A8#Mjz%M$WAF)9BM97VL6eb_<0N|hMAu&dRw^pUNVz># zNiTFXePj*JVCKX)>XkWg!%IN5Vl0z+dO&)j-Xw&r_&eqmkXH{S=DslI;5&wb!=G2ZbTFC(5%F9;LOh@Z680(A-m?QA>!p}yq)^n&prpgtG@PnDjt?~b-=IY2QMhA|(sJ)s} z!IY<}$w|#+VV0QTv4u~%nffb?9L4XlTeV0Yy3X0Y%1k)Lx!;b`ei60QL{cV)(=XZw zY~337m&(~optW|RwH8^Jg0+(>nS9_41vMw4R_rGrFBPg z6&r?E1!3nW2gVv6k0vA%C1nm7W&4q-_>AtwGq~(+4O@*WWCs3vgV2OD#|@+usV{a= zwH}x1A8^%o;Hh`vPCc1k#g2G?r0Pq8IqW2khv5409{1dN z46x`w4B#S$KWdNP@YJ6`%ZvI%`^f}BQJh<6m}-A!<|ZVM9X zMt9e6wAxEy7LVY^aRrY29JfTq%u>+OLas%+%39F$Wbl1Wd_@A_OLw4)9SrN(5S43z zkT^6P=Ywa0+#fhXIt6GDf#WB??@~v?{ZuVgB`cRI0~B@PkfZ&V`q%K!aM`^qA+>p>9`>8!7FgS>~HID%TSG%GTx_}s+d7I_@6_1<_})MmX!I78;t2f|Sg(d9zlzX9yrmG0A4 zDEW({;W-%6IQTm&4<&;GwJ*pJysABns=XZg_3~szCZN4(j{9D1d{SlvP717|KB@Yy z{G_-Ma4{gjf2RM!0J9>8vbO4EU=hts97Wd9kNA!m^(l0M?r&J=Ut!n6r=#$j!6(8K z`P2V7Re5PX$A7{PtjD$4$aiXCaC1Aue4Lxh8n>IQcoC#WdLo-gPK1Gb6Xl5-OqO=F z=%X>oF_UAS#@guxoF97!r`~>X4{=I3nBYm6lJE+@iQc5;eZ^~eY|>Md!7D9l@Xsd8 zSGwccpo~qE^ipN|*v{JgZOJf`ZEU^J0gM1mEw$~l-LYr3C)!KECUB{FS1~P2v8s|FV4scg=Pj{zz z)E=8BpQn(gxTlJzx970e?cL%l;X9TbpIjh0tFMc9lBch`imQ;b8JzA}XSj2|tAy*U zI}qHR!*RtfNkuKylIAB?Aq%B$!iL25Nv+IXEzPa*=#@{Pm|l!>xe5B|iD;MeO7m=4 z*q^Crl3&;ZVPR|9$JkGzq^RH+1H1d4W!5~-s?LtiQQ*=8&NSz9=T}!|aI40pcg48e zuHvrRu8yw3uJNuJuG#XK>ssR4;5xw8q`Q8&)$TC2(H-fIamTwQcZ$21y9#wdM|UrG zUq&x?S9d4wb#?b~|LdOQp6g!XUhZD%p6{OK9_t?F9^mfh?(ZJt9?G-B_}RzZ#ofx? z&|Sk_$z9g{7w=Zko!jkpTij7@y<6qZ3YE5KIYo$TFh4U1CiGQeGBBB;a7ghXj zuylFcP@doeI0)Bn6A6kN69=ab!P8BmOGi6F)IXvg zN1cz_3qw64YG_o4sOnJ#qT-?gz|@x`_ma&r9Z$S2k@d+5cSVMozMJlo(6Y%i-!#_L z$J82Ek0Sh^3Ib7I#1nnGu`fyC<&C-MLsa81odz>Kj~>LP;87nKG}zz=dU+1kIST3= z&FXk*P;>}R2S30Tq2Q?^@Q$s)BK<%lLZ3VW)U+1-@&RVJjG+se<6FV#H|cPE2$H^P zIAz#tSdU}KM0$UF^L$6}aW~vUhN3Q+W|#}+UJjmL%~&H3aceb?h#?+ZXV_@iY}mrs z%=@e~EX2ug0$zRt4806pdAGJ?B{c_M*8_o91d|suB!j18V5qgQ>%YKdui-Lp!D^lW z$!$UFu?P*zWcFr!a}Gb;1b@g{>vZ%0={)lp5265GE%;0&sN9bseCbSJF(0_S7#wIx z5PT`TQ!0Vzo4}6>f9^qGW-&zm_E@mpJd`TysRuIB0fmF}VU!G)*taKe@E?T={*Oi@ zkoCYQ&b3$W3oXUbNdxV>dqAu##IkCUz=-Eo6pxB^2|bsLwFe{X z4kjMW!6PAtAl^Y?$i{pX82dBG`X$xeLn^1+{8fR}Z%{*tRf!X9*-lnjR)Os2lh`>! z)>MxLT@Pah_d%82RaVirrM7Ag!mh`@iVoLOR9N|`8hp$O(c79tFKf&nJ&1-?8b4~T z?;N%N#%J8EU&?D4SJ4KYqUsbQBWv-X?0b{p3i7|Sa*?dqS$2b|DZ7|g0A-iu`>_~I zwwIYBdKxn_KK*3%#?5-Ms1U5U@}(96hpS*u%!&&P09$XlYHE`d8&9K4%<=y#G`o}lwMk8WC^t?{xq zUUO8-wdkv=2J)?hin%1rbS_jL5}J%8E*4O=gwG z!6Uc`e@g)azMI^-Hu%>i!I!=!QE)4(_sxUdc&V+_HijjA5VQ$i_8V~+v>6PP^$%@~Kx5_L^D>-{3l^aRBzKf6YOXWwEAKY?oRdsmg;i?I$@#rV| zpw{?DHAb~obql?8K6M>>_nLv8oocn}C4Ly^RHwk<^HuefuaspKeFG-?&&jqkn_t!u zS?gr&mGxG(j{ed9=K|UWq$>(5I)If&;%_mPEWq=M-%7W#9%(4c@MXS>&e^7Fq*?+x zFM@x@rNCg+)*bL(K8gy%qiKsL-o2m@6wB36qD%_f5BFPJdlHuTUPyPUm@yo;7P{Rq zyMIwpZPPyvQ-wuQZ)sS)SdU+MiteZG0!f+6bW3%sbn6+*NX+c6OVwFJe^a-tp^|9^ zGEG3Uli?P)8;$v1aH{AY-Gt74NJtBuFmmBNXXm;!>~beM`i7IfH-gJV)bNKwUQjKS z<=jr^%96Aqxd0EF@$>{V)B8yIoS;i)R?b8--yHPckJ->Uv=A#HUGTN*6`X@rhlBWO+@vq` zJZ>K*+yJj@3g9a^kqqybn%d}1e!$9?4J@v@q>Kruoo!#%L4K$F)@Su(OYxtfNLHq) zn+G1(d?QEYMex~>ZK3OQoAtZHwuMio7v=!p7*=X;E8i()_*}mXi?x`~zs828hU>=6 z#w25990snl8a+QU5O1&3Q4yeoF;R!2Ge?(=UW|`MAGFPNV)w-9>DO8i_bA>G-#`9N zLg|DZiMGV4pyrC?>dJET;N{o-t9i=zV1$UfA?rTiJroq2A(0F)t)P!?_Q%f+54BbrniH4viGDf z+}F`}A=#4LD7js75#KdmK5t*oE|1~6s)ceD4mH%B2HNO#_O+XdSrdp7o|n!TTWDg5$JhsV(tM)os`ieb)U zEs;;;HJX$-cGr^zaPzOz_O`%=OIUGTSrDGsm;gv(mHKv)6Of zbJBClbKG;lv(vN5v(~f5v!2IydiL?ie)e{wXF0z!#WT(`nlZ*RmdgmwKu>p1D^G2X zKw(d^NAkpaa(Fas$!qsb_i^_Y_agUX_i!+HPjGrGcLUJ-U+%nar#s0V2cl2njJVw% zuH)Rnu5YgUuH#_;xl}WQUH?!QG=={z4BxGGzNG5e46i-Z*#VBduruD71s;2gW0a$@ zBab7*o^C&2pJs1k&u>@RE}_TJB*t@a2ahUEBTRGMftBd(eQpC819Xe=@4ihSpkmP6q(8N&~%)Yoatz& zJJOF>#*}O_8h;z_84nm27zcr-OTkR*4c|e$r$DI-z_q=>q%}}YyTLYo;F2^jh|n8v zgQwoX%KJK4#&NKZjo~5-gRzQ$H`;-wc0@b`*Q6M#gOf*t%h!-+v+#>)3h*4IJWj}0#jZ}I5+jDlN?FaOv0Wca{yFAPuF#yep1>)`&Y zhD&hV$9eB<;OvFyQzjTjg31T{VXa%iS64IqO?94vRwW9o7C`FEEAZ7N)ZM$mQyChM z>8NtYfTa4tr?!P#uZ@PbTtrD$`*YKcmIPi3jZnZwegPe2_zyop=W-o{bQmPMR%Rim zp@tYoYTr<}=`P@*`Y0zv#&k)P$0bOtAkd^5;twy~h z`bpbRGY#cf&F8qShtuE6Y}mo9I701ojiZ`@lHY=q-+`6C!X7JG4~XE%$AFAYpx$us zun}Y|!I|Wt&MCzDK_03dkF5AfHsr-$sU$U6SyNU==f12mdd6&iB_r*-FxY3<`u$W@ zLYse-S#cEhS|IHe=uKv$I+@9}=y{z5;vUQ1_hF87q7$+M*PR(1IV#Oqw-Ng5O6Y?! z)FKr*a;0Im#R`tV-VRwME*$tGVYx%-z4XT+<~x16Z&8>(W;WeKGn3)ocpMG-e_k=u zV6#VaCWkZr#WSWKRazTXJ*sft3o{3VZ%86@N1sDQ9rj+<<6md>;sR?K|7nLdp&eR` zOUrZ=^keY1&ggM%A*-)baYPgejKak{BY{ybCosOl+xiaZ`V46?J5h)%guxyGvhIYR zb!}AF#YtPV;trw$Q>T+yeu{*}wIsoe59=S+4n$oFJ})**tN%qJ`F*)dai@M2Y2?Gf z(+%PC@}r=R*6Z{Ex*z1c+|`|iot_Vp?g%Sg3Rc=i*Vcco(=YIqI|~Nd1bes;ggX3qsE!gKaFp2%}+na#?c>$V@ zwX)jzAU%XvaWQ)r`V0SqK%D|a{}48M0XVw`T9R1UOg|JMFX2cJ(z)0*q*zE0er2nJ zhXyxAzhOiDd=njRL#;mO5bA~$c<1Yy{hD=}*_wWu3gl-m3beyK$Ep_4>GxQ#=p2bDp+ zTt#~t&UZxc1so`9g{&jleGz?l>H3Le{%m9wqfYoh^h8q_)9^%J6220zndz*2l%xtf zhzh?@SRfkv)AX)xgae*Voz+@jjyVyedxPW4Zrx(~QoGRCSAeukHC}Qr>EL_Fc)(n^ zL^tO~IzA`DXpiB%t>OMnUhygPJyq8gYMo6ywh@K>ZO&gbE-`hf&}O00|3w`)Q~w=J z@z(In)P)tptIFwlwg zm`)GvNfp%rKD#pZ_4`8pCQ-7K_7;90t;lhyi(g(|RNzyB44Ua0iOib|fgd#mH4{*4 zAJQ}k9HstSxh~+2f3~buvV6{>&AdAEg)E)?x@SG;pFiLPO!VWxW||w?zk-*C{MHrM zw-4(XUXy-^G1(vSO^}<~x-opnPSj`hA`bDHH`VafSP`GwrzQ`p&!;1kA_tRpQUZnZ zhv*{FBcm_H#Kd%oIUDPXof+pJ*Dmf{yghzU{1x2U1|;0ZonkTG$L(;;h$m&^fF%S} zvjYwDKh`_=uFXafkqI(vc(Zy#ygF}?*Wa7Pn~htNw}iK$ zx0`p6cZhd@x3~8nZcX>@@ILSb`EvPc`MUYW`PTR@C##anCr?j)kP?+rFeP`2I(cVu zRo^q;a9=T>kymPcO79cz6tCJ-(p}kA(pkV!8Ktk=u7nrwWWS9bct3n<16bsR&Q;Ep zTu*Tha<+jX&kYhZIAfg!ob8+&z|6H=>)e?@`TgA+-S<7go+6&Eo>iXvUcI+~x0bh! zx3jkkn7$pOleZV!I?6lVJCVy6?+EX|T*i54co%!udAE6YF?M*jcsF`Cac{r(wD$(v z_}cq{@y`3oo9=z)eeQkZ{p|hi%jV<1sxPzmoA~l*XfO8d$W2zcpiDKa?}rbc6+wT zn0z_sWCmwvxMzT;7w4s&r-i2x=sVR@hCR*g@xc5idEz}W9+M}`qjZ0DKLCZVa*uYm zcc+58njzo{rj z0ZToB+`}eO<)V_KazuWKyn^5Kc#;pRMCL&Yr8K=YT{Z2(y=Dm9bgHS4$zh5#sf}O2 z(?^XfsbV`AtKxHGB>~YN)Or_$x*kq>prO5tM=OAAilM|1S>hV-=<|rXvVQdu9lu$@ zE*20`X|Q)Q5cD7r?R=77b{Y=DNMAHu1Nq)VLGqIK{cg-;%xd&EDi}(m${1)2#!DoE z4#+rCV=P9S(N2=N+vqWRxwt|2R%3!O#u#Z7|4h7245KmJsAW5Ug1cXVt{;M~Z-B?o z;BvXmu);9QFa|u`6$MCRR3E8ev%=stGpJ4lXDPf%uCwNU3YC7NuP$r6>Is+@N`%J!#fMqI*L9-fub9*YG0jE zlb_;NM$U8rJ_iK?&JPAEE;Gl)V65}9wx7(%DI?>ef1VN8Ta1z*rgCu0Rlv%1c;6;) z-EBe2-Qh0<&pZ@-H4=__A}q7WKbemY-6Aw6OJT}|7u_Dz2dD9L6G__F*yCRe1PgX55v^1}{f+_WhoR!n%DTmORQj3Vx0N!_otagc z7wqi~_BjoP`yus0I(+v%Q1~g1h^Q*JfxY*E#D%6rsPNa()4GtJR)N3;8lNUtYX7ok z)0eK@9x@hh3*%j%8l^n-il{_$vj*b*vkDUP$2DEx?abiq_vmYcALAvIRL5i$iE!sz z!MvM+HfJQ?to>OD=|TntIP4-_i)+wSk0epCby%ISav&x*9Aq$v`Z<1j2SC$PVJF+sB~=zQ?F3D0 z>Dqd!yAICTK=Sx-T{qbyuP`Ytv9Qv@Z~A@cbJVAI@bnOV)52wLBdUtU=$2>TLN^f~ zjgesC!Enia=|=nqu2_to=$m`MM0V%87mxR4^x;-FxaYPY==MA_h~Hkw%KUE7mq>@% zL}%kd-giE_jkRbxL{H&LlpEb)tzDskbh}*!Id8&Ac@mk=bwg6f@V-b2M%&=R!4c?m zFKahyN8vzh!G~@!zI0(|fhTBcXyOB3zS%ph?(D(Vam~p&!lE&qc8Ayz(++<#ccdFax0sW`8SsLKcfm$^&$zoAAN~! z@Q+R-9q$Nkcthcvo8dgyfG)v8=uAGU)6_R`mF|j%#xHF^a9l{PP!A0Ke7Zj{bNiE{omu4e%^?kxuVV`p-w*XL|co{KXi27R~y2*=aFYuSF*m zrsrdaddv@&_ym0RNL>$ISA5?V=`Qjc#X-ND^iS}gsf0Vtx$x}Z z$kv`1Tu}R&9GB&IPY=_!*5(iTL`qIU%>xj0Q+%qOI9^{0Y@L^sV6Ef6u|`^-H$+rl{{@c z?L9R-X87ZY?vic=iig{-Z}6~v+?PCdPe0Fb*z987p5C?I$G#|E72gmr{3+jE-*ev^ z-+SLD-_K`rzho0DUcBN;K=awX?NXHqD+U~<0X+{rn)6i6u|r}pT{aDmrX9iD3@F*IhAKCak~ibU`M$UnQUa35 zfxch9*S_1nGroNstyLViIljrh5xzbg(b~S!zC1pgFP6$8yD!YA_k~blC_v|5!R^nz zkGyxiH@#QA=fU6yy*s^|LHlbN8@RPqzPFf4WDpfXO>aq70TR7AyeiKR&vUT&KF<=c zcWX~skHZrL$9)z)eyqEVyOcW?<;V%wbTGBU`3|PKyE6~Hj{E6pEawQb-$X;+%I>j! z!H;h=J*5&(gvW3>X&_mxZ>(ET)D*`v?=s#VO)Zl7CD|?=&B;mMVWy{(-%>g$G4Xfe zHQe#~Css;Kz-{_s!aCeMy5NnMJ0U#&ef*jD74gI4+u*ZUFy2af%g?y`xJ@sN8xYqh zt|YiRJGzfou~$fMnT5wpb)07OaMibB4$_x6I;L$*nV1ATr>{hBh#nu^F}g~0N_2SC zhp2N=E75#3k=^pNk)O#CKSWpJFxcr*k+#TC(@)cL({=di&89i<(=F-M_2KWKFn%&V zLOs3PxEP0z*2Z#1AILS(m>FL9o#8q9=F4OvZbo}C4YqnDW3*vB?s-$WKMk}!8-4W} z!!G#jTd>AoSYh%9C991Zx*NiIr$o@P7Y#`sV_tdWC$qe`u{5=GRbx$K9b;WaJv`nU z8k^wM*Vfq4*wxsb(G9nej@)lWhh$@(ufwaWq3o_?tiU#wF_ttI;r+be?k4=9Ps5?!P24+@geBw9N1?oxMw!*4#Qd9?+wZk z$>?=Kl*L)gw}CK47EB0U9zrwy0fp=hxLnbDwvC>%wIEjEjy4`N(+l;h=sIl5XvU=x z`i`0)n+os>z?GC^p{<_g&JcN z>~e-{^E}X#z{-ndHM2+z6ddzGw&#dE1k-#D+-E*&rtqaPZ@u=Ftnha>OfW1lWpn6>x8DLgN)rfq1Eri_fl(F5!4VAFSflY zGo}%Uy(Z|qBFMY~`&LCp>!~RCOBsr?&-tkh3UjMCmjdwN4(3)AsN4iDPoS!lI6|@i zXSRJo%kq)&0X26zsQemQ?xUdaJ*^Fef*qw?-c=$EN zb)*(^vLuMx%8b;2u!ZCKOV$&F+UP16`!Jf3O>{vnXLih|vJ;A?_F1NFqx5K$Jtm@BF!}*1v)Vdp{bH<@B>o!b@f#y^Za0Ag_)eUw)hyqd`Sk$pK0y znf^@p9uW0x5J(?9~3v(rrZHF`3lyp6I3P>nfx1$fI-0S>rl*VSilmexR^;M<3#2 z*v9{lsk4A?BMp{y(6KGHER)F0EN0o+BpYUOm^RGJ%)DV{W@hGWIN2~WGvoV4*?aFh z{}EW0M)GJRS65e8UBtWj2-97HhsF-j^)61^!NMzHjs?%WktkP3gOr8L?&aLN0(3k# zXe#XU7}oDJ?>XFe9_s7Ku$%qC*sX9`5LCK?20ItMND|H)`IuEaiaK|sqBYLXCd$Qp zWM&+~?V%UB+%Y(B9FR>w{cM*hq>oVrj{`x+O76oxSCkaMcdfBF950Q(NfptfyVy-W zU#q~9@XB&9@MAKr&y#X}CEytf=+wYGu<)k9i-8Z|nGZ2h*oK@ED-(k~z|UEt$)Y== z@1l#MW`UanF8E(B@~TLx-*UfheiQs&7wP7&@Lw393+M*FeTMApw}Jk+*;N9KuL-;+ zDvZ~11JNAOGjhOJNaUmz?v#9zMoDvU#~6g>@6;XTd(=5)(K=jJ>Cwpd1x+s}q5hoeBaUnJm~K6T%^1jqQ5D%&q+5{?zaE9h7OGz0P5x>5rsZ?zJ6xb*p>s(4PRND^-B(&b`?Q>MTMKhbA!JU`6FY|F$XjXYt1ShfsvOU=? z;9cjzvmVI42;v=SoMYT%JZ8LVd}w@Od}(}cd}@4Rd}e%Y{A|i+Dq;#W`I`zEe;Pj< zKd?R-zZriRzjOK8_{ezA_`vuYq#R=^Zfao~XoBXqGR!>ORMK!ayGNEWGb5uOTa&OQxey$Q0ap0S^?i?O)jlVQ5Snf(Huct-Xt&Tko%hSG+ChMk6Y#$;oC<3!^j z<115;Db?gLl`&N_)#r6}H4QS2H_bH7H!U#DHO(+hGX2e(Y?{sMU1!>6+HKm)+T*)C zX!^%=-gMP;+jNh0+jN8LS54Qr_Q3Si^uqMq^qA|HOeal;e2>^|+Gjdo+RybZrd6hS zY;}}rh-n~e5UanbhpCOJo~f+KZb~vmm}KnF{OrMZ?BT1%qsEQw`%%W;#*XM*+8Em# zI~%*PIvHD|e5vL`<4&W^Xb0IlIX4^Ajj_gXqudx^ENm>q$&XV$!xymmeZw`XnA3)n z%xxYrY&R^S_GxDD8bV;kk7ut!RntGaEsT6lc2w3Elqb`&{>sWmH*y+{OIuXgfz(%1 zsJ6n=FTwR!PY+MKm9~^>tXNtYQ>6Qt%KR%e8^4bo%p+zeKTBRj3QRPPd8=?ebSCA8 znI4i@A~7)GG`w^(9H)cGaX*00sAGKT_?Wn#c;oFR6Mk4++qf!mR#I`kk%zc9c46$u z*p9Ka$#6-E6_ep|CT2YuEp`mdLArwS9L=$s}~H6Oi675 z3A@0+IqF<>F>r8sbq(-sYw&I_bzj`7yD<~o5~WB(5OG5;o8hg~f^z`{H}u`oQr(gJ z4#C@cih3p;sk#5HdH7u~BGY^s-1sW>YV}(6dS1b1^)}r5c7pGBalT!>RlSMdEJu$r zO+5xpN_TZzbyM(l4Uo0q?3V(YUH~M22_}3KPV%$BTEoCtE#W>(g8Gs{IiYZoQrN}< zXlb8-5|4sngt^1%|LHq=)2(laqM;}ZVG2sv-@W)i_~;KH)9XGrygev7Hp2<7g87|` zdSWaJX@L{$g37fWs^pgN#(%*cHv}Em2P4-7DcAC`(*j~{A?v7*0P;m1E{`PsGxOMD_z2Li3sEKc& zC4UVw>kr4Q;afZrE;j=OhRLVCC<(Hx$v3-zm0N*B+k;2DvY-2bUq^v;r?ThgQ*|vx z^S&G{yP$Aii>hY}SwK5k+vyr?;^)m=+aGZ};vBWl6>7DU{Ir!m$Qrai+eqL%!Eesd zWjIV-v>AQ;W-gCJoaNqEd5=%ieb~-cHn812+>m-%fQJ(c6ui*f{*~j*G(O=oYYv0ZG_p|o$ z(K2GZ|;afuQP^p|!x&W|Dsdg!G71^J5`9(S6LLi{BqST?;gw#e`xYjN?PH%J<_{ zJrh5@_Gmqdft(^#g@a%JhovVnx%C%(pOZY7@ZbOx(@&IFlt)o`ELF}>j)7I|sqCn1 zi8pT@Ts|Z7}H^W##F({yrcjdOY~qB~wXX;p03{+FAOCR4O?ynE-;8i%+A5s3F#i z9;1}#Ci02`(Jl)q*8>Cl1P&tSdRpKdruHTWjsWZS4jck%-a#JrM|kGllj6{Qqg@QNtG9Nh?XFX!3owUz71iLXj3-s<4(XouILcHU36bS#;f z+f=_ovT=kd!%{bj>c;TL>@veu-3&B2ebv+HXx^XQ7^jcKSv8PZwR6bqji} zIve^AEXctyO=wg|mTD5SyXQmx4(%7#g7574bbPmaWr{J@8&>w;V5&4*=;Uwu5WH@?qwci9>yAM?r-jG?qTlc zTivnC-4T(VlBp+ZI@_SdN&7njA(ygDATm{Bfad2ik^rFyLJc6X0i87>}re3T*rU9nGrlG8X+|tR^+*I3C z&g3$sm{im^x9I^aG!8SiHRc&hg1uA0-T7hUw;G1gYlx%*+0EW=gMuVF>r>WY)Y+A? z6q#o-$7fc{jLdk&Jmn;&MC}>=D1K(8H%?DZdxh&>$FwZGKIWqH$cMtdK7M(plgBWr z8kTe`X)%+lnTa0~carv4otzuLga>4~FJc0*5sB-!G4S3tPQ0c4BPj*lMw6*y;~47f43@8>f$oF&Q!9=tt3eqbH-M z&cW;BdDOwE8BrahN=4}--$fpdoF3T*y@y)=0S)y^{cw6aIi!mJ)ZNw{qF$Y%>#u8t z1GP&RqYKc!#)EpVb{YBNJ@B9|rcKm}HE-dk50Q*GS2J4E9fyz7|1s2GnMi!0eh#jF z#p#*)5sn{s)%VDGd8_`R@z=;f-71X&F8c?!JW}5z|K+s$I2kZ|!M>Zp!E4oP{=>st ze0X@5dJmfHL)_;y_q_=N{zCm;{e{Q>(&W?RXBE&CV#^ZTc|sW_(`eM1aGpc15o-c8 zg>fDE#l7F~T-Vem+15I+_hk62J zSHofS5?esJ0*3yLN``@gd!x2!kLsd1jI`j4(Hw5NC94J3e!FC}1-JA-k1+@}#_v3B zfn%QMoBG@4oAx`#RN5JE&t(wM1G@QdeAzeOP?Y?D3;%^0BR?wUf~-PdIpaq`<5}U){yAl?3AAkRK{4QSo z@BH77h=Mo|hU0jW4cnXp<5~h;jNqhF2i-+mA71VQtK1iKI2hDC5zM@Z{k#UGycP^B zpxRv^&=V+nuAu0-g{J2o>i4JUdS3h13$8!nmPd3tUZM5*>{G)F8u+(Nynf{U`=u_Z zE{y&sU&MEQ`$4!3J&>QT!y!QpRG3c5FP}mv(AV(@S4Z%_CYYXtLan5h(xL?tG(yQ7 z5wT3tMxq)@Krdvb)^bw`+Gv!e^V=lulj*zFLv<+JZlYSuq8nr7enqLx{^V4Y-#NI& z!pXtC-25zT#m>)W9%1&=v$L(JRBEGFDZz1Tz}F_4_eDwt_<{a_&`UY&n_Ae!(JN^E zXHpT3L_N}zso7Q_>^u;5QPesqz6?jf&rz6({0_!`!jXK==Z?M!{(33L;8d{n0IIsC zbVtgdH~P(3i<<{+!nhXiWPb23rtOMIE`e4%po9$+Uu2@J zEp8SP(M{1BQGZhW(m>H~0`CM~!`1mg;Pb#&fiH2XyC3*4@PjBA2fO~FJ)$=#C<>Fb zJ%gl`K=|nEqI{t5VWjo#7WE7K8fXis=HC@&vvLtnk-`2-|9=98lS4R0QXOZPaB%Hq)jria z)DV+Z{YlKrge6`MJ{F;I?#wja7pj->zG=a9>JtNA96i|k_ekK$CDUZEaz5|!0~8u= z9OkCsD|aLKlS;-hQeM>)eb7DJVjQr=^;k8ztc>=eDef`@(dv&38P56}-Ss)t!{y+b z&ypz>$;^q7iR)~iPEPQ`38mYzk7Kq%s1`lPxsVMZ<9YQ-Ao0IdMT36?A3{me3zd-( zrT%(l9utl$QT_bEG-@(BcoF%S3pffwsiBUNYj{$AimaA4vM;i_B;Y8}>=cy{(}(kQ zD9V`5qK~3JqHNylE@Z5a5q}VW7IzhO3=H?*USwO5F8)~oKg4TgZM#tevX+L$`xD!6Y)bhk>5EM8!ni zj-DK2j9DM6ze!#5Ov&0&S+meED89Pf7$U2hh=BCP-s=JVuiksYZ z9EfLU6vnUN97=|vC>g?;dYhDWD!T|QV=pwkpU?&LH0&|vM^(_%xE4)C5zti`@aPDT z**?={({oT_drN=IXv8tQD+vtgWoQt>dgqtoyC^Y(>D!Rc*a&3v4HCKkZKY zaQl5nF~@Ajb;lFOCWpb^*jC*dYkpz+*Z38bXERnX&NBI#+MAA=^PAP^JapzbbB?)- zdA~(x>1(;nb5*l;wGOq8vW~D0=6O0;8(S+{?cDBfd2e}Wxy>tkWO;4*YAs+5#9%Ru z-=tVA)?908Yb9$HYh_+xS!)?|b^I7v@s+Tq9h14-4&3(-6 z%ni&H&0ce+S#Oq_zQdNEGi^0Z1z(pjMbkq#$8j*h*vt4A3KfG&di3H`Ee?-r(eTiF9SclDQV@>3Z-sOZJQcP0^=0? z@$|{hNiQFrTsJvA=?AVU(~??}brTMnzJM#tgv9oV6%x~Z`7Kux_9v`Pn4T~wp*30K z)&y-re%w7y;gvT#elX7EW#cnQ8-GbQ;#v~gyTsKX%_S`Mee7wxJ_f|rB2iNk^B`s? zc)Cf9CB{Gca`e*ZuF)l;!=j!tnK(YGX_OnEkJpjMA{RvVjI0uw9_f!~-T_h(2kV>S z@gZ>2FHm}H*3HHxva_xM+G(>+%QWIc?FsEh?QHD`ZC7nWZE0<$R;hW9etNfN1$vLk zIOUAe3`Kp_i9FDTaMewiP#mC{q*<(4N9xN4e5z-Fy8CH5Yg+TW+M0@*TulZ5!XLf$ z3-x2Lwt$eof{z7c><2a$gN?&A(VApUHq*o|yhDoN$yb&{^Xfdl0iM?_d5$ic9(arN z;nbbyZq2RrHMKO=xK~;DawpHB(}>ybWA$aw_%4w2LXh+zv>&z5iKK&F{6S$a!7bN8 zamU~e*MsqA=hIP!8jTSOz+VBlm+1EW6(1(!B zQt&^8>Rr(7DHIgjP#!OXHJ$@^EI2NV0}~Hmwy(2~iEhJrM|kP(+|rBHo5{m|pzL92 zGse?tp8@t>_=HDBVP?=|%r*Yb|5JjHg#^Gzy!eF7>;(A6 z7<4AlTqdKYwV|vnhQoIWUT-nqwK6`9Mq^M^d!N3!4|#v1sSoDEV{So3upbStkYRHM z9{xTPfj{}y4x*+|vqz$QS`916xfG14pkt^Gds-Ll+zvIwAk-6r&SE5&qd9j1R=dpqA#wO0!(g9h{TE+3SMZKFO z+#~oy9#tQvE3=PvfNRIqr|8n0RiB}PJI?P9`PN~s9p?Uf>6UDvaul|+m~P2zo?{Zv zH%dK>qq85CUKi#Mn( z8u#K0GKp!$Hl&-ECVMjhkG*{Oeq0SX3e&d;Y}1Fl@`~tS^`t4jP+e5*!PVn$kWmxz z)*Lu`s8of(TX(_Id*L)^k&oCDG+i5=fE&fM4m|yX>BIYY^ZtvY$4TWe6d$`$sjem& zah7s|au{=CEl6_t1D!#XGFT}=^C3e^9m$?G1)5iUY?-80eYOcG6-}wd57Kd_&0JE+pPZiePyXucfe%@5%DJMV8=B=Jw{p zOKuXK6MZC4(1f<4G}C*<#3kXYJL2Q8mb{X6;$h`- z-5ml8k}x&@gapS5Dc1?S z{*rPRmr{}w-^f171LaBb3i!p%#fkYE{vy8=LAWW`Af5U#?iSnN`}^Xe{1k2SE2it7 z2TOvh1n*H5Rh=d!Zzb>ad8P)fs@*CZe6$l6!$!({R3^po7F3@P>;OS8t*NmskvF3&J z04t9U83Xp6!Sf!#8~q*mo)Mv0%*S>QT^ss_Nr0~O?oM;$-r&1=J9@XVeDl^J7s;O) zfWe_IydMuT?brp4M|MblrX0JelF*CH!IQBfevCTQ*L!dYNu>5#h{}FAf5&dBuoL`L z3(v#}3Ny#SHk8mU+K~SY!=u(C3TX4EQ2`CC^iC3mF^M3r-^?EGOiL>KOIpNtGoeG&DP`1nl#6rZMb% zt`Dj!qTG0(-KeXtyQ+`TmnTJV7ugcWqlQISijl@Fi`B)phjaUm$LorG)eiGIw18|TJyAnIKVYeKai1_F*Q?+0{8(=4x_WqX3OE3CuQF- zB%)j1Z1`x*GPX1>F+Mh>o4T3ynG3LuUw!^mDwuiObw$rzM|Fp-pi{ET#3BTWOJH(cb z{kKlo&f2cp9@t*nzS;BJ3)u_Ue%e0U-rL^UK5$DxyT~rLEA2scsql>4BR{tlW)YaVXyY;I((0(WmP zN0>gMIvHrPqt{tx?0~krG(2^8<1FKL<6%w{QFG@r%ray#^H?(LbXJATlbL^#ELlAL zJboTp{HPbA?I_8=`6u{J_rV!YmGTg6$KT|id+?fmki3n|A8s^b*}W-9_Ct-Ar9SJgCd-Z20Ag zv~Tds+k#u3;O$Wr{j`frqXaY`B2?7x;ia9dr_aBs~B%>>O9)+Ai5{|2Ye)+_~$ z?`9kSXijNPv%Pa;aDJ%*XOc3|jA;87b63(-v9Ny7{K*t@47-Af=00Yk50if^{h7kHGV(%zd&vM9cKCe5&$zn$HFq8 z!LTrW<^k&zhgUB7pTBVlF3X^jtrlLJ*V+W#Y%9{vg_*!!XuF3q6F7Bp1Z|g`VQCSpLl5afw%;vMjVP>12u&U+${KZSEtHo2HX5wF)W;SWseO*ef&Q< z=Go|z7l58Op=b~=^F`mf#C+#H(DE<#dYEqpR0AKZVnx6Kr@_~{e0W%3d!4*PMNzd^ zR9C0&sm-Yd*925t3vJGCWqdnyKV8rV^#FVJMk_QxJrs4(L^MDPz`iS30^(gkr(-kd z^|<;1uIM*d*VI>7*Xfr$r91Lj{hjrdORi}OQpJU8A~kUwKk=FvuIV*VTuaxOnYR_{ zxl*h@Il_chQd34#K~qIjlYGzyn#R;}O*u8Do@~HsNZr^>(@N8Z)zVkz)nsb7JdY{G zBTMr5VjTMpjft(tQ}u}sfS{1-NOjN{++CXemPVDKWa1z{RpL8X{5$OXe|R4@p_o~Oj$|ro@?ogYJMtdZ zp#~~Tz3AotayCvikxWpEK-ph82447_AJ0)cZb1P*4fa}aP;bt}V`YweGxb_fcs}$& z*XfJwq}rRtBx?t7$)D&xV$ggPLhyim$z_VJ)o(LFG2M!ZqksSHMuuR*r|2ZjGBm38jtnmL&39FzP2~T+2|U5*+OhGyNU^ zhL`v^+zGnoW1`RCL%k1;$6Sz7dt5h)!Z=3biRZ8QjBDL7)X&2dP4L}_^ZC{Z_<1S} zbX8m_G`Mg4WSZ=a>=8=X?KmO-B{NEYN&mr-p@B3>@YzZYv%v9tmPLicW}%GYgm+a3o-Iz+935a{||iR5;i56m`P$IUeWe zdx4kGN1qQoh?_^7z)a>4&yvLQ9Oijo;7w5mD0@7Zd?PvE@5L7J-;(^~Wxpn|?~qI{ zYe&-cCwZ#83f{?`?ZGvp1YmAKF)N-(A0h5TQbi# zIZ&DITLAw4+u=0YFvDGhG^3uOSs^c}>qesAs1TCjL(pBAAUqn}n+$tRaAC56?o*-7 zCwaxIRN+_t%C~L@Z4PRQs;95~6MIY~TgSVt20Pb~T#-}|pThe&k;Iuqab@1obvSXn zl7xV%m%{zml(t0`-$0xmxG})%pHbwh|A0WN_@dlTSt-OF){M{Eh4AuWjY2!{DOnjR z4ZRq4Cj3CeVES$);Q;2SUuv3Z{j?kC9ADAf^nLYvBZDKyL}f>Piar!GI95;M_N6#k zT-mr~@oA)>OaW8;N*aKZn>M*}^2Fp=_t#3%Q5)R>u|Lnz+I^* zE82nfR@ydzKlg$G|Fzw*J+r+5pT4#|w>_~v=BKw{$U>^ggv{ZD%X zdk_2H_GR|n_J8fq9fch_hsjaWQNz*5(c017F$%nV((&0D@2ueLET9EI)2>`U!4So7_x+3Gp_Ge>|U*-_fj+%dp0 z0p@yvV~JzAW0hmQV~b;lV;83_j&+V@+&+j5Q|x2x z{p_vndG=Cvuia(O;j${VMN@lAdn;BOdk1@W`vCh0`#Ae}`$&5qdoz1kd%9i9dvM8i zkauPiYm05GZKG|4ZI*4Mt-Gy-t)8u>tvaiUt+dTyi?R7xA6k!CSAw_)SUXr7S*u!0 z&=bhACet5)zm zFg!4%Wsk%kWi_53ZVW}QW&WLM$v91dOo8+@=^b$I$RKCYAIIr`(&pkeotqX)%K7Qk zb*U3@P$`$1kn$_#BFTtj$hj#`9;BR{%VXps_D!xsFC{X$aMDwf;y2>)-8-pKQmLfu zBsIy1&k|23uE*m;;Hxv>t6wIZOjtqYd_xq~s`!`8C(a=su~fV|?n&GxrV~rUO+Sp? z5<3hR>I8De_r{EjsS%S9{U!Qj^up+#(G{Z;qP|6)ikctQC8}&xd{lmB5O+jQjqDOx z6^C_|{*(TyewTh8+;np~LI!<=z5u=+=RnhQbOT99ER7?3gw9X9&{gMvsm);R6s-hP}*Wy>b z1$4a!gnSBId`t6C^OWrJSLDNd)fUuBwGqrnq~Qvm4F{g4O$N6kcHy>I5PP^*rY)fP zpm_wIKB?IU^SvCzJsu{!1H5z@aC9{O*I!|~ufhr*Kr6Bu?r$Qvql3D>x;%Kz2%D(~ z!v)~v@roY$8L-A$aP&AZVQU;BO42WjV@|FRT=X4uz&lU{3u=xY@X(D&YAlW4TPjX> z5`6A{D@?DWvN%CT^d^w-ER>}q;FfTB?^M1cI7#ZLfCn}8MD3{B?5|&|==2RZeQ1F{;&TISa zvepsI)76KVhk^V51~X6Q)lY{@UkdBE%cpEUPyXL!dj5hB-MjE#ASe}%%rW4p43u^` zxLH(#WBxr$*BI4+fStRc&=}6#-gx$tFz+{>`MufjpR3VmY=(8-f~I%}-1Bjq25-QV z3JMK@X?_dm{Ehzvf#@mJFv%(GekZet=t>z%ymYg@^yaN^3a4NA`9HDdQpG;-Vq@%KtqxQ6~X1k)fNcDC>bD87x zF@82*s2_i6escaz^Ih{(TR>X`7go7esSVbuScng}uHY6KNAmwHG1X>49`ix-k|Xyn z+q%vt<0@Odz-QnHpM}kQN*4P*CzGin$7)7uhG_cJdFe>Er-7yhue}6+gB9o5l=yo<(^EORf1~Ma6x4-LoLFsp%y9d{Sm9z$D!bb}$6=wzw{r-H) zH_CgcJWk=}Au!TwmCNwQn+B2=62@Dh)h(@bfcN6yrK3R8383mku7%+9@fp4J4WE|d z2nvr)Frnk|@Tfh+gn~!ZjndG3&}o^ zrSVX98w9;ywnR2amM2Rk*ZKsm4DF@Gr8>zM@YOEKV##<(Pe}ub2WtE_tYkNF1+iJ2 zf@hpwTu5|O)DT=87tq@OuzzU+Vq*Mz1o#E4AP?}YC>hO19*%P+a#fO;Bs6nNLEN8P z1qKBi4_FYeJm6NKJ#YotE8|74QEc=V?rm--t)C3>N-WP#h^Y z15k@kfw8|&g)$J;#WCf;pnHms@~g6)(v#9`$uDW9bfv6}>=AqDZ&q`;Q7)B>I3FN? z%oOGd#S0Q{Oei=yqeTCXANVHl@}Eos_CdqblQje`cwg{iCI=JgP835yT}f3BUGM}H zK)2D2B%-lz$Yi2`pP!-}DogKUQ|J@i9V_wedJHXFQC!}q@r^g1*^aufyPshurlY7U z9;V{BoPx@uFdXz4^czJ(VpTuUQ4hkn;0D=*m4XGo#VE206N5uJwzf0TYG!hE2VO2F z^5pBvPsmeb!^lMJglc1-q`M?ld{*3?-oji_L%9D|XwIeLPU4Favt+td$)0FJ)pC=+ zyO#WkJV5$bazPR=NtG&PSAt5a{6go3uZwu6uFAJ$WOzC}OHx>UzWr}U?1v?I!)M*A zsR~c@OxshJpu5O))9c7ekxQcTM|FtK7ritlFV-)1cAS>Es^{^w;%_GONQ_UskkldR zLvkKjanH!On3<|hU7uDd?L~U0^tmNAyI%t)_Cxl=_9OP=_EYu?_G|Wg_Gk7F_FrJxU@&qLsM7v-{_c<>(?>L`3Kf3~4(XL{y_O1o4f87P$3GN(sC3hVVb658m_e%E( z_Y?Pb_fPi=_c8YrcP+Qpb;q^B)!S9gWpU|T5?4W%$fb6ryNbH1x*EA!x!SopxH`MK zyZX6?yZ&}faZPhgc8zllarNXkOgpPjFrkDNE1 z7oBIE|2Plx`gS-sIoCQ@veq~^IJY`?Irp%3bNhDZHqLiD_jA9a&SR{j&Ldnu=-lgj z)N1Eq=UnGZ=Tzqe=V<3Zs)9z&iu~mUXEIentTWoFaRxaHIX*ZZp;5W$xZpVNIOjOw z*aya+;~480=;-a}!}$ouII4k(tSQt4%c%lRaQ_F6hmM<$Q;uzpd5+=i+q$5ByCcyN z=J2q{bfTAF|A{nP`g^KtU7ooXQ$@kPq9l%*-dQd*>xNl8nQp!@hIc?HUk_Q}=A zMT|-IC&}eh(%PhPN$ry=fvV++FA|R?&Q0u^ST-?+M3++u3lh2}luQVZe;mIB#YYvU z6W_+|jT?pTNe?f*HnvCXpRwUF&tvwW@n{f}4wgQM|8%|R?C3ze^7fN6-X|)LY(z!m zbC~I+k;5XJ;pdSWDb>H#Ujj`p(vQ)1)z>5cGljHqAt7-u^9mz$ZFCht(?QzzOd=lD z?$B;xZP9Mm?&SIweDl`eMZK15`?SZkr_qA!)h^eL(l!TYCu>8&6Cq$=7ff|4Z7=OW zZGUZdZEKk8s$lNY+Opb8pz#JwHn!1r&~`>a(p}qA+nZU(f!ZNBhz#-FzYX`OtSt^g z&tzK~wpjo~a}%C=8|smnpy;7KM!EqUp_@s_2)z2fqu9O!#u8>B7cs9m5=OcU=&U}d zEk~U}kKCW{t_NU=gXlWuz(se#iJ=^7-y}2)f*_s!07RKWeCXG>*JbBpnh+%%kUk~uie{mEQg zEihDPs)@lMsv$o2jG?GBCR1Z9^-Te;U|w#C@47JIw}(A<#J7%uo=<_F1=jf)T4}qCl$=0)A6dx5Ts0ZQ$p!KKGScV7&Suy*B)}7y|N}ipF88PgOAvt-~C&4?BDs zc|jdMtnZgTatt=;4LSXi#NQSm6d>;ufry@V{NCsK$bb7tqaEPSv&w zRsVLh{b%T5+ycSg(>wqVzoL&)2&5ZEzGo~G0O{0zxp=A9BK5O5t0|YlwGJGKW3)50 z3$;tMi?s8!v$Qi&IxQg2Xd_4eUM6$*bKLJC18g_vd$}&$@_X&$=iPitw()sc&u3&M zpNpkzWjfAbMs#y(;yzhUTT)w;Pm6^rGKE*B;}t5jf!h3<&s3Us z!QCgB``tmGW(9xY437N4ny%CYHDS6PxKu{NZA&$U;k1Qmgc}_H|FHjdQ+aG)pDv;f z84Jq(J$c&z#Y<)C88;f4Xqaq2cx+*2;3_i%yXnx(fW7WQ6;&1WyMfu;K#rg5Xnxkx znHhL0P-V!k zkZ1T#9}d}sYw#3ui#sxV=n2uOzB3oL6{m(is5{E4460C4;x3^Im^iom~`@@@7h2gX)F`!kN!P8zm zj9p42XgZV`#E(84eI7@T?M%o`1SvJe@7GHTOLS0>;wLQh0mW=o2vtDPI)z036Me%K z`A(SCreNqIvYWD9=!yR(Q@Rs#cjaV8S(x;j^oDe=bUqFjjmhuRNj^)?NR~?aNGjoM z_g1`DJRZKX1iFn(P9E_e;NE!AH_<_SnJbawtrNwGT%hLmqOKsaDmd4ri|ix=E*k)D!e%KFRp%3g!>OM+ex zDa53a^iYgv4J3)A1?hK#6|+!SELV(EGzKwC6a~>%R94JT+`;)e0=D%SX(g2uS&9@m z<3D+{4gc$l@M`!L9TVAHWo> zXG+?F7H%)UZ9^uBF7!TiU0E`+w@}69q2Jc2KB#u^3L?lO93I?=8OKJbIXVXC1xG3m zDXY+@sDT4`18S#=vh_0R63Hn^9Z3kP<`3d8yr1XAbMOGPhz;Uq;>(gAQk(RbY`eUP zqKIN;P#rWx|Dbjm8C+SpBxpYT^?3OBA&Q;K6(Rm%Eg~AJ7ck8;K4NTml`t z)`U-qXaVa`2L@p=St)MKWn4G9>dQn1fSyyM7DY!#uZbxi^F4M&T;;eI@!jKpB=jYB zdqPrd(uQP9^6Hd`l>RBtQtPGOPHU0&F}-K{YmzZm!a6s|Jdcyxi|iqIolP`+!J}b} z@ti3VpNBivQTYq>;c`AGA zd769LvYL8odj9lSJc%BSC&&}%$>)CWe(1gg9^dWW>|X0$;a=#T4#(Zc-PYaEo#(C! zey`vz<1X%YyUp%QcRDAN+s;pJw}V@<+?Zm!v$@UUHuBq81cpkt+^uk{+>i%cE983T zy6rmSI^f#w+UQ#CS`2qS($&M&9Q0n%Rf=lC>$1BH?2%}YzsjYc0x0DC>U>E>anX6o zd4kh9=fAA8VEKdK^h2Qf+s-%6U#`Ng{LT-~`~3a@D1JTYex7rzv$L~`Gt((^d~`ek zUq5lYbi8&vbzI?{nGM5V#gXZd+22v&9JBAVZ?vzquY$jyh0eTz z(w_JL5?yA-HHk|nX?$1gz}Ql;K{3~3R>brn^WG2>6#XXpbo9#TA<^}tZPCF|uVJQF z;e69P>W?U0DuaQ>2h@OJo>Zt8IQitCvw?+CZiMoGAQSXl4A!|cr$1T0)y#kS_~s5E`Zhj|Mt3H~M!^nF zW=-UBB8>Aw5RSk%pJXcV3|@2>@V~xCJ@5&wMgism1-D}XJ*R@5OTjqiftzd7;cozX z?nu9XxQ}BN915qSY@QEZUXAKjV3~LQ=Ra{6ynGV={yf#kWl-}i-)!KMh$rY{gqgs{ zaL^x^>=UEfhy*zc6MAVrC9{_aPrdDE#s@ zW>ug2bQeES&C78xPexneg^w+R20jl3MOQRHGeMG@sH23n6Kr`Fg#5vWjRi(nSmD}e z>Ml3cS~YDQkZLn+JGv=DK(MnpvQ}x=afI#E9@3uC-r%@~RrCFpdz5S>I_6}uB4Wx z96AysNu_$Kk02B*e(Imtj@z)9FRD z08i)mJ|lrBtZ$$NTETJGi@L5VeUg;$AZp7?)P>VgEH%W@JezXIFZ505brS41;3hT} zoY2~*m$nOfX|T*goIIA{-c=VjJgMpt&K+~eXlX>+vH|}x1q$ge_?BJ6>uhcCWVp(f zcm~(Ozo9vPcwI?rX$iJ29-Iw(s2~w9pYj`8-4}4v7s1n8PGotHTJYnzsF)AtEDM&@fg!)a z-tLr-!G|Fh{l-Dr9FS@=Sw)#s7B7>-KR+hn`haw`bP|3SHKazVT=EicxHXb-_{Wv- z>0?)lyP$fG6)Q;n(~7e}(^c_cE-B6uE73gP7G1z?;|i{IkI+oN7X1*1qK+OUJ}C)i zBCtNmDXHQ&;;rIIBt>r(e_@-WCA;ySJ_RSbS8`PvP7>k=CIp|5Ha#4*?p+w<5@6vI zWS^&yo1H`+^?SuV#a+dlpa9a&Q<##|2PuL?oMK3$sS;EdCAb^^M0j>NS)ejiw!ptY$07I`( zEdxV84T)tobs`#!qamkpfO$pgX1&n$w@)^%~?xXdKsOpd#TA*uK;j#GJ251j|qF9zEe=e3s$n$7HBg1j$% zh8DQ2bd;0BfFh`Ul&k4>6%h7V5l$`7wbB-}5 zHAkN#_5Sd_^xpSg_x|fW;oa?B!SnU-Hu6^Tmf-oFUW+%w8|77a^LgHQ9(rzju6r(n z;g5QDde(ZDcoujTdX{-sbA6R(v1g{|Z_fzNP}XqIFwY=Q4^JCUeNR>Jd|BTr1&Yt& zuN1p~xZk>;xgWXjy05xVfz?;JXSv6@hoML5?e6Ao#~#T8r~m2x1IFD0GB>)D-Fh&% z#O?1c3=^Nv^~Lqt_0V;b{dg5T{>1gh^}+St^&AHNqU(g~h-<%VmutOij%y&idyXs4 z73`Ao9)!6xVDfy<8?fhnsbf;W)jz<~_h7kqI~Jjr=|&aQ28Mf<u1*ItS4C)NLgHnb4Smt=HTm`tfVYi=6muf z_rg|>Cgr>$xrzQ6x53q8LDim&(Daw-2h*pew@ojeu21`#b}4OR+ITV~OQyx8CaU5zV zO~O4?9-R{03I6eC-Em5nMp^KjYUs(u^=~EcF zQ*^wSp(yPMiYtQ>_jkhiRoK)8AjkHg$znLQsbQd>f<8CnQ85w)M+80(lL6wvTN(6Hb!C;0Mi0V7XEw;?!%wf6aNv_sV~h^dyTFm(&i zKMQ`&tI=>AMZfVh>@$uU{>%(Y(VK>&I?W1q^PCk>UsnXXm-~-{ZbBA$YyLwt_i@nz z13iGLz{&8=vsi-4c|OT{8$i$p(Q%(5Vf!*(NYBDQft>}Fa~N~o+W+PQEpX2Q?_3r9 z+!zf@XVCLtnD{Xu=t=O8^HDahN1-7&w+YyJAFggE;hC?1nXiGIFW?z>4h(&r8BHNC z=L;%FKp~pbP?~+Q~1NvYG9I0 z@VDhTGU{`DG^gI`&e1Xz=68qo2;Gqj)MPibkF+0k{^*lZbXJbn5@6!0VB0pjKDyC3 zKhD!FA)jai72^>UP1kkzbPrhfbq_gSKj`!6MS2BGOg88@-ACOg-4DH=UaBVsO)t?G z;?wboTfcHYKYbv}PoIzbeWIW9QTJK*h4l%?_BXm$O!Gb?UG%>0CQ}Hfbcc2Obh~xC zIPK<{xAOT~&ZlacZakl{{(L^#`_Ot#T}9FpazWe~x;Xv<85*k}bcUW$r=ItHJ{I%W zj?xa`6Vi!3PZLmfMXF6FI9uSeHPjO#Z9eo>zjaW1VCNSygD`@5gbpC=Jod3ylZi$< zkk88<)H2&qm1(5jB{BiBl2v*z_%KE2PcjrQ;3>8kEZr3(Q#3T5uKMketz@+{ffH1LozD3D z$%c_0-j&sZ%N}GgHzJYQs)|u5$r1k*{0T4NOXSY)(uvB$AD`*-sG>LF96c8t z-GL;HSaJx@z}1dcv{jT>B!ZxiGDFq?9kc>3jw|rIi%8UHCMzw=MsF;a6_S3IK9ODm zMXzD1aFn#Sv^7ZDE)A00ku3MQbI8Px#0SYR87^)kt|E4d}P@Nc$BGjJU~C7C2?i#uIs$qdOc$$Jz7i9APj=}_re zS(a>;+@GApRr1>kKQtN@V4e5isbLFhf(m0S{@4@o#GcFFxCwWX-C$cGRpvAm#9LJ2 zUzxZ(gQxZ!y#AKL&A(CV(3Lkw7c&ob{~qbs1{~-*pthKXO8GKw8I^H@yNrKb09u^u z;M_H;&8m}N(!0Eie+Dm6-c{wBr1WXN>%7c9dm=(PE?3g0%frDlm`=&`u%e+4Lq~;r$-BRar}@l~ z*0@3A#*7=sH}G?};6&yK4M9T{hfwVll`W9POONm_I?3kVA?c4_T^{L=H`v$rWUW!F zltdSQ8xDUqb;iHSslm-u7O?;N(2Akw$(St)Uhf(*K;=@N4r-++D_<<1s33D***^F} zh%Dp>pMjH1;+_h<6b2_9_C96^Kp`Jg4qGQx7#nvVa)Tf1$tK1mpOR{i6N3 zLyq#I1Kj0K$8pC$j-#AkcFA2PR~4{vJ60R?7JXckU|0Wjy>kb+!`xBs6gb+-?oOb@ z!|oRzi6;(5xRj@kr!$Ciqvwh@pEuE4!Q0)t(0eu~UruIDy_``w8*?t@e8`pM#^<_n ztK_!I9h^HmcXRHs+{?Llb06nE&3%^pJojbpE7tSehq*U$&*dJ;-IKeG`)tfzm%A!= zN$#B7skswb({ktMuH^Pzx%+bWv-aig&E3sC*XAzBosio-*e6wR^b7;>_BbtyT~IUzX#-k;u2-Vff7-p`y~ zgTepx9`bJXuJkVQ&h^glPV|oS_Vae~Hm3@x!CzP0Yxkyk^^;mg(9;uMyuPQRrZy%2hpkM1|_=V0$U?(6Q$ z?u+gV?sM+b?&I!*?p^LJ?hWpB?lovz7P=?7`=fLzM}3mw1_H98+(E8Su5+#>Xk7B( zxieicE|v3#^BQP+kh4B`x)zF(LoTJOfom50_-a=tSAes%W1fA9Z2*$*JEkGVVg^fg zyR2VX_p)W=GTt_n$0Pct;j`g~;hW(*PJto5ESV&uoSew*xJNg^SKDoH7(9mJ+_#3I zk)fTTmthF0FM|vn4S5D9Ni~JYW4sH_KAyb|75Z(*bd!bt1l z-^TwFzbt+viJg_=jq$-~JWj+dit8O$H7-5Q4@|u&c6e;f*w~n-u+uGKlA@o1qX$LT ziFQZFMEm25_fOQKs9sSOqY}|f-;CT9IXki+S%}3WQ*fI8rGKHnra!7*r=J2hT~A*E zb~;wCLOcD4|Ni4aAm^ha1U1DxDAkib2?KaQ1kz|LnQgCfgD_Kuu^L&)UFZjoh( ze11r_;xK(feNp^DLiPTjkJq}ppq9NLn5ksKbk((FJ2gN!9$lI)9B%Fny!07Z=`A?$ zP1g?Bc7ai>01uaqPCCpt<@iE#14eo$eDqAXw;pu2t1-W50EY$9FMGq3;Zc~*DY!B; z2Fn>xauh^$a2AGj4yuLLph*YwRR!S%jxlXFh411{C_k%`tdaq)E#RA^Is+=$kM?34 zs9DG*T#SNaJq*WLrV5{vmHnK{(=Z~7m=+v>hNCSBDXqZ}-S}xVN{@v+Y9lP&cF?yl zJ$ROx@uwsO<_AFwZgfgGXdNCKnK4m*MynDW^gQB z$(4a?dZK%Wr7v#NE82eCboW@i6CbMdHISJ?YVVobc9&$}^sCyCd5$3rF z42nNq8wK#66Tw2q;RyHJHO_%5Hy7=5JrG%6=HkYo+L(gYc^MjmW9m!lyJ&l#^Dcd6 zzD`BuV`cWPEYo;-OzU+-5ja<~71Vqk{P$AxQJW9mH44mJQkw^_+z~y*AoLc~P)V%Q z?$REEy}hS>t1Cc9MBtJIv|NhXtOf7o6(&zE~ zC3qz+s#c3W3+E~w2t7de3;g|x&)W??B}a5SbnA3WLHyI{4Gq`zrTP>&@jU8*N_=KY z=-eo;VsuJAH=pV2+(&_RjyhrotovN}_aUI{_S(O|*yWgP$Yjbu4z_-yxx?h{er9#& z(9h`s&tHXZPO>JLS;vReH``F9k41OW1dX+o`ZFNn4YkxBW)??~ol^lctzs_q2CAVY z^hVlJ{TaiGENQ%o=86VVwgZ43*-SL_1%j+vo-QFr9x-CH2!K3w!#I`sWQn&VdX z2WZ-Zr*NZ?o?z=~Xr~9^=TST)n(T{Ps$Hrnsup0C{K2P!7ttl}4{!K4Zo?~rSCPg% zhs2gioaSng!sR39qkcjaw5^ea(J3+!|!Wi#}+x$w~;%0j4KpX1qa znz^wlJ_MZ}6ilMZbHxS4dUOxv6(MlYo8*&G4Yz0Zt|V#R{wSf3$^IWt?*Qgj{=a`$ zTTe1fGE8!!vCY^s_13m+ZS8Jt+wN{{Z0)UW8(TiFqKlyEL82O>6j6jIP*l<9tIs8$xu})>Nj*DI@o2^S zC@|DMaXxaN-zvVT_|_)~oVHygrJzu`MPffA7TLeUk`Bf2~K&>p=D9c}}d z?RjK8M~YgB7Kkp2E7FQGmt>79zAJn`_@(-__M7Q<#P0*_auvE67lD*-`+p&&M4jnjm%M2L#F6hTs2kb&qewsw?XMrVP_45L2p-~<}%G-{>hvaxyr*&jo&}CHX zUnJ$xB-bDp2D-152ov~K7E!2LA~foQ3qTMxP%vU4XWmk zyrLH+-z8sQf!9igqlj+;hHlN)h}Sz+5+?DHRG=k1USel1(GJwy0hHT~M=s`f-RJv$ zl0yDk@+P2og0!Q24 zGC2w7{iIp^oFn}GF0{}~f(poisYiBVQ&tiU{I2`e^L@-~94CHBcF98VpW@+ck-RvDulClnX{ zRAsAvsLyB?Ydh+6y5o_xBdH2_*jQEU#<-NYmGMFG{o)@aR89DYZt8<1 zZ2X<9O`eeaDWyTm39_5Ff}NMq={Gd}2|2{GGhSw9k=1Z8s|3h-P}X6*es!{!WIxFf z&}MYPSGNQe?!#PhZcc8K+(EfhVI^1RZp%HD`yxLtzY4nKX8CRMyTYN)0L7g}oBRVs zL{NbM0<2!p4_5hn!6%qpwLVSn&^ObM)Nj$>Gl&dnaLAoOsT&P9jebU#aX2{ll}TpG zGc_~~G|e~dF=FaAh=CSJNNL-avoEjq0$eKMQVR-}zeYn+xt&w7QlV&vPsM#*uW4w}8G2U9PkKBYm&KP{Bz z7hk^mhOb>rJ({|WT$jnI15#Vl$7m;8IyzMX3csDQhs2IQQd*`|0b8qKu%9L$N}iwG z2R%qivN-7pt>ojGpJ?Hz4<*i^wZ)bgk?b|Y;+OKiuNtodO<#&z z8#f}ZQCxOhK*-i79pi^d4O!7Dv1T5u8^z6r1osB=9ri zl|G8Qip}JM)K#P?DuSfu{UJ$?%d|_k4`huaWlar@K&G9+(4lL*9 z(79wdc#`f+Fr#7^wM+1o`j~^lc=!-|My8W(VxlAC<9t}#p8CO(-@C#!;@X-@evM1(J`29IQPzGnz$YB z;AxKL=isu>q2jnNdkcd0v;`{2`cT0^YssdI2Sq1=-D5a2s7b4fRN3)1I<`z`k|L~vOL=pHL4E>he;2$VBq~2`jEHHE)jxi(u zbq)Ua4q)iMxXJo6sUJx)-Fy_!8{nWfdEJ7$;GfUHI$vV7;prGT!L|E5cRxaYk1i7N4QPP!K2E6r~hmg;c?EijNY7Oc73!O&ssnG%g9ODI*m+E>T=G3MF3+<05b? zmal2K<*z8OD68<{y9Mrvr*Buu&+*}2AH4Ko3Kid{;(KI@03Pev{5WU+CjTyf&sz1V z{0ZA5`5peA6YOalLFw~B@KeF^!&$+$V_jNVZUymYGS5i>V=I~U_{vL1{D9+r9&tC~ zikI2mL!;6r{`aL!iY7;lfX!~tzEl&0Z9zSf1d}a|C=>pX=j{S3(=FZ^&rr1A4Z@vX zosM`s~HF;%Kpy}7>dj5i&?iErC)FR>i z_AiRm*)V`j*o$=R9S@n>EM&iEPD5u3>eX`6PbgC_qVU)$T@RZ$R@xP1YbKrIp=dm8 zu+*!iS4sK!j0$9>v^iaJG)*w^*95%-MUSBEFeXS8R3hlNAb&bIQpxhLkPqPo=`{*! z7u1b}j}~~*G_Z^3K-XhYxYj0bIy%rFR{8D>XV=s+A0&>R*z+uP9+hN`0k>ga#` z7yA$NZ%m&?HcAI6&cX|{s`T-z;mu`>@zeQ*`;`G@?f0EWYDG6PE}GIul1xY4X)tU* zaaYtGb4b8A0s>pY?cdRPB#L9my!$EIi$b~>oN_Op9w6y+=seE(w61utVi_7!@+!=# zI8jtgyx33cp9u@x#&4nTXmJh@J%3H`JuwUEM85-i_6>+3Ij#-)e+$Vm*$LmepVh<(5bhmV z`XBf+b+|S=vHG}321asFEv5idQ6k@!1cCY{N={2lksS9sy7tM^jr2~xf;|nB=|GJ! zIN>7UT@%nEWRrN9&&PO~j8|_T*f9>|I0L4+p`<&SofkA*HY7{DCykd5X|gnu{_k|~ zWv(GfgUeg31SuBYV6F zYNGLcsE zfzsat z=H>0lyPaP=UqC}#8+~#w7}WU%+X^lgyaD%x>0|U+Amv8-L8v0G8cM_4T2NfHF!VA^ zG3+wDGz!LQ#y-aB#`Q4APfQY1CDVA*DRW74qPZ%lc%pf``LQL$;<9wJOt37pth8*f zY`6Slxo&xB`DQI{`DOWJd0}~Axof${#|M@>mMfN%mVK73mUWg@mSvU&mg$x;mI0P7 zmR6QVmb#Ye7N;f0qOqZ!<49PcaWLx8(O3%&F!`qQNSfKAUcscAMsz z2ANu$YJ#f^OzEb0lg^|xg`0x;EB#F(Q+ZQqQ%O?^E+tLHLEP_*4~>_NCt$XBz<#fV z@1El2wd=uan~k~PZkV(7KcaW8W^gUT_Pf z{i5Ji!84GyM{9DGd+vd}FQE@#S}>}h6RdwBymlzA%T4)RSovsSsQcwV1a}|Pmne8% z&?SFjUX7ef*(sS*Ga~Q;29QTLGW8JX_)L1U^gHB9dzxP&)8ErUGak zNztCX?F4SsPw$dGD1A8HIRk0P>7L#>y&d0K)7$r=q-RG&<4f7}5~SbVOFKrw%Y?M< zX?4>KX}YuuB;lP){hL0;QRs^5(uXcj`I>T(9(7L-qBTWG{+4_ud0}!_I>tkj-qV1% zFsTdc!itHP6PF}*Pju4S@+sj&!kmP533;feAK*!xiqgXt9~SpIZhzdQxMpz~aphvK z$F6~scE^UsJdODqM!IrLSoBlU@d2bd7ad z?OPfVXKTA_-P#b%EzNX|lNQ7cAm~I=@J_3isQRIjPE!TpIJ_+!5!MM)NbqPPxP(k0 zT9DHz?k7|f$_k}~Vj%0+?9~UA^OT)vLM)@Wh!1g)qA}eqTJol!%8#S_uU?5N0ULgu>6&R@)Z7{d-EN%lojYA*Z7)_`LLkGa4 zy=1n3nADG1VM9=Ic<{3>EC9XdQ(RTMP(qKyO<0*!h+xp)LlOx#gP;E(;n+>Wmn`@v zjIC!HJ)QG@bJP==Aliy(H}0X(*a`NX4F(>DHlsJGqkX`{<8csf1wr4%1^5+5)k`!P zdqLG>(LZ}q?E3QP@%UJ#coFvma+T&Y*WLz;eU$AGDIWXbv@epw@c|!pMO=jcFY#H) zIl+_mEC;`f$>%7IM!GaQzcO&up6--DnCeK9o3g>v9yDDEUsn?p9^KHL4Dcq{O<@(V z73bGEv>ex9VQ%ujy+#c!BBftJABPG)I+g?u8~Ga^6?7Xq8#{ue2gBXWf`wj4;>K() z%UNUm17^MkhW-athbMvKAgO6jJt&#PjmId-?{MosFX#Nf?hsD{N=0((V$g12t>BE3 z4TdhFkFpo2YX)AyMQArR;t{+O`UcK95L_nkN+rU1Rzu4^C~OM2c|D%FW3bNe@X{&h z&@|&aZG?trC^LwS=!37Imwz4pg?`%rbi}!^ugzJt^^X|Jif%gVuU)LeUNQ>}kSmyU zq{8b~led8bo-5x9UcScr&V!W$z_Q5-J-VeDiUx|7iq49DtndEh{W+7V$voyJt61^v zMBQ|N%Pz&=imkkR|5of^PP2#0PQ^CGU*7vR<0x3GSV?~5az3u(yFB-A7I9g_ z?LCTviv4`gM)sja^ocIvk!yME8pSfje6n&TDaNx-9Y)V+H};$Q`0pL;XZfsKlR)TU z3SUJ@`4{;sQr>T(u{w@pVT*hftoL*{?$P{j{o&3#%iGeW)QA;AHMxubIvs{x$)v}l zH2H>#iK^hLWZpUh)i03dGHFgPD>#ID!n^~p)3A^8l^-3Q5ml)^4 zUHrS7@h}czh2tWb&mYCdHPlh_aq2eYl@3GAa}!>A5l+-*U>P}?)K^eMP2+vpi1%qS zY38Mv)LfM9W_mM=Rp>bOkV)(zQ}{fTS&e6E)0H*nEGF|iS)b0q1(tyNV=;Iufu!kw zC9B8;@=u0m%}r1FGRNOhk}V9zDYq|Gjt%r}_`|>Y?-eLun_x;J3|h z8P3AFeskzp8RgdvjB4@cHa>s!A0VvtLPiNS{=M)?zM~H%E1(j(m0oboYhaph1-uFP6{J8CCf!~qOolon{ zY@WyOq%c<}`(laYIJ#qrG*8+R+`3EpP*xty>|iZ4grnU*vX>mYAX7+>d&KKHkCgj0 zvTGd6@|m8Mll>{ZEe)bC1oGR94`_ZVdw>38pZ zVgp*Af5~?)?p6LA#sS!u_MRrF=!Zz>^R=6_ro^GOpD%j=$Iy{<`@3{MB{Ng&&J1lM zN2-gg=nnEe>>82*f3SqixOccyf~B)jLHA>lkrOxxWly&M1Ud)n`aZ-T+KtuFL9p{Q zG~yk22Yh3_Q8!>pz%6{MvjV@vGtUXS4Et`743=D!rlMT_jn<+49HF}e-wJ8Q{B3X8 zK#o(#&@r~-IMjo=P*Y~9{aD3!iAZKP78=%^m1kv+io?UQ!m}e<$fqb4DSLCS?I6z0q-(}gerf1#p zsx?+-zr+vNC+A>p#oXUfG2bPRqI%w-yrp@E(AWM#2VlcbHyz#Xy@KL!o2mLL`mP|l z^>C_}&@p^OZLBlc46O_!z=^vJ{~BH!D}W#^#wMW3#b_`-nlz>wAk<~1{iZ9XH)gRp z8%}wn`K=`ioZA)LyV!Ej^2#b$>sZHHw^+|uZ(E;R|Fel~Q8t^ciLJY>pRJdz1J~-< zYT9b^v6iih&16fl3AP}ckFBh&l=Y|ez4e~;v~|06iFJ~7h_#2cm9@6jW=*rItO3^F zEMLIkcP$q!hb@0wR#;|R##;JYT3f1EQY}H|&*tmqL*~uqCFbeoQRcqz+x5ZNZnMK| zH(SkS815W1@yYzvd2rpi<}`COJhz{@oVldwm+3##ThjwCyS>GNroV>_A&ip{cwGEeP{F{z0r*K=5t4VCw))WE@SlL z^h3B+9sP(FUfUn6{itATK~MA{VFl3zT?(G-d*~k+O6Zpt?9H#4J0p8vR$#`l^k3vX zU#E#>2f1}^Ge>3)BGE1@vqHu#5)4Pvp;(io?baFNGInM>r3ELFoV&!#=u8zEcOfK7 zm&^E)@qp%>U1V{u&RChTB4cUB+>A*X!%63EPx4*mjI4|>`dcp2+A^MA$hzR}xb%Ru zk8~$)qbYGPO^B7!lGFU*t52t{#oyXFwMuG2YMGR4bV~M1DN0c%e@#A%-lG%B>e5N) z(NOnJs*)6y_#^QoymaHlxP%3N+Nf5li>dCbPN=r4)`F(zs-~!h(|TBoc~P+N zS-33h6qXCKg_**9VU@5&*e0wOW(b{xT;(t2e&tA1(@Dx8#V_)vuaoPs6)Z3b)G-k3 z(T{WgABw@;8jE6M893v-;+e9T(pMRx3{?h#zdtB$^F5nDC&LsS6}1&+SiKOks$a=3 z$#*ds9|;n#OZ!U}+?tGY{!4JscC^;R(S!c)EFVQO$Y>HZlBOHmR zk-pImm4uCkWP#+m&;NhYz<79uE*vu($ZFzAsUfRNzhG~)&C5_^oc8u>Uj~9gN7E7fgSEmh+%|q7=@b+lcDQI8TOq!}j_5filE5($MaKYG>0$6WYrsUu zS#KOg)3F;(#|c>H2Pj}(z&t->dyaymI0)L;%RvW_zoAAqo9FF(ckrAS;UH{<{(Ky- z!V+AAo5+Vai!$IR*jdA?l#SY^8mfVT%nsJ$3_VS9#zQ=TV6iPKf%zYITz_FVZdlmmE&MK}b?knE%eiiY46;L$ADif6{%1l;{1xh1| zL>tqY%E}s~+SF6lRsPO(htk5@(5$p_&Bf;AvyIyZCN5cI-=uQMR_b|_oy|<=QKm9Y znZZvqaoh9Vx$I3^WrQ+VDOCm$y(UtYR{T_aRJ>L^Q#?}KQCwD>0CTUxpD<1_1T|D| z&~j1D|U9vrls6L{CB(zrC zqkno~;NZaKfleHVVS!~xF1tpT#~QFwe=i@M77#)s-F^Qfpy=@=uQl*@_@^=`sOa|@ zci9QQt$y=C(B1u-!c!W(9>dbU&wP)O2{+ugEm_M>8cVW$<9$O(yn7+OLi5TgQ1o@S zQ{pY+X>_o3V(TVuCpO|eZ0NJyM^ z_=flyxzi0qA4IcgKCCP1iqiThErX?K70eO00il2Ob^Ffpy+vxB%dfxR7QZ*7TX*qa zPxGG$%|=apeRD`Exf$>Y7BvW!Mhu$q%6KtH!_c1$d=XTh3^^-FC?jbBydo(h$wEP~ zSn@Aia4OIFXzAb5C*;Oe!;!Zg&fpiTcooh)D{8W#ykh5r-{Q9@McU6(vM|mu|GE-< znJmQ7!LhIgGCJWkk}py*IQWHZ2*<4+!Rtv3TFKYjdv$4^V^%eex#c(-u7G*yj5fFp zN7x1+^;lU2`Y>-wuSp-vO2BznWs;w&|eL~VX?)5~6H%wMS+E4OU(vbIuDzJaRl>j|RxdA#Cv3~@w@-Y8@=(My3^d%Yb zV!-!60hekkR$a>ikHa}<28{}Oigx87jQCU%s9VY&2KQ%j`788B*sk!Y5e=CH9fDbU zNgKo8%Dc+z%GJt7%v_JKG9Jb`@edk)^B9BM4jV=>CCni2-FKx&V;<|&Khs1wR=$LRjv1;P6 zBumm>rrvXtf27n-`71RnbzEAxv=MYYcS*lQFUAPEvF({#vV^SBSr2grcF10ueS>_3 z#yOjE%hFP^C9f2-{b_lZ^ZjwMb;zHbzlCgyUj;D*b@0e-z(@C-91NL0*-+Oo1hw!H z6w7zeGQ2mIH^v$3pnlk3JZ-#h`~X`U0gu}PB)Qx4&|JZsWUguc!@SCT$^65jw%9H0 zEmJLfEKjWd)+}p1Yk%tk>k;c)n-WYsz_!G8$ac&2+3s&ovRAWrw@&w} zx1Y9Ou>Z?;&VI!Hw|$v?nthbLzrCxyrM;HjYEQO@+soNL*&f-h*pAzF+1A?T*(TVA z+WOeK+S=P%*&2hq3vC6qcw4xwy!9g({jhZwhE;D(1ZPXF30d4Bqsnwcttv{OuKlRwP% zBXIUXkoGp?R-Vlz=(Puew;S>7)-+ay+m11oVtumA&>zis5o!^mA=i*>&=^7tL3k-O zu-bWsY}6w@aN1{Ju{Y>f>gVZ4>D%a?xFf6Tr{S&q!*I{=*)UN*r$CYC$f=vPD6t(h)yKL6JtX5gd%wyYg=$!sI{ZbsICtfqWL zpOu?ckY!@a%Sz;(6_n*eV@}D;Z<#MMuV(JeT#`8^vj-iEl`=Ck!!v$n+|1ZRcjCB= zUUaqCGPJZLUZbsi2HA-%X@XCoVf|&=5!%NGq%}y(PYX?bpZZVgOgeoEPib$h|a^#N$E+&=n-F>*gMgk7@F`XVM9W{1b2c!PTr;X)g;ka zEV3$T9WQlz zbdz;$b!J@{D0(m2=vvxH%}>oW%}&jHnps+sCLO2oBe~;-`Y^ooT=i&mFK~4wTEwMf zOP^9LRSi-#B{j#aGN_Cyy(&|sr2+9SSbDfnPsl+z9VGY&<%E*((=U`)=@#FhoUfdM zCvlv28>Jjf4s~l~ePwlJ5van0DGVS9EiErU6;EKX_bb*b=EAmhhxfCAp@ZSpUZb@> zB45v0zCQ|Sn>=1Fkr#`2!A$xPs?RyB*TX3v!YjA{mTWk9xU;MUxVaMPq6RnXjwU;BSac4Ij2jNoUCfCuq#(KEbwdJcTe63#E1VcYh@N}nVj?+VFw9?X3E z|Jqu1d9n6R9RSm^`&r^mUR;{5gueYDiuJQz<;bTsFneDF>yZwB;W&~tCLfv8-kV+YL6DKyb{&^|vSso^u~=L)2u1*0nu^L7Y&m}e7SO;1-~9eC#s=$QDxb3#JXJnW-c(*zo>!hzUf{9UxOH23$GhF;`ZeVx ze#R-bGs=s~E8MFrq^G*r~&Ol^Z<&m?CjQW2pD zLM>7Xwa7;=k9|XaPJT%KH+t?lC`1O!yVG1+3w=m3+UxRQ>WAJL&<39Ap(Kn{roS{S zq7>f6bG$0knf}zkr5J!W@iJK`vw0P3;`{UgN&ka7XAG}<72F0vVClQ-IBTRq>a!?C(?W9FDZ*7?LS!QCpge9l8Ck!ciUQe?WU2H)|tHN z43PAPz)Prm7n1|rJFp3ybW~tDI`>YJDm@jXSsTRZg71^MtZY3>XA_)^LyoY z*l&T~AAT)RMQ72n=jT`4_oMF%GL|oqpF9s9)9M={{w%%=a=uF5-F@)`@AcE-gW~Pt zb?7XnhzF8=myZ_XwrCA~fvv#9ebHwe7M(*eU5!)?am8j8URF3wTj3F(&EyLA0~-g4 z{}ne9U4wN_5yg`MF-o*YbYJvITudwyM~Q3lQ?L3)z(7wY`Ps*>3Ou=of9`-M@QD9Y zIvP`GLm7vQ@)o!-0Ifz2*tsP>%xN^&><&B+ey&LRNn>*5_6NO^1e1`_hIPq4$t%>x zm8E~s_jeP;MiQ^XU>wjlShpL<1e(F|-gvpwO2)Vho3nTRBrShgNrerJHU~3 zFtdp^O!Y>|mebq%3Vu5SzMwa$_v_$2Zlh2WSpWA!eRd|~g*OQ($eW@WOxw^oIDt^s zXrUZ)wWvy(O3R@oDS#8NLK|VwEExwIzd&XT_6rFK{XJ}T__#J{l}V!y=oj{6edH=$(0*u;Ru$w}pt`XoJ~OK^8eGzoQIQ|qPf zPE)3h!712@Oy_DDJK+iYXWq&(W-X-&uU7Vg?3+13IaPCJ<-8$}cq=Ilt@AeIy~>Zu zZ;`(||2az9Rs}N)_7^7cp3xchda8-8s3Y^s3T!DZ@d znrYf@I%~Rb`eF`*qwN5jd&N@HqOlk(4J?0HR$Fda1Fd#=;W^e_*2~s+HZe%H64-X8 zZJ+Il-PfLBuVe3HpKjj@LjLa1IEozI9FrZZ9eW&S9SEHy4|`L4C3~)2XZN>#w>`9-vF)~Pu&uBywk-s6&$3Oijkk?v8)utro5Af_e4NU? zo^2xc_qVkJi#u(4TaGQumd^j7w27?$Ssz+2S&v!wST|W0TmQ87wAQy;tnt=hYe~y< z%Q=)Lvn@j`9eFm~mJCa{rI`6HtoLg3G!S-YblwKD#$49)#&pYc-gFG6eyeFI2z#KZ z6DyI1rrM?=Q?5w?#=eL~p**V$q z*(%aoN@cyGTW5FHO0f2*te#noP}zrPe#|_Rxh8XbW*6F8(lY~TPCu2g7M{9KM$-%j zj@DA(>GkO&=sYx}E7N|ZT}xX}3A7x(&|L&YFV&6IwFE~i zb;Y!IwEMIRwEeYpw3*sq(DXyiY0Vb29X)XxrfOuG66!a&4Ns~6QqNF#S65cYsw=AA zpqM_a+NheN8m4N`Tq$1_t5T>CJ@Qe<^;nfgB@uoJ_k@GAxQv9Ou8Vdn8x=?}-o%ff zjI&^Z)yf&lq3A#AE8Vbd@i2QqaBLrFcsa;QcjW6f*$7oUi=4?I)M^zze z)o}T5aL^aXCzwkrK?{=fQaFc~M#XUrT(trvbO*dp@o1nwz*_D_|2zWivmJC+2Ilz; zT@wq?qItBMIW$BUgOxZ6pE?PI*pPE~Oo$(R>}^;tayZdGv_Q9!0q^V!`}>Z0MFUv&jm&MGnimVYn!S3+Q|I2^w!nJ;2=RvU5eZBX3zUJvx z@#sFfa|ZC-?!#mHdhhE4Iv5J3o(N8u%I}%PWd>M$B@^roAnQdSa*yJA5{m2D%(G|l zc`BFrOi6b#Jv~Q~v}e1FAMp`B#{Xo$V6ahS!|{ZGr_)#qSeTtVQF+uxE!`V+_Y5-n z76&hd{n?D?>vHf*@}Yg`k&&YA2uIoBLD6oIPBX7MdZ725IGJ|4c_B;C6>bYT#QMXd z>9`5Y^CaXQXDbosDz!IpBL&s79o*au^wbT-Mt|})rjqEen|!+4Aggz<&SG92Gq|~z zx6x!iob%zZ`{BQZtHN{e1y)0a+X-#XMl>4V@BzwE>&Bwm{T-%xe#9Q$3pXNeqwaY_ z(uEqlTnEh87G-c}wDeO^44?2SnO~tN{s|wO0886~7NLGHw*wWU6mw8tTvEJ(V=kwx z$XrCmnl6(So(D7cRt{56RxVamM(8T^ z7WxVOy_W&PAHpCm{e)il3A*#KKeq=91BE_3u7l8yi|6tEg#kRKH;?GTJ*|aiLIa^T zKd+il-TSc!zkQYv$C))ukfEXq62wAj?+Wz}c>J{TAErOslxxsZO~k7(K-ovxQ`rrC z-5fr=2tGRpgq_GLKm~g)R+a=~zf?TL6MPlT)G7G&11L_mqd!^4UN=`UnP+1lXuBgg zy8&7eGd#8$jdn?%x%=Siy?7+2qYCNBio_;Ql*@1@Jd8Mru6h=}#U?m2!^p`whA*)X zIe}^6L1CZB!}%Na)F9eM>$5h>$AjpLGxRiQdN}Sw8}ASi>iKJ|z&4=`TEwbsDceF& z)L>R^4wBf*k%Ds?mU<4(*sh?c%IE;1Nm2NZeQ_&#kEZN-6{YuZA^wS;z#t9BlXgdP zlw`6+;Js0jf%G1Bk#y$L1EoiQE?w}cRmQiaCM)k7xek}W(@SAlTalL+>+Nm13X-0V zM%o3gEK3sJMfAb*$h@mbN4SVax=Uzem(jP^ipIil6wxR`t? zfm>l$@1RhS2RVa!(-3(+=qo)pE^?PwNUljMqT6VXYT_cO*ThV15e|+==*UuGem4Yv zAlI-KtD1>cuw4dwPhsWsfmQWs z*3x^?)m7zj5geZ*a2^-uxUv~9Mq}`G1arZQ%qB*V-r0l{{Pyt3eVJQyhUMr2@4blQ z*F9X)r9;Gcq?6%8hN3XL$L|f}y_U+~V&tNwNoaY99;9EyoUofLloi-OX@cY`PQGB) zR=)>+$AQ`grG|{Qaw%ye^U2c8N1mz3yrffJZlObI;C6yv&NlC-)^BKtRZKACf4 z!VX6$SZ{;rMCcGkYq4T%hiTudkTa5Cz;$CQuR5L+*i$n=ZszJN->kM-`?3RR zs@szjK;PfGoR7JAxnpzhj9W|;mqT{68i{W6QpO3-ox^KkPz^Lg_dOGQhJr83%xb(T9;A8V?$ zrnN6<@&X!*d=wZ{ZJTW;Y!B_F>`}1G{p<_ud+k^3ZyeK7Aj){&|Wb z|8lNyPImTjHg#5WI-OP!x89lV)Hx;2(vJTeuR-G19j6?79UB}=9djJh91|QP9sM1h z9W5M<91R^!_}t3T($Uya$58_;{=1`|qbc{aakSZ1uvA?sw zu-}6h-)~=QpJ^Xy?*$uP-JWL`?4@l_ZKrKpZL@8E*qWj?QK2$DtD zS!1nY%SX#i%Mr_3G~b4YXC0ugWpq}jtQuLFS;3iKGB0QTO-oNNddAZ-eKVeA9LSghJ6!|awJ7~j z`p)!m=&KXbOQu~-+mJRat!A1Ag~twhf2yFBewDH-Wdu1N0i=1%PHvnWo%AW`VA2Hg zJ7N?6OZ+EsYGRYb*o2P>yAp=b-r@@vJu|*;dNJP)4uRP6S7{ z*EZBv*5+yjZAr~N%>gtXBQ@>u8m4I^Fw>XSJJm}_!y62iZli9fuCBJJv%%DIb%45p zx{Ufawi2qZs^_YIRXbJlRYSqobyQ9iAUc&;crRQKHqqtMNvI?w2x2tUXO&x(bCqM1 z{YlMhjsnE2jDw5*$aH!K=kmc|92fkcFU>9&nY7PG$I*rJwi)fJh=h&{I2Gr>fwc!k z<&vyWf{F4zCi?x!_bp(`Uz%RSGiWoXhIL2xoXlDK4V}(APz#JFZ@2+RQ8m2tV^j$1 zIal`s89G6Up45OFO#c?ccXSM{g_bxOAD<6u=0`AJ2g%D=4qhDx!fgj`c60tH0681^ zY$Ta0O_qpHCKXPSh%N<&Ivb2 z+(s*M5sHw;uqz!=d$wgR*qpg#dyey-PQ&ip_rH5O^LLCyFESCndz6>S_VC_I!P#43 zq&>+VdpNh91!vsx^4A{K#|zmPc86dWG@`8FDkXK0|m(_4p;9n zwiC39p5Qla6IP;}8Vxr0pze-BOa7Wd{;E_VM$iZfP__@6s@L%0|MJ(L`^j1oq16tZF5s^PP`ai>j(V8V?`x0r%50)03R`bkynrv@wdq zftulEPP zf21~imVA)BqzmyJEcJ591n_iIiPNj}cnLGT94}%!w5{2+I{zYZdJBAX8*p?YNUAsr z*%M?_jKn*Z7Z6Cs+deYjy8GAmx8f~KB1JiZWaV#uPy8;U>Nx1Pi>!`CC_7rA>Ik9r z@2u~75*s@C7SW+m3jM`j^saOhHxSnVL$?=?go)lHUW+oLfmk4|<0v@#968S6;%u?W ztBw9Fx=LsC4$)T82GMd<8{>qd&o8nkJBmVBI_AT@s z;Jbt7L5JU1F#b#bivBu(8#?Z#{`d6_GT|buktw1mp+;rf$hjBnFM;g7*q;g zz9pR|>qw$|M{`LNINI0v`f5pg)Ag}W`iW!SXxSyWg-lj8&4LH=$~=NKZjEDN8$9z( zTo77x@H22WT%^Tk3w!@OJi>2q1=nUCn9E9P3Uet>x@Dcvtzi;espG;Xp#P~BmO&Fx zDtVPIE^68~_j25B^MAcpfy}s$gUzRT+fc`|(rSseUO}!`@P zlp|6Mnz3f&{dD8fl=XZVN2^I8dALAE2PcD}2g_n`6OKcREyK0ALoyPNWLVH^S~0JX zF_OmZC-@haOW)&+^h_Gl@kgd}e7+YvF{E>7`>?j*zteqi2Jia=MG*?HaSEN>5&k~R z6w*nym-M<5lJinDCLzh8r^A~>+)(J1vxTqf`kHOpce+=R(;^>4-lf~25e##w$g=qV zYeWu;To!pG@^O@Zlq>2_^66rt2Si^cJ79Ng<=A&|Gvm|Z_frqIJTWkFOp-WhRT}HQzGhpX!S?O6Tv&(1K%$}Kjoi4y(InQ&elJfh5 zOtXP`hw=kxFF9GDMIpPV;FrEYKU9CpAVF_C*>DioUx={~>~+*s%oJ;~8@?Ai>~MH;#BXZ zx~sW6xktFCyXU(XxtF?Ey4Sc@yBD~}x;wfnyVKoTx7;1(mblBh-ncICeJfmxxvXbf z;u`Pj=Bn?i;;Q7T;i~6q;Hu?vx$<3Ut`t|6OYgF{%%Jd0SF$UKdotLPT~RIth&|M$ z0-dLM@6os zVP{oP-u@EZ$r_X<&FyBp#$Mj`#`dpm2R!#6TML`pmTZ$)KU@E`ZnjRecDFVFRp(fv ztp4EY%lIc3pwsS)PP>{V&Eks>at{ja&SsZcFugY&Fikdf;1#I?H{IOS-qhAq-{d4$ zB;J&0$~IYewerXq2{8GX)TVl-)uwOe1ap+>UsH;)vcaXd7qrUXpI@7nM=43ue)%Ox zl|GxdkL_&Ui~REBPiynT^UISn{UGl~-p#ywdH2blK9sjGuNTcPNqOPSECT6m49u%Y zCf;*!_~G0wxr=irkOoU<2XJv^sHjwMHvQzrXq_DOoy$FhnuWk+Ov z%esalWKLGUtU6g4Spl>hp2%F8IV`ggY7bGyy^Oz5UN_Fj%n+wPOy8b9I=wcnEg#bM zr;Sgmou*2Cp1Lu$C%H1erJPQgNlr)_$#@sM3h9DmpQNivOOx6sr6hhz+?LokF+Z_n z!aoUP(R7rJ-%naccHFPHV{y~tn#5^hZ^urE&5L>A)p01J??umvc1L}Tnio|$%8$MC z02sPQWG*Rpi*$8#8XUa-x)`04cJS7^y1E>lulBC?FYP28h7Ir-=4#`p&GylJrz`xD zX1`{GW`Sn1W`w4%rh}%jrn<(V(Q7g_2^y8gU;SPEKz&lZUAQX4g=Tv39Ik0ay`jKc5b#*ru@z3UA6jmcz1*CYow81?hN%#UZ_ZfZ})7ET5Pg@$^`80VOGeY}uG}m*qE)MH_4DG=jSdA|5syQJcAm=M&Z7c*u{=cjZ zS#W8ZARfcy9tM-n;27HpwyPeh`Ei6yj^jlq^LWlRToYt!uE&!qkO4E6 z1)9zUBb#`H4f0`jgu+4ir6?2Hd~!8(yS$Zq}!b()6S!NE=F#hgn>j7&$Jufxj|?P&RPA@Ixj%ye2`@4+ca+f z3=1IB*&J3ctaI2+Qb-iy1ub|~B_s&v!$9a_RY}nHQ#`*{gp0yi;kdA0_zQ$RSD4J-I+9e%fkIE%?#9CJ@Z@&E z3}>DL){cVD77L}6-<6+~?{WCQQa<7TzlzS}82XXjs5RG*V#7>>lF=%srw7gCT)eUi?XX=v3a;__U= zbjXw4-k<)X>~KH!(TyZ|*l~-N2>ljTp7+D=DBfp>EesnQ)-Ws_UC*G<3^K%z!bcAU z4^_k8>e){(q23=4-{=mG4HhwBxxiX+J}b!X>sfSs*}&OwUX?l7r$?E(q{B>o@#Z}^{MyW#&bpjdz(ogxC8C%vPj|11CV=#7Vx z8Ydz7ZmgdHWye|)Ix>Cz#ouV{d&T7)+gtJL|Jz=QAENU(0+OC59*a(+y|^wpcsg-e z@}$p`C%uPe!^2?fLvYXQ$=jHK-lM0e6a5|iK+^j~|B182z4`7tz9mp^WTD>}<9o=j zgrA-SiDiB#LC_-q6jGQ+k^6kp|7So*KpL5K-2!IgB79AcV{BkP>DkT5s#_oUC`cJp zlRm)ZsDmF#0whI}X(VB2X}%dkqvQb+H{v+v9A`CN2?ltEH}N8ZH1HK6_d|U`BUuqu zV&*h6^knFF{JP?bbU)^f*{JakpumntVSj-m7b z%Qi7;ebnRV*yy&=)1%i!Z;jp`eLF@P(>mr%h*FGs@74atsYwt7cstZ-a2-_mt0ozO1*9Ne$r|h2{!Hz6c6(dks zJaqawGo5vv{hf=PC!8N$VXj;-ZDSbaVXmdFGp=uLm0J%=Zs>039t1M}$Njc2urRhT zr_fSZxv)uLpTcQ{8w-yXUM{>-__*+8;hVx&g%1la6z(WoSU9%u55C@`uv1~P!m5S& zg^7hRg$acjd~bT8wov5$?0)Kg?0)0^QCOz1d|^rVe_Vg<{#00^uwtQKp@@5nyMGmy zDy+aQabaoq7xxqQE%!C|4fh@QUH5hO8TUT-Ciimws#)#{?!oR3?pki6I|0n@?=Izf z@4D?e=Gy3*nZ|smvi28?sQIbc6C-}ZBW{A$Fa*X+c6LhyU>yB@VCFQpR}*C zkF$3{vr=GJ+J4!t+qT>0*oN7<*cze?NwA5nFIa`FGWucja7(%kkVS>%`Lo$0l?m^q49Zi)G<`LuaF`VgzJ zp`i=f=Z|RGD;4O;oi1WCk~tk#;8ze>pdy3XQBaky846+xWCdmNzvaKpf0%!shQ=xR zoyo#8(eYv>!LVk2HTqsOAn!YQhiPwF#vEfJIW29-#!CZVm!%!?4$Ss)Ql{(XrsW3Y zd;m{x%b5mCZOf5of6Km+y)Szi-G{BS&Dr5upR+DxZOHnQIf*e#lKD7ud*-;z7MVtL z)1NZ_$(WK+FGH370+-|P^xxC9;OKp6vGz7U4`UBP-3NoXkfi=6(^^N=U!)_?ILX-NOTOMS6ksr_)^i zmEPjMSDgFb@e^ONy`>eP1V4kSEALM#!)Gb@ARZK+3ft|;ib?>bo50c4LDIF*UpJJs z=C2(Do*0V?WCU7}VO*O|TZ_l1xRvcMbRLJ{(;uRdE=hVv5Ge=(TyzS`4ma6P?a{6L zNehdogJlQjl~ee<-ZBvl;T)3A4Aql!*Mj-%II`_L*m)QFjkEAMZ*b0dbk8!Tu3B`i z7Ftr;v1S=T!t+eJXt%*OJ_##Ern8n_Eejk}7kW_Eh8=}-eg)_3i)P({`eqVY52r{{ z`x+4lmst-^b1go$C*WoYI^61Lndgz@b_tgG6PQ^AVs4B}bqcP(4J2Y5M+NjA{cyD7pPVS%s^r|f)T z8SL_L)QKO2AF#vUNT>O!5}{DaS5;Fr0x!1)*$x2ju2vmTU7(-n0n?X{%wZ(B<&)K! z>Kt`Gdq6dH6Lm**PaFkZ)$LI&+%?jmTuLq&BN_)mhAS^3;01 zH&Y#_7SvL;FB6`!>QZ=o|5LqHJyG3KokvCWw`zrImg-M1_7K%TPaFo!)PB-{spd{#Pit@_kyQq={ZV}o$%8G(N#ywzoL~{Kx$5PR=Fie z)t-;X*Uf7f?QJDhM)=W$bPLbty72iR>cOF)56;d%H) zM~5ZSb~J%im>7k}8ZdNIbg^-Gdw=0cJCECJDLA?(J~Ia@e^0*jL-^>8taJx4AF9dv zGKGC5nANGsy9bHb|NPi*gSb>+AG`;LI-BIQ+9Xe>kdhZne(_^mh_gr;t|rMu-w`M& z74$ynX3#;j(gRSsY6CyffjE;aWEj? zws;MB%88`l&G)Z?-|!#`k1XG>z6a^I9)`Pc4hd;5{e1nDETTVi?`YhHX}&t&DDv;J zLBDadZP)L5ib5h5?)Jjkmv#&^d`|Iv5(k+4rBt!#Qnrg&~;eFRq-Ou z5}y$Nz_D1@cL;sk2T5Z4ND4=qUn9Rsen(i>rg>*e*J-%=OnZ+<*8`<9(2?4rBUs z6L0Vmyuc}}mlGp=NmG1+vi?2WUGmCD<5SIGvM3Grbk1Hz<24dpUJV$MjIapW>Mzm0 zw3s#e^3c^dD<;z3S0mJbR>R8YrW}X5u!f&V%Fm_H51bYLV->%L+#e5`UIrFl1uAaO z<3mDAc;{zoCL&!qZ=7Uhm&mzfC(Qzb!k^LUH6UUt%+0ijBXWyEt86G7Wbgc?siFR) zdMs2@G>vE&)+Jm9$#`jL>C51v(75paiU{GVrm3z?Q1yMx>(fxs9Vv+qixZ%qVLB9#~5Qe#%zuaiJeD#@t*k1_<8aF zCDcwhN&E5BqyfpL@lV}F1G*+vnL3{&-YIE6((9#f&j`yHmGLXHN9F@OT~o4d(Z<|2 z``?_joJl#)&}&S{eUfL-TTc&Q&-^oV_gUXd7aik3a9S?S<{9U2Ip|4fYoHKkeJ?cO9i1I)~fQ z)3MTV+ZhNa+tE4Ix!rlkRl${m_F|6f2yAjicdWY*E_sT3oBOK!OJPu9YGIASo`o|C z|1LaV__Xj>k*p}SsCrS?qH#s@i&hq`FWOqPujpLSlcHah0xHQXX)5U|#Z*eJlv~MC z$-yO)d;BYvEc&nLW6}GfH$~5j9v0myx>odW(fOj2Mf>^gRYi;0Ru*k6`n%|_q76kW zik1{D!MmkrlO=Gbx}l7Xi-p6 zxxx>H*9-R-t}dKYIH7PDsJ(Ha4ZJRPe*|&wcF%G5a2L5X?qaT+uAOk`9pSfwoo}6I zom-vroFkm=oGz!<@e3WvPRBgQ5HPjXA)wX1hEH;?eTcn{y|O*kF0*~ZN4XzO_8?n5 zTdJ*s^{(}A>nLk2tAg~t<>;slI29|Jf0;j^_PA)?huUMAd8K)a`GEPP`IPw|^dHB~ z_bnoe(bCq^*V5HphVTyX)BET}dWl}8Pi6vP$8BgP zzaxgEys`x!3T_r0qIdC65(``6C9Paw1!D^!>!>AmL_!n=2q=#hH!jo7w^LFNz%%Pc8z|l`Lwq^{29MDbGoco?m*g zw0CKD(~hUD#C7OS3rfA7x-hk6YAk-k^(k#q6v^k3`zPy?&VZs7i6;_!Bnk;96S^kI z;&;Z^k1rOtJgz$3;D=*J(F?ACh29v`f$qX{(fy)hqHagcj;bFeL_UdJAK5d~5*Zd* zO!r3jgyzEQx|87NIl4d4L|4@rb?LfTxM_thTo=Yg&K9PV!c~_<>G4#1U3*%40F1qn z#_;7Rr>AO%XxpLqNYVyqK54FN_G%Vs2E$M1Yrsm;L+pdjBNhaG3kGgBDR~X? zAF5QpG4DQ&_izs9?3SFVBZV@`N1UBkzzcSQ?aIazRaWtqr0K(Cd5tH#s{o(!U7Umi z$m$KpAGVjah*mTz3lSwjS_e^X^dPA=JnS_`&Ag_#~RWY2d{cv}7mHmi7tN@DV&p3(!P(R2ubRw9KI9Bv5l0=igEw z=I7EoWYJ!bo?|;tzS1S{=DB@VdIlu?zwH!B`Nzq#Jt*D7*=9Sl<-O8>c*JEdVm{8j zn_4%gSwF1roxYzx~qc%IX6X?Laf`K{OgKc3D4s?D_R)^*28 zus{;x3BldnA)ZjTsk^)T)ZIIEcki^Fy1To(yW6?o|JIpzMFAz@U#J*yak$%QUyq9Z%b!>o6%@bmV+<0fuH|FjZ&KP z@zDDN7}^7sN)XEEB%cia4mOm9U6_$iFXN#1fuC>im-<8NiX2x@if;i7bc_Gt=k=^b zj*<;^hjqyxw2pFcb7{7-*{>eVP)~ACXZx+DZ{r}?`4*Gg>imC6Cj+$uOyhV`>HZVl z#UCi+%2^ES+@3y}ZFr5J{&|v98H1_A1FDJS`RtqYt7qum!SyB>UeWT3C~Hww@F ztV;fd&o7iJB;Rl@&XBZ4H7ynYCaroEI69jcv#<0k-UzsauX8J?qeDOe_(%&rN+Qjp zm|Gf3_S66?NP8^0oblwv%jhfb?C(o9-Uzxwg?{((`wnD}QjsNo6}8X=GGWZjLS(+q ztbHG%G}?+fdJqbNY&1!=yg%TyJ;$_VAN%>{GRMFy^6)0&BbbFZcLV7-``G{2@=9xF zI_|7f&ym8mnpCvEy*iU<982bOdD`tR3lEm5s3!<}3G2};UX@P7X@dF!EvX&XJa>}X zF_y-b0ra*kCJ*m5$-~-vGj9~bo+{~V~yJ^vV^DL z=UW4wzUB78?H9KTWOy`oQ@DP1y-w!vLD$Wwrt7-;pz_${vW%RKyRH>oonfk%xkRFL z_H$Z5lea&;go(7L9Hx(@kMngj9;02(@pS>{Hbky&u1+YR!(B_j(5umoyhoFrfXi{R z+itge?iJhv-Sg>E+3x+l`c@@Jz5`j8=g6y!h3j47cO6%7yr>CCcMVSN z-}GPFnGw#SL-w5i2fAhR$#d&QJ3t6n`55_0cLS8r=(QyyzFtE0pERD@n)f!Ycj`DXCKe&e1e# z60gM3K3?((M?oHQQloTUpjp;dzFYBGxrhc+ZdnM<^&i*4rO7OG9t3c4)XD{`W`JgpCQ^M=-A0`WtMynjSKCgf(k<0p)$P*_)Wz%E z!OaHUeBGCzjG%!*+k<}UYwOPkHwb=7!tM3YxX_tlmBWUIdxfuxh=^DcS&3xltxtob0W9So%B=O)?oE@#RB)&`h&V+Iag$WB2D$hD z+>d!8JbLx<_l?M#nYT9YNZ!+Y=lr<*X8DuycjrGTa4m>0XjU+#;9$X*LTzC^G!{Dx zpA>n(3%4wqShT(9c5#JbWpQ3{8xZoE;uFQs43!O1L#m;nVW8n3!!E-`!xO_NV>x3@ zqtGZbh8r`CR%26R2V-|*FJm8Lf8#LY1mis8TH{XRezu*)^~NQ}xyG4nv)E=BCmH`X z4&tlZ8XFr+j3#4|v6y?iv5v8>u{Mu3UTt7(#^>7`+wfSQk4s-Q8ngImK88Pr7lwO= zyM_mBHw?!N8w@iHLk&F*oek{_%?%}nY(tnKz~EviSNx{{BP)0Hsp`YuaEY_DeqO8 z4{}CcPgK{Dc>=W6H&KVr%k7a{kQeKYF_ z`sqpJfOG&Uw}qkZn$;7>=H#pmS(mcjWxXXg#FV)#<6`>9bXD3YvIfhM!r@N?dJbD+ znjVF_gzSzGk~=cWUQ6ehp0B8p`Z4uJ>b}&aq~dj??6+qN*IYMKQX}rB)v0!eEeTH5#8gS;Xs@a*O*rMaWNv4x4JulK4=}wmP46 zNi~gaqH4IR7YQB>z}Y$IJ%Uu;=%=43PboJm=PE}iJ1T9;D5b07iQ+%SR8-SBia-#+ zWwJa*!?9(_}5IpN~=VDVV+&-vHJ%` zA>B_5qws{RwRNcF+M(YK;;Q=|kK8V_8pD|aTj(JX`&0x;9^~pe9IROfHaDXTGb`Y# zD#8Na1uY+E9()iqy9Xq^iFxosva_b(S^C>+gx63ennQUUP21Llve$-q^`jM_d)e02 zt0Obx=4@?f8yHmfRe$4P?^^b1D?Zx;&1Nq?ZqHY=W5V2r?>B;N82w#?xF6#+jZTT> zG)rtM!`3@_7YAw2It3oT0B?Ph?uobHX=l_QrCJhIS${z|=%4^jx(P_SH7L3h)7Ig5 z4VS<{A4C^@9aZ!*=HFk@a=7|P;h!@}IjBS0-Cz7&dhpkoj-zk~UdoF;_h6SQ_zLk? zrole91U-+$Ke(I(=+k8Xee|n{W6+Bxx)3-V8%o7Ku+HOPcNUj2_Yyur!rw8Q|Y?Kx*sx#Tbi@B~I^M6RMb~vo_K-kNF=>_~vUU7YN8e70*AMyXi zkRkCmiOJ{4K`c)OVgi{^!==lldr;Khk-o*ptHFP7&?8GhiNUf6 zkg)^&IEIYIMY09l&jAx}knKfPah~lgdZVlG$R9|JswS@`cYaY(3C zMD8#5mb-)e%gMgLXTO%cf;WH6n&2X9gS})}ZUS>J=dUxJztbSr4z0_Ob}D~AAF%an z)FS&(iA;d4cEIBcrSDN%FC?L)P%4#tW^y!-WUgeq3s2B>Y$nTN5ozwjadjp$JNm>V z;Z2#-Gm(zRC|ro|nJ#R=4LpWU$l3vV(((QU8Re6Y`&M+AiGD{oMhRN!i!h6Q;1iu; zqt}!*9Xe3tD@n_F%LM5d4Cp4>Oz zgYY#x1xe3gW!aqRO$N>d5$od@98v#~=P`vN_%E+~Izmb{9`}Shg`-J7_7yx5{7V}0 zP#Rg9(%MqUR-0VuNrDaZO`j8-ASZ8zpaVF%g6DspUFm_ojnbpU!;e0@Rp8Y+pwn5~DKg&gU%uE{RvZ~}(ARHkk4r1J(88Uvj> zIM;KIbNcAiuhzMmziLWqG_U@p`o|hAYv$JK5eGlpbybS=tp|UU+xp#54ry=W1!oT);HE;DTyQB%bbK=Ssg6*JmvXEkSOTK z@BD@&69eskN4?x=`+~@3&gD+wWXM>0`^n68BO%z9#&MeVU z(MLK$&CC_{_`hYUq+uqJhW4&Eimc=K7|!zle*$Sri%4j9h!2wrQ^=+je?hmmkYj%! z-9}x=o$SN}vKKm`79^R=S(%;Y-}hm{At1eU5e!NRdrbxt4F&#}J0!r&VTLiR%#*xa zv{!Un^oREP|4WW=6z^ddnaE^2~C-p@-?+->glwo zwCQOd(+%k>Gb-aq+ldn3ugpzZ<+6&h=48FhP9)py8VSqI$&|a1TLVtCPHz9)#knWZ z`~HmvV@LjFe0}1A+=BK66HzamEBJ^4Ij^u6+T?3R)zMCLELvW4uh^?Nr??Xsb64>r zc;a+JC&O&Re}-#@cgE_V<1}MK5b-SIX5(q&Q&UBgzbVp`ZL*l^nVOk8n+BVvnO2#0 znhu+en~s@|a(~Wr+w{g<-t1}?nPvPB(3ykHVde;P6t@tw#w;;=n_bM+%;il#O`lEg zOfO7NOb<=>On1w+`#gVQdS-gb_T2QybjNhXbjEbVwAZxVw8r$0X^g3dsj10i$}}bL zK7vdVldJKU@wxGa@tpCv@qlr=ahY+Vu{UVm#5)f&ii{Nu_YM0EOAQkZgA83*0i+uO zia)|@uVih|85TXHxKh!jq7_9$P?qEtX^W~CJ}CSb?!7Zgm54%@f`n+p3BZr|BKutSmh2g5 zJX*p`7iDLno(|6j^l_g}{zq#PwMAKraU{w!3ev}E38S)G6iZ9Y2!1K6xhY)CS23$v#Qnl5U`}UJR0M zoRpB{fpYo~&6fQW>m)`d)=apaur6UB{zGN_PZB;>#t(=$$1CDK#~o&t(kM>8IN0BP+6@9-f|84{bx?6OU=p=etwvv5UDRN_EyU2*hiV>G0mZ0Yd3V#qj zJv=Y$ci5J&wqa7T?s|s$glrF~6H+O7E6E&c{Vn}Sy)Ni@P&-;yuILu&`shk@5%d*a z(9Y17Xni!dHLFQ_oiSRyS2U)OPT6b9H-lCv``4D|`%AbuJA@dbL>X zuCAi`0bl(@bxU<#bp&+1Ry9vG1~mN_ZQ=3o)lRgtoK`MT_E2Uky%nz%M-+?6#A}SA zLqdkfBiOU$@}cs&%%aQTE!-%Z3@X@GamdY*v$iAhgd1{il!!oW)tQs^}T#>iMvn zQMA~t#^EnR4Yv)YK}+9k*wgYT5q6@~=*KlQk4`@!&cK^+Q46>Zv_@B)j4MP4Vt$LR z;y5^YHP?x0VB+DR-Cp3@c3|L!_-9ObNwS&xrj|8j#e2ngMKJ*m=N8EpMu(OR*OI%J z6K-`EFHa`JfJ^SZxQXf5ilASMaS2ZL7@mjmFQZ_+;@Dz&C6>>odF6T;Xke@DRfk&% zw|eArwT2(-#dUo^8LA$Oi)XRd8rr|s!&$EZTknMre+W1IgD%^0-W5@j_@eMg#GPnE z*U=IdxgB&iR?fym+ixY{_0v{3C9MPm)+xgqHCzWF;sk{qF@Y_#v>wOT) zZ{J$DbAsTXt@ybHkoGqp6tf$};VTr+au}y{T=qq1Hahr?Da+S5Ld)YRziWQ)z|PTl zf|}A{(;4U3T)3atc*=BK=`y&gwjo<%Bk6-L{eK6zauv&ki<}#9DBvk5OM%Y0JFdX% zH1Ft1Uh9m9{gC7%SF=p~etk)k+ls^Q4~mS`z!H3Y!%$u9Mj`YW#4Mp#Glz*sAK6sd zYM9tlvYWEks3830p=cvGm5_U$g=V4=hb~kFBw?C5h}EndAJWtjikIiWk2DuQue-z`sgSCMaW= z@Tim`rK_?kx~V^kABvBPr;5vp1BwkCX|q|cPEd?e3{Z689o1G8D>CpV=oDhqR5cY< zI0FC3zscXpACpaak>BSG+X?wW91E*K+Ot5~Q*Z^3lJ`YbQXfXUP+r8}#K>a?>6L1^ z2!C)bd1ZQ*-h!}?gRN(y7ioinB~IptGUQ6&dRD*<@iVx<_V4BYNLw=h+$2v>NiQkO z^eD}`?Mr%|m1Y_zlBmy%kI?mUQGA2W%-OYx*@kEu#b`fuH9CuxCq8 zg~wyM{l>xVw#TVgpH>z^0?->bL_6Kdqn$?sK8m2tq#S+PThSypa!+#)!Qm%%uidM_7m#o_SEWO(!- z4SEwk!iyfSJ>5`wx1h6Sx93xVkPPUag5`9DR23!*`@=uGa9)}OoA4FwSZDA5$n|k> zuGr`Eg2aouq^Eq~T+oJI(KUV-MKy76FA}{#cah`Y49xm3`ivYV4Mzh$(_>_$<>v&g zMJk#(h2n2`et&S3cPGpAo7A18$YKk5I8^?5DMGcr0!#|4~cwiQAy zypg<~IpSL+!CT8ZlSa^#bd9r2W9BOp%d%JhmYya@YNN~pbyRJ%TmQ(l3TI`A%BoHz zCw7ZES2bICTN%TeIFGfoLpCn3htx+rD$q$Qtiw(tt zP)Xb}IKe4*GpsV)GS)Cg!2J$2t}|XYl{W>N5={nE6R_$8Q0sBi1JhS?b+eCIYfdrS z%^l3c&9ls_%-hX}%;(Iv&Ckpq&A%*FEG`ybi_#KdNwMTx%$C}gMwXVAE|vk7zb%t3 z)3}YX46*d)l@6A6me!UQmL`^Z7Kg>kX6Mmiu~|%(BK~cTC6n(FZ;7-7TeKFHC6Mo1 z%ly@R*L=*p*}T|1!#v(R)ZD||!fZ2VfXWrTGbeL7u=pL*3DY*yLen@?UsEfS-IQih zo1BdwjMt5aj2mFYM;Kch^NcEEb;Dc3EyD@JX2T>yGecPM@8S!^8;fTa4=HY0oL%f+ z^uFkL(Ng|e&5Kft1ci?Zw-k;lY+9I7C@T0=aJ*nH&dI_8RYAr4>-j75yOST{ly@6P z;wUmfl)0~Sx91Met(P00>qqw9O;pp@@Z%F( zkn7>YTMtw1>1ywWG9cwS`(0Z1i!> zG)+^|B!!v^>hJ1r>L1*HRKHX|puO;#`l|Y}`V6ka_3BybpB$5gBPH7QhkT1 zzC<_p3Y65Hz|b1yALTjJ(ml{}1S{PYU%?Qi=^g)vp#$XK;m4N1*=3R?{kF_c_>XJ^ zQ*jfMV_#YMGA+mYz;P%!QUiU+xVuC$#}s@^>0E_xqu=NYZc>PUkf60p+?Pq3GT{SK#{s-X;;X|^q zZV7LYbaX{{i4Nflc#qEGNMe2;8qR1P1!C#t@M@hUKM%tpsQ9zPi-(;2v|FTca{%& z&m~!3-rndyqwpTKKp8p>CG-lk z(3?Tfm%Lx0-VmUE*1L4_OpGW#G z_5BZ4{{md#GrtP>1v5}=v<5qO^BY1J_Z~XZzlbWrKsk%VqC{r6!$k{4o9RM1BYMoV zREsa@FRpJxNe$kJ>h%l!kDfVxsb*t5y(jm@)#>rb=c+bEd;p!Znr@T+T+@z8-g8we zgbSL7df-7|Wqdouq`yt3d;VnLQ&}Z=<`h{yR%nyqP>;)=$SZ)C!@$Y4(I5|(&x4~q z2!gx}ntUw(2)^_|w;xW%OcdO1vZ7GY5F9#GF%G}%RK-jbN$cQ+PvWAzuDGeVt9Y*X zu5?k#=mCqz50JnuQ)yAQQ1(@h#VzoUav|%;Rmx4u|Cs4sRNf>b@&Vg@wg<|`q}{wj z3H4L?TUCy&ysDzAvZ{)zlBxnn&~HAjidM=~B_JE8Dqr}&ab`Bm`tG5J0cESKXA9>zMO zG1xj$u9CaTKFe;%_Q)3EZ>&$cZMDGbfoo7>)y8jG3oX_@vUU2CeQN+qN1&}ykftr7 z3#Jl^>65f9js#EJNugGt^*BbhP8!Gb9vJAR@RG8C>Sfy3`{-Wpl1h1ko}7^+d3cJB zGkurf1s;WaD+$k71imm|vd9iFTWSVAwxGPC_m z&Aw8fpJ46VtffnDSI~bPAYphR&f(S^0ZN~$v=m(~YtHM#`60qvNbB7b*3(N^yB6S| z<80tn8Ljj;j_Ca~ii{x@uamGo{UR0U67MPqFH>)9rloGMXM4|vo+X|Z&q5T@8c$Ep zs-9Iqr()F89v*Kz_M({Ri}tuT2)mg_tov8@%_K`VL@RA`w~&pebo=9Wo^&v87CC))y6kkuxx90CdI>Lro{xc;_rXJV zbM5E4()ER##?9{5!EFHAksb6<%lH|6V8J)KU%*Eg0;V7CvCv~X8tAv4KIpr-k9FN)!4Z{FI-CDxsY`zytj5`K&39vO-T_J$?+gNK^iL7g@PPlLC4es-QmTc^&GB z=lBNOiT3%|@=r%;(c6Ef|Cs>4fQ|t>$(nQ#D?z?v#V=9LZy@XCG1;Xv>Dl^6@)(80 zO6eO^_uo-rEhY=DGa8{5yChxNA$ zjkJ5_R%35%LM}~v zd^jDYgSZOKlTIaby*~T#U+mHE0t;yoyNRoyi|n&}jbex}%(($s=V%b=k$oyhPTSvkvXT4dp2-W$>yo!8 zzbZ*^qw)_Glq0XAL&1FX%I%957M&^j1h*VlT(`JCdg2qsAJHZk8TuMl8?GCxf|nZ^ z#~Jq;KY}r9n}(a#nJ${XzzxTMN;{fInHPYM&zc{bzgud8U)7cvOP-~HrJH56s;$B>s0GF>qzTR>oDuz)(L#wBSyg??Pl#_?O<(Tt;cuEv?f@?t!k^U zwTk7f<%Z>$Wv6AGWr1b9rI+O|@OG9Z$r269_O_HWKQtdVZ!s?cUynBTGB-8n!*>f! zf8en%n+}-Po93EEnYx(jm{LtjQ!V3r;}zo$<8)&uW3EwR_z9lgXINwyVrYO~+Z~nm znc}s@Ba7=52NnG+I*XQibWxk4>>|Iymnf(w;h@Yd6c@aPo9<3BNCkN5737l`^8NB2 zlDs!KuLKujt=tD_&L`%!XN?n*TQlc=&NlL@`;(S89aMdRZAFfeF2_jPYATa5T|{f5 zEK`>mo*A6!m+_0<^8KU`{!5q3C7xf-IFzv_V`|3WjIJ52Ga8UK9h>0~qJBt!HX3h)8C>=cTW49c026|{fKkY{-(#JYg+5H25E(95otoY$gj}ZGCy@hYP;0Z{zGYM zRT{!irL3aqy%jFS7~F}@$?ucTqM7cOY)_7YkN%DOa97ggq!vkuNuG&s6Hnqd?3ZXv zl#t%BKVfP@%Y^uZTIArZjqe+u9bYrkh4LLdG){NM1N;gMl)NQ!O~rVPEo@f8|! zIiz2RI{0$%u;3{DWBn|>S?^4y-3V5-A9O2p&2?cqC+!#Q3+)5#HS`>7z|jq~A=(O> z8}t=!K-sZgvkBMlV$EdDKurg5b#0A7lcotFbF!lPwfcton0m8%u6hXEv{4l{NSbtAm7c5r1+MEOxRx7W+Z5bsvs^!P zlwMq2m%%fHqJP^!jzgs1A5TmnYfkmhcpA{I$aQW$Cd4h27{4Xvmer#Prg{V;!!P^@X)@ z7!?RJgbBhJwgh1+&ixz|f=TEkBgi{SnyKgw405{?&<-W9u0543{~ev=Fva#FS>xCRo+RcIl7>Oo(F#3O-JHg`c{6E4DAXB zr>FnG#+9%&>~mMtq|-^jF7*zUHizBvdGG5Add{K)!GP}#`Y@lcfiX5z%rdY!|?<^kJ zo9wMGNLzJRs=>vX%6w%JsJH>l@IbKYTrlxUO@N60Lo#|+%X7acQE!BM04AnUFR6|sQ*!tuAZLeyoa;S>R91AM&b_L$i zedRR}`x)g?P`sgs^f7DQ3mmEc zg0WX9ma<-$^S`8>PT=e|+*&J|phihyl_6AAfysU)zro*gF^qi!T#jOSMU)?h(R%cf z8PShd2)sqc-ZT=g8?mlQN8J%b&Q2xTWG<8Jv5740G2oK|@N@;59S?z)+DPQE(A}8F zKcN+A8@cX#cs#^yFZ!KT;G6~|>>TDe_h#)i4UMY-6_8dWqL-!A1-6@gt}9cIVst}o zn0%}wDeZ>eP4xCVP;iaH#nzqMAXas~{Tk8ZQ-v<)Rp9MGv}q3Hz8_h|&B+PQ@D2X| z`IU>o((Or=(EHRt<8cbd?Lv;4wm2btm`z>4)3B3i&wM69#a_Ows*i9yPa$8rP$;A` ze5s%}9f!H-9%4xENT==4CNR)e=j!>8uEQ;!dr0%RkAixmXLk~YYtdg)-m?a7#LMU> zqR@FPbsqtW?u*0E;jTm1u@lBPk^H-*bbt%#UfJO?m9D~AmvSU>>?XJFjf=oVzr@k4MzzKg@q0%x@#q%#X#@#3Gt5 zdx&q-GV+}Lp`|n)A47Ap5uM3@JIE_LPzAl?Ixv!1WI7p>*0M)u+WUG*;w1t}b%_&a z1~=L@ufnTz7N?>OdWX*bKe8>Spq6fow>%iNv_G2aNLJH_M@=(zy2?v&N*)^+DL(1%@N4cn&##;RFX;tkthP{J zFGLtJIV2@`ey~{oRR1QpGXAA=`my>FuG%B@FM=Bfp9#^?Kzuw@6*@JnX4rtRr{Ou_ z3nMBYcqqoOI#%zdHq1X5jR~)xIzH)r?_+ttBgo$K2*GW8(6r408 z={NK89V9BWN;!}!DMQZDI0Rp$XVa+tC!=o0R$8=MW*)$U);H@a?R&#fI0w_#cPlrJ z&c8Q#Ie6PXlOD0MpaQ9H{}kLQ^e!wUdE(!~FU6CJ4;Ozi1mfQ7V3=+=V0do~G#ZRO zjdP59jQ347OfjYwrkU`{-^@z0$=nA{_oVr~MFKWTWQ;1+icrpTW4EkTfw&4w%)dpSGL-=v2C`k;cKSaM%#wjhS&z%`rEql zJxsO~Tc}NL^Rd;mezQKXp0w_;t^|FLxAwQT2Bl|OW2}0xyQk&1<&ou-2t1!kKEo76v+dm;h^h%8Z-I7?4+OB5ZDRq-4i%iKn0_iBCS0T)`TcP4e~neR@zB4A&Y1k?~&Fd&5)LmCQqx9 zdOvkX>iE=_sX2HMJyU*{DWqt$+OT2{bBUIrx!pDZEhy6gs(I(6<^gw6} zT2?lM)C;K*yeqh4uulI*zgs^^-%=kF^fhQrP~9LW-AUaXT|ZrGT|ImWsk%^|zpje* zrS>#PdYrZkSh`4?tPR$Rv^6weHBU5GSVwQr%+U1Lv>-vcP?M>N)yP27*VU`kebolF zf*g-h^gIs4P(YS+W#t{^4*Z1Om`LYxt=4dzuA+FSxPr!W8p_Rd5~QEws2b0NSb^Gd zhirnZ2M(q-C@Y(g{iR1$c{Ok?bKquy8G#b%FJ|&v=q_v`4aP;dhV!a~Y43bGhIM4u zZ6M1m0*0zoC7A{9d>BnYl;0E7wmH7P=r!wy!%a>$|8LTZ#c1-nl(psk?VAIFZi2U{ z4UE!be0cX!Hh(~=v4XVNYVgH9z`8NQAd*gnFi9`yRX7Bn^siv2U>DoJC>uAEg}MSS z{(QD2G?;A`?D*g7n|QvBkG7$MTrOD1=a&jL;@iI>cqyzX^aE4p;X!HzPt^@ib|2=T zgM>rMwqfWhCxNYJkq$MM-r*r+jZTHtS_{rz3*ugdhiNbT_9eE{AnXHNtm7XE~*uHsb#CfmnLgC@kt@6*hyR9D@fUfB)!51-I3TOBP&FbJS7j=}+WrSB_et*4ZxS!y1W*&-qpGK_Tej6fRb^0TtCQ4G>QH_P<_5J!Eu%}pou6Du^;`9Y zX3_f`iKkV^REJgjRXafAQ&j`-Db!cldGE!lY*m~}jR&|IeD(+U@B7M2$|D@BtCb7j z%O@&Fu|nuh^7~)P`lRewSpOElWvBDEi6+BRru0_UU@iQNHO67o*^9x}gE*e;FxREp ztOp?JMI^#EMi1kU!sDiF7wV2aFw*Jd>;=Np31!Zxw4RZzw*?2{-z1&XCqd7Z_QfS| zijk79lC3b&Qt?eRI%ApU&!AcSU-I6U!AUm}$BJvBfd2;s?dyLHg==4C7A4H%i{LZ$ zG=@JeOR4MuMjIqrCc2K6UQgb%T=Wwa*A&tj3eew%fVCCOK!l{8eFj(WB!#>^nH~{n zjsj@a@F6j#3XOPo$rRqqUOg18S7BKe{0~(BM^J!FMeo%NU#-rk5{-E)nc*}>`5Wr( z!P;~Oa~~r|oip>P=ggrt2*=TK?ciun5k?A?s5@$sTv3Vs!*?_vt{03a$785qCg+j$ zH2YZvRYB9^JbSbC@oeXrMO(`OkD>ValF%eeJ!-l?#o^b_J<07GE#W=TUWn-utnOCb z^*7w|a@WSLUM^Q$mb(meDR%ztJk;r#Q$elsbbsG<>g8;4Nptma-QyPG))`&(7Pn(= zm)x$BqIbdVu6sGss+)nH*O6d-7W^#YCrx9BDZGb5BVXj`?nM9}Pq?zaNFqb@46n zBk@;oatMy$c=nSYxFB}3s@}q0va4)Q*~?t=vG^?+r@Q!f=?H16a1LRpNK@?<+=nyJ zf^Fy7vw+9wnvdg3{6acRGuky*iuaP%tdI5bnaj|`}2?)ys4@cJHBhA(7u<((9rlnYc}G)=Szbf1GR>C^Q3pn1B@+F6=j>ei|j z$`XY{_HSUmG=OZNAAxucRl~K}L8F5O!S`U6or0f|pS3=Cd~iK*^a~o%J_jcT&kFt# zVhLFg@_~GfqhYyWhiT#-7k(!qGGbPwN92qszorXcon$JsNIjYslr|3JoS8lg&bcUKHOU&S zGWTV9;Wpcs?VsH@`%X?e&3iv`O}R^Qzvr3q*3$0RA^&VaXu;Tmr-f-`EiiF&gD(W@mFOx`!F&qvlT*e@hx1?nuj8%Vo=N zP-up=k+mlXd9HP>b&vI&^`Z5vt)@+6)7oM{#a3H0TX!(=B+&2*+jiSA+fCa`+h^N% z+Yj4MdpUb`yTC5CEA2Xah&{%hZa3K**jw0J+uPbZ*n8SX*r(eU*_YWD+vnM5+vnR? z*>~6v*bmwF+PB*`+Sha2#Qie+Ect42wycdTp8^o@#dE2U6KU?ouk61Ura8I_5fWNM5jk9`LepsGbZdoo^4q4V%##!21 zEd0KaC`{bVpUoG{>&+9<(BykOnsTuj#Zgs*gtYI)tRmtKQf+VoP(vFozXX=K6%ms zWsLOkGDf<8db9MR^w@Mox@UUDv{z{t)3)G5?U+`SrU5}eOg)^sCUrKch=WtRq}EGK zO7%{8pK_8Mk5TNIMJZt^!sMUH_d(H1k_RU@WKJSau9@^U=~U9fq)ti6N$!cS5>F+r zNgSSNPZTFSN!Xk)BB6dlD7xtX;(Nx2#yyW)7S}8;F!pBbRI)kTW3I<6kLeYYiz507 z8Fzn2*NIj{J%)+4l5cl_zLmU4=ZLcr<05jxe}=CPcZ7Wln@Y>d;m~HGP9Zx(T9e0d zIJh^*p{xFb{x*)n*-V4{&{s_esuL6zaQMTOA~QT(cQgdMZe|z9tln$A0zSXrra%NFRqcn+Dg`Th)v{ zLvOr<+sKdZLE2pj7&@Y?(eR<-lwuoBs1dMOxe5u10$b5>=*cZuEgOi2tPYG}ZEhBl zZ9`;EcYxAR;7weL_U^^n-mSD z4sIup>r)+=Y8xDPeUNrHu2y~Ev^tZf)gNR%o9w7%Y)fe|SS#EJlf8-it-?L<RS^<~q#6_c{!D6LpoWZLH8o3m4c0jio%7#;%V-q&g~GWh`E83y zcex__CD+PJ@b--cr716^JPims?I){tO+Rq+J{aT=U*7ZBrE(qncguPEQ4op4q8 zsN^Ki6vF9th21Un%+6G;SDnC7`%d*q^-=XjT~Y0$j>ad{9DhJ}R*<8Z#cakue~HP= zO*%fGs=sMm$Zw6%BxvF_(L6@-n5ik&*qP+mG)0k3smXfvr}~Tf6Stpu_N!{DX)199z9G&120!_{`mFjm$KzJ@ za$F1()WdmS9YNtXb)Gs^9S`OXLTy!(Ing~l!3V(B8(_BQlsSP*IqXhkSTe<{BzKPq2=wa>w2uY!M{44d5#y+|?oEGO2**YP`U#Su9S#dW4a zuBZwteV)|HDdh4Q<&m(`&UhW(kpXg!X}}KBtv9o+mo1S^B+DclOnm~!gPg>j=44gw zM%P*w*3k|ZJp{${WXV82*3#RyO+0|acQI~D3$?*uOBu?F5uBjOm2>K?*@9M9uvZpjt= zCL6A)Krg7p+2xVvQO|jvZQ!I`JU)6nqCNVw$5wFdUudMOppf3W(P)>g0B8 zz-w5?E!eH1>uov?7r1tJ)w}GZd8LcfMW;4SwVhTt7rMw?E4!X?YeVy(i@OrVh8tap z&)uH6{Um+E2rggXzSI4p`zH?>+U!{#XK1Q+L0OXE*}!uQ?DH$meM!8#@u<2#agJ&z zoGd&B`<#tu`ZTJrBATSmq26eOdgD6!t^`)st8qgFla4&w?+|G_QdD%aMR)KH*2klA z1eKN|zzlxg3Wm)gG5iO8JOfBS+(=K)UD}M)@FhPay~RrdCi*uLWugYF>8J49BpT~K zfP|J;FvjgzV{I4zl;lf>f=YWz(s2}5rX#?BCb}0Mb2m`;Cbk2pf;NjsklGUqGu=!) zkvy2?-1noCeld!TYG|%Y5pg%k0eToXr zw{OBv7%n*}?H*VYpT%$48u=0BU+VVS*+B#KoAl51-nuTDW~#P|*W^##Cdc)fypwDV zy+BoTGv;=z5$v28H$Uz}d{X@A_~&5f>*VWR zPRdEzNN(7O;;ZMSW&Y`^Vpc9}igo@~#vTkVbP?d^T-qwG^a!OQIH>|5@IvVjf31dhk^Z9S%p4BiW&GxZ8i&pYq)gfw1TDlY83R*c;nz_H5ph zpS`N>EAR1v?Xv9vn0_4iz6rlYx-Hlyuzt1PupoA}Z>wrqS@ysU}GoFTK_{faDLE;j7^cKEyr- zqd`&plk~j}r06v*jxDZMbg^h&QL`dl;p@T;gCco9`cR?erKl{qbQ!f+Yh&pw{LFZ&?fhc~ltWuMAkl|6v`?yzjXZ0GFq zS+BD$(k(tctAAFjEL&DmmN@fw<}Fh2R@2oo5Jzcxri5(iCmCllw$jnwGs8+hi%a^O z^fRF7iRs;GIV?&~NLQxUNPCucIBgkBbg#5#X~k*bY3`}-QqQMuPhF5Yiatvd*?5AK zZ@3KiklWFhB)nu=d)z?L50ej*e>bR17wwt!ik6l+N!@5^2}!D%_%Lxt;@HH-i7|<_ za2Kvj=#&r%6TLrvLVSaGH7I&XT)jB&*z2*2;G&aatHhk34ZL1VQ1q|p9~Q0-I~>+DtUS5UnITU@Muh~?PdGZ*8XSUTwu1hd z{;+-yP2br#5-J5f3pyLLjlSS1sQ^(gZzW4;#+v6yF_x%65UW;W7uhluAKI! zcC&Vbwyri(>!x|9Ii*=hj&!`HGS}^ubQ#*YHdmz){I=>k?AJ-I%)^;t`=QqSPdP)` zmFuipSsB*qA|9tr%!DW4vTDf`I8Gs;ZDpyvp4^!}iJ@fG#xr$KmDypUyMU)tP(yEJ zCNCoq`ahIsEu|5(daviYs>aK|80Vlf^Zix<{-nfC^*7-x+DK0QPgqa8pA#C#0lrc2 zrHjZgc0->~5B+Z!yz>h{qfOw2?tA5-X?Or$zTh-18*=QMyJo7v=Ju|qs@wv{P{rJieo};+x zOd$1X2Fk&O_=h%l?(#h8dC&8Qz>id`hM@9MbTW(;{LO8KV3lAWjMOc`ZNYU|>g$4s zf)5~TXQ80Xjif;blEFOKKx;t(*gC&V4Pr$%(i9GRFjwEH!ig}|gJG;EfvI=EOCKh0 z>k#^nd%{ojt(B@gBIwg!R*oij7ex!PB_r8sXu%h>G?#uaj z`6Mul?M6z$AR2O~lV@;=_LSau>B z1s>T*s_GTmQFQdnwMB(K3ODB=(FcFAe=59T6I@|)@bLWRI+{#2RQ)o)`}u&Muth3y z7}v+fXg0PpYxvG}F$@$nNpc$AIT@~UuJi((ABAMlts}SP1MMN{V6l1NvwO0iXq+=h zbz6d7_XBBg8XA5&EB;X&rwO+ziRDrF@_NCz9>n4E7Ui)A`7!xqHV#0+KTEY3PWdSN z@_Ti8bxpNEEmcRTbJVp#%kAKi2dby2H{b<$3Xc7yDW|Cp=8e`^HSJhaj-(lECXU?w znyaieUum9e9%~-)_>&x05&n9K)|+S5v{kg#dGyc2Ntht~$uQ^MC`%yGjn>8yr2Ipz!a+}XKm+8<1%?RE@H{MBe zO(PVTHZ)iHp!OutyAljuPW=KO!*N`~yVTopGAsmT_k$B}47*($oLvlK9!BGtQ0>C+ zT}@pcto@WD`V4=KgQ`8KNtThr(@)hBtw;_l3<=o!8HqbvP<2GCX3L1hBq95pJDm?YS_z_<- z&G*BB_Lg%*9ILTprW<|f;0UHmN$($lVn~N>s66Sz=fKjdNw^#YJ8eZ zuY%uG_T3Zg!7I^$G$%<$O6T+kS`hcLUhK*KFZOwXE3qqyJykhwc9U{Bh;*B5ve<)3 zxQwJv#0T&0ZO$hD=Rdg1v$Y(5-N@A`P1b3R``CbQI1OX=3 zf;z0a%b}XsfOdME=Sa_iaMHz|a*xko+l?Lzz|ws@j29+2HZV%lyxeaqGaSMWv z{^I(@t-MvRL>or*FC=r0#Kp!V$OC?=mwwO4o%y2RBm-)9xjpPX&}qz z0WR$BxFjB+-pJ+LaGd6pTyiTH`klu8kU~o3P9{(OxE%(fME*loVF&o&b7BGM7FWq= z886vOALt|05%JQ=(jPPeG!GO=)5Q-0Tt(%5YkE)edgh(v)7P)Wzn)kqNn#Flnm)|Q zI3Z3+-b&t}<`{>Qunp&l{V1c4Nv6>?if9tQc?sxPEPf-tEPfzyAtSy4XOm3YNK+)O z*{?20o-^6}jWWNt^cF1yEt!mT4D5u0e|q4gKnHzFC8##0^WB$#?x&;Cb``&o)FNsA z1lprUs5>47PLgd@L@OVuTXSvPpm9-6SB#T2l#W5$KSnw*@SD7;B3_Y60#yasHTinw z0!@>kCLvWrABJ5EuO7B5EFpALXk^Hq5KHiv;N8Jng71bzhb*E^a8T&;u#&I~;kCmb z;CQ+onHISy$|-6{bmi#3(K>gGIT;%m+b8x`Tz1^r_*(Ie;@2jWr`PQk*y3qY^Q0>< zc#BhN(IR*+H4DV@jn?gr^q}-jzX9IqpK&TvkvTH+18n2oY~Sn-*++5|Ie+K8K|8xF z_h+6pZ%e*7e|-K=`b_>S^dcSNLQ!JTvSK&#kIx#Eh8~9fXqq!gk6UZJZ*FZ~WWHvp zZi%uq#J#t}^33XOO}93;4o8K2$okY)%NAlY*xG|QH`p%PK7)}J_DDEmD{S#d`$GG+ zGE98Ve#8FE{@qd2;p31wbdCr|k|W1qbl4rW9d*IOEgjt)LmcBBGaPdr^FhNa9P1t1 z9s3+d9cLZa91k3?9G@IN9KRgD9e+wHmeeTmED@JzOCn1WOVUenONvWuC3Q=hmb5PE zT+*|oS4p>$HYN2+ib~Q-;!2`Q!b&tHz9p3$FC6C`yZFvC93vcE9Zj$q<~mXxagJa| zfTNoIjr}UfdW(IDeX4z+y%n5ytX*oaVS8`8X8X^!$Tq^(77a)=3X}5IC#XNxqq6Q~ zHCn^00?SX!12iftEF&yUSy#v`Rn0HWXUyx&W6Z70d8CFoo8I6?oNwxAN;bI|ACST~ z1@~d1v4-J_VVR+yp^hPeB#%GjSg%80o?Gl(bdKylW06zgvBKenS@bNP#c9}{m5w{z z-cN?~$egZZ-?gSey?suToZK8aDR|ej zcV{mlW2Hm30sW2;B>gJuGM$Ihvbtp1vy#!ody?C6Hgj3#kj&JvpNV z?S{GxHxwNg(>J4y9+ch@6rGzMlwJ!S`W$+Wd1-^v8m1+t1*BC={ejQ$N$N##^t9AY zsYSR8E2rE|`4@L#&y z^AkHHCL~r&IGHd#p#{!D*Z6z!tKvJvhs3>!+Z5M_qr#Og@VT)~P;`8bIT$l8#vJ1m zy*IiuT`LcwmPWOS3XXgp`A=kV#LtLT5p^P}hOY_F54#iAC9Fp1icnK%xsc5vZ9tE?F>38U7>U--O>htx9`Ut&NFV?&3D+ayCZMZLJF8MiW zL2kN-x*agn4RjjqN9{pc4Evz&NB~9O0Vni>Pm9tB)Ng4Poulr_yxF48S0^)7u0}e? zGOn~z|<~p{g7XnrW}-rs$7)uBT50F9q)f--YFw{??@X%U`G#hM@up;oS$Jug-?4 zZpONx1@|rBs0YGqO+f`RA8z^}s_8fM6n_(7v>eJLnT{ z=G~F})>Y`BpO8NA9sFF%K_}rMYzF^4h`IF|{+_pe-l2mLkzG(5?Zyc54rcSW-tT*l zmIQaE-y-JVarEyFL~Xj!Zx?y1H^I+pRH|*cdQK!y@VtL{kc`Q{6_{p<|91b!0Ro!1 z?W}|P)4_g_S*}1FN(*-hdc>JzGkn4YU&;)vL>UY??PTq8?SAc5?L)R3+Ote_PHC@b?`fan-@T)~s6D1V zz;;x7Mtcb-!c}r{PU7p`qutGIKhA{X{EMS}#V+ku?FQP%mTMPkXKKf5hjJWtLuu7T z+g00%X0j%v=@_*I+I(&W+B|KBHjasrSnCEl{{{|!thogOKchLK*^Reh0a&}groE;i z9SwP!R5W(_TW~(nyZ*<|s&_)IMlM9->*< ziXwXiN|rk4LPD82{eq)Dil=dbavZB>vr18i5CBNwkqD9f0rQ0|}PfnKBH;AKIB2dVBb38_nVxsh6~t zw6e6k=BdTE=l(&rtmLZdiFia1t+e7wAWk$ri=`y`&^2%$j`n$_wXVf{zB~jqstGM>G(p>z3W28H! zU(xT4#);ZRx>}MS&_y(gw8E~wuSF#RDH11i9^0h-NM&ln+B%!H)fWEmuLMock{p&+ zLcts@^}uny9e3e>;Om2^>pO#dn}E^}ftTM)o=P5pnWLoLX&Ttgc1Ze?OpUpu^@PYW z$<-+2T2#U{=o#6UF4E)tw0*dgXG-%WU)bB8u)gbz`=SIVte13HUPbX8@mZ|X$)#UWq*A4_Ke-{ie;VSH#M zQg7PS<4x+8w5hu{T4d;O1{?0~?(R0+-QC@xxV!uJz;|zc?Fs{K>6*OfJ^yo_qg}6C z8&+9&LDz(B;cT*(nYdnyG{ZC#HTyyZp?$Qqw2O85y0>9N!fS{341dbD+T}=FWJOei zsB_UV(G#K{$0Wpzk9iWC6gz=6!PvM-@s;Ac#D7WXk?>L9On=OvGE889yG`N+x?Dq& zZg8?bE4dDBu=6QFDIHVxr%F?Yr+#6}Zg096CfzPJ0!NY7sGqroUBI?k7va$DVA*6$ z&Xe4v+*x^5^V;X#%+JVQUQnaJ4maaFIo?5qd&o3vi#Ha(DhVnnE9ry(db;FmX;5h{ zYI%6+B7E8hWe#PLWp;ezNoD_$pSW1|%v9CnVbYjVO;%G|Qy;wHsW`*`p@k2bE}HJ3 zVPBeFnckQ_n7)~-nEyZt*E0)Hx54HpbE>(}Y%*I>zKzU(nLC<$n}?W3nn#&On1}Oz zqItG?xp{+myLpfKfccpDocV_Nf%&=lmHCbNz4@D^hQ-O^Zjo4cX|Q-(nC;?6LdzfK zPv-mPQ|2w^`TSYk(beVV0&}8SZT2+RLXCehedqJ2hBAMOQeR^li?S{^WudBrOb%tQ z%TAFF8A5g>izJB{hx%&iw$kaP-Aiqyv88S$A4{&3>?oN}&Z9Z`X-VTna0k!KeK6jaW?mA@l@DyfdV z{2=%pXY=OfHO~vmy_q{9Hz&6y+l(V~N+3!<%H9A?x+vQx>v7iVtbej%*$+RKISC(H znejE_bjI?G5gF|>iZdcJJTj`JzeG)6Oh1yoF?}X2!$zDvc&B}WfVVPjOj_5p=HxsK zY0|VxsTHXQQdgx;PwmG!MRaOCavcX!mZS_#`7i<-Tq}V#~yW#E3*!!zaU4 z!*(*!{S7TxJB)*NC&G)qreCKYq&Mr;`kDz3aH8iVbi;`bL_;5Dd!PgRdp z_k<-`tWHpe;7=$2`<&~}VDESm>bX0wUcu<+jVPr!y4RaXyN2O0EcPwu z{OmlZ`hWR^N!~(!PV>G)dc&7wT~p5=biLhaIERzg?c%QGYIcQfkhO4KySb&Xb~4UY z`m*2xfleUObsb z(58xnrMzVbV`-@?d5abrg}K5q=u=JcZCb&iY7L*NBi_(Ju52@e3xrE~ED_F5-gErsI8x4y{F_2<=?9(oT7WY|V0Jc_LSMXqYW5(Fk;N%WLlO^zShn99ava{wH5Bvnke_HurA#l& z=3enn7Ig>X^{$fblpVtpeu-)hk{jfO@^UnDC;15Za`f*b`4>f1MJk12`;{CKTmHLcz`is_1JJj)i6rdqGq#A6-*ZYeto z^MC)l2@u@-L7@Cc@i%|sUz`n@6xj-cB0`~2{Q93#q2hh8!bc%i)K*l6^!`!)R{lbM zA7y@AzEi$dzL*WO;qor>rt)HWhCD@{iqg)IC!zU$y zEkSEfVBMh=cMK`$Yy}#-CJo|qAzSdTN08>WkPYz+{>k0PWm4Ch=tmAFZ=DmY3a(3f z{1`pUX+cANHzDG2{%gVTlac5e95f4!T>=|qYM?&gJza<~EHCQ(zxy9TM>k`!rVigDTzHuQ4>j9C$p@c!SX_A*TD~@<^tQSeumUHu_z|q`lEWt)zAqOAXv-iP6;) zeHEPAr?9WInLD!)@P+?`#t>~b(>d~xn8|k+el?Cx-wnF$#f6HNOrts6?zdVrW6l999NNtH!Ci_{IiPt z3rHTn*qB}2&FE?wxrRSz=UzrpZ{pQx71Z_7B&QPH#554kKyjZ$KOxoCm1pQy8W1)Y zHR-W8;wRiUzvTTTp7V2|N{Ga9znA19^wX_INIh}PnMB3wob2aA{&d&s0 z1@DA;ylTxCZW107J`~jwsn|~GD4N8*{(Z4Cr)I6hlX>lVPL4a7yYwY^4pKbysjg>P zbj;(G;}+D*W^9$7^{9>iJlx|r+bKF;4TgChU@Ivf64Gwyb)KZw=d+j+4KrzsWP{`h z9f#pQ*I6VK<{N88H#t(Ilh;D_DGg`zw|yUDe}?z3g{58 z_Wjf6gU=eDt?(>c;tU`3UB}O^BEek9md|m%GY0Wd6e;BbsfpG3K&gXNgty%muHq6h z&dbou-}rv|7iQ{wGWoY@ulMGA@Rk2hc<){TQFPq>xVLNN?}DnX=^qSb^*YY9D_r?p zzfFE0;movVso<;MRR2AJPF&A+(UUkD@<~32)7)1|o$PtgcK>-W?uLwKC8xe7MjzUb)a8POkU2`-BH9-E7Dz7*#L+3QGrWc*498%y+l`bjKsw=f(^ z3`p#s_y7{ZYNIpj+XrEk4M~2LVoBLf(z$Kw{xlyb!8g+5(x;?<%qWLRmz23K%bT>u zg=|gs_?#-N<~_*G&t0A8$nxLq{F3|w1?qy41@{VL3dfRcHsG9|Dz05@EbdQlx z0C#y~>2;FH0i+$8mJPsH-cwdl_S58LiXv0d#MIq1-n87b7q9pgs#s!V74(9p7CM^YW9iic6kp3Y34784E>D|+9>9Oe^X`I%THYBZ0T2WdID!L}Qj#H`2QwOBlQgx}dQ|_c}Nf}L=BbMX$m&r$x=Wu71o-8qb zH$E_4Fzz?5gy_=AXo7a9gdklj=}pq5r0q#_f77GuL%fSZLwhAT;6~p{+?qIsT)vUD z!y1N1hQo%%hT(>P3{4HC5EcUsRrEJ-qNnM*>uvfdy#vcDTNB15v`k2Z7JVmvReX>5 zta!J$2PC2g#FfQ`#D0j~j)qpnRK!eXH%I~_dPnrg==#yhsP|E;qDmw0M>dam9ML@@ zDEv|QhVUNYVPO};T8CBAP1VI|?`lVD^`UP$5$YG(Ff=Pv9~vDR5gHb%4Gjr()qL07 z)a=nL(@fQj)bt`FU7!iqcxbAsUy;2!s$Q?23ALk@I!7HyW_p{dk1AayP~KH;QI5xv zE>vnrcw8ba-HhwDBiHB4@(uF-@)X&3*(UtBC=!{wLxz*POr=F741RzM-5^*(2kSD| z((U9-d(ccOrk^wfD!?IrZY$TDD?0;PoOch=gcW|xE%E)WCmu}5nr_s$5 z(C?|s`Duu7hp;(n*;!Z(ujd85_-ld+!E50kLU*ArjT>iSb-@qFPt}D^{3t*eD3tvE zwcpqysLn^8^nd(?GGUZ3AJXeE;cOi1HNtINr|!|W_huzGPt;5_0Ihz2HvT7ZEgWeT zj&uo0k0#=#;=jcI{7+3U;YvCce|nyH1A6)*nUA|%Wxt@LU1=t|^WNJfl!Qkkv~zPZ z)P?ky+L7v52iM~QI{E?B4o_DDt-^ny^G$^meTc8oPnL~C=|S1qDD34n0x#)5uJyOw zzPpRu1Kf3Fq08~07emXv2feNu8IEws&z&HG&15%aBlL~C9^XC1DClt5btXKgA-^5y zeV!LdK04AKEXB>61X1v^*H=z(6TI#C&vVevuVK|iLaO_ltm+=gQ%F_{GKv;XtzSf%&+8C@tJ+)p?JI&c{`loiSh+J2ad}hE9xlZOgDNw6v{%7*MEbXE3eGjtfV z$${Lr_Ez>(_EPp$4pI&$V>JYtRY!7GCS?|Xjza0FtPPR!o#G{rSBf`~bzbw)GsPqR z-zpS06jw-LomL!H>_nZ)(#}Rry6+ z@K>PHyeqE-UG&^NuDSVkqgL`+{43OBpb+ACYJ7+8 zes)MW9)4ZYAJ@1)nL>)Z1gBq$p8m?~z^kB7zc_s)s*eT@4@wUFK@)L0t1=~lO32jb zNObfKFa`M2iC7MG&_*Ak4XZ87VB;Nu)N>4NvkMa8c$U&L{Jpum-iz{S=U2ijL>}ww z7F12BUk&IU^YE&Dd=GP)U)N_38IP{eddf)z`LQJag6`NInuzE#`7o)jp^=Qh3D3062r~hjBZk# z=qnIB#**wPhe+uM3-36c;eoUs+Wo!@Zb+^pm;2&8mm(-WMw$|pIGdWsQcIG!j_4HI zCRyC!pXV-pAmj`aTY(d+0N)^XhDIL~pP zQ>asg^LjyFUZeW5nX*VYlasZr!aJOt#fch|L|Z4S!2eF*)NUNFo= zcOg9dowQ0~Nv|B^)xyl*^f+f!M*j8((a$l^H)g_qb|x1ykmUIz^3P2<33$(XU>*v3 zyyQIX!C^iZX$OlTKR58*#TmnPzq%~(+{T4Yl)9jLou!rdui299&MLa3BT4QY_c`aY z6H4WhLhE(kk-cOm7|p>NFVWiP~?~9=P7+5y@C?|%AZ$*9N-yL^?g49tR9nJ zBVJL4`|b1pgB7L5q`&&{ef9#1OxJ*kq>X04M1Rh!i92-5ChT}_B^&kzQsaAGaqR4o zj^I_N97?)^ouM6Q?I(dxg6;$#4mm0hR9sf|RsXGaKtDGQS`hFt;AW6}@HtL+M#&24 zMVwU3R~KvD!u-Q)gx$gOTEdp_THW_BC*5&fhIW^>skTttO?yHYt=k-y8}`Q!Rwe3=ZJ>j}ON59HY&(O|rAu&F2 zM&jF~)TF5_V>C3LhV;8MrEW^glq0E1mg&BvHA*``UZYR?1Dz65bu<3Egf6hsx*VdckPl#CHqTe z(U~kRQNzc(QM{peOmX|-(&D&cA9#3oXj!f)nnpIdw8)>GmyI+G8y6bzp&u1&Di~VO zq#&yxyuc&>Gr8zF`R&P`JLO%=n*}dW4DoJEZc(la`{y%q8s-FLza$aeJv%<@EBlWF zvI^1AA2N?*&V)XgpQ*`o&Ulk?3NLy{#$RlM$7KZ3EqnvtZUc*keaJ}XrEAh1U`L-$ z+nl!Gw-;TW7MJFl`UVBPf>VoTsqv`}DHUvkkNn*%^h^Gfd@OlZ^1sQY$+5}4$-|d;>>YgvDag##umrci#g2dw?6t?^nvJU(cPjg(LqsXqpXofBEuq9MP!734c`>r zBD`|gK-6 zUasz`q&ptaJshG)k-y?vn?TZYq0BCGL_v34K#!i)|Hbr{R8_lwoBwcMR7z6K$Z*ze!QQ{GO_8>=#~heM1jO4$ZHGJVz_H?l?-D zSd{t3RWXPSw*puklihc?Und1!mHqA@2vy~LttXJ+*iHiazQ;E*9KoKk@C+Jwc0@tX zpp|t9s@PXAci0D3@-_3kj(ENH7L!3Oz=0mdb@ZyFDqdh3tlt5U2(Qu_4EM3o>sf<( zj)GQrA70f0zuKsz4%N^DM|C2aF*CDS4v1z%IYn>Nlm%jq11ztosXF!`9 z#&^|ek{UV^2LI9nTu96HGkn%em=-Pg9-T-M_-@D#x_J)dgM($MsKVZ|VY1<}5zx?= zlgzj-dn9{G3i%DGWOun1&o*CPhTHs?yqkOs{PgXp&3p1s3I{s3v2<_Cahki4cUq!2 zq>F3ZSlWYY%~-#q&>dEvEGUgJ(NsMLzZEj0KbSw zC+ZRKmYt>ftR{|vjklNn)w6)70XLveuVmN82HoQl+ofgrfz?=EKgkB%Dju78wfMDQ z`Y%p(9oPwLI9<<`I+5;}OE0Y@+395X3RSuHJ_)tqKl0LD`A$n=^-$p>frR;7at2!7 zCLGb#P(B8*-%=z=C8Mi=ApF34yZ03DUf#{wwDaXoeH~h`37yzTFAvYJY>Hpz?Yo!6 zD~^+vT(3kgDSOc?c@{XbXFr;zKoZRPpAdfzk`A8bK9EgM1C+?hZqGO$+v7IdtuyC8 zTBwp$pyM25&2#|UNUdC3kd7$edFlfTzB&Z>O60Kap{>`#=jl(wIhp(WOS}?T#K9~a zJ|q#gLevXxhlB7TeZyy>ny{PeK*Ad!lnHJKmI+4F5^OAp6;yLRutFph8OdBvq&@hA_F$5@IeC&T;>Wa|bLl(IcR9^x zl|m=^IQ$Jg>nZ=aJ#*L6m{{lj!Xw0^vBxZr3!c^K6W6Cpe37qC6MXy&kavvSlU$Ve zK#v>3bN-x9Wlo$r@L%M)Z!~93&!jQ%mH(8+lYPHQQsR>D3+W$HZ)qs61bMi~UcRS% z+xfcs-1WJQ?;KBlV>qqD?W_XIq0ViWeu2kRpHAOAwtQBz$F+*@i_4@iel6T?=EvLc znd?AT4FAoBpXh&^SCHI*QaC+L;i|qOXVel_qdBmU_mdzwP7ch1f4+_tr5CW#Bk0HO zVO41ty^4kGBK?5kGdplmP^F+H!Q(@=$%7Qzc@F<@yd-lDqmF_{9NcT)PU)NbTRChGYg{I)JuuI`(5w#*N zL{5&1joKX@AH6#!H|A`tfrj9o*bi~haYN#+$IIf|#&1dxBn;Ho)DP2tHWV7B86KcO z<|WlkYMQjcSjkvuTn!^(VoI%)e^RcXdgjs)>z($R%9ba3`(}^J z{+ZJ>=TNQ;E%qa?ZQk|#^!!x??yP`(W*y{wQDo7$qUY?5EGwx2Z+U*n-BMp%=Q*Xf zY4HV-6K-vqY}#*nZmxs3tRQtTVeiSakMBbsTQlHrKPK7ByR8l%N@&S zl&+&yXmzzptie`|H4?QO$6L&AwHt3uLht5V%dB?mpVsEqR@S!G4%UCIJ*|VSW2}>` zlda>dBdtSu4CgV#+Sl64+TS|Xy3o4Gy3cyhx}V1p>pAN+>rLJ+TF+ZA@zFi&UF#L= z0qY|EoHT0<{OG}!`j%`n>r>S9`H z`e05r_cbr#SIi_oVk2SwOG9r$L$@>Kn^feaD@b&YA={l*7F7D9^aAX>0j2fHMc2WF zUJZe|A?#|;;*Z5=Aax9f)KOX-UmQ?ekIk0*WTMv>jUvmTEvg3dZX??)e->&Bt3l}4 zN7j6DL1)&-CHb#eV_B9zm{hccX5r90eeUPnZMnTk+EmHen=^pbN2lyd+0(Pjvn5$~ zey^^i!-{^Bc|3D*W`Ecmaha|e@8}h7%$SzZJEKuX5{ux!)>n4@&PKON&xKv+OqSy= z8hTsWT$-h(G*wzPk{r8IXQ%c|HK&HA)=Ie#onu}~?-Vlx>B zUoGxP+^D$1IA`c~{bIE-*J1|5=%SxTZ^DCa8XX$-AZk#QOXNHh^pOaA_?>Wb*gpD$ z8)z9wb=7s1bhUMXx+2|J-PJJvum)j6!e*0>ULUqCY-iZ!uq9!m!~PBXGpsBuD=d8S>gVc(>c(oh>Vs+zN;*ST zPkD*!byKC76X+B=hW+Hxw4N5r@}L4t;mR2lQi=2NSvb)CbolSU%Dor#F4!?RI=CHY z=U3rv{rJrT*hc@qZcsPQ+7q}!_F|L4k0i%rn)y{pxUS+1H;FFvbn?$W&^LGacBemh zp5^XLpSm>c|B*<%PqLa)fqlpT~*m-Fm|dE(Y~70c13 zjfCffq41i7&ikClI$L0=7CMf0c;j%`F~zBw^C#hAaiB{Yox2{cJLuT0am{sEEI!W) zLYnZfu#eCpjAwuM6Z-qQ;Em9QADM)Wd05fI;X-G@J#_U@K^s9M_QM(p>@?erT(R_m zJg!`w1q0C26KJ|`6r2&f5Z1=0HVEykCd|a&zAStLZS~igX?yyI<3&@^(QDbveG1#7 zhUh!AkJsX=q&sp+N%zDTAA*XW3(aG*cq5#=b>h8v(O+F0$w$`~e;0oe|D@*=L^@he zvg22(!$Q)#7p?gvF57?i3g5!H^Wy4U2A5+PD*D$Z_(r-;Pq-RNVRINblWjt3^FPuY zpU}_>m?bv%?(Q>LJHG(O?z4vj8rtY#=LCBYIp|+0j;CyQi)mUZVC!aZ-RuHKa3iaO zKWJnbIRWpDfrt}vu8%*BJGdhdjMkx67}vZk_5vVUb=>HaOmS-pc+{?+<>DX&i7FPdyd z9G%%{a>Y&1jRQDo>GRuhUX9;;SN>K}3FRzhkEj50O-DsvwC7SbitZ~bE8Ue!Wh{!- zs{C6y8qIuES)qKX{H}6P1*(iHyQ-b)Use)2sd_?|T%|fnZt9Baq-sBpGpa}GN@_>7 zv${4{;SZ`;Y#=>V-B(@b-yBkHCtbBfHB&WKHBi-6)fR z>(JZLDvq!Ckwzs$cl)SZRkf9$l@FAcm1lTd;JJH7xgXs!79yRWjd@-JNQY^71D z=QG#gkvl2AqOh+jPAGP8M=+dwgB-~5p7_ zse?R%Y6pI%D{&mE#}YKkFAnu+G)-i{SGtH316p$0An?EIzmZd_f7lXF_gBF1_<)kW zL+axk`e>?OC*0^{a@114s?uv@=0}iKZHStVAldN-MZJ~Q*l>2m^I<4>`PTAz2RC@V z&lq@VEqogLG=TdO<>LbB<1U1=-7HD>VqZD}vPU)Vdn|DD^iJW`=Bw9JR-li2ZJ-r9 znYYbs(EnsxFM)NvXx2|Rc;#^K*q8misvZ|OrRm0|ODHEd)#x1_bzj1Ycn_Kd%}7oM z)7ZU9VtOwOoEdKaZ~~^L*&7O>-N1VnT8K{})8E4lIKsW|V0KS4Sx^$dt2{~1xi5sC z1QJ}e#cw%}TER(G1pJQEqW$RU8=`BZF9y)Pa1&J(ey5wUSJ+zcot1ElAQ$Fy7eOvi(ITOjK)W8JRcu6KYHf0zC40`9D@K(jP@HYZhg(5p5b&52%zyk2>GuroT% z`w3gwoh3`*q`dMG`oyE4x3Sed9`Z&5au@$f<4Nl+fC#Pd`Qmep-d}+4RIsMBI>ngyQiZg!bS>+n(d=LL_gm}t%s+tdjRL&l9KK6>!BSl4KNUXD zK;G}*&ig4_^pKCtTbF4z99T%ghxbq z#O=sAQ5~X#qgTa<=|jDX?HT(Ww#J0Gjd3^QeL1zhmynsTNMBjsoFze%;dr7tv3KI3 zBxe-KMq>?Q9_Qz`a03^??;V-)G1Z#7lNINgWSxhkzk>(7KQl6OO_m0pvsd4UasQmc_4rsMog;|9g;TI1ndPwVS3OVO&I)R^IPV_I`Q&y!cqij^! z30M{8Jcl?=jaU#m}AN1*T%X-T>%Ui31)gO(VZEb4pXPs_cVclTe zYTa!;imtt5ePn%VePMlT{c5XXtMU6$$L4Aawnf~IH@lPOsNn8lk*P0z$KbLrW#=K}O(<($mRcr)g}0`3P^lfZbk&mcY`gR= zDKCjB5f(qAQMkN#LUCU<5-ogvWyL}W(hrM{6)nbvE+`6sba%RNY2m=aCUEX#g*6NA zuoyn7;4fAURR#6(@3Q6Ciahk4ym@&|@&a-za;N4N(kMKUGd9PRk^wCyY&%q*nc{pl7qVQ;-sp{3H2n@&aB&CE zA2`s*jT?+JjQx#m;X{|eRN1v+?L_^)34lElg=t#|!H9K z#;a)Nqmq1(tdrFD{_Z`KMt5x%Ic9n_^70~|*x6IyF$2ofXfhllph}H|$Jz+}oX8cW zrKlPkx-|uTaG%#X|Lv@Ey6j|z^%UT6(BY_Krc;vh6rsOpqf3x$A=uFVxUeGE<}Opj z$Hbn{G$Ms>g}a2~$u~D8>)e<2;3C?CV}-qhorM1idy;x?EYt~J;y1SzBnbiqB0()d z4S};jjoUpzu$R=w6su8|s&M@La_NFH6t zM-QcMxRMUfI`WQZL_cw)o6^qj4?DJxcmfXe1v-Wm;uEl^H_-06CI03jAj#p01MTEe z4~B=xMdG4j!zJT)mZKqO!h@iYY{kdA%zok%mv7KHw5*8P;Y9!11n);OdMA5@KitG5 zqZ8b$Bsvz+hI&A&ur6e1y?cGG{FB%{-tB&cJhTg0jyzT;dU{M^+ifqI&}$wKVL?0K zMJJ)52e4uDiIt1C@Ha-&${I~K>nJM<0&>vNsOS!ykst7Wh!5>2$>Bu(083zc))Y2! zqHFeDO&dQ$Iucf$22NcC`ne&z@IC$?19Snc*qlDk5{e$*axGUiPqcGCSai>z&>2{i z9}NZhBaU+pOFx4`mWEuARVJOGmlepGune?-lG0b4ZxA| zaqJ59ps6>E*4`$(=5-{97t6QuUH(lWRCtjz4pHb84baWg(amcVTNOv~alb2Fey20a zNLx%+?m#zx$1V1!p_{I1h+dweTB+Kq+6@WkJZlL8b+|f1ovw~j`>Va^A*89Bt9z(> zsXM3}sLNo%wt_#|OZ^Y`t@-Lib+kG{tyL@3fojlRyh+s_Y6sO1H1;DD_5;;jRQ5^L zPSqODik7ODqqJwKMyNWgn&D&rscH#%=a=FxLcvF=w7-?LMCGWegpd6mHvBi`7uv)3 z(bk8Q+mx%73zU<{k#xYjP9wMFs`!adeT?+>I5OB~MZChF6{b(zM;s@=G6z3?pu8uo z#uoA-d8FKhX2cb8;`3z#Wc49{)S`>H4ISMb?>`Psc4c@ySA!2h2Ase-RDHO4aggI3 z$V~5rkk=0--4HFUq<4HDfA1j6Hd`R%btl&z99T2p4PNwK$b?-23Rz!whK+a9f2sd4 zI3CTRP3N*?>gM;|@0s6ymY6QmNnFC7X*XDyHa1)&Y?_`#XU!&A+lAMZFsXy@^WPkY z{(QIT*zBmy>&si8D{!Z$!VqqYN3Hh}LsZ-)nIjoW-XoVg_NV{zqg!y_p5krr&LlD2 zlV;*F8nOF04cqKJ9G>O{xE^)s(2nI<5WxA&ug+mpngj73QjhBHZ_v??Y2@yvZZFtk0agrxN@c2tG+q zBJTGGp{G4)AMSVF>wJgTtwDk>!gj*5_}3W_IL3+g!QW7^{L+~}@dUk#Ojtjw=?_+R zjdbmV$MAqoWHPT4hoSb=C&979{Q+t4CLU`%-q9#d@od7^;0!A_P2pEokbt(6-MR(u zJweh^GEef5#&CNm&u94Bn|(Kv*eK_oc`$EX*?-UQ{Z6wm5N7Fh5+03d2oCm5_xZ`z ziHq+b)OJ(Ub|+~uuM&UK?z=!XIh=d#9c+*GBXe=Z|194f4+6YNTMUH$@{3L$h1)z7 zdg@WO>(2#zWJhT@&Gv_|=037jP!co&a?}BGU-MY^TpF~R++jELax5(LcC=&91lQ)? z?^a01khgRK;^0s=k&6^YuZ(fV;l?Y;e#y;} zSEtlW`8(x7swH(_T0mOgv>Blk*8Ot*r&`(!TQ^z3(@5u?xnU-5Uw=*o~#(C%S z_4$hm>d{)eTbNV0vZ!uRv!cDl5*9+vmIRk{Ejf2t9AEf9>nZDF>t|a{n;ZN^ySLqo_j0@1 z9%A>f*R*}Hy|ulzy|O*GJ+xKWF56Dp_SrVuR`O@gu}!g!u=TLDwKcZcZMim?^&y_M ziuA_@%M!~1%P5P@;(*&c*xZ_ovklk02APu?q?-RTT{TxTdzrn>b!jqI&>TF7K0ao; zL6*al+(x0fKH2ET<_6|6w6xx=GY6W*bPTVWR+xI=L(5IIAmQ!e{=!`55251_yDn{L z6juMOp!@&NgZ@S3I9a@{cp-V1ztPafVpXv#8v0hz_M%CU05ghw3%?XzC|p}Ormzj2 zLTSObg6jpl3lY;os}AyS2CAp_RcIL$x%DwUdE1$$r*o><506%ct3q-`o#3s@V{Nt zo}}$cn}Tv~N{=ulO_L@}eV2Lx{k$-B0!_j;sYPtCIHf#E*`G3lK59ma2TZ%Q$vu;^ zlcmO=#=FMDIM5U65q2?l=Ivi&tKVs8IcaEtu};!Yoal2X=y|ZndnL6=GNYjbl4>PB zPdo>iVtY-VW z2VS&1{#pEz_$Ki|anIw{#oKR zy$HT*x$97p&c9+VG_vai=2iptI1>slQVlt;jFV;v9H4TZboD6Tji|oYio5S2;AT7?@gx5d9{i zqVKTF>+KfLM#MlE+UwnRx*dUJ@|J}aC2n*v?pa@WuLs;8dHmrKNS?#&@fU7%SC76P zV`x_GWI6dYyA-WGZ@}d~jbe83dQ8fui&yjCODfA)yLssC%v#-gX?@fq&h^lMj_)uc81)S)#f^9mGwh4Z|A%6zU(K@if~fQIr0+R*;fUsKNAf#c(E>KA zV<5e!^O03;QfKiaIhx#$hmYDtT}$;{^_~>gLwxT2s{c^&qj*eYn{*1FS3lhFHmc^( z;mx?&$@th&IM-S}cOja(LU}~FQMp7pofLK#WdmihGMMc3GqT+)NqV&AIUmETO9<^n zEv*Q(!i_Zbc21+RlWS8xGKIL1H`44>@* z<5?891f+3a&Y#@El?Ila<0{$ytJ3}E^W1b zQkyiKcEv;AqrVrSr@#*`gbG{(?(`k9w##7T<@yBr)L?nz5X`j>Fs4;BUn_e*qJwyd z<;?ru-{@g{_P)U~^emDd1uVL3;eKAk>C1A@9-gV5wQ-@>(QTf|bE6CELn$6H+t=v=GJ@KPok?pwecHV6(&$|h<4M%b>-`1^|=c39jz|GUGp6fT) zm#!~hP}V?G|8%Y3>}V8Jydu{qI?@k#ZucTBt#+xy9rY4YUy<9mRFT#&K$RVCb=@7>A%%ALa z4T|6x@0${lB!=YqRP=KK3FrepAAME6O*t3n?;A^MJ&W~|JQlsTp`rJ(^_NC&qd%nQ zv(h4Ig`bs$t+RfI{6_mlLT748N1`U_=WOXv>0!U>e%XGD=opXj{~VCS>qKYzsXGHc z2g*^(!7TkeK{E#jHe`ulY~WCq>{kT7WFx2-d9S@eH|R=4kuL0jubj_aT{JFpA$NGK zX~VBVHUB}nKa9J;_2iYF$cHK_D@ql!m6ga!y;AwpxQ|nm%7@4$5O5AFrYXB~PWy~! z`B0vt)m0sp_c-erN_uOv`f%tU+5%nIu!694Ve`Xsbf0za!WxA8M^uj38mW!!5qTmi zKe~4Gt(bYS(Xk8T{)p=m_bt9x{H+90f{fNw=Y-2_9bYnJ8&)TZ69*+#P3o8Q7JqMo z@nW)1^54lv;q$gn*`Df<`d8|Sw6L_vX&+F|o8fDW&8$Sy`FvIad5wVVS#arw=Df|d z=N`#3jj_$QZL*!R zJwp>q(7!6X)*frmu$S5E+Z*y|YVTwpW}j(aVqa=sY+q*IXg_SfWWUDSDfK^p!lfKT5j@_1xOr1`oQ4xgl!WW-f->;SaInBEMr4d6qPjd)b4sH7vB` zm-(TgcS5);E)6L8R&t5;mEjQnl1laY}kfi1(iXy|S<3bXK`s})s1zC!{W<#>DUN2@s;m!L2eW2obG_F?P0D@41-#!_RZ(MXmf&Zsl`8=cV5uaoYR z=QxzKk}b@(bX`?Rj*0IQui-;)PF$WiD{**YyTqKtKo$$H8}=Ah7^btf($Qcs#2b7J zmG!svyYy4^ZS`q5(RC9(;ze&E6P?S}$_;vjed5#NzQ)asGmwVv9_taaDW-@V$1pO` z8=@4E10s$^xQ2HLdm2`x>!~$rW~f#x4$1>VK85I^U-W~1aT1c0E=WxGJu_%laB%R8 zkQeeg3Lj;4Ar?l)4kC>)cp)g3>zPIF6<`Bj~v}S z-DsUv7o&66KEk;!2>nEA+Mv0rX{V_H$s-FVdV)%WYt@Wx!|imZoKYPE0i< zH$_XQg^Xc+Vl1yp6F5t68gh&K_J*<)_8`WEM6pV-o8G>TyZ-3F&E(E%prMBZ#Bj#e z69z|x-(2>8MbfQMI6tDFOMC@v{0{U9m7M3qU&e{*0`EqgryfF=X+2-Se=hQP&K|E5 zeK&*KDYraypc2Q`TRf2zMj?K2WkDCV1KQI-4{==V*wt~q<9ia&6^?p`2@WkB>8K0; zb*brAm(*`D=c>W3T{$ToMtb_FxFHIBj;Imj=Sb)o+0dUOA={l2P9igyEz}A{^mR@M zRtP4ty4#zyVIT4uvq?l>Y4&K%LtelGra&l~`gSPX=A7sYiii!^jOdGPwYwRGtXyt@GkB4%1*7dEMms_e^V=~bV+_InsWV2p81xm+#_sY;pV(1KY#&cThewJjk z19Uqd-h5g3PA3D|-($UJEzi*;L!YoUI0u(b0)?Z54LAocH?J^ORYrU5^Ljxl(jDSK z6YmZ1>{_$be3n%OwNGE4$G)Y$o22!mjp!6f{CfLc@b~p^;lC-sk#qd*ft5(h{u8(j z9-5g2z2iY2f`jme<_F&maSJhqv?ND#8b))1tOcp&72MH%fy5kzW^Mp4V>o%ZVGRA1Cic*yD8#kRw19tsKP zKlNTX?G@@9>J#cM>J{ou>htO^8j(hzeycvLUaX!=ulKb28XwOmQ(N2&K{ zs%lE<0zVI}rTIj2VI0rMrVuMzYKk=e>Zj^mDDvg}-i^GUr0$CX|C>h}b$xtpC91l* z>NB6!J=ImRAt!m9R-NVTINta!)h2xM1*q$hs{X1js#YqCDv`fYRT3a4m7A4wX*D*3 zaOsUJ{aA5Lah8_Mxv%!h#TvPcY_~7#yc7OU+_ps(>>WJ???ZzF(+4TU{CL6UGW+FFGnHg zEk$dOKx?bmPoK|9lMcfCHR$pq$*g9POsxUY=O_)Z)lk641hj#p;NkxRuEInA%beX$ zCHG;bH5Tk&$?vG&2){xV$O z<0BjQuRWf^zuU)I%{-53Y&>{al?(? zPv^KZ1dYxx=!S~T&^ww#+w4NeFr0h(bO=IiAxiJy=N{q?Y~W;V1g}p^gaAQlUA(qHv1{YKjRh5@q>W?`>)p+Lrm->j9X9DjzWNcq+kLK+ol!}u zNZR{k`({dgq;t^FGx4Rh&@_hnRr32Ae&u*S9dwR#sUt45i!?wQELHNO{?colGyLc8 z;XgLO37`2XspT{_N4r8LXE})l&8LC40v`s|U{f@Y=}I>6SbT`TVfJ-exJDqoG5$2>B^s+v@GOKdI(vk_o}|CBP6gUs`NbT?KF8e zDo!iQRW|iJ%^UW%kLk2zDU)?Iwc|q1YEG-SaZa>Moub*G-4XUQ;&4=@sQys{;n6jY zS|1%p!nsb2L-fPwGtpmSTF2IoT@>dR*E8-+d<+@qsDx<=XA&OiE9s;3Qw=VLNr^QR zTPL1LN>4gY#`#dPe{vfZxNEV%eKgfSwL|KbwCZX0wC(BM>D|)LWvDX7K&ESvc`hp^ zYesgp>`vKFAvIjh&CcDN7o0aO-yy$m{>y^0g3X04g`En|L4X)n^b#F6yZAM)X>d4b^CpR`{_55KbiD6doQQtneOD-SPEEYB)0DmRxm zDsNlft9(TH*z%F(gUb7s4=5j1KCOIS`FtJ=%9oX|D*vy1cKNXKf6M6lFWa?pPPld?2GQ5M2dMa)Vg*s zHVVu+<}|1vK2Ynv!Op8{t_ij7J>K&PDAPN6Y$xTsngsNEC?c0gdRH<#^QUOxOBcc9 zXaHF+)vPhQ@w?ulv`?AV(V=W$Qj~pw+c&JNsLZ4E9*g3GAls=+ew3UnnMeEbPdb>Y z5(lyz$BWk$&nWH>A3CAfrRZJJ)uIDMD~d+K)57S&dgM4Z77Sn` z-4(9g;`}x^(C=}e`@w~-nY%r=d9G8=?wp=EX*q)I8`*QSo1&k8WL<=4H-v4KUk>!` z%w427{>jYFlw`bRqi}vk&y11`dHN4pgiF$Ur5C09rM*bokk%dN*(vpA>PpsB@>6B0 z!c^zffYkKV_Gsq~Q0?|Y*Z4>nK0c8MJ`as%G z$+V-Y2ZshVVa*_cQ>w;firf2Z@nK#B+ztE!$*ViB6RH!_SBJ4tp4ut-GmPuA8NssQX73i61>c8ytEhw29_}W}rr-UZPG^ zUFLN759MrSBz~M7%H1*)^e~9E+j*-`534Cu+4azLmxk;Mxxv}iYff~xv)xt{;t&6- z0`}Fv5HnW>89A|?&a0hUz@dPq{$I&BhWcH@Wk`{Jkj~{S?~U&~nm|IIqhw_LB`4rN zYgrzf>s{(y6FO2)w!14lyLwh**CWLJuzM4?$8M!)Ko7PFd}!QN7G(-YK+ni=UgPw_ z@vFl(hq!tl9CQw=9Gx6p9IiO*Bm=!da8|5zm7)?Ca#ix9SGNdyM-7*uF7?E##Q$;? zk&C{Hj)@kDhH+hyqkJ1f-#9E-LO-XGKm^Uh?Cj?B!?})goby;g9lb+Nea4}OI>o%ZaC0hc+WCu(c$Rl02dz; z(J|yW8p7u=<4;-W_YZ`BJ)AyJOL%u(T*i=VT#qk(maC%^ZnTNr@3rI`6WCZ8%GV>G z>!b_GmT0#k&XzlI#r)6h60~S3C(t?cqWaN~TIask{i6FPytQVmtK9UIc~0~S@;VCl zb-DLaZ=2VBuMS=wtiD~wo4bp`_~`kWj$s{kD`t`D*iL6_IQ!juB)7P-cJw*VUT;4L zb_vqee!+ed{N9j^pUFx}1N3t}Xd6=l?*~QGLp#m6YEp2I;9X>$6X~u^4>=;M3U_S) z>g|^72h@yAPDZA&1$01umfXQ7bh4Ks2p>5D(%dg@MiEKo0^TzSi#|>zqY%v=X9T_~ zkqrKsq9~yw*a(6}S6Fj<$uoSRC0Ix4r_6(#v6?%`Bg%uU61}45SH|7xSk{V`lGV6| zYW}2p$NTr{TIwK@7=^gRjd7JHs<)}Ht6!6edZm7Vg1)1Esi~onY9cf-8kwdR8u$i3 z`v~p4jNefU75*4Uxq-S9n@Cc%r@E)6Fti1Y{dcsGI)xsGSm_w*&HDzSd7%=`Q_Tq; z6`Bu_;J;~JXs&7YX%=XDXmaTWzfzwyi9;O5)>&@&pd`EOt#N;8X8X9)^3_N2yXA zhqLFzc~n1n8m!9`q|75B19k}UrpM_UGF6r(uS}wRro5OWO;E@R_<_yfZg*tWJQg}i zJ+@rre56OqMDbtL#D2{PTA!nEu$#g8kn_56jD_-MG!m7;u0dZ|NSqtgf$nH93F>F$ zr&p2)8xYumE?9VAoqz`c#{;$oEauMK77zqS;iUg6R^A)=EBxM)@t8rvqZmN-N9k$l zM(KRg9c@w4-ed>v`yTgQ;@g?_p$Ey1S0p=D^V*Z_(5H~cT!XS^zzj1KJ2A_!5t$LQm^7VSk0EvlaX`LKNW<{yltt zc%86@x({JK;WZ;>MvaJR6?-S{P`n~Oo;N|<>$n|pf5%BslvMQsFX*fQjer5(mJQD z$8pX~Uy&is=$LUZQ;g?)HY*X&S&-d6`)rOrXG5+kcXnQlyua8&G30M32!c!ZxX@TQ zyQoT0i=xBiHCh#KEUAX;{9nnB((KalrB}=R%36`={miCGZ__S3SRE0m7~aC`>v)T;Z>*nDKdXLb{q*0D)cW!D zRrS5<*Q;Np{A2mu^4;j`l5%hR6Z=*?=y2P4TMO%F^m9#18}l;L(Xyvyv85HI&&x{6 zUYf?5#UxHNoF({YpQqlt?khj_x^cnO*MJUV)b zX#{MMW~lIAdoDxSaoL4a{hW-)8`FIp>O;SE_HO=plE*=O>j`Lfqe)1sa4}y)b?IC9 z(1Y-y{YyTSoGMwt{mEaf&3F{QEj|ZHds=b#VpFjerrq13D@8kt<`nfRDlbYXk`#U? z$Fa1qM`2N+tl&q%NxFnqnuNFW7vwk2_s+YVH#M(Oo+|f4?xx(obLBaYa+c?`&k4yD(1O=*+TETwzOqLiDdE~&|>4N{w=7N;sw-lnYO-zbuw zC$CTLpKMMJV@>6?@vL!^aXx!0<9LiUjwV?&m^?>!baYE&6V|?4l8tUfIywVC+84@V zCEVy8sOTn1X-UyZT6DBq;`hWGiQ93a`zAI{Ooqu=)9}{tz;M%WiS6&L(4xE1E%epD z*6&3_H`7P!YvV$%PZ*kD`9G4*0=&ul?ZUVf>TQ~&sU&GC@uW!$^(J+fq@D`yFa`|g zj}0Hg#(?3B;qLCkZ7|%1ySsche9P4~Eu|~aiUf$y64;#(36nSU+F)qt>c%RUKBg3w;vOgL%}M1_@`j zn=9mEnS0=hfMnDYfByp{n!iXZ0(S&t_{}8?J>OpvIA1> z);5QSwE^Gg9Q5bGVJY;fEeNefZBo!jTs!05bjq#%4nox zr*}>doYp(7Y}(4%WcgUzp(Y5DtYG-2hsjCW49HZ`g^7k z$-m=MmcpXbxF04PnC$k(ZM>V*^^EH(_)vRXkGtM*6T3}ww?n?W%N$(k8Se1~f5vkf zRboAhn44SEPtb*odrRizboA^J?)UZVM}n}5j}&;8(|9<5Iej9&#Xo2wJ5NJ+B?Q>h z@HWoTS-6_~;5H`b(@f4saCjfX!EqaM?C0;U4R;*SO;L-4w5-H>r;sBwFh76G6sCKZ z)57S0&S7JQu4J07(=D@Tk$InChK1yN53YiR6}dpQo$w|TZ`x=-paN%#HZM& zEfciL#~o@wBAVDnuIL}|b!dfo!fwKmux~fA!wsXOa4)^PCF0G#8s9%9b?AU|!TsFJ zS0nxkv*3_;5!clOl(`q;I&68*`HqmZkQ}9vFdHJrH!rlr|0n;00Zz2>F2%<&UFrjK z>J85LGi>Tt2e}5d3|fc!T%*_sX(IvsXg6fKT)OrCrsvv3HgHqu%dkLb<(ugx*#PVPceWl5#2(=0Bh;FHSwq%nro_YJnwOW5ZE`-`{kW%+iWIrf$}kY=l#m1>R+{w4RwtsW168S)c1N?qvoJy29L&XTJr?W1+7K98E)mz zx-)tgy%E2qukJdzh%{YOIF?(WSoTK2HfzOfl3r?VXwKjkIl}9!%g}8!q^fNy8+zOn zWh@-(KjC%+(x2EWWJ&OfnV^9Iz#i?Z2p#3Nw*zQqx+kmnhjv^hTM_jG1V z3+#qRIu)XHeL6U%26Sc{lE}>V2~Wp7c3@pd8Y=vr`fc_b&(& zqOS`#lQI~A9{ndBEj#EsoFn|5RP8 zM=W?J_?O3Q7eN@ivtu-p{z*TngU7$S*C+az4&eVPqTf&f+b17>N1~UnR~@g0yl?S} zruFa-&j^p#D9`Tjr6)okdd=1=ht$PNud6(#q|)=U-TRrq4<_gU)aOg^>zsXLK31Pz zKC9SDxd_AQ@t!HX1%<;Q8X;OKx-AY9|3H)DDe-Gxo$qK8#3iI2_DY`OfL=!qaH;69alzL;Qw$oHwb)$Z~ceB)l#kqGMO|ZV5#3z$vr=3 ze{;a*!1JilPw;Q_3_K_8D|3f`xR*YqV?nd%AGl2-Lc*+U<$S#o-~Hco*dIl;dBN`U zE^VXFNxOH48uNwRPCH!tmm#5lAq~40-ut4^L#WP9VM;ct&y~wmy_lQ_syCBeIHhx9 zZ+p|Y*tpr)+%ST4(Ez=xuCw-69xq)quXI(0s_?F6zlfyBI+2r`%bPE4Q5T-pSsG6! zqbXvc8 z#+{2d$1h6=OPHVNl{msu%ks0;#X8#hgl@PoN&h8hCT~sg!@Ig9=g_joa7ho^DmR z#?}aG#B$qfd$fJH{WJ}HtHla+JCHFs_vAaQ1c-Po%3Q^1BcEOVK^t(esN27qvx!w~-Vq z;;nD7Z98ov=_(Y_ zQ@FKoa$&c^O#J0_VA^ddm;#X_m4?E)`FHXU(@;2-3HlosTA5!f??m1#xX_7tZn+n7 zXXZL+`F=o#urjAH?cS}jRoQj3u4S#w>X+3b^L^$P`qmRO8)O{In3?edZ8)OzTj|T; zdl#k~(_K)Ym!XxdO_k}yj_$yCviHrIow;q$EGq@w@=JWR3!^rrYp@jt|u#;4$l4vP06TlfrD#~$?Po^ci$3opdZi|rU|ime}WA!aob zbVZCZ`bG4LXh(FdsA*B^7Js*B-=cBzY0X_Ce~h>kQDS~+o@Nd<4GUjk+-f)uf89%0 zPcv0@AZ%yIvEYbrOt_%9Xh28-YLiKZN(D@ayeg8lVUW@_X-lL$m_TaFckQ z-^Rd$@@7GrAO~7afkGX8C#*`HrznR84B!XJeP7=JewajkYT{EZGBs((xt zu_yn}-*wK~pP8X2Yy8yn)C#= zNFO?pD^Ql21s~x2FIC)7Y#==}8unOx&}Y=6GO|J&h;aAv{YS&I$j=I<}(= zNS22~N{$jZ3EZGaKlC07C2lk=EN^K(i6hgV3l(|`e&;lj)gFlUOhO&E1)rN8!;};klE>!^57t zP=RLARXB$JulaoJisu`yZ(ev9lf63Qd|rbBz1C|XO7tu`6;{IF*vgLf6mG`{DA3Po z39E-rB&Vq`fVZySXXpg>uDST1!7cLIh6>%9S^1lnqZ~!45GqwFQ+66Ju`r~=yj!4L zt)z3s6>iod?-pK{_`hECE`X%92RFwaxExE+phIczm5?6#0S?zuW@x3*#socp&hI(= zEe6t4xD&FS84u_wn!JDXo#s1<*BQP+w7MM=4-t#m@y3hlh#EoicqiWFJ03suR=@i6 zTok}PSnu}|qTN9Mi?r~b47AhRog`gH&%t7@jkC$kw+z~$@F#J04VFW%;LRbmP$s8_ zTnZJ17DHCMN;gOm6yw!l*YIS-Gp+Tz+iLr12Wb1C36Igv(XQ66 zrG0E7Dcyd2q`&qj{1~mYcIIgx%|&KnU-e|wY2~^wZAg2?p`c3&pWr27sp?GaQ~gYX zpMIh4cWo<8in;_P*au4ceZI3>>IoXN=9IRJPOLkpA7N-}$mQlwc4>sZh3=VdiLRrr z1;6HmLj977darh|c9M34_J7=lYe#9vLWv(sAKJH%^oMHMh3~kE?z zLH1jLcHfleirU|q9^+_u$qDnsYx6s<>4MM{C@C4RxO3=AjHM}25?YVc#730p4s_mR zLYi-mN-e>!BjlxN@XO${!P}UT7JqL?Y=e7M!9@K`u@@>!yrNFfNw)X{$sq>HzsT>) zFOox?BDeDlb5phlvhQ$O5QUID4#54HOpmiJ@Lk{uS`ZfojtndfltP3!6tJ8IyAHHX zdwr*NY{I#l=kHAxW3%5xSkgwxR~*qRadC8@rC#X!6>jtkh zdh{ysMzVz`c?|3jFN5_sQruds!{4z1fAj#+52WvML@{Iy^F-Zf`uv&K`MhTmnMHaW zQVoQ!=sx_6#_J-gCA@)y`Zv17b9lac=W~GPtZK*|wNRp02*$8Ii^a`xg~#$(PX8@= z4v3&9{FB#BPTs4%CV6#*iy7;c2G?f_Ug-&5nXrBq(3JYC=OM4A^t66sX8y{v%r<(P zp0M$m3^n$Qh+fR2+^D9KfUIlN2=+{qbcHL1W==sh<4 z>c+s+f$OCqq#zE-mP%=J_w$svNPhP(59})aPnHFx&JJ^>JJa=K*<-m;J};HmlfxZVFizvYsBGXE=(UhTI8x6)J3SJU%?%e^+1Ro0<(kD_k6ju&JN9^-UtBAQ0#$KAv3FxP#7>PJ9NRh8 zLCabtT!G(X569Jyv$CUJ9Je>_WZbp5Pp~z9gsmY<7@6=Pv7e=(rUZvkE5^p0P>jqTXt+XSdq_XWv`Ylm_iZMfV`n z!wiUwiW#x*pU+_EU z!TgXg`}!8`hpYEn(S8~XhcolrOQz%JI0!#)f6393vnA*GGi>8eGKrJGAevW-N=zm0 z#h;4bqO7}?c$U;J{tumcOmREtA}#PeH!ONUmT)H?j-~X7k1FcU-%LhP9Mo$C)A0-Y zareE9tAzpgX3= zr8k7bF)ghZ&4ig$X}wR~P5WePICjF6yC~3uQVLVT;Mc87uED=?DCyTEN0P$&pY=Cu zj@8X_!?F`r-7?Ew%VVp^8euhAJ^0va%S6j4Ugk4HAG2JyJmhxG^0#HNBL77|2?V_5{?`?qy-8^y@4vwEAoXkBXefCK z3tMrwpbCX+aEH*pRC{!}#u=s;<`3qx=GrFL@Jizs;{oG1V}jv{;ZH+nLxlc?ezIPn zTdPaZ9@iGoZAhPsc&3__(;3ynA=yJ7I61S3W%j?*+Z+4w2(uUhL`aG2Z>P zyN~Nbml@9gYxbzwUFRU@ux8Vn{_ND>DYfa(F6r*?y=MwDp-IdUz86Nrm0Hdey%Z9M zPH+>-TYG`V`!3pSD2YNnv#l>%&bDyu+}wA#E8VJGN4ng^QGMNYs9TiD@|9 zI}QhjimPTO({e|A8r689TY7i%?gtxtfOj8UlD&AZ21iFaSJ!XdD{XLje4DqwT`3>& zclR^ym6>Gu+k35MB45C@a|JYj8d?(uk!z}Ej_&0%-e)oU+vn_*6NRN@3x7mEJ0}Xo zi@rznnl9gbQut@_JsW9qOJ}#O6~7UW6}=XvqM^kJ15mCHiF$}zaD_d9f_Dj5X(D^^ zQdqoK{96Sy3Rn&kc7@ah!tYaAKY3I6grM3%t%DBGF!-zD8I#h4;435sM>0Ljxf=c% z`UtP{K-xeaD@DpQCbY%M6R5`Z@mnO4gX^y9rTUSq-(VU`#zJuGN|Q+q9_Ak0YsIg3 zg4w(lFTySuZv&W-yU=Jdmh?|=5`ww7ogL9Q)I8K0*!xb`uF`JDVR1)S3*SXU{1%6_>$TfR7JSjU z>gs4OYu9Q2((cmU*51^jC#x=mT@2Z)xE1sREhDaSZ}~4leH8mbazg)8rmITT_3%`b zko`lxR2QnxXohPOv=?;|bSU-FEv3!u7lRv3XTKSy8isND?QEzfE9|YmreC2St?#C{ zp-wl_UDU18P0;nH0d1geyl$>;rEazEPu*1A7;e9DZx!z^)6L@}!oYo5&nJgn8P;S;c`LeJZT&urOy@5kGT#3n%4R=mwf>=7dgSuaFih40(f={g9T( z|4^v6hO9xaUK=u>&6bUy0$-@pU%vaoe!)GR6CA2|2}z+FX+$Zk>CbS;_AyD132GY@ zj=r!;K8OayJbAe6EBmgV^f!m1N597%{j0P>YL*J1cKjVU1=d3X6JCRWD{z4N1Z3lj zu1k-{G#DKUzmMcGmiYA}Styablbn^TkPL&$kuFJ=WYJfjEKy1tz`I-PI}}2+5GDGa z_^q#puL_2=7HztL_>Oopr^#fohv*5p+gFgMGISH^;Yb7L~w>IeHm> zt)brIU|A03)a=R5YBkR#e|jzTT0}R~P_HgtHFTx?@0-_|b9f!Ew`{wPaz0VUVepZYb4&I$I83PQ>0|y zs^V3{NY9R>-)OzMM5EJe*9=f+Drayq@1q)^6NQ&YN?MGJY9Hmpc32%*7IBhv|38r< zn=g*48(kRFHMTG=Fz#vm#)Lvh12Yn;5(48t!5H{Aes+9X+za}O*TdfS` zD)n_*i?oqxH`5c-=cj+oD9o6j@j5dzb6J*iR>!QJ*-qKE>_4-==2YZt%5}o)JTLcE zUQXWf{6OY%P!UY!m=|EGSuY-xFcj(mZ9P)}A_@TR1q*er@J#Q}0E!$baLcGO0!FQmrlZGGQV^t+~_W)DW#H_%8TpbZ9ZJIy=V&=!;K^hCl~cWd2UhUX1~Ft+z*FH zv>imSJ>0Ig3vC~9jr?nSWcRnXvM;gUD5_iJ&aEz=yOfUzY{zV4(V@La6i#P?Zc*r6 z@U&o8!D#+H{PG_|;rKbf5arpM@?&AXm}bJad8hK`=C#cW$UT`mAXk_3IA>K(ck+X` zv**B1QQ_a%o;4H(M@Uv9JRCbRM`mVciZY&N9L|^n%g&hoIsHWXLRfZ*>GjeMrcF$1 zL+_*?9*)bYJ77V#O_iryfdM@%rB6y%ezxi*&qINJlC&;qR8j>#jW^IXCRr22|} z_*g{WZ+?~_OPD3t;%jkA{FwNJ>H1{iI+)QNNyC227-|#MaHD&*8}@53(`ryBD0F6rG@I2sRDZ(Lsuk8h^hU_b;J*}+ z@;7oH*?5_YG(RvWAjf|jq@bFB2LYD@8u{&E=A7v_IUoxo*zfW|K~00kkZ$j+Xa_rL ztHKogMH#4VWcb@O+Wa`e+dRUw%j6S2D?HZtAAI-bhBt<7w6?_S-{=?W)0p7fYwu}0 zYQEx#uF{B^8vdsa!4uj>RSPypG~LE?!&<`TcuHI05ELapT+l~Q0)9n@Hqi<Ef;8Sa`%$aEe>A(=33&5#ZgyYq94OPm9MKnoiu^JY8K~%+5=kJ2{s) z$2r$-wzk+=$N+dlNxWj=j;G=g(Df`cKicJZ#y z)kcd}+}^Vx^o?ZqhwdZYYq>?a#<;{dPjsH(lJC0EUF4DE@xn6_@5W--&1-QZ7jTOv z&*wzqZ;@9UHmG_ug0@^B1`fO9%LwX*C{?nh=i@Xkg?;HHj>(+Ob z`57(VcSsJtg!SCOyB;(1Csb!2X60nGWGma+AiBz;aA|bpyKTwaV%!-6xO$Fe13Lsq z_Y`9$|jd+ImUtcfZJl_$% z3)yaWfKad&VoER_ZpTFvMJ1wS(f`Cg%og_~Yy1o}lnwFw%kQiI*Z>pRqT;|U%+KAV z_hmg~pXGh!_eh)WRD>%Q1~;OaV{!1Okg|{+q2kaE^m@DwOMpRl1!8d)v-2|LO*G~> zX5Rr^3%AfZa+4F@L)9x9Od6Amd#<{sx=23$B_y|p(2Mhkq28?#!o`xP zwaRg!V}dubp&1&S9MUDUJ@majq21^-TN5^k`TYR@pDXIGa6KkyvvjHYOoOjs5+t4R zhE{0KC3G~jflb*!e_nq||H`1^BW(>8kSfaz|1+$G1Ah(L&ICh|L8^bp=j^9t>9GEs z{tEYx@ZL%NBZ!wW$nxHXdioFg_js;v=(p*|;l9q&Tj9os>6_?oLFienTfppHt&=cK z|4*B$4bZ$J$=DVD$$s*P6V$)+dLXlYh*|>WqZ&8$9I}dspk7qP%s+tytmtD1&_&AJ|TiY(eSk;z0G=Jn zybbuiRzY|k%*p&)x9L&N<=<{Q$tw4PIvf$T#M$1D1fekWW(xlG zaYBL4Ay+(!XUbQkicP`{zKdDHt0F%X^xmT1pz*whg*{Y!oZN6r6zF=AV#zWRf@OZ| zX&r6nzbC+-ZrO8zerV6#(4IHZ6xdiQlKM+^bOo-Iew6va`F#$EOny6Ml=LXK;2%W3;5lXf_+dg5bC>q|1Igs&Z4P z%ocbt4Y@AeAuFsP1JO}AM!AixR2S75wJ-d1qdE+_`dIa2G7H@`e`srKPw8IKu+Uon zk8Z5CLYtsFZG0H9I;u&GD&`HX!b@UK#CDG>p}*ugSNin{*ApHm+)B8ZaF6!2YIfC2 z5=STIBzoZS+?FslA)n5O+6he(R0-(`xd}1M$N_Y*IY>}Vq@8Ul9c_OnykK^SPi&Jo zE%B1YV3}@px6Vv5C;gk;J^5`)%ak3do~d2w-406oA#F|C6LMkyOTUs43vc0RW=!VT z%00WEfma&PA;aBLh$&m5J1p+H*DsbG7dpzw#n12$J% zp>3M&sy)!|uurlduz!V5H?HVhv3GG+@!;Z(sIt*C0&Xa|Tk1u($^S~Xm%fJ4e7Ni* zEV-KUN##4s?^HCdP*!ABbg!7g+wIuFHVdPT;%kXnM}-sDyK0i|6O^h z@;-C%=c=YvepTA4=2g*EF;($ZnN?*~?W?*~b?5eDRUdBMsw%6psuHVWtISpYmCyLS zohx;Y4~{*2ZF9vF@`PP0Jj(l)O)c$PQc~O%mH0w&aPbO!8b@g%{E1n4W$BL6^QB+P zLgCm|Lxi?Nh?bRpp63966}n|c5G0P%=_}F)rYFMT*q-)tT6tP@nw)0ur>VPA`=t7( z>}Pszo6tb?tQxI6ZtPIo3>SVGH6nWeyzMlWWR#cWa2 zS?FnLY^epe<2v2nixS7f?C6d|+LoBW3@u7*obWo~Qo<&5=;{PxLWB6Lc%o;=kBILO zpB5h&_bP6G+;4I1VcXSbh_eu|EWdLOkhs#BDAiw!OEn%}|$ zeT62KN^^JI$pejZU}h9@t@}~mP&Z2ZLTl0VSO2aWr_2aF71BbnHE4|dfZRqJucve+ z9%6H#2Ofysfd>O40<8YM{2c+hz=blIJb>=fq4Hfp!xSrMA}tNc3TYaW7CK86tnFdg zYKk*YH~(ucG>r^D9G+mj2X&|1*o4-W4u%MN55ID)9fuCRTxUjy?yXgmeOigy)|~!_ zacUt=E6q{s<|}KILVT!w!c1&&57KB_L6| zN*8VtM&T>S7A)}I=e5rh#f)@=G>y$j%JRg@0*Tk8q+kp=?mv@muGGd zJ??q!5ZHa@3#YT-0oH8`Pj1)-MI$xgLatD zR(CJAfv!VbdO82&{NClhTbBD`k9nRtJj~C%1~GAtr9=EU9e}5xFCT(_QNo1lL$1%y zyEYo~0{j@;a4^4PK0burv*J5t<1NHhU#8(CdJ7W0jounEfZ0sBZJ2L!nUmvr$;N}x zhFckvb2_j4b6uQ=O8x_LZ#T521>^#!GC5BnlfQ@CD*D5g@qIk>e(imWw>!C#o`h!i z7jt!2X69*Zdspx^Mxam+)%~LC=*qOWKnpJPh~i04btNbS5kO>Pou# zb{3o94jvVm#f82H{e*rW{EKO`ut7aIMvmwj6pmBUSm|1sLAF{hl@F0$f=IQ39Q{)K zjlF`8!g?MX@|vHi<)QEKJpUf{kksD~%7w}c%+7_V#~YZNA2Ba0;YyXLE1+YvgxuDX zTNgCaj(PpTxg>UVRhy@(p@}eu1Q%3{~StyuO>@ERW~?IEZgu zVWGd)IOB9)piaRDeO`50^@gcChOauE){~{`B-L2uN*Eu1g&n7>a5|3b%&^ULkND7M zcn^2=M>2@NsQ%?U>&Is=P&>%wWk872(^m2U;zuw39IjzMguV%D7WZ?;SIybhc6Ew7_O#Mc$sm8v8^$~7)irYA~H%_V-Ms1j8lv&jJu8d z;BEbG9BS-C3sXm9rqKs_{1U?$!$36c)`nz!ByV{p*rfkW-$Ad^-9f8vk2dYCy@NBP z1}ex0o);c!?n4+^f=4@vXXz@W!LtJ!v?;_CSDeGcmg_e=z@V+URF1u)0!K>=DX z9Y(@1R9Y|a8dLO8h{GWPU+H3*Md!4?{~iC0bb3_q4D`rv9nSq~KZ{=o&4phiAN=Y; zIu<~;JIf3m37KP??*dMav$@Uj{fkcfoph~?XOV%!?KuJy04&+2Bk28*!!jT5;jgvz7c#-oIjySFN2UdgV%Gs zDm|a!F$?r`;(4qmB}OyNCk&ys%W?99^Y*)=jW&Fo~A*r3@5X4$4EqB z2+T^2G>7x@9O)gh@9k(o=|c*>3x0JSt&;-W(QN}yNEgT^(xmh|DW9E?>GIesT!7~M zN}*7U4fYEDlWoNI&_W(L)utS?!ra%~&fGS_C2~WQItG75{Nn@0!yTgrcfF#re69+sVXB?5YpbC^45L)gZi{g^3x71@s&D$NAYmv1ejm z@>R$E#*IzQvWd&sQ%sP{8$R3$}CPzR=-Q1jqxu)FyxjS+{=SAi9%iEFP zIKMQ1MgEt96#DN@7Wx(TEIe-Wx3#qWVf)uEu$R-teW9pHQ6$N?l|`>f(Df=_S$w}F zl(}+E$dl;6|oiVDt@cjU-87@?l3Vo4{|JW zoN&Csl@V82#mqdTa%1H`l`pDXszR$0s*0<+R*k5dS+%NaSJknqb5)nBu2fyCx?T06 zx=ytlm>I8X=jz7QO{yDLeW|)rb)afV)hs@H3e&W;s$S*M%0-o1tZgNay#e`Am(F7ZR+8W1(`zgfEF&x<@pSaJbYPCQTM8}NIHki-rClsebbr5w z-LVTV$L}c7qj;?JV2&l*MznS2?>(;ck!nn+>MNHhm#|Sw!*`4Q}9En zV?W0pVS;wVN@H%u%#N|e)PrPK7VR8$AgX^?EBCVg4s+PyBuB z$TN4BrpW$+r29ls7ypJ&P`aW##3^)l*lXn=8kGXo=~}CPo$-@ttU1VZ&(u78u<-+2 zyKcrnbgL*@SvKl-(#vvDzg(YBbKwA82>a%FTrI;ipEVaqBX`!gLWzz-@tdkj$2&S* znaZjEB#Ev5#!TW;82PY^VDW*c?cpfxAs1(ZUQTYJ5 z3a8>PbpuL?LAP(!bGZ@;^K1vCpH%O<{lH=*Sn2(O>>EN-s-&G`J(d{XF)Ufrv6Sxn*Qh<=sLnf7^65=w)b)nm5k0h=-t3BU)WqAFKYvQ^<$2F@hSFWKbK~m<{_UO9tI45klEd0G2 zp(ML8O^4#VNJa~;WWvtp^=KH>pKxC{@P5h$_PqBwQbD^(@f?8Oe1@;G5H)BM&DT--%QIFNI!nThjErJ#%FLfe0c97U*R_QwIl?^C{jY+8U@}YEm!lk zmh#n)@c-P+%LVV-I5@Vj@9j^9@)xG+37j7CaE4SfXaD2xz8EK{&1R zLz+NuxD0V)LFh*qb+f`=!q6DU)$uFM)qUvAeujn|&h+~O?&J-qp@+Dg#BKBxj@t)b zK56PRjfymKcC-l)E?SY68$udyhvu5*1(b~c_-VdQ;;)I;8HM;B?_EYi{=~lJ1%!;f zxPSkGKDSqMOIx4xpDXOmYH_h_TohYt(>mk>vpgwOVRn^x4wyYWwN#hyuF{b2k~IH*G=Tt0<}Y-`86hgs8l0-L=Dx@Z9LwI+KNHbdkn=(UBV}=g#f6mYI2!A`=MJL+8 z&-iVJWd0}HlU1~WuY}T(DR~Z^BUvJmcuKs<(Z0veahjL6lKQ?cp*W7A;kpEEx-BoI zzU`Q?-@>e!3m5%oi5A_uy|04Q?Njjs@on*C@lkjd^TcCmi>eW4qDwpTT(<#VM|)A0 z$SCs0AAOqnbs9;83SkSONLbtFF|LjcxUAaxWcozG%Mjv_zAw0lGQFDTqfnklekC#xOrWpi?PUJVJaO2gfhIry;+WNLF*Q7~prA`FW84 zN&3}$2kZ)X4~fpkYBspW&!*P3k|VqIoEW_^*QqO0OXa_8jxDb*?G z@Hg*AEnJ@Nk=`x+K!#UFNyem%gBhPQ<1!~?-ph*48lJT;yFOFYvYduF_ME9X$8wwG z=Hu0PiqE+U_3{9dvps(vUT0N7=YrJ*Z{gF8EIe)VwY9M=wLP#a?A7*}_H+21kvT}oD$JSz=`vN5IfY?+X5zhBCBlszgBD1TZJOfIlLWVzFhhK?vl z8^_P+%?BJ$DNV9%s^?Zus~%I`tGcv0s#;dXDiAZd(ZChyX zu4Hx&x5;cmo5&VsOX8$5z&4p)?<36KLNw_FyV~}Fe}VME{|W~cDhkdQOf1MQXq>+< ze@MPHzfs=Nym5J1dG5LYR+jSQ)5$J;om4t2}-G(d_VaZ?Ss9O>UB$s>3QgM(v%R0%{%QkYRx5*~R^Mkr8Mg|+<+0|tlX&C$|bhNTm?F1jX zgDy>PG_){U!~Mel2wxZ8FI;Tgi1u91Fb|g9G5tV&vA#&(4i9CeK0;rQEBd1EZH0%K zpzE`T{#Dan(?U~=g#G|^bJY{J=P4w$4xuV_LtVQKp`!-xSyQt414GrMIgYY_T@W$| z$C?ks*M-4Finr)QN_xn8lZE_SK7uAGt2{{dR5o8$D07oukj{{%1>QjsQU?4R(B1!` ze-5cLtz?}f)OUb*o4Apvm+-By(r2^)&jOxhiRUnndG6J&Z(R+3BV$ zoz^+^hQBe~ZII_$!60D|yoW330f{0-_)>UNcmOYNw$D?aesmR#6KK6Jd;dg^Jp>CL>Hd%KQw-|acxYXLMlEgJDu?+;L==HmhR z0tL=Ra78deAVZ6ug}-o@dfsKz$5o{Ce70lqi2Q&CRULG@#Ut$9PDDe0;VWU)ElpG=gO{)#nYT4==Q@8sQoePMt-U#ch3Ed{0Rh_>J)I z5|9b6by(ouz%#JIP6yr$d`GhWL*TB!w1CO}+wqZ(BU2RQ|BhYmuP~p-N}ux+x)#5N zntyj<)v(|2C|p7eYmj^yT=EUuP4;V=(?k33d0iy3$)w2Ld67urTzU%V8lB<4m# zeOrlFc?*7GXI(V(iZEz!TeM5H`?Sw>?m7>$cRR@272s-ClC2x8J*M;0S#>$O7@e2) zA8iNC9`!lZM&+ci*S!@wlppY*M@I0)eV0czBs&V_=xa#rm?2S zOu?O)mkqT2k~e2&{G^Lq0y=D}>8j+;M6IGewiubcOqH<{O(SDBZZ=bL{s4>i}ABg{=q zH*s~%HVrg6Oz9@8DS-*QR`{myPT_`dS0?MDsMRvVetcdvv^2%zx&Bu_QD3Sz>t%W$ zc$q@ITA!`&$n!@A^Yw7;SG?X&HN7=L+$j6LYxn)tD*QCPR7T}z7e#v<9a6}5i%F%*q5ted)9fgZ!~6C|c7`67!Lodr;``LLTKcoJ zNGhinb$#Ff+#Fueq89{I2L$-vqxs`6|0$5mJNOs*=de4e#+y*#AL;kjZ?<0yJu8bP zze*-SpO_-)FR7H|K)Y+jHl|o&mUv0(N@|ff{NVeM3A+&gk_(NTMPw3RL4IrnRrpKd-Sq@%x*0~{nsg?RUv^Y+~D&aPSPtL!|+_rtsk^qlN* z%_GL6jz^VetXGWJYwt*JB}s^U@0|jJpeN5s|KmC7G1Si~biN$-d4Yptr0@h3%Vr{l zr~qfy32`kNNeji3#dmP7{NnpBJ%nwcRSL*{AA$6RrH70UGWAu80!<>(4`iH$D&)} zCbY9G=7BbBrrTR)Sgu*UtzlNVRbo{#4fn8)vW~TmgqAVMI^Fs^9I#(_yNWsF99rJ9 zq$WvWOeQ60eEpMVCmm1vk{nEPMZe_jDFU)w_fvCH*QSZm#-!Ix@0)%fmcq1*iVnZMrU2ha#TA^%c= z9B;sH1xE{=3XABHerJn8EnRPW$rRYrzK)!m0;$q+Tz~D+loKp2ku<5vg932 zf`dvolsEQBpXuk(goV_5-^~T$L(eV+NhOx4u^4H3JmCvd?s=}*E ztALuVtLs-CsTyCEhC{luV+ZaHxAK^>o~6r5{w=8k z$yvy64k=ZZ`IhaarzN|5Q2CyUCXl7=6*j1Oxwx`ZDniOX!Jl3TRWGMpRCb#`&y2F4 z=>4vX%VT6|o6@Y((2{553QJ3Tq1)|8g|05v6gQ$}o~5u{7w(mm7erfp6eM~2XlRy*}%>a5gusY*Hs{{RuFq`&)8@~Y&aU`ou%-bqiB zb|j5R%1crt)v;cLU)Rp6;KVoEl9TujXHtLo&V5M!HN}}E=aF&JQpZ}I)Hms4(zT=- z>jmooYl$`Anq-w*-dWBvLGQEdhIBXEGM1C&P;UKkM}KouXW^07bN>A1k{05Tc4a#M zrbaJ9i|&QStxIfxk7G^3I5^R12{LBrJ@KRC?eQV;wc^glEsGlzmme1#`z7`?+?w{W zTAB%0$Fz;{h~5(2GTJq2cT_hf=v6IZn(t_Cid-Bik60EFZ$4>GH_Zw^ZoF-Hs(+w6 zrCqEU&lcF9UceoyUQh$v!_1+*xrzh@M=G4;m*jP1`*3TV3hEVfBFkvc|59)vq@!MAvF(oMt>|d}MrSJZ9`~^neFlXmCe$p2OTM z(LK-|*Bv2$^jPEY|Pz%|yz$2q)N%ck9(@|##2uW#bvG|5@uX7+3)@bP&se1V1|6n+%dBaW3NN)Xk7 zg_i++bv>yZfnYO4ykih4=8y)QkE8mmN1Xdm+Hd8qb6xAZxHene)a0abGBq9R{MPNf zXFu=Of?nu6|8Rw=WLxUP)H;>ku$De!NF}EFG-jhZKoG)AzR~*xodgcSFu`DE-!6iQ zOtiNJulQUOIlXOou*X7)3h*)Wd%O8q>GC~{_pphN-X}=#LU2H^kLk4*?5Z=+=Jw#G zs3UkQIDs;>9F6IT;FaJiAKk#5d_ZuBm;Jo#fNniP&`&UpujB5c@M$PG$~^uPvvvvH z2x<~XvCQe!q>l>d_)cJsuZ6Nb1z$)Fx9&Jl&I!Ev^Ry5IFk|Nn_WC5_xx5d@5!WXR=$eow89f zyR3yQiqp{m**coKWAGKtV>f$+uI@;B!@31^3F^wv?B6tY_u#bWA3Pj(YoCxOp|;S~ zVNJt2hW)LS@RPLw&$CR`PPI(+5GS*P*?E`xp~jQbTp9D(IL&;`R@CA9P+LE1>uEih zeXX!1s^}l-r~Qo_+&?svG}I|{$+}8iXI)R-Nb+;H^zM4OUZih?Pr_Rtu20ch^m-f< zQoTyA)%)pdq3S*$t!IH{^_PAPo+hnsqINHAI8Xe^FM%KXG&G_W^sF(#cs#tTsSfJ!FjIe1FVjrZ zXY=rg`Vl!1xe)>I;6Fsfl3h9%9!5` zuzSXGvVVj^y@|He8eAV|aD6PmOR~eT$uQf{*N|y&#Z8^3yQb@>GeWE0qwS^j=U-<5 z+>uI76Z6%=i)dc#Us4=ZyLq|B~(qX%5|RhgU-;hopx%)5x+lcp`1@hTz(Y6J#$c75+ijgZ`qI zCn?AqM#nDsOy;#hc^KKke`Txr=`5Fp!MZyroerTx9ryqpx>I0t2zQ6+TPX<81<1eA zjRL&sN&V0NwEq$Ry)>^3^S3fVFQqRe#jk~5EU(jGPsBrwj-dnUvt+kqoTLwlx+OT8 zE=XR|9Wu`EmA~2F==Z{J3SN+AlDm>!Ox`Uei4v8>hZ*}Eu8-Ni<9xgM#-K_c5YL4$ z{gc=(4i$YCU8S{TlW3M`5EPFBQL3l~9Gp7BTf*aT@K%xQ8%?&iTxelKg=5 z^jKi$fK!1b(u4ALLBA^MD(W#kw^Mw?pYt27JGsH_g7?A=pB{1-D&nQE<;rQQ&T2RH zNcBw|L-86d`=)JptLCYX!p5=EM)Y1gP1i}^#_)r2aQGPW+ejIO%@Uy`&GxVwAm#S2vtV?;#@~n9SY20|3ACg}}kKNk*+XVpyRdk|UD0C@IEgS`7 zhX%!vb}=yFOXmz*mVlvb23Dt%g}rFHv{vVY5c z%1cQJ9x8uV5mr$JpV@)pyvlJEenuROjB%B#D$iHduhLhQRQ0Wzfji?-wXiy#$+sVB z^7iUGHO*=?HEA`iYlhV2cSZmij~FcVjX7-WpN1iVv4iBF{1HAFXV5p z37y?H?6>eXZ^xIBMS<{r+ex~+_tQPN)Hd2yV~e)=*%}nSz^QQt`tzB>YlSat&bCOp zz5lSSvQ4xl6rL)UEmT^A6`tVt$Uy^UQrnb4ssVW6qnLJvrlY z((r9e$+l!WXMN1Bo9&q$knNlGHS18;;4D+-+ssp$+o3>@&MbhzaUf%4Mt+80`n~jZ zOwZM*&yuv4X@959fdX9tv87JxAzF6IQiD@oq-;(Zl9H3+pZqj=NAiT^4v-Ob$xV{} zp?$Cd_1T@y?&a2UYkkW$%V;(%Sr$d&i^S!L`8fWoIvbb6Ot(TKRl02Z> zO`=D>wYAt9WA(9oV8imt@{u|EuH~d|@j$>lu!tlTfL@uJ5D|g$7-s{i~g;6=;@gi0a|0@2YC$cExS^b=d*w zUda=QUc6dN7tMgz@VKxu?h=Nibb$*bW;4GDZ$;wsgzMa++>rR|+z{w3+t8yz!Lwsm z!f&({L??0*yYQOuwm{G6&7a6WDd>@OR5(YxOxjC!SY9b_DJRG_$jW6&vM_XeUy`nu zj)CV<2nR=B2@SLJPVpA;ZX}2+`J#-lNA>_1;eQ_ShzV63@4Y`1|o& zFhPZJHgak>4i1}rlih*!3mphfQ1!G)XF^D9 zMD)X`0g*A`&%@baOE5!AgWon=74*JYO7MlSs>q%(y$DZ8J;@q!ODH%c_FEMU4$>tYQ<2Az2ID&M<%^h^sj$9bkoR@kb49f_& zM=Xk}i5WuZMXV)xNKwQVgzJRuNUV1N>!}AZ6w~ZUqLFwJjo1|8UNrn!iOr$lE<|5% z3*;5I65o;P5ML1QgRR^iI?`@ZYji4HB)&jPfeO#C!`PQjgpzcCxE`~0PvQ{bY$Wf8 zfQ(THCPqK_5xauboPsNl=)teF2WPG&W_Bi~?r1zSZNwx@;g<-vh+&v~OVAG-0w?n= z%-gH*T=YQo9*gbnCd|~m3EiPFbs;F>*yxQcV)xkN@P5p~Y~PW1i4+fy_*Jr-{D#t! zvIK1rn<>xH+5JAQbKDj5N-Rdg{xxG5vjMXoD}uEfdh#}?Nw+!mIBw2~coMjYWcY`a z@e|^IbBnp-xGRzHI>MN9 zkK;Aw^+k@}ij&xDXuG|TpnV4RT-T&S$xV;}>I2Q`qmVBw0(W^fwjxhO!T+>k4>%Zu zz-(J0+JR~H0kQ-CV_)z=lxQa&CY}YZ%neCn%*ihJc?aOEcuewKS{Eb>K6>tlN!P%^ zv_LvsI#jw?dR5j?#=tp~iEk5R8d(9{R8wX1;S?rHM@ZgCI!d_sNcAN_5~{>1=_A=I zc_VEk4aY}nAw42v<8>8)uB?XR*ayFH3Dn`O_za6=4P?XR_2gCZO>koLQ2c=N@~KLz z>Z{tN`l^4a(XsEmvDdvqV#^Dc5w-jL?kMjDb^Zt!9^I zn`V_}4ceRTYhHn1yHwLtS^kLTBqi!>FQ|Jd(|dYr7BE$ z4odZ4rB5kVyoCbZ4*E176rbnvZSoQFcJgX@sazzx3vV`6dPO={S|)8QS&j3!SQ3Ua z_zbZ@^a|&giJ~%51KdTp=#SX}-EbEC=`}bHr6X5y0@Rd7*k*0Pz2qo*5Nn|pJQ3W* zuPjGu)FB8%>-rGB0X*LmyxF`SycVG14MC&$B;+r-XmVPR*cBccAw1G&Fn3iX#G}!0 z6}N_~MSl7krsx46dYa>@nA!g0jE83^ox^0mVz0*TPQ#AE8E^x#Z6VB~X!Pg=PIL&m zR^~D$GL|t8gBQICj1C3;8~r$a0lgPmLPTh!Zc1;0v>b`fq9@V?xH$9>+HFk84)ktD zV6yH-+eUjx4@X=03^X2I$5ctBErbfqqD6p=_cZQu+55`Ra(<74l9R81O)Zx&g zqbTn{mOez8OKC?*L((9LLZ{Rt-$rV0J$VIr4hR@+K*Dg4jsNR91gqmYlF@rHNe=`k zCkxcOx44J&!(GFPW~9bAbFV}ya6C@(4be|J4sGDIv5RA#M*odo8q=RJgRG-E<3gwf zr>@X8Pl(lFa z72)2nhZaPur0t=T>D`fO=Q6r6b~E0C^KQf6=2C2@o-#kMqTx0C36~o1RDo|+f>Ef0n*ATP@S*fOmref zQfI2)YBp&7x)5D0wC9$lTJv*DnI*@h`ISc`yKmVI7K_8 zY)E;UN=$XYK{`8iUFz=C^QoWG7-<%;=1P#z8kx2QUegch4Pa;2r~A_Tfjze({fwi& z!|dqcSm$_!p6$6H(3NJc0lT>->rS>Mdo;YQ?{g$M19DEop&`u8%k2Xd@^hXj&!0Cf z?|gn(z9YXU_zWlWe>s)T4$j5Sv(9e?2?bs#&Swk$qUp}#8t*y@71Rx%?vo;FQC87_ zqJ8i>7Zgt{K2ZD;T_MFKGfS?O2A3L3yOwTu*LUZ-r@^lg1onTP~n%gXVUo8i*7XA+Y9{#@m-u|xs_WoA>fZyYH_@#cTzgg9upkY!~=>(>A+G!sj74=X8q%yNoAGgQRrql zTYkIzX8B`pJy52zy#a40??CT(?-cJ)(DUTp;PMan{r}K%m{H!K>}c6IG>J!hPI(4< z(mW*hM|h&=L5b#-zARk}vYi@v!bc^San<5FU9ttfjwL1gOP-{gf(oBuie3h;NqM2Rkm&mEy5l_%}fZQVprmDNjM+=#LCx zg#7~cDCr>AHL}-7DzFwVB(ZgmHO+G0GRrc|venABp0;(gy|IhzI=d9#8tpE76((+n zU5T@$9K<`Joq+%Hx$U9tf$b)|OPioYPqj_9jf1D7EnZ8d;Ci&gJY5E7hZV0bCOFcU zt*ep1?EsfZvb8>D^>da}X#U=a&zNnAKv&^Xb9=Mg^viU{w8Yd0Gjx>k3doS9MzY}w zXwWMCJ^f%kOSex~uKlT^pCA~Sv@|&i zM1t-~HOXq>V+m0vl#hlxq)=83mt~f;Cw5ylSu1p^kff)i9i%~+EG*)Wn4rgC?r06# z)e-S$@f*w^%|soLzuzDnEo_TsGaeev8bgboo16^ps|jtt2k@Mmi)$fzEIJ8<(2^$d z%P_w)`61ZIenNBHI$i}jSJtC_%=VASmx7*^<(Qok;OOWQ&*Qv7YQ6++j*)B?>kX)_ z1macX~y2* zzAXo}q5_j^I`rFaL?;++r?d=dFezr8l9l!u7plRXAWZC zVzI%WddwcciQ|j~dABycKDyzKag(^+xLXn$CUj5u0)ECAq~&{o$kGn~;(Zc_p>b{@ zI>9th5StL0;7r(?mzz{!%uup_6mDm7WTXrxeLyPLGr2c zRq~^73IBnI_=J3bTq$oP`;JX;q@0ZR(_nVosR)KP+g~w7F-tKUO7eWnm-`gA6z>$b z;lZdYZ!Y^TdnYeaG*tYj%vP>YK2as9MytL<7hbM@prLEpXbx#f+Dh$g?L}RXPOB@@ zxpW5f{f26PYwu_mYjZW9G^;fOGy%{qU#bVHIqC+Ow`Z!qYABkz>Z|Ao{-t4|iOHv$ zp`xe?)%ltg+9Nufj-%bD?W%379k1P}{ZD&TdtVo(gY{V#p?#{orTwO3>f}1A_K9|l zc7(RCc7S%EwwtzGtI4_$3-k0= z-*lpF_F&kjFWt@wa=KE$5aqFy2v z?j;}KEB}J6!8zelVMX#^(0J9!4U&E(hr=4goFG!JUkXSJ;w7b zyr1YfTm^#Wb>1(21Kwk#Ogq9YO;7xRUY1dyb%Z6{203~F_Wl%1(OWT-7+|Hp5r+{UCQpkU88Be)J8@*B*F3cGAz$@4yLi zm%atf)?u`h@KDdCO`vsvV$GpZF-sHUUd1hkqeC4>i>n8=^lWsrQ@sa6p?$JIPesxh9aelJB7(#z)ye`9amfd$N)G15Cd;akptvv|QRkoG3cdk26A$ z9$bko?&i!%pw~@cu0qG43O(JkSm)Scz>CDU3gW zyn6%O5i-DkkH^0wJ>eNx&)USfI3NAS-eD_$sGxn40X&=u!gS#m_zK&Kr1&a&A*zR* z0!@@AdMF`FPstZ6{p!Y=^*X=)jo~kP7_tqY;GV2B5cRwD?e#77rwoIPC1BBAGWWEE z!GXElvI3Jr1M74+H@Dk9*u(9q_EjlNv>C5V*_-kpH7Rv;>aDb9@R6pb^-Vj3DOsNG zP9KoI5_|GDjvz;}!|fR6SnAm7IOw>Q(KthqQIydV?u@w^*D^_&g-{FkXEn=eopm-l zF}pil&E%XOIp>fDbmorEJqZGxDX%K8FPzP_`Skn>xMSDlpUwa36{o!vu;rtGV zv%6qm!SaGDu3%THtEX$R>y+y!l+HfTLVpyAi&_>fEqVkhae48y;xq6hXwYK4vgAo= zd}#$V*F*4YXwZvt))V7#c_wb*0dKB);1BXA`?LIQ{p0-W{73v3{a5^# z{a5|B{g3_6{15QsqyGQ=yZzhzEBq5NQwRJmztzw6*Q>f&wXUj-?=ueWHqh(Zl|L(A z4muvWtiNX`To+T_W88N=t;!md%|N^1Buw>HP{bd4zk9!;edV(E7^eJ7-d7bt73_+n z3cB|XsMAZm{m|QD@zS73?<*f%ZpRdT2#yrJ=PUYO`gk%uG?1isf_EoGs&GMRo6?-p z?9vvc6HB)vW4OI^dTDQ@3e>M2#tGMbFatS-#zJ#poa=^bm`hpkxnN(xh=O$IU+|xO z&hY$w;H4RhxwCRzxeasH5tR5rH@1dp)|c= z+Ep}o4^C@^452nHBDFSkKHT@|=(TK`avchEDj0Sf?St(#_O|vGn277yrrGG$eb%v{ zE3UELfb(Bq%fs|M78CIrDAZSNzwBIl2Il7)c&7Wo*WV96Dz#hfGJ7%{P7He!qzX^q zHM9xWDx?AW!39+fUAqH39WB7bD@LLq)h4oqffaqkI^Ws}Ob&wOkL9Pep*7fA4~(0g zmXVec3)lP(O7u`r?dYawrq$4)<;L&E9e6Fr8V(zJ8#HKBnXQ-WPUxz%fAEBBs%fh} zp_Z!Fs}$JGCgK^KfVR*IWaur@QP=_-(2!6Mon(&W*5KHdByo}&g1@>(P{IGeZ;s@8 zS6*L!BmN7)Nf2>Kg4UQn>Vmj>T<|kF1!wd5!rqv8`N9X{5-C@B{r8Oqa9_(-ZT zO^=5nJ_XOdbZFqIL@9LXZJ40P6P7@Ynn36TU-eYNJ~%)o!pT7)P~qArfydej@AOe( zE0USaqco+QrnaYkj~fE^zzg~&MiJbMH<1CPf|Bx<<;NzL&K}Dla8|&9(>Z>1{8PA> zHz%kP_M!uRE^~uRpH~uMAxpcF@{N@jWB)FRu}{ z@T1^){RM`F9`2vh0tTA3=YiPz17A;>NCPcPdYUXs?wNc@7z4k?U6B@Pwb5{9to!F< zRzhQT!>K=AykC49zN2rF5O^@MBz`Ex{lSmeDY+}HFHMkU!#S}SjX^JDp)#$kHE0%_ zWQS$fkk5;jtL4S=PV({cbx6}al7CdxRm31+=T(eUY(yU6hmxdBQYI^@ia(0`igUOg zDw`6Yv6=qY-YUZ|((Irv=F`Wn4cAFI2ho2MJ58?KwE8w)a!O#4H7 zTYF#oR{I#Av4u8C8>5ZZ*4LcU^wKCaL`{sQKJHar)e1FVZB?hJ8>_~^@39csjcjEU z{MkA3pYp>vcNEL(%a-A6(nxwhIzXBUeLfaMymg0r|qM zoFQm13`LTy4Rq+ktf8!Y7K8bYc^X>u3syX+5eDW%W*Or;V*ta=$YrE5)C?tv(ft{l z8CT(!uEqUnFL=kf$UHBgw*|p|7=17OJ41*QX9Zj!68c~I5ilv7NF%c7eB|pWv`4gA zv~qYp^fV=n5O*J*=wWdkk-?Lo>F^YF4Rt2E4n62+iK5o0e4<>VtV1VD4@xgePux!o z@KJ^0&heLgjl7WD6Pbh>vX3lBGUNoBLf3$K=fIxpBJmjU5ZoLEgg@9ooh96b=WH&V zTrz?lDG4o75&e-GZXf#so2bvYL+XfT?74aqm*T%Vf}L40c5@5hh2Duf$Pdy6^uJ63 zvHAk}6Gesea3drmS5t3-zEd2xnbr)X>@Kt=w6AcAKR_Q%UvvnDqjB&aD+;Lx39Apg zE_)37F8ek6A#`UOXA-uJvypyT7vB`lnkJkA_B3`|4mG|dcUQt3w2nHU1l2{(=QaA> z)yNDUM1GXdi$Btrm_FH5a`VHv&`ro|q^u5toStVww28bb!3O(xzIW z{-Ry2e{PbS4_kQVRpt=WH*In-errj4TE2! zgZ;mhIw`J{gQ>FAA@Gb|z}(z2?F@9~jPy?F8yw9XtsH9|=N->7!ZI>5#-d00R>r%` zW|`v5g3NZA12gAl9s)ZfIE#^`LPy}Dtk;--0@>5EujdGIhUMIVH^Y~^JoiJMF0WVK zy1YC2k@@MMXspb?3VO4_+0HrMx!k!A-GLDWmV)M(nP+4AdgY?HQe3UkZFd5WTVr8M zxCb^Bz66)JZ_)0em&LKgsl@|}_oInh2*>bNADu|*{^aLe90et6km$3 zt#6!fgYRlp{VF+p8dIx|R{ijc{8j!jn3~V}Uk8E%@c~u95=aYV2JnXsWCbz;sR3g^ z5?}_R1EGPSKpp=}{~7-#|3d$C|8Re$KNen(X1>hIb`?XstIL0scP_7ohL%Xr5->o9 zd0v)vDSM9zxHB~IOHiAqc>jVdy|CgESa)A4o>UyISOQFS3$k$e^te9TWy&|`Q zjrsbLcRk!EMP3S&>iOtkk(7Nd+gR2TX~f5#wdjPAy5G20x!Zz*SHJW={2U*Vp{#HZ z0243UO)C9V`l9q>>Ce&+Xkz)_MBTHr0KF}j(a&uDat7dMqY3- zlA6{+R$&87(6=!y-*dge^c;=8ni$tdbP@J)8C*dHcaZJuSCCTB$hqIy(MibPo!>G) zG4ChT=aq0ji_to`EH{wL$f?bln3D#_#%>Vn3bR!puLNa%%(|6zI_n^m=T-1Nch7Re z{T!TmGP5g^gS(I$)MvyxzB;ZtHi8yj?vOh|(_f{ZN?)4ZHQkurAnknG%CrgaZ*)nk zOf#iLrruB8gp*(kIE_M6F2aN41woNy{{`RvLc7Nv3NC0exa$O5Q#~%Ai`yBA02cQewZl~M+!pm_L?|aC$``-+` z7>U|Rpmg-a9Nr$+|2Q2skn-vxPq-Icj_y{E)nPSRmFQWaSVOIKLFTxC*JX1HAFtH| z=F#R1b3M~;G!&VPe~nv=mBwaC<#?@zmmKmqGRE3@yp3+M*I5)nih; zQLM+7G!hx1#|{g4Gh|U3Hz1eRM8L73vsNt5L&bbon{&&vL<6swp4fzGt3gv7ja#rv7&@U==^0R zolKgK*6)RIMR!e#2Tf=y`jYz#D#5us!XF7gM-4djbWBt8k*~L)FKQu@g<;sxjY{Bh z_o1s$5&r{>J2iS%hH)H7XLkpeqlozodS@L*A$=z8B`q^S1K7h~%*Ep;LoDH**Csn_dq(7g9gGVN^s+0Q8AJ1TJ9>aWm;2w39F7BT#@@q?4p9 z%+EUL&+p)WPKeEl>4$EU*XTSs9Nj;F3_ z%fKwm{W~ZFpeL=P9EX$pI;9pJxO>r8wg$<_!<0?nSyiF;I-R1S5YYd74IA56$l>pS z3buB-5KcP5o0o9`#3!k4m@I2OsDP00St1?egW z&qW#Xjn^!Z*y>3yJqgP2i(ENS;I)PwgGYg`@Ep zttqI@&*%a4Za2kqaUkP4vlB?Jlh}3OYhKA|#un1l^G*8;LCH zF~OIlI1s5ak*}YbbRJaagybx6hL0jAI70YIF6q1&)gWs-dc>@HO02 zH&IK~#h8dEsTZr4sb{H2sQal0si)w_Ytf9<7oH29+6MQqM*LR82P4O5GTMzsbeFOXe+{P$GjXrzU??;+()ZF`)TQg1 z>DapNy4(6>eTF_kcTU${XV$gRUDfmS!MfJk8Cs^crLIgr2p_Mn!GKfx6GN;a%TQq8 z>A&mW8lnw3hMtBYhHeI*A>V+dGJc+CNHK6gr$46OsNbMpqaUHSBH?@nQ}t`zJKag$ zcwGx!m9AQsqJ6I&rA^TqwIy1&mV@@EUK)?4RAW_tRCibXQms}ER#mIS%Dc)TN~Pkb z;-q4RqFfOx-~X?xX|1dyT;EOLlWr@Gm%PKNra5{OYs5jKt4MEd0=pv{InSn|5K$Nu z#r?vbLbz1?*sAoH~$BEomTUkR)5(Md3BBM5pmE=FPjNSKXTm$Ah<}S_)IRa9_yo8J=5W&4 z-`E@3o#57Q#(D@(^d8m;Fd>NOU#Y{I3f5hJXwfmq!-X+E<0N?pbT%cL4FA`!rv+sq z1ZjA2Uq$ueGN40(P#?qM{h+p(Cb2rUI{uLP_FBPxoK3MHWB8oB zle_>#=AmQ{?rR@N*GPv!jSi4V#9PFj#KmxbIf+EVE4=#8VF$GZ6Y*$lpG<_X*l+MV zs|adjh=bAPdLSk&HiA$Fwc#D{A)I3IxHG;-7ikOP5p=lBg!Yhw`S~=ZKE+Cz45GUq zy-1O0lo=3r2yT^Xut{p^(KtDrVQ3k%(41m|=lL&A9wS+M*o|>6ImEsL4tGm-CDJ-A zICnS~aDQLJu44CQFJbpVj&mOC9Y?}#jMMiuoUE(RZ@Zs&0p1)*;+w?p(4C$57fs-` z!2HYv%6(a z&EAOJ`_=4E$N_fBIhY#?b#Z#`wY-?ToV?+ANAiR7U0?to%YTm+jU2RU?03E|AQVV3 zV-*&(EEtY`|2tQrE6>%!)x$LrbJ#189*p1)4?;HZeNj?TWzqPeec%*}&?Y?#dUFFf zcRQ8LD>+p1qLd7W@3hiO?xt>?yMueR`-Ml~Y2#Vpd4wK8H`sL7%1PxV<>Sitlt1+n zyjk8s-c8<{6?H2Fm{7-6>;bE}Pvv3|=strvr}mZmM)QU2ebiiU`SwDU}xaJz}~>Y!0Et6yzLAu3Csvg4NMFS4Rj1t1YCifKuSOn zU58KlKYVRiTj!Rq)F2yI_9a2KO@))Ve)jKBwn}2w)Dufduf}}MnikfNJ~zOMuPAQ92{3LK@UhxNexc9 zpK?6qK+2w!r71Nj6#HI#mw&#DvGyJI)AoJnNvVLIT+jBxcE@%L&Wz9Y5PO1Mi@i*q z-49>WW^kZ?r!-D!m{Q07)BXWJ+m8%wH)zpDv}x9{-L@S>rf@Ub3%8?fWd`Qwezt*d zSWm!PcQ~VMU~@DBlVcAEknP~&uvisVA-o)7Tx@Ftw0l}rNi1`W-FR;ftZ4K5C;EJ=Dnnkv~X$pcO6A$G0P zFrU!CC%7rPExL|5xl;HC{*Ccyir6W9jAvbiXtC%#yrwfnT9B&D;E1(K{vSivnXFHG z4Qf|HQeEWi-v~Af+=8a?a~$Qbg@dt>FXo40^EwFG!rH{0@GS=5iSC&Y%e~EA&#jLC z4)UH1O=2rK1~iB%(RpBIu4MdSl!23$N}C$DiFycR)m-vS(nKOZc18?6>UQM5h!x>8 z!P?;lLOQ?_mW&0Oo3YG^9L3C(Di)PfY*VZbT~SD`gyYUK}e< zkG#+WP-Az(?f91ZmHLpnpSlnU_TkW*xHfv2CJdHVT-Y;vCuf& zxXgIMRM(VZ>T8;2nqiuSoz($cb4@KiQjU;1n)&aL6>+-8_)j5ex_0%M}lV)Prk89N!PjUHo>G1r)a`Md;qjH$-a zU~48BNk*R0U=$c$8s=fP9&b2cxQ@@&-k>lf7=#9f{+WKUz8{qEg?JO{Ht9-q7M)X< zrz2|*YI|UkF4bmg!!;W;4)rJX7W~~9kV@RH>WWGF3D_QHDE7S-Wa#=+Gl%uSp6y64~l~q^X#n#n?!l2IIa3PS1R# zl*8f6I1NwpUcxDOIeLS7{{wrc_F(iB#V&$xZDDLIxR*bWnrK9D#hyg=xf`)RX%wdB z_4w#Z;d~p5^ZPe^#?8>g+fxr?dUnUnk9$aqN7MOIY^XH!iS$?aGfrSUVdjBXm%>`Y zddlXqhaefz0eT1rbMjwyI8NO~obK$MEDy6T!-l_=txPtv1M@lSC+86NZsHnvx5D_* z`~<#--v@8?(VjFOZueDatK5M+@j5{}w2rn(s!g6EoGF?s&K55ff0xXcP6osLqdZ*RX^=g;{$7Vd#G)y6#zVo-KwyOZOfpjb+YxfZL>YWuK9}X2^x#n zAQxDZvOeW!YGvx_w1l+QY0J{y{o`bWIy_*4{m3ZE*q#}dS&_Le^DjslQ?o8-hh=AG z56j+_{WvEGbY^ePXv{x{a?a#j&3TaX77Z95b6)1W$qj+4c}reW-lF^l`5F1W@|Wh{ zz|36bT;M$AeCqsLKr2Wu=#GYs;{^{3zPReULcwn~pgC}<>lU~UlER|G0fp-eZx=Nv z;vp9}uxLlo+hTTcQSq4KBgMawd@F<6ytCw8DFdFI^55Q@b z`bv=xobNm7`&*>~MPnvh%fB%>_waA<-w%WbY=Q29#eqYCn}Ltj;nnmH~U9nSZ-KtLj2kj_-gkzOpyi&k5eC zUPAeX@>b==<)gjzy-U$#cm!N&KCT3);pWQn%Knv0FxCI`aee8&B43_Q?~C_^SN^Vi z3YC0CO2CDp@q z|8n1U-*SKVFg+$r)jAK$Q_p?Zy$|f@x$ap=91ev}oe$p&(_OFhGLn}LG#GBi6rEK3 zxOjSTYSAaOc~=&(3g4r5a4X2rBMJkBn!-@mQ@EbzxZ1cBu6hO63N{x^C}@pc0@3*r z{*8dMY5w|re||jX=M6}QN^*bYp2{5u^2XDg={cn!Zv4$Yl|30EzAak--^P=yJy~Q#6*9zuUUhxvI%>L^@eQ-`OvPt}3NF(t(eW=uo$srbNG?2gC7JNpWI zAA5Vu)C0ho84ZW@DEnCZ6#IPpI?TzJ>`&}p@%~XMEF=)EDd}j?jK>^(17zqi@OCKR z;&^Pk04MZGcsUMYf?kVP-BR0f+X{R;6WM~+whZJH|5&eB*MSz<%^Cm`+HO^0eonwH zD8lmF^3-zPvKdZ}Z1jBZG50Z>|7p-QCZ6$~aX+404#RJBsqr4}HyG;pAOIgugBfxa4HR>dM1n(tK1kSW1VK<9ck-8G zj@I#RAz4^~wy}nop_Bd*r~+_vEaYncDMJOEE1W#^tW04GSR+9|3c~)h3B4U{ZromE z)}5G!r@?`oK`_TsqL)Y2i&zl;2u@{7m=w&6mBBwl_eDsf+QqPA_YgOdA5rJvX*85l zj^_-K^pmuQWJSAP1(Ad%uM|8lx`M#*B&IleO*AL!LDZqB&XGGKri9BwkB77jCInq< zy0XcsCR3aCY_=uzW27=#6|Ib%7JewaC^9G}oj4WxPc7*snhk_ddRq}4goUxIV(y^( z>sV|Zw0|{=Hb?VfG6|!}8ft&E3}n#~68a@NEX;^(99WN(5S8`pij z_Gr-ECh(xopanJ`?{SLSAdC~1qrK7$x||N=g-&=A3+qEsynyW3Trf0dqt|3l^4jDn z$kNXQ)#ZBfqvWT^1~!G#EC!J-16_Cj+jLN%IWNVo!zAt~9xGl9#rX?zfL$bOz)$;# z3}91C%?7mcO+`oFUg>4&PnkfL1EskT`MnXceX^JGI`U?Cy1M1FA3I{d$CPgqnm;6>AD6whOS0;NiWiO)-Tmx$IRQs za1zt9z-TsBfD8ZFq&5vQ?KQnJ$Dq5kxp{{9ocWg})KVYbuXpfes=$^fn$Lpi<2Pr5 zin-B5GWLWfeZX+Y@CVcIbyK{FX*_9k8H0?G#yn$pW0v8X!D|p1nj0SA_m5y67n+LT z9jitkYKW&^DE#4{V;7e1x#j>-?YHA*3`=Q)3_NY{8y$%XiuGi zlm1BKPU9Y97h^-iX2TrATthDd4K1pEeId^MReGiF1G=EbL;u!jKf^~|t)*!$X@=ue z5v)G1?yn{w=a{Da22x&)GFkCOaU4u)r=kh|71n_`T_C$E6G}&c{c}n(8>vpI_%C(| zd&E=39x)NjlqsT8Q8HX&Vo|0j6}iLF`0AOGoP$%?ucV7eE{_5UuQ}RTEI6sxLFRA} zHW?!H&?Vt6bAaChYV=*+MqV$T3jN?G&%-pXCSrHLj;%rXQeh zhAKS|inNo?18Mp_?G$Yi%}Ha>8h|f-C2mDrH@J&sadH1zSC-(6-ID5}YN!NwIxZpC zI}UCRIjEj@$=k7|sz5tv9qiV|lZtVY{{QAK2c>T?3ywtcwfgN>;o zD3K^$1XcP3;XJV(@`i_rPmx?U6W*bLa4BgVxf9%H7K)hC7~8N9lnDH|ALS&KOC3Rd zfClpxnDSr2e=?kQfcBQoMQZRKP6#!@fPu&=n~k)e=cAN4A@&9hCj!QZlZMb zRC?e^{3{rb-PBxcq;3j#h^FEseOoe0I#{+-eqXUiS*oI_U7Gj08hx&Qq<)iOq{(YJ zY`bB9X@6z+gA?!!{5d;PP;9t0`+=pAl#&Go!LXF;skYP=sbA7$X`Rsn7?NI?J~jP{ zgMr-Nm5gL`yPeAvWKPMdn^g^d*yn69+^M_4WlqiMle0GGQ7$L9Meh9EW4RA=f9A#J z3G$NjV$s8VFn2}nlH47+kB|mj09M&SrwU%?`OZzwbIz{?lmZ_38IjPORUkL7EO_9G zc3IH)+{4uu#NctRU2p-E7H%r40~T>j(UhXiMOTXJ7VC=p7XOC^6b={>LrQj+yf0W&6rLlqZ$9D_@K3U6j}0ZRMTq zJrBj1kCb2y)Zfh&H!AC4N-f0{y2vL(La;YT%_n`Is+d&;RinVo_~Tdj+xVCHp9T`3 zH;)Qz4AfRPtWK^@uP(0kS9h)+UOl~fcJ-9%5!L;xdsTO;Zc$xQomp+cOr2a!ua2m0 z82A}@7q}ld9+(&K_~gmG8UhvsI3Pvdl$$cMT@`QSgw+&}I0s(o{LHau?cH zepddf{0J>P82?`$UoYPz-)i3p-&5Z&&^x~R?)eV-=7Qgm<|9|Ws@z>U0=^S^#eFcU zb>92liD($7fY7nJyi2(iOzHDr-|^t%*yma2S?C$*Y3(WSE@ z0r$pEkn2o2pK~_m^vp@iiOjy1Js&RlDzv7gX7kWHcn34|tgOyijx1K@@63zf9Tvd- zd==!nF<@^9K;Agum;&{goBk5L-AmHPr?)|K%B!?>Y5m}PW?*h!3C+1Jd>d_3`=_o> zeU-*X?lms;NNP#S*OaX(lT*f}ECfsDb;@6`WY(qlLD~pS2}e8O|N04kf%yCb({fk} z2~)D_-)qJX3QcKBG5jBGQo5nbuqMTW8JuqaWYVMv>!58-9e7Euc3*Z*}yycHQlUa-5m zicX7Lqsibfa!b$?!$rLLSU55aaF`!M_DhhnC-%caOIipzWK9BNHwrH+1({<7cLY}wKa2AX-b5`Z`wrG{W-YUl@fJLecC^WHpW}K^Pf+%dN07!6uM)n+ z_KO}8xj*7&#O{be;T=K`ge(uWhL4Y`im8rO#m*oMC21*5sgcx3$^i0D@@{ZAce($H^^On3+g{R9GUhtgN_Iz1T`&u_avpKM!?U4?pUkCmcccC7RpMk`J~+r*1v0@* zbYHhgx|%ElRpAy~tdqfwxsI=kcbI`3U@FU@DLxj~;uN+YG_$F2(r?1KZzIltOYr?w zyyt1*0i?;kpe;-<$^ffjfM_%PLrig{c%7sH9L?SFH8~5XyT{UKsTwK3YJ6pnldh1S zKn^e-GjnTMe^Ax-$sU4M{0%9;PNXyeov zE5xbyCe&mHT*QO)qxEz3hx9M>Z}mI$g}P6=)4ET3pZ>L>qv5KNXv~1Z{LthvoyDw7 zF@451>Wt}=S!ixyUSNJ^$+Y~3oO2J{Nmf{=fS;9am0*u$u%?1EufwIa##ok{pP4?R zktyCV(7-lu4YR-wNHg8Rx%`}IxT(zK04wtWGRi%S%S_EoHJFE|nmS@~o($(_JM%vC zY4dXPc=KKm@uwnLonRhoPB9O)gu`cMG#|qB-rl?m_o{8?LNmpzH1{x%L3X2_>9IM= zoDBrgJ(C+0p<3frDB+`w*>ITz8$KH@8dhMUHbSB9t0(Jfbz5{pbRwh{%d~851I=Yk zA5DmQBNS;Dl7|OXhZDy`kLIKG<`kyr>I4b*HyTn$a!#snt{V8M)Z!%9{ zcAn2%z+8has|{e`Env=Oj$_s^t>_5I|B{J-Dm=MoZvq@a)LMyGRfY$5d>A{>+2|O$LkOF|_BY;BR^f*@U!z?D!dk3&aRw z0lK;`BBfkL+J$?_9#B7aP(GtO@iZp%3UHn~fJ%Lp@|Vh{7T^x_7Tmo-aT}ln#M1m| zX#5UGcT4&f29Yrg&W%*&VsJKQvpMXU;B449^W#JCw|Jggk4wNEgMwbKE1;~_#FyhL zLEE}Dz7Ln2Kt$Ps7jts0AWbk0&cC;U_kt_Pqj$xLC=uk9AN*J7P@)Rj39iG}wH@T= zRYJE&DHcmqQirUie2U^U%qXL^DSDf+#H_H)w)V3%Mq=r#ors(W=KkVV3L0x9R$J`Z-%pIXE9?Kh%HxS+0x53az z&tL3JcAhD4fi|}eZw z{$1oQT2=I+SXtbwcz5x4P>Nf@qj9A)0vx(grF%JNeZF`z1|D#~{U?JOgpm@_LM!rM_@Nkqp>p7*tP9&(4m@^9t)%SXer z!YI2{HmS^6mIx1cW6uxIOV2&eZOjKh?b1_Bt^tAHidW4>E(CJ=SCV<8hE-0-Uq^elJ@0Scj=T=&?0%KICAVL0YHo1O1t`$o9408Mr1Rakw;PACiZU@LyiW`)tC`=i$BP zf#^6Ur7d*m5c_Q;5=TLW*4kri-_gqQ5=}y1Y#-qSxer&z9S}N>p?RniNE{^V7wa|n zsTLux*wb2NO|f#VO)RgVJg>*>9I%)yWb+5}QS(%^s>GXKKtJkh$}usF?=e5mG4{qT zm2Nl#4Z5CwIi9#bbYqaXpP(gxGu2q#M)eE{q$R53stc-FDv|OqJcTvN5@n=fviz64 zqwJ@w50tjXU}fwS4+d?Zk2p*8Ni+?6PXqScrJ`Y?>*8W~HP%RTq-Q|l%7h;0l%>n` z(B>kfAEei$M?vfwjoyXF@Qaqgvr#D-COIY*z}Z2O<;fJ#rh7=KP=>ln2=Hie^MpqUwiV2%Uuq zIzQ}IL}p}3)bN-h!Z=bnW=kUJ37J41g+g3E~AK|XC5TOFGS z1_wE6QpBC`UEw)lA3~1=4{Cb3@x{i;jgK|?8pLWw4JIQ+NQF0~UsO!w$OuQcDV!hv zJ>pozqVNG>Ey89-bc<%hro$gG3BKavq_Lz;Bm;J-51xHN1sCX(vG1qcrfi1Jp$b^Y$(<5F>!}M?NPy3A&Jvbf5Gozp{l95 zR4Wwe6_jq2)@WQvfS=<4`8E>z@#OpDGSX=@2NH<)@F#171dxoVL5?s7naLEQ2x-EJ zvG1U`?}|AbJD6~VMt&d)6h?1zBo2uZEw@zaeNYID_P9*QC42g~>;7w(2T82rsK0Ou4COBzYpP zgPyuK@B!5#g?dMH4vlp?;io?(+K1EM6wz$V$tU0hIwyJ{4uQ_>##Jb80q)rq@R$(PD^ft68<4idV; zswf6!xijb(d%?tbfn33NWfZc1os`>DjZ`kx5Y;eMYs_{7Raey#bsM;s=c*sV)q4}U zy#Ctd+H=}3x=>tAbWu7Dyb+V(V7Q?t=mYvy`m1mhH!>u`L);#ItWAa|#t0+H@Exw@ z?S>0bg&oEr#$!;4XPaZq!!ReOSf=A-eZn%=;an#Ubbtkx;UIHPw3J&Km^Yexn~TjNb6wMIeB3pr zZg7^|F|IInH6|E#8H(Wc;2G%p^LjJLoRzv<5I`DfXKF>7w@4mN)yUMlK=5FweyR?s z+F+7CsGNb*iy1wrJrxbH8L;7=wnNrj`VIG;#vr9^#Aa+9{5dh=4`68C7OxX~v2!~k znlGvr1>@|cPJRiF=BQ*JSlrxXQgU$8cesC!A@k81{f4ImeFb{lVa|ae-3z@=IeZB} z2pg{r@Qr2jqTuS-3_^Z2=IEy&b&N=8k)T4m(;n^|?hNiM?r^X*Ra_1xzHktvCu7R1 z%el;11$uNUCkBL|GwfyTZfpbVH@c^Lvg}A1l37GnIP(|u=+n@j4?&ea!@R(}#5~75 zjAoYQP^Skm%g_`4opG0Ohw+s09N(U09A%tfoI?6=CZjn+47$fjc%%b#1-&Wl4o=m5 zX*sw9d;>>%9NZGpI8t0A>Pz^dXHh#*v*C&UK-ozdL@A^Q!M8gKLbMk8^99mEl8+Px z3T7WPpd=GxkZgWQxJS4R2iJMfE62dK5kOA3JE0$F@$(6_(59DQcJ7P3@+h35@1f6S z5p_9KWVOo|0mP6yn4WWKV`!)7p=g$wPk+a7FxJ2y zJ_zYzFY6*Zhkc%t$2lC&iEkUfF#a5<&U$WJ?m%uAZV7q?yK@gFG)dqj#3cw4CL{)U zz4(LhueB1}D;rWfr{L@AosHTy zrM*BVa3Q9S?+%h97yjlu88I2wjIJ5G;nk?hT%Y*|d99d_216vVlO&NNp?DH=dR24jP6}vXOeiic24J|B;FH{t^DBN5WT-2iIa52Al zW=UvCpOV^A_WyBo7SK(l3lK)@?vkYOq-oP8jk{aj-QqYb?i6=-cXxMpcXuo94hy__ zdwK%N;^{(oB zHNK!~*lUKvdA)*mprv*|?TXr?wU6rj>ST3o;qUIQyIJ=QWIA=dw|;W{zWT@5*iN$R z?5*vS97^n+^oKHi;EV%xuCsHF^Ab9M<*q5N8B8$pViZzxVj$Yv9ZF0PEQk)v6 z!N~^^?+Q}cB@TxDFIHLR+3W1o`WN*p>r3ihA(KKxpKvBfcRZx4FV!rlanum1Z&$BD zQ?YM#hiVTp(LKQL8&us9s+y1X;uj>OPvQw=OVxs^fmQaZ9OOLoRs5>p%3GC-E4`J} zii`03lgpojcQ*v50Hm@PU~_Z?-|kdto6;5~GfTK2aSSXjE!G!{i>bv;i>~5yVIb1a zTIlBwg}V#;6p9Pp7py99gI{+me^S0B?-%rQmppl1i`-MWqu@UW?TLk)ZROXY+&6(XZd7y7>wl&ytZHd-5)Rn&2kVtvdnsOIyiXWK|sHauj^3L^Guyh znWkh@pz%2p)Kk#JEir0Aw<8(D@y}~+Y-VfRI)_fJi_$*UuF-bECSe#T97i+@H9a*}O}P4wdK1oX2jJv25Gh8n z^0d;U_=9s$5*7*bWQ|~PJOvMyC5^}Wfl^A9+>s1I9L`LD1jGL+R<2T2p5Wl94sJA z7RWO`Ve_C5@)~!L@hIb~;P8#Y%4x@p+emZ7g@q0iui-oee}CgA?o z4*6JOY5=Z`eZh+k2P^tIrz7%;vy;0g7qS0kcVqozZD&nk6*KRH0~*d~WK4$x6pEFq zchvbfGYun?k|rfpk$#av2`A9KQ=&x^6E`~MZuITwP0@>^)G_>h`z}y%fdq2(@cQM{SJ_%dg zt>VYUH^f`w`SA-9wi86exuj_z*;b+7v>KahBj7-a{Lc@udz^a0hGA~$YgBd?Z;WiBYrqP3-7fapv}3^1U!Lr5>f^g z(aAP5u?K`oaEG$1Uu7c3Dx6%vIOFy!V4ul%=9ZNn~Kf9&%eL^k7@=({*j zOc6`PW#R!?0y&LEkVf%0Nt{HBZ1Z5rI>~!D%^l&7dZks;&glGIlfIGul}W&dEs{Tn z{&OkXD+Vc6D9$OKEB+{nXzcaGe&}K4M^!3v65Wu;=&4$udZV_&_r0PC1*fu~W}IfI zW|(G!=C3we+g&?II~%&$t$V4@)eqG#fNtHb-+}AJbp2%g3|uvqfK|Use?-4ezX8{g zS6FR00mp2vsi~WZpLwL{%c!_xHE%+qXwhAmc4Qq5Ps zP;OWLRJm3A)XkA`ex=#1-J+We77$4jsw|L8|J zuVn3MZ2{6CtKoK&)TiMI%u_E^w^qGSRVe=`pDFJmH_cOQR@5Qa;v?TAH_4tNAKpnu z1kai!Igj7}bs%>3ktE}sO#wgJ2J%URFchq94#`@BI&>A$LQ^8zi1=yeE$NC!|Bv6)FP@DNofndFQ?{HHB=#0 zO10vzBv|HLPw9iD@EMc?lyk^%)A7Y`;hnp@jc^(pz$n1 zbFc;2b#t(x@_*iY*Vy*hQprOH!Up|3GIlZemGkiJl{k6aNj%j@By0mE?-ij9;W)7+ zkwp{{(}@XqR)0V^iv;!&eES$QO94{Z{}4xG5%v?Z8@>YBk2G+9?tr13YD^e zN~g}DHOCUx4J>irVA!CZ8<`|%=Dy5Dpuj(81;8CKvpm=U*unb3E@gj7zRr1=avSZP z58N0o8-IdYBy{eljs?*v1<&N+sZH_40LAbK*1Gvz3)c;9_~SHw+KBWpULb$Hu$lOT zY>`r~_G-Dh>H3veK3jrk&_jlIMvZZ*@dnPG`KEtNN6bWXNAm$o3{o0rtZ~)~>n!V2 z8z0QCxuDK{%9Lad&pey?H;W10+^nqk*_r5VeS~(|noG|em-{-;m^UZyTYf%t^Sy$^ zf+}#C8w;t0B~Zyb3*Tc0Fdwe+{G!7}_lw>a{V9%yUM__y78M5+H!0>74}q?_Q@p2m zDz;9>6?ZKTDzX=DFRX*+{#`T$8z`>gRmI;*Y*@BiQ?j{a8`us%OSPpl%9@n*E%z&* zUBRkYSlO&H8=2hgXav%+QN6J0c6E5Qxw%DAIaxrRO?VgXJ;QS>t45 ztz`ogf3bswWy4MO9(IF0xc*dq4+J7l)eWlCp-*@M`D%A9ujW0TC_2~V)QFJ;Z&v*b zTKaMIr|O^8Z~t2_>{*>%O|NcR)mU`~36HVZWpqMA*CQ=0uL`ZaSvkGZR`CJdOkMex z@@>eSw=b`UhE6McQ#P$kR(cog?U<5zC3Ku1v@4bs$3s28#*@+>tPl1BeNa%;0-5(w zSRiZx0`%YleL<7_y;x6S=UvGglBa|Jd@FZ8HoIFOQ$HXlKZlY1FW4JbvtQ@LMuBp7(9#=TbuN~^>p?R&TG$pp^K+$^B28*2|etiFod_iX+U05y570QKroMkr%C!jsmTUZW)-4kp=RKSfs z2*sSt{|P7hG1PMm&c$bBT*!EWl*l$LicQ6~N^g)l()pkH%lJ0lXWlN}TsYpD*gBqq zQ+7&v7*ZUJ^gK{q2Z3X-bt?P? zW6E<-?&^?=&P?&+%tOx27fZdvk^|89sbFhxKby$>#hl3WFx8B+$R(Q4<*`$rP!lK_ zXyp)-wv&FtoAE(HxLIOFf;#ReeAV2TG11bV5c$KhZ12Dzdkek9m%5!gf#Mi0O$coPuoz6HGtxaU90 zzr_E5|9yXrU$O5+-_5?{mff0HH5=U`#kYetC{iN7H5X?S4F^@P)jR}%xUN3t%lGSQOIA^vw_5^*hAL+OE)@^W$zmIi*H9XXE7 zB2)0cJCe2FUA;nIj{vIdv80(vBcW#Xq&KAbq%K$hW)LqE`w`7>q7wq!gw+PaOasa4iz}i_)7T6~7((C2e?zu6}Mo;P2KKZ<`zLM0j4 z)f)-6&2uyW`$+dl?@I4UuRt%qmIY%s#45AP`pKrt*2zxEn;?B~Ls6#Kr);8RfdXeo zcW$ookn)R4sOq9xsk*5SMb>z%dX0LydZv1%`UO%HvovQkui!CPXcuX(Yky$%w2STm z&ZGLH9We!(`I&)&1*SHJ5uj*Zz=_r$V+1_146x_rctRKBsl1Q=ygoyB1<&5+^iA}w z4Mf8a<80$9BiAs|V1cS;>9yLi>W!*#swL{3+Hjm}{i{t^A5;Y>dZDc-L|1VH^ywwp zVfiq{cU5m>p?9eZRT&DNw4XRe)Lqh9p;XV+^i=hdx07CxeOI;Ae9`H(FE!saIqGL> zlgg$XuY9GRt!rxF8poT`(IlxrD|<8g)CTmeI~h~q8CVP=c;wv-Ir`rq56#yP(yQ=q z{EtoypWq2j+2oqfXgrS4NYoGU`!Y%0Tb-fW3D*5B(D-_RrguTn8BFS%^6s)9_}ylJ zSp86XSUN#!!C6~Z@h8v#o1@1m#h+=h;9o4HE)nz)h%?@1Yy}6uEF&COw=R4!dKt5L zEHt8>>1pZBaTc~HZ3s@iyr2^Ovjdx|tA zBBcrE8D}G>4JVxwn*0;w&uQ?ZL)i~;_B9aXGzvSE?E~)JN!DyuXI2g}($A14>&h%( zN}&RqFdkv&bvI)@61}S#n?b>w$7q8@?^$|ZI*;}Ou5=r$u|(0DK|zMnVrc=?*I*l8 z0>{IL`jdJT9Yim+KXnWB7JhUg)k9SvN8J+1w8fORpm>CWhPRyT#WVEFq>V@vtI;jI zNLmD)T24}sNW`D$7LEn=q6Og~VGx?e;rPtYN3%E)oSwbdDC~>`$IY@f%5k#^ZAA4aTDjd6O(cJLL?8 zM_Er5Q`ghtX@h7#=soDq83rsVJ!Hy|$J@=k&iurpvFup4*~@yuP6i$Rb#fB6B59kQb(d0AI9ywW5zL9gguKeK*k{T+KtWF$)L|JX+%PkhS}3fH+3{_ZHp zdglP=0_PquoWHrqAkpvUeo>^Q}Of33|R_M8+O~~y0 zQM8$fX(WUW*!%?_4P4zrOx^bH6q4_v=e>NhuB(rL*M647(wtTZjTj|z# zYZJ>O%TdcxOM|7#qOj0F?g+7j;oAsHbMq_kJ5HO=ny(=LaRq<12g&NmP}UxE9%zr@ zaHvn3R+&a(x!#O+K^)wlr^ds^<)C?tHul73A>SAYHpd6B@irKSfWo0SaFBw2hZOWm zWT0E=^O0F(>3wnTxfv&*19k0n*}5d$>&|M|p#@Zh6vqe6AI`}j_WOV6s={D(bXlN5U|1pvaIA!+3-q>aFZR9lzM8`!I ztU62JFWMmxARNBC;q2YAwr8E*u)gx!QEM9oB6QCCrKks03g zM&U%9at}lwK27ifzdm0Omhl3KjYe#?{KQUL5I9rsu&1&e{DRNObC5IsW}MBKj#aU6 z{(k;IG!EVT9DYmO$pko+Kb5{UeL47e$I=_|wH1v*N_tZe?L*;7)6z-UE!>&b7DQJT z7}TNM6JRmWQ$M8c!oAHGgtJv(mUT@@;vD7-=QueWkc(6xPt9j{VN+SFSxV*)=1FEZ z+_y65^XPnN=m@Hs(g#WCp=6(=64FTGVPYWKgp(6)W3z-ByDa)ZWMjmn@cm&gL+6Bq z1jh$=3;7&2EIcC25vmH=8QMNv6geTLd7L2rXhLoLi?}_p?wH)@iP8LMOLSw*UfgXc zQGVeQ@N4seeFD?{qkQ-HKJZTpFa~t+zvbV>e^Wq9|ABttK8Jkv_`di1>{scN()?R< zXN$!?9erE*x_mQ{^QiS};WMq}P@hwQL1Cw&8)BEDrL#V6f5KV9M&fwfmu8bRNj2np z@*}LnJSIOSe*_WhHNJle2G(WlogD>H_9A%?PIdc%hLuZ>#Zp59vdC#k&C%9rPa+a; z6BiQQL@MDSVFjTlAs4;;|10KGiI+fTts*QTEQ2$BF>xq1%$_H{ORPnnV^F*|fu5)) zgy7^?N9aM+kp4-UPi~KY(g*1Gw^%Hmg{P90IDy?x?M!3QcFiFg(k6lkqjJjvN*I zgttrwXD(96#PeT2;e52t*5kDq3ae2RgAQPWXtn4HXmc{0$}AC|62Fp!OO#;Djh3vD zT$VNiTdrLC51vEkOAlZJDq{5ox;l8)724_A*V>ob!CIO&Qx~ASsr#mDp(#;qRGw2lRc%mj(sY3X?XNnk zw95aLOR#t1mM)Xrm8_O}Ws7hHX_R)A1c}FrpGtJ%U*dM+HPVg>rpl^Xr0k_|D1NGE z=o5`sOiPVzb<5R$@?1%^I97a5mah1wF3^&7w+$CfYp_DR0N#ZO9jk|CifJ#}A+13E z++=)aJZP*1=kt(Zv_Y-E4+4>0ufP)PVx3O=3B=C%Andx4u8xA5&R5?+`;eu22(E_^ zj`U=uRq;a6UC~573*_o1vK_K+GNr7gbg#4m+=MogrsBC`zUY9c94*6>xJKy&pYh!E zkARVJ2)z0q{B8VRd=@z0^*kEbzt7XxqU({6_61Ms$B?(LP18YPNz-DX#O83@;*>uo z^-k*2)V`?>Bm<&T9)JZj1*F6rkm+x6R$?K%jKfO)l6*9IW^y|$g2#h;_l$jty_nsD zoyX=vNnd77V^y)(%%9A2SkD{|CGBKdm{cg~SB!gjuHV3z$QZ!r#c0dW(|?0&+<`7d z+wcZ$H$FRiXxnLXX#Ht@X$xqVuyyzd%hgw)D-&^=c9P}+ZTdO&DqQQ4APjwlA3XwY zG!<8cIiRgaV6$*`k~0bPbtE|&NDeTT*=Q9mMIWLW2tIuXvczwR+Y@^viW1%>tV`&N z{IeSV^I<$6`^0UGv&RL-t_9KE2kq#|*jJUtWWSuVeP?4_aNMkT zYy4Lv+P;9Uv7QhHKVmQ8Unpli(L&S^#n8+WWJjpPFk(27ORV~Dnfy5M9Vr=CqV>p` zag+KaT_&gE>T!=^qa46e$|9N%tsCt-eIWfa!@?NFxXDy8=P@6%{8_13$X&yF%5KhP zu^W;@lgELpkp~r>$VpAP!|k3{k>=pOM`I=nOFAK``&0h`Yo#IeG&d4IGLHKljx#lV zF(|ARyc2v^Myh};%op93oR>!_?dsN=Upj*BBa%=m!yeG+yvB7n#qpS~fkw9u4Cgw_ zYRhM&oO@fhTHn}`L2+J&yhc=JAy!V_Wl6F+VAbtzHV+GLPjgby5j>X5&s~+5gk9wy z`E9UlqAi#Kq#zE=_rdRZ~la#s+|mX$myRhP~! zy#ZHpf9ZOh?td$NUpla4XYupmn&LEY&3?m`6c_nGJ@+m;Q1qbaOL2Pf{1P(uQ072u zpDWEO3rFJldd1924Hoz^s`^x|uXqh*n^l`{johKG^t$ZU3p8TVF2vcm6$>kHc!W)%D>I8-nYo9v;;a7@k@<(>U6!9mSS%nJm)Wk#+r z=Xg$ij(_$+kT+b}^qgdwtj<}~%u|_NGAYo{(`@x%KZk++ zyx%$)&xb86=fU2vK|jxdwiTLA7{BB0A~(2=)6G?u7uNMy{xMsdT79ttRBSE7%VF(f z9bxTf_5An0a;*|;F!nT8S_WF2mNI;HIzvzQM$SWv4WS4SJ^s(adt$y1J$(p`#A#Tq zZ;O;Q#q_V~9^CHb;CR%Ubhx*LqkVV-E1t`ciEe`qLb@>qy~0a|RY)lIL5r~1z=a2W z3n!p6kl)bj3Fr{M!QJktZmVvoZj`PTO`UJr+i2Dw)~?3gFdui7vtU7U&?4NUo~7=n z=HcElN|lcLqDS!y=}Nx*qP&AV1b3FMGPNvH`VKDHF>s+KN-L!Cl4p{W;H-9%1d2z9 z{jhf?6uVRHbR>M)5(F^KSjok&w0q%ht5w=_(GGCQ`wE|W$b+HPYuV`_jBd| ztcUeww4{%v{iJ14r{jLp9vQ;wq{B%`q;|wLgf|39Vpn7&;$!E>bO%dgKNe6{M9z$O z7a0?IASx`fJbXpyzL0Jq;*bwv6%o;qJEIO@yYNUvet1Y&RTw3V9##={BYb4|r|_X+ zw2-`@>GG7P!v!a&@!NVU@ZP>jsGA2?fzH&Px-U`IKE?j zulgPJpX9&XKgI8)-$#Fse^0-ozFU2zeqjOHU{dIdh=Qoeu`%%<2zyCalP)DaOj?q( zi=0boMya7Fpq+11*p$(f)i~Qtr%)&blwr7+R)Q)U1ZVm#c`@0AbmZTp{YZ7tLA%;W zYDbDEo`n*35J`j+;B#~*j7Gaq4-LH~@dvVtp9!CkV(dUzg8N=ubdL(L;xdiUg?KZG zOKu59?L_h|ijlGi3lXc}gV#|SC^x9t)Lr09<=}3=3U~X*xYy4Hxz&N?gIn}8_-iMT z+Zf7t!L%_~;7;gfZDhT}y1^p&M~69P&c2k~)X3DI+_P!bY0I#!!%APs6Y&o61^lu6 z8#vRjWOT@woUuRS6Be9lGZ~pZ;(F6 z0=7do4qGGFWPib2mdQ18JxFV1;H~A#4RV{@F7FS1#xnU~5H#Wy=?aM=8~Y*O(FVMt zBCDK8Rz1LanV&ilUEeb}HQK8Arlo3gwf(g#v`4Tp`a?&x zfN7BNvtheF37v@~EmPYTd1JMIo zHMZ6bRH>y)MPY(TLbI4J`67KP8?WH0yXiNW4VD*{b!cgO&9`yp?K00qqr_p_4SHxd zGY89TMpFP-Mg!0j*^YfFzW$kh4m^YkeGPnsB;7e(M_mLqq@3DN%^rs?QPWK^__;vmFQ*6#X5M`^x|}BdKCH?1JbD6n^>zH#;pLE{vB9A zJHSh9NXo0Nm2490 z9qR;Z4yzSQ$zrfbtWf4t=5pxhN@gxoz--1i2N!xX9O*HP97Z@u(&y=G@o6cc=g@2E zZRs_1EnP;hq)(*pr0=J1qwk`hpW!||Z*6vqa~oR1k1BZ__#jeXS^A~ba0nAuR#AHb`NhKimLXOHii&<49G zAqjsHBfyq^fMm!(Ts;mGo)epb{PCP{9sk5npaLZj8ALg;24whcAlJo{s= zu2w|y)#SgNuc@QKj5?Dxm-`yjOCmQ7`;-3oQ`?++l^chr^6B8QdU4Kq1U;NazBi*u z#$mxek&k$@^oSxzrPTOp^K_|LLhc=Z*3__3ZXc@w7pvqlx=~yPKQf+U_cJ{(+mk z*f|5+gtuH==;H&fqu_INa#gr$TppJLYT4$hf=)h&&Z4i|&-K&w%yq|g*Y(Qv9elid zuGOI7k(}3|x2v5L$5Y2j$3MtShoNP-+dd8dz14P&JrV2R2cV(Lk>A)dpbmdlP8bU2AIL<)_tzRKKV`fE2kG%)i*G?^Sn@hMrT^8-Egps^ls^ z@a@)t5-qG~1dBsn{<3^wc~yB**{8BwWv9zFmJKMAmOd#RTPiHMRWcZVt{;onqf1CF zYAo7~&Gj}#>0ofIDeO>~TJWS`K|y=$vorJG=P$|6%KMbJFt0j~1rPco2#E8rqw)|d zDtzn?ZpRZ{L-r6T>8{yEsOKA52eWoVKabARXWq~3kx8=MvaLk^x!R_%#abJ|->9?_ zET1f=uqmI0_TYMGXt(L6iEP|%iZ|z2E?8gM#Bi$HTBX)ptb7l~6J=lP4C_v0Kh~ms zI1D;^h_$`dVkIF5a>KG6J%MR>t;Q#49=2HOElNwg`8Tp5Z_RJakKjUYL>F-ylG9$Z z#vE_@V`_wgo{hv*F;IaLNfkoOy#V$XQ@cxS+v?t(oyEziJ{@uJgTreDTB!j1IZpitY8$&N{T zhR$IU=p4hjMaXjOz_NIGswFiM{3&Nj0_Q8|1{y!+l9qCBFQksTIeB{zjMgm?_JR8pcbVO#E=;!=VDjJ48|_^VUV3y zMct1)AMrI}L_~J@JJ6eNh7ApqhmH-=1uY6}6Q~a|2fqrf4~q!>6FM~1KV(iwc(6Vw zFK}?6ANCB#2IL2b@oE#G_J0x3G%!5qQAj(i9S#ag44fI15Hvj~EMS-a{eXs`=%BlS zqy0AewDB42cRElQxYGZz?_yt;e{nE3>~-Y0=+3e86UGx)B;5k%X$aX#J_x^Q4#h!< zq6jF*sHN17)L6Js8ST9RNgYq+R z2DTOs5#Hji)*n3SmWdUKT?rB}@VXJ(fPK{!_qkHi6r2HXCH+nsO6HL-P%M;D=rir6 z+@S{H{J0#;xg)8!Xf?Rsxv&bhh&~HG{~CNvq_;tWu?>A1_PHN1d>EOG&CC?$6y{SF zm(`bbiA`g-Wp9J~Jem{08JEIJd6Ig7J3ft?)*e3KX|Og9V-xHyKbOBbBM7eZ_>5x$ zUnu8!g4;r0VX80>@30A=FYLxs+&d(f$s&Qs3|3=L(Ku{xt`cn#9R>gV4|e~UVk)$< zzc>V&CRz|PI>S|6FTO7R3%zKTbdb!IoRj>Nl5tAY2?^%ASoV|1YGk9aKmA#rAQwO} zx06qm?~tFyLf=!k%QU2M`HB>Ln~PnLPKqvIGH+45S5lQ`WoImzC{%mZRPd48!Z#hJ z-k|=XDT7jFf={tj`w;i&E}&P;hu3;u&&HY49{qlN@^501beiEYS`sv4rEw4PmUB#R z(0O*4Cz&^)?R?OD(fkvqVWTV$unV=o`puS#ohJU$e*ful}j_ z7D#e?wcB-fp+|3`p?p*S7%httdaCZUZkn#0j;YlfM!Dr9I ze|<;UC|oc4qIXQd`imTkfYZhEL|=u+1&@Rlaci7(chF|&mf;z{w|1N6yn2Vqpvag0 z5HA-#1Y>@?;543P{z|G91GKwL6RZnu<7^~cP1~YnH4a3i2waQLS}H7?aXQ!(S-3Fx z)2q?DW*Q%Z4O(dQN4D*;;RhPm8w?u#F})Mqkkh)JI+FINwxc#ivr|*23BZO_iRz7N zFv!vemDSjf8mdT^-@-CWy6haz-8j-4(ssDMx#63y5?6}8BbyT=+#ob#72K3@4H~*P z5>m?q}{<PFPfS1E9HL532-{5rZhlFm!=DdreB=g1MKKjET!&d4`+Kpy_2!S zSdBf72Gfu6fpLSe20NTKh8%1fDxB#1`1-*J!MffD`b(_a zbC7%DF#@o6c$&VMJ|4Q74W7qE+FG;=YG_>QSL#-L{!_v8*aD`snEZykfLu%tLV~Mb z5{GmKJPr!6k+=z;=w!le!VI+hlCh^UF;SQBBVkK|3w`J{=nZnftveex8w;e`xDafn zj6{z)D&}s?v=~$L@92xshoX-|MRQ{o#gbwjP}j^@OPqgvPQrvl6S8G5L6m=hF7idV z&~$L}T!g8Fb=VnPM%YHUN%%te4PQDGzVvY7A+YPBNI9h0q_-eH4@$a0*5K@_1*M3x zmP(_p#Y*>V+E=8#PT==rA>$9TmU)mB3tG=8)-84pdmnbzf3m+POQ4?(oKc*mDa}%T za9gEqPFEuRN5_tP7jOz^aO;rK-x<#ucO{H_? z>r`QyZ0%E=`2NvL^~mojO zn_4yR@6J|2SG3IN9!)go{HRWxxIsZn0>Z=t$mOE z4Cru;U|f6x>n*?$hZr6Q>wzXmEjoD99orpuu!NG1J?-vLu=||PUE$a_DRi}VHv@4_ z;5NJK-Gkk$pqxK>B0OoHTxjQop0l3!@RVb`46n?a=dJU$@&4oO;qB|~hgXAlly|Ck zj(47Sp?974sP~TdsrQ<9y|<@V>y7sO@qF{V^IV4hwz;1|K{sgWMNT`wAQ2 z(`)N%lfmaWk6iTVnvS4P>uNYP5!fueSiKC%@~mod)rYEG@Sn|9w5rIeU~uhTVrgY* zW!K7#irW=Ev8%GJ+*wX8ds}w4Y#X+0IwJ}Fv2OYqRELdBA{PhIetW?Y3=|tq<}@Y8%b^(YgjMvd9_=?K|8e zv^0TJd=%H}K+{k27|VKO{+HSIBQG5W4Sf}wc^(w=RDA!+`VFsJ){E8?*3H(*)=t(U zq&o=E(6^8V*=^Z@PU1=^>E4!7Fr|ad-=UtLBFAwIDe2Wv&|}S=%(-Sh6!c$s(A&Z4 z=#R73YVe_HCSRnXk0HfT4{~I*;g8`FTJqy?I$H$&EHO|GEpUpt4d<9W^j>`_KE;8$ zd%6R#^T<$A8RV*niNeF^*LlIW!O{ch5N}_WgjII zyI(^TV)-NaNVynE!Ao$^`pfvz+tL}>GaD{lh*ZZW@U;w*dr%Ke#q-5x(NFZH=86W2 zvW1PpGV}_^2sQ{g!UI@`=q(x|`bSg;t-KOiWVZMRG9X9ARpLN&t76csQi&PpBmNeB z5}gzEg^ped-P{Rntc$|;!gs=J!X3gz@UFWH^@1OQje;TI)b|k#1SPDSphm#XIG$nU zUq(y50r}Pu=zK}}k^Ck|C_d($;%(r~1hu0FuM?=f?Xdz*NWYW53a9#YXg6+1vmg6 z(3Ze=0mJ=A`1kSu8ju+z z|BHd?!P7!Mh2#gd4|o&UG-zX}IQ&=?DW+}Q{X_?GVNxNv4JCrojj|L9c?H%6lBpAM zjysWR!`f{Pbux84+D8OxBF;k7C=c-S=ty`R13y+o_JwynDJkT?y@mOtIi#k9S71#o zPHZIb2#M$tULtfP+DUOFBPkpdycSqDc%IZ33FlSVON*xXQ{up--GB{<&y+t@9(4jX z4QjCv@snN%*6j`SG=G8XY(zh>BcqfdVWcvYpyE2vp&!k-2qM9J<~y9hc3>T6OW3Qh zsM{m?9*C`1Q`)3Pr0(YygNN`Wt!0`m?NoXfUIK3k-VMF@Pe6cKD`*PsyjIu(x_P*8 z3${ywMN&~Up5La3HjA!^J|ely6zj!yaRbipw;;QGUVKCR1T5wjk^o6d@o!|9ec>|m zB^HSt#EdmaGra+4j)U#L5g??Um%c=fSt08nTL2CAQ_hx`qDQboenfs-{y`C-;3#s? z1RSAQsMw{rq-X?Lu9-4Q$x*76*~%)=BiAF{tO6JAq?)WAsJ^9%(j?=vDb=*n?9-;= zllusqHxc~QV|p4|4qf$q^(zc54Q;V$It{C&oedj|p~hO{B;!dCG8dZ@ah5gHd=iJitP`%YuXm+U&E9c4s(N12B z9~~&0DW!{+3;xMCDom5qDyC^ejVYGSwh5ViGKYZC-)P%lbK}}P0G`D^xW1mWj{dGHZt#l#Cv6X9sG`loK z>f304G*>ObM&eoUqyrSY6%P4#?3v4C?~$va;cAyCIe@jt7;rj5@jgiv9u{UJ``!x_ zq2!F;=w^5_k~3QHU+|Bi`!N99lci`F?&oRK4a%j;5q&X z=+WJ=P0wdXu%5D3u{yy^WwQLyGTaSj$53Wlrhys7c+0rWxX3ubSO#XtBxIwPGUmdU z9>y4t)YAk;2W+eUOFszp+?rm1CN7&EKzl{IfTYJHXy_zrBYf!oR59fqWjIAi{!U&? zE=~HAv_8q36ocpALgHWIe)Na6AlWTK?}3x}EOA<*HsO83vV^kuzwt}rbK`!-&50An z-as#KCYpnzW9wph*heDAl4E|wtdGfy{v5qNdP?-}7=Fxk(4XhVj*Xod7amVcC`}ZA z;=@7)?sg&vRLm1N$@)Zy2Z5s#p&zo=lL(s$R|#)G-$)|nLqBgOUL`fbHD*5Ob-JX1 zNf)p?xPcN+`G;~6{_`%H2=uxycpiVoa545V{=%t0$TF~2vR<-N*fWz;k{2c)gVR4X zc`qjp{G~T3^HL9`rQ^3~{B|+dL z94Ri8+?RflT~{?HbywvW{#bRr))L=JSj3#b7Kz z->7(5@vAbtGPzP$>8@N+)uc*Ul~_3r8QRtrb1J=6?cj3GhTB;Vuk&NIPqhag^C6@Q zI@B6!{?y#SLSQ_0^d{Dx#~NP^5(u~JW8kFDLw-3Bnc*BHho{18y$gjL<48eSyReXZxksZXc*gzF6OOdA#naj|&a(;H_p>+3o9b0~P4JrAc?WsN;%l6Drgyb> zhj*uUE51GMz2$xG{m`muD^e?MtI}45tuk7*z>gjCo`jaZhM&{P8{t{yF}fR(ruKlx z;f7w`=)UI(_Q*ZeXd|}s)S-JwbiZ*Qac=>;}X=YW?yV?2mjr-{!0C<`bv1vjdeTg zrh)g-x-J`Zj=Qz9YVEaxTECi`HLGfd)^w<;uPLsv)W~Y6)xW9_fz6TqpMu^Do*fH& zD~(`6pTu(E`pQM1LT6Qcub5S#Dt}Twu{;y!3opu!mn|&oQl=^MEj?R0uGCuc6G@(e zl4c+h4#nvLq38wLgp-PDv88edBr3l-RC7}_*}saEq9w?N^27|d)c3FxArvow8Zk-4`1#|JiJUI} zAdyPcP}B$E>9rGEaG$z}2G3AYcWkni!lSN-?yeU}gx`=mZ6iz*HWfU@=D}&fUJyNI z<4(p$D$&OOiZ<9+{&)Tfs3irTiVltxgD>XA-72RgJW`Dya-WFGrIdlZ|++QTYm{$(y^ zrZW~ZqTq^hX{TvU>KE)8#6g3qktCi3FM2oJn#Cj~@fmS2u{mJ~?lNCMGqokGhC?$T zJ}hq5e+yePaGu#JIw)#ORBXh*;UmK|q4Pp_hS9?6!c3w6hE55&8+<5eT~K+@hv0R= zZ2~_AObBceyeXU%=@Zd83=HVdy08)91>vb-Q^G`HvB-tI3yBCm7Lpn24m%Q&9$6K6 zE|M31BFr1QJTxn0O0X`76jU8jf?wY*>RwD{+!g{Msfr?_^v5R53rcsYnR<}A4b37k z7H_d+i{4Rl>RJ5N6uhQVt3kz@NJ&K^dOW!|c@$1|NlA4$IdxBF zt+=C~qQ9blqJLwAGpvl^IFUZeIEJq?ptas*JcEP828UoF^BzvHN1$P~3M}0noJ4Gd zy-cyETuzmuEr0F5l;T+KyR_b5Zye{`9b*`%hq~in>VO#ss3PtLoX^v0iIBbes*EYo`b(;2rPO0kzV)8+~ z4^Ef%=>MQIoP*r&T_f4ZGsYTyj9lYz<2_SzQwtNtG!a*iS7HT2S#>$uuIy6r}$MGnI3%go&%-#f4iJjOQCmW)JNk(GlUht=E@&+jKd3+Qj2 zYaVE>gNH^otw2V)4H{ABL9D-kzrPRU%|)Qzj|ZotiP2yP(2deoYdJcGeha$I&9w7W zZRPhstp24ut(L3%s75M2$*W}vQY|QbkutR+M>SRbSv^o$C;KQ1moHZB*9x^_)j9b+ z*);h%)k5uH{TgF8^Em4-oNgb@>X^AFvvuag%tKg=O|_kadv^t?yCt@4_~$dMTFWc! zwRN*(S)y<)oosG}ghzzwI8N}W#_L$HiUtqCsQ;AKM?w5L?``u`LNcLG^pr@ z|0UMOX4GYHprj}ADOjYFpp$VCUuVHD*4S$aHCCa`>&Z<%M9E16@Nz2Qk$BITrnGtFianc-j_e_-5#j$FuSV3aUO z^yl=W^zF!S%%XRv7tvMp6eOmP()!WNGz#@SKJyu%-i@M^QKHE^$obg*UY}$q{Yx4{ zN+CWat|hi6#t`-sx)L%HUxNQ^NcfhpF~O10G=44!Lcg$pQXKmwc3tc!5I3@817a@3 z9Ez8B{>JQuhmaaWkLeK`8M_l)%h7Q^;+H23#xD1g#HES75^EFN!qwh} z_QVT&1%HlMJM@Q~OH>RAqw-a!0Y{GVS}f&So+By-Z_q!*xA@4=GbK*}R( zG4@c5v?cT=*d6@A=*PGR4q$iY2i5@ANBq7GOm2~Uh|>{Ew5>rwnVh_w!%S(C%H_^W zkK%E#c-!{B^xui}qfpY)w6|$D)1Ifjhb#Rv-NobZgZU>j$^|Wj$)fX;nX(Xk;`b@e zsyb=BI;viPe$-1trLm=Pqltwxkxd}pF13*1mmRXkLQlMevKWHTT|j14=E}_XNIVbA zx|5xOlkscVL>ZU!CfAm`G_Pe|tGpBWwETYg_d#ynSQuW|rtlE!UwgXUi*1wZj;0QVBMVx2o@2k`hT|<%G1(~vHKWXFceVweVgQoF zW1Qoi6P;7xFVDnlx^ot?!fTwHox9Pyd*%vqrMt3RPFFwVHFmfzx}L##X1Ft!j9%*5R$*w_4Y#)cf1J3%|BMoa<8LJW9NF{6DI_ao*+zZ^{x~eIvNiA2CTu@?9pJ2EClCTTptMH$5oK8H`WcTlh!`3 zT?}7eUfZPRc+KpZ!8P4$TGdoTL+8{8tN&JS$2oun3i=gjCxulJl}{@7R8Gc9O-*G* zWl^Q7G6Ej-JWvHg%lDW6Q_d-SUACiaa#^1;cbT@VIaY6~OMOZN-%pI7k2hZ+d&Vig6 z;MsAqe}Q4QJi9}-Fgq~oQ`T*`&@PamkAobOof&O=ZaWDTJa)1{|Sy;<`dxLO$PU_i`fod9vfcw zd($P;M$<$Pr0Pr-METny(#mP{zlSM2fp1n ziC%n9+(Aqbw?q>tN!(KO1P*hF_>zPrNfCb$?-b7wFNUx8Rgw$^Edqb_w?r>FCoPfo zm2xHXB{cCP@fq;}@g}I5HSnq3;yBSw?1kMDHHuEc*`^Cm2?rn%k}RYMY3Ow|g^ped zf*1=V>4{iAu)}4HMQgDi-@*6brGbL}#Si4Opr_-oebJmBfW+bn-cX*E7nOb;%NX%# zyFkBFVpD7{w>_5tKJ-km?X;=>piZ?*N#tDNOyKB~-(dToA~~LYj@^;n98^07b2~E| zF7yOOGJPGL2Ms-xW~4r)wuYm+l+u|ZL?f;g>s}L+G*FkFNx|?+$_VcX6Oig_mN*By z*G2Is3CRwtj<^^(GNO0*x2Wv+0#YBWDio0G$U+LZvD8e;H_CNTuD+qK z*8^XZXv=8>Xf*0&@MX79`{D0qqv1E7ypP;SK0y{FsYyoscWog4ASI$p=pmAb2I2`) zH|zlq#}mZj zioJ*-xYrE@SKv0&5BGfwvpsV>NVr3woAdFSf|c%2RuO9(J2SZ@?tn#{)tm<@@t}hp zN)5%IS}lkw>$$$%(O3?=lioA^FK-AxfqxJ=`A5jnZxf~n7m0kZT{2E|8Sl<|WDAx< zHGh+EBqdmSo+Q~Jc_Iy#rbu#Yn{l#RaxyHXVp#AUDXF8lhsYX z-w*|2<$S|6&@B5JFaD3DvjA%|?V51ik>XKEfP@GV2*eZOuDENAx^MYvTX%PNcbBcZ zZA;zVTd2GJv;D7JP`Yg?Ws~z;&s?z|h^%zSBO}?b6qSKs(Af z+!$!chGMP8_36IBVi4&Uz-4wwZ!*Nf)z%Hyt~}&8zMhwL~syMA1 ztbMC(j!AX3`V;2)aq2P3%bA6Wd&nVv%)F-fSDufA#WHCxX?qDlv>sOvt!ROiCEuiY zqZkHG$1b@Gv+N#4xO}GKAJt~MQ}%LZ$hWtJt`B1C>A3-r+`xN6(X zF{aC=iKc2(y79iTGc=2{hK+_{hIDKVr|P@uUASg%*I7aApP?1u`_)y$R5xI<*Qx5D zMias97@%yA@3RKGxRHv+^3JkPvK6u}vLv)gb(RK7wo8h{@5O`A3%*Pw5gtV+_zL79 z`=$R*pP4R0Zh9);%nwU@31``Ka5+;_Kc+5EmEi9 zk`KT?#>X7C3Z38s(81Cbo$##0ABpD@7l4Nr$9=?IfvZn4NFC=mdvJyy#<6k2+4bxT z><#SRY#!?~6zO$Pq|K~IaOy84Y)TlJP!38EEujhXA$%P>FinpHl}(Rsa0WA!@riMn zu?s%wxp)=zW#loE8Exa=frEE4entG>V0Ki+mx4_ZhCZT0ajW76#VKMxfN(Q7Rs|Kh zmQF?=%R*XC%m*YDRM4Q;MJwUis-%X4zB3#Sj$gY7&tGVhP_{5i69WHe@IPvok|`{3MRUcl3S1-kdBiMVR~*L2a=PJHSPjR<}UI@@)Pnm@Ha9jIdG87rktTRr;4aG@P#!* zTcS6{1jlra`4=v<8MN=9irj*$`*0jHZfxA|_`l+xFm#O7U_Gw`abtAC3)WxkOi)Yb zadt!TS8>#w)!crGi<9b8qHx|$;Zec*K7cm&Ss*-Bf&?Fy{1_~$>zJ)q@_4*mn4V?) z{uxa$Jrl$OB`;*V6*+0RUn*!aL3O4hm+|PM3q{i;$%kyXEzbMEk7+i3wuti}8wC4Gkn`1#f z8&I^W=r;OHgvDjWGmBq9*(@p1mPEjnQCjl6v`^{f(w}7kWi)hX+u$oOH+S?7_0EJpV>TYkF)ts+V;>$zyyv_Re64&6 z-(S9kz8$^`{$_r&f13Y7O_Q3$8b?i0jokm<-_Li;NAVVWj^J~5#%I3{56Etx+Be^~ z$d~W^=H20)k(XN;!+`t)V@Xt&PY zruq!ndfMtXRoBpt*s&@Fy(~9yqF4oo%IM14%Hm26oE$qr87Zz{mwzfhUOu=zCdtSb1sK#x|!4f&<{VR={cw&X2EyLWH+I9}w=$~ESE$eEra z29aY!cE4nw3bJDxiZIOaGyIg;#;;DzpHx7!nJ zZ)_WFeQY)x%lZ{myIN4}D3-UD-Il*CITo=c&eFtu-aOTuYmP8ofVxp)$}k1P%Q3@f zHa12VP`RO<{+NC;?k0Tb#a;u`m|7MjLjpZFXq$T8yvXg7V0{f&c-U5rL}3YmC| zfqwnWaMy6h@Gtz(DIN|};}@CJs$3++YfsZv}9KgT=KT676#io!q>XfM)=I*AG~ zMbE?ir2)EKYQ}94qW^)Oyb6l)GN{c{1fPU$;U?UL8KnmKA_`oiGJ!%6lJN+;@hRAU zKNP+JLn=tH3csF-X`3Zb3-ScAjE0QKn7=g{x{S2+@9AsP3(^Dlr};DZebMIT=R5f{ zP{h{3$>B^RgWItkJ-mgf@nDkGfitxNjE)?r(5cX(RXjCMj~;{^o}3q$axrBtQie1% zWeiA`BsW6mN(~6E2hdX};C|BCF$#QdqkO0Q zL+J$29rC?>Rp8oorvmbW zcEDlXEns`Q76G>4iJ>h*lR|7EXTvp-+aoWB?+uF#_Y#Iv9$>;vi#{7;Lo;?0+Bm4o z7ipX6o6&l!iLH%&7blPX5nD`u2Y&^fewOwOl#ISHb7DTw2+-L(N8iK*y$+e8AW8$} zAY~e51vN3600!$hFtEPGyrk*q;@F9C2a#xE#O;e)6Hkl3h?e5cjB4bbmVqR2hw%!2 zL>IFgvzW=k_wy;^0%HqfKJNFY87~KA!-4gP$}rS&;lQ31Fn2(I-Iza=j0K{V zqTO&ZJ%=}=1!x&uxSGAk?=DY;MKB8avf81g46|4^DOChOk?k4 z!JswUWPN1IWM?olH;kdRD-TkpX^Rc#jl1>#YWArmF;KRg6Zg zV9N|kAe8BS=B;Koy0D5(5ysEPQ^uagHn?&RGUOUU^&9nCZ1^_m`si5NQ`)XtuI8;~ zu_jHuN1d+@P#u6Ce@EF1ySZ1HV->#@9_-=f$P4AIK-A8V-jPm{3M6|a4Dl$@H_+}{ z2!{#23cA1(JvT#>{ur*b^z=mek58pJAMC9|5LH}$_BmVU@-coR&RrW>Ih{0{Rl zb2c0vE~bphWVU6zVw{6pdJ>}>xe(V<4jPYkHq$c z27R2~8&2qJa6>eWS&W{-$mk={h193$Q;DNopbW(Pd>I*G3H0Y_@Nc{)t|hvO1j1>; z5P}-)x}9KegkVm-5Lp*_AaW{ZXaeYUTOw9O+>7iS#fmyYXcYAj-K49d>cQ=NLHvsp zL|OsAb0^H?9yF%Jkt4}eaymLws-Zm(fmh`CpXoV>k^=2{5T@s?lpECcR5RLA523BJ z8`6XHn4U4$Xm;8OdJ-6YcacIq4qbgsJP|#mfs6rQZ#a;cs7$D5`B{(HeZl?z%3XsN z!NSC9P`j@sO;4VZGK$AXE_5!uI16}FvB}Kii7`!oPq~Iu&~My5cBgVvucduTA1ROv zH;A^27fHUzTV{?^-Ow1Y8Lq|qTJSa|XkTG}+);N)Z_=;Te?kgsH)iJ}COVqh)|wlk zPjH3#872?6Wu@hbm1ZrouC#u&S&-OzV>j5BIhs2>j+0Iv^N(C5I-76hB|&LCk{^&?mcOeYw4l0ReZj{=pdX#BwHx8IJN!<&)4w z{k$R^Q*#IOQ(vwOKrYUQneYq#-*gxED-C=MIC%YAx zE0u168@E|E4{wQXE(jXQZWi)@q3%F;03NUvtr_J&hq0@UWM-b0v_cYD`)S9`a6Pk8I#$=K!H;{697z3{d1iGBa` z9q|YH^Zbkacm2O>n%4x^Xltg`?5*kNuk-!#Nxl6&f4kGbt|Ni9aizM>ecE%tyT`Z4 z&-JJJ>U>4MU`)|J@c86?<9+FU0{`?IUo&5juZj0A{`Rq$qeYmZuR#&7^t5xYh5IA2 z`Wdp0BdZK1df$}b{3aNZoc^xN=Eaywso9FGTZ@L7$F^yov5Q7)?t-g6^j))oFAo zIug=@x6xdfV3j{it@gOr_=4ouJ=kgQ*nITQ+)JyVcL%WR`S*8w^g zB-mqKkS~;%$pd8DppQkO#cPtZT*{Yx#r~NqJ}I6A4Y~;J-d9BPM1w?bkx<7 z7B3>@H99m-rA$pxKv$TJw0vVUiD{CWgEzG~v0tJpu|4+=+7I}g^PIuxZf(y#i%qH$ z$@tBAUX!@w_#KxX;izp8t8}<^3+@!ABV6@hC5+O}o4X$Y7Tk{Mx%yb-C7_&efZRFkM_==I(i z#~4C%S9GiBsae$J@M;W?$)fe4uf{3jA==Kb#S!C<#_wjVWGXQMcVP};9!+SM5D(|( zZ~O?`WkO441Mc(n%nMM>Mj;WklewR{4*tY{6PhJZ6WTG~GruN~;q?py2e$`Pz)WIR zF;AmqVjHw)6Kffp#$L~nb1reaq0wL>a`VfQ{V6GELOGeTCS?y#jCSoGX*>7=kjBrX zH%iZdv;JZR2i)=<8DDUQ>nm6;I4k%ql%u(1DfHzRBC5y*j@c;DT+trUUD0RkW!s2J z$o^?CC)?p*^23$!w|Ja*v3QsGEV5?L#J?ork~pLQGbAoaKgn{*G0A;t3#kAJ+zHb4 z(hDHZWynfERv!&w^F`TD_?k1}&lm?P@?%9iMVg{qF%eXV>*y4Dhsn90vW0S@vOyIF z{#=Yo4wB9a)ho4Hy!HLtP+Ky~0-!l41*Ge5FK zVfXwQzPO&|9FxuX-IQZ^^1jgRz;H9lO+beb;uoo1#j0-bB; z9lh-H>`ky)d}rHWYiq5t23meu?ppq5er4`zjy1hDZ3B-q!T7*9%V@y$dlB4oEuoq( z(f84(<67HS7mwE0uHfJe0oS@gy+W-5`m!D|L11tklI| z53Ne=g&BG!&xr=ZyD9U*Z7^e`n2cxW%9J_C8}>@!fVIg>+6PvB>%_xwbu3HVlDGm_ zA!}l4VoYLVoaSe7dvcvzA~fj{oLr6oiu7~#e)b}eHcQwv)_vA$RzH@D#beRIF%C=k zkZ?RTGNNgl0v|)Z^-e>N?>#G!%^-W65*KtI>D(oYEQ$Xck3@P1ktJ zddeBfCu#~3jjN~+qq*34Jwz2IIWt}*P~S(UpsD7O=9$*0eW@F$yQ*&mSNg-f|Py1zu&@tW7 z;M6%6JAbYZ*dvk)|cwU#0Lyu6qB0uX@D6~qoyioZYWH~S9!~4~wYD;x*xE3zB zo4eE9h3?+&@$O}Re8NxN-#x(|x`*va@Wgnc&;uCa3G%e|G;)7&zjeQGKXhM%r}+Rf zdh5}zy$lZLwSOGO$I!t2!qe14@+5n-m`vY!iAemFBM~?g)A2Fy1@CR|EAJ0qWA7Kt zv{&)-E8gpPe+Y{4Ki;x80xUXZtSu{`QsnDt#S%9?a5t_^7XMs&Bb( zv2T#i;0yHL!B;cP>-0u>ZotQpO*1v6ic(U^XQT;N zm5eUwTH-3@Z58`|I20M+<{jd+n_b{iMgG}#DXH4TvBI85jG`KQa!#~&ql#KxW3;iYi8$$=9)s$-{ znVseq_+3I132mE=K=0UXTxVQkT!9&SigBc|7aSdIOwj*zfsaBG5qnT@q1)*{!@Y4q zzZsdtBE3*g(*1yM<3IlMT-{hWpUZTnKiV_yblN3<=ygIZ0k6vj&3Vl#%}|YBldTbH zh-e`Eq<*8muRf01d4YN+^k*-4lToVgP@p%VFTtvcNAK+uZYEc$ zRfULpw;`Q{1Gf(Bu-uoC(GQlVOyhL5?z zI5Z!&!KA%e;1k5d{ZW^(4Biki+QXlxFHbk{pJRre1@c`j-^wSaeNMX$N=FSC(woq* zoC@tHEVT{VR<1#bUXM9?3-+ovc;|U@&@I;l-E;q@?85}@NdA#LGns*;NFlnU7+|)( z!L_tcVmkLRcQiMH^NI5hrx%9?PU|N2WOe~IsKZ#?g!c&tkmCu(w3o$f&e#dBVRZae zq}zl@w$F{Lj7vtUeMfAk*aWl{?xPQ*3u(7#Ludlz1s!1>lyeh6__W z=&R{I+ACU5njCCZD=iXzzuVCM`y-}*bWiFy>VW9Vn6PEevl(28C363_w<;=h|& zC1_=nvr5qhDNR@kc2@_ch-qRDW!^@+#6D!^53@UiwsDqQ$o-J`4<_f@6l%&AUZ+$O z2+n=emV^7^;=f4urmuqg=T$~bMs`O3j71sekpEK)1`75HzT-JoCLAL?Bx;0HV5Mld zXtU_CI8e+G3&bv*66cE7i?<{BcTfC7(i*MVZ6qW~szi$JY@x&;@gZ9~Su!0-z-^M# z(3&4fzDa3PhqRA$hIEhgg^Vh*$hymB%1+3>$f8mQviWCs?|eSDC!V za6@Z-k?yLwbjCbGGk zCDNj|bh4bc7FgF>hglm#dzg;7S!+$S+<|v9-$t=bw7IP(tPz$z=G$hY=@pt?znXR% zpBr}Q2k6SQLiI1zTb%5plp8a*DpYVvWXTF}vM@^1#SUR0_DcgZ7=o>$VUoX~KX1|A zG_p;DOwA1Mk<9*OylL8NzF_s*C1{&%a7=V?9W)S2f7v_Q&V%(YvwpM=w}x1@SaOkS zsm7K0BDyGYj33b{JKs0~T>qAa1BN-Ei;DG^^_@XJI-x5@x}-$gOmh^9eyaMkx&&X{ z7*!(nbk&*9GdtkAI8{NG50D*|g-HiVeo1ygqR^SAL8xDL%p8vv506D0AV)Enq8WT2gA7S8dh(4n8eN0!FZ!Uqt^3jld@ zWlB_XpQLX|>*43f!71JjezZ9$6e+_UAm2>_HI2%B$Grf4bS0O{d5etUCU_2VIebnK z`!cu@dUg!EEgaHUS%+A=;O-cYMneq}hjFYX2^W!jo}Dl(p%e|_Kba4hr;#}v%JgC1 z<75h%A&h!#dKNP}GC0T_Zifn;1}DdiI9puP*bT7`bQ$(TUST=S81pG+DL5P<(GTE) z&Zqth2J{q4Ecpz2P9jMAK!27HzZ16;{~{Vd9ePgKKo~$MCS(#QQSYKoMXiFnxhBdQ zr2vgXj2+wi$h(n0(dxa6pdvga&LG8+%1LGtikL`l(q*#Xj{@Bv&4xY6J;(#dQ_*s` z3v8b{~1_r?xnFCVgMu(|r1!{A)t_DXD*I5#OWsUpdT?|E_3%aoS9s?@=0 zZBoDC^izbs(TdbgsXp{5txIc>mWBO7J^$Yfnc#uQF774SBb%o9t}4(p(;U&f*0#`E zv|Ewd?F+|-5~sBPMk zc6(F1&OX|H&!IzNu!%FrxzQEo>f@@*iU)1uCVH4hXWz<6%^8_gnSaRNbr`Uoim* z$9a_-tNw+Tgbki^|Ej&!EvxQV*()DZrB)l<^E@-*4axH!@)i4@_!)k(@4fGW?~re| zZ;$Vc@3lYNpX5*V(=dyl@{RFXeMIkDDBiO`{UE>tQi6oxaH#A};6T}n^TaTCQxZUf zo(~s?8K;fV%I}p8l}~W?SOu537H;vNiZ2y6;N_T7(Gm9A2+YtM;D?SZJ5e?aSwdpz z^U}R&DePRTDUB>?C^=KIzGOm4Cu9jJprC9<+c&+a4is)i;myJYa6sz{X@!jn?iK7o zqk1mp=QjE8^DpHu&96qM_wBr8d42PW^9*?@ND`jN9gv%r^Bj(ORrX7e3UjlAvyP#W zP>~hvdgeOdnu-qhMCWVgI`Hh$96uaK9Ahy-^Bp1f7xq1PUY6K-xHlZO4TV2H)Or{9 zfWB50+Eh+k=EBF((^6(hGru#hH}^5y%}M5#xc*Kusf{0uD~+YNWV}ib`-l(VO-r^2;K(`ln!nL>u4utc$gDy{(0{!`%b~!e*4rE_`qsRNA zW|w9zuJe5~UX2yL=OFb@bv^jco76LqEgz#E2v?*^%~2Cozv1kgt?CHxhDZgDJ2aJr z;6D!l@2XU(P*Rjl;6!Z5yqkFl?FhXx^D?Diyf#(5zy!Tm;a0@SKVg1;gyybONE7DE z8_VV+Q*#GXK{);7(D{6(0*_feSqFOjS zt|P<#LUdNN8dTN3qB2o3=IYJ(Gk4InRw{Cef-y%=z|5R1_%3*X4SE3_r#*yxVKZSM z8V`rVclr+|^Z`N<K$~T{3|Lj_EyU2vcVSqG`7uhht$_TwLsaFi1Pcn&>Yvf&Qc&hda6onfBo^?C85lyr`%R z)G^c+(4y~<`;enBL*F9`37ZM=QN@uJ5q-jUg}n`}54jc++I~*(lb}HXR|7%=+XfE~ z9T%~QsHLumO=B1sePWkHhY%-6&WpGg)tYdMm>V@XY-jMvz~Oi9-8%_kZG0*7y*duWbP_SmkZ;XG#C}BJS>u*2v z5OX}53jE+j&1EiN?n!74MQjo#En{6^w?{sz8SeWt@b;SBl--z30R?vs zdpQ^cPdO3}i)~4`%Pab8$jXRv|lu{hf1+J1S9<_%`WG@+mN$N2D^* z6*vi=o~P+q>Dx0X8C^4`paXC|rsgR4n|ouIu>+?xCR(y53Qu5e=HWRx`A^qhqBvXJ zPrO8Y^v}FZm1IhaBpoERl8KTvl7o^{lCz-E+?Bk94q1=4pMR(s0&p{o(lT%}#!Kfy zZ9a!2AO}4swQ$hhkhha($V=rTK}owM|E-7xx4DmEf#L{s=7h|0BzO;k+bmZOR_;}P zR;g7>)lJnJbt#g-Me0IzIcOR))OE-OdNljN-5ITYp;IHp_XXFC0Z^Am!`Yh!e{z<- zw|*$78WMe}{GP(LT)4*uKwp&br0&-m=Eh z)x6H6F`O~*jjc>?EbnaT*v);mpLSARB3F%bwPTuntL=^Tq$R|Z2VdG#v)D4r+R?hs zx*5~)Z*-xR+MLkKFxRwJz3XSBUbfBZm(AHNKvR@C?=rG>44&?Y@v9WP$DQ2yca$e)(b8mEwN8hk-0^? z(b&cuYWZX*gYHkaUNPsH#+X0ax;p&MR43m_bcQ+}Iy&0#+WVn*wyABM&1L;=9dG#n zcl2}f3G;6A2y?pWm+717H+*^BOo7Jp*br7Dp)$_ELyCL2K1#PzrvfK*jFzvt57t<$ zdW+hE6!sMC?uKQ4%N&&1NKqqD) zOF5jPOx~PqL)x`X(%YmPNtctZpfhz^k_Qu=Fev~@!~S3qi$JQsh%P)g8d$JVsgle$T zgP5O~kC;c86PN|e3}!SsS#~qJA`ksN{vck#^telL?qVB>MeLd=G)SamMs2_yZ1P)<1kpta%0jZvJ4}P{8qz&lqP68Eg0C_k( z8-J5WBQv-If6FEEBT(z2(B`eAKfi>3V>|rMi{j(rSHZ2a6vWGa69%#pSlijD?CqRv&M)qQ#6+CF%adCr_e&m~ zEKmBH%u9*n`BTx|j;@^NskhKPPz`VUmb8cbL^uX#<4nF&5FuPH`YZ{Mc9+jqTGVSa z@3gU+&v>1l1YO`8I2%2X8z?gz0%gMpHSN182ZXu+G@~4{G_zz{23rnUK3VD3eCr}> zgN+5&#z@;GdlH_-dmT+2C62>RI*4LNT(M|bevu_Xui%qxL-vyFcRBK$NjcAQMQCU~ zie8iQyft~R^ZDq`s4Jj=M7N;eA@s<8g~yQ;%q^NzbfY+|*j_xT_)19>X6I3GZ8S$W z;8+lw1L1F;Sa!C&MY#<9(%Z^ER|qP4paJkzuc}2m^~I{s)l{g> zgTP9D=_a|2U`{M^U-q>0WMB#&=$VUY_Z~RRJZQ2WsJ$cLAKrku_CMCeF(|`pz4N@& zy)(R1y??`nq4lPD8QxIO7dSJndM<%Pw;%rIotUmKVD7%*dG2lQrFq3(m-m$~5R!|mTnwEeLaB^9jlhVpfo zplM}y%I4!tlZb}GOQq{dhnJRs$kDpwe#t*2b3qO)D@iZ@S-iWrQ!%k=)S!vh7F_ZUhaQ;d<;^?;7Rm;T1MeT>Txie*Miab( zZQb_MrVHbtWhr&(LZ+3m%Rf6%Q@m zUzLxbLT^&eQVv&k2M1cFWS~#rbLJ&D4i{w3#+|$;68^0fmlTVji!tRNalgMQzbi*W zf_xYnf*1dsfoWO{ z9+&|i9TUDlYs*cLJ_?b2pDXAi7%Z477!Eo@OSn1yV@}UQKNvqfieC>dYfrufoB9}Z zxXejQLz-|II=@$>PDcl`GF6UAIuD+X`@B88Q@q!pbex5cL&s}@dsqKIIr-_ysY!Q} zwjtLuC8-GM_&O**LlVW@E8M-5l2!9^z3+2+%8%Pg-%>SN~ZjSd)!j;OM*C}UFhughM=|qKZ4XD3nHqcUJ+iR z9d{(LonL zO8W{D^iB|A7lEX4ndYa}(Ob}!^p&w0u@B<5$8TnAVU9>3L6ctqHMta>X_SN*==0y0 zKjFXVoiIOPZNeE=2rG}(1GKqWtcPqmI~kL+hkc!s2I}n_(C1omoR|svah7skb7@>E zzUP0TwQV`4J8Nq~7Vh_pnJUHv8|tNn(d~2iDQ@Z5cYEmTyp0$ zXQZ=<tOz6$}}m>?`yqUua9PPO|Q@x$IH)Q;s-CJLnQa>|T3g>jO)IX`Jz~sn&eMDz&w@MeY7s1(pYyBzbP-ip8R9xlt$c!(w z$J*xE0+4WNZaIZ~%X-ULv}Q>xM7Z--nv2ZsOgnHQ_y$U8so@v+`~;AdhJ&lLL`Ol+ zq*lwuRW?z55JdeD)gI#+6?A8-{UOO}C2v_`B08NWjK1Un3y zuobRP(HZ+QhGuBfAEb9mC-A@U@4(L?O1q8z@4wOnXnb0dIt)6dGc^X@vZuVOyd5BJ z)OsmSbtFw8O~#ewUt%6+=&!hn-6xzP z>>_N(+aAJB{J4Yg58*iB4&f&;6fK3X3D*hViJeIV(jIaYnMV2vUfpwY7~IcgWG}i| zdSHg0L0*NP!}I7*`30^|EP4n{6fgS2_fQ(Bap+E&PQ4OMiLQy>71J^%FJ?Wh9jy!P z9Ij!*=+D9RIT9!L5T+%)PeN+jPQ&xf^oth;vtgXviXXs%Ju3} zG<%NFoYHpJ6~i|*P`?YA+WE#P=x$@dg|wIsn4j1 z*|@x0=tb$8zZaCctb$2kZ3Ms(yQ1)A5u>QGXn9e6aU$9`7QwZ_22prp$-7cf>E9q~ z{47f=>sYp?tiC*@yleT!^4CzEyI1T4NyA(@x$;U?M3oE7jNMhQtC?^kjH%vGeZKmm zJH~Bu_k-W!3J7ijkmP204tbt>+j{w!iN||4drx~GdVl#yP=_tPa$g@PwUc}UeFeTG zU#KtKmkixD7eox=AMeEtOudV|1HGL~2&2 z6um2ptA`*LX{e@GeFcqUBU%j0sxqqDSH1?lZ%yUc${yfen?dAYfywcu;(W!zicS@x zibmx}%7>R5%3GBk1{Ye4ulic)HgwZ;D3zABD|rYe$F`ECB_m6UN=U^gioHd@&_}2S z$L=urDV>ocj4gOmunpcFYe8K87x*`(f(6abZ=QE4Z$X|XFFCInS|?xT-pk#V>&|VQ zvl6s$M)rg3X*iWN%Q~7hC`;gahZgrKV7y3NZQz4G1SfQN@HkpK9ys>FOXPKkphG{k zud{pXF}7#6f3RsRvQe!Mp+fhus;%wO@qG+CmA@=<^EdN$b6+$81tZrz4PHJn2uZ_@ ze8Wdf(BnZJ6&mIlXPIuBuUMkZr_E~9J=0p#V7yAmpgFcRwKFxr_4&K;E7IWGLH+NG zL}8&Z-Pp=-6FzE>Arg&-i}Yjl{n7cQ)>Gl$xQ*t)wMY&w0efQ$2+)&t-E~e~vaTgO zdh@kiv}Ux2wT7>1AN1z|(4z{G94yi}F+)eGf5XG^5OmX>@bE1Jjdi5jjRbHo_K=sb z10D(jhf$?aC4zc-13iRGlyj96kd(<$iZMfnLSMOw282mSKra*&UrYKg><-g_6 zc&xvA>T;AM-u5GT(&qQvns4mC8sB!sPsf_cJvrH59D}dw3IgMWA!+ zf*Ub1`A~9sa@(XkNtcpNfYw@=L`iH&+yx#-5O)`d4mn&oH<=sBd5Vs27bgT>j;U-p z>lN-x-N58nlaP%WF_!t3Igy#dY{6{Gc#W2oO0b~EkV98H1>Gx6gZ>5 z(PzLZp{2K`4T`xJ^LLCph8sPddIR@@Xv%JKJ?S_0m|?_$1bgI5^xhtf=oQ{4^b$zX zje~VTkAj1Pe}qUwo`g&d$q1bkxs*~yZx&09nMD3gdO}?nD~n$pdm>s$T1|XGY8JIV z)EhV>2nPU>xu~bM_P6kJH zA?q+`P>)#~Sha9uE@$mT!l{-umGumL5JN!9IL1DMp0xw)Uz}3TL}W9i90zA3w+ZJr zr;c-t%jJ&bZsMK=&1(gS1YZ;D(SdvjWH4 zjh_vY%|_$>e%T>eo$QS~RL+xI<=y1-vA21zpepRh>aA5=$!w7+L4V(5^xrio6XBqm zsXVS~f>-5a)m1fBU5!`mDfM$C8Kl@N4Mq3IF=$!swPY<9lk-CD16_o!Kz9mVOZD*Z zPCz%)IjF|}7!Dg6jC7+4u7s(^>&D}TFZ#~fMH-@-g{0jk?Kp$oEUFf-e--VyWTmj+G)1N)-l%2P|f<=I@rj_Jf+wM+B#b=S{uR7+1GLy z%32dE&$`E!W2?5V0578zrUtWlhKY z?`Pi8c=X4>Ga6y2)f2Uy)#;h5<(uV+igsuZZzr#n9+QzX_vkKJ1D#6OeROCocTL8* zAk;bES?#QJ>K%6+dix=Jk*yv+lDpQi)-Kj+>=>Kls~T&mw4|D!n){nunKqaPf*lrW zoNbIi#;_~=;`8)vLFjepT4`rOtr&wD`l`AEbO;}~MYEK`%*YmgY3+_F zx})TSWD=BwnWFdbtcAguHbxjN*a|9mc*d3t6=*@5(?_Q(`2X_D_~CyN&K@Y5foYB4 zjGmrqObz3G#wKh(bm)Ods1cD(n~~BTtsEj;i+&)Ju|IhrI2~V->fkFIlT?+InG^$G z*`~zaiH<}u`d7X|i{8ea4R*8v=gjta1>NWDs|b;OKDGTjntr+ zoJTGuJINNfpF5KW!T&s)yor1g8@kt&W^iz*C>3zMEvH-uyY9bMrn>0R=n}9&e#f|C zR>b^58`M^?ggVnN#~QE|Q^akFkB?uBtMR{RD}9$R40+22bfpM6o4Fa>dx`VVwZ0>n zn!Gxtk{5&~oDRHl-ip+Uv_ig`{{|Z_Fw!Cqs zL^VJo(=xQ(wQJDXP!Gz$54=(j;I+Bd_{NlCnqqEi?tn(_!{*;`P%W^WwbWY))?A!J z4_g1*`wWHWImGS+>G_U>iH^Y|&S+;}ycVNf16|Lu>{)BFn`T#JAI_oXbj;b7+X5uA zb-AA~Jx|W7&)4Qp%fDZcQZS(4Xkk;3oktYbq4OlCXae$rp~cz76N^ulv;x0jQb}ED zaA_7M$tQ4a)WGpvU!GK6Q@*VHG1^Xg!w1}=(g6b93-}GXV&;1Xf=1WsWz`pv28{bN zH?MJDb^rFndz_vjXu!S;vRgVP-)T^pAH#K=g6X*0HvkUdQ@$6z@BSA4NO&G3a6N?j zUi+^3uKJ$%KKp+78sLlA>YMEw;`94VzC<4Z3Uf2>ckd_fN4$OTzW09hwZ?yq_wjs2 z-&^RvA%2QK#c%NE`wRSbzYd=>9zKdQn4r7D%Rz(#y3jMpJ+*pUwW69;-Mp%xGPHb7 z*?`iorT0pol)guo_@J_<$V0Y4k9cbN&q{t(@9KQ?1y04kZ#q(r*TCTT*V6#?+~Pgv ztHIa3-2bg6*#E=-$p5&eZH=vFX3fc(6EzcS1pZr?tMmPI%gMZ^k-ov~jc~kPT^GLbBa=+%jLMNpw z=Sj}AoN8<`+Ms!-Hd};y!g+MK`?9#m5pHz-&*gHZxPqMZ&J)f>&OT1PGs5xIu@^IR zM~A@v)xHy6XpKG4cEL8u=E4O14jaiiaPUi!I)CY zSK}gds>FiyG{F$1e`e@lTxkX_=MO`v*389*@FcS6c_tN{92^q?ZfK&Zz3~m)9P8nR zo?+~cR}D@*v~_uK3772PK1Nw z7|0vla39UoQji|Jr8%rwiV3=0lLKB=K61W1Fswo}Ez}>;qjEugSiM0#P2E>rg65-e zG!Y(AEmMtFb%(~KRB@0;Y6(5%f${`8ekY)huuQ2_GU4U;Z-Sl=59T2B2?V2;t2_40 zGPE`{k)Ox>++SXVEp(vlE|>vDvR2YvAWw-TUnHv~PVsl~He{&^#C&m(=#%IxI@a`H za}3&p#SJo zo~MjYQ6>LM-k#hQ#D+Fdp|_*odvH=-;!m_3#B%FFwA;Y#jc!6dm&I)cI_m(A1r3Gg z(eRzj`oTKL@+AEFlYZ}-kj%WwoXqSE$ASepod<9hnvu+z5$}l?#NCIclNOgAr;Q7X zorlfnWBMMt8@(&lw0KZ021K6$G5RF6FQp#7!gA6nQZjm1D3L!STZVrO>l9KOygX=j z(2C%x?bn8cwa*K>8~8kEPspZ-55!Lt8Ko`pe3U<`i1eIR5_cwc0QD>>iX?(clOA>^pOpwwWhmbZ^XNqK?xVx4yax^I8)?v^dQzwfu1}F z&Wla#6C5gMD(4jX&|zW1j4VJ;#2jvaFfyXJZMjk?Xa~9LxkI?axVyPe;52`b7?IdB zaa-cS#D__~

mMUnPG++f4(wDUHzRc7QiBHIP@3>`ioXE!;(kYm?R__f6@-JDirm zFHCQl-Z}kJhB;%GAV5$c*a7GKVo`JWgC>d2AOpw{OF@?Ni6@H>h@ZgAoPn;t&7jJC zg$qLgg?XZM2{h#=vM6-^S!89HjF-vw%8tn{$XB;XJxXo7`vans-`M~YOrdz z>KhV)!_^1WUo-+uFTAD?Y3_pB%+cDwhM0}5(-Sb@e(LDDV%;>|X+0H*Ws~6o5=fcG za^nCne!3g~GVU<7H`z@cOmmUtH=8~hPZ(0*1)HlE8Ty)@J(x%r4S(l)`au${J^2Gf>dxn`b%ZkCRwt(Fd!B4eFy9Qs&Z=$9Fk`Z8UxHeCH( z6|6WcAEFQ{P3kgDoi1E|)Hv5P#duaPQBPAe$g*&xqn>MXPCC$9XHUA!t10l=$-qeZ%g|UqOdp9IphNo@t~na~ti|fr>IrI<>WgZTN~)|=7J*sBR1B8? z0-ZxDJ1)zV?v@I{Ss^1&N)nwG4HKmb&kOzVbBsgYc}qr@3^_Jr)6z-UjaBm#)4rj% za1l=SYBaO1L8h<>DK$RM@{M`*xF*f#xj_kPo^lD9!b)UdnTklV1C7&(Ue%{K^H(u~L0cb+9N}e9lOtmf z#^%t^&?U4TG+E4!nAqs4(G==G)GBHi<+NfuvQ)Azp_1 z97L9qb3xrm#|b|MQKBYIl& zEl}qB#njOfXhUg_;X+#%8y-70E!g*Sa~}g?@ExxYxJ^Hho3W?fOS{1ThCZcJf;7PZ!82hkm^>DdNt7y5i6)BMi;qbj z%2s9uspe`HXt(HEBlSN|pM$N?LSr+uN1VY%dYtJoS_K!HA6fz}Qp^89E2y`&wz90{ z=%Tn|Yi$!@KXeMyv%@|K({q|*7#h0coc{x_F3B|(4c)m}TeAbQ{n=-7I5`7zPUS|S zb^AbGn><_IoV@p#kQSp^Pyx#G(?VWhufp9$O^S>~ql-=zw<~sFc0OMGwIsQuW68Rb z`qISG?xlOnTEn$535|gf^PxC5z+2(;)`EiZFNhRED9!!hsW{|&>2C+;upIMcH~(<|EdK`o zG5=*ePWt!wH~Cllm%s<{pQ_sxs;&?-aSM2i@B99R!+4c%9;V@i$mgx{t%lmX!?)je z*mu%*-CyJH=^x}D@1O5q(t>{~k3$oqw@`>e1Wf#hZlu0o`pDtZdI;zwSDs+3K2^&gY zl|1-Amd*jZ?fw7av)!o;nj%$u-`v%s&T z!U_EiPUt64Otz_JK!NUuJ~D->x$>>@E}YPtmH%ra3@eL3w98ONE33m1{l6)C0sPQL zv;a4kzrsC!EJz$?d7A9!Uyfa0_@E841kj*&p*c7^OPZCKRYQ7CI$4?{WlQTzE@GqI z8f4oFG($v#b=wJyf|{6>r^6flK(rNpjoz4=S0S%HUG$HrP!tx81{3!bhy{B^8{qv| zEBaS7RFo$Yi{eG~Ghbw$&pZN6`grDccsvH9yUhFUJj*-EMY!b}H)?YZvZV1*}-8&^w{}%tSZg0eGN) z(x1`q&=1lVVgl?&*V4Yxw$NrmJ*_}`XE_{)Qg}J`z?V=xsnR4W?*Y+$r>Yc_<$!*|7&>o#e-4 z87WBYN;pTb$IOc!&^E61{Z`*w$y!!L&4|i~>K3&-s&;c$({;^yMm=tGH+n`Jt77gGKw?F6c&j##2=j^W3G-s|2^vy18Fq50JY&cy zvFWi5$;)F~$9|(|kgY#NSpy2k%=k292^YqfBqSmKsE&USUj>H9?YQ6ZP2)D8X=P7b zIDt&D4$7>XIXv?f&T0|S ze9?K3m|Kg}!IT>aj`?Nr4@siL4JzYS$u-G4X%i`58br=-fOH0QLN{WZlksp7kZ`XVx!Sby*!*Jy~5@16f;Hii|De%T%&L^bbvhw|OVp z$4Kx(<;sWPJ@s9Y@|QukQSnZhf_}bP$_J_xRk3Qe>bjbUGw@*b7WF5M5F4f`V9z~+ z(#+E;v@T?b=YeH;9h~_h-3cU)OZ4;fkKqC9Z`fmaXKZOC;e1Xp=3^@yXDWb;>_4P7 zh8qVM6ri;oGS)L)vdp$MwkLxe`^9-2*Tm(ni*A!bLpymvj*++C5u ze&r#%o;Z5i>R9GNsXb&h*;?2`P67OuZ?P?2jD~8>H^9FyPE_23s;RX!PHe-*k&it1Xi(G~+E@ zy2>SgDE|-FuN#U7aCL0f-L^Vh_1p*CGpO|zuz{|z7qa_dE2d>rSU*@d;OpqilCo-I6SEz=vA)bwBn$<}Ie$e?V-I64 z+|hXq1tX6Bi++Q?7u36f^Z=brZ%BItw(%&a(Ogbqtr7<8iZ3NsWnp$ zAg}9(3jGw$r~miKj1V95h>%5$B@w`bpHFH*EF%0z7)EdqC^5eYwFqqN)CLlU z5=NmNFm;-bu@JdG2@&5dszKRqEPVRm9l z;z4S8Qk|r^$RFQL8K0V&dNNIuwgcRr3-ogOGe&@MhFQppVx3}l|9jn;!4sopX&Ub! zzkT{NOwXf1f_f(`!~N)5=GV+YAWW4DI|%=Xh~n#6Jo#N!u7-_w?s72KN9iT{2iOU% zMVDup@tlca>TNn`u8U-DPh<|RTWVSoEe1;;oaTO5)2v?Xz^~h=IOQ$2y++I6bo&Fa z!}>aII7QB>&QC5scy+DaRqmr6s;95#te1%C`GBvP&+l7^=~?fe3hkL27#Da0^>JA6 zRCaWB72cUOa+Em(a(3r@%4Ot+(FXktq`Dybp>IQZ?wY@^pl*Q$Guj34HGG9L3-3Y$ z?Oe1QttXb^iSRT;gVVeaj$m@B8(iZfWi{Y&E-D*cw!7>Dy0V?<8(CNWxFQDX@IRm> zpRRZxiVE>Tit8R4huLy1=H+MMdSObK7gmH#P;X6PZCDkShb8!)#BlS_cj&qoLVGb$ zkH^m`4Fy9^5Sq0iL&y=z2^HgeNgDT^P0WX@dUnO-Py&8e`|+!`2y?@c@ZktO(kC)K z(j^iX-WLvq6GBfg%XbK6V*bB?&o73DUZ}OWc>Q`h4bFOwLuic;JB$vB{e^v_y_a2zE9zP>Vsy3`>mBQK zxH!_S3Fs$$fox2bg$y1?nYpRyglUQ?&qOj_L59!>{dtig2lMY$eSz)`SdOQRO4E9H zJ$jnkz%4x<`x&0`i}Ad1H(J048%vFDqYj&!X2^a&1lMjc8o~1oR!q>fL4sZgmYo;A zyIZ=gy2VHWwL^o7P)FBAX`doR_&*2qFfcgyU{Tcr^Zx)8=uYrJJ2eXQ(Gt<${RT~1 zdqFSlr_Kk(POBEF6TRzX&x z^r>{8bR(#CYo!yQMMuE_`j3Q!DVihN4VUv6%*TI3-=Odf#?1V$=slQTsc>#AhtFdo zx>ufwYl&NkV=&9q7QMsW=C$aR=#pq5W^1X4EUKOP67G&;@PTZG65SUQbQY%P3=nv^ zneiY--39xu6hw~t8Baiv?w6s>h!Wft%t!xsLi%s?tISGQq03-Czax5?Is7*8a6IH~ z;DtbhzK6TiQtnW+s?_G}0?Domr!%J$`slPA0l3g|JX=8X8O|25KBC)T5o;`~91UTY zpg?zL`j8}C#t_oqpc(7|{R90Y+_=lp(9x83g|?Hn5^m_swA*Q;(~SRrSE@{vrTl`M zqa;O;(k%G~*sCQVuhvTXH%XS%D5-T4h58O!w1X<3wnkfl4R@!j2@4Wvm{>*e&En3* z$#94I6}utUL;jbvpZJ9+A*4l5Zu7kjqfK#}D{V%#u59&BtDdcXw3-xkv&FcU(QQ|e zXrxmyF|EF|u1{zkr%J37KQMLmk1#LpW&Ac|aES4oIAdJv zxN-5q_$vuJshZ^M)NV8q9Ll4yK^_lv{wIUah=o^tBmEwOjfuH{F_u}KIf!|jd6Kye zp7Q?81jZ&PW>YXLe_%Xk+=u5-&K$t}7ah5?nDd$Eq5SV>yFn)C&82XU^0IlCF)eRN zr>Bof-wc9Ae{==*O5ZPNArK%px*k37zVs!6c)@tVNwoER$Y8?N^G6sGo&^`?0M2Do zMd#sY79s&SPP|lnT>Kke<`A5#^CSl)FQpBo@lcxcK_*)TZ~xP*1}IgwXSL57owYpc z2x!dJFdNgbg>iw1J`gQ{(`1Weo6vNBK(=3Y5GTwtvh%X5vb(ZpvUjqd@}?lDi*WiZ zm5-Ef#y;nVf}(KXy|q?z`n|D$~USsRh4Rk>VujI2i8L9%_L0#@9hiPM%pa& zaSxb76K37>5|E8#7JW7NITZ$aD^Oxm=Ij9o+XlZ9Gh<$t1WYhj^B{cey8cWL~Ow z74&6=?}ER%ud}zFyVBLnal<~urnX+T?RU&{kz5+5*Rjz#)qUC55{+hg{^P->*%Nar za%Shou=Do-{6YLSF?|bMewSP9(*3ZM0EEj&Xnc6kFTZYA^7}I4l32O6uxIKO^h_0?M41Ir+%%e}#qivD7jhvvQlvX=n8w6|RYToNec zXPr97dMGC??K?p+oothVUwYV@g=>6{CEZd7{j*MUBhxk0L{pk^J2r>av0-Gx71Lf% z`(a)nNILbFbvnIv*{DDBdY~!Jp)&!O}t^4q4~UcUTf|jT%pclmfpne z&lMo)ycdkkGL8aTG=me(e#&0VE@mgQUa;1o>8XIFWu>v2GJh~%F|T1uHVN0LBBm0P z^c%({G)&KjyTiyxVKl%#XAAUbADu?~MLUJ0VJQ*@KhsWvV;@2X%XfG=CZzgP2`TrH zO6Zc3p8P&}V{*4-9wz9i;IlWR?xq${t0yi?v?Sb5s6cwSPkiIJQ6Rdvi~SrsE;f~X zh+KgVmA#~VQZ?cRFgUoFeftrL(0-yJJ|~$;7E&{4#mk@?=Mb9{&JZ?ZW`0HZP548s zjW%vJQA$+(b!X(ES5Qq9U|w!ZtOkzf9ekbBgo9{KIZ8M}*iKl9$3DVM!bf5~Xwgb| zqDK-};wyh4QAj3S%{G(1kj3Nyjc z5dHvbYHQ|#%$=eZ*tKS6E`YxC?J+;MM1fXbVVPn%X03+wRR^S9-`V)K_L!cZ*hScnzj8>i4f^WL zckXaCbQQYxyQ%I0?kgTTPQKT@Dc&yLqdo%Kxi^Ei;q$NXe**1yeBf137n~Bjl}*bY zkbOBP4)4%)n4LLbJkQGgFE0kO*I48QTjl5FFUY@JkW|p6;6P!WLUrNL!ZYaF&c+mX zuQ;u^bMbcM>9R`tmFz9825NKv((R?M%M!rD7+bcl>>Uz+1<1=CFaLr>UlAt9vlZV% zaUor(5_9va(BaUH(ED)XFg|Q>o{Ah)y;sLbobLdw2iW&Vw=zi!-=th_p z-Wl;n4n(d-mPUM$`uH>S3bRAcp@Rz&=58IJFcqmG%Fpfiytd}!Yc4LZSg+qMq< zJ{2|wl!+zQ?pBwTX88_3(ol=i{05XKHmIg^per{*H$Wew#PAaQ8L|Gmexu%|`=W29 z|8D#T)YFyFGIXYg=q?38l2DvFhNf;j)3bU2TYDQB)&f*OSlX>*Bk@aPzTL~ zC-GIr=mYvBbavg+?EwXPq^>*C^XaiuelBtdV^+`rWbT* zE0pLAc&%E2$Z-$a$V&AB^;9@I3e{${3X^myX6U+5qaUb_<6gZ0T68h;gbY=Js2= zTLX;TTcR7F8hjPgG0%(^cM~hb(U_y-#BDH1AB09Y1TK$EQDcxg&VVC51ukl9COb1J zQ-BS89>^Xogjc}qm>}$qoK91y0h2OHGtvd01#7V*l|q3&mfj^j0rT@-{uEF+lK9o2 zKi}nT=C$Xg@~UH7`j&fy+Yx)xY3NTOaO!hvv468avfrVXupYbtSJBq$V<)k`!80&{ z)gE^#J*zR4o`0B5W;#5F-RXbmyWlc7Lq7*~XAONWy%U{6J3<>v>x1NuB<%w_U^}G= z!G^v7I`qI)9(umlq|8d`oI*(6gH+*kaF5fI?j{{fI*wit4fQeg1oa$s4z(?Mv9y0V zccT(wuq7QF-wK3_rj!}6?_!%kgWgRN5-BkiNUICm7PL)o{Q(;E#@5WXJ7S#CzuNwa zUP*jIc^yBB(u;V3ASO+WS0}YZf^lwATvD&32T4PzlhMu_0D+m9cr{6zoS$5sYC=nP zAhB^`Bw==Zd|X;wAU-FdJmEq@d3=|+MR9}U8^QZL1TExu;=aaRp!}iKj(ro?GJXuFQzRJbjC=p7a?!l0%`gSjPP5}+V+LEfrjhL|ImkH8b?%_?RI zKow|$B-D7&ZA;*a8HIa(1+xcp5%UVGK6cZ6S?Ade+Fqv0jN`5V`E02~lI zQ&9lE`fSAk#V2JNT8lbDalQhQoI%xHwMO+yO;Z=c-~33!&{Tn}b05U!LhUr|8C^r2 zT34wXhUV$hx)-`XdXnCTX1_vxyuPJ=s3B-1gBrWl_|4>ocUOzPlG~tQ?Kd~X{P){T zz-fOgIQFm2E6ik5CsPAcfqA#}y(0%6<}&vikH>S=o9MNm-}kVO;Y;>bdAfR1y)}H3 zarYe`7#_$$+rq5CDeV0Sz6;*EZntZo>m4TUHSU#8pS{#R(?#|&pkZwHEeTMw|I2-m zN67h+{R_LpE7{L-@^ZDg%AmpZ)Ev~l)MRQ|x~2Nj2BopYwB0<`yxF|j(g>vevF0WNnE7K%5jz1jxauIkQ;KZ+qLruu|B ztemD8qU@#~05{8MT^l_?e@rihpT%nUV3j%b?sJ}ZUaME?xdK0**)zhkz?0>k3rAnF zyRK_IHj$Men!a#U*^k(Hw$rx0=+Qc2Ewa|OY=kd59jWoTW{K&6X(s+=YZ&LEzwnZw zkAVT+Xn%dY?idIsQQE~?uI7Sfv__82A44@-)f6*y5F5M!il*{Ovfr{CylV2Ysv#fJ zRx(S%5+4y;LUDYAuU;4fRj=>SU51NI7b2X+R#0qZU6CTl-y0oqr3z}cZh zA9!`&B>n}i5Z~hdp}eK^ zqL5-w$99WtPM(3z(M6<8;(g*A^qolI+-Qr=69ustevTo;iNsBqq}!m8v=;F>@d-%x z{}GphNLPYsdo;QPXAzgc)4Uq#!2W1Q$%kj7G2toU0%1R4DPbg`H=!@o>Yjvlg!cH> zSoF27#XjyUW^W$2_d|$K7my@$kj9a2kdw&eZ)J*E#q`t`s$>)(`{*@X*b}*3kloq0$q_;uS<84L-;}f$Fs}XB6yEn(j)$pAB z;pyiy>IvIsHp%=dIxfx^uM!^>pBJAJ&k?glgEE&3&j|g(8=}3^i;7Iu2hB(jC3oqZ z`g;0}Xh=D1l;D*6(v%E_;tJDOY_kWMx0xT{osbEa=q$@gYjvy2IvVHHwl)tkgGcRk z><;^K@ao)-#h^XsId{8Sx$LL&18Mdq;aO`x1TKd`JCJ{v!XjKx4dj zmjpfrHRy4^mCeW=mVGCO2D;hi+`75m+^M<8bN}SY^9G@V`&Yg?e`5Zvf>^W&E-Cm_ zm{r)n@IX<3| z#qgEzB~0KO!}G%P+wmyXk+EDSe;@=7by1LtzaY}h5hT;Wi3?E*+uee`P@4{$w z`zt58Z|jN@tW^s;G|M?uQ_3vl-Ny`havi!6=|i3B3tNWJiR%>SxzHJlel!HwOb;!4G&3Mo1d-DP*t@vT6Y z%73LxOM61Q=a#m@1bq*A!UZMWFu^lQ8iB}h5Y6SCiyg=l#uqm%dQ!Bps5^KZZ418@ z-Yq;^cosNB7Y$!=$1$lF3#(o=YR*N5%lNt@Z?!PoIy?8&)oanv(Reka8q0lU5i|0F21Xt^NMqpGus*Oc<0#b7~$|a*p9}? zm&~*K?F8FX_@D=Y2~9*Z;X&+CeAZ~o70Y;RS8AGfnLC@Qrt_xmCJHp=F-E1~G4g{- z0~!8}1z>3OG?W`3nl+##-Gy7aCba71Xs|CZNlXOe591x<3F8)AjRzV-(4i$rAASbY zZjPZ6t@m+A5k7~?F&9_p5`7kU()V-+(BnM;tt(>eSX{4M-p zd=L5vUqIpM%d_zqyl7rsFo-sS!4U(G;b0DjeGA08xu9;mX8*$TEE-ySuodi9?CPw~ ztn;j)EDrN0^DXlQ^91~cZe|+eJ!2fB34JAf0w(9Q8J*NF!ttdc|ySd!uB;_aef}7+GwIOvx;`7962{#k_Bpyq67e6ZQ zbNuzhNlA^9-h!KYJxxsOLeFKiLchan#uKl>THrnBp?-mvbowy{F26c!1t<|I&V?=b&hZmvS}+J3f_{Ss{joiIau(FCNGQyKR&-V0;VrQKdwD0G6?JU}=XM8jjk7w|XN%dCahh&6M3=4nww zw3}=bHx;|YW5uU2HESj1l0K3tl8ut{X#Q&>&5{;iZe9c)^CRhdkca=k*G$Pug{#?> zH6UvpTpGXNUe1;cL5B7qd>F0eGEB|g@Lt#oP5HB;wxWe15xH9fTu)dA!I|Mk4mU^9 zQ85wc(4&g`AW3lHk*Y*8@Gx5Unyc72y)IGRg)>kx- z=IMs(jzMSU=vDdO;g=;q&+%%EeUw!N9WMs9?5#wwD5b#AR=S_p-Oxo8a3L z{EiI&<=j&_+1Y)9udy|*7JP-p16Ge5M(S>ISESvr~*nzvb) zU}uO-H4R^J1@-E#>3)EQzeKk~tI!l{*1{_>U9(SpNmElhL%+uG)G!fbxfVJmHsR0o ziCU$4hkCm zb>DDzao2;EB7&Qb=h*MawZB3(tDbGUEey`xbgS7)u-vxvMIZQ15D{9Lw&CodH$@pY z8b#1M`WRyMOQ1xbK*~E7y;f<^p*w*S{STU6yMqsMPuX8tOVM5aNbZ!Kka^*A8ixxLWNMxYA#x4@1)VG0yq(`Ca*P(CzMnZ?}Lq zjyDuOB`NnMh(YbaxwFD;rs2xCiJaG*)trAo=xD+|2VZn=c8Kl3`>Hj&HtPfH3N-1l z;BNX@JXRy-bL@H+GP^PDOa`+Srs!$#OUW25usNGaFQbd;O=y>)Ll@KdX@AlVpbN^H zMofK>x-hjkm4?2R4cM8rO}>KDzB%bf((0u0Br-Uh703~;PjojF&iD(+0@7))m|J2t-hp{|6fpul*#-Jsdvpj+C!QiTff7BGbb$1YT%U9v zS;IF_t5;+Cy+V9Js!pm$d<(AgEX>1I#4N%e!ZCO|Mq*;lA>72&^C* zJko;*8wt0eV8_ABF&IRS4R&GL`Z(t`zR)z6q3sJ&F0$ zX4Df&z0h&GEJdDjH?>FVFSIw_0{8C}oZ`dbevW5M2lIbB%gB1pUd0*B?a1@--RT1a z7lq_Z2{Jq<#TM}z@dpW6k|6#ho`4;z1}&7eGJA;aSviXB>X7D-_Bi_NKj|lfxG~u9 z2E>6in4gnCtJ{ZDuFl*W+m5FelEndL`VPwn?7IhAFW88-JT$vKv2(E#KkSHdlsoo1 z+d4Zt&$(!>L9Ux_k$VO_RC4g@UU>C*g+D~gV1M5g5H~vG9U2p8AJ`qN7xV>}1wUp> zFg;&KM@m2B1>2w@Wo_=$JW^gx-V(G6a`QXpZ_fW!pez_taJrCCSOH4i^CDi+(4uST z_i%vfe7>YDGIiriPN5UfQ97!0Z|OU9pOlp?D7%7Oow&R`SQ!^9>cTD28}8)i;2~#) zBJeXG3%!L?SO{gfUwBS<8>Y*r;op%~5jN)KqDZGm|H!z=!pNq`{>X7W4n}rFHbmCq zu_7`zG9fZ7GBDCR(m7Iv&+HZH3y(wz)LvJ_8j(fPB5fjdB3&cJ5qm@vQD6>Fi!={^ zh6{OHcsN`kO)py%o3N6LG=)aVp#(TqkrLp6Yp+gR9^n3Bj>_1!}lGJQ-8{Cp_+9a(@_UgkRYo z31a%^L`acF_#Ipb&j?$QF5DFA4OU0Xij&AOHYlH0&If&OAX;CdN*}^oJ*>2#R9>1~ z+PvfkX6QrE#s`69!UuKwM)CUMQN^KRLvackz7H4mD-uF|K3TY;a5{Lu_Uw)T-THf2dJ;)Jy^OEywLH4D;ZBmKy3pJ075aV61H# zX+D7SWL>1ov*4CKhVJk7(5p2jnyEQv=*PyhXzN;GoQN4Z1LUShh8^(OSr7#YM9 z=u=sOBw+{?s@mY$UDIvUjllM^1n)wbEOpZtBMA(QadX9D|R4ReC3A`MaHG6UQ zoq^8YsYn@3(DcD1U8>2^=#e~%QvZe`y+u6+Q*=4J(E>2AYJko0pK1?g=!vSXDvwHl z8TzyGq;eVV@IBz;Xr_1$C-e=)7Bs6AD9Yf6E>*}C2~g7N%iqY)$k#(>E0QP4Uc%Qo zL?!~y&M&^voR4I8>Rbnbpv~ z@)-NG=9z8KntKNdbSLy057rB;_s8Tyki) z;ET+oPp02uG=#7FDtz5P=?iJ?QZJ{xOD#zoNvofxO!<`JOFv+F1h@QeQ8Q7Th$f=q?v{qv&1jG`&WgU_v^GQhNJ5e1 zfHU_&ngVKuTiRYaRyt3*0CV$Z>18yTw1T@?jaP1utZ|^5FMz*!AKcCFWwk)eFoKw| z4yyArd6e8J?~8V!#ymDq3QIv=>r@ZH25gl=JDn~mOOZsk6LSB1N;X0 zxEILBb+az8PO>(#^s^kYNge%N`#fE|Lwv0_)zz(`?N_K57+oa4s0Pm#rXHsi9E?9c)CqsA1yF0 zg(rn%xNK}>TmiT8J!pAK(*omaV<&TM+c4KnU%P-HAoja_-7#CZ(G-yFi-y87-|HTe5K0kF5UE zPtx|1ACfVW#^N4mTB*qVojEfz14N(gqa?!v~*lG-%oP)d)K4A3SwBP^E$aBaP(soieXu)a3cf^gDp~s@{jKGQc8uN}& zk3c0T{!Y+q2oHz^q7jUb3B(il>K@Vv(qVEuc}i^c*zDLn6a~ndIiS~B;@>8$PAsO@ z!c|h0^e%Z89Cb&~(0Cg;%Fnd!wAb`(`aVW9qlmGbS(iDS7024c&gZn^JcD;^4!=u! zxu93Zbm6Sb?nuX9fZDT4{1RvKrs5~Kd&Pms>K0v;43jyPT{N||GeOe2i&ydiw53fn z{5BTg&i@E4odZpmkQ)@DD`nwdVx1eEZFjA7?7NTHT7v_&(O%Q;!!+{6A&1BGkyDBU z>;qSZYaG%CV)t10BQO%CW5Z%V>g%bGkN5ITKg-|Ce<;v8&<@0nR>8vHI%EbNAU!|L z5#@}_xsyvnx@;GeXDN36d-AL2%k%r?A1-K7P=H>+7lrACgW%eTDhi-W@H3bY1B>^S zR4Y-yr@N!%3t9x*gX?^wtQEWn!_k8Bshke4!&r2fyaW*=4_fO%FfrobR2~po7rF&U za%$KX?jBwMb@*|lCbVT$q#)8QG6Ig_<(QgpM}AZ`u8gW|Ss7iKRLQAKujJt&tQ1#f zRVO6Sx}*;V>rj&k=Hj2en)t$%`TKMr_75sYmT6lMOP?#Tj99kOc91>N0tXK+0Up=VvRy4*eEXyq;VS?TPC-lhD zE@)+xBTv|%|8gf%}et^RwKhBVEykrhSsScqv zcD1>KIn(q3y3j;WqdS5dEjDpX@uu47_CABH>uB5w$xvQS8zvci28JODT`E`gdoe-J z*Y^YqkEJK*e(Fwv>^cT_)DCDQ^y+fZH4vwLg?6yp+MDo1Ptroy|5Ly8rkbL>)V!?aMK;4A8&rSN|p+1%D_SDz5B=F7ipTtX26NIxa5yN!pI|>f5}p_C1Ig|z z9-A;x>4dd2_F}&BXK*vB3HA#{3d#j~K~p3M1L;vvppQYp#rn>A$a)L1YC8T6R||q#xq77 zi!Q)uF%>g&K3Ez<;BmesiIbE`R!e?L9oUIn{p-ufMC)HJ9yw^t?vynUGxNNxEm@bd zzR8Gas`tn$aV}gS+alW|+Xq7PD|vG{9jbG-d^l)x_Z0PUnjEOuuDGUnscfW7S9+D@ z%C1P`u2t^EV<+B2`*9k50D3c5Wmkn&W8u+#q^<@gjzv9Cy$T!u&l9Z$9?F*?CKmTp63!Aa7mXyS!z&-*Ovfe-C~_=6kyTu&=(mm3@Te zu0>}pu!WFCJYgAaBZ6Yv%XZST8neSta0YH$w_)PvSZi6nV$;{wG~VzSySRS3Luga1 zri&PZ=9l;i$1QKHL#=BpZ_Ix{2zhS<0;_KG29k$o9|8lkWt`Dg3 z>#y+d1&qk!@8K8v=KJD(^|7UV<<0k8^2`LYpshRGwFzvdbmw}Cm5uC;JBNjXQ8j~A6+$VZ*6tWT#Zrv zQ@uv*g-6b%Jg785fe6X3$+g&7s6hM_NRLZPz&;eCnUVlfyttzkLW9M zQ-4vHQC*3j6UQaSC9F?S;M&wKzAjW~4&@xBKP5f(dTbf_Ik_L150>2-FqxImls}Ui zkr<>*sKZo}o-~_W8;Oj;@%n z1-9J@!UVWL))Vc7sf1b}+`S;QA*i8CPXlH84ICWZ-~>5}UndLG^FHX$D)Mfq&r6XW z91zzgZf(3Ees@AnVzd9x4Xy;?`cKM|R3kQT;j|aDPPE_je)P8tFJl|CG5Q`Cuo|-# zu^pV+oc-KUyZ}F%e=dEppfbZCY%9E+IU3Hw)5yus5I>esB^F5#n=PWGwPaCNf_#KZ zgm%t*x+%JExR)Z0l-UHCw>8 z$==9bXy4{&;fOd6I%AyeoI71LTn5(+*L%0gJ>UJ&V}Kv&3$*8{NGhcJhWf5Td+v(q zISQVuEzq8W!8Mqk-PsGXKVXVlobwY?)r8!uP@W6&7Un(3r=p8vUjCf|Dk#s}3;q=9 zpl{wmUa(Wq-r^=mvrR9)iRrSkWLe40(pGTo&MZAw`m2mx)~;-2*)0(2MCIMk=l1}7 zx{Qi22pJc_lM}-6JSTKC^eP+`7QwSIGQ1&t9d3=Zh%@p}WKv`$bmm);FO^L&84D_P zm7dD{%5Y`R%CVL6Dpyu+sN7z;zw$)o*~;^k=PJ)so~}GudAM?C<+{oxm9r~HR<^6O zW4h*5GArZp6}nYMD)TC}l~l~u&oM_YhN7Jvp@rXvcZ5ek1^yA59+Fi&sVIgA`eYfU zbZp7S;@rY_g=F*%t}J|1xC>mq$tA`ze?@G_2hBMj&g?#LV61^seg|6iC8)_4;5OL> zO}Q9u=f;0M8?(YUBF!U`hzFhxQ-mLB6aE4%dIwx3^KepF9$pQty*Bx0j4VGa!M5LRKdgo9n|M@`Tyoe@)Ps!!vWnjPn7!;SKt-7 zlW?6bK^q}C=UL7w_;ncBkF)1w=VZqR9|mV(qu3(wD6lgyI*=XUK!bh;4SK4-%+K__ z_wDeF1c@{W6uWKSQQktYz}wXG+H)2v^Z@w$QlLQ}bx(!skBeUK%^)`ETy6i-I7T>q zP#+#+f*#^1fJeU-bcmIp*>P-t(Cs|~ujLr)J?k24FRKw-y~pUHcVHvB*WBMM#7=ai zi3vwWE;fr*AV9AMclD!bC>W;;ExkcJT?s{~3nu6v$f6uHErjQz(3A^uM;e%RkBwKc z5B$fNZmbOw#}ZIDEC!yTx&E>Kh<+Qs(j=r+oapp!t$V3EqdTbE4lndjU4J}#=q$Q; zT}xeCu#&g_fn&S@B6`E;tRt;7gRtdWyrv~(f zEY1b?AGQVi(35Zo z+9!HrdNl1JoE#l!J!$U61?|-cY)X&tuRC3~xM0dj7ghdIX5`^&sK;#$_S3;RZeuJ(p3V8&jBCb1n z3qK@qs01|d9YO>4@RVn%-qg>un)Fh}e5MYb;$k?9CqWq=fJZ;DLoOp3<6!h>>|#7d zKWzzfJv=GPa9{1m+{UWQQhacMR@U!t}L*B*D6jLNE%~3g2Qo zO3f@lj`XUirKnW23&~RzeDk*?ZQx~&$0n5`iI&upRF^c7kno6>a3mci`_W{gmX4D? z%MxQ&o{H4#I~hU7#Dg!>!^Iz#RmdXXWc-VK>|=RtxSE6Vf%5rC{2i8`gNOMRI_*Co z`&U!Z3cNWzx;h6a_CRIUD9f;|Uk?7l7gcptGi-4RvCZj-hK)X;n@v~Ef!2IWT^H_V zr+ScjJ$gdlX$TsJW&lpMXS5BqZg`w8=%V1%Sf;zLZ?0G9J7fEF(?CEXV!UCy;fXOG z8{gi>ImiU2L$g{455!b3;P}RC#$%>jb9c)aYrIuz)mVpFKY(;K7R@Cj?0hde5eCJ$^1JxQ*!3# z8ZjXYu@AhN`z4QqDS0?Hgavu2dE&g4`EmLBd})4J{`CUwngp)+XkOre=m4`n|eyy5k0xsluYR`mx5!cEs5~!edtgl2@MH zZvAcjX-~6{vFIO9mM54FeJ9@=IhMPA2x-TJT9WBHA2VFwG} z{1qB{rfDUv`nQlBZ*A!I_o^R4ZrrQAr=6?yX`Vu_XaUchR<&M5hZd2qxS-(47t0f5 z(~%UJoW+&yl(s=v;bZYAu>j=z0^~Z1;F)y@8(@k)gwwx3@I){cslsjP6}W2E<=^8U zM}z7-@HZ2AA9;5$M<0bddJ(p0Vf3zi=kDMR@1O)Bl5)BS=sFJ3|k|nZGuC zXEV}V;0Ikvos$}b3VkGHaEdbdNAfycpGaUrkAw<+k=hOpu?>mNgeM7I6Pm?uMaH;h z-26BN5K>>#SSSOXNhzRdOd*=V-Y}xMup;_*^qA-YG5N$cqU?bgJwiHNd1^PMS@6f%ITk^4i!spl^JmL@2l8^5b5>yAhqRKe3A1g1RNC zESZ#i1g)pC3Ll~=o=hjK4htbw!t0NSTMhC+N8FHI0F{gcc9CtyW=W&y93eEO?Fke z_JGQm531O2@WqySexs#(uJ;va&y#(R{2YH@|JeXF&@*r(*buz3`N1#Qw(JGj?{d^R zvymCpVz#;imu!!`oq1pW`ZhM?e=JCcmv#rHX9K*ouZzT>4b=ot4dept;($` zu8LH3sA^vot}4T~gH`&f^s1z)R+T?0Z(yF@UAYbO^ytdZl}|Beufbg1vC?13jQogP zifoTegr}n}CfZfuve0kL^4^L+6~XfEWeZE+l(sCsRy3)oMp0$47~OxKVns=8>7DYO zp@wibSAj(LKc|Q^{0r{uH~5GOec23uNHQkmZQ#?{k$$Yilzb&pA8uz|L>Xa3qQXD% z*~gKF90R4jOL#E;%uDfYXSe}Q5yL}dwShr_Am}W0{kQyEK!f)ANxr9;phx&@zE<96=<;6R?dVl_W4(1ePdwW_ z13eaK(9hl5-9z0@csL&5j?x>axz=d*-h;hJu9NEc>^SdO;~3_;97djSZ4TxHX(r_V9YXYur#r( zN3OgDrtF30!Db^=iw|hH`p>l0G|M!~)CEq&SW|VV7`u^|w-{56bqtr0@a_eEtHMA) z^VMtpE&WdY1br9ypzYY=wtx!#Tz6i#L$?8Lj^(=X$P|WjeqAPJ==!?a+PCN^Tm(<_ zO5BZ0kt>vHO-(4Tsq%<&g>p7_(7luqWg%J%6-pL}(Q)8KuT_*o zhpq)zbOD-d|3wei?yL;yVI&7lQh_uP`N5x{=2l4eNH1WnW=P&j-biamt4p4Nad#Gk zuse9}lPp1gYZjgZB)L$gy^|R_OcBV}*K_6y!VGm{(z^ywP z8cr^n3qFDy(VNL(yaH`?FDPsY^aqS;3=BV#xJ%#p|wuUwd ztf)bt+VS9sJ_NtS67ZrZsdv$$J26$6@(TB+{ZM#(DRnVJA50zvFZ6??X-OH>L)0p& zn%WX~C|SbygtG~i@yF1u(kgBrWoc|}avky_%FOs}iG;-K)P8V%d`g~_lABtU)}0nl z8$hoPRrxe{Rx{w>tBK$D7)xnRvVf|t~XMJTSu~lpt zoX0+PXK?!h>>PM3masQL&Dzf12t{iWdl#oVhstTdz5{>DZ%%#moL^=CC5Q_ zQtdr1nJeY$;neKSUB$hIAB!R)xqDb1n!t^>~hXP z?i8Mbw-)okGu|J5Yd(!{;E#lJV~8MHurZ@R*jl(YvjNB}{WBkntRRN(5q%Ns#nZ)? z&<0o}*(3QTttNRbxhJ_UIWE~CStZ$pSJ^|!AG{KWNYBI1Y=~1FQmn=aV5BG@hx3)5cmz7E7xoAgcduifztWXHOifi9Gwbz>RaB? zzMbeIdl+mKxEFXHlm-U{`{F(;f>XIucC#FJ?yLM3`HuXCd9U-6@?H7D{FZ1UYljCv zpZK@WcQ!hGmm+CYy`V`!T0stI{{P^)9^25E!e#|O3vL$7D=01S7dZ33<_EAHj>~(I zTNb?L-{gDfTkT!#Ugn(VD6k*3FLYG7$~w}s3rOlhWb zmZLVl^^Wj`

A@K5PFS&~R;brj?C#cUcXxNU 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 z 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

@9E#OlPNaXY$7I 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