From 16befea1b1b64db4fb49b05512ccc20d7edfc656 Mon Sep 17 00:00:00 2001 From: olerom Date: Mon, 13 Nov 2017 19:15:54 +0300 Subject: [PATCH 1/3] Add third homework --- README.md | 27 --- answers.txt | 3 - build.gradle | 27 +++ .../main/olerom/namecount/NameCount.class | Bin 0 -> 2036 bytes .../olerom/namecount/NameCountMapper.class | Bin 0 -> 3479 bytes .../olerom/namecount/NameCountReducer.class | Bin 0 -> 3045 bytes .../classes/main/olerom/namecount/Test.class | Bin 0 -> 1297 bytes .../sortedwordcount/SortedWordCount.class | Bin 0 -> 3392 bytes .../SortedWordCountMapper.class | Bin 0 -> 2568 bytes .../SortedWordCountReducer.class | Bin 0 -> 2098 bytes .../olerom/stopwordcount/StopWordCount.class | Bin 0 -> 3181 bytes .../StopWordCountMapper$MATCH_COUNTER.class | Bin 0 -> 1248 bytes .../stopwordcount/StopWordCountMapper.class | Bin 0 -> 3671 bytes .../main/olerom/wordcount/WordCount.class | Bin 0 -> 2036 bytes .../olerom/wordcount/WordCountMapper.class | Bin 0 -> 2385 bytes .../olerom/wordcount/WordCountReducer.class | Bin 0 -> 2259 bytes build/tmp/fatJar/MANIFEST.MF | 5 + build/tmp/jar/MANIFEST.MF | 2 + config.png | Bin 138328 -> 0 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++++++++++ gradlew.bat | 84 +++++++++ pom.xml | 47 ----- settings.gradle | 3 + src/main/java/olerom/namecount/NameCount.java | 42 +++++ .../olerom/namecount/NameCountMapper.java | 55 ++++++ .../olerom/namecount/NameCountReducer.java | 35 ++++ .../sortedwordcount/SortedWordCount.java | 71 ++++++++ .../SortedWordCountMapper.java | 44 +++++ .../SortedWordCountReducer.java | 29 +++ .../olerom/stopwordcount/StopWordCount.java | 65 +++++++ .../stopwordcount/StopWordCountMapper.java | 60 ++++++ src/main/java/olerom/wordcount/WordCount.java | 36 ++++ .../olerom/wordcount/WordCountMapper.java | 27 +++ .../olerom/wordcount/WordCountReducer.java | 23 +++ src/main/java/pritykovskaya/WordCount.java | 80 -------- 37 files changed, 786 insertions(+), 157 deletions(-) delete mode 100644 README.md delete mode 100644 answers.txt create mode 100644 build.gradle create mode 100644 build/classes/main/olerom/namecount/NameCount.class create mode 100644 build/classes/main/olerom/namecount/NameCountMapper.class create mode 100644 build/classes/main/olerom/namecount/NameCountReducer.class create mode 100644 build/classes/main/olerom/namecount/Test.class create mode 100644 build/classes/main/olerom/sortedwordcount/SortedWordCount.class create mode 100644 build/classes/main/olerom/sortedwordcount/SortedWordCountMapper.class create mode 100644 build/classes/main/olerom/sortedwordcount/SortedWordCountReducer.class create mode 100644 build/classes/main/olerom/stopwordcount/StopWordCount.class create mode 100644 build/classes/main/olerom/stopwordcount/StopWordCountMapper$MATCH_COUNTER.class create mode 100644 build/classes/main/olerom/stopwordcount/StopWordCountMapper.class create mode 100644 build/classes/main/olerom/wordcount/WordCount.class create mode 100644 build/classes/main/olerom/wordcount/WordCountMapper.class create mode 100644 build/classes/main/olerom/wordcount/WordCountReducer.class create mode 100644 build/tmp/fatJar/MANIFEST.MF create mode 100644 build/tmp/jar/MANIFEST.MF delete mode 100644 config.png create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat delete mode 100644 pom.xml create mode 100644 settings.gradle create mode 100644 src/main/java/olerom/namecount/NameCount.java create mode 100644 src/main/java/olerom/namecount/NameCountMapper.java create mode 100644 src/main/java/olerom/namecount/NameCountReducer.java create mode 100644 src/main/java/olerom/sortedwordcount/SortedWordCount.java create mode 100644 src/main/java/olerom/sortedwordcount/SortedWordCountMapper.java create mode 100644 src/main/java/olerom/sortedwordcount/SortedWordCountReducer.java create mode 100644 src/main/java/olerom/stopwordcount/StopWordCount.java create mode 100644 src/main/java/olerom/stopwordcount/StopWordCountMapper.java create mode 100644 src/main/java/olerom/wordcount/WordCount.java create mode 100644 src/main/java/olerom/wordcount/WordCountMapper.java create mode 100644 src/main/java/olerom/wordcount/WordCountReducer.java delete mode 100644 src/main/java/pritykovskaya/WordCount.java diff --git a/README.md b/README.md deleted file mode 100644 index 997652b..0000000 --- a/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# 2017-big-data -Репозиторий для практических домашних заданий 2017 года курса "Введение в машинное обучение для java-разработчиков" в [Технополис](https://polis.mail.ru). - -### Fork -[Форкните проект](https://help.github.com/articles/fork-a-repo/), склонируйте и добавьте `upstream`: -``` -$ git clone git@github.com:/2017-big-data.git -Cloning into '2017-big-data'... -remote: Counting objects: 3, done. -remote: Compressing objects: 100% (2/2), done. -remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0 -Receiving objects: 100% (3/3), 10.1 KiB | 4.5 MiB/s, done. -Resolving deltas: 100% (2/2), done. -$ git remote add upstream git@github.com:polis-mail-ru/2017-big-data.git -$ git fetch upstream -From github.com:polis-mail-ru/2017-big-data - * [new branch] master -> upstream/master -``` - -### Develop -Откройте в IDE -- [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/) -через File->Open, выбрав pom.xml - -Пример конфигурация для запуска таски из idea можно посмотреть в файле config.png - -В своём Java package `` выполните все задания. - diff --git a/answers.txt b/answers.txt deleted file mode 100644 index 00fa802..0000000 --- a/answers.txt +++ /dev/null @@ -1,3 +0,0 @@ -2. is 126420 -3. 41.602 -4. french 5742 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..84a2b39 --- /dev/null +++ b/build.gradle @@ -0,0 +1,27 @@ +group 'com.olerom' +version '1.0-SNAPSHOT' + +apply plugin: 'java' + +sourceCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + compile 'org.apache.hadoop:hadoop-mapreduce:2.7.0' + compile 'org.apache.hadoop:hadoop-core:0.20.2' + testCompile group: 'junit', name: 'junit', version: '4.12' +} + +task fatJar(type: Jar) { + manifest { + attributes 'Implementation-Title': 'Gradle Jar File Example', + 'Implementation-Version': version, + 'Main-Class': 'olerom.namecount.NameCount' + } + baseName = project.name + '-fat-jar' + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + with jar +} \ No newline at end of file diff --git a/build/classes/main/olerom/namecount/NameCount.class b/build/classes/main/olerom/namecount/NameCount.class new file mode 100644 index 0000000000000000000000000000000000000000..abdced9ae4f6071ad7e2342c938ca605f7a9cc36 GIT binary patch literal 2036 zcma)7?Q+{h6g?X|QL3s=;(X9FDNXpQ?HUVOXaI+{)NLTC^Fb0^k^*IIZ)~NqWMm1_ zN8t(h!yo=Q88X8I@CZB$!*H+U*kSBU8O><#ULEZ{=j!b0&wqaZ1HcFPLC1A0Y4}LT zEIuB^Cpw0Z*RhOGIl8CezK&5m&~X``X?V!Vf`&&tKGv|p}vQ*LrGv{*>WuZorfIz3R+Ye5(Q?#A&?qZ!SC(zc zB#UlE+9l~(Jntmqe%)#b%okl-d2YjWWJ6Wl!12uuiV7U%X=N{P1ZGmtiih$?Y1-1M znLEB`IkkLxRX}TnF|9K>070)Gx@CdIqU+U6*_4&KGV8MHx=phoo1Ur$6=kluWh!)K z$Cs5C>#`ZrqoxYzkB=&<>07ST((sh@HKcVR8P+eo8ZjAFN0uM8LJ&oL#|^xSTCunj ziLSOB>oITx3j#M@LC?U~*b}%Gbt>2GRIa-kFSM`WnSpQct%2|GTwu0;)q|F~CH*?1 zzc(O3z4@>o)oYDyl}*cO2EMtgj{H@QR$Q+keFGIPv2gLXqfR!JXQ0Zs#fx#<;YT2# z!gB)$Olj#=l-$5S$*1CxM%aO`^e@sMUHX~1X8K= z05kumh-Al-qw}f%ha9l8$jswCBAewyRq@H#%)*u}-fcvq2MCkAhg!;ClitIZ9n@5+ z55(uh^!fDJW~RI$tJTnB>`{UHgZTHn$=h~-z>dZ9TxgQ`oHK2QRf4jSJ3EOnN_1@4 z$*_>fSrL_~?mTi@2R6}7KT&6zxn}fgN!o!rL;fT!-Z}-h(Xnw`nG5AKWAqzx)@5X*r;JilMzs8?j{k7{lvX z3P;+|vZol`yA`{Aj7ulbv&qYC7}?~NHWJz7SR3Qf^LX@pBAZOMF_}$HwK1Jd&b0Ab zHr~e7pP|KmK|KB|)rp1Na`ck}rjfu5T~~?MEHaqGdzi;vlK6<^t&zYj;#eXDtYIPI z+0j6ZkwTiZBnXkgEz*-E6#WGMMp?tV4+L^Fj}yYgC0hCYj^cG1hv><~DQ5SMaV>L# tx#hVN%=cQC2ut0hwxuvmMY#M-^b&5pSUxbcldNPE&{{kzd5qSUr literal 0 HcmV?d00001 diff --git a/build/classes/main/olerom/namecount/NameCountMapper.class b/build/classes/main/olerom/namecount/NameCountMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..3e48640bafbc4fd3d5e7b81b817394eeac351ca7 GIT binary patch literal 3479 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 literal 0 HcmV?d00001 diff --git a/build/classes/main/olerom/namecount/Test.class b/build/classes/main/olerom/namecount/Test.class new file mode 100644 index 0000000000000000000000000000000000000000..94ec17b0201b512adba24b079f155cb01426cc53 GIT binary patch literal 1297 zcmZuw$#T;`5Pgc|D0UPu4gm~d-|QHp0AWcSmS8r6vw#DKP#h*=a0IqwF)XY>-!G?Gg!@F2Z|$@%AkZZ+LX09n}&<&49?+v z1{W|hf{Phk!ewo)WH5_48x za`n&?ttTS#^?DPu)P~2y@yUp?&1% z6Mj$mEjN-)`PN-YToh=xh4M(-E^0AxF>0)#g!gJubmDW{$lJJTgGI|U!d~RbJH9Sa zS|9qXKBt47$npRzOY_EyWK_!xuzWL7V1cj9K03xhH@ zl@AiB=fc)_EubM^_hjJ7${_3CU<@ePbp0JH4k9ns8k;!Ai>jX?@OmLjyNfHAUxVM& z)K?gvV|R{rI0nZs&VMHfz-~-%mBt?IB|k}+S*c$$Z5&q@U-;kNJ@>aQz(YX{I`BWbcJz9ndE#nlo1J#<`E=^>d zBBm%~h9WAIQN=#aXg-#CEs;VbAM@+jj|0@0=A=*JAkRIHc^o2UlDiv+aRe4K=m9^5 l6poYS!u-vJW#fd6lLlYVoT~EuP4`xOh?p+jY2rgD`~iNkBLe^c literal 0 HcmV?d00001 diff --git a/build/classes/main/olerom/sortedwordcount/SortedWordCount.class b/build/classes/main/olerom/sortedwordcount/SortedWordCount.class new file mode 100644 index 0000000000000000000000000000000000000000..b8a8321e1a431ffc794954ebe7079894fe092507 GIT binary patch literal 3392 zcma)9*Kxo_o)^=R5bilfQ0W`xC%=T$iy0 zeG=}Iu>t*l9F0f?1KfL1!b39rI4)xrbO{5j3`>ZxG$ahN9Fn18Sc1ue6B16c zj7o^Hj7zX2BxEeW!+zK-liWnPp-G1&?UZ6UB;gdx(-KBlo~ghicvQk;G6Lx1=5asH zvV20ulX%LHr)4~YbACK4<2gLf4qxErMQ+YZc!`fi3tz@7GHvy$gx4gzE>PZP#!Y9t zKxv?{SHRb9MGS#CU1r=kn2HS;_7Qy`N*cAx3hU8c-8OlgQTm)=Gbs@0vZ97<#k8bl zJ4WQRWk2V*8+j-ndUhGs{pf+%<>x6zv*P?oSNb7NIGd|SX*dZV#(|y`= zZUGAc|Db6nola{&prOmMhcrE*hldSqSdUm%LW}7M+lZvXhDIjjZFbTKTk!}D+O7DY zz_OxicmdncqKfPy+MvhL!zT~uiS&V~I0!=ldGAQrNI0eyPfB=$k`~j=qNn1d>h=&F z$#0C9j+b9SXO(-blpQwqnVjC5TT-=})1#mjZ30WCIjDj+@fPj3#~9R8QD zqu?WUu{2W#xdO;SPbo|owt|n@uA#Wy;WT_?_z5m3_>@E1G+jtm%9)7iP`W!2)MrJ` zZCdFADEQoqIF5<6&S{Lk#6^MN%&v}? zKY`H9%rj}Et6400`4C>>_!@6(KQ+By;ev#(6?}tl1?Jy+pLeIsXoMmE4&MvR(h|Du zgx2s+!Daj);YS5OaRz34Q?@rL;b#R`aFw_~vyCLxvxHx`5`N_j{-(f1n}Sh{39Ou1 zE+qV}U^lKQ7{?!6e0gvaM+|Cw`^}*g@rOWtzD>$8quLS6iV`*Dj+!L`3U|n$%grnk z2s9SpnJG?mCJ*A8R-(?^hvQimU`yhas$3w422L1Zhd73#i0VmZPzobwkXCw>=ydA# z?lT#ynn0crzXS6ot0xGW^okydq%S@bhro_P@#hGGS-8LfGrZHvj^-wf$xM=os*v z!O@GDUE^&(CHp;Rl8zCh*Ud^12J^g(5{Y!v!{$)-3_V7vFJ}&nQ+b67C3g}GUcNII zh!*-C%Tv)iF$L5NFcT#?)gzT;g8fJ7X(~|U+b}HKrYTI z?0zz<2<)7JzvYyeUNFymomNkt+ zT%k@0wo_Z4R@Pz%^%c(mJF$yKf(WmjtZ1?L2NftIsg9$hzsW_Z>KjGbfgp9uT}Z)k z`1_knTSiea205tCa-js(*)A%B>KqqU-n`G7uMVoJi@8Cy#>Kp#TI*u|I2QD)b)#5# zFr?PISQKLI9U-<@98#CKSQ=6rTr3Nz%U!Gpsdu_qc@?Y15$GR9W3#WtMU&c0jfi+Ze}aT69}4VGXd0ka3o(23>frkP%>#Br>`Aes?H5H?n0 zgdjSLwK#_soTon%mk7$gY30Azj2i^#e`pmY^erc0o2bNgQAId0YU@2@GN=(oR4v;LN znd)(Dpmc9+8pEcx`Y~+I6;UN^4RWiH<0^8>VbywzaF}#lT4m_L5!yWGMBrYUDM9c5 DjlH$Z literal 0 HcmV?d00001 diff --git a/build/classes/main/olerom/sortedwordcount/SortedWordCountMapper.class b/build/classes/main/olerom/sortedwordcount/SortedWordCountMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..a6ec4cdaf7140275ecac4cdf943463b9b71db77e GIT binary patch literal 2568 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 T?jrt?YsAj|wRC9*b&0zlCCv)Ru#?nXe z3H;+9{{&W9%Lnigd={6>b7n$n1j^Y2X_JTLKs69nT5w2_!OEnkE-?SqTgj98WzBt3~B+%A!k| zbU~M-yCr>x=gnj?*mvpzR|?uyzOLFYwO=mj&zZAaHD8s(lCqa|kqY&1 z1hVvEMb;vE)KmfU@nK2T0!Mpw1KXspDxGu5uzu-Rh)JJ1bb`1Qf+(6BI`m6w(cw;{ zTH0n=kA-WP61esTdKSLLj=)6Rso7SiW?QTALc0c@S@;g$TlfLb1;#s9-K*PcGT3MI zj}|1THy?MR+O2V&qV0IKFt9h(VX(x}qV}sYuu$R>Q|JFX>SRs%7Rrp9J|DLp{R9Fk zJh!mNl;++{`x1%Eg7WQM-9d01Nk{4|IPQVVe;4qm3yl6GOn>`J< z7T!hGfM-FY#yUGzE@^MiUZ96l3CVB*lbx6_a9n#+YnN=?wt35aWb=w5M|pb!nM}5e zng3HnvSZ27`ON=AcG+2E=D{|R)#8CF1!Qby;mSJiHloo6L`mL5brmd2|KY19Y9!ME z;&Wp3Z2ELFQ{Iy0a^x}gsKEVh{M+8-ZQDg))8ct9G)#QXn6}9(McLS$&BOpDnl@}^ zSV-)wn94|N9y_fG8)~JWs8h{cGyZf-x}iEnzLXAcodsR3xr%=f9T%D1>~2@jwEVCh zdYAZ0B+(PnhDwm?-7bW{tLad98f+%&(2H(iFEP^y(>8i zFEn7}PSCe=D{=b>7ms1)(w7>ra_RmCQn~a%1B3DVWc+?8mrge@oJ)^1Fq%t`HSkt0 z*}&yrU?hG;GWi?TNkrUc>5>BmkisCw=uW$dVa#9@AJFVBF5?l2UB(2~Fo`Xa%^Id+ zo=pwJ7#UxJWC1*i^hiV-LLGqP5hiAi uF*!eZj4SQdrJ_>P)VAwH@J3XAEdB_$sVFzJ7kB7ZKU;*3XL{3vyZ-`z6cR`P literal 0 HcmV?d00001 diff --git a/build/classes/main/olerom/wordcount/WordCountMapper.class b/build/classes/main/olerom/wordcount/WordCountMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..e0a18513683c2f97136c89070dbfeb9e7d745c4c GIT binary patch literal 2385 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�`uqb@&Tq~zI|KeEf}^el3UMV=&-FAa9Um4zG{lU0zqC&&Jr=D9*&s6Dd+5U zIxy2C*sNpeykj$)53T{}G53RYQ)tJsVji|yDDc-*{LLr^60N z;Sj&Xv`-ld8k92)hTn;G2NbIa`{fxns7?j=kYHOQ>0hX`fQwy3r{_NtT|g6w+;KCx z_BEm7S|`vm8XhYEr~3bJ`Yg$X_l_12H9;Fxht=toM0DG${ndAg(GDUQ%9m*JBXa znsC4tj^tMN5X2-DE$`R8_=vq@CNXuV&*;FP>FqZQ&#}}fHkb=KOl+k1VdERAGik`p z>=!t;*BL#Lj?8zw+wWuci>n%jo`96YWk?8bkusd?smxbBOT=Brg||1oPL^=7F;Bqm zZo8F@r26kY9#7(%fp=9+s}nmb)702zk8@0usc>0=ik63P*z7iokD*_*j2&@?Z`qO24|t_X}#KFM7pfd zkv(N{?7lXGs+)w8~hmk8&AcWJ^eN#=ZUNyY?n+ z%IhaY>&#IIU-$HXkja>guE#Z)fL+iiP~nHRTORNe&DS&`@}JXrc>N!Twf2pN1`6-Z z4RaH@uG=IKf_ns~%q9;yeV-=5L#rmux*YB#d?ZTNpGHJgKFwAhi=RP|%02TucmtOD z_b=w;JMOGKqY_`cWm*{C_g2fub7-z7fnzGaIp^oE`TSJ!<+D-^Fv?6c3F3vcBRyF8 zdh>fjysw?^Uw7&HBN_F4ZdlmTi_OkvT8KZ9zA9Z^oVI!lyG@42C)1@BUg)W&)xf=H zUUT%L3Ly#YTMxV}P)@QK{8A>^aGsgoC^@+-%J;zsq8 zk4#m^eY^HZkbiRX(|;2~qNo$&Tj&@)&n6<#5%x%P--zNYAi1YYfwyUup?jrwcNo^4 zVCC!J$KIGiQo zcEoc(FKgf1Z~VdnVk|%<$MiOaAte>#^5xF(=4tAY+~#z#@$u@{UXzF%Ji`{%Uc8r& zpTP6P)BRqC=EQI2#6Z^a_agM=tx5V=j3|1}_u`+cLL_cOObii%rI=rr1FcgDKtv;> zuoh{p^o&ba{AmDFzS6d5Ts@In*bkt}!E6;NLXCnHcp%h1ij z&!&nYZ`>-N#@l0d<+bYk@KxyBqB6;bKeCJ6^>jXLWYq6a+NZM9*O#YZB8~hHk2B;= z5!~URC;&<%JTOlf%7X>RN25DsF3i`Y{CfeNc1UV1nuJ4B!?R@a$NrED`0K&c-JNx> z#dqbDFk>(1$mbD%zOi;9-^6S~_;Dm*Mlk{-HM1HZ&tb=ivX~-vjTbzuF>&_c|c z1AWA}vTHuCbB`g%=Y^xEYUD?L%O4k%WG~W zzAt0!cd9jxd*+!=dU`E7Da?V)+6A1@9tCCK%P;()$|*fQJ%GbHHBd-)u~>Pw$gd4El@dIE+T~KT80HXUb3fh>N%2xCUOUUWs=H)kI)p>`TF#8 z5TfeEpChEIDy43)-r!bBrHPRQ}A!FJD!H* zl317x%h;Hig}#XUHEYD|Zp<#0mtGW}Ke87e24266`<>rLaL?CD|H3hO8ABuYn1Go! z*lKeSWN)XgL%BYbrt|rBew!7#KwliwXIQN~XN;3dLDVE^qQ8cuj~@YM0Z77>X1pAU zU_>phdVK10wHMQP$54t#W|~V$mcK(tp0k5_V~mUWVQ8mepKA7H%|s~1OMG=3Ls7)@ z_Wk0CTZF@W@XAwmOZ0_a>qi&;SJn2W+XR=@cPK_;otRWkB4t({l=0au>M<*=BdcDb zw)#4twiVT3md6IJ=#4INn34y-Mdr<>o1?r2l`2&}2^>adfymTyFMas;N5=9{KKBIpuB| zbr4umD6zH|P}_HN-;6ycvo-Va1CC!j2`Gkcje#!em^3Fy zp9E{6)f~#SFP*BS=PeEgcQTXc)h#;g5;|m+Y4frhq98*uqAC}yRnXG|JpEK4ydb;> zFlt_<_D0Z#5&Ox_JTL%RR16!Pk{<+mW3~<)TjMnPgxF(P8Ul?Y`iHMG?Zy z{F`N0ktTOkuI%K3rOf-93 z1jRT|s8?6*1kB|;(FIkrR!9O9ejYhiMC2#gXo^~|oZ%W2II2iMzTo8N6IKpMnA&k4 zYI>6JoARM1)8#>`{3`NhZ*Q_HcM2vp8y=89Vw_*w`<;XoDG&bLIB|evIFUkv*}7^x zH(t8w&Bps`#>X+m5T8B8kQvYpLtyeYg9-1>81`Z%bIomuKT_KdmrB)yOcb$Wjj<20 z;04dLuYe1pbij5)%b<*%*yat~&2ioe{m+l{`QRbT1YI%P05mu>J<9)7?5Lg4&r>s)xxZJmPy%UXEXnaWLM%sbAwdRZ=)8 zH&3xvEYbfKttHGf&rqwrT&m;y$K34-vBFy~`Ut5PZap={-Nwykm|G!;n%`JdDvel4zi($$3qQzYRrRao>YxE1$M7c zZcgP*ScFt)JxYkYJGf2w8>Mf8uHJ~_RlmB1kNIC^uIHH#@cEz2yRePmr`g>eH$Oi^ z1NERh&u&VK{8Dp-dpm2lj=YQBO{mLnpL(6nueu+jVhWLPBZRMCLWX}Trmb?@M~aQj zY;J$Xnj|EUKo=lCT!m(?!|I~iUKMJR&+kE}-5%l19U_32^gM zhFCuWkdTrX$}lJvBiW%0>S~HxI{vU~2KipN--H79G4|G$#P;FH!^xq>*iGJad(#je zef7haQyz86eCs`)=Wz@zy6^|=0gg@WwZn0j*4fhTyK+bjI@6R{F0S2HZS%r|_pyv} zpbu&-hL_}OKWoAl^8^*%?m|^Bo-~*y^XrdH0hjCohf8DUe4*>M8F#0*vaCwHo#l&k ztrGAE!3;9z!yE|Mn>UK4mb^jLQ?I2CA1E=Q5+R2pKnI)Fl?F4GrZS->*&Pzj@L%tW z0xeha*-or)*|{@_0=bGN$n7fLFR&Y6x-3A`9ib^{1I58=?CeHhe$T?PkA@TwzC9pX z9<~J_#3$gyCw=?Me?h^?m(Et`MpUP*e50<5!4OP>dD~$(ePzMAdgTTJck=X2?JGv3 zU#=xti-HgobsPq|i`cu~R}IhxZSc;kpDeR^-SyqJ+$^&*;~(E8v>E5hE%@c$Ip`jV z#x1xWyHR-0ohB)M zwqdr?oCPmz^j?YQ{dg+ra>W3@dX#V14%(L72?5vhr!_J5#J}11!!)O|hjh0hp~97! zy?(jxF*%;c?zFwv{g;W!O?d-%tdcI{ftk!}a{i*Z`eUw~^qL8U(bQZ1Kc#FHXnRsn zY@6Bn>2jTQVI@wp_u+>F9h8!F1(L8Zx1tt!3j=!WQZUNKCifAKQTWA+EO(l|4vO^5 zUm*gaqVGM_#5rvc>LXH_O9K3+;=2N#+Su=pcnI3WyE83{&37Zs4i@{2dY#tXc9nv_ z+LUZ&$8;!PuH266OcpMxAQhf=ozu(A6@Pq<2h8$S@$SZzim?}`SU4#{D6An5_*_LG z@cyT7p>f7k5ZIyQeY3;2eW?jbZ#k0gmo;$C;Y)t5Q9iD*vxIbyu)ogbS3QhvW`s!C z7prD)KQYxitP(akZOZ!iw3M?OBoyC%^aIP)5>LxY#|D&+9Bfp6E2ruqPuXaWx*}p1 z3`;T{HTx(GdxLJkThKPELJ;VRj}hovRj$e}e0zOSdjfu=e{20r%|1Ht6??HY^p#!_ zBY5$MNUHnW3{^A0)M4>K$^=w+<5N{7Jpp<#2|XcaC#F4G6B(;;>>yD!xLedM z0IR$g;zTA?`!T(S)SjkJ=!h*Ws0jZeHb0`NQeZ z_p`qag^gDX9uXE1<8Q0e-5k&_2M#fg9ue^oZ{MhjDlgf|`H(ZmB-4dlm$#ot>GmK;G9tTvv5j38i`sz# zd3miz^V9cj>KikmP@Het{$HnP1ZGW)IZm6fqL9F>rvny$~PU=onHPpDNCA; zAJ}71n2*<2%CXbvV@zk|trhe8(%n|bsU7A0xL@%gFm8OJt_}<+x|WrA32B7fbIhzh zx3(zN6zje@;5xa#r?6*tFP4Q5x%;An10y@}F-AXgkew6t?5YLfu2k(@|L0AtD{(Ub zMo9#wp~lBB4YX>+I{b@J*{cQtov#494KLMv-z424@ACJD(3hPR?E7;NYx9|+6J_N0 zS4+-0VPmXi6zLy1Mu3@wX8SdkM`}%a`p!)4Gyc*fl z)L2AnfDwGQj%o6B;Vrc&Gb?LYLVyNx++q#Ib;JS^z=a$MsleCMV z=2m^CD#vjjFEQT=#oh zU;10+`i{hC)Z#RAv}RY{LJw?t}-b;m9-mU!hy^|sy>5`Wu#f&o@#${1X& zK#%mLa3<7%%-R0b-(!xtvUCq^7bDif{ogfS8sGY8%rpWQtLBB(UKAUP&}4DcLs8n4 zI=(nTPTh7%(BmHCa>E`32WN!2e>Yf|pKsc7-rte)k%)gwv@GgI&D`!<*aLNTrSPgT z9S?{9S@L^NL@5Ho@iwI1Vlv-V5Z!!tb3KtARH`X^S%U_rZoO@H=akdeWa1y& zj;A|&6WS~=T+6&Tpng4t=k2qoSg`=l0pkLHv8$;@+oxx?UBNRR(mkKN`pdq-WSbPqE4B31B9j(eJ{bE3?{qG5C!QO@DFm4}%FK_Ypo89!-@7 ziF6N3zx>%%H(?%c15s$@Vr9fN(Vcbl?}QuWUd(_2&o`@^{)fsG;cop5v~^yFySeY& zZw+1;_QUu&e12j5l-AL1cQDlc4(-X(HP%}tyqt0{eyNQ`md<`Ys?!!Yss$2@#-=N{ zG^K#K3_HVDn6(0qTs|zgv-k_GdN4VSp}81p9|$dCRcu;x_c(0~wOUw(RoajF0JUT zhWdx@4VoGn+b3#}*B9fLRxdDRl}T4zPTO5US=p#Z4)R+ZVyFw*fW{Q8oRpe@k7$EG z+tR^4gE%;JuSC%a+mDi(A?;wb!g?-J(OD#OJrfIqP>qwQ921MHNs+$ps>Z&j@tk}F z*iyHc@why*D!l0xbyuu5tQ_f{o7ID*7IeH;I%+{)ikB7R-eRf%bngCggKBM7ej&VG zWA%`r=B>=X=Vwm(HMc?*MsR1LtG2I1W$uY|iUl*dQc#tgJ zbg3abhN6a5`Dc@e9Q%+UBT`W}YI;oV83mY)c6bJt?N<2H9lYssFD@>mqNNa8Girxx+LX_$gM9Cb+XW>B68a1TFH)9L0LeA!Q zY~(D>VR4+P0xmk}E984q4iqml1_G*9f7E!b{|J9G3bA;)RM+!EJ_WTEc)7l-MY;(tLgAXyVwvw_i za$}Hp7t(RDdtD0cTYi5rUk>erWEAo|2tpMEnGqq@&%^%tQn~{1}M-(e@VSFhq!?u8-N2kwX3jr-y45Ra73*8+X7AOaY$l`otZj|MqOs0-6 zW1LI}AOazgb+XU?zB?_M!+gfrr4#CLqANIBkRUNU^#@Dt{MrxkKHl_q0Q+j1>wk82qJFjv0rq1o1wSD|IV1Y*l z=6t7sR?wEEz`($lTQ3vEN|2i+)YKjGRS{D3woy6uYXb}FU7#&|QMsGQamjkGPxI3v zE#WtAhH_okMf4VfYI!}x>12#RI{p*;ru(P_3cC{_E^+Kk8ga zt^3RJL6N+%Wl94c_9+hA^!6wJpc+*uZr^Mr=&;>5n92>?Vkixs&`Zj9@+{+VMnq($ zE%}PaX-qN7Vhgz73pp9d;GrJtYc}?MMYez1K|zwQ2$9Pc8sfD#d_~1tdii+rD26}yBTgcpJ{}e?R`yoDik(8kHK+yq` zC6b>*7Z&IGa1w*zpQf5jN{Cw{O?hQIcWf?E^IVG#4 z`-v%M^@xjGDTLO#B?#tYuLw)o%;oPacs$?tVeNh-jam%khHpjpDhK>jvAw#>wNIm3 z*&j0Lcs)}pKe{)f!yu1fV6ZY(XLr)EMV=%V3^G2xZPq#c=Ff9ix~zGzJN_Gq8&sxz z^0cK^ZtT;0`!_PQda8dZVRGYiJW<~trN3$QJi&Pyt~ouf5uCD8P6U3ZkgMDKq@4YN zA2UjB3iR@592|KP-ae)7oZEjWPnHwS#jlG>+gg#33Pt@kARPlO7ezju>Q&i#ciMU2zs>96~e_z1gq1daBqXNhS<@&I#`w?$^s zV78K0-Du*qnn$D*U}h9W&;jupYeyt^It!kAp$E0UJW}hB?Dt-cXirXPhrC^a6D_ey2K@HcI| zPe1&)3GpNg8AVZVME zIl<gL54?GKTF$dClG?NcM!u2{ZoXNh77c!T=|^k6bI+L(iz@rJdd zWcmGRj6(zRd~pG%(31A9_P4bfEKkI!0*${y)-xJ|e|WyRtO|QpYtlCroT<6*Jvlp7 zk_%roa`e@C$UjweaQRDd^1@M|F=^ElhWX3knYR--j5{?g?ny;-aG?h*A@TV9k)&np9&mp9^_Iz`8)~ zZ}JLafaq`XGj8C|DCvO%6$ezP$9-sqqBp1WS2}j*jlBRUC9~Ab%!4VNcfxqMv|cyt zs9~b^>GhS>-mDa5i6Q#T51m;~vCnR+y4!J8BctdP{Gi*bvv|D@>*1FHEavy-hX~v@ z3jw1fJjBIhMZo}eVgJDKA{{LH_~#0j$vVZ(f-Lc^ryCl^K;njGx?TvF9zr?CYg$ZW z5*TKFzOS~PrF^CJ(Zc?N?R;}Y16(cIk!e=tyMnY~yKk+?OJ#L}6mU+(iWT9WFfLiL z?E%&1Dx$=r>QxrYGc^|Ow&a!}5)oB7)@MwOKiMh>^rcL`FZ4YEtV!^*-;)Tf?Ap{T z0uSF{t3Ug`-5U)=X$2e_kyNxug~p!mRqrU z6k3W}5QviA1J+AcBdSNi7bhJG;^@yao9xqtRh01l;408$Lt_D>o7EycPRu$=boN9Q`6 zq6y)xjYhTdYqqy7-u?K+ZC&-KX8k1~gjqM!b6SjfT8K--8C$Rz?w4!}`}1|>Ul~lO za)^w;L_Grdi{Rg6O-=!T;E^&PUEcQR;Ux+`@Bv^(nXtdHqWhE40L*NFsNYi3?;7%~ zt%n)sKPyW9d&Z5Q0Q|`BJ&8>K@$3)6CMvua((i0s3faRDYD9i4zlbS_aKZ?`Z z{ok)=YUnm48;o_MgH2&5iy201g30`C=u%Ob+-620&iP6080D zy!vlBvf^=&)xcSBCGo;+yWA)*z;KRTI4x0BW^bl`vuXdYQ2xQR0Bg`7C=dhC|G@+H zB_iGkF#7&WjK5xO0F}-$y1f7hrTq^J%>CA`xk&sGWFoh zJwZ80`*RNj00asMvRnVF|1pH&Z9r_~k?6NzWNaCH33v?P^I33ZNx+Z&mq@=~vnGIb z1^xmkMl@LTJ0XtQBS0byzpkABrJ>>s(Ly|sxN$3wAdfjp8p`+y{^i1){^b-qzn z`x%K~NhXUg*?vEFrfT+Be`=jm?`73h@r+(@>39PBl-zO>n5w@f?_UqYH-P4l4bVF% zk#nLl!#>7cwJ#5o;D;$$UHmfKZNYyb(UGnU@`nPf7vssdQ~|9Gp^#{HOxq@QZ0&*T z-;vcb)*))^#km<0^BdxFAzTnKHg_S_|6OB${KxDJSjZr@51$D@IEN>(w1ivVi*_Oy zrp{>-Z29nByzWSwU`C!&Mb7C(4Nxs&Ku+jG4d}%KrKo#$2sXxO2_pK-kdsyaO_ces z$%2d`f6xNEt)6CPdwVAGT>4#Us;h_idhg%*9bNV1)L(?~CW`$op(23tR}ToUF1R%O zP`Cv+bJ+*mmSal}!|&3?E5o6@L!Vnfrv9jdlCKH-Xj@I_7jPn{z`S;v0taSSoy0Lz}Z|~*3X0Z z=~RGgWTLmQ+qXX_rm^_WRQV&p9Qm>L#NPf@(sURb^;orFYw{2OTT9{gz((YV@f`*5 z0rXI+Av2h-MJ=ERRMBpL4H6Eva+NiCTX+5n*t)8Wjen)7{x#QsEC3x8Ktsb8?rV!p z;U(JIDypS;*Y#>1t4ImHjqT9AtkP>7kU{2+@vyNcL)Jxw?}^KFUllsz&45)-p=%{C ze7A#t>eHIlDBWGfefpjsggoXDe%{g-2+GhhXIJvkif&3vJ$f92S@@Z?RH*&Rk`!rE zj*&AtQu1OcM33Pf#znf2xWScgC$2#!g{dI@>YP{RLVwyqQQ4gUZ_U+iZzgKWu@@YQ zGsarrOCO8l2@x)#o-uC=t*XTFTJDaZB3*PDu7{_jMc{iM%jWiiTj>)mVIJ0=l>OJ% z7;fuC?k&yR*;Gy=8gimJiY6SVE8-0eX+CCc-i?YVzhW=LMjWKb7lXZ>{;8auMOs zy~5tv3Zl9gQjvDZo2D?ygoJvfG#6Hig-VVkoSqG`;U&2z^xT4 z`|&}`5XrL>;$Of|24Y*y!z=rjI&ZBGxZw%Dt8;^bW`0f^G3~$ zys+gixA_OcD}v+zQ9%<%FGRzu?YB_db>AQn9~X+!dy~MfO>d8lJhi&9B+Ak=9j;!6 zLez1Z$<;p-LYyUm>@6xeLiuGH%`S`7bmGM8jOu}+@I1rk3@>4{F?+fP2e7k9Nnh9P3DI?ah^!Zl8C>>h64##WVx&Wf%;sS3}(02+%DtVSa^dnr=wp{=O@ zdU{(PV7t~+ng;!^T^RrYbBkpe_F%g0O>_l^j*_)pSQ=Ve7js10DJ#dfu|Uc<(V}3G-`p=!HXF7w_>^_ds4mNn~BTF}@gNZ#iOY@NIrE z@m-QF+!?g^;BVjDf#7Cu`_0i<&qp{dOG6b5j+?c#zFCFAv>PbD*%Et55*Y58YT7H$ zT(4UyWC^-vp6p9&H7W%c)~v+v2|pgAGp4WDjVFXV{6PrRnqtRgwn7s7AnHuz#w3G_ zh+kmwE1Tb__5}rJuD@5-lzwe8ZC?Cf%R}};s~aT9XWA&)D;5G$^if6mvKz)j`i$2d zPO&NIOD6j+Gi9d|wE`#nfI9dY)AMCWtY{(aa8uA;RBQxDgn}C)NbBzbUfL)ikA|07 ziL!ho$&U7~BbW2Je;EqAMk$>_nqN_W(9T3#c8^23b8ViMdRfu{+Pv21zzpuBWz834UInb*0DGZOI zq>IQ@iG|}J-a|ZN(M0t8*`k980-6t(Cfn%i_hDUrcg+T(u4kWx?>h|#M|on_zH`Lu z?MUzICo-4>fbewa#Xf4Ehn1@bpzfDnZ`K@FRzb;k+NeroIGz~I-7T=&wEo7(u-e+D zs~)O((Hknu<$koKmj0>*QK>8W4~#|$mH3PYN$$uDg8B_{#B9Uuou1&e<#RjYw-+u}^!Ar7mzXMa+(-=Br*#urVK8rLz4<}*UK6bD2 zAv=-mucaMJFnVTtTpeHQ6yvkTzI6H8W2mCf_NHl>+m)RvhcU(n&$R#tWg$}TElEKU zA3u*DJ>~P!vLm0W>W-@A(6kO`(u@11Y4_x4Oeg zKM+-nXf`tZ^XJ|NHx)x3d-tY=%`ZmQ`gHcW)+Hyp6o3+#1J;|#iXH;YC9FQ4uxuj3 zip1>xR-QN-BiWwCp|#=0Lc_L(|-1~?Reu_-s-W)Qa2_%Qn1qs8ZHU~(M(w9OC~ zS)2KKBhf2hkN*+MZ!oH0+AzoR(eR_+#w#>ic&R^+oO;Q!KUx1f#ntE2!a8TyxS&rX z)#TiHc<=?3{s5Fi>OOh(5SVxa8<&S1?sz{!of>0`E@bJ9PW1>qlG^dlZalvu6d`{p z;JCACK3O^5jQ?b`Wp96|d~;ec!~{**&Up^<*MEz@bXjihk=V6=AK9{&O+T~6*c6 zGGl80Ets_%>L@MN8i!IEE$a9XukeNA%uZ>cBn4Vl+;Zxr(ge(=YW?8gjqI2EhqFI? z0s?ACH%DnP!w8sOq;gxQHTeMW_TAoltYy1*oI;4^VykHI=597y@J58)JFlfDf1*2Z zp_hdkBjev}tD`$8@b-L_i1lfTS?KWFZ4F6ZTs}^(e~pwA(Xqp#@NN$A#~jd*0Vqzs z^`QMcSW0|TMZCMF348j}>MD`3VhiqZr1fktSA)WHFiuPc(z|nF7G}@D`ci^F(lkz? z6yMa}9}|ou3@Ceyf=?$DCr1J zMmvyoNm0tBfa_`Rczuft!cCZzc&OVIr1oEbfGr$}o>y1!;jm&rO=itoxnF{6c zY7Z=q{7;_T2+lOdlvH=B#7{%kjk z+qJ<@@Ax?S$|*QZ!oWZm<(DT;A9S(Z5ocU=L~7|-v!5kbdUS@>-d7c+A0NHa`i43J zy;ExSqA0Vz+AVqcU|Yuu9-;arRc+Icc)|Cpy>tIO;^Y*v6cPQCk_a0QuZGf_ zd^U#e1Gl%gbD!!}W|brQrxECM{Avq?YmhO3_sZ`C9Y`53ff~7d8wtDSXMZ2NAcAU= zr1_VPBpc!^ymj9Mh854wUcq;=kD7leTXw zaIbtR%<%ZMzby4qh0u$}9bv+7wo$F6E$)*{d6Px><#giQ?NLOg`z__ zc*CZ4?4VaJi_h^3WQkmwJVrGCkL{>MTqcLpwkKEei-=Tu{U2yKj+qC11U<6Zyth?< zc7Cz9-|b^ePVfDAe9jU`bl`?>`J)aahob5=YjuB?Gd%t%@B6r5^%V`%PdNFLT*q@Z z!z>J)caF-vz2sKOFG~@pg&Nlcyejt7s#3C!quL8g$tB#GiLEg@jJ4>g!=de_Ia}ndV zmdNp`^~bA6W>uu**%K)6^H)nh4&Sp;RlUBIx<8X-yuJwj0FL@p{B*tPh!Dw@ea5i? zBt5h!^{z)=W|x|N(ftxOr4m?IDj4}$D&?lBp?q7$JjV$VFcULe#HR=j&XNw1Gq(rH zc2rHX{eRWVjLhks*i@5c50pw-BVQB*iQV%q#1mbqc6kq!jl;|c$fzY%mwuMNO%UxU zxe6HAr+>!z809%a^rVmuY8)O7`%YcK5$3B>f|Y{xLFs9w$0k{xR-badiEnkit=+7r zh!P{Z1(RTmFEm7;<)JF({u;x2!p2CgIJJ3ctKC2ai`PPQ%PH9rkFBh6Rbni#QU0v$ z^>lopK6I`k#xS6`aBtvN#}WsGLqQzMr-1HI+R27gno|pMg&~j`2vC)z77@OA3_vb; zRLHmm(3B%y_eTqECcI8RN|m>(eeERc45ZDN{^1?d*+1=wz2xRj$}4xPKD z<;Xn~)czuC0vX=>@p437AaS4*nTdUy`tGzZd>$jri66q$^jOK$S<>Q_ZO$@kg7=+7 zXAxLt&;u0KowrR^Yfs*%LVi42jY-J!{K>6Am>Pk0*f9_=6hgkwk$>E>cfk{I7*$|3 zG~)qkNVEkGC$KVNb7e#aQr_<1gH~cV9I0XjesC}wc*7DRc(Ien_dHD8MB(Y-#_X(h zvf*ZFu;&(jy~=2_H?sK$zUrU*6vzP(B8>S_Y*RkJ+oh1u&M|dwBR+XQus=efu1R~ld>}lNdu&OTlUzX z6KC8WS8F`6Rzo65L++=H&Rl_j>t#d}hy{!K)oByF2Yyc+qM6ghTu@TbKL6_R&pw;a zl_$g{T8)GUsO7CoG^=&GjN*Zg!SNSd{&@IyCB17;>=KhkAbP|la*#H{vd6{|;zN<& zf3epi8Jl9RykNK+<*q~O7$bf1;GF#jmdtt%Aa<;qJeFb*W6}i=<1e#Mn^$QP?tQ8R z@=IHuGEUvx{oL@zL4M*t2|@16!|Gz-cwDCi7oRrJ;hE}#9&2W5Bpe%hqGKOD)pVue zNdXNjrQYwQ&6M)66|;(ajL}NHWngDLEA`X;k+k~r$lbdU{^J%$*YH`s6-B^>R z%@U;Ud$Z1PkJ8f%XC>o2m|%%^SMZ@qh>T15>tF<<0E@$kyy zkc!+6^AR!}kr%AQ%j6FsGj*c&@lsMi-;DRmKuI6|_Ex}D;Op0CEj|d+nD`nyu!Ika zI3!=8e*V3?V{PiXig)IuEglppt{mekE8|#+`to!&mDz(!eG!5S%u3Bz?exerCQDo2 zR#}x)`o=Be{7x}6lvPW`cV2z^odB9{#IZ`qI`m|oh!^fWr^-+WzMe%5;{e2Y-JmTo=l1ekd z9_yEjPb_zwC*MDWZ^R?D^075OB1Ykaf0(rJ6n5+}q*SpFWK*XTu2Xm~f}xmf+ddhO_M29*CfRZMA(~Tz07C)WNARDfb)^t!V_V zs#rswja{y|du@EC%!Wfgyr~ZJ~%=i*FbVP^v@4w7Pl|QX7F}$X;RJ~dV5JGV;cSZF(g()joa>#IdnO55;&z{L^bA_1e>z`!z@ytAiGq##pYqF|Ws?d*)fa-w}P5p%y{ssf-JyO0 zK_(;Q4g(SdBK`?1$WGlSe5=vc{rIk0g72f6`Lm8c1ErKu{$`oeB5wCxNP0_ca?VhdyJHq`XS}fhMj6< z@!v8N^v8at^FGs__<-S?mSWM^#69oA2Gr@dk~VUQ^fYP6Z!->x_-W7b%+95CQhUpY zoVqsYvfwcp%5dQ@fmQqYatb?93~H0)|NfS!{#vh%B%4O>d%1bVE)PXl z8p&53GX%_7H9en6`=fP0^@Ag5g~^PX)aQq{lpe5V6kXkt&z z={-nDv)B?ichkq~m^%)3sMKrCW*yN|veQ(7cv+Q*Zu+@(>RrgzWtL#QxI4ct-~NOU zvX^76>}ofFCoj4eRP@fSH>E-3 zJ8DaybKF3PLMQsW3hQ9=T5bVwEu5ye3gCzXhQK@$`TU=DfM&SzA#2LyI|=lD1%n>8 zdVWP~*sUE(K5jrJ)N;+ zBdwHM;niZH7cHrsU>6~}!eF_l1DZ4KqMw97SH;F(Em$Jvm7lia2{xU`g`W^eh|XQE zg%gGTvMC=fh>FQ7;b9?Ixwd|M3$?bCA3F|_Uf-nLWYodPwx{@bjd`sT6BFxif9sTY ziYJ+8S2-M>qVH7TuQf{h%qA4nRU8AfPI3pE+Rz$|ud3rn(2`rv{yd*5PoGM09Z+`@ z|M>`A7AS-J-7rjGUHVXxbZ#rCfqQ{E@Jk|_PSv?_Ba7LpH>!r-g3ciKTvwNO-NN-k ztIu@cl!FCv$v~JtNtpyC@`oiyTvn)CIH7>}J$g-ql(jVmOjV^-Q73RE%+&s*NEk-< z)Ymi4a!K%ZqV@XU3xM}w0brU=iUSJ(3BFhk+( z0+uWFaz!wWbq6J!C*0l`r}ctN^^svAT>b71k=OUZ^=28aoG=nd!)Ku5q+5R@kETI! z4>R(welK{wt@`p|SCMh{-M##sj1io#|V;79m}mWKTls=?Fr=RAGXWR)5Z|U ztB8q)NoNh-@D!F+cMLwq>7KRvR^y$I=+EY;(-DrY9XblHvi}E{<3z>rwuIJLwzdD; zs=gPlAO|0_UeCJRlnr6*9?Gb+LeJP(1rsc+pA+c)^Cn%mmC$#e0i;xsXK>a(!fZd- zzcZKkYqgL?b=eHTDp_vG^pBPq_Cq zyNGemJ7LXxXu3jt8T`amnjR2vGsm~UjjQVJ{0V@H$qiyL%-qncIM%sn>j z2}@fCj5O1x0)47~IFoQV$O3?ytS{Y<3V2}cl37(K@G1!268Re1SQE62=+W^YmJ|jQ zn>2#^%O3RmOBIBZ-;Qi`@=gKeeAs6JH?ged+c&esI%2I1k7tKz&g9x8zG>4oi!mC^ z_6_8#g-mCK5o_Fl8tiZyA#Zf$MR|K>1KS*kHN+s;75L2`6umJ%=j%}{+#414!uwl) zn^rJ5?8i>%r|puo8?TgZF)D1kIJh#tSdX44+e=>bU-{xtsj&I6WWB86)j2LmN&5Be zSo{?kEw8RdgpcS;We77qp{@ZyQrQwMH5p@)k4~@?48u}(> zZ&>+d6INLd0Bx@taG80IKP8ZVoi!JK4g157l?q7yf==5NFPa8=s@mQEXK$h8-Z}+} zYjk{hBAYrDC7PiZR_ruBRo0f_he!{xi2D+f6+=rP2=DBMR5WSw-Vv7+`a-bD2t|sX zB006ItCnC4t|?sXGel3AZ0?@`9ndKn4h^1bdcRsqXO{ydS`>sGEL=H0og#04h&@if zFUN+#nWCQyz?=Iaf+a4At(B{6a|b)RR2*lEjssKYGFm-|6QU(`iHB=}NM$5@s=@a+ z;-){&*c$0IF4QUYGLuU&#aFV#k~qJxAf3Ep47GsY zC~xu>eFpNsvPa!_^K??K0|S#pG{l5wSfXFZ^5coCm?gY30VfE}i0&FvQEdEis!^Zp zENx{{a7!C3GB=OpZ&rO^(B6(+&+|IG$@J zU)u73HBCqV>L*i={ECnlb7&ybjIeJYdGBLMiZ{gzxM&PZ$`M=PG{9j&g$7zksTg&#(O#2`~c ziqTqc|ETF^6*iTes&~L}ASX17Jun?F;(c><4v<{{I3mVhW}s# z!}JZPfv~0#+w3ynQ8YEPmxF8zZMA6ALXumHNjjSjwCJoeh@vev?OhY$>sHN)XxLW8 zLb4cFj%V_v4FO3}o5w%`R5_}cg38Kk4cgK?zf_W7+hSTNwkMqxAi5~#w)*WePU!R; zDQ}`L9zkisa-`PnOL^bb3{w(uO62^u{8Wp^feg>tAPsO5b%1CBB{J@Yb$ce1^hBk2 z(Xyixa@(jMjlX}ivap7Lb zX5HOxufJc32bpfUzOPm58{hshd-l9}s<=~lgyHer2Dx9pdu~eJHGGhw!EsnNlna#>t5r6FGv?9_VzIm;e0>1W&Sg6tb1sX zuO$__2Q*`~*;$Ne6Ikd>}GQ;xJ`^`+G! z%kkRakGeR4xc-4(7e)@Nsl0LaUI!j!@5x9IkPx~}xCqgcFFOqTp9TT+D` zu@qroZPDtYe*9QSm7>X~N}gG>(vzQjjmODEPer+Mc+w%P8zDakM5UEzpvY}Ga7viN+7hs!D1cBzmCfOYy6gGd6x zxjvhb$M^# z3GaU(>lIyXpKI%IDa~T^7u??nVsqb(J-4EfZ|&>L+iczrlMkNFa`vgkP?~*0z$e$+ zW3q|Yai>Y;rp5L-cd&JcAZo%D9E^RAU?1W%D1(+3=Dn*LI)(;+dP_c$SopS*VL;fQtf8f?jUNe{n?mkb1}NZdqy9&3Rh6PcpQiedWX0E^p5Dekj;@g4t}!~9V62aGW}*puOU@Ht#8rb&n}M!5D!j;l(hXWnM((Y z`B`RUyYe9hFz`axb$ak>TOhoGG)9nOkAS(q-3a12`qJlIY!ntl)3yeTQASZ<#xM=a!s` z+-h3{hC+lqJLlz_uQddSSRHUPyhO1!zG+ijS&&qxvCZaBKPp}e+P3I1G;YpoxvFnK zkLA9?X!G?o%32Q6DnTn*4ZGd2leY@>zUnmW^hOwg4hvN>yU$W))sOLA4={Uq)yfPJ zk3ESRBz;T``{u(UDkgfmywABk%SW(WIMGn1i|sakdDevXW&INQIrS;S+5MPW`F@kLuB$Ra_Imcc_KkOD!7sJ7t8hH1Xhq;Q&m6<)Uf`R>wF#GZ z61g6W7JVD)-$3|26Pc~;pWCG=epDLYlf^mtzO>s90N3#M>3ZP4EMcU7vM1$TJJmOd zi(6xQMI$J9Cyc&pOniTOH{)C2?Kru&CZA*)WN15rW9u(2=tVqCa3#nCE^EczuX2 zTZvDlN7D@}f#9;9;)@7juEYB}Dt%|sZr=*4>n#j^(U6bq6#Xb!$irD|(P!TI{-m1l zQ3^?F@=A9%BZd~Q5By^m{LiS0n{lI9ae>|HA<)6FhS<2WU0N=ZENw&*32<~Ed2B7} zlYv@Pl_>8tcNqB1Jf?X-+qWm~&m=5qFy!6^G=+}HSnL9JnDu_^2TX5RgXC$Xj&$2R zvXjDY2xXIXD5AW#CwLZ9$FYK(x&dNR?<)3bb-ZniH_iL8H8q1he;=5|C{TH%jic6n zY^Wv*#eN>M1oB80n?M+gh}r86y}ysHGQ#cT_!F)Ho8eM(E_Vesqvj=iP$w%3%$k`G z9ZE#?%xgvY&4F=mWldDklPT|FP%$;tguKQ^{72r#+bpJTzj!kdGz?*nOe-lp`<$eoy=(J}ERj3Y*il$m(sLRN9ICWFI1&-q(O&bv0!RI* zkRma6dEZaISN_FnW`TEze@)ZLO~;JM+Mq`||1^9YXk z=pDfenAw35!K+_(>4n`k1dLK@3_Vs4rF-;(@nTzL%PG)G3~mGWqxEet?YQn z*M2|QjoKjiN+NY?uzO+j_-vu9zy%5KPH#fL&=zLpQ%T)@VD2cb=M_6&W}{-in`)R3 zds?K$AOSQsGt3K6m*LA0vL{Lpq}vkikOY^Vk7eG$eLG)_`e@k5D5pGAo?g%{(f&wK z#5Z3q&2Ft~AdlkKY~`{#V#prbN=&bF&Xmp9D4+pv(MD=cy)mtGxtyY;^;tG?!z{7q z8QbWBR<_W9Uy~C0lw?_Hr$~)-0EVrIHOppwXh#5n3ZYoEGJ<1KEuT8Gjr_^}#hS!U zm$iIg;*oO;98Glx>Qu*uvejp)Ji80Nil^SZ)tXqyq0) zZE;`GyDsInjN}1(NXVL+#nzb3@m&{qG9+THOtWQSIys-K~pv5h=X*ae+Ov zv(K1Y{j>ARxEitnZr+Y!%)!jsdVF+3p!!>-a5l58qZl%Z{gSJ}&9IhRv--s!|gzm%0hPb%JT^lwrwGpgF6wyE$wln&bJ?opcP`tR&T`2);owNh1SiVEL$bV;#$WwGV6N#klA zM#UKlmr*i}(WEr3D&(&n7Q z#3#y7)-)%qV7UH@nf}Y{XXgnrt$}8LtvsJ4Mb;DBPE6U3BckW^l+C;R!d@GGymW_0 zTQhPih?NpuWLe%jue5}ySI=XMb!sZPJ!DAmCRUQRnAw@1+mp~RHEH5PnDt?}cuVaO z4$^PgWXR_56!BdB^JV4+Swv0zIij+IOZ&j7`&nr4>^2J2j@&LK^B>5FnoYPcS93)m z0w%A@wz92(1Al0_;-K9ydmfjg`9^f^&Zxe$D$f52MbF!}LACp2H&(RVO%6pY*my6>02Jg|J!EvOm zos>bq$({&dc6YdR>}Ra4Z1c2BZVV`08-S6>b2A+NfO9-B*~{p;@`-w*TT+ffh))q= zNEIp|5|?lT8bjKOTZz(N_hj8a7KbbN< z^V9ux%bT=ERl>IJDH}~^7ki~a2J(&E_3VvjKT#Up%iSX@zeW|%qQNtHzzhw*L9@c0 zVS`B(2R`-$Ir~P>n!Heb=Qg!$=e}%x>|7!d2ZN>M)UH;<(W{B{x_Z6Nkmb|sf>T|y zwaU2-3>v7JKl5B+ZWmsEWMMaaWM;<6!z_YVBZQyp8050l`pvR7s2a!A0GFIN*^1VL ztd(MM)`DnPNM!{fQGraNd6So{{UV^%UpoL_%q&@Zw-^$iAzfJfQ--vrc|GaN>Mo>VqTXVm;3aF{AJHhN7c|p&*9t&<+J`DonQN9 zwdy<&YJO%5HMbNbnSL+WGJC+ay~y3NnE}b~HK>nooQ-r?UbGcAJWXw@4iXjpXqOxaR8+xXwHglfx92xwDreE*f2BfhEI>r$7B1g%TX}pO zojU~^pqXXc#}&Sv&Eqw3#74+@={NT@{83%?&AOxxeu>nnrhTt7>?wfzv_cVFbS z@e31f(JDn1714j4EAuYWWUl|Y8?R*f)%CL^?=#TC?Py^Igo4(sp&Xer4U!e5H`S?5 zDBw`3?{v;qFiNHMv)(UG8f$gQJ&)uQNH+N#(v42Cv^{E0?Ld3Fq(p+k@6zfyy4BeJ|h~DENOuUM3)*a;cm&@EenSRVr zv7!F<*#7jHJ*iLQjlOFddR`&?7#9g3P)?=`HCjf24O=k5F5 zW9?57x7V%)$7`^Q!()zlZ$t+gsV>cGLOcX%h4wPIrjc&Eu^d$68k?1s!*pI3XI!6~ zzG+wzb_V<#$m)@#bc-zjplbmD`W~Fmz?By{Ev#D;$F*aoN~vW(W>OxaC6FiEn)ZB) zaH=m=CfnE7weK9doi~I%jq~6PRx0$>78N{H=SZTwdegO{9h{<3&2KG8`K82x@!+*1;#zTO8&%bPO(Z2w+3UtslDNVU{Ec}9ifq+8~IzBF~D4iv(022h7JW9`1^b zlUhT(RudW%qdfkF_rt0l$!jpOH21D!5;i#7Q2|97rcD!zcP6662n#r|CjYwOx_Vyd z%5(8Z4k+k(qefgNkz}cM#7Tif{x5$)^ns^U-qV^00Vk?VLxhA}UpyiC!glR1ze&&V zjNuh*X|=;RvURDWn%52jvcYBBKQ4{q--v!R6VY<2A0VuO_^D^^v zvfmqlZZo&-b0;n@`nXf9*9C}A0x7G2V3qQa4;feY9-%5 zz2=YTSy@T9hQ8&ip)S%aS zgCS@Ig}p3{l50)$l{+I8)ZG!%BF1t(uBj?36%uXJ^NLS8*CEIs*i}*CxrDrB|6+eW zY$xQ$z%CNEN=SJD-ke9U^o!;u2U8<#|5P!MnZWygMyL5j(6b4Jwt z73M`y-Ta(n3E7YKv=%i$g_T~cIw^W;E%SAL0XxQ<#ET2HtD0an!4`^))LF8o`0v|W zK(6y()TGeYnOxzX*Xu5frs-}4xToM!vd^!SYg}{G*ZAxGyV3Jn{w%xNEa&xr2#wWLGkI2^8p%@4P;>pCAtuWW4r;PZ_#+ z`Ui;QcC2hmu{se>=H|Gkb3K4mZ-EJvMLB+j42xnh7t;QN%Vx$2sEin+$`^wx1mahH zk*GTt^zpVzI02yJk@f7e7v0@$UVe5n4>#9)JlWz+dVeHWC(v<2`~GleD@9+&1?vWi zas#uY%}~z>^-UWdNzYsIKpFg{Oey@0BNmV3Zn7n_{eH@VcwTw&9`*$mXZe`LaFFEc zXT51c-pgB+oGwd(Fyjs%T&a_qt8WA+%*Zz~KU;D>L60)x`RTL2fER0;UUyD0d3*lY z)D&ICet$1*a6plx>?4H5aCaIT1X&VlGQrevUe8-{>ip;#< z1Kn-7Yz$&C2x$!g7}rjJ`65#~U@rh1lr!@%PtKck>?x)g0fhwpKwsww!gcxSn^ih{SPzkUj~qTA)UDe<{&t|yI6mNap-v!#he2<+pD&IrERu4Iex(p0&PqbHhLmNqHAA04J*F|VwKNo7+-%Qm%Oyc%3=7b_N$_G#(KMuq2*1Yc|r zgWxplpFR!=3~?2yi&X8>9^0M1J@_eZ$n~XIE4&j-XwV6M){}a_!K))+82Qbe9Jp3+ z$bBt8MFjAH2Ye$nXOKPV=(068&8u%P%-%U)BD95ZR}3}voI76%3q+{5WWY{+#BJ+q zmiZux`Mh(iXYDPakn%zLU3>fkw*Xq?ImT9&yUPH|6tnrTF5g=pFwKph*Q+xcjkj-h#u%d0AKfzxzIHrqDQi4!u3JWVj-c0zVp8g9CPN?L}IYT>}C=uMeJY<2ZRsMqUu|!qxec zmFpJb`?J1l*3!}wl{v&)**Qe(n&KlCJj1h>L2Q~7)6w5<4{9hjZEV?Txm)2?tsZq{ z?G0=+7v{%Ge+YrTNOBvi;@6?gUAG5#OvDG5^oPYQg>;Ko7I*xSPl0=IPPIaW?54>* zTf5cBGG|mzn}6oIrw7FW1e)Pb>xh}zl>QK$UcLtE;HvV!?{EI6O-%-IUdPox8X`di zdN}2CE;r@kg1Uoae7>6JEM|rvrfMuZqJ++By6x&X!n34DbZxW@d!L(HY-Lurm zGj5rln}jxGr8=x2J#JaI6ESk>+i?q^ zM0Q(SDpY8Or8Zgl^mOBb%!X}!hOngn2Tgieww3cPwL#-K(1F#8|Ei?^!aSc09yl}i z@9Bvos;Z5RuPBH@TtG<-t9Uiy>ajj^vO%>lK7(4AV#H{($^k+Z418dL4CP-} zxV0ePc;)VS6JY&)Y?-2FQa{KKN`@lb{WcXcT=iJkgO=#~y@ZQezF1KF-7L(Ks46NJ z)7h&Tw(~V*RRJ(7_9}dI|FEtACj9zJ|u*D{vUI19TnHIynzOSOBf)y zLy+JE4LU#w3Bd{O5Zv9}-2wzB5CRGA?(Ps=2Zs#q4sXx7=iGbFeZTwXTkEYgu=dRK zbocJ6UEN(>-&g9~J(GOE36xJi_|Cln|HbT0fuBq75U5s6Zl~pOm^9^<7O5?*ek%`w znw;4$RN(gvfz1kX>8JWG1ef6DrBC!?K3??xi&~Etc6WoksS3L4s|QX-O)BDC55Kp? zk0-ND_u&yu9F8U+y9PnK!IQ@#y3i2X%aoiT0CHm)?1~!P^k8Fh%%<}Oy;+#0%-(nX zH$_Nw>zFp<9Ogq?7t#BxQTnwPYL!(vUn`<&d7eo%7>4-LCiT_%ICXsRM0EH#ygobY z?|U6@MSjMI_CLe}093#ZByW;MhmClQNCEpmDFnBmbAUOlAn$j#8*blpo4@YL-Rb+I z$bDu)IiMvjzmV`ww;bbPMs}%9cV=^~F^BO?=6CdC%?oTAjOHim)P#3E&oQ2h*A9cN zCoM>WrDZ!HnfQhc$Mw!USXrK$kp<*r?ALyogyz%xuWCHd;8PJFsv%fCFF3O%Plrni z)m&EarE(T1x$B>j6Ou$Mk|n<=tJt$faTJWUr@t^+pIA?PM>39y-n%23Q%zOJH{YX4 zf=s&v_y|;-<%T$%x7vYyE#Qc=bux6R4_FhsTif0)pYt;xnryjR!g6m2M3juTSC5=|7$s_Q z>uJiX+s1x+E%$hhbMfVUP3|7fRmvU?Va_2=8LgYv=hfC1pd(#2ew<(H$K!)x4UgWE z@ox3|hxspB+N@@b^w#0LU$7?W*f*%XB4()5i7q*|I%isNwOG&o7D1UEZ3E4HxfWay z@fzWBJb9PSC7504D<$YVZm;#RP@}>Vt0(v( zEUb=nyMw!&OAn7$>RJR|zt)fBVlKMAJp_+yeis01{lx{)Z@<>(RHWsFw@|%#d=OLQ zN$~jKa5I33s?oH@n`}3hu_b5*+ua6IL@6a*Tc}&(uMfwR=B{_%mv?Qd6d?FqO_?X2~9xm-RS$k2h#icLBq%zkOJKCz$Yu|_USXsc&E$YT*{@1}Y>--kZ(!{-e6L`ZJMH~8IG zXL$EcKb-njWPi23+erSHt8{kR*J6i^T&jFiL>+q^`To#jpph?5A(+XDfr3>XFwTS0sr``U_@| z3M6g!`<@9`12Djh!J6UXGvN7SVMZlM>9pb-yNfIEUo#~T+A5pXsJ9C)R4E?g=O-Q? zR|pLaEz1k)kZ^M1W@KbkP*5kTIsh6bmQn$J3;GFE8wedL(}l@s%of%Nspfy^g#Ku4 zRSJxUkRySzGf#^@uAo3ALMrnd*y@TYD=RnON{MDKqo~6H(O?Cz&<7}I*8}Xl34Db5 z#lLNH&!W9Fo%`=6!GK@_@%+98E|)w20OT6ZY?GJ+fZy{?Vo^t{Lq6%e`JMc&X(Rr8 ztp$A}fkwSE+Q!!AOk)HlD@xTNq2{4%1w2e@1z3I+@tP%TnD@dbmq8j?u&$j8?Q zxPz%rN&d=PL~ zty}GW^!0~R&M!5jy4Z}D&XItmKA~_;-}XTW%=>)xC1EvZ6TuEaBk7aH|Gtl>^y9|? z+R5PW0pF_HH$JZo{{U6fTsJu+T|ng^o6p@*;jm6lnkszyFkcEVR-$vF1GbEd7SKkS z_gPjjy9S;BbajktagOmH+7?I+r|S>4>$fs}6uUP>BW&McLxdACY1Bw!h-JpX{=VHEyXuw;C_}#? z&+PVpf~NR861R1XxX}h^j<194Hy}TJKADtao&x+<;4zrO{!4Gb@cJ+gp;>7>fq!!Q zU;=x3-=HtBdY$oUYaZ3_7ij90@aDroW5RDAoFeTv>y;FPek~~1dDIfCO3{=Z-;pgk zAbdRlC_0exFk%_TtY|fys+e{H@So%;7ose-Xak3{iL*W{*~KzCfbwv`HZ7Q)iPbQr z0yDsLZlJQW<)3Gq>wrzrJN{0oS8kgXC1)BCx8%!H?B~2sGseM#!;z6YR+G^pzH*RZ z{&}$>WT9J`p;4Qq$7{t_xQy+#q%eB<`1p&kRe0zVYz8JKhkH&YHdfZR_0O*^R;W(# zVH-qDY2fCcJ~cjvJvAVI*fX^9t?UEr-M?RBZ-9^0R$ij0F)y01#YBpwIa9+shC7DA z?Hf{$H^>AMUY#>fRgh#?IR~Xz%(!|L5ZFFV|x-v2n+}n57pj39gJL5z{mKWz#sbM92d%%(ayg+f?9N-bsVT_1bv??{HL)F)2cbLTd~#FQc0-5p zdIu91ulX=Kq|ZzB0Ra%Q@+GY82=Cvyv4jiwfB`ru#c@GHk988pm5|{p7_qZ6HLUUB zCE&GAArP$j1UP9lPWBx3fKg$AP0vaEr=_JG139{7%q~237_Juz~`% z^Zs?uQt;`gp#p4u8hl4tqL9}U6g}Wk84!cuIo`urzxVbL@ixCTsrSuYr>#rj4#M)y zDZiFk`t+O>3QUzc5++u(Bf9HS62?jmxj^bsMTgFMhi!r3j z`SikZ3=;FYw|4z%bL-CA(rmrh>LJa+ojF)8C7dt0apqO}tvlzd52>fFuX+AG)xb6e zWenW)lt);jrESxtHS0i%OO?{pt39lUg={4PAz#}>!rRC5gvLJXS}-*KL&&?PlTRdX z!cDWi!qE>`DMY3XQB3`PFW$dPS1UKKCOv!HEW!vRwddNv;ms{pJXUXB1+yFhk z&aJ=+3Yv*?S|xq9H)#4L@us}9>@H6-ZX*}h4WI}&!9{}?fh8xOs};mX(8;INTQlwN zwZ%g~dPWgIzSc5y9w)ATVMf|tw4^pc?}ZU>6q4{T{j+0O3E8gX!k}81`u>|p*e{AX z+`u$~ypctXh(K^K0<-%ukb^O;X2kLl?CfC_3~rr8#G&*HrUL=~sk_+nPz#bUbGK4_ z;K)xo?ERE$)*ERz=hun`=lE=g>OsXJuSiO--`f1hi<*I}Go)5j!l62ev2x<-vRCBf%?R#mIznH5y|QRt?!YIaASxTDtVE& z!9q>PqqpEZnQ2{J0h)-e((i#+UQqFh%Irj4|F)ysU)T%pAu?t96ZqAryMhWTEo`bP zEt)S|M#Eo~pANE>uRGeZICmNgNA(^a7FKBnMtVucYEEIJ_CFn?dem&Hf5?ts4$ZF+ zZ=*x84FS`1VC{eJPy#?gxFR0-W@OK6)NhY=FKb@%Hf20(`=u)!)-Lrcg{>Q-@$f}{5T$?{ZX1A^3?$~?%<4gBSlt79>m}TYh8w2RTIIOzu&umH)%sc};sp&+T zNdp?7`?`zGXbaCwcrLiO4Ln$^nx0jKDU}(l2K2~4-k!iId58Y!Jd= zvGU-wX&R9HZv%??7B-Xcd_sV${E(88TyA%Y|MBC_!`1L@l-pg*b@3a}mn|(yHY9y} zdc(VX?$zGS=+?RY<>DF{eWSGJAq2p;QUsATN}YIiW)^r z^^iN@G}x_`>nS@a{2vPrfOQi9?WX>U#YLzpQC3x5pFPIdTfDE{U4&Y%r{5opA1(K2{Mjx0WXm~>_iYQ=srr+9W5qbeVP!K6#DJDv5CljiEJ7+6I0aPqaEEXvh-Ge zx#D%`#H;6hKd+U))|l&f)ik5P137Fr?)rBM&LLMD+IRSpE!XfVJhj^8p%k%!I?XrP zs#&5Po6OUt%d?iwC|rBD-7g0JiZ>2?2F&o&T7lmv^_)w^Jl78K6;{-GP)}8INp(|{ ze&Zt?gb!xlEqXA-X18x{PL*6N)I@<*QTZ2HSkbJs+JC+X_C%OIg?mB z1E1G+FDOgM_7Gg{Y8+a7B1LBgetqhmTZu1U!l)P+DYapu+xC_1V!{9TLYgdy>bRNR zat&ocDz)h}#CA>NHMPdmJk?Rd$KRIC3wHg46RlY8Jx-FAz0Rg&L{yiB3REfs{{EKf zv)*GWt%dShjNdW#QCafujF=B(O7(l;rjAk~QI!(Lrr-5uXjvwxp&rB}Bs7Rqa*!n; z(dmtaj=!tI7g`c=%%H`H)6dpq~! zWR5z4&IEaC(1pJ*8s|2Oj_&nq>w?Q62MP{he;Sl8QGp9U*kj!=;q3?bc52X#KX{); zCZk0R(0h}u>kOMvO3;u5;m`5Uz!#O+53koG+1eMw0?zyv`Ck?;&CIGcV!09yZVBsY z;`z|;k`!s)CbBGp7mpCXT*@~TW;P{gmR$@!r9zVQssX|qYtYwd=MeRsu1~&J&o)S2 zr*%k~Pn%%gdYet}@bUezr0`=07(?4q>tgW{hOCo5f7Y8wDqgeSPIW63jp0L^182I38l#{+gws^jqEY2-?e+zZ@acZFrim|53Nm zb!9{`HEcM`+xI@@CIdCX+n-3>bAuZ#F>}ce;!{NsN1kg`x>TekhdJ8Gmbtn8h#M%PYKW zKciKz_Lq0k>t0SgSickWWb24y| zDQU}j-NQ-3FUaP@5%Rr$%Evn(B1`O@(D6;;f1K5H&pJaT6sqH$m$YE%^Qc-04_VnU zZ;%x+h~sf4L^|L9F~h_Lh5ls3wzA1(5TPKr@XAMten5ryI~r>wjlf=))B}rQRmE|r ze9&ba9F*5k3`}R*w%cf8Ti1TF`GzZlUA`u$|M3H!M6xY=ABO>y3voyqULTw-?C;Am zd+3IGp@|a#MY0S zWK;K!NzgT7iYQ$>L)<4IoHB)KgU0-edtA&}x~b)ry)o(KjEHF*$=BFz&%EA+CcAu{ zrr1}~j_%kcusayzcn)=m%=Z`y!r$4e2tCC-J=^;UcIUg&a)B36HJFR|Io?X8qxO`YtG{a16hEwqyKp0Bwx$14+T zR8x2qovbKbp*tM9*g{Q*pKWVbw%_Zm%g9nhM3+Ef25isEPCatCGZ;o)b6N<0D#8nz z6rks=oZn;fy22~o(&uC}wsY{3Jd}a zGcWx%(zMMYLkau9kS3<{q&KgJvlc>dck=q}VXLH(1ouzI^DSy44zH>r!kAFgpow~` zGW)~Jf;##Vet6K+Avmp(fsTue#^DdQ<7PW03ZN%FLtgj}l8l2oFCKa36!eHnm5#e2 z(Bo7py>yfAG{rjjun~-B7*RZF{oA~;5lGv;_H)ZiHn1QfEwy+OJsHA=+w1k};>Bl8 zxUReBPD%Qs>NZxt{ebL+D(aeK6C*&LPPf1dWmk0gOv_U8d0$>$GKUvk1{YY#hUp;- z?0i~C-TksTh!qKawTp;s{$!tWn}|1NISa~!gbX8!_#-Johz{BUrCjnJq7Hq017vRj zD!m!A(aHB;xV>32DF{7jB(y?tt$NPx~Kk|*#`KmlPpG7<|ID5PJ zi`ls`??*pgJamoja#o`V^0jm=8aoq9CS$L1Sb(5*^&Ye0UH8S0L)UfN$EF~{B(2WJ zETiNym(E+hlw9ug==wEp`lIU~79KV2H+AoNs!X!p`iv)4k8TPTmYa+#6Z;|4MF`SsBG2~3IkGk3R?9%i(l%l%Y_j7qg8dc;P z<~8JYj_lrz#Kb|?;UYP;BIj;cM>l7(T4E-G1ztQZv-$KW%s5yUh7tU^Fb7S;+!_-E zD*nFHR>OQgTYIl9@6AaLmT;LopZYX}eci4;T4-|Xyc?zvBO@BGtf*4C*T$P{lUwa7 z`LoWBh`u^e^A{vb_>o;IdcU*3lE7}$oz8kO9M45Of!zVhZdhEY61Ei58bX;(c&07G z|9X;EhzHKBKa7xLUmwGflCeO;32KnKs_YWu%@T+Vn8+|T6(98lbzRG3ZUp_RA%nRj;CX;cAXbX3r_u8!H z;npql6PX3`=|QOUu$~o#X}VRcJty<{+IZVY)w6f%adbN+kodc3xXfBk70q3UMW|I1 zdP(K)&H{HvBp~^w6Fd5&dRUgj==suT*VU6Bg_IzM7(T%o1H`w#GX=H07>D}XmkMfj zrnGs#yYkK>YsmJL?&UE4;r$3hDZ2yqc~>vwDMa;7CI&g)aje{0b|uCJ+*1^H+0`Bo zS-W1STvRam9tjof7l`U8Co?Y(ShR}od->4*l+<7ivfX9oX}!h%j0kxDNV3`TiVRA&SzMxUgST* z!AkLktv-z(Kx+F+CZcVn$8=(t@WuC!>R*^1eR|Hs2qZA-6Rx?Jbz3{9u$uQImRFpdi0j>UwNp zeZJJ6w7rJATaR+)HnvbJ67x3S68Ro@)Hdsx5+O!XW8an796xS}u@#}g<6yXrzq&k> zTwbJ_BQDycc3oG#E#R8B62xatD?ukAFDEwN&YOGzS=Bz#f;#LU-fn(l$@JGC8U522 zODPER!fvtb0ejqCqV(`l^lu8b^hdPMUpNE=_c{NR4jay**1+ z-_`JNG$47XpGvVt{q5XWag2k0zUU8;2v#A!qcIbp1NI}2&mW!#+?|9(DRXH21c(XL z?;n;-9>YeXiIesxiLS2K%B^#~z82ZuCu|}0oreKPmKO}ACzly72?>eJUw27eXEAQ> z3lIom96NDbS+EGaemyvtRekZWt+z{JqhDIDH@wpg%bINg=%Gd$aDL9ez*I8Zay+57Fn$>RG?s71QlWCXtVOC|FRlB0yMUzf9?VSJc-P z7n#795ciS}b3YdmQ^(hAEBt}lZtmQq+bFqcQ|qXs^5C$vS+=-INV_rD3$0SNZh6Y2 zMAC4NhO;;WHILxvQdOkuy-*s3h|tnkZ5&bi!JcO8%eO)jb<(nt-PQc{7-+E}`$9~o zmF_IgS-i`+<#w!aub|V2q=SwH!G1}&VnP!X9YqSk?+*vCJu8Gdv8;#0;8~KvWr%)z z3A*ch_0pdgqr|dS6WHy`s!1x3hVa#eY#wBxOY$z8vpl2%8A0!^?@OsKx$HmeU0Wi# zxzYD#V>ug>dJqC5x z5c6HK3&&*_G@w)H?&ll!RHDazDx#J=P_WdxPa&9jX8=x0e7Mnk&u_bnb8$H9yPkZ0 zsU!W%RXX(*8LF`mXol10mDcF&&HnR`XYDV9%br*ELJurH(g?Um_2$q{U=qa7@s(L) zMiX1*7^dHe#D@08qu1#iHKpy!3YBN&qoxH{l;`)9 z3yXQ8>@c{?17-cumisXTKVK19@mlkhOBJ(MEpM)@2i>(m z#kt%EUmLW21WQWVs*B%Ta9z0(Bkq$yQv{!Qxu3t0ZZ!RZ)CoG| z+7Wm?$-UI6XJ!N0bCa{vKJ$k*^d-uN59Z6RPljPI*;c6g_QukK9)PW0nlbtszHo#> zPx1^ovmjA~jw{;lk}77;n>4mDUF<{i+sp>~u?ufoZ;?HS&nW-?Z;g!CL;^3e>t8Yq zU`pOQs~R8ZxC#;RoW8^sj9)TK?zZ|RKyIC|*gp`~tebhSQo%1rc3+L?pbC*BUkj_G z-sB&%m%0Hsw~BK?`b8(B zNw;ZQm&5b>mX_X7tG9}5es;r*g3%ZJPMHreGr9cd!DnW1MH>fe4f(__yPP8CPoo{O z_Ftd4H9qI%is-_OT2>t-lV7|4!0vHJsTww+soNP=gJl@^k~EaVJ(n=IG(w)+d)xsh zR(0XEUg8wm)S=s$dD&=;bML|>o%J^auFP-9Ts$rVu0@{?dC+16g^^KN$H5s`9wctm z8^uoOZW<8}KK=qa)iF{OmH-K_KX^IC>J|CsC2OyPJvb2iTtMUYR^m6h+@EGXn+Q0s z(UUQl1;Q*mG90!?4F{)7iMx$rg9f~(O$~gfi_F3HPMu~2m6yYvWvuZ2X0E&G!cUp- z)dZgG(Kc(%-JLC9T4-47_Eh^B=IiereZ<(yvst=OtX!;!>CA;VabLkq^zBQOzAUZ^ zoST=IQl=)54-Tv=D}JTr>!vlFVKY=xly``5*CkCCNY>F_XmU|<(=VBr_5=n;GVyvw z$h}lY-4?6~bsB2-U<|)N7BsE3 z9TVOI>&RtPgb$#)I!TPp5J9rzE{x2myviQJsO>P(MXs8;sOWn7TD|+^tpm8~(hJXO zbojz9y{sQ9EBvaM^zU9v zh{H~abBM@|zsF@q2D4p4rE|z`%V`K>y4o>1Dbj|2u39UUlj-QUZ;BevrMK61Kv5m! z?tpj@FJAmpT|$DN`0eFdl_W^tL=MWUV`5da8*Ny=5>gq7$m_gry>e=3(eAAv?r{;h zToP}TcsFsNe4_fSs3*y0q%(XbHmcdCH7cRp{E0!Qky6lF&-*1*s^Q5?H(TMDmKI)f zj3iG9k`YQ!5wACgB1UwaZ#cTL66y)`WfKUk~} zm|o**wOZhL_pYoaB8?1Xe&k7|SQ@rWqk1Kkj1yUoYFtp1O_4p~(HVO~n$;D5Qf7x{ zskb@8MK#HE74>qYg_%-T7cMUH)lY?b8;TG~NIH@ieMrOiTNade1cpk-vv+2MQ!@a| zr|~Fp(Q-+#{W|?5Di^va7(U=I2#+3Y=flFzkV5)oE@mvQJM^h$VY5|&;?VelvkkJM-c%7xNxt7k6n`-jwo6syDBSE({ zkw=mHi!2)-8#fP=l;Y_qNm65xO8E89w#*trL31W?c6()nSZrUW_@n)j96ok_08XAX zP!VK6ARi#V+wl(F+ZCfE?Ac_>6#>(dB|f48$|q^1Ug|+Mgs$A+pY5X)LgCF`pA+Ht zs}mvf`6xu1A|1jZw^Twhw`MNQiV6D4PWMlzj%?QRdw8CF6uF#?*!(HHUadM!YepEKaFY$-1Wf7esz7rR26SqVJ{qj% zFIWId>-i!j4;79q6R5*ilBv-T*(;mw*?O0xdEpkB-PSXLCbiAM+R6##20gZ_%@^A* zQAPs{y_^#_k>#(O93VdE(-j(MdzE-pQFw~7E-N_U}j=m)nzO!SBO%<-7Xn=~n)aW9a z#xt+`lFAFJjw326o}`&8{w>1 zQgnq;lX)S(Dz8?iV(dn!ykEEG3r*0kt{z`bnIX$*Bf^=al}L78JpA}AwB;GQcbKV% z4)1q7cJl?sUeGaSV3{%PjNw^soDtKu?w3@_-3|bp{4`Lwnkcgo?moAqFI_xyuJ_-X zkBVN#xObni7|kcP_L`w7tfYvWy4f1=c1ibj6r^qsJb!$}6>wXKBdr!>T*D^ji!B6| zB^r};sEog7QSm+rN}aQ_PMWgua54FoKL`J%L3?z^ESKO8gXR|6O4zW@?np}aI5RBX z#1w%g{-en!pIJNddFN)VPTGUg0!Nw6goaj`w-s;vurTr~o#t@X0Q&WZxXv;95w3?q zmbC3muV!I zOYw(D5?0n|@>g1U-~>0eIiB&lpFL_gj8Qr(8K z2dK|uPjGF?rBx6a!M|c-wCoqoN8_~e2LZ1&BNNl{d8Uo+#+L@h0@?LK)h#ug_?+LtnXw;_94m(Kv*x1jt>8O)Ed=)(=T-0y>gp2t;PD3HhPx|b*$DAPuo(` z_ej2Wk4Z_H$~6oD2k(K@8g+-|JKb3B(Y}OCZIm5zvYWplj&Eq3k`+=wNNtS(JNz0j z7eKE{FUEm|zFfT+tMm6=RqV!_{m6Z0)+1&UEK|Hty?v?*Dr;n8>|W(AT{9S^RpT1J zdhB4qDX81qFMK&)&z8*MF5IX;y$k)6+rer8(%#?+o%ecJh|GICw%WKh=v}fp_#ivY zyB5B~luI|-=^Mux$M49n*2uryni{9+ziB)lK55dVs1RQ_mLft#w&aArI*@YO*Iys} z>a3?Aq=(QfvuDY7E1!J7zHw)_OP@j5qv%OM@bA%Z{$%qft2lFTs?Reh4MKY~w3Na$ zsjNif9#DHu^|B}qAtWA|r;U*IXEAle8Znce7uSTZ4<#aHc@W4nv$YKwyvh89bUY}Q zwB@(M{C!E#<^BxoqLhcn1adTIe)2vZeH@$?k^vPAdTHwSN>mac{46ZA6BNJWIGo4a zZ~7sOCFh2+)ZirHG51n_A-}!rNwNMPW-KtH5Yii+X5icE^x+q7?4k%JO;4mmyhD3D z;S>ZX_Xe-{%PuYq?{BCma*mZRNV<4}$3tEg0WXv=5x2NcenIhSX>Ar*mO1f==W2Nn zo>yY6p4ZmaMc#M?kG3Vm{5VGMqPz;O6Xh^G%M%VvCXoAxk$5tAY(i4b)=KhSIxT#a z8cEHf;am9=1h}dF(89+Bkv7QXC-eLRx$O;oLaM>vviq-%L$Qs2G2C4xR|2CpJd0uc zj9fec?0|y+5XHAZd)KW0eA{+C2nfEl?Sv$vK<cf_xZlQVA87t`( z6N>3^%*WQFnHVc^{aU+s4v0SIn@mf~4|5s2c5FtOpUe4-2Y(*PG&Zpe#p%`KEOcWC z@BNHgy&P*(3%cxp?43OwxPJ!spnL`c2@w1)ez0z) zR#V10ZK4T7nk4Sdl4pY62W(^rt?QdwJ8-#(x(p1C7h9-)PVCn)zdk#JK$fnoD%)&CD!Wp2YTYP&f=C9Rz%#v>wYIc6* zkuGr-GpT+>kP?oc?NtLu*qnl#68Q#Y|&wM61M zOwir3>Ul?-us+FxhCqqJ3=-Msv|3{5-mIJ}h-U4L!z9r<5MoxyeXh#3N!eQPB+rFr zEO+z?hU2a341Z#noX@FWmY)n+z=}~Wjw#>>j!mmMqyO@GP5$xYjGnOSX(7|Tgqqel z!Cv3T?>XNo8-#bc1{WY$6Fa-gs?!xWv;btYsiD7$u3))_a>|)^1X(S|J}5eHx!ad0It#eF`>HB&UN~zO!Gc+gaim_*)^6; zyQMp&v%T-ruv|>kUy7}~5y2X{KCY>x!v|)65o_MJMO+Vnnx0^8vcY>D^MtN(_}fc3NvKq}Am<@;1aa zwf6UwY{G`lgA^o9^!xvX^c9#4Lpuu_fQTX7qlZ=dM$e-ht4H9iqu zn443nb~)b5w^lXY9d4*+wf*_lkfKt%pe%nXOwtlQxLb04_P4alhpqm9MTRu!B_tmQ z)$uAm*q~IUE4YpFE&X)nweVPmHGQK*1g#~6J2qLaXF zxt~Stb`vgF;DL~*x~O_vDQfeljY}@ot*8@Q&bQfsRz}p8c>U%Lc@~{(Hx_w3>)zjHEZ+4=xnesi zVv0((T3|h~+A4ZH)uX7qB!jOYFkX8lO|c)IzF~e-B!1 z`sQ7F_F%F;1|$aX?799Bl=%}?(+rnBTQ?bJZ|Nv8!ic>`VDtB;b-?4M&|zORzW4+5 zOL%__bMUZ|*;91*>K0w;=YoHRhl2@$2uwX0odk4vk?Uih&g6xf^}W}liIOV3X9~=Jy;q;qY6maKNNrP|!6}ddVd%X|#D4(-kFYU{#%rzj|`ctku`ob`Uu< zZ$GGO)_F7=K*KR$(Wdp1^;~HeqE5BN9FuhEjCGoPpr#g&7ej6+ z1G@a(noftm>FI*p$JNzdinsACuG5JhU7<{Ozi~S$TrC;#nbU(;YZ9+24i1h8Tn~56 z8w)>^+J#gp+J$UvY^<`rKkP62amrz|CclY=xZhH(QD0fd`l~Dcja5isvYgonqNj_V zNDbNWS^R+JS0Gs~Dm=IW0Vgvb8OIrJwB49v`OxK&%!1cZ^R2Bq_TyURI~N<)KJlJf zlUQByF!KJF?{+N~gacq~C51&#CIQqal*^>4#<5>Dh74YV2^U{5hUm9B#i^~MF48Lp z>s%R2f-d^A_9Ia*qwQaf)E`q1^HOi{_^=%46#z1RRwLuJfhm$YW%8(RUvrPf`aTsm zmW;NKsu<)}RPc@2YZ(0mZ9I-VZKk+;56=<@E<=DLXsjSj7p6K)V^UR^`pOm@l@Tn= z>heP4CzSPFuS{fP-)P_jX-HNGD`89#9Mr#K8)tLewl zJh4@H@Me{nqAddUW{`Of+lfIp}0q9$|i})?W%5t;$M@Vx(`~odNcVVTCVM^$w z_-nja96?^$?~W-wUyi$0T5 z^T?+>Id@VGN$7oJq6b;BJ(*Qk&sW`;lAYNaZt8EPzcfE@ZA)2ok4sbN2SkMzEVN?WV(9s;)O8qMxr^_`V9$%ddifbHty*TF2J8PD$(veL}Gknf0 zuIlIe6Nxb@`YikOGVM9nSd3QNVVVi8VVby`mwC~@zwr3L-86P%n@C3O0*4eW)|jky z0b}#0uT{Nn@v)eJJeUFNQd<3<)WQeoR<*ml%Nxi^1~;?MHKVw7TnTM=c|`nbO(^p7 z3yCUcMy4Khw5Z;zc&wOYZ{+Mz&t@M`v+pJtHfJJxv|9N`{R(tWWj<*5PU4qO_Ws7m zuZ}5dFM==Gcm4U^5Y9_i+i}Zp{P351_X(V1&cIK|LzBxA>I_u@o zzXNr@Gs0s^v?E7?PnBi2T>l0z6b6a+n?J8 z%<^s{y`GN_6L0-wkkrDyS9X&4raB5kmZ8Dsl+W_6BUX#`&STEqtAb;rjq}W8zF}Bhpsd2(dGoagkd1w~L#M)TiI4 zm%WpzI5`}8?r)%`#RLEH4ofzM5x%|`{g#*KT6aJ0%%Igj8)H+u??kv=Ox`%sWm^x% zNZumMV0D{ZM4U}DF|QO}kMsW6a z|JK8>>XkiDj|}npaU)oNT7OU1y$Q-kBwa425ARa*xdR*CLd; zxox}O8!miabJw2``E{D({BQ}@9>&csOr)H%)0dlxbU#SPxUr3nyV$vUUf!)t*?qpV z=0QF#`ChT<=DBbzIG|Y|dq_Y}sPiY<66^{jUe_BYK!l43f|#Td!lI{H%8n8XRgb4G zGQ4NnBLS&INm2r#v`AaH$&uK{8S-|u#0qPZZCmKNzk<7~5vg-+=^v$@?v0`L%zjE9 zJ$h4B!YJKOpD;$U}`<(I4$&yB%yhk=itzFq~+LS`wk0~YJPFx+lTTSnmbgDsQ z11uC=X+X@PD>(>w%XB5JYw^Fvl`-}=r;59&WI0MQUmvdG^k|CsJFq?L7stU?rxKR` zbo)tt8Bc5U@+7DHdi@elnvYNDq(I_yKZ`JA2m0#cTbDPE%Ba>_LQ!HAjqrj4Gv{x6 z`MO;8!wKCURR(Trt=>p<)|gzBYQ941aS}6H&B->QC#bOlx+G2y9B0@R( zKpd=pf>6r6c$7KeM&yP)zx)m1hA9W^vbtgLHh&YKtzlU58)N=*QhZqG-z1pQRx~?U zD&@aGnV_UULZ;pVBiYUgjE*skRfID`?HQ0V#}~mImO~PWPx>FJ+Wqih=m+jq0Dpon z2w)6NzXMfpO@wWh!Ni%31OQXaeLG+L8&w3mFx7`OgDd<0eKQ@}pq<4ZxCRFExdn9y zwKmDq78fu;BLxi57zjIbUuFNW_eY#M0!$58PCi-vM?QdvKqCn0{@`2Z{V^aIl#%HW zAZ%)iCD(v~RtrtA-n@OYVypvqpz?9Du=P0tG${%s%`5eA{MzTwBFDdxtGddo8Kh(A|ww0-T?^Ej~`z!9xjO=410P$ z-d~X8^8$$3Dg9OeT?A=m7X6d14~QsG0*&?j`YvNJM>{r0 zixzk@d$3d}=B*#MXIfC?qWThLl7xy0kOqnqAR{ra;8~G>2nqP+UoTTn_<32s8msv_ zl@(s^-G}OeeLaR&kJ@E{r$f^WC|_Q<0^KmJfr)+L$7UN$?Elvb3I=qEOpk*JfCa*^ zbfC=Bp1+LtA6Zoaz5Ms<@4}#Z2mBC47OnBWlogQ9zg}ZIu(tW_d4MGLW3#Yp9=jUJ zzrOu*Gv%YOxXq8^LB{7=aA zHOwe@ZYR+Il4b|&#Y*mfwf(oZfPoZ7gguv;u;)^wo0Rf@biwxzh&NoAIxwgmX+Ytl zOp%LBZC(}WzqkPY@8Nz&2}>P=5JF=C&}g9O!$jFY9rh(E!&11h>*di;S+1sOd${Y>}K|`h& z{UzAX6k88Wsi6_R`RxfJ0~iiX-WUFP_J1x-KLADN6_eeReBrUF+I+!pxSpbm{=bUB zesScBNC4Ri)z|;s%RdVHT~GrRd6=0^C&2Hk`NH`*FJ2Y#BQlIxBfbj8 zvZ{45>3;c-8}#t2;M|s`=Xc!k9XUP@jfoNOjV6=Xrq<8T%R_WISnSSdbP-n}MM4mJ z+aJjQ_Irm143(m0@MaEhw`0ygU#c=#9KQc&u(H8bXnk;guGlE9S6>mjdb=e&ojzxS z@28NsczKbvRge(;={_Mn&jx=(XQu@HX6ZUn07e_7*%uoW`xqc{=As|{kKqDyp{PAR z`n`HZS+A?x)$Jr!>5Be1T};Pdvo1Lw^UD0IN3FHNnHaLuH?Wnq*OsG> z8lF6bk6RXFrT}E>H-_H#*bXW7s2zj&zE=E)d=+Te`J8+;rcb8`>WS`R>XJ1HpjZGkPP=d;3hW&w_f5idD<750#2p~A{847Sq zLRQ`Je{UeW7_kV>Z@JlB?Al@d`_q{ci0SSEa)ytAn9bSVI2k4YLj0b~QE*2HLJ5x{ z0Murj5)dI*70w`_7xI)EHU0iYSPPPy(q#-IV+GNC+1x|2Y}X@12cR zQVcMZ8i3fdQB&Yxw_Sh>bPt*uiTDo*rJ=G@uH+bj+l<;-fF|AoIvYA3Y*Y=?eOKUF zXhVM{_xJX)Ghjb3w?#tG!e0agZ}1Ulg3wA$B?9P^F9Gm$G_4#x|NEmep8^bi36jbG z&zeBM1@&bK70OicSTC=+v^0C12cB%-M5RF~TG^`J_xbu_qG16yUQP>0z_Oa&LL87l z8wGHGcM1l?e}CYruz(M>_J@3Z2mLhx$w#8S(F9WpSui7A>;-Pgg4Z|gpJx=G7aG0l z-Js&od12KO7i?WN_N1dSt5FC)s0hCUWt`RAfkdSUfx}|GI zKsrL$SC`Jw^8%m1ox9bqO@0;5p9P1Brd7zxfLHH4=gxYWG;M?V1xGBzL(+0sIi zf2-Ih4p>yonJ7tb`>;+LezmyX>kHBv0majSy@Ksk0!w;XcaYE7iB^}pD}l_x`~2*0 z!=`NZz@@X>-_w$ts<{^0Nk6Kgqt}HsBH+dA?-HFX_8_hPm&DS|*$_8X8~9-`u#nq_Q>`7P3`ltn?vc2HCwRDg`*D8ejtn zrlr_n*R7=yC9TkShQG}Vb_xc=^)HRPx`r8VNH$^ToX(Fh9}S8>Y@NRlV0=h<^C|M+ zs*a*X&KU!JVcjxhyMNctK}-CFHPiF?ZUeE%Z>@EgB4aX;Fk+Wt=jyjMoznKrol%e{ zdX-N=IL#5j90~_waRHYVe^&h2A6720>m3Fh|+XwyRFBzyeXZz^mAa#A0hmENCy>?{<58?xa? zNdLj2(7^e@Jo@v<&TkC#DS10dsn3UwRf!|)Bn^FL!s0_MM%rP{}hJIW;&WVTE`zP>4VnnZ-Sq%T47Xxv1H&4 z7jJQ81!muIw8Y%TjyoAnXn(>d3C$bG#fIE5Q)tXtz0Ex;Cc$oy}Gx-?F(fl!c-^kM6NIFQPPUaOAbr=fz}heh!(39%=e>c>^&rBg&KagrrkYA=$tmE|-G$Sw+9 zE;^p=$qgH}Ww6=9*{c#`&YTL#_Du9S-;zG#pKi;Gn9T{C|K)S;((RM^>k&Pyq?sJ5 zqNtmj`E8>jZ)I9T2m7b0Sv?iBf>kE$T%VeU-n3f*r{p%Uw_}eU7RUeXLI7{F{SW~H zkrJYTIdN?PP2gdL=7KC6q&^JPEKeIiiRQOC=N+a3j>+@yCiSHg$Kgn%Iv^Gza32^DJWY~kO@0fpWh{#QF zn8_jeE=Ls;c>bXmrnf#olG!uc>3aqKBIB{FCfkFyCgbh^3VGZ+Z>h?3llF{=@x|&l zJcqKp=OW@0_EOe&VFY^H$81i`jqTbqvx9Z{1xv?Da+~yu(|IkXW^n04WOw6t8`a3{ z_e}Q3)eM5pEHstH$t}l59*AZ-D)A^P%%$KP-Mk*2!G}7RB$*rmcw@4uhiiB--Gq--R-qI7YNoO zzZ?Flee%*Fv>aFJ+Fvy` zxAU4JB-oqYPhe&ewweNsyz5Mwje6%C%a)TPzjsK4;aw|V%T z`gF;{X2CI3;K(%;{{no3f6<&ne!S(>y5gQ7G60M^L=Ssvq>9<;?Gir_P(`EBOVgOe zSN+*Ag8A*l>aBhmdRVHw_vcH^SBw#Bw?~VwU=fL>?DtcdmbrisNe?g$*V{B7|MnYz zEAS*X&qg#@^Z0$MXbW3Sz8DaDIY-4GtHukPp(RyC`BI23EFKLE$6UHPl@`t7>S5!8 zu)AiZut4p8Zt+hQX@o7{+tn76=Q)F;iQ3B9+g_)YMv3%AdhgNI2~DZ8tJSnuJ}o@h za9`9uOHmte&N%c&@}2ekWaP_@e5w&fOlu?gK3;{hd{Rx^!zFz+T9O(H@fLermfKt< z`NXhE2Y%yGT%|qsF6M`mJoOZrM>|KO&Vy4!iSeF9=F_OeX6w*w<9fCP!!3CRzcIpT z@~!wbw`2Q_6Bn9tC3W5AwG9m8;rZv7=%TDU=)k@sVHlr8U^l{&Y9Ylb+$8AY!9&Kg zGrZVoJBRr%j8iQcxMHjfzf-TbjxS@!T@0U*Wt)8o$E*kosCOq`?J$iP(7gDjoydc6 zyXIvFWx3;J%vPrEvPBh5C%7S9IwIFSZhFFXs$=j&9=d>f$js~ESxziLQ7qn?$u^I? z@HL|>zkZn>iV)yKA0-RYD^H}_nNq{ZMlXj(m|YAc8=@mbh|GIY%Ud2co4md}LlW~) z1cIkjX}M=dvueTS=Hr3kJ>Kb`r5ak#0!%w4z9osc>S2B1FtGtM7_1VFK%;mn6i@+j zEW88@o!gr5(&7?b^s~l(``A^$ocLaWTL1AUG0=Yj&Zs_cIu)K5f)t?>)jq!+Eo3Uhg@{rzh;$>LR_vV?pQ*HtVBxJ^m1uU3{@ge;7IWRkB zV5QqaeeBQN9jvKM3Y!oll9Uzzwy)xj(?sva66dzWWvHZfc<}`hAMQVxK9`RM89N zuNgOSRK?D3LdeWlwdUUlaFRwIx?*4|Zs>>eVGzp@UIH219l*ETxoP{a>@o?r#1szm zu`jEtuut(%K3+`7Ptz&SW3&mJC%G)K9z7IwLpRIhVcTh)s|1P6$q4mNEr z=miL5Sm9Rei`;opAN&cte&x+KQ9ZdB;miVq<-H%Fv43Hz9j%F4#f@eU^d~&L+4(WK zEK18s%`${bK{wi%#Tt}dcejr1Cym6ACsTLFV?ryBCP{zrg}+4ngwxQ?xJSP_5g*PB zkkq?nb!lmeb`xR_&omy(a5o-f;$Su`8^AsRa>%DZ0y^V&J*ffVkb!L|pmM(8qphh2 zod=y{!h(3A21%icNhOL`)kmANy(t%X?_)XBOtzlC4BE0L`hJoC0x@9-pmJD$85ju| zyuJORei`4WvT2+ODtCL}fSo^my+62@$cv8TE}^Z)G8y$JQ_g0%I~(!T%&zI`{LPY`^+dQFOqN(yA?5S) z;j)P=3kbMEuweN&=bjJkZOlPWM;K-ha7or8)j4Hd^;y=UI=-FvN8HZ->LP5X3=kn!w@nXH{)(qU@ zn-3LB{cBqX1!l2q4$)tp+MoM|8Tt_Lv5HDfQJXt?!)mEDpTN&ZIp?)iYZ6j~;yx92 zfM|O`3>+L+>2P*byxp1GS#>?$hH)e9(b1y`C+nTjI0W*IcaKv(uDaaDr{<7p)4!GW za3q-q7s$qCDUwmP-Y1OI1OnULGD{y^(SHaicXZ|AkY)%?&=}g zoqmI|*`gC>GH3z9zI+mg8`fu=kW8F$?Yu-Jz$?Juj&L0+jW1`e@HU!LBCH?E?(aY# zEx&P;Qb@v}Y=F5k>t8Nrw+~)X@06M6|H!;*d@Fq_+5CRA<`*v&&x^$!i}*WBnZDgZ zN*6mEY=yI5cV5)?h9012#wA`6wZ6C&V1=zauZ`8?We`+vCq6U$!N%L^YS0y0(hp1>v^t;)%vXLr7^`<0bjn` zenY!zChJA-1#`-k=L&Y*Y#m8nAGzXM1r5ee`^;txNq0A#XlQTl89)AN?L55~{itVQ z0+l8JTU@Nr8S<|!Hbepl6PSYv4U7!o5kmz~wBW+q&~4>@Inms%0Es)~NePq=8Bdg6 z*16t(Mr>MPO+gGJoe-5wRbyv8|DvfTXroE;R{HtJ!b;w%d5WHx#CPfBZ}Vfz-$e;o z!scuRzzz--$~pnN+K~b=Tra2bD`+;gO4j5g34ff4h56?-PzP1HR?Ro%KXaXxCJK54 zcw6HlEiIOR0Y8sXS%8kW9`$KtTv)Zl`wILqYiBphAJJ$0ZDKSy8d!;K;B8bC0Mdi$ zPRm~Ud@M4m!PW$Wjg{xPI6?_MtK*kZK8g%5crrrN5p@l122eH+%=3+UV*od6ML}~N zDBw38(*zES*A6xP0>6W@jqkZlMgJ094cLYp3VEjBQMYersV*>b5vUXMPliTYjt-&% zV89#fj9+eGd{PCXbaP7q36it$^tFNM{b0PhC*sc{tn(WVZeBAxgM((7j?YzdI6Js*qgpP)wbS72T| zV+A=tA`b^~0Z+JnoBj8$^P+@-*Yhu7{J+dA=nz1vwx(8o7K>2iO*eEWM5Jm*0?6#K z8xMdN-~ppZJ!C5k`)%5&DVvLZp!{cHz(#2`P(W9vaw%zim_e>vQ%#F(&IEd;_|(Fw zzK#+v*G366)_fW_L|k97a-o4A?Ccl=`a*%ym)GjXTU%deW@#oiAlKGdCNfkGo ztc6w#x#3bvFMBwu7?i%#!^WAgvg6iC4ECL@2S~a6@mkOBuk~Xv znfnuXRbOuc)Pwe$z~gejZo_`)1TChaTy`0FvdYzJoRZu1xF1~ZUCZz+z5RH z)O%KlfPsa_!@pcd#sASNNG`C*j|b0ffh-0cwM1liBmH%Q`|F*6h=I%pS?~_{m~tw- z0*GQD<$_zX|C07!)(s6t?YMDvfjsb2In+;Cn0QeO|4Wts`D>60u#!(DvzpdGaE-#5 z&dZG-|M#LsQRNty@fbefO)r689y9+n-v4;*4MR9W2`CBtccAf)5&8fnj2SG#cff1< zIRLGESx);z>Ax350gNX(->wVD7D56{;}vC~^nWi1f`YA$(w4%3pJD;ndV}BFW$){$ z$3K&$M}Y`(mUuA%KrHhchw*>^0cE^F=E$(whYVF->{S1f8Pw-@1xsL~?<1OUTN{J8 zI6k$A%l)KK|D>20l8H(uQrFEXJS_)6;N*9C0pCIY3^jrcc?_y}0Urk{8+|TiT_65| zi-DE1!m!Ziq+v6&frL<6Qqr9vP|4^44YFbin^8F!jR>FRrjU+7Syr-UOs0*xhp+=Q`!_sWsuW77`s_12!kCg8Ol) z2j758oev(6zWJ+s16@U_j0bL^*Ka4m1-ruXE#I7!^hH}jm4^P&LaFeEnL&`HR3Z5iXJ7>v?@luxAOWL(phVk@fH(8=;R2q)ALYEC zKDtMXdSgEWu%!JG;wO)<4S*~oDZoVcI9kJA>Sb3?J@KGnqA!pwy0*HL zNRa>(XT3dVJto83ZKNcgkZ>FX#W8|R#?*FrX6o7!Axat(1 z?JKQNj1b>qx&=QCx+xkTztZTK*c40ag;W_KKmo?NP_l%2NO7_15ZeuD z{z2*i2&qpdFi-yZh)A`}*-~b)us&_Zdfzp^)8;L&iFmR%yR?{El@%U8vEExH*>0DT zK?dy(az4D?SAPdJNOhFkmYj$DZ4W`fw7x6$^SHN9@Cco}{}Ok5otK=5r@WV-ZKCm zq;)Xe&w%%tilcwn*QaMNA`r-T?eb#B__^H=Ku9@9Xe zcJyW&b-E$@AkC8S)R)VaUhZET(ci}LQD1p0=K18{i%7v|5D>`c(3T*qwNN8{A$N4M zyt_uf2GXLYBtSbm@a`S&(P#9oj*N6>k|eLw4tRb2(tQ>;p| zrku?u-XSd=NA{4qkRy%diZ;OStK*B!J7Mx$`9sBv_&!R1%J9046=9QT|R+#nxbh zl)~3)e5I6JkmhQC>3OaVHB;f5-vP6$`hC$l3zKvPU-i7pn?iPZHiJp6BL=zBZ!#q& zRq|{MW>p^3q_3;q_}~cb?Oy8Dm=E&t{sS@j%o6P0_A5G$hrsED!v673hr}tr>B|j- z5N;vUbek$gd8k|JGcaJb$J%P6UUe@=1S%3mNmTb)+~fmna+(iI*Pp5}(efD>xNOs! zlb;gZDV}2j>P41{Rg15G*GRf#Ow?3STZjy6lhxc{>q4(bKp6c z==U->8an4+uWYC@$Ut(S4CpGeRy=d6#wFhh`p$*(|#F$BqwcP;f}_Ev_khQ+p-hdn)_nFDH+3Ck2yGWA5?pq zmQU1dpUBZ*H}dO!$DD{S3y)<7Ti;#pAREJn3d@4wL$o<9r$i5H&gymOB5Ei|ci6bqp8Q%MU2IbrR<>rvg#uK5G@FA?mXCY*M%91i_zM!} zd9)wBd9q+3;#e#8KCbOrH17pq6f^fw5XPVEB4Y+vfr>o&o!XD$*7Q>!B$U^4o{i<^ zkul;TA`sjpB0_+IFuata!*aKv*FcrP0*}Nf`FP~+iasQleEGb7%W8?G!!(@fN`xD=b7gWO;!;ffru~k!&5y&1zPpgdL`bGK1 zUjcjE+lm+=j~_c^eU?lqx(m9!w``cTvs9i!-9)NL)A+4PR@s9Ik85$6;mKOxvut`9 zDXQZ(0-})Qayr%Yx#ino0x@|F6u_|+SqJ2bd)?69 zkoGTY(lE2bs9Vi_-+P#AEzz6o<6n{uEM@r zPtuUbI3J0;dYxyIEI_?i=H!&*?vH#M!+>5Byz@Kt3x%_zqbqKlfvpaQ=xj78UYm)( z4*vO2p;WZa<}N=GD+ui<;_&UHfuSBUu1@y!d*UvuezM_$GDG^F7M;R!8q4k~d^%!>z zGDv?h=CMXGg`mZ)|2B4U>Vb)jfO2E-gEIqv zebFUNnyO;jeJ-gNLP(2+tUNRy5a*oKrv`9TFN8vv#H) zwR1H?W#=pEIb)9UO2(Ve+NU+tDb}KME+@?zF~ZZYT%to)UBqKE#vSga2w#cGQ>EkG zj>-`DaNgk=cVALu^TeZ)eOS@#glZ-;G4JiD_1&-*k$Mkx+Pkx2S9|o5SF16`s*Fo4 z#;n^1wCZW?ZfLp+EV2FZ^(@&9E@0+zrr5qy&#wuY1LJ29+Hdg(XWh6v9jb>7V-|Lsshs0n!V7wPAR!D7Gx?V4-tZqs zi>a@?YWeKMD!qJDs8@$s-XuzISMhNAesqdP&Yv53RVd=rJksbuhQA&-E3h6=zOb%X zqnnn^p@V*zB4iP`=4rL*`qV+lpIVt@M{zriUwkn{{-eaMjt17qR!XbbPSxDjh=1IE zPcl_1j7l>jf+}jV`TTGz#QmgHWBp^eICmtBTP0ztnZ(XAA38wzEZFndwRS?tYQyb) zFX(Xb{^O4qiZn6dZz69>)i+D+udqfqKPIxGCUc^|NUmpr&G5_CIVx3#4WF0ZJK1yn z+L;^8R&q(R#^{=O7I&{b??QXaDlf(Om%U(LQ=Cr+9loGzb6KXfV}iR|-hxLdKMZlF zOSb~u-7oq_rB8J4^FQkGmwOA3zvtRR{Mlenf9F72Qw6ai3*H#$6T{4X&ZkR3&NtG{ z*KY)g>ZaXXz~96ohRS{0GfoPSw*fxFMx`5hfW>B=a6rKG)-ajpZR(}JX0Ks&Rq}%d zD@ciO0i9byr`%TF4 z-Bu}7Zm3NM#RVa=7n$r&GZ>p)(c>xXW*mpKh{o%}tv8{3z4^8?S_5uzB+_>ToY#b> zn-7mXgpx`Jw8XJSV^!Jg9EYVuc{d$yZrQ!Oq&$f7#Y(O(wOtb0eP6S9PkS$R%cg!( zeUU%*N#Wk0&s4|OMxs7#<^06pYF=V&ez{%!@LBv`*~t3{;pS*DS~6VRg#1!(lpKX& zsS^@tTpaHG-qbh_GUPl37uosB))Wr(?>{6M5uk{SWqv|;Kp+bvLppVOlEn*ky=aZi z86SI~^loHoH-P_v0{a7c!+WoH#wpD>eFDEYL1FhlE!PJH<6;O+!;Pf0?|B+Q3%`&?(*XoEd$Ih>!p{73691UZ9pzoiQi zd)!#)3#Sj*AvITXcrQ0czfYZQKJ%(S3#ytaFzBt<%})h`wH=Du6xvo289?g@|~YtOVmkC4h;A!NiGx! ztsv|Nc6cC>`Z8QdiB08u#jUW9hKIeuplHDS;o zb2~emZ%%(hFbMD^00;b6(BauxGxW3w@6bB==AwMIf%|aFf%BvTrvx5P!?}Ni{ zl=mrc1glk?EOu*!d}yTy^GP3@pOl|c4mw2TBY9^ z11fNmeU)a!iwjFx7`(OmN8bX=)aVumYaqnUWMrtBwH zZ*3t|>(Q8gt)|-X?Q!XV@gka{*tj|N$F-B@?th`ADEtnFmt7`xKUW9P2(m<3(DvdB1E^C`eTT{H_dOkv$q1fJ# zNNUi`?2R7mQC|=Ng}O$|G6hXm4PYFf+j+LE5E)3k@T`VEg@HhkX$FKUZ;}Wj=ZbL3 z!3tiBV)E1<#m=3L_qzi5)6Cw!E1BvaFD>;M{JudVI+Fn}K}TQfj5KOHtv$UjEVKC9 zXmgy)(Ct;3?@6<5&V>5sloIxpYG1rz(zQ^EBZ}9{$-W@1(}c4%3~?|xRw<;WoXnl_ z=;)%_U`efp&ncSMC{r`Xb)cVhxvpqOZqvFeL9o&N*I90MLE0e12e5=C1iZvUgrM?T zt5F{-vJ4->9AIhTICI(UA-bc9ssBCYON`UdSiZwC=nTt1Q4Lr6yhD<()5}{pO8U)WFI#5XWK4eCeyGdD22d=YiO46#sxH?D1~-*N zC}~J4>Ez- zbfj$jcG@|BAI#|*?c+-mz7j#F6z0#q4i)%Cu!%ram?e`1+#3+Wk*4}85_lo2^y$3A z`Q`dg%HUf}4165aej)}9q`oI4+5(@qT#m@0+>;~7AFnP1RebO!=i;AwsN=?e4o?Ve z8IYN?RKVz9V}0s8doPc#rP|w8{=xm)*@fi@2FS~3{!?NO5UBJtyj1Y=A$gBl$kq%E z+D>sz#&(d?TEEAyvvpRgA7|(9`Osg~@X)61mv16HqKOR}I9@iT{vtRfdPtFVdQyrD z>2jkUpy9n|F7$H0Jdt;Ss4YZzoPFJQX$1JOe><~OV(=^k!rW5jyN;=CtKYJ)Bk^!x zgON&DJ1nA>MkX*%Oe`iIP|y3KsGU!B2KQ4yqo!xdya#^9JWS4$kq?JWonQUfU8>(J z`je`%IAyT>$Rcg?&hVA9SV;b(w!v;S`4kDt`M{rM_FhLW_aoiZ4YC`=U^7Y=_cCfi zVwuQPUubUG6>t5jINX4_cCo6?p_&Z1yQ_@ii@yHZpJBae;q;ZGbE8U+`x23PnJ1s5 zlTpVd(|G&mQ>NFBd)R??gz0tnux`taN*MIK5+6wqv78Wel9xY zYf{9*{AsGwfiPQKGhZA?IvTVvtHamQj#s$GC(`HMPLe|l{BVIA9{_gEt4hAkMerl$`J5rU|PtV>IuH?U*7@km%L{tAkhCHqi{95o4M9V zoHp5`Ija0ar03t8g8+k2!DcE^W{bl!RxPZTzh=D#l!Z6Pp8pAGAi#74LBj~dIp)!h z4O`*Irzt;LvLC;VYdYs!rdnz%4_c4#sOBVox0lj5`s-ufs&C?ni2c%;4w3qW2-}2gUriW8nlo8uFTQ9qKIjtDgaEvK=pOoj3v5Aj; zt`Er9r4*m;!sgvx=xsGjb@E}&{k1k7fti>uisV>7T(eoO)|Dd*|AY8*Gpl8~qxqeQ1$H35CC%v*7dUHKZWVP8iBST`K$@Zq zI+Htsci;Ftxx`UK6+pz}F2_Vg-+aPb=J;8OIZe`O*L^0;)iJs5P;(e+A*Y&ck1e8+ z`>jwoO?(M|jkgVd-u5x(JypUm^s%khC&#wa`oCD-Z*4q&%jdw)xTsx6*Pu3zZ^L@J!z%{9FbPjr2WN%c({-UFp79+H)*2{$u9!FcVBt@E@rp|z zL!RPQV)RsnQ#FP|g++3;USg->8qUj*rrcB3#7d~t$8J|VpDj?#xSj8pFpEa@E{-3y zoz!a7q#HC|-4Bx=ddQHR?ym&N$l?mOO*WOjPI>C{?Z-RXAJvR>PJ{5~Nn7-}Is3FS zoW;@@Gd4Qx)e9P#S8nH7|OchqG&lJXnNL1> zD)uU|#z8JNyP@sjc5Sm0VA zxoV-o?xX6bMOZ1;f`;PlwW$~@wD;+FgB*}@_z*XP62VqV#$Q8wCIl-5vB3h@I+`Kn zKuws_0jQk*)5KY3G1|pq{9p{5VJ9l^7qv67AaG-mNJR2p)T=;0f>d8_kD4+uh?Ffn z_124;GH9AgiMqW(NrhO6qTssRmc8Yk{@;!hrh+j>59?ERUWEL~1%p=uy`-r&3Bv9( z(EUfh!h7`QnqSpZ_h*{m+UnJY%@q&Xc$zHb;q;~40%QEbpcjA{8tBsiM6qiMF{X&B z00GS*fApXIZ>U1p*)`n}Na^)LgYutd{ImH@fSi7^6nf zc<1>4#5+s7O*ebv2GBGh^+4@^a?k+Q+RzL@7x>*H_rIE>`7Owu!_DwyvFfzhQ@n|q zRY=wWKvDVs&;blI6$8YPS%9Jfe705$XjLZdf3^;gU{0Bi9%e*PJABz>ny7PP`nr1$ z1|_290;o=(9spDdbMw0~Z&1;?IYt;jI&(4wSWed@4!@6^m|qv96JFk@{4$S;>EM~j z&-bYfx#{UaIWdGcQPh&TIpNvOTF~QG}bdzOZVJ-3-HSOsQzcX+~#|z!t^y3 z)j#hK!T>SAQU|{P7tDl^#-tDqlkkfU}EU+XQI60l+IWq%BmCNd3P8F+^S@#1Q}AFqGhcXl@k5MFRt)h>4$yCp9gvm9YN#>vhtbR4QOm1f$IC zgx8hnZ|#MTqG(~~Y^Dk-tEtogVC|6O2(+O}l{88Q2QI7X`{~7de zxE$q^P%C*%8PNjl=sAin>C2XW&C0KBW{@6=<1-uCk{1Oof{?B>dz_dqD-*fY$I^P6dI9+)#>dvPPHR(vIia(*{%fJz9RFg7EuS@FB}!uB z3>w(Lot%n`?*MN!lLk)!GJtb40xJ7S3H3%R-WU{%30?q}0jOdU?BABYuU~_6nfvrH za<05{YqU}(^0@#r`>0hD;JdDVJGy*_VMCU@w69i2fXCybpRh`5S)M+JaY?KMnHgYx z{qv>3Th&n3N8H^k`P=$35$C>|RnA)^KWaXZU*Gnzgx_Sb_x}%Mu{)2SruwQ#@G(F2 z{Gy*E&OFvhdy^jx{B31N8`uO^)FyB4D<2igD4OrjK^u5h`KX zxG&R7GudyyA#5v5F;pb$bm9jxgTu(g^nsRSsQ^H+l>6n`@1Qm_3dOlpQG9WYw%XV8 z?;8(prqv8zn6vqEF9Oum|NT3FyEzJO!I{y>04*CWTL9XhklZM#VLqRFh1wW@lqwqG zHO^hrI;m1%Znw%#P|sf0hybc@ic)Pw;yc?k3a#&sE^d>75HG!)bEU>P+E zDv*G6P=vLhPB$nR_-{!>JNw_B0{F*NplW)f=H#ko3b=7S$EM6SoH?0Y zn4a2L7e*729!U|3oD>db<)80}l(kPEe%Sa`jGdCta3sUG@e(($quJ*|&v}sqV@xvD z1`K9tC+EGPCr!1Lfh+59`c`*WzrBkbNs|<9;`-EkA4@k{NvDkVd)EWn9qPa(ov+NS zEySHChlT6iye{aN!DTe5SDxy=br6Z+fMQz~x66%_cA~5AsppA5>q*vevrCfV&Z}#O zM)C-}ee*mrZa!RM@QaGxhk6{Xgm5Mea&b=7{Y2mrXE^*aC(j!vIw#4pzU(+jhnbW%(_%2y@G?__a5NS)hUXSTi^EZx~nX7=2K@4(C3 zv1)D3F2xUBN>6mRdq?~(#JNY(ojr@b@d2<14%NL2ozW^?+KFd%z-1D7)-}8s^nl+2 z9U%}BPFLflpPf0tzPqy&V3)U|DBEoCgO^~SUrtY-XY1cSQZ!Br`B_Y2v>B)7U5=S> zRRET?K0Pf?@kVp<<(E@%m3i5bk6)lVRbenwugbGLDNQz{QC;*08H^rbt+KP5PfAxD z=<>)4j02kZ1-kn_e63)9z*GRlm`T=0oi@v99?hz4 z3v-7)nf^z+g|Uini5BWbXvrtv=NNx{_{BN$y+-e_DLGQ(yUhhmctLf0;?qg{T3Ubf zhF)m6tceJ$uWoJqvi`3;rp9Ww#NNeCzmB{Lt&m*#|=j zrCXg=hKMPgfR&utl%7^=H@j2&aB*+Y$wN0nPxRXP!jA&PMAodk_a0 zs`(Lk_Ea2a2!cGRztj-Tx{_cxi`YlCX)*3%R$gum{DGscv+X|u`bP=Fp3P%Aj~@KI z_bVSVG7ocgK|4IyRwp^xaG!~WFy~-1r_OL}$q6x0R$`&cGq8UuxD0-TZT_`1SVbB~ zqLW|`Rmf@g_MuA;13)$_X{Pq&B}FJe;=BU}f6vOvSA09V_S9mdX=vTi;BXiy$9hL6<-UfrhV!_cljer z$`!p0dcT%i*@Up-4~5>?VC4d7pJo4w#60slx$-vjy^<4Tr93_@=iJ^c>pn_dc04|< zajSc4#@r_k1YbaOwET`X4_`0^!w3vOX_Kg=ky#Cd49>3!%w#BWm0$nkvI=X9CU*97 z1@RwW(w6JTgOti+SM5xpe~A0R?3F!grBjMG_QB;B*=b;Dd0EA{PVjl7`7FzXikEX2Ds|FcbH zkTrT!+fQLizZ1XWljAZq8W^-EJ&92#pb=;+RUT$e&9j8L3 zkEQrG5@>Z`@KVChEroW2Anc|RWhiNA*=(`imqTnc@v$j!B^P+n17-kvIT170xaGjU z(iRzEaT2WsGUEoloW<5-f%-sJG@%Ac?o#$qK zwnu?9*+>lAi9sXoR$XMj1@TWMd)o#ECaP-uBbSI+|sC>H*!i_oA3csuanE@YD8Jb2y`kQa@K= zuW1L+kbbufUFOC=${U$$Bn~7q0_zGnjqZIK{4_Bi7#e|B2tP`CjVq{<9%;@^%|+UF z_emvP1$80#BR-@ey}jbK-@1ljJ&Ot(nIsK#B_M|<(j-Xpd9jt3?ETPkqpd01=G=r4 z`;)myW|pHL786#G)^KuUbYK-5EePo6di6T~F%=v0y-3SGo!*l6MT^3fjd1aH_j|a0 zr*~6}kM--lKHWI$3_HV6=3KSdS!MYV-|>a3RRqRBD%7OXeDvltJiIk~hNi|;!;$*!`G^t9jf(qMzh!}Du zi-!GpQl2!OkP(u_)2ErEtyWog{&iV8SlXxZv23o}gVW8@P-fxmmt`GEu7@BbsEMX6 z)xT%X>M8I=GE4iMk`67|JsH~Pi!VaVif&c03U(;%{Ymg04k*+MwRR=M?N;~Dc`kDI zAvRBT-Id&%17Hn$@grpa`$DfgYITxJ}C&Pw19x;x9zlYr5hpQD+pu-@>-`k81$Rh zPvY2L;YbXmSd8Dua^SrQt_sDo3xvOgMnvbn~)W@e39eHWv zU8f$*C$!db)arInEj+V@cXHOC9bNaZSs0fg>a%a8z%+46DXv*T{R(@u^y<6)EAd=$ z?Xj#aiS><%!}n)qky4K(Ne|SDceV1>Hhsx?NjSbS^GzAkLLn>ehwGkwHSNyulj>(( z&M=}BQVrXQPw+F~q`I*^_{L6bb2XS-_%e4jd_Fl(H3GOR;~zWc1nk`HBo;R+vzx+S zwYt6`{*_aYw!$B`q$mkT@*7^oOBju4%{M%K)0XW)^ZxksR?0`Ycn2mSE5a8FDTr@* zrjRh)(&>oDza|T*Js;;Jr7pGDKEXXii&T_KuX8JKEG*M+(8~uQo5LPy3fjG**}t*& zxOq^Hav}3g*O7w(id_7BT%#iTZQ$yu8ee(`K$Je&8xl0m4Uvl$-xR9h=4jKxKdGv6 zG)fjH(jF4!+GaN}nN;jeLXy4++ljjpdsBbNS<44A%uC5X^|TGdDV6(^5v@=9gk@cE zem#HqQ+q3ukO}<@`GlaC>+?%pjYz$eOZ>AI<93VrCF7lvH$A+Yl$)<@PN+hjBAkd6 zx{ngJcb1Hg=z|${gI;GFhvZGKtG@hx@CQk{+q(np|6=Yfqv}eQKw&sRL+}thSa5f@ z5Fog_LkJe!9YTNr!2$&L;O_43?i%di2PepZx0#tccjkWY{r^~dvG!SOcXxSLS9f(S zy>MqShI>m0oDBNLy<-wPY2bVW9B!^$XbGVG0%U)5^%`AOQ%BFPq)pjhk^HtZ$vhf> zUD&t-wg}82z1rWu2EJ`uX~v|?EnpuG)BQm#M6;UYg@vz-Ac3gIvdtFXjjk{eeWdNC zb-z@3K&UJKI*j&qnlJZ07G8EP6kb;Dk}aovfffAU)7L^$GPg1`^YsgCGm+aKkv7+| zmr=OcSAw{WmFpLHD1!bS*l>}0{Ek<~ zsOr}kcyNbpDAV4!BsOoRM!Eak5E+Rl?^dZ4(+cj>Z}VsJI;9#elCoaNjt-Xv!SC|! z&9YP;vgG(S6?Z`({Edd>9AVe+-|}z_SM~4=-TYi6aMlQsHax{1gra2F&4)RL zQ!eU-2Hy%%EN(S_l|X-G#hD+x^ikgy#>P!T^Gk>(w(%dVALKP)V-;`$GG^moM~@1IWexZTy{O`|0Y zQM;OK{~*8i2xcH1mxLpEW!ZrUWkRi~sb48T`F>}fnwtg!J#)wnac>}TjVq~mttQM# zVVyBObo6SR#nrBX$;H|NBKsb}lx zaqxDswQO$r_*aAYd34S-Ghqh~rL79M@aE&KKBG%$!fJAbjK0Awo z(-)yEeOlKqNkg=2B(%J4n>DnzORIwy0g@*M2iM6vu^N?xQH*It7L$&Y5i@i8Z%rJ{ zeuhkd&c;qtt;$O@k7$F5GVD@>$!FiOJ@Oapn|W;NrX94@qz4!tSm|G=y@L_gvwbEQ zqZ_sz`gzE4bLjGu+?~MVmDdML66@$H$lbtdu63J`MlSs)mms6nCgycaK|J>gH)^4! zn*jC|3WXh$)fllF@1`2ni`ZN<{%-({%hze^w~J+qxQ55#Aq+tI&IF-IkB{zI^MGd6G z#Il|H|o?*O>iy+pLag3UyA(Yn6!j;7( zm%-#uC_WUR=ll4l8e;G+pH{v-GpqUaETro!N?3)#XZH{TR|ON=B!Cm$kiFQyGdv;4 z^SjHv`|>a_SH?8I@uNI=e|)s_-e6}_iQ+NIxLCV&pjqN`QbFE9IDgU@p=6nQTKg|Z z#QJoO+t#SZtIgm&ShPCYI0h8d1GW_X47m#Lqd8_jqxj&5s4Lk2!^y+-wj%{iB&{%!?O|$)U3o%r&LZ(K2Pmw|KpV464hUUV1)5``IH8 zOzwNEG8$pvNFD2qI2S4Y*zQWrOj;_5&Y>q17AB~p!!+=I?P6$3OeEviTl@$j`p$(R zdptqw&;vOeW?TBEcoAM>1IRfw+Gg;Snz{M@mrUNxldbpG6$aa(9+)p~yYXLCwylmF z1@WdXwBmYXv$LI>g>i4yL|p!zAK+s+{o4V&1pQFW8=kD3V*@C>c z2aUq@So?CFnP?)b9JD~tpEKRsmE?vzt;l^t&X;kVR9U~M`&e&DDPK5d5L8x`D}>5w zlJY>YO7N%vEwNW=C?U?)K9i&x?r3gya+W;)AXy}g*fCp&p4)cj_@Z7XghW2AbD@$> zP$Y{1fqroSFOwW`R`wDOWR3;=W zKK-;FybSkMQ24^i8TFs_pgjK8fBi&OQa}HV$NM(k1zx>yR^suKJg`y6)Z*u^zSbLz zHRt3|*YI}HF60WB)4421L0ER&)(`>b*RJQPZxdCzZ=Ydba5pJZOb~Yi!7zZtMW3R6BQ7p*C4D4+l5~ z3At z5xTmE;U8x)6KAdL$$@}0DVV~QkI(i)8<}fy)&tx_r9+cN3(V9FO5e%E+SNXB>M^ly z&fT1eic#Q=LoE_z9vuTMd zBbrZ>nl`;?lS7uK$fcAwtePWr_N51FNpxy*&g)}hKfeZcr|^WB<%OnP+_n2!uK+yM zieV0dw@%+%YB3acE5g_j=S-j-&!O6myhB%XH_zDhu~iK5E6^}yZ?4W!Yg6+m-UUO6 zTDo56MqJW{Hp6Qe zWPhk_V;oB^qTools%VLE8Q+8+mY!Zan!1*_d{P8XGp6T5xpN)1nl%NWC_@{2XH}M| z^8K+@%RVR2h1m0&yKf0+wJWT3cagz!Cf1^X)`RP4Nsw$Ws?Rs8<+C&Q?&syCj%BjV zx3@3yAKxJB%sJxej>Hzp9WZ}wq@{?h=04A9z7vYj0L!7=KM19nowFNW3(~}O*i1=2 z?8tn6Y)&}ed=0-C`BwmH@&6Nma`*z%%?Dy`X@b#O44dUqIe}M)2n7RyLF(03b^Wrk z-dW+|?q9)M@L#RU#bgH@*00Q)p+$*{$!k9f4F9-a@v8Q(`xTGQ$;wm=)0ldeF}*W^ z7}bJXHx;^LIu@leR&iU5yj(ed@v^jhgXoVA2I-3{ z6uZ-I8?V}uer^7VI{HWqjI~ssA47~3zJiRYJ*dWf$(*x$pFnJNKe}}xmC&qbgO^D~ z?Dmism~Or{v8~LmpOVV1cRv;c*E~}km|w>Hn6|k_^YxyqXo+xc1NAb;7!D|mV`D3k zJfv0WDCk3QQSBJvRul6mGcjObx;$|2soR>Mpik1W&f}{odq)Akn)B0Py}QQ8KS4$x zjpnP!j2XG2^F+P87kXQ|ur}ch>1P8g;f2Gb=LIukI(CG|*l_jYE%?_kg=D zmiR3YTb9R;=-PxeY%~fHB?Nd09n+lPpY1C=iZM_zzyp)%mKi5-+21up>{00173Ew+ zL;?*+qhawqc0%h~v))XS;|`d99)fys-SOqVCn2LO@7K*aReZ-8MAEA8jUM|gPz+%? z04Rpw^$7pgjb;oZO41E~7cbfnMic`xD0tAsu-oDjvAIrOPA;THh12;lp)j$4zwQ`% zFk7-TQ)i>F5V2Si@R<<}jr{ARADiC`3FNc=6C|<@q&MGbkZtSRpnPT}P@cPH2M75x zIh>T1YY*tGSxJk-*Yh2qeN^7;GB92b2tQP{Xc8y_oj{~Ap;8)0q@cKgYgEv<*??Y2bd2Jv%6tmh}u ze$!o4pIYvdRQ?!%`n!L-wMV{M7&t-u0@UgNRKVES&KQjPDk?JAQcqxdHF{wK=KO#RqrWPH^4O(7K-C|EB{H6vwo?Q04hPmk^j(FVCy=={?#k;@x>uBIdRj&)%-vQ|;4A}8PWfw7s zdo)V1Eh^6$;~wZnhD?7YD1Rg2d;#x$_p3DREJH^) zBys(>gafT{%ih&)Bcs?K8mT6)aa= z5EU!|oH=k`D-K%@u>1K1AE+I|C+II*BDp6>M*1)^Lt26*xxNx!lW?B04Fc;d96<>^ z>#mp09-miz%6oLi(#WX13(&mC*hb7zet89ve0gOv1HcKfUr`v=puF&^BH5Tl>NLf)8Lvl0+1V+2?=%yeC- z5fnv+yME7|;XCVtEpHIFZ-bJq{NDCrCn*NWqtmb$@6kzYii@3m?z;`Rd{(S)hMjHS z4Le!qS!k(|e-4pisA(6%DtJek^Cu-&*k-4EF1#8r6MC+a|I*~tQAW|SNn6Q^)nx~= z+>9g1xi)XFiThLdn2}F(5%m;*kP(3m#@2ewYjs$hV*+dhZf}AlTc@R9m8{1 zQbRT8rJf_bD(l;QCCvM^qR5RS$CEh?HEley>IH z_}q&3x{^?4dt#jX&Da_T&Euf^Z{npe1Es`^RcRi`=sFK_S@w9b#El#I0_{gqZ094< zyonFmPzHv?hy@jCR+sYZ`)i7=INpX+%r3F-M+M4&6cyy$8qQ8`yUh#18vjh;DMuxA zB~fFynA=84?`gh6Odk6zkBJu&m~(z|zv)7{-!3vgQMl=im_?bTvA-9)>xn6+QC6)< zX!*AN5}6fbJN>PF^uF@>?@}2FW#xmQreo4NUP~eG*SWL8E2NnBt%!BDPJ#%__WF z9OF)nOs1aJDe)kcPG7?e@h_mZy^LAWc$6^F<}s^_PgvMXd-@CUH&I2c>^db~j6k-I zM6s4RBx7T3bil;$z!5y|r;Y0MYNzXV?E67SPS@ zHa5qSRU4fkDx&5_B46lJb990YSUcCFi(ok2RpyG1^w$A8Z^yMETjtIz%-zXZLG*V!^j}#R_F4r^& zSu0)2yxE@P4Ka2Z!LBthB~?`V@M;o=ZbA?25uSs!-u&q;a_IBe6{y6ISrxa(ZMpo= z4|6!YQSD84`^*$=I&<&Qjy5FN(T;fWu$7uXcw58EWmqQ1M zb;^$ntvLe5;<$cj^EkkKBwr>Vg-5heCbKP;8}h2SqcDkjDw_*zn~he?+qh0bw;B?-1d_f;bPZ-Y^+_hF(L zZa;qWq#NJzl*Pd$ALznzIrB8KQ9em3U2iC-49o2Jd0!^56VHYdlNW2Uyq<3)vevLD zx%>k9Zuy1QUJau7EV0i)1XG1`{MTiV8@q;!`}f=ma(g?<-x`vxR(lt0Lt0Kgck9!z z&@1YtcWViSBf#=G$}yK(h&<%{K!Y)2w%vt;%gw&X zR7;}aCJk;Os${sQBXz2`MQxJ#!k zBfeijzfJUDixHZ{*GJ8jRNH7mEt|AfOl1W^&Bb6`TQzzFCqzR0Pt4R`!0Gg6r?&*S z3iF$;6_6aC9j{j#?I~+yh_;VheuInkCPbv5rhUOHVKPyr0Qm2rQg6@5Jvv3=rXY+Ga3?Z3+vkd_>p~t5u7})$_gW6p!pfA zhhp>;$lJ46OMGuV8c6VgW1cvS1}PmIKC`6XX-qDgNo@f%RME zy|H&z8eqwc?}AAy&6DBSuvTA+WcTZC@1?IBGfOrrS3li=uXQ0#m^;FpB6Vc0z-bkQFi++t8(y62%9PMBf~&(@)A$EVUUByBX0;^+YoQ{?c3=G*^)@l;U%(vS zuK=t=Vqj1~-^eg-={`uq;?g0p12qMmJV1%sksCGTRBWVTRLs3e)Wt9z@(nV5F25dI z>*gBb6c+3mpL?10HN_eJ7Jp3rEk0MhjHg_SVf8~cB37^&YHc6yNabLw`z^VFNI22a zU~2)Fq&XCw0@iO+<((%gsP?VFH{2qhT0E2Dk%ftPls)zP_eQR7;pXzz#S&qTu ziMi>OZ1Ii#t-buBnBJJX)8pJ0ebWdtFDH173^pdM2J$1yL3XqTj-K4Y1U7=BfP(X# z3^zm993uOnCaDJq}T3ScUFO@Fv3+kMBE|LmNkz!~N}N z4U~Z2zl!r|=;!4^w2F&6@ty3BnD~Y07M+MZa6kX18Lot`F8%`4Wgqv)D2~C2Y4l=* zPowDP;(bTQ!)b9%)*+WJD&Dr+T{*7}G}U5)4)U6ip)9eba+jva0=~VQAJV>;l{Ps) zR~2TwV<$7e^irc9;h)oIIu9z|KD@!2>R@?a>U|`}-(Ei%i5IUFSoq=l8R5@n%W+zq z?3s{epg=Rpwj4 zF!F=Ab(qcl{w%tiJjU-o}IGGS&uWF}ru! z1aS9r9n<@D{cmntfA+@YNM%r9Wr+GA_>a4%(!%TJlMVwVF30zfKUfM{q6EMoD0H9* z8^COT5PqmXw=Q0DlpxgbmaKatg|SiR+W<>lt=k*^OJWCi1C1)l?yYV<5ziH>O%}Dp zib2EzdPD@3G|akz6wG=)h*w^`8vMntvdg!dqxob?Sm}293lw78E*Y$5?WoCbv^NPa zhkU4B|IATCnq>#5AKlv9eD)(UQLp!i5}*6>ljKN+n0YguKM_jMFG-5*T$lwvX7rUm zgjtYoh2tjR#{M!^s*CoplqYCEY%P0k#e2ec9peQvL4eYYvm3Zh2e>8gBf}ldIP>d#q^Y#2%PNya1`%L;wgcK6I`ba24UH&TaH!FILIzFpChW9~ zwO`P7cAq)KMtrq&qN{B#ylHm%{FY0PCoCzcibum2bIo8#Y$9@y#nIU5^h%|%5LQ@j zkD#cctnxW$xNrs-s5xjWLKcKZ7?^c$TW-JNqJx}Iul4!mQbE7z;CGfWo~_B)vO<8l zN-i;U)LhNftQWU(_&UrPX9t@+_Ub;=tDGQoIZrqfxjH;e144kPuDk4b3ZsFoIx9v`;R_RJI-R9c)>%5 z`q!N@-NTs;J(Ui#>ckzcXV9AKc25?0Z$xd%mbyhB%X3~YV%ZX(D(;Y0W>zECXgEIV zKZ6IUH;KyafzLZ%0P%#>G?CodY%W$LHc{0&J*JRPaY_?H@1|;@SsHp1kJziZebGZpqJvfNn88lU~kS*yBXbZSocBF!U-$#v?toHXgel_JwcRYQ_sWI=I_f$Hu9BK z8eXIzgw^<7Ey{` ztM&4in|*w%GGpduT6Mi8wYGt;+2E9f<+Y#_xpup=6>25O%Fex6TGL=?j4>XOR4<+`5+YiNoMln{!Y&Y#`5nSXmkado?vU#3el>AO(Lpv;PfiS({+M zP)Yf%347bsb4FxUd*3};UmV}#ZePn}-MhH_^o*@e(_$ftWb}qpp;{$$PR1UX`iyNr z+)g629CjXUHrivz;PHSji*IvOUAlaWuv%v4;?3{=ZS2HLY;b3@PbODlc_HH$hQ6Ty(ge67qIGod8$567)cjv8x7i?ip7n6E6Oc25jD#Z_=O%}^L!^+Zb}rx)E*z2TJE zkuEw+HqDdSY7&b*4)=iL0MVivU5S;SnJT{jyU)dkFLOX3(KF6ET5ci;?=0 zcI4ylLzP3m{f}95B;BZ49^t_dmL;6v?f9in3mnV8n;h}Ox2=AdqzJY?bbLAD+b{># zAzVL%^V@Wue^0ml z)!cQnVl%;pmqCsadQ9f{_EzSOEMcR--*}9 zLhdJ2$mpCQHOEvk3J@Iu;;@4iy-sU7 z*ZOcp3y=0AjQZn9^H=o8vDpDyLfrH>{J6ASE@!&KiF!M%M4Yo;;i(YsKu^k#{Q)~6 zXk`b*Ti_}@(55D0Oqp=VHRancxPTEy`$K!|cHXX=<-WA@2eJ4+73Kc)!wj5F?AzN~B5Ic>XwhnJQnE?smn zK!MR%@b<4@l$!ij3`J7xbHy;i4#Q5eXRBo2RoIZe`d*qnIAj)>+eELox1l{pBYJE3 zVc;1J-61pD!V5fye^JCh{2W$8^-O& zR>DdWui_02ZQa*&O0J=IJ2E^vYrFBB4`u`Xaa3uiDEJEUY8BM5Qk3~8RLFD!pJb5{ zuCb^E>YB2-ecJan%>d$eA*kWIMbF9s!%CEn!zP`L6?jE0js4mg;zrBKivwqO-}Q{oiWoS=7Z zcR9(MQtBG6#I_kD>#23Bk7L-mWsmnp!v9B+p1sBcsxFTwk))NL?04c|28KD;am5Qr z9QF5=cPiE`4MHCrR(5sR2z^gKG+aVCeq}6&z|_oAZ0fbGa2o7*l(?26s>Kg`MNH%L z@g>MYwN6{#@eQD0^=pARkj6WmA$=ZLj63L_)kR5+6 zKDuC}cHQ(XTU$xA*!Ef@iAlh$I!eGa>iFW=T6O3rMT!&P*XViq`xtfJNkn+*ZFdM} zzkC`~fFIo0@=v%i+2Y{D5kbcWI2B@()DK8#R4H1C^V+c@xxLi4-wXpC zLWkFW^S?ytIWk*NJkXS&LpXSoGqhmrW#HhlOXKzf^H0~E7RXfnm+KBp(sj9u9LPy` zzrX0`3%P)1%nrug3gEfll|nQroxIOYjDdhp#6zP7rN~4WM^kR-g3B=n2i8SN%Qg0u+y3)s+cWB1flN< zXuEgAn8_kH*hMUmR{i_}zQCkL+Y>!UdYi%PsWkZP)AlV|yc{>qqGhI2YqT7EESokoI4h3ZYaFL2oM#UFP@KZ0oS;a)L`owldd&p4nhaUY?%LSjZpD@AJev<6hr z(Fk73@}itrkjFCXhPYp&*QE8lpen}MlnX-o;NVqx-ZF@>i?%#G-BZM3<|S&5-o|?c z(QLXDF&Fw+j&$PvOP19C0^?8qB*y;V_@lj-vYkNf&yNWAb!E~HArA3sGbU8UfMYoj z1_lxS=`H|R-rqdjNH6*-Ig6A&F8Tbm1f$}9mlsQm`M!rVO1X<6g#zw*_hm1geTz{D zA<;{ojJnn~?GyXAx<^>sRIpgPFu?a2 zqNGj)X8#jbF~``wPzi?tcw6}u2)$@=;Jpldvc!Kqq+mc$##_bu@jypI=_SC(TX+EE z4xid-n4a+X=?^rr@aw1hZ<8k}p#nCT@8sbL;1=VBb)I6{tbo36&HE|o{;}2k4CrDK zCRz>X;J=Tb9Iz_BN`20ORL$&L3j`aZOaP$!D`2zhf%)Q16avu2PgwGzKau{=|74L; zLb%)Oqp&8(adWm<-FA&G-LokVjD^>iT(#jPM<(F0U{9n78W}Z;pKXJY%nv|2WN1T)81## zpqE)XbEWn3C&Z(LIAj(gwofQd>ThL=`h}Qoh zSBZ4#bh+6bB|JW9>s?p)*Zc-1-=7r7`s1Wgq%0qw7$x}B=W2qI@gIFs`|G!O=2Y>` zivJgC0Q}S>Kl``sH>~o{fwK2q%l;67p<0DaxULzix#1XCn*|3wA6MUvhCETy*V4mc z0Pm)rIJx&L`{Zxj|K|m`Z#zIFNu-hhpw=NJ@O~A6N=fmDc>jmfPXPV-^bRY-yi(*rJoMK=);ViA|B9nEh*5oj-qMm{|x{4&jtxV2z3cr2W0@L zS%9vwBzpga`rlsyFT_!R@Dtl9E>HqPrvmSM=&S#t{y$|&9st8>)ZVO2DnkXBMlw`T zx%q)X{v!+jdchC@pnzfVk_AFT_P{(jZr}S|knI0~;QKUS z{69W6R{_ANrqx$}(l68}t^_G%JT0pKug}pRD)}0=RsjHH2l(3DvHR2Cw&8zXND%=@ zqn-u4!vr);`RRy><-KOolOb`4ZjTau=BV^(5J2dkLyZT)jdFYC&8+6g;BL7>B92$i z$7`%K7#Rs|Y}Q)C0bgbP7P#XII~c*gI`e}#&~`x@pv)&?{J}p2(pnPuRckVo1dRA! z14OEUoR8ptY>b4*lR?r5-Zu4ieUUA)nM1YQ=uB^_Wr6V?pNt+5k$#sa$+$yO5_*!H z_rkD!q!~WH6nyE6qyNzx&@(A6QvIV4i#);$TB0vc8cEr7Ql{JR+=Sbw7K)em3Mi*T znTOk$Kn>5t!I8^AjtZis_yGR|t^5pK+*%a@g7%d z7SJvcP=i=IG*H;}P2Nx7$3LGvs`ZCEpeSmS(f!>o2b83?N3xZXoR-!H=rD*GVVYGM7OGoQMFS7Y#)s^@9P?BCAFc9j`sS zTS|<*GBJU}5COja^B;{6?Dcg(rWnG|?c;qQGxQPc8Q#KRTM5!s*efzrIE;QP zSP;m4Mc^eGFyJmG>@~@~;CJK@@_)7!MXGNjaa-s}Lxp*2NlM5l@fwLVN(E@iyG`u~ z07^;?Iu`!zsEow+gyw&s_ix6q^A$d+3=ky5xu|T0gR7h{-tvb5@#2sIt$o;@z;z&B ze+Uq!4kT6iyBW|yKgwU=Rw;@8|7FPMni+3Vjy1Dx$)Gttb52foeAWU^Oo6u_8hxK@ zRakuSyF-8YiVDcb-$aK2wMeu>q3uIxSD#2dwDdus1#{Lj5g7lJ=PxZq49|+)2{?h{ zye_GHwH8egloh55Hp;exI%b1QrVsp=@g;n2mDG+D)^I5xLC5=<{Ra}^Qv5jo=BqNj z0yV;<6#PDD?B0VtwwWpDiEYSSW}N>R8tG+)-`$;mJn`Xz;rYLaPc!T%Qu6wKVKYgH z2EWmz#Qju5do5+SR!GDR|+zskbT^|NTJTYb>Homj8l%r48KeAvOq%<0+O}K=IFk z-r@cwR~`|oOqWl{HCq!Zi^2E{yrc>86WPqYu9^L&CzSDqpd3F7tQfPHT{5^>`JA!A zwSfwaRgCEJKzS+;Vztt0eBd-n@Gawr;tdN44|fA>4B+tB5r zEra;KhGx{CAA3*2!CBsOTKryj$Hp-H9^5^WWD)F>dq>Sgrqlh(?y-Z!Q)c$bBK)nm z6)68vKK_4cg1<3Ps))_Sy?Q{cZ&dSV19yayyRX&v4JJJSN7*Hz)*126=n<% z5PY2rX;I}e65suCi-l+;$usrQ|4tttblW+ul~;j-sVdK&JrC2sD++%Jw>+;y^rA&IA zQamF){Q4q4twPmxrB$<|K0uhcPq;Pv*6lJ_8;nG%sl#(F)%uV*t#{{p@k4%&X>!t{ z_Hz)I^+KkZFSJw|yjBtnNh#^SN%vlSSS`BUtnH`f?;UN?yI$oqP*RRtMB5z^ZZ0H_ z@X^+2_->5hWF+FW^>0CDg`MBlZ6R>4TbKt<|h zg!i%&AJwl2frrVlHKBOPF6x7yv_l*eCmDf5mEt6Aw?S6<#akdy0SP))J)3ig`f|;i z9o`N8a(UrLsDuW7YM)rKHMtAjI6PnlP^t-D68?8`frS(JYj#-)*r1f{96H0oc;7#Q z0MK~%N%y|ai9$Y+m?8dj)Z3z7%e=h3p_}5h)xRP$^$JhEIA1FbS(ZL7YE5ElXJ6ek4sx{4E@U=CTjF(z zk3-HYs6UnYR&G~A))wb~R^B2Ld^9lkh45#@wYjMwS`YOm!F0w@`He%*YWDi~iU@>9 zXNQ(sHJBgIoR^5fdvjKY_mG5poBdIyGr6Kw?xXqzOuw(obW@vMLVMN2=SbEi#FJ43 z;nm{GUcp=mo2Mo^J0SmT&o8#gyQhb;GB)Up7`Op70H-O>! zN%N=ZdWMQiSvme;b4sWTso^ka-aOeH4v2P{HKP#w2RZY@6hjnU-l7qH^rfV(1z3D- z`>S0W>j$TzE8hu&b4VkFS6(foT>qvAQr)*`H>nI=p$H3bZEWJ_dPXbPx@{!b=$7>u zP<1|=X#1fr&(WKdb8o%Y`Su(vsmkW|m9KR^&jg&iuXO&ib88&oNKPC2z`tltrCO^W z7xQX&b$dc7&(?AXp9XO}K2r{eyx+3lya*9^XdY>^pF=pBcYJ5Ye`|5pTxK=! zt^LD@dQ&y0SH7>iNzvtOGgch^$Y!REzt2TCcYs1dwfRUPceRjPM1Gd^6!mn$*0Ryj zb2Kmxjm)~i!Co>y_}iuL3Gq_q+$`6;2JVa};0%bX@zMqScNTf_F#noHltm|(=l@Wa zD$IFQSh(ks8F(NNYmN7g{Fy;_TTF9}QR>4b>e4uwS}yzPo}yV+OV^^4zR+d;M|cRI z&GH3e%l(9q&g|&u$Pq-)_IMP1Mg3S8cY*9c*Oqdz{L0nCIzTXiOpY5i7%>1A@xbPQ zbI0bu&dj5nCSp_(Ta{&7cR_Eo-|Kr>Tb$3*vT^1{t0(e_3`W= zc&%Cx-taSlFuN$~V=BaYC*l;`2*ImERGqGs856pzHED(EyUo_Qh-5B9i#Q_DDxKb^ zWYj$U`2(@9alwSDz=v{Ms!$GpQb_2tHSSUHfm^kwxK*TiU$|#e|0c6`Z-*)E_FCbk zZSzsm!P~~m=(dUPQkgU}N-Z~IZ4+p|Q9TPb#}2%U{BfHdu{XgxL|5sBn4+;f&PS$2 zfYMx7?yKni(_t4K5fR z?M87E$1*3N9hhVWrFb+w9Q)t+QzOYzZ%MQNlyjp=`AwXDjJC9+N3y@R_IyR0cu++9 zYfat1QD?;@E!UT@Cwms;%b_rzXf~1I@a3qed#dVCX zjeopi|MOXSV=I*i!apdvUSLfyWI!D*$;L6Zj_Q3n=Vov{9)M&@Is-yKP zzD>q9EbbanNBGzuP$HbRnKTyr0_bUWtQJa~4<3t4Ca5qYwD(pk#(|{?B%ib9-9J|e z=AdH;qP|PHP4l-q;hp92j2T; z2;O^8@X1q4=Se3;npyQWbLO%8#UMF&sn9uwiDABE{h7)(D1hn#v^Zplj>L0dX1#xY z!$HFl)H=qn`(U`5?AMM$MT&vcKMzn%!|UX`{?f*NLd0At6)!Ugv`0dc3)7)-`7<%e zMJ!c9P2F-FrmEZ^Cy|ic$+cx=Xpt<$<8I2?2G{-mhWqR>M(Tle$~lF504OrY`?|3D zz9O&MP`6%xwyBB{ak~6~y=37PwAtQ9@BR-n?HgV|_D?h2jrErgte&RNbp3}9{0V>Z zEsTHjA3ksZ{>FCA&mcFcEE5jVzSEMmI~~RX^b2LzwH|#|6@~jP9Ri50k!xN_4U1B1 z$gHFc#Z@_1g!~PU>!jpSd$`VH_qG$5__+Fdv!3BleY9Fkr|*6b4{fl)cK`B>hSczR z^6Dv>+L&gREmN~rjMdxJ#|cZD>&jVbC0k#%kh+73d*Z&>>M2cKyP3e6_a@kWB`5$XlpMLJH`BmmreTYuVuyK zo$sBe@4&;|<28B&R&L{RMb$yTlW(=&xecrjUZ#t%!og*^z(`utnNgceLy1!3kI^)* zqj>zKJej>WVFjS%@KTk2Ke7(YKKGE!nl+8jw+#$+q>bBzOZSD+Qaj7L zdC6*Lr3+QQVR`wzE$N7F-cGYmyLB8se3tt-g-{nP^g1TLPPheb>C))|&6Az%+L75j z`>`X{ZQJ2Bq<|Rxmx<|4=Mtycl~XtgzQ^>N`cc<*S-b~J!_JeFotFJnVEv)5=1v#( zPqU8p7imf&9$}viUidx=KaND36%G;eHwn2ttvH!K$9V-?x@2)E3HBOw~_BS-{tcssnvgDIa| zQ;#%(?N`p@+Jn^nHr%l@%&*Jj$e|Z&8o2KyU zjN4K8zJC~sfp$HP+Ydn8@5IR3K1o>^-H5Se(@ zWXperEMERam+TMV8}cU~ru}?}OcV$#a05XLxlyW+C9>D^)2r@>^9#$)&6CT{L}{`- z)m-|)#WiwSm;O$#irut_#A1-DkH@RV+6bG)gkmEvtEB1EJfy2EK|_mI4^oe3i#zKG zQd`({4eu({up>pNaPTSMAd@cr(+1V@rge5Io0K~k4NY+;%_mAz6+*}g?XFi%OYlSy&W%3ec7&DBNb9;MQr8)2 z9+c$6+;unCE;|k|{ExaYL?zqT(@^tgt~XvpBM)eB6RlSY6vKG@JHsU*NoDh5Xv8h8 z)Wy)nl&~Nolkw>$JQKGGzscf`?^8T=jM#BzhM!=Q$*iu>VRLT&sEpN*G%z)uityFYWe(2d9EwXI)5!bslfoA)pPOYOQ%zpSA*GbbTDN-5 z^dK4$i%~w* zm%BUuVEIB#3Md;b5rea;Y^pbIR%Fg^(3W>-rfbn?CetfjRqo@~uyfZ7wVZN|-Y4zi zJ(wj5w6_VTJ6siZ5(VeTM0ad+pdr|<*7JWGPgrN2s68^MgBhlI9_~?<+m*#E?BLjIGXMwS1*uJ>?kQ5>WO8qt zrov+At>6>dk^v(s>uG78n1S%}lBrBVQlDYZD%IBNpi?txQyj`p%c z)_jrGSdQsZJDU{TIV(#Moi(4sZmDM2F|aAwA5YWX`P3Q?)Xa_`;$LY(8!9~R*|I_VDkD_ObdgbRBdXJxpC9q+H_Dp{F09Cd_$ z=m5Jxbiz*0&UuRx)6&Z0q1Az33Sdx+L-VB#C`8P?7GBT>fvhb7p}6%FF#{!-AGJ#4k|vWLx*Z()PaIKb!UshWwT$ z$W`$06XYc+So18wDBn(dhEe}H#b48IyagW4@O}b`$i-qXN6{jFPJ5bv~QjwIa&4hS6>g6o^`Cx4qNzBHJsH}}nNPcd6LU_-^a z1#I5@H_N^;0(Krwgi+k~@{;oM@*;Q>{I_Oxir{sHmQKupkj<;Kw0$)bu@irKoxf-F z`1mkVv~ZEu4Q%zgfENncNE808-4PoQytB!7S3&6L3&!ve+YtKS z-JbJK!6-dh_j7unSqXq0&ir|Q6VMe_3=5>Bl;p5oG2GRiI#j0m+dQ-Y`FL<_h#^Vp zU`AvXor-LK>sA?9u(XtK<$!!4;LZ3Y<4jzCkpkf3V`B?mq~`;|A_8W6G|CW$_m^&g z;)AVe8`&TbBN<`j>mnoY(f(r;e(MDI3KA=TdXe3t$-r((fp)s)pRWIf9rNJ6im!oN5kKdh093tiw`K9aZ3>W%GcetqhCn8e*fV4TV-SNl{e*BplG4(i z_~1rb^flV;BPJ{G%%5EQQy^(|yg!}NuZ|WbRu?$ISBG=q41)$JN1d9Co*vnFE0Iju z;7)N!Qfo}$8xjbu9-!o+l$1OnkR~AO9x}_Y=@p9bNTM#!rNw{K*O2zr^qSlJ7o2!Y zfd!4Z*Itl|SH2VgJ-Z1;ik}+KL=VV3R|e5A%WfG7Qjm}k0V}l*6;-4oe8)%!vAV<0 zGVrGb@W#4YWPOvFhFAUuo9@6jsmPszMUU=5f*%(yX65B6dmQg=M;0GB=N3dW;y&~M z7XT=SpuvbY0e=@gNEIMp#7W}VtF6J|*T`1bAA2q2Gdlc`Gznf5OZihO1VVq|zIQ#V@Y5yWlJ06)Nq%kMp8re-Xo)*3Q3x2oIaw3dM zt?H9tw~@Zt4p?al!1$+wVanJ*37%^vS$COUp;j&+(DTfWV3WODM|0~>ErM(lkSRhM z%>yqPAh`4)(Lt0J{pmqLA1K~=L7us6Z z2a^R81VfzTyLagiI?Ho`w!r*!H%UJQ3V_k!v`bPLgZ>gUmS1C)M*lIN=XzdVKsNS* zsgb}O)Pfcv2Qp92W6VJ>&cG$SlVCrD5_4;7&16}|yrm?nh~rPgvk1llemzC=HVh2L z72{n5_ZxG}W8i=PgpPaW5&n!KMB-VyaBK?1zVp4x9O?IE`trN#>JzO5AM<{#)nIv%p?sZEN06 z9J$tN8y{^dr_1w@h1~5QmlNYO0;@9FN_lkK3vwL?pOaQTIeItK{FMknj#BF*tI=X! z<4}|C!7Oj%g#s!5TBAtWujA$HYX4x31~&C-6muVOT{BkMsUCVeuidbv<+@fLtw7&P zt)2-xMz>@k-diNs<#*|&Xr$Ln^!A1M?vx|gHLNxh9EU__IG>4;N z-lDG(vcx@+Mb>*Xn;EO?;$`Tqd;2Vf%KMf61M@`tg*I0EeRuUjODa@iRT~cD9=YBm zX7b%-jXi%J!PNdtULUD5I|^M23V_L%Q}qehH00#l2KnI}2hs+)*n@hD^yY}o-EF6M~)3X znA&BXJnwy&(LZ|H&|vYQ{!YsP4okww4tY~s)}?biJP9L5K@YA_2|aaeV$3?JIYyfQ zVACCKVuDxt;OC1IA+-ItQk+tr`MMr>`0XzdGzU>lbzPc+w6V^jKU+lTPrrCbP0HoI{yZ9*jLj zmhV&>^d>mXC)hl_MV!T#xv%A9jw<&EO7^}!WwddeD3FYL2lmM$bWgLAQJ>GchqU&g zMEBR~bI+2-jg3rW-$%RdHMmQK`gr5aCSN%|$_b7~#mX5h$J%en+7p&n!1Z@+!-sm6 zJ=jA+m}o%)%sWDw#>n?__4SX|`rhPHrftgI(PZzXOU?H&J4lRTyN0gXvD*imItBh> zU0d$x>Y+V2O0$AZ^6TAa-8%-w(~UKVXLb#GJ7Qjn|M)+*f7(#dRxA;a6Tri`qGG8N zKZ)`%l9gj~hEWDWyVWJpjN2OvZUCn)KYG@z7MCPXD zGFp72ZTu%izJXiWV1~-3M+S1HO_dOn$CC504U{>!r3C z$h4?19wX68hVPn~cT}2($3AQigKMgR>_xpY3O>lc7WI65#-F6dr=-L>g<&{QVgDU| zI1vSHXpV~`Tol1!g}$rnG6>F36=_WibL&nETkZmZos~7a6=x%_ddrPo%E2BY9_A7K zJNJeMKOEFGN`L2boe=HDcOrYlV<|5t<#((B(E&;St1)ke)=xe~=O#bh=e%w<5@>+6 zZYY?)V}*KU?+aa0GedqS_cj>FDc!FgNmgPFoB(IBeI2_-TH5Gvl`yAHLdqCB!68Jm zY}-d?=ZNLg#A0fY6P_#~zsISfOm3kZE)9l#fANCnJ9aFd6 zho{=y^A|oK*AJBiV!lt)$GsF1b9w8jDl=44#mSZN(hJtkZQxL1+c08zBs%N4Bp$P{ z$rHFX7Ap)*V9wu_G)~!;Q4mzID7fUvT%ouwm>IZay}Q-vLHRZMGu<%4hmZP(452i$ zTY8;>*1@+b?l2i~?}D1eeSicZZ($;~?Bb%GbH_5R(Dg)iM~yyKy)N7$4io(+A--*rNA4P(P>bP-(3>k5e4>CATHm)|MQzJ85#=!%PNO<@R`|H4&x zOSM4g07WmK88*-x;ywL4Nbq+4X-~fj2&)5!66ZnRVtwK{Ha{{#8+wUqa_;M;UKQ#-5i}9_qP;8&6pWslfH4up{e>ao(#i{@(8}0c%m5c0_%TYE5$& z-``#(Dl51h=WM?JDvYZG*F=EJ{Wn@rAt*6|$`v`fnd5Le?RwZVJ}s92hIHQyF zJbA}YKSwq-VcsGA_z1c>3GKNulW(PGV0_(7FfVtX)S!#=Wnp5Shn3k-bk)rSJWwLu z5(^vuz(Yd_;S2UrkFSMm)2yxE+?+6AF`KZd1Cc#{3oPZ!De$wXVx8kpKcNyw@|zaM zsEAjnS6i9Aqv__t^-g5nDAO;wM|n=By1tr!)96<|ZLD6vv*4uZc7r%7x%Ko^7w3)p zgelhbTso}l3ixq*cfiiIenEpI{MbUI@TD9x@MNq#Q03zsy;{+`k6xww+gdZ|B(B`b z0I?B#mMuGzrq1{NKVbG+lD50FTZgct1cnbZiK>sCJZ6$cXWdzTc!(3yFywYwW%g#R zca4V~RBXPg&X?g{vYGGUyn_5jvWar{fU}O$MYL#yuXX5b>WG{(FST%D>eenEo8vNY4=h1}2;+{$%jfqs=w8P!g zftinEb&g#;B=F-3E;;5>U6t{Wj}%Kp+G!NTuVj&?7b{e?Ed0m=su=_>IsKq}Log z2Bv$*Z(k$Lc6&=Mf_lp7>11#Ecy-^w0n7K3?TO_u%J{=Z_i6pXP{*=B>C6X?`k9ZK zDMSX#F$=2?CT)$JOf9TF7UoJXSj1E9OwPJx*Q8E!D9aB?D@MC>mARHbdX$~#DLO<;61LD`*SfV+8eYoJ9pS9y>FA_`%mh6`LpDhnovy(R(g(tP@19RN@n|Rz4fiDtq%K-+)epg$}jTBWF}n8QI59uY~#gl{V{XaPE%^WOs*0c zZOE25OKDh|bre68_`nM#_gh^$G2_4AZOhG9T2v>II|~!P z<b4o^Zr3bWRkSTqVIDwUVDg2vVpSj@6K4<#u6obSk(={j4s?ddEd4Fz@*Z5ubH-fUoh^lf%=oD4JPhktNB*H6=t!adrH4seI!%FQ1 z(FmXYp|A1wEyo1&0_9?b`GGKT$qyH$&24Q6@a{hpJD8e5S1QzypPi`%ZJ*tU&cwAQ z5)zuLEU4t|9;6d_C>M-spBiFeJFG;A{%@og#O1>LwWtum*8L*&wfurTu5kv|OH{$D^@Xx4GvD7uv+sOM zWB4FFL^2p}xOmH8D>YN>F^Sr;X^gNWv;ia|az`4r%SXn1TZ)-qN5efap_YDV-p0v# zIzPM@NDqFaCr|lqWk+d3knK>Q(%~gSE&80LmEuiSwYmoT{^$nE)@U~!_A9L%ahi}u z+fz4ZkD}q8(2BZywDLAVqpg;$7OCW@Go#V5Go*!=8}Du0O7s|e{D^;#ty}fS_{E?w z1NT=6!MHppvMi(2LB&=K0r5xb_91CbXvdAsg52HOV2<1N-=u|*ixn^9Dx!yEI!>xd z7-6H1u(GNRzeH^*RSmD; zsq>nTWxJTMJ7P{}b>!wqVJt@;^xMo-IfJM82dn0`ieHFLkGy>@kFX8Tpdd~A<$cXT zj)vQIYeyaA&{Z3?t}7$-wtjK2X288$cSp^Z9faLXLv?k_TFBRI9j{jl_};liTl;n9 zw7vzzCN?63g{5_$ai2^zckp6ikwD8Qull1#GdbeJx-lxrS`CzuJ{ z$a9{M9-ycc5hzz$J8|O&UiYY9rA$Oi$IMmYsMA1HmlEgvoXX^kqw&KRTEuLoCJh(U z0BqkOXmZdI`iXJSa?pm;`^(#=a}M|oa-Sq7s{+w+63fSki8H!o?MIzmo89S6v$62_ zik^Xt<9oY^XK|E5N9a$U$F@jA%)N3@ypuq$PQXvt$B zzNE)t!Ra|)fQ9h4&3DB%xUFpQ1#L;#EDat{;X@L6aJ`)+VPz zWBB=3Lxqv|-B6w5g#D}VHpbOZJb>xK>2_hTIT!lV0^NRfgH~dfO6#JGF#^wjpLabjng+aScY|WS#S;}I8Gg0p@~L} zGNATZW^Apbn2pg3>zjgX1AI1|xrz6*T1Eql9`~MjN{FDh5^Dd+(bbY}-J#VFXNXSr zc}UL8q-=nNb^DShCMhR@M`j4r6W6t7r0_U=Bq; z629l=n#}e6WG_1To#)4{uU~$$;;G^C6pv=6(*6hfHSbY0SNqW13dh z$wyxuZBDGN3GI?DK(&-ZT2-s}r3(fh`0wy_T<_*wTsVcx3XBvzHC_ogn&qH^@!(v2 zHO;Z6yG)6ii8smX-6-MR+$%#$#sv#qsqyis8jemd7mB9}C_boIHt3yY_Na9naosJc zFnE97+jLhS`)c5h&A_N16Uw-fDe}DcQSV7_m}J9`@w1o#q~cp^kChj!mxOGMkTVT% ztNddoB&Qm|hKFLO$;CS|#R+$c@D+p*)&OKT?!8kQd+9R_9>*?FbmzpzZZu*GiG(6E zy@#sBdWFxdhx~)`J=RDSCkNl{d!9{%YnCOqmrr==R$kC4?_OK>)u{c9I=*ECJE&G) zuJaIBc8S$M*H&6bmCNlOn3l9cs^OEGeigrsla~pWE)I4c*0)>yOoPdg(o8j{hdANL_0hVw3o^?Z9_3CJU9xdoc>I5(Rpu^>I+ysRcu$GLw<_>2b{J- zq{{|!%^M+RLhEqJk5E3pRioLSgoZNVnd-Syq?0rUZ6D{TpL|^{N~7!i`DN@c!d7Q< zGH6>VC2hf04yyg^$i|JJ;uW3qRi@;3p;rD=gM3^uaO2OY20NCRACtF@z#E#S3NS!93DX6xx8@$VJ z^Cu{Ft~Rvf%Vo~JH{`}lMW=1$6pOZ84c}Ss9t9AzB1kFpQ^-}LMIR=nv&>`h~}knqj2(* zM({m8I6GA6#uHw#d*u_Y>|*6yvhb=qr}TStCRZmcWNf#h{GCeq)=Z54Ytvbxi~V;f z*HJYB!tt%i&{15iaY0wDJa7d#_7?#Wbu-^_Gs&!_H7^^EP?d(XZq=mz{SrNvu&-&` z$n}M@f)W$ubhoa3ecdhBr0bk~=)%z0xS0e=^UVdS(ekhqU0DA9HnMQIqB}&${~n+U@GQdVuX0QN(cO@lE>lmgj3)ryTzg-hptr zTWaW3)mBRU_5{t7pr|dX&h_I%o`!*HhROO%3}U5LW^T7;Tg#IXRw?MXeN#|d%J~dt z7_5!vq3$!7jk+pbBT;zPEXjFPf+idqLYQq9`FlX?Kf5ak91IZRsT&0PF?I$D3BH4` zcy>5A;0laPwHkj9a#ag`f{v<8099_8^J`*R8(yo>Z@_N!{9VUacZ6q=qb>IS+0?d*l2!-(b^SVb{e|9Hjr++hk?yfpx-nVMqukb&{ zw<0;BdZ{P$v2bbpRG7`V?Hyq26Qg9h*WD`?lNV8yfDrVVamma|U! zKAtF4Fr5HBouW)pV|YQ=;gHSgsml5*wcIb#wJs0Fld0q4xi(}A+5o2fM)&A`; z~+Da1!ZQPWJ9>n$OAmdx$S7MdWQ68xJJcDDf82=+3F+Zi_mqa8nVqqmG z`|$HWK){3!Y*trR-l@F_8zCWn?jH~cJoE|zP^S+G@_(DJx@UG)&N_iSx*cCld*zmp ztbP5lO83nh8!yIAS{is;^a*7Yoy*H40%c_QN8Cl1`HwA5Wb8}#SV*ghu0S($%f1Mo zPlq*Qz};4b6ms#SjZI=Ie6^Zo1_lk&<-u;7a)zJ;>g$?L~^|yZXei!d&Y09WGav{m>u)F=`P6*$;}L` z%2Aw9eS{yU)g;!4wd=w3a?3Zz@;w5(tNER4>yi6LF;hB=eXkymM8HP}Cnm=e{tYI_ zce>8Fx>a(ugO*lb=1uiUF-`P~)Vw!Xh5v(RCuub*otON%#s(d5&TNy7vDpeExu&Rg z$VUb_x>S+`#gQ8iTT8i2zuufS70K{0M$|geph&w3!h}jA^D~G&xRN<(} zq#$NT@dh(~rfo;~Ob?^?{3N~&s`cYw-|=L8-Yp(1iB9>DV-s-{Q~oU4aI6bBGsd1V zNu`@BgmtLXnhE<7QBIpGl>=5n9J%xs85{VIV2V4FUq3j)5JSvo>Zdwt)ymvP#pJIa z6lox4tTHatilNa)tMY>pf&4f7`)zJ5^{g!knEM91@r}Mp{?=FLi)NN&7(qYyVy@!jUyY-j&HGa~h|fe#1eFMX*`a^1Lv znqC+Yn*M~>N9J<&&m>z;kDutNyw#4P50wCPMNN`)cw>t4$j(Qbm81 zqb&t;mOk0$?6zK@+l7YBmTRr7pY}Rse`n#mAV&C=duiI&j7ku2YI}pPk)EKcM;tXC1H|zOOqtZ6@x?6K-Zgb;NJC%$p0_6yuo1XU=}M?)FNk=nF9^_u%8eO)oDgPI#H+yyF_WTY2=HA?DsSgeG} z?o#mn>Bo=9^Mg?AR;>!v@|a89dVQzK@T0WN)ysHmXAVC67B&MPCbpEQPg78urMBJT znstL3;G{(U{mU|x{Ev8tq_>Q9VX8eZ#IFkEz6?q@Y_|(M*ralMIRN=ye40O8;?_{$ z!pX=#+1cPSS9uc3_khkvS#f`=X1`14^My+lYwS&V&{XRiEX$2MKg9$6z@3w9H~?%{ z)+`K8Da2U|<=e^XI%jTFT3J8AeWkTP=y5oiAMGP-|<4m{4t_IuYliTvRub?e!RkJ)cdP&)BUj3{TFK|Ht==@ zXf07*E`4FDv6tB2OVCiIAFxo_+#o}9W?S>DTQ3jJ{oqa1=C#sYW`xBxa1>N;{D7YDnR-pk@`~S5ErGTV-31p8{Dgt;7?DDu=s(Zu-Mjri zkdcr#04!p(DmX~2meV^LIb$cZalIgXeAUa|s1txbA+(~jTBE6hR#rLDpAKJBC^X)^ zG1MECy3HMKtbZ-nEjbZju|I9@Nl=ZAgj9-^rbzCm`sRLFbAOu7ya|2U8iRztL2MwL zpJpfWi_u-&AAUN^9Uh@QT!rK`w9$eLW}~ZcwN!q{CTbE zS{JSKaRQs6tR{wXx9q};;ZCbh7OdCJJNowE-d(A^&i?qjdHe?wOCGsv z=(+Qp+VXS$*#9|+VwoMLd&6(wz>E5Z{}jt4i&?qZT)Ki8@xUI2&!Ak`qcXieY%D}#-41r7Bm((}t{5gY9v z?G^7ne46weg9$KeUa~E_K7Cedop{}7FzMk7 zL0v#-YcLoKaEI?Uc1~9aiCpw;I;_bjv6Or>GXNdzy@+E+PW-$+%u+)dYtV*+)P*e} z;{^xv4-1Qd9@f}0*U9;tT17X(a`|gn)%v-$YKTy$qX9TxZ$J^sq)-eD@fXU{OE=EL zaT+@?i!x`R1&_U7V}NbM-A``+UP&;o@CUehfDz@}Y6E!L5<2ipfu2QxqQ(0YQu|M= z>3NAv6Ov@Uhx{o*n!X_i`nEsiQ&Iuqcw~IMJhpz$W zL`~^CFsMI(xXkvfm6ViRtZ{A^q<{4~$?M?jpJ+?SV|)O%OoE+V9S$n!_bPd)Q|llh z9vf`322d#mqE`V~-7z}3$@&Bwe+E#tBuuQV!&eqsk4YPx)?@1TbcVuN)La=j75~}7 z{mBZFmDz@d z`xr>%Z<+i3-*b#?@|&*#xx)b>o|F_5@Z}Fd{u%3FKK4SuT&Q2uYXJG9!HDqS^)L)j z^_K|$^B*k~sGOaNTo2GOdeBbeHN!t%?jPNI*8+H9$Y{6NJix;ffOfh}pDz9>W51wA zkYr%nnD(xxoq+ergQ1GvdGx=##JqL|2XyQDm`>>_wkrmnJL8Eh5Bu-YojVT-FwV7t zgU86~K&up+m&|_vNq^E2^YL?Oy&EzHCWwzID|k^sla9ew|L@suJp*7=o}e_qUzhtp zgMx4QrTndU#t_4Sk*s!5Kwt-mOslrD_|Nk252gxqD+eaAlg-UU0O)==+3kh4bi4^# z4^|8(qiZi~JF5?uhTfqKc|;`u>N}D#3qe>!N*oYCuL>-q^mGaUZ-y}r?juGWzfEyC z97$#tMA!H^|49|d4k(n8X7C`fjigP40g9i-Zh}} z9n;aM+y#i@)+Odk9s!;o^E1~gq|NxeU_87_Wz&glXUX} zRw_gH=;)Gk|5!CM{QJ}F&q{i_^+`&8B7-$B;YDvveu>NdaYlNBhfV18`q812Bbd3= z!dr){k}ioQ@0kOsU3K&*1=2h3ZFUpleZ9d%qncVBLy~iozYSK9ohzkQUC;*2Q1J_@ zXq~QdwXE|E-yi1Q?=S0Ic4(tat*s?yQt7VLREa=_A8U^ug?96MZoI#7>4rQ-dJdId z=4~`8>LGM>u|JhRbQ!x2<-XF6+&Oh;y7khtP*qZHO;9C(o{4a8UENbj>nd^&8UY(pQkS$9zA4$j}RZEq{{8UU=LhMv7KZx8k42_w1@O1j&@LMA>UyHrAd5VXoNs@V>p^?r4Y{I=t!p+JdB&+j<*rI)|{hEm+RZUdcf_mT5WflH{mXEms+8I z@A~EZ?9uK8@u$;O3tb9U0%H`8I{Nd(GSQqesnQ?1&feR7h`5q7)Yg$qVHlKHGH})Y zvc|RW0w>*pBM@s^356<$Sgf>hN8 zLnd*NMOT0^`pJQ@50}e`Ob!LH`m5s=-F4KRvVcu_dqECoY!yDc7$u)0; z&RVSdk~4gD%xx1&g!JBo**$j`P7Bj+vYHBAHAUo$>{qz`4+R4=wJX^s1v!FqYRUsD_hOEqpjUD-3 z*Hcc}HzEQ{2}DhKdoLo1($;$fbc22tJ?@Cn?s_$vPNTZ$Vl)%9J!E-kM(TZgOJB&z zIrz%;dGtBUd37=J9^z z+BLI56g(12&xkfpDUVt*4R8rpSH{;I^~ED@+qLVHK8dz`&6M2CWJmD%ZpyA}2z;vk z-c%KpW9HVEfaTtmp=?rf>wq7Ya)pBq#-7*9IPDk5+N*7)=h$dj_80s_)KbNp;$E2< z)aCXK@$r~H$r5W=sMVZg%aJ>Kc!k2e!=b!A4#sG(ZW$42elirRtVZ&D?mL|BcuoE= zB1mB&6QJ7qcu}z`H+on4^a$Zk;(}&kF7cSZbY#D}ESo=ZI$Q^ryCDjNF-{{ zP^_HXH*^~xj8GJzxueo4K8#@D!G4{5Lym@fw7|Kkw+*eKc!Ke6CtJV=LT&?;w&`Qx z02se!5{)ogX85pfvh)~0m-??0t8aHL#Be{1ZZRD_R%sZZXf?fBCTRpSVZReCI1U0x z;Y3N>m{! zOv~=DNE{zLt`KMWk(tYAB#`1qgV^C~LY_61+I5m~6K1}<@;plIWg zCm@X*w@UEzSG9-A&r9tpH~z>SXuRF5OpR|CWv~TlejNW^5h>jh>Wq4}++c_$k|=)V zqPF%msQ)^ zSshRvGM<)b`N@u_T$|Q1K9gBrjE-R!9GY~0EKW$RvKuWwE(x}k6vLZ+vs2EVQcXec zpL~5A=V&c5lSQ}A@IgQD)nG;Naby?>`@Jc+Dn*<9-V6{8ZPt>fz<1vXz}MkV;ayzu z+n=RPPUdJ89&E@{S-uwjEc!SxAhUFLw}s4i_7a(US6Zx!$elho?DR>hunqsUypM}S zcwx|$DDnsJuh~wmeGu-2Zk;pkd4vRNTWrFk>zXQsYUYtrivzB0Pm~qXxBMPeve_U5 z^U#o5Pq}HQcf>}mn9V~zxen$W6`rZ76xg)LGX*AzNjc7lkbC0YMe>GU0AjVqaVj*~ zWvx|?pDM{%@Zfm+^oVL`Ic7pDIE$}0VX^pei?apKJ3GQ}V=VpOS6%I`^6|B`X zqv^6e<3UFXPb;?r7qnR-PsMg{jEkS=t4SH}uQHIiQGf>7(7n7I9Sd#8#;!NP!ZN;N zxI6KA$%vE~51NvxY&@uOa&1s!jfQpcWh^`kEfp4|$w_@2a>@_8-50H5wc!v)Rz1iu z2*MpzvyrY#-aY2_jA)Z3S=WQZ4y3>fP9jKJ8mWnay;>=`aXK?^S4XsgTiJngNo&UE zX80n>pn@svZgYf%QMa=Uwchl!f>pjbU!|B#5V_nsyh?zRh1+q2ED-P8HL$VVBP5w?dXB2zCNLNH?vkt#8e1P2#L;zRXkF{b(vA z+-5o~nnL8h*N|<-c$di>K9TB>`Nq)194TR>gJJKod64M_wV+(yL)m(b1wY&ick=!A zk3Mqs9^sjywik?WO`kk-scp2L6ZRWmD@SX(lx*9R5^vpoy}%}ayexLS-<~MsmQjbb z|2cDg{fK?2i~iN;XsJe59ZSyU1gaq9SG6RvlgS!P(R6v;CA`HEa0DhKsS$ha{Q2Af z5pdAR>8%e0Z(g5Q9ag-8{e~B0GskxOCF@GE?+lr z<2{+2{TPK78&+nGvE0x_JPbW4<1x4RdV-A%bO{Dg?cy_lO@O2nZ?|^Ui_JE0J9l%d zAgRW4&d?LClYK0Y{BDz$zS};UZa0xUtd4`%z~ct zR5I>)1ohQ|M<)xFuiHj6HFTSHM+rPT-4Nn@bQGb3#y0)R>TqYF?>E;ER!O&A5$kjajGZ;wSH=>~<1ktRGund#h*C1N372LmPOh z#@lTevU{}?2obpUV=VIlu39A6^(2ia-;#D$t+GF!hI^3T)Q*H&LYervBsso1PAs&ujEdrao_FJhGR<_4n$ zBsBkruCI=Za@*cNG)OBUNC`?yca9(+2t!Jj(w#%6h^QbT9Ro;>NJ%#Xg3=u$EgeJG zFy!yWd(OS*_r2%-!F(8aXTN*ayY|{^uXrA)x_-+2&#J$8&hqBT8(GU+gD&*xv$N8D zAM@B*sySst)g%objZeBgW{as&>=)fo4#(3?K|g)t@YOe9;`(wSP28)Gjz&qnrZ?@b ze{Ar}#iG>|v01^#TwK>*$Z55#P15^O)X1OGHY>rJcU&?{Xs;iR2a%vf53jXFKFcM_ z;}!;hQqR&I{LOndkqwS-2qfJu@(zEB9x9I!ag6>Vx6q-NvL2|dULOlD+H~0VDba?h zOR&|0IRfLKu&&8hozR*-FCwR02_=~AkLOHoaYRtBX0*^T^R>IEeWopaY!&F)FV*GV zT+}|c@VZdDiBRP|B2vTjQLrdXq3cK|a1^9~Rmz$K!6DREvR`?=&6HVek;Y~e&JeO9jhk5hz^*~8-MLR{Q~ zM@)QP3*JYT>(L|F>i9q*@!iHfnfM(cLd_N|BmnX4as*!kk_I5AEbIz;ve-B4>7>$M z>f54Sik5=5d*S0rBCwv6)MpTclLtlJ?m#^lMv9#Ep3{TPp()~u9Z<3F^m)d&a7%=^#%jPXcC zA|$c;?_i6jv*BYxtInq%%2VYUS&Mi1!X}J6YG>Ss-PY3Iz<>t-x2(< zCae64{gjE|13tn1P#?JVb6C}2q4pQ;c>AGR-Rv&|Un2%(AgU+3Tg`aV>0<~*hqHpB zBvIRJuAYUZwdE)2VCqrP$#zPA=L=0JVQ^Mi{ay)#tkk(U_Eql^Etwbt0&|pDVs_|Y z$WwkNBxJJO9!D*wL|b#*r@FWV5g}TvH#RKPHajt2cn;O+7EafDGa*Tn>_x1f@fKfS zb@kpg+u_-8;}%Ero#&4dhnSf3+$Dr3hL=h?LN6Y1O34aMeP<|s$torAlUM7LgD|$p z8Jx9G=w)E0S*4Dy@OZeQuUJgYLDtYkFIM_2M(AyW8ozvQ12Q`3f|THqT3ACTq|MGh zTRi{~c(Gwr&wAzWTBC=0M^&#e$J8qaCsn%id@`&gk@Gp*I2=W+Rl*7#~`#qSnuUh2{Og|iF zr96|M#wW8@1roprRk|8QSfMMd2*!iwudIC+MB%{UQ{g$G0n`GeC;g%r2ndX>rMz4l=>{w2wPYpbxIi`;yIqXH6vDo4doKj(Q4P zdPnLWh(W=>Iv#Jk221>0*h%4J&-jA=q=$t$_y!X*a>Zjl=;=iG^@j9k^(UK$A6JAc z_=KKEK~`OnV01EdAE&L-aI;BtNN8r&x}xv$f>Hj2N;c|i>5IJze$F;2vkp3C z&0uJ0pz9hfvY5Th*;hV{mGNwSlDE`8L9IwG_rU-(j+6wN7C%-SgI5O;~HPv7N*%OmAzm$^RF{P+` zw#MQ@FsS5Q0E4D7ZYLiSLhRq?$A=b|PRRRRXnYgqMGTyN_>t40E5~wXd34(0SeUZ5 z#lAfTVb~&(>(qIiS+9=EC*=*Z%%wTK?N%mh4sK?ahfZPmji9T%KNCf_wh7^4_stvm z70~dPG0Og;jkTXRCj1uII&j!rYJ>W=pv%J|?3zMp+KrK08BX`_dC&DzI{%og)XhlP-NPGMdA#MnBP%oIV z3|ViC_28Z`=yuQtv)DGmJ6im3?j~hLe+WN%iJZm0&);|1wyb*;EmVp9kpN#uSGUVd z`h=c?lk+{{_DubKw3+%{(6%Scw#QVWG?+o@R<^J2FaMC zrV~`N-QeKVyM_MrYI#(aq-jkHl#L#TRmsC8^|RiuxS!M4b~_>OeLI${Gl5a~l|8yJ z=@7TlIB)T`^6vaff%gOVUc`svUhpMe4*H8paQcjgyoLGbUZL~>a+||Yu&wX)Adq1I zeZ)+~$M4EPRxMpbn|IbH&2Q0B8*rFiHV#H!8jo#YT^pGOLiEggQqgLn-Irz;d1Dcq zj+vrn7LyRE3Ys#A0B$#=_SK$Ib7yP$k;PKRH z=lKo#9`K(<+G5zx$dSADCaOLVTmFSZX{QR5&pOXpwIo)$JGwt9*Dt9I{pl>c;VQ0z)U3|b1~Hb~|b?Pf%oa>jDf z?@NlW#0!JIdAeurHi?uR^^udDjr*lt=@)svDM(8-D^Z7uiafQork7??VJl74k>mB? z*HZ(9{ZKNBj!-HcTK* zx3c~R&&QWgW9Q*7i4A)`eC8AWo1f`+>e=%r92JszyPlp_s6V)T%_PSrKHUr6Fy6J> z5F33IcxR=;{(DasIkN=j=jLW@35Z`ln)pM7pYk4DHq>rE4RtR!;A5lNx(2y{M;N%s z0?&TYnYS`Xv-F`LQ?>(QYrNWlHOo$9(0ktDQHctDd8LHVOC_wRS+*4)2OFlh`o@}U zMF?)<54MLAdg_R#GKBe)UoryU-#%zG@yVjW1dfH=pVCEU*|VBanRQlTkvcZunYh{cnyWDRzt0XAwg!QO3@>f7f7IV4TX&gdix`N0X7#+9 z+o*o5{HxXVFlu?ytYzDW_6I%L+o`ekh~>#$xH-2X-SJbeo3xz4!`Rf2ko^bE_9^t| zdb0;1Qg!tlw#(&wUoC>qBMx5A)o%ON(yLD?NqyQ4Gs)V!u8~<_+`8@NeFhU`BIBMW z&O$fLREvn+TKvj0a52puDX9KDzJU_a^IoBC;7eu0*KJMzmdHZzNFc|?y62jv4p*(Q zON5uPq*CK@b2FRqy~D5kl^y$GTZa*3)L-W(2 z(9(gUsLCg}lFQBQSBhK`1A;9&!o?q}pHaQ8Awp8f;zbR>hpamd$(RFSF+HEO;}6{> zGgG2{m=Rsv-x=3;o$6A3!7=s<3^^Niu>{DwVu3)=;&ZQR6M#tlElP_WY)8mMS5%VH-K zpnjC#Fi{rU17dSc0MC40$?}V^xWp+*Uu)WaIPTs*Rd9MJD(NkaNi*QkdMzztoO^d8 zA|?_UR@q#vJ!t=RaouhS^#z{(;Riko%}yLvKjXb?cqbiX$&uH_zcU#Aw57T4OuU!M zS|GUB4Huj9ILPNipzM)8(`@;?$1)VR%Xx^SRSw~o&XRJQ=RTu#3aA1DBa$n#FzjS& zmJN=ceMZ1_hwLp_=|4Ku7ZPIf(4mJ(@(*)jSwb)+MFy+wL^0-NkU|*VMB{bx{Jk%` z6b>T2-i+r7*zHun?xdcXK)-!5Ily+YU9y8>3HDQ~X+8<{uM9$Yw*VD0UoGwchv8Qs zYXG)Q3E#2)+UP7Hz*Qz|PJVi2BN-(|)9-tB%yHp#Msd|WL>?Ui>bP?@U?~OfA9WAx zWT=nb2x%=7Vsh=NOwo4o^wL!;cg^97dot+pP!L^RtT<6-Ryr6C-XF1hZ7Aa$SGp(k zP@7J2yHO?Y1zO9%6sZ|D9AsxFzRFoU`C?^fCPvF=o(0=@4XNE5;i;2zS=HiDR#rw_ zDq&;9kYyOk+VXL{<-I$Zi*x5%W3rF-Ap>Ij*_FiyYYCMO_DLwqD&TmBeCMzMv zP=e)vuWZc+6SHJ0PE_0p{G>t|Z{Q29Fqt;vt&Y!=L4oflNo*BYllrI-$Dau;8ISdu z8ubyBKdX9z_Bx5)0z?3hgjy`eaSe1S>11wSp7D>q9eI~-PTAjT({srCCGG=)H>TnQ zbn6w2e?&d1qiOBu`iSI+%MP_Ko9{TDw7@|c-^d2eQ07Tl`1_a-Fd5jlFN z_WHdrHuLsRpkzXvnT&?4?zXRkA^kBhF7@?a5kP1J8X6_8L`&PR1x-Y_ocxog=2=E^Sz0h6H`KA{^ zP02tn#nK7Rh{qv5uCRPz%Sj^X1~pyiis%e@6yONeG9Ar3l+v5F=?vJN(7fFl5dCpa z)zP%N*zt4x)UCCQGr#?fBLStT4XZwqPhBKzgH`<`+|sRRikj59ubz+?Wv369Pv8tv z0lFt5wSG}Ldwt#2nrou)6WT(8%LG3Nd0)FGRhy?2O_BP*&a7-IEH{il2WueF>Q>9d zqeesBu}Qdk+@bWg`{}9Ops>IN9(L8Cce~}9OEH^&zbABiCHGb7iB~Djf|M*8Inxw0 zgGh=?W?^3uW%`9WUZ@fBte%u;mdn>jz^hX3KQ^M z8%iWC?TN9$fV#Y8UP3DmXhVJq`zXxqPba1^va%pQ?>*mXvT5!{n z--wJ4{HcP!0$2Kd%c~aV9i>(D&U{#9knVenr6ny(br+%1d#gXqjy#@BP0(1M6+o+F z5UP|<6+o>Ohk_6d0d1VgZFx{@(%S$wCNjHkR6zV(Ftj@)8v0kYPjgw-EP&LXp7gaao$1qr{~0ZkUKsaEdjlouC&{X z&CKf8SM7VKZc-q8dU&tl^WHgqd?Wg%0(-d*q=ua6oy4jh1WFkjr1vx(B{@&EVrdNjsg^LU?{C{!DN(@qrl9 z{V9y?8$BYQaC7-fLB7_Dqp}o2?;ky%n!vDTed{MtFEfVx4`S(L1Syt2|7={-D5ry96Gs;ilPn00{$D0Sjb!H1Yr)eBBU7~AZ7kJR0(XZF! zIw!=t&DM5Aq6G}Qww{a!GZmE()DDzQY*j_*ka_tsT? zF-;oh{rCkW^mA(Q*ga`l;@hrptnHa;{@dpM;v&=~+sW>@YI|{Qy>#5U0_RjOcbI{Q z{Ewz27K!ct!&#YuK*jfSjGd4d3#7Azgz0uqII_I$9s4apbpSxPoWcSU6|XN$jRXZO zOndX!)AM*0=eyUtvQv||@Xq>KH}?eI!?nc73KCwYI^bR zqGeJ#rbv*}wW&uS9| zrDAFtn7U#HHJ91?s$KVG3&0v;v|P>`#N6bQeVm8tjF`#;6761wi0*!GXQFMvUaNd( zT&|h(;>)uUVSI*RVSLQl$kJiLfkP;g6>pmo=^a#VEViAn_DIoEaMY?_G zf`#O;_A%^ngZ0Wmceocl6l@(4+t}VM>Fa^9-ld@4f3(F`3;DDv>`-+TKb&wl%Vz0< zTo#g<6R)pLb6UO>Di2h&>woSZIGXcIuM@Lq!uCUvXVshL!REIxsNBKs0M6^q{K{&D zXm54;Ww(U>L%VhJdODBvMob3Nhw4Y(iy3KbQ@h`~_&09sQ$Za=KUn9o))m=;T%WtZpZ71&7pZh8% z#gUD^kCes+4RB#Gl|ea#U0D*ctT<1)UXg^itcFPuY9{yzj?rX6yk))Xle7RwSW}nrbnEQKE(=pO3nRm59BHDiAI&ZNvCUC5 zm%RE~)~@sTz+$D>c0mAYyj$4n)+cB~?D`o}@AU);pX6N=Ha+gR^og-&n&uump4nmr z9kKVJBI_EqQ`v=B-Q)!2l6SXtZU=kwGR=(p zJvDrZja598LBA*8u)cMFgUHiUviGGaYO!A5_Gk$TeLt|2F|U%R+>Df;6Yx}&5%b{; zjiVpXfn8af%4%a{dpaK>5xm47wD^M~w4r9KT%J9d4MT#$YyMM~yZg>Di#oP!8{-S$ z5q+ef&jT{6Q7MCJx012feusbuUXF~$h_QHPxl)Z#ar!08w(9cvX;N9UBJFAfrh~lA zN^9FhccHw=D0_Xcld0ew0_48ouhY?4P&mcqz==C!qX^!{u_k@=%qHk2q{Q0cI zzm%;KaGF~O93**NLlp-G238mVG#(p)IZ99V^PoOrWnw&DyG01TUwrXmetC=$F?$F>9|?cD-ifN} ziBxZ5R|;$Z^e2Ud40ok@Eh`Sy2k{T&+qsq-=ns1VBjZWWRtc2 z>dO!GoB3Nw;^U8>QdBC!$mI(ubws)TJ=4x_ z{#8+jDeKyUss$NcyB#zcZv&lF0UsF%^p-1zZXv{1`jK2ICl_al?oJlZ*;%%`W(w(3 zLtO?AXX)pye+|=GQPzXDrR)qx9~?`hv7Ne`w0|mj*StZYC81R?3^oe0W3=Vl&XME~ zR0+mpgNIUXM31`7rWf48_c7D!&fhJ41K-uIO-@u?#K3US>8O@4 zF<1|xgftY{q9QG)dpVm8WSuJ8r>vtN&z6Ghj4?3CJCBQzQ*d!ZLV+3<2|h$NsqgN912B!67& zy<@`y?uorpY=CpdCYB&zqlAw=RVKG{btbyJS}=4yJ??~8do7n4yz66L_EwN-=weg* z0BK^X{y3b(yLo&9Te6zR%UfN>cUj_1*-eOx_2%wkr>m7yanh4*E(oWq#l#BV-hPS8 zE=xYplxzZ95V|I#lC)y3AGUSu;L;2By{eVW=uGLnmvxDaEmIUpRYpqLHoFltu7>Ik zGumcyt91-MS*zgsDOpgT(uN&pvFjX9?G-MuwN{ca7_@U(F_($c&8htnBeWDa$iaAb z`R&(Gx%@Tn1+%Qfv3Q7;9iBxjb)P)H2Wgwqko{$A z*0?3(C6TiinPmD%Z<pMQWYH)loXWzV`|d3*~<&Jb3}i-*v^&&d88T# zZ85dXp9+OE&xYpX`QT7+QkTU#B!RC?)fwkqirs#}!iKqQ;M2w64u`5y(IbjluwIq- z?*5)3MUYmZDG*9V^pi4tSz{bJ?00a~%ry-=K9OLyw(&U{ySxUoj_Oy~hjABGNd6d9 z?p2D&??oP@Nj=2L>O(47=3Ph8$@=v`7{~3vBAY^NpK_qP6Kt18+rdi`gWh=9mZ8ym z22L@1!;8^J-TNnkBeI+VWiLa=#wQ|Y%@~WLI)yWyJSwW%o_I42M#v0>=tq*1rJK#N zbCnu8UdZ%aKp`I9o04VcU7BEPjV^!BC+-_;KNkB0bDD*QEio~>=XgIl@ILDxs#u2; zf*FRYUldpK96i_J;LPF%M4@;lvHYt%x{FDh@Axge-@m(cBUj>O zZ`0@#x`8(|%(2lSA<~ec^>u|m!@HYmq6$Fm^YDG3o1yjvDWKu+Km)kgNsdYIs~@lj zVv$ZUP3U;Gm07Pw%?$dpOou<##~#m56ow`Jggu2dUB%m2DlrkSp)VW6UI5576jX0W zMPw*?Rz7JTG;TBE)(FoX;h-m^5!f;)Iv_KVY_=;DeZvRH6ibg;NPrSdxbpmud_59-CC}^cat1$tK5$4<^$Iea zWVl-DJ(yr5jgT0o>Xi;g$2t-bn-0l!F9dF%5e2;Cp3R2ZPY`_4GglsX0uTuL#dIw| zB`pV)OAfap-K)m0Z9{RlLyQ?VL$*fHnMMur^lV-jCEn0>f4k>)<~&zi$z|)9>BJR$ z6!&E3r#YIbd7ixpr96c{2s42SknOaNMbqTAn;9SW7%5Ax1=LEgNJ2i~7R6t_(x+dn z7Osv)E*R?-ZMjG~K+`6Z!CCIP;H;O&G0{ZFy{$vB8H_DV)I6piC%>;~Y3p%~A8tjP z#I2WlVcSqtw|BP0lE3f&N(L}nD4Hf1rMd6zj z#`aDH$ZyRQ*|UkR)9pFokv{E=E$7%&a!89pdQK&DW1UH;_oTMGNR5?Cg@4se8h;ba zzDQa1cD79{)oUiJ$MaV7@d*W8Tjd~hbm+zU3koGa92^0epBv>}U&-l4@BA2mbnn;P z8S(z~l*&$H)qV-Z0GY~v9n9uMz-3i3@W_<%y+agq)GnDs4cutSn0V%Wct(&fBf||f zksk5iX;SS=Wg{l0{Yj{lFq7+>vE~oqlcZ9PHo(|*5L>kyCUI3o-jTBXiYhj)dmsSI zGo~64#dJQKXG*nL-ED~2Fljnh&B~N~rXrl8>6BRn%ak5xW&@+bB_sNAib_B;lP6vq zQlhMtggnag=D&7!o0NW}232vYH%oi@f4^!@vr9469Z&|=ojosC@S4!`i8L;oM%?GY z(K-`6LYT5=lC>)LTtJ{fx0)j7yBo>cCV_s8h#IJN-eG#O3i?8&kX;Oh+Pb6YIzpsd z7p#; zjtLO?K=ye&8r3OJzdIrE#~@PT54?7#5hgRg3vvTS!@~g}D%~kEd!XQZ8eP3mndcEB zbvVYjoDfaMH<%^G)B{_PKiEQm(AR7E0SR6-%=Md|d(*$97_WQGq0L6h@hJ!_>TT(D|<4M$K$n9Or(y^74RQH zq7oyp~RHgE6$Pu+%}L>j~KJoZ+Q#7@y3x!0SYNC zzu4<@I3)knZqa8W*=)d7l0(vpX-A#v>O3qeGo@*SD*CN-#VwJ0ylj-bi`u;eh=bQt z;w5vI$?qxpt9R`rmA>8nPDpEcxruAB|MRW9WnQg`jD30g`+>`M*I>B~9ijEb>UgyJ z{Al~?@ltU-q87*~0I5F!TZ3)8VqCBLwntTDoDZT~q`t!3*S6%AH(sTi`76dE&xYLU zg^g&b+ce^AYqwT=FF-_t=zG9y^Wo_@3~UOMmUC;X8x4fWEeLhgQm4Pwbwno?JTz}a z^yASr|DSp(){MFG^dKls)!zUu*|Uo=It|f%?@$z`{lv~+d{@bOHb-qbzwPolSAKa9 zKCAEY63MId(XJ0C$hUR5bEw;8c|VipF*k1E=RNxXkZ>3Pw%_R|(4FSX99x7D3h@q9 zYiY9b{Yr^T(j_Q+`oU{?x(pY6ksH%R{K<|U)pDlo>!ugcJnB;xE6I4);Amn%Ge;$* zOScx`t$03Eu9SJY&)9JW&-)-62nM3W_;iz#7ikyk-$`?z-@R_iJuEN_@$tp7GEk*G zpk0~`DTr3qm-+ij?W21>j1Dd)fuqm^8&T&3zq06+xX0q-LHct(c1pI7U&d_`dv}ZO zHi-C~rCv7Z@84Sp^h%pJht$sV*3NvDYpjey{Gyp`K9@$voP-~AwR>Yr9%D5&t`I{d z*4s5w5iZT@&W(1}hsN}ezM{6b4>osH(7o`+XPYI5exzN4L1%_ON3U!}uV;hzvyI_m z`l+j;H5*d|aq5={mpZkb79=i9u-Y>$M%mF;C8=4WRk~vnMkIS^k=$%QxekCUHo#7u_PJo%-O7* z3e_ph8ei0_PV^YqphVX^MF*O{6K+~1nns>%$*<0ZmfmsCek2fU&KQ5X`yl02`%}f0 zgn_`I5eA)?HXoC`*GA{qqP>;vpb)2spjxlYCHaw{gS?D&g6md!{|vZCng3hp6Dvrw zj$Tr?qXQ_;IBq|Z+A?Mtxj6fxOgU6?ZnyOVLX!rqB%V@tQxpK8<5plY^+v@q*EG1T!ia+e`E3mE8=-b`M8Si! znX-twf@&4kK(5YH)AH$Fw?}?grk67wx8Y{`$I1oG#fL@r^tukt!Use~hcTgSQ_DVU z#`U^owXM=Di|}XVfyGB9dgF`vBVX&lTd51LjO2r3VtTTpug=7z)H2bM>1Q(APa}8* z3$H^C@(VL&TXG?EPQC` z=qP9HU^Cd3)U8pm-U5kyuW-vc^7z4Nr;V}4SN*jKWc}2+fuRs9J)V&i7O7iOmzc3+ z0b;y&i+`IxQ`%_2VQs3LL60UXw^^2UG=JR?QzFgE<#$pz5%hyw1G@b%oeEad4Bg6Zk7 zMy@8SEOgWv^KgIs#$`cUcQ-a}Pe*gqI5WXUk9izIn5T2z-U+c!5ywfkIyKHZ@+qZ^ zJLnVqXzr$*N?}C(6^sdSvlVllP14hOM|tON){uiCn;y;jv-x9V<8k(Tx{pY_<_aLt z*xQAMIt+DQWfT-W`GoQUd|QX#9u1#s8^jq;*o}HFa%^mf?o>9o#FZv8OFSIUCtQ;r zAzC$ZHCTHvQa%3TD8)mfIch0U=PWv*0{Kh}75QMQSL>^4Z*_n1#;04ny&5rdu#s%R z;Kzvxwh0awBa|E&`S4GX)GHa_`!+3o)vg6DM==JNGB%Y!6JTEr3Gi|jF9|rsDWFmu z?5hQr>mp&pNgv{_blLMyP1Dwni#M)pNNWOSJsDX_1?E;1r@2?x2Rn0%WUyQNO|#(B zcOkd~D#sg+yV-FvPA$&WU}_4wIKBey!mXE_i3wlhpL*d_Ajbmk$q_ol5N}Q~MZhea zVz)j^=I;TtX02J;4beceAdkTaK!Vmp0hId}tC-fiE3}|ycd<9m+u1USxL2)9){=-F z@Gsiu9Y9PMn+Z@}IA_^bK_!dox0{Zr)(D`Vo$;x7K-a~0z3%E~ko)u&K}fn%5(S`~ zkDL6nky}ZzzK{{FA7tUV$>*Pj0sb%Ll#CN~o^CJt6=oO*8%fB{@pcYMWR(tlwAUcQ zzI_|Nj5mj{eHRhFQ2CNRoemku60ydagmAh+i%$!R%k?p{ttTD)5-l#bvfF&~VCC-yjT-16`)gxA5^Tf7dNDbz;u| zt<*ce_U6898kTe?wq75Zp%;X4f{w-nLusifC_0{x&Sf$b8U;2+p@cgj40yls67p`E zFE`cx)&Oh13Sb&^IZgu&w8gUZEFqw10#zW2!I}FQBk-Wp)G`J5i!dKRqz6DN0JYOT z*sZEA3i=d3nl>b_W1Fy$RO*UY&r+~-;d`tFw|>~Q$U=64*h-sjQ~aeA6Zp7fp${m zeK!G2{5~NJZ%}I*GdtNGe2{V6+)imLOraX`i5ydx>DMic&{VHa8fHL-iwpRK?|6pJ zO*#L+`c#?Pfw2Up{{UY8GUstX0Otpj!(8^SUQ z5FUD_nBcYH))Tg@E4N>>hU!e2K*ru)%FdnpMlhh4nAO6OmX8&}iDHanGq0{XZZB~E z^(BE(0nWN*Ly-C8M_dk$R4$VqqR)eg_^Kw-*I+e>XsK4;m5@7S4NffAFn7F0S}D zXA-F?DY4O|JFWg;-PdyeM)LrU_c)mK6lCn2X)J2b?qOAe0%p9le*Ean2T6{WM7${m zL%7&oUw8@;>R3>>-NH@igK|~cQ1_hXKN|_GLGU9LwkVim0L+y?QKJgaqV3ysY~DSAsrwS;@Sa)KtBV; z6@gN_zcqM+lAV+DV^NYYu0Z)K3~C`hb7|s^|F4aF@y^#w4c;NUloHsO_Am#%+0IpT zjl@N-$}_B7jN;(yTIgmhKjKJY;wc7~zWF$tp6SGOL^*@I0HR&BU@Pdn3|PInef5CM zH8ILULU_37Ol4bnGNhSXgKBHf15y6+$LS26zYzi+@M`E9G9RD4*5HxBNeI|h#`yQr z_#-rx&2@hEG$6a;@=ec zZ%km*?azR|uO=pc4|Eyi!sZ0d68~Ph421gX!=y1$>sf@p#=Xl$tAH2*a&VBF4psTv ziut$6`;%M|*eB6|3&3>!o7wa~)Bo$YjvF4(Ai)7(qJQ6#{!4-*%)oVziXQ;uO#(!V zOzDPU6@Qx6zlQq#)=~x7RSK57fp+}@HDIPyn(+YB<9}TVqPh|7;%{!s*c(c{LbnH$ z|0KPcn|*WoH`nE#9thnHPRsutFct-vQ zbcnAK*wg!pPYM9i)qiWzzkizpI3TZ=3dAakY&9DrZDn9=xir%)cE{gbhaOX z>po&Hd;XI;HQj(%QU9j1HNSBMv^Tzz{+F%;u1f*1xKlVDsY#Qkv;o6eyDn)%{%Je_ z^)ZwWhY{Eg%x=7w|3zo(1BkXG_j@^DUE_h_-2VriE$BTkNZ#FqWnjE>;3Jl1=^D)c zblV#n#drCe+H(|;xOrMzH_1PI4W=6wRZFW%4R+uNapSS-{0~0c(i_Kb{5PNNF91p> z#D$aOhHCNe``yjkE(<_pzB6??#2DDGFws zBSYG#c<}$*F8>y-wQ+-| z@{b?9-7_DxQl)Lci|^e2KWM8zH3c+rqvH*%pFn_I?Lz|y@bz;stxbky&yIq8ed`kv z6T2M)(`28Qm6rpB3`jz3oPjLHq>mNuuP_V0J*5AyuLoixyb=0i77c7bUS%K|fQ!h3fe4pyt^ad=cc;aUq z04NQZAize7j~``1mzXmdF5tamTz@j}1R)3E(saWfbql_rf$yP2Kedq_>6qt2CSt4E5_g0C| zO6o|f2>>&+IE2}l{u$&T84PsHD7=}ZeXq95-zLco2+tS~5FH8=O$O*1`Xj}9pR_J0 zyP$w|+i7BU_7OmwK?@iy4o(#&I4=5NUWOUjbCDszN`cV{vx>C&aiVXQ%DgPGXF6_mvaDG!F`gPxbx1Uq1{t+X%Mqu8(u?Fadsk;OZq-kCK4jA#?TXi*iX6rW6>WAFNW{aCMXBC<)DW za>IEwqFEp|Y8+H~kqmD#p~41Ba=@>%WaCK%`e|(_#R3{|GEi%$SlNYKE?zTuT6&CH ze}gDvq6XA=S&mCn5m4WoefT0^0w05miLW+K=LwAL{q@S0tNl%dW~s-);IVNu2xf0* z7aw{msJuWkaPVXPancr=qgW-0t$O21X}N`%I8;jnex{8+E{!His*|gk3oa{8fjut! z);n?n(_1cSuOCmJt6L#FC}}Jupgq}&x5@P3XdiX4`YPT%1p}?_>PfVsuUNYY6gw;C$;De^9i6-aKs@w#Zq>W-dYM<}_fSI}Dm z5348uT^T%jIX?n8rU6A|t9n@@As`a)RF*=&ra#bowm+RiiepRC5i0V}4Vd~T&n*3}H$>2*US;kImO|g(+%oVU z#WiTI5?L2=GhpR0OBxXfE(j-FTU7?z3fB%f=$1!>@^(e9_6Y$}$cDw}1# zmyFBS_t^y-b6>XF7zEqZxdKA5HW&N}PV~j#L{l@E)PJe0KTe_8U&T!|FvGA$DmjOBr z>I`wB-t<%s7&{HE-+oYghHeLHmN_Wla3%Gwjz{JdFVIdl$cQbps7_yCo zAi5y6#mSU@Ce+hm!K{iaj!H#a{)4^ZDMjt~hjy-{5wo7@#ZF%cS4H_*1L-?g0{gk7 zIBmQA>QQfmwQ^a6c}%EM?{3Gp`(HiqpSn$7qIn;&Ax!f**Hr$_nbBQF`nZKp7#mXK z%>IVVVH(kA4}T7fp830*61hzv0^w(cbGs6G%Da{Kmg)v^Bgxi|Db@m+Qj{*XH-0Su z^%wu~G;UBb#l%hlmlDk$%Zq_g?=JrJ4G02(Or>vZO;!R$SYp(^PC>`>D}9Uo?%uZV zX_UT4OfREkgTXScN896Fv!v2YqGd!SBwJ$lj}!*|SI}#gFbi@E8$5$UNtbuUEhZCq zjF#T{BllgdHx&?L0t1J+I3QY=CZnC}KD9-IhRoc9^x*5nEw{1GL`XtewL?vhw6{}Y zK@U4#*H@mI3-ur0`rk>WMk+AszzDLyABubo5Zd`$|;K zV~v#YqYeD}75QiWL2B{SxkhF^mqZ9|z}F8y=p)UPcsRFI*{+cM`f~-3vJwa9Attt& z!MP-7<*?&AMFZW}rSI4wkj&esR9QBBp;O1T-8MTd3Q3cMWR0WrG8``OtF)&4(A#Uh z8@~{h=nwNMF75s9(}q}c;5v&Ksr@C{r^9MliDh#h&?i)O`Z57%y@STt{SVw<#^%3a zWlhpnN4En(?d$zsdM^&S-GQ_3^8=&T{uNxYwt@W$W2nu*8p+agM?Tb(QkYNKbjPL* zaxeNnX7&$EQ^0X*()sxY@IW8Nssr(so@~IvW{CL;K(ukunOt*|DH@qY^bC8*d@;c>?J3Xk*>FyOYZuqom(o~xP> z)VM9?c=}lib!pbkzm!oZJJGeq7^vgS7o>Fwg}S?)7#9-0P$I-nL9~tezI{@2cyyil z%BoK%P~moS=3*o114Fp}qpqO8?a0!TQ|o-b-yLIu{t17oX* zWi!(Yri9AFi>~Mu;RB$|xLznc+Ib$8)O0jWA8O~ysW-=M=C|%;aC?f{*SXG}fpNm2 z0TnS?O=5ew{>b+j)mBxqTP+bda`2GSeTv^ogEfOQPwV~4RGF>hx{l}svP<%sXZqws z*{M9J{wL7+LGw~|kR7^g4KfE|VamP*s;g?wAEB47?g%snWJYC*bHi}^13Vvu;u2&A z!}~c6*H>m-T#kdK8>TvGp$Fe~t!!*LGYamx#7nv~DNHx0)TNM51vDjX0r20@+BgK(p*xCaB- zZ=j}QsE6q*W$^t%z)X|)dQ3+iIDd}T(qus<@y1Ptby}Hq=scM_KAay&J(Vt$`>~nc zcTCY4$h2^#&@A`!Z^(OpU~&RryS;#8e_+Z46#wY4dcNH5effb*zp4u@R+?C6>)rFsCGRek+T< zWb^Kpl|DaPzSy+JFwPPUICD7oE^EXv=l2rz>>xfF6%J=Rx?cijPG>w#nz@%2xslBy z;?!@#fEJL>_5A1{-p+y@fQ_97l-UJcX3_*yxC2S+4L-?h z8eje5^c~mt)F>;y0HndBVqyYIF{4*ER*Fi%XV~CYf<@E$uu8czWhCVuK41QMe$6x3 z>?T$E z%$dU?amSG`Xo;U7O3#|I zb02;r!h4%H-aSjc9>hFfn!7=h|DhkrqzK9moOd`la@iiH^J182OjQTk5t|T8+fzHW zfLl@b99DQ%FRqqoLQ+WttOdr+{T-lJLkwG;uPlCjg^VA|^fKZ~{tAtdlowC4qS!}n zP-eR)=uHWIJ~3whY^^uY#|0+U)3B&p3TZmtVO+tAQFy&Q^J>>RlX<_UQt%O?*7GV; zKxclrj4cZl`Wm@rkJa*b#N3dZFi%(*5QdJ8!9-J#eJ(6ats%!`Q-`Wd;)hP4%;L5s zAe}RlrCeJhv2+fC)O--HK4Je7X>%`ZCC@GO0<%WcRG5yDwD>uruu~*`P1sC zMoC&Ix*={h%-l{%zlfcFYGh0NXk$uA|vZFM5V-=5}o8W|KlQh1L? z{xnQ*mSMZ~GT9Z+`7}F)u>jF+qm-SSJ2$KQi8B@P_;qTfv{YFxNMK-zd3v^fUXZ?$ zE*d#JDWf!p4tMnLl$LAbe4VP4(D3HV*754Pd5kN5fs1MIaPR%ayM;L{2ARH#`9lpv z)-({$5X7#4M%~X&@gAgjPMa!=X$&pUPN8IVs0Gsr?$orKL&Y`KPxs2&T1KlL6q}8C zd94aJ!(pmph+T;E`0+AICf4>c!|5AqPkPPuI~6G^m<3Ccy}jSkr8bO6F;DuEQ%~^ zshg%%<{L*31nLTCw=frIzW1sUob|!NOm#b$CbymFpVhrjTKR}s;#>b=uCY?6rg% z#asd9vN(Rx!Y_YS2VZ~Ks!Z0!hb`p>X-N6n?rw5SO)vnL__JJkF;Z|g)0+PNUXJwlXB}+=#55i^((!AU z=G3A5Q##F(1!0995s9jn(t!z&fWy(Y9d@NL*f|7aGrff= z25@8e0z1D=ThqkvM{Pau;=y&Ya$2Q?M|`M!(L3wj4nbN@GW)ZGZDXqU4p6~X+)s7} z1Oeujn##z*IDh~Cr2Mbf4*GL2p6i?FLY>NT${qOX0uEnc^s*^c6N<)nb|4N z-q%@^?1j8Uxj+`?S5NOfTqJUk_yEU8c-I{V`fje39#b(7l#7VA9@fjH#*Auoi2bweHQiXP2}0KKuO6*_>ft?vg23 z-$tJ>q7Rw-7Z+1qOE2y5IY*aXF9E*NGE38OufJWNP~w{@V)4c8dkn}rTwI}ce%PXN zvZcU%ut%S$p*v^Z42`~dsMc|1b}&Bh8+R@!ZuFZ9QVKi3v=~84KvvX@^oK4Or3@tH z5$kGk43>kNY&QhlT+f$Yp62Q0#laSU$DbicK1K&Hyj}7<(g(WB9_kL<)y?4{wjp?e z50>Ves=Jcva#e&XKUw71^J-`GH*-@vjSc?XWFNt|Fiv>CyFxF<3zpOPIhh-tw_L|5 zeei$%WW%QU&lrPS7S%<5c(U>3v}g@sD|NHUj36Cd`?vP3(V?E%?_E(93Iy@v`dpl9 z3B%om{v$ZT=wNb`j?VO?{zAXQK2x$pABy)W8EMYz?C(m9tYSS*W?t0)c1Ni1X4lt+*DK~jiJj)By`Q=VyJ;2!cJ*$;oEJa(Yp z_Z|){yeC%I@0+Fb&fDv}+Z%zRa`Eg?_MAI^F7(z@2ToD!`&4|o=8C5`Q{GJoreh?N zEy+?|p%ubMzEayHJ1|EA4(7O6bUbAA##G{!M+{G%xJgV=b}A{z8o|;h733A!9~_as z%5^|3)b4AhN`rm&hm_nvXwN2lcp?>1JogtKE;&)gdLtMz4+E0m4G~j;X{77OZ?kMSnwN5Cse{6=ZEzB;4Z~wo|XYiuVv;ThWuOps4i~6U-j#oI9;I39gc}4QO{d{e{1Hp?s4)1m-;!U*F;`i$N+G-N zSy`#^g?C92cp4nrKDU2Eh)#ai!wbH!$Rvs?_HP@N9c-kyx9R$EhYsHTZ(r~Bv+DOTxg|9ee3x;C#O%EDGv^{w0Y!1D#4Mc(_We_icXDOAdn7_B8~5PiYqMFtlW2UZ9T;w{GYUCGTr^Mh${2S+k~} zRs7SULhDlnT3qUVYEAX1p*&58UX-6ITCXyrwuwyBoc5%-3t-B8^-&%_UB@m3L0*IT z->@Y15d60MJ>A*AZI|QpkWv585FSrD6Bll@)@1!V;j$}xCA=|7^9$=|)hZ^GazkB> z@{Rh&zeZLoE$ki~nR(<*kKTHyV7&nE2*#~<`zHbF@t)1i?d_|tAcChrS9>e^i|_pUe0ineVCUTVIx#&-Y;WUxx7LPFf{BwvY6;Jai>-qa+pKQo z26V`%S3hxzogXKv&!u+FZrBvtd9rQ1MS$^oTSI4ta#rMbSAFQ!)HX5O>+SRJeQ*<+ zqi&Sad1*q~Y~wxoh3>&s#UyvR6L9+p?@a0Ca&P*xcuVR(*`ohb`t{x<+c&Tcb zh5f>vT>VNsH!enTOvXq%SJ#a@pIk9k6#9|&GVG$OPMmo!N(e1+LeXmAOJwFOmsmte zlGJK}F99zH`5f$3meW6Ie}4ql^vf2RU9c;$w&%F2ncLBT;INPy27SU}yz7;m*cssbB!GwRpbinn+0C z_MYuu>83`%&b01=)PP=#b-msFHW{DUqlEc-eO+whWq#TByA<6k4&){n?xFY$H9p7o zRM8VX7Y=(?&~G?~mCcv_k~W)eY@Yap*Sce@lc#08cROv?)F6%#sTl6hb-;n3t}<>V zTZ11{lDx;?+&1P9$q-f3g{ih29Z_gWbJn=Ieto)K4L!Ii?c-WKZ zvM>2axp4OeGI5rRym{<&;vY9{%f=n(Lskxwtw)P((LHejWgXj4PKnL^;@J@qkJMGX zyQS$L=g!fFD=Q764K=kzeJ|3I2t-kxd; z6iR8oz^I?`bRh*z`QXW!F%p)`(XLrK{kp!UJDDIJt25)ih4CBR{d&9aS7D3BTU*8T z28oyCryIoSVU*FaXVcztoRZ(2#TTB$)QO$2&!4t~jL zK8Tyt8NyZD^l3AaB#kI3UiZm*V?&0B+^tNvdY@c!9pFTYLGHzCD6p?M%1PUWJ|*d% zW3p{0{`T#)*1!KAPNUJD7V7!=Rl2ykTALcAUVhGwB1qgVDkDWZ*5L>akt5;j7b}pJKX6l;(}G;%QD)&&&^>KHqtJLcypm z<*Af_Z2D=9oJk$q=C^<4v!hT+;rCl&%pFs7&$kIH4sF&dKiO<=vin4gy7~P)Oix$d zWU{CX=~EsHg?Nr?7i&w=bdcCO6Usg?2A881zGS9`ucl+===`@(PHXrj1?9M|P% z)C+Whwof{e$FcSNY`(gLM*T=Aud_Ic00siKIAX7%0|90rvVphGRr*uOT^l$Ld;i@q z1+`|KTBZXjKD(^<+*yo~H6dZR|IXUPVJVLcyS5H)KxoOn!|mL= zMI!*4b|qU->Doww3C64h4Q4;Y8DPb)44fuE_!Oi4WrT-<%i>^dy9Me`P}7X zX$R_8&nQzpIP{d4m;tBhk!V|AX8p}$s{+ohgPp!AKo7A~sqcjJ^{g$@Ea2L_)JCq5 zU=xfhDK%z-U0UH)-2;VJI(fU3f>ipv`Spwe%K!NZpH~5vi}N0)c3--o!#n2 z1)KNYxGGVZ5=>1t`0xM9yJ2(p&m)*1spWv_k&-r>RU(0o!304q2I zrj3=_{LhbmQ*jIe=9S`zPy*-{f}HGa^WU`eEv6uz>7nXfWIG=f+rtWy#PqQMa|pZk zJg5fn)k@$69Rc24JdgK8|ES_+{c{rT$8RLALm#y%uhSo`sYQx?9WJD1$};bC{OH;r zmKaq{9Z;^R2LS|>+3D{?AgurVFmDDtlzT3>1Gu6K)Q%LQgnlxgKeP;k)H!L2$Ab=- z$3aufmN$?Iy0z4E_(m8L>XNV?CvPkQmTJt@F+2ofx%{uaV@5-!Bix624yym9fI{Q|fMzK$SZ=8;p-x~{ z&h1VAV+ElgXcdsejA|DzkZKR3Bz*LZ+_^;Has-E#hM}G5#sFM0{1r6wpE-&Awvuyz zKm?Fbtc;B$_&{w0FBGXnXEnXeBY^*QHXCYSFW4H1B7W6p3F#pofmm#6y>Od{+ z;i1fRET~oe3m$Gt?^XluZAG|8Iup5>755V1JyNDtD{yZs!oB+_5l&Y9-2#O&f5t`x z5s(n;IRCn5(fE$;r$~jj3tpO!pqc;WsWZF4U!HOcWDJDS7(g6Mksh_8Geg_=g zkVi%*93R3AGhd=87186sqZ$C_$w%DYbm3YdR{h2L0vU~0v7u|w5_Ld%Ix1mkdGO1v zp93(kY-xL~nOF6Tg6=`efSTCL*TCej0FKY3cd4%69mLg2h}EkO(fR;RNCbA@_A?=` znV1a+L`+tLP?$imOse#qT7M*xQVB;c3&tVU^Bn$5^*jtx9E1Bo2bJV-h=a~~x`q0Wu=RTciNsVc19%zWijD-I$}v-GD@Q)*^hi0^nFqWghWe~5|sYl}DZ=DiivG53I0`Lf0@ zx4OWH@`n9d4UqvBftS9qeDI!?G(-`dzI+M~u48C3G=1!k-Cpixxs?t7bcIW<8@TYMCtCn-j?2rEiH8e!~ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f14ff33e8b5d49365ab4774a4bcd71685f822460 GIT binary patch literal 54208 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..453667c --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sun Oct 29 00:17:07 MSK 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4453cce --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 16acaa5..0000000 --- a/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - 4.0.0 - pritykovskaya - 2017-big-data - jar - 1.0-SNAPSHOT - 2017-big-data - http://maven.apache.org - - - UTF-8 - 2.6.0 - - - - - org.apache.hadoop - hadoop-client - ${hadoop.version} - - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - pritykovskaya.WordCount - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.6 - 1.6 - - - - - diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..429bcde --- /dev/null +++ b/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'big-data-course' +rootProject.name = 'big-data-course' + diff --git a/src/main/java/olerom/namecount/NameCount.java b/src/main/java/olerom/namecount/NameCount.java new file mode 100644 index 0000000..8c13192 --- /dev/null +++ b/src/main/java/olerom/namecount/NameCount.java @@ -0,0 +1,42 @@ +package olerom.namecount; + +import olerom.wordcount.WordCountReducer; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +/** + * Date: 30.10.17 + * + * @author olerom + */ +public class NameCount extends Configured implements Tool { + public int run(final String[] strings) throws Exception { + final Job job = new Job(getConf(), "olerom.namecount.NameCount"); + job.setJarByClass(getClass()); + + TextInputFormat.addInputPath(job, new Path(strings[0])); + job.setInputFormatClass(TextInputFormat.class); + + job.setMapperClass(NameCountMapper.class); + job.setReducerClass(NameCountReducer.class); + + TextOutputFormat.setOutputPath(job, new Path(strings[1])); + job.setOutputFormatClass(TextOutputFormat.class); + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(String[] args) throws Exception { + int exitCode = ToolRunner.run(new NameCount(), args); + System.exit(exitCode); + } +} \ No newline at end of file diff --git a/src/main/java/olerom/namecount/NameCountMapper.java b/src/main/java/olerom/namecount/NameCountMapper.java new file mode 100644 index 0000000..597e1e0 --- /dev/null +++ b/src/main/java/olerom/namecount/NameCountMapper.java @@ -0,0 +1,55 @@ +package olerom.namecount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Mapper; + +import java.io.IOException; +import java.util.Random; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Date: 30.10.17 + * + * @author olerom + */ +public class NameCountMapper + extends Mapper { + + private final static IntWritable ONE = new IntWritable(1); + private final Text word = new Text(); + + @Override + protected void map(LongWritable key, Text value, Context context) + throws IOException, InterruptedException { + StringTokenizer tokenizer = new StringTokenizer(value.toString()); + + while (tokenizer.hasMoreTokens()) { + final String token = tokenizer.nextToken(); + if (!Character.isDigit(token.charAt(0))) { + if (isName(token)) { + word.set(token); + context.write(word, ONE); + } else { + context.getCounter("groupName", token.toLowerCase()).increment(1); + } + } + } + } + + private boolean isName(final String token) { + if (token == null || token.length() == 0) { + return false; + } + + final char firstLetter = token.charAt(0); + final String otherLetters = token.substring(1, token.length()); + final Pattern pattern = Pattern.compile("[a-z0-9]+"); + final Matcher matcher = pattern.matcher(otherLetters); + + return Character.isUpperCase(firstLetter) && matcher.matches(); + } +} \ No newline at end of file diff --git a/src/main/java/olerom/namecount/NameCountReducer.java b/src/main/java/olerom/namecount/NameCountReducer.java new file mode 100644 index 0000000..57f44b3 --- /dev/null +++ b/src/main/java/olerom/namecount/NameCountReducer.java @@ -0,0 +1,35 @@ +package olerom.namecount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Reducer; + +import java.io.IOException; + +/** + * Date: 13.11.17 + * + * @author olerom + */ +public class NameCountReducer extends Reducer { + + @Override + protected void reduce(Text key, Iterable values, Context context) + throws IOException, InterruptedException { + + System.out.println(); + + int totalSum = 0; + for (IntWritable value : values) { + totalSum += value.get(); + } + + System.out.println("1: " + totalSum); + totalSum += Math.round(context.getCounter("groupName", key.toString().toLowerCase()).getValue() + / (totalSum * 0.005)); + System.out.println(context.getCounter("groupName", key.toString().toLowerCase()).getValue()); + System.out.println("2: " + totalSum); + + context.write(key, new IntWritable(totalSum)); + } +} \ No newline at end of file diff --git a/src/main/java/olerom/sortedwordcount/SortedWordCount.java b/src/main/java/olerom/sortedwordcount/SortedWordCount.java new file mode 100644 index 0000000..3911e5e --- /dev/null +++ b/src/main/java/olerom/sortedwordcount/SortedWordCount.java @@ -0,0 +1,71 @@ +package olerom.sortedwordcount; + +import olerom.wordcount.WordCount; +import olerom.wordcount.WordCountMapper; +import olerom.wordcount.WordCountReducer; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapred.JobConf; +import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +/** + * Date: 30.10.17 + * + * @author olerom + */ +public class SortedWordCount extends Configured implements Tool { + public int run(final String[] strings) throws Exception { + final Job firstJob = new Job(getConf(), "Default WC"); + firstJob.setJarByClass(getClass()); + + TextInputFormat.addInputPath(firstJob, new Path(strings[0])); + firstJob.setInputFormatClass(TextInputFormat.class); + + firstJob.setMapperClass(WordCountMapper.class); + firstJob.setReducerClass(WordCountReducer.class); + + TextOutputFormat.setOutputPath(firstJob, new Path(strings[1])); + firstJob.setOutputFormatClass(TextOutputFormat.class); + firstJob.setOutputKeyClass(Text.class); + firstJob.setOutputValueClass(IntWritable.class); +// Second job + JobConf secondJobConf = new JobConf(WordCount.class); + secondJobConf.setJobName("Sorted WC"); + +// secondJobConf.setOutputKeyClass(Text.class); +// secondJobConf.setOutputValueClass(IntWritable.class); + secondJobConf.setOutputKeyClass(IntWritable.class); + secondJobConf.setOutputValueClass(Text.class); + + secondJobConf.setMapperClass(SortedWordCountMapper.class); + secondJobConf.setReducerClass(SortedWordCountReducer.class); + + secondJobConf.setInputFormat(org.apache.hadoop.mapred.TextInputFormat.class); + secondJobConf.setOutputFormat(org.apache.hadoop.mapred.TextOutputFormat.class); + + System.out.println(strings[1] + "/part-00000"); + org.apache.hadoop.mapred.FileInputFormat.setInputPaths(secondJobConf, new Path(strings[1] + "/part-r-00000")); + org.apache.hadoop.mapred.FileOutputFormat.setOutputPath(secondJobConf, new Path(strings[1] + "/result")); + + final Job secondJob = new Job(secondJobConf); + + firstJob.submit(); + if (firstJob.waitForCompletion(true)) { + secondJob.submit(); + secondJob.waitForCompletion(true); + return 0; + } + return 1; + } + + public static void main(String[] args) throws Exception { + final int exitCode = ToolRunner.run(new SortedWordCount(), args); + System.exit(exitCode); + } +} \ No newline at end of file diff --git a/src/main/java/olerom/sortedwordcount/SortedWordCountMapper.java b/src/main/java/olerom/sortedwordcount/SortedWordCountMapper.java new file mode 100644 index 0000000..3f787d7 --- /dev/null +++ b/src/main/java/olerom/sortedwordcount/SortedWordCountMapper.java @@ -0,0 +1,44 @@ +package olerom.sortedwordcount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapred.MapReduceBase; +import org.apache.hadoop.mapred.Mapper; +import org.apache.hadoop.mapred.OutputCollector; +import org.apache.hadoop.mapred.Reporter; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashSet; +import java.util.StringTokenizer; + +/** + * Date: 12.11.17 + * + * @author olerom + */ +public class SortedWordCountMapper extends MapReduceBase implements Mapper { + + public void map(Object key, Text value, OutputCollector collector, Reporter arg3) throws IOException { + String line = value.toString(); + StringTokenizer stringTokenizer = new StringTokenizer(line); + { + int number = -1; + String word = "empty"; + + if (stringTokenizer.hasMoreTokens()) { + String str0 = stringTokenizer.nextToken(); + word = str0.trim(); + } + + if (stringTokenizer.hasMoreElements()) { + String str1 = stringTokenizer.nextToken(); + number = (-1) * Integer.parseInt(str1.trim()); + } + if (number != 1) + collector.collect(new IntWritable(number), new Text(word)); + } + + } +} \ No newline at end of file diff --git a/src/main/java/olerom/sortedwordcount/SortedWordCountReducer.java b/src/main/java/olerom/sortedwordcount/SortedWordCountReducer.java new file mode 100644 index 0000000..e9e7142 --- /dev/null +++ b/src/main/java/olerom/sortedwordcount/SortedWordCountReducer.java @@ -0,0 +1,29 @@ +package olerom.sortedwordcount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapred.MapReduceBase; +import org.apache.hadoop.mapred.OutputCollector; +import org.apache.hadoop.mapred.Reducer; +import org.apache.hadoop.mapred.Reporter; + +import java.io.IOException; +import java.util.Iterator; + +/** + * Date: 30.10.17 + * + * @author olerom + */ +public class SortedWordCountReducer extends MapReduceBase implements Reducer { + + public void reduce(IntWritable key, + Iterator values, + OutputCollector collector, + Reporter reporter) throws IOException { + while ((values.hasNext())) { + collector.collect(values.next(), new IntWritable(-1 * key.get())); + } + } + +} \ No newline at end of file diff --git a/src/main/java/olerom/stopwordcount/StopWordCount.java b/src/main/java/olerom/stopwordcount/StopWordCount.java new file mode 100644 index 0000000..03c8004 --- /dev/null +++ b/src/main/java/olerom/stopwordcount/StopWordCount.java @@ -0,0 +1,65 @@ +package olerom.stopwordcount; + +import olerom.wordcount.WordCountReducer; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Counters; +import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; + +/** + * Date: 12.11.17 + * + * @author olerom + */ +public class StopWordCount extends Configured implements Tool { + public int run(final String[] strings) throws Exception { + Configuration configuration = new Configuration(); + configuration.set("stopWords", strings[2]); + + final Job job = new Job(configuration, "Stop words"); +// final Job job = new Job(getConf(), "Stop words"); + + job.setJarByClass(getClass()); + + TextInputFormat.addInputPath(job, new Path(strings[0])); + job.setInputFormatClass(TextInputFormat.class); + + job.setMapperClass(StopWordCountMapper.class); + + TextOutputFormat.setOutputPath(job, new Path(strings[1])); + job.setOutputFormatClass(TextOutputFormat.class); + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + int exit = job.waitForCompletion(true) ? 0 : 1; + Counters counter = job.getCounters(); + + System.out.println("Stop words: " + counter.findCounter(StopWordCountMapper.MATCH_COUNTER.STOP_WORD).getValue()); + System.out.println("Total: " + counter.findCounter(StopWordCountMapper.MATCH_COUNTER.TOTAL).getValue()); + System.out.println("Percentage: " + + ((double) counter.findCounter(StopWordCountMapper.MATCH_COUNTER.STOP_WORD).getValue() + / counter.findCounter(StopWordCountMapper.MATCH_COUNTER.TOTAL).getValue()) + ); + + return exit; + } + + public static void main(String[] args) throws Exception { + final int exitCode = ToolRunner.run(new StopWordCount(), args); + System.exit(exitCode); + } +} diff --git a/src/main/java/olerom/stopwordcount/StopWordCountMapper.java b/src/main/java/olerom/stopwordcount/StopWordCountMapper.java new file mode 100644 index 0000000..45e7845 --- /dev/null +++ b/src/main/java/olerom/stopwordcount/StopWordCountMapper.java @@ -0,0 +1,60 @@ +package olerom.stopwordcount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Mapper; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashSet; +import java.util.StringTokenizer; + +/** + * Date: 12.11.17 + * + * @author olerom + */ +public class StopWordCountMapper + extends Mapper { + private final HashSet stopWords = new HashSet<>(); + + @Override + protected void map(LongWritable key, Text value, Context context) + throws IOException, InterruptedException { + StringTokenizer tokenizer = new StringTokenizer(value.toString()); + + shittySetup(context.getConfiguration().get("stopWords")); + + while (tokenizer.hasMoreTokens()) { + String trim = tokenizer.nextToken().trim(); + context.getCounter(MATCH_COUNTER.TOTAL).increment(1); + if (stopWords.contains(trim)) { + System.out.println("Contains: " + trim); + context.getCounter(MATCH_COUNTER.STOP_WORD).increment(1); + } + } + } + + public enum MATCH_COUNTER { + STOP_WORD, + TOTAL + } + + + private void shittySetup(String path) { + BufferedReader br = null; + FileReader fr = null; + try { + fr = new FileReader(path); + br = new BufferedReader(fr); + String sCurrentLine; + while ((sCurrentLine = br.readLine()) != null) { + stopWords.add(sCurrentLine); + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/olerom/wordcount/WordCount.java b/src/main/java/olerom/wordcount/WordCount.java new file mode 100644 index 0000000..930214e --- /dev/null +++ b/src/main/java/olerom/wordcount/WordCount.java @@ -0,0 +1,36 @@ +package olerom.wordcount; + +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; +import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +public class WordCount extends Configured implements Tool { + public int run(final String[] strings) throws Exception { + final Job job = new Job(getConf(), "olerom.wordcount.WordCount"); + job.setJarByClass(getClass()); + + TextInputFormat.addInputPath(job, new Path(strings[0])); + job.setInputFormatClass(TextInputFormat.class); + + job.setMapperClass(WordCountMapper.class); + job.setReducerClass(WordCountReducer.class); + + TextOutputFormat.setOutputPath(job, new Path(strings[1])); + job.setOutputFormatClass(TextOutputFormat.class); + job.setOutputKeyClass(Text.class); + job.setOutputValueClass(IntWritable.class); + + return job.waitForCompletion(true) ? 0 : 1; + } + + public static void main(String[] args) throws Exception { + final int exitCode = ToolRunner.run(new WordCount(), args); + System.exit(exitCode); + } +} \ No newline at end of file diff --git a/src/main/java/olerom/wordcount/WordCountMapper.java b/src/main/java/olerom/wordcount/WordCountMapper.java new file mode 100644 index 0000000..9932e35 --- /dev/null +++ b/src/main/java/olerom/wordcount/WordCountMapper.java @@ -0,0 +1,27 @@ +package olerom.wordcount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.LongWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Mapper; + +import java.io.IOException; +import java.util.StringTokenizer; + +public class WordCountMapper + extends Mapper { + + private final static IntWritable ONE = new IntWritable(1); + private final Text word = new Text(); + + @Override + protected void map(LongWritable key, Text value, Context context) + throws IOException, InterruptedException { + StringTokenizer tokenizer = new StringTokenizer(value.toString()); + + while (tokenizer.hasMoreTokens()) { + word.set(tokenizer.nextToken().trim()); + context.write(word, ONE); + } + } +} \ No newline at end of file diff --git a/src/main/java/olerom/wordcount/WordCountReducer.java b/src/main/java/olerom/wordcount/WordCountReducer.java new file mode 100644 index 0000000..f3ae89f --- /dev/null +++ b/src/main/java/olerom/wordcount/WordCountReducer.java @@ -0,0 +1,23 @@ +package olerom.wordcount; + +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Reducer; + +import java.io.IOException; + +public class WordCountReducer + extends Reducer { + + @Override + protected void reduce(Text key, Iterable values, Context context) + throws IOException, InterruptedException { + + int totalSum = 0; + for (IntWritable value : values) { + totalSum += value.get(); + } + + context.write(key, new IntWritable(totalSum)); + } +} \ No newline at end of file diff --git a/src/main/java/pritykovskaya/WordCount.java b/src/main/java/pritykovskaya/WordCount.java deleted file mode 100644 index b047511..0000000 --- a/src/main/java/pritykovskaya/WordCount.java +++ /dev/null @@ -1,80 +0,0 @@ -package pritykovskaya; - - -import java.io.IOException; -import java.util.StringTokenizer; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.conf.Configured; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.io.IntWritable; -import org.apache.hadoop.io.LongWritable; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mapreduce.Job; -import org.apache.hadoop.mapreduce.Mapper; -import org.apache.hadoop.mapreduce.Reducer; -import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; -import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; -import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; -import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; -import org.apache.hadoop.util.Tool; -import org.apache.hadoop.util.ToolRunner; - - -public class WordCount extends Configured implements Tool { - - public static class MyMapper extends Mapper { - private static final IntWritable ONE = new IntWritable(1); - private final transient Text word = new Text(); - - @Override public void map(final LongWritable key, final Text value, final Context context) - throws IOException, InterruptedException { - final String line = value.toString(); - final StringTokenizer tokenizer = new StringTokenizer(line); - while (tokenizer.hasMoreTokens()) { - word.set(tokenizer.nextToken()); - context.write(word, ONE); - } - } - } - - - public static class MyReducer extends Reducer { - - @Override - public void reduce(final Text key, final Iterable values, final Context context) - throws IOException, InterruptedException { - int sum = 0; - for (final IntWritable val : values) { - sum += val.get(); - } - context.write(key, new IntWritable(sum)); - } - } - - - @Override public int run(final String[] args) throws Exception { - final Configuration conf = this.getConf(); - final Job job = Job.getInstance(conf, "Word Count"); - job.setJarByClass(WordCount.class); - - job.setMapperClass(MyMapper.class); - job.setReducerClass(MyReducer.class); - - job.setOutputKeyClass(Text.class); - job.setOutputValueClass(IntWritable.class); - - job.setInputFormatClass(TextInputFormat.class); - job.setOutputFormatClass(TextOutputFormat.class); - - FileInputFormat.addInputPath(job, new Path(args[0])); - FileOutputFormat.setOutputPath(job, new Path(args[1])); - - return job.waitForCompletion(true) ? 0 : 1; - } - - public static void main(final String[] args) throws Exception { - final int returnCode = ToolRunner.run(new Configuration(), new WordCount(), args); - System.exit(returnCode); - } -} From 861a5ce5ae279b844c3bab82762ed6eab567f49b Mon Sep 17 00:00:00 2001 From: olerom Date: Mon, 13 Nov 2017 19:21:00 +0300 Subject: [PATCH 2/3] Remove redundant files --- .gitignore | 2 ++ .../main/olerom/namecount/NameCount.class | Bin 2036 -> 0 bytes .../main/olerom/namecount/NameCountMapper.class | Bin 3479 -> 0 bytes .../main/olerom/namecount/NameCountReducer.class | Bin 3045 -> 0 bytes build/classes/main/olerom/namecount/Test.class | Bin 1297 -> 0 bytes .../olerom/sortedwordcount/SortedWordCount.class | Bin 3392 -> 0 bytes .../sortedwordcount/SortedWordCountMapper.class | Bin 2568 -> 0 bytes .../sortedwordcount/SortedWordCountReducer.class | Bin 2098 -> 0 bytes .../olerom/stopwordcount/StopWordCount.class | Bin 3181 -> 0 bytes .../StopWordCountMapper$MATCH_COUNTER.class | Bin 1248 -> 0 bytes .../stopwordcount/StopWordCountMapper.class | Bin 3671 -> 0 bytes .../main/olerom/wordcount/WordCount.class | Bin 2036 -> 0 bytes .../main/olerom/wordcount/WordCountMapper.class | Bin 2385 -> 0 bytes .../main/olerom/wordcount/WordCountReducer.class | Bin 2259 -> 0 bytes build/tmp/fatJar/MANIFEST.MF | 5 ----- build/tmp/jar/MANIFEST.MF | 2 -- 16 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 build/classes/main/olerom/namecount/NameCount.class delete mode 100644 build/classes/main/olerom/namecount/NameCountMapper.class delete mode 100644 build/classes/main/olerom/namecount/NameCountReducer.class delete mode 100644 build/classes/main/olerom/namecount/Test.class delete mode 100644 build/classes/main/olerom/sortedwordcount/SortedWordCount.class delete mode 100644 build/classes/main/olerom/sortedwordcount/SortedWordCountMapper.class delete mode 100644 build/classes/main/olerom/sortedwordcount/SortedWordCountReducer.class delete mode 100644 build/classes/main/olerom/stopwordcount/StopWordCount.class delete mode 100644 build/classes/main/olerom/stopwordcount/StopWordCountMapper$MATCH_COUNTER.class delete mode 100644 build/classes/main/olerom/stopwordcount/StopWordCountMapper.class delete mode 100644 build/classes/main/olerom/wordcount/WordCount.class delete mode 100644 build/classes/main/olerom/wordcount/WordCountMapper.class delete mode 100644 build/classes/main/olerom/wordcount/WordCountReducer.class delete mode 100644 build/tmp/fatJar/MANIFEST.MF delete mode 100644 build/tmp/jar/MANIFEST.MF diff --git a/.gitignore b/.gitignore index e3b6fa2..b130b76 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea +build +.gradle /input /output* diff --git a/build/classes/main/olerom/namecount/NameCount.class b/build/classes/main/olerom/namecount/NameCount.class deleted file mode 100644 index abdced9ae4f6071ad7e2342c938ca605f7a9cc36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2036 zcma)7?Q+{h6g?X|QL3s=;(X9FDNXpQ?HUVOXaI+{)NLTC^Fb0^k^*IIZ)~NqWMm1_ zN8t(h!yo=Q88X8I@CZB$!*H+U*kSBU8O><#ULEZ{=j!b0&wqaZ1HcFPLC1A0Y4}LT zEIuB^Cpw0Z*RhOGIl8CezK&5m&~X``X?V!Vf`&&tKGv|p}vQ*LrGv{*>WuZorfIz3R+Ye5(Q?#A&?qZ!SC(zc zB#UlE+9l~(Jntmqe%)#b%okl-d2YjWWJ6Wl!12uuiV7U%X=N{P1ZGmtiih$?Y1-1M znLEB`IkkLxRX}TnF|9K>070)Gx@CdIqU+U6*_4&KGV8MHx=phoo1Ur$6=kluWh!)K z$Cs5C>#`ZrqoxYzkB=&<>07ST((sh@HKcVR8P+eo8ZjAFN0uM8LJ&oL#|^xSTCunj ziLSOB>oITx3j#M@LC?U~*b}%Gbt>2GRIa-kFSM`WnSpQct%2|GTwu0;)q|F~CH*?1 zzc(O3z4@>o)oYDyl}*cO2EMtgj{H@QR$Q+keFGIPv2gLXqfR!JXQ0Zs#fx#<;YT2# z!gB)$Olj#=l-$5S$*1CxM%aO`^e@sMUHX~1X8K= z05kumh-Al-qw}f%ha9l8$jswCBAewyRq@H#%)*u}-fcvq2MCkAhg!;ClitIZ9n@5+ z55(uh^!fDJW~RI$tJTnB>`{UHgZTHn$=h~-z>dZ9TxgQ`oHK2QRf4jSJ3EOnN_1@4 z$*_>fSrL_~?mTi@2R6}7KT&6zxn}fgN!o!rL;fT!-Z}-h(Xnw`nG5AKWAqzx)@5X*r;JilMzs8?j{k7{lvX z3P;+|vZol`yA`{Aj7ulbv&qYC7}?~NHWJz7SR3Qf^LX@pBAZOMF_}$HwK1Jd&b0Ab zHr~e7pP|KmK|KB|)rp1Na`ck}rjfu5T~~?MEHaqGdzi;vlK6<^t&zYj;#eXDtYIPI z+0j6ZkwTiZBnXkgEz*-E6#WGMMp?tV4+L^Fj}yYgC0hCYj^cG1hv><~DQ5SMaV>L# tx#hVN%=cQC2ut0hwxuvmMY#M-^b&5pSUxbcldNPE&{{kzd5qSUr diff --git a/build/classes/main/olerom/namecount/NameCountMapper.class b/build/classes/main/olerom/namecount/NameCountMapper.class deleted file mode 100644 index 3e48640bafbc4fd3d5e7b81b817394eeac351ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3479 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 diff --git a/build/classes/main/olerom/namecount/Test.class b/build/classes/main/olerom/namecount/Test.class deleted file mode 100644 index 94ec17b0201b512adba24b079f155cb01426cc53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1297 zcmZuw$#T;`5Pgc|D0UPu4gm~d-|QHp0AWcSmS8r6vw#DKP#h*=a0IqwF)XY>-!G?Gg!@F2Z|$@%AkZZ+LX09n}&<&49?+v z1{W|hf{Phk!ewo)WH5_48x za`n&?ttTS#^?DPu)P~2y@yUp?&1% z6Mj$mEjN-)`PN-YToh=xh4M(-E^0AxF>0)#g!gJubmDW{$lJJTgGI|U!d~RbJH9Sa zS|9qXKBt47$npRzOY_EyWK_!xuzWL7V1cj9K03xhH@ zl@AiB=fc)_EubM^_hjJ7${_3CU<@ePbp0JH4k9ns8k;!Ai>jX?@OmLjyNfHAUxVM& z)K?gvV|R{rI0nZs&VMHfz-~-%mBt?IB|k}+S*c$$Z5&q@U-;kNJ@>aQz(YX{I`BWbcJz9ndE#nlo1J#<`E=^>d zBBm%~h9WAIQN=#aXg-#CEs;VbAM@+jj|0@0=A=*JAkRIHc^o2UlDiv+aRe4K=m9^5 l6poYS!u-vJW#fd6lLlYVoT~EuP4`xOh?p+jY2rgD`~iNkBLe^c diff --git a/build/classes/main/olerom/sortedwordcount/SortedWordCount.class b/build/classes/main/olerom/sortedwordcount/SortedWordCount.class deleted file mode 100644 index b8a8321e1a431ffc794954ebe7079894fe092507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3392 zcma)9*Kxo_o)^=R5bilfQ0W`xC%=T$iy0 zeG=}Iu>t*l9F0f?1KfL1!b39rI4)xrbO{5j3`>ZxG$ahN9Fn18Sc1ue6B16c zj7o^Hj7zX2BxEeW!+zK-liWnPp-G1&?UZ6UB;gdx(-KBlo~ghicvQk;G6Lx1=5asH zvV20ulX%LHr)4~YbACK4<2gLf4qxErMQ+YZc!`fi3tz@7GHvy$gx4gzE>PZP#!Y9t zKxv?{SHRb9MGS#CU1r=kn2HS;_7Qy`N*cAx3hU8c-8OlgQTm)=Gbs@0vZ97<#k8bl zJ4WQRWk2V*8+j-ndUhGs{pf+%<>x6zv*P?oSNb7NIGd|SX*dZV#(|y`= zZUGAc|Db6nola{&prOmMhcrE*hldSqSdUm%LW}7M+lZvXhDIjjZFbTKTk!}D+O7DY zz_OxicmdncqKfPy+MvhL!zT~uiS&V~I0!=ldGAQrNI0eyPfB=$k`~j=qNn1d>h=&F z$#0C9j+b9SXO(-blpQwqnVjC5TT-=})1#mjZ30WCIjDj+@fPj3#~9R8QD zqu?WUu{2W#xdO;SPbo|owt|n@uA#Wy;WT_?_z5m3_>@E1G+jtm%9)7iP`W!2)MrJ` zZCdFADEQoqIF5<6&S{Lk#6^MN%&v}? zKY`H9%rj}Et6400`4C>>_!@6(KQ+By;ev#(6?}tl1?Jy+pLeIsXoMmE4&MvR(h|Du zgx2s+!Daj);YS5OaRz34Q?@rL;b#R`aFw_~vyCLxvxHx`5`N_j{-(f1n}Sh{39Ou1 zE+qV}U^lKQ7{?!6e0gvaM+|Cw`^}*g@rOWtzD>$8quLS6iV`*Dj+!L`3U|n$%grnk z2s9SpnJG?mCJ*A8R-(?^hvQimU`yhas$3w422L1Zhd73#i0VmZPzobwkXCw>=ydA# z?lT#ynn0crzXS6ot0xGW^okydq%S@bhro_P@#hGGS-8LfGrZHvj^-wf$xM=os*v z!O@GDUE^&(CHp;Rl8zCh*Ud^12J^g(5{Y!v!{$)-3_V7vFJ}&nQ+b67C3g}GUcNII zh!*-C%Tv)iF$L5NFcT#?)gzT;g8fJ7X(~|U+b}HKrYTI z?0zz<2<)7JzvYyeUNFymomNkt+ zT%k@0wo_Z4R@Pz%^%c(mJF$yKf(WmjtZ1?L2NftIsg9$hzsW_Z>KjGbfgp9uT}Z)k z`1_knTSiea205tCa-js(*)A%B>KqqU-n`G7uMVoJi@8Cy#>Kp#TI*u|I2QD)b)#5# zFr?PISQKLI9U-<@98#CKSQ=6rTr3Nz%U!Gpsdu_qc@?Y15$GR9W3#WtMU&c0jfi+Ze}aT69}4VGXd0ka3o(23>frkP%>#Br>`Aes?H5H?n0 zgdjSLwK#_soTon%mk7$gY30Azj2i^#e`pmY^erc0o2bNgQAId0YU@2@GN=(oR4v;LN znd)(Dpmc9+8pEcx`Y~+I6;UN^4RWiH<0^8>VbywzaF}#lT4m_L5!yWGMBrYUDM9c5 DjlH$Z diff --git a/build/classes/main/olerom/sortedwordcount/SortedWordCountMapper.class b/build/classes/main/olerom/sortedwordcount/SortedWordCountMapper.class deleted file mode 100644 index a6ec4cdaf7140275ecac4cdf943463b9b71db77e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 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 T?jrt?YsAj|wRC9*b&0zlCCv)Ru#?nXe z3H;+9{{&W9%Lnigd={6>b7n$n1j^Y2X_JTLKs69nT5w2_!OEnkE-?SqTgj98WzBt3~B+%A!k| zbU~M-yCr>x=gnj?*mvpzR|?uyzOLFYwO=mj&zZAaHD8s(lCqa|kqY&1 z1hVvEMb;vE)KmfU@nK2T0!Mpw1KXspDxGu5uzu-Rh)JJ1bb`1Qf+(6BI`m6w(cw;{ zTH0n=kA-WP61esTdKSLLj=)6Rso7SiW?QTALc0c@S@;g$TlfLb1;#s9-K*PcGT3MI zj}|1THy?MR+O2V&qV0IKFt9h(VX(x}qV}sYuu$R>Q|JFX>SRs%7Rrp9J|DLp{R9Fk zJh!mNl;++{`x1%Eg7WQM-9d01Nk{4|IPQVVe;4qm3yl6GOn>`J< z7T!hGfM-FY#yUGzE@^MiUZ96l3CVB*lbx6_a9n#+YnN=?wt35aWb=w5M|pb!nM}5e zng3HnvSZ27`ON=AcG+2E=D{|R)#8CF1!Qby;mSJiHloo6L`mL5brmd2|KY19Y9!ME z;&Wp3Z2ELFQ{Iy0a^x}gsKEVh{M+8-ZQDg))8ct9G)#QXn6}9(McLS$&BOpDnl@}^ zSV-)wn94|N9y_fG8)~JWs8h{cGyZf-x}iEnzLXAcodsR3xr%=f9T%D1>~2@jwEVCh zdYAZ0B+(PnhDwm?-7bW{tLad98f+%&(2H(iFEP^y(>8i zFEn7}PSCe=D{=b>7ms1)(w7>ra_RmCQn~a%1B3DVWc+?8mrge@oJ)^1Fq%t`HSkt0 z*}&yrU?hG;GWi?TNkrUc>5>BmkisCw=uW$dVa#9@AJFVBF5?l2UB(2~Fo`Xa%^Id+ zo=pwJ7#UxJWC1*i^hiV-LLGqP5hiAi uF*!eZj4SQdrJ_>P)VAwH@J3XAEdB_$sVFzJ7kB7ZKU;*3XL{3vyZ-`z6cR`P diff --git a/build/classes/main/olerom/wordcount/WordCountMapper.class b/build/classes/main/olerom/wordcount/WordCountMapper.class deleted file mode 100644 index e0a18513683c2f97136c89070dbfeb9e7d745c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2385 zcmd5-TT>%N6#hCH7&1&Ca#MD7g? zKKf+&=q*%9m9@|Q2!DXT!BW4TBy1KYt}m9(Lr?eV)8{+qJEu?o^2bj<16aZ52F7t+ z#|;AsTu)&Pt2)-y;!OhsSXaYaYIxhgJ9t-ZVh`g!Fz^_>f(D9pI zXzg*9SF=sKUY7xZk~O=oqbQ)~eJ>=qfLZW78RV;WqakUgmW}tc=zEpZu;NvsU}Cn2 z8OU&dX=5-CW)GQoaqPkF5BPy1H`o$owL!ztMsFgr~hWFx8l~9y6g(1 zOQG!?k@ToiSoZ?P#(hWDL)Z5jIyQA|k(82K@$9e}klEk<{p|lg$Wf(N%C<|OYI_xH z`{0gr!qphb`Agon!j#paHK*FS&0obN`Rv*MlnxfUQSzICBX7B?zf7Fz7)$Dkn0N-$ z0@LSt=v1YNDLhSuzW2$*Hf}33ADQ?VB@;Wit>Y6DyGp#L#1oh_@hSENW@B-BJAsMk zaYbMzRHy2{aITt$|Sq$!z4j#jTx+ICv)EpTsITKY2Ma-L6Fi{gI%zM5U(a2TCR|JfD&{6^io1U*0 zo+uE6PL&{kov;oJ|xmK(%=%Q44mDA71$RAk!&x=8v>#sP~KjGhn;>IE@cqUXK=ldUX4Y0 zoZ+@3q+PIjHOVa3;4Nk_Y!!6R!?l@y?F9BON7B7}Lw1txGx4Q>b@hR(I*}LnT@zoK z_*!6i*<15v6o;(w>wnlyyCgc8P3@gJZWo~c_QrI#uT%zlV`=q{a{r~@=;w^G{;wK` z&223Qap}Bkr%+N&cY^G=Sb@oR@apRx)jLtnIP%&(<&1(*;7GEmMPX^{Hxf88 zAhOixFpN8qY7IE_u(qi%rOMNSoWPbV$1C;h(6z%ANbbz$zr7MpFpNP zO6grwd>-h@N*I+!BHj0?%q->kw>NbPF}{K^zH~NUM<5642M%yN$d$ucaL!LWg?K_^ z2!}WplFebfN89c>;4qGGW$5w|L?8Z*Z>h<7AvbGGJ;RW|Tz)kF3^{>EIHoN_;3e{N zg_1E^*hJx{S>u=2zfVv8iv0H_<0;Hd?9-%1Li!v2vK>sZ-=Q&E0bP?KsYCd7Y)tIexP-^e2kK z#Q8tyU*S%HKI52RB>G~e4qajL)3kK*7l>$ZE>29o#PHPgCakyJUoj1K5H^ Date: Sat, 25 Nov 2017 23:53:16 +0300 Subject: [PATCH 3/3] Add combiner and results of silly benchmarking --- README.md | 26 +++++++++++++++++++ build.gradle | 2 +- measuring.txt | 2 ++ src/main/java/olerom/wordcount/WordCount.java | 1 + .../olerom/wordcount/WordCountReducer.java | 5 +++- 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 README.md create mode 100644 measuring.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..46e829b --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# 2017-big-data +Репозиторий для практических домашних заданий 2017 года курса "Введение в машинное обучение для java-разработчиков" в [Технополис](https://polis.mail.ru). + +### Fork +[Форкните проект](https://help.github.com/articles/fork-a-repo/), склонируйте и добавьте `upstream`: +``` +$ git clone git@github.com:/2017-big-data.git +Cloning into '2017-big-data'... +remote: Counting objects: 3, done. +remote: Compressing objects: 100% (2/2), done. +remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0 +Receiving objects: 100% (3/3), 10.1 KiB | 4.5 MiB/s, done. +Resolving deltas: 100% (2/2), done. +$ git remote add upstream git@github.com:polis-mail-ru/2017-big-data.git +$ git fetch upstream +From github.com:polis-mail-ru/2017-big-data + * [new branch] master -> upstream/master +``` + +### Develop +Откройте в IDE -- [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/) +через File->Open, выбрав pom.xml + +Пример конфигурация для запуска таски из idea можно посмотреть в файле config.png + +В своём Java package `` выполните все задания. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 84a2b39..98472ad 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ task fatJar(type: Jar) { manifest { attributes 'Implementation-Title': 'Gradle Jar File Example', 'Implementation-Version': version, - 'Main-Class': 'olerom.namecount.NameCount' + 'Main-Class': 'olerom.wordcount.WordCount' } baseName = project.name + '-fat-jar' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } diff --git a/measuring.txt b/measuring.txt new file mode 100644 index 0000000..45fe52f --- /dev/null +++ b/measuring.txt @@ -0,0 +1,2 @@ +WordCount без комбайнера: 2.5+ часа +WordCount с комбайнером: 1 час 42 минуты \ No newline at end of file diff --git a/src/main/java/olerom/wordcount/WordCount.java b/src/main/java/olerom/wordcount/WordCount.java index 930214e..24eb06e 100644 --- a/src/main/java/olerom/wordcount/WordCount.java +++ b/src/main/java/olerom/wordcount/WordCount.java @@ -20,6 +20,7 @@ public int run(final String[] strings) throws Exception { job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class); + job.setCombinerClass(WordCountReducer.class); TextOutputFormat.setOutputPath(job, new Path(strings[1])); job.setOutputFormatClass(TextOutputFormat.class); diff --git a/src/main/java/olerom/wordcount/WordCountReducer.java b/src/main/java/olerom/wordcount/WordCountReducer.java index f3ae89f..3779ae3 100644 --- a/src/main/java/olerom/wordcount/WordCountReducer.java +++ b/src/main/java/olerom/wordcount/WordCountReducer.java @@ -9,6 +9,8 @@ public class WordCountReducer extends Reducer { + private IntWritable val = new IntWritable(); + @Override protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { @@ -17,7 +19,8 @@ protected void reduce(Text key, Iterable values, Context context) for (IntWritable value : values) { totalSum += value.get(); } + val.set(totalSum); - context.write(key, new IntWritable(totalSum)); + context.write(key, val); } } \ No newline at end of file