From ed74ad132749aacc6515f52307a4fb9049ed5be0 Mon Sep 17 00:00:00 2001
From: Clara Daia Hilgenberg Daru <cdhd12@inf.ufpr.br>
Date: Mon, 29 Aug 2016 10:04:31 -0300
Subject: [PATCH] Create, login as and delete users inside containers, and
 modify quiet mode

Conflicts:
	test/create_users.sh
	test/docker/debian/Dockerfile
	test/docker/opensuse/Dockerfile
	test/docker/ubuntu/Dockerfile
---
 .gitignore                                    |   1 +
 src/linux/get_user_count.cpp                  |   3 +-
 test/README.md                                |  25 +++++++------
 test/create_users.sh                          |  35 ++++++++++++++++++
 test/docker/debian/Dockerfile                 |   7 ++++
 test/docker/opensuse/Dockerfile               |  16 +++++++-
 .../opensuse/faketime-0.9.6-4.mga6.x86_64.rpm | Bin 0 -> 38338 bytes
 test/docker/ubuntu/Dockerfile                 |   6 +++
 test/test.sh                                  |  35 +++++++++++++-----
 9 files changed, 104 insertions(+), 24 deletions(-)
 create mode 100755 test/create_users.sh
 create mode 100644 test/docker/opensuse/faketime-0.9.6-4.mga6.x86_64.rpm

diff --git a/.gitignore b/.gitignore
index 511c8416..f515d169 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 build/*
 bin/*
 test/docker/*/agent/*
+test/docker/*/*.sh
 test/log*
diff --git a/src/linux/get_user_count.cpp b/src/linux/get_user_count.cpp
index 17e703c9..ec430899 100644
--- a/src/linux/get_user_count.cpp
+++ b/src/linux/get_user_count.cpp
@@ -426,7 +426,6 @@ static struct user_log * last_modified () {
                 if ((p = (struct utmplist *)malloc(sizeof(struct utmplist))) == NULL) {
                     fprintf(stderr, "ERROR: out of memory\n");
                     return NULL;
-                    
                 }
                 memcpy(&p->ut, &ut, sizeof(struct utmp));
                 p->next  = utmplist;
@@ -576,7 +575,7 @@ int get_user_count () {
 
     strftime (yesterday,7,"%y%m%d",timeinfo);
     yesterday[6] = '\0';
-    
+
     for(i = u; i; i = u){
         if(!strcmp(i->logout,"999999")){
             if(strcmp(i->login,yesterday) <= 0){
diff --git a/test/README.md b/test/README.md
index 6ae50d50..7c917774 100644
--- a/test/README.md
+++ b/test/README.md
@@ -8,7 +8,7 @@ Docker
 
 Docker supplies images of main Linux distributions from which one can build
 their own with a single configuration file `Dockerfile`. It looks like a
-virtual machine, but uses the kernel from your currently installed OS.
+virtual machine, but uses the kernel of the hosting OS.
 
 Running
 -------
@@ -17,21 +17,22 @@ Running
 
 The `test.sh` script, run without arguments, executes these three steps:
 
-* rsync the agent directories and files to a directory inside each distribution
-directory - observation: this must be done because docker does not allow
-inclusion of directories by relative paths.
+* copy the agent directories and files, plus other needed scripts, to a
+directory inside each distribution directory - observation: this must be done
+because docker does not allow inclusion of directories by relative paths.
 * build/update all docker images - install requirements, build and compile the
-agent
+agent, and run other needed scripts
 * run all docker images - run the agent inside the images, print the JSON
 generated in execution
 
-Building the images and the agent may take some time and through a lot of output, so you can use the options 
+Building the images and the agent may take some time and throw a lot of output,
+so you can use the options
 
-* `-c`				to copy (rsync) the agent into the distribution directories 
-* `-b [IMAGE_NAME]`	to build the docker image specified by IMAGE_NAME or all
-					of them if none specified 
-* `-r [IMAGE_NAME]`	to run the docker image specified by IMAGE_NAME or all
-					of them if none specified
+* `-c`              to copy (rsync) the agent into the distribution directories
+* `-b [IMAGE_NAME]` to build the docker image specified by IMAGE_NAME or all
+                    of them if none specified
+* `-r [IMAGE_NAME]` to run the docker image specified by IMAGE_NAME or all
+                    of them if none specified
 * `-q`              to run in quiet mode: redirect stdout to log.txt during
                     steps "copy" and "build"
 
@@ -53,7 +54,7 @@ Dockerfiles
 * Make use of Docker cache when trying stuff: avoid adding instructions
 before long-standing ones if possible. (For example: once docker executes `RUN
 apt-get update && apt-get install ...`, the resulting image is cached and
-subsequential builds with no changes before that instruction will not execute it
+subsequent builds with no changes before that instruction will not execute it
 again.)
 
 * Refer to best practices
diff --git a/test/create_users.sh b/test/create_users.sh
new file mode 100755
index 00000000..6abc25d7
--- /dev/null
+++ b/test/create_users.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+for username in user1 user2 user3 user4
+do
+password=""
+pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
+useradd -m -p $pass $username
+if [ $? -eq 0 ]
+then
+    echo "$username has been added to system!"
+else
+    echo "Failed to add $username!"
+fi
+
+{
+/usr/bin/expect << EOF
+spawn login $username
+sleep 2
+expect "Password: "
+send "\r"
+expect "\$ "
+send "exit\r"
+exit
+EOF
+}
+
+userdel $username
+if [ $? -eq 0 ]
+then
+    echo "$username has been deleted!"
+else
+    echo "Failed to delete $username!"
+fi
+
+done
diff --git a/test/docker/debian/Dockerfile b/test/docker/debian/Dockerfile
index 802caf81..4eaff390 100644
--- a/test/docker/debian/Dockerfile
+++ b/test/docker/debian/Dockerfile
@@ -2,6 +2,8 @@ FROM debian:latest
 
 # install requirements
 RUN apt-get update && apt-get install -y cmake \
+    expect \
+    faketime \
     git \
     g++
 
@@ -15,3 +17,8 @@ RUN /bin/bash -c 'cd home/agent/build ;\
 # make
 RUN /bin/bash -c 'cd home/agent/build ;\
                   make'
+
+# create, login as and delete users
+COPY create_users.sh home/create_users.sh
+RUN /bin/bash -c "cd home ; \
+                  faketime 'yesterday' ./create_users.sh"
diff --git a/test/docker/opensuse/Dockerfile b/test/docker/opensuse/Dockerfile
index 0186c2c9..1bc1c2c2 100644
--- a/test/docker/opensuse/Dockerfile
+++ b/test/docker/opensuse/Dockerfile
@@ -1,7 +1,10 @@
 FROM opensuse:latest
 
 # install requirements
-RUN zypper --non-interactive install cmake \
+COPY faketime-0.9.6-4.mga6.x86_64.rpm home/faketime-0.9.6-4.mga6.x86_64.rpm
+RUN zypper --non-interactive --no-gpg-checks install cmake \
+    expect \
+    /home/faketime-0.9.6-4.mga6.x86_64.rpm \
     gcc-c++
 
 # copy agent directory
@@ -14,3 +17,14 @@ RUN /bin/bash -c 'cd home/agent/build ; \
 # make
 RUN /bin/bash -c 'cd home/agent/build ; \
                   make'
+
+# create /var/log/wtmp
+RUN touch /var/log/wtmp
+RUN chown root.tty /var/log/wtmp
+RUN chmod 664 /var/log/wtmp
+
+
+# create, login as and delete users
+COPY create_users.sh home/create_users.sh
+RUN /bin/bash -c "cd home ; \
+                 faketime 'yesterday' ./create_users.sh"
diff --git a/test/docker/opensuse/faketime-0.9.6-4.mga6.x86_64.rpm b/test/docker/opensuse/faketime-0.9.6-4.mga6.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..a2a55a90195b156b6bb17bc96f10a018d38a96d7
GIT binary patch
literal 38338
zcmeFWcT`l((l0zj36e8{4mraFV8}U2j*?**hMaRwA|M$ANlK8M6fl6~AQF`*K@bH+
zKoA53B;P&CbIx<#_q_MJcYSMp>-*#EwQ8z=-BsPy)ji#{Yk#lVn#TbF50yRA1?}tP
zh8BPbiVKPg2n)J7AVo1P|K|@D2=BiNr_`-sUDgqRK;*(eSq7jhK$#uj<RB2%)jt^c
z1!2<zm;@-`|0#n2U7R%l;{sR-;28W3;DA21+8-I5%|95|2H-${INJaR<Z(R#j*<TX
za6lf{7X%`%zl%+Sg9kEh?q_IHI8KaIAhXB9&T=F>XTKY&M3+BX;eErtkgND!&30SQ
z1$f#>2BD~WbCzr6APB^HAYtPn`YTw!gsz*O=s|5m&`XUWdvUVz5qAl=%&iZ-KcH?$
zZi~@O@q_c9(M@GozCrO!3<G?5&mDJ?8%l}XRP}xwG#yVKeZZRIdTVkvXaCy2IIiZg
z{qWnn$9t3Q#>B>Y(OF!-v?($;)`{`<m<7?3^SvW95i3j45R)HOZ8w=(Phd4iu1BY?
zsjhUZ@{*5rUG~)_pNH1K$(k;52rDZ~sKkpEi&ZOXL2SbG>{K^cjEzGhMz|<c@-}2Y
zsGmHTQ8!jI=jU5p;s4(Fc7@D2Q$}ea!Zmrsm%hGQ+$S^1xg<r4)Y`IQOh_Sib<Nmi
z^ROt8K7BH|i8n;cqP5??Og+EE`=~Z&Uit*lc0K5dLbjq*F+JNw+ps#NT5@LoV$8#g
zufe}&Z{0H4^^RT+`>5;W1M=8L%Em+|GqGQ{R`Q=ZV!2tI>^uYF4Y_|ZXSYN3NwKQ3
zbW_2p6qe0EkXUCEsK*gXAP&XH>gD)4?v@)qI8yUT(btWLOXug4wDgqm1h-Q!By=(d
z(!oX6x-El8Q08TWa4C@u6Cn@#RHbkoccZ%hCD@Va=bN9S_g15IJ+fHjyt#kgDSR7M
zZ$w$l7;e0*O8QOv#}JX?beo_${S6=XJK?0^wn%$>VLK=aAuJ|r2SbY3!w{nO5OFjd
zfv^*^6-L9vp~9l}NF)^4OTZJ8_wV*mt`ymY@7tGNgehaC*WBaYndw&)<vqLrrHF@>
zk#gt6UB}}{690G#i~YR5AVHth8t&-#N#;yc+3Rb###m`Kt9y2eLEu)2V4^%)^2zn*
z>49~Rr2M#IvBa=nt0-;Vbqi`8!`f_ZiMTnkI%SDKF!dwJ0?Vydm2gldq}jgrG@{&t
zvnmSRKl%^ecY6D?TTpOh-;Bd;uwDFSi~;2EJ`GuB^vw3~4Z0~oaDfJqu$tA4lh5yl
z6r)CRCLY{Y<~S*>i@Gh~Zb7rBU1}lnnwPtXh*_deqG@;z7uSy}PS}N#$a$BxwBXBx
zzenTgGo6jBoO`FwpNa6kWNRj(R;(J!WwfASj%WPv6(_+)nW;Yl*|>3L^jcBj9x{$@
zj3FD}`se_k`iwf@9g}<RsCrhGmi4tScaOt28?O~JeOqJw<hDiEb>g(f^klUv!sod<
z>u}P-2M3*nr1^?ar-Tz>6yD%-@5NG%$NW2#J9*KX>V);AiA^`=<q1)P-|!bgI9L0=
z7&Q}oJs4nsK}=z>SXjhQPK9hKQ%|hl7W>-PExD{sW50F4Ezs>qkKEHP(jh(+UwPc>
zKh(wj>Zy_Qn=-xy>Do#B1lkj0-x8kcuY}Dif{u)a6R3om{0-t!0l9spU-j2gWWxhP
zs@!K-Ykfj=ZO>mE+0Z7ounO-CUZpJ|F+C(T^Rwt);_Qjlb7Btjei{$LX4Cw$Xa4j1
z9}oP;1OM^Be?0IX5B$di|M9?oJn$b6{Ko_TKlQ-x9L2@OMI>M!kW&DG{+7p(1c6As
zfht*mfV={!Ex<7{b^rl6j^EE;c?%$q0m23dgVzC$!NivslgGedic5^iV-Nxa<UoGQ
zf4{`imv{@{KwbmO@e*V59DqKS>m}Z~Y>&Ley8y?u$6VsQOPqL#4=(ZjOMG~VA6(*J
z00->BdVGmbFWb8=@!2KDjDwlq`6b5a0T>ss^>^L|V88P(n7IO}CTylljF~G2^Il>i
zfCD<%VwV`>C%~WBhL`y2AB;19i7|O1KpyAIB_{jRjv4m%c$hT-^l{lPF*U#e8*o(s
zj<Jsh;D9i$-DNu+z%lZXmmISWKsz3$9q0>};ZHqY=_O|TgRkgaVs3x~{a*<JIHrHh
zJOKSGF#rehVz}Y}2l~H~bBQJXU;<1|0n?7L3(zOT*p1Ow1vsEj2mv@If2DSbG4GQY
ztPXIXKSIY#Y;xJ|`KKP&^s+te5?frh*8?1*Z+Y21a*3_}U?R-=VC=!{Yrq~NOn(@A
z>@M;0B}QN3)k|!Di81>cBahja82!yl4CLQ1^C1T4_xOI77<`HS0S?TESPI~P9&P}@
z0a+4^{TO=#FLCW9#`qc2J^*lbAc1-B4<^O<0T`d^HNb&>NHO!qQUv{#-vs^6Z-OrK
zoBC)^4{u*ErqK@U6XfHIb^~LwpkQAQu&1|&gE!L62juEx`<FJ@$=w(2jY50+`hfkB
z-cBBVK7Xm9kgl#i-~dM_l;b~C!G1oNu86$RzTQq~f1vD$2BZAEz0vNzU^}EQ8jN(e
z`#qo_Slt(lLb_ul+`-;|Hwz=@gApXcSmp!fMgn7cqESxvPJq$2LEs<{KmOl61EYEK
zU`z)(0S5kS0)k*eM<*Y!8ye~EgApdejN|5E=VTxBTkY@jM*gJ*_CW(<1vvRSdieQ*
z9g+S{?hcr)QI1G=hu;(VZO-NF1p=Jx(1IW!v)W^YMtS)7patEK4rnK&pog~uumB+J
z>$_UND?opkpbk*4s;lV_1Ni}l*?Rbbr7jCHASJ+6t{$FlfR}^}Jv>}}K#sn?o)SVr
z0RaJmC=WX{FkCRw+s+37ZbHB`ozW;?AECdklMt|I?tX!wKrvBkQDKY$(!f4>uJ(t>
z0Zjh}1Twe_>`$er?@^^urSiXjqe?Nd|9pV?SpJ<1GU;kDgsDTKp<==)aXUCf4243A
zz-`4)P+<fNj<ScLMbYA7BBBrxC;}oT3W%Xm;%Jy1(jIDu6h#S(h}a=)?LoFkJ7G8)
z0!O3JV&W*6um}VxVv9nHBgE}caJW4jDhv~bK}Cc`Q4qjGXe3G$fwB`p+KSoR35!Az
zFpvmJTm%jzDB+^^VqyS*+rlA0qEZwFg+W9S5OJiv9mHN-1PO&A#KqvkFfjx~R19Tj
zix9Shz-(>dAP__xhD6xei;DweK;bAj1ZHm!L5tgp+X87&q%8^pm<$E_07QiC&|)ZI
zC}4)YC>jlngA}txfy9w8I0Pvw3=y`2L&Xs&lpPErjIb59w-td2qkzt#KraZih`2C9
z%nm9HwG$P!w?)E`5I_P2L)(K8Vh|COE#MkEF{mxf4vMgcAdpbBh@CA|91he1R>Oge
zECd4Bf&zR8coBgXM<YcL2r+v&4E4{o`Zp!a-TRxoJv@9t|F3`kItBja8;PKgH%idk
z(+vc~3;*Num*zi?A#Px23Wy5x{QYnd^zjgca`SMD3fnsQ{+kw6O?3rDYnUMH|5*es
z2>*9NT897g7=N|>Z%6sBLVq6z1d;>X{eMotAx-pma<voq{ihZ9;~I>mu)lfZ-?jc_
z>%UAEh0zrKo2HZPWz}EeFhP;Od&kc8zmDZ(`&ZrnpyKx5$GEKe9~3-&9lg;=JB%9S
zUrhU#hW|m?+ZUtvuUq4<x__qv>_*@$<W}@>^YlgoXR)1%lPg*q30xjLpvyK)jgpfC
z+Q;{wb-KtPR}bWGVIMW5KU&utZSNHL50%Sibsv*p9$=yW`M?Dsg2Dn&;7%14g#6~1
zUlBpr?=lo<7Vt(vfxF?hoS_V|%aEQ^&LFF}OFyPn?!TS=;D7o2_&+tnF<&P|{`<{w
zsSW$n>;v4HXm2qQu+(2AnM(oa9|2nr7gsm1)Nl5uNkrgxlQ4)6tdI70@^SKTmjDB2
z7fcvRBmn+%b%8~Jf{za%VC(1PYWFXq2oVTW90G_M0Jk7;wO?w8{LdPq2yuv**gre}
z--*ISU?QS`s5UwP?2q>TW8I&4=I{23h(Ljh2#|Af!$dbgkl=|#xd6BC?>Gk&M1cO=
z9Sw#GiwKJgi;0W;zAb^p1^$}<Tf&^HK>Uu0!G3@D1!65soc50gh~+TxTqMB$JN?Tl
z{|f-b|M~o7!(U_l9`7G#>EG`A-~W%lpQV=v)j!T#khbzI1CYM5ypopkKPm;Gf`P#x
zAwM5)AzLSRp+6;{S5e{1vX3Lu8!cq#f%<RwFC+e?!42sy1Q1jRB%lKW3pjuUJe@qz
zV1Zlq9^P(9U!Z{Y_V)0W{sRSk&_F2Y<QoLkd-4k?S*z&i8>*|AS{vvX=_@Kr13lRL
z_yQ{@07N*xK!oGr4HgjaL;^9Xw2zOcfUTdsJ=$Bq$0-;sEet|=I(dMA*@#@mJOXaN
z!>!9B)xjMTZvVLpFZn;c{Ld1`-+%cUv#!6_R#{U8EGjGj+(}?f0|hWT5HQ;pY3qvS
z2md*#`TyFCU?`Z|z|_E)haYSg<c@T6!o<WuVBk~-!fXCNu`_TY0TDD96RZJl{&#0S
zKN#>2SXJ9dND~vofnmV00*CQ~6)^ucbtQ9PQJ|L6w!%m|2po=ribBQh?GR{D2ud7?
zgv238F{m&QDxlDC5wx%vlppK^#NM8sXgkn<naJ<OwF7(DVxq_Y+qwL!F=B8rTQM;h
z6pj`~*xSNTwxUoV#Dm+}*&~oJVZbuDn4PV?IEo+a4g|XY9~fjOj6jPa?d;(wQ9GC|
z8WWA#LZC1p@U%nP0^hpD#KeIx(-!$(46<|b{=LtFK=KBP>gr%$bf7QD*W1J19t<oA
zuynvqL;*Jn0G!-C{Q$51Q;z@l%K~OA04weRyet6Aj(J-#F#`ip`sGE0dFes^^Y*};
z8JPF*|N3C+G4Jyj`j<x^c;N+z7$6*g2mm4i2wNAx0O10J4d5#P;Q@pN5JncG^Orm>
zP{s%7w;sSjfDS%DR{+B3{9ow;>I8ni_5xxUD}QH%E-p@ijzHvRh+q>lV3ehktHszL
z7A#tz(pPAuWSLFFo6HhKPx1j5^}zd@e{t7)@%oNfKa@q}l`rZw%5Z_eeLm{hAMt#*
zU2u#EMsvQizDj#9)A#tsn?Vi@77NFKuRA}#t-Y>ysA5p+UKsh#4w^~v4?V+o=~aG$
zTrl&tV6*L(_?55AzEp!Fj|jC>5YP$id-N9f5i<K0M0iOq1Jos9NK{!TE&kT2*Fl}C
zF+_P?Q$mcYPN#2vwwpmBxn7d4f#I-rPa`N}vax0L(QxMJSGHdH68SL$pE);|LurH%
zlh2x_8?I4Y(hU#q50$TOo^$;gJ~_8~YLOpu@~BnlcG7v<t9R2`ilmK=4d8(+3N7uy
z70^(5%20cpuaZ&rTduvlx6>s*3Cf_$c{`-4yurTBC_@+Tuqzx1YpEbE)^aQ@#sCwX
zPdBh~9sOCpacuqYUd=Q-6UOr*AEPtiAm?FNy^F&{G&rRTY7R2xCQ@<}yWJGl{?VVa
z3(5O&mxY~K;L7<ozozzu{z_1B0mF*oU40@+*P+^CvK4U(zw~VdXzo&$9Br;Fy>}XW
zw;UJt^Qo0oiUH^ypNPebSL+n{-&h0g?pAB(ePx!EKOd1K6L%mN9H~G0{#sg}wd$N&
z2W|C=%dN=5>pt^L%scVBT#VNDn8Qc+Q2g3sbLVA-SSwB2enUj2IF^Bt)ORP|MUI8v
zQ*+=F$|eeZT%0=Yv279Dv1MmMgtOHALN`m5z%VJnvt}0WzQC>5NL5p?QBn(Y{xTS+
zD<5on`q}OIjokMpnfyF=)p>Q;U}p_1p0+(b4WCdtca4T#h9tX^m=N~KO3X`+gOeT&
zj8Z$>r{0?tphZ$;VK+7wPnQWz>JcKWbnGe!&4lA%V(WN429x^kh>b8xaSQHlsZmSG
zT$PBYhcfKMR`tztI-x(TeASLq9VkpBM)vf1*s>NJM89w_(Tx)l-tE9!lHc7qYT{fo
zWn8noV0erBn))GD#ullGd(V}VTV1n>N2X|UK2OaW1NL*Rv`+?MxRIWM)jj$?gpx(S
z^o$;cukH(l)Y_!uHJpX&l7Z^iH6ai=)rIa4p*md_;^DRAZ8Cd#TQxk4mc+sNR~~%9
zHGw&wA>9%_WF0NurX+rz5@=vMDa{S(qNwtleW%v%2hHG_Z>}!nxI1ss7K_7cqki*H
zp<REiWp8G$!_78OSMu9#(^tKjDT20AF<&(y!W%O`SBj==8;pD9#)+?2{5q_aKCW}w
z@L?`wO`r4T_lQ1fTS{GzQ1xGV#-?gXb0j75ov)*;MEXdh)mb)fj%}75t*kzzX?8?(
zIGQzmr%USHQ{FD$_$5xkob0{y_H@E4?RwwN#(1QLrz?;X<XtcoN4nXe^l%RR^SW}C
zaQ6~JOHKw@qt*kFpI?@5e6h$WD2BDS*66<}nS^e72)*aiFxgVi+X7Jz1SzCkPtP<U
zf76OhU!w+BOa1&RoMn1{FH3Kzyfow`GUb#;3|e-*0}{|UIe9#JptPnr>FhM<182zf
zD--hQA}yv3NlL%n#E@BbJO)EZ(u)?Xe|QG=&Ho|1`$U#R^%m%G@4lL?e@fS>LfM%A
zZob6yq}MBkd-IWLlo5IyE!}#-{d<naP>)xH*!IcUt&#?r9;Av8*&hK162gn5*MqtR
zanFSMZ2~xpn}0F}8(FWL;*_}NTa}f6?wfri@Zb)`iq-|wm6AY<ySJ~^a-LiZawIvf
zc1mL<Aj_QJ8OZFNeLP^&!YgZ!o*e!<OlIxf8Vq+%JgjAZE?wm)twhr@YDCaOs>}3P
zwCh{E^CUyTb5#gx;B7~!R6r+wLKmMHPb{hMxc>T>ull?Nuga?V^nB|Ezjfk(z@a(9
zk#nO(WQvy{N8qZ2c*4d0v86*o*c}nv64o}V@R#pP9TSB@5%KbaO>d%p(J%YPiU?_(
z#(y7HAF7Ea$(KmK8f=dJD6snBvy#^h&a)$#<k`Wqp{e+!QJ>P~@0Ad{cNe*AR>Nb7
zudP5~9|r1;PuXwcM=)9BeQQkk`0|Zr*1MB;3T2z7G=l3>qr&7tsg|a4Z6oY8TK+q&
zCB5nP<S-umXL=@?v4TUNRK&V?VK&tDGp9*)=%=zx3)#o{hFW2Aum=?OV&{HWDmKrr
zNqlzEdPa70f2vd(YQ)vm#=J{H@Ir-Eey=N6`c1%xq7*Ctbp>tJYcAGGA3!(d%4=j(
zRUE1+D5@UIhm9ZNjG50*SF4|rB%W3rw745gz;ChPy?^T3v551fGD<TI+v?HhWT}mn
zz|BU&1nwu=`CqX)?b(Hf*&N8`5(6~%!iqghSPspzK3^dtqsxPjz90zqq`Ix^N4MUU
z@|wzh!AnOI`esDeC;8+dKZ(=pO*;ANx52)HrJ%ZD<`ZH*{34jhwni8N{>kxklxVC<
zz?~}H#PtUq6)8&a+tRf9hrcr0cCbyL4u{L}oqOfS<&LlX{ZtoJ1PhpMnUOKMR9t0=
zi|mfcpV#va*C$ILMkJcD?eGgyo$=?<Qk$!7q~3NQa?%<v=+G6ggWV34R)*?vscTWi
zO&a+;xi6m4VDjLUN>;fA0^Q?P77AC5fE46g>bD0~sNBfws2pV_X@L)&BFZVPBA2^T
zxWZ<I9+xjDeR8|H*5vo7)bfriuidS^qED(SBV=E=NQ3g^GAzajlFaX=prar7scguY
z7=w{wdIoG%yWt|=unsJVDrAGX@E#1dl3v@)fGj>OjPLmI6;CYXkx<^4w)8riX0VK?
zG9NBUun4}Gzg!VW-%UDqKNx2pW|nI|t+n#HqZh7aqy7eTLUl*+&bYDYgcRlbv*8Z9
zZ*{{@RUXFN@bO5ylPpo4n|3|dnrwX`6tq}9jz={3F?;F0rDf+&!xv;Xo~O>CrZ)CZ
zco~K{XJhOwTbG8p%<}X~DB~jV0%fdP*+_&s>4k3%!CVxohGAO;9;&JEYKri_asHmA
z5UyK;R#FEc^aY&8$$aE@5Fn}CQi>TL#RsZ2UrmVwJLA4r$zBO$Sr#Dr_I1w%PlEqQ
zklw3d-J%G-mA@$-;oy<NY%(f!54`fFSrE#Q+e|Ta!*_<6-cp)D{7%S%&o>ix+wu)p
zuT`bmz`L&%6#PnppSm*n<#D=A#ljaEl!tyYcfi-%>TWS@5<i)|&i*NR)1iECavt?7
zPWA%lp5oG=|Hy4arR4*JO-jLc9TzwA#GiLmQ_sbrNdtPzVAkN?;|BE3-Iq^P&l!F1
ze!o%mwbo=Gc!x?`c7}i~YwlfVdBSVOrKES~rp(6)td}DU@D3)U=)>tE738*QqTfTL
zp~Jbg6E{2@%X~@*=4t%lo=SgRByYASa_;N2Kl{l>`Xl*;oZ-R2WGP~DeU|6BjSsOj
z8L6Fp)0diYS3bqCD}dogkg%uJWbcJOGy0=fL%u}dBpZ#1<>r>9HrgJx3oa>&^gg?J
z_d<3i$cj@Z@HsE*i=;&Kf`CMGli2~yc4T<Fc{jo8(@n{USStTJ_FiP?mY&m|Nlsr3
zY4BZGoP)nb?`h}_G3&6xA%%NmU*q@={5b`2Noo2BpV-@dQ+C+j-Kag#I{tONWB2`d
zp8!^6cY@)BfqhB?Q8DkhT*+!>$MY46o6<E>a>?g?WvWdow?$F%F}{T2+;Y$)$^Koj
zW7|T>kSJYBqW+jKQ4nES=y!Y8o00S`V_I{c-)z`DzV$2Wxvq>l8zLV5!G5)qrRTyx
zH!WJeW`w*C%gF7gK=?a$S`urq;9;>xMAD3j0Rdx91s^0{(7w2;!OE2RkuE2%x+*ZZ
zdDq8W5Sme{6|kQ_<9z04HbFI-FI{#~D7TrHY33M~n-I~rZr(#jawG8uUy31HyF$Or
zY7`54<-kDojC2~(4}Z9CTW@!VwJgTq<zBCvSv&Jh=K^hX8jhA!8FTnjyZ}q%^p?XI
z86)R=bw=jbkC<K+rr&!&Rj;|$%0vI=+IAb>`?%4%P#tuY(JG#cp#tpTp8s;s8-?;>
zPMGiu7ZUC3tDBl<2W@sdA_0%4&sy0m!_}Iu`PsRRb=`Es-x9r!b^1fDK(U87m|#bt
z=&q1T;79XcZt1Pg;X`!ha5R1?cA0Y^G{qIyDJwgqNlv#T)BTo?!yfKQQpnX?6pw>5
zKRwky85AJ+zE^y3pEqMm?>YHX!bb{T&&@ctgm!rhjvkZA?)Z_Y8xtRv&*7YH<#fzc
z4D#YlwMs8h#p{YLnw~09OV>N*H|Y4{9Tq<4KbWdrzzbKK(*3f#GZc5x%fsg<n&k4*
z@b)cR$Kz0zA1%SQuG5)`UgSs?Th5uKA{XVhZ`&tz$XtyyX?Nm;3=^h_=iji$SN64t
zm$%5Y6(FGv1_c8)b;4#Vy|?!homet^Y0eiMt}bsu@H{+`=^bag2XBl~(L86!xQG~6
zLwTqR0kikn;E7H=Z|3#Q;E|--2;3&)D@PO2<vr(0k)lVbG`j<*o*SI=7pTn4+5I5o
zGdT~t<C;3H*||u6=?Bz<mOoM4GINiw_kV6YPH?FX-R5IH7n!hCe_GDjDqE~Lk^jc5
zD?&E=r&LrFQPuYSCyxfDf+)If22HHv3COiIzs27d{8ZE?O_pE8);DR|*fT1EzooZ%
z`sE8Ln=zhKb@YbK&tQj_KO4TVEWbFsE5I}PIU|~@y$h|zG>FE(&M2F%H(N=NY%7)v
zA~)VN3-h+SFlZUctBW5X;bM;etU-WZp>iP{prxK5*j8|s{MbsZ-x{&1Q<XPrR)Wnn
z+kwAsKJcWHeu9+WS@P4Hi<dB8uln?7f-Gm1U1@0)xFvj3Wkmt|R`=rJP2J320}Y|P
z?@yTR#EZariFfT*4z!~Lm|CMkl)3Lzhb~k}+<~*e7*Fowv1#+X9v<=7%++W(LPH;I
zB}z+dsFhH5x>t@`E_DdzyWCHhY~?DI8Y75biM5rI@3Gxo(te5O@`ml^7B2-y)j3<_
z(W*bMzHmB6rBpurMr~xh+w)Y_#7WN6rTCW!{$~#pI!{PmY;_yvJl%1i@UtZ_F*0^5
zcqmu-q5FdK`4-;9)NXxa;Cp1HDlXFpV;eG-j@P9!KXRk(gIy0|L_~m>4gT-mZ14@0
z_!*tCI7;JkS;}7P+E8o7Pg<w6O0*<4UvSx}ebjuhm&vb8UT0kF(8;i5PQR)Wzz43b
z?!3_;cYCK`pr`iZH4{iSo=11}VkyCwt5tJ|_`+;&$FvcTB!p+4>1kR}D7_Y8CnPIG
z31y_lm3d)WQ*9|11Q}MbifBI7FU*(r>VG|X+l#WYcIO7d;+xkI9(}PZ@5dLS$rn+i
z=Ifj+<Z;VdS7BY*(fo|GdHblALK@X~;D(=FQS@KRHkzO+9}8a*Bv_mUe<IWopj}0o
zFz1ZOE&I3$`MPTUDm0yN+{QO^HKkF`!j5)(#fiIbj+7ea2Jas6U_Fe!p*1p~qHJcS
zK|ZCu#wj#@WvBPByHzph+nsYMDV@wOFLpf~M`;8<NK!C4MKj2U-M*=axb3ygS%DUt
z-Z?(oq)^#8;JW1<85s9cuqC*WVhq=>@j`JjLi!L18dR94{)!OGzso)90R-Zi>_=FJ
zR-b4eRqkJ_((UXMHEHSYFP(6j=rmA*<fSm*_Z)vN-1d0R#=@uiKHDa)TucizW%ThH
zkMx9`Bop~41?YBsBjNRRPI2F7$-BMe7Kow3&GKmqslbdfd!kyIxRfA}+`HvZ_9laZ
z?P+}K3b25r&1<r3tsZ;_5XN+hyuiwXW7G{n;R=!ZJImN5DV*fKL6eEK6c25;GIl2<
zvnHQ%RwOPT@L{+7(zer@d9#YndHr}Em)qltQ^~f9^P=Zg{j43!bncDWFlmiE2Ku@q
zIm$S?;P>vt68q6M*j0|Qyx}i!qgvNAN6;UGcx=N`>SEpvlJw#Sc_}@p+AQ_LjUBgZ
z|DG&LS+3yo<CTB958Hs4d`b~_d{hFL!Bdb<^%JMwCnKMCwV6HK+OJm9OyyHA&_uq!
z$?&Y5rfk78%`0R|C_lS@7T(J6GKyq>Crmk4Na1cF)v@T1#lt1a+cH)@S1)3kNA;GU
z-SQcxHjJxC4Dy%GtzUgW8g(!J-A}&ZADR4tV%I&n!?*2;o~b_UyK#7z^yb>UCvqZr
zs5_T&(UMR@d|b2H8RwhA2g(dG@QLBGwWzDNn(_H`sY*kfr@eHdU2OfJq=sbk`oh}=
zue%dR)>?%On=b-&VW&U+Z15^e?k5Y9Q7B#wSiBWM1Lx)V@agbz@mg;b8(E*ID#sAT
z@dmC>PtuaN{$RyTO<mumRN>}nJ*zFZi!Q>-FO9c~ONRJw-Tx2}Ww2H(*?M|-!)B10
zRsJK3hrgL>_})TBQmbHPig8<bS*!l>caIx<5<Uq7&2#GV%Otz_<mo>-=>k)7mmly}
zhM$)1HLUNwSg+Er)fSS7zT3{~D9^Y)D?)x#DltoIZt&NS;3Z*Vk36-{u4nn;?xvI6
zT$P!JH|+Q6MW2l5aT1rh2tBQw>tPGZ-lkrpj1lW`SP@{^%pGi67D~-L8T+*ur2b@Z
z=Ix`nrCcT~{E1s!Kgid5D*X1J{>XWxo=l-nxE8<u&hDDFh1iLQ>`AulKyRN`ApO<t
zk$BJ27n^qm*~4?yc0P}tnlH)kjDJn?;*_PT(7ft4cOlxoJ>{5mvq@@GHRe8lliC{1
zE5`|087=wwC!_A8xQ1$?3tb|%M^zaR+Ny1(jE!Yu4SJ|5XW($<&nr4U-pbks?0i%c
zxAB;nRBA|uzu{a9;Szq|m|2swEKo$H;j>nOZM{DCegdmgvt(l6953KoRRq!1G5+G!
z<6E|c4DasSzkH2tq;mkZjaAxYoHowm7>()Z72KVGTYP#_bvkyqNLB8318=-h|7L0z
zXKb=GZ%L6Wg&A4)uE;Ur8G)pF^A|)CArtu<n++XBam}yFKjSDI%C82pCk+$0fP0!e
zDdPf-eyo(7`_sL7viR_$l>euLA0+v-x1FvOZWw%e^6j%EkD4V-3ZJ0iaL@HCJ6vPm
zcTeZ1%j%*V+^EK0cH?;$jQY&U=<@{^!?AEJWvJV1KTPDB&1QUclIg)gKRIrBzcUzF
zK4ImUJ$RpqWD3vJ`rchc^y!wzGZw9JoCM*K%_vD+2Bo9VVT5N(g$gkdJbjzw8n@5r
zsVww5?z#xm&f*CZ_%dI8=E#sIQ~!L^cMT4%+=d|nKh_I>y+ZN|_W}8WNL&8_V(!7U
zt3F0TUV9{hx?a>qq2cT=h-C~*%Ckf-T8Wt%?)v;XkyEHlzA!qiWo0pmV|^#`%E$tb
zVhL(K<VvBqRTgnB)Gxpxu^;~3Dd%)Zk4}JL-k@v6dU7)Jlu*ReC@ay5fr%mEh+n0Z
zVS3Q=?k$dWrWHtfl8`e;FI(5MnbRw&AMZ^~?X}?;KJ>4hjw52P&ZG!<H~c|!O_Rwi
zpnZKNe5CBhS2JyynV;J4=ZB)c=r5iQe0)~}FI~K5{@S}ITtaMz_CU_gJzP=jRsD0h
z`KGDQd9?FW<ZK_ZJ@UCpN~Kk@qE2~)qTlEqgMEv{3pXtKInE{H%$2syJD&Ki;h3hh
z4EwI?r@kk*>m)+BLA=Rx7jMFpV^Y(`y<a7VGes_;AK!XC`*?MCVx|G#+*mw>;;H?;
z3@c^+w44~1*zn;Y<A)EQG?H8yB)#bTKwV2N?4rYyQ1~{sHt~tVk2f$p7oOawfsxzt
z=8o1v$8_yim>;8yR_ErM6n&LcUqpl?e093Ez%5Y2GiJtX)h8f!I~!-OBAa}kagj&G
zM!yj>N~_^((d6EW7suE!xT7bAgXA5PDtHtYx=M^iqw=(-cI@erhFRs#8|{V~Ru$;l
zMBW^{WMh>`AmbChuVyFz4n1vFpowDpBg>faC*Xz~osUB5+$rR*44f;g5%R|hF>ua3
z-6g>`X;`Aat*|>m9Pzv_^u_3E&zwL+zz_a6sjsOXLIp2ek3vbJ1q~0Vy*8e}(?KR*
zpB%XS@>fCxd1;rMVbdN4%Mo$h3Jm1qE@-~zxnjioKGI{eqbwmTI&UMt{eIM_?oXU5
zA?dL_&e~#x1ly7Vd^b4<M|F|^1y(p4-8vZ`!FxmXW5U;b$&5u!){?~1bh)BoU$w$A
z*I?C9V}*AEWXVK>nuRH?9y|oUlKVRSulHsX)JPZB^%lKRADtSPib)HJQ{~^%s;%!n
z>w9oWSfRU`kGv)~MD^o9dfRE1(ZJSpFos{Fr~o=t2Y!I$!`3R;32lG$LMVjb6C-xy
z8NQ<rW&caO0r}hsAxhBAD7N{9*ClUKkPu#YRMW7gI>jqug~vEq%W^$&8rPe6e?5#g
zw9vD6xM$kD3eA3k|AkM-Jb6&OZCxhh{9bXmbDxmwfsykaRuj5<I`(v8n-kB)?;MVP
zBv!<Vryid+2Tc+mr}bQ?90(kxY27KXmM$IXYw~HhZ<8#wSNWAlBLJ}+LeWmxzmZWt
zL(zW=H}cMRZlWRuwM_bGyW#HAwXNMWDKnAf`qr`wDTXP%(>uvaO6gR4dBcJ3?dY7_
z31nYzJ-pB*spJXpZ+M%O2c->uUxNII3h)Jev>k72@FCSDr>fs+=Dn|?^~`R2$8Yqi
z$)l<B`H$9N*i{uzB~QVPupxv6<Ne&9YcVrvuh;ZVggCfqCLRv6-~2S%s{LIb?mPe5
zxPtK;F3xv87`LRU7n~wtcUD`v6hYdbqjqNT@MYMIC6CE1o}BwHGLlE|pY5+ZY#$dW
zhJPubggg!t_eq+Xp1l99hIj^j%Fp=Ik;=;1>nyU2Ot>4xM;|+s+!X&K>4#2jO@~|#
z%G>w8CqoGwDk|UbL`i*LrO#~D-P>Jpl9!<&tlTAgMt|p1%&XZHiODuakJ&H&p;*?a
z#0WpF%~=XCgl^y>OO>-pfNodJrox%vt1W@$4Y8n<Oy;-K0qWh@dQ_}Ed>cl)tc+7x
zI4d6{$FA+QAg+Exqi!x%M-7p1LPP@X+0+u5bN0g+LR+b?HqEF%s-4VrW%pZM<+&KN
z@y2U=^7dAJO}SR+<L^Ho+|5OF=iPG9cEg?IVyJ<I%IX^u#qz7TYNFm>wR6lMw!CR$
zlT$m}*UKd1DX+-%fY82gtT3(9*9d=MZCaV4$HlZgl~3DMRE8t%Wk(gIn)!qGhm+BJ
zHR6p?&9MS~@%7sclV>#C$%=RUZwb2*?pWz@U(ey5w!OMWAhm2Md%7cc{QR9RS9ax7
z5Mf~-F^G^ask#2gN`a%bDSu&GDy8Yu5j?YZ8@^k;R8c2>>D|tbp<x2SswP4<x|S(K
z0>OjUW|H^Vm?XP=@J>@N_V>oN;(d2i%#m~|H(|pD+$j%>%(FgpUPUV}++vJ<1LJ?f
zAZsg$UHSvQ5WT_2sdc6yFR|2jM_$!uW9cRBafI~<H}3iqZdy}j>!IXK<FJ~j1RV3V
zuJn6pS~rM;g6*iCx`FRV-9H-Jqs1m2E$AbfR__XzZR`2c>NMS{f}CF?o_Lv%jaG%c
z2PtH_S2xwAJ=PPTll!XbcuQaKsV>gfdntYz1mi(B1I4zV)~MVOzlTNJ*&~!8I`>NA
zwxytPLGvt&=#(8<rO{H!6>_%cvr^moLjeSys&TPA3g=Fy9dpB92*35yd<;itXeOrO
z(s$0zdCOFWB{=hDI{HgGV{?ht?|(n)a%|j;vyhp-D;ro-;6|j*X)RIwO1JSq?wiga
zvz&d?v_415T@uEX*%0NEySnCHj3Q%_QIH63zoBPdz3J))JJ)BdHZKq)&3NZkTY6Cy
z*WpF7-x>r4gT{Sd-XmK>lqghC*io4`62w}*XdHBk92FvdPEJE*R!(*OsWQ{U=kC5O
zetC!8S4U~3SeHp9S?uu!&V&4PtYntPeWy1ebG1*Wg2#(W8TJ_n$goML30bMN#fg&N
z2^~#wRhtNo)8htgp1hVMpQL4Zla_Jv0nv%#*&2P{hhmjNJn7FS59+Alvb=ubFXtd*
zGoH1iJkWexmtNiFQ7RF4zt~%NQ{PAk%Z{F?Wl_Pf&I{o`45_N&s+^Vo{EAqfp=f2e
ziaTf>UqHkhq6fLzGvtSMA$j9!c{57KX>WgK{L1^nUu6e^5eq*{ViGp*3(VasA5o+z
zPQd->gkq4X_p<=2z6^;C;EQS;y0>WPY+JS5pCxKxfSlmOxAPrnFxHuu?J`}X4yuq4
z%ggbplyk5n=+6@(eV_iBpIbO?OP?reC!Aa(aN}B{aOyo0s#hW9Y-2`yqYO#W$x<4H
z3A+y3XL;9Lo6>9JCFhkjObkIM)VBxTQuEVQ()Zt#+!q^{>G`PR`%Ujy+dxWYT!==S
zU*|b%Hg4Os7=k$WaRmdoJhacOlj=6<&;lZg)rDFx)V$re8uul9ClTKg=SO(_7C%x0
z)RgyVO5=NDQm%RKgg5oM`lH2k$<gV@N9lAVTfr;_cuUWDR$W}i!j(USYbXwre~<m4
zm(sL9R(~O6+$G0L+wkyFhMw4GWwHos6y3RVmFkswzv9m(Y7-d|{skXHSclgx7K02I
zr%J~%Ht@R+Z$AKkU&oDkp!E%BkUp07>LP38i>Q^%lGO`~nhtys)iK*RZ_Q9R^kj|y
zS+NsGD~<oHYxBN>b@?t$tR@JTw<1=0d;uk)CY__|>VkL$x{(M;|2H&4-r4f6r1^D%
zukKN#yf}(`7Qd;279V3t&{v$I5%yRPB#!YY)d00|l1{IEmQpNg$)|-WStO-~{^EJ|
zJ!IQ8kijB$mN|O<4Q(dL9USC?%A^XKjh{BEzrwb@_X`OM$$iAr5@IR!_8ou0`m!Kl
zM|D#J{o<yBRe;&jXQygCW`c&Aw_HXjlYlj2S*((mwb9PMT7avi5?feta@!sb9_?{#
zH^|3wb;Aypm-ryH^eg-3Ba15t_QH3)+O}l_*#(m#x~d^!;UfrN(Yhy{-E@jak0rkH
zF04teB@FmxlvjSn>m7Gd)xDO|YTvA+C)V%-e_5gMT1kWWW?$S3%KqJu<8P9=lF`)p
z13pB#!uq?ll~6Dnlg+g}W~*af<&Lc!mkKwz+)jaxV43kUT&>fE>T`OvThFFE#VW{}
z2%e2iNEWqU*Rwa}O?i~5UFj67v*bNa-0>(WBgDTeY~O{FwAAwT1LYO^{IlbqO5xbn
z{uf6xKWqf1Yw1>$XxmAut0zkl>(>k5Sad70EE}WEsRQAUu17Xh!`4=&HTkqTCy-3k
z7mI`|9z>%r_mMqO8c*tE9f`>Y>DF-3RYJiL4s~XBcXNZ1!|bCt48DBD8}Z=J;%%L!
zx_a&2;)m%PyVq-ph9f-Y+OG*~I9VelzcqlLN#FJmd7J;Dc`7e8G-T)6qaEei0ru*c
zEkh6gr7++7422dfh`<>ubG>)*V`c{iR6P0!{PxdHB@=J(P}nZ~);BJ=r(Bto>9JoW
z3{39Aq^@Z!ss~MoFHlQx#OWz(GfXKLDb9C4m;1uX?^0Gl;N|xO&C13?%`V$_O*9Tt
zt@)IGV-6{n(5l-&S5j?o=bC#6#ZCfVFBWoQg@7YjFCnaJXjJWsew2Mbq`(S7mtQpK
zfTfa;+|%fEye8+io-UTrvHyhYUDQJ8%lIV<CYhC+WrVI85ph{L#_XQ{dYtPz+G~V^
zU_ENla<8{oCF=q%ab8^YJ%{eS%0HitV%Zd}kLU!xs*p<vCnPPMcPVdP@BPexPrLFX
zdDroxK54x0QwqOs&L`hHvz7R3Sva<okKIef7HWvgrpV<_$v>taH^SW6KOwDhW||O2
zAu0m7U+=`IV#yENv6RpYiSr*+Ul(sLrQ%JP5v`iF2vff4?vT)m--k84xbhP5>fT4T
z&k?#BPrjvnbnIN6p&eT5pXH`w+Iauz$pS3VWGW|jq?0A<q0WZbHk0M?VeYiWG0`ye
z*BPgd+buF&sE^W2Xx$r5YS~Pxy4R0Jyy9R@t-4QYv@SG`hOb7V){EHIid^=cB7G~%
z0~llo@4X8HD}m2GzQPi9|1xyt6(u)W;FdDY5o4zk_v`PdYERFo&o7?^l`y_c8nkG*
z%iqE>a3M)*yZzN={MCE<4}p3l3Q4tGUDI*xOmdH^3e$hEYybFA*T3MPwLmC8{!46Y
zzf+9$rj-GaQ&{tMC24-!rbu(~aDhqAxA98GjdQ1vPe$VjC0er!PIkAXXxyLYk&*du
zTE$Ryv?pmu_VqJo)+|{{zf2y=|B&|eF@3#+@JM61eDBsG2Y75Ke!f_(zsh4#{;FQZ
z+lk~vOPTn!Yv`VkfwC*_>uxPcy?a~nHS4JR)`RfzFCUpr*R3cue$76Zy)*w*S2HG6
zP4ap`mXC(pXjls=iR(khnDscWy}d>zt)x3@vC6^YwAsDgm7O`1vK~CKp<VvgA|yA4
zC={FK(I)(c^Xgspyv+xd;6pFg)13jvP(Nh>JCg()-uSw=2Tw0l?%Q%tIg8K}5^~*p
z0SZ0YpnJ=*c4zUFQp=6zM#k{o+gEbN4~+}?H<UlVE)MnG#bx?sV{Oq$8}YVgjV2_n
zQx`?AyXqJawt1K$q9snGLB1_$x~^H6*gCgDl||1|G*=i5(R#NSDnx?3QE!VXuKy{u
zSoD_ViEfsoS>ohvaPQODQOi=z`}*5g!eoTMKas47VK_2d<u%ACo}xuT9pWk8Mn&dN
z)CAk`fv+&$(5Ncj!sS!g)V_WD?A*-hURfJNCcAv5aSd_uSs)0)vPPtt+`Y{-?Rr@B
zdVFM9&S9B_;qJ#PSjxMPjQflo9wsOi5~&f-J?jF&r{fHtsfN*M2g5E<eCP(A{gL)o
zFt-u2%eSV{dsrLO4k-y4MSY#@=6Ef?-i7l7?6MKIW)n^byjyPT{76*SYvrHy#2I(>
z{^Fe6uQip<OgH-drLUzfXR_rzj7QWzC$y<~K18xo8>sAf-{)zap=2q9Rv5f__;cau
zrUwD8L-vPEUhj^re3T=HcT{yHhk04=n$<*~P1qX|x;ur};+kLE=f@OI=@!Nw(89ga
z4;Ry0V6@Y5+wDG@@@695I#gdY6Xb!<GV<M7MFSZ{g>0`m_p#xNB)->FDCL;H*M)OW
zQ?k}j2R@*U{E{T>7@|$VK7+VrCY!plFvrMVa42ANZ#o?b?Zde;MKXP^i<|u*YP_D!
z^D6Q8%H?p*0`|G)_D@m2M$Q<D5}uMc_1pfKRMD1w@C8hUG+jQOX}|lm<`;aa>a(?J
zE5DD@K;6>wji6qFv4KIleY?CGWt#&#th@D;2`ddF)XT9tLKCY?Ia!l={d;7wqXy25
zyp<fTsD&m^m}kT)EKXAs#gGQS#pjWc?(3pnW~Yt?qSa%q7Vnyi`gT5&=FFo`&Me3n
zZMvFE3G+i<Y4Cdg>)^?>C(nxd$3gW9h9=xKS1qUS<>#5kW)T|Q#d)dkOv9xr9WNF?
z#ij=CbDDigE38?8W`2~uQT$UOhGT#4$Le&$kyiSPTMIwQIIYvS7Hllc$J~SLHIbY9
zj~iY)Pu1?QaIKzo$g9;U>V9A&*D38u=?_>qP<uAR!k0X1qto)t<FSgNO#E4+f4DQ7
zH7K;BM2D41+deXAw;{@gJ@4GR<6xtw?Xi*w-5|My@*{~Rb<<K`MN3K4Y6Q%noXM9y
zva0dT_4kDQhbmiIT=38HK~B^`8thMPBDHI3RLt(V$^<{Gi3|H&iXXiJe<j{`!uyJt
zYgBx6MO;}SRXR=*D<|+EGVuqIOIxsQtF=H<rE7PCREy}S!>&Y&*9pFT@LNjp&HztW
z>KZnmO3!I~S62(qXWgQ===)Sgg+nYz!qUg;u`ckCewln6EZDNekp2%pv!rO$`tOQ0
zO<k~l+X&{ouPi26hGwEG$}8ar^t{L9IKU=BPq<dhKrsS38Yr{#zy4$FYUIIr^$+@P
z=5z;^s!|htNVL>WaRviL*pk(gncK=dIWN)>FXoUfEt{}w%A(l?R<JmtY^C!3mWv3d
z6iC2qxtn4pLg@BTw7$RUqti5!;v=%HHt+Xz^$N1o99pY$Skw($itjtJ1!L_uSQsiv
z-tqc~M{&9NI8x!`UD&)EE^~Xot?@X$GrWbHbs;oN^HjyPQ)%G#`d&VVMeU#=AHEc!
z)ujK(aY6a9ufBPqc;46055()&V41IfiR|LdzW$_iUdbrX*ja9vNyo4x5gAiMyQTd7
zUQEvD_qKBW*WcQ&8aj#AGy3C<Zu`Z13hf?t()me$Zv6Djelq?jyG^1%KUj@@URPEN
zdW9-8*{%cJuH9lw*qWRNGNPKQSg5I$XXO@q|5nv2L~kaR>aD=xNDpj2!2APBy8QK>
z=>(H^I$5rYr=%%iMiTuml3tL^B@>E`LY}jbLglT8J{Xsi4>dlkiVx3@jU@J;-~2h_
zKs}Of!Q=U|p;U+9PRrKEzMAC$RKrZY@l9+7NbuL9sTXZjzj$f79>ptP_qb!1%)LUr
zSOsSIezCX3WRQ&eERoZHp&!|zL`FGZN;Y;%Oy8r>XSd&EUO@2CN5WfSCKj)~K27DV
zkw@OFGKmmbmcEGdT#ExWttcE;6s)1cFvab4j@#PeJPPBhB#3?)0*W@`Uy;TYBRW$N
zwm)&0`qg(4NJ-@_LI3@Jk9MYAFAeE~lm+LPPvGRIty1+>{HvOe2>pA;>PP|{acW4T
z*Pw55+O=qx3H9T7+S~4$cKf(mOOvH&lpMX|7?&SLTbF0WD(Jrayt0Gf@ULxNSL!Mp
zdPl|iQtgH=>~Ry-89^^`W@nZGIeF0yi`!DT3Y8B>QYp}WizU9j*D|&reLV}%zCl@b
z=zG)gD?`?#;4F5XSxr0n-48@ktoFnS2}e6v4EPda;#CG`=9YxUsw}Va3*&;$f>jyh
zKctbm$vm=bkpIk#{Rst{-lxzRk;Tca&Jg)bAzWHBB&<P=h+>cpEnX6#e$fyian%E<
zX8Z!JKRVDzaF!#isbKKzB(=mbE~CR%BrKc*Ler|&MQA_b9>A5hNcysSg$LKH@9oDa
zMyoM_#tv+69<CkJEFSQZ3$rNPOf_GjVqWq4o^D57lDaznc)P2&hIDJSgLh<vKO}*w
zRjE(t;XeBu{@8aa`(sqjs|PB=XVH1pNHCn3@yGi#<lQhi_lU=hQwJSBwCu`=*_fG!
zN~58%Od7;XHG&1(S6_#Ot)+FxBt@6YcPLN4&~|#@Ebho>9)vQN&bqUdUL?MxywQn6
ztQt<_u_x_Lm}=&l$~-tU-;KV=QMbtL*1Nr9IBf#0OsA@}mE=i!vHP<MWt3=3HSeDE
z)F{!hosau%%7sqjx}($a9HXS6=Q%qenC>bbPBEn#ZY*P=zA!&tKkL9v<$f>is<%?E
znPUs3%L^i{8M*vBMhh`p?)R^kQ8z$HQY~qDOs6}1Oag`j<SV4~ZlrFopB|dOC3*Aa
zr)ohKj>Cg^$k!%azOsl$)qK=!%29y!9Ba6CRiT+J$Vy*)2$k==dt-)X1^c9cWW~cx
zhteiHlK?)dJ2xXi^-E@Z0Eu{N-O}_5o+eNz*WeoUHSOWKc6iLKcn->&RE`;W9`!Hx
zK`dWJl4kGC|9s*5G*rKlB=)YfYAQ^9i(?`n`&bbRYH*gT^3>6PKz{QFjeQgQR$PKc
z2KO(OzQbR{dil?59tNC4Z14`#)!dlC+h)O4OU<D)bH#1n7uh+?OLng#Ju|*~<S^`o
z#R<RAF`l&y)LF+F!%Du3pS8=t+^3htX?~*Vs?8P~YNVLe5@Y*d;E}`iAj2&q3jR5F
ztfXJ4$HN4w<&}08`&h0@-#An}z=@rdr2$u7Cw>FdN~u-tDBYI)IZ8>&SWP0^LbmEU
zvP|**ixKW)K{T5mWn^oxaPxs@_H>02Z4eb2T*xbRVtSANUY{$1t&xOf-orqExA6E1
zv%=%%jaTopdMc>|bPN08e6KzgRIQn&tm&$B>QEF;^lJIRc0JaJ>zSvh5#5XhS+~25
zMbhwGb+QcQSNIqe3ulag&oR2WMz|ZATwxjKGQ#_Du_h}|v+E++7nhtm9x|kfO--jj
znskWZzk0)^Sy?}mvD$RsxK>=mBl(e?el4hbG?x}u<tp%bcp-=8WstiOJGWGrGS=$#
zM1sAX`zJ)2W-k~RqiJFfOV0uV&Te?+jf&pcac*YzH~;n6={D#~ZKfcMnFuxg*eg}<
zJZs^{!Q1A7maroDB(yOsVsl}ciSe^S+Kx<1V54%IZ9A6EadP-fgpJaRIl%<oN5KzA
zcghU~65nc>xJt$&qy>9KgYLH!sIFB}<4!;4O*z3YeRTo-WUG-Xt&w^+@g0lGe*d)K
z9kUYAR*3F$&$e{xb=TcxiTm4n4@aBuoib2H#<^+DG!cj2Ux^TBopzl+EPwQf6M0k8
z4pp7Jq(^qJ)KroN5*ar}Ex8s5<=pv^P<Jj{)yB0V{@G00Sg1CA_)Q63GkPuJc>kl|
zsa6pkgN$3@7moJ3!YY!zwGE?U@fmo-Z`duUoi4=XV>-*7h{yb_N7#GRmX_{IRx6Yd
ztE)c$NX~Y4WW%pZ0E@77%4zxaK%1rXeEi{u3o5$%vpS9%@0)B;;paXMlxU%Z_Rke!
z6n=v_$FxxzR5LxXWoH$jWdFzdt;Uw$7BwE=GhV;lo^5tt8D}k@(#U6&1TulRHa=Az
z96Q_p-ibP;W8{QrjzMUl&E03X^t<6V_hRlB#;*<LqT{Vo22>)>)!r51Qm;>=AWBo^
zs(u-f?Hw7=r-Nfp=SE~xXM!$zc8eizH2ZGiS<s<7U00ex{tEJ8WLOGpR%0UC)NN)m
z@mJrMx_rBR)e~<X>Vu~umyM7);Mbwg+qo})us)#m#_+8D=-g`fo&U05xTdn=i<r;b
z8>gpNy<XRN70-o@uRVxgy-w7`gReZ%*m;xNvX#8{LmZfr?%0-jf-oo5!R&qwR6|j(
zb=31~fi7axB^g2LE!#Vsejm$MbyG&$lrHs+zzspFopib5k9Ss{K_E!)YkfUu{-f#L
z^2MgvydbHweIWx*J;`U)>;XF_thz+>f<d}ZINNdSa|km&2?qUYBE^=cdvK~5@;$Yj
zmZl^9DvjYF*{=*qwF3=)F^G3s0q`+?>Fm`gbFOQ{8Dn%UB%=vNGBGCf@P0(zloxV=
zu1m$RFR8EdKK6irfezBkX^1ee`h0_M1vhblg-x7Y!xsB~$Ciz+illP|8=Ltum6`3$
zGDJy(t3h5-SEBb6YT5R~q_>d&ddu^WSP-JzWmqh_TBu#JX`yx<r~TW0GJQyqWRl?U
zK7-o6^f!V6P7_-?r`Z5e%IhiR)%AE!t;ao8ei{`Oe0+C(xPre<0G{N7j6oo>yT%f&
zhMl2Zy6pGbcEw`rX+O7jr^>bzXn0lSeV+QLYC}9N*$zpQ8e8Dp&%#=h51;2a9&2y-
zoZ9#-4__;*OlB$LRiM=45Di=PW;ck!s($5xrl`3gN#@Fh#nfXhn+7|55l@oS6#_h}
zdY@{n2UIrG%?!EapHiO&C&^cj<wTqKvL;X6tjpCuf6BX;u7i!|d}eeZ2@BZ5qJ3bv
zKukVGC#g#An%feh;I+~%{qWF-&!M)W^Q`W0g(GQ`sMl!YDJa3X*X~B=3!XHul0uCF
zAF~=iUlqPz!Hi?=a*zsL%gVvI;RC@qYMn&ui4C*#SHkQrqHW1st=6|lLsR?{$M5&s
zUD+|^BzdF*B`68YeZgT(o@j0+0}r$LUjdXpYr#Mne9OIvr2#@o1jX37nfDYT654VB
zx&kWGVIH(De50oCWKrb%Juo%#ZKrt*i#uAv#z1c#7Gq|C)7;$Ne08ZA2MMY;-!nlz
z#+kZdfw0;OaIqI7LF<^q%t39o4%=RrDa0UyTl|2HhhsK3;)~*=jR-!ovh~~Z1ZVj&
zB75y*`~CX$YUqr8Ui1*z|26r|sstJA^lpyvhjnC&y>&N7-@D?tDczIsCj#V>gP#jz
z)z;kjwl<;sEJtny3&ri^5&iD;onbf8TkBDHmVBa=0ou>`x1E-e<t_j;4;i$m`K~kn
zs`YvJZKA@oprf1?^mjpBx8ut%(WUq<|6<y0Eb51A<%I!}Ti{SeWhzkISDqg}1S%Cy
zeOCYDAFEQGAji0O6R@>GDp5ws$+>-&Xtge?PH0%**S81>KXi<M%;TXDqxs8|e|7h3
z!+%pmRCKHt94_59{;e948Qt3(kGkrsPv6xwoj_c&VdVccF$|{6<n({2KtVsn_D^ry
zs!Mt9kU8`4+W}_&a2Tk5>TUwqd@sP!&XNoL5^0s@;#ZcAP}%VUqusDN3xw-v4_0Bi
zk6Z)Y6@S2Bf2<G6;OsO7URd|ls9u1CHL|~G$JkSX8dq~d;*({v+DGLfns+<REZ%Q5
zagI-z^kTZd>O;gSZg^$SX`Q0gp;864NGEy1$&osHsEbmp?NP#W8H<8E5l;`y@H5-X
zt#L^&FbS<4GqBL`h3Rg>LRYT=jZLqn_?7oY1#`%UO%U|br_7DM45$g3-jMUZ2;T0%
zw1Gg0@U%Qr763YK*VlffCg^EgmB@p_Pe#sMH1TVmNF%b#^-iD?U-ZqKxdTn{8UkoY
z=L<#boSa3Q;VH~T;%`CHSihJZ%%!FU!f1)sK+3{u%?Gn~XW7M(AgeoKn#UfHE1A}u
z4+}b(Ohc@@8?OSK8()xTA3kR!NR0KQG8rjsO_7w~`E@CnlVRw(Rx0Xb#+X_zIaOy~
z5Tr+~>k}cx1l7|2d4qZ$mha#3s}H4KvHuRtqf3sVllT{@QOu7rZQ0<#=;7n{6cD(|
zyES!R{}#lW77(nkisV2%6{$@pDFSI-k{o4RQt~Qj9G7=DbfBDJKtmP1RvG!XmZ92B
zqXKS+qNPLnE@~Vb$_~fR0HGqLFnpV#ko0ec))&-MU|<G1PTo5rVjQl+T7>(dKH=I)
z7R9SAQr2s>12}@4CV4($me2Z)7n22s&C}otyP7xBBsboehh{zB&;qbM09^V2;k!FT
zy0yGQ^#8~<SQi?@I$O~JbsBuG@G-|OOk=@;IvU5B<!q2>-$NzH`vNLcjn>C7MF&|a
zmuq$4?$f1Hnhllmls@cd+E7<eLO@zcPZ6*w+b3MFmn)xxmPC6GUy#86(!)ys9p4cE
zj69Vu7&&-=8gUpt$p(-DzX6N1GCzw7^@|#dodgW}Vc8-KbE}>pVGty(-=1vZ;%P{R
z)GOL0KM9h#qDFV5-9>+=NvxUAbHI#GOG1ui1_Lq5kG?$=<Qmj-LYi(CwdM-hV1e<)
z$y)cF_qPpI^5@kpIdd6D0$~tzvRD%G*y=1?^3FIxBC<ko{$K{|@YV#e4{F!dFRiFk
z|0+#{U=SH+GNkZ~4X5sjPyp|2k8n=MI}Z|$q)iDAI3>Tr$*tN$+nlf3y>ImK0b4u-
z2sfg>!va?oC)}gY_9<RO?B_CG8p9|uiZU&we0QED;@OJ2z~l3DOzfdV8}T}X@=UDm
zbqY9O`c<T*UeQy<+3a!jo-BE5fzkfr<$H9V$MnIK+=m3?d}LT+Eroul%Ll~~cz-ID
z@Pti8v~Tc(pya!O<ZUP$sx2ov1h<lUQ@<<P$E01(=DD5gDkZ034L`a-VSKzAGD}p0
zf<CvI36sfjv6V%2tDfn#86!N!F*BAeBp!B|e{buIbx=H(i@dJXY72vi7Q0)xLp(mJ
z*0UI(90ntYQ0-+aoMMHAICMVWA$aF2%~4Qc;KJoXBVgNT5PEt1fY(qN3N)Rn2*`&8
zdS(S!Erp;FIi?2Kv!V|e|B|0TdWW!N=uc*RjC+LEnRo7eEE}|1GUdZeC_x2rN&|>i
zr|`Te!(@|Nr+`{nHg8LUsUYUBlA4)6H}~BMMM6{Kbm%HZmI5`NzEdDUoj%NgNBQ%~
z<8T)_=Q}}PR(zpikO+JUJ0n|Ys9D?Md4#d`;B|-uLrsTuYpxJ{=!Yb*h0<(VxU=R6
z%5UdZJcoMA!iA7!q@FlP`XdSj2li^M+1T&p@vQz$171k1It0aTA>j1u!$I)!IUl6H
zeOYoawvPN_c3}hh!+Kgjvj-m&OtWUEciLoamnKRvdZYy+>31qU`3QQ7Zw53D4ocsU
zy;yeT`2C<#TKL*24Tw%9mrAtIw1E@n6H(4N4B44HDjtre2ed3iVd=|ZVn(e3gn*<d
z-<dbw03{7<^i7t7_(1Wi&-YAJ$liGE5&<n_mA$YPVsqhE&=f?|8l}|R5Hg505uGc+
zjYgy)k0=j<ulARB{{e#ez#`Uqmt-jlV6oc`3)lWK0I(izn1HzEr<BJ1drgD9@Kxdz
z$)YyXT6Z4ue6K}`fQ5}lhuA#RuM8%JK1u27sKSexZz~1EZtJGltt@B?H;*}sS1H=E
z<5SM%-0nzjnA4d^$A#djl)jiOEP=;S>chrCgvpHTsW)l?yX;(^)RpwE$4DCxmEMYz
zg#Ip9lNM8$qd3&5&1X+32r&XrGtO+Vnhn#+t@uVwC*w(30_EhBr~v>IwErUDo#Z<c
z3(hZm!#AJ|pPrt=BJ~cj{9%tzJG92+u#RQ4{?JnMlWJ$ZTe_iw`&1a2A{>8$w0d_1
zPAj;d6DCZmrJIJBC~j>Mz5x>nb1<*5V;wu3DM1~-qlHNu6-zsDso={!&Kg2=Jl!I>
zz_k1+_v-jbw?taPzVkOg$(6koz4tB1(8fHR3S$!0#$|y#VOz^E;(z~IcC^4$yVVGv
zCamz~68C{vqOXHeNAv%wzthFSb3X|&bl2842_e$eguWzvCj(osr>!2?bB(-n!K%f^
zt$`x>T@aN9AK^y`wr=rhv24@+eQJvL@$k@hYqok(&KFL)3kl(K>vU21ST`+fwtbAX
zb4-+IIh|M|e62`XMFBBG>xO{O?dXj$y~Ca?Dbg3ahb3;8N?OA{@pmQ~{oh@&qJ4}m
zv<K0ZPQecqodgFrm!0;n@^65et|9#yd*s&o^(*`mHSEq{41#Q~OZ%_ffL)DBe>52I
zo*!Dga9PP7o^EuS1!bZiQMg&SjRLbppJxIE_Qc!2Q1u{_BKG~;oJsfCsX9l(Huz|I
zZ~6j00_lxe;3*c$S;eE~Bz96yE$i)CnrZOq2~;nDt|g&Qa`9b?P|NoUI^OAO&ox$7
zHD)Zr$m&c&!7yYcceH$-h6015xW6z7X*3p<!?WnIB)kLPxWZK~<(#&%9)R1q1EIKO
z3+=S7l{pI-QlAvCk1G<7k+qLI{mHO!wE*tGbXyRL0v0{89i7619`*Bgd2n<TP}(dl
z2t42Fc!@mQ1j}e_PERbA%Z6W@Qv(}`{m@re`R|$edXagO;mL%B5Tt&uXwgL-b-q-O
zk^5{tWTNj$fb+lG(3LmhVC^HuC%og6+J<_0m^mlP!Q?NK!ya=3OJA=fqx3m5Y5V_q
zH0!Bt-&;~K)G<%G1~T>tN3aUZoisdaVqYMgTtp{Sg0Br=t38?5)<Xl)?f0mg3EIFO
zOTs}_(=?SBHg}7tK(ulJtL;S+rOEm1<t%@qa+g1}xHy&?XqyB&&v+LVNP?_8GuG)*
ztpaL%9|~zcLz2JlgGN-ad!_`lKS5IsV<4YRx`(W4G+WA*PZ~SGWyCyg`v6g{n<ht7
zo)$TDcmDs8{Ay?>zRASFo>*Bu)#x&lGy@__j+R}|MO~c#e0ppKYl4b4aD$_y7pznA
za0tIrH2*P9QV$+?7E~IWjh6zxm6}xrY1V}PJS6BmRRYXL^|Q*V<JrxaPWQZ_oKfZK
zZ1ci^5D=x`4Rt1;c*9dLG4c#{_#c5tQlh`1Qlml!Z0{*=qXT8w2$0v!4#eBl&-jaM
z!Z%+tEBElUKA%EKevRy>ZU1W9=o3BbH9+^?yU=+QbT|mz{DjT+)yc(6C2KZ9CPQ4r
zdDOEK;jf!nbk0EiAp8OOp4P5VWaCkyJNTzy04srb%pyakyXWOYP^NI<U^@uA)Gvnn
z$9n$-G_O9mH`7tGm+GY1f+mT-2}=Z(#G3oXCGAHj2>MLpX2fXc=pSXU&2|J`7$Qv{
z9bVZm<w@q}2^gR22`^N~M!LMmn<=2VE!vp{+g({~=)1yv_y4%UP+#fe2rk{67h^YE
z)^HOGa9uEuGL@pRy-|;^f^3Nbm)UwZu~ZlUI&n(ysKi*35W>JZ+)>Wiq20Y)(YGNw
zAjfEe5^}Li%kB)Z+kM{TWSSS0ML%TIg~62$N<^We-KZ85WDR_s$}ID<P*Ha?g-22K
z(vXixQy5Y5NLdt-TcnsO0YH=JPhdzzOWJR7Oo9)QU)(MT^XR&V)HA+I)tDPX@{16Q
zyOa>-R6Zs6H3XVk*xlS+=$s(DyB~aNxaL<^UD2lsX$FtSwK&}Y2WOiiaiDs^SoJsC
z2vg({1G;s&Ex|U5cUq9ts|W`3dK4o`-bqVc?Ztm0%_$F>zr(%bt>AW2tdQi5A6JHq
zI3o+&km0ZlicJHED?tYrX{&4&F30K3T;ErUK?rm?k-2u9DC5ih2{xQz;2HqFKNAxe
zbmLJ!%|hWpHRHDBi0rvwSfB|hs6$yjWh_-=KrU${BY;x|v@zyc$9yz->2%!+N-TB!
zDI5ZOlPPs8g(A@G0%VV8=dROWs0C|m?2G0ncu;h2>(X5>53W@o`WFX;h1XPX!j2Jb
zMtZc7$F|Pla40go02D+7qxZHKwRb(Gl@i&(-51`4m{ALwl2JAg(-%phFH{p*AppK~
z9qboMb1CDphNi2NIHj^VVs}S$59SUs#nt5>1JXXull=V}q+vA}c*J2s1qEI`Z193d
zh--t&cumT1<6-A>%Lw3;;S~eouxL=j>Mi=ohP-_D$<>>8!JPAiHTa#0Cht}xR$P#8
zqXSVa76g*&<G-?}k|%u+N6@YSqw*WL|Jel|tc|{Az~Ql}?}S@r+(j)L?25h@E?+>a
zDno3J^+3we+qpoA&JkChJy5cVz%|KreQb^3K+`gDQKM|D2XJHS=o{rg;Iov96a`{$
z>Fd2_3p}SrGBi|}4qMXmRA#``G-S&eP+2LjXC;(HuQbEUbM#+R?PZo^v^)YzX_!DI
zuKeWP@W+Iv!ji_&1w`kh_koAJ>rAT!ff!mr6ZbR_Kj3Gp+Jsj8V|P9ZQy=eT?MdU2
z3oQ}c0=V0yq52(tU_0?S+|9W3&EWC#IcVYwQOLBZ*?MO#*Y062*PLjXML8n*^Ilku
zebKWVK&4KHbJa7o({>n-$6^T#kt}*q4=Hb{N>8SGt5|(`>Y)x-r<AAw!cXnpgIlPx
z2Fji`?fwe-v3Ycx<lJ#1h4g@QVm%11)zdp6N<rAl`Ac|BTH0qf7ZA}6`^ys{y*%1=
zUWnj0_v@pkg02yGCrS|vNeF>15YTI}iO_yW+svurxLFnR!Qiu0rKdYPdTn)Ckoop9
zf;EW<XYcb4x1uIW&7V;x@&$WYz?_>0WhtkiVV#q>C@@Zv9%e)F$GQmDaPVPrkp3;j
z26-V%iXnOYE4)qh_Fe=4?eRG_qvEjON{L$Bsx{I&nS}oYWMkIDsz{k;$)6Vf*E2<w
z9rK|nQe<71I}g?{>Gt&lk;Q;q%g=7bzi=~2CA~%hAP0N;)v?3RkdIAmWi+P)-pQ1C
z$GY<iS)Nr)9_-9KVZo?D@Mul7jO$W?`~je%Th-2<lVZ&Dz^`k<<d%!|P8|EMe=a{6
z#@DtIqMI9;$qZ3anu=x<eMagXUV(fwlAA9)ZuJov(33sAeaz?ftaD;?wTs6-S#jY5
z2XKtp7(6qXV}sU{q$k(FX0ij1>%X<)+Qf5azc?ULVB8s8vu;@;&ku!>u4)Vk9aJ(u
zcgZgZ?&!OBi%^1=xcY`r4RP%d-vGzY?r-V83$V0aO7?NNp|*ZrV}v~>v8779riSGo
z0X<boBdS$d<CJq@we4dOCi3Pcwiw9rU<cQJcXbHz`@{?hf$W_^h;(%oJi@^WLpn&C
zuS?F@JlzXBTOo3mV|hyqGJ1ZTlbWr5&)SK$4~j1JlojsMawIU2+8)B%Wu-#JEnY`Z
zVXAnByCI4!Tu5>jUo?nmd?<2QZ%N0L_ztSx34Ic@ia8k=g*c9mW&mcl<goXLlIgR!
zVnKPrj5pWRamp}Yc<PJgRSB8vV1_<?>U&jR!kSQn21z)Jif^M-gCoToP`9u3{Qa8V
z)keJ2U-SQi4A9d#)~LP$ImqW@?C7SJh<rgHCSyLLv7T4QbPY|+H1?bwdcS4bQM#HX
z_pskcsUnONcG~TqZMAznAxxy#!r-jXH+iU}(CT31M9I43O2){9q$K#xYI?DkZp(nY
zk6W95M8u~|S@_`5e?%;T>_}G_)6O}5bSt?6!Ua4+-n-j=UtdU&TC8Le(;h$MfrDM4
z9o+$2J1hm<{GEZqKkR!IOu=7{<?RGMZ5wV=#}-dd0XEu2_WJhxO+%Z3dK*Ou9(j6X
zjx%&H8<XVTYTSIMyEPf@zU4-7Ku?~|9${Mrm%OZG2Dm_bYAp-mL6^+1TqUPQCvIx;
z*oUz`cg*m;7ztuKnuxSJY*82AjPF&=9_Dp{=0Ll_Kv|L9@o>s?Z`YaySXD4L8b-|)
zaS|?Q?Z_3nt<{#L@DCrNUBw~{bByX3yg-HwC>3U3Gm+_C--2giCDdNJtvxIMUYA>K
z%2eINK|ptv19?lLkeG1%p+-fN>dsN`zz$I{U=lV%8?!ofh*MaNF+R@JyvyxEXt6lm
zKA8SS?5zv{5R^_yY=PajAM(9zN#m9E0VfBbg7D`FuNdPw3`ogRSFaY)eb%;8G3kVA
zS#WtPP=prAi)^k-+$KVsv>B6bolEb}MX_;K<c4|~GfnNN2Ur2u)Pe$>A0&NrwZJ#s
zCx#r)?xj<dFg(ie6QkR3hLyDZk0T08%dF{TaRImtMh7r11|0MzTv1Rso!5q!=XxDd
zxiB??o`g0=&~tp}GDLl(+Ww-C%583CcZUf@dU6gsG3y@Y8SU6}K)>%1A2rmN`6FC2
zyShNIzE;~*=sib*W2(vRFd=d9RTB?$*%bo2JO{>`WlqQ`hMm<UL9{K&6KKD)+DVST
z69L`>J8|Oo?s4k%nW}pOB4&_Bcpp6kSoLtW{a0r8xT@Dh$BjNpvOYD<clv3zbe{+(
zu=T<#AYHVK9FVm(@P_uXpVl69qr)@-wO?#CX6mgC*P(Adt%m#gJmOXB=Z2xoU1hRq
zoh*JoUmX7Esv~5eHNKz3o`MN%SxpZ)Q4GbQ<643~zoDdsWvd|m7{eURNGSj#qUxiG
z`?GE*F~pN79KT#({{1F7FX-&5-D7J|NwGr3Mt~2Q!_rudMA@-SXodx%sVD?Zr^gqt
zuzL$vHZ<uDvR%oj2&99|KLGqJSSH(`TT7OOPRdumD6Kwq<%gXcXPI_l@m_OZVxnuW
z6R=^IqA5sOvHpVk#Gx5hYf64<=7x6`;c{D2J6|!U(bfPKdM5n0{M{2=*)E>OzLW(j
zWPWYtHU)e6rOD6XZB@H$gqkr~8KPgu$jhUanMs3;FU-T13N7VMyeoDNa8mt)<+~8|
z{5PQ~wfg^=iZ6*IyXR*9;VrhJ9IhE2X2N;zq{uS9KtNvY(VTLdh&<R#qthSpV(0{k
zo$7hUQFf3crqF2$s3}C`2bx@7K)42EqSAj7$N4vp#rXGFf-G&VRU7mI-M30snOL?W
zfQpB-Ns`>}o<9-E*}5zVEa#$TUuwC>Oxa8l;1sB*<wy)6@|>`_U>E7tAppBZ?g6OB
zu?pk^RTRL!&xLuKd7z=0^}6!Du5EdRD=lNS3_kuvgKk8{ovx@FQpCa>bPulC+<ZFb
zP{2j#trR3cS*Jc_h|)D9*%|ebX9i-c7zfS+&`ACAi3s_{<ri*8491sYBT#@)LYr>k
zirT3gT7=!7)h|>#F>YH~4yr{L@QaA;kXhmGlUMX(+Pd#Lko*Qx+DO^;dj)543%KJ7
zT9jY69ONesv?DP#`ro1)u|)D@Bn-diXt|f@mc}UcXf^GQmRHz?C49gtq%?8&k3}I<
z&ZzJHn2dIA+D%k0JxVOjlkt}N(O}cE6l|A`M{}u{-I+B~ZgcL{gS7k3g$u45JR9p$
zVE9$pB)>bgJ<J8TSQtgwRhxOo)6CBCNEb6k^^ls%QVki#m7#WK#<(IICymG(q80@c
zdPf+epfGJg_8B0=@ymvDn4y7hy>)#$FJ7gdj}}mkO;s&KKUvyTr*}R1dg@xzbx0@Y
z__L>Y+njZ6j|rwFBh$!4O=?^gU^8*^_Go3l@!c!$Sf%_VaQz*kJCowykwp;zTG;4k
zBohrT(rCY24o?q)q!3;yR+t|<WpKO+W1136L%&G)vDp7jaQs&b*3Aq+tsrl4?-2LY
zmJM0B-bhbF6<o%zt;6XR>QwFcLZ&6bL`HYrzsu|z5{C?07<*=46ovs)Ad~>XjH<mo
z?P5|vh7HT{;IFPH{)J9^^c#fYgesUhIU-c-M;Lu(f)Wmul8d*yFOSCU(k1pSH>Xw@
zi5X;aX#+CcAFvDX->(IXg$<dr6x>-d$Rph$FrRMdru5dfHjACh@s0*e1E0=Rk4q{%
zrdNm;a5Y2N126l`W(U#4o6Y}iQ(}kNw09s7ll7v>U!TO9RO<hJe~;?|A>G9M`ShtD
zjKSQnN|QZ?VVDRF9cVQ;^<wdHYKMVlfufdGF0h@%mDLA-vMQTODg2Ir3oMA@iDL`4
z5`?7-HdMttw{NPC`cxhv&4^W50Z6hHdh+Vf&uxm$vi9_c@!5$0Kh0a<qlfikyf;$3
zm7GTh>clKF@~Qg<z~skm3a6%rAh16c<6Qt^R;KOhW?vA`{onLQdq3H;oG{~1%!As-
zw(OY3PzOz`gKFA+L-;GR>VBl3fR;%g_y6I()#r7tXd$@0n4;`8*h!TvQ2DMC0%C-)
z9w|pM6lENE_&DMHJrz_2d_W7PSqBvcf0WUsOl&X1hoU=*b7aMug=A_zjs-`PQjiXN
zv(tZ$2+HX;fxTbdYbmPT<6?Hg$(-^VH<<h(%1<SFs9r6tP}LK_%7G+dJ+;#Lp>$3&
zO+8~E8rvTi30$76gog|&&hM*sRChy7F?gR0HhnXyG&mNC>vl3qn2MfTN4t(yi^F%8
zf$K1mfG9Ux5s_~*p(gT9%@@}=F(vl+wyvPSGW{e#AoI#t1pY2S%4Qp%ows0D?I7ah
zjbmV}3Q==0d+UbhI9v|*qx6nNQUVerR(RSA0?Hdign)$Z*%mSPVH}Xq@WTqeJ>_Ux
zGj36iKsF0sDJRuyjR!k4;u%JYuh+j=Po5QhKtt68Hy-$-8xy<MRV2@z-<fBFfJ>$Q
z(Y2X??+MlN4)<YS)Y1c`jgIkhT0EXQtz>U0t(-kau_Qq^Xwq$$$|V4K8<0<#5CC$1
z&u<y|1Lr9Sc3P0*#BUYg8Xjdj8IZEo(gM`L-KkH)5a0pHuqa(YI+E#o3y&{n?<Lsm
z)FOE8flmI?QEYCde*ag}ct5Opxi)Lb$W{tv=f-#623kwDW}foU--F-Ag~#`cLMe91
z46TF00R}G|9>>0PTraT)-`TAv^7tD&fJ60B@=F+aLvw(Y;L!Ty&3Sl6;^D0C|6*br
zQ$(ML(;W>O;~L!08`{6s2YR|b#++n+LcR$B2%b1dSf%l~Y@GW|KqT!44uA<=fbPKq
zLST(qyV-O+d*4h8zjZQC`^Vi!#~Xei0*L62O#xf(epKGHNyS9qc-DZLMyp+3-OYDp
z?EG>K^YFkL3di@v=gssFbZZ@t;7>{nM=F4r#)IKg5s_d}$!tE7ziZ&+U^S)tUhHtn
z13F3=P>YXMWsXs?-kq43=dhRzs6omXt<eABtjOS_Lo`+sm@ILPRp8Q6X<AAfp9q5O
z?o}&JZ~oVU7UZ)3AiB(ZZhPUvwqEt_<*d`gTwT(@MoA4x8FHM<k>zRJ$6boA)U9%r
zBz?QJJlBmdr>^Km7sRS~VARKi+JPB?!gceiO6ng{bm--A0YRh9^7LPH+BBfS57Qqm
zIk0@Xo~n*$lFi=Am#4{U<RWeyq?86SZH!Y9@SqiYCAs05TPA+>K(gf9H=+MB_jbS%
zQH%;ITa2y<COqwAt6vFv2v+JvyI8gUz~l^c%WW$de);URI>w%4xf_*a8NLEgD7CQ?
z#8&nU(&Ar;dr0NO%WhQh2i-;KfbiXk=P9ptAYs&LO2>rWfcLfe{*;%Qkg&&Dk9gw2
z`7yST?aR^Ho$$3*aps7NLhC(CiCyWj-`seJh(`Rp)3`gDNeQP}01sl?;=U`S%<6a&
z2ZN<Oh7$R|QK9_}(I<F{{d-s*@&XAe*9~C+J=J?wkOe?VAouqWp|CaRkH1RI${%Bk
zw8Bjhgyld2dPYZQC4|u3C-WrQ82ZbgA^sUa9)ULMlp$zC{pWR%lnBgl7uYrQ!q2xw
z@>ht{SU^OBA32O5Jjt2!C0i(kHd1`^MteE&x_I;L3w>{mkpUsRmT~uw<ZQp2{vG%M
zUnldlt0I;rUBC9yKlg~ExZ7(dbKddG73XhD+3|j&G%qh^@e{pRJ^e$a#An=_E<G<n
z_@^!zx9k&dA}`w4ZDuDmU|%#{8jWburY-iq^E1Im?#|J2hgw8)hK}UCl&=P4lNKkL
zUe3qdfmZrYjFdG$lrA>%#3f%=BoVv+@m7NORE;T-#-~hw<{TEOiAo_f2i+dIoNPdg
zCPysAOe)v(;3<d&?&J+qPq2(k_B;P=?dh4b`y*Bf>;-^SHxHx2w1=8CeL_=C{XDY$
z$k`_Jd(xbS|JYgFHT~jIOF*>0voyS<R^!AVfjry8IzT2Rj>Xq816dFd)LhHrm$OMy
zXp%S|S8~~P2qCQ>Q6;{9{C5u;B%#T;2n!>{+Ymm1C?gR-V5i*DE?p4Wt<DpI*Koib
zQz>ITrgr_mE*es&JpVyN5Q!h?QmPmdn=1N$9~lh^TORtulH_FWxtZb`D%%=*qCYzC
zTTD(k8Yt*<h~u!-R)zENEBqY|QS+rYZX?=%Z=fvIlp8Fng_l6{p8+sncLED*-war?
zvCsz8oUuG4%vQkkPo#F$llI7in@?7-&8SuqaN|s&>`I19$~)=&)S!WPLSlWTZ8@fd
ze$#(wX{by182KsNP6j!-XUGvlG;{hy?`-pqY~$@MtwPZX!nT+C#bE^XER1=;N=3)5
zZtOmIoiDH?kGy_QBWJ!eSMt{`j`ERO8Ln0ORh7xMs(*thv@zDV{7J7rhfwK)BKJXu
zdyPrf3O2vtcx#6hAibB%!h-Ge<L0I$8Ws={Z`A|vL%@e%f#?~I)DUDYz`;oU?gBF-
zFfPi{tabp>pfQ{b%r9Yb8<ygq8NDKH2=KXvJ7O-|P6vHK0zcp5SBY?spN=I6`y*1q
zy~n-FOe~WA40rSwvu{7pfDS)mIaY<?-gE6`T>00!0jy{k)<yMlu+rQLpzKR#PHQ+(
zV*1Px7b?>GI_u)L;&}s_Yr11Q)%8Hg%e^IQ_ywvW+l?_IALA$4#}Cwy<JR9DVE3rQ
zkGmY|f!l6;L(h?$UwEoqd#TLu;08Nay3X^E1OpOwGBDNV)-q3R)TjAGZmT+kYd}eR
zRKTO;SgbV)75)X#Xo%)Z%KNuP?gb9wSk2E|Wyt4Az?Zf}TtNXkzc`DvBSr5Jaol(K
z+3CYjlhwN$Os%_&xV9WxuDXfHG5|vYO-v&(Qr8`zKEXVMPu?_9JWJ9@tjwNb%`&ft
zIe!qeJ*?^A4yV+WKr$h&!P<RTZhD+jxHG2Rju_5$iG8Nllr5+nWM2VE`La(6(*Nxz
zv+AtQZyBxRyN^K(Vg#iMdrVjF*r8E)9H_vdDVza2^)uxWD$=$4jB|T01`}OYEO38>
z&dB&J{uaDFamGf*`)2sW#RnfsB~UE(`gBUI_WF1|CM|VX5aU%p1b`4LqvW=qplXFH
zHsNsu?vWZE0JA=p#Q0@L%DGSV)2+Rc3u-8ym~oxm<}b=Y`mtH-zVPN-2Xo61PD}zY
z1@H#}3s9#(a>)`A0`)i9GT%v7=~jAy)<PQQEFM&kJZ?$8#+as1ShfZy6TtnMW1N0I
z3nj$41oC`oR-os%_Sys-9?s;FdV(tBS^A;@xE>O~%P`czYQUM<^VY5Go2|_T8Hua4
zZ9Hm_M(*A(R!4l^h-`3$?$SR_V{mj)ClKw*-a28kAHQ=g9z`6;f1CGaqeAGVl1c!!
zPaj3I@~ts!0Yh%;@cxS1B4<=FZ1o-7d?g8f&ec)EPFIzRAt#N-w|+=S`U9F8om?un
z&b<A1eQ+cpP<U<9Nrbg}RClShU~11)<JIspiVS1YqO!AxB}uqgCP;n(XT^?q>jN#u
zbYq{yuHBvi>Kw2RR8*5Sw^J|uGI@67TKaw{QZH9MA6Gkvx!pf#cLR`bIml(?WLzNO
zXNm|9F=%O+b=skVH=8t8>IJB;nujcAhYt>1&~*-;J3qevlYSMr)Ec<T0<;1ZLhD2|
zbuTEli%_~U*XYzH)ts<{t9~x<>=8cefu;9wdAPBwLF}?Y6^jT0o`X5<I#}wM^M%B8
zKo81;l)$SW$AhsUCeN5AB4aG(ps_RpJ{Qs*@>W$@5G4u!`HvZh#@$Is-~EzzFaK+#
zk#Y-3P!c$rruP|Vi(|+s&FXS+)iS#s+wQ$~4_j9NPdF;rTauP15gnNE1<>+TUGuzO
z>(CcWjZ{9>cyx^^^hJ!MO12zGNlY4X#E>T@1>k;kOl-Xk>BY<l3=xh;Vj49Xf^G~X
zjHiyw0SeYg9oqScv6SDylM|(Qf$-e~+(dt+$kf2QW`-|gGIp87SdLUD0~*bj=bskP
z*)gc0ZbO<!vN)4fD(lZ`!wMFdsG6<c67}Yxx#Ei$BHt2bM#l`o;z{r5MfYQJNPM_<
zp%r>|3P<;)_$QP)QC3MIf^c=LZG{~_WRxmHe2$G#4rG-^{bo%feJ|DsGniaJB%{pH
zWOYU&N6J2NsY9ECsIT0tdSElnitRHL8B+E^e=V}i2CjgMG4?7m@nLbFL0nyUY;<p3
z(!*&IAa{6sG4Y6{wuwg7ZQV!!*x~3Xu`kTxbO(Md)6~U_Y`vrIj}h=FoIuYBG6yJw
z+8ju<dvi&EYqL1S5`Iw#w&(n{s-VOko<iKV+sF(~H(iNQGV?5P-b%GLbu%N>QmORT
zL`|$20lmd-ciu71=r(kqPMK0p3w4ZK7n~tcVC%jm6*OK5I7f&2<aoeZ3+qoWu2Q{a
zaBs?x5nxzUhWrB0{n&Ez=GW}P;Lg11a2XJmOe3j56!1b)bmO$n;~D@E!Ihth)6D{*
zO{WQw8C8o-Q0bP+{o{hz!V(9H-nApTwKgp;vdO%<h&VJk`K2Ye@Ejk&0ct^k3@oPx
z1u7$P8v#hbuFN(GOTzNjHIRSAx_e*lEumIx_qyQ~Tq;2fbdko+!P4#We|o0oJ8hj-
zR>-Qp@X+GW$F|IXfnLD#Gi_>`$eDcp1#GdHeW?m;j1dEMQN`h=mOciZ?5;KHba$nn
zYSuVLw2g;hCb)Yt%13yY>^x^fZ~f9)Qni!OQv8e6>Oyi4xj7)Sf`ELH#ij&xbv#lX
zRuas4<|Kw}p(fzohYi~xnp}Q9{xaOGq=<c&*fRKROkt2NR)z1UQli`s!nGMx3SZNa
zbm@`-zsR>wEPuYhqlP=<(a|&}n?EjXaumNVZ$!tAG}oFFsZAh+F&>GYkt&*14G}(#
zS%+dt1=w$FcQyIkkiXol013qLV(uStm+22kK-8+GGicO47(^9s9oM(_!~geU@BR6<
zuH-!tgGLrC_|4%UR5AJ@p4qdmuYuNjYyp(y-nT|t@{v2Qb^H^4c?Z%C?qRj&)bh=Q
ztjgUqz@296#sg-+YBBWA8L5K=MpV7;f^?i%aA9s#v>5g>fCoRf6%+?M=Pet}ul{Bt
zy2zF{jD0bO@@kkQ06V)2E<1TcE?<$OIGU(8y+Wf)ZFEJj_M{yv-&BWn5KE~pbDCU=
zSBKQZt1>%ar|pt|Z1=T_mfC1z7KW^*dhzK<=Awe*k?(bI=zH|?0#eIS$V6hcGhvbF
z6gRShm)F}Mqeznh*J-~i)?r0617FeP#J93Nz|6Qa>xN+k_?3zrCE+d)(#(~Bzh6oE
zSt{04L|^08O1uMl!XFWTO}8`|-Hr4?5FdV&4yntp>d6!ESSYC+5ZWkO<9Tl3ue>P=
zMS(%yU<1uDWqmfhc0U}Mg@>sn#hwD@2QN_&geigzU%*Y@9{>V~4(cAmU8!Kk1jv;b
zn4*Rs8q*dpY2OaJtZ;{ZYQ5kV^STXRV)<h6Xu-RY^S@>x8YB_O$1hgZ3jvC(d7Tpu
z?N+gDh)_QLz#TJTY1{VN2y5y@g_GJfm(%<TlaKO~@BoeL;?QgkNMQ-<-~%iKwwrcx
zK1H`H{1!-KdOXt~zJkE@W0$D)aR~6Dy$RtT1T!is#O=@^Vna|jzdJ@iF!9D@HNd+5
z&5PVH2c%XdhU=@=Vk%4Is;vkd(i{|r4i#nvBfuQ1-^j3Q?lLO#aI$1kCrA?WbDFCX
zyj?v^dLB>dbH^J~$C3nM9ct(HpnwKq#3~R?|1BsY3Q$%g{v0~<(i=TTCe(l>dX33`
z)EzOG)Of0OB%-8bx2EHQ)j$>l$Et<Y*<=p}lzZs#4xDi6`r`oE6f9#_=DmKTSmoXw
zyRK*(L{K)HQ5T|QdQY|4sID|a8{>e^d%^D`)hJxPc|&M!dSNuNS!QbY>=y-@lbNOV
z&AW+}o$fbvV<%+>Hsqy96(t=@#(J%n1wd;7HAMUTB=U+zrWF{kA3yk&ZZ_*KIB}I8
zp*CNe{wW-Bp|J~c%=-`vO&?3=qCUo(V)i2<xxthyQIWu-i8dLW@Mo7oPm)?}+0R!{
zxOk^Ms&)LZR+uobBJhpC!>hT6vsm4o^Q841TL(934~^r4i{LhqV?-yG2#ffxr$u14
z3#59#^<7!6p`N;r^F3wek9@WRU4dvc*-4Wi3>{4xziD-nEE=645N>bqM`-{S^Hbq#
zV^xAC12Bz;2Y4IXxVJ$36emGw8aoDpg>*#+cc|{9YJLooQ(4kFAo@R34Kw$zcwx)$
z=9tAMckm@FbSwd%mC=xTokDua%*6Or#eOds+Dn<f#BCg7Z0xgk1u8OWDE+iz@CKFC
zJ|OTrQ*Y7-=2$ukyz?Ms`Ot=kVq~0}=)|5){vk#fE7U;PB8N@+DjWjWCl)+g3{-`}
z@RnxbWIF|iq~@9#Hq{ML1r(zoKiy;vdTe#ZOUwB=J<=|98HR+!n!8H+AYlc42bQ1r
zEYNva1`?!d-X!Mk<tM(q?Z)&_3SCn7p4P%z3&tkO(xoBphEhpD*~x%+7$~MajD?RL
zME!G^i3I&^AM}lDBEtskAukfE0EJZZz@N^(=uHrENOs`)gUt~Roye^GB=C3NUD4St
zq4~U6;r0mDN92xf*s&-3Rx*)v6d2-q)^x&=ZR>(LbCNH+k-7Q|q-`!*Gmoi`r3b%Z
zm7+I31qaobWB{KW>rX??R{$7$Zdh|atyA+uR1sLZP;sQrP=Rw9@4Ri`5$Ob-$EXHu
zGcVkZ1QB9q7yd8tov}>@hk=|!1@SzV^opzQg7Wpmy>(l(ji6H?kcE62TTnWm&=7r<
zhy`EV(<xGDwp#Dy1gZPKv&t+CGbS}<l&=z*4;U%$qcjg6%cWqgC+n235b)l!HhWmi
zoasIuccLt?DW;s)Z1x&km<W=?1CM%FvBKx<Op|-T_$n3j{Qdk5G0r$cdikc}FH*(s
z%d*t!VFfF9<|G1V%!kU13ve|SZMQlA^`akmFc>oye4H@ZzaenPmo7!sB+Q(m@nX}#
z!qD@aO>LK`%ASNkB)eJZpSpl11;+_LyiI7MD49dM3dh~V!259Wfi^qx#e}k{S5q8h
zxZ$?KP7ERFkC7&3QapY?=r~uIc1_Q}h9UKyyy9b9d4yOOQ{MVZvQQ-nCiL+9NED;I
z75-2b$28wOwu1(;En;|1=vUF2;8}ECX#L2wK|6I`s>qD=j3x~rPX-A|_g_uZM(>Ob
zxM~M#SY7bLgEsmbnUX99g_xJ&SKVgO(J4cLfx39z+<YA=yHOla2<|k;fV)8Sf)YqG
z+HMs#up=IskI3_r;So&6<wpbrl&%!MMS#+jyk!YJ>WDjFN6u(_UShlqgN2r9<IVZ3
zG^Mf^<p~lE{-cF#FYl*i>>c`?W+K+wte@k9yQT^vTPkON<<`|(B(f4go<-|!dd{oY
z(V}3IH(FxTt9uQ0pqhHP6s}n1#Wm->dil+ZA)2v+>oSbmywSV?J59q!KBPuQFJ}c3
zqgr^*axS6O#<R3cRz-Njh~1uUMv&xQE_ZB{P43RH(FuX-bPXzD>I8Gu-xmP2nJ^lz
zBS`CQ4oJz*p5aM~6)3Kf;7@tD5X%xP269l%cO7s|a-8oMbL!Zv9st{#CUBr<btzg$
zwDS6xi=-Hnfd%qX1$5+eP;pGy-ACb2Ac2)5P7GVN`Uo@hD!eupCXw7b3<SByAr_CK
zX73Nra;brwseDOq^(?gR78KFBx(u3vtjEslDoWJNUlzfG8vK!eT?elriveBNz)S!6
zW|dRhm_Y=sAYup4LNJG1flEAth`#8BWXw)P&2M!&;Q6E-?!I6fi+~u;6%zxtI4043
zL3>fn?4hfE#ysjg2=xg}MJo5R1FvCJ?oUS3R3pqfjki$OArNb3e7?l+fe|r_k?ty(
ztS7z8I-@uS9adwJhcG;4s>A&EzPaw2%Tq0^Mwh3%PO4)qKKd+}V@i1udw7Zf=}D6~
zqdO$o<TR2A)^_pQ=bG!Y=HuHsFvke_ohZyEOt$ky3PeOA#OWYW0+BB2hB9+;#Cilt
z**;`#T0TrNpSgn>WU^&W!$ByuezJj2c@ZT|T2$0*p6A~b$x05M9v-$2qjNXBfHReN
zss4f^6M*cASjD=l(Oojy-bN{b_xIH!Rb+AW?r>5lsPAyRQQm!z7Rp{<p5A>+?;jpR
zbF2x#j#zllpIVmC`iVl`n4ZU|1KXzoEQh)yLIVhUTc;gKu+JT%=t#-Jji56cTji{F
z(T*N_O_-j!?AF*F<UXGK=V}O_Ncb+rqegg*#1{E9aR=*XURR}Lf_lZXBm**@hGRwH
ztxdaB#kkyo7==&8yjQS?{Sm_Mhh!A$8lzSHNr-+T?LUg5x`}NFfv6AQ`J8H72z%X3
zAYJ8`rNN@YJCm(F6EHX>hVcB8XND!q?L96+VwT2H6kn+}?pY$IPh&VhFR@~mKEE$o
zP7xWrb?!Z?&KjsdVY6YSDTbhab@(1?cOqejKRm(m?sehUm>$+{{>ZCWdL~oxP3>ik
zCHcHDU6fk%Q<)O!D_)DCz1RFL<l7O}_hLksql~D%r>1ijepV57%su2_{knL;w;Ue3
zzQcue#E3f+l{&gKt?e)+F%Dp(LHnxag6!^<8nnYrP1+w2zmBEQ4Ry=h05O!zUb@^G
ziy9KWmBo9@L+=f+y1cGm$Jpq7pRSQQXTrJmo_}8qzb`Dcsv{P~xbrOW3kQZj3j$ff
z8C(gv$f*=x*U0T@bTm?V3@1F=J07p|-45*QS`3k8<_wMXv;*71`#UP_3HI^~kmq&F
zrB>?&H|VK$2$URW;N}e(iyKbVo=&$Zi|O{*lajaus+>je|B$KaDBy#EyRrq91PXh{
z+7HhfFO$0?q)pAcahqF%5J@1a)uDy-I!r<!k!`4-5m6fB8kum76GS6&F)~kyA9fH`
z#8S?OjzL)EC)8!&45)}~>V;Z4M&FlmZd9Qm2@13tqsR&rr+mN+bA#ACXDTw*jz%R?
zjBnu+`A?1CZk$s_@W89O3}={WweSFi0~AW(LNwk;1G~rO(=J--_LT<Vwds}uNYEL1
z4^{a!e79*-d;rz7CD~3tLCo$)Cu0}`do)$iM<lzvp7AIB_w>fdV!YUy*8keu|2jw;
z)rC7pg)ZDZO{86rCf#Qnl;O>|g3;vO<vUQ+J@`4<F;ijn%YAg!oE<9x>QzWjievpk
z5xVmJFI_vi;TAx0;xq69WYrCRklJ4xNLg?3IoB*&z$7({M!|SV8QrYq1yhAE`R+F)
zCsAFIkP~I%Raz09==SI}-*jiH=yC_SmateNc(R^<FSJ16Vyy8m^B#l@%B!=~Kwy2&
z-;CENpJalKnPNn*n$E~%<2truMLFu_y((bG<q3$4+q(sVnl%DFM)`yGP$1!uYo-v8
zAYfN$w>Cir<^8N;X*y%ZKR#l5Jl1Wprl>Z7ek<Z#fHbQCfM_0=#}bMePBkh^*(lG^
znly0T<kmvU$u2HRp_Qi-ALp!$QEJV!mnA<95dGo}dD*w?NS!mh2ool#-&dlt$_I|R
z>rmNd0BT=<mjN>gpU|L-7HG!eE~<77ajDh`jT?SaGcfQv*l^dgS(v>99dXoI(2yff
z#LD&XQ~{wa05)C`-q4tsz$%Y{(;Y7Er|@lLJ6iH>Qqp-timby{0VzNepB=h4lo(|)
zq&$Pj#4-jDSz}|%NM&JaG=>5Wz;JdJ%mjzaoSSY<X#o`c?`uP|uvph{1Fl1PPm#I}
zn{y`&J*Q^G7(bvF9#E)Pj!dAI-ICF#+<2zH0qR{lywU5kyKaXkVU6S!)VHhnSCc|6
ze`Jw0TUO(Ch`?ka-^Atot2Nwg->NNd^f@Cia$H40_$6D=>Bu#Nipl7LnZIKw2v6Z=
zrfOES1gS(%4orUS9BXKi^{y;)JLv`%ZpkpzPQVj5ZT1-e+VwoWCSis62;ePNTFzP|
z(iideQFGLJ_&^&{eaZS5(bXAmIgP}tw`XEsAhBE2rdv~Nhfrfy%UkO(WUh)1+!e=L
z-_yoT;G@^fToQ{7NK`V)-hCJME6C+My*RymFG=$I<7JMebYbt!{Tca&Tf0cX4!%J<
zaLF)&X6GOETGoHlTq_ag^3Zz$ahW*Aw_w<K_XOXR$gHcIJudB-Suxo*d^ma~L6Yr^
zg_vU_Jwgn!!Gqn7{?sQ`SCo~j4;-2twS<dza}AYoihGdF`G^g;j5TQY!S<d+!Uf=Q
zH+&s)U#)bNrqYjV=#BA+xXs{4k^LTA?ALaUUe0fntzV697R0FQ_b*nB)m>P#;hNDy
zUEP256<QIUUDKOKFHYxjtq6BoDfPx{15w_1--R6mIx8S>RjUqv<2brhi*qrI!pgk9
zW`|0?ARJ#<6CfvRrh?f5%%7Lz+ZgVy1|yB!-FbNcjP78NicRXSP#?w_F~9zBkTM5*
zvezAiBcLfxLjy^%Px$0|LHKfd+E2+O<<yBA>_#v#Oe03@n_bzu*+JNQ=W9^~jeS%R
za2(C26SZFjUeZVnSh|b^6d@(l$KWc2a!SXEFP;q^TcBvx@EkfYAJIDHJBj=eJ-c4=
z;%F5l-~ej+^lF+j@F@(eJ=FN0{*>r_!i-F5WDbx+A{GXeYiDzu0EJf#1fFlCU894l
z+BXWgKM0He;IqQ7KXXkf<DLk40zyH%|7jZIM~od`-|bla^l?Z4Ue`6Hn!qyCO3Ux8
z+UJYCJCtT4rx-liyEeG<u#L&h?(77>9P*}=OR|SmEF;jQE1tDC=<lDCWl$Gid)d6w
zyPJ%S`E+ekSDAbVJEL==+)l0t09ZTGY#G{>4gRD4&vc()cem{gt^@b0V^bnzAgs(D
zl~a_58N`PTX3aN40f=j(uVRocBm%hQY8CQ#=?Y#pW)=e#Edv?uN4OXG6Y)5x^d#!|
z6bUr%C)yWMKZP?iRz2I8=rr?iu)|%za{GoTgT%p;@}FzF8l9#W(0Cy`I}l?-iA5bM
zGEKXaOqR9ZNyJg?M<X#m5!&ZXW$&8Cqv6wlwxNw1%f;94dOc2||CcfzIN45Ap>UBr
zfV8{^EHdsxpbuoEZ~<(sZt{(u0{fH(*s0)UDT}Seg@RfZPrPOpVaF&Xo4W-UA%M2?
z<E;EH;Hdj5a4BLoaw+=|#isf9o#$-Nb)JB;2fPFGsEiH#f8F3hJ@G)Ty8bW2&@D;{
zJxJNi=^?hrfDz7cl?;iq$K6hO=cA)YbZhDyP5<Ls5`oHSx4qpG`N4}Ox0m}$ha%+X
zft?U(qgKWbjO$dmAhIFZeO3f1hVzc{fMBybcSDH1WUHivwOH!S^J6CI_sU%!*guF4
zPJv?cUAX{|$v!!U&a%C|j`>LnR>n{8tfJ!h9KQ9bVrXy{G-!){h}b_$YT3N02Xv0z
zbU^ESvQzO|6bv9#gIh<a;tteBG~R_GlG(z&IG3A3tLjN=IL7s~w6<cfOAerO*YV<J
zjj3cG)Ds&lCE=83+KZw;LS9>1FLs_8YWJfq^El_Zo=}?#8KlLWE>S8~QykoOgIbzV
zzVmJ3$9IQ#2f2TXeE3g|p7h*mOBIk~e1zlhMOYbonOXky+MY!+7@Gak#AF-8%_dU)
zzPzna$TX$2!HnewH<;$b9DF76TLw-Uvw8|l%T#;+WH{qEJ`Ng3<lGmEJ93^W`qQ!*
z5i)ktxK^I(IyS|XW*yAwhdhkS$W;ToHezGNmiAGm-+ah|{ldg#Vb)Xiw?iQjB&!-~
zs%Xp5V9j_Q)BOAkF{k5(Ccj-OGaGA}_Qo)K=%z8ra4W>X^|G`1VfVwyH~ko0kiN4B
zLhc9@wW~;Tk)HGlJTJpYk7;@w&$aCLSs~`CU2wcts}Qqubt#WMen#ZoME?su+C`O>
z0ZhIt)j%i3hXr0u-%^JB;E&65UzE6m8vXdZ-vV<$t3+P=-M20l*}eAVkv_BF_$k|7
zR?;rCO#<$fD2Qb{RO6%xrVB!0jxlxW^2I5M004?L@F3GA0bC;_HiuQd&x}c7X66pk
l(-u2RyHabytt|in!{h<X#t3664?4E#-y8w}0000ASz35A1$Y1e

literal 0
HcmV?d00001

diff --git a/test/docker/ubuntu/Dockerfile b/test/docker/ubuntu/Dockerfile
index 992f1b2d..a559fbcc 100644
--- a/test/docker/ubuntu/Dockerfile
+++ b/test/docker/ubuntu/Dockerfile
@@ -3,6 +3,8 @@ FROM ubuntu:latest
 # install requirements
 RUN apt-get update && apt-get install -y \
     cmake \
+    expect \
+    faketime \
     g++
 
 # copy agent directory
@@ -16,3 +18,7 @@ RUN /bin/bash -c 'cd home/agent/build ; \
 RUN /bin/bash -c 'cd home/agent/build ; \
                   make'
 
+# create, login as and delete users
+COPY create_users.sh home/create_users.sh
+RUN /bin/bash -c "cd home ; \
+                  faketime 'yesterday' ./create_users.sh"
diff --git a/test/test.sh b/test/test.sh
index fe40c702..2394c71c 100755
--- a/test/test.sh
+++ b/test/test.sh
@@ -8,12 +8,14 @@ command -v docker >/dev/null 2>&1 || { echo >&2 "It seems docker is not installe
 # -c - rsync agent directory into image directory
 # -b - build only specified image / all images if no argument is provided
 # -r - run only specified image / all images if no argument is provided
-# -q - redirect stdout of rsync and docker build to log.txt file
+# -q - redirect stdout of rsync and docker build to specified file / log.txt if
+#      no argument is provided
 
 EXECUTE_ALL=true
-RSYNC_AGENT=false
+RSYNC=false
 BUILD_DOCKER_IMAGES=false
 RUN=false
+QUIET_MODE=false
 
 # current tested images
 declare -A IMAGES_LIST=([ubuntu]=1 [debian]=1 [opensuse]=1)
@@ -22,7 +24,7 @@ while (($#))
 do
     case "$1" in
         -c)
-            RSYNC_AGENT=true
+            RSYNC=true
             EXECUTE_ALL=false
             shift 1
             ;;
@@ -65,11 +67,18 @@ do
 
         -q)
             QUIET_MODE=true
-            shift 1
+            if [[ "$2" = -* ]] || [[ "$2" = "" ]]
+            then
+                # no arguments
+                shift 1
+            else
+                LOG_FILE_NAME=$2
+                shift 2
+            fi
             ;;
 
-		\?)
-			echo "Invalid option: $2" >&2
+        \?)
+            echo "Invalid option: $2" >&2
             shift
             ;;
     esac
@@ -80,7 +89,7 @@ done
 if ($EXECUTE_ALL)
 then
 
-    RSYNC_AGENT=true
+    RSYNC=true
     BUILD_DOCKER_IMAGES=true
     RUN=true
 
@@ -92,11 +101,16 @@ then
     # save stdout
     exec 5<&1
     # redirect
-    exec 1> log.txt
+    if [ -z "${LOG_FILE_NAME}" ]
+    then
+        exec 1> log.txt
+    else
+        exec 1> "${LOG_FILE_NAME}"
+    fi
 fi
 
 # rsync
-if ($RSYNC_AGENT)
+if ($RSYNC)
 then
     printf "**********\n*  COPY  *\n**********\n\n"
 
@@ -104,6 +118,9 @@ then
     do
         printf "Copying to docker/%s/agent\n" "$i"
         rsync -au ../* docker/"$i"/agent --delete --exclude test --exclude build/*
+        printf "Copying to docker/%s/create_users.sh\n\n" "$i"
+        rsync -u create_users.sh docker/"$i"/create_users.sh
+
     done
 
     printf "\n"
-- 
GitLab