From 66956a2fb666842960a57a1fea26f82b3f3e0e58 Mon Sep 17 00:00:00 2001 From: cpauvert Date: Tue, 29 Aug 2023 11:07:39 +0200 Subject: [PATCH] add test dataset for acqus file that needs symlink and remove redundant post symlink check as the links are only done when no files exist --- R/import_biotyper_spectra.R | 6 - dev/import-data.Rmd | 22 +- inst/with-acqus/species1/0_G2/1/1SLin/acqus | 277 ++++++++++++++++++ inst/with-acqus/species1/0_G2/1/1SLin/fid | Bin 0 -> 83528 bytes tests/testthat/test-import_biotyper_spectra.R | 16 +- 5 files changed, 307 insertions(+), 14 deletions(-) create mode 100644 inst/with-acqus/species1/0_G2/1/1SLin/acqus create mode 100644 inst/with-acqus/species1/0_G2/1/1SLin/fid diff --git a/R/import_biotyper_spectra.R b/R/import_biotyper_spectra.R index 4d4deb6..ad42318 100644 --- a/R/import_biotyper_spectra.R +++ b/R/import_biotyper_spectra.R @@ -48,12 +48,6 @@ import_biotyper_spectra <- function(biotyper_directory, remove_calibration = c(" from = acqus_files[do_symbolic_links], to = acqu_files[do_symbolic_links] ) - if (any(!links_status)) { - stop( - "Symbolic links could not be created for the files:", - acqus_files[!links_status] - ) - } } # MALDIquantForeign::importBrukerFlex depends on # readMzXmlData (>= 2.7) which itself needs R >= 4.2.0 diff --git a/dev/import-data.Rmd b/dev/import-data.Rmd index 3e1fe8e..09e2482 100644 --- a/dev/import-data.Rmd +++ b/dev/import-data.Rmd @@ -499,12 +499,6 @@ import_biotyper_spectra <- function(biotyper_directory, remove_calibration = c(" from = acqus_files[do_symbolic_links], to = acqu_files[do_symbolic_links] ) - if (any(!links_status)) { - stop( - "Symbolic links could not be created for the files:", - acqus_files[!links_status] - ) - } } # MALDIquantForeign::importBrukerFlex depends on # readMzXmlData (>= 2.7) which itself needs R >= 4.2.0 @@ -551,8 +545,11 @@ spectra_list ```{r tests-import_biotyper_spectra} directory_biotyper_spectra <- system.file("toy-species-spectra", package = "maldipickr") -spectra_list <- import_biotyper_spectra(directory_biotyper_spectra) +directory_biotyper_spectra_with_acqus <- system.file("with-acqus", package = "maldipickr") test_that("import_biotyper_spectra works", { + expect_no_error( + spectra_list <- import_biotyper_spectra(directory_biotyper_spectra) + ) expect_length( spectra_list, 6 ) @@ -560,6 +557,17 @@ test_that("import_biotyper_spectra works", { spectra_list, "list" ) }) +test_that("import_biotyper_spectra works with symlinks",{ + expect_no_error( + spectra_with_acqus <- import_biotyper_spectra(directory_biotyper_spectra_with_acqus) + ) + expect_length( + spectra_with_acqus, 1 + ) + expect_type( + spectra_with_acqus, "list" + ) +}) test_that("import_biotyper_spectra fails", { expect_error( import_biotyper_spectra( diff --git a/inst/with-acqus/species1/0_G2/1/1SLin/acqus b/inst/with-acqus/species1/0_G2/1/1SLin/acqus new file mode 100644 index 0000000..e9c10eb --- /dev/null +++ b/inst/with-acqus/species1/0_G2/1/1SLin/acqus @@ -0,0 +1,277 @@ +##TITLE= XMASS Parameter file +##JCAMPDX= 5.0 +##DATATYPE= CONTINUOUS MASS SPECTRUM +##ORIGIN= XMASS, Bruker-Daltonics (USA) and Bruker-Daltonik (GER) +##OWNER= TOF User +##SPECTROMETER/DATASYSTEM= Bruker Flex Series +##.SPECTROMETER TYPE= TOF +##.INLET= DIRECT +##.IONIZATION MODE= LD+ +##$ACQMID= 0 +##$ACQVSMA= 3 +##$ACQVSMI= 0 +##$ADC= 1 +##$ANT= no +##$AOfs= 1.3 +##$AQOP_m= 0 +##$AQ_mod= 1 +##$ATTEN= 69.814812 +##$AccE= 20000 +##$AccE_is= 0 +##$AppTyp= 0 +##$BYTORDA= 0 +##$CIDOn= no +##$CTOF= 0 +##$Calmet= 1 +##$CapEnt= -4000 +##$CapExit= 0 +##$CapHtr= 0 +##$Corona= 0 +##$Cycle= 100 +##$Cyl= 0 +##$DATE= 0 +##$DCOff1= 0 +##$DComp= no +##$DE= 625 +##$DELAY= 19462 +##$DIGTYP= 19 +##$DPCAL1= 0 +##$DR_end= 6 +##$DR_set= 12 +##$DR_strt= 12 +##$DS= 0 +##$DTATYPE= 0 +##$DW= 2 +##$DataTyp= 0 +##$DefDly= 0 +##$DeflOff= 30 +##$DigDep= 8 +##$DigTrig= 100 +##$DryFlow= 0 +##$DrySW= 0 +##$DryTemp= 150 +##$EOSTime= 0.92799997 +##$EndP= -3500 +##$Enhance= no +##$EsiMode= 0 +##$Extract= 0 +##$FASTON= no +##$FOV= 20 +##$FPCAL1= 1 +##$FPCAL2= 0 +##$FPCAL3= 0 +##$FPMASS= 2466.7 +##$FPON= no +##$FPSHIFT= 0 +##$FW= 2500 +##$Flatlin= no +##$FpWinHi= 0 +##$FpWinLo= 0 +##$GDEDLY= 0 +##$GDEON= yes +##$GDETime= 0 +##$GSpotId= 0 +##$GSpotno= 0 +##$GatStr= 0 +##$Gate= 100 +##$HITURBO= no +##$HPCML3= 0 +##$HPClBHi= 0 +##$HPClBLo= 0 +##$HPClOrd= 0 +##$HPClUse= no +##$Hpcgc0= 0 +##$Hpcgc2= 0 +##$IS2BNDV= 0 +##$ISD= no +##$InstTyp= 9 +##$IsCalib= no +##$LASP= 1 +##$LBNDVAL= 0 +##$LINDIS= 0 +##$LLNSBND= no +##$LasFoc= -1 +##$LftHV1= 0 +##$LftHV2= 0 +##$Lift1= 0 +##$Lift2= 0 +##$MC2= 4 +##$ML1= 5392738.36267813 +##$ML1_raw= 5392738.36267813 +##$ML2= 417.483287542185 +##$ML2_raw= 417.483287542185 +##$ML3= -0.0156441528320176 +##$ML3_raw= -0.0156441528320176 +##$MSupMz= 0 +##$MW_low= 15 +##$MapMode= 0 +##$Masserr= 127.81149 +##$MatSup= 0 +##$NBL= 1 +##$NC= 0 +##$NS= 16 +##$NSdigit= 1 +##$NebFlow= 0 +##$NebSW= 0 +##$NebTemp= 30 +##$NoSHOTS= 240 +##$OFFSET= 1000 +##$PAPS= 0 +##$PIEDLY= 120 +##$POLARI= 1 +##$PR= 1 +##$PULSER= 10 +##$PULSREP= 10000 +##$Parent= 1000 +##$RBNDVAL= 0 +##$REPHZ= 60 +##$RFAmp= 600 +##$RFFreq= 5 +##$RG= 1 +##$RLNSBND= no +##$RTSmoo= 0 +##$Realign= 0 +##$Ref2= 0 +##$RefFull= 0 +##$ReflE= 0 +##$Repel= 20 +##$RetTime= 0 +##$RunDId= 0 +##$RunId= 0 +##$SF= 0 +##$SFO1= 0 +##$SPType= 0 +##$SW= 0 +##$SW_p= 100 +##$SampId= 0 +##$Sens1= 100 +##$Sens2= 0 +##$Skim1= 20 +##$SumShot= 0 +##$Sync= 1 +##$TD= 20882 +##$TIB= 5 +##$TLft= 0 +##$TLftCor= 0 +##$TLift= 0 +##$TPLMS= 0 +##$TargId= 0 +##$TgCount= 0 +##$Trans= 100 +##$Trap= 45 +##$UDeflL= 0 +##$UGrid= 0 +##$UIS2BND= no +##$ULensR= 0 +##$UPAcc= 0 +##$URepel= 9000 +##$Udefl= 0 +##$UdetL= 2.722 +##$UdetR= 0 +##$Uhim= 0 +##$Uhimass= 0 +##$Uis1= 20 +##$Uis2= 18.049999 +##$Ulens= 6 +##$Uref_is= 0 +##$Urefl= 0 +##$XLens= -50 +##$YMAX_a= 36085 +##$YMIN_a= 0 +##$ACQMETH= +##$AQ_DATE= <2014-05-06T13:11:26.609+02:00> +##$AUNM= <> +##$AXMeth= +##$CALME= (0..15) +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +##$CALMR= (0..15) +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +##$CALNAM1= <> +##$CALNAM2= <> +##$CALNAM3= <> +##$CALNAM4= <> +##$CALNAM5= <> +##$CALNAM6= <> +##$CALNAM7= <> +##$CHIPNO= <0> +##$CMT1= <> +##$CMT2= <> +##$CMT3= <> +##$CMT4= <> +##$CalStar= <ReferenceMassAssignementQuadratic2014-05-06T11:21:19.000+00:00OKflexControl3.4.85.1BDAL@US5BC2906A-A1A2-41F6-A49E-CB0AC4F010C6MBT_Standard8179.847749855607127.811490825323126330.204610094283636.5610192637583636.9765248557783637.8RL29 [M+2H]2+226.3662499924011031081.888235818265096.6461888656235097.2301175058115096.8RS32 [M+H]+84.38971625545693031925.020464340165381.5395312270375382.1567992985415381.4RS34 [M+H]+140.6324188020607034379.865131800796255.4000000000016256.1204760966236255.4RS33meth [M+H]+115.1766628230513037031.597111133387273.6373515455917274.4798380037127274.5RL29 [M+H]+2.771598912386046043957.466859018710297.7628087834410298.9781000455210300.1RS19 [M+H]+108.9212681897948050573.4153447676813680.4537257741113682.1029791488513683.2RNAse A [M+H]+80.17282880817682056221.4709880569916951.3710676946516953.4553448502316952.3Myoglobin [M+H]+68.152690209266110> +##$D= (0..31) +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +##$DOMNAME= <> +##$FAMeth= <> +##$FASTCal= <> +##$FCVer= +##$GEOFILE= <> +##$Gelcode= <> +##$HPCStr= <> +##$HPCal= (0..31) +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +##$ID_raw= <168D0DB7-2BE9-47A8-90E4-970883B68328> +##$IN= (0..31) +0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 +0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 +0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 +0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 +##$INSTRUM= +##$InstrID= <269944.00766> +##$LIFTC= (0..2) +0 0 0 +##$MOTPOS= <(-58980.0,-31845.0)> +##$Mctrlst= <> +##$NTBCal= +##$NTBCalr= +##$OS9PATH= <> +##$OpId= +##$P= (0..31) +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +##$PARNM= <> +##$PATCHNO= +##$PATH= +##$PDELAY= (0..3) +10 10 10 10 +##$PDURA= (0..3) +10 10 10 10 +##$PEPURL= <> +##$PLMSC= (0..2) +0 0 0 +##$PULPROG= <> +##$PostPr= <> +##$QS= (0..7) +83 83 83 83 83 83 83 83 +##$RUNNM= <> +##$SMOPTS= (0..15) +6 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +##$SPOTNO= +##$TgIDS= +##$TgSer= <> +##$TgTyp= <> +##$VDLIST= +##$VOLTNM= <> +##$WEND= (0..3) +30000 30000 30000 30000 +##$WINY= (0..3) +3 3 3 3 +##$WSTART= (0..3) +0 0 0 0 +##$Warplc1= <> +##$Warplc2= <> +##$XACQVS= <3.0> +##$Xml1= <> +##END= + diff --git a/inst/with-acqus/species1/0_G2/1/1SLin/fid b/inst/with-acqus/species1/0_G2/1/1SLin/fid new file mode 100644 index 0000000000000000000000000000000000000000..e9a14a30f533d01bc2752531d0ae74d109ddfb21 GIT binary patch literal 83528 zcmXusW4Iny+koL6+cq29Mq}HyjmC{_+ji2}wr$&JlE&Y4eaC)(oX5Rpjn^#A?5Amw zNC5!_&<$H71_azC_CP_>X(I##EXE1ac~FgXeq0Y95bzUKN$N&2Z$z6_yjAAGTo`dFhZ4{aMaT9Emfe3*#6TARl?-(17wO7$qQJ3h^QWNJmFT zq{KONL}{#H{VeuLN^FJbq-O*k>jUWr2ugl7Y$Tlp-*J}Z^w>kX9zJ0g#<6cb3`rl@6~5fk{An5NsmMuc)y(y1>aacfM-aA;N%@bW6pnzco5sMjO8IX z4X=4Hc~eo6baNafeHgJw|Kd2x&2ngXz30gzu|1`o-PNen~G$#yB= zJ(q>gy*e=hY+GKV^|TkfzUp{Sp7pr|F&`%4PnM$-AJP7z5qrbB7?OOSO%P&wB*AW$ zKN2f)j?Tn)EO#K@hVA_`aVhHJDeJlrb6_^<6|k*bLpZjrN=!rE3(h+=&_b3oVm-?- zh+fzIz;)k=n-H43s>Fh5LwYmvbF7ZUo#ai2_r8g|>Xc6t)WvDexstqmhz9!;>(qSW zRU{`pg{bJHV-jtTg-F+gb+9z-JHC^j7jrmQHsU0-!!wp|BP!{cXa?``F?ow&ANK=m zP#*_ThxL6Co8wwWoyiM{j(Cp<{BhXk?@&YrWxS%&Kk71t@4fWZ#73_;A!hXsADhTU}uw4NJkls$7{rND~AIBo{yk^_) zY?g}>*P{w~2hf0Xo#5QdW77X53<$WFj=rV{^`t)K*@@!}2nc99g8p?hb&hytP(VQH zo&f<(Td}Sd&!Yt8lQSToc6!Fk&d`?kTSFwcjbK-EkLO7O7qdiih2GX<73)a~` z`mC%IamgEjrKBC3rr{XAvwVj9u$-?Z*D{~$_>UNlxRn?aTUqxff}i$Gua?g*(`T6X=MZtRI0AaBRy=UPIW1O5rhiorww1jt z8RbWPEuM|KOx-<&Qd!xSyql?MPt@a@i5T1CQm?63KA+>%l@=VwKHj#K2L~{eeo4&%ay$1Un#uD7eBl7yP zPjKvI8&x9R61B0AWv}-=F*5ei*Evqu&lV;>JnF)6&^cp2@~^@%qaliu_BlJA-($Hk zob%pBe`G}_bcf?u1>!!U`Q>nfv~%^u*aqjY_It6hk>y%&zSNWDuf%r5x5Tb+> z2yY~>6VWlivDEQ%C2jJ1q1pa??XA;)rDPYmY}K2M+Ha=4t0Wv_oSoYzId zGxGmJOw!gbk9P+?Gv9O0qYUR>O7yuo9}OTqm>7dN0M=LQr~Q=Aat3^dDu^FAi7e>H z`YhaAEu!yHUGawFc&uP>p7p;v;hd)rdf++v&TBKWeNtq_FI2-=@?W4R=?}2Ic+bw2 ztuOoW3hBwWud@w%Po3cX*j6kzx6cpfW}f>3oEt@i=eGVWCcfcXdJ*mWf5X1W_USlc z-Lw6q#4uFHYPPM36Ih0Q_=(`Gvpv}lk3k~rA>aAu70wZkI0)BBJJ+s^RXB_!UNbi8{-a2!KJlp&*G-la0WgB*!@?M-nXC^Lz*W&d$ca4KP%pY45 zyPz;a!)qFYH>{h87+8i%>^BXTUp|gw{kBbiBhEz>Sl-^h{n1m7QH@v>T~Gu*)1-*R zy6+rw1xBF(X5j%Mur4{WVG6va{^*5EsD|#azjOZU`eSIpaUT+6-~#?+`781N_hUQn z$NBtc;(wTfGB_JHAm9iwCF`yeTVNIDvAi9Y{c9Y>9~^TnwvhH7k|8hKzTg;RiC3`z zH*uGBJ1Gn28I@pLwZ4AAIo3U4o1nx*sDyYdcR>=gLN4-nk`(PasA_u~dUl7~at_Qrn zA_&8}De(DxhtJdJWBZv+xsJpfyoBS3W$qaHFYA2=bDK-B{}{^hT#jKon1#)-U1i5& z@{{5W;<0Tcv?AYkMeE2^T)<40ZKp8<^Q|xMFdUAF)=9@?-|dp(EBma5W!sWv`{`D! zw_Urvb#?;Q<0;EN2ES#HVM$9uP|A`^Wkf5AGr48swXy(Dce0pd6xUZHtu?#a~<;A!sA*_dx>R;_SrXJ+1dxW zePIOSIqoDbCeO0^fPrX^1+cG5zI*}1j{%ZM!-7loZ>X+ zY0UhyF7HAQcn?g*yX4cv%omui=SxaGNh$CyvlsOJKJSoj_x~Ud*;9; z*uObrn)9drj1kVWv%vSFxg6g<{0!2Oc21EV9Z&_%5gc>&AsU=xnD02_oXc;(56FuR z>+1i;RO@P9@)EHABk>oGk}ePDpZ2Q@*=8>$k$!^Ou-_jC%gtxqfwc8#9?!!%;CG>m zXn=+A9LLE|Mcm+e++o`hSdXSG-zDy&UQZzUoa(Txb!h+`Q+;MbV12Jn-h7mV*LDZN zNH0N7uDvtyD0yDH$0~rJn!LqTBs!Q7bqZp2}oQSv_Rbcxrjf3R(A;#w#ei0pyGNTr3gN}LEVLgg~2DruY zUDnxN<03Tr!e?%I+J-yA>no1?q%A}HjrA;#X1k5Vki_{!+vXWq4#$Z0;Yo3c?SCT$ zY0KMw-umJ7+V71~C2(Hm`$Yq2uy5(p!kR+1`1!&;K7} z!5Y?`gZ-V)_9bbr-M+|sat_f6-m8665YqMsmWRi^7P!4_$m>W=+iFC+EkOGnMSCt1 zk8y#ve}ov3IFR-ph5UiE@lI?vkL?`;eID-L4u?3VV|hN(mi0*3hm}A*ST}8Z<4_D< zm){5-7wp$Iu&@2NW2yBh6U$MNn)Fi?XFKb_d(v@G7Op**?`8laLCl$&X9S#C3YlLE*Jt zh4)~){@*kCMV{;9na8{=FUwxnE#ecR$D2voYYIj>E$q{-vHTiUNnb=)+-Ertu^Hat z7U!?T^C(EPTxMY{Ec=GAt>=Vg;QZketc#A1o?{R8vV9b^!)=zw!MbhTxkGvjY_mS6 zn%Km4jqw)>;xv4or%(p<5Qcr*5of}FB`dKmrXmfTms%!2i9VP3q%HHlh=Xjn4Eyxc z#MW$66a#S-{c#4vSmzvMG`#0~pM#XHc50-CZ@|^#MMpHDyM!3#vO9Ja*6<9wk6R*Yl>Jylb#j#uA6VAgj z{|L)%3H#N?3_N1l`?7x@iPWSQq7ZxzK1=)i_^`aUBO3S65zFDbh-0_&3cm&UcZ{>_ z69d+}?(o^xz$P4l&-el7YE3;Ii#(*Q(?ju@$w%>|O z+HEbn+3@^6`wBQj+WNT&4>`{NzYmhm3fu4+Shn^V&Rwg(_HUc%PF{2PJ~fBs@LaFs z$79mFIp-A8jp6&S<4+OteJ<5Vhl1Dkntgq)_E+AM=d(^-K{}Q#o64jk!RxUcrxHD9 zeAo_rPL3=0;T+`!l5x&ia4t8SWy|(0c9Q;!_y_yi7v>>-mza-e9a|3jT(8GxUXtzG zpc`r1qUGjwW{1~bly!%RtVALe!+y=Mgkw1d z+J>F~tV0iY?)>-+=c_&|+q!d?;24Oyh>FYPJIAq{=8^tMIrN9~3CquV)&sRL7A4S{ zeA}?~(|PVi3?OZrwx3uA`y$I}0G^TWd%5k^?Hp^C!7@%pY>m6Hk9tQbJ z3T)$#N!#bHhiy9}o*@X^jwT*}*Yu9<#}YmFdh{Y~KVtuI66fJDMj$OhVLIMm5d3x# zo7fNbC$^Ua949>S6zggdZxdS*%aI=zw&!hdEGq)b(fP97>`R|oJ1mvukz~jB*S`Wj1bU%3? z;C^l4^RPd)?Jp({<5h$vj6xF`^rdc z6TmUg5QnndiP)KC=Zm(D2eAFNh4tbh`Su}>f0n!De*%toOHhD3?{_6e!TC)C;%q!3 z?Y(%8&>YJ#r8?Z+`))+u1>z^R`GEHD8uyat^<;+q;#D{wtwVIa(TKQ^W#7+iLyxcs ztI7Kc+u2oEzLsM=*4gJco_o$iq`T98-w>Y>x6t-ip&9MEJ$bzmg!~A^6KsDUiAg)> zuYrR&gzFqTF|j@D4;^bp6aRzvU|;qf*;ro}wrj`bSRBiK(r0VE+y=)l+n>+VdOVS1 zje_@J|M(jN;WcbPbyQ>kHO94|N>hM>-$JpHBWeVgaIk?R(#H0=VuwOh4t2XxNW2%93!pYwn_VjxNPft zR2TeU*|K~?v|ihX#AA5|(Y`AR(SA81Y!fMnBVoI>O_`pADePl^YoGj?_Id?9*uFQ) z!hXf_J%>1KQx-m_40uIedD!>b&)G-)Nxu71p2uI4q5h4<$>8>e~rnH$DAP*^=%&Y?KSo7KKn<9-;10x*nV7YPTKE8ebE#nS@ykrCY;+0CHkFk z2nd}tNoha+e#r0HvuRKJ;BPhjJ8&oLMOv22!{4E`q}_F89C(C%NQXP*^=7}n zS-+g^{C!Sw(rIYJaah-oxC{OkEddU*?ON9Rx9_HS&Gq;VxC?BH)40Zuc#MCz|BZ0| zUKCf!>w|{~!SXF)sle!*!nVDMJm)md>zz9|2HS>qkarQzy=;rlN1}56VMg*C``^I! z-4UB$pBR(8G`Ik-(Z36ipy{x2%lmKz))C8N4$`q~f4`Bm;@Gc;Ac3_tj7QO{F+G(vN?qAOA%^ev|ra6aW4ZeGKFiTD!+DB*yY;|!QW?j%AFqE2(YeM{Oo9F5dH6i*2C_eygB~m| zM_ba4nU1lR?;qq=V4tHAMTE733u&+SlcEd)O|zV+ImqIUXPw+gv4@pB*o`56AP> z7Lk*WvGXtj8@lr*j*}+_>@x*rOWJ_GxU;MhevIe`%dE=p*zyS za`ibMMmsp(O@QU(IN25Zu?2U?FN*o-$g=guv2Pj6z3`1=#Uon(dcbEp5stg%U>W-C zs-Pll1GbH?*n?ZxfvFtR?=`K7*WtWrH%`HK$bRJ67VWF{v;8C320x)Z>n{=Q2W+c; z8!JMzADDzpfzkfaZ9ZczY5Rn6=*0H^-F7kY9?QFk{#NNO(cjzo- zKJP&7=-+lCJN;TU^8DR!P`2sG_I=scv1Sh(kL$o?=b(3R0k?32?RK%fzr(7Bj+g|$ zpGU#}e!F&nZF|D`)f@O*s1Zb;Nh=gXVwP32lm9mW%_7xqo|XQ4U2eS&qw?|rwqj}OE@h(Cz_9l&?Oide+* zdN_yinf76y;;6tett%l(+m9B+U$DROzPty=`3c0Mu&?(TmLU%LF8hpq?loDqFMkQY z)B8+!af~0_OKzg`tj0(Q+v6ZCMgYroPyqIcJ;}4}Hh{<549CRREaxUV2HUUtp5uJ> zDcpB8F(@%TF$bojA>tqrW}_|aug=1Hd>#M6K7S6FoayqGciC}VU(>T3q-ZE))EFW$34CFYum z6&R;mvu;1z^q?-kW&7V8Ya;vCgl#by(R%qOR<@&<(cpAxKNU z<6Sb$VA(olT?>XI=nlsVkL7s(gmfGDOsB%W(7N@VSe+Q3=r`c^=!dAV&1Gd>C-^+= z8(khjzV&Mw=`6@cdLb5*_V{Tqh5awXKG<=^^WBGS%X_Ya8}Qfxl!fgkA!X@1!T;YI z%g)6n;s*To9utmry>W|u*K+*P@SanX_ljs=cnQ{3B#<`V@SY zGg)>X(u}la-48x%=Wom4`qo%NdKy}ie#+Q4gy^%{j=%5^qGKuRzTge~22&8-;NRjJ z;9s<3+3&d7@qlH&_ar3kcwY;?b1#SAd)&7J=S>UW8LPAHbNoUKmZ!mQx{kN5cb<`r zZP&wN++@2T#P!4%ScK3l`)*yBZR!w1pdtLml#@K`)nU^1QNi(=eJ;W4^?Ox)@&=+0 zX}?!zCGGRS%(DHu-=H?ZYjK<0tgBBP!L|j6{*9pqd86SR%kNXZzfa+LI@Y?+MBKqR z5B94;*w+5k?_kb9Y=h2M&*3AiF9}$0J8puQ@cufpt>x$66JwF~UEQ(D zd9C%-wow2>u@wv8GxqNqK3nHhE0LUh$1U$;H=Gl6hUfAdfbA{=!r>>&8Hv_K$5QwC z6H(z@&h0j1EBkkY^*Jo@6IRgX#-j%O-gAI9`WOA>LE>`MMl_bE()aq`L;2t2e5HSF z!#hzIetUK)CG)3Lv~S`keuwswJ~#q>a(&*DqVt|Kf&SP3&f_Gk1K5a2&_WGQ^$m8`Ke&8xoUqE%!+~7ub&> zCjUfgIFuys2XQI-A_5-4v7s!SEAGX3*pJNOer&VW zt>VPUSVwvatjix@UAE0-L^AlEGK=lpe-CNvSv=C8h&yo;saSqR3_-L#q(*y|_qlJus1U zI$||cC7ltL!5DZyXIS>N8^6& zr+g=Kd(+!+2$A6VnxiBR!hOr416txD!gGxFSVP)=;W)aHwr|}4%dQ5?_MdHFy;;jP zYk6*d!-_>+9uNO}o8!0!|GT%*I7Gg`fpLy=kL`29{?T((h4p3)(fRHJbV40CUM^sr z*XuL2uGpt#VA*HqZ=Hgo8tf~rGudHTnU2V|j&aji-T}w4K8TLXp?U5&he9k{Zntp> zmd6Bm9-rY+)}JBf=XmzNzBe|3st(PM*hk3CleWGQ&D* zop#=vp6%L_&V?3ui6dx_qO5yOTn*QqhHcNeL_YZZOuNo!eVw%PzRtw|IOkgoAipik zjxnYkr>!IQB~1~XbUSztiQ)VB1o-?t-+kDwd|uY`JV*lDUIKK1{Z1jG`#bK}g5}cz z)@kq0XXQ4#@PoA1=Q*5{*q*Kbj@wm8cOib`8I2_NLt3n2`5J6Dw(T&Svo`TG%gxaS zo8j+zZo%iD3y(1mw#6&#-?Cfyy@&x5cIdjCTao%>HjoR96WkFl;h zPqS`?!WGg%h%wL%Wdif+k?%F^W!d8u#!onhu)f%qisK6&;Vj!mAr?g~(mtO6(nW}t z=LIBX`8MotKEiJ+1BkXg+rRT3@5%OQo9#>9ZFpSE!TRNQDf`TeMCZmGN&Ad@;{ojJ z?Q0vtYqKpShI6&y_)cCWJYe7b@EYyA3lM$2?)wUChQqyv0CxZl7%= zj3(`SfNfzCtgF@++tNPRo}0t#w~vTSv`?A^%f-1tETa9P_1N}n+uMV3EPH(Wm<+_4 zs0Q0&1VlwRxV`PbaWEq5os(PtYzGT*1M^`UUj*A#Rpf^GmR(h>B;5mE{}@>R)*u?b z&`x?29j}L=CafQ}m({ErK|ohB#S{3wrv#>v@7OknJg>*T$nAE*`Da~ZfOBx` zxBXl5HRkOvn2TrSn_pYz?XUQ6xZkCxAIQ%0$xYvukGhhdx?g}fMP8l*`3*91 z&8d0*%;_iaP30#0PG?T5x9;#5Wms+q z=jpyH_+H^R4!^PZet3!44Y%Mk^%+-zeeXs1zGh$GcY#Iti+v8^9sEA#JIyqr-y*A# z=Ujgmeg+ywybQl-_`dm$^jZWXJ(}qH-MG%V#=uw+@nAn<|F!_$+hJJWg2DczDf#yI zH&Kse-$&ZRezOMrrrm(^_%8H{bX*j|8@9Kvu-$y1tvEMYLb@OF;%6Y+!(@0Z0Z0V5 zb57;B<2c~AgG{9D{|*stua2XRE7R~B6|aO)=N2nq+4;<_AQ{_uF2|(tu>b4``z-qv$8Fy;ym!aSLU5c~ zhf9dea!@$N^(NXU{f(w@p5)l`n`l2{e>V;R7==2xP5;(`=vWX0lSyxZWneiu4%v5i zz$jFNeR2hSX5a9{R%i$37Eh3#ZM^QcSWenL(EhXt(LO5^9K**F?aS^HL&H9G7gCUR zO!i(qZVt?beYWFKC-S|PZ0!4m*cJBOZIPICJ&Yu6-~Nkhj8C-eeFlx-aq_@<)LHC= z^Ocy02Io4S-}UzO&Ji3RUy_~(uQfUxQ#v9kc3>@ewgJcRl6Xa4eOO*TBk%nwR-iI@ zjt>P%+g@!;+i(KT4I1JwzQZ~>80~2rp)iN^AfkVVsfQ8p?*{h6{`X>j31SZ38tbVumyS(38Z(uKS;V9eMPn!Q1>HP4UnSVEUM!Fc*aURFM)}+6|{UTx& z{2Rt?;w|{M`qk)%T->|;x4+HvzpwY-MM=;2Fq8g&3FAW{BqF_>yyc7s{w=*D+eOA< z_;+;6ZVdeQ0qisVtx8w6o5nte*uM{BjKA;b#W?jR-=Eea7*?{JpZvLO=fBJ1zuyv? zeV22rztI+aEj=$xJgOMJga033_D{J7n-QIDaD5~Ng?8FN+!fH4cIG=EA9}oM) zo)kKJdLcZ`x{H)_oflVboj`+0OE2y zMrbS}&vv^J&f{ISp9@O*Innmu*yvc~xa8czdB$S$9UmME{F}bt<91^YWjB#B^fzqN zDDyp(c`wSg8LgHwf18z981_9y zF$MOa)8TuS{n>EXCkMeA(j)K(>HYWt`{&o>d41lS?Qk=!6S-MlhL1Ri5O9ok*?HkI z%4-4XHRSceQh1!~$N|Dd^ zAI9>(@ErRP1Annx7tzrIzK8cl0c68tjx!S1;TV_(aZnXqQ3&r?7n>LwzIS--(crb7 zW?d+v`=rG-*mfLm?bFv{0=!m_7n1!ff5#2a7X_!_IOq7{7*GnnXWxfo%?4syTtgL> ze-VA&r!gAdhwnaz;q!ZlQ*0NDat-Tq;2GHGPlUhU^1m$`OdM`ofOA~GD?5hFL~r~J zzu7w0*mpSpx`dYG&n1>ZRpf$m+kF_#G4>%jVsqSa=z^v2-=isuRJ7r_h)SF7Pdi@7 zyu2lI{Nc>?E2W};NXHn4=c(C`@A_-Wf5UsjNdDfsfbFZ&&X;=}`0pS&clY07Dattt z!SDM18&L0w{yS9un@P>sXC(Zco!gJbDA>pQzB82TjYrxtaDJW{_8TRU9>=&xO(XpT z!_k-J)WkQ$4LA+QQ^&9$_=j|6#3EfB_O-TM&u89h(tfL~hfO$vh@98I_51#D1hH`r zbGf!ocu#sP?!i9Jxx91#ujoa(4je!2^X)&KyN|^Z>cSJ)UN@iu&QnJc5^rM>*5d%% z+P;U8z7P8l=by{od?KcO1+rEc3Ta13cV#0nCSKTw@H7C(-Y0%JAOXYfpdr+#PMuj2KImcX2$!Q4e#wau{`o34SZ+6 zhd)W5#bma*!g0R9zjgY1lOo7QejnC5mmNjg?+eax`{F5@v78sJN$69L%3x~C{hIuFhu2HQBsTlX5n`ewVazZs0gXbs!?W;7+;1fIh-=5ks% zC-`4qmVoq8yu&?I;T&nOgLER;7H*;r=~%G+dmXmN6r??WS<=pB+fZgdh>3{RC}aQD zdxz!juupOPs|e2#0Q)i9!oQ^dW1oa<|AttIc$4UFLTtl*a2;J?|LQof1*35sYtRIn zu>(WV3Kvie=QxLbmwkeBsk9u|`M-U>?d2C7a~~3&Z{1*E1f*zpFhvu7JZ2E<+^a)#- zD~x8&P$w<*IRnolBkhhjF&$$A`K?%=js9a6eMv3)j7J=!BK^hR9MAsd6zBND`E2K- zxaKUd{rMX#f16O>bHm?q`EPmtLMfIz6R)t1@7wK2|AT_0f3m;tEZ@mWNJ?gTZW#=>Wearr+F0PTj2>agzcn*IXy#?*KuICueJ$&F=r*h4{ zpF2;SjEpRAW}W}8=To+S2tiwETR7*no(Dw$ z?3;hV?Je^oq#vRi=@Cc^+w2I;#8v9}0AdO9t>5iozng*R_jKoj9=|nlKX&2~oJVee zZQeGOifyiOtZ}#n-+zC?xtQ(JekUs1_2t6@X@*R&pZJ4yjuDP=J`=b1`6MQN ziDQ-{+CSGMJrBWIR}c0boe&=O1qa~u#V1-X(!x6CvDTm@EEDIO6-f7k{oPu`V!JQo z7lHlUHiRSpE_^Qtk4~5XxBX3i9AbIw!!e$tzq#=@m}giX&H8f0NwAF^WZ8CL8T+le z4OYSN@(3Q_W+3yQv)yZiA?-EzJ;n1{$F0A9bBRDaNqPLjVx(jHLgZP7&K>W<{?4)I zHL8=|MRdHf-*=v7{hy4>n1}cn1dsiSXnjbIjHF8<7&hVt`-UOf|7JyW6vtfhBcd*8 z``B5S$+G=uJ)-Y+3y3*cUQ3*U^*93eFAB@Q7lNV&`C;L6@wvt!dS2H>XW93czOZin zfraon9>HtYTOMgKkmZ+fp5gdnU1$mW2J495%Ffevf6_jq(BEWXZq|jqHWI(n+L)T} z4H-C3CdvszNY6<}{UyIHe-D~P-~EC<*}vDErrrDBL^a}A_NUIzvcm6GmZNoc0jxic z&of~EJQvojR&b123;O|o+i5>z`?kF;4>XSGbNAgKCFW!nk91Jq?XKgI`g{$G@I zVfGsXpLY?i!Ds%JeCJ8dI~w3He0~SXUk1m-5txN! zNY1exOMTWJzZvPsNDb#6QOWa~D#HH5IaL5kz;_OxvvVTnc=iE)-*cY`upU1|TGG}h z=V+DTIXwO-^1C1ste@w}y9xW0FT~Kqp;!;+V&0qkmqQ0Mgmu~b^!&aTmStP#TP=ys zJzsI3e#`ii^iD)0KPIM<{s%eX-vxXQKgGHMh>hzkKZ5gC=a|W1d3sLYLzlB(Fyefo z&oDLn*be+|;xi8lznAPoO42dl_p*L?0@uAq0rGbfefRB0dL+jQh3KT67bhWY`OSy- znUCdZ@H%T^B6Y;ECp2}?-w|#kI?owRx;S+_EoPIxP2OX+^ZWQN)I<<`shxEmY-#vg7U3}iYQNc`)_uC!V3DT62u4O zJLj>?$Ko-^$b8V-%XSa z%P<(eH(fwu9>H!Y_pAM`|^22!EMrA zQ5cRT$KbQ{{FZZhIOhD|Sa0C_zU?A5dDeORldAB#{`YsV#H^2iI`CUTFO%wnGzCZd~i)UyEzsqD~8_zKww(%SA z`;h0Ufn;#|mGE5tJ#QA$!+th3A|ooyzXOk9zhz%E7R68k^)VUWk(BjuVVRv|`3yRf zwoKw+3hYZA56&SK^=LEExt?{kBYNW*>`P0*?_bF=lW+`lXS#;u>T3ec1wt^ zD}ZDeiA$IS$Ew$;j>2%eQ}7vV!cHthKXk@Tjz0~S!3;#;_?CHeqUGm(l}9!_hu_P; zvi(bBB%K3yNPmRSy)FCLf3zWO`Ci0%_#MfR_ zNE{A-A2$FV%kSwO;B{m`J{*PR=5gDhF)Y`O@HvKu-^e<`wqYCE0F?7zQAZ*8;YQ?E#$!hSht)z+K%(UdOQ*p$a@Xvrq5Yk4Esj= zH2cbA)KA}g=8%5DI>#@^P5ZIo~Ug z*=Iic`)%S9$7{s7eeZBS-;Dc8gCrgiBI6WoO7Dku#Cr|7rye` z7830@hJI;i9Y8)VShLPjtNHl zl5c_gJI{$vo^|OuY1h4ieWllCOwT&|ecQ3^zcle9x?nVH>yP2F&k--+CaSYs618D} zXCH0b@HqC{wzX))#aN1Z*a7?Nc5t3$A8bDqhW+~zy>G{+Tj&q_u=d0mXpPFaiY#aa z`wQEkeQIvfo_`+3AvF@gzx&y@*iYCmq(TjN4W7^Y^Ez$6*%6WL_J`v66YaMqVg%|V zDw3c#>w3a|Y9fl@8T;6Gc;Dag6zkx2p3`&OC+)tGNPB;CNIyq@(npBf;qQg(q5;am zKC%|;)4=;&ie>P=_hA_9&+;P+a^Mozl9~7iI-xdR!}1CapND-`LRdbBkrnkZ7GqG1 zb(@Hn{jLIx;?y?hl`(_2@6$f#tXm9bj2? zL@>6up4Y}XcwP1dci=oX3Y@RUMPc$hei@9%CDyYhu zKJKF#(xVB6;V$}MFzi2)pfb{M?jdkaFbMW{K1;7>CVp`q>r5xoV~`0U;4zM4KMKKq zt_b@(-!F~G2!hAtPlET@9kz9^!)vwP?M6}ZM`IQ?pe{->{y5&8LjlqqFrBnx&r~@7 zdx~)6ZzsNl{eK;}?3{QjN?|X{zBBtx!*3C88-nsv>X0r=LY7(zrl=W4ByUJ-ktZnI(%CS%D1Tud~4don7@`ezzP1F!7}_^ z;D-P2DZWKT{e!s=>GS-X_CHy_lcu>z>z;i#Q5J;IXXxw)@wxpS2%uMV{@^zRBa|ByC&2N!s(+$E0Q1 zey=XJz_$MlwgcOpV}|`qD7HIE9E~6JC0>{PSABS$_8qn{w{yIziLtOxwEf&BJq%v= zePUwbWOT$UmWRXZ@ESA1J|r71k{5?)Kf4+Bf6-9_bFdc)u$6W8(Q8TDX3aYfpVLP; z7d!^rh2Q4A3P$S zf%C=YaBklbeb9jOeIxo_VS9c;97H@0zg<|ruVDoqu&jXN-e=*kHUN-+s~dGlgSxM;Fo_;|P2v?(1_r#xruPuw8tB zV^Tu$=fZybPjrTTsO@Yy?9-cL0ZwBNdcwAMA5UQYvn^F8wg_DId`(fEYl+A;*>|Kz zW|kL{Z+rASQ?LxSS?lCbIR7q*e(*gk6`qlP3G3Zkv?Ff}ESs?`d%aZ=0oCAfeMgv0 zJZTZ>PI?FW!1|PgJp1?6=!A;!J*Ot@*L`0(K;Cosyz=50`^9iy z8V1kn_~01j{aGHXuo%wYY-dBz487p~ z&f^ZF9J=9OL|}if(|6n5Xph$1!!qjgMr5EK`ZvasxB>r0{geFJxW{&mJ^5i-1%q|q z7Hp%oSMT5JvL2j(WpM~sk%RsGM${ILhx<{V;}(E_i#g1`URxx@M0WOh$-VU;T1V`o z;*xJ&^Vuz6T~A`2z-8<32H0opLpC_?d5U`M*9)&n&xFUVMvO;ZecU5`4)zz;ql`$w zHTk{y9M^Y+awtq&EloQ=fmVnJ-<_`_Au_X#{X%c{$%JhjqXOFCCB9=L{CkOilkxk( z7BpoazZ3Y)*fNO=pN;jpHy*)j%#G!+efv$*`dA2m!FKMk?_mb}??N-!Pke%X$}HID z`n|R(ye8)|F-SY6C+Ga1i3f@PF2L^>e#7>6>5l)8$=d+G*$=@Hwk;3;4loxz$#d-Y zZ&61vj`Hz0iR+k)ETq4ij>#xvB<~pg-)7eDX1n{8pTD2;GSJ zKj}YE4qY*Web=zvTK0L$`TXrc4bJb}DJYy1ehhq`_Wg5VU*&wke9N;b+|GW-zQBIL zK4&^Az_w&P{s8OvWuk4%b~Y6|VLKau;rLCx3P)T^90mJ9*V#_|2C`XWj~2>%1qf^ zBl`dU4N3kI%BvavWxHhXZ!L~*)~E9DIvWS3ZErI;m*eezIL-{gd<;MeIDR_U%?iuX zw&S&Bf_>*Z_d^V1L>}@SyTZc$t1DWQb}ryL&uPDrjkp6>;rTLPAUxkG+&~hfgxi** z9L^Ij!S!R|y2P-342NyW{o*4L>=!oUCg(eem86~XJMWG|xr`*p~{C$q=ZM**M z`XJZ$8sFjHZ(6{=d8I{V*cL1kpG8&pY@NSuq+DzR_OriWnPrC0=qrwsUW^X#7_~8r z{OE9ew~w{WU4VVF_1(VNzT5ZRt>}ycxQKso9+PkcRpEQ)Y|OzGbmy46V4bl2Fh+?xySMR#jpj=-E*KW!oquAL)?JK98X?LYt(}G)CkVc{l>B; zklzm~V;Xt~uAfKRd46{sfOGY|h{}5JDHYPP90tWO6Si^NyZw=KX^-#zEzlY}P!ypM z3(?rFHau5ejKmW-kMNzrZ#%wY_-@e(v*A02-?74@Jqn^8{LWC2{d`YoLu>`#3w&pA zyB_dw0R@l@eqSmHkNt`Fkqd|%nD>)(8Pb!{8TN<1vwRQCFT%3#US7N3&*I=M>-@fC zd7LHP2;DFe%P<*J@h^h0O;|i79V0NlChfj|6RV&*cEJ05Knx&GBrXnAi&zNFkv~vL z;!?~+ad75@bM8d|`cDVp>=>QQ5|G?nD8+WPNU; z$Mg8+kAugnf#MjC-gpF`X&a7F1$RhCCuTry{Ks+y1Rx_?;yQjK7wcaUJ7N&}2S(5P zo@=m7y>8338CqjGoYUFHZos-5hPqBgkcv#OdDiB}d0c<<9 z&;{0M$KYMWMyP=m@Lk%v^@e??5D&sO<9X~GVzW<3+#>Bc`{Eu7ke41QVLx(`yx&Mi zx&%_de&iO~)2Ez){jPB^e7E%b%5TI*E|x#Bt=~%Oz`5T#IBz?Or*O_)4EAZxPujvh zxhQcx(Rs{r#0t#!+|Db5aD3-|BS<^u`3~-!I}YsE9kZPW+qc^1mm=+4aw%pbJp0CC zOqqqc=)^d)nDNd3H`;5)tQx%IW@LPOjb@BzKZrT;nf!c=fBtvvKN+9={}X;--vu6n zV?M(=w1e*&Z#maiIJdAI{3h2B4@pOZIjsDuni z2j{{5y=xyaIP!5k$G-(gk8=1E&K-Bcajz9dA_9CTYYEFGHNH_+!-!tD&(pa^b5w-i z7JS!o4!(wE=kbm+T@jY_BzP?6Dn6%BM8_}FJ_E-`-{;Db-x)r?ei)CK-Xr{-SYteb z^E-bJa*DVL{`=Yf-m@(R2lDrtkVG=yVaTh8IUH7_<}5o{-EQIPdD5E~8P`;z;F zgV*jl>!a@{QQ>^TIy?%8X$v)pQ{XXw!}pvY7=!C*XC&V`X?awD?`Dqe&MUlc=cm@y zkZ}C=Ja>tfV@}d;*Mqe43*S*&5U+A>zjL^a`&zG~5cd#IAuDO0!9~&&VOj5nbDi+0 zLfZRuuIRI^hMDAzfcN1!uMrPoJ6d5phQfPyeq%dy9^|$5WBdGYu5tpG;r7lsW{|%M z-kWXFdAHZuh&<;vCrQ77bDk-19+VCq%YB-X{uha<7k7!)UCYus>N}wA#5PhI9pU`d z-z+z~nKb^=tH70Y`EPUgNo|x}Kd|%GQ zH{}<^x-9$ed9Pt!+k`$~1lz}_Z^%U3cP{Ji#2#|&m9P!R!U*^+;3L=23(o6pi?-PX z*a+Widm=2pvMw~yKA|eAv+O&C<@gNN$tAFyvLG5_!Dr(9@DS{iJ0J%9M(fm7&r zIE2J(x0&d;yadiooma$0YB)a~fIheauOTfw*JxP&bMX@qIMzg>W4G7j95EkO;|aXh zh45M3Bt|7xzy#P%E$5Bo2PfKokE0vHz-_Cs&N6R_1F&y#d+#So;5J2x=UFaJ^jW;Z zBb0%24A1R(ocH#C*Wr7;&-Q=wiNWM~uKe&^-bYZxgU@9*oR>Oh%R%02oPp1#DBN}z z>yE-Q58&9#iI%Np)(p;D_ahqVbjXOWEIa3`jVTxk=iAO3|ABMB%Wy95oIMg;eun#a zi$di2tgKsZlL`~yvyF;FY||GF(GERv8|UFMrn1d#BtQ!I?3}xK>>e151#rIU+&w<) zoZtJL<$YFy&nXI=b2_KD49md#d5;#PeQ)xfoFBXW2~>gQlnKS~nRWBveD)pElNSnJ zpLMAp+}}C0_hFg%9`K#C*W-Q<;kCG}$G*yPFU&d~C@3XD{ zru{?qy}>d3|0Vbx%HvPvdYrdsg?}@1Ja+D$9W^iq{!Yw!uXCEss7QJm8sI9+YjFyG z<7zH2z2cin#2cRTNNPT_IArm`&itetDP?{uUHjP4hS^(TpU@D7f@ z#W4cTBi^GE+QV(EU$f8*S+Eq7;B{Ju9nX7XE|MY-HliZFbN|2a0Fha?E;;Y0gSO=5 z#01z5pCcIg*1goOhjSm>Mw39csez~u`^eC+O%^7Wg?*3TEc~Xi8jTPJ#bE#JyL(f% zv%hFSx)SW$i?Hk%G8&E-j$iiSeX$OXJN7;H0sUeBXcj6m8HqWtj`U9Wt*H#$E)k-lA}YhOYmU-5%eIwq6a85BJI;Rij2vT4AHg!5hGpe9 zn&QX{pLceyKRViwj)eT!4#y><*Woo=PkjF7Z^asH!ye2CTy{)N3CA)0~|6_Es~;J&}%vunt*V@-G3&~VsKyn^pm{w{Vq{ogM7OW(u0<08x3kP4Yu?>lt? z_ItxIE+H=>;2X!be3Fv3&RipHSsGm~1+Uq8<8k79l!xWH6qdF1%kjK7CZQI5ZqDu8 zW*vNDWV^c#dSGi@EU-e>)xN(0*}251rP+*)%J*n(1?PM9LGMx z>t0N>4p{cz$+vD=Cx;*m>(3HBZXtw)-#M!jJEJMQ#)xpggh&MM!{aT0*HZ~05C;FT zzxy1(UR=Ot*ryyJ{sr%)K9;~X?J>r}b-7@@_F6__8l1a%&bu7D2XO@E!gg$(@jhOY zc5ZB)i3scEaCl7HqIKK;=n!!#vLGH3qXv9#S8)t4a0AwH=St4AoU@%LZ$B)bp>Us> zI1S6d`}>3K%E7s#*W>vtZ|g%wyyG7F5IvUlrw+W|lCZ6~z2&+Vd11M?$4AUZO_*N{ zX>o<)B_~>@Es+mZuo&LI)~&@1xNl(uMIQ8q z`JLhQ6-Osrg7;Pd%i%T8hGjPmRnQd8Q665O`)|ckjDzR&x;DW)%dR8WV;j#zx+FZ0 z<$WHLV18Wm#ANixK)k{jM1=Po2kSy`TqGy$buYueh!c2@jijrhB1XdJb{%b4Z=JV& zk7oHH$FMwVz~|<j)PdLA3hQBezeaok|3=}pb;JKP zb=P6ER@MIYkrD$G6hT@VNl6ieO?Q_dUDB{O-QC^Y-3`*ID4i-PASfb8NQ3gbKj&TR zy52wTYd$gOi0>G4K5K9G@!TKm-xhxhTHMp9F7w1TaoFJcz(#w)epbU>gKwJpHrp%j z#>t_-`5YtkpgHyxKXMw*(LZ`^{N7n}deELWM)mz;*iZJ-<6WD7SLhM;z6vpJ5s!wx zST^Pe{h$Z_5YBD;c)D;V%n;T-AGdVvTlAa8y9Tm@4$loxR&Bej0jIFT5Tv1v~Ef zRofMs|HIg;Yv+O-!p6G4E?5t=6)C#hrPv)p8IoL5YFr6W5E!^sL;3ThF;qv z>}B`%(olD2#|^Pw%pbc4yKl6oe;4C+te%eD22aW6D@FM#eI6OX%s{!ruO2 zm@`^fvs8T4`VYeT731e|b@z|PzvAHTo!|4t*ukg$b8oOadK@3VE#rkcie3J*#5Y4e zlZG>4>R2O=3fk=&D+k{n=MP(Uy?%T*F7E#2*uU%N-N%h#?e@XuN+GVlguS|2$YZnE zIDQ%LX5)o;KbGtMh*&$EOIOFz@mlY0i+_Y1rVpBp2swTbVxZkq%~_#wt(YoC#yjy= zsNvtkx7>L!*I=}l-tD>b&Toq6x_%+7qw%LPs^|8+-ku@8>e*F|w+4Iio4(Qh`lRcZ z;_2{xb-ukC_l4gN`iX6O$$tMJmg=0kxX~H0Q>+sQgg>{O+vq&_JpA@PKm6T+{~on} zztPw1xB7wM-?cy0{WCp(Ax;hdZEB6??$Vk!TJO(?CpL~1^M`m`(@?LBh)v`7AvZDF z*Y@vc&G}xVGtM0Q6Z(0+Mls7-E%d_2;rsC4!88886LcII=Z8A17mLS>&7&b6>{_in zqo>+k61RrEtWQ3QO`7|=M)Tb-*Zog}&8Wxw>6gzhT^xkF(;# zSibvRWB(Wt^M)9lv3G>uW|zhvW7^&w)_7rj5=(YJT}&AN?*6yo?7KOp>Y4oL`*rt+ z$MJD%u)A*T7S6Am;;y(Z9*Qf1pVecN*dh*z^Fut&$}bxCkFA2OF~fXk;hynijNQD0 z8ZQg_itqj~%E5SgJQ&tp9!JD6Atq<)4_h~D{5*WOd}m&Y3u3;Imw0`9=)~T`ac|5R z2gWI}NbC}Sh|Plz^tdSI&$gP37v3!s?)imW9tdlWi-lr|xH7hj_r|R5jT6P(L6bE? z4%Uiqt>FLFm@J#>ZXeKfoj5Y~hz(-P!Sz0kz8Qas?Sn?21bZ9DVzFze;c2m9$aC!2 zIZlY%WB0-J$&K5@bD@XX{vP^g%JBPV>KHe~YyUcj zm+eVyqLV#n$m*^R2%wu82c|PLISl)8oZPIESa}{*R5$U}w8?_3ED87N2*$ zf1|%!^mic7c0G2Zzw7gD`djz^4BwwiV%=bqhHr)6Cd@@;4vnQ_kKP><=f#FGclf=a7ORDCx!;}dSFcGLrwPA5;J4N%Jy&Dj`Uzu}7(3qV znYmkrdEbZyVygIgsQuQVzJ9BijnSK&;PB+yrJIyExG?zd2jFi_q3~9J9Jl^$1p>_|%|KcBUN6^dfS@kh48upeNzuq(Ze3w`$ob6l1 z-0}B#G_DQ${4K_B&CEgX7rLkAN%7aN@pL%H&Wba_Z=F@+)Hom}8;mbC^2v|0%UQ>- z^ZC&DM?4d|hjV?Y!S#bc-v)X4z2i*3CC-c8V*K#?;Pd!y z*Do~wK75Dn3EwI2KMv1*n|zBs^KG?$s(7Mn-<2`C{y~f#Gl%cqzAtQH}(l}8d_fLe*w?+H3=AM3_SgVFT? zLEC2r&~WG2E5z?N+sZL2%w0Ub>bIME{XOKtE?;urG5mJgJLD^$r^4^;*<#xGUWn6s zzW)?o#N<8KuU~cj*SJ2^i648;K3F)$3cn5X{rPcWj2?QA{iDLZ^2}U&#l9zeW9D_%80%I9B+#y8bP}UcFx>zHaVO zv2gg#evyqy8vS?IU&i&_zZE09zA$_fFN$|#MC+#w|K{Vkm?GAUUE`E^E*^+w;@a3X zzZ=KS;ol+ncLM&s%`S0!c<0|_t{h^&D2^=lMf!fO*0N-LAro0@!fv(>R-`^cVEMk2p{Jr(Y;qPtyp3oyRmY;v4@qhoevGL;Y z-*op2|DI>6c&~ZBjlQik_%d5^nyTxM8-2r`kE23<%f`y#?_6dL-@rHP>6_!D*rfY4 z;#=Wc^+4DUQ-|N}*N6EBhVRVnacL+Pv0GJ9Mro>!!vrw`RCo!gJ#a#gS+2^8Z6Es1IBWjz z+-m(caZJ1&pNBsi_{RB89TxA$>*4q2g>i3u9qc$~p3A;7`K->;6Jum79<#G!_ZxJc5c`e6 z){3!oEFWq=TI0{cH+${aEEWyF!Ilht;klT6@7Z%c91-l;Q@OQTh8V@S!vOp1yXEC9 z9Y6lly>mwonCJaIv1z=}@5P@sE*9Iz?cwaWFvNRKToPilcWJ0rd@mli#Ze&+<4JKx z(8hRQToi}LL!qCZX}mdTvRB+2KkoTsjkLHsth48RWBwM-khdE>cRq~~`ugFZul&TP z@ARQFbb**FHjW8`e>NTn=d&6^9CBPCj)@QAFJbQKK`ZB`82CIQ=Jrsu{bN(7VFNz z|K)L5ycQqEh~zJ zoNxB`n1i`HH=Y;E#dfhlj2`yFf^ki2)J`AKjXrvVuL)y|aL!y8>^RGuC#QsOwQsF? z&YP8DR5*k7jE&;m?8$@Qy<^vyGbW1Xd#CsP8Ghc-qu$LJ_Qemw`K&)^_;_3w-mMd} z#`nS={6(WP?!~Uzbk?mNvxPnHEWJ0J12;8}3O4OY=Na1%#Q#G6^!~i-SsHyeY08K3 zjh?IjCGkl(Q!k87;y>Nr5PrjmjSaQn_sOoE_49{4DF@#S+FcZ@h4Xa%#^d7J*fwY- zXBur2-ov-R-@}cJ&%>X~{2k`DF;C1K{;jkByDEP-=+Acd#_}=z{q45^oyGNGzAuZH zWAX0aYW!2^tL?krGKPJ0X4i+sdND_=5^C&BpxxhFBX{*2C;rj3Zw+18rah;#8u%8ey%v^eqbCNx5kmNV|>~>xs4l32QAl#4MUIE zS86WTnZus5=be|%Ip47h!d%e$y|^*1i^F4$SSOrM`t9y;w&`)_+LEz**t;V`yzHB! zmg?}AaK8LI)OMe6E*%uF#))AsoE+>rr#=q*S`Vu)!z;b!5Cu*dg{6=R9e%bzuGtN2~$-J2V)47#(YFTQ9TZ7@FF zwR3p-?q`UpV(+kL*?p&XBO3W#CY&?&wX@)*!8`lOneyMT2b}+UL!UVZ#vbvlcqu#o4%gP3>v!PnF>`#vBfSC3hO{Wap_-aQy{c_N;QKgQ+petZ^B##`}lyb|xm(C#x`^Y=kq z5Ua(iv3rb+BSL<6#(5zJw(g5#!}tHi_-ou2?EN$Dk2zzy*fh?My9eywxMyr02gfxb z_D90AbA$g?Vzam?E{^46xi~1S+ba%Hh z^}ad8M-y88Ies0pgxuu%tJpkl3j1UH_P}o&M~3mpP@9Y5x%fEj&0|7-XU09Dhfj`^ zg0{x5-nEe89?d%CLMU*h5Lj7^CD(NLQ`Lyp$c+4y1D?;kZ~qetnoW6(ow#Pf0Zj(pkZEVmEDq~FB!b;##eL8HxsZZCyeUlnSwRftPJ zy&h^KM{#>TNgNdB(?ooFeY2n;+vd{5`K6{u#!jIx#LoB1!8SeB?ZlvoTEjWXFT2}? zx$*)1J`6eO~#^Px?sB&IXKSo}m}kjfFx_i$_oCTi4cZ9oC%` zo5rdkSALHTcGy27jta4z9zTmY&GqvMh|E1r!1#ob~3gCP#uUK2;g z@v(ncLxZQ|)=H1vsky1W=_PYdx( z)I0sEcgBs^diFx-J=nwawf>&CGT325TyhuVZ{r`q?%3JUCt`lTd%4{ZbpA%qoL|nO zSq3B9w}cw=DL>bb4jAU8Uz|~T&0e(+^@(`zjT?hTM}!*e7#D~4_U9h4ZX6Vz>j}uk zxvKB^5{n$I`$Ies*6bDZe>m=ni(;!dGQ^>GwvJ6gJ!rzVJiMc&zM#j3p~v)(*sqNP zW6#0JHotP(G!BS6!(4HAr+4oUHP?6EogKTzm0@pO5OU?qJ#8P4D?;vv278Ca@v&Rb z?btXm%-b)#w_bgWJBL1&4}1Kc8wuzT=eR15qjCl ztlK6=#z7&Us|L81?+$TYsQ(#pR-7F2-Z%JNC%l(~8r#?6TqHINahwp&h}&amcm1x# zX}{eXdc?>l+q=X$!Ipm5ImCHU$a{^LGM0!fg5KuR)f{`6Us|(k?Y5zpZU{Q;AM?iI zu|fPYHVp6OxOS`%bYkn6m^ywGV}`jK$A}Q`sd043>C8Ac=(AFY?}%6{mJPA27xbaK zx%47!w44Ka2T7PP>M=)?5(!gP%!)FS_g;n+H3zQETg_kFSgU zqxeDBvxVH3iRI!a!QbjZXPS!1`$d8dE5__WukXhAAvXI^o_bJhuI;a*VxM5go>)29 zrS%daUOKv-GiC{K%^aSIWvQTnQBB3MSWFX#$05PqxIv@6W3Aw8(O50E39-;YO?MAk ztFddfmH${_EjvrcFJh_?zq#TPqny-yRPaY1@6}+1m?5SJTCEc7EgV0O3FEzLFnQxp zdoju3r}3ST@3LXO^)!{|YxbT6L$WBo91g0Q#DvEH>Fvv-#bv3%7!+NrNtmJD-gCf9L;Kf1E7H`RzAbLFg$ z`5&hdV*f^nk#3vC_OWGbJ-CahKBsnP(0>}=fABLk9QM?J`&T< z;xE0^zhWIb*w!OUgnpFEoWU3SV*O`pMsK9QI6VJms0I6a_xEv6s5$-BZ1(tf&(xC^ z{E0ztyx4R4sjr;${*uAw=RJQoE*;DfzrG%$@zcgPgEnGjdy}B=39*0BPaOO^OVn81 z^u2MKFi&sVSNc!B!x}s1>9bMj9d`7YxSo#(;?=NrwD?cg{Cp=q?D~uNSGd+YQ-nPz z_wU7RU0)x1?&-KQJ`QpHt?}l;J$w8(L+Jl@*LqZq<+obUPrmk*xb+i%^b(VGZ*@&O z-(I75^~mcX2lM6eyYA_0tv(Tx+VHhSh~K==dahsf!4C(|#^g$uKyh45AI*+nqL}>47xlR?+1J8H$@}6!y4&h@AMG;?6Jqg zUezOGg`U%!uY?#T=$XDyJAEb=J+3!s!jAPT1ub0b5&kcWi-Ik^=Dc+t*hk|wP88lf z8G7s4pfMlj{4p*J`$@m?`A%FF_Jm%YIp{g8haRWf_j_hi3wc-%3Gw=4WS4Qi-a}1t666$kJ@F5;?u;j*K(I87g=4 z{~GL!8S0@n&IY|lkLw1b=bl-AL9l1OGoGD$!Wp5S;#RN6!z#jd*P<9~(t^|>6*4|P8_=ypWtZ?*Yt zBhAl?*F!DX+BQyz_kvCJVPngijkpTj*C&TPnffN91?ql zJoMN&#Ulqc&AU6~#?RRyMz;5lGeTYIxOW^7=FoGyI5%i0PuKkH8Em{dK<@U5dfgev z1Z~t@OmBpq;OEBBiywu0i5+r#H`IqN^j$v=47IZU;n1Vvpo189i-SU*r-r(F$L7JY zYp4OecMN{i(pvA?XY<9Nz4`YB9bb!kg6~~|{g*?puy4L+aylpO3ib7jPKSnfp6d~N znpU*FEab2M#C~|NskU+&#%5&urMNKm4*nku{dHUDM|tR#`{S87AQldFppP1QcWYQ@ ze_j*%z#KMde{|5xGkvOW#7lE^T{m_OvFZ=8ofTWeuVaT`L#^1OHDBtoW6+VUed9M_ zJ^mDb4z*Sfe)b6(pBZX;Qiykt*gdWYJ?wguP~)v*&ybtgX~Vv{oj>PShZ>XQRX$NtLRZaNi>+aAu zYI%698q392p%%0fk2q+=r)&ALDL?s$@scp-kMU?YD>esHNL(HEv|i$WhWKGD6*ST3{EK^;FvtCN!6xm*L4%co4ok+` zv1_azeDHNsn0sXG6=GN`)(kyoFUVOh*teI(6>(A=8rJfuhUP68D~Fy~V{lDZdjC3T zV-&mmP>&KtP)FvI?Wp2kC}si_Vo|j z=F@q~SUBh}R<`&wf4*2O#AuzIt+8H>X}x0nDwYZHE**;wMmEn3Yu1eoLJsU49(?Jq zvx0uE<#%q-$6Q(+7W`XtVyNZiaZwx?^w8Hd|5?as;+Q*D3w=3H=oNjdK6Ax_p*CvE zk9b|{ExE9HdWdD%Go!jzEB9=v;jM8}$cK-O!~3;jMCggFLmuYom$QQ=eDUMGJ{@YL zwra_~S}hxk#0epPdGjIO%R-ENo1^FVjl1H-xGm(iQCt<5#+JdSn$uYho?jU1aC3-N z%zKBPSR?e6oEC~@Lha>A6E%{{7O_LH>)DMVUU}>s2M6EcSv1r_9%4~LeJmeyXtYVp z8RncFhlIM(%3fjHwYbj>^YpK0VjC55;7@$R`g*RXHjZIli*?PueX38aJ1@k(TudJ0 z$7;bBXsUMlX@!_SW)Af@Dvpn%Lp=O=PM<}>T+cnDp}ht*^lq5{UR{exY{$i!!6uzf z5BrA}^fP*Xad=1nm13Kq<;akmYtQI@#bESIUoROO24BOv%9)0Am@k%yU&c}ce%?4& z%n<5IGxPV3&0|EU%Ym_V$ZzRbHI@$=cy~g`f9{w!ei8KDH`rP`^smucHl_+b*{98K zWA&IR^s4no1pV#PHDcLdhc7mE54j9$#J06R3;9kIQ-nO_H7cBca$YUyHFJy?)5qlT z-*5bXy{o2tu+N_Bd19HM&98z@y)a|Qov&GfpDn^1aV!>|%VY8QUQ8O(1)t*iewgE0 z?bUdJ7&F+IHE1iBIb)LeW$3qY!@SRm{fn5rYg(y;*!ePAOZSOG-y9M&2d%_1TUa+T z)P^6n<*t8Lh&h4}d8vhcBo=)p{)NMwX+x}R%lRiULC{n$8Rh8OIINBJ^75Wvw#CLL z8;gYg6U#I~Z*%!mPxc@$XN4GENf)&hmpr~3^fzzVi}LtUu(MvMpSWql_bS0BJ8b9! zeMB!hu_G?Juw{*!svjHb@Z(S$Imm@(W5-+B{AS~~VzQ72n@a{=_!#zqm?n(x#JjCi zck$>^_CN3bKQUI<;{^TXIc4Yr_ur0pn&X-JvPqNiLY!jP>tdZX^rv`dicecNdLx~@ zqba-7$H%>UKlI_-!N=djGx@34M_rH6C_cGI1py5#w}Wj$FmPbnrn7wGh9Wu}5n$d+#~>>cqBO<@tIscxJzNFF)7% z!k!ejT-8VYr;V?>ek0V=d*i>ubG^lhSp_!qn0T{zTWnV|nXp?>04cRj9l^rN*{UI_l>t1r!=6aA)Xgf(JiUmvhNBE+J9 zRtzz%9p<>+D3%LxIv40OTZqSA|7XxdY~zRgUJJU=jeh)^D^_{BcMh%=a?~T%>H~WH zqj{h+Kk_i@0shsK4f*RCYs5smRl*$kK~LxsONBh8J7wgs0aJv7lT~* z@?1~qFWSk6U9mnH_Ou%61v*ULwZ7Bi*1CVG=YI&cX(uLo_Px-XdR-5FGiDF_j6L(^ z>UwxjOFC{E8-_jXj8uR19w*dHztM2G59DIM(o~-;5cVcbo(;XPp88iF&xf4ZlZT#i z4$@$(&{Ly@bBYhWE?2tgeZI`qLkqHnPX}h_Ie6_B!q8P9J{Vi%m{H31@)snQQvmW8x6Eo@Q5X zutjs4>Or}wuY2ogqONoj8?D$dPt9)+@#;}A>ml{Gm-Pq@%;!&R&LQ*VDtG5CyXqwl zz3AMgoBp=O9Ce`4i@~oxS10j^Q620%_W64?)X;p|>j8Vnd%Ds?j`ww~4*b&Pp^%Gu zIs??{{&*tp7~Ip1P4C&_!+Cah$V!VIelEl*7w`CcBxprrcJ49EVU6{F4A0~-tP|gGcKs*Rla_jjO*Npio>3>cidj#2 zFAlc6H`h5OUwX*H8oJO_zT@@GIYJ9_oE_Gy@i1nwulJ;9kAeNk6Ea+R#)?&KWkvEI%=^=ggcshI`$5KI~_6#3*Ju z@*`ea@UK4VDQ0?!W%00g+19_-S$}8PSLV@6pNh}gFG6ow!@fM|Cx@rQ`e9Du0=x2{ zwR!Ba^Smf z&My0ff3aH2t~mMEBlK{F=|T0Sr{^?)_|=O&^$;5!)W`YoN_-Y-W4&7NWsMsAH^g^K zh>so5<>IV_I`Mgb81<^Y*K6$jHoUX{>7#bm=qI+tE^l-B)^B%*d|wPX>RGXQM?dq~ z@|<4$%1up%TGNP4_xkE5@m1H>$jch~tC1M5jGIGULsx_e`)u-xH#0EKQ^p= zFvQEQyl6u!zbAYH#m|?Ts`nYemsv4Pd{a}Ybxm_QB2=#(}BM0;BbGn*mEgy2D zJ!oaU{MZnybc*EdjBW9V-FVkvG|w}0oG*OqWoNYCDE1Le#Xv(fWK-?L@%s>`J)jnBJQd!v zsgLMkFIn%IxYW#A>*(iPG3S9W&)KAo^cBmUJ#$9LUtfs-o{+D2tydd$&|9?l<6yk4 z@#fHnSH!I$M!DKk^wYCya(6ry;?QS&tE+e7`!vMhUTx%Qt{xVbcYO25zI%D{!R`fd zM$mv(^k9Q8J$8GTBM#^r^?D@KNng`b9CB3;e$@B8|KBw&Y|&0EdPpD2<%YO7J`8zVe@oCu zPOpS#uIZ}>_v}HRuzzb@ z6-UJRp$9xu6YIprAHC?KSHupwvrkWTxFhtqx_f30AL3+-F7};gH-)~wHf{`d>2Y~n z7wRkLi{jikJ#Gu}(4D?=x-`xX8kouJfyg~9LD;kkP;sh|FOENEz?-vjY> zh+o~!5gU8f%25pB(u;cM&ajSF;-rxpnL{7nIX>iSjlS^y%#i!*@wYISrk{pyA^qfM zKR8p^w_a@e_2M`;PKo1#E^owZ!MC1}w;p4g9(u_ANg*yV(ZxHl(9zt>Le8GiPj86# zoVYTckB5SPup@7Mb$y8Kf}pkB#B)|06=%eLaax$85BXF_h+7TPz<*&YCw2pl`icv104IPYX zA)Zs?gt#iy_12J^d}ue!Rgbx+o7nyoax<6C{E3wxHt7Fis5kxOZ$GG)SY3;g4gEte zcApLVP#$cW<2lX5cS-QUhPC>G{wKv=aY~#QcZK?15n{IPs8AnTT1$6+p9mV#&wKNq z3O3|oF5M1}{Rik1@vx;1Vmdue2y>4Ny&+CL#J5=apczf*1^LrojQq)kEjjBC@eSwD z^ME)!tmQ+@?6Dz#vAAc4e;Ud~j$#{fOxL(D?g{JFMXltzPk47u=oPX5E7XP`bNRS9 z#PM9n;h-4m)5zI>>W9ai3T*Jv6_ol{n*+$jtX{Y zCZ9utFZ0EDd$7s=)p1Ll7-HBWwi=APG_oajy&z`u^lu6Ksm#l$9_k5@u0e+;_O%sC`R{mZ6UJo8Sy=)sR3 zzA@xKjN3jEkLUVI@BB67XfK#|dJJ=Qy<1qvhxo+vrx5$eK^t-C3%>NUe9Todddc5- zLD1;;A%FEV_x-^=Tl6?D^rQNTMJ?5okLTj$cs$HE-WOtGPhW_E56}M|&xZQw8~){~ z)@;h_=>ar$E#95ukZ>kgGo0fcZPkZO>yHn8Zq0!qcd;B52L~OG47rGje|0!07L;Gyx`~L*f-dr5&dr&T)S6)b!9`}vGZ(*o$maI{fJ;!9mOR^@8#f~-m*qr zT-&>15W98e@TJ!B)SLX8BQ|z+2)U`x{UO#9;?NMA+Uip^5W`{Nnd{Sn{}Y1^dhQ+a z=Ys|?-yFRsH+h&pYB2J}mi?iQ{EPYC5U-fzsD5g}_XQ!Y`{S`tCz?V2V29pxu`gWH zgBE{{m*ckJpDi)b!+d)1`9#o-??>XE!8Lngmb3ai7xvI~p-0q1Z0hdWxgj>s#b!^_ z#9a3@+Anqr8p=_w=2+vJc5@c6Fp##IK*^A>>5YJ$uaD|=enj9-NdnT$kTfE^@=$3z@0&B z@jnpa7Y`kceCbJk=_hXSv;T0&onJQ8;i-5n>|O8FO?-E7Y40{nwl>@ zeIplo?h?*7Yj=-rW4n+OzxRbat&z7}jtTaU4BDHgE^M-8-cTnwTCe}aXbvA@)9ZZ7 zS&uqjyx%{pVSCTen=}%;xnkZt#L13WwhHg~IeLINykmnOJtRJUY0Ktyp}*8_pBNP* zL;QM*E^^o3+XNf*_DqcI+!JDV9_TOc*jXjyx>foAx_T1ZZYQ_fpVrQGSw06%9E$j<@_f*&$>P1WXTphII`;zcX zY{Qz;nGc%qO*gTqhyJ@Dtd*1Z*3o9`7}l5#d2JVbh*5v*2hi5swZc5M#J@$*%>C^_ zPuJGi3;c+KJGY+HV^Zxlm8yUK5gY8F1=*UPNCPlqqBAFiNW>8;W@4OV^d$6 zLm%rd3fj5W2jZjAC1IX;HVb*K8J7pmnR@U4f;qYqt1hWTPpC%E1#%$1j1uMV}Kk9D3K%|9o^ zw{Mu^nSOG8dYls0*>hsKCLW4ALj3%A?)ucAvwPQP$FMKywqyJ{Xe|%*<%6$1gGTBn z7P;*f^jE7Lg5Gl1*OvzS;-l+LArG<34ZjKcUmU~S#Y-dF4)rnWKQ$3A&FmX~jcUrj zJz}kxFN=FaUTkk1tHmO*day4}@vafS3bhi`hOzG8+A}%t9%8#BE)71^QC#+n-Vi5E z^ew-1Q$P3e-744>3$4r*ziYPCMqTy~x`>hHd&ee0ce%(P?CU!*d&icz#Os-JMErbi z8uD5(=q48PuL&`FW}j>y2M(^!YGhB&=57~k(u!sqgf-$2>$P!f&=vHuX3Y?XIoE~f zJBM1)h0UFUA3dXmp%}i z8rysJtoK75H}87IV1w-&f_=4LBWNM^jl*7{-)@7EO}gqO&yEf{SxZlO={xJ~^`l}` z$Y;x-i#X*=XSI;8_~a!&&)}L}>xY`~IWqL38p>Y|=9!~zs}4rGo6D|s>chW1uu5DJ z$AmfF8QC$P?n{OGu<4oj)rU{{sfT;9isgvlQ`~eoFT`Y?n$Z8?U`PBzjlGlqUSTf% zutSKIcE)`|?bMhZ_S}olvtho@5Nm!FYX?0}4Ew`7bs6famin1Kv{4he>f@o!)4D!4 z^tkwFroY4>Ci&COyX)iBxGcoSzdWp^l{IwI1B(pC4I0g1ORv#q`4Edadh*z~I^<}c zxM`wC#d1!Z9^SDfmMwxduFVlAUDU*S`;jJMlRw+;+0}DrhI52g^jIipDJSu%n|X5Q zN4)Nbv6&|q{i43+uM*3J`mYmW9QG0$%ZB%CirGG6W99H%zI0Sa`5YMH zqrNnj+xlVck|C#~LT|9UV8~DY?9ok~#3UE-&JnwZxa8y-bQd4{*3->~k(>QMOMN6pdgw`WtywhaNt@vs@5QaAY|EKVy}e?{T^@3>)=1wS z2lwJs4|7HguEn*`;F-APW{tep4t2L@j*rtr%-+dC&FL==`%zBnWj+1H>Y6U>(nPHL z1?}}2J>@`i*L<-nE;$W*m#%6eesQU(emFeXXKT%%0XyuAlifXoX4Z;FobKtl(qI(B zx-rz0zG9#w{rK1a>SM0_hq~}@9sOMEJFy)d+XP$U!+f!H@GC~OHV*ghfnC#5?((3a zT*Xd1F}fCu{-X~)^a*|WlQ%ooStCw07oYkWX~~wJ5HmkU_xp$V=_yY!((0gKS3e#a zYAuH2L$0)@1FhIF&wTppBeC#pAKJg-RIj;%Mhk{_&{s!>+|+^Q;*f{lat(2+kGd=s z=CZw4(3H09EixF{6W6d$mg#yJ7oFIlqkQ=^Z&c6)r^OK=e?F|`Q!F&4fos|=J-B9b z*)Uh_XrK>is|M<=)~>DP`{yB!1w#z-rV(w;@y6s5Vu4_Dw-5sj=)@-7#2^-RnLmCJ>a;}Y!I^`G`enb6 zmspnz^M-NLWq3``m4ZF>5G%iI(9$SQIf{L#vFEf^1GS~+{y{G}n9B}(;-;s2*VYX6 z@LaCqTPkQon-M|3-3QRr8gcMvj=B1AR5)+gm5baC5ASH_nKjmn$GZbUe(ZYBo<4NX z4*$!CXJV$mob($z?24E63x@gf7PEQkwn(VULP0}yRTKMAj5PF4Y;@Q&b`4s%pD%tE zbA-8a6p#4C#=dyu&#$_QNgv8X-4_e7%2nKIEIzjQmiO#o-7kV~vC_#L{h@C9T~6%o z9qh0x9vXjJ-_6_|>Q*%ay{xlBz zOfKU0e*K`OSgrSb=};d&HwpUf8vG1%6?=w$k&k+ajrMxPIJ6}mb>M?O z;+Q@7@k|Y@RWI?)9riLC@*8Tz$IfAmwF}3RVV!$xX(=z)bA~z%{dle>asi#!j*a5r zU|SuBn#faZ?9;;1ni@?J024Y_&_v5Hx}=p`36HV?h!nLNZyTY8919IibZ>P!=U#pK-#Ax5yT zXXt9pFa~vzvpS1|ZT%+>HIgUaYR5ibYlryMm?nI&Pd6hQYCNokxqAg2)QtTJgYM1( z_J_Ww>w5fF%<-PD1qaujIXkRjho1I> zo)?diwy@S-78hT%^vpbU-8l6Bh9N%lmJD{q!^aFk8_&)6+}x={UEI@vU$Kja9s5hYPvd_74kxzSG?YT>=O)(th)KjLQ79BY0SdX6@FLu_K@;|C$G34^v` zr#YK)wvLW+CPa@sV^`$?E55BGe_Lyolb9BRd%_|$pLpp_iV zH_Dl&?8w(M`CB75cEn15bJT#1$-`Xl_!Ya}k)xQ0aj(@i4e6yua^g=N=)YRt&VDCJq^?a){DnF zvGOhMDPyRcJn3RRJNB$vi|yCJp4jxF_0Aw?og9qvUnS(nHh=V?)uO>JUCif;F6+c* zv0kvhL9jd2)V29?W6Ql5Udp4{$eZ`_ia;7_9G+@L1lA*@d$isX+$S!TYGs;!X z)Ii+oZ;tm9#Zcc1hp3&L!X@h<1*)eCuU}uULF}S9IHS9QB_~y@i z@u-bh#Bc5jL2K_;4!X!yUF@sjS}}rc&&6ULeSZ|+iZA*<)A@d*=lsx;U-9Wnw%A`i z^orO#R}=Awmwx8)#fI95WtkA;3}FsCwD4Yi*piRhs4xB4rLSkhnuuRqwBIJIYvdWzdT)`%jFMgc^yBF8X9R%Ac-s=2wpLU}MGbOmB$KbK0rZ zgdsQZB`5E`J-8qCh;?kxj8A#1kC@B>-)qIMLeAn5*HkgA5#M@24)%t;)PROV+j6&N zc-GPGN1^uO5Ucg-@xxd)=xP11p8V@yxj6r<5x?H?jK;3{Ws^>mhP>Hz|9*SIJzGn~ zh;ZJm5pq;B`$??w5`%pCQX76;(}os&O&(%2j}G*9&5reY!gGj+M&e&#!0L_aG=A_& z6B^2u_C{KZNu9*bufCRp9)Osvv&!&AgTJXar-=5ir z;`VHwkc%36?;fkf(C^Y+FBE+6&9=4R`@1nlj2GgRJ6meRw|%MRbg@_1^GptUVyHiV z`fj42h1|x8@5NLhcXrITjyC#FzVhPR^_Vg4V3a4_%@eQK#XQuOUiOoB@?(dNV&{LT zwR_ieSvkbNeCQeLXy(0rAzrbmB^!LwLCk6<2l=fLi-&l`A$Rd(sI|Dpk70~@!1@J( zU4GbgrqJzwm0a%L(VJa5i_f*%(^Bu!L|k+i1AX0pH~6HRHF8qh3Bo%1^FIpf>$Rq@ehnQ-p0Z_SvYR?7v=tQE7^*{02~ujIhLzFi;|jk$vT{|Bc} B`8@yt literal 0 HcmV?d00001 diff --git a/tests/testthat/test-import_biotyper_spectra.R b/tests/testthat/test-import_biotyper_spectra.R index a59a194..2e43df4 100644 --- a/tests/testthat/test-import_biotyper_spectra.R +++ b/tests/testthat/test-import_biotyper_spectra.R @@ -1,8 +1,11 @@ # WARNING - Generated by {fusen} from dev/import-data.Rmd: do not edit by hand directory_biotyper_spectra <- system.file("toy-species-spectra", package = "maldipickr") -spectra_list <- import_biotyper_spectra(directory_biotyper_spectra) +directory_biotyper_spectra_with_acqus <- system.file("with-acqus", package = "maldipickr") test_that("import_biotyper_spectra works", { + expect_no_error( + spectra_list <- import_biotyper_spectra(directory_biotyper_spectra) + ) expect_length( spectra_list, 6 ) @@ -10,6 +13,17 @@ test_that("import_biotyper_spectra works", { spectra_list, "list" ) }) +test_that("import_biotyper_spectra works with symlinks",{ + expect_no_error( + spectra_with_acqus <- import_biotyper_spectra(directory_biotyper_spectra_with_acqus) + ) + expect_length( + spectra_with_acqus, 1 + ) + expect_type( + spectra_with_acqus, "list" + ) +}) test_that("import_biotyper_spectra fails", { expect_error( import_biotyper_spectra(