From 62d697e91fa8f317d9410fbc44ea24191a12357f Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 13 Aug 2021 12:34:50 +0200 Subject: [PATCH 1/8] readnlines->partialread, better debugging for TCP socket interface bug --- RELEASE.txt | 1 + .../test-integrationDectector.cpp | 22 +++++------ python/slsdet/detector.py | 8 ++-- .../bin/ctbDetectorServer_developer | Bin 272264 -> 272264 bytes slsDetectorServers/eigerDetectorServer/Beb.c | 6 +-- slsDetectorServers/eigerDetectorServer/Beb.h | 2 +- .../eigerDetectorServer/FebControl.c | 12 +++--- .../eigerDetectorServer/FebControl.h | 4 +- .../bin/eigerDetectorServer_developer | Bin 383870 -> 383772 bytes .../slsDetectorFunctionList.c | 18 ++++----- .../bin/gotthard2DetectorServer_developer | Bin 234272 -> 234276 bytes .../bin/gotthardDetectorServer_developer | Bin 223772 -> 223772 bytes .../bin/jungfrauDetectorServer_developer | Bin 251416 -> 251416 bytes .../bin/moenchDetectorServer_developer | Bin 260752 -> 260784 bytes .../bin/mythen3DetectorServer_developer | Bin 247648 -> 247656 bytes .../include/slsDetectorFunctionList.h | 4 +- .../include/slsDetectorServer_funcs.h | 4 +- .../src/slsDetectorServer_funcs.c | 36 +++++++++--------- slsDetectorSoftware/src/CmdProxy.h | 5 ++- slsDetectorSoftware/src/Detector.cpp | 4 +- slsDetectorSoftware/src/Module.cpp | 10 ++--- slsDetectorSoftware/src/Module.h | 4 +- .../tests/test-CmdProxy-eiger.cpp | 18 ++++----- slsReceiverSoftware/src/ClientInterface.cpp | 17 +++++---- slsReceiverSoftware/src/ClientInterface.h | 2 +- slsReceiverSoftware/src/Implementation.cpp | 14 +++---- slsReceiverSoftware/src/Implementation.h | 6 +-- slsReceiverSoftware/src/MasterAttributes.h | 10 ++--- slsSupportLib/include/sls/DataSocket.h | 3 ++ slsSupportLib/include/sls/sls_detector_defs.h | 2 +- .../include/sls/sls_detector_funcs.h | 12 +++--- slsSupportLib/include/sls/versionAPI.h | 14 +++---- slsSupportLib/src/ClientSocket.cpp | 1 + slsSupportLib/src/DataSocket.cpp | 9 ++++- slsSupportLib/src/ToString.cpp | 2 +- 35 files changed, 131 insertions(+), 119 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index cef65c615..4c64e7a44 100755 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -73,6 +73,7 @@ vetoalg vetostream serialnumber (put) dbitpipeline +readnlines->partialread 3. Firmware Requirements ======================== diff --git a/integrationTests/test-integrationDectector.cpp b/integrationTests/test-integrationDectector.cpp index 5d3d442fd..3dc71326a 100644 --- a/integrationTests/test-integrationDectector.cpp +++ b/integrationTests/test-integrationDectector.cpp @@ -488,7 +488,7 @@ TEST_CASE("Eiger or Jungfrau nextframenumber", CHECK(m.getNextFrameNumber() == (val + 1)); } -TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") { +TEST_CASE("Eiger partialread", "[.eigerintegration][partialread]") { SingleDetectorConfig c; // pick up multi detector from shm id 0 @@ -501,16 +501,16 @@ TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") { m.setDynamicRange(16); m.enableTenGigabitEthernet(0); - m.setReadNLines(256); - CHECK(m.getReadNLines() == 256); - m.setReadNLines(1); - CHECK(m.getReadNLines() == 1); + m.setPartialReadout(256); + CHECK(m.getPartialReadout() == 256); + m.setPartialReadout(1); + CHECK(m.getPartialReadout() == 1); m.setDynamicRange(8); - m.setReadNLines(256); - CHECK(m.getReadNLines() == 256); - CHECK_THROWS_AS(m.setReadNLines(1), sls::RuntimeError); - CHECK(m.getReadNLines() == 256); - CHECK_THROWS_AS(m.setReadNLines(0), sls::RuntimeError); - m.setReadNLines(256); + m.setPartialReadout(256); + CHECK(m.getPartialReadout() == 256); + CHECK_THROWS_AS(m.setPartialReadout(1), sls::RuntimeError); + CHECK(m.getPartialReadout() == 256); + CHECK_THROWS_AS(m.setPartialReadout(0), sls::RuntimeError); + m.setPartialReadout(256); } \ No newline at end of file diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index dc513389c..f614c712f 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -1846,9 +1846,9 @@ class Detector(CppDetectorApi): @property @element - def readnlines(self): + def partialread(self): """ - [Eiger] Number of lines to read out per half module + [Eiger] Number of rows to read out per half module Note ---- Options: 0 - 256. 256 is default. \n @@ -1856,8 +1856,8 @@ class Detector(CppDetectorApi): """ return self.getPartialReadout() - @readnlines.setter - def readnlines(self, value): + @partialread.setter + def partialread(self, value): ut.set_using_dict(self.setPartialReadout, value) diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index 9b82ff2c5c4e8affd00828fb721e5fd272ada6f6..694db41d5b749d9c7351bfddc7a81d42e1db1ea4 100755 GIT binary patch delta 25819 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 A&Hw-a delta 25769 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 8); } diff --git a/slsDetectorServers/eigerDetectorServer/Beb.h b/slsDetectorServers/eigerDetectorServer/Beb.h index 3c328cb1d..b29e252ea 100644 --- a/slsDetectorServers/eigerDetectorServer/Beb.h +++ b/slsDetectorServers/eigerDetectorServer/Beb.h @@ -108,7 +108,7 @@ int Beb_SetDetectorPosition(int pos[]); int Beb_SetNextFrameNumber(uint64_t value); int Beb_GetNextFrameNumber(uint64_t *retval, int tengigaEnable); -void Beb_SetReadNLines(int value); +void Beb_SetPartialReadout(int value); uint16_t Beb_swap_uint16(uint16_t val); int Beb_open(u_int32_t **csp0base, u_int32_t offset); diff --git a/slsDetectorServers/eigerDetectorServer/FebControl.c b/slsDetectorServers/eigerDetectorServer/FebControl.c index e75a1a2fc..2112fde00 100644 --- a/slsDetectorServers/eigerDetectorServer/FebControl.c +++ b/slsDetectorServers/eigerDetectorServer/FebControl.c @@ -1554,24 +1554,24 @@ int Feb_Control_SetChipSignalsToTrimQuad(int enable) { return 1; } -int Feb_Control_SetReadNLines(int value) { - LOG(logINFO, ("Setting Read N Lines to %d\n", value)); +int Feb_Control_SetPartialReadout(int value) { + LOG(logINFO, ("Setting Partial Readout to %d\n", value)); if (!Feb_Interface_WriteRegister(Feb_Control_AddressToAll(), DAQ_REG_PARTIAL_READOUT, value, 0, 0)) { - LOG(logERROR, ("Could not write %d to read n lines reg\n", value)); + LOG(logERROR, ("Could not write %d to Partial Readout reg\n", value)); return 0; } return 1; } -int Feb_Control_GetReadNLines() { +int Feb_Control_GetPartialReadout() { uint32_t regVal = 0; if (!Feb_Interface_ReadRegister(Feb_Control_AddressToAll(), DAQ_REG_PARTIAL_READOUT, ®Val)) { - LOG(logERROR, ("Could not read back read n lines reg\n")); + LOG(logERROR, ("Could not read back Partial Readout reg\n")); return -1; } - LOG(logDEBUG1, ("Retval read n lines: %d\n", regVal)); + LOG(logDEBUG1, ("Retval Partial Readout: %d\n", regVal)); return regVal; } diff --git a/slsDetectorServers/eigerDetectorServer/FebControl.h b/slsDetectorServers/eigerDetectorServer/FebControl.h index 3209a5505..2422f10ea 100644 --- a/slsDetectorServers/eigerDetectorServer/FebControl.h +++ b/slsDetectorServers/eigerDetectorServer/FebControl.h @@ -88,8 +88,8 @@ void Feb_Control_SetMasterVariable(int val); int Feb_Control_SetMaster(enum MASTERINDEX ind); int Feb_Control_SetQuad(int val); int Feb_Control_SetChipSignalsToTrimQuad(int enable); -int Feb_Control_SetReadNLines(int value); -int Feb_Control_GetReadNLines(); +int Feb_Control_SetPartialReadout(int value); +int Feb_Control_GetPartialReadout(); int Feb_Control_WriteRegister(uint32_t offset, uint32_t data); int Feb_Control_ReadRegister(uint32_t offset, uint32_t *retval); diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer index a4354e6239ad65d3978c0fc463a4c48377fa00e3..ce44c32fc036b04c3aaa3d341920c38e2af60569 100755 GIT binary patch delta 95271 zcmb?^e_T~n*8bUti-K|CqM*pnE1-g+UKH(;pjX2>1{D?-7Ungv&`_~7am2Wk78W+> zMh_M_SXx?CSeQCtLo+&~jTScAV1tE?PFgsF6HZt-e4lmBK5$UyedqmrzJKU_&f34$ zUVH7e*Is*{!@oZmRQ182@@P4$W<%_}RJ&y9YnLR+TVnWM!vA=-dF%fqsn0%1o{$E5 zUy&{&Jp<|5zYPZ`^z*8)S@eJJTi8wB%)@PcM#}>#-*@$yB+CP;xX0%yc|i4hzT>=$ zoswh?qE>9)11cqH*Z_g6B$ZZdGJB>5RQ0Ua=Kk|YHfI0ZEu7}5$f zaE2uHH*gl(A7DJ>NK%l2b0sO*!1;^t4Nka^LRFa|%d_t094cshALk)aZl7<_& zRg&Ti+%8G+2JV!k5yj#m&>~4A4eTdL2?h?5q)`SAm!#1Kj+LY_22PM9hk=tMDbc_w zk~G%9X_7R~z!{R1Bye$HmL!cg5^^MIf`M}->1G4xOOn&T%Ook;z(taDi-Ffj(nJH7 zNm7b|DfvY5GvVpftk}H_>4+Rflo-% zZ3b?Zq}vUAR+1D0w@T7<1Gh_3x`8{3hvnBj zkzE~QJdn#)qFp_$NX%RDx@{fL=|3)_K(YKg2qjynBrlO{lRY+X)DT-5K43eq=^r&T zZsJ#c6DGIVyo*n_WtL1Hu(SB9fdv!4>gp<9*XD9nNeL6X2JGZ*{YS_HwyUmeuORLi zFwxuLoY&XE3kEz>>?!h7V4tj-7f568? z-w%3`pog32+d$71bccz)4)hF-e!uiUnkiu^5|TuLY!iJJ=;4B%Z=z3eV{Ae9F7kzR zdJD{bg%2cMTj9>?Fx=&?PVG zur~3=34_$G$K-x|$H3rFYZKLJ8KiBlt?UF*DTn8#fK2WeaK%IX=$GYe$9l z>o|i9eI0H*7KDTa-bvZP1`}*F@v4w9Gjpkkb3vT5$byP~Be^_ZOKHv)*bZ1^#d2k~ zQAc`L=c4jrDa+}WB&bnVde=|;J$P0uKOVWRX8YhVbK|b5*@2pqdTQ=C)l>7&7f^Gy zs5u)ok4MefsCnA8HDee_7+wzd>}p;+IE-2O(ZM&f0leV*F#eChK^h9@nW3K+&#u=p zdS;(hEbWKTfR8guveDQ(JyI9CirIR3CK|%;zb+?FmTX#nY4-WmG3kXQ4r<&{?JuGH zNy560SZl;=clOZyrBu7k%ei27E0s&{x^kpEv{>>(k7Sy1>0KScXb4m9^3ddB#wRZr zDf>%Mpn?3Su*9LuNjZ{TlC)tmvu&8ef>1Gf_>exGwGRBSjc0}rDozx&9M^J455*== zW+4W9>qNzTM3@(-r`lvh`&uA|Atx)>7e55+m7m~HjE z2MbrnLLAXB&j?~N)t@$!=o|%&$+xjVqm|2UedX4-@t1l z(uihI12VEIbrq5jqmqnc-qSUdT$sIe0?(?DZVohl~o z>XDE&Oc8_{eGN;?QCy$R%~7GZw9(`?Pv>SuzI+IF-D0%j@wFQ3Qng0YneF5b`>_7q zEgwu3Eo&yD?GSS6jg;BLQWL41$z)I)!5FG6{93g-HLGdWOuWLZ$r?>-2kL#+K7!1o zZOHAuE0I7N-O1fU!lul|1R)E)TanwnP1SVJ3Pb$_%jbYJlp;jDj zy#Npx?k+;oREqN)H?`Me-q*bj!%Y*tUPojNJJDwfpsQ|jSqruv)ST0Nvwe$ty{bFJ9!;!=op-tNzPkvr*&>Oaf-k#Z$av_|#%+d+|C=XPjCG-R`z)s!F>t z2NzDFnrtnvE_^ZRyw`#rt_iJMuycbT*gg=@%IgF>?|+wUhhq75?)8$Lt2J`HWG|$` z>NIGK>4NRx;ql`V^G)6A_|Jkp4}-~IPgS{&3ojwd>pc3g0kdROGo+Jp%tZ zAND3lvHWd5_|W`4-aI1Ou)OYv%QUhF-kEJ==q=~oMk~U4JzSCA^<6xsq6^l`8`jH} z-gSOCYI7-;a~N)EwbnB+2YK$u=ldDfOm5)~y9aXrgjk~?>EXImyYLDd6T$*7pe&}e zsriD0FyA|&L>Y>F{tB;17|~Poe6OP93-&JBnGov#*N;(d4~C*1zi;!{QPG%5n!h0Z z?28hHyCC#cdRwD``I3>=4qh;7ba!*}!n>QR9TgTxz3kmwGrZbwFrB0pMgDgE#?jr< zl;&lbiiY<8=E`+t-J`>-n2q1gK=Ew+PUoegBS%;}x=n<1WrrgF&Ftt2CHTEJvO~v4 zPh@4>Z%k4hQ2meepk@vKNpFembcF#|)bEm*THBH5=`a+{GXHY3`~)m=5W zJ49(CIiy$V%xjbFy^=kSu)#^f9V9Q5CQVP>j^ZGG*byyTTX?JE9(i6pcO{0g)jTKh z!NEZgj17y)Wh#+u@9HY*i*40#e;aR1yqh_=eeB5TQ;-MC{fcRd{MVH_j#&g8uSm;w z^h`TRGd!Bpg0*+U2*cBv*OV%zf!gAd2amISwFQl7zD|1AH@h&~OujcF9K{J$xP8x%9 zjY$((IQJVL8v2*rVkj{%%%^0st}2OcA18N>A5FtpFg^w)T;qdy+wFb%yW?$mY8W3$ zNiABEWx_D|%eT4b;6Ofg!UCk$On5FL16=ssn2S?ac;?N+bcXt$-UFTxb$}lypWek?^HLH3hGMXM$jMWrgBMJiU_;uSrUFxVx$`!;c@J-L z4hyxmiSB9pCDOY@`+yplcORaaGl-8#c1|x#@A}J?-iq<%G+i2I9(dlhs}1 z%f7hA*ueldt>cdSp+-5pFm<6k{{%mq8a?pys(BipBFr*FYptEAV?xEaLVlG4VsMum5B>t*8DI^HKkJo;oCe*G>sw3A|xSbe~Tz zEApRq@bgoq$|o=KgsGE4PriL!b?a@~nmgLy>saOm;pM-*wNw!bc?Stoyf6?Ko~ zT~qB$;r3gjBadwYahf8%L4h3`GEt$G7!a)IkK}Rpts~i;yzJI!`8ejrtzm=jyuQ&l z-d5z}7rDz5!#|rmVBqnks4W<^`RGj^$6|eaHg}{AXDfMj+NA!Cmlf$0?O%)x@fuGk z+rM##B7HfnC#mrilH$01+FkM^mAqhD6r0Y=rwtrvZ4suuRZ|@wsIL!fS^cy~`H_0w zJngwr%dzep#^#E4rqq=a>0O^*M8$Em9zjRq(z}i&W8C5t%O|Mwwh^I^bb2DCpj1e~ z^H_)}l=8>r{KRd;`X4#1*Vt!+Q6u-eJybrjo5$Tg4uh0)dl;L`3vYjbjOvNoM+WDm z!Vr5FgcOQ+9fDV%jORhhu>OZ%(W~;F(Op%B62_MDJY}r>Xa%oQ!s3U(&CAo1AKjPU zb@UbRo`z!NWTvHeeL^~yrda-P<^2|A9D`(o?ieOp+j+_z(ek5B+>M{#AL4877#=uE zZ%jTTYD?htcZ4y8|Kfz81 zP@9Od`X}+)$x-~XuppMiGfSfRq`Q2Xjl1tp;MI5ak@H&k&by+91j2fUXo^&&Z^}*W z*wVYYR`SMUG5n^xtC+-h-W?Nf#qvtV4RN6Pv^ECacy0W6CU3ucTyO#{etPZ&j#L)~ z1Qw+5l+2Md(3#_cSBmw5f+1u9A(I6;yf!n+7rP}XN0AR=`OCzhwrrdc-R~gnI(#50 ziM#(Ch6y~FyJvh2H`jHK=9=9TEib6%o_of?_SD{^t?Z5Wj3r%cyeF6szIUixbCSF6 zU4oO-+Iv^AyIQBR`Z;!sNz6H`h&(HRywTCAHzgQm5ST|7wd2daW3ei zK=+7Vwj$P-WW*>uzhO?ra$qe&c1b;f1PbwfsKqi3dQXV=!(AAC%#s7slZzwuvw=kW zLOU{E6WshTo`=jFD__0LGiF8wt~V@_F2jYfylCcd@9`L08?T8Rr7p6tfvkhK&Kw>L zgZ~>+u@FVd9z|9L&%1csePetzXTah1w{Z7;18-Z{klytX8AOw#d0;#WA}IB1c(uPt zM!1GHqvgP((5|L-B_sWH7hYRUQC0nYF}{{mO-C2D@bmXY4%@HmsP2eZP=W5X>jlWY z@o`F>gN5!6;D2u&tS*U@2k{s0pC3A@Gy<>sa zsh&Wun^`RPWIs46R%hg~5Iyc)zmobdrk+oF*RK!h!ryz6B2nCZOB5eIE2P+_J57>< zhMPJ{=N-DcAUQz`GShIbWh+USf;LQ+LN?6N-4!E0((Fi!MVcLHvEAh~S!i)-ZSQ2{ z_uPc#Au3YR_DmX4&*+Cn#cX-Z$(v_|${(EJ9kU)~8QlHA&38_rdUgK%Db}4LTt^qw zApy_kJ(jjTz~u8o8uibo1o@5fCF$_N&OR`ST(Q^(ABxsD6C$@(Q+IAKRx%ygwm+!l zKKtN31G`;TIJz3Un#;;FawZP>UmY&KGw0J=x|>S@bDE8Ez0%$9qv>6HkM$nD4+iVQ z_daI->|w+9l2Sm+UkdK+lvrEf~4-yXlpA3rYTjjz1yqR7kO>`A!gT6Cr>zk6Mxt31G~J>9W{lCcJd*saAD6$ z%&@5W;g~hy>0NcktfBSOFTLwMF>BsEq{wy4dC1)1-gcn%nn)&Ji10(4l9n2(LgM9f zqk`i_BibwwTM0XD40y-f0jz}kJv=-RQhlHHs>TB4$7|=@>PtFB^*DL?!%;)x75TkW z`sl2?g#3YchLiR@c}!Fu;fsfF4O~egC023zg=3S1nbr~AGzIa3+%W9! z%W}uDEZ&eC#TM|E+$Hf8eYQhXWZJ4sx2golX(4tNcr`vyv;R~&k7CTwuMoFj)~Q{E7Cv>BWxwVbtiW%41*Zu zx0d!)fxhN1d|H0<72dXR!~<{cp;pOM!Zb@-E?`I`&P1npg*L9BYnE8g-;;+9)G5CM z_oKidLSg=Ju{Or=cdvvLL+KZ1Kuxh~?b;kx>kBYRm zh|XK616oA-m983;Ahy@=+WaWy3v&RQ-okB*^rHGt=At`@ShXlrUc8gOJqr7JM%Uu2!U#M@Zay>q~OD{fWqauWV7Ixfr2W*YWDY36ox>lSD{o38LQHPKgR> zKv7{eZN5?AE3{_N%8Qk6Ce0C@QTLL4y#9%>cvz)e3WiWEIE3A{8aYD17S#eZ`PC6k zSeB|&8<&l}XGsTgke?PV7)M8bMV2vKu~e;7u$JBDlHjNs ztWG!RuB~0Ag40@lbb08om!L$y+6M0xgYv7>igYgC;H+m80nYrM43%HP#`H2Gz{@d^HVm+As>j6(R)$ebWhJ(Dt-NmKM3%?fR)+T9OiMBC39?0t9v=RS z(6O6IyU4DS{Ut`q)4N`#ksu`}Mxf+dXe6NIn`tDxx$7@U+_u_MtjI52aJmPSVvB`& zm#NKf!3`FPmjgwG+ta&V+JXvA=ArT&D#UEwbQwK}OQzvOsC>gPVuZD#-jkwi1Im&) zCbgg$hsC&(%rVqrQ{sMbBjy6jMWNXc&3I&nn!U8iBpR1inY6TtXReBrH=W`ItA;1S zrffNa%yi&D-3&s_wEW|oZqrbsVifcyB|`M4l^eDqlepWL}7Qn3v6DtzlmH72ZgVWKYwy-3i{o9GyH<6__wohJG;&@;6B_e;yP%U*iV z){jDhzS>L6Voe2tK_|}*3+6Is554TF8}kEnVQGzvfo03Z#lW&NxEMH@CE{M-a8`tC zfy4QdwezBv)$1ev?`w8aS80r(`p=)^1@5FctwHy)vzSA&Vp;bw2DIm@Qk7vHmbLNB zXTz+Epae8ktB`XRFMM|Rl)1=n6BS-AnGBZ{yKC|_dMv_ntb13_2(_Y3KGdpnl&)6m z5Z-(CuW|$ywx1}ADSCN@vcxHtXOU%HF+&8>{lcKZ2~to$Djz zrw{P(7v~kbuGiovby_bCUT(So`ZP4p(BS1cJ>&T_DPFri&dUo;bW*%#K`%4Wp?KX_ zTbEax5=ire1~0EO(Mj`!1}{HsqLbnY4PM@CqLbp~iiX>I=p|P{H#GQ3iz(q85`+dn z8DgRz16^qFlL;pJo*Qd$$ta=0C0n$st;H9#tF2EKK!k*|MNB95=M3iL$x zHH|s1X)MpwSl%^_Mckkq5uhV+@*eOvfwAzBJp^4#Q~q4(vf z4Mc-njDBarh+~=;Yxifa>7ynyA(IU5**FN%rOJ)-hGwPOf7wMB#WsxS*)k#Qr_Utq z0-1jnxAQUBBxmv{Yj1iHA2S0rG)ULh04{SiVMN+)G5S=ppjWMWI*kl=gIXS=wNAbY zbFr`@YJs^m7lmPAvn+JIBfYDgj^wdS6$R^3z_GnPU`{727P)Rv&8q*?NJmZyL&QF6N{*9cmn$@i`qDoIT z!_vp%t|J8jOreanDKP6;;2%FkBLkt)jjUL-Aa{?vF3{dxa%~;wOZ-qyrj~agX3Vz+ zfzh2?e_gzy^?LIxXuZtylP2r7^i+>|UZEXv>&x@fkHJ$r1{TZk3e)nu6bGq>d0t^! zo|kS=@IuHzQ9zrFqN0^3Ak6a$caJq(Iv4Z`k$;(qJ{@#no>!Eb=!u|{Fo+@Tr2tX? zV9+)5oQ;H9QvtYXhIw9bu!ml70d!%WS2UUE$8T(&3#JS6T(Czo&r7^D^IRCN*0#$| z-qPMrw&I}dd&JJZ3*s%?`YrY^1)IiEK{tjCUt^+oW6(V&dN&50#9-9ZjX~EeLn=)2 z-1t5cw{Hrv_Zagf({Es3>o-2`(4vaks!=jo4+x>A0%`%ze!@;H>uJ%NZ(u}K@{Hr2 z^sav}jjl(l3V6_KcNgctvsncFrk#a|6a2g%`VG6gXqG9rHq44;v4}4eqOX$8Z3%?O zl|O?{@3p*|-L-aeg4UO5hNns*V}z|yVVU;pDfGaD!o1?&ycQIie@353a;3=BVr1gB z?V)l$uD@;%W3#xjeN3Xphwka+ZxVYz$yG%Mt&dI9#HU$6NlLZT!DC@3-?<$}WqJeb zFe(K*CWIJNE=KFg^${}VM& z`%4-$>@TlS^VnZ5+|kpl)@t|g;}$C-a0@9|6H8`D42;-3ugv86uZOW2y!7?k*)rbv z`XFC1F_X zMF&La(7Em_Qj|&UXv}yFd-Ginvdb4KgyqJtfsn3*4$IUb#1F z@DS*Na=k7Tt>KM(L*;BVy7z{SW_LGwo*Ffsmi>(yO;Rk`qEYFZM)yVCIV5?q{@xeH zf4k9V%%W_?a=-bYStw@F&h)NtFQAnaVGdK$yZ$yFt)w9TNuK%V@jQ9|D3-7O!^Xn; zOAZ{CF{IKNYltF0wp(rRV`2Q={Xw&4YW67-^B+TkWSm|XXg00*cX+dn-o}&jw7Z@~ zlm}Y?2ZmTv8hM4rSWmu1)*f5;(l%JRu;9e&ja=nAp7HC)X3aIV3p@FwcBtD^SHA9m z=xzG-wE3iVXy23X(e5_EJM8b=S={zv`uKd>V*c zqluUkDIbN(_muGLk7Dpp^bx|c?^k|wQ=brH<)_Vr@q$nul$ihHUXs`lnc? z2cwt_AA{C0!*1m9ra#chapxaGW#wZYa(LBst&njvvgh;K!^0Dy@_)Y4yOA%Z>5bfe z?uL!{9HBEQ$B|I^c8KN3ie8P-KB=)+BP~aw$3As1z3Yo>+^Cbnjk*mHe+oZp`!s{M zJf8GPOa%1m3tE{>_WA^^Ot9Ct&F9NLSpq#c`^hAE8s1C!<1_Je+d`ZoN_kLQEsUmE zrqPu>{fY;@!!J)iz#IQKP@aB)AN_J7k2x9wAG0kt#ZTkf*omw;IzoP`o!1`Kt}h-X zjdmV;6gRJ{kA<-aUVrRvL_YmK4fUV8yH~lSPk97H`nhj!wi{>aY)`q&&wjcBTkM?A zq5@}&p-(^!*ohRE@v_gt5OemFCh_LaMtT!%JNIi0?eE$xvXZ(I`2=@1M#?TIcH_ty zM8Gja<8-uXTCqOegf_8axyFmaWc4f#wM*jfu&yPSjao#f za(UC|BSKS8isaqbBvcZ}=1L zrxI%+yz@`}as_4KBTPic zPljP6b54#yw5kj^k?%Y?VxWIHq@IR~E%+rx#96F=rRwlyLAZlnyl3MV(XxMS_w!1g z^2P8`-QfcSAw8?(dtQ*j^O|d(OL_Sh17-hezLRR&$&Y>!g}K!F#qAO9^sXaxl16(* z;dlOlPSW6aCS%3;^SukaVUWcnc5We^Ln;*dmeiu6Fl?~;Z6bXzWcbVxe~%&sUL?V! z+7Y&m_pdCOE?G+Av3GUj`7!_6k{9s&7~aI6i+lMck{{?6=VK)v?$}H^!`t8Q00*!>&S|`&sTlnTI(0iu=2O}=ZeY0FrzW$^jbDb! z6L8A$3qkPmu;3!FEO-+>*Qi?@B#ufH`9!)Mb(q3vF+`Mmrut8jN!zawIC zNYB_H6pM4gGa=mG94RM3A)4QafTR06Qa95Q^IK9kEHUFwa?9!4arl*STDxX`dU8Y& za>paLNjX1Wj@;Nijtkbdn|Hr15ANAw+rAntKU2+JUun0EzY2|f2J66Y4Vg0Cb7&AU z9SfO$H7W9$mh`TVuc8r?C2OF~0tP-2JLIooXcPM}NzJ6^4Z;^rgfIMcsGNu}>erF- zGc7#-Yb}KE^|@SWO_Vox+5)?9pjGlXkp&8T_fe~gnrd| z^@gpd&IP4+eJE^wf*}kt$;49~@)|l%c_Ek&h0Z5H=g;0c8@-kr%`E*7y>^-Ni58mB zLIgxjrhr<2hw$qKx+zG&owl=K#UwBL4N7)`7jo{%P*O>_ZNDbx4u*2%eu%=n%uyX~ za~;=<>De^Y5r;Zgih-xa0R!KE{~>+kN6yz-eik>Q&V`Mln^AP=Aw>182Sv$Bk$DiJ z+D}#r%iu@^fzGCE{F}e*j}ICAEp(U`Er)!ctp?Ap^zQw>3wrNIU@`hz)=Ve$L*UO$(V-nD;M@BZz*toJW|6HohgY^c8{*Vkg6kseVrlb3%RHjU1#(}*!) zlss9!TJ*%Q3`TC4`+Zl@5PedHIvR^B0sd#?OB(CxgKGlpWBHte#ir3{ajtD9gErI1&CS^t`eFZ+cOh!<453sZRJLR?+z_3y zaxyyn@w*1|e_R+O`&V+G?ju>0%y`!IP30>=N~sI=xPRoeUyy;28Bth-Ws+vCxt^?I$f z$*9$|tiQ7swZf9yae=$-5xMj{55E*GN5M0>v?87y8auSfMNTekXpmN|c9dcz-buTl z3G3Q;%cZw&YF zo^?Y$J9*3HNICS>#(%BAp0e;?QS>6*zi!Cp^O-#E$7p#l_T4{@y&;>=7x9`OW9Sm{ zkCWu*>$t5WvVX`fQeb0PU}NwCSjR#cKQ$ep1D|i~nODy@r_#Jy@cen++z}}cLQJ}2 zWCT`%Hw;A+;hr5r(FVcbTzL-f%N@NEDGx+Y@5;?XvY?w-o?gGE$aYa=;3o1E`I4WM z2w3XZ2aAa-0vy}t>l1gNH$U;yDkxXx&!k+1KkLdx7O_XU>VJMuexZgJbPgwxb>1hx zaG1As4wDCbtR~FE=FD-GYWSbkGmMY>_dnzp+IVbNv>dpBD_s-umhPIa;TY=7t|jn}1l(@Cww7;olc*=m6|(~gI*SD$=g zu-fR&0@yOO#hXPA?03p3d3E*ffVDsk>cbw6T;GU$o5sQ?^q^8KeEp_r4g97Ln<%eu zRXh8z(7SvQ$SUn;=2WdN_pVdZ&`;triEKQi9A@i zeV41bec42osaE#|^AT!2ej=9PF6NcqqEn}#07U0=PHpeYZVfKf6h<2eYoV^(FP5qq zJ}fGD5v+^$Wi(h9vC_V{UG?~|u=rGP9w)e}MvF9H95hWyb~8){lh+mKckJXsB6D>BsP* zr<&If_Qv_K+Gb;+>Z|?OV78uch8(_2LrP<2eaGy>C2(kP-ZYoP%{JA0|TRPP~)wrF@Q}DUT{4l zQ$ME0f-H&dAcvY@W0TQrzKso&r@l=R36+ye)LI+3S*aejvEghMaWjtjYQZEmB@ijW zYE~dDjQx^YsQn&OtLS&^F0~;Ls=r=s4g|{!HutAVtcLeT8&KEiMg{6+ofy&-MRr`&Gfmi{XPQQtLe)$DLJ!%Qv^+Tu|&2eA>u5-wg>6Z>~JP2??As|P_On8NkiZ>ice zh&>|z@}TMpfs|LPIU(#`CaJX{Y=r#dRkaz^1^MY+&z*u@FgY~O4%H@;*N=zvX(*jX z1F&r6aM_=`#`>+*t)JJAWc`FEZtZ<4q2E!@Q{98vpa@5L*VEnaHld#xregV87N}ay zU^X%$BfaZcvWlkg$Xc?BA&S?(&T&^2-IECNF3pmpsr2HQ>RAK*TNKKy#r~zazAm$y zUMl#nK$WSe(zG{Rvkq1Ipvrg*Kw1woS|q}wJ?kE`QAcfh*IHuB8-t#>!Z14=YF-$73+r1@IP^D9b%tXml{c#HaE!`qwJ4m0-WPO|2A_;o zisyEZB71A0Wc_)f>|W!$4YV0Od2TIrui@hq+1h=BA;pvS3q|giYUEMam3Y+_$wsP6 zmde2t0`G%MS!z-Qc*s|?BfywV^+bS$RJAICMcy|+yYtY)f<-&|>&=2?lu><($6 zXb+88@EvSCE3CttShyQ~cSoYZJhha5veep0w2S#3#pbDFqF8KChN37oJfb|kt7McI zDB)2Ruha+X(qJmJxp-rv*}iH6ED2iA#Xfk}8%|IUuvBA!+HgBryLV0WRui3WC%20_ zd`$E`pf?M8xQYIXaj_2-ZFHCt)}la-D4?CDi-s40ULok&ru;KOFB0^86P;G>TtWAk z=tDuLDPzIKzKs>81S=AfM1h?>^ncLCFQChezDK%A0Kay zhDi=oUC|gYNp0N8lGLhb7&Vmsjc{laIHgJnzl(>Mk4wRPXw1Rx2D4TPLAg; zH8zHQkHx_jiv?kd8W+n(4i2VFiFS!zSPr74PdirjYQ4HQKbC!sJE&^GVmU<39fme$ zsh(kMQnCL*Vl>%q1Q!A{x3uRTcYvuQ0TSH;?Y{cw_1z&&8R0o;oz>=Y0ByxZ#{+EO zMO&KnopFG+K{K^wPl0Vj;}&swI)J2U6b`?pv02wQ=HJl1nbsui`4>ZhF~VlrfanBw)_Y_)kfWR;_K496;~u+4Fi^iifp9e3n#eW>~(hK-s}YSIqTzpSld^+UYFyHKzfzx z9?fo#D8NTgDL`jha4u1R&Zc;M6RaK_&0b)YYUUU)vp_ANp9Hmh40}AfVxPYKzH|VE zO>afE`J!;R;?;t^i~|m3MGIK-(*;`5s_%L$I@BTu>|U~3?ZD>6sQqw_ zv1)!@qGl(u7pCN5#yW9j>NHw0g%186k5+;dudhx*2(ctQO>d=JFX?L}6GOPEg}9xd zJ}{Q0vQo8jEIKem-8c3>Ft({ywT;8Do!+4)jbjhUn_AWKaTv`}YRx!ybA$y4E7!ap z)2hE7a}p~Kj_c{{=A=~2JLiJUF0~>FlNP&+Byvxy)aE3%g6e8r+FJ|0J3t*# zy#4}7k7u{sX03wQj77XkL@W~YQQn+~%S2a&P{d1V-%Zzr@+DarvC-IEq_&NRJik1q z`b{8jq>2|bk5RFu3g(_m7PVjk!{y*AwP*s19&6o>g4&ELnJlH~Gtjyd5@j&d^^kOm zrtJE=Mo=|~r;#c>by01dpv&jGZM_HT{6(FoQ(IKm&FtOrm4<*4?VGDnqjp|`=|eUE zQ*N^?$>Gn@l32vWL~$6gE(mlc7o$H9Q&I z{TX}WWcC4-YfHwCb2BF3wnNM^HPwniI=S+*YXt;8gZMtCps) z`!UH{Qo!t=POF_M>?tA_rLwyQ-jI>=YD+4+MOII!;geA2^KEMNRCM~TNo?l$Af1K3 zM)YRk%mST-&&lA^u?1ZwPSSO$GDU5g1c4quqfZ{`@D12Juf|ShlOv#Z-^@kTCO5F< zZBz|6@Hp0o$!xUje_pMf%US%+Jofet zdT>^C-HKqr%KxDQZED%ASn_S^(OWUbM=xp2s(sQB2=H%HL(mRr~5@LXNuqb{0M2NQtJ8 z7#!RLXuz7yjAuk08#JuP#15)$x3kgx{12i$Ebq%1YMjEN`yF0SEGu3|&Z$`nOZP3+ zl8?MxrS4R)nR~fLJU7q>M8W1cQfmA67up-Se66rTvYM3xF4+(f6^rn3i;E#nRr+3)2xkS&geDvP@84lIc|YUMTL29O8mXx=p> z3#l1*q0z%Co7#!&{SO_uu91Xvm`q4CJ6+?cJ{<-Fj~(gkJ{r=@3>Nx;e}iV(qNEUd zBWQ~LSs&Q-Drb7vNm6gq0sfyzySxdFGD+HZ&j7tB(gWShT-?cOLw; z37guU!N$z6-T1Y$fDp}h>;2l9UR;aLi}dSWI}5PwU3Mq?8>2qu+|4**d2M$?;Ty2t zWn!^Myd)F)&Qv9nt$=hJGBqKe)qi|uuwTMEsGNbEdFnp=%%ZE9DcVqZ67Iki+TK2% zW^ZJ%23M_t9>c(Vb^xL>g&;rmMIBg7KH7s{m#FI=)o~A&|Eg*=^BxvuC3Bo6k`TDk zlIqneN{T>|B9iV>4{J%y>UsP=eBe0JGDKPyxI5F!1J$^b$it;Uq?2y!+CNf#@(f*1HcW@NLqt@ON@%nJe z=9w(Us=1Q-CZv9w>X^wEMt^whn)cIrw_hKu*3ZNsuT-06vbzVzlT2{8)C+e@ooFX0 zRkH@KD5~o|uw&RE^#FU9`KdK{J6df>)!nv~2eCxtsYMT>`%~1)2idz3FcF8y|DdHw7~0<*!N6c? zszbaxhdoSlQg^U7s}h->WO(QX6ATm ziWV;|;=?}j?s*mwA9g?smFamzxP=|M(32107WP{$Y^ZI^*dI&Oj9h&Q-I>eorX{rg zSZ^*q9ISKk)*&@$K3j!weEEDx3mcC4*d(C9hueC0bw4@O=<1trs2{;3bEw&mK#p_O z!bcEI%u`k>>gt;)0YYMyo~}Tb$$N|3P4@AV?URVuyigy{spHf zb(7mGM*R(7|8D;}PLq`6->6nE!hE$Y!tqt5YF~t2y#`HQ#72*<#-U9eX`adJdyg~^ zQ|qGf3~aR*U{(Ls{=N34h+twlJNh`DUx9P?IQvSrR`a%}gSh)?AGQ4n zws`cm?J3&Ji#A#F#k^i#i~4;qTX8Y4`_m6%E!$SBmM_EE3f*Uxo!? zh}yCYuKl*ds%<%X^YYt!6P7bCHh8HyD{-q^?w9d;lru?n{96t!ezoQL$e^J0iVSW$ zOOplzjUK^Pp{B^-tJ_Tp$B>XD3hXn{_kbQQ=toWT zSD^h8=wd*O$l#V>5gFW4g2><`Sv{_L3bEkW=&K^?XMnP`R_!Qc(GOee#8*Bv{uAA= zW%g9p>-%32>TBg-LtCVQE4NLSoHOGslTuyu=S`B1(g)>fv0gna9YLu|`tlCGg`ad( zEn3OKil@Mjpb0Hw1!KC#smn>@U`zDB6;-8+5G+*xe_|okU?IIL^y(!vX4=ztra~d% zhHc)ZI)1^1jZo>jyIhOyFIg1DOVu1{EPV;ph(lyamPsUb{RYnfzJjlV%rN4Up1vDQKp3PHoE z<7@xNUPu2YmD#ih73wNeRm8%)hmdOU+V&`1jqazOD`Hc9X>RB}bF7A?;aAm+)huc# zeR6}rOUt7eb*dfuxGp(~l+4+HiHUui;#J|RmLn^}&UZD7ysNirk89{rZQx3@qTTp- z<}GWT; z;?&7&Sbx>Gm<7ulE~)lnXwQGy{0r24`BKe?K=aS+BF!wHt37K&Zm?6nwuhbVei~cr zwx_7o#cZUv6-9j2#$xQ1w|8D|Z3WG2ZQa{*)Nl_Aolw3FvzF8YJBIBAcrE#3Od`{= z{4XoC63cQqzLDS+B=Qxi`5qQFegzAjHZ<)wft@@RK<6rIuO*5_FcxQUozmB7< zQRR0UD}VKs0&4tk?(}acUY~V zqJbdQ2+|1@O+-;e6je}kHHs>V*NYdBZ;i;;tagIqTVDJav>ZV@3l7hqY^EriiL#?m zHWOvHz%EJ1OTGb(N2{9oH2j-IYW~w~MLfN?u#9vQsooAxfK!nMUZx3DB#ka8l2}D5 zrbY6CYivQHi{^c?N1=e9&uY6id%Vki16(MIm-n>KqWMvkWE-$gcd2F1utx^2r?Axx ztBzMMJjJYJYg}vCz4Pfy35K^|{v_mes|nb{RC>KaKR5Ux6+)o+0_{{jD` z$sUs5Xi!Uk3C9r|nO|bZ`9`a1D~FssaKy_IkP1>O%aMvR5qe5d?HiC-4C}f9k8XA6 z1|%Y;PETu8$3`SRwN}mAh?;iRs{819H7-nO&nHwDM{aCwIeg)r?P@ta4pr+odjgg@ zt^!;YZBUg8?3B~g(h4MksS4~$iquX@Ty;PV--JbUSCzVK6N~Ylf^o5N+x~cddgM)N z<0jf^*Q&0AvR&=m#BNGpb!$SZVofP>DI2DR7T{>S{>uBpNFFp*hDU$p|-um z?k&!`euaHYr zv(A*T1qEtEfx{+x3FsAq-fW^T0KG`i+e~z<>BfHMEsKec6;a>MIPRC;GVQ#U4?#kb zUeQ~oo!4?-&`GVq=v$_Z*Ro5r#(^$0!LZlM7Kr`KvXk0==82(n)nSaGOl^nwmd!7&RVZJx8lHJ8Znq? ze+w^H_;%{+AO5IrvE=R@ntbArs7@Hm0hMaSRyI7)l4{4F%RJ&!q&uLGr>aM{vN5Un zb6LIqx;8{mtJAs_L>l6jd)qv$K{RbME(DQNcdOiUU?l9mSR3((_> zVEA&hGF}Vb$y1xa$SnoXP)5=tCX4VfBZ{z?LNY&5gasj)g8iZrvUZfWPIXk{B2~e9 zJex+wS`WQw6?vLa-*nVR5gT#?5Mcai6Y9fcD}k|cdkI~ZkpP*jfMIzK1Q|CbW~X06*c5lXxS`hl(!$*d7P$7#4)yx z`uCl@7Hc*Y+|uVka*~U^{d#N4l0)j6R}lv*RBK} z8B|S=U>6;8Mxk15r_QV+Xu^Uf zvf$)jMiW_z*FqAQ@U;!&x9|uF(c!Me(z$S`z&17Gb+`+-xcxf2uXuOe^+rX|x{V5| zkZMgarG=||R-M|$9%H_6K6=-#H6zuwn&@|e-mKGiOD6hwQxt7?kSQSo1;nbeJI+M+ z2E9U5l+r_Aa1rz(LC-YNPlBE+=(#33!Xn*KwB3cKgdIpo5(Uak^!1>J3wpJQz8tgo z2CGiqMX~BEn5C^ckM7b}o!w_?)w#Pk;d-GT*J-_k{$8vi1)SBJeGh*sDxgVV1^B4I zcoR6FL16600(4_0y;lLeQ_x|F0;&W)h^0QDTs$-(VU578z}hn4klyPA&e!Sh2LZbU zP5{ml82iKknk&$b_tSt=1kMI_2%HBTD{vujh=z-$_e=5MClacGNr+TYog!)1

`J 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 delta 95362 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 R9{X!(L#VU)-OwiY{{fX<`62)S diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index 284ac07a8..fec8f9127 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -88,7 +88,7 @@ uint64_t eiger_virtual_nextframenumber = 1; int eiger_virtual_detPos[2] = {0, 0}; int eiger_virtual_test_mode = 0; int eiger_virtual_quad_mode = 0; -int eiger_virtual_read_nlines = 256; +int eiger_virtual_partial_readout = 256; int eiger_virtual_interrupt_subframe = 0; int eiger_virtual_left_datastream = 1; int eiger_virtual_right_datastream = 1; @@ -708,7 +708,7 @@ void setupDetector() { setIODelay(DEFAULT_IO_DELAY); setTiming(DEFAULT_TIMING_MODE); setNextFrameNumber(DEFAULT_STARTING_FRAME_NUMBER); - setReadNLines(MAX_ROWS_PER_READOUT); + setPartialReadout(MAX_ROWS_PER_READOUT); // SetPhotonEnergyCalibrationParameters(-5.8381e-5,1.838515,5.09948e-7,-4.32390e-11,1.32527e-15); eiger_tau_ns = DEFAULT_RATE_CORRECTION; setRateCorrection(DEFAULT_RATE_CORRECTION); @@ -1671,29 +1671,29 @@ int getInterruptSubframe() { #endif } -int setReadNLines(int value) { +int setPartialReadout(int value) { if (value < 0) return FAIL; #ifndef VIRTUAL sharedMemory_lockLocalLink(); - if (!Feb_Control_SetReadNLines(value)) { + if (!Feb_Control_SetPartialReadout(value)) { sharedMemory_unlockLocalLink(); return FAIL; } sharedMemory_unlockLocalLink(); - Beb_SetReadNLines(value); + Beb_SetPartialReadout(value); #else - eiger_virtual_read_nlines = value; + eiger_virtual_partial_readout = value; #endif return OK; } -int getReadNLines() { +int getPartialReadout() { #ifdef VIRTUAL - return eiger_virtual_read_nlines; + return eiger_virtual_partial_readout; #else sharedMemory_lockLocalLink(); - int retval = Feb_Control_GetReadNLines(); + int retval = Feb_Control_GetPartialReadout(); sharedMemory_unlockLocalLink(); return retval; #endif diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer index 1ca8d259e08c038bb256cddf4f8b37b627ecd141..396274c3ceb9487344db4ede47279c7c8c157fdf 100755 GIT binary patch delta 18684 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 delta 18628 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

vyN+=aV&{8M^LePCsE`*@FprWNxruYLU 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 diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index 49c5fe76dd5ed4e1d3f1bd358cdcd3c2f8dff423..23a77ddddcda0433abb824d7740369f2153ca943 100755 GIT binary patch delta 23679 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 ZWbikYm#_8K$x^}J4_YtPh99(^{yz~yGr|A> diff --git a/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer b/slsDetectorServers/moenchDetectorServer/bin/moenchDetectorServer_developer index a3d10f64794d42e6dce7ab3d8b4a6d7ebaa39a54..56a66eb2ba1ddf4500f0de7f7a90a499a9973fa6 100755 GIT binary patch delta 50997 zcmcGXeLxh|{{QCy3kxnf2+FFM3!Di#&qMe`OV728;& zg|!+L71^ScAXNB}a@7=#)Xa);xf{2v(9B5D{k_l3&hAiC_xs21{_)ZCde3>9^E_wH z4#mHAvH#j7cKOtlbcSL4V3Qf2w;0AZi)DP9fvn_aqB8+xS@*c-_~9dc_14Lg2RCGP z5*jk~+nE+$hS9~cDMIN=9n2(@tz=;7##usRCYu&4G+Or#)09Ijw|+M)xO`=za6S{T zk_hLyzGUM3Yneg9wM^DZTEqnLZk%6&Xvd{`2tzI8Yj)rN8W@Mc)Q$JEH z)a?$*Rg>NtF%Ir4(qnx7i-gALc#0I%Y^-L?jH8?sR1-&Jh#Zd=Vb?__3+AjK7;9y8 zquFF31C+rH_lZoD@{=e;yhUJ9!eoXxUh*>uVQ(?8M8qzoFr5_FSj7|`AjL@G5@HeW zfa83=2=&H()D!#TzN34|vHQJE1i!cUFCz}8uY4z`e8V+T3_th|!94{C`CM3(qgiLrIoC&MKXag6CCljKi}D_V~~nTVr5{7EGF)4`ukirXTv09FLXTvyZCP*;sw z%0ew=v9n1k8%KlGRckZqYU-->!B=`E3+3rSFoRIf(6%FyX<4e>>n`@Vsjmh*V{Smq z4Tw1wF~_=NZd<`}TuEnkR0^_?l4TG|Tr|Q|P^$aR!{82cyY+DEsr!{=p$S=N+Uw{% zkyzxqU+_K=7QDZF8RK~W)*suI%dzZ6Yt0qZvdi)0jaJn1%|K<#%|nZ3yUGe{)#_Ni zN!a{81M{}cd*1c<;0h68!QhBxjLECdDwNYu_$%a>;0sXqDU}UGLV^rW2u-JJof{648||HHr|c zkI@H3uut3chf3{grHaxoYxU8_=(Q+>KVAtH{fbS3TNAp*oz{1uuSu@GTfzWA%)=siq%lK~nc>^{kIZ zED)}D&xLN+<2@hOi0zrX+4CN^>z-bZc9PmSI+Izj=){1S6<55xjFv28< zjj*^~mfm}HQdsKmtxve7UJ=})J7kZq-CG#An2FYf)$ zu#-qm?%AlUP*L=BMUl9`zUM5Gz5rc!25wm*GbqVJnV_*A$^pfDC=WEmLj|Dz9x4R& z@lY{HZ@^Id0j8S|4pg71b~)y^wsK3OLsawjMD$LLRNn*pMY>(H`*m}>vii*qmBs=T zb+8U&ok-mAe*H9(>(_pL-LBsKBO_(M%E_v6L?=j=4p4EOS`IlD|XbG&Rd%kI6^F)MsD=~;}B&P5LHCAsz{ z4(2><^g?WZgWMFSO)>~q8OAaDQPZRVtsePwH%G&emx#YK>~gh3ACsNqhRu_m+lJjC zJ8Oq!qKOcpeD6SGu#e>A#>Vw>yY7h_)-?icKLUd#9hD_FR}xp|4mD%Mm&9LJ%m}*T zy)kzheecl~6S&Wav*4P1t+AH_UAGY3I$5Yg zN_APG)^uC4Pz!f0CLpabFvIP0@7{#*#NEAq9lcEM&Wp#y_1D3-4!&dJ5VvFL+890= zENLvlOKz@m%n?=|Fg@ZkWAAWB`rg>l8fm!tVQgY|xu8vxY&8LBrtZ-%XA^rwk34d(XhX-813AA>qP_OIH5~MCXrF@x5OD5(Kk0GX@uLgA*qKu+E z=Rj2;7^nes0t5s73)BLFfewQF&R}7GhEfek4}yUzL9rkh=sl1L1OvSZN(ZH%u~2*s zmKu>_`Krm1~s1XDMtp~M$V4w#d8V@Q4!9XKHUuwm4INNMvxr@1APWM41$4$_K$fPl1X+Fi-)g1Ox*;3bKP>ptYdG zAQ)&B=sXAp%CG=017W}=AiuL{CTA(l14V#fpxGcJ2nL!Cnhb)05uLXlH5C*&h7pp)pP&lX_1Ou_4iy#;%5Y!5SfqX!I=aB7llx{|$ zxIr+`HBc-F2Ko_X0>MDes6>m93WNc_#YHm+209PQ1;Ie4L4_a~=orWbf`JZ!>>wDZ z7SsTOfj$5=gJ7WDpmq=p^cKj%o+knfXamNAV4&@w=^z;B1yBYE2HFBD0>MC=L1iEq zXandl2nKo>)B=Km9s=pU#7O!jrA$z?1sE;jGT=B63>O!H7Jy)&yFs}i7$^m_6$ArK z0abxupb4OhAQ)&A=o$zHGJ>=h(0wmZ8VJ%~!2G8dF$x%ui!fa51xf|MKw+TOAQ&hZ zR0x8B{6VE47|0cg5fKCfwSg{zV4y3Yb`T8oJxKo*vCw~j4q*IONM59ipi~eH*S-Md zf?%MNplu)+=qRWX1OwH98bB~mHRv)32HFGCUc}vBr1UN*0%XBIz*1lW5C+--N(aF} zFM)DEFwpa$A`lEz2r2`?KpR1aK`_u`pe7Iuv<}34jUnl4N~=KzkijD2N}ve{!^L|+ zW)KWCACwP*fl@)+Krqk@P!$LUN&=k+!9Zg{Z6FvZ9;E*UmHiE+A)s-fao>pZUw`0Y zAPg7#fbu~wkRG%R1OtVDsz5MM5a>Jz2J!{9f?%L_1B&}w6!*83eg(yXV4$BssUR4g z|GopR2Ess1pv@o{=u40d1OuG`)q-H4EOvgJ7T{P(26+`X{Iv1Oxp8)DD7y9sxxN7{~=m zIiPVM7@hyJfayROE-nXUf?%L~K$}4@P&&v4f`Mj%YC$m2R8SKL2AT-+yMzJx5~T!? z0R#gL2gQS6Aj=?NDi8+j3(5h(KoOu~5De4}WCy`Ook1r+Fi-%f2?PUS7tOur?8lgd ztt|{SM`uRbXJZ^Am{vU14RUJDgmcZG;$Po_Qf%Sw()73Zea{Gf-_y;-G;10HYyZQ* ze#aKcz9{mwlUi^qxK-rKCzAzn z6L>k@9s2F8TqeGZ`{@nOb&Sqm?{f5LbU99a>1%K~CbfKN67;V!Fx1lbsHN}Mni)sH zm&w9rJQQvgpFrh^0MNXxfKCFpwv0k$7*U`d5i-}MDilj4 zq{?;03W>>O1SYpZp`=1d&1Ls^BiaUKTW+dCX@b&}TdYt_>lwkczCodEeiR$qkFtBc z@q}3(!+V&=QWa7@l>Env6-vhA=w^>MD3n$xt&g)#R#9rH`N(8G>kLt75gQmGVgu{! zs?bbNAX`tc&QMXa1c^nS4lx~Kn8IT-v}S1C6k5z?Mu^$WI=d^hVra$C!WCLOw03BE zg_iy#(s+_}_E2ax3q%{lo(eJjDR_K}b@ozd+n{ZO7NOAEptV8ktg7b^@Bkpb%r9VT9OcSZAa{YlhYgElQz96ros)SZ7~_mI*Br8hynl zH%Zg8DC%cfXFr8j1g!{Ke@U~5#h>vUYWO+UIY8mD99lWF7=^|@&j{@EtaG43TL5hV zv_T537FsQ|!3xa}dy0O=tdqV5lQWoEY(cIe4pE4e@K_0Ls6u0`=o41fIZUBVhc+FW zQK1z>D~2{)p`C|z9$K72GrWMA<^|R{!lDo}A!b61S7?>cDxuw}&=?Mx;aKNLg_Z&> z1==WuwqPqtW-IGVP-uAv6`FY$Bbaxw&Y23W9$G!L6j`&N_>He4H?OnK zS+WSN7#iLTIPX$u*Pva4Hd~>MD@A`VWu2)Ctrl7>v^ffmc>`_c4c3{a&RtRmLLesv5_0(IebG|}LftCVofkKOZml2}hWt|I| zWZM6wA-Diy0mMZLkMZRw{&LoNk3uVfRswCYLi2kMefvGuxkRC@hPE2oy$Y=nS|hZj z9?gPP-fk4(Zq{k`h$f*FS}C+;3hjg)L#CZ|(lv^l>DUU4m=&yZg+kj3Z7Z}4g~seb z@$X@sD-{}xcUP?C1J-$;LNr4(L%Uz0t^N>q@*(TYRA`m^FfQz4ommPkw+dacigjiy zv?^#-&{iolLp27UYSy_L8v4If{Dlw;AwHn+sN0X%F#B2Og9%<}0+V(6&O`pwPAI>tJm zQfT?m@}U(fw03Ci(4JOkrsJ6NkF(Ba6j~j$I%r!In%@bO^aO-Y1a9oLd!gZVm-q;Us7nfXVDeUvQA#16`e!abF6clLQAon$MATb zb#7OPc4&5JFDo?tm*`Gkvd&i&S^=~IXeA2mGPKLkb||!*3z&{Cu+CQ%S{1Y^XqML$ zV%=A$r>|J2O`#QCM6NHg&YcP^=W9gxHS64^&{$|JwAU4y9Rrsg16Qd+%fY~vgMsS} zNt4!pl?Yskz;7x%#(#sc{~Ol%mO{&emItj&q18dFgZ8#Ui~bf9%(txb9fh_U+G=R; zDl}UY)_=Ap)>*C)8{n}49^X@Fg#t!LfpzXyXfe=YpuMlqPCz>W&92Z4moVI3Vx1KV zZ85aP(DsOffO`zcy^Kb4nRV_}c(g;aL#tG1?2jnwA6e%I3N0O4I#|q7G9qT{Cb=LWbLM*(FqJ~zd&`v-*0quZ7OZg2w=Qq}QP@xq=D~5JR zp|Nc!tv1$qSfS-Z%ZK)yl|U%Z}bMmD}Yz=3gFcwA>s!gSevcYPK-gu{n%c;-y7)32b(l0 zKcMS!s~+kXnfU|u|9*(WE@b;>$_>q<$FWt6YdKuSLl0?k;Xjw_mlLVUgDa1lnKR@* zZ^CkZh&f8Yxn{?kpJ{RAE*Sf6Qik;AR(qAreJ!mCrvaJZtD*8PWLK*k9xtAdV&M;r zW9%VW>nbHhkLq~js5NUfqReeyGpz5QJ;-^veIi*XZV3{KxgXZ_i}-7Q7f!tJ zUUx2O?MSu6o>{wGO}@Q0byywBqwWWnBmb7mp})|C&2c>rQQ@V^61-Gdl7tfQfwkIA z!U_01!EIPKLM^I;>&B?bopV*?MY$6O{PnH8bll~*Uhm$#^ES2 zq*^Yn(p5?BV4G&L@m-5*0q*G5;u0w3@UdHC` zrciu5sD96HZrTc}X$jV0Dz4*3JQ6ubikS8nIT#K(AhO2GQG$tK99_K8 z{o|47zlbgjvvU~t(Ifp7-A`_^NrK@=9~kXJ2H|j^u|n=iuYMvY$?5Y3_3`G!<#_e1 z)+pEbB*FZnuVChu<%Rl7JO12bd6Sd9-V=7>?Eu?mb2&23=G6Ea+H5&BF30Y(-W-%6 z2W3C5tNz9AO})Q2b?u|E?xG(3=zz&m#I%bHFv$D%(pv+0P-sDPEkAPA^p*;$r6@y< zjN|;ro*OECG)AqWzj^c@YVw1REl`usKXzA&lpFd2WH7t4x(SD&2jH!Q_vUw2d&`Oa z$yZ>1ItO2^_Td#i#!kj?to?NYcT(uK?{P;Lc3f4_2oa^z?Y8gq+kB`lShs>W` zj^;M^>kEcy2~@mT=`g0elb`G^(ckkU!#lP?+WztoSspihgK7_cctiX&Zzaf?mxrO? zqg6IWJX>CfND7f7{g1Yqoz*PPrH}v7hWBOhpLa2s1RJi}xGNh5SiFVhatt`BoCvCZ z!W-J37)N2PoQliQbh)nPfOyJX^J5)iYd`Z2nn4wgGFHu{=L-k3%Ho&9;VmZOYX4~v zdf-2gc-7juq>E5HmvMADDvR8k|A=zmU&n42{WFd@{4905xt=&&j;Aj-)d*sac3;MT z?|9?P-MGK$N>GPdI(oEu{4z0iB7a$uO6h2!8GT1JXu%`zpLr%vl_-+jKc!T z&@9HMA}pzkxR8QKO*vfU+^B*+0}2qPK#V^fO*sdYlNDkuu4ZQ^riR3^R=i|Fo)2>y z3i?|9e3fym!>LZ`PHBA_|RBWgmaIx$=d0 zyS5O$wiWYPtF*A7qsP(xf6O3va$|RQx&3EjA5AWDn9Buk>f>(F9cP2dirFB(6)!|v zql63$;5$6)6_?}m_j0XY|DM+Rj}6NDTBTAO%97lMShuw@j?|Dp=d^ZH1eP(_AX*}i zx-LiHSIT-Cgo5$5puYddw7UE`sR>U+XvB!PrB94k8?AOfq5rS*WjXGpy!8@l|Fn03 zbmIxt1=57gQ{C|?$2fUBvK?X^+7w3D3FY6h1h}frhDlP(Pz(6*p|%yjuV|{dQll&w zf7a#bb&RS(7P@Xv%$Z;4JpiAvsI|ED~O(ecGzeV{tTs5N@~>Le_q zd|}gs`qluL5mQC0J;dm1?1E z0nd0s)^jVL9Ho}W-A|5FliQz6`OEl>h|kEad`dmOr&O!x>Qk!gsEUVxdFg4@ zJM90AYI!{Q%ox=LUmJ4Mb|p%fiSc4#ohL`%KQmb^P1Bb2{~F8B-qqE|TMR?orNp@$ zKOAkS5zyl0a?|SiveQuh0kEmU&L$x3_Wnc7y0ApuVI{Cm;25HZ#KF7TLtZD{Yo>gWb^S@@G5*ese z$-qOEo(w$voN5L>R+s&sPg5(e?B_>f=^jJ}D8))&9>ThEU7io;&OEQ$l)4wIrhjj- zYC;E#Racmut*Y`Ot7_c4)aCEh<+vAABY8|+KKO!aPC9d{@*;KlP43~X;I3W8 zvAU~QF{@Nzwc&nPiQU>$Wd$7e3w>l-vNc>216K_9=+*&h6}M+=wwgTj#XH<1^PCrl zxU=H@0dwcST9&{0V%%8icoco02*Zp~h&4qa7AVO=5nM%Bl@YDhqf=jZvklemLseYp zOQXW&5Yvpz{fy(+NhToyH;}+Bd#U%>6u44;aXIRm=sF_?EAoFg(RIefBi{JsG+EBq zz&JiilH;y^X~5rXKCIpE4#)ZOL)1zniJ!W_TP4^Lp+EZ(4~}W|I3@ZE&Q|?GjK$)q zrA!bEWLJ#+IluS_Ilo9F{|m_U{`Wmq*u?8+sYghEA%&w~?g(u)doaisqZEpN*@?;E z$8Y6w=qi>&Aj&~3KW@sl$V~T0g*9xr9&2w$=kdw-HIw*@CY*yC=AnjaI+aM}UMISx zkZIOuYVZqk>C_dT#)AH;+D~qa)081oWt?XFY?ZcHi)*#qs_nDX3ijCc2i4@{msf{K z4IKMui`?Tmcl709YM!;P+^cE)#aC$LR=qN6qO|%rT205@5aU%l>t1=Ry~i^xaP$dI zivB?LeB;6UFjIOG5nfU4Dm_ac>?Q>fs;{E{cHArHYDY=rd})S1Q|+j3#jGmN?$0ju zCh2jZ(RXL%HNlzcrAFWTX=68Jc*9-s#NBO&YG&@*k&63da1T;uQkQt5M_tM_&*-{% zR_y}rb2)m{e-^v1b6=}R-Tl>$QJ<9yro)OuE$S7rPwtIZ2ddRm)2k28lxl}=B3$WE zJGqM5QNM%JxPwcmsau|8w!fyDOyg_mJv*)@rIn=LHSDinEJb8`Zpu#8W#n@^RfqcvJMa6Ojm?9VbYpYvF4f%a-!<=Vf-b7$n%a7DQ(sq| zVxM_kb+z{W>#9@iU8SlSc&T)##)x}1a{nqFt5&()-%w3_(HlcG=?It3J^O}gxC`px z?s#*kCLiJQxjApDhI{o*)$}eQTq(kpa^2oi4Y&NQ_`y;KQCq8o?_nI4F^uk52=;*y z%?a+nTdPzjkFpD?MiIEobShy{T5d|1|46`)yTp zrZH&nNfyjCet$97xR;b&9kF)Cu{D8?LhiYk?J@FP6oue_g#kunIg56y}9DX8hXztF_Zw0j=9R@)O)J*NKVFQjrG zc|Cq(R~?G_SE!C>PgbZF;7=8c)aq=}o+mYj@ecej_wPL;G|j)EGjqN7_R(C1>oS+P zx3}gRT-Uf2dk47R$|%cskPvf?UzChzxtGfippCa7rZ%nup~BkGce&5^-l;LbW#ED< zM`@Q~+mBWM-8_GzjAM^< z=X~~uX)gXw-{SS!ulhpezWu6^@7_PupTY49<_33Zzv>EQXpL&|tgRWU2}8gz?u{DN zN%g9FxRJF(HSq`+&t=uBhWoHKZgT0uAfa?2YfaG6C&MyOnMjcs+P$qyu2}p?>jr+L zb>jji-h{Vgm5cpIKUj{)F1{>a%(fbDbQKt?K3!5QE8IgL^-!JFixGM8jjo9N`kS7} z?H}ni;ulD`&psN`trA`;Z?xKz(EE3lV3~j$Ji&GOxSysKS6aEzAK%$a`d$fRCT6x` zP6cNDnrLjdN^v~>@i2F6AAPL4xWE1}&QsjPaSm?SCj&#=cf~c~FLH8SjTy7+oYLcDz}F zB?<+IvEXJ;l*)&1;Kc7u1~qmQKi!#&pYCv@>UvwG`^C3fIs_|2u(F$Uzv6i*m^aj1 zm*bP;bh}fF^+5CS24v~03i<(}`EohU4cVEtlNi}~9pkJ=ob@+vAkLNEIQ`vO`LeF} zC@Cu;yV7?3IdBUCx7>`veT?-6c848uV6?of>F@|O8jVsesRUgxN=16`!cU0X@e|_q zgUHH_(qK#ivK|dRx;;vmg{k+)Qg12BuZ5mM+LB+FBU~&5`q8U##~UWo`Lv=tqRPdY zrrdUyLwlUAsOXw$$Z@)&ims5~719}@8_KFmd~+zxO~nXR%ndx)S8aH`_uxp)VR$&q zZ9h05++9kq(>K0>dfK)`g*$g};NKiVSYFz;q7{8e@;l&=>Q>2phem3ekx(&hJ7Jgl0-F`tgq#2}>@ZvCgK zIXw8OY7YI6#A{LzE`^(TWPrO5ukyI~BLn~D!D7=c@9P+;_)alYWrjBoPF%?>i$ie zvhH6y)=#Y)oIN&F(~gANxxnM9bwBU8YTdtle5l5N!+i$sGxcyiPpF2w_ry@mWQ3c{ zSx=~@_l9LH)wYJ+P zY;L#1)qXn_E(Rwh8J8I@EnHd`m)=mRVO{uI1Q&d|$6)cuSPN?%ZPsc7*cn2MD-f2o z-ydURtSbnXjd#381T}JVPLJx`@f8^N(&-6mt;Biy-l-;pF}Yk0g5M9z69A*@!O{tL zp}h_nlCoRi$!@VHyEbojpE=WCEro+;%qfeJ!eZAl#Aj8!>eK3W_mJamMc$>NU_5cN zp12KI=&<_-3570x5m)f}ey-{BuH2Z$xX4^Y3_~H{n)qHLb*!{mE&H>r(wy{-Rh~%m@nepd+K!lDaL)6-qRX?zu$Xg=(5Wf zPg9mJddM%_Uj1UwAo*>mk?|3X%%4-JDE6dq^^2hhNibb<{m%{!mP4i>WD2+Jtmlz( z(^=K!?8&ne`bcG=H6~&!-6Ry?=xhN)35Q4E#`t({baFXd<;(%xK+bVxW%op7pN9I~ zyR>Sh>ZWZ{suD9?QtQlt%iTJ6pHr=F=eeY*hmp!*#^vbJA&nm5mc-}pHh5B?X-O&2 zW+bIx_ondRdDRr&JfEi4&Vs)Dy9bK6?c&DaOJAz??F(P3J~~gm5U**%y)f_V?V;}`D&h8W_wfSV4d2z1W^~uF9}U->8N=^Ns4Q_WV}0GXC+cs_!G;rmNjzY*VHt zpZH)4bbHfmH4itM;@pKaTo~vcg}uvp|G(Hn<2DJZC38toy~F;OlGM_E?9w0=dGCjp z(ujL~5!@_4=Oi|da%&r!N4Q-dc&`4Zc~qdZKq=mJn%meM%8mPXMDI+zsgh2K(IYEA zZMWAP@E%#&yZ+w+{u=QpJGb$N5f<6A5o=S~&FDsA_HIgkyh>;*R|k^*66USHp9d z4}H$>^79mx>gDeHSv6i*T{r*FUTFo)1){PGLi$O*FdQCIH#n|q6W)+A&g3mM$=R|b1p zj2$(p-eT%JZGg6z1`nyXm?qD4^%m2L>)sYqtgqRLxtkugm-g#scav{o&eehLU0As% zOJ4&|z?0u!*Yfrv9D2pg<#8We)QZ2@jEOjkXK<^wy)l^!>xpsO8n`IvlmC z{$+&fimt>5AMx-xh8jA&MXoU}>{^ti3dvQWVw)@EgR+5pY^YdfTQUw}(!-c^c_8;i z{G67vRaI1Z%7dF@A8IgQmMyK5Z;>7hh{lt417dFQiNv)JE9mjnip;%=~ zzUkLirQt)UPOUy*GFIc`IoPz(X3(Y~#Xliy9-wNR1oiDZzed$J7MxoqC-1}rWr2V}|<63SQ-MdX{gZ4altVFVvzWC9> zZn_0T54$|Qy9q77V5_|8^MA`okS9@ZMvAGXd6l8->XMsAwUPdto2pBd{_Uz0+4A-Y z)4k<^R*q(kA9|oPV8#aV6iY51JYXPi$y|hwi@x}(v18;0S>;;VRd>~g-WuvYf}>Vs z@lP?1k}iy{A8M=}Mc3{tAF*H@=i}wt>iDwLdpd%vyro(S*KeslS0vq5ZP`z%%g1id z`M7L@jbYn-H~r z$e$&u(epih$Yl5YOULioIM@}5KP{lu`so`mg5Q*1_wpNkNVmmOYw1`YL)lB!Yw-aq zDOi9$Nr?6Hfo-bsH(*axe5fr@v>uZm5lnuYs;}DDq6H0qOm0E^RUe|(digQFBvl$L z_~(5|4|lE5+-^i}E2 z0$H8}_)S4%(O<-9=n$i!LyTb>A0bR5Wtq18?%o(9PG-!HiGo9*bvZ`g`e$k3Eq;$Qq8*vj>F7R?Pr3Aq zi0$BZk)65tB4WD0A_J^HP4Jss`b9+P$J3P0=F%@BCg6I4c>QE9{UTxtI7Q?mx%7*O zX0Tc0k8|CJh4|Nk$&fL6REmBF4#UtI*%3we$Q)n(1C@n6o`RRm`x!G`iAwc>H3$B1 z05m61yZgWT-%vMM@w$$lZRccSE|~~iRoH%p{Z`trgU@~ z$){fzGH8f53-mayr>kK(jn|dPP$@DLgqsjMD1T2E(j)jV(md>+BwX|N5w7tYyO1f} zDg&_O3h-8O7&wgo3cfAUkIh|<5w{IBk>c@}1-A`oJ(150j>PsdJQ@RBj_BLQn&INr z8MlqN+VzMW3bUJIB+v?6~^!)1|mtgsVlky5pAo1I2^4>Tq?-(=X!cR$SeRtIyq% zf1|SZRs*i)Km8=Gmf&g$a=9V|xhw^g@|F;?<^FB>4(7Hj`l5Wie_d6~U3#P3%H&Et z;HlJ2^WHBGSE96?Mv>B~(tK`>oC8ITB^X1>~iXxGmpLHbz z{-R|xbr>L;Fw3R{qPOsop`?!@q9I~L-jN9zlE<^Q`#o-|E)Nn)_H79zU;F$;ilz=J znvkLyDVq5gyOVw$g2+8cYn+21a`UBx9*H2^`0u)tfgOT)TfDhLDrN*}K#&H0d^j1= zA&57XH62n}Q7x1#lMdb9#}%8XKH8eq%2(N7D#rBY&3I_aSF(g$Rne<^|(EYj`KwIcnJtM_LPzW8u# zIYu`3g4XkA-U9IC`MZ6LXWNFgHr32F9=KmCZu>-`_pNI8hSKWBh$kQM*JfS~f~9U} z@F$UiF_=m3JoFQ!VEAl<%Q3s1o+eQr^Q31jd3n)*7GTuTvRl_1Jv%h-^sbsJ4WJ+9UBYa&TEO(UF*{FX>Ey0<$#TB;mV zg03rKx(qLuc_EVYHb@ufFK8uKh!saqW^YV234XzNKM~B|5k(Arqv3`*42<*y&N!wp zO-Q=EfF5fdhpXfGWl>~>|KebLvpZN^C2Z@AR^8bH3J^F4oFj5&7F{K525%O*Jj*?8{IY&zfF+(q)>v=ZBy_=or3<~6 zs!Uooso+$R?U}S}R)bfIT$V}8rT|R2C)dciTI zm!<{I7Jf(!dE8$Y;xFhz_}wuiN|OM0!oDwJNU*QQwuHv<-C%SfJ7!fo-zAoG>s1D| zY)QgS1O5&mF>f+6j>d=3C#lL$j3s@Bm%(qD`;Yn2v8%g2VJAFvR2^Te_o)2yvB4_c8AQ;ihtjbeeqzDNwA0DSV>4HWF*qFOrI)#!F=rF z-t0Sukd^*^UGdHJu40EYg<|m)>TPtByW%ZGS6Zh@8MM(Y1}_$QOa^UqdEh*e<1%QY zD*_jZJSc-UIvdy~a#RLwbd}&rk$Yy)MpqB67rAQ&8XZ2`2;rhA1ZB`h*9vYG*(ZZG zIzMF4FO+8J#tPc#^kBWnS69$R7YmLR`TG^h4*BaUx%1Jkmr$WBLi(WtX$A?TBVP`p z$l)I!M*3L9X0$|FebFPA(O9u>#pSJ`F2^93yz-mvs>3)p`7v6o9Yf$S`RqTc^p8YN z-07(TcWXS;NLl9UBQhj=y&&r$r>M$+rQdYulh)A`=R$*3X9VhFc>ta7_) zUX9;49GxgL48H^94-F?HdMHE7#a@QU%lIyFq{qyTml?;mv#M-zK}dB)%UC%8*J4Jc zf5uIz)j_M{*Ts=x7Wq`njp|~2ocRV$Sr&^QWUhplO81{ntAe}A?G}T=jq|E_9pjFa z!6Po3R+~K;VQ4t|>P!9ulpD1XSO!UPP@RDf1{vC@W%c+}t$ITABOdMefDV1PCi$Ra z(m?E$ND)zr0!i8FYQ5X$W7KBod;@$s86QoRb(%$w8}DC_VUK_+Qkl?_vdDnPRs5AY zcVS^gAQ#)Q>IS<(FlidFbwl6JsNG)@G9v5vyQoNBzIPHx|0bwJ^xoxLNle>`?*pB# z-Z`PhR^3$7X44y=SSkN0&<-9`FID@Z!N0jm4oqJS5hNi-#V?5`;gi(Lb~5rL>r$TN za+mTX5lu?;#qWzJy@zX2HCnOq7xgu5{-PjsJ$`#it#P7*pw3Q9kABDq+r%i;Sg{YZoq5kA5) zFBy^0h$Ocd5r6zn(s$rR$QQHdpE5|mDp#iO@i8((=RPcc(>WW1DEdw-A3lV*I zFh6@FS?2H84a0snY1r?MVZXa#*zbm6zZ)H8JDbH}AG}y(f3rC3gY!hby;L0b!9^lp zUn&m!V4KK4Eft4-aHYu3rQ)y;t{3^6r5N_pg^Lg_io)5Y;;;{H75U^+ao9%&{kqc( z9a$<4`(VAuA1@V$eQ>PEA1;;G8t;!HPiS&*A%`E8Kn7b}G3+pFiDk;bHa`E~Px9Lz%Un;TUP=9)TJgzt5dZT##tK0N3pI&EN4G4c= zeKfAO<9fSz{rGJxiMxv)T5r=eamD&Dc!)-ZqWRwvu+S0fjqf*_44!3%Y7Vd7`PfeU z^y{|#^51@&K3uF>FSn8IXf0Cf=mwY6HfTeZni%~aj?}<*jK=2SRz$g#KQ$WL4drl_ z^FNHngL@sEb$pjGaGrR2; zTiJxR*W_;V&2Trn+k6Y$E$%jd8ScyOHs1<&YgU!m{;$D(EeoGEN55!;yDckWmpo|G zk<^dD0R$wK!7m$2!ta)nqJ2bi(LNG#mG%)SQra&9j4sEOD+Ylbz&MUSCj0Cd=C>=J zF#PecWUhan9tZyPVlSxdfmYhX+d!(2e3hOyx_L`zFK7Tah8!jZOyoz_!~z&H<7I2P18skzHX(@#uh_%9$F{=&2$pw^Wx9E z&kPdF?=g{dHVhZTvT4tgyz$)=NvvC?d3UR6iDc^Vb~N+$EZTD!gkrL3&-H`LPYkbx zOPfu@=-|?2hgyH*ccRPkO^HMw?G5|aA^35;1BPqudtrhbEB?{<$c(+@4}TviHKHM=x(bs)Vn~p0r;~T}b=U z3GfM#CoH7>s0G|2^2mj>AGL$qMIO44_9GVYvAt;c{tIb8iUvoEe8)oCj}pKMB6nXX z_M;RCDWcGMA?-(IuvujPg|r{#f^$W_y@2+kLU5tT*B8)!R01v$`KJYPKbkm&@O`DS z4Z+_ND%AGGqDEqzVKUyh-y}34SQG#I6f#M!gruotLLXfOo{J;2Myt4W$bwjrOhN?Q z5&UaY$s~;_0xxIz@1~ORS!Sp($0+f+jWsil#o}|@(+}b=AER<3vZYmq0d7OKw91Hv zJ33ohWyHW8lP#?>V&RU>mPTA7+{SEa#EpkLo_}^4ndzU8l=CCRimU340k5~W;%bqT z+6Y?kkIknQ*9dMDdF^~!ajoE1k+bL1it|HwzuwgU^7*vl^kBWni{{gciv`DuoHn0U zoC$0aIe9)R&LX5kNEd~q`LyCP!I>hDnNKS&ADl08+2JtVX^~DR7GG@0NX1BdgXE&K$^0K8>C_;Vsx;_Hr7F3_Qsw*3Aa`oSg5;OXAU%eQ z<(Q2Ji@;8L`f=D~K~^4nkL4n;B9ls;c5A83-EmrHEr_Az4qEpub7@;)aGmKxxoIwKD-qxbkn0@GG8%^^ywu9wqjAR8c~^X!5oRd_?Jy*!yjgmUUTHw z^AJ;BB;%NzzQ3I1U}$pmWpzG+w!A6mTJXz%L)5MkvULf+NG_j?ESBrchErvea6hJ5tg)?bl zO9gKg`B<9RQo&^+A50TlD!5kU{b^ccpaI+<@}4w#I@&h}PYq$w`1L&h?>S_eCN&yM zM}Bx3c}i0NwSfO9jnrsr;jHC1+)egr+Td*CN2lY}Uwl7&kdl8So!p}-fU|%$yD*=H`7MnW1Tdvx%R-n5@#o z4#Z#S$P~?LI9Ky4myilgm(8moLvy*Y0n}$w;5N7_3 z`|;G231{ZM53EKM(Qrod9DGbkfiq=r61w;Ysf@0h z-cX$=EP%E^)ZT^GNz^i+Wr*5NXmi-M74{nHR}9a)R%54G4953(08e>RT2mfCS~&=q z!>@XP3|_ho&TWH}k=8U%TBXoRMQyw%Eju*3sEvR&4QbVhX?epBfbPdK=DHddN0@Pt zfyToBO4F-_vzG7mAPV9zoQL_*50ZXMFT;6R%)Vo`e4B01+C=S3Xwq%^#iF^z(&9J; zjV9e7ChZM>2s%x=!JV`i3;)rBB(g7yz-;UwA^s-6=xQzFxH^-?tHeQq8H^W-xT@#L zL&%K@PE+i1q+;>pCKXz$sIB+p#th9YYOA27A~#K9ZoJ`_x^vUy&W#ug|Idd|2RR6w z!&f|ng2;n2k3aPgSvH_F)<-Bs9%-JW(?j&fWt%1iW{&<2zZ=9LQ6Gyf6@GpWHeWlw z>TE?UFk^xEvilkc2Eq#*1Zm@Ia!8Lc>OqP-1S!VqW;)ga)3ej8^h>n5Az0TA;XAJ( z`myTaZ5_hf6yY0o(x2cP5QBkVwubZ=tsa5BLj-n31YLKTgm?sx=l8B5OZ=w~!PqoJ z9PT#{#kS5+?{HrTUxh>H@P2O+9qw&lo5=H$=x|>Pt`+&NBs$zTfEz@fnnZ{DW^l8} z6O!m~-v(|Id1MkD?sZ5{H_$yR0JvyVNhi7NhuGG10|OTSo@}N!+*&yF8VMqLSaSjttja zhVwH2`8qP>PhPv^!fV7Z%y#_XT)bg6!D-^>=8`Ex| zPM^=xqGi-0Kt2D^dNO#X94~8)L}uPj)@pm`=}T2vr+*E$1>ReRMdA88$=EyftUO}G zmB;A$*n2Tz?}h*OdNMH5odYW|``}Ij$I4N8?vfw&Fbc+m5GH=+!x*I(z`1~b;9*R; zVygTr592jt4%8gJhI%N36Gtqm2dQd0J%XJw8&n%V>=AgVg0qUB^N1$~%Ogm_9U1i? zIX`*?L!sn!c%6ZHvbt|r9_d0f#c_d{J10GgX}x$jj*;-LN6D{l=kJeUwiDHT?>|ne zeKZZmK%rsZ1OFgT=rru`K!M%&>oep#e@!afsrv*g8PL@oG`N)Xvy^V3dv7>^u!Sz{ zbo$x&g{n3vI1HcD*n)43K-C8MM_}6rjj?G-4?N+NZ<%cj!oR=YPp<{D$$}j|?H-?X zOYx#*sh@#yq;^9cH-|FPQX22Y|D4w3{~w9*zm}4@^HpM3i5!pZOYqo^{k8vgCpeV2 zlUZHKvY_9^AAW<()08d?rfa7+$)RZ7E^OZHVyy$4Ga2nX)AZno>1J%Y z?25r(&l~dHDwM3>F5dqwV(4aDh9jHH!mU$`3EKWBwNh{?KlUxM%o}^@TcioG(+f|R zk);83OA}Dmb^Om|csp6Q6o1wpnVN6R#7ELD;dIUehW9II;eLbVfA($C&tJbQm=;6T+gP!kK$|$h3vXlC5t|1e{toFI!R*os%&tW1 zAwQ;N5EB!ZsOyaOqenR*+`MB7z`dkdgbM6$nB0{rjgbc8_&8{hjqGOe?I*O>1(*J$SpEo%x!T{uNffPmR6PIh_wbUScmy3u!grJP zW3{^sD0A(uz|1+^4D`~07;j3qBwLg2{vvQ3>OdX|{uy{@Sn%pu+^vU(qgfR{M@lk7{esbpW4Y> zcVq2SL00vv+(N6Uatq6i|MzwmUhAPctF|OGzv5!KnFzDm+6hUZYmMqA^_}3%x%hf^ zZ97g_iZyVvg7oR;ttKD#%^~iV$`9K^dXJ!O#@F3u5{!S}W@e$SpjY#jJ><%e1-ShM zXrR7~-rQghFk^L)9bPfNV!oZXV;%lzTYg$1wNz#!`>~?FlUC_~E zI2~Q?WaH5#8;>s7y~yDs_mN(`#JiybRB{Yw!UdWp-Y(H}`T6_Euvt<%G!01E%NZ7N zbwS~HvWN7W_bz7wbO8}G1*xF!4y9uwW3I*McuNx#Hx2#+5as9lNZ-JmZ1E!ggrI95 z8AbkA#klX;YSP2kJ*2-|OZo+O7-jjdYsvWkRoeWTkFZlvfU?2%z(;rz_Bi_tyQx7h zUB$ZbqG7f7>Tp%{=*+I4iZ{1;!Q>@DeyW~sIT2%?3C#T)*)9* zKOx;h%P`iKVbr=?8>ydxz=7y{Pklo6d1u9`b)-jh=UarHLZM zN`iy+Q;hVGtr&tIcz}%lpOtX+0kTuGc~y|GnO}O43<=!4N*@k;ch7W!Tg2|l=!H_8}7k)iNrX~I{0FJDn2PB~VGt95(0aBDL9}LH$0)5GyndJ<= zd$KCPj4z+?8xE7c!Qu_AqMngg{=LJbN1!KW{?uXYzu30;VIrFNDOng|gD2Y-mt!Xe z(h_8}WZ&DLk{&a>qR9MkV-#I-Bk_0eR|v(#x1?H4I^QtAOh1D;4u5DJ z#o0D2ICLf;P7D65_-V6<1)Al zCL8ZESR0XuQ5~PFT-wF3X*F$&3A^T_%oBFqxZi5C243&eU}J-R2`5HcKP;1+B;+k; z;0(h5^06fhpl&VSqs_qeKx$U%n>CKsg<`tRUyfmxcbp`%1KjEGqfe0`k#)H9I+PTA z;`i86QuI+u(r}G`>J+xkq<(Vx6nW9@T-AU95~G7-YOoIb|9k@(*r^nQMGRv!(uMEw z2CR#u=%P#(tc1zvK)F4VQ*G);h~bpACl&Kw=nX z?EK&}WPo@4S#*ZvccE2|5g-M&zgOJM$TKQ=zwSwl7=22QGig|=P6m`^uI&E5x$7x!4aF;Jn!xOC5 zz%Z%1v^t-NIeQqU>+U378~@qoq>G_!OCsjlvMu6(ATDpvlDSz}wKC>l{L8n0PNw3{ zgHfN;8c9FTozKLb&%#|Z4yJ!F?)-^H3}dwJm-VN0U)_j@RcRIV6|Pun(VPaOnbvMe z!>MqZxl%MTsn__1xg4RcS-AON*i$QFtkVRSB_WY$EHERGn`W%T<3X4uFhLhc*L6r#T!1_78L-xXmuQ!Q zVDyBwZnSg8Z^ID+zyp}LMKEk~KTiSxA>vG&Fe$A9-jb;do z`8`<3?+L+!5Yq+c?ETLY_D;WDbj@iHh*ny6##GRiXAgh58#Lf(!;RkpbRl8%8?WxT z_?c(1i6Ca2Uv-xB7+bomwHigYj25E)QWMw1LeG#@ z;!d#^M%i^k{L%vV=X2O87MI0*;Cb@EVEr!fxfvanKE=`J=VH72`FLqDKB>Ss9*M>I zLBv$MZ|8Y3hjc4`F0*0~mu-K?{vZ3Gitj7lsi02_0T;+y|EtM(pXMtP;N$J5VPBK` zq^7&i@-lf$Pl0Z*V(ne zMRlF|d(WNA+<^fGMS(EHL9jy9FyLVD0Rm!pD{RDj3aRHH~RVrCZZtq+55@T`q$OZD_}k;is_>(4*u%z1p@ zci!Lm&bjxB%9P@cyvVmn;=p1F#|TIM!mo@PSgex=7Qed5u$xOFcQ+-ZKmj);<;r(i zbn;y^*z(>iy4gelnrYhW>pHZIFHiCfeDI*Hy`#PRYEIg7+Nuns$&|Zn1kfruSjsN6To+Pcf<@Krrx(A( z>DaI>5TeFR@yqk;EI8q|{7O+JxS^d|jvEzOt_*~-no?sK4bHPe%bHP%f$NR&Jg)W8 z{@E12Aga#ty+e#WBg%O;Xcrw=t^ZS)H;Mc56z?EnJNj9>`|fEzkQc|+=;g7t2gv>6 z1bh>17sx@e*@9bfZWm87$ZW~ce{AsB-d8JJT(w~JvtFz;DE(a^&x;eFGeH|P+WCksgnd5SH^O6P2%plSYT0*jN%}rKbCmJ)%B{^eNl3%Vo zfV2aa=tGlRbu~z>`&$^6a**n^geT!vCh`p+-;Xz~!;#WqOHLae_Oj@b40pLU6}L&H zSe7hf#~3%!#PW0cUx!uG--~3?EG{`f=92F>zi-FK-jca$(Si@YxkLO&A}{Vo^XzwL zYspIfezmb1y*;qcc5`F1hGq@Uno=1#n35#@ohXtrB-jKMxH3E&&l9NKfb-JnvVBuG zxGa(UkWodO8&$M9bubp{$UMlzI?7`@5^@QGNgatw z?NSn|-H#jT;QXwMlG35|gtwVXKUpg(UiTyZB*ssS zO=f4MFBwRDkio$;UJm;sy=-vM^bm3j{nS8i6~~^_;#zb_2#NY?niU}=Gd{KjZ)I;$ ztO7&M=y3C2M3Y>P319{nZ(e2={AU^p<>53o7WRgaJH$9}jH8|q^83J)WX3Vvj1vaj zoOx#kiJF~~3~fL8nN39VNlRc^ zTjIVol1M~5Qp6?zJT4VQqVlU9xtIfpTd?>g5Jk_*$K7yDkuWY*jv`)lv1Y$C8Ao!w~f_ zo|AxTr23#51&4a|T6!s#gsF=$4VXvfXb)E&EP<>vaUPj9&qx2Mb&UIA7E#H*X}1P- zbFC)a_s=6|_*vKI{TpZfb@NGEkmLwAA3c<0j)Ngqa=5R~CrkK*0X(Y_dd@fE2kgEz zhlTqZbHL8l$_=p0ZlHI^v&j+OW*U4O`DxUs{pcYqhjw;(bqu-3>?JM&O`*I+hf5l# zZzGAZS@ z5z~(Hv=?uOIgP0zV_jI2u+e7%th$!)=hI9eo@1H3<5HiXclM#%-WGj1gYmf{W(GtZHy^t+=RLwY+myXIG}l zTkEtff!vXy)^RR`>c=;}S-JgBO~Si%EL_}vNyF|iJ(hG>i*9G6`2rtcrfaTQ6X&@SA&2?h&R8=ot+fvPQG&5{CE z(;llwpTy*6q_>+%%u*0ix@%E);woaAtYoAaE39&M$;J9Q8^j$$eI2M;Wp6cZZ-Rdu z&$p4EN9{lj>`*3rW{zs zk$YO0#siJ8g>9W~F{ry?bz)0QB1>bMkhZC1;&mp2lCPx){^+C`Nw+2C$j#{U&Gfk> zGN*U~gK+`^W7N4;D<1~r9Jnv;DBCHy9>@Oev;mJ(AcUr>PISDbbj=!sA+v`j` z<indpR!gmg_ZRNqmBxa7{#eO@*%;`%o+?(IRH1k%W+|iP$hl!0| zUQ8B?YWjE!2Bzx0$3pNy7llfLg+zpa5m@k&ALilnLwF*H{>(xmQ*R7Di{P_E8k0$O za(IXra;ZA`w5NKST^zVEZH)&P@hG26B7#8`QIdo~FoZ!s3Js*t(OpCY(A$%`{DaMOC4Z2rkw2jCEF+PDCsRw>4Xa}C^@c$CB>i|9c{|{}R9y`t;12=^ zmy?HA?;Bc+Wfwx;`$WaGr~6~*AShbT5cCi9>z<*!oxiHdJD$1Kc`=-mNUmJd$`Kv@ zN;?h1Q?Me}w)*2_=-mfN82!--VwpLfI@>kaZIT}iYRcn_=9&XAfZtz1E*Ugwu*0OW zy=X9e!D+NNl`IiM({P2?J)KHgHQMkrLl3*p)s{&L#f51SE)9O1Ns{5!$qU`ltH>52 zMk0MAeR4I~7!wC?T-v@aM@_NW-~I%Q@Fuy7i`(g3Ro#^?s|oo#$trK2+&jseUN4_b zCjBJ`_lw$N$_`tTLwbGN>fhy%DX-t%pG)@hVjcL@xwq$&2)qs$qHLqD6p+^W_3+lG zaU3})?GC{fL=);?L*8Lq1PROPIJOvwg{8Nwkjz`{OnVv{o%4p|iA=FVML5$!vNoD? z<-H)cH;pLS1?*7r@XH?v$tuRO--XyN`c5I)xbj5WiG#2Pr$r<^u_@)_Gt+Gsr>Ar9 z;Ax@U4}G^kZ53=qC;#547me||!}0pA03!=|4JPz{5bSraUqd3HhAOrN_qMg<7T*ur zUPM*|p9PV#Xr@B>9DL`fr-($07m)LUTUSgfeEXWMB}CSU>3RNgy1Q&W>E;7FY-~xy z#Y^Z>RyuPd$q+4=n=S5*8%ZmPu|j9HVzIG%B-hf5r(p@ZfLGevJ#0O#_DDPZaYZwr zoV-pF>RQ>5GkG^Tb?9H}cAbT@T`>z8IZ`M$x7yIJo9TtkBqGAuiW{q~xcd|$;ka=v zCL3of(`}tJcnfs(dI(xi3%8KFwL9`^yV()Y!7ZdgY({vqd$E-~$cvqMnBd$$s~{Um zfYtMmc}JDwUcGE}2inQ~TJ65p)lk*<;l3z|)E>`cKaSH^?Y#8Fbih|E}*Bk zlKG3ekfW;=Ms$4;Q-w?L)fVhida#u1VZ+aQFAla^LwFX_XwX;Y)sloceI-oJzLIHA z(PwN{8k!UKBCc?k+_RH~pP~=fl4xyzNfv(e(--k0;8e+l>UkYpL>!c+bq>yX=fPPws7H(|IqO zK^AQJ{}5C51tm9EM)I%Xb_yokAJgNI8Ouj+D^ryfCSla}5V1Rok73`e9$kCa9z0 zhe=H0H!(Z*zcTvi!(_de5no4E{&Pm|iaHX&uj*?pMCZZIzLjEHVEafv90G-&bD&Ut z%J@+W)rZ!=_8f&8Y&EzhU&9-Vw_|Lgt?cyRBjlxdY|{yw*}aSe+mibF$DURiWjA#KMs`4m3d9d@DY4+;(NbMz4!~P6U|7~Oy7KzJPz79ijdWq zgVeRv&uoQ&H_>(%KSpMeR3>!jIo0UJish5z+X^!aUCQp*cCm&{F7)-sNp^zD&Q}n| zQu}pwN+T;Jp%LFF&wBZ)nflP0|5v_`DtzVdlcf!675YZTw^X6Rw+VIAgqe^F{4+-O zS#M`P>mAuIzio!%_8wwJy)mQS7?%?BR_MQD)yUn=>yL!zKu=&xT6|I_-TecSe4FG5 z#LxR&@k#$yZfJ|k@iP=zd1)++nEYR0S%PqYr>3D3KOna@Xx6d1)~v&)9r`%EDRi}5 z@6lI__#0x{yV)@O`84Ml)QMPsCPUIfrek}cW6$<{vGu;4PVBO#J%2oNpDP!^I`o@2 z>ahwbDd_2X?DF<_G&sBdYdxWSwp!0VyUF#Yx~V(eP|xfc&rbA#8|@~{W^(37WIdmF z-8_N06{d;R=IWwP6$1eb6EF~Pp4_ikHSTUC8H>K2t+ojBWaSa8hKDPsJ+FL-DZA2Z zU7^2eBn^R$>hwNxCoUN@(z5L&HDeh4dl&eQ{{)m`O2U z(4ifq*D#Wo4SO73<&%e(@-fTYTThY{aRkfdi2KTuq>Z0B(pn&owz6$i3Z|HmRz0lX zFFs9{i=!ySC_VQyiOg25AZ!$|mF?TDAO-Rmo18#n44Fq-qw$*hCMnFA4-Nq!mfA!X zL~XzZB$!%I=KGQpl zv}z|QyB=A1EqvB4*r%G-v8A_(F5g8SSSmR&cAZ%8QODR!hH{?c0$VaAlu2?bn;F-W zcy8i-O?(oU#P&UTP_bB9IZs5y-VxYJaCo0WyQSy}kZrs58%NVT&Lqqc_W@|Q@AH=hAkSpkC~>SYo& z|DWVr$1D#}IqAWd$ht_bGz=BTmHI)~eR=;XF#L7#T%5uCsC|PJIf@h+@-WJU)18-L z(2`2=Y)>h>aWH-^m1UK!OevADLa^DIAlS-C;`Z6gM zRhhG2A&YO4dFTyQ<`0iv=krfxKK%-b6wPR6GrbINl)jW{a{AITaNhmK2Gc5eTmFzj za9e%`o%1q@jNXRS+ww6Np`-WYv&QHv7GU(&S~KJ>_LqSB$GtS1(g;@R6b z3`w)@o{bmiG4q)bF^r3`RObz;^M=&X_d7_uw}4kV$V=Ch;O0`M88^FMd6j&r5jz|( zPq|LZrmXg&OS!>HmVcEHJOZMv0Enf|H&;A`*I>Yd_;JXLOtXpQ) zRy&$+jMK|Wd5U|1_~f1943UI7=*v>omg+QcQ@SQaNFVb!^J;( z#V&-nr;-ItoXcXEGkA}{FCU7*>m3HEQ=S6s+yGUs1%BXKD*$C5Ht9nI0QX)Is^?(Um|Gn zD}1iK7*cp)yhGp=EQ1T2NENtuQt9t(!Y%Gnhj8*K_xw>oBZN#yY>K7!HVBMH#Z z6_m@W}JDmxV>aAB8kg zgTOEyXJICdB$!ZUlO8b8*sBPOMOZAtVi6W=prr_FxV=*nZr=y&2f8G|4BBSMZ5{_e z*9@BG5lKiy9y53+ascQgf{u9@m;k`rJPM$UiJ^cQumItJ35WvB>41lLCt^t3L(FUfr0>A;l?>JwON0EC~&HUGRWu-g%%O7y!-! z!@wZW3!DH>0ezB?&jAvk2MmA)hy@k`aR7wRPX`Ks9H1010}vuV1;_%5fDJ&o6ei?b z;jshNKn+j})X|9vVHI6DDMa2<1_};vae%7>Tpi%*2nRyxwn<@GL-Kw}NIonH_6cAL z;gIm2L10)Cw$!1HI{?tIf`+XTXa_n0=Aha1mE&0aBzYp%O)|Ob5(hibPw^Lx^4g3GX!mh`ZMcGy)w!9{{3NC`1()R@DH_ UKo`&tAg73W=9Os?U#(CSDIgXdzTvP_Gk(Hs}9TOAAd52r4Pak2+ z=qA}R!nboR-W(Sg!zWAmcLc&rQo$V@EX_Dqs>w5Ty7Kx)k3t)zt|h<~eXdn-)RvS&FMFC<9~@X_G$!DZ{XmMBiqIWzSm z$3oq%kU|aVuVZltUy?pkmOV>ojP}P!UhU=@&dk{>NL~%GM+PhL=n?k5$Rx>>835z0 zT;K#gNtzCtE{yStOpx=FAVs`RU<0M;9I-#=W0FE&=U@qlT~1*(DXO)y6z(QPNZ~wU zVRs-1UZ00}Vn5`L{bBD3{gl{!-XN0C8+%t0yTe<#lM~)yIyr_Py+`7n{G??P+n++jJ_P<`lKr*9U#lFqMQQ`IG2qPgwcQQ% zH3?E@27&SOND3cIgVfjP)9Y*NYr=yr_DhmV(gI)x=`cszj!dSNDK?M0$nB=S8f=`o z0Wmiq=DlVk2!%?mReo%Tnsw4s)-`nzg5gSOm_XwiI6 zMd7XbKt9|g<-fzhJZ@=HEA(;XO1>uFz7j97H|v!vw1{Ls!kXaWI_5>#9(-d@*|WOb zgyvv_uUv$JZ_lWHtklwY>tU0UMH-nL!;GGTdML>yp+%xq3J>(WRacQlqzd6g&l$^^ zD^0GtV5^tW3q`O;-~6Xa?P;Zo+AnYQ(np8uQ3!v&62knlCLyc~S?5aYyO5V;*Y2&M z9}^}2slAOZ=PL!hiLcxkgr~xy6=z-8z~QpWzd+kt5*iC_Fe%$j(=f({bLQsS!KejU z-K`Jjy>zTVg#LY(xLgnSeOSlZvv9TVZ7$bs{T}Qlw{dh}`)Psn?=N)rd&Z>|m2&n6 znf88!NeLTaak(u0cL&O0slV4h5}Nx(2up8JJic^;MRj?Me0k;ovn%vl1C%^;Gn~;K zLz6$Y`#VD!k)6Vm12aRI=eXgMD0cs>W$w)Yc}fhzi!s+apnBI=Q}w4UTlV<_+%Ua%B#l z7b1@ZDC(d#}oI+viqwc z0=YS3L4cI8fPaNUJCWT*ukda+UpBwYP&>xMFVBD3R6F0pRtbcftt4-A2#G3^6E8an>}0bcy5a^By!!^V5eTpRVR;82KFWm4{uSZq!4HbMokg zinDn14T`gFbOxFTkxF(CGX{CdPGM4PKbPya*wH;Z(e^trSkh5hb_*r3J6)k}9{UCH zZGD=PTA$t>eWTI)w$`T!+^5(qxGq<3Y_8F#G}oG-Q9qo0!ls7Wh8iyL#}L=hkP(co zTYzqzB$Z;gF3k+Frj=s+hr0yRp5Ex6?((^Ncl;FM>R!K1SgCa9WfNnE$kPySjgCd! z_7&@+#UxBibZX+QJi^Ovp=#nmUKudm;uDi@a7Fs|qzSqvHeCHUDWSJg(57jnwSH)( zuF)@Xa*oS;?PSZa{N({s{&G6-D+?BR)Rbp!*`1CCk}j;Ca-;58Iy#=PV@iKrV;Uzl z3Lj0GgUPR+BSn77CD^g5`A9(eZz*p5Vy8_N;-k9}7%ECXrF$_k^2u%(pNjajeU=DY1_$ z+7}XUaxFu?NqpF~A`w z208{h41$3^0i6TEKp%qIKrqlAkk1J$^-fT-fxNr_5DfG($aKO&@DIfofN8i0 z18oCkfMB2}L3tn;=uuEH2nMo%Y#diUk#eV4xA83J?qw1*!*G@DH#* z@Ei~Z>J4fG!9YDgJ||J6Cn@Pc;UE}@fMP%}(3PkJX*vi7`W3Vc1Ov5#vOzG=x1fAb zzJ=k}z!D$~7terfAQ-3tbN~bc{Rh+xf`RsdIzcc{Er>rwsDY|LQ6L!TZBRT226_#Y z3`#y_q4*Ne41|G-K{+58$O&;b+7GGy|i7FwhcEJO~C#1m zfuccmAehn8RvQUC287{aUr-YW1_}XP0Kq_kAg&RkKqDm`hzG$y*9Rp?1`rJNJ18Cm z1GRxtKrqnvpbQYq*k-9c56lC?aPdpfHV_Qd2-*pPfj$M*fncD6phgf3^bx291Orur zIzTW`C5ZnV8U38nn;-)S2C}>YGy-A363}cA4D>809RveC1ArXd4Iy zdJwb|1Ou%H)q!B3wV(zN43usGUI4;?%R!wW7-%6V^faLcng@yo!9cS?lR+?00w@Ip z15E^(K`_u*P&Nn#iUAdXV4%T+EEsfwFyIZiXam7OVW4^t48(&PK`@X%s09QAd4W1X zFwoV3DDE>T?lY9yK~W$W=qFG-2nKQtOt46^fiU1VxVRVu12uuNKrqlrP#y>dIsz&N z!9e>#J3%l|9q2F!26_*44g>@30=0u+pw~ebeG`#jz*1lo2nN~?GJ#;AXF$t9Fwj;| zJ_rWN2bF?gpiQ7U5Daubs2KzU-3#*h0wd`clrlgO7GMO!mB2U<3>TMzQa~`!t)MIr z43rEi1i?TvKsFEzG!@hcf`P_^T0t<75yYKE_dQE#7>GZM`HyEf5Ez4tFkI{hnhk=1 zLP6;u7$^vo2ZDioK_ws<$Qg+d5d;HufEqzC&_z%?2nPBA#D7UF^dF!d81p5PXLJrU z8wA6(&p}xr80a{t2m}Ki0#$%upnA|@5DZiUx&VTK-UV^zaQEjZy#)#dS?~|A9B2f> zKs!LmAQMD{fjU4iP!=fsE6f0vuPELD zj0eI%w}TdgV4y{y91skY0xAN*KsSSIAQ&hS)Bu8kCV|>OFi;$b{~DG3HKmcDI8fZz zZ2lVpOasDjaR4X>1OtVGia;<>FvtdifdW7cAQ;FS)B=KmIt?i9Z&2LdQ2GrN1%iQo z2F(V+==}E`FdYa3HG^_NFwhsEVh{{;3RDGxfsTS2Krqk&P%8)q`T)c=Bl%`Z?}H*h zFwi@oI1r4^e>;K6Ko~BTfzm-R(DR@?5DX-MN*@qV4#~o9UvGe z9u#^W^T>HhV?fa$7|1dlI2{NB4g#fvV4w(4J_rWt1u6%@K;1$0AQ;FG)Chusu#4u} zbN1n|Z{31@>lV)5os;+3IQv+x4NrB$9eOhnoQr1o*0rD%TZCJ5Lo6NNb5h6mbaOG) znu@@k2;AB72ewG2pIB_b<{hqweouMwi4?FAY-AjFVm5d>csk>l6DIIt@M6YMC*r|b z;4H=wCyd}ca315(6VV2fMcM{o8xsOg7~o+icqe0@6LdSH4qV5$^EeM~05>phKduK~ z0AFC-dOS&Do4~8+?$Gb2l``?>Tu*O!uHyoI!=3g%jZXWCFT4#-`?QuXOj5@Vl)(j$8(K+y)gU9W>zyLgm zD-Sgx66Bbsn+V!Rmi^LQ*otQ z&telm$(NVnLs+}?#wlsI3mBROZBC0pFc57{W)KWSn^Oh|2BOU=8@fs`7XN+68F6R9bXCCq?J;j@~M*2wD-e zFqPH`trJ?fN=thbX*|k1`lz&03&c{0eN|%GWAOMG@93w}ilG%li%@AD&^n;?S805Nxv{5RJv!YK} zdB5$5@L>%z&5yF;1mbL92pxqe|lh zWJcf}<5XHQv}9=GRodchD4A`%BVMI7LTiLJ!KGPf@h3lvz|ZoIi7Jo9&!NFR$2%se zv=(SB&?c+2oMKMODdrthR9g0SPRicSJEp3%HfU|oZc=F#&vO>3;(6X-Qi=61U_gF> zcO zvv?XqF2r1jvs51A%CNs)#ye)Kv^;2e&~8>~9ndnRm=lX@{X5hL)^o z78Jkn73Ag>-Z57Zp%p>Hn*qlyDyY&Y6Y22%5Gq3WF zRF#$o&5{T4R+V@F;sI!BDsB2}SogffI~J(40%!%$7OFJ;>zt&2op&r!Y01!%p)FQv zQEzcl)LXn`3716szdQuzLCk}=ROKxj!J8n~HCD2NsEmLVeZ=-L&%{!K>v@B>@ z&~8_0jnEpQt#E4=lQel3if|Y2FuO&QR1U2i+Desn%!VP;#yjX5MagtbB}U9j-mzMx zZG*NATDnT(-bL}h%RBB+X*}Lt@s{^^$DJzC4ABhjE|r$`KJMgw-jSiws`g-9*uy(A zRa#Cpx?(l&SfkRap;bd$tI`ZL7<_7YM;0{nf4TSzAQnKpTjeouFDC`=`4IK~ zA@A6r(kec|9PtV7pzpqw8`*de{rw>CctE8cgLVwsMwOOw2hP01& zJfza9p;beBSfvH-N6GBx9l0uP8?!uZCC+ zF;C@j@_*1U|HC^rtF$I0(u72|sI0`Xb zQK%C0A?6?B9Z#yX!_W>xdrGCv{uER1r@Z57l~xF?5L%H+3p|c$I?g++DlG+C3bbdK z=34(XKx}|0s62+Az|!;t@7Si&3Qr=Dlf2_um6mY|#d?Z&Jg3rfPNOTH<{hF+D?Ed+ zXLv`kN=vphVR&rf9oto+4Vn$w^C~U;3v{P1c*hGWEe~2Av=Wup3au5|4waUD7Sr)r z-tnSJtA)_D}uIPrSTmotq$ICK&9nE%Z2uddi{3+;suBYRUUKxK$ZN#I}WKd{S~Zo zuJDe-Dy;!p1GN9BwEU|W%&zi|BP#6}v}4eYDjHq?={pf&C+|3>h|n6LHA4GTrIoZ{ z25jRU$5mSBH4IYMc*hBqRsyXAT7yb!fz|@;BxjOhu4B=1U7j&f|GeXr%40SzW?$zW zpQ*GaXid->Ra(3gJ3CI^@wrMXg;omfv`WJPRmq3r9cNV9Y-qEgHL2HsJ0b3b_=Ur_!3eFavt=j;~Z&p$`T#AKvk`TeFy?28az1zj2Eu zDNcvMN5?ywRa!2zTxgO?YlhYg?Yv5h@yf) zKi=U`X@{X5hW4FG3)G`~>Ul?tO3Q+l1?_v4W`kyf_Jc}mht>}5M~*WKXYV$QlXu+Y zb1BMhp3^@1N8ae!FFc1mtaCqb_Gb<#nqa(Vh|v=io5DM=DZC?5;(zplb(FT*h%vyp z7u%_Kc>+CpPqWVSBi0DQ+It5_F8dL?(Lcsw7qatH^@ir5qu46OwREBK-g|W!@Sh*FIb)yIU)q|3k>&LJi+d>c1 z{J3s##NYcnd+eFFdkcx{$7v<@#QIfQ^7Zv8qpMIJRX;lIx!0Wb@UzX>91q7KD(qA) z$4=$)M3jIRtj%VU>fy6q*mU1mt*G|hH&ILOo}(!*&6zs%?{DR~qfYzf!>-L+;iH_$ zfAG5=e!Y$;e*HE?YUN_$hFi4c=Qkwj&f%uc3Eyv+qHBPwK^SrWTvxShy8os)IgedW zI`!q1I>hE~D>ipqpTWu9g+~-sXuChUU)R#RTAEiwORx%4ag{Lkfym)<#I(OC!SH4f zksWRwD496U-oq2!zaEJCo9OhIo%O;84-8gyKc&egN})e_!Dt^cNC*6ll}b-~@gpTk zA$;TT0iK*V?Ju6z8^nsFF< zDBenVZoaI>Q%*iVdrLk)pMkG7+n7o(V>e?Ma&_?ocdphytl0@Ze0Z|Xgmsfia6UXi zDkE!+@mIZA=`yCgnVaM)(LZt{!@9OX+WxW-S(Y$nlV%UT ze^cBnPbDasSB9aWL)E1mJ6oQMNOF;*@SjR+%W8O>OP}&nDc+aGeb&QZlD6UMHsRu? zp%zbJIqgG_t0#hrpYcNcXU<+wr=;SvH@DW;e#}m}>wc<7Y@MgxL^Iflql`Nj(DQ{O zcy;kB;qVp{akc$C96j*g2R&-V0@6dOSisr49a2Q$wSNtC-Cx&k7yb+0bN?cDy9Mqz zoc70Cn`$6(UT!g~{>d-vKr#vjF^Mv5MNL?vhrNa2U0Yl9QV`lNEp(&?;QZj?BMK%1q zgp}Y|-int@$aA%@DQ}SFuU9$yeK^%A-zlw+Lgew!zUV~A%4Z4Qwj!>^UpTw5)}zTC znX{k$M34Je@bEC?dl~YvEHlj7CARJ?OTpGesqGgpsZAKUd2kQeV^77SuyS+QLQi&L zkR91ah~ncagOjmsBF-{qeO80YieKHr=4dvgp1cd5*!!)^NXa&4~ zf5+-SRyWsPtW_6`FYmPXJ3`d}3_GlQ3H|;(LhC*k|2sa!Q=&6aqO$i_{;f=6bbPVZ zd|VT3)Ehm0bsCmY-mqCxU7H`wh^eB@7Hsr3_CPayrCJ#~gzk@qyGHR5kM{3hu-p$f zI1>SVVa+ucG4rjfG)aMYLJkz}cyzp09(O%DSxfGGH2H7iV^7?|9gk_p_n2lCU3yG& zU6op(>HE0?lWJ1fk2R(;vroS0B~89~7^`f$NTI!Q$R4FQoc4cxC;!aNX@BLr26Uh2 zvCda|J{LHhug5PpZc&zt%e!{Ze*C@~B_wTdN&I z`5qHqdVGvlL7snH^A3kRp;;b}J~2^q!Pko1v|b!2&B1uFq~4vQAD)=5m8NNH+JBAZ z7tiYI!>xvqu2K@5_8$*5)JkaaO1bF+2l2B|{(i8TQv4-foU!Ou*iTvM#T3SCW#Rrp z&1Q9=&~%F@sp!LhP3qm6{WYHCa*$lkrG^@bHDzz~0zYGSR62RjT?VO7YCgw2|DA3SERYZ>~7VRms&OBepy@oL0gV}Ml+I!wB>!zXy&B5peZla zmR}QYkCuzG>k6*r5>EA9x`bJ!8mkT0!%EDyz8WiF{jc)kr_bt~Uc<2qC&ggiGsObIc|$lb-+f18FqINU&tu=2V7lT2`#es$XGo9Q|u8Y}W| zo9Q~^+(A$LN}9ajZQ$%5Br0*&JU8?oHXqjSb%hhW#gSSik|@qx?5PsZD;e<6i~h^`1r zYv08npN~?=|FsO0!B5{P<(^$aYRr~ScSX~J+RU+uN&(mm&He9m_Yq!tU zD%d02@6nQzp3e%F8#wmSmb%7s;n4G=wLI%zxLtSnS8wUCu=a)VH_5AyLp5~V4K`k~ z@vfD}`rF*of-!SreS9Sz+|Pi#B#cx+mO4cig>pXlCY?9Vxg^4)-8u zCS|!hdeo&-^ITvL_o`jOeXc@}`hJ<~y6}~D)V*Kq8ue+VV7jb0w4z?E_!M4!ahO&; zHNSYz9JzMrCc?!owUeW&9ql_fi90xtn!4srX8TK;$uz!{*0<|wQeH`RpdEJnDkPR_ z4(LymYEHRLrD<3;sh6g%WobKImd+^CTt+@sra9c7ExYp{Ha7QF(T&aZFKgy*@5>AS zA?VU7p}C{4F!L47DfWq1G*@dsyrMb9-cqiaf#=Fc>7sDYQNn-9Cuvn~?^iVwU;64O z-E4%LEj;nZ_22`hc#x`u4CaRH)bRJSa2C}4n;#MHOI3@D>V!7=gOs8b++`~M|IVB2VO0F z`|em>)9>iaLjTssJy5mxUW>Ut}qF5lr&bi24T3D0uRSA2{%-inx7 zg-V3dccAYIpY6U;7YbLX5L7i@HyN(U!p&7fUD}4K(YnQWg}zvLqpH8I7*~shqg4ZR zRd7`azrb}ER}Tvz@6A{xm#EfIHSR5?{}||NXnAZYmB*HfvC1{ivi)y&)AznNQFBA9 z>z+a@GS}L{*`F&_8j}$H{*YKtjjK00!vFA+!vCNz3Y4YL8c(pi_v5r`#A=r@$ZVEqLt>)iwM<-{SS#tNB9Z&b^wE@7g=cw;kcy{}9ga z)m)*Bs?{u>^|hmP>@0`yYOUs^dPzInxVllgXq@+m7BcHJ!@XY@JAK=d0BPG2-Wrc5 zpCqXmRLm$6L%XMSDHV%fNnOFOq^_LB#2f#*q6#q|gpW`nvay#1oVm2t6I~^Ss!x^| zDT;9K2YobW^*ltLccmvHzx@1 z@!?=yGp;lX6F$7LpZvWN&P>dF<@`#_`n6HmZk6MB{KL_%*gp7Bb8&z9L!7C&N)N7& z{%BaR>#l@mJSMZk5i&oTq1s<;#)P*0Q}t`7=&RVCzslL`UQq79X%9W7Y|T$NMkik* zerqBZu4jPIbFM5dz>(^}NKEW_vjoF$fDmK$)xIc|_g}@Uud5tt>?(fnxd89Cgz@$L zE%N>1TPeP6YJt=K(NVhHsmFTY!qEm~>B~y`0is1pIV}h-OD!Wt zeqq-*s}X1Q)hmee4o{rEuB?1f-+#QEmEf0CU;b<0CIoJ}IuQ3U$rIQWcI3wslx0nq zN2m#CluAj(2L_>3_5M`uDMjVA&|^qj z_Up8Vu|l99y_$TqVLF{pD|;iVbew5Q?{wPrN9l@+u9-$2r7NnaO66T4oe_GWtah?D zhw|K%hfsOKuziEHhS%Hojnh@ZLzS?7-_S5uDZN79`1*&_w#5|T%)Vj&a0p>ldB^HD z^dZ^r(EXZQC3o&0r((77`ga-hXxu-{E|<#K6w&i=s4f?=2Kcu@#PB->Hp}JC}TPn=?k7n+l`;X?-^!0y6 z=?){@VIla4(mJiBe{P-gj{H;IzgDWQ`n9j~71G4%hdXX1Lprjnc&-T%2G%rkUQ?+TjL%I!c#@aB0GVPc_56{HbPo4uoR| z6NNsvFUH0QX8>#s-tii6+|nS-KRLd8*H>V|b0?>2 zwGzk4+h-aP#^`j~34TAUOaNS9AD&LQOKkPXkeuB-cXo^1*)8>C_lZ+Ov{Kl2%AA~x z6q21Q5ua7{s!t!dtB(?Q8}cp}1?P^NcgJnOLWkcwTqGM$tNibasLr#whQbJBf$jQRW)9y#gEvGe?v&T^6Ou~cD&aoH4P+lxS9V`i_DQJUy+x~5u5Q{UX8~XQ(*s59cD8Z& z+!vaC`|KB*kIpmC#_1YxFAaj_tmYVhua-mjc`<|QW+BCc4 z+ya;DqjSBqygJUs>7sC!IZ7Dtm1ZW^e5JWdaO5k^TkZb!C|wGoOA!*j)*LpU`dTyG zsjoF}weL5YmGQ4{G<_fZCQa)WW12H`S;Pw`*|s;&)ADeoIo4H3W29lOQP{Jb_x+na zG+~RRSu*D(%{v@&K2a;}ht3bzkaxd-K9#uE7eN=4=bVHK<6YXO3u9fb_uN;%zcAik zUZ51cd{WqaAw-z`ZAAascvB^x5~D{}e%@}Y{n&G4W%q_}{d{#c)R#@z{Nq@Q;@OC` zsp94W$6@6zpOxaRCR~w^aiv;$Yl@rbt4ZaMS;t*GJCDV)Pe;nW@tMQefmzg-Cp1aT zMtF8y3NJM0m)eA}tqXJqkedU-ldYO>sE)U4m6j0jlV(k<`AM@TcKxLJvUd2-OQYoZ zNo$v=^eGG`$XY8A_+JJJM}8jo53fP9;MvCuzd{gt{4ztMdWAcG(ahPKzl_pFAY6p- z)i0X8XL#G&w^=jF72xLbK^Y2V$3XPUFymErz;%`iMnbsz5b zFTb#j9ItpEfAPkDxVM-mO;Q@NkS08RafG|Y*#5S~)VtdVZ7~gQ(rz)$?(5nurVZCU zEv6{EwhVJOJ!~)U*Ujst+{FA#!(6+tN>7%*1|E+mzrU~L?S&>O12>l;ymv{|<-(OK z%>OkkSndq8T_~rw9{hFCpN>YYs=2SrQLCC?$7-(V3cYYX&+7rxi-8E34h*AL$6#ls3>AKXh{_g_Fk!;IP3T2}%lN-bVq*p9CGZN~VnuOs)> ze5S6xi#EF5ROvZv)US_H^*3JDe5vu!5X;VXlZcCx(|T50sOsoWdYZw2r>32$s4dee=v^a7=ixc13# zNc#u3CbV2Jx^|ni2JMCLSdL`Nz44=iU33eG9(H+rS2J3E-Zo{^=l_XNHQt&#rgtC~xdA)T5N*{aT|vpwa3R*q(k&xN8iV8#Y^iX|Nn9x#xnWRAhd zF>id;*gkHPq6#gYn!DiV+N zb2>t(x~5qQm#=9)S0rB7Y}t=$%SWy+{D(cY)JHpTN*6zE^r0uVW;rz%v(Gp++x``2 zsz%*Cdpps}-m@uF3Uhfm$ zfD!zv^14^t>_vJllUqyI`WVHZuUU@|SjoZs!V{$kA1~OJT3-Y9MA<`ao~rd2eem@* zpDi_)Z0pg2#yq67An}qH(Q3WoL~oKJ4;JFn-lUJKR%mWFBe#_``;gB;1%GKQ;t6jO zHcrkBdR8n}- zBg-4nRW^!W`4O%8OdP1!&eolJ?PL!AjsF0D?RakSC%35HzjUlF!cs1;cEYPkQXyV{ z7vghrL_Zc2MAsvIg=io!BgY2AZ6FvZ{#9k5N|Z{_+)I4qm!@8*j0vzs3o}$h;AA&PH)XH!@PU5!*T&MQb+_W?{}9TMmZg(T~gZ z#Cl8#rN=ksU2dp(h$}A>zvL0(J%tV3vo4OsdQ7`ij9u=*sJ@4OxB<^i#Ns9%-=LJc zm>5WI_l?%!jhc>q7%|-!TWh|`NAR%f#?P8Fbo4`ry*JPgBj$ng7m2%F z#87Z3O7K}f zS}{8YN_iY-|KeXJsTf-}dC!^ma%Q?9mFoaY5B&WA?DLg)!9?HgWZW!Ix%*=)*Y*4H z*oohL24z>3j9>2-r?6WuHqnf_x6yhV@$yncx5^VaF zh;`jbRFv$NzkJx!da=60oRFqB7ntg&ZAnAlk$w8~Aj3y`vOo{fx_cZ})p%=(L1UW_ z9~*$1VEt6Qtq187RE0FFd=sS$zFyJ=adQtcqgS~fR$hLdD)s^Uh+o3DB^=IhKc{`{ zbwh0=I|Z}&x&aL)@`(|V*k#651FlA0H`b0}S8u*<#MPcpMBu6sSB<#Z3me=C?CQkp zCS3J?A_!OGaWx)SeX;31pIsesJq1_WAHR;wn{d_S=M?YbNtkXnV7B-)Px|Om;7k$U zrq0E1E*6i%X-S7O9dXrOlZOoa>hM}A;(Fup-H0n2SF>@o;u?LVqOTrLUbErq^N*L~ zYA&wk;_8lT%I_5SU8~2{t&cy8tNFN^kE>5zQ+}$l`&t98=05%?t`_2IA#%Ao7`faA z*d|(n$=16z;&YfAGwJ*CDZcg9(YJ&fl~$%y>c{R%-Lg=*rXCOER)@dVQ|)(vzNU7y zLZPi%pWddlN^xCJGQl;jywej!A`da2_9R39re!pD85Ei^*-rLHZxJIy$N*JDBmaJY z>bOfiK;^CqkaG8I4Iy87{Y{FdE-9LjVhU1B5ufc%26qXf^dP-)K7uICmlA#lh9Cvv zcfHB5EGlJA3NWC~EjEwCP#FNUpE~%`m#b5Tn==O}nP2psyZgv1|wr_-!MY?5hE)#Wq$UI#EoCV?%>a@XW z6W^xJCODf!(wEHh?S!*4KwQ|D+@dpdLkAPzfUHY~Gg-Vwo!M|^i}U-D5xOEci^R?S z$b8)aI1h+t`XS|JIGaW92zX#qg*Y~Xj5W$P6>OblG~-s3`H@Rm zWi+4#7y@b8-Pa%GAs50+{mCX>Rv`A5#mF1T99sUF7JHMt>e$$CV;i_iZ*w z)wotIu8SnSbO+!(Aa0E$6Z*Ttqopb_#Rv98Oy}U`oG3+-{s#F1{UNRF3bx_|%Dl}f zCaE2s+5^QK1`@-d&>&2(L7d&d$q(Y3eFoQzq&xHI>DCxrjS*K4B&&UsgYfa{Aht>< z=#Ez1-7|$0!dGDsowR+{&{aY?xSVlkCS4`egX_?|SbEUBS7*?&F@a5tZ5gy|mVuWs-kCwmCL5g1xHN;7 zO+GlEad8GMn__S=48&LOm1mGHBT}f*Toc%%Ek{0&ZcPok7c{ z6Wqx-BZHO=j~n25nqhN>vVyv82szXz4HsbcQ~29v4K;azA!u&t(9*?8L&+3f5s$AR zi<^d$VY*^Ci^aEwlI1!Z?}bq>D4O)sHNn{=j*KP``*!laQYSC&iY5bf(ZRk_^q$Y7 zNsza$XgQ7JyAkL@MVM8K#2zuESHEJY#mnQ%4ES?^#Jt6fW^gb1Bvr+mV#t6o1@K$o z`kQ`q?CKpJUxw4qT~+(%8{De+bPUZgOX6e<2^pFaj6Z@9Oy}@XcetWv34WXsU$*5S zzXh{WCLPJUjU3zh6Vqv<%K&FEj!mbHE*G53cz8N(bVcAI#skx7qbmoOGwz#C8(lTH znsLu`G&+lP48k!c1flE?3GR%T|2m)@s-uI(dm(4eF)9qrPZ|2MSvq1|FBx! zA%9z|bUxbk;w#lfNWXU=&mjJES&tMqS0-c;tU0#|EGwJt3Eib3GLPIXRl`;XG4WD_v_Ok-B3c*iRI#Mly6TYjf_Fvp-Q?Fm#CLLh&3W zeq|*6{;St`c#RkPk0IknstYd6`k}_{rg}7S^B8oZ#i95@hPZzW8QVu4S}FEoL|!cR zh$VgIbiK^kznNQIsuYA=SG0`P18@oEPWso})LJRDQt`f6GTNdXj=54(gl{xo!C}iH z_Fd*}@UqSI_dAQ>E_S(DP`Ghy6>nu+k#ZaH=V$}C4jUfgSUCCyO!+&MoAnV`2FYymhml562g4wG*P>^612Obm%KK*#{kyhGEM@j)>Agker>K)>})xjQaFIZ$GbY z#s^aroo3PP#%tIk*cYIRTqd-nEDGRp6&nez!orF`DYhdu4ftq~N!NfK9Qv9@>;4jv z5k<$JM@90=y%T@>r$J?+_paPZLTVX46LhksY-(+3O>=EWX}Ix`JCwf&+Qnna`5JFD z_}A7df$19}f+Sc};_^5WHchK+rz1~_F6T)pcR5co(WIC!aZeoSKSuuZvThNrCL!e# zOFtFqE79RY`$%67rn`~Mx^XA!d}n5LDc!2AfV(2IgSl;R+cM+Js9ptkRpv(Ku7 z+SXY5$PhJA1~*iVy= zK{&>Q(<|7p4{m0Bd<7f!!R?F>u3*DHGOX`SGx*^OHtd5V7{9+lS!=vAo;;#6*xPE|L|MEJ0%%|5mX9L22ydetLTXDUWT|asqOXA+lL)&$_Ca&BN3J;;kP^kEO zJQg~v-o(KZ$cVWqP*cKc${s4iFTk!VX8>&1>BGgk4N4p7jn*Q!j$UxdZG*O1xrx!w z;>Znb#{}#l<|E2{@x%mdH?CcAA|dttIapS-H=($ z+J7V5jhP+H-2``2X8g;_piM_o`lndZkW`wuauNx-_ZQB3L3tmv(mtLBvJ=Vg45y83;d0sw z>cRDlZ&^-z!8!0b#xs}GUeE?^V?1>^?FBxF&!-O!KW;hg1>xXu#-ojfqVCMMjloc4k=a2n&@%V{sj0B11nzMS@gTyQR9-{rIy6oHEvUtgy5f&o)VFH0jX zH1=`YZ*?l|X`_?2r_J|im(pNXN^&*IBTm;+cDBi-{KbRX;dNcY*9S~XNOM(`_`wu1 zI8$yEypnD=r8C45ISWB?>o@b(V8zmgii} zyBY3gSM$CAH=Zw9(`|vf#nrr9;cj&`?>4yGT+O>3?snF^v0njqN9M*ZP2C%hh;mvq z-?9tsd$9f4Uua{Mla{MNPFi-$NsBv875xUgW1Tu4soB$m_ z%3vyuF71aWpnjh2Tn=C5eQ9@` zxrBD-I&dB1sY_^gZUQ$k9=C*c=T>kl<55d!cjgcu*N=uDvV?Z$P;e;Y8Y7s4NJ>t{% zr{R|_qQxBnj$oX+h!(dIY-F6Y2*rJyG#$cpCL}JR#l0B3nDN9#w79dtS&U;B(c;bn z=P@3>h!*!Y@HWN+7rBa??d6PIA+9o!fnJM#6dyH_7;)6iWVnuB6Cm;8@|#JYF`;mV zuEE2Ff46Y@o!BIhtUUBKFGOHf#yqc~eTrQXU%#1*oZE!tn)*BK-?-;^A2ueBxf_4y z8lyxfzJk|WW5fW!Av$gi?WR6(`LKxeaOv03E)@t@pct7%#;gd3GaNbL0!QLGwiOA$ z><^ky#W$deZ@@kv+%a&&?03Vx7;c#TF1YjIhS@_{h10#mcvj(`WhEh2#4J`OVgIxE z27(7MG6!2!jRP>P4DeKW6Jlt(fmT_|0$Sy5;5Nq13uu)G!hhfZdcA1@t#Sj{z_?)n zt@1c<9OJ_aXqC?f&t_b|fL8f3@G{2L3sB`2DH}pI6Ko4;mFI)=8Sh*`tGpOo%(!#` zt?~+R1>@ocw94zj^^A)asH^;i<;s(yH-~xLfO*`2UoqaKJnC`yDzHiFAA<`p`*W%b zY~2DqO`MiY<_t|YU_3J5gvJ`2&{#wFg%&IrE_GfPms0nlo6zgwd87DVGPyCb0L}uO zY^y_{I>dWmK^{IW!?6vrdR(g)yUisx`nJQ_ZV+eAB~h~?)}U9cA?8#wzPPypy@YXs z6dj3Iv61vM$lfc4OU+0xK{7%!M$&YDT3J+E=}qDBa*XEPup9;3otY}`rbMVLFnI#WI@(A?bGSPm%Tg7Wb0m^ zwR&^BV~?{Z%DxDGi^N5@;L*PV&I)n+Eo4qmBb<$hffa#x@fI@Fw;hSKM~XMhBjLUs zxZDvbPM(KJJ8B>{NW~rV$OheFI2VgyDR^^{4QIAED}}7{Egp!LIuL`?P|G01I!M(} z;i+jLZHNK4vW5z7W9)S+YpC!aIEY@qlFAw?*ueNwDr>0VIL1GuvW5zt&G>vOYpCF5 zjL)W`p-Q)AL&#>rsZ`cb!TF4jq_TzzE@r$hl{Hjw1>?P`tf7MI8NZvVOa*)9r87lg^(c->C6DQ{p=OI8q>@@)1)LS)rd!D#T??Eo;)FE3{fiomKW-^L zkVbCPWy6^*o=L;#zilu^KyknVvRQW+>S6KK1>|ELH-x_6TDy=e(Z$0VFaBpCxmCA# zh&PHnauIn!mk%{x{CE+0NmmDFop{G$GTOHt&h{bV^NUHEE@miQRQSp z6#4ZWU=3JGDEiv&Sl~q%SolKd>H0`vES`@v33B? z1L6a>c5;WePCpz|&Ypx-D4-G1!_k3;)6Vkbtd!ambe0HyBX(M2pvMfK zSjO4U%t9YQh!pYFyYS$&7|z9ej^0Hc^Va3UQ?9sZEq#LnXTE4z3m@Cy+$O%dmfWbT zhO=7yW-aNjI{@bak!0b;PXn9{;(#oaLI<23!^Pw*5~1@MLF@SLEJP6sXQ(K^$BfBv zP9Bkn9{yem7uYM@P=h~y2yHgg-h$SRX=%{Xm{taDKHst0R!jY|@S-ydo6Rhk*ynCM z=*el#xEpDi5zs8Iy_<|!Q2=Mbh$N&n%bnIXXxo@J#hq3uv{I&xg*FRm)w8rb;fF%^ z;W=}CEsw*@ILkm|5r3oURlr#x_PYlKQ3Yp}IN=^Lc*Qw5&#~;==P9?@0hJ>mC5r%5-sl4h}pAKXJC2XQfI;xWUexU1sQOLf>wp2Op9;&90f z#(Pd&)r;g_Wa zqHOHHc75B~j96gCJodi(0tg1eI~)XQ5o@zapNZN*in;_T!r~?xOM&P$saE<;+D-)T zj1jx9BjJ;@!!jf|%z(&4@Z+`@QVA|38K!JUjpC1SWwlXzr+A4L-!l1PX9C~y?x8xrYo9}kXa z+&hsD_sQU7#@!R?aBl{i8T%$G!+nqY$gm#O%du<7zA(mI;;j3~h`)%N@54q86%Z?Hb{Q_&Lp~hDJ#6y zkWSD6e!hVV>=}+FB!Vm!59N^lkxCHsu}Z~zsujnO-^Fekyp@Q$4dkW~f4T`A1dPY; zMLBy}n0&_Rv$=Y-jA{g^7Vq6aM$A#-<*kv(%o|C1eV=gpURBZQ--T_0_omSUasACC zY@fOp9?@*!F<}w5UyRs(5x?C)hDEw^U?uDeQ~r~bsN8ocj=moSV?+p}IOl$h(zD^5 zE#7@Urd*b)_`>~o6KRHO7Hg@8jd0?yCG{XzO}7WISylwKNF4nDJnV#Xr#SxscMO&X zkc2BT>OppX@BoHF*=hGU{WmJ=p3xgg52DM9^~c;f?LkcId1G+gPjo&=esekhcnGr{ zQ}?{{Fsbp<)f@e#`aO65i#!sjbsIT>up-%7XN za0X#3UDpMM&%U)~1~IE7p18F8d@>mPT~Ye9UH zR0N+zZl9$q@UCSAT|=kzLLFZS;pCMxUXA}Xt?B!aW)fL!O5X)XA{q!C5Ju?1Aqj=y|vQU@5G6?hhfY-?WsMa#<1C{aCVHYwu{X*01 zporOKY%U>tW zh@D<|d?#7qSGpn|WnC)%vJ)>TOIP3z+#^$qj2ZY`+Ibw%x!dqgB`w?!@QJVkK1ou{ z8m=W8Nyf0}LLBZf`{Oo^7{rZCAzow-^`$p6KLQEtAI@Qs{-x7sPDX}?OIgl%$2n&p z+>36TYcyB~O4~TjJ|z+#q7k2bgADfVC<~&+Q2hp0Y;|Z8b)xhJh8@;C#IQHXpor!& zz0_QmVBPP-wG8K?V-o_qqy2QCoDgo|n`G)-xrG#!aY6n_zPXm(5Hat=4ZSuXNot4B zc9bX=I0WH}P#8rkK|urX1^hWIlj+VW-+h6Mo^^IZK}m0tDegoMAW`o>Cpz&h65B6t zczuOSP~LfLUV&{d2;2GDb6MgFA#9j$cGCx@`ug z@>LTN3vR7&WiT29XOEva!$^PV7YE%_0No;zeB}}l|ERzS!dq>&C?*!)r z$1_eJTCVHgCdortu2&{mSH>=|`WkLFXJFyl-tTVfD(eFMA7Nx5t$I|v`0d+xPmnj3 zjwE5b$c9NRWrmlrvsvb!F<-bDy>uAHoBXXw*2G&s_n(Y9P)34(``;KElr>klcJCN8 ztL&$6s7*Yyi;S4(3G%r=@~jHr;|hSiMpSD{8U1MxG0!j#l$r@Pdq&|c7HveB7WCS4{11ibd!P~ad4zO)2FHHG%yAyBrP@TnF<1f76 z<9o?{Cn#e9zN1~&i9?pCvpn%?B^l7mQ%zp{Ya?APRUG{;=|7gX8E;pci8uapo0*F? zgI+CK-X#}D#^d(m(LlYqaC3vr&y0tTHDQ&DDi_&A8|GmUK5N(uKO2Oz6&RSCJlGj9cCViyysDA`|FkhR9CKd#ku%)^IaP(+7r!Hm|0c zBx%Uz8XO_h_drLF76P%{Nm-MCTg37Wn-?i!d2J;RoddZ53o~UM%kFf z4?e(?u-iFc^i>^t=}N9;2*yfG^D9%WePSmX7wB)JqZ=ESQZZ=IKNi9UVDYXG$)-Lm z{F*m!=dEF}yf6(9V@Z-6=d};Xm@$PbaS&=uAi~cuM&kIo@0h!d!||<#MYl~yEXnXX zQ#xF?$=EH!2ONl8t@w!GQ=I7M1sJt%)klWkjKKcrdyjoY_IPH+nf0V%d;xM*fS7|3 zGjCLKDUY5vfaQrI*h+$e!etzGtw5{K0x~TyJHql9Kild-c}zB zgExIbmIUX)Q{Gmmy$l0sE;5?C=Z#NDpZ{5h68jt?cZ@-z$ov@NK&-QA;&0;b5wgU$ zrdUmZ-l0AjJ_d6v{^UB!Cl8s*6W=*R9tg?X8U&ny*N97$0DC4JCg1DWGMI2!cm3ls zH~|Ys0;6Y)yDo!!V6yQngY^*!7}c>ovZ9A!OBQX5;V&;jnTNl8<)rANl&sNp@$M`aePs1 zAj7)lW3Y(kj7GZfJ=%bEk-VJct$zC6xOaI;cV%@77IIhSIqkW=Sm$C_N?Rl zu@04}m%IEsR^x)e*$?`gD_v9cN|RK+HBG={@m2#{gzZE#-626l*_enxs23brO-t}WQg1_ZXeK}#0q zV%5r-gYd7|`5BpsI}bvA&T1rs-FH3*cRm+)&DpsjLAdir8ZnH~x?eej)_qMQ9#-X5 z)R(woDM51@fo58=H5CWLY3B0L$mCw*9qP1)IOpQ#gJ6%Xj<(K{oR;_m&fYr2-2#kg zih;!#=<_kS6|tg=w#FwUrl8oj>aD@TX8!=y3UZ6Tcc_25zc9;KkH>>hi+_BeKV8=$ zQMLfL-!^o;0q@WxyhD@dGlL%j%g?Ixub|%yHy($V>o3rnnTl)5^O`?DOLeafx$IV-ta8TwHsa^qG{uvaJS1w~`iOhtv#rheX|SSE8}= zSox_R2k3K@+&(`#O~TkpBAq=3;dxE8pC)5my_7yP;_>thncu$0C%v+t%BUPJtg*dm``$LZ@`uVdE9ujM-&ykd z|7tScqx+Khd3pM2=vU-Ux#{k)d_`9O&t{}O6TTsfyqCz^53K0_aSlmF;RV9}`&LRa zswz+_-Shoxw2Q_5mV32(c^NF) zOviLpiru;Y^S(2Fv~~CXu0Q{rGv_?#InVii&U4QDzM`ssiHKu_H@@Uo#rH4KNc~G* zx>dJ_OCz_nq-HMRzYt0&IEsZ(@JD)g z_}s85d$Q^AO=@Y%PVe&Z$(oiitx07fmkDTMr@@lIs z`%nZFy3ObLCDR&gIRCOuGZso#ELJdXpT{}Qdb234r`;EDN}_oG;{rdK+G)cv`3ab) zUnf$hO^tr5KVjpt;b+>CtfatiGvlZM500Z@I}5froSvy z0*s~7du0*8gHRcpZA>%x4tnYvoR0O|A|Ptg6u+X_ZibF%{++B!aAP~w9Cup9QbB(-vzk(3 z84u38UCo+Nj)5D9@jjvs^8VEnzaZXjzV{Hzo-yUTx2P8#$kTov9U$?Xo8lcr)q;N3 z;%R+`_R$Rqp!YH>*neOYpC^9 zolfrW0(nL?0X`G7DTF+sYJ<0phO0;nybzbBsL1@LAq<%zvuNVDf<3%w#xgSmx*>B^ zZlS5g%4<|{Ii`vN-zG5>%?jFnbK;@N%^D}DHGhlFmJWl}VY49(*W8eo!ubD#%y+OBVG*3hiMSyRd*2UC)$U5g^gLxN3E z5vvUOc%(q-23&woo9(;0!8wr>M-9r_+@P$@DTA?8L*_vy)=?hTkd*nI=uNDp$6r^Q zltEkq5ztI>zq1ELq3>%*d{&!GsB}L@taLp_q-Z;pZna5cb#S59MQPd4dJOHRg5_*& zM}B=YF^sHJ$zIQcVI(P3rB7#Pr7!46N~F)uG+qw-Bdz4K)9fg613jZ7vsFV+t8wBQ z6-DB|O_Lc#R;Prt;(_;8*(xyBmS`}2sWM89m;k18DW>HnA#8@OR2p6xfurkJqsYxF z19CJ_Zxs1sL~=UI(O|*}gOp6)o=)OtC8vi;$>~qtYUv0yYV5E9mca&CM!%X)cB{qK zurw$Y)IEc&QTL=1tp;ZwCuWdks?Kx`l++kKX$KK*oulR7(34LDwV`zlp1w2CJqFUG z*I;QmFB=SVzRTin^em~30#+};C5|+wr*e7{^%ZV76ie9dB8`f#u+cXi_ zV=MB>t&W>cugoQ>@w*`EE<7p$)kyI{HJYXm=(Y6hToSD;#x#5$Nl@>qJ6Hi(>Ed~0 z=DZ;P$17Rxhgn1&`?_5j>gGyKc3dJ1q+m1{G~rw zK+O49D50QcB9F}0ieInRhQwJgm+eCXD`C^!mX~!J5?6637^0JZPY?d4FD)RcDlmft ze_B8i6P0x3zbyd=E#Po(J&-5Pi92#2M+zxtS0kbqlGG@LtoparXe8NB*CQB=SW%u@ zNK$5Iw(=GxmZe*z-GtYDDOA5-h>@#!Rg1{039<%Y^Y!LPVmbER_#1}1=D!&a6rX;u zh$IBWJG+Ra6(k7P^r2W}=q!C{LF1PIQbs62J zZqa?@0G@S{`8HhPTXPe+IjIHZX(`_Za~e}cd|gmRu+e7%thqvXJllK2YGch(>)E?%hm7 z7OXZd$+dy1tzgZPT*0c=>eZ$(`5EhNCX%!ajO6ZW>0Z2s7$@r(YnByOIlJg)eVq;B z=COeeRP7k^58GSdAI2kYPB-Y3-LO0X(8XzFSyDY{>sv3s!t#~Vwf4ZD zm^MA_#(*D8c=Dlz14kCJ{7m-LB_tL{{X$$sS}lhYjc-ThFO%nm)=1NI%=Wdg z!VG>5Md27!>|^*+DoVz2c*zTVDuYhe_9{^L?PF|Pd2k6yN|3!{ILkM2+6oN!9dAMl zc(YV$Ze6W~iH)9HLYAl$`V=z;rsBQBOyUFHCNqhNLPp4f7eg@*_m1I$HvN^E#AaO^ z+=Jkru@IwCYUA)6FXU2ma=*9U&n^yJOIzY)x6Sx;5;F~45haQ+*p0zpM^nDIkjnu=XMB zqtAbuc)V5=1w&DqU@S`0I5}%gS~-@Io=+#j{VH695blj)it)x}WWVP1tjRjTDoU@@ z8Oup~^gCG`n*N^>4rf0jwiGsd%KxktN=(nFCgMZ9H>DI71Qc{h`s z)m_NKNpTk2i~8a7XVLyFvQ!na5;u4~{w(4OQHv{eJ($&L`)X3Eid!k-(%@&SNjkh5 zDbAC)hSU&MIOxOaV|iplk^x@B%FZr_v)mMBe-uV|qtwME?`&IB-<2&Xg#22vCXl9Z zEqOiQ<@3p8*o2+?O~X-nhaFNt`h(l*KNOIufZsDzNcQt8JMyu6wiS~Yycigw)YH8s z#5LauuX82Gk%Qu%C~QGO^kGi&HrpbISXM7!i-B0o8r7v_US9LcC!o`;pED-4LrEyuFof!GfEb}8Ags%vH6K|F7`GA8ZOTQffU z*x!E2?=Qf!r=?OK^xeLdYhWvS|L@IOT)W(3z>B=X<5VV`Gx8HweCCEU7> z+z|XhcUws2v;i;~SgFF+`vdqspk50}RDFn)A9^(9q&B#(*<8V1IAtorWd%?5deY5D zG}}-Z8xHiKM_K5M4J1dU$K0&{}T(9U}cIr4RVW0TJ@Qbad1zvF{ zUY6_$zn#27Qmb4{butDvIaTOi%66TFv)u^`nRugAa=L8j*G~G$MiLX#;KE&57w$eq zi8yXthsmbF#dO;SI;{q}x)XvrX=x3)O}(Y4p&Ju1Jy=7URE-F4^enNG`*_u^A}D~K zU)7QgBs|-DziIm>$DLZ-!ilhxyVdFzR~}UL7TgylvFiOr?8kok(%s}w(}D$WsK99# zGJMQQp1TsbLk`3we-FW%5|Bfe$9)fZ2i53;)tqkFOx7nZgo3ZwRhl;uX`v%nU>42_ zypSH>Oy)0YLy9&RjOf}(Oe>ug__FA;a6wykp{nSH`$%HGB79KM{SM(#9M)QGa%(B_tMICs(PQk48G9HP zo6h&K8Dv4t|A!gd7ks-i(tnq{Q!sK~jTVQ@SU&c-n5ryi5>0LQlN-{n);X(jWnN!# zu<@1NgKREWYMu#>+Q*iQabW4Y?$&h3Z6WU_wBl`dm8q@ivT2v{f!W_#k;<9@})nW_G8t@)ca^lh3t88=mm{lj3IA@`?wgR$179OANwojNPI}f_#626#JwM6o%#*d2`8wW^!10xBj8;i z3t8Y0;VME}A>ehqJ>?IRnIww|tv{g{y;!k=W8?b@GZS4Z*Rl1KlT9x4l}AW^s*+u> zAS_F@=^wI_8(A(1jrlQoDv+;|s1vREf6ezHIbZ3=WLc9^g~5^WJyj^@TaUV_$4tmY z`~{tPph6kh1A&qK;#;`wsC@@9Cj&7j12Jwn=1u*-W7R0!!)xC#6hKd4OIk|WYP#nq zB>lz-J1k4~yWA;h|8~2sJ-HxMXR-34FPa#`o@GfQae$}L(91s|vzsndu)4m08DrW2 zr#0&HU{ui7tME6<`07U8_$5E*9o49?Bq>G+t+R8Z4zr197k8c%MJT^YVXEEL5fceH z5?9Iiah3Q4#rvE#0Y|N(93mp*zYsDj?q;JdZ6VXKz0k2|dB5I#*UmQVvi#mZe|(p_ z5W!ex>1&Nxg=7kPyb-&+MsEn_?Y}k>%I7Qf9JHHUZK~_K(>3+Xp0C`8K5(twgxO3! z{ux=%FTQG?fO-bgM4qYMaz-`~z%T&=0p~6JmQ~}nW|Fh$ACom$Fi+OKfz@zVo!`6n zqibvm^!LrADZ;8u?-Ofr$-qjhw~?%ze)R8t3`h=_a+LQnGa_a*XI2?23Sq*j*XF(1 z@GEPBRi0kiV3yO;kGEmsP`s&+k{FFMu<>!y@<+)#0b9kKpsixgzmP*b0*@T}`jGFa zQ8r-EvF)T^H&T=jdmP^8Q>3a_Gt1nYkC6=32$stc&-uqlJ3nKC{XYPW1YHKB1dbiRQyU0DuCa~a7umvA=jLoE;^Y#jC$((@f6E1l( z<9-a!O}rbDlE$U6eNPcoELIk27g?avLjb)es+}z3)oqpMaa_?x%YQ*0hUTlbhFili z?mZv`iM2li)9Y$>p(-kj}q(C|ytg-@BsQ4F2 z{QQ5Ct`hpQ4Js!+_yVbn^;Jfr;(V2%&~;zjzXln;S3U=4@Ih|hAw_{KMUFI#at+fB zFT$X88Q#li0>5{Ghy7jdDK#A{XWVQZS9vY{N6D_^g$d5@^}osfMtWw$z@)IHXI>;# zDn;h}y=2LCGLOBc$o$cftNHv>nUC)!u__~)*+|d98$VUaG`XqDYUI4)6qc|q-R%+9br8&yUOof z|C%ms=54d^4n1Z*(;|lDqOH;dLhOMMJAJoWR~Zrqr@K* zb-$z5ZoJp%{L#IR2bLS>Js9S3e@(tv-o&jFxWD=R{)KSi_^aSf!F9s@8t!hm7vXln z{RZwJ+`q&1!MzMuYr#PxTr=Fi!nMGC93m=AHDIO^BY^ZxgtXI)Tdtg8qK`rA=5BKZG2Hb^y%128^80 zD2EU`Psei{{wrip2gq5H02o(=l1vD zNG)fD`5H6489*j&J}cC)RG%W%r#{cbS>YKz@>3IjJP&jL`)JEKVRhK&VDmZH{e`2$ z=Y;u%eem`J1Hd3K1PlWsB022@tRneh9Bu=!1^$z8w*rmuj{?Z^3*`BQkLG?QY@TUH zRJ|yK+5zS|fd<FzyP6DIAI4}WR2Bwgn13~~%q>l5#<0-q~-wiwubO4Y+1b-3yMer7T z0Pq+4sQ!YmBoAyvu+e~x25dAUpat}R0f+;Pz+501SO}O!A+iP70iXzxyXcM!!kkDQ zXmp^_fktPdy)0~oNfc&)entk6Nlznej($`W^y9z;a2oK5!Yt6u0^Kao&B~;vzk)70 zQxu}Jfn1;fC=rF2eLyF$ALyc6Ko=R?Aquewk41Rwe!7o^#ls&Dn)oi@Fdb%L3B#h0 zFan$eMrp`Jge4&?31LYHOB$tS7IxDXQMhR<&Gv0muYQfEmaD^guG81>%5(04FvHi?iXm z1+W8+Km)J^*b0;Yw*yYV0#pH3pdQEt3Phpyf+#F$2DSq&zz(1d*d+?K5P$=8fEEw| zGhhN10{SK}@Bz;QNKm^QxC~5*f&;?T?gP4j{lEaw5A*&mN3tjs6#!sVWC2Wo8OQ{(feZkNi;zjt zEx_%76|e*KNIw_Q!`}>S2f)8*2havI0v*6^U=ZjNg{Go@cm@DSSA-H39R|99UZ4l? z0hfU(Q7Go%UVw`XisJwSun;f-nLq}R3m5?iQk)E!foz}vK%t5)KoxKcaJ#4$immY2 zsbNxB!w=J2CWYCv?c<_gp8!q+$ls3q?Z`JBd8M0a+oZ6($v%RxlfbAb+|dW195vuu z+YBJj8t|}zwQVb~9oPXh0xbZG16|!*V3#Ot3<0zV8w7>{@V0@sZ4?*+4dUwbfB}dD zjAD&Yr$eS7s_8|I?*l;Sm=c9MjX*YF1)70Q08H<^EDD>D;ieM63A6!S0OIO7AQ?bh IeFM<;KQr5(vH$=8 diff --git a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer index 27dd67c4ed92e59079d3c8a2e011af27806f4faf..2811e3bba160564e6b1ef347ed934d94e460d6af 100755 GIT binary patch delta 19691 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 diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index 03ed0a74f..402794ea7 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -409,8 +409,8 @@ int setQuad(int value); int getQuad(); int setInterruptSubframe(int value); int getInterruptSubframe(); -int setReadNLines(int value); -int getReadNLines(); +int setPartialReadout(int value); +int getPartialReadout(); #endif #if defined(CHIPTESTBOARDD) || defined(MOENCHD) || defined(EIGERD) || \ defined(MYTHEN3D) diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h index 65e2307f1..dcb25d26a 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h @@ -144,8 +144,8 @@ int set_quad(int); int get_quad(int); int set_interrupt_subframe(int); int get_interrupt_subframe(int); -int set_read_n_lines(int); -int get_read_n_lines(int); +int set_partial_readout(int); +int get_partial_readout(int); void calculate_and_set_position(); int set_detector_position(int); int check_detector_idle(); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 4294aa860..6db47e92a 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -273,8 +273,8 @@ void function_table() { flist[F_GET_QUAD] = &get_quad; flist[F_SET_INTERRUPT_SUBFRAME] = &set_interrupt_subframe; flist[F_GET_INTERRUPT_SUBFRAME] = &get_interrupt_subframe; - flist[F_SET_READ_N_LINES] = &set_read_n_lines; - flist[F_GET_READ_N_LINES] = &get_read_n_lines; + flist[F_SET_PARTIAL_READOUT] = &set_partial_readout; + flist[F_GET_PARTIAL_READOUT] = &get_partial_readout; flist[F_SET_POSITION] = &set_detector_position; flist[F_SET_SOURCE_UDP_MAC] = &set_source_udp_mac; flist[F_GET_SOURCE_UDP_MAC] = &get_source_udp_mac; @@ -4717,14 +4717,14 @@ int get_interrupt_subframe(int file_des) { return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); } -int set_read_n_lines(int file_des) { +int set_partial_readout(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); int arg = 0; if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0) return printSocketReadError(); - LOG(logINFO, ("Setting read n lines: %u\n", arg)); + LOG(logDEBUG1, ("Setting partial readout: %u\n", arg)); #ifndef EIGERD functionNotImplemented(); @@ -4734,7 +4734,7 @@ int set_read_n_lines(int file_des) { if (arg <= 0 || arg > MAX_ROWS_PER_READOUT) { ret = FAIL; sprintf(mess, - "Could not set number of lines readout. Must be between 1 " + "Could not set partial readout. Must be between 1 " "and %d\n", MAX_ROWS_PER_READOUT); LOG(logERROR, (mess)); @@ -4746,24 +4746,24 @@ int set_read_n_lines(int file_des) { if ((arg * maxnp) % maxnl) { ret = FAIL; sprintf(mess, - "Could not set %d number of lines readout. For %d bit " + "Could not set %d partial readout. For %d bit " "mode and 10 giga %s, (%d (num " - "lines) x %d (max num packets for this mode)) must be " + "rows) x %d (max num packets for this mode)) must be " "divisible by %d\n", arg, dr, isTenGiga ? "enabled" : "disabled", arg, maxnp, maxnl); LOG(logERROR, (mess)); } else { - if (setReadNLines(arg) == FAIL) { + if (setPartialReadout(arg) == FAIL) { ret = FAIL; - sprintf(mess, "Could not set read n lines to %d.\n", arg); + sprintf(mess, "Could not set partial readout to %d.\n", arg); LOG(logERROR, (mess)); } else { - int retval = getReadNLines(); + int retval = getPartialReadout(); if (arg != retval) { ret = FAIL; sprintf(mess, - "Could not set read n lines. Set %d, but " + "Could not set partial readout. Set %d, but " "read %d\n", retval, arg); LOG(logERROR, (mess)); @@ -4776,24 +4776,24 @@ int set_read_n_lines(int file_des) { return Server_SendResult(file_des, INT32, NULL, 0); } -int get_read_n_lines(int file_des) { +int get_partial_readout(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); int retval = -1; - LOG(logDEBUG1, ("Getting read n lines\n")); + LOG(logDEBUG1, ("Getting partial readout\n")); #ifndef EIGERD functionNotImplemented(); #else // get only - retval = getReadNLines(); + retval = getPartialReadout(); if (retval == -1) { ret = FAIL; - sprintf(mess, "Could not get read n lines. \n"); + sprintf(mess, "Could not get partial readout. \n"); LOG(logERROR, (mess)); } else { - LOG(logDEBUG1, ("Read N Lines retval: %u\n", retval)); + LOG(logDEBUG1, ("Partial readout retval: %u\n", retval)); } #endif return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); @@ -7126,9 +7126,9 @@ int get_receiver_parameters(int file_des) { if (n < 0) return printSocketReadError(); - // readnlines + // partialReadout #ifdef EIGERD - i32 = getReadNLines(); + i32 = getPartialReadout(); #else i32 = 0; #endif diff --git a/slsDetectorSoftware/src/CmdProxy.h b/slsDetectorSoftware/src/CmdProxy.h index e12f65d71..3192afc5b 100644 --- a/slsDetectorSoftware/src/CmdProxy.h +++ b/slsDetectorSoftware/src/CmdProxy.h @@ -716,6 +716,7 @@ class CmdProxy { {"rx_datastream", "rx_zmqstream"}, /* Eiger Specific */ + {"readnlines", "partialread"}, {"resmat", "partialreset"}, /* Jungfrau Specific */ @@ -914,7 +915,7 @@ class CmdProxy { {"subdeadtime", &CmdProxy::subdeadtime}, {"overflow", &CmdProxy::overflow}, {"ratecorr", &CmdProxy::RateCorrection}, - {"readnlines", &CmdProxy::readnlines}, + {"partialread", &CmdProxy::partialread}, {"interruptsubframe", &CmdProxy::interruptsubframe}, {"measuredperiod", &CmdProxy::measuredperiod}, {"measuredsubperiod", &CmdProxy::measuredsubperiod}, @@ -1809,7 +1810,7 @@ class CmdProxy { "32 bit mode. Default is disabled."); INTEGER_COMMAND_VEC_ID( - readnlines, getPartialReadout, setPartialReadout, StringTo, + partialread, getPartialReadout, setPartialReadout, StringTo, "[1 - 256]\n\t[Eiger] Number of rows to readout per half module " "starting from the centre. Options: 0 - 256. 256 is default. The " "permissible values depend on dynamic range and 10Gbe enabled."); diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index dea352e8d..1efbfb6d0 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1373,11 +1373,11 @@ void Detector::updateRxRateCorrections() { } Result Detector::getPartialReadout(Positions pos) const { - return pimpl->Parallel(&Module::getReadNLines, pos); + return pimpl->Parallel(&Module::getPartialReadout, pos); } void Detector::setPartialReadout(const int lines, Positions pos) { - pimpl->Parallel(&Module::setReadNLines, pos, lines); + pimpl->Parallel(&Module::setPartialReadout, pos, lines); } Result Detector::getInterruptSubframe(Positions pos) const { diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index f44af4bea..cd3ebf98e 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -1469,14 +1469,14 @@ void Module::sendReceiverRateCorrections(const std::vector &t) { } } -int Module::getReadNLines() const { - return sendToDetector(F_GET_READ_N_LINES); +int Module::getPartialReadout() const { + return sendToDetector(F_GET_PARTIAL_READOUT); } -void Module::setReadNLines(const int value) { - sendToDetector(F_SET_READ_N_LINES, value, nullptr); +void Module::setPartialReadout(const int value) { + sendToDetector(F_SET_PARTIAL_READOUT, value, nullptr); if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_READ_N_LINES, value, nullptr); + sendToReceiver(F_SET_RECEIVER_PARTIAL_READOUT, value, nullptr); } } diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index 22abf7a94..f2509b644 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -337,8 +337,8 @@ class Module : public virtual slsDetectorDefs { void setDefaultRateCorrection(); void setRateCorrection(int64_t t = 0); void sendReceiverRateCorrections(const std::vector &t); - int getReadNLines() const; - void setReadNLines(const int value); + int getPartialReadout() const; + void setPartialReadout(const int value); bool getInterruptSubframe() const; void setInterruptSubframe(const bool enable); int64_t getMeasuredPeriod() const; diff --git a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp index 0e5ff1e38..00074fe85 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp @@ -374,7 +374,7 @@ TEST_CASE("ratecorr", "[.cmd]") { } } -TEST_CASE("readnlines", "[.cmd]") { +TEST_CASE("partialread", "[.cmd]") { Detector det; CmdProxy proxy(&det); auto det_type = det.getDetectorType().squash(); @@ -382,25 +382,25 @@ TEST_CASE("readnlines", "[.cmd]") { auto prev_val = det.getPartialReadout(); { std::ostringstream oss; - proxy.Call("readnlines", {"256"}, -1, PUT, oss); - REQUIRE(oss.str() == "readnlines 256\n"); + proxy.Call("partialread", {"256"}, -1, PUT, oss); + REQUIRE(oss.str() == "partialread 256\n"); } { std::ostringstream oss; - proxy.Call("readnlines", {}, -1, GET, oss); - REQUIRE(oss.str() == "readnlines 256\n"); + proxy.Call("partialread", {}, -1, GET, oss); + REQUIRE(oss.str() == "partialread 256\n"); } { std::ostringstream oss; - proxy.Call("readnlines", {"16"}, -1, PUT, oss); - REQUIRE(oss.str() == "readnlines 16\n"); + proxy.Call("partialread", {"16"}, -1, PUT, oss); + REQUIRE(oss.str() == "partialread 16\n"); } - REQUIRE_THROWS(proxy.Call("readnlines", {"0"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("partialread", {"0"}, -1, PUT)); for (int i = 0; i != det.size(); ++i) { det.setPartialReadout(prev_val[i], {i}); } } else { - REQUIRE_THROWS(proxy.Call("readnlines", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("partialread", {}, -1, GET)); } } diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index 4dc63e33f..2980fd0ee 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -187,7 +187,7 @@ int ClientInterface::functionTable(){ flist[F_SET_RECEIVER_DBIT_OFFSET] = &ClientInterface::set_dbit_offset; flist[F_GET_RECEIVER_DBIT_OFFSET] = &ClientInterface::get_dbit_offset; flist[F_SET_RECEIVER_QUAD] = &ClientInterface::set_quad_type; - flist[F_SET_RECEIVER_READ_N_LINES] = &ClientInterface::set_read_n_lines; + flist[F_SET_RECEIVER_PARTIAL_READOUT] = &ClientInterface::set_partial_readout; flist[F_SET_RECEIVER_UDP_IP] = &ClientInterface::set_udp_ip; flist[F_SET_RECEIVER_UDP_IP2] = &ClientInterface::set_udp_ip2; flist[F_SET_RECEIVER_UDP_PORT] = &ClientInterface::set_udp_port; @@ -224,6 +224,7 @@ int ClientInterface::functionTable(){ int ClientInterface::decodeFunction(Interface &socket) { ret = FAIL; socket.Receive(fnum); + socket.setFnum(fnum); if (fnum <= NUM_DET_FUNCTIONS || fnum >= NUM_REC_FUNCTIONS) { throw RuntimeError("Unrecognized Function enum " + std::to_string(fnum) + "\n"); @@ -413,7 +414,7 @@ int ClientInterface::setup_receiver(Interface &socket) { std::to_string(arg.quad) + " due to fifo strucutre memory allocation"); } - impl()->setReadNLines(arg.numLinesReadout); + impl()->setPartialReadout(arg.partialReadout); impl()->setThresholdEnergy(arg.thresholdEnergyeV[0]); } if (myDetectorType == MYTHEN3) { @@ -1403,16 +1404,16 @@ int ClientInterface::set_quad_type(Interface &socket) { return socket.Send(OK); } -int ClientInterface::set_read_n_lines(Interface &socket) { +int ClientInterface::set_partial_readout(Interface &socket) { auto arg = socket.Receive(); if (arg >= 0) { verifyIdle(socket); - LOG(logDEBUG1) << "Setting Read N Lines:" << arg; - impl()->setReadNLines(arg); + LOG(logDEBUG1) << "Setting Partial Readout:" << arg; + impl()->setPartialReadout(arg); } - int retval = impl()->getReadNLines(); - validate(arg, retval, "set read n lines", DEC); - LOG(logDEBUG1) << "read n lines retval:" << retval; + int retval = impl()->getPartialReadout(); + validate(arg, retval, "set partial readout", DEC); + LOG(logDEBUG1) << "read partial readout:" << retval; return socket.Send(OK); } diff --git a/slsReceiverSoftware/src/ClientInterface.h b/slsReceiverSoftware/src/ClientInterface.h index 113bc77a8..00338acb6 100644 --- a/slsReceiverSoftware/src/ClientInterface.h +++ b/slsReceiverSoftware/src/ClientInterface.h @@ -138,7 +138,7 @@ class ClientInterface : private virtual slsDetectorDefs { int set_dbit_offset(sls::ServerInterface &socket); int get_dbit_offset(sls::ServerInterface &socket); int set_quad_type(sls::ServerInterface &socket); - int set_read_n_lines(sls::ServerInterface &socket); + int set_partial_readout(sls::ServerInterface &socket); sls::MacAddr setUdpIp(sls::IpAddr arg); int set_udp_ip(sls::ServerInterface &socket); sls::MacAddr setUdpIp2(sls::IpAddr arg); diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index 719ca8eb7..43c4fd0be 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -477,8 +477,8 @@ std::vector Implementation::getNumMissingPackets() const { int np = generalData->packetsPerFrame; uint64_t totnp = np; // partial readout - if (numLinesReadout != MAX_EIGER_ROWS_PER_READOUT) { - totnp = ((numLinesReadout * np) / MAX_EIGER_ROWS_PER_READOUT); + if (partialReadout != MAX_EIGER_ROWS_PER_READOUT) { + totnp = ((partialReadout * np) / MAX_EIGER_ROWS_PER_READOUT); } totnp *= numberOfTotalFrames; mp[i] = listener[i]->GetNumMissingPacket(stoppedFlag, totnp); @@ -765,7 +765,7 @@ void Implementation::SetupWriter() { masterAttributes->subExptime = subExpTime; masterAttributes->subPeriod = subPeriod; masterAttributes->quad = quadEnable; - masterAttributes->numLinesReadout = numLinesReadout; + masterAttributes->partialReadout = partialReadout; masterAttributes->ratecorr = rateCorrections; masterAttributes->adcmask = tengigaEnable ? adcEnableMaskTenGiga : adcEnableMaskOneGiga; @@ -1533,11 +1533,11 @@ void Implementation::setDeactivatedPadding(bool enable) { << (deactivatedPaddingEnable ? "enabled" : "disabled"); } -int Implementation::getReadNLines() const { return numLinesReadout; } +int Implementation::getPartialReadout() const { return partialReadout; } -void Implementation::setReadNLines(const int value) { - numLinesReadout = value; - LOG(logINFO) << "Number of Lines to readout: " << numLinesReadout; +void Implementation::setPartialReadout(const int value) { + partialReadout = value; + LOG(logINFO) << "Partial readout (#rows): " << partialReadout; } void Implementation::setThresholdEnergy(const int value) { diff --git a/slsReceiverSoftware/src/Implementation.h b/slsReceiverSoftware/src/Implementation.h index b711c68d2..3d7bd1e8b 100644 --- a/slsReceiverSoftware/src/Implementation.h +++ b/slsReceiverSoftware/src/Implementation.h @@ -218,9 +218,9 @@ class Implementation : private virtual slsDetectorDefs { bool getDeactivatedPadding() const; /* [Eiger] */ void setDeactivatedPadding(const bool enable); - int getReadNLines() const; + int getPartialReadout() const; /* [Eiger] */ - void setReadNLines(const int value); + void setPartialReadout(const int value); /** [Eiger] */ void setThresholdEnergy(const int value); void setThresholdEnergy(const std::array value); @@ -352,7 +352,7 @@ class Implementation : private virtual slsDetectorDefs { bool activated{true}; std::array detectorDataStream = {{true, true}}; bool deactivatedPaddingEnable{true}; - int numLinesReadout{MAX_EIGER_ROWS_PER_READOUT}; + int partialReadout{MAX_EIGER_ROWS_PER_READOUT}; int thresholdEnergyeV{-1}; std::array thresholdAllEnergyeV = {{-1, -1, -1}}; std::vector rateCorrections; diff --git a/slsReceiverSoftware/src/MasterAttributes.h b/slsReceiverSoftware/src/MasterAttributes.h index 14ecb1849..d68c5c0cd 100644 --- a/slsReceiverSoftware/src/MasterAttributes.h +++ b/slsReceiverSoftware/src/MasterAttributes.h @@ -37,7 +37,7 @@ struct MasterAttributes { ns subExptime{0}; ns subPeriod{0}; uint32_t quad{0}; - uint32_t numLinesReadout; + uint32_t partialReadout; std::vector ratecorr; uint32_t adcmask{0}; uint32_t analog{0}; @@ -373,7 +373,7 @@ class EigerMasterAttributes : public MasterAttributes { << "SubPeriod : " << sls::ToString(subPeriod) << '\n' << "Quad : " << quad << '\n' - << "Number of Lines read out : " << numLinesReadout << '\n' + << "Partial Readout (rows) : " << partialReadout << '\n' << "Rate Corrections : " << sls::ToString(ratecorr) << '\n'; std::string message = oss.str(); @@ -427,12 +427,12 @@ class EigerMasterAttributes : public MasterAttributes { group->createDataSet("Quad", PredType::NATIVE_INT, dataspace); dataset.write(&quad, PredType::NATIVE_INT); } - // numLinesReadout + // partialReadout { DataSpace dataspace = DataSpace(H5S_SCALAR); DataSet dataset = group->createDataSet( - "Number of Lines read out", PredType::NATIVE_INT, dataspace); - dataset.write(&numLinesReadout, PredType::NATIVE_INT); + "Partial readout (rows)", PredType::NATIVE_INT, dataspace); + dataset.write(&partialReadout, PredType::NATIVE_INT); } // Rate corrections { diff --git a/slsSupportLib/include/sls/DataSocket.h b/slsSupportLib/include/sls/DataSocket.h index 3bfce8779..6a5eba8bb 100644 --- a/slsSupportLib/include/sls/DataSocket.h +++ b/slsSupportLib/include/sls/DataSocket.h @@ -25,6 +25,8 @@ class DataSocket { DataSocket(const DataSocket &) = delete; DataSocket &operator=(DataSocket const &) = delete; int getSocketId() const { return sockfd_; } + int getFnum() const { return fnum_; } + int setFnum(const int fnum); int Send(const void *buffer, size_t size); @@ -82,6 +84,7 @@ class DataSocket { private: int sockfd_ = -1; + int fnum_ {0}; }; }; // namespace sls diff --git a/slsSupportLib/include/sls/sls_detector_defs.h b/slsSupportLib/include/sls/sls_detector_defs.h index 61a3fd419..9848ceb96 100644 --- a/slsSupportLib/include/sls/sls_detector_defs.h +++ b/slsSupportLib/include/sls/sls_detector_defs.h @@ -518,7 +518,7 @@ typedef struct { int dataStreamLeft{0}; int dataStreamRight{0}; int quad{0}; - int numLinesReadout{0}; + int partialReadout{0}; int thresholdEnergyeV[3]{0, 0, 0}; int dynamicRange{16}; timingMode timMode{AUTO_TIMING}; diff --git a/slsSupportLib/include/sls/sls_detector_funcs.h b/slsSupportLib/include/sls/sls_detector_funcs.h index 22cdbb37b..0c1cf104d 100755 --- a/slsSupportLib/include/sls/sls_detector_funcs.h +++ b/slsSupportLib/include/sls/sls_detector_funcs.h @@ -124,8 +124,8 @@ enum detFuncs { F_GET_QUAD, F_SET_INTERRUPT_SUBFRAME, F_GET_INTERRUPT_SUBFRAME, - F_SET_READ_N_LINES, - F_GET_READ_N_LINES, + F_SET_PARTIAL_READOUT, + F_GET_PARTIAL_READOUT, F_SET_POSITION, F_SET_SOURCE_UDP_MAC, F_GET_SOURCE_UDP_MAC, @@ -326,7 +326,7 @@ enum detFuncs { F_SET_RECEIVER_DBIT_OFFSET, F_GET_RECEIVER_DBIT_OFFSET, F_SET_RECEIVER_QUAD, - F_SET_RECEIVER_READ_N_LINES, + F_SET_RECEIVER_PARTIAL_READOUT, F_SET_RECEIVER_UDP_IP, F_SET_RECEIVER_UDP_IP2, F_SET_RECEIVER_UDP_PORT, @@ -477,8 +477,8 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case F_GET_QUAD: return "F_GET_QUAD"; case F_SET_INTERRUPT_SUBFRAME: return "F_SET_INTERRUPT_SUBFRAME"; case F_GET_INTERRUPT_SUBFRAME: return "F_GET_INTERRUPT_SUBFRAME"; - case F_SET_READ_N_LINES: return "F_SET_READ_N_LINES"; - case F_GET_READ_N_LINES: return "F_GET_READ_N_LINES"; + case F_SET_PARTIAL_READOUT: return "F_SET_PARTIAL_READOUT"; + case F_GET_PARTIAL_READOUT: return "F_GET_PARTIAL_READOUT"; case F_SET_POSITION: return "F_SET_POSITION"; case F_SET_SOURCE_UDP_MAC: return "F_SET_SOURCE_UDP_MAC"; case F_GET_SOURCE_UDP_MAC: return "F_GET_SOURCE_UDP_MAC"; @@ -677,7 +677,7 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case F_SET_RECEIVER_DBIT_OFFSET: return "F_SET_RECEIVER_DBIT_OFFSET"; case F_GET_RECEIVER_DBIT_OFFSET: return "F_GET_RECEIVER_DBIT_OFFSET"; case F_SET_RECEIVER_QUAD: return "F_SET_RECEIVER_QUAD"; - case F_SET_RECEIVER_READ_N_LINES: return "F_SET_RECEIVER_READ_N_LINES"; + case F_SET_RECEIVER_PARTIAL_READOUT: return "F_SET_RECEIVER_PARTIAL_READOUT"; case F_SET_RECEIVER_UDP_IP: return "F_SET_RECEIVER_UDP_IP"; case F_SET_RECEIVER_UDP_IP2: return "F_SET_RECEIVER_UDP_IP2"; case F_SET_RECEIVER_UDP_PORT: return "F_SET_RECEIVER_UDP_PORT"; diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index beabadba6..6c1d76616 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -4,10 +4,10 @@ #define APIRECEIVER 0x210225 #define APIGUI 0x210225 -#define APICTB 0x210812 -#define APIGOTTHARD 0x210812 -#define APIGOTTHARD2 0x210812 -#define APIJUNGFRAU 0x210812 -#define APIMYTHEN3 0x210812 -#define APIMOENCH 0x210812 -#define APIEIGER 0x210812 +#define APICTB 0x210813 +#define APIGOTTHARD 0x210813 +#define APIGOTTHARD2 0x210813 +#define APIJUNGFRAU 0x210813 +#define APIMYTHEN3 0x210813 +#define APIMOENCH 0x210813 +#define APIEIGER 0x210813 diff --git a/slsSupportLib/src/ClientSocket.cpp b/slsSupportLib/src/ClientSocket.cpp index 055273d4c..827e0f840 100644 --- a/slsSupportLib/src/ClientSocket.cpp +++ b/slsSupportLib/src/ClientSocket.cpp @@ -63,6 +63,7 @@ int ClientSocket::sendCommandThenRead(int fnum, const void *args, size_t retval_size) { int ret = slsDetectorDefs::FAIL; Send(&fnum, sizeof(fnum)); + setFnum(fnum); Send(args, args_size); readReply(ret, retval, retval_size); return ret; diff --git a/slsSupportLib/src/DataSocket.cpp b/slsSupportLib/src/DataSocket.cpp index 1f5241422..6314317bd 100644 --- a/slsSupportLib/src/DataSocket.cpp +++ b/slsSupportLib/src/DataSocket.cpp @@ -1,5 +1,6 @@ #include "sls/DataSocket.h" #include "sls/logger.h" +#include "sls/sls_detector_funcs.h" #include "sls/sls_detector_exceptions.h" #include #include @@ -41,6 +42,10 @@ DataSocket &DataSocket::operator=(DataSocket &&move) noexcept { return *this; } +int DataSocket::setFnum(const int fnum) { + fnum_ = fnum; +} + int DataSocket::Receive(void *buffer, size_t size) { // TODO!(Erik) Add sleep? how many reties? int bytes_expected = static_cast(size); // signed size @@ -58,7 +63,7 @@ int DataSocket::Receive(void *buffer, size_t size) { } else { std::ostringstream ss; ss << "TCP socket read " << bytes_read << " bytes instead of " - << bytes_expected << " bytes"; + << bytes_expected << " bytes (" << getFunctionNameFromEnum(static_cast(fnum_)) << ')'; throw sls::SocketError(ss.str()); } } @@ -83,7 +88,7 @@ int DataSocket::Send(const void *buffer, size_t size) { if (bytes_sent != data_size) { std::ostringstream ss; ss << "TCP socket sent " << bytes_sent << " bytes instead of " - << data_size << " bytes"; + << data_size << " bytes (" << getFunctionNameFromEnum(static_cast(fnum_)) << ')'; throw sls::SocketError(ss.str()); } return bytes_sent; diff --git a/slsSupportLib/src/ToString.cpp b/slsSupportLib/src/ToString.cpp index d20debaf8..6686b3256 100644 --- a/slsSupportLib/src/ToString.cpp +++ b/slsSupportLib/src/ToString.cpp @@ -55,7 +55,7 @@ std::string ToString(const slsDetectorDefs::rxParameters &r) { << "leftDataStream:" << r.dataStreamLeft << std::endl << "rightDataStream:" << r.dataStreamRight << std::endl << "quad:" << r.quad << std::endl - << "numLinesReadout:" << r.numLinesReadout << std::endl + << "partialReadout:" << r.partialReadout << std::endl << "thresholdEnergyeV:" << ToString(r.thresholdEnergyeV) << std::endl << "dynamicRange:" << r.dynamicRange << std::endl << "timMode:" << r.timMode << std::endl From 2548a0bfec7bb0a6d0355a9e9b40fcc172d51a25 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 13 Aug 2021 12:35:22 +0200 Subject: [PATCH 2/8] updated client api --- slsSupportLib/include/sls/versionAPI.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index 6c1d76616..0756a632f 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -1,8 +1,5 @@ /** API versions */ -#define GITBRANCH "developer" -#define APILIB 0x210225 -#define APIRECEIVER 0x210225 -#define APIGUI 0x210225 +#define GITBRANCH "j10partial" #define APICTB 0x210813 #define APIGOTTHARD 0x210813 @@ -11,3 +8,6 @@ #define APIMYTHEN3 0x210813 #define APIMOENCH 0x210813 #define APIEIGER 0x210813 +#define APILIB 0x210813 +#define APIRECEIVER 0x210813 +#define APIGUI 0x210813 From 5790e4961b04da6f2cbb11bcea8777916e9fa095 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 13 Aug 2021 17:10:46 +0200 Subject: [PATCH 3/8] wip --- python/slsdet/detector.py | 8 ++- slsDetectorGui/src/qTabSettings.cpp | 1 - .../slsDetectorServer_defs.h | 1 + .../jungfrauDetectorServer/RegisterDefs.h | 9 +++ .../slsDetectorFunctionList.c | 62 +++++++++++++++++-- .../slsDetectorServer_defs.h | 3 + .../include/slsDetectorFunctionList.h | 2 + .../src/slsDetectorServer_funcs.c | 20 ++++-- slsDetectorSoftware/include/sls/Detector.h | 18 +++--- slsDetectorSoftware/src/CmdProxy.h | 16 ++--- slsDetectorSoftware/src/Detector.cpp | 16 ++--- slsDetectorSoftware/src/Module.cpp | 22 +++---- slsDetectorSoftware/src/Module.h | 5 +- .../tests/test-CmdProxy-eiger.cpp | 30 --------- slsDetectorSoftware/tests/test-CmdProxy.cpp | 37 +++++++++++ slsReceiverSoftware/src/ClientInterface.cpp | 7 ++- slsReceiverSoftware/src/GeneralData.h | 3 + slsReceiverSoftware/src/Implementation.cpp | 4 +- slsReceiverSoftware/src/Implementation.h | 4 +- slsReceiverSoftware/src/MasterAttributes.h | 10 ++- slsReceiverSoftware/src/receiver_defs.h | 1 - slsSupportLib/include/sls/DataSocket.h | 2 +- slsSupportLib/src/DataSocket.cpp | 2 +- 23 files changed, 192 insertions(+), 91 deletions(-) diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index f614c712f..35c2ac9f9 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -1848,11 +1848,13 @@ class Detector(CppDetectorApi): @element def partialread(self): """ - [Eiger] Number of rows to read out per half module + [Eiger] Number of rows to read out per half module starting from the centre. + [Jungfrau] Number of rows to read per module starting from the centre. Note ---- - Options: 0 - 256. 256 is default. \n - The permissible values depend on dynamic range and 10Gbe enabled. + [Eiger] Options: 1 - 256. 256 is default. \n + [Eiger]The permissible values depend on dynamic range and 10Gbe enabled.\n\n + [Jungfrau] Options: 8 - 512 (multiples of 8) """ return self.getPartialReadout() diff --git a/slsDetectorGui/src/qTabSettings.cpp b/slsDetectorGui/src/qTabSettings.cpp index 677b1864b..158cd6de1 100644 --- a/slsDetectorGui/src/qTabSettings.cpp +++ b/slsDetectorGui/src/qTabSettings.cpp @@ -473,7 +473,6 @@ void qTabSettings::Refresh() { GetThresholdEnergies(); // eiger else if (spinThreshold->isEnabled()) { - LOG(logINFOBLUE) << "calling it!"; GetThresholdEnergy(); } diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h index a4c350c68..4cccd8768 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h @@ -120,6 +120,7 @@ enum MASTERINDEX { MASTER_HARDWARE, OW_MASTER, OW_SLAVE }; #define MAX_TRIMBITS_VALUE (63) +#define MIN_ROWS_PER_READOUT (1) #define MAX_ROWS_PER_READOUT (256) #define MAX_PACKETS_PER_REQUEST (256) diff --git a/slsDetectorServers/jungfrauDetectorServer/RegisterDefs.h b/slsDetectorServers/jungfrauDetectorServer/RegisterDefs.h index c6c0eae69..287c438d8 100644 --- a/slsDetectorServers/jungfrauDetectorServer/RegisterDefs.h +++ b/slsDetectorServers/jungfrauDetectorServer/RegisterDefs.h @@ -167,6 +167,15 @@ #define ADC_PORT_INVERT_ADC_3_OFST (24) #define ADC_PORT_INVERT_ADC_3_MSK (0x000000FF << ADC_PORT_INVERT_ADC_3_OFST) +/** Partial Readout Register */ +#define PARTIAL_READOUT_REG (0x44 << MEM_MAP_SHIFT) + +#define PARTIAL_READOUT_NUM_ROWS_OFST (0) +#define PARTIAL_READOUT_NUM_ROWS_MSK (0x0000003F << PARTIAL_READOUT_NUM_ROWS_OFST) +#define PARTIAL_READOUT_ENBL_OFST (7) +#define PARTIAL_READOUT_ENBL_MSK (0x00000001 << PARTIAL_READOUT_ENBL_OFST) + + /* Configuration Register */ #define CONFIG_REG (0x4D << MEM_MAP_SHIFT) diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index 5116f0529..ecc2ad3de 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -480,6 +480,7 @@ void setupDetector() { setFilterCell(DEFAULT_FILTER_CELL); } disableCurrentSource(); + setPartialReadout(MAX_ROWS_PER_READOUT); } int resetToDefaultDacs(int hardReset) { @@ -1596,6 +1597,39 @@ int *getDetectorPosition() { return detPos; } /* jungfrau specific - powerchip, autocompdisable, asictimer, clockdiv, pll, * flashing fpga */ +int setPartialReadout(int value) { + if (value < 0 || (value % PARTIAL_READOUT_MULTIPLE != 0)) + return FAIL; + + // regval is numpackets - 1 + int regval = (value / PARTIAL_READOUT_MULTIPLE) - 1; + uint32_t addr = PARTIAL_READOUT_REG; + LOG(logINFO, ("Setting Partial Readout: %d (regval:%d)\n", value, regval)); + bus_w(addr, bus_r(addr) &~PARTIAL_READOUT_NUM_ROWS_MSK); + bus_w(addr, bus_r(addr) | ((regval << PARTIAL_READOUT_NUM_ROWS_OFST) & PARTIAL_READOUT_NUM_ROWS_MSK)); + + if (value == MAX_ROWS_PER_READOUT) { + LOG(logINFO, ("Disabling Partial Readout\n")); + bus_w(addr, bus_r(addr) &~PARTIAL_READOUT_ENBL_MSK); + } else { + LOG(logINFO, ("Enabling Partial Readout\n")); + bus_w(addr, bus_r(addr) | PARTIAL_READOUT_ENBL_MSK); + } + return OK; +} + +int getPartialReadout() { + int enable = (bus_r(PARTIAL_READOUT_REG) & PARTIAL_READOUT_ENBL_MSK); + int regval = ((bus_r(PARTIAL_READOUT_REG) & PARTIAL_READOUT_NUM_ROWS_MSK) >> PARTIAL_READOUT_NUM_ROWS_OFST); + + int maxRegval = (MAX_ROWS_PER_READOUT/ PARTIAL_READOUT_MULTIPLE) - 1; + if ((regval == maxRegval && enable) || (regval != maxRegval && !enable)) { + return -1; + } + + return (regval + 1) * PARTIAL_READOUT_MULTIPLE; +} + void initReadoutConfiguration() { LOG(logINFO, ("Initializing Readout Configuration:\n" @@ -2263,6 +2297,8 @@ void *start_timer(void *arg) { return NULL; } + int transmissionDelayUs = getTransmissionDelayFrame() * 1000; + int numInterfaces = getNumberofUDPInterfaces(); int64_t periodNs = getPeriod(); int numFrames = (getNumFrames() * getNumTriggers() * @@ -2271,17 +2307,36 @@ void *start_timer(void *arg) { const int npixels = 256 * 256 * 8; const int dataSize = 8192; const int packetsize = dataSize + sizeof(sls_detector_header); - const int packetsPerFrame = numInterfaces == 1 ? 128 : 64; - int transmissionDelayUs = getTransmissionDelayFrame() * 1000; + int maxPacketsPerFrame = 128; + int maxRows = MAX_ROWS_PER_READOUT; + if (numInterfaces == 2) { + maxPacketsPerFrame /= 2; + maxRows /= 2; + } + int partialReadout = getPartialReadout(); + if (partialReadout == -1) { + partialReadout = MAX_ROWS_PER_READOUT; + } + const int packetsPerFrame = (maxPacketsPerFrame * partialReadout) / maxRows; + + //LOG(logINFOBLUE, ("packetsperframe:%d numFrames:%d partial:%d maxpacketsperframe:%d maxrows:%d \n", packetsPerFrame, numFrames, partialReadout, maxPacketsPerFrame, maxRows)); + + // starting packet number + //const int startPnum = (128 / 2) - () // Generate data char imageData[DATA_BYTES]; memset(imageData, 0, DATA_BYTES); + const int pixelsPerPacket = dataSize / 2; + int pixelVal = 0; for (int i = 0; i < npixels; ++i) { // avoiding gain also being divided when gappixels enabled in call // back + if (i > 0 && i % pixelsPerPacket == 0) { + ++pixelVal; + } *((uint16_t *)(imageData + i * sizeof(uint16_t))) = - virtual_image_test_mode ? 0x0FFE : (uint16_t)i; + virtual_image_test_mode ? 0x0FFE : (uint16_t)pixelVal; } // Send data @@ -2289,7 +2344,6 @@ void *start_timer(void *arg) { uint64_t frameNr = 0; getNextFrameNumber(&frameNr); for (int iframes = 0; iframes != numFrames; ++iframes) { - usleep(transmissionDelayUs); // check if manual stop diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h index 8d29fe307..c07c2a330 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorServer_defs.h @@ -114,6 +114,9 @@ enum CLKINDEX { RUN_CLK, ADC_CLK, DBIT_CLK, NUM_CLOCKS }; #define DAC_MIN_MV (0) #define DAC_MAX_MV (2500) #define MAX_FILTER_CELL_VAL (12) +#define MIN_ROWS_PER_READOUT (8) +#define MAX_ROWS_PER_READOUT (512) +#define PARTIAL_READOUT_MULTIPLE (8) //512 rows/128packets * 2 interfaces /* Defines in the Firmware */ #define MAX_TIMESLOT_VAL (0x1F) diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index 402794ea7..e793fbf35 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -449,6 +449,8 @@ void setDigitalIODelay(uint64_t pinMask, int delay); // jungfrau specific - powerchip, autocompdisable, clockdiv, asictimer, clock, // pll, flashing firmware #ifdef JUNGFRAUD +int setPartialReadout(int value); +int getPartialReadout(); void initReadoutConfiguration(); int powerChip(int on); int isChipConfigured(); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 6db47e92a..ab76904c5 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -4726,7 +4726,7 @@ int set_partial_readout(int file_des) { return printSocketReadError(); LOG(logDEBUG1, ("Setting partial readout: %u\n", arg)); -#ifndef EIGERD +#if !defined(EIGERD) && !defined(JUNGFRAUD) functionNotImplemented(); #else // only set @@ -4734,11 +4734,12 @@ int set_partial_readout(int file_des) { if (arg <= 0 || arg > MAX_ROWS_PER_READOUT) { ret = FAIL; sprintf(mess, - "Could not set partial readout. Must be between 1 " + "Could not set partial readout. Must be between %d " "and %d\n", - MAX_ROWS_PER_READOUT); + MIN_ROWS_PER_READOUT, MAX_ROWS_PER_READOUT); LOG(logERROR, (mess)); } else { +#ifdef EIGERD int dr = setDynamicRange(GET_FLAG); int isTenGiga = enableTenGigabitEthernet(GET_FLAG); unsigned int maxnl = MAX_ROWS_PER_READOUT; @@ -4753,7 +4754,16 @@ int set_partial_readout(int file_des) { arg, dr, isTenGiga ? "enabled" : "disabled", arg, maxnp, maxnl); LOG(logERROR, (mess)); - } else { + } else +#elif JUNGFRAU + if (arg % PARTIAL_READOUT_MULTIPLE != 0) { + ret = FAIL; + sprintf(mess, + "Could not set %d partial readout. %d must be a multiple of %d\n", arg, PARTIAL_READOUT_MULTIPLE); + LOG(logERROR, (mess)); + } else +#endif + { if (setPartialReadout(arg) == FAIL) { ret = FAIL; sprintf(mess, "Could not set partial readout to %d.\n", arg); @@ -4783,7 +4793,7 @@ int get_partial_readout(int file_des) { LOG(logDEBUG1, ("Getting partial readout\n")); -#ifndef EIGERD +#if !defined(EIGERD) && !defined(JUNGFRAUD) functionNotImplemented(); #else // get only diff --git a/slsDetectorSoftware/include/sls/Detector.h b/slsDetectorSoftware/include/sls/Detector.h index 37790f857..5615fd8bb 100644 --- a/slsDetectorSoftware/include/sls/Detector.h +++ b/slsDetectorSoftware/include/sls/Detector.h @@ -509,6 +509,15 @@ class Detector { /** [CTB] Options: 0-255 \n [Gotthard2] Options: 0-7 */ void setDBITPipeline(int value, Positions pos = {}); + /** [Eiger][Jungfrau] */ + Result getPartialReadout(Positions pos = {}) const; + + /** [Eiger] Number of lines to read out per half module + * Options: 0 - 256. 256 is default. The permissible values depend on + * dynamic range and 10Gbe enabled. \n[Jungfrau] Number of rows per module starting from the centre. Options: 8 - 512, must be multiples of 8. Default is 512. + */ + void setPartialReadout(const int lines, Positions pos = {}); + ///@{ /** @name Acquisition */ @@ -1048,15 +1057,6 @@ class Detector { */ void setRateCorrection(ns dead_time, Positions pos = {}); - /** [Eiger] */ - Result getPartialReadout(Positions pos = {}) const; - - /** [Eiger] Number of lines to read out per half module - * Options: 0 - 256. 256 is default. The permissible values depend on - * dynamic range and 10Gbe enabled. - */ - void setPartialReadout(const int lines, Positions pos = {}); - /** [Eiger] */ Result getInterruptSubframe(Positions pos = {}) const; diff --git a/slsDetectorSoftware/src/CmdProxy.h b/slsDetectorSoftware/src/CmdProxy.h index 3192afc5b..7bd0ab759 100644 --- a/slsDetectorSoftware/src/CmdProxy.h +++ b/slsDetectorSoftware/src/CmdProxy.h @@ -593,6 +593,7 @@ class CmdProxy { {"vhighvoltage", "highvoltage"}, {"digitest", "imagetest"}, {"filter", "filterresistor"}, + {"readnlines", "partialread"}, /** temperature */ @@ -716,7 +717,6 @@ class CmdProxy { {"rx_datastream", "rx_zmqstream"}, /* Eiger Specific */ - {"readnlines", "partialread"}, {"resmat", "partialreset"}, /* Jungfrau Specific */ @@ -807,6 +807,7 @@ class CmdProxy { {"filterresistor", &CmdProxy::filterresistor}, {"currentsource", &CmdProxy::CurrentSource}, {"dbitpipeline", &CmdProxy::dbitpipeline}, + {"partialread", &CmdProxy::partialread}, /** temperature */ {"templist", &CmdProxy::templist}, @@ -915,7 +916,6 @@ class CmdProxy { {"subdeadtime", &CmdProxy::subdeadtime}, {"overflow", &CmdProxy::overflow}, {"ratecorr", &CmdProxy::RateCorrection}, - {"partialread", &CmdProxy::partialread}, {"interruptsubframe", &CmdProxy::interruptsubframe}, {"measuredperiod", &CmdProxy::measuredperiod}, {"measuredsubperiod", &CmdProxy::measuredsubperiod}, @@ -1369,6 +1369,12 @@ class CmdProxy { "clock for latching digital bits.\n\t[Gotthard2] " "Options: 0-7\n\t[CTB] Options: 0-255"); + INTEGER_COMMAND_VEC_ID( + partialread, getPartialReadout, setPartialReadout, StringTo, + "[1 - 256]\n\t[Eiger] Number of rows to readout per half module " + "starting from the centre. Options: 0 - 256. 256 is default. The " + "permissible values depend on dynamic range and 10Gbe enabled.\n[8-512 (multiple of 8)]\n\t[Jungfrau] Number of rows per module starting from the centre. Options: 8 - 512, must be multiples of 8. Default is 512."); + /** temperature */ GET_COMMAND_NOID( templist, getTemperatureList, @@ -1809,12 +1815,6 @@ class CmdProxy { "[0, 1]\n\t[Eiger] Enable or disable show overflow flag in " "32 bit mode. Default is disabled."); - INTEGER_COMMAND_VEC_ID( - partialread, getPartialReadout, setPartialReadout, StringTo, - "[1 - 256]\n\t[Eiger] Number of rows to readout per half module " - "starting from the centre. Options: 0 - 256. 256 is default. The " - "permissible values depend on dynamic range and 10Gbe enabled."); - INTEGER_COMMAND_VEC_ID( interruptsubframe, getInterruptSubframe, setInterruptSubframe, StringTo, diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 1efbfb6d0..bd75817fd 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -732,6 +732,14 @@ void Detector::setDBITPipeline(int value, Positions pos) { pimpl->Parallel(&Module::setDBITPipeline, pos, value); } +Result Detector::getPartialReadout(Positions pos) const { + return pimpl->Parallel(&Module::getPartialReadout, pos); +} + +void Detector::setPartialReadout(const int lines, Positions pos) { + pimpl->Parallel(&Module::setPartialReadout, pos, lines); +} + // Acquisition void Detector::acquire() { pimpl->acquire(); } @@ -1372,14 +1380,6 @@ void Detector::updateRxRateCorrections() { } } -Result Detector::getPartialReadout(Positions pos) const { - return pimpl->Parallel(&Module::getPartialReadout, pos); -} - -void Detector::setPartialReadout(const int lines, Positions pos) { - pimpl->Parallel(&Module::setPartialReadout, pos, lines); -} - Result Detector::getInterruptSubframe(Positions pos) const { return pimpl->Parallel(&Module::getInterruptSubframe, pos); } diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index cd3ebf98e..fbff82223 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -734,6 +734,17 @@ void Module::setDBITPipeline(int value) { sendToDetector(F_SET_DBIT_PIPELINE, value, nullptr); } +int Module::getPartialReadout() const { + return sendToDetector(F_GET_PARTIAL_READOUT); +} + +void Module::setPartialReadout(const int value) { + sendToDetector(F_SET_PARTIAL_READOUT, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_PARTIAL_READOUT, value, nullptr); + } +} + // Acquisition void Module::startReceiver() { @@ -1469,17 +1480,6 @@ void Module::sendReceiverRateCorrections(const std::vector &t) { } } -int Module::getPartialReadout() const { - return sendToDetector(F_GET_PARTIAL_READOUT); -} - -void Module::setPartialReadout(const int value) { - sendToDetector(F_SET_PARTIAL_READOUT, value, nullptr); - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_PARTIAL_READOUT, value, nullptr); - } -} - bool Module::getInterruptSubframe() const { return sendToDetector(F_GET_INTERRUPT_SUBFRAME); } diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index f2509b644..f53f40168 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -178,7 +178,8 @@ class Module : public virtual slsDetectorDefs { void setCurrentSource(defs::currentSrcParameters par); int getDBITPipeline() const; void setDBITPipeline(int value); - + int getPartialReadout() const; + void setPartialReadout(const int value); /************************************************** * * * Acquisition * @@ -337,8 +338,6 @@ class Module : public virtual slsDetectorDefs { void setDefaultRateCorrection(); void setRateCorrection(int64_t t = 0); void sendReceiverRateCorrections(const std::vector &t); - int getPartialReadout() const; - void setPartialReadout(const int value); bool getInterruptSubframe() const; void setInterruptSubframe(const bool enable); int64_t getMeasuredPeriod() const; diff --git a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp index 00074fe85..7482c30d0 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp @@ -374,36 +374,6 @@ TEST_CASE("ratecorr", "[.cmd]") { } } -TEST_CASE("partialread", "[.cmd]") { - Detector det; - CmdProxy proxy(&det); - auto det_type = det.getDetectorType().squash(); - if (det_type == defs::EIGER) { - auto prev_val = det.getPartialReadout(); - { - std::ostringstream oss; - proxy.Call("partialread", {"256"}, -1, PUT, oss); - REQUIRE(oss.str() == "partialread 256\n"); - } - { - std::ostringstream oss; - proxy.Call("partialread", {}, -1, GET, oss); - REQUIRE(oss.str() == "partialread 256\n"); - } - { - std::ostringstream oss; - proxy.Call("partialread", {"16"}, -1, PUT, oss); - REQUIRE(oss.str() == "partialread 16\n"); - } - REQUIRE_THROWS(proxy.Call("partialread", {"0"}, -1, PUT)); - for (int i = 0; i != det.size(); ++i) { - det.setPartialReadout(prev_val[i], {i}); - } - } else { - REQUIRE_THROWS(proxy.Call("partialread", {}, -1, GET)); - } -} - TEST_CASE("interruptsubframe", "[.cmd]") { Detector det; CmdProxy proxy(&det); diff --git a/slsDetectorSoftware/tests/test-CmdProxy.cpp b/slsDetectorSoftware/tests/test-CmdProxy.cpp index 4aaa3421b..919b6098f 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy.cpp @@ -1494,6 +1494,43 @@ TEST_CASE("dbitpipeline", "[.cmd]") { } } +TEST_CASE("partialread", "[.cmd]") { + Detector det; + CmdProxy proxy(&det); + auto det_type = det.getDetectorType().squash(); + if (det_type == defs::EIGER || det_type == defs::JUNGFRAU) { + auto prev_val = det.getPartialReadout(); + { + std::ostringstream oss; + proxy.Call("partialread", {"256"}, -1, PUT, oss); + REQUIRE(oss.str() == "partialread 256\n"); + } + { + std::ostringstream oss; + proxy.Call("partialread", {}, -1, GET, oss); + REQUIRE(oss.str() == "partialread 256\n"); + } + { + std::ostringstream oss; + proxy.Call("partialread", {"16"}, -1, PUT, oss); + REQUIRE(oss.str() == "partialread 16\n"); + } + if (det_type == defs::JUNGFRAU) { + REQUIRE_THROWS(proxy.Call("partialread", {"7"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("partialread", {"20"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("partialread", {"44"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("partialread", {"513"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("partialread", {"1"}, -1, PUT)); + } + REQUIRE_THROWS(proxy.Call("partialread", {"0"}, -1, PUT)); + for (int i = 0; i != det.size(); ++i) { + det.setPartialReadout(prev_val[i], {i}); + } + } else { + REQUIRE_THROWS(proxy.Call("partialread", {}, -1, GET)); + } +} + TEST_CASE("currentsource", "[.cmd]") { Detector det; CmdProxy proxy(&det); diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index 2980fd0ee..7ebe53533 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -414,9 +414,11 @@ int ClientInterface::setup_receiver(Interface &socket) { std::to_string(arg.quad) + " due to fifo strucutre memory allocation"); } - impl()->setPartialReadout(arg.partialReadout); impl()->setThresholdEnergy(arg.thresholdEnergyeV[0]); } + if (myDetectorType == EIGER || myDetectorType == JUNGFRAU) { + impl()->setPartialReadout(arg.partialReadout); + } if (myDetectorType == MYTHEN3) { std::array val; for (int i = 0; i < 3; ++i) { @@ -1408,6 +1410,9 @@ int ClientInterface::set_partial_readout(Interface &socket) { auto arg = socket.Receive(); if (arg >= 0) { verifyIdle(socket); + if (myDetectorType != EIGER && myDetectorType != JUNGFRAU) { + throw RuntimeError("Could not set partial readout. Not implemented for this detector"); + } LOG(logDEBUG1) << "Setting Partial Readout:" << arg; impl()->setPartialReadout(arg); } diff --git a/slsReceiverSoftware/src/GeneralData.h b/slsReceiverSoftware/src/GeneralData.h index 975cdd8bd..4e577b08d 100644 --- a/slsReceiverSoftware/src/GeneralData.h +++ b/slsReceiverSoftware/src/GeneralData.h @@ -51,6 +51,7 @@ class GeneralData { uint32_t vetoPacketSize{0}; uint32_t vetoImageSize{0}; uint32_t vetoHsize{0}; + uint32_t maxRowsPerReadout{0}; GeneralData(){}; virtual ~GeneralData(){}; @@ -339,6 +340,7 @@ class EigerData : public GeneralData { threadsPerReceiver = 2; headerPacketSize = 40; standardheader = true; + maxRowsPerReadout = 256; }; /** @@ -384,6 +386,7 @@ class JungfrauData : public GeneralData { defaultFifoDepth = 2500; standardheader = true; defaultUdpSocketBufferSize = (1000 * 1024 * 1024); + maxRowsPerReadout = 512; }; /** diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index 43c4fd0be..65e725beb 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -477,8 +477,8 @@ std::vector Implementation::getNumMissingPackets() const { int np = generalData->packetsPerFrame; uint64_t totnp = np; // partial readout - if (partialReadout != MAX_EIGER_ROWS_PER_READOUT) { - totnp = ((partialReadout * np) / MAX_EIGER_ROWS_PER_READOUT); + if (partialReadout != generalData->maxRowsPerReadout) { + totnp = ((partialReadout * np) / generalData->maxRowsPerReadout); } totnp *= numberOfTotalFrames; mp[i] = listener[i]->GetNumMissingPacket(stoppedFlag, totnp); diff --git a/slsReceiverSoftware/src/Implementation.h b/slsReceiverSoftware/src/Implementation.h index 3d7bd1e8b..75d23392e 100644 --- a/slsReceiverSoftware/src/Implementation.h +++ b/slsReceiverSoftware/src/Implementation.h @@ -219,7 +219,7 @@ class Implementation : private virtual slsDetectorDefs { /* [Eiger] */ void setDeactivatedPadding(const bool enable); int getPartialReadout() const; - /* [Eiger] */ + /* [Eiger][Jungfrau] */ void setPartialReadout(const int value); /** [Eiger] */ void setThresholdEnergy(const int value); @@ -352,7 +352,7 @@ class Implementation : private virtual slsDetectorDefs { bool activated{true}; std::array detectorDataStream = {{true, true}}; bool deactivatedPaddingEnable{true}; - int partialReadout{MAX_EIGER_ROWS_PER_READOUT}; + int partialReadout{0}; int thresholdEnergyeV{-1}; std::array thresholdAllEnergyeV = {{-1, -1, -1}}; std::vector rateCorrections; diff --git a/slsReceiverSoftware/src/MasterAttributes.h b/slsReceiverSoftware/src/MasterAttributes.h index d68c5c0cd..fd3a14d3f 100644 --- a/slsReceiverSoftware/src/MasterAttributes.h +++ b/slsReceiverSoftware/src/MasterAttributes.h @@ -336,7 +336,8 @@ class JungfrauMasterAttributes : public MasterAttributes { oss << MasterAttributes::GetBinaryMasterAttributes() << "Exptime : " << sls::ToString(exptime) << '\n' << "Period : " << sls::ToString(period) << '\n' - << "Number of UDP Interfaces : " << numUDPInterfaces << '\n'; + << "Number of UDP Interfaces : " << numUDPInterfaces << '\n' + << "Partial Readout (rows) : " << partialReadout << '\n'; std::string message = oss.str(); MasterAttributes::WriteBinaryAttributes(fd, message); }; @@ -352,6 +353,13 @@ class JungfrauMasterAttributes : public MasterAttributes { "Number of UDP Interfaces", PredType::NATIVE_INT, dataspace); dataset.write(&numUDPInterfaces, PredType::NATIVE_INT); } + // partialReadout + { + DataSpace dataspace = DataSpace(H5S_SCALAR); + DataSet dataset = group->createDataSet( + "Partial readout (rows)", PredType::NATIVE_INT, dataspace); + dataset.write(&partialReadout, PredType::NATIVE_INT); + } }; #endif }; diff --git a/slsReceiverSoftware/src/receiver_defs.h b/slsReceiverSoftware/src/receiver_defs.h index fa46fbef8..f70ac5025 100755 --- a/slsReceiverSoftware/src/receiver_defs.h +++ b/slsReceiverSoftware/src/receiver_defs.h @@ -43,7 +43,6 @@ // parameters to calculate fifo depth #define SAMPLE_TIME_IN_NS (100000000) // 100ms -#define MAX_EIGER_ROWS_PER_READOUT (256) // to differentiate between gotthard and short gotthard #define GOTTHARD_PACKET_SIZE (1286) diff --git a/slsSupportLib/include/sls/DataSocket.h b/slsSupportLib/include/sls/DataSocket.h index 6a5eba8bb..79022cb17 100644 --- a/slsSupportLib/include/sls/DataSocket.h +++ b/slsSupportLib/include/sls/DataSocket.h @@ -26,7 +26,7 @@ class DataSocket { DataSocket &operator=(DataSocket const &) = delete; int getSocketId() const { return sockfd_; } int getFnum() const { return fnum_; } - int setFnum(const int fnum); + void setFnum(const int fnum); int Send(const void *buffer, size_t size); diff --git a/slsSupportLib/src/DataSocket.cpp b/slsSupportLib/src/DataSocket.cpp index 6314317bd..09c20ebda 100644 --- a/slsSupportLib/src/DataSocket.cpp +++ b/slsSupportLib/src/DataSocket.cpp @@ -42,7 +42,7 @@ DataSocket &DataSocket::operator=(DataSocket &&move) noexcept { return *this; } -int DataSocket::setFnum(const int fnum) { +void DataSocket::setFnum(const int fnum) { fnum_ = fnum; } From 5f8dc7a7f0dc0ccf0353ee30f6cb6722a93dbc7b Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 16 Aug 2021 14:30:47 +0200 Subject: [PATCH 4/8] fixes --- .../slsDetectorFunctionList.c | 118 ++++++++++-------- .../src/slsDetectorServer_funcs.c | 12 +- slsDetectorSoftware/src/Detector.cpp | 3 +- slsReceiverSoftware/src/DataStreamer.cpp | 4 +- slsReceiverSoftware/src/Listener.cpp | 2 +- slsSupportLib/src/ZmqSocket.cpp | 2 +- 6 files changed, 82 insertions(+), 59 deletions(-) diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index ecc2ad3de..fed28014b 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -2304,39 +2304,35 @@ void *start_timer(void *arg) { int numFrames = (getNumFrames() * getNumTriggers() * (getNumAdditionalStorageCells() + 1)); int64_t expUs = getExpTime() / 1000; - const int npixels = 256 * 256 * 8; const int dataSize = 8192; const int packetsize = dataSize + sizeof(sls_detector_header); - int maxPacketsPerFrame = 128; - int maxRows = MAX_ROWS_PER_READOUT; - if (numInterfaces == 2) { - maxPacketsPerFrame /= 2; - maxRows /= 2; - } + const int maxPacketsPerFrame = 128; + const int maxRows = MAX_ROWS_PER_READOUT; int partialReadout = getPartialReadout(); if (partialReadout == -1) { + LOG(logERROR, + ("partial readout is -1. Assuming no partial readout.\n")); partialReadout = MAX_ROWS_PER_READOUT; } - const int packetsPerFrame = (maxPacketsPerFrame * partialReadout) / maxRows; - - //LOG(logINFOBLUE, ("packetsperframe:%d numFrames:%d partial:%d maxpacketsperframe:%d maxrows:%d \n", packetsPerFrame, numFrames, partialReadout, maxPacketsPerFrame, maxRows)); - - // starting packet number - //const int startPnum = (128 / 2) - () + const int packetsPerFrame = + ((maxPacketsPerFrame / 2) * partialReadout) / (maxRows / 2); // Generate data char imageData[DATA_BYTES]; memset(imageData, 0, DATA_BYTES); - const int pixelsPerPacket = dataSize / 2; - int pixelVal = 0; - for (int i = 0; i < npixels; ++i) { - // avoiding gain also being divided when gappixels enabled in call - // back - if (i > 0 && i % pixelsPerPacket == 0) { - ++pixelVal; + { + const int npixels = (NCHAN * NCHIP); + const int pixelsPerPacket = dataSize / NUM_BYTES_PER_PIXEL; + int pixelVal = 0; + for (int i = 0; i < npixels; ++i) { + // avoiding gain also being divided when gappixels enabled in call + // back + if (i > 0 && i % pixelsPerPacket == 0) { + ++pixelVal; + } + *((uint16_t *)(imageData + i * sizeof(uint16_t))) = + virtual_image_test_mode ? 0x0FFE : (uint16_t)pixelVal; } - *((uint16_t *)(imageData + i * sizeof(uint16_t))) = - virtual_image_test_mode ? 0x0FFE : (uint16_t)pixelVal; } // Send data @@ -2359,47 +2355,71 @@ void *start_timer(void *arg) { int srcOffset = 0; int srcOffset2 = DATA_BYTES / 2; - // loop packet - for (int i = 0; i != packetsPerFrame; ++i) { - // set header - char packetData[packetsize]; - memset(packetData, 0, packetsize); - sls_detector_header *header = - (sls_detector_header *)(packetData); - header->detType = (uint16_t)myDetectorType; - header->version = SLS_DETECTOR_HEADER_VERSION - 1; - header->frameNumber = frameNr + iframes; - header->packetNumber = i; - header->modId = 0; - header->row = detPos[2]; - header->column = detPos[3]; + // loop packet (128 packets) + for (int i = 0; i != maxPacketsPerFrame; ++i) { - // fill data - memcpy(packetData + sizeof(sls_detector_header), - imageData + srcOffset, dataSize); - srcOffset += dataSize; + // send out only the partial packets + if (partialReadout != MAX_ROWS_PER_READOUT) { + // get the mid point + const int startval = + (maxPacketsPerFrame / 2) - (packetsPerFrame / 2); + const int endval = startval + packetsPerFrame - 1; + LOG(logINFOBLUE, + ("packetsperframe:%d startval:%d endval:%d'\n", + packetsPerFrame, startval, endval)); + // skip sending out this packet + if (i < startval || i > endval) { + continue; + } + } + int pnum = i; - sendUDPPacket(0, packetData, packetsize); - - // second interface - char packetData2[packetsize]; - memset(packetData2, 0, packetsize); - if (numInterfaces == 2) { - header = (sls_detector_header *)(packetData2); + // first interface + if (numInterfaces == 1 || i < (maxPacketsPerFrame / 2)) { + char packetData[packetsize]; + memset(packetData, 0, packetsize); + sls_detector_header *header = + (sls_detector_header *)(packetData); header->detType = (uint16_t)myDetectorType; header->version = SLS_DETECTOR_HEADER_VERSION - 1; header->frameNumber = frameNr + iframes; - header->packetNumber = i; + header->packetNumber = pnum; header->modId = 0; header->row = detPos[0]; header->column = detPos[1]; + // fill data + memcpy(packetData + sizeof(sls_detector_header), + imageData + srcOffset, dataSize); + + sendUDPPacket(0, packetData, packetsize); + srcOffset += dataSize; + LOG(logDEBUG1, ("Sent packet: %d [interface 0]\n", i)); + } + + // second interface + else if (numInterfaces == 2 && i >= (maxPacketsPerFrame / 2)) { + pnum = i % (maxPacketsPerFrame / 2); + + char packetData2[packetsize]; + memset(packetData2, 0, packetsize); + sls_detector_header *header = + (sls_detector_header *)(packetData2); + header->detType = (uint16_t)myDetectorType; + header->version = SLS_DETECTOR_HEADER_VERSION - 1; + header->frameNumber = frameNr + iframes; + header->packetNumber = pnum; + header->modId = 0; + header->row = detPos[2]; + header->column = detPos[3]; + // fill data memcpy(packetData2 + sizeof(sls_detector_header), imageData + srcOffset2, dataSize); - srcOffset2 += dataSize; sendUDPPacket(1, packetData2, packetsize); + srcOffset2 += dataSize; + LOG(logDEBUG1, ("Sent packet: %d [interface 1]\n", pnum)); } } LOG(logINFO, ("Sent frame: %d\n", iframes)); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index ab76904c5..86c62d5de 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -1694,8 +1694,8 @@ int acquire(int blocking, int file_des) { // chipv1.1 has to be configured before acquisition if (getChipVersion() == 11 && !isChipConfigured()) { ret = FAIL; - strcpy(mess, - "Could not start acquisition. Chip is not configured.\n"); + strcpy(mess, "Could not start acquisition. Chip is not configured. " + "Power it on to configure it.\n"); LOG(logERROR, (mess)); } else #endif @@ -4755,11 +4755,13 @@ int set_partial_readout(int file_des) { maxnl); LOG(logERROR, (mess)); } else -#elif JUNGFRAU +#elif JUNGFRAUD if (arg % PARTIAL_READOUT_MULTIPLE != 0) { ret = FAIL; sprintf(mess, - "Could not set %d partial readout. %d must be a multiple of %d\n", arg, PARTIAL_READOUT_MULTIPLE); + "Could not set partial readout. %d must be a multiple " + "of %d\n", + arg, PARTIAL_READOUT_MULTIPLE); LOG(logERROR, (mess)); } else #endif @@ -7137,7 +7139,7 @@ int get_receiver_parameters(int file_des) { return printSocketReadError(); // partialReadout -#ifdef EIGERD +#if defined(EIGERD) || defined(JUNGFRAUD) i32 = getPartialReadout(); #else i32 = 0; diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index bd75817fd..fac7c65a0 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -847,13 +847,14 @@ void Detector::setNumberofUDPInterfaces_(int n, Positions pos) { bool previouslyClientStreaming = pimpl->getDataStreamingToClient(); bool useReceiver = getUseReceiverFlag().squash(false); bool previouslyReceiverStreaming = false; + int startingPort = 0; if (useReceiver) { previouslyReceiverStreaming = getRxZmqDataStream(pos).squash(true); + startingPort = getRxZmqPort({0}).squash(0); } pimpl->Parallel(&Module::setNumberofUDPInterfaces, pos, n); // ensure receiver zmq socket ports are multiplied by 2 (2 interfaces) if (getUseReceiverFlag().squash(false) && size()) { - int startingPort = getRxZmqPort({0}).squash(0); setRxZmqPort(startingPort, -1); } // redo the zmq sockets if enabled diff --git a/slsReceiverSoftware/src/DataStreamer.cpp b/slsReceiverSoftware/src/DataStreamer.cpp index d5ad9763e..0dc8d6e5f 100644 --- a/slsReceiverSoftware/src/DataStreamer.cpp +++ b/slsReceiverSoftware/src/DataStreamer.cpp @@ -129,7 +129,7 @@ void DataStreamer::ThreadExecution() { } void DataStreamer::StopProcessing(char *buf) { - LOG(logDEBUG1) << "DataStreamer " << index << ": Dummy"; + LOG(logINFOBLUE) << "DataStreamer " << index << ": Dummy"; sls_receiver_header *header = (sls_receiver_header *)(buf); // send dummy header and data @@ -149,7 +149,7 @@ void DataStreamer::ProcessAnImage(char *buf) { sls_receiver_header *header = (sls_receiver_header *)(buf + FIFO_HEADER_NUMBYTES); uint64_t fnum = header->detHeader.frameNumber; - LOG(logDEBUG1) << "DataStreamer " << index << ": fnum:" << fnum; + LOG(logINFOBLUE) << "DataStreamer " << index << ": fnum:" << fnum; if (!startedFlag) { RecordFirstIndex(fnum, buf); diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index 9b0aaed55..c275cf941 100644 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -491,7 +491,7 @@ uint32_t Listener::ListenToAnImage(char *buf) { lastCaughtFrameIndex = fnum; - LOG(logDEBUG5) << "Listening " << index + LOG(logDEBUG1) << "Listening " << index << ": currentfindex:" << currentFrameIndex << ", fnum:" << fnum << ", pnum:" << pnum << ", numpackets:" << numpackets; diff --git a/slsSupportLib/src/ZmqSocket.cpp b/slsSupportLib/src/ZmqSocket.cpp index 58b9de525..752934088 100644 --- a/slsSupportLib/src/ZmqSocket.cpp +++ b/slsSupportLib/src/ZmqSocket.cpp @@ -26,7 +26,7 @@ ZmqSocket::ZmqSocket(const char *const hostname_or_ip, if (sockfd.contextDescriptor == nullptr) throw sls::ZmqSocketError("Could not create contextDescriptor"); - // create publisher + // create subscriber sockfd.socketDescriptor = zmq_socket(sockfd.contextDescriptor, ZMQ_SUB); if (sockfd.socketDescriptor == nullptr) { PrintError(); From f8b5795c2947a574c9c2b295bb6198a38436f7a9 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 16 Aug 2021 16:34:11 +0200 Subject: [PATCH 5/8] updated for partialread --- RELEASE.txt | 4 + .../slsDetectorFunctionList.c | 85 ++++++++++++------- .../slsDetectorFunctionList.c | 31 +++---- 3 files changed, 70 insertions(+), 50 deletions(-) diff --git a/RELEASE.txt b/RELEASE.txt index 4c64e7a44..4d51875b4 100755 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -75,6 +75,10 @@ serialnumber (put) dbitpipeline readnlines->partialread +setting number of udp interfaces from 1 to 2, didnt get image in gui + +virtual server plots increasing values for every packet.. not every pixel + 3. Firmware Requirements ======================== diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index fec8f9127..9638745e3 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -2306,55 +2306,70 @@ void *start_timer(void *arg) { int tgEnable = send_to_ten_gig; int datasize = (tgEnable ? 4096 : 1024); int packetsize = datasize + sizeof(sls_detector_header); - int numPacketsPerFrame = (tgEnable ? 4 : 16) * dr; + int maxPacketsPerFrame = (tgEnable ? 4 : 16) * dr; int npixelsx = 256 * 2 * bytesPerPixel; int databytes = 256 * 256 * 2 * bytesPerPixel; int row = eiger_virtual_detPos[0]; int colLeft = top ? eiger_virtual_detPos[1] : eiger_virtual_detPos[1] + 1; int colRight = top ? eiger_virtual_detPos[1] + 1 : eiger_virtual_detPos[1]; - int ntotpixels = 256 * 256 * 4; + + int partialReadout = getPartialReadout(); + if (partialReadout == -1) { + LOG(logERROR, + ("partial readout is -1. Assuming no partial readout.\n")); + partialReadout = MAX_ROWS_PER_READOUT; + } + const int maxRows = MAX_ROWS_PER_READOUT; + const int packetsPerFrame = + (maxPacketsPerFrame * partialReadout) / maxRows; + LOG(logDEBUG1, (" dr:%d\n bytesperpixel:%f\n tgenable:%d\n datasize:%d\n " - "packetsize:%d\n numpackes:%d\n npixelsx:%d\n databytes:%d\n " - "ntotpixels:%d\n", - dr, bytesPerPixel, tgEnable, datasize, packetsize, numPacketsPerFrame, - npixelsx, databytes, ntotpixels)); + "packetsize:%d\n maxnumpackes:%d\n npixelsx:%d\n databytes:%d\n", + dr, bytesPerPixel, tgEnable, datasize, packetsize, maxPacketsPerFrame, + npixelsx, databytes)); // Generate data char imageData[databytes * 2]; memset(imageData, 0, databytes * 2); { - switch (dr) { - case 4: - for (int i = 0; i < ntotpixels / 2; ++i) { + int npixels = NCHAN * NCHIP; + const int pixelsPerPacket = (double)datasize / eiger_dynamicrange; + int pixelVal = 0; + if (dr == 4) { + npixels /= 2; + } + for (int i = 0; i < npixels; ++i) { + if (i > 0 && i % pixelsPerPacket == 0) { + ++pixelVal; + } + switch (dr) { + case 4: *((uint8_t *)(imageData + i)) = eiger_virtual_test_mode ? 0xEE - : (uint8_t)(((2 * i & 0xF) << 4) | ((2 * i + 1) & 0xF)); - } - break; - case 8: - for (int i = 0; i < ntotpixels; ++i) { + : (uint8_t)(((2 * pixelVal & 0xF) << 4) | ((2 * pixelVal + 1) & 0xF)); + break; + case 8: *((uint8_t *)(imageData + i)) = - eiger_virtual_test_mode ? 0xFE : (uint8_t)i; - } - break; - case 16: - for (int i = 0; i < ntotpixels; ++i) { + eiger_virtual_test_mode ? 0xFE : (uint8_t)pixelVal; + break; + case 16: *((uint16_t *)(imageData + i * sizeof(uint16_t))) = - eiger_virtual_test_mode ? 0xFFE : (uint16_t)i; - } - break; - case 32: - for (int i = 0; i < ntotpixels; ++i) { + eiger_virtual_test_mode ? 0xFFE + : (uint16_t)pixelVal; + break; + case 32: *((uint32_t *)(imageData + i * sizeof(uint32_t))) = - eiger_virtual_test_mode ? 0xFFFFFE : (uint32_t)i; + eiger_virtual_test_mode ? 0xFFFFFE + : (uint32_t)pixelVal; + break; + default: + break; } - break; - default: - break; } + } // Send data @@ -2381,7 +2396,13 @@ void *start_timer(void *arg) { int srcOffset2 = npixelsx; // loop packet - for (int i = 0; i != numPacketsPerFrame; ++i) { + for (int i = 0; i != maxPacketsPerFrame; ++i) { + + // calculate for partial readout + const int startval = 0; + const int endval = startval + packetsPerFrame - 1; + + // set header char packetData[packetsize]; memset(packetData, 0, packetsize); @@ -2443,13 +2464,15 @@ void *start_timer(void *arg) { } } } - if (eiger_virtual_left_datastream) { + if (eiger_virtual_left_datastream && i >= startval && i <= endval) { usleep(eiger_virtual_transmission_delay_left); sendUDPPacket(0, packetData, packetsize); + LOG(logDEBUG1, ("Sent left packet: %d\n", i)); } - if (eiger_virtual_right_datastream) { + if (eiger_virtual_right_datastream && i >= startval && i <= endval) { usleep(eiger_virtual_transmission_delay_right); sendUDPPacket(1, packetData2, packetsize); + LOG(logDEBUG1, ("Sent right packet: %d\n", i)); } } LOG(logINFO, ("Sent frame: %d[%lld]\n", iframes, diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index fed28014b..09c4647f9 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -2358,20 +2358,9 @@ void *start_timer(void *arg) { // loop packet (128 packets) for (int i = 0; i != maxPacketsPerFrame; ++i) { - // send out only the partial packets - if (partialReadout != MAX_ROWS_PER_READOUT) { - // get the mid point - const int startval = + const int startval = (maxPacketsPerFrame / 2) - (packetsPerFrame / 2); - const int endval = startval + packetsPerFrame - 1; - LOG(logINFOBLUE, - ("packetsperframe:%d startval:%d endval:%d'\n", - packetsPerFrame, startval, endval)); - // skip sending out this packet - if (i < startval || i > endval) { - continue; - } - } + const int endval = startval + packetsPerFrame - 1; int pnum = i; // first interface @@ -2391,10 +2380,12 @@ void *start_timer(void *arg) { // fill data memcpy(packetData + sizeof(sls_detector_header), imageData + srcOffset, dataSize); - - sendUDPPacket(0, packetData, packetsize); srcOffset += dataSize; - LOG(logDEBUG1, ("Sent packet: %d [interface 0]\n", i)); + + if (i >= startval && i <= endval) { + sendUDPPacket(0, packetData, packetsize); + LOG(logDEBUG1, ("Sent packet: %d [interface 0]\n", i)); + } } // second interface @@ -2416,10 +2407,12 @@ void *start_timer(void *arg) { // fill data memcpy(packetData2 + sizeof(sls_detector_header), imageData + srcOffset2, dataSize); - - sendUDPPacket(1, packetData2, packetsize); srcOffset2 += dataSize; - LOG(logDEBUG1, ("Sent packet: %d [interface 1]\n", pnum)); + + if (i >= startval && i <= endval) { + sendUDPPacket(1, packetData2, packetsize); + LOG(logDEBUG1, ("Sent packet: %d [interface 1]\n", pnum)); + } } } LOG(logINFO, ("Sent frame: %d\n", iframes)); From cb223210066d9e0e06fd1e80d58f58ebe1f51af6 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 16 Aug 2021 16:59:35 +0200 Subject: [PATCH 6/8] fixed for eiger 4 bit --- .../eigerDetectorServer/slsDetectorFunctionList.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index 9638745e3..4622e97c5 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -2335,11 +2335,13 @@ void *start_timer(void *arg) { memset(imageData, 0, databytes * 2); { int npixels = NCHAN * NCHIP; - const int pixelsPerPacket = (double)datasize / eiger_dynamicrange; + const int pixelsPerPacket = (double)datasize / bytesPerPixel; int pixelVal = 0; if (dr == 4) { npixels /= 2; - } + } + LOG(logINFOBLUE, + ("pixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket)); for (int i = 0; i < npixels; ++i) { if (i > 0 && i % pixelsPerPacket == 0) { ++pixelVal; @@ -2349,7 +2351,10 @@ void *start_timer(void *arg) { *((uint8_t *)(imageData + i)) = eiger_virtual_test_mode ? 0xEE - : (uint8_t)(((2 * pixelVal & 0xF) << 4) | ((2 * pixelVal + 1) & 0xF)); + : (uint8_t)(((2 * pixelVal & 0xF) << 4) | + ((2 * pixelVal) & 0xF)); + //: (uint8_t)(((2 * pixelVal & 0xF) << 4) | ((2 * pixelVal + 1) + //& 0xF)); break; case 8: *((uint8_t *)(imageData + i)) = From 75b992ed076fb96cead87eb46ddb3f6578541613 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 16 Aug 2021 16:59:54 +0200 Subject: [PATCH 7/8] fixed for eiger 4 bit --- .../eigerDetectorServer/slsDetectorFunctionList.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index 4622e97c5..d783c5b72 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -2340,7 +2340,7 @@ void *start_timer(void *arg) { if (dr == 4) { npixels /= 2; } - LOG(logINFOBLUE, + LOG(logDBUG1, ("pixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket)); for (int i = 0; i < npixels; ++i) { if (i > 0 && i % pixelsPerPacket == 0) { From 33edb5c769e7da9810fad3456c76a95216756bdf Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Mon, 16 Aug 2021 17:15:30 +0200 Subject: [PATCH 8/8] minor --- slsReceiverSoftware/src/DataStreamer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slsReceiverSoftware/src/DataStreamer.cpp b/slsReceiverSoftware/src/DataStreamer.cpp index 0dc8d6e5f..d5ad9763e 100644 --- a/slsReceiverSoftware/src/DataStreamer.cpp +++ b/slsReceiverSoftware/src/DataStreamer.cpp @@ -129,7 +129,7 @@ void DataStreamer::ThreadExecution() { } void DataStreamer::StopProcessing(char *buf) { - LOG(logINFOBLUE) << "DataStreamer " << index << ": Dummy"; + LOG(logDEBUG1) << "DataStreamer " << index << ": Dummy"; sls_receiver_header *header = (sls_receiver_header *)(buf); // send dummy header and data @@ -149,7 +149,7 @@ void DataStreamer::ProcessAnImage(char *buf) { sls_receiver_header *header = (sls_receiver_header *)(buf + FIFO_HEADER_NUMBYTES); uint64_t fnum = header->detHeader.frameNumber; - LOG(logINFOBLUE) << "DataStreamer " << index << ": fnum:" << fnum; + LOG(logDEBUG1) << "DataStreamer " << index << ": fnum:" << fnum; if (!startedFlag) { RecordFirstIndex(fnum, buf);