From 194b41bfc57d719d10666acdcfaf1022ac327f17 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Mon, 17 Nov 2014 14:46:28 +0100 Subject: [PATCH] changes to get index in eiger server --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 19 +- .../eigerDetectorServer/FebControl.c | 261 ++++++++++++++---- .../eigerDetectorServer/FebControl.h | 5 +- .../bin/eigerDetectorServer | Bin 237506 -> 237572 bytes .../slsDetectorFunctionList.c | 58 +++- .../multiSlsDetector/multiSlsDetector.cpp | 2 +- .../slsDetectorServer_funcs.c | 2 +- 7 files changed, 269 insertions(+), 78 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 4d77ac62d..a428774a1 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -42,6 +42,7 @@ short Beb_bit_mode; + void BebInfo_BebInfo(struct BebInfo* bebInfo, unsigned int beb_num){ bebInfo->beb_number=beb_num; bebInfo->serial_address=0; @@ -136,13 +137,14 @@ void Beb_Beb(int arg1){ Beb_SetByteOrder(); +/* ll_beb_new_memory = &ll_beb_new_memory_local; Local_LocalLinkInterface(ll_beb_new_memory); if(!Local_InitNewMemory(ll_beb_new_memory,XPAR_PLB_LL_NEW_MEMORY, arg1)) printf("New Memory FAIL\n"); else printf("New Memory OK\n"); - +*/ } @@ -156,6 +158,7 @@ void Beb_ClearBebInfos(){ int Beb_InitBebInfos(){//file name at some point Beb_ClearBebInfos(); + struct BebInfo b0; BebInfo_BebInfo(&b0,0); if(BebInfo_SetSerialAddress(&b0,0xff)) { //all bebs for reset and possibly get request data? @@ -173,6 +176,7 @@ int Beb_InitBebInfos(){//file name at some point beb_infos.push_back(b); */ + return Beb_CheckSourceStuffBebInfo(); } @@ -182,7 +186,7 @@ int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac //so that the values can be reset externally for now.... unsigned int i = Beb_GetBebInfoIndex(beb_number); - if(!i){ printf("returning 000\n");return 0;} //i must be greater than 0, zero is the global send + /******* if(!i) return 0;****************************/ //i must be greater than 0, zero is the global send BebInfo_SetHeaderInfo(&beb_infos[i],ten_gig,src_mac,src_ip,src_port); printf("Printing Beb info number (%d) :\n",i); @@ -254,12 +258,13 @@ int Beb_CheckSourceStuffBebInfo(){ } unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb){ - if(!beb_numb) return 0; +/******************** if(!beb_numb) return 0;******************************/ unsigned int i; for(i=1;i0) - sprintf(str,"mod%d::%s",module_num,str); + sprintf(str,"%s",str); /*sprintf(str,"mod%d::%s",module_num,str);*/ if(!Feb_Control_SetDAC(str,f0,1)) printf("error in string: %s",str); } } fclose(fp); - +printf("Done reading set up file\n"); return 1; } int Feb_Control_CheckSetup(){ + printf("Checking Set up\n"); unsigned int i,j; int ok = 1; - for(i=0;iBP)tZINDx%aYigomVQF4d3rmwqH`=g!*|f!0 z6MfXtLc_As4L96$(N;IyY_nb6XwzNYpBA>-Vp)r&rlsBYd*+#k`v++EeLwH5$7klu znKNh3oO9;PpL_Y^JKdHwcB}5Ch8Gl zOc_P#ro`ai{vxd?-TA>-b+DeQ+Vp(YKEI~~(@Vo+^T|^(5>GUqUX;P73!dJ1y5X_o zp-+0`edE=h@Hv^U4zcyi2*{4^US4=h;~QyfRT^r>_GR1ernntjfQf z&GOGHGyL{fH(@t2knJz^)q7)Z+1gB-N zTeF}XW@V<`iqg|eSHafJbTxd2nck=sOgEza-e%^o zqVzG-O>kCb`UJ+!OgF=MnCTWc3Nzgbhi9g*!U4)OIl}&CIuuUEOlxqely;%_{bCg* z-7K)fGn(l%MHy(OGZiJnOlQO6n&|>~X*2DB2Q|}0@VX+sF3Hnc5vsmc%@mt{PziNd zVz#;ttFO8Hc&-k1L!(D-Az<7Jhr)s#>~FjD%&tRvUjU>ERhy}*Ua4sLZp{J`eXA1s zhwJXHgQGOpC(&iYKk;~6D_RQ*YLtxOp8lGCsOvx$uD5pmT8$m2H-|@ue4;oku{-ta z;i>7Xz_(hTsKjPF6@o6WaK@KcCn^cGiAq|r5;UU1VkrlEJM{?>@p0Fvbg)}dKszB< z(bP<*pp~w>Bcj!qar(xHR931tM%;~mPig6TUe7S3CUhI6eiEx!cS~hk^}XHtgng1> zkd1y)Z|?STSZWJsSu&N>QhjCjc(z90-u>oLsV&*H@IQ@;QqhH2h+0~WfpI4)nqXjy zVv`KyqHL=}vDCDc)hI;{i*25spv9+CY7DVmVYQUIt)M14WSdMd*Sp`AR|FAt+cn*( z-K3_r=+)XC^g5;8LN8lns_PsY4hQjYqvvcRH9Vy8lTwGJXL@_mJ%{;|?s;0`yB(Gu zLV^`t!Ae&sT3hoy_o3{xFRe_)bA6y&nKyE?{&r-9tEj@N+NfUTKt&N9S3WghR?BO5 zx`XUe7`wsK9_U=N%pXSnRpgswz6tsD$T!M-GxE!kub252eswLnm z0MmfrHu9fBX?l)9zD(w!wmpX-@058P^8Ju6l6gDwQOFm_d>Zn>$Y;uYCIoRAdArPK zBY)1(9Ue&n3II5+AM26Qy9COiIV_PYXlyE!o60H_wl2@ES#st>lWaYQ2-S<%=k%62XhoSd_kbY`3=t_nT!2 zITP+sZ$#a`rbDB~CE)iL_9jC^)kFKX(iA5HGA7xd|( zPa2dES&bgYE=?J4Sb+N7X}x05;EB7l2|DNA@}+%I5)9i=uXxRVixP{@!R*iMb*SHc z1n0ppRu>4CWj}K^fZ}ZZ>YzJ&d=>=Mnc0fR1JrVdqR!JxZW_#{=~Xw~67rc1^v`j7 zHA~@>9%XTB2Y2lq3A}Izn|qRGn?ECMA%~G&IbTs$q$@$> zBi1|!>khS)Z%R{wWHnne&%?{t|cF6)c z`ewoG3<)3VPiRh)gi9?j@gJBV;ko|!rKTht{_uwiB))5cf58HiP_aLJ;eJ`6#2>zB zn}j?4;fu`<%=L$tH%j~k2Ha)#;HkN?pv=F*Qip^u_JOmUba#S;m;1wi5ia2s{_tm7 zCEV=?ccm{sEDM(T6{P=isDxMf!>ddySm_UcPLcT40q`OTU*`{hUUbX_GuY@~P;Dwp zjX!*yNvPHz&YiM>ZT|2V%^}N>z(rj|maubh>H4*6HuaY@1t`@?sdgpT>c z>rKg>@Q43a!c`w7y;DQOZ*4akPz(Gk>@mmqls~*-hGeMOAHHv!et6het5i8S*36B? zl4M$`2$IyVPr6-*3~A;>kc4n72s17l@A*u?1vz(GX?Crp1#k=C2lcvJ?oOJI5;ar# ztU^*5N%<`MXHo~yRKbi~-Fa)*2%oxVE~9R;{=%&jF|*Y^5@VGE3T*q+59_X#!FqZ2 zE$W3Ry*@jJ?bQ!w&*^t4C*N}2^x=Y?+SF`^dI4dxLgPh^p3;kQ2D7ueJ7+bUscW~z zCyn%rBWo0r05Ja*Bq-1nQ@d=a?!N7*q~rd9pF+w_G`+0Vj(9LQ!J&T9Tdx{Ecu=;W zKoh@uzHQD#DBoAWjle+7bbpqK@{{`6;VF5JJi7=XvPB4?o~OtugJxBP;Gxu7rt+@> z0|$eGK@gNgFVC;g3vpch2puyY3Fvf1ekl{@)GVJ;HZXsOwIL`tLEib3`JW+(GFw zhx+*@z1b13PkOnp>rltt_*3YKX&wi7JR3GqCfR_YB#KF`5Q zCCs6o%kmXdmh)eYmHA36)$tEr&aEL>u@Yu1WyX7s9MF&Dk98gEnEbg-vUyQ%>K2-_ zf_ylFm@6*q;1q08$SjG?3!TuJ>|5@obM_$cL#q?@no7^n$T5zLs!ejee>i zG3imErYQflM$>$m3<`LXf71MoMi-Z-w0`q6p4d0eW#Ixj|ldQ3vtS;;N@ zgH|+0AMdcSNB{S>Pc8Rvd-FN8JwpBPcwplnLipnnu@Tig?p`Y?83aTg^Oa(K;~nGK z3cYrcO}~0aBI0NFQ#L(gyq_2SYr3vII|Mu@==%6rYe`#utteM-9Y1`~t3s>HMRbjl z1`Ifvv*meqazuucaleCgm3nfCUNT`$UMIplam}_>-Jw)} zq+gxjg6fn{OvOOePE7O_^Ix{=M<&kdw~<=TNr#OO#DW8hbkI%mx8c8^(~ItmVee59r#I`_w<((95Qz!Yn#q z?@v2)``wfDo>OD`pR;u!kyL+)d<2P1?NB0u|Ep66T62vl<)f{7MsY8-dX4TV9*x<; zUD{tgw67x;4ngONAG9uRlTgvLsccXO5*mD0?4X$y&!v=C%#SZ$ldouNX3@wi*{BJZ zc&>_EqSxj9^^CswuDh}GbL6g6_GCvb|8XKZ|Acj0Tg$a~KMYq9XxLBDJTk5m86UxF zQ7uKwcI=vjjNGhd7F)I3h@(v9bDP*b!AMo&M8SmVw&^KsQ(!CiJYj9jlNzaO_w?%X zmyy_nD>0SbsC>>3rN>{aK(SNXhBiKwr03p~(%wA;(2nmN2dU9whNRX?^}SO2b8kKS z-r>;Y36uJ(2R`aZYzJP2N)O@P@5eTRHlu&o=W<;{?qbH&q&%3q4Mc6mwv|$0G~^S# zxE&Ab@iQ}%mj5r9!H6lAuh&n^OpNl2NMHzvfZji-hu;?;b*%k1)#u0b-21*9#ZSCwt1}&SN%KGUA^)dRa*`dC^sNtHvc=m(VbzsWyw`XUMWe{&b z9J)yV{r%y9AHIL!#6Tf{@jt#NJLM!j5dKj8V~)S-{CiuTzo*3p$RAhf1#{wAr9NX$ zeB^#vHym96&4WkR?o83&sSedWuI}od9r~d;slaSn=;urKOoK0t*WY+PS6?(Y)Y{zE z5BJ=MF;Dwj62;R`%uDdsbM>92`rdhCldjV^b?)fi*{RzfNQ7G`cp#MpcchiSJqb5b zqPMOK32PybV92v}nL{sp5OR0K21NG%e$eL6N%Dax@DK{EWr(wA)`bbT6iKmQVmc6| z7nJ6+ui(olqUgYz)^F0Qm)@;^`cSA5bWe@pHCBHcbyNlOd?pVY2njVU=E^F&)>qE0JKK>FfdpN+W zsQc3O@C9Q>#=-JvYgzObD}@BweFKkTOL4sC&Dkgqg_Fo2m}tUp!BuxsaPsDY0=U=K z1u@uT3|*Mm8xg(|>aTYG9!qUNY_@PLgtvWRDnsbDFtMM{65@?VX%4T1XD4&UT&|&c zY)>{|S@3*{p5Hx8Kf1J6u$b+2=OfW-Lxf)bNGc*Je}nPwcEO@}c2b|QXzcV4z#r}8 z2liTy%ueRhYeR+ndc9*s$L#Hi6YM3HrOn$%7-A2PcKg*mgJe(wANIJ|`S&S{lw}&q zUiGiH`?4%US0CRQPOuecr4L+!3T2R zh(~i|6GI(J*%_J6bSRICLkq}08|j%6o(uIz!&r!=;CRn()AgXo9~{%kjQHDeP@JJT zE~P9dUrB>H6!^ywyVihOnK5G(&)4f8pTrifU7X6sto?PgK4P&o&qpI(jUx`A5eZTw z5)6%~-+?zwvVJSx@MQIy@P^l_U!yNue8&TeL@?-;b-j=;I)!m~K#zFPznI!u&7@^*<_3ZmY7Sz+l_@5RRj@`2fzf|;yW&jqKbV=0>`MQ{(nCU_Zz2K z^Nvdn3LMG;vlqEYPn2*B(*hHxP!3bM|F+4?G$SWK@3GVsM`-P5WOB`k<@xHANZna3 z?6W*^@=PCdC>P4(XAZT?iG}uKQx|27O`y4QD{X)egIIe((YOH7|Mt^Fl4W}*DOBb<^0vfVE{S5m+ zzrMB4&FzE%GkEPX>0G9AzCg}eHo07YX}mUD&wcsU&II+^3J8j308NAs%ETzW*fnJ2 zGO#Q{YJw6iLr$;mF?9R9DEI9uaBS{RfhU$HuLVP%gJl$<(LR{lPp+GWiSABv+n80( zZG}EdrP{lTb$jKlBRg?4+h&4iSoHY!NKwJ5Id?CR+?^0gOUu~SpB3vDD)SMsY0LaL z;Bi>E-WPWMQX495!nOWld}ocm{G`$79jiKS^owvWC9vQ0Og?qnztQ!>(C92Ht%1!b z#g)`aCu`Rm?TzcL7c7sl7PQrIF8?K49!Ob7TcBLhhE+QvOW*Nq#LeTx)JkTCB524L z3xp!7Tb4_?(b2zA=KKPdu;qZ>@@#(k7<95NPC!(YNv14_`?-R(z4fAB4n$O}J?qfx ztAg~yzZ~9K9KCs$o=}xKD7|A!Ya)p{?Hs$iCcDvfxP`)_dRf)#&gj+b0logo)q^@F zSRF+j&a!{8Qg^P1fmM~SNDMA@D7RnJYgXJkh_>C@nv2LV+>ZeEsyVqS3NH+}K^#ta8tL;{ko+%1##_8~5q9RlY%E(W-d( zfd#AjsG}?Om8(+b)nObpUrRKc&ccgLpP4|l*p%;B2{A@wlPcNRks8>9n2q#wa{8VeJ+49<7jn;>+)}Xx| zNhDZ5wL0HFJiccgoy?P4)eQGJhW4v7eJ2MDa3>O2KRG}GQp>-@@$mWxePeY#HY@|& zaMi-KYiM~#`*4YG4-ET~Rs+&h??!yThTOA1^KQpe`s%frooVUX%le76i4&{ZZwP#8 zz*oc{B(rw?!`RIY?Bbi9b#FD6&KpMER3NUU7_pSO!Ehl1 z<7R8GnX9e(p$%h`N-FckZh@9pfQ`V1upKuScL4ffOHRzl&tn^j=i~B1z+P$PNwHU2 zxevVe*Z;{UTB}XgaiH`t8`h3@oZxTD$L-AOO_*Od*)Y1*n+9U4r~JprpVwP94YzJL z1+Qnk5Rau^{rnhzUF`Lou#!yWLKEqtXcRi{P@mhU*SwG#d={zGdgfEn`X?_$!Wp!_ z;5XkqjVqQ21L0X>T-Ds^3}Gs!7O-Xn*L~Q^q_IjS<+720r{#Cm=VOFjAyG1rhRsp zYDYW}@>P>VUAA1eZ%rJu#;5WnK&SoJ%3s4fJabe(u{Bv8`6$I((O;+K!6tpSsu6EJ zvsur4d30y;eP*P-^5wB3#c3WyJHg=cYX=(7^lrHQVzw{5y`B65uK$%3pH0ewS00a= z8^8+|$-fBJ55F>&f{ktQkv`VGWEgcGE7WBDzHJk&ZnS0w9S;5awwR;?DF5lzf%~3P zz2?=fu8rA=tk~ZRJ$;SV99d4~X4#7x;FJX59G5tAB@WRk4ZztYaW?qSar)!9o?a!9 z4*L))^GAAmzQp<72WLS5&KQT1drhu2V&z(+Ku#xyk}2(mJJvB=b@d~nnabDO{B8f~ z^|G;gH%X}NZqw6C1%C6_`}OA6?zrXYbXol@LeY}SS!@Q8A!oPr_NfTEp05?ap|;VTT>PJh3Acy8*xU+hklcQqTDH zch*KUZD_7@xkF$4Mobb#r~hrI85i>EQj%zA>ZdXN_l&Rsua=M0!+$$i&wnaLU4XN? zovB!(6x921_AnM{JHNA@XydH(N++@zK=>K5{@Nw(_{&pPyTw%ZSg>CERw{O;1BlJT#7D$3+K4%K&+(r~)v}2um9jN@g3i+vode z`~1SbS=OpH`o?_^+{Ju58qE36>o`yDY+iXNORxET%Ea0{%tt?cfH{9M=AAUCmN<(U zStE8o_7_Q>+Se= zpMC`YuGd=+#Iq;g3jf0>bwJY&hjI(Hb#67Bsqv+od-(4tL!E8;tIC=Qa+1!TF~@D-NamdBD^F*m1zHO=Me=?My7d4F=$K?QOuK z7UHcKw;H1NA-%yU4?3CcR9`XD!D|S|p`=WgemB9GRP^T#Mod3wls%D!9g7{3&l3)H z&PAjxId+B7MT<3Q$%oN5>}(8;qOqX}$GbBB22shJgBVl8E}h@t1Z>VOUJ%Ek-a2~l zc{Wb$8;ht2t9eX>;f73S)B4G*lj%@rkIBhbXrlsi**CeSn+JZV;mV!I-`e)>1FVlT z81-@qFU$Uo*w!*}9qO!$dfI!5ScE#>ON?8Jx;D@ZHOon^4&}Zby8AuS`|a;NpZtxO z?cnlpFm~T@EEq8-e7%`EDVS8IZPh0niPsPLmtTDF_i#d7(ry2IHFac_p$_!YMR z5|s=u<@@^Smp*t9N9QyC9M8tQRsQE>ruK-_YyL7ec(+5HK3{M7%lJ645HPqb5!Y;t z{uGV@SMSekb*Lpd4&~>;qEF6m5vrA>L#(G^C82;>j4uczAI7lJ!Bbyo5JabnZE0ip zJ+usfT7PSIsCR!Q)3~dB_ZhwD=$&ETW+S=Ep)5_(w;!G5vUzoh2(h8i!B_+p;gz$* zn2QE0=O^zMjT@JH8i@&?ymRU3sSuLFd;|I%!PpC8+gIx4jP^8dYr8Sjh@RLxA*^;l zc#vNI*FoLI*Cmo0^T@f)?{CvD{55WtxapkS=)<5WuS`##vD7*K?@I@c`}@*#an)b! z<*XUl9ycewzfElV)At!f8~B2Zo32#-xLu$7VG(z)XJPvDN5kw6Wv&<-(lG;rE?|); zaZL?hkkYk_X?j^)Y(}=TXO%;l<7;!$#=b3fsKqD2E)5!dTJcdmyJ@ZZZMA-+iA?4~ zQ#`w&hklgLY`Wv47bAAV8tl-Zz7FND^Yqq_5^1CIZ!r<8eBepC_Hkm|4fFm3=_swZ zaG)_A&vDf16Mbb^`{EqMpMo)>jimNO9>IpoBfCT! zm#4Qc{>u)%0u)>HnveUaMc4HGANNuh4AM`0OdX6p_H?&P8rcMT80%1rBK2*@HuSob z;RQ`v2w}^u@i~=x@$tdT#GglV((BSXNgd`kk)hb|gvy+GdgDKS&vxq-C&pVv^qi$!+O0PsM>~(WC3&e) z?|bq^tFbRexx*)4bbTPoluONCs&~kpz)P+0eMN09L%pLP;bz${T?c%x4?MzvUk(L4 z!3!TJ=EN-fW%Ad{eBh_0-9qW~&;DtPzHIjjY}_u=NEmgf-t>Prt500h3;u7)h+jnb zOc`X(P`}G?_v2_f5@#%k+S5=g*65BeMaMaV(l9;f)U3EXA3_wv5upNy>R6#Wk0W3@ zrFq9E_^lJCZe}5uq4Kw1*0oP=3b|Z^NU*axMbUVZKXb$Wz;_1wR4$*cME z=R>Y6cBpx4c-a#yL9hO|2e&k;TL!Z9x0=4{!t~X>dcW0t{wAj89M`ok2eKVru=B!b zMms?*1Jqli0AALGyYFRP;=+5|<+-<#X?)!Y9F6yUzlz(RXR+LAVO{j6F2|v*p6rxf z{jXTP;IfU^KEb-C2SHrI3snwGX-lsem}2;Pcrw66TCcm@r&n^b7u}nN1G}o*t_)JhIc&WpHB&w;R@!taD)sY=TVMf zyi$WHp;Bs(29*=xAcQ^Fp$>Z09Cpk@q>iGD;NI}z3PP)lg))x2awG=)yCpabV#@Z_L<&-K!k`m6FqgZO>Mt{j9pXFK-OCf=3kROxsJBt%*O%K1C=At%X zB(%YGRR~SFa?IPufwW)ZUEj5RGwI3+hdOXJ3D%(m(WsKJuLAZJCi7$HZvv?>@=Hj_ zxGcsBHmmh$G=Xrl?BCH~xFM72<=$Jz0}fUJSgeGMz)X}fa*J9;NJL09;Qr1Ag1)16 zHQOTzD&N_2W+`qoa5g7jX+gaUy7qdnX#=LqLAKz4)o%3fJJT0~-vNkc(Fb+lNGcoB z_}v7vNtC@>@eq!DK@zfQ!FXNB0Xz6Qq5kHH7}tPRfQYXr;N2o7Sz!2%GH!W8I#zMr zz?fRuI>|wqG;rczjKRTxoo36jvwKmt#;c;Z9p~HG?j7|ueM|?vJ?w2O{XN;%p!U5@ zU-MJFO@ESlDFcKFqUT0ndco8cih=2i3l1gp125M~Y5N|h4>Gt&Umr*ZhN)0YF6mUZ z(Ybd^+u-?#F72EoG!aUNg@&SGEGcpcr8mSWln_KcbWrP1(@gOo4!U7OBtWny^}RnN zKa{qU+M>xq+5=7u7`BC!PJH7xTTR}uUZHbg@m;pcd?nWPflBt$S-l(jh3kn){|#%E zo^d0V*LG)J$N0E{Z!Z3SYxLW=|EW>zU*G7*&va)|$v>`ybV5Z0qv+y$C=Rv%W=I>~ z3Fr@L^R0T-jnOpW^~X0TZzQ^|OC`gk)}Iclb4esn7oW>zSA~ByRu28KMlk2)tEM?p z-6TUXuNG4Mj;E#8B$7hgw|donxM=`pJ3;Q}BeHBsob>l6@qLKX7aKamJ=jJ&e~WQ1 zcSz&a89z~BW&r2I42kxAm0Wj!eTrvVgwJq){eiyQ^Cla|ComR2&9`83Tf=A6qhFo>X=+~$6GHN5^n5!;zY^y-0gOKRUr0~qu_~M7Dl__ZVWIzUBvCXbPFc|R zzEW2F;w{K6mL=4;J8DQ#(@CZ=?$3{W?>Om zrBRhSRC^pR2x9S3MV0w*E$ND5>A*Y0F=NidnMJ%Th$X9uukxnu2-oU@*c>*SYr!m$ z&h}T||1Y3LvwurHGz4B$b>kxh_ zKztp#Hw9fC5>HlpZwB=~_b4@z&oe&FRLN#&kqKV^z1homi(n_9ndv{#3_~*sytoT< zxQJ?|a;;U4NQ*;F*ny$AV8DGNri4n`>L4dT%2}`_NS?q`#FWraMobiC7;7{&VH|O9 zL`ara1TZpc6cLhn+~bl`iC>QhsmvQ8Sq_7cm=OgdB0@@d(kl+j_JDE(6$xfYgdw+3 zgjJSj*VOF!-zOO1YeJ4$A91l0Q56^pLCog-zAs-H%6i?=>xM*Nh^b;l!_M!qK@(5= ziHN1*;gFSMkbjFHsB~F_%_oZY%!Ue$hT;$K)=(C$eqYSpRu(_AvIDX+KyJDuOQ!}W zXaF2a(8TU~eNgBTqvFqE@`~f=$abnLGZ@MKV+05L7iMlRO zki8y?&Fg?h8tO(FU5y*$mE?9YVdvy4Wj?VYBx;){X~0U%FC_kuOZ=O74mEbkhHy3@ zIp(An^#@X|P!vTNs`oGE??dh-`CS#_OZjrW|}NlXq$3`|3u4eNI(o8!1Wf+f3tSkQUBGr|XZV~*&{l54RM zXK>H7&gvW7pKJ4hII$@q!3=5qVPjjJc!(v_Z*kwe$Gm;YPeov+z_$UTSum!g}=V=<|KkYo1CIh|FY~qTof-tY8anhn7HB(pb0iz+yB0t7fmvnb7Djy*z^5kJl6seM#FfPaF!uEQF=%y!>o>NY%T zap#wMJo)cnX43xZnuR(YQ7DeT;HzE zlShpR=BCcuoJVcm-0eoTxAzfaxFd%BVZe=Yf;rT1`oSFWgGY$I#Lh^ja$}_z zKYS+7jAb!V+kHSehVtJy#An2^fiRycdJW>cV-a>)`3ZWRzZL)k$7Qg1|yPsK4idykw{EZ-f+da|9oaTJT^|B7R_>0+Hx(FYcRz!g@3>#6I6 z<8O0T%1Ytf1rE#szo+C8T~l71PmO!=)>tWTl>K2dFX{#T9@KtsegAUq?!_LSK2u;D zEyH=gu+^VhwNP-`YPh%67ewsiZS_}et%7?TbuOQVUl)qf_w`KWnHme?;lo*Ih#_3w zZ73VU_rMob0`@(*<4)XRmxkZ#KD4R}pAegkgtwK-ZO|lazLcb*-jgfjeEymNDM* zgBT|%lLEpT()c57mx!OypkL=QG~(^8bUdSmr1PRaY;e*>ir_ z+Vm8-)3_~}rTA*~(I>ex#ovb?J;xU$v+=BmYkgTS^`ki6nu6d%WaHUsuBEWiek7)~ zC$Wl1^x`k4u&g#Z%#Y4{L??|G_hk>LKTPKP`?A4NrfG$HP3yxI8~VYyc2LqZn`iW6 zw{*h^W1G`jJ)f8LV-H8HlNKH7V4h0e(vS65J(IcCA8mQ2^YZ@e_245822uA-WzQ!+ zCLBbKCUk~F>E>&Tny@OTvJN;04Vn}rhc;qV z#ljU65`~|3XeE8gv7kDU_ep1VSJ_gtC1BuCm^OT^ZP7Vk_>Dt4C=T0U;&~?@Wj9)* zZ|Z`hP`7Lq8?B*a3&!vM37YDiplPn9XmKDsN2XIb;uykyxF!h{;3f)nO-vP1!e-Yo z0zc62rcpz&4Xx?yRu)_|-g9V8L&iY%VbCz7-#K712&RwtT7JjY`_4sPpUL{%yx>uv zdbGQ3F&tk?C*Jj)k9ZO4-LoLcr=Ap&#h3SHV@O!6gI)T{;GGQ>^o_+jFIw>q8Q~l&IiJ?p`S54lwD8bE9xMblnR!e|MIYN5ah= z5S;sbm+O^M@-aGqs?4`b7=Jd4MFnF=IruWK&B6~b;~a^lIoP-3L>=RLM3Wp{^J0RV z$}*jq8^?S8(A$UqY{03$1NE&wIO#P1`Q*n@9akf5BpB;X)Pb>lb39k+B?v=34rKXM zqWolDaWfmuB6#D?*z26BmmTT5VF*i&>%j8ZVh6i;nHLPfMjU3eTUf6i^V(c3h9`5p z=f(}*G=#;+`Ob8vs9}>Avv|-@HVgZAbBD6j;CcsZ6+zo*m$@b+18$qEXzn7}cdWU; zPxq10wx7V8O^Y`QYP>%3Mw^uwy5JH5ZgH^xoRlh>&^f`k&q#ur55a{dGa$Iv7%&wB z{+|^FJ>^K}^!DATaJA>KO#{5zs?G&L>1dRSpCGujJ%iVe`YO3rt#~;*i_b=MmRpQtzQ`688|$@$SVlk=5&p5|NcFJogUReBc~kfE9u;@aRDzn z-gEsce&H5&>-=%VrxF+dnjgn&3)wJ!<2KfvH{Hs*va9^mt!#YORj1YWtU38A#6SUqxj}oi*xKc1CV%2Q zzx5y;;@g6+7Asw{#X6jRc#`kW#uDQyZ^~wgy{~!+qy!aPl|On3q#!iUftg+9X*n!0 z=O;12$}t*ZI0+5inP5_>#I*wM29^I>-7TxzJFGs_ul2cByJEJ0dk(nmsbnCJ2-T9| zjSRk+EnrT|0tfrzRjJu>foG}l!OIa_6{FC9MOj8}4g+V-yAIKg;Q~pF`+dr(-8A2F ze&{wfDYCiPYN78Gm>0vExigo=OlzKN6+hP52A16Ib+GeGL20)XfC>R*`cS2Mp}ypd zdO=W?^J94Ra27wCP{KPvnE{jtkQN7dl5r`hp#5F}v}}?juRB-^-2s9Yo8Qa~BG?DK zKA(;1k&K?HO}_1jp1G*`0$;E}E*P;=%Se#g_!B)d6c`2tg>9Dgs!-30dQL&pkUh0w z#|BQs?bSx zoe$r16lKY?Yv$b-6Bo0>zk_*G9!s2Pf-X4N=OM*U4ZcLWgifT0csk1- zddOr4TasQxs_Lp zWWBSd*$orpyltJsoKF3$k5^|SsW4;{@CBOfKX z3~98^02+Z0V(lJfVQ0qiqS4rjTFNU%L!&phYn(ObwSy@eviuoZpH2*=uqDJxEDtZl zBy^F-7P5P8!pX6B^F_{NUw1H*St}f@S0tXOnA_Vsp}a)6S?3KGt+ zG6(x)CSQ3w8|_+&WE4Wo%i}%&S<(S2R$-^b5d(I3OHtjlVwz(rNL1rJtsRIp>=f!r zcVflQ_Ux*VUq6$v{FSld>J51w>M z-YE^23`IN)I%g~5g+&^Ll5mh=rAjEzb+E)dp+`nXzh`D-CF&Yg#gr$j2Ft3#cL=+L z<;A$f63HNOZD$80(Dn18>x6?qP27#ltnI%}bfdBVSqj*UE9ONV$hvExgPlq@M1)g9 zOp7pC$pVSWrKpmxHeZQwrx{*8d}+F+oEmAF*I(Hc_x_l zWj?=+`$;!C7~oO|`@e+-_e!(m9?r(Nvz}$|zmB(J9N_)v*0U=DzxQ3|GraPSqWp?I zhBVJ!WU4_nj`T&OEm`Z{jx{f5{W{TP+Ma6oBbn?*G*ulQR26=P_)3Oh&8lKK)vLy>!_X~ens)RhU2rr zD_lp{?c7<$Y~bYhND0|5TMG5TmKUqLHp#LDK4rAHB}!*`>zyq6o@3`_{;I^i&5L{N zs8JS93w6;OpR!%D%uZ#J<6}PMYq)a~%Xc||hG-&4>RgHlNQ}MCl)kjy7hg3HKK9r& zp*IMesE(ndDaI~_2&PhoX4$=VivYUNpl#ZDN>M;t6LRSX*=1uB{2Tk&Fl7J6Xx29I z?E#IEv$SN{hY$|@a5!$!wEY_90N<;d4)$>#cIpl1b*r21aUd*rVzY~Vyhl`ah7U!W z7OmnZdnh0xAz}r7f*Q$GhD_kcidf2Y3QHdK(Lqrr=Cc$V#Kz1##>j>=_Eo|cqnDRWdO{*_On_lg zY{6BsDeTVZAo{fhb1%XxiGr!D*KOC93pz@8jkFrfy&pvcO3geI#r#RvCLk*8#>zk9 z5W#;pl_j|vy(-$Y0_};jaav<|=fm(rs5i(kbhTRY52w?#kIo$-BOCF6yjY*h`^lM@ zc12&a>=AU^qugI5K3s*%H~1|repfMz?Gq7;+HHG*1zXsK?04kKr7^Is^XtV3>BjKvX{^uf5oM6gDe9~HCDkdeMX?Vf zArl2v=|1kMoP6dsWij4!Wh7wD0kHGDW*WO${VtL>O=Cl%PK#kROwp?Xv3IeQ-btdU z6Aj=cK#5x89sC>X5IkuPcJw`7eHWYR!r2GDY6O{r4>6%p8WSJQPikgu#CGv+jM$&u ze5c)^bZOh(gNt;5#Dz zEQzn_dU3xS#P{Egxyr^*-OVPfy(M%46n;kMv=K03s|MxboAyvha+dHl5v|6!!#LhS zaLtYc6Aj*YH};4ET|_l+?2o_H;aZCgljaiE)fIqX27TQ?=PzRS9z0z|J7O#PnLnot z?VP_$o2l<}m1?EBj~E=`q!BHnK9O3bQ;3)9()j1A@0l`N+BPjC=*fbYMT z^>TH~bg;u;p|_#10)qqSazJYn zAnGAJw4k$QK#C)`D~Z_Xav^ulU@^gk=y}kFnYd$F$k)wasS#qXlrG!AK}qur>}3`5 z>&7c~CQAJaZ(qr0+{b!#>n0*Mge(~j_9v_9J!ADHO*VbzA9$fD29)^_{ji}> zgG~33+c2v{$e}XkUko`W<-?E^462)XDIx*&W}_ZW>K4=+#V0sf;^ae;tR2Pl^IIZl zK{1>UThRg85=pjM*6ZtF?_NZ`G)Z;@-|xgRPIpC?V-fT2K9pz3@E|)marPVrSBaH|MV(#wP z4f*3L>I5wdU=AC>NH}0gvSTW|s&G76_U`mMi9TBqe-uZEsI#~db%-8t<^reC&rI0C ziS9)HyZc$+5YZar&G)m1drzb(wF8C_@gIDWm(GEwWV~t)n>2A3v4V-!;yp9&zQCWA zMssJ>mle8^8o^ zGAooWLn-Qo9Ajw!si9hHN+!>pk3r1j&iP_%re;2SIix!l$Zj8{(XT{eMP@PV()~~vbhtR&} zmKqDi`rQgid>hh7bBx`IOkQ>;3kpS(+W}pr+rP=+)sL|JiH#&b2iqflVV0&M!C{Sg z$5T53V$zTH7fT-C)9)3;ieJHEd&Jj0!N@WP+x;p}SOm99$K!O@CKP1n^P)v?y)7uk zb%I6gLu`l9iYf?ziM+9lr8GQI#UF>ynUzlz0#2Y^49Ysu81y!mnLr48k_ z#aPk}rT84WYB*jIApxUkF@|#}UyN52(fJW<6$|!Fj5<_iLmQ6Ki_PTMm#{wFB89EO zJwkN9d6K97jNO`qA8nvucIPg0q%r%fG^82{U-O$sx%+4A_TELSL2ZB4TkT4(nOnWgmEVz-^)lC9;Ufg5*qI_ykK1Ys+WR zGGaJez-yjhiPI{mYd$MIpRT49i%FjTVwa#)cajX8^q%U-S<6TZ(WI1T$(0^=RS$Yl=@Vg%WKQoq{&WFFE~8I5RK{CX)yT)ZEVv% zZLF-m0OE=DE?3`pwS!JLdBKyI(4E}A7T02TX46^NlbFEE`GqH0V#Hj*fzeDkkNr6t z99&Lu5qA#3SGZUAisRKkhZ`*8^?11qY$L2H^9`#IC+~qu*c@!fJffIm$JIGd#d>S8 z&#>2<{Y8-DOKV0zkYj#RKzvbPyyrWyPOGr;JD*~a{9o(X(B8SA1hbATmI?+_+I}tD zX@MPW$BD#KER~O4&vNrf$rgxK#bv6L3Uh@4yhnXFBOH7yAX4azaS<$~gcnty?8d9skfY5SS8Cm05CaBmW$rR)tUrAZ)ZSnQ@I%u(0;6kRA15!$j z7E7tc{x`oqvy&zl2R51MjKn_Z>q}{eBa=6mGiyBkkbOu>3H_Rz{0jzV1X;=tFJ+^r z?RBu%&Io>$$V-9;-zxYU!vbcgbP4&g$_FG2B;8$7N(HRHKa4w{##eKaL{$T=0{V<= z6XMGy=IVd3gq<*&@6lJ_8zLwXX(?KM802#NKy*D)s64IE0=TM7O))IW=*ePkcR|Jd zLHOe$1BcO%cnlSdJ9`*j!D!qVeOcQ-g4lMM*SXl(g`z)*tHsuiyeuR71DH_CEN736 zKK*G^D0diC!S|0OvTY(DLIkIoeMWd}aBG;@V(xUaA%ogZ-Q`H{0!GBS#(m*GNj)# z+6n$cKz&32ukh7FS%#i}IZAx#9^Ql&J<^*P%$M`sm26;M9gykh)NJIigS~u1^cSl2 z-`oIC_ywC2VTe#_q6ltalc5{fVCK~A%{D$^1E#eFJp36pFs|9_54O_jhVbPOtCJT! zgL_kpdDSy)RJ0B5Vr!C@D;vU$t&zO>8BCoEq;VC%p6$jo_Y&^6bi-ZI%^TRSSusDg zj13N8Dt0-}ib{ArXH$bqAhrbFx)}#P_KhrrzrCF0q2a5`*@zGu#%0SMp8G7&OB+g` zg(C*RWxvEFc>i8r-6T9u>g|;<1*oHy;(DUrgDB1uK3wgvL#xEVQ^>Msv zHJj8?(YihS!fN*T$Qn5ZiMb}HEm%rfN1EZ2uMWs>H}XL$Z>nZCm;Z#mPOResVg4swt%4Y-4-V-^fp`g^F$D;d)z$VK{}2 zJX>djb2fIe^|D>`-hb;wjGc6}+r`!k2=CR|Q>;n^C4Nq)iaXb_=-XG*#O51>nD;a3 z+@{8qP=NQT3kX80`2KYWBVMm&5t$@Gx%4xqQ8%s)drXNU&T)funh}Al&f)g;h@jov zv7U{lKUcL{MniJ8#2COQ89g(`VM%tHNgLH#wz)V8n(LMN{Hu2Fwj@5L~6_(W7}2fps`B$WfWhz84BXx1L0Vu9hOnAu~XYMc6vrb<7svmbKN|{^W)9e1D*_-Pr&<#Oiu{F39PdK4STYf5#IadJSLO}li3o|u8L8C69EH1EtT#2y1p{|+T6x{2vb)Fv|hiv_x zZOHHEm(H=*U7?;IpE&0E@n@hz@Bj5FxBc(9ozeu25l=v+pUA+Iji(S#5uO=%O7Sel zx zr^w^-?9B9d-dKzW$aT5$UGI~pGCXyFQF+~U@3S-1)4sS5}(lNZz%UaN3Cp?}VPDN26fqImyklHS^r_S(rewzgZ zwanw$3&QFV@grV}iXI)@t|%7t?vJH-CwM&X_QgBX<2jVT6Qb4R0pFelV}OZ|hJV4_ ziVOHL!dj&1lZ^+AuCCztMgQUH<;bE~d$MX)zEBk$5ZosJX zSAAg6n8qeF)7)?{R^1q~!LCMki?V5IR56})c#iSDcD27NY#Ay=V7fnocaWyAxp)U_ zN-#zkzxkl3hwz4zV0-ZHiie~Xg@-;C&5}}&w~GG>Zo|_BPmHF7E~YfzGw_DQ)HJ-U zc)}NXJU?nmmkW4%h@y%_D*(@NaGG79vDT}2u50X~f+q-1D4uXUHarP<`r=8$gYR!% z%*KN{7ae#e;3;aDkfb7NX+~3}c+5`%F&We?NaQv4k^_nDW+C39yvr}!%3A@e3M}tB zz$~vVN0~WRgeK~Dd)F*?)t>cH);5I5XHA6HmO*^ER3JZsfbBN3d`BbTG^plBlt< z%YR*mf)=w7Z&4m=m*p<@#yT|MQ*I#i`q(7!8EbmusmcLU51+bC?g#6BSd)Hqh`7IevN6=gd@sx|7w>1GZP(bHY=Ou`Mpq{ ziX7s24KIvy+eZ)>wZ$ZGY8!vIpPCvHc0p6ZF7VcV>ixKlKDED^9NbJc((v>CY7dK% z=4;Z`(qNd`ORWt*rmI~nMw*8WQcJC^8Y7Dce!t=A{_5{ko|UPV1PdU4K2!Z=a5>7) zHuTC;ds~b&&mF2hW<9GhvV*R(_)GVx3H+1$)o1ziVX77^3iu<#)Yj>T(1+kfEJI^2 z7a)VHn6G)AV@ zZM_c*3E5zwiVApEw)$-{Rz$Dug{WJIP#GHlac+Zn3zhCDXu@-X-=3ppCBtuRx51$e z2VTf6gr~j=Je}~i!+CAb;G1&PJ4l{86yB1f=2;sxMwYD2<4L*dF8=9lYIv}KHMHKQ zrm^5U4Tj8n=c)&dWW&F53A|2Yzgfq%5dd!#$-j?Kzom+A9Oi$`S7YFR>>>a zzVwmR{E?8ADBw?z#BePDO=Gy;%%rx(aJ`v8P%&J;y-rCnTyHiJf*7thmr+s-*PCLL z#c=H^CtNXHZ&vg7N2$GoYtY+m{QM}jhSYEOcK+OG^@vQ~Tc|DzDFd|J#-E>o(AY9Y zjSJpRo`@%n0h*EgW{mns%AT}HxW|nc)OFpLJT^;V6t+%Kl>UQzfWUq{hxjwMt5d8k z8Y4&5>sjh^K3_CO?ZWRFp+3x4kHt`lQeHb2KjJ=vTk*q6!O(%w@k&v5A z{+jeJpC?XHm+=)vYFCog`-d7f6{#bb^^nHMSN5IThO|0Zz#86~qTbF(pZ{9Nf1GM` z^sjXd$BWf?7V<$~jeRhbUzw&hQj>pa;=jL3ofUin$!4B-x7uojc9RoL8%)CeBmZX! zL@HnnUzVu7*z^(%lA%l=Rv~GK>O&_%g{Y2aQc{SjsfG}QsG4k)6r%dDiIPH@J`N{b zA*v=jzwaLPch(}qMQ2Rpf1RNoS>v*o2h;gT%oa( z+5E-(&{-q-*evyY$jNMt{WG&+wo|>8nVBuK(T9+KW|ALn_{05FA~QeCQLQZGl!lUR z4Po=tNQ=zyq*6H9Z3xGl{P|KflZN5+4E}DZT1f8nbS4jGK?n_n^HuzL`sRk! zRq9cdIT~jEO8rP>tqp^pSO22oaN&n)^$T{k;qx`>FblT*8aJug4aMu#w-{^W3pT2^ z@uNG`xQ2VVsxemA0LWCvHZ}ll7h~%h9(z$8VFA@$ThtzmZEraAl6ntgEe(lV)j|fc zb6-|%LD*Y*@-;Qag7P&x)Fq4^YUuKYI*-a1)~VA}(0%teYM&r{OCNNi_;1hcpz8%FOT`nMhfghP-NeP~Txqk+~grs#bl6X{&+ouAHBIdAVyl|=| zIV|ij(uWoHaS$(?YDq*ifk2wCn~GW&kOaN#G~P(HqHT&AZR2NA6nq%T!wuoZmWLTS zRXz=z)GKOoDcUIEwUiAtvQfJm4o|au${>O5ccWq>jIfY5-EFzsg4Sb2)>F^3@3q{Q+_egD zA`7nB&os5`N}s$N`D(tGs#9x4M(b=3xH-#P?zQCO&PUn|OLrBwL$dF)B;x3*1h0NI zKrVw{25XkJ$K8$iR|AVHS1w(9^Q63VEg=_*p;j|1U z!(vi~A%g(6dz%T#*OUh)c=-&Os9938QLcdvC~C+(5KklWX_D+hO_|dK{0f=JgfSF~ z%9>?6#8xy+FH-)f5MD&%jDeaHu3U>WkVpCM;7<=_#Y2ENvmzg$4xZ4l_fG*%2b zsMlpaMzbUz^VaWzu$lawQY6dAfPS%0`8}FTsj_=H>@ttA>4OURborU4tSf?EYmz_} zdb|+@vd3N4LccSRFO%hOXi6R!vNX#4ZcRDTi1Ip_|C7ez_abjHbOsA2<6{@EF0C@F z82Qj3^r#LnDUncYHGD=Aks}*A2)^kO@+*x7LhsbrmS*Hj4QmO#7xghDZS@~OT6}(T`}&lBjQmQU{5NnHkbvSgbi@khdcp~EQkSjR zdwGN;kZCaNvLx0P`<#YJRfQCq52sAup-Se#E$d;Lu6qz zX2h{cuoNOAuM~<3kU-eu=6;SbWMNA+WoHQ_BzqiIttqz<14kr&jix+QfbwveCyNsw zXQ1WCNcV=xsgz4;U;0j2MhT{cD=CXdALsM*Xgk$jgOPM-$~; zyK9yth+ZiGKK9bO#%apEZn&|!9%vsu>I#SYp9~;Kk#)u2m`Of`yp%xKDH-Ul!y031LVmhgW+kKC9M>8-(n15IC)a1Px)<{Qr-yq+hqN*U}yrB zy9^PA-=!(mr49BAXtmM$qfPI*=*rPtugJnZTbR^K<+=6!9<^K1=#1IgWTnV-s^h;IOQ)2_l?}yjfmj z>|9_{6rn}LHdqZr7+NM7`VDZ!M>6~eY*bWXNU|mV`|2ge#P^!=0Yt>0rKBU>f;8nHHE5w)=0)U3EgB7WOGJ+jAuAc~Hb7ItZIFPJ zP`6>Ua{;a2Z7|er1cvl1+Bc`iZj<53{-3VSKQ_ziisSe8ty^J8Py6SY;bg;H+6=s22E0kY(8-myjBpvJcp*T8+*-PfOM!OU<+&Za*IJaR| zCOX`R)&WZw*#eVHz`tNIE%xS4uzED}NwJAJZjO__OEb6f z+iSkXnJS4J-5_)Oq&xx@4tf+xOV?u5hGt0SrLH{1d!QD`%UFoT!5qq~;0kb>Kd16rF-ID~x~}Djn8T;Q zQ&r%f#WWE^L86hrid~1oR#UTZr?-eH3Qh6(vl5h0t4|`}j6UGcL6z?YYmjBl7JK&~ zSUr+;AEhL*5v1Cz24Y}=@)LwvR}~mp9njsX3FK`NTSkmoRXCCLlGx~eG^$Yr+=~~l zfoWN6$Nt5!KSf!`#dM#5zeD*?yW1EXwqNPz*h{+UsB@e>L2PR!1J?We*?D3Y)qtZO zPMGW|Xn2kex@@xV6nkGM_@s7NEcV$}3{Z`;pWwDEiGXT#NE?((>!+?W< zK;->b%L)%xkG<@j!5#2p19LOo6F{o*=V@r-`WlULGVf4|8s5xcuhOpCbn}D3ibL5rs4I_`06)G%w`*o*)_oZ&Uh7G2vPU2oxMe zK{o}eV6J;rNzjhrTrqQ^<5QL!XS-euJ)yf(?mRJ_5i~mI55Rj<6LT&L@FUdm)4?ui zh?!h6+r31!9aj9DnEME-w20!Lqfp9}HB==(;^e{kR0qb~f zCs;j_hefdru*phusWy+>ME|X%zY6jqV!v}9@~E#s-V8B?&VXf#T}|nxL}MV&m0*2t z|JMQY9)##MI?(c-U^BtOU^B^kMnX|y!c%}a%HyuXf2XGkuvwiB?na}R^yI!ycS$;Mront8&i(fdz9Pjl9 z$gje}OVHK8{5rAM;}ILsmvdpCXy=q$>06NBCiW?CFsJz&#ojuEfXyn9lFZ%OjS1W* zHnRp?t91Si-r6bPLyAe=`Z7BzAEtm`vrOzTj2I<(l#z_R$zVj)he`)4ibJUt-01OoOm+0tOxh>y#80 zvj2Y_i>wpK0EN6uo8dZ~S9}*mr^A(snZq7j7+l#DUR5I&uHlO1ApA+?-!Ar{F8DQu z3b}&$Pb2gtN>BU>4Uh3agR1adF<+bqYZMob5@e5pTl@}1U&g{}uv$=5D0Z!zfl75#Y79{^eerMNzi2U?y+#LG5p(pR%WTyufFMjy2iGb70h^Ok zutzbe^ke684Z@-~8DJYYP>`eDdJM25%1_n1*2x?7aKaQ_<_cvm4;K3j#SwCOKUh6d ze1n+Rk_c#5I(7V{VKQB-VrP*v!VO3wD}IRIUV~06ep1Z&MtCCDSfQEqpm;e zzj(KpO(d2;!{P&Ccg+QB)EB?S@q8)*x^=+6i`~H-+YO2@h^=!L2K<-d^_s6hB$KLl z3J)rL{>Y6KFieqYWLdiXKY~S1y9a&Bun3DbgVlwR1_}l=4(fr(S}}im1*|a<*&@dM zp|Z4L?N28BpaO+X`RhKC6mzT_aUDwMaC+T-e>`vhkGw5*UOfU9C<8(FQ4b7NJ}$XN z?2}#KI>iM9t;=lvifKm2*952LoW56YU z3QBj1<&PhX#Z2j|>?P-UkO&0+1_hEl2o!jayW8nt&HbgH5k&pqq(4B}SGaQN1gnK* z-07S>!+@Pi=Vkk8$3Iu`T;wkRtNgNi#2i3@MCegvcmSf;z_c=o$Rp08UZt}+ebag1 zpyI6vtOW-Gds$|ez{`}*={J+0Gba>tZn!v1m93et>~k^O7m)wcx_yQy2ZisyLkB-G znCMio+YjNgL8Z@Rz>e_&qnr)f@lbk?(icLnOQA2NU~vlStyi>FOo0nJH8{FftVy!| zL#k2qd2xS=(p;lc55t{#Q-@GK~L1LeuLIZ`dn1xWxOt`VRqy4z&1? zn7g(ipj8F@h24z-gCaEkY4D+$3cM^PvS8ez@-LA&@j$>|Udl zzdXS`-QAa%vo3wmOxf(_yk2penB&gHlN3`SrPt$uK)@bS^9ksCmHsk)y#}V0AEe~! zgMLuyZ;0K5huIsvg6FaFKL&4Kc`%U^VrQ{W9L_)}h~w15KzxuhzeG)|wA z3zif-P3+E*f#mwodYd=1(yU&weC3Q;l{07YtEt2Nn!W3mjiE?Mm1%2!yn!#OpPDgi zcEv3oTHVy*(9DW~wvD0l>DjlhTG`&Vs-=OC%p30YK7t=;+7y}=8hG)U(EWDeBTu)r zHLq-MSg~qgWJ{1*cYn!KmL_o7XSbN delta 46722 zcmbrn4O~=J`Uif`9o~i)9hFxB8QugGbx2K62u#c|v9NH%!W;_=6BQFTENq5NTWqz^ zs~s#g+^lrN%{C1y{Y9ml?P^i0t!|pQtEHudrKW|>|NESKFLP(acK`oBpKkY@^E~Hy zp7WgNJm)ztcU;`sNx9&`?q zB*}y)3r{?rfp|jj82^HhiNn(ukIewcL^=&mf30jV-b3-k;IZOK#xn%ZAUyhCBoaOF z+<+%tl6p(gNMzulKMS5PJ}*WdsHDl^$_P2d87=_o|9asSVaQXmH=Zawv6RvN0`cyL zrzf67t&CntS~@{{_rZGro&Y?dcvA7C;4%CuN&exobXGYf59xJ4FDIUo#OjoE)9t-x z`jn1QD*XE?Z<;JOuzS5h(z`zS!`^xJlyb<_Pi7|Nk|`nUH{L*LqJ z$TD6;*D(QjGDBA=3D*FTb`ODPZ%9+4ewm}IB zN^rgknwGGcGs(F8p`i_0o@Dexe!G?@+mw+PooF#7VITwv<5V>qN5&*sOvz_}Ba9Sj z=uFnrofv0YIt6t7w6rq?mglbnKrld0qpJe-G!z`9r!ne+_4F|Ghn~)b5$owf*odAk z!hqA$B^VTXx(wn*NKPSjO1UKU(gBqiReHKwlKSZBT1g7m(~B_@_4G1HiqzAqBq>@? zuZ1Vj(;H!adb$~-RZnjN|9CyK6T?jFr@YL3Ah_QeFj5W zPoIZ-($k%AS6VvN5AKK3PV`x7C|r;Z2!~J5({b>JdOAgtGWB#Oe43sfCP{Lg3P%VKI^Qc8VX{}jb9WJpB1^UKJpQD3^<&ZQj%1#6|u zQSScfialf?OX0;wSh!Lj@~?hTA2m3oAXkDEM4W&Xo-0{oo8#ziyD2(PafPO3#Am~7 zwT)Ck@rWwNy~481Q+ZW9t~Q-P86I3f=kQ8 zUV0xyzDmpQLw*nP4lREO`R<Yxxt%zl3~&mOq31YUFKN{yg$akhg02PUIKZF@;;y zf@6Ltn4y&RPL8ia7hCM6UJM-?S}P5%s+HKPJS$9SChVcH_fQyCTUe~}b?=4<<6Is==2){+B=Y( zsg$IT@DE37kkWwEFuVNAIb~n^{cN^k%Xos#RJLVIV@s9r0l$+kFHsr?+$&#xNx6jF zr435$z~9K1K2i=0{GI&M9;GxhpDp06^Vl$DUuJTz5;QJ)QSt=UhUK58t{gOEVof#` z-hWTcq7(r9VchaXVTWR9te2wE7C40CwRZWZ>2L*bL(&;4%d#Hd(&(NL z`jgUKO7q|wgO8tAvuVZ3nZf;nk9TTWhY~)-$v#q64H?5KltV*?_VR-~7Ec4uk5yVv zrYHrr*oX@1*AmGxlEzP-)gt9&3_qn*+0vX9YVO8;G^$n%6e9qhBvUIN(WsS6Dp$RH z=fnBfnr1%T6}w(Rw3NG!X4+eas>xm*M!}>{GlBhevzTv2}`Kd36&TCD4#P-t5E7) zUKOX6JG{%Q^#+uCmoLoL@GHH`A3IVT;uJ<#SyP)dI#VbYoeo1Jv?WI-w@-a(+l-u+h7Gt=?suyvtwEjk?*pe512WBedHa@TW?x ze6M%;7M;)m@A9p><_>w6|3xo18YvpQ&8pJBSMARaGH&xkMAKCZcM-gyE3j|lXE4#^b3Nxl@g8SclR*pzg?j6!k zslG8PaW)VTPW-z-t$TJ4<+H5+F7Be-eB-z16&OLe4LDfPfE@$8=nsPl&IX0GH29~RA_VjyWK9IeqFJQ8Zt;#1E#rw5i^A6DZtd{ec9$Zejf1IO692J zJV%~YLxe08YQkLtCiTB{76(b0?sQrD!UvcDO-hCiN8I_libcFfn?ANsLpA@_N)nVmS zUP9vJ|2Ng_s5VFmy(Lz8?WPoGefLd0c?D{zM(@Q9ahcqs*Ga=jHCfjGR8kqO2C`?R zyF3BP$^BT11l#2k+l{Ksa{Om;UA`1eb-V+blMz%_A_c39l?m>B?e(YX|n>w1aCG>N&jdpajh8sP>yV}T#kkf0~#&Z z{+!}KcA?_J|0gR=H>a^IWiQfUifv39JFQs8^pltE5t$82DPZ z0Q})Bs`r-U7m8>INcsS{Wg-W~qCi%1BigkRf(Xo9NrkuGY z0SXBncX#lA+PnBxjeCSG_G#?2Pv&j3{~8>4l~DfRjnGAtJF*wHE6TX zkWB}MY?Dsp<_Y(tx*pfNFgy9MS!thef8KR;cxbsk;zYa1%fBFn+okFYlPuN^NyjxCk}Nrf9D;sSk)DekCgvs)>@Kaip3YaICWm7@`;MepO3UPE zY`U~fj_p+hMsXhZ_3;d)bMjs6C3Hc8IS5mWJi-0`B43{GPZB)8FU(W|?}|28bn&#T zxJz-~6^@0QFHai1eQ2Jzo_6;wQYuUPMxHz*c0te`bvSPTVVLsCL(1CHWXylwMB7Ur zF)!{?v|~!&et*NR1S{38SgY)X()(}Afnr6Yt*Ulso>X>ENxo+2UrYO=br=;kqM2nq zxs3>TwD!>krSY!6(n7s_NpJZ_HKv%A(k4rS(;B7x$p@ zVwnxg|7*(qv65bVL2*n?80!^Lzw`atD%=?Kx127sh75P7KyML_a zqT(Qd9;(3)N0M!REy8gihN3SZzY3wMp0aah z8jHYe85N=WJ+CFupAo%0G|g=HAv*-!;@!UXSA86bykm=EdoEnrG;1h}SB}g|NSuL5 z7TeoWCd@)5=*6m;bQ-ISs6^1G84HcB6tOEso6Pc#UP?n{Li{?S<86*7y&RO>GDSI6 zISz`l%}&F)6$~iV5J0}VfXLV7V{*V|7e<4H?9?v5xkT9tMZY^ct#9=TO#};gP z83Xzz7u&Dt=${Ij=3+PrF9#ab}~cA2a)^H^E!A{VRuS>;91V*kXN)DKIM}LH`}W_CuD&Aw`N|{t@}yk|D@P~^H5M9CH3^Bd z&!7)vRX(qQ+_Y3^_0=`1R$pDAYW3Bnc*DEDTBkJCOk-1h9Ef${qjJSt%G!kq5x#R0 zy5`lGUt78SiM9dWY(xjtG!J{|Hr}inXM<_cCoP(PV9b`e2+z?TD}G$?w~r+6EvcH{5XQ(*reF?dGQ=%#lV{|Z)IJSd947zK`7Qbg^g9JmU#6nkH?zt-r&=f*hg)NaLt9tXDhO8kL_VAD%VjkhLtM^up{jvElv1^L#OUj^qbWn> zVyC62e!xuoS2X_MW54n9q878{H;8F{nx{+$<7uAd?8+x^y1{-{v$=4hW0StI30suc zo3&n{{Wulo_$Jpbub-q;J(*9g@kuY$txR0m603Z;wWqw|0=U?fqTlCV&+TH--c;Xz z@CtIH(L!u5f3PBg%4m1i6_VsavteR|3zbX1f984w*Nz9lw8X6L={3Yq)1abarFCf( zo4#^sfK2~d~ zIKc0wCYJc`q$wXPkEXb6d2E(pLVW51jbF%R#T06#u}jk~c1X2l>{AB`j+kVeGWY2q z^EPl&qfOV-cfvlsRb;tyzVhHRx!!T--K!RYd;v8|b&`eRRNENNp=Ynt=v60;D-44n z<3x4U2F2QtkG(t}2V0NsZx{&Qkh$uP;BVTyB(|)W)lH|WOYEqXw(FTD_Cg#h6S9h~ zU15K#mKpCENZ)kk!HbDKoUJQku|jT|6dOicY+B<-Z&uE)%s11LSk>hk&KlCBms4KGnb8>3i`j}2kURhk>~5x|{kq)v=pGY}JaA^wkZ zl{KSMEAuq{E*c2dxRL@xO84H}erlf5wkFD8g&k{RV}?^hZPJ-lWQ0NrxGcN;RGyOZ zT$=wTq~@T+qQ|3h6Fmj^4%u0U57-dVF~2D-C9bSh@|C-X#iJ{m^dY21uo zD2`vqVbEs0yl{`$pB*wiMRC4hi72$oOSH3sv#Qo;suugT@yg{FA_q-`dM%{c`&BznO(cR2&$gQQg&<@b3MKP?w}I>$8n>FlaW9NMXJQ#Q2=D~YzozB#~f<; zwWI2H6X6!3!{N@VRRX@c8WoZ5BNovxs%ms*1UYu_( z6cFkJHAESl_#R~c^<_YNX@xTf$1AFA-<4%2uoCYP_V@x?q-8mz8#EjTa7uk}CTTe3 z209f!ID<5tXAN{5z?ovWeDkZSCJ}Q%=1+4el*;Q@_67?F0P^5B=KH8o?uq>y^mJ+K;-ae_m;R zWg1SPLN_HiG0CthL-kauo@MpG4osO*2UXNL(aslGSzSJJ)J;?Vv?*I2d|WxPX=s>(noi{G@?&|}%ZgR< zH(Tk@ZF3s@`quf8%KFV_g-F$RXSYIG`zq~h zdzW9kDf7r4rQuC|9cT%tq+uJb?3ULkQC7V2-qy(fVT0}AEojdO zW!jRS@`KpO@Lu{nKv8?C()LD=;O{+w0&U8){Uy*a8Mgl=mex(%#H2TGjZ*bQe|ZMB zj=ibPsPjl2x~f6zGupi*U+Cjtr(w7HE!wTFeruYUCIXM;hP^!)f_hKz6xZM= z_IeY`%sooVJIUtqJgeaZu;QRn`A*+}0XU!;xLjHG&X~mdx?c^#Di9XDlTZ7_-siVv z8^mF1S)G`yU)UKN=|>knL|+bVJx3Rr5rq2VaBF8q+Me(+qOHj1$s^WY4nVpqHp zvnvwg*S0GehlVA)lH8-GPzH;|kXW3-*QMH}p}PO0D-Pk**c_|G=+?oC^rXGKA%;cp*$J$-GIw9EH@3Yu zi(y;I`ax6{`b`gZ&aJh})BSVuC9-|e?k3$OW8w-@-L7N#8xG=sWmHBo!+y{r`Op_AsyJx?c{+pBeBkX^oaHB1@) z`@2-yGN5w1G&w?v`|I zBOi`q7nGE}xAYF*Pe7uR?V_$WoqnTsZ#Kg{C0z9BqIU0crR}2!bXu~ZzVs4W@usgQ5XzUI6# zyIh)Rmlm!Qt#bT;^+{ba*g29N$CXEHnibOl0|WGn00TG+?gaq}Hy{pynOaV6sAEbe$svcy5wM z0IBqP^ibVeYaXBtF>j*swM5rkQFeYj$f@qUwC0gBnb|*+4mKAJyfr)r)K=hotSnfs zF7%24Nv$Gns8g4bRJO=5;qyfU$A7*kL)=g|)q;0-xH%c1uU#Xi#?u!9)QK1>S9d5? zpA=i|(hPAJqV+C~AzT?EHHt$Wf2Hm3*)WVg^>(RT7^YfVA2~m4v&)miAR@fQ4~LLu zilc4iO+R$h<*V1sNHVD2C;YtgY!_T@S!u1AeXd%{oc)UJ(|nexRDJq9PDq{D_;^7| zu}dFgYwREWS0XB*A6UK?5X9(3Yj~}bF zk%&OAc(}6fz_WdST;?gdeFY>DjsVBOla$(nLr|~nh)p?iuqPs=GY9(z|A>Y6?c>q$ ziB@8AQTjfWW&19r=+ju`-6Iy3`9|B3`&htvjJ$CfO7@q71I~Ba% zK7*-n-`N3j?$kFfoegCC*l)4NX*m`3M#48yOde?#z?`EhFrTxOH=a3@%djuE@9aP} z9>t3TgKQ34>jd}DFDYv;WUsu~Pr2=4^sUJfG$Ue~x`Cebih)TqRcPg&G|G<{%Dd7i z?@(M92RaW^=XK2u7-N7?kPh8nfNBRHrrJ4h%W4#r>_>TPQ&F{!5z!WU%zO zG!|bMZ*g9-&_{I*EbzSYUf?O^c;K1Z{16<@x_4>lw5WYcOK02VK_3xGk#}7L%;Jx} z6;nL$C|1VzT^CEpEaI)&%>c;;{oqS3n8^h9Pa?9+L9|3e#~HF4Uzv#yaRy-zuJLfAr)RrDe&cEk|q)m5Mm=xvw$7R@SNSMWP2l)i9<4o=iccjJpQsn{mD zoo-wxVg>8ueb_(|LpsZPaU*;{t@mEUz{&L}E0F?j!az(Oys z&TO|vPrA4*XPQ(C`t1<#1ZbbC{m-bHMSf#y7L8T@^hM9R zwM%w+py+YDMQ@`k+DSr!qfDI7)0~Qp!gi?h1k`pa2XK6TryTn^$~llcZ@W0%Nsvy6 zIUg9t_TdH`6l%V#d#r->tXb`ppY)?jNHO53utj;`WSzU(_MhNk2Id&*R)M>!%YvWE zazdPFe7-~?pHPawh;Ygo;?xz*l|9YXq5A5JSDVku7R z^BtOTV%qC}RB>I6bpF(4D5A>^!r*PvPp1s!B77OzdP#yJuj4s87E$+feJLyVpZzPi zb$Tz4cCHtP_81(O#8yf7ec2%@7>M_}KJjz$UBo@K=^(6I!Q&>lJKpk^JaxOO+SF8K ztNSryhku{CI-9-5UgB+x#ZER@!gpJYJkdkAHUHh3+Q(yQJa)?$a4}@iemW+v*6IxB z1u~1BY9wt8zX~+8jQ>J!DP(@xynvdzRyEKd(5E9|nBb_M93 zAAFNkiZo5tEYC`-VOvdIKDC zAS9N)f{E)QTzpT=!33H|S&n^XElRz#sP#>mIpK+ZQY~yQ#S>Jp6 z_UeWoPN`#=#xI66rScd&1=ICD0}qGFqpu!LlOH!~N$`lBx~3ZzRd%`WQk6wtI^)(@ z*zh|Wti-@#nZ`ogP}aKtS{8YU-LO~-7QHkU83q>EahHx<)0fU@;lRPdU^74Ou*)%T zsWf6}yZ4l8!TQ+2d4aDJy$4-~T*_*&m@nn?2Hz)}rCFM{HTDVp3;LF{_{ z8^)i-@X!(Ma`a(d5y}QcMt8Z7g7v>_gz+Leik`=}g|d7nwoCMYN~W(xDYzo%UJMz! zo!Akkg~CbG-OOKspQK;65R-$LnURJ|Fk$e8R(&O=S79t`#m+IN-e01- zc*50V>%fbtKW$kG1VpQFEPy92s|}IE#bT%HXD%X-YO4Kj0&MTx^uJ_58a z`5y(CstceV2L0i@*>CjPtL<3y_Yb(z3Jw-tT*{KWc7XUjJz1qOHaxb32U!@t4fI|k zw2!CaCzFyc3AbwfrIv&gYuJ#aOCDPcU&yyw*o|`1CEixRY}_)G1@eSm?1LV^G--i& zoL%md!#jGhghY=T*6YjcU-oHe@M*m-b6amVaJV55J919f-01bJjM~#(H&1XM9mE@Y zvpZwDs-oxPF!rnforc{Xcs7#7Msx?=&TWw_otO0K9{%NYf)5ST*WnPe*9=}2$)dc( zoaqtMwDtO89+}52;nxv!Hm02P>xp?}_^*q3R2f4z zb5}Hrib(gEWatvr{;w4B=4dvMP2z{>HJbayh&V2tUYB_hUNHxC8^Elm#TZwr?Q$sN z^)c*zc9=ZgK=vMw?#qTu5z}yOKNE$p(O^$&}r<`&J6o?qmR zw<2EPiE01;Ugu4HVacPfJ@eSPhPU-)v!=}JqDnJ{^qd%!9s+5(?#=ZN zU0fkOwoaGe>)RL{>&{_mel$Vy_E=WJ%i>scIkZh@EZ5oa`0O$f)~0f8^XTj>2fft(fBPdk2$KVr@@@UtkQocERo_*+M|}Y~s`{joIM@Pbs<@UG-&I3|@hxba;{ z0?H5o;9Ztu)i>qwsWB{!INDrSadp&x1M1RpUN6H{2LI*SMzcOF_ko7KN~ZZM6lbp{ zDx*CmTt;zHq#+9HoMML>zt>e-jHt`!7pVLe)aC1Ndod!dAX?`^IB_zt2ESQ^C@oqj zRQ40gH#8s|!qEpZWfR=TjFG-ruG^%m^|dA^bo2t&$nVl_7A{8!)07U8gjh4n)H*dn z^;?88hnF@Iq;j8pnSKJ?{jBzhVOoKgAbL)%1^AsQ+K;3yLL%CA-hq6DR~`aE;0o;5 z3-_X#m);_MlbafZ@X_>Xw%Q=^^&n{nnsveS{IHk*@)O^>I~CUlAFF;!>q2l#uuE`b3s&oL2Yk z(J8@&P>^_?;kQ4FwI?-js|fzB!4-dQso-zfs?Jn5g&V zk;yEpi{?ac7QKkY)AG-V7E;)d(Ymt{$1!9N6WkvkByQ+3a)pLa+13s2CtG+^3cIn# zg(*}=7^(F127V%i%?c~g6p3Fuy9!07q64nJ#~U7Hxx6)%4Un&5o=Ih|_%8!If;aYO zPbbYAtv3`iljdRF%^ICJJGs+cdq(tz;X>8<-P-It=0W~C8ZP|ESPOJDlVuJhgw+td^lOulV zfpyMM4K8S(T?(6Oz!6uiY!0aeIHOgXG+PBZcuhJR>72V=$EC>y^9>eH=E;UKT+yNn z62Yl@nP*a#s_pC-ZI2_!s?o+WB5(&;m^MH_Q@#x}nW4V$$&hK8eJJ~7p(=P_I}kAv zgAN-I^#-C3ewn1r_dYpMgxB$|b`<#>izMap^bs zAwv`{X>4Q>M`+s88%%8cc~BPXmvV`wYu}qnIO+RIG*b0@{MIa%>W_U8|9QMR3qKy+ zwLz!R)$hGjXd**lyTmvmIQ6`t{47n;p8Wrbtr%x3ZH8#q5gj(F&%E(=B~sf7uhzsL zzk%h%XHfx-4lGq=@{8H6*x76+fBQfTf}CXTwlHgA06?&s`h zbEm(s9_6YEHSKJ69x&X5c^>qPYOW%t-;OM_fPyM&H zTqD3h_mx4{5|G0|V4@~KW?jB|N0pb{$nInt&?&Kb#=(Or|Ca?_s==mDZj;N58BY{4gsFIs0lC=Dz7xxG$Za7nG{JpkqSE~D6s2mv#ff_p`>6rcAZYwj1YiX2&_AJ=13O%Uob5|(J-fa z(JVJxC2x_mOFfd@|x1?>NTwDN5I#O;{Z>f+jpjfe5usKYbc6RzW-#QAXc7#H4 za~CO9J`+0n^k(!^tw!3^4QYz{ee1QM-aKy2Wl@7{p5~l7tCIDr0$5DDAT1&Sn?sZh z;*Oy#o43WX(83b4+-9WwD~+R>(?PASo z4kI~@tv(&#pu@k&)1t5Ut1Y5<=v1QCky?vHSy;Bj?;FZ)RND9W@zy-nC*!=KArvQ@ z@~lBxd@XJ;!7Tju+S%8ud1oF=2s^Jb2!KESdL~c5i6u4i;i2RA<$s^Cf0hPb@Wa z(s3(+yHxGKf_$i5DmOC&O>u1t>I-ZnQS9vGb|^w$ml@188TI6A>p23qq0Vv0QYv^0 z(@vHk%ilb*XgnN&u)o14eFP_D*c2D)~cSmPSr$Fl~<2u1C?n*g8B5DSwFUi zyKZL5IY;$?o7y3+%(CNKt|^nah`+?D+ewk}vorY-2*F`bnL2X(w?I}c<*zu)&)fntjE#a+WSZvNq*YIWS3$7`Xp3R|Y z$s^0^EFNBnjj=^Mn_icBSs}Z7@OQ=-NSnOA_tz&h&*T-DuaI$HaB_EUWsJtu`B< z_n6PIMO3$9XsfvrQ*SSy%F_vGlg#ybziKAOax}bc8s2qm;#e>4n8R#J>n9MTe=njt?|>vY9q_TL=aX9@jP6N0 zN~A!sLyLM>u4NHijC$~n6!*#qVy?d44G!jsdyk&hkjfzh>jnvt;L$xAP5}vEllnL3 zSUvkhT3IK`x;8R&Jl-)5bCkMfk@|P4E=|AFDahzQ)-0TWJ{rTb?b3>KBn;ULqAsRK zU0|+L(P{`P{u<>_UWE~iuX|Rk<4txJ<bfQKxc0{X(Ny(hIac^+z_R* z&OB?euD~K(Ul2LGf5GBbo5I-Le;o-o8J9%pr3wPSt=NW2Ah&Xuz zxgY~}mw!f4fyFvR^ZL-!0~RF3B%EZ3-@6r#zdBNs2xn;3q#&E{K&un;|*6k zJCKUtUtQ;oaA`NZ9N4yD2eydHj*xn!>tJ#Ey=Spfz{cnyYJp7}TFqN0v1BJUa$!@j z6ZMv%yA?~LU_1NAXtkl(s)UkWADFC#ZZw4_iyib81C!P9szxRviqCcJ#@R*OAnX*y zQ~f-vz|U02ck(bQ)7n0a3>H745=RlGHqetrA&6M98GzX~?yO-Xk>U_5hQR&(V>t#j zF{gYp@{79e|vNL^V~bxZ8!Rxu>nZC`1<|JXti!= zsGWV*OLGR51o!HeraM{Rk(VwDTq!h88`zkPKb`4|D=u594w*hUM8CD|!Ukdzk1Sz{ z&H~SPX``P_puz2P13k15RhFuv$PJo!n1w!tdC7E9BwTb8Yg3*c5tzmrZ8)GKDuzX8mpn?LfPZP+MIu$PRH)pM5f0t@6o9g5~5h zm#z!MEfk2idzW3D$~z~s8{~^ixa~J=Xv8FN(k<0v9W}pU$?+7$==OSzaqt~Li7=S$ zl~o9&EOz#BBJcPOyVF_i>9UK1sM(r%(gHxXHHD>%cWYQ~cKdBsY@)8#H3yR|hTLAJ z;-Pgxbv5eTMCRHZE$nvO-E}lrMo2?j!|cC8bU88i1bF+!JY=+0j{p}p@VHW}*n@a( zDJxQn51Pk$#zd9D4T*is?rEHVi-HQs6AfP^F0GPm+**p$4PQ64X=Qyf?>QD#XMM)4e)0IfN)&ODTg$LB8V0xj(Nws{APgBYs_x_|(0*!GXvYG{8AZ98?Dw*=Y{Lm zfX@7K;9I+;=9ns|)lOwe0bz(6KfJ88?oZ~^9$*=~V=4rk(wD zG8`*@6}2!}S=ScMk4{D40qkf@D>>JZrQv!;N9R7c`aM(JxrK>$Hykva<=RPkcQ|Ho zfCNIX^Tuh+$!_D(4%V-4*a=PQXgk~eDP)Wzo!DGM@8iV|oPmgiH<1UJelpRjfgj@a z1lA`UE5OqM785^e+j%R2vo+$_pV^%OFgYwD{s6y3%zKn-a4eHPI0ty92Cw9{={U{o zAsimKL!}?QC18%BcFdW3L|Ouys_9tdX7g3k*)+3=E74K1vh`pJx84U2x`u`~1@@SE z)S!dBovR1tnfFEH4Hzb2sS(UE(Y`-L^Pn<3D76KFZ;!Q9SDz7pGf{IH)pe+&;p_xX zq1V7*@8J-d|8O5m2@u@I^SJxjth^=H5vbM9-V+grCXl{OWr83$%Om05%i+84XSYv0 zO){!?|GH${?JZ-gxEzOe8D(t0R>sya-f=ATF{ex^)jugr7;_H8auWDSYir%<32Tp_%ND z0X?uJfBOP=J%qdPy2Zkv-=?2T#h^Po1%oaWP0&vmsR@Xgd+O#3+_x_CxLIsSR$-nM zcb!l7ETu2#Cb)kP`xf4-`koaa%`_|6_-rMM;>s*GEuiNzkXh7nX%_pE1@zoxXDw^^ zk=g8)n|iiV(_pvLz30d`an)J7t|aw5q>Tmi^qcPq`5Zm53EL7udlRGZ4??gv5Avot zY}UkRQktD@&+>95YxO&;7BL7_AKc%n%|#4fXGM$4ux$G|P4vZfw(TG{F8hRGcw;T-hx$ue8mibmrmP}T5o}es4^OA3 z6{-J{7!xuX%XwTi8_J4!aWxjEMdF6ZI`#8P)wI%z__AtrbP?Z*R|L_y3T>4@7%kQU z#wk>0MJ<*Ec(K(y`?suL4@-qdk$--jm;aWHNTjRghRWm9{<@lPhwi2fUaS8!F@LP$RSE?cFddH{h51Fe@{_O8Jo*cKgf{ z%|6JO^nkcTRnx1>sSHLJtxdzU#EqFs>=P)J^XkV~+9YUNx7g$g;Yil0(v3a1TN&M8<31~SBq%1h&R__RE_4YMJ#G!6}pEO{nF^Q?!_8|69xtq z9tN*mF?5a2;F5tsnaZGy81$E4!5{&LmeC^}-Flver zTScov-{B60dLXY&f7G8;c1UAiYiOn_iW>1&(GAkBUmhV5Zt<|IOG~~EE+6S+5n<|R zQrlF)%bYN2@1lAq8<;a4W;0BP;po+D5JNZ>O(WjFXvba}gcIyZ_*bQ}@%y>K&ScR- ztg2O4pjjui5M{z5vmCuTt|6`Ac?UlmMc{>94~xKu7BDtdsWp5rjS!q~aj~RcHr?XI zr8u^6IB$1hBe=xQHZFu)fY+54(;&iBL!_~}(i_XTjZ-z)%|5UOz(x~{%5jBJud@~9 z8EPFSU(NyafyRsH=u+`O{>eQoj(*~^+truRF;w!7IyNv5)8&hk z(My^PeK2FZI98|!ZXAn1W0h-tN$Ky{{i#(tI+?O(=I}Og-u^qdxDsx80tadiZhwLe z>_qkMiuN*$Wxz*enYr-vSrv{X?1btY9~c8iy5<`m3(!;mLmZ_KY%^IbdIF3M}p(B&O9 zteV_S)UZs&{|y|kIeD2+*wE<1jG``MJk(@h*5u7h5sM-ow+xq4YJJGo7^;=>O)J=h znYs&!79iC}FIJ zCb^8;m9CgYb(PC_wF;r_qnx#(;ojRvq8GJrLWN(ueYA|9SJ-2$R)jpM#u~L`LReCW z?J9h;gFu5qo`x81dkpuiM3+++`?#nkpKzy^Us{EO_~##E!_4Vwtn$n}5v#B=9#qT5 z@po6VAWaugIo+Z*s7jSc?TTgm%xX3?wTm-srO{)QUf!-z^>&L@Z&%NopJo4KF4YM= z$Kiy$h^S7eQFTI%KVE3vfd`=@5KBtijpVO%NoJQ5> zG`7I!aE5P~!`HEAQe6n?u3~Veh-J-Mv0_Fz7hbGQZYg&5`-yz-I&`!bAJwTea^X}O zIh@M)mY3GEe+ROiE%h(6p8jlWOXI8Ti$3g7OZB^Ku9;P~oY>1g=);=%rX%bYdGI9O zafE%FxZlOF8INn@*@=?nHkV|znEqI3kp^X2*pW&LJ8Es|Jj#BYLL4)3f(~ z#QPO`kATKaj~oE=c06bBTmn%)JQh50c+&9us_xOpu9g;fVnp%$kK#G6(6HDbqKe3pW(?4M!t|jhgW@QOfzkKA# z)cHV}@$kdoFmsM|e)YqUXQVZCe#@+1*lJTQu%wX?Z>)|{KK=e_bEeOpVNFV%pOk3@ zd_m<5>zoC%@0;;3v79rvng~_SoL}A2d6i|#E!9juZ|3zOa%=o;Gaj){oH2Xu!wapq zj2>Sk8S=MJ;NwE&fxJ3YP7iw+Eqr(mB(d6THl7tKhqr7AmB+A_=pORb0OzVuw_CyD zR$1(JuiU4;S5+DE1j9pR0^W(d{%mu*8&A01yiI)?%aO0to?5*1Jf*1|`877r)3_7A zZ?$Eu+x=?0+uaOc^CtDZCC-y47(Jp4@GTXFr`qj)(}71)pO!;zcMAj+514l4DNW^o zZ!h&cEyYe2YZ`@K+lnUwSA-7Xz1QvjLoVJ&-0p^UygShPXbCrS-R{+Xco*Q^fp-a7 zbO!Hww|jjP-fP|N7l6*Ty4|?1F0tKi_Xf~mV7hr9cDy0v>wwF4xBD+~c$c}|Z)5>M zhGcJnunhITw+Zj_Zuk4)l4J_P`vBf?ZubWbc-!3W-SvETq?|P1LJ%mW;GsVY9tihT zDK5w~Ax(eTcp&IAr?@3b9+hzdS;#8>2)zNlxD)SFYLR5adn4MpidRR;H{8L?Kx&%? zBm6UN_u5Xp9iB3V_N>DagcTUd!l4Tqbc9QP5Rs)rFJ=5vl$^$Pb89qy0&puz<5UC^ zo;ADOukA3Dp&_i*?cTbZH$=;K%WvBFnP@p}ax(5%{$R6R97CF2b&l!sxk;zl6a(`zCRSd(N z+<>>AMPlW6`&*;{2v7f$+wcwswU6*7WGauqLw_cVDS0E_GX5KecQ~FvJW&=Y2xcJ# z;!UbXkIF@OoAHFsb-S;kyby0UQIwJButi76ShdY}<+`kC`{ZAnDdQwMt*$(v)5&ciV!$<1y&5Hpz zqXY34@W??r{7+RVJLL=egB~o_%q;L9BH>BtcK8A{efYbFSS~xsIhyRnz z9YS>d3HXiwBDj-`?4K^ATJh+A0wMcVoxq_20Cws?yajyZye>FtPaoNYCg8ar>+r+p z(ZF^BXnz8p-xqNF)3y-civxJA(xG?@gqzpv1ddej4^ri{fRGA{6jH%EQsw(tE5Eb9 zoaDce#z@Pf{pH>!HO*IK$QAw=W-n}Oxtbvdn$$E89wb+ow^%aT9`7%|Df29w zT8@;b6KW^{V^O#zeh!q+>rl6l-ziUlG7=ApsV4xd z@T}#xO8VTio1e;&^URAaj7G9$ z22aeDU+2e0%Ax+Etfgb5oX-5KEEvc(A$jx9F}vw^OO;uD`TW zQgqjAs|Z1K*K2l4itc(%^s?x#*K-M1bk}Po{KK2&cz*|4TftA?EUzW=+g8b+8YA!1 zlJ^wKivxzCG&h_-T_*SArm=F2eK(E zLq(F*e@Jf-aN()vPuwEkVQ#iCa#Vevq&DaCxnt!(e)moCEdIcje$HO2Bx%v^6_$eus0;#cof8~Slo%fS--XjH)7Q>b@|Uz{wr63f4@;_v)Mp60(6$&EbW zF1f=D>n10fK7^F}KL1xKR4U3^zAcsevMF)sB-NNcDMC_J)h8)bDpYmgJSByy+8l%+ zRQ1UrN(xndvWk+zm_BPGT%oE@PVjpXdYQvj7o9nge_ST-=il4|_M(jca*zBse^|kx z0{*u$`KXp`o+^LiUx3n1{`|dYteSjyntVFoP^X0*KHoCkA&+2sX8m-uA>igD}13vHSD2l-Q(ZEG3wwETA&--Q3tAb-O)wS2Wg9&W<6 zbn6;9yQO5c{03u-d1a$KlJDOv$F$tTWea0fEhxE@Ve1=cuQOKK^6>NWO(sx%eZAb9 zVWVgF3-aBJHMb;ekP8{emj6)>_hZ>D3tyI_On|T0EH7ZJz9sNgc?Q8}H_MY{(EZ@g zaz8&7&Os-F|MVC63Ujqwctf7bSV7C3+vQ12KGfOr@|$uwlcB)S9rCRv`HKU*^c~ra zbJEhCSkGPB?G96d zxeZ?7_X@V^jY;E^i$CV&Hi3Nhgq@_l!hk|{C@+Q!c#Y2Jq< z9(fqI-U%!UfoKyiGwY-V4z@Tiz?v}liO~)8( z&D-uW-Q{e96cpe2(OV1GDetf5MYAX$pysJ*0-wTj;ES-F;6Yj*4HR$+(E+DMiabJp zk=N@BfQ8*4)(b=+R3M19iV9&OkG9eq@E&SD(#j8&nqKI&Q7euS#issNUO&Zj^^Op< z7R^_e7By(!?Wg7ETBK0)Vi*2X$Y&bz&mxcO(RZ5$%h9`e&^@Mv zUPMkOe*&YYnrGi*x;H8K2#Sd;q-MXh$ieM~ybJjgdl(GGpeXl7223m?&YAKMb;FqB)(@Ju|pdHs+7WwBa(ueyXNfBRruPGMW?K|!@ z^}Bf&oS@%ct;#nR=_hJkrkeLNS=eI4R#K^!hlkp`2_3yxCFvJ00+r}#5VI9%G*5uD zpWVXlso-`LCpJNVeOfVeHD?&|r?k9ckzx<Sgv67f&8NOu*3=O!&b7@yQ(07*q!emr?G`2EUCKF5(Xb_zRq7kyh=69a}Vnd1xW^gx12q$6(K8$X97_gmih!fZwX+*FoSD zfG^YXuUS}Z1@eVj{%=T&KdbnE;9;G=q!pY+i<$w`x*!O?>E9cX*LpH2627Ptd5uBP z2n$FvKEl zg$8620DWv8V_^l=fM;s?sTS!+YN1BJJl`T+Xz&=B8UJpt>a2kuiu#D^C)NPpuGRme zMOut5VTVNCDVeugST6@nlo|s1U;RTKe>7{Ve_H;mcRrYm@DR#04F<0yAP+=ePIzcQ^<}^d%AXUKNx%z&N+K0glEz%Zf zL_VUymszA6ss27K-)NB@+5vc|mM41=f5?;l1-}UuHzDED5I)m46Ep@s8VLRt0u}?G z1dKxc3l^y=4%vFOeh4)3$3nniyaW#kv6vD=ku3l|_R>NkEYdxf;KrJJgFpH>BpwdX z4+xsdLTWbs{W@8CXc5^nHO*UW4?k3ty%V314RI!Z^1tcmsRAVPXs6k_m5JQ9r>ZTY0 zm18@NsJMilme{Ry|TYeLV`Rg(Lh*q&MDr;5EPfq)tijEJ4x24l4+ADks-{%-iSw+H8c)uG@uV(VQ5 z4=DdiBG%yQPdy0o7T|6s*z__-hhQ74f_0zMrUtBsmKkaw>-Ft>HJO@bXC8fXTHIo zaqQ~BV~t42x|<2AdcZR%M5k*ZBK~F*qR2nZMqVQpn&tFo`oHH<=yE1-A=L>&i@{Bb zDVk6-codvNL}K9k#cpq90$nAcJ|f`cbvqCJhE6yPcKSH*g@%!Lt=QN9DmaaW6A#|z zfiK`D7zMkC_yQlZ4BZ5}3`3{MVfPt&9-GswEntmk-ld$2a>2X326?^!h>@;d8E2i?R#3rjT$k+Gdj2J&W`E>YkckKY) z=jAB;b1{!DMxav_{MOyJ5V3xx?_;lMfnReRrjxB6Cjv{A|9v`L1300034UiZt@B*z-?-eFHvsTyA*$ z1#D*N5e(|n{lB0H1q0AE0tMg9aGw$2di_t%V>Pf~zL@iz!K0o>1=ovx%6ZtQnD>TF zwcu98U1Cmvv$iRIL`?5trfbywzo3^Qn!|&w%CK8Z zhzR*9EBJ`*8M1#~h=#;;ZNs23Pk%HaCP@TL+JC^Y`!F8(MH8j7U3Ch9Ln?5Cm}^hs zfwtP{T^Q64zZw+f(76kRz5~&xpw}s#lth0G#()Wamhqf%xBqEKqIi_dfx(2cT&s;9 zVVMvS)9S5)=y9>jn9#Z$Qnb-8#1uOZT0C6%4JK#=YYh}eza&zS)~qwpdc zU8CE7D^r{Z<>!l-LEwaLQ#q6vhr#qE?9FItWAHpJbvvWt8Q0Ya* zT)>m`DK(zKMJaeQ!!xjGrr0&m{gf85Jzt!59(8*Y6y3lCEnv-Q5y$M1o3LK#>)6du zK&#HApor~x*8q5nPPmPttePbMte8WiU~Sb!yzi&FCedGH85Xr+krrVQFCLd4gJDD` zpmQB{t3X?GjLqswQsm#y#Hiv2p$D`R#=a$Hx-)pTCm*Zkb7p`UvAJS*jPapE>C1%w zQMvFya~f-RY;LH)eIA;?+wpKZ&vY}1{Zg#BoN5uqUc*CYutqTUw%G5EV6YZ#?0;fr zI0x0?;;Cs4owYou@hmD9v5$`7R@J zp-V}Dhf7FN=^n6pSQ6KoV$(VOF|QKt+r-R(pOG%%ORsmZ*wm^5UK9dd;Khnp(t4}G z+Z3;(CIqZSSwhjJwu05b65j7Ou!`(4O5+I-%UtoD|Pjd8Spboxnw%&LaxiQv{B4C@Ju%Vk^*k1Vkkd^j|{oV)<`c;5){9|`RzgzLEVz24MAkAs%L3lGm4PY<$&nX^M zEB}`qXmY_#-ZCx2p*tPk3*GJiWt?(TSmcMW?0gOo9pJxs3d$CVIoJo*l$5b#?it2_ zLrTBheHny-qdLKQF(WOg>s0!EG%A-uH=&!4uf*n(!mI_l|Cdp8@3+FB>$dDIv3Jx@ zn(*IL?H=%er=Xmd(+Vc=4K5e33%S-nd0gxj6lox#{Fe|BR|7SQ-3`llhM)Myj4AIB zGkD0e$XQt4ErCmp!Jt)J{($@J1_~JEJ2QXqL-8IlC0mIA9%ba&-9D{>tTj+hW4o*Y z+@*APD0L~yPE$k}5a&d4)dC)9&f+O7b_&$u_*X8C;9tU-E*pB2r!Y>dexVTuPI)Pa z^ET~_^lK*G&6&@oz}MG9#GDgp4O#pb+|{}XbuWm&#;X(_`HdycjYw-9SUrq?DCS?o zOsF2kPmB4dQzx7UgNNk>?`~1&|87H!5`TE`v^YAbR_o%+Vi+!}m&99AN+81IU z?jmHv9z(+Ywig!r6DFc!I{JaCFp+@nBBBN*&f@@657t|*1SMYV}{t|phcH_ zLF@*w)f^^&PthF!k1M~s(O`lJgLyZ+ZZGsErLzHf1I$PTBppcY;FEfoii*9l34uCK zAXOzM?sB$A@hsNyVfbe&ULy9VC*c>xczDQpd`YnP0%s}en#pE z_WvuhQJ@~DIQJjzf>NmpU-EykOcfp!Q|2P19;FV`If=jo{}^vR!(iRaDsse@41xE0 z`YMuQ7Il!aEsE0|gG*+^uv8z^iFuQvv$=|wvK@~Q0bjvwwC0`AcPjmBr{IbQ-QRnF zKBRPBZZ|f9M-}(^U$%nJHs-nts<G!?#nLm$;G@uq z;DkH}k|%Z#4s8f*u!YqZnzgszx@yJ+HPsjKX+@{|G`n}!q9^N diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 00e75de9e..e4ac0b885 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -105,6 +105,7 @@ int initDetector(){ Feb_Interface_FebInterface(); Feb_Control_FebControl(); + Feb_Control_Init(); printf("FEb control constructor done\n"); Beb_Beb(-1); printf("BEB constructor done\n"); @@ -126,16 +127,32 @@ int initDetector(){ setThresholdEnergy(8000,0); setReadOutFlags(PARALLEL); setSpeed(0,1);//clk_devider,half speed - setHighVolage(150,0); + setHighVolage(150,0); setIODelay(675,0); setTiming(AUTO_TIMING); //setMaster(GET_MASTER); int enable[2] = {0,1}; setExternalGating(enable);//disable external gating - if(!Feb_Control_IsBottomModule()) - trialMasterMode = IS_MASTER; + Feb_Control_SetTestModeVariable(0); + + Feb_Control_CheckSetup(); + //if(!Feb_Control_IsBottomModule()){ + //if(getDetectorNumber()==0xbeb031){ + printf("************** master ********************\n"); + trialMasterMode = IS_MASTER; + Feb_Control_Set_Master(); + //} + //else printf("************** slave ********************\n"); + + + + if(Feb_Control_IsBottomModule()) + printf("BOTTOM ***************\n"); + else + printf("TOP ***************\n"); return 1; + } @@ -325,7 +342,7 @@ int getADC(enum detDacIndex ind, int imod){ int setIODelay(int val, int imod){ if(val!=-1){ printf(" Setting IO Delay: %d\n",val); - if(Feb_Control_SetIDelays(0,val)) + if(Feb_Control_SetIDelays(Feb_Control_GetModuleNumber(),val)) eiger_iodelay = val; } return eiger_iodelay; @@ -382,7 +399,7 @@ int setModule(sls_detector_module myMod){ } - Feb_Control_SetTrimbits(0,tt); + Feb_Control_SetTrimbits(Feb_Control_GetModuleNumber(),tt); return 0; @@ -456,18 +473,23 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){ int startStateMachine(){ - +int ret; if(trialMasterMode == IS_MASTER){ printf("Going to start acquisition\n"); Feb_Control_StartAcquisition(); } - - printf("requesting images\n"); - int ret = startReadOut(); - - while(getRunStatus() == IDLE); - printf("Acquiring..\n"); + //if(trialMasterMode == IS_MASTER){ + printf("requesting images\n"); + ret = startReadOut(); + //} + if(trialMasterMode == IS_MASTER){ + /*for(i=0;i<3;i++) + usleep(1000000);*/ + while(getRunStatus() == IDLE); + printf("Acquiring..\n"); + } + printf("Returning\n"); return ret; } @@ -490,8 +512,10 @@ int startReadOut(){ dst_requested[0] = 1; while(dst_requested[on_dst]){ //waits on data - if((ret_val = (!Beb_RequestNImages(0,1,send_to_ten_gig,on_dst,nimages_per_request,0)|| - !Beb_RequestNImages(0,2,send_to_ten_gig,0x20|on_dst,nimages_per_request,0)))) + int beb_num = 24;//Feb_Control_GetModuleNumber(); + + if((ret_val = (!Beb_RequestNImages(beb_num,1,send_to_ten_gig,on_dst,nimages_per_request,0)|| + !Beb_RequestNImages(beb_num,2,send_to_ten_gig,0x20|on_dst,nimages_per_request,0)))) break; dst_requested[on_dst++]=0; on_dst%=ndsts_in_use; @@ -505,6 +529,7 @@ int startReadOut(){ enum runStatus getRunStatus(){ + if(trialMasterMode == IS_MASTER){ int i = Feb_Control_AcquisitionInProgress(); if(i== 0){ //printf("IDLE\n"); @@ -513,6 +538,9 @@ enum runStatus getRunStatus(){ //printf("RUNNING\n"); return RUNNING; } + } + + return IDLE; } @@ -698,7 +726,7 @@ int configureMAC(int ipad, long long int macad, long long int detectormacadd, in printf("dst_mac:%s\n",dst_mac); - int beb_num = 34; + int beb_num = 24;//Feb_Control_GetModuleNumber(); int header_number = 0; int dst_port = udpport; diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 41f80ea50..19ce49714 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1528,7 +1528,7 @@ slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() { return s; } - for (int i=1; inumberOfDetectors; i++) { + for (int i=0; inumberOfDetectors; i++) { s1=detectors[i]->getRunStatus(); if(detectors[i]->getErrorMask()) setErrorMask(getErrorMask()|(1<