From 2d76deec4c79c35edbebde69bb6de63158d1d425 Mon Sep 17 00:00:00 2001
From: Katy Sadowski Add a New Data Quality Check
Don Torok
- 2023-05-21
+ 2023-07-26
Source: vignettes/AddNewCheck.rmd
AddNewCheck.rmd
Format the Query for th
that the input parameters are correct is to use launchSqlRenderDeveloper
from the SQLRender package. The package is included in the Data Quality
R project.
This will bring up a SqlRender window in your browser. Paste in your complete DQ query. The program will see the input parameters and allow you to define them. The rendered translation, dialect specific, is output. You can run the “Rendered Translation” on your OMOP CDM.
-SQL Server SQL is the lingua franca for Data Quality Dashboard queries. SQLRender will modify the query to other SQL dialects. See SQLRender diff --git a/docs/articles/CheckStatusDefinitions.html b/docs/articles/CheckStatusDefinitions.html index 5bf3ecd3..054f2894 100644 --- a/docs/articles/CheckStatusDefinitions.html +++ b/docs/articles/CheckStatusDefinitions.html @@ -33,7 +33,7 @@
vignettes/CheckStatusDefinitions.rmd
CheckStatusDefinitions.rmd
vignettes/CheckTypeDescriptions.rmd
CheckTypeDescriptions.rmd
vignettes/DataQualityDashboard.rmd
DataQualityDashboard.rmd
vignettes/DqdForCohorts.rmd
DqdForCohorts.rmd
vignettes/SqlOnly.rmd
SqlOnly.rmd
This article describes how to use DQD to generate only the SQL that -executes all DataQualityDashoard checks, without actually executing +executes all DataQualityDashboard checks, without actually executing them. There are a few main advantages of running DQD in Sql-only mode:
vignettes/Thresholds.rmd
Thresholds.rmd
::executeDqChecks(connectionDetails = connectionDetails,
- DataQualityDashboardcdmDatabaseSchema = cdmDatabaseSchema,
- resultsDatabaseSchema = resultsDatabaseSchema,
- cdmSourceName = cdmSourceName,
- numThreads = numThreads,
- sqlOnly = sqlOnly,
- outputFolder = outputFolder,
- verboseMode = verboseMode,
- writeToTable = writeToTable,
- checkLevels = checkLevels,
- tablesToExclude = tablesToExclude,
- checkNames = checkNames,
- tableCheckThresholdLoc = location of the table check file,
- fieldCheckThresholdLoc = location of the field check file,
- conceptCheckThresholdLoc = location of the concept check file)
DataQualityDashboard::executeDqChecks(connectionDetails = connectionDetails,
+ cdmDatabaseSchema = cdmDatabaseSchema,
+ resultsDatabaseSchema = resultsDatabaseSchema,
+ cdmSourceName = cdmSourceName,
+ numThreads = numThreads,
+ sqlOnly = sqlOnly,
+ outputFolder = outputFolder,
+ verboseMode = verboseMode,
+ writeToTable = writeToTable,
+ checkLevels = checkLevels,
+ tablesToExclude = tablesToExclude,
+ checkNames = checkNames,
+ tableCheckThresholdLoc = location of the table check file,
+ fieldCheckThresholdLoc = location of the field check file,
+ conceptCheckThresholdLoc = location of the concept check file)
Documentation can be found on the package website.
+PDF versions of the documentation are also available:
+NEWS.md
+ This release includes:
+The following changes involve updates to the default data quality check threshold files. If you are currently using an older version of DQD and update to v2.4.0, you may see changes in your DQD results. The failure threshold changes are fixes to incorrect thresholds in the v5.4 files and thus should result in more accurate, easier to interpret results. The unit concept ID changes ensure that long-invalid concepts will no longer be accepted as plausible measurement units.
+measurePersonCompleteness
and measureValueCompleteness
were fixed in the v5.4 table & field level threshold files. This issue has existed since v5.4 support was initially added in March 2022
+measurePersonCompleteness
checks had a threshold of 0 when it should have been 95 or 100measureValueCompleteness
checks had a threshold of 100 when it should have been 0, and many had no threshold (defaulting to 0) when it should have been 100measurePersonCompleteness
for the DEATH table has been toggled to Yes
, with a threshold of 100plausibleUnitConceptIds
have been updated to 720870. Concept 9117 became non-standard and was replaced with concept 720870, on 28-Mar-2022plausibleUnitConceptIds
have been removed. These concepts were deprecated on 05-May-2022convertJsonResultsFileCase
in Shiny app was appended with DataQualityDashboard::
. This prevents potential issues related to package loading and function naming conflictsSome minor refactoring of testthat files and package build configuration and some minor documentation updates were also added in this release.
+This release includes:
sqlOnly
and sqlOnlyIncrementalInsert
to TRUE in executeDqChecks
will return (but not run) a set of SQL queries that, when executed, will calculate the results of the DQ checks and insert them into a database table. Additionally, sqlOnlyUnionCount
can be used to specify a number of SQL queries to union for each check type, allowing for parallel execution of these queries and potentially large performance gains. See the SqlOnly vignette for detailssqlOnly
and sqlOnlyIncrementalInsert
to TRUE in executeDqChecks
will return (but not run) a set of SQL queries that, when executed, will calculate the results of the DQ checks and insert them into a database table. Additionally, sqlOnlyUnionCount
can be used to specify a number of SQL queries to union for each check type, allowing for parallel execution of these queries and potentially large performance gains. See the SqlOnly vignette for details
convertJsonResultsFileCase
can be used to convert the keys in a DQD results JSON file between snakecase and camelcase. This allows reading of v2.1.0+ JSON files in older DQD versions, and other conversions which may be necessary for secondary use of the DQD results file. See function documentation for details<>?nj6aVtX8vh*#ei-!hf^x=QwW8!CBYSnJ?af6CiV)5;VOf)ambMa09<9sP z?ZIZeHHiKF$!iaQe@zZ`o1-Vl_uor>3~#qtdCcf* zr77tb5IQ=Pz^juy^;0)y`HblAy@r5ZXSxb{*LK2Zzpr8arD%u)s~C_2F{${#7@xA4 z_OCOoPCnRinv-?+r-Qlp+pnbwMZDcaN JohKq!x7 #v|MPtMvkD&0*vZ?P9_S-3HT`_ma6>I(P<)4hc&Sjrs)UPdf zI(^Ji3zmb@k`wzk(US8c&aolLw|hYlpxrC{*| bJ^^%DX#RY@Tn`p7PT6x*yR8Z2Pev%>too+QEBn3`4$Eb+f z`B!r2Rnx4uBogF?bJhhSlWKu$N5 UA7+x()(jY4pvxrqWW(k>|z3#O=04?4|ibh&3gtD z%k+bs1%lVhso9%Oyzb*U!ktJQEX&U!FYJ}4r;bj={Wk^?kXCh6eF_~^auRysKF{nR zIXWWNx&?^Mhswj@r+~V{m(2$ppp;{FwqiJ*XH6TjB$}=~bXh@9#B|kyYX#!~fyjpE z7vMB3;maW2Ukg{o^@X3&x?6|27g`-hSa8M5-B=G*g5fov3BX*zn}d*2gdLa+8*edF zLCns{+2CSM{(k^nK%&21YMlL2q)v=br>a#@17o+)S}w)bjgcCXywVYhS4VpGTONOG z5f=1o ;O8Zzm0HOg7$SeSooc`0efbo8sqCm(pPkVEFf$;BTyPqM~M?KmCV&pV`DX+q#M z0zW-~_IlN@y_P)2xr~kmZp`TtM2eo)+^`f^(S9JoFtwT-%7~K0^~fhhypy?%j!-tA z_u~r(NWQBMZ0T?q;e@@-b0X}&78nvx9}MMthlrQzY4FR){f~dNrzLtITVXldA)oV7 zPZcpzg89>v?s}i)_1Nnv8{vq* thA#umA`VFK12!VGq zxmKgavEQQP`Tjv#osT(gEzBT!j~4Tkb~LKW&Kk=1``4dBV;*+dTx!9 UT{dem!{O8-xns$~jK%850q0BvJ-vTy% z@HJ(0&-Ae*EwV{qVWQX2!y37Hbp^h3%>r4U0Gr)MH4p`*yDMk*eWo)`5kFuHM_OzW z+je+m1CW31Hj`a?$og2rcGz3X;JsV
)FoJqNKIqvAU-%TpiO4Qu2z-Y|WSw}Mw zR`T|N5=IbyT{QvWHcmmClXKE-(Qx8kFi)FTVPAi%7Q2td;k@oIqo_EWa2Zg*q5orY zfWvRnNwcYqflOMbz;H2nSjkYUL2e%6FWbCPC{!T)=-mfc8j%C0M#0CI?`d9H0)Z@O z4Df@h-#P;|D}pvYlU~QSRkzfrIWZ%Oae>5smWoG`h!);rNsUn#efo-+*zoz*#Q2AZ zG6R3NJ@c!C*4oaHQ`>Nz50Y7AmBG{@n#mu&llLWrS)9N7@VU9Sd?Ug)D#ttY@z( -!xK*b7b5Ar^-?lQO|l$ zShkXK=*@>am-+(-@sburJvkQ3^C_Vq`K(p1{J!90;Z3LInzb;j$w-2KnM3aii{Q`j z05edH!Fk`FBGZTlS$T-x9i{KnPM<;_tB+Uxk@-)(7hg_gAm$eLz+Fu9@jC%inC*XA zkews1x+d8Gz>bcs%qVD7wCTZF>6KkxscW29xzX@A^7Z?vP`sqdQ`vZORt&tzO2|Gu z)&0pXq-%WCZ;yK3d28t1Pu6t?-Zh0)Yz0mSXFXA$RpE>$P736B#%cff`9fq{chVel zf*34xge3(&dXleIhACao<%bv@U)+DG84kPo5Ox2E`(V_iMcuo1YnE;Q`Q8#PRie(= zCx$vn6Ow;}h>ud-WnnPMT55;%lY&Qd2CnOzk*nk=TXdvze)wzbXKfW7h6V~U`}V~} z1gg};Hsx9j;YX)0LtOz}BnnH?8&`t`r}UdVY}Qqf Aj>=DOkY>_vY~%b4-Sl+ zRE@4#&DSk}4oQe>KZamtqDf~YZL<>^q6X>l6?D9QVK3LRt0+_`FApr!><;Dmf;jiE zVaC-x?%q*3uMWyC?nyz>WC76hr1DF+!f<+kpsHnQCpi#I%fzQI!-BzV%YBOrtsEda zOS@CzfUE$R_t;fVPxfazxW#{M+cOagM=SD}0|8zZryM$^RHn+)4|X%|@+46`S38{6 zN>y#g`T3S&<;}KB@T7XMgiB)8a}I5B18R5uM;R%@Wg>ryO9!s#RaWRd z$epNc)Yyw-bi?*q1lQP8hZJX%vjI8YS4zd}95(>6i%f~h0;hPxA+xE+Vt(3}3ho#E z-~zSky2WolO7Xb9P(p@u6?5_7bqOntqLK4S8XljK_i;VFzmGng=rj;jg~e1@U4GcQ zJ*w|aUkUd*FAhDh;cI_s-#`_Y)TY1m8YVtq haC?hvQ^v$`io1U%?(2$(Np(mATADG0 z{=^G&N0s3db{Bs$kv9?+SuaSv?Ne2n+Qxt1GrE_Y-zcaGH7QyxyB~(afqWvWYu>Hp zE!gx pwZq@{`hxlg#5i$aRs!`~& z#62Jvo1MAY1s>VorB+v`1y_rI!CF8n@YkM(r*-qx#{GZnlb7)!>uKEaiP`nOOGPS| z64f(1d=7QKWgB-C=IZzj;<~J3{>(PqX%!s|LZ hhV(}wMOQ)R}@wIaF> zV-jQLGF7G#Fed$OCHOXpT~G_HW0Zu_JpWiN@Wa73&-ahmUV9r;%c{1J-x&gBd8=p0 zuwvgYL5_ceu60cvWGpunj`{kJ$Y$YQU|n^l&wZZQp&GL+(ny$Xu3?h)?LVJ 5%=1(c-OYTM^z0>;J L|J&^Mp4g0wuK3mtErBeFEH?kKQSHd6{r6jd2^dk@B(pq(`x@+a*lfd2-D( zpRmyx*7h^!1d#3GEl&3eB>y15u*<_qAWE(cpHcV5s@pBL)f{(sVA&M7)l(7)B)Uqs z62n8Rw0dv2*JSZ59S74=B1n6(Mp5y=Ka79ArI|;nw7q_x2+lPbnQ1T#C;L(jbEJG; zeOu$oFVILJX!q(wHhFa&{%Fr+qfMQ8c`(g9Nu+6+m=RPGQwM zlocMAj8N=yx|@miH4JTbd7R37@9B32ax%&Ha9e(ACi&tW4&!{TLskhc8xcrr>_+}d z);`JO;1c^ei 5wrA^6GPi#}8;{M1e+TSc1Uy;laBLX$9nC zc!a@CHCB9ardAqWTpazZskIhi{k Q-)B2*3chx%@ zmB=AT*E#S$?@}^9VN9EUd>VhsLps%dtQD2nL1x(p_Cw-+)QQXLx=hAW&q==o-3RkL zF>pvwJ5`*#WOQ!)U?J>fuTjCeo;IO-#XMl6&H??}O2A?qS3bXDJl}`CNFmKIU8&zs z<(c~plo^4Kwx%Vs0K_`1N++Z^UhQ4lJBRjzTZ|48up@3E0JE=X^51`|K8co6=K|x2 zj!?};I#3kqVyOiu#W 4`Bfv*QgqNHAhzGq0X@S}`!I>M2gaSxv&sEBd2+ ZN zOEC86J@nrM0H4}k;-jj2j _CqK-fUW76MMHR_K+YE~GBjN@L#%9@7A~j5+muYV_Z(?^vdEXlS#b^-`q( z`MaMN>KY^H&AO`x`kpk+Ol;5x<_A8s`IWrrJW6f6TU@F*#XEnoe_ebS1Z}|Xvxq9z z&4~S+1S$A-r`~lG Hg5Kle+Le8D?&VV_b qF- dt?b?mmVYnLNJSz+ZtvK>d9`e_2O$?AT+*Glg`Gi*i 68-N`xk+z)~`VwhBFIg}8)3-@X0Ey_A|} zsByd^eM9v_>1;*$je6{7r5&AgNg%Bd(Yy_k5$}Jjmfz&$G4(4|#cp#U38t66F=rKl z+z_UAK}*X~!)zBC((TDa@cLvNgX70aMe?yfYtn+Ge0;?mG&-T%sW0BAOM3y4=%k&S zCGQ6Je#B |Zf^>du?M@baImrq0+c~^rmoKF_IAql z0*Wl^KucG77ZY2+8^(h~LnG+~G;smhgQZMdfPw%WpgBMaXa?Zqe*|y{2nZn203_`l zJe@$6RxSW~Ep;6RCMM>8TK>2IOg;aByhS>LEWrTUw;ygmTYCpPAlT)N;(r~e0R#eE ztbhOukS!1(siLYUuPh6omsQpR$O6GYr?)0lT}^F4W&lNy84&CYWB^#$I{|F}J^;+@ z!RDYptvR#4afv$ve@p<*4nQ-|TNu#84CwF&Vg@(>o$Nr)&Tqc~AZLK3lL^@6?G9Y* z0U)rMt*iN;0^aNv_J0-R;AH>iVfTi;k*V4{yEvOUfgD@_Z&_8PWd5$x#mdCxPi|+> z8w{|wc=I&3H*@{d(qGsc%^T`s0s=b&T!0=fe{z`u0p=iQe+OF=&$rxfWDZWCzshiR z27xXASphS^3215JWNr&|c7CII Rzdhpr>wErJY8h8sTV)fww*mNj z&j8*QjR_d=wrc>2fIrK|*2D?$XW@X%{-012JCLpC{}lYM-a5d)tNu^Ue}(@}Ar7{D zQ;3Cwhn44VGssy6 2JEct>>Pl%?|*#$ zc{2PLe;R49nZ5a+Inr=30h_;#-hUbXz-F#aPH&3;wGG}n|Ht{SM*swR0L_q=7VOQ0 zLab9W(p+lra|Xwx40^jcpa(-8it9BC@&l^uyZlqbHw4N*K39jbHcSZqZuOi$a(LN! z&$v6>jb}^Ol?*)1Bk`qT=*h=iqiyG7+6`hee=0^zJJyNvKAThg38T-;uD!cCrlxLG z^bAKj(az |SSs*H)6kRDe$;q0i}jK7ledR54~@m**Hey+SwW>?BF+Oz*YQ zJKb~xZt8y|qx#6O(Q~Dr$a`Fx sx=+>6XC??Wi7gl z4dzXCMUz+8DfHAAf~D!=4xZxS^1uJYe{(;OEAmkq(i}(N!n6&c!SagBc|4@NJ#msy zuhOt!6FI6~$!9Mrw_b|6^m?wd;*;~6P{;X(orgW+Yt%1a0qHYz!FJco(NvW$WqQ@M zFS*`HP@28WI~7{V3w4^1{f<%WDM{^m_Yg)WCi=XpXcG}*9`GT~Te@cITCprmf28P{ z75_-GMZ~nc9v{Dcaxr*DGYmnojKrK#DTVNhRfHO<-^bxLWVzNkD9TxDNTPyaoXA3d zJcDKeT<)Jpdfwxt53vhUFCv17`NTB@U1ol!X!6R(A@6hyRvjTtaW=D1g`tr@XIGVk zQ=X>$XnXBsQ)dzEy^^O(CL_o|f5CglYt$|d5q_v|Faxp2G~ak2(|O%P2l-jEIC8>n zNUFc5svE)g+F_AZh9toA;-C=AQ^_4wfCy@i{&}QKrGG-?Y!a(c &=*dBYrymxj7t!xednp2s8~%KI5|d)-lH^8=D(TsLKDvKfCdZtHXB$ zldF^8zr1PFsM79m$qckFY38p!O0(sWEmbVmo0Xk?C|E|12s s_s83!?kwqg0Q#_-;m= AoH(BI(nf|ouTL%D(ogg!16<~1~61a5~f5Z~iT}R)`#0!XO6ZHug z+hu&-d4W8$l<}*DZuh|I#;x%Nm&tQfzt^)^rnQUso*weK?4r|xf9IERdq1&vfF_Ym zTFiBtpr|j871(-K7fg|36iOFOJguB{Ry=x6(I z6$wdam_tQMe{(bp_xxPr+`G=p{`tLNQZn 76b3olUZRf1Vbd&d7U82SgxQ@olR{} z1EqiimW%#e07i7-w%D?pJ14}YA|QAA`@s%1HMVVvfBHTT_$b!Pb^!9vDW=$Lx$8JYBP1mXs+W $~>RX zNocg2Rt| $DRGy4rZ1BVvG0+?+l_ qQV*(jjPCH-ila=s!53;3iT~6$vjSJnbU58iO`; =HuFuACR1stT# zf3AbUdZ4iE)b45$x8s6Pn|MBuTVl%YQL#QX+U4eCo!`12u#lvTt27_=G5IvWJ9yHM z4DmxP>W5icA?RVz{>DC=>XF!E21kOT{mr0;=e43}nu>s>pZD-F?xddXe(o@S6UoQC zw pR$riS8Yo@e`2oWtZh3BTHCPcblo<@H?x*!nWM943_ata zdTa@v3m^fu%W1{hD2L*6gFIhChd17b4084cOl}G@QzZXb->(LNZ(5oRIG}9gCAs2< z6OflIh^cx{(2xfT@>VvpUc&3s-j(YT`Ef&fEa<3!w>(YcRc%9MVR-A=T+|&df5vL5 zL5$SA^x@xjB5&6k^2S&szsVH!NAV&NhH*g8-ioMRZT6FP;ZdlqheNZ?BTttnK6p3? zC3BV_MvN>-qnVLrn`f!H8eWcWWA*nGDEQaL&;Bl;7su}`#;P{6)}?R vq_;Y66+9CzGD zy1f04Re6d188wIRE0l)$N{Q*0dW~G5^=6pE^4E@r+E)+LEdk|J-sgAo6CIQdUFDxT zR`Fe3KEkkkYp(>Eni(3qQB}Zk@-?9CMpNrIyjwQl$IJUd84lqP{j0sne*mGQAUfrN z( NGbXDeLvVr^asemGG|7H! zd9|KDErVC!LNfE4xk~tGe^k^?JyzQ0P;K7j^VKmqyM(2|Ck5-35`XqhG%%1J&eW~j z1)V3GORUaqfvJ%`)aO(sO9<;(E^X))P3IBMXqW8u5G;|lafNzp;d -qg~ z*1+Sf{A|;F>XQjsfGUuA@ihv|E0NsMQ|)2GHF+*6F`H%iM5+A zVWH2$n~dnoR}b%%cxi2l`KBkn#b;deuW6s^o>vrH+vKU{evys13^fa}Q@skeQIkzc zV`Vat+u2jcLRoL{GUR-_Nq&~*Vbt=Uq>Q=JS%qp*7oU1pJ7;AuwoH6$_iE^OiOekV zvOYhbyzpyHTfQjufAV$!%N>IBWQe_|O(gFJWSxl671VKj^yV2%FMi~!AtV~-7-C^I zcVE8X-MjmwGpkHk3nXzmzq8l;J(UtFoY7X}80ymMQC;!=q{AfsAa1i`XN?jI<#@{u zXFLPQV#~U#YD;?U6K1iOm2Pzj@Vg}Gz;DN)J73B0l}fo_f8tJAE0Oj(vX9yl5(u7B zd^VT9qNcu3)uM|P;HR6jZ*KR78V zbT+BW=#B}ukNc53tO1G&A|NcQLRY#`hKVu)8V)&<%3^Ciy!WA{gAXrO1R4}y9%Bvf zikn@A3#zIde?_unkut6fQH8E1N!=f!JS#N4g}a9jL_72uwFt!=zKjXZrdzNF51H>K zo#x2-GFr|lipP$zlH2Nxd@I{{6=?Al)3aCZG-6Q404v?WpnpFH$G6Q8W$R))jIAs| z;`*AKIWwFs(O9;?)JuXnz8@ Cg<(V7V*j9B$%%jRJpFWJvO18|f z<5#1(MITImKY S_%PFAg@@!M|LbW?MENail|g0K&lW5X>uB0VmF(wgon?QNPs4S+xxJ${J0sy ze~9&pnSGk$-|0S!#>iIW$1U(ll?i{q?kf8N}0qy@b@!><*LO!t+dJ{e=ex(iP>3&0Un zX4QCy0U@JYL>vP_zw~<(RCoW;gmQTX%j^rxX^3yaG(BdTG{&8IJdQw`gbA)^6$QIB zwa9GL!hp5o{?=!RY0e1wR&TO#qQN2yObI`fTRRjb-N;Cm%io-a_Y4J(QNcTvf0FMI zl#u4P@RU@)V|2g?Mh3kS(h!sK@ih5gn~&=-=+Kv;r}ravAm+cA_Or!|hk{osn&?Q% zB^ujsnw;3ADfS1{JL e zheXS1d+x^fl%sS!un#C(AdX%af38AS+VenM(KVvgsOEBb5<=M%My@pz$Ts_5w?*_A z-G6IXUs#BWp!QAkiApL&CAHIK_DY;3F*hOl5ri~I(z;ajOxiCJW-P=GLRlXvUE9xB zi~4<{_B97*bqlDqVbmFhQ_glL!G3ip(oitjN>1{6!>O}y90ORi?zT^re<+a9Wxgv6 zf7&_5GpE|@1MEnngXFXgaR_B}tgW|ukCZ(r`k@|5)mxf`s%+LtsStHEU4!WR731~> zpZvq5QaLgn^R0de$*^^IVzjqMH`g-NLXvI&`j7` O_7k?^B zBTE%EPQ;; p=lu&u&neG+ zzR64jHJvLdBc3qen!9abj?tG&W ^tGJ%+NLK zuFd4i2-Db4cVh YO(j^9bwk@)O0x-Rl1sIvTUM`T3BH@i# z6;vnh-6uFCg@>F{!Ff@NSlkZ`Oy5L*+>K{rUV^8N8erR{osq!gAY+{`A&o1cx2c=b z#}+5Nv(rOpB}RO{+7LGHDm*vvl<%-&3^2Y|5JCqm2xb5Ff9Pv)TM@=9kdW8#@mYi{ zjc{gD_7@h1zHX^T!u( 1f2NGUJ%R#1VtTxX5)y+PLaCmmP`}B}6A38EY;bbKNi4wm4x+Q7#LI|4 z#PY*PEnPOLWPMIt_=y!oO~#bP>jzZ8Cn^#-eZ1^76>Lg57kalO9@=R_Euu( _>`clUD)_Xymv%V zDh!(QHZV^-PY;BppV ;-d#?;@~#WV;wp=@(D75A zYGdK!e_GClTTyV%{-&FWWfG%SRbh=MrO|o3DY5C2Bt$z9!%@kJs_G9Y)>vXFLLE2~ z5|Et~9TjwnSBJ*eiA%8VE95(+y33nggvLAhUGJ@Q|62(krUNN&?kT2f9rst9>-_h) z^r9br?yFWsXyF{k*B@B%=^$TfULW8^Ak>Z_f2*Xp%Mi $dM-b?d-kM}zq!$DVxYxXIpW5(|;Ms%r>Zq;Bs+MxRD3;UTY+Q~<(6!>_cS}77& zOybveN&`5CN6qBb?sK}?ZrMI9TAXQIfjRQrG+Z4{eq3=BJud$4^XKNcJj&%9^jZsF zfA)?*ViwnLiKHusPPx?5Mm9B!7*#banMfNR45H9!e_#1Rlo~X*8; p?Wo(7~29c|`4w zpE17wRW2Vi1~)e?-M*)&X^E6vE_`Jjf5uBSj8SmeiXqg9ePW&By)u4st9UBeHd4f- zc%V`#7KG%pc>&xMQ?>|dGVPa#XkEd}(%Zsg6&;kF^8MkwP(ad@^nu~m-8~rV_xO!{ zhs)^*pDO!RR>VW=BfO58;`p>rSl~$XD^;$p#9{XZ;w5Y>+Ta`BpAsjX2%tf9ZMo zdk%{`u^rw4Z?4%}+(xDjWm!@JF0?UvI+yDZhFT91i0HyG A@Y9@n_JhTw9dN{nj5l)qKlyRkGo}6%)_` z#9cEw=tlFH EYy2&_@;$KAQYwoOlbS}S#<9E}>*AZ{LU zSg5usr6BnV8ybRMdKOAkS&vv%p%%v^QbgrSknk?Hqa@5cU?VnIBc0g=1iZwZ8Mu}K zaa2uP%}0UGsqbP+_u*@>a*ec?7v3+_0j7%;r+qpZ3b?8_I|vIeH`pO7e`b&x4XtRe zGkHf|?$Ew9K4$W$TkQ8K`@S+}v~dd(DyX2~X>1T?xrt#buo*&_wbEbM%(HjJ#t+`z zCpy6-A|Bl4P?_=`?mx4(CN~<;K!UgxX@81UYL@Y~xjB#@LecLb4tNgPtrD8i`A}88 zVzRUudwh&tbEH~SvpxY#e{>qR=oS|M dmU^PA`p94o82_JP<8fX<(Wa(on zVnLusA)4V@ kzUZ=jXJg9HJlvBFdO9`r@U$!ld)<5e?T!f-w$k=i7$2g z@`uk|Xq-D`wU9Tr3De@k&D79J1>W&{bU&=8z<1X_5in}@sdjlY5K*sDBRSh(&_w)V zI?cF-oM7gydz2WZwLE*)l)DplC~W|=XG0SWk*Jz{79h9hKBdNU`FdLY*(#UDCp5zO z(jj0i1DO(np4*m(f5B8$t+G+ifJ+cgaxl~$4QoAwX(M-1oSOYQ %z<| znu|)tg73oQl+tCiopwIs5zL4|bNO2b7{~2@tx;T2=2b-Tf1B^tfKnEB3j>Q&b6EP6 z^C!q7yKD9ck_nQrd301aQ&g3aBvooWWFWS8Mns#etN2h`K6twEJGoxe-*0``bXgNl z`=-&>>pPU`s~3<)#ftt@#aD)Ce2&7?QwDr0fiQBaY{Cg4s@C{T=PD2~>SfcOgSt2j zoq{6<?;z8X#wSu2VSW-HCwW&M5sUf2J0Tq(Nz|N56RXAN7!OXtuUhe$#|EDQAdDltsB;+ zAOLz5FwHWK&_{J2k7UyqNJZJwC1j2-9P+cMPFz+re@J~>r4*CEpq;zu_~ur|#*qWX zYA0;PPzNWYRmB3fNloaHoGRxx3gy(e4&0SQior_ZT!d>b+X<%KB;|Dj7CpNBc4s8Q zQ4NR0iaGM;S|HMWFX7e9c1~dBYo+vL_en`EYu1hA5-=(=$S`Is{BlGV4arqWKI|jN zUFcW-fA7b7_^+g^tIy>p9}MrP^j7`Ta~s_?bTbE-fTp)A>E$UzHzz@ghvuE_+q!$} zLuqa UclOc(A>bAC%YUPSeXI?Gzt$2O@mon!o$}z;^ZK z4tnp4xjK*c*$Z1E( Wd)9$i3RMQ3?Hrfdlnz~ zZyNdRcJzTC@sK2ThTv~QO{T-ftSMS_z3Lxi1H 0(0fyCv z_TcmwJZa>w?Sdj^@Ob$UtW6*mKAPfc%z-yylw&O!m$Po=K2UN{MbX=XmciJE0!KXr z8X0>j1)l}gu07zYh-qSfH^IWaB&f}wfAd+Aw tUL_>&KFt(gy-o=SwjWy4C zK?lQPgOw@jq>ZPblhL%W(LZbx-!S}41o}tm9DjGbn666 IP^dXkXxr@SU6%l-)in1x)~M^@I@*W_{*z?-!7kwxh$d zV8x?vwY9*I!tn)^>fP;niI)!2rb`~wpZ0!BE;d>*h3g2-q~;Xtkjp{$e_o`1jn0o! zhWC&gUu+=O9}h3ut%VVh6Oi)zoyWEp!9%ph+w1S=T*Y)DbfBlhzkM@1sGjYO&Q5pr zBIT^{3tHAyGhsDolr=B;9s#l+;_7CwmO#b&fh{jzeWK37>cO@q+<;}AH7AALcxXqk zrao&>tNl=;J_0vNO#uBEf1!ju-EN~Z)UN6d<2ywIJZ4ISo&dP!X}VEcBFjUg@T}|+ z5rKL(?0t`>q3DM2$k~JjgVc}RW|E3K{RI)TeOCg!PPQ^Js3ka^2oaaFfT5|vUWrXF z9uxVkN1%C~vb5}d3VvUEng7c#t$TCFD?;LG-36oo9boWC!e$i|e}qj@A-6_s I t+ltJFnRgruR~^5GD*A6^5mTU!=G *~}GmOvaJWEm`ai_4pL
3BT)+1VH+ zW<5n?gvHm=6`F2zr>KjB*R=$bL)Fm{TKSh9DhDndj_=OmULa_s43K;#*L94F64G@~ zC^~=&e=IY4JK0bvw{!87p`X5a&p&0+1xYr%_9~REzKq~Q3wll(jldDyrzs#X>mP^i zpcK>#(vGASx3h!E5*8cd zJ2T3Tlt1#~0rwDFAB{Z}D-ydO%C4L%@K1G;f6=|s9`_uMK<2dUF$0bcmRL7#5zd^t zi8tbUM$X4~{hs}PRf=-%Ncyt419moPPe%PpfChph4?Y*o%SVRT8LU`8duaMtQbU|f zZ8|IcLCd<_6H_xWNQC2qq?Tvw_D|2f0>1X2ZNo9cmJ>4edF{wJX%_}*ohHNJ?89*4 zf5?LUjC{Gud EQE)wJy>{o9_a>Bi3`2#KGLL#;LTpZU(ln342N~4N_@~Pw%FGsfKVE; zA#tiNaJ$53z`-b@J*5@VOyWa(aJ6G}iq=7qIH+3g`(j3hjhult;pgVMsZIupf7RYI zMeZ9N^QK!e5jgx_nb+&{a{TxTUyc?<&X~66r7TW@@i{k1>}x K_N)5{ z)=WO_CPz*6PfE!^4db>G#i6^ FN3J4k_T0POP3IWFqxA`X4dQ)DKGtP3s-6|(QgX~i{nk-@ zLjQG*kLjbK&WqlIpQ^@!?I)=f-9UEK2wY6eg_x3f5jq-d(U%q!s&30$f1OCSzW1#- zy;eZSriST |%P0$RlR zTlE^(1k@IrEB3*v{Mwv_Q0dT*mMlkU=yC4{=d caQWk8KQbm8#Vy8HNsG~@ z8_fKqNAll2IiBI6e_caq%iO)%jz$i{RPbUuMfue{lcxez);Z};9D!B`g#?#$^YJ1} zmNMH9flrtLv1P4H4;%?v-|GK?6r6 eDD0Tk;2SZ*^zHVQN$0C1ywm`f6}#a$CV#&tq#asqsv#G zA=nresPAWd6Q-gP1R2B8)y&HB6<)Bhd61MBcW)HVCAah*5WdM_eB9aG>XJw%^>aj{ zrPKFabxVj|9-OK(s9vBe<{0@p|7qQ9aobd^qyH8^E&ud!!PEI1>-jKovhZ;{bqw-6 ziX#d03T*2$f3u{+$aRplP=Pn;fT2)N+S=6DrccAB$2RH9GP$E5M=osLFV(-wR2`4B z1NR^-<}$9e0Nj2odWS)CXb}xkg^roKx`KNCUIlyE2_;6S?xKEKvm97a$@L?%VUqnc z9p;iLW?{f_n^ zcK0m3CpgZhgvPabXiSI+E+*6BKUgzbl%}KS?W`ztM-i@}!-|82_;_*yVdM7^ZM#I6 zbKeaOy+YjM28dxiJ(vBmW;0L=^F?e_(v`=h!9S%9hQ~}F`%PlcM25k+@EVx!D?DXn z>PzXAe}tD|B;VzTO>>F-kzM z6h77tHUzyCNVAwBRS}^JFk=@*86{^an-OeAgy0_GF>s+53)2 zex!@;o$7ce@PZQR&ytJ!3|#Vt&D-+eT;79)7XSFUCXg(@!+m-&u<(nWZ@sSfMn(PO zS`WI_=o06UMKpZ$9^pl2Ar`SjrHErzx80r;MeO-pxm#cq#`oEsdvroB$fx*OSaG_s zGQukiZ&B+ITP%_Dk2rP+?N4@Wgvr$fPiq*h>1ya#KmG$O#M7OVza%>jF$ynCWo~D5 zXdp5;HZhkmXaOjH?OJP7+ejAu?qAU#lbS;Per=_uia?kllgUhg$viUDmM{W)V{EWw zlFYB)b6b{>K?Da#K5T7KQny-H-RGYB=qnk?1hdR)=9r9zMW!@*f@!6g)J!|cq+v$m z$}{65lY!YNn3BwCHGq`Ih_cK($CP6sD5fHdct8tGWCPQGm_kIFl1U{k(;72J$!H<# zv4&^TNjJ~|t%IDwTEZ}k=RBq}nxLUIObHJ#mMJA1Ggwe-LdBGEks07{LNWs-yw(FK zrGkTUkdFeeAr~!hp@|M!0HG0#RusW7XsV?O%t1nW#VjF~jyY(cwHP=cHBikHLfrRE zTio_|%wi6IjA#ecq>uv?hx;x<3<`TN>v0{TW>7#!?FOLI2vF;wkOb2Kz@-I&P*e#} zhie6ugGL(y3uFaQ7%W;3IS>FrP>9x !gJT0+!VXz8hinjjkFV4Mgdbs!&s7f`Ga zngN;>pioA%5RM>BYC9l?BtS;btWuBzfeK2YYc;@sMaXMV3&UEC3kl|}#R+}@K43E( z*3rylOHeU@H^2z6n8KW7SqUrJphyHG!P5x2m!uKQ8(|BHwVVJ;QYwI#)Pc8JQXRTG zufsr+9YiEy?cG&WT+x~*a3B!ef;%L*OQ8WOK!D)x65I-RF9HMz8YC3%7Nl^u5Q2q* z3c-RF?(PzxNp8 $kf)pfL z>OGF-N(RFnUpto}4h0n)B?WE{J3m8tyF+w%4qq1-euZBjMzK1#H?%kepc*ZK^mX_f zjFtq*wx(&XkNRplu3IM#mG0dhqO09Ud~m($eor7HHnIgM9%stN5*yjp9@}Qh{;t#7 zsmr~f|HJ;LWMaSf7QoqsahXeOz3R IZX4XmmUe9jxj5up}|vY L^TY6K%D7qqHx?Wu!!huS#)`icw_ghka8TeoRtR z7vRLhO?)&LE?MUjda-FIAj^gr v?DwS^TNCN7F+@-#{F! zfO~a1^SdRj)US`>A@T5p%h;?!f|0&Ax>F_;2H>wIWa!0Hm@}61n;r~V$6dQ1lPB3& ztL`7a3_P8wZ$Lp%>#okE9G)UBytjS%%gaws-e%>-SB$M-7@WpFoUC5lb0bD8evdrQ zjjd3tnggQ!3Rr2(LvMG)NG~u^6{`WiHxcbuZaez4bmC^f9bFgJW_b;~|BZcXS)!5e zTP+aQ>DQK~jORkwm#Q^P`N`nd(PG`pBTl)478zM(<2D8?vKOgAGB(OV;$Okp@Q7P9 z)^L#XA#bpHU?sGDL@@VpA}HMOm_Apqv7S;(xXIag;i?VOiwL+nr9@S4wH6GnPTVdy zrsObAb--3Sc=mZ~2sN5x(~&tPa-O+8=fh}^Y>DP~KVuv@TiSJ{n4WUjw(HBMcO<-a z>FL^DJbdKu%Gzi`@3080VBwy61SxR!x*#JQJDSN-+^6;et0Vj5^Q)FMV^)ej#+vH8 zU0e|%Eqzq_VaSJp6pO*m1552-@{bLBH?2P|)`UCiLY{P{RyIn;3|=L0fj;&!E|yLu zP5uJx``1xQu2&f<>59$9j#T+|CC}x55>y#ITm$< 4qX $U46DB!^V8{qc+4t?M< r(=!_FPhcN@*bBPag zbmr7Z35~xoc`HSJuDItGYHGeOvoVt4$cp~8`1h0ni3@LN@XRal`rdXVm0WxN$+mo! zXOyS+=f^o@lrxEP+UyuN4?lzK)9So(gMIC%Fk3FNug5dUOGzmG9PIBm(%a*0Xfp~$ z?ZhoiAd4y6KBNikx{cElr7xDBczEWXy$Cd!DNz9#Oq;TZQZ_@^nU3WU6DbaEg5>sb zCHp&aL1Gzh-GSa Q^bC|Cg9{PkmJrAQXn0}E$Yp_{RKt^;de)%aHZMCY*5H%gV< zeyU8CE@Q{@-JQt>lTNC;jIP64P+0Boa8hJ12mal|u@0Wa>Q@}|!srdb8_EF$qh(gRs}F^IKVdUqTZJ3Un-V4o1G{voso{-q zS9=POQ#-qN^=y`~@^)X?xai0jZOUk)oyyoxRU4*cPWu #P>&95PCA
G$9&Z^p| zHJvscUsa{$KIq4)$+t|PSSxBEdWq63o4>QHE^nN9YVyv{S4Y=3zY<>pbLR3*Sw?F} zma?y6BG%y7q=*fkD^-6M|Dm_Xx!0h3?1xX?%K_lPT)HE~mC-#5+|Ts*h2&cAjFnK| z^&aQuK*v&F-}BrfqG0|m&MP)xHkqFe>^dsp8hjNXxtv_Uc} qJo?%^S=FBg%_I1=UY6CD~Rto9YmAVYh5)JM$Yw(cs#bH()V1$d&S z1_G~a(UGL3 QgXm^xB%e+qrm940*Tq)i$ zWHM>e)zCy(d@`%9wD@#jXze1)#? $0@3`GeUG zYGT!QjD8wBlcp2r>3z7D>N`ql^NR?-cE9W)xGx6ZXX)M|ej4UGhk3)+6$WQqd_LVk zNoQ~ylRH?gh<4<3`L;mOlj~N{T;e#Zzq+6eZ;z-W4*J>$lpOHXPopIF^PF8bzb&}V z-0j2A@bLhMBJYNGcLe1(-Mt!LZk6F&;D<&;$IS1$KJSD^;R}}Qh8tm_oodI+xR!|J zp{ LKJI;_w=cfy&7=56O@;i$G-kp z-&T{8Q5KaE){AV)qYd^Z dGHfX>>j7T5tIIlR;t2}om4f{kVU}}uarq-pA!^OH&tagG)@y|k$y&go%HGE z@}*0E(Sk!UYFw`EMyDV7+dJQR)w;F-x8yC|3KpNeQJHn-YxrZPnvj@yNw!>g9vbiO zxLx{|(ndmO+mhQxh5JgJRE1MI>? v6WGCS&gOZmKsY7qTsx8}{V0&5}T*{0W7YlJUX7;Gs%z8LTKtYU|B zmSPrzsRGWJn60e}Mup(2Xc6UxFrl0 5>TxRGUU8*fV z8$ch-nm5w#Zoykh!s8Kt4cNh;bnI`e9Dt%mJ{?By{Wec@Gh_iZ8IFY+xr>L5PIxc? z&ky79ZP*)Q1Guk}{khK+B*;dc45M6@6w^6IMF+r|OW(1M =}olnZj;gUT*9L>qBlwgN;ruikx_l%e>I_SV|H?62p4(fm_LRP S)0|v+aN+!H0d&5iy5Ltf&-l=~8 pBB z|FP{t8W}3NQmw)^VZ=~u2*JJ#bexzdB({b4%d?N<(VO#cSnM1UoqC=rDo|= mWu{|@IH@c&!RK<@v++4O(n4E-l($SqMtDgPBV)0w;NU(Sznj_F-29I(X2 z|M>*uUvjql6VLxSXVV47w&|U|?6y<&R)u>H1iG-WtX_5kl!h+5!X#)$LZWOlzoN-m zyZO50SHp;}{7`0-KXCdW>HMMSQvhfdPJC20m;IOX-*i3!dyibH-XfZbt0ujwM9v{p zsw&fxtRB^k%w`Kyem>y`TD<4;4*nV*cC-FRC=(oOsLa}4T5-XB@SQhL^L%gJC>Pwu zY1_ Ioh#H)MWM}N`kbS^>o6W;Xw}vd9Sw3TD2QrstaVCyMa9&Zi32o zFAfTQ*w-4tgn~MH?ONT{^EECA 9*khk`aQ^02+EsXl~wS3?s0N|A#&IKBPWW`gUS-;@-R%qS`JI zt-BfgwI^3z`b9^KDH_jiPQ`AFWja!&Y+U6BG|_{dm`oW|nMMh!86)hn>+6}rCo_(z zHE~ZfF$$?R@L%+IyRzuRyDB>+i5_C43KiCHzXl1AskYeh#|xfTquQ#D$+En&Ag?IQ z0^NZ@>%Y1^wy^HnpMVRP`U7=Wa40L6a~OWt bD zkkShkS7_C6%2F>>CTu;-+~NT9&WdjuYAv_HC7L5;yVLqH_vW%6UEq^pzXaLu$7H@K z%E8_g;`%1+S_~uE%vuGqxmv%!>bKPvKg;E=00v#Ty0scthwX^tcxoNterrbRdMNRl zRw_UA*FMg5X&!z|XRXI{E+cYp{>vHgzjFTHR~!F %DOI)vf 1;aB z*fzN{MAJV0m-95bp57y8JSffKAI`x69a;%8dQJ;v&{LIK`^@8rBw?p>@A3uF-3JAZ z%h?9VBj;V)%YdH=k@>Z~;lY&P5AcyIIZVVN8_EQlde-k@+<_9%VM^ r9gwpt`69J#5fR{q;PjC7f{??BnWi;{;8(gdcWlF@US%wm!Gb(%hP?N0{91 zgub6rYGfU@UYfnh_4!+EhzjQ$OAPeFU`Zi@D@pJCq(W+mGgD~I(_k1FW0GrPDtyR; zQA)_1$RF~3N8>z0OGsx(IrCGB2>Z5Uk&~ail4GY}eoilwz`05LsCr8ehNe%X9^%bK z@tDzQ8>C=!&>Nma6DWD!W7PtA9&17F>HU1l*0vnj{w@%y8!v`9C!AkV8f+>L5&Q E1tY{H6CHfL1tzSg}XPD&e{=nO2e$Q+1o5&~hd~bYqSKwF= zhf?MFON`4AW0B>8A(1Iq_p>ZfS+Z=@X!FW=cPRLL?t3lbkLSgAz_DkRk{oVNai?72 z1i`=5-IpTQ)0MGsr|7Wk>T9#eVfKB)S(cJ DedFU>syeOZxv0ve>7$G6R<829`e|SD@K4psjTWwJBdVc%sS@8c$&-MT9 z`M*8?pLnk1_gs1O%#2De!Uy @X$X*l2ves|2Z)s w3tf<<@id5FrlEVx_6lEkB+60kCpwp79fWaG1fLIlW!1NQ2_Gg9b+F zE;6UoGM6Xim8$d{W&jm~_zS>G<*!UUbM@Xd4Q-fjYgMCl8UU<9e1s(^iJ^mOZ%_!S z%m@t8sWGTrXL-$^BuXV}*=9>=ywV`1SH_cl&n9?@A!0bCK4GjWQ(FRN0uX{&DFIF` zMN;EWnN<2v6*DMNFEPk>b1xfWP8av9M;HmWTi9jNg|s!eLo7E0mcm`*2+l$Qc$S{u z197wXyuXM}Z+uDh`$=XzhxBqIv4Pu<+n#-6NNvQRuvDRiw8I>q$$XSw3NIpnIgQG) z+Lv(rFvWuo_8njet7`zaV^%zMB)9aT66ik=GLK!@4?U(#^A=tkv5Ea`JDLVa?KFpy z &_X1nk7r9^69(T&E zA1J(eet}i}FLD!ef;NtfYv9!BWP4l;5&;5duBXX|O9+LgU*KVdCbk+YCCVYvyKJi% z+g^pHv~@-!t1U*OpKl(&5>aS6+G8}@dmP%^eH?z=?(ocf?M`-Fu1|5~Yff>@=V3D1 zQW_!+Rvb!oU^3b>RctDPI4ZbY?=y04B73tjdF*K_Zunk&&!{h!{A~l#=18~H9l6um zTf}&Zs43xhUSrG?rjvgjf1L27SwcliBxbv^^pu1J1iVV<4!diSCkfgDul>f4sJLam zd9q#7?G7Q-M5c$t=p&OM3pN+(BP*bC3iAu`3G)F21h{wsEWErdY*;)hE>^G2J+0|k zUyJec@(b|(^ArfV39 }pW~2sCdg#6f^1lll33QxR)1~<_yqX= z!&OJy&()fqN6o@P%hL&qN0naSu_?5iy}O4eJwHI`pZ5%WeEcH+cx(Cz;^Z b@rPomLu!az70q7=oH0 3eh(WHxD AkquDT;H&j+A*Yl-I2!Yai2&xSmE(J@3S)>sa1H2**X}*;{lh zd)`?@mk3(8T(Q9#_oaG=PR~cqC);ng&aJc6dac~=%OIfYD5_m>V2-Q{^9a2#j#nUR zK+3vJ1C~HhlyFvfWB;_Bxvr>oLJAZzByRG0=ox3QeR{E)0;(LY4x0)cFz1WdZIJ&d zZ@E6*`1CCxEeo+NI}xg6GB3turPcdsU@2+bZD71&6Pv8Lu&slx+0?`hhg*W?@?hE9 z{dhh!!0BrXn&=i-{sJ_3MQ-IScGBD1H$CizeR2)JBRVA$kK|hViPmgNvvx-A9xQh4 zc{Z?LTIw^Mm$_z7opID1MY83VCYbJ4_$$Q=YP)D=qhd2=b^nap>i}1Nn-b$a`o3~+ z_5w!C(PLYcLZCfgdK82#KRRY@z4*&(sj (WtS^D0#z5X5E?l^-NO}A|1f#+{p8lB{x0=9Y%$G0X1CgA{CZ>IkJ z=dw#uDu=y#VBCsz$E;C!DKiX)^a+HQEpeaS5sB_vDBzJ?I#f71T{~1=pr5d$Ktms# zf(XEg4v@dof=|mObSLQg->XT6Xvx`@;#S2G%D2u8uxUbfml^%zVw0uEA2Ks*cFoZ_ znpgP6#vz%!rjc@R-SkmC`;MBz=->qD_lH43iT8Zqdr7?0NhL~~7-TGcTU$b^y>_rw z;#gz!=ueF B@}JYxY0^vD+$r>UCzn zi>Gt?W2B8j@2utKPWIOp`UUGa_dG*TtF{I7&FiK%e!v}^key6HN_KjItvQ*jD)i`d zQ)u2`hUQ+HE5W>r>=0;K1 vW}e%76K!LtiWI2OF-fvu{5ooCf1ejb7RB??&m5|_0p?S)c^gwZq$H> ovWRxHPY@oUojXh^Q#wH9w!A z6d%8w9Dr9=Mp#%tS^yv{ElK}hpYr&B%GS=do_6#C!UF#&ZD@W9t3J^n=s%{g3>_L; zb1WDV-LxXY5n^U}Qh=l}rU7(A;(jG7|E>j9P=Y0I4du&y>Gk&bURQH{1|i|~>4&S= zUOQTE;%K2Ci @CD~~B&5{gh*@)`QJ{WSdA cZ3o|WfOI^>ZW<}3FhEFn{FQ} m?I$ %jKgA^(SQt5eP|Pk2t^8nTjz>WQ<6upVmjk5%vNhJ7*Ex~>o;7c(7vy0;ce?+X z x&$kIAj450H!I7r;P*td|)Y#(`KVmyC5F;erfY<#cE1BlCuWXA?2)pq(Ec znY>a4A%+o0I-b}H@=^a021BD7VEJvby?QWRdle2D#5m?&lm~|tKKr>JNqr}$AX^fn zDQ =m*m_Wl_c}UU?RVF4DF`>qT zfE9o}La_0;3>9nM+z>&gZqJ#EiQ ->S8^=JbMc6 z?$!~o+(zR;OLnqHUZm33Jy9V^ZxKXEBLYuycQW1q=Z5_?2ra!f)V@GrmD>@9LI^ML z=Sb8#2}+o5fVLP=lkX1|6c#+&@h8 }p+)z{h% zm<2@b9kRzZ7h2(G{R$hGuM5tg5y1wj@~fY%rN>z^=gE3HwqT^+E-F%Ks9+xHI$lXt zjbX8orJYjR9J?UO5Hi8t_K9}kJ*2sDQeAJEh-Q0_$v~nvxXnsAu1i=ZEkvDMWDm9A z=r+cwCeJpemVXQCnTK6nb9EiR+~vXs22!`z>kE-AV@9Iq8dGjfQ!y~qBMp|SCQBnq zs5Fxvy0+BiBV?rMuJhGAY|NSjYaF0>k=dd0$sXqHm!pe8)$0kn%Sz8Q%7Z`L+v(HR zmY#|C-w!X>D?2?V>a_(Sd@2-&dz{!gsZ-tROQ0E(e0zHH?W4aBFB4?6RbO*~EPIjZ zj%(pcJ;h{ZVPbKS Rczf~QBXtS3#paWMSdbtu#hAyD z&d>d#+-IpDj%)vnm45Ump=SRDy-Bn@sq> i@n#bqi?7SxCC3X6&v z*V;%a+CANeuB@|_%X9kqiiZ|c%3x!f|NYt+6F}j6Z%{8pZ3J_!B>JHcv43Kxj4xYr zV+mG!9(ld$nY^5*QI#|^y`6E@Uf^;HH!tXS3D@0JBR` g zX +uRS dGPm%w#iU^jgilv{*=#Y-ve06#7Y_ijQ*+SH!Sn<`F7qD9la@J_0VuFCYJ z-RhuQeOKkAHxMUK+we%hq$>#2Vr8VDXob_*3U|Xm7Ahe?7qlF=!RLRwnDRpRGu@F^ zV&+!(yc(P6ccvw1#rMalGkmnAd7}LKq0I;o`^B}HpQk8YE2Z#vLQ1jxF#ye);q=Fk zmC7Q`j1lb`&2)!$3Awcie_a-~C={-JJsl>QRE%<4yED_iH`m5+>313268@5i^Mkyj zJO SLK8t6U_Wr!Hnsk xM)%&zz(`_S|vR4~-vSYM$BKMOy-nTtct`cFL8 z%ZkZQpTxLFiZgRP5rXS-QUiSBvA#6ml=VwovolW-WAa!tSE$_Ja&}hZY_V?}21P`6 zZl+@@j3j^Z?;rq6ezqD2l|vwmh=k&|MdQ%GYuL<_^$v@8A)p`fZtV3ks;9pJr|Zk7 zKJ_r6=9=brWu#l!x5Igja)SWj>odI0a9sR0I?rcdc4kM+o^o#wDrTkJrriNp=fy5s zs+P1OE_CTtfxM}TUj9=N@7gNu+`PM!L{Nh>u9hdl&MM8Nt<31eqYB`c=f5DiY!OR6 zjqOsi1N|ja-LZB=7!T!Ww^dGJ2Qhhwvz;pYE|rF24`%a&NgT7{pP$`4p5RH5Sm~up zj|=W6R|lLY1+xju;?4>2E9f2|dPQoNdi^xZmgt}Yo8JFwy;-w#iIZdx#t>iNuQ^q^ ze|+E~f-LrSV)?T};T&(voyDfT1ahrAftf5oum&>S{(!I53-hKlfHFKzV4B=qEfkbI zK~TZ~M&&m~0;yf`I)#ulwGu_5{Zy44 &)H! z8-ArV!OkdEy%OqxBtN<0F|G+E1QCh;*aPbC2>q13f FG#(YKe|8jB^qdq2pvRB)>6m%&K@3qhrtAn7o&W#Q|ciYRtJ z&l>sepBbz%DQ=`+0j09Q4!Vf~Bv0sbQ{B%$mKwjW0`x^yw81sy3VV{XO++}}`x`YL z*JUv?u^Br;f1jyU#ou`qlFPPPLuL1#H25MlN33#Qld`K%%?aJj^Uf1ibk2P_&$Crl zScMjZW1(3I4MqR$dIuC%NLJB?pWM?e #ly0h>t$^KW;jM}0ceM7Hx|v$ z^b{PE9JPPYL@-kiJgzqg#Qy9sJBYodcODmXRg?H%sc2}ov7msmdLh&37v^?UT8u^{ z?9cGBnw?lgj@##1kw|9i&0Lqyx3vFFJuVJnX5# ETWu{b{kjTgtE;)s#ng)6(yld9Pm1l0A}R8>(58lq+sjGjN @|(NubA90Y z3jQ0kck0wIvMXeE!|>9#F~# kze}_#r?Uecl~jwm~@CAb`vYh{n+T z%`ibdx`m5wY?3_sv+zooZfa-A>Y;gxa$!19CM>m$X+`~W@PtDVbt~9At(XR}JgX$# z`dQ1JRD2E! -N=7~oVrMy40diWx(YW_fK>Tb&rsIq9S%2lD< zB&SnZ^9%LDJ$eaHjZE;8byWPektx>Em`x4ZvXBY6*YN#?Ow|^)a^0$v>)0~}<3CEe z5r1z(sETg}y2h>nLzrvt<>=ER^;lM58Zzpin9u)K6QlUO)PUxEMy)2Ts4sy`)7?jv zwGb;knpi^g;t_@8k_7V%+^?GGL{nBCnmw_cu!-ICvX^cK`EJszTkvG>*<}s$(;d&f zXV)I9hr?Hk=&$m;)^Aq`95RxRnmZV)uq&pZH>1~}-`!j9Z3{4bj2xG=Z2K)$1uqur zjC0!VEbUjx6Is9srPZdK_Z|`P#MrG12`OTJdHb<+`Ww`w%pffSzI21Gk2^D|7M=XI z5kZ^cxlW3M?{17qrYn~tie=>X7XCu<0u!ean4EXu4k+u@?g4gx5>HY=jNER+UqanO z;wE*skZR;oOQ&X_DQ7((d!I(9sA?{)Ooeki4*RV!m5(38;It8bv4CjEB~wJzT9?A% zvt-+Sr5r+?J2Z9y_L)};=Q$h(uVWASUmILO6)d DYUC|O-QAMEn;>0+r=w+ezJC>ozHw+AJvJO>mntPVXGbQTvrD&6 z^U!#xC79d?CFw4eSGnvZ3n4|eN(4EFmc2v>_PS`}-aqUsmD96GtX@_`X7Cx&^0C-; z+96w&c{%A#`0S8ouM#Byp#12CYX2K5+^qi}sPM4=H&dpx dKaJ-+yP z4GFXL5w$Ef@Q|`ZEZVP_*RR??MJ%}Md~(iRQ;d%r7q9)bdqN|E$HiM6p0Qnw@Hj#} z(k=W(hycO^oZKxXPW~54r``B!CAQ1eV%^Qt1vmWW#d0=rQakLB_0Z9O0fz6o2J0pL zw~n)Tu|EV;@U{fp_}66})6XI}n$vMI J2{*1qS<_sz^ z^{$$b-ErGy^}IM1uNvNJ*gpmVwlh5!i0@08l|zue%m{y=PHY%C$Z2No*vlDpzcw$| zm!z7{VpH}1UDoGob{>t8qmGFm1boyo`Hp98t(Z1}HZTLdSyQ#0HP9C}N2`4q6bol$ z=73Dx9mD8StVP6um1LnV${pGXZ%s3b{zxNXykJv{e-N?29DQFrZ{W(n?|Il4Fboj) zz(v*JfMU@4r2Stoc`)l=D|`NRG>^OGHNwiIos*<7KjG%w5!P5^*{n*+A?tLbvtBFH zQuknd{fai6$V&8S!59y%qO} (o1 z-_6ir=$Z$;Zd^+IGL)I2N0lK*{|f9+5*kTBEiH`{R{-Qq_IKL5H>$B jd@;MEi{ui4lIIy67KqwHI%c1os}wx^qST-yA}y#D$j@jfkal#AS&>^;DL@uQ zTriz!a_w$%`3haKxj?wKVU0urH1P3K5T;5U$Dep;fGx?og|o)^5PF+%v0=eewk|$9 zSE7 8^*Ac`PAANOC0dZfLm9b zL`W|J$!>+4tv+^_ZHz)g>@q~Z22ebJymRUfYWtAN5q4IQieYyzy!yBCU|WY_BF_%g zgkEqlZ=U1h;iZk9Qmw%j6Pp*D>c<;NG-5?Ll=IjT>X>pWIA}zkq(eMsfjye#Dsu~8 zs($>gdd+9UGwIc%6*;~YEIi0J75e1bEh2nQ%2#7N3S)F?s=}TnZ`VRtV9mp*6`9E& zS$;+LG<{Tc7_SrSJ>)r`iHi=@+|QKL`W8F+#B@(A-uL8}s-rxe;T>dM%OilnBG2nY zJUBWH%2Rm`?=~GNFbQ2x5$YmIkq}w&S+;DkXp^Qaa%l$_&}yA*>X&rV=9KcIgP|@Z zzdRvy4xy7QuWb9r0~9|y@XdbQEr#JrN`zRipE=ikS>a8po?cV!1_rAmP_G+gjrS;i z7iklzJacx{vjw@LMsU}Ry#Q5ZJml$JIZkLa#7h-!YB<59gqf>TI25b*&~vB8ZFmb! zc&&`Dz$t3vw%<{fj#5&!lI@?jG>X{K$KtsLeW+$C!%jhFiH89NoPEq%!9bTtc;mcU zowO~KWfbtaS92X}Vo`~AX6frGD6NI?q#G(RZZRQ^lP~zqYL9-?DtqwL_T$CE-2~VQ z2iq6KsGy;12z$pY&fZtqu%V>Ty$4~8(+AXrkI9rXX$K%q=n#j!kF{n-5YL{MAj zLdwn0`d;`29|aE!fZj|*dlR*#JL441A(|Fk ADmQlySX)8z>uZObp^4( ztYNC5f0NuWA)AMPV3sBAx})D{T`D4 !r9E61>f3BbOC$5P~{}hzBij)=>Ml7O-Wa5+V`{diAB&9}kE|!U@)T82L1y2{2 zA4u@9o%+sTG-v;LbCkkS92LW}Zdt&Kg1PG_GT6{@Rr2F+v}hm2ZR>$Dt0oSm{CY3{ zf=bmP`g=+kAi+Xx)m{$#JK9$WlmC#wlZ_($`bfXTIiEqR z9saw-z|g+=&1(&`qhoCcb0fXdsh?p}G%HcOiXR~qdx{nXujlOlMyYsFskaNbuOeR& zG8Rph-E!SlLu){C1NAsLgOOb?L&3nVd;G`v7c2A+(38xh3~r88@$7`=EeQFFm^YrA z$XCiUp1+r5T6>%qdlmdQpvUHo)XweFamKWo>6jN5L9Tnwt!}N<9=ZMCJ?$Z{K#-Pn z*M(8d$;p!<= F)CiQ&|A>oaAm*cmWpiL%1$zYJn|X zr!tlW`0ATuA+(WMcCStsWI(}*9w$H|J!I3}ch65UZX~B&SvXON(es;p^yuW~B}T7d z5${Fa`#Cd6v2jzp6UNE*SG{ewF#zukg3DEBx5mC87|~A+ga~y ayM#2h|R;4V^Tn)oHcD2pSL=VH`P7?r{qy8kmsK)qWAzl?{Ba7_XbSy zP0(J kgW7vzRCk=X;OVw|As6KV$Ag zC@h;rl92HwVP(;R_T%!^Lj}DGuEGy5GYOb#eZD8o7*>9cP?EwbqCpWRyVI*<0)xI_ zt`UWJT89C}cRw?IA6$+w_WGnsV&I-#*u_An922b8w>ka$O!gjI_hKbCPN$f>+i(7j z`nbJ*eaK(Kb&q;BE!6bh&5sW&kGuzCtK~)AFYdXE>|#L7k#WkT>@zDWdo{j1gy#KV z+$L=sXM4~u-^%-~k|jwp3f66?2MGL#XoH23g3W`VLXnUecZ4`M1Jkp-i)Z=kC22>= z80*AX`=Im2{?r#e^V>rJt3dWUR=liSoU$w_ uGzSegZ0GhB4x?`Fe^$9c=ipEJG)WkA^gOE(5# zT?#(M!34I%sbKpdA9`xch!C1f@iA@GK0zokO*&PU4}v4|o_oprm)m{3N4Gfh?})t) zJ%d4RU#F5kqbo+#OF?wKl>~7<%aLad3?suB+vt67R?wLlQD;1e<1I9={@in+cgXVM zh-I^?talanG`B6`cw6wFwt)E&+aB>}-icmJ3GBi~{d+Zi{}w&4Jis+ZmB~ERzf=X; z#dhDafqq(YNf_4zmXL9^MA(7)f*pdqdd@d-8x5}(WR8pPC=Az36D&4E_p$R>7zcj; z0iq+7GL3p<1z(iNZ_bEH{~V&!-9itA0D@np2v-@C_=`Ag=EOz29T?EF`nePLP7g)D z3;jjir`_1xa>RDF_$JQ<7J&)-NCdILb(!bzF2H2-ieQPTdgv_vO=ysbbuSNo^}Obu z)67Ei )gaPuc8nn %rZhWQYR*l+&2g8z8RqCY3g_Fof^!osq}M$vc4GA~h+(8LC8Nj2H@jRn|)I2x+}- z&nb0MPQr(8eIgP!3r#kwkl6I 7nQ7oc$o!o8iKoc&-bkNXay z5nt}W#Y?@Cw_RuzTv?9JW~hEOMglaSLva5|{`2$Ci3G0rIfeq;+s|yaIkB2|t|N`P zc!rw7jR9=NKBVg-^uCc*wV}`LqdF@rwtvTo!Rv+aqM)A$`t=QB{~HB7+zGfCiDQH` ziGsLD07bb+pg@yT;|lS*9U7O9rB58ing(4|r1;QS@Aj@(!-3S!1*NcYAAXN{&nq{6 zOkHzR-Q&o~r|rYh0F_1vY3|#Stue}<`29DH9n%Azg^c1Q&2=ImSARgXw{@0;#91F} zp^PGv7VV 9?J~!S+None9a&fVlCG#VT3ek{G(V!ecSb$Y-@mo8+wj zY4d3+^k2BR=+BUNJml&V=)U$*=O-G>N_}j oM z*Z0B{+RO4Q-@j=`=3@yMRgsW#Zms2wChdixGGs`1u@uqF!BHjB;=@q{Rp3NaP!}N( z0CiDL*d(4Z=U&h;O{JoT>r#;RNi;anEX#mpD=*;VvhwZsEHX5P_yP{SQ>7SQtAWH^ ziOuiGsXOZX6-=?`#Vl|Dna@eH=QTa8N&m{D8yJdl<35y#Myv!Q5ij-L^>1`~WbjC) zDn<|CCe+?7Z5A2AR5I3s{_jGNruR<*V7mJw>K-boTuap_8YfgImIBo$dKe9w? );JBh?1wc*l;ys_52i8{a2l35jpwVSCDvxtv~#*RYB!?IDR< z)11Wc-9xXc;#*SZ!gQ;zn9?mmwPoqMuUP9op4k)^4D{<2oicn2t@j`33@7Xb;7{-k z9Lp7CJZHuYsd2F<$+W=yF}`=Ci=_nL<}rT9y1Xd-F){vuZ>EwA+?p%zbVP(R_Ci)L zF;6c13a3n&z;ELcf44IqFMgTj)~br<+yK>vm)8d-hK))KiAtOvW0tNe5`LwEsrSX2 z#`@pQYWF3wX?w`)*F?{4FAA}q!04Q)Mr*A8`AhifiM==oWs9_?MjMJGiBpxCz}p*v zE{*&E4>8q`>Sg7Cr97J~!d%>dd+0!r0yl{jh7H{!x#JLnu~w{izwhVa|V@R(iEZ z{5A9XCWZa}D_99BtLsiXYw6zQQ|nxxwmOA&7ZC1mA&r6}D}E`B9mId3fgh}?9iy=9 z4K$UBv~ qw(u6LRieNxryjplM&zE%+}ur)TU>;<>%xES zQbuvYup*iA#pW~X