From c2ef44c23ba4a73f2544eef63a8026ed6d2ed859 Mon Sep 17 00:00:00 2001 From: Quynh Anh <90673616+quingzz@users.noreply.github.com> Date: Fri, 27 Mar 2026 13:25:16 +0700 Subject: [PATCH 1/3] add examples for compare_models, clean up doc --- R/compare_models.R | 37 +++++++++++------ R/plots.R | 12 +++--- R/to_titer.R | 12 +++--- R/utils.R | 5 +-- docs/articles/model_selection.html | 3 +- docs/articles/model_selection.md | 3 +- docs/llms.txt | 4 +- docs/reference/compare_models-1.png | Bin 0 -> 138017 bytes docs/reference/compare_models-2.png | Bin 0 -> 140695 bytes docs/reference/compare_models-3.png | Bin 0 -> 127015 bytes docs/reference/compare_models.html | 60 ++++++++++++++++++++------- docs/reference/compare_models.md | 59 +++++++++++++++++++++----- docs/reference/est_foi.html | 4 +- docs/reference/est_foi.md | 4 +- docs/reference/index.html | 4 +- docs/reference/index.md | 4 +- docs/reference/plot_titer_qc.html | 8 ++-- docs/reference/plot_titer_qc.md | 8 ++-- docs/reference/set_plot_style.html | 12 +++--- docs/reference/set_plot_style.md | 12 +++--- docs/reference/standardize_data.html | 8 ++-- docs/reference/standardize_data.md | 5 ++- docs/search.json | 2 +- man/compare_models.Rd | 32 ++++++++++---- man/est_foi.Rd | 4 +- man/plot_titer_qc.Rd | 8 ++-- man/set_plot_style.Rd | 12 +++--- man/standardize_data.Rd | 4 +- vignettes/model_selection.Rmd | 1 - 29 files changed, 213 insertions(+), 114 deletions(-) create mode 100644 docs/reference/compare_models-1.png create mode 100644 docs/reference/compare_models-2.png create mode 100644 docs/reference/compare_models-3.png diff --git a/R/compare_models.R b/R/compare_models.R index fb6100c..1c1ec16 100644 --- a/R/compare_models.R +++ b/R/compare_models.R @@ -1,4 +1,4 @@ -#' Compare models +#' Generate table of metrics for model comparison #' #' @param data input data to fit into the models #' @param method method to compare models. Can be one of the built-in methods or a function to compute the returned metrics (see Details). @@ -6,22 +6,39 @@ #' #' #' @return -#' a data.frame of 4 columns +#' a data.frame with the following columns #' \item{label}{name or index of the model} #' \item{type}{model type of the given model (a serosv model name)} -#' \item{AIC}{AIC value for the model (lower value indicates better fit)} -#' \item{BIC}{BIC value for the model (lower value indicates better fit)} +#' \item{metrics columns}{the columns for metrics of comparison, the number of which depends on the function that generate these metrics} #' #' @details #' Built-in comparison methods include: -#' - computing AIC and BIC, which returns AIC, BIC values of the model if available -#' - cross validation, which returns MSE and logloss (negative ) +#' \itemize{ +#' \item{computing AIC and BIC, which returns AIC, BIC values of the model if available} +#' \item{cross validation (perform k-fold validation), which returns MSE and logloss (negative log Binomial likelihood) +#' for aggregated data, or AUC and logloss (negative log Bernoulli likelihood) +#' for linelisting data} +#' } #' #' @importFrom magrittr %>% #' @importFrom purrr imap_dfr as_mapper #' @importFrom stringr str_detect #' @importFrom assertthat assert_that #' +#' @examples +#' comparison_table <- suppressWarnings( +#' compare_models( +#' data = hav_bg_1964, +#' method = "CV", +#' polynomial_mod = ~polynomial_model(.x, k=1), +#' penalized_spline = penalized_spline_model, +#' farrington = ~farrington_model(.x, start=list(alpha=0.3,beta=0.1,gamma=0.03)) +#' ) +#' ) +#' # view table of metrics +#' comparison_table +#' # view the model fitted with the whole dataset +#' comparison_table$plots #' @export compare_models <- function(data, method="AIC/BIC",...){ list(...) %>% @@ -118,15 +135,11 @@ cv <- function(dat, mod_func, k=4){ }else{ # if data is linelisting - # make sure pred is slightly higher than 0 and lower than 1 to avoid log(0) - eps <- .Machine$double.eps # smallest positive floating point number ~ 2.2e-16 - pred <- pmax(eps, pmin(1 - eps, pred)) - # compute logloss (negative bernoulli loglikelihood) - curr_metric$logloss <- -sum(test_dat$status*log(pred) + (1 - test_dat$status)*log(1-pred), + curr_metric$logloss <- -sum(dbinom(test_dat$status, 1, prob=pred, log=TRUE), na.rm = TRUE) # and estimate auc - curr_metric$auc <- as.numeric(pROC::auc(test_dat$status, pred)) + curr_metric$auc <- as.numeric(pROC::auc(test_dat$status, pred, quiet=TRUE)) } curr_metric diff --git a/R/plots.R b/R/plots.R index b287811..fce1373 100644 --- a/R/plots.R +++ b/R/plots.R @@ -1,11 +1,11 @@ #' Helper to adjust styling of a plot #' -#' @param sero - color for seroprevalence line -#' @param ci - color for confidence interval -#' @param foi - color for force of infection line -#' @param sero_line - linetype for seroprevalence line -#' @param foi_line - linetype for force of infection line -#' @param xlabel - x label +#' @param sero color for seroprevalence line +#' @param ci color for confidence interval +#' @param foi color for force of infection line +#' @param sero_line linetype for seroprevalence line +#' @param foi_line linetype for force of infection line +#' @param xlabel x label #' #' @return list of updated aesthetic values #' @export diff --git a/R/to_titer.R b/R/to_titer.R index 5e98220..8c2fecf 100644 --- a/R/to_titer.R +++ b/R/to_titer.R @@ -81,7 +81,9 @@ to_titer <- function(df, model="4PL", positive_threshold=NULL, ci = .95, out } -#' Preprocess data +#' Standardize raw serological test data for titer conversion +#' +#' Validate and prepare raw serological test results for use with `to_titer()` #' #' @param df data.frame with columns for plate id, sample id, result, dilution factor, and (optionally) negative controls #' @param plate_id_col name of the column storing plates id @@ -339,10 +341,10 @@ add_thresholds <- function(dilution_factors, positive_threshold = 0.1, #' The figure below demonstrates the interpretation of the plot. #' \figure{interpret_titer_qc.png}{options: width="70\%"} #' -#' @param x - output of `to_titer()` -#' @param n_plates - maximum number of plates to plot -#' @param n_samples - maximum number of samples per plate to plot -#' @param n_dilutions - number of dilutions used for testing +#' @param x output of `to_titer()` +#' @param n_plates maximum number of plates to plot +#' @param n_samples maximum number of samples per plate to plot +#' @param n_dilutions number of dilutions used for testing #' #' @importFrom magrittr %>% #' @importFrom purrr walk diff --git a/R/utils.R b/R/utils.R index af63e99..fc5d4b0 100644 --- a/R/utils.R +++ b/R/utils.R @@ -1,8 +1,8 @@ #' Estimate force of infection #' -#' @param t - time (in this case age) vector -#' @param sp - seroprevalence vector +#' @param t time (in this case age) vector +#' @param sp seroprevalence vector #' #' @importFrom stats approx #' @@ -55,7 +55,6 @@ pava<- function(pos=pos,tot=rep(1,length(pos))) return(list(pai1=pai1,pai2=pai2)) } -# TODO: update aggregate func here to be "pipe"-able #' Aggregate data #' #' Generate a dataframe with `t`, `pos` and `tot` columns from diff --git a/docs/articles/model_selection.html b/docs/articles/model_selection.html index 1f1e562..74fc670 100644 --- a/docs/articles/model_selection.html +++ b/docs/articles/model_selection.html @@ -167,7 +167,7 @@
## <chr> <dbl> <dbl> <chr> <list> <list>
## 1 griffith 277. 0.594 polynomial_model <plynml_m> <gg>
## 2 penalized_spline 197. 0.601 penalized_spline_model <pnlzd_s_> <gg>
-## 3 farrington 356. 0.600 farrington_model <frrngtn_> <gg>
+## 3 farrington 185. 0.600 farrington_model <frrngtn_> <gg>
## 4 local_polynomial 237. 0.588 lp_model <lp_model> <gg>
With aggregated data
@@ -191,7 +191,6 @@Generate models comparison
local_polynomial = lp_model ) %>% suppressWarnings() - aic_bic_out
## # A tibble: 4 × 8
## label type AIC BIC logLik df mod_out plots
diff --git a/docs/articles/model_selection.md b/docs/articles/model_selection.md
index 3345dc1..37bde67 100644
--- a/docs/articles/model_selection.md
+++ b/docs/articles/model_selection.md
@@ -91,7 +91,7 @@ cv_out
##
## 1 griffith 277. 0.594 polynomial_model
## 2 penalized_spline 197. 0.601 penalized_spline_model
- ## 3 farrington 356. 0.600 farrington_model
+ ## 3 farrington 185. 0.600 farrington_model
## 4 local_polynomial 237. 0.588 lp_model
With aggregated data
@@ -117,7 +117,6 @@ cv_out <- compare_models(
local_polynomial = lp_model
) %>% suppressWarnings()
-
aic_bic_out
```
diff --git a/docs/llms.txt b/docs/llms.txt
index be37d74..ef20cea 100644
--- a/docs/llms.txt
+++ b/docs/llms.txt
@@ -297,9 +297,9 @@ parvob19 |>
- [`transform_data()`](https://oucru-modelling.github.io/serosv/reference/transform_data.md)
: Aggregate data
- [`standardize_data()`](https://oucru-modelling.github.io/serosv/reference/standardize_data.md)
- : Preprocess data
+ : Standardize raw serological test data for titer conversion
- [`compare_models()`](https://oucru-modelling.github.io/serosv/reference/compare_models.md)
- : Compare models
+ : Generate table of metrics for model comparison
- [`compute_ci(`*``*`)`](https://oucru-modelling.github.io/serosv/reference/compute_ci.default.md)
: Compute confidence interval for a model of serosv
- [`compute_ci(`*``*`)`](https://oucru-modelling.github.io/serosv/reference/compute_ci.fp_model.md)
diff --git a/docs/reference/compare_models-1.png b/docs/reference/compare_models-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..22a2b2137b6aa7a3ec9f6f8a210dd2ab9f0b1876
GIT binary patch
literal 138017
zcmce;cRbc@A3uDmNK$E064H`vDoR$el8}@wl93&f9i@=bG$O0)S!Q-trBZhGNJ2tL
z_VYfvuIqmNp6Bo1>*;k}ch_B~^ZcI2_j7zc?{$2ARg~q{(J|9eD3o;y@-k`^3bhl3
zveJ;227l82IA$Eb(HNeRlfm!!HG87a1HY}Yk=MLRq3pa({-p{Um@uYL*eMD!QtD0-
zKRT~n*wQk8c-$p~qsecb)Jbo@;!2s5s#^~J){ARBq@na9YbJxo{4Vt&S#LjInyoIY
ztGo^|N}jyMc{sQ$_x=2BzR7lKMn+A|#~o24zw9m#z7G=;GP%}ja^@bb7rW=3|NWv5
zRPUx{=lJheY+VI~Z{vTz?%go-4Ef(n-$)9Sos#+Q*QMxfJ$wKAF%Cf$`teQw{n*Cs
zoHS0p|NA-mEh~%u`zaY28b2z%|NR)p%BufMAGhvdQj*!zW$IO{5(h+G|Jc~J=Ui!-
zvcIgaSL(i4Ie9lApy`?|y`sBbA@y3uJ2kJICi<9;Yq-y66t&RBzSha0d$Eu{SyZRb
z7)AZ}TB-fBO4dq7$?bbEAi6<{p|N?ut{~L9+Vbt&x11WO+bCs~m8*PxeKo%&Ssry$
zJAUR}n2J+&bUHW
zR(6he#s8Ljh-zh#I(w1xG~KBX-ditU3Z@btJ#Ut`kQS;3!iO8Y8)b{2jvx_?~S;Kz&KKgDor=W^qXKfN$MWzki%Jt-+kYv(D3RUP@ZE6*k<-+J)ifm6}06Fxny
zSw_LN0|i`#=^2sfKh30`sdL#5Hy)thF1YGkvigmJ0?~INd_m;eTGDlovbku*sPugQ
z9JfvI5-qN3-NAzgMUEZo_gJ21>+9>w{R_ZBHtgNj0*C*qZYo9#I&lgG6
zD`sA|hf44H})r^Cy%?{xUH+%wf4xI3@o
zPd{1pTrJFUHi-2&S7>Oc>HC@wA5P1kISWYQ<1%-_|y1Iwr51vbYIF7qw5wzG_u{uUIPWFplp4xN8H7yzXEyFtY*GKIg
z&J2ExJQ!bU)9a-%c<)|eVWCqHtGH{ZWgEV=faN2ubHed!H*8>H*}3zom;`qr$_(jY>4LGBX(_
zab@}V7z1VVB(?XCyT4###~Nj@(Z$g;6kCs{p-MZ$WO6hq+7WAPJ0KTmbY
z=@ySoPkec#8+j%{o$J;>ZHS4B`_S^`_o2Hux6lO)Ci>THu$<6T8UJ_B-P)-=exK7#
z!y-&+Uv9lB*Q4OKmsB{nn42{;JkO)AKdf7AnVz2BntAa=?tmKSmQenSD`?iUBxX&2
z$}+0?^!!wa#eSz_F2A|wriS8PHa|*kIk;!fs_BsyIVY$5>Z#pwftAHBGd;t@eruU{
zO_i9oZoPH+L%39u`sIS-92_gwuV0_H3$lB`_Dd#IAnX9NZZ2V2y3VE@XT
zJZYwM_0RalY^%eSS5|Iz#idmjrbR9oOMIp)eXkms<2aPUcy4
z3O8SuoS7Dn(@4|uH4gOit4}tb_&wTQ<+kt4)70G4Ei+0_=Z0Gndt8w8{0tP)XL^u&m!X4+IoTW
zk>a!G&wGa&61E*Oe;De%ytMddxu}K&%
z&P`J&`uh42M;#Og2kT#&oRN{0jdh#9Qum!z{!B~_O&R)ZH*Va(J}Lhg
zd8}$Oz}I(UEiL6tlz0{HhtSUbJUr_@gdf^mnA7&anNB)hB
z(j~19lQ+S;{tQNWyx`9Jx04()tKT!xR`}{wU%B^cESWccLQ#groc=7tZF?sVY50Tr%C=z=wEIajLe1;gl{9I^f=7<4{EFUF+qY2O^V
z*~hN^yfd&g-n+6nRdXe!^`*%MS65f@!Xi!Et5;W2rbgSDVq#*@*YJ@lMewc@!r#JzgQJ_Dt8KPyIPN?puXH}k@MLd)O%QVfR^yz~mCKj+
z;RYvJo*!K?{QWy;WlfDqSRJOKpu>g_wG8W$Th@B=+xAs*7lu7Oc8#~eHcIUJedDLe
zgTG3b7x@}~qq*K`-^s!v{4_;6hQWF2`>y!3b152+jT;7X8U~JUUDat{YuQ~=99rYO
zdc%v;JD8XfG?wn(fAFAc^zq}z(u#_Tk7rS1F(+=XH*A|6tTR!3(CNZsRBY$q@Zr}S
zI_dkT$F-Ht7duaLH=qLKl=^@EOwZDu57==;u(Q8zXY4K`rZJSCxzaJqHerFtTeofn
zM?^#%2;d!YbDSRj6mz04_t!wJiA!Me*a*!!=1XnqweyK1GsWWKg)dSjy~fS*{ijAN
zeAdl3wNZA}JrqqZi5h=Pjg{_^wpug&d9
zz9Fki?Ns~lK%7A40W9T%w>PmA{zE}%y}7zA)8d8B&$U)lXi;LHoLHLXvr*?3d4mJu
z!*dHlk9j1-3k6w)QcRj(7}r*g&Wv@}{bm{KEZiTzI8np)QYkKj!iN=_{BMP9@AybZ
zU!VNOf9O!tTsN*KqvhAWJ$vqS9vf*+^ViBTAIPtJrtqM0pdsOmf9;U2Bvn~e6?Iec
zx!S`~n9JXC^R*_%$0hG^oP5!tk!`A)GflOU#`JxHjPIsC6x&it?kH9XgO7?La`b4d
zlsCl{JT(9R$fBkwX$DwKBxZK@sR9CKySOgup`1)oYr}6J^@55GZ-n==WJs==J;Mz|e
zTQ{^j+z8#Vmk(@1eJ~p?g(>fQP~P6Ituxk9a5Z=K+km+H&}1Fyv+u(XopP-MRNCL3
z{rU6fKD%n$?&*L!uh+}}?#(;fdU#gV?-yzKt?#&b`@n7V7r$CjYT5cjmTl@f8aq#@
z9HIzWv}UqQ9?;IUh&S-#%{FgR>_42OzG!*b+B!oZO@?D*h)`hX@ZjKn-YYxqpdcdi
zQ|I=wei|ivjVF;yBbAd^?&QgsYhzvJH{$uqo0<-_kE$i9^O!yn`0hGXzt^?^8%>lo
z!*%x87a9(U+va8Jo0}$!TxVaj9oB7`kGRVwp{KJn5TgG=>FP)`k3i=4zP{MQx#k+b
z?AS`DW(R9bLek$1*sWT(jWV%AfzB@Wz!z564)KJMZD;)6P{&(Wp^YR_+rY
z>nh$HlA&9;j~9SMKc)YOS-s3^lbDaq%^D-w-@bi|a=6=`XYF5`tbgZae@_oPZ;JZ_
zjlIi1H?yzGKh9%$sqa-r2A|?1u3PJO9wktfcEg62S?+O+@{a-mSy@@tmK#{b7(!As
z(vq75Mw(I*&K#U-GaR#wG-pLC;t5TV^Hoz{k=JD2SDfsRD_7AC>epXYJqj-CQ`i~
zj0|LIZj}k&z48)2U^&6WZcHbxl$V#Aj|hfwpPw)FSk}|gSZ83iS%%8<-J^qp!%l5z
z*q@H3nb)Rv`wlVqK$jdQ@S4A|9PsOft@V2+Mn&t#WM(REd47+!j$15#0wXwOOzTV*S
zWg4IZy(ez%*=F8==2R5rr((Y7vVQGb>8Krlb{t60vur9<8nQj!wLB6{EWR33rm`lYN6!;Mk{?;hC#
zF^D}nkTI=zNd9rBNPe>2j^MX}K+_t7!2+M2ze=xl&PcQEulB7iU7Aa2%U!*JmHohh
zH57v8l*-L?Lk3SpdAPeen(fA)1~4Cby+L9j*x06}x|#-bK;+s_7JU1p+nda9*R81d
z_vUSn^_ut)xO7&%ki+`Ri<1!-G8Y79*>bY=>#DDK06ti
zN|V9e_v9P*IjdSWJ>1!3HR270h9<4p+wYTulrFb|A+
z%5MCbA1l2V9`1*&Xw+BfYhJz?2vnC*=)8JOuIuEt(}6=Ew#qAu1jCe4(x;Nk69kRl
zB~ts^YmVidBdyx^bN%fr46CTnw>IiyIgQgNKk~Rmc(}VPFC8x`F0Pu!<@aG5eD5xm
z00rP!-*Qj6#YlGtv-m%i#krft=|Fc9O=P-G!Tp3H=ED}8yeZ0JalY)dq93{RRSubc
zlGJHFOq+02rtCzleM4)Y}7`TUc42CM=+3e~y+~iT+8oflYjieyPh$dh2tE
zQVf_=Iwj82=7B?{G9$W{D`b-&Ts~ygal!IQ`bcqZbr2gLuXT6HP6`7vGgt1no%{xp
z@n!uX(HWC2TgkdSw+Qh6QGU_2F}<|ks+N|mY1&6}EMFBlzA8$1^{nlYXraOr3OhTy
zq)APhY8*|;(%cnWUHuBLZ0m0H-|pq55Tk293$6|h7ttqgmNx4f89B%cMw(*T;85J6
zQRp~YIRHAn3+3*yI34mQd|0Gd|9;6w2?^jI-&);Q_HPB;oc)KFx&F`fZOM)-);aqM
zR~7?dqi-(CV=2r?uXN$pTBXycF9KfX#;^2Ljy&pHyR@_`kbqK9*`U3$HmYi!2B=nQtQ^NDF+S#8p1!H;^a2iYJ&pz^!0J11LNph
z%G#V8tc$uG5)x9~zs26s(b2RaJ|JJ*po|i*+57E)9X*SPicZu~2lIILINpp%-mxU!
zq}+Ylc~+6tjH$T9+N}0Ge}DfAU6$>+#!r4PEzScHQjMD_DY{WR@o;lDu1Gx_uT-9G
z)==pZr_MFeSGD%;b|D&+*@|dZiw0^B508Mf6^|76`mEo{rTpV-Pfv7n)s9bY#dYhN
zE;7poviQDvBTtDM&Knjf*S{}bCsCT%HHqzIZZRDe8hQt-mAL5iN1r7q$lHSqQ8Dp3Ed_5?7EOPBU&q+Ymzo9uU^
z07_V5&bw97j23I@=_?5fijHQVSZnU;Du&P6b?#PiNIgIYd
z9DjJqaJ$G+e{_$nbp@f_pZM?k~alWXyA!;$;R7fXa7v>hR!naXTpfqiz3A^
zKHPNB>H76@h+p8~(gk({m2NA$ja`4K@afr_jU&=9SkcD=k`PdB@S!kfogZokT~o?=CjAF*FKOuvyjN0EsuW}7(R$XD6E0}1n0tLVxoa?2uOL4^aX`D+
z*&!|cM*3JBZ}-gHpC9jrX2BO2(>|t{HN?NhKoKeycl>c7XTg4AHik!hE#1<;3R(~izux}-2bQdx_bHVP
zH>Di(J1
zhiYmqxVnGOCSQ@>N9tTnZ~0e&!qn71KlSqT%S&%J;f@_{7k-sK(-zKu(W`9^uXng_
zZ8bEqFj!uHgif*6(J?ag-%&S*)2YXIE^}(wb+@
z_VMX)e}EpK%e9O1Gd0j=$u86xU}9wS0pePV3$DgrOh60_eextuuh`kf!J(?`#!A(f
zmp|~?AJ$g}Na5z@rceOr%JE8xgKTHdo)x(8G(4OR{~_iyPCn;GV;WH6n!HK`^(qwMDmY&|E5b)IAv0?d9c#nQ|0j5}km6K%(Z$
zeXp*K1#a9e8;!nW_zK_gF7qKe45@lfy3%Yg-c#<(U9dF%4>Ohd>p4(*0Ch~i
zyx8k`CT$osu&6nEX=~3Rb-G(C_9{MeM8TC7hvx89u;lb}-zg_|P
z3AE?630p((ZBrGVLI{m|<=|Qy{xf0Tv1-GD*=h*c(kCzP2zIuel6IWzIxxDy1Nqw9
zc(ilxmh1j=-CUWiULkkBOR%G=KssW>h{KZRpPdw%0L6=ctG*b>cpF^F5o^
zP}l_oRL`GGkdBtW#}Tafd}01UBX;HquEoY`sETX6*uNLZsH=pAhrh=D;H$fDSmie`
zFW{Rve$lhV69nFSZnq5Aqt~r}&Td7Ihl1|RyK(CtwWKX{x4fpk8lQPw&a_gIWn^Sz
zSaoAM)^pP;Drk|fA)wnVFS(Hd07q>cmMikxdaw`U<|JCu#Asf3EUW^4LBaare9U58
zSL%+33eKJ((_ZSD7cSiKxPni{fI1#>hmH=c8l8DU$omdG<3G;d!z<{2Km{U>Kel1Q
z`2dBbSmx#C%I26isT9~5lU9ZmQczHkS5n%tyo}K?@#Blo&D*#8u`BxABab?~MnhAD
zIOZ0?ObGftsf+(OliB-1YO}1n#Z$HO*5l9nMo^%#;BP>EUR>vrqlv~ezUGT>U|==M
zmlQdXg!8Pst1$pfhR#wX
zAt-)+eu~NdXUFzO2hT61xwjK`uFOoV3ruZWTyB0r
z0kMoiB|OBBI{vtW7mxh7@VBkqf(uCgNvJ3G7Aq=Q*^iOKKTlzJg+1;lrwEB`pW{Qua++r?b}Fj!ex!9QA&
zd@jXD$mC-*v>#GU+F>we1#J6dbc&od0xVQRN+t$lM~R!ZwejEf!A1M8&-@uP2BPn3
zR7FK+=gtJ>NNKd~Xot1U-cyfndV8-lZ%*}v5f%g86^0G^Iq9*9lz%qZcL@uC
z%>1i^>j{%x!1$usyzPT2M6`V8X|5G3S7x~{Is?+3#x0-u@x)ecQ@5w%7(e|5xF6vOww-1z3kuy0rDmux{vw9Kl5i
zMxubqF`xqvZc>#}izNtCo5}fY!?s-_MQd
zxyqU~Yosv5U|9N);2$z$_=)!x+b9
zyWc-Fx%G;+p((DQT+r5zJN@LajiaM1%DT6w#}nPQytQ>3)O{!DAHZooFpkQ)yVX9p#oPh
zZAsq=i_7Lms{rYb_dV#>Pg^
zDt4i}inL;s?+vtJ5;nl*@qvxHXOlwUJg7a(apx`IRb|*QRV@&Iu!y#mm6aI0uW@l;
zgCO%Y_{%KFoDUD4Uyqyuw7J#DCX{?Vu#`~bGP53cgII^-VBlFMQlDc_swS!Jg@C{M
zD~3EpKIsE%&s!L&K#cBD2!?dFHy$Fx-!ktIYn?!mhjOjE*W-)h
zs(5Rrnwy*9L(1Kv+sd$I%PJ$I#T+w{>%aC8>fhL?4$`t3C0l>A)fuyR0X&%OJ4!Sh
zmhVj|Oj>zX0q9N@sK1LBFK!bsT*WHp%gwy-H(`0qUhiVQ^X3!WGD%2euWwT6y;HnMJMQD-^SZr#hr7Ewgr}2_&ECI%
z{|WCrHQcloM8F{P{95|);bu@Uez!UMY|C~=?5A5GF+aOYqXxRS1D6mM1hN5d?=Ilc
z;DtQ&2I4;t7FZGG2sSaXrFTKpxhMbWnZo95i!YnVkO!(Zu(S+#_G}LjZa)w#smapP
zQW51efB&_PKU!}ax1J4a5M)bi0Uq+S6mOFy^sbfgwYo5J3YHih-3?`s7s}Q~T{b
z#dZU9mp?}M;$;*`sHC6Mb&nBb0sgRcL<6ob`mGJ*)(Fw7H23b^qfoFlxb;g|0LtHA
z)udODky%BCG&bWzoAD(>Loethyy`z*>LmbDuOJVn;F5jWRQ^Q{rNKxGQ#(?h&G$6S1Z6R3=9od
zgelSVoIO|v=upqH_k~Q#>h&xX3Yzun+S;|i10Nkk)zSVSIz@TI$+CoQII|h>v&=Fze;K8qP!wDUR8WW?=wd;|hDlA3VLoraRh+$-5X=w|e
zjod->t;646MJh8<>4hozz^dpA(RZh!kQ)x|_9O^#&MP)1KE2A=lm3-!rr&?~0CtIm
z^Mbfu_V(=>9<6LiU{sY{i!XJ&3B0Cf^WYc;qD4ka-=h2SZF*_Zg6G)}E66LaWAN{zR
z2K}M3LI7l?DDj;j5S+TNgk^(R10a%AeEi5;JB9HFO_<0a(1)ohSkCIlJlZ0c<7npS
z$KMUup*mJeEH4N_8rWN6g_{r5^z7L)EVQO;XJg|QAhzltiKWCDK1;N8S_p{%QX83=
zR)Yp0|I%A0vAl}1<$&5M^1^5-Zxu+~N@*vGi;J7reeT=SqlHXBUk7^c5Fyog^i;Y4he@gm};cF3-BxZ|R{Hr%vtY=%}>4a{Bb?
zEJS#K%{52t62Cbt{IN~d%2A|mrixl>K7i=USG$6?NhOYZW%c!&01&o`yNV1qCV7L8
z?8drYzI+*%Acq~I0;Z888N*H+DrB-A9Xt@2g|s>JocdQ0xZ3Y68Eh+7tWW`-$SEsA
zxCsXCN~>gaKS+8U={ux5KPu?0EJ9k4^y!ZgqARalxss|=un9Y;`4#nV_;r~8ePV8N
z>XuJ@eb-<%-wO@pEV+!r2C6Vb*(P4d>N9yXbM<-4D2PTM`cU7amWaZR5Xw5y4{rUo2>-x9SrrwAg@pwh@nD~*sAQ}>s3-S$X0(ZWAub*Re9ymu_TwJSZ
z6q_p+0SIvM8~6#t&tkHuZ5*leD1SyWO8FsSHX^Px^Rv?%XdJ=4Pbug5(zLgtLmSmU
zQ!p%hg{33+TPxSX7c#G+#ky^5Y(WSc^#f7-EzmOc2ZZJ!Bng@)Ou*gxNa$>92$BJB
zYe~L4ge)V%HZm*{?kp4o6O-FS<-%}C)JS8#B)A>q`WAeK80fTrKz^$P0`_kDi@$EI
zWqMs+zN_|?+xJhquvwxnWEoy~dHHln%V@`&Q=aGdJs{Cck*nY6lQq)(0E*)52Ht6n
zLMhaS;m-&yOC-HvQc9@)xv%@~>|n*kV~8@@O;eSB~&RT?L-H(mJ)V
zrx>M=WZ)eHXoSrhX%A|oO2UV}+QA2Uc<_9BCEy5!LX=+OCi77}86USH^8oXOLQzjv
zUqfWoG_9QRUjwJ$I!gVx4g^NmgvHnZq2Cs*{5hpx5c3ppUvPTJ
zsk#D&D29s{MQv4oEt_WWKnVTcZ&WGO}LVkDe%5;~wZDe7&iz(lO
z(U++9oDPkxQgY|`fy9>BlWPSs+hM*E7*9fR01`xOhEZZHI<6jkrl9*+Ah(HwPg}
zlT_|_96}ib=E}N0d09P8Yb!Qn!_hyRHf{1Mahvah&jEe05}V``-hE;Y_4QY&ShubU
z5>J-vtQ|#CT6)D{i&jqn0I;6^!m*MHAaFYt8V)|e=24VG#fJ|(H7;R5jKEI@0FVd+
zp2*NE&V)L#fC$qc{0lM14=e5AIIa)o1isq(%Hbe5g3Z)-)kdJRmf4#=K8B#meL+|C
z-KMuuJ#jmckMKI`F#Pp^1m5xOgZ)NGAQ6rR_)-40
zMg8kF&l%XZQou6zf`dJQQZE9q6j&8Ie0#tBE`$qIeCQEt)_uwmi4R@?5YPd0lW~jg
z24rk-<;q%E24q?zH)8`?#*2Dwr9uI4=O;|hEbV-NVzkq{SbrmET}VWd>GzmVKM;5Q
z%DFs`<;81+P?AgvxWgeDD;SlCG~ZmgdVMs8zX&Spv4b|lD*A2w6udzNnno5nBa8Rx
z@D)X9v_z5;cm2a&0u$R3VZ(mhs9^a$eckGS@D&&^;Lp*IXCMO*6$kVy8i6I!g&-@v
zEPUWu{rfzNwLxGfMNoALQPV+`if~+MgW--T;pMB=ss{!~RslBM|)9
z5R1;d@@}$&%hJLuV#U(w?^1l@Uv(n;gQR$z{ZPHu;3L+a06#x3>?q|Z@c_?9>
zKUaL@1sZ(R{yPPkG=U2t4@Zk|PSrwDZ*=r~*Cx{c*qh+6>D##TzaL+}IY7EHN
z_(G8In({NuJAbxj?Z$nL7rCf0$gVQzYNSE@tN7OnIPK=(;79Tja-Y=uILsXaIaH7d!H(T6
zEUeCw{tSo_@8_1=5=y@T;=rZv+j?vA#K>dMi9t#3z!!ZmE5j#%QDG)^V>!pQMxN0>eLoKPY
z==x+PkR?SDFyW$=RUp2}MaT-^6I+N3i=sCC6fH$Qo@hcKo<=As!&AoC>I7*+AOc{o
zhD>~weth++RnbU7BS{Q1tO6rZ1;Q2f11VE*!wV&@q7Vea%(_v>hG=dSPwYpdAFWxU
zPhE~mF_5nmA!56N%<#f%d_ay!b_d~OUxQhIRd~s8sHU`|JgNW(h_?Fv$&n3Z31v~(
zD0)RsH@>_yF#_mi4#GFzu=D7%=6A>PvXj~Yezyr-rYE-qXnjwO7!qeacw_9#lmMP5
zs!*vjp*fMJiIHb6L3gP!%SetJbfO_>J4nROpFfFOK@?CdtY|yqQ*@LgAZWMHyE%}D
zNwYfcHn#=(qzvdVc^NVW(Lk$x3>&@J%W7&?gNvTLbm>{OQU0q}hTza))g|Y+9+B;W
zfs~!z9!`1&_?6S-w{;W)09iEFKdD86Q0S2b8=su40KLe>J90Pd-MhCJ9fyditp_gx
zE(80OBTGQ=PYxT`3%YT{%r_F97a=It3xo=?o--@TR^qheeO!yP-ZbB2&%~aQgKO2$VVM0#84}_XT
zS^+3fai9OlwGaM?Va
zs0`;CEG!Ua!unN09GUD`T)>ZzBM?NO0;nfElzcJM^2@e0Im!2XgkRX;M*IRnXTz*5J`kvfdQG1@ND(lEQ$dp
zb*P9f2RUbi&Jx);igQlUux?17fW|+O*)BoBO;G5`-Tn;OOJI?&
zbOAG+k=#1Ot4srn`S8Z*N4C?$=ZG*5t>}p78L3IE|89PM{swW(ff~$?Ug&<9J1Z#!
zP-2qDAjg&Y;>BwK2OIQ%ayklwC^I*=8l$jLYt0xi#M7rw(JUi~CtupPTa}!u-y{eEHE?$OLaC?6)N*8ieWxLwc9!$FW~_;JwJ`J#5uM
zyL$C%`;q2#7{;1QoFS|XdavvcJX1Tco>eS#gzYD^d}zQ=OLx$qJl@{li~84yx9oPE
zTnBI+G7_V=R7-c(^GHTkuovU%T^ys^crIib+$dQaa|JFeHZx=Cxa-G^dLoV;9W5wDsY#>ou@L^i>?GV?&?dplyB_K&Lt*#)+*~aB9l(Rnh$&)AkW@jLU
z!PY_5ybErjr53qX~)i90}?LINuR
z_Qw$ij6;q?^l^Vel)JQn0XxZg!@D9TA>MOy9>^){#KZ(JEDpdVYq2k2K|>E+A@Zd^
zhCk6IiHOgC=}j<8hBuB{LF9+ma|iY(5&rserx*(%32~lF-onDd!Vi3!Wkuc-5*ebl
z;$TCnDH=S;(|NJeVk-**W_>ESY7$U$KCK-WFrWIWv)JVtp~K*MuhB8c-)31sw_`!e
zB>o72pV%eIO_rxm$P-_esC$GZ!}B8QEiPCNnChaj@hzf8;@)mU?hVLc0-$8YAK}Xm
zFcjTq2bf5Uf%c!7lXDU|LSlUoU#{4haHA7wLn_JY2XHLR5H2gIOa+pKO+O3w;f|sg
z)Sxj=#~4^!2ce!g073x~h*3e@KeVtu;0>}Qkdp-*hSeKWH8&HK
znv-*gq@Doi%YcRK3Rtjm=pvk;J&++aaZrc|2{?vThHjRf-2UZW?EsN=K*d%`y;0Ab
ze20pL^-uaN5#WCQTu*VD`o0n3h#v~L97^EMqxMAA42FJ=T7?}f=CMRR=6h>aoEAen
z4s@g*L0IWEh{LXX^2B>bCYBX<;spE?axMjVftchkye6KgY?D
zcokUSFJaYA55&;dASN^QEArTp2b16SkjAo&G?p#l*TUFo0g5X@C&+OT&>0U$J)j(k
z#i`Bcx)_+``oW|Lbs(C%m$!EoK%v;!2^krmK_CLyV6q5#mtGiYgV0I&v*nq56odb-
z8Z0j?O@16vj_lM&nhk7c1qE(&*hrTMu!jt0H)4rd9?R}Iw(`jCWr9Vc@eu70yx$Af
z3A3;%QN&4ah7c`_KmC+^?jV3!ELZ|c?1O#8)WmgasWOQFIlTHPFCsW$6yq?6V0-q^
zi48agk=Qhf@3zvjO~$$aa`(Ni%NJ2c<~)m75S4TtQG8>6{f^b^n4dXzfGous*FGi|
z)8)FS0l2vk6J%4$-e7O^;7sGGQ>Wn1MI-E+2#GJ=9w^!;ENnZ$L(MJ&aJ3+d;Ote!
zosGNU3heACymrP?Oyx95A3&Ci0oB!1wjccVjfO(#H9-_eljOYWgbs(yRE^3ZNOW5c
zYS0skntOr~l|_sUN+wJXot9CI#2$cDl3Rnm@WQf+oT$;r!+m*T{0hFeQCqed0xKf+
z-x+{9GqRK;#od^R9}ZA}IwT?wNtq%x@bO{u`}g$FU&@doW`M?rD??zi4}A5GudftF
z?aQ5UM|Pv(x8l?yW)jH#YB=ZA(0ZUV(;czyx)~I-0jDU4-;H*dye>q*{`)73+m$#v
zRdq&U@g~lRvBO>?mZc7F4N1*?`>+F<4qpk+ueZQ0LHWJWY+=~aqscQ#$l0GvnYr^{
z7GMBUh&Pl6A|(J>7P-wcLf5Lm%=v^AIzkgWQ0%X9RV394BZpi$ZV4;Np+Iq#-uJ*b
zYzE|{YS&J6?cU$88$qtCfVBV-LIz4mz5!5Yor4d6zsTO8xA
z1Scaro|u~#a?H1q)1I)J%HU~Ee*54Z6jV2;=bnbWihH{g{ihPbyUo(Vb?;#Zt!>}A
z7+;If-n)2En5qkJNrnxX7f>-n6N=DvH{zCAm(0>YSJ5(8O+9JoaxwlV@JqClw~GL<0FL638Nwhi++9eZJsZN
z@vCFwgpa
zA$63^i*WeXniwSy4^u<5am+G8+07m10jMaRaIs9?bk3oZzQzt!&Cok8V4B3`CUOV1
z_sTz8{ybECK0Y&Zo1GR#ZRpwB(!xaH2hvXqBoZ+;4$c}g0}q`J7k>L|4q25=U~V{#
z>DT7)3W*I0krVNg+a%n@JkM0Hece-BvVObZp4w5|hMO28!1g@x=Z^D1&j3~Eg;{J)
zwH-Sg*_4%dTL`Uha_QlNygS>;tCel~*x}g0WQTcjblKkCK3*8y`UK7!5a9^oklA}2
zX(#!ZvV>iX_4{eanfB_(<@kR(gm1vgl{xtN@r;S>xFmROZygspNt=;{aXbz~5e|oD$p%s$iw(cq-q$tyE-f=?i#uS^r3siXQ>VCWvY3V3@A3TcT_}MOU
zZW&DwKJXK>_gB!gG2U4znQ+wt2A+U|0m8z__^UoH&5wnOyB&>)j3no+d(P&;%$xV$
z+=jul6S7Vv#5P+PxJ?N2dvaG!D}m`YcnJSb7sm!2)$6F=(=fT5COelBt_sw-SDW#Z7GiRtNE
z$hM;4SK5xA(*@%qC%Tw&TF_kY;L#6vcv`SRRi44|R$qo3+Tjdfe7|c7nVf3AsTn{W
zrs~|eo{nzCxEV_~7#lR%XowD4Y-i6o2V3G$lP1mi2JPcG2eiH{!BzzAk3f81scxhr
z;=ohjMw3%q5Q=h+I?f%($pOgvDH^AZ+8{YlmV=5X*9XNeFnwVueoni@e}QsR<#H82FKg026O3}Q`T%^mt3(*UYgEK`*MlIWfS=~
z@%JhISD%_hbwB>uQ(^^KLwVVlDAv<&`kV9GO@f{qA
z5B+c%k}Riwi5TX#T8)dd^QLXvfHai$X$~i*UH_6EK@_@JPC?U8?6=*H9eh|484>Xw
zdZEzWms)A$WSw_;PiC;bGc-?8oXG&aAhMeI#+Ohjj9mtA>SdgdGxGrET+b$c_sJ9O
zlBLZLIop7{oo9YVD##z4hccALB5Fqt4C72He|>%Z9~A9Xof39hVi^VV$*_nyF%;`X
zjg&-gem8TRlT&`w`}(X~tsm@^L*ejNs*#+c{JIr^j-m2Qexvx}R0DnYG>VLp$n*qi
zXOmbTntAP%uG*z*KuRp%0Z
zIn+A-(?~Qx6y?~r&j%%ofh9rYBWO`XIB^;)o_S%ZFST*&)|1$lNf7ce--Q8lYI8GV
zWt&Y|WlmHSyw!i(SQ89KPv0%AH4An4q+PS
zU3O03DJ{p&{S2R4t$Q?*x4Y`6@KYrMIa{tQN>}XiVi$Ytwp&y*3;{NrCmJ)f
z*HGXtH}09L3fTkC&V|lP`!0aRDaWMB6!Di;8-UxD5`jAb99MI;HNq$KBV`(UB+1Y~j%oKEZYO2aaj#_;jbzZRNUD
zu;JlrGcYXmgaQmBlmyH>4P9l-69V$V1~tFg=V+zfL?Uer4|CvcLX}>HJXB`eoequ+
zL25S_7uSg!+;Wy5=uRpRCRks?VdlE-BhRhb#GHc3J+CPM?jE+!y@&`U+-lgz?-~wMwyPaQPEF*j_M?dE
zcY`yp*YXj~6)~GSyvZ!?{#6}0Y@&%@zxtrTUEpSfFr;HZ9Z5*=+e@+Vg)XFNuwPr;
zOT1=s@(JzmIpW;O7l4-%op(6RaRhjBO(8{=oW2}p@-zmTB@|sRG%__Xm1!Nt*$<}e
zxoH)@U%h&zhHMh_5qT(KXdm0F@c;rKlfy6!PPn>?LF-Aty+_>2f6eB7nFi%6O6Gqa
zL*B}tofgN|YcD=McmDi&vN=%vWOHDCmsuPZy8i1DvVqacm^2%hk65KDPD9fAYA&&1
zyWmZLo2)A>yn7Ug2n+w?EUpRNW;>!6L;!62{j+fF1zrF?PyL4JMc4JgoiHF$m4$Gd
z!Nj&5bF}a&fxczUe8`;md`>VJgml!o=<)m#(#a-fW@^9Aq9FRn;f*kQf^Oj&Z_Qw`x!IE};h9
z^u(*3kBOcGLH)z!TH9j}IlH02^uXre^xLy{uPOu{dM|!OxFZ4C=oOo0!p!735DFHiryCCLW1n5w{?tr2)ND
zhk8kD^1YC!>n;U_bGE?mI2xl2EqN9XJAlG`#YdPATf`Wd2of{E&&4zh5#`q9_m5tb
zjzc}vQ|BGp-dT}+Gx(O&o_)aKr&-9D)_#Gb~+46B2x~|nyNo_wzMxG1^zuWo|Q`5CB
z4oxy9=HAW?c3Eou6Ed?(lWMNAVTUCacP)wqo%P_loBK8U%+dwbX_w_!zg~9S?#vt0*Oy8wjh=C_vdJ!*&pUgak5>9=?({|1<;jNCEV~po-QSaR
z&3TPiw5-Orgu1Vd=j~o{%eC7tFAOE9`WzVAVfQky!!>@xoUZC)Xbi;?dwm5Xl@m@R
zH0+}F;(E}KCs62iL1l5*{`#4a`S#?kNgsBEum1eW#$CAFg>7j0k6quAcR|^mliL+-Hs~chZ_SoCnz7^&MVra2MXBs3GA)x2j9wXyQ
zwq0a(MTIxSI_S44iW{FNsycRic$a(XWelRPf5|=MX8Zijn>R`gTuE#0${P9DzB36g
zNz=Rsr-qsN9ZE<@M&ldJ-cETm4Z+ki3Xx>s8|G-CD`_r;aDHw>F<}2Eb$b|#ezBCp
z(~K~tE85$ipjcQWyi<|VdNqf`Vio4u&tJn2q|6EtSK?KvnwlD-8j9)7W;t2~_CuR!
zys1)}!pCxtzOJdc4WI^%uBl{nWMsaqb_@<0(XBxIo&)g^@Z{NH0_I%~J!}X{h|hJ9
zXPmd*D<~*vKlW>@OA=bR6x82Go1s9Y(uD
zEQ|z$5&4sct0?L)yaf`cJz}sGzh~#?8-U%wB2Pji#DWo+26~n-7D@!-{|jUvORp>s5_GgB`DmAqtlzJi%c{fb3n_{@n*?eq*ew
zAW3z*|HY~Dv%zAD8)9Q(RQXN2U(Bnhv2*729+jT`%m;>BGH5H4r1o5JXX>;4`}Wbi
z{1P$nr)C}Y3|&{vxn@(bqeQOLO4BO+^v2W9i$|f}=*toNqvSbQgCNfk#zfvHoLAvo
zv74Q}C#!>L!;S}U)xR%tu(MMnw{lVka4_T9E}cznuDn0x4FG>5KPI%AGhgM5B~
z_$xGEevU4P3K2KO)3*!`KM_jPPiRnuXAFZ;5qIfmWFR)<;HyX|eJj3dzq=YPH$(((
zU|n+L9M=L1?9HV6`DBM97OlaUyO~JN)6j1VHaj}tXaSGFVJ8N=r|ZIV`gX{p?A<>B
ziAHrglgaTxfbvFT+)0yyor+8E0Xb6|pzGND>=5PHz5ATP7G`F003G(;TgNCIEw};M
z3$pDaB~gW~^@9%fjd^@X{=Zqly(mH;+g>>fz4_m`U${Rf9vkikzv+b7Mn95*h77|5
zBD*IB$Y1k4=)S%)1SlM7(Ks$UGd1;o;@S+LbdAN~hFnW+QWwxlF|w~KAA3~7(1@(9
zVCTE^HvpEy#8E`JHdb#Hl2+%^e-jd}ATLiIVg#LZ6DzAS#0r|2NPRB##4^tS_z4*7Fr;&CUKYn%AgNA)dZ#(fuTgphtezboL|IaNeua1m9-_20Ax^rRH33z
z&s1L$OggY0LRl5ywF1u03FVXFN437ghq$6Ioc`
zNn!waa=Q|d1y-Nn$wI9(4SXJzXq^>M(U)wq&1|mYR4_T>!QwjdZM{J-H?y&2#7A5}
zFeBZLAJO1#!Sl6vJQxw`apeQR;p*u+VL{?^Z+dS9gQGmew0jBZLh_^K!WWY$<4`M{
z+J(G)A4;^{;+z94T6vg!BohTe^BG1b79svq&_!Srcxql+{OO2vzK;+Us$;qdmDyBS
z{Jv2-M9Xg%gflX)KLqhP5ociY)K7QAnt@Bld3bnEg(a&SXeh6m6biy|0Uw{MU_2*e
zRMpo`ZDI5?t*28H6T>qh04L9Zcb$*>Ot)!o{XxEhDdH_CC-kFV)iL-ck+>Lp+Cw=gDyypnaj+eXe%^x|BWR*+g*SG2j@JQBzNfy&VpH#IJ4|T>MMVy11I4xM
z$GzAYSXfejKY|qhsno+mBV9)U%v!U^NdQyhG8jHia@|M8LJU_q#I>yl9JpxVS1ruc
z5cD}gP=9#-<;d7T^)tXvBDocWD&4$&y8>FdW~KoZCJ~aCA~oVOP#Uvf+7}fSIpMei
zo-1a6Oc#2iAN+WdK7Q)4bp7@u@T)IAkeqrXkP>Oa;G|DF@R=^;+w4LT2$28odA;km
z06T3E>c`QV4|r4uA@pP);}rP^e7>mDI6J6;>ZJXZudE+HMMNaRdx|&2eNOBWe{hb&
zW`HioPV#Bgbz$-=;sFttNc==vTMiGjz?rfbI3m{rEgGEox2R%j|5~AIB`;5F@-ZR?
zwGKgwr)3h&z!y*$W<%W$>!KLOUusTpR>6ZWV!xX|zy9*edrSoWCm+ZY2qlZ%noNbs
z3ANjs)Q8&HyE!7Yv5l;EDwopBAsi#}qaCDo^`(L^l2uk9q}qK!1giUcVLj1uZt~b#
zJR3uD%SrN#mv1Ezg2r?dh{G%Fx>uvje9H|Cu-X{-P>z1sEO!-Ly^Xg6=$D4P-_%)psM=UV4wqN`o
z)n#OppY(DwN)
zyHqw2IYa25xhZ@#MP@}jnQC-*-+@;rT%TSGkXQGx2+~?`f+&JnCS43_8gxyoP{)0N
zzk*ItN1?<|_lfpT$96@S6wzpXz`Wh<(!ZV@Jvby!pqqLi
z0QEwoR}B_~6}$9%Q>d1x%kiSj;b-#y-cfV}q?5&@Mt-4%e26S^4<)Oj4~
z0NDphmb`hI;DmSp1k1$QBW@BD=z1vTiM1J635>PA>FMceqniGY
z)_8}WKYfp9dA^^4bWNzJ_A-r{zwtC*i2oeNdZI3HsXL*`@xr(XgfnGn(jpc`t1TWM
zX4pQA>6m9Ihz*7-fY}p=ZlV3K29E4%%LI2NwDzB#UXF>r#&r+@#_D)zz;hn~?*WZv
zS>ur`&fy55qEGrm`JdH|M-{*osbC-w9=8z11R_O{+mS_!QDcomI$ha
z?YGkrqRT>*=yw>L@yy8NhUtY^Du_oNj7S4Ejb4HIT09fJJ$r)CP}*bg2YTCt4rf4=
zYI6_ZT7}$paR^vJs6EbJ7xhZ*cA~;oU|0erOJuHa+*F{{?lp2r
zM-T~=G#02Bu$Kn=`K=)j6`Srp$_hZ7Gz=naLns34KsNFL={^U)C0IB8KR4Dx$OIe?
z2u>wF;6<<}q+i3CDG9ik17z!9c5ye-L42@94|g(q(jGxb6dSe}@b1CnkV8r65NJ<*
zIzg2smG_C}y%3eaMJkoYRL)usyu71+&og=Wjwm~L#~avQOPcs5Fc5v^gv{UR{K`+Q
z$g4iP0`b%-rfY4DnXW-(N>nNYl7zA++VGH|pg+T*c~8*BN`YI#dZnV4-bLuf?pdA8
zwPxf_q>h?u|BXlklQ@CgCrZ7^T_Za~9piX=n(-H@3$yih)x6PT1-}%rs>SLoqle
zScT4;Kuw*2UQ9@^APG@LaD{Hp`mZsIV*
zf@kCIggl3|7x+5bRekW!9mBzC-*qESgUAv(po&NT&72-VYhnzw(9Hymz
z?+AcyIu1l;5m5OX$d@Q7DVf5*o>9tN@#YQjoN*2NGzi=DVec+L#>JU#gH*^i)2~wO
zLGaIGAR!Ug^#(RCsxT$PhLH2QxG)J%8%3T7oykaogF}4VJ!pQWt2sT;;Jw2?XFbyt*9!1^3B0^krhD>SQwqbI47lULH$1x&Wm%q0vHJXI1#*g2;>KXM21i{
zVc4DdsCA+xU6Ti`h!W5R@*H+v2gZ$=i%=s(q`db53^Ssn=mI3!vThX)-@FcMjG{Qs
z^xjx&|A-O?K)6&|A8i}dd
zv%}h=_l*zRja^5U$FK*=EAKEd(s)70E1>KA8Cs4XUG`04(D%R`UjcTT4SG2APS$s+
zq<7OCd5BL6Pm*7A^GU+sLA*qy!Vo+3qlUqUmVk2yXZfVeo=(Pa8YxEWB+n|rdYwW=
zWq&=cDxuIw?$F3oo)%%_{)pMiFRhF*={!VRXNq)N*Q<4e~Gaz
z=z6g|cbByB2|2N?3onFonDyM4hr4KvKJ0iUJYYM^#m>%NdNg#JiLaN2U)KPmVRk%o
zDiC6{k88_u-im)2`iU`Ry7A!TenTge#s@G{q%yrkt=SCu-84(JKv5
zD2%bD?4K4FA~o|KhJ?qPS1V{fA}$_u5&)#~ESosGJyzWD{;10Vk-3f+wU@XrN`bDk
z#8)bv=*0Mb9#aPmEp0xIPoWU|_j6d;Hw^X&M#iIM7RNw?aS-{|Zl`XhG_CYwbQt+~2M1~kW+()j)Zvt$`t{2K1z}`3
zS;2!t+QAQB9wv>YZJD>wxx_#T!Is(TkKSZuX@&s@CFr*}Y+^<>wp#4jthx_BK>`s&
z4b{}^)tsV;r`lF*gpG;%SB-jd5gJDlA&;Q~lM}{mk}Ro+MfhUV}hG0|sx1-cXz+VbR~)e)(lW*U!rlwUyBO
zt=+IeNAa?g%e89-m~jCJk~Xa%HU}>So}(bhbi}detXJI7l~!O7+pC!Lpuqy8Z8>TO
zdH(YtMGIwzbbnt%i?JWi_jaE(WRwsPBAvk{bxBWR5UWq<{u<$^^
z&O=VJAx%|HZ2)sKM1^J&>?*3Ne0>j<>x;I~{tChceh4Jc>wG_KOQ?y9}gvM79jx-wn0`RrAkqH26h1XvMy@$;0IwatxC-n`GejlM>G<~0}l`j~$F
z5Rf02p5@m{-Im1rsY=K%+>_tC;dX!T_wG(>E`KiU!pOoCYk4zoU05ZcuCVu}xlXsL
zpM^lbXkmJAgwU^E*0loK@=spf6WZi{!|8S8%vs-~IGPY)uO;$PRxPsst9RcK!i6`>bG?Lgdz(5W`GX^Q@DNtZ|%?gM+DqQlaYmzBdWGZ7nu_?Nz
z_3Ev{HO8SfX;_c^uzJE1{N2lb@OXG7k@8?MlQ{qdvviZ;3JXVS53Sxi{FERRUc85+
z5M#vetif()Lm~qNnB*t`61MqRCx|C-Q55E
zdo7p-5+PmjJ@P^o*iIr7etPB0NS=*qxB}RJVss?^gpZ|Dmxv1sJaUbgzQmV;Nqxrg
zCu~^q(0^~}?i>#w5D$_90FgpFOHJkxj7or|_f_*}k~#oc7Agx`&a#!|MbK|P=p_+x
z*9i5_y>
z9}T+y9k@gRT0~Te<4``7Lfi>4AdiqxAbg<(=yZe@m&kL5%?;|9^RSr)Zrvw*V!VM)
z+5I^_42)iZICHcR+G{9Mk1)5JujPRIVLOqxcgx4e77@shHKk*Qh2%O74{C(ao&=Uc
zvwYJymtg!rtL|bKw?I0L=__XNH&mT!(5OQ&nFy=Kb)Xp=78gJWT*TCk4T878ee}>!
zXy`^`*FhEt6CWh=BTjq>4Y4IoK@gM=aQdBswh&y~QT&}k**Q3dR{*p_v~?H{z|#>U714kUn^0-0d5s~M`q*JKklp#XD9*a}qJ
zW^^80g*_~aVUSS}ej-(ZvhPWGQzIA_PkCSXE!UF;%7Ds`}xe
zg>H$uyf>oN?)yr5?>2EwuSEAWH2TO~Ay6rgvrNACoQlH#*8?1gFJQCjvyF^Bo>hzI$9KF|D6~1f>)SGfgrx>%btti>e6;2ee;_kwbfUEBb69Mo-d-qd?mAzM*}&G_5*&M*hxedwctH2xo=d
z{MhB>O%F!Xu`5WB1yQ`<>?V*Q;DiI#ClG}Nt(YaiScr22(HzEshOq2d{yA-hl}lXY
zo#PG1r>M|gO*QQMYF=ZM@$k{AZy(Yau$-Ev3rm4e!^aAZn>TtwLgc^4kFh?iI@ovO
z8j_{ZysralvJ+w#Y%3D-M$~cq{__h9V(`DD!nMb%g6bon3(6J7IU<69f*Pi^6IjR4
zu?(YTvt6OYqu>EhxkqO1op=*TkU>ZI4&(4e7*!50&nH*#ci^zYxmAV9I*j)Y^g%F0
zFP(`m+wHv%Nl8sJ8qpGWaA2JR<_eH6(yA1~PCcypDquS(F01g!@pSn{=JETGQxv=e
zEEgoEf#MRK_sZg{6|Ddsa0mAmg0mXdF95ppNF$sKK@T97#9k)Ju7mJN;0~iLVAe@n
zNiR|sn(NeIEp=#NfJs~0=2M;*e&nF*0d&Je{DcltuJI;Lh$x7-MI&-M^7!)bW`!?{I6sj7;tbhKH
zW#i7g&*nQ8k7<12-I%@Ul)ur-RR4ne>S242>4~)pU(!;nJnhD8o#7sRTCuAxtU$xd
zxTh+?=!bCFtBwTT*O`flKfYoiYuw^=w8zky)Rs_NyokMu&4S0MBXD%2*^s@4(DM=
z06rC*r$@6uIz|^47oZ#OsA|3LZ^kf!Z@rtqYiNc}-2L#~K^kaYJ-YK&!B2F-zkk7s
zMI4Gq@+bFKp)tYPQ79xI2{RkIALDD^cLLAAKP6>S^?PJokB?hH5%651cALWaP10T0
z6<1j*V|BrRLX`g$5*M01f!`8t0#wq&<0Xi3BI7GcFuX}ea;EqHURd}6AX3b3;24T2
zXc|WR2q>c>;hNvmUh2mJB!<{Xan$Xiz@oJT1%&=799!a?RLpm9w}`1pg~kHiM@Fgf
z5#f0$5T^L2!+AD1tD=#AL;xG;ps|jEI`}_bdeUd8mtECgMkKTYUZ
zR9?#Gl&n9R`(0T$w!Nm2j?lQ_#JJILY|=}R$nrTJ
zd3Bo-m?-q86r{xmbf^^0OH@!OEaHQ=+CyDWdv6|C$-{^gPwqGhx<*raAsAt;unn^D
zhPPaJ1o#ViE@4o;ANu(#br`=6V$4uXxSODDuQl&O(@rv2LQh-(sN{$?{+@tt8UO;I
z6QsvLQ;Nj^x&Wdy?3f1p`ir0mZ@Xf509zjR<-E~@K?NrQL|^Yn8sV{75`N+9%NOho))MRw5I6upyT$34RJwen^%{z*$Hp8k(9KGlSBz60=
znH33H195XBR{7pQ@dqH`T+HV~m}tC!eNA<{O`aDV(f%|5q2RY>FBItmWhRBN)R0~j
zN(Ibj1Qh`IcnYQ$-_ha@-e8V{weJTrKRsD+R!~tkX=T4IGpF7V(24-$&^j{vl|?C-cSLjV*ctF?EJ^2hm`~Py
z?j5O*n2KxbTr^n=1vZ7xmpAZlp;0WS`!>e#Ix28dol06)uVlnZW7n%7@b8ki6u1uEji@OQ)@ON(d$9W
zl8l6L*DK1`K;2**A*dZ9P+_XkfQ%1H7pNM*86wF$lUGS#E^P^a0uvN+kJJqC>p^F-&lRFZLqR>QDfq
z0D4guNEDqB+7hG$fLjBjH35Y2iR&G2T{R86_cHE~PiXkLws4J?-G2T@@GVN
zUwdjy%FC7dpHAQ6cebT(i~1GbH2pilclr@?GJB@Es>%m6G=PqJ`GC8QnCv`4AiCTe
zXQ0BmR!r~BUF*#`wVR$YKMz!YTCcY#s^Y$<_Tt7<^eMHaO3n0Zt~_)``J;8naXK=3
zZF0wb8iy-R0;6=&TF)-Bn2riQ6kp>be2)I+(1{eYn&HGqoa10NxBveZo!*on#__|1
zLq*qTlr41QFl4lr@vgTwpS>Q2|BC6d^sbD`Z18Sp4Cj@-yP#|@uR@C#xf+CvL3^^A+G2V#gXAYHj%r>^&CEv&7H`7$~x98dgP<)%+v`Ti%?40pdhv`CN5z}Tb<6Wkr
zU0ZWLsBD={&vj(TqelmqnAkgZ!Mptq%FWvd(${VK!MnzoRwbO6fT4UKR;~Oq5Kbpy
zpCIi=JK~w^fGtZ|V;$+R(P%(JVvdsoSQ#Sv>Va;SB6tihod}CjWuVH+pc8VDa6gDK
zfDo~mayKCmyZ`6$YqxL=+F|H19PZq+4!s}{G9H|5WXOjBkf(hS&eC&g_eH(1U?>VM
zcmU14fSw+STgqu4Y(YZco{c(S_vGeMw23g(hl4LFz>48jNrDoNOyp?ZWbWGKi}D|P
zO%Kjm4>S=ux`Dpew#qgxKW`b9I!dI^*6BXV+`^xlGTKB*UFL9;%ROK}4qtXIa5;c2u+}k<_vy9_4*sdJg
zx1^c8)_DE;^_I&2pElcXm&(*7W})bwJuXC|g!m8@l$#C!h&)jbORLQC38Mj8Ka0*n
zQE7309(S1@L+4G7cQWteI7O;YkLJD@z#ha*2Jx`~EGj5rX()lE;n~Mq$}n~l)t6&Q
z_^y4RBV!s!W~)-NSj7(=LTMn)7s}qZ)zxVypN`w6JfyX`1|+rvoFUrgAxwrNhvt6$
zN=3jS*~*x<7&mU5DjzMl;~&X#tgxm)hp~h;;7`XP@;$f7Mtz04l<#7;U+CMy5phq=7BYO``jwCo^!o&x>qgGrz0v|8dnry
z+{pejT<`+R4!2k3l8>049xxZOrTeeTIdQFVP*yXI&1)W&O{mQzaQr$lqyo2y^=a-C
zXxd-*n&eu5Zcs<^93dny5r&jR?S)~<46Bf2a)c%y{0i!wC{Lh#4xRyu1f2(&MxY+q
zf%*1>Z6bO*a8=0nzJ<}?Jr2{fjdMOnOo>D|yxdxSmvy!sZ+3?n=M|6aW1Vk;v)s9O
z2l`Cz*ePU>=iIu_A7CJ+QW?#4II}=XMd&BDnRljV_ffgwoQR!SMjuDUa*eJViMp~i
zyL}TKeZSFgFx|jX!zPr&D^OmCF`qBls98{8!~2lJS1TbjbC!4hYgNa?31h(m+J+f`
zU^R%qz+IMpSj;jbe1mruX(urOlkJ6&2iTC7y#g{=Brw`Rokd7isA?$|R!E*Xb~*vn
zNGu7`_Pn{c{J9ZNND3;@fbzzQX^zP0KuJAf%F2@3+SaNp$Q*$Y*VV}pDJT%wkW
zF0xV{31#YC3EuC?k@m-drZUyq=Ns23!n3V5&=1z
zZ*h_Uw`6-e>L3klm;`7H&0?DX@Bjeg2Lx6oi|^oe+8r)?q`V{wg{;oo?hbW&RbFI%
z_QF_xc|7~;yIgf4l|OS!=cJDaJy|O9Ui;Hn+JQs*XFSz4hV9ox6q`p*Yi7L;6Ap@z6k%WCYM{oxAM9MYr=Ee7l^U1
z5l0WE^wwVJ0g`~ik$^iSY+HJavRsey3t8T3ShqePaE_=sfQ$7@
z^i7-EBPo#x_rR{$yqIO>#O$4Xu7c{;eFsYr#;nmyka5mPI`fk&ChZ{
zcE8{ks?iVJsM`Cs_35aEnQLy{Wu|&;MZc0=r1sRlBSOs=4C3g&l{tKS;jpEQW}&E<
z`|@~&%%J7#l&jp<^f6g9xm-2jZB>4<&vaOy@JW8wxm(QVR+(+QxZAal3>3F-7vg-`
zMV9}+P(Po`N+%c*G*86%gc;F;f;7gcl*w@IAzw$V{eTN7XVSeRg^1ksV$_B{94Xs|
ziI;DR+vCU}JOXAd($>Me8S+f!K;Q6iHJRA}&fw5Q)-9=uhej+eGE+%0o@$umy_}(U
zLxP~gI4BSS;r3!v~0ztK4;7p}#9X7bpXe(Qqtpoo-gLEHYFysEFa&Cp9XyNx!x
z))%yyc-$S#j^#TtnO)J7ajLRV?q}ulcpP{q%ezI?eRo+{fRvRSRE!@oH56@PD)b
zj=$y#p0qB0Ykq#v^3i3dZ;mE=KPO*Wze$+ys#sUR6GySS{-6zyvXM=ol*}0VA=xi!
zerlgwe?9@7+1VR|`CQ`25|>dy38=t$`Nw7xq?g#)Yu2w%fpC#DN}v_bZwy#q`8zX$
zQQV6RP>>stR`&n2XbzLzanO6vIXllOf5}?smsA4{F%cCZ3kcxb1AJ{+
zylrzYb>5p#)Wy;wN}Uo7nw3j@cDSURUR%GNv2#14)iX=g*guZ3Gz`(BI-vn!-`yRy
zT&G=kNc!i?Ul$BG7u`6G5^=sqZu$9%Hv5rM*Rw5QU(=YLF@!hikm`+M{y+O9e9PrI
zB8mh$HVn{%a3BPX0nlz9J#mCK_YL8Dk#$M1Y1DoTtaB(LWSaLTU-iw9^+nnJrQ^cwQNmFgtA}LizK=-BK2s
z18>@@_)YhIiFhjfJ^5-7L)yj%IKvCbHYKmmK5}zg^WXot^bz`ufa(xM0eKO#Y7nDm?T>{$5AuZH6139xigB8JvB0>dONPhmKCfx%xeE3@X_|Re
zpYkg4#mv1HuOMdwFEnOhP?%r+OlytXKMg!Nhcvt7ctuj%<_)6q-eirL)uM(Wf1
zlaDOkxCGB1Tz^vf#BsCt!XA)`t<;$NimG@<6-yeWs
zB%mw>Ui=W`V~7PTohSU7xH{{ze5uMOOCkotf+kZR
z66Ydz=Dcp=ur;U@c6{NurtwEnqojYCqgd_xwpNG9q5z|BhXT_(y%hp_T5IU`{4YIA
zV-v6x5=sKBZx=)@=pw>kCNzzPwld=GU1EYn%_8LZ0i_AnCq1+a11}+uAOJ8V2OzHh
zl-Eb{-XU5Tob@DImn1}^f!%wI2J9fH_jDx1frUl>%Wc3Uho+v@v_9T$jVPp}!m#&Pzxe;7*lDSM=id$1P+5m?Dq>ewhMTILEQ6)RdGTM9__YjR+pl
zVIqgPK{N=EDCq%!dXpXif*hQ$bmm(*rKA|$2C_AR%GFhvj%h@E5Rm!Be~~$9XI6`p
zQ1Re51Jx(%tpfe_>{uz#m`thY+4WE)sruV4Jm31g=pr3+H1a&AJ-IwJJw!%yT%E)_
zcx==+DZQA9bsk_v{WJIZUpnK_SR8@a-hlKefiG2?<)`<<^&_BHz>9(goB|Ry(j44g
z5r=k{5JQ+$F?D8DI5OYvp#?I=*Cac)4Ujs4vH&g(S{;BljZkTj4c)=zAM5&IdHI0|
zL%=&=%Au9nJ39$zR2(q?#@Bx+Y9Erhf+~vcX<;DZ1WB`^Agw0eQVPT<#GoP9Mi5xw
z=Y(Pa@ku>!h#Xz`VNtziayMuvA=n_wZIq|_=CpOIs1e#gQudE*#ErJXXmDW*&inuw
zSuLvpY{;h2-x@
z9kR)nKB4!SJ)n-e{p4v8~r)7ePwKq7)mupg@iE>xodA#N~Y6hq||f5d~UHxu#okrhe4CJE7n+-9R9
zBb3BAgpWgKkScHGv(tr=blJe?h)?#@OZS7<+$SavJk`%$f}tOeOLe>u-Fy<%KV)vf
z$|RoI2Hg3jiV+Ti(Q^<$0NJ4R1mHH^>&y8b#7VW(9wGw6=ODTfgxo)_*a`{`5B(x;
z1Azw9q2x<2G)XV0{hT8QWkOTq2N@wC6;bve
z+>mjX42WPUi7iYeuhUuzWAp*corv}^Bc^~wB74}Ca2=6qCOJ=wxKs*1Rb?9u35JzC
zzDO1FrzMHzsRHBZ9!AwCeuGcfkM23Z-M%UAm0^kZ5sgF>{?v*yr+uw#nS`s
zS^D|Sklyql#}4W38R?Fa0%64k<&NUDKJ^lN(Fl^k_`f%WajQ}FKsG}6XA{axavm`u
z$EEmbZGl(;LytKG{p+?%GlwQ$*o^&;`lEt0t)`|B2>WK>yi1>9NhS0
zTE)N-o4J5-fLsg&UH_4^4=u=N>%KmtF6l0JMU(sCtKTEU4oEA9$M66_5yVe5^Giku
zC@~^iz>C}=P%iA4>-zsdw*aL9;vsPrFNG#E{4;z40(VgMp(-XvI9^u$)$7D82(beB
ziNJc^={OAQOhL#3aCyy!4MP}W2-l1pNn?;LvuAb|6CoMM3&2(Nwh=L6k0Sa8O=#K*uZh1QG
zsW&fbkVj;LMh8Be8mHf|Hc#XI0$!HKE_eWn@r3N`N9y8p5SW)OPCQ34FoEKs_>>2j
z#OYG%6U3`R{2k;q;3qHwu*Za>lPOv4sv0Fou99n2M%JEPTq^fI?{?s>rf+CSfH>D0
ztd&S0b$#RGacP$wo^(NybQ|PiEX*LVveaVz%oG_O*q0Oh=(N}K$H$M;9uS<%KRg{#
z&c55M^n8Wg2VvXffeT$r1C_0AYqkW8ip`ITF}Iuk)J?LR{nlmA**dY#yZzy6-3WeF
z1I3O=VxKj=WvMTCXYm;l&B-pV26(zwl#
zEfY9-0pk^jq~669OGKV03w}5h>@lpCpkl+jBeB?%dA(w^Kb_xsT19hRxhn4@voA@L
z&*(=#JGN*uDk$jYw?y)BCB08k(UkY42$wr1|NDu3<6?Cvf4E#7?}PF`r8$OU7L77Z
zvb^E7HWQ@@bKU0vZBiP%%9+3Z_wdE}HV=6biqQVJ#sUW43UVb7#`4zgenUzd6_vFh
z4iA$42p{oZZM^koJYxTVj52o(B
z%ab!dHWr%fqRdVAqbZa3yRAXhy-I<~*!EDEr*5P&Rd>(bs3<}$9XoMi7%V$PKLVeu
zqqbTfr0pLsAs6PeIBRdT^rTCZ@7@NDc3~
zH9(W`_9nw2KWI{kTA9IP{%CgVOq+oXiPjflr6*bs2w#hy>K=7`>e)UzYlrb?2AmJ9
zs#_01df>U8X3lM4VS#Kd^vm`wikp87-kUl3&Xl>7*}rSmN`ml;m*s1XInTNK3@3&j
zbIsi!nXHjb)Qoa6yV=6o7j4Gkp?oEa(VmA^HH)$8;{MCA@|V-=J=@KuLrz`&bc1O?
zUt&yWd$QfcV!$(=|M$rVUmfR@U$f)Zej8UA4gkPiD<3Dbc2}zZMQR&Cv02WcXw6A%)T=?~2VF5#uj;YyR-QUkiA
z8U(CWQT%ES7m9$YH((h_V87nW>#ix!Q)rj^Iahk{6jMQoA#gh6+qZA}9o2(kJv+U1
zyJIWP#{b^u_RG?4Ma#Z)bi&R1*F%~8tzj{bf8Xp{$8sXoqA0OtfArH1RQZX#XU3W=ha-|N;+VMm3>E`2E}?P`L10LfxKZ&Z+;$kC#hQG%C=53Y
z@xgNS=42cRQ%!6>|1iCB#nSW+WrBXRnSP1e*oU%TpRFE^cU6IESH?Vjsmvzmv2?ta
zy{#1ALu(+8+{9%C{&EAiR7VH|Gxkqv;GR}qD(verY
z#%$9R`RaXHXc68*afI>wJc#rtj`}Hs6iS;*mo7z3v;%G=NHmB0PtA!}D>q*L`DGx)
zsv0$yn*|pcxoQ?@zrB9>B0L2#C|P>}_fM4c2kUpfk|7C3AmWJ1nJ}0T+q8XOUax-S
z2&KnD{aK26{1R0RSs7)wbtO-pw0_t;m~hYFq+uy_)0opiQXUBBM&$Ttr=mvAFs#}B
zk!pRDCd;HIOOq!4g0ov~y-~LL{)-g$fu~seqWk}xV|f>(w&l{~;pftpl8ZMD(zL6u
z$g&K5URoWq7T;7}LgAmUoFxA&hgb%p{^-RqQgVd&VvgAe>v;?^bgr*-UU?pbkv1If
zBp7cn1ZPujoz-a_@Ou;_D!F6$285)<--N_7*Iu8^BTJX(;O%NRb|X{rkN2t~wgBDQ
zK9_jSytc}H@fP2lG%|3JNDt2nhj@8!^6@rX$?94%qvkj}`|2%(tA@5!EQA3CXJwBH
zpzD_H|LxF<3+)`^`04wj6>g^$_hej`yBMq^x^qiD-@LNmnN5NB`zT3Q6GfS$@B+wljqnN(@3%W$|Tv^&PT^xe5euY&;5EwC2><2W=~HnRcz
zr}>MIjAO`YsKpEiG7U%2a$u)w*K!WNoQLieEZ$u9dAS*6{SQGcVgimF@pOS02(;by
z6dkKx3}9#y5sW`8A)|cVCFJq9sBKYJ>$LKC*~NCvA2n3<_I@0;wn~3I+}l6N^Fu~|
z-o^7fu!0#kUw&gPb#?kt@k>?azu(XCKkt=%EDGosu0{<{+_ft;q=52N`#HIl!S0J=
zdp^!h;zq
zB~D}R6jM}G>~iY7Tv@p@%<(FLiQ>TK3%16HO8ItaqH6|qhU`paV+$8_^{
z&`u0knuPi}D8Ke^3)b%_EFewlNJb{nFF??yp7NH#kYC2Qrcrm^toB5u)T`SZ)Cpz{
z!M`tSj<+PQCW>-^vF8Ecq`i_$x+!8%;r_{Y*v}t-Ec!8I=h^YF2KLh3eXArC6m%vc
z@II6J{c|jJ>e5@cP@5Eg-=EFC!znJ*o~HEg7m%kiCOhx6319-37slXF{af`{CWl|*
z1Nr&;Lw(A^%*u+1_f+O0+qzXR(UenMdG*n**r*OVPT^0Ux~&iM6n4Bi
z(|a<8d58(zG{*s^N@QNo#iwEcr=iTX=XHun$RFvuk8(Nb;4E2QF{e%-h3)kFHP(
zUB~)z7F|QlS3a?35YNGJNzOW=ddkSmp_}K3PK8eN2nm%>{Q;dD?$;z4_tYB}7<1jC?d)`ihTOFl6+;=ZSBSb;Wjd7f}bd^?1o~Up?R^?u!
zoX}7Gz5hAu%*vR#rbF9vcC}SPK`cTld_pQpLbXalKizx{p5qM(G*+j;zRzN19b^?GZZ}R+2@KoDOV`ZNVX!;l|+sKrL@}FLnPma5<&oJ
z0mZx1KDtvzqV+bh$Uy##=B=i_o<~Ne?4>FlzxGXUGoJ{>k@FSp
z^XJb~ZiKGAoX+EDt1YLtZCa+wd+n~(?k*t-iyx&}I7^3^o_yd17kUgjn7vcH$Q(I2C$S^ZAL;M@T?wlLlV1WdNH?Syv
zLRSbaLaXs^T>m!Z{JHHmfMM#;`}fa0Rfgd(draG?=#TSB1BdN&MysYZXrH+%(p|CX
zIo0^)jXVWLRjPvc=-giE^u7Z$7@v!!hYB+QQxF$
z>Rz&z8_8hsrvg>hLbrT4PDkBhkR0doG;9A^2DZ18xL3+frhQ-worR3Jj(orp+jBuw
z-S4j*uPBovZ3hK0rC|O_8)p+bJ}U5sop!g8FOH`OpXD%me7cwR`^t1;I>%R~w|RL!
z%jiFl)O*N9@SSXWU;P2+{M0S9R$5GLsY+Su4QJSQTfTc&bfy8jIcfCTpN3UARLN93
zoPtDsHT;ZtDpPy&zVp96`;0uuN?O%_szPj{L!fu+#o>|yJA6XAa(qObFXlz<=$a_*
zt9g0QX&D;6L)k-i+0V(Z2_X3>9%dBXKdy81^78hNw=$00`0-e-_+;Wkg(K_V6`x3n
zbc)s;a?{z}X3II%D?Qt*a@g59$84X;WeY)ihdt`*TjGW_WF^%rE=a68Ut)E-{Njf-
z_P>?)+&UmJ#`@qMX#m%>G}E-(tRl5*4PA;+5?XIcyGW8*LKR|q>y&8m*`r2QNoa3GPgKo9?SD&pXbhQzoOE$s#;7>S(V=9YbV5Hj!FyP
z%hWfj@=E3Jd9uttbo;Yptka9c5Gq#k88`mhw%P%^MiH%f_pWl>seS)LT*YM$feV?d
zN$&-Kr$B!c4E!2TNbJ~Kwc>%ClAzz755F+%Fw7fEYU-cB_1ke1nHOWF*X`L)_2nxp
zvs|*Waj|3Dc|W4^BE>2yTGIu}>Yo;R#@Rl|ycHvtt}UJ5vdE5)Lsw
zLCeg%dw_MG`b(La4~6>J8h)dj;SLPr{?ZYTimF6+#-5e2oRrz8y!(v7{d}o?W>%(e
zww;}w=&BPl(Us{#N79aih(mY*vn{U5etUQU?b_uFp*Py<@^%qBwi*F`*)0ucGJTV@@8x(6hx%LP-eX!+!7Z!YX{Nm8zEBL-b1{kJ_-0DVq^_;+g%Jf8(Wttq~@H
ztWamCpw;`3d-gCu20{0)V`J7t=?3%)as6wK$x;w@5}5WdYH{z=&MUhY%aZti;`$Pp
z^`|fZlO~MTx@klotq2MISX*<=IKgX-$|sh}BQ2+T^YzKzcF8G@ADRW#oFmWXTwA(W
z&gLeX+L*p=s|(CdS!*RO?w>s|@+TV#OA5)+{l(FaZ{pZ{gU=2Rw^gV6WMv5v?-L1|
zfD5R!9XDKfL3c+r6|x^)tpxO{mf7##{qt2{h5u8`2S+*zcR^A@yfA@*>#&I~m01AA
zoA3O({MNonwi@aCWQg6peHj2ReL_?9`h8uVEnDu-C2&HMM=qWdGx
z&H1Sp%dm4~7RL%veBmiX3L7V4FeHhqOH7OrE>T-svG3o%6Rs35l!SsU&*plFov&ji
zv)z@F-rLvQxBV?A!{Yz;5W;XY;9n%*ADK-t%Q?ukxuYW{nl`Xs!}--5#JISnu_Zh`
zLy*`YDLgQ?Q=d}S(P72)=i;ueu3e7pMsOSr23oD!udI$T?=Pyc}7Wq5+6?bRt|0r>$yzNb3cF~=h
z;KWZcdU9S#N!T^)FujlQ(e>ZQXs8mFekv5fU>;9N~ELt{C>k9t^ZI
z{Htn}7*tE~5^ebSG~E0Q{=u2cTa
zL(M6T7U_aHi`1yY(zy4&9{Fz_Xi{K!d>m0d;|4>s2|g)~Hc*>-zg%OgzD8|jyg9Ki
z;y+q|B*xy4SI>+VADpwMqo-#B+khE42?|^B(<{InPg29N4^uVb
z*z-1A|64zMH!H|e{XJ2oFzR+8l!2LrMGQ!%XZBVWmMV;nSEb_!w$TM(qvXpVgU%j)
z{vI2T#jSE336fz62~CKx=n|VdsW9BkNuH+BDX(WuwK*q=kl2tw)!_;ruqHf0JEYbq0)yEa-}$R
zN*#=l(p`EX`mMI^&xhy3AN*2(@$=GTs-=I-FZD8BrN>9MPh@1&VHuIEHK?%w@;*A=
zJ7HslyR`}6i(GqhN!~K7zpG31|30f7|IB-hBe@=bNMsyAn{bsim&qu&iYQQ;;fTb6
zB8FUDjMuk+oZYA$Xv(s@k`lS8AO&?>@-vAvBZvao@TmIJEy|pxg>ipqa&YPvoE-65
z&G8T{p_1h3R$O%MI$gVq(giSv=mWJ2&t9oIPiiuaI_v4hSe$PXu_&0iX-;!Fpp5)HSH^tF<^{!m8
z3@T6}G#%Rx--rd0M?1n87eTou-^%){Xo&XN7s2^G2bY(d2cKLVOVPaL-@2{LYhv=n
zkGETi1_Ti((Ij6EADKP7Jxfmz|CTG0X4S7B_`HpsoTS!&uTSBp
z!-}B5m^nQ?JyOcesD|VA$F&!Z9FcxKtV~SQ^UtdR%Z-+@|1f}2op|H{50Hr+hxX>Y
zq7axCK(!J}7}hCCG9siC;7TCU^${lykuXYfU(BT<9V^J>H<2Rx14tg#Rd~v$aYisP
zGHO0vw2CIb%RK&n>BO_q`%;(n^jd&ar^hz
zQlh>^j{Q7U@FBn|jp1vpe}n~ayccn7ZU#(kZ5DxzBaZ9`0i!dn2mEk8p{cgEw^jFS
z6-IrqNy0!hE@gX2rFdO2_wyK#FVX6+ZrDlyr;LofaQAx#GCj5;t}mowV9G*iW@=t(
zy9XYVb7fu`i9DpDYov*rSgja?rG&!)0A<@}j-*~l5JcRnl{7RqM6<5T^}A!zb9H}S
z=eW70W&1*RN|T4r#w5N#=odK8epU3V!{qaLa#Kd7iKqz~Iz`^HyqMK7ybmldI<@zQ
z%gA$PMulw~R`*PPb|^KRHEi&y?*9?`;DHL>T}Fmkac8~7i>H|SiaW{4a0Y2_z|$_L
zRJ7QGHR!!-aHSWUj~wV&NcoWez5npR6%7f*ge18Wn?rlSQU&K65cL6^1j8^u?|^j(
zoXYfHq%SaI9YhB}P06*V;1mbYu3@HFiN)M|tA4OAxaHh}>!ivvBd4tu$}0g(v=;t`
zbo!!Y-I+Ic9Zi{9&9G~8WTf{ygW4cxvlpeE9!Pu(WHjK@_
zjIrv}pI1i%s!siqoVxbnd_r;OI0@)L<)4Ph0i?QN|JjG@K?b{B5h|^4D5VU
zsL`jNXO?i&?xb4`VHWExt=%Sb-5aJ?4)7`Z<4##ZUsANnI(@Btefzc_`dCKy?CUxc
z^}VK6mTy`b15--#>ylXolan@dp8_X=PU`@yF|Z^y?!0GsDrNTQm^7n?hu_wTkD}Vm
zPhOx0COY;THxA)?`(DJPKW?3R^>ko(I09FAAV&uzup~#r$#_tN!q3M@S`=!wR`wrR
zmDRcYAr4di{>N75ZcIuPZ*`{p+XA@ZAnd~qS`CO>WD!c8ZO~xAC^tPba{zz@)QjfO
zHZ8%nWPwCX^5?f^`BS(`n20b)6c9jAmb}nZFq;y%J49%{#W4>4eWJ0#o-FP2-wk+Z
z53DKYIUx>&7@jx{kTBNpPa99OWORMs7Y8OHdd74rnN#>LRf3=ba>o>8(G_SQp}p2F
zYX9gJ;X}7;Iw*Gk<2?Hl(wy!;8B0q`iF@5`qBPC8!pP>XQf(85zsGc6_wdnNE(S5_
z^`ANo^3v|-6-y@H`sh*K0r4SJ9`HSw!t3@ZEzKU{HC>nV_=*fBw%?1s0HFK$8D0{5P-(-
zig)oQk^qE+wWY`CYHO3^Z78J=V8BE344#n|Z7tjbda$ID8UW5pc36MaO)scqmglPv
z+X1(~`yz(-BpR9uw9r+ub6wDGEtP}HYy^*2bCf|AYW!m4!hus7gYH!ZXBhVs-JwNTt)hGJ^jx7vt
zp?LsR(!T*K?;sQ)aw~)Y@?e}QH@ls_F(_TsBi$hCW^-Ha*(Mx8wcu*<&Il1o35;L{
zE2ql10m8>9fQ)3dx}(dkfwm55o>Bjd+8Zgkc-YxDvbAtE?%JDlBvM&P;-fI$1Zjma
zr)Z=_5XpgArQh-Gtc3d{Rwi651Qji^5sAKm@II)mwBQ%npZnX{j8z9{m4Xva*9c5;hNq57!$o5X84naYH8C0tlz>@5T
zH}K~`{*hDUPN*;t32#v=i4EQAJOdtc9S;w?f}**?O_YiVPZV8G-PjXA4+g_Li+|zt
zC2I&PRRg>iiL%R()ak+fj>Dwc!zu)!atjusDPnL(bqoy)qa?F6aaRM8CtCr5YeZ17
za2@z#XncGlT5y07d$5)(hi52p4;91m@Ag;k5l}1sYdr&la=Rnyk=3uwn)JsRZpPrM
z>x>L4-1Ke$K~06?_Jd3@pEw$rmGk$}6jv*on(olk(<2fiT)qAaiZ$`J(;=cmkeTt^ly?5n2Rrki{N~hCTc;4kq&$g?Q
zFf1aF>ft2!f4<?JX%RyAM_C6!!9x$1R6(fzycn8y?m!VV61`LTd$aa+Q;1{*>6U@
z5A^JDoS!l!;RzN^3*LcDhqf{9$@7)0dKl}@t%E_bbRb-n44>nxo=bztVz!y_eKt|S
zay=+;)mXOLCy~AVB{hKpf-V*H(^STVD!ZgV9(LLx_+;t8Gn~W_0fFncClPqx6BI!u
z67@~}o?=l%6RD-nSbf$*p~LxrQ=o0+(1QmL5PlklS6>J@f_}$QDxB$ST@)1wN+sd2
zX-bL<4`${LO<9u6rm41IfHV+`Xn=RcIM_&r047)*mZu)Wpvy5eB5l5T%YnO@p>Z|?3QocVe@CH3
z96Qy$dY|@Dn8eTpk`#DoSfJSiyQ&}H<8{y|#U(SQZ``;{Z_t$WOo|Md0O&>~J%pDIvGC1A3Q7Fad&;
zi+)}hISW}Em<#eR7D;mqpeT{MX`rFOZ4lo7<4Fzcc6t#!x=|Dtm|&lj{`u8Oy=j7K
zX(nNXSVn>O1XOdljXkktKx?!+r^Flo<>qoDAbA>b@la=p#~*#Hiio%W`@
zs7bknm7&VuMf$?v>Mg1KJi);h+v45ecJ;9X_Q$FYWoky*g8Bh@rN?ynMLv|)qR4ed8E}UPB#h}F`j|;
zoZLuu9ketg7kO>Jh(hpxJdsZ1+EUyza?&er7miDL4*73EVIlh04f7ncwQ218olfl#
zuReCe_9{*CvsF2=#{N>S{M|!}y9Ew^EGm-d9W#5~QX42Hv;R`=x-|7&(rP>T)Og+{
zY6hG$Q9OW~LMzE5{kM~_-M@|UYd=apvVr{3sv-l8acY*ZZaakk6&DQW6V|6_PUjm|
zZUH_F5_LR`Y06T3Q_h?3#;&>9pS>bo@@sJ^ae|fMk|u59m92%Zw2C9x&RwWj#0
z8W@N-2JAtFI_I$J$d@RSz48v}$JI(u%l%dMzI-?hqmDR03Ia<(RH=qqNB#5{;Ijv~
ziy96q#1qO=8vNzO`sDw!Mt6^gYH1hgw9PGCPaFRb>f*j?uYJ(A2B}kH8-lNXj7U6H
zR(rIUPvm8+-AjvAz^nSpJ_Qy=(C*~jKXPbufXXf@c^*EsoqH9OL}&`pnoYczGbX?;
z>BfM4Ah%J{cn)r#F6fAGsG@5zvJ#R0D|s;V`vek{?h5Je!g&Eb)erw5CkBA4FC
z`AZe}TU5Z+DC}>z_H_OIOq4tS0!y|WqoA=VAmu*~#USN+9gK0n$~Qn_UvZ^)we=S{
zP055Gc(@bv*@x`5J-M=?I3s#*8@ydMr7U*mkCQt3ja
zV)~heO(XFl$etlxW$_oMt!PL{`Up9F2?z`gpndmY9ONs2x=6SSRDz^gJvdp$6uF{9
zh^)US7g@-|`8Y3#Y@B=>JavTD=$5xFW2jucajLN=S`ZXTjaXRNxk}xG$-bGD_NP;>
zzVJ<2&++k%xH8L@xK*)_Sz{mTWT^*j9B2qyMSbhwAERfsjM2BA4d-LWA}qS5u<1}e
zRPHWA4=jlash)FrYIV-D5kYC^2{j}J_$T$uERgq#$Q28?_=Rx2V{vEDmn*|$-oyNO
zM3en(z&|v?`k*82j;=c0azI5sguXQNPm0|Buy^*_)}^(h+)GEcz!OVWMhEF1VJXr9&i`P{x8Gb8~TvbR0e+~%-vu0!MQ$S!4TTKDlT@h-`3#}cce
z_6ns_+H})zxddsPk}N6jPl$BA|NA_(g<<>WlZca3WuVq?s;H?+9kZ*kBo6Jak9VM|
zOB=S4r2ro;xllaf_|&lg-|w`?A9`$XgkZc%t>WCXXBFBd2zrOEU)h`wv6E0lH3dU3
zpP3)nsW&UWeZ#P$Yr(?4y>5$OPDR<-h}P)iHEX2T<>MwLSPh&6HgLH$nMtAPz<2dd
zN;>@KXAIPEQOftLifXNvtn{Did}dEfIPX5Er()wygu_nsM+XJvZ2Vv1!)W7&rdxVAQA63bstV6j1l9Oojkguwm
zsJ3Bw14Q@zcQDuk;UdeBIAReaRF5`4wP5<2MN03lIZPYdhe|sZzu?m0Dr$_1*zlxW
zc(Q6OM~=@_N6L^?s(Sj@6SaRPPYOQ1z#yHcYwMV4^-LkilJegKQ8w0y>BEM_6=;b6edo3{&Fz4;3@b
z$g$c`P}Xg(+8^Qj%|wJ1jqTKA#*5!`5LGo`vk3jz
zX%`m>3c9X7qH9HD7#9+vkVg*ii1aJSLLjM-NaR>WVyVW#7}3K$_9YysGs(KbAeUV@
z>c+>{?B15iov3+5=`9OT(A?B+yBywvxYQvAW@a+}MUS63Hx+Rgm=}y0?9p{?RXTT6
zI%zigShhLejoK=>?E|B<>)AB}<|Pb_tsE@-Oe3?`1kRocRduyt+b
zC|e6Co!q|8!+>!cXc
z9#KFm+O+FMNI649k0Qz(V(+Nk=7V0?`dc50d=4dt4U)tihnv-=3v4PlAK9P}3kh7B
z+yAHvS~b42KwH4xdwOW70`fzR(LCbFAY0sPcOM#Y%(!j&xl2~qIa&I?iL(*8C7SlYIJStHKR|ZEr7c
z1I+jQ*)!Y?$FOJdWnz(Q+&nUEX9?he#5h1Mn{Hmu^(0kLVj%GaORmxHzo{o0%!*n{
zl+3R1y=97fHu`ma=FrEJi6VZgLJ>FT#Xq20y9Q;oDgzmkGLF|7B6Vf909X4jJ*@!?1`lw?p`w
z2Br=XasUp@l?2YQuNH06_`}SpkFsX4w`Ydad1KU^;yZC2_7_=!_jZ^Dupj@nlJ2aM
zMBr}CE)GrU;q~3u-jn&z2pbHnALuEVY45J&OFP`})@pq)=#whdlO;PKHg?f*irrMS(%_YU@ZLQ8r4&G%n
z(}Fq2)EJiZ+Hf!=r2mLWb``@VaTtLR$T-K0CG|ub=7soxLa=J6P<}y!F$u#Ip{kqg
z{;O7375=z