From 2a4c4f045dc8f645bfe796937509dc3e82065704 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Wed, 12 Dec 2018 20:40:37 +0100 Subject: [PATCH 1/4] working on threads --- ftpCommandElaborate.c | 20 ++++++++++---------- ftpData.c | 20 +++++++++++--------- ftpData.h | 8 ++++---- ftpServer.c | 2 +- library/connection.c | 6 +++--- testNotes.txt | 1 + 6 files changed, 30 insertions(+), 27 deletions(-) diff --git a/ftpCommandElaborate.c b/ftpCommandElaborate.c index bf88b7d..515fed9 100644 --- a/ftpCommandElaborate.c +++ b/ftpCommandElaborate.c @@ -495,10 +495,10 @@ int parseCommandPort(ftpDataType * data, int socketId) returnCode = snprintf(data->clients[socketId].workerData.activeIpAddress, CLIENT_BUFFER_STRING_SIZE, "%d.%d.%d.%d", ipAddressBytes[0],ipAddressBytes[1],ipAddressBytes[2],ipAddressBytes[3]); void *pReturn; - if (data->clients[socketId].workerData.threadIsAlive == 1) - { + //if (data->clients[socketId].workerData.threadIsAlive == 1) + //{ returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - } + //} returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); data->clients[socketId].workerData.passiveModeOn = 0; data->clients[socketId].workerData.activeModeOn = 1; @@ -526,10 +526,10 @@ int parseCommandAbor(ftpDataType * data, int socketId) if (data->clients[socketId].workerData.threadIsAlive == 1) { void *pReturn; - if (data->clients[socketId].workerData.threadIsAlive == 1) - { + //if (data->clients[socketId].workerData.threadIsAlive == 1) + //{ pthread_cancel(data->clients[socketId].workerData.workerThread); - } + //} pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n"); @@ -596,7 +596,7 @@ int parseCommandList(ftpDataType * data, int socketId) setDynamicStringDataType(&data->clients[socketId].listPath, data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.absolutePath.textLen); } - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; @@ -627,7 +627,7 @@ int parseCommandNlst(ftpDataType * data, int socketId) setDynamicStringDataType(&data->clients[socketId].nlistPath, data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.absolutePath.textLen); } - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; @@ -652,7 +652,7 @@ int parseCommandRetr(ftpDataType * data, int socketId) if (isSafePath == 1 && FILE_IsFile(data->clients[socketId].fileToRetr.text) == 1) { - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; @@ -682,7 +682,7 @@ int parseCommandStor(ftpDataType * data, int socketId) if (isSafePath == 1) { - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; diff --git a/ftpData.c b/ftpData.c index e8d40e4..9a2775b 100644 --- a/ftpData.c +++ b/ftpData.c @@ -593,10 +593,10 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) data->clients[clientId].workerData.theStorFile = NULL; } - #ifdef OPENSSL_ENABLED - SSL_free(data->clients[clientId].workerData.serverSsl); - SSL_free(data->clients[clientId].workerData.clientSsl); - #endif + #ifdef OPENSSL_ENABLED + SSL_free(data->clients[clientId].workerData.serverSsl); + SSL_free(data->clients[clientId].workerData.clientSsl); + #endif } else { @@ -627,10 +627,11 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) data->clients[clientId].workerData.directoryInfo.Destroy(&data->clients[clientId].workerData.directoryInfo, deleteListDataInfoVector); free(lastToDestroy); } - #ifdef OPENSSL_ENABLED - data->clients[clientId].workerData.serverSsl = SSL_new(data->serverCtx); - data->clients[clientId].workerData.clientSsl = SSL_new(data->clientCtx); - #endif + + #ifdef OPENSSL_ENABLED + data->clients[clientId].workerData.serverSsl = SSL_new(data->serverCtx); + data->clients[clientId].workerData.clientSsl = SSL_new(data->clientCtx); + #endif } void resetClientData(ftpDataType *data, int clientId, int isInitialization) @@ -647,6 +648,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) else { void *pReturn = NULL; + pthread_cancel(data->clients[clientId].workerData.workerThread); pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); } @@ -654,7 +656,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) #ifdef OPENSSL_ENABLED SSL_free(data->clients[clientId].ssl); - //SSL_free(data->clients[clientId].workerData.ssl); + SSL_free(data->clients[clientId].workerData.ssl); #endif } diff --git a/ftpData.h b/ftpData.h index 284fd0b..d637850 100644 --- a/ftpData.h +++ b/ftpData.h @@ -119,10 +119,10 @@ struct ipData struct workerData { - #ifdef OPENSSL_ENABLED - SSL *serverSsl; - SSL *clientSsl; - #endif + #ifdef OPENSSL_ENABLED + SSL *serverSsl; + SSL *clientSsl; + #endif int threadIsAlive; int connectionPort; diff --git a/ftpServer.c b/ftpServer.c index d40c729..9251396 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -570,7 +570,7 @@ void runFtpServer(void) //Debug print errors if (ftpData.clients[processingSock].bufferIndex < 0) { - ftpData.clients[processingSock].closeTheClient = 1; + //ftpData.clients[processingSock].closeTheClient = 1; printf("\n1 Errno = %d", errno); perror("1 Error: "); continue; diff --git a/library/connection.c b/library/connection.c index 165b12d..dbc3984 100644 --- a/library/connection.c +++ b/library/connection.c @@ -460,13 +460,13 @@ void closeClient(ftpDataType * ftpData, int processingSocket) { printf("\nQUIT FLAG SET!\n"); - if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) - { + // if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) + // { void *pReturn; pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); printf("\nQuit command received the Pasv Thread has been cancelled."); - } + // } FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll); FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.wsetAll); diff --git a/testNotes.txt b/testNotes.txt index 95e9809..26c89c6 100644 --- a/testNotes.txt +++ b/testNotes.txt @@ -8,6 +8,7 @@ sudo apt-get install libssl-dev #Remove password from a certificate openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 openssl rsa -in key.pem -out newkey.pem +handle SIGPIPE nostop noprint pass #Testing ssl From 34725d65d0aa025a7ec7b04ed15c434023e093b9 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Wed, 12 Dec 2018 20:45:01 +0100 Subject: [PATCH 2/4] working on threads --- ftpServer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ftpServer.c b/ftpServer.c index 9251396..5376d4d 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -602,7 +602,7 @@ void runFtpServer(void) returnCode = socketPrintf(&ftpData, processingSock, "s", "500 Unknown command\r\n"); if (returnCode < 0) { - ftpData.clients[processingSock].closeTheClient = 1; + ftpData.clients[processingSock].closeTheClient = 1; } printf("\n COMMAND NOT SUPPORTED ********* %s", ftpData.clients[processingSock].buffer); } From c382c4f1e8afe2074d64979d2260dc422068dfcf Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Wed, 12 Dec 2018 20:47:09 +0100 Subject: [PATCH 3/4] working --- build/modules/connection.o | Bin 51552 -> 51464 bytes build/modules/ftpCommandElaborate.o | Bin 71016 -> 70936 bytes build/modules/ftpData.o | Bin 44664 -> 44728 bytes build/modules/ftpServer.o | Bin 62536 -> 62456 bytes build/uFTP | Bin 195552 -> 195584 bytes ftpData.c | 2 +- 6 files changed, 1 insertion(+), 1 deletion(-) diff --git a/build/modules/connection.o b/build/modules/connection.o index dcd83527166c26d44254aca41aa1aeee444c527d..9131847db45be4e4876dd8a3489ade7063e63aaf 100644 GIT binary patch delta 3105 zcmZ{mdu&ui6vpS=mTEyPi^}Oxl@=?kBCWMbX>Ga|Sh|Zrtwtdl1q1~Z(e({RVOxqy zAhLYM_iMrU_(!dGX(@f|7W;~dVKIuYs3kry@(1;e7B#bXuDwjcCT;GV-}$~dbMDOS zezP^}(XClq{1j?F=dFDEXntXyUFfeIMbF{d>4lWAADn*2gfZJJk@?W`d+^)rqG^6L zqBMOZgs@_Z#d(==3prUr9MBK+{AgS?r<&@pWllA%$DTRW^aDl*i|Kom2Fqz8mIlk| zGCUP5rv|(qETeHfg(iY~$xb*pGAl6BY7Aryq_=n$5MX3#7=8!D#d zNQR2XZYmI>EK@`K(E=O}wG>!QIzH9nyQyIN(j-B{joJp5vx`QYt39*}kp`CgG*vaL7vNTPG2#s@W0Oa;H6GfIbOXy?4;}BJ zX;34Fzc>#4NyptDR;xt`A$~hf{;OEh$kIM*q>_MVt{lV~S)O0)P}g(0_N+p8Bg>mK zRl!R5t6+HK$ypL{%pjb(D5Tie7BD0pm{yZ(3E4{ z`ZT>dLw9JZg0nmorr>Mh@OvKW?eia=xcAMTF!k8EzSMIuB26r(X{v&!dFHA@you!; z51sCz_aNQGa;@P!RUHB$#ABchOmEn7!-DA)M8qzoHpJ~xx&~>xjyfR|rBse^qLeck?-#%GB-Yj_eS@3?{Di0)WKD>1lZQSNsIj-wy37RKThzdFhrTVC{y7D9|s+ds!i z_z?B2EI*#$jMTlTUjAL|j1MWf{9993yI41344PY6j@P-ac9-ggItCbQWjRw*SNot| zY6!laEH5{-2TpOcH)pi>9!J}R$WE4<3~i6k(QeOZZG(QG=>XC@S?)KSH=pcie*m>H z4XYd)gR(Z31^TLTSC_ALju7H}ENNp3s2sW+u{NeUb1E^oiz$S7JJUk= z+F35uneK|R^Bm4v^ch6jS-x)2m0H`X{AIsESLt`X59xLe|7g%Xr#j9@ zjJP}FiTa{PfT0eS34^-YcTv>Ia-Tt;IMJE+0O~tg4jJ?TU6nwzlVzShvhI4J>6vKmWLa*| zw;W?J8-txJ7aBB2cYXzYT`V6mXoGg%jM^@i+YGu0;S$(0YCL_aolL@=Jpb z>m4hQ?qWGge;Kd81x@~ zt2~A7B+J(f>h`%6LrIpOXzK2qSJZrn)SJ5I)qWSWZ5}8M)dIG_621 z#WG~jTlIdv9?dD1s|;%CKCiV0Q}m87y7Lck0ZW&f~%p%hm4 z2PlEI{($xMEr|FhVBCP;`sNl?4b)f%Q&=-lLxpG?2+%ql83^RA+wHi#i)hcJ{{Y{P Brw9N5 delta 3170 zcmZ{me@xu<8OJ}*m$phPP}s`T4;;$Xt3A>ddcg=rawi3Zqj4Fly0)8xGs{+PYI}cl zYn_QbDE_FL?tHt=CZW{5%7MIU`Ki}~6 zllVo!7g;af#}MU;U?9`il_4 zO0)@FuPY`GWPJ_o!~^v;^edpghCaui>wR<$pVe2=CX_W)QX3v@sH7K>XsDzaOf|%) z9aZ=2p*g&M&!g0c!p2AGHFPz8j~0<`Y@|h$HQhn?p{>bB2hi2zyX{!95P?kk;XIEJ zS&1(m5oJz&(2H}p(Bz}b__V3q%JaY%E~gXN9^RI}SS-Y{#2-#PVTY(Zfu8VgE2jjq z*+-QKHm}dwS>hzvk>|nQW=T&Z4>#YGMf31ZGTyj%3#F59-`l-x*@(4%O)~zSRwj{r ztNllmm+4z=?&>G4x||hRXOr81^5AlsM(^H`Ra}gZ_m*2LJy;hjrvzGJ6_i3e#?o7A z7ai8M2P`291c_*}H^zB#X02^k=cbDO;!FFvhV(%Wf2pZDu;oICku2LgTP~>zT&l?; z+phdKy6m5zHqLTQ@sdgfc5*$BSe#|KXNlhKqK~6H&hqtJmT0w$4r4aXvQBSO<-OBI z{|V|~x!b#>t#Q$J5a?j}A5E23owQR`8zLPn``0aLgD!dri4K`NnxzQ+HL@OHACbJ38il8tETWO={O&gI1Xv5wh_cqhxlnkwVnF6|t8 zJDC=g4}E}iCri)zrJCKR@Cxz|aX9C;uV#5pXJNzsqPE{`*w1SFM#K)We8iwBO&`n9 zi<&CqR#(mMVfGM*KXOrbZ#{aLD3$xHH)*@mpMU6FH3)RE{I*NA#+9oTkuH|)F1p!8 zk0Q~<@--v!26a({5N}|ji|J3v`L6G7rYHi*3VI8XWCi^kiDV-!U_MzvJCNO1LDz9- zUn`a2XkVk{EyY6L4=9D&Q>~Oh_o>$GmHKA*(bCT-?f0we-rRpIUrkxHp%eO=UO>8^ z<)uQqfR#dsRYHjR%rF+>U&uerw5Wmva`>x0ZMq#LhCMgi_VXcjn&n*vee;_(ZASNL zmb(mEpyz)Cv!_|^H>jh1Dx>|iL5uaEIflRh%Toq*v{Q%-FkQsN0MivD23UTsJ)O>c zoNrf{ixU)h9{_@zab?S4QBKKwZO8YZc8KLBO`Y>Py27S4hz+saX3&SeVbfjc9%30a z=plVx`!GAi^qh)MFN20z{?71xDA$fNgupPT35gBIruJ&}Q9nG;l|A)jd%T;>B zJJlZ38H+G6%(Bd&59it1YFr&=*<{eI`l@V)cZ6lspbzLi96-wm%cl)`i|+Ps5FcUL zqp4H#54ARx(f-xYUeG;!7wHiWe`?Ub-DuaGrN6G6o$l9tC@}1cI+_=?qb#>*>QvHm zgB`5_u~C-y8?;X6ilTdzqZVI;;_dNp-+xOgcwBp49oMHI#u1L7D9;2=sm;X>xQ<+h9bAbUO1|1H9mz9 zw`#l7ffc#~wM~Vc_257iCjb*=)iq4acW~G=TI}h_1n#3ejamQlad% z-?H7_!^u>Y<)6SpDoEGioet4eM5aTQCz{DTFzvTWqga>@T6a%i-As_$5Sa7!ehW`Vz=%{W0 diff --git a/build/modules/ftpCommandElaborate.o b/build/modules/ftpCommandElaborate.o index fe2b698f09fc9ec9d43a583e59556988bd02bc26..e6d2fb209bfcce2cfa77a88c338e0742be8aed0a 100644 GIT binary patch delta 6085 zcmZ`-3viUx6~1RlNx}#uA?fi}P&Z1Y5rwS}tW@F>1Xmqpr&AjpimsD3qSPT43beJb z*gg4PZ3?aEpfyE&0BYy_|GDP$FUw5sUB2(U z?m74M-(zbEo?27z*qF#0!&|BjmeKp=MKq(NICJTU+X33Bw|sQwQ2EjEnRPe3T?Cbx z##Hv~Um;X_Pznf>GYxa!9Rx@-7hDLKS+Zcp$jslLD2R-k z6*0!dhm|ai)C?Uws4j9&VUZbWj2X$eF(wI`za=xm8&v=m6nl0xOv@a8c69`1QF=vn z?C=OBZ;Y7}F{aFbsj3L@a|?n#E%*lNU-1KYlj187`uz4|Zev3R1$vWhAYVBs=+6_p zj)ODCOp^GT)mFx!7Zh>pq+;Uk$gvKt@qhc z=MJzuO`OdesDBG4<|}rhVmlPhKb_Wa*`hd~-&OboN^V8_u&}P~3#3NND7_UETa~UJ z-O-TNuUuu7yw0$tzO864`o_SxG#jJRZD=RvVLgg(Lz`2qj-;9zwxO**Z@@CIWHc1%2`SRMHh!Cg&vOLdMZT(2EV(N?tcE;xJSYbe=@_ASNg z2**&m742L(xY&`NW6x1bD<%#rR_E%yJoxE6comhlp&iFl$C&@C$b%GbL)#-PN21rx z1=P@nc5UT=F7Kc2n8{Fc8`|*~ot?dga%~8+{q_ZJZJ$W87d@h36x)F?nNm9tHgId> zqXU~PS*m8&JZjp3i&iLhieg_C+*NQc|1ie96~bR*v&NVsA^bx*K0j3U`EYRSV(d44 zHM*p|6z-;IJHm2GwxfMIz`yca&Pg)Hyg>asF!cvv*{QacRk+T^t9kGvdGI1?X-BYr zTjjSk6yJ$*9QYvRSlO$`Q$y6RM60 z>d&J6p0F+h?@9IVr06cR^-5P)jVQSbVJ)|*T}nphp)X{)S@Li!gv)=;No7a-s;9nP zXlKg>Gn~CNm3H8wjlzbr*RAmD)!2_H{1%0Op}cUo>m}wQxxl(C9TI$afYa)ZQW#08 zPJ}Bc*MauBko<9xpF+(Y2uWXZ0mVAeE(%GyY&5b=s!doPmtGyODO~6LM95lPJ_b&O zaOb6vqPr0$Qhz7!JlRf!+ZeGA%SGFbcb3?B)R*yCCiZGb=9eP#mf#$-KB*^B%Wkwa zv9qs&TI$=4wo%w{9amB59$d6Zu}M|6E@hJw{gOoTS_pTe?o)R3O#3J#e^l(84)C(C z(%}phQNtdDag^JGa5XjWL8xKG&Xq5baM^xKvAvjhQ&^YWn+t=K{7vC{gZLy=do!*zZduODMVz?UNyPhOp03av#DgzD#Q# znGRp3*OxgeGU03tp}u`+Z<6ma7hzhw+(xDQF|kg?ILiW>H#t9a2j>mq5CNY+zsKgL>>uAVeKA+1BA^%r03NFJ?^^Jsm}S}=rS2M~TtO$X54FW;ve zm7W#PQT71Z_l4#B=ses^{ReQ-LjI1C3#Gmy^eFsxwUGWLxXZv98O!@2+|B<}%8t&- zP~NMIp+^puLOCT5B1Ea>AlfSf{44u4MZTPw=*!&5GVnu6A4I70kp@O$?V`nFtX0vz zlLs%M=0gZGxwR)aDUyLZlsH4Kf-bbHLaaMh|46Yew6%PjkgFtb zIuFTM?xs{1+D2hH<{8TG25RcU)IP<|RP1qu-=*+bd@q(!+^z7V3Qs9~CiQnAET(8T z+TDD+7u|c5%)1orzG$dEJjPSH8=;6=y8U`}BR$o9&S-t{Ji{A|*wPo|G1S+M5U0`} zOuQH$km2FDYh!C3{LgvtsnpPeQ0upgxlL@Y2`sy6EtZV$7o2m=+k*30$WvZbXsO6s z%Jra~A}nj^eY2Kgy=a#zR$rP{QK}acyA)feJiZa~*eD+Vq2%?ESf0uD_C#S?rs+TR z02?x&ohSsTAUL@^(sga-@ssBRG*ZjQ^Iyy<`Lb*>?LlZ6h^z~x*6tvKg zH@OTZMLzwhx1=!qWtK>Npc?m1G>#NJpfm)yJfOT7}n& zmJx|@)$4y7q=Tgn`g}qN1d<0qAcR018~=(nN);(B4T^>c(mD6;G3(Wr346o$?e5vL zyXT&B&(mu%4z9^~?84B6xrwp6^G|H~Ye_(Q1;r@$~ca(lG5UP_U*WWV&7SNVEuY!*$R6QP6BqvpOXF)aP z)ga7Dj;Z;4z=daqMiqv}7ltk_2%Yc!mKWYJuzZmUWk7l6fy{*m4u{4Vo#d27w+v6N zcp@`2X+=mW6&alSQ0S_h%mK?ngR%yy;Yz9D23JZg0LjOa+nySc0hQGK>}se>E_-fu z2v(5uVzKjWfzVe<-5pXYUxBJQ)5nKo_|G`weN_MA&F~KOynyhbC%-V#$r|9>E!V#O zxdYgq@wFy6rPOqeZw$r$gw7?*9vU2yvbNWjgfjO>(B*0cN<6g zl*c~L?6Gk^JAysG;(2)8NM{%8H@|c#|PH%C`A;nM?H<%4<`HUVrH*5tTUI{iYY#OCeLmW<9A)^ z<8v8b=J|Y#*{-QR8)3HIu&}|?X<;3_!q=I_b?oqTx;*)rC;#iouRIA9TZwSe`#a0~ zJI9lS$!;Mm$Ns?4Z^Qs{V(Tc}fYFV@-5Fx| z?6ds%Y`9Z+_`w1%68e=CZ$LedS)&{l>_$p7pl(gWzD3;)sQ;0M&8El(giAd+$4K3b z{l&OUjB?y#=ML#-P5;=0)>8cjjHU!@n%1&8{3bGy8x@O}3;d@7j}tVa-ovcTl37va z=Phy?F*;yqe1ukp)I>k0&^nJm~$S0ib$7ZXuovSlh;Bqc=sB;tQ zW@e4DjQmT2Ce)*OX9`9*pPVMtTLde6>{F_0!svOX6@DaFQ_|q2Y493KHKD$T*dyPc!O$eEtY_!XgT{ zpnjImAGY`G>{d}(3+lfG*#Ge^zk%W{82yY{<5|AvOUL^&us&zfVO1i(;(^T?UC}@fp-)Qof}}3S4&DG{$YT5k7~P5Nt;%qs~@@rBvUF zu-rqQF^Jw1u$sqKZ+kl3M#mY>r(Wy%cdRp-aTB3=vDqE=k5siC^`pW{)@UWwZAaZD zY-Np(P-;6y6`!Py=Q80L8Ml$F;z&jYaN9-WDDfsb(*x`Qwki$a*6Idh1@}<=P1H-$ z=saq4^cH4=HTpYszlqWFFaG}8zc$PN{}_SG%uHuI=xshlcA$P(u(Erfrq~YDYlTnK zUiO`^f$DdlZVs?N=SbSAa|gmlq7Y3=yYOJh6i5+RqaN&nVj7S zw|dB(2GI`$tgag9dtd75JnmVo_N>-=$R>k0*(O|$VYZ0DNrP8VSv$hZM(Szi#LBki z!uC~)x1;`$Svw26cn(sc9rcj_Yd6#r)ZLDHC4YQd+xvMgYbb9I>MmwY>)ay7?W4#Z zT%2#tn;g}xg1uDWl>$!+{1*bBXim`Vr%K>2r@`BNoU%GbOuJ3!Up&3vj~usL;Bw2k zmz)lyMID2vx?_;3Z3jl5FYfmt50*0{{kZ%voSz1Ngi;*{|Dm1^bTY5(x0Rn5XQ#m* zqwrpYm7Z)fQiEw`rM|1u60TAKCHA5&3$PC{JI7;JFl%ZkUo0!BdoSvJf|UoVBb2uf zqk~HOBmbqy^tp`Nu363_ju-lJOT9H2+qX9ib;-!lxd461zkZPgP)Ug|YeRTN^2%c) z0lKK_tA%hEz4z5>sG#`QtKkD0)B8@gy|daxPA}3q$M?Y-)N_0xRMWh^h1vFItdC-S z`1m)op@Pc4ITFgBNY|WL0LLhGq8V0E{N&X@wCm(*=%v`V?}Tzj(KV-L!eOdARSRpM z3_~p}e=-5JP~%1bYT;YA6QB}G8=Me){S$33E@znOauv*{S^8#A=M zaBK7js?VVx6d8n(MiEt#N2t5O{`tql!!LC6R5@}ON1$|qM#M6@0v zqTvrB2q|CGy+|=HK1n@9VHs^NK_y-uq6cyDEyO71%&ZN81M_pf^PTVeFX#OF&gPcb z!y_1b8O-ytawJrWsny#fb%)LQ7s3=|!dbvUkO$zX~iOPU;WJIz5=7jcVVi z3|j>NrnQv-0APll6R@0rh$+e97dzN+bZE&D z!{dYH(dZWzi&plC2|s3wG2ticaM*-t3${Q&h=&;fIE^KQXtTysGR&L>MlWHrlHqJF z3sRsq;2&qpW=BvalmO6eEzB(U^sBYwE}SGeu3(EUHH=E?Jgf4s;|K2KRQ!0x$_iM} z!>S6$SkR+CJ>OrbyE~>aKjZ>{`hD)Z>};O1Y0Tj`rZ04MI59-QUam^Q9N-d~$p#$& z`GC-_kM<78>Xg^q-eY(G!1f>W`$DS&3jQWJrl|hne`jiJXD(8GOi|k`)|iO|04-Lc z%hVrJ)GIdaX`A*9J&!4GvB7lrS3rmLn8KwNFu%#F=NEa zgW`>t+Wj_d^Dg^qv^l6;*s@q-4#r5ba|l@D%XW9u>aOCy{rfvzM~4*khK+5sxjh!_ z%r5MEgRNTHg_XqH15u%B^Hc)*){rxR?SvBpO!DhP6C1fZ*S>DmWz=u{?fU4nf;dS} zWae delta 1048 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 diff --git a/build/uFTP b/build/uFTP index ff590c429fa186864c8a5fb0a5abc8cfbfa27e53..a74834ad0512feccbb9c8ddc980fcc9eb9c613d1 100755 GIT binary patch delta 35017 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 delta 35021 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 diff --git a/ftpData.c b/ftpData.c index 9a2775b..a72402b 100644 --- a/ftpData.c +++ b/ftpData.c @@ -656,7 +656,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) #ifdef OPENSSL_ENABLED SSL_free(data->clients[clientId].ssl); - SSL_free(data->clients[clientId].workerData.ssl); + //SSL_free(data->clients[clientId].workerData.ssl); #endif } From cd589876b02918418d1253f35b68349522f82294 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Thu, 13 Dec 2018 00:40:55 +0100 Subject: [PATCH 4/4] Some bug fix --- build/modules/configRead.o | Bin 40328 -> 40384 bytes build/modules/connection.o | Bin 51464 -> 51440 bytes build/modules/ftpCommandElaborate.o | Bin 70936 -> 71064 bytes build/modules/ftpData.o | Bin 44728 -> 44376 bytes build/modules/ftpServer.o | Bin 62456 -> 62592 bytes build/uFTP | Bin 195584 -> 195664 bytes ftpCommandElaborate.c | 27 +++++++++++++++----------- ftpData.c | 29 +++++++++++----------------- ftpData.h | 1 + ftpServer.c | 2 +- library/connection.c | 16 +++++++-------- 11 files changed, 37 insertions(+), 38 deletions(-) diff --git a/build/modules/configRead.o b/build/modules/configRead.o index 441ccb46ba7da63c84f0b88f9aea83918a7ba0d8..6ff3bd8b9a992a0141ee51f3e37725bdf2dfcd1d 100644 GIT binary patch delta 5014 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 delta 4887 zcmZ8kdr*|u6+d@*?HU9Y#ml7{!6X%obs-f&ON5Qlb)D7-YSfN()pSOkYUE{E5M7=k z@?4I}LlTP>HIEtzI+Yp)#*m6hTj@+jQIm1om`Y+IO!~6MN#}CU*TUUD;QW5SbMJZG z`+d7T7fkyvnCfFqR~kEJ-8Hdc4D-9shC3hot$31EbS|HDST@R`&5ie}FJ$w@W@! z*(YRj)U#8PU#j>wr2S)MzbWk%%6?ngtCam4*?_gG;&(>tUrT-JkY4Kvyer){5;$8f z0X6NM1epYWD?t%~^Agk(=#t=91b!#M83Gq$LI8RQcrKNM0wl+%gnDEOYcs}x^#ppm zf&ey-1(^gc%QZy=-j^LNBk+M#4ifmiRGJ7}nJZ@~fd@eJ%ZZ*R>8f0GgTO~}0Cx!d zL4tc35ZngJuwRv} z1U3fj9}CQ;v5JYJ-^#Wc(PPCYuZ9~D??{uP`=m{$>@%5_JXx~-ySd>2lhwAL%giJF z75H0uI6!oe0{31F0f;3qv|8Rg0$<2WaDFBPn)jGNwMQZcl3X*nGvy~|13MqAjGHRVp>lJ87t}wP001EX@H0%vvY zMV78fI%yQeF!$Q!=c?SmVwT~Jl2Z6g)VjoWA<>? ziu3o_qTZua^UdRT8V<&iJ#*L>*s;gOmY{X7jeUsry?JaEcI~yXi#W8`Vfsf1KIb{X z@^H{&V{vFHa*ipnq6crjOyFX@j`RFThu}{%nY-1BKtN0}AMp5DtT@#hx zZOuOsy(KPIha)8}xqqp{^!G4qDP6+Wqpy^+llZXI#w-|D=3t0fWiB=q2gTYJ&Xk1pt4=jw)_{ps9=KOg_?hV_reD zx6#`s9I4_MU2PWAHDxCCbvD|oxtOo1#!QxARy7wZHFcPxZ^X80?%biN_vxWhpz#N& zXB8U%7WMuhvKsDe)70to1U{|tA%rhz{6A>|S8!7e7awbC4|Vr1=&j+-2b%hvYCU|b z@k4|yl&R6(RyyxfaHNKdr!=*cV#Q-jEq6Yzsf+1OEYtYUY0s@1|0eZ32a9XDvq)2u zXt!#OUre}3<5MWN%abB{w)SJ51eT#P79bTT(-{>SNQ zQLXWZ2{&qd8GR8srg&_uw>rBtA0t-3#y?BB8Sj20x0`exhH#{wJ0EJR&e4grP}hxB z@&|?d2#x<2RTPKmUM}Wq>MJx^Cl-6TSgxtLRNV&b@N(y?n!142?$!8PbZ%=kK9Zgi zucNhri_@A4ROd%%Z{W`Bq{;;3L64*+^X^Zba%=$KAk3l8vh3M?U>?m3tB~o=Cgt7>On7Z@h43+s{Ryv zk&CZLHG1Wy=b;Hlkc&wXs&+%YI{JeT;OS9y9;rrWE>mtPn0}Cpm6~eYqFgLK$ejh+ z&gbd0c(ql=`9G@p-y{Ds=sU zGlF=dCv%h=%+~ykJ}=Pt%k+#|s(8G9$SPjZd@|@3Z$oyNv%*es*kfW>u(|0w`M24@ zs?gV*WJ%kpVxPyDmLzrq*R`awXRx^?)%5Q}c(Y|8TaDsKDl5lzM^afVHXli~tWQ%* z7NPG*5<7~bHPv)=C0bWc!OYfJb`6_bQ&}1gwx*hfS7Fp^3t2p_do9%hjcVOx^fgWY EFW8F8CjbBd diff --git a/build/modules/connection.o b/build/modules/connection.o index 9131847db45be4e4876dd8a3489ade7063e63aaf..ea5eccf95064c9d3543501b61ec9a6d3998c366c 100644 GIT binary patch delta 9941 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

74E>$r}+%tObscIW;8f2OzSf%_cg;qwUMJfD2l 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 BzfS-F diff --git a/build/modules/ftpCommandElaborate.o b/build/modules/ftpCommandElaborate.o index e6d2fb209bfcce2cfa77a88c338e0742be8aed0a..0dafa0d41ab4af4d2c4a870ab04034fee9ca93fd 100644 GIT binary patch delta 20117 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 delta 20041 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 U5N{uh^FPrfQL{ePwx)pp1DY|~^Z)<= diff --git a/build/modules/ftpServer.o b/build/modules/ftpServer.o index 673c4083e2316a25d4ccfc7e68d8af4b4f241571..90fe04a8eb56542068c16dbeb59fb2b83e115053 100644 GIT binary patch delta 10991 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 delta 10999 zcmZ`<30PIt_TTFw2+ANhY&J4ooN!3IW@>*;!Cr9*{Rd_yO~4DwN=?ej1_e@H(#?X_ zE3hT>z+PqEdrcu43m~D3&u0p*0di`DT=3%m*~Ya)d01hKZC7(h?dl86vty+#(hC1- zJ57oFu5UMHV9!n|?dn9#>C~&cOtB<7yriy~XqPO^v15Knk9M~lT-nJn)K@9T&e+1s zZBLFf*IDdrYiqMEwXU!cD|?MFGQ%NP;S4)t#kFC@vjeWpJP{xD@6%prBEIS0-?ya7 zjg!gSr!TIQ`XG}?=~`;N>n7Q2ox|n7xC&Qc|A1mMyW(W3uEHEzJb1B7=cvwkcE(%_ z^KfwI*ieC_XvIIDACUu0<>x`W8*?wr={-8h-~yki5Wn%-1)L7=bff3cW? z{|bx^RyCbVO6NMTFu2D^!?4d)IMGgPyg{yUiR|+O_0EUuCB7s&)LHVCZ`<q6YCSLMsN$E^{IV=jixH7EoFyGoTMERqk9D(5lwt&4TyKWiX4KYT++|^W=GQrtGx2y( z?!H^sF!ja(J>tv)hH18`ngejY#{}Ipt>?Yhnk>tmhky3`uK^s_Ylark-r~jj9F`Vh z7$0V7Pa)pMbFYo3qd5To&HL%*+anuoje%&7^)232*odhj242SLB0d%a8FTr|JAbcp ziM&VU6QH;@Y*D(5120yK6!7BnQHhuk#p#h0W#|KK>76MxcyU`)U+`j6RECd0av-{6 z=yILhn;vEby?fd24j}I^wPSV0eaTdY&wCHH{pydN!0s5=JHqToU2>q|(anrX4korO z?_y>&UBC}T(?MvBj*e9hPM7bpl#gKN1BaatAEvVsiC;$(q1NbV@M37pb>PLZF)`r9 zyJKecH0LOJN^$KogJlz348x&2RzwD4Y%DE&Wb94g#ksKq!He(24gxRM$I>O@jTOCR z{E`ti^Z3f98c#&*8#e~Lm=i}4uDAp`h;a-5S0Bt}I~UeYbIRgR#1B-5WtZ~-kF(^3 zW~_+!-R;IuMxr;K=sn*z665V%z>C4dt+Ug`x7R)ty!fjJJNl(#TtCW2(gL4!LP_^4?F{WX4tcq_Dwcqx`d_M1BXQ)HK-SrABcP*ZwPNqzC1p)@v>v0IXXlC3-5qqKC~Dy7eo%zX2PnOTndq>&CYcD94| zrL|vQ-0Zl)*WcjbQ~VfX@8=Bf0{_I^vGKO6j;e)YSBCn>J7VTt!ld-ff<!`DhZ)doWBeF%D&_UxY>Z_n<&6n`jLlQZ(!rsOty0RHV}cmlr<7%v!WfHm zuzQ=<$?IOF zd_-c_rsKbktvX_v*E2WN*H1XS525RyAy1#a?g$PhXdH~Om@Tw_W1Om^X)`>Cp7fbd*m|MYN7(xYy zd!_tWlCiWR7!OngLkUI0>k@feBHoH&;H2Rc6% zyLIJ3b^|BQB$^!&*tCX29G0);Fc!nta&fE0lU_(o&pV`Nmh^lM^Vf2CL0T3|O9f`G z;jmfCJLS(k2(?KD(vQ8O>+3^0`1hj;j{bx;wVM?YlF{(wSgv*uY_k{CNjLC5JpI7o($+ zizSvQy4=j2T86omT)b~Vt^2qE%QtYb(SrWJC3ZLEPdlSfvp;56FIb|i6)$W4Q`D+$ zXm@i6#U?k0?wIN3kbvPIakv?a+#J%ewUWbK=yr3+m7cT6Q#{_Uy&D-8ZbcL;-czW_ z&FpXmWfPk<^hL#_R^~q-nKWSeM;uN`CV&keaR|b)Dh@pns^~0usyGZrM->;t`nNNg zY+*7UbE~+>QK-qpoT3?&P0ZEMO^V3^ng1oq53gct6^C~y8|*~;Mh`co7{nbnlf{bJ&8pH8d^6WIvYGa5y48n^_s&!m4Y1Yu66naVK|F>k~hYcTdh`_RK9Ii*$ zCZ}Z^hg5WIcPMVNW&UR=KNMj84ti&5+RkAEmhYhX3Ex3)nGHKQ9F(5NB$JaC zCJ$Jc{3w}(%D3tEH=;$VRxixm$wh*OmMC-xmhI#)8Z&D-+=QN;944Y;Cq2zuchdai z?&MH}_F4`u>A93V#d4L6CTF^Z$r_3k2eew-RIM*1lT#Y%QRsP@|2LWc4@>?BE&01( zxrc846c0^QgNMU-%=d6e!=_pecM>X|lHVfQ`|yg|-v#6^UeeHCRQ1182Jue|YJK{D zfR0@pHp=QpFn1T-{FJT5;!iK2UDX$!pCz9*$tOO^mkx@}r_(OGuy=I{^cxtcu1dXw6T;Si0vduUo3KB3ztPV zm^^A>@*KsA;!?F%P&QGip`{AlD)aA^O!i~z9u8m2Y=3C}E0w<=y7$sq&fLpE zVAEcDw<+4o#m$aucVxHnPbYtImxk_BXf9{g!C0qeJh zFEGE3=BH^dAAY8TY!@uCk6F6+n*$HmO$9d&+?OrfVa75>8UL^@jImHUkXXJi37*D= zeLU)>a0ATLeEtkUTm7x@C8pIU*?tMZXX}TG84su^?Pj#lvS~JjnkVCJk`h!aWGBEe^Y-q0XeBK!#4C@ai!E1Qs(5n!O zB@Ib%GuAXb4Y#4=@J=Yf*25ee81zN9?MfIv^2Jctj?2Dy8jfQ4m)Y+QpL$`2H|BI>W{fcQlU4lKJqj?i}tTx1vk3CqL5-k6k!!E4(IvX~j_~t0Qfvw+U!y}k^oL)*EKAsK9Sbsblrs2R7sc;MC zpWyHrmYhfuC)FG*kbf3w&p8qsP9)hb1f%Wbt&Vxh>A2=}McJD*`?vVa$yAtzo|E)# z3H&hg+f-Xy7{2xGPicmMbk>S5j{<*nXjtO_^Etmp8LVb5T@BzsEoZe`(c%50Op_O;(86eXe49f zvHUa_=^FZJR|CEa8%}fafQA;Twah{Ij*Iyk8lfH+FQMZ*E|zNOB6Sc}VD5K3&AbuJ zH3q58*r7$OQ5E-V_B_S25k24WwC^=^pvrbdvll3aozyIv)laA@F=#)-(*|njRrTP# zL9>^t>?xW(LtO}yu;>g=%hJ#+m2J9ae^+tN*X)zjc+SVBGhCEtC{wfXI);DG#d{iR z?#KpA`JSh3)6g-h8}*v~X0@)bH2YLFSKndz_dLz3p&@D-uWI%-Q&;OVd%i$DtT@71 zF8XTdBZ`9q9cQ^1r=eVRI307(axqOq>s3#tW7%1r_PB;#r}z|T_DO06Ue@f3RJLW< zdX|e1HIyEg^r=GoIbKk!p|7i)<~?Puy}Mdni{`&f&Bkw<{kY;_Q;!@o&pT=@p@to| zoC_CGnoqvU*&mzEadEwd)~Ojt#_(pIHc3NWs?Yam_8O%>sM{6qCosR6ivkT@rfvWi zmN#>;R72BL?EBcz%+o40^h?!&?V5d+>g1=IeZFFT6df(Rz}DT^C9`k+ly`_`H~9-? zr=rSLeiAhQ3{`!g#h(fvP%lMe4LjDggcqc0KBv{MM(@{hPE~t4OS3I;d^B_TU@3Be$o7k z)$hxL&~bqa(Zi@pjizj`soyvcA{54A$`3s4R?VkHZS8%^ZdR;R>zb+A6BLu@u>1#J z@Un(}qh5yI*6cs2ZK%-fqm{izvq!4x`;^^WQL!5OV}>0^T?kKW)_j_j&s8nw991hs z{=Xc?>y3IE$WJdUyTC<%3rctJEow!h&~t%{u^Jkyu7io#dVz}^4fUv1Jc#xmxp+oH z%?`hanLpCs9v=R2i!jIdO*KBWIrQIwsvCbA03lb^Nsu2b@^;60;b}0Jt7=@Bjb+ diff --git a/build/uFTP b/build/uFTP index a74834ad0512feccbb9c8ddc980fcc9eb9c613d1..b35758e6d74a219797680ddae67e5b2953b496c8 100755 GIT binary patch delta 53681 zcmbq+33L?2^MCc`+GG=QZmwOj8$!5`ARuQT0U`s0E1UvCxRm=)5D;MlA(&-ZNEl#1 z?n7l3%W6U6%=7nO#feX&&*Cj^!t17&wFO3yQ)52RbAa((>=3h zxecXmLtZ_SmtTKpK*=-$_^)JI{*BXNB`?b*^(yWmH^V14nOyQ`SV`(zciwFEfp7QO ze8;3<$oUT*S0m$(Wj!b-5N6X zaGmyTy+{jjWXF5t&BI+&diktEUZ zQWxSQ_Iatl?weo59WQkz6A%CVQWqVmaky!>6NHQs%e&ikC1v89J+A8haEaa0&yl8w zYxFGeiam1=z}2Ok(rh=GnIt${?!N~hIFk$RiQn~!Y`7fB*L48)wDsj31!wYySm7n} zHxZmIw{iac_e5*oNU}(5)i*tuu)3B>oHSZo(YHziyj`yIehbhk@?2SBi&MH#^!!t1(OaO6xYr&O?C5S+=;VvSdZ>Tcc?C%)3K z)@Lf;`r;~lF}DC*1OH~N{ql-Mcj2ZOJiMW9&rPxY@VdIMZ;E4wcMRBa6FpMwI`q1@ ze|T-{Y!xo^0;T0O1xL>8a!MU3(X8n=#NUS3(`~&enn!dD`1uAG{cE~7c0?VLDlQ#S z&u<2r*zYga=)(~fQeOKA$m*tc)m+e#uTN$BLA#70zc1Ad=5Y~ww zk1r=~aoXxAzaw7&xLS7*Kb`Obaj%#dn{X=)z%lbKi(qHaurF|Q8Rz50Ud-dUshB*m zc3dw`Nz+muZ^Y5@D0|)`aoX(WyoFkSe-7Ykk&FOoZo!e}KJEhu+Oq6(-o0;#_a|D2 zTMV2OOWb1JNlE0kICxSWTYscGjrBMiZ~OWNY~exKJD}CF3+Jr3s?qWQ=Pb|k7?aG| zzR|Mf%4}_p>Hwg;m4`dB2WQ`{WgoIZq+6}x>ef+W_sOX4wAE2Tcdr7t7Pey+mWX{P zha21(00Jo$oOw&dos*9eUomrvDM_v^&bpHUfMeY;bGzV3+a)-IekoAbzpHBJ3_{SASKl7P}K23Z!wVg$6D)*X|O;#oL-*6b)uei3S0Eo6}R`Jbg?M|e#Rk}4{md7MTkJS9%KGFYKsS4- z;0y{tt(-=Gt#VIRiYf2Ki8Z$ch#O}HL|(qgSSm_1mK~_fvYxXX(Xzazu;3ChZFQ9I z+=~FN_rwuzTFDSG>rK>a%bW3*7cK&%GF=*Sl$Ll=;>sa@|7Pt#zl)0LjrWUJXW&{> zcUJu9eV-_z?|s5_Jb)KP)JJ3kyu1yLq9jfRdE;>UidU1tjZm^;k zOpNX{UcI1cVIgCCCZ^5^CvMSuHuh+f*|j4hIAnhDvV?d5%upJMsdK|S zR2IV3ch~_+?P>QNY4@3Qjbf$q`|Y7ra3)8o6`l5oTP_$q$mue2b3|@h1=%^^fnfg{ z8)*DKYd~-&AHSerU*C;THDsCMtp4!;L`=OJ8K71T79X6)X>`uqnyI|9L~tHOQw94~ z!RhnhWxP9knk844_Odpz=iP@HH5F3~YIA1so4FS6rSDTJPG4sg+ik!I!cnsSJb-Je z*yHWg8k4l0Wf$LlJ26mhmi%VV>my!zyLJ;^@lI2~OkR z=KxMah+<j_V9bW+gA#YmEEH7I|r1=-W@My z&5Nn*NDzBTk)Eo-%(uOy$P@*{*+&o@X-5S|uGJ5~k@lgmMi^fxTU*J=$%8abjuzwR zM;HcwtQa_6Oqp*X*ToNP5n|r#@NgMk4Y}Z)LpW7>Oj2A>AIGpw(T2w_y5NI7lzLX# zZ_ct2QuB;vgnYIHM+aT@**$V$z~U)q1|(X~pxyHX~{)1=XSPbb!iKceB>h z{%U=&Sh5Hm!<}fzK_@0HGK#O{{Ie4aa;kA+^R1{wO+|}poOpF3a{P-I(<=4)KYH|?;~h`9?0u)bW(v#0^wM7JI&fJ0>z%mgJMP)0 z|7F~}>pjNFs#Ok=8W=)K2>+vPwU`S$3MdhBalII4$EL}f`W8!o>#zvmqV^EpB zy+=%m><1hEm)^_X_2^w~XzQ5iRTNidM9&zCMDsifD0-iMSB$eqiK&iPxbCEhSm0^QFsU#UQ6KN{utj_?3)()FH8r6BDLE zPUM~KZ0h0DX7=BHAf9$661RBQiBEFT%Q_ObICxnj;udq3wIFWs__BtI#g4oO;z%bB ze&6LdQ0gu3q){f7*u~G5M`O;syqRjgBMY^{fO7Q^w9gUe=b@I{^H9rcc?~_YX&yG<0s8F&1<0QR-QKSOx;$HKm%oxo zVrhOS-Q5*p#0s>Lh*4tZ3iQ*06&OZXE?tqt?v!#L5$V&_av>{!ua=WmBE9cQg@5x( zd_F;>FWKG0m8f~*sy@UmzPYMdf7WYGvrcg4-1!T)WQtvHuf%J1E>4BcRaooz=p51< zIVFEln(hobv_~=SwfFggx<_N2LHuh~6Ot@8Se?d0%09R<3cy(R4xMg(|af{E^ znZ>VG$F)1W3X`nT?0KbhW?#WE;F@FRhnPpCJA<-zD~tYiLpN7Ut zwTW9?B3XLy04#CjCSg}Q((drht?frx6P3Y_?Nz`N5!Gp|tpyJgA4x+ukOJoqhMxW&|1a7)U`2Dy|%K=!{8hdw;>#9chJK><%!eR z#`N!~x-kR&=QK{;p=somX_%K>E^l60^D8?P&6BxMTdhz%@%Gv}kzt(De!B+lzf;Al z>zj(*-i;!@;>dU7B5&YPl z@N7T`&g9m+l{IpTIDTC>dHVcymw0(yQx+C2$7XHd+pV({Z;e^viIKW;d~a&1CMgL=W41&Q_>pn?70mZf&CR4Nl6@l3o-`*LU^qy|ijtucJG~aT`#_H5;1Q zzLRxKQ*^X!z%i3{t#V&&+^Y1|w4Kb^Q}CiZ-aeU#%9fO;dz2l(*({qiY^5@r#-_+7 zoX@>U!?$~)IDBJk@6sidiniG}C~&vDJ?{Z%U9la< zk<<9uI*pCC*SITsd2HOl*>-B#2Fq+3$8JEjHcn%fmamz@r*+yu4me25s23}?YBCsQ z0j=1L`H8x+vSl16wXa#dCWTW3j%SM-x8Z_Zuq|Fg#)TK;O%EFL4KyeDcN zd|8(1Y0-=|1oD=cyd#RdAP(4(p!+Oad~3%G#4WzRqlr8wN*q~} zaG7yBAFyTfGkdYCXp#72M_n~d$?7lG+u1;w1_eh}YmWf#h%$R3#pyfiD#@FJJy_$; zN>4FqC;H*joi%mq=Zp7uT1i_mXjd2AS6O1eUA1&q7l^ZV)z)3g5;yF!=-!<#p5FDf zZq!_{WB(}9P29gbiOfFy-R@rqSu1|FcciX(w%BZ6RP6rQxc!oI=T}NAKTWMVJZj%G z6252-&SD=U%Xd5%cwM~reqGXC4BG!<#Gp0uUW7V>U42s=w7-3L&~tFdCXx{Gl@Cm$i|F;i3%dBXuuAvt8{+T} zVs)RrCBF5+L^56c@q>G$p?LYw4Be6GVyD9=$zYKlp09g(g=qWGs5|?*xcb8vbQ@=g z8+Mt*dmq*!y+!>;Ep^AHiXA_yqx=3%@wJcIylA~>h3rD|s@*5@q7{M*e1b1p;ni&S zm^XX8TI>TCtw5kW#dTmNrMRVbmz)hQ@F^EZ97z&=k2I8bfJz)$ec}PyoSmV6b-}zp zgX_-f?4*Q8Ase=n}XV8xj4L_o;72+vaQ-< zIU5D+qRfTo2a7ujHj>F=+R@%*g1G8vecjIs#loXKb@vyD!N)q1x5eJa>gkhKU zX$XB*a4NN#Y}d{>)Pa%X%`v)(8&5PR3F7A`YS{pB9XW-FkyALsUvR9#`*J_QX}r4x zpo?R}L9XC64-30T7M~))1ir>#Q5O_=;UI>j0R&UEjyrN{a4Bw!(FfoDm`F~m|A4j-Li`h3hV0gmaw2J z5mSmRVuzvx{i?;RVvU$m6tDYzvADFTuI~5}(RjR86Wdr%ux5{8Z2uUnhhGzY&h{ap z;=r@5NQ}7bY|DUzMLfegm)RxYdXhzpg)m7V#Y&L?;@nB5FP)FjkrHf}6b+6A=DEfA;>MoTN7>ZrI!1enA*g#T z9mT7cJX4@)9Q;*Hsi(QMxRtrzu;{0<7%Bd;eKvMTvV}?_jQ#d11a3=4Vk8isS zqx1|rAF-fuFQ~gdxWA-Ijq*rsLa7z1)U{!#gAxahtPpY9Ck<5(JF@iRj!)u)6jVo6 z>kJU5UNt80nv24Mv&DP-Xu&?uWuJN1KHyIFygMX#(b|7GRM2>zpA;3l?heNkI8@OxyU>cwZOp{l5T(|^ zeD2R!mBV;sRh_hdsOs8}-v)3^8KSuM!y$;Ic%?Wckev^E%KW_8Q;ueIC2opS(kVp% z;ub%+94N{1a)3nraRjFB8YTK$*e9Tdi1FKRuYpJ)ttJ3a4E%jhkYGH;3d0|y*sg~NG zQG=D?QJm#cdRYlvp*SUk1zMVi=>anFtuq%6secLpd4P8th_ixMo{)VmT0D3)J}_w( z&V6Zj1gB4``0dpuI^94q==0X3M11M<=47S#*5_@=5b?v$3vHjwRFaS23|xne^**!$ zo`iW0GD{sP(b;YiobwgI%*5zh4F@}SW=z-Fi$}?eRNR8T47c>~bGU*d%ce~2X9wbT z*E8j%kpcNcB0;Nf0_f*zl zf9|)}tCe@R7p$rK$MFt}*Ukn4NhP0CEb0 zg|kI&eX6}ka2S8tU#*!3ZMawp4&#;T>AASPq6exc=i!1ZIFj?LBfGme*cvX!j5B%U zbbvvr8G@|})B6-3y@7&%=IUZ0&-`32?% z?3I^uee5~ID5cq_@Gsb~$4GSwRqnBC)3C>I+`2yOp>)|0410(1WBAytX^@!J#U$*wd9<=rAs? zmPOgBv=_T-WQeIZBW(F9b`yr}kWckYO4t9mNA-%$lY-ze z0LTI%WF-=^1?Hjk9w-lzrh5d3aZa@?a$^lJ6k1n}I@>V8VeC{zPMrH~ zj4h@&+v#K>%9g8KRioQoQ6ry%tvr6t^rW;L*Wi{a$4SOv{A#yqzD8%hYUUKq!8zhk zwJgP1Hsy_H!I|7j#U0yKi5o)?e5IXrq%)}TWVS<^f+vT#$JAk~GC7TIgnMn8Va6t= z4*$@orcK-9NlFJid`W3k;)4?YL0mI$e7mc9%aMht_@N5F0^wa=04`TI*3(;1*7n>Q zFRxXF!ONNkf;^uys68r_@Dc+US#9H&u2qP;_++CCcUq zI|TcK`{b9M)f=4E7Z<@9qTn!Is+Ps0)}?f%OYIkgOlPutqS6Der!l)6)dDzJ8!TH7 z=WF=rYWd`sr@UE`)bfBh^-h$nZnd0_tXwNwx|bdFVUrtF%O*Io@R3b$1l`$D{Zb@2 zTeh9Z_ia8!H`%kRX{a0f5f z2QY>EaQrIpp1E9bCZC%CVB_1>UR{&`-`!Q|0>K${k~e%Ck7sdI-P))$OsY1_M%AtN zstbWijpj~Jx^#JGO3(0oy(OP4HdZUnm)aS#1cz~6wG4tY7xxqehw+ta>3p_fJBk83 z;al7Vdjiw3Mz(4t>=*5MGvWctCdyBU)p990KugZ_{r2jNSDz$jz9~42r>gR#$lrV@ z7Hp`>!0Ga-qod_Kq-#?iG4(&;HvcrtahS&YFt{DYuGQjbR?|hC&r&U)$D?#xbw(*W zm5!F*AwBRpg(h}U6k^N5ig8M(FHB|QcwM!yjx01Gr!aU?Dc5eszq2h{z}b3MWy7fp z_fzxuU<+zol>zA`ygA%TY8i+ORg(hpP;ee&k!8Qi--NSYaE0OeGX}HO=q{9&HTj#_ zb9rkeHz{v0D+bNhm-+rpX|ZU9 z&5;!?zk)wba2S)SWpd=T;LmiS)sfW~uv-4MrIKx2T|CdnsgECjCy&=m8Xvt1HaxRm zIaZ!ER=lgs8U?kVo36U?`E^-!jZ~gFroXBLQEEqJw)&|PbAO*I(l$P9H0#0?o;=p8 z!YB_fexe|+3-Pb=`MTm~e(v2~a2OwKuEqyd){|exa=8mX)AsnKX>iV;1fV!49iN7H zpzirUz-$xi{bWge_5Z**Mx69hg6*?0Y;kxnTK4uYYZPyXCsgq^o1=f(RGlf6=IEYrm%22Uahny zn)>l*T2U>Z;FA@IFS^U&bX!a*Yi{~^6ziqHQF1Q@s2VpFmzBlXe5-}3)GLEWE4^~8 zoucrFj!fZ_4b_<|ICAA=W7j{>^YHCZbZ`s#1UhrI6cpJ+zN+bpd|Ixw;)14pvQz3{4>b5HQjEhVdZm@8aR~^sAZU|M4zLoDh|!#ghAVP5ZIvXrU7v#>0$0N2N=t z@uZfx|G&P`IScu`_y*%>qjHGd|6AA8$b-;~(VwhPT2K)DY*YN0^$*vg3I!^IJpZQz zvUzwhPtYzirWI9~+Fl7P8!ppWFJ3T_M~4WP}o@qgt_{F?a1y zWKXSvh+l$oyN0qBsONs0m|!l&=^mF8?LcHjh8g5JoFjY1}?d zggcD4*Pt%jtFQ=;!6Ce%`Ph*C2Fv5ys+Q!wNNHI#HsVYkrPjXwBD2r2#)g=Et6&zV z=;gh!iLA|L&(QFF1_-7&Ru(3bslEFr|M^;mlqRAIOuV$dG3R*RM@6vhFWeB5S!7 zTw*h<^TrYEYE`JJkJ;$ zRTw-G<9gJZQU{+8R=lDF_S6<^ep-$#{oa<+vPXPxZx%yKu7bvz3tm?01yG!J2m8D@ z?JkHNABKgrVFGlSqMtbOVQfe+tNhAS>3C?Gcy|?AvPZ3Cy?+*8v0oE>q>FBF`+ynK z@X3j>WmjTzw#VsZ8>5V`Okop`ol$zL6fyL-Mj<^}Ww@uZ=WnKgwOFOgsi>=rufZYe zJ}_O0dY-SsqW!w>m!XOq55GXE!)L8{`Zud>HcB{yz8K09fLVj(HEgC+S;O9q!WVZn~+zg!=hn3EtIYXEmYYvj#Xj&@veH3krXM#UDD%nw4 ztHnc<-uW_#((?M*X?KX=F#g15{P(L!I#T+#NxKug)c#C)+M~_cxI4<&=T~7DqppOt z%tKgje8zM5^l`|GdRGU|P+OQ(JBJn8oDE+7@G+%jA3dftuk3)>^p9v;XC$ZH*UlS) z51z@ZZzp_poV6ZX9U~sktBm_N)0}ms!m4uCl{qIXoH?9x=yROE59W_WEfmgl&ROd@&NDLSUpM5|!#QVJ zp2irar$gpEt8m`n@pG^eXGldv;vkvRu5fPQoU1X}5yw z{x)`;EjWx#w35m^p^4!dS~>=B+)s@uJ&G%4+4vwf624wu#h@Nz*w@s>t^?PZ=`$M$ z&g9nzDFHjHF`gUquka`4TETVbb*4?(u|S45>p8pt8Ly89uYrmet-%XKyx(VVydfMf z`Z>JE19>MtyynsGr-6!o#~OL`d;c9PxZJXSe;Js5$Cf>3uZ*`sgSSb=8=}GMg?Mw{ z;`*)Uctf7Udp3aU*Ia`)NX7fBp+~=87hA#g$=e(+ndANCtg7D{8Sl$)JoW~wcdm!V9U0=+Rlmo2kJo9-#OyS%cRM@pjGQcs7og{2bm2881?Uw@}5q z-N0k-=Q&nz?Uwy#<#@N3R<*aMj92ir$KDPqo=t=I2I8HP@rwLe|JthJ*#cy|!5X~3 z`YZNYHFyz-w?oDo#qq3KJUJU=U(p};#nJ0*S=^s@_tURD>K<3&i|X4v_J6d<3a(<= zpI#il2q)#L^DTa*ui)p(`0r})hpPCa>U-b^BK$!aemj328s)&W`QPx9Wc+p-`~(%> zON0L;+X}9=GJYDz_xfMzKkVL*`{&k|9{=3!r?`K6J&*ot5Py$69Dd{vQ`?tl)W^B8 z#~~SSo(6B5ikGIrYlC0cQM-V#UKsdml=xV>S^%Ih&Rj0 z@g{J*dX@0dahqg3qQT2k@jj{JG4#{|E4UtS=XeH=_erkCP=+^5#@qV2$KIYQ-UJQa zaK!5`a=d-~No>M%c*lBjdpm3Jd{jJx29IW0!4;Cr@p^JR!*h5;(mCGUs~-JM^;P`0 zFVSP~X2ko|&hdWXZ&B=fM{6(6n|Aq!9C9>xb5y*Z8oX4*Tf3U$E$4VWE8$^(bdmAu zXz*I9c)!&4==X!o3a-_1;3aXqUlwciLp&nm6_bo~ zcIUdBzT&a1wJN(f!Q-p9=3BuvULIQ|d~bAdRlHUQdvUxGG9K#kpts_yx~R)MF59lE zY>zMGxQfu|a#EGORm-DG={zgAevDVp!0`yjJCm)o7xg9|G2ejZYo?fW2iRT2x+O&J4 zmX2w6i&+fp*(V?4?ylfWzR^?hU$PaSrhHzU%imtvZ>5wUgU3r6~MW;9y)RIROrX~}tt zT|=cjUlLJsMg`_} zzm=F{5*#`8c)j3E?v$>0se2ryt^u{BPyI+-U=y|46esodBjJ7nEtI-O#z{^5iCO1W zTeAC+xWs<()j*c?P$0M0q||jly6i_RhFrCFrqsueL^L`W$9B7%Jpf#_YgU6ZOOQ3+6CWfd7YK<94ik$0~;eW_g4H=H=a^C zIJ57E*ypM5isQt~<8g+W(ma`G!TrquFh+2ACrUy7#6pHkjr~bYk|Oo+CuW;yVfy2w zn$;b^m0e3wp-s(d8Xse=(l{;*D0jk4sS7`r78x<9ozsevR#`mP4Ckfjo>L88JtKPR$6svk^h21chT?ud<) zGJ?rc;+DP(CP~CCg@lkuU2U^eFN7ozx0D`2>dHUUhi5I0Rg0KjPV~6^^}Ib2)p%Rh zm(}CMaHX@-#?c7Y7wSh@@~2vtrSC$BnNaCj2wCI(IGj?+97$r7pY?L|iFV{XdMqDp zzOACYD_spGV-S{x5mn^>PN^zCKzcQt%&dPPl+xdWhvWo$1O%sXl$M?K za)IO>K_)kf31z(;t>I>2^J&Mb_?A# z+pR$S)dl==j7@-SKGcUw+oMUX+UJ5Oebt`!gCp(QaUAET@f84Ntoudal6gyd5JPH* z4y(at>p;PoJUtn}bxX3u5Nl{dPjx0%@0I$*5M!$}46w9Yf+MZOk(KTT;Os*jY1h~b z%b(O>Gzb1@P33iXgtR_}G$r3jmt%;TY?aDlNW-v!L2APj+XJ}14wbAi#1fY1sUL#% z?}bWzV@L$)C{2nbW^z`t$CBElr?fwoB#pY?PI3Ff02~}?cPf8Nw={s#SBul`=)jS7 zIk=$EUhJA<;I2Vt!P&=KaHJJtTEP5wIRKTiVf1|54#3sOAf=dy`Ndw`w(NPgfGuqM zk@z%#(xa48T6P(aXVY%6m@H6Lx-P9Sk-DKD7*sDzCvb0IR@)rg>@LNdNldLIwUIjhn5f>W>hetm!^|X2N8D0l3$aS8t;9_D zVYNhS620VaVN+sb3u#}eex+J(m9AMlLQz&S{CThz(oY=NgVRUh@<=C2kK#$P{L^!I zsHuGPBzaLPeQzP*?c_Y#k&)+kdOHsupSX()AWf zAiS%?xh2i*NC{#6aYLnK={z}1_WcmSKF@8R`ABdkf7JrOHA+#&^W!PXZ-KUDO3FXQ zjISIj-|c$)VV@;C)h4`jvPFs)JdRKFu|E~!i==O@qzNCyh4}Kl+Kx$BjG*BkA;;cK;@H#{wpG!OIke=k@fW%0HwQ4M;uWmR@N~9mURN&pQXU+W#(WZboW1mX-6oLf|@r z;m#dfTvzGLW{)c9QIIA#BXw;p{=$)WG<)7rI-`f+^jTRK)lMtH90WHg$2_iJzl-AN zS%SY8&0ecN_$Q8`qslsiaE`R2_F~r{28=(3-~C^;mH!V1t|w0-RP|m{)q7p4`vS4p zet1$rh3s?VhQ7i!cG!l7{2cnUg7Tsctl)b3q=LG>{M}Or;L1^1*z?cVPbz30$H|kg zxJJ3+n009n1V`Efw01wv1Nigs+4F2}V4GH#>j1b0J;nLKXLC=!k+jRLL}tbBY~pZx zp6^|keq$Ia=1>o&8)jPZ!)%1~=8!#Q$N}yO>Ppd|NnM(g#Nu&jds&()Wm1#ga=XpitIs97%%@gx_M-sQxw*@iU<|YET8lzieH&1_DA?McE zJE-*XN3!G9-?AQ>sF?Zt1MXww8^jG|owfI2Rg`Yeq0~wQ7|Wl5-`Bu|YG87nRM2uv z(7jO2cOF*YPE4>R1yTp44(w+CCUrn+|8!^KjxJUhAUGT2wO^|J?{4Gd&+^g_|! zUas$?UMbHS;Wq^T|x_h#b8 zOaY~bj#K*6QGUgH?SD0^l(n>+W0iTewEx3>C;I=bfHZRe8DZ;iiqbtNDcx{}($7!v zE8c7W(^n~LY12+u=GD^v5BHtu|F;4Ks|J!yUbcFdD(E$DfN@_`Q1Ahm{Y3@cuZdcIFzF>pm+ZD9X7vSo574(iT zz_afvDEI;NyHi0ig*tzyf~NQZH2l7TX8HlF`@Vu^`2lqQp@MGq16cM$1ugUg*!*J! zz3T^%{!<0@)&sP1RnXdcfD!+#pk4F;MgOg!WAp%PeyN~~^Z=G$E9fr04Pes43R~4mJRkgi<=&05B$;(lrKvJu#FXH30NC zQF_e)P;8>qZ2$;1QyLuzFvv`4>p*}v0N!X#X><*Mui8`Ez6QW=9Vi`E1E6h3O5d&l;GIh8`WgV~snkYK)&N+U zO6jc{0HK{IeO3eDL}yCP!2oU3C~Y4M(7P+8!-4^hbffg`V1Oq*C|w^6(6KkACxZcQ z^rrMyFu?Q-N}mM-qz|Oj8UpbCKuS|W0A3hGDZU0#cQB<{ApnzxQo1<=pw2KGrG+5? zGhU(eP6&Y4SV|!jKpIP_H56d$SV~hu0bZCuX=W(E9}_6e3I&LnPU-egfOlt6S`rHI za5km)LjhXNp)@26!1^|&Nnrq^^C?Xa18BdF(s5w`b@o!48wN0FFQvP}07`B9C@l#C z_|JYyU10!z2PoBt1ME0JX}xfO%Lgd!5)QEQAf@BN0SpC{=7s~@J4NZPaDXwVDJ=;H z*n5UjS2)0_LQ3@!029wrS}y{?evVQh0$}6?O2IUi~uuBDNQ#5oGztwk`bWsHA?fa{u-qRjR5nmQCeyQD7{AM z10z7(bxK1b0h(Q>G$|4wT5=92JxGakeK={V6D~*rBS;;RDK#5GqR1$z+X!OOy>dmG zFoML9bCP`ov5+g$?hzzGr@tzFhP71sFVFkw%6(S{uvNN>+!v&WBT0hp!`o7gOcE<4jUwK< zl<%Y$N0B(4;f^#Aui^KkH}N{)p0paTfj>$|Mv+=%s&su6v5@uB(^15td$~-C9nGw6 zGn!a*&3~4Lj3%{+B+bKOlX7VzQeT%&jV2c2kiNysW9e@s`rnu0#*kX6(f2E86RpnU znaa$<89o4Y?pM$$TDp!ipa)j^0L+jUj3E{>P1=H&eNxdFVu>I0YXxnCXI+Zhyju7n zEDA;V0!)+0SYjckrTDR=t}ekx>OPjl=>mMD31dkd86(-p5{pjomG)rqob(A6e-4tG zj3==^WxhnZf6*0 zf93~pMZP!d0iMYB?QxfWiQyPU^bE*|#I>m~&^#C1=lpd}`->=fw>jADt zQJR4JqpExyQRGkR0lt)WzeX(Nvh)dFK9kDua$oWvM=a!;RDT??==wE~x{o8ZboouB zDdR|-Zdnql7pFUtB<;s*<_pqic+Gu5`US5CUyy2yCvm!<=IE?Aozz0=HJ-$g$I|5S z#6rp?=Xhe#z0g+LkJNtcrO)s>x1;n6=L(uYEV{{^q$U$ct<>5tQ980x*AHW{!Ghla zF!m)%b1KoZRQh%Uz(py407l6 zB!T=b)tp2Uh($`BL@dN5jhsYGKEXChuS*LiktlLmT8o6$(lNa3l&()A79G4R{W*!m zk>915$;3jQNNw=)ru6b;Vj@}6%*iByw360h5SikA~o%oJiF?@Mj) z(oT9AFKwhbczGzT#fx1!HicN?dwfXgj7l*+RgLk$5P(h6Q{6G+6Ufz?)G#2LZc=44|@$ys}iI>8H1=GkAy_7VaWJvO&i3rJ#wb*)k{H2~uhU~ydp2;%@Zjws|m znn{folJjJg^xH!6H?bEy$R;{{^l$Y6eEjwj0R3nkz%}1L8hQcvkCFnGGA_N7eCb1G z7ks;d^zbHw3hGPbnhy~r-3Bt0%$G*C(It@j(vK!xd+GEB5>G}+cQ&A)bbBM2Nq#Hn zzlqEvL7^sqdI4{?_XhCKm2Ph)3FH$=w}mu~3Wx;=c;}oKKs1Eu1J=KSETOTIu!W@Q zLSv=nTS$Y%VbK5qyR&gT=nuvKBn3#A;Tw?|jN82d^!_KM+gnIf%=?JG`p@0@91sUM^U>m9!yISy2E%(L=HK{XzhOVkYBlL#b>V z*+@Q@a<`M_q*yw+o$QbQZ!ADezkcZunm1byP@_X6fbL#6Kxlq0mTyXq_ecWCl@7c| zqDYKX{2pl+6CVu_HbgfX6aL$Q0AWM<{fCli2aETPJ4nBnF32^JQ#b*zF%u=uXlws!=3BbH~h(gj6I z+jf#BL3bhnq5?T~FX{G9(v%#LYV0CS$)8e(T_k}_lSb_#35i=`0iw=$Aw=*Uyf5VU z{|yI-D&qG&q&>UH_?VICmA137H~dfHeLLJ5()+iN8to=c$tY>qZqhy`AqpU-`^$j< zrsYupS=N~J7C`|1J){qIlcq5dF#s_c2x9hsD+Jwq-WOxyb?NDDl0ed=ntMpw+G~+( z$d*6={X!!^NX)Pt#K>&|5Hp-@Nck5@bN7&hps%9=V#Xj9{M$%-_mBkgg>+>PX-XDI zbPpNmQ?FUf>|ANcUQ*BIHUh+CVcQY@y)boMfcMeqcAy~*mieNRDBU?UFge3EO;Q%pWsuw_?By&9ael?DT z!Aa)!sF!re2OulS{2x?!%|}512b0W4QJb~s-O?m;QY?Ti=H1+20BbYw)%Vo_=-$ES zj&;3j0GKkP0Nfcd8%Bo$#J=&yB#7C37}r7nv0(r)+fWU?e^=CEJKhKS|Bilo?`>~@ z5dVg#>JF@r_TP*u>_p|P{)bR@H#5OMHx_IVvj+?5+-ZC9z7KcW`*`1ggJm}z!osi+?xw@Yl^J60jW&FQ{hw(yA3&v!U}2ioY(!0tVj;_Fo*IhwAH!0f z)f|l;JdTCUR&x{m17DW|-^SFeJ{ShnHrU$6|yRBWZnx`C|-_5~OU- zFfT-*PjJi}%-}tG5qq>S!`ub|E}_hw3^P6+$9#$%;L0!uVHA9Zg$EgYs(d3Ofq>v&gbJ~HZ~wjMx|_?qu+uN1sq8-2{1;lv z>xuaUdY%)A*%Yi4^g8n>l`U5Xx&#wI%&qyMU<1?ISO9&!nA>lK0r(rRmGAKu`~l^E zzfV7=XM*vZPK2Nium?$~s7zlEKo!gQTswMFfB)(GP%(A~@yg@&|JTMv<$M z?*}BslxhU1eOM1bHX(yo{;sLDnTngPN+UlYwaKT_;txn8GEqAG0ZFLOwYoDkaV>tT zxnC~Msyl5k1^_@J&r={yq92exwdNo?b{LtBx4Qhnb;bjE3;RWvKM8#Gk~IAgF$Z2k zKIW-0m!!3aNJ?O2q*BxQl63D7sY{kiL5GPcb_x=hNzG-8YU3I}nqQSV9VWG6SE9Qb zxqEYc*b^rJkoC2fNb?V~Jayw?l0^nemJi9^4sVzMLVWe32!Q{O1_0lH#mMfz-UQ%l z$j2!Q^do%%^nNYgL8dV#0KXSUF{bU3{v*AMxn{|B?0ZT>^kNjPV1|6So&Y;EtLAi@Y_drWA6NG$r$;l%oXmu*k9b=z<1!v64F+Jw z<-6OA$#x*ixO}A#bO6D~48h4d0KMTP^6bUx5JQJ>0N;IhA8o)C%=i6vxU?BC1@pz1 zM4+~zOj>!IG>yXS$uDgj0jPl~nBPl}bpSOkOE-=aQv=Ml{DjLofS@G59__pUYB2tu z!;p#b_hPk|CCdrYnk8HQ(fF(XUYKn8$Dr4}8cI`65RrT?=}xj_>&25~G#Mqmdy-|Q zYfiDuw8m+&im((c8dI>aymNj4;h2JXVG0(O|0R}hO6SgyrZKsZ0O3Bm1AYJz3u^#` z8~J^V6j&(dWZ^@273O5&L;3xOQf48`$rcsLIa&BbPQjckd=kH(B0WH^0a8SfoRdYS zU`s3~i@L;a|BwbE5p%Mr+pGq2vZ(LatzBAE#B(xNk(`r72XgFQQo>o5ll8;PpHlW& zmXqx~E9YdVGE?_io}|o_o)H9K=pmgvCnsg53+;clMJW?Jp*r6y%2DZ@)m%1mp%@FZoXwdh?XDKovhgC}KreVi|V7baz^IjaGaGShBm zf`KJvraf3l=T6&;_kFn2-pBj?+-dvK0X!))9mIM$DKj0yf}E6@4kMSGl$k!l{+E+7 z(-ADlNtx*=7L=sSbPP*!Qf4}i1vx1*oxp;el$lO<^dx1bGy6PAnW+d>kdrcAkdrdg z*_ZGfiYH~fASY#}b10)EWv27!VL2%?6(dPb%1k9lk&`mhCpc#0q|9^?dsI%!OqWnb zPRdN5Vh6}cndvhuJjei_ivW-x3gC+$N(6%!CS|581(=itF0=wzO;Gqe{Iwo|c@9`E4n9!Mi zzE|~*8J(#dN6^u_ zpx1xm2i&(PSQC9qy+E%=PkUiPXSzQi3?T01H~=!*2X$zJzxxLOH*vcWe@&UJe~QW8 zfAEKlNBiJJ=AFN5lg)BKTd{eQ&9W<$aZC!t3<#`WTL8!ehUuOE;U=3k8k4n&az)7| zn{|GD05VywIJ(JZt!D)wQ+#lkc;}aHvRSij2r^ZvIb*XP$BJpJ!YjXYgf$kmm@Z>n z-ej`|Acj(La+A$E+YCV7lsO7F*{qQWp;VmPWP`ZJ$P&X?w(jQUOPE8T{bc=d%rsv` zp%`YqSN_qdmdDtxQa(7-hU3N+-2 zH+GVrYzThlga62Si&3$Ib702I%utGbEPl0^JjQ`8Ki#_7AN&6)!_(!DgSbCX&t2X) zsh@d|;|eTJ5dR0nUxLpByS(wt=rdvRAG+I?MVix=tw<&a%!xmG;T>(plCwYXFe<HNRvBb85nS!o5ikfo?U4DNa%`0VB zO@g>W%!Ws@auohF1OU9I0`5=&M^?t;0xI5U886e?5j%X0w~cqj80#W5bF8N)HY2?Q zXWzt|!-)|8k@XQ#ivArcHzx}y>Zeq0E>$j$u~uL&bn-rj@y9y8CAuq$(X%)3W^D5F z5Lv%nZ7xdbcpG;Ym+;EpE|2~ghTxTd)W!{rmCGk>)>deciS?T|9GK$uFE05M^&hEv||5%yyQrf72*<1p}E+f_ZR|Gh)qvF z%H@-?g0`Png)YB~^?U4Kmt0J-K0pP_ytsaX^)42F_EPopL5F?KxQEI5&EtLpvR+j6 z`uSef=hULEeE`)_Q>Z7AX!qSN4SKiN0u@KrAKT)oN|TI zCClU{Z7+K?^vn)0?>v0jU{10dG zQDTx+x;zWlIkQ|kH_M7I)~n@`S$t5}^x~6m=`4u5ii4;~hr@QWgSWg65BZn|QD#Mh zA{`&Lxi)#+auKimMK)_J#@WX@9BE$p2W{3(*d{OIMDY?1Jf+x&Pc!FOgI@V-;y%X~w=;~D_W#$`mw-o6 zr0;)KGfAe&B;=Y*Ch1O3GC5{KZeTsQ0xH1;5hJ*O2!Ra($|aZV%4QG`zzfE!P=kWF z;)UXh1W-=V1yPYjSuVL$1VvGQvLLMTf8MH^Nyz^5D5>iDj_RuVy1U+btD@xGv5ub+ zyNMU%O~hhbDPSPUXZwp%pGO+}cVl2Kmk#8!_FXu4@Sd$xTXF|BW8b0%zh&5jcu|2J?dXB zi_O`}KDIpIhc!JGvtNE`^_4=*d{1RQ9BJ@>gD&dTV*gFtPogaUwNcrX6ai_USmpRTJvKEFzy98QEkPlTVqUtm9zZ$TzZxx115j$z35o~1-2V?nx$#N2(y zE`8G|jg~O~URrQOR)zi7;D&x+(O26FwAX2d*%OZp@c$8`>qmy_@W{YEep#LWFjNOm z1<#a~s0B*j8j2(Kme5w=}ch)4RUSFuvSi|j9A%^sFporYR$kY>L5i!#&l z0;sX0W;SRugY7lK^>3D2eFp+;mDGFgfAsKKrQEM-r8gLQAH(0vQtwayqjw~x_i`(} zm!S7J^q!S^?f*xw(jWErY%9HU&>M?>i%31WkVQm~sM{pgv>>JzX{Fa^FSB|jqj?|K zy)%|_3*i4QY3JQLl>sca;)gXIj@h}Zm7V2#S#I?f_`g}|*)x><;@JDJdtS8OH@DI| z3;#RNzQbGmzl^*s?fiSXveVK}kHqZQt?b;ikL6Y)l9@;9E%+b3Loq#1E4>%@vD|PC z!nvK)Gqv7S<(61ed49Cs?OOEEU`intUT&!mAiSUg_P#*)Owo2)KGf#r6BWuS!xxAi z9vNI%D$PlG9vN69gY_`9d1P$S1h~?<@l^1Jn6#he3@8Xhtu(3_Tof*pRvMw_h&&!v zW+aS;cScbi+U9Qc&|ecSvd~p?fG_Y!P06 zm(K-tM;(=uhN6qG(3D@LTZrs{bl>KkP?UhYd1Y^mKFN|W zyBw8^=beQ21gl6^oCvdDisD2JJfY!tvkoeX6Jg$%3;5lbBAQM}_{7FUwm{oCxz3WE3aDd=+WMi7;0ntvC_p>u3N4znd#@UBmC@KakPz zyZIKRH2iM9jsDm0ySW+}4ZoXfkcq7J^Q3VaZtBi)<%`J8dCqiX3{BCZAP85DO-$x5;_}%;`iZuLgZbONN-_7la84bUi zAEHM!{BG`mj)vdOkI?}dem6fs2Al}2af2%&>0_D`VeXs`_}wMpcXQW+phN(EH+RD= z8Gzr-&s2W`em6gdpDf~l-_1QkTi|zduM3O@!0+aM2q`{=N-I8vdEkW@pF*WI{H_ZW zp+c7^_+6JM_+6K1LWOzo$rkwCJoIRkPhlQKQt>IwV@NALh50pVrT7%)@kK50yZH@j zuHkp{#LF%4yLr;z0>7KzR<*$I=68soHN_O?+L=JAZJ`+DQ^dK@(vnYMo=V4Z!xaTY z^-lALS?NT^YlTGSkLrmPZb0TI^@zlVHS=erQ;aO6{}1UbV^2Pj`3r8qZ?q2(nP-qL zFrFwNGXH~g(8$5{vq+a3g(*blIp|gzJD~e3(w7^ZVDmhl7&XQRkiT#g&!0ZVVr2e1 zGXb%;3<|%E!$O{sg7oibt$N}K@OE(>u+_zdK*~70t=05Ur18U=zQSTcPb>wT;P8w2 z@o#{gl>(0pv=ag{I~db1%!tMj`&L@R_hjA#2)`%uqjo8)e~NuG%?4IKr9eu+I%Z7v zE3NY@!*-_@3y#QZVc36P+rK*h8VG-&s}>%R--P@>qgBoS7}@Pwx=(&Ss`{bM_M^a! zC~o9Ov7ALjlE5r)`&(2@e(5%Hq;cDIXs1T4JkSm*T{IPs3@G^hL%IAyq`@>QlrzD5 z_+e=}&h4#pAfhj{{Xndu1*he|6)E=%@4x`zce2KtLidH9oRX))~ zHkqT}d1NpJR-t}L{QP^$mHtJnNx;<{Rf@{-$l!c=tL-_80BXd!Ft!8Vqvc;t<^e&#J}j30#4;~O+7UT21O4(MLvuJH=Vs*p15LeL=YN@@JiNqU*Abb0XTef& z`X?3)cSD0b$3|!ulC3UX)We1R(tnPrT8^c>elYr=G`d6X6(xFH-5#-~HP8S>ian?` z`X~d@Yz?aTu+-*}VZ{duh;CwwSdb_*71cP5%6Dy61|`2<)?|s7s6h9g)vwlmw;v;RKX!n^96FPW{X-tC3A`Otr{YGfEMc>`U|y8mQn8avLg9Z#@P| zWgnc5H4uA8{P+{g5O@9`OAeof?)o3zR&|qm17zKdETR&rxLyy_l0Tzo*Q;SUuyiyO zH)2X)I7(*cN&V7d^y?-$Pl(*sVH`2})VGwjgUK&w)mw4(ImJ{v?oq8p-cSPwBWM||1z!5nzqVxe|<(D4T7%9$$w|m(P zRHXL2=EI*+bs^T&*B8B!T6H61)s57u8>ugmkGERYfWxS)TL7?bx9QrD-2Nf&<~|sb z_3eiG^2pedbc};;O0|K?526a8=p;^VERmY39Yay~QY#eIqSri_4PxVl=3@z8k(v&+ zu=my7FiT8I4@D>)luWnCv(SuR(6({YHTW{b&Z)%33U zEGtP;tSkwUx>t%H&N8o0k+7D6iXmrn@vkABWvmdn=a`qB6n{7u<6I4H;anY8oU2*q zVw|gYHRlTSf6ck-*TT7yS3eS)&#`Mtut%Lz8;gio>h?lxa&Un2{{N$4RsJezSX+OU z^Sg7uN*dO%^K#xh^n#rCetLmTW9)>u<~P=E$fQbmv4*n8rn|Y< zMU*aO(qx*_XNp&UV`Z$idEaj=SFyP)u(>=7Z#9TKF*cVcG6VSoBI_axNH$ky9KXRJ z%EaU`)1%TpG4LYm!t%tzi_FVbiI*;&Tf8q$2)cH!r6?HzxtvvS^w=)jv{4@A&7mIngb>~IC$~Z4z76d)=+O!l!9dqyAYiNTEpQ3bHIfTu6XfQ14=Om z+yooD#a9jvUVMg=gBNej{9R0Pa>a|c6a`E2;w?qNlDv3JQLyA3&{7mE$&0t{1F2B) z;w?qNlDv3JQLrS%+fo!PN%6K61xr%Atq0a&4(JCj-ilJN{NTk~52NJj6hC^bDOi5+;;qL(JRDHz2QS`w60F6+m45KzEzwI-u>9aISc@>JTUqG` zFW!0zt@~-EU-IIur+<&~;>)8HEbE!~lZk9K2ecONOC`z$FWy>$T?vX8Zz&3v-~Q4;;q%lO!oW1i?`MwGu!W%ym)IZatr-_@Zzm? z$Sm>u!Hc)vL1v}j4_>^rK}ZUgAG~;Lqca7(ct3dYmZo6&u@0s(4RwC-;;k(=NeY%9 zym*zFS?32Y-qI8-zvRVR@1unus`G;vZ)pmaAG~;L8%mbc`N4~~wj*X%)~O!-5DmPk z&JSL^r72i`@ZznH(E%sw{NTk~pCI#N9ks)|`6M`2tteR5&i3IHB3sd@ti88J=W&*z zQAu9BN~?LCb-)W6mE^^%^gKU!@%lRRgBPz0m>;}&UBdmKGwBk|qOuPD0$#kWXjImr zAEWa)>nM_H9%mgxTFv7uMWd3uc{h8aEoj?*l+2fJ3a9>@__n=%5jSDedEw?FBEb!wjhUTfQkgxhiI8$6kH|N z89YDyGgPNz@#)0pO6w||t}4GWZubx=cwP!PA}=+TNq*0rfT10cHH|^v9wnTnmC7n` zk25cGq5Q|jvVAfOR+=O7X=B+cnT0n;WN%~Hw?!cD%v9F4H3sh$-^S6s;DQTA{=tVA`H()N90Ij z(R$o>G=D-aD^^~BOy`SvdJcOswg#&jp|e_|8(cP81QU6F!9&Th53F&;>if!$Q!~?t z^!n-pVqzli%tGRYMBdH4JV?YBjsv6au=qZa&tbQS$!>14@#0}O53*5WwVPwla89!4{vg(Q1{M=>&)E=>!*d}>hKLe8*97tJ zeIX*lb7zn!-jfg_a(Uhi61DUET1=GaDK8;%dv*nhl002PM9H4cL8A7a>SCf4PiZJj zltRv<(70zgNSaw8qLg+IPH_^s7leq~J%U=1dmuy>BJHBg;vguFSx-2Lyo-ZGiP?W5 zBClCOl$e7CB zEpi_(CUW;e+UYKU=2dX#f^cn4T-4mPt<3##a*J?ZE$nw+Ump{`p_Oo*5)R)5mp8(V z%Z<~x+yk3{#ke1Z`$0%&!R5%iVdX(w{Ik44_hFWLf=iqNFsM4(vxI0Auuf` zp2&SGT+C4Bw!z$;>OP)!+$cy8n+?{3eZRmAfg5KlK5-~fKXXI~y z&P`}oZ(kITllOB1RwtwG-c4e4Di2)y8VZZxhurw{bM7G0PInC|h`%93E;kuO?nt&#oR1+h>!Ele=PZ$*#sluu5~5`LAS$>`+>pjgt9FEl7A0p*2gtSvBQ|gj zQ(yPzNO!2kd&pg1Oq5&>2lL!th}YA2FzKBTQBp2@C;>|l;>$FCOTrysqV`)PYSa0H zi8#lMb%2U3zDVZ-3wx%-0{iX~71*!JKU_$(RU=Q+3bBq>DZY7&C37AUPiF9LY`OR> zgO{*T;$nsj{tW?yh|yE+=Rt@Vy^wYq2oWQE72LTX zUF*b}oHTcBD|3I8=9F|_E$lb0zcwa(Lo4ArC5#X;ZiE|`feoK33omBgSZW%s`A7W8?@=^BY4}qZWt}L&b=J7%^_a z_GOoW5HZHyhJ^-r8~<+zBSege(`0icme8Nbm?Y~7iD}L_A_FmEs2DL2BgUQTMi3*$ zOzg*YlV`HgaWvKm5hF%tnM8~jUFW0soF!s_Plt$c6WTQcA!3Y^w}TKdCZp;Zo5cM- z9U?{%+>n6~F@i`t4TOkMqTC}yj7p^4213NR3$;xlju0_sO^+kuv&7Fn9U_VL`>5YG zk(V6}k;JUw@k9nfBr$L_4$crFi5&(=$Q>b)SPlpCj4woEHV^hjh_uUP)8mQSzl*dj z(+*eMLcFV833ym#_bCA}=W#>DzyaKa{7%T3j)E=|#i?vwnD7KL!JQ&2hZok}f=nP9 zJq0lp{|mAJl>ll)t1S%WpHpLj_euv9crC{TDBYjLf*f9b$(H^;>?ToR@?7?v=x_2& zHcE^(5r5*(7N71_CkNn*h#%@e6d#<&vA15Fws=<6)H0&11UkftjEyBk350GZBT^bo zJB`g9klrmv+Dqc{T>b|8TAaw`W7t$Nz~)}oB*xnOZwfR?nsEw)Z=U$s<~Tec)6do6 z0ZDVGIS~yRuB4_UjK0)tG0e~9;Q`D1Ty14bdKnw|_2B_Ya>>pMVe$@)!$1d$lJqK8 z@)U}a^cvD?O+2a9X#z>H(**MKxH?TB`I@kkD6?G-QF8C3c%n?4CXlR86F^^D@t2+^ zklg1>tjSj<_pO6C_O~Tpht+gtq`$oSkyw$(%fjE65w*|z2Jv2q=5orD4YGE`6Zx{s zKtkMIO2mDu%ZMDlspUjY-`O&vIN#h-qIloyr9|zrA1_1WyC~;R*z4#bejzky^pJy>@;Ub1 zbq#PFaxgi-f0GOPHZYmYg3E)AT>xFD%3blb`4BPoF-?7Or8<` zA`R5!9FkW6)Z`qN$@yYbkwR+zQKXR?)2(dx7vC32q{b?iNX>P{5~;bPSR*y&Mh8r! z91%;4fz&jwg`9+H>{f>w*j+Fyz@Y{#6oYE)ezzpcBMiEScm>b!iAf=z$)Fmv&SfM)E4DCy%50GhG&kp%%jGxlSn;sMPB0L|D>BH#vB z1^~_2Vq83S#{~e**ozKHXeIz?#(wJdBtSC(3C-9~znP+sESM5qp0}Tw*`6q0K{NK^ zhti1h0L|D-hR2{8yVa2ecB>-`?7x@FhY64ayVa2e_HtBCK{IyiBMa}2G3k0X#>bL`yRmx*kxMiwQ%qg zvA=>_#lKf5S^4owMDIcN5Gr-6mR%X9;%OqclIMqgRZ93>WtV~tc;7Z^!I#3pi*ORn zFA4|O!O(1u(as|^#n)*4zES;+(7%V{87=w8L=^A(FWMymmTYOco4(&`HJO@N)1$F= zv1PmP$l%~G_{x(S_{{6@JuGC%{IQU#H$LI6>X7^-9yT+xvW=%L)iTi2CPdeoNQfY7G&$1$^PNWI<#F_@gw9hhhELJGT z5&M-z&v+;emJ_jK>@s~c#A)Rpx(~;6k41HZ2IiGtwP^3cz3gD`EF1A~>f9V&ny_y}(Q?`$3G1gS*jW)^ZOKq=?+NSbO z=%qJU$gh;;AB&N9H7ch3Moc-!A%#_&G*Gzo0<@R28*-KQUiFJu({nNH<(FzNk7<`* zf!lnFbu^V0{_LJ|&3(~&KP8nh6hmFK7*_VASQdpTScDFJM%%0jc4(cwnnEMnD0R*v zt<$7+`Y4@fwjYJ&w$Z`vWaVeE))}C57Ke3yAca=6QCb{RdR7Y!R!Y(AFbeH%qq8ff z^PJYHS31#b0~P<;S_l2FYPLixj8zKJ?0BNWXV67sWchvBs-<6#b<-5I^dspp2}k7J za1mZCYz$KmftBIlQZ(u~?V(>V9)WNhGhEaM+?C)gIGCf0`%vLnNbtxo^d$Gw*YEOYKDyL%F&K^oA$8C5Nbb z6`mXN1J4neJ&{8HXd^TSLep`N^4rZ3xpyLkdgITlw<0PnhfpFa^G=qm%zr0P=&N+5 zo=uNQS)z|1B^e)E)v%g3kwUXFl&PrDPY@aee;?yp*%4Vdkval{sFv@)BkJzXP0;Ug zxKr=(1adf?q61L{PBdg?5DZ7bgN9h6zh*@ny$p@+jO=|rtXf@aI3u4uA6Cs?hGut0 zwml!#?Op|w&d90f!>Zw{(eTd5%4Ol|(P;UOuy3EKAvH*x?an(`INmU&2A<+wbAV!kr;)k?7gElM z9zFE@KlPBjg86^yVVRsS?(U)H|GRqV`G1;QdFU_PHFEyn6~E4l@ilV(zpzHn|I;=) zV50pIv8jf8t-hH=Y5V0RP8CGy$9_m4N;rhA3|{d|4KH&2gh9UWNJo+1lLrb=r~X%O;rYw_iK^ei|6NWgjW!-Slo6fU{inNH%7DLF}Z1m%YSQ1fT zi-G2!uj8M)id!xam6x*~KINd;m&(!-YO+KxA4?~ykiNQCUh1m~f1|ScQimNA*&r`b zr%vQ>U6~lIMrX#ZO&5pz@JZsGtNF0zxWW9^_N-s?_%VE~BQ=v3X7JJs*HBjmFHGkh zGeqU>ys*1RU6z;9d4c?INXA&#keS4tY)Jf9@pqo$At{A_)5pxfKQr;qokOac7u?SC zoxCPqOc=v+#jP`Vr5JE4pV&NUGJlHkjFrvprtmZeFUSoFZA+? zjCYobq0{*->^`w}I`8AU4`YTVb8*AXJiXbR!AEg^@n6leXYyL^JkA5@&D;LUJ35%% z{NKOvw;6j?{3Fb}vV+a1!+aZOlbYAe;d_|<^}D>#!$TP^4}XNE>;E%c8LlzBFg>rT z`Hg$|OPrsnY92C|_s`6jHg?MBkqv!DPVF^%^u(*Cj2<~{bVKuti}|P=Rxk3_a*rd0 zCL`hXZ5yISV(T9VrP1K#8`km#4(1d`-{rMzrwFa*BlyldUSY(D!=mRF-h&^_ z6LYrkJ=twP3-5_nwoZI5ro6{{vwE@iJzn8!3*?{GVv7aa%DwEo@NMN4*=-L%xGF&z zI~Ee7w(@fJxQJ}!3yj!ANQB0?D(h|cU_Yv_ul<*pvYq#?YJ1+sL0#UK zQ1ZRLUMfy*=e54JjN9vR<}M}E3UTd+yw=xt|Nk;wyhObGAwSK|i>G$*3Vys=e7J*e z;9Z-=10V6>e0PfY_9H%nZ|WpQeav6%{!e`2t^*{Td~9SYBoH zGEudM*YYDB#b5XE-mIh8yoZlqH#Fz{n_th^B5}uFK7vhb-nExM%-H2(#D4Bi>r7Kd zPn$kv;#HFxMweGzarxzcXpZdX*PF~Qj{b*N81*`a>xJ(uzs#7dvy;V;v;4Al(MQa- zA>!$?{13+9;VR+>H}5;kYdM=E^3L5bH`tXn@>wU;A>1o>mhVIV}_i5LL7>55XIojuwi-+rV zXy-;&Nh3S`M7}!wYLX`*8xHqO?o7yDNqV_H$(ByP98IzgfA?}MAz6n>XKw?^m3+E% zCS#+4E^p(T~jZR6^Co~ zIOY}^{WE~Ga~Y-CPe^8h;AmO%X8^&G81}RDeOhS4KYjvm-ZTK%Q`VPt5*&#k$nU1` zHxV2y-8g^EpCxPWP;y6V-8jE*V=D8O(#GfDvj`+1ZR>;b%PtJE|7C2~z#m>y47OMB95 zk#eaxeKm2HhV`i*eq|bf*yA}$oWNGHUlr^{&TnT)oBEhYxpcJ8-~Mg?10cE^gwZ8} z!=urE4xj0}!<|exJZ9jl#8CS?Y5$<-hV)y~zQGY*!*2mNU#8NuA+03CkZ42fEh%-?;Oz5^DZM{Dn%Jel5mCe;C5(t9pGn2``cIl@lXlXQcp$nRi$ZcKDt80!N1FHeT#Sygv_>5+~M) z+RrK5^^`iBaCH2Yz2GnDetx)gJJTrT&I#t4Y7hMaz{Kx=IgW) zov(jLd#Cgu<T2r<3hLufP#r6j{ob8`EJ0<~0wrN&r z*0c_0&UaaGEHlOcXgo!o6rSIvbqIIyIITLKG%0y{XpE}J~a_JZLZ@o8aH&bMbvI?zLJ+JtbdA9Y6&a>M2(%d&bH2HDT*PrM} z{iV(`UN!xU+z!*5ddlC@<{9-#xpaAk1$ED8OUk8~na$(4?(@RvbAtWlfb0d&!8S-t zdCta=>54jb&r2mULrJ+5c*Po`TASpHja1f0a3p>sU7Be{SoW_mvlS_qI%S4gU;6~0 ztGz^U_)S1t9H#Mllj^RPI?in#!YRW(*17SWbUL%S>G@?Q6RM}ImQH8ZcMTuUZ!ZHl zJ4wT5S;+}0YZe-@WmZh|%F6)BOtHv8R^vq-CdZ{8X4Ub1{j%y^{XYc%GbPHHNOkymYNA10^t#^kCo8K=13_j+cbJ+L>5Mzb z*q%$tGjWP=pM#CoWKNyXnTX{u9l50AZN5@ElNs*{$18Ck1315HiYz#r^n2nm?yX|A zExb6=UA@-rc~y-IyllfBUa!y*KCz&{@Gbi=blRnL5QqNJL!{n(a zPp^#p`=0l@?wKRtK7*LU8me7wlgl*6jBgmf%Rt(4=A&shVns&q|8{AkzH{I1;8` ziXE=n`e}-j6rhQCl_JUtw zW-Zl?qnA`S#!4~sqsdoN@_Zal$y>ra2VBBMURpgrxn`)o8+;+%nP1me(MKNGb5kYL zf;ugE#Z$p?d}cEMA^TTjdW!vAvc24XPH>oZUIaJ;0jjoXyC@a1F9b+u7la0@j`60z z0F_Fo7DOnsq%MBNO8oxWBb{Cl?x)D{NJ(UUSPiYFuQd3rNSg}GBUYeA?8twOSnUD2 zi0#{r5xbDR-~x--1=jGX7gQhq*+D5^s5}aAZW6@ICmBNX7IotRV5Wz2vfExtrN;A` zs}71;LJUCm6XKt98rwBgwa?}FU=&$+DOfXIA-Vd_o4Y9$Gq1BA;P5;25$oiS&+10a zED;A6YiOGnH*ma5LgW$`^%9+R5`67#fQzrHWI7j-^ddo;i1gjYXm<(y<>0!|Yf%SME-hcwh?Gm;=3q+oEGGv4 zUDQxB)nh4IYAS2PQcd-klMHYIM~kLo;CsrVu`t`J^qXSNr;LeDcOZjma8cGA zsi{5kMNL2KLN=48>7ZhP{XI&hfGy!tb9;1Y=V2P_+1TO8MrZj?> zm5W)Ty~t@gB8^-c6{Pu~_KQ&%(*M;hV8g$3iA#imUwOb@?kaEQ^Y3P#L z%2uV-2>@sPXvMQfc9&pKrt@p3}dOq{hWq|5H zop+^NaV9sO{3X>|-hh-#!tx|iF4>pksNB80DJhq3viqmYF;l*_0>|$_N7FE^JupjG zv+Vf8(k2HUADng|-)%=zZCq5!# zV4tB=4%4;+I#^V!&V{Prj@U<@*k_v(gQ2Qq;{)uPl0z+*qyjKjg(8bRyXU*+RI@v z2#%c6XLyiO zwo18cQg|maY|+dTcjy?x-(V^3vJGL9bu9)yc}ti<-YX4W%WbwuJJ&{#BhtCGA?D6l(gKbQ*vMOUl(d!y;HT+jq`w>=hQUm`TDw{H!zwGlVQ6~eBm@HYh4$^ zq!rAI_c+IrZ8{FmX)K3-os&B0NoS@qQaet1yj3SPYpNu^TUQ;9uC2Y`NUYecE>qW~ z&))5-#O3I2>815*T;5tAG3MtD{7`eYAf}XJ|GB)(6{0w$kpzcdLu_A%>HYU~+8a&5 zyz5F?T^Czt&i1yR&0`9SOIuFrt|widEM={0DvjL`Mvh8vZBP<%!^K_F)eUH6#fD}< zDI2+kDXN7zQu0QVEn}jZLglKfx=eT#nyncEk?E)>fm&nAXRL}X*+pK82OJha0?Ffxm#TR7j41B z#{IpxYJ6$E4x>;FAt+y({2oSf`FmDnUr?;M%J!3atdo{!FDM7S#}jbaI83Y7>pTt~ z$35=pa%B={o2+O1^>xmsi{EHuYv(X^(eqtY`Sh`|aKKu6#`UjD6`R@Ffwpk5RTalr z#vV)oT=jUSh4md+y|xOw7CP%u_nQ)9cOq<@-#c}W$=}cyn zbYXj@vZ>M1IY-O6Te$sMQlA|S$=8x?M{GptTa?<*31ZH!XOy164Y^>yWdF>WFP+>G zYiO}pD&6rCDVKtGHc`ewv6z*C>$<~H&X%&P_9ACojx=;^UWjM+w@Z*m|~fdVh!DFY>Drevy0+GzjhJV3WbjC)B}x3fi(9(6!}ET zKVXU3pGm1b=hkPGW}n7?VQ!${NHpfF3&&OI%LB~}jpj+lgM-NdDdXTdgWoJ^!=bul zmek{rne36qA9{%_k=7roM*wRKE#8z$4^1RrOQ|3HMDnDU4$m}L-jH@3K1I$*V~)HP z5iRkKlEO|8atamO;%7+DkGy1X&y*65CX%Dll%p-(qo+|S`6q-)XO8+AUY#v{dbDlp zw=Y{EyO4~vd(6LV1^;6nnU}3FHv37&tnOorJjPzO0)et5r)d_Yc)oRqocBNG(fhKL z_~D=?yk``PS*bAqZO_j%j$OFmZ~wU2J)LUO`9Ylci6#LCohetCJ)#C|Tebi(BiYM^>`r;AWg%S1~Dg1P;cAqUnu4{tB z^f$Xx()_T#0QQ`$XOxyjia8^mDG#f@U#52HmgA(Urz447T6Q|J)|3e>R5(H5(Tl$_ zSz$c-OpwlU?Wrlm0s2GVbnT z-W7%*^ndG9ot8-lPnu1yje4O|-5Dp9o(%P0xESC}8e0I0oc`mb?H~1W?>LrHDYsXM z>0`Ei7H>Q|JN zg=JDM)xQ+W&#+y%%m|m(Y0XxC9HA!eg2y!6Z&z9%{uss&MqNC3%3PV}^b0&Mo}-Bh zkE$BaCZ&NzvAS}(w4|u9>zGG9%6LD6Ti~LoXAIkia*Bq5E3<#GS$DphhR-1FMb58A zRbj>Epv93o);7v+e$GhFsvSBii@3eW*=r=FWpCg)vC9}xG~63gy#~#=qO1YfYAw{< zfH|n<@y@q~vD7G3a3oH&0XRDjrSvR&ey~{a(j|!gYl1~C!3-39JVX^tR0P$=7qg7g zmmfFO3=*?I^0^$7q8cP-C7>^2zZ-(Mj6LG$cU>6$xiJ27&T&~-c%FIdXu0Moj^(du z34hn4$hk$DemROi7;snuF;-)x^_T1MbxWyfK2$2X98o)7urIh_&%AE$SCS!!?(EcF zu%|ei6=p9eA^wXS5y^JRq@KxXXZM+dG48td;*VR3ob875z{k4$U?fMsQsszt&`?Ut zMhZnKrBdLfuxcQ_RywD4UZ$P?s}LAf)UTzy*@ag0a^whJubM0H$>53-`j=FjvJ0(R zi%lP_HTBQ)0i4YSsVz2p5Jyv6tSHGBEp`=+m5bq6)E--4LaySz%Eg0~i$}1iCd(qzAmsnA z4(M1mf(Bm`dO^Al|NGl7*k7!tA5!RQ2Na63O0h$@%1Hs(K?kaXs3^;s zj#DCg!{Y`Hwf{C(DKn05f1IY=a&eZ*5SsJ3W~PU;&H(llG+r8hEylOgY+NEzN(F~U znzZ~{6T_i?(y420$ZYB1wdUj%ss86}iMKTR^TMbbnQAU{rZ*-DrmqiM0aFF`99T;J z!el$Dufa}6aJ#5JeY}aLI}#-gXDr9Dy(lG!+JZE_KOTiWS6|n7Lz9m0O)0+0F*jVL z+1}QOzP%|en}p=dv4SHpS0ntH#%%ZfpE@i0Rnj?ClRlcpb=q)`wp6R$$U$w#KF~!( z^}ny`{|DUv)ic#Nj^knrUzF0Vx-%-<(p*#8K(R&V|56RQW*VhsDa`*)f@q5VpDF^m z3ie(MI(A5dDeA?dReGozzwn&k48Adi2_^HyW-6$TafFWX7Y>+P9UlVPi=2OPmdVwz zAe6nxd94?v_!b!s29}3g_gKOCQsD3Gort=c`8A{;zZ^jZO0Rs?Y{csb>qyDMb!#y1 zc#98OLCg^-JC9J`Whg0P&&%1Pbw}dp8ERv-?#V)tR;>)CUe~{>XS=`43eFa{8K=j8 z;l!=4Ao~4$zzX7OrrecfI4ptoBB$@m0QPM3RS->QknaT}MHY(eCp0rO`~5UZDak&a zMy0u5``fbrMWCY~nub@)Q|ais*Bh$mK|RzJx`21sm};fPtZ^{_IkrOooGG5n^uPC4 zZ#qU`?YVp5q{RQj!ulo2_|mND)BnNj$fW>~Q|K?8Klj9#j3-*A4b}4>v>m~LCz{@> zp1$-TCl9ZloV$;a6O*bVKj|!H?ZP>nH-{r}+H`=|lG6o8Vmo%%TW}=W67UxH+HupB z9d^`o++n9W{7lnv2J{PH7gOEoO7A_g!>YVP?8V+;xsYbh8A9%5ew%Eb3v!77^ z#p4N!c94c|)4kR2s{ZgD!@TPpu1#I{+({;n%x zdwjUf$~InSc=UhSTb<{w#=G0xjV+B+G@R94DZN_@Yem!Ue~}h!j>I0CR_03DW^g8eId zk+W?_oYQzKnr`l?E*@%6NZ?)SNcBu=Pgw0D+w^au@%<`)LNTgabv@zwWVI)}B(Ml| zcR{(3bj>4(rub@E6lFGCQ-0}QMVD=eAe!#)uFg|MPF#(hl$%=IlbwIEZp)T5S+mmd zD(h2Y-{XC1N)JlQaGCC`a@d>`8H;Igwc7ZReoowErQSQ|SLrQ(tw;XGq62q{k_& z`vlmk1#rD*m5@qlSvNs6{j#&VI0%khcG@HQ6;($s7L+3&_Rwt`kI4o-r%lUU#H=~J zaiN?k38HD9o=0PGnKds}ZByo#m*!Ut_p4pC@>~U*vV-|DA5^DWM&+F-cb4_GJR?Pw zhS|Q_QC$GUtff}AyuWkMgUxscs$~CRj+R{~@*}VL7$D>M+j5V0SbbEDvRqEhh zOaQR)WAqPRQG57+SJfsE9DbinV2XbmuP7Ebs)}#NS5eGHmH6*U?nFNEAFY;4T^(9-rrhe8)ZJ$0EI~9)s>+k3e3GGhkXn_2)0NGq*s>AQ_5Dm* z_(!my7ngABV*fYWI}176^Y^Mai_1Sgh|cAM&F@xK2Ba5rb$B$@ z@+2};%@oLe!Ev1REc-S7(wqH~^Bm6A8Q5uyUZM1ElYf{$Z&p^IzO}46G{<uuk#8?@zQt#|xa#?e*bKo>T}*D(^4P?zaK6XS94CmT@3&Nm4-1c& z+k)@=3acX*i%Sz2x#gDX$mPn^#~+~oI!-rfTo?;BoUXQxQD%+gb?U6Ks!o+z!+%9r zKEEbbr=;?9l{HrFMCBdT*=o(pEc|qHWe07FhivU(3&RwiQGQ*8Q5jzR`G~SEB#hl~#e$3^lB2iE3CMC8_NxI{M-Y)SQJ`M7% z;5>P?YHo?CT+@G7Cu!<_?4YV!it3mKzT~Ak{IWCD2k6VV%S$r=>;b5MudMo95hJBK z!)-e^{;QK6G_8X)t&qg}&iHDjbzP?q?>foV@(CVueDNK1rSJSE{o!nGemaV^l6jQU zO2^lz7W+zxcOz^^H~g!?ua8z+Wn6nTOf@?(gJ)MOEr?5%%;L5GLeIr_KQX}LmB-)y zYpmdm#V<&$Hozgjt-iR718YJf<0#rdXRk@FJMa(L{l5Cw^@}8 zt5WBGQ&U{lR#luQ`IK2~GZQK8C)j`LBV_*?E;w4IGYb-jY64r^QtGruVM`}|_O2D2 zKWDJBzK`(!5k5zEB-&P4!P#XjyPtvgOK~&ek(F;nsTLa6Yi$`z8nR4E01!QFL-W}? zEq0FqoVg{^p0>l~F*96nB-X|9jJ8aD1m5>=2T{9 z7V*`+He+$FR9)aWe!m5qzr{L^Q@R$F?Qk)vI9|5yUMv!u8OK^kpo+^0o7n_6J#&XQ>|BK z;3T86fY)FeOEkI^_y1Zj6fT->_Xp*Ws$|ty@ug_aQFKj>PF&ZA>fXQM-H_ngmrai;|4Wp;{!< zS(;nbV_)?6?k2w8Ka>&VWECbc$%vhDydavcGlq3l7zBqfKxitOjxp+js#JUe)$(1W znMNXwA7ir=Ij#+*_E-9rA@)Qj-K?rKVvDApj2KddC?=)qHW2eL6l?=wW!yinsO+r$ zvOTS@Aesz}TD-yvmChi=q`ozMCuRVzhVMkEq_>zrtH)>rJ?uD zwhvk5e65mo*z@>;dA|RLoecvz)R;L<5KSu>Tfa(djt)3mWHL(o$`m$_3}%#=N)&Ql zT!fZ61Y%z{Bmktx_rn9C8RJh5)deZ~fw})*tI*mLTBSOY1_UVQIil$rW09+{=s)1I z4pC#8^Ae?^$3!Xjfz{RxB^-VpLvS>ib`MY%uvZ=GBDpRM-!NuhDb9@*L{kr@D7cCu z-Kr&;8Zegf<*EoE0tO$p;~q8i4ePz<9pdx4X^xoi59P1DCwOtDW(3)?a$Q>;I-y#)GcHDX;n16 z_%^~QRN{_%K+&VNsI2Z0B2HE_7=)i_g|_GYSA;yK^zMyEl;+<3{E=jM7-lmeJ>^%u zCxQn)+t=PN)KAI(SZW35fUWF#y&#%EFR4x}x=vrZLT~)w$B|LT8&k?Yq`o`ej}4t&l~{T| z3F*G(HQo-N-{fzJHV_<%+g?+^>-qv-2L*424sVEt zcdwBP@AeWaI4{oRc!N0Jy?693pndTQUWg7aLcE?!#~)-1-~uF3eGo`@LD86X{7h1vjpXD5Xg7Ol}(kk|LzlK`uMb0`p!1L*9Jm0P7@_z;5joQZX zd^p~_FW|kS;9dOO@B&_04{qOB9bRh<@4LD#`>thS z|5?KEdT_k&mQ?ZAwmg;NdFk-}=&joKmJaU?#2akqc)#-(I^NRbRo6ZzmEVHcb($shwba;>6LVp#!H#nZ5 zDqidN6}(0Y9==7tQN!CBOX=M>E_*Des&C=lxh+57_h(NCOKm1-vIAmWu}Vc-zEs9u zG2eF%sEXJ6$DSN-k%EV|)YkBx)~59C0xs)URo3RA^xM`tTYm4Q#$|tPmo4utu!6Hs zK96%0$J@VH=Ua9C?1VDS+_>s;b&m$$tG2G6y@L4D75uY2?d_$7?? zr9IVnzNEvehjyf=W{wG>DOV50+q6iZ%}>+QF`IAEm4Q9~_#-?`795Gbni_vA z?%6zyZ}PWjvaFQy3AUFU;X#_(evYQ}#5MwO=4Fu9;X2f$g}+Hl|&R!Xt+fb#^is@PuSTqYpYmFxvqU~Y!Z8kXmw}uE`qFKbbFE0QCrm;%k{ooS?}p+RqrcYulfStojQ~{ zDaHYRPBf*2f4djn1K>#2hM(pfL`;@epK{9~?J5Od;rz2HcknX1Oj5=E&q zu8zFPi$v8Mp;iA@i_)^-?9)m3ykTYyey|cBO{uea)EaMMF?<;-5B4Hab?e4d1OIn- z6@FGNN}UVkjb0?W`w6Y~)#}g}MX{s0v)uulk1W-o?$+eJWTTNJkXdqDBZ+G`POEQG z2OryYrd0Wssc#gP@g*wmKxbJrlE^wwt&}PqHv88A`vUD_?=MXOc}$6_EarU0Cc zz_LLjM`H2MDAg=87Vl`qT3Gy2D+Xfml03c!*-C25em*4J-8+&}xlsU#P`{26(~M$H z#x>=U+}DB{-}fUF#z1xHP`+^bAzEJHL#EWs5p=)9J4g2MC1c1LdAct#1%L7?9{6B# zuMVF}@>*Xqv3`Sae9*e;8XE+Ks1!eyZTABEOLAjBl39Ow7^Q#u56W5Y62Q;@yXer_ zWU@;B#E(pF^e7bPv(@=JZiZh&FMvmV&gY?WMolt_43n?bBw@jsDLO>PkRd;-Nox6a zOHsq|t4XfoPnMH%`H(+JP=2(qSWHS49FD@9IGXWy0Unvhi-ReZe>af` z_2=2dv~V%!uSZIg?tewandqvl94mmW4jH!P(2pcBgF>9El$4bK#CRdHi zNqJiknMk7LfM8+@Zu$Z}PHq!SGV3o4t0HNYcTvhO^6G1(V5*$^ux!h3mLk z!_iJU0oE?}1LUb8WRk59m#|iqnDBzczyOT0`(sMWVgxbA`G`{X`<;a>*qu75!TG_T z(%glok&$`O(c$# z%f?XBQ2ho@%u16JLrDxNmxtq}qr5Pbga&?;sOp+rlhV5)$iJG1*(KCh{*(*-ftUSq zU>FJYZLSG@=O;H0Bh7v4bW~wB%G1M0E5qYJd3P9TqYd|@)V3*47FgMj)`+?Mhby1+ zgI(D@oTU2%XbAh|k>MoR@J)a`E1c9OYvi@z#A3J^EFTLe^#hyKWOJ>r;7Ht>2;kf= z-w!9&q5t@4)hn@jK@j$-9;IT+4fgpQk4#t)E|s?gF$G_j_5yIE5i#WkdoTLknvBMN zS+nvY+Dx7jL7I|7^2P{aAv5KZ5u{;Yyi4JR4gk(w^5Y0%jeG2?*|8j}X9reiN1)s> zl32(pd2l4DL!#xZNRnWS>Y&E3Zw(YmDXskB->@2#jx9kBCD)zV{i2Vvxy`wa}PmGwV-m04JO!w0kaQlMdW9==Zje)Qy z=N)hgjUqjG$tp)j6AQ0uCQs(~y<>@0cGOYpYs+_|$uO7nmKai3-eV;Vt3asr{&E_Z z)#Gf5A*0j}eZ{0y^((FMZj{Q?tt8lAnPSDHRC|##(@pMOn}isi?c~?OE%NKNNwYpa zE!B8WGT@Yz@%{pb0sIGc zFba(;(d?-jO)qzzZFnll)eVm+66{ae_uUMe@%$J0&tH^pY*TDvG?Wwjv7dV4FL8hN zoW;{AW`(=6*#H&Ub1m!yLai3Weop@F#H0t5V*0Hy;U}G#aBH7*c5>HxU^Z(7sY!FA z+^sGNC*|_!x}**%mzUNhF?GYdly@CcoZ9cwDib2xU*V@TPWftG(md!qCC8ZIN z0~->P`U3&%-2o%O8GK1h&B#Uq&a$V(e)w~D`MeQ)A5bb^OCYWfr)d-nGSFqpS^1HZvWkHZfXzvxvusnf}`b}2D;?e@}!CZ_zU<|qLJ}JH17VR zNV$Gv9=}27(fGT*>fM+}3Y+@#SN_McMx_Jrb*bCa3Ti*c+En?K=JWo?&e<1bG4Isr zMa;@dR~~3D(SUz^SfOl&3jWbRlyBXYNA#uX0DQl+)WxFw8i4u~Umo6+#JK{kIIc{^ z#e(7!`;g<}Q~7jL(l^l+b99*hQXc;L+!<&$&~U6G*h4r!axkX{@MqJ)(CGdQzdju<}Wq8t^awte^!%4s1r^2Hg0&g4$CG zvKJK4ncW44M}8a{lv0d&4W{_UM-`O)2Pi#?#gqa*F#7(D-M2tpfe=niDXZS@^ZY|JKBZg`Q_9hq^e3$RM95z71lWmHNj(7PGprUp zI`?3wNQ0fJPt<<%-k)qpKG7D#0O!;Pl`$!fTKvs=hG`WXi3<>O7stGx%1@@Aq7!!> z$hTi2t%qzdva`FHwYgomWlE~2HqQS0s`9^36Z?;6ikuU4B2GSl{4|j_HIZ`<FGOT%jCXEoZnroVea7FXgk{T;GS9(9`bRY@!Lh_Mn31O1Zs4 zZR^#b;%@}{FW!OkpCi#$7r=S#KC_s`+VrS`|2UoY-bC}ilt^j6kv+Vw>a|?X1C6cp zjQh<{dfl&zV*3r-MENgAcqHm+Fuip!M|CjuA6L*a%=5j_%!ci z-_`zga=+xhsgAl`I$NQi;Ao83KFRify4oM5*2nH-6wdwQ=CsMbw;;m;lMozNuL^b; zcsJ?T(3YgBA@HV!(#5qXEsCOav6a$($2PPk$1Jv(0!kgnD9t)S>Cpmy#e4nVvg4J@ zdRm|VLDTd7m;0CL|F;3MsUI0`^F2-JoKuueJWJ{3)BK9}`oCYDsa)36I{puup6|ch zzfAwX4LH`aKiTAFE52MoZ@2>(zo?+#0TBL01>NNiQ2TlX4fg;@yk0@ucmQ0uUO@+V z0Q_;ig3j>(Nd2mUuJ-^K{dEOB7qpZuSHlynefa7J33q|Gt8jdIGHfzJh`mz@Oh&P|QlklvdCr zFMv-fc8IB&@3;2dp}gr&0YXaeypH{UI0lySI|3N0KfiRLEVi2U;k1;>lgv( zuNAbj5n$wR6*R*L(B}6Fy4VPC_V)_9%V-1ey)Bu?DsDh@|09g9Cf=;Uea0e&p8UP2LR?vg^T7?rREvW&}pHNy}1K>aYl!p5N z-1DcjjSoOZ0Hp(b0LBGUI>!gVJ($vbAAoKVlot2^{1r**4IhBl&6Gaz0XSf$G~5^9 zv6<2~z5uIgQ98gEU|QnB5I>jFfFOXt`IIIE z0rbtIG&KmI#=De`3j+9S52Z_k0P60gbXO3-M%zA0i-Q0T?Wfck1n}j4N{zt)GY?Q2 z9}KYW0HvLS0WuF#IxZOC=7*Fn4F))Tn$lgt056@Pv^W@G?paEm!2n_*rN$8a`AJIS zLjYd8K&cP{(DV|e<3a#_DWY^~2*Ah1lY6iS*c*W1tFxl732w(w##Rh;{a^Of3O-9Sj zMv~~5!#6AFflAzaH10bFfS2Xz$URoh8%bgfeQ(SAhm%OTWF&Dnl-`!V8cCuId%u?- z;q~wxIdl|>GCaH^x5DebpXC0dNNwUT&mBdgNe6lDC=zXW>Xc86VqV|G;um-2zmci6 zTx&FmHe9_YcN|TkNRT{qG>Ik+c%5 ztb$I_(+!*fBe2Q?n=B@SM3VqH884~w$P5x4^Z54)+7=&jsbO<#;f1g$6ygaGAa6nL zVe+{Q5@-0xUA~t=q6~Z7q1f%H772D8s8koc*~Mz*OblVg!(t z`wlqK^ZPMFi~zp`QTiz!&}m*26V;3PMu1fzl#a)dCwD5+r~8I*B$o>dW_DC$$ZqG?r_QBTf#^em0O4VNCd z*#r`8yV-@(6nqw}g(=BR4bvSTfQqil4>GHC!%+>!-4`Ig8>Kxfg|Vv^#yY+Lm%3BB zqEcsDrggT?zF>fs^0f&hI(c^=N`3U^c42C`JGk=op)?ndN>n@CM0eHBZNAK%i6pw~ z&H67n==Rxuu5KY)|++KD8V{4SryOMv{t zL=sJI%48BTdw`A759OFiB#f+++fE|UBtssEmrQx?Bplgm<#m%t6gej!$J&eXO}uoL zpH3oX(o;4~Cb7grZabMoldkeWytv78@iIzYix<0m94~LmH}T>vKgEle95IDNle2PL zyu2n4oI;{wB92h{UZp<1LF?nb0RZpHYms|`d>k*=9^&D!GUJ?m|-6=Z8GC;->t`LQ*%xyjHE)Py@Rpz>zov2;u-IK2*uQUy>UwA{R*y z`N1Oc51DzaJewGd;osE<@bKD80F0vz05?1zHgp5Xlu!j)z=WENmeuhUXFTiY=r; z-B-f_YV6L&p-tsg**{dix; z`?_57J<@c@j4%M7l+WA%LLNo}_;eYHE5F?^;3G8m z00>U->HZ$FGmsu1xvL;OS?#f7Yu_VnN!Y|N0Kf3T*!o@p0DcjZ@itVxyOnGtr{$&F zNOSUmd}A%) zq+wWb1b`_Cp#tuN0fc_SZcF9Boupw{SSUc~ZC3MsO@Pqv+3ifZ&rZ_Q@Wdo<-AS7G zeG&=~=F73$%C~otreup;a~Ek!ev&)xBC%w!JZcw-t-CxDAndFgLim4z_l5law_t#< zbNs%Qyk{2~ACZbtX*UO3!+R&*x5wilqj$92Xg6s}ddNd|lMWFz!vG?>4fF*t&kF;{ zvPPt~@B{E}B_G;NnnuuYfQWPiv3So5z%XC*#6B@pe!82)k_5Td9@4JP;s}6vszK!NGv%cf3}A-C6i>jhxGTb zHj9`uUmmoV#M^p?07PV=?hx-GegF{*@jl#}qRET6O$(7{al8lGv=r-eus+`VLtlW1 zxADG__YM<4#1gzu@VJ+EM}BhiyNEpX5eY;Z8HEEmIMMstm{=1z}!6ypgcWd{cC{$ zkuzpYf{0CraoO`869f?P9-3kFeig0Qiub6n@Tg;q-*`gLZJKR}xp%R$60WcH+6zCq7eVMw~g1KG|U_W~G^Zn0w2Sz%hb zqUl#1{s86&K>$X#h_7vT z0s*`)BgRbx1n+%l5W9Ex-ix98<{dX|^vmcfyI*Q~hMw|zVmXN+O?`!7@r? zTWSD9O*25mw{HXjm={L^7~>z;u0iqF#yg~5ZEzj9M`qOY$zR1d@ z{jI--%FY9%ZZg{EmRItc^-Kf+nN5`Pa4T+4$sD!(y7iI?fXr3PQ?0N01CV)Srrh%& zNhCS)@`I!)c||^TkhHVl-a5Lj7XTSWaGEpZ4d4chA{XVLLnO)E(gaZFun~Z4LI$_I zT~q5Y6E|IyCm$kpNP)ca5NSmE%V!Uf*!tY6(y4XV;)kO9mE!EUX#=nW0MzBV2?WVL zACR=#lMx+TjLgAXL*9UTb}{5l0#BnTFZh61eDRI7IxJEdXXWi5kR;z4p=!-5 zXXX1JkT^0=jyO!rk)x2nTxza(R0rpM()^;_^DwDRZ1VKOB%EZ*%MP<0@1DaXizLep zkC43)!^{8yp2krG!24$(0M8n4vwpio{^JM<_v>W_@M<-RRjrUij*@1ihuq~T%a1yL zNO}>{QeJh8G$1zl>@iZieLXV(vHB?KAZFe8hpdOMVgcMC!wbMjp11+{=G6jN?5;~4 zWlI5RO2*5n1qAb|X$9m@o;-QZ`jP4&XK(6RP0B{C<->sgNa9xrItX6+DqsFrf;b#P0{n&yg!hww_ZGs?a2a zVhL5)C+xOV9)(0qsKRcu8ce9dzGt^HxK{^m{5fm@_S6E!q4&hR>z*9Aj_!C?Jy4oAIzxC?JwY>>k}=%a)D)3 zGcG6@mATt&S4L${P4@%vX(bn5P%&=a$Uk3X8C2*cmO+{4tdpl-QZguW7U~M| z!3@g05bwi%FoQBL;x=FgWnO&FfHq(TWzNC+cpuE5%x~j;BOlD5%uDb-!3Q%a^HRKT z;e#2J**;3kpv)rHD;bn|xeX~w24#K+NlFG~UV#)PgEHqLMaiJdE4#ZgDD!F@1WE>F zUX$*oWl(1M3s(kZ&c_HU8I*bLI-WrpjZrpF05{B_%m@%{_mo-LyQ z%=kO05Dspeknm+Lb`_p}nZNEB1mJ_&m-!|#fe&V1{NCLMvoG^Eak$<0!R(9Q^XyBh zCzg|_U!m~yOCj;}OQ9IR4bw04w^v;0m-#z<8sLN3m$?*g!3VQ1^AC7$^ug@Qd2}sVLZF zvj$rM$aoJNChmD9n{3u8h%rH_u$7#(S+`@&L{{ULS2En{fmTdXFs^K}Ssx;UT5)QV z%{tlwK&C4kg_~?vf*fkag-tey`Tc$Wu#KRGS#{q%VrO3XScl4sn(QQ0K}q} zXItYD-Ky}HOtl7J``BWXitAIYmoQSXia9r?g3*ZMEouQe^1vM%Y0EC|0Dg&sf5`e^ zlj4ZNf$1%Cg9{k)(xM-r-Usg34-9#!*3I4k5W+0jGL;;rsD%e&>}&bIm@|8}Oq zEw6YsH(>`W+uZUBW?R3((D4elyu#Vm;b_uMMWAH1byiIPvP&u7m~F*HjqG+;LOmOd z#-FgqzlksoW>@%D?n$!NjMP^A(P%}&kk^;@<`qh)CPCC*OmBy<@}bQf z@O2Gvod!5W2dD{Xc*7LD5!MFS;=`31`Q({YI`1Cqn!~)*HiA z``cDl#|1QX?JKM6psBlyt&r%_X2odPf*8Hl2Cl}YY+lIvd`(@D+VHmMt>_+?aLe1K zjQ$XY;Fecl;|`jX@+q6OHaZl_+RczBSbxW64O1*gvVLGe|HIvJ$us1oK@|S}F1hW7 zJ#~iC#rJ3iwGLPPzwM^lHJ$|9_Nn zlJ#4(_l_G5HMI9LEdJ!C*;kI`YmEERIv%hE`~qbC63xDA%s$?~Gy$!BzEHGHf~fWu zoPRH|iv0?ppaFiZ0bZ&M$OSaOVi({}4Dbn79{U1bT!b3H6D~X(TF50dz*8>3cW@-< zu=4tRZrNq6MJ{Q8IaOMOOSoEO2}5wT$Wo=L5ZBI)Sh za#xGY!xovxxce&hxdIp(sX9E*Lx){66)*7%B|OMhihp=ut)>! zSjAy3;TjW33Swv8Ba>OtHAG%k%IH7qbFXL~c0vO?s~*<=SuvuK5_KM*o(g;tK-3Vl zID}Pvna3?2g%1nZq#>Bq5QHce7tH3Pm`k|X@{Y{rqa;+Z>B?+e=fafIh1u5bXpvej zp3Mh!xEr5*OJ+mVDQvP+1{}8SM6UT=d`QPE@Uf^CoHFoXyHpvrOu`0kd5djU5A0`W z3^>x<@($Xp%TOmT8}gE@&2Xwxi)nnCIm;Bf{lB)Z1U!l&`@gE0kZCfxGnq`%ogOkI znS`7iB6mQS;K~_L0g+=D1r!hwkX?~MWCa#h7*{ONxEx;Ss(>f~m2(j}#ATHm6+}Ql zcNJs>1=j!ftE%aQe1E==q^j$^S69F4uHXArC%RZKLtAvdHWJ*8yJRbe8@r+_BYAxm zsMf4gzbLpKV|ES#sDD|6D0d@jTqpo=r>?eD_?4wuEB zJfWJO=RCy2R%{N2-)Md~kEquI-TvP>_J6{h{=VM+VYI(U7O#^42wq@SJ*;-NW54J| z`%1xSen-drr)YjBz8(FS<5P?Aij(E{PFHqi_+Adr6~}&@w%Vv4uPknkR1R_Zz|6+`Q7J|o&6 zVW#g-j)vVpyO4~Z7yC?xXpVzoAHAdzsCSv-_2ijT6KNF%-qVCQ*niGmyo~~}l z#Svv%%DbY^MDnxZTM#jcC1DZG?}YpDakUDrkK}uB$Isjfj6PbGe@1+Nl;x)9cfxr6 z4b{1#??i|~e-OcAEGP1WQ(vzedeTd^UH1fkd;<=ZkNY5&8<~%t73-@UVKfySLBA>? z8Y2$4otFqTT9r4{Q8|u!!>q2Pm8xW9{(0DG9WzV&1HhPv8xF>Nu(`sR>-h(26xU{o zKJBXKAIWt*?nEW{#!g`5MKbP3*zAq%U+Wku>h@UW}Mg{Tr9hW%trQ;fh zPMCdE2k{eXAJ#$q_9qk${rCxuLnpkpq&|qBAj%NLhcNl@-Dm{y_npub2=8o_jZ3c7Q^>e<0EzCMbP1iMlpPE4}4%fy~2C@`dAF#+v`Xy zhVShyuhxlqU$MCohEB@*17;C0bW#8haGohzoRlH_-6tgs{lAm!xq84kec|r-h9Ug) z=uzZ%hz(z}^1#F362|d&eX%&z+=LQ`(*_?;#8csInM^K{SWb-K$X*k(j zfD#QSn+s8*;bimap7n6Dxd=D2hLg=_ch(2wO%bh!lg-5#K@BIHO9m=9InFc63CNqz zNibLiw{=XgJy2cs7TF#JC##Hxlg+JmeL!Ai zG@NYy13DT`Hn(GdV{o#$14SB6Ha|jm@Cywmo4YWh8csHMLr25O=Es--4JVs> zkwHKnYuzo40`lf3W0HwH5>7VvMF8g-fRoKnQ7svOlg-c6d;(53_oJRH;((LQ1HJ3v zWb@FqSTNr_0wER5S7{Z@H;=yL1oKr|!O8l%hLd%Pf|GTTf|GTLj^>-k{#*|yn_oPc zri1zB2_#i8-~0+`70fqJp;aoFZ=Rm-z{%zrG&}|;o8P=p4=0;vgY|H-d9Jb^PBzcO zgVq;PoadkM`Z)r{STH}%gOQfOeDm9Qz~{}I6AgEp|DKReWQcqs^Lw>Q^+EavwF*YM zBXa?n6vKt|MWnNgt$9S|kLWV-)z{h`7>6GDq{`gf5G)0#vG)tPQ`YvD(8x$GZX=_@2W)_IqdZ90eX7U|&>O+>>~_A4BW{@2<8p zW2xCdl0iWZ*P^O%s#JAgV4i%TPv$7XW;Mq}%Ne`_-CfMW zL`6eU;c+zUphin1y<2wc13yu*q_P~x-QkKJo>DAt4=L}8?w?YeF4d36qjcw#VpE*H z$l6xP&Yo0#JvF5SzRJGFRJfv7rsVIdQ*DgxbxP!LfA0*%^Y4ivKeD_&C!w}+&bvxl zveIR<^0SDFrOrlm(+(`|jSg*8H|c&F{>ZZ1pMd1rPu@{R z<#$1((MMtQk5F8TB##a(mg~V^E-YX7hnW1P&#!%9kEXt>fmJgnqa zWM|0tEm!o!u#(Bh%a=Wb&?wG>hkfY?G_U%Z)v9U#RlkVUjzZI9_o`L*Myu{stL_ai zmaAR08o?n{8it)t$=Z%Qcp$qNSq?+87oE@x9vxl$KXjs#QXNTUA3?P!wk3-#0jyS4 zUlgleY8Az_XqgXtyB`vqz1_?LwYRG$kD~={B9|qm{h8%+S3@dMC(-jK_DYOT^dZ(V0ekqNcd@Kr%|Wflu^-<`aRbuK7eg>-j|TYMprR z3j0m*rF(rpDq=_&k0(7Vzf5;Lx|Om!`d`*9v1{rBRf>#UTuto!sj%T>%I3(O?n z!ut#&pTkV@MW-OYL!|!7LUN;+8OQq>M48wqX8KgxEqeW`xk{OX)g^G1GVfODrDFN7 za_9KrubQir`G6_`S1EI>N)K98$wRDa(H&e-zXMgMCk@o^>^(AhVv*o#ADR87ynuaV z_HmhojCc8((yEtgw zEnHmDx~;+fL?W-Gbz4KO#%SHvP`RoZZ-}`ru4vuXNR)!sy#Y2hi7#9nwC+SV2d&$h zdQpsab4Ba66e&s4x-CUYlC*A1k&@&t(wYT+ouYMHij*X2-IgLHNm{q1NJ)~RY$;Nb zWGGv6-^1%@5VUSflahjR0V^ebz7R06a=l?dK%=q z9u+~*x~)ayGc?~5Yc=~U|YDdB8aE4wYY;pw6h`zTDP_2VvN>Z=8%%C z=RQm#vehoqs@2pMeDW{DM`}0Ek#O_v~KIAIFOPgt=m$hBuVSGUP0s3 zF49t@BuVSG6e&s3x-CUYQiG;QNovsE!~hHog4S(mQj!`bO-fS3^fsi1rvyRkw%);< z4-W=G>$cuSWGrdA{I$nw@Ry>pmo#_Vv(eEtMr^8 zXx;ic3xd|I3s?}eZe7BIAo%DK%`38wolPaO6|LL);*>+{woaUKc7oPdNUNQorHDn6 z)@_|WkDXu;v~KGR8lL42g4S()b5(8xgP?U=XWx?>!65J{>)al>5e(vO&^iw%khJax z3{t}rfo3yJENbGxXh~v`^(|O`a9Z}hhVLqY~iRDWHS9Im{QptmP1n9IYx_)~2eyxW4DF0!4>2{d~ zd&?EwH@$SJ%%V0|^zii30|g+tOjXu)P7fat{ zbSkSLqMLj~1%pvAR)?fMm|k!VJ&NVGPp9(XL{v}+sVKvW>5871Ua%5UvHV#XI;%JX znKpf!>AmqeCl;y(p^b`T4J_>|N)vcq{$okbo7#Xv^`_QK-wN|}9CB_5FKVs0J43vd zz&m-L4ioW(WAGNYTU<=wGjn@{iJHXYFBcId;`Xb?3zPCw_g&&?FAuX`;(ag2p}q}? zybp`aFC>b0gS*|-?&c=)xx>KN9|{vOUzb86?mJmTPg62QUA zZ&Wj&7TAyXF;ssC(pji-#N)6s1s8uWJLuhw^hl&Vl$GKgx-5>!Ukz*bqDFsHBu5QJ zUlM}eL3^QJ2A#W={uQL}iGV=w@qUiXXw;E{+Q$9|(y5rc@wmUp`xC4^D4Pj^NjXi3 zy!~)-iZZtrZGS}d<4IVXihIgSSrfdirZpk*k1QbawvowY(CfGivv>3NNZ*S22@IP! ziM%~A5&qX;;Z6**|0W2Gk-hs2bxc4{{C^kkr}EHk0)+*rmAp4W2Y*9{+};*wda-H^ z8ARR+q`ltHVc}6UK84)Vk(oBX36Xo0C`{ua?={?^_UCBsT5)F@FR5HtM6@_5Yce3d zCr}!?0#L=f1?d)WFOT>3LZYNHR4~W8Q>;zn;lx*ph!S(z{CEU8#Mv}{Py7(@I(zOA zJ=6KTgtxIEw}477aWb6`$ZwhAxc}H<<^D(H-v%Vwu5qu2^AUur5c4v4GRqLpXYfw! zX>lZj7qec%?UO#uGx_gW1j|5te3e`_yf|Fc*HwQC>n;>}u=7cmZsf_Dj_?@V$dipT z6d7V_x0yi?08yRpTL%WeL#TYslVLrH#aW87jfEyX3q!XkCjX~?6 z4>vND8yRpT;~pI0^%(FXWAyzI1V2#Q*h7$p8yVv#$KLST|Rj>v!;8On_e zxRLRQ>ImG(n2IyWUh+*aTHT9aB;3eoBa?6=qvKr69=yo771NVBY+{Q^Wc0*LWWbG# zJ2A`|a3f=k>>b?5n1G&S{9VioXg4wnP%9a5BO{Eo+khJx#i})MBclRouK_nQ9!29* zh{KJHX_MoK_$YBXpxr3J{t(SwD+;n>Zj_KUvCi zm}Be|Ph|6Oceqj0TsFB0QSz%u+cNF)#4W^A-xH7JExT1Q5$m?iP=0a@y^wDlIm1!V zp;lbT=K1k6kO^NGRu0ea-vgOY%)^>HD!~P^0FA)mGJ4*^o&9yHFJi zVzk944_Bw|@e;;&wIFH|o&%7hqKqiYiM+s5@L!%mC-Mv}CCZAYFJb8QVxoA0eKMw% z#L{l#jTT7b#l&O$RdmYbtJpsA?_54goo-9;B;mfr>9&NXk^p4P7UOLGn1X{6r+kOv zhs9-^huAwJC&<;={KVOl-0-suPhxE%ZtQCTF(Sz2+5DA3UYv-t`H8RLd^~xc7srF# zA9xj){*EwZiqScpDDe%Xvy8Xj5wa#{g1e9|L$ZkK;gF z*AU0Y049g{b;%^K0T5*_^czIU&c^^UqlL)t5PxmX6_dap$GJh20)WWxQ)#z2)|{)a z1NaB4O8|)ccdPVLQJ&B7b%6f)TzwtD|9~n1K;$2*(u2fiNL7ii^EE`2U4@z?M3l2f zCQpd`0^Wl8MZW^>W0SHG3%P08ErvtYIR1BuW7jbt;xH(THLR z6Ge+9Ok_`eS$tQlVIsT1>3_Sy>3_Sy>3@6HVTWvBH#q%oH#q%oH#q%oH#q%o&&9d0 zn?rz!Y<>Da1enO4A3;gSln`JdTc7?90Vc8+prk4o0!(D<)BhpBME29a!{5KE2mvOt z7gSzZ#~uAvHWD1enNv2Xj6=7y?XWzl+R-UWN-X!GROuYz(n?@zo+2ze+V#7P!j@7Wb4!aA;3iTb`0>WnvjHvY<>Da1enPF2t|u) zLV$_vo$!;DHEKq8VMf>2ga8xS`t*MYFp>Q+Cg4O(2r!Yo7a5QZ@Pu2KR{!3KvupMz z>+qf{$p-emk0U^dKsK;HMYW1-V1K6O6J!H>KaP28vVnczd4MMhW3mt32KWRHX*c+C zfJ!Tf$v)ay62)+KO{M3A05R$7EF{ma=@J$K#-xjQ2pE$t(PRVr*r6D7;|beee1_U_ zcFjJ4q#_&GUm>j^CcD9x1MJgB(up!cfSBwvXn2-8v@MY$WPfu$9iI*e0b{byj!VYb zwGc2S``mQ6ZF~qAlYJf@BrzrvyBUlv6q`F=4!}rDvVr~W03br)5+YW{F?=VB)r--C z`gA#~?E<7@RyGZQ2r{ndoJirFE%XbNjv9ye<6Wqwv;n$q(T`f7Js#jhbToq~oD0fi zTP^fPB)ma_!qqwdqPt0PpnPn1{iyvXEACH#T1OW{6v3{TgB zDFlEP{bMpDTcD8I@gxl%bohm{dxwX+=US8vpQ z)zL0(j(#m+BTS`*KU}A({w6Ed?j=$g_g>K$EmokU=!~BzoQes2UYm?mg)6FI zjg+#pVoJ4IsfW^uWqVT5yNz^uJ323DoxVyZmK{Jv$Do7zKi0aLj?&+>(msLp@^D(Gnbd!39FCcqAQ;SC5@F>`yiPCo9=}>-uT<9vr zmj_f$X-Lm~^ zkl~0V)vFOgT@D-M-)Q{>X0;~Nlhp1f2KdTm}v*XGogGI`_qNm1{{|e*J zPLt61;c*p}__`c>4(43ZAI4RFhwSsPVdH#&{|^(MV_%godLTZ!5#I##7NG{MmCNS|WcE&4&J__o?v*gPF<@r#kd3khl%w&`bAt1-m7DDf*RB1K)jsyH@vSIyYe zbyq?&UW`!DfkslzB35kj`Y5qk5F3+t z=Z?;KF+zn)8%e3DyB|~MjxOxYIN?{Wjl-ZSz-lH|s_?a>w z>VI()CG9LD%D{f#yYL0%o&CNy`X=%_#AltjB7`Ky@u_Zoav;&C(r%I5S?~7~2dhii z?pZI_(!G1q+tV$0OKSHWX_`C2H7QP0UQiYnDcxD3c1TiFa z4=$vf5W~7?W=QIn@(P$CsmEnRHt7>Q`N~$CXFa*C&i}_U&1Xx|g zLy7n%VA^IEOeF6SC#tyLx+#+=?WnxOzbzw5Klz_{qWCXyl!A+luDrnWIqva=9b1cT zU3n<~5OUFQ6Z!t({|9nUF}n`|usD#Gkv$UH@BMd7dYwoQMtT)=C^!7q4~Y zX5RCVy!B-d(Iq|oz4dCrYAX#Q|31;a8_&yI1-X`xTdw8$J93ki-1KhTY&IWqrAxGo z`aUQY#oV7z(7a#Ey7#+r%Mg8g^Bgg;2e-w*?%XeS_U3+Zq8l%)o79spV+jZ+=O?gK zmKI;vtT#X4$u47E0sQ-~sE@cf82Yi!yjc2G36)H3dJW;>RO{Ja^X}c!1}*SL3-p?-wYpIF9A(s`fsO}u3~ZhQy2FrZ{=dW>e@}` z?=p5od>`Q**_U-CGx$!CHTM*PWlm zS90F3W!*EgdGE}+%P;T|Ic$q~Xao1TQfMC%{y=!JS}z*@b5RFL1GzqH-gz zX4l0ZHu7P-`9tF9Mqb9lgGJL#yo@aq?KbgpwpxtY#5WtxnM+Z*nRj7x#6z2Td7$xU z57H62p(Gk4Hf-j@0t?%y2I%#QCh6k2qH+sgz-t$aZCm&&fyP_L8E$1|rg(fSujc() zirriJP}WNnZIcZew2hY=4(nJ%xA87KIZu4LjUUWz{POlh6J@L2L9y*0ygS<>jP1NU z&=`xqti{@je%ra9JtM|!=jGXrzZ!5$yfW6gSiHTRm$7Z)tL=P&;p|VuA3o%T{D&vS ziVyiF!{I-OF*|q{!#O7_*6iS2*fMcp2d`#s(e5KYEYR3z{|RW5lISk6<|AGmX#BMS zt0_?`VWLxaa(`vxm7%Js(r(N{zC&MsK@8f-%d;DkJZp9Fx`eS#NxB`DuN<>1SfwF5bPe@kc5?*X4~lC;!&h2a9&Qd3B&Mxwj9#BuhzjOe{fh z<3sZ=>f-j|=iU5!_KY~UhnMqitwi?6d=o#oP8|K159KUXwBO68@L(J9_Fn!f?&r_=amEISBM10`K#WuyV|iG9rSw^+Q#6*Vh$Y!GiZY@z5{4t?@=T zwFK0NHOT&NpvtZh7m!^wTV)GHclients[socketId].workerData.threadIsAlive == 1) // { - - returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); + if (data->clients[socketId].workerData.threadIsAlive == 1) + { + returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); + } printf("\npasv pthread_cancel = %d", returnCode); //} printf("\npasv join "); - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + + if (data->clients[socketId].workerData.threadHasBeenCreated == 1) + returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + printf("\npasv join ok"); data->clients[socketId].workerData.passiveModeOn = 1; data->clients[socketId].workerData.activeModeOn = 0; @@ -495,11 +500,12 @@ int parseCommandPort(ftpDataType * data, int socketId) returnCode = snprintf(data->clients[socketId].workerData.activeIpAddress, CLIENT_BUFFER_STRING_SIZE, "%d.%d.%d.%d", ipAddressBytes[0],ipAddressBytes[1],ipAddressBytes[2],ipAddressBytes[3]); void *pReturn; - //if (data->clients[socketId].workerData.threadIsAlive == 1) - //{ + if (data->clients[socketId].workerData.threadIsAlive == 1) + { returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - //} - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + } + if (data->clients[socketId].workerData.threadHasBeenCreated == 1) + returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); data->clients[socketId].workerData.passiveModeOn = 0; data->clients[socketId].workerData.activeModeOn = 1; returnCode = pthread_create(&data->clients[socketId].workerData.workerThread, NULL, connectionWorkerHandle, (void *) &data->clients[socketId].clientProgressiveNumber); @@ -526,11 +532,10 @@ int parseCommandAbor(ftpDataType * data, int socketId) if (data->clients[socketId].workerData.threadIsAlive == 1) { void *pReturn; - //if (data->clients[socketId].workerData.threadIsAlive == 1) - //{ + if (data->clients[socketId].workerData.threadIsAlive == 1) + { pthread_cancel(data->clients[socketId].workerData.workerThread); - //} - pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); + } returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n"); if (returnCode <= 0) diff --git a/ftpData.c b/ftpData.c index a72402b..09c50c6 100644 --- a/ftpData.c +++ b/ftpData.c @@ -602,7 +602,8 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) { DYNV_VectorGeneric_Init(&data->clients[clientId].workerData.directoryInfo); data->clients[clientId].workerData.theStorFile = NULL; - data->clients[clientId].workerData.workerThread = 0; + data->clients[clientId].workerData.threadHasBeenCreated = 0; + } if (pthread_mutex_init(&data->clients[clientId].workerData.conditionMutex, NULL) != 0) @@ -639,25 +640,16 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) if (isInitialization != 1) { - if (data->clients[clientId].workerData.threadIsAlive == 1) - { - void *pReturn; - pthread_cancel(data->clients[clientId].workerData.workerThread); - pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); - } - else - { - void *pReturn = NULL; - pthread_cancel(data->clients[clientId].workerData.workerThread); - pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); - } + void *pReturn; + if (data->clients[clientId].workerData.threadIsAlive == 1) + pthread_cancel(data->clients[clientId].workerData.workerThread); - pthread_mutex_destroy(&data->clients[clientId].writeMutex); + pthread_mutex_destroy(&data->clients[clientId].writeMutex); - #ifdef OPENSSL_ENABLED - SSL_free(data->clients[clientId].ssl); - //SSL_free(data->clients[clientId].workerData.ssl); - #endif + #ifdef OPENSSL_ENABLED + SSL_free(data->clients[clientId].ssl); + //SSL_free(data->clients[clientId].workerData.ssl); + #endif } if (pthread_mutex_init(&data->clients[clientId].writeMutex, NULL) != 0) @@ -665,6 +657,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) printf("\nclientData->writeMutex init failed\n"); exit(0); } + data->clients[clientId].tlsIsNegotiating = 0; data->clients[clientId].tlsIsEnabled = 0; data->clients[clientId].dataChannelIsTls = 0; diff --git a/ftpData.h b/ftpData.h index d637850..035b6fc 100644 --- a/ftpData.h +++ b/ftpData.h @@ -125,6 +125,7 @@ struct workerData #endif int threadIsAlive; + int threadHasBeenCreated; int connectionPort; int passiveModeOn; int activeModeOn; diff --git a/ftpServer.c b/ftpServer.c index 5376d4d..06bead8 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -570,7 +570,7 @@ void runFtpServer(void) //Debug print errors if (ftpData.clients[processingSock].bufferIndex < 0) { - //ftpData.clients[processingSock].closeTheClient = 1; + ftpData.clients[processingSock].closeTheClient = 1; printf("\n1 Errno = %d", errno); perror("1 Error: "); continue; diff --git a/library/connection.c b/library/connection.c index dbc3984..6275443 100644 --- a/library/connection.c +++ b/library/connection.c @@ -460,13 +460,13 @@ void closeClient(ftpDataType * ftpData, int processingSocket) { printf("\nQUIT FLAG SET!\n"); - // if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) - // { - void *pReturn; - pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); - pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); - printf("\nQuit command received the Pasv Thread has been cancelled."); - // } + if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) + { + void *pReturn; + pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); + //pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); + printf("\nQuit command received the Pasv Thread has been cancelled."); + } FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll); FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.wsetAll); @@ -630,7 +630,7 @@ int evaluateClientSocketConnection(ftpDataType * ftpData) //Errors while accepting, socket will be closed ftpData->clients[availableSocketIndex].closeTheClient = 1; printf("\n2 Errno = %d", errno); - return 1; + return 0; } } else