From wozniak at ci.uchicago.edu Thu Sep 1 10:14:07 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:14:07 -0500 (CDT) Subject: [Swift-commit] r5039 - trunk/docs/userguide Message-ID: <20110901151407.326879CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:14:07 -0500 (Thu, 01 Sep 2011) New Revision: 5039 Modified: trunk/docs/userguide/cdm Log: Whitespace Modified: trunk/docs/userguide/cdm =================================================================== --- trunk/docs/userguide/cdm 2011-09-01 03:31:29 UTC (rev 5038) +++ trunk/docs/userguide/cdm 2011-09-01 15:14:07 UTC (rev 5039) @@ -2,202 +2,202 @@ -------------------------- Overview -~~~~~~~~ -. The user specifies a CDM policy in a file, customarily fs.data. -. fs.data is given to Swift on the command line. -. The Swift data module (org.globus.swift.data) is informed of the CDM policy. -. At job launch time, the VDL Karajan code queries the CDM policy, - .. altering the file staging phase, and - .. sending fs.data to the compute site. -. At job run time, the Swift wrapper script - .. consults a Perl script to obtain policy, and - .. uses wrapper extensions to modify data movement. -. Similarly, stage out can be changed. - - +~~~~~~~~ +. The user specifies a CDM policy in a file, customarily fs.data. +. fs.data is given to Swift on the command line. +. The Swift data module (org.globus.swift.data) is informed of the CDM policy. +. At job launch time, the VDL Karajan code queries the CDM policy, + .. altering the file staging phase, and + .. sending fs.data to the compute site. +. At job run time, the Swift wrapper script + .. consults a Perl script to obtain policy, and + .. uses wrapper extensions to modify data movement. +. Similarly, stage out can be changed. + + .Command line ------ -$ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift ----- - +$ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift +----- + CDM policy file format ~~~~~~~~~~~~~~~~~~~~~~ .Example ------ -# Describe CDM for my job -property GATHER_LIMIT 1 -rule .*input.txt DIRECT /gpfs/homes/wozniak/data -rule .*xfile*.data BROADCAST /dev/shm -rule .* DEFAULT ----- - -The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. - - +# Describe CDM for my job +property GATHER_LIMIT 1 +rule .*input.txt DIRECT /gpfs/homes/wozniak/data +rule .*xfile*.data BROADCAST /dev/shm +rule .* DEFAULT +----- + +The lines contain: + +. A directive, either rule or property +. A rule has: + .. A regular expression + .. A policy token + .. Additional policy-specific arguments +. A property has + .. A policy property token + .. The token value +. Comments with # . +. Blank lines are ignored. + + .Notes - -. The policy file is used as a lookup database by Swift and Perl methods. -. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. -. If the lookup does not succeed, the result is DEFAULT. - . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . - - + +. The policy file is used as a lookup database by Swift and Perl methods. +. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. +. If the lookup does not succeed, the result is DEFAULT. + . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . + + Policy Descriptions ~~~~~~~~~~~~~~~~~~~ -.Default - -* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. - - +.Default + +* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. + + .Broadcast ------ -rule .*xfile*.data BROADCAST /dev/shm ------ -* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. -* On the BG/P, this will make use of the f2cn tool. -* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. - - +----- +rule .*xfile*.data BROADCAST /dev/shm +----- +* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. +* On the BG/P, this will make use of the f2cn tool. +* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. + + .Direct ------ -rule .*input.txt DIRECT /gpfs/scratch/wozniak/ ------ -* Allows for direct I/O to the parallel FS without staging. -* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. -* The output files matching the pattern will be stored in the given directory, with links in the job directory. -* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . - - -.Local ------ -rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K ------ -* Allows for client-directed input copy to the compute node. -* The user may specify cp or dd as the input transfer program. -* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. -* Argument list: [tool] [GFS directory] [tool arguments]* - - +----- +rule .*input.txt DIRECT /gpfs/scratch/wozniak/ +----- +* Allows for direct I/O to the parallel FS without staging. +* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. +* The output files matching the pattern will be stored in the given directory, with links in the job directory. +* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . + + +.Local +----- +rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K +----- +* Allows for client-directed input copy to the compute node. +* The user may specify cp or dd as the input transfer program. +* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. +* Argument list: [tool] [GFS directory] [tool arguments]* + + .Gather ------ -property GATHER_LIMIT 500000000 # 500 MB -property GATHER_DIR /dev/shm/gather -property GATHER_TARGET /gpfs/wozniak/data/gather_target -rule .*.output.txt GATHER ----- - -* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. -* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. -* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. -* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. -* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . -* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. - +property GATHER_LIMIT 500000000 # 500 MB +property GATHER_DIR /dev/shm/gather +property GATHER_TARGET /gpfs/wozniak/data/gather_target +rule .*.output.txt GATHER +----- + +* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. +* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. +* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. +* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. +* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . +* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. + .Summary - -. Files created by application -. Acquire lock -. Move files to cache -. Check cache size -. If limit exceeded, move all cache files to outbox -. Release lock -. If limit was exceeded, stream outbox as tarball to target - + +. Files created by application +. Acquire lock +. Move files to cache +. Check cache size +. If limit exceeded, move all cache files to outbox +. Release lock +. If limit was exceeded, stream outbox as tarball to target + .Notes - -* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . -* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . - - + +* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . +* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . + + VDL/Karajan processing ~~~~~~~~~~~~~~~~~~~~~~ -. CDM functions are available in Karajan via the cdm namespace. -. These functions are defined in org.globus.swift.data.Query . -. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. - - -Swift wrapper CDM routines +. CDM functions are available in Karajan via the cdm namespace. +. These functions are defined in org.globus.swift.data.Query . +. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. + + +Swift wrapper CDM routines ~~~~~~~~~~~~~~~~~~~~~~~~~~ -. The cdm.pl script is shipped to the compute node if CDM is enabled. -. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). -. The cdm_action() shell function handles CDM methods, typically just producing a link. - - -Test cases +. The cdm.pl script is shipped to the compute node if CDM is enabled. +. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). +. The cdm_action() shell function handles CDM methods, typically just producing a link. + + +Test cases ~~~~~~~~~~ - -. Simple test cases are in: - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs -. Do a: - mkdir cdm - cd cdm - svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts -. In cdm-direct, run: - source ./setup.sh local local local -. Run workflow: - swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift -. Note that staging is skipped for input.txt - policy: file://localhost/input.txt : DIRECT - FILE_STAGE_IN_START file=input.txt ... - FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT - FILE_STAGE_IN_END file=input.txt ... -. In the wrapper output, the input file is handled by CDM functionality: - Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS - CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt - Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE -. all-pairs is quite similar but uses more policies. - - + +. Simple test cases are in: + https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and + https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs +. Do a: + mkdir cdm + cd cdm + svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts +. In cdm-direct, run: + source ./setup.sh local local local +. Run workflow: + swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift +. Note that staging is skipped for input.txt + policy: file://localhost/input.txt : DIRECT + FILE_STAGE_IN_START file=input.txt ... + FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT + FILE_STAGE_IN_END file=input.txt ... +. In the wrapper output, the input file is handled by CDM functionality: + Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS + CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct + CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct + CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt + Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE +. all-pairs is quite similar but uses more policies. + + PTMap case -^^^^^^^^^^ -. Start with vanilla PTMap: - .. cd cdm - .. mkdir apps - .. cd apps - .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap -. Source setup.sh -. Use start.sh, which - .. applies CDM policy from fs.local.data - - +^^^^^^^^^^ +. Start with vanilla PTMap: + .. cd cdm + .. mkdir apps + .. cd apps + .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap +. Source setup.sh +. Use start.sh, which + .. applies CDM policy from fs.local.data + + CDM site-aware policy file format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + Example ----- -#Describe CDM for my job -#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior -property GATHER_LIMIT 1 -rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data -rule cluster1 .*xfile*.data BROADCAST /dev/shm -rule ANYWHERE .* DEFAULT +#Describe CDM for my job +#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior +property GATHER_LIMIT 1 +rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data +rule cluster1 .*xfile*.data BROADCAST /dev/shm +rule ANYWHERE .* DEFAULT ----- - + The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression for site matchin - .. A regular expression for filename matching - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. + +. A directive, either rule or property +. A rule has: + .. A regular expression for site matchin + .. A regular expression for filename matching + .. A policy token + .. Additional policy-specific arguments +. A property has + .. A policy property token + .. The token value +. Comments with # . +. Blank lines are ignored. From wozniak at ci.uchicago.edu Thu Sep 1 10:22:45 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:22:45 -0500 (CDT) Subject: [Swift-commit] r5040 - trunk/tests/mpi/fusion/long Message-ID: <20110901152245.8E3139CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:22:45 -0500 (Thu, 01 Sep 2011) New Revision: 5040 Added: trunk/tests/mpi/fusion/long/100-mci.timeout Log: Add timeout Copied: trunk/tests/mpi/fusion/long/100-mci.timeout (from rev 5031, trunk/tests/mpi/beagle/long/100-mci.timeout) =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.timeout (rev 0) +++ trunk/tests/mpi/fusion/long/100-mci.timeout 2011-09-01 15:22:45 UTC (rev 5040) @@ -0,0 +1 @@ +1000 From wilde at ci.uchicago.edu Thu Sep 1 10:23:53 2011 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:23:53 -0500 (CDT) Subject: [Swift-commit] r5041 - in SwiftApps: . ParVis ParVis/PagodaTest Message-ID: <20110901152353.6C7979CD03@svn.ci.uchicago.edu> Author: wilde Date: 2011-09-01 10:23:53 -0500 (Thu, 01 Sep 2011) New Revision: 5041 Added: SwiftApps/ParVis/ SwiftApps/ParVis/PagodaTest/ SwiftApps/ParVis/PagodaTest/README SwiftApps/ParVis/PagodaTest/cf SwiftApps/ParVis/PagodaTest/fs SwiftApps/ParVis/PagodaTest/ncflint.sh SwiftApps/ParVis/PagodaTest/pagoda1.swift SwiftApps/ParVis/PagodaTest/pagoda2.swift SwiftApps/ParVis/PagodaTest/pbs.xml SwiftApps/ParVis/PagodaTest/pbs2.xml SwiftApps/ParVis/PagodaTest/pbs3.xml SwiftApps/ParVis/PagodaTest/pgea.sh SwiftApps/ParVis/PagodaTest/pgflint.run1.sh SwiftApps/ParVis/PagodaTest/pgflint.sh SwiftApps/ParVis/PagodaTest/pgflint.working.sh SwiftApps/ParVis/PagodaTest/sites.xml SwiftApps/ParVis/PagodaTest/t.sh SwiftApps/ParVis/PagodaTest/tc Log: initial version Added: SwiftApps/ParVis/PagodaTest/README =================================================================== --- SwiftApps/ParVis/PagodaTest/README (rev 0) +++ SwiftApps/ParVis/PagodaTest/README 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,31 @@ +To run Swift Pagoda tests: + +Tests are coded to run on Fusion, and point to Fusion datasets and apps. + +* pagoda1.swift: + +Single level of pgflint (linear interpolation) + + swift -config cf -cdm.file fs -tc.file tc -sites.file pbs2.xml pagoda1.swift -n=10 + + # 1 <= n <= 132 for that many month-files to be processed + # can change dataset by changing the code: three datasets are listed in comments + +* pagoda2.swift: + +Multi-level workflow (pgflint for linear interpolation followed by +pgea for ensemble averaging of various time units and levels) + + swift -config cf -cdm.file fs -tc.file tc -sites.file pbs2.xml pagoda2.swift -toyear=110 + + # toyear can be from 110 to 120 for 1 to 11 years of the HRC06 dataset + +Add the hostCount settings in tc to enable JETS MPI + +Must have swift trunk and mpich2 trunk version in PATH: + + PATH=/homes/wilde/mpich2-install/bin:/homes/wilde/swift/src/trunk/cog/modules/swift/dist/swift-svn/bin:$PATH + + + + Added: SwiftApps/ParVis/PagodaTest/cf =================================================================== --- SwiftApps/ParVis/PagodaTest/cf (rev 0) +++ SwiftApps/ParVis/PagodaTest/cf 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,9 @@ +wrapperlog.always.transfer=true +sitedir.keep=true +execution.retries=0 +lazy.errors=false +#status.mode=provider +use.provider.staging=false +provider.staging.pin.swiftfiles=false +foreach.max.threads=1024 + Added: SwiftApps/ParVis/PagodaTest/fs =================================================================== --- SwiftApps/ParVis/PagodaTest/fs (rev 0) +++ SwiftApps/ParVis/PagodaTest/fs 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,2 @@ +rule .*/outdir/.* DIRECT /home/wilde/pagoda +rule /fusion/group/climate/Parvis/atmos/.* DIRECT / Added: SwiftApps/ParVis/PagodaTest/ncflint.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/ncflint.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/ncflint.sh 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,19 @@ +#! /bin/sh +NPROCS=${1:-8} +echo using NPROCS=$NPROCS +NCFLINT=/home/mickelso/nco-3.9.9/bin/ncflint + +$NCFLINT -O -C -x -v \ +GW,HYAM,HYBM,HYAI,HYBI,P0 \ +-w 0.3444444537162781,0.0 \ +/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg/b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ +/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg/b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ +nc_wgt_month.01.nc + +#/glade/data01/CMIP5/CCSM/csm/b40.1850.track1.1deg.006/atm/hist/b40.1850.track1.1deg.006.cam2.h0.0970-12.nc +#/glade/data01/CMIP5/CCSM/csm/b40.1850.track1.1deg.006/atm/hist/b40.1850.track1.1deg.006.cam2.h0.0970-12.nc +#/glade/scratch/mickelso/output-NSO1//climo/b40.1850.track1.1deg.006/wgt_month.01.nc" + +# CLDHGH,CLDICE,CLDLIQ,CLDMED,CLDLOW,CLDTOT,CLOUD,DCQ,DTCOND,DTV,FICE,FLDS,FLNS,FLNSC,FLNT,FLNTC,FLUT,FLUTC,FSDS,FSDSC,FSNS,FSNSC,FSNTC,FSNTOA,FSNTOAC,FSNT,ICEFRAC,LANDFRAC,LHFLX,LWCF,OCNFRAC,OMEGA,OMEGAT,P0,PBLH,PRECC,PRECL,PRECSC,PRECSL,PS,PSL,Q,QFLX,QRL,QRS,RELHUM,SHFLX,SNOWHICE,SNOWHLND,SOLIN,SRFRAD,SWCF,T,TAUX,TAUY,TGCLDIWP,TGCLDLWP,TMQ,TREFHT,TS,U,UU,V,VD01,VQ,VT,VU,VV,Z3 \ + +# -x -v GW,HYAM,HYBM,HYAI,HYBI,P0 \ Property changes on: SwiftApps/ParVis/PagodaTest/ncflint.sh ___________________________________________________________________ Added: svn:executable + Added: SwiftApps/ParVis/PagodaTest/pagoda1.swift =================================================================== --- SwiftApps/ParVis/PagodaTest/pagoda1.swift (rev 0) +++ SwiftApps/ParVis/PagodaTest/pagoda1.swift 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,33 @@ +#! /bin/sh + +# NPROCS=${1:-8} +# NFILES=${2:-99999} +# DATASET=${3:-/fusion/group/climate/Parvis/atmos/taylor} +# DATASET=${3:-/fusion/group/climate/Parvis/atmos/f40_amip_025d_b06c4_207jp.cam2} +# DATASET=${3:-/fusion/group/climate/Parvis/atmos/HRC06} + +type ncfile; + +global string includevars="CLDHGH,CLDICE,CLDLIQ,CLDMED,CLDLOW,CLDTOT,CLOUD,DCQ,DTCOND,DTV,FICE,FLDS,FLNS,FLNSC,FLNT,FLNTC,FLUT,FLUTC,FSDS,FSDSC,FSNS,FSNSC,FSNTC,FSNTOA,FSNTOAC,FSNT,ICEFRAC,LANDFRAC,LHFLX,LWCF,OCNFRAC,OMEGA,OMEGAT,P0,PBLH,PRECC,PRECL,PRECSC,PRECSL,PS,PSL,Q,QFLX,QRL,QRS,RELHUM,SHFLX,SNOWHICE,SNOWHLND,SOLIN,SRFRAD,SWCF,T,TAUX,TAUY,TGCLDIWP,TGCLDLWP,TMQ,TREFHT,TS,U,UU,V,VD01,VQ,VT,VU,VV,Z3"; + +global string excludevars="GW,HYAM,HYBM,HYAI,HYBI,P0"; + +app (ncfile o) pgflint (ncfile i) +{ + pgflint "--file_format=64bit" "-C" + "-v" includevars + "-w" "0.3444444537162781,0.0" + "-O" @i @i @o ; +} + +string dsdir=@arg("dataset","/fusion/group/climate/Parvis/atmos/HRC06"); +string outdir=@arg("outdir","outdir"); + +ncfile infile[] ; +ncfile outfile[] ; + +# foreach f,i in infile { + +foreach i in [0:@toint(@arg("n","1"))-1] { + outfile[i] = pgflint(infile[i]); +} \ No newline at end of file Added: SwiftApps/ParVis/PagodaTest/pagoda2.swift =================================================================== --- SwiftApps/ParVis/PagodaTest/pagoda2.swift (rev 0) +++ SwiftApps/ParVis/PagodaTest/pagoda2.swift 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,110 @@ +#! /bin/sh + +# NPROCS=${1:-8} +# NFILES=${2:-99999} +# DATASET=${3:-/fusion/group/climate/Parvis/atmos/taylor} +# DATASET=${3:-/fusion/group/climate/Parvis/atmos/f40_amip_025d_b06c4_207jp.cam2} +# DATASET=${3:-/fusion/group/climate/Parvis/atmos/HRC06} + +type ncfile; + +global string includevars="CLDHGH,CLDICE,CLDLIQ,CLDMED,CLDLOW,CLDTOT,CLOUD,DCQ,DTCOND,DTV,FICE,FLDS,FLNS,FLNSC,FLNT,FLNTC,FLUT,FLUTC,FSDS,FSDSC,FSNS,FSNSC,FSNTC,FSNTOA,FSNTOAC,FSNT,ICEFRAC,LANDFRAC,LHFLX,LWCF,OCNFRAC,OMEGA,OMEGAT,P0,PBLH,PRECC,PRECL,PRECSC,PRECSL,PS,PSL,Q,QFLX,QRL,QRS,RELHUM,SHFLX,SNOWHICE,SNOWHLND,SOLIN,SRFRAD,SWCF,T,TAUX,TAUY,TGCLDIWP,TGCLDLWP,TMQ,TREFHT,TS,U,UU,V,VD01,VQ,VT,VU,VV,Z3"; + +global string excludevars="GW,HYAM,HYBM,HYAI,HYBI,P0"; + +app (ncfile o) pgflint (ncfile i) +{ + pgflint "--file_format=64bit" "-C" + "-v" includevars + "-w" "0.3444444537162781,0.0" + "-O" @i @i @o ; +} + +app (ncfile o) pgea (ncfile i[]) +{ + pgea4 "-O" "-y" "ttl" @filenames(i) @o; +} + +app (ncfile o) pgeassn (ncfile m1, ncfile m2, ncfile m3) +{ + pgea2 "-O" "-y" "ttl" @m1 @m2 @m3 @o; +} + +#string syear[] = ["0110","0111","0112","0113","0114","0115","0116","0117","0118","0119","0120"]; +string smon[] = ["00","01","02","03","04","05","06","07","08","09","10","11","12"]; +string ssnname[] = ["JFM","AMJ","JAS","OND"]; + +#int years[] = [110:120]; + +int toyear=@toint(@arg("toyear","110")); + +int years[] = [110:toyear]; +int months[] = [1:12]; +int seasons[] = [1,4,7,10]; + +string dsdir=@arg("dataset","/fusion/group/climate/Parvis/atmos/HRC06"); +string outdir=@arg("outdir","outdir"); +string dsname="/HRC06.cam2.h0.0"; + +# foreach f,i in infile { +# foreach i in [0:@toint(@arg("n","1"))-1] { + +ncfile lint[][]; # [year][month] + +foreach y in years { + foreach m in months { + ncfile infile ; + ncfile outfile ; + outfile = pgflint(infile); + lint[y][m] = outfile; + } +} + +ncfile ssnavg[][]; # [year][ssn] + +foreach y in years { + foreach s, sn in seasons { + ncfile f; + f = pgeassn(lint[y][s], lint[y][s+1], lint[y][s+2]); + ssnavg[y][sn] = f; + } +} + +ncfile yearavg[]; + +foreach year, y in lint { + ncfile f; + f = pgea(year); + yearavg[y] = f; +} + +ncfile gf; +gf = pgea(yearavg); + +#--- From AMWG Diag script, for later use: + +/* + +(file out)Sum_Monthly_Files(string f[]) +{ + app {ncea "-O" f @out;} +} + +(file out)Sum_Wgt_Season(file f1, file f2, file f3) +{ + app {ncea "-O" "-y" "ttl" @f1 @f2 @f3 @out;} +} + +(file out)Sum_Wgt_Year(file f1, file f2, file f3, file f4, file f5, file f6, file f7, file f8, file f9, file f10, file f11, file f12) +{ + app {ncea "-O" "-y" "ttl" @f1 @f2 @f3 @f4 @f5 @f6 @f7 @f8 @f9 @f10 @f11 @f12 @out;} +} + +(file out)Ensemble_Averages(file f[]) +{ + app {ncea "-O" @filenames(f) @filename(out);} +} + +*/ + + Added: SwiftApps/ParVis/PagodaTest/pbs.xml =================================================================== --- SwiftApps/ParVis/PagodaTest/pbs.xml (rev 0) +++ SwiftApps/ParVis/PagodaTest/pbs.xml 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,48 @@ + + + + + + + + shared + 0.15 + 10000 + 1 + 8 + 300 + 00:01:00 + 4 + 4 + /home/wilde/swiftwork + + + + + Added: SwiftApps/ParVis/PagodaTest/pbs2.xml =================================================================== --- SwiftApps/ParVis/PagodaTest/pbs2.xml (rev 0) +++ SwiftApps/ParVis/PagodaTest/pbs2.xml 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,48 @@ + + + + + + + + shared + 0.63 + 10000 + 8 + 4 + 3600 + 00:01:00 + 4 + 4 + /home/wilde/swiftwork + + + + + Added: SwiftApps/ParVis/PagodaTest/pbs3.xml =================================================================== --- SwiftApps/ParVis/PagodaTest/pbs3.xml (rev 0) +++ SwiftApps/ParVis/PagodaTest/pbs3.xml 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,48 @@ + + + + + + + + shared + 0.63 + 10000 + 1 + 1 + 3600 + 00:01:00 + 8 + 8 + /home/wilde/swiftwork + + + + + Added: SwiftApps/ParVis/PagodaTest/pgea.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/pgea.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/pgea.sh 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,70 @@ +#! /bin/sh +NPROCS=${1:-8} +NFILES=${2:-99999} +echo using NPROCS=$NPROCS NFILES=$NFILES + +OUTDIR=$(pwd)/output +INDIR=/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg + +cd $INDIR +for f in $(ls -1 *.nc | head -${NFILES}); do + echo doing: $f + mpirun -np $NPROCS /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint -O --file_format=64bit -C \ + -x -v GW,HYAM,HYBM,HYAI,HYBI,P0 \ + -w 0.3444444537162781,0.0 \ + --path=/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg $f $f \ + $OUTDIR/$(basename $OUTDIR/$f .nc).int.nc +done + +cat </dev/null + +(file out)Sum_Monthly_Files(string f[]) +{ + app {ncea "-O" f @out;} +} + +(file out)Sum_Wgt_Files(file f1, file f2, file f3) +{ + app {ncea "-O" "-y" "ttl" @f1 @f2 @f3 @filename(out);} +} + +(file out)Sum_Wgt_Files_12Months(file f1, file f2, file f3, file f4, file f5, file f6, file f7, file f8, file f9, file f10, file f11, file f12) +{ + app {ncea "-O" "-y" "ttl" @f1 @f2 @f3 @f4 @f5 @f6 @f7 @f8 @f9 @f10 @f11 @f12 @out;} +} + +(file out)Rename_to_Climo(file input[]) +{ + app {mv @filename(input) @filename(out);} +} +(file out)Copy_to_Climo(string input) +{ + app {cp input @filename(out);} +} + +Edit_File_Attributes(int var, file input) +{ + app {ncatted "-O" "-a" @strcat("yrs_averaged,global,c,c,",var) @filename(input);} +} + +(file out)Apply_Weights(string n_t_var, string weights, string f) +{ + app {ncflint "-O" "-C" "-x" "-v" n_t_var "-w" @strcat(weights,",0.0") f f @filename(out);} +} + +(file out)Ensemble_Averages(file f[]) +{ + app {ncea "-O" @filenames(f) @filename(out);} +} + +(file out)Calc_Climo_File2(string f[]) +{ + app {ncea "-O" f @filename(out);} +} + +(file out)Calc_Significance(file f[]) +{ + app {ncrcat "-O" @filenames(f) @filename(out);} +} + +ENDCOMMENT Added: SwiftApps/ParVis/PagodaTest/pgflint.run1.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/pgflint.run1.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/pgflint.run1.sh 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,28 @@ +#! /bin/sh +NPROCS=${1:-8} +echo using NPROCS=$NPROCS + +OUTDIR=$(pwd)/output +INDIR=/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg + +cd $INDIR +for f in $(ls -1 *.nc | head -1); do + mpirun -np $NPROCS /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint -O --file_format=64bit -C \ + -x -v GW,HYAM,HYBM,HYAI,HYBI,P0 \ + -w 0.3444444537162781,0.0 \ + --path=/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg $f $f \ + $OUTDIR/$(basename $OUTDIR/$f .nc).int.nc +done + +exit + +# --path=/fusion/group/climate/Parvis/atmos/b40.1850.track1.1deg.006 +# b40.1850.track1.1deg.006.cam2.h0.0100-01.nc \ +# b40.1850.track1.1deg.006.cam2.h0.0100-01.nc \ + +# b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ +# b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ + +# -x -v GW,HYAM,HYBM,HYAI,HYBI,P0 \ + +# pg_wgt_month.01.nc \ No newline at end of file Property changes on: SwiftApps/ParVis/PagodaTest/pgflint.run1.sh ___________________________________________________________________ Added: svn:executable + Added: SwiftApps/ParVis/PagodaTest/pgflint.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/pgflint.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/pgflint.sh 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,46 @@ +#! /bin/sh +NPROCS=${1:-8} +NFILES=${2:-99999} +DATASET=${3:-/fusion/group/climate/Parvis/atmos/taylor} +DATASET=${3:-/fusion/group/climate/Parvis/atmos/f40_amip_025d_b06c4_207jp.cam2} +DATASET=${3:-/fusion/group/climate/Parvis/atmos/HRC06} + +INCLUDEVARS="-v CLDHGH,CLDICE,CLDLIQ,CLDMED,CLDLOW,CLDTOT,CLOUD,DCQ,DTCOND,DTV,FICE,FLDS,FLNS,FLNSC,FLNT,FLNTC,FLUT,FLUTC,FSDS,FSDSC,FSNS,FSNSC,FSNTC,FSNTOA,FSNTOAC,FSNT,ICEFRAC,LANDFRAC,LHFLX,LWCF,OCNFRAC,OMEGA,OMEGAT,P0,PBLH,PRECC,PRECL,PRECSC,PRECSL,PS,PSL,Q,QFLX,QRL,QRS,RELHUM,SHFLX,SNOWHICE,SNOWHLND,SOLIN,SRFRAD,SWCF,T,TAUX,TAUY,TGCLDIWP,TGCLDLWP,TMQ,TREFHT,TS,U,UU,V,VD01,VQ,VT,VU,VV,Z3" + +EXCLUDEVARS="-x -v GW,HYAM,HYBM,HYAI,HYBI,P0" + +VARS=$INCLUDEVARS + +PAGODA=/fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin + +DSNAME=$(basename $DATASET) +echo using NPROCS=$NPROCS NFILES=$NFILES + +OUTDIR=$(pwd)/output-$DSNAME +mkdir -p $OUTDIR + +cd $DATASET +for f in $(ls -1 *.nc | head -${NFILES}); do + echo doing: $f + mpirun -np $NPROCS $PAGODA/pgflint -O --file_format=64bit -C \ + $VARS \ + -w 0.3444444537162781,0.0 \ + --path=$DATASET $f $f \ + $OUTDIR/$(basename $OUTDIR/$f .nc).int.nc +done + +exit + +# --path=/fusion/group/climate/Parvis/atmos/b40.1850.track1.1deg.006 +# b40.1850.track1.1deg.006.cam2.h0.0100-01.nc \ +# b40.1850.track1.1deg.006.cam2.h0.0100-01.nc \ + +# b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ +# b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ + +# -x -v GW,HYAM,HYBM,HYAI,HYBI,P0 \ + +# pg_wgt_month.01.nc + +# INDIR=/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg + Property changes on: SwiftApps/ParVis/PagodaTest/pgflint.sh ___________________________________________________________________ Added: svn:executable + Added: SwiftApps/ParVis/PagodaTest/pgflint.working.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/pgflint.working.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/pgflint.working.sh 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,15 @@ +#! /bin/sh +NPROCS=${1:-8} +echo using NPROCS=$NPROCS +mpirun -np $NPROCS /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint -O -c \ +--file_format=64bit \ +-v CLDHGH,CLDICE,CLDLIQ,CLDMED,CLDLOW,CLDTOT,CLOUD,DCQ,DTCOND,DTV,FICE,FLDS,FLNS,FLNSC,FLNT,FLNTC,FLUT,FLUTC,FSDS,FSDSC,FSNS,FSNSC,FSNTC,FSNTOA,FSNTOAC,FSNT,ICEFRAC,LANDFRAC,LHFLX,LWCF,OCNFRAC,OMEGA,OMEGAT,P0,PBLH,PRECC,PRECL,PRECSC,PRECSL,PS,PSL,Q,QFLX,QRL,QRS,RELHUM,SHFLX,SNOWHICE,SNOWHLND,SOLIN,SRFRAD,SWCF,T,TAUX,TAUY,TGCLDIWP,TGCLDLWP,TMQ,TREFHT,TS,U,UU,V,VD01,VQ,VT,VU,VV,Z3 \ +-w 0.3444444537162781,0.0 \ +--path=/fusion/group/climate/Parvis/atmos/b40.1850.track1.2deg \ +b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ +b40.1850.track1.2deg.003.cam2.h0.0509-04.nc \ +wgt_month.01.nc + +# --path=/fusion/group/climate/Parvis/atmos/b40.1850.track1.1deg.006 +# b40.1850.track1.1deg.006.cam2.h0.0100-01.nc \ +# b40.1850.track1.1deg.006.cam2.h0.0100-01.nc \ Property changes on: SwiftApps/ParVis/PagodaTest/pgflint.working.sh ___________________________________________________________________ Added: svn:executable + Added: SwiftApps/ParVis/PagodaTest/sites.xml =================================================================== --- SwiftApps/ParVis/PagodaTest/sites.xml (rev 0) +++ SwiftApps/ParVis/PagodaTest/sites.xml 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,26 @@ + + + + + + + + localhost + 0.03 + 10000 + 8 + 1 + 1000 + 1 + 1 + /scratch/wilde/swiftwork + + + Added: SwiftApps/ParVis/PagodaTest/t.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/t.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/t.sh 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,2 @@ +#! /bin/sh +mpirun -np 8 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgra --file_format=64bit --path=/fusion/group/climate/mickelso/pagodaData/2.5GBData -O amipne240c.cam2.h0.0001-01-01-00000.nc amipne240c.cam2.h0.0001-01-31-00000.nc amipne240c.cam2.h0.0001-03-02-00000.nc amipne240c.cam2.h0.0001-04-01-00000.nc amipne240c.cam2.h0.0001-05-01-00000.nc amipne240c.cam2.h0.0001-05-31-00000.nc amipne240c.cam2.h0.0001-06-30-00000.nc amipne240c.cam2.h0.0001-07-30-00000.nc amipne240c.cam2.h0.0001-08-29-00000.nc amipne240c.cam2.h0.0001-09-28-00000.nc amipne240c.cam2.h0.0001-10-28-00000.nc amipne240c.cam2.h0.0001-11-27-00000.nc amipne240c.cam2.h0.0001-12-27-00000.nc amipne240c.cam2.h0.0002-01-26-00000.nc amipne240c.cam2.h0.0002-02-25-00000.nc amipne240c.cam2.h0.0002-03-27-00000.nc amipne240c.cam2.h0.0002-04-26-00000.nc amipne240c.cam2.h0.0002-05-26-00000.nc amipne240c.cam2.h0.0002-06-25-00000.nc -o pgra2.5.nc # -o /fusion/gpfs/home/mickelso/pagodaTesting/pgra2.5.nc Property changes on: SwiftApps/ParVis/PagodaTest/t.sh ___________________________________________________________________ Added: svn:executable + Added: SwiftApps/ParVis/PagodaTest/tc =================================================================== --- SwiftApps/ParVis/PagodaTest/tc (rev 0) +++ SwiftApps/ParVis/PagodaTest/tc 2011-09-01 15:23:53 UTC (rev 5041) @@ -0,0 +1,6 @@ +# localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null null + +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null null +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null + From wozniak at ci.uchicago.edu Thu Sep 1 10:25:09 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:25:09 -0500 (CDT) Subject: [Swift-commit] r5042 - trunk/tests/mpi/fusion/long Message-ID: <20110901152509.C80119CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:25:09 -0500 (Thu, 01 Sep 2011) New Revision: 5042 Modified: trunk/tests/mpi/fusion/long/sites.template.xml Log: Corrections Modified: trunk/tests/mpi/fusion/long/sites.template.xml =================================================================== --- trunk/tests/mpi/fusion/long/sites.template.xml 2011-09-01 15:23:53 UTC (rev 5041) +++ trunk/tests/mpi/fusion/long/sites.template.xml 2011-09-01 15:25:09 UTC (rev 5042) @@ -5,19 +5,16 @@ - + 1 7200 - - pbs.aprun;pbs.mpp;depth=1 - 1 1 - 10 - 20 + 6 + 6 DEBUG {wdir} 5.99 From ketan at ci.uchicago.edu Thu Sep 1 10:31:00 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:31:00 -0500 (CDT) Subject: [Swift-commit] r5043 - in SwiftApps: . DSSAT DSSAT/bin Message-ID: <20110901153100.B4BA79CD03@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-01 10:31:00 -0500 (Thu, 01 Sep 2011) New Revision: 5043 Added: SwiftApps/DSSAT/ SwiftApps/DSSAT/RunDSSAT.swift SwiftApps/DSSAT/RunSwift.sh SwiftApps/DSSAT/bin/ SwiftApps/DSSAT/bin/RunDSSAT.sh SwiftApps/DSSAT/bin/gridCheck.sh SwiftApps/DSSAT/counter.txt SwiftApps/DSSAT/tc Log: added DSSAT app to SwiftApps repo Added: SwiftApps/DSSAT/RunDSSAT.swift =================================================================== --- SwiftApps/DSSAT/RunDSSAT.swift (rev 0) +++ SwiftApps/DSSAT/RunDSSAT.swift 2011-09-01 15:31:00 UTC (rev 5043) @@ -0,0 +1,31 @@ +type file; + +app (file output) RunDSSAT (file input[]) +{ + RunDSSAT @output @input ; +} + +//This is unused at the moment since it was used to check bad cells (bad cell means that the cell doesn't have soil files) +app (file output) gridCheck (string path) +{ + gridCheck @output path; +} + +//gridList.txt contains the list of good grid cells +//file gl <"gridList.txt">; + +//gridCheck app discards empty grid cells or those containing unusable files +//gl = gridCheck(@arg("path","/gpfs/pads/projects/CI-SES000031/data/dssat/grid/")); + +string gridLists[] = readData("gridList.txt"); + +foreach g,i in gridLists +{ +//file out; +file out; + +file in1[] ; + +out = RunDSSAT(in1); +} + Added: SwiftApps/DSSAT/RunSwift.sh =================================================================== --- SwiftApps/DSSAT/RunSwift.sh (rev 0) +++ SwiftApps/DSSAT/RunSwift.sh 2011-09-01 15:31:00 UTC (rev 5043) @@ -0,0 +1,14 @@ +count=$(head -1 counter.txt); +expr $count + 1 > counter.txt +#echo $count +mkdir run$count +cp RunDSSAT.swift run$count/ +cp gridList.txt run$count/ +cp sites.xml run$count/ +cp beagle-coaster-trunk.xml run$count/ +cp tc run$count/ +cp cf run$count/ +cd run$count +#time swift -tc.file tc -sites.file sites.xml -config cf RunDSSAT.swift >& swift.out +SWIFT_HEAP_MAX=7000M time swift -tc.file tc -sites.file beagle-coaster-trunk.xml -config cf RunDSSAT.swift >& swift.out + Property changes on: SwiftApps/DSSAT/RunSwift.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/bin/RunDSSAT.sh =================================================================== --- SwiftApps/DSSAT/bin/RunDSSAT.sh (rev 0) +++ SwiftApps/DSSAT/bin/RunDSSAT.sh 2011-09-01 15:31:00 UTC (rev 5043) @@ -0,0 +1,34 @@ +#!/bin/bash + +rm -rf run +mkdir run +cd run +mkdir data +out=$1 + +#copy files of grid cell into data directory +for i in $2 +do + cp ../$i data; +done + +cp /gpfs/pads/projects/CI-SES000031/csm/sim/* data +cp /gpfs/pads/projects/CI-SES000031/csm/*.CDE data + +cp /gpfs/pads/projects/CI-SES000031/csm/dssat.papia/bin/*.EXE . +cd data + + +../DSSAT040.EXE A H1234567.MZX > RESULT.OUT + + +cd .. +mkdir output + +mv data/*.OUT output +mv data/RESULT.OUT output + +tar cf ../$out output + +exit + Property changes on: SwiftApps/DSSAT/bin/RunDSSAT.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/bin/gridCheck.sh =================================================================== --- SwiftApps/DSSAT/bin/gridCheck.sh (rev 0) +++ SwiftApps/DSSAT/bin/gridCheck.sh 2011-09-01 15:31:00 UTC (rev 5043) @@ -0,0 +1,12 @@ +#ls $2 -1 | head >> $1; + +n=$(ls $2 -1 | head -1000); + +for i in $n +do + if [[ -f $2$i/SOIL.SOL && $(sed -n '6p' $2/$i/GENERIC1.WTH | grep 'NA'|wc -l) != 1 ]]; + then + echo $i >> $1; + fi +done + Property changes on: SwiftApps/DSSAT/bin/gridCheck.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/counter.txt =================================================================== --- SwiftApps/DSSAT/counter.txt (rev 0) +++ SwiftApps/DSSAT/counter.txt 2011-09-01 15:31:00 UTC (rev 5043) @@ -0,0 +1 @@ +26 Added: SwiftApps/DSSAT/tc =================================================================== --- SwiftApps/DSSAT/tc (rev 0) +++ SwiftApps/DSSAT/tc 2011-09-01 15:31:00 UTC (rev 5043) @@ -0,0 +1,34 @@ +#This is the transformation catalog. +# +#It comes pre-configured with a number of simple transformations with +#paths that are likely to work on a linux box. However, on some systems, +#the paths to these executables will be different (for example, sometimes +#some of these programs are found in /usr/bin rather than in /bin) +# +#NOTE WELL: fields in this file must be separated by tabs, not spaces; and +#there must be no trailing whitespace at the end of each line. +# +# site transformation path obsolete fields for compatibility + +localhost echo /bin/echo null null null +localhost cat /bin/cat null null null +localhost ls /bin/ls null null null +localhost grep /bin/grep null null null +localhost sort /bin/sort null null null +localhost paste /bin/paste null null null +localhost pwd /bin/pwd null null null + +# For cluster usage + +pbs RunDSSAT /gpfs/pads/swift/ketan/DSSAT/bin/RunDSSAT.sh null null null +pbs gridCheck /gpfs/pads/swift/ketan/DSSAT/bin/gridCheck.sh null null null + + + +# For localhost testing + +#localhost RunDSSAT /gpfs/pads/swift/ketan/DSSAT/bin/RunDSSAT.sh null null null +#localhost gridCheck /gpfs/pads/swift/ketan/DSSAT/bin/gridCheck.sh null null null + + + From wozniak at ci.uchicago.edu Thu Sep 1 10:35:48 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:35:48 -0500 (CDT) Subject: [Swift-commit] r5044 - trunk/libexec Message-ID: <20110901153548.98AE89CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:35:48 -0500 (Thu, 01 Sep 2011) New Revision: 5044 Modified: trunk/libexec/cdm.pl Log: Whitespace Modified: trunk/libexec/cdm.pl =================================================================== --- trunk/libexec/cdm.pl 2011-09-01 15:31:00 UTC (rev 5043) +++ trunk/libexec/cdm.pl 2011-09-01 15:35:48 UTC (rev 5044) @@ -1,10 +1,10 @@ -# CDM Lookup +# CDM Lookup sub print_hash { my $hash = $_[0]; - foreach (keys %$hash) + foreach (keys %$hash) { print "$_ : $$hash{$_} \n"; } @@ -47,18 +47,18 @@ print "$result\n"; } -# Command-line arguments: +# Command-line arguments: $task = $ARGV[0]; $arg = $ARGV[1]; -# Read fs.data off of stdin: +# Read fs.data off of stdin: @keys = (); %map = (); %properties = (); while () { chomp; - + my $comment = index $_, "#"; if ($comment >= 0) { $_ = substr($_, 0, $comment); @@ -66,15 +66,15 @@ next if $_ eq ""; - @tokens = split(/[ \t]+/, $_); - $type = shift(@tokens); - if ($type eq "rule") + @tokens = split(/[ \t]+/, $_); + $type = shift(@tokens); + if ($type eq "rule") { $key = shift(@tokens); - if (! defined $map{$key}) + if (! defined $map{$key}) { $rest = join(' ', @tokens); - @keys = (@keys, $key); + @keys = (@keys, $key); $map{$key} = $rest; } } @@ -84,13 +84,13 @@ $rest = join(' ', @tokens); $properties{$property} = $rest; } - else + else { - die "Unknown directive: $type"; + die "Unknown directive: $type"; } } -# Do the user task: +# Do the user task: if ($task eq "lookup") { cdm_lookup(\@keys, \%map, $arg); From wozniak at ci.uchicago.edu Thu Sep 1 10:38:23 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:38:23 -0500 (CDT) Subject: [Swift-commit] r5045 - trunk/docs/cookbook Message-ID: <20110901153823.E86599CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:38:23 -0500 (Thu, 01 Sep 2011) New Revision: 5045 Modified: trunk/docs/cookbook/ Log: Set ignores Property changes on: trunk/docs/cookbook ___________________________________________________________________ Added: svn:ignore + cookbook-asciidoc.html cookbook-asciidoc.pdf From wozniak at ci.uchicago.edu Thu Sep 1 10:41:56 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:41:56 -0500 (CDT) Subject: [Swift-commit] r5046 - in trunk/docs: siteguide tutorial utils Message-ID: <20110901154156.BDF539CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:41:56 -0500 (Thu, 01 Sep 2011) New Revision: 5046 Modified: trunk/docs/siteguide/ trunk/docs/tutorial/ trunk/docs/utils/ Log: Set ignores Property changes on: trunk/docs/siteguide ___________________________________________________________________ Added: svn:ignore + siteguide.html siteguide.pdf Property changes on: trunk/docs/tutorial ___________________________________________________________________ Added: svn:ignore + tutorial.html tutorial.pdf Property changes on: trunk/docs/utils ___________________________________________________________________ Added: svn:ignore + gensites.html gensites.pdf From wozniak at ci.uchicago.edu Thu Sep 1 10:46:51 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 10:46:51 -0500 (CDT) Subject: [Swift-commit] r5047 - trunk/tests/mpi/fusion/long Message-ID: <20110901154651.84E2E9CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 10:46:51 -0500 (Thu, 01 Sep 2011) New Revision: 5047 Modified: trunk/tests/mpi/fusion/long/100-mci.swift trunk/tests/mpi/fusion/long/sites.template.xml trunk/tests/mpi/fusion/long/tc.template.data Log: Minor improvements Modified: trunk/tests/mpi/fusion/long/100-mci.swift =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.swift 2011-09-01 15:41:56 UTC (rev 5046) +++ trunk/tests/mpi/fusion/long/100-mci.swift 2011-09-01 15:46:51 UTC (rev 5047) @@ -8,7 +8,9 @@ file input<"100-input.txt">; -foreach i in [0:4] { +int total = 10; + +foreach i in [0:total] { file output; output = transform(input); } Modified: trunk/tests/mpi/fusion/long/sites.template.xml =================================================================== --- trunk/tests/mpi/fusion/long/sites.template.xml 2011-09-01 15:41:56 UTC (rev 5046) +++ trunk/tests/mpi/fusion/long/sites.template.xml 2011-09-01 15:46:51 UTC (rev 5047) @@ -8,7 +8,7 @@ - 1 + 100 7200 1 Modified: trunk/tests/mpi/fusion/long/tc.template.data =================================================================== --- trunk/tests/mpi/fusion/long/tc.template.data 2011-09-01 15:41:56 UTC (rev 5046) +++ trunk/tests/mpi/fusion/long/tc.template.data 2011-09-01 15:46:51 UTC (rev 5047) @@ -19,5 +19,5 @@ # hydra-tests-2 -beagle mpi_cp _DIR_/mpi-cp INSTALLED INTEL32::LINUX globus::hostCount=2 -beagle mpi_sleep _DIR_/mpi-sleep INSTALLED INTEL32::LINUX globus::hostCount=2 +fusion mpi_cp _DIR_/mpi-cp INSTALLED INTEL32::LINUX globus::hostCount=2 +fusion mpi_sleep _DIR_/mpi-sleep INSTALLED INTEL32::LINUX globus::hostCount=2 From wilde at ci.uchicago.edu Thu Sep 1 11:05:08 2011 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Thu, 1 Sep 2011 11:05:08 -0500 (CDT) Subject: [Swift-commit] r5048 - SwiftApps/ParVis/PagodaTest Message-ID: <20110901160508.1DDCB9CD03@svn.ci.uchicago.edu> Author: wilde Date: 2011-09-01 11:05:07 -0500 (Thu, 01 Sep 2011) New Revision: 5048 Added: SwiftApps/ParVis/PagodaTest/tc.hc1 SwiftApps/ParVis/PagodaTest/tc.hc2 SwiftApps/ParVis/PagodaTest/tc.hcm Modified: SwiftApps/ParVis/PagodaTest/README SwiftApps/ParVis/PagodaTest/tc Log: Add tc files for a variety of JETS configs; list in README Modified: SwiftApps/ParVis/PagodaTest/README =================================================================== --- SwiftApps/ParVis/PagodaTest/README 2011-09-01 15:46:51 UTC (rev 5047) +++ SwiftApps/ParVis/PagodaTest/README 2011-09-01 16:05:07 UTC (rev 5048) @@ -1,3 +1,4 @@ + To run Swift Pagoda tests: Tests are coded to run on Fusion, and point to Fusion datasets and apps. @@ -27,5 +28,33 @@ PATH=/homes/wilde/mpich2-install/bin:/homes/wilde/swift/src/trunk/cog/modules/swift/dist/swift-svn/bin:$PATH +tc files included are: +tc: no hostCounts, no JETS +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null null +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null + +tc.hc1: hostCount 1 + +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null hostCount=1 +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=1 +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=1 + +tc.hc2: hostCount 2 + +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null hostCount=2 +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=2 +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=2 + +tc.hcm: mixed hostCounts (1,2,4) + +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null hostCount=1 +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=2 +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=4 + + + + + Modified: SwiftApps/ParVis/PagodaTest/tc =================================================================== --- SwiftApps/ParVis/PagodaTest/tc 2011-09-01 15:46:51 UTC (rev 5047) +++ SwiftApps/ParVis/PagodaTest/tc 2011-09-01 16:05:07 UTC (rev 5048) @@ -1,6 +1,4 @@ -# localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null null - localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null null -localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null -localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null null Added: SwiftApps/ParVis/PagodaTest/tc.hc1 =================================================================== --- SwiftApps/ParVis/PagodaTest/tc.hc1 (rev 0) +++ SwiftApps/ParVis/PagodaTest/tc.hc1 2011-09-01 16:05:07 UTC (rev 5048) @@ -0,0 +1,4 @@ +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null hostCount=1 +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=1 +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=1 + Added: SwiftApps/ParVis/PagodaTest/tc.hc2 =================================================================== --- SwiftApps/ParVis/PagodaTest/tc.hc2 (rev 0) +++ SwiftApps/ParVis/PagodaTest/tc.hc2 2011-09-01 16:05:07 UTC (rev 5048) @@ -0,0 +1,4 @@ +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null hostCount=2 +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=2 +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=2 + Added: SwiftApps/ParVis/PagodaTest/tc.hcm =================================================================== --- SwiftApps/ParVis/PagodaTest/tc.hcm (rev 0) +++ SwiftApps/ParVis/PagodaTest/tc.hcm 2011-09-01 16:05:07 UTC (rev 5048) @@ -0,0 +1,4 @@ +localhost pgflint /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgflint null null hostCount=1 +localhost pgea2 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=2 +localhost pgea4 /fusion/gpfs/home/mickelso/soft/pagoda-dev-r587/bin/pgea null null hostCount=4 + From ketan at ci.uchicago.edu Thu Sep 1 11:12:33 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 1 Sep 2011 11:12:33 -0500 (CDT) Subject: [Swift-commit] r5049 - SwiftApps/DSSAT/bin Message-ID: <20110901161233.91BFE9CD03@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-01 11:12:33 -0500 (Thu, 01 Sep 2011) New Revision: 5049 Added: SwiftApps/DSSAT/bin/DSSAT040.EXE SwiftApps/DSSAT/bin/MINPT040.EXE Log: Added binaries for DSSAT Added: SwiftApps/DSSAT/bin/DSSAT040.EXE =================================================================== (Binary files differ) Property changes on: SwiftApps/DSSAT/bin/DSSAT040.EXE ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: SwiftApps/DSSAT/bin/MINPT040.EXE =================================================================== (Binary files differ) Property changes on: SwiftApps/DSSAT/bin/MINPT040.EXE ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream From wozniak at ci.uchicago.edu Thu Sep 1 15:05:39 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 15:05:39 -0500 (CDT) Subject: [Swift-commit] r5050 - usertools/persistent-coasters Message-ID: <20110901200539.8E88F9CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 15:05:39 -0500 (Thu, 01 Sep 2011) New Revision: 5050 Added: usertools/persistent-coasters/test/ Log: Tests for network connectivity, etc. From wozniak at ci.uchicago.edu Thu Sep 1 15:06:21 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 15:06:21 -0500 (CDT) Subject: [Swift-commit] r5051 - usertools/persistent-coasters/test Message-ID: <20110901200621.8EE089CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 15:06:21 -0500 (Thu, 01 Sep 2011) New Revision: 5051 Added: usertools/persistent-coasters/test/cobalt-test.zsh usertools/persistent-coasters/test/test-connect.zsh Log: Network connectivity test Added: usertools/persistent-coasters/test/cobalt-test.zsh =================================================================== --- usertools/persistent-coasters/test/cobalt-test.zsh (rev 0) +++ usertools/persistent-coasters/test/cobalt-test.zsh 2011-09-01 20:06:21 UTC (rev 5051) @@ -0,0 +1,10 @@ +#!/bin/zsh + +cqsub -q default \ + -p PTMAP \ + -t 20 \ + -n 1 \ + -C /home/wozniak/proj/persistent-coasters \ + -E /home/wozniak/proj/persistent-coasters/test.err \ + -o /home/wozniak/proj/persistent-coasters/test.out \ + /home/wozniak/proj/persistent-coasters/test-connect.zsh Property changes on: usertools/persistent-coasters/test/cobalt-test.zsh ___________________________________________________________________ Added: svn:executable + * Added: usertools/persistent-coasters/test/test-connect.zsh =================================================================== --- usertools/persistent-coasters/test/test-connect.zsh (rev 0) +++ usertools/persistent-coasters/test/test-connect.zsh 2011-09-01 20:06:21 UTC (rev 5051) @@ -0,0 +1,5 @@ +#!/bin/zsh + +date +# pwd | netcat 140.221.82.124 1987 +pwd | netcat 10.40.9.151 1987 Property changes on: usertools/persistent-coasters/test/test-connect.zsh ___________________________________________________________________ Added: svn:executable + * From wozniak at ci.uchicago.edu Thu Sep 1 15:07:04 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 15:07:04 -0500 (CDT) Subject: [Swift-commit] r5052 - usertools/persistent-coasters Message-ID: <20110901200704.8D1489CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 15:07:04 -0500 (Thu, 01 Sep 2011) New Revision: 5052 Added: usertools/persistent-coasters/worker-cobalt.m4.zsh usertools/persistent-coasters/worker-cobalt.zsh Modified: usertools/persistent-coasters/README.txt usertools/persistent-coasters/settings.sh usertools/persistent-coasters/start-service.zsh usertools/persistent-coasters/workers-cobalt.zsh usertools/persistent-coasters/workers-local.zsh usertools/persistent-coasters/workers-ssh.zsh Log: Various improvements: now works with Cobalt on Eureka Modified: usertools/persistent-coasters/README.txt =================================================================== --- usertools/persistent-coasters/README.txt 2011-09-01 20:06:21 UTC (rev 5051) +++ usertools/persistent-coasters/README.txt 2011-09-01 20:07:04 UTC (rev 5052) @@ -1,28 +1,43 @@ -Overview of persistent CoasterService process +// This is an asciidoc file but should also be human-readable -0) Source settings.sh or a similar file -1) Start coaster service -2) Get URL to which Swift should connect from service output -3) Run Swift once to send settings to CoasterService, - putting CoasterService in passive mode -4) Get URL to which workers should connect from Swift output -5) Connect workers to CoasterService -6) Run Swift for application += Usage -Usage: +. Edit +settings.sh+ +. Run +./start-service.zsh+ +.. +start-service.zsh+ does the steps outlined above +. Start your application SwiftScripts with the generated sites.xml -Start start-service.zsh - - start-service.zsh does the above steps -Start your application SwiftScripts with the generated sites.xml += Concepts -Testing: +* Worker mode: How to launch the worker.pl scripts += Overview of persistent CoasterService process + +. Source +settings.sh+ +. Start coaster service +. Get URL to which Swift should connect from service output +. Run Swift once to send settings to CoasterService, + putting CoasterService in passive mode +. Get URL to which workers should connect from Swift output +. Connect workers to CoasterService +. Run Swift for application + += Testing + After the service has started, you will have fresh sites.xml and tc.data files. You can then run: +----------------- swift -sites.file sites.xml -tc.file tc.data system-info.swift +----------------- -which will run system-info.sh on the worker and create system-info.out . +which will run +system-info.sh+ on the worker and create +system-info.out+ -Read system-info.out to see if it worked. +Read +system-info.out+ to see if it worked. + += Output files + +* Worker logs go into +WORKER_LOGDIR+ ($PWD/logs) +** These will be named in accordance with the worker mode +* The coaster service log: +$WORKER_LOGDIR/coaster-service.log+ Modified: usertools/persistent-coasters/settings.sh =================================================================== --- usertools/persistent-coasters/settings.sh 2011-09-01 20:06:21 UTC (rev 5051) +++ usertools/persistent-coasters/settings.sh 2011-09-01 20:07:04 UTC (rev 5052) @@ -6,22 +6,30 @@ export SWIFT= export COASTER_SERVICE= +# Log level for the persistent-coasters scripts: DEBUG or NONE +export PC_LOGGING=DEBUG + # Where to place/launch worker.pl on the remote machine for sites.xml export WORKER_WORK=/home/${USER}/work -# How to launch workers- local or ssh -export WORKER_MODE=local -# ssh +# How to launch workers: local, ssh, or cobalt +export WORKER_MODE=cobalt # local # Worker logging setting passed to worker.pl for sites.xml -export WORKER_LOGGING=INFO +export WORKER_LOGGING_LEVEL=DEBUG # Worker host names for ssh # WORKER_HOSTS="login1 login2" export WORKER_HOSTS="$( print login{1,2}.mcs.anl.gov )" -# Some settings known to gensites -NODES=64 -QUEUE=prod-devel +# Allow the user to set the IP address of the service +# Necessary on Eureka: use the 10.*** address +export SERVICE_HOST=10.40.9.151 + +# Some settings known to gensites, schedulers +NODES=4 +QUEUE=default +# minutes MAXTIME=$(( 20 )) WORK=${HOME}/work +PROJECT=PTMAP Modified: usertools/persistent-coasters/start-service.zsh =================================================================== --- usertools/persistent-coasters/start-service.zsh 2011-09-01 20:06:21 UTC (rev 5051) +++ usertools/persistent-coasters/start-service.zsh 2011-09-01 20:07:04 UTC (rev 5052) @@ -9,25 +9,39 @@ # processes with ps # Setup paths, get helper functions +# PC -> "persistent-coasters" PC=$( cd $( dirname $0 ) ; /bin/pwd ) TOOLS=${PC} # In the future this might be ${SWIFT_HOME}/tools source ${TOOLS}/helpers.zsh +source ${TOOLS}/settings.sh [[ $? != 0 ]] && print "Could not load helpers.zsh!" && exit 1 [[ ${SWIFT} == "" ]] && SWIFT=$( which swift ) SWIFT_BIN=$( dirname ${SWIFT} ) -WORKER=${SWIFT_BIN}/worker.pl +export WORKER=${SWIFT_BIN}/worker.pl [[ ${COASTER_SERVICE} == "" ]] && COASTER_SERVICE=$( which coaster-service ) # This is an arbitrary port number export SERVICE_PORT=10985 -LOGDIR=logs -mkdir -p ${LOGDIR} +export WORKER_LOGDIR=${PWD}/logs +mkdir -p ${WORKER_LOGDIR} exitcode -SWIFT_OUT=${LOGDIR}/swift.out +SWIFT_OUT=${PWD}/swift.out -# Get the function start-workers() from somewhere +# Timestamped log messages; may be disabled via PC_LOGGING +log() +{ + MSG=${*} + local -R 4 T=${SECONDS} + if [[ ${PC_LOGGING} != "NONE" ]] + then + print "${T} ${MSG}" + fi +} + +# Get the function start-workers() from one of these files: +log $( declare WORKER_MODE ) if [[ ${WORKER_MODE} == "local" ]] then source workers-local.zsh @@ -104,8 +118,9 @@ } # eval trap cleanup_trap ${SIGNALS} -SERVICE_LOG=${LOGDIR}/coaster-service.log -$COASTER_SERVICE -nosec -p ${SERVICE_PORT} >& ${SERVICE_LOG} & +log "Starting the coaster service..." +SERVICE_LOG=${WORKER_LOGDIR}/coaster-service.log +${COASTER_SERVICE} -nosec -p ${SERVICE_PORT} >& ${SERVICE_LOG} & COASTER_SERVICE_PID=${!} sleep 1 @@ -113,6 +128,7 @@ SERVICE_COASTERS=$( get_service_coasters ${SERVICE_LOG} ) exitcode "Could not get coasters service!" export SERVICE_COASTERS +log "Coaster service on: ${SERVICE_COASTERS}" WORK=${WORKER_WORK} source setup.sh @@ -120,6 +136,7 @@ sleep 1 +log "Passivate..." { ${SWIFT} -config swift.properties \ -sites.file sites.passivate.xml \ -tc.file tc.passivate.data \ @@ -134,18 +151,19 @@ SERVICE_LOCAL=$( get_service_local ${SWIFT_OUT} ) exitcode "get_service_local failed!" export SERVICE_LOCAL +log "Local service on: ${SERVICE_LOCAL}" sleep 1 -print "Starting workers..." +log "Starting workers..." start-workers ${SERVICE_LOCAL} & START_WORKERS_PID=${!} sleep 1 cp sites.passivate.xml sites.xml -print "Created user sites file: sites.xml" +log "Created user sites file: sites.xml" cp tc.passivate.data tc.data -print "Created user tc file: tc.data" +log "Created user tc file: tc.data" exit 0 Added: usertools/persistent-coasters/worker-cobalt.m4.zsh =================================================================== --- usertools/persistent-coasters/worker-cobalt.m4.zsh (rev 0) +++ usertools/persistent-coasters/worker-cobalt.m4.zsh 2011-09-01 20:07:04 UTC (rev 5052) @@ -0,0 +1,23 @@ +#!/bin/zsh + +# This is a template processed by m4 + +URI=esyscmd(printf $URI) +ID=esyscmd(printf $ID) +LOGDIR=esyscmd(printf $WORKER_LOGDIR) +WORKER=esyscmd(printf $WORKER) + +export WORKER_LOGGING_LEVEL=esyscmd(printf $WORKER_LOGGING_LEVEL) + +# Launch the worker +${WORKER} ${URI} ${ID} ${LOGDIR} +WORKER_RC=${?} + +if [[ ${WORKER_RC} != 0 ]] + then + print "Worker failed: ${ID}" + date + exit 1 +fi + +exit 0 Added: usertools/persistent-coasters/worker-cobalt.zsh =================================================================== --- usertools/persistent-coasters/worker-cobalt.zsh (rev 0) +++ usertools/persistent-coasters/worker-cobalt.zsh 2011-09-01 20:07:04 UTC (rev 5052) @@ -0,0 +1,19 @@ +#!/bin/zsh + +# This is a template processed by m4 + +URI=http://140.221.82.124:38199 +ID=2011-09-01-18-29-53.21666 +LOGDIR= +WORKER=/home/wozniak/import/cog/modules/swift/dist/swift-svn/bin/worker.pl + +${WORKER} ${URI} ${ID} ${LOGDIR} +WORKER_RC=${?} + +if [[ ${WORKER_RC} != 0 ]] + then + print "Worker failed: ${ID}" + exit 1 +fi + +exit 0 Modified: usertools/persistent-coasters/workers-cobalt.zsh =================================================================== --- usertools/persistent-coasters/workers-cobalt.zsh 2011-09-01 20:06:21 UTC (rev 5051) +++ usertools/persistent-coasters/workers-cobalt.zsh 2011-09-01 20:07:04 UTC (rev 5052) @@ -3,26 +3,39 @@ # This is not complete and will not work because you cannot # pass argument on the cqsub command line -start_workers() +start-workers() { local URI=$1 - local TIMESTAMP=$(date "+%Y.%m%d.%H%M%S") + local TIMESTAMP=$(date "+%Y-%m-%d-%H-%M-%S") local -Z 5 R=${RANDOM} ID="${TIMESTAMP}.${R}" - # TODO: 1) make worker.sh script that calls worker.pl with args - # 2) cqsub that worker.sh + checkvars QUEUE PROJECT MAXTIME NODES WORKER_LOGDIR - cqsub -q ${QUEUE} \ - -k zeptoos \ - -t ${MAXTIME} \ # minutes - -n ${NODES} \ - --cwd ${LOGDIR} \ - -E ${LOGDIR}/cobalt.${$}.stderr \ - -o ${LOGDIR}/cobalt.${$}.stdout \ - -e "WORKER_LOGGING_LEVEL=DEBUG:ZOID_ENABLE_NAT=true" \ - ${WORKER} ${URI} ${ID} ${LOGDIR} + if [[ ${SERVICE_HOST} != "" ]] + then + # Override the local service IP address + # ZSH sed-like substitution expansion + URI=${URI/<->.<->.<->.<->/${SERVICE_HOST}} + fi + log "Workers connect to: ${URI}" - START_WORKERS_PID= + # Make worker wrapper script that calls worker.pl with args + export URI ID LOGDIR + WORKER_WRAPPER=${WORKER_LOGDIR}/worker-cobalt.zsh + m4 < ${PC}/worker-cobalt.m4.zsh > ${WORKER_WRAPPER} + chmod u+x ${WORKER_WRAPPER} + + # Launch it + cqsub -q ${QUEUE} \ + -p ${PROJECT} \ + -t ${MAXTIME} \ + -n ${NODES} \ + -C ${WORKER_LOGDIR} \ + -E ${WORKER_LOGDIR}/worker.${ID}.err \ + -o ${WORKER_LOGDIR}/worker.${ID}.out \ + -e "WORKER_LOGGING_LEVEL=DEBUG" \ + ${WORKER_WRAPPER} + return 0 } Modified: usertools/persistent-coasters/workers-local.zsh =================================================================== --- usertools/persistent-coasters/workers-local.zsh 2011-09-01 20:06:21 UTC (rev 5051) +++ usertools/persistent-coasters/workers-local.zsh 2011-09-01 20:07:04 UTC (rev 5052) @@ -6,7 +6,7 @@ { local URI=$1 - ${WORKER} ${URI} LOCAL ${LOGDIR} & + ${WORKER} ${URI} LOCAL ${WORKER_LOGDIR} & # TODO: manage these PIDs # START_WORKERS_PID= Modified: usertools/persistent-coasters/workers-ssh.zsh =================================================================== --- usertools/persistent-coasters/workers-ssh.zsh 2011-09-01 20:06:21 UTC (rev 5051) +++ usertools/persistent-coasters/workers-ssh.zsh 2011-09-01 20:07:04 UTC (rev 5052) @@ -14,7 +14,8 @@ do pwd scp ${WORKER} ${MACHINE}:${WORKER_WORK} - ssh ${MACHINE} ${WORKER_WORK}/worker.pl ${URI} ${MACHINE} ${LOGDIR} & + ssh ${MACHINE} \ + ${WORKER_WORK}/worker.pl ${URI} ${MACHINE} ${WORKER_LOGDIR} & done # TODO: manage these PIDs From wozniak at ci.uchicago.edu Thu Sep 1 15:10:13 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 15:10:13 -0500 (CDT) Subject: [Swift-commit] r5053 - usertools/persistent-coasters Message-ID: <20110901201013.0B6119CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 15:10:12 -0500 (Thu, 01 Sep 2011) New Revision: 5053 Modified: usertools/persistent-coasters/README.txt Log: Fixes to README Modified: usertools/persistent-coasters/README.txt =================================================================== --- usertools/persistent-coasters/README.txt 2011-09-01 20:07:04 UTC (rev 5052) +++ usertools/persistent-coasters/README.txt 2011-09-01 20:10:12 UTC (rev 5053) @@ -1,21 +1,24 @@ +Persistent Coasters Helper Scripts +================================== + // This is an asciidoc file but should also be human-readable -= Usage +== Usage . Edit +settings.sh+ . Run +./start-service.zsh+ .. +start-service.zsh+ does the steps outlined above -. Start your application SwiftScripts with the generated sites.xml +. Start your application SwiftScripts with the generated +sites.xml+ -= Concepts +== Concepts * Worker mode: How to launch the worker.pl scripts -= Overview of persistent CoasterService process +== Overview of persistent CoasterService process . Source +settings.sh+ -. Start coaster service +. Start coaster service . Get URL to which Swift should connect from service output . Run Swift once to send settings to CoasterService, putting CoasterService in passive mode @@ -23,7 +26,7 @@ . Connect workers to CoasterService . Run Swift for application -= Testing +== Testing After the service has started, you will have fresh sites.xml and tc.data files. You can then run: @@ -36,7 +39,7 @@ Read +system-info.out+ to see if it worked. -= Output files +== Output files * Worker logs go into +WORKER_LOGDIR+ ($PWD/logs) ** These will be named in accordance with the worker mode From wilde at ci.uchicago.edu Thu Sep 1 16:09:25 2011 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Thu, 1 Sep 2011 16:09:25 -0500 (CDT) Subject: [Swift-commit] r5054 - trunk/bin/grid Message-ID: <20110901210925.4EDB99CD03@svn.ci.uchicago.edu> Author: wilde Date: 2011-09-01 16:09:25 -0500 (Thu, 01 Sep 2011) New Revision: 5054 Modified: trunk/bin/grid/foreachsite trunk/bin/grid/run-worker.sh Log: fixed problem in foreachsite; edits to run-worker. Modified: trunk/bin/grid/foreachsite =================================================================== --- trunk/bin/grid/foreachsite 2011-09-01 20:10:12 UTC (rev 5053) +++ trunk/bin/grid/foreachsite 2011-09-01 21:09:25 UTC (rev 5054) @@ -6,13 +6,12 @@ # FIXME: test for valid proxy -# Usage: foreachsite [-resource fork|worker ] scriptname +usage="$0 foreachsite [-resource fork|worker ] [-sites alt-sites-file] scriptname" -usage="$0 foreachsite [-resource fork|worker ] scriptname" - # Process command line arguments while [ $# -gt 0 ]; do case $1 in + -sites) sitefile=$2; shift 2;; -resource) resource=$2; shift 2 ;; -*) echo $usage 1>&2 exit 1 ;; @@ -31,10 +30,13 @@ echo Running foreachsite: resource=$resource script=$scriptparam rundir=$rundir -# swift-osg-ress-site-catalog --engage-verified --condor-g >osg.xml -swift-osg-ress-site-catalog --engage --condor-g >osg.xml +if [ _$sitefile = _ ]; then + sitefile=osg.xml + # swift-osg-ress-site-catalog --engage --condor-g >osg.xml + swift-osg-ress-site-catalog --vo=engage --condor-g >osg.xml +fi -for jobmanager in $(grep gridRes osg.xml | sed -e 's/^.* //' -e 's/<.*//' ); do +for jobmanager in $(grep gridRes $sitefile | sed -e 's/^.* //' -e 's/<.*//' ); do ( sitename=$(echo $jobmanager | sed -e 's,/.*,,') # strip off batch jobmanager /jobmanager, leaving site name mkdir $sitename cd $sitename Modified: trunk/bin/grid/run-worker.sh =================================================================== --- trunk/bin/grid/run-worker.sh 2011-09-01 20:10:12 UTC (rev 5053) +++ trunk/bin/grid/run-worker.sh 2011-09-01 21:09:25 UTC (rev 5054) @@ -12,6 +12,8 @@ logdir=$(mktemp -d $OSG_WN_TMP/${workername}.workerdir.XXXXXX) nlines=1000 +PATH=$OSG_APP/extenci/aashish/terfix/bin:$PATH + echo "=== contact: $contact" echo "=== name: $workername Running in dir $(pwd)" echo "=== cwd: $(pwd)" From wilde at ci.uchicago.edu Thu Sep 1 16:10:15 2011 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Thu, 1 Sep 2011 16:10:15 -0500 (CDT) Subject: [Swift-commit] r5055 - trunk/docs/siteguide Message-ID: <20110901211015.73E589CD03@svn.ci.uchicago.edu> Author: wilde Date: 2011-09-01 16:10:15 -0500 (Thu, 01 Sep 2011) New Revision: 5055 Modified: trunk/docs/siteguide/grid Log: edits to Grid tools for site config guide. Modified: trunk/docs/siteguide/grid =================================================================== --- trunk/docs/siteguide/grid 2011-09-01 21:09:25 UTC (rev 5054) +++ trunk/docs/siteguide/grid 2011-09-01 21:10:15 UTC (rev 5055) @@ -121,8 +121,52 @@ concatenates all the site names that sucessfully resturned an output file from site tests. +Installing software on OSG sites +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The command "foreachsite" will execute a local shell script passed to +it as an argument, on each OSG site in the Engage VO ReSS site +catalog. The user's installscript will execute on either the head node +(as a GRAM "fork" job) or on a worker node, as controlled by the +-resource option. Its syntax is: + +----- +$ ./foreachsite -help +./foreachsite foreachsite [-resource fork|worker ] [-sites alt-sites-file] scriptname +$ +----- + +To install your software, create a script similar to "myapp.sh", +below, which (in this example) reads a tar file of a pre-compiled +application "myapp-2.12" and executes a test script for that +application. The test script should print some reconizable indication +of its success or failure: + +----- +$ cat myinstall.sh +renice 2 -p $$ +IDIR=OSG_APP/extenci/myname/myapp +mkdir -p $IDIR +cd $IDIR +wget http://my.url.edu/~mydir/myapp-2.12.tar.tgz +tar zxf myapp-2.12.tar.tgz +myapp-2.12/bin/test_myapp.sh +if [ $? = 0 ]; then + echo INSTALL SUCCEEDED +else + echo INSTALL FAILED +fi +$ +$ foreachsite -resource fork myinstall.sh +$ +$ # Wait a file here, then poll for successfully installed apps... +$ +$ grep SUCCEEDED run.89/*/*.stdout +$ + + Starting a single coaster service ---------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This single coaster service will service all grid sites: From wozniak at ci.uchicago.edu Thu Sep 1 20:39:16 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 20:39:16 -0500 (CDT) Subject: [Swift-commit] r5056 - usertools/persistent-coasters Message-ID: <20110902013916.5ECE59CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 20:39:16 -0500 (Thu, 01 Sep 2011) New Revision: 5056 Modified: usertools/persistent-coasters/workers-cobalt.zsh Log: Whitespace Modified: usertools/persistent-coasters/workers-cobalt.zsh =================================================================== --- usertools/persistent-coasters/workers-cobalt.zsh 2011-09-01 21:10:15 UTC (rev 5055) +++ usertools/persistent-coasters/workers-cobalt.zsh 2011-09-02 01:39:16 UTC (rev 5056) @@ -10,9 +10,9 @@ local -Z 5 R=${RANDOM} ID="${TIMESTAMP}.${R}" - checkvars QUEUE PROJECT MAXTIME NODES WORKER_LOGDIR + checkvars QUEUE PROJECT MAXTIME NODES WORKER_LOGDIR - if [[ ${SERVICE_HOST} != "" ]] + if [[ ${SERVICE_HOST} != "" ]] then # Override the local service IP address # ZSH sed-like substitution expansion @@ -21,7 +21,7 @@ log "Workers connect to: ${URI}" # Make worker wrapper script that calls worker.pl with args - export URI ID LOGDIR + export URI ID LOGDIR WORKER_WRAPPER=${WORKER_LOGDIR}/worker-cobalt.zsh m4 < ${PC}/worker-cobalt.m4.zsh > ${WORKER_WRAPPER} chmod u+x ${WORKER_WRAPPER} @@ -35,7 +35,7 @@ -E ${WORKER_LOGDIR}/worker.${ID}.err \ -o ${WORKER_LOGDIR}/worker.${ID}.out \ -e "WORKER_LOGGING_LEVEL=DEBUG" \ - ${WORKER_WRAPPER} + ${WORKER_WRAPPER} return 0 } From wozniak at ci.uchicago.edu Thu Sep 1 20:40:15 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 20:40:15 -0500 (CDT) Subject: [Swift-commit] r5057 - usertools/persistent-coasters Message-ID: <20110902014015.4F0E99CD03@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 20:40:15 -0500 (Thu, 01 Sep 2011) New Revision: 5057 Modified: usertools/persistent-coasters/start-service.zsh Log: Whitespace Modified: usertools/persistent-coasters/start-service.zsh =================================================================== --- usertools/persistent-coasters/start-service.zsh 2011-09-02 01:39:16 UTC (rev 5056) +++ usertools/persistent-coasters/start-service.zsh 2011-09-02 01:40:15 UTC (rev 5057) @@ -34,7 +34,7 @@ { MSG=${*} local -R 4 T=${SECONDS} - if [[ ${PC_LOGGING} != "NONE" ]] + if [[ ${PC_LOGGING} != "NONE" ]] then print "${T} ${MSG}" fi From wozniak at ci.uchicago.edu Thu Sep 1 22:38:14 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 22:38:14 -0500 (CDT) Subject: [Swift-commit] r5058 - usertools/persistent-coasters Message-ID: <20110902033814.E7E369CCC1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 22:38:14 -0500 (Thu, 01 Sep 2011) New Revision: 5058 Modified: usertools/persistent-coasters/worker-cobalt.zsh Log: Whitespace Modified: usertools/persistent-coasters/worker-cobalt.zsh =================================================================== --- usertools/persistent-coasters/worker-cobalt.zsh 2011-09-02 01:40:15 UTC (rev 5057) +++ usertools/persistent-coasters/worker-cobalt.zsh 2011-09-02 03:38:14 UTC (rev 5058) @@ -10,8 +10,8 @@ ${WORKER} ${URI} ${ID} ${LOGDIR} WORKER_RC=${?} -if [[ ${WORKER_RC} != 0 ]] - then +if [[ ${WORKER_RC} != 0 ]] + then print "Worker failed: ${ID}" exit 1 fi From wozniak at ci.uchicago.edu Thu Sep 1 22:38:29 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 22:38:29 -0500 (CDT) Subject: [Swift-commit] r5059 - usertools/persistent-coasters Message-ID: <20110902033829.4CBDC9CCC1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 22:38:29 -0500 (Thu, 01 Sep 2011) New Revision: 5059 Modified: usertools/persistent-coasters/helpers.zsh usertools/persistent-coasters/setup.sh usertools/persistent-coasters/start-service.zsh Log: Improvements for use from other directories Modified: usertools/persistent-coasters/helpers.zsh =================================================================== --- usertools/persistent-coasters/helpers.zsh 2011-09-02 03:38:14 UTC (rev 5058) +++ usertools/persistent-coasters/helpers.zsh 2011-09-02 03:38:29 UTC (rev 5059) @@ -73,6 +73,30 @@ return 0 } +# Timestamped log messages; may be disabled via LOGGING=NONE +log() +{ + MSG=${*} + local -R 4 T=${SECONDS} + if [[ ${LOGGING} != "NONE" ]] + then + print "${T} ${MSG}" + fi +} + +# Log a variable and value +logvar() +{ + V=$1 + MSG="${V}=${(P)V}" + log "$MSG" +} + +logvars() +{ + for v in ${*} ; logvar ${v} +} + nanos() { date +%s.%N @@ -140,7 +164,7 @@ } shoot_kv() -{ +{ local VAR=$1 eval print -a -C 2 \"'${(kv)'$VAR'[@]}'\" return 0 @@ -181,16 +205,16 @@ done local RESULT=${UNITS[UNIT+1]} - if [[ ${RESULT} == "B" ]] + if [[ ${RESULT} == "B" ]] then print "${BYTES} B" - else + else local -F BF=${BYTES} local MANTISSA=$(( BF / (1024 ** UNIT ) )) MANTISSA=$( significant ${LENGTH} ${MANTISSA} ) print "${MANTISSA} ${RESULT}" fi - + return 0 } @@ -206,7 +230,7 @@ local LZ=1 # Leading zeros local C local i=1 - while (( 1 )) + while (( 1 )) do C=${FLOAT[i]} [[ ${C} != "0" ]] && [[ ${C} != "." ]] && break @@ -214,11 +238,11 @@ RESULT+=${C} (( i++ )) done - while (( ${DIGITS} > 0 )) + while (( ${DIGITS} > 0 )) do C=${FLOAT[i]} - if [[ ${C} == "" ]] - then + if [[ ${C} == "" ]] + then (( ! DOT )) && RESULT+="." && DOT=1 C="0" fi @@ -228,7 +252,7 @@ (( DIGITS-- )) done if (( ! DOT )) # Extra zeros to finish out integer - then + then local -i J=${NUMBER} # J=${J} while (( ${#RESULT} < ${#J} )) Modified: usertools/persistent-coasters/setup.sh =================================================================== --- usertools/persistent-coasters/setup.sh 2011-09-02 03:38:14 UTC (rev 5058) +++ usertools/persistent-coasters/setup.sh 2011-09-02 03:38:29 UTC (rev 5059) @@ -6,11 +6,11 @@ export WORK -${TOOLS}/gensites.sh ${WORK} sites.passivate-template.xml \ +${TOOLS}/gensites.sh ${WORK} ${PC}/sites.passivate-template.xml \ sites.passivate.xml [[ $? != 0 ]] && bail "sites problem (passivate)" && return -${TOOLS}/gensites.sh ${WORK} sites.persistent.xml sites.xml +${TOOLS}/gensites.sh ${WORK} ${PC}/sites.persistent.xml sites.xml [[ $? != 0 ]] && bail "sites problem (persistent)" && return return 0 Modified: usertools/persistent-coasters/start-service.zsh =================================================================== --- usertools/persistent-coasters/start-service.zsh 2011-09-02 03:38:14 UTC (rev 5058) +++ usertools/persistent-coasters/start-service.zsh 2011-09-02 03:38:29 UTC (rev 5059) @@ -29,28 +29,19 @@ SWIFT_OUT=${PWD}/swift.out -# Timestamped log messages; may be disabled via PC_LOGGING -log() -{ - MSG=${*} - local -R 4 T=${SECONDS} - if [[ ${PC_LOGGING} != "NONE" ]] - then - print "${T} ${MSG}" - fi -} +logvars PC COASTER_SERVICE WORKER_LOGDIR # Get the function start-workers() from one of these files: log $( declare WORKER_MODE ) if [[ ${WORKER_MODE} == "local" ]] then - source workers-local.zsh + source ${PC}/workers-local.zsh elif [[ ${WORKER_MODE} == "ssh" ]] then - source workers-ssh.zsh + source ${PC}/workers-ssh.zsh elif [[ ${WORKER_MODE} == "cobalt" ]] then - source workers-cobalt.zsh + source ${PC}/workers-cobalt.zsh else print "Unknown WORKER_MODE: ${WORKER_MODE}" false @@ -131,16 +122,17 @@ log "Coaster service on: ${SERVICE_COASTERS}" WORK=${WORKER_WORK} -source setup.sh +source ${PC}/setup.sh exitcode "setup.sh failed!" sleep 1 log "Passivate..." -{ ${SWIFT} -config swift.properties \ - -sites.file sites.passivate.xml \ - -tc.file tc.passivate.data \ - passivate.swift < /dev/null >& ${SWIFT_OUT} +{ ${SWIFT} \ + -config ${PC}/swift.properties \ + -sites.file sites.passivate.xml \ + -tc.file ${PC}/tc.passivate.data \ + ${PC}/passivate.swift < /dev/null >& ${SWIFT_OUT} exitcode "Swift failed!" print "Swift finished." } & @@ -163,7 +155,7 @@ cp sites.passivate.xml sites.xml log "Created user sites file: sites.xml" -cp tc.passivate.data tc.data -log "Created user tc file: tc.data" +# cp tc.passivate.data tc.data +# log "Created user tc file: tc.data" exit 0 From wozniak at ci.uchicago.edu Thu Sep 1 22:39:08 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 1 Sep 2011 22:39:08 -0500 (CDT) Subject: [Swift-commit] r5060 - usertools/persistent-coasters Message-ID: <20110902033908.99D429CCC1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-01 22:39:08 -0500 (Thu, 01 Sep 2011) New Revision: 5060 Modified: usertools/persistent-coasters/worker-cobalt.m4.zsh Log: Whitespace Modified: usertools/persistent-coasters/worker-cobalt.m4.zsh =================================================================== --- usertools/persistent-coasters/worker-cobalt.m4.zsh 2011-09-02 03:38:29 UTC (rev 5059) +++ usertools/persistent-coasters/worker-cobalt.m4.zsh 2011-09-02 03:39:08 UTC (rev 5060) @@ -13,8 +13,8 @@ ${WORKER} ${URI} ${ID} ${LOGDIR} WORKER_RC=${?} -if [[ ${WORKER_RC} != 0 ]] - then +if [[ ${WORKER_RC} != 0 ]] + then print "Worker failed: ${ID}" date exit 1 From wozniak at ci.uchicago.edu Fri Sep 2 10:06:47 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 10:06:47 -0500 (CDT) Subject: [Swift-commit] r5061 - usertools/persistent-coasters Message-ID: <20110902150648.0156A9CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 10:06:47 -0500 (Fri, 02 Sep 2011) New Revision: 5061 Modified: usertools/persistent-coasters/workers-cobalt.zsh Log: Separate Cobalt output Modified: usertools/persistent-coasters/workers-cobalt.zsh =================================================================== --- usertools/persistent-coasters/workers-cobalt.zsh 2011-09-02 03:39:08 UTC (rev 5060) +++ usertools/persistent-coasters/workers-cobalt.zsh 2011-09-02 15:06:47 UTC (rev 5061) @@ -35,7 +35,17 @@ -E ${WORKER_LOGDIR}/worker.${ID}.err \ -o ${WORKER_LOGDIR}/worker.${ID}.out \ -e "WORKER_LOGGING_LEVEL=DEBUG" \ - ${WORKER_WRAPPER} + ${WORKER_WRAPPER} > cobalt-job-id.txt 2> cobalt.err + ERR_CHARS=$( wc -c cobalt.err) + if (( ERR_CHARS )) + then + print "Cobalt errors:" + cat cobalt.err + return 1 + fi + + log "Cobalt JobID: $( < cobalt-job-id.txt )" + return 0 } From wozniak at ci.uchicago.edu Fri Sep 2 10:07:15 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 10:07:15 -0500 (CDT) Subject: [Swift-commit] r5062 - usertools/persistent-coasters Message-ID: <20110902150715.A9CC69CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 10:07:15 -0500 (Fri, 02 Sep 2011) New Revision: 5062 Modified: usertools/persistent-coasters/start-service.zsh Log: Rename coasters service output file (not a log) Modified: usertools/persistent-coasters/start-service.zsh =================================================================== --- usertools/persistent-coasters/start-service.zsh 2011-09-02 15:06:47 UTC (rev 5061) +++ usertools/persistent-coasters/start-service.zsh 2011-09-02 15:07:15 UTC (rev 5062) @@ -110,13 +110,13 @@ # eval trap cleanup_trap ${SIGNALS} log "Starting the coaster service..." -SERVICE_LOG=${WORKER_LOGDIR}/coaster-service.log -${COASTER_SERVICE} -nosec -p ${SERVICE_PORT} >& ${SERVICE_LOG} & +SERVICE_OUTPUT=${WORKER_LOGDIR}/coaster-service.out +${COASTER_SERVICE} -nosec -p ${SERVICE_PORT} >& ${SERVICE_OUTPUT} & COASTER_SERVICE_PID=${!} sleep 1 -SERVICE_COASTERS=$( get_service_coasters ${SERVICE_LOG} ) +SERVICE_COASTERS=$( get_service_coasters ${SERVICE_OUTPUT} ) exitcode "Could not get coasters service!" export SERVICE_COASTERS log "Coaster service on: ${SERVICE_COASTERS}" From wozniak at ci.uchicago.edu Fri Sep 2 11:00:16 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 11:00:16 -0500 (CDT) Subject: [Swift-commit] r5063 - usertools/persistent-coasters Message-ID: <20110902160016.8300A9CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 11:00:16 -0500 (Fri, 02 Sep 2011) New Revision: 5063 Modified: usertools/persistent-coasters/README.txt Log: README additions Modified: usertools/persistent-coasters/README.txt =================================================================== --- usertools/persistent-coasters/README.txt 2011-09-02 15:07:15 UTC (rev 5062) +++ usertools/persistent-coasters/README.txt 2011-09-02 16:00:16 UTC (rev 5063) @@ -39,8 +39,31 @@ Read +system-info.out+ to see if it worked. +== Input files + ++settings.sh+:: +Settings for this script suite ++sites.passivate-template.xml+:: +Used by ++swift.properties+:: +Normal Swift properties + == Output files +These are places you can look to see what happened. + * Worker logs go into +WORKER_LOGDIR+ ($PWD/logs) ** These will be named in accordance with the worker mode -* The coaster service log: +$WORKER_LOGDIR/coaster-service.log+ +* The coaster service standard output: + +$WORKER_LOGDIR/coaster-service.out+ +* The coaster service log: +cps-date.log+ +* The Swift log: +job-id.log+ +* +swift.log+ is a dummy file created by Swift and the Coaster service + at start up. The log is renamed at initialization time; you can + ignore this file. +* The output from the Swift passivate task: +swift.out+ + +The Swift log contains information on the workflow, staging, etc. + +The Coaster service log contains information on Block/Cpu connections, execution, etc. + From wozniak at ci.uchicago.edu Fri Sep 2 15:36:05 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 15:36:05 -0500 (CDT) Subject: [Swift-commit] r5064 - usertools/persistent-coasters Message-ID: <20110902203605.601389CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 15:36:05 -0500 (Fri, 02 Sep 2011) New Revision: 5064 Modified: usertools/persistent-coasters/README.txt Log: Formatting Modified: usertools/persistent-coasters/README.txt =================================================================== --- usertools/persistent-coasters/README.txt 2011-09-02 16:00:16 UTC (rev 5063) +++ usertools/persistent-coasters/README.txt 2011-09-02 20:36:05 UTC (rev 5064) @@ -42,9 +42,12 @@ == Input files +settings.sh+:: -Settings for this script suite +Settings for this script suite: +NODES+, etc. +sites.passivate-template.xml+:: -Used by +Used to set Coaster service settings: ++jobsPerNode+, etc. ++nodeGranularity+ is not set here: +this is controlled by the +NODES+ value +swift.properties+:: Normal Swift properties @@ -52,7 +55,7 @@ These are places you can look to see what happened. -* Worker logs go into +WORKER_LOGDIR+ ($PWD/logs) +* Worker logs go into +WORKER_LOGDIR+ (+$PWD/logs+) ** These will be named in accordance with the worker mode * The coaster service standard output: +$WORKER_LOGDIR/coaster-service.out+ From wozniak at ci.uchicago.edu Fri Sep 2 15:37:13 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 15:37:13 -0500 (CDT) Subject: [Swift-commit] r5065 - usertools/persistent-coasters Message-ID: <20110902203713.48ABE9CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 15:37:13 -0500 (Fri, 02 Sep 2011) New Revision: 5065 Modified: usertools/persistent-coasters/sites.passivate-template.xml Log: Better coasters settings Modified: usertools/persistent-coasters/sites.passivate-template.xml =================================================================== --- usertools/persistent-coasters/sites.passivate-template.xml 2011-09-02 20:36:05 UTC (rev 5064) +++ usertools/persistent-coasters/sites.passivate-template.xml 2011-09-02 20:37:13 UTC (rev 5065) @@ -3,11 +3,11 @@ - passive - 4 - .03 + + passive + 1 + .03 10000 - _WORK_ From wozniak at ci.uchicago.edu Fri Sep 2 15:37:52 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 15:37:52 -0500 (CDT) Subject: [Swift-commit] r5066 - usertools/persistent-coasters Message-ID: <20110902203752.63E9A9CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 15:37:52 -0500 (Fri, 02 Sep 2011) New Revision: 5066 Modified: usertools/persistent-coasters/swift.properties Log: Better default swift.properties Modified: usertools/persistent-coasters/swift.properties =================================================================== --- usertools/persistent-coasters/swift.properties 2011-09-02 20:37:13 UTC (rev 5065) +++ usertools/persistent-coasters/swift.properties 2011-09-02 20:37:52 UTC (rev 5066) @@ -1,7 +1,8 @@ -wrapperlog.always.transfer=true +# wrapperlog.always.transfer=true +wrapperlog.always.transfer=false sitedir.keep=true execution.retries=0 lazy.errors=false -status.mode=provider -use.provider.staging=true -provider.staging.pin.swiftfiles=false +# status.mode=provider +# use.provider.staging=true +# provider.staging.pin.swiftfiles=false From wozniak at ci.uchicago.edu Fri Sep 2 15:38:42 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Fri, 2 Sep 2011 15:38:42 -0500 (CDT) Subject: [Swift-commit] r5067 - usertools/persistent-coasters Message-ID: <20110902203842.DB2289CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-02 15:38:42 -0500 (Fri, 02 Sep 2011) New Revision: 5067 Modified: usertools/persistent-coasters/start-service.zsh Log: Better error message Modified: usertools/persistent-coasters/start-service.zsh =================================================================== --- usertools/persistent-coasters/start-service.zsh 2011-09-02 20:37:52 UTC (rev 5066) +++ usertools/persistent-coasters/start-service.zsh 2011-09-02 20:38:42 UTC (rev 5067) @@ -133,7 +133,7 @@ -sites.file sites.passivate.xml \ -tc.file ${PC}/tc.passivate.data \ ${PC}/passivate.swift < /dev/null >& ${SWIFT_OUT} - exitcode "Swift failed!" + exitcode "Swift failed: see ${SWIFT_OUT}" print "Swift finished." } & SWIFT_PID=${!} From ketan at ci.uchicago.edu Fri Sep 2 16:37:19 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Fri, 2 Sep 2011 16:37:19 -0500 (CDT) Subject: [Swift-commit] r5068 - trunk/bin/grid Message-ID: <20110902213719.D9DBE9CD03@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-02 16:37:19 -0500 (Fri, 02 Sep 2011) New Revision: 5068 Modified: trunk/bin/grid/run-worker.sh trunk/bin/grid/start-grid-service Log: start-grid-service now starts a local service and places the localhost pool along with the grid pool in the sites.xml Modified: trunk/bin/grid/run-worker.sh =================================================================== --- trunk/bin/grid/run-worker.sh 2011-09-02 20:38:42 UTC (rev 5067) +++ trunk/bin/grid/run-worker.sh 2011-09-02 21:37:19 UTC (rev 5068) @@ -3,7 +3,6 @@ contact=$1 workername=$2 origlogdir=$3 -export PATH=${OSG_APP}/scec:$PATH echo OSG_WN_TMP=$OSG_WN_TMP if [ _$OSG_WN_TMP = _ ]; then OSG_WN_TMP=/tmp @@ -12,7 +11,7 @@ logdir=$(mktemp -d $OSG_WN_TMP/${workername}.workerdir.XXXXXX) nlines=1000 -PATH=$OSG_APP/extenci/aashish/terfix/bin:$PATH +PATH=$OSG_APP:$OSG_APP/scec:$OSG_APP/extenci/aashish/terfix/bin:$PATH echo "=== contact: $contact" echo "=== name: $workername Running in dir $(pwd)" Modified: trunk/bin/grid/start-grid-service =================================================================== --- trunk/bin/grid/start-grid-service 2011-09-02 20:38:42 UTC (rev 5067) +++ trunk/bin/grid/start-grid-service 2011-09-02 21:37:19 UTC (rev 5068) @@ -44,12 +44,14 @@ echo THROTTLE=$THROTTLE LOGLEVEL=$LOGLEVEL +coaster-service -port 1984 -localport 35753 -nosec >& local-coaster-service.out & +sleep 5 start-swift-service 1 & sleep 5 SPORT=$(cat service.sports) cat >sites.grid-ps.xml < - + passive $JOBSPERNODE @@ -59,6 +61,17 @@ proxy /tmp/$USER + + + + passive + $JOBSPERNODE + $THROTTLE + 10000 + + proxy + /tmp/$USER + EOF From wozniak at ci.uchicago.edu Tue Sep 6 09:45:00 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 6 Sep 2011 09:45:00 -0500 (CDT) Subject: [Swift-commit] r5070 - in trunk/tests: mpi/fusion/long providers/local-pbs-coasters/fusion Message-ID: <20110906144500.42B3D9CC9F@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-06 09:45:00 -0500 (Tue, 06 Sep 2011) New Revision: 5070 Modified: trunk/tests/mpi/fusion/long/100-mci.timeout trunk/tests/providers/local-pbs-coasters/fusion/001-catsn.setup.sh Log: Minor fixes Modified: trunk/tests/mpi/fusion/long/100-mci.timeout =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.timeout 2011-09-06 02:47:22 UTC (rev 5069) +++ trunk/tests/mpi/fusion/long/100-mci.timeout 2011-09-06 14:45:00 UTC (rev 5070) @@ -1 +1 @@ -1000 +3000 Modified: trunk/tests/providers/local-pbs-coasters/fusion/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/local-pbs-coasters/fusion/001-catsn.setup.sh 2011-09-06 02:47:22 UTC (rev 5069) +++ trunk/tests/providers/local-pbs-coasters/fusion/001-catsn.setup.sh 2011-09-06 14:45:00 UTC (rev 5070) @@ -1,4 +1,7 @@ #!/bin/bash +set -x + cp -v $GROUP/data.txt . || exit 1 -# cp -v $GROUP/*expected . || exit 1 + +exit 0 From wozniak at ci.uchicago.edu Tue Sep 6 09:45:36 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 6 Sep 2011 09:45:36 -0500 (CDT) Subject: [Swift-commit] r5071 - trunk/tests/mpi/local Message-ID: <20110906144536.D395B9CC9F@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-06 09:45:36 -0500 (Tue, 06 Sep 2011) New Revision: 5071 Modified: trunk/tests/mpi/local/ Log: Set ignores Property changes on: trunk/tests/mpi/local ___________________________________________________________________ Added: svn:ignore + mpi-cp From wozniak at ci.uchicago.edu Tue Sep 6 09:50:24 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 6 Sep 2011 09:50:24 -0500 (CDT) Subject: [Swift-commit] r5072 - trunk/tests/apps Message-ID: <20110906145024.796A59CC9F@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-06 09:50:24 -0500 (Tue, 06 Sep 2011) New Revision: 5072 Added: trunk/tests/apps/050-stomp-skel-1.args trunk/tests/apps/050-stomp-skel-1.clean.sh trunk/tests/apps/050-stomp-skel-1.setup.sh trunk/tests/apps/050-stomp-skel-1.swift trunk/tests/apps/050-stomp-skel-2.args trunk/tests/apps/050-stomp-skel-2.setup.sh trunk/tests/apps/050-stomp-skel-2.swift trunk/tests/apps/STOMP.txt trunk/tests/apps/gpg.sh trunk/tests/apps/pg.sh trunk/tests/apps/sph.sh trunk/tests/apps/stomp.sh Log: Check in test cases based on STOMP application Added: trunk/tests/apps/050-stomp-skel-1.args =================================================================== --- trunk/tests/apps/050-stomp-skel-1.args (rev 0) +++ trunk/tests/apps/050-stomp-skel-1.args 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1 @@ +-iters=4 Added: trunk/tests/apps/050-stomp-skel-1.clean.sh =================================================================== --- trunk/tests/apps/050-stomp-skel-1.clean.sh (rev 0) +++ trunk/tests/apps/050-stomp-skel-1.clean.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x + +rm -v data-*.txt || exit 1 + +exit 0 Property changes on: trunk/tests/apps/050-stomp-skel-1.clean.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/apps/050-stomp-skel-1.setup.sh =================================================================== --- trunk/tests/apps/050-stomp-skel-1.setup.sh (rev 0) +++ trunk/tests/apps/050-stomp-skel-1.setup.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x + +touch data-0.txt || exit 1 + +exit 0 Property changes on: trunk/tests/apps/050-stomp-skel-1.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/apps/050-stomp-skel-1.swift =================================================================== --- trunk/tests/apps/050-stomp-skel-1.swift (rev 0) +++ trunk/tests/apps/050-stomp-skel-1.swift 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,23 @@ + +type file; + +app (file output) model(file input) +{ + cp @input @output; +} + +int iterations = @toint(@arg("iters")); + +file inputs[]; +file input0<"data-0.txt">; +tracef("starting with: %M\n", input0); +inputs[0] = input0; + +iterate iter { + tracef("iter: %i\n", iter); + string output_name = @strcat("data-", iter+1, ".txt"); + tracef("output_name: %s\n", output_name); + file output; + output = model(inputs[iter]); + inputs[iter+1] = output; +} until (iter > iterations); Added: trunk/tests/apps/050-stomp-skel-2.args =================================================================== --- trunk/tests/apps/050-stomp-skel-2.args (rev 0) +++ trunk/tests/apps/050-stomp-skel-2.args 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1 @@ +-iters=4 Added: trunk/tests/apps/050-stomp-skel-2.setup.sh =================================================================== --- trunk/tests/apps/050-stomp-skel-2.setup.sh (rev 0) +++ trunk/tests/apps/050-stomp-skel-2.setup.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x + +touch data-0.txt || exit 1 + +exit 0 Property changes on: trunk/tests/apps/050-stomp-skel-2.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/apps/050-stomp-skel-2.swift =================================================================== --- trunk/tests/apps/050-stomp-skel-2.swift (rev 0) +++ trunk/tests/apps/050-stomp-skel-2.swift 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,73 @@ + +type file; + +app (file output) stomp(file input) +{ + stomp @input @output; +} + +// Creates the output and a few files named directory/pg-*.out +app (file output, file index) pg(file input, string directory) +{ + pg @input directory @output @index; +} + +app (file output) sph(file tarfile, string entry) +{ + sph @tarfile @entry @output; +} + +app (file output) gpg(file input[]) +{ + // Put output first for easier command-line processing + gpg @output @input; +} + +(file output) model(file input, int iter) +{ + tracef("model input: %M\n", input); + string directory = @strcat("run-", iter); + tracef("directory: %s\n", directory); + string stomp_out_name = @strcat(directory, "/stomp.out"); + tracef("stomp_out_name: %s\n", stomp_out_name); + file stomp_out; + stomp_out = stomp(input); + tracef("stomp_out: %M\n", stomp_out); + string pg_tar_name = @strcat(directory, "/pg.tar"); + file pg_tar; + string pg_index_name = @strcat(directory, "/pg.index"); + file pg_index; + (pg_tar, pg_index) = pg(stomp_out, directory); + tracef("pg output: %M %M\n", pg_tar, pg_index); + string pg_entry_names[] = readData(pg_index); + file pg_entries[]; + string sph_transform = @strcat(directory, "/sph-\\1"); + file sph_outputs[]; + foreach pg_entry, i in pg_entries + { + tracef("sph: %M:%s -> %M\n", + pg_tar, pg_entry_names[i], sph_outputs[i]); + sph_outputs[i] = sph(pg_tar, pg_entry_names[i]); + } + output = gpg(sph_outputs); + tracef("model output: %M\n", output); +} + +int iterations = @toint(@arg("iters")); + +file inputs[]; +file input0<"data-0.txt">; +tracef("starting with: %M\n", input0); +inputs[0] = input0; + +iterate iter { + tracef("iter: %i\n", iter); + string output_name = @strcat("data-", iter+1, ".txt"); + tracef("output_name: %s\n", output_name); + file output; + output = model(inputs[iter], iter); + inputs[iter+1] = output; +} until (iter > iterations); Added: trunk/tests/apps/STOMP.txt =================================================================== --- trunk/tests/apps/STOMP.txt (rev 0) +++ trunk/tests/apps/STOMP.txt 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,18 @@ + +ROADMAP + +start with data-0.txt + +run: "stomp data-0.txt" generates: run-0/ and run-0/stomp.out + +run: pg stomp.out generates: tarfile of pg-*.out files + (we can apply CDM to avoid data copies here) + +on each tarfile entry, +run: sph tarfile pg-number.out generates: sph-number.out + the sph wrapper extracts the entry + (we can apply CDM to avoid the full tarfile transfer) + +run: gpg sph-*.out generates: data-1.txt + +repeat Added: trunk/tests/apps/gpg.sh =================================================================== --- trunk/tests/apps/gpg.sh (rev 0) +++ trunk/tests/apps/gpg.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,14 @@ +#!/bin/sh + +# Simply transforms an input to an output + +OUTPUT=$1 +shift +INPUTS=${*} + +mkdir -p $( dirname ${INPUT} ) +for s in ${INPUTS} +do + echo ${s} +done > ${OUTPUT} + Property changes on: trunk/tests/apps/gpg.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/apps/pg.sh =================================================================== --- trunk/tests/apps/pg.sh (rev 0) +++ trunk/tests/apps/pg.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,29 @@ +#!/bin/sh + +# Generates multiple PG outputs, bundles them into OUTPUT tarfile +# INDEX contains names of PG outputs and +# is compatible with Swift readData() + +INPUT=$1 +DIRECTORY=$2 +OUTPUT=$3 +INDEX=$4 + +set -x + +# Operate in directory (run-*) +mkdir -p ${DIRECTORY} +pushd ${DIRECTORY} + +# Create outputs +PG_OUTS=$( echo pg-{a,b,c}.out ) +touch ${PG_OUTS[@]} +TAR=$( basename ${OUTPUT} ) +tar cf ${TAR} ${PG_OUTS[@]} + +# Make index +popd +for s in ${PG_OUTS[@]} +do + echo ${DIRECTORY}/${s} +done > ${INDEX} Property changes on: trunk/tests/apps/pg.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/apps/sph.sh =================================================================== --- trunk/tests/apps/sph.sh (rev 0) +++ trunk/tests/apps/sph.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,15 @@ +#!/bin/sh + +set -x + +TARFILE=$1 +ENTRY=$2 +OUTPUT=$3 + +# Entry name contains directory: remove it +ENTRY=$( basename ${ENTRY} ) + +tar xf ${TARFILE} ${ENTRY} || exit 1 +touch ${OUTPUT} + +exit 0 Property changes on: trunk/tests/apps/sph.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/apps/stomp.sh =================================================================== --- trunk/tests/apps/stomp.sh (rev 0) +++ trunk/tests/apps/stomp.sh 2011-09-06 14:50:24 UTC (rev 5072) @@ -0,0 +1,10 @@ +#!/bin/sh + +# Simply transforms an input to an output + +INPUT=$1 +OUTPUT=$2 + +mkdir -pv $( dirname ${OUTPUT} ) + +cp ${INPUT} ${OUTPUT} Property changes on: trunk/tests/apps/stomp.sh ___________________________________________________________________ Added: svn:executable + * From wozniak at ci.uchicago.edu Tue Sep 6 09:51:54 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 6 Sep 2011 09:51:54 -0500 (CDT) Subject: [Swift-commit] r5073 - trunk/src/org/griphyn/vdl/mapping/file Message-ID: <20110906145154.A72839CC9F@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-06 09:51:54 -0500 (Tue, 06 Sep 2011) New Revision: 5073 Modified: trunk/src/org/griphyn/vdl/mapping/file/AbstractFileMapper.java Log: Minor improvements Modified: trunk/src/org/griphyn/vdl/mapping/file/AbstractFileMapper.java =================================================================== --- trunk/src/org/griphyn/vdl/mapping/file/AbstractFileMapper.java 2011-09-06 14:50:24 UTC (rev 5072) +++ trunk/src/org/griphyn/vdl/mapping/file/AbstractFileMapper.java 2011-09-06 14:51:54 UTC (rev 5073) @@ -82,7 +82,7 @@ this.elementMapper = elementMapper; } - public void setParams(Map params) { + public void setParams(Map params) { super.setParams(params); if (PARAM_SUFFIX.isPresent(this)) { String suffix = PARAM_SUFFIX.getStringValue(this); @@ -116,7 +116,7 @@ sb.append(prefix); } - Iterator pi = path.iterator(); + Iterator pi = path.iterator(); int level = 0, tokenCount = path.size(); while (pi.hasNext()) { Path.Entry nextPathElement = (Path.Entry) pi.next(); @@ -202,7 +202,8 @@ final String prefix = PARAM_PREFIX.getStringValue(this); final String suffix = PARAM_SUFFIX.getStringValue(this); final String pattern = PARAM_PATTERN.getStringValue(this); - List l = new ArrayList(); + + List result = new ArrayList(); final AbsFile f; if (location == null) { f = new AbsFile("."); @@ -226,7 +227,7 @@ Path p = rmap(files[i].getName()); if (p != null) { if(logger.isDebugEnabled()) logger.debug("reverse-mapped to path "+p); - l.add(p); + result.add(p); } else { logger.debug("reverse-mapped to nothing"); } @@ -237,10 +238,10 @@ throw new IllegalArgumentException("Directory not found: " + location); } if(logger.isDebugEnabled()) { - logger.debug("Finish list existing paths for mapper "+this.hashCode()+" list="+l); + logger.debug("Finish list existing paths for mapper "+this.hashCode()+" list="+result); } - System.out.println(getVarName() + " (input): found " + l.size() + " files"); - return l; + System.out.println(getVarName() + " (input): found " + result.size() + " files"); + return result; } private String getVarName() { @@ -299,21 +300,17 @@ logger.debug("rmap filename "+name+" to path "+p+", codepath 1"); return p; } - else { - if (e[0].length() == 0 || e[1].length() == 0) { - logger.debug("e[0] or e[1] was zero - returning null. e[0]"+e[0]+" e[1]="+e[1]); - return null; - } - path = rmapElement(path, e[0]); - path = rmapElement(path, e[1]); - logger.debug("rmap filename "+name+" to path "+path+", codepath 2"); - return path; - } + if (e[0].length() == 0 || e[1].length() == 0) { + logger.debug("e[0] or e[1] was zero - returning null. e[0]"+e[0]+" e[1]="+e[1]); + return null; + } + path = rmapElement(path, e[0]); + path = rmapElement(path, e[1]); + logger.debug("rmap filename "+name+" to path "+path+", codepath 2"); + return path; } - else { - path = rmapElement(path, name.substring(0, index)); - name = name.substring(index + 1); - } + path = rmapElement(path, name.substring(0, index)); + name = name.substring(index + 1); level++; } } @@ -327,9 +324,7 @@ if (Character.isDigit(e.charAt(0))) { return path.addLast(getElementMapper().rmapIndex(e), true); } - else { - return path.addLast(getElementMapper().rmapField(e)); - } + return path.addLast(getElementMapper().rmapField(e)); } /** Appends the string representation of obj to the string buffer From wozniak at ci.uchicago.edu Tue Sep 6 10:16:00 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 6 Sep 2011 10:16:00 -0500 (CDT) Subject: [Swift-commit] r5074 - trunk/bin Message-ID: <20110906151600.8D0479CD07@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-06 10:16:00 -0500 (Tue, 06 Sep 2011) New Revision: 5074 Modified: trunk/bin/chxml trunk/bin/swift Log: Better error handling in bin/chxml, bin/swift (ref #347) Modified: trunk/bin/chxml =================================================================== --- trunk/bin/chxml 2011-09-06 14:51:54 UTC (rev 5073) +++ trunk/bin/chxml 2011-09-06 15:16:00 UTC (rev 5074) @@ -14,22 +14,28 @@ self.endTags=[] self.globusParams = 0 self.execProvider = "" - + if len(argstr)<2: print "please specify a sites file" - sys.exit() + sys.exit(1) i = 0 for o in argstr: if o == "'-sites.file'": self.sites_file = argstr[i+1].split("'")[1] elif o == "'-config'": - config_file = open(argstr[i+1].split("'")[1],"r") + try: + config_filename = argstr[i+1].split("'")[1] + config_file = open(config_filename,"r") + except IOError as (errno, strerror): + print strerror + sys.exit("Could not read: " + config_filename) + for line in config_file.readlines(): if line.strip().startswith('#'): continue if line.find("sites.file")>-1: self.sites_file = line.split("=")[1].strip() - i = i+1 + i = i+1 if (self.sites_file == ""): swift_loc = commands.getoutput("which swift") swift_home = swift_loc.split("bin")[0] @@ -55,10 +61,11 @@ def end_element(self, name): self.endTags.append(name) - + #------------------------main---------------------------------- mysite = siteProps(sys.argv) + try: mysite.parsefile() except Exception, e: @@ -87,4 +94,4 @@ if (config<1): print "Warning: Your site file, "+mysite.sites_file+" is missing a config entry" sys.exit() - + Modified: trunk/bin/swift =================================================================== --- trunk/bin/swift 2011-09-06 14:51:54 UTC (rev 5073) +++ trunk/bin/swift 2011-09-06 15:16:00 UTC (rev 5074) @@ -64,6 +64,10 @@ # make sure sites.xml file is well-formed $SWIFT_HOME/bin/chxml $CMDLINE +if [[ ${?} != 0 ]]; then + echo "Could not process input files!" + exit 1 +fi ### SETUP OTHER ENV VARIABLES #### @@ -171,4 +175,5 @@ # Local Variables: # tab-width: 4 +# indent-tabs-mode: t # End: From davidk at ci.uchicago.edu Tue Sep 6 11:48:56 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 6 Sep 2011 11:48:56 -0500 (CDT) Subject: [Swift-commit] r5075 - branches/release-0.93/docs/siteguide Message-ID: <20110906164856.468429CD07@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-06 11:48:56 -0500 (Tue, 06 Sep 2011) New Revision: 5075 Modified: branches/release-0.93/docs/siteguide/pads Log: Various updates to pads site guide Modified: branches/release-0.93/docs/siteguide/pads =================================================================== --- branches/release-0.93/docs/siteguide/pads 2011-09-06 15:16:00 UTC (rev 5074) +++ branches/release-0.93/docs/siteguide/pads 2011-09-06 16:48:56 UTC (rev 5075) @@ -4,8 +4,12 @@ PADS Quickstart ~~~~~~~~~~~~~~~ This section will walk you through running a simple Swift script -on PADS. +on PADS. It will explain how to setup software packages, how +to create the required Swift configuration files, and finally +how to run Swift. +Adding Software Packages +++++++++++++++++++++++++ In your home directory, edit a file called .soft and add these lines (in this order): ----- @@ -15,43 +19,71 @@ @default ----- -Log out of PADS, and log back in. +Log out of PADS, and log back in for these changes to take effect. -Next, paste the example below into a file called sites.xml. +Creating sites.xml +++++++++++++++++++ +Swift relies on various configuration files to determine how to +run. This section will provide a working configuration file which +you can copy and paste to get running quickly. The sites.xml file +tells Swift how to submit jobs, where working directories are +located, and various other configuration information. More +information on sites.xml can be found in the Swift User's Guide. +The first step is to paste the text below into a file named sites.xml. + ----- include::../../tests/providers/PADS/coasters/sites.template.xml[] ----- -Create a directory called swiftwork. Modify _WORK_ in sites.xml +This file will require just a few customizations. First, create a +directory called swiftwork. Modify \_WORK\_ in sites.xml to point to this new directory. For example ----- /home/myhome/swiftwork ----- -Next, paste the following example into a file called tc.data +Creating tc.data +++++++++++++++++ +The tc.data configuration file gives information about the applications +that will be called by Swift. More information about the format +of tc.data can be found in the Swift User's guide. +Paste the following example into a file named tc.data + ----- include::../../tests/providers/PADS/coasters/tc.template.data[] ----- -Copy the catsn Swift script and input text file into your current directory +Copy a Swift Script ++++++++++++++++++++ + +Within the Swift directory is an examples directory which contains +several introductory Swift scripts. The example we will use in this +section is called catsn.swift. Copy this script to the same directory +that your sites.xml and tc.data files are located. + ----- $ cp ~/swift-0.93/examples/misc/catsn.swift . $ cp ~/swift-0.93/examples/misc/data.txt . ----- TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. -And finally, run the script +Run Swift ++++++++++ + +Finally, run the script ----- $ swift -sites.file sites.xml -tc.file tc.data catsn.swift ----- You should see 10 new text files get created, named catsn*.out. If -you see these files, then you have succesfully run Swift on PADS! +you see these files, then you have succesfully run Swift on PADS! TIP: Make sure your default project is defined. Read on for more information. +Read on for more detailed information about running Swift on PADS. + Requesting Access ~~~~~~~~~~~~~~~~~ If you do not already have a Computation Institute account, you can request @@ -90,20 +122,17 @@ @default ----- -What You Need To Know Before Running Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Before you can create a Swift configuration file, there are some things -you will need to know. - Swift Work Directory ^^^^^^^^^^^^^^^^^^^^ The Swift work directory is a directory which Swift uses for processing work. -This directory needs to be writable. Common options for this are: +This directory needs to be writable and available to all worker nodes on +a shared filesystem. +.Examples ----- /home/username/swiftwork /home/username/work -/tmp +/autonfs/gpfs-pads/projects/CI-CCR000013/myusername ----- Which project(s) are you a member of? @@ -171,9 +200,11 @@ include::../../tests/providers/PADS/coasters/sites.template.xml[] ----- -Before you can use this configuration file, you will need to modify _WORK_ to a directory writable by you, -and have your default project defined. Copy this template, replace _WORK_, and then save as sites.xml. +Before you can use this configuration file, you will need to modify \_WORK\_ to a directory writable by you, +and have your default project defined. Copy this template, replace \_WORK\_, and then save as sites.xml. +If you wanted to use a different queue, replace "fast" with the desired queue name. + Manually Editing tc.data ~~~~~~~~~~~~~~~~~~~~~~~~ Below is the tc.data file used by Swift's test suite for running on PADS. @@ -186,12 +217,15 @@ Catsn.swift ~~~~~~~~~~~ -The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. +The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is +a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains +some simple input - a "hello world" will do the trick. ----- include::../../examples/misc/catsn.swift[] ----- + Running Swift ~~~~~~~~~~~~~ Now that everything is in place, run Swift with the following command: From davidk at ci.uchicago.edu Tue Sep 6 12:04:39 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 6 Sep 2011 12:04:39 -0500 (CDT) Subject: [Swift-commit] r5076 - branches/release-0.93/docs/siteguide Message-ID: <20110906170439.B916D9CD07@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-06 12:04:39 -0500 (Tue, 06 Sep 2011) New Revision: 5076 Modified: branches/release-0.93/docs/siteguide/intrepid branches/release-0.93/docs/siteguide/pads Log: Siteguide updates Modified: branches/release-0.93/docs/siteguide/intrepid =================================================================== --- branches/release-0.93/docs/siteguide/intrepid 2011-09-06 16:48:56 UTC (rev 5075) +++ branches/release-0.93/docs/siteguide/intrepid 2011-09-06 17:04:39 UTC (rev 5076) @@ -125,17 +125,17 @@ TODO: Update the rest below here ----- -include::../../tests/providers/local-pbs/pads/sites.template.xml[] +include::../../tests/providers/intrepid/sites.template.xml[] ----- -The values to note here are the ones that are listed between underscores. In the example above, they are _QUEUE_, and _WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. +The values to note here are the ones that are listed between underscores. In the example above, they are \_QUEUE_, and \_WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. Manually Editing tc.data ~~~~~~~~~~~~~~~~~~~~~~~~ Below is the tc.data file used by Swift's test suite for running on PADS. ----- -include::../../tests/providers/local-pbs/pads/tc.template.data[] +include::../../tests/providers/intrepid/tc.template.data[] ------ Copy these commands and save it as tc.data. Modified: branches/release-0.93/docs/siteguide/pads =================================================================== --- branches/release-0.93/docs/siteguide/pads 2011-09-06 16:48:56 UTC (rev 5075) +++ branches/release-0.93/docs/siteguide/pads 2011-09-06 17:04:39 UTC (rev 5076) @@ -9,7 +9,7 @@ how to run Swift. Adding Software Packages -++++++++++++++++++++++++ +^^^^^^^^^^^^^^^^^^^^^^^^ In your home directory, edit a file called .soft and add these lines (in this order): ----- @@ -22,7 +22,7 @@ Log out of PADS, and log back in for these changes to take effect. Creating sites.xml -++++++++++++++++++ +^^^^^^^^^^^^^^^^^^ Swift relies on various configuration files to determine how to run. This section will provide a working configuration file which you can copy and paste to get running quickly. The sites.xml file @@ -37,14 +37,14 @@ ----- This file will require just a few customizations. First, create a -directory called swiftwork. Modify \_WORK\_ in sites.xml +directory called swiftwork. Modify \_WORK_ in sites.xml to point to this new directory. For example ----- /home/myhome/swiftwork ----- Creating tc.data -++++++++++++++++ +^^^^^^^^^^^^^^^^ The tc.data configuration file gives information about the applications that will be called by Swift. More information about the format of tc.data can be found in the Swift User's guide. @@ -56,7 +56,7 @@ ----- Copy a Swift Script -+++++++++++++++++++ +^^^^^^^^^^^^^^^^^^^ Within the Swift directory is an examples directory which contains several introductory Swift scripts. The example we will use in this @@ -70,7 +70,7 @@ TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. Run Swift -+++++++++ +^^^^^^^^^ Finally, run the script ----- @@ -200,8 +200,8 @@ include::../../tests/providers/PADS/coasters/sites.template.xml[] ----- -Before you can use this configuration file, you will need to modify \_WORK\_ to a directory writable by you, -and have your default project defined. Copy this template, replace \_WORK\_, and then save as sites.xml. +Before you can use this configuration file, you will need to modify \_WORK_ to a directory writable by you, +and have your default project defined. Copy this template, replace \_WORK_, and then save as sites.xml. If you wanted to use a different queue, replace "fast" with the desired queue name. From davidk at ci.uchicago.edu Tue Sep 6 13:03:02 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 6 Sep 2011 13:03:02 -0500 (CDT) Subject: [Swift-commit] r5077 - in trunk/tests/providers: . beagle beagle/pbs fusion fusion/pbs local-cobalt local-pbs local-pbs-coasters pads pads/pbs queenbee queenbee/pbs surveyor surveyor/cobalt Message-ID: <20110906180302.87A089CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-06 13:03:02 -0500 (Tue, 06 Sep 2011) New Revision: 5077 Added: trunk/tests/providers/beagle/ trunk/tests/providers/beagle/pbs/ trunk/tests/providers/beagle/pbs/001-catsn.check.sh trunk/tests/providers/beagle/pbs/001-catsn.setup.sh trunk/tests/providers/beagle/pbs/001-catsn.swift trunk/tests/providers/beagle/pbs/001-catsn.timeout trunk/tests/providers/beagle/pbs/catsn.0001.out.expected trunk/tests/providers/beagle/pbs/catsn.0002.out.expected trunk/tests/providers/beagle/pbs/catsn.0003.out.expected trunk/tests/providers/beagle/pbs/catsn.0004.out.expected trunk/tests/providers/beagle/pbs/catsn.0005.out.expected trunk/tests/providers/beagle/pbs/catsn.0006.out.expected trunk/tests/providers/beagle/pbs/catsn.0007.out.expected trunk/tests/providers/beagle/pbs/catsn.0008.out.expected trunk/tests/providers/beagle/pbs/catsn.0009.out.expected trunk/tests/providers/beagle/pbs/catsn.0010.out.expected trunk/tests/providers/beagle/pbs/data.txt trunk/tests/providers/beagle/pbs/sites.template.xml trunk/tests/providers/beagle/pbs/tc.template.data trunk/tests/providers/crow/ trunk/tests/providers/fusion/ trunk/tests/providers/fusion/coasters/ trunk/tests/providers/fusion/pbs/ trunk/tests/providers/fusion/pbs/001-catsn.check.sh trunk/tests/providers/fusion/pbs/001-catsn.setup.sh trunk/tests/providers/fusion/pbs/001-catsn.swift trunk/tests/providers/fusion/pbs/001-catsn.timeout trunk/tests/providers/fusion/pbs/data.txt trunk/tests/providers/fusion/pbs/sites.template.xml trunk/tests/providers/fusion/pbs/tc.template.data trunk/tests/providers/intrepid/ trunk/tests/providers/mcs/ trunk/tests/providers/pads/ trunk/tests/providers/pads/coasters/ trunk/tests/providers/pads/pbs/ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout trunk/tests/providers/pads/pbs/catsn.0001.out.expected trunk/tests/providers/pads/pbs/catsn.0002.out.expected trunk/tests/providers/pads/pbs/catsn.0003.out.expected trunk/tests/providers/pads/pbs/catsn.0004.out.expected trunk/tests/providers/pads/pbs/catsn.0005.out.expected trunk/tests/providers/pads/pbs/catsn.0006.out.expected trunk/tests/providers/pads/pbs/catsn.0007.out.expected trunk/tests/providers/pads/pbs/catsn.0008.out.expected trunk/tests/providers/pads/pbs/catsn.0009.out.expected trunk/tests/providers/pads/pbs/catsn.0010.out.expected trunk/tests/providers/pads/pbs/data.txt trunk/tests/providers/pads/pbs/sites.template.xml trunk/tests/providers/pads/pbs/tc.template.data trunk/tests/providers/pads/pbs/title.txt trunk/tests/providers/queenbee/ trunk/tests/providers/queenbee/pbs/ trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout trunk/tests/providers/queenbee/pbs/README trunk/tests/providers/queenbee/pbs/catsn.0001.out.expected trunk/tests/providers/queenbee/pbs/catsn.0002.out.expected trunk/tests/providers/queenbee/pbs/catsn.0003.out.expected trunk/tests/providers/queenbee/pbs/catsn.0004.out.expected trunk/tests/providers/queenbee/pbs/catsn.0005.out.expected trunk/tests/providers/queenbee/pbs/catsn.0006.out.expected trunk/tests/providers/queenbee/pbs/catsn.0007.out.expected trunk/tests/providers/queenbee/pbs/catsn.0008.out.expected trunk/tests/providers/queenbee/pbs/catsn.0009.out.expected trunk/tests/providers/queenbee/pbs/catsn.0010.out.expected trunk/tests/providers/queenbee/pbs/data.txt trunk/tests/providers/queenbee/pbs/sites.template.xml trunk/tests/providers/queenbee/pbs/tc.template.data trunk/tests/providers/queenbee/pbs/title.txt trunk/tests/providers/surveyor/ trunk/tests/providers/surveyor/cobalt/ trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.check.sh trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.setup.sh trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.swift trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.timeout trunk/tests/providers/surveyor/cobalt/README trunk/tests/providers/surveyor/cobalt/catsn.0001.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0002.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0003.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0004.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0005.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0006.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0007.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0008.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0009.out.expected trunk/tests/providers/surveyor/cobalt/catsn.0010.out.expected trunk/tests/providers/surveyor/cobalt/data.txt trunk/tests/providers/surveyor/cobalt/sites.template.xml trunk/tests/providers/surveyor/cobalt/tc.template.data trunk/tests/providers/surveyor/cobalt/title.txt Removed: trunk/tests/providers/fusion/001-catsn.check.sh trunk/tests/providers/fusion/001-catsn.setup.sh trunk/tests/providers/fusion/001-catsn.swift trunk/tests/providers/fusion/001-catsn.timeout trunk/tests/providers/fusion/data.txt trunk/tests/providers/fusion/sites.template.xml trunk/tests/providers/fusion/tc.template.data trunk/tests/providers/local-cobalt/intrepid/ trunk/tests/providers/local-cobalt/surveyor/ trunk/tests/providers/local-pbs-coasters/beagle/ trunk/tests/providers/local-pbs-coasters/crow/ trunk/tests/providers/local-pbs-coasters/fusion/ trunk/tests/providers/local-pbs-coasters/pads/ trunk/tests/providers/local-pbs/beagle/ trunk/tests/providers/local-pbs/fusion/ trunk/tests/providers/local-pbs/pads/ trunk/tests/providers/local-pbs/queenbee/ trunk/tests/providers/local-sge-coasters/ trunk/tests/providers/pads/001-catsn-pads-pbs.check.sh trunk/tests/providers/pads/001-catsn-pads-pbs.swift trunk/tests/providers/pads/001-catsn-pads-pbs.timeout trunk/tests/providers/pads/catsn.0001.out.expected trunk/tests/providers/pads/catsn.0002.out.expected trunk/tests/providers/pads/catsn.0003.out.expected trunk/tests/providers/pads/catsn.0004.out.expected trunk/tests/providers/pads/catsn.0005.out.expected trunk/tests/providers/pads/catsn.0006.out.expected trunk/tests/providers/pads/catsn.0007.out.expected trunk/tests/providers/pads/catsn.0008.out.expected trunk/tests/providers/pads/catsn.0009.out.expected trunk/tests/providers/pads/catsn.0010.out.expected trunk/tests/providers/pads/data.txt trunk/tests/providers/pads/sites.template.xml trunk/tests/providers/pads/tc.template.data trunk/tests/providers/pads/title.txt trunk/tests/providers/persistent-coasters/ trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.check.sh trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.swift trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.timeout trunk/tests/providers/queenbee/README trunk/tests/providers/queenbee/catsn.0001.out.expected trunk/tests/providers/queenbee/catsn.0002.out.expected trunk/tests/providers/queenbee/catsn.0003.out.expected trunk/tests/providers/queenbee/catsn.0004.out.expected trunk/tests/providers/queenbee/catsn.0005.out.expected trunk/tests/providers/queenbee/catsn.0006.out.expected trunk/tests/providers/queenbee/catsn.0007.out.expected trunk/tests/providers/queenbee/catsn.0008.out.expected trunk/tests/providers/queenbee/catsn.0009.out.expected trunk/tests/providers/queenbee/catsn.0010.out.expected trunk/tests/providers/queenbee/data.txt trunk/tests/providers/queenbee/sites.template.xml trunk/tests/providers/queenbee/tc.template.data trunk/tests/providers/queenbee/title.txt trunk/tests/providers/sge-local/ trunk/tests/providers/ssh-pbs-coasters/ trunk/tests/providers/ssh/ trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh trunk/tests/providers/surveyor/001-catsn-surveyor.swift trunk/tests/providers/surveyor/001-catsn-surveyor.timeout trunk/tests/providers/surveyor/README trunk/tests/providers/surveyor/catsn.0001.out.expected trunk/tests/providers/surveyor/catsn.0002.out.expected trunk/tests/providers/surveyor/catsn.0003.out.expected trunk/tests/providers/surveyor/catsn.0004.out.expected trunk/tests/providers/surveyor/catsn.0005.out.expected trunk/tests/providers/surveyor/catsn.0006.out.expected trunk/tests/providers/surveyor/catsn.0007.out.expected trunk/tests/providers/surveyor/catsn.0008.out.expected trunk/tests/providers/surveyor/catsn.0009.out.expected trunk/tests/providers/surveyor/catsn.0010.out.expected trunk/tests/providers/surveyor/data.txt trunk/tests/providers/surveyor/sites.template.xml trunk/tests/providers/surveyor/tc.template.data trunk/tests/providers/surveyor/title.txt Log: Updating structure of provider tests Added: trunk/tests/providers/beagle/pbs/001-catsn.check.sh =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.check.sh (rev 0) +++ trunk/tests/providers/beagle/pbs/001-catsn.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,9 @@ +#!/bin/bash + +# Pseudo-code for now + +# for f in *.out.expected +# do +# assert *.out exists +# assert *.out.expected == *.out +# done Property changes on: trunk/tests/providers/beagle/pbs/001-catsn.check.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/providers/beagle/pbs/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.setup.sh (rev 0) +++ trunk/tests/providers/beagle/pbs/001-catsn.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Property changes on: trunk/tests/providers/beagle/pbs/001-catsn.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/providers/beagle/pbs/001-catsn.swift =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.swift (rev 0) +++ trunk/tests/providers/beagle/pbs/001-catsn.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +// string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +// string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Added: trunk/tests/providers/beagle/pbs/001-catsn.timeout =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.timeout (rev 0) +++ trunk/tests/providers/beagle/pbs/001-catsn.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +180 Added: trunk/tests/providers/beagle/pbs/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/beagle/pbs/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/data.txt =================================================================== --- trunk/tests/providers/beagle/pbs/data.txt (rev 0) +++ trunk/tests/providers/beagle/pbs/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Added: trunk/tests/providers/beagle/pbs/sites.template.xml =================================================================== --- trunk/tests/providers/beagle/pbs/sites.template.xml (rev 0) +++ trunk/tests/providers/beagle/pbs/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,18 @@ + + + + + + + + + + + + {wdir} + + + + Added: trunk/tests/providers/beagle/pbs/tc.template.data =================================================================== --- trunk/tests/providers/beagle/pbs/tc.template.data (rev 0) +++ trunk/tests/providers/beagle/pbs/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,7 @@ +beagle-pbs echo /bin/echo INSTALLED INTEL32::LINUX +beagle-pbs cat /bin/cat INSTALLED INTEL32::LINUX +beagle-pbs ls /bin/ls INSTALLED INTEL32::LINUX +beagle-pbs grep /bin/grep INSTALLED INTEL32::LINUX +beagle-pbs sort /bin/sort INSTALLED INTEL32::LINUX +beagle-pbs paste /bin/paste INSTALLED INTEL32::LINUX +beagle-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/fusion/001-catsn.check.sh =================================================================== --- trunk/tests/providers/local-pbs/fusion/001-catsn.check.sh 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/001-catsn.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,9 +0,0 @@ -#!/bin/bash - -set -x - -LINES=$( ls catsn*.out | wc -l ) -[[ ${?} == 0 ]] || exit 1 -[[ ${LINES} == 10 ]] || exit 1 - -exit 0 Deleted: trunk/tests/providers/fusion/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/local-pbs/fusion/001-catsn.setup.sh 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/001-catsn.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 - Deleted: trunk/tests/providers/fusion/001-catsn.swift =================================================================== --- trunk/tests/providers/local-pbs/fusion/001-catsn.swift 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/001-catsn.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,12 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/fusion/001-catsn.timeout =================================================================== --- trunk/tests/providers/local-pbs/fusion/001-catsn.timeout 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/001-catsn.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -180 Deleted: trunk/tests/providers/fusion/data.txt =================================================================== --- trunk/tests/providers/local-pbs/fusion/data.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/fusion/pbs/001-catsn.check.sh (from rev 5076, trunk/tests/providers/local-pbs/fusion/001-catsn.check.sh) =================================================================== --- trunk/tests/providers/fusion/pbs/001-catsn.check.sh (rev 0) +++ trunk/tests/providers/fusion/pbs/001-catsn.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,9 @@ +#!/bin/bash + +set -x + +LINES=$( ls catsn*.out | wc -l ) +[[ ${?} == 0 ]] || exit 1 +[[ ${LINES} == 10 ]] || exit 1 + +exit 0 Copied: trunk/tests/providers/fusion/pbs/001-catsn.setup.sh (from rev 5076, trunk/tests/providers/local-pbs/fusion/001-catsn.setup.sh) =================================================================== --- trunk/tests/providers/fusion/pbs/001-catsn.setup.sh (rev 0) +++ trunk/tests/providers/fusion/pbs/001-catsn.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 + Copied: trunk/tests/providers/fusion/pbs/001-catsn.swift (from rev 5076, trunk/tests/providers/local-pbs/fusion/001-catsn.swift) =================================================================== --- trunk/tests/providers/fusion/pbs/001-catsn.swift (rev 0) +++ trunk/tests/providers/fusion/pbs/001-catsn.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/fusion/pbs/001-catsn.timeout (from rev 5076, trunk/tests/providers/local-pbs/fusion/001-catsn.timeout) =================================================================== --- trunk/tests/providers/fusion/pbs/001-catsn.timeout (rev 0) +++ trunk/tests/providers/fusion/pbs/001-catsn.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +180 Copied: trunk/tests/providers/fusion/pbs/data.txt (from rev 5076, trunk/tests/providers/local-pbs/fusion/data.txt) =================================================================== --- trunk/tests/providers/fusion/pbs/data.txt (rev 0) +++ trunk/tests/providers/fusion/pbs/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/pbs/sites.template.xml (from rev 5076, trunk/tests/providers/local-pbs/fusion/sites.template.xml) =================================================================== --- trunk/tests/providers/fusion/pbs/sites.template.xml (rev 0) +++ trunk/tests/providers/fusion/pbs/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,9 @@ + + + + + 5 + shared + _WORK_ + + Copied: trunk/tests/providers/fusion/pbs/tc.template.data (from rev 5076, trunk/tests/providers/local-pbs/fusion/tc.template.data) =================================================================== --- trunk/tests/providers/fusion/pbs/tc.template.data (rev 0) +++ trunk/tests/providers/fusion/pbs/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,7 @@ +fusion-pbs echo /bin/echo INSTALLED INTEL32::LINUX +fusion-pbs cat /bin/cat INSTALLED INTEL32::LINUX +fusion-pbs ls /bin/ls INSTALLED INTEL32::LINUX +fusion-pbs grep /bin/grep INSTALLED INTEL32::LINUX +fusion-pbs sort /bin/sort INSTALLED INTEL32::LINUX +fusion-pbs paste /bin/paste INSTALLED INTEL32::LINUX +fusion-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/fusion/sites.template.xml =================================================================== --- trunk/tests/providers/local-pbs/fusion/sites.template.xml 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,9 +0,0 @@ - - - - - 5 - shared - _WORK_ - - Deleted: trunk/tests/providers/fusion/tc.template.data =================================================================== --- trunk/tests/providers/local-pbs/fusion/tc.template.data 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/fusion/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,7 +0,0 @@ -fusion-pbs echo /bin/echo INSTALLED INTEL32::LINUX -fusion-pbs cat /bin/cat INSTALLED INTEL32::LINUX -fusion-pbs ls /bin/ls INSTALLED INTEL32::LINUX -fusion-pbs grep /bin/grep INSTALLED INTEL32::LINUX -fusion-pbs sort /bin/sort INSTALLED INTEL32::LINUX -fusion-pbs paste /bin/paste INSTALLED INTEL32::LINUX -fusion-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/pads/001-catsn-pads-pbs.check.sh =================================================================== --- trunk/tests/providers/local-pbs/pads/001-catsn-pads-pbs.check.sh 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/001-catsn-pads-pbs.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Deleted: trunk/tests/providers/pads/001-catsn-pads-pbs.swift =================================================================== --- trunk/tests/providers/local-pbs/pads/001-catsn-pads-pbs.swift 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/001-catsn-pads-pbs.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/pads/001-catsn-pads-pbs.timeout =================================================================== --- trunk/tests/providers/local-pbs/pads/001-catsn-pads-pbs.timeout 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/001-catsn-pads-pbs.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -180 Deleted: trunk/tests/providers/pads/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0001.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0002.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0003.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0004.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0005.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0006.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0007.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0008.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0009.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/local-pbs/pads/catsn.0010.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/pads/data.txt =================================================================== --- trunk/tests/providers/local-pbs/pads/data.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh (from rev 5076, trunk/tests/providers/local-pbs/pads/001-catsn-pads-pbs.check.sh) =================================================================== --- trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh (rev 0) +++ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Copied: trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift (from rev 5076, trunk/tests/providers/local-pbs/pads/001-catsn-pads-pbs.swift) =================================================================== --- trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift (rev 0) +++ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout (from rev 5076, trunk/tests/providers/local-pbs/pads/001-catsn-pads-pbs.timeout) =================================================================== --- trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout (rev 0) +++ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +180 Copied: trunk/tests/providers/pads/pbs/catsn.0001.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0002.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0003.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0004.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0005.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0006.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0007.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0008.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0009.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0010.out.expected (from rev 5076, trunk/tests/providers/local-pbs/pads/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/data.txt (from rev 5076, trunk/tests/providers/local-pbs/pads/data.txt) =================================================================== --- trunk/tests/providers/pads/pbs/data.txt (rev 0) +++ trunk/tests/providers/pads/pbs/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/sites.template.xml (from rev 5076, trunk/tests/providers/local-pbs/pads/sites.template.xml) =================================================================== --- trunk/tests/providers/pads/pbs/sites.template.xml (rev 0) +++ trunk/tests/providers/pads/pbs/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,9 @@ + + + + + 0 + _QUEUE_ + _WORK_ + + Copied: trunk/tests/providers/pads/pbs/tc.template.data (from rev 5076, trunk/tests/providers/local-pbs/pads/tc.template.data) =================================================================== --- trunk/tests/providers/pads/pbs/tc.template.data (rev 0) +++ trunk/tests/providers/pads/pbs/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,8 @@ +pads-pbs echo /bin/echo INSTALLED INTEL32::LINUX +pads-pbs cat /bin/cat INSTALLED INTEL32::LINUX +pads-pbs ls /bin/ls INSTALLED INTEL32::LINUX +pads-pbs grep /bin/grep INSTALLED INTEL32::LINUX +pads-pbs sort /bin/sort INSTALLED INTEL32::LINUX +pads-pbs paste /bin/paste INSTALLED INTEL32::LINUX +pads-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX + Copied: trunk/tests/providers/pads/pbs/title.txt (from rev 5076, trunk/tests/providers/local-pbs/pads/title.txt) =================================================================== --- trunk/tests/providers/pads/pbs/title.txt (rev 0) +++ trunk/tests/providers/pads/pbs/title.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Pads PBS Configuration Test Deleted: trunk/tests/providers/pads/sites.template.xml =================================================================== --- trunk/tests/providers/local-pbs/pads/sites.template.xml 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,9 +0,0 @@ - - - - - 0 - _QUEUE_ - _WORK_ - - Deleted: trunk/tests/providers/pads/tc.template.data =================================================================== --- trunk/tests/providers/local-pbs/pads/tc.template.data 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,8 +0,0 @@ -pads-pbs echo /bin/echo INSTALLED INTEL32::LINUX -pads-pbs cat /bin/cat INSTALLED INTEL32::LINUX -pads-pbs ls /bin/ls INSTALLED INTEL32::LINUX -pads-pbs grep /bin/grep INSTALLED INTEL32::LINUX -pads-pbs sort /bin/sort INSTALLED INTEL32::LINUX -pads-pbs paste /bin/paste INSTALLED INTEL32::LINUX -pads-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX - Deleted: trunk/tests/providers/pads/title.txt =================================================================== --- trunk/tests/providers/local-pbs/pads/title.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/pads/title.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Pads PBS Configuration Test Deleted: trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.check.sh =================================================================== --- trunk/tests/providers/local-pbs/queenbee/001-catsn-queenbee-pbs.check.sh 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Deleted: trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.swift =================================================================== --- trunk/tests/providers/local-pbs/queenbee/001-catsn-queenbee-pbs.swift 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.timeout =================================================================== --- trunk/tests/providers/local-pbs/queenbee/001-catsn-queenbee-pbs.timeout 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/001-catsn-queenbee-pbs.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -180 Deleted: trunk/tests/providers/queenbee/README =================================================================== --- trunk/tests/providers/local-pbs/queenbee/README 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/README 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,2 +0,0 @@ -Queenbee uses an older version of bash which does not work with the nightly.sh by default -In order to run these tests, download and compile a newer version of bash from ftp.gnu.org/pub/bash Deleted: trunk/tests/providers/queenbee/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0001.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0002.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0003.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0004.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0005.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0006.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0007.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0008.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0009.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/local-pbs/queenbee/catsn.0010.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/queenbee/data.txt =================================================================== --- trunk/tests/providers/local-pbs/queenbee/data.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh (from rev 5076, trunk/tests/providers/local-pbs/queenbee/001-catsn-queenbee-pbs.check.sh) =================================================================== --- trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh (rev 0) +++ trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Copied: trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift (from rev 5076, trunk/tests/providers/local-pbs/queenbee/001-catsn-queenbee-pbs.swift) =================================================================== --- trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift (rev 0) +++ trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout (from rev 5076, trunk/tests/providers/local-pbs/queenbee/001-catsn-queenbee-pbs.timeout) =================================================================== --- trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout (rev 0) +++ trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +180 Copied: trunk/tests/providers/queenbee/pbs/README (from rev 5076, trunk/tests/providers/local-pbs/queenbee/README) =================================================================== --- trunk/tests/providers/queenbee/pbs/README (rev 0) +++ trunk/tests/providers/queenbee/pbs/README 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,2 @@ +Queenbee uses an older version of bash which does not work with the nightly.sh by default +In order to run these tests, download and compile a newer version of bash from ftp.gnu.org/pub/bash Copied: trunk/tests/providers/queenbee/pbs/catsn.0001.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0002.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0003.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0004.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0005.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0006.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0007.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0008.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0009.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/catsn.0010.out.expected (from rev 5076, trunk/tests/providers/local-pbs/queenbee/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/queenbee/pbs/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/data.txt (from rev 5076, trunk/tests/providers/local-pbs/queenbee/data.txt) =================================================================== --- trunk/tests/providers/queenbee/pbs/data.txt (rev 0) +++ trunk/tests/providers/queenbee/pbs/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/queenbee/pbs/sites.template.xml (from rev 5076, trunk/tests/providers/local-pbs/queenbee/sites.template.xml) =================================================================== --- trunk/tests/providers/queenbee/pbs/sites.template.xml (rev 0) +++ trunk/tests/providers/queenbee/pbs/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,8 @@ + + + + + 0 + _WORK_ + + Copied: trunk/tests/providers/queenbee/pbs/tc.template.data (from rev 5076, trunk/tests/providers/local-pbs/queenbee/tc.template.data) =================================================================== --- trunk/tests/providers/queenbee/pbs/tc.template.data (rev 0) +++ trunk/tests/providers/queenbee/pbs/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,7 @@ +queenbee-pbs echo /bin/echo INSTALLED INTEL32::LINUX +queenbee-pbs cat /bin/cat INSTALLED INTEL32::LINUX +queenbee-pbs ls /bin/ls INSTALLED INTEL32::LINUX +queenbee-pbs grep /bin/grep INSTALLED INTEL32::LINUX +queenbee-pbs sort /bin/sort INSTALLED INTEL32::LINUX +queenbee-pbs paste /bin/paste INSTALLED INTEL32::LINUX +queenbee-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: trunk/tests/providers/queenbee/pbs/title.txt (from rev 5076, trunk/tests/providers/local-pbs/queenbee/title.txt) =================================================================== --- trunk/tests/providers/queenbee/pbs/title.txt (rev 0) +++ trunk/tests/providers/queenbee/pbs/title.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +QueenBee PBS Configuration Test Deleted: trunk/tests/providers/queenbee/sites.template.xml =================================================================== --- trunk/tests/providers/local-pbs/queenbee/sites.template.xml 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,8 +0,0 @@ - - - - - 0 - _WORK_ - - Deleted: trunk/tests/providers/queenbee/tc.template.data =================================================================== --- trunk/tests/providers/local-pbs/queenbee/tc.template.data 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,7 +0,0 @@ -queenbee-pbs echo /bin/echo INSTALLED INTEL32::LINUX -queenbee-pbs cat /bin/cat INSTALLED INTEL32::LINUX -queenbee-pbs ls /bin/ls INSTALLED INTEL32::LINUX -queenbee-pbs grep /bin/grep INSTALLED INTEL32::LINUX -queenbee-pbs sort /bin/sort INSTALLED INTEL32::LINUX -queenbee-pbs paste /bin/paste INSTALLED INTEL32::LINUX -queenbee-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/queenbee/title.txt =================================================================== --- trunk/tests/providers/local-pbs/queenbee/title.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/queenbee/title.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -QueenBee PBS Configuration Test Deleted: trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.check.sh 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,12 +0,0 @@ -#!/bin/bash - -set -x - -for count in `seq --format "%04.f" 1 1 10` -do - [ -f catsn.$count.out ] || exit 1 - CONTENTS1=$( cat catsn.$count.out.expected ) - CONTENTS2=$( cat catsn.$count.out ) - [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 -done -exit 0 Deleted: trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.setup.sh 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Deleted: trunk/tests/providers/surveyor/001-catsn-surveyor.swift =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.swift 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/surveyor/001-catsn-surveyor.timeout =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.timeout 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -1000 Deleted: trunk/tests/providers/surveyor/README =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/README 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/README 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,3 +0,0 @@ -Be sure to set PROJECT and QUEUE. These settings worked for me, but unsure if they are universal -export PROJECT=HTCScienceApps -export QUEUE=default Deleted: trunk/tests/providers/surveyor/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0001.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0002.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0003.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0004.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0005.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0006.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0007.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0008.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0009.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/catsn.0010.out.expected 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.check.sh (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.check.sh) =================================================================== --- trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.check.sh (rev 0) +++ trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.check.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,12 @@ +#!/bin/bash + +set -x + +for count in `seq --format "%04.f" 1 1 10` +do + [ -f catsn.$count.out ] || exit 1 + CONTENTS1=$( cat catsn.$count.out.expected ) + CONTENTS2=$( cat catsn.$count.out ) + [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 +done +exit 0 Copied: trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.setup.sh (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.setup.sh) =================================================================== --- trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.setup.sh (rev 0) +++ trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Copied: trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.swift (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.swift) =================================================================== --- trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.swift (rev 0) +++ trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.swift 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.timeout (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.timeout) =================================================================== --- trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.timeout (rev 0) +++ trunk/tests/providers/surveyor/cobalt/001-catsn-surveyor.timeout 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +1000 Copied: trunk/tests/providers/surveyor/cobalt/README (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/README) =================================================================== --- trunk/tests/providers/surveyor/cobalt/README (rev 0) +++ trunk/tests/providers/surveyor/cobalt/README 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,3 @@ +Be sure to set PROJECT and QUEUE. These settings worked for me, but unsure if they are universal +export PROJECT=HTCScienceApps +export QUEUE=default Copied: trunk/tests/providers/surveyor/cobalt/catsn.0001.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0002.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0003.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0004.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0005.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0006.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0007.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0008.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0009.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/catsn.0010.out.expected (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/surveyor/cobalt/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/surveyor/cobalt/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/data.txt (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/data.txt) =================================================================== --- trunk/tests/providers/surveyor/cobalt/data.txt (rev 0) +++ trunk/tests/providers/surveyor/cobalt/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/cobalt/sites.template.xml (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/sites.template.xml) =================================================================== --- trunk/tests/providers/surveyor/cobalt/sites.template.xml (rev 0) +++ trunk/tests/providers/surveyor/cobalt/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,22 @@ + + + + + + _HOST_ + _PROJECT_ + _QUEUE_ + zeptoos + true + 21 + 10000 + 1 + DEBUG + 1 + 900 + 64 + 64 + _WORK_ + + + Copied: trunk/tests/providers/surveyor/cobalt/tc.template.data (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/tc.template.data) =================================================================== --- trunk/tests/providers/surveyor/cobalt/tc.template.data (rev 0) +++ trunk/tests/providers/surveyor/cobalt/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1,7 @@ +surveyor echo /bin/echo INSTALLED INTEL32::LINUX +surveyor cat /bin/cat INSTALLED INTEL32::LINUX +surveyor ls /bin/ls INSTALLED INTEL32::LINUX +surveyor grep /bin/grep INSTALLED INTEL32::LINUX +surveyor sort /bin/sort INSTALLED INTEL32::LINUX +surveyor paste /bin/paste INSTALLED INTEL32::LINUX +surveyor wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: trunk/tests/providers/surveyor/cobalt/title.txt (from rev 5076, trunk/tests/providers/local-cobalt/surveyor/title.txt) =================================================================== --- trunk/tests/providers/surveyor/cobalt/title.txt (rev 0) +++ trunk/tests/providers/surveyor/cobalt/title.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -0,0 +1 @@ +Surveyor Site Configuration Test Deleted: trunk/tests/providers/surveyor/data.txt =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/data.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/data.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/surveyor/sites.template.xml =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/sites.template.xml 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,22 +0,0 @@ - - - - - - _HOST_ - _PROJECT_ - _QUEUE_ - zeptoos - true - 21 - 10000 - 1 - DEBUG - 1 - 900 - 64 - 64 - _WORK_ - - - Deleted: trunk/tests/providers/surveyor/tc.template.data =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/tc.template.data 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) @@ -1,7 +0,0 @@ -surveyor echo /bin/echo INSTALLED INTEL32::LINUX -surveyor cat /bin/cat INSTALLED INTEL32::LINUX -surveyor ls /bin/ls INSTALLED INTEL32::LINUX -surveyor grep /bin/grep INSTALLED INTEL32::LINUX -surveyor sort /bin/sort INSTALLED INTEL32::LINUX -surveyor paste /bin/paste INSTALLED INTEL32::LINUX -surveyor wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/surveyor/title.txt =================================================================== --- trunk/tests/providers/local-cobalt/surveyor/title.txt 2011-09-06 17:04:39 UTC (rev 5076) +++ trunk/tests/providers/surveyor/title.txt 2011-09-06 18:03:02 UTC (rev 5077) @@ -1 +0,0 @@ -Surveyor Site Configuration Test From davidk at ci.uchicago.edu Tue Sep 6 14:12:15 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 6 Sep 2011 14:12:15 -0500 (CDT) Subject: [Swift-commit] r5078 - in trunk/tests/providers: . beagle fusion fusion/coasters pads/coasters pads/pbs surveyor Message-ID: <20110906191215.031E39CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-06 14:12:14 -0500 (Tue, 06 Sep 2011) New Revision: 5078 Added: trunk/tests/providers/beagle/coasters/ trunk/tests/providers/fusion/coasters/catsn.0001.out.expected trunk/tests/providers/fusion/coasters/catsn.0002.out.expected trunk/tests/providers/fusion/coasters/catsn.0003.out.expected trunk/tests/providers/fusion/coasters/catsn.0004.out.expected trunk/tests/providers/fusion/coasters/catsn.0005.out.expected trunk/tests/providers/fusion/coasters/catsn.0006.out.expected trunk/tests/providers/fusion/coasters/catsn.0007.out.expected trunk/tests/providers/fusion/coasters/catsn.0008.out.expected trunk/tests/providers/fusion/coasters/catsn.0009.out.expected trunk/tests/providers/fusion/coasters/catsn.0010.out.expected trunk/tests/providers/fusion/coasters/catsn.setup.sh trunk/tests/providers/fusion/coasters/catsn.swift trunk/tests/providers/fusion/coasters/catsn.timeout trunk/tests/providers/fusion/coasters/data.txt trunk/tests/providers/fusion/coasters/sites.template.xml trunk/tests/providers/fusion/coasters/tc.template.data trunk/tests/providers/pads/coasters/README trunk/tests/providers/pads/coasters/catsn.0001.out.expected trunk/tests/providers/pads/coasters/catsn.0002.out.expected trunk/tests/providers/pads/coasters/catsn.0003.out.expected trunk/tests/providers/pads/coasters/catsn.0004.out.expected trunk/tests/providers/pads/coasters/catsn.0005.out.expected trunk/tests/providers/pads/coasters/catsn.0006.out.expected trunk/tests/providers/pads/coasters/catsn.0007.out.expected trunk/tests/providers/pads/coasters/catsn.0008.out.expected trunk/tests/providers/pads/coasters/catsn.0009.out.expected trunk/tests/providers/pads/coasters/catsn.0010.out.expected trunk/tests/providers/pads/coasters/catsn.setup.sh trunk/tests/providers/pads/coasters/catsn.swift trunk/tests/providers/pads/coasters/catsn.timeout trunk/tests/providers/pads/coasters/data.txt trunk/tests/providers/pads/coasters/sites.template.xml trunk/tests/providers/pads/coasters/tc.template.data trunk/tests/providers/pads/pbs/catsn.0001.out.expected trunk/tests/providers/pads/pbs/catsn.0002.out.expected trunk/tests/providers/pads/pbs/catsn.0003.out.expected trunk/tests/providers/pads/pbs/catsn.0004.out.expected trunk/tests/providers/pads/pbs/catsn.0005.out.expected trunk/tests/providers/pads/pbs/catsn.0006.out.expected trunk/tests/providers/pads/pbs/catsn.0007.out.expected trunk/tests/providers/pads/pbs/catsn.0008.out.expected trunk/tests/providers/pads/pbs/catsn.0009.out.expected trunk/tests/providers/pads/pbs/catsn.0010.out.expected trunk/tests/providers/pads/pbs/catsn.setup.sh trunk/tests/providers/pads/pbs/catsn.swift trunk/tests/providers/pads/pbs/catsn.timeout trunk/tests/providers/pads/pbs/data.txt trunk/tests/providers/pads/pbs/sites.template.xml trunk/tests/providers/pads/pbs/tc.template.data trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh trunk/tests/providers/surveyor/001-catsn-surveyor.swift trunk/tests/providers/surveyor/001-catsn-surveyor.timeout trunk/tests/providers/surveyor/README trunk/tests/providers/surveyor/catsn.0001.out.expected trunk/tests/providers/surveyor/catsn.0002.out.expected trunk/tests/providers/surveyor/catsn.0003.out.expected trunk/tests/providers/surveyor/catsn.0004.out.expected trunk/tests/providers/surveyor/catsn.0005.out.expected trunk/tests/providers/surveyor/catsn.0006.out.expected trunk/tests/providers/surveyor/catsn.0007.out.expected trunk/tests/providers/surveyor/catsn.0008.out.expected trunk/tests/providers/surveyor/catsn.0009.out.expected trunk/tests/providers/surveyor/catsn.0010.out.expected trunk/tests/providers/surveyor/data.txt trunk/tests/providers/surveyor/sites.template.xml trunk/tests/providers/surveyor/tc.template.data trunk/tests/providers/surveyor/title.txt Removed: trunk/tests/providers/beagle/001-catsn.check.sh trunk/tests/providers/beagle/001-catsn.setup.sh trunk/tests/providers/beagle/001-catsn.swift trunk/tests/providers/beagle/001-catsn.timeout trunk/tests/providers/beagle/catsn.0001.out.expected trunk/tests/providers/beagle/catsn.0002.out.expected trunk/tests/providers/beagle/catsn.0003.out.expected trunk/tests/providers/beagle/catsn.0004.out.expected trunk/tests/providers/beagle/catsn.0005.out.expected trunk/tests/providers/beagle/catsn.0006.out.expected trunk/tests/providers/beagle/catsn.0007.out.expected trunk/tests/providers/beagle/catsn.0008.out.expected trunk/tests/providers/beagle/catsn.0009.out.expected trunk/tests/providers/beagle/catsn.0010.out.expected trunk/tests/providers/beagle/data.txt trunk/tests/providers/beagle/sites.template.xml trunk/tests/providers/beagle/tc.template.data trunk/tests/providers/fusion/coasters/001-catsn.check.sh trunk/tests/providers/fusion/coasters/001-catsn.setup.sh trunk/tests/providers/fusion/coasters/001-catsn.swift trunk/tests/providers/fusion/coasters/001-catsn.timeout trunk/tests/providers/fusion/coasters/data.txt trunk/tests/providers/fusion/coasters/sites.template.xml trunk/tests/providers/fusion/coasters/tc.template.data trunk/tests/providers/fusion/pbs/ trunk/tests/providers/local-cobalt/ trunk/tests/providers/local-pbs-coasters/ trunk/tests/providers/local-pbs/ trunk/tests/providers/pads/coasters/001-catsn.check.sh trunk/tests/providers/pads/coasters/001-catsn.setup.sh trunk/tests/providers/pads/coasters/001-catsn.swift trunk/tests/providers/pads/coasters/001-catsn.timeout trunk/tests/providers/pads/coasters/data.txt trunk/tests/providers/pads/coasters/sites.template.xml trunk/tests/providers/pads/coasters/tc.template.data trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout trunk/tests/providers/pads/pbs/catsn.0001.out.expected trunk/tests/providers/pads/pbs/catsn.0002.out.expected trunk/tests/providers/pads/pbs/catsn.0003.out.expected trunk/tests/providers/pads/pbs/catsn.0004.out.expected trunk/tests/providers/pads/pbs/catsn.0005.out.expected trunk/tests/providers/pads/pbs/catsn.0006.out.expected trunk/tests/providers/pads/pbs/catsn.0007.out.expected trunk/tests/providers/pads/pbs/catsn.0008.out.expected trunk/tests/providers/pads/pbs/catsn.0009.out.expected trunk/tests/providers/pads/pbs/catsn.0010.out.expected trunk/tests/providers/pads/pbs/data.txt trunk/tests/providers/pads/pbs/sites.template.xml trunk/tests/providers/pads/pbs/tc.template.data trunk/tests/providers/pads/pbs/title.txt trunk/tests/providers/surveyor/cobalt/ Log: Updates to provider tests Deleted: trunk/tests/providers/beagle/001-catsn.check.sh =================================================================== --- trunk/tests/providers/beagle/001-catsn.check.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/001-catsn.check.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,9 +0,0 @@ -#!/bin/bash - -# Pseudo-code for now - -# for f in *.out.expected -# do -# assert *.out exists -# assert *.out.expected == *.out -# done Deleted: trunk/tests/providers/beagle/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/beagle/001-catsn.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/001-catsn.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Deleted: trunk/tests/providers/beagle/001-catsn.swift =================================================================== --- trunk/tests/providers/beagle/001-catsn.swift 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/001-catsn.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -// string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -// string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/beagle/001-catsn.timeout =================================================================== --- trunk/tests/providers/beagle/001-catsn.timeout 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/001-catsn.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -180 Deleted: trunk/tests/providers/beagle/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0001.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0002.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0003.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0004.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0005.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0006.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0007.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0008.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0009.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/beagle/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/catsn.0010.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/data.txt =================================================================== --- trunk/tests/providers/beagle/data.txt 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Deleted: trunk/tests/providers/beagle/sites.template.xml =================================================================== --- trunk/tests/providers/beagle/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,18 +0,0 @@ - - - - - - - - - - - - {wdir} - - - - Deleted: trunk/tests/providers/beagle/tc.template.data =================================================================== --- trunk/tests/providers/beagle/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/beagle/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,7 +0,0 @@ -beagle-pbs echo /bin/echo INSTALLED INTEL32::LINUX -beagle-pbs cat /bin/cat INSTALLED INTEL32::LINUX -beagle-pbs ls /bin/ls INSTALLED INTEL32::LINUX -beagle-pbs grep /bin/grep INSTALLED INTEL32::LINUX -beagle-pbs sort /bin/sort INSTALLED INTEL32::LINUX -beagle-pbs paste /bin/paste INSTALLED INTEL32::LINUX -beagle-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/fusion/coasters/001-catsn.check.sh =================================================================== --- trunk/tests/providers/fusion/coasters/001-catsn.check.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/001-catsn.check.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x - -FILES=( catsn.*.out ) -[[ ${#FILES[@]} == 10 ]] || exit 1 - -for FILE in ${FILES} -do - grep -q "Hello world" ${FILE} || exit 1 -done - -exit 0 Deleted: trunk/tests/providers/fusion/coasters/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/fusion/coasters/001-catsn.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/001-catsn.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,7 +0,0 @@ -#!/bin/bash - -set -x - -cp -v $GROUP/data.txt . || exit 1 - -exit 0 Deleted: trunk/tests/providers/fusion/coasters/001-catsn.swift =================================================================== --- trunk/tests/providers/fusion/coasters/001-catsn.swift 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/001-catsn.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,12 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/fusion/coasters/001-catsn.timeout =================================================================== --- trunk/tests/providers/fusion/coasters/001-catsn.timeout 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/001-catsn.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,2 +0,0 @@ -7200 - Copied: trunk/tests/providers/fusion/coasters/catsn.0001.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0001.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0002.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0002.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0003.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0003.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0004.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0004.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0005.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0005.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0006.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0006.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0007.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0007.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0008.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0008.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0009.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0009.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.0010.out.expected (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.0010.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/fusion/coasters/catsn.setup.sh (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.setup.sh) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.setup.sh (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,6 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +ipaddr=$( ifconfig | grep inet | head -1 | cut -d ':' -f 2 | awk '{print $1}' ) +export GLOBUS_HOSTNAME=$ipaddr + Copied: trunk/tests/providers/fusion/coasters/catsn.swift (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.swift) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.swift (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/fusion/coasters/catsn.timeout (from rev 5069, branches/release-0.93/tests/providers/fusion/catsn.timeout) =================================================================== --- trunk/tests/providers/fusion/coasters/catsn.timeout (rev 0) +++ trunk/tests/providers/fusion/coasters/catsn.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +30 Deleted: trunk/tests/providers/fusion/coasters/data.txt =================================================================== --- trunk/tests/providers/fusion/coasters/data.txt 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/fusion/coasters/data.txt (from rev 5069, branches/release-0.93/tests/providers/fusion/data.txt) =================================================================== --- trunk/tests/providers/fusion/coasters/data.txt (rev 0) +++ trunk/tests/providers/fusion/coasters/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/fusion/coasters/sites.template.xml =================================================================== --- trunk/tests/providers/fusion/coasters/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,17 +0,0 @@ - - - - - 1 - 7200 - 1 - 1 - 1 - 1 - _QUEUE_ - 5.99 - 10000 - _PROJECT_ - _WORK_ - - Copied: trunk/tests/providers/fusion/coasters/sites.template.xml (from rev 5069, branches/release-0.93/tests/providers/fusion/sites.template.xml) =================================================================== --- trunk/tests/providers/fusion/coasters/sites.template.xml (rev 0) +++ trunk/tests/providers/fusion/coasters/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,16 @@ + + + + + 750 + 1 + 1 + 1 + 2 + shared + 5.99 + 10000 + _WORK_ + + + Deleted: trunk/tests/providers/fusion/coasters/tc.template.data =================================================================== --- trunk/tests/providers/fusion/coasters/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/fusion/coasters/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,7 +0,0 @@ -fusion echo /bin/echo INSTALLED INTEL32::LINUX -fusion cat /bin/cat INSTALLED INTEL32::LINUX -fusion ls /bin/ls INSTALLED INTEL32::LINUX -fusion grep /bin/grep INSTALLED INTEL32::LINUX -fusion sort /bin/sort INSTALLED INTEL32::LINUX -fusion paste /bin/paste INSTALLED INTEL32::LINUX -fusion wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: trunk/tests/providers/fusion/coasters/tc.template.data (from rev 5069, branches/release-0.93/tests/providers/fusion/tc.template.data) =================================================================== --- trunk/tests/providers/fusion/coasters/tc.template.data (rev 0) +++ trunk/tests/providers/fusion/coasters/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,7 @@ +fusion echo /bin/echo INSTALLED INTEL32::LINUX +fusion cat /bin/cat INSTALLED INTEL32::LINUX +fusion ls /bin/ls INSTALLED INTEL32::LINUX +fusion grep /bin/grep INSTALLED INTEL32::LINUX +fusion sort /bin/sort INSTALLED INTEL32::LINUX +fusion paste /bin/paste INSTALLED INTEL32::LINUX +fusion wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: trunk/tests/providers/pads/coasters/001-catsn.check.sh =================================================================== --- trunk/tests/providers/pads/coasters/001-catsn.check.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/001-catsn.check.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,12 +0,0 @@ -#!/bin/bash - -set -x - -for count in `seq --format "%04.f" 1 1 10` -do - [ -f catsn.$count.out ] || exit 1 - CONTENTS1=$( cat catsn.$count.out.expected ) - CONTENTS2=$( cat catsn.$count.out ) - [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 -done -exit 0 Deleted: trunk/tests/providers/pads/coasters/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/pads/coasters/001-catsn.setup.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/001-catsn.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Deleted: trunk/tests/providers/pads/coasters/001-catsn.swift =================================================================== --- trunk/tests/providers/pads/coasters/001-catsn.swift 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/001-catsn.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/pads/coasters/001-catsn.timeout =================================================================== --- trunk/tests/providers/pads/coasters/001-catsn.timeout 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/001-catsn.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,2 +0,0 @@ -7200 - Copied: trunk/tests/providers/pads/coasters/README (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/README) =================================================================== --- trunk/tests/providers/pads/coasters/README (rev 0) +++ trunk/tests/providers/pads/coasters/README 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,2 @@ +Provider test for PADS with coasters and pbs +Make sure you have your default project set up (run 'projects' or 'projects -h' for more info) Copied: trunk/tests/providers/pads/coasters/catsn.0001.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0001.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0002.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0002.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0003.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0003.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0004.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0004.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0005.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0005.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0006.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0006.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0007.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0007.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0008.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0008.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0009.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0009.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.0010.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.0010.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/coasters/catsn.setup.sh (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.setup.sh) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.setup.sh (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 Copied: trunk/tests/providers/pads/coasters/catsn.swift (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.swift) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.swift (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/pads/coasters/catsn.timeout (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/catsn.timeout) =================================================================== --- trunk/tests/providers/pads/coasters/catsn.timeout (rev 0) +++ trunk/tests/providers/pads/coasters/catsn.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,2 @@ +7200 + Deleted: trunk/tests/providers/pads/coasters/data.txt =================================================================== --- trunk/tests/providers/pads/coasters/data.txt 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/coasters/data.txt (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/data.txt) =================================================================== --- trunk/tests/providers/pads/coasters/data.txt (rev 0) +++ trunk/tests/providers/pads/coasters/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/coasters/sites.template.xml =================================================================== --- trunk/tests/providers/pads/coasters/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,17 +0,0 @@ - - - - - 1 - 7200 - 1 - 1 - 1 - 1 - _QUEUE_ - 5.99 - 10000 - _PROJECT_ - _WORK_ - - Copied: trunk/tests/providers/pads/coasters/sites.template.xml (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/sites.template.xml) =================================================================== --- trunk/tests/providers/pads/coasters/sites.template.xml (rev 0) +++ trunk/tests/providers/pads/coasters/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,16 @@ + + + + + 2 + 300 + 1 + 1 + 1 + 1 + fast + 5.99 + 10000 + _WORK_ + + Deleted: trunk/tests/providers/pads/coasters/tc.template.data =================================================================== --- trunk/tests/providers/pads/coasters/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/coasters/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,8 +0,0 @@ -local-pbs-coasters echo /bin/echo INSTALLED INTEL32::LINUX null -local-pbs-coasters cat /bin/cat INSTALLED INTEL32::LINUX null -local-pbs-coasters ls /bin/ls INSTALLED INTEL32::LINUX null -local-pbs-coasters grep /bin/grep INSTALLED INTEL32::LINUX null -local-pbs-coasters sort /bin/sort INSTALLED INTEL32::LINUX null -local-pbs-coasters paste /bin/paste INSTALLED INTEL32::LINUX null -local-pbs-coasters wc /usr/bin/wc INSTALLED INTEL32::LINUX null - Copied: trunk/tests/providers/pads/coasters/tc.template.data (from rev 5069, branches/release-0.93/tests/providers/PADS/coasters/tc.template.data) =================================================================== --- trunk/tests/providers/pads/coasters/tc.template.data (rev 0) +++ trunk/tests/providers/pads/coasters/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,7 @@ +PADS-coasters echo /bin/echo INSTALLED INTEL32::LINUX null +PADS-coasters cat /bin/cat INSTALLED INTEL32::LINUX null +PADS-coasters ls /bin/ls INSTALLED INTEL32::LINUX null +PADS-coasters grep /bin/grep INSTALLED INTEL32::LINUX null +PADS-coasters sort /bin/sort INSTALLED INTEL32::LINUX null +PADS-coasters paste /bin/paste INSTALLED INTEL32::LINUX null +PADS-coasters wc /usr/bin/wc INSTALLED INTEL32::LINUX null Deleted: trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh =================================================================== --- trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.check.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Deleted: trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift =================================================================== --- trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout =================================================================== --- trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/001-catsn-pads-pbs.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -180 Deleted: trunk/tests/providers/pads/pbs/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0001.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0002.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0003.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0004.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0005.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0006.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0007.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0008.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0009.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/catsn.0010.out.expected (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/pads/pbs/catsn.setup.sh (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.setup.sh) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.setup.sh (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 Copied: trunk/tests/providers/pads/pbs/catsn.swift (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.swift) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.swift (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/pads/pbs/catsn.timeout (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/catsn.timeout) =================================================================== --- trunk/tests/providers/pads/pbs/catsn.timeout (rev 0) +++ trunk/tests/providers/pads/pbs/catsn.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,2 @@ +7200 + Deleted: trunk/tests/providers/pads/pbs/data.txt =================================================================== --- trunk/tests/providers/pads/pbs/data.txt 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Hello world Copied: trunk/tests/providers/pads/pbs/data.txt (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/data.txt) =================================================================== --- trunk/tests/providers/pads/pbs/data.txt (rev 0) +++ trunk/tests/providers/pads/pbs/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Deleted: trunk/tests/providers/pads/pbs/sites.template.xml =================================================================== --- trunk/tests/providers/pads/pbs/sites.template.xml 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,9 +0,0 @@ - - - - - 0 - _QUEUE_ - _WORK_ - - Copied: trunk/tests/providers/pads/pbs/sites.template.xml (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/sites.template.xml) =================================================================== --- trunk/tests/providers/pads/pbs/sites.template.xml (rev 0) +++ trunk/tests/providers/pads/pbs/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,16 @@ + + + + + 2 + 300 + 1 + 1 + 1 + 1 + fast + 5.99 + 10000 + _WORK_ + + Deleted: trunk/tests/providers/pads/pbs/tc.template.data =================================================================== --- trunk/tests/providers/pads/pbs/tc.template.data 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -1,8 +0,0 @@ -pads-pbs echo /bin/echo INSTALLED INTEL32::LINUX -pads-pbs cat /bin/cat INSTALLED INTEL32::LINUX -pads-pbs ls /bin/ls INSTALLED INTEL32::LINUX -pads-pbs grep /bin/grep INSTALLED INTEL32::LINUX -pads-pbs sort /bin/sort INSTALLED INTEL32::LINUX -pads-pbs paste /bin/paste INSTALLED INTEL32::LINUX -pads-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX - Copied: trunk/tests/providers/pads/pbs/tc.template.data (from rev 5069, branches/release-0.93/tests/providers/PADS/pbs/tc.template.data) =================================================================== --- trunk/tests/providers/pads/pbs/tc.template.data (rev 0) +++ trunk/tests/providers/pads/pbs/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,7 @@ +PADS-pbs echo /bin/echo INSTALLED INTEL32::LINUX null +PADS-pbs cat /bin/cat INSTALLED INTEL32::LINUX null +PADS-pbs ls /bin/ls INSTALLED INTEL32::LINUX null +PADS-pbs grep /bin/grep INSTALLED INTEL32::LINUX null +PADS-pbs sort /bin/sort INSTALLED INTEL32::LINUX null +PADS-pbs paste /bin/paste INSTALLED INTEL32::LINUX null +PADS-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX null Deleted: trunk/tests/providers/pads/pbs/title.txt =================================================================== --- trunk/tests/providers/pads/pbs/title.txt 2011-09-06 18:03:02 UTC (rev 5077) +++ trunk/tests/providers/pads/pbs/title.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -1 +0,0 @@ -Pads PBS Configuration Test Copied: trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.check.sh) =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh (rev 0) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,12 @@ +#!/bin/bash + +set -x + +for count in `seq --format "%04.f" 1 1 10` +do + [ -f catsn.$count.out ] || exit 1 + CONTENTS1=$( cat catsn.$count.out.expected ) + CONTENTS2=$( cat catsn.$count.out ) + [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 +done +exit 0 Copied: trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.setup.sh) =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh (rev 0) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Copied: trunk/tests/providers/surveyor/001-catsn-surveyor.swift (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.swift) =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.swift (rev 0) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.swift 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: trunk/tests/providers/surveyor/001-catsn-surveyor.timeout (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/001-catsn-surveyor.timeout) =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.timeout (rev 0) +++ trunk/tests/providers/surveyor/001-catsn-surveyor.timeout 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +1000 Copied: trunk/tests/providers/surveyor/README (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/README) =================================================================== --- trunk/tests/providers/surveyor/README (rev 0) +++ trunk/tests/providers/surveyor/README 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,3 @@ +Be sure to set PROJECT and QUEUE. These settings worked for me, but unsure if they are universal +export PROJECT=HTCScienceApps +export QUEUE=default Copied: trunk/tests/providers/surveyor/catsn.0001.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0001.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0001.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0001.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0002.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0002.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0002.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0002.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0003.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0003.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0003.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0003.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0004.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0004.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0004.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0004.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0005.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0005.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0005.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0005.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0006.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0006.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0006.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0006.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0007.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0007.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0007.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0007.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0008.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0008.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0008.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0008.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0009.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0009.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0009.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0009.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/catsn.0010.out.expected (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/catsn.0010.out.expected) =================================================================== --- trunk/tests/providers/surveyor/catsn.0010.out.expected (rev 0) +++ trunk/tests/providers/surveyor/catsn.0010.out.expected 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/data.txt (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/data.txt) =================================================================== --- trunk/tests/providers/surveyor/data.txt (rev 0) +++ trunk/tests/providers/surveyor/data.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Hello world Copied: trunk/tests/providers/surveyor/sites.template.xml (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/sites.template.xml) =================================================================== --- trunk/tests/providers/surveyor/sites.template.xml (rev 0) +++ trunk/tests/providers/surveyor/sites.template.xml 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,22 @@ + + + + + + _HOST_ + _PROJECT_ + _QUEUE_ + zeptoos + true + 21 + 10000 + 1 + DEBUG + 1 + 900 + 64 + 64 + _WORK_ + + + Copied: trunk/tests/providers/surveyor/tc.template.data (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/tc.template.data) =================================================================== --- trunk/tests/providers/surveyor/tc.template.data (rev 0) +++ trunk/tests/providers/surveyor/tc.template.data 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1,7 @@ +surveyor echo /bin/echo INSTALLED INTEL32::LINUX +surveyor cat /bin/cat INSTALLED INTEL32::LINUX +surveyor ls /bin/ls INSTALLED INTEL32::LINUX +surveyor grep /bin/grep INSTALLED INTEL32::LINUX +surveyor sort /bin/sort INSTALLED INTEL32::LINUX +surveyor paste /bin/paste INSTALLED INTEL32::LINUX +surveyor wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: trunk/tests/providers/surveyor/title.txt (from rev 5069, branches/release-0.93/tests/providers/local-cobalt/surveyor/title.txt) =================================================================== --- trunk/tests/providers/surveyor/title.txt (rev 0) +++ trunk/tests/providers/surveyor/title.txt 2011-09-06 19:12:14 UTC (rev 5078) @@ -0,0 +1 @@ +Surveyor Site Configuration Test From davidk at ci.uchicago.edu Wed Sep 7 11:45:33 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 7 Sep 2011 11:45:33 -0500 (CDT) Subject: [Swift-commit] r5080 - branches/release-0.93/docs/siteguide Message-ID: <20110907164533.C813D9CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-07 11:45:33 -0500 (Wed, 07 Sep 2011) New Revision: 5080 Modified: branches/release-0.93/docs/siteguide/intrepid Log: updated path to template Modified: branches/release-0.93/docs/siteguide/intrepid =================================================================== --- branches/release-0.93/docs/siteguide/intrepid 2011-09-07 16:32:23 UTC (rev 5079) +++ branches/release-0.93/docs/siteguide/intrepid 2011-09-07 16:45:33 UTC (rev 5080) @@ -125,7 +125,7 @@ TODO: Update the rest below here ----- -include::../../tests/providers/intrepid/sites.template.xml[] +include::../../tests/providers/local-cobalt/intrepid/sites.template.xml[] ----- The values to note here are the ones that are listed between underscores. In the example above, they are \_QUEUE_, and \_WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. @@ -135,7 +135,7 @@ Below is the tc.data file used by Swift's test suite for running on PADS. ----- -include::../../tests/providers/intrepid/tc.template.data[] +include::../../tests/providers/local-cobalt/intrepid/tc.template.data[] ------ Copy these commands and save it as tc.data. From davidk at ci.uchicago.edu Wed Sep 7 12:40:07 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 7 Sep 2011 12:40:07 -0500 (CDT) Subject: [Swift-commit] r5081 - in trunk: docs/siteguide tests/groups Message-ID: <20110907174007.94D9A9CD09@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-07 12:40:07 -0500 (Wed, 07 Sep 2011) New Revision: 5081 Added: trunk/tests/groups/group-beagle.sh trunk/tests/groups/group-crow.sh trunk/tests/groups/group-fusion.sh trunk/tests/groups/group-mcs.sh Removed: trunk/tests/groups/group-pbs.sh trunk/tests/groups/group-sge.sh trunk/tests/groups/group-ssh.sh trunk/tests/groups/local-pbs-coasters.sh trunk/tests/groups/local-sge-coasters.sh Modified: trunk/docs/siteguide/pads trunk/tests/groups/group-intrepid.sh trunk/tests/groups/group-pads.sh trunk/tests/groups/group-queenbee.sh trunk/tests/groups/group-surveyor.sh Log: New provider test groups, doc updates Modified: trunk/docs/siteguide/pads =================================================================== --- trunk/docs/siteguide/pads 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/docs/siteguide/pads 2011-09-07 17:40:07 UTC (rev 5081) @@ -33,7 +33,7 @@ The first step is to paste the text below into a file named sites.xml. ----- -include::../../tests/providers/PADS/coasters/sites.template.xml[] +include::../../tests/providers/pads/coasters/sites.template.xml[] ----- This file will require just a few customizations. First, create a @@ -52,7 +52,7 @@ Paste the following example into a file named tc.data ----- -include::../../tests/providers/PADS/coasters/tc.template.data[] +include::../../tests/providers/pads/coasters/tc.template.data[] ----- Copy a Swift Script @@ -197,7 +197,7 @@ Below is the template that is used by Swift's test suite for running on PADS. ----- -include::../../tests/providers/PADS/coasters/sites.template.xml[] +include::../../tests/providers/pads/coasters/sites.template.xml[] ----- Before you can use this configuration file, you will need to modify \_WORK_ to a directory writable by you, @@ -210,7 +210,7 @@ Below is the tc.data file used by Swift's test suite for running on PADS. ----- -include::../../tests/providers/PADS/coasters/tc.template.data[] +include::../../tests/providers/pads/coasters/tc.template.data[] ------ Copy these commands and save it as tc.data. Added: trunk/tests/groups/group-beagle.sh =================================================================== --- trunk/tests/groups/group-beagle.sh (rev 0) +++ trunk/tests/groups/group-beagle.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -0,0 +1,9 @@ + +# GROUPLIST definition to run on Beagle + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/beagle/coasters \ + $TESTDIR/provdiers/beagle/pbs \ + ) + +checkvars WORK QUEUE PROJECT Added: trunk/tests/groups/group-crow.sh =================================================================== --- trunk/tests/groups/group-crow.sh (rev 0) +++ trunk/tests/groups/group-crow.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run on Crow + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/crow \ + ) + +checkvars WORK QUEUE PROJECT Added: trunk/tests/groups/group-fusion.sh =================================================================== --- trunk/tests/groups/group-fusion.sh (rev 0) +++ trunk/tests/groups/group-fusion.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run on Fusion + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/fusion/coasters \ + ) + +checkvars WORK QUEUE PROJECT Modified: trunk/tests/groups/group-intrepid.sh =================================================================== --- trunk/tests/groups/group-intrepid.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-intrepid.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -2,7 +2,7 @@ # GROUPLIST definition to run on Intrepid GROUPLIST=( $TESTDIR/local \ - $TESTDIR/providers/local-cobalt/intrepid \ + $TESTDIR/providers/intrepid \ ) checkvars WORK QUEUE PROJECT Added: trunk/tests/groups/group-mcs.sh =================================================================== --- trunk/tests/groups/group-mcs.sh (rev 0) +++ trunk/tests/groups/group-mcs.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run on MCS bag of machines + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/mcs \ + ) + +checkvars WORK QUEUE PROJECT Modified: trunk/tests/groups/group-pads.sh =================================================================== --- trunk/tests/groups/group-pads.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-pads.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -3,5 +3,6 @@ GROUPLIST=( $TESTDIR/providers/local \ - $TESTDIR/providers/local-pbs/pads \ + $TESTDIR/providers/pads/coasters \ + $TESTDIR/providers/pads/pbs \ ) Deleted: trunk/tests/groups/group-pbs.sh =================================================================== --- trunk/tests/groups/group-pbs.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-pbs.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -1,7 +0,0 @@ - -# GROUPLIST definition to run pbs tests - -GROUPLIST=( - $TESTDIR/providers/local-pbs \ - $TESTDIR/providers/local-pbs-coasters \ -) Modified: trunk/tests/groups/group-queenbee.sh =================================================================== --- trunk/tests/groups/group-queenbee.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-queenbee.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -2,5 +2,5 @@ GROUPLIST=( $TESTDIR/providers/local \ - $TESTDIR/providers/local-pbs/queenbee \ + $TESTDIR/providers/queenbee/pbs \ ) Deleted: trunk/tests/groups/group-sge.sh =================================================================== --- trunk/tests/groups/group-sge.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-sge.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -1,6 +0,0 @@ - -# GROUPLIST definition to run sge tests - -GROUPLIST=( - $TESTDIR/providers/sge-local \ -) Deleted: trunk/tests/groups/group-ssh.sh =================================================================== --- trunk/tests/groups/group-ssh.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-ssh.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -1,7 +0,0 @@ - -# GROUPLIST definition to run sge tests - -GROUPLIST=( - $TESTDIR/providers/ssh \ - $TESTDIR/providers/ssh-pbs-coasters \ -) Modified: trunk/tests/groups/group-surveyor.sh =================================================================== --- trunk/tests/groups/group-surveyor.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/group-surveyor.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -2,7 +2,7 @@ # GROUPLIST definition to run on Intrepid GROUPLIST=( $TESTDIR/providers/local \ - $TESTDIR/providers/local-cobalt/surveyor \ - ) + $TESTDIR/providers/surveyor \ +) checkvars WORK QUEUE PROJECT Deleted: trunk/tests/groups/local-pbs-coasters.sh =================================================================== --- trunk/tests/groups/local-pbs-coasters.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/local-pbs-coasters.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -1,6 +0,0 @@ - -# GROUPLIST definition to run pbs tests - -GROUPLIST=( - $TESTDIR/providers/local-pbs-coasters \ -) Deleted: trunk/tests/groups/local-sge-coasters.sh =================================================================== --- trunk/tests/groups/local-sge-coasters.sh 2011-09-07 16:45:33 UTC (rev 5080) +++ trunk/tests/groups/local-sge-coasters.sh 2011-09-07 17:40:07 UTC (rev 5081) @@ -1,6 +0,0 @@ - -# GROUPLIST definition to run sge tests - -GROUPLIST=( - $TESTDIR/providers/local-sge-coasters \ -) From wozniak at ci.uchicago.edu Wed Sep 7 12:48:29 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 7 Sep 2011 12:48:29 -0500 (CDT) Subject: [Swift-commit] r5082 - trunk/bin Message-ID: <20110907174829.07A119CD09@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-07 12:48:28 -0500 (Wed, 07 Sep 2011) New Revision: 5082 Modified: trunk/bin/chxml Log: This should be compatible with Python 2.4 Modified: trunk/bin/chxml =================================================================== --- trunk/bin/chxml 2011-09-07 17:40:07 UTC (rev 5081) +++ trunk/bin/chxml 2011-09-07 17:48:28 UTC (rev 5082) @@ -26,7 +26,7 @@ try: config_filename = argstr[i+1].split("'")[1] config_file = open(config_filename,"r") - except IOError as (errno, strerror): + except IOError, (errno, strerror): print strerror sys.exit("Could not read: " + config_filename) From davidk at ci.uchicago.edu Wed Sep 7 13:43:18 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 7 Sep 2011 13:43:18 -0500 (CDT) Subject: [Swift-commit] r5083 - wwwdev/docs Message-ID: <20110907184318.9BF619CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-07 13:43:18 -0500 (Wed, 07 Sep 2011) New Revision: 5083 Modified: wwwdev/docs/index.php Log: Added link to trunk siteguide Modified: wwwdev/docs/index.php =================================================================== --- wwwdev/docs/index.php 2011-09-07 17:48:28 UTC (rev 5082) +++ wwwdev/docs/index.php 2011-09-07 18:43:18 UTC (rev 5083) @@ -60,6 +60,7 @@ This document will guide new users to run Swift in a variety of different environments.

 

From ketan at ci.uchicago.edu Wed Sep 7 16:02:38 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Wed, 7 Sep 2011 16:02:38 -0500 (CDT) Subject: [Swift-commit] r5084 - trunk/bin/grid Message-ID: <20110907210238.665B89CD09@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-07 16:02:38 -0500 (Wed, 07 Sep 2011) New Revision: 5084 Modified: trunk/bin/grid/run-worker.sh Log: Added OSG_PATH env var to the OSG_APP path in order to set path to user's binaries Modified: trunk/bin/grid/run-worker.sh =================================================================== --- trunk/bin/grid/run-worker.sh 2011-09-07 18:43:18 UTC (rev 5083) +++ trunk/bin/grid/run-worker.sh 2011-09-07 21:02:38 UTC (rev 5084) @@ -7,16 +7,19 @@ if [ _$OSG_WN_TMP = _ ]; then OSG_WN_TMP=/tmp fi + mkdir -p $OSG_WN_TMP logdir=$(mktemp -d $OSG_WN_TMP/${workername}.workerdir.XXXXXX) nlines=1000 -PATH=$OSG_APP:$OSG_APP/scec:$OSG_APP/extenci/aashish/terfix/bin:$PATH +#export PATH=${OSG_APP}/engage/scec:${OSG_APP}/engage/scec/JBSim3d/bin:${OSG_APP}/engage/scec/SpectralAcceleration/p2utils:${OSG_APP}/extenci/swift/DSSAT/bin:${OSG_APP}/extenci/aashish/terfix/bin:$PATH +export PATH=${OSG_APP}/${OSG_PATH}:$PATH echo "=== contact: $contact" echo "=== name: $workername Running in dir $(pwd)" echo "=== cwd: $(pwd)" echo "=== logdir: $logdir" +echo "=== path: $PATH" echo "===============================================" cat >worker.pl From ketan at ci.uchicago.edu Wed Sep 7 16:09:21 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Wed, 7 Sep 2011 16:09:21 -0500 (CDT) Subject: [Swift-commit] r5085 - trunk/bin/grid Message-ID: <20110907210921.8AED79CC9F@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-07 16:09:21 -0500 (Wed, 07 Sep 2011) New Revision: 5085 Modified: trunk/bin/grid/run-worker.sh Log: Added OSG_PATH env var to the OSG_APP path in order to set path to user's binaries Modified: trunk/bin/grid/run-worker.sh =================================================================== --- trunk/bin/grid/run-worker.sh 2011-09-07 21:02:38 UTC (rev 5084) +++ trunk/bin/grid/run-worker.sh 2011-09-07 21:09:21 UTC (rev 5085) @@ -13,7 +13,7 @@ nlines=1000 #export PATH=${OSG_APP}/engage/scec:${OSG_APP}/engage/scec/JBSim3d/bin:${OSG_APP}/engage/scec/SpectralAcceleration/p2utils:${OSG_APP}/extenci/swift/DSSAT/bin:${OSG_APP}/extenci/aashish/terfix/bin:$PATH -export PATH=${OSG_APP}/${OSG_PATH}:$PATH +export PATH=${OSG_PATH}:$PATH echo "=== contact: $contact" echo "=== name: $workername Running in dir $(pwd)" From davidk at ci.uchicago.edu Wed Sep 7 20:21:11 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 7 Sep 2011 20:21:11 -0500 (CDT) Subject: [Swift-commit] r5087 - in trunk/docs: . documentation siteguide tutorial tutorial/images userguide Message-ID: <20110908012111.AF1359CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-07 20:21:11 -0500 (Wed, 07 Sep 2011) New Revision: 5087 Added: trunk/docs/documentation/ trunk/docs/quickstart/ trunk/docs/siteguide/intrepid trunk/docs/siteguide/prereqs trunk/docs/tutorial/images/icons/ trunk/docs/userguide/log-processing Removed: trunk/docs/documentation/building.html Modified: trunk/docs/siteguide/futuregrid trunk/docs/siteguide/grid trunk/docs/siteguide/pads trunk/docs/siteguide/siteguide.txt trunk/docs/tutorial/runtime_features trunk/docs/userguide/coasters trunk/docs/userguide/userguide.txt Log: Doc updates Deleted: trunk/docs/documentation/building.html =================================================================== --- branches/release-0.93/docs/documentation/building.html 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/documentation/building.html 2011-09-08 01:21:11 UTC (rev 5087) @@ -1,576 +0,0 @@ - - - - - - - - - - - -
-
-

Prerequisites

-
-

There are several prerequisites for building documentation:

-
-

For CI users, compiled versions of these packages can be found in ~davidk.

-
-

Build Docs Script

-

Before committing any changes to documentation, it is a good idea manually -build the documentation. The script to build the documentation is -docs/build_docs.sh.

-

This script will convert the documents into HTML and PDF, and then copy the -files to a given output directory.

-
-
-
-
-

- - - Modified: trunk/docs/siteguide/futuregrid =================================================================== --- trunk/docs/siteguide/futuregrid 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/siteguide/futuregrid 2011-09-08 01:21:11 UTC (rev 5087) @@ -1,5 +1,5 @@ -FutureGrid ----------- +Futuregrid Quickstart Guide +--------------------------- Downloading and Building Swift ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Modified: trunk/docs/siteguide/grid =================================================================== --- trunk/docs/siteguide/grid 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/siteguide/grid 2011-09-08 01:21:11 UTC (rev 5087) @@ -163,8 +163,8 @@ $ $ grep SUCCEEDED run.89/*/*.stdout $ +----- - Starting a single coaster service ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Added: trunk/docs/siteguide/intrepid =================================================================== --- trunk/docs/siteguide/intrepid (rev 0) +++ trunk/docs/siteguide/intrepid 2011-09-08 01:21:11 UTC (rev 5087) @@ -0,0 +1,168 @@ +Intrepid +-------- + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have an account on Intrepid, you can request +one at https://accounts.alcf.anl.gov/accounts/request.php. More information about +this process and requesting allocations for your project can be found at +http://www.alcf.anl.gov/support/gettingstarted/index.php. + +SSH Keys +~~~~~~~~ +Accessing the Intrepid via SSH can be done with any SSH software package. +Before logging in, you will need to generate an SSH public key and send it to +support at alcf.anl.gov for verification and installation. + +Cryptocard +~~~~~~~~~~ +This security token uses one-time passwords for controlled access to the BG/P login systems. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +When you gain access to Intrepid, you should receive a cryptocard and a temporary PIN. +You must have a working cryptocard, know your PIN, and have your SSH key in place before +you may login. + +You can connect to Intrepid with the following command: + +----- +ssh yourusername at intrepid.alcf.anl.gov +----- + +You will be presented with a password prompt. The first part of your password is your PIN. Enter you PIN, +press the Cryptocard button, and then enter the password your crypocard generates. If this is the first +time you are logging in, you will be prompted to change your PIN. + +Downloading and building Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The most recent versions of Swift can be found at +http://www.ci.uchicago.edu/swift/downloads/index.php. Follow the instructions +provided on that site to download and build Swift. + +Adding Swift to your PATH +~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have installed Swift, add the Swift binary to your PATH so you can +easily run it from any directory. + +In your home directory, edit the file ".bashrc". + +If you have installed Swift via a source repository, add the following line +at the bottom of .bashrc. + +----- +export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin +----- + +If you have installed Swift via a binary package, add this line: + +----- +export PATH=$PATH:$HOME/swift-/bin +----- + +Replace with the actual name of the swift directory in the example above. + +What You Need To Know Before Running Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Before you can create a Swift configuration file, there are some things +you will need to know. + +Swift Work Directory +^^^^^^^^^^^^^^^^^^^^ +The Swift work directory is a directory which Swift uses for processing work. +This directory needs to be writable. Common options for this are: + +----- +/home/username/swiftwork +/home/username/work +/tmp +----- + +Which project(s) are you a member of? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Intrepid requires that you are a member of a project. You can determine this by +running the following command: + +----- +$ projects +HTCScienceApps +----- + +If you are not a member of a project, you must first request access +to a project. More information on this process can be found at +https://wiki.alcf.anl.gov/index.php/Discretionary_Allocations + +Determine your Queue +^^^^^^^^^^^^^^^^^^^^ + +Intrepid has several different queues you can submit jobs to depending on +the type of work you will be doing. The command "qstat -q" will print +the most up to date list of this information. + +.Intrepid Queues +[options="header"] +|========================================================= +|User Queue|Queue|Nodes|Time (hours)|User Maxrun|Project maxrun +|prod-devel|prod-devel|64-512|0-1|5|20 +|prod|prod-short|512-4096|0-6|5|20 +|prod|prod-long|512-4096|6-12|5|20 +|prod|prod-capability|4097-32768|0-12|2|20 +|prod|prod-24k|16385-24576|0-12|2|20 +|prod|prod-bigrun|32769-40960|0-12|2|20 +|prod|backfill|512-8192|0-6|5|10 +|============================================================ + +Generating Configuration Files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now that you know what queue to use, your project, and your work directory, it is time to +set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. +There are two methods you can use for creating this file. You can manually edit +the configuration file, or generate it with a utility called gensites. + +Manually Editing sites.xml +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Below is the template that is used by Swift's test suite for running on Intrepid. +TODO: Update the rest below here + +----- +include::../../tests/providers/intrepid/sites.template.xml[] +----- + +The values to note here are the ones that are listed between underscores. In the example above, they are \_QUEUE_, and \_WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. + +Manually Editing tc.data +~~~~~~~~~~~~~~~~~~~~~~~~ +Below is the tc.data file used by Swift's test suite for running on PADS. + +----- +include::../../tests/providers/intrepid/tc.template.data[] +------ + +Copy these commands and save it as tc.data. + +Catsn.swift +~~~~~~~~~~~ +The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. + +----- +include::../../examples/misc/catsn.swift[] +----- + +Running Swift +~~~~~~~~~~~~~ +Now that everything is in place, run Swift with the following command: + +----- +swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 +----- + +You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these +files should contain the contents of what you placed into data.txt. If this happens, your job has run +successfully on PADS! + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. + + Modified: trunk/docs/siteguide/pads =================================================================== --- trunk/docs/siteguide/pads 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/siteguide/pads 2011-09-08 01:21:11 UTC (rev 5087) @@ -1,10 +1,93 @@ PADS ---- +PADS Quickstart +~~~~~~~~~~~~~~~ +This section will walk you through running a simple Swift script +on PADS. It will explain how to setup software packages, how +to create the required Swift configuration files, and finally +how to run Swift. + +Adding Software Packages +^^^^^^^^^^^^^^^^^^^^^^^^ +In your home directory, edit a file called .soft and add these +lines (in this order): +----- ++java-sun ++maui ++torque + at default +----- + +Log out of PADS, and log back in for these changes to take effect. + +Creating sites.xml +^^^^^^^^^^^^^^^^^^ +Swift relies on various configuration files to determine how to +run. This section will provide a working configuration file which +you can copy and paste to get running quickly. The sites.xml file +tells Swift how to submit jobs, where working directories are +located, and various other configuration information. More +information on sites.xml can be found in the Swift User's Guide. + +The first step is to paste the text below into a file named sites.xml. + +----- +include::../../tests/providers/pads/coasters/sites.template.xml[] +----- + +This file will require just a few customizations. First, create a +directory called swiftwork. Modify \_WORK_ in sites.xml +to point to this new directory. For example +----- +/home/myhome/swiftwork +----- + +Creating tc.data +^^^^^^^^^^^^^^^^ +The tc.data configuration file gives information about the applications +that will be called by Swift. More information about the format +of tc.data can be found in the Swift User's guide. + +Paste the following example into a file named tc.data + +----- +include::../../tests/providers/pads/coasters/tc.template.data[] +----- + +Copy a Swift Script +^^^^^^^^^^^^^^^^^^^ + +Within the Swift directory is an examples directory which contains +several introductory Swift scripts. The example we will use in this +section is called catsn.swift. Copy this script to the same directory +that your sites.xml and tc.data files are located. + +----- +$ cp ~/swift-0.93/examples/misc/catsn.swift . +$ cp ~/swift-0.93/examples/misc/data.txt . +----- +TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. + +Run Swift +^^^^^^^^^ + +Finally, run the script +----- +$ swift -sites.file sites.xml -tc.file tc.data catsn.swift +----- + +You should see 10 new text files get created, named catsn*.out. If +you see these files, then you have succesfully run Swift on PADS! + +TIP: Make sure your default project is defined. Read on for more information. + +Read on for more detailed information about running Swift on PADS. + Requesting Access ~~~~~~~~~~~~~~~~~ If you do not already have a Computation Institute account, you can request -one at https://www.ci.uchicago.edu/accounts/. This page will give you a list +one at https://www.ci.uchicago.edu/accounts. This page will give you a list of resources you can request access to. Be sure that PADS is selected. If you already have an existing CI account, but do not have access to PADS, send an email to support at ci.uchicago.edu to request access. @@ -39,48 +122,17 @@ @default ----- -Downloading and building Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The most recent versions of Swift can be found at -http://www.ci.uchicago.edu/swift/downloads/index.php. Follow the instructions -provided on that site to download and build Swift. - -Adding Swift to your PATH -~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have installed Swift, add the Swift binary to your PATH so you can -easily run it from any directory. - -In your home directory, edit the file ".bashrc". - -If you have installed Swift via a source repository, add the following line -at the bottom of .bashrc. - ------ -export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin ------ - -If you have installed Swift via a binary package, add this line: - ------ -export PATH=$PATH:$HOME/swift-/bin ------ - -Replace with the actual name of the swift directory in the example above. - -What You Need To Know Before Running Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Before you can create a Swift configuration file, there are some things -you will need to know. - Swift Work Directory ^^^^^^^^^^^^^^^^^^^^ The Swift work directory is a directory which Swift uses for processing work. -This directory needs to be writable. Common options for this are: +This directory needs to be writable and available to all worker nodes on +a shared filesystem. +.Examples ----- /home/username/swiftwork /home/username/work -/tmp +/autonfs/gpfs-pads/projects/CI-CCR000013/myusername ----- Which project(s) are you a member of? @@ -145,29 +197,35 @@ Below is the template that is used by Swift's test suite for running on PADS. ----- -include::../../tests/providers/local-pbs/pads/sites.template.xml[] +include::../../tests/providers/pads/coasters/sites.template.xml[] ----- -The values to note here are the ones that are listed between underscores. In the example above, they are _QUEUE_, and _WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. +Before you can use this configuration file, you will need to modify \_WORK_ to a directory writable by you, +and have your default project defined. Copy this template, replace \_WORK_, and then save as sites.xml. +If you wanted to use a different queue, replace "fast" with the desired queue name. + Manually Editing tc.data ~~~~~~~~~~~~~~~~~~~~~~~~ Below is the tc.data file used by Swift's test suite for running on PADS. ----- -include::../../tests/providers/local-pbs/pads/tc.template.data[] +include::../../tests/providers/pads/coasters/tc.template.data[] ------ Copy these commands and save it as tc.data. Catsn.swift ~~~~~~~~~~~ -The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. +The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is +a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains +some simple input - a "hello world" will do the trick. ----- include::../../examples/misc/catsn.swift[] ----- + Running Swift ~~~~~~~~~~~~~ Now that everything is in place, run Swift with the following command: Added: trunk/docs/siteguide/prereqs =================================================================== --- trunk/docs/siteguide/prereqs (rev 0) +++ trunk/docs/siteguide/prereqs 2011-09-08 01:21:11 UTC (rev 5087) @@ -0,0 +1,8 @@ +Prerequisites +------------- + +This guide assumes that you have already downloaded and installed Swift. +It assumes that Swift is in your PATH and that you have a working +version of Sun Java 1.5+. For more information on downloading and +installing Swift, please see the +http://www.ci.uchicago.edu/swift/guides/release-0.93/quickstart/quickstart.html[Swift Quickstart Guide]. Modified: trunk/docs/siteguide/siteguide.txt =================================================================== --- trunk/docs/siteguide/siteguide.txt 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/siteguide/siteguide.txt 2011-09-08 01:21:11 UTC (rev 5087) @@ -6,10 +6,14 @@ :website: http://www.ci.uchicago.edu/swift/guides/siteguide.php :numbered: +include::prereqs[] + include::pads[] include::beagle[] +include::intrepid[] + include::futuregrid[] include::grid[] Modified: trunk/docs/tutorial/runtime_features =================================================================== --- trunk/docs/tutorial/runtime_features 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/tutorial/runtime_features 2011-09-08 01:21:11 UTC (rev 5087) @@ -22,167 +22,10 @@ examples, we've invoked echo and tr executables from our SwiftScript program. These have been run on the local system (the same computer on which you ran swift). We can also make our computations run on a -remote resource. +remote resource. For more information on running Swift on a remote site +please see the http://www.ci.uchicago.edu/swift/guides/release-0.93/siteguide/siteguide.html[Site Configuration Guide]. -WARNING: This example is necessarily more vague than previous ones, -because it requires access to remote resources. You should ensure that -you can submit a job using the globus-job-run (or globusrun-ws) -command(s). -We do not need to modify any SwiftScript code to run on another -resource. Instead, we must modify another catalog, the site catalog. -This catalog provides details of the location that applications will be -run, with the default settings referring to the local machine. We will -modify it to refer to a remote resource - the UC Teraport cluster. If -you are not a UC Teraport user, you should use details of a different -resource that you do have access to. - -The site catalog is located in etc/sites.xml and is a relatively -straightforward XML format file. We must modify each of the following -three settings: gridftp (which indicates how and where data can be -transferred to the remote resource), jobmanager (which indicates how -applications can be run on the remote resource) and workdirectory (which -indicates where working storage can be found on the remote resource). - - -Writing a mapper -~~~~~~~~~~~~~~~~ - -This section will introduce writing a custom mapper so that Swift is -able to access data files laid out in application-specific ways. - -An application-specific mapper must take the form of a Java class that -implements the http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/Mapper.html[Mapper -interface]. - -Usually you don't need to implement this interface directly, because -Swift provides a number of more concrete classes with some functionality -already implemented. - -The hierarchy of helper classes is: - -http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/Mapper.html[Mapper] - -This is the abstract interface for mappers in Swift. You must -implement methods to provide access to mapper properties, to map from a -SwiftScript dataset path (such as foo[1].bar) to a file name, to check -whether a file exists. None of the default Swift mappers implement this -interface directly - instead they use one of the following helper classes. - -http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/AbstractMapper.html[Abstract Mapper] - -This provides helper methods to manage mapper properties and to handle -existance checking. Examples of mappers which use this class are: -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.array_mapper[Array Mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.csv_mapper[CSV Mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.fixed_array_mapper[Fixed Array Mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.regexp_mapper[Regexp Mapper], -and http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.single_file_mapper[Single File Mapper]. - -http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/file/AbstractFileMapper.html[AbstractFileMapper] -This provides a helper class for mappers which select files based on -selecting files from a directory listing. It is necessary to write some -helper methods that are different from the above mapper methods. -Examples of mappers which use this class are: -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.simple_mapper[simple_mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.filesys_mapper[filesys_mapper], -and the StructuredRegularExpressionMapper. - -In general, to write a mapper, choose either the AbstractMapper or the -AbstractFileMapper and extend those. If your mapper will generally -select the files it returns based on a directory listing and will -convert paths to filenames using some regular conversion (for example, -in the way that simple_mapper maps files in a directory that match a -particular pattern), then you should probably use the -AbstractFileMapper. If your mapper will produce a list of files in some -other way (for example, in the way that csv_mapper maps based on -filenames given in a CSV file rather than looking at which files are in -a directory), then you should probably use the AbstractMapper. - - -Writing a very basic mapper -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In this section, we will write a very basic (almost useless) mapper that -will map a SwiftScript dataset into a hardcoded file called -myfile.txt, like this: - - - Swift variable Filename - - var <-----------------------------> myfile.txt - -We should be able to use the mapper we write in a SwiftScript program -like this: - - ----- -type file; -file f ; ----- - -First we must choose a base class - AbstractMapper or -AbstractFileMapper. We aren't going to use a directory listing to decide -on our mapping - we are getting the mapping from some other source (in -fact, it will be hard coded). So we will use AbstractMapper. - -So now onto the source code. We must define a subclass of AbstractMapper -and implement several mapper methods: isStatic, existing, and map. These -methods are documented in the javadoc for the Mapper interface. - -Here is the code implementing this mapper. Put this in your source -vdsk directory, make a directory src/tutorial/|and put this file in -src/tutorial/MyFirstMapper.java. - -.MyFirstMapper.java -******************* ----- -include::../../examples/tutorial/MyFirstMapper.java[] ----- -******************* - -Now we need to inform the Swift engine about the existence of this -mapper. We do that by editing the MapperFactory class definition, in -src/org/griphyn/vdl/mapping/MapperFactory.java and adding a -registerMapper call alongside the existing registerMapper calls, like this: - - ----- -registerMapper("my_first_mapper", tutorial.MyFirstMapper.class); ----- - -The first parameter is the name of the mapper that will be used in -SwiftScript program. The second parameter is the new Mapper class that -we just wrote. - -Now rebuild Swift using the "ant redist" target. - -This new Swift build will be aware of your new mapper. We can test it -out with a hello world program: - -.my_first_mapper.swift -********************** ------ -include::../../examples/tutorial/my_first_mapper.swift[] ------ -********************** - -Run this program, and hopefully you will find the "hello" string has -been output into the hard coded output file myfile.txt: - - ----- -$ cat myfile.txt -hello ----- - -So that's a first very simple mapper implemented. Compare the source -code to the single_file_mapper in -http://www.ci.uchicago.edu/trac/swift/browser/trunk/src/org/griphyn/vdl/mapping/file/SingleFileMapper.java[SingleFileMapper.java]. -There is not much more code to the single_file_mapper - mostly code to -deal with the file parameter. - - Starting and restarting ~~~~~~~~~~~~~~~~~~~~~~~ Modified: trunk/docs/userguide/coasters =================================================================== --- trunk/docs/userguide/coasters 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/userguide/coasters 2011-09-08 01:21:11 UTC (rev 5087) @@ -1,7 +1,5 @@ Coasters -------- -Coasters were introduced in Swift v0.6 as an experimental feature. - In many applications, Swift performance can be greatly enhanced by the use of CoG coasters. CoG coasters provide a low-overhead job submission and file transfer mechanism suited for the execution of short jobs (on Added: trunk/docs/userguide/log-processing =================================================================== --- trunk/docs/userguide/log-processing (rev 0) +++ trunk/docs/userguide/log-processing 2011-09-08 01:21:11 UTC (rev 5087) @@ -0,0 +1,104 @@ + +Log Processing +-------------- + +To properly generate log plots, you must enable VDL/Karajan logging. +TODO:How? + + +You should check the scripts that you intend to use to determine +what log lines they require and ensure that you are generating +those lines via log4j.properties + +Make sure log4.properties contains: +-------------------------------------- +log4j.logger.swift=DEBUG +log4j.logger.org.globus.cog.abstraction.coaster.service.job.manager.Cpu=DEBUG +log4j.logger.org.globus.cog.abstraction.coaster.service.job.manager.Block=DEBUG +-------------------------------------- +TODO: Does it work for coasters-based runs only? + +Normalize event times in the log to the run start time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Generate the log, assuming the log is titled +swift-run.log+ + +------------------------------------------ +./normalize-log.pl file.contains.start.time swift-run.log > swift-run.norm +------------------------------------------ +TODO:In what format does the start time be in 'file.contains.start.time' + + +Make a basic load plot from Coasters Cpu log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. +. Build up a load data file: ++ +------------------------------------------ +./cpu-job-load.pl < swift-run.norm > load.data +------------------------------------------ +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s load.cfg load.eps load.data +------------------------------------------ +Note: Th load.cfg is available from swift/libexec/log-processing/ + + +Make a basic job completion plot from Coasters Cpu log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. + +. Build up a completed data file: ++ +------------------------------------------ +./cpu-job-completed.pl < swift-run.norm > completed.data +------------------------------------------ + +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s completed.cfg completed.eps completed.data +------------------------------------------ + +Make a basic Block allocation plot from Coasters Block log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. + +. Build up a block allocation data file: ++ +------------------------------------------ +./block-level.pl < swift-run.norm > blocks.data +------------------------------------------ + +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s blocks.{cfg,eps,data} +------------------------------------------ + +Make a job runtime distribution plot from Coasters Cpu log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. + +. Build up a job runtime file: ++ +------------------------------------------ +./extract-times.pl < swift-run.norm > times.data +------------------------------------------ + +. Put the job runtimes into 1-second buckets: ++ +------------------------------------------ +./ buckets.pl 1 times.data > buckets.data +------------------------------------------ + +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s buckets.cfg buckets.eps buckets.data +------------------------------------------ Modified: trunk/docs/userguide/userguide.txt =================================================================== --- trunk/docs/userguide/userguide.txt 2011-09-08 00:53:06 UTC (rev 5086) +++ trunk/docs/userguide/userguide.txt 2011-09-08 01:21:11 UTC (rev 5087) @@ -37,3 +37,5 @@ include::howto_tips[] include::cdm[] + +include::log-processing[] From wozniak at ci.uchicago.edu Thu Sep 8 09:53:51 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:53:51 -0500 (CDT) Subject: [Swift-commit] r5088 - usertools/persistent-coasters Message-ID: <20110908145351.C320F9CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:53:51 -0500 (Thu, 08 Sep 2011) New Revision: 5088 Modified: usertools/persistent-coasters/helpers.zsh Log: Copy in cqda() and zclm() Modified: usertools/persistent-coasters/helpers.zsh =================================================================== --- usertools/persistent-coasters/helpers.zsh 2011-09-08 01:21:11 UTC (rev 5087) +++ usertools/persistent-coasters/helpers.zsh 2011-09-08 14:53:51 UTC (rev 5088) @@ -33,6 +33,38 @@ return 0 } +cqda() +# Delete all Cobalt jobs +{ + local JOBS + JOBS=($( qstat | grep wozniak | clm 1 )) + (( ! ${#JOBS} )) && return 0 + qdel ${JOBS} +} + +zclm() +# Z-CoLuMn +# Select columns from input without awk/cut +{ + local L + local -Z c + local A C i + C=( ${*} ) + while read L + do + A=( $( print -- ${L} ) ) + N=${#C} + for (( i=1 ; i<=N ; i++ )) + do + c=${C[i]} + printf "${A[c]}" + (( i < N )) && printf " " + done + printf "\n" + done + return 0 +} + bail() { CODE=$1 From wozniak at ci.uchicago.edu Thu Sep 8 09:54:31 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:54:31 -0500 (CDT) Subject: [Swift-commit] r5089 - usertools/persistent-coasters Message-ID: <20110908145431.D8E0A9CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:54:31 -0500 (Thu, 08 Sep 2011) New Revision: 5089 Modified: usertools/persistent-coasters/helpers.zsh Log: Comments Modified: usertools/persistent-coasters/helpers.zsh =================================================================== --- usertools/persistent-coasters/helpers.zsh 2011-09-08 14:53:51 UTC (rev 5088) +++ usertools/persistent-coasters/helpers.zsh 2011-09-08 14:54:31 UTC (rev 5089) @@ -33,11 +33,11 @@ return 0 } -cqda() -# Delete all Cobalt jobs +cqda() +# Cobalt Queue Delete All { local JOBS - JOBS=($( qstat | grep wozniak | clm 1 )) + JOBS=($( qstat | grep wozniak | clm 1 )) (( ! ${#JOBS} )) && return 0 qdel ${JOBS} } From wozniak at ci.uchicago.edu Thu Sep 8 09:54:52 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:54:52 -0500 (CDT) Subject: [Swift-commit] r5090 - usertools/persistent-coasters Message-ID: <20110908145452.DD2C79CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:54:52 -0500 (Thu, 08 Sep 2011) New Revision: 5090 Modified: usertools/persistent-coasters/sites.persistent.xml Log: This file is not used Modified: usertools/persistent-coasters/sites.persistent.xml =================================================================== --- usertools/persistent-coasters/sites.persistent.xml 2011-09-08 14:54:31 UTC (rev 5089) +++ usertools/persistent-coasters/sites.persistent.xml 2011-09-08 14:54:52 UTC (rev 5090) @@ -1,14 +1,19 @@ + + +< + - passive - 4 - 3.00 + passive + 1 + 2 + 3.00 10000 - + _WORK_ From wozniak at ci.uchicago.edu Thu Sep 8 09:55:14 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:55:14 -0500 (CDT) Subject: [Swift-commit] r5091 - usertools/persistent-coasters Message-ID: <20110908145514.4FC229CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:55:14 -0500 (Thu, 08 Sep 2011) New Revision: 5091 Modified: usertools/persistent-coasters/sites.passivate-template.xml Log: Use new setting name Modified: usertools/persistent-coasters/sites.passivate-template.xml =================================================================== --- usertools/persistent-coasters/sites.passivate-template.xml 2011-09-08 14:54:52 UTC (rev 5090) +++ usertools/persistent-coasters/sites.passivate-template.xml 2011-09-08 14:55:14 UTC (rev 5091) @@ -5,7 +5,7 @@ jobmanager="local:local"/> passive - 1 + 1 .03 10000 _WORK_ From wozniak at ci.uchicago.edu Thu Sep 8 09:56:10 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:56:10 -0500 (CDT) Subject: [Swift-commit] r5092 - usertools/persistent-coasters Message-ID: <20110908145610.1806C9CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:56:09 -0500 (Thu, 08 Sep 2011) New Revision: 5092 Modified: usertools/persistent-coasters/workers-cobalt.zsh Log: Now qsub multiple single-node jobs Modified: usertools/persistent-coasters/workers-cobalt.zsh =================================================================== --- usertools/persistent-coasters/workers-cobalt.zsh 2011-09-08 14:55:14 UTC (rev 5091) +++ usertools/persistent-coasters/workers-cobalt.zsh 2011-09-08 14:56:09 UTC (rev 5092) @@ -26,26 +26,31 @@ m4 < ${PC}/worker-cobalt.m4.zsh > ${WORKER_WRAPPER} chmod u+x ${WORKER_WRAPPER} - # Launch it - cqsub -q ${QUEUE} \ - -p ${PROJECT} \ - -t ${MAXTIME} \ - -n ${NODES} \ - -C ${WORKER_LOGDIR} \ - -E ${WORKER_LOGDIR}/worker.${ID}.err \ - -o ${WORKER_LOGDIR}/worker.${ID}.out \ - -e "WORKER_LOGGING_LEVEL=DEBUG" \ - ${WORKER_WRAPPER} > cobalt-job-id.txt 2> cobalt.err - - ERR_CHARS=$( wc -c cobalt.err) + CQSUB_OUT=${WORKER_LOGDIR}/cqsub-job-id.txt + CQSUB_ERR=${WORKER_LOGDIR}/cqsub.err + for (( i=0 ; i ${CQSUB_OUT} 2> ${CQSUB_ERR} + # -n ${NODES} + (( ${?} )) && break + log "Cobalt JobID[${i}]: $( < ${CQSUB_OUT} )" + done + ERR_CHARS=$( wc -c < ${CQSUB_ERR} ) if (( ERR_CHARS )) then print "Cobalt errors:" - cat cobalt.err + cat ${CQSUB_ERR} return 1 fi - log "Cobalt JobID: $( < cobalt-job-id.txt )" - return 0 } From wozniak at ci.uchicago.edu Thu Sep 8 09:57:20 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:57:20 -0500 (CDT) Subject: [Swift-commit] r5093 - usertools/persistent-coasters Message-ID: <20110908145720.7E3249CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:57:20 -0500 (Thu, 08 Sep 2011) New Revision: 5093 Modified: usertools/persistent-coasters/start-service.zsh Log: Do not put start-workers() in the background start-workers() will control its own background processes for concurrency Modified: usertools/persistent-coasters/start-service.zsh =================================================================== --- usertools/persistent-coasters/start-service.zsh 2011-09-08 14:56:09 UTC (rev 5092) +++ usertools/persistent-coasters/start-service.zsh 2011-09-08 14:57:20 UTC (rev 5093) @@ -148,7 +148,7 @@ sleep 1 log "Starting workers..." -start-workers ${SERVICE_LOCAL} & +start-workers ${SERVICE_LOCAL} START_WORKERS_PID=${!} sleep 1 From wozniak at ci.uchicago.edu Thu Sep 8 09:58:32 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 09:58:32 -0500 (CDT) Subject: [Swift-commit] r5094 - usertools/persistent-coasters Message-ID: <20110908145832.783A89CCF8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 09:58:32 -0500 (Thu, 08 Sep 2011) New Revision: 5094 Removed: usertools/persistent-coasters/sites.persistent.xml Log: Drop this unused file Deleted: usertools/persistent-coasters/sites.persistent.xml =================================================================== --- usertools/persistent-coasters/sites.persistent.xml 2011-09-08 14:57:20 UTC (rev 5093) +++ usertools/persistent-coasters/sites.persistent.xml 2011-09-08 14:58:32 UTC (rev 5094) @@ -1,38 +0,0 @@ - - - -< - - - - - passive - 1 - 2 - 3.00 - 10000 - - _WORK_ - - - - From wozniak at ci.uchicago.edu Thu Sep 8 10:31:29 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 8 Sep 2011 10:31:29 -0500 (CDT) Subject: [Swift-commit] r5095 - usertools/persistent-coasters Message-ID: <20110908153129.5E95A9CD09@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-08 10:31:29 -0500 (Thu, 08 Sep 2011) New Revision: 5095 Modified: usertools/persistent-coasters/helpers.zsh Log: Include p() Modified: usertools/persistent-coasters/helpers.zsh =================================================================== --- usertools/persistent-coasters/helpers.zsh 2011-09-08 14:58:32 UTC (rev 5094) +++ usertools/persistent-coasters/helpers.zsh 2011-09-08 15:31:29 UTC (rev 5095) @@ -65,6 +65,16 @@ return 0 } +p() +{ + if [[ `uname` = "SunOS" ]] + then + ps + else + ps -H -o ppid,pid,time,cmd | grep --color -v "ps -H\|xload" + fi +} + bail() { CODE=$1 From davidk at ci.uchicago.edu Thu Sep 8 19:04:38 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Thu, 8 Sep 2011 19:04:38 -0500 (CDT) Subject: [Swift-commit] r5097 - tags Message-ID: <20110909000438.EB57F9CCF8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-08 19:04:38 -0500 (Thu, 08 Sep 2011) New Revision: 5097 Added: tags/release-0.93/ Log: Tagging release 0.93 From davidk at ci.uchicago.edu Thu Sep 8 23:48:09 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Thu, 8 Sep 2011 23:48:09 -0500 (CDT) Subject: [Swift-commit] r5098 - in trunk: docs docs/siteguide tests/providers/mcs Message-ID: <20110909044809.73DB89CCF8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-08 23:48:09 -0500 (Thu, 08 Sep 2011) New Revision: 5098 Added: trunk/docs/siteguide/mcs Modified: trunk/docs/build_docs.sh trunk/docs/siteguide/futuregrid trunk/docs/siteguide/siteguide.txt trunk/tests/providers/mcs/coaster-service.conf Log: Siteguide entry for MCS workstations Modified: trunk/docs/build_docs.sh =================================================================== --- trunk/docs/build_docs.sh 2011-09-09 00:04:38 UTC (rev 5097) +++ trunk/docs/build_docs.sh 2011-09-09 04:48:09 UTC (rev 5098) @@ -43,7 +43,7 @@ for file in $FILES do echo Converting $directory"$file" to HTML - asciidoc -a toc -a max-width=750px -a stylesheet=$(pwd)/../stylesheets/asciidoc.css $file + asciidoc -a toc -a toclevels=2 -a max-width=750px -a textwidth=80 -a stylesheet=$(pwd)/../stylesheets/asciidoc.css $file echo Converting $directory"$file" to PDF a2x --format=pdf --no-xmllint $file done Modified: trunk/docs/siteguide/futuregrid =================================================================== --- trunk/docs/siteguide/futuregrid 2011-09-09 00:04:38 UTC (rev 5097) +++ trunk/docs/siteguide/futuregrid 2011-09-09 04:48:09 UTC (rev 5098) @@ -1,26 +1,6 @@ Futuregrid Quickstart Guide --------------------------- -Downloading and Building Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The most recent versions of Swift can be found at -http://www.ci.uchicago.edu/swift/downloads/index.php. To run on futuregrid, -you will need to download the development/trunk version from SVN. - -Adding Swift to your PATH -~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have installed Swift, add the Swift binary to your PATH so you can -easily run it from any directory. - -In your home directory, edit the file ".bashrc". - -If you have installed Swift via a source repository, add the following line -at the bottom of .bashrc. - ------ -export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin ------ - Requesting Futuregrid Access ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you do not already have a futuregrid account, you can follow the Added: trunk/docs/siteguide/mcs =================================================================== --- trunk/docs/siteguide/mcs (rev 0) +++ trunk/docs/siteguide/mcs 2011-09-09 04:48:09 UTC (rev 5098) @@ -0,0 +1,126 @@ +MCS Workstations +---------------- + +Create a coaster-service.conf +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To begin, copy the text below and paste it into your Swift distribution's etc +directory. Name the file coaster-service.conf. + +----- +include::../../tests/providers/mcs/coaster-service.conf[] +----- + +SSH Configuration +~~~~~~~~~~~~~~~~~ +For this configuration to work, you must be able to log into each of the MCS workstations +using your SSH keys. Copy your id_rsa and id_rsa.pub files into the .ssh/ directory +on login.mcs.anl.gov. Run the following commands to make sure your keys are private: + +----- +chmod 600 id_rsa +chmod 644 id_rsa.pub +----- + +Once your SSH keys are in place, create a file in .ssh/ called auth.defaults. Paste the +following text into the file: + +----- +crush.mcs.anl.gov.type=key +crush.mcs.anl.gov.username=yourusername +crush.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +crush.mcs.anl.gov.passphrase=your passphrase here + +thwomp.mcs.anl.gov.type=key +thwomp.mcs.anl.gov.username=yourusername +thwomp.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +thwomp.mcs.anl.gov.passphrase=your passphrase here + +stomp.mcs.anl.gov.type=key +stomp.mcs.anl.gov.username=yourusername +stomp.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +stomp.mcs.anl.gov.passphrase=your passphrase here + +crank.mcs.anl.gov.type=key +crank.mcs.anl.gov.username=yourusername +crank.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +crank.mcs.anl.gov.passphrase=your passphrase here + +steamroller.mcs.anl.gov.type=key +steamroller.mcs.anl.gov.username=yourusername +steamroller.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +steamroller.mcs.anl.gov.passphrase=your passphrase here + +grind.mcs.anl.gov.type=key +grind.mcs.anl.gov.username=yourusername +grind.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +grind.mcs.anl.gov.passphrase=your passphrase here + +churn.mcs.anl.gov.type=key +churn.mcs.anl.gov.username=yourusername +churn.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +churn.mcs.anl.gov.passphrase=your passphrase here + +trounce.mcs.anl.gov.type=key +trounce.mcs.anl.gov.username=yourusername +trounce.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +trounce.mcs.anl.gov.passphrase=your passphrase here + +thrash.mcs.anl.gov.type=key +thrash.mcs.anl.gov.username=yourusername +thrash.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +thrash.mcs.anl.gov.passphrase=your passphrase here + +vanquish.mcs.anl.gov.type=key +vanquish.mcs.anl.gov.username=yourusername +vanquish.mcs.anl.gov.key=/home/yourusername/.ssh/id_rsa +vanquish.mcs.anl.gov.passphrase=your passphrase here +----- + +Replace the username, key path, and passphrase with your values. +Change the permissions on the file to keep it private. + +----- +chmod 600 auth.default +----- + +Starting the Coaster Service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Change directories to the location you would like to run a +Swift script and start the coaster service with this +command: + +----- +start-coaster-service +----- + +This will create a configuration file that Swift needs +called sites.xml. + +WARNING: Any existing sites.xml files in this directory +will be overwritten. Be sure to make a copy of any +custom configuration files you may have. + +Run Swift +~~~~~~~~~ + +Next, run Swift. If you do not have a particular script +in mind, you can test Swift by using a Swift script in +the examples/ directory. + +Run the following command to run the script: +----- +swift -sites.file sites.xml -tc.file tc.data yourscript.swift +----- + +Stopping the Coaster Service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The coaster service will run indefinitely. The stop-coaster-service +script will terminate the coaster service. + +----- +$ stop-coaster-service +----- + +This will kill the coaster service and kill the worker scripts on remote systems. + Modified: trunk/docs/siteguide/siteguide.txt =================================================================== --- trunk/docs/siteguide/siteguide.txt 2011-09-09 00:04:38 UTC (rev 5097) +++ trunk/docs/siteguide/siteguide.txt 2011-09-09 04:48:09 UTC (rev 5098) @@ -16,4 +16,6 @@ include::futuregrid[] +include::mcs[] + include::grid[] Modified: trunk/tests/providers/mcs/coaster-service.conf =================================================================== --- trunk/tests/providers/mcs/coaster-service.conf 2011-09-09 00:04:38 UTC (rev 5097) +++ trunk/tests/providers/mcs/coaster-service.conf 2011-09-09 04:48:09 UTC (rev 5098) @@ -14,7 +14,9 @@ export WORKER_LOGGING=INFO # Worker host names for ssh -export WORKER_HOSTS="crush.mcs.anl.gov thwomp.mcs.anl.gov stomp.mcs.anl.gov crank.mcs.anl.gov steamroller.mcs.anl.gov grind.mcs.anl.gov churn.mcs.anl.gov trounce.mcs.anl.gov thrash.mcs.anl.gov vanquish.mcs.anl.gov" +export WORKER_HOSTS="crush.mcs.anl.gov thwomp.mcs.anl.gov stomp.mcs.anl.gov crank.mcs.anl.gov +steamroller.mcs.anl.gov grind.mcs.anl.gov churn.mcs.anl.gov trounce.mcs.anl.gov +thrash.mcs.anl.gov vanquish.mcs.anl.gov" # Directory to keep log files, relative to working directory when launching start-coaster-service export LOG_DIR=logs @@ -23,7 +25,8 @@ export LOCAL_PORT= export SERVICE_PORT= -# start-coaster-service tries to automatically detect IP address. Specify here if auto detection is not working correctly +# start-coaster-service tries to automatically detect IP address. +# Specify here if auto detection is not working correctly export IPADDR= # Below are various settings to give information about how to create sites.xml From hategan at ci.uchicago.edu Fri Sep 9 00:24:26 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Fri, 9 Sep 2011 00:24:26 -0500 (CDT) Subject: [Swift-commit] r5099 - branches/release-0.93/src/org/griphyn/vdl/karajan/lib Message-ID: <20110909052426.9FC549CCFC@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-09 00:24:26 -0500 (Fri, 09 Sep 2011) New Revision: 5099 Modified: branches/release-0.93/src/org/griphyn/vdl/karajan/lib/AppStageouts.java Log: Path.parse(path.toString()) is not guaranteed to work (and in fact it doesn't work) Modified: branches/release-0.93/src/org/griphyn/vdl/karajan/lib/AppStageouts.java =================================================================== --- branches/release-0.93/src/org/griphyn/vdl/karajan/lib/AppStageouts.java 2011-09-09 04:48:09 UTC (rev 5098) +++ branches/release-0.93/src/org/griphyn/vdl/karajan/lib/AppStageouts.java 2011-09-09 05:24:26 UTC (rev 5099) @@ -35,7 +35,7 @@ List files = TypeUtil.toList(FILES.getValue(stack)); for (Object f : files) { List pv = TypeUtil.toList(f); - Path p = Path.parse(TypeUtil.toString(pv.get(0))); + Path p = (Path) pv.get(0); DSHandle handle = (DSHandle) pv.get(1); ArgUtil.getNamedArguments(stack).add("var", handle.getField(p)); AbsFile file = new AbsFile(VDLFunction.filename(stack)[0]); From ketan at ci.uchicago.edu Fri Sep 9 13:36:40 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Fri, 9 Sep 2011 13:36:40 -0500 (CDT) Subject: [Swift-commit] r5100 - trunk/bin/grid Message-ID: <20110909183640.B49A59CCF8@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-09 13:36:40 -0500 (Fri, 09 Sep 2011) New Revision: 5100 Modified: trunk/bin/grid/gen_gridsites trunk/bin/grid/run-worker.sh trunk/bin/grid/start-grid-service trunk/bin/grid/swift-workers Log: start-grid-service local service suppressed Modified: trunk/bin/grid/gen_gridsites =================================================================== --- trunk/bin/grid/gen_gridsites 2011-09-09 05:24:26 UTC (rev 5099) +++ trunk/bin/grid/gen_gridsites 2011-09-09 18:36:40 UTC (rev 5100) @@ -29,3 +29,4 @@ # plot (print) a histogram of site aquisition over time # FIXME: move mk_test.rb to libexec/grid # check for or create valid proxy + Modified: trunk/bin/grid/run-worker.sh =================================================================== --- trunk/bin/grid/run-worker.sh 2011-09-09 05:24:26 UTC (rev 5099) +++ trunk/bin/grid/run-worker.sh 2011-09-09 18:36:40 UTC (rev 5100) @@ -12,8 +12,8 @@ logdir=$(mktemp -d $OSG_WN_TMP/${workername}.workerdir.XXXXXX) nlines=1000 -#export PATH=${OSG_APP}/engage/scec:${OSG_APP}/engage/scec/JBSim3d/bin:${OSG_APP}/engage/scec/SpectralAcceleration/p2utils:${OSG_APP}/extenci/swift/DSSAT/bin:${OSG_APP}/extenci/aashish/terfix/bin:$PATH -export PATH=${OSG_PATH}:$PATH +export PATH=${OSG_APP}/engage/scec:${OSG_APP}/engage/scec/JBSim3d/bin:${OSG_APP}/engage/scec/SpectralAcceleration/p2utils:${OSG_APP}/extenci/swift/DSSAT/bin:${OSG_APP}/extenci/aashish/terfix/bin:$PATH +#export PATH=${OSG_PATH}:$PATH echo "=== contact: $contact" echo "=== name: $workername Running in dir $(pwd)" Modified: trunk/bin/grid/start-grid-service =================================================================== --- trunk/bin/grid/start-grid-service 2011-09-09 05:24:26 UTC (rev 5099) +++ trunk/bin/grid/start-grid-service 2011-09-09 18:36:40 UTC (rev 5100) @@ -44,7 +44,7 @@ echo THROTTLE=$THROTTLE LOGLEVEL=$LOGLEVEL -coaster-service -port 1984 -localport 35753 -nosec >& local-coaster-service.out & +#coaster-service -port 1984 -localport 35753 -nosec >& local-coaster-service.out & sleep 5 start-swift-service 1 & sleep 5 Modified: trunk/bin/grid/swift-workers =================================================================== --- trunk/bin/grid/swift-workers 2011-09-09 05:24:26 UTC (rev 5099) +++ trunk/bin/grid/swift-workers 2011-09-09 18:36:40 UTC (rev 5100) @@ -148,6 +148,7 @@ site = Site.new site.name = name site.grid_resource = "gt2 #{value.url}/jobmanager-#{value.jm}" + #site.grid_resource = "fork" site.gridftp = "gsiftp://#{value.url}" site.app_dir = value.app_dir site.data_dir = value.data_dir @@ -252,4 +253,4 @@ toalc=1000 sitec = 200 20% d=100 ex=20 q=20 r=50 q=25 -=end \ No newline at end of file +=end From wilde at ci.uchicago.edu Fri Sep 9 17:53:01 2011 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Fri, 9 Sep 2011 17:53:01 -0500 (CDT) Subject: [Swift-commit] r5101 - SwiftApps/ParVis/PagodaTest Message-ID: <20110909225301.D74C89CCF8@svn.ci.uchicago.edu> Author: wilde Date: 2011-09-09 17:53:01 -0500 (Fri, 09 Sep 2011) New Revision: 5101 Added: SwiftApps/ParVis/PagodaTest/pagoda2.run.sh Log: test script Added: SwiftApps/ParVis/PagodaTest/pagoda2.run.sh =================================================================== --- SwiftApps/ParVis/PagodaTest/pagoda2.run.sh (rev 0) +++ SwiftApps/ParVis/PagodaTest/pagoda2.run.sh 2011-09-09 22:53:01 UTC (rev 5101) @@ -0,0 +1,3 @@ +#! /bin/bash + +swift -config cf -tc.file tc -sites.file mpi-local.xml pagoda2.swift -toyear=110 From tga at ci.uchicago.edu Mon Sep 12 12:29:10 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Mon, 12 Sep 2011 12:29:10 -0500 (CDT) Subject: [Swift-commit] r5102 - in SwiftApps/SwiftR: . Swift/exec Message-ID: <20110912172910.DB0D89CCFC@svn.ci.uchicago.edu> Author: tga Date: 2011-09-12 12:29:10 -0500 (Mon, 12 Sep 2011) New Revision: 5102 Modified: SwiftApps/SwiftR/IMMEDIATE-TODO SwiftApps/SwiftR/Swift/exec/start-swift Log: Now works correctly on crayxt with recompiled R. Fixed node count--This line, and those below, will be ignored-- M IMMEDIATE-TODO M Swift/exec/start-swift Modified: SwiftApps/SwiftR/IMMEDIATE-TODO =================================================================== --- SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-09 22:53:01 UTC (rev 5101) +++ SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-12 17:29:10 UTC (rev 5102) @@ -3,18 +3,9 @@ - ParallelCI and ParallelBoostrap benchmarks - smaller focused micro-tests to create plots of speed vs param size and efficiency vs runtime of the evaluated function. +HIGH: +-- OpenMx Benchmarking on Beagle - -VERY HIGH: --- get working on beagle. --- Debug Ideas: - - Minimal C program which causes issues - * Pthreads + forking - - Compile R with symbols and stack trace - - Cray debugging tools - - Might be something that happens at link time: - startup code for one of libraries - HIGH: -- sometimes the server crashes after servicing first request( only observed when running locally and on sge) Modified: SwiftApps/SwiftR/Swift/exec/start-swift =================================================================== --- SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-09 22:53:01 UTC (rev 5101) +++ SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-12 17:29:10 UTC (rev 5102) @@ -213,7 +213,7 @@ cat > $SUBMIT_FILE < Author: tga Date: 2011-09-12 17:24:01 -0500 (Mon, 12 Sep 2011) New Revision: 5103 Added: SwiftApps/SwiftR/swift-patches/ SwiftApps/SwiftR/swift-patches/swift-0.92.1-changes.patch Modified: SwiftApps/SwiftR/IMMEDIATE-TODO SwiftApps/SwiftR/Makefile SwiftApps/SwiftR/Swift/DESCRIPTION Log: *Changed build process to checkout out swift source and build directly. *Bumped version number This will ultimately make it easier to distribute a source-only package to comply with CRAN requirements. The build process now depends on subversion, which we cannot realistically assume will be present on all systems: it may be wise in the future to switch to using wget to download the source from a URL. Modified: SwiftApps/SwiftR/IMMEDIATE-TODO =================================================================== --- SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-12 17:29:10 UTC (rev 5102) +++ SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-12 22:24:01 UTC (rev 5103) @@ -1,9 +1,15 @@ + + + 3) speed: where is bottleneck? how to measure and tune? - ParallelCI and ParallelBoostrap benchmarks - smaller focused micro-tests to create plots of speed vs param size and efficiency vs runtime of the evaluated function. HIGH: +-- Check that 0.2.6 works on mac. + +HIGH: -- OpenMx Benchmarking on Beagle HIGH: Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-12 17:29:10 UTC (rev 5102) +++ SwiftApps/SwiftR/Makefile 2011-09-12 22:24:01 UTC (rev 5103) @@ -11,10 +11,13 @@ # Version: (major).(minor) SWIFTR_VERSION=$(shell sed -n -r 's/^Version:(\W*)([[:digit:]]+\.[[:digit:].]+)/\2/p' Swift/DESCRIPTION) -SW = $(shell which swift) -SWD = $(shell dirname $(SW)) -SWIFT_PATH = $(shell cd $(SWD)/..; pwd) +COG_SRC = cog-svn +SWIFT_SRC = $(COG_SRC)/modules/swift + +SWIFT_DIST = $(SWIFT_SRC)/dist/swift-svn + + TBALL=Swift_$(SWIFTR_VERSION).tar.gz @@ -22,11 +25,25 @@ build: $(TBALL) +$(COG_SRC)/.checkedout: + if [ -d $(COG_SRC) ] ; then rm -rf $(COG_SRC); fi + echo Checking out CoG source + svn co https://cogkit.svn.sourceforge.net/svnroot/cogkit/tags/swift_0.92.1 $(COG_SRC) + echo Checking out Swift source + (cd $(COG_SRC)/modules; \ + svn co https://svn.ci.uchicago.edu/svn/vdl2/tags/release-0.92.1 swift) + patch -d cog-svn/ -p0 < swift-patches/swift-0.92.1-changes.patch # hacky way to apply customisations + touch $(COG_SRC)/.checkedout + + +$(SWIFT_SRC)/.built: $(COG_SRC)/.checkedout + (cd $(SWIFT_SRC) && ant dist && touch .built) + + # Target to make sure that swift exists -Swift/inst/swift/bin/swift: - $(if $(SW),, $(error swift could not be found using which)) - mkdir -p Swift/inst/swift - cp -r $(SWIFT_PATH)/* Swift/inst/swift +Swift/inst/swift/bin/swift: $(SWIFT_SRC)/.built + mkdir -p Swift/inst/ + cp -r $(SWIFT_DIST) Swift/inst/swift publish: $(TBALL) cp $(TBALL) ~/public_html @@ -41,9 +58,11 @@ Rscript Swift/tests/runtests.R clean: - rm -rf Swift/inst/swift/* - rm $(TBALL) + rm -rf $(COG_SRC) + rm -rf Swift/inst/swift/ + rm -f $(TBALL) + $(TBALL): Swift/inst/swift/bin/swift $(PKG_FILES) Makefile - if [ -d .svn -a -x "`which svn`" ]; then svn info > Swift/svninfo; fi R CMD build Swift Modified: SwiftApps/SwiftR/Swift/DESCRIPTION =================================================================== --- SwiftApps/SwiftR/Swift/DESCRIPTION 2011-09-12 17:29:10 UTC (rev 5102) +++ SwiftApps/SwiftR/Swift/DESCRIPTION 2011-09-12 22:24:01 UTC (rev 5103) @@ -1,12 +1,12 @@ Package: Swift Type: Package Title: R interface to Swift parallel scripting languaage -Version: 0.2.5 -Date: 2011-06-07 +Version: 0.2.6 +Date: 2011-09-12 Author: Michael Wilde Maintainer: Michael Wilde Description: Routines to invoke R functions on remote resources through Swift. License: Apache License LazyLoad: yes -Packaged: 2011-06-07; Tim Armstrong +Packaged: 2011-09-12; Tim Armstrong Added: SwiftApps/SwiftR/swift-patches/swift-0.92.1-changes.patch =================================================================== --- SwiftApps/SwiftR/swift-patches/swift-0.92.1-changes.patch (rev 0) +++ SwiftApps/SwiftR/swift-patches/swift-0.92.1-changes.patch 2011-09-12 22:24:01 UTC (rev 5103) @@ -0,0 +1,13 @@ +Index: modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/CoasterService.java +=================================================================== +--- modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/CoasterService.java (revision 3145) ++++ modules/provider-coaster/src/org/globus/cog/abstraction/coaster/service/CoasterService.java (working copy) +@@ -41,7 +41,7 @@ + public static final Logger logger = Logger + .getLogger(CoasterService.class); + +- public static final int IDLE_TIMEOUT = 120 * 1000; ++ public static final int IDLE_TIMEOUT = 120 * 1000 /* extend it: */ * 30 * 240; + + public static final int CONNECT_TIMEOUT = 2 * 60 * 1000; + From davidk at ci.uchicago.edu Mon Sep 12 18:11:55 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Mon, 12 Sep 2011 18:11:55 -0500 (CDT) Subject: [Swift-commit] r5104 - in trunk: bin tests/groups tests/language-behaviour/datatypes Message-ID: <20110912231155.CCD5F9CCFC@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-12 18:11:55 -0500 (Mon, 12 Sep 2011) New Revision: 5104 Added: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected trunk/tests/language-behaviour/datatypes/056-struct-stage-out.c.expected trunk/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh trunk/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh trunk/tests/language-behaviour/datatypes/056-struct-stage-out.swift Modified: trunk/bin/swift trunk/tests/groups/group-all-local.sh Log: Add test for staging out structs Use language-behavior/datatypes tests Fix syntax error in swift script Modified: trunk/bin/swift =================================================================== --- trunk/bin/swift 2011-09-12 22:24:01 UTC (rev 5103) +++ trunk/bin/swift 2011-09-12 23:11:55 UTC (rev 5104) @@ -64,7 +64,7 @@ # make sure sites.xml file is well-formed $SWIFT_HOME/bin/chxml $CMDLINE -if [[ ${?} != 0 ]]; then +if [ "$?" != 0 ]; then echo "Could not process input files!" exit 1 fi Modified: trunk/tests/groups/group-all-local.sh =================================================================== --- trunk/tests/groups/group-all-local.sh 2011-09-12 22:24:01 UTC (rev 5103) +++ trunk/tests/groups/group-all-local.sh 2011-09-12 23:11:55 UTC (rev 5104) @@ -11,6 +11,7 @@ $TESTDIR/language-behaviour/broken \ $TESTDIR/language-behaviour/compounds \ $TESTDIR/language-behaviour/control_structures \ + $TESTDIR/language-behaviour/datatypes \ $TESTDIR/language-behaviour/IO \ $TESTDIR/language-behaviour/iterators \ $TESTDIR/language-behaviour/logic \ Added: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected =================================================================== --- trunk/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected (rev 0) +++ trunk/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected 2011-09-12 23:11:55 UTC (rev 5104) @@ -0,0 +1 @@ +foo Added: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.c.expected =================================================================== Added: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh =================================================================== --- trunk/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh (rev 0) +++ trunk/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh 2011-09-12 23:11:55 UTC (rev 5104) @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "b 056-struct-stage-out.b" +echo "c 056-struct-stage-out.c" Property changes on: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh =================================================================== --- trunk/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh (rev 0) +++ trunk/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh 2011-09-12 23:11:55 UTC (rev 5104) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/056-struct-stage-out.mapper.sh . || exit 1 Property changes on: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/language-behaviour/datatypes/056-struct-stage-out.swift =================================================================== --- trunk/tests/language-behaviour/datatypes/056-struct-stage-out.swift (rev 0) +++ trunk/tests/language-behaviour/datatypes/056-struct-stage-out.swift 2011-09-12 23:11:55 UTC (rev 5104) @@ -0,0 +1,14 @@ +type file; + +type struct { + file b; + file c; +} + +app (struct of) echo() { + echo "foo" stdout=@filename(of.b) stderr=@filename(of.c); +} + +struct s ; + +s = echo(); From davidk at ci.uchicago.edu Mon Sep 12 19:25:14 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Mon, 12 Sep 2011 19:25:14 -0500 (CDT) Subject: [Swift-commit] r5105 - in branches/release-0.93/tests: groups language-behaviour/datatypes Message-ID: <20110913002514.C08D89CCFC@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-12 19:25:14 -0500 (Mon, 12 Sep 2011) New Revision: 5105 Added: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.c.expected branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.swift Modified: branches/release-0.93/tests/groups/group-all-local.sh Log: Add datatype tests and staging out a struct Modified: branches/release-0.93/tests/groups/group-all-local.sh =================================================================== --- branches/release-0.93/tests/groups/group-all-local.sh 2011-09-12 23:11:55 UTC (rev 5104) +++ branches/release-0.93/tests/groups/group-all-local.sh 2011-09-13 00:25:14 UTC (rev 5105) @@ -11,6 +11,7 @@ $TESTDIR/language-behaviour/broken \ $TESTDIR/language-behaviour/compounds \ $TESTDIR/language-behaviour/control_structures \ + $TESTDIR/language-behaviour/datatypes \ $TESTDIR/language-behaviour/IO \ $TESTDIR/language-behaviour/logic \ $TESTDIR/language-behaviour/mappers \ Added: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected =================================================================== --- branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected (rev 0) +++ branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.b.expected 2011-09-13 00:25:14 UTC (rev 5105) @@ -0,0 +1 @@ +foo Added: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.c.expected =================================================================== Added: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh =================================================================== --- branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh (rev 0) +++ branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh 2011-09-13 00:25:14 UTC (rev 5105) @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "b 056-struct-stage-out.b" +echo "c 056-struct-stage-out.c" Property changes on: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.mapper.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh =================================================================== --- branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh (rev 0) +++ branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh 2011-09-13 00:25:14 UTC (rev 5105) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/056-struct-stage-out.mapper.sh . || exit 1 Property changes on: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.swift =================================================================== --- branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.swift (rev 0) +++ branches/release-0.93/tests/language-behaviour/datatypes/056-struct-stage-out.swift 2011-09-13 00:25:14 UTC (rev 5105) @@ -0,0 +1,14 @@ +type file; + +type struct { + file b; + file c; +} + +app (struct of) echo() { + echo "foo" stdout=@filename(of.b) stderr=@filename(of.c); +} + +struct s ; + +s = echo(); From wozniak at ci.uchicago.edu Tue Sep 13 13:38:54 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 13 Sep 2011 13:38:54 -0500 (CDT) Subject: [Swift-commit] r5106 - trunk/tests/mpi/crow/long Message-ID: <20110913183854.AEF0A9CCFC@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-13 13:38:54 -0500 (Tue, 13 Sep 2011) New Revision: 5106 Modified: trunk/tests/mpi/crow/long/ Log: Set ignores Property changes on: trunk/tests/mpi/crow/long ___________________________________________________________________ Added: svn:ignore + mpi-sleep From wozniak at ci.uchicago.edu Tue Sep 13 13:39:57 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Tue, 13 Sep 2011 13:39:57 -0500 (CDT) Subject: [Swift-commit] r5107 - trunk/tests Message-ID: <20110913183957.C7A969CCFC@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-13 13:39:57 -0500 (Tue, 13 Sep 2011) New Revision: 5107 Modified: trunk/tests/ Log: Set ignores Property changes on: trunk/tests ___________________________________________________________________ Modified: svn:ignore - tc.data + *.html tc.data From hategan at ci.uchicago.edu Tue Sep 13 16:18:28 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Tue, 13 Sep 2011 16:18:28 -0500 (CDT) Subject: [Swift-commit] r5108 - trunk/src/org/griphyn/vdl/engine Message-ID: <20110913211828.97B989CCBF@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-13 16:18:28 -0500 (Tue, 13 Sep 2011) New Revision: 5108 Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java Log: fixed case issues with procs Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java =================================================================== --- trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-13 18:39:57 UTC (rev 5107) +++ trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-13 21:18:28 UTC (rev 5108) @@ -254,7 +254,7 @@ Set procsDefined = new HashSet() ; for (int i = 0; i < prog.sizeOfProcedureArray(); i++) { Procedure proc = prog.getProcedureArray(i); - String procName = proc.getName().toLowerCase(); + String procName = proc.getName(); if (procsDefined.contains(procName)){ // We have a redefinition error throw new CompilationException("Illegal redefinition of procedure attempted for " + procName ); @@ -326,7 +326,7 @@ StringTemplate procST = template("procedure"); containingScope.bodyTemplate.setAttribute("procedures", procST); procST.setAttribute("line", proc.getSrc().substring(proc.getSrc().indexOf(' ') + 1)); - procST.setAttribute("name", proc.getName()); + procST.setAttribute("name", mangle(proc.getName())); for (int i = 0; i < proc.sizeOfOutputArray(); i++) { FormalParameter param = proc.getOutputArray(i); StringTemplate paramST = parameter(param, innerScope); @@ -365,7 +365,23 @@ } } - public StringTemplate parameter(FormalParameter param, VariableScope scope) throws CompilationException { + /** + * Convert to a case-insensitive representation by + * pre-pending a '^' to upper case letters + */ + private String mangle(String name) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < name.length(); i++) { + char c = name.charAt(i); + if (Character.isUpperCase(c)) { + sb.append('-'); + } + sb.append(Character.toLowerCase(c)); + } + return sb.toString(); + } + + public StringTemplate parameter(FormalParameter param, VariableScope scope) throws CompilationException { StringTemplate paramST = new StringTemplate("parameter"); StringTemplate typeST = new StringTemplate("type"); paramST.setAttribute("name", param.getName()); @@ -624,7 +640,7 @@ throw new CompilationException ("Unknown procedure invocation mode "+proc.getInvocationMode()); } - callST.setAttribute("func", call.getProc().getLocalPart()); + callST.setAttribute("func", mangle(procName)); /* Does number of input arguments match */ for (int i = 0; i < proc.sizeOfInputArray(); i++) { if (proc.getInputArray(i).isOptional()) From ketan at ci.uchicago.edu Wed Sep 14 11:27:07 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Wed, 14 Sep 2011 11:27:07 -0500 (CDT) Subject: [Swift-commit] r5110 - SwiftApps/DSSAT/beagle Message-ID: <20110914162707.D3A709CD16@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-14 11:27:07 -0500 (Wed, 14 Sep 2011) New Revision: 5110 Added: SwiftApps/DSSAT/beagle/sites.beagle-short.xml SwiftApps/DSSAT/beagle/tc Log: added sites.xml for beagle Added: SwiftApps/DSSAT/beagle/sites.beagle-short.xml =================================================================== --- SwiftApps/DSSAT/beagle/sites.beagle-short.xml (rev 0) +++ SwiftApps/DSSAT/beagle/sites.beagle-short.xml 2011-09-14 16:27:07 UTC (rev 5110) @@ -0,0 +1,21 @@ + + + + CI-CCR000013 + + + KEEP + + 24 + pbs.aprun;pbs.mpp;depth=24 + 1400 + 00:20:00 + 1 + 1 + 1 + 0.99 + 10000 + + /lustre/beagle/ketan + + Added: SwiftApps/DSSAT/beagle/tc =================================================================== --- SwiftApps/DSSAT/beagle/tc (rev 0) +++ SwiftApps/DSSAT/beagle/tc 2011-09-14 16:27:07 UTC (rev 5110) @@ -0,0 +1,36 @@ +#This is the transformation catalog. +# +#It comes pre-configured with a number of simple transformations with +#paths that are likely to work on a linux box. However, on some systems, +#the paths to these executables will be different (for example, sometimes +#some of these programs are found in /usr/bin rather than in /bin) +# +#NOTE WELL: fields in this file must be separated by tabs, not spaces; and +#there must be no trailing whitespace at the end of each line. +# +# site transformation path obsolete fields for compatibility + +localhost echo /bin/echo null null null +localhost cat /bin/cat null null null +localhost ls /bin/ls null null null +localhost grep /bin/grep null null null +localhost sort /bin/sort null null null +localhost paste /bin/paste null null null +localhost pwd /bin/pwd null null null + +# For cluster usage + +#pbs RunDSSAT /lustre/beagle/swift/papia/DSSAT/bin/RunDSSAT.sh null null null +pbs RunDSSAT /lustre/beagle/ketan/labs/DSSAT/bin/RunDSSAT.sh null null null +#pbs gridCheck /lustre/beagle/swift/papia/DSSAT/bin/gridCheck.sh null null null +pbs gridCheck /lustre/beagle/ketan/labs/DSSAT/bin/gridCheck.sh null null null + + + +# For localhost testing + +#localhost RunDSSAT /gpfs/pads/swift/ketan/DSSAT/bin/RunDSSAT.sh null null null +#localhost gridCheck /gpfs/pads/swift/ketan/DSSAT/bin/gridCheck.sh null null null + + + From davidk at ci.uchicago.edu Wed Sep 14 12:31:06 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 14 Sep 2011 12:31:06 -0500 (CDT) Subject: [Swift-commit] r5111 - branches/release-0.93/docs/siteguide Message-ID: <20110914173106.4D71E9CCBF@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-14 12:31:06 -0500 (Wed, 14 Sep 2011) New Revision: 5111 Added: branches/release-0.93/docs/siteguide/fusion Modified: branches/release-0.93/docs/siteguide/siteguide.txt Log: Fusion siteguide Added: branches/release-0.93/docs/siteguide/fusion =================================================================== --- branches/release-0.93/docs/siteguide/fusion (rev 0) +++ branches/release-0.93/docs/siteguide/fusion 2011-09-14 17:31:06 UTC (rev 5111) @@ -0,0 +1,123 @@ +Fusion +---- + +Fusion Quickstart +~~~~~~~~~~~~~~~ +This section will walk you through running a simple Swift script +on Fusion. + +Creating sites.xml +^^^^^^^^^^^^^^^^^^ +Swift relies on various configuration files to determine how to +run. This section will provide a working configuration file which +you can copy and paste to get running quickly. The sites.xml file +tells Swift how to submit jobs, where working directories are +located, and various other configuration information. More +information on sites.xml can be found in the Swift User's Guide. + +The first step is to paste the text below into a file named sites.xml. + +----- +include::../../tests/providers/fusion/sites.template.xml[] +----- + +This file will require one customization. Create a +directory called swiftwork. Modify \_WORK_ in sites.xml +to point to this new directory. For example +----- +/home/myhome/swiftwork +----- + +Creating tc.data +^^^^^^^^^^^^^^^^ +The tc.data configuration file gives information about the applications +that will be called by Swift. More information about the format +of tc.data can be found in the Swift User's guide. + +Paste the following example into a file named tc.data + +----- +include::../../tests/providers/fusion/tc.template.data[] +----- + +Copy a Swift Script +^^^^^^^^^^^^^^^^^^^ + +Within the Swift directory is an examples directory which contains +several introductory Swift scripts. The example we will use in this +section is called catsn.swift. Copy this script to the same directory +that your sites.xml and tc.data files are located. + +----- +$ cp ~/swift-0.93/examples/misc/catsn.swift . +$ cp ~/swift-0.93/examples/misc/data.txt . +----- +TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. + +Run Swift +^^^^^^^^^ + +Finally, run the script +----- +$ swift -sites.file sites.xml -tc.file tc.data catsn.swift +----- + +You should see 10 new text files get created, named catsn*.out. If +you see these files, then you have succesfully run Swift on Fusion! + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have a Fusion account, you can request one at +https://accounts.lcrc.anl.gov/request.php. Email support at lcrc.anl.gov +for additional help. + +SSH Keys +~~~~~~~~ +Before accessing Fusion, be sure to have your SSH keys configured correctly. +SSH keys are required to access fusion. You should see information about +this when you request your account. Email support at lcrc.anl.gov for +additional help. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Once your keys are configured, you should be able to access a Fusion login +node with the following command: + +----- +ssh yourusername at fusion.lcrc.anl.gov +----- + +Projects +~~~~~~~~ +In order to run a job on a Fusion compute node, you must first be associated +with a project. + +Each project has one or more Primary Investigators, or PIs. These PIs are +responsible for adding and removing users to a project. Contact the PI of +your project to be added. + +More information on this process can be found at +http://www.lcrc.anl.gov/info/Projects. + +Queues +~~~~~~ +Fusion has two queues: shared and batch. The shared queue has a maximum 1 +hour walltime and limited to 4 nodes. The batch queue is for all other +jobs. + +Edit your sites.xml file and edit the queue option to modify Swift's +behavior. For example: + +----- +batch +----- + +More information on Fusion queues can be found at +http://www.lcrc.anl.gov/info/BatchJobs. + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. + + Modified: branches/release-0.93/docs/siteguide/siteguide.txt =================================================================== --- branches/release-0.93/docs/siteguide/siteguide.txt 2011-09-14 16:27:07 UTC (rev 5110) +++ branches/release-0.93/docs/siteguide/siteguide.txt 2011-09-14 17:31:06 UTC (rev 5111) @@ -10,6 +10,8 @@ include::pads[] +include::fusion[] + include::beagle[] include::futuregrid[] From davidk at ci.uchicago.edu Wed Sep 14 12:32:25 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 14 Sep 2011 12:32:25 -0500 (CDT) Subject: [Swift-commit] r5112 - trunk/docs/siteguide Message-ID: <20110914173225.0A90D9CCBF@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-14 12:32:24 -0500 (Wed, 14 Sep 2011) New Revision: 5112 Added: trunk/docs/siteguide/fusion Modified: trunk/docs/siteguide/siteguide.txt Log: Fusion siteguide Added: trunk/docs/siteguide/fusion =================================================================== --- trunk/docs/siteguide/fusion (rev 0) +++ trunk/docs/siteguide/fusion 2011-09-14 17:32:24 UTC (rev 5112) @@ -0,0 +1,123 @@ +Fusion +---- + +Fusion Quickstart +~~~~~~~~~~~~~~~ +This section will walk you through running a simple Swift script +on Fusion. + +Creating sites.xml +^^^^^^^^^^^^^^^^^^ +Swift relies on various configuration files to determine how to +run. This section will provide a working configuration file which +you can copy and paste to get running quickly. The sites.xml file +tells Swift how to submit jobs, where working directories are +located, and various other configuration information. More +information on sites.xml can be found in the Swift User's Guide. + +The first step is to paste the text below into a file named sites.xml. + +----- +include::../../tests/providers/fusion/sites.template.xml[] +----- + +This file will require one customization. Create a +directory called swiftwork. Modify \_WORK_ in sites.xml +to point to this new directory. For example +----- +/home/myhome/swiftwork +----- + +Creating tc.data +^^^^^^^^^^^^^^^^ +The tc.data configuration file gives information about the applications +that will be called by Swift. More information about the format +of tc.data can be found in the Swift User's guide. + +Paste the following example into a file named tc.data + +----- +include::../../tests/providers/fusion/tc.template.data[] +----- + +Copy a Swift Script +^^^^^^^^^^^^^^^^^^^ + +Within the Swift directory is an examples directory which contains +several introductory Swift scripts. The example we will use in this +section is called catsn.swift. Copy this script to the same directory +that your sites.xml and tc.data files are located. + +----- +$ cp ~/swift-0.93/examples/misc/catsn.swift . +$ cp ~/swift-0.93/examples/misc/data.txt . +----- +TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. + +Run Swift +^^^^^^^^^ + +Finally, run the script +----- +$ swift -sites.file sites.xml -tc.file tc.data catsn.swift +----- + +You should see 10 new text files get created, named catsn*.out. If +you see these files, then you have succesfully run Swift on Fusion! + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have a Fusion account, you can request one at +https://accounts.lcrc.anl.gov/request.php. Email support at lcrc.anl.gov +for additional help. + +SSH Keys +~~~~~~~~ +Before accessing Fusion, be sure to have your SSH keys configured correctly. +SSH keys are required to access fusion. You should see information about +this when you request your account. Email support at lcrc.anl.gov for +additional help. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Once your keys are configured, you should be able to access a Fusion login +node with the following command: + +----- +ssh yourusername at fusion.lcrc.anl.gov +----- + +Projects +~~~~~~~~ +In order to run a job on a Fusion compute node, you must first be associated +with a project. + +Each project has one or more Primary Investigators, or PIs. These PIs are +responsible for adding and removing users to a project. Contact the PI of +your project to be added. + +More information on this process can be found at +http://www.lcrc.anl.gov/info/Projects. + +Queues +~~~~~~ +Fusion has two queues: shared and batch. The shared queue has a maximum 1 +hour walltime and limited to 4 nodes. The batch queue is for all other +jobs. + +Edit your sites.xml file and edit the queue option to modify Swift's +behavior. For example: + +----- +batch +----- + +More information on Fusion queues can be found at +http://www.lcrc.anl.gov/info/BatchJobs. + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. + + Modified: trunk/docs/siteguide/siteguide.txt =================================================================== --- trunk/docs/siteguide/siteguide.txt 2011-09-14 17:31:06 UTC (rev 5111) +++ trunk/docs/siteguide/siteguide.txt 2011-09-14 17:32:24 UTC (rev 5112) @@ -10,6 +10,8 @@ include::pads[] +include::fusion[] + include::beagle[] include::intrepid[] From wozniak at ci.uchicago.edu Wed Sep 14 13:02:40 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 14 Sep 2011 13:02:40 -0500 (CDT) Subject: [Swift-commit] r5113 - usertools/persistent-coasters Message-ID: <20110914180240.979B69CCBF@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-14 13:02:40 -0500 (Wed, 14 Sep 2011) New Revision: 5113 Modified: usertools/persistent-coasters/ Log: Set ignores Property changes on: usertools/persistent-coasters ___________________________________________________________________ Modified: svn:ignore - logs sites.passivate.xml sites.xml gensites.sed passivate.kml passivate.xml system-info.kml system-info.xml + logs sites.passivate.xml sites.xml gensites.sed passivate.kml passivate.xml system-info.kml system-info.xml README.html From tga at ci.uchicago.edu Wed Sep 14 13:22:30 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Wed, 14 Sep 2011 13:22:30 -0500 (CDT) Subject: [Swift-commit] r5114 - in SwiftApps/SwiftR: . Swift Swift/src Swift/src/swift-patches Message-ID: <20110914182230.9B4979CD16@svn.ci.uchicago.edu> Author: tga Date: 2011-09-14 13:22:30 -0500 (Wed, 14 Sep 2011) New Revision: 5114 Added: SwiftApps/SwiftR/Swift/src/ SwiftApps/SwiftR/Swift/src/Makefile SwiftApps/SwiftR/Swift/src/download-src.sh SwiftApps/SwiftR/Swift/src/make.include SwiftApps/SwiftR/Swift/src/swift-patches/ SwiftApps/SwiftR/checkout-swift.sh Removed: SwiftApps/SwiftR/swift-patches/ Modified: SwiftApps/SwiftR/IMMEDIATE-TODO SwiftApps/SwiftR/Makefile Log: Changed built process to generate CRAN and full versions of package, and to support downloading swiftsrc via wget Modified: SwiftApps/SwiftR/IMMEDIATE-TODO =================================================================== --- SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-14 18:02:40 UTC (rev 5113) +++ SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-14 18:22:30 UTC (rev 5114) @@ -2,14 +2,7 @@ -3) speed: where is bottleneck? how to measure and tune? -- ParallelCI and ParallelBoostrap benchmarks -- smaller focused micro-tests to create plots of speed vs param size and efficiency vs runtime of the evaluated function. - HIGH: --- Check that 0.2.6 works on mac. - -HIGH: -- OpenMx Benchmarking on Beagle HIGH: @@ -17,10 +10,18 @@ only observed when running locally and on sge) HIGH: +-- Merge canonical portions of wiki documentation into R man pages +-- Generate html from R man pages + +HIGH: -- Benchmark ideas - Beagle - Sarah Kenny FMRI +3) speed: where is bottleneck? how to measure and tune? +- ParallelCI and ParallelBoostrap benchmarks +- smaller focused micro-tests to create plots of speed vs param size and efficiency vs runtime of the evaluated function. + MED: -- Have a more user-friendly way to specify some of the more common custom setups: Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-14 18:02:40 UTC (rev 5113) +++ SwiftApps/SwiftR/Makefile 2011-09-14 18:22:30 UTC (rev 5114) @@ -1,74 +1,106 @@ +include Swift/src/make.include + # All files that go into package PKG_FILES = $(shell find Swift/R -name '*.R'; find Swift/man -name '*.Rd'; find Swift/exec/ -type f -not -path '*/.svn*'; find Swift/inst/ -type f -not -path '*/.svn*') + PKG_FILES += Swift/DESCRIPTION -PKG_FILES += Swift/NAMESPACE +PKG_FILES += Swift/NAMESPACE +PKG_FILE += Swift/src/Makefile Swift/src/make.include Swift/src/download-src.sh +PKG_FILES += $(shell find Swift/src/swift-patches -not -path '*/.svn*') +PACKAGE_DEPS = $(PKG_FILES) Makefile # Extract the version number from the R package description file # There should be a line in the file of the form: # Version: (major).(minor) SWIFTR_VERSION=$(shell sed -n -r 's/^Version:(\W*)([[:digit:]]+\.[[:digit:].]+)/\2/p' Swift/DESCRIPTION) -COG_SRC = cog-svn -SWIFT_SRC = $(COG_SRC)/modules/swift +GEN_PKG_NAME=Swift_$(SWIFTR_VERSION).tar.gz +FULL_PKG=Swift_$(SWIFTR_VERSION)_full.tar.gz +CRAN_PKG=Swift_$(SWIFTR_VERSION)_cran.tar.gz -SWIFT_DIST = $(SWIFT_SRC)/dist/swift-svn +COG_SRC = cog-svn -TBALL=Swift_$(SWIFTR_VERSION).tar.gz +SWIFT_SRC = $(COG_SRC)/modules/swift -all: build +SWIFT_DIST = $(SWIFT_SRC)/dist/swift-svn -build: $(TBALL) +SWIFT_INST = Swift/inst/swift -$(COG_SRC)/.checkedout: - if [ -d $(COG_SRC) ] ; then rm -rf $(COG_SRC); fi - echo Checking out CoG source - svn co https://cogkit.svn.sourceforge.net/svnroot/cogkit/tags/swift_0.92.1 $(COG_SRC) - echo Checking out Swift source - (cd $(COG_SRC)/modules; \ - svn co https://svn.ci.uchicago.edu/svn/vdl2/tags/release-0.92.1 swift) - patch -d cog-svn/ -p0 < swift-patches/swift-0.92.1-changes.patch # hacky way to apply customisations - touch $(COG_SRC)/.checkedout +SWIFT_PATCH_DIR = Swift/src/swift-patches +all: $(FULL_PKG) $(CRAN_PKG) -$(SWIFT_SRC)/.built: $(COG_SRC)/.checkedout - (cd $(SWIFT_SRC) && ant dist && touch .built) +build: $(FULL_PKG) +install: $(FULL_PKG) + R CMD INSTALL $(FULL_PKG) -# Target to make sure that swift exists -Swift/inst/swift/bin/swift: $(SWIFT_SRC)/.built - mkdir -p Swift/inst/ - cp -r $(SWIFT_DIST) Swift/inst/swift +installcran: $(CRAN_PKG) + R CMD INSTALL $(CRAN_PKG) -publish: $(TBALL) - cp $(TBALL) ~/public_html -install: $(TBALL) - R CMD INSTALL $(TBALL) +check: $(FULL_PKG) + R CMD check $(FULL_PKG) -check: $(TBALL) - R CMD check $(TBALL) +checkcran: $(CRAN_PKG) + R CMD check $(CRAN_PKG) test: install Rscript Swift/tests/runtests.R +testcran: installcran + Rscript Swift/tests/runtests.R + clean: - rm -rf $(COG_SRC) - rm -rf Swift/inst/swift/ - rm -f $(TBALL) + rm -f ./$(FULL_PKG) + rm -f ./$(CRAN_PKG) + rm -rf ./$(SWIFT_INST) + rm -rf ./$(COG_SRC) -$(TBALL): Swift/inst/swift/bin/swift $(PKG_FILES) Makefile +$(CRAN_PKG): $(PACKAGE_DEPS) $(SWIFT_SRC_NAME).shasum - if [ -d .svn -a -x "`which svn`" ]; then svn info > Swift/svninfo; fi + (cd Swift/src; make removeall) + cp $(SWIFT_SRC_NAME).shasum Swift/src R CMD build Swift + mv $(GEN_PKG_NAME) $(CRAN_PKG) +$(FULL_PKG): $(PACKAGE_DEPS) $(SWIFT_SRC)/.built + mkdir -p Swift/inst + rm -Rf ./$(SWIFT_INST) + cp -r $(SWIFT_DIST) $(SWIFT_INST) + - if [ -d .svn -a -x "`which svn`" ]; then svn info > Swift/svninfo; fi + R CMD build Swift + mv $(GEN_PKG_NAME) $(FULL_PKG) +swiftsrc: $(SWIFT_SRC_NAME).shasum $(SWIFT_SRC_NAME).tar.gz + +$(SWIFT_SRC_NAME).tar.gz: + sh checkout-swift.sh $(SWIFT_SRC_NAME) $(SWIFT_PATCH_DIR)/$(SWIFT_SRC_PATCH) $(SWIFT_SRC_TAG) $(COG_SRC_TAG) + cp -r $(SWIFT_PATCH_DIR) $(SWIFT_SRC_NAME)/SwiftR-patches + tar cvvzf $(SWIFT_SRC_NAME).tar.gz $(SWIFT_SRC_NAME) + rm -rf ./$(SWIFT_SRC_NAME) + +$(SWIFT_SRC_NAME).shasum: $(SWIFT_SRC_NAME).tar.gz + shasum $(SWIFT_SRC_NAME).tar.gz > $(SWIFT_SRC_NAME).shasum + + + + +$(SWIFT_SRC)/.built: $(COG_SRC)/.checkedout + (cd $(SWIFT_SRC) && ant dist && touch .built) + +$(COG_SRC)/.checkedout: Swift/src/Makefile + sh checkout-swift.sh $(COG_SRC) $(SWIFT_PATCH_DIR)/$(SWIFT_SRC_PATCH) $(SWIFT_SRC_TAG) $(COG_SRC_TAG) + touch $(COG_SRC)/.checkedout + checkversion: echo SwiftR version is $(SWIFTR_VERSION) according to Swift/DESCRIPTION file Added: SwiftApps/SwiftR/Swift/src/Makefile =================================================================== --- SwiftApps/SwiftR/Swift/src/Makefile (rev 0) +++ SwiftApps/SwiftR/Swift/src/Makefile 2011-09-14 18:22:30 UTC (rev 5114) @@ -0,0 +1,45 @@ +# This is a makefile that checks outs and builds Swift +# This is done to allow distribution of a pure source-only Swift package +# A fresh copy of the source is only checked out if swift isn't included +# in the package. +include make.include + + +SWIFT_MODULE_SRC = $(SWIFT_SRC_NAME)/modules/swift + +SWIFT_DIST = $(SWIFT_MODULE_SRC)/dist/swift-svn + +SWIFT_INST = ../inst/swift + +SWIFT_BIN = $(SWIFT_INST)/bin/swift + +all: $(SWIFT_BIN) + +$(SWIFT_SRC_NAME)/.downloadedok: + # hack to avoid redoing + if [ ! -f $(SWIFT_BIN) ]; then \ + sh ./download-src.sh $(SWIFT_SRC_NAME) && \ + touch $(SWIFT_SRC_NAME)/.downloadedok ; \ + fi + + +$(SWIFT_MODULE_SRC)/.built: $(SWIFT_SRC_NAME)/.downloadedok + # hack to avoid rebuilding + if [ ! -f $(SWIFT_BIN) ]; then \ + (cd $(SWIFT_MODULE_SRC) && ant dist && touch .built); \ + fi + +# Target to make sure that swift exists +$(SWIFT_BIN): $(SWIFT_MODULE_SRC)/.built + # hack to avoid recopying + if [ ! -f $(SWIFT_BIN) ]; then \ + mkdir -p ../inst && \ + rm -Rf ./$(SWIFT_INST) && \ + cp -r $(SWIFT_DIST) $(SWIFT_INST); \ + fi + +removeall: removesrc + rm -rf ./$(SWIFT_INST) + +removesrc: + rm -rf ./$(SWIFT_SRC_NAME) Added: SwiftApps/SwiftR/Swift/src/download-src.sh =================================================================== --- SwiftApps/SwiftR/Swift/src/download-src.sh (rev 0) +++ SwiftApps/SwiftR/Swift/src/download-src.sh 2011-09-14 18:22:30 UTC (rev 5114) @@ -0,0 +1,13 @@ +#!/bin/sh +set -e +SWIFT_SRC_NAME=$1 + +if [ "$SWIFT_SRC_NAME" = "" ] ; then + echo Package name not specified + exit 1 +fi + +wget http://cs.uchicago.edu/~tga/swiftR/swift-source/${SWIFT_SRC_NAME}.tar.gz +shasum --check ${SWIFT_SRC_NAME}.shasum + +tar xvzf ${SWIFT_SRC_NAME}.tar.gz Added: SwiftApps/SwiftR/Swift/src/make.include =================================================================== --- SwiftApps/SwiftR/Swift/src/make.include (rev 0) +++ SwiftApps/SwiftR/Swift/src/make.include 2011-09-14 18:22:30 UTC (rev 5114) @@ -0,0 +1,6 @@ +# Variables shared between makefiles + +SWIFT_SRC_TAG = release-0.92.1 +COG_SRC_TAG = swift_0.92.1 +SWIFT_SRC_NAME = swift-0.92.1-SwiftR-r1 +SWIFT_SRC_PATCH = swift-0.92.1-changes.patch Property changes on: SwiftApps/SwiftR/Swift/src/swift-patches ___________________________________________________________________ Added: svn:mergeinfo + Added: SwiftApps/SwiftR/checkout-swift.sh =================================================================== --- SwiftApps/SwiftR/checkout-swift.sh (rev 0) +++ SwiftApps/SwiftR/checkout-swift.sh 2011-09-14 18:22:30 UTC (rev 5114) @@ -0,0 +1,31 @@ +#!/bin/sh +set -e +COG_SRC=$1 +SWIFT_PATCH=$2 +SWIFT_TAG=$3 +COG_TAG=$4 + +if [ "$COG_SRC" = "" ] ; then + COG_SRC=cogsrc +fi + +if [ "$SWIFT_TAG" = "" ] ; then + echo Need to provide Swift tag + exit 1 +fi + +if [ "$COG_TAG" = "" ] ; then + echo Need to provide CoG tag + exit 1 +fi + +if [ -d ${COG_SRC} ] ; then rm -rf ${COG_SRC}; fi + +echo Checking out CoG source + +svn export https://cogkit.svn.sourceforge.net/svnroot/cogkit/tags/${COG_TAG} ${COG_SRC} +echo Checking out Swift source +(cd ${COG_SRC}/modules && + svn export https://svn.ci.uchicago.edu/svn/vdl2/tags/${SWIFT_TAG} swift) + +patch -d ${COG_SRC} -p0 < $SWIFT_PATCH From wozniak at ci.uchicago.edu Wed Sep 14 13:27:36 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 14 Sep 2011 13:27:36 -0500 (CDT) Subject: [Swift-commit] r5115 - trunk/libexec Message-ID: <20110914182736.5760C9CD16@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-14 13:27:36 -0500 (Wed, 14 Sep 2011) New Revision: 5115 Modified: trunk/libexec/_swiftwrap Log: Use PMI_RANK (MPI Process Manager Interface) to determine info file name Modified: trunk/libexec/_swiftwrap =================================================================== --- trunk/libexec/_swiftwrap 2011-09-14 18:22:30 UTC (rev 5114) +++ trunk/libexec/_swiftwrap 2011-09-14 18:27:36 UTC (rev 5115) @@ -6,7 +6,7 @@ DEBUG=0 infosection() { - echo >& "$INFO" + echo >& "$INFO" echo "_____________________________________________________________________________" >& "$INFO" echo >& "$INFO" echo " $1" >& "$INFO" @@ -232,9 +232,10 @@ if [ -z $MPI_RANK ]; then INFOFILE="$INFODIR/${ID}-info" else - # Just touch this file so the *.k stuff does not fail - [[ $MPI_RANK == 0 ]] && touch $INFODIR/${ID}-info - INFOFILE="$INFODIR/${ID}-${MPI_RANK}-info" + # Rename info file for each rank + INFOFILE="$INFODIR/${ID}-${PMI_RANK}-info" + # Build list of per-rank info files + echo $INFOFILE >> $INFODIR/${ID}-info fi rm -f $INFOFILE openinfo "$INFOFILE" @@ -342,7 +343,8 @@ fi fi -debug "PID=$$" +log "PID=$$" +log "HOST=$HOST" log "PWD=$PWD" log "DIR=$DIR" log "EXEC=$EXEC" @@ -354,9 +356,9 @@ log "OUTF=$OUTF" log "KICKSTART=$KICKSTART" log "CDM_FILE=$CDM_FILE" -[ -z $MPI_RANK ] && log "MPI_RANK=$MPI_RANK" log "ARGS=$@" log "ARGC=$#" +[ -n $MPI_RANK ] && log "MPI_RANK=$MPI_RANK" && log "PMI_RANK=$PMI_RANK" IFS="|" logstate "CREATE_JOBDIR" @@ -364,7 +366,7 @@ checkError 254 "Failed to create job directory $DIR" log "Created job directory: $DIR" -if [[ $MPI_RANK == "" || $MPI_RANK == 0 ]]; then +if [[ $PMI_RANK == "" || $PMI_RANK == 0 ]]; then logstate "CREATE_INPUTDIR" for D in $DIRS ; do @@ -417,7 +419,7 @@ done fi -fi # MPI_RANK==0 +fi # PMI_RANK==0 debug "Moving to jobdir: $DIR" cd $DIR From davidk at ci.uchicago.edu Wed Sep 14 18:06:12 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 14 Sep 2011 18:06:12 -0500 (CDT) Subject: [Swift-commit] r5117 - trunk/tests/groups Message-ID: <20110914230612.82B209CD16@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-14 18:06:12 -0500 (Wed, 14 Sep 2011) New Revision: 5117 Modified: trunk/tests/groups/group-all-local.sh Log: Remove include for missing tests Modified: trunk/tests/groups/group-all-local.sh =================================================================== --- trunk/tests/groups/group-all-local.sh 2011-09-14 19:21:10 UTC (rev 5116) +++ trunk/tests/groups/group-all-local.sh 2011-09-14 23:06:12 UTC (rev 5117) @@ -13,7 +13,6 @@ $TESTDIR/language-behaviour/control_structures \ $TESTDIR/language-behaviour/datatypes \ $TESTDIR/language-behaviour/IO \ - $TESTDIR/language-behaviour/iterators \ $TESTDIR/language-behaviour/logic \ $TESTDIR/language-behaviour/mappers \ $TESTDIR/language-behaviour/math \ From tga at ci.uchicago.edu Wed Sep 14 21:54:05 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Wed, 14 Sep 2011 21:54:05 -0500 (CDT) Subject: [Swift-commit] r5118 - in SwiftApps/SwiftR: . Swift/R Swift/man Swift/tests Swift/tests/perf Swift/tests/platform-specific Message-ID: <20110915025405.A83369CCBF@svn.ci.uchicago.edu> Author: tga Date: 2011-09-14 21:54:05 -0500 (Wed, 14 Sep 2011) New Revision: 5118 Added: SwiftApps/SwiftR/Swift/tests/README SwiftApps/SwiftR/Swift/tests/perf/ SwiftApps/SwiftR/Swift/tests/perf/param_size.R SwiftApps/SwiftR/Swift/tests/perf/serialisation_overhead.R SwiftApps/SwiftR/Swift/tests/platform-specific/ SwiftApps/SwiftR/Swift/tests/platform-specific/batch_test.R SwiftApps/SwiftR/Swift/tests/platform-specific/cobalt_test.sub SwiftApps/SwiftR/Swift/tests/platform-specific/pbs_test.sub Removed: SwiftApps/SwiftR/Swift/man/swiftShutdown.Rd SwiftApps/SwiftR/Swift/tests/batch_test.R SwiftApps/SwiftR/Swift/tests/cobalt_test.sub SwiftApps/SwiftR/Swift/tests/param_size.R SwiftApps/SwiftR/Swift/tests/pbs_test.sub SwiftApps/SwiftR/Swift/tests/serialisation_overhead.R Modified: SwiftApps/SwiftR/Makefile SwiftApps/SwiftR/Swift/R/Workers.R SwiftApps/SwiftR/Swift/man/swiftExport.Rd SwiftApps/SwiftR/Swift/man/swiftInit.Rd SwiftApps/SwiftR/Swift/man/swiftLibrary.Rd SwiftApps/SwiftR/Swift/man/swiftapply.Rd Log: Fixed most warnings from R package check utility (aside from missing docs for test functions) Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Makefile 2011-09-15 02:54:05 UTC (rev 5118) @@ -2,7 +2,7 @@ include Swift/src/make.include # All files that go into package -PKG_FILES = $(shell find Swift/R -name '*.R'; find Swift/man -name '*.Rd'; find Swift/exec/ -type f -not -path '*/.svn*'; find Swift/inst/ -type f -not -path '*/.svn*') +PKG_FILES = $(shell find Swift -not -path '*/.svn*') PKG_FILES += Swift/DESCRIPTION Modified: SwiftApps/SwiftR/Swift/R/Workers.R =================================================================== --- SwiftApps/SwiftR/Swift/R/Workers.R 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/R/Workers.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -114,7 +114,7 @@ if( is.null(hosts) ) { if (server == "ssh") { - error(paste("Need to provide hosts list for ssh server.")) + stop(paste("Need to provide hosts list for ssh server.")) } } else { @@ -286,8 +286,8 @@ cat(paste("Terminating worker", worker$pid, "of type", worker$server, "\n")) } - cmdString <- file.path(.find.package("Swift"), "exec/killtree &> /dev/null ") - killCmd <- paste(cmdString, worker$pid) + cmdString <- file.path(.find.package("Swift"), "exec/killtree") + killCmd <- paste(cmdString, worker$pid, " &> /dev/null") system(killCmd, wait=FALSE) } Modified: SwiftApps/SwiftR/Swift/man/swiftExport.Rd =================================================================== --- SwiftApps/SwiftR/Swift/man/swiftExport.Rd 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/man/swiftExport.Rd 2011-09-15 02:54:05 UTC (rev 5118) @@ -19,8 +19,8 @@ } \usage{ -swiftExport(..., list = NULL, file = NULL) -swiftExportAll() +swiftExport(..., list = NULL, file = NULL, quiet=getOption("swift.quiet")) +swiftExportAll(file = NULL) swiftRemoveAll() } %- maybe also 'usage' for other objects documented here. @@ -37,6 +37,9 @@ If not provided, a file will automatically be chosen. A directory can be specified via the swift.exportdir option. } + \item{quiet}{ + Whether informational messages should be suppressed + } } \details{ In many cases if a data or a function is referenced within a function @@ -81,9 +84,6 @@ Maintainer: Michael Wilde } -\note{ -%% ~~further notes~~ -} %% ~Make other sections like Warning with \section{Warning }{....} ~ Modified: SwiftApps/SwiftR/Swift/man/swiftInit.Rd =================================================================== --- SwiftApps/SwiftR/Swift/man/swiftInit.Rd 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/man/swiftInit.Rd 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,27 +1,26 @@ \name{swiftInit} +\alias{swiftShutdown} \alias{swiftInit} %- Also NEED an '\alias' for EACH other topic documented here. -\title{Starting Swift Workers +\title{Starting and Stopping Swift Workers } \description{ -This function prepares for parallel Swift jobs to be run by initialising a pool of workers. Depending on the arguments, these workers may be on the local host, or on a remote host. +\code{swiftInit} prepares for parallel Swift jobs to be run by initialising a pool of workers. Depending on the arguments, these workers may be on the local host, or on a remote host. \code{swiftShutdown} shuts down workers that were started by \code{swiftInit}. } \usage{ -swiftInit(cores = NULL, server = NULL, hosts = NULL, nodes = NULL, project = NULL, parEnv = NULL, workmode = NULL, throttle = NULL, queue = NULL, rcmd = NULL, time = NULL, workerLogging = NULL) +swiftInit(cores = getOption("swift.cores"), server = getOption("swift.server"), hosts = getOption("swift.hosts"), nodes = getOption("swift.nodes"), project = getOption("swift.project"), parEnv = getOption("swift.parenv"), kernel = getOption("swift.kernel"), workmode = getOption("swift.workmode"), throttle = getOption("swift.throttle"), retries = getOption("swift.retries"), queue = getOption("swift.queue"), rcmd = getOption("swift.rcmd"), time = getOption("swift.time"), workerLogging = getOption("swift.workerLogging"), swiftLogging = getOption("swift.swiftLogging"), keepworkdir = getOption("swift.keepworkdir"), tc.file = getOption("swift.tc.file"), cf.file = getOption("swift.cf.file"), sites.file = getOption("swift.sites.file")) +swiftShutdown(handle = NULL, all=FALSE) } -%- maybe also 'usage' for other objects documented here. \arguments{ - All arguments to swiftInit() are optional. - If any of the arguments are not provided to swiftInit, this function - tries to obtain a value from Swift's options mechanism. The option + All arguments to \code{swiftInit} are optional, however some for some + values of the \code{server} argument other arguments may need to be + specified directly or via a Swift option. + + If any of the arguments are not provided to swiftInit, the function + tries to obtain a value using \code{getOption}. The option names correspond to the argument names prefixed with "swift.", for example "swift.cores" or "swift.server". - This function does not necessarily require any arguments to be set directly - or indirectly through options, however depending on your server setting - and local configuration you may need to provide some argument. - - \item{cores}{ The number of cores per host. The default values vary from 2 to 8 depending on the server type. } @@ -62,8 +61,17 @@ } \item{throttle}{ The throttle setting to be used by Swift: controls the rate of sending jobs - to workers. + to workers. 0 means that only two function invocations are run at a time. + 1 means that 102 function invocations can be run concurrently. The general + formula for maximum number of parallel function invocations is + 2 + 100 * throttle. + } + \item{retries}{ + The number of times Swift should retry a task if it encounters an execution error. + R code which throws errors will not be re-executed, only errors external to R + such as computer failures will trigger a retry. +} \item{queue}{ The scheduler queue to put jobs in. This is only relevant for PBS and SGE. @@ -84,18 +92,49 @@ \item{workerLogging}{ For testing purposes: the swift worker logging level. } + \item{swiftLogging}{ + For testing purposes: if set to true, log additional trace information to + Swift log files. +} + \item{keepworkdir}{ + For debugging purposes: whether to keep the contents of the Swift + working directory. +} + \item{tc.file}{ + If server is set to custom, the path to the Swift transformation catalog + file. +} + \item{sites.file}{ + If server is set to custom, the path to the Swift site file + file. +} + \item{cf.file}{ + If server is set to custom, the path to the Swift configuration + file. +} + \item{handle}{ + The handle value returned by "\code{swiftInit}" when a worker was + started up. If provided, only that worker will be shut down. + If handle is not provided and \code{all} is FALSE, then the most + recently started worker that is still running will be shut down. } + \item{all}{ + logical; if set to TRUE, shut down all running R workers, rather + than just workers from a single \code{swiftInit} call. +} +} \details{ - As a result of calling swiftInit(), a swift server process is started + As a result of calling \code{swiftInit}, a swift server process is started in the background. This process will be cleaned up automatically when - you exit your R session. Alternatively, swiftShutdown can shut down + you exit your R session. Alternatively, \code{swiftShutdown} can shut down some or all server processes without closing R. + } \value{ - swiftInit returns a handle to the swift server process started. - This handle can be used later as an argument to swiftShutdown to + \code{swiftInit} returns a handle to the swift server process started. + This handle can be used later as an argument to \code{swiftShutdown} to shut down the server process. The actual data in the handle may change in later versions of Swift. } @@ -112,9 +151,6 @@ Maintainer: Michael Wilde } -\note{ -%% ~~further notes~~ -} %% ~Make other sections like Warning with \section{Warning }{....} ~ @@ -134,7 +170,7 @@ swiftShutdown(serverHandle) # Now run remotely via ssh on 2 remote machines called foo and bar -options(swift.server="ssh") +\dontrun{options(swift.server="ssh") swiftInit(hosts="foo bar") swiftLapply(list(3, 4), log) # ssh servers will keep running @@ -148,7 +184,8 @@ swiftLapply(c(3, 4), log) # Close all the workers we started up -swiftShutdown() +swiftShutdown(all=TRUE) +} } % Add one or more standard keywords, see file 'KEYWORDS' in the Modified: SwiftApps/SwiftR/Swift/man/swiftLibrary.Rd =================================================================== --- SwiftApps/SwiftR/Swift/man/swiftLibrary.Rd 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/man/swiftLibrary.Rd 2011-09-15 02:54:05 UTC (rev 5118) @@ -56,9 +56,6 @@ Maintainer: Michael Wilde } -\note{ -%% ~~further notes~~ -} %% ~Make other sections like Warning with \section{Warning }{....} ~ @@ -67,8 +64,13 @@ \code{\link{Swift-package}} } \examples{ +library(Swift) +swiftInit() +swiftLibrary(stats) +swiftLapply(list(0.1, 0.2, 0.3), + function (x) { pbeta(x, 2, 3) }) +swiftShutdown() - } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. Deleted: SwiftApps/SwiftR/Swift/man/swiftShutdown.Rd =================================================================== --- SwiftApps/SwiftR/Swift/man/swiftShutdown.Rd 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/man/swiftShutdown.Rd 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,60 +0,0 @@ -\name{swiftShutdown} -\alias{swiftShutdown} -\title{ -Shut Down Swift Workers -} -\description{ -%% ~~ A concise (1-5 lines) description of what the function does. ~~ -} -\usage{ -swiftShutdown(handle = NULL, all=FALSE) -} -\arguments{ - \item{handle}{ - The handle value returned by "\code{swiftInit}" when a worker was - started up. If provided, only that worker will be shut down. - If handle is not provided and \code{all} is FALSE, then the most - recently started worker will be shut down. - -} - \item{all}{ - Whether to terminate all workers started within this R session. -} -} -\details{ -%% ~~ If necessary, more details than the description above ~~ -} -\value{ - No return value -} -\references{ -\url{http://www.ci.uchicago.edu/swift} -} -\author{ -Swift was developed by: Mihael Hategan, Ben Clifford, Justin Wozniak, -Yong Zhao, Ian Foster, and Michael Wilde with contributions from Sarah -Kenny, Ioan Raicu, Luiz Gadelha, Allan Espinosa, Zhao Zhang, David -Kelly, Jon Monette, Glen Hocky, Tom Uram, Wenjun Wu, and other users. - -Swift R package developed by Michael Wilde, Tim Armstrong and the OpenMx project - -Maintainer: Michael Wilde -} -\note{ -%% ~~further notes~~ -} - -%% ~Make other sections like Warning with \section{Warning }{....} ~ - -\seealso{ -\code{\link{Swift-package}} -\code{\link{swiftInit}} - -} -\examples{ - -} -% Add one or more standard keywords, see file 'KEYWORDS' in the -% R documentation directory. -\keyword{ ~kwd1 } -\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line Modified: SwiftApps/SwiftR/Swift/man/swiftapply.Rd =================================================================== --- SwiftApps/SwiftR/Swift/man/swiftapply.Rd 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/man/swiftapply.Rd 2011-09-15 02:54:05 UTC (rev 5118) @@ -21,11 +21,11 @@ swiftapply is a more general function that takes additional arguments. } \usage{ -swiftapply(func, arglists, server = NULL, callsperbatch = NULL, runmode = NULL, initialexpr = NULL, workerhosts = NULL, keepwork = NULL, tmpdir = NULL, timeout = NULL, quiet = FALSE) +swiftapply(func, arglists, server = NULL, callsperbatch = NULL, runmode = NULL, initialexpr = NULL, workerhosts = NULL, keepwork = NULL, tmpdir = NULL, timeout = NULL, quiet = NULL, printTiming = NULL) swiftLapply(tlist, func, ...) -swiftSapply(tlist, func, ...) +swiftSapply(tlist, func, ..., simplify = TRUE, USE.NAMES = TRUE) } \arguments{ The first two arguments are required for all variations of the @@ -45,7 +45,7 @@ \item{arglists}{ A list of argument lists to be given to the function. } - \item{tlists}{ + \item{tlist}{ For swiftLapply and swiftSapply, a list which contains the first argument for each function invocation. } @@ -57,7 +57,7 @@ } \item{server}{ The swift server type to use to run. The possible values are - "local", "ssh", "pbs", "sge" and "pbsf", the same as swiftInit. + "local", "ssh", "pbs", "sge" and "pbsf", the same as \verb{swiftInit}. The most recently started server of the specified type will be used to execute the apply call. If not specified, then the swift.server option will be used. If that is not specified, the @@ -99,10 +99,22 @@ \item{quiet}{ Whether to suppress informational output about the job. } + \item{printTiming}{ + If set to TRUE, prints timing information on components of the + apply operation. } + \item{simplify}{ + Whether to simplify the return value of \code{swiftSapply} following the + same rules as \code{sapply}. +} + \item{USE.NAMES}{ + Same behaviour as the equivalent argument to \code{sapply}. + +} +} \details{ -Before running swiftapply for the first time in a session you will likely -want to run swiftInit to start a Swift server. +Before running \verb{swiftapply} for the first time in a session you will likely +want to run \verb{swiftInit} to start a Swift server. } \value{ Returns a list with return values corresponding to the argument @@ -125,9 +137,6 @@ Maintainer: Michael Wilde } -\note{ -%% ~~further notes~~ -} %% ~Make other sections like Warning with \section{Warning }{....} ~ @@ -137,12 +146,30 @@ \code{\link{Swift-package}} } \examples{ -##---- Should be DIRECTLY executable !! ---- -##-- ==> Define data, use random, -##-- or do help(data=index) for the standard data sets. +\dontshow{library(Swift)} +\dontshow{swiftInit()} +swiftapply(log, list(list(5),list(6))) -swiftapply(log, list(list(5),list(6))) +# swiftLapply returns result as list +swiftLapply(list(1,2,3), function (x) { 2 * x }) +swiftLapply(c(1,2,3), function (x) { 2 * x }) + +# swiftSapply will coerce result to vector +swiftSapply(c(1,2,3), function (x) { 2 * x }) + +pow <- function (x, y) { + x ^ y } + +# swiftapply allows multiple argument functions by taking a list of lists +swiftapply(pow, list(list(2,2), list(2,3), list(7,3))) + +# swiftLapply and swiftSapply allow only one value to be provided for the +# second and subsequent arguments for the multiple function invocations +swiftLapply(list(1,2,3,4,5,6,7,8,9), pow, 2) +swiftSapply(list(1,2,3,4,5,6,7,8,9), pow, 3) +\dontshow{swiftShutdown()} +} % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{ ~kwd1 } Added: SwiftApps/SwiftR/Swift/tests/README =================================================================== --- SwiftApps/SwiftR/Swift/tests/README (rev 0) +++ SwiftApps/SwiftR/Swift/tests/README 2011-09-15 02:54:05 UTC (rev 5118) @@ -0,0 +1,7 @@ +perf/ + Tests used to gather performance measurements +platform-specific/ + Tests which need to be run in a specific environment (e.g. on a cluster + or on the head node of a cluster with a particular scheduler) +OpenMx + Benchmarks and tests using the OpenMx package Deleted: SwiftApps/SwiftR/Swift/tests/batch_test.R =================================================================== --- SwiftApps/SwiftR/Swift/tests/batch_test.R 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/tests/batch_test.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,38 +0,0 @@ -require(Swift) - -server <- commandArgs(TRUE)[[1]] - - -hostinfo1 <- getNodeList() -print("Auto:") -print(hostinfo1) - -if (server == "cobalt") { - hostinfo2 <- getNodeList("cobalt") - print("cobalt:") - print(hostinfo2) -} -if (server %in% c("pbs", "pbsf")) { - hostinfo2 <- getNodeList("pbs") - print("pbs:") - print(hostinfo2) - - hostinfo3 <- getNodeList("pbsf") - print("pbsf:") - print(hostinfo3) -} -if (server == "sge") { - hostinfo2 <- getNodeList("sge") - print("sge:") - print(hostinfo2) - - hostinfo3 <- getNodeList("pbsf") - print("pbsf:") - print(hostinfo3) -} - -print ("Hosts:") -print(hostinfo1[[1]]) - -runAllSwiftTests(server="ssh", hosts=hostinfo1[[1]], cores=8) - Deleted: SwiftApps/SwiftR/Swift/tests/cobalt_test.sub =================================================================== --- SwiftApps/SwiftR/Swift/tests/cobalt_test.sub 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/tests/cobalt_test.sub 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,12 +0,0 @@ -#!/bin/sh -export WORKER_LOGGING_LEVEL=ERROR -echo '***' COBALT_NODEFILE file: $COBALT_NODEFILE -cat $COBALT_NODEFILE -echo '***' unique nodes are: -sort < $COBALT_NODEFILE|uniq - -echo GLOBUS_HOSTNAME $GLOBUS_HOSTNAME -export GLOBUS_HOSTNAME="" -Rscript `dirname $0`/batch_test.R cobalt - - Deleted: SwiftApps/SwiftR/Swift/tests/param_size.R =================================================================== --- SwiftApps/SwiftR/Swift/tests/param_size.R 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/tests/param_size.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,57 +0,0 @@ -require(Swift) -source("Swift/tests/perf_tests.R") - -cores <- 4 -intsize <- 4 - -param.bytes <- lapply(1:24, function (x) {list(cores, 4 * (2**x))}) - -id <- function (x) {x} - -test <- function (arr) { - res <- swiftLapply(arr, id) - length(res) - return (NULL) -} -makeArray <- function (procs, arr.bytes) { - #arrsize is in bytes - args <- list() - for (i in 1:procs) { - args[[i]] <- as.vector(sample(1:1000, arr.bytes/intsize, replace=T), "integer") - } - return(args) -} - -ts <- makeTestSuite(groups=list( - makePerfTestGroup(mode="swift", name="ArgSize", - f=test, prep=makeArray, - allargs=param.bytes, - server="local", cores=cores), - makePerfTestGroup(mode="swift", name="ArgSize", - f=test, prep=makeArray, - allargs=param.bytes, - server="ssh", cores=1, hosts="nettle wapato dandelion cattail") - )) -res <- runTestSuite(ts) - -anl <- mergeGroupResults(analyseSuitePerf(res, - argnames=c("procs", "arr.bytes"), perfparams=c('server'))) - - - -loc <- subset(anl, server=="local") -ssh <- subset(anl, server=="ssh") -plot(x=ssh$arr.bytes/1024, y=ssh$time, col='red', ylab="Time (s)", xlab="Argument size (bytes)", -# log="xy", ylim=c(0.1, 500), - xaxt="n") -title(main="Effect of argument size on execution time", line=2) -title(main="Execution time of identity function with one function invocation per core", line=1, font.main=4, cex.main=0.8) -axis(1, at=ssh$arr.bytes/1024, - labels=lapply(ssh$arr.bytes, - function (n) { if (n >= 1024*1024) {sprintf("%dM", n/(1024*1024))} - else if (n >= 1024 ) {sprintf("%dK", n/1024)} - else {sprintf("%d", n)}}) - ) -points(x=loc$arr.bytes/1024, y=loc$time) -legend("topleft", legend=c("Local (4 cores)", "Ssh (4 hosts, 1 core per host)"), - fill=c("black", "red")) Deleted: SwiftApps/SwiftR/Swift/tests/pbs_test.sub =================================================================== --- SwiftApps/SwiftR/Swift/tests/pbs_test.sub 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/tests/pbs_test.sub 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,33 +0,0 @@ -#PBS -S /bin/sh -#PBS -N SwiftR-batch -#PBS -m n -#PBS -l nodes=1 -#PBS -l walltime=00:30:00 - -HOST=$(echo http://192.5.86.6:48998 | sed -e 's,^http://,,' -e 's/:.*//') -PORT=$(echo http://192.5.86.6:48998 | sed -e 's,^.*:,,') -echo '***' PBS_NODEFILE file: $PBS_NODEFILE -cat $PBS_NODEFILE -echo '***' unique nodes are: -sort < $PBS_NODEFILE|uniq - -echo GLOBUS_HOSTNAME=$GLOBUS_HOSTNAME -#export PATH=/autonfs/home/tga/R-2.12.1/bin:$PATH - -if which Rscript; then - echo Rscript binary found! -else - echo Rscript binary not found in: - echo PATH=$PATH - echo Maybe you need to set PATH in this sub file - exit 1 -fi - - -#Rscript `dirname $0`/batch_test.R pbs -if [ -f $PBS_O_WORKDIR/Swift/tests/batch_test.R ]; then - Rscript $PBS_O_WORKDIR/Swift/tests/batch_test.R pbs -else - echo Could not find batch_test.R. Maybe try modifying this .sub file with the absolute path of the script. - exit 1 -fi Added: SwiftApps/SwiftR/Swift/tests/perf/param_size.R =================================================================== --- SwiftApps/SwiftR/Swift/tests/perf/param_size.R (rev 0) +++ SwiftApps/SwiftR/Swift/tests/perf/param_size.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -0,0 +1,57 @@ +require(Swift) +source("Swift/tests/perf_tests.R") + +cores <- 4 +intsize <- 4 + +param.bytes <- lapply(1:24, function (x) {list(cores, 4 * (2**x))}) + +id <- function (x) {x} + +test <- function (arr) { + res <- swiftLapply(arr, id) + length(res) + return (NULL) +} +makeArray <- function (procs, arr.bytes) { + #arrsize is in bytes + args <- list() + for (i in 1:procs) { + args[[i]] <- as.vector(sample(1:1000, arr.bytes/intsize, replace=T), "integer") + } + return(args) +} + +ts <- makeTestSuite(groups=list( + makePerfTestGroup(mode="swift", name="ArgSize", + f=test, prep=makeArray, + allargs=param.bytes, + server="local", cores=cores), + makePerfTestGroup(mode="swift", name="ArgSize", + f=test, prep=makeArray, + allargs=param.bytes, + server="ssh", cores=1, hosts="nettle wapato dandelion cattail") + )) +res <- runTestSuite(ts) + +anl <- mergeGroupResults(analyseSuitePerf(res, + argnames=c("procs", "arr.bytes"), perfparams=c('server'))) + + + +loc <- subset(anl, server=="local") +ssh <- subset(anl, server=="ssh") +plot(x=ssh$arr.bytes/1024, y=ssh$time, col='red', ylab="Time (s)", xlab="Argument size (bytes)", +# log="xy", ylim=c(0.1, 500), + xaxt="n") +title(main="Effect of argument size on execution time", line=2) +title(main="Execution time of identity function with one function invocation per core", line=1, font.main=4, cex.main=0.8) +axis(1, at=ssh$arr.bytes/1024, + labels=lapply(ssh$arr.bytes, + function (n) { if (n >= 1024*1024) {sprintf("%dM", n/(1024*1024))} + else if (n >= 1024 ) {sprintf("%dK", n/1024)} + else {sprintf("%d", n)}}) + ) +points(x=loc$arr.bytes/1024, y=loc$time) +legend("topleft", legend=c("Local (4 cores)", "Ssh (4 hosts, 1 core per host)"), + fill=c("black", "red")) Added: SwiftApps/SwiftR/Swift/tests/perf/serialisation_overhead.R =================================================================== --- SwiftApps/SwiftR/Swift/tests/perf/serialisation_overhead.R (rev 0) +++ SwiftApps/SwiftR/Swift/tests/perf/serialisation_overhead.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -0,0 +1,70 @@ + +require(Swift) +source("Swift/tests/perf_tests.R") +source("Swift/tests/OpenMx/BootstrapParallelBigger.R") + +args = 128 +res = list(n=c(), create=c(), prepro=c(), write=c(), writesep=c(), writesepsplit=c()) +i = 1 +for (n in c(1,2,4,8,16,32,48, 64, 96, 128, 192, 256, 384, 512)) { + cat("\n", n, "\n\n") + res$n[[i]] = n + + startTime = proc.time()[["elapsed"]] + model <- buildModels(75, 100, n) + endTime = proc.time()[["elapsed"]] + res$create[[i]] = endTime - startTime + cat(paste("Took", endTime - startTime, "s to build models\n")) + + + + startTime = proc.time()[["elapsed"]] + dataList <- generateDataList(model) + dshare <- shareData(model) + independents <- getAllIndependents(dshare) + endTime = proc.time()[["elapsed"]] + res$prepro[[i]] = endTime - startTime + cat(paste("Took", endTime - startTime, "s to process model\n")) + + + x = list(mxRun, independents) + wStartTime = proc.time()[["elapsed"]] + save(x, file="blah.Rdata") + wEndTime = proc.time()[["elapsed"]] + cat(paste("Took", wEndTime - wStartTime, "s to write to disk models\n")) + res$write[[i]] = wEndTime - wStartTime + + wStartTime = proc.time()[["elapsed"]] + for (j in 1:n) { + x = list(mxRun, independents[[j]]) + save(x, file=paste("blah", j, ".Rdata", sep="")) + } + wEndTime = proc.time()[["elapsed"]] + cat(paste("Took", wEndTime - wStartTime, "s to write to disk models individually\n")) + res$writesep[[i]] = wEndTime - wStartTime + + + wStartTime = proc.time()[["elapsed"]] + y = list(mxRun) + save(y, file=paste("mxRun.Rdata", sep="")) + for (j in 1:n) { + x = independents[[j]] + save(x, file=paste("blah", j, ".Rdata", sep="")) + } + wEndTime = proc.time()[["elapsed"]] + cat(paste("Took", wEndTime - wStartTime, "s to write to disk models individually split\n")) + res$writesepsplit[[i]] = wEndTime - wStartTime + + i <- i + 1 +} +plot(res$n, res$writesep, col="green", type="l", xlab="No. replicas", ylab="Time (s)") +points(res$n, res$write, col="red", type="l") +points(res$n, res$writesepsplit, col="blue", type="l") +points(res$n, res$create, col="black", type="l") +points(res$n, res$prepro, col="brown", type="l") + +legend("topleft", + legend=c("write separately", "write single file", + "write function\nand args separately", "time to create omx models", + "time to identify independent models"), + fill=c("green", "red", 'blue', 'black', 'brown')) Added: SwiftApps/SwiftR/Swift/tests/platform-specific/batch_test.R =================================================================== --- SwiftApps/SwiftR/Swift/tests/platform-specific/batch_test.R (rev 0) +++ SwiftApps/SwiftR/Swift/tests/platform-specific/batch_test.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -0,0 +1,38 @@ +require(Swift) + +server <- commandArgs(TRUE)[[1]] + + +hostinfo1 <- getNodeList() +print("Auto:") +print(hostinfo1) + +if (server == "cobalt") { + hostinfo2 <- getNodeList("cobalt") + print("cobalt:") + print(hostinfo2) +} +if (server %in% c("pbs", "pbsf")) { + hostinfo2 <- getNodeList("pbs") + print("pbs:") + print(hostinfo2) + + hostinfo3 <- getNodeList("pbsf") + print("pbsf:") + print(hostinfo3) +} +if (server == "sge") { + hostinfo2 <- getNodeList("sge") + print("sge:") + print(hostinfo2) + + hostinfo3 <- getNodeList("pbsf") + print("pbsf:") + print(hostinfo3) +} + +print ("Hosts:") +print(hostinfo1[[1]]) + +runAllSwiftTests(server="ssh", hosts=hostinfo1[[1]], cores=8) + Added: SwiftApps/SwiftR/Swift/tests/platform-specific/cobalt_test.sub =================================================================== --- SwiftApps/SwiftR/Swift/tests/platform-specific/cobalt_test.sub (rev 0) +++ SwiftApps/SwiftR/Swift/tests/platform-specific/cobalt_test.sub 2011-09-15 02:54:05 UTC (rev 5118) @@ -0,0 +1,12 @@ +#!/bin/sh +export WORKER_LOGGING_LEVEL=ERROR +echo '***' COBALT_NODEFILE file: $COBALT_NODEFILE +cat $COBALT_NODEFILE +echo '***' unique nodes are: +sort < $COBALT_NODEFILE|uniq + +echo GLOBUS_HOSTNAME $GLOBUS_HOSTNAME +export GLOBUS_HOSTNAME="" +Rscript `dirname $0`/batch_test.R cobalt + + Property changes on: SwiftApps/SwiftR/Swift/tests/platform-specific/cobalt_test.sub ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/SwiftR/Swift/tests/platform-specific/pbs_test.sub =================================================================== --- SwiftApps/SwiftR/Swift/tests/platform-specific/pbs_test.sub (rev 0) +++ SwiftApps/SwiftR/Swift/tests/platform-specific/pbs_test.sub 2011-09-15 02:54:05 UTC (rev 5118) @@ -0,0 +1,33 @@ +#PBS -S /bin/sh +#PBS -N SwiftR-batch +#PBS -m n +#PBS -l nodes=1 +#PBS -l walltime=00:30:00 + +HOST=$(echo http://192.5.86.6:48998 | sed -e 's,^http://,,' -e 's/:.*//') +PORT=$(echo http://192.5.86.6:48998 | sed -e 's,^.*:,,') +echo '***' PBS_NODEFILE file: $PBS_NODEFILE +cat $PBS_NODEFILE +echo '***' unique nodes are: +sort < $PBS_NODEFILE|uniq + +echo GLOBUS_HOSTNAME=$GLOBUS_HOSTNAME +#export PATH=/autonfs/home/tga/R-2.12.1/bin:$PATH + +if which Rscript; then + echo Rscript binary found! +else + echo Rscript binary not found in: + echo PATH=$PATH + echo Maybe you need to set PATH in this sub file + exit 1 +fi + + +#Rscript `dirname $0`/batch_test.R pbs +if [ -f $PBS_O_WORKDIR/Swift/tests/batch_test.R ]; then + Rscript $PBS_O_WORKDIR/Swift/tests/batch_test.R pbs +else + echo Could not find batch_test.R. Maybe try modifying this .sub file with the absolute path of the script. + exit 1 +fi Deleted: SwiftApps/SwiftR/Swift/tests/serialisation_overhead.R =================================================================== --- SwiftApps/SwiftR/Swift/tests/serialisation_overhead.R 2011-09-14 23:06:12 UTC (rev 5117) +++ SwiftApps/SwiftR/Swift/tests/serialisation_overhead.R 2011-09-15 02:54:05 UTC (rev 5118) @@ -1,70 +0,0 @@ - -require(Swift) -source("Swift/tests/perf_tests.R") -source("Swift/tests/OpenMx/BootstrapParallelBigger.R") - -args = 128 -res = list(n=c(), create=c(), prepro=c(), write=c(), writesep=c(), writesepsplit=c()) -i = 1 -for (n in c(1,2,4,8,16,32,48, 64, 96, 128, 192, 256, 384, 512)) { - cat("\n", n, "\n\n") - res$n[[i]] = n - - startTime = proc.time()[["elapsed"]] - model <- buildModels(75, 100, n) - endTime = proc.time()[["elapsed"]] - res$create[[i]] = endTime - startTime - cat(paste("Took", endTime - startTime, "s to build models\n")) - - - - startTime = proc.time()[["elapsed"]] - dataList <- generateDataList(model) - dshare <- shareData(model) - independents <- getAllIndependents(dshare) - endTime = proc.time()[["elapsed"]] - res$prepro[[i]] = endTime - startTime - cat(paste("Took", endTime - startTime, "s to process model\n")) - - - x = list(mxRun, independents) - wStartTime = proc.time()[["elapsed"]] - save(x, file="blah.Rdata") - wEndTime = proc.time()[["elapsed"]] - cat(paste("Took", wEndTime - wStartTime, "s to write to disk models\n")) - res$write[[i]] = wEndTime - wStartTime - - wStartTime = proc.time()[["elapsed"]] - for (j in 1:n) { - x = list(mxRun, independents[[j]]) - save(x, file=paste("blah", j, ".Rdata", sep="")) - } - wEndTime = proc.time()[["elapsed"]] - cat(paste("Took", wEndTime - wStartTime, "s to write to disk models individually\n")) - res$writesep[[i]] = wEndTime - wStartTime - - - wStartTime = proc.time()[["elapsed"]] - y = list(mxRun) - save(y, file=paste("mxRun.Rdata", sep="")) - for (j in 1:n) { - x = independents[[j]] - save(x, file=paste("blah", j, ".Rdata", sep="")) - } - wEndTime = proc.time()[["elapsed"]] - cat(paste("Took", wEndTime - wStartTime, "s to write to disk models individually split\n")) - res$writesepsplit[[i]] = wEndTime - wStartTime - - i <- i + 1 -} -plot(res$n, res$writesep, col="green", type="l", xlab="No. replicas", ylab="Time (s)") -points(res$n, res$write, col="red", type="l") -points(res$n, res$writesepsplit, col="blue", type="l") -points(res$n, res$create, col="black", type="l") -points(res$n, res$prepro, col="brown", type="l") - -legend("topleft", - legend=c("write separately", "write single file", - "write function\nand args separately", "time to create omx models", - "time to identify independent models"), - fill=c("green", "red", 'blue', 'black', 'brown')) From ketan at ci.uchicago.edu Thu Sep 15 09:06:30 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 15 Sep 2011 09:06:30 -0500 (CDT) Subject: [Swift-commit] r5119 - trunk/bin Message-ID: <20110915140630.E9C5B9CCB3@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-15 09:06:30 -0500 (Thu, 15 Sep 2011) New Revision: 5119 Modified: trunk/bin/swift-osg-ress-site-catalog Log: set pool to engage-submit.renci.org in swift-osg-ress-site-catalog Modified: trunk/bin/swift-osg-ress-site-catalog =================================================================== --- trunk/bin/swift-osg-ress-site-catalog 2011-09-15 02:54:05 UTC (rev 5118) +++ trunk/bin/swift-osg-ress-site-catalog 2011-09-15 14:06:30 UTC (rev 5119) @@ -42,13 +42,15 @@ my %tmp; my $cmd = "condor_status -any -long -constraint" . " 'StringlistIMember(\"VO:$opt_vo\";GlueCEAccessControlBaseRule)'" . - " -pool osg-ress-1.fnal.gov"; + #" -pool osg-ress-1.fnal.gov"; + " -pool engage-submit.renci.org"; # if we want the engage verified sites, ignore opt_vo and query against # engage central collector if ($opt_engage_verified) { $cmd = "condor_status -any -long -constraint" . " 'SiteVerified==TRUE'" . - " -pool engage-central.renci.org" + # " -pool engage-central.renci.org" + " -pool engage-submit.renci.org"; } open(STATUS, "$cmd|"); while() { From ketan at ci.uchicago.edu Thu Sep 15 09:43:40 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 15 Sep 2011 09:43:40 -0500 (CDT) Subject: [Swift-commit] r5120 - branches/release-0.93/docs/siteguide Message-ID: <20110915144340.E77B19CCB3@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-15 09:43:40 -0500 (Thu, 15 Sep 2011) New Revision: 5120 Modified: branches/release-0.93/docs/siteguide/beagle Log: added contents for large runs on beagle siteguide Modified: branches/release-0.93/docs/siteguide/beagle =================================================================== --- branches/release-0.93/docs/siteguide/beagle 2011-09-15 14:06:30 UTC (rev 5119) +++ branches/release-0.93/docs/siteguide/beagle 2011-09-15 14:43:40 UTC (rev 5120) @@ -44,6 +44,17 @@ *step 6.* Check the output in the generated +outdir+ directory (+ls outdir+) -Note: Running from sandbox node or requesting 1 hour walltime for upto 3 nodes +Note: Running from sandbox node or requesting 30 minutes walltime for upto 3 nodes will get fast prioritized execution. Good for small tests. +Larger Runs on Beagle +~~~~~~~~~~~~~~~~~~~~~ +A key factor in scaling up Swift runs on Beagle is to setup the sites.xml parameters. +The following sites.xml parameters must be set to scale that is intended for a large run: + + * walltime: The expected walltime for completion of your run. This parameter is accepted in seconds. + * slots: Number of qsub jobs needs to be submitted by swift. This number will determine how many qsubs swift will submit for your run. Typical values range between 40 and 80 for large runs. + * nodegranularity: Determines the number of nodes per job. Total nodes will thus be slots times nodegranularity. This may vary for advanced configurations though. + * maxnodes: Determines the maximum number of nodes a job must pack into its qsub. This parameter determines the largest single job that your run will submit. + + From wozniak at ci.uchicago.edu Thu Sep 15 14:36:27 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 15 Sep 2011 14:36:27 -0500 (CDT) Subject: [Swift-commit] r5121 - in trunk/tests/mpi/fusion: long short Message-ID: <20110915193627.9357D9CCBF@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-15 14:36:27 -0500 (Thu, 15 Sep 2011) New Revision: 5121 Modified: trunk/tests/mpi/fusion/long/100-mci.clean.sh trunk/tests/mpi/fusion/long/100-mci.swift trunk/tests/mpi/fusion/long/mpi-sleep.c trunk/tests/mpi/fusion/long/sites.template.xml trunk/tests/mpi/fusion/long/tc.template.data trunk/tests/mpi/fusion/short/tc.template.data Log: Improve test for MPI on Fusion Modified: trunk/tests/mpi/fusion/long/100-mci.clean.sh =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.clean.sh 2011-09-15 14:43:40 UTC (rev 5120) +++ trunk/tests/mpi/fusion/long/100-mci.clean.sh 2011-09-15 19:36:27 UTC (rev 5121) @@ -2,6 +2,6 @@ set -x -rm -v transform-*.txt || exit 1 +# rm -v transform-*.txt || exit 1 exit 0 Modified: trunk/tests/mpi/fusion/long/100-mci.swift =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.swift 2011-09-15 14:43:40 UTC (rev 5120) +++ trunk/tests/mpi/fusion/long/100-mci.swift 2011-09-15 19:36:27 UTC (rev 5121) @@ -8,9 +8,9 @@ file input<"100-input.txt">; -int total = 10; +int total = 1; -foreach i in [0:total] { +foreach i in [0:total-1] { file output; output = transform(input); } Modified: trunk/tests/mpi/fusion/long/mpi-sleep.c =================================================================== --- trunk/tests/mpi/fusion/long/mpi-sleep.c 2011-09-15 14:43:40 UTC (rev 5120) +++ trunk/tests/mpi/fusion/long/mpi-sleep.c 2011-09-15 19:36:27 UTC (rev 5121) @@ -1,7 +1,6 @@ /** * Simple Hydra test - * No I/O * * usage: mpi-sleep * @@ -11,11 +10,12 @@ * */ #include +#include #include #include #include #include -#include +#include #include #include @@ -26,7 +26,9 @@ #ifdef ENABLE_DEBUG #define DEBUG(...) __VA_ARGS__ #define debug(...) \ - { printf("%i: ", mpi_rank); printf(__VA_ARGS__); } + { printf("%i: ", mpi_rank); \ + printf(__VA_ARGS__); \ + fflush(stdout); } #else #define DEBUG(...) #define debug(...) @@ -37,6 +39,8 @@ void print_help(void); void startup(void); +void write_header(void); +void write_data(void); void crash(char* msg); void check(void* value, char* msg); @@ -45,14 +49,16 @@ const int INPUT_MAX = 10; int input_count = 0; +char hostname[1024]; char output[1024]; -bool write_header = false; +bool enable_write_header = false; int main(int argc, char* argv[]) { int duration = -1; char* inputs[INPUT_MAX]; + output[0] = '\0'; int opt = -1; while ((opt = getopt(argc, argv, "i:o:v")) != -1) @@ -67,7 +73,7 @@ case 'o': strcpy(output, optarg); case 'v': - write_header = true; + enable_write_header = true; break; } } @@ -100,22 +106,17 @@ // INTRO BARRIER debug("barrier1\n"); MPI_Barrier(MPI_COMM_WORLD); - debug("sleep %i\n", duration); + // WRITE HEADER + if (enable_write_header) + write_header(); + // SLEEP + debug("sleep %i\n", duration); sleep(duration); // WRITE OUTPUT - if (mpi_rank == 0) - { - debug("write to: %s\n", output); - FILE* file = fopen(output, "w"); - check(file, "could not write to file!"); - if (write_header) - fprintf(file, "rank: %i/%i\n", mpi_rank, mpi_size); - fprintf(file, "howdy\n"); - fclose(file); - } + write_data(); // FINAL BARRIER debug("barrier2\n"); @@ -132,6 +133,14 @@ FILE* file; char filename[1024]; // DEBUG(system("/bin/hostname")); + + if (mpi_rank == 0) + if (strlen(output) == 0) + { + printf("No output file!\n"); + exit(1); + } + debug("size: %i\n", mpi_size); debug("rank: %i\n", mpi_rank); DEBUG(pwd = getenv("PWD")); @@ -143,6 +152,56 @@ // DEBUG(fclose(file)); } +/** + An output header written only by rank 0 +*/ +void write_header() +{ + if (mpi_rank == 0) + { + debug("write_header(): %s\n", output); + FILE* file = fopen(output, "w"); + check(file, "could not write to file!"); + fprintf(file, "rank 0: header\n"); + fclose(file); + } +} + +void read_hostname() +{ + struct utsname name; + if (uname (&name) == -1) + { + printf("Could not call uname()!\n"); + MPI_Abort(MPI_COMM_WORLD, 1); + } + + strcpy(hostname, name.nodename); + + /* + char* filename = "/etc/HOSTNAME"; + FILE* file = fopen(filename, "r"); + if (!file) + { + printf("Could not open: %s\n", filename); + MPI_Abort(MPI_COMM_WORLD, 1); + } + fscanf(file, "%s", hostname); + fclose(file); + */ +} + +void write_data() +{ + debug("write_data(): %s\n", output); + read_hostname(); + FILE* file = fopen(output, "a"); + check(file, "could not write to file!"); + fprintf(file, "rank: %i/%i %s\n", + mpi_rank, mpi_size, hostname); + fclose(file); +} + void print_help() { printf("usage: \n"); Modified: trunk/tests/mpi/fusion/long/sites.template.xml =================================================================== --- trunk/tests/mpi/fusion/long/sites.template.xml 2011-09-15 14:43:40 UTC (rev 5120) +++ trunk/tests/mpi/fusion/long/sites.template.xml 2011-09-15 19:36:27 UTC (rev 5121) @@ -8,21 +8,19 @@ - 100 - 7200 + 1 + 1 1 - 6 - 6 + 2 + 2 DEBUG {wdir} + shared 5.99 10000 + {wdir} - - Modified: trunk/tests/mpi/fusion/long/tc.template.data =================================================================== --- trunk/tests/mpi/fusion/long/tc.template.data 2011-09-15 14:43:40 UTC (rev 5120) +++ trunk/tests/mpi/fusion/long/tc.template.data 2011-09-15 19:36:27 UTC (rev 5121) @@ -17,7 +17,4 @@ localhost paste /bin/paste INSTALLED INTEL32::LINUX null localhost cp /bin/cp INSTALLED INTEL32::LINUX null -# hydra-tests-2 - -fusion mpi_cp _DIR_/mpi-cp INSTALLED INTEL32::LINUX globus::hostCount=2 -fusion mpi_sleep _DIR_/mpi-sleep INSTALLED INTEL32::LINUX globus::hostCount=2 +fusion mpi_sleep _DIR_/mpi-sleep INSTALLED INTEL32::LINUX globus::mpi.processes=4;globus::mpi.ppn=2 Modified: trunk/tests/mpi/fusion/short/tc.template.data =================================================================== --- trunk/tests/mpi/fusion/short/tc.template.data 2011-09-15 14:43:40 UTC (rev 5120) +++ trunk/tests/mpi/fusion/short/tc.template.data 2011-09-15 19:36:27 UTC (rev 5121) @@ -19,4 +19,4 @@ # hydra-tests-2 -fusion mpi_cp _DIR_/mpi-cp INSTALLED INTEL32::LINUX globus::hostCount=2 +fusion mpi_cp _DIR_/mpi-cp INSTALLED INTEL32::LINUX globus::mpi.processes=2 From davidk at ci.uchicago.edu Thu Sep 15 16:13:19 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Thu, 15 Sep 2011 16:13:19 -0500 (CDT) Subject: [Swift-commit] r5122 - trunk/docs/userguide Message-ID: <20110915211319.784519CCBF@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-15 16:13:18 -0500 (Thu, 15 Sep 2011) New Revision: 5122 Modified: trunk/docs/userguide/coasters trunk/docs/userguide/profiles Log: Updated documentation to replace workersPerNode to jobsPerNode Added units to maxtime description Modified: trunk/docs/userguide/coasters =================================================================== --- trunk/docs/userguide/coasters 2011-09-15 19:36:27 UTC (rev 5121) +++ trunk/docs/userguide/coasters 2011-09-15 21:13:18 UTC (rev 5122) @@ -60,7 +60,7 @@ |================= |Profile key|Brief description |slots|How many maximum LRM jobs/worker blocks are allowed -|workersPerNode|How many coaster workers to run per execution node +|jobsPerNode|How many coaster workers to run per execution node |nodeGranularity|Each worker block uses a number of nodes that is a multiple of this number |lowOverallocation|How many times larger than the job walltime should a @@ -70,11 +70,11 @@ |overallocationDecayFactor|How quickly should the overallocation curve tend towards the highOverallocation as job walltimes get larger |spread|By how much should worker blocks vary in worker size -|workersPerNode|How many coaster workers to run per execution node +|jobsPerNode|How many coaster workers to run per execution node |reserve|How many seconds to reserve in a block's walltime for starting/shutdown operations |maxnodes|The maximum number of nodes allowed in a block -|maxtime|The maximum number of walltime allowed for a block +|maxtime|The maximum walltime allowed for a block, in integer seconds |remoteMonitorEnabled|If true, show a graphical display of the status of the coaster service |================== Modified: trunk/docs/userguide/profiles =================================================================== --- trunk/docs/userguide/profiles 2011-09-15 19:36:27 UTC (rev 5121) +++ trunk/docs/userguide/profiles 2011-09-15 21:13:18 UTC (rev 5122) @@ -115,7 +115,7 @@ maximum number of jobs/blocks that the coaster scheduler will have running at any given time. The default is 20. -workersPerNode - This parameter determines how many coaster workers are +jobsPerNode - This parameter determines how many coaster workers are started one each compute node. The default value is 1. nodeGranularity - When allocating a coaster worker block, this parameter @@ -171,7 +171,8 @@ maxnodes - Determines the maximum number of nodes that can be allocated in one coaster block. Default: unlimited. -maxtime - Indicates the maximum walltime that a coaster block can have. +maxtime - Indicates the maximum walltime, in seconds, that a coaster +block can have. Default: unlimited. remoteMonitorEnabled - If set to "true", the client side will get a From davidk at ci.uchicago.edu Mon Sep 19 21:05:31 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Mon, 19 Sep 2011 21:05:31 -0500 (CDT) Subject: [Swift-commit] r5133 - wwwdev/tests Message-ID: <20110920020531.AC7F39D114@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-19 21:05:31 -0500 (Mon, 19 Sep 2011) New Revision: 5133 Modified: wwwdev/tests/tests.pl Log: Update tests.pl to better organize test results Modified: wwwdev/tests/tests.pl =================================================================== --- wwwdev/tests/tests.pl 2011-09-19 22:21:45 UTC (rev 5132) +++ wwwdev/tests/tests.pl 2011-09-20 02:05:31 UTC (rev 5133) @@ -1,4 +1,7 @@ -#!/usr/bin/perl +#!/usr/bin/perl +use strict; +use lib '/home/davidk/modules/'; +use Lingua::EN::Numbers::Ordinate; print <<'END'; Content-type: text/html @@ -11,18 +14,30 @@ END -my @versions = <*/>; -foreach my $version(@versions) { - $version =~ s/\///; - print "

$version

\n
    \n"; - my @results = <$version/*/*.html>; - foreach my $result(@results) { - my @parts = split("/", $result); - my $link_name = $parts[scalar @parts - 2]; - $link_name =~ s/run-//; - print "
  • $link_name
  • \n"; +my @table_data=(); +my $count=1; +my @months = ("Zero", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); + +foreach my $swift_version(<*/>) { + $swift_version =~ s/\///; + $table_data[0] .= "$swift_version"; + + my $previous_month=0; + + foreach my $test_result(<$swift_version/*/*.html>) { + (my $ignore, my $year, my $month, my $day) = (split('-', (split('/', $test_result))[1])); + $day =~ s/^0*//; + $table_data[$count] .= "$months[$month] " . ordinate($day) . ", $year"; + $count++; } - print "
\n"; + + $count=1; } -print "\n"; +# Print table +print "
\n"; +print "$table_data[0]\n"; +foreach my $td(@table_data[1..$#table_data]) { + print "$td\n"; +} +print "
\n"; From ketan at ci.uchicago.edu Sun Sep 18 22:14:10 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Sun, 18 Sep 2011 22:14:10 -0500 (CDT) Subject: [Swift-commit] r5126 - branches/release-0.93/docs/siteguide Message-ID: <20110919031410.5BFAF9CCFC@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-18 22:14:10 -0500 (Sun, 18 Sep 2011) New Revision: 5126 Modified: branches/release-0.93/docs/siteguide/beagle Log: added content to beagle siteguide Modified: branches/release-0.93/docs/siteguide/beagle =================================================================== --- branches/release-0.93/docs/siteguide/beagle 2011-09-19 02:41:02 UTC (rev 5125) +++ branches/release-0.93/docs/siteguide/beagle 2011-09-19 03:14:10 UTC (rev 5126) @@ -52,9 +52,38 @@ A key factor in scaling up Swift runs on Beagle is to setup the sites.xml parameters. The following sites.xml parameters must be set to scale that is intended for a large run: - * walltime: The expected walltime for completion of your run. This parameter is accepted in seconds. - * slots: Number of qsub jobs needs to be submitted by swift. This number will determine how many qsubs swift will submit for your run. Typical values range between 40 and 80 for large runs. - * nodegranularity: Determines the number of nodes per job. Total nodes will thus be slots times nodegranularity. This may vary for advanced configurations though. - * maxnodes: Determines the maximum number of nodes a job must pack into its qsub. This parameter determines the largest single job that your run will submit. + * *maxTime* : The expected walltime for completion of your run. This parameter is accepted in seconds. + * *slots* : Number of qsub jobs needs to be submitted by swift. This number will determine how many qsubs swift will submit for your run. Typical values range between 40 and 80 for large runs. + * *nodeGranularity* : Determines the number of nodes per job. Total nodes will thus be slots times nodegranularity. This may vary for advanced configurations though. + * *maxNodes* : Determines the maximum number of nodes a job must pack into its qsub. This parameter determines the largest single job that your run will submit. + * *jobThrottle* : A factor that determines the number of tasks dispatched simultaneously. The intended number of simultaneous tasks must match the number of cores targeted. The number of tasks is calculated from the jobThrottle factor is as follows: +---- +Number of Tasks = (JobThrottle x 100) + 1 +---- +Following is an example sites.xml for a 50 slots run with each slot occupying 4 nodes (thus, a 200 node run): + +----- + + + + CI-CCR000013 + + 24:cray:pack + + 24 + 50000 + 50 + 4 + 4 + + 48.00 + 10000 + + + /lustre/beagle/ketan/swift.workdir + + +----- + From wozniak at ci.uchicago.edu Mon Sep 19 17:21:45 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Mon, 19 Sep 2011 17:21:45 -0500 (CDT) Subject: [Swift-commit] r5132 - trunk/tests/mpi/fusion/long Message-ID: <20110919222145.F27369D0FC@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-19 17:21:45 -0500 (Mon, 19 Sep 2011) New Revision: 5132 Modified: trunk/tests/mpi/fusion/long/100-mci.check.sh trunk/tests/mpi/fusion/long/100-mci.clean.sh Log: Correct check scripts Modified: trunk/tests/mpi/fusion/long/100-mci.check.sh =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.check.sh 2011-09-19 18:34:02 UTC (rev 5131) +++ trunk/tests/mpi/fusion/long/100-mci.check.sh 2011-09-19 22:21:45 UTC (rev 5132) @@ -4,6 +4,9 @@ # [ -f 100-output.txt ] || exit 1 -grep -q howdy transform-*.txt || exit 1 +for F in transform-*.txt +do + grep -q header ${F} || exit 1 +done exit 0 Modified: trunk/tests/mpi/fusion/long/100-mci.clean.sh =================================================================== --- trunk/tests/mpi/fusion/long/100-mci.clean.sh 2011-09-19 18:34:02 UTC (rev 5131) +++ trunk/tests/mpi/fusion/long/100-mci.clean.sh 2011-09-19 22:21:45 UTC (rev 5132) @@ -2,6 +2,6 @@ set -x -# rm -v transform-*.txt || exit 1 +rm -v transform-*.txt || exit 1 exit 0 From wozniak at ci.uchicago.edu Mon Sep 19 13:31:01 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Mon, 19 Sep 2011 13:31:01 -0500 (CDT) Subject: [Swift-commit] r5130 - trunk/libexec Message-ID: <20110919183101.1BC4D9D0FE@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-19 13:31:00 -0500 (Mon, 19 Sep 2011) New Revision: 5130 Modified: trunk/libexec/_swiftwrap Log: Minor CDM refactoring Modified: trunk/libexec/_swiftwrap =================================================================== --- trunk/libexec/_swiftwrap 2011-09-19 18:18:05 UTC (rev 5129) +++ trunk/libexec/_swiftwrap 2011-09-19 18:31:00 UTC (rev 5130) @@ -399,15 +399,15 @@ fi done -if [ ! -z $CDM_FILE ]; then +if [[ $CDM_FILE != "" ]]; then logstate "LINK_CDM_OUTPUTS" SKIPPED_OUTPUT=() GATHER_OUTPUT=() for L in $OUTF ; do CDM_POLICY=$( cdm_lookup shared/cdm.pl $CDM_FILE $L ) + log "CDM_POLICY: $L -> $CDM_POLICY" if [[ $CDM_POLICY != "DEFAULT" && $CDM_POLICY != "BROADCAST"* ]]; then - log "CDM_POLICY: $L -> $CDM_POLICY" eval cdm_action $DIR "OUTPUT" $L $CDM_POLICY SKIPPED_OUTPUT=( $SKIPPED_OUTPUT $L ) fi From hategan at ci.uchicago.edu Sat Sep 17 23:32:19 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Sat, 17 Sep 2011 23:32:19 -0500 (CDT) Subject: [Swift-commit] r5123 - branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache Message-ID: <20110918043219.6469A9CCB3@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-17 23:32:18 -0500 (Sat, 17 Sep 2011) New Revision: 5123 Modified: branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java Log: fixed file cache deadlock Modified: branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java =================================================================== --- branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java 2011-09-15 21:13:18 UTC (rev 5122) +++ branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java 2011-09-18 04:32:18 UTC (rev 5123) @@ -20,7 +20,7 @@ return s.addFile(entry); } - public synchronized CacheReturn addAndLockEntry(File entry) { + public CacheReturn addAndLockEntry(File entry) { Site s = getSite(entry.getHost()); return s.addAndLockFile(entry); } From wozniak at ci.uchicago.edu Mon Sep 19 13:34:02 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Mon, 19 Sep 2011 13:34:02 -0500 (CDT) Subject: [Swift-commit] r5131 - trunk/libexec/log-processing Message-ID: <20110919183402.58B8A9D0FF@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-19 13:34:02 -0500 (Mon, 19 Sep 2011) New Revision: 5131 Modified: trunk/libexec/log-processing/README.txt Log: More log-processing notes (I thought this was checked in) Modified: trunk/libexec/log-processing/README.txt =================================================================== --- trunk/libexec/log-processing/README.txt 2011-09-19 18:31:00 UTC (rev 5130) +++ trunk/libexec/log-processing/README.txt 2011-09-19 18:34:02 UTC (rev 5131) @@ -84,8 +84,8 @@ swift_plotter.zsh -s blocks.{cfg,eps,data} ------------------------------------------ -Make a job runtime distribution plot from Coasters Cpu log lines ----------------------------------------------------------------- +Make a job run time distribution plot from Coasters Cpu log lines +----------------------------------------------------------------- . Normalize the log. @@ -106,3 +106,24 @@ ------------------------------------------ swift_plotter.zsh -s buckets.cfg buckets.eps buckets.data ------------------------------------------ + +Utilities +^^^^^^^^^ + +* +iso-to-secs+ +Convert human-readable log dates to Unix time + +* +extract-start-time+ +Pull out the first Unix timestamp from the log file + +* +normalise-event-start-time+ +Convert Unix seconds to seconds from start time, given a start time file + +* +normalise-event-start-time-to-any+ +Convert Unix seconds to seconds from start time, given a start time number + +* +sec-to-hour.pl+ +Convert seconds to hours in the Unix time column. + +* +sec-to-min.pl+ +Convert seconds to minutes in the Unix time column. From hategan at ci.uchicago.edu Sat Sep 17 23:35:34 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Sat, 17 Sep 2011 23:35:34 -0500 (CDT) Subject: [Swift-commit] r5124 - trunk/src/org/griphyn/vdl/karajan/lib/cache Message-ID: <20110918043534.B50D99CCFD@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-17 23:35:34 -0500 (Sat, 17 Sep 2011) New Revision: 5124 Modified: trunk/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java Log: merged cache deadlock fix from stable branch Modified: trunk/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java =================================================================== --- trunk/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java 2011-09-18 04:32:18 UTC (rev 5123) +++ trunk/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java 2011-09-18 04:35:34 UTC (rev 5124) @@ -20,7 +20,7 @@ return s.addFile(entry); } - public synchronized CacheReturn addAndLockEntry(File entry) { + public CacheReturn addAndLockEntry(File entry) { Site s = getSite(entry.getHost()); return s.addAndLockFile(entry); } Property changes on: trunk/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java ___________________________________________________________________ Added: svn:mergeinfo + /branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/LRUFileCache.java:5123 From hategan at ci.uchicago.edu Mon Sep 19 03:12:52 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Mon, 19 Sep 2011 03:12:52 -0500 (CDT) Subject: [Swift-commit] r5128 - trunk/libexec Message-ID: <20110919081252.11CC69CD01@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-19 03:12:51 -0500 (Mon, 19 Sep 2011) New Revision: 5128 Modified: trunk/libexec/vdl-lib.xml Log: use the new "case-sensitive" format Modified: trunk/libexec/vdl-lib.xml =================================================================== --- trunk/libexec/vdl-lib.xml 2011-09-19 08:12:17 UTC (rev 5127) +++ trunk/libexec/vdl-lib.xml 2011-09-19 08:12:51 UTC (rev 5128) @@ -2,30 +2,30 @@ - - - - - + + + + + - - + + - + - - + + From ketan at ci.uchicago.edu Sun Sep 18 21:41:02 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Sun, 18 Sep 2011 21:41:02 -0500 (CDT) Subject: [Swift-commit] r5125 - branches/release-0.93/examples/misc Message-ID: <20110919024102.99CD89CCA8@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-18 21:41:02 -0500 (Sun, 18 Sep 2011) New Revision: 5125 Modified: branches/release-0.93/examples/misc/catsn.swift Log: cleaned catsn example Modified: branches/release-0.93/examples/misc/catsn.swift =================================================================== --- branches/release-0.93/examples/misc/catsn.swift 2011-09-18 04:35:34 UTC (rev 5124) +++ branches/release-0.93/examples/misc/catsn.swift 2011-09-19 02:41:02 UTC (rev 5125) @@ -5,9 +5,6 @@ cat @i stdout=@o; } -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - file out[]; foreach j in [1:@toint(@arg("n","10"))] { file data<"data.txt">; From wozniak at ci.uchicago.edu Mon Sep 19 13:18:05 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Mon, 19 Sep 2011 13:18:05 -0500 (CDT) Subject: [Swift-commit] r5129 - in trunk/tests: . cdm Message-ID: <20110919181805.3C1A99D0FD@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-19 13:18:05 -0500 (Mon, 19 Sep 2011) New Revision: 5129 Modified: trunk/tests/USAGENOTES.txt trunk/tests/cdm/301-bcast.swift trunk/tests/suite.sh Log: New SKIP-THIS-TEST feature Modified: trunk/tests/USAGENOTES.txt =================================================================== --- trunk/tests/USAGENOTES.txt 2011-09-19 08:12:51 UTC (rev 5128) +++ trunk/tests/USAGENOTES.txt 2011-09-19 18:18:05 UTC (rev 5129) @@ -18,19 +18,19 @@ [width="30%",cols="s,15",options="header"] |============================================== |Options | Output -|-a | Do not run ant dist. -|-c | Do not remove dist (clean) -|-f | Generate plain text output file. -|-h | This table. -|-k | Skip first N tests. -|-n | Run N tests and quit. -|-p | Do not build the package. -|-s | Do not do a fresh svn checkout. -|-t | Tree mode (alias: -a,-c,-g,-p,-s) -|-x | Do not continue after a failure. -|-v | Verbose (set -x, HTML comments). -|-o output| Location for cog and output. -| | GROUP argument. +|-a | Do not run ant dist. +|-c | Do not remove dist (clean) +|-f | Generate plain text output file. +|-h | This table. +|-k | Skip first N tests. +|-n | Run N tests and quit. +|-p | Do not build the package. +|-s | Do not do a fresh svn checkout. +|-t | Tree mode (alias: -a,-c,-g,-p,-s) +|-x | Do not continue after a failure. +|-v | Verbose (set -x, HTML comments). +|-o output| Location for cog and output. +| | GROUP argument. |============================================== Assuming your code is in *_/tmp/cog_*, where you have the conventional *_cog/modules/swift_* configuration, @@ -48,7 +48,7 @@ When something goes wrong, find and check *tests.log* or use *-v* The script generates by default an HTML report, use *-f* to change -the output to plain text. +the output to plain text. 2. Swift Location ----------------- @@ -70,13 +70,13 @@ ----------------- Each *.swift* test may be accompanied by a: -- *.setup.sh* +- *.setup.sh* - *.check.sh* - *.clean.sh* - *.timeout specifier.* -The scripts may setup and inspect files in *RUNDIR* -including *exec.out* which must be accessed in *stdout.txt* +The scripts may setup and inspect files in *RUNDIR* +including *exec.out* which must be accessed in *stdout.txt* because the currently running tested process writes to *exec.out*; *stdout.txt* is a copy. @@ -150,6 +150,10 @@ The response of *suite.sh* to the exit code of these Swift executions is reversed. +Additionally, some tests may be in a known state of disrepair. These +SwiftScripts contain the token *_SKIP-THIS-TEST_* somewhere, which will +cause the test suite to skip that test. + 8. Schedulers ------------- Environment must contain *PROJECT*, *QUEUE*, and *WORK*. @@ -207,7 +211,7 @@ The prefix number on each test is simply for sorting .E.g., -****************** +****************** ls *.swift ****************** @@ -225,7 +229,7 @@ - Run it! Report problems to swift-devel. - Fix broken tests. - Break down test *GROUPs* into smaller, meaningful *GROUPs* ; it would be good to limit *GROUP* sizes to 20 or so tests. -- Current work has focused on the HTML and stdout output, which is intended to be high-level and clean. +- Current work has focused on the HTML and stdout output, which is intended to be high-level and clean. *********************************************************************************** Using -v results in extremely verbose output. Modified: trunk/tests/cdm/301-bcast.swift =================================================================== --- trunk/tests/cdm/301-bcast.swift 2011-09-19 08:12:51 UTC (rev 5128) +++ trunk/tests/cdm/301-bcast.swift 2011-09-19 18:18:05 UTC (rev 5129) @@ -1,4 +1,6 @@ +// SKIP-THIS-TEST + type file; app (file o) copy (file i) Modified: trunk/tests/suite.sh =================================================================== --- trunk/tests/suite.sh 2011-09-19 08:12:51 UTC (rev 5128) +++ trunk/tests/suite.sh 2011-09-19 18:18:05 UTC (rev 5129) @@ -24,6 +24,7 @@ TEXTREPORT=0 DEFAULT_TIMEOUT=30 # seconds RUN_ANT=1 +# If true, run "ant clean" CLEAN=1 SKIP_TESTS=0 NUMBER_OF_TESTS=1000000 # Run all tests by default @@ -386,8 +387,8 @@ html_a_href $TEST_LOG "$LABEL" elif [ "$RESULT" == "None" ]; then html_td width 25 - html "  " - html_~td + html "  " + html_~td else echo -e "${RED}FAILED${GRAY}" cat $RUNDIR/$TEST_LOG < /dev/null @@ -793,6 +794,12 @@ SWIFTSCRIPT=$1 NAME=${SWIFTSCRIPT%.swift} + if grep -q "SKIP-THIS-TEST" $SWIFTSCRIPT ; then + echo SKIP-THIS-TEST + INDIVIDUAL_TEST_TIME=0 + return 0 + fi + SETUPSCRIPT=$NAME.setup.sh CHECKSCRIPT=$NAME.check.sh CLEANSCRIPT=$NAME.clean.sh From hategan at ci.uchicago.edu Mon Sep 19 03:12:18 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Mon, 19 Sep 2011 03:12:18 -0500 (CDT) Subject: [Swift-commit] r5127 - trunk/src/org/griphyn/vdl/engine Message-ID: <20110919081218.2C6709CCE6@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-19 03:12:17 -0500 (Mon, 19 Sep 2011) New Revision: 5127 Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java Log: case handling for functions Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java =================================================================== --- trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-19 03:14:10 UTC (rev 5126) +++ trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-19 08:12:17 UTC (rev 5127) @@ -1012,7 +1012,7 @@ public StringTemplate function(Function func, VariableScope scope) throws CompilationException { StringTemplate funcST = template("function"); - funcST.setAttribute("name", func.getName()); + funcST.setAttribute("name", mangle(func.getName())); ProcedureSignature funcSignature = functionsMap.get(func.getName()); if(funcSignature == null) { throw new CompilationException("Unknown function: @"+func.getName()); From tga at ci.uchicago.edu Tue Sep 20 12:00:37 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 20 Sep 2011 12:00:37 -0500 (CDT) Subject: [Swift-commit] r5134 - in SwiftApps/SwiftR: . Swift/src Message-ID: <20110920170037.D48DC9CC9B@svn.ci.uchicago.edu> Author: tga Date: 2011-09-20 12:00:37 -0500 (Tue, 20 Sep 2011) New Revision: 5134 Added: SwiftApps/SwiftR/Swift/src/apache-ant-1.8.2-bin.shasum Modified: SwiftApps/SwiftR/Makefile SwiftApps/SwiftR/Swift/src/Makefile SwiftApps/SwiftR/Swift/src/download-src.sh Log: Changed CRAN build process so that it doesn't expect ant to be installed. Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-20 02:05:31 UTC (rev 5133) +++ SwiftApps/SwiftR/Makefile 2011-09-20 17:00:37 UTC (rev 5134) @@ -66,12 +66,14 @@ $(CRAN_PKG): $(PACKAGE_DEPS) $(SWIFT_SRC_NAME).shasum - if [ -d .svn -a -x "`which svn`" ]; then svn info > Swift/svninfo; fi - (cd Swift/src; make removeall) + make -C Swift/src removeall cp $(SWIFT_SRC_NAME).shasum Swift/src R CMD build Swift mv $(GEN_PKG_NAME) $(CRAN_PKG) $(FULL_PKG): $(PACKAGE_DEPS) $(SWIFT_SRC)/.built + - if [ -d .svn -a -x "`which svn`" ]; then svn info > Swift/svninfo; fi + make -C Swift/src removebuild # remove everything aside from final Swift mkdir -p Swift/inst rm -Rf ./$(SWIFT_INST) cp -r $(SWIFT_DIST) $(SWIFT_INST) Modified: SwiftApps/SwiftR/Swift/src/Makefile =================================================================== --- SwiftApps/SwiftR/Swift/src/Makefile 2011-09-20 02:05:31 UTC (rev 5133) +++ SwiftApps/SwiftR/Swift/src/Makefile 2011-09-20 17:00:37 UTC (rev 5134) @@ -4,7 +4,12 @@ # in the package. include make.include +ANT_DIR = apache-ant-1.8.2 +ANT_PKG = apache-ant-1.8.2-bin.tar.bz2 +ANT_PKG_SHASUM = apache-ant-1.8.2-bin.shasum +ANT_PKG_URL = http://www.apache.org/dist//ant/binaries/$(ANT_PKG) + SWIFT_MODULE_SRC = $(SWIFT_SRC_NAME)/modules/swift SWIFT_DIST = $(SWIFT_MODULE_SRC)/dist/swift-svn @@ -13,6 +18,8 @@ SWIFT_BIN = $(SWIFT_INST)/bin/swift + + all: $(SWIFT_BIN) $(SWIFT_SRC_NAME)/.downloadedok: @@ -23,10 +30,12 @@ fi -$(SWIFT_MODULE_SRC)/.built: $(SWIFT_SRC_NAME)/.downloadedok +$(SWIFT_MODULE_SRC)/.built: $(SWIFT_SRC_NAME)/.downloadedok $(ANT_DIR)/.downloadedok # hack to avoid rebuilding if [ ! -f $(SWIFT_BIN) ]; then \ - (cd $(SWIFT_MODULE_SRC) && ant dist && touch .built); \ + java -Dant.home="$(pwd)/$(ANT_DIR)" -classpath $(ANT_DIR)/lib/ant-launcher.jar \ + org.apache.tools.ant.launch.Launcher -f $(SWIFT_MODULE_SRC)/build.xml dist && \ + touch $(SWIFT_MODULE_SRC)/.built; \ fi # Target to make sure that swift exists @@ -38,8 +47,22 @@ cp -r $(SWIFT_DIST) $(SWIFT_INST); \ fi -removeall: removesrc +removeall: removebuild rm -rf ./$(SWIFT_INST) -removesrc: + +removebuild: + rm -rf ./$(ANT_DIR) ./$(ANT_PKG) rm -rf ./$(SWIFT_SRC_NAME) + rm -rf ./$(SWIFT_SRC_NAME).tar.gz + + +fetchant: $(ANT_DIR)/.downloadedok + +$(ANT_DIR)/.downloadedok: + rm -f $(ANT_PKG) + wget $(ANT_PKG_URL) + shasum --check $(ANT_PKG_SHASUM) + rm -rf $(ANT_DIR) + tar xjf $(ANT_PKG) + touch $(ANT_DIR)/.downloadedok Added: SwiftApps/SwiftR/Swift/src/apache-ant-1.8.2-bin.shasum =================================================================== --- SwiftApps/SwiftR/Swift/src/apache-ant-1.8.2-bin.shasum (rev 0) +++ SwiftApps/SwiftR/Swift/src/apache-ant-1.8.2-bin.shasum 2011-09-20 17:00:37 UTC (rev 5134) @@ -0,0 +1 @@ +03f6cb7d052561d536bb8c0802874854c7e357d5 apache-ant-1.8.2-bin.tar.bz2 Modified: SwiftApps/SwiftR/Swift/src/download-src.sh =================================================================== --- SwiftApps/SwiftR/Swift/src/download-src.sh 2011-09-20 02:05:31 UTC (rev 5133) +++ SwiftApps/SwiftR/Swift/src/download-src.sh 2011-09-20 17:00:37 UTC (rev 5134) @@ -7,6 +7,7 @@ exit 1 fi +rm -f ${SWIFT_SRC_NAME}.tar.gz wget http://cs.uchicago.edu/~tga/swiftR/swift-source/${SWIFT_SRC_NAME}.tar.gz shasum --check ${SWIFT_SRC_NAME}.shasum From davidk at ci.uchicago.edu Tue Sep 20 12:52:00 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 20 Sep 2011 12:52:00 -0500 (CDT) Subject: [Swift-commit] r5135 - branches/release-0.93/tests/groups Message-ID: <20110920175200.F22189CCA8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-20 12:52:00 -0500 (Tue, 20 Sep 2011) New Revision: 5135 Added: branches/release-0.93/tests/groups/group-beagle.sh branches/release-0.93/tests/groups/group-crow.sh branches/release-0.93/tests/groups/group-fusion.sh branches/release-0.93/tests/groups/group-mcs.sh Removed: branches/release-0.93/tests/groups/group-pbs.sh branches/release-0.93/tests/groups/group-sge.sh branches/release-0.93/tests/groups/group-ssh.sh branches/release-0.93/tests/groups/local-pbs-coasters.sh branches/release-0.93/tests/groups/local-sge-coasters.sh Modified: branches/release-0.93/tests/groups/ branches/release-0.93/tests/groups/group-intrepid.sh branches/release-0.93/tests/groups/group-queenbee.sh branches/release-0.93/tests/groups/group-surveyor.sh Log: Updates to group scripts Property changes on: branches/release-0.93/tests/groups ___________________________________________________________________ Added: svn:mergeinfo + /trunk/tests/groups:4761-5134 Copied: branches/release-0.93/tests/groups/group-beagle.sh (from rev 5122, trunk/tests/groups/group-beagle.sh) =================================================================== --- branches/release-0.93/tests/groups/group-beagle.sh (rev 0) +++ branches/release-0.93/tests/groups/group-beagle.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -0,0 +1,9 @@ + +# GROUPLIST definition to run on Beagle + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/beagle/coasters \ + $TESTDIR/provdiers/beagle/pbs \ + ) + +checkvars WORK QUEUE PROJECT Copied: branches/release-0.93/tests/groups/group-crow.sh (from rev 5122, trunk/tests/groups/group-crow.sh) =================================================================== --- branches/release-0.93/tests/groups/group-crow.sh (rev 0) +++ branches/release-0.93/tests/groups/group-crow.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run on Crow + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/crow \ + ) + +checkvars WORK QUEUE PROJECT Copied: branches/release-0.93/tests/groups/group-fusion.sh (from rev 5122, trunk/tests/groups/group-fusion.sh) =================================================================== --- branches/release-0.93/tests/groups/group-fusion.sh (rev 0) +++ branches/release-0.93/tests/groups/group-fusion.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run on Fusion + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/fusion/coasters \ + ) + +checkvars WORK QUEUE PROJECT Modified: branches/release-0.93/tests/groups/group-intrepid.sh =================================================================== --- branches/release-0.93/tests/groups/group-intrepid.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/group-intrepid.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -2,7 +2,7 @@ # GROUPLIST definition to run on Intrepid GROUPLIST=( $TESTDIR/local \ - $TESTDIR/providers/local-cobalt/intrepid \ + $TESTDIR/providers/intrepid \ ) checkvars WORK QUEUE PROJECT Copied: branches/release-0.93/tests/groups/group-mcs.sh (from rev 5122, trunk/tests/groups/group-mcs.sh) =================================================================== --- branches/release-0.93/tests/groups/group-mcs.sh (rev 0) +++ branches/release-0.93/tests/groups/group-mcs.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run on MCS bag of machines + +GROUPLIST=( $TESTDIR/local \ + $TESTDIR/providers/mcs \ + ) + +checkvars WORK QUEUE PROJECT Deleted: branches/release-0.93/tests/groups/group-pbs.sh =================================================================== --- branches/release-0.93/tests/groups/group-pbs.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/group-pbs.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -1,7 +0,0 @@ - -# GROUPLIST definition to run pbs tests - -GROUPLIST=( - $TESTDIR/providers/local-pbs \ - $TESTDIR/providers/local-pbs-coasters \ -) Modified: branches/release-0.93/tests/groups/group-queenbee.sh =================================================================== --- branches/release-0.93/tests/groups/group-queenbee.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/group-queenbee.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -2,5 +2,5 @@ GROUPLIST=( $TESTDIR/providers/local \ - $TESTDIR/providers/local-pbs/queenbee \ + $TESTDIR/providers/queenbee/pbs \ ) Deleted: branches/release-0.93/tests/groups/group-sge.sh =================================================================== --- branches/release-0.93/tests/groups/group-sge.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/group-sge.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -1,6 +0,0 @@ - -# GROUPLIST definition to run sge tests - -GROUPLIST=( - $TESTDIR/providers/sge-local \ -) Deleted: branches/release-0.93/tests/groups/group-ssh.sh =================================================================== --- branches/release-0.93/tests/groups/group-ssh.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/group-ssh.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -1,7 +0,0 @@ - -# GROUPLIST definition to run sge tests - -GROUPLIST=( - $TESTDIR/providers/ssh \ - $TESTDIR/providers/ssh-pbs-coasters \ -) Modified: branches/release-0.93/tests/groups/group-surveyor.sh =================================================================== --- branches/release-0.93/tests/groups/group-surveyor.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/group-surveyor.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -2,7 +2,7 @@ # GROUPLIST definition to run on Intrepid GROUPLIST=( $TESTDIR/providers/local \ - $TESTDIR/providers/local-cobalt/surveyor \ - ) + $TESTDIR/providers/surveyor \ +) checkvars WORK QUEUE PROJECT Deleted: branches/release-0.93/tests/groups/local-pbs-coasters.sh =================================================================== --- branches/release-0.93/tests/groups/local-pbs-coasters.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/local-pbs-coasters.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -1,6 +0,0 @@ - -# GROUPLIST definition to run pbs tests - -GROUPLIST=( - $TESTDIR/providers/local-pbs-coasters \ -) Deleted: branches/release-0.93/tests/groups/local-sge-coasters.sh =================================================================== --- branches/release-0.93/tests/groups/local-sge-coasters.sh 2011-09-20 17:00:37 UTC (rev 5134) +++ branches/release-0.93/tests/groups/local-sge-coasters.sh 2011-09-20 17:52:00 UTC (rev 5135) @@ -1,6 +0,0 @@ - -# GROUPLIST definition to run sge tests - -GROUPLIST=( - $TESTDIR/providers/local-sge-coasters \ -) From davidk at ci.uchicago.edu Tue Sep 20 13:08:01 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 20 Sep 2011 13:08:01 -0500 (CDT) Subject: [Swift-commit] r5136 - branches/release-0.93/tests/groups Message-ID: <20110920180801.E814E9CC9B@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-20 13:08:01 -0500 (Tue, 20 Sep 2011) New Revision: 5136 Added: branches/release-0.93/tests/groups/group-pads.sh Log: Update to pads test group Added: branches/release-0.93/tests/groups/group-pads.sh =================================================================== --- branches/release-0.93/tests/groups/group-pads.sh (rev 0) +++ branches/release-0.93/tests/groups/group-pads.sh 2011-09-20 18:08:01 UTC (rev 5136) @@ -0,0 +1,7 @@ + +# GROUPLIST definition to run pbs tests + +GROUPLIST=( + $TESTDIR/providers/pads/coasters \ + $TESTDIR/providers/pads/pbs \ +) From tga at ci.uchicago.edu Tue Sep 20 14:03:47 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 20 Sep 2011 14:03:47 -0500 (CDT) Subject: [Swift-commit] r5137 - in SwiftApps/SwiftR: . Swift/exec Swift/src Message-ID: <20110920190347.49EAE9CC9B@svn.ci.uchicago.edu> Author: tga Date: 2011-09-20 14:03:47 -0500 (Tue, 20 Sep 2011) New Revision: 5137 Removed: SwiftApps/SwiftR/Swift/src/download-src.sh Modified: SwiftApps/SwiftR/Makefile SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh SwiftApps/SwiftR/Swift/src/Makefile Log: Extended timeout; included download-src script in makefile, no need to separate Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-20 18:08:01 UTC (rev 5136) +++ SwiftApps/SwiftR/Makefile 2011-09-20 19:03:47 UTC (rev 5137) @@ -7,7 +7,7 @@ PKG_FILES += Swift/DESCRIPTION PKG_FILES += Swift/NAMESPACE -PKG_FILE += Swift/src/Makefile Swift/src/make.include Swift/src/download-src.sh +PKG_FILE += Swift/src/Makefile Swift/src/make.include PKG_FILES += $(shell find Swift/src/swift-patches -not -path '*/.svn*') PACKAGE_DEPS = $(PKG_FILES) Makefile Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-20 18:08:01 UTC (rev 5136) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-20 19:03:47 UTC (rev 5137) @@ -108,16 +108,17 @@ RPIDS= -TIMEOUT=5 +TIMEOUT=30 function start_timeout { ppid=$$ + child_pid=$1 trap "timeout_handler" SIGHUP ( sleep ${TIMEOUT}s kill -1 $ppid &> /dev/null #SIGHUP - if [ "$1" != "" ]; then - kill -1 $1 &> /dev/null #SIGHUP + if [ "$child_pid" != "" ]; then + kill -1 $child_pid &> /dev/null #SIGHUP fi ) & } Modified: SwiftApps/SwiftR/Swift/src/Makefile =================================================================== --- SwiftApps/SwiftR/Swift/src/Makefile 2011-09-20 18:08:01 UTC (rev 5136) +++ SwiftApps/SwiftR/Swift/src/Makefile 2011-09-20 19:03:47 UTC (rev 5137) @@ -19,13 +19,17 @@ SWIFT_BIN = $(SWIFT_INST)/bin/swift +SHASUM = $(shell if hash shasum &> /dev/null ; then echo shasum ; else echo sha1sum; fi) all: $(SWIFT_BIN) $(SWIFT_SRC_NAME)/.downloadedok: # hack to avoid redoing if [ ! -f $(SWIFT_BIN) ]; then \ - sh ./download-src.sh $(SWIFT_SRC_NAME) && \ + rm -f $(SWIFT_SRC_NAME).tar.gz && \ + wget http://cs.uchicago.edu/~tga/swiftR/swift-source/$(SWIFT_SRC_NAME).tar.gz && \ + $(SHASUM) --check ${SWIFT_SRC_NAME}.shasum && \ + tar xvzf ${SWIFT_SRC_NAME}.tar.gz && \ touch $(SWIFT_SRC_NAME)/.downloadedok ; \ fi @@ -62,7 +66,7 @@ $(ANT_DIR)/.downloadedok: rm -f $(ANT_PKG) wget $(ANT_PKG_URL) - shasum --check $(ANT_PKG_SHASUM) + $(SHASUM) --check $(ANT_PKG_SHASUM) rm -rf $(ANT_DIR) tar xjf $(ANT_PKG) touch $(ANT_DIR)/.downloadedok Deleted: SwiftApps/SwiftR/Swift/src/download-src.sh =================================================================== --- SwiftApps/SwiftR/Swift/src/download-src.sh 2011-09-20 18:08:01 UTC (rev 5136) +++ SwiftApps/SwiftR/Swift/src/download-src.sh 2011-09-20 19:03:47 UTC (rev 5137) @@ -1,14 +0,0 @@ -#!/bin/sh -set -e -SWIFT_SRC_NAME=$1 - -if [ "$SWIFT_SRC_NAME" = "" ] ; then - echo Package name not specified - exit 1 -fi - -rm -f ${SWIFT_SRC_NAME}.tar.gz -wget http://cs.uchicago.edu/~tga/swiftR/swift-source/${SWIFT_SRC_NAME}.tar.gz -shasum --check ${SWIFT_SRC_NAME}.shasum - -tar xvzf ${SWIFT_SRC_NAME}.tar.gz From tga at ci.uchicago.edu Tue Sep 20 14:20:32 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 20 Sep 2011 14:20:32 -0500 (CDT) Subject: [Swift-commit] r5138 - in SwiftApps/SwiftR: . Swift/src Message-ID: <20110920192032.169F79CCA8@svn.ci.uchicago.edu> Author: tga Date: 2011-09-20 14:20:31 -0500 (Tue, 20 Sep 2011) New Revision: 5138 Modified: SwiftApps/SwiftR/Makefile SwiftApps/SwiftR/Swift/src/Makefile Log: Don't download ant unnecessarily, don't rebuild swift unnecessarily Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-20 19:03:47 UTC (rev 5137) +++ SwiftApps/SwiftR/Makefile 2011-09-20 19:20:31 UTC (rev 5138) @@ -99,7 +99,7 @@ $(SWIFT_SRC)/.built: $(COG_SRC)/.checkedout (cd $(SWIFT_SRC) && ant dist && touch .built) -$(COG_SRC)/.checkedout: Swift/src/Makefile +$(COG_SRC)/.checkedout: checkout-swift.sh sh checkout-swift.sh $(COG_SRC) $(SWIFT_PATCH_DIR)/$(SWIFT_SRC_PATCH) $(SWIFT_SRC_TAG) $(COG_SRC_TAG) touch $(COG_SRC)/.checkedout Modified: SwiftApps/SwiftR/Swift/src/Makefile =================================================================== --- SwiftApps/SwiftR/Swift/src/Makefile 2011-09-20 19:03:47 UTC (rev 5137) +++ SwiftApps/SwiftR/Swift/src/Makefile 2011-09-20 19:20:31 UTC (rev 5138) @@ -64,9 +64,12 @@ fetchant: $(ANT_DIR)/.downloadedok $(ANT_DIR)/.downloadedok: - rm -f $(ANT_PKG) - wget $(ANT_PKG_URL) - $(SHASUM) --check $(ANT_PKG_SHASUM) - rm -rf $(ANT_DIR) - tar xjf $(ANT_PKG) - touch $(ANT_DIR)/.downloadedok + # hack to avoid redoing + if [ ! -f $(SWIFT_BIN) ]; then \ + rm -f $(ANT_PKG) && \ + wget $(ANT_PKG_URL) && \ + $(SHASUM) --check $(ANT_PKG_SHASUM) && \ + rm -rf $(ANT_DIR) && \ + tar xjf $(ANT_PKG) && \ + touch $(ANT_DIR)/.downloadedok; \ + fi From hategan at ci.uchicago.edu Tue Sep 20 17:27:00 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Tue, 20 Sep 2011 17:27:00 -0500 (CDT) Subject: [Swift-commit] r5139 - trunk/libexec Message-ID: <20110920222700.7FD869CC9B@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-20 17:27:00 -0500 (Tue, 20 Sep 2011) New Revision: 5139 Modified: trunk/libexec/vdl-lib.xml Log: the hyphen was not a very good idea, since it does not work in the non-xml karajan Modified: trunk/libexec/vdl-lib.xml =================================================================== --- trunk/libexec/vdl-lib.xml 2011-09-20 19:20:31 UTC (rev 5138) +++ trunk/libexec/vdl-lib.xml 2011-09-20 22:27:00 UTC (rev 5139) @@ -2,26 +2,35 @@ - - - - + + + + - - + + - + + + + + + + + + + From hategan at ci.uchicago.edu Tue Sep 20 17:28:37 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Tue, 20 Sep 2011 17:28:37 -0500 (CDT) Subject: [Swift-commit] r5140 - trunk/src/org/griphyn/vdl/engine Message-ID: <20110920222837.732F69CC9B@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-20 17:28:37 -0500 (Tue, 20 Sep 2011) New Revision: 5140 Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java trunk/src/org/griphyn/vdl/engine/ProcedureSignature.java Log: fixed capitalization issues (added definitions for relevant functions) and added deprecation warnings when using the wrong capitalization Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java =================================================================== --- trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-20 22:27:00 UTC (rev 5139) +++ trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-20 22:28:37 UTC (rev 5140) @@ -155,9 +155,28 @@ protected StringTemplate template(String name) { return m_templates.getInstanceOf(name); } + + private void warn(XmlObject obj, String msg) { + msg = "Warning: " + msg + ", at " + getLine(obj.getDomNode()); + logger.info(msg); + System.err.println(msg); + } - private void processImports(Program prog) throws CompilationException { + private String getLine(Node n) { + if (n == null) { + return "line unknown"; + } + Node src = n.getAttributes().getNamedItem("src"); + if (src == null) { + return getLine(n.getParentNode()); + } + else { + return src.getNodeValue(); + } + } + private void processImports(Program prog) throws CompilationException { + Imports imports = prog.getImports(); if(imports!=null) { logger.debug("Processing SwiftScript imports"); @@ -374,7 +393,7 @@ for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); if (Character.isUpperCase(c)) { - sb.append('-'); + sb.append('_'); } sb.append(Character.toLowerCase(c)); } @@ -631,6 +650,11 @@ new HashMap(); ProcedureSignature proc = proceduresMap.get(procName); + + if (proc.isDeprecated()) { + warn(call, "Procedure " + procName + " is deprecated"); + } + StringTemplate callST; if(proc.getInvocationMode() == ProcedureSignature.INVOCATION_USERDEFINED) { callST = template("callUserDefined"); @@ -795,7 +819,7 @@ } } - public void iterateStat(Iterate iterate, VariableScope scope) throws CompilationException { + public void iterateStat(Iterate iterate, VariableScope scope) throws CompilationException { VariableScope loopScope = new VariableScope(this, scope, VariableScope.ENCLOSURE_LOOP); VariableScope innerScope = new VariableScope(this, loopScope, VariableScope.ENCLOSURE_LOOP); @@ -1350,6 +1374,9 @@ if (funcSignature != null) { /* Functions have only one output parameter */ st.setAttribute("datatype", funcSignature.getOutputArray(0).getType()); + if (funcSignature.isDeprecated()) { + warn(f, "Function " + name + " is deprecated"); + } } else throw new CompilationException("Function " + name + " is not defined."); return st; @@ -1371,6 +1398,8 @@ throw new CompilationException("Procedure " + name + " must have exactly one " + "return value to be used in an expression."); } + + warn(c, "Procedure " + name + " is deprecated"); StringTemplate call = template("callexpr"); Modified: trunk/src/org/griphyn/vdl/engine/ProcedureSignature.java =================================================================== --- trunk/src/org/griphyn/vdl/engine/ProcedureSignature.java 2011-09-20 22:27:00 UTC (rev 5139) +++ trunk/src/org/griphyn/vdl/engine/ProcedureSignature.java 2011-09-20 22:28:37 UTC (rev 5140) @@ -16,6 +16,8 @@ private boolean anyNumOfInputArgs; private boolean anyNumOfOutputArgs; /* this is maybe unnecessary*/ private int invocationMode; + + private boolean deprecated; /* Procedure is built in to Swift. */ static public final int INVOCATION_INTERNAL = 600; @@ -114,64 +116,47 @@ public int getInvocationMode() { return this.invocationMode; } + + public boolean isDeprecated() { + return deprecated; + } + public void setDeprecated(boolean deprecated) { + this.deprecated = deprecated; + } + + public static final String STRING = "string"; + public static final String STRING_ARRAY = "string[]"; + public static final String INT = "int"; + public static final String FLOAT = "float"; + public static final String BOOLEAN = "boolean"; + public static final String ANY = "-any"; + public static final String VARGS = "-vargs"; + public static Map makeProcedureSignatures() { Map proceduresMap = new HashMap(); + + add(proceduresMap, "readData", returns(ANY), args(ANY)); + add(proceduresMap, "readData2", returns(ANY), args(ANY)); + add(proceduresMap, "readStructured", returns(ANY), args(ANY)); + add(proceduresMap, "trace", returns(), args(VARGS)); + add(proceduresMap, "tracef", returns(), args(VARGS)); + add(proceduresMap, "fprintf", returns(), args(VARGS)); + add(proceduresMap, "assert", returns(), args(VARGS)); + add(proceduresMap, "writeData", returns(ANY), args(ANY)); + + // backwards compatible; to be removed in the future + addDeprecated(proceduresMap, "readdata", returns(ANY), args(ANY)); + addDeprecated(proceduresMap, "readdata2", returns(ANY), args(ANY)); + addDeprecated(proceduresMap, "readstructured", returns(ANY), args(ANY)); + addDeprecated(proceduresMap, "writedata", returns(ANY), args(ANY)); + + for (Map.Entry e : proceduresMap.entrySet()) { + e.getValue().setInvocationMode(INVOCATION_INTERNAL); + } - ProcedureSignature readData = new ProcedureSignature("readData"); - FormalArgumentSignature rdInputArg = new FormalArgumentSignature(true); - readData.addInputArg(rdInputArg); - FormalArgumentSignature rdOutputArg = new FormalArgumentSignature(true); - readData.addOutputArg(rdOutputArg); - readData.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("readData", readData); - - ProcedureSignature readData2 = new ProcedureSignature("readData2"); - FormalArgumentSignature rd2InputArg = new FormalArgumentSignature(true); - readData2.addInputArg(rd2InputArg); - FormalArgumentSignature rd2OutputArg = new FormalArgumentSignature(true); - readData2.addOutputArg(rd2OutputArg); - readData2.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("readData2", readData2); - - ProcedureSignature readStructured = new ProcedureSignature("readStructured"); - FormalArgumentSignature rStInputArg = new FormalArgumentSignature(true); - readStructured.addInputArg(rStInputArg); - FormalArgumentSignature rStOutputArg = new FormalArgumentSignature(true); - readStructured.addOutputArg(rStOutputArg); - readStructured.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("readStructured", readStructured); - - ProcedureSignature trace = new ProcedureSignature("trace"); - trace.setAnyNumOfInputArgs(); - trace.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("trace", trace); - - ProcedureSignature tracef = new ProcedureSignature("tracef"); - tracef.setAnyNumOfInputArgs(); - tracef.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("tracef", tracef); - - ProcedureSignature fprintf = new ProcedureSignature("ftracef"); - fprintf.setAnyNumOfInputArgs(); - fprintf.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("fprintf", fprintf); - - ProcedureSignature assrt = new ProcedureSignature("assert"); - assrt.setAnyNumOfInputArgs(); - assrt.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("assert", assrt); - - ProcedureSignature writeData = new ProcedureSignature("writeData"); - FormalArgumentSignature wdInputArg = new FormalArgumentSignature(true); - writeData.addInputArg(wdInputArg); - FormalArgumentSignature wdOutputArg = new FormalArgumentSignature(true); - writeData.addOutputArg(wdOutputArg); - writeData.setInvocationMode(INVOCATION_INTERNAL); - proceduresMap.put("writeData", writeData); - return proceduresMap; } @@ -180,156 +165,113 @@ Map functionsMap = new HashMap(); - ProcedureSignature arg = new ProcedureSignature("arg"); - FormalArgumentSignature argIn1 = new FormalArgumentSignature("string"); - arg.addInputArg(argIn1); - FormalArgumentSignature argIn2 = new FormalArgumentSignature("string"); - argIn2.setOptional(true); - arg.addInputArg(argIn2); - FormalArgumentSignature argOut1 = new FormalArgumentSignature("string"); - arg.addOutputArg(argOut1); - functionsMap.put(arg.getName(), arg); + add(functionsMap, "arg", returns(STRING), args(STRING, optional(STRING))); - ProcedureSignature extractint = new ProcedureSignature("extractint"); - FormalArgumentSignature extractintIn1 = new FormalArgumentSignature(true); /* file can be specified as any type */ - extractint.addInputArg(extractintIn1); - FormalArgumentSignature extractintOut1 = new FormalArgumentSignature("int"); - extractint.addOutputArg(extractintOut1); - functionsMap.put(extractint.getName(), extractint); + add(functionsMap, "extractInt", returns(INT), args(ANY)); + add(functionsMap, "filename", returns(STRING), args(ANY)); + add(functionsMap, "filenames", returns(STRING_ARRAY), args(ANY)); + add(functionsMap, "dirname", returns(STRING), args(ANY)); + add(functionsMap, "length", returns(INT), args(ANY)); + + add(functionsMap, "regexp", returns(STRING), args(STRING, STRING, STRING)); + add(functionsMap, "strcat", returns(STRING), args(VARGS)); + add(functionsMap, "sprintf", returns(STRING), args(VARGS)); + add(functionsMap, "strcut", returns(STRING), args(STRING, STRING)); + add(functionsMap, "strstr", returns(INT), args(STRING, STRING)); + add(functionsMap, "strsplit", returns(STRING_ARRAY), args(STRING, STRING)); + + add(functionsMap, "toInt", returns(INT), args(ANY)); + add(functionsMap, "toFloat", returns(FLOAT), args(ANY)); + add(functionsMap, "toString", returns(STRING), args(ANY)); + + add(functionsMap, "format", returns(STRING), args(FLOAT, INT)); + add(functionsMap, "pad", returns(STRING), args(INT, INT)); + + add(functionsMap, "java", returns("java"), args(VARGS)); - ProcedureSignature filename = new ProcedureSignature("filename"); - FormalArgumentSignature filenameIn1 = new FormalArgumentSignature(true); /* file can be specified as any type */ - filename.addInputArg(filenameIn1); - FormalArgumentSignature filenameOut1 = new FormalArgumentSignature("string"); - filename.addOutputArg(filenameOut1); - functionsMap.put(filename.getName(), filename); + add(functionsMap, "exists", returns(BOOLEAN), args(VARGS)); + + + // backwards compatible and deprecated lower case version + addDeprecated(functionsMap, "extractint", returns(INT), args(ANY)); + addDeprecated(functionsMap, "toint", returns(INT), args(ANY)); + addDeprecated(functionsMap, "tofloat", returns(FLOAT), args(ANY)); + addDeprecated(functionsMap, "tostring", returns(STRING), args(ANY)); - ProcedureSignature filenames = new ProcedureSignature("filenames"); - FormalArgumentSignature filenamesIn1 = new FormalArgumentSignature(true); /* file can be specified as any type */ - filenames.addInputArg(filenamesIn1); - FormalArgumentSignature filenamesOut1 = new FormalArgumentSignature("string[]"); /* i think this is what it returns */ - filenames.addOutputArg(filenamesOut1); - functionsMap.put(filenames.getName(), filenames); + return functionsMap; + } + + public static final FormalArgumentSignature VARG_SIG = new FormalArgumentSignature(true); - ProcedureSignature dirname = new ProcedureSignature("dirname"); - FormalArgumentSignature dirnameIn1 = new FormalArgumentSignature(true); /* dir can be specified as any type */ - dirname.addInputArg(dirnameIn1); - FormalArgumentSignature dirnameOut1 = new FormalArgumentSignature("string"); - dirname.addOutputArg(dirnameOut1); - functionsMap.put(dirname.getName(), dirname); + private static void addDeprecated(Map map, + String name, FormalArgumentSignature[] returns, FormalArgumentSignature[] args) { + ProcedureSignature sig = buildSig(name, returns, args); + sig.setDeprecated(true); + map.put(name, sig); + } + + private static void add(Map map, + String name, FormalArgumentSignature[] returns, FormalArgumentSignature[] args) { + map.put(name, buildSig(name, returns, args)); + } - ProcedureSignature length = new ProcedureSignature("length"); - FormalArgumentSignature lengthIn1 = new FormalArgumentSignature(true); - length.addInputArg(lengthIn1); - FormalArgumentSignature lengthOut1 = new FormalArgumentSignature("int"); - length.addOutputArg(lengthOut1); - functionsMap.put(length.getName(), length); + private static ProcedureSignature buildSig(String name, + FormalArgumentSignature[] returns, FormalArgumentSignature[] args) { + ProcedureSignature sig = new ProcedureSignature(name); + for (FormalArgumentSignature arg : args) { + if (arg == VARG_SIG) { + sig.setAnyNumOfInputArgs(); + } + else { + sig.addInputArg(arg); + } + } + for (FormalArgumentSignature ret : returns) { + sig.addOutputArg(ret); + } + return sig; + } - ProcedureSignature regexp = new ProcedureSignature("regexp"); - FormalArgumentSignature regexpIn1 = new FormalArgumentSignature("string"); - regexp.addInputArg(regexpIn1); - FormalArgumentSignature regexpIn2 = new FormalArgumentSignature("string"); - regexp.addInputArg(regexpIn2); - FormalArgumentSignature regexpIn3 = new FormalArgumentSignature("string"); - regexp.addInputArg(regexpIn3); - FormalArgumentSignature regexpOut1 = new FormalArgumentSignature("string"); - regexp.addOutputArg(regexpOut1); - functionsMap.put(regexp.getName(), regexp); + private static FormalArgumentSignature arg(String type) { + if (type.equals(ANY)) { + return new FormalArgumentSignature(true); + } + else if (type.equals(VARGS)) { + return VARG_SIG; + } + else { + return new FormalArgumentSignature(type); + } + } - ProcedureSignature strcat = new ProcedureSignature("strcat"); - strcat.setAnyNumOfInputArgs(); - FormalArgumentSignature strcatOut1 = new FormalArgumentSignature("string"); - strcat.addOutputArg(strcatOut1); - functionsMap.put(strcat.getName(), strcat); + private static FormalArgumentSignature[] returns(Object ... returns) { + return buildArgs(returns); + } - ProcedureSignature sprintf = new ProcedureSignature("sprintf"); - sprintf.setAnyNumOfInputArgs(); - FormalArgumentSignature sprintfOut1 = new FormalArgumentSignature("string"); - sprintf.addOutputArg(sprintfOut1); - functionsMap.put(sprintf.getName(), sprintf); + private static FormalArgumentSignature[] args(Object ... args) { + return buildArgs(args); + } - ProcedureSignature strcut = new ProcedureSignature("strcut"); - FormalArgumentSignature strcutIn1 = new FormalArgumentSignature("string"); - strcut.addInputArg(strcutIn1); - FormalArgumentSignature strcutIn2 = new FormalArgumentSignature("string"); - strcut.addInputArg(strcutIn2); - FormalArgumentSignature strcutOut1 = new FormalArgumentSignature("string"); - strcut.addOutputArg(strcutOut1); - functionsMap.put(strcut.getName(), strcut); + private static FormalArgumentSignature[] buildArgs(Object[] args) { + FormalArgumentSignature[] r = new FormalArgumentSignature[args.length]; + for (int i = 0; i < args.length; i++) { + if (args[i] instanceof FormalArgumentSignature) { + r[i] = (FormalArgumentSignature) args[i]; + } + else { + r[i] = arg((String) args[i]); + } + } + return r; + } + + private static FormalArgumentSignature optional(String type) { + FormalArgumentSignature arg = arg(type); + arg.setOptional(true); + return arg; + } - ProcedureSignature strstr = new ProcedureSignature("strstr"); - FormalArgumentSignature strstrIn1 = new FormalArgumentSignature("string"); - strstr.addInputArg(strstrIn1); - FormalArgumentSignature strstrIn2 = new FormalArgumentSignature("string"); - strstr.addInputArg(strstrIn2); - FormalArgumentSignature strstrOut1 = new FormalArgumentSignature("int"); - strstr.addOutputArg(strstrOut1); - functionsMap.put(strstr.getName(), strstr); - - ProcedureSignature strsplit = new ProcedureSignature("strsplit"); - FormalArgumentSignature strsplitIn1 = new FormalArgumentSignature("string"); - strsplit.addInputArg(strsplitIn1); - FormalArgumentSignature strsplitIn2 = new FormalArgumentSignature("string"); - strsplit.addInputArg(strsplitIn2); - FormalArgumentSignature strsplitOut1 = new FormalArgumentSignature("string[]"); - strsplit.addOutputArg(strsplitOut1); - functionsMap.put(strsplit.getName(), strsplit); - - ProcedureSignature toint = new ProcedureSignature("toint"); - FormalArgumentSignature tointIn1 = new FormalArgumentSignature(true); - toint.addInputArg(tointIn1); - FormalArgumentSignature toOut1 = new FormalArgumentSignature("int"); - toint.addOutputArg(toOut1); - functionsMap.put(toint.getName(), toint); - - ProcedureSignature tofloat = new ProcedureSignature("tofloat"); - FormalArgumentSignature tofloatIn1 = new FormalArgumentSignature(true); - tofloat.addInputArg(tofloatIn1); - FormalArgumentSignature tofloatOut1 = new FormalArgumentSignature("float"); - tofloat.addOutputArg(tofloatOut1); - functionsMap.put(tofloat.getName(), tofloat); - - ProcedureSignature format = new ProcedureSignature("format"); - FormalArgumentSignature formatIn1 = new FormalArgumentSignature("float"); - FormalArgumentSignature formatIn2 = new FormalArgumentSignature("int"); - format.addInputArg(formatIn1); - format.addInputArg(formatIn2); - FormalArgumentSignature formatOut = new FormalArgumentSignature("string"); - format.addOutputArg(formatOut); - functionsMap.put(format.getName(), format); - - ProcedureSignature pad = new ProcedureSignature("pad"); - FormalArgumentSignature padIn1 = new FormalArgumentSignature("int"); - FormalArgumentSignature padIn2 = new FormalArgumentSignature("int"); - pad.addInputArg(padIn1); - pad.addInputArg(padIn2); - FormalArgumentSignature padOut = new FormalArgumentSignature("string"); - pad.addOutputArg(padOut); - functionsMap.put(pad.getName(), pad); - - ProcedureSignature tostring = new ProcedureSignature("tostring"); - FormalArgumentSignature tostringIn1 = new FormalArgumentSignature(true); - tostring.addInputArg(tostringIn1); - FormalArgumentSignature tostringOut1 = new FormalArgumentSignature("string"); - tostring.addOutputArg(tostringOut1); - functionsMap.put(tostring.getName(), tostring); - - ProcedureSignature java = new ProcedureSignature("java"); - java.setAnyNumOfInputArgs(); - FormalArgumentSignature output = new FormalArgumentSignature("java"); - java.addOutputArg(output); - functionsMap.put(java.getName(), java); - - ProcedureSignature exists = new ProcedureSignature("exists"); - exists.setAnyNumOfInputArgs(); - FormalArgumentSignature existsOut1 = new FormalArgumentSignature("boolean"); - exists.addOutputArg(existsOut1); - functionsMap.put(exists.getName(), exists); - - return functionsMap; - } - - public String toString() { + public String toString() { return outputArgs + " " + name + inputArgs; } } From hategan at ci.uchicago.edu Tue Sep 20 21:07:40 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Tue, 20 Sep 2011 21:07:40 -0500 (CDT) Subject: [Swift-commit] r5141 - branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache Message-ID: <20110921020740.F42399CCA8@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-20 21:07:40 -0500 (Tue, 20 Sep 2011) New Revision: 5141 Modified: branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/File.java Log: fixed file cache deadlock Modified: branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/File.java =================================================================== --- branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/File.java 2011-09-20 22:28:37 UTC (rev 5140) +++ branches/release-0.93/src/org/griphyn/vdl/karajan/lib/cache/File.java 2011-09-21 02:07:40 UTC (rev 5141) @@ -9,6 +9,7 @@ import org.globus.cog.karajan.stack.VariableStack; import org.globus.cog.karajan.workflow.ExecutionException; +import org.globus.cog.karajan.workflow.events.EventBus; import org.globus.cog.karajan.workflow.futures.Future; import org.globus.cog.karajan.workflow.futures.FutureEvaluationException; import org.globus.cog.karajan.workflow.futures.FutureListener; @@ -152,9 +153,13 @@ if (listeners != null) { Iterator i = listeners.iterator(); while (i.hasNext()) { - ListenerStackPair etp = i.next(); + final ListenerStackPair etp = i.next(); i.remove(); - etp.listener.futureModified(this, etp.stack); + EventBus.post(new Runnable() { + public void run() { + etp.listener.futureModified(File.this, etp.stack); + } + }); } } } From hategan at ci.uchicago.edu Tue Sep 20 21:15:17 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Tue, 20 Sep 2011 21:15:17 -0500 (CDT) Subject: [Swift-commit] r5142 - trunk/src/org/griphyn/vdl/engine Message-ID: <20110921021517.1C51A9CCA8@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-20 21:15:16 -0500 (Tue, 20 Sep 2011) New Revision: 5142 Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java Log: also escape underscores in names when mangling to avoid conflicts Modified: trunk/src/org/griphyn/vdl/engine/Karajan.java =================================================================== --- trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-21 02:07:40 UTC (rev 5141) +++ trunk/src/org/griphyn/vdl/engine/Karajan.java 2011-09-21 02:15:16 UTC (rev 5142) @@ -386,13 +386,15 @@ /** * Convert to a case-insensitive representation by - * pre-pending a '^' to upper case letters + * pre-pending a '_' to upper case letters. If the + * original name contains a '_' it will be converted + * to "__" (two underscores). */ private String mangle(String name) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); - if (Character.isUpperCase(c)) { + if (Character.isUpperCase(c) || c == '_') { sb.append('_'); } sb.append(Character.toLowerCase(c)); From hategan at ci.uchicago.edu Wed Sep 21 02:08:27 2011 From: hategan at ci.uchicago.edu (hategan at ci.uchicago.edu) Date: Wed, 21 Sep 2011 02:08:27 -0500 (CDT) Subject: [Swift-commit] r5143 - branches/release-0.93/src/org/griphyn/vdl/mapping Message-ID: <20110921070827.A983B9CCA1@svn.ci.uchicago.edu> Author: hategan Date: 2011-09-21 02:08:26 -0500 (Wed, 21 Sep 2011) New Revision: 5143 Modified: branches/release-0.93/src/org/griphyn/vdl/mapping/ArrayDataNode.java Log: fixed another deadlock Modified: branches/release-0.93/src/org/griphyn/vdl/mapping/ArrayDataNode.java =================================================================== --- branches/release-0.93/src/org/griphyn/vdl/mapping/ArrayDataNode.java 2011-09-21 02:15:16 UTC (rev 5142) +++ branches/release-0.93/src/org/griphyn/vdl/mapping/ArrayDataNode.java 2011-09-21 07:08:26 UTC (rev 5143) @@ -68,11 +68,13 @@ } private void addKey(String name) { + ArrayIndexFutureList w; synchronized(this) { - if (wrapper != null) { - ((ArrayIndexFutureList) wrapper).addKey(name); - } + w = (ArrayIndexFutureList) wrapper; } + if (w != null) { + w.addKey(name); + } } @Override From wozniak at ci.uchicago.edu Wed Sep 21 10:46:45 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 10:46:45 -0500 (CDT) Subject: [Swift-commit] r5144 - trunk/bin Message-ID: <20110921154645.575A19CCA1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 10:46:45 -0500 (Wed, 21 Sep 2011) New Revision: 5144 Modified: trunk/bin/chxml Log: This is incompatible with python3.2 - insist on 2.7 Modified: trunk/bin/chxml =================================================================== --- trunk/bin/chxml 2011-09-21 07:08:26 UTC (rev 5143) +++ trunk/bin/chxml 2011-09-21 15:46:45 UTC (rev 5144) @@ -1,5 +1,7 @@ -#!/usr/bin/env python +#!/usr/bin/env python2.7 +# This does not run under python3.2 - insist on 2.7 for now + # ensures that that there is a sites file specified and that it contains # well-formed xml as well as essential attributes for the specified provider From wozniak at ci.uchicago.edu Wed Sep 21 10:48:47 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 10:48:47 -0500 (CDT) Subject: [Swift-commit] r5145 - trunk/src/org/griphyn/vdl/karajan Message-ID: <20110921154847.5FB0D9CCA1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 10:48:47 -0500 (Wed, 21 Sep 2011) New Revision: 5145 Modified: trunk/src/org/griphyn/vdl/karajan/Loader.java Log: Fix to debugSitesText() Modified: trunk/src/org/griphyn/vdl/karajan/Loader.java =================================================================== --- trunk/src/org/griphyn/vdl/karajan/Loader.java 2011-09-21 15:46:45 UTC (rev 5144) +++ trunk/src/org/griphyn/vdl/karajan/Loader.java 2011-09-21 15:48:47 UTC (rev 5145) @@ -344,7 +344,9 @@ /** Enter the text content of given files into the log - @throws IOException + @param name A token printed in the log + @param file The text file to copy into the log + @throws IOException */ public static void debugText(String name, File file) { Logger textLogger = Logger.getLogger("swift.textfiles"); @@ -361,15 +363,12 @@ } static void debugSitesText(VDL2Config config) { - VDL2Config defaultConfig = null; - try { - defaultConfig = VDL2Config.getDefaultConfig(); - - } catch (IOException e) { - logger.warn("Could not log sites file text"); - } + String defaultPoolFile = + System.getProperty("swift.home") + File.separator + + "etc" + File.separator + "sites.xml"; + String poolFile = config.getPoolFile(); - String defaultPoolFile = defaultConfig.getPoolFile(); + System.out.println(defaultPoolFile); if (poolFile.equals(defaultPoolFile)) { Logger textLogger = Logger.getLogger("swift.textfiles"); textLogger.debug("using default sites file"); From wozniak at ci.uchicago.edu Wed Sep 21 10:53:23 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 10:53:23 -0500 (CDT) Subject: [Swift-commit] r5146 - in trunk/src/org/griphyn/vdl: karajan/lib util Message-ID: <20110921155323.0992C9CCA1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 10:53:22 -0500 (Wed, 21 Sep 2011) New Revision: 5146 Modified: trunk/src/org/griphyn/vdl/karajan/lib/RuntimeStats.java trunk/src/org/griphyn/vdl/util/VDL2Config.java Log: New VDL2Config settings ticker.prefix and ticker.date.format Modified: trunk/src/org/griphyn/vdl/karajan/lib/RuntimeStats.java =================================================================== --- trunk/src/org/griphyn/vdl/karajan/lib/RuntimeStats.java 2011-09-21 15:48:47 UTC (rev 5145) +++ trunk/src/org/griphyn/vdl/karajan/lib/RuntimeStats.java 2011-09-21 15:53:22 UTC (rev 5146) @@ -25,7 +25,8 @@ public static final Arg PA_STATE = new Arg.Positional("state"); //formatter for timestamp against std.err lines - public static final SimpleDateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"); + public static SimpleDateFormat formatter = + new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"); public static final int MIN_PERIOD_MS=1000; public static final int MAX_PERIOD_MS=30000; @@ -74,10 +75,21 @@ t.setDaemon(true); t.start(); setTicker(stack, t); + + // Allow user to reformat output date + String format; + try { + format = VDL2Config.getDefaultConfig().getTickerDateFormat(); + } + catch (IOException e) { + throw new ExecutionException(e); + } + if (format != null && format.length() > 0) + formatter = + new SimpleDateFormat(format); return null; } - public Object vdl_setprogress(VariableStack stack) throws ExecutionException { setProgress(stack, TypeUtil.toString(PA_STATE.getValue(stack))); return null; @@ -116,6 +128,8 @@ private boolean disabled; private boolean shutdown; + String tickerPrefix; + public ProgressTicker() { super("Progress ticker"); try { @@ -123,6 +137,8 @@ logger.info("Ticker disabled in configuration file"); disabled = true; } + tickerPrefix = + VDL2Config.getConfig().getTickerPrefix(); } catch (IOException e) { logger.debug("Could not read swift properties", e); @@ -156,7 +172,7 @@ long now = System.currentTimeMillis(); if(lastDumpTime + MIN_PERIOD_MS > now) return; lastDumpTime = now; - printStates("Progress:"); + printStates(tickerPrefix); } void finalDumpState() { @@ -190,16 +206,16 @@ return summary; } - void printStates(String header) { + void printStates(String prefix) { Map summary = getSummary(); // SimpleDateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"); // output the results of summarization, in a relatively // pretty form - first the preferred order listed elements, // and then anything remaining - System.err.print(header); + System.err.print(prefix + " "); //System.err.print(" time:" + (System.currentTimeMillis() - start)); - System.err.print(" time: " + formatter.format(System.currentTimeMillis())); + System.err.print(formatter.format(System.currentTimeMillis())); for (int pos = 0; pos < preferredOutputOrder.length; pos++) { String key = preferredOutputOrder[pos]; Modified: trunk/src/org/griphyn/vdl/util/VDL2Config.java =================================================================== --- trunk/src/org/griphyn/vdl/util/VDL2Config.java 2011-09-21 15:48:47 UTC (rev 5145) +++ trunk/src/org/griphyn/vdl/util/VDL2Config.java 2011-09-21 15:53:22 UTC (rev 5146) @@ -98,6 +98,8 @@ put("cdm.broadcast.mode", "file"); put("use.provider.staging", "false"); + put("ticker.date.format", ""); + put("ticker.prefix", "Progress: time:"); } private VDL2Config(VDL2Config other) { @@ -215,6 +217,14 @@ return Boolean.valueOf(getProperty(VDL2ConfigProperties.PROVENANCE_LOG, "false")).booleanValue(); } + public String getTickerDateFormat() { + return getProperty("ticker.date.format"); + } + + public String getTickerPrefix() { + return getProperty("ticker.prefix"); + } + public String toString() { return "Swift configuration " + files; } From wozniak at ci.uchicago.edu Wed Sep 21 11:33:50 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 11:33:50 -0500 (CDT) Subject: [Swift-commit] r5147 - trunk/docs Message-ID: <20110921163350.C6AF79CCA8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 11:33:50 -0500 (Wed, 21 Sep 2011) New Revision: 5147 Modified: trunk/docs/README Log: Note about asciidoc/python Modified: trunk/docs/README =================================================================== --- trunk/docs/README 2011-09-21 15:53:22 UTC (rev 5146) +++ trunk/docs/README 2011-09-21 16:33:50 UTC (rev 5147) @@ -9,3 +9,6 @@ To build, run: build_docs.sh + +Note that asciidoc requires Python between 2.4 and 2.7 +Python 3.2 must not be the python in your PATH From wozniak at ci.uchicago.edu Wed Sep 21 11:37:55 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 11:37:55 -0500 (CDT) Subject: [Swift-commit] r5148 - trunk/docs Message-ID: <20110921163755.6DA1F9CCA8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 11:37:55 -0500 (Wed, 21 Sep 2011) New Revision: 5148 Modified: trunk/docs/build_docs.sh Log: Allow user to suppress creation of PDFs via -d Modified: trunk/docs/build_docs.sh =================================================================== --- trunk/docs/build_docs.sh 2011-09-21 16:33:50 UTC (rev 5147) +++ trunk/docs/build_docs.sh 2011-09-21 16:37:55 UTC (rev 5148) @@ -1,5 +1,7 @@ #!/bin/bash +# Usage: See usage() for usage + # crash: Report a problem and exit crash() { @@ -8,18 +10,44 @@ exit 1 } -# Change file permissions to values set below +# Output directory mode CHMOD_DIRECTORY_MODE="775" +# Output file mode CHMOD_FILE_MODE="664" +# Output group GROUP="vdl2-svn" +# Make PDFs iff MAKE_PDF=1 +MAKE_PDF=1 -# Verify correct arguments -if [ -z "$1" ] || [ "$1" == "-h" ] || [ "$1" == "-help" ]; then - crash "Usage: ./build_docs.sh /path/to/copy/output" -fi +# See getopts loop below for options +usage() +{ + echo "Usage: ./build_docs.sh " +} +while getopts "dh" OPTION +do + case ${OPTION} in + d) + MAKE_PDF=0 + shift + ;; + h) + usage + exit 0 + ;; + esac +done + INSTALLATION_DIRECTORY=$1 +if [[ $INSTALLATION_DIRECTORY == "" ]] +then + echo "Not given: installation directory" + usage + exit 1 +fi + # Create installation directory if needed if [ ! -d "$INSTALLATION_DIRECTORY" ]; then mkdir $INSTALLATION_DIRECTORY || crash "Unable to create directory $INSTALLATION_DIRECTORY" @@ -43,9 +71,16 @@ for file in $FILES do echo Converting $directory"$file" to HTML - asciidoc -a toc -a toclevels=2 -a max-width=750px -a textwidth=80 -a stylesheet=$(pwd)/../stylesheets/asciidoc.css $file - echo Converting $directory"$file" to PDF - a2x --format=pdf --no-xmllint $file + asciidoc -a toc -a toclevels=2 \ + -a max-width=750px \ + -a textwidth=80 \ + -a stylesheet=$(pwd)/../stylesheets/asciidoc.css \ + $file + if (( MAKE_PDF )) + then + echo Converting $directory"$file" to PDF + a2x --format=pdf --no-xmllint $file + fi done if [ ! -d "$INSTALLATION_DIRECTORY/$VERSION" ]; then From wozniak at ci.uchicago.edu Wed Sep 21 11:38:31 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 11:38:31 -0500 (CDT) Subject: [Swift-commit] r5149 - trunk/docs/userguide Message-ID: <20110921163831.62DE29CCA8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 11:38:31 -0500 (Wed, 21 Sep 2011) New Revision: 5149 Modified: trunk/docs/userguide/cdm Log: Clean up CDM usage guide Modified: trunk/docs/userguide/cdm =================================================================== --- trunk/docs/userguide/cdm 2011-09-21 16:37:55 UTC (rev 5148) +++ trunk/docs/userguide/cdm 2011-09-21 16:38:31 UTC (rev 5149) @@ -1,28 +1,34 @@ -Collective Data Management --------------------------- -Overview -~~~~~~~~ -. The user specifies a CDM policy in a file, customarily fs.data. -. fs.data is given to Swift on the command line. -. The Swift data module (org.globus.swift.data) is informed of the CDM policy. -. At job launch time, the VDL Karajan code queries the CDM policy, +== Collective Data Management + +=== Description + +Collective Data Management (CDM) is a set of optimizations in Swift to +improve data access patterns by Swift. In particular, it can be used +to avoid data staging (extra file copies) on an HPC system or cluster +with a shared file system. + +=== Usage Overview + +. The user specifies a CDM policy in a file, customarily +fs.data+. +. +fs.data+ is given to Swift on the command line. +. The Swift data module is informed of the CDM policy. +. At job launch time, for each file, the Swift mechanics query the CDM policy, .. altering the file staging phase, and - .. sending fs.data to the compute site. + .. sending +fs.data+ to the compute site. . At job run time, the Swift wrapper script - .. consults a Perl script to obtain policy, and + .. consults a Perl script to obtain policy from +fs.data+, and .. uses wrapper extensions to modify data movement. . Similarly, stage out can be changed. - .Command line ----- $ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift ----- -CDM policy file format -~~~~~~~~~~~~~~~~~~~~~~ -.Example +=== CDM policy file format + +==== Example ----- # Describe CDM for my job property GATHER_LIMIT 1 @@ -35,169 +41,167 @@ . A directive, either rule or property . A rule has: - .. A regular expression + .. A regular expression to match on the file name .. A policy token .. Additional policy-specific arguments . A property has .. A policy property token .. The token value -. Comments with # . +. Comments with +#+ . . Blank lines are ignored. +==== Notes -.Notes - -. The policy file is used as a lookup database by Swift and Perl methods. -. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. +. The policy file is used as a lookup database by Swift and Perl +methods. Thus, one should only use basic features such as +.*+ . +. Swift treats file names as URLs, while the wrapper script treats +them as Unix file names. Thus, one should use a wildcard in the +beginning of each file name. +. For example, a lookup with the database above given the argument ++input.txt+ would result in the DIRECT policy. . If the lookup does not succeed, the result is DEFAULT. - . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . -Policy Descriptions -~~~~~~~~~~~~~~~~~~~ -.Default +=== Policy Descriptions +==== DEFAULT -* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. +* Just use file staging as provided by Swift. +Identical to behavior if no CDM file is given. - -.Broadcast +==== DIRECT ----- -rule .*xfile*.data BROADCAST /dev/shm ------ -* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. -* On the BG/P, this will make use of the f2cn tool. -* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. - - -.Direct ------ rule .*input.txt DIRECT /gpfs/scratch/wozniak/ ----- * Allows for direct I/O to the parallel FS without staging. -* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. -* The output files matching the pattern will be stored in the given directory, with links in the job directory. -* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . +* The input files matching the pattern must already exist in the +given directory, a shared file system location. +Links will be placed in the job directory. +* The output files matching the pattern will be stored in the given +directory, with links in the job directory. +* Example: In the rule above, the Swift-generated file name ++./data/input.txt+ would be accessed by the user job in ++/gpfs/homes/wozniak/data/input.txt+ . - -.Local +==== LOCAL ----- -rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K +rule .*input.txt LOCAL dd /gpfs/homes/user/data obs=64K ----- * Allows for client-directed input copy to the compute node. -* The user may specify cp or dd as the input transfer program. -* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. -* Argument list: [tool] [GFS directory] [tool arguments]* +* The user may specify +cp+ or +dd+ as the input transfer program. +* The input files matching the pattern must already exist in the +given directory, a shared file system location. +Copies will be placed in the job directory for use by the user job. +* Argument list: [tool] [directory] [tool arguments]* +// .Gather +// ----- +// property GATHER_LIMIT 500000000 # 500 MB +// property GATHER_DIR /dev/shm/gather +// property GATHER_TARGET /gpfs/wozniak/data/gather_target +// rule .*.output.txt GATHER +// ----- -.Gather ------ -property GATHER_LIMIT 500000000 # 500 MB -property GATHER_DIR /dev/shm/gather -property GATHER_TARGET /gpfs/wozniak/data/gather_target -rule .*.output.txt GATHER ------ +// * The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. +// * The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. +// * The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. +// * As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. +// * If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . +// * Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. -* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. -* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. -* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. -* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. -* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . -* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. +// .Summary -.Summary +// . Files created by application +// . Acquire lock +// . Move files to cache +// . Check cache size +// . If limit exceeded, move all cache files to outbox +// . Release lock +// . If limit was exceeded, stream outbox as tarball to target -. Files created by application -. Acquire lock -. Move files to cache -. Check cache size -. If limit exceeded, move all cache files to outbox -. Release lock -. If limit was exceeded, stream outbox as tarball to target +// .Notes -.Notes +// * Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . +// * vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . -* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . -* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . +// VDL/Karajan processing +// ~~~~~~~~~~~~~~~~~~~~~~ +// . CDM functions are available in Karajan via the cdm namespace. +// . These functions are defined in org.globus.swift.data.Query . +// . If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. -VDL/Karajan processing -~~~~~~~~~~~~~~~~~~~~~~ -. CDM functions are available in Karajan via the cdm namespace. -. These functions are defined in org.globus.swift.data.Query . -. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. +// Swift wrapper CDM routines +// ~~~~~~~~~~~~~~~~~~~~~~~~~~ +// . The cdm.pl script is shipped to the compute node if CDM is enabled. +// . When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). +// . The cdm_action() shell function handles CDM methods, typically just producing a link. -Swift wrapper CDM routines -~~~~~~~~~~~~~~~~~~~~~~~~~~ -. The cdm.pl script is shipped to the compute node if CDM is enabled. -. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). -. The cdm_action() shell function handles CDM methods, typically just producing a link. +// Test cases +// ~~~~~~~~~~ -Test cases -~~~~~~~~~~ +// . Simple test cases are in: +// https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and +// https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs +// . Do a: +// mkdir cdm +// cd cdm +// svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts +// . In cdm-direct, run: +// source ./setup.sh local local local +// . Run workflow: +// swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift +// . Note that staging is skipped for input.txt +// policy: file://localhost/input.txt : DIRECT +// FILE_STAGE_IN_START file=input.txt ... +// FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT +// FILE_STAGE_IN_END file=input.txt ... +// . In the wrapper output, the input file is handled by CDM functionality: +// Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS +// CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct +// CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct +// CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt +// Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE +// . all-pairs is quite similar but uses more policies. -. Simple test cases are in: - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs -. Do a: - mkdir cdm - cd cdm - svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts -. In cdm-direct, run: - source ./setup.sh local local local -. Run workflow: - swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift -. Note that staging is skipped for input.txt - policy: file://localhost/input.txt : DIRECT - FILE_STAGE_IN_START file=input.txt ... - FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT - FILE_STAGE_IN_END file=input.txt ... -. In the wrapper output, the input file is handled by CDM functionality: - Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS - CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt - Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE -. all-pairs is quite similar but uses more policies. +// PTMap case +// ^^^^^^^^^^ +// . Start with vanilla PTMap: +// .. cd cdm +// .. mkdir apps +// .. cd apps +// .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap +// . Source setup.sh +// . Use start.sh, which +// .. applies CDM policy from fs.local.data -PTMap case -^^^^^^^^^^ -. Start with vanilla PTMap: - .. cd cdm - .. mkdir apps - .. cd apps - .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap -. Source setup.sh -. Use start.sh, which - .. applies CDM policy from fs.local.data +// CDM site-aware policy file format +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -CDM site-aware policy file format -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Example -Example +// ----- +// #Describe CDM for my job +// #Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior +// property GATHER_LIMIT 1 +// rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data +// rule cluster1 .*xfile*.data BROADCAST /dev/shm +// rule ANYWHERE .* DEFAULT +// ----- ------ -#Describe CDM for my job -#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior -property GATHER_LIMIT 1 -rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data -rule cluster1 .*xfile*.data BROADCAST /dev/shm -rule ANYWHERE .* DEFAULT ------ +// The lines contain: -The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression for site matchin - .. A regular expression for filename matching - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. +// . A directive, either rule or property +// . A rule has: +// .. A regular expression for site matchin +// .. A regular expression for filename matching +// .. A policy token +// .. Additional policy-specific arguments +// . A property has +// .. A policy property token +// .. The token value +// . Comments with # . +// . Blank lines are ignored. From wozniak at ci.uchicago.edu Wed Sep 21 11:41:03 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 11:41:03 -0500 (CDT) Subject: [Swift-commit] r5150 - trunk/docs/userguide Message-ID: <20110921164103.8BD899CCA8@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 11:41:03 -0500 (Wed, 21 Sep 2011) New Revision: 5150 Modified: trunk/docs/userguide/howto_tips Log: Whitespace Modified: trunk/docs/userguide/howto_tips =================================================================== --- trunk/docs/userguide/howto_tips 2011-09-21 16:38:31 UTC (rev 5149) +++ trunk/docs/userguide/howto_tips 2011-09-21 16:41:03 UTC (rev 5150) @@ -34,18 +34,18 @@ files, and have two output files on stdout and stderr: ---- -type file; - -(file o, file e) p() { - app { - mpi stdout=@filename(o) stderr=@filename(e); - } -} - -file mpiout <"mpi.out">; -file mpierr <"mpi.err">; - -(mpiout, mpierr) = p(); +type file; + +(file o, file e) p() { + app { + mpi stdout=@filename(o) stderr=@filename(e); + } +} + +file mpiout <"mpi.out">; +file mpierr <"mpi.err">; + +(mpiout, mpierr) = p(); ---- Now we define how 'mpi' will run in tc.data: @@ -58,7 +58,7 @@ ---- #!/bin/bash -mpirun -np 3 -machinefile $PBS_NODEFILE /home/benc/mpi/a.out +mpirun -np 3 -machinefile $PBS_NODEFILE /home/benc/mpi/a.out ---- Because of the way that Swift runs its server side code, @@ -95,7 +95,7 @@ site catalog. For example: ---- - -... - + +... + ---- From wozniak at ci.uchicago.edu Wed Sep 21 12:48:45 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Wed, 21 Sep 2011 12:48:45 -0500 (CDT) Subject: [Swift-commit] r5151 - trunk/docs/userguide Message-ID: <20110921174845.782759CCA1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-21 12:48:45 -0500 (Wed, 21 Sep 2011) New Revision: 5151 Modified: trunk/docs/userguide/howto_tips Log: Initial documentation of MPICH/Coasters Modified: trunk/docs/userguide/howto_tips =================================================================== --- trunk/docs/userguide/howto_tips 2011-09-21 16:41:03 UTC (rev 5150) +++ trunk/docs/userguide/howto_tips 2011-09-21 17:48:45 UTC (rev 5151) @@ -27,8 +27,18 @@ Launching MPI jobs from Swift ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Here is an example of running a simple MPI program. +There are several ways to run MPI jobs under Swift. +The simplest is to simply launch the desired +mpiexec+ command line +locally by using the local provider. Two additional use cases are +noted here. + +==== Submission of MPI jobs to remote queues + +// TODO: This seems to require appropriate PBS profile settings + +This use case allows the user to submit an MPI job to a remote queue. + In SwiftScript, we make an invocation that does not look any different from any other invocation. In the below code, we do not have any input files, and have two output files on stdout and stderr: @@ -65,12 +75,42 @@ provider-specific MPI modes (such as GRAM jobType=mpi) should not be used. Instead, the mpirun command should be explicitly invoked. +==== MPICH/Coasters + +In this case, the user desires to launch many MPI jobs within a single +Coasters allocation, reusing Coasters workers for variable-sized jobs. +The reuse of the Coasters workers allows the user to launch many +MPI jobs in rapid succession with minimal overhead. + +The user must access to MPICH compiled for sockets, with +mpiexec+ in +the +PATH+ environment variable. Swift uses this MPICH installation +to launch the user processes on the remote Coasters workers, which are +able to connect back to +mpiexec+ and coordinate the job launch. The +infrastructure must allow the user MPI processes to find each other +and communicate over sockets. + +To configure the user MPI job, simply add +mpi.processes+ and ++mpi.ppn+ to the profile in the +tc.file+: + +---- +pbs_site my_program /path/to/program null null globus::mpi.processes=16;globus::mpi.ppn=8 +---- + +Coasters must be set with +jobsPerNode=1+. + +This runs +mpiexec+ locally, and allocates 2 Coasters workers (2 +nodes), each with 8 MPI processes. Thus, +MPI_COMM_WORLD+ has size +16. + + + Running on Windows ~~~~~~~~~~~~~~~~~~ -Since 10/11/09, the development version of Swift has the ability to run -on a Windows machine, as well as the ability to submit jobs to a Windows -site (provided that an appropriate provider is used). +Swift has the ability to run on a Windows machine, as well as the +ability to submit jobs to a Windows site (provided that an appropriate +provider is used). + In order to launch Swift on Windows, use the provided batch file (swift.bat). In certain cases, when a large number of jar libraries are present in the Swift lib directory and depending on the exact location From wozniak at ci.uchicago.edu Thu Sep 22 10:48:39 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 22 Sep 2011 10:48:39 -0500 (CDT) Subject: [Swift-commit] r5152 - usertools/plotter Message-ID: <20110922154839.C4C609CCB3@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-22 10:48:39 -0500 (Thu, 22 Sep 2011) New Revision: 5152 Modified: usertools/plotter/README.txt Log: Fill in the plotter README Modified: usertools/plotter/README.txt =================================================================== --- usertools/plotter/README.txt 2011-09-21 17:48:45 UTC (rev 5151) +++ usertools/plotter/README.txt 2011-09-22 15:48:39 UTC (rev 5152) @@ -1,6 +1,130 @@ += Swift Plotter +:toc: + Contains a plotter for simple data sets. Produces EPS output from two-column data sets using JFreeChart. -User interface is swift_plotter.zsh +User interface is +swift_plotter.zsh+ + +The overall idea is to produce high-quality, easily customizable +plots by using the great feature set in JFreeChart and providing +a simple, scriptable user interface. + +== Usage + +The plotter accepts a configuration file, a target output file name +for the EPS, and a variable number of data files: + +---- +swift_plotter.zsh -s my_config.cfg my_output.eps my_data.data +---- + +== Configuration + +The output is controlled by the configuration (CFG) file which is +formatted as a Java properties file. Examples may be found +in the Swift +log-processing+ directory and the Swift user guide. + +Java properties files have a +key=value+ format where comments are +denoted with *#*. + +For example, +load.cfg+ contains: +---- +# Set the x label to "time" +xlabel = time +# Set the y label to "load" +ylabel = load +# For the data series in file "load.data", use no shapes +shape.load.data = none +# For the data series in file "load.data", use legend label "load" +label.load.data = load +---- + +=== Configuration properties + +* Numbers may be formatted in obvious ways. + (Cf. Java +Double.parseDouble()+.) +* True/false may be +true+ or +false+. + (Cf. Java +Boolean.parseBoolean()+.) +* Some properties are set on a per-file basis. In this case, part of + the key is the file name. + + ++title+:: Set a plot title. ++xlabel,ylabel+:: Set labels for the X and Y axes. ++width,height+:: Set the width, height of the output EPS in pixels. +Defaults to 400 by 400. ++xmin,xmax,ymin,ymax+:: Set the visible region of the plot. +Defaults to an auto-selection made by JFreeChart. ++bw+:: If true, use black and white only. Default: +false+. ++legend.enabled+:: If true, show a legend. Default: +true+. ++axis.x,axis.y+:: May be +normal+ or +logarithmic+. +Default: +normal+. ++label._filename_+:: Set the legend label for the data series from +file +_filename_+. ++shape._filename_+:: If +none+, use no shape for the data series from +file +_filename_+. + +Example: +---- +width = 6000 +height = 1000 +xmin = 2 +xmax = 3 +ymin = 4 +ymax = 5 +bw = true +# Keep X axis normal but use logarithic Y axis +axis.y = logarithmic +---- + +== Output + +EPS files were chosen because of the ease of using them in LaTeX +documents and the relative ease of producing other high-quality +images from them via ImageMagick: + +---- +convert my_output.eps my_output.png +---- + +== Data + +The data input is two columns of plain text numbers: + +---- +1.965 1.5 + +8 0 +# This is a comment +1 7 # This is also a comment +---- + +As shown, empty lines and +#+ comments are accepted. + +== Plotter options + +The plotter accepts the following options on the command line. + ++-s+:: Use a single Y axis. ++-d+:: Use a double Y axis (dual mode). ++-v+:: Turn on verbose output. + +== Dual mode + +Dual mode allows the user to plot exactly two data series on the +same plot, with separate X axes. + +. Use +-d+ above. +. Specify two data files. +. Instead of +ymin+, +ymax+, specify +ymin1+, +ymax1+, + +ymin2+, +ymax2+. +. The first data series will be plotted with respect to a left-hand + Y axis and the second data series with respect to a right-hand + Y axis. + +== Issues, suggestions, and feature requests + +Send mail to swift-user at ci.uchicago.edu From wozniak at ci.uchicago.edu Thu Sep 22 10:52:03 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 22 Sep 2011 10:52:03 -0500 (CDT) Subject: [Swift-commit] r5153 - usertools/plotter/src/plotter Message-ID: <20110922155203.567BA9CCB3@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-22 10:52:03 -0500 (Thu, 22 Sep 2011) New Revision: 5153 Modified: usertools/plotter/src/plotter/Lines.java usertools/plotter/src/plotter/Plotter.java Log: Clean out unused code Modified: usertools/plotter/src/plotter/Lines.java =================================================================== --- usertools/plotter/src/plotter/Lines.java 2011-09-22 15:48:39 UTC (rev 5152) +++ usertools/plotter/src/plotter/Lines.java 2011-09-22 15:52:03 UTC (rev 5153) @@ -4,12 +4,20 @@ import java.awt.Color; import java.awt.geom.Rectangle2D; -import java.io.*; -import java.util.*; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; import org.apache.commons.io.IOUtils; -import org.apache.xmlgraphics.java2d.ps.EPSDocumentGraphics2D; import org.apache.xmlgraphics.java2d.GraphicContext; +import org.apache.xmlgraphics.java2d.ps.EPSDocumentGraphics2D; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.LogarithmicAxis; @@ -27,104 +35,104 @@ * */ public class Lines { - static Properties properties; + static Properties properties; - static String title = null; - static String xlabel = "x"; - static String ylabel = "y"; - - /** If true, use only black and white */ - public static boolean bw = false; + static String title = null; + static String xlabel = "x"; + static String ylabel = "y"; - static String axis_x_type = "normal"; - static String axis_y_type = "normal"; - - static int width = 400; - static int height = 400; + /** If true, use only black and white */ + public static boolean bw = false; - // null indicates the value was not set by the user - static Double xmin = null; - static Double xmax = null; - static Double ymin = null; - static Double ymax = null; + static String axis_x_type = "normal"; + static String axis_y_type = "normal"; - static boolean withLegend = true; + static int width = 400; + static int height = 400; - /** + // null indicates the value was not set by the user + static Double xmin = null; + static Double xmax = null; + static Double ymin = null; + static Double ymax = null; + + static boolean withLegend = true; + + /** Args: Lines * Reads settings from properties: see scanProperties() Produces EPS output file Data files are two-columns of numbers each - see LineReader.read() and LineReader.array() - */ - public void plotter(String[] args) + */ + public void plotter(String[] args) + { + // Settings: + boolean verbose = false; + + Getopt g = new Getopt("Lines", args, "v"); + int c = -1; + while ((c = g.getopt()) != -1) { - // Settings: - boolean verbose = false; + switch (c) + { + case 'v': + verbose = true; + } + } - Getopt g = new Getopt("Lines", args, "v"); - int c = -1; - while ((c = g.getopt()) != -1) - { - switch (c) - { - case 'v': - verbose = true; - } - } + Bits.init(); + Util.verbose(verbose); - Bits.init(); - Util.verbose(verbose); + String propFile = args[0]; + String output = args[1]; + List names = new ArrayList(); + for (int i = 2; i < args.length; i++) + names.add(args[i]); - String propFile = args[0]; - String output = args[1]; - List names = new ArrayList(); - for (int i = 2; i < args.length; i++) - names.add(args[i]); + List data = new ArrayList(); + List labels = new ArrayList(); - List data = new ArrayList(); - List labels = new ArrayList(); + properties = new Properties(); + load(propFile); + title = properties.getProperty("title"); + xlabel = properties.getProperty("xlabel"); + ylabel = properties.getProperty("ylabel"); - properties = new Properties(); - load(propFile); - title = properties.getProperty("title"); - xlabel = properties.getProperty("xlabel"); - ylabel = properties.getProperty("ylabel"); + scanProperties(); - scanProperties(); + for (String name : names) + { + File file = new File(name); + Util.verbose("open: " + file); + List lines = null; + try + { + lines = LineReader.read(file); - for (String name : names) + if (lines == null) { - File file = new File(name); - Util.verbose("open: " + file); - List lines = null; - try - { - lines = LineReader.read(file); - - if (lines == null) - { - System.err.println("Problem when reading: "+file); - } - } - catch (FileNotFoundException e) - { - System.err.println("not found: " + file); - System.exit(1); - } - double[][] array = LineReader.array(lines); - data.add(array); - addLabel(name, labels); - Util.verbose("array:\n" + toString(array)); + System.err.println("Problem when reading: "+file); } + } + catch (FileNotFoundException e) + { + System.err.println("not found: " + file); + System.exit(1); + } + double[][] array = LineReader.array(lines); + data.add(array); + addLabel(name, labels); + Util.verbose("array:\n" + toString(array)); + } - XYSeriesCollection collection = collection(data, labels, - names); + XYSeriesCollection collection = collection(data, labels, + names); - plot(collection, title, xlabel, ylabel, output); - } + plot(collection, title, xlabel, ylabel, output); + } - /** + /** Generate simple plot. @param collection The x,y data. @param title Plot title. @@ -132,169 +140,165 @@ @param ylabel Y label text. @param output EPS filename. @return true/false depending if the method completed without error or not - */ - public static boolean plot(XYSeriesCollection collection, - String title, String xlabel, - String ylabel, String output) + */ + public static boolean plot(XYSeriesCollection collection, + String title, String xlabel, + String ylabel, String output) + { + EPSDocumentGraphics2D g2d = null; + Rectangle2D.Double rectangle = null; + OutputStream out = null; + + try { - EPSDocumentGraphics2D g2d = null; - Rectangle2D.Double rectangle = null; - OutputStream out = null; + out = new BufferedOutputStream(new FileOutputStream(output)); - try - { - /* out = new FileOutputStream(output); */ - /* out = new BufferedOutputStream(out); */ + g2d = new EPSDocumentGraphics2D(false); + g2d.setGraphicContext + (new GraphicContext()); - /* The above seemed confusing: readability wise, makes perfect sense syntactically wise */ - out = new BufferedOutputStream( new FileOutputStream( output ) ); + rectangle = new Rectangle2D.Double(0, 0, width, height); - g2d = new EPSDocumentGraphics2D(false); - g2d.setGraphicContext - (new GraphicContext()); + g2d.setGraphicContext + (new GraphicContext()); + g2d.setupDocument(out, width, height); + } + catch (IOException e) + { + System.err.println("Problem with file: " + output); + return false; + } - rectangle = new Rectangle2D.Double(0, 0, width, height); + JFreeChart chart = + ChartFactory.createXYLineChart + (title, xlabel, ylabel, collection, + PlotOrientation.VERTICAL, withLegend, false, false); - g2d.setGraphicContext - (new GraphicContext()); - g2d.setupDocument(out, width, height); - } - catch (IOException e) - { - System.err.println("Problem with file: " + output); - return false; - } + setupPlot(chart, collection); + chart.draw(g2d, rectangle); - JFreeChart chart = - ChartFactory.createXYLineChart - (title, xlabel, ylabel, collection, - PlotOrientation.VERTICAL, withLegend, false, false); + try + { + g2d.finish(); + } + catch (Exception e) + { + System.err.println("Error!" + e); + } - setupPlot(chart, collection); - chart.draw(g2d, rectangle); + IOUtils.closeQuietly(out); + System.out.println("PLOTTED: " + output); - try - { - g2d.finish(); - } - catch (Exception e) - { - System.err.println("Error!" + e); - } - - IOUtils.closeQuietly(out); - System.out.println("PLOTTED: " + output); - - return true; - } - /** + return true; + } + /** Stores the label as the Series key. Stores the filename as the Series description. - */ - static XYSeriesCollection collection(List data, - List labels, - List names) + */ + static XYSeriesCollection collection(List data, + List labels, + List names) + { + final XYSeriesCollection collection = new XYSeriesCollection(); + + int count = 0; + for (double[][] d : data) { - final XYSeriesCollection collection = new XYSeriesCollection(); + String label = "data: " + count; + try + { + String s = labels.get(count); + if( !(s.equals("")) ) + label = s; + } + catch (IndexOutOfBoundsException e) + {} - int count = 0; - for (double[][] d : data) - { - String label = "data: " + count; - try - { - String s = labels.get(count); - if( !(s.equals("")) ) - label = s; - } - catch (IndexOutOfBoundsException e) - {} + Util.verbose("label: "+label); + XYSeries series = new XYSeries(label); + for (int i = 0; i < d.length; i++) + series.add(d[i][0], d[i][1]); - Util.verbose("label: "+label); - XYSeries series = new XYSeries(label); - for (int i = 0; i < d.length; i++) - series.add(d[i][0], d[i][1]); - - series.setDescription(names.get(count)); - collection.addSeries(series); - count++; - } - return collection; + series.setDescription(names.get(count)); + collection.addSeries(series); + count++; } + return collection; + } - private static void setupPlot(JFreeChart chart, - XYSeriesCollection collection) + private static void setupPlot(JFreeChart chart, + XYSeriesCollection collection) + { + XYPlot plot = chart.getXYPlot(); + XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); + if (bw) + for (int i = 0; i < plot.getSeriesCount(); i++) + renderer.setSeriesPaint(i, Color.BLACK); + for (int i = 0; i < plot.getSeriesCount(); i++) { - XYPlot plot = chart.getXYPlot(); - XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); - if (bw) - for (int i = 0; i < plot.getSeriesCount(); i++) - renderer.setSeriesPaint(i, Color.BLACK); - for (int i = 0; i < plot.getSeriesCount(); i++) - { - Series series = collection.getSeries(i); - if (! showShape(series.getDescription())) - renderer.setSeriesShapesVisible(i, false); - } - - Plots.setupLegend(chart, properties); - setAxes(plot); - plot.setRenderer(renderer); - plot.setBackgroundPaint(Color.WHITE); + Series series = collection.getSeries(i); + if (! showShape(series.getDescription())) + renderer.setSeriesShapesVisible(i, false); } - static void setAxes(XYPlot plot) + Plots.setupLegend(chart, properties); + setAxes(plot); + plot.setRenderer(renderer); + plot.setBackgroundPaint(Color.WHITE); + } + + static void setAxes(XYPlot plot) + { + setAxisTypes(plot); + + // Actual values: modify if necessary + double axmin, axmax, aymin, aymax; + if (xmin != null || xmax != null) { - setAxisTypes(plot); - - // Actual values: modify if necessary - double axmin, axmax, aymin, aymax; - if (xmin != null || xmax != null) - { - NumberAxis axis = (NumberAxis) plot.getDomainAxis(); - Range range = axis.getRange(); - axmin = range.getLowerBound(); - axmax = range.getUpperBound(); - if (xmin != null) axmin = xmin; - if (xmax != null) axmax = xmax; - axis.setRange(axmin, axmax); - } + NumberAxis axis = (NumberAxis) plot.getDomainAxis(); + Range range = axis.getRange(); + axmin = range.getLowerBound(); + axmax = range.getUpperBound(); + if (xmin != null) axmin = xmin; + if (xmax != null) axmax = xmax; + axis.setRange(axmin, axmax); + } - if (ymin != null || ymax != null) - { - NumberAxis axis = (NumberAxis) plot.getRangeAxis(); - Range range = axis.getRange(); - aymin = range.getLowerBound(); - aymax = range.getUpperBound(); - if (ymin != null) aymin = ymin; - if (ymax != null) aymax = ymax; - axis.setRange(aymin, aymax); - } + if (ymin != null || ymax != null) + { + NumberAxis axis = (NumberAxis) plot.getRangeAxis(); + Range range = axis.getRange(); + aymin = range.getLowerBound(); + aymax = range.getUpperBound(); + if (ymin != null) aymin = ymin; + if (ymax != null) aymax = ymax; + axis.setRange(aymin, aymax); } + } - private static void setAxisTypes(XYPlot plot) + private static void setAxisTypes(XYPlot plot) + { + if (axis_x_type.equals("logarithmic")) { - if (axis_x_type.equals("logarithmic")) - { - NumberAxis domainAxis = new LogarithmicAxis(xlabel); - plot.setDomainAxis(domainAxis); - } - else if (!axis_x_type.equals("normal")) - throw new RuntimeException - ("Invalid axis.x type: " + axis_x_type); - - if (axis_y_type.equals("logarithmic")) - { - NumberAxis rangeAxis = new LogarithmicAxis(ylabel); - plot.setRangeAxis(rangeAxis); - } - else if (!axis_y_type.equals("normal")) - throw new RuntimeException - ("Invalid axis.y type: " + axis_y_type); + NumberAxis domainAxis = new LogarithmicAxis(xlabel); + plot.setDomainAxis(domainAxis); } + else if (!axis_x_type.equals("normal")) + throw new RuntimeException + ("Invalid axis.x type: " + axis_x_type); - /** + if (axis_y_type.equals("logarithmic")) + { + NumberAxis rangeAxis = new LogarithmicAxis(ylabel); + plot.setRangeAxis(rangeAxis); + } + else if (!axis_y_type.equals("normal")) + throw new RuntimeException + ("Invalid axis.y type: " + axis_y_type); + } + + /** Various plot properties. All are currently optional Example. @@ -307,115 +311,100 @@ xlabel = size ylabel = speed label.file.data = legend text + shape.file.data = shape setting width (output image width) height (output image height) xmin, xmax, ymin, ymax (auto-selected if not given) bw (Black and white, true/false, default false) legend.enabled (true/false, default true) - */ - static void scanProperties() - { - String tmp; - tmp = properties.getProperty("width"); - if (tmp != null) - width = Integer.parseInt(tmp.trim()); - tmp = properties.getProperty("height"); - if (tmp != null) - height = Integer.parseInt(tmp.trim()); - tmp = properties.getProperty("xmin"); - if (tmp != null) - xmin = Double.parseDouble(tmp); - tmp = properties.getProperty("xmax"); - if (tmp != null) - xmax = Double.parseDouble(tmp); - tmp = properties.getProperty("ymin"); - if (tmp != null) - ymin = Double.parseDouble(tmp); - tmp = properties.getProperty("ymax"); - if (tmp != null) - ymax = Double.parseDouble(tmp); - tmp = properties.getProperty("bw"); - if (tmp != null) - bw = Boolean.parseBoolean(tmp); - tmp = properties.getProperty("legend.enabled"); - if (tmp != null) - withLegend = Boolean.parseBoolean(tmp); - tmp = properties.getProperty("axis.x"); - if (tmp != null) - axis_x_type = tmp; - tmp = properties.getProperty("axis.y"); - if (tmp != null) - axis_y_type = tmp; - } + */ + static void scanProperties() + { + String tmp; + tmp = properties.getProperty("width"); + if (tmp != null) + width = Integer.parseInt(tmp.trim()); + tmp = properties.getProperty("height"); + if (tmp != null) + height = Integer.parseInt(tmp.trim()); + tmp = properties.getProperty("xmin"); + if (tmp != null) + xmin = Double.parseDouble(tmp); + tmp = properties.getProperty("xmax"); + if (tmp != null) + xmax = Double.parseDouble(tmp); + tmp = properties.getProperty("ymin"); + if (tmp != null) + ymin = Double.parseDouble(tmp); + tmp = properties.getProperty("ymax"); + if (tmp != null) + ymax = Double.parseDouble(tmp); + tmp = properties.getProperty("bw"); + if (tmp != null) + bw = Boolean.parseBoolean(tmp); + tmp = properties.getProperty("legend.enabled"); + if (tmp != null) + withLegend = Boolean.parseBoolean(tmp); + tmp = properties.getProperty("axis.x"); + if (tmp != null) + axis_x_type = tmp; + tmp = properties.getProperty("axis.y"); + if (tmp != null) + axis_y_type = tmp; + } - static void load(String propFile) + static void load(String propFile) + { + try { - try - { - if (propFile.equals("-")) - properties.load(System.in); - else - properties.load(new FileInputStream(propFile)); - } - catch (FileNotFoundException e) - { - System.err.println(e); - System.exit(1); - } - catch (IOException e) - { - e.printStackTrace(); - System.exit(1); - } + if (propFile.equals("-")) + properties.load(System.in); + else + properties.load(new FileInputStream(propFile)); } - - /** - Arrays.copyOfRange is a Java 1.6 feature. - This has the same signature. - */ - /* - static String[] select(String[] s, int p, int q) - { - String[] result = new String[q-p]; - int j = 0; - for (int i = p; i < q; i++) - result[j++] = s[i]; - return result; - } - */ - - static void addLabel(String name, - List labels) + catch (FileNotFoundException e) { - String label = properties.getProperty("label."+name); - if (label == null) - label = ""; - labels.add(label); + System.err.println(e); + System.exit(1); } - - static boolean showShape(String name) + catch (IOException e) { - String mode = properties.getProperty("shape."+name); - // System.out.println(mode); - if ("none".equals(mode)) - return false; - return true; + e.printStackTrace(); + System.exit(1); } + } - static String toString(double[][] array) + static void addLabel(String name, List labels) + { + String label = properties.getProperty("label."+name); + if (label == null) + label = ""; + labels.add(label); + } + + static boolean showShape(String name) + { + String mode = properties.getProperty("shape."+name); + // System.out.println(mode); + if ("none".equals(mode)) + return false; + return true; + } + + static String toString(double[][] array) + { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < array.length; i++) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < array.length; i++) - { - double[] row = array[i]; - for (int j = 0; j < row.length; j++) - { - sb.append(array[i][j]); - if (j < row.length-1) - sb.append(" "); - } - sb.append("\n"); - } - return sb.toString(); + double[] row = array[i]; + for (int j = 0; j < row.length; j++) + { + sb.append(array[i][j]); + if (j < row.length-1) + sb.append(" "); + } + sb.append("\n"); } + return sb.toString(); + } } Modified: usertools/plotter/src/plotter/Plotter.java =================================================================== --- usertools/plotter/src/plotter/Plotter.java 2011-09-22 15:48:39 UTC (rev 5152) +++ usertools/plotter/src/plotter/Plotter.java 2011-09-22 15:52:03 UTC (rev 5153) @@ -1,58 +1,55 @@ package plotter; -import plotter.Lines; -import plotter.Dual; - import gnu.getopt.Getopt; public class Plotter { - public static void main(String[] args) + public static void main(String[] args) + { + Getopt plot = new Getopt( "Plotter", args, "sdh"); + /* + * Fix this check: Need to check to see if the specify one of the types of plots first + * then check to see if the argument counts is correct. + */ + if (args.length < 4 ) { - Getopt plot = new Getopt( "Plotter", args, "sdh"); - /* - * Fix this check: Need to check to see if the specify one of the types of plots first - * then check to see if the argument counts is correct. - */ - if (args.length < 4 ) - { - usage(); - } - - /* Gather the arguments except the first one */ - String[] tmp = new String[args.length - 1]; - for( int i = 0; i < tmp.length; ++i ) - { - tmp[i] = args[i+1]; - } - switch( plot.getopt() ) - { - /* If asking for a single labeled Y-axis */ - case 's': - { - Lines l = new Lines(); - l.plotter( tmp ); - break; - } - /* If asking for a dual labeled Y-axis */ - case 'd': - { - Dual d = new Dual(); - d.plotter( tmp ); - break; - } - /* Do not understand option for what graph */ - default: - { - usage(); - } - } + usage(); } - public static void usage() + /* Gather the arguments except the first one */ + String[] tmp = new String[args.length - 1]; + for( int i = 0; i < tmp.length; ++i ) { - System.err.println( "usage: [-s,-d] [] *" ); - System.exit(2); + tmp[i] = args[i+1]; } + switch( plot.getopt() ) + { + /* If asking for a single labeled Y-axis */ + case 's': + { + Lines l = new Lines(); + l.plotter( tmp ); + break; + } + /* If asking for a dual labeled Y-axis */ + case 'd': + { + Dual d = new Dual(); + d.plotter( tmp ); + break; + } + /* Do not understand option for what graph */ + default: + { + usage(); + } + } + } + + public static void usage() + { + System.err.println( "usage: [-s,-d] [] *" ); + System.exit(2); + } } From wozniak at ci.uchicago.edu Thu Sep 22 10:52:26 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 22 Sep 2011 10:52:26 -0500 (CDT) Subject: [Swift-commit] r5154 - usertools/plotter Message-ID: <20110922155226.467529CCB3@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-22 10:52:26 -0500 (Thu, 22 Sep 2011) New Revision: 5154 Modified: usertools/plotter/ Log: Set ignores Property changes on: usertools/plotter ___________________________________________________________________ Modified: svn:ignore - bin + bin README.html .settings From wozniak at ci.uchicago.edu Thu Sep 22 11:03:18 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Thu, 22 Sep 2011 11:03:18 -0500 (CDT) Subject: [Swift-commit] r5155 - usertools/plotter Message-ID: <20110922160318.B39C09CCB3@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-22 11:03:18 -0500 (Thu, 22 Sep 2011) New Revision: 5155 Modified: usertools/plotter/README.txt Log: Include Overview and Installation Modified: usertools/plotter/README.txt =================================================================== --- usertools/plotter/README.txt 2011-09-22 15:52:26 UTC (rev 5154) +++ usertools/plotter/README.txt 2011-09-22 16:03:18 UTC (rev 5155) @@ -2,16 +2,26 @@ = Swift Plotter :toc: -Contains a plotter for simple data sets. +== Overview -Produces EPS output from two-column data sets using JFreeChart. +This documents a plotter for simple data sets. It produces EPS output +from two-column data sets using JFreeChart. The user interface is ++swift_plotter.zsh+ -User interface is +swift_plotter.zsh+ +The overall idea is to produce high-quality, easily customizable plots +by using the rich feature set in JFreeChart and providing a simple, +scriptable user interface. -The overall idea is to produce high-quality, easily customizable -plots by using the great feature set in JFreeChart and providing -a simple, scriptable user interface. +== Installation +Just check out from SVN and build with Ant: + +---- +svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/plotter +cd plotter +ant +---- + == Usage The plotter accepts a configuration file, a target output file name From tga at ci.uchicago.edu Thu Sep 22 13:52:42 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Thu, 22 Sep 2011 13:52:42 -0500 (CDT) Subject: [Swift-commit] r5156 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110922185242.485159CCA8@svn.ci.uchicago.edu> Author: tga Date: 2011-09-22 13:52:42 -0500 (Thu, 22 Sep 2011) New Revision: 5156 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Changed R worker directory name to avoid clashes when multiple worker machines share same temporary directory (as on beagle) Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-22 16:03:18 UTC (rev 5155) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-22 18:52:42 UTC (rev 5156) @@ -87,12 +87,12 @@ # Ensure that the dir for this slot exists. -BASEDIR=$tmp/$(id -nu)/SwiftR/Rworkers +BASEDIR=$tmp/$(id -nu)/SwiftR/Rworkers.$(hostname) if mkdir -p $BASEDIR; then : else OLD_BASEDIR=$BASEDIR - BASEDIR=$tmp/SwiftR.${SWIFT_WORKER_PID}.Rworkers + BASEDIR=$tmp/SwiftR.$(hostname).${SWIFT_WORKER_PID}.Rworkers mkdir -p $BASEDIR basedir_ok=$? if [ $basedir_ok != 0 ]; then From tga at ci.uchicago.edu Thu Sep 22 15:46:29 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Thu, 22 Sep 2011 15:46:29 -0500 (CDT) Subject: [Swift-commit] r5157 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110922204629.99AA79CCA8@svn.ci.uchicago.edu> Author: tga Date: 2011-09-22 15:46:29 -0500 (Thu, 22 Sep 2011) New Revision: 5157 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Ensure mutex removed in case off error Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-22 18:52:42 UTC (rev 5156) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-22 20:46:29 UTC (rev 5157) @@ -174,7 +174,7 @@ fi # Ready to talk to the server: send request and read response - +#FIXME: what if mutex isn't cleaned up? start_timeout while true; do mkdir $SLOTDIR/mutex @@ -208,15 +208,15 @@ res=$(cat < $SLOTDIR/fromR.fifo) echo DB: Got response: $res + rmdir $SLOTDIR/mutex + + echo DB: Freed $SLOTDIR/mutex + # Test if R server reported an error if echo "$res" | grep -q '^ERROR:' then exit 1 fi - - rmdir $SLOTDIR/mutex - - echo DB: Freed $SLOTDIR/mutex else stop_timeout echo "ERROR: Could not write to fifo ok" From wilde at ci.uchicago.edu Fri Sep 23 17:04:01 2011 From: wilde at ci.uchicago.edu (wilde at ci.uchicago.edu) Date: Fri, 23 Sep 2011 17:04:01 -0500 (CDT) Subject: [Swift-commit] r5158 - trunk/bin/grid Message-ID: <20110923220401.0F7C19CC82@svn.ci.uchicago.edu> Author: wilde Date: 2011-09-23 17:04:00 -0500 (Fri, 23 Sep 2011) New Revision: 5158 Modified: trunk/bin/grid/start-swift-service Log: Remove old port list files between retry attempts. Was causing lines with zeros in port lists from passes when some services had not yet created their sockets. Modified: trunk/bin/grid/start-swift-service =================================================================== --- trunk/bin/grid/start-swift-service 2011-09-22 20:46:29 UTC (rev 5157) +++ trunk/bin/grid/start-swift-service 2011-09-23 22:04:00 UTC (rev 5158) @@ -32,6 +32,7 @@ for (( tries=0; tries < $maxtries; tries++ )); do sleep 1 errors=0 + rm service.sports service.wports for i in `seq -w 0 $((NSERVICES - 1))`; do if [ -s service-$i.sport -a -s service-$i.wport ]; then echo $(cat service-$i.sport) >> service.sports From tga at ci.uchicago.edu Fri Sep 23 18:22:17 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Fri, 23 Sep 2011 18:22:17 -0500 (CDT) Subject: [Swift-commit] r5159 - in SwiftApps/SwiftR: . Swift/R Swift/exec Message-ID: <20110923232217.5CF9C9CC82@svn.ci.uchicago.edu> Author: tga Date: 2011-09-23 18:22:17 -0500 (Fri, 23 Sep 2011) New Revision: 5159 Modified: SwiftApps/SwiftR/Makefile SwiftApps/SwiftR/Swift/R/Workers.R SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Getting the R server cleanup logic working. Modified: SwiftApps/SwiftR/Makefile =================================================================== --- SwiftApps/SwiftR/Makefile 2011-09-23 22:04:00 UTC (rev 5158) +++ SwiftApps/SwiftR/Makefile 2011-09-23 23:22:17 UTC (rev 5159) @@ -7,7 +7,7 @@ PKG_FILES += Swift/DESCRIPTION PKG_FILES += Swift/NAMESPACE -PKG_FILE += Swift/src/Makefile Swift/src/make.include +PKG_FILES += Swift/src/Makefile Swift/src/make.include PKG_FILES += $(shell find Swift/src/swift-patches -not -path '*/.svn*') PACKAGE_DEPS = $(PKG_FILES) Makefile Modified: SwiftApps/SwiftR/Swift/R/Workers.R =================================================================== --- SwiftApps/SwiftR/Swift/R/Workers.R 2011-09-23 22:04:00 UTC (rev 5158) +++ SwiftApps/SwiftR/Swift/R/Workers.R 2011-09-23 23:22:17 UTC (rev 5159) @@ -139,9 +139,10 @@ if(! is.null(workmode) ) { cmdString <- paste(cmdString, "-m", shQuote(workmode)) } - if (! is.null(retries) ) { - cmdString <- paste(cmdString, "-retries", shQuote(retries)) + if (is.null(retries) ) { + retries <- 3 } + cmdString <- paste(cmdString, "-retries", shQuote(retries)) if (server == "local") nodes <- 1 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-23 22:04:00 UTC (rev 5158) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-23 23:22:17 UTC (rev 5159) @@ -53,6 +53,8 @@ fi TRAPS="EXIT 1 2 3 15" +HAS_MUTEX=false +RPID= function onexit() { # FIXME: move this logic into worker.pl, or try to use R timeout option if it works on fifos - need to test. trap - $TRAPS @@ -60,9 +62,38 @@ if [ "_$RPIDS" != _ ]; then kill $RPIDS >& /dev/null fi + + if [ "$HAS_MUTEX" = "true" ]; then + rmdir $SLOTDIR/mutex + HAS_MUTEX=false + fi } +function launchRServer() { + #Start R server and set RPID to the value + + mkfifo $SLOTDIR/toR.fifo + mkfifo $SLOTDIR/fromR.fifo + echo "$0: INFO: Launching $RServerScript $SLOTDIR" + #echo PATH: $PATH > $SLOTDIR/R.log + #which Rscript >> $SLOTDIR/R.log + + echo LD_LIBRARYPATH= $LD_LIBRARY_PATH + PATH=.:$PATH + echo PATH= $PATH + echo R_LIBS_USER= $R_LIBS_USER + + slotdir=$1 + # Use R instead of Rscript due to Rscript issues on some + # platforms (e.g. cray xt) + R --slave --no-restore --file=$RServerScript \ + --args $slotdir >> $slotdir/R.log 2>&1 & # launch R server + RPID=$! + echo $RPID > $SLOTDIR/R.pid + echo "$0: INFO: Launched $RServerScript $slotdir Rscript" +} + trap "onexit 1" 1 trap "onexit 2" 2 trap "onexit 3" 3 @@ -70,19 +101,34 @@ trap "onexit EXIT" EXIT -function idletimer { - cd $1 - while true; do - touch idle - sleep 60 - if [ ! -f lastwrite -o \( idle -nt lastwrite \) ]; then - # FIXME: should work, but does not: echo quit x x >toR.fifo # fifo problem? - RPID=$(cat R.pid) - echo killing idle R process $RPID - kill $RPID - exit 0 +function start_idletimer { + # After the specified number of seconds + # kill the specified R process + local timeout=$1 + local rpid=$2 + local idletimer_id=$$$(date '+%s%N') # timestamp in ns plus pid should be unique + echo "$idletimer_id" > $SLOTDIR/idletimer + ( + sleep ${timeout}s + + touch $SLOTDIR/timeout_reached + # if mutex has been acquired, know another process active + if mkdir $SLOTDIR/mutex ; then + touch $SLOTDIR/timeout_reached_mutex + new_idletimer_id=$(cat $SLOTDIR/idletimer) + echo new: "$new_idletimer_id" old "$idletimer_id" > $SLOTDIR/idletimer_ids + if [ "$new_idletimer_id" = "$idletimer_id" ]; then + touch $SLOTDIR/timeout_reached_mutex_killed + echo killing idle R process $rpid + kill $rpid + rm -f $SLOTDIR/idletimer $SLOTDIR/fromR.fifo $SLOTDIR/toR.fifo + touch $SLOTDIR/timedout + else + touch $SLOTDIR/timeout_reached_mutex_notkilled + fi + rmdir $SLOTDIR/mutex fi - done + ) &> /dev/null & } # Ensure that the dir for this slot exists. @@ -104,28 +150,40 @@ WORKERDIR=$BASEDIR/worker.$SWIFT_WORKER_PID SLOTDIR=$WORKERDIR/${SWIFT_JOB_SLOT} +# terminate timeout as early as possible +rm ${SLOTDIR}/idletimer + mkdir -p $WORKERDIR RPIDS= TIMEOUT=30 +IDLE_TIMEOUT=10 +timeout_pid= + function start_timeout { - ppid=$$ - child_pid=$1 + local ppid=$$ + local child_pid=$1 trap "timeout_handler" SIGHUP ( - sleep ${TIMEOUT}s - kill -1 $ppid &> /dev/null #SIGHUP - if [ "$child_pid" != "" ]; then - kill -1 $child_pid &> /dev/null #SIGHUP - fi + trap "exit 0" 1 # timeout cancelled with SIGHUP + sleep ${TIMEOUT}s + kill -1 $ppid &> /dev/null #SIGHUP + if [ "$child_pid" != "" ]; then + kill -1 $child_pid &> /dev/null #SIGHUP + fi ) & + timeout_pid=$! } function stop_timeout { #DEBUG trap "" SIGHUP + if [ ! -z "$timeout_pid" ]; then + kill -1 $timeout_pid + timeout_pid= + fi } function timeout_handler { @@ -145,48 +203,41 @@ mkdir $SLOTDIR >& /dev/null if [ $? = 0 ]; then - mkfifo $SLOTDIR/toR.fifo - mkfifo $SLOTDIR/fromR.fifo - chmod +x $RServerScript - echo "$0: INFO: Launching $RServerScript $SLOTDIR" - #echo PATH: $PATH > $SLOTDIR/R.log - #which Rscript >> $SLOTDIR/R.log - - echo LD_LIBRARYPATH= $LD_LIBRARY_PATH - PATH=.:$PATH - echo PATH= $PATH - echo R_LIBS_USER= $R_LIBS_USER - # Use R instead of Rscript due to Rscript issues on some - # platforms (e.g. cray xt) - R --slave --no-restore --file=$RServerScript \ - --args $SLOTDIR >> $SLOTDIR/R.log 2>&1 & # launch R server - #$RServerScript $SLOTDIR >> $SLOTDIR/R.log 2>&1 & # launch R server - # idletimer $SLOTDIR /dev/null 2>&1 & # R saves pid in R.pid for idletimer to kill it - echo "$0: INFO: Launched $RServerScript $SLOTDIR Rscript" + launchRServer $SLOTDIR else # wait to make sure fifo exists - # fromR fifo is created last, so wait for that one + # R.pid is created last and left if, so wait for that while true; do - if [ -p $SLOTDIR/fromR.fifo ]; then + if [ -f $SLOTDIR/R.pid ]; then + RPID=$(cat $SLOTDIR/R.pid) break fi done fi +# At this point we've launched an R server, or maybe discovered +# an existing server. IT is still possible that the old server +# was timed out, btu to be sure we will acquire a mutex first # Ready to talk to the server: send request and read response #FIXME: what if mutex isn't cleaned up? start_timeout while true; do + HAS_MUTEX=true mkdir $SLOTDIR/mutex if [ $? != 0 ]; then sleep 1; else + if [ -f $SLOTDIR/timedout ]; then + launchRServer $SLOTDIR + rm -f $SLOTDIR/timedout + fi break; fi done stop_timeout echo DB: Obtained $SLOTDIR/mutex + absimports= for im in $imports; do absimports="$absimports $(pwd)/$im" @@ -207,11 +258,17 @@ res=$(cat < $SLOTDIR/fromR.fifo) echo DB: Got response: $res + + + # While still holding mutex, start timer to shut down idle R server + start_idletimer $IDLE_TIMEOUT $RPID rmdir $SLOTDIR/mutex + HAS_MUTEX=false echo DB: Freed $SLOTDIR/mutex - + + # Test if R server reported an error if echo "$res" | grep -q '^ERROR:' then @@ -221,6 +278,7 @@ stop_timeout echo "ERROR: Could not write to fifo ok" rmdir $SLOTDIR/mutex + HAS_MUTEX=false exit 1 fi From tga at ci.uchicago.edu Fri Sep 23 18:23:58 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Fri, 23 Sep 2011 18:23:58 -0500 (CDT) Subject: [Swift-commit] r5160 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110923232358.6C7609CC82@svn.ci.uchicago.edu> Author: tga Date: 2011-09-23 18:23:58 -0500 (Fri, 23 Sep 2011) New Revision: 5160 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Modified idle timeout to more sensible value Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-23 23:22:17 UTC (rev 5159) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-23 23:23:58 UTC (rev 5160) @@ -158,7 +158,7 @@ RPIDS= TIMEOUT=30 -IDLE_TIMEOUT=10 +IDLE_TIMEOUT=120 timeout_pid= From tga at ci.uchicago.edu Fri Sep 23 18:54:39 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Fri, 23 Sep 2011 18:54:39 -0500 (CDT) Subject: [Swift-commit] r5161 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110923235439.9D1A89CC82@svn.ci.uchicago.edu> Author: tga Date: 2011-09-23 18:54:39 -0500 (Fri, 23 Sep 2011) New Revision: 5161 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Check to see if R process running to better handle unexpected R crashes Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-23 23:23:58 UTC (rev 5160) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-23 23:54:39 UTC (rev 5161) @@ -230,7 +230,15 @@ if [ -f $SLOTDIR/timedout ]; then launchRServer $SLOTDIR rm -f $SLOTDIR/timedout + else + if ps -p $RPID &> /dev/null ; then + : + else + # process no longer running + launchRServer $SLOTDIR + fi fi + break; fi done From davidk at ci.uchicago.edu Sat Sep 24 08:49:51 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 08:49:51 -0500 (CDT) Subject: [Swift-commit] r5162 - branches/release-0.93/bin Message-ID: <20110924134951.D6EE49CCA8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 08:49:51 -0500 (Sat, 24 Sep 2011) New Revision: 5162 Modified: branches/release-0.93/bin/start-coaster-service branches/release-0.93/bin/stop-coaster-service Log: Use coaster-service.conf files from $HOME/.swift Modified: branches/release-0.93/bin/start-coaster-service =================================================================== --- branches/release-0.93/bin/start-coaster-service 2011-09-23 23:54:39 UTC (rev 5161) +++ branches/release-0.93/bin/start-coaster-service 2011-09-24 13:49:51 UTC (rev 5162) @@ -35,7 +35,7 @@ for MACHINE in $WORKER_HOSTS do # Enable ssh tunneling if needed - if [ $SSH_TUNNELING == "yes" ]; then + if [ "$SSH_TUNNELING" == "yes" ]; then ssh -R *:$PORT:localhost:$PORT $WORKER_USERNAME@$MACHINE sleep 999 & echo $! >> $PID_FILE fi @@ -58,6 +58,12 @@ fi for MACHINE in $WORKER_HOSTS do + # Enable ssh tunneling if needed + if [ "$SSH_TUNNELING" == "yes" ]; then + ssh -R *:$PORT:localhost:$PORT $WORKER_USERNAME@$MACHINE sleep 999 & + echo $! >> $PID_FILE + fi + scp $SWIFT_BIN/$WORKER $MACHINE:$WORKER_WORK > /dev/null 2>&1 echo Starting worker on $MACHINE ssh $MACHINE $WORKER_WORK/$WORKER $EXECUTION_URL $MACHINE $LOG_DIR & @@ -105,13 +111,21 @@ return 0 } -PID_FILE=".coaster-service-pids" +if [ ! -d "$HOME/.swift" ]; then + mkdir -p "$HOME/.swift" || crash "Unable to create $HOME/.swift" +fi + +PID_FILE="$HOME/.swift/.coaster-service-pids" RUN_DIR=`pwd` -pushd $(dirname $(readlink -f $0)) > /dev/null 2>&1 # Import settings -CONFIG_FILE="../etc/coaster-service.conf" -if [ -f "$CONFIG_FILE" ]; then +if [ -f "$HOME/.swift/coaster-service.conf" ]; then + CONFIG_FILE="$HOME/.swift/coaster-service.conf" +elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then + CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" +fi + +if [ -n "$CONFIG_FILE" ]; then source "$CONFIG_FILE" else crash "Cannot find coaster-service.conf!" @@ -231,7 +245,7 @@ gensites persistent-coasters -p $CONFIG_FILE > $RUN_DIR/sites.xml # Generate config file -if [ $SHARED_FILESYSTEM == "no" ]; then +if [ "$SHARED_FILESYSTEM" == "no" ]; then echo Generating config file cat > $RUN_DIR/cf << EOF use.provider.staging=true Modified: branches/release-0.93/bin/stop-coaster-service =================================================================== --- branches/release-0.93/bin/stop-coaster-service 2011-09-23 23:54:39 UTC (rev 5161) +++ branches/release-0.93/bin/stop-coaster-service 2011-09-24 13:49:51 UTC (rev 5162) @@ -1,10 +1,5 @@ #!/bin/bash -# Files relative to location of this script -PID_FILE=".coaster-service-pids" -SWIFTVM_INSTANCES=".swiftvm_instances" -CONFIG_FILE="../etc/coaster-service.conf" - # crash: Report a problem and exit crash() { @@ -13,8 +8,21 @@ exit 1 } -pushd $(dirname $(readlink -f $0)) > /dev/null 2>&1 +# Location of required files +PID_FILE="$HOME/.swift/.coaster-service-pids" +SWIFTVM_INSTANCES="$HOME/.swift/.swiftvm_instances" +if [ -f "$HOME/.swift/coaster-service.conf" ]; then + CONFIG_FILE="$HOME/.swift/coaster-service.conf" +elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then + CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" +fi + +if [ -z "$CONFIG_FILE" ]; then + crash "Unable to find coaster-service.conf!" +fi + + # Read config file to determine worker mode if [ -f "$CONFIG_FILE" ]; then source "$CONFIG_FILE" From davidk at ci.uchicago.edu Sat Sep 24 08:51:56 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 08:51:56 -0500 (CDT) Subject: [Swift-commit] r5163 - trunk/bin Message-ID: <20110924135156.A5E309CCA8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 08:51:56 -0500 (Sat, 24 Sep 2011) New Revision: 5163 Modified: trunk/bin/start-coaster-service trunk/bin/stop-coaster-service Log: Use coaster service config files in $HOME/.swift Modified: trunk/bin/start-coaster-service =================================================================== --- trunk/bin/start-coaster-service 2011-09-24 13:49:51 UTC (rev 5162) +++ trunk/bin/start-coaster-service 2011-09-24 13:51:56 UTC (rev 5163) @@ -8,15 +8,6 @@ exit 1 } -# Copy files -copy_requested_files() -{ - for file in $FILES_TO_COPY - do - scp $file $WORKER_USERNAME@$FILES_TO_COPY_REMOTE_DESTINATION - done -} - # Start futuregrid workers start-workers-futuregrid() { @@ -44,7 +35,7 @@ for MACHINE in $WORKER_HOSTS do # Enable ssh tunneling if needed - if [ $SSH_TUNNELING == "yes" ]; then + if [ "$SSH_TUNNELING" == "yes" ]; then ssh -R *:$PORT:localhost:$PORT $WORKER_USERNAME@$MACHINE sleep 999 & echo $! >> $PID_FILE fi @@ -53,10 +44,7 @@ scp $SWIFT_BIN/$WORKER $WORKER_USERNAME@$MACHINE:$WORKER_WORK > /dev/null 2>&1 echo "Starting worker on $MACHINE" ssh $WORKER_USERNAME@$MACHINE $WORKER_WORK/$WORKER $EXECUTION_URL $MACHINE $LOG_DIR & - echo $! >> $PID_FILE - - # Copy requsted file - copy_requested_files + echo $! >> $PID_FILE done } @@ -70,21 +58,17 @@ fi for MACHINE in $WORKER_HOSTS do - # Enayble ssh tunneling if needed - if [ $SSH_TUNNELING == "yes" ]; then + # Enable ssh tunneling if needed + if [ "$SSH_TUNNELING" == "yes" ]; then ssh -R *:$PORT:localhost:$PORT $WORKER_USERNAME@$MACHINE sleep 999 & echo $! >> $PID_FILE - fi + fi - # Copy and start worker script scp $SWIFT_BIN/$WORKER $MACHINE:$WORKER_WORK > /dev/null 2>&1 echo Starting worker on $MACHINE ssh $MACHINE $WORKER_WORK/$WORKER $EXECUTION_URL $MACHINE $LOG_DIR & echo $! >> $PID_FILE done - - # Copy requested files - copy_requested_files return 0 } @@ -127,25 +111,26 @@ return 0 } -PID_FILE=".coaster-service-pids" +if [ ! -d "$HOME/.swift" ]; then + mkdir -p "$HOME/.swift" || crash "Unable to create $HOME/.swift" +fi + +PID_FILE="$HOME/.swift/.coaster-service-pids" RUN_DIR=`pwd` -pushd $(dirname $(readlink -f $0)) > /dev/null 2>&1 # Import settings -CONFIG_FILE="../etc/coaster-service.conf" -if [ -f "$CONFIG_FILE" ]; then +if [ -f "$HOME/.swift/coaster-service.conf" ]; then + CONFIG_FILE="$HOME/.swift/coaster-service.conf" +elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then + CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" +fi + +if [ -n "$CONFIG_FILE" ]; then source "$CONFIG_FILE" else crash "Cannot find coaster-service.conf!" fi -# Determine Swift config file (cf - used for gensites) -if [ -f "$RUN_DIR/cf" ]; then - SWIFT_CONFIG_FILE="$RUN_DIR/cf" -else - SWIFT_CONFIG_FILE=$CONFIG_FILE -fi - # Determine information needed about this machine if [ -z "$IPADDR" ]; then if [ -x "/sbin/ifconfig" ]; then @@ -257,10 +242,10 @@ # Generate sites.xml export EXECUTION_URL="http://$IPADDR:$SERVICE_PORT" echo Generating sites.xml -gensites persistent-coasters -p $SWIFT_CONFIG_FILE > $RUN_DIR/sites.xml +gensites persistent-coasters -p $CONFIG_FILE > $RUN_DIR/sites.xml # Generate config file -if [ $SHARED_FILESYSTEM == "no" ]; then +if [ "$SHARED_FILESYSTEM" == "no" ]; then echo Generating config file cat > $RUN_DIR/cf << EOF use.provider.staging=true Modified: trunk/bin/stop-coaster-service =================================================================== --- trunk/bin/stop-coaster-service 2011-09-24 13:49:51 UTC (rev 5162) +++ trunk/bin/stop-coaster-service 2011-09-24 13:51:56 UTC (rev 5163) @@ -1,10 +1,5 @@ #!/bin/bash -# Files relative to location of this script -PID_FILE=".coaster-service-pids" -SWIFTVM_INSTANCES=".swiftvm_instances" -CONFIG_FILE="../etc/coaster-service.conf" - # crash: Report a problem and exit crash() { @@ -13,8 +8,21 @@ exit 1 } -pushd $(dirname $(readlink -f $0)) > /dev/null 2>&1 +# Location of required files +PID_FILE="$HOME/.swift/.coaster-service-pids" +SWIFTVM_INSTANCES="$HOME/.swift/.swiftvm_instances" +if [ -f "$HOME/.swift/coaster-service.conf" ]; then + CONFIG_FILE="$HOME/.swift/coaster-service.conf" +elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then + CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" +fi + +if [ -z "$CONFIG_FILE" ]; then + crash "Unable to find coaster-service.conf!" +fi + + # Read config file to determine worker mode if [ -f "$CONFIG_FILE" ]; then source "$CONFIG_FILE" From davidk at ci.uchicago.edu Sat Sep 24 13:10:59 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 13:10:59 -0500 (CDT) Subject: [Swift-commit] r5164 - in branches/release-0.93: bin tests tests/groups tests/stress tests/stress/persistent-coasters Message-ID: <20110924181059.F0B6C9CCE6@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 13:10:59 -0500 (Sat, 24 Sep 2011) New Revision: 5164 Added: branches/release-0.93/tests/groups/group-local-coasters.sh branches/release-0.93/tests/groups/group-local.sh branches/release-0.93/tests/groups/group-stress.sh branches/release-0.93/tests/stress/ branches/release-0.93/tests/stress/persistent-coasters/ branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh branches/release-0.93/tests/stress/persistent-coasters/catsn.swift branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf branches/release-0.93/tests/stress/persistent-coasters/data.txt Removed: branches/release-0.93/tests/groups/local-coasters.sh Modified: branches/release-0.93/bin/start-coaster-service branches/release-0.93/bin/stop-coaster-service branches/release-0.93/tests/suite.sh Log: Add ability to repeat tests in suite.sh with scriptname.repeat file Add stress test group to suite Persistent coasters stress test Fixes to start and stop-coaster-service Modified: branches/release-0.93/bin/start-coaster-service =================================================================== --- branches/release-0.93/bin/start-coaster-service 2011-09-24 13:51:56 UTC (rev 5163) +++ branches/release-0.93/bin/start-coaster-service 2011-09-24 18:10:59 UTC (rev 5164) @@ -119,18 +119,18 @@ RUN_DIR=`pwd` # Import settings -if [ -f "$HOME/.swift/coaster-service.conf" ]; then +if [ -f "$RUN_DIR/coaster-service.conf" ]; then + CONFIG_FILE="$RUN_DIR/coaster-service.conf" +elif [ -f "$HOME/.swift/coaster-service.conf" ]; then CONFIG_FILE="$HOME/.swift/coaster-service.conf" elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" -fi - -if [ -n "$CONFIG_FILE" ]; then - source "$CONFIG_FILE" else crash "Cannot find coaster-service.conf!" fi +source $CONFIG_FILE + # Determine information needed about this machine if [ -z "$IPADDR" ]; then if [ -x "/sbin/ifconfig" ]; then Modified: branches/release-0.93/bin/stop-coaster-service =================================================================== --- branches/release-0.93/bin/stop-coaster-service 2011-09-24 13:51:56 UTC (rev 5163) +++ branches/release-0.93/bin/stop-coaster-service 2011-09-24 18:10:59 UTC (rev 5164) @@ -12,24 +12,19 @@ PID_FILE="$HOME/.swift/.coaster-service-pids" SWIFTVM_INSTANCES="$HOME/.swift/.swiftvm_instances" -if [ -f "$HOME/.swift/coaster-service.conf" ]; then +# Import settings +if [ -f "./coaster-service.conf" ]; then + CONFIG_FILE="./coaster-service.conf" +elif [ -f "$HOME/.swift/coaster-service.conf" ]; then CONFIG_FILE="$HOME/.swift/coaster-service.conf" elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" -fi - -if [ -z "$CONFIG_FILE" ]; then - crash "Unable to find coaster-service.conf!" -fi - - -# Read config file to determine worker mode -if [ -f "$CONFIG_FILE" ]; then - source "$CONFIG_FILE" else crash "Cannot find coaster-service.conf!" fi +source "$CONFIG_FILE" + echo Ending coaster processes.. if [ -f "$PID_FILE" ]; then for pid in `cat $PID_FILE` Copied: branches/release-0.93/tests/groups/group-local-coasters.sh (from rev 5145, branches/release-0.93/tests/groups/local-coasters.sh) =================================================================== --- branches/release-0.93/tests/groups/group-local-coasters.sh (rev 0) +++ branches/release-0.93/tests/groups/group-local-coasters.sh 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1,4 @@ + +# GROUPLIST definition to run local coasters tests + +GROUPLIST=( $TESTDIR/providers/local-coasters ) Added: branches/release-0.93/tests/groups/group-local.sh =================================================================== --- branches/release-0.93/tests/groups/group-local.sh (rev 0) +++ branches/release-0.93/tests/groups/group-local.sh 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1,4 @@ + +# GROUPLIST definition to run local coasters tests + +GROUPLIST=( $TESTDIR/providers/local ) Added: branches/release-0.93/tests/groups/group-stress.sh =================================================================== --- branches/release-0.93/tests/groups/group-stress.sh (rev 0) +++ branches/release-0.93/tests/groups/group-stress.sh 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1,8 @@ + +# GROUPLIST definition to run all local tests + +GROUPLIST=( + $TESTDIR/stress/persistent-coasters \ + ) + +checkvars WORK Deleted: branches/release-0.93/tests/groups/local-coasters.sh =================================================================== --- branches/release-0.93/tests/groups/local-coasters.sh 2011-09-24 13:51:56 UTC (rev 5163) +++ branches/release-0.93/tests/groups/local-coasters.sh 2011-09-24 18:10:59 UTC (rev 5164) @@ -1,4 +0,0 @@ - -# GROUPLIST definition to run local coasters tests - -GROUPLIST=( $TESTDIR/providers/local-coasters ) Added: branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1 @@ +1000 Added: branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp $GROUP/coaster-service.conf . +cp $GROUP/data.txt . Property changes on: branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/stress/persistent-coasters/catsn.swift =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.swift (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.swift 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","1"))] { + file data<"data.txt">; + out[j] = cat(data); +} Added: branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1 @@ +999999 Added: branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1,42 @@ +# Keep all interesting settings in one place +# User should modify this to fit environment + +# Location of SWIFT. If empty, PATH is searched +export SWIFT= + +# Where to copy worker.pl on the remote machine for sites.xml +export WORKER_WORK=$HOME/swiftwork + +# How to launch workers: local, ssh, cobalt, or futuregrid +export WORKER_MODE=ssh + +# SSH hosts to start workers on (ssh mode only) +export WORKER_HOSTS="localhost" + +# Do all the worker nodes you're using have a shared filesystem? (yes/no) +export SHARED_FILESYSTEM=yes + +# Username to use on worker nodes +export WORKER_USERNAME=$USER + +# Enable SSH tunneling? (yes/no) +export SSH_TUNNELING=no + +# Directory to keep log files, relative to working directory when launching start-coaster-service +export LOG_DIR=logs + +# Manually define ports. If not specified, an available port will be used +export LOCAL_PORT= +export SERVICE_PORT= + +# start-coaster-service tries to automatically detect the IP address of this system. Specify here if you have multiple network interfaces +export IPADDR= + +# Location of the swift-vm-boot scripts +export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot + +# Swift information for creating sites.xml +export WORK=$HOME/swiftwork +export QUEUE=prod-devel +export MAXTIME=20 +export NODE=64 Added: branches/release-0.93/tests/stress/persistent-coasters/data.txt =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/data.txt (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/data.txt 2011-09-24 18:10:59 UTC (rev 5164) @@ -0,0 +1 @@ +Hello world Modified: branches/release-0.93/tests/suite.sh =================================================================== --- branches/release-0.93/tests/suite.sh 2011-09-24 13:51:56 UTC (rev 5163) +++ branches/release-0.93/tests/suite.sh 2011-09-24 18:10:59 UTC (rev 5164) @@ -1085,13 +1085,20 @@ cp $GROUP/$TESTNAME . TESTLINK=$TESTNAME - start_row + + # Use repeat.txt to determine number of test iterations + SCRIPT_BASENAME=`basename $TESTNAME .swift` + if [ -f "$GROUP/$SCRIPT_BASENAME.repeat" ]; then + ITERS_LOCAL=`cat $GROUP/$SCRIPT_BASENAME.repeat` + fi + for (( i=0; $i<$ITERS_LOCAL; i=$i+1 )); do + start_row swift_test_case $TESTNAME (( $TESTCOUNT >= $NUMBER_OF_TESTS )) && return (( $SHUTDOWN )) && return + end_row done - end_row done group_statistics TOTAL_TIME=0 From davidk at ci.uchicago.edu Sat Sep 24 15:59:40 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 15:59:40 -0500 (CDT) Subject: [Swift-commit] r5165 - branches/release-0.93/bin Message-ID: <20110924205940.B03399CCA8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 15:59:40 -0500 (Sat, 24 Sep 2011) New Revision: 5165 Modified: branches/release-0.93/bin/gensites Log: Make swift.properties optional - if not defined, use environment variables Add tc file generation from trunk Modified: branches/release-0.93/bin/gensites =================================================================== --- branches/release-0.93/bin/gensites 2011-09-24 18:10:59 UTC (rev 5164) +++ branches/release-0.93/bin/gensites 2011-09-24 20:59:40 UTC (rev 5165) @@ -45,7 +45,7 @@ Examples: - Create a site configuration file for sites.xml using default properties.file in current directory + Create a site configuration file for sites.xml using swift.properties in current directory $ gensites pads > sites.xml Use a specific properties file for a site @@ -134,52 +134,50 @@ # Ensure a properties file exists if [ ! -f "$PROPERTIES_FILE" ]; then - PROPERTIES_FILE="swift.properties" + PROPERTIES_FILE="./swift.properties" if [ ! -f "$PROPERTIES_FILE" ]; then PROPERTIES_FILE="$HOME/.swift/swift.properties" - if [ ! -f "$PROPERTIES_FILE" ]; then - crash "Unable to find a valid properties file! Please specify a valid file with the -p option" - fi fi fi # Parse values into variables for later sed processing -#WORK=`pwd`"/work" -while read line -do - case "$line" in - "#site $TEMPLATE work="*|'#site work='*) - WORK=`get_value $line` - ;; - "#site $TEMPLATE globus_hostname="*|'#site globus_hostname=') - GLOBUS_HOSTNAME=`get_value $line` - ;; - "#site $TEMPLATE nodes="*|'#site nodes='*) - NODES=`get_value $line` - ;; - "#site $TEMPLATE project="*|'#site project='*) - PROJECT=`get_value $line` - ;; - "#site $TEMPLATE queue="*|'#site queue='*) - QUEUE=`get_value $line` - ;; - "#site $TEMPLATE n_gran="*|'#site n_gran='*) - N_GRAN=`get_value $line` - ;; - "#site $TEMPLATE n_max="*|'#site n_max='*) - MAXTIME=`get_value $line` - ;; - "#site $TEMPLATE slots="*|'#site slots='*) - SLOTS=`get_value $line` - ;; - "#site $TEMPLATE execution_url="*|'#site execution_url='*) - EXECUTION_URL=`get_value $line` - ;; - "#site $TEMPLATE internalhostname="*|'#site internalhostname='*) - INTERNALHOSTNAME=`get_value $line` - ;; - esac -done < $PROPERTIES_FILE +if [ -f "$PROPERTIES_FILE" ]; then + while read line + do + case "$line" in + "#site $TEMPLATE work="*|'#site work='*) + WORK=`get_value $line` + ;; + "#site $TEMPLATE globus_hostname="*|'#site globus_hostname=') + GLOBUS_HOSTNAME=`get_value $line` + ;; + "#site $TEMPLATE nodes="*|'#site nodes='*) + NODES=`get_value $line` + ;; + "#site $TEMPLATE project="*|'#site project='*) + PROJECT=`get_value $line` + ;; + "#site $TEMPLATE queue="*|'#site queue='*) + QUEUE=`get_value $line` + ;; + "#site $TEMPLATE n_gran="*|'#site n_gran='*) + N_GRAN=`get_value $line` + ;; + "#site $TEMPLATE n_max="*|'#site n_max='*) + MAXTIME=`get_value $line` + ;; + "#site $TEMPLATE slots="*|'#site slots='*) + SLOTS=`get_value $line` + ;; + "#site $TEMPLATE execution_url="*|'#site execution_url='*) + EXECUTION_URL=`get_value $line` + ;; + "#site $TEMPLATE internalhostname="*|'#site internalhostname='*) + INTERNALHOSTNAME=`get_value $line` + ;; + esac + done < $PROPERTIES_FILE +fi # Verify that the variables by the template are defined for TOKEN in NODES HOST WORK PROJECT QUEUE N_GRAN N_MAX SLOTS INTERNALHOSTNAME MAXTIME EXECUTION_URL From davidk at ci.uchicago.edu Sat Sep 24 16:29:54 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 16:29:54 -0500 (CDT) Subject: [Swift-commit] r5166 - branches/release-0.93/bin Message-ID: <20110924212954.CC8329CCE6@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 16:29:54 -0500 (Sat, 24 Sep 2011) New Revision: 5166 Modified: branches/release-0.93/bin/gensites Log: Gensites fixes Modified: branches/release-0.93/bin/gensites =================================================================== --- branches/release-0.93/bin/gensites 2011-09-24 20:59:40 UTC (rev 5165) +++ branches/release-0.93/bin/gensites 2011-09-24 21:29:54 UTC (rev 5166) @@ -88,7 +88,7 @@ fi # List all templates -if [ ! -z $LIST_TEMPLATES ]; then +if [ ! -z "$LIST_TEMPLATES" ]; then # Templates in etc/sites for file in `ls -1 $SWIFT_HOME/* 2>/dev/null` do @@ -115,7 +115,7 @@ # Locate template if [ ! -f "$TEMPLATE_PATH" ]; then if [ -f "$TEMPLATE" ]; then - $TEMPLATE_PATH = $TEMPLATE + TEMPLATE_PATH=$TEMPLATE elif [ -f "$SWIFT_HOME/$TEMPLATE" ]; then TEMPLATE_PATH=$SWIFT_HOME/$TEMPLATE elif [ -f "$HOME/.swift/sites/$TEMPLATE" ]; then @@ -127,7 +127,7 @@ fi # List a specific template -if [ ! -z $LIST_SPECIFIC_TEMPLATE ]; then +if [ ! -z "$LIST_SPECIFIC_TEMPLATE" ]; then cat $TEMPLATE_PATH exit 0 fi @@ -140,6 +140,14 @@ fi fi +# Setup for creating a TC file +if [ -n "`grep -e app $PROPERTIES_FILE`" ]; then + if [ -f "tc.data" ]; then + mv tc.data tc.data.old + fi + HOSTS=`grep -i "pool handle" $TEMPLATE_PATH|grep -v "^[[:space:]]*#"|cut -d'"' -f2` +fi + # Parse values into variables for later sed processing if [ -f "$PROPERTIES_FILE" ]; then while read line @@ -175,6 +183,29 @@ "#site $TEMPLATE internalhostname="*|'#site internalhostname='*) INTERNALHOSTNAME=`get_value $line` ;; + '#app'*) + if [ `echo $line | wc -w` == 2 ]; then + for HOST in $HOSTS + do + NAME=`echo $line |cut -d'=' -f1|awk '{print $2}'` + COMMAND=`echo $line |cut -d'=' -f2` + COMMAND=`eval echo $COMMAND` + echo $HOST $NAME `readlink -f $COMMAND` null null null >> tc.data + done + fi + + if [ `echo $line |wc -w` == 3 ]; then + for HOST in $HOSTS + do + if [ $HOST == `echo $line|awk '{print $2}'` ]; then + NAME=`echo $line|awk '{print $3}'|cut -d'=' -f1` + COMMAND=`echo $line|awk '{print $3}'|cut -d'=' -f2` + COMMAND=`eval echo $COMMAND` + eval echo $HOST $NAME `readlink -f $COMMAND` null null null >> tc.data + fi + done + fi + ;; esac done < $PROPERTIES_FILE fi From davidk at ci.uchicago.edu Sat Sep 24 16:32:35 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 16:32:35 -0500 (CDT) Subject: [Swift-commit] r5167 - trunk/bin Message-ID: <20110924213235.CDB009CCE6@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 16:32:35 -0500 (Sat, 24 Sep 2011) New Revision: 5167 Modified: trunk/bin/gensites trunk/bin/start-coaster-service trunk/bin/stop-coaster-service Log: Updated coaster scripts and gensites into trunk Modified: trunk/bin/gensites =================================================================== --- trunk/bin/gensites 2011-09-24 21:29:54 UTC (rev 5166) +++ trunk/bin/gensites 2011-09-24 21:32:35 UTC (rev 5167) @@ -45,7 +45,7 @@ Examples: - Create a site configuration file for sites.xml using default properties.file in current directory + Create a site configuration file for sites.xml using swift.properties in current directory $ gensites pads > sites.xml Use a specific properties file for a site @@ -88,7 +88,7 @@ fi # List all templates -if [ ! -z $LIST_TEMPLATES ]; then +if [ ! -z "$LIST_TEMPLATES" ]; then # Templates in etc/sites for file in `ls -1 $SWIFT_HOME/* 2>/dev/null` do @@ -127,92 +127,89 @@ fi # List a specific template -if [ ! -z $LIST_SPECIFIC_TEMPLATE ]; then +if [ ! -z "$LIST_SPECIFIC_TEMPLATE" ]; then cat $TEMPLATE_PATH exit 0 fi # Ensure a properties file exists if [ ! -f "$PROPERTIES_FILE" ]; then - PROPERTIES_FILE="swift.properties" + PROPERTIES_FILE="./swift.properties" if [ ! -f "$PROPERTIES_FILE" ]; then PROPERTIES_FILE="$HOME/.swift/swift.properties" - if [ ! -f "$PROPERTIES_FILE" ]; then - crash "Unable to find a valid properties file! Please specify a valid file with the -p option" - fi fi fi # Setup for creating a TC file -if [ -f "tc.data" ] && [ -n "`grep -e app $PROPERTIES_FILE`" ]; then - mv tc.data tc.data.old - HOSTS=`grep -i "pool handle" $TEMPLATE|grep -v "^[[:space:]]*#"|cut -d'"' -f2` +if [ -n "`grep -e app $PROPERTIES_FILE`" ]; then + if [ -f "tc.data" ]; then + mv tc.data tc.data.old + fi + HOSTS=`grep -i "pool handle" $TEMPLATE_PATH|grep -v "^[[:space:]]*#"|cut -d'"' -f2` fi # Parse values into variables for later sed processing -#WORK=`pwd`"/work" -while read line -do - case "$line" in - "#site $TEMPLATE work="*|'#site work='*) - WORK=`get_value $line` +if [ -f "$PROPERTIES_FILE" ]; then + while read line + do + case "$line" in + "#site $TEMPLATE work="*|'#site work='*) + WORK=`get_value $line` + ;; + "#site $TEMPLATE globus_hostname="*|'#site globus_hostname=') + GLOBUS_HOSTNAME=`get_value $line` + ;; + "#site $TEMPLATE nodes="*|'#site nodes='*) + NODES=`get_value $line` + ;; + "#site $TEMPLATE project="*|'#site project='*) + PROJECT=`get_value $line` + ;; + "#site $TEMPLATE queue="*|'#site queue='*) + QUEUE=`get_value $line` + ;; + "#site $TEMPLATE n_gran="*|'#site n_gran='*) + N_GRAN=`get_value $line` + ;; + "#site $TEMPLATE n_max="*|'#site n_max='*) + MAXTIME=`get_value $line` + ;; + "#site $TEMPLATE slots="*|'#site slots='*) + SLOTS=`get_value $line` + ;; + "#site $TEMPLATE execution_url="*|'#site execution_url='*) + EXECUTION_URL=`get_value $line` + ;; + "#site $TEMPLATE internalhostname="*|'#site internalhostname='*) + INTERNALHOSTNAME=`get_value $line` + ;; + '#app'*) + if [ `echo $line | wc -w` == 2 ]; then + for HOST in $HOSTS + do + NAME=`echo $line |cut -d'=' -f1|awk '{print $2}'` + COMMAND=`echo $line |cut -d'=' -f2` + COMMAND=`eval echo $COMMAND` + echo $HOST $NAME `readlink -f $COMMAND` null null null >> tc.data + done + fi + + if [ `echo $line |wc -w` == 3 ]; then + for HOST in $HOSTS + do + if [ $HOST == `echo $line|awk '{print $2}'` ]; then + NAME=`echo $line|awk '{print $3}'|cut -d'=' -f1` + COMMAND=`echo $line|awk '{print $3}'|cut -d'=' -f2` + COMMAND=`eval echo $COMMAND` + eval echo $HOST $NAME `readlink -f $COMMAND` null null null >> tc.data + fi + done + fi ;; - "#site $TEMPLATE globus_hostname="*|'#site globus_hostname=') - GLOBUS_HOSTNAME=`get_value $line` - ;; - "#site $TEMPLATE nodes="*|'#site nodes='*) - NODES=`get_value $line` - ;; - "#site $TEMPLATE project="*|'#site project='*) - PROJECT=`get_value $line` - ;; - "#site $TEMPLATE queue="*|'#site queue='*) - QUEUE=`get_value $line` - ;; - "#site $TEMPLATE n_gran="*|'#site n_gran='*) - N_GRAN=`get_value $line` - ;; - "#site $TEMPLATE n_max="*|'#site n_max='*) - MAXTIME=`get_value $line` - ;; - "#site $TEMPLATE slots="*|'#site slots='*) - SLOTS=`get_value $line` - ;; - "#site $TEMPLATE execution_url="*|'#site execution_url='*) - EXECUTION_URL=`get_value $line` - ;; - "#site $TEMPLATE internalhostname="*|'#site internalhostname='*) - INTERNALHOSTNAME=`get_value $line` - ;; - '#app'*) - if [ `echo $line | wc -w` == 2 ]; then - for HOST in $HOSTS - do - NAME=`echo $line |cut -d'=' -f1|awk '{print $2}'` - COMMAND=`echo $line |cut -d'=' -f2` - COMMAND=`eval echo $COMMAND` - echo $HOST $NAME `readlink -f $COMMAND` null null null >> tc.data - done - fi - - if [ `echo $line |wc -w` == 3 ]; then - for HOST in $HOSTS - do - if [ $HOST == `echo $line|awk '{print $2}'` ]; then - NAME=`echo $line|awk '{print $3}'|cut -d'=' -f1` - COMMAND=`echo $line|awk '{print $3}'|cut -d'=' -f2` - COMMAND=`eval echo $COMMAND` - eval echo $HOST $NAME `readlink -f $COMMAND` null null null >> tc.data - fi - done - fi - ;; - esac -done < $PROPERTIES_FILE + esac + done < $PROPERTIES_FILE +fi -# Test for mandatory variables -[[ ${WORK} == "" ]] && crash "Not specified: WORK" - # Verify that the variables by the template are defined for TOKEN in NODES HOST WORK PROJECT QUEUE N_GRAN N_MAX SLOTS INTERNALHOSTNAME MAXTIME EXECUTION_URL do Modified: trunk/bin/start-coaster-service =================================================================== --- trunk/bin/start-coaster-service 2011-09-24 21:29:54 UTC (rev 5166) +++ trunk/bin/start-coaster-service 2011-09-24 21:32:35 UTC (rev 5167) @@ -119,18 +119,18 @@ RUN_DIR=`pwd` # Import settings -if [ -f "$HOME/.swift/coaster-service.conf" ]; then +if [ -f "$RUN_DIR/coaster-service.conf" ]; then + CONFIG_FILE="$RUN_DIR/coaster-service.conf" +elif [ -f "$HOME/.swift/coaster-service.conf" ]; then CONFIG_FILE="$HOME/.swift/coaster-service.conf" elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" -fi - -if [ -n "$CONFIG_FILE" ]; then - source "$CONFIG_FILE" else crash "Cannot find coaster-service.conf!" fi +source $CONFIG_FILE + # Determine information needed about this machine if [ -z "$IPADDR" ]; then if [ -x "/sbin/ifconfig" ]; then Modified: trunk/bin/stop-coaster-service =================================================================== --- trunk/bin/stop-coaster-service 2011-09-24 21:29:54 UTC (rev 5166) +++ trunk/bin/stop-coaster-service 2011-09-24 21:32:35 UTC (rev 5167) @@ -12,24 +12,19 @@ PID_FILE="$HOME/.swift/.coaster-service-pids" SWIFTVM_INSTANCES="$HOME/.swift/.swiftvm_instances" -if [ -f "$HOME/.swift/coaster-service.conf" ]; then +# Import settings +if [ -f "./coaster-service.conf" ]; then + CONFIG_FILE="./coaster-service.conf" +elif [ -f "$HOME/.swift/coaster-service.conf" ]; then CONFIG_FILE="$HOME/.swift/coaster-service.conf" elif [ -f "$(dirname $(readlink -f $0))/../etc/coaster-service.conf" ]; then CONFIG_FILE="$(dirname $(readlink -f $0))/../etc/coaster-service.conf" -fi - -if [ -z "$CONFIG_FILE" ]; then - crash "Unable to find coaster-service.conf!" -fi - - -# Read config file to determine worker mode -if [ -f "$CONFIG_FILE" ]; then - source "$CONFIG_FILE" else crash "Cannot find coaster-service.conf!" fi +source "$CONFIG_FILE" + echo Ending coaster processes.. if [ -f "$PID_FILE" ]; then for pid in `cat $PID_FILE` From davidk at ci.uchicago.edu Sat Sep 24 20:53:15 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 20:53:15 -0500 (CDT) Subject: [Swift-commit] r5168 - in branches/release-0.93: bin etc/sites tests Message-ID: <20110925015315.1D3579CCA8@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 20:53:14 -0500 (Sat, 24 Sep 2011) New Revision: 5168 Added: branches/release-0.93/etc/sites/local branches/release-0.93/etc/sites/local-coasters Modified: branches/release-0.93/bin/gensites branches/release-0.93/tests/suite.sh Log: Suite and gensites fixes Added site templates from suite Modified: branches/release-0.93/bin/gensites =================================================================== --- branches/release-0.93/bin/gensites 2011-09-24 21:32:35 UTC (rev 5167) +++ branches/release-0.93/bin/gensites 2011-09-25 01:53:14 UTC (rev 5168) @@ -133,19 +133,22 @@ fi # Ensure a properties file exists -if [ ! -f "$PROPERTIES_FILE" ]; then - PROPERTIES_FILE="./swift.properties" - if [ ! -f "$PROPERTIES_FILE" ]; then +if [ -z "$PROPERTIES_FILE" ]; then + if [ -f "./swift.properties" ]; then + PROPERTIES_FILE="./swift.properties" + elif [ -f "$HOME/.swift/swift.properties" ]; then PROPERTIES_FILE="$HOME/.swift/swift.properties" fi fi # Setup for creating a TC file -if [ -n "`grep -e app $PROPERTIES_FILE`" ]; then - if [ -f "tc.data" ]; then - mv tc.data tc.data.old +if [ -f "$PROPERTIES_FILE" ]; then + if [ -n "`grep -e app $PROPERTIES_FILE`" ]; then + if [ -f "tc.data" ]; then + mv tc.data tc.data.old + fi + HOSTS=`grep -i "pool handle" $TEMPLATE_PATH|grep -v "^[[:space:]]*#"|cut -d'"' -f2` fi - HOSTS=`grep -i "pool handle" $TEMPLATE_PATH|grep -v "^[[:space:]]*#"|cut -d'"' -f2` fi # Parse values into variables for later sed processing Added: branches/release-0.93/etc/sites/local =================================================================== --- branches/release-0.93/etc/sites/local (rev 0) +++ branches/release-0.93/etc/sites/local 2011-09-25 01:53:14 UTC (rev 5168) @@ -0,0 +1,9 @@ + + + + + 10000 + .31 + _WORK_ + + Added: branches/release-0.93/etc/sites/local-coasters =================================================================== --- branches/release-0.93/etc/sites/local-coasters (rev 0) +++ branches/release-0.93/etc/sites/local-coasters 2011-09-25 01:53:14 UTC (rev 5168) @@ -0,0 +1,24 @@ + + + + + + _WORK_ + file + + + + + + _HOST_ + 2.55 + 10000 + 4 + 8 + 1000 + 1 + 4 + _WORK_ + + + Modified: branches/release-0.93/tests/suite.sh =================================================================== --- branches/release-0.93/tests/suite.sh 2011-09-24 21:32:35 UTC (rev 5167) +++ branches/release-0.93/tests/suite.sh 2011-09-25 01:53:14 UTC (rev 5168) @@ -940,18 +940,6 @@ output_report package "swift-$DATE.tar.gz" } -# Generate the sites.sed file -make_sites_sed() { - { - echo "s at _WORK_@$WORK@" - echo "s at _HOST_@$GLOBUS_HOSTNAME@" - echo "s at _PROJECT_@$PROJECT@" - echo "s at _QUEUE_@$QUEUE@" - echo "s at _EXECUTION_URL_@$EXECUTION_URL@" - } > $RUNDIR/sites.sed - return 0 -} - # Setup coasters variables if which ifconfig > /dev/null 2>&1; then IFCONFIG=ifconfig @@ -965,20 +953,34 @@ # Generate sites.xml group_sites_xml() { - TEMPLATE=$GROUP/sites.template.xml - if [ -f $TEMPLATE ]; then - sed -f $RUNDIR/sites.sed < $TEMPLATE > sites.xml - [ $? != 0 ] && crash "Could not create sites.xml!" - echo "Using: $GROUP/sites.template.xml" + + # Determine template + if [ -f "$GROUP/sites.template.xml" ]; then + TEMPLATE="$GROUP/sites.template.xml" + elif [ -f "$GROUP/gensites.template" ]; then + TEMPLATE=`cat $GROUP/gensites.template` else - sed "s at _WORK_@$PWD/work@" < $TESTDIR/sites/localhost.xml > sites.xml - [ $? != 0 ] && crash "Could not create sites.xml!" - echo "Using: $TESTDIR/sites/localhost.xml" + TEMPLATE="$TESTDIR/sites/localhost.xml" fi + + # Call gensites + TEMPLATE_DIRNAME=`dirname $TEMPLATE` + TEMPLATE=`basename $TEMPLATE` + if [ "$TEMPLATE_DIRNAME" != "." ]; then + gensites -L $TEMPLATE_DIRNAME $TEMPLATE > sites.xml + else + gensites $TEMPLATE > sites.xml + fi } # Generate tc.data group_tc_data() { + + # Gensites will create a tc.data file if it is being used + if [ -f "$GROUP/gensites.template" ]; then + return + fi + if [ -f $GROUP/tc.template.data ]; then sed "s at _DIR_@$GROUP@" < $GROUP/tc.template.data > tc.data [ $? != 0 ] && crash "Could not create tc.data!" @@ -994,6 +996,7 @@ fi } + # Generate the CDM file, fs.data group_fs_data() { if [ -f $GROUP/fs.template.data ]; then @@ -1062,10 +1065,10 @@ # Execute all tests in current GROUP test_group() { + group_swift_properties group_sites_xml group_tc_data group_fs_data - group_swift_properties SWIFTS=$( echo $GROUP/*.swift ) checkfail "Could not list: $GROUP" @@ -1159,7 +1162,6 @@ date > $LOG -make_sites_sed # Here the report starts. # Call to function header() @@ -1244,6 +1246,7 @@ (( $SHUTDOWN )) && break done +footer exit 0 # Local Variables: From davidk at ci.uchicago.edu Sat Sep 24 22:58:07 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 22:58:07 -0500 (CDT) Subject: [Swift-commit] r5169 - branches/release-0.93/tests Message-ID: <20110925035807.1A9029CCE6@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 22:58:06 -0500 (Sat, 24 Sep 2011) New Revision: 5169 Modified: branches/release-0.93/tests/suite.sh Log: Better integration with gensites Modified: branches/release-0.93/tests/suite.sh =================================================================== --- branches/release-0.93/tests/suite.sh 2011-09-25 01:53:14 UTC (rev 5168) +++ branches/release-0.93/tests/suite.sh 2011-09-25 03:58:06 UTC (rev 5169) @@ -155,15 +155,9 @@ TESTDIR=$TOPDIR/cog/modules/swift/tests # Ensure all given variables are set +# Deprecated - this is now handled by gensites checkvars() { - while (( ${#*} )) - do - VAR=$1 - V=$( eval "echo \${${VAR}+1}" ) - [[ $V == 1 ]] || crash "Not set: $VAR" - shift - done - return 0 + return } checkfail() { @@ -962,7 +956,13 @@ else TEMPLATE="$TESTDIR/sites/localhost.xml" fi - + + # Give default to _WORK_ if undefined in swift.properties + if [ -z "$WORK" ] + then + export WORK=$TOPDIR/work + fi + # Call gensites TEMPLATE_DIRNAME=`dirname $TEMPLATE` TEMPLATE=`basename $TEMPLATE` @@ -1133,12 +1133,8 @@ } -if [[ $WORK == "" ]] -then - WORK=$TOPDIR/work -fi -checkvars GROUPARG +#checkvars GROUPARG echo "GROUP ARGUMENT: $GROUPARG" if [[ $GROUPARG != /* ]]; then # Adjust relative path From davidk at ci.uchicago.edu Sat Sep 24 23:24:00 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Sat, 24 Sep 2011 23:24:00 -0500 (CDT) Subject: [Swift-commit] r5170 - in trunk: bin tests Message-ID: <20110925042400.9BA719CCE6@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-24 23:24:00 -0500 (Sat, 24 Sep 2011) New Revision: 5170 Modified: trunk/bin/gensites trunk/tests/suite.sh Log: Integrating more changes from 0.93 to trunk Modified: trunk/bin/gensites =================================================================== --- trunk/bin/gensites 2011-09-25 03:58:06 UTC (rev 5169) +++ trunk/bin/gensites 2011-09-25 04:24:00 UTC (rev 5170) @@ -133,19 +133,22 @@ fi # Ensure a properties file exists -if [ ! -f "$PROPERTIES_FILE" ]; then - PROPERTIES_FILE="./swift.properties" - if [ ! -f "$PROPERTIES_FILE" ]; then +if [ -z "$PROPERTIES_FILE" ]; then + if [ -f "./swift.properties" ]; then + PROPERTIES_FILE="./swift.properties" + elif [ -f "$HOME/.swift/swift.properties" ]; then PROPERTIES_FILE="$HOME/.swift/swift.properties" fi fi # Setup for creating a TC file -if [ -n "`grep -e app $PROPERTIES_FILE`" ]; then - if [ -f "tc.data" ]; then - mv tc.data tc.data.old +if [ -f "$PROPERTIES_FILE" ]; then + if [ -n "`grep -e app $PROPERTIES_FILE`" ]; then + if [ -f "tc.data" ]; then + mv tc.data tc.data.old + fi + HOSTS=`grep -i "pool handle" $TEMPLATE_PATH|grep -v "^[[:space:]]*#"|cut -d'"' -f2` fi - HOSTS=`grep -i "pool handle" $TEMPLATE_PATH|grep -v "^[[:space:]]*#"|cut -d'"' -f2` fi # Parse values into variables for later sed processing Modified: trunk/tests/suite.sh =================================================================== --- trunk/tests/suite.sh 2011-09-25 03:58:06 UTC (rev 5169) +++ trunk/tests/suite.sh 2011-09-25 04:24:00 UTC (rev 5170) @@ -155,16 +155,9 @@ TESTDIR=$TOPDIR/cog/modules/swift/tests -# Ensure all given variables are set +# Gensites will now check the variables as needed checkvars() { - while (( ${#*} )) - do - VAR=$1 - V=$( eval "echo \${${VAR}+1}" ) - [[ $V == 1 ]] || crash "Not set: $VAR" - shift - done - return 0 + return } checkfail() { @@ -952,18 +945,6 @@ output_report package "swift-$DATE.tar.gz" } -# Generate the sites.sed file -make_sites_sed() { - { - echo "s at _WORK_@$WORK@" - echo "s at _HOST_@$GLOBUS_HOSTNAME@" - echo "s at _PROJECT_@$PROJECT@" - echo "s at _QUEUE_@$QUEUE@" - echo "s at _EXECUTION_URL_@$EXECUTION_URL@" - } > $RUNDIR/sites.sed - return 0 -} - # Setup coasters variables if which ifconfig > /dev/null 2>&1; then IFCONFIG=ifconfig @@ -977,20 +958,40 @@ # Generate sites.xml group_sites_xml() { - TEMPLATE=$GROUP/sites.template.xml - if [ -f $TEMPLATE ]; then - sed -f $RUNDIR/sites.sed < $TEMPLATE > sites.xml - [ $? != 0 ] && crash "Could not create sites.xml!" - echo "Using: $GROUP/sites.template.xml" + + # Determine template + if [ -f "$GROUP/sites.template.xml" ]; then + TEMPLATE="$GROUP/sites.template.xml" + elif [ -f "$GROUP/gensites.template" ]; then + TEMPLATE=`cat $GROUP/gensites.template` else - sed "s at _WORK_@$PWD/work@" < $TESTDIR/sites/localhost.xml > sites.xml - [ $? != 0 ] && crash "Could not create sites.xml!" - echo "Using: $TESTDIR/sites/localhost.xml" + TEMPLATE="$TESTDIR/sites/localhost.xml" fi + + # Give default to _WORK_ if undefined in swift.properties + if [ -z "$WORK" ] + then + export WORK=$TOPDIR/work + fi + + # Call gensites + TEMPLATE_DIRNAME=`dirname $TEMPLATE` + TEMPLATE=`basename $TEMPLATE` + if [ "$TEMPLATE_DIRNAME" != "." ]; then + gensites -L $TEMPLATE_DIRNAME $TEMPLATE > sites.xml + else + gensites $TEMPLATE > sites.xml + fi } # Generate tc.data group_tc_data() { + + # Gensites will create a tc.data file if it is being used + if [ -f "$GROUP/gensites.template" ]; then + return + fi + if [ -f $GROUP/tc.template.data ]; then sed "s at _DIR_@$GROUP@" < $GROUP/tc.template.data > tc.data [ $? != 0 ] && crash "Could not create tc.data!" @@ -1097,13 +1098,20 @@ cp $GROUP/$TESTNAME . TESTLINK=$TESTNAME - start_row + + # Use repeat.txt to determine number of test iterations + SCRIPT_BASENAME=`basename $TESTNAME .swift` + if [ -f "$GROUP/$SCRIPT_BASENAME.repeat" ]; then + ITERS_LOCAL=`cat $GROUP/$SCRIPT_BASENAME.repeat` + fi + for (( i=0; $i<$ITERS_LOCAL; i=$i+1 )); do + start_row swift_test_case $TESTNAME (( $TESTCOUNT >= $NUMBER_OF_TESTS )) && return (( $SHUTDOWN )) && return + end_row done - end_row done group_statistics TOTAL_TIME=0 @@ -1134,13 +1142,7 @@ } - -if [[ $WORK == "" ]] -then - WORK=$TOPDIR/work -fi - -checkvars GROUPARG +#checkvars GROUPARG echo "GROUP ARGUMENT: $GROUPARG" if [[ $GROUPARG != /* ]]; then # Adjust relative path @@ -1164,8 +1166,6 @@ date > $LOG -make_sites_sed - # Here the report starts. # Call to function header() header From wozniak at ci.uchicago.edu Mon Sep 26 10:39:05 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Mon, 26 Sep 2011 10:39:05 -0500 (CDT) Subject: [Swift-commit] r5171 - trunk/bin Message-ID: <20110926153905.84F409CCB1@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-26 10:39:05 -0500 (Mon, 26 Sep 2011) New Revision: 5171 Modified: trunk/bin/chxml Log: Allow any user python- will crash under Python 3 Modified: trunk/bin/chxml =================================================================== --- trunk/bin/chxml 2011-09-25 04:24:00 UTC (rev 5170) +++ trunk/bin/chxml 2011-09-26 15:39:05 UTC (rev 5171) @@ -1,6 +1,6 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python -# This does not run under python3.2 - insist on 2.7 for now +# This does not run under python3.2 # ensures that that there is a sites file specified and that it contains # well-formed xml as well as essential attributes for the specified provider From ketan at ci.uchicago.edu Mon Sep 26 10:57:02 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Mon, 26 Sep 2011 10:57:02 -0500 (CDT) Subject: [Swift-commit] r5172 - trunk/docs/siteguide Message-ID: <20110926155702.0D0639CCB1@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-26 10:57:01 -0500 (Mon, 26 Sep 2011) New Revision: 5172 Modified: trunk/docs/siteguide/grid Log: Added instructions for obtaining grid certificate and registering with the Engage VO Modified: trunk/docs/siteguide/grid =================================================================== --- trunk/docs/siteguide/grid 2011-09-26 15:39:05 UTC (rev 5171) +++ trunk/docs/siteguide/grid 2011-09-26 15:57:01 UTC (rev 5172) @@ -41,11 +41,56 @@ a certificate. Is this a problem from users without one? If so, make a copy of the page on the Swift web. -*For TeraGrid*: Obtain a DOEGrids certifcate using the OSG ENgage +*For TeraGrid*: Obtain a DOEGrids certifcate using the OSG Engage instructions above. Ask a TeraGrid PI to add you to a TeraGrid project. Once you obtain a login and project access (via US Mail), use -gx-request to add your certificate +gx-request to add your certificate. +A detailed step-by-step instructions for requesting and installing your +certificates in the browser and client machine are as follows: + +*Step1.* Apply for a certificate: https://pki1.doegrids.org/ca/; use ANL as +affiliation (registration authority) in the form. + +*Step2.* When you receive your certificate via a link by mail, download and +install it in your browser; we have tested it for firefox on linux and mac., +and for Chrome on mac. + +On firefox, as you click the link that you received in the mail, you will be +prompted to install it by firefox: passphrase it and click install. Next take a +backup of this certificate in the form of .p12. +This is in Preferences > Advanced > Encryption > View Certificate > Your +Certificate + +*Step3.* Install DOE CA and ESnet root CA into your browser by clicking the top +left links on this page: http://www.doegrids.org/ + +*Step4.* Go to the Engage VO registration point here: +https://osg-engage.renci.org:8443/vomrs/Engage/vomrs from the same browser that +has the above certs installed. Also see +https://twiki.grid.iu.edu/bin/view/Engagement/EngageNewUserGuide for more +details. + +*Step5.* For installation of certificate on client machine, you need to have the certificate +that is in the browser put in your client's ~/.globus directory from where you want to access OSG +resources. The certificate has to be in the form of .pem files with a seperate +.pem file for key and cert. For this conversion use the above backed up .p12 file as follows: + +---- +$ openssl pkcs12 -in your.p12 -out usercert.pem -nodes -clcerts -nokeys +$ openssl pkcs12 -in your.p12 -out userkey.pem -nodes -nocerts +---- + +Above commands are taken from: +http://security.ncsa.illinois.edu/research/grid-howtos/usefulopenssl.html +For more on openssl: http://www.openssl.org/docs/apps/openssl.html + +Step6. Test it: + +---- +$ voms-proxy-init --voms Engage -hours 48 +---- + To run jobs using the procedures documented here you need to be logged in to a "submit host" on which you will run Swift and other grid-related utilities. This can be any host with the OSG client stack From wozniak at ci.uchicago.edu Mon Sep 26 11:24:26 2011 From: wozniak at ci.uchicago.edu (wozniak at ci.uchicago.edu) Date: Mon, 26 Sep 2011 11:24:26 -0500 (CDT) Subject: [Swift-commit] r5173 - trunk/src/org/griphyn/vdl/karajan/lib/swiftscript Message-ID: <20110926162426.933059CCBD@svn.ci.uchicago.edu> Author: wozniak Date: 2011-09-26 11:24:26 -0500 (Mon, 26 Sep 2011) New Revision: 5173 Modified: trunk/src/org/griphyn/vdl/karajan/lib/swiftscript/Java.java Log: Update wrt DSHandle.toString() change Modified: trunk/src/org/griphyn/vdl/karajan/lib/swiftscript/Java.java =================================================================== --- trunk/src/org/griphyn/vdl/karajan/lib/swiftscript/Java.java 2011-09-26 15:57:01 UTC (rev 5172) +++ trunk/src/org/griphyn/vdl/karajan/lib/swiftscript/Java.java 2011-09-26 16:24:26 UTC (rev 5173) @@ -8,7 +8,6 @@ import org.griphyn.vdl.karajan.lib.VDLFunction; import org.griphyn.vdl.mapping.AbstractDataNode; import org.griphyn.vdl.mapping.DSHandle; -import org.griphyn.vdl.mapping.HandleOpenException; import org.griphyn.vdl.mapping.RootDataNode; import org.griphyn.vdl.type.Type; import org.griphyn.vdl.type.Types; @@ -36,7 +35,7 @@ */ Method getMethod(DSHandle[] args) { Method result = null; - Class clazz; + Class clazz; String lib = "unset"; String name = "unset"; @@ -46,8 +45,8 @@ ("@java() requires at least two arguments"); try { - lib = args[0].toString(); - name = args[1].toString(); + lib = (String) args[0].getValue(); + name = (String) args[1].getValue(); clazz = Class.forName(lib); Method[] methods = clazz.getMethods(); result = null; @@ -104,7 +103,7 @@ Type returnType(Method method) { Type result = null; - Class rt = method.getReturnType(); + Class rt = method.getReturnType(); if (rt.equals(Double.TYPE)) result = Types.FLOAT; else if (rt.equals(Integer.TYPE)) From tga at ci.uchicago.edu Mon Sep 26 14:35:12 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Mon, 26 Sep 2011 14:35:12 -0500 (CDT) Subject: [Swift-commit] r5174 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110926193512.ACDEA9CCB1@svn.ci.uchicago.edu> Author: tga Date: 2011-09-26 14:35:12 -0500 (Mon, 26 Sep 2011) New Revision: 5174 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Removed unnecessary file creation Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-26 16:24:26 UTC (rev 5173) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-26 19:35:12 UTC (rev 5174) @@ -111,20 +111,16 @@ ( sleep ${timeout}s - touch $SLOTDIR/timeout_reached # if mutex has been acquired, know another process active if mkdir $SLOTDIR/mutex ; then - touch $SLOTDIR/timeout_reached_mutex new_idletimer_id=$(cat $SLOTDIR/idletimer) echo new: "$new_idletimer_id" old "$idletimer_id" > $SLOTDIR/idletimer_ids if [ "$new_idletimer_id" = "$idletimer_id" ]; then - touch $SLOTDIR/timeout_reached_mutex_killed echo killing idle R process $rpid kill $rpid rm -f $SLOTDIR/idletimer $SLOTDIR/fromR.fifo $SLOTDIR/toR.fifo touch $SLOTDIR/timedout else - touch $SLOTDIR/timeout_reached_mutex_notkilled fi rmdir $SLOTDIR/mutex fi @@ -258,8 +254,6 @@ if wait $echopid then - touch $SLOTDIR/lastwrite - echo DB: Sent request stop_timeout # started up ok echo dummy stderr response 1>&2 # FIXME - testing if this is the provider staging problem (not xfering zero len stderr) From davidk at ci.uchicago.edu Mon Sep 26 20:30:18 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Mon, 26 Sep 2011 20:30:18 -0500 (CDT) Subject: [Swift-commit] r5175 - in branches/release-0.93/tests: . groups language/working language-behaviour/IO stress/persistent-coasters stress/persistent-coasters/many-jobs Message-ID: <20110927013018.9A8AE9CCBD@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-26 20:30:18 -0500 (Mon, 26 Sep 2011) New Revision: 5175 Added: branches/release-0.93/tests/language-behaviour/IO/testimport.setup.sh branches/release-0.93/tests/language-behaviour/IO/testimport2.setup.sh branches/release-0.93/tests/language/working/062-stdinerrout.setup.sh branches/release-0.93/tests/stress/persistent-coasters/many-jobs/ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0001.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0002.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0003.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0004.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0005.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0006.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0007.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0008.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0009.out.expected branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.repeat branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.setup.sh branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.swift branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.timeout branches/release-0.93/tests/stress/persistent-coasters/many-jobs/coaster-service.conf branches/release-0.93/tests/stress/persistent-coasters/many-jobs/data.txt branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/ Removed: branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh branches/release-0.93/tests/stress/persistent-coasters/catsn.swift branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf branches/release-0.93/tests/stress/persistent-coasters/data.txt Modified: branches/release-0.93/tests/groups/group-stress.sh branches/release-0.93/tests/language/working/060-stdinouterr.setup.sh branches/release-0.93/tests/suite.sh Log: Updates to test suite Modified: branches/release-0.93/tests/groups/group-stress.sh =================================================================== --- branches/release-0.93/tests/groups/group-stress.sh 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/groups/group-stress.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -2,7 +2,8 @@ # GROUPLIST definition to run all local tests GROUPLIST=( - $TESTDIR/stress/persistent-coasters \ + $TESTDIR/stress/persistent-coasters/many-jobs \ + $TESTDIR/stress/persistent-coasters/pass-fail-pass \ ) checkvars WORK Modified: branches/release-0.93/tests/language/working/060-stdinouterr.setup.sh =================================================================== --- branches/release-0.93/tests/language/working/060-stdinouterr.setup.sh 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/language/working/060-stdinouterr.setup.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -1 +1 @@ -cp $GROUP/test.in . \ No newline at end of file +cp -v $GROUP/test.in . Added: branches/release-0.93/tests/language/working/062-stdinerrout.setup.sh =================================================================== --- branches/release-0.93/tests/language/working/062-stdinerrout.setup.sh (rev 0) +++ branches/release-0.93/tests/language/working/062-stdinerrout.setup.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +cp -v $GROUP/test.in . Property changes on: branches/release-0.93/tests/language/working/062-stdinerrout.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/language-behaviour/IO/testimport.setup.sh =================================================================== --- branches/release-0.93/tests/language-behaviour/IO/testimport.setup.sh (rev 0) +++ branches/release-0.93/tests/language-behaviour/IO/testimport.setup.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/testimport2.swift . Property changes on: branches/release-0.93/tests/language-behaviour/IO/testimport.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/language-behaviour/IO/testimport2.setup.sh =================================================================== --- branches/release-0.93/tests/language-behaviour/IO/testimport2.setup.sh (rev 0) +++ branches/release-0.93/tests/language-behaviour/IO/testimport2.setup.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/testimport.swift . Property changes on: branches/release-0.93/tests/language-behaviour/IO/testimport2.setup.sh ___________________________________________________________________ Added: svn:executable + * Deleted: branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -1 +0,0 @@ -Hello world Deleted: branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat 2011-09-27 01:30:18 UTC (rev 5175) @@ -1 +0,0 @@ -1000 Deleted: branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp $GROUP/coaster-service.conf . -cp $GROUP/data.txt . Deleted: branches/release-0.93/tests/stress/persistent-coasters/catsn.swift =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.swift 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.swift 2011-09-27 01:30:18 UTC (rev 5175) @@ -1,12 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -file out[]; -foreach j in [1:@toint(@arg("n","1"))] { - file data<"data.txt">; - out[j] = cat(data); -} Deleted: branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout 2011-09-27 01:30:18 UTC (rev 5175) @@ -1 +0,0 @@ -999999 Deleted: branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf 2011-09-27 01:30:18 UTC (rev 5175) @@ -1,42 +0,0 @@ -# Keep all interesting settings in one place -# User should modify this to fit environment - -# Location of SWIFT. If empty, PATH is searched -export SWIFT= - -# Where to copy worker.pl on the remote machine for sites.xml -export WORKER_WORK=$HOME/swiftwork - -# How to launch workers: local, ssh, cobalt, or futuregrid -export WORKER_MODE=ssh - -# SSH hosts to start workers on (ssh mode only) -export WORKER_HOSTS="localhost" - -# Do all the worker nodes you're using have a shared filesystem? (yes/no) -export SHARED_FILESYSTEM=yes - -# Username to use on worker nodes -export WORKER_USERNAME=$USER - -# Enable SSH tunneling? (yes/no) -export SSH_TUNNELING=no - -# Directory to keep log files, relative to working directory when launching start-coaster-service -export LOG_DIR=logs - -# Manually define ports. If not specified, an available port will be used -export LOCAL_PORT= -export SERVICE_PORT= - -# start-coaster-service tries to automatically detect the IP address of this system. Specify here if you have multiple network interfaces -export IPADDR= - -# Location of the swift-vm-boot scripts -export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot - -# Swift information for creating sites.xml -export WORK=$HOME/swiftwork -export QUEUE=prod-devel -export MAXTIME=20 -export NODE=64 Deleted: branches/release-0.93/tests/stress/persistent-coasters/data.txt =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/data.txt 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/stress/persistent-coasters/data.txt 2011-09-27 01:30:18 UTC (rev 5175) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0001.out.expected (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0001.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0002.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0002.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0003.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0003.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0004.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0004.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0005.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0005.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0006.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0006.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0007.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0007.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0008.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0008.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0009.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.0009.out.expected 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.repeat (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/catsn.repeat) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.repeat (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.repeat 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +1000 Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.setup.sh (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.setup.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp $GROUP/coaster-service.conf . +cp $GROUP/data.txt . Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.swift (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/catsn.swift) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.swift (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.swift 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.timeout (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/catsn.timeout) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.timeout (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/catsn.timeout 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +999999 Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/coaster-service.conf (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/coaster-service.conf) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/coaster-service.conf (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/coaster-service.conf 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1,42 @@ +# Keep all interesting settings in one place +# User should modify this to fit environment + +# Location of SWIFT. If empty, PATH is searched +export SWIFT= + +# Where to copy worker.pl on the remote machine for sites.xml +export WORKER_WORK=$HOME/swiftwork + +# How to launch workers: local, ssh, cobalt, or futuregrid +export WORKER_MODE=ssh + +# SSH hosts to start workers on (ssh mode only) +export WORKER_HOSTS="localhost" + +# Do all the worker nodes you're using have a shared filesystem? (yes/no) +export SHARED_FILESYSTEM=yes + +# Username to use on worker nodes +export WORKER_USERNAME=$USER + +# Enable SSH tunneling? (yes/no) +export SSH_TUNNELING=no + +# Directory to keep log files, relative to working directory when launching start-coaster-service +export LOG_DIR=logs + +# Manually define ports. If not specified, an available port will be used +export LOCAL_PORT= +export SERVICE_PORT= + +# start-coaster-service tries to automatically detect the IP address of this system. Specify here if you have multiple network interfaces +export IPADDR= + +# Location of the swift-vm-boot scripts +export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot + +# Swift information for creating sites.xml +export WORK=$HOME/swiftwork +export QUEUE=prod-devel +export MAXTIME=20 +export NODE=64 Copied: branches/release-0.93/tests/stress/persistent-coasters/many-jobs/data.txt (from rev 5172, branches/release-0.93/tests/stress/persistent-coasters/data.txt) =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/many-jobs/data.txt (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/many-jobs/data.txt 2011-09-27 01:30:18 UTC (rev 5175) @@ -0,0 +1 @@ +Hello world Modified: branches/release-0.93/tests/suite.sh =================================================================== --- branches/release-0.93/tests/suite.sh 2011-09-26 19:35:12 UTC (rev 5174) +++ branches/release-0.93/tests/suite.sh 2011-09-27 01:30:18 UTC (rev 5175) @@ -117,6 +117,7 @@ SEQ=1 DATE=$( date +"%Y-%m-%d" ) TIME=$( date +"%T" ) +HOURMINSEC=$( date +"%H%M%S" ) RUNDIRBASE="run-$DATE" RUNDIR=$TOPDIR/$RUNDIRBASE @@ -356,7 +357,7 @@ LABEL="$2" # Text on link to output CMD=$3 # Command issued (td title) RESULT=$4 # Passed or Failed - + if [ $TEXTREPORT == 1 ]; then if [ "$TYPE" == "test" ]; then if [ "$RESULT" == "Passed" ]; then @@ -377,7 +378,7 @@ # WIDTH=$( width "$LABEL" ) if [ "$RESULT" == "Passed" ]; then html_td class "success" width 25 title "$CMD" - html_a_href $OUTPUT "$LABEL" + html_a_href "$TESTNAMEDIR/$OUTPUT" "$LABEL" elif [ "$RESULT" == "None" ]; then html_td width 25 html "  " @@ -386,7 +387,7 @@ echo -e "${RED}FAILED${GRAY}" cat $RUNDIR/$OUTPUT < /dev/null html_td class "failure" width 25 title "$CMD" - html_a_href $OUTPUT $LABEL + html_a_href "$TESTNAMEDIR/$OUTPUT" "$LABEL" fi html_~td elif [ "$TYPE" == "package" ]; then @@ -696,7 +697,7 @@ process_exec $SCRIPT RESULT=$( result ) - + output_report test "$SYMBOL" "$LASTCMD" $RESULT check_bailout @@ -705,11 +706,10 @@ stage_files() { GROUP=$1 NAME=$2 - RESULT="None" - - if [ -f $GROUP/$NAME.in ]; then - echo "Copying input: $NAME.in" + + if [ -f "$GROUP/$NAME.in" ]; then + echo "Copying input: $NAME.in" cp -v $GROUP/$NAME.in . 2>&1 >> $OUTPUT if [ "$?" != 0 ]; then RESULT="Failed" @@ -718,9 +718,10 @@ RESULT="Passed" fi fi + for INPUT in $GROUP/$NAME.*.in; do IN=`basename $INPUT` - echo "Copying input: $IN" + echo "Copying input: $IN" cp -v $INPUT . 2>&1 >> $OUTPUT if [ "$?" != 0 ]; then RESULT="Failed" @@ -771,7 +772,6 @@ swift_test_case() { SWIFTSCRIPT=$1 NAME=${SWIFTSCRIPT%.swift} - SETUPSCRIPT=$NAME.setup.sh CHECKSCRIPT=$NAME.check.sh CLEANSCRIPT=$NAME.clean.sh @@ -779,7 +779,7 @@ ARGSFILE=$NAME.args TEST_SHOULD_FAIL=0 - + OUTPUT=$NAME.setup.stdout if [ -x $GROUP/$SETUPSCRIPT ]; then script_exec $GROUP/$SETUPSCRIPT "S" @@ -799,7 +799,7 @@ TIMEOUT=$( gettimeout $GROUP/$TIMEOUTFILE ) - grep THIS-SCRIPT-SHOULD-FAIL $SWIFTSCRIPT > /dev/null + grep THIS-SCRIPT-SHOULD-FAIL $GROUP/$SWIFTSCRIPT > /dev/null TEST_SHOULD_FAIL=$(( ! $? )) OUTPUT=$NAME.stdout @@ -1065,43 +1065,48 @@ # Execute all tests in current GROUP test_group() { - group_swift_properties - group_sites_xml - group_tc_data - group_fs_data SWIFTS=$( echo $GROUP/*.swift ) checkfail "Could not list: $GROUP" for TEST in $SWIFTS; do - + (( SKIP_COUNTER++ < SKIP_TESTS )) && continue TESTNAME=$( basename $TEST ) + TESTNAMEDIR=`basename $TESTNAME .swift`-$DATE-$HOURMINSEC + mkdir -p $TESTNAMEDIR + pushd $TESTNAMEDIR > /dev/null 2>&1 - echo - echo - echo "/--------------------------------------------------------------" + cp $TEST . + group_swift_properties + group_sites_xml + group_tc_data + group_fs_data + + echo + echo + echo "/--------------------------------------------------------------" echo -e "| Test case: $LGREEN$TESTNAME$GRAY" - echo "\--------------------------------------------------------------" + echo "\--------------------------------------------------------------" echo - cp $GROUP/$TESTNAME . - TESTLINK=$TESTNAME - # Use repeat.txt to determine number of test iterations SCRIPT_BASENAME=`basename $TESTNAME .swift` + TESTLINK="$TESTNAMEDIR/$TESTNAME" if [ -f "$GROUP/$SCRIPT_BASENAME.repeat" ]; then ITERS_LOCAL=`cat $GROUP/$SCRIPT_BASENAME.repeat` fi for (( i=0; $i<$ITERS_LOCAL; i=$i+1 )); do + HOURMINSEC=$( date +"%H%M%S" ) start_row swift_test_case $TESTNAME (( $TESTCOUNT >= $NUMBER_OF_TESTS )) && return (( $SHUTDOWN )) && return end_row done + popd > /dev/null 2>&1 done group_statistics TOTAL_TIME=0 @@ -1118,7 +1123,7 @@ TESTNAME=$( basename $TEST ) cp -v $GROUP/$TESTNAME . - TESTLINK=$TESTNAME + TESTLINK="$TESTNAMEDIR/$TESTNAME" start_row for ((i=0; $i<$ITERS_LOCAL; i=$i+1)); do From tga at ci.uchicago.edu Tue Sep 27 09:58:54 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 09:58:54 -0500 (CDT) Subject: [Swift-commit] r5176 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110927145854.4CCFC9CCC2@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 09:58:54 -0500 (Tue, 27 Sep 2011) New Revision: 5176 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: extra messages, timeout from env var Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 01:30:18 UTC (rev 5175) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 14:58:54 UTC (rev 5176) @@ -153,7 +153,7 @@ RPIDS= -TIMEOUT=30 +TIMEOUT=${SWIFTR_TIMEOUT:-30} IDLE_TIMEOUT=120 timeout_pid= @@ -202,6 +202,7 @@ launchRServer $SLOTDIR else # wait to make sure fifo exists + echo DB: Slot directory $SLOTDIR already exists # R.pid is created last and left if, so wait for that while true; do if [ -f $SLOTDIR/R.pid ]; then From tga at ci.uchicago.edu Tue Sep 27 10:06:43 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 10:06:43 -0500 (CDT) Subject: [Swift-commit] r5177 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110927150643.6F3B99CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 10:06:43 -0500 (Tue, 27 Sep 2011) New Revision: 5177 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Fix typo Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 14:58:54 UTC (rev 5176) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 15:06:43 UTC (rev 5177) @@ -120,7 +120,6 @@ kill $rpid rm -f $SLOTDIR/idletimer $SLOTDIR/fromR.fifo $SLOTDIR/toR.fifo touch $SLOTDIR/timedout - else fi rmdir $SLOTDIR/mutex fi From tga at ci.uchicago.edu Tue Sep 27 10:23:40 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 10:23:40 -0500 (CDT) Subject: [Swift-commit] r5178 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110927152340.9268E9CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 10:23:40 -0500 (Tue, 27 Sep 2011) New Revision: 5178 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Use rm -f to avoid error message. Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 15:06:43 UTC (rev 5177) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 15:23:40 UTC (rev 5178) @@ -146,7 +146,7 @@ SLOTDIR=$WORKERDIR/${SWIFT_JOB_SLOT} # terminate timeout as early as possible -rm ${SLOTDIR}/idletimer +rm -f ${SLOTDIR}/idletimer mkdir -p $WORKERDIR @@ -182,7 +182,7 @@ } function timeout_handler { - echo 'Timed out waiting to contact R process' + echo "Timed out after ${TIMEOUT}s waiting to contact R process" echo 'R log follows:' echo '=====================' cat $SLOTDIR/R.log From tga at ci.uchicago.edu Tue Sep 27 11:12:31 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 11:12:31 -0500 (CDT) Subject: [Swift-commit] r5179 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110927161231.66FA99CCC2@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 11:12:31 -0500 (Tue, 27 Sep 2011) New Revision: 5179 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh SwiftApps/SwiftR/Swift/exec/configure-server-crayxt Log: Change timeout values so that crayxt has longer timeout than other configs Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 15:23:40 UTC (rev 5178) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 16:12:31 UTC (rev 5179) @@ -152,7 +152,7 @@ RPIDS= -TIMEOUT=${SWIFTR_TIMEOUT:-30} +TIMEOUT=${SWIFTR_TIMEOUT:-10} IDLE_TIMEOUT=120 timeout_pid= Modified: SwiftApps/SwiftR/Swift/exec/configure-server-crayxt =================================================================== --- SwiftApps/SwiftR/Swift/exec/configure-server-crayxt 2011-09-27 15:23:40 UTC (rev 5178) +++ SwiftApps/SwiftR/Swift/exec/configure-server-crayxt 2011-09-27 16:12:31 UTC (rev 5179) @@ -28,7 +28,8 @@ $LUSTRE_TMP $LUSTRE_TMP $LD_LIBRARY_PATH - 5 + + 30 $R_LIBS_USER $LUSTRE_TMP/swiftwork $LUSTRE_TMP/swiftscratch From davidk at ci.uchicago.edu Tue Sep 27 14:09:42 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 27 Sep 2011 14:09:42 -0500 (CDT) Subject: [Swift-commit] r5180 - in branches/release-0.93/tests: . language/working local stress/persistent-coasters/pass-fail-pass Message-ID: <20110927190942.125C89CCBD@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-27 14:09:41 -0500 (Tue, 27 Sep 2011) New Revision: 5180 Added: branches/release-0.93/tests/language/working/061-stdoutinerr.setup.sh branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0001.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0002.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0003.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0004.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0005.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0006.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0007.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0008.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0009.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.setup.sh branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.swift branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.timeout branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0001.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0002.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0003.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0004.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0005.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0006.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0007.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0008.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0009.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.swift branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0001.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0002.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0003.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0004.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0005.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0006.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0007.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0008.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0009.out.expected branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.setup.sh branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.swift branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.timeout branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/coaster-service.conf branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/data.txt branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/sites.template.xml Modified: branches/release-0.93/tests/local/filesysmapper.check.sh branches/release-0.93/tests/suite.sh Log: Updates to test suite and more tests Added: branches/release-0.93/tests/language/working/061-stdoutinerr.setup.sh =================================================================== --- branches/release-0.93/tests/language/working/061-stdoutinerr.setup.sh (rev 0) +++ branches/release-0.93/tests/language/working/061-stdoutinerr.setup.sh 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +cp -v $GROUP/test.in . Property changes on: branches/release-0.93/tests/language/working/061-stdoutinerr.setup.sh ___________________________________________________________________ Added: svn:executable + * Modified: branches/release-0.93/tests/local/filesysmapper.check.sh =================================================================== --- branches/release-0.93/tests/local/filesysmapper.check.sh 2011-09-27 16:12:31 UTC (rev 5179) +++ branches/release-0.93/tests/local/filesysmapper.check.sh 2011-09-27 19:09:41 UTC (rev 5180) @@ -2,7 +2,7 @@ set -x -ls $TEST_LOG || exit 1 +ls $OUTPUT || exit 1 COUNT=$( grep -c "file: [abc].dat" < $TEST_LOG ) (( $COUNT == 3 )) || exit 1 Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0001.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0001.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0002.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0002.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0003.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0003.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0004.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0004.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0005.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0005.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0006.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0006.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0007.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0007.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0008.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0008.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0009.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.0009.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.setup.sh =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.setup.sh 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,7 @@ +#!/bin/bash + +cp $GROUP/coaster-service.conf . +cp $GROUP/data.txt . +if [ ! -f "$HOME/.swift/.coaster-service-pids" ]; then + start-coaster-service +fi Property changes on: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.swift =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.swift (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.swift 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.timeout =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.timeout (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/001-catsn.timeout 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +999999 Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0001.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0001.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0001.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0002.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0002.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0002.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0003.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0003.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0003.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0004.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0004.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0004.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0005.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0005.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0005.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0006.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0006.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0006.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0007.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0007.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0007.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0008.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0008.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0008.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0009.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0009.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.0009.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.swift =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.swift (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/002-catsnbroken.swift 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"nodata.txt">; + out[j] = cat(data); +} Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0001.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0001.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0002.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0002.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0003.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0003.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0004.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0004.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0005.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0005.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0006.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0006.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0007.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0007.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0008.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0008.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0009.out.expected =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.0009.out.expected 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.setup.sh =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.setup.sh 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp $GROUP/coaster-service.conf . +cp $GROUP/data.txt . Property changes on: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.swift =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.swift (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.swift 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.timeout =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.timeout (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/003-catsn.timeout 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +999999 Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/coaster-service.conf =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/coaster-service.conf (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/coaster-service.conf 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,42 @@ +# Keep all interesting settings in one place +# User should modify this to fit environment + +# Location of SWIFT. If empty, PATH is searched +export SWIFT= + +# Where to copy worker.pl on the remote machine for sites.xml +export WORKER_WORK=$HOME/swiftwork + +# How to launch workers: local, ssh, cobalt, or futuregrid +export WORKER_MODE=ssh + +# SSH hosts to start workers on (ssh mode only) +export WORKER_HOSTS="localhost" + +# Do all the worker nodes you're using have a shared filesystem? (yes/no) +export SHARED_FILESYSTEM=yes + +# Username to use on worker nodes +export WORKER_USERNAME=$USER + +# Enable SSH tunneling? (yes/no) +export SSH_TUNNELING=no + +# Directory to keep log files, relative to working directory when launching start-coaster-service +export LOG_DIR=logs + +# Manually define ports. If not specified, an available port will be used +export LOCAL_PORT= +export SERVICE_PORT= + +# start-coaster-service tries to automatically detect the IP address of this system. Specify here if you have multiple network interfaces +export IPADDR= + +# Location of the swift-vm-boot scripts +export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot + +# Swift information for creating sites.xml +export WORK=$HOME/swiftwork +export QUEUE=prod-devel +export MAXTIME=20 +export NODE=64 Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/data.txt =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/data.txt (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/data.txt 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1 @@ +Hello world Added: branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/sites.template.xml =================================================================== --- branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/sites.template.xml (rev 0) +++ branches/release-0.93/tests/stress/persistent-coasters/pass-fail-pass/sites.template.xml 2011-09-27 19:09:41 UTC (rev 5180) @@ -0,0 +1,9 @@ +persistent-coasters echo /bin/echo null null null +persistent-coasters cat /bin/cat null null null +persistent-coasters ls /bin/ls null null null +persistent-coasters grep /bin/grep null null null +persistent-coasters sort /bin/sort null null null +persistent-coasters paste /bin/paste null null null +persistent-coasters cp /bin/cp null null null +persistent-coasters wc /usr/bin/wc null null null +persistent-coasters hostname /bin/hostname null null null Modified: branches/release-0.93/tests/suite.sh =================================================================== --- branches/release-0.93/tests/suite.sh 2011-09-27 16:12:31 UTC (rev 5179) +++ branches/release-0.93/tests/suite.sh 2011-09-27 19:09:41 UTC (rev 5180) @@ -1073,17 +1073,7 @@ (( SKIP_COUNTER++ < SKIP_TESTS )) && continue - TESTNAME=$( basename $TEST ) - TESTNAMEDIR=`basename $TESTNAME .swift`-$DATE-$HOURMINSEC - mkdir -p $TESTNAMEDIR - pushd $TESTNAMEDIR > /dev/null 2>&1 - cp $TEST . - group_swift_properties - group_sites_xml - group_tc_data - group_fs_data - echo echo echo "/--------------------------------------------------------------" @@ -1092,21 +1082,33 @@ echo # Use repeat.txt to determine number of test iterations - SCRIPT_BASENAME=`basename $TESTNAME .swift` - TESTLINK="$TESTNAMEDIR/$TESTNAME" + SCRIPT_BASENAME=`basename $TEST .swift` if [ -f "$GROUP/$SCRIPT_BASENAME.repeat" ]; then ITERS_LOCAL=`cat $GROUP/$SCRIPT_BASENAME.repeat` fi for (( i=0; $i<$ITERS_LOCAL; i=$i+1 )); do - HOURMINSEC=$( date +"%H%M%S" ) + + HOURMINSEC=$( date +"%H%M%S" ) + TESTNAME=$( basename $TEST ) + TESTNAMEDIR=`basename $TESTNAME .swift`-$HOURMINSEC + TESTLINK="$TESTNAMEDIR/$TESTNAME" + mkdir -p $TESTNAMEDIR + pushd $TESTNAMEDIR > /dev/null 2>&1 + + cp $TEST . + group_swift_properties + group_sites_xml + group_tc_data + group_fs_data + start_row swift_test_case $TESTNAME (( $TESTCOUNT >= $NUMBER_OF_TESTS )) && return (( $SHUTDOWN )) && return end_row + popd > /dev/null 2>&1 done - popd > /dev/null 2>&1 done group_statistics TOTAL_TIME=0 @@ -1120,6 +1122,11 @@ for TEST in $SCRIPTS; do (( SKIP_COUNTER++ < SKIP_TESTS )) && continue + HOURMINSEC=$( date +"%H%M%S" ) + TESTNAME=$( basename $TEST ) + TESTNAMEDIR=`basename $TESTNAME .swift`-$HOURMINSEC + mkdir -p $TESTNAMEDIR + pushd $TESTNAMEDIR > /dev/null 2>&1 TESTNAME=$( basename $TEST ) cp -v $GROUP/$TESTNAME . From tga at ci.uchicago.edu Tue Sep 27 14:50:12 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 14:50:12 -0500 (CDT) Subject: [Swift-commit] r5181 - in SwiftApps/SwiftR: . Swift/exec Message-ID: <20110927195012.9913C9CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 14:50:12 -0500 (Tue, 27 Sep 2011) New Revision: 5181 Modified: SwiftApps/SwiftR/IMMEDIATE-TODO SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh SwiftApps/SwiftR/Swift/exec/configure-server-crayxt SwiftApps/SwiftR/Swift/exec/start-swift Log: Cleanup temporary directory on lustre to avoid problems with stale temporary files Modified: SwiftApps/SwiftR/IMMEDIATE-TODO =================================================================== --- SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-27 19:09:41 UTC (rev 5180) +++ SwiftApps/SwiftR/IMMEDIATE-TODO 2011-09-27 19:50:12 UTC (rev 5181) @@ -1,7 +1,8 @@ +HIGH: +-- Have run-specific temporary directories on lustre which can be cleaned up - HIGH: -- OpenMx Benchmarking on Beagle Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 19:09:41 UTC (rev 5180) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-27 19:50:12 UTC (rev 5181) @@ -17,7 +17,12 @@ # tmp=/tmp # FIXME: allow this to change eg for sites with main tmp dir elsewhere # tmp=/scratch/local # FIXME: allow this to change eg for sites with main tmp dir elsewhere -tmp=${SWIFTR_TMP:-${TMP:-/tmp}} +if [ -z $SWIFTR_TMP ]; then + tmproot=${TMP:-/tmp} + tmp=$tmproot/$(id -nu)/SwiftR +else + tmp=${SWIFTR_TMP} +fi RServerScript=$1 callFile=$2 @@ -114,7 +119,6 @@ # if mutex has been acquired, know another process active if mkdir $SLOTDIR/mutex ; then new_idletimer_id=$(cat $SLOTDIR/idletimer) - echo new: "$new_idletimer_id" old "$idletimer_id" > $SLOTDIR/idletimer_ids if [ "$new_idletimer_id" = "$idletimer_id" ]; then echo killing idle R process $rpid kill $rpid @@ -128,10 +132,12 @@ # Ensure that the dir for this slot exists. -BASEDIR=$tmp/$(id -nu)/SwiftR/Rworkers.$(hostname) + +BASEDIR=$tmp/Rworkers.$(hostname) if mkdir -p $BASEDIR; then - : + : else + # Sometimes the old directory exists with wrong permissions OLD_BASEDIR=$BASEDIR BASEDIR=$tmp/SwiftR.$(hostname).${SWIFT_WORKER_PID}.Rworkers mkdir -p $BASEDIR Modified: SwiftApps/SwiftR/Swift/exec/configure-server-crayxt =================================================================== --- SwiftApps/SwiftR/Swift/exec/configure-server-crayxt 2011-09-27 19:09:41 UTC (rev 5180) +++ SwiftApps/SwiftR/Swift/exec/configure-server-crayxt 2011-09-27 19:50:12 UTC (rev 5181) @@ -10,8 +10,6 @@ # FIXME: examine effect of 1-min default maxwalltime above # FIXME: determine best value for throttle below -LUSTRE_TMP=/lustre/beagle/$USER/swiftRtmp -mkdir -p $LUSTRE_TMP cat >sites.xml < @@ -26,7 +24,9 @@ 10000 $LUSTRE_TMP - $LUSTRE_TMP + + $LUSTRE_RTMP $LD_LIBRARY_PATH 30 Modified: SwiftApps/SwiftR/Swift/exec/start-swift =================================================================== --- SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-27 19:09:41 UTC (rev 5180) +++ SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-27 19:50:12 UTC (rev 5181) @@ -819,8 +819,34 @@ cores=$defaultClusterCores fi echo server=$server project=$project cores=$cores nodes=$nodes queue=$queue - if [ $server = pbsf ] - then + + DIRS_TO_DELETE= + if [ $server = crayxt ]; then + #FIXME: beagle-specific code + LUSTRE_TMPROOT=/lustre/beagle/$USER/swiftRtmp + if mkdir -p $LUSTRE_TMPROOT; then + : + else + echo "Could not create temporary directory $LUSTRE_TMPROOT" + stdcleanup_start + stdcleanup_end + exit 1 + fi + + + while true + do + LUSTRE_TMPSESSION=$LUSTRE_TMPROOT/$RANDOM + if mkdir $LUSTRE_TMPSESSION; then + break + fi + done + # Cray XT cluster nodes don't have local writable tmp storage + export LUSTRE_TMP=$LUSTRE_TMPSESSION + export LUSTRE_RTMP=$LUSTRE_TMPSESSION/Rtmp + mkdir -p $LUSTRE_RTMP + source $SWIFTRBIN/configure-server-crayxt + elif [ $server = pbsf ]; then source $SWIFTRBIN/configure-server-pbs else source $SWIFTRBIN/configure-server-${server} @@ -842,8 +868,12 @@ if [ "_$jobid" != _ ]; then qdel "$jobid" &> /dev/null fi + if [ $server = crayxt -a "$keepdir" = FALSE ]; then + # Clean up session working directory + rm -rf $LUSTRE_TMPSESSION + fi + stdcleanup_end # eit cleanly - stdcleanup_end exit 0 } From davidk at ci.uchicago.edu Tue Sep 27 16:05:32 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 27 Sep 2011 16:05:32 -0500 (CDT) Subject: [Swift-commit] r5182 - in trunk/tests: . language/working language-behaviour/mappers local Message-ID: <20110927210532.48FB89CCBD@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-27 16:05:32 -0500 (Tue, 27 Sep 2011) New Revision: 5182 Added: trunk/tests/language-behaviour/mappers/0755-ext-mapper.sh.in trunk/tests/language/working/061-stdoutinerr.setup.sh trunk/tests/language/working/062-stdinerrout.setup.sh Modified: trunk/tests/language-behaviour/mappers/07511-fixed-array-mapper-input.check.sh trunk/tests/local/filesysmapper.check.sh trunk/tests/local/range.check.sh trunk/tests/suite.sh Log: Updates to test suite Added: trunk/tests/language/working/061-stdoutinerr.setup.sh =================================================================== --- trunk/tests/language/working/061-stdoutinerr.setup.sh (rev 0) +++ trunk/tests/language/working/061-stdoutinerr.setup.sh 2011-09-27 21:05:32 UTC (rev 5182) @@ -0,0 +1 @@ +cp -v $GROUP/test.in . Property changes on: trunk/tests/language/working/061-stdoutinerr.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/language/working/062-stdinerrout.setup.sh =================================================================== --- trunk/tests/language/working/062-stdinerrout.setup.sh (rev 0) +++ trunk/tests/language/working/062-stdinerrout.setup.sh 2011-09-27 21:05:32 UTC (rev 5182) @@ -0,0 +1 @@ +cp -v $GROUP/test.in . Property changes on: trunk/tests/language/working/062-stdinerrout.setup.sh ___________________________________________________________________ Added: svn:executable + * Modified: trunk/tests/language-behaviour/mappers/07511-fixed-array-mapper-input.check.sh =================================================================== --- trunk/tests/language-behaviour/mappers/07511-fixed-array-mapper-input.check.sh 2011-09-27 19:50:12 UTC (rev 5181) +++ trunk/tests/language-behaviour/mappers/07511-fixed-array-mapper-input.check.sh 2011-09-27 21:05:32 UTC (rev 5182) @@ -1,6 +1,6 @@ #!/bin/bash set -x -cat $TEST_LOG | grep "file: 07511-fixed-array-mapper-input.first.in" || exit 1 -cat $TEST_LOG | grep "file: 07511-fixed-array-mapper-input.second.in" || exit 1 -cat $TEST_LOG | grep "file: 07511-fixed-array-mapper-input.third.in" || exit 1 +cat 07511-fixed-array-mapper-input.stdout | grep "file: 07511-fixed-array-mapper-input.first.in" || exit 1 +cat 07511-fixed-array-mapper-input.stdout | grep "file: 07511-fixed-array-mapper-input.second.in" || exit 1 +cat 07511-fixed-array-mapper-input.stdout | grep "file: 07511-fixed-array-mapper-input.third.in" || exit 1 exit 0 Added: trunk/tests/language-behaviour/mappers/0755-ext-mapper.sh.in =================================================================== --- trunk/tests/language-behaviour/mappers/0755-ext-mapper.sh.in (rev 0) +++ trunk/tests/language-behaviour/mappers/0755-ext-mapper.sh.in 2011-09-27 21:05:32 UTC (rev 5182) @@ -0,0 +1,4 @@ +echo "[0].l 0755-ext-mapper.AAA.out" +echo "[1].r 0755-ext-mapper.0.3.2.1.out" +echo "[2].l 0755-ext-mapper.____.out" + Property changes on: trunk/tests/language-behaviour/mappers/0755-ext-mapper.sh.in ___________________________________________________________________ Added: svn:executable + * Modified: trunk/tests/local/filesysmapper.check.sh =================================================================== --- trunk/tests/local/filesysmapper.check.sh 2011-09-27 19:50:12 UTC (rev 5181) +++ trunk/tests/local/filesysmapper.check.sh 2011-09-27 21:05:32 UTC (rev 5182) @@ -2,8 +2,8 @@ set -x -ls stdout.txt || exit 1 -COUNT=$( grep -c "file: [abc].dat" < stdout.txt ) +ls filesysmapper.stdout || exit 1 +COUNT=$( grep -c "file: [abc].dat" < filesysmapper.stdout ) (( $COUNT == 3 )) || exit 1 exit 0 Modified: trunk/tests/local/range.check.sh =================================================================== --- trunk/tests/local/range.check.sh 2011-09-27 19:50:12 UTC (rev 5181) +++ trunk/tests/local/range.check.sh 2011-09-27 21:05:32 UTC (rev 5182) @@ -2,9 +2,9 @@ set -x -ls stdout.txt || exit 1 +ls range.stdout || exit 1 -COUNT=$( grep -c "num:" stdout.txt ) +COUNT=$( grep -c "num:" range.stdout ) (( $COUNT == 11 )) || exit 1 exit 0 Modified: trunk/tests/suite.sh =================================================================== --- trunk/tests/suite.sh 2011-09-27 19:50:12 UTC (rev 5181) +++ trunk/tests/suite.sh 2011-09-27 21:05:32 UTC (rev 5182) @@ -118,6 +118,7 @@ SEQ=1 DATE=$( date +"%Y-%m-%d" ) TIME=$( date +"%T" ) +HOURMINSEC=$( date +"%H%M%S" ) RUNDIRBASE="run-$DATE" RUNDIR=$TOPDIR/$RUNDIRBASE @@ -363,7 +364,7 @@ printf %-10.10s "success">>$REPORT else echo -e "${RED}FAILED${GRAY}" - cat $RUNDIR/$TEST_LOG < /dev/null + cat $RUNDIR/$OUTPUT < /dev/null printf %-10.10s "failure">>$REPORT fi @@ -377,17 +378,17 @@ # WIDTH=$( width "$LABEL" ) if [ "$RESULT" == "Passed" ]; then html_td class "success" width 25 title "$CMD" - html_a_href $TEST_LOG "$LABEL" + html_a_href "$TESTNAMEDIR/$OUTPUT" "$LABEL" elif [ "$RESULT" == "None" ]; then html_td width 25 html "  " html_~td else echo -e "${RED}FAILED${GRAY}" - cat $RUNDIR/$TEST_LOG < /dev/null + cat $RUNDIR/$OUTPUT < /dev/null html_td class "failure" width 25 title "$CMD" - html_a_href $TEST_LOG $LABEL - fi + html_a_href "$TESTNAMEDIR/$OUTPUT" "$LABEL" + fi html_~td elif [ "$TYPE" == "package" ]; then BINPACKAGE=$2 @@ -596,8 +597,7 @@ fi RESULT=$( result ) - test_log - output_report test $SEQ "$LASTCMD" $RESULT $TEST_LOG + output_report test $SEQ "$LASTCMD" $RESULT $OUTPUT check_bailout @@ -695,8 +695,7 @@ LASTCMD="$@" - test_log - output_report test $SEQ "$LASTCMD" $RESULT $TEST_LOG + output_report test $SEQ "$LASTCMD" $RESULT $OUTPUT check_bailout @@ -711,7 +710,6 @@ process_exec $SCRIPT RESULT=$( result ) - test_log output_report test "$SYMBOL" "$LASTCMD" $RESULT check_bailout @@ -723,7 +721,7 @@ RESULT="None" - if [ -f $GROUP/$NAME.in ]; then + if [ -f "$GROUP/$NAME.in" ]; then echo "Copying input: $NAME.in" cp -v $GROUP/$NAME.in . 2>&1 >> $OUTPUT if [ "$?" != 0 ]; then @@ -800,6 +798,7 @@ ARGSFILE=$NAME.args TEST_SHOULD_FAIL=0 + OUTPUT=$NAME.setup.stdout if [ -x $GROUP/$SETUPSCRIPT ]; then script_exec $GROUP/$SETUPSCRIPT "S" else @@ -818,9 +817,10 @@ TIMEOUT=$( gettimeout $GROUP/$TIMEOUTFILE ) - grep THIS-SCRIPT-SHOULD-FAIL $SWIFTSCRIPT > /dev/null + grep THIS-SCRIPT-SHOULD-FAIL $GROUP/$SWIFTSCRIPT > /dev/null TEST_SHOULD_FAIL=$(( ! $? )) + OUTPUT=$NAME.stdout monitored_exec $TIMEOUT swift \ -wrapperlog.always.transfer true \ -sitedir.keep true \ @@ -831,12 +831,13 @@ TEST_SHOULD_FAIL=0 if [ -x $GROUP/$CHECKSCRIPT ]; then - export OUTPUT + OUTPUT=$NAME.check.stdout script_exec $GROUP/$CHECKSCRIPT "√" else check_outputs $GROUP $NAME fi + OUTPUT=$NAME.clean.stdout if [ -x $GROUP/$CLEANSCRIPT ]; then script_exec $GROUP/$CLEANSCRIPT "C" else @@ -858,6 +859,7 @@ TIMEOUTFILE=$NAME.timeout TEST_SHOULD_FAIL=0 + OUTPUT=$NAME.clean.stdout if [ -x $GROUP/$SETUPSCRIPT ]; then script_exec $GROUP/$SETUPSCRIPT "S" else @@ -879,6 +881,8 @@ html_~td fi + OUTPUT=$NAME.stdout + if [ -x $GROUP/$SHELLSCRIPT ]; then script_exec $SHELLSCRIPT "X" else @@ -887,6 +891,7 @@ html_~td fi + OUTPUT=$NAME.check.stdout if [ -x $GROUP/$CHECKSCRIPT ]; then script_exec $GROUP/$CHECKSCRIPT "√" else @@ -895,6 +900,7 @@ html_~td fi + OUTPUT=$NAME.clean.stdout if [ -x $GROUP/$CLEANSCRIPT ]; then script_exec $GROUP/$CLEANSCRIPT "C" else @@ -1075,10 +1081,6 @@ # Execute all tests in current GROUP test_group() { - group_sites_xml - group_tc_data - group_fs_data - group_swift_properties SWIFTS=$( echo $GROUP/*.swift ) checkfail "Could not list: $GROUP" @@ -1087,8 +1089,6 @@ (( SKIP_COUNTER++ < SKIP_TESTS )) && continue - TESTNAME=$( basename $TEST ) - echo echo echo "/--------------------------------------------------------------" @@ -1096,21 +1096,34 @@ echo "\--------------------------------------------------------------" echo - cp $GROUP/$TESTNAME . TESTLINK=$TESTNAME # Use repeat.txt to determine number of test iterations SCRIPT_BASENAME=`basename $TESTNAME .swift` + TESTLINK="$TESTNAMEDIR/$TESTNAME" if [ -f "$GROUP/$SCRIPT_BASENAME.repeat" ]; then ITERS_LOCAL=`cat $GROUP/$SCRIPT_BASENAME.repeat` fi for (( i=0; $i<$ITERS_LOCAL; i=$i+1 )); do + HOURMINSEC=$( date +"%H%M%S" ) + TESTNAME=$( basename $TEST ) + TESTNAMEDIR=`basename $TESTNAME .swift`-$HOURMINSEC + TESTLINK="$TESTNAMEDIR/$TESTNAME" + mkdir -p $TESTNAMEDIR + pushd $TESTNAMEDIR > /dev/null 2>&1 + + cp $TEST . + group_swift_properties + group_sites_xml + group_tc_data + group_fs_data start_row swift_test_case $TESTNAME (( $TESTCOUNT >= $NUMBER_OF_TESTS )) && return (( $SHUTDOWN )) && return end_row + popd > /dev/null 2>&1 done done group_statistics @@ -1125,11 +1138,12 @@ for TEST in $SCRIPTS; do (( SKIP_COUNTER++ < SKIP_TESTS )) && continue - + HOURMINSEC=$( date +"%H%M%S" ) TESTNAME=$( basename $TEST ) + TESTNAMEDIR=`basename $TESTNAME .swift`-$HOURMINSEC + mkdir -p $TESTNAMEDIR + pushd $TESTNAMEDIR > /dev/null 2>&1 cp -v $GROUP/$TESTNAME . - TESTLINK=$TESTNAME - start_row for ((i=0; $i<$ITERS_LOCAL; i=$i+1)); do script_test_case $TESTNAME @@ -1178,6 +1192,7 @@ start_group "Build" TESTLINK= EXITONFAILURE=true +OUTPUT=checkout.stdout if [ "$SKIP_CHECKOUT" != "1" ]; then TESTNAME="Checkout CoG" start_row @@ -1195,6 +1210,7 @@ TESTNAME="Compile" start_row +OUTPUT=compile.stdout # Exit early if the Swift directory is not there if [[ ! -d $TOPDIR/cog/modules/swift ]] then @@ -1212,7 +1228,7 @@ test_exec ant -quiet dist fi SWIFT_HOME=$TOPDIR/cog/modules/swift/dist/swift-svn - +OUTPUT=compile.stdout if [ $BUILD_PACKAGE = "1" ]; then build_package fi @@ -1246,6 +1262,7 @@ (( $SHUTDOWN )) && break done +footer exit 0 # Local Variables: From tga at ci.uchicago.edu Tue Sep 27 16:06:34 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 16:06:34 -0500 (CDT) Subject: [Swift-commit] r5183 - in SwiftApps/SwiftR/Swift: . exec Message-ID: <20110927210634.833349CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 16:06:34 -0500 (Tue, 27 Sep 2011) New Revision: 5183 Modified: SwiftApps/SwiftR/Swift/DESCRIPTION SwiftApps/SwiftR/Swift/exec/start-swift Log: Bumped version number, added info message. Modified: SwiftApps/SwiftR/Swift/DESCRIPTION =================================================================== --- SwiftApps/SwiftR/Swift/DESCRIPTION 2011-09-27 21:05:32 UTC (rev 5182) +++ SwiftApps/SwiftR/Swift/DESCRIPTION 2011-09-27 21:06:34 UTC (rev 5183) @@ -1,12 +1,12 @@ Package: Swift Type: Package Title: R interface to Swift parallel scripting languaage -Version: 0.2.6 -Date: 2011-09-12 +Version: 0.2.7 +Date: 2011-09-27 Author: Michael Wilde Maintainer: Michael Wilde Description: Routines to invoke R functions on remote resources through Swift. License: Apache License LazyLoad: yes -Packaged: 2011-09-12; Tim Armstrong +Packaged: 2011-09-27; Tim Armstrong Modified: SwiftApps/SwiftR/Swift/exec/start-swift =================================================================== --- SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-27 21:05:32 UTC (rev 5182) +++ SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-27 21:06:34 UTC (rev 5183) @@ -838,6 +838,7 @@ do LUSTRE_TMPSESSION=$LUSTRE_TMPROOT/$RANDOM if mkdir $LUSTRE_TMPSESSION; then + echo "Temporary files will be stored in $LUSTRE_TMPSESSION" 1>&2 break fi done From tga at ci.uchicago.edu Tue Sep 27 16:17:45 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Tue, 27 Sep 2011 16:17:45 -0500 (CDT) Subject: [Swift-commit] r5184 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110927211745.C27079CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-27 16:17:45 -0500 (Tue, 27 Sep 2011) New Revision: 5184 Modified: SwiftApps/SwiftR/Swift/exec/start-swift Log: Remove incorrect local worker termination logic Modified: SwiftApps/SwiftR/Swift/exec/start-swift =================================================================== --- SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-27 21:06:34 UTC (rev 5183) +++ SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-27 21:17:45 UTC (rev 5184) @@ -724,18 +724,7 @@ source $SWIFTRBIN/configure-server-local function onexit { stdcleanup_start - # Find and terminate R workers: they should register their PiD - # in a standard location based on the pid of this start-swift - # script - for rwork in `(shopt -s nullglob; echo ../Rworkers/worker.$$/*/)` - do - if [ -f "$rwork/R.pid" ]; then - kill `cat $rwork/R.pid` &> /dev/null - fi - if [ "$keepdir" = "FALSE" ]; then - rm -rf $rwork - fi - done + # For time being, allow R workers to just time out stdcleanup_end exit 0 } From davidk at ci.uchicago.edu Tue Sep 27 16:27:12 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Tue, 27 Sep 2011 16:27:12 -0500 (CDT) Subject: [Swift-commit] r5185 - in trunk: etc tests/language-behaviour/IO Message-ID: <20110927212712.7CA8D9CCBD@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-27 16:27:12 -0500 (Tue, 27 Sep 2011) New Revision: 5185 Added: trunk/tests/language-behaviour/IO/075551-ext-mapper-twostruct-singleproducer.setup.sh trunk/tests/language-behaviour/IO/testimport.setup.sh trunk/tests/language-behaviour/IO/testimport2.setup.sh Modified: trunk/etc/tc.data Log: Test suite fixes Modified: trunk/etc/tc.data =================================================================== --- trunk/etc/tc.data 2011-09-27 21:17:45 UTC (rev 5184) +++ trunk/etc/tc.data 2011-09-27 21:27:12 UTC (rev 5185) @@ -18,3 +18,4 @@ localhost cp /bin/cp INSTALLED INTEL32::LINUX null localhost touch /bin/touch INSTALLED INTEL32::LINUX null localhost wc /usr/bin/wc INSTALLED INTEL32::LINUX null +localhost sleep /bin/sleep null null null Added: trunk/tests/language-behaviour/IO/075551-ext-mapper-twostruct-singleproducer.setup.sh =================================================================== --- trunk/tests/language-behaviour/IO/075551-ext-mapper-twostruct-singleproducer.setup.sh (rev 0) +++ trunk/tests/language-behaviour/IO/075551-ext-mapper-twostruct-singleproducer.setup.sh 2011-09-27 21:27:12 UTC (rev 5185) @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x + +cp -v $GROUP/07555-ext-mapper-twostruct.sh.in . || exit 1 + +exit 0 Property changes on: trunk/tests/language-behaviour/IO/075551-ext-mapper-twostruct-singleproducer.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/language-behaviour/IO/testimport.setup.sh =================================================================== --- trunk/tests/language-behaviour/IO/testimport.setup.sh (rev 0) +++ trunk/tests/language-behaviour/IO/testimport.setup.sh 2011-09-27 21:27:12 UTC (rev 5185) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/testimport2.swift . Property changes on: trunk/tests/language-behaviour/IO/testimport.setup.sh ___________________________________________________________________ Added: svn:executable + * Added: trunk/tests/language-behaviour/IO/testimport2.setup.sh =================================================================== --- trunk/tests/language-behaviour/IO/testimport2.setup.sh (rev 0) +++ trunk/tests/language-behaviour/IO/testimport2.setup.sh 2011-09-27 21:27:12 UTC (rev 5185) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/testimport.swift . Property changes on: trunk/tests/language-behaviour/IO/testimport2.setup.sh ___________________________________________________________________ Added: svn:executable + * From davidk at ci.uchicago.edu Wed Sep 28 13:06:07 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 28 Sep 2011 13:06:07 -0500 (CDT) Subject: [Swift-commit] r5186 - in branches/release-0.93: bin docs/siteguide tests Message-ID: <20110928180607.F39CB9CCBD@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-28 13:06:07 -0500 (Wed, 28 Sep 2011) New Revision: 5186 Modified: branches/release-0.93/bin/start-coaster-service branches/release-0.93/docs/siteguide/futuregrid branches/release-0.93/tests/suite.sh Log: Make suite.sh copy setup/clean/check scripts to new working directory Better integration of start-coaster-service and gensites Updated futuregrid docs Modified: branches/release-0.93/bin/start-coaster-service =================================================================== --- branches/release-0.93/bin/start-coaster-service 2011-09-27 21:27:12 UTC (rev 5185) +++ branches/release-0.93/bin/start-coaster-service 2011-09-28 18:06:07 UTC (rev 5186) @@ -242,7 +242,11 @@ # Generate sites.xml export EXECUTION_URL="http://$IPADDR:$SERVICE_PORT" echo Generating sites.xml -gensites persistent-coasters -p $CONFIG_FILE > $RUN_DIR/sites.xml +if [ -f "gensites.template" ]; then + gensites `cat gensites.template` -p $CONFIG_FILE > $RUN_DIR/sites.xml +else + gensites persistent-coasters -p $CONFIG_FILE > $RUN_DIR/sites.xml +fi # Generate config file if [ "$SHARED_FILESYSTEM" == "no" ]; then @@ -255,17 +259,3 @@ EOF fi -# Generate TC file -echo Generating tc.data -cat > $RUN_DIR/tc.data << EOF -persistent-coasters echo /bin/echo null null null -persistent-coasters cat /bin/cat null null null -persistent-coasters ls /bin/ls null null null -persistent-coasters grep /bin/grep null null null -persistent-coasters sort /bin/sort null null null -persistent-coasters paste /bin/paste null null null -persistent-coasters cp /bin/cp null null null -persistent-coasters wc /usr/bin/wc null null null -persistent-coasters hostname /bin/hostname null null null -EOF - Modified: branches/release-0.93/docs/siteguide/futuregrid =================================================================== --- branches/release-0.93/docs/siteguide/futuregrid 2011-09-27 21:27:12 UTC (rev 5185) +++ branches/release-0.93/docs/siteguide/futuregrid 2011-09-28 18:06:07 UTC (rev 5186) @@ -5,7 +5,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The most recent versions of Swift can be found at http://www.ci.uchicago.edu/swift/downloads/index.php. To run on futuregrid, -you will need to download the development/trunk version from SVN. +you will need to use Swift 0.93 or later. Adding Swift to your PATH ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -35,13 +35,14 @@ following command: ----- -$ svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/swift-vm-boot +$ svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/swift-vm-boot swift-vm-boot ----- Download your Credentials ~~~~~~~~~~~~~~~~~~~~~~~~~ Run the following commands to retrieve your credentials: ----- +$ cd swift-vm-boot $ scp yourusername at hotel.futuregrid.org:nimbus_creds.tar.gz . $ tar xvfz nimbus_creds.tar.gz ----- Modified: branches/release-0.93/tests/suite.sh =================================================================== --- branches/release-0.93/tests/suite.sh 2011-09-27 21:27:12 UTC (rev 5185) +++ branches/release-0.93/tests/suite.sh 2011-09-28 18:06:07 UTC (rev 5186) @@ -782,7 +782,8 @@ OUTPUT=$NAME.setup.stdout if [ -x $GROUP/$SETUPSCRIPT ]; then - script_exec $GROUP/$SETUPSCRIPT "S" + cp -v $GROUP/$SETUPSCRIPT . + script_exec ./$SETUPSCRIPT "S" else stage_files $GROUP $NAME fi @@ -798,6 +799,9 @@ (( TESTCOUNT++ )) TIMEOUT=$( gettimeout $GROUP/$TIMEOUTFILE ) + if [ -f "$GROUP/$TIMEOUTFILE" ]; then + cp "$GROUP/$TIMEOUTFILE" . + fi grep THIS-SCRIPT-SHOULD-FAIL $GROUP/$SWIFTSCRIPT > /dev/null TEST_SHOULD_FAIL=$(( ! $? )) @@ -814,15 +818,17 @@ TEST_SHOULD_FAIL=0 OUTPUT=$NAME.check.stdout if [ -x $GROUP/$CHECKSCRIPT ]; then - export TEST_LOG=$NAME.stdout - script_exec $GROUP/$CHECKSCRIPT "√" + cp "$GROUP/$CHECKSCRIPT" . + export TEST_LOG=$NAME.stdout + script_exec ./$CHECKSCRIPT "√" else check_outputs $GROUP $NAME fi OUTPUT=$NAME.clean.stdout if [ -x $GROUP/$CLEANSCRIPT ]; then - script_exec $GROUP/$CLEANSCRIPT "C" + cp "$GROUP/$CLEANSCRIPT" . + script_exec ./$CLEANSCRIPT "C" else html_td width 25 html "  " From tga at ci.uchicago.edu Wed Sep 28 13:32:43 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Wed, 28 Sep 2011 13:32:43 -0500 (CDT) Subject: [Swift-commit] r5187 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110928183243.B59A99CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-28 13:32:43 -0500 (Wed, 28 Sep 2011) New Revision: 5187 Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh Log: Properly clean up timer processes Modified: SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh =================================================================== --- SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-28 18:06:07 UTC (rev 5186) +++ SwiftApps/SwiftR/Swift/exec/EvalRBatchPersistent.sh 2011-09-28 18:32:43 UTC (rev 5187) @@ -109,11 +109,18 @@ function start_idletimer { # After the specified number of seconds # kill the specified R process + + # Cancel old timeout + if [ -f $SLOTDIR/idletimer_pid ] ; then + term_timeout $(cat $SLOTDIR/idletimer_pid) + fi + local timeout=$1 local rpid=$2 local idletimer_id=$$$(date '+%s%N') # timestamp in ns plus pid should be unique echo "$idletimer_id" > $SLOTDIR/idletimer ( + trap "exit 0" 1 # timeout cancelled with SIGHUP sleep ${timeout}s # if mutex has been acquired, know another process active @@ -122,12 +129,14 @@ if [ "$new_idletimer_id" = "$idletimer_id" ]; then echo killing idle R process $rpid kill $rpid - rm -f $SLOTDIR/idletimer $SLOTDIR/fromR.fifo $SLOTDIR/toR.fifo + rm -f $SLOTDIR/idletimer $SLOTDIR/idletimer_pid \ + $SLOTDIR/fromR.fifo $SLOTDIR/toR.fifo touch $SLOTDIR/timedout fi rmdir $SLOTDIR/mutex fi ) &> /dev/null & + echo $! > $SLOTDIR/idletimer_pid } # Ensure that the dir for this slot exists. @@ -162,6 +171,11 @@ IDLE_TIMEOUT=120 timeout_pid= +function term_timeout { + local pid=$1 + local others=`ps -o pid --no-headers --ppid $pid` + kill -1 "$pid" $others &> /dev/null +} function start_timeout { local ppid=$$ @@ -182,7 +196,8 @@ #DEBUG trap "" SIGHUP if [ ! -z "$timeout_pid" ]; then - kill -1 $timeout_pid + # kill timeout and sleep process + term_timeout $timeout_pid & timeout_pid= fi } From davidk at ci.uchicago.edu Wed Sep 28 14:29:39 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 28 Sep 2011 14:29:39 -0500 (CDT) Subject: [Swift-commit] r5188 - in trunk/tests: . language-behaviour/mappers Message-ID: <20110928192939.689FD9D057@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-28 14:29:39 -0500 (Wed, 28 Sep 2011) New Revision: 5188 Added: trunk/tests/language-behaviour/mappers/075551-ext-mapper-twostruct-singleproducer.setup.sh Modified: trunk/tests/suite.sh Log: Suite.sh fix to copy setup scripts to script directory Added: trunk/tests/language-behaviour/mappers/075551-ext-mapper-twostruct-singleproducer.setup.sh =================================================================== --- trunk/tests/language-behaviour/mappers/075551-ext-mapper-twostruct-singleproducer.setup.sh (rev 0) +++ trunk/tests/language-behaviour/mappers/075551-ext-mapper-twostruct-singleproducer.setup.sh 2011-09-28 19:29:39 UTC (rev 5188) @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x + +cp -v $GROUP/07555-ext-mapper-twostruct.sh.in . || exit 1 + +exit 0 Property changes on: trunk/tests/language-behaviour/mappers/075551-ext-mapper-twostruct-singleproducer.setup.sh ___________________________________________________________________ Added: svn:executable + * Modified: trunk/tests/suite.sh =================================================================== --- trunk/tests/suite.sh 2011-09-28 18:32:43 UTC (rev 5187) +++ trunk/tests/suite.sh 2011-09-28 19:29:39 UTC (rev 5188) @@ -53,7 +53,7 @@ -f) TEXTREPORT=1 shift;; - -h) + -h|--h|-help|--help) printhelp exit 0;; -k) @@ -799,8 +799,9 @@ TEST_SHOULD_FAIL=0 OUTPUT=$NAME.setup.stdout - if [ -x $GROUP/$SETUPSCRIPT ]; then - script_exec $GROUP/$SETUPSCRIPT "S" + if [ -x "$GROUP/$SETUPSCRIPT" ]; then + cp "$GROUP/$SETUPSCRIPT" . + script_exec ./$SETUPSCRIPT "S" else stage_files $GROUP $NAME fi @@ -816,7 +817,9 @@ (( TESTCOUNT++ )) TIMEOUT=$( gettimeout $GROUP/$TIMEOUTFILE ) - + if [ -f "$GROUP/$TIMEOUTFILE" ]; then + cp "$GROUP/$TIMEOUTFILE" . + fi grep THIS-SCRIPT-SHOULD-FAIL $GROUP/$SWIFTSCRIPT > /dev/null TEST_SHOULD_FAIL=$(( ! $? )) @@ -830,16 +833,18 @@ $CDM $SWIFTSCRIPT $ARGS TEST_SHOULD_FAIL=0 - if [ -x $GROUP/$CHECKSCRIPT ]; then + if [ -x "$GROUP/$CHECKSCRIPT" ]; then + cp "$GROUP/$CHECKSCRIPT" . OUTPUT=$NAME.check.stdout - script_exec $GROUP/$CHECKSCRIPT "√" + script_exec ./$CHECKSCRIPT "√" else check_outputs $GROUP $NAME fi OUTPUT=$NAME.clean.stdout - if [ -x $GROUP/$CLEANSCRIPT ]; then - script_exec $GROUP/$CLEANSCRIPT "C" + if [ -x "$GROUP/$CLEANSCRIPT" ]; then + cp "$GROUP/$CLEANSCRIPT" . + script_exec ./$CLEANSCRIPT "C" else html_td width 25 html "  " @@ -860,8 +865,9 @@ TEST_SHOULD_FAIL=0 OUTPUT=$NAME.clean.stdout - if [ -x $GROUP/$SETUPSCRIPT ]; then - script_exec $GROUP/$SETUPSCRIPT "S" + if [ -x "$GROUP/$SETUPSCRIPT" ]; then + cp "$GROUP/$SETUPSCRIPT" . + script_exec ./$SETUPSCRIPT "S" else html_td width 25 html "  " @@ -892,8 +898,9 @@ fi OUTPUT=$NAME.check.stdout - if [ -x $GROUP/$CHECKSCRIPT ]; then - script_exec $GROUP/$CHECKSCRIPT "√" + if [ -x "$GROUP/$CHECKSCRIPT" ]; then + cp "$GROUP/$CHECKSCRIPT" . + script_exec ./$CHECKSCRIPT "√" else html_td width 25 html "  " @@ -901,8 +908,9 @@ fi OUTPUT=$NAME.clean.stdout - if [ -x $GROUP/$CLEANSCRIPT ]; then - script_exec $GROUP/$CLEANSCRIPT "C" + if [ -x "$GROUP/$CLEANSCRIPT" ]; then + cp "$GROUP/$CLEANSCRIPT" . + script_exec ./$CLEANSCRIPT "C" else html_td width 25 html "  " From ketan at ci.uchicago.edu Wed Sep 28 15:25:15 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Wed, 28 Sep 2011 15:25:15 -0500 (CDT) Subject: [Swift-commit] r5189 - trunk/bin/grid Message-ID: <20110928202515.8D35B9CCBD@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-28 15:25:15 -0500 (Wed, 28 Sep 2011) New Revision: 5189 Added: trunk/bin/grid/my-swift-workers Log: temp copy of an improved swift-workers, work in progress Added: trunk/bin/grid/my-swift-workers =================================================================== --- trunk/bin/grid/my-swift-workers (rev 0) +++ trunk/bin/grid/my-swift-workers 2011-09-28 20:25:15 UTC (rev 5189) @@ -0,0 +1,332 @@ +#! /usr/bin/env ruby + +require 'erb' +require 'mk_catalog' +require 'etc' + +=begin +- Start the n coaster services: n is the number of sites in the whitelist +- Build coasters.sites.xml: In order to do this get all the greensites in an array of objects and iterate through them to generate the coasters.xml +- Start the workers where each worker connects to a servcie +=end + +# **Ketan ARGV[0]=greensites, ARGV[1]=extenci (why?: it's just an appname), ARGV[2]=workercontact in the form of http://Hosturl:port +$stdout.sync = true + +# FIXME: Is this the best way to get lib functions from bin/grid into RUBYLIB ? +$:[$:.length] = File.dirname($0) + + +class Site + attr_accessor :grid_resource, :gridftp, :data_dir, :app_dir, :name, :port + attr_reader :submit_file + + # **Ketan: Generate the worker job + def gen_submit(count = 1) + + ov=$VERBOSE + $VERBOSE=nil + workerExecutable = `which worker.pl` + workerWrapper = `which run-worker.sh` + $VERBOSE=ov + + # workerContact = "http://communicado.ci.uchicago.edu:36906" + # **Ketan: This will change, only read the url and supply port from the service.wports file + workerContact = ARGV[2] + + job = %Q[ + universe = grid + stream_output = False + stream_error = False + transfer_executable = true + periodic_remove = JobStatus == 5 + notification = Never + + globus_rsl = (maxwalltime=240) + grid_resource = <%= @grid_resource %> + executable = #{workerWrapper} + arguments = #{workerContact} <%= @name.gsub(/__.*/,"") %> /tmp + environment = WORKER_LOGGING_LEVEL=INFO + Input = #{workerExecutable} + Error = condor/$(Process).err + Output = condor/$(Process).out + log = condor.log + + queue #{count} + ] + + # **Ketan: Does this submits the worker? If yes, this would be required to be submitted for each service. + ERB.new(job.gsub(/^\s+/, ""), 0, "%<>", "@submit_file").result(binding) + + end + + # **Ketan: Submit the above generated job `count` times + def submit_job(count) + puts "submit_job: Submitting #{@name} #{count} jobs" + count = count.to_i + output = "" + submitfile = gen_submit(count) + IO.popen("condor_submit", "w+") do |submit| + submit.puts submitfile + submit.close_write + output = submit.read + end + output + end + + def queued + ov=$VERBOSE + $VERBOSE=nil + jobs = `condor_q #{$username} -const 'GridResource == \"#{@grid_resource}\" && JobStatus == 1' -format \"%s \" GlobalJobId` + $VERBOSE=ov + jobs.split(" ").size + end + + def running + ov=$VERBOSE + $VERBOSE=nil + jobs = `condor_q #{$username} -const 'GridResource == \"#{@grid_resource}\" && JobStatus == 2' -format \"%s \" GlobalJobId` + $VERBOSE=ov + jobs.split(" ").size + end + +end + +=begin +# For reference: +JobStatus in job ClassAds + +0 Unexpanded U +1 Idle I +2 Running R +3 Removed X +4 Completed C +5 Held H +6 Submission_err E +=end + +# **Ketan: Program execution starts from here +if __FILE__ == $0 + raise "No greenlist file" if !ARGV[0] + + # **Ketan: Read the lines in greensites file and start that many services + numlines = %x{wc -l #{ARGV[0]}}.split.first.to_i + + # **Ketan: Remove any worker or service ports file present from the previous runs + system("rm -f service.sports service.wports") + + system("start-swift-service #{numlines} &") + + service_ports=[] + worker_ports=[] + + sleep 40 + + sports_file=File.open("service.sports") + sports_file.each_line { |line| + service_ports.push line + } + + sports_file.close + wports_file=File.open("service.wports") + wports_file.each_line { |line| + worker_ports.push line + } + + wports_file.close + + puts "service ports" + puts service_ports + puts "=============" + puts "worker ports" + puts worker_ports + + # **Ketan: This will change, should be the first line of service. + + start_port = 61100 # FIXME + #start_port = + ctr = 0 + threads = [] + ARGV[1] = "scec" if !ARGV[1] + greenlist = IO.readlines(ARGV[0]).map { |line| line.chomp! } + $username = Etc.getlogin + + puts "Username = #{$username}" + + minSiteJobs = 2 + paddedDemand = 0 + swiftDemand = 0 + totalCores = 0 + totalRunning = 0 + + ress_parse(ARGV[1]) do |name, value| + next if not greenlist.index(name) and not greenlist.empty? + totalCores += (value.throttle * 100 + 2).to_i + end + + puts "totalCores for green sites = #{totalCores}" + + demandThread = Thread.new("monitor-demand") do |t| + puts "starting demand thread" + while true do + puts "in demand thread" + swiftDemand = IO.read("swiftDemand").to_i # Replace this with sensor of Swift demand + # swiftDemand = 15 + paddedDemand = (swiftDemand * 1.2).to_i + ov=$VERBOSE;$VERBOSE=nil + totalRunning = `condor_q #{$username} -const 'JobStatus == 2' -format \"%s \" GlobalJobId`.split(" ").size + $VERBOSE=ov + puts "*** demandThread: swiftDemand=#{swiftDemand} paddedDemand=#{paddedDemand} totalRunning=#{totalRunning}" + sleep 60 + end + end + + sites=Array.new + + ress_parse(ARGV[1]) do |name, value| + next if not greenlist.index(name) and not greenlist.empty? + site = Site.new + site.name = name + site.grid_resource = "gt2 #{value.url}/jobmanager-#{value.jm}" + site.gridftp = "gsiftp://#{value.url}" + site.app_dir = value.app_dir + site.data_dir = value.data_dir + #site.port = start_port + ctr + site.port = service_ports[ctr] #**Ketan: assuming this is the worker that needs to connect back to its corresponding service + + sites.push site + + # **Ketan: can put the coasters_osg.xml template right here. + coaster_sites = %q[ + + <% ctr = 0 + sites.each_key do |name| + jm = sites[name].jm + url = sites[name].url + app_dir = sites[name].app_dir + data_dir = sites[name].data_dir + throttle = sites[name].throttle + %> + + + passive + 10000 + <%=throttle%> + 16 + + <%=data_dir%>/swift_scratch + + <% ctr += 1 + end + %> + + ] + + # local per-site attributes: + cores = (value.throttle * 100 + 2).to_i + siteFraction = cores.to_f / totalCores.to_f + siteTargetRunning = [ (swiftDemand.to_f * siteFraction), minSiteJobs ].max + siteTargetQueued = [ (swiftDemand.to_f * siteFraction), minSiteJobs ].max + + printf "site: %5d cores %2d%% %s\n", cores, siteFraction * 100, name + targetQueued = 3 + + site.gen_submit + + threads << Thread.new(name) do |job| + trip=0 + while true do + if ( (swiftDemand) > totalRunning ) then + # demands > running: enforce N-queued algorithm + queued = site.queued + running = site.running + printf "trip %d site %s running %d queued %d\n", trip, name,running,queued + if (running+queued) == 0 then + newJobs = [ (paddedDemand * siteFraction).to_i, minSiteJobs ].max + printf "trip %d site %s empty - submitting %d (%d%% of demand %d)\n", + trip, name, newJobs, siteFraction * 100, paddedDemand + site.submit_job(newJobs) + elsif queued == 0 then + toRun = [ running * 1.2, [(paddedDemand * siteFraction).to_i, minSiteJobs ].max ].max + printf "trip %d site %s queued %d target %d has drained queue - submitting %d\n", + trip, name, queued, targetQueued, toRun + site.submit_job(toRun) + elsif queued < targetQueued + printf "trip %d site %s queued %d below target %d - submitting %d\n", + trip, name, queued, targetQueued, targetQueued-queued + site.submit_job(targetQueued - queued) + end + trip += 1 + # puts "#{name}: #{total}" + end + sleep 60 + end + end + ctr += 1 + end +end +threads.each { |job| job.join } +puts "All threads completed." + +# TODO: +# +# tag jobs for each run uniquely, and track them as a unique factory instance +# + +=begin + +"Keep N Queued" Algorithm + +Goal: +- monitor a running swift script to track its changing demand for cores +- increase the # of running workers to meet the demand +- let workers that are idle time out when supply is greater than demand + +Initially: +- set a constant demand +- determine #cores at each site + +initialPressure = 1.2 # increase demand +initialDemand = 50 # initial demand prior to first poll of Swift, to prime the worker pool ahead of Swift demand + +- set a constant target queued for each site based on ncores +- set a target #running + +THREAD 0: + demand = initialDemand + for each site + site.need = (site.cores/totalcores) * demand + sleep delay + + while swiftScriptIsRunning + get demand + get #running + + +THREAD for each site + while swiftScriptIsRunning + get site.running + get set.queued + need = demand - running + if need > 0 + if running+queued = 0 + +keep queued on each site: + max( expectation, 50% of observation ) + + toalc=1000 + sitec = 200 20% d=100 ex=20 q=20 + r=50 q=25 +=end + +=begin +def dump(file, template, binding) + file_out = File.open(file, "w") + file_out.puts ERB.new(template, 0, "%<>").result(binding) + file_out.close +end + +dump("coaster_osg.xml", coaster_sites, binding) + +=end + Property changes on: trunk/bin/grid/my-swift-workers ___________________________________________________________________ Added: svn:executable + * From ketan at ci.uchicago.edu Wed Sep 28 15:26:35 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Wed, 28 Sep 2011 15:26:35 -0500 (CDT) Subject: [Swift-commit] r5190 - trunk/bin/grid Message-ID: <20110928202635.8335C9CCBD@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-28 15:26:35 -0500 (Wed, 28 Sep 2011) New Revision: 5190 Modified: trunk/bin/grid/start-grid-service trunk/bin/grid/start-grid-services trunk/bin/grid/start-swift-service Log: small changes Modified: trunk/bin/grid/start-grid-service =================================================================== --- trunk/bin/grid/start-grid-service 2011-09-28 20:25:15 UTC (rev 5189) +++ trunk/bin/grid/start-grid-service 2011-09-28 20:26:35 UTC (rev 5190) @@ -44,9 +44,12 @@ echo THROTTLE=$THROTTLE LOGLEVEL=$LOGLEVEL +numsites=`cat greensites | wc -l` + #coaster-service -port 1984 -localport 35753 -nosec >& local-coaster-service.out & sleep 5 start-swift-service 1 & +#start-swift-service $numsites & sleep 5 SPORT=$(cat service.sports) cat >sites.grid-ps.xml <> service.sports - echo "" >> service.sports - cat service-$i.wport >> service.wports - echo "" >> service.wports -done #sed '$d' < greensites > file1 ; mv file1 greensites sed '$d' < service.sports > file2 ; mv file2 service.sports sed '$d' < service.wports > file3 ; mv file3 service.wports Modified: trunk/bin/grid/start-swift-service =================================================================== --- trunk/bin/grid/start-swift-service 2011-09-28 20:25:15 UTC (rev 5189) +++ trunk/bin/grid/start-swift-service 2011-09-28 20:26:35 UTC (rev 5190) @@ -16,8 +16,8 @@ trap ontrap 1 2 3 15 # FIXME: Not needed? # Launch the requested number of services + rm -f service.sports service.wports -rm -f service.sports service.wports for i in `seq -w 0 $((NSERVICES - 1))`; do rm -f service-$i.{sport,wport,pid,out} $SERVICE -nosec -passive -portfile service-$i.sport -localportfile service-$i.wport &> service-$i.out & @@ -32,7 +32,7 @@ for (( tries=0; tries < $maxtries; tries++ )); do sleep 1 errors=0 - rm service.sports service.wports + rm -f service.sports service.wports for i in `seq -w 0 $((NSERVICES - 1))`; do if [ -s service-$i.sport -a -s service-$i.wport ]; then echo $(cat service-$i.sport) >> service.sports @@ -49,7 +49,7 @@ done if [ $errors != 0 ]; then - echo $0: $errors services failesd to report their port numbers + echo $0: $errors services failed to report their port numbers fi echo $0: $((NSERVICES-errors)) services started successfully From tga at ci.uchicago.edu Wed Sep 28 16:49:12 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Wed, 28 Sep 2011 16:49:12 -0500 (CDT) Subject: [Swift-commit] r5191 - SwiftApps/SwiftR/Swift/exec Message-ID: <20110928214912.588609CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-28 16:49:12 -0500 (Wed, 28 Sep 2011) New Revision: 5191 Modified: SwiftApps/SwiftR/Swift/exec/configure-server-crayxt Log: Use dev/shm on beagle Modified: SwiftApps/SwiftR/Swift/exec/configure-server-crayxt =================================================================== --- SwiftApps/SwiftR/Swift/exec/configure-server-crayxt 2011-09-28 20:26:35 UTC (rev 5190) +++ SwiftApps/SwiftR/Swift/exec/configure-server-crayxt 2011-09-28 21:49:12 UTC (rev 5191) @@ -23,16 +23,16 @@ $throttle 10000 - $LUSTRE_TMP - - $LUSTRE_RTMP $LD_LIBRARY_PATH 30 $R_LIBS_USER - $LUSTRE_TMP/swiftwork - $LUSTRE_TMP/swiftscratch + + /dev/shm/$USER/ + /dev/shm + + /dev/shm/$USER/swiftwork + /dev/shm/$USER/swiftscratch
From ketan at ci.uchicago.edu Thu Sep 29 09:50:33 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 29 Sep 2011 09:50:33 -0500 (CDT) Subject: [Swift-commit] r5192 - trunk/bin/grid Message-ID: <20110929145033.5984D9CCBD@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-29 09:50:32 -0500 (Thu, 29 Sep 2011) New Revision: 5192 Modified: trunk/bin/grid/my-swift-workers Log: added sites.xml writing code Modified: trunk/bin/grid/my-swift-workers =================================================================== --- trunk/bin/grid/my-swift-workers 2011-09-28 21:49:12 UTC (rev 5191) +++ trunk/bin/grid/my-swift-workers 2011-09-29 14:50:32 UTC (rev 5192) @@ -1,5 +1,9 @@ #! /usr/bin/env ruby +$stdout.sync = true +# FIXME: Is this the best way to get lib functions from bin/grid into RUBYLIB ? +$:[$:.length] = File.dirname($0) + require 'erb' require 'mk_catalog' require 'etc' @@ -113,15 +117,17 @@ numlines = %x{wc -l #{ARGV[0]}}.split.first.to_i # **Ketan: Remove any worker or service ports file present from the previous runs + puts "removing service.sports and service.wports" system("rm -f service.sports service.wports") system("start-swift-service #{numlines} &") - + service_ports=[] worker_ports=[] - + + puts "sleeping, waiting for all services to start and write their ports" sleep 40 - + sports_file=File.open("service.sports") sports_file.each_line { |line| service_ports.push line @@ -319,7 +325,6 @@ r=50 q=25 =end -=begin def dump(file, template, binding) file_out = File.open(file, "w") file_out.puts ERB.new(template, 0, "%<>").result(binding) @@ -328,5 +333,3 @@ dump("coaster_osg.xml", coaster_sites, binding) -=end - From ketan at ci.uchicago.edu Thu Sep 29 11:16:11 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 29 Sep 2011 11:16:11 -0500 (CDT) Subject: [Swift-commit] r5193 - trunk/bin/grid Message-ID: <20110929161611.BAC829CCA0@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-29 11:16:11 -0500 (Thu, 29 Sep 2011) New Revision: 5193 Modified: trunk/bin/grid/my-swift-workers Log: sanitized start-workers Modified: trunk/bin/grid/my-swift-workers =================================================================== --- trunk/bin/grid/my-swift-workers 2011-09-29 14:50:32 UTC (rev 5192) +++ trunk/bin/grid/my-swift-workers 2011-09-29 16:16:11 UTC (rev 5193) @@ -113,6 +113,12 @@ if __FILE__ == $0 raise "No greenlist file" if !ARGV[0] +def dump(file, template, binding) + file_out = File.open(file, "w") + file_out.puts ERB.new(template, 0, "%<>").result(binding) + file_out.close +end + # **Ketan: Read the lines in greensites file and start that many services numlines = %x{wc -l #{ARGV[0]}}.split.first.to_i @@ -206,20 +212,19 @@ coaster_sites = %q[ <% ctr = 0 - sites.each_key do |name| - jm = sites[name].jm - url = sites[name].url - app_dir = sites[name].app_dir - data_dir = sites[name].data_dir - throttle = sites[name].throttle + sites.each do |asite| + gftp = asite.gridftp + app_dir = asite.app_dir + data_dir = asite.data_dir + sitename = asite.name %> - - + + passive 10000 - <%=throttle%> + 2.99 16 - + <%=data_dir%>/swift_scratch <% ctr += 1 @@ -227,18 +232,20 @@ %> ] - + + dump("coaster_osg.xml", coaster_sites, binding) + # local per-site attributes: cores = (value.throttle * 100 + 2).to_i siteFraction = cores.to_f / totalCores.to_f siteTargetRunning = [ (swiftDemand.to_f * siteFraction), minSiteJobs ].max siteTargetQueued = [ (swiftDemand.to_f * siteFraction), minSiteJobs ].max - + printf "site: %5d cores %2d%% %s\n", cores, siteFraction * 100, name targetQueued = 3 - + site.gen_submit - + threads << Thread.new(name) do |job| trip=0 while true do @@ -325,11 +332,6 @@ r=50 q=25 =end -def dump(file, template, binding) - file_out = File.open(file, "w") - file_out.puts ERB.new(template, 0, "%<>").result(binding) - file_out.close -end -dump("coaster_osg.xml", coaster_sites, binding) +#dump("coaster_osg.xml", coaster_sites, binding) From ketan at ci.uchicago.edu Thu Sep 29 11:31:41 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 29 Sep 2011 11:31:41 -0500 (CDT) Subject: [Swift-commit] r5194 - trunk/bin/grid Message-ID: <20110929163141.4637A9CCA0@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-29 11:31:41 -0500 (Thu, 29 Sep 2011) New Revision: 5194 Modified: trunk/bin/grid/my-swift-workers Log: sanitized start-workers Modified: trunk/bin/grid/my-swift-workers =================================================================== --- trunk/bin/grid/my-swift-workers 2011-09-29 16:16:11 UTC (rev 5193) +++ trunk/bin/grid/my-swift-workers 2011-09-29 16:31:41 UTC (rev 5194) @@ -123,7 +123,7 @@ numlines = %x{wc -l #{ARGV[0]}}.split.first.to_i # **Ketan: Remove any worker or service ports file present from the previous runs - puts "removing service.sports and service.wports" + # removing service.sports and service.wports system("rm -f service.sports service.wports") system("start-swift-service #{numlines} &") From davidk at ci.uchicago.edu Thu Sep 29 13:42:37 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Thu, 29 Sep 2011 13:42:37 -0500 (CDT) Subject: [Swift-commit] r5195 - trunk/libexec Message-ID: <20110929184237.3CC9C9CCA0@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-29 13:42:37 -0500 (Thu, 29 Sep 2011) New Revision: 5195 Modified: trunk/libexec/vdl-lib.xml Log: writeData was broken during fixes for capitalization. This should fix it. Tested on language-behavior/IO tests #23-#27 Modified: trunk/libexec/vdl-lib.xml =================================================================== --- trunk/libexec/vdl-lib.xml 2011-09-29 16:31:41 UTC (rev 5194) +++ trunk/libexec/vdl-lib.xml 2011-09-29 18:42:37 UTC (rev 5195) @@ -6,7 +6,7 @@ - + From ketan at ci.uchicago.edu Thu Sep 29 15:05:16 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 29 Sep 2011 15:05:16 -0500 (CDT) Subject: [Swift-commit] r5196 - trunk/docs/cookbook Message-ID: <20110929200516.EFB969CCA0@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-29 15:05:16 -0500 (Thu, 29 Sep 2011) New Revision: 5196 Modified: trunk/docs/cookbook/diverse_infrastructures Log: some fixing in how xml is displayed Modified: trunk/docs/cookbook/diverse_infrastructures =================================================================== --- trunk/docs/cookbook/diverse_infrastructures 2011-09-29 18:42:37 UTC (rev 5195) +++ trunk/docs/cookbook/diverse_infrastructures 2011-09-29 20:05:16 UTC (rev 5196) @@ -153,8 +153,7 @@ .sites.xml for the above run -[xml] -source~~~~ +---- @@ -174,7 +173,7 @@ /home/ketan/swift-labs/bionimbus-coaster-modftdock/swift.workdir -source~~~~ +---- //Magellan //~~~~~~~~ From tga at ci.uchicago.edu Thu Sep 29 19:16:08 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Thu, 29 Sep 2011 19:16:08 -0500 (CDT) Subject: [Swift-commit] r5197 - in SwiftApps/SwiftR/Swift: exec man Message-ID: <20110930001608.D036C9CCBD@svn.ci.uchicago.edu> Author: tga Date: 2011-09-29 19:16:08 -0500 (Thu, 29 Sep 2011) New Revision: 5197 Added: SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto Modified: SwiftApps/SwiftR/Swift/exec/configure-server-pbsauto SwiftApps/SwiftR/Swift/exec/start-swift SwiftApps/SwiftR/Swift/man/swiftInit.Rd Log: Added crayxtauto server Added: SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto =================================================================== --- SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto (rev 0) +++ SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto 2011-09-30 00:16:08 UTC (rev 5197) @@ -0,0 +1,87 @@ +#! /usr/bin/env bash + +#TODO: is this best way to do this. + +# we assume that $time_secs specifies the lengths of jobs +# that should be submitted to pbs. +#We don't really know the expected duration of R jobs, so we will come up +# with a sensible value based on $time-secs +# +#Swift kills jobs that run for double maxwalltime, so maxwalltime should be +# > 0.5 $time_secs +# Ideally we want to run multiple jobs in each batch allocation, so we don't +# want coasters to mistakenly decide that it can't schedule a job when we +# have most of the batch allocation left. So we really want +# maxwalltime to be just over 0.5 $time_secs, once we round both to minutes +maxwalltime=$(( ($time_secs + 120) / 120 )) + + +cat >tc <sites.xml < + + + + + + $R_LIBS_USER + pbs.aprun;pbs.mpp;depth=$cores + + $throttle + 10000 + + + $nodes + $cores + $cores:cray:pack + + + 1 + 1 + 2 + 2 + /dev/shm/$USER/ + /dev/shm + /dev/shm/$USER/swiftwork + /dev/shm/$USER/swiftscratch + +END +if [ "$project" != NONE]; then + cat >> sites.xml <$project +END +fi +if [ "$queue" != NONE ]; then + cat >> sites.xml <$queue +END +fi + +if [ "$time" != NONE ]; then + # Hack: Add 60 seconds to time to convince to request blocks for + # full time. + cat >> sites.xml <$((time_secs + 60)) +END +fi + +cat >> sites.xml < + +END + +cat >cf <> sites.xml <$queue END Modified: SwiftApps/SwiftR/Swift/exec/start-swift =================================================================== --- SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-29 20:05:16 UTC (rev 5196) +++ SwiftApps/SwiftR/Swift/exec/start-swift 2011-09-30 00:16:08 UTC (rev 5197) @@ -88,7 +88,34 @@ fi } +function setup-crayxt-lustre { + # Set up working directories on lustre file system + #FIXME: beagle-specific code + LUSTRE_TMPROOT=/lustre/beagle/$USER/swiftRtmp + if mkdir -p $LUSTRE_TMPROOT; then + : + else + echo "Could not create temporary directory $LUSTRE_TMPROOT" + stdcleanup_start + stdcleanup_end + exit 1 + fi + + while true + do + LUSTRE_TMPSESSION=$LUSTRE_TMPROOT/$RANDOM + if mkdir $LUSTRE_TMPSESSION; then + echo "Temporary files will be stored in $LUSTRE_TMPSESSION" 1>&2 + break + fi + done + # Cray XT cluster nodes don't have local writable tmp storage + export LUSTRE_TMP=$LUSTRE_TMPSESSION + export LUSTRE_RTMP=$LUSTRE_TMPSESSION/Rtmp + mkdir -p $LUSTRE_RTMP +} + make-pbs-submit-file() { SUBMIT_FILE=$1 @@ -512,7 +539,7 @@ -r rcmd ssh site specific, SGE only, typically ssh. qrsh for siraf cluster -s server local local, pbs, sge, ssh, pbsf (for firewalled workers) - ,cobalt,crayxt,custom, pbsauto + ,cobalt,crayxt,custom, pbsauto, crayxtauto -t time 00:30:00 hh:mm:ss, for PBS, Cobalt and SGE only -w wkloglvl NONE NONE, ERROR, WARN, INFO, DEBUG, TRACE -k keepdir No argument, if flag is set, will keep working @@ -577,7 +604,7 @@ -p) throttle=$2; verify-is-numeric throttle $throttle; shift ;; -q) queue=$2; verify-not-null queue $queue; shift ;; -r) rcmd=$2; verify-is-one-of rcmd $rcmd ssh qrsh; shift ;; - -s) server=$2; verify-is-one-of server $server local ssh pbs pbsf sge cobalt crayxt custom pbsauto; shift ;; + -s) server=$2; verify-is-one-of server $server local ssh pbs pbsf sge cobalt crayxt custom pbsauto crayxtauto; shift ;; -t) time=$2; verify-is-time time $time; shift ;; -w) workerLogging=$2; verify-is-one-of workerLoggingLevel $workerLogging NONE ERROR WARN INFO DEBUG TRACE; shift ;; -L) swiftLoggingFlag="" ;; # swift default is lots of logging @@ -699,6 +726,12 @@ # Function to run on termination of swift exitcmd="" +# Set up working directories on crayxt +if [ $server = crayxt -o $server = crayxtauto ] ; then + setup-crayxt-lustre +fi + + if [ $server = custom ]; then warmupjob=false # have already set up tc.data and sites.xml files, just set @@ -775,14 +808,14 @@ wait-and-start-ssh-workers & starterpid=$! -elif [ \( $server = pbsauto \) ]; then +elif [ \( $server = pbsauto \) -o \( $server = crayxtauto \) ]; then warmupjob=false # Systems where Swift manages workers if [ $cores -le 0 ]; then cores=$defaultClusterCores fi echo server=$server project=$project cores=$cores nodes=$nodes queue=$queue - source $SWIFTRBIN/configure-server-pbsauto + source $SWIFTRBIN/configure-server-$server function onexit { stdcleanup_start @@ -811,30 +844,6 @@ DIRS_TO_DELETE= if [ $server = crayxt ]; then - #FIXME: beagle-specific code - LUSTRE_TMPROOT=/lustre/beagle/$USER/swiftRtmp - if mkdir -p $LUSTRE_TMPROOT; then - : - else - echo "Could not create temporary directory $LUSTRE_TMPROOT" - stdcleanup_start - stdcleanup_end - exit 1 - fi - - - while true - do - LUSTRE_TMPSESSION=$LUSTRE_TMPROOT/$RANDOM - if mkdir $LUSTRE_TMPSESSION; then - echo "Temporary files will be stored in $LUSTRE_TMPSESSION" 1>&2 - break - fi - done - # Cray XT cluster nodes don't have local writable tmp storage - export LUSTRE_TMP=$LUSTRE_TMPSESSION - export LUSTRE_RTMP=$LUSTRE_TMPSESSION/Rtmp - mkdir -p $LUSTRE_RTMP source $SWIFTRBIN/configure-server-crayxt elif [ $server = pbsf ]; then source $SWIFTRBIN/configure-server-pbs Modified: SwiftApps/SwiftR/Swift/man/swiftInit.Rd =================================================================== --- SwiftApps/SwiftR/Swift/man/swiftInit.Rd 2011-09-29 20:05:16 UTC (rev 5196) +++ SwiftApps/SwiftR/Swift/man/swiftInit.Rd 2011-09-30 00:16:08 UTC (rev 5197) @@ -25,7 +25,8 @@ The number of cores per host. The default values vary from 2 to 8 depending on the server type. } \item{server}{ - One of: "local", "ssh", "pbs", "sge", "pbsf", "cobalt". + One of: "local", "ssh", "pbs", "sge", "pbsf", "cobalt", "crayxt", + "pbsauto", "crayxtauto". How Swift will run the jobs: for example, if "local" is chosen, they will be run on the local machine, or if "pbs" is chosen, they will be run through the pbs scheduler. From ketan at ci.uchicago.edu Thu Sep 29 22:02:15 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 29 Sep 2011 22:02:15 -0500 (CDT) Subject: [Swift-commit] r5198 - trunk/docs/userguide Message-ID: <20110930030215.DAF339CCA0@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-29 22:02:15 -0500 (Thu, 29 Sep 2011) New Revision: 5198 Modified: trunk/docs/userguide/app_procedures Log: added @java function into function ref Modified: trunk/docs/userguide/app_procedures =================================================================== --- trunk/docs/userguide/app_procedures 2011-09-30 00:16:08 UTC (rev 5197) +++ trunk/docs/userguide/app_procedures 2011-09-30 03:02:15 UTC (rev 5198) @@ -383,10 +383,12 @@ @length ~~~~~~ - at length(array) will return the length of an array in Swift. This function will wait for all elements in the array to be written before returning the lennth. + at length(array) will return the length of an array in Swift. This function will wait for all elements in the array to be written before returning the length. + at java +~~~~~~ + at java(class_name, static_method, method_arg) will call a java static method of the class class_name. - Built-in procedure reference ---------------------------- This section details built-in procedures that are available for use in From tga at ci.uchicago.edu Fri Sep 30 11:05:47 2011 From: tga at ci.uchicago.edu (tga at ci.uchicago.edu) Date: Fri, 30 Sep 2011 11:05:47 -0500 (CDT) Subject: [Swift-commit] r5199 - in SwiftApps/SwiftR/Swift: . exec Message-ID: <20110930160547.BADD59CC9D@svn.ci.uchicago.edu> Author: tga Date: 2011-09-30 11:05:47 -0500 (Fri, 30 Sep 2011) New Revision: 5199 Modified: SwiftApps/SwiftR/Swift/DESCRIPTION SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto Log: Got crayxtauto working in cluster compatibility mode ok. Not working with aprun yet Modified: SwiftApps/SwiftR/Swift/DESCRIPTION =================================================================== --- SwiftApps/SwiftR/Swift/DESCRIPTION 2011-09-30 03:02:15 UTC (rev 5198) +++ SwiftApps/SwiftR/Swift/DESCRIPTION 2011-09-30 16:05:47 UTC (rev 5199) @@ -1,12 +1,12 @@ Package: Swift Type: Package Title: R interface to Swift parallel scripting languaage -Version: 0.2.7 -Date: 2011-09-27 +Version: 0.3.0 +Date: 2011-09-30 Author: Michael Wilde Maintainer: Michael Wilde Description: Routines to invoke R functions on remote resources through Swift. License: Apache License LazyLoad: yes -Packaged: 2011-09-27; Tim Armstrong +Packaged: 2011-09-30; Tim Armstrong Modified: SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto =================================================================== --- SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto 2011-09-30 03:02:15 UTC (rev 5198) +++ SwiftApps/SwiftR/Swift/exec/configure-server-crayxtauto 2011-09-30 16:05:47 UTC (rev 5199) @@ -36,7 +36,7 @@ $nodes $cores - $cores:cray:pack + $cores @@ -50,7 +50,7 @@ /dev/shm/$USER/swiftscratch END -if [ "$project" != NONE]; then +if [ "$project" != NONE ]; then cat >> sites.xml <$project END From ketan at ci.uchicago.edu Fri Sep 30 15:27:28 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Fri, 30 Sep 2011 15:27:28 -0500 (CDT) Subject: [Swift-commit] r5200 - branches/release-0.93/docs/cookbook Message-ID: <20110930202728.3CB269CCA0@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-30 15:27:28 -0500 (Fri, 30 Sep 2011) New Revision: 5200 Modified: branches/release-0.93/docs/cookbook/diverse_infrastructures Log: fixed xml Modified: branches/release-0.93/docs/cookbook/diverse_infrastructures =================================================================== --- branches/release-0.93/docs/cookbook/diverse_infrastructures 2011-09-30 16:05:47 UTC (rev 5199) +++ branches/release-0.93/docs/cookbook/diverse_infrastructures 2011-09-30 20:27:28 UTC (rev 5200) @@ -153,8 +153,7 @@ .sites.xml for the above run -[xml] -source~~~~ +---- @@ -174,8 +173,9 @@ /home/ketan/swift-labs/bionimbus-coaster-modftdock/swift.workdir -source~~~~ +---- + //Magellan //~~~~~~~~ //Swift on Magellan From ketan at ci.uchicago.edu Thu Sep 8 10:52:06 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Thu, 08 Sep 2011 15:52:06 -0000 Subject: [Swift-commit] r5096 - in SwiftApps/DSSAT: . bin Message-ID: <20110908155204.7DFE09CD09@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-08 10:52:04 -0500 (Thu, 08 Sep 2011) New Revision: 5096 Added: SwiftApps/DSSAT/README.pdf Modified: SwiftApps/DSSAT/bin/RunDSSAT.sh Log: added readme Added: SwiftApps/DSSAT/README.pdf =================================================================== --- SwiftApps/DSSAT/README.pdf (rev 0) +++ SwiftApps/DSSAT/README.pdf 2011-09-08 15:52:04 UTC (rev 5096) @@ -0,0 +1,1444 @@ +%PDF-1.5 +%???? +1 0 obj +<>>> +endobj +2 0 obj +<> +endobj +3 0 obj +<>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> +endobj +4 0 obj +<> +stream +x??\mo7?n??aO???L?}??1?&n?;????!( +U?m%??H????7???%?V\m?wW??/?g?C?_.????x???_??????C?~x?x?mx??0??N???t1???~x?*????d????`\g?7?'"??Od?d\?,??Y?]?C?7Wyv?:=??-??9=y?=8??????????]??????v???,?n?}?k,????e?|9:???g?? +?d??? ??-dg???2???Og????3mw*?P? k% %????]??*6L???zqhV?n?D??H??^D"?sj?h??M???;??????3???e +????????a?????l?e>??o'?k??n??WW?|?Z0?oj[?tJ?[?? ?a?dZf?????????8u?(?t????k?{f???u?E?6??6l??~????G? +? 'Y?w?f?30?? +?????xx?`?????qI)?Kj?n# ?g?m???????0*[??????$ +??Y?? ?????jD?{???@??r2???b???,?F?{?????M`??? +|??6?U%??w{X}????:B+?????h??`?????R??s?Q??@?? +??<<|?(??????7???\????????????????7S (d???@~(?;66p; ?c?Lv7??3|S?????'????v???9Z??((???????+?-PT? ?;?M+L?M?N????L??L?i??mp????* +?:?Q?n?5i???7?a?fF??????w?'F?5???h&?`?3m-s?(+B?_???Pz ?-a?9?0??T?K](4S;?l?????#?????Xt{??):?\??=i?]??k?U]?C???????????y,V??na\$?#8&! X?:??@??$??)i'Q!?E +??Q?U?8?????C?55~+?> + C???<9C +v ???????g??a???C?/?/zA?c??h??=?]?o???$?-?$?n??!)?`??H????? @o?????z??%??Eo?(?7?? Q?X*?I??d???? +/%a?????-?\?)????????A?D?-h??? ?? ?'????A???8x????1F? ??O??G?R????o??????2?Dh?`???S??5????'???? +? ???R?zdVDY_??bY??K??z\?????? +*??_??'y?!F??)?}8?a[??l8e?)??`?????G????d???Cc????T?+]Jr^bm)??y?#C?.????Wh?#?1??????????Em0)y?(???A +???( ??^X?`???????R?c8???%3.???&??%n(??u@??QbK??7?[???Yj|d???y???3??ssb<????.????^Pz?*?|??;>H???4A??(??G +??o?!y5???a1??-?3:?C?{??g????g? =?.????A<U??C?Y> +endobj +6 0 obj +<> +endobj +7 0 obj +<> +endobj +8 0 obj +<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 9 0 R/Group<>/Tabs/S/StructParents 1>> +endobj +9 0 obj +<> +stream +x??Z[o?6~??@`/2???M???n?????m{Pm9???%/ ??s(?"m?f6E????x??s#?????f??!?^ +/?????Sr3/????????ZM?\??y?? +y=>??c?1K2???1?FRNc.I*M22?????-?????&z;?????@E????d??????`qLSS?&"???rn??]??????BD#2???;??A]?\??9On?j^????????K??.?S?????>?!C?N?^6?????2L"Q??n??H???5???"w)N??P??o~yK?]?.??$H?Z:?,??Kqc?@FW?\Pe ?mULo?z?t(?g?Xr??^??kXq?????? ?q??A??]??$??&???????b?s??H~??:?#D8o?I???3?6?\/ 8????xL?????p?????%)<$ESgt? ?%zC ???K??e1?cS ???X??W??BsW"?S$4??/Q?[X???9f????b???;???????E]#?IU?? ??j??NS ?6?a8?!????.B??-?A?;S>??:21??dK?xc? ??)?Y?1??? ?1??&??;?^n??w?????? +???w???Y?&Y'????=L??F?? ??I?????a?fi?m??yPy?i%$??d +?K??'??? +??| +??v??G?'g?N:?8?0 Z?????????)?0???B?[?q??q?*R ?F?M??M@^??`i?[_jtX?|?T +?&???=???f?[??n6Wm?02???Fg?L?? +9O???Ue?wR???B??T?;??+?!h?[r?W {i!?????@@n?< R?, +???)w?O???Cn-??9?:? ?2K.?a???????P?,?m?`x{?q??=??c +?V? ?@?;b?rWN?2????K?6V/p)???;6k????7*N?' ????(??????3K??.D1?8?f?re??8??RBf ??a??`? ??<2?)S??`? ???X?BJ?Bih?H?Y1(l??????? ??qm?2?$?Xa"q???????????????[#?p U2(??8??x/?!4l?/|?b?m??????eh?K?[???x?>??o@??1????1?-??l??p?=?HR*????4?M??u??>?9?*!???r ~?x1W??????????????|SOI?Su??4? +?????l;/C:???? +??h??i?<?2?????k???A\=E\? ]?0??W??&?R??^?&]??M_G?e???9C +????!m?F?^V?7^OOi?L? ??s.????.?-???}+??=?@??{?f?:W~???M5?C? +?9?CmKO???qy???=BWO;???????s5?w?~-??^?,?;?c???Uj\???? ?????1?? D??Uq(q'LL?It}_???n??xzz*U+??#j?L??E?? +`?QU??G??????t/,????{???/???=66??2?|{@???KJ??#??f?=g???????????yf??W?{Ou??Q=?? ?}????n?????F?????]}????\??l?^S?\?r{???^??$?=?????KW??op OK????_?????9*??}%Pzj2?? ?c(?j??=???SDR?q?aj? + +endstream +endobj +10 0 obj +<> +endobj +11 0 obj +<> +endobj +12 0 obj +<>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 13 0 R/Group<>/Tabs/S/StructParents 2>> +endobj +13 0 obj +<> +stream +x??Z[o?:~??@`_$????. at Q?M??]?b??nT[N?u????&?~g(?&e???E???8???7Wi??j?U?h?????M?/?%????O?fw?O???????M??|?@>}?&??./f_a?F???./??# ??$???)?{?u??&??????=????? :?/??>:@Y ?FM? +??/????j???%h_?~8???4U???????a?ZGx8?i???XJ????6pt??#Y?????i@NO?????t0?'???x??x???&N?0???'??[????]?!?????<??u?Tp???9????=?G"?????Imb7?"???????A??? +?C?(?o?@In^???.%??G????,???f1???n? ?Jr@ +C???w?Z??DD????x?K????7.??6g?Bx???;5h?lZM&??IQqj?c?i??7i;M:?K,??^q37vUc ??n?br:v +?c?????|w??? ?t?\????6:d?b??1`v?+?C\%?CfSy??8??I?H??'?TX?$??X?b?U??u??;Nq?j???Iw&F?u?R??i????y??Rep?7?c-&gD?=9?? \?*i?}?7???9zn?????5?n?6??="?N?T?[??h????????fw?N?i??!???c?{G??'???"?*@?-??b?)?0g????)??? ?????*s???;]5?????h6??%???A6??????t6w??D?c???B?????t+?????????c???:??M&gx??????K +?o?/h: +?? +;?~`??.??????F;????1tp??X?7?vv?sqL??v'F ??????~B?????pZU D?]???C?y??8?`?fc3??K?h?%*??b??I????I??? ????M-z.?h9)@??????S35???c?`?%QTM??Xy?sQ?.?G0\?i?????.?2????'> +endobj +15 0 obj +<> +endobj +16 0 obj +<> +endobj +17 0 obj +[ 18 0 R] +endobj +18 0 obj +<> +endobj +19 0 obj +<> +endobj +20 0 obj +<> +endobj +21 0 obj +<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 22 0 R/Group<>/Tabs/S/StructParents 3>> +endobj +22 0 obj +<> +stream +x??V???H}G?Z?[Z???/???1e???2????`??x???????`;d??v????S?U=Nu?.?5???u],7??-?????8??\????????.I?d??I>??? ?A?|=?,??f?6?8ep?#???#??=??J +?????!G??? +?7?}~>??U??V?`?(?E]t?Q)?mg???? D!?? +??J?bp??2h??????????"q??%?????????3?8??O()???G_{?j??l?G^??Yq(}+?W?q~?h??: %Q???+??? ?\?s????u?!?????|q ? ? 18?e?q?_B???n? +?G?O?"MT?F@?? D0w_q`i2??????n +?'#2?!"f? ?oRK ?5??2@?m?@f?????8????1?D?? ?h/?3S?B?~????djUx?&??1Wm?V??J??j?I?8??L?L8* +&??NA??+D?????????0&??h??v??@?????w??:?????Se$p,x?*E`S???d.?t?U??l?p;> +endobj +30 0 obj +<> +stream +x??ZMoG???0??. ??l??0,9,?0?gm!??P?@????.?,Y=?j??? ?z??XE>??S?? +.?K??w2x??\?????|J.4??"?????_r??X?K@????O?? 3?+R??+??X]Dl? +?K?k9?? ?\????aX??????? ??$x?/??????`!???<@?!/??e??ZT??2LI??eA??2???? +????b??y:l?c??Cb]?;????pB?g"?, ? x??g?g?el?|?S?+??%? S?4?????CH??+???WL!>???K ??????Z!a??? ?B?x????CBx^CPi??!b?G?4?G??????EA???,D??I x~c?""=p2PCDz?????<`? ??0?+\.? +? ?? +?(6?A<'' +'gp?sr??rrk???>u$ ??? ??} ? ?D<(9q?p????`?z?=??4?W??1?@???m?????? +?v???\???????'??v?]%lW?s*aR????y?5M?=w????m?????m?c??:oE +4cN??e2??????'1R?'?~f??g??+????0?y??`>'?*_>;sZ?k????(? ?E?"v???]?.:J?(?????:J?(?????:J?(?????;J?(?????;J?(?????;J?(????R:J?(????R:J?(eDYt?Z?7?/Ji????(??v??]??}}?????Ko=u??lW??U?v??]%mW??U?v??]?Bi ?!?b ?  +??b ?X ????o?x????o??7??x? +<??@0? x <?????h?A4? x?K??e???gu????~?????B??H?N???w???k? kF???_0??&???`4??F????;?:???W +???i?f?N??uc[rW;??????x??_3*?I?n5X?????6K???9S$bY???*????B\VK??)kV?BmJ??I???U? ?)?'9S(V?.T??Z?d>???????????1yhZ????5?io??Z???M??|?>? +d??|?=?d??`M?'??N=)???=?{??{???????????Wo??v;???v?a????O????O??????u???? ?1????s?? +????.J +y ?? "??? ??( ?.??*?;??W???/?? ??H "?eA?u?????zV???_a]?'?? ??(??.?v^L???B?? ??? "?=??? ????????]???]G????#?rP%???????D???29??L???j%?_???u?WZu???E?????????????P?? +endstream +endobj +190 0 obj +<> +stream +x?}?Mo?@????=??|,$???&?????????,x??w????A5Of??yG?/?u??Q?o??w8?C??Cw65?=[?A*???w}?z????e?T?C?-????a4??j?=>z??i???(>?????????z??????-?\?/? ?O?E??x;^V???q?QHb?a?????j4?>?? ?????>?????!`??PU??C?2?'I?LSL$?br??i??Y??(^??(??""?H??n*????Ie??\??es)??E[?p???D47?\?-?Hy??v???R???U?m_? +????=???1?Bn? +y-a?d??????????????????N?u???l?=:?????o5^/???I5}~U d +endstream +endobj +191 0 obj +<> +stream +x??| XT??9??0?,? ?? +0??????Kd??7?Q at Q???k??'??1??4?F?Q#?,&5k?7K?4[??i?i??*???~? ?'i??m???????r???r??q??6??j???k??d??W?^Q:??????m`????????&?????~6c?????????_?`??>`L=2~??????.b????[m??B??~??.??????s?U???????1?+6l ??LW ? +??EKW???C[????????r??U??1?????T??????y?K??[???z_b +?N?WMg??e'K?!??W?????Uoc??o?????U?`????????zSo?_K?-??}??.?Ok??(Fv?n?J????&??3?>???T+?????????)???K???*?????????l???~???O??W_?9??+?]}?????Z???@`???????????Oo?M??7?????zSo?M??7?????zSo?M??7???T)??>9(u3?q0?1?30??X_6???l ?????e?X=???cw???N????K???v}?Z????rV?f???k'?6????5???5??3??zD?\=?~???Pbk(??\,?%b??,????1???b?3?????U??z?pw?d??????????| _?W?5|#??o?W?k??|/??????gY?L???Mg???? +???{??{j?? 4>??`? +???>K??=Sv?\Y?l?=l.??????'??\?s?????????????%8?y??????jkB?U???M?2?|?? ??JK??? +?9k???# +????^????@?/??r:?VK??e4? +gy???8?!l?L??_??04?04??0??Z'?o???O?D??? R?`wM???f????K??K%;?????Z???kz?? +?Z??Lz:Z?K?????_.[???????Y-??????y??b??B?????>c?&?>?#?f??????????????ozz?fc?Z_????I???X??m???l?????5??????k?j#???????]?????p??'b???y???pn??Wv????Y????k??v??Q?De9?fB?)v? ?R3? +#?????X??????R|,?GR?N???@???xO?w????H?)~-???x[???xS?7????K???J??/K??/J? )^??y)???Y)???i)I?s)???I)J???K???Jq@?G??/E???xX??R??b?)??K?K??R<$?)?K??Hq??Iq??H?3)????R?%??R?!??R?&??R?"??R?$??R? ??R\'?6)???'R?X?k??Z?I?U????"E?WJq??Kq??J!?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.??"????????????????????????????????????????????????????????????????? {? {? {??v??v??v??v??v??v??v??v??vx?n!5G???3G?%??'T?????rQ?wD}@e??G?w?~K??o???)?+??# 3AoEf??$z???$z??5?W??+D/??%??~A?Uy??92>K? ??D??~N5????D??????#??D?!?O?N5?Q?a??D{?vG??@?H?,PQ?h?N???vm'z0????@??Ot??Kt????&?)?]Dw?A??N??Ft+??Bt3?MD7R?(w=?uD???Z??'D???k??&??V??????]It??D?E?|?????E?????????}?=?]? ~? +?k?W?s|o????i_?{????%?:?k?\???+??( ??K}??~?y?? ?g???/?=c_?{???wm?????]???8??m??Q[???m???*?~?????^??A?n?"@vY??????=d???a???n??{x????????3???O??.???s|w@?}p+?-??f?u????????m???O??????T???i?Y??Z??]e??w????D-?]? }?6?.??9tAhch???!?Fn???X?????7??1e?Z:???y???u???Q.c ?K??Ck??V?W?Z?~??o_?KV?????V;W?W??U?????-!?2?esK??0*??A??Z??????oZ8????,[ZZ?}Y??KCgc?? ?m_ZP????9?T8/?X??[X???>4??.4k{]???&4?gV?B??CU?????i?SCSa?RX???<4?pBh?? ???e?RL??8S?)?S `j +F??|?@o????????a?A??H?%+}I?xZ_?tA??I?#??D%??7????J?? ?'?? }??xg??^????O?.????x?Pm?S??ewx|?????????K??">??j|???1?6???a?Y?P?u?U Z???????????3??f1 +????\???F??y[uUnny??U????g????*??? G]f??Y5m?????+??a??????t?V6.?? 4??F?? ?????,??j??? TU@%PL?S?)?d??L&??2?(??q?X c?????(`$0(?????? ?????????@ ???L d???i@*?x?d H?x???8 pN??v?X  +???.|??p??f?:??q??w?o?_?o?????/??_G???#?a?3???????>~| |???xxx?-???????????7?7?_????///?^????????O????G??@;?x? ?v? +????C?`;? ?p?pp/p?3?n???]??????m???-???M??? +???u?6?Z?'???k???[???- at +p%pp9pp)k????s????q?9?????8?????s????q?9?????8?????s?????8??;????8??;????8??;????8??;????8??;????8??;????8??;????8??;???s????q?9?>???8?g???s?}???q?9????O????????s3??X?????tv6[?6??2??]??`??y?b?????^? ?'?????/???:?3.e6u?bq?u?:?y/?n??a??8??????u?4???k????Q?????+???%??:??+?]?D^??????t{????N?A?c??lV?X#?/?"}1??a{?N??=??? ^#?H?,?|?>??^?c?????????????3] ?E=Z???(j^??? ???e?i??s }rF??N??IkO?|?U?????E? u?????m8?w?SxU??B??C?=??w??S???~???Z??)?d??>v????l;??????"???V.??X??f{???}?]?W????u{????=?`??}x?(???)?????lV[bFj?b???9m????Wj????V???!VTT;bD~~}?+a? ?U?<???h{????7D?1fU5;?[;??jl???^?]i,??????D'??s:???6|?1W?;?`?dO?? ?=k???'*???y?r????~&d]?B??xz7j???v?l????6???m?8??;???59??A?L???????m?jVt?H??#x~??????K?????Tw?!???=?5dXA:???9M?C(??Kl?????}???VL?????o?^??ip|??~Cg????H.??9T\9,ij??s*^>6??8???6?Z??????;'??9??b?q??m??sX2?&Y?M??c?????&?~???ol?? +o;?n3?.??xC??zq???%L=6??3?9zo?m????????C?=x??? +??Pn???=???3?????{/?t?5f?????bf??,??iK??W4Gu?>?}?9??s?W0::???????9h???f?W?yvvT????"?????W?`Z??5??w?????vz ?u?T7,vs??b????l4??3?G?? ??Sn?[ ?c??f??9???????gG;S?b????Af?W?w?1???a??Lq????y????????;??kOei?&Lmw\\RT;??;?"I\??)??kD????&#?6r?j5&f???L???f??91?m?T?4????b?????y]??7?MF#> ;?,S??fu1?3?Y?i05%??(vh?????nK????,????9???i?Qs?????Iv?'????!?:<???-{22F??9?-x?[x???*w;?k??!???E????7??u_t?_N9?????.?]??K??'?????`??l?s.?;??5E????????o?\?h?#n???ZbG????{???utkz`??0??NOL????????3?3???fe?????}l9?Y??????H?qL??Z?_????????%?JP??B????.d? ??B??DK??}???Y?M?????5^#??IOH?9??#???oU?t +?a?X?|??-??,??,??,??,??,b?m???t??[?<?K??'?3;;????zP?qG?8??W?frgxy?????????LHON??????U?e?)E\?QN?ry?y?W???xR)??? F?? ]7'??w}9f??&?g??G??G??G??G??G?;?????\?2??/???q{wo,q???F??8???{??????????S??]??}e?rq?f;???1??(????-?????T,LZ? ??"N?E?>?8}q?,b?-bo!? &???9????`?O4 ???????(An&*?3D??n?qV~A??}{???."_8???B_^ ?[?OT???KJH?3+?????????J?x?????E??.??L??k??2k?/;i??g;???f??TB?pqS???~???>?3?{??%Y??R=?M???bg?Kw?8n??;t?k|T8??;??93?2`?`?????????6?Pe???di????C?x???O8?[??/?? y +g#?9????????????I?O? ???????45??O?>My?k ??????????Sc:?C??!??>p? +???[?{?DrSA0?????i$Mwn??S??i??"M???v!??%???? +??e?qj?W??'?S~??????um?Q?D???D?G.J?rQ?D??Hp? +?? +????;????s?T`z?? $?0???"?T/T/???eY?????ql?{?N??qrv?????(9E?????+??8v???????duYgsq?{ofB????????? +??p??????{??7????P^??? Q+?i#?&{?:n? ?T?/????HdM?K?,???????Y?:?????z4y?c?d?W??p?@?xh?c;;???^??f???7?XtE?u+?E?2?V4?V???p?O$Q??, +??L?X#h?4?k?????0:>?[?l??8?kFF??Q*xI&X??DI?3?%,??}???%? +?b?X?? +??%?s-,????^????,?H?=??? ?????@.??\k????;??|?os?????????/?L??&E????Z??}Q????\?X?????ct?????????? ??#6C?)ao??zf?9??`?GcQ??????h??????T?,Y?h?,??HS???v????w?<:????r?O????q+Q??#Nm???q?T?? ????4&?B????? +?????Z?V?? #?c=n*??6???%8'?<%?????HTgc,Q??E +JVT?2?eW???`??&{v????0?????n?\i????3?;X?Z1?)?$N?,?f?&???s??%W??bI3?r?_??>rD?6???a_????????K?,?yy?s?%VpH"?g=a???7?_?????d\#???P?C?????Q?}j?G?T?9} I>-?4???v ??W??R?1UM?f???9SB?7????J??????]I??????Tq?N?H? +????ih?o?QM +{T?nH????????$5h??,?F?P?0?6a?6a?6a?6a?6a?)?GQ)??Q;????0?&? ???(??f?S?"2 . +5?]??n??4????n?S??IW?d_id?xJaMP??__w?Po? +??? +;??~?????+o]A?k#?.O??\????u?????H??pyt?$?Q^?!:I??#?N?? ????????pK????????4?V??r???5?O???F3?m$?I??)??,??L?]?@?????i ????? ???[?>O??'@^???^_?T?, ?-????V??????$?3???H???h:???o? +??3j??'????k????'?? ?V????nk +??B~?S???x? +???-A?j?????{?-?????b1! ??j?0?????[/5??1????`?)????7???* + ?u?? +???'?#CC?Mw?H?Cxy??r??k/V???@sZ +=?Z?????Y?????-={]??kq?i\4q??e??o???????%?ON???zE???}w|???r?%??????me*? +?$/??7@??f?=+M?X??6????L??\?g}E(AP?z?]?@?Y??c??n;???n?_????s?????r??[?,-hD????zZ????????b~W???6IEK?z??#n?E*??AY??X_?)?_?!m???????)?YeT +?? ??|????O??5??'?????? +??f?????d-f?*?[)U??J???t8X#V? ???? +C???s?y???qyK)kdX?? ??/?#?z????=?o??? +?'??w????>?~y???2f?h?8#?tH?7N?x??[???~i?t????????Eg>?????????m??k?Y??x?????R??:??????X????f??????B???+GU?a? r??;E%?X?h?6E????[F??~? B??u?a0k???q(k_?~??@????????n?????"???%?^????3?v??????1*?????????? +??d???K?z]???????Rb?6?????"?s?? k?oC7??Ga\?8??M? +G?9P7[????J?U??[?????R|P???`?? j??W???G9?? 8G??? ????3.\?+????V?A+??NT}?#Sj?>?_*?f??_Z}`4???3??????\6}w?J??)um?k#??w?| ??,f???='??E?]a???rdk?2??(?S???=??^??Xj?l:n??.?????/)?y?\J???g??!!???J!???R}G{ +??????Q'?????d??3??Y?!??8?5`wY???6?`??G??v???&E?j?2b????????q??}?????2h?8?# ?=?aJ?R8S???????s?.;lf?L{?'o ?z?????`?g?=???TGG??????`D??R??P???K????A?9??X??d#h?E0?????5j????????k|?c!???U????@??????_,`?Nt??)d????)???*?L????e??jr?'0S2? ?T?F_>U? +V?v?n?3+&+U?]Jn?TpVF??G +??2cM???]"??KM{ +?5?,????"??)?1}?+??? 0pi?]E k???U???gC???I??(U????9????????????49?>?F???#?0??eS?p?@???u??-L_?0[?P?O"k?l???L??l?U??5a?^SM?????e +{?????c?_?)\[???????<3z_?mU_???????????E6??+??00!=???l?+??h??????? ??M??2?? :h???U?L?J},?W??R????Oh? ?%???sFJ??????*5????=Y??{?2? c?=]?(?? +?;?l???C?^?M?SL?????@?b:c@??^?Q#:;g????j?O? ?O?p??Op??n?LN?????QK?Q???,[-)MV??Tm??u??o_????????^8?>???bQiG_?]?b??}???'?????5p?????? +???? +????[w+?????A??!?-?s??U?3[dGA?U??A?????B?_tY\a.Xa??rg?p???1?????/?Y??"?y??\>w?#5?[???P)?X?????????:??j??%?s?h?S?L??*9??H^]a]??I? +??$Z?N?S +2?????4??m[??????C?%???a.(sQY??q?@?:?i?^q??j,\??eh!???pZ????????=|???????`?k$ @l???^??dF[?????????s??`???????s??p?%?U??)?,?y??????G???E???? +pJ? +?J???6???DL+????)?G?e???"??jPq ??h|??3o?~+,6?B-??7TQ???*c????&Qy???6K?{?i????n]?????f Q?,U\?V???????????????P{??0:2??P?????????l?????!??????l?$??smA??I7p(????y3?r??.?lC?s?i?J?r6?%??Z?R?)o?P??*???X?Z??T?fa?????&W@???z?(_?G|??EO@|H ??'"??c?@-fP E???0S??3Mg?7$??~B?p`??#???bI?|??????Xo?Z??F???E??????P??????V?Y?L??I(Q????p???J?H?2?F?6 +?O +???e??`0?dYg????k?;??1????????Q?F??V??{??f?pe???`7??q9#v?>.?v??t?`??;??4@?? 3?{?G?,?}?L?N|a??rCX?L? r?M?6? O?^4?@?1@s??5????Bi4??A??04??4??/??? g?b??????q???'?:?GI?M?????????Wf3?????=?>?:u=???y?6? ????UU + F???qI??Qr???%???????????d?? ?????:x????Y?v???P1s6?x?1*?F??]???? +??6a??%Pw???l?????[???o?&??? ?$?O?&?g?aI?o?t$c?L???w??????Q?1?9C??Z?"?r?6?Q(??xBg???Q????|?????s$???"<?rx?????%?|QE?????Sx>??a???e???C$6??Lw c ?????>6???]?( +??????/ +???(???? c!?J L???P? ???+f???M 4?5E{?&C(R?r?n???50{??K2??6??0? ???f??8?????7?,??[??R8??????o????_?d;I???h?n?O?6|? ?|??H?"k4CO&*?~????O?j???1+?[rx\?0v?????? ??]^???[???y???t??}?s?[???6JG?+?z? +??+z???&?????~?4???c~h????\/???????q?????9? f??,+???aD????u4??? ???)?-04o??;iN?UZ]> +?k?????{??~?6Sk ?lj????Y?n?1???e??uu?1?E?c??:A???????`?iFpK???Ml??H??Xkwl??*Y?(:8?n????E?~???qg5????Y???k<?%??)Z?U?$V???'?w??au ?:???_??[ +)?`"??>?AUhFS???Xi*F???U?J?zVe????f-h?A??A7??K?D0??-q-'?:sG????}< +???????;????F???8I?>????;<Ylq??}??L??^N?>??:?:??1????2>?%hX^{?E???Q_ ?=?I2,]?^??C?(E?y%???K?6?=z??????6 ???"?V ? W?"(N? d???1???h#-???Z@ ????@??j??;'?m?#0N?|,? c?LC??????)`=L???x??9?:??&?????=J9C;?R5i?yq??\??U?????zr????]Q^?,??????\ofH0??????'?\?$\=c?w??*??=??7:?_t?????n/?????PJ _??o?[??W?????D??If?????y????r>W?z???????/????t??VTs???=E1?d<n=??Q?*??(x? T??v??r%W???\Q?;a?+) +?p?J???3 +?????R?j??????P,uBI??s?????????}>???|??M??6?Z?0QR??]Dol;?/??????E?]?j????tZ?$?VZ.zQLn@??m?7??A@?z? ? 8???v*U N+?0C???>??[??yT???,KY-?\AE???(K?oT ? ?$^?^??-7>?-?p?s???9?;?9????.??g?P??.??{???7???????2???/^???????\???j?,Xw??|=?????`??#?xA??nq??S??M*?Q&???? v7 ?Kj(^RchR???C?Z??Dc?>z??EGV????^ ??\??m ????x\?$N????D???????8}F?P????T??W?a/????U??a\A?8AkTspJ\B|?6???????i?I??$?f???4?????`?E?!???]?????1?&?]p?F??I?~>?O\??k ??2??=,??y????a/?T? +??????X[@??????($????p +?cU??iaQ?Ph+(|???6:??/L?D?C*??U? 4 g???)???A0?E??t?v0?F??({O???C8?'+vDO??????|/N????Xw?d?6x??3x??c?a? ??}6??n7?????J???B??N?Y9o?F????7?w???k??? +????!?V?$????X?4? S??7*|kD|k??[d??%?? ????C?? ??d????T_y?;?4??"??????)J?*?o?&?fM??h?$? ??$??@??lPDWa?t?-?X?PZR???UBl?????_?cMwV????W??Pa],??y?X?J?Z? +?? ??W?2?"Z?x???????????????oY???wK_(????p??5????(?]??????Mx?,Ej_?K^??5?@??????5????j???f?9FlmD?(?? x5??"a^?????&?i?????fe???K?)?F?*??~>??G??????=T?????AD +\?^?^??:??????M?Q?>PI??,4zanbG?t??? ???#?U?/%?}*q +s??????~) ??<7????H5??,{k? +.Ci?K[??i???????!??????b??%76O???=??I?A??????????I?QC?@:\C?Q???^?}????'???H??4???u??????/??,??Q ???--W?????4O?4O?4O?4O?4O?4O?4O?4O?4O?4O???????0?4????az????8?>??$$??!" +???^k)???g??kmE?Z???&hy>TTD?)??????b?????k?3?h??????%q???^?Q`??Q?????p??*?L??+?=?Q?>`??5Q ?i?b??,?W???LcO?V??+??]??e?%`Z??y?A%`??(????? }?Vbw???!`???^?;???;??A?W8??f??S/?A??\?????????,?????Y?JQ??F?>Q???l|,??W`u>9?ZZ? +?=?????????l??.???30?=?})??????V????^?????XP???|?S???M?t???pv]2I? ???W??????/??????~?~??E???me???-???-{8???j??t\?_?????|:??o??#{?;?`?~%?B??Ap?`??????UIV??E???????a#?"??D1?_??WQ??`????? l??[;a[???Vn???????,???b?R4#?K? +"O???0? ??? 0???_??~h?r??G????????M??9?`+?? +???9?`+??;?k? 1?C??@?~8Q???w;?_?rI #?c?S???e=???la?-???5??????[Xc+?l??????[?r?Vn??-;Q??W&? +????????-??[x????o?u?????W ??^????%{0?7?^?(p??>0???u?t??;?VN?? ?????H???~ ?X?g??F?b???v?c`kc{b?????`?r;,??e????a?1`'??v?@%???????V???W???(??????c?G?8?%?q>n????????????O???z9?B??? On?zU?B??@/????O?y??????Ei?? ]??1n????u?B?H?z??^?????^?? ]o?t?????y???N?H?"!0?????6?s?*??F?=?#?????????~X???????2?~?gf???~??????6?u?Y???p?????{*?\?????? ?CoP?c??P??9X??y?D????V???Ng?S ?????O?Q= ??K?r??C@?D????{??????k?????}???m +?(?(<>????8K?K? +p? +??? +???H?????~?i???n?????R6???y`A==?? +???s`cP?v?,???z?z?D? ??????w +0?????J??i??D9`?????f?]???nq?5?q??????lSO??lQo???@?f????v?%f?"??3??\?F3?f?? +??{f??Qn??5?q?s?L;??5?L?????-.u?2?q??N3?%?"f:[\?? +K??4y6??F???H<i5??????e?<i?g#m?l? +??????6x6??F?????'f?dZ(? u3??wD4?f???=???1????JBH5?????X??:?g??E?|??u+0????_=??DY-B?.??c?m#r?(k?:??p?.???[?T?|?;?+??G[????A??:??5? +?Nj???Xg +??;??&?k-J?;?????0??Y?My???vs???v%F? +????s?? ???q?aO?????KV??5K???????n1?f9r!??????=:b/3-h??A??wQ?e +???(????3?&????V}??0X? ????}|????j}???P}?om(?????2Z_??4?4C?u??&4??4?gc?W?i??4?n??jk??HM?/R?????Q? +c?????Z6?Dy?f_8???l?^_???? +??B +?@u?j?Ei? ]|??F?j??? ?????hM[?C?k +|?4?7?????L??;? +?k??"?%???1??k ??X???P?G?0?V?R??6i0t???V)XVS?R??V`nR?\Z?+oE??????feP_~?&???BdG + ??5 +??j_?ddkG_`??Y??????@???e??Tc???PMs?????@? _??wc? ??hx?e??]???!9xAuS?e??pS]$^?~Yu???1?l6?tmXM????j?}-?50S?j_+YiE????l??????6??s??X???B??2??3?X]?$.?|?Ps? +??p$??hU?-?%u75bC??f?jVR??P????Z??iK??f?Sm???v???6 ?-??D}?$?????)??6 KA|j?Z???(ho +U?P?U5??3&t.k?+qY??6'*4??R???M_??h?D ?Q???]????oQB??.1???K.U]??H???:??YY?^y?\??C????k{????????c????????;!?n??Q9 ?]??????????Z?????~????????????8??w?j?????r ??Vp?c)~??u?w?k]??;??Q?? ??7?????????'?OW??U?P??ze??A??h???F??w????o???m;??/???w???>?>???? ?&??|?w5???-???t?????????o?{ ? +??]?oAy!?? ?????j???????v??$????? +???????6Y???T?w5?? ?-+?_?k???????????m??1?;?N+??R?V???"? ?w???]????????o????!?{???????c??o?I???S/PKU??@??p7g$c*2?? +???]C???U????o3?{????)?? +???2iw???B????2????N?m?}????=????e??#??? +???;-?2d??}????F?????{??????.?;??&??M?*????/???"e??\?????z?? ??!u/??????'??n?????}???M?????'Zf??????zU"z]?D? ?u??^???D????F?.??????????}??m?wL???????*'?3?y??j??zu??!???s?????????u]]?t?b?????A????????&???M?P??fP???6"?q?9??????9?A?a?????j??Cw?v?w?b?4???t8?????????=`????????m???`+?????u?h???V????V?? +??+i?1?[8??|?|?J???i>X???.,,\?p????????*m?AG[w7????nRhS??&??\??&h????C???P?C-,,? ?l??X?J c?g?Q?a??Rt????q???_;b#??9?????-?X?1??Ye??2Q6?a??aS?M0F?,la-^???????0?z?*?U??6??9??nm9??d?Q??#? sM*4?"?RR????)?5? ?"J?F +??mN?????h M? +?|@??j??az?TEWI g)A??lcC?P????M???*?]n???W??Gw???^y?????@`D?S????T????u??I5??????F?U??c3D??tg??S????q???niq'c?9 w2H?????M [?p??#^Y,p??q????n????X????????R?n??????-????\?\??o?i?????????D___b??D?E"?U?x?T??"?qI?????z?x????i?o?????????F;?~?.1??7?W????4?L??g*?{,?2# +?????????H??2GF???l??L?4Xt`???C????????????ae?????!?~H?'???{???u?XcR?????8(0c? K??a?}, Ai#??1E???@??l?m??!?n6+?^???CIG??`] ???V? lE6?&??+fc????D????k6A??????3[SAfgw65? ?lGm??? '?V'?/Y<^?V???9NQ?0?U?K$???k|vo6>0??????F??gxd>{???????????_|zd>???K&???.NKf?dF?M??F???O?t????G?>]????,?[?;?(?????x????[*?[]?K?7?b????,?\???????}? ??r2-?e???K????S??d??e) ?rD?r??Y??? ..?r???=??M??d~$B2???/^z??c3???3????`A1?_Pq?????\?b????U?!?W?^]qu??gMyqNb????@???|??km,?k?? _U??)??F???A? +^g??R??u3K?U???????n\um?h??A??M??????&/*\T????i,???X??6?= l+{2??c?????????T???+K^){x?R??K?/?|???s?~???????S~u?)??W???????u 3?v??)A???+{[:v,!:?r?5ZM?~,??R,??????? b?]Y?#????y???!|fI????T(?x?????gE?'???.3???????j??ZQy??????;1g??9???Fi?9??$%[??i>73??9?????#???'?? ??????N?????????k?1V*?c??Hl;eJ|/??$&r????z?Ak???s'gI=??@?d?$???'?9 ?6?Q?d??(r6|v????J?cr????s?g:?d?v?m??k?????%?%6:?p.?h2???:NPs??d?R?? ????dEg???A>?t???kc|:?R???K?%G?jt???N??c?w?t?J?DC????'?(????kwNx?w?i +?b??#|?j3??%????9??#??:Nn?8?? ??m???ia>??-??R??2?ufd???%j0q???? +K?^??I?f????g?h?>????6??;?f?E??;??;?n;e??Z?w?ox??q??)??Lg????o?s????b?>,??y2 ???b??_?A1V?????M?????&??T????X????????>N?BLB??/G??????.?X_?oV??Rs??????)?`G????????????1???????T?f2?^2?&2??61F,^?s? q +??????]??Y?HD???w+????p? ???_w?^???z????&?????????qo?}???{p?R???=??i???!n??/????^??V?????2!.??C???H????E7}???Q??{D??C?5u?Gq?&f???>?? +?o?~ ?!?o?>???Gp???????|??(5)??F???I?iz=2:???????p1~?????J???6???hS?Dt|??? &??+??V?oEV??\\??p +fchT?3??w????:?a?`c? +???wp>fFS'G???w???j???S??w??????j?Tm?j?_?????Wm_Qm???SU??????g?%? w?Oc????}-~?Z?9GL?h?m??fl?{xK??e????<[?}3lH???>l(_r?+??Nta%??6z??*? +?X>?,?#?! cF0?1l?8?R?w??l?aY???Xy +N??1#?W~??8????9?V?U??\??o?z? Wx??5>????^??&?o*?z?????N???p7?q?|?{??{?????9???G?c +????Y???uq??1Z??>?#???????|&'?s?!????OI.w%??????-???u?????w?k}:???????'????f????a??G[??k???e?-O+]_?5?H?H???????.??H???IG:??Z?c???.]'?.?g!?.?6?Zv6.?E?!.??? W??V???'P?????8?c?tm??h??s?????6????W?;X??p??Or?dA?w??????????k???5??F??????????? uaC????b??:+??BO??P ?j????G?|????V~??????DX[?D9&????dT?)?bl?? ???#?]%?*yW??J?U???S?'?_%?*?W???{c????????V?O????p??N?4|????^???????h????Y??a6???A??b?GCO?c>??1?????e???C?dyL?9?;y/5????N?SF?2??Q??:e?)?Gu??SF??SQ???;ag??]?vG??????S???7??????#?s~?e??p0>?Cp(??p8???8 +G????8????>?p"N??? >?S0 +??t????y|?c?????_???|g??L| +g?????z-??l???h? +?7?f???c?g??????%??????S???????#a??`?h?!8?gW +U?{??I|????X|???q?????}n???oaI???e|=LT}K?????Ni??U?w???,1\??0???8??/M????s?{?+??G?Q?c???w???p,N????85,K|??*?#?vu???????????qs?V???????v???????????/q??=??{?+??_?~????~?1?dS?l?i!q?{???C/??????BF???g???$~????!??!?\V?????*??7q^XS}.???W????[^ny?????[^ny?????[^ny?????[^ny?????[^ny?????[^ny?????[^ny?????[????????N? |??/?5r??????Co$J>????N????~4???0?\?[?b?O'????rT????Q?/??b?/??b?/????????k?c???a???k???k???k???kqt8? ?>4?oB???qq???[$??3?>??u????????l?`??u??9???7?&??5fc??Xc6???5fc??Xc6???5fc??Xc.???5?b??Xc.???5??6?Q?3/???R?y=???=??[|???_????????????????b??=/????b??=/????b??=/????b??=/????b??=/????b??=/????b??=/????b??=/?????uVx??oP??fV?Qot????????x??q?=??????5:?Z????j???o@?r?=?'?&Y6??I?M?l?e?,?d?$?&Y6??I?M?l?e?,?d?$?&Y6??I?M?l?e?,?d?$?&Y6??I?M?l?e?,?d?$???h?4?f)o?&?=??T???M:? ?d???????eF&?????R?-??R?-??RY5??QV??j?U??e?(?FY5??QV??j?U??e?(?FY5??QV??j?U??e?(?FY5??QV??j?U??e?(?FY5???J}?qY????s?&?;E?TT#?V????U^;?ig??%?V????U>??i?*3?ze???*???A]??w?i???? +????M???($?V??????)?J?l???@???y?aK??????m?????????P????????{?>p~? q.?q .?e?W`&??U???GaK)??"?K? +?rY??e??p????L?_????Z????????9?7D;'n +O$???g????? ??y??=S?o?$Q?I?@%?0??A +???b;l??#v????b7??=0% ?p???4??0 +?i8L????B[???$>?O????p2>???L??0??;?8????}4???"\??\??p9??L\??p5????3Q??YM?T\??;?????:???? E.9??q?????8[?\?r? +S???0+L? +S???_?~??E??_?~??E??_?~??E??_?~??E??_?~??E??_?~??E??_??f?o??f?o??f?o??f?o???r?\?*W???r?\?*W?n??E??[?n??E??[?n??E??[?n??E??[?n??E??[?n??E?????;??Y4?Vu?mC?>j?????7??Y??r)??h??????????T~N??T~N????>????????5?R??+u?J?????*?:y???f5???G?????G}?c*?B??wls>?????pI? ZO?z???????'h=A? ZO?z???????'h=A?????????s"????.????.????G???|W???/??j????1??~ ?c??????1??~ ?c??????1??~ ?c???`??9 +?(??`??9 +?(?? +Y??? +Y??? +Y??? +Y??? +Y??? +Y??? +Y??? +Y??????,???r(??,???r(??,???r(??,???r(??,???r(??,???????? y ?r???69?&C??c?s4??8G??s4??8G??s4??8G??s4??8G??s4??8G??s4??8G???sr??1'??sr??1'??sr??1'??sr??1'?\M\ 3q%??z?c?&????,????Qi??:?`??O=???J???Lu[J?U??5:mg?V??`????????op?[????uQo?X???u(? ?????=??GT???Q?#??????Q}#?oD?????7??F??^?w+EJ???}?x???]?K[?3h?B?? +?o????M'&???????7??_?G?????Ml +mI?3y???????B???|f?]?k??o??????M??w??xI?:KT?+x?9?z]??7??v8[??. D??:5???Jh??h2 +?$+Q??????????#p$????am?>?R????`F?~????N] +3!?c???^ ???FX1S?CW????N??}?{|??_;???)?????'????????|~???Rm?k?r???i?W?? +?wR1???) ???]?????a???? ?????W??a??????.???pt?VU{?T??J?Qu???QuU?????????+?Y??5?(9F?1J?Qq?T?S1O?! +?Pp%WR???+)?M?n +?P??_????(8D?n +?P???C??J? +Qo?zy??)7D????q????????>l???|?????[?#t?????a????z?^?i?????zK??????S??!>V??Q.?>??6??\??^?R???o??W??^??:??Nu?S?T???FU?QU?FU?QEUDQEU??PT E???s?8??k????O???;?????\?????????I] +????c???????????E???e?X??+????Ery9??6?h7Gb +W?,??w?????r???????J??t?????9J?????}????W??Ot???????9?S?????]??+v?>?????/?O??q???????????u?????hO~?^h?B?{U?Q?f??5*?q???}\?#????\G?:b???/?f???2j????Q?eT???1+F??Q?b??????????????/?s?/??K???????*??X????f&?M? ?U?V???^???1?y???????z?9?7?u????z?????lj3??M?n|??fb???????????p??W?j??}?9Uf'k?O??J?l[??a{??????u?j??Z?[[oJ??JN????}=Y?uo?c?????7???????8??????3??&???????Q?????'?????x?>? ????p]??^??O????'zR?Lg???_?.?!W%??vK????????TChK]?K?]?E??B?lQ%sT?U2'5????'???m?.??q???.???{|??{?>????pQ?wx??M???UV??R???? ?4]5? +w? +????>??*w]?????"??????s????????K|~??K??w????Z?&??????+m??????[u????R??_u?4??u?w???????L????P?? ??)u?R???`jF0j???}1???>M?i?O}?T?&???FM4j??B?[T??T?&97???p??????>m{>A????)??+T%????????z\?[_N??i}y??? +CT??Z^N?????q7??ph-+?e???\4?????w???????K)???=C ??P?W7?!??_1}{???G????C??u8?)`?????(?????c?.4Z~F??A?R?2???Z?PKuz?:?Ko?A1?????????N???iK>m?GIFiG>???????6???|?????([????X(F?E?>?Q?E??-?a +??T8???P ?IsN??? +??????W???:??p \ +?? t???r?W at w?~WA????p-?A/???_B:? +n??&?n?[?7???p?????????=???Oa????>??? ??X?f?a|??? ????R?|??"_?Z?Ce?P?>T??>4??P?f?JIs +?U???2?"3??C0A-7'?n?T??]j???????V;h???:?ep9???@??C?,k??"??a`?????B???>?f???eK0?&?m????B????:? u?*???C9???c?p?U??g?.?y??????j?? ?~??B}h??t?Np+??>?n????????n??2s?2s?2s????1&??0 ?T.?9????l?e6???? ?"?3`&???0^??0??2?[+T.????O???B?????q(??)??{?? ??@hm?-?&????5?q???j?7?=0??0?PK?9K?9K?9K?9S?9SM?k?^fP??P?o?l?K???a.?????@.?o???| _?? ?`7??|A????????=a{?g?{(?3p*??Z?>??}b??:??u? ??(?(??R????????Q??b??:?????b?[?u??n?????3?N??a i???z???0?I0????z??#?>??#?>b=??^????:???~???~????????????g?????P +e?[?}??u?N?T????? ???d????7???uD???j???????l????h??h??h??h??h1??T&?????>?~??8?@2?s??9?5??:??Y????;)??l??l??L_??cJ`n??PZA?iv??.??)????g?l??l??l??l?? ???F??6?Kf0??E??\???? ???)4?????\VZ+-???c?????1xf??/??B4e5?Xk9/"?!8 ?9V?\V?\VN.+'?:%??e?/?9???cU?Zv?*??A*???Ach????6u????ZB+h +m`8y??? ???0M?5U? P?8!Ge8??u??n????qX7??y f?L????/?\??a,?E???Rx^??Y+?5X ?D?@6L?? +??? +???'??`}X??w?z?g?z?g?z?g?z?g?z?g?:?c?:?c?:?c?:???I?J???]?d?a7????{???(????u,???2j~t$I??"(? + ???"(? + ???"(? + ??W???.J ????(?(J ????(?(J ??????#?%G?K?(O???? d@&???`,????5?u,;?Xv????c?Q??????????????????:?????n???:?????n???:??q? q? q? q? q? q? q????? o???Q4d?mH??????#?z?_???=??G??????#?z?_??z??8v?q?8^??@NB)???[?N??????W???fg_????]}2??dv???????'???h?0?>?????h?0?>?????h?0?>?????h?0?>?????h?0?>?????h?0?>?????h?0?>?????h?0?>?????h?0?>?????h?0?>??k??T????;a? +?BD??(D$ +?BD??(D$ +?BD??(D$ +?BD??(D$ +?BD??(D$ +?BD??(D$ +?Bx?Q.J??r???H?#??N|?d??'??DDO'?????/??R?)@?p??.?"????("8???%??8??"b6!?E??{m?n ????? e??]x?D??uDP?(??yDp?G??yDP#Q#Q#Q#M?Q?}?d5??0A?BM?BM?EM?EE??g?(?J"d???F?Ts=???V?T?S??T*#d2????Y!RQ!G?Bq???yx? ? ?p?????{#9>?`4I?:?!?????i?.\???sQ|.??E??(>????\???sQ|.??E??(>????\???sQ|.??E??(>????\???sQ|.??E??????????'f?k?!??6L???+&i?????k??7?Mb?>J?%????u???V?TyX}?6L??p???-O???D4?Q??IuV43b??Z?G?Q?!?kk? +?;?w"?N??K??[?)7?+??zPJOJ? ???r+|+??????O??r??A?OQr?,V?)????tI??R?6a?j??E?p?r?.??F????Q???V??????w;w?z????X??+H}3q???(o,N|?cgj?C4???}???H>J??????N??~?oW ????"r??%;?????;???)i;~T?=x??Q?G?1Z"Rg?DjY?I%-;.KhU??'?)?7?P?L???8????fQz??jxR?O??? L?g?9x^?a}?Q???nMW4 ?? l??Bm??PR??B}h +?)4???ZB+h +m?-???U??~ +w???Sa<???$<O?30??Yj?6???0??|X???]?z??A?????????????R???#?>?m?G?????? ? ?!? ???*?????5}j????.????.W?+9?? +????k?i??9?1i?I{L?c???z?y?l??&? [????????/?K??????>?????8????4|?p*T????6??j??Ach???J??[?c?8??e?B???r?P??v??????r???/????j?=??#?>x?? ???X Uj?_?B??/???????pqFC???0X???a?;?w???????`??Y@}?9?2??y0?BX?a ,?W?U???rX??JX??nQ?????@_? +n?~???L?? +??1x??'?)x????,<?? ?"?3`&??9?2??y0?BX??w;??I~?~???0??????@\??\-??,?Dd????pNE???s???G??????{?g????=??????????{?g????=??????????{?g????=??????????{?g????=??????????{?g????=??????????znW?x?R??DI???9Q?z??FUlI?????????????F???}???+??J?M?5J?6????g??I??:???????r?S????5???o}????E??????s??\}Ajb????B?2D???\?Y??H>0???@\B%???@4???M????3?V???"???Q??! ?a +??T?&???ix?4<{= +???'O???????i????n?)??V?2??_3?X???=I???'???VR?Z???.?J?-??3C??_???$?!???$3???o%??a9_t? ????1?mP2oW???? ?5H4???????/?S??x????5?k?]??{H?????3?v??h?R??????+l????? +?SI?JJ?)=R??Tq?] +%??MSR|L'?|tw)?^?ww"?#X?[?W??dU?????W??????x?jUP +???\?.r0??=b???^??x????D?RNa^??`>\C????????^I?R{Ys)???5s?2???(???,n?? "?Y `q}????W??,u??c5;G??Q????5?H?????a?^????D????????Q?h?Gy?o?????????????w%oM?J?.?@??L?q(? ???EKv?2????!;c??-?_???_?T?;e?C?$?F???R?#??G?w??? J,Q^b???Q?s??&g?'?P?P????~x????x?^C`33????=}?:??/??r?8?S???V??J??????L??H?I5? &?9G?#?j{?a????(+(?Z???Q??2???S?*?WE??jZ?L?kr??\tr?Hk?K???%?M?69?????~U????UQ?*?WE???%b??-???!K??l?90U?Sb-J??=?G?c????????????????????????j6m?????????9???J?`??0z???L??a?H???}EK9??oE???C??mf?x???????y???=1V?,Q??F?E?W??J?I?J?=R^???D?332b?????~Ex?Sx?"?}??????[??2????\3b_???soW?7\P; ???VUN???!???+??b???f_`??? J]?.???? ???_?? +0????S??????xU:9VR?B:oURv????jO?I?????)??g??"??-??w?????o???$?&????3??9???f???????6???N?|??]?W?:e?????]???????c7j?????????~ebQv??j???z)????%?Hz???????bz$?Zu?W??+m???oF???i-?nE???kC???k?????\J????'j??'???????/i#???|-C_?/????????z??????]??-???m?^?????2?[?]??^???????t%???????IK?Oe-??})Sd??K??F?n?B?????????d-"/??h?????}#????"?Mv???j?X???j?e/?K+??????L???I?G????;??L???r?!3??|X>? 9EN?M9UN?-9_.?m??|Kw?;?= ??????(??A?C???????R??J???Izw#?h??2z=???xc?~????}?????> ??????b?1???? C??????s}?????/Y??????w?????????^?;?;??;?+?????}??????????*??s?s?I_??J/?]0}?)?2???fm??3??z?2?M?4[??K????B^d^i?(?????eg?? ??|?|F6?3_?C???L?[s?9G7????}?s???\n.??Js??4_7_?c??f?|?|??"'????i?????I?3?@>m?3?r?1#r??????g7?r???Y-?X???????7??V7?G?*????zY?d???u??o?b??_[??~??u?u?3?[???Fg??u???*??}?jKw?m????????????l ?????!?Uvc?}??????e?2??7??#??voc?????x????o?????62???Hc???=?x??????v??c??D??*???\?????O?????=??I9?????o6l????)!5^????E????s?H>X?>??:??5???/U???W?p????:????u~M?GU??T?\????OB??F??Ju???wE?=??\a? cWN?9??b?????u??_????>?*B_s?Cg??r?,???j????a????u?'U?}}_?~???'?9?C? A@????? +?????0"???\$?*(????*bV "$?dPB}???g?f??????v?z??u??s_8St???d3??Z?z?v3?|?1??#??P?cf?????|?~?w??W?T^??Nr*~*Q??????D?_?????"???|???f/?~#??g?????????~??@?A1$????d???[????{???'b??3????+??????@?4??? ??????B +????E??/??h.5???M?X?????{??n???%+?A?H???Q?? ???;??;?C???\U???i)5??'?D?-???zY??6x?]i0??t{?t??I +????/????@??-j =????4?}s???4RV??I??i???|?0=cW?+?8??=g??{???????^?? N??D_?????????y????????5??}:Z?>-??x??*??h +|?n??}:Z?>ma????OG????_???c?????S??=??????Y???Y ??Y??o???>?U?}:?:|?=?Y??????}?????????~???O?????R~??????n????~??5???oe????vxg?????=n????u/?D?}?Y9?{???a??Xcu?N?????k?|?A??>a_?Z??????J?5?5?kXk???6??ame_???????} +k??a?#?#?GXG??P*.V^\??2*w(?7??????d?(??1?(???0????Hy ?L??JM?xre*?8@????#T!p?????J2????/'?????r??Q???kGa????^???#R:y??r?wy?????{?`?T????!?~o??? ??w=9?????~C???????w?????Q?~?;???3??U}??1??M`?&?@X? ,?h 4???4yv???c +S?bL! +L?6'4?Y??,%^^N???=??(C6? ?e6P???7R??I?D?Io??z????[?J?[?V*??????w"?/????w!?^??}z?????????7???G(??iC?v???`??q) (?S?H0?R?p$??:????d??DJS:?????fD?"O?HJ?T?TD=?"?????U#U?!???"?????(5)2 5O?LE?/E?I? +?f4?FCJb?+????g :@?q???]??k????agF??C???? p?.b.??r???K ? ?LLL?V?O?????56?;? ;?A????%?@??a%???AA?8???C??D??$??duT?xA?;`( ??#?C?hw??SY?jy?????`_???????m???+?}??(#7? +?G>??????J?U[??6^???^[??|?|`\? qF7[??tK?:{????f{?y??^?]???qA???n!A?t?[/?^??u?u??wl??,#?/H?!?`o0Rn???q?w?w7???????H7?(?=?=?8#?/Hg ?????H?z?{)?z?????????Hg?????lA???P????????O?&?&{???q?L????????x??z?A?co!,c??[?8?^)A???z!A?2?z??zi?z??z????E)????}??}?1?;????o??Q? +?????{C????r(l +????!?????R??????I??k?n???_YR?,???x`?1?s?????)h?Q??H??H +$ qF??H?H?a?H????Cz?vTB +?I? ???I??P???D?????S?I??T?]|???????#]uw??)?? +??l.xE????^?3K??3??N????f'B???|?hJ??+?k9?u?2???0?z????M?v5?M??uu?l+|m??1??8R?.??n?W? ??????|? ?w;/??x??YS????????s?RS?$?<"W?????????}??;?x?7???????2F????W???|9???A|?|??6?7?*v~????U??'?W? +#-_???9??_?2G ?;?}????O???????(?????SM????Q????$??x*?Z?l(?=??_+?P_?^??{?,???g???H1?#??{?{?.??????w"6???Zwg??|??? ?1??Bo{?3? @?#???????X?&?<`??????????63????c?F???un6K?UFgn??X?w?_?????@??d??=Tp??u:????V?{???E??O??Y[??????'??|?B?_?[AO??*???????:g??-???`6??? ??????s?????`?3????}?)[??|q?ya???#5eF?d9?:6?MX e}?o? ?0?sGu? ?cWQ ??m???W??????0~?[???^?5?????57??f&)??1w?{E?y???Hs?9?T?62w???F[Q?X??????O??????G??f???:x?.??:?m?__??7?~_??? +??sN?yb ?????D?.?~?p?gU?? +?}2?????W???f?`?N?']?m`G?c?E?} ?G3?\mCl?YM;??>=?????}???????8??????g???e????a?;W,N??? ?sD?7????So)??vFj)?.t?????n????????L??w?????m?C?S]??|W??m???;(w,?FV??B?y?ZUY?s?/? +r?(j?{: ??????z??}?ZG?+?E?qTK?r?;??q?du?{T?rK??? +??XJn??????+???????~_?P?????|??T?v3??lf???1#?]??6?? ?????W??)<)d?]?/??? ?M??w?????q?.??????$W?x%,????{Qd??_??O??}?"??????}K ??bcW?O???R???F_??w?Sp????Ik?sZ??M%??I?G?[>o??2w?? ???L??d?*a?????}<~;?XQw??w?????wqNu?gdb?l??O??ZnV??Df???qSs???????0???????Y?W???3?^??^?u6?0?1?'1??~?L1?0???????9f?w?;?U?????L??|??/i??'?W????$?=T?Z??5?m???9?*|??????? ?#?????i???H??[??' b??q?[????????[Y??X????v*???K?L??:?)$g?I&~~?2???F?=+J???:~??$??%??????6?`??#m??z?O????Teb?o??T(?{cZ?_;???g+?=X?bW Ms-B'???Mt +????Aho??+L????Y)OK????5i]??C5e??#?N|u??~M2S`_?????\?'+.?E??????NL59?????-2?ce??kn6o?f?7r ??(?l???O???M6???????|PV???[n>}??=Q??????bu??+???'?S??y"?y??&???????|?K?S ?^?????u???=@Z?*E??:?]?N7\??FX??4????w????{???A????X???t4???h???\V??[????T??O??F*??:-V?T+????h??Pu?ej???V?????R?V??j5UM????jmP3?{?]?R??g5W???j???v?????W}???}j?????j1RK?R???v?~??$:? +sdDa?Da????U-O?|Q? ?Yv?U?8Q?KU?$??K???W[)vO?Z?4?+g???????oV??{?yVwV}?????u+?Y}?'????8i??Y???vV:??;X????????{??g?7k(??Y?8???????f=?o?X?x?&????"k?YSY????o?`?7k???}?Z??n?bu7`u7?????X?M??????n*?u?T2?????????????~?.W?X?M???n??????Z???j??n?bVtS]X?M???n?n~?N??+_?!??{j??????OP?)~?z?O???#~9???W?+??XqM=??kj$+??Q~}??z?u???????a?5????o?????z?u??x?]S/??????kj?????????z??V????z????4V_S?????? ??R????G?7Y}M???k?mV_S?X}M??????????b????_?V???????*?Z?o???????*?:????~eU6u?U??QVe??`Z??a=6;9X9X?N ? ??3? +? +? +????v?`?`s?R?e??]=?.??????>+?1??? ^?l7v ^e7?d7 U U?[???????? Y????jm?@Vk??f?6{?????/_gO????9??f?=o?:m?}?????:m?1?i X?-??N[ ?:m?0??J?N[?,????N[?"?????zz?.???N[???Z?N[?5????N[?B?i ta???????\????Ye-p +??z??Z???nd??????????-q:..p{\R\J?.VV ?w0?`??x??CHY??zq???)?,J??MIX???????^ +????Q +??>?J???I?? +?? ????k5?>????W@???? +h??10?LOLW?? ??)??? ??-??T0?,0?U????iTNMW?S%5(_YP???|E??\??? ?W?/??? ~E ?B??????? ?W?k?fG????k +????Rm;?N?:v??N?x%@+??JP??] ??P]^P??? ???G[?-a???E? +?X???Z?/?Z_ ?W?/?W_ ?Tw?:1?? + +G?/?/????%r~?~?? ????w?"?Y?.F?w???K??t???]FM???r?GA???j???]?R????m?? +???????y?p6???C?JcC +?c"??y???K??)?K??P?????&^9?"???A-??^-???????^]?.R?????^????{?????yz +q?????j?5?????^s?o?????^K???s&j?? ? ? ? ? ? ? ????3Qs&Xp&:?9??L??9??V-????mP +? )`N?? ?DY??? ?<????Z??eS????y??P, +?`Q?9??z?????`T????GQ#??????!x????1??q??????'?z??.d??0- +1????????????V?Z???E=`]??? q???[A??A+hQ30??`??O???(3 +???8?? ??`B0?????$?$??E0%?B +?????e?t? ???i?(?L???? ?????r?r8Z>X)?v????'?v??v??v??v??v??v??v??v??v??v??vbnG???.??????? +]??+CW"?-? +??B?)??R +M%z)??????!????H?U8??cHM?? +?I1 ? ??Z_M??5???{???{??TA_???*???E?uo??l?G??x_????~?s??yn?7#?_???} ?d???3H????`*fy'???w!??>}l?????!z(U??????~9?????q???O?fpP???~???3F?E???q??9?????#?x=?? ?s?????D??_?/R-f?T?u*??/????~Y???4= +y???8??~?M?/????o????}O?O??,=)s?????????GD???z>?|?Pu???9????????HY??N?a??T/?]??#? +?#???+Q?*??5z +5K^?????T??2?W~??F?Mu?OS +?iR??a??a??)??45?k-|???i%L:??s3??8??q?7?? 3?@?qGa?I??/f\Z?qa????????8????~?#?=????D???G?{"????~?#?=?????~?#?=?????~?????I?{?E??b???D?{:?~O??IS?7G??p?4jl?[????????w?f??/?????t?????V_0????a???o??? ?pj .???[?#?3?&`?c?5??xj????????i}????? ?OXx;a????3?n???6??y??/??$,???0?( +C??0TJ???_*???A????]c?????7?TK?^^Ey5a?5???K?o????"??K??+?jQ9??ZF?F??e????V[mT?!e?? ??n?E????Y?D??????j??rTSVGg?? +??2T^?*???g????c;???QeQ??j??0R???? ?o ??????v?]?????U??????????i??k#^?? [?nH +? 4A?????????PO???v ???Vv+???@=??O?J??O?J?:????8?? ?$??U?0????`?????S??'??????v?4??d?M?d?d?"?@G???>S'???XL????|W|O|?8a????Tg??,??)??]a?e??w??$??U????????pzO8}?p???????{??=a?i??;_???' SOv?Ax?'??0G??"?/?a???u????~X???9?/?a???9?/?a???](?a?D?,Y??.??KD?????u??t?sD?????]"?a]???9??.?a|?dj??????_?????_\??_???u???o???!=????-Y~?!??%????????o?7G=????;???^?wBm?#?%?%??? O????? +??? +G??i?_?_??????TT??=?v?pnB[???????P?m?m(u?;?????????9??????,?pZ?O?O????^????>PB??,?pZ???H??OA????o????? +???i??????????????P3?O?yZ???%?N3?v??x8-??$Rk?p???s?x8?????T&???i?p??o?!?L[?35?Jm?3a?3?`???`[?? ???????x/a?^???ry?ca_?*?!??c?&t +R? ]G??n +???????-?Ca???]?h?%?])??+%Zt??E?(??-?????pe:'?1|)??>|].Ju?v?p???`???0?? +?a*???????o?$Kx,?????s?C???U??{??H??C???RM??:????2)??K?%^J +=J?B~?O??g? ?????P?'????z&U?3??'?I?S?X?L?g?U? +??>?Gxa?h?1?&#??0???",@? +a?r????~!?zm???.DX??6?]??V>BB +B:B?hzW??g?h]???i?p????:F?+e&G?c?.W"\M?}??+%X?D??????h???3_??/?-?Q,?! !?|4?????z?A?1z?z??w??ykK>?=????????h{?2c??i?qb????g?B ??w???g.?Gy?%??g"?E??3?o?GX??aS?sG????{?>W???w?Q?B!?4B??????S?f???????V???????% +?????vd\?G?I??C#?f????W +???:????????>]? +$?\;?c??^e?XW????;:;vLvy???Ua'g??Y???\?????!}zn?%gi???Y?kFv??y?w??????Cn??g?59?{??? g}4?????????K?^?@? $?Uvw?E??`?g??]???g ?r ???pK??^??n?? vW??9;?{??Fv??Z?B?0 ?0 ??0?!?B?XBa! a aY? Y????j?Z-!DK?!G1??a}??y}>q(??9?8??cY/E(??X??"^???p???C9?}O?If?????[????^??{??????????~I??I???={??~???%??????#O??L??L?_??Of?/?>?W???????.?P`f?3 +?????????? +)??J?????y%???"?Q???*)?|???~???t???%??G?Xd;?dk??\l&?6?}???m@?}?l?8D^P???I??ZWj;??? +IJ.?? ZRc?k??t? ??XX? ?+?z????6????2\?O???B(???(??F?????1? +??P xNh????6R>?T?k?Wt??kJ???vC??vE0?5???v??`V?u??9?I?i[ ????s????-+????!. a?Ug??Q:,3??a?C???????c?K??W???vO(???e?{j ?lk?^'?6??~????kqy???b???u>?Ec9??S4V????PuA???Y?? ??H9??S??ft?fwo?u?P8|??(?>?m??Z??X??X? +5?~`L7?????????0pZw?OPk?7?5L?i???L?6o?Qo>??[h??* +?j????V L?N??)!???VB?3|?rc_???)o??wp????w?o?]??? ??7Ho???9?)???f`Nw?/U.[??g???q????_?L[?x/*??TVt[|??????C,??(??]?V?????????0?@8 +?#??& S?:???????ty?r_?xA?6$?? ??n(??[??^????^#?a?eC???O?'?>???/,??T?HX,6+?????r???/?S??_?O??ZC???(<lq?? ~?>??': ??d?}.??j?:?f????s?PE?????????~?tTC??????/?O?3 ??F???????,a??0?r??w?e?yh?? =?9h?P???b%?????/???wX/??`fp????C?I??z????p??#? R??\?E +?c?Qk?d?Ni0??]fhiX)f?? @??A:?Z??a?4??}3g#????E!"??g|?y????'?4.=?%\&e?????Ow???)??????] +??]W?/?@S?k?s]'???b?x?S? +\g???b??7?%?RLe???"]??T?????eS?k??w???l65???m?O??Z]?A???54???? ??-(?~?&?k%0q?U8?? +?#??@gcQ +/?0Fj????=Ox?4-?KL3r ?C??\?????p???2?1?wL?r?n???5??\ ??xp??"7?L?r3???^?I>?o#s???Ntf???i[6?kM{2?o6????????}???'????P+???=????+&6?cR4?`N?6"|;?? ??'z??TO(????9?a????i?L?I?8{?gOA???:?????????B?????qs?l???G??????:i??????14n???.z??Y?m??????x0U_??????$??g<4i??? +]6?z.>tW??-?3??j?x.+K?g:4cI???f-??Y??dy?C??\?Rh?R?Y ?X????JK?g???R?Y?B??????Z???????oi?-?????^c?W?,??????;??m?w??,????????ZD?o@?o??l?t@,?]?o?(????Pw?@??xw?@?e??a ?????o?@a??o9??6Pb?>:P????*? ??,?@Cd?? ?P4S????????@??l??????6|8??8`?d??}??\????Y&??????n????????2/ ??v??>r??Lw{$????B?R???F??-??T?C?wHM?^E!???J??S=?JD???U/?T?????? ?k?%U?? +? ?*_?Q???;???W?????????"?8"q??#?=?S???>????6?NjN:???tI??I?&?????$m%???p7????HB/???K?=???}??[?(??h???9 +?B?@???P ?P?? ?????+E?w????I?U????2) ? +?A?UO?Q???F??g?????}JVKj?V?A?[=???S??~? +????[?O?]??Q!??z??????G???'??P#????{?]?>? ?????????5?o??_Q??_?M?Q?V????O?Q???|?e?????G??M.??yS?&?????????3? +?w? +???/hjUjM??m?F??QU????VejLQ??qi??5?? ?>????>???????9?j?Lj?Q?U??fA??,jVT??????G??YS?4???W????T}??hvUa????j0???z7>%??w?_?C?w?y??VM?>?S??;?GU??&?o?????B???'?^???j???????????,??Ai???????4?gq?q?(?<)?Z\~\>?y+,+?2?e?w?^??????H??????????do???m?.{??d??]?!??]N?%r)\:?,.?+`??b????j?z??k?:8=g?8N??=????i?$[?-?? +?yO?Q[?-?????????l??@,?6?m3C[?f?I6?-` ???????Z??g?A??w?ZM???V????h??;:?????????=??????i???6I??????Tg"Q???2@?E????\??c?9k??J?S??rq?:?8?U????????:?!z?q?z?1?5G???????????,w?q=????_q;?E?????2g~R?W??~W?u? ????????B?|?z?1o]t,?A??X?*???????????M??gt???U?:??????? ??>t`e??"??XY?????k???6QLbS???U????t1??T?WIYb6?\1?- ??b??-???J??k?X??? +?h?????m?h?x? ????I??$?YN????w?????i??(JH=??U??3?? ?93??? ??:s???????????=??'?s?"n?Y?????>????????????g5w?Y?Dg?sO?q????p6???7?l!? ???t?T/?W?i??3:#?`g??gt^\x\?egg???n?c?????q??6h?i}?????u??Kl?6????>p????%?`S`? ? ???_??N??o??3????1> ?~??8}??3?=r???a?_l ???????%???~2??lA???y? +B????A?;!%?NI)????????O?Q?????o?????????b?L?c?kO?2?<2??R.??]^Q????>????????;1_??????????@mW +V?cc~5??????>???o|?W>?#?~2????a???h????Jx??????,P??T@>oK???R??a?'U?6???To???H=?????} ??'?C??GR?E?F??}?Q?H??`;?'?m???^`???1???zj_????C?n?)? ?9?.q???????,I?s%?o?@R?b)Dl8??/?????????O?????????cm??L???=>??1?c??G?)_?l????i;?????1f#?????????`?Vg?pI?)\?oa?? +^o?\?I?,~??$??o????|?I3??A?!,??HL6??????4? ???&?i???????????=yW???3????F??[#)-??? +???VZ?6?? ?~^????c@?ii?(?+???n??T?s????A?'?W*???8????????????]??????????3?0f??UnW??H?`??ZW-g??=??`Ou5?3\m?l?Ql??y.???e???x{?K????@l? &?W???ZW?c{?+L?,? ???!{?k?~?5???np???]??9?.???'?? r?}YN?????kr?}C??????;r?_??\J??#? +j??AH???d?QH?[?L???????C??;?|??d+???\?T? +Y&??D??}B???C???1e?E?m?v??C*D%??F????????<@;??=??8&??f??B??)g?Z?L-??4?1G???0?Xc?"????x?f??Qf?9??c&???a? +s??:s??c????]f?0?QYc6????<2?M ?dS?)??c?7?JM?jS?? ?h4???M??6"&?d5 ?N&w????????_?y?&??_?7??? +{?+ /?????????WIN?k$?;???/?Q?B$'?u?????????Bz?/ +?W??B4??YdRo?????`.)?A?{\5?????w?????-?]?C?x +?H???t??"???}??O???Y?=I$?.???2??H +?z? ?????X0oT?|BV?MXQ?S2?h?r??U,$??q??E$?? ???UT?(m?????(P?d,xZh/0?bB?+?R???ac??)"?????J?B?SB???? z????bL? ??Y??H??PD?+?????5??g??a?`V?U0Wbyrnq???v??$??q???`i???sk +??K?5?'lg?92c?????h????bKW-#B????qy} ?H?+d??D>A?????PpV?V?|yc?X?X?X?X?X#?r_??5????k?(?.??Z????????7.??k2&?EsplhlDltl\???o?? +,?M? +?X o?R:#?;?]??????XIlq???2?_???I?U????????]?O3?????v??^y?????"u?????K"F?;$t4???????";?b???qi;?O?g???????,??x?x?x?xv????x?9??W?D??]|`lp?d.rWj??dYrb???:?I|?????????V??*?$????9)???????2;?%??K>h?.???2?S?L?2/?p?w?%j'?????'? ???9?7"??h?h?h????+?7?_???,?]?["?w"?'??v(???? ?`??C?????N?%+8(9+WJ?????c??I?iy??S?s ?v&&?&V?k?j0?>Q??W,?Ol?>?/??G?S??-b;5??h?-??&??lSG?RT????i.?????????Fy?M???? &?????,lZ??????*l[???KlKa??ha???9??????>8v?ph?????Z8?pB?????3 +_,???TXR??i????0??0?"??PW?7????!???3_^??Z"???*?) ??u9???7g????lE?K^?Ke?uX^R?E??????2G??V0?%m??F??Fcq??9?:?e\n1??)?bR??\???jn.59?9?^???6w?k??\?????=?1????6>NX?;?{?? r?}?????BK? ?0?=?P?5??? ?_???&???e???}???????{?L?9?W??G?.??????? ??]?G???$?v??s??7??P?+P?+?Uju??v???(???PC???zF?%?p?1?y??v???9????0=b?#?}??h?q?HQ????5EOy6&{4C???h???2Z?o?2?UW??B?@[.??????????I??? }????tT??h?g?R?O; +9?~?e[???Nm???P)K??Vu +ez??5????f????(? +?u??{??w????r?e7j~?jw??M +u???????|???P8?b~ ???f????????????W????????R=T?aom??Q???]??My(_()Tdr??/?QF?c +?*6?5G?K?dh??,???z????????*??dO -5? +??? 65_?MH??|?$/??w!?CH?????S??OV?a??Y??}????e????u?<]6G???y*6{c???[?^??g?X?{????????la5Zq?|_?~?]m???^??jt??zq????? +s??6???V??.?,?p?]??p?[c????'?e +???yrY???n????}&_!_,K?D?4???|??M????"?GGr?f??"?Q????92Dh?g[????????.2^h???rQd????"??J???D??3Ad??r??#e&Nu/???,????.??=!r??)r??Gd????4g@??U?9*{@??!??>#??m??3h????h????c??W??????????r>?j???XT?aQ9WE?<?7??&?<&??y??M?? ??Z?V???(????N?????????????????i???OT?r?k>_J?Pc??BYB??:U{?*?-?[?>??B?B ?!B??F +?/4Qh??L?9B??J=Z"?\?Lh??f??B??>: t?k???y?R??G?_???:F?ZC????????!??P?L#???D???kj?KcN? t?P7?????????_?A?|O?*n???+T,4Ih??,??B ?z?K??W??Z???????V?^?\h??n?}B/??R?U??U?8e???sP?zR???O??et????U?U???^???????s???zB +}??z???????P ???z14/TZZZZ???)?????C??????sa+?????PF?17?WV??P?p?pv?w??????PI87????G?????'???g?????K?K?????????????????????/?g??'R#R;R7? ?iii??+?-?r?????<??$#E???Q??PqdRd?iVdndAhpd??Z*?+?+??&?>R.?v??;?:(?#??????????f??? ???? >?R?????BM~q!?/.????? i??B]~q?z~k?~0#x???`?`W_?`^0???????????Ppt?I???q?g|? N ???\\???E?0|k???mLo= ??y??N3????Q??b?N{?UH???{?S)?Q?$?P7?????} k??????N[tb???[?g9?'??b9???,J?????>LO:??|k?Kt?&b? k:?9%? +????????oX?j?V 7G?WV?5?3??*8Zu?8}?i????? +k'???u~/r?? ?????(??I??#?Qu|??????jE?F?'v????,??/??;??o +\???1?'?v?K?3?V?}G?J??s?r???D???:?c?S?S??$?vv???-???;(}H?m??>?2p;8??s8.K?b?B1?????? ???7Tr?;??<,?A?{=??)]?d/??H??yW^p9X +????Ds?|?_kT?O?? ?W? ??????~:?K??????)j??Ai? ?o3?E?????????A????i??ogf?#Y?i f??n'?=h"?$?O?E?????? 9??????????#??????i?Zx?^????????o?(v??~??p??N??$?B?@s??#?v q?E?n?? +w??u?+-M?|???LQ??.??.???????P?o????u_E?U?L?q??%W+??j????~-??????G)y?Xw?` ?t?Z?fZ?^H??????v???eY???y?6??r????;?d?n??%??DJ?<4+T???f?Gr?????vh????u7???=1???G?:>?>???????Q?[???==Z?e??"????b?st??????hg8"???? h????????[???j9?>Q?-?? +??????B???L5??V???9J? ??4?'pz9?$????(?E?w??j???H???7\|?|???????????w????x+?W???X????lo?i?6??*????L????]???[???w????%???`]????g`?????4????y\??k|Z/? k?z??^????r?O%?n???L<`?????5?L q?{????v???c???s??????>?P=&?,?X=? +?F{?#X???}?pgh??QG?6?9h????W#??5'?3?jZ???????S(vv???? ;????1?c*???tD5?V?}??'?????g??~-s????9G??NO?k???gx?#?y&x#??? +l~??S` ?\??????????????Rw?l7UM?)X??u?o?????????o??*/}???9?:?????_yX???>?qoc???????? +E?]???J??i??????i?)??_???`?????=??{?Yl?????qC?WzX +?j?u4GP?M????J?????uC`'?????q'??4&~??-4?b??A?,???r?,??{??I?3???R?j???@??Nc~????R??R???+g??)7~ +?W??rtKY +?? 7??zcu???]?=q???'???c??A??n???xC?b?3??i???W?????,? ??M??|??? +?O??MD????^.??SF.????_a?}?:????? < ?m??WR?]??l?&?W{*??Z3??z?????Y???Z#???????????t?GyK????w??vF??&?????q?r??N?O,K???g]w?="?s?>3u???n-)=???Ro????jiJv????$_?7??V???f??????#??!? ???i???F?3?Wj??Q????Rn????f???_z??,7E?5/???v??????FQ#?97?]??sz+w?????A????J???O???#Xh ?X?Krn?U???^?z?)qnn?w ??mv??k?? G*:s?EdN]?P????W??????;V??\-??]??c?6?_I??n?C????n??]o???????? +r?w??d?c.??-???Oy??L????et????nO????k???=?] ?H???u???x ?;?Aj??=???JO??????????? ?L? ?w1??`[?l??j}jm????G???????y~x?>f3;?2?!?5?^Ak??s??)`g?sC??Z??Mg????Tn"?-?????4??? ?P? 2??BX??fw?f*q?!??d?#3?????}?????-?=??_?]I"A????b]??-??B?:]??2??)?&?y&x#;?x??????? +????ft??'??)?g?l??f????V?????r???|Z? K ??\???s ??{q?P??2??>?rv?n??Nb-????J2?? ???:cE>???}Y??Z?,?I'g??E?????s#s????]??nUtZ?Oi]?%?|?=??|?_a?s? ~|D3^?&?@j????0O?Q>%?????????r4??(??I??F?d?Vrl??Ll?c??2//??a?#:???;G???3 K???t????E???G??lA?L0????u?y:??|???|?Y~Vy?3$?m?ioh????8y???? ?o??i?? ???z{??'?^??}?????g?`????o??Sr??p?#? +?? 7u?/??B?c$??EG?????h ?p8?? ?V?[??SH?@????.??x??`uO"??C????(=?EB+V$???i?4??_???f???????>? Y??;?j5?? ??????????+?????????Jl??`?J????? +?>?2p;:?{?V?-???P?? ???Y??}?tpA??N?????x???`y??????T?s? ???0?o,w3?T?;???T????'????2?Y?|??E?? 9 Cr???? +?t?-63???Oi?D?T?????]??_???31?rk1|?J?}??9Qa?(???c??J,?WQ?-g??\xA?mD?&6?6?>|?????^]????????,??RW#??f^vGS:k?U"?Ty7?Y??? ???{??Q????|?0T????Sz?Zw?C????hf???d?>?exi???+g3?7 +??Y????????p?? ~???*?{?g??J?M????????s??3?T?T?(qex#???4q??????????????O? F}? +???u??c +$?????????J??PZ_y?%"???G?Y???D?};?Y???1? V?fE????,`y??%?Mf???^?j??Y ??<'vL&? +??Bk?$|???hN@?{&????>g kg?W?K??>2?l??????? +?|O&?????f??? |??Nw?S?7????h? `M?K?????A?Z? ?U?S??}???P???&????!?L??#?? 4??z?z???'?X?fOa6??8????s??????????n? O?????Q?t????{??*Ok?????"p??~M[???????~`w????????w?h???`g?????h?&Z???????"?o?*?(%?j?O?a8?b?d?~??? /?gLX?P? ?+???%?!?,D?,y?&c1?T??W3?m? ?t?{?*?????=??k???C?PB?"3?w?? ??y)??-?????3?S?????'T??8???????????ZW:??lU?z?Kg/wU>????o??X?E?H?M?Bm????1??*?/4?/?>}?$??}???z(??`??pLu?u??'?c?z?Q??????h???&?????LS ?NE????Bq????;]??????????; g???p???s?*Ze???3?^o?AR?@??[d5U????o???+?Y??????V+[???????o??o ??6????4Q}w +?y=???H??#5? ???~?????S/????????+???Wo?-?R? +?? +????|cV????? ?B??Xe???u??k?????V?o?m????????}????n?]Gk??m?????7?_?????hR??????_????????Y?:]??FE?????o?)????5???[t-??? +??????mc???Y?5gZ????i??5???B%u? |??^F???'?-???S??H???S???S?X?4?Zc??^Y?????G??UW%? +????=l?Tk??O?'?u?????+~???&????/8????G???X????:????????4???????W??kH??????t?]????p??[?9E??C??+??? S? ? ???H?;S??B?;?)$?b??~ ??Xp????Z?(}?? ?3,?t???????!gD?y?k[???B?}4??3.????S???g7x?o??O?vh?#? ~1?l|??1?%?Vj?&Ev?? +fv?w???)??Dr?.3GH???R??1? a?A3_?J1??O??YCx??L???H??o??9L?????Z???????~v??io???OZeX ??i?F???;???i???h?o?>w?????{W??W?;?ib? TL}U??~?~??t??[`?u +?????q???????????H~??|j?C??M???g?????/??R??^@?.??????<d,????(?&?Pk-?6???????v?.??A)#???????????w???????h?f,0v7?M??jL \??!t^??????. ?R)M?????????4J????.ta????~??V??3????!'z] ??7????X?"9F?/Af???P???y??????????~ +~?|<6???z?????I?? ??,V?3?C???G?????> ?I?>-??{)H???8??D?c?1?^??????Gk?Y??G???u????%?MV???!?????????q???7#Z?N +?_Dbfv +?>`:H?m?M???W????*p?}?=?:??C??TO?X??F?????H:Q?J*YC8??4??VQ??j?v??:????z???A???s$?i???b?Q???????nc???w??SmE? ?k????3T???\?t?F? +??8??V:Vo?????F?A?? XH????t?K??w?C?Yfk]??????F?84_;???"]????%,y???NK4??h?P{??P??U?j??~?PyI?????Tw?h?@6??z???eC??2?r?? +?ra#j??)?O????%Zj???4??=?d??9?(*iH-#?X?r????L"\I?????(???1/#wSyV?h<-I?.?uK?"?kM?qY?EVMlhfX?y[iN_#?"q?????g????$]rP?z~Z???Y!;???,????=?w?????q?4j??-]?K?M?[????Mx???oQ:??1?.???????cy7*_@???1?f>??P??o?????J??????????m???}?5??????????P?{?RO?????@?F??????g????????\?(oS???_^??J??%,F-[?????cK>??sj????????Py?k?H????I?AT??PR?K??????>?RIib&P?D?M??p:?Nb)????"?,H???????tQ?v*L???O?<????S?-???F??4}?????&T2?z?^?zx?z??t ?????c??(F????Bc.Jc??Y?J?>?Z?g.?? ?B??j3!?_Sz ????#????c?|??S???? +?V?a1z./?S(M??'?????z7Q??oQ-YT?Q*?L??7p,6?{ +D?w??Ch??m??~????R?+?7?U?xe???d?\???? +PB3??.?@k?]?' q??@B6?? Pb???PAs"E8?p6?b???[?h+6n'?Cx??????;w?h48a0av?B????wloT%?EX?M????F?? ?v"?F?H??]?V????#?? \@??pv???N??????.=;g/? ?G?????4????7-?`?p??X???",@MKX??a??????? ?$lGO??k?6]????u??? G?'?B8?p>??8G?2?U? ??! L???u7Z???? ???#:?S??2a-???M ? ??&?%D8?p,b1???????!??X???p???S??????s???S??z U???z?P???y M@&eI?r?? k?!l@?W?}O??!??Y ???b????3??1L??????A?@???K???D?~??o.??C??????iF8??st?G??J|nL????????F*H?gPk?l??K?? ??Le????O?\?O?????? #?_?_s?0??5?{.???FF??0??f8?3X(?b?YeV??a l?f?el3;?.????y-???????????5?$,! +????h,:?>b??$?9??? +????&?&?"M??g?F?z??G@?g?V??ygV???????6N??????&?'M?ji?M??????X?|X?4?:i??S???????????.?&_???D5?M??3??1??m?g?3??2;? ?????f????D3BT?2?H?:E?(????<??)??STW?T!?? +????U4}??dU%T ??^R/AvUJ??TUr?????S?W?qv???"{?R??W!?j??A?Z?????j ?T{???xT?E7? +??/?D??Uo???~?D?j??AjUC?(???aP\?P#???T} +??3?????1PR?S????\}??D5???j2??T5^V??t(?f??P^}??? +j???<5*?/????Z?Be??? +??%j TUK?RxU-S???Z??Cu?R??j?Z5?Z?j?|?F?]me3???????h-u?N??zjZ?jZW}???M????:?V?P?s??:???[??#??)u +??7?????64Sw?]h?????B=TA?{ ?????t??E?l0??uk???`?:?P?7??????l8?d?D????0?=b?` {???X?d`?p??w?s???? ??-|, [???s??g???]???<?Eq??J?2????:?b?????`?d???l???m??????l???????????b??fO??????J??{??R?V+v?b3?w??*?]??3??k???????F?$??WxUN?S?S?T.?r??"??????_?TAUP????"?*???0?bD&U\?*V?????*)"TiUZdQeUY?U?S?D6UAU?U%UI??*??"????????j."??S?\??j'?T?A?V?Ug?GuU]E^??zG?S=UO?_?R?D??zWT?UQH}?>/??j?(?????????h???D???j?(?F????????j?/J? j??U??$???????j??&J?j?(?f?Y????f??j??+^V??|QN-P Dy?H-?b?XTT??oD%???V???S???j?Z!???????Z?V?W?:?NTS?Q]mR?D +?Em5?6?M?R;????Q?(j??j?x]?U{E???I?U???E=uPo??????????Mu\ +?iuZ4T7?M?H?Qw?[???'???h??_DS?ZJ?|??????l?f??em?+??=??d?r?rx??{?1Z????????A?W@??XG?????m??dc?????`????F#? +????z??:??????h??`,?U?v?~8?????=0s?z????.??A}H&?G?W??(0??dBP?=??L ??d??Q??v?H& +&?3?#??ACH? +?2? +'??1??A#H&}B?W?H????(? A???4?db?????????=??"&}???o02?4?4?e?s?? .3]f&??Lv??22?ed??? ???.#?\F?p??22?ed???|??/]F??,r??ed????.#cQ?A??????????7.#K]F?uY?2???? +?????|?2??ef??????.3?\F~p??2??ed???f??-.#?\F????p??2????bd9Y?zbd??dd??????.#?\F~r??e????A??C.#?]F???s9??? ???.3?\fN???q?9?2r?e????E??K.#?]Fv#???#d)??&#W]F???\w??2r?e???????.#?\F???#??qC??F???72??w??????#?aC^#?? ?p ???tF???w?[???/??1*Aa],???b?X$????Ul???S?(v?????[&??9???Oe???/x??#??yr??R.????P>??X??w?>?{V_?}????`}` +?>?Y?????????v???=???hh?????C?a?p?c{?????=?eO?'?S???4{?=??i????g?s???<{?????^he/???????K?o?e?w??z{????do???[?????n{????g?d?????C???}??h_???????]????~h??????I?????Sp?????x?????s???\q?:???? +??s????q?:??????????y???$9O??N??wR|?c>?>?g?<>????|???9>?O????}?}!? ?P_F_?/?/????????????{??????????????M?M?M?M?M???????}??????????OO???,????s??t?s??????x +??a?X4????h?)???D78??8-F??p^L?E???.Q??Lq? +???b?X?(B?0J??}SnZ????`3?????????K??????-?Kz?bM???c??3Y;???(?+????s1??? \Db???+?I??w?C?????ZD)??&? ?? +?????G????]??=?? +???D8d?@???#??.??#?h?D?m?F?k??{???G?{T?t??W2???3? ?mQ?6e??IG5?T?>UM8?d???????sW??K*???UyU?:????5?k???u????qs>???cSG??????L??1?y??2f??6??? ???#g???(?????)??F#ut ??????Ej?O????*Le??|?????U???"????*6;????6?,#^?F?|?????????c?Y[(????P?ud?8{?u??+?%Y_6*?Il*4g??????x?'??a??????C>>???'0????a=????s??t??M8"??P +sE?(?D!Q??Q?S??@? ]?2f{????L???G?#??|l>ff????x?.??3?? ????"=?<X^?$?TV?3????,?,ce?????k?9?9?ZxNzN?8\$???\ ??? [)_???:o~o??[?[?m??xc?6o?7?m????b;??3??[?[???????vy?z???????l???????????yz???????~o ok?????#;?????g?f???Vv??d%?3V????c???n`???=?8???mn7??nf??????9????o?x??F??f??[???????=????8???M?b\?!?sk??Z???M?eS?D?)? +c?+?Jb???W1??d5?`?z?f;?2#?,fV3???|??a?4#?\f????c?5????fA????Y?,bF?1fQ???`?!v?aG?1v??`'?)v??ag?9v?]`?%v?]aW?5v??0?a?G??X?*???T$ ?H?;e?bp??`??????p?d??@?????@??V7/?Z??eq??n6T?*?@M?4?-??q}??h?[??[(????B??q??g'???Co??q?5??k??\k[_Z? ?:d?0??u????y\S???AN?"? JG??b&??????1??OB ???!}?yx ??E(??X?????P??u(???&?UZ] +?.?y'?%{*]J?RX?5?^???Iyp??$???U?;DzY???? +!?B????h?????9H?H??u?X???????0iC????%1????yx?Q???BZ?????????W(????W?mH?"ZG??=(??X?m???Ql??e?-`K0?{;<????y#& ?[??????A??m?b?l;???z?z ^???tx?5?|?5??5?r??VZ?@,^???r?]?1??5?????Q?W?` ???`???0??|%??????*???4?kh?????????f~=F?????]??>6a????nG_????? ?f5?l??3??{??P??2U??}???8k?5?????6????,????Hr???Q?6???????{f$_? ?BA?? _h?/??/?? ?? ??Z? m???BE?0??`??!? 3?/ %_??|a&?????Q?W???_> ??b!8?HV?e?Y%V??????N?K???@6?}???Qg??l[?V?ul3???!7'??+?{??0y??Cx8???x?8?@??!/?l?X?f????4?? ???,?V?e?q???????z>???xFb???3=?}N??w?{??x4 ???&?cD??????/V/?x???$? +~?]?"H?0?U+?????J??L?f?Y? +1f?p???ir!O?$7?rh?h??{??!????;y?|F???)n-?4? ?,???q?Q?! i??!?????[?;?{?? c??d????????????fnfnanec?3+???'?????*?)f+???????????1??????|??a ?YB,??b??,?fi?4YZ??,m???tX?,=?>k??e?2b?LXY?,3?$?d?9??e??bYCdC??8??o?| e??]U??'??M:?.;???????(?d??PV????B?C +??P?????b?%???8991????1#??I^???????P?eM??V"~0f!r?D?-?e?????0?8b~p??0??3????fb~p?????as??l??L ?0-$??R?q? ??#??rW?I??O:?m??ol?????G????c??=??H!p???????!??0????(????8????????????R?????2?o?????3?pX?!b?O-???q?8N?S?)??gYt?a??BT?E>?t???H??H??,?1?????D??HR?T&?i???tz =?M_H???P??c?:??ZPr?? +?1???dh??T8???`\?X?&?$? +W??0f? +0 f?-0???0??p7? ?????e?(,??a%<k?x?? +?"??`3?[? +x ????9| {?+???_z?????/=D????;??O???kG-???v? ?.?/???7??|????4%? +????C +?e??"???????h?#9?t#g????H?z?x??~Tx?????o??? ??????N??b?]??]???8????? +/?X~RP?MA??m??????o +:K??y?|]????????????^??"?]Q??|:????{????O?G?????????(?????XxOcYM?#?Q?S@?%?Q?s??!?Pt??????7?O_ +??W????? ?HX?O6/?!?y???F???w?u?G??????l??[o??(?"?Q???Z????<?k???~0???w?~?=D?fA!I>st??$???L??$?)"B??#%?=??lI?!?_?E???l%en? +o????#{9???5IM?7????????~%Ev.???m?6do?M?O??F?h?tq?????x?2tk???S}*????pz0?Cx3??:??xO????S??F?!x?,?"?? RfAe?????|? +!? +c?#{?e???Zd?f?Cv"U?g?M? ??0)???w??3$?????_`?A??_?? 3? 0????`?Af?`?A>???$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?L"??$0?|~F??'??F??x-!;?J? +??65?? +??d?Yh?+ ?I ??5 ????7?C???d???P3(?ak? +???%???#?CDHD? .????dF)???X?BG?^?UO,?????[?XV^?K9?J?????y4?Hj???W?6???>k?L?????:Er4(u~?L>???eD????? ????????@az?oTDtDW?2"*r[???wm???R???[???[#?M????R`?t??N?}4??}w??oB??G^?????=Y?M???R%??p?K????L?N?=5?3^?????2???r?D??Jz??*w????yK?Z???6???E?r?????V????HvZN??_?T??9?t?C?F?n??)????????i????.?T?-??O??Da ?b? ??N???H?0????i'? +??F?V@??|??.??sK?[?:???_h???b?6 ???f?6??`?Yz?8?V???In????q ??>??ZDLr?????s? ?????????K??Un/}??Y]??9-r??????E??^s?gi?![n???]????U??{??5sz?U??1I??? +????Q???!????8ym??7?v[J?I???W}?ci???(e>)jd????? +??L)?(? O?M7???4???? +????}#??#???jGFE?-??Fk[??@?VQS?%????1e?y?"?4??066?G;???'?w +??d???? +)z?!i7??????.?bn???)R??????>? +>??????v????N??????~???E>b?????X???FJ*4???"???.d??R????????????+F??r?$XL%????????? + ? ??????L{????z??????S?'???[O????-?/???*??]{{?rs??_?P1???7????~????r}%\J?r^??n????????5?o???Vu7{HK +??_H?-"(sw????|{??RQ?E?V?????3'"????&???L?{???????kp?4?;,r??L??8(????^??x?T??K??Rc>v??????A?Q +V.? +?.???PK?P?@??????i???9???`_????t??[???[??*;??~?J?Q???u?Y??j??%???#?wU?q??.??i?e?nd????????6$??{?%??Qa?Q???? k b???=????.U?????|? ?????5?8?4?m?K>?x???= ?a?3i??????VU 8??.}?z8??@hwK`??????WF?????y?Q???S?zoy?Y7?)-&vv?gVi{???@?l?|??P?,?G???ot?7W,??????u??!k???}?z??$O??Y?#?????h?m????U???^?????1????????????x?0i?q?vi?'s;??[?]?_i7:???_?=?????? +?I? P?K??X#???lV??n?[??0V?|\?5? +ps?/.???????]?/~?)10?'m? e???M#??9s???3]i?????M????=??4?z]?]?M>h??[51?????;?67D?w(1nbW ???F?\??7? 46?Ny#????m??K:??en???2?Q??Kg?? +%? ??6??"N???d?v??U??E???UrL???MK +????K?t??d?]n?|VjVx?h?????!?T????7?@ +?????????????S?????(??$K?A? ??0?65?S^????.?9?T)?6?[?5??/?]?& ???*f???=7Z_^??l[s?D????= +??f(?F???(?<=?Tasmyo??)??j?????????j???kk?U?????X?e????g'4K)V??????FoW\y??1?5?rO??????z?69/??hjeSQ??c???6???QV??% +?+??K??????!-????<1D???mk?q7???Y????y?M???U4$?V????S?pr??i??Um? 2^)e?6????0?euX????W?D? ???o??????q?%?R_??84:?{???)D??????|]br 5|?J???8(??3m?????q*]U?A?q?Q?o?GX7?5o\?1?&|?("??\B?p%?h)??FV?8_5Q???+wqdD`?wd?b????/ +?T??&?%rdVN????4w???N????em??????/:???_?}E[???c?5w["3???X???I??'?J?f?&?]Mf?=??????7????o?S?PPn??x???%5fu??V???'?Y?K3?~_??Q???_?}????Zw?R^??j-??L???I??>??$?,?J???h?'%5<?_???_??9???5?P:???1?????@$?T`?1? ???P+?e^?t<{??f?B?}?[A????????Y??T?,?&??U?? +1??O???Vl?}?q???{??hw?If????;]?M~\???y?j?_??? ??42??Ki??s:K??BW??v????? +>?\s~{(.?}[q???1m????Y?f??v??OU?J?????~??!??? ?n?h\??u??E?)E69??RV9L1?HqQ??;?y~7??)???Yt>?)?4(glb???G?*D5???V??/8?8?g?1C???.???{??L???(?H?  ?-?~?M???#( +endstream +endobj +192 0 obj +[ 0[ 507] 3[ 226 579] 17[ 544 533] 24[ 615] 28[ 488] 38[ 459 631] 44[ 623] 47[ 252] 60[ 520] 62[ 420] 68[ 855 646] 75[ 662] 87[ 517] 90[ 543] 94[ 459] 100[ 487] 104[ 642] 116[ 890] 121[ 519 487] 258[ 479] 271[ 525 423] 282[ 525] 286[ 498] 296[ 305] 336[ 471] 346[ 525] 349[ 230] 361[ 239] 364[ 455] 367[ 230] 373[ 799 525] 381[ 527] 393[ 525] 395[ 525 349] 400[ 391] 410[ 335] 437[ 525] 448[ 452 715] 454[ 433 453] 842[ 326] 853[ 250] 855[ 268 252] 858[ 250 250] 876[ 386] 882[ 306] 884[ 498] 890[ 498] 894[ 303 303 307 307] 919[ 401] 951[ 498] 1004[ 507 507 507 507 507 507 507] 1012[ 507] 1089[ 498] 1092[ 498 498] ] +endobj +193 0 obj +[ 226 326 401 498 0 0 0 0 303 303 0 0 250 306 252 386 507 507 507 507 507 507 507 0 507 0 268 0 498 498 498 0 0 579 544 533 615 488 459 631 0 252 0 520 420 855 646 662 517 0 543 459 487 642 0 890 519 0 0 307 0 307 0 498 0 479 525 423 525 498 305 471 525 230 239 455 230 799 525 527 525 525 349 391 335 525 452 715 433 453] +endobj +194 0 obj +[ 600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 0 0 0 0 0 0 0 600 600 600 600 600 0 0 600 600 0 0 600 0 600 600 0 0 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 600 0 600 600 600 600 600 0 600 600 0 0 600] +endobj +195 0 obj +<> +stream +x??|y\????Z?y@??? "?xd????x???(??? ??z?P3K??6??6??W??E?-A-?j???`???Zi??l????~?>? Z?z???q??_?r}?~???^{???Q;?N=??F kS????2?(??aY?C??'?=I$F +???v?9??=?R???0????{??F#G????qLB??h?hb????u??VQ???s??? ?8?(9??.]???D?2?????1o????~??RP??????y????|???s?????0?aED+/+????~W??'???#!?)?8/?{??? w;???A9c?U????M[?6??^2?x?}?????Ys???`??b>?q\????j?????U^>?o?B?h?o??Zr|?&S??ib?d?9???R????Ld6?o??&c?v|?S????nnGG)?&Q%m??DU45j???A?? +\@ +???0?8??Rz[ ?????Z-b?1"F??}/E?,?????G??E@!^~ +????a$T?Y +?o?`?X$c?v!O?,?EOA7??|??I?#??-<?;?C??Z???????????+O?L=?\?"K?A???U??A?riv?L?1??_N??o?rA-???]l&?q??0~??8L???Z??V????{?.?c:?f??P?b???R*????]4?u?im!?? ????????qO?f?BNDl +x???JP????C??t +%?9i-FR?q???D?5(?yFQ?Q$?qR7?\?Z?I???j??:??d??xK-?>??k????????????}~????}?????????@kQ?c1????8?8+{a??,4?B??!???<i????{q?H????C>?!y?{????,??t/?k?????H??????7???c?2??`-?/?x0? +??# +?.?W ?{?????T?T?q???%?s?\}i???,???$+H????%??i???7?(?o??'[h?n?~??f???:?S???j???*?G?? Z??gb??H? +?$`???^P1??D??nC?$.?`?:? z?qre/h?g?,??l~????8^?Bjn?? ??H?????h?EHa#?: +??5:?W?g???n???C?AC?Kh?n??t????|9?9?n???_?v???H9?(} *???=?????=?????????p#?????v`gD???-??T?M?,????w(JTd??~H??????????r???????<3|????KO??\???1?>~??p8???>???.V<T???s???`[?y7cF[???6??????]???gM#l?????o?-??U?????#??????!??^k?]?%??d????*??Y?? ?@-:?l?T?????zI? ????U?I??NIO?I??v??\kF{i????0?1?A??`????|??????o??}?`?Ew at n?bY???L????S?F?U????n?Hyw?`?#UzvN????Myv??;? ?*?e'v? ????_?od?t?NJ???*??? +?x?????@????)-~????=?l?_i%t?SW?b?????xl???;???k@??f?D????????i[?q?????H????O.?&?*??????U?6????(??x?????????? ??????g"Z7?z??????|??wx7P?zr.?sG?V? +Ha N???YB????%????Z??J??&? 7??8???yte!d????>ug?Z?[???^ +? ????4?????(?*o\???p???Z???(dOQX]?????h??c??v%??);E?&%??I4C??8? ;t?:?:???7?@??I???? +v? +H?b&?*??Z?;;???$KDP,???"??????j?~?A???q?Q?3????~??+??3?f????????????s???%V-y???.?ll?N?????a?C?Y$=?|?!?I^?h??b????????????6? ????6??*?#zxR?)?a???V?D???`4?g? ??????p????/?9?W +??=?s?????^?w?7?Y?^?Y????? ?M?????K?????.:???^6?+?N2??????????????l?6?????????a???l??$?=??????a???M???M??O??6}??M'??Nr'?/s??"?? ?N?????u? ?? +?3?bv?"?????[??ia??a3`?F??cG_????7>?*5J????=?G~P,??I?%0?t???.?}??????5.>!???D???Wo?????Hk???=t??#sF??7>?&L?TPHS?L??????????+#??>x?s`????}/???W???I????????????c:EGEFt??>?]X?%?mp??????I?SR?}h??_??????'?w{1?[%??Hzq??H?^\???3.)???t??d??I??$k???>?e????q???e/?????h_?????l?`??(??????????:?( ??f?3????60? ????j??`V?1;?V?9?rG??????,9??]?xj?[+.?}?:?o?????^?xXf?-?s?????YV?Z]}???y\A?\???B???"nhQ?Pt?B????7????????U?D??3?2{?L)??????W_Y????v??kmuQQ??Q???????m/,??TN??????F^???Tk ???m?7?&?u??%O?Tq??"Y?#???B???V????9?J(K???T?S????????,????tY?m?????g `????)???8?Y?Q?'-??|_??p??w?*???5?????I???,??i????Q,0,SW????.r????e?N??D?N??DJ?VO?????????o??????(m`???V???]? +?y?U?#\? +o?V? +? +??;?W@,0? +u???nP??NY?KY? +)????jF????Q}d????????U?zb?????)odC]Ho +"?Z?6w?X??N?&?????Q?M@?[n????NS8Va???T??T?*OW?to\bJ+?U"Q???????F?0W???8V?w??F?p?6L????0?????o~?x?B8?2? +?????1???'??L???0?,I??oW)????C`M?d- ? ??2P??6\?q???@????`? B?A@??Tst??=9!+'Zvby?X'?kN?U?K=?.p.?lB;I???q%??$-???-?XI???0V?????:?u?c]b;??????Ub{?),$#?d??X?4p%xx+?L??W?H??X1V?????9??U???'?? ?D???Z?1u?M` +C??!w?T}o?`?I?=?C??`)?#?H?P?A??S??` +J???/.cR?c?)?Z???HI?["?$?l"R?Y?????U?=??.J??(?????`?)?t ?j]?D at H=??i!?!??`d??!??!??????S???-? +?l?@?@ ?DP? +da??X???U?;@??V?V`5??:?8???W????????[?????K??D?+?:t?Ij?????R0??p????vtEM +>95?????M +?gjp???1S??N +N?\?%???????????}?}????\??(??S8Dao?]????` +??S?f??s?v? +??l?:???d?7#???6? ????????M???{???gu?@?I?g?+????4???????? ?v?X?ps??bnknc4??~f?,?d?7N????g???.QWq??????????Y?Hr??rDN??q7?RN???C???q???C??C9?C"??9???xw?#??;?????B????8?? ???I?????@?I?o??????NA????^H?G?? +04????? O??? F?^??W?~"???[F???HNz? +"U???j?ePX?X%R???????? ???????@?#?,G?K?u?e?8x?uV?:_T?v?-;??f???? ???????Tefz?h?2?Ve?O?M?????Y????L?/?i%??!??p??#??K?U???].r?XT??*?Z(??xo?E%??2,.??#??,w?=?Z;r????Kd?H{V--??/?]?*????m/?*?6?????????]m??_h?X6?]?5l?/do???d_[d_[d_?\?T_J???fR?T??DP ?(?V8??e?`??m??w???Q\?6???eVrFr???.?Ym?????l?-z'???? 9?>?"?ge?_E?7?;?UTT,???? +? ??2??/ ? ??:?ba??m^^?l?VQQ????V,$?? o?-D?\?Z ???Gj??j>atF?????u?J?}?Qz??gM?|1A?B?4H????l#$y????/?4v????X?kM?q????????C??V?O??h????H,???Ky9??w???$????I??i? +? ???#F?q??8???Nd????5???-z??S????KLp??:?_=??????????5?h?j????yo???? c?q +?hO???fb?K1?????xc??>??X?o! ?8 +#?U???q???'?e?*?+!?*??:??????+?&??pyn/z?bL30??E?p?wAg??p-O?zk}p?(?ln?n?|???i?t???{?yz???I3M7?5?7?7?d????7?k#.X?-?U?W?????h???M?????*bx/z??}+Wd????vA??R??z???M????H?!???$=^kC ?_}???fQD??n:'?C?i?f1M[??????_??I??A<k??? +%k[u?w?d2k?MsE?q???Iho?b????? ????@q??n?3G`? ?o??????V???}????x/?????]??%??j?? +Z/Z??!?t?????y? ?y}?7r{??sX??b?Z?(?????:??? z:?Vp5%q7??b +??2????M?????Zm8??9??~??9H2?k???tz=zy?lZ??E??2?B ???g? ?$??$?o??LNS?~V?????????e\{K??(4l??Lm???Hg8?? +????w?+x?n??0&R???3:r??vX????????A<~????+???B?z?M?`5o?;?~?N??pn%@?? ???=?pF?????LC`?F /?&???J????|X????T?*???f??H?? u-????V???G? +????;???y?H????=?E????~?^Iy???v???V)?Vo??n +?v)??8m1k:???q?7?N?eR"???(6??A??L??O?4??????lL&]F4 +?3!??????? S?y?u?1??????c,?8G[?p?w69%???'?g ?????Uk???p?g???4a6?????'??i????A_C????V????QV??fsT|ll<? 1???_o'*??Q?6?((?$"???T'-S??3h?????????r?b???M??N?S?9H'(????Lj?Gcl?w? 'tM??_?7cS??HF????Ms?Bs]i82 at K?CyD?????xq?m????}????3?"8??g????8??_zZ LS????b~6Ec?hh=??? +?}ydv?R?t?_~9N`5??????'???F?F?????F???T??????????IQ]??????Z???????^????z?? TA?,j3?+?qG??A +D4&?? ?qc?qP!>?b ?-q ???D??G?????[?????????u???f??s???s.=?O?????}b???_???x???eh???#3? ???~"5?OB?W`????}N??G? ??/?(?~Gv? #???}_???C +sD???X??uq?.+g?z?]?x?1?????G6B?p????W??4???????y?3D??????TH??q??'??? `??]??,??6,sQ???fRzYx????-*ciz~VT?e?)c?r???[V??I???o^E??m???ddY??k??????[;???????????+???H??';2??s}z +?? +0h?F8?!#4????t???A+ '???? N?g?0?!??D/8??V;??!?a??7V??#??Fr!??H??p??,:0?y?? D?^sL +?X?? ?aL???h(v?@?Q??????46US??V?g???f???M???\??j0???-??????r???o???$q~?j?j?Y??????;`K9}?F??2}C???R9???6_???vjy?????????????????????K*??}???? ???q??\?????k8???l???>?5\?.K8?a ?(????? +n???j?~?????0D??y? ?~"?=%???N???pi?<????;>>?????t?? ?~?m -9}????)2??S7]7??????? W!??^??QR??J$,???zFQ^???f???B ?i???$-????o?X(??zU??!|?|?_)alA??????4???W?A?LA?'/&4t??Br???V??HG?D?,???W:????w?v2D&??d;?????2/????|?f???nl?EZ5??|b?S?f??#?e? +????"?`d?????????P??????k7??0?nr??z??sX??IG?/*k5?-C +?e???X',??'???l?????7|?j????1p??M??$?"?X???????^??@?0-w.iu?()???%?m?N???????? +???S??M?~O?u??s?yh?F6??Pk?q?o??5 +?b??@?c?t?e?????????5?????K?xW&cS???R???C1?LF`?.?????0I ?>??p7G???]N??(?nj?? ?J??Nv?-S? +???*5?0?T??k?FX??P???d?@?B ??e?DU{??1???d-?:??O???G???U??U??=$?s?????? ???;???8????m?* +Sv[? ?@?@????-? /??j???f????/?xsD?{???????+W??Y??7????8yS?C?n????j)w?|???[??5y??sV?5?????=K?????-?L&F?}4F???\n?`??g????I???n;s??? +#f???&?N???????<~?????^?????"?4?BSF??E +'u??????????X:???/?=??7?o????S??????{???? ??v??dL?w@[?j!-~zA??e?????:???\n???y?nC?p??=?K?a]S?A??7?e??L,?^?,???????$?<1????C?jp;?y}pB?yf/n?AJ??z at Jc?????Wx??V?T?j??????L0jrFAJNS????M?QB?Ls?????;??S ]?T?JnL?r????x??\?????[???N.i~?F?\"?N&???2?Qm{?????????T?!????\T&?\??n:G?t?iV-jb??????r???c?1}?F#4?S5?UH?\FZ&??H?&???B>Gn$???????n +??43}X?????? ?l??4???[=??h???u?g??? ?J`$N??4%0? +>? ??K?w'u?:?X??3s41?v? +S??7u?S??M}# s?????t_#G????????T????????y????*} +:!?1 +%?h?{??( +??%u?????7*??z?u???????$e??{LAs9gF'?j*%~?uT?????CL@?wDy^BF?C??/?$?K?%}?|?????W??0????>e>??A&?A?^??E??????????????~?p\K?l?????J?6r???fks4;;=#?f?Y!9?d?Sb?\R(I#I?s?&f +???&???I????O0??????????' Ui%s??p??k?1??60V/?(?F????92??????N??3c9???r?l!G?N?S??dD9???"?b?r?I?????h VV?J>i???\]???8?l?????|?,?Z?X/??l???j-???k9?"?"??UIP*n????`N??Gk????n?_?Gg???G/[ ????? +????^n?_????_?x?G?@?S?J8W?e???O ????c`?< ??`x??B? +8??? n?|???-??e?????}??o?}? ?{?q~? +?@>D???????h??k??|?i???^$)m??g m?%???6*???????5^?h??F4?o<-8????e?????Wgm???y#?]?????i?]??>?$???}????F_?v????????M????a??|k??YS>??4[???C????@?$?@???K +])R&?g??UE???????p#*?? :??Pu???R??P???1frlUl[l_??a?H??J?>?d???s??'U{wVwV1??U???1?? ?i??ydv????? Oq?????'????????,D at S??DA????3 ??C??C?SC? ?????S???z +?ZC?U?b8????\?i n1?h?]?? ~???kO~d???58?HHz????,??? ?R,?P?2yN??_?'z??l:?x??v5???\m?R?AX\??????N??Mb?xd????%???!|?~??=g??L???D[y?????b ?B?nY??la?c?7Q??R-Im??"S?LF?%???T???????uctOf~fife???5#???E?D&??.{?? ?p?j?5K??Y??A??F>\yBH??>?J*?S???p?^U?@S????ey +?9Y?????'?:????f???????Z;???{6??????q???E? +c?????? +K?l:?9????????,n??>???3??g?1???`?????????]w?]???Y??)3`v?p??@H???S?~Yh>/?9? $????z?aV???E? ????[???'???s??? o;??&1??Y??? +|??tyT?????@?H??ej??? +?Ph ?,??e+2N???T?L????cX;?L S\?d$?s?K*??b??P????ID7??$U?c???????\??:???P??????Z??z8?????NEV?Qm?a???? 3??{???b4?????????A?G???/??G??7Ynm?5p????z?*????e??cnz??{?6g?#1??yrh??v??8Q?????lS?????&VH_?1????' ??x +~?N:???????gr???)??6??R?????? 7C??Rq?H????YRYR4I @?? +?-K9??D?EI?zL?5^?XtwL?<7??o:?rz?4YzJ?'QN??ER/??????H?G??mm??]????????f??j??p|??X??6M?????)?V/?mz?C:d Ss?8:aI?????{B=??F?q?u3??????bgq???V1#?!RU9?????J? +??8r?0Z??N??7????? +??m?)@??? ??3??W?|@K?Y5M?M?D?ILNlNlKX???D*?hi?c3/q???????????;??P?Y?N?U?X?h_?+? +R???e%*K?p?o?_FK??Dy+E????d?e?????}?q8?? +???>? +C?t!??-?#?kA??F????{=????J???U?i??"2??lY6ZZ[?%??-???Zd????twz~zizezk???#???$P?8M?m?Q??U0?eZ????1}i?e`l??X?????? ??*??6???+"???K?[???y8?!??)???S+???+3;!?? +?b>+????????V???????8?o?|??3?w?????`?P?>??2???m??D?f&QZo??4?.??????1?B2?"???mA???????????/7???Q?# +,? #?,i?dL??9?/fZ5?5?,?g???0NC7? W?fq;5"????-??H?'???h?????fx? +???V?&i??J?Im??]sh?vqi?f??{l+m?l?m?Mn?nsKI???Ds??A???v??x?Sr]|?;????}D^????????WA???$?n$T?????X???}A???? +oW??+????????G,?7l??????q??g=u2??w?]?W????????N?p?IW^???g????=W?C37?=??%q??f?>{?M?y??2?F?r???q?V?O?>&?D%?????fJ&???a??r) ?B V?????????^??Q +8??F?&???V4V????)?'??? +?????^???????B?i?i?Kwb???wJ;k?{:???? Oy??0??v?wC?????9?Gb??????gR/Y?8???w???v?????]?1h??u*:?Z?W?????s??????Q?E????c????????4?PO?Bm?s??@,???????Q!:l?????>d??????|X???wo??]??>x?w?_???????6???2??????????{?A:?2????? ?=F:??O?%?#?C?{rw????c??S?F???R????????G???K?? ???E??R_?????&?%?K??/???????8?LZ?Cf-_??????2v?Z??O??n?H??U?,?9BF?y^???W???#?2??????3X?Y???N?_???;?%?C??Z??Y%p??K???%??*}?????????E?"?uEY?u? +?;U??L??????WR9]???????9uN????x?|???&?^X ???? +????k??1d?? ?v%V&?:????H???pz?.???:?? -???? ?7?? m~???T????FXEv8c?)?W???????hU?i???d???:>??u +??>??R^V:j?Cf??F5?&"??/?EE0??|b?D/?qgHv???#*T???rIg??s]?$b????w???n?i???????m?pL??o????N,??????%o???-??? +?6??Fz+??ul?3If3????g?[?p???????????8 n_?????_????h??Vz??n?m??ZiZ???????_??????Z} ?????K?w???o????w?y?=o?q?=o26S????a%3 @/u??? +=?,??5?-W????? ?g???vz??????a???????!??R?E?Jw{T>?%?~??5?gw??3?>`?????"??S?WG?a]I?U]iqO???~8}f??tA????_<}h?%???r6?E?N?z???]?[??7.? K/|??c??J??/58???{[?Ht'???lw??n??`?b=??k?(????so????????w?8?^??s?,?1`? +0O??1?????^? +?:J??_???f??n0?C?K<(?`??? +_K????g?????UZ?{????_?H*?e????t?B32??????????O!2??"?y?}??"?r??????? rU?8?n"Y~???????Y^?x3??Y????&?h?(c#?,2b?_~1RY*e??)&U?H?Jbe}?d6}X???k??2?b,????XA?????A?4?????'????A????]k0 +NG&PQ?X?`??y~!?J??UQ&z?%??bx???j??5???~???q)???z??dg??~0?xY???????0??2! K??????J]?P??J??up??(?]zO@?[&!??3@??}6?d? +,??Q?xj??$??%; ?6>????L??^??H???s$K????-Cg? +???j????T|??z??+??\UG?O?7?egMZ4??~Dz?? ?jf~??8???;??nr^a???U??[??'?W?;3????U3??}j?Q?n??]?Z?bf???^?A??9???N??a}?ya????d;??;c??/D??d?Is???F?N+Z?9??"??o"2T?KQ2]???????*??x0?5Z?????td?????-0??\?+???H"? ?@???=??y???)?*5?f8???????":y{?o???????$?ZH??g??[)+??PG_*?d:??e??q??q/q???YN???'w?@e? ???\???L???3?q?9@)?]k_??-^???? /|t?A?Rm9K`????#G6??;k???;w???u????!?J??=?U????/b?8k????A?a?t??????jH^5?{?tuU?2?lC-T?"??t????|??]i[??????"?????????? +??StT?zmv??y???@k at EM??PE???l??q??Z1r?/?D????%??=(?]>|l"!???n??X(????&????L?[/6x=^f???+?w????%?;???????8??|? )pG??V(Tj?m??d??6?[_????????*?1??A??v?b~ "c+)????|f??k???S?l???1 +??N?%?st???`\8#-?_??JZ;?x?:?G@Z?>???3?*b?r????1Z?w-?a????wW-^8i? ???2[xu?x? ;?0???]3+%??p?c?,f$???!?x#??Tv?I??*?q0?Q?4T?j?^?M?"??;V^$??t ?q?^?????&?L?|?????&?&m6q? ?????j +?A}X?Ud?????Iu5?? +??f??Y???????hq?[?? o%??? +K??M?y? +?2????~?8??'??`?r/????? ?Mf??????????|?????}??T?????)???{&?{^B?52i??Y??^??)???? +ZA'??(F?$????U???fK??9?4z??g?l???? +?`6$ ?a,?(%j-?4???p`?|?_?d;?3?????|?d? 9? ?????????|???|c?;I\???t?H?m??@r??C$>I,,????V??S?LG?? ?+?zs \l???f-\f??5f?L?f??*z? ?$????e0???\?d??X?4%-??.??h?@???6?R'3?b?:?5`????~??C? ???C? ?08????arj???r?6???Lf?$??!???l??fY??1??C???*N?y,?u?~????@???70??7?2????????L?@??D??Q????Q?????1Y?xu??a+???pJ#???F???19??v?X?0?_+???dq*PyG??b)|?-W?j?? +`?=\?????B.?%?? +\ag?8??????XGY?????[???wY????`?+?/?5?$oIZ%i?7=b?+?W??????+??????x)?:?]2/K??I?Fzu?Tn?^k0"?c@?:K????[dD?5Y&? ?????pH, +??dR??PH??"??y+?I8?[0R????U????x??"T????tqq?????v? ?Y????'nUf??lW?P?UrJw?h/?????f,?ea???#V???w??t??????w????6?4?/?R??????!?~E??????A??{???1?????'? t??8?1??>?>?=??U ?y?]C?8?W q}?j?%??W?}??W?Gd@?g??Ie :??QX?v????K??G?1n|?S???r7?????????o??]?/ +?<7{?????y?????4??\0.?? ??????G??wL.?\??0q ??0?@a ??0?@a ??0?@??:?????H~ ?????????)?3??Ke?E?p??+r?(? ? ????2?B?{??Q)zL?5P???????????Bq??c?S?Z??Rzd?E1eP?9e?H?+?2*??? +??)?F.??2??2se???(?@?X?????o(N~+???Cq???'?U4? ??)~???%\?C ??P??>?pEN?%\?C ??P??>?p?%\?C?ks?O~???2Q\??o$?*@q3i?*Aq+???*??r???3J?#'?M?Gq/??Tg^N?@??gP????)??2??s?????>'_?}?'????#?? +??h.j?x jC??hj?9u??? ??????????&@??p}'ZDSM7A?%pl??????n?? ?R??i??NZw#?/?????64??.Rk+?Q?n??!EZ"??k?)??????5???r g???v5??q?\7Cn ma?? ??S???5d?Wu?AP?? ???3???v?Bt????_?}<<?]??pn)my?Qp?B -9?^'??]?b::RI#0?????I????~???,zm?WG@????????9?N???2??(??Rz??p??}?4);Z??RB#-??Fz??????q???,?0[??? u +?<9)?B???bBo?z?u?v?^R???K??7??n??JM]??????}/%?mW:???H??I???R?????6???Q???J=???W?d????W;??bz%i??4M=???-P?;?? !YZZ%L??$?ikm?\??$??u??u4t6?????--?????v.&4-j?X???k[????!?mZ*4/?????? +???9W?Khn:???????F?????&???1??!???av???N?zQ|B???[:?? ????%M?H}??2?`L????Ems: o????C?????8?miCG?0??????cj?baA?2a??&h????W?? g4{+?+?????m??b??W?Tq +??*F>Z1?q?q??WL?;NQ??fE ? ?????_??)??S?#?,P#VY? +E???D,w +w-??????M|7????\371?|?1??k|??Vn ?K??P???Y??|5w;???1????@??7 at c{S?_?U?3 ?3???uN?GW?+?XWxR?B??\w5?#u?6?5??????&???u??????????O???o?~ b?c?O?(dJ#?v9?????Y?6?iVJ?4t??8?'M. B at y?D?#5?:H +?1?'??c??1??|???$B ?XD?? ?/??????????Y@??@?W???E:?{2"???xd???)??5R???? ??A~G~ Z??@k?F???^D?qt}???z\??q5?G??x:n?-R??J?C?5?b????X-?f??????r? "~???AZqF??o????????S8[????????:?????=??{?t??????SO?t?????{????lR=y????J??hI?P.?f +??a??[8Hs +???o?O????#B?<222=??A???6???Fr?x?T[?>)?o????R\?]*W??????K?!&e??????e?? Q???K R??tTX???pH?%?(?L|3&??5???l@V^?@????R5I'?R&??< }, +P?@?L?Q*O?r??P?.6+??z??V_???? }??t+????;?/??|?>t?c?E?????H?/M?U????@,??|(??Iq +??Q?%?O???k?2??X?C<tItM?O?H?Kq??>)?)?um??J??0?8????znp??E???B\ P +??k?l?* +== +;j +Xg-`E?Bk?z??G;??h?z 1????|&??_??7?+?G????oc????g????Z8?????|>???????????}???\tO????????????lwtk?H?I???n????????????}??>?z?{[l????+??U??????-???????&K?9??????f??KI???b?_@ ? `? +0????"?0?????s???I }E???hD??v?+hE? ?@c??t#?@/?J>? ?s?&l>t#?????v?~(?G?F??l???<y%r r(r$?~?D?t?38??|]%??tG?F????F?Q?????wE???l????A?d????0 +??9???a?#??#??Q???HCGDKG?DG?LG?#2?????`D?0< +?l0"a:"Q:"???w??/s?(!?6p???V??????]$?T????????????"???? ?h?W?W?V?F?T??MB +JoJ?UgE??\z$X?????md?a6?]?lB?????Z?A?adT?N?6??G?G?M}L??????r??R?\?S???[?????+Z>?N???B?h??dMd?Q ??X.???^ +? ???Vq??(???%?????!???v???v??fq??V?%'?B?.?(????[_#????S?z8??? ?????v0 u?la^???w?U?g^cN???[??? ????(A?j??lxy???s???Y?y??????P??^3? ??y???z?9 +??]??:???2??&???????????Y??UI%??*?)Q?L?R*?J"?$??B3uC2???L?L!???/.??o???q??????????~????????????? ?o????fW?q?? ,t????? ??o9?2?2?2?????"?W?2l?,&n71?[?-???m??{X??[>?C?4????Y??3??V?N?,N ?:?,?bG6h??????-??o?Jv??????*????{e?ZyV?????"@?(??P(?(??B-@?6C?#T?O?bA? ?acY??j!d?8G?@_9~??{q?}?u????$?7a ?f~#?d )&?M??zU?????B*??LN??|??jW^????T/?i?R&/?????k???2??J%I?U?k?W???? ????q?"6?h?O?O??yV~???K?Kll???????.??y??zROT?zQ/dsF??????fG0p +?;?h??????r +?w?l?? +??t?vf?????5??S???Bn?Y9`e?A 0??? R? ????xk h +?a??=?v??0vB? +????X??9?~? ???c5?)?? 8???*?I?P??A/ ??r????k|??n?H? ?'K?}g?3Imf?B??!?????VQ.??'V?F???w~?\?zQ<-?e???V? ;?|????5?c[vn?fe?Rc??ju?????n+?U?u??k???l?W?,nf5?)?D???\????*??~G^?K\?W6O??q?S~????8????????9yi??{??/??|?!J??}Zn?????F???? +?_?4 +dKn?? +?? m?]?+/?/?y??/??r? ?g??????:?&???&? ?Y=????x ???J?K`t????Q?W9???v??bv??)???@}???A;?\?????>Y??P?B?g?=????v?F?ir?y?H?1i??-?i!?F ??? e 7?????+?X??)"2e??_?????? 2F???-??Y +w???A???q?.t,??SL??? ??????0????s??Y}9???u_??L???>Q,W>?%????*?5?s???? 2??????=?????? ?#g?8.Y ??r/x??=#Tf???V e}Kq ~N?<?b??????C+?????\? +?LVa????????y?????>??*??<-?q??^??m?j?? V??{:$hu?1??A$???????? +?-???.??????????4>?/?B|??????)~?_???????4"?1iB??+iA?w??t'?????!?d #?H$NF??dC????x?@&?Id +?J??T2??% ?d)YNV?M$?? {?~r?"GH>9E??K?)"??}???L~!??{?Y$"U???jRu??TW????????@??IR?Yr?ZH??^R_??4??Z??? J?pEc?hO'?$:?N?3?:???%4?????F??n???>?GS???l?MXo??uXoX` $???>???E????????&?Op???x"??'?IHO?S?S?T6Rq*??3?L?????????yH/??P5?/Fzx^???J???x-??????o?P +? oBF?G?#????m???w??8?"c|D&?f?Z|Gu?)| +??s???/?K?_???.?El????????z?~???'? ?????? +~??#[? ?5?y?????O?????C + ?Q?]??8G?@??r$MIS????D???? iMZ???=i??I'? ???\?7[?4#~??????@?Z? ?Z?P6K?"??`????p??D??-?"Q??&??=?!1????X???fsbGG?P'?f??d??? d?JI"? I$ y??d2?F?I2?"??4?MR?L??? 3??C? _2??G~$???d Y??I?B=?*? +??d#??l![P/??lG??n??}l??? P_?G?P?r?FAl\??`R@ +Pr??E!?"??B?Ur + 7?i )&?h?G????!y???S? +!/??o()!%(??#??0??|B'?HI&?P?$??h??%i?hIW?E#$???RL?H?L2C??9[U??,%K4Z?'?Cc$k??I??-+???_??Pj???????$'4^j*5E?fR3? 5???D???M????CIR??$K?h?4H????J?5iM4??P4?????t???C)4???T:?B3?P:???4??#?4?????:??Es?x:???t"?G'?Ih>?J??4????t6???ytJ???"?]L? ??.C??J?-?k?Z??n?P&??????mt????.????\????Jz?B??z???E???q=l?? ??</?8??k?V????a?? ?Y|_?7p1??2?|?Kd??????"?HG???/???&?HD???dYD?ed-??l#?H.?Q?#'?r?\!??-r?< O?s???%I~(Ql.?K5%G)P +?B?)?K???t???4???q4???Y4?.?4???kh6?L???t/=@?3?C??0?L&?a?0p????4????OU??4??(????6???PU?!]??j?Cz?C??C?C??? ??j????? ? +??o???2?J?#???I3???%H?C????%??@2??"id!? ??????d+?I??4?9JN????R??4?4q]IO2?I[????I!? @?%?? +?W?W?g +???????}??????F?>?????k ??`? `?)`?0?t??? ? +???????? +????????????H?H?H?H? H?H? +H?????? +??x? +??OB] +T?~????}??S?&????6???5?6??hVT{?"?v?T?vr??o? +13??f???*?H??k??4H?LHtY?????N?b?e:?5???????????@-yP?Us&3??f|?'???o??cu???]?d&vT$?????L, +?XD??7O?v??????Z+?U%??R??rh???p?7o5&?????u?????????G?%:?*????W?R?S?uu?u?o???Odd?Y??1?#??b?(Lkh?:+ +g??UC?Q????????(Q0Wo? ?(TE??)& +Z+?????e???K???x??6?????y?w?.?2k?=????A?C?? +?,;??_??'??g.M?sdh\??&?oV??K??(?*?9)X?????Mh?h`??AUy??LF?}(L?AGf(3(09??zo???p????.o?BA???2??d5???]?q\?z/O???P??vd????=?F#?G'??;???Jlw????w?yKs?#_??_?=???~?x']ZS;?J???????jD????3Z,??e???M?o=?Vevrn?m????????z +???s????ef????>?O?Nh3t??=;??p:?????>_????????K?????uy?]??.Y??[\w????? C,?? ?????+A)=?j5~??03Q+?????V?\_h?}???$3m??>%m??*????r0?????OOh??8&?qL?r? ??'? +I??#?x???? cGGG?&M8?(????6??????/e???????????":?????{r??N}`?t????A??i??????m:?o^=???g??Mh?5;N?? ?:FM??????????;h??i????????73?????!?~????u??I?I??t??????i?F????KV_???u?c??N?4?8??G??_????X?m?????^-CZ??L????"????v??.??~???U?? ????llo=?g?C?????%???!}Y?B +]??Faw?t?`P?+???a?(?????;{??v???a|?=}N? ????N????e?7??1?i??B9??S$??:?|A????????0?tQ?s5?^5 +???*G=??? + ???p??a??G?#k?pS?f:g6??xpLLT?F?B??????!??E + +??F??[>?Q;_6?2??SE ?????????\!N?+w8j???9??)?W??igs&$7???a?]???v???8??vw??.vZ?kqz????c? +??n&???~+?{???????=??????y???m?????|D?????i??g?>??????4:?????v??a????]/??????M?5?CtN{}`???tp?S??6?~??l??!?!e????$??t??'/??dg???u??V??-]W????K?????2??????n +??O??(I?{??m?R??Y???????I:%??#???U$=%?'7??.?wR???Ii???u*??hW???? +?/???w?????w,??7S???>?1{???v?[;R6n(?2??s??a??;;\Hz?Zu??????{??}?????f????T???/M?u2?p?sFu???tK??=bI???[?????d? +??n]/#hZU?c?Fw?sf??f^???T?6u??W??}ln?K??z??????E????h6?mz?{;???i?????s?????&#b'1A?c???)IHZx C ?h4???? +????j +*8?nIeA~zQbAF?ZY????`???D?=???????? +?ujr?????;?2r??o9_R?????v????v>?????R???0 ??4K?)?[\?i?vGu?e??Y??/?p??K{??O&????%??^?|???~s??d?????o??v????????eg??'*???i??>?e??????LA???[??>???*S???R????v#???L?????W?5??p?e???y,p??PY~?|?Ao?????????e???W??JGgf?s??????8^?4U5CR?`?{}?????????,c`?lg +endstream +endobj +196 0 obj +[ 278] +endobj +197 0 obj +<<00A4E3F33C40734D8AB578A511420E86>] /Filter/FlateDecode/Length 420>> +stream +x?5?GO?a????b??b?K??????b? +?]? ??w????1???????t?B?xy??bN&?If?DQ?ZZb???V??9?HodT? ?2k?????r?y?? +??Z???-~????J??(%?Rn?/???o?U??4??C +??-J0???h???4tBgtAW?#qd??# =???}???E.???` a0?`(??????(?k??h??X??xL@?1 L?dT` +?b?cfbfc?b*Q??X?j,?",?,?2,? +??*??????zl?Fl at -j???[?;???{???'qu8??8??8??8????)???E??<qq ?qWq +?q?????[??;??{x?Gh?c<00A4E3F33C40734D8AB578A511420E86>] >> +startxref +151332 +%%EOF +xref +0 0 +trailer +<<00A4E3F33C40734D8AB578A511420E86>] /Prev 151332/XRefStm 150709>> +startxref +155452 +%%EOF \ No newline at end of file Modified: SwiftApps/DSSAT/bin/RunDSSAT.sh =================================================================== --- SwiftApps/DSSAT/bin/RunDSSAT.sh 2011-09-08 15:31:29 UTC (rev 5095) +++ SwiftApps/DSSAT/bin/RunDSSAT.sh 2011-09-08 15:52:04 UTC (rev 5096) @@ -18,10 +18,8 @@ cp /gpfs/pads/projects/CI-SES000031/csm/dssat.papia/bin/*.EXE . cd data - ../DSSAT040.EXE A H1234567.MZX > RESULT.OUT - cd .. mkdir output From ketan at ci.uchicago.edu Wed Sep 14 11:25:42 2011 From: ketan at ci.uchicago.edu (ketan at ci.uchicago.edu) Date: Wed, 14 Sep 2011 16:25:42 -0000 Subject: [Swift-commit] r5109 - in SwiftApps/DSSAT: . beagle beagle/bin beagle/bin/run beagle/bin/run/data beagle/bin/run/output Message-ID: <20110914162520.B195C9CD16@svn.ci.uchicago.edu> Author: ketan Date: 2011-09-14 11:25:03 -0500 (Wed, 14 Sep 2011) New Revision: 5109 Added: SwiftApps/DSSAT/beagle/ SwiftApps/DSSAT/beagle/bin/ SwiftApps/DSSAT/beagle/bin/RunDSSAT.sh SwiftApps/DSSAT/beagle/bin/gridCheck.sh SwiftApps/DSSAT/beagle/bin/list.txt SwiftApps/DSSAT/beagle/bin/run/ SwiftApps/DSSAT/beagle/bin/run/DSSAT040.EXE SwiftApps/DSSAT/beagle/bin/run/MINPT040.EXE SwiftApps/DSSAT/beagle/bin/run/data/ SwiftApps/DSSAT/beagle/bin/run/data/DATA.CDE SwiftApps/DSSAT/beagle/bin/run/data/DETAIL.CDE SwiftApps/DSSAT/beagle/bin/run/data/DSSATPRO.FLE SwiftApps/DSSAT/beagle/bin/run/data/GCOEFF.CDE SwiftApps/DSSAT/beagle/bin/run/data/GRSTAGE.CDE SwiftApps/DSSAT/beagle/bin/run/data/H1234567.MZX SwiftApps/DSSAT/beagle/bin/run/data/JDATE.CDE SwiftApps/DSSAT/beagle/bin/run/data/MODEL.ERR SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.CUL SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.ECO SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.SPE SwiftApps/DSSAT/beagle/bin/run/data/PEST.CDE SwiftApps/DSSAT/beagle/bin/run/data/SOIL.CDE SwiftApps/DSSAT/beagle/bin/run/data/WEATHER.CDE SwiftApps/DSSAT/beagle/bin/run/data/X1234567.MZX SwiftApps/DSSAT/beagle/bin/run/output/ SwiftApps/DSSAT/beagle/bin/run/output/RESULT.OUT SwiftApps/DSSAT/beagle/sites.beagle.xml Log: added DSSAT binaries compiled for beagle Added: SwiftApps/DSSAT/beagle/bin/RunDSSAT.sh =================================================================== --- SwiftApps/DSSAT/beagle/bin/RunDSSAT.sh (rev 0) +++ SwiftApps/DSSAT/beagle/bin/RunDSSAT.sh 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,37 @@ +#!/bin/bash + +rm -rf run +mkdir run +cd run +mkdir data +out=$1 + +#copy files of grid cell into data directory +for i in $2 +do + cp ../$i data; +done + +cp /gpfs/pads/projects/CI-SES000031/csm/sim/* data +cp /gpfs/pads/projects/CI-SES000031/csm/*.CDE data + +cp /gpfs/pads/projects/CI-SES000031/beagle/*.EXE . +cd data + + +#../DSSAT040.EXE A H1234567.MZX > RESULT.OUT +#strace -o strace.txt ../DSSAT040.EXE A X1234567.MZX > RESULT.OUT +../DSSAT040.EXE A X1234567.MZX > RESULT.OUT +#../DSSAT040.EXE A $3 > RESULT.OUT + +cd .. +mkdir output + +cp data/*.OUT output +cp data/strace.txt output +cp data/RESULT.OUT output + +tar cf ../$out output + +exit + Property changes on: SwiftApps/DSSAT/beagle/bin/RunDSSAT.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/gridCheck.sh =================================================================== --- SwiftApps/DSSAT/beagle/bin/gridCheck.sh (rev 0) +++ SwiftApps/DSSAT/beagle/bin/gridCheck.sh 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,12 @@ +#ls $2 -1 | head >> $1; + +n=$(ls $2 -1 | head -1000); + +for i in $n +do + if [[ -f $2$i/SOIL.SOL && $(sed -n '6p' $2/$i/GENERIC1.WTH | grep 'NA'|wc -l) != 1 ]]; + then + echo $i >> $1; + fi +done + Property changes on: SwiftApps/DSSAT/beagle/bin/gridCheck.sh ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/list.txt =================================================================== --- SwiftApps/DSSAT/beagle/bin/list.txt (rev 0) +++ SwiftApps/DSSAT/beagle/bin/list.txt 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,116861 @@ +2130447 +2130448 +2130449 +2130450 +2130451 +2130452 +2130453 +2130454 +2130455 +2130456 +2130457 +2130458 +2130459 +2130460 +2130461 +2130462 +2130463 +2130464 +2130465 +2130466 +2130467 +2130468 +2130469 +2130470 +2130471 +2130472 +2130473 +2130474 +2130475 +2130476 +2130477 +2130478 +2130479 +2130480 +2130481 +2130482 +2130483 +2130484 +2130485 +2130486 +2130487 +2130488 +2130489 +2130490 +2130491 +2130492 +2130493 +2130494 +2130495 +2130496 +2130497 +2130498 +2130499 +2130500 +2130501 +2130502 +2130503 +2130504 +2130505 +2130506 +2130507 +2130508 +2130509 +2130510 +2130511 +2130512 +2130513 +2130514 +2130515 +2130516 +2130517 +2130518 +2130519 +2130520 +2130521 +2130522 +2130523 +2130524 +2130525 +2130526 +2130527 +2130528 +2130529 +2130530 +2130531 +2130532 +2130533 +2130534 +2130535 +2130536 +2130537 +2130538 +2130539 +2130540 +2130541 +2130542 +2130543 +2130544 +2130545 +2130546 +2130547 +2130548 +2130549 +2130550 +2130551 +2130552 +2130553 +2130554 +2130555 +2130556 +2130557 +2130558 +2130559 +2130560 +2130561 +2130562 +2130563 +2130564 +2130565 +2130566 +2130567 +2130568 +2130569 +2130570 +2130571 +2130572 +2130573 +2130574 +2130575 +2130576 +2130577 +2130578 +2130579 +2130580 +2130581 +2130582 +2130583 +2130584 +2130585 +2130586 +2130587 +2130588 +2130589 +2130590 +2130591 +2130592 +2130593 +2130594 +2130595 +2130596 +2130597 +2130598 +2130599 +2130600 +2130601 +2130602 +2130603 +2130604 +2130605 +2130606 +2130607 +2130608 +2130609 +2130610 +2130611 +2130612 +2130613 +2130614 +2130615 +2130616 +2130617 +2130618 +2130619 +2130620 +2130621 +2130622 +2130623 +2130624 +2130625 +2130626 +2130627 +2130628 +2130629 +2130630 +2130631 +2130632 +2130633 +2130634 +2130635 +2130636 +2130637 +2130638 +2130639 +2130640 +2130641 +2130642 +2130643 +2130644 +2130645 +2130646 +2130647 +2130648 +2130649 +2130650 +2130651 +2130652 +2130653 +2130654 +2130655 +2130656 +2130657 +2130658 +2130659 +2130660 +2130661 +2130662 +2130663 +2130664 +2130665 +2130666 +2130667 +2130668 +2130669 +2130670 +2130671 +2130672 +2130673 +2130674 +2130675 +2130676 +2130677 +2130678 +2130679 +2130680 +2130681 +2130682 +2130683 +2130684 +2130685 +2130686 +2130687 +2130688 +2130689 +2130690 +2130691 +2130692 +2130693 +2130694 +2130695 +2130696 +2130697 +2130698 +2130699 +2130700 +2130701 +2130702 +2130703 +2130704 +2130705 +2130706 +2130707 +2130708 +2130709 +2130710 +2130711 +2130712 +2130713 +2130714 +2130715 +2130716 +2130717 +2130718 +2130719 +2130720 +2130721 +2130722 +2130723 +2130724 +2130725 +2130726 +2130727 +2130728 +2130729 +2130730 +2130731 +2130732 +2130733 +2130734 +2130735 +2130736 +2130737 +2130738 +2130739 +2130740 +2130741 +2130742 +2130743 +2130744 +2130745 +2130746 +2130747 +2130748 +2130749 +2130750 +2130751 +2130752 +2130753 +2130754 +2130755 +2130756 +2130757 +2130758 +2130759 +2130760 +2130761 +2130762 +2130763 +2130764 +2130765 +2130766 +2130767 +2130768 +2130769 +2130770 +2130771 +2130772 +2130773 +2130774 +2130775 +2130776 +2130777 +2130779 +2130780 +2130781 +2134766 +2134772 +2134773 +2134774 +2134775 +2134776 +2134777 +2134778 +2134779 +2134780 +2134781 +2134782 +2134783 +2134784 +2134785 +2134786 +2134787 +2134788 +2134789 +2134790 +2134791 +2134792 +2134793 +2134794 +2134795 +2134796 +2134797 +2134798 +2134799 +2134800 +2134801 +2134802 +2134803 +2134804 +2134805 +2134806 +2134807 +2134808 +2134809 +2134810 +2134811 +2134812 +2134813 +2134814 +2134815 +2134816 +2134817 +2134818 +2134819 +2134820 +2134821 +2134822 +2134823 +2134824 +2134825 +2134826 +2134827 +2134828 +2134829 +2134830 +2134831 +2134832 +2134833 +2134834 +2134835 +2134836 +2134837 +2134838 +2134839 +2134840 +2134841 +2134842 +2134843 +2134844 +2134845 +2134846 +2134847 +2134848 +2134849 +2134850 +2134851 +2134852 +2134853 +2134854 +2134855 +2134856 +2134857 +2134858 +2134859 +2134860 +2134861 +2134862 +2134863 +2134864 +2134865 +2134866 +2134867 +2134868 +2134869 +2134870 +2134871 +2134872 +2134873 +2134874 +2134876 +2134877 +2134878 +2134879 +2134880 +2134881 +2134882 +2134883 +2134884 +2134885 +2134886 +2134887 +2134888 +2134889 +2134890 +2134891 +2134892 +2134893 +2134894 +2134895 +2134896 +2134897 +2134898 +2134899 +2134900 +2134901 +2134902 +2134903 +2134904 +2134905 +2134906 +2134907 +2134908 +2134909 +2134910 +2134911 +2134912 +2134913 +2134914 +2134915 +2134916 +2134917 +2134918 +2134919 +2134920 +2134921 +2134922 +2134923 +2134924 +2134925 +2134926 +2134927 +2134928 +2134929 +2134930 +2134931 +2134932 +2134933 +2134934 +2134935 +2134936 +2134937 +2134938 +2134939 +2134940 +2134941 +2134942 +2134943 +2134944 +2134945 +2134946 +2134947 +2134948 +2134949 +2134950 +2134951 +2134952 +2134953 +2134954 +2134955 +2134956 +2134957 +2134958 +2134959 +2134960 +2134961 +2134962 +2134963 +2134964 +2134965 +2134966 +2134967 +2134968 +2134969 +2134970 +2134971 +2134972 +2134973 +2134974 +2134975 +2134976 +2134977 +2134978 +2134979 +2134980 +2134981 +2134982 +2134983 +2134984 +2134985 +2134986 +2134987 +2134988 +2134989 +2134990 +2134991 +2134992 +2134993 +2134994 +2134995 +2134996 +2134997 +2134998 +2134999 +2135000 +2135001 +2135002 +2135003 +2135004 +2135005 +2135006 +2135007 +2135008 +2135009 +2135010 +2135011 +2135012 +2135013 +2135014 +2135015 +2135016 +2135017 +2135018 +2135019 +2135020 +2135021 +2135022 +2135023 +2135024 +2135025 +2135026 +2135027 +2135028 +2135029 +2135030 +2135031 +2135032 +2135033 +2135034 +2135035 +2135036 +2135037 +2135038 +2135039 +2135040 +2135041 +2135042 +2135043 +2135044 +2135045 +2135046 +2135047 +2135048 +2135049 +2135050 +2135051 +2135052 +2135053 +2135054 +2135055 +2135056 +2135057 +2135058 +2135059 +2135060 +2135061 +2135062 +2135063 +2135064 +2135065 +2135066 +2135067 +2135068 +2135069 +2135070 +2135071 +2135072 +2135073 +2135074 +2135075 +2135076 +2135077 +2135078 +2135079 +2135080 +2135081 +2135082 +2135083 +2135084 +2135085 +2135086 +2135087 +2135088 +2135089 +2135090 +2135091 +2135092 +2135093 +2135094 +2135095 +2135096 +2135097 +2135098 +2135099 +2135100 +2135101 +2135102 +2139084 +2139085 +2139086 +2139092 +2139093 +2139094 +2139095 +2139096 +2139097 +2139098 +2139099 +2139100 +2139101 +2139102 +2139103 +2139104 +2139105 +2139106 +2139107 +2139108 +2139109 +2139110 +2139111 +2139112 +2139113 +2139114 +2139115 +2139116 +2139117 +2139118 +2139119 +2139120 +2139121 +2139122 +2139123 +2139124 +2139125 +2139126 +2139127 +2139128 +2139129 +2139130 +2139131 +2139132 +2139133 +2139134 +2139135 +2139136 +2139137 +2139138 +2139139 +2139140 +2139141 +2139142 +2139143 +2139144 +2139145 +2139146 +2139147 +2139148 +2139149 +2139150 +2139151 +2139152 +2139153 +2139154 +2139155 +2139156 +2139157 +2139158 +2139159 +2139160 +2139161 +2139162 +2139163 +2139164 +2139165 +2139166 +2139167 +2139168 +2139169 +2139170 +2139171 +2139172 +2139173 +2139174 +2139175 +2139176 +2139177 +2139178 +2139179 +2139180 +2139181 +2139182 +2139183 +2139184 +2139185 +2139186 +2139187 +2139188 +2139189 +2139190 +2139191 +2139192 +2139193 +2139194 +2139195 +2139197 +2139198 +2139199 +2139200 +2139201 +2139202 +2139203 +2139204 +2139205 +2139206 +2139207 +2139208 +2139209 +2139210 +2139211 +2139212 +2139213 +2139214 +2139215 +2139216 +2139217 +2139218 +2139219 +2139220 +2139221 +2139222 +2139223 +2139224 +2139225 +2139226 +2139227 +2139228 +2139229 +2139230 +2139231 +2139232 +2139233 +2139234 +2139235 +2139236 +2139237 +2139238 +2139239 +2139240 +2139241 +2139242 +2139243 +2139244 +2139245 +2139246 +2139247 +2139248 +2139249 +2139250 +2139251 +2139252 +2139253 +2139254 +2139255 +2139256 +2139257 +2139258 +2139259 +2139260 +2139261 +2139262 +2139263 +2139264 +2139265 +2139266 +2139267 +2139268 +2139269 +2139270 +2139271 +2139272 +2139273 +2139274 +2139275 +2139276 +2139277 +2139278 +2139279 +2139280 +2139281 +2139282 +2139283 +2139284 +2139285 +2139286 +2139287 +2139288 +2139289 +2139290 +2139291 +2139292 +2139293 +2139294 +2139295 +2139296 +2139297 +2139298 +2139299 +2139300 +2139301 +2139302 +2139303 +2139304 +2139305 +2139306 +2139307 +2139308 +2139309 +2139310 +2139311 +2139312 +2139313 +2139314 +2139315 +2139316 +2139317 +2139318 +2139319 +2139320 +2139321 +2139322 +2139323 +2139324 +2139325 +2139326 +2139327 +2139328 +2139329 +2139330 +2139331 +2139332 +2139333 +2139334 +2139335 +2139336 +2139337 +2139338 +2139339 +2139340 +2139341 +2139342 +2139343 +2139344 +2139345 +2139346 +2139347 +2139348 +2139349 +2139350 +2139351 +2139352 +2139353 +2139354 +2139355 +2139356 +2139357 +2139358 +2139359 +2139360 +2139361 +2139362 +2139363 +2139364 +2139365 +2139366 +2139367 +2139368 +2139369 +2139370 +2139371 +2139372 +2139373 +2139374 +2139375 +2139376 +2139377 +2139378 +2139379 +2139380 +2139381 +2139382 +2139383 +2139384 +2139385 +2139386 +2139387 +2139388 +2139389 +2139390 +2139391 +2139392 +2139393 +2139394 +2139395 +2139396 +2139397 +2139398 +2139399 +2139400 +2139401 +2139402 +2139403 +2139404 +2139405 +2139406 +2139407 +2139408 +2139409 +2139410 +2139411 +2139412 +2139413 +2139414 +2139415 +2139416 +2139417 +2139418 +2139419 +2139420 +2139421 +2139422 +2143403 +2143404 +2143405 +2143406 +2143412 +2143413 +2143414 +2143415 +2143416 +2143417 +2143418 +2143419 +2143420 +2143421 +2143422 +2143423 +2143424 +2143425 +2143426 +2143427 +2143428 +2143429 +2143430 +2143431 +2143432 +2143433 +2143434 +2143435 +2143436 +2143437 +2143438 +2143439 +2143440 +2143441 +2143442 +2143443 +2143444 +2143445 +2143446 +2143447 +2143448 +2143449 +2143450 +2143451 +2143452 +2143453 +2143454 +2143455 +2143456 +2143457 +2143458 +2143459 +2143460 +2143461 +2143462 +2143463 +2143464 +2143465 +2143466 +2143467 +2143468 +2143469 +2143470 +2143471 +2143472 +2143473 +2143474 +2143475 +2143476 +2143477 +2143478 +2143479 +2143480 +2143481 +2143482 +2143483 +2143484 +2143485 +2143486 +2143487 +2143488 +2143489 +2143490 +2143491 +2143492 +2143493 +2143494 +2143495 +2143496 +2143497 +2143498 +2143499 +2143500 +2143501 +2143502 +2143503 +2143504 +2143505 +2143506 +2143507 +2143508 +2143509 +2143510 +2143511 +2143512 +2143513 +2143514 +2143515 +2143517 +2143518 +2143519 +2143520 +2143521 +2143522 +2143523 +2143524 +2143525 +2143526 +2143527 +2143528 +2143529 +2143530 +2143531 +2143532 +2143533 +2143534 +2143535 +2143536 +2143537 +2143538 +2143539 +2143540 +2143541 +2143542 +2143543 +2143544 +2143545 +2143546 +2143547 +2143548 +2143549 +2143550 +2143551 +2143552 +2143553 +2143554 +2143555 +2143556 +2143557 +2143558 +2143559 +2143560 +2143561 +2143562 +2143563 +2143564 +2143565 +2143566 +2143567 +2143568 +2143569 +2143570 +2143571 +2143572 +2143573 +2143574 +2143575 +2143576 +2143577 +2143578 +2143579 +2143580 +2143581 +2143582 +2143583 +2143584 +2143585 +2143586 +2143587 +2143588 +2143589 +2143590 +2143591 +2143592 +2143593 +2143594 +2143595 +2143596 +2143597 +2143598 +2143599 +2143600 +2143601 +2143602 +2143603 +2143604 +2143605 +2143606 +2143607 +2143608 +2143609 +2143610 +2143611 +2143612 +2143613 +2143614 +2143615 +2143616 +2143617 +2143618 +2143619 +2143620 +2143621 +2143622 +2143623 +2143624 +2143625 +2143626 +2143627 +2143628 +2143629 +2143630 +2143631 +2143632 +2143633 +2143634 +2143635 +2143636 +2143637 +2143638 +2143639 +2143640 +2143641 +2143642 +2143643 +2143644 +2143645 +2143646 +2143647 +2143648 +2143649 +2143650 +2143651 +2143652 +2143653 +2143654 +2143655 +2143656 +2143657 +2143658 +2143659 +2143660 +2143661 +2143662 +2143663 +2143664 +2143665 +2143666 +2143667 +2143668 +2143669 +2143670 +2143671 +2143672 +2143673 +2143674 +2143675 +2143676 +2143677 +2143678 +2143679 +2143680 +2143681 +2143682 +2143683 +2143684 +2143685 +2143686 +2143687 +2143688 +2143689 +2143690 +2143691 +2143692 +2143693 +2143694 +2143695 +2143696 +2143697 +2143698 +2143699 +2143700 +2143701 +2143702 +2143703 +2143704 +2143705 +2143706 +2143707 +2143708 +2143709 +2143710 +2143711 +2143712 +2143713 +2143714 +2143715 +2143716 +2143717 +2143718 +2143719 +2143720 +2143721 +2143722 +2143723 +2143724 +2143725 +2143726 +2143727 +2143728 +2143729 +2143730 +2143731 +2143732 +2143733 +2143734 +2143735 +2143736 +2143737 +2143738 +2143739 +2143740 +2143741 +2143742 +2143743 +2143744 +2143745 +2143746 +2143747 +2143748 +2143749 +2143750 +2143751 +2147723 +2147724 +2147725 +2147726 +2147732 +2147733 +2147734 +2147735 +2147736 +2147737 +2147738 +2147739 +2147740 +2147741 +2147742 +2147743 +2147744 +2147745 +2147746 +2147747 +2147748 +2147749 +2147750 +2147751 +2147752 +2147753 +2147754 +2147755 +2147756 +2147757 +2147758 +2147759 +2147760 +2147761 +2147762 +2147763 +2147764 +2147765 +2147766 +2147767 +2147768 +2147769 +2147770 +2147771 +2147772 +2147773 +2147774 +2147775 +2147776 +2147777 +2147778 +2147779 +2147780 +2147781 +2147782 +2147783 +2147784 +2147785 +2147786 +2147787 +2147788 +2147789 +2147790 +2147791 +2147792 +2147793 +2147794 +2147795 +2147796 +2147797 +2147798 +2147799 +2147800 +2147801 +2147802 +2147803 +2147804 +2147805 +2147806 +2147807 +2147808 +2147809 +2147810 +2147811 +2147812 +2147813 +2147814 +2147815 +2147816 +2147817 +2147818 +2147819 +2147820 +2147821 +2147822 +2147823 +2147824 +2147825 +2147826 +2147827 +2147828 +2147829 +2147830 +2147831 +2147832 +2147833 +2147834 +2147835 +2147836 +2147837 +2147838 +2147839 +2147840 +2147841 +2147842 +2147843 +2147844 +2147845 +2147846 +2147847 +2147848 +2147849 +2147850 +2147851 +2147852 +2147853 +2147854 +2147855 +2147856 +2147857 +2147858 +2147859 +2147860 +2147861 +2147862 +2147863 +2147864 +2147865 +2147866 +2147867 +2147868 +2147869 +2147870 +2147871 +2147872 +2147873 +2147874 +2147875 +2147876 +2147877 +2147878 +2147879 +2147880 +2147881 +2147882 +2147883 +2147884 +2147885 +2147886 +2147887 +2147888 +2147889 +2147890 +2147891 +2147892 +2147893 +2147894 +2147895 +2147896 +2147897 +2147898 +2147899 +2147900 +2147901 +2147902 +2147903 +2147904 +2147905 +2147906 +2147907 +2147908 +2147909 +2147910 +2147911 +2147912 +2147913 +2147914 +2147915 +2147916 +2147917 +2147918 +2147919 +2147920 +2147921 +2147922 +2147923 +2147924 +2147925 +2147926 +2147927 +2147928 +2147929 +2147930 +2147931 +2147932 +2147933 +2147934 +2147935 +2147936 +2147937 +2147938 +2147939 +2147940 +2147941 +2147942 +2147943 +2147944 +2147945 +2147946 +2147947 +2147948 +2147949 +2147950 +2147951 +2147952 +2147953 +2147954 +2147955 +2147956 +2147957 +2147958 +2147959 +2147960 +2147961 +2147962 +2147963 +2147964 +2147965 +2147966 +2147967 +2147968 +2147969 +2147970 +2147971 +2147972 +2147973 +2147974 +2147975 +2147976 +2147977 +2147978 +2147979 +2147980 +2147981 +2147982 +2147983 +2147984 +2147985 +2147986 +2147987 +2147988 +2147989 +2147990 +2147991 +2147992 +2147993 +2147994 +2147995 +2147996 +2147997 +2147998 +2147999 +2148000 +2148001 +2148002 +2148003 +2148004 +2148005 +2148006 +2148007 +2148008 +2148009 +2148010 +2148011 +2148012 +2148013 +2148014 +2148015 +2148016 +2148017 +2148018 +2148019 +2148020 +2148021 +2148022 +2148023 +2148024 +2148025 +2148026 +2148027 +2148028 +2148029 +2148030 +2148031 +2148032 +2148033 +2148034 +2148035 +2148036 +2148037 +2148038 +2148039 +2148040 +2148041 +2148042 +2148043 +2148044 +2148045 +2148046 +2148047 +2148048 +2148049 +2148050 +2148051 +2148052 +2148053 +2148054 +2148055 +2148056 +2148057 +2148058 +2148059 +2148060 +2148061 +2148062 +2148063 +2148064 +2148065 +2148066 +2148067 +2148068 +2148069 +2148070 +2148071 +2148083 +2152043 +2152044 +2152045 +2152046 +2152052 +2152053 +2152054 +2152055 +2152056 +2152057 +2152058 +2152059 +2152060 +2152061 +2152062 +2152063 +2152064 +2152065 +2152066 +2152067 +2152068 +2152069 +2152070 +2152071 +2152072 +2152073 +2152074 +2152075 +2152076 +2152077 +2152078 +2152079 +2152080 +2152081 +2152082 +2152083 +2152084 +2152085 +2152086 +2152087 +2152088 +2152089 +2152090 +2152091 +2152092 +2152093 +2152094 +2152095 +2152096 +2152097 +2152098 +2152099 +2152100 +2152101 +2152102 +2152103 +2152104 +2152105 +2152106 +2152107 +2152108 +2152109 +2152110 +2152111 +2152112 +2152113 +2152114 +2152115 +2152116 +2152117 +2152118 +2152119 +2152120 +2152121 +2152122 +2152123 +2152124 +2152125 +2152126 +2152127 +2152128 +2152129 +2152130 +2152131 +2152132 +2152133 +2152134 +2152135 +2152136 +2152137 +2152138 +2152139 +2152140 +2152141 +2152142 +2152143 +2152144 +2152145 +2152146 +2152147 +2152148 +2152149 +2152150 +2152151 +2152152 +2152153 +2152154 +2152155 +2152156 +2152157 +2152158 +2152159 +2152160 +2152161 +2152162 +2152163 +2152164 +2152165 +2152166 +2152167 +2152168 +2152169 +2152170 +2152171 +2152172 +2152173 +2152174 +2152175 +2152176 +2152177 +2152178 +2152179 +2152180 +2152181 +2152182 +2152183 +2152184 +2152185 +2152186 +2152187 +2152188 +2152189 +2152190 +2152191 +2152192 +2152193 +2152194 +2152195 +2152196 +2152197 +2152198 +2152199 +2152200 +2152201 +2152202 +2152203 +2152204 +2152205 +2152206 +2152207 +2152208 +2152209 +2152210 +2152211 +2152212 +2152213 +2152214 +2152215 +2152216 +2152217 +2152218 +2152219 +2152220 +2152221 +2152222 +2152223 +2152224 +2152225 +2152226 +2152227 +2152228 +2152229 +2152230 +2152231 +2152232 +2152233 +2152234 +2152235 +2152236 +2152237 +2152238 +2152239 +2152240 +2152241 +2152242 +2152243 +2152244 +2152245 +2152246 +2152247 +2152248 +2152249 +2152250 +2152251 +2152252 +2152253 +2152254 +2152255 +2152256 +2152257 +2152258 +2152259 +2152260 +2152261 +2152262 +2152263 +2152264 +2152265 +2152266 +2152267 +2152268 +2152269 +2152270 +2152271 +2152272 +2152273 +2152274 +2152275 +2152276 +2152277 +2152278 +2152279 +2152280 +2152281 +2152282 +2152283 +2152284 +2152285 +2152286 +2152287 +2152288 +2152289 +2152290 +2152291 +2152292 +2152293 +2152294 +2152295 +2152296 +2152297 +2152298 +2152299 +2152300 +2152301 +2152302 +2152303 +2152304 +2152305 +2152306 +2152307 +2152308 +2152309 +2152310 +2152311 +2152312 +2152313 +2152314 +2152315 +2152316 +2152317 +2152318 +2152319 +2152320 +2152321 +2152322 +2152323 +2152324 +2152325 +2152326 +2152327 +2152328 +2152329 +2152330 +2152331 +2152332 +2152333 +2152334 +2152335 +2152336 +2152337 +2152338 +2152339 +2152340 +2152341 +2152342 +2152343 +2152344 +2152345 +2152346 +2152347 +2152348 +2152349 +2152350 +2152351 +2152352 +2152353 +2152354 +2152355 +2152356 +2152357 +2152358 +2152359 +2152360 +2152361 +2152362 +2152363 +2152364 +2152365 +2152366 +2152367 +2152368 +2152369 +2152370 +2152371 +2152372 +2152373 +2152374 +2152375 +2152376 +2152377 +2152378 +2152379 +2152380 +2152381 +2152382 +2152383 +2152384 +2152385 +2152386 +2152387 +2152388 +2152389 +2152390 +2152391 +2152403 +2156345 +2156346 +2156347 +2156368 +2156369 +2156370 +2156371 +2156372 +2156373 +2156374 +2156375 +2156376 +2156377 +2156378 +2156379 +2156380 +2156381 +2156382 +2156383 +2156384 +2156385 +2156386 +2156387 +2156388 +2156389 +2156390 +2156391 +2156392 +2156393 +2156394 +2156395 +2156396 +2156397 +2156398 +2156399 +2156400 +2156401 +2156402 +2156403 +2156404 +2156405 +2156406 +2156407 +2156408 +2156409 +2156410 +2156411 +2156412 +2156413 +2156414 +2156415 +2156416 +2156417 +2156418 +2156419 +2156420 +2156421 +2156422 +2156423 +2156424 +2156425 +2156426 +2156427 +2156428 +2156429 +2156430 +2156431 +2156432 +2156433 +2156434 +2156435 +2156436 +2156437 +2156438 +2156439 +2156440 +2156441 +2156442 +2156443 +2156444 +2156445 +2156446 +2156447 +2156448 +2156449 +2156450 +2156451 +2156452 +2156453 +2156454 +2156455 +2156456 +2156457 +2156458 +2156459 +2156460 +2156461 +2156462 +2156463 +2156464 +2156465 +2156466 +2156467 +2156468 +2156469 +2156470 +2156471 +2156472 +2156473 +2156474 +2156475 +2156476 +2156477 +2156478 +2156479 +2156480 +2156481 +2156482 +2156483 +2156484 +2156485 +2156486 +2156487 +2156488 +2156489 +2156490 +2156491 +2156492 +2156493 +2156494 +2156495 +2156496 +2156497 +2156498 +2156499 +2156500 +2156501 +2156502 +2156503 +2156504 +2156505 +2156506 +2156507 +2156508 +2156509 +2156510 +2156511 +2156512 +2156513 +2156514 +2156515 +2156516 +2156517 +2156518 +2156519 +2156520 +2156521 +2156522 +2156523 +2156524 +2156525 +2156526 +2156527 +2156528 +2156529 +2156530 +2156531 +2156532 +2156533 +2156534 +2156535 +2156536 +2156537 +2156538 +2156539 +2156540 +2156541 +2156542 +2156543 +2156544 +2156545 +2156546 +2156547 +2156548 +2156549 +2156550 +2156551 +2156552 +2156553 +2156554 +2156555 +2156556 +2156557 +2156558 +2156559 +2156560 +2156561 +2156562 +2156563 +2156564 +2156565 +2156566 +2156567 +2156568 +2156569 +2156570 +2156571 +2156572 +2156573 +2156574 +2156575 +2156576 +2156577 +2156578 +2156579 +2156580 +2156581 +2156582 +2156583 +2156584 +2156585 +2156586 +2156587 +2156588 +2156589 +2156590 +2156591 +2156592 +2156593 +2156594 +2156595 +2156596 +2156597 +2156598 +2156599 +2156600 +2156601 +2156602 +2156603 +2156604 +2156605 +2156606 +2156607 +2156608 +2156609 +2156610 +2156611 +2156612 +2156613 +2156614 +2156615 +2156616 +2156617 +2156618 +2156619 +2156620 +2156621 +2156622 +2156623 +2156624 +2156625 +2156626 +2156627 +2156628 +2156629 +2156630 +2156631 +2156632 +2156633 +2156634 +2156635 +2156636 +2156637 +2156638 +2156639 +2156640 +2156641 +2156642 +2156643 +2156644 +2156645 +2156646 +2156647 +2156648 +2156649 +2156650 +2156651 +2156652 +2156653 +2156654 +2156655 +2156656 +2156657 +2156658 +2156659 +2156660 +2156661 +2156662 +2156663 +2156664 +2156665 +2156666 +2156667 +2156668 +2156669 +2156670 +2156671 +2156672 +2156673 +2156674 +2156675 +2156676 +2156677 +2156678 +2156679 +2156680 +2156681 +2156682 +2156683 +2156684 +2156685 +2156686 +2156687 +2156688 +2156689 +2156690 +2156691 +2156692 +2156693 +2156694 +2156695 +2156696 +2156697 +2156698 +2156699 +2156700 +2156701 +2156702 +2156703 +2156704 +2156705 +2156706 +2156707 +2156708 +2156709 +2156710 +2156711 +2156712 +2156713 +2156714 +2156715 +2156716 +2156717 +2156718 +2156719 +2156720 +2156721 +2156722 +2156723 +2156724 +2156725 +2156726 +2156727 +2156728 +2156729 +2160665 +2160666 +2160667 +2160668 +2160688 +2160689 +2160690 +2160692 +2160693 +2160694 +2160695 +2160696 +2160697 +2160698 +2160699 +2160700 +2160701 +2160702 +2160703 +2160704 +2160705 +2160706 +2160707 +2160708 +2160709 +2160710 +2160711 +2160712 +2160713 +2160714 +2160715 +2160716 +2160717 +2160718 +2160719 +2160720 +2160721 +2160722 +2160723 +2160724 +2160725 +2160726 +2160727 +2160728 +2160729 +2160730 +2160731 +2160732 +2160733 +2160734 +2160735 +2160736 +2160737 +2160738 +2160739 +2160740 +2160741 +2160743 +2160744 +2160745 +2160746 +2160747 +2160748 +2160749 +2160750 +2160751 +2160752 +2160753 +2160754 +2160755 +2160756 +2160757 +2160758 +2160759 +2160760 +2160761 +2160762 +2160763 +2160764 +2160765 +2160766 +2160767 +2160768 +2160769 +2160770 +2160771 +2160772 +2160773 +2160774 +2160775 +2160776 +2160777 +2160778 +2160779 +2160780 +2160781 +2160782 +2160783 +2160784 +2160785 +2160786 +2160787 +2160788 +2160789 +2160790 +2160791 +2160792 +2160793 +2160794 +2160795 +2160796 +2160797 +2160798 +2160799 +2160800 +2160801 +2160802 +2160803 +2160804 +2160805 +2160806 +2160807 +2160808 +2160809 +2160810 +2160811 +2160812 +2160813 +2160814 +2160815 +2160816 +2160817 +2160818 +2160819 +2160820 +2160821 +2160822 +2160823 +2160824 +2160825 +2160826 +2160827 +2160828 +2160829 +2160830 +2160831 +2160832 +2160833 +2160834 +2160835 +2160836 +2160837 +2160838 +2160839 +2160840 +2160841 +2160842 +2160843 +2160844 +2160845 +2160846 +2160847 +2160848 +2160849 +2160850 +2160851 +2160852 +2160853 +2160854 +2160855 +2160856 +2160857 +2160858 +2160859 +2160860 +2160861 +2160862 +2160863 +2160864 +2160865 +2160866 +2160867 +2160868 +2160869 +2160870 +2160871 +2160872 +2160873 +2160874 +2160875 +2160876 +2160877 +2160878 +2160879 +2160880 +2160881 +2160882 +2160883 +2160884 +2160885 +2160886 +2160887 +2160888 +2160889 +2160890 +2160891 +2160892 +2160893 +2160894 +2160895 +2160896 +2160897 +2160898 +2160899 +2160900 +2160901 +2160902 +2160903 +2160904 +2160905 +2160906 +2160907 +2160908 +2160909 +2160910 +2160911 +2160912 +2160913 +2160914 +2160915 +2160916 +2160917 +2160918 +2160919 +2160920 +2160921 +2160922 +2160923 +2160924 +2160925 +2160926 +2160927 +2160928 +2160929 +2160930 +2160931 +2160932 +2160933 +2160934 +2160935 +2160936 +2160937 +2160938 +2160939 +2160940 +2160941 +2160942 +2160943 +2160944 +2160945 +2160946 +2160947 +2160948 +2160949 +2160950 +2160951 +2160952 +2160953 +2160954 +2160955 +2160956 +2160957 +2160958 +2160959 +2160960 +2160961 +2160962 +2160963 +2160964 +2160965 +2160966 +2160967 +2160968 +2160969 +2160970 +2160971 +2160972 +2160973 +2160974 +2160975 +2160976 +2160977 +2160978 +2160979 +2160980 +2160981 +2160982 +2160983 +2160984 +2160985 +2160986 +2160987 +2160988 +2160989 +2160990 +2160991 +2160992 +2160993 +2160994 +2160995 +2160996 +2160997 +2160998 +2160999 +2161000 +2161001 +2161002 +2161003 +2161004 +2161005 +2161006 +2161007 +2161008 +2161009 +2161010 +2161011 +2161012 +2161013 +2161014 +2161015 +2161016 +2161017 +2161018 +2161019 +2161020 +2161021 +2161022 +2161023 +2161024 +2161025 +2161026 +2161027 +2161028 +2161029 +2161030 +2161031 +2161032 +2161033 +2161034 +2161035 +2161036 +2161037 +2161038 +2161039 +2161040 +2161041 +2161042 +2161043 +2161044 +2161045 +2161046 +2161047 +2161048 +2161049 +2164985 +2164986 +2164987 +2164988 +2165003 +2165007 +2165008 +2165009 +2165012 +2165013 +2165014 +2165015 +2165016 +2165017 +2165018 +2165019 +2165020 +2165021 +2165022 +2165023 +2165024 +2165025 +2165026 +2165027 +2165028 +2165029 +2165030 +2165031 +2165032 +2165033 +2165034 +2165035 +2165036 +2165037 +2165038 +2165039 +2165040 +2165041 +2165042 +2165043 +2165044 +2165045 +2165046 +2165047 +2165048 +2165049 +2165050 +2165051 +2165052 +2165053 +2165054 +2165055 +2165056 +2165057 +2165058 +2165059 +2165060 +2165061 +2165062 +2165063 +2165064 +2165065 +2165066 +2165067 +2165068 +2165069 +2165070 +2165071 +2165072 +2165073 +2165074 +2165075 +2165076 +2165077 +2165078 +2165079 +2165080 +2165081 +2165082 +2165083 +2165085 +2165086 +2165087 +2165088 +2165089 +2165090 +2165091 +2165092 +2165093 +2165094 +2165095 +2165096 +2165097 +2165098 +2165099 +2165100 +2165101 +2165102 +2165103 +2165104 +2165105 +2165106 +2165107 +2165108 +2165109 +2165110 +2165111 +2165112 +2165113 +2165114 +2165115 +2165116 +2165117 +2165118 +2165119 +2165120 +2165121 +2165122 +2165123 +2165124 +2165125 +2165126 +2165127 +2165128 +2165129 +2165130 +2165131 +2165132 +2165133 +2165134 +2165135 +2165136 +2165137 +2165138 +2165139 +2165140 +2165141 +2165142 +2165143 +2165144 +2165145 +2165146 +2165147 +2165148 +2165149 +2165150 +2165151 +2165152 +2165153 +2165154 +2165155 +2165156 +2165157 +2165158 +2165159 +2165160 +2165161 +2165162 +2165163 +2165164 +2165165 +2165166 +2165167 +2165168 +2165169 +2165170 +2165171 +2165172 +2165173 +2165174 +2165175 +2165176 +2165177 +2165178 +2165179 +2165180 +2165181 +2165182 +2165183 +2165184 +2165185 +2165186 +2165187 +2165188 +2165189 +2165190 +2165191 +2165192 +2165193 +2165194 +2165195 +2165196 +2165197 +2165198 +2165199 +2165200 +2165201 +2165202 +2165203 +2165204 +2165205 +2165206 +2165207 +2165208 +2165209 +2165210 +2165211 +2165212 +2165213 +2165214 +2165215 +2165216 +2165217 +2165218 +2165219 +2165220 +2165221 +2165222 +2165223 +2165224 +2165225 +2165226 +2165227 +2165228 +2165229 +2165230 +2165231 +2165232 +2165233 +2165234 +2165235 +2165236 +2165237 +2165238 +2165239 +2165240 +2165241 +2165242 +2165243 +2165244 +2165245 +2165246 +2165247 +2165248 +2165249 +2165250 +2165251 +2165252 +2165253 +2165254 +2165255 +2165256 +2165257 +2165258 +2165259 +2165260 +2165261 +2165262 +2165263 +2165264 +2165265 +2165266 +2165267 +2165268 +2165269 +2165270 +2165271 +2165272 +2165273 +2165274 +2165275 +2165276 +2165277 +2165278 +2165279 +2165280 +2165281 +2165282 +2165283 +2165284 +2165285 +2165286 +2165287 +2165288 +2165289 +2165290 +2165291 +2165292 +2165293 +2165294 +2165295 +2165296 +2165297 +2165298 +2165299 +2165300 +2165301 +2165302 +2165303 +2165304 +2165305 +2165306 +2165307 +2165308 +2165309 +2165310 +2165311 +2165312 +2165313 +2165314 +2165315 +2165316 +2165317 +2165318 +2165319 +2165320 +2165321 +2165322 +2165323 +2165324 +2165325 +2165326 +2165327 +2165328 +2165329 +2165330 +2165331 +2165332 +2165333 +2165334 +2165335 +2165336 +2165337 +2165338 +2165339 +2165340 +2165341 +2165342 +2165343 +2165344 +2165345 +2165346 +2165347 +2165348 +2165349 +2165350 +2165351 +2165352 +2165353 +2165354 +2165355 +2165356 +2165357 +2165358 +2165359 +2165360 +2165361 +2165362 +2165363 +2165364 +2165365 +2165366 +2165367 +2165368 +2165369 +2169305 +2169306 +2169307 +2169308 +2169309 +2169310 +2169311 +2169312 +2169313 +2169314 +2169315 +2169316 +2169317 +2169318 +2169319 +2169320 +2169321 +2169322 +2169323 +2169324 +2169325 +2169326 +2169327 +2169329 +2169330 +2169332 +2169333 +2169334 +2169335 +2169336 +2169337 +2169338 +2169339 +2169340 +2169341 +2169342 +2169343 +2169344 +2169345 +2169346 +2169347 +2169348 +2169349 +2169350 +2169351 +2169352 +2169353 +2169354 +2169355 +2169356 +2169357 +2169358 +2169359 +2169360 +2169361 +2169362 +2169363 +2169364 +2169365 +2169366 +2169367 +2169368 +2169369 +2169370 +2169371 +2169372 +2169373 +2169374 +2169375 +2169376 +2169377 +2169378 +2169379 +2169380 +2169381 +2169383 +2169384 +2169385 +2169386 +2169387 +2169388 +2169389 +2169390 +2169391 +2169392 +2169393 +2169394 +2169395 +2169396 +2169397 +2169398 +2169399 +2169400 +2169401 +2169402 +2169405 +2169406 +2169407 +2169408 +2169409 +2169410 +2169411 +2169412 +2169413 +2169414 +2169415 +2169416 +2169417 +2169418 +2169419 +2169420 +2169421 +2169422 +2169423 +2169424 +2169425 +2169426 +2169427 +2169428 +2169429 +2169430 +2169431 +2169432 +2169433 +2169434 +2169435 +2169436 +2169437 +2169438 +2169439 +2169440 +2169441 +2169442 +2169443 +2169444 +2169445 +2169446 +2169447 +2169448 +2169449 +2169450 +2169451 +2169452 +2169453 +2169454 +2169455 +2169456 +2169457 +2169458 +2169459 +2169460 +2169461 +2169462 +2169463 +2169464 +2169465 +2169466 +2169467 +2169468 +2169469 +2169470 +2169471 +2169472 +2169473 +2169474 +2169475 +2169476 +2169477 +2169478 +2169479 +2169480 +2169481 +2169482 +2169483 +2169484 +2169485 +2169486 +2169487 +2169488 +2169489 +2169490 +2169491 +2169492 +2169493 +2169494 +2169495 +2169496 +2169497 +2169498 +2169499 +2169500 +2169501 +2169502 +2169503 +2169504 +2169505 +2169506 +2169507 +2169508 +2169509 +2169510 +2169511 +2169512 +2169513 +2169514 +2169515 +2169516 +2169517 +2169518 +2169519 +2169520 +2169521 +2169522 +2169523 +2169524 +2169525 +2169526 +2169527 +2169528 +2169529 +2169530 +2169531 +2169532 +2169533 +2169534 +2169535 +2169536 +2169537 +2169538 +2169539 +2169540 +2169541 +2169542 +2169543 +2169544 +2169545 +2169546 +2169547 +2169548 +2169549 +2169550 +2169551 +2169552 +2169553 +2169554 +2169555 +2169556 +2169557 +2169558 +2169559 +2169560 +2169561 +2169562 +2169563 +2169564 +2169565 +2169566 +2169567 +2169568 +2169569 +2169570 +2169571 +2169572 +2169573 +2169574 +2169575 +2169576 +2169577 +2169578 +2169579 +2169580 +2169581 +2169582 +2169583 +2169584 +2169585 +2169586 +2169587 +2169588 +2169589 +2169590 +2169591 +2169592 +2169593 +2169594 +2169595 +2169596 +2169597 +2169598 +2169599 +2169600 +2169601 +2169602 +2169603 +2169604 +2169605 +2169606 +2169607 +2169608 +2169609 +2169610 +2169611 +2169612 +2169613 +2169614 +2169615 +2169616 +2169617 +2169618 +2169619 +2169620 +2169621 +2169622 +2169623 +2169624 +2169625 +2169626 +2169627 +2169628 +2169629 +2169630 +2169631 +2169632 +2169633 +2169634 +2169635 +2169636 +2169637 +2169638 +2169639 +2169640 +2169641 +2169642 +2169643 +2169644 +2169645 +2169646 +2169647 +2169648 +2169649 +2169650 +2169651 +2169652 +2169653 +2169654 +2169655 +2169656 +2169657 +2169658 +2169659 +2169660 +2169666 +2169667 +2169668 +2169669 +2169670 +2169671 +2169672 +2169673 +2169674 +2169675 +2169676 +2169677 +2169678 +2169679 +2169680 +2169681 +2169682 +2169683 +2169684 +2169685 +2169686 +2169687 +2169688 +2169689 +2169690 +2169691 +2169692 +2169693 +2169694 +2169695 +2169696 +2169697 +2169698 +2169699 +2169700 +2169707 +2169708 +2169709 +2169710 +2169737 +2169738 +2173625 +2173626 +2173627 +2173628 +2173629 +2173630 +2173631 +2173632 +2173633 +2173634 +2173635 +2173636 +2173637 +2173638 +2173639 +2173640 +2173641 +2173642 +2173643 +2173644 +2173645 +2173646 +2173647 +2173648 +2173649 +2173650 +2173651 +2173652 +2173653 +2173654 +2173655 +2173656 +2173657 +2173658 +2173659 +2173660 +2173661 +2173662 +2173663 +2173664 +2173665 +2173666 +2173667 +2173668 +2173669 +2173670 +2173671 +2173672 +2173673 +2173674 +2173675 +2173676 +2173677 +2173678 +2173679 +2173680 +2173681 +2173682 +2173683 +2173684 +2173685 +2173686 +2173687 +2173688 +2173689 +2173690 +2173691 +2173692 +2173693 +2173694 +2173695 +2173696 +2173697 +2173698 +2173699 +2173700 +2173701 +2173702 +2173703 +2173704 +2173705 +2173706 +2173707 +2173708 +2173709 +2173710 +2173711 +2173712 +2173713 +2173714 +2173715 +2173716 +2173717 +2173718 +2173719 +2173720 +2173721 +2173723 +2173724 +2173725 +2173726 +2173727 +2173728 +2173729 +2173730 +2173731 +2173732 +2173733 +2173734 +2173735 +2173736 +2173737 +2173738 +2173739 +2173740 +2173741 +2173742 +2173743 +2173744 +2173745 +2173746 +2173747 +2173748 +2173749 +2173751 +2173752 +2173753 +2173754 +2173755 +2173756 +2173757 +2173758 +2173759 +2173760 +2173761 +2173762 +2173763 +2173764 +2173765 +2173766 +2173767 +2173768 +2173769 +2173770 +2173771 +2173772 +2173773 +2173774 +2173775 +2173776 +2173777 +2173778 +2173779 +2173780 +2173781 +2173782 +2173783 +2173784 +2173785 +2173786 +2173787 +2173788 +2173789 +2173790 +2173791 +2173792 +2173793 +2173794 +2173795 +2173796 +2173797 +2173798 +2173799 +2173800 +2173801 +2173802 +2173803 +2173804 +2173805 +2173806 +2173807 +2173808 +2173809 +2173810 +2173811 +2173812 +2173813 +2173814 +2173815 +2173816 +2173817 +2173818 +2173819 +2173820 +2173821 +2173822 +2173823 +2173824 +2173825 +2173826 +2173827 +2173828 +2173829 +2173830 +2173831 +2173832 +2173833 +2173834 +2173835 +2173836 +2173837 +2173838 +2173839 +2173840 +2173841 +2173842 +2173843 +2173844 +2173845 +2173846 +2173847 +2173848 +2173849 +2173850 +2173851 +2173852 +2173853 +2173854 +2173855 +2173856 +2173857 +2173858 +2173859 +2173860 +2173861 +2173862 +2173863 +2173864 +2173865 +2173866 +2173867 +2173868 +2173869 +2173870 +2173871 +2173872 +2173873 +2173874 +2173875 +2173876 +2173877 +2173878 +2173879 +2173880 +2173881 +2173882 +2173883 +2173884 +2173885 +2173886 +2173887 +2173888 +2173889 +2173890 +2173891 +2173892 +2173893 +2173894 +2173895 +2173896 +2173897 +2173898 +2173899 +2173900 +2173901 +2173902 +2173903 +2173904 +2173905 +2173906 +2173907 +2173908 +2173909 +2173910 +2173911 +2173912 +2173913 +2173914 +2173915 +2173916 +2173917 +2173918 +2173919 +2173920 +2173921 +2173922 +2173923 +2173924 +2173925 +2173926 +2173927 +2173928 +2173929 +2173930 +2173931 +2173932 +2173933 +2173934 +2173935 +2173936 +2173937 +2173938 +2173939 +2173940 +2173941 +2173942 +2173943 +2173944 +2173945 +2173946 +2173947 +2173948 +2173949 +2173950 +2173951 +2173952 +2173953 +2173954 +2173955 +2173956 +2173957 +2173958 +2173959 +2173960 +2173961 +2173962 +2173963 +2173964 +2173965 +2173966 +2173967 +2173968 +2173969 +2173970 +2173971 +2173972 +2173973 +2173974 +2173975 +2173976 +2173977 +2173978 +2173979 +2173983 +2173984 +2173985 +2173986 +2173987 +2173988 +2173989 +2173990 +2173991 +2173992 +2173993 +2173994 +2173995 +2173996 +2173997 +2173998 +2173999 +2174000 +2174001 +2174002 +2174003 +2174004 +2174005 +2174006 +2174007 +2174008 +2174009 +2174010 +2174011 +2174012 +2174013 +2174014 +2174015 +2174016 +2174017 +2174018 +2174019 +2174020 +2174027 +2174028 +2174029 +2174030 +2174054 +2174055 +2174056 +2174057 +2177945 +2177946 +2177947 +2177948 +2177949 +2177950 +2177951 +2177952 +2177953 +2177954 +2177955 +2177956 +2177957 +2177958 +2177959 +2177960 +2177961 +2177962 +2177963 +2177964 +2177965 +2177966 +2177967 +2177968 +2177972 +2177974 +2177975 +2177976 +2177977 +2177978 +2177979 +2177980 +2177981 +2177982 +2177983 +2177984 +2177985 +2177986 +2177987 +2177988 +2177989 +2177990 +2177991 +2177992 +2177993 +2177994 +2177995 +2177996 +2177997 +2177998 +2177999 +2178000 +2178001 +2178002 +2178003 +2178004 +2178005 +2178006 +2178007 +2178008 +2178009 +2178010 +2178011 +2178012 +2178013 +2178014 +2178015 +2178016 +2178017 +2178018 +2178019 +2178021 +2178022 +2178023 +2178024 +2178025 +2178026 +2178027 +2178028 +2178029 +2178030 +2178031 +2178032 +2178033 +2178034 +2178035 +2178036 +2178037 +2178038 +2178039 +2178040 +2178041 +2178042 +2178043 +2178044 +2178045 +2178046 +2178047 +2178048 +2178049 +2178050 +2178051 +2178052 +2178053 +2178054 +2178055 +2178056 +2178057 +2178058 +2178059 +2178060 +2178061 +2178062 +2178063 +2178064 +2178065 +2178066 +2178067 +2178068 +2178069 +2178072 +2178073 +2178074 +2178075 +2178076 +2178077 +2178078 +2178079 +2178080 +2178081 +2178082 +2178083 +2178084 +2178085 +2178086 +2178087 +2178088 +2178089 +2178090 +2178091 +2178092 +2178093 +2178094 +2178095 +2178096 +2178097 +2178098 +2178099 +2178100 +2178101 +2178102 +2178103 +2178104 +2178105 +2178106 +2178107 +2178108 +2178109 +2178110 +2178111 +2178112 +2178113 +2178114 +2178115 +2178116 +2178117 +2178118 +2178119 +2178120 +2178121 +2178122 +2178123 +2178124 +2178125 +2178126 +2178127 +2178128 +2178129 +2178130 +2178131 +2178132 +2178133 +2178134 +2178135 +2178136 +2178137 +2178138 +2178139 +2178140 +2178141 +2178142 +2178143 +2178144 +2178145 +2178146 +2178147 +2178148 +2178149 +2178150 +2178151 +2178152 +2178153 +2178154 +2178155 +2178156 +2178157 +2178158 +2178159 +2178160 +2178161 +2178165 +2178166 +2178167 +2178168 +2178169 +2178170 +2178171 +2178172 +2178173 +2178174 +2178175 +2178176 +2178177 +2178178 +2178179 +2178180 +2178181 +2178182 +2178183 +2178184 +2178185 +2178186 +2178187 +2178188 +2178189 +2178190 +2178191 +2178192 +2178193 +2178194 +2178195 +2178196 +2178197 +2178198 +2178199 +2178200 +2178201 +2178202 +2178203 +2178204 +2178205 +2178206 +2178207 +2178208 +2178209 +2178210 +2178211 +2178212 +2178213 +2178214 +2178215 +2178216 +2178217 +2178218 +2178219 +2178220 +2178221 +2178222 +2178223 +2178224 +2178225 +2178226 +2178227 +2178228 +2178229 +2178230 +2178231 +2178232 +2178233 +2178234 +2178235 +2178236 +2178237 +2178238 +2178239 +2178240 +2178241 +2178242 +2178243 +2178244 +2178245 +2178246 +2178247 +2178248 +2178249 +2178250 +2178251 +2178252 +2178253 +2178254 +2178255 +2178256 +2178257 +2178258 +2178259 +2178260 +2178261 +2178262 +2178263 +2178264 +2178265 +2178266 +2178267 +2178268 +2178269 +2178270 +2178271 +2178272 +2178273 +2178274 +2178275 +2178276 +2178277 +2178278 +2178279 +2178280 +2178281 +2178282 +2178283 +2178284 +2178285 +2178286 +2178287 +2178288 +2178289 +2178290 +2178291 +2178292 +2178293 +2178294 +2178295 +2178296 +2178297 +2178304 +2178305 +2178306 +2178307 +2178308 +2178309 +2178310 +2178311 +2178312 +2178313 +2178314 +2178315 +2178316 +2178317 +2178318 +2178319 +2178320 +2178321 +2178322 +2178323 +2178324 +2178325 +2178326 +2178327 +2178328 +2178329 +2178330 +2178331 +2178332 +2178333 +2178334 +2178335 +2178336 +2178337 +2178338 +2178339 +2178340 +2178341 +2178347 +2178348 +2178349 +2178350 +2178374 +2178375 +2178376 +2182265 +2182266 +2182267 +2182268 +2182269 +2182270 +2182271 +2182272 +2182273 +2182274 +2182275 +2182276 +2182277 +2182278 +2182279 +2182280 +2182281 +2182282 +2182283 +2182284 +2182285 +2182286 +2182287 +2182288 +2182290 +2182293 +2182294 +2182295 +2182296 +2182297 +2182298 +2182299 +2182300 +2182301 +2182302 +2182303 +2182304 +2182305 +2182306 +2182307 +2182308 +2182309 +2182310 +2182311 +2182312 +2182313 +2182314 +2182315 +2182316 +2182317 +2182319 +2182320 +2182321 +2182322 +2182323 +2182324 +2182325 +2182326 +2182327 +2182328 +2182329 +2182330 +2182331 +2182332 +2182333 +2182334 +2182335 +2182336 +2182337 +2182338 +2182339 +2182341 +2182342 +2182343 +2182344 +2182345 +2182346 +2182347 +2182348 +2182349 +2182350 +2182351 +2182352 +2182353 +2182354 +2182355 +2182356 +2182357 +2182358 +2182359 +2182360 +2182361 +2182362 +2182363 +2182364 +2182365 +2182366 +2182367 +2182368 +2182369 +2182370 +2182371 +2182372 +2182373 +2182374 +2182375 +2182376 +2182377 +2182378 +2182379 +2182380 +2182381 +2182382 +2182383 +2182384 +2182385 +2182386 +2182387 +2182388 +2182389 +2182392 +2182393 +2182394 +2182395 +2182396 +2182397 +2182398 +2182399 +2182400 +2182401 +2182402 +2182403 +2182404 +2182405 +2182406 +2182407 +2182408 +2182409 +2182410 +2182411 +2182412 +2182413 +2182414 +2182415 +2182416 +2182417 +2182418 +2182419 +2182420 +2182421 +2182422 +2182423 +2182424 +2182425 +2182426 +2182427 +2182428 +2182429 +2182430 +2182431 +2182432 +2182433 +2182434 +2182435 +2182436 +2182437 +2182438 +2182439 +2182440 +2182441 +2182442 +2182443 +2182444 +2182445 +2182446 +2182447 +2182448 +2182449 +2182450 +2182451 +2182452 +2182453 +2182454 +2182455 +2182456 +2182457 +2182458 +2182459 +2182460 +2182461 +2182462 +2182463 +2182464 +2182465 +2182466 +2182467 +2182468 +2182469 +2182470 +2182471 +2182472 +2182473 +2182474 +2182475 +2182476 +2182477 +2182478 +2182479 +2182480 +2182481 +2182485 +2182486 +2182487 +2182488 +2182489 +2182490 +2182491 +2182492 +2182493 +2182494 +2182495 +2182496 +2182497 +2182498 +2182499 +2182500 +2182501 +2182502 +2182503 +2182504 +2182505 +2182506 +2182507 +2182508 +2182509 +2182510 +2182511 +2182512 +2182513 +2182514 +2182515 +2182516 +2182517 +2182518 +2182519 +2182520 +2182521 +2182522 +2182523 +2182524 +2182525 +2182526 +2182527 +2182528 +2182529 +2182530 +2182531 +2182532 +2182533 +2182534 +2182535 +2182536 +2182537 +2182538 +2182539 +2182540 +2182541 +2182542 +2182543 +2182544 +2182545 +2182546 +2182547 +2182548 +2182549 +2182550 +2182551 +2182552 +2182553 +2182554 +2182555 +2182556 +2182557 +2182558 +2182559 +2182560 +2182561 +2182562 +2182563 +2182564 +2182565 +2182566 +2182567 +2182568 +2182569 +2182570 +2182571 +2182572 +2182573 +2182574 +2182575 +2182576 +2182577 +2182578 +2182579 +2182580 +2182581 +2182582 +2182583 +2182584 +2182585 +2182586 +2182587 +2182588 +2182589 +2182590 +2182591 +2182592 +2182593 +2182594 +2182595 +2182596 +2182597 +2182598 +2182599 +2182600 +2182601 +2182602 +2182603 +2182604 +2182605 +2182606 +2182607 +2182608 +2182609 +2182610 +2182611 +2182612 +2182613 +2182614 +2182615 +2182616 +2182617 +2182623 +2182624 +2182625 +2182626 +2182627 +2182628 +2182629 +2182630 +2182631 +2182632 +2182633 +2182634 +2182635 +2182636 +2182637 +2182638 +2182639 +2182640 +2182641 +2182642 +2182643 +2182644 +2182645 +2182646 +2182647 +2182648 +2182649 +2182650 +2182654 +2182655 +2182656 +2182657 +2182658 +2182659 +2182660 +2182662 +2182665 +2182666 +2182667 +2182668 +2182669 +2182670 +2182671 +2182672 +2182673 +2182674 +2182675 +2182676 +2182677 +2182678 +2182679 +2182680 +2182681 +2182682 +2182683 +2182690 +2182691 +2182692 +2182693 +2186588 +2186589 +2186590 +2186591 +2186592 +2186593 +2186594 +2186595 +2186596 +2186598 +2186599 +2186600 +2186601 +2186602 +2186603 +2186604 +2186605 +2186606 +2186607 +2186610 +2186612 +2186613 +2186614 +2186615 +2186616 +2186617 +2186618 +2186619 +2186620 +2186621 +2186622 +2186623 +2186624 +2186625 +2186626 +2186627 +2186628 +2186629 +2186630 +2186631 +2186632 +2186633 +2186634 +2186635 +2186636 +2186637 +2186638 +2186639 +2186640 +2186641 +2186642 +2186643 +2186644 +2186645 +2186646 +2186647 +2186648 +2186649 +2186650 +2186651 +2186652 +2186653 +2186654 +2186655 +2186656 +2186657 +2186658 +2186659 +2186660 +2186661 +2186662 +2186663 +2186664 +2186665 +2186666 +2186667 +2186668 +2186669 +2186670 +2186671 +2186672 +2186673 +2186674 +2186675 +2186676 +2186677 +2186678 +2186679 +2186680 +2186681 +2186682 +2186683 +2186684 +2186685 +2186686 +2186687 +2186688 +2186689 +2186690 +2186691 +2186692 +2186693 +2186694 +2186695 +2186696 +2186697 +2186698 +2186699 +2186700 +2186701 +2186702 +2186703 +2186704 +2186705 +2186706 +2186707 +2186708 +2186712 +2186713 +2186714 +2186715 +2186716 +2186717 +2186718 +2186719 +2186720 +2186721 +2186722 +2186723 +2186724 +2186725 +2186726 +2186727 +2186728 +2186729 +2186730 +2186731 +2186732 +2186733 +2186734 +2186735 +2186736 +2186737 +2186738 +2186739 +2186740 +2186741 +2186742 +2186743 +2186744 +2186745 +2186746 +2186747 +2186748 +2186749 +2186750 +2186751 +2186752 +2186753 +2186754 +2186755 +2186756 +2186757 +2186758 +2186759 +2186760 +2186761 +2186762 +2186763 +2186764 +2186765 +2186766 +2186767 +2186768 +2186769 +2186770 +2186771 +2186772 +2186773 +2186774 +2186775 +2186776 +2186777 +2186778 +2186779 +2186780 +2186781 +2186782 +2186783 +2186784 +2186785 +2186786 +2186787 +2186788 +2186789 +2186790 +2186791 +2186792 +2186793 +2186794 +2186795 +2186796 +2186797 +2186798 +2186799 +2186803 +2186806 +2186807 +2186808 +2186809 +2186810 +2186811 +2186812 +2186813 +2186814 +2186815 +2186816 +2186817 +2186818 +2186819 +2186820 +2186821 +2186822 +2186823 +2186824 +2186825 +2186826 +2186827 +2186828 +2186829 +2186830 +2186831 +2186832 +2186833 +2186834 +2186835 +2186836 +2186837 +2186838 +2186839 +2186840 +2186841 +2186842 +2186843 +2186844 +2186845 +2186846 +2186847 +2186848 +2186849 +2186850 +2186851 +2186852 +2186853 +2186854 +2186855 +2186856 +2186857 +2186858 +2186859 +2186860 +2186861 +2186862 +2186863 +2186864 +2186865 +2186866 +2186867 +2186868 +2186869 +2186870 +2186871 +2186872 +2186873 +2186874 +2186875 +2186876 +2186877 +2186878 +2186879 +2186880 +2186881 +2186882 +2186883 +2186884 +2186885 +2186886 +2186887 +2186888 +2186889 +2186890 +2186891 +2186892 +2186893 +2186894 +2186895 +2186896 +2186897 +2186898 +2186899 +2186900 +2186901 +2186902 +2186903 +2186904 +2186905 +2186906 +2186907 +2186908 +2186909 +2186910 +2186911 +2186912 +2186913 +2186914 +2186915 +2186916 +2186917 +2186918 +2186919 +2186920 +2186921 +2186922 +2186923 +2186924 +2186925 +2186926 +2186927 +2186928 +2186929 +2186930 +2186931 +2186932 +2186933 +2186934 +2186935 +2186936 +2186937 +2186938 +2186939 +2186940 +2186941 +2186942 +2186943 +2186944 +2186945 +2186946 +2186947 +2186948 +2186949 +2186950 +2186951 +2186952 +2186953 +2186954 +2186955 +2186956 +2186957 +2186958 +2186959 +2186960 +2186961 +2186962 +2186963 +2186964 +2186965 +2186966 +2186967 +2186968 +2186969 +2186970 +2186971 +2186972 +2186973 +2186974 +2186975 +2186976 +2186977 +2186978 +2186979 +2186980 +2186981 +2186982 +2186983 +2186984 +2186985 +2186986 +2186987 +2186988 +2186989 +2186990 +2186991 +2186992 +2186993 +2186994 +2186995 +2186996 +2186997 +2186998 +2186999 +2187000 +2187001 +2187010 +2190908 +2190909 +2190910 +2190911 +2190912 +2190913 +2190914 +2190915 +2190916 +2190917 +2190918 +2190919 +2190920 +2190921 +2190922 +2190923 +2190924 +2190925 +2190927 +2190929 +2190932 +2190933 +2190934 +2190935 +2190936 +2190937 +2190938 +2190939 +2190940 +2190941 +2190942 +2190943 +2190944 +2190945 +2190946 +2190947 +2190948 +2190949 +2190950 +2190951 +2190952 +2190953 +2190954 +2190955 +2190956 +2190957 +2190958 +2190959 +2190960 +2190961 +2190962 +2190963 +2190964 +2190965 +2190966 +2190967 +2190968 +2190969 +2190970 +2190971 +2190972 +2190973 +2190974 +2190975 +2190976 +2190977 +2190978 +2190979 +2190980 +2190981 +2190982 +2190983 +2190984 +2190985 +2190986 +2190987 +2190988 +2190989 +2190990 +2190991 +2190992 +2190993 +2190994 +2190995 +2190996 +2190997 +2190998 +2190999 +2191000 +2191001 +2191002 +2191003 +2191004 +2191005 +2191006 +2191007 +2191008 +2191009 +2191010 +2191011 +2191012 +2191013 +2191014 +2191015 +2191016 +2191017 +2191018 +2191019 +2191020 +2191021 +2191022 +2191023 +2191024 +2191025 +2191026 +2191027 +2191028 +2191029 +2191030 +2191032 +2191033 +2191034 +2191035 +2191036 +2191037 +2191038 +2191039 +2191040 +2191041 +2191042 +2191043 +2191044 +2191045 +2191046 +2191047 +2191048 +2191049 +2191050 +2191051 +2191052 +2191053 +2191054 +2191055 +2191056 +2191057 +2191058 +2191059 +2191060 +2191061 +2191062 +2191063 +2191064 +2191065 +2191066 +2191067 +2191068 +2191069 +2191070 +2191071 +2191072 +2191073 +2191074 +2191075 +2191076 +2191077 +2191078 +2191079 +2191080 +2191081 +2191082 +2191083 +2191084 +2191085 +2191086 +2191087 +2191088 +2191089 +2191090 +2191091 +2191092 +2191093 +2191094 +2191095 +2191096 +2191097 +2191098 +2191099 +2191100 +2191101 +2191102 +2191103 +2191104 +2191105 +2191106 +2191107 +2191108 +2191109 +2191110 +2191111 +2191112 +2191113 +2191114 +2191115 +2191116 +2191117 +2191121 +2191122 +2191123 +2191124 +2191126 +2191127 +2191128 +2191129 +2191130 +2191131 +2191132 +2191133 +2191134 +2191135 +2191136 +2191137 +2191138 +2191139 +2191140 +2191141 +2191142 +2191143 +2191144 +2191145 +2191146 +2191147 +2191148 +2191149 +2191150 +2191151 +2191152 +2191153 +2191154 +2191155 +2191156 +2191157 +2191158 +2191159 +2191160 +2191161 +2191162 +2191163 +2191164 +2191165 +2191166 +2191167 +2191168 +2191169 +2191170 +2191171 +2191172 +2191173 +2191174 +2191175 +2191176 +2191177 +2191178 +2191179 +2191180 +2191181 +2191182 +2191183 +2191184 +2191185 +2191186 +2191187 +2191188 +2191189 +2191190 +2191191 +2191192 +2191193 +2191194 +2191195 +2191196 +2191197 +2191198 +2191199 +2191200 +2191201 +2191202 +2191203 +2191204 +2191205 +2191206 +2191207 +2191208 +2191209 +2191210 +2191211 +2191212 +2191213 +2191214 +2191215 +2191216 +2191217 +2191218 +2191219 +2191220 +2191221 +2191222 +2191223 +2191224 +2191225 +2191226 +2191227 +2191228 +2191229 +2191230 +2191231 +2191232 +2191233 +2191234 +2191235 +2191236 +2191237 +2191238 +2191239 +2191240 +2191241 +2191242 +2191243 +2191244 +2191245 +2191246 +2191247 +2191248 +2191249 +2191250 +2191251 +2191252 +2191253 +2191254 +2191255 +2191256 +2191257 +2191258 +2191259 +2191260 +2191261 +2191262 +2191263 +2191264 +2191265 +2191266 +2191267 +2191268 +2191269 +2191270 +2191271 +2191272 +2191273 +2191274 +2191275 +2191276 +2191277 +2191278 +2191279 +2191280 +2191281 +2191282 +2191283 +2191284 +2191285 +2191286 +2191287 +2191288 +2191289 +2191290 +2191291 +2191292 +2191293 +2191294 +2191295 +2191296 +2191297 +2191298 +2191299 +2191300 +2191301 +2191302 +2191303 +2191304 +2191305 +2191306 +2191307 +2191308 +2191309 +2191310 +2191311 +2191312 +2191313 +2191314 +2191315 +2191316 +2191317 +2195228 +2195229 +2195230 +2195231 +2195232 +2195233 +2195234 +2195235 +2195236 +2195237 +2195238 +2195239 +2195240 +2195241 +2195242 +2195243 +2195244 +2195245 +2195247 +2195248 +2195249 +2195252 +2195253 +2195254 +2195255 +2195256 +2195257 +2195258 +2195259 +2195260 +2195261 +2195262 +2195263 +2195264 +2195265 +2195266 +2195267 +2195268 +2195269 +2195270 +2195271 +2195272 +2195273 +2195274 +2195275 +2195276 +2195277 +2195278 +2195279 +2195280 +2195281 +2195282 +2195283 +2195284 +2195285 +2195286 +2195287 +2195288 +2195289 +2195290 +2195291 +2195292 +2195293 +2195294 +2195295 +2195296 +2195297 +2195298 +2195299 +2195300 +2195301 +2195302 +2195303 +2195304 +2195305 +2195306 +2195307 +2195308 +2195309 +2195310 +2195311 +2195312 +2195313 +2195314 +2195315 +2195316 +2195317 +2195318 +2195319 +2195320 +2195321 +2195322 +2195323 +2195324 +2195325 +2195326 +2195327 +2195328 +2195329 +2195330 +2195331 +2195332 +2195333 +2195334 +2195335 +2195336 +2195337 +2195338 +2195339 +2195340 +2195341 +2195342 +2195343 +2195344 +2195345 +2195346 +2195347 +2195348 +2195349 +2195350 +2195351 +2195352 +2195353 +2195354 +2195355 +2195356 +2195357 +2195358 +2195359 +2195360 +2195361 +2195362 +2195363 +2195364 +2195365 +2195366 +2195367 +2195368 +2195369 +2195370 +2195371 +2195372 +2195373 +2195374 +2195375 +2195376 +2195377 +2195378 +2195379 +2195380 +2195381 +2195382 +2195383 +2195384 +2195385 +2195386 +2195387 +2195388 +2195389 +2195390 +2195391 +2195392 +2195393 +2195394 +2195395 +2195396 +2195397 +2195398 +2195399 +2195400 +2195401 +2195402 +2195403 +2195404 +2195405 +2195406 +2195407 +2195408 +2195409 +2195410 +2195411 +2195412 +2195413 +2195414 +2195415 +2195416 +2195417 +2195418 +2195419 +2195420 +2195421 +2195422 +2195423 +2195424 +2195425 +2195426 +2195427 +2195432 +2195433 +2195434 +2195435 +2195437 +2195439 +2195440 +2195441 +2195442 +2195443 +2195444 +2195447 +2195448 +2195449 +2195450 +2195451 +2195452 +2195453 +2195454 +2195455 +2195456 +2195457 +2195458 +2195459 +2195460 +2195461 +2195462 +2195463 +2195464 +2195465 +2195466 +2195467 +2195468 +2195469 +2195470 +2195471 +2195472 +2195473 +2195474 +2195475 +2195476 +2195477 +2195478 +2195479 +2195480 +2195481 +2195482 +2195483 +2195484 +2195485 +2195486 +2195487 +2195488 +2195489 +2195490 +2195491 +2195492 +2195493 +2195494 +2195495 +2195496 +2195497 +2195498 +2195499 +2195500 +2195501 +2195502 +2195503 +2195504 +2195505 +2195506 +2195507 +2195508 +2195509 +2195510 +2195511 +2195512 +2195513 +2195514 +2195515 +2195516 +2195517 +2195518 +2195519 +2195520 +2195521 +2195522 +2195523 +2195524 +2195525 +2195526 +2195527 +2195528 +2195529 +2195530 +2195531 +2195532 +2195533 +2195534 +2195535 +2195536 +2195537 +2195538 +2195539 +2195540 +2195541 +2195542 +2195543 +2195544 +2195545 +2195546 +2195547 +2195548 +2195549 +2195550 +2195551 +2195552 +2195553 +2195554 +2195555 +2195556 +2195557 +2195558 +2195559 +2195560 +2195561 +2195562 +2195563 +2195564 +2195565 +2195566 +2195567 +2195568 +2195569 +2195570 +2195571 +2195572 +2195573 +2195574 +2195575 +2195576 +2195577 +2195578 +2195579 +2195580 +2195581 +2195582 +2195583 +2195584 +2195585 +2195586 +2195587 +2195588 +2195589 +2195590 +2195591 +2195592 +2195593 +2195594 +2195595 +2195596 +2195597 +2195598 +2195599 +2195600 +2195601 +2195602 +2195603 +2195604 +2195605 +2195606 +2195607 +2195608 +2195609 +2195610 +2195611 +2195612 +2195613 +2195614 +2195615 +2195616 +2195617 +2195618 +2195619 +2195620 +2195621 +2195622 +2195623 +2195624 +2195625 +2195626 +2195627 +2195628 +2195629 +2195630 +2195631 +2195632 +2195633 +2199548 +2199549 +2199550 +2199551 +2199552 +2199553 +2199554 +2199555 +2199556 +2199557 +2199558 +2199559 +2199560 +2199561 +2199562 +2199563 +2199564 +2199565 +2199566 +2199567 +2199568 +2199569 +2199572 +2199573 +2199575 +2199576 +2199577 +2199578 +2199579 +2199580 +2199581 +2199582 +2199583 +2199584 +2199585 +2199586 +2199587 +2199588 +2199589 +2199590 +2199591 +2199592 +2199593 +2199594 +2199595 +2199596 +2199597 +2199598 +2199599 +2199600 +2199601 +2199602 +2199603 +2199604 +2199605 +2199606 +2199607 +2199608 +2199609 +2199610 +2199611 +2199612 +2199613 +2199614 +2199615 +2199616 +2199617 +2199618 +2199619 +2199620 +2199621 +2199622 +2199623 +2199624 +2199625 +2199626 +2199627 +2199628 +2199629 +2199630 +2199631 +2199632 +2199633 +2199634 +2199635 +2199636 +2199637 +2199638 +2199639 +2199640 +2199641 +2199642 +2199643 +2199644 +2199645 +2199646 +2199647 +2199648 +2199649 +2199650 +2199651 +2199652 +2199653 +2199654 +2199655 +2199656 +2199657 +2199658 +2199659 +2199660 +2199661 +2199662 +2199663 +2199664 +2199665 +2199666 +2199667 +2199668 +2199669 +2199670 +2199671 +2199672 +2199673 +2199674 +2199675 +2199676 +2199677 +2199678 +2199679 +2199680 +2199681 +2199682 +2199683 +2199684 +2199685 +2199686 +2199687 +2199688 +2199689 +2199690 +2199691 +2199692 +2199693 +2199694 +2199695 +2199696 +2199697 +2199698 +2199699 +2199700 +2199701 +2199702 +2199703 +2199704 +2199705 +2199706 +2199707 +2199708 +2199709 +2199710 +2199711 +2199712 +2199713 +2199714 +2199715 +2199716 +2199717 +2199718 +2199719 +2199720 +2199721 +2199722 +2199723 +2199724 +2199725 +2199726 +2199727 +2199728 +2199729 +2199730 +2199731 +2199732 +2199733 +2199734 +2199735 +2199736 +2199737 +2199738 +2199739 +2199740 +2199741 +2199742 +2199743 +2199744 +2199745 +2199746 +2199747 +2199748 +2199749 +2199750 +2199751 +2199752 +2199753 +2199754 +2199755 +2199756 +2199757 +2199758 +2199759 +2199760 +2199761 +2199762 +2199763 +2199764 +2199765 +2199766 +2199767 +2199768 +2199769 +2199770 +2199771 +2199772 +2199773 +2199774 +2199775 +2199776 +2199777 +2199778 +2199779 +2199780 +2199781 +2199782 +2199783 +2199784 +2199785 +2199786 +2199787 +2199788 +2199789 +2199790 +2199791 +2199792 +2199793 +2199794 +2199795 +2199796 +2199797 +2199798 +2199799 +2199800 +2199801 +2199802 +2199803 +2199804 +2199805 +2199806 +2199807 +2199808 +2199809 +2199810 +2199811 +2199812 +2199813 +2199814 +2199815 +2199816 +2199817 +2199818 +2199819 +2199820 +2199821 +2199822 +2199823 +2199824 +2199825 +2199826 +2199827 +2199828 +2199829 +2199830 +2199831 +2199832 +2199833 +2199834 +2199835 +2199836 +2199837 +2199838 +2199839 +2199840 +2199841 +2199842 +2199843 +2199844 +2199845 +2199846 +2199847 +2199848 +2199849 +2199850 +2199851 +2199852 +2199853 +2199854 +2199855 +2199856 +2199857 +2199858 +2199859 +2199860 +2199861 +2199862 +2199863 +2199864 +2199865 +2199866 +2199867 +2199868 +2199869 +2199870 +2199871 +2199872 +2199873 +2199874 +2199875 +2199876 +2199877 +2199878 +2199879 +2199880 +2199881 +2199882 +2199883 +2199884 +2199885 +2199886 +2199887 +2199888 +2199889 +2199890 +2199891 +2199892 +2199893 +2199894 +2199895 +2199896 +2199897 +2199898 +2199899 +2199900 +2199901 +2199902 +2199903 +2199904 +2199905 +2199906 +2199907 +2199908 +2199909 +2199910 +2199911 +2199912 +2199913 +2199914 +2199915 +2199916 +2199917 +2199918 +2199919 +2199920 +2199921 +2199922 +2199923 +2199924 +2199925 +2199926 +2199927 +2199928 +2199929 +2199930 +2199931 +2199932 +2199933 +2199934 +2199935 +2199936 +2199937 +2199938 +2199939 +2199940 +2199941 +2199942 +2199943 +2199944 +2199945 +2199946 +2199947 +2199948 +2199949 +2199950 +2199951 +2203868 +2203869 +2203870 +2203871 +2203872 +2203873 +2203874 +2203875 +2203876 +2203877 +2203878 +2203879 +2203880 +2203881 +2203882 +2203883 +2203884 +2203885 +2203886 +2203887 +2203888 +2203889 +2203890 +2203892 +2203893 +2203894 +2203895 +2203896 +2203897 +2203898 +2203899 +2203900 +2203901 +2203902 +2203903 +2203904 +2203905 +2203906 +2203907 +2203908 +2203909 +2203910 +2203911 +2203912 +2203913 +2203914 +2203915 +2203916 +2203917 +2203918 +2203919 +2203920 +2203921 +2203922 +2203923 +2203924 +2203925 +2203926 +2203927 +2203928 +2203929 +2203930 +2203931 +2203932 +2203933 +2203934 +2203935 +2203936 +2203937 +2203938 +2203939 +2203940 +2203941 +2203942 +2203943 +2203944 +2203945 +2203946 +2203947 +2203948 +2203949 +2203950 +2203951 +2203952 +2203953 +2203954 +2203955 +2203956 +2203957 +2203958 +2203959 +2203960 +2203961 +2203962 +2203963 +2203964 +2203965 +2203966 +2203967 +2203968 +2203969 +2203970 +2203971 +2203972 +2203973 +2203974 +2203975 +2203976 +2203977 +2203978 +2203979 +2203980 +2203981 +2203982 +2203983 +2203984 +2203985 +2203986 +2203987 +2203988 +2203989 +2203990 +2203991 +2203992 +2203993 +2203994 +2203995 +2203996 +2203997 +2203998 +2203999 +2204000 +2204001 +2204002 +2204003 +2204004 +2204005 +2204006 +2204007 +2204008 +2204009 +2204010 +2204011 +2204012 +2204013 +2204014 +2204015 +2204016 +2204017 +2204018 +2204019 +2204020 +2204021 +2204022 +2204023 +2204024 +2204025 +2204026 +2204027 +2204028 +2204029 +2204030 +2204031 +2204032 +2204033 +2204034 +2204035 +2204036 +2204037 +2204038 +2204039 +2204040 +2204041 +2204042 +2204043 +2204044 +2204045 +2204046 +2204047 +2204048 +2204049 +2204050 +2204051 +2204052 +2204053 +2204054 +2204055 +2204056 +2204057 +2204058 +2204059 +2204060 +2204061 +2204062 +2204063 +2204064 +2204065 +2204067 +2204068 +2204069 +2204070 +2204071 +2204072 +2204073 +2204074 +2204075 +2204076 +2204077 +2204078 +2204079 +2204080 +2204081 +2204082 +2204083 +2204084 +2204085 +2204086 +2204087 +2204088 +2204089 +2204090 +2204091 +2204092 +2204093 +2204094 +2204095 +2204096 +2204097 +2204098 +2204099 +2204100 +2204101 +2204102 +2204103 +2204104 +2204105 +2204106 +2204107 +2204108 +2204109 +2204110 +2204111 +2204112 +2204113 +2204114 +2204115 +2204116 +2204117 +2204118 +2204119 +2204120 +2204121 +2204122 +2204123 +2204124 +2204125 +2204126 +2204127 +2204128 +2204129 +2204130 +2204131 +2204132 +2204133 +2204134 +2204135 +2204136 +2204137 +2204138 +2204139 +2204140 +2204141 +2204142 +2204143 +2204144 +2204145 +2204146 +2204147 +2204148 +2204149 +2204150 +2204151 +2204152 +2204153 +2204154 +2204155 +2204156 +2204157 +2204158 +2204159 +2204160 +2204161 +2204162 +2204163 +2204164 +2204165 +2204166 +2204167 +2204168 +2204169 +2204170 +2204171 +2204172 +2204173 +2204174 +2204175 +2204176 +2204177 +2204178 +2204179 +2204180 +2204181 +2204182 +2204183 +2204184 +2204185 +2204186 +2204187 +2204188 +2204189 +2204190 +2204191 +2204192 +2204193 +2204194 +2204195 +2204196 +2204197 +2204198 +2204199 +2204200 +2204201 +2204202 +2204203 +2204204 +2204205 +2204206 +2204207 +2204208 +2204209 +2204210 +2204211 +2204212 +2204213 +2204214 +2204215 +2204216 +2204217 +2204218 +2204219 +2204220 +2204221 +2204222 +2204223 +2204224 +2204225 +2204226 +2204227 +2204228 +2204229 +2204232 +2204233 +2204234 +2204235 +2204236 +2204237 +2204238 +2204239 +2204240 +2204241 +2204242 +2204243 +2204244 +2204245 +2204246 +2204247 +2204248 +2204249 +2204250 +2204251 +2204252 +2204253 +2204254 +2204255 +2204256 +2204257 +2204258 +2204259 +2204260 +2204261 +2204262 +2204263 +2204264 +2204265 +2204266 +2204267 +2204268 +2204269 +2204304 +2208189 +2208190 +2208191 +2208192 +2208193 +2208194 +2208195 +2208196 +2208197 +2208198 +2208199 +2208200 +2208201 +2208202 +2208204 +2208205 +2208206 +2208207 +2208208 +2208209 +2208210 +2208211 +2208213 +2208214 +2208215 +2208216 +2208217 +2208218 +2208219 +2208220 +2208221 +2208222 +2208223 +2208224 +2208225 +2208226 +2208227 +2208228 +2208229 +2208230 +2208231 +2208232 +2208233 +2208234 +2208235 +2208236 +2208237 +2208238 +2208239 +2208240 +2208241 +2208242 +2208243 +2208244 +2208245 +2208246 +2208247 +2208248 +2208249 +2208250 +2208251 +2208252 +2208253 +2208254 +2208255 +2208256 +2208257 +2208258 +2208259 +2208260 +2208261 +2208262 +2208263 +2208264 +2208265 +2208266 +2208267 +2208268 +2208269 +2208270 +2208271 +2208272 +2208273 +2208274 +2208275 +2208276 +2208277 +2208278 +2208279 +2208280 +2208281 +2208282 +2208283 +2208284 +2208285 +2208286 +2208287 +2208288 +2208289 +2208290 +2208291 +2208292 +2208293 +2208294 +2208295 +2208296 +2208297 +2208298 +2208299 +2208300 +2208301 +2208302 +2208303 +2208304 +2208305 +2208306 +2208307 +2208308 +2208309 +2208310 +2208311 +2208312 +2208313 +2208314 +2208315 +2208316 +2208317 +2208318 +2208319 +2208320 +2208321 +2208322 +2208323 +2208324 +2208325 +2208326 +2208327 +2208328 +2208329 +2208330 +2208331 +2208332 +2208333 +2208334 +2208335 +2208336 +2208337 +2208338 +2208339 +2208340 +2208341 +2208342 +2208343 +2208344 +2208345 +2208346 +2208347 +2208348 +2208349 +2208350 +2208351 +2208352 +2208353 +2208354 +2208355 +2208356 +2208357 +2208358 +2208359 +2208360 +2208361 +2208362 +2208363 +2208364 +2208365 +2208366 +2208367 +2208368 +2208369 +2208370 +2208371 +2208372 +2208373 +2208374 +2208375 +2208376 +2208377 +2208378 +2208379 +2208380 +2208381 +2208382 +2208383 +2208384 +2208386 +2208387 +2208388 +2208389 +2208390 +2208391 +2208392 +2208393 +2208394 +2208395 +2208396 +2208397 +2208398 +2208399 +2208400 +2208401 +2208402 +2208403 +2208404 +2208405 +2208406 +2208407 +2208408 +2208409 +2208410 +2208411 +2208412 +2208413 +2208414 +2208415 +2208416 +2208417 +2208418 +2208419 +2208420 +2208421 +2208422 +2208423 +2208424 +2208425 +2208426 +2208427 +2208428 +2208429 +2208430 +2208431 +2208432 +2208433 +2208434 +2208435 +2208436 +2208437 +2208438 +2208439 +2208440 +2208441 +2208442 +2208443 +2208444 +2208445 +2208446 +2208447 +2208448 +2208449 +2208450 +2208451 +2208452 +2208453 +2208454 +2208455 +2208456 +2208457 +2208458 +2208459 +2208460 +2208461 +2208462 +2208463 +2208464 +2208465 +2208466 +2208467 +2208468 +2208469 +2208470 +2208471 +2208472 +2208473 +2208474 +2208475 +2208476 +2208477 +2208478 +2208479 +2208480 +2208481 +2208482 +2208483 +2208484 +2208485 +2208486 +2208487 +2208488 +2208489 +2208490 +2208491 +2208492 +2208493 +2208494 +2208495 +2208496 +2208497 +2208498 +2208499 +2208500 +2208501 +2208502 +2208503 +2208504 +2208505 +2208506 +2208507 +2208508 +2208509 +2208510 +2208511 +2208512 +2208513 +2208514 +2208515 +2208516 +2208517 +2208518 +2208519 +2208520 +2208521 +2208522 +2208523 +2208524 +2208525 +2208526 +2208527 +2208528 +2208529 +2208530 +2208531 +2208532 +2208533 +2208534 +2208535 +2208536 +2208537 +2208538 +2208539 +2208540 +2208541 +2208542 +2208543 +2208544 +2208547 +2208548 +2208551 +2208552 +2208553 +2208554 +2208555 +2208556 +2208557 +2208558 +2208559 +2208560 +2208561 +2208562 +2208563 +2208564 +2208565 +2208566 +2208567 +2208568 +2208569 +2208570 +2208571 +2208572 +2208573 +2208574 +2208575 +2208576 +2208577 +2208578 +2208579 +2208580 +2208581 +2208582 +2208583 +2208584 +2208585 +2208586 +2208587 +2208620 +2208621 +2208622 +2208623 +2208624 +2208625 +2208626 +2208627 +2208851 +2212511 +2212512 +2212513 +2212514 +2212515 +2212516 +2212517 +2212518 +2212519 +2212520 +2212521 +2212522 +2212523 +2212524 +2212525 +2212529 +2212532 +2212533 +2212534 +2212535 +2212536 +2212537 +2212538 +2212539 +2212540 +2212541 +2212542 +2212543 +2212544 +2212545 +2212546 +2212547 +2212548 +2212549 +2212550 +2212551 +2212552 +2212553 +2212554 +2212555 +2212556 +2212557 +2212558 +2212559 +2212560 +2212561 +2212562 +2212563 +2212564 +2212565 +2212566 +2212567 +2212568 +2212569 +2212570 +2212571 +2212572 +2212573 +2212574 +2212575 +2212576 +2212577 +2212578 +2212579 +2212580 +2212581 +2212582 +2212583 +2212584 +2212585 +2212586 +2212587 +2212588 +2212589 +2212590 +2212591 +2212592 +2212593 +2212594 +2212595 +2212596 +2212597 +2212598 +2212599 +2212600 +2212601 +2212602 +2212603 +2212604 +2212605 +2212606 +2212607 +2212608 +2212609 +2212610 +2212611 +2212612 +2212613 +2212614 +2212615 +2212616 +2212617 +2212618 +2212619 +2212620 +2212621 +2212622 +2212623 +2212624 +2212625 +2212626 +2212627 +2212628 +2212629 +2212630 +2212631 +2212632 +2212633 +2212634 +2212635 +2212636 +2212637 +2212638 +2212639 +2212640 +2212641 +2212642 +2212643 +2212644 +2212645 +2212646 +2212647 +2212648 +2212649 +2212650 +2212651 +2212652 +2212653 +2212654 +2212655 +2212656 +2212657 +2212658 +2212659 +2212660 +2212661 +2212662 +2212663 +2212664 +2212665 +2212666 +2212667 +2212668 +2212669 +2212670 +2212671 +2212672 +2212673 +2212674 +2212675 +2212676 +2212677 +2212678 +2212679 +2212680 +2212681 +2212682 +2212683 +2212684 +2212685 +2212686 +2212687 +2212688 +2212689 +2212690 +2212691 +2212692 +2212693 +2212694 +2212695 +2212696 +2212697 +2212698 +2212699 +2212700 +2212701 +2212702 +2212703 +2212704 +2212705 +2212706 +2212707 +2212708 +2212709 +2212710 +2212711 +2212712 +2212713 +2212714 +2212715 +2212716 +2212717 +2212718 +2212719 +2212720 +2212721 +2212722 +2212723 +2212724 +2212725 +2212726 +2212727 +2212728 +2212729 +2212730 +2212731 +2212732 +2212733 +2212734 +2212735 +2212736 +2212737 +2212738 +2212739 +2212740 +2212741 +2212742 +2212743 +2212744 +2212745 +2212746 +2212747 +2212748 +2212749 +2212750 +2212751 +2212752 +2212753 +2212754 +2212755 +2212756 +2212757 +2212758 +2212759 +2212760 +2212761 +2212762 +2212763 +2212764 +2212765 +2212766 +2212767 +2212768 +2212769 +2212770 +2212771 +2212772 +2212773 +2212774 +2212775 +2212776 +2212777 +2212778 +2212779 +2212780 +2212781 +2212782 +2212783 +2212784 +2212785 +2212786 +2212787 +2212788 +2212789 +2212790 +2212791 +2212792 +2212793 +2212794 +2212795 +2212796 +2212797 +2212798 +2212799 +2212800 +2212801 +2212802 +2212803 +2212804 +2212805 +2212806 +2212807 +2212808 +2212809 +2212810 +2212811 +2212812 +2212813 +2212814 +2212815 +2212816 +2212817 +2212818 +2212819 +2212820 +2212821 +2212822 +2212823 +2212824 +2212825 +2212826 +2212827 +2212828 +2212829 +2212830 +2212831 +2212832 +2212833 +2212834 +2212835 +2212836 +2212837 +2212838 +2212839 +2212840 +2212841 +2212842 +2212843 +2212844 +2212845 +2212846 +2212847 +2212848 +2212849 +2212850 +2212851 +2212852 +2212853 +2212854 +2212855 +2212856 +2212857 +2212858 +2212859 +2212860 +2212861 +2212862 +2212863 +2212864 +2212865 +2212866 +2212867 +2212868 +2212869 +2212870 +2212871 +2212872 +2212873 +2212874 +2212875 +2212876 +2212877 +2212878 +2212879 +2212880 +2212881 +2212882 +2212883 +2212884 +2212885 +2212886 +2212887 +2212888 +2212889 +2212890 +2212891 +2212892 +2212893 +2212894 +2212895 +2212896 +2212897 +2212898 +2212899 +2212900 +2212901 +2212902 +2212903 +2212904 +2212905 +2212906 +2212938 +2212939 +2212940 +2212941 +2212942 +2212943 +2212944 +2212945 +2213171 +2216831 +2216832 +2216833 +2216834 +2216835 +2216836 +2216837 +2216838 +2216839 +2216840 +2216841 +2216842 +2216843 +2216844 +2216847 +2216850 +2216851 +2216852 +2216853 +2216854 +2216855 +2216856 +2216857 +2216858 +2216859 +2216860 +2216861 +2216862 +2216863 +2216864 +2216865 +2216866 +2216867 +2216868 +2216869 +2216870 +2216871 +2216872 +2216873 +2216874 +2216875 +2216876 +2216877 +2216878 +2216879 +2216880 +2216881 +2216882 +2216883 +2216884 +2216885 +2216886 +2216887 +2216888 +2216889 +2216890 +2216891 +2216892 +2216893 +2216894 +2216895 +2216896 +2216897 +2216898 +2216899 +2216900 +2216901 +2216902 +2216903 +2216904 +2216905 +2216906 +2216907 +2216908 +2216909 +2216910 +2216911 +2216912 +2216913 +2216914 +2216915 +2216916 +2216917 +2216918 +2216919 +2216920 +2216921 +2216922 +2216923 +2216924 +2216925 +2216926 +2216927 +2216928 +2216929 +2216930 +2216931 +2216932 +2216933 +2216934 +2216935 +2216936 +2216937 +2216938 +2216939 +2216940 +2216941 +2216942 +2216943 +2216944 +2216945 +2216946 +2216947 +2216948 +2216949 +2216950 +2216951 +2216952 +2216953 +2216954 +2216955 +2216956 +2216957 +2216958 +2216959 +2216960 +2216961 +2216962 +2216963 +2216964 +2216965 +2216966 +2216967 +2216968 +2216969 +2216970 +2216971 +2216972 +2216973 +2216974 +2216975 +2216976 +2216977 +2216978 +2216979 +2216980 +2216981 +2216982 +2216983 +2216984 +2216985 +2216986 +2216987 +2216988 +2216989 +2216990 +2216991 +2216992 +2216993 +2216994 +2216995 +2216996 +2216997 +2216998 +2216999 +2217000 +2217001 +2217002 +2217003 +2217004 +2217005 +2217006 +2217007 +2217008 +2217009 +2217010 +2217011 +2217012 +2217013 +2217014 +2217015 +2217016 +2217017 +2217018 +2217019 +2217020 +2217021 +2217022 +2217023 +2217024 +2217025 +2217026 +2217027 +2217028 +2217029 +2217030 +2217031 +2217032 +2217033 +2217034 +2217035 +2217036 +2217037 +2217038 +2217039 +2217040 +2217041 +2217042 +2217043 +2217044 +2217045 +2217046 +2217047 +2217048 +2217049 +2217050 +2217051 +2217052 +2217053 +2217054 +2217055 +2217056 +2217057 +2217058 +2217059 +2217060 +2217061 +2217062 +2217063 +2217064 +2217065 +2217066 +2217067 +2217068 +2217069 +2217070 +2217071 +2217072 +2217073 +2217074 +2217075 +2217076 +2217077 +2217078 +2217079 +2217080 +2217081 +2217082 +2217083 +2217084 +2217085 +2217086 +2217087 +2217088 +2217089 +2217090 +2217091 +2217092 +2217093 +2217094 +2217095 +2217096 +2217097 +2217098 +2217099 +2217100 +2217101 +2217102 +2217103 +2217104 +2217105 +2217106 +2217107 +2217108 +2217109 +2217110 +2217111 +2217112 +2217113 +2217114 +2217115 +2217116 +2217117 +2217118 +2217119 +2217120 +2217121 +2217122 +2217123 +2217124 +2217125 +2217126 +2217127 +2217128 +2217129 +2217130 +2217131 +2217132 +2217133 +2217134 +2217135 +2217136 +2217137 +2217138 +2217139 +2217140 +2217141 +2217142 +2217143 +2217144 +2217145 +2217146 +2217147 +2217148 +2217149 +2217150 +2217151 +2217152 +2217153 +2217154 +2217155 +2217156 +2217157 +2217158 +2217159 +2217160 +2217161 +2217162 +2217163 +2217164 +2217165 +2217166 +2217167 +2217168 +2217169 +2217170 +2217171 +2217172 +2217173 +2217174 +2217175 +2217176 +2217177 +2217178 +2217179 +2217180 +2217181 +2217182 +2217183 +2217184 +2217185 +2217186 +2217190 +2217191 +2217192 +2217193 +2217194 +2217195 +2217196 +2217197 +2217198 +2217199 +2217200 +2217201 +2217202 +2217203 +2217204 +2217205 +2217206 +2217207 +2217208 +2217209 +2217210 +2217211 +2217212 +2217213 +2217214 +2217215 +2217216 +2217217 +2217218 +2217219 +2217220 +2217221 +2217222 +2217223 +2217224 +2217225 +2217257 +2217258 +2217259 +2217260 +2217261 +2217262 +2217263 +2217491 +2221151 +2221152 +2221153 +2221154 +2221155 +2221156 +2221157 +2221158 +2221159 +2221160 +2221161 +2221162 +2221163 +2221164 +2221166 +2221169 +2221170 +2221171 +2221172 +2221173 +2221174 +2221175 +2221176 +2221177 +2221178 +2221179 +2221180 +2221181 +2221182 +2221183 +2221184 +2221185 +2221186 +2221187 +2221188 +2221189 +2221190 +2221191 +2221192 +2221193 +2221194 +2221195 +2221196 +2221197 +2221198 +2221199 +2221200 +2221201 +2221202 +2221203 +2221204 +2221205 +2221206 +2221207 +2221208 +2221209 +2221210 +2221211 +2221212 +2221213 +2221214 +2221215 +2221216 +2221217 +2221218 +2221219 +2221220 +2221221 +2221222 +2221223 +2221224 +2221225 +2221226 +2221227 +2221228 +2221229 +2221230 +2221231 +2221232 +2221233 +2221234 +2221235 +2221236 +2221237 +2221238 +2221239 +2221240 +2221241 +2221242 +2221243 +2221244 +2221245 +2221246 +2221247 +2221248 +2221249 +2221250 +2221251 +2221252 +2221253 +2221254 +2221255 +2221256 +2221257 +2221258 +2221259 +2221260 +2221261 +2221262 +2221263 +2221264 +2221265 +2221266 +2221267 +2221268 +2221269 +2221270 +2221271 +2221272 +2221273 +2221274 +2221275 +2221276 +2221277 +2221278 +2221279 +2221280 +2221281 +2221282 +2221283 +2221284 +2221285 +2221286 +2221287 +2221288 +2221289 +2221290 +2221291 +2221292 +2221293 +2221294 +2221295 +2221296 +2221297 +2221298 +2221299 +2221300 +2221301 +2221302 +2221303 +2221304 +2221305 +2221306 +2221307 +2221308 +2221309 +2221310 +2221311 +2221312 +2221313 +2221314 +2221315 +2221316 +2221317 +2221318 +2221319 +2221320 +2221321 +2221322 +2221323 +2221324 +2221325 +2221326 +2221327 +2221328 +2221329 +2221330 +2221331 +2221332 +2221333 +2221334 +2221335 +2221336 +2221337 +2221338 +2221339 +2221340 +2221341 +2221342 +2221343 +2221344 +2221345 +2221346 +2221347 +2221348 +2221349 +2221350 +2221351 +2221352 +2221353 +2221354 +2221355 +2221356 +2221357 +2221358 +2221359 +2221360 +2221361 +2221362 +2221363 +2221364 +2221365 +2221366 +2221367 +2221368 +2221369 +2221370 +2221371 +2221372 +2221373 +2221374 +2221375 +2221376 +2221377 +2221378 +2221379 +2221380 +2221381 +2221382 +2221383 +2221384 +2221385 +2221386 +2221387 +2221388 +2221389 +2221390 +2221391 +2221392 +2221393 +2221394 +2221395 +2221396 +2221397 +2221398 +2221399 +2221400 +2221401 +2221402 +2221403 +2221404 +2221405 +2221406 +2221407 +2221408 +2221409 +2221410 +2221411 +2221412 +2221413 +2221414 +2221415 +2221416 +2221417 +2221418 +2221419 +2221420 +2221421 +2221422 +2221423 +2221424 +2221425 +2221426 +2221427 +2221428 +2221429 +2221430 +2221431 +2221432 +2221433 +2221434 +2221435 +2221436 +2221437 +2221438 +2221439 +2221440 +2221441 +2221442 +2221443 +2221444 +2221445 +2221446 +2221447 +2221448 +2221449 +2221450 +2221451 +2221452 +2221453 +2221454 +2221455 +2221456 +2221457 +2221458 +2221459 +2221460 +2221461 +2221462 +2221463 +2221464 +2221465 +2221466 +2221467 +2221468 +2221469 +2221470 +2221471 +2221472 +2221473 +2221474 +2221475 +2221476 +2221477 +2221478 +2221479 +2221480 +2221481 +2221482 +2221483 +2221484 +2221485 +2221486 +2221487 +2221488 +2221489 +2221490 +2221491 +2221492 +2221493 +2221494 +2221495 +2221496 +2221497 +2221498 +2221499 +2221500 +2221501 +2221502 +2221503 +2221504 +2221510 +2221511 +2221512 +2221513 +2221514 +2221515 +2221516 +2221517 +2221518 +2221519 +2221520 +2221521 +2221522 +2221523 +2221524 +2221525 +2221526 +2221527 +2221528 +2221529 +2221530 +2221531 +2221532 +2221533 +2221534 +2221535 +2221536 +2221537 +2221538 +2221539 +2221540 +2221541 +2221542 +2221543 +2221574 +2221575 +2221576 +2221577 +2221578 +2221579 +2221580 +2221581 +2221808 +2221809 +2221810 +2221811 +2221812 +2221813 +2221814 +2221815 +2221816 +2221817 +2221818 +2221819 +2221820 +2221821 +2221822 +2221823 +2225471 +2225472 +2225473 +2225474 +2225475 +2225476 +2225477 +2225478 +2225479 +2225480 +2225481 +2225482 +2225483 +2225484 +2225485 +2225486 +2225487 +2225488 +2225489 +2225490 +2225491 +2225492 +2225493 +2225494 +2225495 +2225496 +2225497 +2225498 +2225499 +2225500 +2225501 +2225502 +2225503 +2225504 +2225505 +2225506 +2225507 +2225508 +2225509 +2225510 +2225511 +2225512 +2225513 +2225514 +2225515 +2225516 +2225517 +2225518 +2225519 +2225520 +2225521 +2225522 +2225523 +2225524 +2225525 +2225526 +2225527 +2225528 +2225529 +2225530 +2225531 +2225532 +2225533 +2225534 +2225535 +2225536 +2225537 +2225538 +2225539 +2225540 +2225541 +2225542 +2225543 +2225544 +2225545 +2225546 +2225547 +2225548 +2225549 +2225550 +2225551 +2225552 +2225553 +2225554 +2225555 +2225556 +2225557 +2225558 +2225559 +2225560 +2225561 +2225562 +2225563 +2225564 +2225565 +2225566 +2225567 +2225568 +2225569 +2225570 +2225571 +2225572 +2225573 +2225574 +2225575 +2225576 +2225577 +2225578 +2225579 +2225580 +2225581 +2225582 +2225583 +2225584 +2225585 +2225586 +2225587 +2225588 +2225589 +2225590 +2225591 +2225592 +2225593 +2225594 +2225595 +2225596 +2225597 +2225598 +2225599 +2225600 +2225601 +2225602 +2225603 +2225604 +2225605 +2225606 +2225607 +2225608 +2225609 +2225610 +2225611 +2225612 +2225613 +2225614 +2225615 +2225616 +2225617 +2225618 +2225619 +2225620 +2225621 +2225622 +2225623 +2225624 +2225625 +2225626 +2225627 +2225628 +2225629 +2225630 +2225631 +2225632 +2225633 +2225634 +2225635 +2225636 +2225637 +2225638 +2225639 +2225640 +2225641 +2225642 +2225643 +2225644 +2225645 +2225646 +2225647 +2225648 +2225649 +2225650 +2225651 +2225652 +2225653 +2225654 +2225655 +2225656 +2225657 +2225658 +2225659 +2225660 +2225661 +2225662 +2225663 +2225664 +2225665 +2225666 +2225667 +2225668 +2225669 +2225670 +2225671 +2225672 +2225673 +2225674 +2225675 +2225676 +2225677 +2225678 +2225679 +2225680 +2225681 +2225682 +2225683 +2225684 +2225685 +2225686 +2225687 +2225688 +2225689 +2225690 +2225691 +2225692 +2225693 +2225694 +2225695 +2225696 +2225697 +2225698 +2225699 +2225700 +2225701 +2225702 +2225703 +2225704 +2225705 +2225706 +2225707 +2225708 +2225709 +2225710 +2225711 +2225712 +2225713 +2225714 +2225715 +2225716 +2225717 +2225718 +2225719 +2225720 +2225721 +2225722 +2225723 +2225724 +2225725 +2225726 +2225727 +2225728 +2225729 +2225730 +2225731 +2225732 +2225733 +2225734 +2225735 +2225736 +2225737 +2225738 +2225739 +2225740 +2225741 +2225742 +2225743 +2225744 +2225745 +2225746 +2225747 +2225748 +2225749 +2225750 +2225751 +2225752 +2225753 +2225754 +2225755 +2225756 +2225757 +2225758 +2225759 +2225760 +2225761 +2225762 +2225763 +2225764 +2225765 +2225766 +2225767 +2225768 +2225769 +2225770 +2225771 +2225772 +2225773 +2225774 +2225775 +2225776 +2225777 +2225778 +2225779 +2225780 +2225781 +2225782 +2225783 +2225784 +2225785 +2225786 +2225787 +2225788 +2225789 +2225790 +2225791 +2225792 +2225793 +2225794 +2225795 +2225796 +2225797 +2225798 +2225799 +2225800 +2225801 +2225802 +2225803 +2225804 +2225805 +2225806 +2225807 +2225808 +2225809 +2225810 +2225811 +2225812 +2225813 +2225814 +2225815 +2225816 +2225817 +2225818 +2225819 +2225820 +2225821 +2225822 +2225823 +2225824 +2225825 +2225826 +2225827 +2225829 +2225830 +2225831 +2225832 +2225833 +2225834 +2225835 +2225836 +2225837 +2225838 +2225839 +2225840 +2225841 +2225842 +2225843 +2225844 +2225845 +2225846 +2225847 +2225848 +2225849 +2225850 +2225851 +2225852 +2225853 +2225854 +2225855 +2225856 +2225857 +2225858 +2225859 +2225860 +2225861 +2225862 +2225893 +2225894 +2225895 +2225896 +2225897 +2225898 +2225899 +2225900 +2225901 +2226128 +2226129 +2226130 +2226131 +2226132 +2226133 +2226134 +2226135 +2226136 +2226137 +2226138 +2226139 +2226140 +2226141 +2226142 +2226143 +2229791 +2229792 +2229793 +2229794 +2229795 +2229796 +2229797 +2229798 +2229799 +2229800 +2229801 +2229802 +2229803 +2229804 +2229805 +2229806 +2229807 +2229808 +2229809 +2229810 +2229811 +2229812 +2229813 +2229814 +2229815 +2229816 +2229817 +2229818 +2229819 +2229821 +2229822 +2229823 +2229824 +2229825 +2229826 +2229827 +2229828 +2229829 +2229830 +2229831 +2229832 +2229833 +2229834 +2229835 +2229836 +2229837 +2229838 +2229839 +2229840 +2229841 +2229842 +2229843 +2229844 +2229845 +2229846 +2229847 +2229848 +2229849 +2229850 +2229851 +2229852 +2229853 +2229854 +2229855 +2229856 +2229857 +2229858 +2229859 +2229860 +2229861 +2229862 +2229863 +2229864 +2229865 +2229866 +2229867 +2229868 +2229869 +2229870 +2229871 +2229872 +2229873 +2229874 +2229875 +2229876 +2229877 +2229878 +2229879 +2229880 +2229881 +2229882 +2229883 +2229884 +2229885 +2229886 +2229887 +2229888 +2229889 +2229890 +2229891 +2229892 +2229893 +2229894 +2229895 +2229896 +2229897 +2229898 +2229899 +2229900 +2229901 +2229902 +2229903 +2229904 +2229905 +2229906 +2229907 +2229908 +2229909 +2229910 +2229911 +2229912 +2229913 +2229914 +2229915 +2229916 +2229917 +2229918 +2229919 +2229920 +2229921 +2229922 +2229923 +2229924 +2229925 +2229926 +2229927 +2229928 +2229929 +2229930 +2229931 +2229932 +2229933 +2229934 +2229935 +2229936 +2229937 +2229938 +2229939 +2229940 +2229941 +2229942 +2229943 +2229944 +2229945 +2229946 +2229947 +2229948 +2229949 +2229950 +2229951 +2229952 +2229953 +2229954 +2229955 +2229956 +2229957 +2229958 +2229959 +2229960 +2229961 +2229962 +2229963 +2229964 +2229965 +2229966 +2229967 +2229968 +2229969 +2229970 +2229971 +2229972 +2229973 +2229974 +2229975 +2229976 +2229977 +2229978 +2229979 +2229980 +2229981 +2229982 +2229983 +2229984 +2229985 +2229986 +2229987 +2229988 +2229989 +2229990 +2229991 +2229992 +2229993 +2229994 +2229995 +2229996 +2229997 +2229998 +2229999 +2230000 +2230001 +2230002 +2230003 +2230004 +2230005 +2230006 +2230007 +2230008 +2230009 +2230010 +2230011 +2230012 +2230013 +2230014 +2230015 +2230016 +2230017 +2230018 +2230019 +2230020 +2230021 +2230022 +2230023 +2230024 +2230025 +2230026 +2230027 +2230028 +2230029 +2230030 +2230031 +2230032 +2230033 +2230034 +2230035 +2230036 +2230037 +2230038 +2230039 +2230040 +2230041 +2230042 +2230043 +2230044 +2230045 +2230046 +2230047 +2230048 +2230049 +2230050 +2230051 +2230052 +2230053 +2230054 +2230055 +2230056 +2230057 +2230058 +2230059 +2230060 +2230061 +2230062 +2230063 +2230064 +2230065 +2230066 +2230067 +2230068 +2230069 +2230070 +2230071 +2230072 +2230073 +2230074 +2230075 +2230076 +2230077 +2230078 +2230079 +2230080 +2230081 +2230082 +2230083 +2230084 +2230085 +2230086 +2230087 +2230088 +2230089 +2230090 +2230091 +2230092 +2230093 +2230094 +2230095 +2230096 +2230097 +2230098 +2230099 +2230100 +2230101 +2230102 +2230103 +2230104 +2230105 +2230106 +2230107 +2230108 +2230109 +2230110 +2230111 +2230112 +2230113 +2230114 +2230115 +2230116 +2230117 +2230118 +2230119 +2230120 +2230121 +2230122 +2230123 +2230124 +2230125 +2230126 +2230127 +2230128 +2230129 +2230130 +2230131 +2230132 +2230133 +2230134 +2230135 +2230136 +2230137 +2230138 +2230139 +2230140 +2230141 +2230142 +2230143 +2230144 +2230145 +2230146 +2230147 +2230148 +2230149 +2230150 +2230151 +2230152 +2230153 +2230154 +2230155 +2230156 +2230157 +2230158 +2230159 +2230160 +2230161 +2230162 +2230163 +2230164 +2230165 +2230166 +2230167 +2230168 +2230169 +2230170 +2230171 +2230172 +2230173 +2230174 +2230175 +2230176 +2230177 +2230178 +2230179 +2230180 +2230210 +2230211 +2230212 +2230213 +2230214 +2230215 +2230216 +2230217 +2230218 +2230219 +2230220 +2230448 +2230449 +2230450 +2230451 +2230452 +2230453 +2230454 +2230455 +2230456 +2230457 +2230458 +2230459 +2230460 +2230461 +2230462 +2230463 +2234111 +2234112 +2234113 +2234114 +2234115 +2234116 +2234117 +2234118 +2234119 +2234120 +2234121 +2234122 +2234123 +2234124 +2234125 +2234126 +2234127 +2234128 +2234129 +2234130 +2234131 +2234132 +2234133 +2234134 +2234135 +2234136 +2234137 +2234138 +2234141 +2234142 +2234143 +2234144 +2234145 +2234146 +2234147 +2234148 +2234149 +2234150 +2234151 +2234152 +2234153 +2234154 +2234155 +2234156 +2234157 +2234158 +2234159 +2234160 +2234161 +2234162 +2234163 +2234164 +2234165 +2234166 +2234167 +2234168 +2234169 +2234170 +2234171 +2234172 +2234173 +2234174 +2234175 +2234176 +2234177 +2234178 +2234179 +2234180 +2234181 +2234182 +2234183 +2234184 +2234185 +2234186 +2234187 +2234188 +2234189 +2234190 +2234191 +2234192 +2234193 +2234194 +2234195 +2234196 +2234197 +2234198 +2234199 +2234200 +2234201 +2234202 +2234203 +2234204 +2234205 +2234206 +2234207 +2234208 +2234209 +2234210 +2234211 +2234212 +2234213 +2234214 +2234215 +2234216 +2234217 +2234218 +2234219 +2234220 +2234221 +2234222 +2234223 +2234224 +2234225 +2234226 +2234227 +2234228 +2234229 +2234230 +2234231 +2234232 +2234233 +2234234 +2234235 +2234236 +2234237 +2234238 +2234239 +2234240 +2234241 +2234242 +2234243 +2234244 +2234245 +2234246 +2234247 +2234248 +2234249 +2234250 +2234251 +2234252 +2234253 +2234254 +2234255 +2234256 +2234257 +2234258 +2234259 +2234260 +2234261 +2234262 +2234263 +2234264 +2234265 +2234266 +2234267 +2234268 +2234269 +2234270 +2234271 +2234272 +2234273 +2234274 +2234275 +2234276 +2234277 +2234278 +2234279 +2234280 +2234281 +2234282 +2234283 +2234284 +2234285 +2234286 +2234287 +2234288 +2234289 +2234290 +2234291 +2234292 +2234293 +2234294 +2234295 +2234296 +2234297 +2234298 +2234299 +2234300 +2234301 +2234302 +2234303 +2234304 +2234305 +2234306 +2234307 +2234308 +2234309 +2234310 +2234311 +2234312 +2234313 +2234314 +2234315 +2234316 +2234317 +2234318 +2234319 +2234320 +2234321 +2234322 +2234323 +2234324 +2234325 +2234326 +2234327 +2234328 +2234329 +2234330 +2234331 +2234332 +2234333 +2234334 +2234335 +2234336 +2234337 +2234338 +2234339 +2234340 +2234341 +2234342 +2234343 +2234344 +2234345 +2234346 +2234347 +2234348 +2234349 +2234350 +2234351 +2234352 +2234353 +2234354 +2234355 +2234356 +2234357 +2234358 +2234359 +2234360 +2234361 +2234362 +2234363 +2234364 +2234365 +2234366 +2234367 +2234368 +2234369 +2234370 +2234371 +2234372 +2234373 +2234374 +2234375 +2234376 +2234377 +2234378 +2234379 +2234380 +2234381 +2234382 +2234383 +2234384 +2234385 +2234386 +2234387 +2234388 +2234389 +2234390 +2234391 +2234392 +2234393 +2234394 +2234395 +2234396 +2234397 +2234398 +2234399 +2234400 +2234401 +2234402 +2234403 +2234404 +2234405 +2234406 +2234407 +2234408 +2234409 +2234410 +2234411 +2234412 +2234413 +2234414 +2234415 +2234416 +2234417 +2234418 +2234419 +2234420 +2234421 +2234422 +2234423 +2234424 +2234425 +2234426 +2234427 +2234428 +2234429 +2234430 +2234431 +2234432 +2234433 +2234434 +2234435 +2234436 +2234437 +2234438 +2234439 +2234440 +2234441 +2234442 +2234443 +2234444 +2234445 +2234446 +2234447 +2234448 +2234449 +2234450 +2234451 +2234452 +2234453 +2234454 +2234455 +2234456 +2234457 +2234458 +2234459 +2234460 +2234461 +2234462 +2234463 +2234464 +2234465 +2234466 +2234467 +2234468 +2234469 +2234470 +2234471 +2234472 +2234473 +2234474 +2234475 +2234476 +2234477 +2234478 +2234479 +2234480 +2234481 +2234482 +2234483 +2234484 +2234485 +2234486 +2234487 +2234488 +2234489 +2234490 +2234491 +2234492 +2234493 +2234494 +2234495 +2234496 +2234497 +2234498 +2234508 +2234509 +2234510 +2234528 +2234529 +2234530 +2234531 +2234532 +2234533 +2234534 +2234535 +2234536 +2234537 +2234538 +2234539 +2234541 +2234542 +2234543 +2234544 +2234545 +2234765 +2234766 +2234767 +2234768 +2234769 +2234770 +2234771 +2234772 +2234773 +2234774 +2234775 +2234776 +2234777 +2234778 +2234779 +2234780 +2234781 +2234782 +2234783 +2234784 +2234785 +2234786 +2238431 +2238432 +2238433 +2238434 +2238435 +2238436 +2238437 +2238438 +2238439 +2238440 +2238441 +2238442 +2238443 +2238444 +2238445 +2238446 +2238447 +2238448 +2238449 +2238450 +2238451 +2238452 +2238453 +2238454 +2238455 +2238456 +2238457 +2238458 +2238459 +2238460 +2238461 +2238462 +2238463 +2238464 +2238465 +2238466 +2238467 +2238468 +2238469 +2238470 +2238471 +2238472 +2238473 +2238474 +2238475 +2238476 +2238477 +2238478 +2238479 +2238480 +2238481 +2238482 +2238483 +2238484 +2238485 +2238486 +2238487 +2238488 +2238489 +2238490 +2238491 +2238492 +2238493 +2238494 +2238495 +2238496 +2238497 +2238498 +2238499 +2238500 +2238501 +2238502 +2238503 +2238504 +2238505 +2238506 +2238507 +2238508 +2238509 +2238510 +2238511 +2238512 +2238513 +2238514 +2238515 +2238516 +2238517 +2238518 +2238519 +2238520 +2238521 +2238522 +2238523 +2238524 +2238525 +2238526 +2238527 +2238528 +2238529 +2238530 +2238531 +2238532 +2238533 +2238534 +2238535 +2238536 +2238537 +2238538 +2238539 +2238540 +2238541 +2238542 +2238543 +2238544 +2238545 +2238546 +2238547 +2238548 +2238549 +2238550 +2238551 +2238552 +2238553 +2238554 +2238555 +2238556 +2238557 +2238558 +2238559 +2238560 +2238561 +2238562 +2238563 +2238564 +2238565 +2238566 +2238567 +2238568 +2238569 +2238570 +2238571 +2238572 +2238573 +2238574 +2238575 +2238576 +2238577 +2238578 +2238579 +2238580 +2238581 +2238582 +2238583 +2238584 +2238585 +2238586 +2238587 +2238588 +2238589 +2238590 +2238591 +2238592 +2238593 +2238594 +2238595 +2238596 +2238597 +2238598 +2238599 +2238600 +2238601 +2238602 +2238603 +2238604 +2238605 +2238606 +2238607 +2238608 +2238609 +2238610 +2238611 +2238612 +2238613 +2238614 +2238615 +2238616 +2238617 +2238618 +2238619 +2238620 +2238621 +2238622 +2238623 +2238624 +2238625 +2238626 +2238627 +2238628 +2238629 +2238630 +2238631 +2238632 +2238633 +2238634 +2238635 +2238636 +2238637 +2238638 +2238639 +2238640 +2238641 +2238642 +2238643 +2238644 +2238645 +2238646 +2238647 +2238648 +2238649 +2238650 +2238651 +2238652 +2238653 +2238654 +2238655 +2238656 +2238657 +2238658 +2238659 +2238660 +2238661 +2238662 +2238663 +2238664 +2238665 +2238666 +2238667 +2238668 +2238669 +2238670 +2238671 +2238672 +2238673 +2238674 +2238675 +2238676 +2238677 +2238678 +2238679 +2238680 +2238681 +2238682 +2238683 +2238684 +2238685 +2238686 +2238687 +2238688 +2238689 +2238690 +2238691 +2238692 +2238693 +2238694 +2238695 +2238696 +2238697 +2238698 +2238699 +2238700 +2238701 +2238702 +2238703 +2238704 +2238705 +2238706 +2238707 +2238708 +2238709 +2238710 +2238711 +2238712 +2238713 +2238714 +2238715 +2238716 +2238717 +2238718 +2238719 +2238720 +2238721 +2238722 +2238723 +2238724 +2238725 +2238726 +2238727 +2238728 +2238729 +2238730 +2238731 +2238732 +2238733 +2238734 +2238735 +2238736 +2238737 +2238738 +2238739 +2238740 +2238741 +2238742 +2238743 +2238744 +2238745 +2238746 +2238747 +2238748 +2238749 +2238750 +2238751 +2238752 +2238753 +2238754 +2238755 +2238756 +2238757 +2238758 +2238759 +2238760 +2238761 +2238762 +2238763 +2238764 +2238765 +2238766 +2238767 +2238768 +2238769 +2238770 +2238771 +2238772 +2238773 +2238774 +2238775 +2238776 +2238777 +2238778 +2238779 +2238780 +2238781 +2238782 +2238783 +2238784 +2238785 +2238786 +2238787 +2238788 +2238789 +2238790 +2238791 +2238792 +2238793 +2238794 +2238795 +2238796 +2238797 +2238798 +2238799 +2238800 +2238801 +2238802 +2238803 +2238804 +2238805 +2238806 +2238807 +2238808 +2238809 +2238810 +2238811 +2238812 +2238813 +2238814 +2238815 +2238816 +2238824 +2238825 +2238826 +2238827 +2238828 +2238829 +2238830 +2238832 +2238833 +2238842 +2238843 +2238844 +2238845 +2238846 +2238847 +2238848 +2238849 +2238850 +2238851 +2238852 +2238853 +2238854 +2238855 +2238856 +2238857 +2238858 +2238859 +2238860 +2238861 +2238862 +2238863 +2238864 +2238865 +2238866 +2238867 +2238868 +2239085 +2239086 +2239087 +2239088 +2239089 +2239090 +2239091 +2239092 +2239093 +2239094 +2239095 +2239096 +2239097 +2239098 +2239099 +2239100 +2239101 +2239102 +2239103 +2239104 +2239105 +2239106 +2242751 +2242752 +2242753 +2242754 +2242755 +2242756 +2242757 +2242758 +2242759 +2242760 +2242761 +2242762 +2242763 +2242764 +2242765 +2242766 +2242767 +2242768 +2242769 +2242770 +2242771 +2242772 +2242773 +2242774 +2242775 +2242776 +2242777 +2242778 +2242779 +2242780 +2242781 +2242782 +2242783 +2242784 +2242785 +2242786 +2242787 +2242788 +2242789 +2242790 +2242791 +2242792 +2242793 +2242794 +2242795 +2242796 +2242797 +2242798 +2242799 +2242800 +2242801 +2242802 +2242803 +2242804 +2242805 +2242806 +2242807 +2242808 +2242809 +2242810 +2242811 +2242812 +2242813 +2242814 +2242815 +2242816 +2242817 +2242818 +2242819 +2242820 +2242821 +2242822 +2242823 +2242824 +2242825 +2242826 +2242827 +2242828 +2242829 +2242830 +2242831 +2242832 +2242833 +2242834 +2242835 +2242836 +2242837 +2242838 +2242839 +2242840 +2242841 +2242842 +2242843 +2242844 +2242845 +2242846 +2242847 +2242848 +2242849 +2242850 +2242851 +2242852 +2242853 +2242854 +2242855 +2242856 +2242857 +2242858 +2242859 +2242860 +2242861 +2242862 +2242863 +2242864 +2242865 +2242866 +2242867 +2242868 +2242869 +2242870 +2242871 +2242872 +2242873 +2242874 +2242875 +2242876 +2242877 +2242878 +2242879 +2242880 +2242881 +2242882 +2242883 +2242884 +2242885 +2242886 +2242887 +2242888 +2242889 +2242890 +2242891 +2242892 +2242893 +2242894 +2242895 +2242896 +2242899 +2242900 +2242901 +2242902 +2242903 +2242904 +2242905 +2242906 +2242907 +2242908 +2242909 +2242910 +2242911 +2242912 +2242913 +2242914 +2242915 +2242916 +2242917 +2242918 +2242919 +2242920 +2242921 +2242922 +2242923 +2242924 +2242925 +2242926 +2242927 +2242928 +2242929 +2242930 +2242931 +2242932 +2242933 +2242934 +2242935 +2242936 +2242937 +2242938 +2242939 +2242940 +2242941 +2242942 +2242943 +2242944 +2242945 +2242946 +2242947 +2242948 +2242949 +2242950 +2242951 +2242952 +2242953 +2242954 +2242955 +2242956 +2242957 +2242958 +2242959 +2242960 +2242961 +2242962 +2242963 +2242964 +2242965 +2242966 +2242967 +2242968 +2242969 +2242970 +2242971 +2242972 +2242973 +2242974 +2242975 +2242976 +2242977 +2242978 +2242979 +2242980 +2242981 +2242982 +2242983 +2242984 +2242985 +2242986 +2242987 +2242988 +2242989 +2242990 +2242991 +2242992 +2242993 +2242994 +2242995 +2242996 +2242997 +2242998 +2242999 +2243000 +2243001 +2243002 +2243003 +2243004 +2243005 +2243006 +2243007 +2243008 +2243009 +2243010 +2243011 +2243012 +2243013 +2243014 +2243015 +2243016 +2243017 +2243018 +2243019 +2243020 +2243021 +2243022 +2243023 +2243024 +2243025 +2243026 +2243027 +2243028 +2243029 +2243030 +2243031 +2243032 +2243033 +2243034 +2243035 +2243036 +2243037 +2243038 +2243039 +2243040 +2243041 +2243042 +2243043 +2243044 +2243045 +2243046 +2243047 +2243048 +2243049 +2243050 +2243051 +2243052 +2243053 +2243054 +2243055 +2243056 +2243057 +2243058 +2243059 +2243060 +2243061 +2243062 +2243063 +2243064 +2243065 +2243066 +2243067 +2243068 +2243069 +2243070 +2243071 +2243072 +2243073 +2243074 +2243075 +2243076 +2243077 +2243078 +2243079 +2243080 +2243081 +2243082 +2243083 +2243084 +2243085 +2243086 +2243087 +2243088 +2243089 +2243090 +2243091 +2243092 +2243093 +2243094 +2243095 +2243096 +2243097 +2243098 +2243099 +2243100 +2243101 +2243102 +2243103 +2243104 +2243105 +2243106 +2243107 +2243108 +2243109 +2243110 +2243111 +2243112 +2243113 +2243114 +2243115 +2243116 +2243117 +2243118 +2243119 +2243120 +2243121 +2243122 +2243123 +2243124 +2243125 +2243126 +2243127 +2243128 +2243129 +2243130 +2243131 +2243132 +2243133 +2243134 +2243135 +2243138 +2243139 +2243140 +2243141 +2243142 +2243143 +2243144 +2243145 +2243146 +2243147 +2243148 +2243149 +2243160 +2243161 +2243162 +2243163 +2243164 +2243165 +2243166 +2243167 +2243168 +2243169 +2243170 +2243171 +2243172 +2243173 +2243174 +2243175 +2243176 +2243177 +2243178 +2243179 +2243180 +2243181 +2243182 +2243183 +2243184 +2243185 +2243186 +2243187 +2243188 +2243189 +2243209 +2243210 +2243215 +2243216 +2243217 +2243218 +2243219 +2243405 +2243406 +2243407 +2243408 +2243409 +2243410 +2243411 +2243412 +2243413 +2243414 +2243415 +2243416 +2243417 +2243418 +2243419 +2243420 +2243421 +2243422 +2243423 +2243424 +2243425 +2243426 +2247072 +2247073 +2247074 +2247075 +2247076 +2247077 +2247078 +2247079 +2247080 +2247081 +2247082 +2247083 +2247084 +2247085 +2247086 +2247087 +2247088 +2247089 +2247090 +2247091 +2247092 +2247093 +2247094 +2247095 +2247096 +2247097 +2247098 +2247099 +2247100 +2247101 +2247102 +2247103 +2247104 +2247105 +2247106 +2247107 +2247108 +2247109 +2247110 +2247111 +2247112 +2247113 +2247114 +2247115 +2247116 +2247117 +2247118 +2247119 +2247120 +2247121 +2247122 +2247123 +2247124 +2247125 +2247126 +2247127 +2247128 +2247129 +2247130 +2247131 +2247132 +2247133 +2247134 +2247135 +2247136 +2247137 +2247138 +2247139 +2247140 +2247141 +2247142 +2247143 +2247144 +2247145 +2247146 +2247147 +2247148 +2247149 +2247150 +2247151 +2247152 +2247153 +2247154 +2247155 +2247156 +2247157 +2247158 +2247159 +2247160 +2247161 +2247162 +2247163 +2247164 +2247165 +2247166 +2247167 +2247168 +2247169 +2247170 +2247171 +2247172 +2247173 +2247174 +2247175 +2247176 +2247177 +2247178 +2247179 +2247180 +2247181 +2247182 +2247183 +2247184 +2247185 +2247186 +2247187 +2247188 +2247189 +2247190 +2247191 +2247192 +2247193 +2247194 +2247195 +2247196 +2247197 +2247198 +2247199 +2247200 +2247201 +2247202 +2247203 +2247204 +2247205 +2247206 +2247207 +2247208 +2247209 +2247210 +2247211 +2247212 +2247213 +2247214 +2247215 +2247216 +2247217 +2247218 +2247219 +2247221 +2247222 +2247223 +2247224 +2247225 +2247226 +2247227 +2247228 +2247229 +2247230 +2247231 +2247232 +2247233 +2247234 +2247235 +2247236 +2247237 +2247238 +2247239 +2247240 +2247241 +2247242 +2247243 +2247244 +2247245 +2247246 +2247247 +2247248 +2247249 +2247250 +2247251 +2247252 +2247253 +2247254 +2247255 +2247256 +2247257 +2247258 +2247259 +2247260 +2247261 +2247262 +2247263 +2247264 +2247265 +2247266 +2247267 +2247268 +2247269 +2247270 +2247271 +2247272 +2247273 +2247274 +2247275 +2247276 +2247277 +2247278 +2247279 +2247280 +2247281 +2247282 +2247283 +2247284 +2247285 +2247286 +2247287 +2247288 +2247289 +2247290 +2247291 +2247292 +2247293 +2247294 +2247295 +2247296 +2247297 +2247298 +2247299 +2247300 +2247301 +2247302 +2247303 +2247304 +2247305 +2247306 +2247307 +2247308 +2247309 +2247310 +2247311 +2247312 +2247313 +2247314 +2247315 +2247316 +2247317 +2247318 +2247319 +2247320 +2247321 +2247322 +2247323 +2247324 +2247325 +2247326 +2247327 +2247328 +2247329 +2247330 +2247331 +2247332 +2247333 +2247334 +2247335 +2247336 +2247337 +2247338 +2247339 +2247340 +2247341 +2247342 +2247343 +2247344 +2247345 +2247346 +2247347 +2247348 +2247349 +2247350 +2247351 +2247352 +2247353 +2247354 +2247355 +2247356 +2247357 +2247358 +2247359 +2247360 +2247361 +2247362 +2247363 +2247364 +2247365 +2247366 +2247367 +2247368 +2247369 +2247370 +2247371 +2247372 +2247373 +2247374 +2247375 +2247376 +2247377 +2247378 +2247379 +2247380 +2247381 +2247382 +2247383 +2247384 +2247385 +2247386 +2247387 +2247388 +2247389 +2247390 +2247391 +2247392 +2247393 +2247394 +2247395 +2247396 +2247397 +2247398 +2247399 +2247400 +2247401 +2247402 +2247403 +2247404 +2247405 +2247406 +2247407 +2247408 +2247409 +2247410 +2247411 +2247412 +2247413 +2247414 +2247415 +2247416 +2247417 +2247418 +2247419 +2247420 +2247421 +2247422 +2247423 +2247424 +2247425 +2247426 +2247427 +2247428 +2247429 +2247430 +2247431 +2247432 +2247433 +2247434 +2247435 +2247436 +2247437 +2247438 +2247439 +2247440 +2247441 +2247442 +2247443 +2247444 +2247445 +2247446 +2247447 +2247448 +2247449 +2247450 +2247451 +2247452 +2247453 +2247454 +2247455 +2247456 +2247457 +2247458 +2247459 +2247460 +2247461 +2247462 +2247463 +2247464 +2247465 +2247466 +2247467 +2247468 +2247469 +2247470 +2247471 +2247472 +2247476 +2247477 +2247478 +2247479 +2247480 +2247481 +2247482 +2247483 +2247484 +2247485 +2247486 +2247487 +2247488 +2247489 +2247490 +2247491 +2247492 +2247493 +2247494 +2247495 +2247496 +2247497 +2247498 +2247499 +2247500 +2247501 +2247502 +2247503 +2247504 +2247505 +2247506 +2247507 +2247508 +2247509 +2247510 +2247525 +2247526 +2247527 +2247528 +2247529 +2247530 +2247531 +2247532 +2247533 +2247534 +2247535 +2247536 +2247537 +2247538 +2247539 +2247540 +2247722 +2247723 +2247724 +2247725 +2247726 +2247727 +2247728 +2247729 +2247730 +2247731 +2247732 +2247733 +2247734 +2247735 +2247736 +2247737 +2247738 +2247739 +2247740 +2247741 +2247742 +2247743 +2247744 +2247745 +2247746 +2251392 +2251393 +2251394 +2251395 +2251396 +2251397 +2251398 +2251399 +2251400 +2251401 +2251402 +2251403 +2251404 +2251405 +2251406 +2251407 +2251408 +2251409 +2251410 +2251411 +2251412 +2251413 +2251414 +2251415 +2251416 +2251417 +2251418 +2251419 +2251420 +2251421 +2251422 +2251423 +2251424 +2251425 +2251426 +2251427 +2251428 +2251429 +2251430 +2251431 +2251432 +2251433 +2251434 +2251435 +2251436 +2251437 +2251438 +2251439 +2251440 +2251441 +2251442 +2251443 +2251444 +2251445 +2251446 +2251447 +2251448 +2251449 +2251450 +2251451 +2251452 +2251453 +2251454 +2251455 +2251456 +2251457 +2251458 +2251459 +2251460 +2251461 +2251462 +2251463 +2251464 +2251465 +2251466 +2251467 +2251468 +2251469 +2251470 +2251471 +2251472 +2251473 +2251474 +2251475 +2251476 +2251477 +2251478 +2251479 +2251480 +2251481 +2251482 +2251483 +2251484 +2251485 +2251486 +2251487 +2251488 +2251489 +2251490 +2251491 +2251492 +2251493 +2251494 +2251495 +2251496 +2251497 +2251498 +2251499 +2251500 +2251501 +2251502 +2251503 +2251504 +2251505 +2251506 +2251507 +2251508 +2251509 +2251510 +2251511 +2251512 +2251513 +2251514 +2251515 +2251516 +2251517 +2251518 +2251519 +2251520 +2251521 +2251522 +2251523 +2251524 +2251525 +2251526 +2251527 +2251528 +2251529 +2251530 +2251531 +2251532 +2251533 +2251534 +2251535 +2251536 +2251537 +2251538 +2251539 +2251540 +2251541 +2251542 +2251543 +2251544 +2251545 +2251546 +2251547 +2251548 +2251549 +2251550 +2251551 +2251552 +2251553 +2251554 +2251555 +2251556 +2251557 +2251558 +2251559 +2251560 +2251561 +2251562 +2251563 +2251564 +2251565 +2251566 +2251567 +2251568 +2251569 +2251570 +2251571 +2251572 +2251573 +2251574 +2251575 +2251576 +2251577 +2251578 +2251579 +2251580 +2251581 +2251582 +2251583 +2251584 +2251585 +2251586 +2251587 +2251588 +2251589 +2251590 +2251591 +2251592 +2251593 +2251594 +2251595 +2251596 +2251597 +2251598 +2251599 +2251600 +2251601 +2251602 +2251603 +2251604 +2251605 +2251606 +2251607 +2251608 +2251609 +2251610 +2251611 +2251612 +2251613 +2251614 +2251615 +2251616 +2251617 +2251618 +2251619 +2251620 +2251621 +2251622 +2251623 +2251624 +2251625 +2251626 +2251627 +2251628 +2251629 +2251630 +2251631 +2251632 +2251633 +2251634 +2251635 +2251636 +2251637 +2251638 +2251639 +2251640 +2251641 +2251642 +2251643 +2251644 +2251645 +2251646 +2251647 +2251648 +2251649 +2251650 +2251651 +2251652 +2251653 +2251654 +2251655 +2251656 +2251657 +2251658 +2251659 +2251660 +2251661 +2251662 +2251663 +2251664 +2251665 +2251666 +2251667 +2251668 +2251669 +2251670 +2251671 +2251672 +2251673 +2251674 +2251675 +2251676 +2251677 +2251678 +2251679 +2251680 +2251681 +2251682 +2251683 +2251684 +2251685 +2251686 +2251687 +2251688 +2251689 +2251690 +2251691 +2251692 +2251693 +2251694 +2251695 +2251696 +2251697 +2251698 +2251699 +2251700 +2251701 +2251702 +2251703 +2251704 +2251705 +2251706 +2251707 +2251708 +2251709 +2251710 +2251711 +2251712 +2251713 +2251714 +2251715 +2251716 +2251717 +2251718 +2251719 +2251720 +2251721 +2251722 +2251723 +2251724 +2251725 +2251726 +2251727 +2251728 +2251729 +2251730 +2251731 +2251732 +2251733 +2251734 +2251735 +2251736 +2251737 +2251738 +2251739 +2251740 +2251741 +2251742 +2251743 +2251744 +2251745 +2251746 +2251747 +2251748 +2251749 +2251750 +2251751 +2251752 +2251753 +2251754 +2251755 +2251756 +2251757 +2251758 +2251759 +2251760 +2251761 +2251762 +2251763 +2251764 +2251765 +2251766 +2251767 +2251768 +2251769 +2251770 +2251771 +2251772 +2251773 +2251774 +2251775 +2251776 +2251777 +2251778 +2251779 +2251780 +2251781 +2251782 +2251783 +2251784 +2251785 +2251786 +2251787 +2251788 +2251789 +2251790 +2251791 +2251792 +2251793 +2251794 +2251795 +2251796 +2251797 +2251798 +2251799 +2251800 +2251801 +2251802 +2251803 +2251804 +2251805 +2251806 +2251807 +2251808 +2251809 +2251810 +2251811 +2251812 +2251813 +2251814 +2251815 +2251816 +2251817 +2251818 +2251819 +2251820 +2251821 +2251822 +2251823 +2251824 +2251825 +2251826 +2251827 +2251828 +2251829 +2251830 +2251831 +2251842 +2251843 +2251844 +2251845 +2251846 +2251847 +2251848 +2251849 +2251850 +2251851 +2251852 +2251853 +2251854 +2251855 +2251856 +2251857 +2251858 +2251859 +2252042 +2252043 +2252044 +2252045 +2252046 +2252047 +2252048 +2252049 +2252050 +2252051 +2252052 +2252053 +2252054 +2252055 +2252056 +2252057 +2252058 +2252059 +2252060 +2252061 +2252062 +2252063 +2252064 +2252065 +2252066 +2255712 +2255713 +2255714 +2255715 +2255716 +2255717 +2255718 +2255719 +2255720 +2255721 +2255722 +2255723 +2255724 +2255725 +2255726 +2255727 +2255728 +2255729 +2255730 +2255731 +2255732 +2255733 +2255734 +2255735 +2255736 +2255737 +2255738 +2255739 +2255740 +2255741 +2255742 +2255743 +2255744 +2255745 +2255746 +2255747 +2255748 +2255749 +2255750 +2255751 +2255752 +2255753 +2255754 +2255755 +2255756 +2255757 +2255758 +2255759 +2255760 +2255761 +2255762 +2255763 +2255764 +2255765 +2255766 +2255767 +2255768 +2255769 +2255770 +2255771 +2255772 +2255773 +2255774 +2255775 +2255776 +2255777 +2255778 +2255779 +2255780 +2255781 +2255782 +2255783 +2255784 +2255785 +2255786 +2255787 +2255788 +2255789 +2255790 +2255791 +2255792 +2255793 +2255794 +2255795 +2255796 +2255797 +2255798 +2255799 +2255800 +2255801 +2255802 +2255803 +2255804 +2255805 +2255806 +2255807 +2255808 +2255809 +2255810 +2255811 +2255812 +2255813 +2255814 +2255815 +2255816 +2255817 +2255818 +2255819 +2255820 +2255821 +2255822 +2255823 +2255824 +2255825 +2255826 +2255827 +2255828 +2255829 +2255830 +2255831 +2255832 +2255833 +2255834 +2255835 +2255836 +2255837 +2255838 +2255839 +2255840 +2255841 +2255842 +2255843 +2255844 +2255845 +2255846 +2255847 +2255848 +2255849 +2255850 +2255851 +2255852 +2255853 +2255854 +2255855 +2255856 +2255857 +2255858 +2255859 +2255860 +2255861 +2255862 +2255863 +2255864 +2255865 +2255866 +2255867 +2255868 +2255869 +2255870 +2255871 +2255872 +2255873 +2255874 +2255875 +2255876 +2255877 +2255878 +2255879 +2255880 +2255881 +2255882 +2255883 +2255884 +2255885 +2255886 +2255887 +2255888 +2255889 +2255890 +2255891 +2255892 +2255893 +2255894 +2255895 +2255896 +2255897 +2255898 +2255899 +2255900 +2255901 +2255902 +2255903 +2255904 +2255905 +2255906 +2255907 +2255908 +2255909 +2255910 +2255911 +2255912 +2255913 +2255914 +2255915 +2255916 +2255917 +2255918 +2255919 +2255920 +2255921 +2255922 +2255923 +2255924 +2255925 +2255926 +2255927 +2255928 +2255929 +2255930 +2255931 +2255932 +2255933 +2255934 +2255935 +2255936 +2255937 +2255938 +2255939 +2255940 +2255941 +2255942 +2255943 +2255944 +2255945 +2255946 +2255947 +2255948 +2255949 +2255950 +2255951 +2255952 +2255953 +2255954 +2255955 +2255956 +2255957 +2255958 +2255959 +2255960 +2255961 +2255962 +2255963 +2255964 +2255965 +2255966 +2255967 +2255968 +2255969 +2255970 +2255971 +2255972 +2255973 +2255974 +2255975 +2255976 +2255977 +2255978 +2255979 +2255980 +2255981 +2255982 +2255983 +2255984 +2255985 +2255986 +2255987 +2255988 +2255989 +2255990 +2255991 +2255992 +2255993 +2255994 +2255995 +2255996 +2255997 +2255998 +2255999 +2256000 +2256001 +2256002 +2256003 +2256004 +2256005 +2256006 +2256007 +2256008 +2256009 +2256010 +2256011 +2256012 +2256013 +2256014 +2256015 +2256016 +2256017 +2256018 +2256019 +2256020 +2256021 +2256022 +2256023 +2256024 +2256025 +2256026 +2256027 +2256028 +2256029 +2256030 +2256031 +2256032 +2256033 +2256034 +2256035 +2256036 +2256037 +2256038 +2256039 +2256040 +2256041 +2256042 +2256043 +2256044 +2256045 +2256046 +2256047 +2256048 +2256049 +2256050 +2256051 +2256052 +2256053 +2256054 +2256055 +2256056 +2256057 +2256058 +2256059 +2256060 +2256061 +2256062 +2256063 +2256064 +2256065 +2256066 +2256067 +2256068 +2256069 +2256070 +2256071 +2256072 +2256073 +2256074 +2256075 +2256076 +2256077 +2256078 +2256079 +2256080 +2256081 +2256082 +2256083 +2256084 +2256085 +2256086 +2256087 +2256088 +2256089 +2256090 +2256091 +2256092 +2256093 +2256094 +2256095 +2256096 +2256097 +2256098 +2256099 +2256100 +2256101 +2256102 +2256103 +2256104 +2256105 +2256106 +2256107 +2256108 +2256109 +2256110 +2256111 +2256112 +2256113 +2256114 +2256115 +2256116 +2256117 +2256118 +2256119 +2256120 +2256121 +2256122 +2256123 +2256124 +2256125 +2256126 +2256127 +2256128 +2256129 +2256130 +2256131 +2256132 +2256133 +2256134 +2256135 +2256136 +2256137 +2256138 +2256139 +2256140 +2256141 +2256142 +2256143 +2256144 +2256145 +2256146 +2256147 +2256148 +2256149 +2256150 +2256151 +2256152 +2256153 +2256154 +2256155 +2256156 +2256157 +2256159 +2256162 +2256163 +2256164 +2256165 +2256166 +2256167 +2256168 +2256169 +2256170 +2256171 +2256172 +2256173 +2256174 +2256175 +2256176 +2256177 +2256178 +2256179 +2256180 +2256181 +2256182 +2256362 +2256363 +2256364 +2256365 +2256366 +2256367 +2256368 +2256369 +2256370 +2256371 +2256372 +2256373 +2256374 +2256375 +2256376 +2256377 +2256378 +2256379 +2256380 +2256381 +2256382 +2256383 +2256384 +2256385 +2256386 +2260032 +2260033 +2260034 +2260035 +2260036 +2260037 +2260038 +2260039 +2260040 +2260041 +2260042 +2260043 +2260044 +2260045 +2260046 +2260047 +2260048 +2260049 +2260050 +2260051 +2260052 +2260053 +2260054 +2260055 +2260056 +2260057 +2260058 +2260059 +2260060 +2260061 +2260062 +2260063 +2260064 +2260065 +2260066 +2260067 +2260068 +2260069 +2260070 +2260071 +2260072 +2260073 +2260074 +2260075 +2260076 +2260077 +2260078 +2260079 +2260080 +2260081 +2260082 +2260083 +2260084 +2260085 +2260086 +2260087 +2260088 +2260089 +2260090 +2260091 +2260092 +2260093 +2260094 +2260095 +2260096 +2260097 +2260098 +2260099 +2260100 +2260101 +2260102 +2260103 +2260104 +2260105 +2260106 +2260107 +2260108 +2260109 +2260110 +2260111 +2260112 +2260113 +2260114 +2260115 +2260116 +2260117 +2260118 +2260119 +2260120 +2260121 +2260122 +2260123 +2260124 +2260125 +2260126 +2260127 +2260128 +2260129 +2260130 +2260131 +2260132 +2260133 +2260134 +2260135 +2260136 +2260137 +2260138 +2260139 +2260140 +2260141 +2260142 +2260143 +2260144 +2260145 +2260146 +2260147 +2260148 +2260149 +2260150 +2260151 +2260152 +2260153 +2260154 +2260155 +2260156 +2260157 +2260158 +2260159 +2260160 +2260161 +2260162 +2260163 +2260164 +2260165 +2260166 +2260167 +2260168 +2260169 +2260170 +2260171 +2260172 +2260173 +2260174 +2260175 +2260176 +2260177 +2260178 +2260179 +2260180 +2260181 +2260182 +2260183 +2260184 +2260185 +2260186 +2260187 +2260188 +2260189 +2260190 +2260191 +2260192 +2260193 +2260194 +2260195 +2260196 +2260197 +2260198 +2260199 +2260200 +2260201 +2260202 +2260203 +2260204 +2260205 +2260206 +2260207 +2260208 +2260209 +2260210 +2260211 +2260212 +2260213 +2260214 +2260215 +2260216 +2260217 +2260218 +2260219 +2260220 +2260221 +2260222 +2260223 +2260224 +2260225 +2260226 +2260227 +2260228 +2260229 +2260230 +2260231 +2260232 +2260233 +2260234 +2260235 +2260236 +2260237 +2260238 +2260239 +2260240 +2260241 +2260242 +2260243 +2260244 +2260245 +2260246 +2260247 +2260248 +2260249 +2260250 +2260251 +2260252 +2260253 +2260254 +2260255 +2260256 +2260257 +2260258 +2260259 +2260260 +2260261 +2260262 +2260263 +2260264 +2260265 +2260266 +2260267 +2260268 +2260269 +2260270 +2260271 +2260272 +2260273 +2260274 +2260275 +2260276 +2260277 +2260278 +2260279 +2260280 +2260281 +2260282 +2260283 +2260284 +2260285 +2260286 +2260287 +2260288 +2260289 +2260290 +2260291 +2260292 +2260293 +2260294 +2260295 +2260296 +2260297 +2260298 +2260299 +2260300 +2260301 +2260302 +2260303 +2260304 +2260305 +2260306 +2260307 +2260308 +2260309 +2260310 +2260311 +2260312 +2260313 +2260314 +2260315 +2260316 +2260317 +2260318 +2260319 +2260320 +2260321 +2260322 +2260323 +2260324 +2260325 +2260326 +2260327 +2260328 +2260329 +2260330 +2260331 +2260332 +2260333 +2260334 +2260335 +2260336 +2260337 +2260338 +2260339 +2260340 +2260341 +2260342 +2260343 +2260344 +2260345 +2260346 +2260347 +2260348 +2260349 +2260350 +2260351 +2260352 +2260353 +2260354 +2260355 +2260356 +2260357 +2260358 +2260359 +2260360 +2260361 +2260362 +2260363 +2260364 +2260365 +2260366 +2260367 +2260368 +2260369 +2260370 +2260371 +2260372 +2260373 +2260374 +2260375 +2260376 +2260377 +2260378 +2260379 +2260380 +2260381 +2260382 +2260383 +2260384 +2260385 +2260386 +2260387 +2260388 +2260389 +2260390 +2260391 +2260392 +2260393 +2260394 +2260395 +2260396 +2260397 +2260398 +2260399 +2260400 +2260401 +2260402 +2260403 +2260404 +2260405 +2260406 +2260407 +2260408 +2260409 +2260410 +2260411 +2260412 +2260413 +2260414 +2260415 +2260416 +2260417 +2260418 +2260419 +2260420 +2260421 +2260422 +2260423 +2260424 +2260425 +2260426 +2260427 +2260428 +2260429 +2260430 +2260431 +2260432 +2260433 +2260434 +2260435 +2260436 +2260437 +2260438 +2260439 +2260440 +2260441 +2260442 +2260443 +2260444 +2260445 +2260446 +2260447 +2260448 +2260449 +2260450 +2260451 +2260452 +2260453 +2260454 +2260455 +2260456 +2260457 +2260458 +2260459 +2260460 +2260461 +2260462 +2260463 +2260464 +2260465 +2260466 +2260467 +2260468 +2260469 +2260470 +2260471 +2260472 +2260473 +2260474 +2260475 +2260476 +2260477 +2260478 +2260479 +2260480 +2260481 +2260482 +2260483 +2260484 +2260485 +2260486 +2260487 +2260488 +2260489 +2260490 +2260491 +2260492 +2260493 +2260494 +2260495 +2260496 +2260497 +2260498 +2260499 +2260500 +2260501 +2260502 +2260503 +2260504 +2260505 +2260506 +2260507 +2260508 +2260679 +2260680 +2260681 +2260682 +2260683 +2260684 +2260685 +2260686 +2260687 +2260688 +2260689 +2260690 +2260691 +2260692 +2260693 +2260694 +2260695 +2260696 +2260697 +2260698 +2260699 +2260700 +2260701 +2260702 +2260703 +2260704 +2260705 +2260706 +2264354 +2264355 +2264356 +2264357 +2264358 +2264359 +2264360 +2264361 +2264362 +2264363 +2264364 +2264365 +2264366 +2264367 +2264368 +2264369 +2264370 +2264371 +2264372 +2264373 +2264374 +2264375 +2264376 +2264377 +2264378 +2264379 +2264380 +2264381 +2264382 +2264383 +2264384 +2264385 +2264386 +2264387 +2264388 +2264389 +2264390 +2264391 +2264392 +2264393 +2264394 +2264395 +2264396 +2264397 +2264398 +2264399 +2264400 +2264401 +2264402 +2264403 +2264404 +2264405 +2264406 +2264407 +2264408 +2264409 +2264410 +2264411 +2264412 +2264413 +2264414 +2264415 +2264416 +2264417 +2264418 +2264419 +2264420 +2264421 +2264422 +2264423 +2264424 +2264425 +2264426 +2264427 +2264428 +2264429 +2264430 +2264431 +2264432 +2264433 +2264434 +2264435 +2264436 +2264437 +2264438 +2264439 +2264440 +2264441 +2264442 +2264443 +2264444 +2264445 +2264446 +2264447 +2264448 +2264449 +2264450 +2264451 +2264452 +2264453 +2264454 +2264455 +2264456 +2264457 +2264458 +2264459 +2264460 +2264461 +2264462 +2264463 +2264464 +2264465 +2264466 +2264467 +2264468 +2264469 +2264470 +2264471 +2264472 +2264473 +2264474 +2264475 +2264476 +2264477 +2264478 +2264479 +2264480 +2264481 +2264482 +2264483 +2264484 +2264485 +2264486 +2264487 +2264488 +2264489 +2264490 +2264491 +2264492 +2264493 +2264494 +2264495 +2264496 +2264497 +2264498 +2264499 +2264500 +2264501 +2264502 +2264503 +2264504 +2264505 +2264506 +2264507 +2264508 +2264509 +2264510 +2264511 +2264512 +2264513 +2264514 +2264515 +2264516 +2264517 +2264518 +2264519 +2264520 +2264521 +2264522 +2264523 +2264524 +2264525 +2264526 +2264527 +2264528 +2264529 +2264530 +2264531 +2264532 +2264533 +2264534 +2264535 +2264536 +2264537 +2264538 +2264539 +2264540 +2264541 +2264542 +2264543 +2264544 +2264545 +2264546 +2264547 +2264548 +2264549 +2264550 +2264551 +2264552 +2264553 +2264554 +2264555 +2264556 +2264557 +2264558 +2264559 +2264560 +2264561 +2264562 +2264563 +2264564 +2264565 +2264566 +2264567 +2264568 +2264569 +2264570 +2264571 +2264572 +2264573 +2264574 +2264575 +2264576 +2264577 +2264578 +2264579 +2264580 +2264581 +2264582 +2264583 +2264584 +2264585 +2264586 +2264587 +2264588 +2264589 +2264590 +2264591 +2264592 +2264593 +2264594 +2264595 +2264596 +2264597 +2264598 +2264599 +2264600 +2264601 +2264602 +2264603 +2264604 +2264605 +2264606 +2264607 +2264608 +2264609 +2264610 +2264611 +2264612 +2264613 +2264614 +2264615 +2264616 +2264617 +2264618 +2264619 +2264620 +2264621 +2264622 +2264623 +2264624 +2264625 +2264626 +2264627 +2264628 +2264629 +2264630 +2264631 +2264632 +2264633 +2264634 +2264635 +2264636 +2264637 +2264638 +2264639 +2264640 +2264641 +2264642 +2264643 +2264644 +2264645 +2264646 +2264647 +2264648 +2264649 +2264650 +2264651 +2264652 +2264653 +2264654 +2264655 +2264656 +2264657 +2264658 +2264659 +2264660 +2264661 +2264662 +2264663 +2264664 +2264665 +2264666 +2264667 +2264668 +2264669 +2264670 +2264671 +2264672 +2264673 +2264674 +2264675 +2264676 +2264677 +2264678 +2264679 +2264680 +2264681 +2264682 +2264683 +2264684 +2264685 +2264686 +2264687 +2264688 +2264689 +2264690 +2264691 +2264692 +2264693 +2264694 +2264695 +2264696 +2264697 +2264698 +2264699 +2264700 +2264701 +2264702 +2264703 +2264704 +2264705 +2264706 +2264707 +2264708 +2264709 +2264710 +2264711 +2264712 +2264713 +2264714 +2264718 +2264719 +2264720 +2264721 +2264722 +2264723 +2264724 +2264725 +2264726 +2264727 +2264728 +2264729 +2264730 +2264731 +2264732 +2264733 +2264734 +2264735 +2264736 +2264737 +2264738 +2264739 +2264740 +2264741 +2264742 +2264743 +2264744 +2264745 +2264746 +2264747 +2264748 +2264749 +2264750 +2264751 +2264752 +2264753 +2264754 +2264755 +2264756 +2264757 +2264758 +2264759 +2264760 +2264761 +2264762 +2264763 +2264764 +2264765 +2264766 +2264767 +2264768 +2264769 +2264770 +2264771 +2264772 +2264773 +2264774 +2264775 +2264776 +2264777 +2264778 +2264779 +2264780 +2264781 +2264782 +2264783 +2264784 +2264785 +2264786 +2264787 +2264788 +2264789 +2264790 +2264791 +2264792 +2264793 +2264794 +2264795 +2264796 +2264797 +2264798 +2264799 +2264800 +2264801 +2264802 +2264803 +2264804 +2264805 +2264806 +2264807 +2264808 +2264809 +2264810 +2264811 +2264812 +2264813 +2264814 +2264815 +2264816 +2264817 +2264818 +2264819 +2264820 +2264821 +2264822 +2264823 +2264824 +2264825 +2264826 +2264827 +2264828 +2264999 +2265000 +2265001 +2265002 +2265003 +2265004 +2265005 +2265006 +2265007 +2265008 +2265009 +2265010 +2265011 +2265012 +2265013 +2265014 +2265015 +2265016 +2265017 +2265018 +2265019 +2265020 +2265021 +2265022 +2265023 +2265024 +2265025 +2265026 +2268674 +2268675 +2268676 +2268677 +2268678 +2268679 +2268680 +2268681 +2268682 +2268683 +2268684 +2268685 +2268686 +2268687 +2268688 +2268689 +2268690 +2268691 +2268692 +2268693 +2268694 +2268695 +2268696 +2268697 +2268698 +2268699 +2268700 +2268701 +2268702 +2268703 +2268704 +2268705 +2268706 +2268707 +2268708 +2268709 +2268710 +2268711 +2268712 +2268713 +2268714 +2268715 +2268716 +2268717 +2268718 +2268719 +2268720 +2268721 +2268722 +2268723 +2268724 +2268725 +2268726 +2268727 +2268728 +2268729 +2268730 +2268731 +2268732 +2268733 +2268734 +2268735 +2268736 +2268737 +2268738 +2268739 +2268740 +2268741 +2268742 +2268743 +2268744 +2268745 +2268746 +2268747 +2268748 +2268749 +2268750 +2268751 +2268752 +2268753 +2268754 +2268755 +2268756 +2268757 +2268758 +2268759 +2268760 +2268761 +2268762 +2268763 +2268764 +2268765 +2268766 +2268767 +2268768 +2268769 +2268770 +2268771 +2268772 +2268773 +2268774 +2268775 +2268776 +2268777 +2268778 +2268779 +2268780 +2268781 +2268782 +2268783 +2268784 +2268785 +2268786 +2268787 +2268788 +2268789 +2268790 +2268791 +2268792 +2268793 +2268794 +2268795 +2268796 +2268797 +2268798 +2268799 +2268800 +2268801 +2268802 +2268803 +2268804 +2268805 +2268806 +2268807 +2268808 +2268809 +2268810 +2268811 +2268812 +2268813 +2268814 +2268815 +2268816 +2268817 +2268818 +2268819 +2268820 +2268821 +2268822 +2268823 +2268824 +2268825 +2268826 +2268827 +2268828 +2268829 +2268830 +2268831 +2268832 +2268833 +2268834 +2268835 +2268836 +2268837 +2268838 +2268839 +2268840 +2268841 +2268842 +2268843 +2268844 +2268845 +2268846 +2268847 +2268848 +2268849 +2268850 +2268851 +2268852 +2268853 +2268854 +2268855 +2268856 +2268857 +2268858 +2268859 +2268860 +2268861 +2268862 +2268863 +2268864 +2268865 +2268866 +2268867 +2268868 +2268869 +2268870 +2268871 +2268872 +2268873 +2268874 +2268875 +2268876 +2268877 +2268878 +2268879 +2268880 +2268881 +2268882 +2268883 +2268884 +2268885 +2268886 +2268887 +2268888 +2268889 +2268890 +2268891 +2268892 +2268893 +2268894 +2268895 +2268896 +2268897 +2268898 +2268899 +2268900 +2268901 +2268902 +2268903 +2268904 +2268905 +2268906 +2268907 +2268908 +2268909 +2268910 +2268911 +2268912 +2268913 +2268914 +2268915 +2268916 +2268917 +2268918 +2268919 +2268920 +2268921 +2268922 +2268923 +2268924 +2268925 +2268926 +2268927 +2268928 +2268929 +2268930 +2268931 +2268932 +2268933 +2268934 +2268935 +2268936 +2268937 +2268938 +2268939 +2268940 +2268941 +2268942 +2268943 +2268944 +2268945 +2268946 +2268947 +2268948 +2268949 +2268950 +2268951 +2268952 +2268953 +2268954 +2268955 +2268956 +2268957 +2268958 +2268959 +2268960 +2268961 +2268962 +2268963 +2268964 +2268965 +2268966 +2268967 +2268968 +2268969 +2268970 +2268971 +2268972 +2268973 +2268974 +2268975 +2268976 +2268977 +2268978 +2268979 +2268980 +2268981 +2268982 +2268983 +2268984 +2268985 +2268986 +2268987 +2268988 +2268989 +2268990 +2268991 +2268992 +2268993 +2268994 +2268995 +2268996 +2268997 +2268998 +2268999 +2269000 +2269001 +2269002 +2269003 +2269004 +2269005 +2269006 +2269007 +2269008 +2269009 +2269010 +2269011 +2269012 +2269013 +2269014 +2269015 +2269016 +2269017 +2269018 +2269019 +2269020 +2269021 +2269022 +2269023 +2269024 +2269025 +2269026 +2269027 +2269028 +2269029 +2269030 +2269031 +2269032 +2269033 +2269034 +2269039 +2269040 +2269041 +2269042 +2269043 +2269044 +2269045 +2269046 +2269047 +2269048 +2269049 +2269050 +2269051 +2269052 +2269053 +2269054 +2269055 +2269056 +2269057 +2269058 +2269059 +2269060 +2269061 +2269062 +2269063 +2269064 +2269065 +2269066 +2269067 +2269068 +2269069 +2269070 +2269071 +2269072 +2269073 +2269074 +2269075 +2269076 +2269077 +2269078 +2269079 +2269080 +2269081 +2269082 +2269083 +2269084 +2269085 +2269086 +2269087 +2269088 +2269089 +2269090 +2269091 +2269092 +2269093 +2269094 +2269095 +2269096 +2269097 +2269098 +2269099 +2269100 +2269101 +2269102 +2269103 +2269104 +2269105 +2269106 +2269107 +2269108 +2269109 +2269110 +2269111 +2269112 +2269113 +2269114 +2269115 +2269116 +2269117 +2269118 +2269119 +2269120 +2269121 +2269122 +2269123 +2269124 +2269125 +2269126 +2269127 +2269128 +2269129 +2269130 +2269132 +2269133 +2269134 +2269135 +2269136 +2269137 +2269138 +2269139 +2269140 +2269141 +2269142 +2269143 +2269144 +2269145 +2269146 +2269147 +2269148 +2269319 +2269320 +2269321 +2269322 +2269323 +2269324 +2269325 +2269326 +2269327 +2269328 +2269329 +2269330 +2269331 +2269332 +2269333 +2269334 +2269335 +2269336 +2269337 +2269338 +2269339 +2269340 +2269341 +2269342 +2269343 +2269344 +2269345 +2269346 +2272994 +2272995 +2272996 +2272997 +2272998 +2272999 +2273000 +2273001 +2273002 +2273003 +2273004 +2273005 +2273006 +2273007 +2273008 +2273009 +2273010 +2273011 +2273012 +2273013 +2273014 +2273015 +2273016 +2273017 +2273018 +2273019 +2273020 +2273021 +2273022 +2273023 +2273024 +2273025 +2273026 +2273027 +2273028 +2273029 +2273030 +2273031 +2273032 +2273033 +2273034 +2273035 +2273036 +2273037 +2273038 +2273039 +2273040 +2273041 +2273042 +2273043 +2273044 +2273045 +2273046 +2273047 +2273048 +2273049 +2273050 +2273051 +2273052 +2273053 +2273054 +2273055 +2273056 +2273057 +2273058 +2273059 +2273060 +2273061 +2273062 +2273063 +2273064 +2273065 +2273066 +2273067 +2273068 +2273069 +2273070 +2273071 +2273072 +2273073 +2273074 +2273075 +2273076 +2273077 +2273078 +2273079 +2273080 +2273081 +2273082 +2273083 +2273084 +2273085 +2273086 +2273087 +2273088 +2273089 +2273090 +2273091 +2273092 +2273093 +2273094 +2273095 +2273096 +2273097 +2273098 +2273099 +2273100 +2273101 +2273102 +2273103 +2273104 +2273105 +2273106 +2273107 +2273108 +2273109 +2273110 +2273111 +2273112 +2273113 +2273114 +2273115 +2273116 +2273117 +2273118 +2273119 +2273120 +2273121 +2273122 +2273123 +2273124 +2273125 +2273126 +2273127 +2273128 +2273129 +2273130 +2273131 +2273132 +2273133 +2273134 +2273135 +2273136 +2273137 +2273138 +2273139 +2273140 +2273141 +2273142 +2273143 +2273144 +2273145 +2273146 +2273147 +2273148 +2273149 +2273150 +2273151 +2273152 +2273153 +2273154 +2273155 +2273156 +2273157 +2273158 +2273159 +2273160 +2273161 +2273162 +2273163 +2273164 +2273165 +2273166 +2273167 +2273168 +2273169 +2273170 +2273171 +2273172 +2273173 +2273174 +2273175 +2273176 +2273177 +2273178 +2273179 +2273180 +2273181 +2273182 +2273183 +2273184 +2273185 +2273186 +2273187 +2273188 +2273189 +2273190 +2273191 +2273192 +2273193 +2273194 +2273195 +2273196 +2273197 +2273198 +2273199 +2273200 +2273201 +2273202 +2273203 +2273204 +2273205 +2273206 +2273207 +2273208 +2273209 +2273210 +2273211 +2273212 +2273213 +2273214 +2273215 +2273216 +2273217 +2273218 +2273219 +2273220 +2273221 +2273222 +2273223 +2273224 +2273225 +2273226 +2273227 +2273228 +2273229 +2273230 +2273231 +2273232 +2273233 +2273234 +2273235 +2273236 +2273237 +2273238 +2273239 +2273240 +2273241 +2273242 +2273243 +2273244 +2273245 +2273246 +2273247 +2273248 +2273249 +2273250 +2273251 +2273252 +2273253 +2273254 +2273255 +2273256 +2273257 +2273258 +2273259 +2273260 +2273261 +2273262 +2273263 +2273264 +2273265 +2273266 +2273267 +2273268 +2273269 +2273270 +2273271 +2273272 +2273273 +2273274 +2273275 +2273276 +2273277 +2273278 +2273279 +2273280 +2273281 +2273282 +2273283 +2273284 +2273285 +2273286 +2273287 +2273288 +2273289 +2273290 +2273291 +2273292 +2273293 +2273294 +2273295 +2273296 +2273297 +2273298 +2273299 +2273300 +2273301 +2273302 +2273303 +2273304 +2273305 +2273306 +2273307 +2273308 +2273309 +2273310 +2273311 +2273312 +2273313 +2273314 +2273315 +2273316 +2273317 +2273318 +2273319 +2273320 +2273321 +2273322 +2273323 +2273324 +2273325 +2273326 +2273327 +2273328 +2273329 +2273330 +2273331 +2273332 +2273333 +2273334 +2273335 +2273336 +2273337 +2273338 +2273339 +2273340 +2273341 +2273342 +2273343 +2273344 +2273345 +2273346 +2273347 +2273348 +2273349 +2273350 +2273351 +2273352 +2273353 +2273354 +2273355 +2273358 +2273359 +2273360 +2273361 +2273362 +2273363 +2273364 +2273365 +2273366 +2273367 +2273368 +2273369 +2273370 +2273371 +2273372 +2273373 +2273374 +2273375 +2273376 +2273377 +2273378 +2273379 +2273380 +2273381 +2273382 +2273383 +2273384 +2273385 +2273386 +2273387 +2273388 +2273389 +2273390 +2273391 +2273392 +2273393 +2273394 +2273395 +2273396 +2273397 +2273398 +2273399 +2273400 +2273401 +2273402 +2273403 +2273404 +2273405 +2273406 +2273407 +2273408 +2273409 +2273410 +2273411 +2273412 +2273413 +2273414 +2273415 +2273416 +2273417 +2273418 +2273419 +2273420 +2273421 +2273422 +2273423 +2273424 +2273425 +2273426 +2273427 +2273428 +2273429 +2273430 +2273431 +2273432 +2273433 +2273434 +2273435 +2273436 +2273437 +2273438 +2273439 +2273440 +2273441 +2273442 +2273443 +2273444 +2273445 +2273446 +2273447 +2273448 +2273449 +2273450 +2273451 +2273452 +2273453 +2273454 +2273455 +2273456 +2273457 +2273458 +2273459 +2273460 +2273461 +2273462 +2273463 +2273464 +2273465 +2273466 +2273467 +2273468 +2273469 +2273470 +2273471 +2273639 +2273640 +2273641 +2273642 +2273643 +2273644 +2273645 +2273646 +2273647 +2273648 +2273649 +2273650 +2273651 +2273652 +2273653 +2273654 +2273655 +2273656 +2273657 +2273658 +2273659 +2273660 +2273661 +2273662 +2273663 +2273664 +2273665 +2273666 +2277314 +2277315 +2277316 +2277317 +2277318 +2277319 +2277320 +2277321 +2277322 +2277323 +2277324 +2277325 +2277326 +2277327 +2277328 +2277329 +2277330 +2277331 +2277332 +2277333 +2277334 +2277335 +2277336 +2277337 +2277338 +2277339 +2277340 +2277341 +2277342 +2277343 +2277344 +2277345 +2277346 +2277347 +2277348 +2277349 +2277350 +2277351 +2277352 +2277353 +2277354 +2277355 +2277356 +2277357 +2277358 +2277359 +2277360 +2277361 +2277362 +2277363 +2277364 +2277365 +2277366 +2277367 +2277368 +2277369 +2277370 +2277371 +2277372 +2277373 +2277374 +2277375 +2277376 +2277377 +2277378 +2277379 +2277380 +2277381 +2277382 +2277383 +2277384 +2277385 +2277386 +2277387 +2277388 +2277389 +2277390 +2277391 +2277392 +2277393 +2277394 +2277395 +2277396 +2277397 +2277398 +2277399 +2277400 +2277401 +2277402 +2277403 +2277404 +2277405 +2277406 +2277407 +2277408 +2277409 +2277410 +2277411 +2277412 +2277413 +2277414 +2277415 +2277416 +2277417 +2277418 +2277419 +2277420 +2277421 +2277422 +2277423 +2277424 +2277425 +2277426 +2277427 +2277428 +2277429 +2277430 +2277431 +2277432 +2277433 +2277434 +2277435 +2277436 +2277437 +2277438 +2277439 +2277440 +2277441 +2277442 +2277443 +2277444 +2277445 +2277446 +2277447 +2277448 +2277449 +2277450 +2277451 +2277452 +2277453 +2277454 +2277455 +2277456 +2277457 +2277458 +2277459 +2277460 +2277461 +2277462 +2277463 +2277464 +2277465 +2277466 +2277467 +2277468 +2277469 +2277470 +2277471 +2277472 +2277473 +2277474 +2277475 +2277476 +2277477 +2277478 +2277479 +2277480 +2277481 +2277482 +2277483 +2277484 +2277485 +2277486 +2277487 +2277488 +2277489 +2277490 +2277491 +2277492 +2277493 +2277494 +2277495 +2277496 +2277497 +2277498 +2277499 +2277500 +2277501 +2277502 +2277503 +2277504 +2277505 +2277506 +2277507 +2277508 +2277509 +2277510 +2277511 +2277512 +2277513 +2277514 +2277515 +2277516 +2277517 +2277518 +2277519 +2277520 +2277521 +2277522 +2277523 +2277524 +2277525 +2277526 +2277527 +2277528 +2277529 +2277530 +2277531 +2277532 +2277533 +2277534 +2277535 +2277536 +2277537 +2277538 +2277539 +2277540 +2277541 +2277542 +2277543 +2277544 +2277545 +2277546 +2277547 +2277548 +2277549 +2277550 +2277551 +2277552 +2277553 +2277554 +2277555 +2277556 +2277557 +2277558 +2277559 +2277560 +2277561 +2277562 +2277563 +2277564 +2277565 +2277566 +2277567 +2277568 +2277569 +2277570 +2277571 +2277572 +2277573 +2277574 +2277575 +2277576 +2277577 +2277578 +2277579 +2277580 +2277581 +2277582 +2277583 +2277584 +2277585 +2277586 +2277587 +2277588 +2277589 +2277590 +2277591 +2277592 +2277593 +2277594 +2277595 +2277596 +2277597 +2277598 +2277599 +2277600 +2277601 +2277602 +2277603 +2277604 +2277605 +2277606 +2277607 +2277608 +2277609 +2277610 +2277611 +2277612 +2277613 +2277614 +2277615 +2277616 +2277617 +2277618 +2277619 +2277620 +2277621 +2277622 +2277623 +2277624 +2277625 +2277626 +2277627 +2277628 +2277629 +2277630 +2277631 +2277632 +2277633 +2277634 +2277635 +2277636 +2277637 +2277638 +2277639 +2277640 +2277641 +2277642 +2277643 +2277644 +2277645 +2277646 +2277647 +2277648 +2277649 +2277650 +2277651 +2277652 +2277653 +2277654 +2277655 +2277656 +2277657 +2277658 +2277659 +2277660 +2277661 +2277662 +2277663 +2277664 +2277665 +2277666 +2277667 +2277668 +2277669 +2277670 +2277671 +2277672 +2277673 +2277674 +2277675 +2277676 +2277677 +2277678 +2277679 +2277680 +2277681 +2277682 +2277683 +2277684 +2277685 +2277686 +2277687 +2277688 +2277689 +2277690 +2277691 +2277692 +2277693 +2277694 +2277695 +2277696 +2277697 +2277698 +2277699 +2277700 +2277701 +2277702 +2277703 +2277704 +2277705 +2277706 +2277707 +2277708 +2277709 +2277710 +2277711 +2277712 +2277713 +2277714 +2277715 +2277716 +2277717 +2277719 +2277720 +2277721 +2277722 +2277723 +2277724 +2277725 +2277726 +2277727 +2277728 +2277729 +2277730 +2277731 +2277732 +2277733 +2277734 +2277735 +2277736 +2277737 +2277738 +2277739 +2277740 +2277741 +2277742 +2277743 +2277744 +2277745 +2277746 +2277747 +2277748 +2277749 +2277750 +2277751 +2277752 +2277753 +2277754 +2277755 +2277756 +2277757 +2277758 +2277759 +2277760 +2277761 +2277762 +2277763 +2277764 +2277765 +2277766 +2277767 +2277768 +2277769 +2277770 +2277771 +2277772 +2277773 +2277774 +2277776 +2277777 +2277778 +2277779 +2277780 +2277781 +2277782 +2277783 +2277784 +2277785 +2277786 +2277787 +2277788 +2277789 +2277790 +2277791 +2277959 +2277960 +2277961 +2277962 +2277963 +2277964 +2277965 +2277966 +2277967 +2277969 +2277970 +2277971 +2277972 +2277973 +2277974 +2277975 +2277976 +2277977 +2277978 +2277979 +2277980 +2277981 +2277982 +2277983 +2277984 +2277985 +2277986 +2281634 +2281635 +2281636 +2281637 +2281638 +2281639 +2281640 +2281641 +2281642 +2281643 +2281644 +2281645 +2281646 +2281647 +2281648 +2281649 +2281650 +2281651 +2281652 +2281653 +2281654 +2281655 +2281656 +2281657 +2281658 +2281659 +2281660 +2281661 +2281662 +2281663 +2281664 +2281665 +2281666 +2281667 +2281668 +2281669 +2281670 +2281671 +2281672 +2281673 +2281674 +2281675 +2281676 +2281677 +2281678 +2281679 +2281680 +2281681 +2281682 +2281683 +2281684 +2281685 +2281686 +2281687 +2281688 +2281689 +2281690 +2281691 +2281692 +2281693 +2281694 +2281695 +2281696 +2281697 +2281698 +2281699 +2281700 +2281701 +2281702 +2281703 +2281704 +2281705 +2281706 +2281707 +2281708 +2281709 +2281710 +2281711 +2281712 +2281713 +2281714 +2281715 +2281716 +2281717 +2281718 +2281719 +2281720 +2281721 +2281722 +2281723 +2281724 +2281725 +2281726 +2281727 +2281728 +2281729 +2281730 +2281731 +2281732 +2281733 +2281734 +2281735 +2281736 +2281737 +2281738 +2281739 +2281740 +2281741 +2281742 +2281743 +2281744 +2281745 +2281746 +2281747 +2281748 +2281749 +2281750 +2281751 +2281752 +2281753 +2281754 +2281755 +2281756 +2281757 +2281758 +2281759 +2281760 +2281761 +2281762 +2281763 +2281764 +2281765 +2281766 +2281767 +2281768 +2281769 +2281770 +2281771 +2281772 +2281773 +2281774 +2281775 +2281776 +2281777 +2281778 +2281779 +2281780 +2281781 +2281782 +2281783 +2281784 +2281785 +2281786 +2281787 +2281788 +2281789 +2281790 +2281791 +2281792 +2281793 +2281794 +2281795 +2281796 +2281797 +2281798 +2281799 +2281800 +2281801 +2281802 +2281803 +2281804 +2281805 +2281806 +2281807 +2281808 +2281809 +2281810 +2281811 +2281812 +2281813 +2281814 +2281815 +2281816 +2281817 +2281818 +2281819 +2281820 +2281821 +2281822 +2281823 +2281824 +2281825 +2281826 +2281827 +2281828 +2281829 +2281830 +2281831 +2281832 +2281833 +2281834 +2281835 +2281836 +2281837 +2281838 +2281839 +2281840 +2281841 +2281842 +2281843 +2281844 +2281845 +2281846 +2281847 +2281848 +2281849 +2281850 +2281851 +2281852 +2281853 +2281854 +2281855 +2281856 +2281857 +2281858 +2281859 +2281860 +2281861 +2281862 +2281863 +2281864 +2281865 +2281866 +2281867 +2281868 +2281869 +2281870 +2281871 +2281872 +2281873 +2281874 +2281875 +2281876 +2281877 +2281878 +2281879 +2281880 +2281881 +2281882 +2281883 +2281884 +2281885 +2281886 +2281887 +2281888 +2281889 +2281890 +2281891 +2281892 +2281893 +2281894 +2281895 +2281896 +2281897 +2281898 +2281899 +2281900 +2281901 +2281902 +2281903 +2281904 +2281905 +2281906 +2281907 +2281908 +2281909 +2281910 +2281911 +2281912 +2281913 +2281914 +2281915 +2281916 +2281917 +2281918 +2281919 +2281920 +2281921 +2281922 +2281923 +2281924 +2281925 +2281926 +2281927 +2281928 +2281929 +2281930 +2281931 +2281932 +2281933 +2281934 +2281935 +2281936 +2281937 +2281938 +2281939 +2281940 +2281941 +2281942 +2281943 +2281944 +2281945 +2281946 +2281947 +2281948 +2281949 +2281950 +2281951 +2281952 +2281953 +2281954 +2281955 +2281956 +2281957 +2281958 +2281959 +2281960 +2281961 +2281962 +2281963 +2281964 +2281965 +2281966 +2281967 +2281968 +2281969 +2281970 +2281971 +2281972 +2281973 +2281974 +2281975 +2281976 +2281977 +2281978 +2281979 +2281980 +2281981 +2281982 +2281983 +2281984 +2281985 +2281986 +2281987 +2281988 +2281989 +2281990 +2281991 +2281992 +2281993 +2281994 +2281995 +2281996 +2281997 +2281998 +2281999 +2282000 +2282001 +2282002 +2282003 +2282004 +2282005 +2282006 +2282007 +2282008 +2282009 +2282010 +2282011 +2282012 +2282013 +2282014 +2282015 +2282016 +2282017 +2282018 +2282019 +2282020 +2282021 +2282022 +2282023 +2282024 +2282025 +2282026 +2282027 +2282028 +2282029 +2282030 +2282031 +2282032 +2282033 +2282034 +2282035 +2282036 +2282037 +2282038 +2282039 +2282040 +2282041 +2282042 +2282043 +2282044 +2282045 +2282046 +2282047 +2282048 +2282049 +2282050 +2282051 +2282052 +2282053 +2282054 +2282055 +2282056 +2282057 +2282058 +2282059 +2282060 +2282061 +2282062 +2282063 +2282064 +2282065 +2282066 +2282067 +2282068 +2282069 +2282070 +2282071 +2282072 +2282073 +2282074 +2282075 +2282076 +2282077 +2282078 +2282079 +2282080 +2282081 +2282082 +2282083 +2282084 +2282085 +2282086 +2282087 +2282088 +2282089 +2282090 +2282091 +2282092 +2282093 +2282101 +2282102 +2282103 +2282104 +2282106 +2282109 +2282110 +2282111 +2282279 +2282280 +2282281 +2282282 +2282283 +2282284 +2282285 +2282286 +2282287 +2282288 +2282289 +2282290 +2282291 +2282292 +2282293 +2282294 +2282295 +2282296 +2282297 +2282298 +2282299 +2282300 +2282301 +2282302 +2282303 +2282304 +2282305 +2282306 +2285954 +2285955 +2285956 +2285957 +2285958 +2285959 +2285960 +2285961 +2285962 +2285963 +2285964 +2285965 +2285966 +2285967 +2285968 +2285969 +2285970 +2285971 +2285972 +2285973 +2285974 +2285975 +2285976 +2285977 +2285978 +2285979 +2285980 +2285981 +2285982 +2285983 +2285984 +2285985 +2285986 +2285987 +2285988 +2285989 +2285990 +2285991 +2285992 +2285993 +2285994 +2285995 +2285996 +2285997 +2285998 +2285999 +2286000 +2286001 +2286002 +2286003 +2286004 +2286005 +2286006 +2286007 +2286008 +2286009 +2286010 +2286011 +2286012 +2286013 +2286014 +2286015 +2286016 +2286017 +2286018 +2286019 +2286020 +2286021 +2286022 +2286023 +2286024 +2286025 +2286026 +2286027 +2286028 +2286029 +2286030 +2286031 +2286032 +2286033 +2286034 +2286035 +2286036 +2286037 +2286038 +2286039 +2286040 +2286041 +2286042 +2286043 +2286044 +2286045 +2286046 +2286047 +2286048 +2286049 +2286050 +2286051 +2286052 +2286053 +2286054 +2286055 +2286056 +2286057 +2286058 +2286059 +2286060 +2286061 +2286062 +2286063 +2286064 +2286065 +2286066 +2286067 +2286068 +2286069 +2286070 +2286071 +2286072 +2286073 +2286074 +2286075 +2286076 +2286077 +2286078 +2286079 +2286080 +2286081 +2286082 +2286083 +2286084 +2286085 +2286086 +2286087 +2286088 +2286089 +2286090 +2286091 +2286092 +2286093 +2286094 +2286095 +2286096 +2286097 +2286098 +2286099 +2286100 +2286101 +2286102 +2286103 +2286104 +2286105 +2286106 +2286107 +2286108 +2286109 +2286110 +2286111 +2286112 +2286113 +2286114 +2286115 +2286116 +2286117 +2286118 +2286119 +2286120 +2286121 +2286122 +2286123 +2286124 +2286125 +2286126 +2286127 +2286128 +2286129 +2286130 +2286131 +2286132 +2286133 +2286134 +2286135 +2286136 +2286137 +2286138 +2286139 +2286140 +2286141 +2286142 +2286143 +2286144 +2286145 +2286146 +2286147 +2286148 +2286149 +2286150 +2286151 +2286152 +2286153 +2286154 +2286155 +2286156 +2286157 +2286158 +2286159 +2286160 +2286161 +2286162 +2286163 +2286164 +2286165 +2286166 +2286167 +2286168 +2286169 +2286170 +2286171 +2286172 +2286173 +2286174 +2286175 +2286176 +2286177 +2286178 +2286179 +2286180 +2286181 +2286182 +2286183 +2286184 +2286185 +2286186 +2286187 +2286188 +2286189 +2286190 +2286191 +2286192 +2286193 +2286194 +2286195 +2286196 +2286197 +2286198 +2286199 +2286200 +2286201 +2286202 +2286203 +2286204 +2286205 +2286206 +2286207 +2286208 +2286209 +2286210 +2286211 +2286212 +2286213 +2286214 +2286215 +2286216 +2286217 +2286218 +2286219 +2286220 +2286221 +2286222 +2286223 +2286224 +2286225 +2286226 +2286227 +2286228 +2286229 +2286230 +2286231 +2286232 +2286233 +2286234 +2286235 +2286236 +2286237 +2286238 +2286239 +2286240 +2286241 +2286242 +2286243 +2286244 +2286245 +2286246 +2286247 +2286248 +2286249 +2286250 +2286251 +2286252 +2286253 +2286254 +2286255 +2286256 +2286257 +2286258 +2286259 +2286260 +2286261 +2286262 +2286263 +2286264 +2286265 +2286266 +2286267 +2286268 +2286269 +2286270 +2286271 +2286272 +2286273 +2286274 +2286275 +2286276 +2286277 +2286278 +2286279 +2286280 +2286281 +2286282 +2286283 +2286284 +2286285 +2286286 +2286287 +2286288 +2286289 +2286290 +2286291 +2286292 +2286293 +2286294 +2286295 +2286296 +2286297 +2286298 +2286299 +2286300 +2286301 +2286302 +2286303 +2286304 +2286305 +2286306 +2286307 +2286308 +2286309 +2286310 +2286311 +2286312 +2286313 +2286314 +2286315 +2286316 +2286317 +2286318 +2286319 +2286320 +2286321 +2286322 +2286323 +2286324 +2286325 +2286326 +2286327 +2286328 +2286329 +2286330 +2286331 +2286332 +2286333 +2286334 +2286335 +2286336 +2286337 +2286338 +2286339 +2286340 +2286341 +2286342 +2286343 +2286344 +2286347 +2286348 +2286349 +2286350 +2286351 +2286352 +2286353 +2286354 +2286355 +2286356 +2286357 +2286358 +2286359 +2286360 +2286361 +2286362 +2286363 +2286364 +2286365 +2286366 +2286367 +2286368 +2286369 +2286370 +2286371 +2286372 +2286373 +2286374 +2286375 +2286376 +2286377 +2286378 +2286379 +2286380 +2286381 +2286382 +2286383 +2286384 +2286385 +2286386 +2286387 +2286388 +2286389 +2286390 +2286391 +2286392 +2286393 +2286394 +2286395 +2286396 +2286397 +2286398 +2286399 +2286400 +2286401 +2286402 +2286403 +2286404 +2286405 +2286422 +2286423 +2286424 +2286599 +2286600 +2286601 +2286602 +2286603 +2286604 +2286605 +2286606 +2286607 +2286608 +2286610 +2286611 +2286612 +2286613 +2286614 +2286615 +2286616 +2286617 +2286618 +2286619 +2286620 +2286621 +2286622 +2286623 +2286624 +2286625 +2286626 +2290274 +2290275 +2290276 +2290277 +2290278 +2290279 +2290280 +2290281 +2290282 +2290283 +2290284 +2290285 +2290286 +2290287 +2290288 +2290289 +2290290 +2290291 +2290292 +2290293 +2290294 +2290295 +2290296 +2290297 +2290298 +2290299 +2290300 +2290301 +2290302 +2290303 +2290304 +2290305 +2290306 +2290307 +2290308 +2290309 +2290310 +2290311 +2290312 +2290313 +2290314 +2290315 +2290316 +2290317 +2290318 +2290319 +2290320 +2290321 +2290322 +2290323 +2290324 +2290325 +2290326 +2290327 +2290328 +2290329 +2290330 +2290331 +2290332 +2290333 +2290334 +2290335 +2290336 +2290337 +2290338 +2290339 +2290340 +2290341 +2290342 +2290343 +2290344 +2290345 +2290346 +2290347 +2290348 +2290349 +2290350 +2290351 +2290352 +2290353 +2290354 +2290355 +2290356 +2290357 +2290358 +2290359 +2290360 +2290361 +2290362 +2290363 +2290364 +2290365 +2290366 +2290367 +2290368 +2290369 +2290370 +2290371 +2290372 +2290373 +2290374 +2290375 +2290376 +2290377 +2290378 +2290379 +2290380 +2290381 +2290382 +2290383 +2290384 +2290385 +2290386 +2290387 +2290388 +2290389 +2290390 +2290391 +2290392 +2290393 +2290394 +2290395 +2290396 +2290397 +2290398 +2290399 +2290400 +2290401 +2290402 +2290403 +2290404 +2290405 +2290406 +2290407 +2290408 +2290409 +2290410 +2290411 +2290412 +2290413 +2290414 +2290415 +2290416 +2290417 +2290418 +2290419 +2290420 +2290421 +2290422 +2290423 +2290424 +2290425 +2290426 +2290427 +2290428 +2290429 +2290430 +2290431 +2290432 +2290433 +2290434 +2290435 +2290436 +2290437 +2290438 +2290439 +2290440 +2290441 +2290442 +2290443 +2290444 +2290445 +2290446 +2290447 +2290448 +2290449 +2290450 +2290451 +2290452 +2290453 +2290454 +2290455 +2290456 +2290457 +2290458 +2290459 +2290460 +2290461 +2290462 +2290463 +2290464 +2290465 +2290466 +2290467 +2290468 +2290469 +2290470 +2290471 +2290472 +2290473 +2290474 +2290475 +2290476 +2290477 +2290478 +2290479 +2290480 +2290481 +2290482 +2290483 +2290484 +2290485 +2290486 +2290487 +2290488 +2290489 +2290490 +2290491 +2290492 +2290493 +2290494 +2290495 +2290496 +2290497 +2290498 +2290499 +2290500 +2290501 +2290502 +2290503 +2290504 +2290505 +2290506 +2290507 +2290508 +2290509 +2290510 +2290511 +2290512 +2290513 +2290514 +2290515 +2290516 +2290517 +2290518 +2290519 +2290520 +2290521 +2290522 +2290523 +2290524 +2290525 +2290526 +2290527 +2290528 +2290529 +2290530 +2290531 +2290532 +2290533 +2290534 +2290535 +2290536 +2290537 +2290538 +2290539 +2290540 +2290541 +2290542 +2290543 +2290544 +2290545 +2290546 +2290547 +2290548 +2290549 +2290550 +2290551 +2290552 +2290553 +2290554 +2290555 +2290556 +2290557 +2290558 +2290559 +2290560 +2290561 +2290562 +2290563 +2290564 +2290565 +2290566 +2290567 +2290568 +2290569 +2290570 +2290571 +2290572 +2290573 +2290574 +2290575 +2290576 +2290577 +2290578 +2290579 +2290580 +2290581 +2290582 +2290583 +2290584 +2290585 +2290586 +2290587 +2290588 +2290589 +2290590 +2290591 +2290592 +2290593 +2290594 +2290595 +2290596 +2290597 +2290598 +2290599 +2290600 +2290601 +2290602 +2290603 +2290604 +2290605 +2290606 +2290607 +2290608 +2290609 +2290610 +2290611 +2290612 +2290613 +2290614 +2290615 +2290616 +2290617 +2290618 +2290619 +2290620 +2290621 +2290622 +2290623 +2290624 +2290625 +2290626 +2290627 +2290628 +2290629 +2290630 +2290631 +2290632 +2290633 +2290634 +2290635 +2290636 +2290637 +2290638 +2290639 +2290640 +2290641 +2290642 +2290643 +2290644 +2290645 +2290646 +2290647 +2290648 +2290649 +2290650 +2290651 +2290652 +2290653 +2290654 +2290655 +2290656 +2290657 +2290658 +2290659 +2290660 +2290661 +2290662 +2290663 +2290664 +2290665 +2290666 +2290667 +2290668 +2290669 +2290670 +2290671 +2290672 +2290673 +2290674 +2290675 +2290676 +2290677 +2290678 +2290679 +2290680 +2290681 +2290682 +2290683 +2290684 +2290685 +2290686 +2290687 +2290688 +2290689 +2290690 +2290691 +2290692 +2290693 +2290694 +2290695 +2290696 +2290697 +2290698 +2290699 +2290700 +2290701 +2290702 +2290703 +2290704 +2290705 +2290706 +2290707 +2290708 +2290709 +2290710 +2290711 +2290712 +2290713 +2290714 +2290715 +2290716 +2290717 +2290718 +2290719 +2290722 +2290723 +2290724 +2290743 +2290744 +2290746 +2290747 +2290748 +2290919 +2290920 +2290921 +2290922 +2290923 +2290925 +2290926 +2290927 +2290928 +2290929 +2290930 +2290931 +2290932 +2290933 +2290934 +2290935 +2290936 +2290937 +2290938 +2290939 +2290940 +2290941 +2290942 +2290943 +2290944 +2290945 +2290946 +2294594 +2294595 +2294596 +2294597 +2294598 +2294599 +2294600 +2294601 +2294602 +2294603 +2294604 +2294605 +2294606 +2294607 +2294608 +2294609 +2294610 +2294611 +2294612 +2294613 +2294614 +2294615 +2294616 +2294617 +2294618 +2294619 +2294620 +2294621 +2294622 +2294623 +2294624 +2294625 +2294626 +2294627 +2294628 +2294629 +2294630 +2294631 +2294632 +2294633 +2294634 +2294635 +2294636 +2294637 +2294638 +2294639 +2294640 +2294641 +2294642 +2294643 +2294644 +2294645 +2294646 +2294647 +2294648 +2294649 +2294650 +2294651 +2294652 +2294653 +2294654 +2294655 +2294656 +2294657 +2294658 +2294659 +2294660 +2294661 +2294662 +2294663 +2294664 +2294665 +2294666 +2294667 +2294668 +2294669 +2294670 +2294671 +2294672 +2294673 +2294674 +2294675 +2294676 +2294677 +2294678 +2294679 +2294680 +2294681 +2294682 +2294683 +2294684 +2294685 +2294686 +2294687 +2294688 +2294689 +2294690 +2294691 +2294692 +2294693 +2294694 +2294695 +2294696 +2294697 +2294698 +2294699 +2294700 +2294701 +2294702 +2294703 +2294704 +2294705 +2294706 +2294707 +2294708 +2294709 +2294710 +2294711 +2294712 +2294713 +2294714 +2294715 +2294716 +2294717 +2294718 +2294719 +2294720 +2294721 +2294722 +2294723 +2294724 +2294725 +2294726 +2294727 +2294728 +2294729 +2294730 +2294731 +2294732 +2294733 +2294734 +2294735 +2294736 +2294737 +2294738 +2294739 +2294740 +2294741 +2294742 +2294743 +2294744 +2294745 +2294746 +2294747 +2294748 +2294749 +2294750 +2294751 +2294752 +2294753 +2294754 +2294755 +2294756 +2294757 +2294758 +2294759 +2294760 +2294761 +2294762 +2294763 +2294764 +2294765 +2294766 +2294767 +2294768 +2294769 +2294770 +2294771 +2294772 +2294773 +2294774 +2294775 +2294776 +2294777 +2294778 +2294779 +2294780 +2294781 +2294782 +2294783 +2294784 +2294785 +2294786 +2294787 +2294788 +2294789 +2294790 +2294791 +2294792 +2294793 +2294794 +2294795 +2294796 +2294797 +2294798 +2294799 +2294800 +2294801 +2294802 +2294803 +2294804 +2294805 +2294806 +2294807 +2294808 +2294809 +2294810 +2294811 +2294812 +2294813 +2294814 +2294815 +2294816 +2294817 +2294818 +2294819 +2294820 +2294821 +2294822 +2294823 +2294824 +2294825 +2294826 +2294827 +2294828 +2294829 +2294830 +2294831 +2294832 +2294833 +2294834 +2294835 +2294836 +2294837 +2294838 +2294839 +2294840 +2294841 +2294842 +2294843 +2294844 +2294845 +2294846 +2294847 +2294848 +2294849 +2294850 +2294851 +2294852 +2294853 +2294854 +2294855 +2294856 +2294857 +2294858 +2294859 +2294860 +2294861 +2294862 +2294863 +2294864 +2294865 +2294866 +2294867 +2294868 +2294869 +2294870 +2294871 +2294872 +2294873 +2294874 +2294875 +2294876 +2294877 +2294878 +2294879 +2294880 +2294881 +2294882 +2294883 +2294884 +2294885 +2294886 +2294887 +2294888 +2294889 +2294890 +2294891 +2294892 +2294893 +2294894 +2294895 +2294896 +2294897 +2294898 +2294899 +2294900 +2294901 +2294902 +2294903 +2294904 +2294905 +2294906 +2294907 +2294908 +2294909 +2294910 +2294911 +2294912 +2294913 +2294914 +2294915 +2294916 +2294917 +2294918 +2294919 +2294920 +2294921 +2294922 +2294923 +2294924 +2294925 +2294926 +2294927 +2294928 +2294929 +2294930 +2294931 +2294932 +2294933 +2294934 +2294935 +2294936 +2294937 +2294938 +2294939 +2294940 +2294941 +2294942 +2294943 +2294944 +2294945 +2294946 +2294947 +2294948 +2294949 +2294950 +2294951 +2294952 +2294953 +2294954 +2294955 +2294956 +2294957 +2294958 +2294959 +2294960 +2294961 +2294962 +2294963 +2294964 +2294965 +2294966 +2294967 +2294968 +2294969 +2294970 +2294971 +2294972 +2294973 +2294974 +2294975 +2294976 +2294977 +2294978 +2294979 +2294980 +2294981 +2294982 +2294983 +2294984 +2294985 +2294986 +2294987 +2294988 +2294989 +2294990 +2294991 +2294992 +2294993 +2294994 +2294995 +2294996 +2294997 +2294998 +2294999 +2295000 +2295001 +2295002 +2295003 +2295004 +2295005 +2295006 +2295007 +2295008 +2295009 +2295010 +2295011 +2295012 +2295013 +2295014 +2295015 +2295016 +2295017 +2295018 +2295019 +2295020 +2295021 +2295022 +2295023 +2295024 +2295025 +2295026 +2295027 +2295028 +2295029 +2295030 +2295031 +2295032 +2295033 +2295034 +2295035 +2295037 +2295038 +2295040 +2295041 +2295042 +2295054 +2295061 +2295062 +2295063 +2295064 +2295065 +2295067 +2295068 +2295239 +2295240 +2295241 +2295242 +2295244 +2295245 +2295246 +2295247 +2295248 +2295249 +2295250 +2295251 +2295252 +2295253 +2295254 +2295255 +2295256 +2295257 +2295258 +2295259 +2295260 +2295261 +2295262 +2295263 +2295264 +2295265 +2295266 +2298914 +2298915 +2298916 +2298917 +2298918 +2298919 +2298920 +2298921 +2298922 +2298923 +2298924 +2298925 +2298926 +2298927 +2298928 +2298929 +2298930 +2298931 +2298932 +2298933 +2298934 +2298935 +2298936 +2298937 +2298938 +2298939 +2298940 +2298941 +2298942 +2298943 +2298944 +2298945 +2298946 +2298947 +2298948 +2298949 +2298950 +2298951 +2298952 +2298953 +2298954 +2298955 +2298956 +2298957 +2298958 +2298959 +2298960 +2298961 +2298962 +2298963 +2298964 +2298965 +2298966 +2298967 +2298968 +2298969 +2298970 +2298971 +2298972 +2298973 +2298974 +2298975 +2298976 +2298977 +2298978 +2298979 +2298980 +2298981 +2298982 +2298983 +2298984 +2298985 +2298986 +2298987 +2298988 +2298989 +2298990 +2298991 +2298992 +2298993 +2298994 +2298995 +2298996 +2298997 +2298998 +2298999 +2299000 +2299001 +2299002 +2299003 +2299004 +2299005 +2299006 +2299007 +2299008 +2299009 +2299010 +2299011 +2299012 +2299013 +2299014 +2299015 +2299016 +2299017 +2299018 +2299019 +2299020 +2299021 +2299022 +2299023 +2299024 +2299025 +2299026 +2299027 +2299028 +2299029 +2299030 +2299031 +2299032 +2299033 +2299034 +2299035 +2299036 +2299037 +2299038 +2299039 +2299040 +2299041 +2299042 +2299043 +2299044 +2299045 +2299046 +2299047 +2299048 +2299049 +2299050 +2299051 +2299052 +2299053 +2299054 +2299055 +2299056 +2299057 +2299058 +2299059 +2299060 +2299061 +2299062 +2299063 +2299064 +2299065 +2299066 +2299067 +2299068 +2299069 +2299070 +2299071 +2299072 +2299073 +2299074 +2299075 +2299076 +2299077 +2299078 +2299079 +2299080 +2299081 +2299082 +2299083 +2299084 +2299085 +2299086 +2299087 +2299088 +2299089 +2299090 +2299091 +2299092 +2299093 +2299094 +2299095 +2299096 +2299097 +2299098 +2299099 +2299100 +2299101 +2299102 +2299103 +2299104 +2299105 +2299106 +2299107 +2299108 +2299109 +2299110 +2299111 +2299112 +2299113 +2299114 +2299115 +2299116 +2299117 +2299118 +2299119 +2299120 +2299121 +2299122 +2299123 +2299124 +2299125 +2299126 +2299127 +2299128 +2299129 +2299130 +2299131 +2299132 +2299133 +2299134 +2299135 +2299136 +2299137 +2299138 +2299139 +2299140 +2299141 +2299142 +2299143 +2299144 +2299145 +2299146 +2299147 +2299148 +2299149 +2299150 +2299151 +2299152 +2299153 +2299154 +2299155 +2299156 +2299157 +2299158 +2299159 +2299160 +2299161 +2299162 +2299163 +2299164 +2299165 +2299166 +2299167 +2299168 +2299169 +2299170 +2299171 +2299172 +2299173 +2299174 +2299175 +2299176 +2299177 +2299178 +2299179 +2299180 +2299181 +2299182 +2299183 +2299184 +2299185 +2299186 +2299187 +2299188 +2299189 +2299190 +2299191 +2299192 +2299193 +2299194 +2299195 +2299196 +2299197 +2299198 +2299199 +2299200 +2299201 +2299202 +2299203 +2299204 +2299205 +2299206 +2299207 +2299208 +2299209 +2299210 +2299211 +2299212 +2299213 +2299214 +2299215 +2299216 +2299217 +2299218 +2299219 +2299220 +2299221 +2299222 +2299223 +2299224 +2299225 +2299226 +2299227 +2299228 +2299229 +2299230 +2299231 +2299232 +2299233 +2299234 +2299235 +2299236 +2299237 +2299238 +2299239 +2299240 +2299241 +2299242 +2299243 +2299244 +2299245 +2299246 +2299247 +2299248 +2299249 +2299250 +2299251 +2299252 +2299253 +2299254 +2299255 +2299256 +2299257 +2299258 +2299259 +2299260 +2299261 +2299262 +2299263 +2299264 +2299265 +2299266 +2299267 +2299268 +2299269 +2299270 +2299271 +2299272 +2299273 +2299274 +2299275 +2299276 +2299277 +2299278 +2299279 +2299280 +2299281 +2299282 +2299283 +2299284 +2299285 +2299286 +2299287 +2299288 +2299289 +2299290 +2299291 +2299292 +2299293 +2299294 +2299295 +2299296 +2299297 +2299298 +2299299 +2299300 +2299301 +2299302 +2299303 +2299304 +2299305 +2299306 +2299307 +2299308 +2299309 +2299310 +2299311 +2299312 +2299313 +2299314 +2299315 +2299316 +2299317 +2299318 +2299319 +2299320 +2299321 +2299322 +2299323 +2299324 +2299325 +2299326 +2299327 +2299328 +2299329 +2299330 +2299331 +2299332 +2299333 +2299334 +2299335 +2299336 +2299337 +2299338 +2299339 +2299340 +2299341 +2299342 +2299343 +2299344 +2299345 +2299346 +2299347 +2299348 +2299349 +2299350 +2299351 +2299352 +2299353 +2299354 +2299355 +2299360 +2299361 +2299373 +2299374 +2299379 +2299380 +2299381 +2299382 +2299383 +2299384 +2299385 +2299386 +2299387 +2299388 +2299389 +2299390 +2299391 +2299556 +2299557 +2299558 +2299559 +2299560 +2299561 +2299562 +2299563 +2299566 +2299567 +2299568 +2299569 +2299570 +2299571 +2299572 +2299573 +2299574 +2299575 +2299576 +2299577 +2299578 +2299579 +2299580 +2299581 +2299582 +2299583 +2299584 +2299585 +2299586 +2303234 +2303235 +2303236 +2303237 +2303238 +2303239 +2303240 +2303241 +2303242 +2303243 +2303244 +2303245 +2303246 +2303247 +2303248 +2303249 +2303250 +2303251 +2303252 +2303253 +2303254 +2303255 +2303256 +2303257 +2303258 +2303259 +2303260 +2303261 +2303262 +2303263 +2303264 +2303265 +2303266 +2303267 +2303268 +2303269 +2303270 +2303271 +2303272 +2303273 +2303274 +2303275 +2303276 +2303277 +2303278 +2303279 +2303280 +2303281 +2303282 +2303283 +2303284 +2303285 +2303286 +2303287 +2303288 +2303289 +2303290 +2303291 +2303292 +2303293 +2303294 +2303295 +2303296 +2303297 +2303298 +2303299 +2303300 +2303301 +2303302 +2303303 +2303304 +2303305 +2303306 +2303307 +2303308 +2303309 +2303310 +2303311 +2303312 +2303313 +2303314 +2303315 +2303316 +2303317 +2303318 +2303319 +2303320 +2303321 +2303322 +2303323 +2303324 +2303325 +2303326 +2303327 +2303328 +2303329 +2303330 +2303331 +2303332 +2303333 +2303334 +2303335 +2303336 +2303337 +2303338 +2303339 +2303340 +2303341 +2303342 +2303343 +2303344 +2303345 +2303346 +2303347 +2303348 +2303349 +2303350 +2303351 +2303352 +2303353 +2303354 +2303355 +2303356 +2303357 +2303358 +2303359 +2303360 +2303361 +2303362 +2303363 +2303364 +2303365 +2303366 +2303367 +2303368 +2303369 +2303370 +2303371 +2303372 +2303373 +2303374 +2303375 +2303376 +2303377 +2303378 +2303379 +2303380 +2303381 +2303382 +2303383 +2303384 +2303385 +2303386 +2303387 +2303388 +2303389 +2303390 +2303391 +2303392 +2303393 +2303394 +2303395 +2303396 +2303397 +2303398 +2303399 +2303400 +2303401 +2303402 +2303403 +2303404 +2303405 +2303406 +2303407 +2303408 +2303409 +2303410 +2303411 +2303412 +2303413 +2303414 +2303415 +2303416 +2303417 +2303418 +2303419 +2303420 +2303421 +2303422 +2303423 +2303424 +2303425 +2303426 +2303427 +2303428 +2303429 +2303430 +2303431 +2303432 +2303433 +2303434 +2303435 +2303436 +2303437 +2303438 +2303439 +2303440 +2303441 +2303442 +2303443 +2303444 +2303445 +2303446 +2303447 +2303448 +2303449 +2303450 +2303451 +2303452 +2303453 +2303454 +2303455 +2303456 +2303457 +2303458 +2303459 +2303460 +2303461 +2303462 +2303463 +2303464 +2303465 +2303466 +2303467 +2303468 +2303469 +2303470 +2303471 +2303472 +2303473 +2303474 +2303475 +2303476 +2303477 +2303478 +2303479 +2303480 +2303481 +2303482 +2303483 +2303484 +2303485 +2303486 +2303487 +2303488 +2303489 +2303490 +2303491 +2303492 +2303493 +2303494 +2303495 +2303496 +2303497 +2303498 +2303499 +2303500 +2303501 +2303502 +2303503 +2303504 +2303505 +2303506 +2303507 +2303508 +2303509 +2303510 +2303511 +2303512 +2303513 +2303514 +2303515 +2303516 +2303517 +2303518 +2303519 +2303520 +2303521 +2303522 +2303523 +2303524 +2303525 +2303526 +2303527 +2303528 +2303529 +2303530 +2303531 +2303532 +2303533 +2303534 +2303535 +2303536 +2303537 +2303538 +2303539 +2303540 +2303541 +2303542 +2303543 +2303544 +2303545 +2303546 +2303547 +2303548 +2303549 +2303550 +2303551 +2303552 +2303553 +2303554 +2303555 +2303556 +2303557 +2303558 +2303559 +2303560 +2303561 +2303562 +2303563 +2303564 +2303565 +2303566 +2303567 +2303568 +2303569 +2303570 +2303571 +2303572 +2303573 +2303574 +2303575 +2303576 +2303577 +2303578 +2303579 +2303580 +2303581 +2303582 +2303583 +2303584 +2303585 +2303586 +2303587 +2303588 +2303589 +2303590 +2303591 +2303592 +2303593 +2303594 +2303595 +2303596 +2303597 +2303598 +2303599 +2303600 +2303601 +2303602 +2303603 +2303604 +2303605 +2303606 +2303607 +2303608 +2303609 +2303610 +2303611 +2303612 +2303613 +2303614 +2303615 +2303616 +2303617 +2303618 +2303619 +2303620 +2303621 +2303622 +2303623 +2303624 +2303625 +2303626 +2303627 +2303628 +2303629 +2303630 +2303631 +2303632 +2303633 +2303634 +2303635 +2303636 +2303637 +2303638 +2303639 +2303640 +2303641 +2303642 +2303643 +2303644 +2303645 +2303646 +2303647 +2303648 +2303649 +2303650 +2303651 +2303652 +2303653 +2303654 +2303655 +2303656 +2303657 +2303658 +2303659 +2303660 +2303661 +2303662 +2303663 +2303664 +2303665 +2303666 +2303667 +2303668 +2303669 +2303670 +2303671 +2303672 +2303673 +2303693 +2303694 +2303699 +2303700 +2303701 +2303702 +2303703 +2303704 +2303705 +2303706 +2303707 +2303708 +2303709 +2303710 +2303711 +2303876 +2303877 +2303878 +2303879 +2303880 +2303881 +2303882 +2303883 +2303884 +2303886 +2303887 +2303888 +2303889 +2303890 +2303891 +2303892 +2303893 +2303894 +2303895 +2303896 +2303897 +2303898 +2303899 +2303900 +2303901 +2303902 +2303903 +2303904 +2303905 +2303906 +2307554 +2307555 +2307556 +2307557 +2307558 +2307559 +2307560 +2307561 +2307562 +2307563 +2307564 +2307565 +2307566 +2307567 +2307568 +2307569 +2307570 +2307571 +2307572 +2307573 +2307574 +2307575 +2307576 +2307577 +2307578 +2307579 +2307580 +2307581 +2307582 +2307583 +2307584 +2307585 +2307586 +2307587 +2307588 +2307589 +2307590 +2307591 +2307592 +2307593 +2307594 +2307595 +2307596 +2307597 +2307598 +2307599 +2307600 +2307601 +2307602 +2307603 +2307604 +2307605 +2307606 +2307607 +2307608 +2307609 +2307610 +2307611 +2307612 +2307613 +2307614 +2307615 +2307616 +2307617 +2307618 +2307619 +2307620 +2307621 +2307622 +2307623 +2307624 +2307625 +2307626 +2307627 +2307628 +2307629 +2307630 +2307631 +2307632 +2307633 +2307634 +2307635 +2307636 +2307637 +2307638 +2307639 +2307640 +2307641 +2307642 +2307643 +2307644 +2307645 +2307646 +2307647 +2307648 +2307649 +2307650 +2307651 +2307652 +2307653 +2307654 +2307655 +2307656 +2307657 +2307658 +2307659 +2307660 +2307661 +2307662 +2307663 +2307664 +2307665 +2307666 +2307667 +2307668 +2307669 +2307670 +2307671 +2307672 +2307673 +2307674 +2307675 +2307676 +2307677 +2307678 +2307679 +2307680 +2307681 +2307682 +2307683 +2307684 +2307685 +2307686 +2307687 +2307688 +2307689 +2307690 +2307691 +2307692 +2307693 +2307694 +2307695 +2307696 +2307697 +2307698 +2307699 +2307700 +2307701 +2307702 +2307703 +2307704 +2307705 +2307706 +2307707 +2307708 +2307709 +2307710 +2307711 +2307712 +2307713 +2307714 +2307715 +2307716 +2307717 +2307718 +2307719 +2307720 +2307721 +2307722 +2307723 +2307724 +2307725 +2307726 +2307727 +2307728 +2307729 +2307730 +2307731 +2307732 +2307733 +2307734 +2307735 +2307736 +2307737 +2307738 +2307739 +2307740 +2307741 +2307742 +2307743 +2307744 +2307745 +2307746 +2307747 +2307748 +2307749 +2307750 +2307751 +2307752 +2307753 +2307754 +2307755 +2307756 +2307757 +2307758 +2307759 +2307760 +2307761 +2307762 +2307763 +2307764 +2307765 +2307766 +2307767 +2307768 +2307769 +2307770 +2307771 +2307772 +2307773 +2307774 +2307775 +2307776 +2307777 +2307778 +2307779 +2307780 +2307781 +2307782 +2307783 +2307784 +2307785 +2307786 +2307787 +2307788 +2307789 +2307790 +2307791 +2307792 +2307793 +2307794 +2307795 +2307796 +2307797 +2307798 +2307799 +2307800 +2307801 +2307802 +2307803 +2307804 +2307805 +2307806 +2307807 +2307808 +2307809 +2307810 +2307811 +2307812 +2307813 +2307814 +2307815 +2307816 +2307817 +2307818 +2307819 +2307820 +2307821 +2307822 +2307823 +2307824 +2307825 +2307826 +2307827 +2307828 +2307829 +2307830 +2307831 +2307832 +2307833 +2307834 +2307835 +2307836 +2307837 +2307838 +2307839 +2307840 +2307841 +2307842 +2307843 +2307844 +2307845 +2307846 +2307847 +2307848 +2307849 +2307850 +2307851 +2307852 +2307853 +2307854 +2307855 +2307856 +2307857 +2307858 +2307859 +2307860 +2307861 +2307862 +2307863 +2307864 +2307865 +2307866 +2307867 +2307868 +2307869 +2307870 +2307871 +2307872 +2307873 +2307874 +2307875 +2307876 +2307877 +2307878 +2307879 +2307880 +2307881 +2307882 +2307883 +2307884 +2307885 +2307886 +2307887 +2307888 +2307889 +2307890 +2307891 +2307892 +2307893 +2307894 +2307895 +2307896 +2307897 +2307898 +2307899 +2307900 +2307901 +2307902 +2307903 +2307904 +2307905 +2307906 +2307907 +2307908 +2307909 +2307910 +2307911 +2307912 +2307913 +2307914 +2307915 +2307916 +2307917 +2307918 +2307919 +2307920 +2307921 +2307922 +2307923 +2307924 +2307925 +2307926 +2307927 +2307928 +2307929 +2307930 +2307931 +2307932 +2307933 +2307934 +2307935 +2307936 +2307937 +2307938 +2307939 +2307940 +2307941 +2307942 +2307943 +2307944 +2307945 +2307946 +2307947 +2307948 +2307949 +2307950 +2307951 +2307952 +2307953 +2307954 +2307955 +2307956 +2307957 +2307958 +2307959 +2307960 +2307961 +2307962 +2307963 +2307964 +2307965 +2307966 +2307967 +2307968 +2307969 +2307970 +2307971 +2307972 +2307973 +2307974 +2307975 +2307976 +2307977 +2307978 +2307979 +2307980 +2307981 +2307982 +2307983 +2307984 +2307985 +2307986 +2307987 +2307988 +2307989 +2307990 +2307991 +2307992 +2308019 +2308020 +2308021 +2308022 +2308023 +2308025 +2308026 +2308027 +2308028 +2308029 +2308030 +2308031 +2308032 +2308033 +2308034 +2308196 +2308197 +2308198 +2308199 +2308200 +2308201 +2308202 +2308203 +2308204 +2308205 +2308206 +2308207 +2308208 +2308209 +2308210 +2308211 +2308212 +2308213 +2308214 +2308215 +2308216 +2308217 +2308218 +2308219 +2308220 +2308221 +2308222 +2308223 +2308224 +2308225 +2308226 +2311874 +2311875 +2311876 +2311877 +2311878 +2311879 +2311880 +2311881 +2311882 +2311883 +2311884 +2311885 +2311886 +2311887 +2311888 +2311889 +2311890 +2311891 +2311892 +2311893 +2311894 +2311895 +2311896 +2311897 +2311898 +2311899 +2311900 +2311901 +2311902 +2311903 +2311904 +2311905 +2311906 +2311907 +2311908 +2311909 +2311910 +2311911 +2311912 +2311913 +2311914 +2311915 +2311916 +2311917 +2311918 +2311919 +2311920 +2311921 +2311922 +2311923 +2311924 +2311925 +2311926 +2311927 +2311928 +2311929 +2311930 +2311931 +2311932 +2311933 +2311934 +2311935 +2311936 +2311937 +2311938 +2311939 +2311940 +2311941 +2311942 +2311943 +2311944 +2311945 +2311946 +2311947 +2311948 +2311949 +2311950 +2311951 +2311952 +2311953 +2311954 +2311955 +2311956 +2311957 +2311958 +2311959 +2311960 +2311961 +2311962 +2311963 +2311964 +2311965 +2311966 +2311967 +2311968 +2311969 +2311970 +2311971 +2311972 +2311973 +2311974 +2311975 +2311976 +2311977 +2311978 +2311979 +2311980 +2311981 +2311982 +2311983 +2311984 +2311985 +2311986 +2311987 +2311988 +2311989 +2311990 +2311991 +2311992 +2311993 +2311994 +2311995 +2311996 +2311997 +2311998 +2311999 +2312000 +2312001 +2312002 +2312003 +2312004 +2312005 +2312006 +2312007 +2312008 +2312009 +2312010 +2312011 +2312012 +2312013 +2312014 +2312015 +2312016 +2312017 +2312018 +2312019 +2312020 +2312021 +2312022 +2312023 +2312024 +2312025 +2312026 +2312027 +2312028 +2312029 +2312030 +2312031 +2312032 +2312033 +2312034 +2312035 +2312036 +2312037 +2312038 +2312039 +2312040 +2312041 +2312042 +2312043 +2312044 +2312045 +2312046 +2312047 +2312048 +2312049 +2312050 +2312051 +2312052 +2312053 +2312054 +2312055 +2312056 +2312057 +2312058 +2312059 +2312060 +2312061 +2312062 +2312063 +2312064 +2312065 +2312066 +2312067 +2312068 +2312069 +2312070 +2312071 +2312072 +2312073 +2312074 +2312075 +2312076 +2312077 +2312078 +2312079 +2312080 +2312081 +2312082 +2312083 +2312084 +2312085 +2312086 +2312087 +2312088 +2312089 +2312090 +2312091 +2312092 +2312093 +2312094 +2312095 +2312096 +2312097 +2312098 +2312099 +2312100 +2312101 +2312102 +2312103 +2312104 +2312105 +2312106 +2312107 +2312108 +2312109 +2312110 +2312111 +2312112 +2312113 +2312114 +2312115 +2312116 +2312117 +2312118 +2312119 +2312120 +2312121 +2312122 +2312123 +2312124 +2312125 +2312126 +2312127 +2312128 +2312129 +2312130 +2312131 +2312132 +2312133 +2312134 +2312135 +2312136 +2312137 +2312138 +2312139 +2312140 +2312141 +2312142 +2312143 +2312144 +2312145 +2312146 +2312147 +2312148 +2312149 +2312150 +2312151 +2312152 +2312153 +2312154 +2312155 +2312156 +2312157 +2312158 +2312159 +2312160 +2312161 +2312162 +2312163 +2312164 +2312165 +2312166 +2312167 +2312168 +2312169 +2312170 +2312171 +2312172 +2312173 +2312174 +2312175 +2312176 +2312177 +2312178 +2312179 +2312180 +2312181 +2312182 +2312183 +2312184 +2312185 +2312186 +2312187 +2312188 +2312189 +2312190 +2312191 +2312192 +2312193 +2312194 +2312195 +2312196 +2312197 +2312198 +2312199 +2312200 +2312201 +2312202 +2312203 +2312204 +2312205 +2312206 +2312207 +2312208 +2312209 +2312210 +2312211 +2312212 +2312213 +2312214 +2312215 +2312216 +2312217 +2312218 +2312219 +2312220 +2312221 +2312222 +2312223 +2312224 +2312225 +2312226 +2312227 +2312228 +2312229 +2312230 +2312231 +2312232 +2312233 +2312234 +2312235 +2312236 +2312237 +2312238 +2312239 +2312240 +2312241 +2312242 +2312243 +2312244 +2312245 +2312246 +2312247 +2312248 +2312249 +2312250 +2312251 +2312252 +2312253 +2312254 +2312255 +2312256 +2312257 +2312258 +2312259 +2312260 +2312261 +2312262 +2312263 +2312264 +2312265 +2312266 +2312267 +2312268 +2312269 +2312270 +2312271 +2312272 +2312273 +2312274 +2312275 +2312276 +2312277 +2312278 +2312279 +2312280 +2312281 +2312282 +2312283 +2312284 +2312285 +2312286 +2312287 +2312288 +2312289 +2312290 +2312291 +2312292 +2312293 +2312294 +2312295 +2312296 +2312297 +2312298 +2312299 +2312300 +2312301 +2312302 +2312303 +2312304 +2312305 +2312306 +2312307 +2312308 +2312309 +2312310 +2312311 +2312312 +2312338 +2312339 +2312340 +2312341 +2312342 +2312343 +2312344 +2312345 +2312346 +2312347 +2312348 +2312349 +2312350 +2312351 +2312352 +2312353 +2312354 +2312355 +2312356 +2312357 +2312513 +2312514 +2312515 +2312516 +2312517 +2312518 +2312519 +2312520 +2312521 +2312522 +2312523 +2312524 +2312525 +2312526 +2312527 +2312528 +2312529 +2312530 +2312531 +2312532 +2312533 +2312534 +2312535 +2312536 +2312537 +2312538 +2312539 +2312540 +2312541 +2312542 +2312543 +2312544 +2312545 +2312546 +2312547 +2312548 +2312549 +2316194 +2316195 +2316196 +2316197 +2316198 +2316199 +2316200 +2316201 +2316202 +2316203 +2316204 +2316205 +2316206 +2316207 +2316208 +2316209 +2316210 +2316211 +2316212 +2316213 +2316214 +2316215 +2316216 +2316217 +2316218 +2316219 +2316220 +2316221 +2316222 +2316223 +2316224 +2316225 +2316226 +2316227 +2316228 +2316229 +2316230 +2316231 +2316232 +2316233 +2316234 +2316235 +2316236 +2316237 +2316238 +2316239 +2316240 +2316241 +2316242 +2316243 +2316244 +2316245 +2316246 +2316247 +2316248 +2316249 +2316250 +2316251 +2316252 +2316253 +2316254 +2316255 +2316256 +2316257 +2316258 +2316259 +2316260 +2316261 +2316262 +2316263 +2316264 +2316265 +2316266 +2316267 +2316268 +2316269 +2316270 +2316271 +2316272 +2316273 +2316274 +2316275 +2316276 +2316277 +2316278 +2316279 +2316280 +2316281 +2316282 +2316283 +2316284 +2316285 +2316286 +2316287 +2316288 +2316289 +2316290 +2316291 +2316292 +2316293 +2316294 +2316295 +2316296 +2316297 +2316298 +2316299 +2316300 +2316301 +2316302 +2316303 +2316304 +2316305 +2316306 +2316307 +2316308 +2316309 +2316310 +2316311 +2316312 +2316313 +2316314 +2316315 +2316316 +2316317 +2316318 +2316319 +2316320 +2316321 +2316322 +2316323 +2316324 +2316325 +2316326 +2316327 +2316328 +2316329 +2316330 +2316331 +2316332 +2316333 +2316334 +2316335 +2316336 +2316337 +2316338 +2316339 +2316340 +2316341 +2316342 +2316343 +2316344 +2316345 +2316346 +2316347 +2316348 +2316349 +2316350 +2316351 +2316352 +2316353 +2316354 +2316355 +2316356 +2316357 +2316358 +2316359 +2316360 +2316361 +2316362 +2316363 +2316364 +2316365 +2316366 +2316367 +2316368 +2316369 +2316370 +2316371 +2316372 +2316373 +2316374 +2316375 +2316376 +2316377 +2316378 +2316379 +2316380 +2316381 +2316382 +2316383 +2316384 +2316385 +2316386 +2316387 +2316388 +2316389 +2316390 +2316391 +2316392 +2316393 +2316394 +2316395 +2316396 +2316397 +2316398 +2316399 +2316400 +2316401 +2316402 +2316403 +2316404 +2316405 +2316406 +2316407 +2316408 +2316409 +2316410 +2316411 +2316412 +2316413 +2316414 +2316415 +2316416 +2316417 +2316418 +2316419 +2316420 +2316421 +2316422 +2316423 +2316424 +2316425 +2316426 +2316427 +2316428 +2316429 +2316430 +2316431 +2316432 +2316433 +2316434 +2316435 +2316436 +2316437 +2316438 +2316439 +2316440 +2316441 +2316442 +2316443 +2316444 +2316445 +2316446 +2316447 +2316448 +2316449 +2316450 +2316451 +2316452 +2316453 +2316454 +2316455 +2316456 +2316457 +2316458 +2316459 +2316460 +2316461 +2316462 +2316463 +2316464 +2316465 +2316466 +2316467 +2316468 +2316469 +2316470 +2316471 +2316472 +2316473 +2316474 +2316475 +2316476 +2316477 +2316478 +2316479 +2316480 +2316481 +2316482 +2316483 +2316484 +2316485 +2316486 +2316487 +2316488 +2316489 +2316490 +2316491 +2316492 +2316493 +2316494 +2316495 +2316496 +2316497 +2316498 +2316499 +2316500 +2316501 +2316502 +2316503 +2316504 +2316505 +2316506 +2316507 +2316508 +2316509 +2316510 +2316511 +2316512 +2316513 +2316514 +2316515 +2316516 +2316517 +2316518 +2316519 +2316520 +2316521 +2316522 +2316523 +2316524 +2316525 +2316526 +2316527 +2316528 +2316529 +2316530 +2316531 +2316532 +2316533 +2316534 +2316535 +2316536 +2316537 +2316538 +2316539 +2316540 +2316541 +2316542 +2316543 +2316544 +2316545 +2316546 +2316547 +2316548 +2316549 +2316550 +2316551 +2316552 +2316553 +2316554 +2316555 +2316556 +2316557 +2316558 +2316559 +2316560 +2316561 +2316562 +2316563 +2316564 +2316565 +2316566 +2316567 +2316568 +2316569 +2316570 +2316571 +2316572 +2316573 +2316574 +2316575 +2316576 +2316577 +2316578 +2316579 +2316580 +2316581 +2316582 +2316583 +2316584 +2316585 +2316586 +2316587 +2316588 +2316589 +2316590 +2316591 +2316592 +2316593 +2316594 +2316595 +2316596 +2316597 +2316598 +2316599 +2316600 +2316601 +2316602 +2316603 +2316604 +2316605 +2316606 +2316607 +2316608 +2316609 +2316610 +2316611 +2316612 +2316613 +2316614 +2316615 +2316616 +2316617 +2316618 +2316619 +2316620 +2316621 +2316622 +2316623 +2316624 +2316625 +2316626 +2316627 +2316628 +2316629 +2316630 +2316631 +2316635 +2316656 +2316657 +2316658 +2316659 +2316660 +2316661 +2316662 +2316663 +2316664 +2316665 +2316666 +2316667 +2316668 +2316669 +2316670 +2316671 +2316672 +2316673 +2316674 +2316675 +2316676 +2316677 +2316678 +2316679 +2316833 +2316834 +2316835 +2316836 +2316837 +2316838 +2316839 +2316840 +2316841 +2316842 +2316843 +2316844 +2316845 +2316846 +2316847 +2316848 +2316849 +2316850 +2316851 +2316852 +2316853 +2316854 +2316855 +2316856 +2316857 +2316858 +2316859 +2316860 +2316861 +2316862 +2316863 +2316864 +2316865 +2316866 +2316867 +2316868 +2316869 +2320514 +2320515 +2320516 +2320517 +2320518 +2320519 +2320520 +2320521 +2320522 +2320523 +2320524 +2320525 +2320526 +2320527 +2320528 +2320529 +2320530 +2320531 +2320532 +2320533 +2320534 +2320535 +2320536 +2320537 +2320538 +2320539 +2320540 +2320541 +2320542 +2320543 +2320544 +2320545 +2320546 +2320547 +2320548 +2320549 +2320550 +2320551 +2320552 +2320553 +2320554 +2320555 +2320556 +2320557 +2320558 +2320559 +2320560 +2320561 +2320562 +2320563 +2320564 +2320565 +2320566 +2320567 +2320568 +2320569 +2320570 +2320571 +2320572 +2320573 +2320574 +2320575 +2320576 +2320577 +2320578 +2320579 +2320580 +2320581 +2320582 +2320583 +2320584 +2320585 +2320586 +2320587 +2320588 +2320589 +2320590 +2320591 +2320592 +2320593 +2320594 +2320595 +2320596 +2320597 +2320598 +2320599 +2320600 +2320601 +2320602 +2320603 +2320604 +2320605 +2320606 +2320607 +2320608 +2320609 +2320610 +2320611 +2320612 +2320613 +2320614 +2320615 +2320616 +2320617 +2320618 +2320619 +2320620 +2320621 +2320622 +2320623 +2320624 +2320625 +2320626 +2320627 +2320628 +2320629 +2320630 +2320631 +2320632 +2320633 +2320634 +2320635 +2320636 +2320637 +2320638 +2320639 +2320640 +2320641 +2320642 +2320643 +2320644 +2320645 +2320646 +2320647 +2320648 +2320649 +2320650 +2320651 +2320652 +2320653 +2320654 +2320655 +2320656 +2320657 +2320658 +2320659 +2320660 +2320661 +2320662 +2320663 +2320664 +2320665 +2320666 +2320667 +2320668 +2320669 +2320670 +2320671 +2320672 +2320673 +2320674 +2320675 +2320676 +2320677 +2320678 +2320679 +2320680 +2320681 +2320682 +2320683 +2320684 +2320685 +2320686 +2320687 +2320688 +2320689 +2320690 +2320691 +2320692 +2320693 +2320694 +2320695 +2320696 +2320697 +2320698 +2320699 +2320700 +2320701 +2320702 +2320703 +2320704 +2320705 +2320706 +2320707 +2320708 +2320709 +2320710 +2320711 +2320712 +2320713 +2320714 +2320715 +2320716 +2320717 +2320718 +2320719 +2320720 +2320721 +2320722 +2320723 +2320724 +2320725 +2320726 +2320727 +2320728 +2320729 +2320730 +2320731 +2320732 +2320733 +2320734 +2320735 +2320736 +2320737 +2320738 +2320739 +2320740 +2320741 +2320742 +2320743 +2320744 +2320745 +2320746 +2320747 +2320748 +2320749 +2320750 +2320751 +2320752 +2320753 +2320754 +2320755 +2320756 +2320757 +2320758 +2320759 +2320760 +2320761 +2320762 +2320763 +2320764 +2320765 +2320766 +2320767 +2320768 +2320769 +2320770 +2320771 +2320772 +2320773 +2320774 +2320775 +2320776 +2320777 +2320778 +2320779 +2320780 +2320781 +2320782 +2320783 +2320784 +2320785 +2320786 +2320787 +2320788 +2320789 +2320790 +2320791 +2320792 +2320793 +2320794 +2320795 +2320796 +2320797 +2320798 +2320799 +2320800 +2320801 +2320802 +2320803 +2320804 +2320805 +2320806 +2320807 +2320808 +2320809 +2320810 +2320811 +2320812 +2320813 +2320814 +2320815 +2320816 +2320817 +2320818 +2320819 +2320820 +2320821 +2320822 +2320823 +2320824 +2320825 +2320826 +2320827 +2320828 +2320829 +2320830 +2320831 +2320832 +2320833 +2320834 +2320835 +2320836 +2320837 +2320838 +2320839 +2320840 +2320841 +2320842 +2320843 +2320844 +2320845 +2320846 +2320847 +2320848 +2320849 +2320850 +2320851 +2320852 +2320853 +2320854 +2320855 +2320856 +2320857 +2320858 +2320859 +2320860 +2320861 +2320862 +2320863 +2320864 +2320865 +2320866 +2320867 +2320868 +2320869 +2320870 +2320871 +2320872 +2320873 +2320874 +2320875 +2320876 +2320877 +2320878 +2320879 +2320880 +2320881 +2320882 +2320883 +2320884 +2320885 +2320886 +2320887 +2320888 +2320889 +2320890 +2320891 +2320892 +2320893 +2320894 +2320895 +2320896 +2320897 +2320898 +2320899 +2320900 +2320901 +2320902 +2320903 +2320904 +2320905 +2320906 +2320907 +2320908 +2320909 +2320910 +2320911 +2320912 +2320913 +2320914 +2320915 +2320916 +2320917 +2320918 +2320919 +2320920 +2320921 +2320922 +2320923 +2320924 +2320925 +2320926 +2320927 +2320928 +2320929 +2320930 +2320931 +2320932 +2320933 +2320934 +2320935 +2320936 +2320937 +2320938 +2320939 +2320940 +2320941 +2320942 +2320943 +2320944 +2320945 +2320946 +2320947 +2320948 +2320949 +2320950 +2320955 +2320956 +2320973 +2320976 +2320977 +2320978 +2320979 +2320980 +2320981 +2320982 +2320983 +2320984 +2320985 +2320986 +2320987 +2320988 +2320989 +2320990 +2320991 +2320992 +2320993 +2320994 +2320995 +2320996 +2320997 +2320998 +2320999 +2321000 +2321153 +2321154 +2321155 +2321156 +2321157 +2321158 +2321159 +2321160 +2321161 +2321162 +2321163 +2321164 +2321165 +2321166 +2321167 +2321168 +2321169 +2321170 +2321171 +2321172 +2321173 +2321174 +2321175 +2321176 +2321177 +2321178 +2321179 +2321180 +2321181 +2321182 +2321183 +2321184 +2321187 +2321188 +2321189 +2324834 +2324835 +2324836 +2324837 +2324838 +2324839 +2324840 +2324841 +2324842 +2324843 +2324844 +2324845 +2324846 +2324847 +2324848 +2324849 +2324850 +2324851 +2324852 +2324853 +2324854 +2324855 +2324856 +2324857 +2324858 +2324859 +2324860 +2324861 +2324862 +2324863 +2324864 +2324865 +2324866 +2324867 +2324868 +2324869 +2324870 +2324871 +2324872 +2324873 +2324874 +2324875 +2324876 +2324877 +2324878 +2324879 +2324880 +2324881 +2324882 +2324883 +2324884 +2324885 +2324886 +2324887 +2324888 +2324889 +2324890 +2324891 +2324892 +2324893 +2324894 +2324895 +2324896 +2324897 +2324898 +2324899 +2324900 +2324901 +2324902 +2324903 +2324904 +2324905 +2324906 +2324907 +2324908 +2324909 +2324910 +2324911 +2324912 +2324913 +2324914 +2324915 +2324916 +2324917 +2324918 +2324919 +2324920 +2324921 +2324922 +2324923 +2324924 +2324925 +2324926 +2324927 +2324928 +2324929 +2324930 +2324931 +2324932 +2324933 +2324934 +2324935 +2324936 +2324937 +2324938 +2324939 +2324940 +2324941 +2324942 +2324943 +2324944 +2324945 +2324946 +2324947 +2324948 +2324949 +2324950 +2324951 +2324952 +2324953 +2324954 +2324955 +2324956 +2324957 +2324958 +2324959 +2324960 +2324961 +2324962 +2324963 +2324964 +2324965 +2324966 +2324967 +2324968 +2324969 +2324970 +2324971 +2324972 +2324973 +2324974 +2324975 +2324976 +2324977 +2324978 +2324979 +2324980 +2324981 +2324982 +2324983 +2324984 +2324985 +2324986 +2324987 +2324988 +2324989 +2324990 +2324991 +2324992 +2324993 +2324994 +2324995 +2324996 +2324997 +2324998 +2324999 +2325000 +2325001 +2325002 +2325003 +2325004 +2325005 +2325006 +2325007 +2325008 +2325009 +2325010 +2325011 +2325012 +2325013 +2325014 +2325015 +2325016 +2325017 +2325018 +2325019 +2325020 +2325021 +2325022 +2325023 +2325024 +2325025 +2325026 +2325027 +2325028 +2325029 +2325030 +2325031 +2325032 +2325033 +2325034 +2325035 +2325036 +2325037 +2325038 +2325039 +2325040 +2325041 +2325042 +2325043 +2325044 +2325045 +2325046 +2325047 +2325048 +2325049 +2325050 +2325051 +2325052 +2325053 +2325054 +2325055 +2325056 +2325057 +2325058 +2325059 +2325060 +2325061 +2325062 +2325063 +2325064 +2325065 +2325066 +2325067 +2325068 +2325069 +2325070 +2325071 +2325072 +2325073 +2325074 +2325075 +2325076 +2325077 +2325078 +2325079 +2325080 +2325081 +2325082 +2325083 +2325084 +2325085 +2325086 +2325087 +2325088 +2325089 +2325090 +2325091 +2325092 +2325093 +2325094 +2325095 +2325096 +2325097 +2325098 +2325099 +2325100 +2325101 +2325102 +2325103 +2325104 +2325105 +2325106 +2325107 +2325108 +2325109 +2325110 +2325111 +2325112 +2325113 +2325114 +2325115 +2325116 +2325117 +2325118 +2325119 +2325120 +2325121 +2325122 +2325123 +2325124 +2325125 +2325126 +2325127 +2325128 +2325129 +2325130 +2325131 +2325132 +2325133 +2325134 +2325135 +2325136 +2325137 +2325138 +2325139 +2325140 +2325141 +2325142 +2325143 +2325144 +2325145 +2325146 +2325147 +2325148 +2325149 +2325150 +2325151 +2325152 +2325153 +2325154 +2325155 +2325156 +2325157 +2325158 +2325159 +2325160 +2325161 +2325162 +2325163 +2325164 +2325165 +2325166 +2325167 +2325168 +2325169 +2325170 +2325171 +2325172 +2325173 +2325174 +2325175 +2325176 +2325177 +2325178 +2325179 +2325180 +2325181 +2325182 +2325183 +2325184 +2325185 +2325186 +2325187 +2325188 +2325189 +2325190 +2325191 +2325192 +2325193 +2325194 +2325195 +2325196 +2325197 +2325198 +2325199 +2325200 +2325201 +2325202 +2325203 +2325204 +2325205 +2325206 +2325207 +2325208 +2325209 +2325210 +2325211 +2325212 +2325213 +2325214 +2325215 +2325216 +2325217 +2325218 +2325219 +2325220 +2325221 +2325222 +2325223 +2325224 +2325225 +2325226 +2325227 +2325228 +2325229 +2325230 +2325231 +2325232 +2325233 +2325234 +2325235 +2325236 +2325237 +2325238 +2325239 +2325240 +2325241 +2325242 +2325243 +2325244 +2325245 +2325246 +2325247 +2325248 +2325249 +2325250 +2325251 +2325252 +2325253 +2325254 +2325255 +2325256 +2325257 +2325258 +2325259 +2325260 +2325261 +2325262 +2325263 +2325264 +2325265 +2325266 +2325267 +2325268 +2325269 +2325273 +2325274 +2325275 +2325288 +2325292 +2325293 +2325294 +2325296 +2325297 +2325298 +2325299 +2325300 +2325301 +2325302 +2325303 +2325304 +2325305 +2325306 +2325307 +2325308 +2325309 +2325310 +2325311 +2325312 +2325313 +2325314 +2325315 +2325316 +2325317 +2325318 +2325319 +2325320 +2325464 +2325465 +2325466 +2325467 +2325468 +2325469 +2325470 +2325471 +2325472 +2325473 +2325474 +2325475 +2325476 +2325477 +2325478 +2325479 +2325480 +2325481 +2325482 +2325483 +2325484 +2325485 +2325486 +2325487 +2325488 +2325489 +2325490 +2325491 +2325492 +2325493 +2325494 +2325495 +2325496 +2325497 +2325498 +2325499 +2325500 +2325501 +2325502 +2325503 +2325504 +2325505 +2325506 +2325507 +2325508 +2325509 +2325510 +2325511 +2325512 +2325513 +2325514 +2329154 +2329155 +2329156 +2329157 +2329158 +2329159 +2329160 +2329161 +2329162 +2329163 +2329164 +2329165 +2329166 +2329167 +2329168 +2329169 +2329170 +2329171 +2329172 +2329173 +2329174 +2329175 +2329176 +2329177 +2329178 +2329179 +2329180 +2329181 +2329182 +2329183 +2329184 +2329185 +2329186 +2329187 +2329188 +2329189 +2329190 +2329191 +2329192 +2329193 +2329194 +2329195 +2329196 +2329197 +2329198 +2329199 +2329200 +2329201 +2329202 +2329203 +2329204 +2329205 +2329206 +2329207 +2329208 +2329209 +2329210 +2329211 +2329212 +2329213 +2329214 +2329215 +2329216 +2329217 +2329218 +2329219 +2329220 +2329221 +2329222 +2329223 +2329224 +2329225 +2329226 +2329227 +2329228 +2329229 +2329230 +2329231 +2329232 +2329233 +2329234 +2329235 +2329236 +2329237 +2329238 +2329239 +2329240 +2329241 +2329242 +2329243 +2329244 +2329245 +2329246 +2329247 +2329248 +2329249 +2329250 +2329251 +2329252 +2329253 +2329254 +2329255 +2329256 +2329257 +2329258 +2329259 +2329260 +2329261 +2329262 +2329263 +2329264 +2329265 +2329266 +2329267 +2329268 +2329269 +2329270 +2329271 +2329272 +2329273 +2329274 +2329275 +2329276 +2329277 +2329278 +2329279 +2329280 +2329281 +2329282 +2329283 +2329284 +2329285 +2329286 +2329287 +2329288 +2329289 +2329290 +2329291 +2329292 +2329293 +2329294 +2329295 +2329296 +2329297 +2329298 +2329299 +2329300 +2329301 +2329302 +2329303 +2329304 +2329305 +2329306 +2329307 +2329308 +2329309 +2329310 +2329311 +2329312 +2329313 +2329314 +2329315 +2329316 +2329317 +2329318 +2329319 +2329320 +2329321 +2329322 +2329323 +2329324 +2329325 +2329326 +2329327 +2329328 +2329329 +2329330 +2329331 +2329332 +2329333 +2329334 +2329335 +2329336 +2329337 +2329338 +2329339 +2329340 +2329341 +2329342 +2329343 +2329344 +2329345 +2329346 +2329347 +2329348 +2329349 +2329350 +2329351 +2329352 +2329353 +2329354 +2329355 +2329356 +2329357 +2329358 +2329359 +2329360 +2329361 +2329362 +2329363 +2329364 +2329365 +2329366 +2329367 +2329368 +2329369 +2329370 +2329371 +2329372 +2329373 +2329374 +2329375 +2329376 +2329377 +2329378 +2329379 +2329380 +2329381 +2329382 +2329383 +2329384 +2329385 +2329386 +2329387 +2329388 +2329389 +2329390 +2329391 +2329392 +2329393 +2329394 +2329395 +2329396 +2329397 +2329398 +2329399 +2329400 +2329401 +2329402 +2329403 +2329404 +2329405 +2329406 +2329407 +2329408 +2329409 +2329410 +2329411 +2329412 +2329413 +2329414 +2329415 +2329416 +2329417 +2329418 +2329419 +2329420 +2329421 +2329422 +2329423 +2329424 +2329425 +2329426 +2329427 +2329428 +2329429 +2329430 +2329431 +2329432 +2329433 +2329434 +2329435 +2329436 +2329437 +2329438 +2329439 +2329440 +2329441 +2329442 +2329443 +2329444 +2329445 +2329446 +2329447 +2329448 +2329449 +2329450 +2329451 +2329452 +2329453 +2329454 +2329455 +2329456 +2329457 +2329458 +2329459 +2329460 +2329461 +2329462 +2329463 +2329464 +2329465 +2329466 +2329467 +2329468 +2329469 +2329470 +2329471 +2329472 +2329473 +2329474 +2329475 +2329476 +2329477 +2329478 +2329479 +2329480 +2329481 +2329482 +2329483 +2329484 +2329485 +2329486 +2329487 +2329488 +2329489 +2329490 +2329491 +2329492 +2329493 +2329494 +2329495 +2329496 +2329497 +2329498 +2329499 +2329500 +2329501 +2329502 +2329503 +2329504 +2329505 +2329506 +2329507 +2329508 +2329509 +2329510 +2329511 +2329512 +2329513 +2329514 +2329515 +2329516 +2329517 +2329518 +2329519 +2329520 +2329521 +2329522 +2329523 +2329524 +2329525 +2329526 +2329527 +2329528 +2329529 +2329530 +2329531 +2329532 +2329533 +2329534 +2329535 +2329536 +2329537 +2329538 +2329539 +2329540 +2329541 +2329542 +2329543 +2329544 +2329545 +2329546 +2329547 +2329548 +2329549 +2329550 +2329551 +2329552 +2329553 +2329554 +2329555 +2329556 +2329557 +2329558 +2329559 +2329560 +2329561 +2329562 +2329563 +2329564 +2329565 +2329566 +2329567 +2329568 +2329569 +2329570 +2329571 +2329572 +2329573 +2329574 +2329575 +2329576 +2329577 +2329578 +2329579 +2329580 +2329581 +2329582 +2329583 +2329584 +2329585 +2329586 +2329587 +2329588 +2329592 +2329593 +2329594 +2329595 +2329608 +2329611 +2329612 +2329613 +2329616 +2329617 +2329618 +2329619 +2329620 +2329621 +2329622 +2329623 +2329624 +2329625 +2329626 +2329627 +2329628 +2329629 +2329630 +2329631 +2329632 +2329633 +2329634 +2329635 +2329636 +2329637 +2329638 +2329639 +2329640 +2329641 +2329784 +2329785 +2329786 +2329787 +2329788 +2329789 +2329790 +2329791 +2329792 +2329793 +2329794 +2329795 +2329796 +2329797 +2329798 +2329799 +2329800 +2329801 +2329802 +2329803 +2329804 +2329805 +2329806 +2329807 +2329808 +2329809 +2329810 +2329811 +2329812 +2329813 +2329814 +2329815 +2329816 +2329817 +2329818 +2329819 +2329820 +2329821 +2329822 +2329823 +2329824 +2329825 +2329826 +2329827 +2329828 +2329829 +2329830 +2329831 +2329832 +2329833 +2329834 +2329835 +2333474 +2333475 +2333476 +2333477 +2333478 +2333479 +2333480 +2333481 +2333482 +2333483 +2333484 +2333485 +2333486 +2333487 +2333488 +2333489 +2333490 +2333491 +2333492 +2333493 +2333494 +2333495 +2333496 +2333497 +2333498 +2333499 +2333500 +2333501 +2333502 +2333503 +2333504 +2333505 +2333506 +2333507 +2333508 +2333509 +2333510 +2333511 +2333512 +2333513 +2333514 +2333515 +2333516 +2333517 +2333518 +2333519 +2333520 +2333521 +2333522 +2333523 +2333524 +2333525 +2333526 +2333527 +2333528 +2333529 +2333530 +2333531 +2333532 +2333533 +2333534 +2333535 +2333536 +2333537 +2333538 +2333539 +2333540 +2333541 +2333542 +2333543 +2333544 +2333545 +2333546 +2333547 +2333548 +2333549 +2333550 +2333551 +2333552 +2333553 +2333554 +2333555 +2333556 +2333557 +2333558 +2333559 +2333560 +2333561 +2333562 +2333563 +2333564 +2333565 +2333566 +2333567 +2333568 +2333569 +2333570 +2333571 +2333572 +2333573 +2333574 +2333575 +2333576 +2333577 +2333578 +2333579 +2333580 +2333581 +2333582 +2333583 +2333584 +2333585 +2333586 +2333587 +2333588 +2333589 +2333590 +2333591 +2333592 +2333593 +2333594 +2333595 +2333596 +2333597 +2333598 +2333599 +2333600 +2333601 +2333602 +2333603 +2333604 +2333605 +2333606 +2333607 +2333608 +2333609 +2333610 +2333611 +2333612 +2333613 +2333614 +2333615 +2333616 +2333617 +2333618 +2333619 +2333620 +2333621 +2333622 +2333623 +2333624 +2333625 +2333626 +2333627 +2333628 +2333629 +2333630 +2333631 +2333632 +2333633 +2333634 +2333635 +2333636 +2333637 +2333638 +2333639 +2333640 +2333641 +2333642 +2333643 +2333644 +2333645 +2333646 +2333647 +2333648 +2333649 +2333650 +2333651 +2333652 +2333653 +2333654 +2333655 +2333656 +2333657 +2333658 +2333659 +2333660 +2333661 +2333662 +2333663 +2333664 +2333665 +2333666 +2333667 +2333668 +2333669 +2333670 +2333671 +2333672 +2333673 +2333674 +2333675 +2333676 +2333677 +2333678 +2333679 +2333680 +2333681 +2333682 +2333683 +2333684 +2333685 +2333686 +2333687 +2333688 +2333689 +2333690 +2333691 +2333692 +2333693 +2333694 +2333695 +2333696 +2333697 +2333698 +2333699 +2333700 +2333701 +2333702 +2333703 +2333704 +2333705 +2333706 +2333707 +2333708 +2333709 +2333710 +2333711 +2333712 +2333713 +2333714 +2333715 +2333716 +2333717 +2333718 +2333719 +2333720 +2333721 +2333722 +2333723 +2333724 +2333725 +2333726 +2333727 +2333728 +2333729 +2333730 +2333731 +2333732 +2333733 +2333734 +2333735 +2333736 +2333737 +2333738 +2333739 +2333740 +2333741 +2333742 +2333743 +2333744 +2333745 +2333746 +2333747 +2333748 +2333749 +2333750 +2333751 +2333752 +2333753 +2333754 +2333755 +2333756 +2333757 +2333758 +2333759 +2333760 +2333761 +2333762 +2333763 +2333764 +2333765 +2333766 +2333767 +2333768 +2333769 +2333770 +2333771 +2333772 +2333773 +2333774 +2333775 +2333776 +2333777 +2333778 +2333779 +2333780 +2333781 +2333782 +2333783 +2333784 +2333785 +2333786 +2333787 +2333788 +2333789 +2333790 +2333791 +2333792 +2333793 +2333794 +2333795 +2333796 +2333797 +2333798 +2333799 +2333800 +2333801 +2333802 +2333803 +2333804 +2333805 +2333806 +2333807 +2333808 +2333809 +2333810 +2333811 +2333812 +2333813 +2333814 +2333815 +2333816 +2333817 +2333818 +2333819 +2333820 +2333821 +2333822 +2333823 +2333824 +2333825 +2333826 +2333827 +2333828 +2333829 +2333830 +2333831 +2333832 +2333833 +2333834 +2333835 +2333836 +2333837 +2333838 +2333839 +2333840 +2333841 +2333842 +2333843 +2333844 +2333845 +2333846 +2333847 +2333848 +2333849 +2333850 +2333851 +2333852 +2333853 +2333854 +2333855 +2333856 +2333857 +2333858 +2333859 +2333860 +2333861 +2333862 +2333863 +2333864 +2333865 +2333866 +2333867 +2333868 +2333869 +2333870 +2333871 +2333872 +2333873 +2333874 +2333875 +2333876 +2333877 +2333878 +2333879 +2333880 +2333881 +2333882 +2333883 +2333884 +2333885 +2333886 +2333887 +2333888 +2333889 +2333890 +2333891 +2333892 +2333893 +2333894 +2333895 +2333896 +2333897 +2333898 +2333899 +2333900 +2333901 +2333902 +2333903 +2333904 +2333905 +2333906 +2333907 +2333908 +2333912 +2333913 +2333914 +2333929 +2333931 +2333932 +2333933 +2333934 +2333936 +2333937 +2333938 +2333939 +2333940 +2333941 +2333942 +2333943 +2333944 +2333945 +2333946 +2333947 +2333948 +2333949 +2333950 +2333951 +2333952 +2333953 +2333954 +2333955 +2333956 +2333957 +2333958 +2333959 +2334104 +2334105 +2334106 +2334107 +2334108 +2334109 +2334110 +2334111 +2334112 +2334113 +2334114 +2334115 +2334116 +2334117 +2334118 +2334119 +2334120 +2334121 +2334122 +2334123 +2334124 +2334125 +2334126 +2334127 +2334128 +2334129 +2334130 +2334131 +2334132 +2334133 +2334134 +2334135 +2334136 +2334137 +2334138 +2334139 +2334140 +2334141 +2334142 +2334143 +2334144 +2334145 +2334146 +2334147 +2334148 +2334149 +2334150 +2334151 +2334152 +2334153 +2334154 +2334155 +2337792 +2337793 +2337794 +2337795 +2337796 +2337797 +2337798 +2337799 +2337800 +2337801 +2337802 +2337803 +2337804 +2337805 +2337806 +2337807 +2337808 +2337809 +2337810 +2337811 +2337812 +2337813 +2337814 +2337815 +2337816 +2337817 +2337818 +2337819 +2337820 +2337821 +2337822 +2337823 +2337824 +2337825 +2337826 +2337827 +2337828 +2337829 +2337830 +2337831 +2337832 +2337833 +2337834 +2337835 +2337836 +2337837 +2337838 +2337839 +2337840 +2337841 +2337842 +2337843 +2337844 +2337845 +2337846 +2337847 +2337848 +2337849 +2337850 +2337851 +2337852 +2337853 +2337854 +2337855 +2337856 +2337857 +2337858 +2337859 +2337860 +2337861 +2337862 +2337863 +2337864 +2337865 +2337866 +2337867 +2337868 +2337869 +2337870 +2337871 +2337872 +2337873 +2337874 +2337875 +2337876 +2337877 +2337878 +2337879 +2337880 +2337881 +2337882 +2337883 +2337884 +2337885 +2337886 +2337887 +2337888 +2337889 +2337890 +2337891 +2337892 +2337893 +2337894 +2337895 +2337896 +2337897 +2337898 +2337899 +2337900 +2337901 +2337902 +2337903 +2337904 +2337905 +2337906 +2337907 +2337908 +2337909 +2337910 +2337911 +2337912 +2337913 +2337914 +2337915 +2337916 +2337917 +2337918 +2337919 +2337920 +2337921 +2337922 +2337923 +2337924 +2337925 +2337926 +2337927 +2337928 +2337929 +2337930 +2337931 +2337932 +2337933 +2337934 +2337935 +2337936 +2337937 +2337938 +2337939 +2337940 +2337941 +2337942 +2337943 +2337944 +2337945 +2337946 +2337947 +2337948 +2337949 +2337950 +2337951 +2337952 +2337953 +2337954 +2337955 +2337956 +2337957 +2337958 +2337959 +2337960 +2337961 +2337962 +2337963 +2337964 +2337965 +2337966 +2337967 +2337968 +2337969 +2337970 +2337971 +2337972 +2337973 +2337974 +2337975 +2337976 +2337977 +2337978 +2337979 +2337980 +2337981 +2337982 +2337983 +2337984 +2337985 +2337986 +2337987 +2337988 +2337989 +2337990 +2337991 +2337992 +2337993 +2337994 +2337995 +2337996 +2337997 +2337998 +2337999 +2338000 +2338001 +2338002 +2338003 +2338004 +2338005 +2338006 +2338007 +2338008 +2338009 +2338010 +2338011 +2338012 +2338013 +2338014 +2338015 +2338016 +2338017 +2338018 +2338019 +2338020 +2338021 +2338022 +2338023 +2338024 +2338025 +2338026 +2338027 +2338028 +2338029 +2338030 +2338031 +2338032 +2338033 +2338034 +2338035 +2338036 +2338037 +2338038 +2338039 +2338040 +2338041 +2338042 +2338043 +2338044 +2338045 +2338046 +2338047 +2338048 +2338049 +2338050 +2338051 +2338052 +2338053 +2338054 +2338055 +2338056 +2338057 +2338058 +2338059 +2338060 +2338061 +2338062 +2338063 +2338064 +2338065 +2338066 +2338067 +2338068 +2338069 +2338070 +2338071 +2338072 +2338073 +2338074 +2338075 +2338076 +2338077 +2338078 +2338079 +2338080 +2338081 +2338082 +2338083 +2338084 +2338085 +2338086 +2338087 +2338088 +2338089 +2338090 +2338091 +2338092 +2338093 +2338094 +2338095 +2338096 +2338097 +2338098 +2338099 +2338100 +2338101 +2338102 +2338103 +2338104 +2338105 +2338106 +2338107 +2338108 +2338109 +2338110 +2338111 +2338112 +2338113 +2338114 +2338115 +2338116 +2338117 +2338118 +2338119 +2338120 +2338121 +2338122 +2338123 +2338124 +2338125 +2338126 +2338127 +2338128 +2338129 +2338130 +2338131 +2338132 +2338133 +2338134 +2338135 +2338136 +2338137 +2338138 +2338139 +2338140 +2338141 +2338142 +2338143 +2338144 +2338145 +2338146 +2338147 +2338148 +2338149 +2338150 +2338151 +2338152 +2338153 +2338154 +2338155 +2338156 +2338157 +2338158 +2338159 +2338160 +2338161 +2338162 +2338163 +2338164 +2338165 +2338166 +2338167 +2338168 +2338169 +2338170 +2338171 +2338172 +2338173 +2338174 +2338175 +2338176 +2338177 +2338178 +2338179 +2338180 +2338181 +2338182 +2338183 +2338184 +2338185 +2338186 +2338187 +2338188 +2338189 +2338190 +2338191 +2338192 +2338193 +2338194 +2338195 +2338196 +2338197 +2338198 +2338199 +2338200 +2338201 +2338202 +2338203 +2338204 +2338205 +2338206 +2338207 +2338208 +2338209 +2338210 +2338211 +2338212 +2338213 +2338214 +2338215 +2338216 +2338217 +2338218 +2338219 +2338220 +2338221 +2338222 +2338223 +2338224 +2338225 +2338226 +2338232 +2338233 +2338234 +2338248 +2338249 +2338250 +2338251 +2338252 +2338253 +2338254 +2338256 +2338257 +2338258 +2338259 +2338260 +2338261 +2338262 +2338263 +2338264 +2338265 +2338266 +2338267 +2338268 +2338269 +2338270 +2338271 +2338272 +2338273 +2338274 +2338275 +2338276 +2338277 +2338278 +2338279 +2338280 +2338379 +2338380 +2338381 +2338382 +2338383 +2338384 +2338385 +2338386 +2338387 +2338388 +2338389 +2338390 +2338391 +2338392 +2338393 +2338394 +2338395 +2338396 +2338397 +2338398 +2338399 +2338403 +2338404 +2338405 +2338406 +2338407 +2338408 +2338409 +2338410 +2338411 +2338412 +2338413 +2338414 +2338415 +2338416 +2338417 +2338418 +2338419 +2338420 +2338421 +2338422 +2338423 +2338424 +2338425 +2338426 +2338427 +2338428 +2338429 +2338430 +2338432 +2338433 +2338434 +2338435 +2338436 +2338437 +2338438 +2338439 +2338440 +2338441 +2338442 +2338443 +2338444 +2338445 +2338446 +2338447 +2338448 +2338449 +2338450 +2338451 +2338452 +2338453 +2338454 +2338455 +2338456 +2338457 +2338458 +2338459 +2338460 +2338461 +2338462 +2338463 +2338464 +2338465 +2338466 +2338467 +2338468 +2338469 +2338470 +2338471 +2338472 +2338473 +2338474 +2338475 +2342112 +2342113 +2342114 +2342115 +2342116 +2342117 +2342118 +2342119 +2342120 +2342121 +2342122 +2342123 +2342124 +2342125 +2342126 +2342127 +2342128 +2342129 +2342130 +2342131 +2342132 +2342133 +2342134 +2342135 +2342136 +2342137 +2342138 +2342139 +2342140 +2342141 +2342142 +2342143 +2342144 +2342145 +2342146 +2342147 +2342148 +2342149 +2342150 +2342151 +2342152 +2342153 +2342154 +2342155 +2342156 +2342157 +2342158 +2342159 +2342160 +2342161 +2342162 +2342163 +2342164 +2342165 +2342166 +2342167 +2342168 +2342169 +2342170 +2342171 +2342172 +2342173 +2342174 +2342175 +2342176 +2342177 +2342178 +2342179 +2342180 +2342181 +2342182 +2342183 +2342184 +2342185 +2342186 +2342187 +2342188 +2342189 +2342190 +2342191 +2342192 +2342193 +2342194 +2342195 +2342196 +2342197 +2342198 +2342199 +2342200 +2342201 +2342202 +2342203 +2342204 +2342205 +2342206 +2342207 +2342208 +2342209 +2342210 +2342211 +2342212 +2342213 +2342214 +2342215 +2342216 +2342217 +2342218 +2342219 +2342220 +2342221 +2342222 +2342223 +2342224 +2342225 +2342226 +2342227 +2342228 +2342229 +2342230 +2342231 +2342232 +2342233 +2342234 +2342235 +2342236 +2342237 +2342238 +2342239 +2342240 +2342241 +2342242 +2342243 +2342244 +2342245 +2342246 +2342247 +2342248 +2342249 +2342250 +2342251 +2342252 +2342253 +2342254 +2342255 +2342256 +2342257 +2342258 +2342259 +2342260 +2342261 +2342262 +2342263 +2342264 +2342265 +2342266 +2342267 +2342268 +2342269 +2342270 +2342271 +2342272 +2342273 +2342274 +2342275 +2342276 +2342277 +2342278 +2342279 +2342280 +2342281 +2342282 +2342283 +2342284 +2342285 +2342286 +2342287 +2342288 +2342289 +2342290 +2342291 +2342292 +2342293 +2342294 +2342295 +2342296 +2342297 +2342298 +2342299 +2342300 +2342301 +2342302 +2342303 +2342304 +2342305 +2342306 +2342307 +2342308 +2342309 +2342310 +2342311 +2342312 +2342313 +2342314 +2342315 +2342316 +2342317 +2342318 +2342319 +2342320 +2342321 +2342322 +2342323 +2342324 +2342325 +2342326 +2342327 +2342328 +2342329 +2342330 +2342331 +2342332 +2342333 +2342334 +2342335 +2342336 +2342337 +2342338 +2342339 +2342340 +2342341 +2342342 +2342343 +2342344 +2342345 +2342346 +2342347 +2342348 +2342349 +2342350 +2342351 +2342352 +2342353 +2342354 +2342355 +2342356 +2342357 +2342358 +2342359 +2342360 +2342361 +2342362 +2342363 +2342364 +2342365 +2342366 +2342367 +2342368 +2342369 +2342370 +2342371 +2342372 +2342373 +2342374 +2342375 +2342376 +2342377 +2342378 +2342379 +2342380 +2342381 +2342382 +2342383 +2342384 +2342385 +2342386 +2342387 +2342388 +2342389 +2342390 +2342391 +2342392 +2342393 +2342394 +2342395 +2342396 +2342397 +2342398 +2342399 +2342400 +2342401 +2342402 +2342403 +2342404 +2342405 +2342406 +2342407 +2342408 +2342409 +2342410 +2342411 +2342412 +2342413 +2342414 +2342415 +2342416 +2342417 +2342418 +2342419 +2342420 +2342421 +2342422 +2342423 +2342424 +2342425 +2342426 +2342427 +2342428 +2342429 +2342430 +2342431 +2342432 +2342433 +2342434 +2342435 +2342436 +2342437 +2342438 +2342439 +2342440 +2342441 +2342442 +2342443 +2342444 +2342445 +2342446 +2342447 +2342448 +2342449 +2342450 +2342451 +2342452 +2342453 +2342454 +2342455 +2342456 +2342457 +2342458 +2342459 +2342460 +2342461 +2342462 +2342463 +2342464 +2342465 +2342466 +2342467 +2342468 +2342469 +2342470 +2342471 +2342472 +2342473 +2342474 +2342475 +2342476 +2342477 +2342478 +2342479 +2342480 +2342481 +2342482 +2342483 +2342484 +2342485 +2342486 +2342487 +2342488 +2342489 +2342490 +2342491 +2342492 +2342493 +2342494 +2342495 +2342496 +2342497 +2342498 +2342499 +2342500 +2342501 +2342502 +2342503 +2342504 +2342505 +2342506 +2342507 +2342508 +2342509 +2342510 +2342511 +2342512 +2342513 +2342514 +2342515 +2342516 +2342517 +2342518 +2342519 +2342520 +2342521 +2342522 +2342523 +2342524 +2342525 +2342526 +2342527 +2342528 +2342529 +2342530 +2342531 +2342532 +2342533 +2342534 +2342535 +2342536 +2342537 +2342538 +2342539 +2342540 +2342541 +2342542 +2342543 +2342544 +2342545 +2342546 +2342548 +2342549 +2342550 +2342551 +2342552 +2342568 +2342569 +2342570 +2342571 +2342572 +2342574 +2342575 +2342576 +2342577 +2342578 +2342579 +2342580 +2342581 +2342582 +2342583 +2342584 +2342585 +2342586 +2342587 +2342588 +2342589 +2342590 +2342591 +2342592 +2342593 +2342594 +2342595 +2342596 +2342597 +2342598 +2342599 +2342600 +2342601 +2342699 +2342700 +2342701 +2342702 +2342703 +2342704 +2342705 +2342706 +2342707 +2342708 +2342709 +2342710 +2342711 +2342712 +2342713 +2342714 +2342715 +2342716 +2342717 +2342718 +2342719 +2342723 +2342724 +2342725 +2342726 +2342727 +2342728 +2342729 +2342730 +2342731 +2342732 +2342733 +2342734 +2342735 +2342736 +2342737 +2342738 +2342739 +2342740 +2342741 +2342742 +2342743 +2342744 +2342745 +2342746 +2342747 +2342748 +2342749 +2342750 +2342751 +2342752 +2342753 +2342754 +2342755 +2342756 +2342757 +2342758 +2342759 +2342760 +2342761 +2342762 +2342763 +2342764 +2342765 +2342766 +2342767 +2342768 +2342769 +2342770 +2342771 +2342772 +2342773 +2342774 +2342775 +2342776 +2342777 +2342778 +2342779 +2342780 +2342781 +2342782 +2342783 +2342784 +2342785 +2342786 +2342787 +2342788 +2342789 +2342790 +2342791 +2342792 +2342793 +2342794 +2342795 +2346432 +2346433 +2346434 +2346435 +2346436 +2346437 +2346438 +2346439 +2346440 +2346441 +2346442 +2346443 +2346444 +2346445 +2346446 +2346447 +2346448 +2346449 +2346450 +2346451 +2346452 +2346453 +2346454 +2346455 +2346456 +2346457 +2346458 +2346459 +2346460 +2346461 +2346462 +2346463 +2346464 +2346465 +2346466 +2346467 +2346468 +2346469 +2346470 +2346471 +2346472 +2346473 +2346474 +2346475 +2346476 +2346477 +2346478 +2346479 +2346480 +2346481 +2346482 +2346483 +2346484 +2346485 +2346486 +2346487 +2346488 +2346489 +2346490 +2346491 +2346492 +2346493 +2346494 +2346495 +2346496 +2346497 +2346498 +2346499 +2346500 +2346501 +2346502 +2346503 +2346504 +2346505 +2346506 +2346507 +2346508 +2346509 +2346510 +2346511 +2346512 +2346513 +2346514 +2346515 +2346516 +2346517 +2346518 +2346519 +2346520 +2346521 +2346522 +2346523 +2346524 +2346525 +2346526 +2346527 +2346528 +2346529 +2346530 +2346531 +2346532 +2346533 +2346534 +2346535 +2346536 +2346537 +2346538 +2346539 +2346540 +2346541 +2346542 +2346543 +2346544 +2346545 +2346546 +2346547 +2346548 +2346549 +2346550 +2346551 +2346552 +2346553 +2346554 +2346555 +2346556 +2346557 +2346558 +2346559 +2346560 +2346561 +2346562 +2346563 +2346564 +2346565 +2346566 +2346567 +2346568 +2346569 +2346570 +2346571 +2346572 +2346573 +2346574 +2346575 +2346576 +2346577 +2346578 +2346579 +2346580 +2346581 +2346582 +2346583 +2346584 +2346585 +2346586 +2346587 +2346588 +2346589 +2346590 +2346591 +2346592 +2346593 +2346594 +2346595 +2346596 +2346597 +2346598 +2346599 +2346600 +2346601 +2346602 +2346603 +2346604 +2346605 +2346606 +2346607 +2346608 +2346609 +2346610 +2346611 +2346612 +2346613 +2346614 +2346615 +2346616 +2346617 +2346618 +2346619 +2346620 +2346621 +2346622 +2346623 +2346624 +2346625 +2346626 +2346627 +2346628 +2346629 +2346630 +2346631 +2346632 +2346633 +2346634 +2346635 +2346636 +2346637 +2346638 +2346639 +2346640 +2346641 +2346642 +2346643 +2346644 +2346645 +2346646 +2346647 +2346648 +2346649 +2346650 +2346651 +2346652 +2346653 +2346654 +2346655 +2346656 +2346657 +2346658 +2346659 +2346660 +2346661 +2346662 +2346663 +2346664 +2346665 +2346666 +2346667 +2346668 +2346669 +2346670 +2346671 +2346672 +2346673 +2346674 +2346675 +2346676 +2346677 +2346678 +2346679 +2346680 +2346681 +2346682 +2346683 +2346684 +2346685 +2346686 +2346687 +2346688 +2346689 +2346690 +2346691 +2346692 +2346693 +2346694 +2346695 +2346696 +2346697 +2346698 +2346699 +2346700 +2346701 +2346702 +2346703 +2346704 +2346705 +2346706 +2346707 +2346708 +2346709 +2346710 +2346711 +2346712 +2346713 +2346714 +2346715 +2346716 +2346717 +2346718 +2346719 +2346720 +2346721 +2346722 +2346723 +2346724 +2346725 +2346726 +2346727 +2346728 +2346729 +2346730 +2346731 +2346732 +2346733 +2346734 +2346735 +2346736 +2346737 +2346738 +2346739 +2346740 +2346741 +2346742 +2346743 +2346744 +2346745 +2346746 +2346747 +2346748 +2346749 +2346750 +2346751 +2346752 +2346753 +2346754 +2346755 +2346756 +2346757 +2346758 +2346759 +2346760 +2346761 +2346762 +2346763 +2346764 +2346765 +2346766 +2346767 +2346768 +2346769 +2346770 +2346771 +2346772 +2346773 +2346774 +2346775 +2346776 +2346777 +2346778 +2346779 +2346780 +2346781 +2346782 +2346783 +2346784 +2346785 +2346786 +2346787 +2346788 +2346789 +2346790 +2346791 +2346792 +2346793 +2346794 +2346795 +2346796 +2346797 +2346798 +2346799 +2346800 +2346801 +2346802 +2346803 +2346804 +2346805 +2346806 +2346807 +2346808 +2346809 +2346810 +2346811 +2346812 +2346813 +2346814 +2346815 +2346816 +2346817 +2346818 +2346819 +2346820 +2346821 +2346822 +2346823 +2346824 +2346825 +2346826 +2346827 +2346828 +2346829 +2346830 +2346831 +2346832 +2346833 +2346834 +2346835 +2346836 +2346837 +2346838 +2346839 +2346840 +2346841 +2346842 +2346843 +2346844 +2346845 +2346846 +2346847 +2346848 +2346849 +2346850 +2346851 +2346852 +2346853 +2346854 +2346855 +2346856 +2346857 +2346858 +2346859 +2346860 +2346861 +2346862 +2346863 +2346864 +2346865 +2346868 +2346869 +2346870 +2346871 +2346872 +2346886 +2346887 +2346888 +2346889 +2346890 +2346891 +2346892 +2346893 +2346894 +2346895 +2346896 +2346897 +2346898 +2346899 +2346900 +2346901 +2346902 +2346903 +2346904 +2346905 +2346906 +2346907 +2346908 +2346909 +2346910 +2346911 +2346912 +2346913 +2346914 +2346915 +2346916 +2346917 +2346918 +2346919 +2346920 +2346921 +2347019 +2347020 +2347021 +2347022 +2347023 +2347024 +2347025 +2347026 +2347027 +2347028 +2347029 +2347030 +2347031 +2347032 +2347033 +2347034 +2347035 +2347036 +2347037 +2347038 +2347039 +2347043 +2347044 +2347045 +2347046 +2347047 +2347048 +2347049 +2347050 +2347051 +2347052 +2347053 +2347054 +2347055 +2347056 +2347057 +2347058 +2347059 +2347060 +2347061 +2347062 +2347063 +2347064 +2347065 +2347066 +2347067 +2347068 +2347069 +2347070 +2347071 +2347072 +2347073 +2347074 +2347075 +2347076 +2347077 +2347078 +2347079 +2347080 +2347081 +2347082 +2347083 +2347084 +2347085 +2347086 +2347087 +2347088 +2347089 +2347090 +2347091 +2347092 +2347093 +2347094 +2347095 +2347096 +2347097 +2347098 +2347099 +2347100 +2347101 +2347102 +2347103 +2347104 +2347105 +2347106 +2347107 +2347108 +2347109 +2347110 +2347111 +2347112 +2347113 +2347114 +2347115 +2350752 +2350753 +2350754 +2350755 +2350756 +2350757 +2350758 +2350759 +2350760 +2350761 +2350762 +2350763 +2350764 +2350765 +2350766 +2350767 +2350768 +2350769 +2350770 +2350771 +2350772 +2350773 +2350774 +2350775 +2350776 +2350777 +2350778 +2350779 +2350780 +2350781 +2350782 +2350783 +2350784 +2350785 +2350786 +2350787 +2350788 +2350789 +2350790 +2350791 +2350792 +2350793 +2350794 +2350795 +2350796 +2350797 +2350798 +2350799 +2350800 +2350801 +2350802 +2350803 +2350804 +2350805 +2350806 +2350807 +2350808 +2350809 +2350810 +2350811 +2350812 +2350813 +2350814 +2350815 +2350816 +2350817 +2350818 +2350819 +2350820 +2350821 +2350822 +2350823 +2350824 +2350825 +2350826 +2350827 +2350828 +2350829 +2350830 +2350831 +2350832 +2350833 +2350834 +2350835 +2350836 +2350837 +2350838 +2350839 +2350840 +2350841 +2350842 +2350843 +2350844 +2350845 +2350846 +2350847 +2350848 +2350849 +2350850 +2350851 +2350852 +2350853 +2350854 +2350855 +2350856 +2350857 +2350858 +2350859 +2350860 +2350861 +2350862 +2350863 +2350864 +2350865 +2350866 +2350867 +2350868 +2350869 +2350870 +2350871 +2350872 +2350873 +2350874 +2350875 +2350876 +2350877 +2350878 +2350879 +2350880 +2350881 +2350882 +2350883 +2350884 +2350885 +2350886 +2350887 +2350888 +2350889 +2350890 +2350891 +2350892 +2350893 +2350894 +2350895 +2350896 +2350897 +2350898 +2350899 +2350900 +2350901 +2350902 +2350903 +2350904 +2350905 +2350906 +2350907 +2350908 +2350909 +2350910 +2350911 +2350912 +2350913 +2350914 +2350915 +2350916 +2350917 +2350918 +2350919 +2350920 +2350921 +2350922 +2350923 +2350924 +2350925 +2350926 +2350927 +2350928 +2350929 +2350930 +2350931 +2350932 +2350933 +2350934 +2350935 +2350936 +2350937 +2350938 +2350939 +2350940 +2350941 +2350942 +2350943 +2350944 +2350945 +2350946 +2350947 +2350948 +2350949 +2350950 +2350951 +2350952 +2350953 +2350954 +2350955 +2350956 +2350957 +2350958 +2350959 +2350960 +2350961 +2350962 +2350963 +2350964 +2350965 +2350966 +2350967 +2350968 +2350969 +2350970 +2350971 +2350972 +2350973 +2350974 +2350975 +2350976 +2350977 +2350978 +2350979 +2350980 +2350981 +2350982 +2350983 +2350984 +2350985 +2350986 +2350987 +2350988 +2350989 +2350990 +2350991 +2350992 +2350993 +2350994 +2350995 +2350996 +2350997 +2350998 +2350999 +2351000 +2351001 +2351002 +2351003 +2351004 +2351005 +2351006 +2351007 +2351008 +2351009 +2351010 +2351011 +2351012 +2351013 +2351014 +2351015 +2351016 +2351017 +2351018 +2351019 +2351020 +2351021 +2351022 +2351023 +2351024 +2351025 +2351026 +2351027 +2351028 +2351029 +2351030 +2351031 +2351032 +2351033 +2351034 +2351035 +2351036 +2351037 +2351038 +2351039 +2351040 +2351041 +2351042 +2351043 +2351044 +2351045 +2351046 +2351047 +2351048 +2351049 +2351050 +2351051 +2351052 +2351053 +2351054 +2351055 +2351056 +2351057 +2351058 +2351059 +2351060 +2351061 +2351062 +2351063 +2351064 +2351065 +2351066 +2351067 +2351068 +2351069 +2351070 +2351071 +2351072 +2351073 +2351074 +2351075 +2351076 +2351077 +2351078 +2351079 +2351080 +2351081 +2351082 +2351083 +2351084 +2351085 +2351086 +2351087 +2351088 +2351089 +2351090 +2351091 +2351092 +2351093 +2351094 +2351095 +2351096 +2351097 +2351098 +2351099 +2351100 +2351101 +2351102 +2351103 +2351104 +2351105 +2351106 +2351107 +2351108 +2351109 +2351110 +2351111 +2351112 +2351113 +2351114 +2351115 +2351116 +2351117 +2351118 +2351119 +2351120 +2351121 +2351122 +2351123 +2351124 +2351125 +2351126 +2351127 +2351128 +2351129 +2351130 +2351131 +2351132 +2351133 +2351134 +2351135 +2351136 +2351137 +2351138 +2351139 +2351140 +2351141 +2351142 +2351143 +2351144 +2351145 +2351146 +2351147 +2351148 +2351149 +2351150 +2351151 +2351152 +2351153 +2351154 +2351155 +2351156 +2351157 +2351158 +2351159 +2351160 +2351161 +2351162 +2351163 +2351164 +2351165 +2351166 +2351167 +2351168 +2351169 +2351170 +2351171 +2351172 +2351173 +2351174 +2351175 +2351176 +2351177 +2351178 +2351179 +2351180 +2351181 +2351182 +2351183 +2351184 +2351186 +2351187 +2351188 +2351189 +2351190 +2351191 +2351206 +2351207 +2351208 +2351209 +2351210 +2351211 +2351212 +2351213 +2351214 +2351215 +2351216 +2351217 +2351218 +2351219 +2351220 +2351221 +2351222 +2351223 +2351224 +2351225 +2351226 +2351227 +2351228 +2351229 +2351230 +2351231 +2351232 +2351233 +2351234 +2351235 +2351236 +2351237 +2351238 +2351239 +2351240 +2351241 +2351334 +2351335 +2351336 +2351337 +2351338 +2351339 +2351340 +2351341 +2351342 +2351343 +2351344 +2351345 +2351346 +2351347 +2351348 +2351349 +2351350 +2351351 +2351352 +2351353 +2351354 +2351355 +2351356 +2351357 +2351358 +2351359 +2351362 +2351363 +2351364 +2351365 +2351366 +2351367 +2351368 +2351369 +2351370 +2351371 +2351372 +2351373 +2351374 +2351375 +2351376 +2351377 +2351378 +2351379 +2351380 +2351381 +2351382 +2351383 +2351384 +2351385 +2351386 +2351387 +2351388 +2351389 +2351390 +2351391 +2351392 +2351393 +2351394 +2351395 +2351396 +2351397 +2351398 +2351399 +2351400 +2351401 +2351402 +2351403 +2351404 +2351405 +2351406 +2351407 +2351408 +2351409 +2351410 +2351411 +2351412 +2351413 +2351414 +2351415 +2351416 +2351417 +2351418 +2351419 +2351420 +2351421 +2351422 +2351423 +2351424 +2351425 +2351426 +2351427 +2351428 +2351429 +2351430 +2351431 +2351432 +2351433 +2351434 +2355072 +2355073 +2355074 +2355075 +2355076 +2355077 +2355078 +2355079 +2355080 +2355081 +2355082 +2355083 +2355084 +2355085 +2355086 +2355087 +2355088 +2355089 +2355090 +2355091 +2355092 +2355093 +2355094 +2355095 +2355096 +2355097 +2355098 +2355099 +2355100 +2355101 +2355102 +2355103 +2355104 +2355105 +2355106 +2355107 +2355108 +2355109 +2355110 +2355111 +2355112 +2355113 +2355114 +2355115 +2355116 +2355117 +2355118 +2355119 +2355120 +2355121 +2355122 +2355123 +2355124 +2355125 +2355126 +2355127 +2355128 +2355129 +2355130 +2355131 +2355132 +2355133 +2355134 +2355135 +2355136 +2355137 +2355138 +2355139 +2355140 +2355141 +2355142 +2355143 +2355144 +2355145 +2355146 +2355147 +2355148 +2355149 +2355150 +2355151 +2355152 +2355153 +2355154 +2355155 +2355156 +2355157 +2355158 +2355159 +2355160 +2355161 +2355162 +2355163 +2355164 +2355165 +2355166 +2355167 +2355168 +2355169 +2355170 +2355171 +2355172 +2355173 +2355174 +2355175 +2355176 +2355177 +2355178 +2355179 +2355180 +2355181 +2355182 +2355183 +2355184 +2355185 +2355186 +2355187 +2355188 +2355189 +2355190 +2355191 +2355192 +2355193 +2355194 +2355195 +2355196 +2355197 +2355198 +2355199 +2355200 +2355201 +2355202 +2355203 +2355204 +2355205 +2355206 +2355207 +2355208 +2355209 +2355210 +2355211 +2355212 +2355213 +2355214 +2355215 +2355216 +2355217 +2355218 +2355219 +2355220 +2355221 +2355222 +2355223 +2355224 +2355225 +2355226 +2355227 +2355228 +2355229 +2355230 +2355231 +2355232 +2355233 +2355234 +2355235 +2355237 +2355238 +2355239 +2355240 +2355241 +2355242 +2355243 +2355244 +2355245 +2355246 +2355247 +2355248 +2355249 +2355250 +2355251 +2355252 +2355253 +2355254 +2355255 +2355256 +2355257 +2355258 +2355259 +2355260 +2355261 +2355262 +2355263 +2355264 +2355265 +2355266 +2355267 +2355268 +2355269 +2355270 +2355271 +2355272 +2355273 +2355274 +2355275 +2355276 +2355277 +2355278 +2355279 +2355280 +2355281 +2355282 +2355283 +2355284 +2355285 +2355286 +2355287 +2355288 +2355289 +2355290 +2355291 +2355292 +2355293 +2355294 +2355295 +2355296 +2355297 +2355298 +2355299 +2355300 +2355301 +2355302 +2355303 +2355304 +2355305 +2355306 +2355307 +2355308 +2355309 +2355310 +2355311 +2355312 +2355313 +2355314 +2355315 +2355316 +2355317 +2355318 +2355319 +2355320 +2355321 +2355322 +2355323 +2355324 +2355325 +2355326 +2355327 +2355328 +2355329 +2355330 +2355331 +2355332 +2355333 +2355334 +2355335 +2355336 +2355337 +2355338 +2355339 +2355340 +2355341 +2355342 +2355343 +2355344 +2355345 +2355346 +2355347 +2355348 +2355349 +2355350 +2355351 +2355352 +2355353 +2355354 +2355355 +2355356 +2355357 +2355358 +2355359 +2355360 +2355361 +2355362 +2355363 +2355364 +2355365 +2355366 +2355367 +2355368 +2355369 +2355370 +2355371 +2355372 +2355373 +2355374 +2355375 +2355376 +2355377 +2355378 +2355379 +2355380 +2355381 +2355382 +2355383 +2355384 +2355385 +2355386 +2355387 +2355388 +2355389 +2355390 +2355391 +2355392 +2355393 +2355394 +2355395 +2355396 +2355397 +2355398 +2355399 +2355400 +2355401 +2355402 +2355403 +2355404 +2355405 +2355406 +2355407 +2355408 +2355409 +2355410 +2355411 +2355412 +2355413 +2355414 +2355415 +2355416 +2355417 +2355418 +2355419 +2355420 +2355421 +2355422 +2355423 +2355424 +2355425 +2355426 +2355427 +2355428 +2355429 +2355430 +2355431 +2355432 +2355433 +2355434 +2355435 +2355436 +2355437 +2355438 +2355439 +2355440 +2355441 +2355442 +2355443 +2355444 +2355445 +2355446 +2355447 +2355448 +2355449 +2355450 +2355451 +2355452 +2355453 +2355454 +2355455 +2355456 +2355457 +2355458 +2355459 +2355460 +2355461 +2355462 +2355463 +2355464 +2355465 +2355466 +2355467 +2355468 +2355469 +2355470 +2355471 +2355472 +2355473 +2355474 +2355475 +2355476 +2355477 +2355478 +2355479 +2355480 +2355481 +2355482 +2355483 +2355484 +2355485 +2355486 +2355487 +2355488 +2355489 +2355490 +2355491 +2355492 +2355493 +2355494 +2355495 +2355496 +2355497 +2355498 +2355499 +2355500 +2355501 +2355502 +2355503 +2355504 +2355505 +2355506 +2355507 +2355508 +2355509 +2355510 +2355511 +2355526 +2355527 +2355528 +2355529 +2355530 +2355531 +2355532 +2355533 +2355534 +2355535 +2355536 +2355537 +2355538 +2355539 +2355540 +2355541 +2355542 +2355543 +2355544 +2355545 +2355546 +2355547 +2355548 +2355549 +2355550 +2355551 +2355552 +2355553 +2355554 +2355555 +2355556 +2355557 +2355558 +2355559 +2355560 +2355653 +2355654 +2355655 +2355656 +2355657 +2355658 +2355659 +2355660 +2355661 +2355662 +2355663 +2355664 +2355665 +2355666 +2355667 +2355668 +2355669 +2355670 +2355671 +2355672 +2355673 +2355674 +2355675 +2355676 +2355677 +2355678 +2355679 +2355682 +2355683 +2355684 +2355685 +2355686 +2355687 +2355688 +2355689 +2355690 +2355691 +2355692 +2355693 +2355694 +2355695 +2355696 +2355697 +2355698 +2355699 +2355700 +2355701 +2355702 +2355703 +2355704 +2355705 +2355706 +2355707 +2355708 +2355709 +2355710 +2355711 +2355712 +2355713 +2355714 +2355715 +2355716 +2355717 +2355718 +2355719 +2355720 +2355721 +2355722 +2355723 +2355724 +2355725 +2355726 +2355727 +2355728 +2355729 +2355730 +2355731 +2355732 +2355733 +2355734 +2355735 +2355736 +2355737 +2355738 +2355739 +2355740 +2355741 +2355742 +2355743 +2355744 +2355745 +2355746 +2359392 +2359393 +2359394 +2359395 +2359396 +2359397 +2359398 +2359399 +2359400 +2359401 +2359402 +2359403 +2359404 +2359405 +2359406 +2359407 +2359408 +2359409 +2359410 +2359411 +2359412 +2359413 +2359414 +2359415 +2359416 +2359417 +2359418 +2359419 +2359420 +2359421 +2359422 +2359423 +2359424 +2359425 +2359426 +2359427 +2359428 +2359429 +2359430 +2359431 +2359432 +2359433 +2359434 +2359435 +2359436 +2359437 +2359438 +2359439 +2359440 +2359441 +2359442 +2359443 +2359444 +2359445 +2359446 +2359447 +2359448 +2359449 +2359450 +2359451 +2359452 +2359453 +2359454 +2359455 +2359456 +2359457 +2359458 +2359459 +2359460 +2359461 +2359462 +2359463 +2359464 +2359465 +2359466 +2359467 +2359468 +2359469 +2359470 +2359471 +2359472 +2359473 +2359474 +2359475 +2359476 +2359477 +2359478 +2359479 +2359480 +2359481 +2359482 +2359483 +2359484 +2359485 +2359486 +2359487 +2359488 +2359489 +2359490 +2359491 +2359492 +2359493 +2359494 +2359495 +2359496 +2359497 +2359498 +2359499 +2359500 +2359501 +2359502 +2359503 +2359504 +2359505 +2359506 +2359507 +2359508 +2359509 +2359510 +2359511 +2359512 +2359513 +2359514 +2359515 +2359516 +2359517 +2359518 +2359519 +2359520 +2359521 +2359522 +2359523 +2359524 +2359525 +2359526 +2359527 +2359528 +2359529 +2359530 +2359531 +2359532 +2359533 +2359534 +2359535 +2359536 +2359537 +2359538 +2359539 +2359540 +2359541 +2359542 +2359543 +2359544 +2359545 +2359546 +2359547 +2359548 +2359549 +2359550 +2359551 +2359552 +2359553 +2359554 +2359557 +2359558 +2359559 +2359560 +2359561 +2359562 +2359563 +2359564 +2359565 +2359566 +2359567 +2359568 +2359569 +2359570 +2359571 +2359572 +2359573 +2359574 +2359575 +2359576 +2359577 +2359578 +2359579 +2359580 +2359581 +2359582 +2359583 +2359584 +2359585 +2359586 +2359587 +2359588 +2359589 +2359590 +2359591 +2359592 +2359593 +2359594 +2359595 +2359596 +2359597 +2359598 +2359599 +2359600 +2359601 +2359602 +2359603 +2359604 +2359605 +2359606 +2359607 +2359608 +2359609 +2359610 +2359611 +2359612 +2359613 +2359614 +2359615 +2359616 +2359617 +2359618 +2359619 +2359620 +2359621 +2359622 +2359623 +2359624 +2359625 +2359626 +2359627 +2359628 +2359629 +2359630 +2359631 +2359632 +2359633 +2359634 +2359635 +2359636 +2359637 +2359638 +2359639 +2359640 +2359641 +2359642 +2359643 +2359644 +2359645 +2359646 +2359647 +2359648 +2359649 +2359650 +2359651 +2359652 +2359653 +2359654 +2359655 +2359656 +2359657 +2359658 +2359659 +2359660 +2359661 +2359662 +2359663 +2359664 +2359665 +2359666 +2359667 +2359668 +2359669 +2359670 +2359671 +2359672 +2359673 +2359674 +2359675 +2359676 +2359677 +2359678 +2359679 +2359680 +2359681 +2359682 +2359683 +2359684 +2359685 +2359686 +2359687 +2359688 +2359689 +2359690 +2359691 +2359692 +2359693 +2359694 +2359695 +2359696 +2359697 +2359698 +2359699 +2359700 +2359701 +2359702 +2359703 +2359704 +2359705 +2359706 +2359707 +2359708 +2359709 +2359710 +2359711 +2359712 +2359713 +2359714 +2359715 +2359716 +2359717 +2359718 +2359719 +2359720 +2359721 +2359722 +2359723 +2359724 +2359725 +2359726 +2359727 +2359728 +2359729 +2359730 +2359731 +2359732 +2359733 +2359734 +2359735 +2359736 +2359737 +2359738 +2359739 +2359740 +2359741 +2359742 +2359743 +2359744 +2359745 +2359746 +2359747 +2359748 +2359749 +2359750 +2359751 +2359752 +2359753 +2359754 +2359755 +2359756 +2359757 +2359758 +2359759 +2359760 +2359761 +2359762 +2359763 +2359764 +2359765 +2359766 +2359767 +2359768 +2359769 +2359770 +2359771 +2359772 +2359773 +2359774 +2359775 +2359776 +2359777 +2359778 +2359779 +2359780 +2359781 +2359782 +2359783 +2359784 +2359785 +2359786 +2359787 +2359788 +2359789 +2359790 +2359791 +2359792 +2359793 +2359794 +2359795 +2359796 +2359797 +2359798 +2359799 +2359800 +2359801 +2359802 +2359803 +2359804 +2359805 +2359806 +2359807 +2359808 +2359809 +2359810 +2359811 +2359812 +2359813 +2359814 +2359815 +2359816 +2359817 +2359818 +2359819 +2359820 +2359821 +2359822 +2359823 +2359824 +2359825 +2359826 +2359827 +2359828 +2359829 +2359830 +2359846 +2359847 +2359848 +2359849 +2359850 +2359851 +2359852 +2359853 +2359854 +2359855 +2359856 +2359857 +2359858 +2359859 +2359860 +2359861 +2359862 +2359863 +2359864 +2359865 +2359866 +2359867 +2359868 +2359869 +2359870 +2359871 +2359872 +2359873 +2359874 +2359875 +2359876 +2359877 +2359878 +2359879 +2359880 +2359973 +2359974 +2359975 +2359976 +2359977 +2359978 +2359979 +2359980 +2359981 +2359982 +2359983 +2359984 +2359985 +2359986 +2359987 +2359988 +2359989 +2359990 +2359991 +2359992 +2359993 +2359994 +2359995 +2359996 +2359997 +2359998 +2359999 +2360002 +2360003 +2360004 +2360005 +2360006 +2360007 +2360008 +2360009 +2360010 +2360011 +2360012 +2360013 +2360014 +2360015 +2360016 +2360017 +2360018 +2360019 +2360020 +2360021 +2360022 +2360023 +2360024 +2360025 +2360026 +2360027 +2360028 +2360029 +2360030 +2360031 +2360032 +2360033 +2360034 +2360035 +2360036 +2360037 +2360038 +2360039 +2360040 +2360041 +2360042 +2360043 +2360044 +2360045 +2360046 +2360047 +2360048 +2360049 +2360050 +2360051 +2360052 +2360053 +2360054 +2360055 +2360056 +2360057 +2360058 +2360059 +2360060 +2360061 +2360062 +2360063 +2360064 +2360065 +2360066 +2363711 +2363712 +2363713 +2363714 +2363715 +2363716 +2363717 +2363718 +2363719 +2363720 +2363721 +2363722 +2363723 +2363724 +2363725 +2363726 +2363727 +2363728 +2363729 +2363730 +2363731 +2363732 +2363733 +2363734 +2363735 +2363736 +2363737 +2363738 +2363739 +2363740 +2363741 +2363742 +2363743 +2363744 +2363745 +2363746 +2363747 +2363748 +2363749 +2363750 +2363751 +2363752 +2363753 +2363754 +2363755 +2363756 +2363757 +2363758 +2363759 +2363760 +2363761 +2363762 +2363763 +2363764 +2363765 +2363766 +2363767 +2363768 +2363769 +2363770 +2363771 +2363772 +2363773 +2363774 +2363775 +2363776 +2363777 +2363778 +2363779 +2363780 +2363781 +2363782 +2363783 +2363784 +2363785 +2363786 +2363787 +2363788 +2363789 +2363790 +2363791 +2363792 +2363793 +2363794 +2363795 +2363796 +2363797 +2363798 +2363799 +2363800 +2363801 +2363802 +2363803 +2363804 +2363805 +2363806 +2363807 +2363808 +2363809 +2363810 +2363811 +2363812 +2363813 +2363814 +2363815 +2363816 +2363817 +2363818 +2363819 +2363820 +2363821 +2363822 +2363823 +2363824 +2363825 +2363826 +2363827 +2363828 +2363829 +2363830 +2363831 +2363832 +2363833 +2363834 +2363835 +2363836 +2363837 +2363838 +2363839 +2363840 +2363841 +2363842 +2363843 +2363844 +2363845 +2363846 +2363847 +2363848 +2363849 +2363850 +2363851 +2363852 +2363853 +2363854 +2363855 +2363856 +2363857 +2363858 +2363859 +2363860 +2363861 +2363862 +2363863 +2363864 +2363865 +2363866 +2363867 +2363868 +2363869 +2363870 +2363871 +2363872 +2363873 +2363874 +2363875 +2363878 +2363879 +2363880 +2363881 +2363882 +2363883 +2363884 +2363885 +2363886 +2363887 +2363888 +2363889 +2363890 +2363891 +2363892 +2363893 +2363894 +2363895 +2363896 +2363897 +2363898 +2363899 +2363900 +2363901 +2363902 +2363903 +2363904 +2363905 +2363906 +2363907 +2363908 +2363909 +2363910 +2363911 +2363912 +2363913 +2363914 +2363915 +2363916 +2363917 +2363918 +2363919 +2363920 +2363921 +2363922 +2363923 +2363924 +2363925 +2363926 +2363927 +2363928 +2363929 +2363930 +2363931 +2363932 +2363933 +2363934 +2363935 +2363936 +2363937 +2363938 +2363939 +2363940 +2363941 +2363942 +2363943 +2363944 +2363945 +2363946 +2363947 +2363948 +2363949 +2363950 +2363951 +2363952 +2363953 +2363954 +2363955 +2363956 +2363957 +2363958 +2363959 +2363960 +2363961 +2363962 +2363963 +2363964 +2363965 +2363966 +2363967 +2363968 +2363969 +2363970 +2363971 +2363972 +2363973 +2363974 +2363975 +2363976 +2363977 +2363978 +2363979 +2363980 +2363981 +2363982 +2363983 +2363984 +2363985 +2363986 +2363987 +2363988 +2363989 +2363990 +2363991 +2363992 +2363993 +2363994 +2363995 +2363996 +2363997 +2363998 +2363999 +2364000 +2364001 +2364002 +2364003 +2364004 +2364005 +2364006 +2364007 +2364008 +2364009 +2364010 +2364011 +2364012 +2364013 +2364014 +2364015 +2364016 +2364017 +2364018 +2364019 +2364020 +2364021 +2364022 +2364023 +2364024 +2364025 +2364026 +2364027 +2364028 +2364029 +2364030 +2364031 +2364032 +2364033 +2364034 +2364035 +2364036 +2364037 +2364038 +2364039 +2364040 +2364041 +2364042 +2364043 +2364044 +2364045 +2364046 +2364047 +2364048 +2364049 +2364050 +2364051 +2364052 +2364053 +2364054 +2364055 +2364056 +2364057 +2364058 +2364059 +2364060 +2364061 +2364062 +2364063 +2364064 +2364065 +2364066 +2364067 +2364068 +2364069 +2364070 +2364071 +2364072 +2364073 +2364074 +2364075 +2364076 +2364077 +2364078 +2364079 +2364080 +2364081 +2364082 +2364083 +2364084 +2364085 +2364086 +2364087 +2364088 +2364089 +2364090 +2364091 +2364092 +2364093 +2364094 +2364095 +2364096 +2364097 +2364098 +2364099 +2364100 +2364101 +2364102 +2364103 +2364104 +2364105 +2364106 +2364107 +2364108 +2364109 +2364110 +2364111 +2364112 +2364113 +2364114 +2364115 +2364116 +2364117 +2364118 +2364119 +2364120 +2364121 +2364122 +2364123 +2364124 +2364125 +2364126 +2364127 +2364128 +2364129 +2364130 +2364131 +2364132 +2364133 +2364134 +2364135 +2364136 +2364137 +2364138 +2364139 +2364140 +2364141 +2364142 +2364143 +2364144 +2364145 +2364146 +2364147 +2364148 +2364149 +2364150 +2364166 +2364167 +2364168 +2364169 +2364170 +2364171 +2364172 +2364173 +2364174 +2364175 +2364176 +2364177 +2364178 +2364179 +2364180 +2364181 +2364182 +2364183 +2364184 +2364185 +2364186 +2364187 +2364188 +2364189 +2364190 +2364191 +2364192 +2364193 +2364194 +2364195 +2364196 +2364197 +2364198 +2364199 +2364200 +2364291 +2364292 +2364293 +2364294 +2364295 +2364296 +2364297 +2364298 +2364299 +2364300 +2364301 +2364302 +2364303 +2364304 +2364305 +2364306 +2364307 +2364308 +2364309 +2364310 +2364311 +2364312 +2364313 +2364314 +2364315 +2364316 +2364317 +2364318 +2364319 +2364320 +2364322 +2364323 +2364324 +2364325 +2364326 +2364327 +2364328 +2364329 +2364330 +2364331 +2364332 +2364333 +2364334 +2364335 +2364336 +2364337 +2364338 +2364339 +2364340 +2364341 +2364342 +2364343 +2364344 +2364345 +2364346 +2364347 +2364348 +2364349 +2364350 +2364351 +2364352 +2364353 +2364354 +2364355 +2364356 +2364357 +2364358 +2364359 +2364360 +2364361 +2364362 +2364363 +2364364 +2364365 +2364366 +2364367 +2364368 +2364369 +2364370 +2364371 +2364372 +2364373 +2364374 +2364375 +2364376 +2364377 +2364378 +2364379 +2364380 +2364381 +2364382 +2364383 +2364384 +2364385 +2364386 +2368031 +2368032 +2368033 +2368034 +2368035 +2368036 +2368037 +2368038 +2368039 +2368040 +2368041 +2368042 +2368043 +2368044 +2368045 +2368046 +2368047 +2368048 +2368049 +2368050 +2368051 +2368052 +2368053 +2368054 +2368055 +2368056 +2368057 +2368058 +2368059 +2368060 +2368061 +2368062 +2368063 +2368064 +2368065 +2368066 +2368067 +2368068 +2368069 +2368070 +2368071 +2368072 +2368073 +2368074 +2368075 +2368076 +2368077 +2368078 +2368079 +2368080 +2368081 +2368082 +2368083 +2368084 +2368085 +2368086 +2368087 +2368088 +2368089 +2368090 +2368091 +2368092 +2368093 +2368094 +2368095 +2368096 +2368097 +2368098 +2368099 +2368100 +2368101 +2368102 +2368103 +2368104 +2368105 +2368106 +2368107 +2368108 +2368109 +2368110 +2368111 +2368112 +2368113 +2368114 +2368115 +2368116 +2368117 +2368118 +2368119 +2368120 +2368121 +2368122 +2368123 +2368124 +2368125 +2368126 +2368127 +2368128 +2368129 +2368130 +2368131 +2368132 +2368133 +2368134 +2368135 +2368136 +2368137 +2368138 +2368139 +2368140 +2368141 +2368142 +2368143 +2368144 +2368145 +2368146 +2368147 +2368148 +2368149 +2368150 +2368151 +2368152 +2368153 +2368154 +2368155 +2368156 +2368157 +2368158 +2368159 +2368160 +2368161 +2368162 +2368163 +2368164 +2368165 +2368166 +2368167 +2368168 +2368169 +2368170 +2368171 +2368172 +2368173 +2368174 +2368175 +2368176 +2368177 +2368178 +2368179 +2368180 +2368181 +2368182 +2368183 +2368184 +2368185 +2368186 +2368187 +2368188 +2368189 +2368190 +2368191 +2368192 +2368193 +2368194 +2368195 +2368196 +2368197 +2368198 +2368199 +2368200 +2368201 +2368202 +2368203 +2368204 +2368205 +2368206 +2368207 +2368208 +2368209 +2368210 +2368211 +2368212 +2368213 +2368214 +2368215 +2368216 +2368217 +2368218 +2368219 +2368220 +2368221 +2368222 +2368223 +2368224 +2368225 +2368226 +2368227 +2368228 +2368229 +2368230 +2368231 +2368232 +2368233 +2368234 +2368235 +2368236 +2368237 +2368238 +2368239 +2368240 +2368241 +2368242 +2368243 +2368244 +2368245 +2368246 +2368247 +2368248 +2368249 +2368250 +2368251 +2368252 +2368253 +2368254 +2368255 +2368256 +2368257 +2368258 +2368259 +2368260 +2368261 +2368262 +2368263 +2368264 +2368265 +2368266 +2368267 +2368268 +2368269 +2368270 +2368271 +2368272 +2368273 +2368274 +2368275 +2368276 +2368277 +2368278 +2368279 +2368280 +2368281 +2368282 +2368283 +2368284 +2368285 +2368286 +2368287 +2368288 +2368289 +2368290 +2368291 +2368292 +2368293 +2368294 +2368295 +2368296 +2368297 +2368298 +2368299 +2368300 +2368301 +2368302 +2368303 +2368304 +2368305 +2368306 +2368307 +2368308 +2368309 +2368310 +2368311 +2368312 +2368313 +2368314 +2368315 +2368316 +2368317 +2368318 +2368319 +2368320 +2368321 +2368322 +2368323 +2368324 +2368325 +2368326 +2368327 +2368328 +2368329 +2368330 +2368331 +2368332 +2368333 +2368334 +2368335 +2368336 +2368337 +2368338 +2368339 +2368340 +2368341 +2368342 +2368343 +2368344 +2368345 +2368346 +2368347 +2368348 +2368349 +2368350 +2368351 +2368352 +2368353 +2368354 +2368355 +2368356 +2368357 +2368358 +2368359 +2368360 +2368361 +2368362 +2368363 +2368364 +2368365 +2368366 +2368367 +2368368 +2368369 +2368370 +2368371 +2368372 +2368373 +2368374 +2368375 +2368376 +2368377 +2368378 +2368379 +2368380 +2368381 +2368382 +2368383 +2368384 +2368385 +2368386 +2368387 +2368388 +2368389 +2368390 +2368391 +2368392 +2368393 +2368394 +2368395 +2368396 +2368397 +2368398 +2368399 +2368400 +2368401 +2368402 +2368403 +2368404 +2368405 +2368406 +2368407 +2368408 +2368409 +2368410 +2368411 +2368412 +2368413 +2368414 +2368415 +2368416 +2368417 +2368418 +2368419 +2368420 +2368421 +2368422 +2368423 +2368424 +2368425 +2368426 +2368427 +2368428 +2368429 +2368430 +2368431 +2368432 +2368433 +2368434 +2368435 +2368436 +2368437 +2368438 +2368439 +2368440 +2368441 +2368442 +2368443 +2368444 +2368445 +2368446 +2368447 +2368448 +2368449 +2368450 +2368451 +2368452 +2368453 +2368454 +2368455 +2368456 +2368457 +2368458 +2368459 +2368460 +2368461 +2368462 +2368463 +2368464 +2368465 +2368466 +2368467 +2368468 +2368469 +2368485 +2368486 +2368487 +2368488 +2368489 +2368490 +2368491 +2368492 +2368493 +2368494 +2368495 +2368496 +2368497 +2368498 +2368499 +2368500 +2368501 +2368502 +2368503 +2368504 +2368505 +2368506 +2368507 +2368508 +2368509 +2368510 +2368511 +2368512 +2368513 +2368514 +2368515 +2368516 +2368517 +2368518 +2368519 +2368520 +2368610 +2368611 +2368612 +2368613 +2368614 +2368615 +2368616 +2368617 +2368618 +2368619 +2368620 +2368621 +2368622 +2368623 +2368624 +2368625 +2368626 +2368627 +2368628 +2368629 +2368630 +2368631 +2368632 +2368633 +2368634 +2368635 +2368636 +2368637 +2368638 +2368639 +2368640 +2368641 +2368642 +2368643 +2368644 +2368645 +2368646 +2368647 +2368648 +2368649 +2368650 +2368651 +2368652 +2368653 +2368654 +2368655 +2368656 +2368657 +2368658 +2368659 +2368660 +2368661 +2368662 +2368663 +2368664 +2368665 +2368666 +2368667 +2368668 +2368669 +2368670 +2368671 +2368672 +2368673 +2368674 +2368675 +2368676 +2368677 +2368678 +2368679 +2368680 +2368681 +2368682 +2368683 +2368684 +2368685 +2368686 +2368687 +2368688 +2368689 +2368690 +2368691 +2368697 +2372351 +2372352 +2372353 +2372354 +2372355 +2372356 +2372357 +2372358 +2372359 +2372360 +2372361 +2372362 +2372363 +2372364 +2372365 +2372366 +2372367 +2372368 +2372369 +2372370 +2372371 +2372372 +2372373 +2372374 +2372375 +2372376 +2372377 +2372378 +2372379 +2372380 +2372381 +2372382 +2372383 +2372384 +2372385 +2372386 +2372387 +2372388 +2372389 +2372390 +2372391 +2372392 +2372393 +2372394 +2372395 +2372396 +2372397 +2372398 +2372399 +2372400 +2372401 +2372402 +2372403 +2372404 +2372405 +2372406 +2372407 +2372408 +2372409 +2372410 +2372411 +2372412 +2372413 +2372414 +2372415 +2372416 +2372417 +2372418 +2372419 +2372420 +2372421 +2372422 +2372423 +2372424 +2372425 +2372426 +2372427 +2372428 +2372429 +2372430 +2372431 +2372432 +2372433 +2372434 +2372435 +2372436 +2372437 +2372438 +2372439 +2372440 +2372441 +2372442 +2372443 +2372444 +2372445 +2372446 +2372447 +2372448 +2372449 +2372450 +2372451 +2372452 +2372453 +2372454 +2372455 +2372456 +2372457 +2372458 +2372459 +2372460 +2372461 +2372462 +2372463 +2372464 +2372465 +2372466 +2372467 +2372468 +2372469 +2372470 +2372471 +2372472 +2372473 +2372474 +2372475 +2372476 +2372477 +2372478 +2372479 +2372480 +2372481 +2372482 +2372483 +2372484 +2372485 +2372486 +2372487 +2372488 +2372489 +2372490 +2372491 +2372492 +2372493 +2372494 +2372495 +2372496 +2372497 +2372498 +2372499 +2372500 +2372501 +2372502 +2372503 +2372504 +2372505 +2372506 +2372507 +2372508 +2372509 +2372510 +2372511 +2372512 +2372513 +2372514 +2372515 +2372516 +2372517 +2372518 +2372519 +2372520 +2372521 +2372522 +2372523 +2372524 +2372525 +2372526 +2372527 +2372528 +2372529 +2372530 +2372531 +2372532 +2372533 +2372534 +2372535 +2372536 +2372537 +2372538 +2372539 +2372540 +2372541 +2372542 +2372543 +2372544 +2372545 +2372546 +2372547 +2372548 +2372549 +2372550 +2372551 +2372552 +2372553 +2372554 +2372555 +2372556 +2372557 +2372558 +2372559 +2372560 +2372561 +2372562 +2372563 +2372564 +2372565 +2372566 +2372567 +2372568 +2372569 +2372570 +2372571 +2372572 +2372573 +2372574 +2372575 +2372576 +2372577 +2372578 +2372579 +2372580 +2372581 +2372582 +2372583 +2372584 +2372585 +2372586 +2372587 +2372588 +2372589 +2372590 +2372591 +2372592 +2372593 +2372594 +2372595 +2372596 +2372597 +2372598 +2372599 +2372600 +2372601 +2372602 +2372603 +2372604 +2372605 +2372606 +2372607 +2372608 +2372609 +2372610 +2372611 +2372612 +2372613 +2372614 +2372615 +2372616 +2372617 +2372618 +2372619 +2372620 +2372621 +2372622 +2372623 +2372624 +2372625 +2372626 +2372627 +2372628 +2372629 +2372630 +2372631 +2372632 +2372633 +2372634 +2372635 +2372636 +2372637 +2372638 +2372639 +2372640 +2372641 +2372642 +2372643 +2372644 +2372645 +2372646 +2372647 +2372648 +2372649 +2372650 +2372651 +2372652 +2372653 +2372654 +2372655 +2372656 +2372657 +2372658 +2372659 +2372660 +2372661 +2372662 +2372663 +2372664 +2372665 +2372666 +2372667 +2372668 +2372669 +2372670 +2372671 +2372672 +2372673 +2372674 +2372675 +2372676 +2372677 +2372678 +2372679 +2372680 +2372681 +2372682 +2372683 +2372684 +2372685 +2372686 +2372687 +2372688 +2372689 +2372690 +2372691 +2372692 +2372693 +2372694 +2372695 +2372696 +2372697 +2372698 +2372699 +2372700 +2372701 +2372702 +2372703 +2372704 +2372705 +2372706 +2372707 +2372708 +2372709 +2372710 +2372711 +2372712 +2372713 +2372714 +2372715 +2372716 +2372717 +2372718 +2372719 +2372720 +2372721 +2372722 +2372723 +2372724 +2372725 +2372726 +2372727 +2372728 +2372729 +2372730 +2372731 +2372732 +2372733 +2372734 +2372735 +2372736 +2372737 +2372738 +2372739 +2372740 +2372741 +2372742 +2372743 +2372744 +2372745 +2372746 +2372747 +2372748 +2372749 +2372750 +2372751 +2372752 +2372753 +2372754 +2372755 +2372756 +2372757 +2372758 +2372759 +2372760 +2372761 +2372762 +2372763 +2372764 +2372765 +2372766 +2372767 +2372768 +2372769 +2372770 +2372771 +2372772 +2372773 +2372774 +2372775 +2372776 +2372777 +2372778 +2372779 +2372780 +2372781 +2372782 +2372783 +2372784 +2372785 +2372786 +2372787 +2372788 +2372789 +2372790 +2372804 +2372805 +2372806 +2372807 +2372808 +2372809 +2372810 +2372811 +2372812 +2372813 +2372814 +2372815 +2372816 +2372817 +2372818 +2372819 +2372820 +2372821 +2372822 +2372823 +2372824 +2372825 +2372826 +2372827 +2372828 +2372829 +2372830 +2372831 +2372832 +2372833 +2372834 +2372835 +2372836 +2372837 +2372838 +2372930 +2372931 +2372932 +2372933 +2372934 +2372935 +2372936 +2372937 +2372938 +2372939 +2372940 +2372941 +2372942 +2372943 +2372944 +2372945 +2372946 +2372947 +2372948 +2372949 +2372950 +2372951 +2372952 +2372953 +2372954 +2372955 +2372956 +2372957 +2372958 +2372959 +2372960 +2372961 +2372962 +2372963 +2372964 +2372965 +2372966 +2372967 +2372968 +2372969 +2372970 +2372971 +2372972 +2372973 +2372974 +2372975 +2372976 +2372977 +2372978 +2372979 +2372980 +2372981 +2372982 +2372983 +2372984 +2372985 +2372986 +2372987 +2372988 +2372989 +2372990 +2372991 +2372992 +2372993 +2372994 +2372995 +2372996 +2372997 +2372998 +2372999 +2373000 +2373001 +2373002 +2373003 +2373004 +2373005 +2373006 +2373007 +2373008 +2373009 +2373010 +2373011 +2373017 +2376671 +2376672 +2376673 +2376674 +2376675 +2376676 +2376677 +2376678 +2376679 +2376680 +2376681 +2376682 +2376683 +2376684 +2376685 +2376686 +2376687 +2376688 +2376689 +2376690 +2376691 +2376692 +2376693 +2376694 +2376695 +2376696 +2376697 +2376698 +2376699 +2376700 +2376701 +2376702 +2376703 +2376704 +2376705 +2376706 +2376707 +2376708 +2376709 +2376710 +2376711 +2376712 +2376713 +2376714 +2376715 +2376716 +2376717 +2376718 +2376719 +2376720 +2376721 +2376722 +2376723 +2376724 +2376725 +2376726 +2376727 +2376728 +2376729 +2376730 +2376731 +2376732 +2376733 +2376734 +2376735 +2376736 +2376737 +2376738 +2376739 +2376740 +2376741 +2376742 +2376743 +2376744 +2376745 +2376746 +2376747 +2376748 +2376749 +2376750 +2376751 +2376752 +2376753 +2376754 +2376755 +2376756 +2376757 +2376758 +2376759 +2376760 +2376761 +2376762 +2376763 +2376764 +2376765 +2376766 +2376767 +2376768 +2376769 +2376770 +2376771 +2376772 +2376773 +2376774 +2376775 +2376776 +2376777 +2376778 +2376779 +2376780 +2376781 +2376782 +2376783 +2376784 +2376785 +2376786 +2376787 +2376788 +2376789 +2376790 +2376791 +2376792 +2376793 +2376794 +2376795 +2376796 +2376797 +2376798 +2376799 +2376800 +2376801 +2376802 +2376803 +2376804 +2376805 +2376806 +2376807 +2376808 +2376809 +2376810 +2376811 +2376812 +2376813 +2376814 +2376815 +2376816 +2376817 +2376818 +2376819 +2376820 +2376821 +2376822 +2376823 +2376824 +2376825 +2376826 +2376827 +2376828 +2376829 +2376830 +2376831 +2376832 +2376833 +2376834 +2376835 +2376836 +2376837 +2376838 +2376839 +2376840 +2376841 +2376842 +2376843 +2376844 +2376845 +2376846 +2376847 +2376848 +2376849 +2376850 +2376851 +2376852 +2376853 +2376854 +2376855 +2376856 +2376857 +2376858 +2376859 +2376860 +2376861 +2376862 +2376863 +2376864 +2376865 +2376866 +2376867 +2376868 +2376869 +2376870 +2376871 +2376872 +2376873 +2376874 +2376875 +2376876 +2376877 +2376878 +2376879 +2376880 +2376881 +2376882 +2376883 +2376884 +2376885 +2376886 +2376887 +2376888 +2376889 +2376890 +2376891 +2376892 +2376893 +2376894 +2376895 +2376896 +2376897 +2376898 +2376899 +2376900 +2376901 +2376902 +2376903 +2376904 +2376905 +2376906 +2376907 +2376908 +2376909 +2376910 +2376911 +2376912 +2376913 +2376914 +2376915 +2376916 +2376917 +2376918 +2376919 +2376920 +2376921 +2376922 +2376923 +2376924 +2376925 +2376926 +2376927 +2376928 +2376929 +2376930 +2376931 +2376932 +2376933 +2376934 +2376935 +2376936 +2376937 +2376938 +2376939 +2376940 +2376941 +2376942 +2376943 +2376944 +2376945 +2376946 +2376947 +2376948 +2376949 +2376950 +2376951 +2376952 +2376953 +2376954 +2376955 +2376956 +2376957 +2376958 +2376959 +2376960 +2376961 +2376962 +2376963 +2376964 +2376965 +2376966 +2376967 +2376968 +2376969 +2376970 +2376971 +2376972 +2376973 +2376974 +2376975 +2376976 +2376977 +2376978 +2376979 +2376980 +2376981 +2376982 +2376983 +2376984 +2376985 +2376986 +2376987 +2376988 +2376989 +2376990 +2376991 +2376992 +2376993 +2376994 +2376995 +2376996 +2376997 +2376998 +2376999 +2377000 +2377001 +2377002 +2377003 +2377004 +2377005 +2377006 +2377007 +2377008 +2377009 +2377010 +2377011 +2377012 +2377013 +2377014 +2377015 +2377016 +2377017 +2377018 +2377019 +2377020 +2377021 +2377022 +2377023 +2377024 +2377025 +2377026 +2377027 +2377028 +2377029 +2377030 +2377031 +2377032 +2377033 +2377034 +2377035 +2377036 +2377037 +2377038 +2377039 +2377040 +2377041 +2377042 +2377043 +2377044 +2377045 +2377046 +2377047 +2377048 +2377049 +2377050 +2377051 +2377052 +2377053 +2377054 +2377055 +2377056 +2377057 +2377058 +2377059 +2377060 +2377061 +2377062 +2377063 +2377064 +2377065 +2377066 +2377067 +2377068 +2377069 +2377070 +2377071 +2377072 +2377073 +2377074 +2377075 +2377076 +2377077 +2377078 +2377079 +2377080 +2377081 +2377082 +2377083 +2377084 +2377085 +2377086 +2377087 +2377088 +2377089 +2377090 +2377091 +2377092 +2377093 +2377094 +2377095 +2377096 +2377097 +2377098 +2377101 +2377102 +2377103 +2377104 +2377105 +2377106 +2377107 +2377108 +2377109 +2377123 +2377124 +2377125 +2377126 +2377127 +2377128 +2377129 +2377130 +2377131 +2377132 +2377133 +2377134 +2377135 +2377136 +2377137 +2377138 +2377139 +2377140 +2377141 +2377142 +2377143 +2377144 +2377145 +2377146 +2377147 +2377148 +2377149 +2377150 +2377151 +2377152 +2377153 +2377154 +2377155 +2377156 +2377157 +2377244 +2377245 +2377246 +2377247 +2377248 +2377249 +2377250 +2377251 +2377252 +2377253 +2377254 +2377255 +2377256 +2377257 +2377258 +2377259 +2377260 +2377261 +2377262 +2377263 +2377264 +2377265 +2377266 +2377267 +2377268 +2377269 +2377270 +2377271 +2377272 +2377273 +2377274 +2377275 +2377276 +2377277 +2377278 +2377279 +2377281 +2377282 +2377283 +2377284 +2377285 +2377286 +2377287 +2377288 +2377289 +2377290 +2377291 +2377292 +2377293 +2377294 +2377295 +2377296 +2377297 +2377298 +2377299 +2377300 +2377301 +2377302 +2377303 +2377304 +2377305 +2377306 +2377307 +2377308 +2377309 +2377310 +2377311 +2377312 +2377313 +2377314 +2377315 +2377316 +2377317 +2377318 +2377319 +2377320 +2377321 +2377322 +2377323 +2377324 +2377325 +2377326 +2377327 +2377328 +2377329 +2377330 +2377331 +2377337 +2380991 +2380992 +2380993 +2380994 +2380995 +2380996 +2380997 +2380998 +2380999 +2381000 +2381001 +2381002 +2381003 +2381004 +2381005 +2381006 +2381007 +2381008 +2381009 +2381010 +2381011 +2381012 +2381013 +2381014 +2381015 +2381016 +2381017 +2381018 +2381019 +2381020 +2381021 +2381022 +2381023 +2381024 +2381025 +2381026 +2381027 +2381028 +2381029 +2381030 +2381031 +2381032 +2381033 +2381034 +2381035 +2381036 +2381037 +2381038 +2381039 +2381040 +2381041 +2381042 +2381043 +2381044 +2381045 +2381046 +2381047 +2381048 +2381049 +2381050 +2381051 +2381052 +2381053 +2381054 +2381055 +2381056 +2381057 +2381058 +2381059 +2381060 +2381061 +2381062 +2381063 +2381064 +2381065 +2381066 +2381067 +2381068 +2381069 +2381070 +2381071 +2381072 +2381073 +2381074 +2381075 +2381076 +2381077 +2381078 +2381079 +2381080 +2381081 +2381082 +2381083 +2381084 +2381085 +2381086 +2381087 +2381088 +2381089 +2381090 +2381091 +2381092 +2381093 +2381094 +2381095 +2381096 +2381097 +2381098 +2381099 +2381100 +2381101 +2381102 +2381103 +2381104 +2381105 +2381106 +2381107 +2381108 +2381109 +2381110 +2381111 +2381112 +2381113 +2381114 +2381115 +2381116 +2381117 +2381118 +2381119 +2381120 +2381121 +2381122 +2381123 +2381124 +2381125 +2381126 +2381127 +2381128 +2381129 +2381130 +2381131 +2381132 +2381133 +2381134 +2381135 +2381136 +2381137 +2381138 +2381139 +2381140 +2381141 +2381142 +2381143 +2381144 +2381145 +2381146 +2381147 +2381148 +2381149 +2381150 +2381151 +2381152 +2381153 +2381154 +2381155 +2381156 +2381157 +2381158 +2381159 +2381160 +2381161 +2381162 +2381163 +2381164 +2381165 +2381166 +2381167 +2381168 +2381169 +2381170 +2381171 +2381172 +2381173 +2381174 +2381175 +2381176 +2381177 +2381178 +2381179 +2381180 +2381181 +2381182 +2381183 +2381184 +2381185 +2381186 +2381187 +2381188 +2381189 +2381190 +2381191 +2381192 +2381193 +2381194 +2381195 +2381196 +2381197 +2381198 +2381199 +2381200 +2381201 +2381202 +2381203 +2381204 +2381205 +2381206 +2381207 +2381208 +2381209 +2381210 +2381211 +2381212 +2381213 +2381214 +2381215 +2381216 +2381217 +2381218 +2381219 +2381220 +2381221 +2381222 +2381223 +2381224 +2381225 +2381226 +2381227 +2381228 +2381229 +2381230 +2381231 +2381232 +2381233 +2381234 +2381235 +2381236 +2381237 +2381238 +2381239 +2381240 +2381241 +2381242 +2381243 +2381244 +2381245 +2381246 +2381247 +2381248 +2381249 +2381250 +2381251 +2381252 +2381253 +2381254 +2381255 +2381256 +2381257 +2381258 +2381259 +2381260 +2381261 +2381262 +2381263 +2381264 +2381265 +2381266 +2381267 +2381268 +2381269 +2381270 +2381271 +2381272 +2381273 +2381274 +2381275 +2381276 +2381277 +2381278 +2381279 +2381280 +2381281 +2381282 +2381283 +2381284 +2381285 +2381286 +2381287 +2381288 +2381289 +2381290 +2381291 +2381292 +2381293 +2381294 +2381295 +2381296 +2381297 +2381298 +2381299 +2381300 +2381301 +2381302 +2381303 +2381304 +2381305 +2381306 +2381307 +2381308 +2381309 +2381310 +2381311 +2381312 +2381313 +2381314 +2381315 +2381316 +2381317 +2381318 +2381319 +2381320 +2381321 +2381322 +2381323 +2381324 +2381325 +2381326 +2381327 +2381328 +2381329 +2381330 +2381331 +2381332 +2381333 +2381334 +2381335 +2381336 +2381337 +2381338 +2381339 +2381340 +2381341 +2381342 +2381343 +2381344 +2381345 +2381346 +2381347 +2381348 +2381349 +2381350 +2381351 +2381352 +2381353 +2381354 +2381355 +2381356 +2381357 +2381358 +2381359 +2381360 +2381361 +2381362 +2381363 +2381364 +2381365 +2381366 +2381367 +2381368 +2381369 +2381370 +2381371 +2381372 +2381373 +2381374 +2381375 +2381376 +2381377 +2381378 +2381379 +2381380 +2381381 +2381382 +2381383 +2381384 +2381385 +2381386 +2381387 +2381388 +2381389 +2381390 +2381391 +2381392 +2381393 +2381394 +2381395 +2381396 +2381397 +2381398 +2381399 +2381400 +2381401 +2381402 +2381403 +2381404 +2381405 +2381406 +2381407 +2381408 +2381409 +2381410 +2381411 +2381412 +2381413 +2381414 +2381415 +2381416 +2381417 +2381418 +2381421 +2381422 +2381423 +2381424 +2381425 +2381426 +2381427 +2381428 +2381442 +2381443 +2381444 +2381445 +2381446 +2381447 +2381448 +2381449 +2381450 +2381451 +2381452 +2381453 +2381454 +2381455 +2381456 +2381457 +2381458 +2381459 +2381460 +2381461 +2381462 +2381463 +2381464 +2381465 +2381466 +2381467 +2381468 +2381469 +2381470 +2381471 +2381472 +2381473 +2381474 +2381475 +2381476 +2381477 +2381479 +2381480 +2381481 +2381482 +2381483 +2381484 +2381485 +2381486 +2381487 +2381488 +2381489 +2381490 +2381491 +2381565 +2381566 +2381567 +2381568 +2381569 +2381570 +2381571 +2381572 +2381573 +2381574 +2381575 +2381576 +2381577 +2381578 +2381579 +2381580 +2381581 +2381582 +2381583 +2381584 +2381585 +2381586 +2381587 +2381588 +2381589 +2381590 +2381591 +2381592 +2381593 +2381594 +2381595 +2381596 +2381597 +2381598 +2381599 +2381600 +2381601 +2381602 +2381603 +2381604 +2381605 +2381606 +2381607 +2381608 +2381609 +2381610 +2381611 +2381612 +2381613 +2381614 +2381615 +2381616 +2381617 +2381618 +2381619 +2381620 +2381621 +2381622 +2381623 +2381624 +2381625 +2381626 +2381627 +2381628 +2381629 +2381630 +2381631 +2381632 +2381633 +2381634 +2381635 +2381636 +2381637 +2381638 +2381639 +2381640 +2381641 +2381642 +2381643 +2381644 +2381645 +2381646 +2381647 +2381648 +2381649 +2381650 +2381651 +2385311 +2385312 +2385313 +2385314 +2385315 +2385316 +2385317 +2385318 +2385319 +2385320 +2385321 +2385322 +2385323 +2385324 +2385325 +2385326 +2385327 +2385328 +2385329 +2385330 +2385331 +2385332 +2385333 +2385334 +2385335 +2385336 +2385337 +2385338 +2385339 +2385340 +2385341 +2385342 +2385343 +2385344 +2385345 +2385346 +2385347 +2385348 +2385349 +2385350 +2385351 +2385352 +2385353 +2385354 +2385355 +2385356 +2385357 +2385358 +2385359 +2385360 +2385361 +2385362 +2385363 +2385364 +2385365 +2385366 +2385367 +2385368 +2385369 +2385370 +2385371 +2385372 +2385373 +2385374 +2385375 +2385376 +2385377 +2385378 +2385379 +2385380 +2385381 +2385382 +2385383 +2385384 +2385385 +2385386 +2385387 +2385388 +2385389 +2385390 +2385391 +2385392 +2385393 +2385394 +2385395 +2385396 +2385397 +2385398 +2385399 +2385400 +2385401 +2385402 +2385403 +2385404 +2385405 +2385406 +2385407 +2385408 +2385409 +2385410 +2385411 +2385412 +2385413 +2385414 +2385415 +2385416 +2385417 +2385418 +2385419 +2385420 +2385421 +2385422 +2385423 +2385424 +2385425 +2385426 +2385427 +2385428 +2385429 +2385430 +2385431 +2385432 +2385433 +2385434 +2385435 +2385436 +2385437 +2385438 +2385439 +2385440 +2385441 +2385442 +2385443 +2385444 +2385445 +2385446 +2385447 +2385448 +2385449 +2385450 +2385451 +2385452 +2385453 +2385454 +2385455 +2385456 +2385457 +2385458 +2385459 +2385460 +2385461 +2385462 +2385463 +2385464 +2385465 +2385466 +2385467 +2385468 +2385469 +2385470 +2385471 +2385472 +2385473 +2385474 +2385475 +2385476 +2385477 +2385478 +2385479 +2385480 +2385481 +2385482 +2385483 +2385484 +2385485 +2385486 +2385487 +2385488 +2385489 +2385490 +2385491 +2385492 +2385493 +2385494 +2385495 +2385496 +2385497 +2385498 +2385499 +2385500 +2385501 +2385502 +2385503 +2385504 +2385505 +2385506 +2385507 +2385508 +2385509 +2385510 +2385511 +2385512 +2385513 +2385514 +2385515 +2385516 +2385517 +2385518 +2385519 +2385520 +2385521 +2385522 +2385523 +2385524 +2385525 +2385526 +2385527 +2385528 +2385529 +2385530 +2385531 +2385532 +2385533 +2385534 +2385535 +2385536 +2385537 +2385538 +2385539 +2385540 +2385541 +2385542 +2385543 +2385544 +2385545 +2385546 +2385547 +2385548 +2385549 +2385550 +2385551 +2385552 +2385553 +2385554 +2385555 +2385556 +2385557 +2385558 +2385559 +2385560 +2385561 +2385562 +2385563 +2385564 +2385565 +2385566 +2385567 +2385568 +2385569 +2385570 +2385571 +2385572 +2385573 +2385574 +2385575 +2385576 +2385577 +2385578 +2385579 +2385580 +2385581 +2385582 +2385583 +2385584 +2385585 +2385586 +2385587 +2385588 +2385589 +2385590 +2385591 +2385592 +2385593 +2385594 +2385595 +2385596 +2385597 +2385598 +2385599 +2385600 +2385601 +2385602 +2385603 +2385604 +2385605 +2385606 +2385607 +2385608 +2385609 +2385610 +2385611 +2385612 +2385613 +2385614 +2385615 +2385616 +2385617 +2385618 +2385619 +2385620 +2385621 +2385622 +2385623 +2385624 +2385625 +2385626 +2385627 +2385628 +2385629 +2385630 +2385631 +2385632 +2385633 +2385634 +2385635 +2385636 +2385637 +2385638 +2385639 +2385640 +2385641 +2385642 +2385643 +2385644 +2385645 +2385646 +2385647 +2385648 +2385649 +2385650 +2385651 +2385652 +2385653 +2385654 +2385655 +2385656 +2385657 +2385658 +2385659 +2385660 +2385661 +2385662 +2385663 +2385664 +2385665 +2385666 +2385667 +2385668 +2385669 +2385670 +2385671 +2385672 +2385673 +2385674 +2385675 +2385676 +2385677 +2385678 +2385679 +2385680 +2385681 +2385682 +2385683 +2385684 +2385685 +2385686 +2385687 +2385688 +2385689 +2385690 +2385691 +2385692 +2385693 +2385694 +2385695 +2385696 +2385697 +2385698 +2385699 +2385700 +2385701 +2385702 +2385703 +2385704 +2385705 +2385706 +2385707 +2385708 +2385709 +2385710 +2385711 +2385712 +2385713 +2385714 +2385715 +2385716 +2385717 +2385718 +2385719 +2385720 +2385721 +2385722 +2385723 +2385724 +2385725 +2385726 +2385727 +2385728 +2385729 +2385730 +2385731 +2385732 +2385733 +2385734 +2385735 +2385736 +2385737 +2385741 +2385742 +2385743 +2385744 +2385745 +2385746 +2385747 +2385763 +2385764 +2385765 +2385766 +2385767 +2385768 +2385769 +2385770 +2385771 +2385772 +2385773 +2385774 +2385775 +2385776 +2385777 +2385778 +2385779 +2385780 +2385781 +2385782 +2385783 +2385784 +2385785 +2385786 +2385787 +2385788 +2385789 +2385790 +2385791 +2385792 +2385793 +2385794 +2385795 +2385799 +2385800 +2385801 +2385802 +2385803 +2385804 +2385805 +2385806 +2385807 +2385808 +2385809 +2385810 +2385811 +2385885 +2385886 +2385887 +2385888 +2385889 +2385890 +2385891 +2385892 +2385893 +2385894 +2385895 +2385896 +2385897 +2385898 +2385899 +2385900 +2385901 +2385902 +2385903 +2385904 +2385905 +2385906 +2385907 +2385908 +2385909 +2385910 +2385911 +2385912 +2385913 +2385914 +2385915 +2385916 +2385917 +2385918 +2385919 +2385920 +2385921 +2385922 +2385923 +2385924 +2385925 +2385926 +2385927 +2385928 +2385929 +2385930 +2385931 +2385932 +2385933 +2385934 +2385935 +2385936 +2385937 +2385938 +2385939 +2385940 +2385941 +2385942 +2385943 +2385944 +2385945 +2385946 +2385947 +2385948 +2385949 +2385950 +2385951 +2385952 +2385953 +2385954 +2385955 +2385956 +2385957 +2385958 +2385959 +2385960 +2385961 +2385962 +2385963 +2385964 +2385965 +2385966 +2385967 +2385968 +2385969 +2385970 +2385971 +2389631 +2389632 +2389633 +2389634 +2389635 +2389636 +2389637 +2389638 +2389639 +2389640 +2389641 +2389642 +2389643 +2389644 +2389645 +2389646 +2389647 +2389648 +2389649 +2389650 +2389651 +2389652 +2389653 +2389654 +2389655 +2389656 +2389657 +2389658 +2389659 +2389660 +2389661 +2389662 +2389663 +2389664 +2389665 +2389666 +2389667 +2389668 +2389669 +2389670 +2389671 +2389672 +2389673 +2389674 +2389675 +2389676 +2389677 +2389678 +2389679 +2389680 +2389681 +2389682 +2389683 +2389684 +2389685 +2389686 +2389687 +2389688 +2389689 +2389690 +2389691 +2389692 +2389693 +2389694 +2389695 +2389696 +2389697 +2389698 +2389699 +2389700 +2389701 +2389702 +2389703 +2389704 +2389705 +2389706 +2389707 +2389708 +2389709 +2389710 +2389711 +2389712 +2389713 +2389714 +2389715 +2389716 +2389717 +2389718 +2389719 +2389720 +2389721 +2389722 +2389723 +2389724 +2389725 +2389726 +2389727 +2389728 +2389729 +2389730 +2389731 +2389732 +2389733 +2389734 +2389735 +2389736 +2389737 +2389738 +2389739 +2389740 +2389741 +2389742 +2389743 +2389744 +2389745 +2389746 +2389747 +2389748 +2389749 +2389750 +2389751 +2389752 +2389753 +2389754 +2389755 +2389756 +2389757 +2389758 +2389759 +2389760 +2389761 +2389762 +2389763 +2389764 +2389765 +2389766 +2389767 +2389768 +2389769 +2389770 +2389771 +2389772 +2389773 +2389774 +2389775 +2389776 +2389777 +2389778 +2389779 +2389780 +2389781 +2389782 +2389783 +2389784 +2389785 +2389786 +2389787 +2389788 +2389789 +2389790 +2389791 +2389793 +2389794 +2389795 +2389796 +2389797 +2389798 +2389799 +2389800 +2389801 +2389802 +2389803 +2389804 +2389805 +2389806 +2389807 +2389808 +2389809 +2389810 +2389811 +2389812 +2389813 +2389814 +2389815 +2389816 +2389817 +2389818 +2389819 +2389820 +2389821 +2389822 +2389823 +2389824 +2389825 +2389826 +2389827 +2389828 +2389829 +2389830 +2389831 +2389832 +2389833 +2389834 +2389835 +2389836 +2389837 +2389838 +2389839 +2389840 +2389841 +2389842 +2389843 +2389844 +2389845 +2389846 +2389847 +2389848 +2389849 +2389850 +2389851 +2389852 +2389853 +2389854 +2389855 +2389856 +2389857 +2389858 +2389859 +2389860 +2389861 +2389862 +2389863 +2389864 +2389865 +2389866 +2389867 +2389868 +2389869 +2389870 +2389871 +2389872 +2389873 +2389874 +2389875 +2389876 +2389877 +2389878 +2389879 +2389880 +2389881 +2389882 +2389883 +2389884 +2389885 +2389886 +2389887 +2389888 +2389889 +2389890 +2389891 +2389892 +2389893 +2389894 +2389895 +2389896 +2389897 +2389898 +2389899 +2389900 +2389901 +2389902 +2389903 +2389904 +2389905 +2389906 +2389907 +2389908 +2389909 +2389910 +2389911 +2389912 +2389913 +2389914 +2389915 +2389916 +2389917 +2389918 +2389919 +2389920 +2389921 +2389922 +2389923 +2389924 +2389925 +2389926 +2389927 +2389928 +2389929 +2389930 +2389931 +2389932 +2389933 +2389934 +2389935 +2389936 +2389937 +2389938 +2389939 +2389940 +2389941 +2389942 +2389943 +2389944 +2389945 +2389946 +2389947 +2389948 +2389949 +2389950 +2389951 +2389952 +2389953 +2389954 +2389955 +2389956 +2389957 +2389958 +2389959 +2389960 +2389961 +2389962 +2389963 +2389964 +2389965 +2389966 +2389967 +2389968 +2389969 +2389970 +2389971 +2389972 +2389973 +2389974 +2389975 +2389976 +2389977 +2389978 +2389979 +2389980 +2389981 +2389982 +2389983 +2389984 +2389985 +2389986 +2389987 +2389988 +2389989 +2389990 +2389991 +2389992 +2389993 +2389994 +2389995 +2389996 +2389997 +2389998 +2389999 +2390000 +2390001 +2390002 +2390003 +2390004 +2390005 +2390006 +2390007 +2390008 +2390009 +2390010 +2390011 +2390012 +2390013 +2390014 +2390015 +2390016 +2390017 +2390018 +2390019 +2390020 +2390021 +2390022 +2390023 +2390024 +2390025 +2390026 +2390027 +2390028 +2390029 +2390030 +2390031 +2390032 +2390033 +2390034 +2390035 +2390036 +2390037 +2390038 +2390039 +2390040 +2390041 +2390042 +2390043 +2390044 +2390045 +2390046 +2390047 +2390048 +2390049 +2390050 +2390051 +2390052 +2390053 +2390054 +2390055 +2390056 +2390057 +2390058 +2390061 +2390062 +2390063 +2390064 +2390065 +2390066 +2390067 +2390083 +2390084 +2390085 +2390086 +2390087 +2390088 +2390089 +2390090 +2390091 +2390092 +2390093 +2390094 +2390095 +2390096 +2390097 +2390098 +2390099 +2390100 +2390101 +2390102 +2390103 +2390104 +2390105 +2390106 +2390107 +2390108 +2390109 +2390110 +2390111 +2390112 +2390113 +2390119 +2390120 +2390121 +2390122 +2390123 +2390124 +2390125 +2390126 +2390127 +2390128 +2390129 +2390130 +2390131 +2390205 +2390206 +2390207 +2390208 +2390209 +2390210 +2390211 +2390212 +2390213 +2390214 +2390215 +2390216 +2390217 +2390218 +2390219 +2390220 +2390221 +2390222 +2390223 +2390224 +2390225 +2390226 +2390227 +2390228 +2390229 +2390230 +2390231 +2390232 +2390233 +2390234 +2390235 +2390236 +2390237 +2390238 +2390239 +2390240 +2390241 +2390242 +2390243 +2390244 +2390245 +2390246 +2390247 +2390248 +2390249 +2390250 +2390251 +2390252 +2390253 +2390254 +2390255 +2390256 +2390257 +2390258 +2390259 +2390260 +2390261 +2390262 +2390263 +2390264 +2390265 +2390266 +2390267 +2390268 +2390269 +2390270 +2390271 +2390272 +2390273 +2390275 +2390276 +2390277 +2390278 +2390279 +2390280 +2390281 +2390282 +2390283 +2390284 +2390285 +2390286 +2390287 +2390289 +2393951 +2393952 +2393953 +2393954 +2393955 +2393956 +2393957 +2393958 +2393959 +2393960 +2393961 +2393962 +2393963 +2393964 +2393965 +2393966 +2393967 +2393968 +2393969 +2393970 +2393971 +2393972 +2393973 +2393974 +2393975 +2393976 +2393977 +2393978 +2393979 +2393980 +2393981 +2393982 +2393983 +2393984 +2393985 +2393986 +2393987 +2393988 +2393989 +2393990 +2393991 +2393992 +2393993 +2393994 +2393995 +2393996 +2393997 +2393998 +2393999 +2394000 +2394001 +2394002 +2394003 +2394004 +2394005 +2394006 +2394007 +2394008 +2394009 +2394010 +2394011 +2394012 +2394013 +2394014 +2394015 +2394016 +2394017 +2394018 +2394019 +2394020 +2394021 +2394022 +2394023 +2394024 +2394025 +2394026 +2394027 +2394028 +2394029 +2394030 +2394031 +2394032 +2394033 +2394034 +2394035 +2394036 +2394037 +2394038 +2394039 +2394040 +2394041 +2394042 +2394043 +2394044 +2394045 +2394046 +2394047 +2394048 +2394049 +2394050 +2394051 +2394052 +2394053 +2394054 +2394055 +2394056 +2394057 +2394058 +2394059 +2394060 +2394061 +2394062 +2394063 +2394064 +2394065 +2394066 +2394067 +2394068 +2394069 +2394070 +2394071 +2394072 +2394073 +2394074 +2394075 +2394076 +2394077 +2394078 +2394079 +2394080 +2394081 +2394082 +2394083 +2394084 +2394085 +2394086 +2394087 +2394088 +2394089 +2394090 +2394091 +2394092 +2394093 +2394094 +2394095 +2394096 +2394097 +2394098 +2394099 +2394100 +2394101 +2394102 +2394103 +2394104 +2394105 +2394106 +2394107 +2394108 +2394109 +2394110 +2394111 +2394112 +2394113 +2394114 +2394115 +2394116 +2394117 +2394118 +2394119 +2394120 +2394121 +2394122 +2394123 +2394124 +2394125 +2394126 +2394127 +2394128 +2394129 +2394130 +2394131 +2394132 +2394133 +2394134 +2394135 +2394136 +2394137 +2394138 +2394139 +2394140 +2394141 +2394142 +2394143 +2394144 +2394145 +2394146 +2394147 +2394148 +2394149 +2394150 +2394151 +2394152 +2394153 +2394154 +2394155 +2394156 +2394157 +2394158 +2394159 +2394160 +2394161 +2394162 +2394163 +2394164 +2394165 +2394166 +2394167 +2394168 +2394169 +2394170 +2394171 +2394172 +2394173 +2394174 +2394175 +2394176 +2394177 +2394178 +2394179 +2394180 +2394181 +2394182 +2394183 +2394184 +2394185 +2394186 +2394187 +2394188 +2394189 +2394190 +2394191 +2394192 +2394193 +2394194 +2394195 +2394196 +2394197 +2394198 +2394199 +2394200 +2394201 +2394202 +2394203 +2394204 +2394205 +2394206 +2394207 +2394208 +2394209 +2394210 +2394211 +2394212 +2394213 +2394214 +2394215 +2394216 +2394217 +2394218 +2394219 +2394220 +2394221 +2394222 +2394223 +2394224 +2394225 +2394226 +2394227 +2394228 +2394229 +2394230 +2394231 +2394232 +2394233 +2394234 +2394235 +2394236 +2394237 +2394238 +2394239 +2394240 +2394241 +2394242 +2394243 +2394244 +2394245 +2394246 +2394247 +2394248 +2394249 +2394250 +2394251 +2394252 +2394253 +2394254 +2394255 +2394256 +2394257 +2394258 +2394259 +2394260 +2394261 +2394262 +2394263 +2394264 +2394265 +2394266 +2394267 +2394268 +2394269 +2394270 +2394271 +2394272 +2394273 +2394274 +2394275 +2394276 +2394277 +2394278 +2394279 +2394280 +2394281 +2394282 +2394283 +2394284 +2394285 +2394286 +2394287 +2394288 +2394289 +2394290 +2394291 +2394292 +2394293 +2394294 +2394295 +2394296 +2394297 +2394298 +2394299 +2394300 +2394301 +2394302 +2394303 +2394304 +2394305 +2394306 +2394307 +2394308 +2394309 +2394310 +2394311 +2394312 +2394313 +2394314 +2394315 +2394316 +2394317 +2394318 +2394319 +2394320 +2394321 +2394322 +2394323 +2394324 +2394325 +2394326 +2394327 +2394328 +2394329 +2394330 +2394331 +2394332 +2394333 +2394334 +2394335 +2394336 +2394337 +2394338 +2394339 +2394340 +2394341 +2394342 +2394343 +2394344 +2394345 +2394346 +2394347 +2394348 +2394349 +2394350 +2394351 +2394352 +2394353 +2394354 +2394355 +2394356 +2394357 +2394358 +2394359 +2394360 +2394361 +2394362 +2394363 +2394364 +2394365 +2394366 +2394367 +2394368 +2394369 +2394370 +2394371 +2394372 +2394373 +2394374 +2394375 +2394376 +2394377 +2394378 +2394379 +2394380 +2394381 +2394382 +2394383 +2394384 +2394385 +2394386 +2394387 +2394403 +2394404 +2394405 +2394406 +2394407 +2394408 +2394409 +2394410 +2394411 +2394412 +2394413 +2394414 +2394415 +2394416 +2394417 +2394418 +2394419 +2394420 +2394421 +2394422 +2394423 +2394424 +2394425 +2394426 +2394427 +2394428 +2394429 +2394430 +2394431 +2394432 +2394433 +2394439 +2394440 +2394441 +2394442 +2394443 +2394444 +2394445 +2394446 +2394447 +2394448 +2394449 +2394450 +2394451 +2394525 +2394526 +2394527 +2394528 +2394529 +2394530 +2394531 +2394532 +2394533 +2394534 +2394535 +2394536 +2394537 +2394538 +2394539 +2394540 +2394541 +2394542 +2394543 +2394544 +2394545 +2394546 +2394547 +2394548 +2394549 +2394550 +2394551 +2394552 +2394553 +2394554 +2394555 +2394556 +2394557 +2394558 +2394559 +2394560 +2394561 +2394562 +2394563 +2394564 +2394565 +2394566 +2394567 +2394568 +2394569 +2394570 +2394571 +2394572 +2394573 +2394574 +2394575 +2394576 +2394577 +2394578 +2394579 +2394580 +2394581 +2394582 +2394583 +2394584 +2394585 +2394586 +2394587 +2394588 +2394589 +2394590 +2394591 +2394592 +2394593 +2394595 +2394596 +2394597 +2394598 +2394599 +2398271 +2398272 +2398273 +2398274 +2398275 +2398276 +2398277 +2398278 +2398279 +2398280 +2398281 +2398282 +2398283 +2398284 +2398285 +2398286 +2398287 +2398288 +2398289 +2398290 +2398291 +2398292 +2398293 +2398294 +2398295 +2398296 +2398297 +2398298 +2398299 +2398300 +2398301 +2398302 +2398303 +2398304 +2398305 +2398306 +2398307 +2398308 +2398309 +2398310 +2398311 +2398312 +2398313 +2398314 +2398315 +2398316 +2398317 +2398318 +2398319 +2398320 +2398321 +2398322 +2398323 +2398324 +2398325 +2398326 +2398327 +2398328 +2398329 +2398330 +2398331 +2398332 +2398333 +2398334 +2398335 +2398336 +2398337 +2398338 +2398339 +2398340 +2398341 +2398342 +2398343 +2398344 +2398345 +2398346 +2398347 +2398348 +2398349 +2398350 +2398351 +2398352 +2398353 +2398354 +2398355 +2398356 +2398357 +2398358 +2398359 +2398360 +2398361 +2398362 +2398363 +2398364 +2398365 +2398366 +2398367 +2398368 +2398369 +2398370 +2398371 +2398372 +2398373 +2398374 +2398375 +2398376 +2398377 +2398378 +2398379 +2398380 +2398381 +2398382 +2398383 +2398384 +2398385 +2398386 +2398387 +2398388 +2398389 +2398390 +2398391 +2398392 +2398393 +2398394 +2398395 +2398396 +2398397 +2398398 +2398399 +2398400 +2398401 +2398402 +2398403 +2398404 +2398405 +2398406 +2398407 +2398408 +2398409 +2398410 +2398411 +2398412 +2398413 +2398414 +2398415 +2398416 +2398417 +2398418 +2398419 +2398420 +2398421 +2398422 +2398423 +2398424 +2398425 +2398426 +2398427 +2398428 +2398429 +2398430 +2398431 +2398432 +2398433 +2398434 +2398435 +2398436 +2398437 +2398438 +2398439 +2398440 +2398441 +2398442 +2398443 +2398444 +2398445 +2398446 +2398447 +2398448 +2398449 +2398450 +2398451 +2398452 +2398453 +2398454 +2398455 +2398456 +2398457 +2398458 +2398459 +2398460 +2398461 +2398462 +2398463 +2398464 +2398465 +2398466 +2398467 +2398468 +2398469 +2398470 +2398471 +2398472 +2398473 +2398474 +2398475 +2398476 +2398477 +2398478 +2398479 +2398480 +2398481 +2398482 +2398483 +2398484 +2398485 +2398486 +2398487 +2398488 +2398489 +2398490 +2398491 +2398492 +2398493 +2398494 +2398495 +2398496 +2398497 +2398498 +2398499 +2398500 +2398501 +2398502 +2398503 +2398504 +2398505 +2398506 +2398507 +2398508 +2398509 +2398510 +2398511 +2398512 +2398513 +2398514 +2398515 +2398516 +2398517 +2398518 +2398519 +2398520 +2398521 +2398522 +2398523 +2398524 +2398525 +2398526 +2398527 +2398528 +2398529 +2398530 +2398531 +2398532 +2398533 +2398534 +2398535 +2398536 +2398537 +2398538 +2398539 +2398540 +2398541 +2398542 +2398543 +2398544 +2398545 +2398546 +2398547 +2398548 +2398549 +2398550 +2398551 +2398552 +2398553 +2398554 +2398555 +2398556 +2398557 +2398558 +2398559 +2398560 +2398561 +2398562 +2398563 +2398564 +2398565 +2398566 +2398567 +2398568 +2398569 +2398570 +2398571 +2398572 +2398573 +2398574 +2398575 +2398576 +2398577 +2398578 +2398579 +2398580 +2398581 +2398582 +2398583 +2398584 +2398585 +2398586 +2398587 +2398588 +2398589 +2398590 +2398591 +2398592 +2398593 +2398594 +2398595 +2398596 +2398597 +2398598 +2398599 +2398600 +2398601 +2398602 +2398603 +2398604 +2398605 +2398606 +2398607 +2398608 +2398609 +2398610 +2398611 +2398612 +2398613 +2398614 +2398615 +2398616 +2398617 +2398618 +2398619 +2398620 +2398621 +2398622 +2398623 +2398624 +2398625 +2398626 +2398627 +2398628 +2398629 +2398630 +2398631 +2398632 +2398633 +2398634 +2398635 +2398636 +2398637 +2398638 +2398639 +2398640 +2398641 +2398642 +2398643 +2398644 +2398645 +2398646 +2398647 +2398648 +2398649 +2398650 +2398651 +2398652 +2398653 +2398654 +2398655 +2398656 +2398657 +2398658 +2398659 +2398660 +2398661 +2398662 +2398663 +2398664 +2398665 +2398666 +2398667 +2398668 +2398669 +2398670 +2398671 +2398672 +2398673 +2398674 +2398675 +2398676 +2398677 +2398678 +2398679 +2398680 +2398681 +2398682 +2398683 +2398684 +2398685 +2398686 +2398687 +2398688 +2398689 +2398690 +2398691 +2398692 +2398693 +2398694 +2398695 +2398696 +2398697 +2398698 +2398699 +2398700 +2398701 +2398702 +2398703 +2398704 +2398705 +2398706 +2398707 +2398708 +2398722 +2398723 +2398724 +2398725 +2398726 +2398727 +2398728 +2398729 +2398730 +2398731 +2398732 +2398733 +2398734 +2398735 +2398736 +2398737 +2398738 +2398739 +2398740 +2398741 +2398742 +2398743 +2398744 +2398745 +2398746 +2398747 +2398748 +2398749 +2398750 +2398751 +2398752 +2398753 +2398758 +2398759 +2398760 +2398761 +2398762 +2398763 +2398764 +2398765 +2398766 +2398767 +2398768 +2398769 +2398770 +2398771 +2398846 +2398847 +2398848 +2398849 +2398850 +2398851 +2398852 +2398853 +2398854 +2398855 +2398856 +2398857 +2398858 +2398859 +2398860 +2398861 +2398862 +2398863 +2398864 +2398865 +2398866 +2398867 +2398868 +2398869 +2398870 +2398871 +2398872 +2398873 +2398874 +2398875 +2398876 +2398877 +2398878 +2398879 +2398880 +2398881 +2398882 +2398883 +2398884 +2398885 +2398886 +2398887 +2398888 +2398889 +2398890 +2398891 +2398892 +2398893 +2398894 +2398895 +2398896 +2398897 +2398898 +2398899 +2398900 +2398901 +2398902 +2398903 +2398904 +2398905 +2398906 +2398907 +2398908 +2398909 +2398910 +2398911 +2398912 +2398913 +2398914 +2398915 +2398916 +2398917 +2398918 +2398919 +2402591 +2402592 +2402593 +2402594 +2402595 +2402596 +2402597 +2402598 +2402599 +2402600 +2402601 +2402602 +2402603 +2402604 +2402605 +2402606 +2402607 +2402608 +2402609 +2402610 +2402611 +2402612 +2402613 +2402614 +2402615 +2402616 +2402617 +2402618 +2402619 +2402620 +2402621 +2402622 +2402623 +2402624 +2402625 +2402626 +2402627 +2402628 +2402629 +2402630 +2402631 +2402632 +2402633 +2402634 +2402635 +2402636 +2402637 +2402638 +2402639 +2402640 +2402641 +2402642 +2402643 +2402644 +2402645 +2402646 +2402647 +2402648 +2402649 +2402650 +2402651 +2402652 +2402653 +2402654 +2402655 +2402656 +2402657 +2402658 +2402659 +2402660 +2402661 +2402662 +2402663 +2402664 +2402665 +2402666 +2402667 +2402668 +2402669 +2402670 +2402671 +2402672 +2402673 +2402674 +2402675 +2402676 +2402677 +2402678 +2402679 +2402680 +2402681 +2402682 +2402683 +2402684 +2402685 +2402686 +2402687 +2402688 +2402689 +2402690 +2402691 +2402692 +2402693 +2402694 +2402695 +2402696 +2402697 +2402698 +2402699 +2402700 +2402701 +2402702 +2402703 +2402704 +2402705 +2402706 +2402707 +2402708 +2402709 +2402710 +2402711 +2402712 +2402713 +2402714 +2402715 +2402716 +2402717 +2402718 +2402719 +2402720 +2402721 +2402722 +2402723 +2402724 +2402725 +2402726 +2402727 +2402728 +2402729 +2402730 +2402731 +2402732 +2402733 +2402734 +2402735 +2402736 +2402737 +2402738 +2402739 +2402740 +2402741 +2402742 +2402743 +2402744 +2402745 +2402746 +2402747 +2402748 +2402749 +2402750 +2402751 +2402752 +2402753 +2402754 +2402755 +2402756 +2402757 +2402758 +2402759 +2402760 +2402761 +2402762 +2402763 +2402764 +2402765 +2402766 +2402767 +2402768 +2402769 +2402770 +2402771 +2402772 +2402773 +2402774 +2402775 +2402776 +2402777 +2402778 +2402779 +2402780 +2402781 +2402782 +2402783 +2402784 +2402785 +2402786 +2402787 +2402788 +2402789 +2402790 +2402791 +2402792 +2402793 +2402794 +2402795 +2402796 +2402797 +2402798 +2402799 +2402800 +2402801 +2402802 +2402803 +2402804 +2402805 +2402806 +2402807 +2402808 +2402809 +2402810 +2402811 +2402812 +2402813 +2402814 +2402815 +2402816 +2402817 +2402818 +2402819 +2402820 +2402821 +2402822 +2402823 +2402824 +2402825 +2402826 +2402827 +2402828 +2402829 +2402830 +2402831 +2402832 +2402833 +2402834 +2402835 +2402836 +2402837 +2402838 +2402839 +2402840 +2402841 +2402842 +2402843 +2402844 +2402845 +2402846 +2402847 +2402848 +2402849 +2402850 +2402851 +2402852 +2402853 +2402854 +2402855 +2402856 +2402857 +2402858 +2402859 +2402860 +2402861 +2402862 +2402863 +2402864 +2402865 +2402866 +2402867 +2402868 +2402869 +2402870 +2402871 +2402872 +2402873 +2402874 +2402875 +2402876 +2402877 +2402878 +2402879 +2402880 +2402881 +2402882 +2402883 +2402884 +2402885 +2402886 +2402887 +2402888 +2402889 +2402890 +2402891 +2402892 +2402893 +2402894 +2402895 +2402896 +2402897 +2402898 +2402899 +2402900 +2402901 +2402902 +2402903 +2402904 +2402905 +2402906 +2402907 +2402908 +2402909 +2402910 +2402911 +2402912 +2402913 +2402914 +2402915 +2402916 +2402917 +2402918 +2402919 +2402920 +2402921 +2402922 +2402923 +2402924 +2402925 +2402926 +2402927 +2402928 +2402929 +2402930 +2402931 +2402932 +2402933 +2402934 +2402935 +2402936 +2402937 +2402938 +2402939 +2402940 +2402941 +2402942 +2402943 +2402944 +2402945 +2402946 +2402947 +2402948 +2402949 +2402950 +2402951 +2402952 +2402953 +2402954 +2402955 +2402956 +2402957 +2402958 +2402959 +2402960 +2402961 +2402962 +2402963 +2402964 +2402965 +2402966 +2402967 +2402968 +2402969 +2402970 +2402971 +2402972 +2402973 +2402974 +2402975 +2402976 +2402977 +2402978 +2402979 +2402980 +2402981 +2402982 +2402983 +2402984 +2402985 +2402986 +2402987 +2402988 +2402989 +2402990 +2402991 +2402992 +2402993 +2402994 +2402995 +2402996 +2402997 +2402998 +2402999 +2403000 +2403001 +2403002 +2403003 +2403004 +2403005 +2403006 +2403007 +2403008 +2403009 +2403010 +2403011 +2403012 +2403013 +2403014 +2403015 +2403016 +2403017 +2403018 +2403019 +2403020 +2403021 +2403022 +2403023 +2403024 +2403025 +2403026 +2403027 +2403028 +2403042 +2403043 +2403044 +2403045 +2403046 +2403047 +2403048 +2403049 +2403050 +2403051 +2403052 +2403053 +2403054 +2403055 +2403056 +2403057 +2403058 +2403059 +2403060 +2403061 +2403062 +2403063 +2403064 +2403065 +2403066 +2403067 +2403068 +2403069 +2403070 +2403071 +2403072 +2403073 +2403074 +2403075 +2403077 +2403078 +2403079 +2403080 +2403081 +2403082 +2403083 +2403084 +2403085 +2403086 +2403087 +2403088 +2403089 +2403090 +2403091 +2403166 +2403167 +2403168 +2403169 +2403170 +2403171 +2403172 +2403173 +2403174 +2403175 +2403176 +2403177 +2403178 +2403179 +2403180 +2403181 +2403182 +2403183 +2403184 +2403185 +2403186 +2403187 +2403188 +2403189 +2403190 +2403191 +2403192 +2403193 +2403194 +2403195 +2403196 +2403197 +2403198 +2403199 +2403200 +2403201 +2403202 +2403203 +2403204 +2403205 +2403206 +2403207 +2403208 +2403209 +2403210 +2403211 +2403212 +2403213 +2403214 +2403215 +2403216 +2403217 +2403218 +2403219 +2403220 +2403221 +2403222 +2403225 +2403226 +2403227 +2403228 +2403229 +2403230 +2403231 +2403232 +2403233 +2403234 +2403235 +2403236 +2403237 +2403238 +2406911 +2406912 +2406913 +2406914 +2406915 +2406916 +2406917 +2406918 +2406919 +2406920 +2406921 +2406922 +2406923 +2406924 +2406925 +2406926 +2406927 +2406928 +2406929 +2406930 +2406931 +2406932 +2406933 +2406934 +2406935 +2406936 +2406937 +2406938 +2406939 +2406940 +2406941 +2406942 +2406943 +2406944 +2406945 +2406946 +2406947 +2406948 +2406949 +2406950 +2406951 +2406952 +2406953 +2406954 +2406955 +2406956 +2406957 +2406958 +2406959 +2406960 +2406961 +2406962 +2406963 +2406964 +2406965 +2406966 +2406967 +2406968 +2406969 +2406970 +2406971 +2406972 +2406973 +2406974 +2406975 +2406976 +2406977 +2406978 +2406979 +2406980 +2406981 +2406982 +2406983 +2406984 +2406985 +2406986 +2406987 +2406988 +2406989 +2406990 +2406991 +2406993 +2406994 +2406995 +2406996 +2406997 +2406998 +2406999 +2407000 +2407001 +2407002 +2407003 +2407004 +2407005 +2407006 +2407007 +2407008 +2407009 +2407010 +2407011 +2407012 +2407013 +2407014 +2407015 +2407016 +2407017 +2407018 +2407019 +2407020 +2407021 +2407022 +2407023 +2407024 +2407025 +2407026 +2407027 +2407028 +2407029 +2407030 +2407031 +2407032 +2407033 +2407034 +2407035 +2407036 +2407037 +2407038 +2407039 +2407040 +2407041 +2407042 +2407043 +2407044 +2407045 +2407046 +2407047 +2407048 +2407049 +2407050 +2407051 +2407052 +2407053 +2407054 +2407055 +2407056 +2407057 +2407058 +2407059 +2407060 +2407061 +2407062 +2407063 +2407064 +2407065 +2407066 +2407067 +2407068 +2407069 +2407070 +2407071 +2407072 +2407073 +2407074 +2407075 +2407076 +2407077 +2407078 +2407079 +2407080 +2407081 +2407082 +2407083 +2407084 +2407085 +2407086 +2407087 +2407088 +2407089 +2407090 +2407091 +2407092 +2407093 +2407094 +2407095 +2407096 +2407097 +2407098 +2407099 +2407100 +2407101 +2407102 +2407103 +2407104 +2407105 +2407106 +2407107 +2407108 +2407109 +2407110 +2407111 +2407112 +2407113 +2407114 +2407115 +2407116 +2407117 +2407118 +2407119 +2407120 +2407121 +2407122 +2407123 +2407124 +2407125 +2407126 +2407127 +2407128 +2407129 +2407130 +2407131 +2407132 +2407133 +2407134 +2407135 +2407136 +2407137 +2407138 +2407139 +2407140 +2407141 +2407142 +2407143 +2407144 +2407145 +2407146 +2407147 +2407148 +2407149 +2407150 +2407151 +2407152 +2407153 +2407154 +2407155 +2407156 +2407157 +2407158 +2407159 +2407160 +2407161 +2407162 +2407163 +2407164 +2407165 +2407166 +2407167 +2407168 +2407169 +2407170 +2407171 +2407172 +2407173 +2407174 +2407175 +2407176 +2407177 +2407178 +2407179 +2407180 +2407181 +2407182 +2407183 +2407184 +2407185 +2407186 +2407187 +2407188 +2407189 +2407190 +2407191 +2407192 +2407193 +2407194 +2407195 +2407196 +2407197 +2407198 +2407199 +2407200 +2407201 +2407202 +2407203 +2407204 +2407205 +2407206 +2407207 +2407208 +2407209 +2407210 +2407211 +2407212 +2407213 +2407214 +2407215 +2407216 +2407217 +2407218 +2407219 +2407220 +2407221 +2407222 +2407223 +2407224 +2407225 +2407226 +2407227 +2407228 +2407229 +2407230 +2407231 +2407232 +2407233 +2407234 +2407235 +2407236 +2407237 +2407238 +2407239 +2407240 +2407241 +2407242 +2407243 +2407244 +2407245 +2407246 +2407247 +2407248 +2407249 +2407250 +2407251 +2407252 +2407253 +2407254 +2407255 +2407256 +2407257 +2407258 +2407259 +2407260 +2407261 +2407262 +2407263 +2407264 +2407265 +2407266 +2407267 +2407268 +2407269 +2407270 +2407271 +2407272 +2407273 +2407274 +2407275 +2407276 +2407277 +2407278 +2407279 +2407280 +2407281 +2407282 +2407283 +2407284 +2407285 +2407286 +2407287 +2407288 +2407289 +2407290 +2407291 +2407292 +2407293 +2407294 +2407295 +2407296 +2407297 +2407298 +2407299 +2407300 +2407301 +2407302 +2407303 +2407304 +2407305 +2407306 +2407307 +2407308 +2407309 +2407310 +2407311 +2407312 +2407313 +2407314 +2407315 +2407316 +2407317 +2407318 +2407319 +2407320 +2407321 +2407322 +2407323 +2407324 +2407325 +2407326 +2407327 +2407328 +2407329 +2407330 +2407331 +2407332 +2407333 +2407334 +2407335 +2407336 +2407337 +2407338 +2407339 +2407340 +2407341 +2407342 +2407343 +2407344 +2407345 +2407346 +2407347 +2407362 +2407363 +2407364 +2407365 +2407366 +2407367 +2407368 +2407369 +2407370 +2407371 +2407372 +2407373 +2407374 +2407375 +2407376 +2407377 +2407378 +2407379 +2407380 +2407381 +2407382 +2407383 +2407384 +2407385 +2407386 +2407387 +2407388 +2407389 +2407390 +2407391 +2407392 +2407393 +2407394 +2407395 +2407396 +2407397 +2407398 +2407399 +2407400 +2407401 +2407402 +2407403 +2407404 +2407405 +2407406 +2407407 +2407408 +2407409 +2407410 +2407411 +2407485 +2407486 +2407487 +2407488 +2407489 +2407490 +2407491 +2407492 +2407493 +2407494 +2407495 +2407496 +2407497 +2407498 +2407499 +2407500 +2407501 +2407502 +2407503 +2407504 +2407505 +2407506 +2407507 +2407508 +2407509 +2407510 +2407511 +2407512 +2407513 +2407514 +2407515 +2407516 +2407518 +2407519 +2407520 +2407521 +2407522 +2407523 +2407524 +2407525 +2407526 +2407527 +2407528 +2407529 +2407530 +2407531 +2407532 +2407533 +2407534 +2407535 +2407536 +2407537 +2407538 +2407539 +2407540 +2407541 +2407542 +2407543 +2407544 +2407546 +2407547 +2407548 +2407549 +2407550 +2407551 +2407552 +2407553 +2407554 +2407555 +2407556 +2411231 +2411232 +2411233 +2411234 +2411235 +2411236 +2411237 +2411238 +2411239 +2411240 +2411241 +2411242 +2411243 +2411244 +2411245 +2411246 +2411247 +2411248 +2411249 +2411250 +2411251 +2411252 +2411253 +2411254 +2411255 +2411256 +2411257 +2411258 +2411259 +2411260 +2411261 +2411262 +2411263 +2411264 +2411265 +2411266 +2411267 +2411268 +2411269 +2411270 +2411271 +2411272 +2411273 +2411274 +2411275 +2411276 +2411277 +2411278 +2411279 +2411280 +2411281 +2411282 +2411283 +2411284 +2411285 +2411286 +2411287 +2411288 +2411289 +2411290 +2411291 +2411292 +2411293 +2411294 +2411295 +2411296 +2411297 +2411298 +2411299 +2411300 +2411301 +2411302 +2411303 +2411304 +2411305 +2411306 +2411307 +2411308 +2411309 +2411310 +2411311 +2411312 +2411313 +2411314 +2411315 +2411316 +2411317 +2411318 +2411319 +2411320 +2411321 +2411322 +2411323 +2411324 +2411325 +2411326 +2411327 +2411328 +2411329 +2411330 +2411331 +2411332 +2411333 +2411334 +2411335 +2411336 +2411337 +2411338 +2411339 +2411340 +2411341 +2411342 +2411343 +2411344 +2411345 +2411346 +2411347 +2411348 +2411349 +2411350 +2411351 +2411352 +2411353 +2411354 +2411355 +2411356 +2411357 +2411358 +2411359 +2411360 +2411361 +2411362 +2411363 +2411364 +2411365 +2411366 +2411367 +2411368 +2411369 +2411370 +2411371 +2411372 +2411373 +2411374 +2411375 +2411376 +2411377 +2411378 +2411379 +2411380 +2411381 +2411382 +2411383 +2411384 +2411385 +2411386 +2411387 +2411388 +2411389 +2411390 +2411391 +2411392 +2411393 +2411394 +2411395 +2411396 +2411397 +2411398 +2411399 +2411400 +2411401 +2411402 +2411403 +2411404 +2411405 +2411406 +2411407 +2411408 +2411409 +2411410 +2411411 +2411412 +2411413 +2411414 +2411415 +2411416 +2411417 +2411418 +2411419 +2411420 +2411421 +2411422 +2411423 +2411424 +2411425 +2411426 +2411427 +2411428 +2411429 +2411430 +2411431 +2411432 +2411433 +2411434 +2411435 +2411436 +2411437 +2411438 +2411439 +2411440 +2411441 +2411442 +2411443 +2411444 +2411445 +2411446 +2411447 +2411448 +2411449 +2411450 +2411451 +2411452 +2411453 +2411454 +2411455 +2411456 +2411457 +2411458 +2411459 +2411460 +2411461 +2411462 +2411463 +2411464 +2411465 +2411466 +2411467 +2411468 +2411469 +2411470 +2411471 +2411472 +2411473 +2411474 +2411475 +2411476 +2411477 +2411478 +2411479 +2411480 +2411481 +2411482 +2411483 +2411484 +2411485 +2411486 +2411487 +2411488 +2411489 +2411490 +2411491 +2411492 +2411493 +2411494 +2411495 +2411496 +2411497 +2411498 +2411499 +2411500 +2411501 +2411502 +2411503 +2411504 +2411505 +2411506 +2411507 +2411508 +2411509 +2411510 +2411511 +2411512 +2411513 +2411514 +2411515 +2411516 +2411517 +2411518 +2411519 +2411520 +2411521 +2411522 +2411523 +2411524 +2411525 +2411526 +2411527 +2411528 +2411529 +2411530 +2411531 +2411532 +2411533 +2411534 +2411535 +2411536 +2411537 +2411538 +2411539 +2411540 +2411541 +2411542 +2411543 +2411544 +2411545 +2411546 +2411547 +2411548 +2411549 +2411550 +2411551 +2411552 +2411553 +2411554 +2411555 +2411556 +2411557 +2411558 +2411559 +2411560 +2411561 +2411562 +2411563 +2411564 +2411565 +2411566 +2411567 +2411568 +2411569 +2411570 +2411571 +2411572 +2411573 +2411574 +2411575 +2411576 +2411577 +2411578 +2411579 +2411580 +2411581 +2411582 +2411583 +2411584 +2411585 +2411586 +2411587 +2411588 +2411589 +2411590 +2411591 +2411592 +2411593 +2411594 +2411595 +2411596 +2411597 +2411598 +2411599 +2411600 +2411601 +2411602 +2411603 +2411604 +2411605 +2411606 +2411607 +2411608 +2411609 +2411610 +2411611 +2411612 +2411613 +2411614 +2411615 +2411616 +2411617 +2411618 +2411619 +2411620 +2411621 +2411622 +2411623 +2411624 +2411625 +2411626 +2411627 +2411628 +2411629 +2411630 +2411631 +2411632 +2411633 +2411634 +2411635 +2411636 +2411637 +2411638 +2411639 +2411640 +2411641 +2411642 +2411643 +2411644 +2411645 +2411646 +2411647 +2411648 +2411649 +2411650 +2411651 +2411652 +2411653 +2411654 +2411655 +2411656 +2411657 +2411658 +2411659 +2411660 +2411661 +2411662 +2411663 +2411664 +2411665 +2411666 +2411683 +2411684 +2411685 +2411686 +2411687 +2411688 +2411689 +2411690 +2411691 +2411692 +2411693 +2411694 +2411695 +2411696 +2411697 +2411698 +2411699 +2411700 +2411701 +2411702 +2411703 +2411704 +2411705 +2411706 +2411707 +2411708 +2411709 +2411710 +2411711 +2411712 +2411713 +2411714 +2411715 +2411716 +2411717 +2411718 +2411719 +2411720 +2411721 +2411722 +2411723 +2411724 +2411725 +2411726 +2411727 +2411728 +2411729 +2411730 +2411731 +2411801 +2411802 +2411803 +2411804 +2411805 +2411806 +2411807 +2411808 +2411809 +2411810 +2411811 +2411812 +2411813 +2411814 +2411815 +2411816 +2411817 +2411818 +2411819 +2411820 +2411821 +2411822 +2411823 +2411824 +2411825 +2411826 +2411827 +2411828 +2411829 +2411830 +2411831 +2411832 +2411833 +2411834 +2411835 +2411836 +2411837 +2411838 +2411839 +2411840 +2411841 +2411842 +2411843 +2411844 +2411845 +2411846 +2411847 +2411848 +2411849 +2411850 +2411851 +2411852 +2411853 +2411854 +2411855 +2411856 +2411857 +2411858 +2411859 +2411860 +2411861 +2411862 +2411863 +2411864 +2411865 +2411866 +2411867 +2411868 +2411869 +2411870 +2411871 +2411872 +2411873 +2411874 +2411875 +2411876 +2415548 +2415549 +2415550 +2415551 +2415552 +2415553 +2415554 +2415555 +2415556 +2415557 +2415558 +2415559 +2415560 +2415561 +2415562 +2415563 +2415564 +2415565 +2415566 +2415567 +2415568 +2415569 +2415570 +2415571 +2415572 +2415573 +2415574 +2415575 +2415576 +2415577 +2415578 +2415579 +2415580 +2415581 +2415582 +2415583 +2415584 +2415585 +2415586 +2415587 +2415588 +2415589 +2415590 +2415591 +2415592 +2415593 +2415594 +2415595 +2415596 +2415597 +2415598 +2415599 +2415600 +2415601 +2415602 +2415603 +2415604 +2415605 +2415606 +2415607 +2415608 +2415609 +2415610 +2415611 +2415612 +2415613 +2415614 +2415615 +2415616 +2415617 +2415618 +2415619 +2415620 +2415621 +2415622 +2415623 +2415624 +2415625 +2415626 +2415627 +2415628 +2415629 +2415630 +2415631 +2415633 +2415634 +2415635 +2415636 +2415637 +2415638 +2415639 +2415640 +2415641 +2415642 +2415643 +2415644 +2415645 +2415646 +2415647 +2415648 +2415649 +2415650 +2415651 +2415652 +2415653 +2415654 +2415655 +2415656 +2415657 +2415658 +2415659 +2415660 +2415661 +2415662 +2415663 +2415664 +2415665 +2415666 +2415667 +2415668 +2415669 +2415670 +2415671 +2415672 +2415673 +2415674 +2415675 +2415676 +2415677 +2415678 +2415679 +2415680 +2415681 +2415682 +2415683 +2415684 +2415685 +2415686 +2415687 +2415688 +2415689 +2415690 +2415691 +2415692 +2415693 +2415694 +2415695 +2415696 +2415697 +2415698 +2415699 +2415700 +2415701 +2415702 +2415703 +2415704 +2415705 +2415706 +2415707 +2415708 +2415709 +2415710 +2415711 +2415712 +2415713 +2415714 +2415715 +2415716 +2415717 +2415718 +2415719 +2415720 +2415721 +2415722 +2415723 +2415724 +2415725 +2415726 +2415727 +2415728 +2415729 +2415730 +2415731 +2415732 +2415733 +2415734 +2415735 +2415736 +2415737 +2415738 +2415739 +2415740 +2415741 +2415742 +2415743 +2415744 +2415745 +2415746 +2415747 +2415748 +2415749 +2415750 +2415751 +2415752 +2415753 +2415754 +2415755 +2415756 +2415757 +2415758 +2415759 +2415760 +2415761 +2415762 +2415763 +2415764 +2415765 +2415766 +2415767 +2415768 +2415769 +2415770 +2415771 +2415772 +2415773 +2415774 +2415775 +2415776 +2415777 +2415778 +2415779 +2415780 +2415781 +2415782 +2415783 +2415784 +2415785 +2415786 +2415787 +2415788 +2415789 +2415790 +2415791 +2415792 +2415793 +2415794 +2415795 +2415796 +2415797 +2415798 +2415799 +2415800 +2415801 +2415802 +2415803 +2415804 +2415805 +2415806 +2415807 +2415808 +2415809 +2415810 +2415811 +2415812 +2415813 +2415814 +2415815 +2415816 +2415817 +2415818 +2415819 +2415820 +2415821 +2415822 +2415823 +2415824 +2415825 +2415826 +2415827 +2415828 +2415829 +2415830 +2415831 +2415832 +2415833 +2415834 +2415835 +2415836 +2415837 +2415838 +2415839 +2415840 +2415841 +2415842 +2415843 +2415844 +2415845 +2415846 +2415847 +2415848 +2415849 +2415850 +2415851 +2415852 +2415853 +2415854 +2415855 +2415856 +2415857 +2415858 +2415859 +2415860 +2415861 +2415862 +2415863 +2415864 +2415865 +2415866 +2415867 +2415868 +2415869 +2415870 +2415871 +2415872 +2415873 +2415874 +2415875 +2415876 +2415877 +2415878 +2415879 +2415880 +2415881 +2415882 +2415883 +2415884 +2415885 +2415886 +2415887 +2415888 +2415889 +2415890 +2415891 +2415892 +2415893 +2415894 +2415895 +2415896 +2415897 +2415898 +2415899 +2415900 +2415901 +2415902 +2415903 +2415904 +2415905 +2415906 +2415907 +2415908 +2415909 +2415910 +2415911 +2415912 +2415913 +2415914 +2415915 +2415916 +2415917 +2415918 +2415919 +2415920 +2415921 +2415922 +2415923 +2415924 +2415925 +2415926 +2415927 +2415928 +2415929 +2415930 +2415931 +2415932 +2415933 +2415934 +2415935 +2415936 +2415937 +2415938 +2415939 +2415940 +2415941 +2415942 +2415943 +2415944 +2415945 +2415946 +2415947 +2415948 +2415949 +2415950 +2415951 +2415952 +2415953 +2415954 +2415955 +2415956 +2415957 +2415958 +2415959 +2415960 +2415961 +2415962 +2415963 +2415964 +2415965 +2415966 +2415967 +2415968 +2415969 +2415970 +2415971 +2415972 +2415973 +2415974 +2415975 +2415976 +2415977 +2415978 +2415979 +2415980 +2415981 +2415982 +2415983 +2415984 +2415985 +2415986 +2416003 +2416004 +2416005 +2416006 +2416007 +2416008 +2416009 +2416010 +2416011 +2416012 +2416013 +2416014 +2416015 +2416016 +2416017 +2416018 +2416019 +2416020 +2416021 +2416022 +2416023 +2416024 +2416025 +2416026 +2416027 +2416028 +2416029 +2416030 +2416031 +2416032 +2416033 +2416034 +2416035 +2416036 +2416037 +2416038 +2416039 +2416040 +2416041 +2416042 +2416043 +2416044 +2416045 +2416046 +2416047 +2416048 +2416049 +2416050 +2416051 +2416096 +2416097 +2416098 +2416099 +2416100 +2416101 +2416102 +2416103 +2416104 +2416105 +2416106 +2416107 +2416120 +2416121 +2416122 +2416123 +2416124 +2416125 +2416126 +2416127 +2416128 +2416129 +2416130 +2416131 +2416132 +2416133 +2416134 +2416135 +2416136 +2416137 +2416138 +2416139 +2416140 +2416141 +2416142 +2416143 +2416144 +2416145 +2416146 +2416147 +2416148 +2416149 +2416150 +2416151 +2416152 +2416153 +2416154 +2416155 +2416156 +2416157 +2416158 +2416159 +2416160 +2416161 +2416162 +2416163 +2416164 +2416165 +2416166 +2416167 +2416168 +2416169 +2416170 +2416171 +2416172 +2416173 +2416174 +2416175 +2416176 +2416177 +2416178 +2416179 +2416180 +2416181 +2416182 +2416183 +2416184 +2416185 +2416186 +2416187 +2416188 +2416189 +2416190 +2416191 +2416192 +2416193 +2416194 +2416195 +2416196 +2419868 +2419869 +2419870 +2419871 +2419872 +2419873 +2419874 +2419875 +2419876 +2419877 +2419878 +2419879 +2419880 +2419881 +2419882 +2419883 +2419884 +2419885 +2419886 +2419887 +2419888 +2419889 +2419890 +2419891 +2419892 +2419893 +2419894 +2419895 +2419896 +2419897 +2419898 +2419899 +2419900 +2419901 +2419902 +2419903 +2419904 +2419905 +2419906 +2419907 +2419908 +2419909 +2419910 +2419911 +2419912 +2419913 +2419914 +2419915 +2419916 +2419917 +2419918 +2419919 +2419920 +2419921 +2419922 +2419923 +2419924 +2419925 +2419926 +2419927 +2419928 +2419929 +2419930 +2419931 +2419932 +2419933 +2419934 +2419935 +2419936 +2419937 +2419938 +2419939 +2419940 +2419941 +2419942 +2419943 +2419944 +2419945 +2419946 +2419947 +2419948 +2419949 +2419950 +2419951 +2419952 +2419953 +2419954 +2419955 +2419956 +2419957 +2419958 +2419959 +2419960 +2419961 +2419962 +2419963 +2419964 +2419965 +2419966 +2419967 +2419968 +2419969 +2419970 +2419971 +2419972 +2419973 +2419974 +2419975 +2419976 +2419977 +2419978 +2419979 +2419980 +2419981 +2419982 +2419983 +2419984 +2419985 +2419986 +2419987 +2419988 +2419989 +2419990 +2419991 +2419992 +2419993 +2419994 +2419995 +2419996 +2419997 +2419998 +2419999 +2420000 +2420001 +2420002 +2420003 +2420004 +2420005 +2420006 +2420007 +2420008 +2420009 +2420010 +2420011 +2420012 +2420013 +2420014 +2420015 +2420016 +2420017 +2420018 +2420019 +2420020 +2420021 +2420022 +2420023 +2420024 +2420025 +2420026 +2420027 +2420028 +2420029 +2420030 +2420031 +2420032 +2420033 +2420034 +2420035 +2420036 +2420037 +2420038 +2420039 +2420040 +2420041 +2420042 +2420043 +2420044 +2420045 +2420046 +2420047 +2420048 +2420049 +2420050 +2420051 +2420052 +2420053 +2420054 +2420055 +2420056 +2420057 +2420058 +2420059 +2420060 +2420061 +2420062 +2420063 +2420064 +2420065 +2420066 +2420067 +2420068 +2420069 +2420070 +2420071 +2420072 +2420073 +2420074 +2420075 +2420076 +2420077 +2420078 +2420079 +2420080 +2420081 +2420082 +2420083 +2420084 +2420085 +2420086 +2420087 +2420088 +2420089 +2420090 +2420091 +2420092 +2420093 +2420094 +2420095 +2420096 +2420097 +2420098 +2420099 +2420100 +2420101 +2420102 +2420103 +2420104 +2420105 +2420106 +2420107 +2420108 +2420109 +2420110 +2420111 +2420112 +2420113 +2420114 +2420115 +2420116 +2420117 +2420118 +2420119 +2420120 +2420121 +2420122 +2420123 +2420124 +2420125 +2420126 +2420127 +2420128 +2420129 +2420130 +2420131 +2420132 +2420133 +2420134 +2420135 +2420136 +2420137 +2420138 +2420139 +2420140 +2420141 +2420142 +2420143 +2420144 +2420145 +2420146 +2420147 +2420148 +2420149 +2420150 +2420151 +2420152 +2420153 +2420154 +2420155 +2420156 +2420157 +2420158 +2420159 +2420160 +2420161 +2420162 +2420163 +2420164 +2420165 +2420166 +2420167 +2420168 +2420169 +2420170 +2420171 +2420172 +2420173 +2420174 +2420175 +2420176 +2420177 +2420178 +2420179 +2420180 +2420181 +2420182 +2420183 +2420184 +2420185 +2420186 +2420187 +2420188 +2420189 +2420190 +2420191 +2420192 +2420193 +2420194 +2420195 +2420196 +2420197 +2420198 +2420199 +2420200 +2420201 +2420202 +2420203 +2420204 +2420205 +2420206 +2420207 +2420208 +2420209 +2420210 +2420211 +2420212 +2420213 +2420214 +2420215 +2420216 +2420217 +2420218 +2420219 +2420220 +2420221 +2420222 +2420223 +2420224 +2420225 +2420226 +2420227 +2420228 +2420229 +2420230 +2420231 +2420232 +2420233 +2420234 +2420235 +2420236 +2420237 +2420238 +2420239 +2420240 +2420241 +2420242 +2420243 +2420244 +2420245 +2420246 +2420247 +2420248 +2420249 +2420250 +2420251 +2420252 +2420253 +2420254 +2420255 +2420256 +2420257 +2420258 +2420259 +2420260 +2420261 +2420262 +2420263 +2420264 +2420265 +2420266 +2420267 +2420268 +2420269 +2420270 +2420271 +2420272 +2420273 +2420274 +2420275 +2420276 +2420277 +2420278 +2420279 +2420280 +2420281 +2420282 +2420283 +2420284 +2420285 +2420286 +2420287 +2420288 +2420289 +2420290 +2420291 +2420292 +2420293 +2420294 +2420295 +2420296 +2420297 +2420298 +2420299 +2420300 +2420301 +2420302 +2420303 +2420304 +2420305 +2420324 +2420325 +2420326 +2420327 +2420328 +2420329 +2420330 +2420331 +2420332 +2420333 +2420334 +2420335 +2420336 +2420337 +2420338 +2420339 +2420340 +2420341 +2420342 +2420343 +2420344 +2420345 +2420346 +2420347 +2420348 +2420349 +2420350 +2420351 +2420352 +2420353 +2420354 +2420355 +2420356 +2420357 +2420358 +2420359 +2420360 +2420361 +2420362 +2420363 +2420364 +2420365 +2420366 +2420367 +2420368 +2420369 +2420370 +2420371 +2420414 +2420415 +2420416 +2420417 +2420418 +2420419 +2420420 +2420421 +2420422 +2420423 +2420424 +2420425 +2420426 +2420427 +2420428 +2420429 +2420431 +2420432 +2420433 +2420434 +2420435 +2420436 +2420437 +2420438 +2420439 +2420440 +2420441 +2420442 +2420443 +2420444 +2420445 +2420446 +2420447 +2420448 +2420449 +2420450 +2420451 +2420452 +2420453 +2420454 +2420455 +2420456 +2420457 +2420458 +2420459 +2420460 +2420461 +2420462 +2420463 +2420464 +2420465 +2420466 +2420467 +2420468 +2420469 +2420470 +2420471 +2420472 +2420473 +2420474 +2420475 +2420476 +2420477 +2420478 +2420479 +2420480 +2420481 +2420482 +2420483 +2420484 +2420485 +2420486 +2420487 +2420488 +2420489 +2420490 +2420491 +2420492 +2420493 +2420494 +2420495 +2420496 +2420497 +2420498 +2420499 +2420500 +2420501 +2420502 +2420503 +2420504 +2420505 +2420506 +2420507 +2420508 +2420509 +2420510 +2420511 +2420512 +2420513 +2424188 +2424189 +2424190 +2424191 +2424192 +2424193 +2424194 +2424195 +2424196 +2424197 +2424198 +2424199 +2424200 +2424201 +2424202 +2424203 +2424204 +2424205 +2424206 +2424207 +2424208 +2424209 +2424210 +2424211 +2424212 +2424213 +2424214 +2424215 +2424216 +2424217 +2424218 +2424219 +2424220 +2424221 +2424222 +2424223 +2424224 +2424225 +2424226 +2424227 +2424228 +2424229 +2424230 +2424231 +2424232 +2424233 +2424234 +2424235 +2424236 +2424237 +2424238 +2424239 +2424240 +2424241 +2424242 +2424243 +2424244 +2424245 +2424246 +2424247 +2424248 +2424249 +2424252 +2424253 +2424254 +2424255 +2424256 +2424257 +2424258 +2424259 +2424260 +2424261 +2424262 +2424263 +2424264 +2424265 +2424266 +2424267 +2424268 +2424269 +2424270 +2424271 +2424272 +2424273 +2424274 +2424275 +2424276 +2424277 +2424278 +2424279 +2424280 +2424281 +2424282 +2424283 +2424284 +2424285 +2424286 +2424287 +2424288 +2424289 +2424290 +2424291 +2424292 +2424293 +2424294 +2424295 +2424296 +2424297 +2424298 +2424299 +2424300 +2424301 +2424302 +2424303 +2424304 +2424305 +2424306 +2424307 +2424308 +2424309 +2424310 +2424311 +2424312 +2424313 +2424314 +2424315 +2424316 +2424317 +2424318 +2424319 +2424320 +2424321 +2424322 +2424323 +2424324 +2424325 +2424326 +2424327 +2424328 +2424329 +2424330 +2424331 +2424332 +2424333 +2424334 +2424335 +2424336 +2424337 +2424338 +2424339 +2424340 +2424341 +2424342 +2424343 +2424344 +2424345 +2424346 +2424347 +2424348 +2424349 +2424350 +2424351 +2424352 +2424353 +2424354 +2424355 +2424356 +2424357 +2424358 +2424359 +2424360 +2424361 +2424362 +2424363 +2424364 +2424365 +2424366 +2424367 +2424368 +2424369 +2424370 +2424371 +2424372 +2424373 +2424374 +2424375 +2424376 +2424377 +2424378 +2424379 +2424380 +2424381 +2424382 +2424383 +2424384 +2424385 +2424386 +2424387 +2424388 +2424389 +2424390 +2424391 +2424392 +2424393 +2424394 +2424395 +2424396 +2424397 +2424398 +2424399 +2424400 +2424401 +2424402 +2424403 +2424404 +2424405 +2424406 +2424407 +2424408 +2424409 +2424410 +2424411 +2424412 +2424413 +2424414 +2424415 +2424416 +2424417 +2424418 +2424419 +2424420 +2424421 +2424422 +2424423 +2424424 +2424425 +2424426 +2424427 +2424428 +2424429 +2424430 +2424431 +2424432 +2424433 +2424434 +2424435 +2424436 +2424437 +2424438 +2424439 +2424440 +2424441 +2424442 +2424443 +2424444 +2424445 +2424446 +2424447 +2424448 +2424449 +2424450 +2424451 +2424452 +2424453 +2424454 +2424455 +2424456 +2424457 +2424458 +2424459 +2424460 +2424461 +2424462 +2424463 +2424464 +2424465 +2424466 +2424467 +2424468 +2424469 +2424470 +2424471 +2424472 +2424473 +2424474 +2424475 +2424476 +2424477 +2424478 +2424479 +2424480 +2424481 +2424482 +2424483 +2424484 +2424485 +2424486 +2424487 +2424488 +2424489 +2424490 +2424491 +2424492 +2424493 +2424494 +2424495 +2424496 +2424497 +2424498 +2424499 +2424500 +2424501 +2424502 +2424503 +2424504 +2424505 +2424506 +2424507 +2424508 +2424509 +2424510 +2424511 +2424512 +2424513 +2424514 +2424515 +2424516 +2424517 +2424518 +2424519 +2424520 +2424521 +2424522 +2424523 +2424524 +2424525 +2424526 +2424527 +2424528 +2424529 +2424530 +2424531 +2424532 +2424533 +2424534 +2424535 +2424536 +2424537 +2424538 +2424539 +2424540 +2424541 +2424542 +2424543 +2424544 +2424545 +2424546 +2424547 +2424548 +2424549 +2424550 +2424551 +2424552 +2424553 +2424554 +2424555 +2424556 +2424557 +2424558 +2424559 +2424560 +2424561 +2424562 +2424563 +2424564 +2424565 +2424566 +2424567 +2424568 +2424569 +2424570 +2424571 +2424572 +2424573 +2424574 +2424575 +2424576 +2424577 +2424578 +2424579 +2424580 +2424581 +2424582 +2424583 +2424584 +2424585 +2424586 +2424587 +2424588 +2424589 +2424590 +2424591 +2424592 +2424593 +2424594 +2424595 +2424596 +2424597 +2424598 +2424599 +2424600 +2424601 +2424602 +2424603 +2424604 +2424605 +2424606 +2424607 +2424608 +2424609 +2424610 +2424611 +2424612 +2424613 +2424614 +2424615 +2424616 +2424617 +2424618 +2424619 +2424620 +2424621 +2424622 +2424623 +2424624 +2424625 +2424644 +2424645 +2424646 +2424647 +2424648 +2424649 +2424650 +2424651 +2424652 +2424653 +2424654 +2424655 +2424656 +2424657 +2424658 +2424659 +2424660 +2424661 +2424662 +2424663 +2424664 +2424665 +2424666 +2424667 +2424668 +2424669 +2424670 +2424671 +2424672 +2424673 +2424674 +2424675 +2424676 +2424677 +2424678 +2424679 +2424680 +2424681 +2424682 +2424683 +2424684 +2424685 +2424686 +2424687 +2424688 +2424689 +2424690 +2424691 +2424734 +2424735 +2424736 +2424737 +2424738 +2424739 +2424740 +2424741 +2424742 +2424743 +2424744 +2424745 +2424746 +2424747 +2424748 +2424749 +2424750 +2424751 +2424752 +2424753 +2424754 +2424755 +2424756 +2424757 +2424758 +2424759 +2424760 +2424761 +2424762 +2424763 +2424764 +2424765 +2424766 +2424767 +2424772 +2424773 +2424774 +2424775 +2424776 +2424777 +2424778 +2424779 +2424780 +2424781 +2424782 +2424783 +2424784 +2424785 +2424786 +2424787 +2424788 +2424789 +2424790 +2424791 +2424792 +2424793 +2424794 +2424795 +2424796 +2424797 +2424798 +2424799 +2424800 +2424801 +2424802 +2424803 +2424804 +2424805 +2424806 +2424807 +2424808 +2424809 +2424810 +2424811 +2424812 +2424813 +2424814 +2424815 +2424816 +2424817 +2424818 +2424819 +2424820 +2424821 +2424822 +2424823 +2424824 +2424825 +2424826 +2424827 +2424828 +2424829 +2424830 +2424831 +2424832 +2424833 +2428508 +2428509 +2428510 +2428511 +2428512 +2428513 +2428514 +2428515 +2428516 +2428517 +2428518 +2428519 +2428520 +2428521 +2428522 +2428523 +2428524 +2428525 +2428526 +2428527 +2428528 +2428529 +2428530 +2428531 +2428532 +2428533 +2428534 +2428535 +2428536 +2428537 +2428538 +2428539 +2428540 +2428541 +2428542 +2428543 +2428544 +2428545 +2428546 +2428547 +2428548 +2428549 +2428550 +2428551 +2428552 +2428553 +2428554 +2428555 +2428556 +2428557 +2428558 +2428559 +2428560 +2428561 +2428562 +2428563 +2428564 +2428565 +2428566 +2428567 +2428568 +2428569 +2428570 +2428571 +2428572 +2428573 +2428574 +2428575 +2428576 +2428577 +2428578 +2428579 +2428580 +2428581 +2428582 +2428583 +2428584 +2428585 +2428586 +2428587 +2428588 +2428589 +2428590 +2428591 +2428592 +2428593 +2428594 +2428595 +2428596 +2428597 +2428598 +2428599 +2428600 +2428601 +2428602 +2428603 +2428604 +2428605 +2428606 +2428607 +2428608 +2428609 +2428610 +2428611 +2428612 +2428613 +2428614 +2428615 +2428616 +2428617 +2428618 +2428619 +2428620 +2428621 +2428622 +2428623 +2428624 +2428625 +2428626 +2428627 +2428628 +2428629 +2428630 +2428631 +2428632 +2428633 +2428634 +2428635 +2428636 +2428637 +2428638 +2428639 +2428640 +2428641 +2428642 +2428643 +2428644 +2428645 +2428646 +2428647 +2428648 +2428649 +2428650 +2428651 +2428652 +2428653 +2428654 +2428655 +2428656 +2428657 +2428658 +2428659 +2428660 +2428661 +2428662 +2428663 +2428664 +2428665 +2428666 +2428667 +2428668 +2428669 +2428670 +2428671 +2428672 +2428673 +2428674 +2428675 +2428676 +2428677 +2428678 +2428679 +2428680 +2428681 +2428682 +2428683 +2428684 +2428685 +2428686 +2428687 +2428688 +2428689 +2428690 +2428691 +2428692 +2428693 +2428694 +2428695 +2428696 +2428697 +2428698 +2428699 +2428700 +2428701 +2428702 +2428703 +2428704 +2428705 +2428706 +2428707 +2428708 +2428709 +2428710 +2428711 +2428712 +2428713 +2428714 +2428715 +2428716 +2428717 +2428718 +2428719 +2428720 +2428721 +2428722 +2428723 +2428724 +2428725 +2428726 +2428727 +2428728 +2428729 +2428730 +2428731 +2428732 +2428733 +2428734 +2428735 +2428736 +2428737 +2428738 +2428739 +2428740 +2428741 +2428742 +2428743 +2428744 +2428745 +2428746 +2428747 +2428748 +2428749 +2428750 +2428751 +2428752 +2428753 +2428754 +2428755 +2428756 +2428757 +2428758 +2428759 +2428760 +2428761 +2428762 +2428763 +2428764 +2428765 +2428766 +2428767 +2428768 +2428769 +2428770 +2428771 +2428772 +2428773 +2428774 +2428775 +2428776 +2428777 +2428778 +2428779 +2428780 +2428781 +2428782 +2428783 +2428784 +2428785 +2428786 +2428787 +2428788 +2428789 +2428790 +2428791 +2428792 +2428793 +2428794 +2428795 +2428796 +2428797 +2428798 +2428799 +2428800 +2428801 +2428802 +2428803 +2428804 +2428805 +2428806 +2428807 +2428808 +2428809 +2428810 +2428811 +2428812 +2428813 +2428814 +2428815 +2428816 +2428817 +2428818 +2428819 +2428820 +2428821 +2428822 +2428823 +2428824 +2428825 +2428826 +2428827 +2428828 +2428829 +2428830 +2428831 +2428832 +2428833 +2428834 +2428835 +2428836 +2428837 +2428838 +2428839 +2428840 +2428841 +2428842 +2428843 +2428844 +2428845 +2428846 +2428847 +2428848 +2428849 +2428850 +2428851 +2428852 +2428853 +2428854 +2428855 +2428856 +2428857 +2428858 +2428859 +2428860 +2428861 +2428862 +2428863 +2428864 +2428865 +2428866 +2428867 +2428868 +2428869 +2428870 +2428871 +2428872 +2428873 +2428874 +2428875 +2428876 +2428877 +2428878 +2428879 +2428880 +2428881 +2428882 +2428883 +2428884 +2428885 +2428886 +2428887 +2428888 +2428889 +2428890 +2428891 +2428892 +2428893 +2428894 +2428895 +2428896 +2428897 +2428898 +2428899 +2428900 +2428901 +2428902 +2428903 +2428904 +2428905 +2428906 +2428907 +2428908 +2428909 +2428910 +2428911 +2428912 +2428913 +2428914 +2428915 +2428916 +2428917 +2428918 +2428919 +2428920 +2428921 +2428922 +2428923 +2428924 +2428925 +2428926 +2428927 +2428928 +2428929 +2428930 +2428931 +2428932 +2428933 +2428934 +2428935 +2428936 +2428937 +2428938 +2428939 +2428940 +2428941 +2428942 +2428943 +2428944 +2428945 +2428965 +2428966 +2428967 +2428968 +2428969 +2428970 +2428971 +2428972 +2428973 +2428974 +2428975 +2428976 +2428977 +2428978 +2428979 +2428980 +2428981 +2428982 +2428983 +2428984 +2428985 +2428986 +2428987 +2428988 +2428989 +2428990 +2428991 +2428992 +2428993 +2428994 +2428995 +2428996 +2428997 +2428998 +2428999 +2429000 +2429001 +2429002 +2429003 +2429004 +2429005 +2429006 +2429007 +2429008 +2429009 +2429010 +2429011 +2429054 +2429055 +2429056 +2429057 +2429058 +2429059 +2429060 +2429061 +2429062 +2429063 +2429064 +2429065 +2429066 +2429067 +2429068 +2429069 +2429070 +2429071 +2429072 +2429073 +2429074 +2429075 +2429076 +2429077 +2429078 +2429079 +2429080 +2429081 +2429082 +2429083 +2429084 +2429085 +2429086 +2429087 +2429088 +2429089 +2429090 +2429091 +2429092 +2429093 +2429094 +2429095 +2429096 +2429097 +2429098 +2429099 +2429100 +2429101 +2429102 +2429103 +2429104 +2429105 +2429106 +2429107 +2429108 +2429109 +2429111 +2429112 +2429113 +2429114 +2429115 +2429116 +2429117 +2429118 +2429119 +2429120 +2429121 +2429122 +2429123 +2429124 +2429125 +2429126 +2429127 +2429128 +2429129 +2429130 +2429131 +2429132 +2429133 +2429134 +2429135 +2429136 +2429137 +2429138 +2429139 +2429140 +2429141 +2429142 +2429143 +2429144 +2429145 +2429146 +2429147 +2429148 +2429149 +2429150 +2429151 +2429152 +2429153 +2432828 +2432829 +2432830 +2432831 +2432832 +2432833 +2432834 +2432835 +2432836 +2432837 +2432838 +2432839 +2432840 +2432841 +2432842 +2432843 +2432844 +2432845 +2432846 +2432847 +2432848 +2432849 +2432850 +2432851 +2432852 +2432853 +2432854 +2432855 +2432856 +2432857 +2432858 +2432859 +2432860 +2432861 +2432862 +2432863 +2432864 +2432865 +2432866 +2432867 +2432868 +2432869 +2432870 +2432871 +2432872 +2432873 +2432874 +2432875 +2432876 +2432877 +2432878 +2432879 +2432880 +2432881 +2432882 +2432883 +2432884 +2432885 +2432886 +2432887 +2432888 +2432889 +2432890 +2432891 +2432892 +2432893 +2432894 +2432895 +2432896 +2432897 +2432898 +2432899 +2432900 +2432901 +2432902 +2432903 +2432904 +2432905 +2432906 +2432907 +2432908 +2432909 +2432910 +2432911 +2432912 +2432913 +2432914 +2432915 +2432916 +2432917 +2432918 +2432919 +2432920 +2432921 +2432922 +2432923 +2432924 +2432925 +2432926 +2432927 +2432928 +2432929 +2432930 +2432931 +2432932 +2432933 +2432934 +2432935 +2432936 +2432937 +2432938 +2432939 +2432940 +2432941 +2432942 +2432943 +2432944 +2432945 +2432946 +2432947 +2432948 +2432949 +2432950 +2432951 +2432952 +2432953 +2432954 +2432955 +2432956 +2432957 +2432958 +2432959 +2432960 +2432961 +2432962 +2432963 +2432964 +2432965 +2432966 +2432967 +2432968 +2432969 +2432970 +2432971 +2432972 +2432973 +2432974 +2432975 +2432976 +2432977 +2432978 +2432979 +2432980 +2432981 +2432982 +2432983 +2432984 +2432985 +2432986 +2432987 +2432988 +2432989 +2432990 +2432991 +2432992 +2432993 +2432994 +2432995 +2432996 +2432997 +2432998 +2432999 +2433000 +2433001 +2433002 +2433003 +2433004 +2433005 +2433006 +2433007 +2433008 +2433009 +2433010 +2433011 +2433012 +2433013 +2433014 +2433015 +2433016 +2433017 +2433018 +2433019 +2433020 +2433021 +2433022 +2433023 +2433024 +2433025 +2433026 +2433027 +2433028 +2433029 +2433030 +2433031 +2433032 +2433033 +2433034 +2433035 +2433036 +2433037 +2433038 +2433039 +2433040 +2433041 +2433042 +2433043 +2433044 +2433045 +2433046 +2433047 +2433048 +2433049 +2433050 +2433051 +2433052 +2433053 +2433054 +2433055 +2433056 +2433057 +2433058 +2433059 +2433060 +2433061 +2433062 +2433063 +2433064 +2433065 +2433066 +2433067 +2433068 +2433069 +2433070 +2433071 +2433072 +2433073 +2433074 +2433075 +2433076 +2433077 +2433078 +2433079 +2433080 +2433081 +2433082 +2433083 +2433084 +2433085 +2433086 +2433087 +2433088 +2433089 +2433090 +2433091 +2433092 +2433093 +2433094 +2433095 +2433096 +2433097 +2433098 +2433099 +2433100 +2433101 +2433102 +2433103 +2433104 +2433105 +2433106 +2433107 +2433108 +2433109 +2433110 +2433111 +2433112 +2433113 +2433114 +2433115 +2433116 +2433117 +2433118 +2433119 +2433120 +2433121 +2433122 +2433123 +2433124 +2433125 +2433126 +2433127 +2433128 +2433129 +2433130 +2433131 +2433132 +2433133 +2433134 +2433135 +2433136 +2433137 +2433138 +2433139 +2433140 +2433141 +2433142 +2433143 +2433144 +2433145 +2433146 +2433147 +2433148 +2433149 +2433150 +2433151 +2433152 +2433153 +2433154 +2433155 +2433156 +2433157 +2433158 +2433159 +2433160 +2433161 +2433162 +2433163 +2433164 +2433165 +2433166 +2433167 +2433168 +2433169 +2433170 +2433171 +2433172 +2433173 +2433174 +2433175 +2433176 +2433177 +2433178 +2433179 +2433180 +2433181 +2433182 +2433183 +2433184 +2433185 +2433186 +2433187 +2433188 +2433189 +2433190 +2433191 +2433192 +2433193 +2433194 +2433195 +2433196 +2433197 +2433198 +2433199 +2433200 +2433201 +2433202 +2433203 +2433204 +2433205 +2433206 +2433207 +2433208 +2433209 +2433210 +2433211 +2433212 +2433213 +2433214 +2433215 +2433216 +2433217 +2433218 +2433219 +2433220 +2433221 +2433222 +2433223 +2433224 +2433225 +2433226 +2433227 +2433228 +2433229 +2433230 +2433231 +2433232 +2433233 +2433234 +2433235 +2433236 +2433237 +2433238 +2433239 +2433240 +2433241 +2433242 +2433243 +2433244 +2433245 +2433246 +2433247 +2433248 +2433249 +2433250 +2433251 +2433252 +2433253 +2433254 +2433255 +2433256 +2433257 +2433258 +2433259 +2433260 +2433261 +2433262 +2433263 +2433264 +2433265 +2433286 +2433287 +2433288 +2433289 +2433290 +2433291 +2433292 +2433293 +2433294 +2433295 +2433296 +2433297 +2433298 +2433299 +2433300 +2433301 +2433302 +2433303 +2433304 +2433305 +2433306 +2433307 +2433308 +2433309 +2433310 +2433311 +2433312 +2433313 +2433314 +2433315 +2433316 +2433317 +2433318 +2433319 +2433320 +2433321 +2433322 +2433323 +2433324 +2433325 +2433326 +2433327 +2433328 +2433329 +2433374 +2433375 +2433376 +2433377 +2433378 +2433379 +2433380 +2433381 +2433382 +2433383 +2433384 +2433385 +2433386 +2433387 +2433388 +2433389 +2433390 +2433391 +2433392 +2433393 +2433394 +2433395 +2433396 +2433397 +2433398 +2433399 +2433400 +2433401 +2433402 +2433403 +2433404 +2433405 +2433406 +2433407 +2433408 +2433409 +2433410 +2433411 +2433412 +2433413 +2433414 +2433415 +2433416 +2433417 +2433418 +2433419 +2433420 +2433421 +2433422 +2433423 +2433424 +2433425 +2433426 +2433427 +2433428 +2433429 +2433430 +2433431 +2433432 +2433433 +2433434 +2433435 +2433436 +2433437 +2433438 +2433439 +2433440 +2433441 +2433442 +2433443 +2433444 +2433445 +2433446 +2433447 +2433448 +2433449 +2433450 +2433451 +2433452 +2433453 +2433454 +2433455 +2433456 +2433457 +2433458 +2433459 +2433460 +2433461 +2433462 +2433463 +2433464 +2433465 +2433466 +2433467 +2433468 +2433469 +2433470 +2437148 +2437149 +2437150 +2437151 +2437152 +2437153 +2437154 +2437155 +2437156 +2437157 +2437158 +2437159 +2437160 +2437161 +2437162 +2437163 +2437164 +2437165 +2437166 +2437167 +2437168 +2437169 +2437170 +2437171 +2437172 +2437173 +2437174 +2437176 +2437177 +2437178 +2437179 +2437180 +2437181 +2437182 +2437183 +2437184 +2437185 +2437186 +2437187 +2437188 +2437189 +2437190 +2437191 +2437192 +2437193 +2437194 +2437195 +2437196 +2437197 +2437198 +2437199 +2437200 +2437201 +2437202 +2437203 +2437204 +2437205 +2437206 +2437207 +2437208 +2437209 +2437210 +2437211 +2437212 +2437213 +2437214 +2437215 +2437216 +2437217 +2437218 +2437219 +2437220 +2437221 +2437222 +2437223 +2437224 +2437225 +2437226 +2437227 +2437228 +2437229 +2437230 +2437231 +2437232 +2437233 +2437234 +2437235 +2437236 +2437237 +2437238 +2437239 +2437240 +2437241 +2437242 +2437243 +2437244 +2437245 +2437246 +2437247 +2437248 +2437249 +2437250 +2437251 +2437252 +2437253 +2437254 +2437255 +2437256 +2437257 +2437258 +2437259 +2437260 +2437261 +2437262 +2437263 +2437264 +2437265 +2437266 +2437267 +2437268 +2437269 +2437270 +2437271 +2437272 +2437273 +2437274 +2437275 +2437276 +2437277 +2437278 +2437279 +2437280 +2437281 +2437282 +2437283 +2437284 +2437285 +2437286 +2437289 +2437290 +2437291 +2437292 +2437293 +2437294 +2437295 +2437296 +2437297 +2437298 +2437299 +2437300 +2437301 +2437302 +2437303 +2437304 +2437305 +2437306 +2437307 +2437308 +2437309 +2437310 +2437311 +2437312 +2437313 +2437314 +2437315 +2437316 +2437317 +2437318 +2437319 +2437320 +2437321 +2437322 +2437323 +2437324 +2437325 +2437326 +2437327 +2437328 +2437329 +2437330 +2437331 +2437332 +2437333 +2437334 +2437335 +2437336 +2437337 +2437338 +2437339 +2437340 +2437341 +2437342 +2437343 +2437344 +2437345 +2437346 +2437347 +2437348 +2437349 +2437350 +2437351 +2437352 +2437353 +2437354 +2437355 +2437356 +2437357 +2437358 +2437359 +2437360 +2437361 +2437362 +2437363 +2437364 +2437365 +2437366 +2437367 +2437368 +2437369 +2437370 +2437371 +2437372 +2437373 +2437374 +2437375 +2437376 +2437377 +2437378 +2437379 +2437380 +2437381 +2437382 +2437383 +2437384 +2437385 +2437386 +2437387 +2437388 +2437389 +2437390 +2437391 +2437392 +2437393 +2437394 +2437395 +2437396 +2437397 +2437398 +2437399 +2437400 +2437401 +2437402 +2437403 +2437404 +2437405 +2437406 +2437407 +2437408 +2437409 +2437410 +2437411 +2437412 +2437413 +2437414 +2437415 +2437416 +2437417 +2437418 +2437419 +2437420 +2437421 +2437422 +2437423 +2437424 +2437425 +2437426 +2437427 +2437428 +2437429 +2437430 +2437431 +2437432 +2437433 +2437434 +2437435 +2437436 +2437437 +2437438 +2437439 +2437440 +2437441 +2437442 +2437443 +2437444 +2437445 +2437446 +2437447 +2437448 +2437449 +2437450 +2437451 +2437452 +2437453 +2437454 +2437455 +2437456 +2437457 +2437458 +2437459 +2437460 +2437461 +2437462 +2437463 +2437464 +2437465 +2437466 +2437467 +2437468 +2437469 +2437470 +2437471 +2437472 +2437473 +2437474 +2437475 +2437476 +2437477 +2437478 +2437479 +2437480 +2437481 +2437482 +2437483 +2437484 +2437485 +2437486 +2437487 +2437488 +2437489 +2437490 +2437491 +2437492 +2437493 +2437494 +2437495 +2437496 +2437497 +2437498 +2437499 +2437500 +2437501 +2437502 +2437503 +2437504 +2437505 +2437506 +2437507 +2437508 +2437509 +2437510 +2437511 +2437512 +2437513 +2437514 +2437515 +2437516 +2437517 +2437518 +2437519 +2437520 +2437521 +2437522 +2437523 +2437524 +2437525 +2437526 +2437527 +2437528 +2437529 +2437530 +2437531 +2437532 +2437533 +2437534 +2437535 +2437536 +2437537 +2437538 +2437539 +2437540 +2437541 +2437542 +2437543 +2437544 +2437545 +2437546 +2437547 +2437548 +2437549 +2437550 +2437551 +2437552 +2437553 +2437554 +2437555 +2437556 +2437557 +2437558 +2437559 +2437560 +2437561 +2437562 +2437563 +2437564 +2437565 +2437566 +2437567 +2437568 +2437569 +2437570 +2437571 +2437572 +2437573 +2437574 +2437575 +2437576 +2437577 +2437578 +2437579 +2437580 +2437581 +2437582 +2437583 +2437584 +2437585 +2437606 +2437607 +2437608 +2437609 +2437610 +2437611 +2437612 +2437613 +2437614 +2437615 +2437616 +2437617 +2437618 +2437619 +2437620 +2437621 +2437622 +2437623 +2437624 +2437625 +2437626 +2437627 +2437628 +2437629 +2437630 +2437631 +2437632 +2437633 +2437634 +2437635 +2437636 +2437637 +2437638 +2437639 +2437640 +2437641 +2437642 +2437643 +2437644 +2437645 +2437646 +2437647 +2437648 +2437649 +2437694 +2437695 +2437696 +2437697 +2437698 +2437699 +2437700 +2437701 +2437702 +2437703 +2437704 +2437705 +2437706 +2437707 +2437708 +2437709 +2437710 +2437711 +2437712 +2437713 +2437714 +2437715 +2437716 +2437717 +2437718 +2437719 +2437720 +2437721 +2437722 +2437723 +2437724 +2437725 +2437726 +2437727 +2437728 +2437729 +2437730 +2437731 +2437732 +2437733 +2437734 +2437735 +2437736 +2437737 +2437738 +2437739 +2437740 +2437741 +2437742 +2437743 +2437744 +2437745 +2437746 +2437747 +2437748 +2437749 +2437750 +2437751 +2437752 +2437753 +2437754 +2437755 +2437756 +2437757 +2437758 +2437759 +2437760 +2437761 +2437762 +2437763 +2437764 +2437765 +2437766 +2437767 +2437768 +2437769 +2437770 +2437771 +2437772 +2437773 +2437774 +2437775 +2437776 +2437777 +2437778 +2437779 +2437780 +2437781 +2437782 +2437783 +2437784 +2437785 +2437786 +2437787 +2437788 +2437789 +2437790 +2441468 +2441469 +2441470 +2441471 +2441472 +2441473 +2441474 +2441475 +2441476 +2441477 +2441478 +2441479 +2441480 +2441481 +2441482 +2441483 +2441484 +2441485 +2441486 +2441487 +2441488 +2441489 +2441490 +2441491 +2441492 +2441493 +2441494 +2441495 +2441496 +2441497 +2441498 +2441499 +2441500 +2441501 +2441502 +2441503 +2441504 +2441505 +2441506 +2441507 +2441508 +2441509 +2441510 +2441511 +2441512 +2441513 +2441514 +2441515 +2441516 +2441517 +2441518 +2441519 +2441520 +2441521 +2441522 +2441523 +2441524 +2441525 +2441526 +2441527 +2441528 +2441529 +2441530 +2441531 +2441532 +2441533 +2441534 +2441535 +2441536 +2441537 +2441538 +2441539 +2441540 +2441541 +2441542 +2441543 +2441544 +2441545 +2441546 +2441547 +2441548 +2441549 +2441550 +2441551 +2441552 +2441553 +2441554 +2441555 +2441556 +2441557 +2441558 +2441559 +2441560 +2441561 +2441562 +2441563 +2441564 +2441565 +2441566 +2441567 +2441568 +2441569 +2441570 +2441571 +2441572 +2441573 +2441574 +2441575 +2441576 +2441577 +2441578 +2441579 +2441580 +2441581 +2441582 +2441583 +2441584 +2441585 +2441586 +2441587 +2441588 +2441589 +2441590 +2441591 +2441592 +2441593 +2441594 +2441595 +2441596 +2441597 +2441598 +2441599 +2441600 +2441601 +2441602 +2441603 +2441604 +2441605 +2441606 +2441608 +2441609 +2441610 +2441611 +2441612 +2441613 +2441614 +2441615 +2441616 +2441617 +2441618 +2441619 +2441620 +2441622 +2441623 +2441624 +2441625 +2441626 +2441627 +2441628 +2441629 +2441630 +2441631 +2441632 +2441633 +2441634 +2441635 +2441636 +2441637 +2441638 +2441639 +2441640 +2441641 +2441642 +2441643 +2441644 +2441645 +2441646 +2441647 +2441648 +2441649 +2441650 +2441651 +2441652 +2441653 +2441654 +2441655 +2441656 +2441657 +2441658 +2441659 +2441660 +2441661 +2441662 +2441663 +2441664 +2441665 +2441666 +2441667 +2441668 +2441669 +2441670 +2441671 +2441672 +2441673 +2441674 +2441675 +2441676 +2441677 +2441678 +2441679 +2441680 +2441681 +2441682 +2441683 +2441684 +2441685 +2441686 +2441687 +2441688 +2441689 +2441690 +2441691 +2441692 +2441693 +2441694 +2441695 +2441696 +2441697 +2441698 +2441699 +2441700 +2441701 +2441702 +2441703 +2441704 +2441705 +2441706 +2441707 +2441708 +2441709 +2441710 +2441711 +2441712 +2441713 +2441714 +2441715 +2441716 +2441717 +2441718 +2441719 +2441720 +2441721 +2441722 +2441723 +2441724 +2441725 +2441726 +2441727 +2441728 +2441729 +2441730 +2441731 +2441732 +2441733 +2441734 +2441735 +2441736 +2441737 +2441738 +2441739 +2441740 +2441741 +2441742 +2441743 +2441744 +2441745 +2441746 +2441747 +2441748 +2441749 +2441750 +2441751 +2441752 +2441753 +2441754 +2441755 +2441756 +2441757 +2441758 +2441759 +2441760 +2441761 +2441762 +2441763 +2441764 +2441765 +2441766 +2441767 +2441768 +2441769 +2441770 +2441771 +2441772 +2441773 +2441774 +2441775 +2441776 +2441777 +2441778 +2441779 +2441780 +2441781 +2441782 +2441783 +2441784 +2441785 +2441786 +2441787 +2441788 +2441789 +2441790 +2441791 +2441792 +2441793 +2441794 +2441795 +2441796 +2441797 +2441798 +2441799 +2441800 +2441801 +2441802 +2441803 +2441804 +2441805 +2441806 +2441807 +2441808 +2441809 +2441810 +2441811 +2441812 +2441813 +2441814 +2441815 +2441816 +2441817 +2441818 +2441819 +2441820 +2441821 +2441822 +2441823 +2441824 +2441825 +2441826 +2441827 +2441828 +2441829 +2441830 +2441831 +2441832 +2441833 +2441834 +2441835 +2441836 +2441837 +2441838 +2441839 +2441840 +2441841 +2441842 +2441843 +2441844 +2441845 +2441846 +2441847 +2441848 +2441849 +2441850 +2441851 +2441852 +2441853 +2441854 +2441855 +2441856 +2441857 +2441858 +2441859 +2441860 +2441861 +2441862 +2441863 +2441864 +2441865 +2441866 +2441867 +2441868 +2441869 +2441870 +2441871 +2441872 +2441873 +2441874 +2441875 +2441876 +2441877 +2441878 +2441879 +2441880 +2441881 +2441882 +2441883 +2441884 +2441885 +2441886 +2441887 +2441888 +2441889 +2441890 +2441891 +2441892 +2441893 +2441894 +2441895 +2441896 +2441897 +2441898 +2441899 +2441900 +2441901 +2441902 +2441903 +2441904 +2441905 +2441906 +2441926 +2441927 +2441928 +2441929 +2441930 +2441931 +2441932 +2441933 +2441934 +2441935 +2441936 +2441937 +2441938 +2441939 +2441940 +2441941 +2441942 +2441943 +2441944 +2441945 +2441946 +2441947 +2441948 +2441949 +2441950 +2441951 +2441952 +2441953 +2441954 +2441955 +2441956 +2441957 +2441958 +2441959 +2441960 +2441961 +2441962 +2441963 +2441964 +2441965 +2441966 +2441967 +2441968 +2441969 +2442014 +2442015 +2442016 +2442017 +2442018 +2442019 +2442020 +2442021 +2442022 +2442023 +2442024 +2442025 +2442026 +2442027 +2442028 +2442029 +2442030 +2442031 +2442032 +2442033 +2442034 +2442035 +2442036 +2442037 +2442038 +2442039 +2442040 +2442041 +2442042 +2442043 +2442044 +2442045 +2442046 +2442047 +2442048 +2442049 +2442050 +2442051 +2442052 +2442053 +2442054 +2442055 +2442056 +2442057 +2442058 +2442059 +2442060 +2442061 +2442062 +2442063 +2442064 +2442065 +2442066 +2442067 +2442068 +2442069 +2442070 +2442071 +2442072 +2442073 +2442074 +2442075 +2442076 +2442077 +2442078 +2442079 +2442080 +2442081 +2442082 +2442083 +2442084 +2442085 +2442086 +2442087 +2442088 +2442089 +2442090 +2442091 +2442092 +2442093 +2442094 +2442095 +2442096 +2442097 +2442098 +2442099 +2442100 +2442101 +2442102 +2442103 +2442104 +2442105 +2442106 +2442107 +2442108 +2442109 +2442110 +2445788 +2445789 +2445790 +2445791 +2445792 +2445793 +2445794 +2445795 +2445796 +2445797 +2445798 +2445799 +2445800 +2445801 +2445802 +2445803 +2445804 +2445805 +2445806 +2445807 +2445808 +2445809 +2445810 +2445811 +2445812 +2445813 +2445814 +2445815 +2445816 +2445817 +2445818 +2445819 +2445820 +2445821 +2445822 +2445823 +2445824 +2445825 +2445826 +2445827 +2445828 +2445829 +2445830 +2445832 +2445833 +2445834 +2445835 +2445836 +2445837 +2445838 +2445839 +2445840 +2445841 +2445842 +2445843 +2445844 +2445845 +2445846 +2445847 +2445848 +2445849 +2445850 +2445851 +2445852 +2445853 +2445854 +2445855 +2445856 +2445857 +2445858 +2445859 +2445860 +2445861 +2445862 +2445863 +2445864 +2445865 +2445866 +2445867 +2445868 +2445869 +2445870 +2445871 +2445872 +2445873 +2445874 +2445875 +2445876 +2445877 +2445878 +2445879 +2445880 +2445881 +2445882 +2445883 +2445884 +2445885 +2445886 +2445887 +2445888 +2445889 +2445890 +2445891 +2445892 +2445893 +2445894 +2445895 +2445896 +2445897 +2445898 +2445899 +2445900 +2445901 +2445902 +2445903 +2445904 +2445905 +2445906 +2445907 +2445908 +2445909 +2445910 +2445911 +2445912 +2445913 +2445914 +2445915 +2445916 +2445917 +2445918 +2445919 +2445920 +2445921 +2445922 +2445923 +2445924 +2445925 +2445926 +2445927 +2445928 +2445929 +2445930 +2445931 +2445932 +2445933 +2445934 +2445935 +2445936 +2445937 +2445938 +2445939 +2445940 +2445941 +2445942 +2445943 +2445944 +2445945 +2445946 +2445947 +2445948 +2445949 +2445950 +2445951 +2445952 +2445953 +2445954 +2445955 +2445956 +2445957 +2445958 +2445959 +2445960 +2445961 +2445962 +2445963 +2445964 +2445965 +2445966 +2445967 +2445968 +2445969 +2445970 +2445971 +2445972 +2445973 +2445974 +2445975 +2445976 +2445977 +2445978 +2445979 +2445980 +2445981 +2445982 +2445983 +2445984 +2445985 +2445986 +2445987 +2445988 +2445989 +2445990 +2445991 +2445992 +2445993 +2445994 +2445995 +2445996 +2445997 +2445998 +2445999 +2446000 +2446001 +2446002 +2446003 +2446004 +2446005 +2446006 +2446007 +2446008 +2446009 +2446010 +2446011 +2446012 +2446013 +2446014 +2446015 +2446016 +2446017 +2446018 +2446019 +2446020 +2446021 +2446022 +2446023 +2446024 +2446025 +2446026 +2446027 +2446028 +2446029 +2446030 +2446031 +2446032 +2446033 +2446034 +2446035 +2446036 +2446037 +2446038 +2446039 +2446040 +2446041 +2446042 +2446043 +2446044 +2446045 +2446046 +2446047 +2446048 +2446049 +2446050 +2446051 +2446052 +2446053 +2446054 +2446055 +2446056 +2446057 +2446058 +2446059 +2446060 +2446061 +2446062 +2446063 +2446064 +2446065 +2446066 +2446067 +2446068 +2446069 +2446070 +2446071 +2446072 +2446073 +2446074 +2446075 +2446076 +2446077 +2446078 +2446079 +2446080 +2446081 +2446082 +2446083 +2446084 +2446085 +2446086 +2446087 +2446088 +2446089 +2446090 +2446091 +2446092 +2446093 +2446094 +2446095 +2446096 +2446097 +2446098 +2446099 +2446100 +2446101 +2446102 +2446103 +2446104 +2446105 +2446106 +2446107 +2446108 +2446109 +2446110 +2446111 +2446112 +2446113 +2446114 +2446115 +2446116 +2446117 +2446118 +2446119 +2446120 +2446121 +2446122 +2446123 +2446124 +2446125 +2446126 +2446127 +2446128 +2446129 +2446130 +2446131 +2446132 +2446133 +2446134 +2446135 +2446136 +2446137 +2446138 +2446139 +2446140 +2446141 +2446142 +2446143 +2446144 +2446145 +2446146 +2446147 +2446148 +2446149 +2446150 +2446151 +2446152 +2446153 +2446154 +2446155 +2446156 +2446157 +2446158 +2446159 +2446160 +2446161 +2446162 +2446163 +2446164 +2446165 +2446166 +2446167 +2446168 +2446169 +2446170 +2446171 +2446172 +2446173 +2446174 +2446175 +2446176 +2446177 +2446178 +2446179 +2446180 +2446181 +2446182 +2446183 +2446184 +2446185 +2446186 +2446187 +2446188 +2446189 +2446190 +2446191 +2446192 +2446193 +2446194 +2446195 +2446196 +2446197 +2446198 +2446199 +2446200 +2446201 +2446202 +2446203 +2446204 +2446205 +2446206 +2446207 +2446208 +2446209 +2446210 +2446211 +2446212 +2446213 +2446214 +2446215 +2446216 +2446217 +2446218 +2446219 +2446220 +2446221 +2446222 +2446223 +2446224 +2446225 +2446226 +2446246 +2446247 +2446248 +2446249 +2446250 +2446251 +2446252 +2446253 +2446254 +2446255 +2446256 +2446257 +2446258 +2446259 +2446260 +2446261 +2446262 +2446263 +2446264 +2446265 +2446266 +2446267 +2446268 +2446269 +2446270 +2446271 +2446272 +2446273 +2446274 +2446275 +2446276 +2446277 +2446278 +2446279 +2446280 +2446281 +2446282 +2446283 +2446284 +2446285 +2446286 +2446287 +2446288 +2446289 +2446334 +2446335 +2446336 +2446337 +2446338 +2446339 +2446340 +2446341 +2446342 +2446343 +2446344 +2446345 +2446346 +2446347 +2446348 +2446349 +2446350 +2446351 +2446352 +2446353 +2446354 +2446355 +2446356 +2446357 +2446358 +2446359 +2446360 +2446361 +2446362 +2446363 +2446364 +2446365 +2446366 +2446367 +2446368 +2446369 +2446370 +2446371 +2446372 +2446373 +2446374 +2446375 +2446376 +2446377 +2446378 +2446379 +2446380 +2446381 +2446382 +2446383 +2446384 +2446385 +2446386 +2446387 +2446388 +2446389 +2446390 +2446391 +2446392 +2446393 +2446394 +2446395 +2446396 +2446397 +2446398 +2446399 +2446400 +2446401 +2446402 +2446403 +2446404 +2446405 +2446406 +2446407 +2446408 +2446409 +2446410 +2446411 +2446412 +2446413 +2446414 +2446415 +2446416 +2446417 +2446418 +2446419 +2446420 +2446421 +2446422 +2446423 +2446424 +2446425 +2446426 +2446427 +2446428 +2446429 +2446430 +2450108 +2450109 +2450110 +2450111 +2450112 +2450113 +2450114 +2450115 +2450116 +2450117 +2450118 +2450119 +2450120 +2450121 +2450122 +2450123 +2450124 +2450125 +2450126 +2450127 +2450128 +2450129 +2450130 +2450131 +2450132 +2450133 +2450134 +2450135 +2450136 +2450137 +2450138 +2450139 +2450140 +2450141 +2450142 +2450143 +2450144 +2450145 +2450146 +2450147 +2450148 +2450149 +2450150 +2450151 +2450152 +2450153 +2450154 +2450155 +2450156 +2450157 +2450158 +2450159 +2450160 +2450161 +2450162 +2450163 +2450164 +2450165 +2450166 +2450167 +2450168 +2450169 +2450170 +2450171 +2450172 +2450173 +2450174 +2450175 +2450176 +2450177 +2450178 +2450179 +2450180 +2450181 +2450182 +2450183 +2450184 +2450185 +2450186 +2450187 +2450188 +2450189 +2450190 +2450191 +2450192 +2450193 +2450194 +2450195 +2450196 +2450197 +2450198 +2450199 +2450200 +2450201 +2450202 +2450203 +2450204 +2450205 +2450206 +2450207 +2450208 +2450209 +2450210 +2450211 +2450212 +2450213 +2450214 +2450215 +2450216 +2450217 +2450218 +2450219 +2450220 +2450221 +2450222 +2450223 +2450224 +2450225 +2450226 +2450227 +2450228 +2450229 +2450230 +2450231 +2450232 +2450233 +2450234 +2450235 +2450236 +2450237 +2450238 +2450239 +2450240 +2450241 +2450242 +2450243 +2450244 +2450245 +2450246 +2450247 +2450248 +2450249 +2450250 +2450251 +2450252 +2450253 +2450254 +2450255 +2450256 +2450257 +2450258 +2450259 +2450260 +2450261 +2450262 +2450263 +2450264 +2450265 +2450266 +2450267 +2450268 +2450269 +2450270 +2450271 +2450272 +2450273 +2450274 +2450275 +2450276 +2450277 +2450278 +2450279 +2450280 +2450281 +2450282 +2450283 +2450284 +2450285 +2450286 +2450287 +2450288 +2450289 +2450290 +2450291 +2450292 +2450293 +2450294 +2450295 +2450296 +2450297 +2450298 +2450299 +2450300 +2450301 +2450302 +2450303 +2450304 +2450305 +2450306 +2450307 +2450308 +2450309 +2450310 +2450311 +2450312 +2450313 +2450314 +2450315 +2450316 +2450317 +2450318 +2450319 +2450320 +2450321 +2450322 +2450323 +2450324 +2450325 +2450326 +2450327 +2450328 +2450329 +2450330 +2450331 +2450332 +2450333 +2450334 +2450335 +2450336 +2450337 +2450338 +2450339 +2450340 +2450341 +2450342 +2450343 +2450344 +2450345 +2450346 +2450347 +2450348 +2450349 +2450350 +2450351 +2450352 +2450353 +2450354 +2450355 +2450356 +2450357 +2450358 +2450359 +2450360 +2450361 +2450362 +2450363 +2450364 +2450365 +2450366 +2450367 +2450368 +2450369 +2450370 +2450371 +2450372 +2450373 +2450374 +2450375 +2450376 +2450377 +2450378 +2450379 +2450380 +2450381 +2450382 +2450383 +2450384 +2450385 +2450386 +2450387 +2450388 +2450389 +2450390 +2450391 +2450392 +2450393 +2450394 +2450395 +2450396 +2450397 +2450398 +2450399 +2450400 +2450401 +2450402 +2450403 +2450404 +2450405 +2450406 +2450407 +2450408 +2450409 +2450410 +2450411 +2450412 +2450413 +2450414 +2450415 +2450416 +2450417 +2450418 +2450419 +2450420 +2450421 +2450422 +2450423 +2450424 +2450425 +2450426 +2450427 +2450428 +2450429 +2450430 +2450431 +2450432 +2450433 +2450434 +2450435 +2450436 +2450437 +2450438 +2450439 +2450440 +2450441 +2450442 +2450443 +2450444 +2450445 +2450446 +2450447 +2450448 +2450449 +2450450 +2450451 +2450452 +2450453 +2450454 +2450455 +2450456 +2450457 +2450458 +2450459 +2450460 +2450461 +2450462 +2450463 +2450464 +2450465 +2450466 +2450467 +2450468 +2450469 +2450470 +2450471 +2450472 +2450473 +2450474 +2450475 +2450476 +2450477 +2450478 +2450479 +2450480 +2450481 +2450482 +2450483 +2450484 +2450485 +2450486 +2450487 +2450488 +2450489 +2450490 +2450491 +2450492 +2450493 +2450494 +2450495 +2450496 +2450497 +2450498 +2450499 +2450500 +2450501 +2450502 +2450503 +2450504 +2450505 +2450506 +2450507 +2450508 +2450509 +2450510 +2450511 +2450512 +2450513 +2450514 +2450515 +2450516 +2450517 +2450518 +2450519 +2450520 +2450521 +2450522 +2450523 +2450524 +2450525 +2450526 +2450527 +2450528 +2450529 +2450530 +2450531 +2450532 +2450533 +2450534 +2450535 +2450536 +2450537 +2450538 +2450539 +2450540 +2450541 +2450542 +2450543 +2450544 +2450545 +2450546 +2450547 +2450566 +2450567 +2450568 +2450569 +2450570 +2450571 +2450572 +2450573 +2450574 +2450575 +2450576 +2450577 +2450578 +2450579 +2450580 +2450581 +2450582 +2450583 +2450584 +2450585 +2450586 +2450587 +2450588 +2450589 +2450590 +2450591 +2450592 +2450593 +2450594 +2450595 +2450596 +2450597 +2450598 +2450599 +2450600 +2450601 +2450602 +2450603 +2450604 +2450605 +2450606 +2450607 +2450608 +2450609 +2450654 +2450655 +2450656 +2450657 +2450658 +2450659 +2450660 +2450661 +2450662 +2450663 +2450664 +2450665 +2450666 +2450667 +2450668 +2450669 +2450670 +2450671 +2450672 +2450673 +2450674 +2450675 +2450676 +2450678 +2450679 +2450681 +2450682 +2450683 +2450684 +2450685 +2450686 +2450687 +2450688 +2450689 +2450690 +2450691 +2450692 +2450693 +2450694 +2450695 +2450696 +2450697 +2450698 +2450699 +2450700 +2450701 +2450702 +2450703 +2450704 +2450705 +2450706 +2450707 +2450708 +2450709 +2450710 +2450711 +2450712 +2450713 +2450714 +2450715 +2450716 +2450717 +2450718 +2450719 +2450720 +2450721 +2450722 +2450723 +2450724 +2450725 +2450726 +2450727 +2450728 +2450729 +2450730 +2450731 +2450732 +2450733 +2450734 +2450735 +2450736 +2450737 +2450738 +2450739 +2450740 +2450741 +2450742 +2450743 +2450744 +2450745 +2450746 +2450747 +2450748 +2450749 +2450750 +2454428 +2454429 +2454430 +2454431 +2454432 +2454433 +2454434 +2454435 +2454436 +2454437 +2454438 +2454439 +2454440 +2454441 +2454442 +2454443 +2454444 +2454445 +2454446 +2454447 +2454448 +2454449 +2454450 +2454451 +2454452 +2454453 +2454454 +2454455 +2454456 +2454457 +2454458 +2454459 +2454460 +2454461 +2454462 +2454463 +2454464 +2454465 +2454466 +2454467 +2454468 +2454469 +2454470 +2454471 +2454472 +2454473 +2454474 +2454475 +2454476 +2454477 +2454478 +2454479 +2454480 +2454481 +2454482 +2454483 +2454484 +2454485 +2454486 +2454487 +2454488 +2454489 +2454490 +2454491 +2454492 +2454493 +2454494 +2454495 +2454496 +2454497 +2454498 +2454499 +2454500 +2454501 +2454502 +2454503 +2454504 +2454505 +2454506 +2454507 +2454508 +2454509 +2454510 +2454511 +2454512 +2454513 +2454514 +2454515 +2454516 +2454517 +2454518 +2454519 +2454520 +2454521 +2454522 +2454523 +2454524 +2454525 +2454526 +2454527 +2454528 +2454529 +2454530 +2454531 +2454532 +2454533 +2454534 +2454535 +2454536 +2454537 +2454538 +2454539 +2454540 +2454541 +2454542 +2454543 +2454544 +2454545 +2454546 +2454547 +2454548 +2454549 +2454550 +2454551 +2454552 +2454553 +2454554 +2454555 +2454556 +2454557 +2454558 +2454559 +2454560 +2454561 +2454562 +2454563 +2454564 +2454565 +2454566 +2454567 +2454568 +2454569 +2454570 +2454571 +2454572 +2454573 +2454574 +2454575 +2454576 +2454577 +2454578 +2454579 +2454580 +2454581 +2454582 +2454583 +2454584 +2454585 +2454586 +2454587 +2454588 +2454589 +2454590 +2454591 +2454592 +2454593 +2454594 +2454595 +2454596 +2454597 +2454598 +2454599 +2454600 +2454601 +2454602 +2454603 +2454604 +2454605 +2454606 +2454607 +2454608 +2454609 +2454610 +2454611 +2454612 +2454613 +2454614 +2454615 +2454616 +2454617 +2454618 +2454619 +2454620 +2454621 +2454622 +2454623 +2454624 +2454625 +2454626 +2454627 +2454628 +2454629 +2454630 +2454631 +2454632 +2454633 +2454634 +2454635 +2454636 +2454637 +2454638 +2454639 +2454640 +2454641 +2454642 +2454643 +2454644 +2454645 +2454646 +2454647 +2454648 +2454649 +2454650 +2454651 +2454652 +2454653 +2454654 +2454655 +2454656 +2454657 +2454658 +2454659 +2454660 +2454661 +2454662 +2454663 +2454664 +2454665 +2454666 +2454667 +2454668 +2454669 +2454670 +2454671 +2454672 +2454673 +2454674 +2454675 +2454676 +2454677 +2454678 +2454679 +2454680 +2454681 +2454682 +2454683 +2454684 +2454685 +2454686 +2454687 +2454688 +2454689 +2454690 +2454691 +2454692 +2454693 +2454694 +2454695 +2454696 +2454697 +2454698 +2454699 +2454700 +2454701 +2454702 +2454703 +2454704 +2454705 +2454706 +2454707 +2454708 +2454709 +2454710 +2454711 +2454712 +2454713 +2454714 +2454715 +2454716 +2454717 +2454718 +2454719 +2454720 +2454721 +2454722 +2454723 +2454724 +2454725 +2454726 +2454727 +2454728 +2454729 +2454730 +2454731 +2454732 +2454733 +2454734 +2454735 +2454736 +2454737 +2454738 +2454739 +2454740 +2454741 +2454742 +2454743 +2454744 +2454745 +2454746 +2454747 +2454748 +2454749 +2454750 +2454751 +2454752 +2454753 +2454754 +2454755 +2454756 +2454757 +2454758 +2454759 +2454760 +2454761 +2454762 +2454763 +2454764 +2454765 +2454766 +2454767 +2454768 +2454769 +2454770 +2454771 +2454772 +2454773 +2454774 +2454775 +2454776 +2454777 +2454778 +2454779 +2454780 +2454781 +2454782 +2454783 +2454784 +2454785 +2454786 +2454787 +2454788 +2454789 +2454790 +2454791 +2454792 +2454793 +2454794 +2454795 +2454796 +2454797 +2454798 +2454799 +2454800 +2454801 +2454802 +2454803 +2454804 +2454805 +2454806 +2454807 +2454808 +2454809 +2454810 +2454811 +2454812 +2454813 +2454814 +2454815 +2454816 +2454817 +2454818 +2454819 +2454820 +2454821 +2454822 +2454823 +2454824 +2454825 +2454826 +2454827 +2454828 +2454829 +2454830 +2454831 +2454832 +2454833 +2454834 +2454835 +2454836 +2454837 +2454838 +2454839 +2454840 +2454841 +2454842 +2454843 +2454844 +2454845 +2454846 +2454847 +2454848 +2454849 +2454850 +2454851 +2454852 +2454853 +2454854 +2454855 +2454856 +2454857 +2454858 +2454859 +2454860 +2454861 +2454862 +2454863 +2454864 +2454865 +2454866 +2454886 +2454887 +2454888 +2454889 +2454890 +2454891 +2454892 +2454893 +2454894 +2454895 +2454896 +2454897 +2454898 +2454899 +2454900 +2454901 +2454902 +2454903 +2454904 +2454905 +2454906 +2454907 +2454908 +2454909 +2454910 +2454911 +2454912 +2454913 +2454914 +2454915 +2454916 +2454917 +2454918 +2454919 +2454920 +2454921 +2454922 +2454923 +2454924 +2454925 +2454926 +2454927 +2454929 +2454971 +2454972 +2454973 +2454974 +2454975 +2454976 +2454977 +2454978 +2454979 +2454980 +2454981 +2454982 +2454983 +2454984 +2454985 +2454986 +2454987 +2454988 +2454989 +2454990 +2454991 +2454992 +2454993 +2454994 +2454995 +2454996 +2454997 +2454998 +2454999 +2455000 +2455001 +2455002 +2455003 +2455004 +2455005 +2455006 +2455007 +2455008 +2455009 +2455010 +2455011 +2455012 +2455013 +2455014 +2455015 +2455016 +2455017 +2455018 +2455019 +2455020 +2455021 +2455022 +2455023 +2455024 +2455025 +2455026 +2455027 +2455028 +2455029 +2455030 +2455031 +2455032 +2455033 +2455034 +2455035 +2455036 +2455037 +2455038 +2455039 +2455040 +2455041 +2455042 +2455043 +2455044 +2455045 +2455046 +2455047 +2455048 +2455049 +2455050 +2455051 +2455052 +2455053 +2455054 +2455055 +2455056 +2455057 +2455058 +2455059 +2455060 +2455061 +2455062 +2455063 +2455064 +2455065 +2455066 +2455067 +2455068 +2455069 +2455070 +2455071 +2455072 +2455073 +2458748 +2458749 +2458750 +2458751 +2458752 +2458753 +2458754 +2458755 +2458756 +2458757 +2458758 +2458759 +2458760 +2458761 +2458762 +2458763 +2458764 +2458765 +2458766 +2458767 +2458768 +2458769 +2458770 +2458771 +2458772 +2458773 +2458774 +2458775 +2458776 +2458777 +2458778 +2458779 +2458780 +2458781 +2458782 +2458783 +2458784 +2458785 +2458786 +2458787 +2458788 +2458789 +2458790 +2458791 +2458792 +2458793 +2458794 +2458795 +2458796 +2458797 +2458798 +2458799 +2458800 +2458801 +2458802 +2458803 +2458804 +2458805 +2458806 +2458807 +2458808 +2458809 +2458810 +2458811 +2458812 +2458813 +2458814 +2458815 +2458816 +2458817 +2458818 +2458819 +2458820 +2458821 +2458822 +2458823 +2458824 +2458825 +2458826 +2458827 +2458828 +2458829 +2458830 +2458831 +2458832 +2458833 +2458834 +2458835 +2458836 +2458837 +2458838 +2458839 +2458840 +2458841 +2458842 +2458843 +2458844 +2458845 +2458846 +2458847 +2458848 +2458849 +2458850 +2458851 +2458852 +2458853 +2458854 +2458855 +2458856 +2458857 +2458858 +2458859 +2458860 +2458861 +2458862 +2458863 +2458864 +2458865 +2458866 +2458867 +2458868 +2458869 +2458870 +2458871 +2458872 +2458873 +2458874 +2458875 +2458876 +2458877 +2458878 +2458879 +2458880 +2458881 +2458882 +2458883 +2458884 +2458885 +2458886 +2458887 +2458888 +2458889 +2458890 +2458891 +2458892 +2458893 +2458894 +2458895 +2458896 +2458897 +2458898 +2458899 +2458900 +2458901 +2458902 +2458903 +2458904 +2458905 +2458906 +2458907 +2458908 +2458909 +2458910 +2458911 +2458912 +2458913 +2458914 +2458915 +2458916 +2458917 +2458918 +2458919 +2458920 +2458921 +2458922 +2458923 +2458924 +2458925 +2458926 +2458927 +2458928 +2458929 +2458930 +2458931 +2458932 +2458933 +2458934 +2458935 +2458936 +2458937 +2458938 +2458939 +2458940 +2458941 +2458942 +2458943 +2458944 +2458945 +2458946 +2458947 +2458948 +2458949 +2458950 +2458951 +2458952 +2458953 +2458954 +2458955 +2458956 +2458957 +2458958 +2458959 +2458960 +2458961 +2458962 +2458963 +2458964 +2458965 +2458966 +2458967 +2458968 +2458969 +2458970 +2458971 +2458972 +2458973 +2458974 +2458975 +2458976 +2458977 +2458978 +2458979 +2458980 +2458981 +2458982 +2458983 +2458984 +2458985 +2458986 +2458987 +2458988 +2458989 +2458990 +2458991 +2458992 +2458993 +2458994 +2458995 +2458996 +2458997 +2458998 +2458999 +2459000 +2459001 +2459002 +2459003 +2459004 +2459005 +2459006 +2459007 +2459008 +2459009 +2459010 +2459011 +2459012 +2459013 +2459014 +2459015 +2459016 +2459017 +2459018 +2459019 +2459020 +2459021 +2459022 +2459023 +2459024 +2459025 +2459026 +2459027 +2459028 +2459029 +2459030 +2459031 +2459032 +2459033 +2459034 +2459035 +2459036 +2459037 +2459038 +2459039 +2459040 +2459041 +2459042 +2459043 +2459044 +2459045 +2459046 +2459047 +2459048 +2459049 +2459050 +2459051 +2459052 +2459053 +2459054 +2459055 +2459056 +2459057 +2459058 +2459059 +2459060 +2459061 +2459062 +2459063 +2459064 +2459065 +2459066 +2459067 +2459068 +2459069 +2459070 +2459071 +2459072 +2459073 +2459074 +2459075 +2459076 +2459077 +2459078 +2459079 +2459080 +2459081 +2459082 +2459083 +2459084 +2459085 +2459086 +2459087 +2459088 +2459089 +2459090 +2459091 +2459092 +2459093 +2459094 +2459095 +2459096 +2459097 +2459098 +2459099 +2459100 +2459101 +2459102 +2459103 +2459104 +2459105 +2459106 +2459107 +2459108 +2459109 +2459110 +2459111 +2459112 +2459113 +2459114 +2459115 +2459116 +2459117 +2459118 +2459119 +2459120 +2459121 +2459122 +2459123 +2459124 +2459125 +2459126 +2459127 +2459128 +2459129 +2459130 +2459131 +2459132 +2459133 +2459134 +2459135 +2459136 +2459137 +2459138 +2459139 +2459140 +2459141 +2459142 +2459143 +2459144 +2459145 +2459146 +2459147 +2459148 +2459149 +2459150 +2459151 +2459152 +2459153 +2459154 +2459155 +2459156 +2459157 +2459158 +2459159 +2459160 +2459161 +2459162 +2459163 +2459164 +2459165 +2459166 +2459167 +2459168 +2459169 +2459170 +2459171 +2459172 +2459173 +2459174 +2459175 +2459176 +2459177 +2459178 +2459179 +2459180 +2459181 +2459182 +2459183 +2459184 +2459185 +2459186 +2459206 +2459207 +2459208 +2459209 +2459210 +2459211 +2459212 +2459213 +2459214 +2459215 +2459216 +2459217 +2459218 +2459219 +2459220 +2459221 +2459222 +2459223 +2459224 +2459225 +2459226 +2459227 +2459228 +2459229 +2459230 +2459231 +2459232 +2459233 +2459234 +2459235 +2459236 +2459237 +2459238 +2459239 +2459240 +2459241 +2459242 +2459243 +2459289 +2459290 +2459291 +2459292 +2459293 +2459294 +2459295 +2459296 +2459297 +2459298 +2459299 +2459300 +2459301 +2459302 +2459303 +2459304 +2459305 +2459306 +2459307 +2459308 +2459309 +2459310 +2459311 +2459312 +2459313 +2459314 +2459316 +2459317 +2459318 +2459319 +2459320 +2459321 +2459322 +2459323 +2459324 +2459325 +2459326 +2459327 +2459328 +2459329 +2459330 +2459331 +2459332 +2459333 +2459334 +2459335 +2459336 +2459337 +2459338 +2459339 +2459340 +2459341 +2459342 +2459343 +2459344 +2459345 +2459346 +2459347 +2459348 +2459349 +2459350 +2459351 +2459352 +2459353 +2459354 +2459355 +2459356 +2459357 +2459358 +2459359 +2459360 +2459361 +2459362 +2459363 +2459364 +2459365 +2459366 +2459367 +2459368 +2459369 +2459370 +2459371 +2459372 +2459373 +2459374 +2459375 +2459376 +2459377 +2459378 +2459379 +2459380 +2459381 +2459382 +2459383 +2459384 +2459385 +2459386 +2459387 +2459388 +2459389 +2459390 +2463068 +2463069 +2463070 +2463071 +2463072 +2463073 +2463074 +2463075 +2463076 +2463077 +2463078 +2463079 +2463080 +2463081 +2463082 +2463083 +2463084 +2463085 +2463086 +2463087 +2463088 +2463089 +2463090 +2463091 +2463092 +2463093 +2463094 +2463095 +2463098 +2463099 +2463100 +2463101 +2463102 +2463103 +2463104 +2463105 +2463106 +2463107 +2463108 +2463109 +2463110 +2463111 +2463112 +2463113 +2463114 +2463115 +2463116 +2463117 +2463118 +2463119 +2463120 +2463121 +2463122 +2463123 +2463124 +2463125 +2463126 +2463127 +2463128 +2463129 +2463130 +2463131 +2463132 +2463133 +2463134 +2463135 +2463136 +2463137 +2463138 +2463139 +2463140 +2463141 +2463142 +2463143 +2463144 +2463145 +2463146 +2463147 +2463148 +2463149 +2463150 +2463151 +2463152 +2463153 +2463154 +2463155 +2463156 +2463157 +2463158 +2463159 +2463160 +2463161 +2463162 +2463163 +2463164 +2463165 +2463166 +2463167 +2463168 +2463169 +2463170 +2463171 +2463172 +2463173 +2463174 +2463175 +2463176 +2463177 +2463178 +2463179 +2463180 +2463181 +2463182 +2463183 +2463184 +2463185 +2463186 +2463187 +2463188 +2463189 +2463190 +2463191 +2463192 +2463193 +2463194 +2463195 +2463196 +2463197 +2463198 +2463199 +2463200 +2463201 +2463202 +2463203 +2463204 +2463205 +2463206 +2463207 +2463208 +2463209 +2463210 +2463211 +2463212 +2463213 +2463214 +2463215 +2463216 +2463217 +2463218 +2463219 +2463220 +2463221 +2463222 +2463223 +2463224 +2463225 +2463226 +2463227 +2463228 +2463229 +2463230 +2463231 +2463232 +2463233 +2463234 +2463235 +2463236 +2463237 +2463238 +2463239 +2463240 +2463241 +2463242 +2463243 +2463244 +2463245 +2463246 +2463247 +2463248 +2463249 +2463250 +2463251 +2463252 +2463253 +2463254 +2463255 +2463256 +2463257 +2463258 +2463259 +2463260 +2463261 +2463262 +2463263 +2463264 +2463265 +2463266 +2463267 +2463268 +2463269 +2463270 +2463271 +2463272 +2463273 +2463274 +2463275 +2463276 +2463277 +2463278 +2463279 +2463280 +2463281 +2463282 +2463283 +2463284 +2463285 +2463286 +2463287 +2463288 +2463289 +2463290 +2463291 +2463292 +2463293 +2463294 +2463295 +2463296 +2463297 +2463298 +2463299 +2463300 +2463301 +2463302 +2463303 +2463304 +2463305 +2463306 +2463307 +2463308 +2463309 +2463310 +2463311 +2463312 +2463313 +2463314 +2463315 +2463316 +2463317 +2463318 +2463319 +2463320 +2463321 +2463322 +2463323 +2463324 +2463325 +2463326 +2463327 +2463328 +2463329 +2463330 +2463331 +2463332 +2463333 +2463334 +2463335 +2463336 +2463337 +2463338 +2463339 +2463340 +2463341 +2463342 +2463343 +2463344 +2463345 +2463346 +2463347 +2463348 +2463349 +2463350 +2463351 +2463352 +2463353 +2463354 +2463355 +2463356 +2463357 +2463358 +2463359 +2463360 +2463361 +2463362 +2463363 +2463364 +2463365 +2463366 +2463367 +2463368 +2463369 +2463370 +2463371 +2463372 +2463373 +2463374 +2463375 +2463376 +2463377 +2463378 +2463379 +2463380 +2463381 +2463382 +2463383 +2463384 +2463385 +2463386 +2463387 +2463388 +2463389 +2463390 +2463391 +2463392 +2463393 +2463394 +2463395 +2463396 +2463397 +2463398 +2463399 +2463400 +2463401 +2463402 +2463403 +2463404 +2463405 +2463406 +2463407 +2463408 +2463409 +2463410 +2463411 +2463412 +2463413 +2463414 +2463415 +2463416 +2463417 +2463418 +2463419 +2463420 +2463421 +2463422 +2463423 +2463424 +2463425 +2463426 +2463427 +2463428 +2463429 +2463430 +2463431 +2463432 +2463433 +2463434 +2463435 +2463436 +2463437 +2463438 +2463439 +2463440 +2463441 +2463442 +2463443 +2463444 +2463445 +2463446 +2463447 +2463448 +2463449 +2463450 +2463451 +2463452 +2463453 +2463454 +2463455 +2463456 +2463457 +2463458 +2463459 +2463460 +2463461 +2463462 +2463463 +2463464 +2463465 +2463466 +2463467 +2463468 +2463469 +2463470 +2463471 +2463472 +2463473 +2463474 +2463475 +2463476 +2463477 +2463478 +2463479 +2463480 +2463481 +2463482 +2463483 +2463484 +2463485 +2463486 +2463487 +2463488 +2463489 +2463490 +2463491 +2463492 +2463493 +2463494 +2463495 +2463496 +2463497 +2463498 +2463499 +2463500 +2463501 +2463502 +2463503 +2463504 +2463505 +2463506 +2463525 +2463526 +2463527 +2463528 +2463529 +2463530 +2463531 +2463532 +2463533 +2463534 +2463535 +2463536 +2463537 +2463538 +2463539 +2463540 +2463541 +2463542 +2463543 +2463544 +2463545 +2463546 +2463547 +2463548 +2463549 +2463550 +2463551 +2463552 +2463553 +2463554 +2463555 +2463556 +2463557 +2463558 +2463559 +2463560 +2463561 +2463562 +2463563 +2463608 +2463609 +2463610 +2463611 +2463612 +2463613 +2463614 +2463615 +2463616 +2463617 +2463618 +2463619 +2463620 +2463621 +2463622 +2463623 +2463624 +2463625 +2463626 +2463627 +2463628 +2463629 +2463630 +2463631 +2463632 +2463633 +2463634 +2463635 +2463636 +2463637 +2463638 +2463639 +2463640 +2463641 +2463642 +2463643 +2463644 +2463645 +2463646 +2463647 +2463648 +2463649 +2463650 +2463651 +2463652 +2463653 +2463654 +2463655 +2463656 +2463657 +2463658 +2463659 +2463660 +2463661 +2463662 +2463663 +2463664 +2463665 +2463666 +2463667 +2463668 +2463669 +2463670 +2463671 +2463672 +2463673 +2463674 +2463675 +2463676 +2463677 +2463678 +2463679 +2463680 +2463681 +2463682 +2463683 +2463684 +2463685 +2463686 +2463687 +2463688 +2463689 +2463690 +2463691 +2463692 +2463693 +2463694 +2463695 +2463696 +2463697 +2463698 +2463699 +2463700 +2463701 +2463702 +2463703 +2463704 +2463705 +2463706 +2463707 +2463708 +2463709 +2463710 +2467388 +2467389 +2467390 +2467391 +2467392 +2467393 +2467394 +2467395 +2467396 +2467397 +2467398 +2467399 +2467400 +2467401 +2467402 +2467403 +2467404 +2467405 +2467406 +2467407 +2467408 +2467409 +2467410 +2467411 +2467412 +2467413 +2467414 +2467415 +2467416 +2467417 +2467419 +2467420 +2467421 +2467422 +2467423 +2467424 +2467425 +2467426 +2467427 +2467428 +2467429 +2467430 +2467431 +2467432 +2467433 +2467434 +2467435 +2467436 +2467437 +2467438 +2467439 +2467440 +2467441 +2467442 +2467443 +2467444 +2467445 +2467446 +2467447 +2467448 +2467449 +2467450 +2467451 +2467452 +2467453 +2467454 +2467455 +2467456 +2467457 +2467458 +2467459 +2467460 +2467461 +2467462 +2467463 +2467464 +2467465 +2467466 +2467467 +2467468 +2467469 +2467470 +2467471 +2467472 +2467473 +2467474 +2467475 +2467476 +2467477 +2467478 +2467479 +2467480 +2467481 +2467482 +2467483 +2467484 +2467485 +2467486 +2467487 +2467488 +2467489 +2467490 +2467491 +2467492 +2467493 +2467494 +2467495 +2467496 +2467497 +2467498 +2467499 +2467500 +2467501 +2467502 +2467503 +2467504 +2467505 +2467506 +2467507 +2467508 +2467509 +2467510 +2467511 +2467512 +2467513 +2467514 +2467515 +2467516 +2467517 +2467518 +2467519 +2467520 +2467521 +2467522 +2467523 +2467524 +2467525 +2467526 +2467527 +2467528 +2467529 +2467530 +2467531 +2467532 +2467533 +2467534 +2467535 +2467536 +2467537 +2467538 +2467539 +2467540 +2467541 +2467542 +2467543 +2467544 +2467545 +2467546 +2467547 +2467548 +2467549 +2467550 +2467551 +2467552 +2467553 +2467554 +2467555 +2467556 +2467557 +2467558 +2467559 +2467560 +2467561 +2467562 +2467563 +2467564 +2467565 +2467566 +2467567 +2467568 +2467569 +2467570 +2467571 +2467572 +2467573 +2467574 +2467575 +2467576 +2467577 +2467578 +2467579 +2467580 +2467581 +2467582 +2467583 +2467584 +2467585 +2467586 +2467587 +2467588 +2467589 +2467590 +2467591 +2467592 +2467593 +2467594 +2467595 +2467596 +2467597 +2467598 +2467599 +2467600 +2467601 +2467602 +2467603 +2467604 +2467605 +2467606 +2467607 +2467608 +2467609 +2467610 +2467611 +2467612 +2467613 +2467614 +2467615 +2467616 +2467617 +2467618 +2467619 +2467620 +2467621 +2467622 +2467623 +2467624 +2467625 +2467626 +2467627 +2467628 +2467629 +2467630 +2467631 +2467632 +2467633 +2467634 +2467635 +2467636 +2467637 +2467638 +2467639 +2467640 +2467641 +2467642 +2467643 +2467644 +2467645 +2467646 +2467647 +2467648 +2467649 +2467650 +2467651 +2467652 +2467653 +2467654 +2467655 +2467656 +2467657 +2467658 +2467659 +2467660 +2467661 +2467662 +2467663 +2467664 +2467665 +2467666 +2467667 +2467668 +2467669 +2467670 +2467671 +2467672 +2467673 +2467674 +2467675 +2467676 +2467677 +2467678 +2467679 +2467680 +2467681 +2467682 +2467683 +2467684 +2467685 +2467686 +2467687 +2467688 +2467689 +2467690 +2467691 +2467692 +2467693 +2467694 +2467695 +2467696 +2467697 +2467698 +2467699 +2467700 +2467701 +2467702 +2467703 +2467704 +2467705 +2467706 +2467707 +2467708 +2467709 +2467710 +2467711 +2467712 +2467713 +2467714 +2467715 +2467716 +2467717 +2467718 +2467719 +2467720 +2467721 +2467722 +2467723 +2467724 +2467725 +2467726 +2467727 +2467728 +2467729 +2467730 +2467731 +2467732 +2467733 +2467734 +2467735 +2467736 +2467737 +2467738 +2467739 +2467740 +2467741 +2467742 +2467743 +2467744 +2467745 +2467746 +2467747 +2467748 +2467749 +2467750 +2467751 +2467752 +2467753 +2467754 +2467755 +2467756 +2467757 +2467758 +2467759 +2467760 +2467761 +2467762 +2467763 +2467764 +2467765 +2467766 +2467767 +2467768 +2467769 +2467770 +2467771 +2467772 +2467773 +2467774 +2467775 +2467776 +2467777 +2467778 +2467779 +2467780 +2467781 +2467782 +2467783 +2467784 +2467785 +2467786 +2467787 +2467788 +2467789 +2467790 +2467791 +2467792 +2467793 +2467794 +2467795 +2467796 +2467797 +2467798 +2467799 +2467800 +2467801 +2467802 +2467803 +2467804 +2467805 +2467806 +2467807 +2467808 +2467809 +2467810 +2467811 +2467812 +2467813 +2467814 +2467815 +2467816 +2467817 +2467818 +2467819 +2467820 +2467821 +2467822 +2467823 +2467824 +2467825 +2467826 +2467845 +2467846 +2467847 +2467848 +2467849 +2467850 +2467851 +2467852 +2467853 +2467854 +2467855 +2467856 +2467857 +2467858 +2467859 +2467860 +2467861 +2467862 +2467863 +2467864 +2467865 +2467866 +2467867 +2467868 +2467869 +2467870 +2467871 +2467872 +2467873 +2467874 +2467875 +2467876 +2467877 +2467878 +2467879 +2467880 +2467881 +2467882 +2467883 +2467925 +2467926 +2467927 +2467928 +2467929 +2467930 +2467931 +2467932 +2467933 +2467934 +2467935 +2467936 +2467937 +2467938 +2467939 +2467940 +2467941 +2467942 +2467943 +2467944 +2467945 +2467946 +2467947 +2467948 +2467949 +2467950 +2467951 +2467952 +2467953 +2467954 +2467955 +2467956 +2467957 +2467958 +2467959 +2467960 +2467961 +2467962 +2467963 +2467964 +2467965 +2467966 +2467967 +2467968 +2467969 +2467970 +2467971 +2467972 +2467973 +2467974 +2467975 +2467976 +2467977 +2467978 +2467979 +2467980 +2467981 +2467982 +2467983 +2467984 +2467985 +2467986 +2467987 +2467988 +2467989 +2467990 +2467991 +2467992 +2467993 +2467994 +2467995 +2467996 +2467997 +2467998 +2467999 +2468000 +2468001 +2468002 +2468003 +2468004 +2468005 +2468006 +2468007 +2468008 +2468009 +2468010 +2468011 +2468012 +2468014 +2468015 +2468016 +2468017 +2468018 +2468019 +2468020 +2468021 +2468022 +2468023 +2468024 +2468025 +2468026 +2468027 +2468028 +2468029 +2471708 +2471709 +2471710 +2471711 +2471712 +2471713 +2471714 +2471715 +2471716 +2471717 +2471718 +2471719 +2471720 +2471721 +2471722 +2471723 +2471724 +2471725 +2471726 +2471727 +2471728 +2471729 +2471730 +2471731 +2471732 +2471733 +2471734 +2471735 +2471736 +2471737 +2471738 +2471739 +2471740 +2471741 +2471742 +2471743 +2471744 +2471745 +2471746 +2471747 +2471748 +2471749 +2471750 +2471751 +2471752 +2471753 +2471754 +2471755 +2471756 +2471757 +2471758 +2471759 +2471760 +2471761 +2471762 +2471763 +2471764 +2471765 +2471766 +2471767 +2471768 +2471769 +2471770 +2471771 +2471772 +2471773 +2471774 +2471775 +2471776 +2471777 +2471778 +2471779 +2471780 +2471781 +2471782 +2471783 +2471784 +2471785 +2471786 +2471787 +2471788 +2471789 +2471790 +2471791 +2471792 +2471793 +2471794 +2471795 +2471796 +2471797 +2471798 +2471799 +2471800 +2471801 +2471802 +2471803 +2471804 +2471805 +2471806 +2471807 +2471808 +2471809 +2471810 +2471811 +2471812 +2471813 +2471814 +2471815 +2471816 +2471817 +2471818 +2471819 +2471820 +2471821 +2471822 +2471823 +2471824 +2471825 +2471826 +2471827 +2471828 +2471829 +2471830 +2471831 +2471832 +2471833 +2471834 +2471835 +2471836 +2471837 +2471838 +2471839 +2471840 +2471841 +2471842 +2471843 +2471844 +2471845 +2471846 +2471847 +2471848 +2471849 +2471850 +2471851 +2471852 +2471853 +2471854 +2471855 +2471856 +2471857 +2471858 +2471859 +2471860 +2471861 +2471862 +2471863 +2471864 +2471865 +2471866 +2471867 +2471868 +2471869 +2471870 +2471871 +2471872 +2471873 +2471874 +2471875 +2471876 +2471877 +2471878 +2471879 +2471880 +2471881 +2471882 +2471883 +2471884 +2471885 +2471886 +2471887 +2471888 +2471889 +2471890 +2471891 +2471892 +2471893 +2471894 +2471895 +2471896 +2471897 +2471898 +2471899 +2471900 +2471901 +2471902 +2471903 +2471904 +2471905 +2471906 +2471907 +2471908 +2471909 +2471910 +2471911 +2471912 +2471913 +2471914 +2471915 +2471916 +2471917 +2471918 +2471919 +2471920 +2471921 +2471922 +2471923 +2471924 +2471925 +2471926 +2471927 +2471928 +2471929 +2471930 +2471931 +2471932 +2471933 +2471934 +2471935 +2471936 +2471937 +2471938 +2471939 +2471940 +2471941 +2471942 +2471943 +2471944 +2471945 +2471946 +2471947 +2471948 +2471949 +2471950 +2471951 +2471952 +2471953 +2471954 +2471955 +2471956 +2471957 +2471958 +2471959 +2471960 +2471961 +2471962 +2471963 +2471964 +2471965 +2471966 +2471967 +2471968 +2471969 +2471970 +2471971 +2471972 +2471973 +2471974 +2471975 +2471976 +2471977 +2471978 +2471979 +2471980 +2471981 +2471982 +2471983 +2471984 +2471985 +2471986 +2471987 +2471988 +2471989 +2471990 +2471991 +2471992 +2471993 +2471994 +2471995 +2471996 +2471997 +2471998 +2471999 +2472000 +2472001 +2472002 +2472003 +2472004 +2472005 +2472006 +2472007 +2472008 +2472009 +2472010 +2472011 +2472012 +2472013 +2472014 +2472015 +2472016 +2472017 +2472018 +2472019 +2472020 +2472021 +2472022 +2472023 +2472024 +2472025 +2472026 +2472027 +2472028 +2472029 +2472030 +2472031 +2472032 +2472033 +2472034 +2472035 +2472036 +2472037 +2472038 +2472039 +2472040 +2472041 +2472042 +2472043 +2472044 +2472045 +2472046 +2472047 +2472048 +2472049 +2472050 +2472051 +2472052 +2472053 +2472054 +2472055 +2472056 +2472057 +2472058 +2472059 +2472060 +2472061 +2472062 +2472063 +2472064 +2472065 +2472066 +2472067 +2472068 +2472069 +2472070 +2472071 +2472072 +2472073 +2472074 +2472075 +2472076 +2472077 +2472078 +2472079 +2472080 +2472081 +2472082 +2472083 +2472084 +2472085 +2472086 +2472087 +2472088 +2472089 +2472090 +2472091 +2472092 +2472093 +2472094 +2472095 +2472096 +2472097 +2472098 +2472099 +2472100 +2472101 +2472102 +2472103 +2472104 +2472105 +2472106 +2472107 +2472108 +2472109 +2472110 +2472111 +2472112 +2472113 +2472114 +2472115 +2472116 +2472117 +2472118 +2472119 +2472120 +2472121 +2472122 +2472123 +2472124 +2472125 +2472126 +2472127 +2472128 +2472129 +2472130 +2472131 +2472132 +2472133 +2472134 +2472135 +2472136 +2472137 +2472138 +2472139 +2472140 +2472141 +2472142 +2472143 +2472144 +2472145 +2472146 +2472164 +2472165 +2472166 +2472167 +2472168 +2472169 +2472170 +2472171 +2472172 +2472173 +2472174 +2472175 +2472176 +2472177 +2472178 +2472179 +2472180 +2472181 +2472182 +2472183 +2472184 +2472185 +2472186 +2472187 +2472188 +2472189 +2472190 +2472191 +2472192 +2472193 +2472194 +2472195 +2472196 +2472197 +2472198 +2472199 +2472200 +2472243 +2472244 +2472245 +2472246 +2472247 +2472248 +2472249 +2472250 +2472251 +2472252 +2472253 +2472254 +2472255 +2472256 +2472257 +2472258 +2472259 +2472260 +2472261 +2472262 +2472263 +2472264 +2472265 +2472266 +2472267 +2472268 +2472269 +2472270 +2472271 +2472272 +2472273 +2472274 +2472275 +2472276 +2472277 +2472278 +2472279 +2472280 +2472281 +2472282 +2472283 +2472284 +2472285 +2472286 +2472287 +2472288 +2472289 +2472290 +2472291 +2472292 +2472293 +2472294 +2472295 +2472296 +2472297 +2472298 +2472299 +2472300 +2472301 +2472302 +2472303 +2472304 +2472305 +2472306 +2472307 +2472308 +2472309 +2472310 +2472311 +2472312 +2472313 +2472314 +2472315 +2472316 +2472317 +2472318 +2472319 +2472320 +2472321 +2472322 +2472323 +2472324 +2472325 +2472326 +2472327 +2472328 +2472329 +2472330 +2472331 +2472332 +2472333 +2472334 +2472335 +2472336 +2472337 +2472338 +2472339 +2472340 +2472341 +2472342 +2472343 +2472344 +2472345 +2472346 +2472347 +2472348 +2472349 +2472350 +2476028 +2476029 +2476030 +2476031 +2476032 +2476033 +2476034 +2476035 +2476036 +2476037 +2476038 +2476039 +2476040 +2476041 +2476042 +2476043 +2476044 +2476045 +2476046 +2476047 +2476048 +2476049 +2476050 +2476051 +2476052 +2476053 +2476054 +2476055 +2476056 +2476057 +2476058 +2476059 +2476060 +2476061 +2476062 +2476063 +2476064 +2476065 +2476066 +2476067 +2476068 +2476069 +2476070 +2476071 +2476072 +2476073 +2476074 +2476075 +2476076 +2476077 +2476078 +2476079 +2476080 +2476081 +2476082 +2476083 +2476084 +2476085 +2476086 +2476087 +2476088 +2476089 +2476090 +2476091 +2476092 +2476093 +2476094 +2476095 +2476096 +2476097 +2476098 +2476099 +2476100 +2476101 +2476102 +2476103 +2476104 +2476105 +2476106 +2476107 +2476108 +2476109 +2476110 +2476111 +2476112 +2476113 +2476114 +2476115 +2476116 +2476117 +2476118 +2476119 +2476120 +2476121 +2476122 +2476123 +2476124 +2476125 +2476126 +2476127 +2476128 +2476129 +2476130 +2476131 +2476132 +2476133 +2476134 +2476135 +2476136 +2476137 +2476138 +2476139 +2476140 +2476141 +2476142 +2476143 +2476144 +2476145 +2476146 +2476147 +2476148 +2476149 +2476150 +2476151 +2476152 +2476153 +2476154 +2476155 +2476156 +2476157 +2476158 +2476159 +2476160 +2476161 +2476162 +2476163 +2476164 +2476165 +2476166 +2476167 +2476168 +2476169 +2476170 +2476171 +2476172 +2476173 +2476174 +2476175 +2476176 +2476177 +2476178 +2476179 +2476180 +2476181 +2476182 +2476183 +2476184 +2476185 +2476186 +2476187 +2476188 +2476189 +2476190 +2476191 +2476192 +2476193 +2476194 +2476195 +2476196 +2476197 +2476198 +2476199 +2476200 +2476201 +2476202 +2476203 +2476204 +2476205 +2476206 +2476207 +2476208 +2476209 +2476210 +2476211 +2476212 +2476213 +2476214 +2476215 +2476216 +2476217 +2476218 +2476219 +2476220 +2476221 +2476222 +2476223 +2476224 +2476225 +2476226 +2476227 +2476228 +2476229 +2476230 +2476231 +2476232 +2476233 +2476234 +2476235 +2476236 +2476237 +2476238 +2476239 +2476240 +2476241 +2476242 +2476243 +2476244 +2476245 +2476246 +2476247 +2476248 +2476249 +2476250 +2476251 +2476252 +2476253 +2476254 +2476255 +2476256 +2476257 +2476258 +2476259 +2476260 +2476261 +2476262 +2476263 +2476264 +2476265 +2476266 +2476267 +2476268 +2476269 +2476270 +2476271 +2476272 +2476273 +2476274 +2476275 +2476276 +2476277 +2476278 +2476279 +2476280 +2476281 +2476282 +2476283 +2476284 +2476285 +2476286 +2476287 +2476288 +2476289 +2476290 +2476291 +2476292 +2476293 +2476294 +2476295 +2476296 +2476297 +2476298 +2476299 +2476300 +2476301 +2476302 +2476303 +2476304 +2476305 +2476306 +2476307 +2476308 +2476309 +2476310 +2476311 +2476312 +2476313 +2476314 +2476315 +2476316 +2476317 +2476318 +2476319 +2476320 +2476321 +2476322 +2476323 +2476324 +2476325 +2476326 +2476327 +2476328 +2476329 +2476330 +2476331 +2476332 +2476333 +2476334 +2476335 +2476336 +2476337 +2476338 +2476339 +2476340 +2476341 +2476342 +2476343 +2476344 +2476345 +2476346 +2476347 +2476348 +2476349 +2476350 +2476351 +2476352 +2476353 +2476354 +2476355 +2476356 +2476357 +2476358 +2476359 +2476360 +2476361 +2476362 +2476363 +2476364 +2476365 +2476366 +2476367 +2476368 +2476369 +2476370 +2476371 +2476372 +2476373 +2476374 +2476375 +2476376 +2476377 +2476378 +2476379 +2476380 +2476381 +2476382 +2476383 +2476384 +2476385 +2476386 +2476387 +2476388 +2476389 +2476390 +2476391 +2476392 +2476393 +2476394 +2476395 +2476396 +2476397 +2476398 +2476399 +2476400 +2476401 +2476402 +2476403 +2476404 +2476405 +2476406 +2476407 +2476408 +2476409 +2476410 +2476411 +2476412 +2476413 +2476414 +2476415 +2476416 +2476417 +2476418 +2476419 +2476420 +2476421 +2476422 +2476423 +2476424 +2476425 +2476426 +2476427 +2476428 +2476429 +2476430 +2476431 +2476432 +2476433 +2476434 +2476435 +2476436 +2476437 +2476438 +2476439 +2476440 +2476441 +2476442 +2476443 +2476444 +2476445 +2476446 +2476447 +2476448 +2476449 +2476450 +2476451 +2476452 +2476453 +2476454 +2476455 +2476456 +2476457 +2476458 +2476459 +2476460 +2476461 +2476462 +2476463 +2476464 +2476465 +2476466 +2476484 +2476485 +2476486 +2476487 +2476488 +2476489 +2476490 +2476491 +2476492 +2476493 +2476494 +2476495 +2476496 +2476497 +2476498 +2476499 +2476500 +2476501 +2476502 +2476503 +2476504 +2476505 +2476506 +2476507 +2476508 +2476509 +2476510 +2476511 +2476512 +2476513 +2476514 +2476515 +2476516 +2476517 +2476518 +2476519 +2476520 +2476561 +2476562 +2476563 +2476564 +2476565 +2476566 +2476567 +2476568 +2476569 +2476570 +2476571 +2476572 +2476573 +2476574 +2476575 +2476576 +2476577 +2476578 +2476579 +2476580 +2476581 +2476582 +2476583 +2476584 +2476585 +2476586 +2476587 +2476588 +2476589 +2476590 +2476591 +2476592 +2476593 +2476594 +2476595 +2476596 +2476597 +2476598 +2476599 +2476600 +2476601 +2476602 +2476603 +2476604 +2476605 +2476606 +2476607 +2476608 +2476609 +2476610 +2476611 +2476612 +2476613 +2476614 +2476615 +2476616 +2476617 +2476618 +2476619 +2476620 +2476621 +2476622 +2476623 +2476624 +2476625 +2476626 +2476627 +2476628 +2476629 +2476630 +2476631 +2476632 +2476633 +2476634 +2476635 +2476636 +2476637 +2476638 +2476639 +2476640 +2476641 +2476642 +2476643 +2476644 +2476645 +2476646 +2476647 +2476648 +2476649 +2476650 +2476651 +2476652 +2476653 +2476654 +2476655 +2476656 +2476657 +2476658 +2476659 +2476660 +2476661 +2476662 +2476663 +2476664 +2476665 +2476666 +2476667 +2476668 +2476669 +2476670 +2480348 +2480349 +2480350 +2480351 +2480352 +2480353 +2480354 +2480355 +2480356 +2480357 +2480358 +2480359 +2480360 +2480361 +2480362 +2480363 +2480364 +2480365 +2480366 +2480367 +2480368 +2480369 +2480370 +2480371 +2480372 +2480373 +2480374 +2480375 +2480376 +2480377 +2480378 +2480379 +2480380 +2480381 +2480382 +2480383 +2480384 +2480385 +2480386 +2480387 +2480388 +2480389 +2480390 +2480391 +2480392 +2480393 +2480394 +2480395 +2480396 +2480397 +2480398 +2480399 +2480400 +2480401 +2480402 +2480403 +2480404 +2480405 +2480406 +2480407 +2480408 +2480409 +2480410 +2480411 +2480412 +2480413 +2480414 +2480415 +2480416 +2480417 +2480418 +2480419 +2480420 +2480421 +2480422 +2480423 +2480424 +2480425 +2480426 +2480427 +2480428 +2480429 +2480430 +2480431 +2480432 +2480433 +2480434 +2480435 +2480436 +2480437 +2480438 +2480439 +2480440 +2480441 +2480442 +2480443 +2480444 +2480445 +2480446 +2480447 +2480448 +2480449 +2480450 +2480451 +2480452 +2480453 +2480454 +2480455 +2480456 +2480457 +2480458 +2480459 +2480460 +2480461 +2480462 +2480463 +2480464 +2480465 +2480466 +2480467 +2480468 +2480469 +2480470 +2480471 +2480472 +2480473 +2480474 +2480475 +2480476 +2480477 +2480478 +2480479 +2480480 +2480481 +2480482 +2480483 +2480484 +2480485 +2480486 +2480487 +2480488 +2480489 +2480490 +2480491 +2480492 +2480493 +2480494 +2480495 +2480496 +2480497 +2480498 +2480499 +2480500 +2480501 +2480502 +2480503 +2480504 +2480505 +2480506 +2480507 +2480508 +2480509 +2480510 +2480511 +2480512 +2480513 +2480514 +2480515 +2480516 +2480517 +2480518 +2480519 +2480520 +2480521 +2480522 +2480523 +2480524 +2480525 +2480526 +2480527 +2480528 +2480529 +2480530 +2480531 +2480532 +2480533 +2480534 +2480535 +2480536 +2480537 +2480538 +2480539 +2480540 +2480541 +2480542 +2480543 +2480544 +2480545 +2480546 +2480547 +2480548 +2480549 +2480550 +2480551 +2480552 +2480553 +2480554 +2480555 +2480556 +2480557 +2480558 +2480559 +2480560 +2480561 +2480562 +2480563 +2480564 +2480565 +2480566 +2480567 +2480568 +2480569 +2480570 +2480571 +2480572 +2480573 +2480574 +2480575 +2480576 +2480577 +2480578 +2480579 +2480580 +2480581 +2480582 +2480583 +2480584 +2480585 +2480586 +2480587 +2480588 +2480589 +2480590 +2480591 +2480592 +2480593 +2480594 +2480595 +2480596 +2480597 +2480598 +2480599 +2480600 +2480601 +2480602 +2480603 +2480604 +2480605 +2480606 +2480607 +2480608 +2480609 +2480610 +2480611 +2480612 +2480613 +2480614 +2480615 +2480616 +2480617 +2480618 +2480619 +2480620 +2480621 +2480622 +2480623 +2480624 +2480625 +2480626 +2480627 +2480628 +2480629 +2480630 +2480631 +2480632 +2480633 +2480634 +2480635 +2480636 +2480637 +2480638 +2480639 +2480640 +2480641 +2480642 +2480643 +2480644 +2480645 +2480646 +2480647 +2480648 +2480649 +2480650 +2480651 +2480652 +2480653 +2480654 +2480655 +2480656 +2480657 +2480658 +2480659 +2480660 +2480661 +2480662 +2480663 +2480664 +2480665 +2480666 +2480667 +2480668 +2480669 +2480670 +2480671 +2480672 +2480673 +2480674 +2480675 +2480676 +2480677 +2480678 +2480679 +2480680 +2480681 +2480682 +2480683 +2480684 +2480685 +2480686 +2480687 +2480688 +2480689 +2480690 +2480691 +2480692 +2480693 +2480694 +2480695 +2480696 +2480697 +2480698 +2480699 +2480700 +2480701 +2480702 +2480703 +2480704 +2480705 +2480706 +2480707 +2480708 +2480709 +2480710 +2480711 +2480712 +2480713 +2480714 +2480715 +2480716 +2480717 +2480718 +2480719 +2480720 +2480721 +2480722 +2480723 +2480724 +2480725 +2480726 +2480727 +2480728 +2480729 +2480730 +2480731 +2480732 +2480733 +2480734 +2480735 +2480736 +2480737 +2480738 +2480739 +2480740 +2480741 +2480742 +2480743 +2480744 +2480745 +2480746 +2480747 +2480748 +2480749 +2480750 +2480751 +2480752 +2480753 +2480754 +2480755 +2480756 +2480757 +2480758 +2480759 +2480760 +2480761 +2480762 +2480763 +2480764 +2480765 +2480766 +2480767 +2480768 +2480769 +2480770 +2480771 +2480772 +2480773 +2480774 +2480775 +2480776 +2480777 +2480778 +2480779 +2480780 +2480781 +2480782 +2480783 +2480784 +2480785 +2480786 +2480803 +2480804 +2480805 +2480806 +2480807 +2480808 +2480809 +2480810 +2480811 +2480812 +2480813 +2480814 +2480815 +2480816 +2480817 +2480818 +2480819 +2480820 +2480821 +2480822 +2480823 +2480824 +2480825 +2480826 +2480827 +2480828 +2480829 +2480830 +2480831 +2480832 +2480833 +2480834 +2480835 +2480836 +2480837 +2480838 +2480839 +2480840 +2480878 +2480879 +2480880 +2480881 +2480882 +2480883 +2480884 +2480885 +2480886 +2480887 +2480888 +2480889 +2480890 +2480891 +2480892 +2480893 +2480894 +2480895 +2480896 +2480897 +2480898 +2480899 +2480900 +2480901 +2480902 +2480903 +2480904 +2480905 +2480906 +2480907 +2480908 +2480909 +2480910 +2480911 +2480912 +2480913 +2480914 +2480915 +2480916 +2480917 +2480918 +2480919 +2480920 +2480921 +2480922 +2480923 +2480924 +2480925 +2480926 +2480927 +2480928 +2480929 +2480930 +2480931 +2480932 +2480933 +2480934 +2480935 +2480936 +2480937 +2480938 +2480939 +2480940 +2480941 +2480942 +2480943 +2480944 +2480945 +2480946 +2480947 +2480948 +2480949 +2480950 +2480951 +2480952 +2480953 +2480954 +2480955 +2480956 +2480957 +2480958 +2480959 +2480960 +2480961 +2480962 +2480963 +2480964 +2480965 +2480966 +2480967 +2480968 +2480969 +2480970 +2480971 +2480972 +2480973 +2480974 +2480975 +2480976 +2480977 +2480978 +2480979 +2480980 +2480981 +2480982 +2480983 +2480984 +2480985 +2480986 +2480987 +2480988 +2480989 +2480990 +2480991 +2480992 +2480993 +2484671 +2484672 +2484673 +2484674 +2484675 +2484676 +2484677 +2484678 +2484679 +2484680 +2484681 +2484682 +2484683 +2484684 +2484685 +2484686 +2484687 +2484688 +2484689 +2484690 +2484691 +2484692 +2484693 +2484694 +2484695 +2484696 +2484697 +2484698 +2484699 +2484700 +2484701 +2484702 +2484703 +2484704 +2484705 +2484706 +2484707 +2484708 +2484709 +2484710 +2484711 +2484712 +2484713 +2484714 +2484715 +2484716 +2484717 +2484718 +2484719 +2484720 +2484721 +2484722 +2484723 +2484724 +2484725 +2484726 +2484727 +2484728 +2484729 +2484730 +2484731 +2484732 +2484733 +2484734 +2484735 +2484736 +2484737 +2484738 +2484739 +2484740 +2484741 +2484742 +2484743 +2484744 +2484745 +2484746 +2484747 +2484748 +2484749 +2484750 +2484751 +2484752 +2484753 +2484754 +2484755 +2484756 +2484757 +2484758 +2484759 +2484760 +2484761 +2484762 +2484763 +2484764 +2484765 +2484766 +2484767 +2484768 +2484769 +2484770 +2484771 +2484772 +2484773 +2484774 +2484775 +2484776 +2484777 +2484778 +2484779 +2484780 +2484781 +2484782 +2484783 +2484784 +2484785 +2484786 +2484787 +2484788 +2484789 +2484790 +2484791 +2484792 +2484793 +2484794 +2484795 +2484796 +2484797 +2484798 +2484799 +2484800 +2484801 +2484802 +2484803 +2484804 +2484805 +2484806 +2484807 +2484808 +2484809 +2484810 +2484811 +2484812 +2484813 +2484814 +2484815 +2484816 +2484817 +2484818 +2484819 +2484820 +2484821 +2484822 +2484823 +2484825 +2484826 +2484827 +2484828 +2484829 +2484830 +2484831 +2484832 +2484833 +2484834 +2484835 +2484836 +2484837 +2484838 +2484839 +2484840 +2484841 +2484842 +2484843 +2484844 +2484845 +2484846 +2484847 +2484848 +2484849 +2484850 +2484851 +2484852 +2484853 +2484854 +2484855 +2484856 +2484857 +2484858 +2484859 +2484860 +2484861 +2484862 +2484863 +2484864 +2484865 +2484866 +2484867 +2484868 +2484869 +2484870 +2484871 +2484872 +2484873 +2484874 +2484875 +2484876 +2484877 +2484879 +2484880 +2484881 +2484882 +2484883 +2484884 +2484885 +2484886 +2484887 +2484888 +2484889 +2484890 +2484891 +2484892 +2484893 +2484894 +2484895 +2484896 +2484897 +2484898 +2484899 +2484900 +2484901 +2484902 +2484903 +2484904 +2484905 +2484906 +2484907 +2484908 +2484909 +2484910 +2484911 +2484912 +2484913 +2484914 +2484915 +2484916 +2484917 +2484918 +2484919 +2484920 +2484921 +2484922 +2484923 +2484924 +2484925 +2484926 +2484927 +2484928 +2484929 +2484930 +2484931 +2484932 +2484933 +2484934 +2484935 +2484936 +2484937 +2484938 +2484939 +2484940 +2484941 +2484942 +2484943 +2484944 +2484945 +2484946 +2484947 +2484948 +2484949 +2484950 +2484951 +2484952 +2484953 +2484954 +2484955 +2484956 +2484957 +2484958 +2484959 +2484960 +2484961 +2484962 +2484963 +2484964 +2484965 +2484966 +2484967 +2484968 +2484969 +2484970 +2484971 +2484972 +2484973 +2484974 +2484975 +2484976 +2484977 +2484978 +2484979 +2484980 +2484981 +2484982 +2484983 +2484984 +2484985 +2484986 +2484987 +2484988 +2484989 +2484990 +2484991 +2484992 +2484993 +2484994 +2484995 +2484996 +2484997 +2484998 +2484999 +2485000 +2485001 +2485002 +2485003 +2485004 +2485005 +2485006 +2485007 +2485008 +2485009 +2485010 +2485011 +2485012 +2485013 +2485014 +2485015 +2485016 +2485017 +2485018 +2485019 +2485020 +2485021 +2485022 +2485023 +2485024 +2485025 +2485026 +2485027 +2485028 +2485029 +2485030 +2485031 +2485032 +2485033 +2485034 +2485035 +2485036 +2485037 +2485038 +2485039 +2485040 +2485041 +2485042 +2485043 +2485044 +2485045 +2485046 +2485047 +2485048 +2485049 +2485050 +2485051 +2485052 +2485053 +2485054 +2485055 +2485056 +2485057 +2485058 +2485059 +2485060 +2485061 +2485062 +2485063 +2485064 +2485065 +2485066 +2485067 +2485068 +2485069 +2485070 +2485071 +2485072 +2485073 +2485074 +2485075 +2485076 +2485077 +2485078 +2485079 +2485080 +2485081 +2485082 +2485083 +2485084 +2485085 +2485086 +2485087 +2485088 +2485089 +2485090 +2485091 +2485092 +2485093 +2485094 +2485095 +2485096 +2485097 +2485098 +2485099 +2485100 +2485101 +2485102 +2485103 +2485104 +2485105 +2485106 +2485107 +2485122 +2485123 +2485124 +2485125 +2485126 +2485127 +2485128 +2485129 +2485130 +2485131 +2485132 +2485133 +2485134 +2485135 +2485136 +2485137 +2485138 +2485139 +2485140 +2485141 +2485142 +2485143 +2485144 +2485145 +2485146 +2485147 +2485148 +2485149 +2485150 +2485151 +2485152 +2485153 +2485154 +2485155 +2485156 +2485157 +2485158 +2485159 +2485160 +2485195 +2485196 +2485197 +2485198 +2485199 +2485200 +2485201 +2485202 +2485203 +2485204 +2485205 +2485206 +2485207 +2485208 +2485209 +2485210 +2485211 +2485212 +2485213 +2485214 +2485215 +2485216 +2485217 +2485218 +2485219 +2485220 +2485221 +2485222 +2485223 +2485224 +2485225 +2485226 +2485227 +2485228 +2485229 +2485230 +2485231 +2485232 +2485233 +2485234 +2485235 +2485236 +2485237 +2485238 +2485239 +2485240 +2485241 +2485242 +2485243 +2485244 +2485245 +2485246 +2485247 +2485248 +2485249 +2485250 +2485251 +2485252 +2485253 +2485254 +2485255 +2485256 +2485257 +2485258 +2485259 +2485260 +2485261 +2485262 +2485263 +2485264 +2485265 +2485266 +2485267 +2485268 +2485269 +2485270 +2485271 +2485272 +2485273 +2485274 +2485275 +2485276 +2485277 +2485278 +2485279 +2485280 +2485281 +2485282 +2485283 +2485284 +2485285 +2485286 +2485287 +2485288 +2485289 +2485290 +2485291 +2485292 +2485293 +2485294 +2485295 +2485296 +2485297 +2485298 +2485299 +2485300 +2485301 +2485302 +2485303 +2485304 +2485305 +2485306 +2485307 +2485308 +2485309 +2485310 +2485311 +2485312 +2485313 +2485319 +2488991 +2488992 +2488993 +2488994 +2488995 +2488996 +2488997 +2488998 +2488999 +2489000 +2489001 +2489002 +2489003 +2489004 +2489005 +2489006 +2489007 +2489008 +2489009 +2489010 +2489011 +2489012 +2489013 +2489014 +2489015 +2489016 +2489017 +2489018 +2489019 +2489020 +2489021 +2489022 +2489023 +2489024 +2489025 +2489026 +2489027 +2489028 +2489029 +2489030 +2489031 +2489032 +2489033 +2489034 +2489035 +2489036 +2489037 +2489038 +2489039 +2489040 +2489041 +2489042 +2489043 +2489044 +2489045 +2489046 +2489047 +2489048 +2489049 +2489050 +2489051 +2489052 +2489053 +2489054 +2489055 +2489056 +2489057 +2489058 +2489059 +2489060 +2489061 +2489062 +2489063 +2489064 +2489065 +2489066 +2489067 +2489068 +2489069 +2489070 +2489071 +2489072 +2489073 +2489074 +2489075 +2489076 +2489077 +2489078 +2489079 +2489080 +2489081 +2489082 +2489083 +2489084 +2489085 +2489086 +2489087 +2489088 +2489089 +2489090 +2489091 +2489092 +2489093 +2489094 +2489095 +2489096 +2489097 +2489098 +2489099 +2489100 +2489101 +2489102 +2489103 +2489104 +2489105 +2489106 +2489107 +2489108 +2489109 +2489110 +2489111 +2489112 +2489113 +2489114 +2489115 +2489116 +2489117 +2489118 +2489119 +2489120 +2489121 +2489122 +2489123 +2489124 +2489125 +2489126 +2489127 +2489128 +2489129 +2489130 +2489131 +2489132 +2489133 +2489134 +2489135 +2489136 +2489137 +2489138 +2489139 +2489140 +2489141 +2489142 +2489143 +2489145 +2489146 +2489147 +2489148 +2489149 +2489150 +2489151 +2489152 +2489153 +2489154 +2489155 +2489156 +2489157 +2489158 +2489159 +2489160 +2489161 +2489162 +2489163 +2489164 +2489165 +2489166 +2489167 +2489168 +2489169 +2489170 +2489171 +2489172 +2489173 +2489174 +2489175 +2489176 +2489177 +2489178 +2489179 +2489180 +2489181 +2489182 +2489183 +2489184 +2489185 +2489186 +2489187 +2489188 +2489189 +2489190 +2489191 +2489192 +2489193 +2489194 +2489195 +2489196 +2489197 +2489198 +2489199 +2489200 +2489201 +2489202 +2489203 +2489204 +2489205 +2489206 +2489207 +2489208 +2489209 +2489210 +2489211 +2489212 +2489213 +2489214 +2489215 +2489216 +2489217 +2489218 +2489219 +2489220 +2489221 +2489222 +2489223 +2489224 +2489225 +2489226 +2489227 +2489228 +2489229 +2489230 +2489231 +2489232 +2489233 +2489234 +2489235 +2489236 +2489237 +2489238 +2489239 +2489240 +2489241 +2489242 +2489243 +2489244 +2489245 +2489246 +2489247 +2489248 +2489249 +2489250 +2489251 +2489252 +2489253 +2489254 +2489255 +2489256 +2489257 +2489258 +2489259 +2489260 +2489261 +2489262 +2489263 +2489264 +2489265 +2489266 +2489267 +2489268 +2489269 +2489270 +2489271 +2489272 +2489273 +2489274 +2489275 +2489276 +2489277 +2489278 +2489279 +2489280 +2489281 +2489282 +2489283 +2489284 +2489285 +2489286 +2489287 +2489288 +2489289 +2489290 +2489291 +2489292 +2489293 +2489294 +2489295 +2489296 +2489297 +2489298 +2489299 +2489300 +2489301 +2489302 +2489303 +2489304 +2489305 +2489306 +2489307 +2489308 +2489309 +2489310 +2489311 +2489312 +2489313 +2489314 +2489315 +2489316 +2489317 +2489318 +2489319 +2489320 +2489321 +2489322 +2489323 +2489324 +2489325 +2489326 +2489327 +2489328 +2489329 +2489330 +2489331 +2489332 +2489333 +2489334 +2489335 +2489336 +2489337 +2489338 +2489339 +2489340 +2489341 +2489342 +2489343 +2489344 +2489345 +2489346 +2489347 +2489348 +2489349 +2489350 +2489351 +2489352 +2489353 +2489354 +2489355 +2489356 +2489357 +2489358 +2489359 +2489360 +2489361 +2489362 +2489363 +2489364 +2489365 +2489366 +2489367 +2489368 +2489369 +2489370 +2489371 +2489372 +2489373 +2489374 +2489375 +2489376 +2489377 +2489378 +2489379 +2489380 +2489381 +2489382 +2489383 +2489384 +2489385 +2489386 +2489387 +2489388 +2489389 +2489390 +2489391 +2489392 +2489393 +2489394 +2489395 +2489396 +2489397 +2489398 +2489399 +2489400 +2489401 +2489402 +2489403 +2489404 +2489405 +2489406 +2489407 +2489408 +2489409 +2489410 +2489411 +2489412 +2489413 +2489414 +2489415 +2489416 +2489417 +2489418 +2489419 +2489420 +2489421 +2489422 +2489423 +2489424 +2489425 +2489426 +2489427 +2489428 +2489442 +2489443 +2489444 +2489445 +2489446 +2489447 +2489448 +2489449 +2489450 +2489451 +2489452 +2489453 +2489454 +2489455 +2489456 +2489457 +2489458 +2489459 +2489460 +2489461 +2489462 +2489463 +2489464 +2489465 +2489466 +2489467 +2489468 +2489469 +2489470 +2489471 +2489472 +2489473 +2489474 +2489475 +2489476 +2489477 +2489478 +2489479 +2489480 +2489512 +2489513 +2489514 +2489515 +2489516 +2489517 +2489518 +2489519 +2489520 +2489521 +2489522 +2489523 +2489524 +2489525 +2489526 +2489527 +2489528 +2489529 +2489530 +2489531 +2489532 +2489533 +2489534 +2489535 +2489536 +2489537 +2489538 +2489539 +2489540 +2489541 +2489542 +2489543 +2489544 +2489545 +2489546 +2489547 +2489548 +2489549 +2489550 +2489551 +2489552 +2489553 +2489554 +2489555 +2489556 +2489557 +2489558 +2489559 +2489560 +2489561 +2489562 +2489563 +2489564 +2489565 +2489566 +2489567 +2489568 +2489569 +2489570 +2489571 +2489572 +2489573 +2489574 +2489575 +2489576 +2489577 +2489578 +2489579 +2489580 +2489581 +2489582 +2489583 +2489584 +2489585 +2489586 +2489587 +2489588 +2489589 +2489590 +2489591 +2489592 +2489593 +2489594 +2489595 +2489596 +2489597 +2489598 +2489599 +2489600 +2489601 +2489602 +2489603 +2489604 +2489605 +2489606 +2489607 +2489608 +2489609 +2489610 +2489611 +2489612 +2489613 +2489614 +2489615 +2489616 +2489617 +2489618 +2489619 +2489620 +2489621 +2489622 +2489623 +2489624 +2489625 +2489626 +2489627 +2489628 +2489629 +2489630 +2489631 +2489632 +2489633 +2493311 +2493312 +2493313 +2493314 +2493315 +2493316 +2493317 +2493318 +2493319 +2493320 +2493321 +2493322 +2493323 +2493324 +2493325 +2493326 +2493327 +2493328 +2493329 +2493330 +2493331 +2493332 +2493333 +2493334 +2493335 +2493336 +2493337 +2493338 +2493339 +2493340 +2493341 +2493342 +2493343 +2493344 +2493345 +2493348 +2493349 +2493350 +2493351 +2493352 +2493353 +2493354 +2493355 +2493356 +2493357 +2493358 +2493359 +2493360 +2493361 +2493362 +2493363 +2493364 +2493365 +2493366 +2493367 +2493368 +2493369 +2493370 +2493371 +2493372 +2493373 +2493374 +2493375 +2493376 +2493377 +2493378 +2493379 +2493380 +2493381 +2493382 +2493383 +2493384 +2493385 +2493386 +2493387 +2493388 +2493389 +2493390 +2493391 +2493392 +2493393 +2493394 +2493395 +2493396 +2493397 +2493398 +2493399 +2493400 +2493401 +2493402 +2493403 +2493404 +2493405 +2493406 +2493407 +2493408 +2493409 +2493410 +2493411 +2493412 +2493413 +2493414 +2493415 +2493416 +2493417 +2493418 +2493419 +2493420 +2493421 +2493422 +2493423 +2493424 +2493425 +2493426 +2493427 +2493428 +2493429 +2493430 +2493431 +2493432 +2493433 +2493434 +2493435 +2493436 +2493437 +2493438 +2493439 +2493440 +2493441 +2493442 +2493443 +2493444 +2493445 +2493446 +2493447 +2493448 +2493449 +2493450 +2493451 +2493452 +2493453 +2493454 +2493455 +2493456 +2493457 +2493458 +2493459 +2493460 +2493461 +2493462 +2493463 +2493465 +2493466 +2493467 +2493468 +2493469 +2493470 +2493471 +2493472 +2493473 +2493474 +2493475 +2493476 +2493477 +2493478 +2493479 +2493480 +2493481 +2493482 +2493483 +2493484 +2493485 +2493486 +2493487 +2493488 +2493489 +2493490 +2493491 +2493492 +2493493 +2493494 +2493495 +2493496 +2493497 +2493498 +2493499 +2493500 +2493501 +2493502 +2493503 +2493504 +2493505 +2493506 +2493507 +2493508 +2493509 +2493510 +2493511 +2493512 +2493513 +2493514 +2493515 +2493516 +2493517 +2493518 +2493519 +2493520 +2493521 +2493522 +2493523 +2493524 +2493525 +2493526 +2493527 +2493528 +2493529 +2493530 +2493531 +2493532 +2493533 +2493534 +2493535 +2493536 +2493537 +2493538 +2493539 +2493540 +2493541 +2493542 +2493543 +2493544 +2493545 +2493546 +2493547 +2493548 +2493549 +2493550 +2493551 +2493552 +2493553 +2493554 +2493555 +2493556 +2493557 +2493558 +2493559 +2493560 +2493561 +2493562 +2493563 +2493564 +2493565 +2493566 +2493567 +2493568 +2493569 +2493570 +2493571 +2493572 +2493573 +2493574 +2493575 +2493576 +2493577 +2493578 +2493579 +2493580 +2493581 +2493582 +2493583 +2493584 +2493585 +2493586 +2493587 +2493588 +2493589 +2493590 +2493591 +2493592 +2493593 +2493594 +2493595 +2493596 +2493597 +2493598 +2493599 +2493600 +2493601 +2493602 +2493603 +2493604 +2493605 +2493606 +2493607 +2493608 +2493609 +2493610 +2493611 +2493612 +2493613 +2493614 +2493615 +2493616 +2493617 +2493618 +2493619 +2493620 +2493621 +2493622 +2493623 +2493624 +2493625 +2493626 +2493627 +2493628 +2493629 +2493630 +2493631 +2493632 +2493633 +2493634 +2493635 +2493636 +2493637 +2493638 +2493639 +2493640 +2493641 +2493642 +2493643 +2493644 +2493645 +2493646 +2493647 +2493648 +2493649 +2493650 +2493651 +2493652 +2493653 +2493654 +2493655 +2493656 +2493657 +2493658 +2493659 +2493660 +2493661 +2493662 +2493663 +2493664 +2493665 +2493666 +2493667 +2493668 +2493669 +2493670 +2493671 +2493672 +2493673 +2493674 +2493675 +2493676 +2493677 +2493678 +2493679 +2493680 +2493681 +2493682 +2493683 +2493684 +2493685 +2493686 +2493687 +2493688 +2493689 +2493690 +2493691 +2493692 +2493693 +2493694 +2493695 +2493696 +2493697 +2493698 +2493699 +2493700 +2493701 +2493702 +2493703 +2493704 +2493705 +2493706 +2493707 +2493708 +2493709 +2493710 +2493711 +2493712 +2493713 +2493714 +2493715 +2493716 +2493717 +2493718 +2493719 +2493720 +2493721 +2493722 +2493723 +2493724 +2493725 +2493726 +2493727 +2493728 +2493729 +2493730 +2493731 +2493732 +2493733 +2493734 +2493735 +2493736 +2493737 +2493738 +2493739 +2493740 +2493741 +2493742 +2493743 +2493744 +2493745 +2493746 +2493747 +2493748 +2493760 +2493761 +2493762 +2493763 +2493764 +2493765 +2493766 +2493767 +2493768 +2493769 +2493770 +2493771 +2493772 +2493773 +2493774 +2493775 +2493776 +2493777 +2493778 +2493779 +2493780 +2493781 +2493782 +2493783 +2493784 +2493785 +2493786 +2493787 +2493788 +2493789 +2493790 +2493791 +2493792 +2493793 +2493794 +2493795 +2493796 +2493797 +2493798 +2493799 +2493800 +2493829 +2493830 +2493831 +2493832 +2493833 +2493834 +2493835 +2493836 +2493837 +2493838 +2493839 +2493840 +2493841 +2493842 +2493843 +2493844 +2493845 +2493846 +2493847 +2493848 +2493849 +2493850 +2493851 +2493852 +2493853 +2493854 +2493855 +2493856 +2493857 +2493858 +2493859 +2493860 +2493861 +2493862 +2493863 +2493864 +2493865 +2493866 +2493867 +2493868 +2493869 +2493870 +2493871 +2493872 +2493873 +2493874 +2493875 +2493876 +2493877 +2493878 +2493879 +2493880 +2493881 +2493882 +2493883 +2493884 +2493885 +2493886 +2493887 +2493888 +2493889 +2493890 +2493891 +2493892 +2493893 +2493894 +2493895 +2493896 +2493897 +2493898 +2493899 +2493900 +2493901 +2493902 +2493903 +2493904 +2493905 +2493906 +2493907 +2493908 +2493909 +2493910 +2493911 +2493912 +2493913 +2493914 +2493915 +2493916 +2493917 +2493918 +2493919 +2493920 +2493921 +2493922 +2493923 +2493924 +2493925 +2493926 +2493927 +2493928 +2493929 +2493930 +2493931 +2493932 +2493933 +2493934 +2493935 +2493936 +2493937 +2493938 +2493939 +2493940 +2493941 +2493942 +2493943 +2493944 +2493945 +2493946 +2493947 +2493948 +2493949 +2493950 +2493951 +2493952 +2493953 +2493960 +2493961 +2497631 +2497632 +2497633 +2497634 +2497635 +2497636 +2497637 +2497638 +2497639 +2497640 +2497641 +2497642 +2497643 +2497644 +2497645 +2497646 +2497647 +2497648 +2497649 +2497650 +2497651 +2497652 +2497653 +2497654 +2497655 +2497656 +2497657 +2497658 +2497659 +2497660 +2497661 +2497662 +2497663 +2497664 +2497665 +2497666 +2497667 +2497668 +2497669 +2497670 +2497671 +2497672 +2497673 +2497674 +2497675 +2497676 +2497677 +2497678 +2497679 +2497680 +2497681 +2497682 +2497683 +2497684 +2497685 +2497686 +2497687 +2497688 +2497689 +2497690 +2497691 +2497692 +2497693 +2497694 +2497695 +2497696 +2497697 +2497698 +2497699 +2497700 +2497701 +2497702 +2497703 +2497704 +2497705 +2497706 +2497707 +2497708 +2497709 +2497710 +2497711 +2497712 +2497713 +2497714 +2497715 +2497716 +2497717 +2497718 +2497719 +2497720 +2497721 +2497722 +2497723 +2497724 +2497725 +2497726 +2497727 +2497728 +2497729 +2497730 +2497731 +2497732 +2497733 +2497734 +2497735 +2497736 +2497737 +2497738 +2497739 +2497740 +2497741 +2497742 +2497743 +2497744 +2497745 +2497746 +2497747 +2497748 +2497749 +2497750 +2497751 +2497752 +2497753 +2497754 +2497755 +2497756 +2497757 +2497758 +2497759 +2497760 +2497761 +2497762 +2497763 +2497764 +2497765 +2497766 +2497767 +2497768 +2497769 +2497770 +2497771 +2497772 +2497773 +2497774 +2497775 +2497776 +2497777 +2497778 +2497779 +2497780 +2497781 +2497782 +2497783 +2497784 +2497785 +2497786 +2497787 +2497788 +2497789 +2497790 +2497791 +2497792 +2497793 +2497794 +2497795 +2497796 +2497797 +2497798 +2497799 +2497800 +2497801 +2497802 +2497803 +2497804 +2497805 +2497806 +2497807 +2497808 +2497809 +2497810 +2497811 +2497812 +2497813 +2497814 +2497815 +2497816 +2497817 +2497818 +2497819 +2497820 +2497821 +2497822 +2497823 +2497824 +2497825 +2497826 +2497827 +2497828 +2497829 +2497830 +2497831 +2497832 +2497833 +2497834 +2497835 +2497836 +2497837 +2497838 +2497839 +2497840 +2497841 +2497842 +2497843 +2497844 +2497845 +2497846 +2497847 +2497848 +2497849 +2497850 +2497851 +2497852 +2497853 +2497854 +2497855 +2497856 +2497857 +2497858 +2497859 +2497860 +2497861 +2497862 +2497863 +2497864 +2497865 +2497866 +2497867 +2497868 +2497869 +2497870 +2497871 +2497872 +2497873 +2497874 +2497875 +2497876 +2497877 +2497878 +2497879 +2497880 +2497881 +2497882 +2497883 +2497884 +2497885 +2497886 +2497887 +2497888 +2497889 +2497890 +2497891 +2497892 +2497893 +2497894 +2497895 +2497896 +2497897 +2497898 +2497899 +2497900 +2497901 +2497902 +2497903 +2497904 +2497905 +2497906 +2497907 +2497908 +2497909 +2497910 +2497911 +2497912 +2497913 +2497914 +2497915 +2497916 +2497917 +2497918 +2497919 +2497920 +2497921 +2497922 +2497923 +2497924 +2497925 +2497926 +2497927 +2497928 +2497929 +2497930 +2497931 +2497932 +2497933 +2497934 +2497935 +2497936 +2497937 +2497938 +2497939 +2497940 +2497941 +2497942 +2497943 +2497944 +2497945 +2497946 +2497947 +2497948 +2497949 +2497950 +2497951 +2497952 +2497953 +2497954 +2497955 +2497956 +2497957 +2497958 +2497959 +2497960 +2497961 +2497962 +2497963 +2497964 +2497965 +2497966 +2497967 +2497968 +2497969 +2497970 +2497971 +2497972 +2497973 +2497974 +2497975 +2497976 +2497977 +2497978 +2497979 +2497980 +2497981 +2497982 +2497983 +2497984 +2497985 +2497986 +2497987 +2497988 +2497989 +2497990 +2497991 +2497992 +2497993 +2497994 +2497995 +2497996 +2497997 +2497998 +2497999 +2498000 +2498001 +2498002 +2498003 +2498004 +2498005 +2498006 +2498007 +2498008 +2498009 +2498010 +2498011 +2498012 +2498013 +2498014 +2498015 +2498016 +2498017 +2498018 +2498019 +2498020 +2498021 +2498022 +2498023 +2498024 +2498025 +2498026 +2498027 +2498028 +2498029 +2498030 +2498031 +2498032 +2498033 +2498034 +2498035 +2498036 +2498037 +2498038 +2498039 +2498040 +2498041 +2498042 +2498043 +2498044 +2498045 +2498046 +2498047 +2498048 +2498049 +2498050 +2498051 +2498052 +2498053 +2498054 +2498055 +2498056 +2498057 +2498058 +2498059 +2498060 +2498061 +2498062 +2498063 +2498064 +2498065 +2498066 +2498067 +2498068 +2498079 +2498080 +2498081 +2498082 +2498083 +2498084 +2498085 +2498086 +2498087 +2498088 +2498089 +2498090 +2498091 +2498092 +2498093 +2498094 +2498095 +2498096 +2498097 +2498098 +2498099 +2498100 +2498101 +2498102 +2498103 +2498104 +2498105 +2498106 +2498107 +2498108 +2498109 +2498110 +2498111 +2498112 +2498113 +2498114 +2498115 +2498116 +2498117 +2498118 +2498119 +2498146 +2498147 +2498148 +2498149 +2498150 +2498151 +2498152 +2498153 +2498154 +2498155 +2498156 +2498157 +2498158 +2498159 +2498160 +2498161 +2498162 +2498163 +2498164 +2498165 +2498166 +2498167 +2498168 +2498169 +2498170 +2498171 +2498172 +2498173 +2498174 +2498175 +2498176 +2498177 +2498178 +2498179 +2498180 +2498181 +2498182 +2498183 +2498184 +2498185 +2498186 +2498187 +2498188 +2498189 +2498190 +2498191 +2498192 +2498193 +2498194 +2498195 +2498196 +2498197 +2498198 +2498199 +2498200 +2498201 +2498202 +2498203 +2498204 +2498205 +2498206 +2498207 +2498208 +2498209 +2498210 +2498211 +2498212 +2498213 +2498214 +2498215 +2498216 +2498217 +2498218 +2498219 +2498220 +2498221 +2498222 +2498223 +2498224 +2498225 +2498226 +2498227 +2498228 +2498229 +2498230 +2498231 +2498232 +2498233 +2498234 +2498235 +2498236 +2498237 +2498238 +2498239 +2498240 +2498241 +2498242 +2498243 +2498244 +2498245 +2498246 +2498247 +2498248 +2498249 +2498250 +2498251 +2498252 +2498253 +2498254 +2498255 +2498256 +2498257 +2498258 +2498259 +2498260 +2498261 +2498262 +2498263 +2498264 +2498265 +2498266 +2498267 +2498268 +2498269 +2498270 +2498271 +2498272 +2498273 +2498279 +2498280 +2498281 +2501951 +2501952 +2501953 +2501954 +2501955 +2501956 +2501957 +2501958 +2501959 +2501960 +2501961 +2501962 +2501963 +2501964 +2501965 +2501966 +2501967 +2501968 +2501969 +2501970 +2501971 +2501972 +2501973 +2501974 +2501975 +2501976 +2501977 +2501978 +2501979 +2501980 +2501981 +2501982 +2501983 +2501984 +2501985 +2501986 +2501987 +2501988 +2501989 +2501990 +2501991 +2501992 +2501993 +2501994 +2501995 +2501996 +2501997 +2501998 +2501999 +2502000 +2502001 +2502002 +2502003 +2502004 +2502005 +2502006 +2502007 +2502008 +2502009 +2502010 +2502011 +2502012 +2502013 +2502014 +2502015 +2502016 +2502017 +2502018 +2502019 +2502020 +2502021 +2502022 +2502023 +2502024 +2502025 +2502026 +2502027 +2502028 +2502029 +2502030 +2502031 +2502032 +2502033 +2502034 +2502035 +2502036 +2502037 +2502038 +2502039 +2502040 +2502041 +2502042 +2502043 +2502044 +2502045 +2502046 +2502047 +2502048 +2502049 +2502050 +2502051 +2502052 +2502053 +2502054 +2502055 +2502056 +2502057 +2502058 +2502059 +2502060 +2502061 +2502062 +2502063 +2502064 +2502065 +2502066 +2502067 +2502068 +2502069 +2502070 +2502071 +2502072 +2502073 +2502074 +2502075 +2502076 +2502077 +2502078 +2502079 +2502080 +2502081 +2502082 +2502083 +2502084 +2502085 +2502086 +2502087 +2502088 +2502089 +2502090 +2502091 +2502092 +2502093 +2502094 +2502095 +2502096 +2502097 +2502098 +2502099 +2502100 +2502101 +2502102 +2502103 +2502104 +2502105 +2502106 +2502107 +2502108 +2502109 +2502110 +2502111 +2502112 +2502113 +2502114 +2502115 +2502116 +2502117 +2502118 +2502119 +2502120 +2502121 +2502122 +2502123 +2502124 +2502125 +2502126 +2502127 +2502128 +2502129 +2502130 +2502131 +2502132 +2502133 +2502134 +2502135 +2502136 +2502137 +2502138 +2502139 +2502140 +2502141 +2502142 +2502143 +2502144 +2502145 +2502146 +2502147 +2502148 +2502149 +2502150 +2502151 +2502152 +2502153 +2502154 +2502155 +2502156 +2502157 +2502158 +2502159 +2502160 +2502161 +2502162 +2502163 +2502164 +2502165 +2502166 +2502167 +2502168 +2502169 +2502170 +2502171 +2502172 +2502173 +2502174 +2502175 +2502176 +2502177 +2502178 +2502179 +2502180 +2502181 +2502182 +2502183 +2502184 +2502185 +2502186 +2502187 +2502188 +2502189 +2502190 +2502191 +2502192 +2502193 +2502194 +2502195 +2502196 +2502197 +2502198 +2502199 +2502200 +2502201 +2502202 +2502203 +2502204 +2502205 +2502206 +2502207 +2502208 +2502209 +2502210 +2502211 +2502212 +2502213 +2502214 +2502215 +2502216 +2502217 +2502218 +2502219 +2502220 +2502221 +2502222 +2502223 +2502224 +2502225 +2502226 +2502227 +2502228 +2502229 +2502230 +2502231 +2502232 +2502233 +2502234 +2502235 +2502236 +2502237 +2502238 +2502239 +2502240 +2502241 +2502242 +2502243 +2502244 +2502245 +2502246 +2502247 +2502248 +2502249 +2502250 +2502251 +2502252 +2502253 +2502254 +2502255 +2502256 +2502257 +2502258 +2502259 +2502260 +2502261 +2502262 +2502263 +2502264 +2502265 +2502266 +2502267 +2502268 +2502269 +2502270 +2502271 +2502272 +2502273 +2502274 +2502275 +2502276 +2502277 +2502278 +2502279 +2502280 +2502281 +2502282 +2502283 +2502284 +2502285 +2502286 +2502287 +2502288 +2502289 +2502290 +2502291 +2502292 +2502293 +2502294 +2502295 +2502296 +2502297 +2502298 +2502299 +2502300 +2502301 +2502302 +2502303 +2502304 +2502305 +2502306 +2502307 +2502308 +2502309 +2502310 +2502311 +2502312 +2502313 +2502314 +2502315 +2502316 +2502317 +2502318 +2502319 +2502320 +2502321 +2502322 +2502323 +2502324 +2502325 +2502326 +2502327 +2502328 +2502329 +2502330 +2502331 +2502332 +2502333 +2502334 +2502335 +2502336 +2502337 +2502338 +2502339 +2502340 +2502341 +2502342 +2502343 +2502344 +2502345 +2502346 +2502347 +2502348 +2502349 +2502350 +2502351 +2502352 +2502353 +2502354 +2502355 +2502356 +2502357 +2502358 +2502359 +2502360 +2502361 +2502362 +2502363 +2502364 +2502365 +2502366 +2502367 +2502368 +2502369 +2502370 +2502371 +2502372 +2502373 +2502374 +2502375 +2502376 +2502377 +2502378 +2502379 +2502380 +2502381 +2502382 +2502383 +2502384 +2502385 +2502386 +2502387 +2502388 +2502389 +2502396 +2502397 +2502398 +2502399 +2502400 +2502401 +2502402 +2502403 +2502404 +2502405 +2502406 +2502407 +2502408 +2502409 +2502410 +2502411 +2502412 +2502413 +2502414 +2502415 +2502416 +2502417 +2502418 +2502419 +2502420 +2502421 +2502422 +2502423 +2502424 +2502425 +2502426 +2502427 +2502428 +2502429 +2502430 +2502431 +2502432 +2502433 +2502434 +2502435 +2502436 +2502437 +2502438 +2502463 +2502464 +2502465 +2502466 +2502467 +2502468 +2502469 +2502470 +2502471 +2502472 +2502473 +2502474 +2502475 +2502476 +2502477 +2502478 +2502479 +2502480 +2502481 +2502482 +2502483 +2502484 +2502485 +2502486 +2502487 +2502488 +2502489 +2502490 +2502491 +2502492 +2502493 +2502494 +2502495 +2502496 +2502497 +2502498 +2502499 +2502500 +2502501 +2502502 +2502503 +2502504 +2502505 +2502506 +2502507 +2502508 +2502509 +2502510 +2502511 +2502512 +2502513 +2502514 +2502515 +2502516 +2502517 +2502518 +2502519 +2502520 +2502521 +2502522 +2502523 +2502524 +2502525 +2502526 +2502527 +2502528 +2502529 +2502530 +2502531 +2502532 +2502533 +2502534 +2502535 +2502536 +2502537 +2502538 +2502539 +2502540 +2502541 +2502542 +2502543 +2502544 +2502545 +2502546 +2502547 +2502548 +2502549 +2502550 +2502551 +2502552 +2502553 +2502554 +2502555 +2502556 +2502557 +2502558 +2502559 +2502560 +2502561 +2502562 +2502563 +2502564 +2502565 +2502566 +2502567 +2502568 +2502569 +2502570 +2502571 +2502572 +2502573 +2502574 +2502575 +2502576 +2502577 +2502578 +2502579 +2502580 +2502581 +2502582 +2502583 +2502584 +2502585 +2502586 +2502587 +2502588 +2502589 +2502590 +2502591 +2502592 +2502593 +2502599 +2502600 +2502601 +2506271 +2506272 +2506273 +2506274 +2506275 +2506276 +2506277 +2506278 +2506279 +2506280 +2506281 +2506282 +2506283 +2506284 +2506285 +2506286 +2506287 +2506288 +2506289 +2506290 +2506291 +2506292 +2506293 +2506294 +2506295 +2506296 +2506297 +2506298 +2506299 +2506300 +2506301 +2506302 +2506303 +2506304 +2506305 +2506306 +2506307 +2506308 +2506309 +2506310 +2506311 +2506312 +2506313 +2506314 +2506315 +2506316 +2506317 +2506318 +2506319 +2506320 +2506321 +2506322 +2506323 +2506324 +2506325 +2506326 +2506327 +2506328 +2506329 +2506330 +2506331 +2506332 +2506333 +2506334 +2506335 +2506336 +2506337 +2506338 +2506339 +2506340 +2506341 +2506342 +2506343 +2506344 +2506345 +2506346 +2506347 +2506348 +2506349 +2506350 +2506351 +2506352 +2506353 +2506354 +2506355 +2506356 +2506357 +2506358 +2506359 +2506360 +2506361 +2506362 +2506363 +2506364 +2506365 +2506366 +2506367 +2506368 +2506369 +2506370 +2506371 +2506372 +2506373 +2506374 +2506375 +2506376 +2506377 +2506378 +2506379 +2506380 +2506381 +2506382 +2506383 +2506384 +2506385 +2506386 +2506387 +2506388 +2506389 +2506390 +2506391 +2506392 +2506393 +2506394 +2506395 +2506396 +2506397 +2506398 +2506399 +2506400 +2506401 +2506402 +2506408 +2506409 +2506410 +2506411 +2506412 +2506413 +2506414 +2506415 +2506416 +2506417 +2506418 +2506419 +2506420 +2506421 +2506422 +2506423 +2506424 +2506425 +2506426 +2506427 +2506428 +2506429 +2506430 +2506431 +2506432 +2506433 +2506434 +2506435 +2506436 +2506437 +2506438 +2506439 +2506440 +2506441 +2506442 +2506443 +2506444 +2506445 +2506446 +2506447 +2506448 +2506449 +2506450 +2506451 +2506452 +2506453 +2506454 +2506455 +2506456 +2506457 +2506458 +2506459 +2506460 +2506461 +2506462 +2506463 +2506464 +2506465 +2506466 +2506467 +2506468 +2506469 +2506470 +2506471 +2506472 +2506473 +2506474 +2506475 +2506476 +2506477 +2506478 +2506479 +2506480 +2506481 +2506482 +2506483 +2506484 +2506485 +2506486 +2506487 +2506488 +2506489 +2506490 +2506491 +2506492 +2506493 +2506494 +2506495 +2506496 +2506497 +2506498 +2506499 +2506500 +2506501 +2506502 +2506503 +2506504 +2506505 +2506506 +2506507 +2506508 +2506509 +2506510 +2506511 +2506512 +2506513 +2506514 +2506515 +2506516 +2506517 +2506518 +2506519 +2506520 +2506521 +2506522 +2506523 +2506524 +2506525 +2506526 +2506527 +2506528 +2506529 +2506530 +2506531 +2506532 +2506533 +2506534 +2506535 +2506536 +2506537 +2506538 +2506539 +2506540 +2506541 +2506542 +2506543 +2506544 +2506545 +2506546 +2506547 +2506548 +2506549 +2506550 +2506551 +2506552 +2506553 +2506554 +2506555 +2506556 +2506557 +2506558 +2506559 +2506560 +2506561 +2506562 +2506563 +2506564 +2506565 +2506566 +2506567 +2506568 +2506569 +2506570 +2506571 +2506572 +2506573 +2506574 +2506575 +2506576 +2506577 +2506578 +2506579 +2506580 +2506581 +2506582 +2506583 +2506584 +2506585 +2506586 +2506587 +2506588 +2506589 +2506590 +2506591 +2506592 +2506593 +2506594 +2506595 +2506596 +2506597 +2506598 +2506599 +2506600 +2506601 +2506602 +2506603 +2506604 +2506605 +2506606 +2506607 +2506608 +2506609 +2506610 +2506611 +2506612 +2506613 +2506614 +2506615 +2506616 +2506617 +2506618 +2506619 +2506620 +2506621 +2506622 +2506623 +2506624 +2506625 +2506626 +2506627 +2506628 +2506629 +2506630 +2506631 +2506632 +2506633 +2506634 +2506635 +2506636 +2506637 +2506638 +2506639 +2506640 +2506641 +2506642 +2506643 +2506644 +2506645 +2506646 +2506647 +2506648 +2506649 +2506650 +2506651 +2506652 +2506653 +2506654 +2506655 +2506656 +2506657 +2506658 +2506659 +2506660 +2506661 +2506662 +2506663 +2506664 +2506665 +2506666 +2506667 +2506668 +2506669 +2506670 +2506671 +2506672 +2506673 +2506674 +2506675 +2506676 +2506677 +2506678 +2506679 +2506680 +2506681 +2506682 +2506683 +2506684 +2506685 +2506686 +2506687 +2506688 +2506689 +2506690 +2506691 +2506692 +2506693 +2506694 +2506695 +2506696 +2506697 +2506698 +2506699 +2506700 +2506701 +2506702 +2506703 +2506704 +2506705 +2506706 +2506707 +2506708 +2506709 +2506710 +2506711 +2506714 +2506715 +2506716 +2506717 +2506718 +2506719 +2506720 +2506721 +2506722 +2506723 +2506724 +2506725 +2506726 +2506727 +2506728 +2506729 +2506730 +2506731 +2506732 +2506733 +2506734 +2506735 +2506736 +2506737 +2506738 +2506739 +2506740 +2506741 +2506742 +2506743 +2506744 +2506745 +2506746 +2506747 +2506748 +2506749 +2506750 +2506751 +2506752 +2506753 +2506754 +2506755 +2506756 +2506757 +2506758 +2506759 +2506760 +2506761 +2506762 +2506782 +2506783 +2506784 +2506785 +2506786 +2506787 +2506788 +2506789 +2506790 +2506791 +2506792 +2506793 +2506795 +2506796 +2506797 +2506798 +2506799 +2506800 +2506801 +2506802 +2506803 +2506804 +2506805 +2506806 +2506807 +2506808 +2506809 +2506810 +2506811 +2506812 +2506813 +2506814 +2506815 +2506816 +2506817 +2506818 +2506819 +2506820 +2506821 +2506822 +2506823 +2506824 +2506825 +2506826 +2506827 +2506828 +2506829 +2506830 +2506831 +2506832 +2506833 +2506834 +2506835 +2506836 +2506837 +2506838 +2506839 +2506840 +2506841 +2506842 +2506843 +2506844 +2506845 +2506846 +2506847 +2506848 +2506849 +2506850 +2506851 +2506852 +2506853 +2506854 +2506855 +2506856 +2506857 +2506858 +2506859 +2506860 +2506861 +2506862 +2506863 +2506864 +2506865 +2506866 +2506867 +2506868 +2506869 +2506870 +2506871 +2506872 +2506873 +2506874 +2506875 +2506876 +2506877 +2506878 +2506879 +2506880 +2506881 +2506882 +2506883 +2506884 +2506885 +2506886 +2506887 +2506888 +2506889 +2506890 +2506891 +2506892 +2506893 +2506894 +2506895 +2506896 +2506897 +2506898 +2506899 +2506900 +2506901 +2506902 +2506903 +2506904 +2506905 +2506906 +2506907 +2506908 +2506909 +2506910 +2506911 +2506913 +2506914 +2506915 +2506916 +2506917 +2506918 +2506919 +2506921 +2510591 +2510592 +2510593 +2510594 +2510595 +2510596 +2510597 +2510598 +2510599 +2510600 +2510601 +2510602 +2510603 +2510604 +2510605 +2510606 +2510607 +2510608 +2510609 +2510610 +2510611 +2510612 +2510613 +2510614 +2510615 +2510616 +2510617 +2510618 +2510619 +2510620 +2510621 +2510622 +2510623 +2510624 +2510625 +2510626 +2510627 +2510628 +2510629 +2510630 +2510631 +2510632 +2510633 +2510634 +2510635 +2510636 +2510637 +2510638 +2510639 +2510640 +2510641 +2510642 +2510643 +2510644 +2510645 +2510646 +2510647 +2510648 +2510649 +2510650 +2510651 +2510652 +2510653 +2510654 +2510655 +2510656 +2510657 +2510658 +2510659 +2510660 +2510661 +2510662 +2510663 +2510664 +2510665 +2510666 +2510667 +2510668 +2510669 +2510670 +2510671 +2510672 +2510673 +2510674 +2510675 +2510676 +2510677 +2510678 +2510679 +2510680 +2510681 +2510682 +2510683 +2510684 +2510685 +2510686 +2510687 +2510688 +2510689 +2510690 +2510691 +2510692 +2510693 +2510694 +2510695 +2510696 +2510697 +2510698 +2510699 +2510700 +2510701 +2510702 +2510703 +2510704 +2510705 +2510706 +2510707 +2510708 +2510709 +2510710 +2510711 +2510712 +2510713 +2510714 +2510715 +2510716 +2510717 +2510718 +2510719 +2510720 +2510721 +2510722 +2510727 +2510728 +2510729 +2510730 +2510731 +2510732 +2510733 +2510734 +2510735 +2510736 +2510737 +2510738 +2510739 +2510740 +2510741 +2510742 +2510743 +2510744 +2510745 +2510746 +2510747 +2510748 +2510749 +2510750 +2510751 +2510752 +2510753 +2510754 +2510755 +2510756 +2510757 +2510758 +2510759 +2510760 +2510761 +2510762 +2510763 +2510764 +2510765 +2510766 +2510767 +2510768 +2510769 +2510770 +2510771 +2510772 +2510773 +2510774 +2510775 +2510776 +2510777 +2510778 +2510779 +2510780 +2510781 +2510782 +2510783 +2510784 +2510785 +2510786 +2510787 +2510788 +2510789 +2510790 +2510791 +2510792 +2510793 +2510794 +2510795 +2510796 +2510797 +2510798 +2510799 +2510800 +2510801 +2510802 +2510803 +2510804 +2510805 +2510806 +2510807 +2510808 +2510809 +2510810 +2510811 +2510812 +2510813 +2510814 +2510815 +2510816 +2510817 +2510818 +2510819 +2510820 +2510821 +2510822 +2510823 +2510824 +2510825 +2510826 +2510827 +2510828 +2510829 +2510830 +2510831 +2510832 +2510833 +2510834 +2510835 +2510836 +2510837 +2510838 +2510839 +2510840 +2510841 +2510842 +2510843 +2510844 +2510845 +2510846 +2510847 +2510848 +2510849 +2510850 +2510851 +2510852 +2510853 +2510854 +2510855 +2510856 +2510857 +2510858 +2510859 +2510860 +2510861 +2510862 +2510863 +2510864 +2510865 +2510866 +2510867 +2510868 +2510869 +2510870 +2510871 +2510872 +2510873 +2510874 +2510875 +2510876 +2510877 +2510878 +2510879 +2510880 +2510881 +2510882 +2510883 +2510884 +2510885 +2510886 +2510887 +2510888 +2510889 +2510890 +2510891 +2510892 +2510893 +2510894 +2510895 +2510896 +2510897 +2510898 +2510899 +2510900 +2510901 +2510902 +2510903 +2510904 +2510905 +2510906 +2510907 +2510908 +2510909 +2510910 +2510911 +2510912 +2510913 +2510914 +2510915 +2510916 +2510917 +2510918 +2510919 +2510920 +2510921 +2510922 +2510923 +2510924 +2510925 +2510926 +2510927 +2510928 +2510929 +2510930 +2510931 +2510932 +2510933 +2510934 +2510935 +2510936 +2510937 +2510938 +2510939 +2510940 +2510941 +2510942 +2510943 +2510944 +2510945 +2510946 +2510947 +2510948 +2510949 +2510950 +2510951 +2510952 +2510953 +2510954 +2510955 +2510956 +2510957 +2510958 +2510959 +2510960 +2510961 +2510962 +2510963 +2510964 +2510965 +2510966 +2510967 +2510968 +2510969 +2510970 +2510971 +2510972 +2510973 +2510974 +2510975 +2510976 +2510977 +2510978 +2510979 +2510980 +2510981 +2510982 +2510983 +2510984 +2510985 +2510986 +2510987 +2510988 +2510989 +2510990 +2510991 +2510992 +2510993 +2510994 +2510995 +2510996 +2510997 +2510998 +2510999 +2511000 +2511001 +2511002 +2511003 +2511004 +2511005 +2511006 +2511007 +2511008 +2511009 +2511010 +2511011 +2511012 +2511013 +2511014 +2511015 +2511016 +2511017 +2511018 +2511019 +2511020 +2511021 +2511022 +2511023 +2511024 +2511025 +2511026 +2511027 +2511028 +2511029 +2511030 +2511031 +2511032 +2511033 +2511034 +2511035 +2511036 +2511037 +2511038 +2511039 +2511040 +2511041 +2511042 +2511043 +2511044 +2511045 +2511046 +2511047 +2511048 +2511049 +2511050 +2511051 +2511052 +2511053 +2511054 +2511055 +2511056 +2511057 +2511058 +2511059 +2511060 +2511061 +2511062 +2511063 +2511064 +2511065 +2511066 +2511067 +2511068 +2511069 +2511070 +2511071 +2511072 +2511073 +2511074 +2511075 +2511076 +2511077 +2511078 +2511079 +2511080 +2511081 +2511082 +2511083 +2511084 +2511086 +2511087 +2511101 +2511102 +2511103 +2511104 +2511105 +2511106 +2511107 +2511108 +2511109 +2511110 +2511111 +2511112 +2511113 +2511114 +2511115 +2511116 +2511117 +2511118 +2511119 +2511120 +2511121 +2511122 +2511123 +2511124 +2511125 +2511126 +2511127 +2511128 +2511129 +2511130 +2511131 +2511132 +2511133 +2511134 +2511135 +2511136 +2511137 +2511138 +2511139 +2511140 +2511141 +2511142 +2511143 +2511144 +2511145 +2511146 +2511147 +2511148 +2511149 +2511150 +2511151 +2511152 +2511153 +2511154 +2511155 +2511156 +2511157 +2511158 +2511159 +2511160 +2511161 +2511162 +2511163 +2511164 +2511165 +2511166 +2511167 +2511168 +2511169 +2511170 +2511171 +2511172 +2511173 +2511174 +2511175 +2511176 +2511177 +2511178 +2511179 +2511180 +2511181 +2511182 +2511183 +2511184 +2511185 +2511186 +2511187 +2511188 +2511189 +2511190 +2511191 +2511192 +2511193 +2511194 +2511195 +2511196 +2511197 +2511198 +2511199 +2511200 +2511201 +2511202 +2511203 +2511204 +2511205 +2511206 +2511207 +2511208 +2511209 +2511210 +2511211 +2511212 +2511213 +2511214 +2511215 +2511216 +2511217 +2511218 +2511219 +2511220 +2511221 +2511222 +2511223 +2511224 +2511232 +2511233 +2511241 +2514912 +2514913 +2514914 +2514915 +2514916 +2514917 +2514918 +2514919 +2514920 +2514921 +2514922 +2514923 +2514924 +2514925 +2514926 +2514927 +2514928 +2514929 +2514930 +2514931 +2514932 +2514933 +2514934 +2514935 +2514936 +2514937 +2514938 +2514939 +2514940 +2514941 +2514942 +2514943 +2514944 +2514945 +2514946 +2514947 +2514948 +2514949 +2514950 +2514951 +2514952 +2514953 +2514954 +2514955 +2514956 +2514957 +2514958 +2514959 +2514960 +2514961 +2514962 +2514963 +2514964 +2514965 +2514966 +2514967 +2514968 +2514969 +2514970 +2514971 +2514972 +2514973 +2514974 +2514975 +2514976 +2514977 +2514978 +2514979 +2514980 +2514981 +2514982 +2514983 +2514984 +2514985 +2514986 +2514987 +2514988 +2514989 +2514990 +2514991 +2514992 +2514993 +2514994 +2514995 +2514996 +2514997 +2514998 +2514999 +2515000 +2515001 +2515002 +2515003 +2515004 +2515005 +2515006 +2515007 +2515008 +2515009 +2515010 +2515011 +2515012 +2515013 +2515014 +2515015 +2515016 +2515017 +2515018 +2515019 +2515020 +2515021 +2515022 +2515023 +2515024 +2515025 +2515026 +2515027 +2515028 +2515029 +2515030 +2515031 +2515032 +2515033 +2515034 +2515035 +2515036 +2515037 +2515038 +2515039 +2515040 +2515041 +2515042 +2515043 +2515048 +2515049 +2515050 +2515053 +2515054 +2515055 +2515056 +2515057 +2515058 +2515059 +2515060 +2515061 +2515062 +2515063 +2515064 +2515065 +2515066 +2515067 +2515068 +2515069 +2515070 +2515071 +2515072 +2515073 +2515074 +2515075 +2515076 +2515077 +2515078 +2515079 +2515080 +2515081 +2515082 +2515083 +2515084 +2515085 +2515086 +2515087 +2515088 +2515089 +2515090 +2515091 +2515092 +2515093 +2515094 +2515095 +2515096 +2515097 +2515098 +2515099 +2515100 +2515101 +2515102 +2515103 +2515104 +2515105 +2515106 +2515107 +2515108 +2515109 +2515110 +2515111 +2515112 +2515113 +2515114 +2515115 +2515116 +2515117 +2515118 +2515119 +2515120 +2515121 +2515122 +2515123 +2515124 +2515125 +2515126 +2515127 +2515128 +2515129 +2515130 +2515131 +2515132 +2515133 +2515134 +2515135 +2515136 +2515137 +2515138 +2515139 +2515140 +2515141 +2515142 +2515143 +2515144 +2515145 +2515146 +2515147 +2515148 +2515149 +2515150 +2515151 +2515152 +2515153 +2515154 +2515155 +2515156 +2515157 +2515158 +2515159 +2515160 +2515161 +2515162 +2515163 +2515164 +2515165 +2515166 +2515167 +2515168 +2515169 +2515170 +2515171 +2515172 +2515173 +2515174 +2515175 +2515176 +2515177 +2515178 +2515179 +2515180 +2515181 +2515182 +2515183 +2515184 +2515185 +2515186 +2515187 +2515188 +2515189 +2515190 +2515191 +2515192 +2515193 +2515194 +2515195 +2515196 +2515197 +2515198 +2515199 +2515200 +2515201 +2515202 +2515203 +2515204 +2515205 +2515206 +2515207 +2515208 +2515209 +2515210 +2515211 +2515212 +2515213 +2515214 +2515215 +2515216 +2515217 +2515218 +2515219 +2515220 +2515221 +2515222 +2515223 +2515224 +2515225 +2515226 +2515227 +2515228 +2515229 +2515230 +2515231 +2515232 +2515233 +2515234 +2515235 +2515236 +2515237 +2515238 +2515239 +2515240 +2515241 +2515242 +2515243 +2515244 +2515245 +2515246 +2515247 +2515248 +2515249 +2515250 +2515251 +2515252 +2515253 +2515254 +2515255 +2515256 +2515257 +2515258 +2515259 +2515260 +2515261 +2515262 +2515263 +2515264 +2515265 +2515266 +2515267 +2515268 +2515269 +2515270 +2515271 +2515272 +2515273 +2515274 +2515275 +2515276 +2515277 +2515278 +2515279 +2515280 +2515281 +2515282 +2515283 +2515284 +2515285 +2515286 +2515287 +2515288 +2515289 +2515290 +2515291 +2515292 +2515293 +2515294 +2515295 +2515296 +2515297 +2515298 +2515299 +2515300 +2515301 +2515302 +2515303 +2515304 +2515305 +2515306 +2515307 +2515308 +2515309 +2515310 +2515311 +2515312 +2515313 +2515314 +2515315 +2515316 +2515317 +2515318 +2515319 +2515320 +2515321 +2515322 +2515323 +2515324 +2515325 +2515326 +2515327 +2515328 +2515329 +2515330 +2515331 +2515332 +2515333 +2515334 +2515335 +2515336 +2515337 +2515338 +2515339 +2515340 +2515341 +2515342 +2515343 +2515344 +2515345 +2515346 +2515347 +2515348 +2515349 +2515350 +2515351 +2515352 +2515353 +2515354 +2515355 +2515356 +2515357 +2515358 +2515359 +2515360 +2515361 +2515362 +2515363 +2515364 +2515365 +2515366 +2515367 +2515368 +2515369 +2515370 +2515371 +2515372 +2515373 +2515374 +2515375 +2515376 +2515377 +2515378 +2515379 +2515380 +2515381 +2515382 +2515383 +2515384 +2515385 +2515386 +2515387 +2515388 +2515389 +2515390 +2515391 +2515392 +2515393 +2515394 +2515395 +2515396 +2515397 +2515398 +2515399 +2515400 +2515401 +2515402 +2515403 +2515404 +2515406 +2515407 +2515408 +2515413 +2515414 +2515415 +2515416 +2515417 +2515418 +2515419 +2515420 +2515421 +2515422 +2515423 +2515424 +2515425 +2515426 +2515427 +2515428 +2515429 +2515430 +2515431 +2515432 +2515433 +2515434 +2515435 +2515436 +2515437 +2515438 +2515439 +2515440 +2515441 +2515442 +2515443 +2515444 +2515445 +2515446 +2515447 +2515448 +2515449 +2515450 +2515451 +2515452 +2515453 +2515454 +2515455 +2515456 +2515457 +2515458 +2515459 +2515460 +2515461 +2515462 +2515463 +2515464 +2515465 +2515466 +2515467 +2515468 +2515469 +2515470 +2515471 +2515472 +2515473 +2515474 +2515475 +2515476 +2515477 +2515478 +2515479 +2515480 +2515481 +2515482 +2515483 +2515484 +2515485 +2515486 +2515487 +2515488 +2515489 +2515490 +2515491 +2515492 +2515493 +2515494 +2515495 +2515496 +2515497 +2515498 +2515499 +2515500 +2515501 +2515502 +2515503 +2515504 +2515505 +2515506 +2515507 +2515508 +2515509 +2515510 +2515511 +2515512 +2515513 +2515514 +2515515 +2515516 +2515517 +2515518 +2515519 +2515520 +2515521 +2515522 +2515523 +2515524 +2515525 +2515526 +2515527 +2515528 +2515529 +2515530 +2515531 +2515532 +2515533 +2515534 +2515535 +2515536 +2515537 +2515538 +2515539 +2515540 +2515541 +2515542 +2515543 +2515544 +2515550 +2515551 +2515552 +2515553 +2519232 +2519233 +2519234 +2519235 +2519236 +2519237 +2519238 +2519239 +2519240 +2519241 +2519242 +2519243 +2519244 +2519245 +2519246 +2519247 +2519248 +2519249 +2519250 +2519251 +2519252 +2519253 +2519254 +2519255 +2519256 +2519257 +2519258 +2519259 +2519260 +2519261 +2519262 +2519263 +2519264 +2519265 +2519266 +2519267 +2519268 +2519269 +2519270 +2519271 +2519272 +2519273 +2519274 +2519275 +2519276 +2519277 +2519278 +2519279 +2519280 +2519281 +2519282 +2519283 +2519284 +2519285 +2519286 +2519287 +2519288 +2519289 +2519290 +2519291 +2519292 +2519293 +2519294 +2519295 +2519296 +2519297 +2519298 +2519299 +2519300 +2519301 +2519302 +2519303 +2519304 +2519305 +2519306 +2519307 +2519308 +2519309 +2519310 +2519311 +2519312 +2519313 +2519314 +2519315 +2519316 +2519317 +2519318 +2519319 +2519320 +2519321 +2519322 +2519323 +2519324 +2519325 +2519326 +2519327 +2519328 +2519329 +2519330 +2519331 +2519332 +2519333 +2519334 +2519335 +2519336 +2519337 +2519338 +2519339 +2519340 +2519341 +2519342 +2519343 +2519344 +2519345 +2519346 +2519347 +2519348 +2519349 +2519350 +2519351 +2519352 +2519353 +2519354 +2519355 +2519356 +2519357 +2519358 +2519359 +2519360 +2519361 +2519362 +2519363 +2519370 +2519371 +2519376 +2519377 +2519378 +2519379 +2519380 +2519381 +2519382 +2519383 +2519384 +2519385 +2519386 +2519387 +2519388 +2519389 +2519390 +2519391 +2519392 +2519393 +2519394 +2519395 +2519396 +2519397 +2519398 +2519399 +2519400 +2519401 +2519402 +2519403 +2519404 +2519405 +2519406 +2519407 +2519408 +2519409 +2519410 +2519411 +2519412 +2519413 +2519414 +2519415 +2519416 +2519417 +2519418 +2519419 +2519420 +2519421 +2519422 +2519423 +2519424 +2519425 +2519426 +2519427 +2519428 +2519429 +2519430 +2519431 +2519432 +2519433 +2519434 +2519435 +2519436 +2519437 +2519438 +2519439 +2519440 +2519441 +2519442 +2519443 +2519444 +2519445 +2519446 +2519447 +2519448 +2519449 +2519450 +2519451 +2519452 +2519453 +2519454 +2519455 +2519456 +2519457 +2519458 +2519459 +2519460 +2519461 +2519462 +2519463 +2519464 +2519465 +2519466 +2519467 +2519468 +2519469 +2519470 +2519471 +2519472 +2519473 +2519474 +2519475 +2519476 +2519477 +2519478 +2519479 +2519480 +2519481 +2519482 +2519483 +2519484 +2519485 +2519486 +2519487 +2519488 +2519489 +2519490 +2519491 +2519492 +2519493 +2519494 +2519495 +2519496 +2519497 +2519498 +2519499 +2519500 +2519501 +2519502 +2519503 +2519504 +2519505 +2519506 +2519507 +2519508 +2519509 +2519510 +2519511 +2519512 +2519513 +2519514 +2519515 +2519516 +2519517 +2519518 +2519519 +2519520 +2519521 +2519522 +2519523 +2519524 +2519525 +2519526 +2519527 +2519528 +2519529 +2519530 +2519531 +2519532 +2519533 +2519534 +2519535 +2519536 +2519537 +2519538 +2519539 +2519540 +2519541 +2519542 +2519543 +2519544 +2519545 +2519546 +2519547 +2519548 +2519549 +2519550 +2519551 +2519552 +2519553 +2519554 +2519555 +2519556 +2519557 +2519558 +2519559 +2519560 +2519561 +2519562 +2519563 +2519564 +2519565 +2519566 +2519567 +2519568 +2519569 +2519570 +2519571 +2519572 +2519573 +2519574 +2519575 +2519576 +2519577 +2519578 +2519579 +2519580 +2519581 +2519582 +2519583 +2519584 +2519585 +2519586 +2519587 +2519588 +2519589 +2519590 +2519591 +2519592 +2519593 +2519594 +2519595 +2519596 +2519597 +2519598 +2519599 +2519600 +2519601 +2519602 +2519603 +2519604 +2519605 +2519606 +2519607 +2519608 +2519609 +2519610 +2519611 +2519612 +2519613 +2519614 +2519615 +2519616 +2519617 +2519618 +2519619 +2519620 +2519621 +2519622 +2519623 +2519624 +2519625 +2519626 +2519627 +2519628 +2519629 +2519630 +2519631 +2519632 +2519633 +2519634 +2519635 +2519636 +2519637 +2519638 +2519639 +2519640 +2519641 +2519642 +2519643 +2519644 +2519645 +2519646 +2519647 +2519648 +2519649 +2519650 +2519651 +2519652 +2519653 +2519654 +2519655 +2519656 +2519657 +2519658 +2519659 +2519660 +2519661 +2519662 +2519663 +2519664 +2519665 +2519666 +2519667 +2519668 +2519669 +2519670 +2519671 +2519672 +2519673 +2519674 +2519675 +2519676 +2519677 +2519678 +2519679 +2519680 +2519681 +2519682 +2519683 +2519684 +2519685 +2519686 +2519687 +2519688 +2519689 +2519690 +2519691 +2519692 +2519693 +2519694 +2519695 +2519696 +2519697 +2519698 +2519699 +2519700 +2519701 +2519702 +2519703 +2519704 +2519705 +2519706 +2519707 +2519708 +2519709 +2519710 +2519711 +2519712 +2519713 +2519714 +2519715 +2519716 +2519717 +2519718 +2519719 +2519720 +2519721 +2519722 +2519723 +2519724 +2519725 +2519726 +2519727 +2519728 +2519729 +2519730 +2519731 +2519732 +2519733 +2519734 +2519735 +2519736 +2519737 +2519738 +2519739 +2519740 +2519741 +2519742 +2519743 +2519744 +2519745 +2519746 +2519747 +2519748 +2519749 +2519750 +2519751 +2519752 +2519753 +2519754 +2519755 +2519756 +2519757 +2519758 +2519759 +2519760 +2519761 +2519762 +2519763 +2519764 +2519765 +2519766 +2519767 +2519768 +2519769 +2519770 +2519771 +2519772 +2519773 +2519774 +2519775 +2519776 +2519777 +2519778 +2519779 +2519780 +2519781 +2519782 +2519783 +2519784 +2519785 +2519786 +2519787 +2519788 +2519789 +2519790 +2519791 +2519792 +2519793 +2519794 +2519795 +2519796 +2519797 +2519798 +2519799 +2519800 +2519801 +2519802 +2519803 +2519804 +2519805 +2519806 +2519807 +2519808 +2519809 +2519810 +2519811 +2519812 +2519813 +2519814 +2519815 +2519816 +2519817 +2519818 +2519819 +2519820 +2519821 +2519822 +2519823 +2519824 +2519825 +2519826 +2519827 +2519828 +2519829 +2519830 +2519831 +2519832 +2519833 +2519834 +2519835 +2519836 +2519837 +2519838 +2519839 +2519840 +2519841 +2519842 +2519843 +2519844 +2519845 +2519846 +2519847 +2519848 +2519849 +2519850 +2519851 +2519852 +2519853 +2519854 +2519855 +2519856 +2519857 +2519858 +2519859 +2519860 +2519861 +2519862 +2519863 +2519870 +2519871 +2519872 +2519873 +2519880 +2523551 +2523552 +2523553 +2523554 +2523555 +2523556 +2523557 +2523558 +2523559 +2523560 +2523561 +2523562 +2523563 +2523564 +2523565 +2523566 +2523567 +2523568 +2523569 +2523570 +2523571 +2523572 +2523573 +2523574 +2523575 +2523576 +2523577 +2523578 +2523579 +2523580 +2523581 +2523582 +2523583 +2523584 +2523585 +2523586 +2523587 +2523588 +2523589 +2523590 +2523591 +2523592 +2523593 +2523594 +2523595 +2523596 +2523597 +2523598 +2523599 +2523600 +2523601 +2523602 +2523603 +2523604 +2523605 +2523606 +2523607 +2523608 +2523609 +2523610 +2523611 +2523612 +2523613 +2523614 +2523615 +2523616 +2523617 +2523618 +2523619 +2523620 +2523621 +2523622 +2523623 +2523624 +2523625 +2523626 +2523627 +2523628 +2523629 +2523630 +2523631 +2523632 +2523633 +2523634 +2523635 +2523636 +2523637 +2523638 +2523639 +2523640 +2523641 +2523642 +2523643 +2523644 +2523645 +2523646 +2523647 +2523648 +2523649 +2523650 +2523651 +2523652 +2523653 +2523654 +2523655 +2523656 +2523657 +2523658 +2523659 +2523660 +2523661 +2523662 +2523663 +2523664 +2523665 +2523666 +2523667 +2523668 +2523669 +2523670 +2523671 +2523672 +2523673 +2523674 +2523675 +2523676 +2523677 +2523678 +2523681 +2523682 +2523683 +2523684 +2523690 +2523691 +2523694 +2523695 +2523696 +2523697 +2523698 +2523699 +2523700 +2523701 +2523702 +2523703 +2523704 +2523705 +2523706 +2523707 +2523708 +2523709 +2523710 +2523711 +2523712 +2523713 +2523714 +2523715 +2523716 +2523717 +2523718 +2523719 +2523720 +2523721 +2523722 +2523723 +2523724 +2523725 +2523726 +2523727 +2523728 +2523729 +2523730 +2523731 +2523732 +2523733 +2523734 +2523735 +2523736 +2523737 +2523738 +2523739 +2523740 +2523741 +2523742 +2523743 +2523744 +2523745 +2523746 +2523747 +2523748 +2523749 +2523750 +2523751 +2523752 +2523753 +2523754 +2523755 +2523756 +2523757 +2523758 +2523759 +2523760 +2523761 +2523762 +2523763 +2523764 +2523765 +2523766 +2523767 +2523768 +2523769 +2523770 +2523771 +2523772 +2523773 +2523774 +2523775 +2523776 +2523777 +2523778 +2523779 +2523780 +2523781 +2523782 +2523783 +2523784 +2523785 +2523786 +2523787 +2523788 +2523789 +2523790 +2523791 +2523792 +2523793 +2523794 +2523795 +2523796 +2523797 +2523798 +2523799 +2523800 +2523801 +2523802 +2523803 +2523804 +2523805 +2523806 +2523807 +2523808 +2523809 +2523810 +2523811 +2523812 +2523813 +2523814 +2523815 +2523816 +2523817 +2523818 +2523819 +2523820 +2523821 +2523822 +2523823 +2523824 +2523825 +2523826 +2523827 +2523828 +2523829 +2523830 +2523831 +2523832 +2523833 +2523834 +2523835 +2523836 +2523837 +2523838 +2523839 +2523840 +2523841 +2523842 +2523843 +2523844 +2523845 +2523846 +2523847 +2523848 +2523849 +2523850 +2523851 +2523852 +2523853 +2523854 +2523855 +2523856 +2523857 +2523858 +2523859 +2523860 +2523861 +2523862 +2523863 +2523864 +2523865 +2523866 +2523867 +2523868 +2523869 +2523870 +2523871 +2523872 +2523873 +2523874 +2523875 +2523876 +2523877 +2523878 +2523879 +2523880 +2523881 +2523882 +2523883 +2523884 +2523885 +2523886 +2523887 +2523888 +2523889 +2523890 +2523891 +2523892 +2523893 +2523894 +2523895 +2523896 +2523897 +2523898 +2523899 +2523900 +2523901 +2523902 +2523903 +2523904 +2523905 +2523906 +2523907 +2523908 +2523909 +2523910 +2523911 +2523912 +2523913 +2523914 +2523915 +2523916 +2523917 +2523918 +2523919 +2523920 +2523921 +2523922 +2523923 +2523924 +2523925 +2523926 +2523927 +2523928 +2523929 +2523930 +2523931 +2523932 +2523933 +2523934 +2523935 +2523936 +2523937 +2523938 +2523939 +2523940 +2523941 +2523942 +2523943 +2523944 +2523945 +2523946 +2523947 +2523948 +2523949 +2523950 +2523951 +2523952 +2523953 +2523954 +2523955 +2523956 +2523957 +2523958 +2523959 +2523960 +2523961 +2523962 +2523963 +2523964 +2523965 +2523966 +2523967 +2523968 +2523969 +2523970 +2523971 +2523972 +2523973 +2523974 +2523975 +2523976 +2523977 +2523978 +2523979 +2523980 +2523981 +2523982 +2523983 +2523984 +2523985 +2523986 +2523987 +2523988 +2523989 +2523990 +2523991 +2523992 +2523993 +2523994 +2523995 +2523996 +2523997 +2523998 +2523999 +2524000 +2524001 +2524002 +2524003 +2524004 +2524005 +2524006 +2524007 +2524008 +2524009 +2524010 +2524011 +2524012 +2524013 +2524014 +2524015 +2524016 +2524017 +2524018 +2524019 +2524020 +2524021 +2524022 +2524023 +2524024 +2524025 +2524026 +2524027 +2524028 +2524029 +2524030 +2524031 +2524032 +2524033 +2524034 +2524035 +2524036 +2524037 +2524038 +2524039 +2524040 +2524041 +2524042 +2524043 +2524044 +2524045 +2524046 +2524047 +2524048 +2524049 +2524050 +2524051 +2524052 +2524053 +2524054 +2524055 +2524056 +2524057 +2524058 +2524059 +2524060 +2524061 +2524062 +2524063 +2524064 +2524065 +2524066 +2524067 +2524068 +2524069 +2524070 +2524071 +2524072 +2524073 +2524074 +2524075 +2524076 +2524077 +2524078 +2524079 +2524080 +2524081 +2524082 +2524083 +2524084 +2524085 +2524086 +2524087 +2524088 +2524089 +2524090 +2524091 +2524092 +2524093 +2524094 +2524095 +2524096 +2524097 +2524098 +2524099 +2524100 +2524101 +2524102 +2524103 +2524104 +2524105 +2524106 +2524107 +2524108 +2524109 +2524110 +2524111 +2524112 +2524113 +2524114 +2524115 +2524116 +2524117 +2524118 +2524119 +2524120 +2524121 +2524122 +2524123 +2524124 +2524125 +2524126 +2524127 +2524128 +2524129 +2524130 +2524131 +2524132 +2524133 +2524134 +2524135 +2524136 +2524137 +2524138 +2524139 +2524140 +2524141 +2524142 +2524143 +2524144 +2524145 +2524146 +2524147 +2524148 +2524149 +2524150 +2524151 +2524152 +2524153 +2524154 +2524155 +2524156 +2524157 +2524158 +2524159 +2524160 +2524161 +2524162 +2524163 +2524169 +2524170 +2524171 +2524172 +2524173 +2524174 +2524175 +2524176 +2524177 +2524178 +2527871 +2527872 +2527873 +2527874 +2527875 +2527876 +2527877 +2527878 +2527879 +2527880 +2527881 +2527882 +2527883 +2527884 +2527885 +2527886 +2527887 +2527888 +2527889 +2527890 +2527891 +2527892 +2527893 +2527894 +2527895 +2527896 +2527897 +2527898 +2527899 +2527900 +2527901 +2527902 +2527903 +2527904 +2527905 +2527906 +2527907 +2527908 +2527909 +2527910 +2527911 +2527912 +2527913 +2527914 +2527915 +2527916 +2527917 +2527918 +2527919 +2527920 +2527921 +2527922 +2527923 +2527924 +2527925 +2527926 +2527927 +2527928 +2527929 +2527930 +2527931 +2527932 +2527933 +2527934 +2527935 +2527936 +2527937 +2527938 +2527939 +2527940 +2527941 +2527942 +2527943 +2527944 +2527945 +2527946 +2527947 +2527948 +2527949 +2527950 +2527951 +2527952 +2527953 +2527954 +2527955 +2527956 +2527957 +2527958 +2527959 +2527960 +2527961 +2527962 +2527963 +2527964 +2527965 +2527966 +2527967 +2527968 +2527969 +2527970 +2527971 +2527972 +2527973 +2527974 +2527975 +2527976 +2527977 +2527978 +2527979 +2527980 +2527981 +2527982 +2527983 +2527984 +2527985 +2527986 +2527987 +2527988 +2527989 +2527990 +2527991 +2527992 +2527993 +2527994 +2527995 +2527996 +2527997 +2528002 +2528003 +2528005 +2528014 +2528015 +2528016 +2528017 +2528018 +2528019 +2528020 +2528021 +2528022 +2528023 +2528024 +2528025 +2528026 +2528027 +2528028 +2528029 +2528030 +2528031 +2528032 +2528033 +2528034 +2528035 +2528036 +2528037 +2528038 +2528039 +2528040 +2528041 +2528042 +2528043 +2528044 +2528045 +2528046 +2528047 +2528048 +2528049 +2528050 +2528051 +2528052 +2528053 +2528054 +2528055 +2528056 +2528057 +2528058 +2528059 +2528060 +2528061 +2528062 +2528063 +2528064 +2528065 +2528066 +2528067 +2528068 +2528069 +2528070 +2528071 +2528072 +2528073 +2528074 +2528075 +2528076 +2528077 +2528078 +2528079 +2528080 +2528081 +2528082 +2528083 +2528084 +2528085 +2528086 +2528087 +2528088 +2528089 +2528090 +2528091 +2528092 +2528093 +2528094 +2528095 +2528096 +2528097 +2528098 +2528099 +2528100 +2528101 +2528102 +2528103 +2528104 +2528105 +2528106 +2528107 +2528108 +2528109 +2528110 +2528111 +2528112 +2528113 +2528114 +2528115 +2528116 +2528117 +2528118 +2528119 +2528120 +2528121 +2528122 +2528123 +2528124 +2528125 +2528126 +2528127 +2528128 +2528129 +2528130 +2528131 +2528132 +2528133 +2528134 +2528135 +2528136 +2528137 +2528138 +2528139 +2528140 +2528141 +2528142 +2528143 +2528144 +2528145 +2528146 +2528147 +2528148 +2528149 +2528150 +2528151 +2528152 +2528153 +2528154 +2528155 +2528156 +2528157 +2528158 +2528159 +2528160 +2528161 +2528162 +2528163 +2528164 +2528165 +2528166 +2528167 +2528168 +2528169 +2528170 +2528171 +2528172 +2528173 +2528174 +2528175 +2528176 +2528177 +2528178 +2528179 +2528180 +2528181 +2528182 +2528183 +2528184 +2528185 +2528186 +2528187 +2528188 +2528189 +2528190 +2528191 +2528192 +2528193 +2528194 +2528195 +2528196 +2528197 +2528198 +2528199 +2528200 +2528201 +2528202 +2528203 +2528204 +2528205 +2528206 +2528207 +2528208 +2528209 +2528210 +2528211 +2528212 +2528213 +2528214 +2528215 +2528216 +2528217 +2528218 +2528219 +2528220 +2528221 +2528222 +2528223 +2528224 +2528225 +2528226 +2528227 +2528228 +2528229 +2528230 +2528231 +2528232 +2528233 +2528234 +2528235 +2528236 +2528237 +2528238 +2528239 +2528240 +2528241 +2528242 +2528243 +2528244 +2528245 +2528246 +2528247 +2528248 +2528249 +2528250 +2528251 +2528252 +2528253 +2528254 +2528255 +2528256 +2528257 +2528258 +2528259 +2528260 +2528261 +2528262 +2528263 +2528264 +2528265 +2528266 +2528267 +2528268 +2528269 +2528270 +2528271 +2528272 +2528273 +2528274 +2528275 +2528276 +2528277 +2528278 +2528279 +2528280 +2528281 +2528282 +2528283 +2528284 +2528285 +2528286 +2528287 +2528288 +2528289 +2528290 +2528291 +2528292 +2528293 +2528294 +2528295 +2528296 +2528297 +2528298 +2528299 +2528300 +2528301 +2528302 +2528303 +2528304 +2528305 +2528306 +2528307 +2528308 +2528309 +2528310 +2528311 +2528312 +2528313 +2528314 +2528315 +2528316 +2528317 +2528318 +2528319 +2528320 +2528321 +2528322 +2528323 +2528324 +2528325 +2528326 +2528327 +2528328 +2528329 +2528330 +2528331 +2528332 +2528333 +2528334 +2528335 +2528336 +2528337 +2528338 +2528339 +2528340 +2528341 +2528342 +2528343 +2528344 +2528345 +2528346 +2528347 +2528348 +2528349 +2528350 +2528351 +2528352 +2528353 +2528354 +2528355 +2528356 +2528357 +2528358 +2528359 +2528360 +2528361 +2528362 +2528363 +2528364 +2528365 +2528366 +2528367 +2528368 +2528369 +2528370 +2528371 +2528372 +2528373 +2528374 +2528375 +2528376 +2528377 +2528378 +2528379 +2528380 +2528381 +2528382 +2528383 +2528384 +2528385 +2528386 +2528387 +2528388 +2528389 +2528390 +2528391 +2528392 +2528393 +2528394 +2528395 +2528396 +2528397 +2528398 +2528399 +2528400 +2528401 +2528402 +2528403 +2528404 +2528405 +2528406 +2528407 +2528408 +2528409 +2528410 +2528411 +2528412 +2528413 +2528414 +2528415 +2528416 +2528417 +2528418 +2528419 +2528420 +2528421 +2528422 +2528423 +2528424 +2528425 +2528426 +2528427 +2528428 +2528429 +2528430 +2528431 +2528432 +2528433 +2528434 +2528435 +2528436 +2528437 +2528438 +2528439 +2528440 +2528441 +2528442 +2528443 +2528444 +2528445 +2528446 +2528447 +2528448 +2528449 +2528450 +2528451 +2528452 +2528453 +2528454 +2528455 +2528456 +2528457 +2528458 +2528459 +2528460 +2528461 +2528462 +2528463 +2528464 +2528465 +2528466 +2528467 +2528468 +2528469 +2528470 +2528471 +2528472 +2528473 +2528474 +2528475 +2528476 +2528477 +2528478 +2528479 +2528480 +2528481 +2528482 +2528483 +2528494 +2532191 +2532192 +2532193 +2532194 +2532195 +2532196 +2532197 +2532198 +2532199 +2532200 +2532201 +2532202 +2532203 +2532204 +2532205 +2532206 +2532207 +2532208 +2532209 +2532210 +2532211 +2532212 +2532213 +2532214 +2532215 +2532216 +2532217 +2532218 +2532219 +2532220 +2532221 +2532222 +2532223 +2532224 +2532225 +2532226 +2532227 +2532228 +2532229 +2532230 +2532231 +2532232 +2532233 +2532234 +2532235 +2532236 +2532237 +2532238 +2532239 +2532240 +2532241 +2532242 +2532243 +2532244 +2532245 +2532246 +2532247 +2532248 +2532249 +2532250 +2532251 +2532252 +2532253 +2532254 +2532255 +2532256 +2532257 +2532258 +2532259 +2532260 +2532261 +2532262 +2532263 +2532264 +2532265 +2532266 +2532267 +2532268 +2532269 +2532270 +2532271 +2532272 +2532273 +2532274 +2532275 +2532276 +2532277 +2532278 +2532279 +2532280 +2532281 +2532282 +2532283 +2532284 +2532285 +2532286 +2532287 +2532288 +2532289 +2532290 +2532291 +2532292 +2532293 +2532294 +2532295 +2532296 +2532297 +2532298 +2532299 +2532300 +2532301 +2532302 +2532303 +2532304 +2532305 +2532306 +2532307 +2532308 +2532309 +2532310 +2532311 +2532312 +2532313 +2532314 +2532315 +2532316 +2532325 +2532335 +2532336 +2532337 +2532338 +2532339 +2532340 +2532341 +2532342 +2532343 +2532344 +2532345 +2532346 +2532347 +2532348 +2532349 +2532350 +2532351 +2532352 +2532353 +2532354 +2532355 +2532356 +2532357 +2532358 +2532359 +2532360 +2532361 +2532362 +2532363 +2532364 +2532365 +2532366 +2532367 +2532368 +2532369 +2532370 +2532371 +2532372 +2532373 +2532374 +2532375 +2532376 +2532377 +2532378 +2532379 +2532380 +2532381 +2532382 +2532383 +2532384 +2532385 +2532386 +2532387 +2532388 +2532389 +2532390 +2532391 +2532392 +2532393 +2532394 +2532395 +2532396 +2532397 +2532398 +2532399 +2532400 +2532401 +2532402 +2532403 +2532404 +2532405 +2532406 +2532407 +2532408 +2532409 +2532410 +2532411 +2532412 +2532413 +2532414 +2532415 +2532416 +2532417 +2532418 +2532419 +2532420 +2532421 +2532422 +2532423 +2532424 +2532425 +2532426 +2532427 +2532428 +2532429 +2532430 +2532431 +2532432 +2532433 +2532434 +2532435 +2532436 +2532437 +2532438 +2532439 +2532440 +2532441 +2532442 +2532443 +2532444 +2532445 +2532446 +2532447 +2532448 +2532449 +2532450 +2532451 +2532452 +2532453 +2532454 +2532455 +2532456 +2532457 +2532458 +2532459 +2532460 +2532461 +2532462 +2532463 +2532464 +2532465 +2532466 +2532467 +2532468 +2532469 +2532470 +2532471 +2532472 +2532473 +2532474 +2532475 +2532476 +2532477 +2532478 +2532479 +2532480 +2532481 +2532482 +2532483 +2532484 +2532485 +2532486 +2532487 +2532488 +2532489 +2532490 +2532491 +2532492 +2532493 +2532494 +2532495 +2532496 +2532497 +2532498 +2532499 +2532500 +2532501 +2532502 +2532503 +2532504 +2532505 +2532506 +2532507 +2532508 +2532509 +2532510 +2532511 +2532512 +2532513 +2532514 +2532515 +2532516 +2532517 +2532518 +2532519 +2532520 +2532521 +2532522 +2532523 +2532524 +2532525 +2532526 +2532527 +2532528 +2532529 +2532530 +2532531 +2532532 +2532533 +2532534 +2532535 +2532536 +2532537 +2532538 +2532539 +2532540 +2532541 +2532542 +2532543 +2532544 +2532545 +2532546 +2532547 +2532548 +2532549 +2532550 +2532551 +2532552 +2532553 +2532554 +2532555 +2532556 +2532557 +2532558 +2532559 +2532560 +2532561 +2532562 +2532563 +2532564 +2532565 +2532566 +2532567 +2532568 +2532569 +2532570 +2532571 +2532572 +2532573 +2532574 +2532575 +2532576 +2532577 +2532578 +2532579 +2532580 +2532581 +2532582 +2532583 +2532584 +2532585 +2532586 +2532587 +2532588 +2532589 +2532590 +2532591 +2532592 +2532593 +2532594 +2532595 +2532596 +2532597 +2532598 +2532599 +2532600 +2532601 +2532602 +2532603 +2532604 +2532605 +2532606 +2532607 +2532608 +2532609 +2532610 +2532611 +2532612 +2532613 +2532614 +2532615 +2532616 +2532617 +2532618 +2532619 +2532620 +2532621 +2532622 +2532623 +2532624 +2532625 +2532626 +2532627 +2532628 +2532629 +2532630 +2532631 +2532632 +2532633 +2532634 +2532635 +2532636 +2532637 +2532638 +2532639 +2532640 +2532641 +2532642 +2532643 +2532644 +2532645 +2532646 +2532647 +2532648 +2532649 +2532650 +2532651 +2532652 +2532653 +2532654 +2532655 +2532656 +2532657 +2532658 +2532659 +2532660 +2532661 +2532662 +2532663 +2532664 +2532665 +2532666 +2532667 +2532668 +2532669 +2532670 +2532671 +2532672 +2532673 +2532674 +2532675 +2532676 +2532677 +2532678 +2532679 +2532680 +2532681 +2532682 +2532683 +2532684 +2532685 +2532686 +2532687 +2532688 +2532689 +2532690 +2532691 +2532692 +2532693 +2532694 +2532695 +2532696 +2532697 +2532698 +2532699 +2532700 +2532701 +2532702 +2532703 +2532704 +2532705 +2532706 +2532707 +2532708 +2532709 +2532710 +2532711 +2532712 +2532713 +2532714 +2532715 +2532716 +2532717 +2532718 +2532719 +2532720 +2532721 +2532722 +2532723 +2532724 +2532725 +2532726 +2532727 +2532728 +2532729 +2532730 +2532731 +2532732 +2532733 +2532734 +2532735 +2532736 +2532737 +2532738 +2532739 +2532740 +2532741 +2532742 +2532743 +2532744 +2532745 +2532746 +2532747 +2532748 +2532749 +2532750 +2532751 +2532752 +2532753 +2532754 +2532755 +2532756 +2532757 +2532758 +2532759 +2532760 +2532761 +2532762 +2532763 +2532764 +2532765 +2532766 +2532767 +2532768 +2532769 +2532770 +2532771 +2532772 +2532773 +2532774 +2532775 +2532776 +2532777 +2532778 +2532779 +2532780 +2532781 +2532782 +2532783 +2532784 +2532785 +2532786 +2532787 +2532788 +2532789 +2532790 +2532791 +2532792 +2532793 +2532794 +2532795 +2532796 +2532797 +2532798 +2532799 +2532800 +2532801 +2532802 +2532803 +2532812 +2532813 +2532814 +2532815 +2536511 +2536512 +2536513 +2536514 +2536515 +2536516 +2536517 +2536518 +2536519 +2536520 +2536521 +2536522 +2536523 +2536524 +2536525 +2536526 +2536527 +2536528 +2536529 +2536530 +2536531 +2536532 +2536533 +2536534 +2536535 +2536536 +2536537 +2536538 +2536539 +2536540 +2536541 +2536542 +2536543 +2536544 +2536545 +2536546 +2536547 +2536548 +2536549 +2536550 +2536551 +2536552 +2536553 +2536554 +2536555 +2536556 +2536557 +2536558 +2536559 +2536560 +2536561 +2536562 +2536563 +2536564 +2536565 +2536566 +2536567 +2536568 +2536569 +2536570 +2536571 +2536572 +2536573 +2536574 +2536575 +2536576 +2536577 +2536578 +2536579 +2536580 +2536581 +2536582 +2536583 +2536584 +2536585 +2536586 +2536587 +2536588 +2536589 +2536590 +2536591 +2536592 +2536593 +2536594 +2536595 +2536596 +2536597 +2536598 +2536599 +2536600 +2536601 +2536602 +2536603 +2536604 +2536605 +2536606 +2536607 +2536608 +2536609 +2536610 +2536611 +2536612 +2536613 +2536614 +2536615 +2536616 +2536617 +2536618 +2536619 +2536620 +2536621 +2536622 +2536623 +2536624 +2536625 +2536626 +2536627 +2536628 +2536629 +2536630 +2536631 +2536632 +2536633 +2536634 +2536644 +2536645 +2536656 +2536657 +2536658 +2536659 +2536660 +2536661 +2536662 +2536663 +2536664 +2536665 +2536666 +2536667 +2536668 +2536669 +2536670 +2536671 +2536672 +2536673 +2536674 +2536675 +2536676 +2536677 +2536678 +2536679 +2536680 +2536681 +2536682 +2536683 +2536684 +2536685 +2536686 +2536687 +2536688 +2536689 +2536690 +2536691 +2536692 +2536693 +2536694 +2536695 +2536696 +2536697 +2536698 +2536699 +2536700 +2536701 +2536702 +2536703 +2536704 +2536705 +2536706 +2536707 +2536708 +2536709 +2536710 +2536711 +2536712 +2536713 +2536714 +2536715 +2536716 +2536717 +2536718 +2536719 +2536720 +2536721 +2536722 +2536723 +2536724 +2536725 +2536726 +2536727 +2536728 +2536729 +2536730 +2536731 +2536732 +2536733 +2536734 +2536735 +2536736 +2536737 +2536738 +2536739 +2536740 +2536741 +2536742 +2536743 +2536744 +2536745 +2536746 +2536747 +2536748 +2536749 +2536750 +2536751 +2536752 +2536753 +2536754 +2536755 +2536756 +2536757 +2536758 +2536759 +2536760 +2536761 +2536762 +2536763 +2536764 +2536765 +2536766 +2536767 +2536768 +2536769 +2536770 +2536771 +2536772 +2536773 +2536774 +2536775 +2536776 +2536777 +2536778 +2536779 +2536780 +2536781 +2536782 +2536783 +2536784 +2536785 +2536786 +2536787 +2536788 +2536789 +2536790 +2536791 +2536792 +2536793 +2536794 +2536795 +2536796 +2536797 +2536798 +2536799 +2536800 +2536801 +2536802 +2536803 +2536804 +2536805 +2536806 +2536807 +2536808 +2536809 +2536810 +2536811 +2536812 +2536813 +2536814 +2536815 +2536816 +2536817 +2536818 +2536819 +2536820 +2536821 +2536822 +2536823 +2536824 +2536825 +2536826 +2536827 +2536828 +2536829 +2536830 +2536831 +2536832 +2536833 +2536834 +2536835 +2536836 +2536837 +2536838 +2536839 +2536840 +2536841 +2536842 +2536843 +2536844 +2536845 +2536846 +2536847 +2536848 +2536849 +2536850 +2536851 +2536852 +2536853 +2536854 +2536855 +2536856 +2536857 +2536858 +2536859 +2536860 +2536861 +2536862 +2536863 +2536864 +2536865 +2536866 +2536867 +2536868 +2536869 +2536870 +2536871 +2536872 +2536873 +2536874 +2536875 +2536876 +2536877 +2536878 +2536879 +2536880 +2536881 +2536882 +2536883 +2536884 +2536885 +2536886 +2536887 +2536888 +2536889 +2536890 +2536891 +2536892 +2536893 +2536894 +2536895 +2536896 +2536897 +2536898 +2536899 +2536900 +2536901 +2536902 +2536903 +2536904 +2536905 +2536906 +2536907 +2536908 +2536909 +2536910 +2536911 +2536912 +2536913 +2536914 +2536915 +2536916 +2536917 +2536918 +2536919 +2536920 +2536921 +2536922 +2536923 +2536924 +2536925 +2536926 +2536927 +2536928 +2536929 +2536930 +2536931 +2536932 +2536933 +2536934 +2536935 +2536936 +2536937 +2536938 +2536939 +2536940 +2536941 +2536942 +2536943 +2536944 +2536945 +2536946 +2536947 +2536948 +2536949 +2536950 +2536951 +2536952 +2536953 +2536954 +2536955 +2536956 +2536957 +2536958 +2536959 +2536960 +2536961 +2536962 +2536963 +2536964 +2536965 +2536966 +2536967 +2536968 +2536969 +2536970 +2536971 +2536972 +2536973 +2536974 +2536975 +2536976 +2536977 +2536978 +2536979 +2536980 +2536981 +2536982 +2536983 +2536984 +2536985 +2536986 +2536987 +2536988 +2536989 +2536990 +2536991 +2536992 +2536993 +2536994 +2536995 +2536996 +2536997 +2536998 +2536999 +2537000 +2537001 +2537002 +2537003 +2537004 +2537005 +2537006 +2537007 +2537008 +2537009 +2537010 +2537011 +2537012 +2537013 +2537014 +2537015 +2537016 +2537017 +2537018 +2537019 +2537020 +2537021 +2537022 +2537023 +2537024 +2537025 +2537026 +2537027 +2537028 +2537029 +2537030 +2537031 +2537032 +2537033 +2537034 +2537035 +2537036 +2537037 +2537038 +2537039 +2537040 +2537041 +2537042 +2537043 +2537044 +2537045 +2537046 +2537047 +2537048 +2537049 +2537050 +2537051 +2537052 +2537053 +2537054 +2537055 +2537056 +2537057 +2537058 +2537059 +2537060 +2537061 +2537062 +2537063 +2537064 +2537065 +2537066 +2537067 +2537068 +2537069 +2537070 +2537071 +2537072 +2537073 +2537074 +2537075 +2537076 +2537077 +2537078 +2537079 +2537080 +2537081 +2537082 +2537083 +2537084 +2537085 +2537086 +2537087 +2537088 +2537089 +2537090 +2537091 +2537092 +2537093 +2537094 +2537095 +2537096 +2537097 +2537098 +2537099 +2537100 +2537101 +2537102 +2537103 +2537104 +2537105 +2537106 +2537107 +2537108 +2537109 +2537110 +2537111 +2537112 +2537113 +2537115 +2537116 +2537117 +2537118 +2537119 +2537120 +2537130 +2537131 +2537132 +2537133 +2537134 +2537135 +2540831 +2540832 +2540833 +2540834 +2540835 +2540836 +2540837 +2540838 +2540839 +2540840 +2540841 +2540842 +2540843 +2540844 +2540845 +2540846 +2540847 +2540848 +2540849 +2540850 +2540851 +2540852 +2540853 +2540854 +2540855 +2540856 +2540857 +2540858 +2540859 +2540860 +2540861 +2540862 +2540863 +2540864 +2540865 +2540866 +2540867 +2540868 +2540869 +2540870 +2540871 +2540872 +2540873 +2540874 +2540875 +2540876 +2540877 +2540878 +2540879 +2540880 +2540881 +2540882 +2540883 +2540884 +2540885 +2540886 +2540887 +2540888 +2540889 +2540890 +2540891 +2540892 +2540893 +2540894 +2540895 +2540896 +2540897 +2540898 +2540899 +2540900 +2540901 +2540902 +2540903 +2540904 +2540905 +2540906 +2540907 +2540908 +2540909 +2540910 +2540911 +2540912 +2540913 +2540914 +2540915 +2540916 +2540917 +2540918 +2540919 +2540920 +2540921 +2540922 +2540923 +2540924 +2540925 +2540926 +2540927 +2540928 +2540929 +2540930 +2540931 +2540932 +2540933 +2540934 +2540935 +2540936 +2540937 +2540938 +2540939 +2540940 +2540941 +2540942 +2540943 +2540944 +2540945 +2540946 +2540947 +2540948 +2540949 +2540950 +2540951 +2540952 +2540953 +2540963 +2540964 +2540965 +2540966 +2540977 +2540978 +2540979 +2540980 +2540981 +2540982 +2540983 +2540984 +2540985 +2540986 +2540987 +2540988 +2540989 +2540990 +2540991 +2540992 +2540993 +2540994 +2540995 +2540996 +2540997 +2540998 +2540999 +2541000 +2541001 +2541002 +2541003 +2541004 +2541005 +2541006 +2541007 +2541008 +2541009 +2541010 +2541011 +2541012 +2541013 +2541014 +2541015 +2541016 +2541017 +2541018 +2541019 +2541020 +2541021 +2541022 +2541023 +2541024 +2541025 +2541026 +2541027 +2541028 +2541029 +2541030 +2541031 +2541032 +2541033 +2541034 +2541035 +2541036 +2541037 +2541038 +2541039 +2541040 +2541041 +2541042 +2541043 +2541044 +2541045 +2541046 +2541047 +2541048 +2541049 +2541050 +2541051 +2541052 +2541053 +2541054 +2541055 +2541056 +2541057 +2541058 +2541059 +2541060 +2541061 +2541062 +2541063 +2541064 +2541065 +2541066 +2541067 +2541068 +2541069 +2541070 +2541071 +2541072 +2541073 +2541074 +2541075 +2541076 +2541077 +2541078 +2541079 +2541080 +2541081 +2541082 +2541083 +2541084 +2541085 +2541086 +2541087 +2541088 +2541089 +2541090 +2541091 +2541092 +2541093 +2541094 +2541095 +2541096 +2541097 +2541098 +2541099 +2541100 +2541101 +2541102 +2541103 +2541104 +2541105 +2541106 +2541107 +2541108 +2541109 +2541110 +2541111 +2541112 +2541113 +2541114 +2541115 +2541116 +2541117 +2541118 +2541119 +2541120 +2541121 +2541122 +2541123 +2541124 +2541125 +2541126 +2541127 +2541128 +2541129 +2541130 +2541131 +2541132 +2541133 +2541134 +2541135 +2541136 +2541137 +2541138 +2541139 +2541140 +2541141 +2541142 +2541143 +2541144 +2541145 +2541146 +2541147 +2541148 +2541149 +2541150 +2541151 +2541152 +2541153 +2541154 +2541155 +2541156 +2541157 +2541158 +2541159 +2541160 +2541161 +2541162 +2541163 +2541164 +2541165 +2541166 +2541167 +2541168 +2541169 +2541170 +2541171 +2541172 +2541173 +2541174 +2541175 +2541176 +2541177 +2541178 +2541179 +2541180 +2541181 +2541182 +2541183 +2541184 +2541185 +2541186 +2541187 +2541188 +2541189 +2541190 +2541191 +2541192 +2541193 +2541194 +2541195 +2541196 +2541197 +2541198 +2541199 +2541200 +2541201 +2541202 +2541203 +2541204 +2541205 +2541206 +2541207 +2541208 +2541209 +2541210 +2541211 +2541212 +2541213 +2541214 +2541215 +2541216 +2541217 +2541218 +2541219 +2541220 +2541221 +2541222 +2541223 +2541224 +2541225 +2541226 +2541227 +2541228 +2541229 +2541230 +2541231 +2541232 +2541233 +2541234 +2541235 +2541236 +2541237 +2541238 +2541239 +2541240 +2541241 +2541242 +2541243 +2541244 +2541245 +2541246 +2541247 +2541248 +2541249 +2541250 +2541251 +2541252 +2541253 +2541254 +2541255 +2541256 +2541257 +2541258 +2541259 +2541260 +2541261 +2541262 +2541263 +2541264 +2541265 +2541266 +2541267 +2541268 +2541269 +2541270 +2541271 +2541272 +2541273 +2541274 +2541275 +2541276 +2541277 +2541278 +2541279 +2541280 +2541281 +2541282 +2541283 +2541284 +2541285 +2541286 +2541287 +2541288 +2541289 +2541290 +2541291 +2541292 +2541293 +2541294 +2541295 +2541296 +2541297 +2541298 +2541299 +2541300 +2541301 +2541302 +2541303 +2541304 +2541305 +2541306 +2541307 +2541308 +2541309 +2541310 +2541311 +2541312 +2541313 +2541314 +2541315 +2541316 +2541317 +2541318 +2541319 +2541320 +2541321 +2541322 +2541323 +2541324 +2541325 +2541326 +2541327 +2541328 +2541329 +2541330 +2541331 +2541332 +2541333 +2541334 +2541335 +2541336 +2541337 +2541338 +2541339 +2541340 +2541341 +2541342 +2541343 +2541344 +2541345 +2541346 +2541347 +2541348 +2541349 +2541350 +2541351 +2541352 +2541353 +2541354 +2541355 +2541356 +2541357 +2541358 +2541359 +2541360 +2541361 +2541362 +2541363 +2541364 +2541365 +2541366 +2541367 +2541368 +2541369 +2541370 +2541371 +2541372 +2541373 +2541374 +2541375 +2541376 +2541377 +2541378 +2541379 +2541380 +2541381 +2541382 +2541383 +2541384 +2541385 +2541386 +2541387 +2541388 +2541389 +2541390 +2541391 +2541392 +2541393 +2541394 +2541395 +2541396 +2541397 +2541398 +2541399 +2541400 +2541401 +2541402 +2541403 +2541404 +2541405 +2541406 +2541407 +2541408 +2541409 +2541410 +2541411 +2541412 +2541413 +2541414 +2541415 +2541416 +2541417 +2541418 +2541419 +2541420 +2541421 +2541422 +2541423 +2541424 +2541425 +2541426 +2541427 +2541428 +2541429 +2541430 +2541431 +2541432 +2541433 +2541434 +2541435 +2541436 +2541439 +2541440 +2541441 +2541442 +2541443 +2541449 +2541450 +2541451 +2541452 +2541453 +2541454 +2541455 +2545151 +2545152 +2545153 +2545154 +2545155 +2545156 +2545157 +2545158 +2545159 +2545160 +2545161 +2545162 +2545163 +2545164 +2545165 +2545166 +2545167 +2545168 +2545169 +2545170 +2545171 +2545172 +2545173 +2545174 +2545175 +2545176 +2545177 +2545178 +2545179 +2545180 +2545181 +2545182 +2545183 +2545184 +2545185 +2545186 +2545187 +2545188 +2545189 +2545190 +2545191 +2545192 +2545193 +2545194 +2545195 +2545196 +2545197 +2545198 +2545199 +2545200 +2545201 +2545202 +2545203 +2545204 +2545205 +2545206 +2545207 +2545208 +2545209 +2545210 +2545211 +2545212 +2545213 +2545214 +2545215 +2545216 +2545217 +2545218 +2545219 +2545220 +2545221 +2545222 +2545223 +2545224 +2545225 +2545226 +2545227 +2545228 +2545229 +2545230 +2545231 +2545232 +2545233 +2545234 +2545235 +2545236 +2545237 +2545238 +2545239 +2545240 +2545241 +2545242 +2545243 +2545244 +2545245 +2545246 +2545247 +2545248 +2545249 +2545250 +2545251 +2545252 +2545253 +2545254 +2545255 +2545256 +2545257 +2545258 +2545259 +2545260 +2545261 +2545262 +2545263 +2545264 +2545265 +2545266 +2545267 +2545268 +2545269 +2545270 +2545271 +2545272 +2545273 +2545274 +2545275 +2545283 +2545284 +2545285 +2545286 +2545287 +2545290 +2545296 +2545297 +2545298 +2545299 +2545300 +2545301 +2545302 +2545303 +2545304 +2545305 +2545306 +2545307 +2545308 +2545309 +2545310 +2545311 +2545312 +2545313 +2545314 +2545315 +2545316 +2545317 +2545318 +2545319 +2545320 +2545321 +2545322 +2545323 +2545324 +2545325 +2545326 +2545327 +2545328 +2545329 +2545330 +2545331 +2545332 +2545333 +2545334 +2545335 +2545336 +2545337 +2545338 +2545339 +2545340 +2545341 +2545342 +2545343 +2545344 +2545345 +2545346 +2545347 +2545348 +2545349 +2545350 +2545351 +2545352 +2545353 +2545354 +2545355 +2545356 +2545357 +2545358 +2545359 +2545360 +2545361 +2545362 +2545363 +2545364 +2545365 +2545366 +2545367 +2545368 +2545369 +2545370 +2545371 +2545372 +2545373 +2545374 +2545375 +2545376 +2545377 +2545378 +2545379 +2545380 +2545381 +2545382 +2545383 +2545384 +2545385 +2545386 +2545387 +2545388 +2545389 +2545390 +2545391 +2545392 +2545393 +2545394 +2545395 +2545396 +2545397 +2545398 +2545399 +2545400 +2545401 +2545402 +2545403 +2545404 +2545405 +2545406 +2545407 +2545408 +2545409 +2545410 +2545411 +2545412 +2545413 +2545414 +2545415 +2545416 +2545417 +2545418 +2545419 +2545420 +2545421 +2545422 +2545423 +2545424 +2545425 +2545426 +2545427 +2545428 +2545429 +2545430 +2545431 +2545432 +2545433 +2545434 +2545435 +2545436 +2545437 +2545438 +2545439 +2545440 +2545441 +2545442 +2545443 +2545444 +2545445 +2545446 +2545447 +2545448 +2545449 +2545450 +2545451 +2545452 +2545453 +2545454 +2545455 +2545456 +2545457 +2545458 +2545459 +2545460 +2545461 +2545462 +2545463 +2545464 +2545465 +2545466 +2545467 +2545468 +2545469 +2545470 +2545471 +2545472 +2545473 +2545474 +2545475 +2545476 +2545477 +2545478 +2545479 +2545480 +2545481 +2545482 +2545483 +2545484 +2545485 +2545486 +2545487 +2545488 +2545489 +2545490 +2545491 +2545492 +2545493 +2545494 +2545495 +2545496 +2545497 +2545498 +2545499 +2545500 +2545501 +2545502 +2545503 +2545504 +2545505 +2545506 +2545507 +2545508 +2545509 +2545510 +2545511 +2545512 +2545513 +2545514 +2545515 +2545516 +2545517 +2545518 +2545519 +2545520 +2545521 +2545522 +2545523 +2545524 +2545525 +2545526 +2545527 +2545528 +2545529 +2545530 +2545531 +2545532 +2545533 +2545534 +2545535 +2545536 +2545537 +2545538 +2545539 +2545540 +2545541 +2545542 +2545543 +2545544 +2545545 +2545546 +2545547 +2545548 +2545549 +2545550 +2545551 +2545552 +2545553 +2545554 +2545555 +2545556 +2545557 +2545558 +2545559 +2545560 +2545561 +2545562 +2545563 +2545564 +2545565 +2545566 +2545567 +2545568 +2545569 +2545570 +2545571 +2545572 +2545573 +2545574 +2545575 +2545576 +2545577 +2545578 +2545579 +2545580 +2545581 +2545582 +2545583 +2545584 +2545585 +2545586 +2545587 +2545588 +2545589 +2545590 +2545591 +2545592 +2545593 +2545594 +2545595 +2545596 +2545597 +2545598 +2545599 +2545600 +2545601 +2545602 +2545603 +2545604 +2545605 +2545606 +2545607 +2545608 +2545609 +2545610 +2545611 +2545612 +2545613 +2545614 +2545615 +2545616 +2545617 +2545618 +2545619 +2545620 +2545621 +2545622 +2545623 +2545624 +2545625 +2545626 +2545627 +2545628 +2545629 +2545630 +2545631 +2545632 +2545633 +2545634 +2545635 +2545636 +2545637 +2545638 +2545639 +2545640 +2545641 +2545642 +2545643 +2545644 +2545645 +2545646 +2545647 +2545648 +2545649 +2545650 +2545651 +2545652 +2545653 +2545654 +2545655 +2545656 +2545657 +2545658 +2545659 +2545660 +2545661 +2545662 +2545663 +2545664 +2545665 +2545666 +2545667 +2545668 +2545669 +2545670 +2545671 +2545672 +2545673 +2545674 +2545675 +2545676 +2545677 +2545678 +2545679 +2545680 +2545681 +2545682 +2545683 +2545684 +2545685 +2545686 +2545687 +2545688 +2545689 +2545690 +2545691 +2545692 +2545693 +2545694 +2545695 +2545696 +2545697 +2545698 +2545699 +2545700 +2545701 +2545702 +2545703 +2545704 +2545705 +2545706 +2545707 +2545708 +2545709 +2545710 +2545711 +2545712 +2545713 +2545714 +2545715 +2545716 +2545717 +2545718 +2545719 +2545720 +2545721 +2545722 +2545723 +2545724 +2545725 +2545726 +2545727 +2545728 +2545729 +2545730 +2545731 +2545732 +2545733 +2545734 +2545735 +2545736 +2545737 +2545738 +2545739 +2545740 +2545741 +2545742 +2545743 +2545744 +2545745 +2545746 +2545747 +2545748 +2545749 +2545750 +2545751 +2545752 +2545753 +2545754 +2545755 +2545756 +2545757 +2545758 +2545759 +2545760 +2545761 +2545762 +2545763 +2545764 +2545765 +2545766 +2545767 +2545768 +2545769 +2545770 +2545771 +2545772 +2545773 +2549471 +2549472 +2549473 +2549474 +2549475 +2549476 +2549477 +2549478 +2549479 +2549480 +2549481 +2549482 +2549483 +2549484 +2549485 +2549486 +2549487 +2549488 +2549489 +2549490 +2549491 +2549492 +2549493 +2549494 +2549495 +2549496 +2549497 +2549498 +2549499 +2549500 +2549501 +2549502 +2549503 +2549504 +2549505 +2549506 +2549507 +2549508 +2549509 +2549510 +2549511 +2549512 +2549513 +2549514 +2549515 +2549516 +2549517 +2549518 +2549519 +2549520 +2549521 +2549522 +2549523 +2549524 +2549525 +2549526 +2549527 +2549528 +2549529 +2549530 +2549531 +2549532 +2549533 +2549534 +2549535 +2549536 +2549537 +2549538 +2549539 +2549540 +2549541 +2549542 +2549543 +2549544 +2549545 +2549546 +2549547 +2549548 +2549549 +2549550 +2549551 +2549552 +2549553 +2549554 +2549555 +2549556 +2549557 +2549558 +2549559 +2549560 +2549561 +2549562 +2549563 +2549564 +2549565 +2549566 +2549567 +2549568 +2549569 +2549570 +2549571 +2549572 +2549573 +2549574 +2549575 +2549576 +2549577 +2549578 +2549579 +2549580 +2549581 +2549582 +2549583 +2549584 +2549585 +2549586 +2549587 +2549588 +2549589 +2549590 +2549591 +2549592 +2549593 +2549594 +2549602 +2549603 +2549604 +2549605 +2549606 +2549607 +2549608 +2549610 +2549615 +2549616 +2549617 +2549618 +2549619 +2549620 +2549621 +2549622 +2549623 +2549624 +2549625 +2549626 +2549627 +2549628 +2549629 +2549630 +2549631 +2549632 +2549633 +2549634 +2549635 +2549636 +2549637 +2549638 +2549639 +2549640 +2549641 +2549642 +2549643 +2549644 +2549645 +2549646 +2549647 +2549648 +2549649 +2549650 +2549651 +2549652 +2549653 +2549654 +2549655 +2549656 +2549657 +2549658 +2549659 +2549660 +2549661 +2549662 +2549663 +2549664 +2549665 +2549666 +2549667 +2549668 +2549669 +2549670 +2549671 +2549672 +2549673 +2549674 +2549675 +2549676 +2549677 +2549678 +2549679 +2549680 +2549681 +2549682 +2549683 +2549684 +2549685 +2549686 +2549687 +2549688 +2549689 +2549690 +2549691 +2549692 +2549693 +2549694 +2549695 +2549696 +2549697 +2549698 +2549699 +2549700 +2549701 +2549702 +2549703 +2549704 +2549705 +2549706 +2549707 +2549708 +2549709 +2549710 +2549711 +2549712 +2549713 +2549714 +2549715 +2549716 +2549717 +2549718 +2549719 +2549720 +2549721 +2549722 +2549723 +2549724 +2549725 +2549726 +2549727 +2549728 +2549729 +2549730 +2549731 +2549732 +2549733 +2549734 +2549735 +2549736 +2549737 +2549738 +2549739 +2549740 +2549741 +2549742 +2549743 +2549744 +2549745 +2549746 +2549747 +2549748 +2549749 +2549750 +2549751 +2549752 +2549753 +2549754 +2549755 +2549756 +2549757 +2549758 +2549759 +2549760 +2549761 +2549762 +2549763 +2549764 +2549765 +2549766 +2549767 +2549768 +2549769 +2549770 +2549771 +2549772 +2549773 +2549774 +2549775 +2549776 +2549777 +2549778 +2549779 +2549780 +2549781 +2549782 +2549783 +2549784 +2549785 +2549786 +2549787 +2549788 +2549789 +2549790 +2549791 +2549792 +2549793 +2549794 +2549795 +2549796 +2549797 +2549798 +2549799 +2549800 +2549801 +2549802 +2549803 +2549804 +2549805 +2549806 +2549807 +2549808 +2549809 +2549810 +2549811 +2549812 +2549813 +2549814 +2549815 +2549816 +2549817 +2549818 +2549819 +2549820 +2549821 +2549822 +2549823 +2549824 +2549825 +2549826 +2549827 +2549828 +2549829 +2549830 +2549831 +2549832 +2549833 +2549834 +2549835 +2549836 +2549837 +2549838 +2549839 +2549840 +2549841 +2549842 +2549843 +2549844 +2549845 +2549846 +2549847 +2549848 +2549849 +2549850 +2549851 +2549852 +2549853 +2549854 +2549855 +2549856 +2549857 +2549858 +2549859 +2549860 +2549861 +2549862 +2549863 +2549864 +2549865 +2549866 +2549867 +2549868 +2549869 +2549870 +2549871 +2549872 +2549873 +2549874 +2549875 +2549876 +2549877 +2549878 +2549879 +2549880 +2549881 +2549882 +2549883 +2549884 +2549885 +2549886 +2549887 +2549888 +2549889 +2549890 +2549891 +2549892 +2549893 +2549894 +2549895 +2549896 +2549897 +2549898 +2549899 +2549900 +2549901 +2549902 +2549903 +2549904 +2549905 +2549906 +2549907 +2549908 +2549909 +2549910 +2549911 +2549912 +2549913 +2549914 +2549915 +2549916 +2549917 +2549918 +2549919 +2549920 +2549921 +2549922 +2549923 +2549924 +2549925 +2549926 +2549927 +2549928 +2549929 +2549930 +2549931 +2549932 +2549933 +2549934 +2549935 +2549936 +2549937 +2549938 +2549939 +2549940 +2549941 +2549942 +2549943 +2549944 +2549945 +2549946 +2549947 +2549948 +2549949 +2549950 +2549951 +2549952 +2549953 +2549954 +2549955 +2549956 +2549957 +2549958 +2549959 +2549960 +2549961 +2549962 +2549963 +2549964 +2549965 +2549966 +2549967 +2549968 +2549969 +2549970 +2549971 +2549972 +2549973 +2549974 +2549975 +2549976 +2549977 +2549978 +2549979 +2549980 +2549981 +2549982 +2549983 +2549984 +2549985 +2549986 +2549987 +2549988 +2549989 +2549990 +2549991 +2549992 +2549993 +2549994 +2549995 +2549996 +2549997 +2549998 +2549999 +2550000 +2550001 +2550002 +2550003 +2550004 +2550005 +2550006 +2550007 +2550008 +2550009 +2550010 +2550011 +2550012 +2550013 +2550014 +2550015 +2550016 +2550017 +2550018 +2550019 +2550020 +2550021 +2550022 +2550023 +2550024 +2550025 +2550026 +2550027 +2550028 +2550029 +2550030 +2550031 +2550032 +2550033 +2550034 +2550035 +2550036 +2550037 +2550038 +2550039 +2550040 +2550041 +2550042 +2550043 +2550044 +2550045 +2550046 +2550047 +2550048 +2550049 +2550050 +2550051 +2550052 +2550053 +2550054 +2550055 +2550056 +2550057 +2550058 +2550059 +2550060 +2550061 +2550062 +2550063 +2550064 +2550065 +2550066 +2550067 +2550068 +2550069 +2550070 +2550071 +2550072 +2550073 +2550074 +2550075 +2550076 +2550077 +2550078 +2550079 +2550080 +2550081 +2550082 +2550083 +2553791 +2553792 +2553793 +2553794 +2553795 +2553796 +2553797 +2553798 +2553799 +2553800 +2553801 +2553802 +2553803 +2553804 +2553805 +2553806 +2553807 +2553808 +2553809 +2553810 +2553811 +2553812 +2553813 +2553815 +2553816 +2553817 +2553818 +2553819 +2553820 +2553821 +2553822 +2553823 +2553824 +2553825 +2553826 +2553827 +2553828 +2553829 +2553830 +2553831 +2553832 +2553833 +2553834 +2553835 +2553836 +2553837 +2553838 +2553839 +2553840 +2553841 +2553842 +2553843 +2553844 +2553845 +2553846 +2553847 +2553848 +2553849 +2553850 +2553851 +2553852 +2553853 +2553854 +2553855 +2553856 +2553857 +2553858 +2553859 +2553860 +2553861 +2553862 +2553863 +2553864 +2553865 +2553866 +2553867 +2553868 +2553869 +2553870 +2553871 +2553872 +2553873 +2553874 +2553875 +2553876 +2553877 +2553878 +2553879 +2553880 +2553881 +2553882 +2553883 +2553884 +2553885 +2553886 +2553887 +2553888 +2553889 +2553890 +2553891 +2553892 +2553893 +2553894 +2553895 +2553896 +2553897 +2553898 +2553899 +2553900 +2553901 +2553902 +2553903 +2553904 +2553905 +2553906 +2553907 +2553908 +2553909 +2553910 +2553911 +2553912 +2553913 +2553922 +2553923 +2553924 +2553925 +2553926 +2553927 +2553928 +2553929 +2553930 +2553931 +2553933 +2553934 +2553935 +2553936 +2553937 +2553938 +2553939 +2553940 +2553941 +2553942 +2553943 +2553944 +2553945 +2553946 +2553947 +2553948 +2553949 +2553950 +2553951 +2553952 +2553953 +2553954 +2553955 +2553956 +2553957 +2553958 +2553959 +2553960 +2553961 +2553962 +2553963 +2553964 +2553965 +2553966 +2553967 +2553968 +2553969 +2553970 +2553971 +2553972 +2553973 +2553974 +2553975 +2553976 +2553977 +2553978 +2553979 +2553980 +2553981 +2553982 +2553983 +2553984 +2553985 +2553986 +2553987 +2553988 +2553989 +2553990 +2553991 +2553992 +2553993 +2553994 +2553995 +2553996 +2553997 +2553998 +2553999 +2554000 +2554001 +2554002 +2554003 +2554004 +2554005 +2554006 +2554007 +2554008 +2554009 +2554010 +2554011 +2554012 +2554013 +2554014 +2554015 +2554016 +2554017 +2554018 +2554019 +2554020 +2554021 +2554022 +2554023 +2554024 +2554025 +2554026 +2554027 +2554028 +2554029 +2554030 +2554031 +2554032 +2554033 +2554034 +2554035 +2554036 +2554037 +2554038 +2554039 +2554040 +2554041 +2554042 +2554043 +2554044 +2554045 +2554046 +2554047 +2554048 +2554049 +2554050 +2554051 +2554052 +2554053 +2554054 +2554055 +2554056 +2554057 +2554058 +2554059 +2554060 +2554061 +2554062 +2554063 +2554064 +2554065 +2554066 +2554067 +2554068 +2554069 +2554070 +2554071 +2554072 +2554073 +2554074 +2554075 +2554076 +2554077 +2554078 +2554079 +2554080 +2554081 +2554082 +2554083 +2554084 +2554085 +2554086 +2554087 +2554088 +2554089 +2554090 +2554091 +2554092 +2554093 +2554094 +2554095 +2554096 +2554097 +2554098 +2554099 +2554100 +2554101 +2554102 +2554103 +2554104 +2554105 +2554106 +2554107 +2554108 +2554109 +2554110 +2554111 +2554112 +2554113 +2554114 +2554115 +2554116 +2554117 +2554118 +2554119 +2554120 +2554121 +2554122 +2554123 +2554124 +2554125 +2554126 +2554127 +2554128 +2554129 +2554130 +2554131 +2554132 +2554133 +2554134 +2554135 +2554136 +2554137 +2554138 +2554139 +2554140 +2554141 +2554142 +2554143 +2554144 +2554145 +2554146 +2554147 +2554148 +2554149 +2554150 +2554151 +2554152 +2554153 +2554154 +2554155 +2554156 +2554157 +2554158 +2554159 +2554160 +2554161 +2554162 +2554163 +2554164 +2554165 +2554166 +2554167 +2554168 +2554169 +2554170 +2554171 +2554172 +2554173 +2554174 +2554175 +2554176 +2554177 +2554178 +2554179 +2554180 +2554181 +2554182 +2554183 +2554184 +2554185 +2554186 +2554187 +2554188 +2554189 +2554190 +2554191 +2554192 +2554193 +2554194 +2554195 +2554196 +2554197 +2554198 +2554199 +2554200 +2554201 +2554202 +2554203 +2554204 +2554205 +2554206 +2554207 +2554208 +2554209 +2554210 +2554211 +2554212 +2554213 +2554214 +2554215 +2554216 +2554217 +2554218 +2554219 +2554220 +2554221 +2554222 +2554223 +2554224 +2554225 +2554226 +2554227 +2554228 +2554229 +2554230 +2554231 +2554232 +2554233 +2554234 +2554235 +2554236 +2554237 +2554238 +2554239 +2554240 +2554241 +2554242 +2554243 +2554244 +2554245 +2554246 +2554247 +2554248 +2554249 +2554250 +2554251 +2554252 +2554253 +2554254 +2554255 +2554256 +2554257 +2554258 +2554259 +2554260 +2554261 +2554262 +2554263 +2554264 +2554265 +2554266 +2554267 +2554268 +2554269 +2554270 +2554271 +2554272 +2554273 +2554274 +2554275 +2554276 +2554277 +2554278 +2554279 +2554280 +2554281 +2554282 +2554283 +2554284 +2554285 +2554286 +2554287 +2554288 +2554289 +2554290 +2554291 +2554292 +2554293 +2554294 +2554295 +2554296 +2554297 +2554298 +2554299 +2554300 +2554301 +2554302 +2554303 +2554304 +2554305 +2554306 +2554307 +2554308 +2554309 +2554310 +2554311 +2554312 +2554313 +2554314 +2554315 +2554316 +2554317 +2554318 +2554319 +2554320 +2554321 +2554322 +2554323 +2554324 +2554325 +2554326 +2554327 +2554328 +2554329 +2554330 +2554331 +2554332 +2554333 +2554334 +2554335 +2554336 +2554337 +2554338 +2554339 +2554340 +2554341 +2554342 +2554343 +2554344 +2554345 +2554346 +2554347 +2554348 +2554349 +2554350 +2554351 +2554352 +2554353 +2554354 +2554355 +2554356 +2554357 +2554359 +2554360 +2554361 +2554362 +2554363 +2554364 +2554365 +2554366 +2554367 +2554368 +2554369 +2554370 +2554371 +2554372 +2554373 +2554374 +2554375 +2554376 +2554377 +2554378 +2554379 +2554380 +2554381 +2554382 +2554383 +2554384 +2554385 +2554386 +2554387 +2554388 +2554389 +2554390 +2554391 +2554392 +2554393 +2554394 +2554395 +2554396 +2554397 +2554398 +2554399 +2554400 +2554401 +2554402 +2554403 +2558108 +2558109 +2558110 +2558111 +2558112 +2558113 +2558114 +2558115 +2558116 +2558117 +2558118 +2558119 +2558120 +2558121 +2558122 +2558123 +2558124 +2558125 +2558126 +2558127 +2558128 +2558129 +2558130 +2558131 +2558132 +2558133 +2558134 +2558135 +2558136 +2558137 +2558138 +2558139 +2558140 +2558141 +2558142 +2558143 +2558144 +2558145 +2558146 +2558147 +2558148 +2558149 +2558150 +2558152 +2558153 +2558154 +2558155 +2558156 +2558157 +2558158 +2558159 +2558160 +2558161 +2558162 +2558163 +2558164 +2558165 +2558166 +2558167 +2558168 +2558169 +2558170 +2558171 +2558172 +2558173 +2558174 +2558175 +2558176 +2558177 +2558178 +2558179 +2558180 +2558181 +2558182 +2558183 +2558184 +2558185 +2558186 +2558187 +2558188 +2558189 +2558190 +2558191 +2558192 +2558193 +2558194 +2558195 +2558196 +2558197 +2558198 +2558199 +2558200 +2558201 +2558202 +2558203 +2558204 +2558205 +2558206 +2558207 +2558208 +2558209 +2558210 +2558211 +2558212 +2558213 +2558214 +2558215 +2558216 +2558217 +2558218 +2558219 +2558220 +2558221 +2558222 +2558223 +2558224 +2558225 +2558226 +2558227 +2558228 +2558229 +2558230 +2558231 +2558232 +2558242 +2558243 +2558244 +2558245 +2558246 +2558247 +2558248 +2558249 +2558250 +2558251 +2558252 +2558253 +2558254 +2558255 +2558256 +2558257 +2558258 +2558259 +2558260 +2558261 +2558262 +2558263 +2558264 +2558265 +2558266 +2558267 +2558268 +2558269 +2558270 +2558271 +2558272 +2558273 +2558274 +2558275 +2558276 +2558277 +2558278 +2558279 +2558280 +2558281 +2558282 +2558283 +2558284 +2558285 +2558286 +2558287 +2558288 +2558289 +2558290 +2558291 +2558292 +2558293 +2558294 +2558295 +2558296 +2558297 +2558298 +2558299 +2558300 +2558301 +2558302 +2558303 +2558304 +2558305 +2558306 +2558307 +2558308 +2558309 +2558310 +2558311 +2558312 +2558313 +2558314 +2558315 +2558316 +2558317 +2558318 +2558319 +2558320 +2558321 +2558322 +2558323 +2558324 +2558325 +2558326 +2558327 +2558328 +2558329 +2558330 +2558331 +2558332 +2558333 +2558334 +2558335 +2558336 +2558337 +2558338 +2558339 +2558340 +2558341 +2558342 +2558343 +2558344 +2558345 +2558346 +2558347 +2558348 +2558349 +2558350 +2558351 +2558352 +2558353 +2558354 +2558355 +2558356 +2558357 +2558358 +2558359 +2558360 +2558361 +2558362 +2558363 +2558364 +2558365 +2558366 +2558367 +2558368 +2558369 +2558370 +2558371 +2558372 +2558373 +2558374 +2558375 +2558376 +2558377 +2558378 +2558379 +2558380 +2558381 +2558382 +2558383 +2558384 +2558385 +2558386 +2558387 +2558388 +2558389 +2558390 +2558391 +2558392 +2558393 +2558394 +2558395 +2558396 +2558397 +2558398 +2558399 +2558400 +2558401 +2558402 +2558403 +2558404 +2558405 +2558406 +2558407 +2558408 +2558409 +2558410 +2558411 +2558412 +2558413 +2558414 +2558415 +2558416 +2558417 +2558418 +2558419 +2558420 +2558421 +2558422 +2558423 +2558424 +2558425 +2558426 +2558427 +2558428 +2558429 +2558430 +2558431 +2558432 +2558433 +2558434 +2558435 +2558436 +2558437 +2558438 +2558439 +2558440 +2558441 +2558442 +2558443 +2558444 +2558445 +2558446 +2558447 +2558448 +2558449 +2558450 +2558451 +2558452 +2558453 +2558454 +2558455 +2558456 +2558457 +2558458 +2558459 +2558460 +2558461 +2558462 +2558463 +2558464 +2558465 +2558466 +2558467 +2558468 +2558469 +2558470 +2558471 +2558472 +2558473 +2558474 +2558475 +2558476 +2558477 +2558478 +2558479 +2558480 +2558481 +2558482 +2558483 +2558484 +2558485 +2558486 +2558487 +2558488 +2558489 +2558490 +2558491 +2558492 +2558493 +2558494 +2558495 +2558496 +2558497 +2558498 +2558499 +2558500 +2558501 +2558502 +2558503 +2558504 +2558505 +2558506 +2558507 +2558508 +2558509 +2558510 +2558511 +2558512 +2558513 +2558514 +2558515 +2558516 +2558517 +2558518 +2558519 +2558520 +2558521 +2558522 +2558523 +2558524 +2558525 +2558526 +2558527 +2558528 +2558529 +2558530 +2558531 +2558532 +2558533 +2558534 +2558535 +2558536 +2558537 +2558538 +2558539 +2558540 +2558541 +2558542 +2558543 +2558544 +2558545 +2558546 +2558547 +2558548 +2558549 +2558550 +2558551 +2558552 +2558553 +2558554 +2558555 +2558556 +2558557 +2558558 +2558559 +2558560 +2558561 +2558562 +2558563 +2558564 +2558565 +2558566 +2558567 +2558568 +2558569 +2558570 +2558571 +2558572 +2558573 +2558574 +2558575 +2558576 +2558577 +2558578 +2558579 +2558580 +2558581 +2558582 +2558583 +2558584 +2558585 +2558586 +2558587 +2558588 +2558589 +2558590 +2558591 +2558592 +2558593 +2558594 +2558595 +2558596 +2558597 +2558598 +2558599 +2558600 +2558601 +2558602 +2558603 +2558604 +2558605 +2558606 +2558607 +2558608 +2558609 +2558610 +2558611 +2558612 +2558613 +2558614 +2558615 +2558616 +2558617 +2558618 +2558619 +2558620 +2558621 +2558622 +2558623 +2558624 +2558625 +2558626 +2558627 +2558628 +2558629 +2558630 +2558631 +2558632 +2558633 +2558634 +2558635 +2558636 +2558637 +2558638 +2558639 +2558640 +2558641 +2558642 +2558643 +2558644 +2558645 +2558646 +2558647 +2558648 +2558649 +2558650 +2558651 +2558652 +2558653 +2558654 +2558655 +2558656 +2558657 +2558658 +2558659 +2558660 +2558661 +2558662 +2558663 +2558664 +2558665 +2558666 +2558667 +2558668 +2558669 +2558670 +2558671 +2558672 +2558673 +2558674 +2558675 +2558676 +2558677 +2558678 +2558679 +2558680 +2558681 +2558682 +2558683 +2558684 +2558685 +2558686 +2558687 +2558688 +2558689 +2558690 +2558691 +2558692 +2558693 +2558694 +2558695 +2558696 +2558697 +2558698 +2558699 +2558700 +2558701 +2558702 +2558703 +2558704 +2558705 +2558706 +2558707 +2558708 +2558709 +2558710 +2558711 +2558712 +2558713 +2558714 +2558715 +2558716 +2558717 +2558718 +2558719 +2558720 +2558721 +2558722 +2558723 +2562428 +2562429 +2562430 +2562431 +2562432 +2562433 +2562434 +2562435 +2562436 +2562437 +2562438 +2562439 +2562440 +2562441 +2562442 +2562443 +2562444 +2562445 +2562446 +2562447 +2562448 +2562449 +2562450 +2562451 +2562452 +2562453 +2562454 +2562455 +2562456 +2562457 +2562458 +2562459 +2562460 +2562461 +2562462 +2562463 +2562464 +2562465 +2562466 +2562467 +2562468 +2562469 +2562470 +2562471 +2562472 +2562473 +2562474 +2562475 +2562476 +2562477 +2562478 +2562479 +2562480 +2562481 +2562482 +2562483 +2562484 +2562485 +2562486 +2562487 +2562488 +2562489 +2562490 +2562491 +2562492 +2562493 +2562494 +2562495 +2562496 +2562497 +2562498 +2562499 +2562500 +2562501 +2562502 +2562503 +2562504 +2562505 +2562506 +2562507 +2562508 +2562509 +2562510 +2562511 +2562512 +2562513 +2562514 +2562515 +2562516 +2562517 +2562518 +2562519 +2562520 +2562521 +2562522 +2562523 +2562524 +2562525 +2562526 +2562527 +2562528 +2562529 +2562530 +2562531 +2562532 +2562533 +2562534 +2562535 +2562536 +2562537 +2562538 +2562539 +2562540 +2562541 +2562542 +2562543 +2562544 +2562545 +2562546 +2562547 +2562548 +2562549 +2562550 +2562551 +2562552 +2562562 +2562563 +2562564 +2562565 +2562566 +2562567 +2562568 +2562569 +2562570 +2562571 +2562572 +2562573 +2562574 +2562575 +2562576 +2562577 +2562578 +2562579 +2562580 +2562581 +2562582 +2562583 +2562584 +2562585 +2562586 +2562587 +2562588 +2562589 +2562590 +2562591 +2562592 +2562593 +2562594 +2562595 +2562596 +2562597 +2562598 +2562599 +2562600 +2562601 +2562602 +2562603 +2562604 +2562605 +2562606 +2562607 +2562608 +2562609 +2562610 +2562611 +2562612 +2562613 +2562614 +2562615 +2562616 +2562617 +2562618 +2562619 +2562620 +2562621 +2562622 +2562623 +2562624 +2562625 +2562626 +2562627 +2562628 +2562629 +2562630 +2562631 +2562632 +2562633 +2562634 +2562635 +2562636 +2562637 +2562638 +2562639 +2562640 +2562641 +2562642 +2562643 +2562644 +2562645 +2562646 +2562647 +2562648 +2562649 +2562650 +2562651 +2562652 +2562653 +2562654 +2562655 +2562656 +2562657 +2562658 +2562659 +2562660 +2562661 +2562662 +2562663 +2562664 +2562665 +2562666 +2562667 +2562668 +2562669 +2562670 +2562671 +2562672 +2562673 +2562674 +2562675 +2562676 +2562677 +2562678 +2562679 +2562680 +2562681 +2562682 +2562683 +2562684 +2562685 +2562686 +2562687 +2562688 +2562689 +2562690 +2562691 +2562692 +2562693 +2562694 +2562695 +2562696 +2562697 +2562698 +2562699 +2562700 +2562701 +2562702 +2562703 +2562704 +2562705 +2562706 +2562707 +2562708 +2562709 +2562710 +2562711 +2562712 +2562713 +2562714 +2562715 +2562716 +2562717 +2562718 +2562719 +2562720 +2562721 +2562722 +2562723 +2562724 +2562725 +2562726 +2562727 +2562728 +2562729 +2562730 +2562731 +2562732 +2562733 +2562734 +2562735 +2562736 +2562737 +2562738 +2562739 +2562740 +2562741 +2562742 +2562743 +2562744 +2562745 +2562746 +2562747 +2562748 +2562749 +2562750 +2562751 +2562752 +2562753 +2562754 +2562755 +2562756 +2562757 +2562758 +2562759 +2562760 +2562761 +2562762 +2562763 +2562764 +2562765 +2562766 +2562767 +2562768 +2562769 +2562770 +2562771 +2562772 +2562773 +2562774 +2562775 +2562776 +2562777 +2562778 +2562779 +2562780 +2562781 +2562782 +2562783 +2562784 +2562785 +2562786 +2562787 +2562788 +2562789 +2562790 +2562791 +2562792 +2562793 +2562794 +2562795 +2562796 +2562797 +2562798 +2562799 +2562800 +2562801 +2562802 +2562803 +2562804 +2562805 +2562806 +2562807 +2562808 +2562809 +2562810 +2562811 +2562812 +2562813 +2562814 +2562815 +2562816 +2562817 +2562818 +2562819 +2562820 +2562821 +2562822 +2562823 +2562824 +2562825 +2562826 +2562827 +2562828 +2562829 +2562830 +2562831 +2562832 +2562833 +2562834 +2562835 +2562836 +2562837 +2562838 +2562839 +2562840 +2562841 +2562842 +2562843 +2562844 +2562845 +2562846 +2562847 +2562848 +2562849 +2562850 +2562851 +2562852 +2562853 +2562854 +2562855 +2562856 +2562857 +2562858 +2562859 +2562860 +2562861 +2562862 +2562863 +2562864 +2562865 +2562866 +2562867 +2562868 +2562869 +2562870 +2562871 +2562872 +2562873 +2562874 +2562875 +2562876 +2562877 +2562878 +2562879 +2562880 +2562881 +2562882 +2562883 +2562884 +2562885 +2562886 +2562887 +2562888 +2562889 +2562890 +2562891 +2562892 +2562893 +2562894 +2562895 +2562896 +2562897 +2562898 +2562899 +2562900 +2562901 +2562902 +2562903 +2562904 +2562905 +2562906 +2562907 +2562908 +2562909 +2562910 +2562911 +2562912 +2562913 +2562914 +2562915 +2562916 +2562917 +2562918 +2562919 +2562920 +2562921 +2562922 +2562923 +2562924 +2562925 +2562926 +2562927 +2562928 +2562929 +2562930 +2562931 +2562932 +2562933 +2562934 +2562935 +2562936 +2562937 +2562938 +2562939 +2562940 +2562941 +2562942 +2562943 +2562944 +2562945 +2562946 +2562947 +2562948 +2562949 +2562950 +2562951 +2562952 +2562953 +2562954 +2562955 +2562956 +2562957 +2562958 +2562959 +2562960 +2562961 +2562962 +2562963 +2562964 +2562965 +2562966 +2562967 +2562968 +2562969 +2562970 +2562971 +2562972 +2562973 +2562974 +2562975 +2562976 +2562977 +2562978 +2562979 +2562980 +2562981 +2562982 +2562983 +2562984 +2562985 +2562986 +2562987 +2562988 +2562989 +2562990 +2562991 +2562992 +2562993 +2562994 +2562995 +2562996 +2562998 +2562999 +2563000 +2563001 +2563002 +2563003 +2563004 +2563005 +2563006 +2563007 +2563008 +2563009 +2563010 +2563011 +2563012 +2563013 +2563014 +2563015 +2563016 +2563017 +2563018 +2563019 +2563020 +2563021 +2563022 +2563023 +2563024 +2563025 +2563026 +2563027 +2563028 +2563029 +2563030 +2563031 +2563032 +2563033 +2563034 +2566748 +2566749 +2566750 +2566751 +2566752 +2566753 +2566754 +2566755 +2566756 +2566757 +2566758 +2566759 +2566760 +2566761 +2566762 +2566763 +2566764 +2566765 +2566766 +2566767 +2566768 +2566769 +2566770 +2566771 +2566772 +2566773 +2566774 +2566775 +2566776 +2566777 +2566778 +2566779 +2566780 +2566781 +2566782 +2566783 +2566784 +2566785 +2566786 +2566787 +2566788 +2566789 +2566790 +2566791 +2566792 +2566793 +2566794 +2566795 +2566796 +2566797 +2566798 +2566799 +2566800 +2566801 +2566802 +2566803 +2566804 +2566805 +2566806 +2566807 +2566808 +2566809 +2566810 +2566811 +2566812 +2566813 +2566814 +2566815 +2566816 +2566817 +2566818 +2566819 +2566820 +2566821 +2566822 +2566823 +2566824 +2566825 +2566826 +2566827 +2566828 +2566829 +2566830 +2566831 +2566832 +2566833 +2566834 +2566835 +2566836 +2566837 +2566838 +2566839 +2566840 +2566841 +2566842 +2566843 +2566844 +2566845 +2566846 +2566847 +2566848 +2566849 +2566850 +2566851 +2566852 +2566853 +2566854 +2566855 +2566856 +2566857 +2566858 +2566859 +2566860 +2566861 +2566862 +2566863 +2566864 +2566865 +2566866 +2566867 +2566868 +2566869 +2566870 +2566871 +2566872 +2566882 +2566883 +2566884 +2566885 +2566886 +2566887 +2566888 +2566889 +2566890 +2566891 +2566892 +2566893 +2566894 +2566895 +2566896 +2566897 +2566898 +2566899 +2566900 +2566901 +2566902 +2566903 +2566904 +2566905 +2566906 +2566907 +2566908 +2566909 +2566910 +2566911 +2566912 +2566913 +2566914 +2566915 +2566916 +2566917 +2566918 +2566919 +2566920 +2566921 +2566922 +2566923 +2566924 +2566925 +2566926 +2566927 +2566928 +2566929 +2566930 +2566931 +2566932 +2566933 +2566934 +2566935 +2566936 +2566937 +2566938 +2566939 +2566940 +2566941 +2566942 +2566943 +2566944 +2566945 +2566946 +2566947 +2566948 +2566949 +2566950 +2566951 +2566952 +2566953 +2566954 +2566955 +2566956 +2566957 +2566958 +2566959 +2566960 +2566961 +2566962 +2566963 +2566964 +2566965 +2566966 +2566967 +2566968 +2566969 +2566970 +2566971 +2566972 +2566973 +2566974 +2566975 +2566976 +2566977 +2566978 +2566979 +2566980 +2566981 +2566982 +2566983 +2566984 +2566985 +2566986 +2566987 +2566988 +2566989 +2566990 +2566991 +2566992 +2566993 +2566994 +2566995 +2566996 +2566997 +2566998 +2566999 +2567000 +2567001 +2567002 +2567003 +2567004 +2567005 +2567006 +2567007 +2567008 +2567009 +2567010 +2567011 +2567012 +2567013 +2567014 +2567015 +2567016 +2567017 +2567018 +2567019 +2567020 +2567021 +2567022 +2567023 +2567024 +2567025 +2567026 +2567027 +2567028 +2567029 +2567030 +2567031 +2567032 +2567033 +2567034 +2567035 +2567036 +2567037 +2567038 +2567039 +2567040 +2567041 +2567042 +2567043 +2567044 +2567045 +2567046 +2567047 +2567048 +2567049 +2567050 +2567051 +2567052 +2567053 +2567054 +2567055 +2567056 +2567057 +2567058 +2567059 +2567060 +2567061 +2567062 +2567063 +2567064 +2567065 +2567066 +2567067 +2567068 +2567069 +2567070 +2567071 +2567072 +2567073 +2567074 +2567075 +2567076 +2567077 +2567078 +2567079 +2567080 +2567081 +2567082 +2567083 +2567084 +2567085 +2567086 +2567087 +2567088 +2567089 +2567090 +2567091 +2567092 +2567093 +2567094 +2567095 +2567096 +2567097 +2567098 +2567099 +2567100 +2567101 +2567102 +2567103 +2567104 +2567105 +2567106 +2567107 +2567108 +2567109 +2567110 +2567111 +2567112 +2567113 +2567114 +2567115 +2567116 +2567117 +2567118 +2567119 +2567120 +2567121 +2567122 +2567123 +2567124 +2567125 +2567126 +2567127 +2567128 +2567129 +2567130 +2567131 +2567132 +2567133 +2567134 +2567135 +2567136 +2567137 +2567138 +2567139 +2567140 +2567141 +2567142 +2567143 +2567144 +2567145 +2567146 +2567147 +2567148 +2567149 +2567150 +2567151 +2567152 +2567153 +2567154 +2567155 +2567156 +2567157 +2567158 +2567159 +2567160 +2567161 +2567162 +2567163 +2567164 +2567165 +2567166 +2567167 +2567168 +2567169 +2567170 +2567171 +2567172 +2567173 +2567174 +2567175 +2567176 +2567177 +2567178 +2567179 +2567180 +2567181 +2567182 +2567183 +2567184 +2567185 +2567186 +2567187 +2567188 +2567189 +2567190 +2567191 +2567192 +2567193 +2567194 +2567195 +2567196 +2567197 +2567198 +2567199 +2567200 +2567201 +2567202 +2567203 +2567204 +2567205 +2567206 +2567207 +2567208 +2567209 +2567210 +2567211 +2567212 +2567213 +2567214 +2567215 +2567216 +2567217 +2567218 +2567219 +2567220 +2567221 +2567222 +2567223 +2567224 +2567225 +2567226 +2567227 +2567228 +2567229 +2567230 +2567231 +2567232 +2567233 +2567234 +2567235 +2567236 +2567237 +2567238 +2567239 +2567240 +2567241 +2567242 +2567243 +2567244 +2567245 +2567246 +2567247 +2567248 +2567249 +2567250 +2567251 +2567252 +2567253 +2567254 +2567255 +2567256 +2567257 +2567258 +2567259 +2567260 +2567261 +2567262 +2567263 +2567264 +2567265 +2567266 +2567267 +2567268 +2567269 +2567270 +2567271 +2567272 +2567273 +2567274 +2567275 +2567276 +2567277 +2567278 +2567279 +2567280 +2567281 +2567282 +2567283 +2567284 +2567285 +2567286 +2567287 +2567288 +2567289 +2567290 +2567291 +2567292 +2567293 +2567294 +2567295 +2567296 +2567297 +2567298 +2567299 +2567300 +2567301 +2567302 +2567303 +2567304 +2567305 +2567306 +2567307 +2567308 +2567309 +2567310 +2567311 +2567312 +2567313 +2567314 +2567315 +2567316 +2567318 +2567319 +2567320 +2567321 +2567322 +2567323 +2567324 +2567325 +2567326 +2567327 +2567328 +2567329 +2567330 +2567331 +2567332 +2567333 +2567334 +2567335 +2567336 +2567337 +2567338 +2567339 +2567340 +2567341 +2567342 +2567343 +2567344 +2567345 +2567346 +2567347 +2567348 +2567349 +2567350 +2567351 +2567352 +2567353 +2571068 +2571069 +2571070 +2571071 +2571072 +2571073 +2571074 +2571075 +2571076 +2571077 +2571078 +2571079 +2571080 +2571081 +2571082 +2571083 +2571084 +2571085 +2571086 +2571087 +2571088 +2571089 +2571090 +2571091 +2571092 +2571093 +2571094 +2571095 +2571096 +2571097 +2571098 +2571099 +2571100 +2571101 +2571102 +2571103 +2571104 +2571105 +2571106 +2571107 +2571108 +2571109 +2571110 +2571111 +2571112 +2571113 +2571114 +2571115 +2571116 +2571117 +2571118 +2571119 +2571120 +2571121 +2571122 +2571123 +2571124 +2571125 +2571126 +2571127 +2571128 +2571129 +2571130 +2571131 +2571132 +2571133 +2571134 +2571135 +2571136 +2571137 +2571138 +2571139 +2571140 +2571141 +2571142 +2571143 +2571144 +2571145 +2571146 +2571147 +2571148 +2571149 +2571150 +2571151 +2571152 +2571153 +2571154 +2571155 +2571156 +2571157 +2571158 +2571159 +2571160 +2571161 +2571162 +2571163 +2571164 +2571165 +2571166 +2571167 +2571168 +2571169 +2571170 +2571171 +2571172 +2571173 +2571174 +2571175 +2571176 +2571177 +2571178 +2571179 +2571180 +2571181 +2571182 +2571183 +2571184 +2571185 +2571186 +2571187 +2571188 +2571189 +2571190 +2571191 +2571192 +2571193 +2571204 +2571205 +2571206 +2571207 +2571208 +2571209 +2571210 +2571211 +2571212 +2571213 +2571214 +2571215 +2571216 +2571217 +2571218 +2571219 +2571220 +2571221 +2571222 +2571223 +2571224 +2571225 +2571226 +2571227 +2571228 +2571229 +2571230 +2571231 +2571232 +2571233 +2571234 +2571235 +2571236 +2571237 +2571238 +2571239 +2571240 +2571241 +2571242 +2571243 +2571244 +2571245 +2571246 +2571247 +2571248 +2571249 +2571250 +2571251 +2571252 +2571253 +2571254 +2571255 +2571256 +2571257 +2571258 +2571259 +2571260 +2571261 +2571262 +2571263 +2571264 +2571265 +2571266 +2571267 +2571268 +2571269 +2571270 +2571271 +2571272 +2571273 +2571274 +2571275 +2571276 +2571277 +2571278 +2571279 +2571280 +2571281 +2571282 +2571283 +2571284 +2571285 +2571286 +2571287 +2571288 +2571289 +2571290 +2571291 +2571292 +2571293 +2571294 +2571295 +2571296 +2571297 +2571298 +2571299 +2571300 +2571301 +2571302 +2571303 +2571304 +2571305 +2571306 +2571307 +2571308 +2571309 +2571310 +2571311 +2571312 +2571313 +2571314 +2571315 +2571316 +2571317 +2571318 +2571319 +2571320 +2571321 +2571322 +2571323 +2571324 +2571325 +2571326 +2571327 +2571328 +2571329 +2571330 +2571331 +2571332 +2571333 +2571334 +2571335 +2571336 +2571337 +2571338 +2571339 +2571340 +2571341 +2571342 +2571343 +2571344 +2571345 +2571346 +2571347 +2571348 +2571349 +2571350 +2571351 +2571352 +2571353 +2571354 +2571355 +2571356 +2571357 +2571358 +2571359 +2571360 +2571361 +2571362 +2571363 +2571364 +2571365 +2571366 +2571367 +2571368 +2571369 +2571370 +2571371 +2571372 +2571373 +2571374 +2571375 +2571376 +2571377 +2571378 +2571379 +2571380 +2571381 +2571382 +2571383 +2571384 +2571385 +2571386 +2571387 +2571388 +2571389 +2571390 +2571391 +2571392 +2571393 +2571394 +2571395 +2571396 +2571397 +2571398 +2571399 +2571400 +2571401 +2571402 +2571403 +2571404 +2571405 +2571406 +2571407 +2571408 +2571409 +2571410 +2571411 +2571412 +2571413 +2571414 +2571415 +2571416 +2571417 +2571418 +2571419 +2571420 +2571421 +2571422 +2571423 +2571424 +2571425 +2571426 +2571427 +2571428 +2571429 +2571430 +2571431 +2571432 +2571433 +2571434 +2571435 +2571436 +2571437 +2571438 +2571439 +2571440 +2571441 +2571442 +2571443 +2571444 +2571445 +2571446 +2571447 +2571448 +2571449 +2571450 +2571451 +2571452 +2571453 +2571454 +2571455 +2571456 +2571457 +2571458 +2571459 +2571460 +2571461 +2571462 +2571463 +2571464 +2571465 +2571466 +2571467 +2571468 +2571469 +2571470 +2571471 +2571472 +2571473 +2571474 +2571475 +2571476 +2571477 +2571478 +2571479 +2571480 +2571481 +2571482 +2571483 +2571484 +2571485 +2571486 +2571487 +2571488 +2571489 +2571490 +2571491 +2571492 +2571493 +2571494 +2571495 +2571496 +2571497 +2571498 +2571499 +2571500 +2571501 +2571502 +2571503 +2571504 +2571505 +2571506 +2571507 +2571508 +2571509 +2571510 +2571511 +2571512 +2571513 +2571514 +2571515 +2571516 +2571517 +2571518 +2571519 +2571520 +2571521 +2571522 +2571523 +2571524 +2571525 +2571526 +2571527 +2571528 +2571529 +2571530 +2571531 +2571532 +2571533 +2571534 +2571535 +2571536 +2571537 +2571538 +2571539 +2571540 +2571541 +2571542 +2571543 +2571544 +2571545 +2571546 +2571547 +2571548 +2571549 +2571550 +2571551 +2571552 +2571553 +2571554 +2571555 +2571556 +2571557 +2571558 +2571559 +2571560 +2571561 +2571562 +2571563 +2571564 +2571565 +2571566 +2571567 +2571568 +2571569 +2571570 +2571571 +2571572 +2571573 +2571574 +2571575 +2571576 +2571577 +2571578 +2571579 +2571580 +2571581 +2571582 +2571583 +2571584 +2571585 +2571586 +2571587 +2571588 +2571589 +2571590 +2571591 +2571592 +2571593 +2571594 +2571595 +2571596 +2571597 +2571598 +2571599 +2571600 +2571601 +2571602 +2571603 +2571604 +2571605 +2571606 +2571607 +2571608 +2571609 +2571610 +2571611 +2571612 +2571613 +2571614 +2571615 +2571616 +2571617 +2571618 +2571619 +2571620 +2571621 +2571622 +2571623 +2571624 +2571625 +2571626 +2571627 +2571628 +2571629 +2571630 +2571631 +2571632 +2571633 +2571634 +2571635 +2571636 +2571637 +2571638 +2571639 +2571640 +2571641 +2571642 +2571643 +2571644 +2571645 +2571646 +2571647 +2571648 +2571649 +2571650 +2571651 +2571652 +2571653 +2571654 +2571655 +2571656 +2571657 +2571658 +2571659 +2571660 +2571661 +2571662 +2571663 +2571664 +2571665 +2571666 +2571667 +2571668 +2571669 +2571670 +2571671 +2571672 +2571673 +2575388 +2575389 +2575390 +2575391 +2575392 +2575393 +2575394 +2575395 +2575396 +2575397 +2575398 +2575399 +2575400 +2575401 +2575402 +2575403 +2575404 +2575405 +2575406 +2575407 +2575408 +2575409 +2575410 +2575411 +2575412 +2575413 +2575414 +2575415 +2575416 +2575417 +2575418 +2575419 +2575420 +2575421 +2575422 +2575423 +2575424 +2575425 +2575426 +2575427 +2575428 +2575429 +2575430 +2575431 +2575432 +2575433 +2575434 +2575435 +2575436 +2575437 +2575438 +2575439 +2575440 +2575441 +2575442 +2575443 +2575444 +2575445 +2575446 +2575447 +2575448 +2575449 +2575450 +2575451 +2575452 +2575453 +2575454 +2575455 +2575456 +2575457 +2575458 +2575459 +2575460 +2575461 +2575462 +2575463 +2575464 +2575465 +2575466 +2575467 +2575468 +2575469 +2575470 +2575471 +2575472 +2575473 +2575474 +2575475 +2575476 +2575477 +2575478 +2575479 +2575480 +2575481 +2575482 +2575483 +2575484 +2575485 +2575486 +2575487 +2575488 +2575489 +2575490 +2575491 +2575492 +2575493 +2575494 +2575495 +2575496 +2575497 +2575498 +2575499 +2575500 +2575501 +2575502 +2575503 +2575504 +2575505 +2575506 +2575507 +2575508 +2575509 +2575510 +2575511 +2575512 +2575513 +2575514 +2575524 +2575525 +2575526 +2575527 +2575528 +2575529 +2575530 +2575531 +2575532 +2575533 +2575534 +2575535 +2575536 +2575537 +2575540 +2575541 +2575542 +2575543 +2575544 +2575545 +2575546 +2575547 +2575548 +2575549 +2575550 +2575551 +2575552 +2575553 +2575554 +2575555 +2575556 +2575557 +2575558 +2575559 +2575560 +2575561 +2575562 +2575563 +2575564 +2575565 +2575566 +2575567 +2575568 +2575569 +2575570 +2575571 +2575572 +2575573 +2575574 +2575575 +2575576 +2575577 +2575578 +2575579 +2575580 +2575581 +2575582 +2575583 +2575584 +2575585 +2575586 +2575587 +2575588 +2575589 +2575590 +2575591 +2575592 +2575593 +2575594 +2575595 +2575596 +2575597 +2575598 +2575599 +2575600 +2575601 +2575602 +2575603 +2575604 +2575605 +2575606 +2575607 +2575608 +2575609 +2575610 +2575611 +2575612 +2575613 +2575614 +2575615 +2575616 +2575617 +2575618 +2575619 +2575620 +2575621 +2575622 +2575623 +2575624 +2575625 +2575626 +2575627 +2575628 +2575629 +2575630 +2575631 +2575632 +2575633 +2575634 +2575635 +2575636 +2575637 +2575638 +2575639 +2575640 +2575641 +2575642 +2575643 +2575644 +2575645 +2575646 +2575647 +2575648 +2575649 +2575650 +2575651 +2575652 +2575653 +2575654 +2575655 +2575656 +2575657 +2575658 +2575659 +2575660 +2575661 +2575662 +2575663 +2575664 +2575665 +2575666 +2575667 +2575668 +2575669 +2575670 +2575671 +2575672 +2575673 +2575674 +2575675 +2575676 +2575677 +2575678 +2575679 +2575680 +2575681 +2575682 +2575683 +2575684 +2575685 +2575686 +2575687 +2575688 +2575689 +2575690 +2575691 +2575692 +2575693 +2575694 +2575695 +2575696 +2575697 +2575698 +2575699 +2575700 +2575701 +2575702 +2575703 +2575704 +2575705 +2575706 +2575707 +2575708 +2575709 +2575710 +2575711 +2575712 +2575713 +2575714 +2575715 +2575716 +2575717 +2575718 +2575719 +2575720 +2575721 +2575722 +2575723 +2575724 +2575725 +2575726 +2575727 +2575728 +2575729 +2575730 +2575731 +2575732 +2575733 +2575734 +2575735 +2575736 +2575737 +2575738 +2575739 +2575740 +2575741 +2575742 +2575743 +2575744 +2575745 +2575746 +2575747 +2575748 +2575749 +2575750 +2575751 +2575752 +2575753 +2575754 +2575755 +2575756 +2575757 +2575758 +2575759 +2575760 +2575761 +2575762 +2575763 +2575764 +2575765 +2575766 +2575767 +2575768 +2575769 +2575770 +2575771 +2575772 +2575773 +2575774 +2575775 +2575776 +2575777 +2575778 +2575779 +2575780 +2575781 +2575782 +2575783 +2575784 +2575785 +2575786 +2575787 +2575788 +2575789 +2575790 +2575791 +2575792 +2575793 +2575794 +2575795 +2575796 +2575797 +2575798 +2575799 +2575800 +2575801 +2575802 +2575803 +2575804 +2575805 +2575806 +2575807 +2575808 +2575809 +2575810 +2575811 +2575812 +2575813 +2575814 +2575815 +2575816 +2575817 +2575818 +2575819 +2575820 +2575821 +2575822 +2575823 +2575824 +2575825 +2575826 +2575827 +2575828 +2575829 +2575830 +2575831 +2575832 +2575833 +2575834 +2575835 +2575836 +2575837 +2575838 +2575839 +2575840 +2575841 +2575842 +2575843 +2575844 +2575845 +2575846 +2575847 +2575848 +2575849 +2575850 +2575851 +2575852 +2575853 +2575854 +2575855 +2575856 +2575857 +2575858 +2575859 +2575860 +2575861 +2575862 +2575863 +2575864 +2575865 +2575866 +2575867 +2575868 +2575869 +2575870 +2575871 +2575872 +2575873 +2575874 +2575875 +2575876 +2575877 +2575878 +2575879 +2575880 +2575881 +2575882 +2575883 +2575884 +2575885 +2575886 +2575887 +2575888 +2575889 +2575890 +2575891 +2575892 +2575893 +2575894 +2575895 +2575896 +2575897 +2575898 +2575899 +2575900 +2575901 +2575902 +2575903 +2575904 +2575905 +2575906 +2575907 +2575908 +2575909 +2575910 +2575911 +2575912 +2575913 +2575914 +2575915 +2575916 +2575917 +2575918 +2575919 +2575920 +2575921 +2575922 +2575923 +2575924 +2575925 +2575926 +2575927 +2575928 +2575929 +2575930 +2575931 +2575932 +2575933 +2575934 +2575935 +2575936 +2575937 +2575938 +2575939 +2575940 +2575941 +2575942 +2575943 +2575944 +2575945 +2575946 +2575947 +2575948 +2575949 +2575950 +2575951 +2575952 +2575953 +2575954 +2575955 +2575956 +2575957 +2575958 +2575959 +2575960 +2575961 +2575962 +2575963 +2575964 +2575965 +2575966 +2575967 +2575968 +2575969 +2575970 +2575971 +2575972 +2575973 +2575974 +2575975 +2575976 +2575977 +2575978 +2575979 +2575980 +2575981 +2575982 +2575983 +2575984 +2575985 +2575986 +2575987 +2575988 +2575989 +2575990 +2575991 +2575992 +2575993 +2579708 +2579709 +2579710 +2579711 +2579712 +2579713 +2579714 +2579715 +2579716 +2579717 +2579718 +2579719 +2579720 +2579721 +2579722 +2579723 +2579724 +2579725 +2579726 +2579727 +2579728 +2579729 +2579730 +2579731 +2579732 +2579733 +2579734 +2579735 +2579736 +2579737 +2579738 +2579739 +2579740 +2579741 +2579742 +2579743 +2579744 +2579745 +2579746 +2579748 +2579749 +2579750 +2579751 +2579752 +2579753 +2579754 +2579755 +2579756 +2579757 +2579758 +2579759 +2579760 +2579761 +2579762 +2579763 +2579764 +2579766 +2579767 +2579768 +2579769 +2579770 +2579771 +2579772 +2579773 +2579774 +2579775 +2579776 +2579777 +2579778 +2579779 +2579780 +2579781 +2579782 +2579783 +2579784 +2579785 +2579786 +2579787 +2579788 +2579789 +2579790 +2579791 +2579792 +2579793 +2579794 +2579795 +2579796 +2579797 +2579798 +2579799 +2579800 +2579801 +2579802 +2579803 +2579804 +2579805 +2579806 +2579807 +2579808 +2579809 +2579810 +2579811 +2579812 +2579813 +2579814 +2579815 +2579816 +2579817 +2579818 +2579819 +2579820 +2579821 +2579822 +2579823 +2579824 +2579825 +2579826 +2579827 +2579828 +2579829 +2579830 +2579831 +2579832 +2579833 +2579834 +2579835 +2579845 +2579846 +2579847 +2579848 +2579849 +2579850 +2579851 +2579852 +2579853 +2579854 +2579855 +2579856 +2579857 +2579860 +2579861 +2579862 +2579863 +2579864 +2579865 +2579866 +2579867 +2579868 +2579869 +2579870 +2579871 +2579872 +2579873 +2579874 +2579875 +2579876 +2579877 +2579878 +2579879 +2579880 +2579881 +2579882 +2579883 +2579884 +2579885 +2579886 +2579887 +2579888 +2579889 +2579890 +2579891 +2579892 +2579893 +2579894 +2579895 +2579896 +2579897 +2579898 +2579899 +2579900 +2579901 +2579902 +2579903 +2579904 +2579905 +2579906 +2579907 +2579908 +2579909 +2579910 +2579911 +2579912 +2579913 +2579914 +2579915 +2579916 +2579917 +2579918 +2579919 +2579920 +2579921 +2579922 +2579923 +2579924 +2579925 +2579926 +2579927 +2579928 +2579929 +2579930 +2579931 +2579932 +2579933 +2579934 +2579935 +2579936 +2579937 +2579938 +2579939 +2579940 +2579941 +2579942 +2579943 +2579944 +2579945 +2579946 +2579947 +2579948 +2579949 +2579950 +2579951 +2579952 +2579953 +2579954 +2579955 +2579956 +2579957 +2579958 +2579959 +2579960 +2579961 +2579962 +2579963 +2579964 +2579965 +2579966 +2579967 +2579968 +2579969 +2579970 +2579971 +2579972 +2579973 +2579974 +2579975 +2579976 +2579977 +2579978 +2579979 +2579980 +2579981 +2579982 +2579983 +2579984 +2579985 +2579986 +2579987 +2579988 +2579989 +2579990 +2579991 +2579992 +2579993 +2579994 +2579995 +2579996 +2579997 +2579998 +2579999 +2580000 +2580001 +2580002 +2580003 +2580004 +2580005 +2580006 +2580007 +2580008 +2580009 +2580010 +2580011 +2580012 +2580013 +2580014 +2580015 +2580016 +2580017 +2580018 +2580019 +2580020 +2580021 +2580022 +2580023 +2580024 +2580025 +2580026 +2580027 +2580028 +2580029 +2580030 +2580031 +2580032 +2580033 +2580034 +2580035 +2580036 +2580037 +2580038 +2580039 +2580040 +2580041 +2580042 +2580043 +2580044 +2580045 +2580046 +2580047 +2580048 +2580049 +2580050 +2580051 +2580052 +2580053 +2580054 +2580055 +2580056 +2580057 +2580058 +2580059 +2580060 +2580061 +2580062 +2580063 +2580064 +2580065 +2580066 +2580067 +2580068 +2580069 +2580070 +2580071 +2580072 +2580073 +2580074 +2580075 +2580076 +2580077 +2580078 +2580079 +2580080 +2580081 +2580082 +2580083 +2580084 +2580085 +2580086 +2580087 +2580088 +2580089 +2580090 +2580091 +2580092 +2580093 +2580094 +2580095 +2580096 +2580097 +2580098 +2580099 +2580100 +2580101 +2580102 +2580103 +2580104 +2580105 +2580106 +2580107 +2580108 +2580109 +2580110 +2580111 +2580112 +2580113 +2580114 +2580115 +2580116 +2580117 +2580118 +2580119 +2580120 +2580121 +2580122 +2580123 +2580124 +2580125 +2580126 +2580127 +2580128 +2580129 +2580130 +2580131 +2580132 +2580133 +2580134 +2580135 +2580136 +2580137 +2580138 +2580139 +2580140 +2580141 +2580142 +2580143 +2580144 +2580145 +2580146 +2580147 +2580148 +2580149 +2580150 +2580151 +2580152 +2580153 +2580154 +2580155 +2580156 +2580157 +2580158 +2580159 +2580160 +2580161 +2580162 +2580163 +2580164 +2580165 +2580166 +2580167 +2580168 +2580169 +2580170 +2580171 +2580172 +2580173 +2580174 +2580175 +2580176 +2580177 +2580178 +2580179 +2580180 +2580181 +2580182 +2580183 +2580184 +2580185 +2580186 +2580187 +2580188 +2580189 +2580190 +2580191 +2580192 +2580193 +2580194 +2580195 +2580196 +2580197 +2580198 +2580199 +2580200 +2580201 +2580202 +2580203 +2580204 +2580205 +2580206 +2580207 +2580208 +2580209 +2580210 +2580211 +2580212 +2580213 +2580214 +2580215 +2580216 +2580217 +2580218 +2580219 +2580220 +2580221 +2580222 +2580223 +2580224 +2580225 +2580226 +2580227 +2580228 +2580229 +2580230 +2580231 +2580232 +2580233 +2580234 +2580235 +2580236 +2580237 +2580238 +2580239 +2580240 +2580241 +2580242 +2580243 +2580244 +2580245 +2580246 +2580247 +2580248 +2580249 +2580250 +2580251 +2580252 +2580253 +2580254 +2580255 +2580256 +2580257 +2580258 +2580259 +2580260 +2580261 +2580262 +2580263 +2580264 +2580265 +2580266 +2580267 +2580268 +2580269 +2580270 +2580271 +2580272 +2580273 +2580274 +2580275 +2580276 +2580277 +2580278 +2580279 +2580280 +2580281 +2580282 +2580283 +2580284 +2580285 +2580286 +2580287 +2580288 +2580289 +2580290 +2580291 +2580292 +2580293 +2580294 +2580295 +2580296 +2580297 +2580298 +2580299 +2580300 +2580301 +2580302 +2580303 +2580304 +2580305 +2580306 +2580307 +2580308 +2580309 +2580310 +2580311 +2580312 +2580313 +2584030 +2584031 +2584032 +2584033 +2584034 +2584035 +2584036 +2584037 +2584038 +2584039 +2584040 +2584041 +2584042 +2584043 +2584044 +2584045 +2584046 +2584047 +2584048 +2584049 +2584050 +2584051 +2584052 +2584053 +2584054 +2584055 +2584056 +2584057 +2584058 +2584059 +2584060 +2584061 +2584062 +2584063 +2584064 +2584065 +2584066 +2584067 +2584068 +2584069 +2584070 +2584071 +2584072 +2584073 +2584074 +2584075 +2584076 +2584077 +2584078 +2584079 +2584080 +2584081 +2584082 +2584083 +2584086 +2584087 +2584088 +2584089 +2584090 +2584091 +2584092 +2584093 +2584094 +2584095 +2584096 +2584097 +2584098 +2584099 +2584100 +2584101 +2584102 +2584103 +2584104 +2584105 +2584106 +2584107 +2584108 +2584109 +2584110 +2584111 +2584112 +2584113 +2584114 +2584115 +2584116 +2584117 +2584118 +2584119 +2584120 +2584121 +2584122 +2584123 +2584124 +2584125 +2584126 +2584127 +2584128 +2584129 +2584130 +2584131 +2584132 +2584133 +2584134 +2584135 +2584136 +2584137 +2584138 +2584139 +2584140 +2584141 +2584142 +2584143 +2584144 +2584145 +2584146 +2584147 +2584148 +2584149 +2584150 +2584151 +2584152 +2584153 +2584154 +2584155 +2584166 +2584167 +2584168 +2584169 +2584170 +2584171 +2584172 +2584173 +2584174 +2584175 +2584176 +2584177 +2584179 +2584180 +2584181 +2584182 +2584183 +2584184 +2584185 +2584186 +2584187 +2584188 +2584189 +2584190 +2584191 +2584192 +2584193 +2584194 +2584195 +2584196 +2584197 +2584198 +2584199 +2584200 +2584201 +2584202 +2584203 +2584204 +2584205 +2584206 +2584207 +2584208 +2584209 +2584210 +2584211 +2584212 +2584213 +2584214 +2584215 +2584216 +2584217 +2584218 +2584219 +2584220 +2584221 +2584222 +2584223 +2584224 +2584225 +2584226 +2584227 +2584228 +2584229 +2584230 +2584231 +2584232 +2584233 +2584234 +2584235 +2584236 +2584237 +2584238 +2584239 +2584240 +2584241 +2584242 +2584243 +2584244 +2584245 +2584246 +2584247 +2584248 +2584249 +2584250 +2584251 +2584252 +2584253 +2584254 +2584255 +2584256 +2584257 +2584258 +2584259 +2584260 +2584261 +2584262 +2584263 +2584264 +2584265 +2584266 +2584267 +2584268 +2584269 +2584270 +2584271 +2584272 +2584273 +2584274 +2584275 +2584276 +2584277 +2584278 +2584279 +2584280 +2584281 +2584282 +2584283 +2584284 +2584285 +2584286 +2584287 +2584288 +2584289 +2584290 +2584291 +2584292 +2584293 +2584294 +2584295 +2584296 +2584297 +2584298 +2584299 +2584300 +2584301 +2584302 +2584303 +2584304 +2584305 +2584306 +2584307 +2584308 +2584309 +2584310 +2584311 +2584312 +2584313 +2584314 +2584315 +2584316 +2584317 +2584318 +2584319 +2584320 +2584321 +2584322 +2584323 +2584324 +2584325 +2584326 +2584327 +2584328 +2584329 +2584330 +2584331 +2584332 +2584333 +2584334 +2584335 +2584336 +2584337 +2584338 +2584339 +2584340 +2584341 +2584342 +2584343 +2584344 +2584345 +2584346 +2584347 +2584348 +2584349 +2584350 +2584351 +2584352 +2584353 +2584354 +2584355 +2584356 +2584357 +2584358 +2584359 +2584360 +2584361 +2584362 +2584363 +2584364 +2584365 +2584366 +2584367 +2584368 +2584369 +2584370 +2584371 +2584372 +2584373 +2584374 +2584375 +2584376 +2584377 +2584378 +2584379 +2584380 +2584381 +2584382 +2584383 +2584384 +2584385 +2584386 +2584387 +2584388 +2584389 +2584390 +2584391 +2584392 +2584393 +2584394 +2584395 +2584396 +2584397 +2584398 +2584399 +2584400 +2584401 +2584402 +2584403 +2584404 +2584405 +2584406 +2584407 +2584408 +2584409 +2584410 +2584411 +2584412 +2584413 +2584414 +2584415 +2584416 +2584417 +2584418 +2584419 +2584420 +2584421 +2584422 +2584423 +2584424 +2584425 +2584426 +2584427 +2584428 +2584429 +2584430 +2584431 +2584432 +2584433 +2584434 +2584435 +2584436 +2584437 +2584438 +2584439 +2584440 +2584441 +2584442 +2584443 +2584444 +2584445 +2584446 +2584447 +2584448 +2584449 +2584450 +2584451 +2584452 +2584453 +2584454 +2584455 +2584456 +2584457 +2584458 +2584459 +2584460 +2584461 +2584462 +2584463 +2584464 +2584465 +2584466 +2584467 +2584468 +2584469 +2584470 +2584471 +2584472 +2584473 +2584474 +2584475 +2584476 +2584477 +2584478 +2584479 +2584480 +2584481 +2584482 +2584483 +2584484 +2584485 +2584486 +2584487 +2584488 +2584489 +2584490 +2584491 +2584492 +2584493 +2584494 +2584495 +2584496 +2584497 +2584498 +2584499 +2584500 +2584501 +2584502 +2584503 +2584504 +2584505 +2584506 +2584507 +2584508 +2584509 +2584510 +2584511 +2584512 +2584513 +2584514 +2584515 +2584516 +2584517 +2584518 +2584519 +2584520 +2584521 +2584522 +2584523 +2584524 +2584525 +2584526 +2584527 +2584528 +2584529 +2584530 +2584531 +2584532 +2584533 +2584534 +2584535 +2584536 +2584537 +2584538 +2584539 +2584540 +2584541 +2584542 +2584543 +2584544 +2584545 +2584546 +2584547 +2584548 +2584549 +2584550 +2584551 +2584552 +2584553 +2584554 +2584555 +2584556 +2584557 +2584558 +2584559 +2584560 +2584561 +2584562 +2584563 +2584564 +2584565 +2584566 +2584567 +2584568 +2584569 +2584570 +2584571 +2584572 +2584573 +2584574 +2584575 +2584576 +2584577 +2584578 +2584579 +2584580 +2584581 +2584582 +2584583 +2584584 +2584585 +2584586 +2584587 +2584588 +2584589 +2584590 +2584591 +2584592 +2584593 +2584594 +2584595 +2584596 +2584597 +2584598 +2584599 +2584601 +2584602 +2584603 +2584604 +2584605 +2584606 +2584607 +2584608 +2584609 +2584610 +2584611 +2584612 +2584613 +2584614 +2584615 +2584616 +2584617 +2584618 +2584619 +2584620 +2584621 +2584622 +2584623 +2584624 +2584625 +2584626 +2584627 +2584628 +2584629 +2584630 +2584631 +2584632 +2588354 +2588355 +2588356 +2588357 +2588358 +2588359 +2588360 +2588361 +2588362 +2588363 +2588364 +2588365 +2588366 +2588367 +2588368 +2588369 +2588370 +2588371 +2588372 +2588373 +2588374 +2588375 +2588376 +2588377 +2588378 +2588379 +2588380 +2588381 +2588382 +2588383 +2588384 +2588385 +2588386 +2588387 +2588388 +2588389 +2588390 +2588391 +2588392 +2588393 +2588394 +2588395 +2588396 +2588397 +2588398 +2588399 +2588400 +2588401 +2588402 +2588403 +2588404 +2588407 +2588408 +2588409 +2588410 +2588411 +2588412 +2588413 +2588414 +2588415 +2588416 +2588417 +2588418 +2588419 +2588420 +2588421 +2588422 +2588423 +2588424 +2588425 +2588426 +2588427 +2588428 +2588429 +2588430 +2588431 +2588432 +2588433 +2588434 +2588435 +2588436 +2588437 +2588438 +2588439 +2588440 +2588441 +2588442 +2588443 +2588444 +2588445 +2588446 +2588447 +2588448 +2588449 +2588450 +2588451 +2588452 +2588453 +2588454 +2588455 +2588456 +2588457 +2588458 +2588459 +2588460 +2588461 +2588462 +2588463 +2588464 +2588465 +2588466 +2588467 +2588468 +2588469 +2588470 +2588471 +2588472 +2588473 +2588474 +2588475 +2588476 +2588486 +2588487 +2588488 +2588489 +2588490 +2588491 +2588492 +2588493 +2588494 +2588495 +2588496 +2588497 +2588498 +2588499 +2588500 +2588501 +2588502 +2588503 +2588504 +2588505 +2588506 +2588507 +2588508 +2588509 +2588510 +2588511 +2588512 +2588513 +2588514 +2588515 +2588516 +2588517 +2588518 +2588519 +2588520 +2588521 +2588522 +2588523 +2588524 +2588525 +2588526 +2588527 +2588528 +2588529 +2588530 +2588531 +2588532 +2588533 +2588534 +2588535 +2588536 +2588537 +2588538 +2588539 +2588540 +2588541 +2588542 +2588543 +2588544 +2588545 +2588546 +2588547 +2588548 +2588549 +2588550 +2588551 +2588552 +2588553 +2588554 +2588555 +2588556 +2588557 +2588558 +2588559 +2588560 +2588561 +2588562 +2588563 +2588564 +2588565 +2588566 +2588567 +2588568 +2588569 +2588570 +2588571 +2588572 +2588573 +2588574 +2588575 +2588576 +2588577 +2588578 +2588579 +2588580 +2588581 +2588582 +2588583 +2588584 +2588585 +2588586 +2588587 +2588588 +2588589 +2588590 +2588591 +2588592 +2588593 +2588594 +2588595 +2588596 +2588597 +2588598 +2588599 +2588600 +2588601 +2588602 +2588603 +2588604 +2588605 +2588606 +2588607 +2588608 +2588609 +2588610 +2588611 +2588612 +2588613 +2588614 +2588615 +2588616 +2588617 +2588618 +2588619 +2588620 +2588621 +2588622 +2588623 +2588624 +2588625 +2588626 +2588627 +2588628 +2588629 +2588630 +2588631 +2588632 +2588633 +2588634 +2588635 +2588636 +2588637 +2588638 +2588639 +2588640 +2588641 +2588642 +2588643 +2588644 +2588645 +2588646 +2588647 +2588648 +2588649 +2588650 +2588651 +2588652 +2588653 +2588654 +2588655 +2588656 +2588657 +2588658 +2588659 +2588660 +2588661 +2588662 +2588663 +2588664 +2588665 +2588666 +2588667 +2588668 +2588669 +2588670 +2588671 +2588672 +2588673 +2588674 +2588675 +2588676 +2588677 +2588678 +2588679 +2588680 +2588681 +2588682 +2588683 +2588684 +2588685 +2588686 +2588687 +2588688 +2588689 +2588690 +2588691 +2588692 +2588693 +2588694 +2588695 +2588696 +2588697 +2588698 +2588699 +2588700 +2588701 +2588702 +2588703 +2588704 +2588705 +2588706 +2588707 +2588708 +2588709 +2588710 +2588711 +2588712 +2588713 +2588714 +2588715 +2588716 +2588717 +2588718 +2588719 +2588720 +2588721 +2588722 +2588723 +2588724 +2588725 +2588726 +2588727 +2588728 +2588729 +2588730 +2588731 +2588732 +2588733 +2588734 +2588735 +2588736 +2588737 +2588738 +2588739 +2588740 +2588741 +2588742 +2588743 +2588744 +2588745 +2588746 +2588747 +2588748 +2588749 +2588750 +2588751 +2588752 +2588753 +2588754 +2588755 +2588756 +2588757 +2588758 +2588759 +2588760 +2588761 +2588762 +2588763 +2588764 +2588765 +2588766 +2588767 +2588768 +2588769 +2588770 +2588771 +2588772 +2588773 +2588774 +2588775 +2588776 +2588777 +2588778 +2588779 +2588780 +2588781 +2588782 +2588783 +2588784 +2588785 +2588786 +2588787 +2588788 +2588789 +2588790 +2588791 +2588792 +2588793 +2588794 +2588795 +2588796 +2588797 +2588798 +2588799 +2588800 +2588801 +2588802 +2588803 +2588804 +2588805 +2588806 +2588807 +2588808 +2588809 +2588810 +2588811 +2588812 +2588813 +2588814 +2588815 +2588816 +2588817 +2588818 +2588819 +2588820 +2588821 +2588822 +2588823 +2588824 +2588825 +2588826 +2588827 +2588828 +2588829 +2588830 +2588831 +2588832 +2588833 +2588834 +2588835 +2588836 +2588837 +2588838 +2588839 +2588840 +2588841 +2588842 +2588843 +2588844 +2588845 +2588846 +2588847 +2588848 +2588849 +2588850 +2588851 +2588852 +2588853 +2588854 +2588855 +2588856 +2588857 +2588858 +2588859 +2588860 +2588861 +2588862 +2588863 +2588864 +2588865 +2588866 +2588867 +2588868 +2588869 +2588870 +2588871 +2588872 +2588873 +2588874 +2588875 +2588876 +2588877 +2588878 +2588879 +2588880 +2588881 +2588882 +2588883 +2588884 +2588885 +2588886 +2588887 +2588888 +2588889 +2588890 +2588891 +2588892 +2588893 +2588894 +2588895 +2588896 +2588897 +2588898 +2588899 +2588900 +2588901 +2588902 +2588903 +2588904 +2588905 +2588906 +2588907 +2588908 +2588909 +2588910 +2588911 +2588912 +2588913 +2588914 +2588915 +2588916 +2588917 +2588918 +2588919 +2588920 +2588921 +2588922 +2588923 +2588924 +2588925 +2588926 +2588927 +2588928 +2588929 +2588930 +2588931 +2588932 +2588933 +2588934 +2588935 +2588936 +2588937 +2588938 +2588939 +2588940 +2588941 +2588942 +2588943 +2588944 +2588945 +2588946 +2588947 +2588948 +2588949 +2588950 +2588951 +2592674 +2592675 +2592676 +2592677 +2592678 +2592679 +2592680 +2592681 +2592682 +2592683 +2592684 +2592685 +2592686 +2592687 +2592688 +2592689 +2592690 +2592691 +2592692 +2592693 +2592694 +2592695 +2592696 +2592697 +2592698 +2592699 +2592700 +2592701 +2592702 +2592703 +2592704 +2592705 +2592706 +2592707 +2592708 +2592709 +2592710 +2592711 +2592712 +2592713 +2592714 +2592715 +2592716 +2592717 +2592718 +2592719 +2592720 +2592721 +2592722 +2592723 +2592724 +2592727 +2592728 +2592729 +2592730 +2592731 +2592732 +2592733 +2592734 +2592735 +2592736 +2592737 +2592738 +2592739 +2592740 +2592741 +2592742 +2592743 +2592744 +2592745 +2592746 +2592747 +2592748 +2592749 +2592750 +2592751 +2592752 +2592753 +2592754 +2592755 +2592756 +2592757 +2592758 +2592759 +2592760 +2592761 +2592762 +2592763 +2592764 +2592765 +2592766 +2592767 +2592768 +2592769 +2592770 +2592771 +2592772 +2592773 +2592774 +2592775 +2592776 +2592777 +2592778 +2592779 +2592780 +2592781 +2592782 +2592783 +2592784 +2592785 +2592786 +2592787 +2592788 +2592789 +2592790 +2592791 +2592792 +2592793 +2592794 +2592795 +2592796 +2592803 +2592806 +2592807 +2592808 +2592809 +2592810 +2592811 +2592812 +2592813 +2592814 +2592815 +2592816 +2592817 +2592818 +2592819 +2592820 +2592821 +2592822 +2592823 +2592824 +2592825 +2592826 +2592827 +2592828 +2592829 +2592830 +2592831 +2592832 +2592833 +2592834 +2592835 +2592836 +2592837 +2592838 +2592839 +2592840 +2592841 +2592842 +2592843 +2592844 +2592845 +2592846 +2592847 +2592848 +2592849 +2592850 +2592851 +2592852 +2592853 +2592854 +2592855 +2592856 +2592857 +2592858 +2592859 +2592860 +2592861 +2592862 +2592863 +2592864 +2592865 +2592866 +2592867 +2592868 +2592869 +2592870 +2592871 +2592872 +2592873 +2592874 +2592875 +2592876 +2592877 +2592878 +2592879 +2592880 +2592881 +2592882 +2592883 +2592884 +2592885 +2592886 +2592887 +2592888 +2592889 +2592890 +2592891 +2592892 +2592893 +2592894 +2592895 +2592896 +2592897 +2592898 +2592899 +2592900 +2592901 +2592902 +2592903 +2592904 +2592905 +2592906 +2592907 +2592908 +2592909 +2592910 +2592911 +2592912 +2592913 +2592914 +2592915 +2592916 +2592917 +2592918 +2592919 +2592920 +2592921 +2592922 +2592923 +2592924 +2592925 +2592926 +2592927 +2592928 +2592929 +2592930 +2592931 +2592932 +2592933 +2592934 +2592935 +2592936 +2592937 +2592938 +2592939 +2592940 +2592941 +2592942 +2592943 +2592944 +2592945 +2592946 +2592947 +2592948 +2592949 +2592950 +2592951 +2592952 +2592953 +2592954 +2592955 +2592956 +2592957 +2592958 +2592959 +2592960 +2592961 +2592962 +2592963 +2592964 +2592965 +2592966 +2592967 +2592968 +2592969 +2592970 +2592971 +2592972 +2592973 +2592974 +2592975 +2592976 +2592977 +2592978 +2592979 +2592980 +2592981 +2592982 +2592983 +2592984 +2592985 +2592986 +2592987 +2592988 +2592989 +2592990 +2592991 +2592992 +2592993 +2592994 +2592995 +2592996 +2592997 +2592998 +2592999 +2593000 +2593001 +2593002 +2593003 +2593004 +2593005 +2593006 +2593007 +2593008 +2593009 +2593010 +2593011 +2593012 +2593013 +2593014 +2593015 +2593016 +2593017 +2593018 +2593019 +2593020 +2593021 +2593022 +2593023 +2593024 +2593025 +2593026 +2593027 +2593028 +2593029 +2593030 +2593031 +2593032 +2593033 +2593034 +2593035 +2593036 +2593037 +2593038 +2593039 +2593040 +2593041 +2593042 +2593043 +2593044 +2593045 +2593046 +2593047 +2593048 +2593049 +2593050 +2593051 +2593052 +2593053 +2593054 +2593055 +2593056 +2593057 +2593058 +2593059 +2593060 +2593061 +2593062 +2593063 +2593064 +2593065 +2593066 +2593067 +2593068 +2593069 +2593070 +2593071 +2593072 +2593073 +2593074 +2593075 +2593076 +2593077 +2593078 +2593079 +2593080 +2593081 +2593082 +2593083 +2593084 +2593085 +2593086 +2593087 +2593088 +2593089 +2593090 +2593091 +2593092 +2593093 +2593094 +2593095 +2593096 +2593097 +2593098 +2593099 +2593100 +2593101 +2593102 +2593103 +2593104 +2593105 +2593106 +2593107 +2593108 +2593109 +2593110 +2593111 +2593112 +2593113 +2593114 +2593115 +2593116 +2593117 +2593118 +2593119 +2593120 +2593121 +2593122 +2593123 +2593124 +2593125 +2593126 +2593127 +2593128 +2593129 +2593130 +2593131 +2593132 +2593133 +2593134 +2593135 +2593136 +2593137 +2593138 +2593139 +2593140 +2593141 +2593142 +2593143 +2593144 +2593145 +2593146 +2593147 +2593148 +2593149 +2593150 +2593151 +2593152 +2593153 +2593154 +2593155 +2593156 +2593157 +2593158 +2593159 +2593160 +2593161 +2593162 +2593163 +2593164 +2593165 +2593166 +2593167 +2593168 +2593169 +2593170 +2593171 +2593172 +2593173 +2593174 +2593175 +2593176 +2593177 +2593178 +2593179 +2593180 +2593181 +2593182 +2593183 +2593184 +2593185 +2593186 +2593187 +2593188 +2593189 +2593190 +2593191 +2593192 +2593193 +2593194 +2593195 +2593196 +2593197 +2593198 +2593199 +2593200 +2593201 +2593202 +2593203 +2593204 +2593205 +2593206 +2593207 +2593208 +2593209 +2593210 +2593211 +2593212 +2593213 +2593214 +2593215 +2593216 +2593217 +2593218 +2593219 +2593220 +2593221 +2593222 +2593223 +2593224 +2593225 +2593226 +2593227 +2593228 +2593229 +2593230 +2593231 +2593232 +2593233 +2593234 +2593235 +2593236 +2593237 +2593238 +2593239 +2593240 +2593241 +2593242 +2593243 +2593244 +2593245 +2593246 +2593247 +2593248 +2593249 +2593250 +2593251 +2593252 +2593253 +2593254 +2593255 +2593256 +2593257 +2593258 +2593259 +2593260 +2593261 +2593262 +2593263 +2593264 +2593265 +2593266 +2593267 +2593268 +2593269 +2593270 +2593271 +2596994 +2596995 +2596996 +2596997 +2596998 +2596999 +2597000 +2597001 +2597002 +2597003 +2597004 +2597005 +2597006 +2597007 +2597008 +2597009 +2597010 +2597011 +2597012 +2597013 +2597014 +2597015 +2597016 +2597017 +2597018 +2597019 +2597020 +2597021 +2597022 +2597023 +2597024 +2597025 +2597026 +2597027 +2597028 +2597029 +2597030 +2597031 +2597032 +2597033 +2597034 +2597035 +2597036 +2597037 +2597038 +2597039 +2597040 +2597041 +2597042 +2597043 +2597044 +2597045 +2597048 +2597049 +2597050 +2597051 +2597052 +2597053 +2597054 +2597055 +2597056 +2597057 +2597058 +2597059 +2597060 +2597061 +2597062 +2597063 +2597064 +2597065 +2597066 +2597067 +2597068 +2597069 +2597070 +2597071 +2597072 +2597073 +2597074 +2597075 +2597076 +2597077 +2597078 +2597079 +2597080 +2597081 +2597082 +2597083 +2597084 +2597085 +2597086 +2597087 +2597088 +2597089 +2597090 +2597091 +2597092 +2597093 +2597094 +2597095 +2597096 +2597097 +2597098 +2597099 +2597100 +2597101 +2597102 +2597103 +2597104 +2597105 +2597106 +2597107 +2597108 +2597109 +2597110 +2597111 +2597112 +2597113 +2597114 +2597115 +2597116 +2597117 +2597123 +2597126 +2597127 +2597128 +2597129 +2597130 +2597131 +2597132 +2597133 +2597134 +2597135 +2597136 +2597137 +2597138 +2597139 +2597140 +2597141 +2597142 +2597143 +2597144 +2597145 +2597146 +2597147 +2597148 +2597149 +2597150 +2597151 +2597152 +2597153 +2597154 +2597155 +2597156 +2597157 +2597158 +2597159 +2597160 +2597161 +2597162 +2597163 +2597164 +2597165 +2597166 +2597167 +2597168 +2597169 +2597170 +2597171 +2597172 +2597173 +2597174 +2597175 +2597176 +2597177 +2597178 +2597179 +2597180 +2597181 +2597182 +2597183 +2597184 +2597185 +2597186 +2597187 +2597188 +2597189 +2597190 +2597191 +2597192 +2597193 +2597194 +2597195 +2597196 +2597197 +2597198 +2597199 +2597200 +2597201 +2597202 +2597203 +2597204 +2597205 +2597206 +2597207 +2597208 +2597209 +2597210 +2597211 +2597212 +2597213 +2597214 +2597215 +2597216 +2597217 +2597218 +2597219 +2597220 +2597221 +2597222 +2597223 +2597224 +2597225 +2597226 +2597227 +2597228 +2597229 +2597230 +2597231 +2597232 +2597233 +2597234 +2597235 +2597236 +2597237 +2597238 +2597239 +2597240 +2597241 +2597242 +2597243 +2597244 +2597245 +2597246 +2597247 +2597248 +2597249 +2597250 +2597251 +2597252 +2597253 +2597254 +2597255 +2597256 +2597257 +2597258 +2597259 +2597260 +2597261 +2597262 +2597263 +2597264 +2597265 +2597266 +2597267 +2597268 +2597269 +2597270 +2597271 +2597272 +2597273 +2597274 +2597275 +2597276 +2597277 +2597278 +2597279 +2597280 +2597281 +2597282 +2597283 +2597284 +2597285 +2597286 +2597287 +2597288 +2597289 +2597290 +2597291 +2597292 +2597293 +2597294 +2597295 +2597296 +2597297 +2597298 +2597299 +2597300 +2597301 +2597302 +2597303 +2597304 +2597305 +2597306 +2597307 +2597308 +2597309 +2597310 +2597311 +2597312 +2597313 +2597314 +2597315 +2597316 +2597317 +2597318 +2597319 +2597320 +2597321 +2597322 +2597323 +2597324 +2597325 +2597326 +2597327 +2597328 +2597329 +2597330 +2597331 +2597332 +2597333 +2597334 +2597335 +2597336 +2597337 +2597338 +2597339 +2597340 +2597341 +2597342 +2597343 +2597344 +2597345 +2597346 +2597347 +2597348 +2597349 +2597350 +2597351 +2597352 +2597353 +2597354 +2597355 +2597356 +2597357 +2597358 +2597359 +2597360 +2597361 +2597362 +2597363 +2597364 +2597365 +2597366 +2597367 +2597368 +2597369 +2597370 +2597371 +2597372 +2597373 +2597374 +2597375 +2597376 +2597377 +2597378 +2597379 +2597380 +2597381 +2597382 +2597383 +2597384 +2597385 +2597386 +2597387 +2597388 +2597389 +2597390 +2597391 +2597392 +2597393 +2597394 +2597395 +2597396 +2597397 +2597398 +2597399 +2597400 +2597401 +2597402 +2597403 +2597404 +2597405 +2597406 +2597407 +2597408 +2597409 +2597410 +2597411 +2597412 +2597413 +2597414 +2597415 +2597416 +2597417 +2597418 +2597419 +2597420 +2597421 +2597422 +2597423 +2597424 +2597425 +2597426 +2597427 +2597428 +2597429 +2597430 +2597431 +2597432 +2597433 +2597434 +2597435 +2597436 +2597437 +2597438 +2597439 +2597440 +2597441 +2597442 +2597443 +2597444 +2597445 +2597446 +2597447 +2597448 +2597449 +2597450 +2597451 +2597452 +2597453 +2597454 +2597455 +2597456 +2597457 +2597458 +2597459 +2597460 +2597461 +2597462 +2597463 +2597464 +2597465 +2597466 +2597467 +2597468 +2597469 +2597470 +2597471 +2597472 +2597473 +2597474 +2597475 +2597476 +2597477 +2597478 +2597479 +2597480 +2597481 +2597482 +2597483 +2597484 +2597485 +2597486 +2597487 +2597488 +2597489 +2597490 +2597491 +2597492 +2597493 +2597494 +2597495 +2597496 +2597497 +2597498 +2597499 +2597500 +2597501 +2597502 +2597503 +2597504 +2597505 +2597506 +2597507 +2597508 +2597509 +2597510 +2597511 +2597512 +2597513 +2597514 +2597515 +2597516 +2597517 +2597518 +2597519 +2597520 +2597521 +2597522 +2597523 +2597524 +2597525 +2597526 +2597527 +2597528 +2597529 +2597530 +2597531 +2597532 +2597533 +2597534 +2597535 +2597536 +2597537 +2597538 +2597539 +2597540 +2597541 +2597542 +2597543 +2597544 +2597545 +2597546 +2597547 +2597548 +2597549 +2597550 +2597551 +2597552 +2597553 +2597554 +2597555 +2597556 +2597557 +2597558 +2597559 +2597560 +2597561 +2597562 +2597563 +2597564 +2597565 +2597566 +2597567 +2597568 +2597569 +2597570 +2597571 +2597572 +2597573 +2597574 +2597575 +2597576 +2597577 +2597578 +2597579 +2597580 +2597581 +2597582 +2597583 +2597584 +2597585 +2597586 +2597587 +2597588 +2597589 +2597590 +2597591 +2601314 +2601315 +2601316 +2601317 +2601318 +2601319 +2601320 +2601321 +2601322 +2601323 +2601324 +2601325 +2601326 +2601327 +2601328 +2601329 +2601330 +2601331 +2601332 +2601333 +2601334 +2601335 +2601336 +2601337 +2601338 +2601339 +2601340 +2601341 +2601342 +2601343 +2601344 +2601345 +2601346 +2601347 +2601348 +2601349 +2601350 +2601351 +2601352 +2601353 +2601354 +2601355 +2601356 +2601357 +2601358 +2601359 +2601360 +2601361 +2601362 +2601363 +2601364 +2601365 +2601366 +2601367 +2601368 +2601369 +2601370 +2601371 +2601372 +2601373 +2601374 +2601375 +2601376 +2601377 +2601378 +2601379 +2601380 +2601381 +2601382 +2601383 +2601384 +2601385 +2601386 +2601387 +2601388 +2601389 +2601390 +2601391 +2601392 +2601393 +2601394 +2601395 +2601396 +2601397 +2601398 +2601399 +2601400 +2601401 +2601402 +2601403 +2601404 +2601405 +2601406 +2601407 +2601408 +2601409 +2601410 +2601411 +2601412 +2601413 +2601414 +2601415 +2601416 +2601417 +2601418 +2601419 +2601420 +2601421 +2601422 +2601423 +2601424 +2601425 +2601426 +2601427 +2601428 +2601429 +2601430 +2601431 +2601432 +2601433 +2601434 +2601435 +2601436 +2601437 +2601438 +2601439 +2601440 +2601441 +2601442 +2601443 +2601444 +2601445 +2601446 +2601447 +2601448 +2601449 +2601450 +2601451 +2601452 +2601453 +2601454 +2601455 +2601456 +2601457 +2601458 +2601459 +2601460 +2601461 +2601462 +2601463 +2601464 +2601465 +2601466 +2601467 +2601468 +2601469 +2601470 +2601471 +2601472 +2601473 +2601474 +2601475 +2601476 +2601477 +2601478 +2601479 +2601480 +2601481 +2601482 +2601483 +2601484 +2601485 +2601486 +2601487 +2601488 +2601489 +2601490 +2601491 +2601492 +2601493 +2601494 +2601495 +2601496 +2601497 +2601498 +2601499 +2601500 +2601501 +2601502 +2601503 +2601504 +2601505 +2601506 +2601507 +2601508 +2601509 +2601510 +2601511 +2601512 +2601513 +2601514 +2601515 +2601516 +2601517 +2601518 +2601519 +2601520 +2601521 +2601522 +2601523 +2601524 +2601525 +2601526 +2601527 +2601528 +2601529 +2601530 +2601531 +2601532 +2601533 +2601534 +2601535 +2601536 +2601537 +2601538 +2601539 +2601540 +2601541 +2601542 +2601543 +2601544 +2601545 +2601546 +2601547 +2601548 +2601549 +2601550 +2601551 +2601552 +2601553 +2601554 +2601555 +2601556 +2601557 +2601558 +2601559 +2601560 +2601561 +2601562 +2601563 +2601564 +2601565 +2601566 +2601567 +2601568 +2601569 +2601570 +2601571 +2601572 +2601573 +2601574 +2601575 +2601576 +2601577 +2601578 +2601579 +2601580 +2601581 +2601582 +2601583 +2601584 +2601585 +2601586 +2601587 +2601588 +2601589 +2601590 +2601591 +2601592 +2601593 +2601594 +2601595 +2601596 +2601597 +2601598 +2601599 +2601600 +2601601 +2601602 +2601603 +2601604 +2601605 +2601606 +2601607 +2601608 +2601609 +2601610 +2601611 +2601612 +2601613 +2601614 +2601615 +2601616 +2601617 +2601618 +2601619 +2601620 +2601621 +2601622 +2601623 +2601624 +2601625 +2601626 +2601627 +2601628 +2601629 +2601630 +2601631 +2601632 +2601633 +2601634 +2601635 +2601636 +2601637 +2601638 +2601639 +2601640 +2601641 +2601642 +2601643 +2601644 +2601645 +2601646 +2601647 +2601648 +2601649 +2601650 +2601651 +2601652 +2601653 +2601654 +2601655 +2601656 +2601657 +2601658 +2601659 +2601660 +2601661 +2601662 +2601663 +2601664 +2601665 +2601666 +2601667 +2601668 +2601669 +2601670 +2601671 +2601672 +2601673 +2601674 +2601675 +2601676 +2601677 +2601678 +2601679 +2601680 +2601681 +2601682 +2601683 +2601684 +2601685 +2601686 +2601687 +2601688 +2601689 +2601690 +2601691 +2601692 +2601693 +2601694 +2601695 +2601696 +2601697 +2601698 +2601699 +2601700 +2601701 +2601702 +2601703 +2601704 +2601705 +2601706 +2601707 +2601708 +2601709 +2601710 +2601711 +2601712 +2601713 +2601714 +2601715 +2601716 +2601717 +2601718 +2601719 +2601720 +2601721 +2601722 +2601723 +2601724 +2601725 +2601726 +2601727 +2601728 +2601729 +2601730 +2601731 +2601732 +2601733 +2601734 +2601735 +2601736 +2601737 +2601738 +2601739 +2601740 +2601741 +2601742 +2601743 +2601744 +2601745 +2601746 +2601747 +2601748 +2601749 +2601750 +2601751 +2601752 +2601753 +2601754 +2601755 +2601756 +2601757 +2601758 +2601759 +2601760 +2601761 +2601762 +2601763 +2601764 +2601765 +2601766 +2601767 +2601768 +2601769 +2601770 +2601771 +2601772 +2601773 +2601774 +2601775 +2601776 +2601777 +2601778 +2601779 +2601780 +2601781 +2601782 +2601783 +2601784 +2601785 +2601786 +2601787 +2601788 +2601789 +2601790 +2601791 +2601792 +2601793 +2601794 +2601795 +2601796 +2601797 +2601798 +2601799 +2601800 +2601801 +2601802 +2601803 +2601804 +2601805 +2601806 +2601807 +2601808 +2601809 +2601810 +2601811 +2601812 +2601813 +2601814 +2601815 +2601816 +2601817 +2601818 +2601819 +2601820 +2601821 +2601822 +2601823 +2601824 +2601825 +2601826 +2601827 +2601828 +2601829 +2601830 +2601831 +2601832 +2601833 +2601834 +2601835 +2601836 +2601837 +2601838 +2601839 +2601840 +2601841 +2601842 +2601843 +2601844 +2601845 +2601846 +2601847 +2601848 +2601849 +2601850 +2601851 +2601852 +2601853 +2601854 +2601855 +2601856 +2601857 +2601858 +2601859 +2601860 +2601861 +2601862 +2601863 +2601864 +2601865 +2601866 +2601867 +2601868 +2601869 +2601870 +2601871 +2601872 +2601873 +2601874 +2601875 +2601876 +2601877 +2601878 +2601879 +2601880 +2601881 +2601882 +2601883 +2601884 +2601885 +2601886 +2601887 +2601888 +2601889 +2601890 +2601891 +2601892 +2601893 +2601894 +2601895 +2601896 +2601897 +2601898 +2601899 +2601900 +2601901 +2601902 +2601903 +2601904 +2601905 +2601906 +2601907 +2601908 +2601909 +2601910 +2601911 +2605635 +2605636 +2605637 +2605638 +2605639 +2605640 +2605641 +2605642 +2605643 +2605644 +2605645 +2605646 +2605647 +2605648 +2605649 +2605650 +2605651 +2605652 +2605653 +2605654 +2605655 +2605656 +2605657 +2605658 +2605659 +2605660 +2605661 +2605662 +2605663 +2605664 +2605665 +2605666 +2605667 +2605668 +2605669 +2605670 +2605671 +2605672 +2605673 +2605674 +2605675 +2605676 +2605677 +2605678 +2605679 +2605680 +2605681 +2605682 +2605683 +2605684 +2605685 +2605686 +2605687 +2605688 +2605689 +2605690 +2605691 +2605692 +2605693 +2605694 +2605695 +2605696 +2605697 +2605698 +2605699 +2605700 +2605701 +2605702 +2605703 +2605704 +2605705 +2605706 +2605707 +2605708 +2605709 +2605710 +2605711 +2605712 +2605713 +2605714 +2605715 +2605716 +2605717 +2605718 +2605719 +2605720 +2605721 +2605722 +2605723 +2605724 +2605725 +2605726 +2605727 +2605728 +2605729 +2605730 +2605731 +2605732 +2605733 +2605734 +2605735 +2605736 +2605737 +2605738 +2605739 +2605740 +2605741 +2605742 +2605743 +2605744 +2605745 +2605746 +2605747 +2605748 +2605749 +2605750 +2605751 +2605752 +2605753 +2605754 +2605755 +2605756 +2605757 +2605758 +2605759 +2605760 +2605761 +2605762 +2605763 +2605764 +2605765 +2605766 +2605767 +2605768 +2605769 +2605770 +2605771 +2605772 +2605773 +2605774 +2605775 +2605776 +2605777 +2605778 +2605779 +2605780 +2605781 +2605782 +2605783 +2605784 +2605785 +2605786 +2605787 +2605788 +2605789 +2605790 +2605791 +2605792 +2605793 +2605794 +2605795 +2605796 +2605797 +2605798 +2605799 +2605800 +2605801 +2605802 +2605803 +2605804 +2605805 +2605806 +2605807 +2605808 +2605809 +2605810 +2605811 +2605812 +2605813 +2605814 +2605815 +2605816 +2605817 +2605818 +2605819 +2605820 +2605821 +2605822 +2605823 +2605824 +2605825 +2605826 +2605827 +2605828 +2605829 +2605830 +2605831 +2605832 +2605833 +2605834 +2605835 +2605836 +2605837 +2605838 +2605839 +2605840 +2605841 +2605842 +2605843 +2605844 +2605845 +2605846 +2605847 +2605848 +2605849 +2605850 +2605851 +2605852 +2605853 +2605854 +2605855 +2605856 +2605857 +2605858 +2605859 +2605860 +2605861 +2605862 +2605863 +2605864 +2605865 +2605866 +2605867 +2605868 +2605869 +2605870 +2605871 +2605872 +2605873 +2605874 +2605875 +2605876 +2605877 +2605878 +2605879 +2605880 +2605881 +2605882 +2605883 +2605884 +2605885 +2605886 +2605887 +2605888 +2605889 +2605890 +2605891 +2605892 +2605893 +2605894 +2605895 +2605896 +2605897 +2605898 +2605899 +2605900 +2605901 +2605902 +2605903 +2605904 +2605905 +2605906 +2605907 +2605908 +2605909 +2605910 +2605911 +2605912 +2605913 +2605914 +2605915 +2605916 +2605917 +2605918 +2605919 +2605920 +2605921 +2605922 +2605923 +2605924 +2605925 +2605926 +2605927 +2605928 +2605929 +2605930 +2605931 +2605932 +2605933 +2605934 +2605935 +2605936 +2605937 +2605938 +2605939 +2605940 +2605941 +2605942 +2605943 +2605944 +2605945 +2605946 +2605947 +2605948 +2605949 +2605950 +2605951 +2605952 +2605953 +2605954 +2605955 +2605956 +2605957 +2605958 +2605959 +2605960 +2605961 +2605962 +2605963 +2605964 +2605965 +2605966 +2605967 +2605968 +2605969 +2605970 +2605971 +2605972 +2605973 +2605974 +2605975 +2605976 +2605977 +2605978 +2605979 +2605980 +2605981 +2605982 +2605983 +2605984 +2605985 +2605986 +2605987 +2605988 +2605989 +2605990 +2605991 +2605992 +2605993 +2605994 +2605995 +2605996 +2605997 +2605998 +2605999 +2606000 +2606001 +2606002 +2606003 +2606004 +2606005 +2606006 +2606007 +2606008 +2606009 +2606010 +2606011 +2606012 +2606013 +2606014 +2606015 +2606016 +2606017 +2606018 +2606019 +2606020 +2606021 +2606022 +2606023 +2606024 +2606025 +2606026 +2606027 +2606028 +2606029 +2606030 +2606031 +2606032 +2606033 +2606034 +2606035 +2606036 +2606037 +2606038 +2606039 +2606040 +2606041 +2606042 +2606043 +2606044 +2606045 +2606046 +2606047 +2606048 +2606049 +2606050 +2606051 +2606052 +2606053 +2606054 +2606055 +2606056 +2606057 +2606058 +2606059 +2606060 +2606061 +2606062 +2606063 +2606064 +2606065 +2606066 +2606067 +2606068 +2606069 +2606070 +2606071 +2606072 +2606073 +2606074 +2606075 +2606076 +2606077 +2606078 +2606079 +2606080 +2606081 +2606082 +2606083 +2606084 +2606085 +2606086 +2606087 +2606088 +2606089 +2606090 +2606091 +2606092 +2606093 +2606094 +2606095 +2606096 +2606097 +2606098 +2606099 +2606100 +2606101 +2606102 +2606103 +2606104 +2606105 +2606106 +2606107 +2606108 +2606109 +2606110 +2606111 +2606112 +2606113 +2606114 +2606115 +2606116 +2606117 +2606118 +2606119 +2606120 +2606121 +2606122 +2606123 +2606124 +2606125 +2606126 +2606127 +2606128 +2606129 +2606130 +2606131 +2606132 +2606133 +2606134 +2606135 +2606136 +2606137 +2606138 +2606139 +2606140 +2606141 +2606142 +2606143 +2606144 +2606145 +2606146 +2606147 +2606148 +2606149 +2606150 +2606151 +2606152 +2606153 +2606154 +2606155 +2606156 +2606157 +2606158 +2606159 +2606160 +2606161 +2606162 +2606163 +2606164 +2606165 +2606166 +2606167 +2606168 +2606169 +2606170 +2606171 +2606172 +2606173 +2606174 +2606175 +2606176 +2606177 +2606178 +2606179 +2606180 +2606181 +2606182 +2606183 +2606184 +2606185 +2606186 +2606187 +2606188 +2606189 +2606190 +2606191 +2606192 +2606193 +2606194 +2606195 +2606196 +2606197 +2606198 +2606199 +2606200 +2606201 +2606202 +2606203 +2606204 +2606205 +2606206 +2606207 +2606208 +2606209 +2606210 +2606211 +2606212 +2606213 +2606214 +2606215 +2606216 +2606217 +2606218 +2606219 +2606220 +2606221 +2606222 +2606223 +2606224 +2606225 +2606226 +2606227 +2606228 +2606229 +2606230 +2606231 +2609955 +2609956 +2609957 +2609958 +2609959 +2609960 +2609961 +2609962 +2609963 +2609964 +2609965 +2609966 +2609967 +2609968 +2609969 +2609970 +2609971 +2609972 +2609973 +2609974 +2609975 +2609976 +2609977 +2609978 +2609979 +2609980 +2609981 +2609982 +2609983 +2609984 +2609985 +2609986 +2609987 +2609988 +2609989 +2609990 +2609991 +2609992 +2609993 +2609994 +2609995 +2609996 +2609997 +2609998 +2609999 +2610000 +2610001 +2610002 +2610003 +2610004 +2610005 +2610006 +2610007 +2610008 +2610009 +2610010 +2610011 +2610012 +2610013 +2610014 +2610015 +2610016 +2610017 +2610018 +2610019 +2610020 +2610021 +2610022 +2610023 +2610024 +2610025 +2610026 +2610027 +2610028 +2610029 +2610030 +2610031 +2610032 +2610033 +2610034 +2610035 +2610036 +2610037 +2610038 +2610039 +2610040 +2610041 +2610042 +2610043 +2610044 +2610045 +2610046 +2610047 +2610048 +2610049 +2610050 +2610051 +2610052 +2610053 +2610054 +2610055 +2610056 +2610057 +2610058 +2610059 +2610060 +2610061 +2610062 +2610063 +2610064 +2610065 +2610066 +2610067 +2610068 +2610069 +2610070 +2610071 +2610072 +2610073 +2610074 +2610075 +2610076 +2610077 +2610078 +2610079 +2610080 +2610081 +2610082 +2610083 +2610084 +2610085 +2610086 +2610087 +2610088 +2610089 +2610090 +2610091 +2610092 +2610093 +2610094 +2610095 +2610096 +2610097 +2610098 +2610099 +2610100 +2610101 +2610102 +2610103 +2610104 +2610105 +2610106 +2610107 +2610108 +2610109 +2610110 +2610111 +2610112 +2610113 +2610114 +2610115 +2610116 +2610117 +2610118 +2610119 +2610120 +2610121 +2610122 +2610123 +2610124 +2610125 +2610126 +2610127 +2610128 +2610129 +2610130 +2610131 +2610132 +2610133 +2610134 +2610135 +2610136 +2610137 +2610138 +2610139 +2610140 +2610141 +2610142 +2610143 +2610144 +2610145 +2610146 +2610147 +2610148 +2610149 +2610150 +2610151 +2610152 +2610153 +2610154 +2610155 +2610156 +2610157 +2610158 +2610159 +2610160 +2610161 +2610162 +2610163 +2610164 +2610165 +2610166 +2610167 +2610168 +2610169 +2610170 +2610171 +2610172 +2610173 +2610174 +2610175 +2610176 +2610177 +2610178 +2610179 +2610180 +2610181 +2610182 +2610183 +2610184 +2610185 +2610186 +2610187 +2610188 +2610189 +2610190 +2610191 +2610192 +2610193 +2610194 +2610195 +2610196 +2610197 +2610198 +2610199 +2610200 +2610201 +2610202 +2610203 +2610204 +2610205 +2610206 +2610207 +2610208 +2610209 +2610210 +2610211 +2610212 +2610213 +2610214 +2610215 +2610216 +2610217 +2610218 +2610219 +2610220 +2610221 +2610222 +2610223 +2610224 +2610225 +2610226 +2610227 +2610228 +2610229 +2610230 +2610231 +2610232 +2610233 +2610234 +2610235 +2610236 +2610237 +2610238 +2610239 +2610240 +2610241 +2610242 +2610243 +2610244 +2610245 +2610246 +2610247 +2610248 +2610249 +2610250 +2610251 +2610252 +2610253 +2610254 +2610255 +2610256 +2610257 +2610258 +2610259 +2610260 +2610261 +2610262 +2610263 +2610264 +2610265 +2610266 +2610267 +2610268 +2610269 +2610270 +2610271 +2610272 +2610273 +2610274 +2610275 +2610276 +2610277 +2610278 +2610279 +2610280 +2610281 +2610282 +2610283 +2610284 +2610285 +2610286 +2610287 +2610288 +2610289 +2610290 +2610291 +2610292 +2610293 +2610294 +2610295 +2610296 +2610297 +2610298 +2610299 +2610300 +2610301 +2610302 +2610303 +2610304 +2610305 +2610306 +2610307 +2610308 +2610309 +2610310 +2610311 +2610312 +2610313 +2610314 +2610315 +2610316 +2610317 +2610318 +2610319 +2610320 +2610321 +2610322 +2610323 +2610324 +2610325 +2610326 +2610327 +2610328 +2610329 +2610330 +2610331 +2610332 +2610333 +2610334 +2610335 +2610336 +2610337 +2610338 +2610339 +2610340 +2610341 +2610342 +2610343 +2610344 +2610345 +2610346 +2610347 +2610348 +2610349 +2610350 +2610351 +2610352 +2610353 +2610354 +2610355 +2610356 +2610357 +2610358 +2610359 +2610360 +2610361 +2610362 +2610363 +2610364 +2610365 +2610366 +2610367 +2610368 +2610369 +2610370 +2610371 +2610372 +2610373 +2610374 +2610375 +2610376 +2610377 +2610378 +2610379 +2610380 +2610381 +2610382 +2610383 +2610384 +2610385 +2610386 +2610387 +2610388 +2610389 +2610390 +2610391 +2610392 +2610393 +2610394 +2610395 +2610396 +2610397 +2610398 +2610399 +2610400 +2610401 +2610402 +2610403 +2610404 +2610405 +2610406 +2610407 +2610408 +2610409 +2610410 +2610411 +2610412 +2610413 +2610414 +2610415 +2610416 +2610417 +2610418 +2610419 +2610420 +2610421 +2610422 +2610423 +2610424 +2610425 +2610426 +2610427 +2610428 +2610429 +2610430 +2610431 +2610432 +2610433 +2610434 +2610435 +2610436 +2610437 +2610438 +2610439 +2610440 +2610441 +2610442 +2610443 +2610444 +2610445 +2610446 +2610447 +2610448 +2610449 +2610450 +2610451 +2610452 +2610453 +2610454 +2610455 +2610456 +2610457 +2610458 +2610459 +2610460 +2610461 +2610462 +2610463 +2610464 +2610465 +2610466 +2610467 +2610468 +2610469 +2610470 +2610471 +2610472 +2610473 +2610474 +2610475 +2610476 +2610477 +2610478 +2610479 +2610480 +2610481 +2610482 +2610483 +2610484 +2610485 +2610486 +2610487 +2610488 +2610489 +2610490 +2610491 +2610492 +2610493 +2610494 +2610495 +2610496 +2610497 +2610498 +2610499 +2610500 +2610501 +2610502 +2610503 +2610504 +2610505 +2610506 +2610507 +2610508 +2610509 +2610510 +2610511 +2610512 +2610513 +2610514 +2610515 +2610516 +2610517 +2610518 +2610519 +2610520 +2610521 +2610522 +2610523 +2610524 +2610525 +2610526 +2610527 +2610528 +2610529 +2610530 +2610531 +2610532 +2610533 +2610534 +2610535 +2610536 +2610537 +2610538 +2610539 +2610540 +2610541 +2610542 +2610543 +2610544 +2610545 +2610546 +2610547 +2610548 +2610549 +2610550 +2610551 +2614275 +2614276 +2614277 +2614278 +2614279 +2614280 +2614281 +2614282 +2614283 +2614284 +2614285 +2614286 +2614287 +2614288 +2614289 +2614290 +2614291 +2614292 +2614293 +2614294 +2614295 +2614296 +2614297 +2614298 +2614299 +2614300 +2614301 +2614302 +2614303 +2614304 +2614305 +2614306 +2614307 +2614308 +2614309 +2614310 +2614311 +2614312 +2614313 +2614314 +2614315 +2614316 +2614317 +2614318 +2614319 +2614320 +2614321 +2614322 +2614323 +2614324 +2614325 +2614326 +2614327 +2614328 +2614329 +2614330 +2614331 +2614332 +2614333 +2614334 +2614335 +2614336 +2614337 +2614338 +2614339 +2614340 +2614341 +2614342 +2614343 +2614344 +2614345 +2614346 +2614347 +2614348 +2614349 +2614350 +2614351 +2614352 +2614353 +2614354 +2614355 +2614356 +2614357 +2614358 +2614359 +2614360 +2614361 +2614362 +2614363 +2614364 +2614365 +2614366 +2614367 +2614368 +2614369 +2614370 +2614371 +2614372 +2614373 +2614374 +2614375 +2614376 +2614377 +2614378 +2614379 +2614380 +2614381 +2614382 +2614383 +2614384 +2614385 +2614386 +2614387 +2614388 +2614389 +2614390 +2614391 +2614392 +2614393 +2614394 +2614395 +2614396 +2614397 +2614398 +2614399 +2614400 +2614401 +2614402 +2614403 +2614404 +2614405 +2614406 +2614407 +2614408 +2614409 +2614410 +2614411 +2614412 +2614413 +2614414 +2614415 +2614416 +2614417 +2614418 +2614419 +2614420 +2614421 +2614422 +2614423 +2614424 +2614425 +2614426 +2614427 +2614428 +2614429 +2614430 +2614431 +2614432 +2614433 +2614434 +2614435 +2614436 +2614437 +2614438 +2614439 +2614440 +2614441 +2614442 +2614443 +2614444 +2614445 +2614446 +2614447 +2614448 +2614449 +2614450 +2614451 +2614452 +2614453 +2614454 +2614455 +2614456 +2614457 +2614458 +2614459 +2614460 +2614461 +2614462 +2614463 +2614464 +2614465 +2614466 +2614467 +2614468 +2614469 +2614470 +2614471 +2614472 +2614473 +2614474 +2614475 +2614476 +2614477 +2614478 +2614479 +2614480 +2614481 +2614482 +2614483 +2614484 +2614485 +2614486 +2614487 +2614488 +2614489 +2614490 +2614491 +2614492 +2614493 +2614494 +2614495 +2614496 +2614497 +2614498 +2614499 +2614500 +2614501 +2614502 +2614503 +2614504 +2614505 +2614506 +2614507 +2614508 +2614509 +2614510 +2614511 +2614512 +2614513 +2614514 +2614515 +2614516 +2614517 +2614518 +2614519 +2614520 +2614521 +2614522 +2614523 +2614524 +2614525 +2614526 +2614527 +2614528 +2614529 +2614530 +2614531 +2614532 +2614533 +2614534 +2614535 +2614536 +2614537 +2614538 +2614539 +2614540 +2614541 +2614542 +2614543 +2614544 +2614545 +2614546 +2614547 +2614548 +2614549 +2614550 +2614551 +2614552 +2614553 +2614554 +2614555 +2614556 +2614557 +2614558 +2614559 +2614560 +2614561 +2614562 +2614563 +2614564 +2614565 +2614566 +2614567 +2614568 +2614569 +2614570 +2614571 +2614572 +2614573 +2614574 +2614575 +2614576 +2614577 +2614578 +2614579 +2614580 +2614581 +2614582 +2614583 +2614584 +2614585 +2614586 +2614587 +2614588 +2614589 +2614590 +2614591 +2614592 +2614593 +2614594 +2614595 +2614596 +2614597 +2614598 +2614599 +2614600 +2614601 +2614602 +2614603 +2614604 +2614605 +2614606 +2614607 +2614608 +2614609 +2614610 +2614611 +2614612 +2614613 +2614614 +2614615 +2614616 +2614617 +2614618 +2614619 +2614620 +2614621 +2614622 +2614623 +2614624 +2614625 +2614626 +2614627 +2614628 +2614629 +2614630 +2614631 +2614632 +2614633 +2614634 +2614635 +2614636 +2614637 +2614638 +2614639 +2614640 +2614641 +2614642 +2614643 +2614644 +2614645 +2614646 +2614647 +2614648 +2614649 +2614650 +2614651 +2614652 +2614653 +2614654 +2614655 +2614656 +2614657 +2614658 +2614659 +2614660 +2614661 +2614662 +2614663 +2614664 +2614665 +2614666 +2614667 +2614668 +2614669 +2614670 +2614671 +2614672 +2614673 +2614674 +2614675 +2614676 +2614677 +2614678 +2614679 +2614680 +2614681 +2614682 +2614683 +2614684 +2614685 +2614686 +2614687 +2614688 +2614689 +2614690 +2614691 +2614692 +2614693 +2614694 +2614695 +2614696 +2614697 +2614698 +2614699 +2614700 +2614701 +2614702 +2614703 +2614704 +2614705 +2614706 +2614707 +2614708 +2614709 +2614710 +2614711 +2614712 +2614713 +2614714 +2614715 +2614716 +2614717 +2614718 +2614719 +2614720 +2614721 +2614722 +2614723 +2614724 +2614725 +2614726 +2614727 +2614728 +2614729 +2614730 +2614731 +2614732 +2614733 +2614734 +2614735 +2614736 +2614737 +2614738 +2614739 +2614740 +2614741 +2614742 +2614743 +2614744 +2614745 +2614746 +2614747 +2614748 +2614749 +2614750 +2614751 +2614752 +2614753 +2614754 +2614755 +2614756 +2614757 +2614758 +2614759 +2614760 +2614761 +2614762 +2614763 +2614764 +2614765 +2614766 +2614767 +2614768 +2614769 +2614770 +2614771 +2614772 +2614773 +2614774 +2614775 +2614776 +2614777 +2614778 +2614779 +2614780 +2614781 +2614782 +2614783 +2614784 +2614785 +2614786 +2614787 +2614788 +2614789 +2614790 +2614791 +2614792 +2614793 +2614794 +2614795 +2614796 +2614797 +2614798 +2614799 +2614800 +2614801 +2614802 +2614803 +2614804 +2614805 +2614806 +2614807 +2614808 +2614809 +2614810 +2614811 +2614812 +2614813 +2614814 +2614815 +2614816 +2614817 +2614818 +2614819 +2614820 +2614821 +2614822 +2614823 +2614824 +2614825 +2614826 +2614827 +2614828 +2614829 +2614830 +2614831 +2614832 +2614833 +2614834 +2614835 +2614836 +2614837 +2614838 +2614839 +2614840 +2614841 +2614842 +2614843 +2614844 +2614845 +2614846 +2614848 +2614849 +2614850 +2614851 +2614852 +2614853 +2614854 +2614855 +2614856 +2614857 +2614858 +2614859 +2614860 +2614861 +2614862 +2614863 +2614864 +2614865 +2614866 +2614867 +2614868 +2618595 +2618596 +2618597 +2618598 +2618599 +2618600 +2618601 +2618602 +2618603 +2618604 +2618605 +2618606 +2618607 +2618608 +2618609 +2618610 +2618611 +2618612 +2618613 +2618614 +2618615 +2618616 +2618617 +2618618 +2618619 +2618620 +2618621 +2618622 +2618623 +2618624 +2618625 +2618626 +2618627 +2618628 +2618629 +2618630 +2618631 +2618632 +2618633 +2618634 +2618635 +2618636 +2618637 +2618638 +2618639 +2618640 +2618641 +2618642 +2618643 +2618644 +2618645 +2618646 +2618647 +2618648 +2618649 +2618650 +2618651 +2618652 +2618653 +2618654 +2618655 +2618656 +2618657 +2618658 +2618659 +2618660 +2618661 +2618662 +2618663 +2618664 +2618665 +2618666 +2618667 +2618668 +2618669 +2618670 +2618671 +2618672 +2618673 +2618674 +2618675 +2618676 +2618677 +2618678 +2618679 +2618680 +2618681 +2618682 +2618683 +2618684 +2618685 +2618686 +2618687 +2618688 +2618689 +2618690 +2618691 +2618692 +2618693 +2618694 +2618695 +2618696 +2618697 +2618698 +2618699 +2618700 +2618701 +2618702 +2618703 +2618704 +2618705 +2618706 +2618707 +2618708 +2618709 +2618710 +2618711 +2618712 +2618713 +2618714 +2618715 +2618716 +2618717 +2618718 +2618719 +2618720 +2618721 +2618722 +2618723 +2618724 +2618725 +2618726 +2618727 +2618728 +2618729 +2618730 +2618731 +2618732 +2618733 +2618734 +2618735 +2618736 +2618737 +2618738 +2618739 +2618740 +2618741 +2618742 +2618743 +2618744 +2618745 +2618746 +2618747 +2618748 +2618749 +2618750 +2618751 +2618752 +2618753 +2618754 +2618755 +2618756 +2618757 +2618758 +2618759 +2618760 +2618761 +2618762 +2618763 +2618764 +2618765 +2618766 +2618767 +2618768 +2618769 +2618770 +2618771 +2618772 +2618773 +2618774 +2618775 +2618776 +2618777 +2618778 +2618779 +2618780 +2618781 +2618782 +2618783 +2618784 +2618785 +2618786 +2618787 +2618788 +2618789 +2618790 +2618791 +2618792 +2618793 +2618794 +2618795 +2618796 +2618797 +2618798 +2618799 +2618800 +2618801 +2618802 +2618803 +2618804 +2618805 +2618806 +2618807 +2618808 +2618809 +2618810 +2618811 +2618812 +2618813 +2618814 +2618815 +2618816 +2618817 +2618818 +2618819 +2618820 +2618821 +2618822 +2618823 +2618824 +2618825 +2618826 +2618827 +2618828 +2618829 +2618830 +2618831 +2618832 +2618833 +2618834 +2618835 +2618836 +2618837 +2618838 +2618839 +2618840 +2618841 +2618842 +2618843 +2618844 +2618845 +2618846 +2618847 +2618848 +2618849 +2618850 +2618851 +2618852 +2618853 +2618854 +2618855 +2618856 +2618857 +2618858 +2618859 +2618860 +2618861 +2618862 +2618863 +2618864 +2618865 +2618866 +2618867 +2618868 +2618869 +2618870 +2618871 +2618872 +2618873 +2618874 +2618875 +2618876 +2618877 +2618878 +2618879 +2618880 +2618881 +2618882 +2618883 +2618884 +2618885 +2618886 +2618887 +2618888 +2618889 +2618890 +2618891 +2618892 +2618893 +2618894 +2618895 +2618896 +2618897 +2618898 +2618899 +2618900 +2618901 +2618902 +2618903 +2618904 +2618905 +2618906 +2618907 +2618908 +2618909 +2618910 +2618911 +2618912 +2618913 +2618914 +2618915 +2618916 +2618917 +2618918 +2618919 +2618920 +2618921 +2618922 +2618923 +2618924 +2618925 +2618926 +2618927 +2618928 +2618929 +2618930 +2618931 +2618932 +2618933 +2618934 +2618935 +2618936 +2618937 +2618938 +2618939 +2618940 +2618941 +2618942 +2618943 +2618944 +2618945 +2618946 +2618947 +2618948 +2618949 +2618950 +2618951 +2618952 +2618953 +2618954 +2618955 +2618956 +2618957 +2618958 +2618959 +2618960 +2618961 +2618962 +2618963 +2618964 +2618965 +2618966 +2618967 +2618968 +2618969 +2618970 +2618971 +2618972 +2618973 +2618974 +2618975 +2618976 +2618977 +2618978 +2618979 +2618980 +2618981 +2618982 +2618983 +2618984 +2618985 +2618986 +2618987 +2618988 +2618989 +2618990 +2618991 +2618992 +2618993 +2618994 +2618995 +2618996 +2618997 +2618998 +2618999 +2619000 +2619001 +2619002 +2619003 +2619004 +2619005 +2619006 +2619007 +2619008 +2619009 +2619010 +2619011 +2619012 +2619013 +2619014 +2619015 +2619016 +2619017 +2619018 +2619019 +2619020 +2619021 +2619022 +2619023 +2619024 +2619025 +2619026 +2619027 +2619028 +2619029 +2619030 +2619031 +2619032 +2619033 +2619034 +2619035 +2619036 +2619037 +2619038 +2619039 +2619040 +2619041 +2619042 +2619043 +2619044 +2619045 +2619046 +2619047 +2619048 +2619049 +2619050 +2619051 +2619052 +2619053 +2619054 +2619055 +2619056 +2619057 +2619058 +2619059 +2619060 +2619061 +2619062 +2619063 +2619064 +2619065 +2619066 +2619067 +2619068 +2619069 +2619070 +2619071 +2619072 +2619073 +2619074 +2619075 +2619076 +2619077 +2619078 +2619079 +2619080 +2619081 +2619082 +2619083 +2619084 +2619085 +2619086 +2619087 +2619088 +2619089 +2619090 +2619091 +2619092 +2619093 +2619094 +2619095 +2619096 +2619097 +2619098 +2619099 +2619100 +2619101 +2619102 +2619103 +2619104 +2619105 +2619106 +2619107 +2619108 +2619109 +2619110 +2619111 +2619112 +2619113 +2619114 +2619115 +2619116 +2619117 +2619118 +2619119 +2619120 +2619121 +2619122 +2619123 +2619124 +2619125 +2619126 +2619127 +2619128 +2619129 +2619130 +2619131 +2619132 +2619133 +2619134 +2619135 +2619136 +2619137 +2619138 +2619139 +2619140 +2619141 +2619142 +2619143 +2619144 +2619145 +2619146 +2619147 +2619148 +2619149 +2619150 +2619151 +2619152 +2619153 +2619154 +2619155 +2619156 +2619157 +2619158 +2619159 +2619160 +2619161 +2619162 +2619163 +2619164 +2619165 +2619166 +2619167 +2619169 +2619170 +2619171 +2619172 +2619173 +2619174 +2619175 +2619176 +2619177 +2619178 +2619179 +2619180 +2619181 +2619182 +2619183 +2619184 +2619185 +2619186 +2619187 +2619188 +2622915 +2622916 +2622917 +2622918 +2622919 +2622920 +2622921 +2622922 +2622923 +2622924 +2622925 +2622926 +2622927 +2622928 +2622929 +2622930 +2622931 +2622932 +2622933 +2622934 +2622935 +2622936 +2622937 +2622938 +2622939 +2622940 +2622941 +2622942 +2622943 +2622944 +2622945 +2622946 +2622947 +2622948 +2622949 +2622950 +2622951 +2622952 +2622953 +2622954 +2622955 +2622956 +2622957 +2622958 +2622959 +2622960 +2622961 +2622962 +2622963 +2622964 +2622965 +2622966 +2622967 +2622968 +2622969 +2622970 +2622971 +2622972 +2622973 +2622974 +2622975 +2622976 +2622977 +2622978 +2622979 +2622980 +2622981 +2622982 +2622983 +2622984 +2622985 +2622986 +2622987 +2622988 +2622989 +2622990 +2622991 +2622992 +2622993 +2622994 +2622995 +2622996 +2622997 +2622998 +2622999 +2623000 +2623001 +2623002 +2623003 +2623004 +2623005 +2623006 +2623007 +2623008 +2623009 +2623010 +2623011 +2623012 +2623013 +2623014 +2623015 +2623016 +2623017 +2623018 +2623019 +2623020 +2623021 +2623022 +2623023 +2623024 +2623025 +2623026 +2623027 +2623028 +2623029 +2623030 +2623031 +2623032 +2623033 +2623034 +2623035 +2623036 +2623037 +2623038 +2623039 +2623040 +2623041 +2623042 +2623043 +2623044 +2623045 +2623046 +2623047 +2623048 +2623049 +2623050 +2623051 +2623052 +2623053 +2623054 +2623055 +2623056 +2623057 +2623058 +2623059 +2623060 +2623061 +2623062 +2623063 +2623064 +2623065 +2623066 +2623067 +2623068 +2623069 +2623070 +2623071 +2623072 +2623073 +2623074 +2623075 +2623076 +2623077 +2623078 +2623079 +2623080 +2623081 +2623082 +2623083 +2623084 +2623085 +2623086 +2623087 +2623088 +2623089 +2623090 +2623091 +2623092 +2623093 +2623094 +2623095 +2623096 +2623097 +2623098 +2623099 +2623100 +2623101 +2623102 +2623103 +2623104 +2623105 +2623106 +2623107 +2623108 +2623109 +2623110 +2623111 +2623112 +2623113 +2623114 +2623115 +2623116 +2623117 +2623118 +2623119 +2623120 +2623121 +2623122 +2623123 +2623124 +2623125 +2623126 +2623127 +2623128 +2623129 +2623130 +2623131 +2623132 +2623133 +2623134 +2623135 +2623136 +2623137 +2623138 +2623139 +2623140 +2623141 +2623142 +2623143 +2623144 +2623145 +2623146 +2623147 +2623148 +2623149 +2623150 +2623151 +2623152 +2623153 +2623154 +2623155 +2623156 +2623157 +2623158 +2623159 +2623160 +2623161 +2623162 +2623163 +2623164 +2623165 +2623166 +2623167 +2623168 +2623169 +2623170 +2623171 +2623172 +2623173 +2623174 +2623175 +2623176 +2623177 +2623178 +2623179 +2623180 +2623181 +2623182 +2623183 +2623184 +2623185 +2623186 +2623187 +2623188 +2623189 +2623190 +2623191 +2623192 +2623193 +2623194 +2623195 +2623196 +2623197 +2623198 +2623199 +2623200 +2623201 +2623202 +2623203 +2623204 +2623205 +2623206 +2623207 +2623208 +2623209 +2623210 +2623211 +2623212 +2623213 +2623214 +2623215 +2623216 +2623217 +2623218 +2623219 +2623220 +2623221 +2623222 +2623223 +2623224 +2623225 +2623226 +2623227 +2623228 +2623229 +2623230 +2623231 +2623232 +2623233 +2623234 +2623235 +2623236 +2623237 +2623238 +2623239 +2623240 +2623241 +2623242 +2623243 +2623244 +2623245 +2623246 +2623247 +2623248 +2623249 +2623250 +2623251 +2623252 +2623253 +2623254 +2623255 +2623256 +2623257 +2623258 +2623259 +2623260 +2623261 +2623262 +2623263 +2623264 +2623265 +2623266 +2623267 +2623268 +2623269 +2623270 +2623271 +2623272 +2623273 +2623274 +2623275 +2623276 +2623277 +2623278 +2623279 +2623280 +2623281 +2623282 +2623283 +2623284 +2623285 +2623286 +2623287 +2623288 +2623289 +2623290 +2623291 +2623292 +2623293 +2623294 +2623295 +2623296 +2623297 +2623298 +2623299 +2623300 +2623301 +2623302 +2623303 +2623304 +2623305 +2623306 +2623307 +2623308 +2623309 +2623310 +2623311 +2623312 +2623313 +2623314 +2623315 +2623316 +2623317 +2623318 +2623319 +2623320 +2623321 +2623322 +2623323 +2623324 +2623325 +2623326 +2623327 +2623328 +2623329 +2623330 +2623331 +2623332 +2623333 +2623334 +2623335 +2623336 +2623337 +2623338 +2623339 +2623340 +2623341 +2623342 +2623343 +2623344 +2623345 +2623346 +2623347 +2623348 +2623349 +2623350 +2623351 +2623352 +2623353 +2623354 +2623355 +2623356 +2623357 +2623358 +2623359 +2623360 +2623361 +2623362 +2623363 +2623364 +2623365 +2623366 +2623367 +2623368 +2623369 +2623370 +2623371 +2623372 +2623373 +2623374 +2623375 +2623376 +2623377 +2623378 +2623379 +2623380 +2623381 +2623382 +2623383 +2623384 +2623385 +2623386 +2623387 +2623388 +2623389 +2623390 +2623391 +2623392 +2623393 +2623394 +2623395 +2623396 +2623397 +2623398 +2623399 +2623400 +2623401 +2623402 +2623403 +2623404 +2623405 +2623406 +2623407 +2623408 +2623409 +2623410 +2623411 +2623412 +2623413 +2623414 +2623415 +2623416 +2623417 +2623418 +2623419 +2623420 +2623421 +2623422 +2623423 +2623424 +2623425 +2623426 +2623427 +2623428 +2623429 +2623430 +2623431 +2623432 +2623433 +2623434 +2623435 +2623436 +2623437 +2623438 +2623439 +2623440 +2623441 +2623442 +2623443 +2623444 +2623445 +2623446 +2623447 +2623448 +2623449 +2623450 +2623451 +2623452 +2623453 +2623454 +2623455 +2623456 +2623457 +2623458 +2623459 +2623460 +2623461 +2623462 +2623463 +2623464 +2623465 +2623466 +2623467 +2623468 +2623469 +2623470 +2623471 +2623472 +2623473 +2623474 +2623475 +2623476 +2623477 +2623478 +2623479 +2623480 +2623481 +2623482 +2623483 +2623484 +2623485 +2623486 +2623487 +2623488 +2623489 +2623490 +2623491 +2623492 +2623493 +2623494 +2623495 +2623496 +2623497 +2623498 +2623499 +2623500 +2623501 +2623502 +2623503 +2623504 +2623505 +2623506 +2623507 +2623508 +2627237 +2627238 +2627239 +2627240 +2627241 +2627242 +2627243 +2627244 +2627245 +2627246 +2627247 +2627248 +2627249 +2627250 +2627251 +2627252 +2627253 +2627254 +2627255 +2627256 +2627257 +2627258 +2627259 +2627260 +2627261 +2627262 +2627263 +2627264 +2627265 +2627266 +2627267 +2627268 +2627269 +2627270 +2627271 +2627272 +2627273 +2627274 +2627275 +2627276 +2627277 +2627278 +2627279 +2627280 +2627281 +2627282 +2627283 +2627284 +2627285 +2627286 +2627287 +2627288 +2627289 +2627290 +2627291 +2627292 +2627293 +2627294 +2627295 +2627296 +2627297 +2627298 +2627299 +2627300 +2627301 +2627302 +2627303 +2627304 +2627305 +2627306 +2627307 +2627308 +2627309 +2627310 +2627311 +2627312 +2627313 +2627314 +2627315 +2627316 +2627317 +2627318 +2627319 +2627320 +2627321 +2627322 +2627323 +2627324 +2627325 +2627326 +2627327 +2627328 +2627329 +2627330 +2627331 +2627332 +2627333 +2627334 +2627335 +2627336 +2627337 +2627338 +2627339 +2627340 +2627341 +2627342 +2627343 +2627344 +2627345 +2627346 +2627347 +2627348 +2627349 +2627350 +2627351 +2627352 +2627353 +2627354 +2627355 +2627356 +2627357 +2627358 +2627359 +2627360 +2627361 +2627362 +2627363 +2627364 +2627365 +2627366 +2627367 +2627368 +2627369 +2627370 +2627371 +2627372 +2627373 +2627374 +2627375 +2627376 +2627377 +2627378 +2627379 +2627380 +2627381 +2627382 +2627383 +2627384 +2627385 +2627386 +2627387 +2627388 +2627389 +2627390 +2627391 +2627392 +2627393 +2627394 +2627395 +2627396 +2627397 +2627398 +2627399 +2627400 +2627401 +2627402 +2627403 +2627404 +2627405 +2627406 +2627407 +2627408 +2627409 +2627410 +2627411 +2627412 +2627413 +2627414 +2627415 +2627416 +2627417 +2627418 +2627419 +2627420 +2627421 +2627422 +2627423 +2627424 +2627425 +2627426 +2627427 +2627428 +2627429 +2627430 +2627431 +2627432 +2627433 +2627434 +2627435 +2627436 +2627437 +2627438 +2627439 +2627440 +2627441 +2627442 +2627443 +2627444 +2627445 +2627446 +2627447 +2627448 +2627449 +2627450 +2627451 +2627452 +2627453 +2627454 +2627455 +2627456 +2627457 +2627458 +2627459 +2627460 +2627461 +2627462 +2627463 +2627464 +2627465 +2627466 +2627467 +2627468 +2627469 +2627470 +2627471 +2627472 +2627473 +2627474 +2627475 +2627476 +2627477 +2627478 +2627479 +2627480 +2627481 +2627482 +2627483 +2627484 +2627485 +2627486 +2627487 +2627488 +2627489 +2627490 +2627491 +2627492 +2627493 +2627494 +2627495 +2627496 +2627497 +2627498 +2627499 +2627500 +2627501 +2627502 +2627503 +2627504 +2627505 +2627506 +2627507 +2627508 +2627509 +2627510 +2627511 +2627512 +2627513 +2627514 +2627515 +2627516 +2627517 +2627518 +2627519 +2627520 +2627521 +2627522 +2627523 +2627524 +2627525 +2627526 +2627527 +2627528 +2627529 +2627530 +2627531 +2627532 +2627533 +2627534 +2627535 +2627536 +2627537 +2627538 +2627539 +2627540 +2627541 +2627542 +2627543 +2627544 +2627545 +2627546 +2627547 +2627548 +2627549 +2627550 +2627551 +2627552 +2627553 +2627554 +2627555 +2627556 +2627557 +2627558 +2627559 +2627560 +2627561 +2627562 +2627563 +2627564 +2627565 +2627566 +2627567 +2627568 +2627569 +2627570 +2627571 +2627572 +2627573 +2627574 +2627575 +2627576 +2627577 +2627578 +2627579 +2627580 +2627581 +2627582 +2627583 +2627584 +2627585 +2627586 +2627587 +2627588 +2627589 +2627590 +2627591 +2627592 +2627593 +2627594 +2627595 +2627596 +2627597 +2627598 +2627599 +2627600 +2627601 +2627602 +2627603 +2627604 +2627605 +2627606 +2627607 +2627608 +2627609 +2627610 +2627611 +2627612 +2627613 +2627614 +2627615 +2627616 +2627617 +2627618 +2627619 +2627620 +2627621 +2627622 +2627623 +2627624 +2627625 +2627626 +2627627 +2627628 +2627629 +2627630 +2627631 +2627632 +2627633 +2627634 +2627635 +2627636 +2627637 +2627638 +2627639 +2627640 +2627641 +2627642 +2627643 +2627644 +2627645 +2627646 +2627647 +2627648 +2627649 +2627650 +2627651 +2627652 +2627653 +2627654 +2627655 +2627656 +2627657 +2627658 +2627659 +2627660 +2627661 +2627662 +2627663 +2627664 +2627665 +2627666 +2627667 +2627668 +2627669 +2627670 +2627671 +2627672 +2627673 +2627674 +2627675 +2627676 +2627677 +2627678 +2627679 +2627680 +2627681 +2627682 +2627683 +2627684 +2627685 +2627686 +2627687 +2627688 +2627689 +2627690 +2627691 +2627692 +2627693 +2627694 +2627695 +2627696 +2627697 +2627698 +2627699 +2627700 +2627701 +2627702 +2627703 +2627704 +2627705 +2627706 +2627707 +2627708 +2627709 +2627710 +2627711 +2627712 +2627713 +2627714 +2627715 +2627716 +2627717 +2627718 +2627719 +2627720 +2627721 +2627722 +2627723 +2627724 +2627725 +2627726 +2627727 +2627728 +2627729 +2627730 +2627731 +2627732 +2627733 +2627734 +2627735 +2627736 +2627737 +2627738 +2627739 +2627740 +2627741 +2627742 +2627743 +2627744 +2627745 +2627746 +2627747 +2627748 +2627749 +2627750 +2627751 +2627752 +2627753 +2627754 +2627755 +2627756 +2627757 +2627758 +2627759 +2627760 +2627761 +2627762 +2627763 +2627764 +2627765 +2627766 +2627767 +2627768 +2627769 +2627770 +2627771 +2627772 +2627773 +2627774 +2627775 +2627776 +2627777 +2627778 +2627779 +2627780 +2627781 +2627782 +2627783 +2627784 +2627785 +2627786 +2627787 +2627788 +2627789 +2627790 +2627791 +2627792 +2627793 +2627794 +2627795 +2627796 +2627797 +2627798 +2627799 +2627800 +2627801 +2627802 +2627803 +2627806 +2627807 +2627808 +2627809 +2627810 +2627811 +2627812 +2627813 +2627814 +2627815 +2627816 +2627817 +2627818 +2627819 +2627820 +2627821 +2627822 +2627823 +2627824 +2627825 +2631557 +2631558 +2631559 +2631560 +2631561 +2631562 +2631563 +2631564 +2631565 +2631566 +2631567 +2631568 +2631569 +2631570 +2631571 +2631572 +2631573 +2631574 +2631575 +2631576 +2631577 +2631578 +2631579 +2631580 +2631581 +2631582 +2631583 +2631584 +2631585 +2631586 +2631587 +2631588 +2631589 +2631590 +2631591 +2631592 +2631593 +2631594 +2631595 +2631596 +2631597 +2631598 +2631599 +2631601 +2631602 +2631603 +2631604 +2631605 +2631606 +2631607 +2631608 +2631609 +2631610 +2631611 +2631612 +2631613 +2631614 +2631615 +2631616 +2631617 +2631618 +2631619 +2631620 +2631621 +2631622 +2631623 +2631624 +2631625 +2631626 +2631627 +2631628 +2631629 +2631630 +2631631 +2631632 +2631633 +2631634 +2631635 +2631636 +2631637 +2631638 +2631639 +2631640 +2631641 +2631642 +2631643 +2631644 +2631645 +2631646 +2631647 +2631648 +2631649 +2631650 +2631651 +2631652 +2631653 +2631654 +2631655 +2631656 +2631657 +2631658 +2631659 +2631660 +2631661 +2631662 +2631663 +2631664 +2631665 +2631666 +2631667 +2631668 +2631669 +2631670 +2631671 +2631672 +2631673 +2631674 +2631675 +2631676 +2631677 +2631678 +2631679 +2631680 +2631681 +2631682 +2631683 +2631684 +2631685 +2631686 +2631687 +2631688 +2631689 +2631690 +2631691 +2631692 +2631693 +2631694 +2631695 +2631696 +2631697 +2631698 +2631699 +2631700 +2631701 +2631702 +2631703 +2631704 +2631705 +2631706 +2631707 +2631708 +2631709 +2631710 +2631711 +2631712 +2631713 +2631714 +2631715 +2631716 +2631717 +2631718 +2631719 +2631720 +2631721 +2631722 +2631723 +2631724 +2631725 +2631726 +2631727 +2631728 +2631729 +2631730 +2631731 +2631732 +2631733 +2631734 +2631735 +2631736 +2631737 +2631738 +2631739 +2631740 +2631741 +2631742 +2631743 +2631744 +2631745 +2631746 +2631747 +2631748 +2631749 +2631750 +2631751 +2631752 +2631753 +2631754 +2631755 +2631756 +2631757 +2631758 +2631759 +2631760 +2631761 +2631762 +2631763 +2631764 +2631765 +2631766 +2631767 +2631768 +2631769 +2631770 +2631771 +2631772 +2631773 +2631774 +2631775 +2631776 +2631777 +2631778 +2631779 +2631780 +2631781 +2631782 +2631783 +2631784 +2631785 +2631786 +2631787 +2631788 +2631789 +2631790 +2631791 +2631792 +2631793 +2631794 +2631795 +2631796 +2631797 +2631798 +2631799 +2631800 +2631801 +2631802 +2631803 +2631804 +2631805 +2631806 +2631807 +2631808 +2631809 +2631810 +2631811 +2631812 +2631813 +2631814 +2631815 +2631816 +2631817 +2631818 +2631819 +2631820 +2631821 +2631822 +2631823 +2631824 +2631825 +2631826 +2631827 +2631828 +2631829 +2631830 +2631831 +2631832 +2631833 +2631834 +2631835 +2631836 +2631837 +2631838 +2631839 +2631840 +2631841 +2631842 +2631843 +2631844 +2631845 +2631846 +2631847 +2631848 +2631849 +2631850 +2631851 +2631852 +2631853 +2631854 +2631855 +2631856 +2631857 +2631858 +2631859 +2631860 +2631861 +2631862 +2631863 +2631864 +2631865 +2631866 +2631867 +2631868 +2631869 +2631870 +2631871 +2631872 +2631873 +2631874 +2631875 +2631876 +2631877 +2631878 +2631879 +2631880 +2631881 +2631882 +2631883 +2631884 +2631885 +2631886 +2631887 +2631888 +2631889 +2631890 +2631891 +2631892 +2631893 +2631894 +2631895 +2631896 +2631897 +2631898 +2631899 +2631900 +2631901 +2631902 +2631903 +2631904 +2631905 +2631906 +2631907 +2631908 +2631909 +2631910 +2631911 +2631912 +2631913 +2631914 +2631915 +2631916 +2631917 +2631918 +2631919 +2631920 +2631921 +2631922 +2631923 +2631924 +2631925 +2631926 +2631927 +2631928 +2631929 +2631930 +2631931 +2631932 +2631933 +2631934 +2631935 +2631936 +2631937 +2631938 +2631939 +2631940 +2631941 +2631942 +2631943 +2631944 +2631945 +2631946 +2631947 +2631948 +2631949 +2631950 +2631951 +2631952 +2631953 +2631954 +2631955 +2631956 +2631957 +2631958 +2631959 +2631960 +2631961 +2631962 +2631963 +2631964 +2631965 +2631966 +2631967 +2631968 +2631969 +2631970 +2631971 +2631972 +2631973 +2631974 +2631975 +2631976 +2631977 +2631978 +2631979 +2631980 +2631981 +2631982 +2631983 +2631984 +2631985 +2631986 +2631987 +2631988 +2631989 +2631990 +2631991 +2631992 +2631993 +2631994 +2631995 +2631996 +2631997 +2631998 +2631999 +2632000 +2632001 +2632002 +2632003 +2632004 +2632005 +2632006 +2632007 +2632008 +2632009 +2632010 +2632011 +2632012 +2632013 +2632014 +2632015 +2632016 +2632017 +2632018 +2632019 +2632020 +2632021 +2632022 +2632023 +2632024 +2632025 +2632026 +2632027 +2632028 +2632029 +2632030 +2632031 +2632032 +2632033 +2632034 +2632035 +2632036 +2632037 +2632038 +2632039 +2632040 +2632041 +2632042 +2632043 +2632044 +2632045 +2632046 +2632047 +2632048 +2632049 +2632050 +2632051 +2632052 +2632053 +2632054 +2632055 +2632056 +2632057 +2632058 +2632059 +2632060 +2632061 +2632062 +2632063 +2632064 +2632065 +2632066 +2632067 +2632068 +2632069 +2632070 +2632071 +2632072 +2632073 +2632074 +2632075 +2632076 +2632077 +2632078 +2632079 +2632080 +2632081 +2632082 +2632083 +2632084 +2632085 +2632086 +2632087 +2632088 +2632089 +2632090 +2632091 +2632092 +2632093 +2632094 +2632095 +2632096 +2632097 +2632098 +2632099 +2632100 +2632101 +2632102 +2632103 +2632104 +2632105 +2632106 +2632107 +2632108 +2632109 +2632110 +2632111 +2632112 +2632113 +2632114 +2632115 +2632116 +2632117 +2632118 +2632119 +2632120 +2632121 +2632125 +2632126 +2632127 +2632128 +2632129 +2632130 +2632131 +2632132 +2632133 +2632134 +2632135 +2632136 +2632138 +2632139 +2632140 +2632141 +2632142 +2632143 +2632144 +2632145 +2635877 +2635878 +2635879 +2635880 +2635881 +2635882 +2635883 +2635884 +2635885 +2635886 +2635887 +2635888 +2635889 +2635890 +2635891 +2635892 +2635893 +2635894 +2635895 +2635896 +2635897 +2635898 +2635899 +2635900 +2635901 +2635902 +2635903 +2635904 +2635905 +2635906 +2635907 +2635908 +2635909 +2635910 +2635911 +2635912 +2635913 +2635914 +2635915 +2635916 +2635917 +2635918 +2635922 +2635923 +2635924 +2635925 +2635926 +2635927 +2635928 +2635929 +2635930 +2635931 +2635932 +2635933 +2635934 +2635935 +2635936 +2635937 +2635938 +2635939 +2635940 +2635941 +2635942 +2635943 +2635944 +2635945 +2635946 +2635947 +2635948 +2635949 +2635950 +2635951 +2635952 +2635953 +2635954 +2635955 +2635956 +2635957 +2635958 +2635959 +2635960 +2635961 +2635962 +2635963 +2635964 +2635965 +2635966 +2635967 +2635968 +2635969 +2635970 +2635971 +2635972 +2635973 +2635974 +2635975 +2635976 +2635977 +2635978 +2635979 +2635980 +2635981 +2635982 +2635983 +2635984 +2635985 +2635986 +2635987 +2635988 +2635989 +2635990 +2635991 +2635992 +2635993 +2635994 +2635995 +2635996 +2635997 +2635998 +2635999 +2636000 +2636001 +2636002 +2636003 +2636004 +2636005 +2636006 +2636007 +2636008 +2636009 +2636010 +2636011 +2636012 +2636013 +2636014 +2636015 +2636016 +2636017 +2636018 +2636019 +2636020 +2636021 +2636022 +2636023 +2636024 +2636025 +2636026 +2636027 +2636028 +2636029 +2636030 +2636031 +2636032 +2636033 +2636034 +2636035 +2636036 +2636037 +2636038 +2636039 +2636040 +2636041 +2636042 +2636043 +2636044 +2636045 +2636046 +2636047 +2636048 +2636049 +2636050 +2636051 +2636052 +2636053 +2636054 +2636055 +2636056 +2636057 +2636058 +2636059 +2636060 +2636061 +2636062 +2636063 +2636064 +2636065 +2636066 +2636067 +2636068 +2636069 +2636070 +2636071 +2636072 +2636073 +2636074 +2636075 +2636076 +2636077 +2636078 +2636079 +2636080 +2636081 +2636082 +2636083 +2636084 +2636085 +2636086 +2636087 +2636088 +2636089 +2636090 +2636091 +2636092 +2636093 +2636094 +2636095 +2636096 +2636097 +2636098 +2636099 +2636100 +2636101 +2636102 +2636103 +2636104 +2636105 +2636106 +2636107 +2636108 +2636109 +2636110 +2636111 +2636112 +2636113 +2636114 +2636115 +2636116 +2636117 +2636118 +2636119 +2636120 +2636121 +2636122 +2636123 +2636124 +2636125 +2636126 +2636127 +2636128 +2636129 +2636130 +2636131 +2636132 +2636133 +2636134 +2636135 +2636136 +2636137 +2636138 +2636139 +2636140 +2636141 +2636142 +2636143 +2636144 +2636145 +2636146 +2636147 +2636148 +2636149 +2636150 +2636151 +2636152 +2636153 +2636154 +2636155 +2636156 +2636157 +2636158 +2636159 +2636160 +2636161 +2636162 +2636163 +2636164 +2636165 +2636166 +2636167 +2636168 +2636169 +2636170 +2636171 +2636172 +2636173 +2636174 +2636175 +2636176 +2636177 +2636178 +2636179 +2636180 +2636181 +2636182 +2636183 +2636184 +2636185 +2636186 +2636187 +2636188 +2636189 +2636190 +2636191 +2636192 +2636193 +2636194 +2636195 +2636196 +2636197 +2636198 +2636199 +2636200 +2636201 +2636202 +2636203 +2636204 +2636205 +2636206 +2636207 +2636208 +2636209 +2636210 +2636211 +2636212 +2636213 +2636214 +2636215 +2636216 +2636217 +2636218 +2636219 +2636220 +2636221 +2636222 +2636223 +2636224 +2636225 +2636226 +2636227 +2636228 +2636229 +2636230 +2636231 +2636232 +2636233 +2636234 +2636235 +2636236 +2636237 +2636238 +2636239 +2636240 +2636241 +2636242 +2636243 +2636244 +2636245 +2636246 +2636247 +2636248 +2636249 +2636250 +2636251 +2636252 +2636253 +2636254 +2636255 +2636256 +2636257 +2636258 +2636259 +2636260 +2636261 +2636262 +2636263 +2636264 +2636265 +2636266 +2636267 +2636268 +2636269 +2636270 +2636271 +2636272 +2636273 +2636274 +2636275 +2636276 +2636277 +2636278 +2636279 +2636280 +2636281 +2636282 +2636283 +2636284 +2636285 +2636286 +2636287 +2636288 +2636289 +2636290 +2636291 +2636292 +2636293 +2636294 +2636295 +2636296 +2636297 +2636298 +2636299 +2636300 +2636301 +2636302 +2636303 +2636304 +2636305 +2636306 +2636307 +2636308 +2636309 +2636310 +2636311 +2636312 +2636313 +2636314 +2636315 +2636316 +2636317 +2636318 +2636319 +2636320 +2636321 +2636322 +2636323 +2636324 +2636325 +2636326 +2636327 +2636328 +2636329 +2636330 +2636331 +2636332 +2636333 +2636334 +2636335 +2636336 +2636337 +2636338 +2636339 +2636340 +2636341 +2636342 +2636343 +2636344 +2636345 +2636346 +2636347 +2636348 +2636349 +2636350 +2636351 +2636352 +2636353 +2636354 +2636355 +2636356 +2636357 +2636358 +2636359 +2636360 +2636361 +2636362 +2636363 +2636364 +2636365 +2636366 +2636367 +2636368 +2636369 +2636370 +2636371 +2636372 +2636373 +2636374 +2636375 +2636376 +2636377 +2636378 +2636379 +2636380 +2636381 +2636382 +2636383 +2636384 +2636385 +2636386 +2636387 +2636388 +2636389 +2636390 +2636391 +2636392 +2636393 +2636394 +2636395 +2636396 +2636397 +2636398 +2636399 +2636400 +2636401 +2636402 +2636403 +2636404 +2636405 +2636406 +2636407 +2636408 +2636409 +2636410 +2636411 +2636412 +2636413 +2636414 +2636415 +2636416 +2636417 +2636418 +2636419 +2636420 +2636421 +2636422 +2636423 +2636424 +2636425 +2636426 +2636427 +2636428 +2636429 +2636430 +2636431 +2636432 +2636433 +2636434 +2636435 +2636436 +2636437 +2636438 +2636439 +2636440 +2636441 +2636442 +2636443 +2636445 +2636446 +2636447 +2636448 +2636449 +2636450 +2636451 +2636452 +2636453 +2636454 +2636455 +2636456 +2636462 +2636463 +2636464 +2640197 +2640198 +2640199 +2640200 +2640201 +2640202 +2640203 +2640204 +2640205 +2640207 +2640208 +2640209 +2640210 +2640211 +2640212 +2640213 +2640214 +2640215 +2640216 +2640217 +2640218 +2640219 +2640220 +2640221 +2640222 +2640223 +2640224 +2640225 +2640226 +2640227 +2640228 +2640229 +2640230 +2640231 +2640232 +2640233 +2640234 +2640235 +2640236 +2640237 +2640238 +2640241 +2640242 +2640243 +2640244 +2640245 +2640246 +2640247 +2640248 +2640249 +2640250 +2640251 +2640252 +2640253 +2640254 +2640255 +2640256 +2640257 +2640258 +2640259 +2640260 +2640261 +2640262 +2640263 +2640264 +2640265 +2640266 +2640267 +2640268 +2640269 +2640270 +2640271 +2640272 +2640273 +2640274 +2640275 +2640276 +2640277 +2640278 +2640279 +2640280 +2640281 +2640282 +2640283 +2640284 +2640285 +2640286 +2640287 +2640288 +2640289 +2640290 +2640291 +2640292 +2640293 +2640294 +2640295 +2640296 +2640297 +2640298 +2640299 +2640300 +2640301 +2640302 +2640303 +2640304 +2640305 +2640306 +2640307 +2640308 +2640309 +2640310 +2640311 +2640312 +2640313 +2640314 +2640315 +2640316 +2640317 +2640318 +2640319 +2640320 +2640321 +2640322 +2640323 +2640324 +2640325 +2640326 +2640327 +2640328 +2640329 +2640330 +2640331 +2640332 +2640333 +2640334 +2640335 +2640336 +2640337 +2640338 +2640339 +2640340 +2640341 +2640342 +2640343 +2640344 +2640345 +2640346 +2640347 +2640348 +2640349 +2640350 +2640351 +2640352 +2640353 +2640354 +2640355 +2640356 +2640357 +2640358 +2640359 +2640360 +2640361 +2640362 +2640363 +2640364 +2640365 +2640366 +2640367 +2640368 +2640369 +2640370 +2640371 +2640372 +2640373 +2640374 +2640375 +2640376 +2640377 +2640378 +2640379 +2640380 +2640381 +2640382 +2640383 +2640384 +2640385 +2640386 +2640387 +2640388 +2640389 +2640390 +2640391 +2640392 +2640393 +2640394 +2640395 +2640396 +2640397 +2640398 +2640399 +2640400 +2640401 +2640402 +2640403 +2640404 +2640405 +2640406 +2640407 +2640408 +2640409 +2640410 +2640411 +2640412 +2640413 +2640414 +2640415 +2640416 +2640417 +2640418 +2640419 +2640420 +2640421 +2640422 +2640423 +2640424 +2640425 +2640426 +2640427 +2640428 +2640429 +2640430 +2640431 +2640432 +2640433 +2640434 +2640435 +2640436 +2640437 +2640438 +2640439 +2640440 +2640441 +2640442 +2640443 +2640444 +2640445 +2640446 +2640447 +2640448 +2640449 +2640450 +2640451 +2640452 +2640453 +2640454 +2640455 +2640456 +2640457 +2640458 +2640459 +2640460 +2640461 +2640462 +2640463 +2640464 +2640465 +2640466 +2640467 +2640468 +2640469 +2640470 +2640471 +2640472 +2640473 +2640474 +2640475 +2640476 +2640477 +2640478 +2640479 +2640480 +2640481 +2640482 +2640483 +2640484 +2640485 +2640486 +2640487 +2640488 +2640489 +2640490 +2640491 +2640492 +2640493 +2640494 +2640495 +2640496 +2640497 +2640498 +2640499 +2640500 +2640501 +2640502 +2640503 +2640504 +2640505 +2640506 +2640507 +2640508 +2640509 +2640510 +2640511 +2640512 +2640513 +2640514 +2640515 +2640516 +2640517 +2640518 +2640519 +2640520 +2640521 +2640522 +2640523 +2640524 +2640525 +2640526 +2640527 +2640528 +2640529 +2640530 +2640531 +2640532 +2640533 +2640534 +2640535 +2640536 +2640537 +2640538 +2640539 +2640540 +2640541 +2640542 +2640543 +2640544 +2640545 +2640546 +2640547 +2640548 +2640549 +2640550 +2640551 +2640552 +2640553 +2640554 +2640555 +2640556 +2640557 +2640558 +2640559 +2640560 +2640561 +2640562 +2640563 +2640564 +2640565 +2640566 +2640567 +2640568 +2640569 +2640570 +2640571 +2640572 +2640573 +2640574 +2640575 +2640576 +2640577 +2640578 +2640579 +2640580 +2640581 +2640582 +2640583 +2640584 +2640585 +2640586 +2640587 +2640588 +2640589 +2640590 +2640591 +2640592 +2640593 +2640594 +2640595 +2640596 +2640597 +2640598 +2640599 +2640600 +2640601 +2640602 +2640603 +2640604 +2640605 +2640606 +2640607 +2640608 +2640609 +2640610 +2640611 +2640612 +2640613 +2640614 +2640615 +2640616 +2640617 +2640618 +2640619 +2640620 +2640621 +2640622 +2640623 +2640624 +2640625 +2640626 +2640627 +2640628 +2640629 +2640630 +2640631 +2640632 +2640633 +2640634 +2640635 +2640636 +2640637 +2640638 +2640639 +2640640 +2640641 +2640642 +2640643 +2640644 +2640645 +2640646 +2640647 +2640648 +2640649 +2640650 +2640651 +2640652 +2640653 +2640654 +2640655 +2640656 +2640657 +2640658 +2640659 +2640660 +2640661 +2640662 +2640663 +2640664 +2640665 +2640666 +2640667 +2640668 +2640669 +2640670 +2640671 +2640672 +2640673 +2640674 +2640675 +2640676 +2640677 +2640678 +2640679 +2640680 +2640681 +2640682 +2640683 +2640684 +2640685 +2640686 +2640687 +2640688 +2640689 +2640690 +2640691 +2640692 +2640693 +2640694 +2640695 +2640696 +2640697 +2640698 +2640699 +2640700 +2640701 +2640702 +2640703 +2640704 +2640705 +2640706 +2640707 +2640708 +2640709 +2640710 +2640711 +2640712 +2640713 +2640714 +2640715 +2640716 +2640717 +2640718 +2640719 +2640720 +2640721 +2640722 +2640723 +2640724 +2640725 +2640726 +2640727 +2640728 +2640729 +2640730 +2640731 +2640732 +2640733 +2640734 +2640735 +2640736 +2640737 +2640738 +2640739 +2640740 +2640741 +2640742 +2640743 +2640744 +2640745 +2640746 +2640747 +2640748 +2640749 +2640750 +2640751 +2640752 +2640753 +2640754 +2640755 +2640756 +2640757 +2640758 +2640759 +2640760 +2640761 +2640762 +2640763 +2640765 +2640767 +2640768 +2640769 +2640770 +2640771 +2640772 +2640773 +2640774 +2640775 +2640776 +2640781 +2640782 +2644517 +2644518 +2644519 +2644520 +2644521 +2644522 +2644523 +2644524 +2644525 +2644526 +2644527 +2644529 +2644530 +2644531 +2644532 +2644533 +2644534 +2644535 +2644536 +2644537 +2644538 +2644539 +2644540 +2644541 +2644542 +2644543 +2644544 +2644545 +2644546 +2644547 +2644548 +2644549 +2644550 +2644551 +2644552 +2644553 +2644554 +2644555 +2644556 +2644557 +2644558 +2644561 +2644562 +2644563 +2644564 +2644565 +2644566 +2644567 +2644568 +2644569 +2644570 +2644571 +2644572 +2644573 +2644574 +2644575 +2644576 +2644577 +2644578 +2644579 +2644580 +2644581 +2644582 +2644583 +2644584 +2644585 +2644586 +2644587 +2644588 +2644589 +2644590 +2644591 +2644592 +2644593 +2644594 +2644595 +2644596 +2644597 +2644598 +2644599 +2644600 +2644601 +2644602 +2644603 +2644604 +2644605 +2644606 +2644607 +2644608 +2644609 +2644610 +2644611 +2644612 +2644613 +2644614 +2644615 +2644616 +2644617 +2644618 +2644619 +2644620 +2644621 +2644622 +2644623 +2644624 +2644625 +2644626 +2644627 +2644628 +2644629 +2644630 +2644631 +2644632 +2644633 +2644634 +2644635 +2644636 +2644637 +2644638 +2644639 +2644640 +2644641 +2644642 +2644643 +2644644 +2644645 +2644646 +2644647 +2644648 +2644649 +2644650 +2644651 +2644652 +2644653 +2644654 +2644655 +2644656 +2644657 +2644658 +2644659 +2644660 +2644661 +2644662 +2644663 +2644664 +2644665 +2644666 +2644667 +2644668 +2644669 +2644670 +2644671 +2644672 +2644673 +2644674 +2644675 +2644676 +2644677 +2644678 +2644679 +2644680 +2644681 +2644682 +2644683 +2644684 +2644685 +2644686 +2644687 +2644688 +2644689 +2644690 +2644691 +2644692 +2644693 +2644694 +2644695 +2644696 +2644697 +2644698 +2644699 +2644700 +2644701 +2644702 +2644703 +2644704 +2644705 +2644706 +2644707 +2644708 +2644709 +2644710 +2644711 +2644712 +2644713 +2644714 +2644715 +2644716 +2644717 +2644718 +2644719 +2644720 +2644721 +2644722 +2644723 +2644724 +2644725 +2644726 +2644727 +2644728 +2644729 +2644730 +2644731 +2644732 +2644733 +2644734 +2644735 +2644736 +2644737 +2644738 +2644739 +2644740 +2644741 +2644742 +2644743 +2644744 +2644745 +2644746 +2644747 +2644748 +2644749 +2644750 +2644751 +2644752 +2644753 +2644754 +2644755 +2644756 +2644757 +2644758 +2644759 +2644760 +2644761 +2644762 +2644763 +2644764 +2644765 +2644766 +2644767 +2644768 +2644769 +2644770 +2644771 +2644772 +2644773 +2644774 +2644775 +2644776 +2644777 +2644778 +2644779 +2644780 +2644781 +2644782 +2644783 +2644784 +2644785 +2644786 +2644787 +2644788 +2644789 +2644790 +2644791 +2644792 +2644793 +2644794 +2644795 +2644796 +2644797 +2644798 +2644799 +2644800 +2644801 +2644802 +2644803 +2644804 +2644805 +2644806 +2644807 +2644808 +2644809 +2644810 +2644811 +2644812 +2644813 +2644814 +2644815 +2644816 +2644817 +2644818 +2644819 +2644820 +2644821 +2644822 +2644823 +2644824 +2644825 +2644826 +2644827 +2644828 +2644829 +2644830 +2644831 +2644832 +2644833 +2644834 +2644835 +2644836 +2644837 +2644838 +2644839 +2644840 +2644841 +2644842 +2644843 +2644844 +2644845 +2644846 +2644847 +2644848 +2644849 +2644850 +2644851 +2644852 +2644853 +2644854 +2644855 +2644856 +2644857 +2644858 +2644859 +2644860 +2644861 +2644862 +2644863 +2644864 +2644865 +2644866 +2644867 +2644868 +2644869 +2644870 +2644871 +2644872 +2644873 +2644874 +2644875 +2644876 +2644877 +2644878 +2644879 +2644880 +2644881 +2644882 +2644883 +2644884 +2644885 +2644886 +2644887 +2644888 +2644889 +2644890 +2644891 +2644892 +2644893 +2644894 +2644895 +2644896 +2644897 +2644898 +2644899 +2644900 +2644901 +2644902 +2644903 +2644904 +2644905 +2644906 +2644907 +2644908 +2644909 +2644910 +2644911 +2644912 +2644913 +2644914 +2644915 +2644916 +2644917 +2644918 +2644919 +2644920 +2644921 +2644922 +2644923 +2644924 +2644925 +2644926 +2644927 +2644928 +2644929 +2644930 +2644931 +2644932 +2644933 +2644934 +2644935 +2644936 +2644937 +2644938 +2644939 +2644940 +2644941 +2644942 +2644943 +2644944 +2644945 +2644946 +2644947 +2644948 +2644949 +2644950 +2644951 +2644952 +2644953 +2644954 +2644955 +2644956 +2644957 +2644958 +2644959 +2644960 +2644961 +2644962 +2644963 +2644964 +2644965 +2644966 +2644967 +2644968 +2644969 +2644970 +2644971 +2644972 +2644973 +2644974 +2644975 +2644976 +2644977 +2644978 +2644979 +2644980 +2644981 +2644982 +2644983 +2644984 +2644985 +2644986 +2644987 +2644988 +2644989 +2644990 +2644991 +2644992 +2644993 +2644994 +2644995 +2644996 +2644997 +2644998 +2644999 +2645000 +2645001 +2645002 +2645003 +2645004 +2645005 +2645006 +2645007 +2645008 +2645009 +2645010 +2645011 +2645012 +2645013 +2645014 +2645015 +2645016 +2645017 +2645018 +2645019 +2645020 +2645021 +2645022 +2645023 +2645024 +2645025 +2645026 +2645027 +2645028 +2645029 +2645030 +2645031 +2645032 +2645033 +2645034 +2645035 +2645036 +2645037 +2645038 +2645039 +2645040 +2645041 +2645042 +2645043 +2645044 +2645045 +2645046 +2645047 +2645048 +2645049 +2645050 +2645051 +2645052 +2645053 +2645054 +2645055 +2645056 +2645057 +2645058 +2645059 +2645060 +2645061 +2645062 +2645063 +2645064 +2645065 +2645066 +2645067 +2645068 +2645069 +2645070 +2645071 +2645072 +2645073 +2645074 +2645075 +2645076 +2645077 +2645078 +2645079 +2645080 +2645081 +2645082 +2645084 +2645085 +2645086 +2645087 +2645088 +2645089 +2645090 +2645091 +2645092 +2645093 +2645094 +2645095 +2645096 +2645097 +2645101 +2645102 +2648837 +2648838 +2648839 +2648840 +2648841 +2648842 +2648843 +2648844 +2648845 +2648846 +2648847 +2648848 +2648849 +2648850 +2648851 +2648852 +2648853 +2648854 +2648855 +2648856 +2648857 +2648858 +2648859 +2648860 +2648861 +2648862 +2648863 +2648864 +2648865 +2648866 +2648867 +2648868 +2648869 +2648870 +2648871 +2648872 +2648873 +2648874 +2648875 +2648876 +2648877 +2648878 +2648879 +2648880 +2648881 +2648882 +2648883 +2648884 +2648885 +2648886 +2648887 +2648888 +2648889 +2648890 +2648891 +2648892 +2648893 +2648894 +2648895 +2648896 +2648897 +2648898 +2648899 +2648900 +2648901 +2648902 +2648903 +2648904 +2648905 +2648906 +2648907 +2648908 +2648909 +2648910 +2648911 +2648912 +2648913 +2648914 +2648915 +2648916 +2648917 +2648918 +2648919 +2648920 +2648921 +2648922 +2648923 +2648924 +2648925 +2648926 +2648927 +2648928 +2648929 +2648930 +2648931 +2648932 +2648933 +2648934 +2648935 +2648936 +2648937 +2648938 +2648939 +2648940 +2648941 +2648942 +2648943 +2648944 +2648945 +2648946 +2648947 +2648948 +2648949 +2648950 +2648951 +2648952 +2648953 +2648954 +2648955 +2648956 +2648957 +2648958 +2648959 +2648960 +2648961 +2648962 +2648963 +2648964 +2648965 +2648966 +2648967 +2648968 +2648969 +2648970 +2648971 +2648972 +2648973 +2648974 +2648975 +2648976 +2648977 +2648978 +2648979 +2648980 +2648981 +2648982 +2648983 +2648984 +2648985 +2648986 +2648987 +2648988 +2648989 +2648990 +2648991 +2648992 +2648993 +2648994 +2648995 +2648996 +2648997 +2648998 +2648999 +2649000 +2649001 +2649002 +2649003 +2649004 +2649005 +2649006 +2649007 +2649008 +2649009 +2649010 +2649011 +2649012 +2649013 +2649014 +2649015 +2649016 +2649017 +2649018 +2649019 +2649020 +2649021 +2649022 +2649023 +2649024 +2649025 +2649026 +2649027 +2649028 +2649029 +2649030 +2649031 +2649032 +2649033 +2649034 +2649035 +2649036 +2649037 +2649038 +2649039 +2649040 +2649041 +2649042 +2649043 +2649044 +2649045 +2649046 +2649047 +2649048 +2649049 +2649050 +2649051 +2649052 +2649053 +2649054 +2649055 +2649056 +2649057 +2649058 +2649059 +2649060 +2649061 +2649062 +2649063 +2649064 +2649065 +2649066 +2649067 +2649068 +2649069 +2649070 +2649071 +2649072 +2649073 +2649074 +2649075 +2649076 +2649077 +2649078 +2649079 +2649080 +2649081 +2649082 +2649083 +2649084 +2649085 +2649086 +2649087 +2649088 +2649089 +2649090 +2649091 +2649092 +2649093 +2649094 +2649095 +2649096 +2649097 +2649098 +2649099 +2649100 +2649101 +2649102 +2649103 +2649104 +2649105 +2649106 +2649107 +2649108 +2649109 +2649110 +2649111 +2649112 +2649113 +2649114 +2649115 +2649116 +2649117 +2649118 +2649119 +2649120 +2649121 +2649122 +2649123 +2649124 +2649125 +2649126 +2649127 +2649128 +2649129 +2649130 +2649131 +2649132 +2649133 +2649134 +2649135 +2649136 +2649137 +2649138 +2649139 +2649140 +2649141 +2649142 +2649143 +2649144 +2649145 +2649146 +2649147 +2649148 +2649149 +2649150 +2649151 +2649152 +2649153 +2649154 +2649155 +2649156 +2649157 +2649158 +2649159 +2649160 +2649161 +2649162 +2649163 +2649164 +2649165 +2649166 +2649167 +2649168 +2649169 +2649170 +2649171 +2649172 +2649173 +2649174 +2649175 +2649176 +2649177 +2649178 +2649179 +2649180 +2649181 +2649182 +2649183 +2649184 +2649185 +2649186 +2649187 +2649188 +2649189 +2649190 +2649191 +2649192 +2649193 +2649194 +2649195 +2649196 +2649197 +2649198 +2649199 +2649200 +2649201 +2649202 +2649203 +2649204 +2649205 +2649206 +2649207 +2649208 +2649209 +2649210 +2649211 +2649212 +2649213 +2649214 +2649215 +2649216 +2649217 +2649218 +2649219 +2649220 +2649221 +2649222 +2649223 +2649224 +2649225 +2649226 +2649227 +2649228 +2649229 +2649230 +2649231 +2649232 +2649233 +2649234 +2649235 +2649236 +2649237 +2649238 +2649239 +2649240 +2649241 +2649242 +2649243 +2649244 +2649245 +2649246 +2649247 +2649248 +2649249 +2649250 +2649251 +2649252 +2649253 +2649254 +2649255 +2649256 +2649257 +2649258 +2649259 +2649260 +2649261 +2649262 +2649263 +2649264 +2649265 +2649266 +2649267 +2649268 +2649269 +2649270 +2649271 +2649272 +2649273 +2649274 +2649275 +2649276 +2649277 +2649278 +2649279 +2649280 +2649281 +2649282 +2649283 +2649284 +2649285 +2649286 +2649287 +2649288 +2649289 +2649290 +2649291 +2649292 +2649293 +2649294 +2649295 +2649296 +2649297 +2649298 +2649299 +2649300 +2649301 +2649302 +2649303 +2649304 +2649305 +2649306 +2649307 +2649308 +2649309 +2649310 +2649311 +2649312 +2649313 +2649314 +2649315 +2649316 +2649317 +2649318 +2649319 +2649320 +2649321 +2649322 +2649323 +2649324 +2649325 +2649326 +2649327 +2649328 +2649329 +2649330 +2649331 +2649332 +2649333 +2649334 +2649335 +2649336 +2649337 +2649338 +2649339 +2649340 +2649341 +2649342 +2649343 +2649344 +2649345 +2649346 +2649347 +2649348 +2649349 +2649350 +2649351 +2649352 +2649353 +2649354 +2649355 +2649356 +2649357 +2649358 +2649359 +2649360 +2649361 +2649362 +2649363 +2649364 +2649365 +2649366 +2649367 +2649368 +2649369 +2649370 +2649371 +2649372 +2649373 +2649374 +2649375 +2649376 +2649377 +2649378 +2649379 +2649380 +2649381 +2649382 +2649383 +2649384 +2649385 +2649386 +2649387 +2649388 +2649389 +2649390 +2649391 +2649392 +2649393 +2649394 +2649395 +2649396 +2649397 +2649398 +2649399 +2649400 +2649401 +2649402 +2649404 +2649407 +2649408 +2649409 +2649410 +2649411 +2649412 +2649413 +2649414 +2649415 +2649416 +2649417 +2649418 +2653160 +2653161 +2653162 +2653163 +2653164 +2653165 +2653166 +2653167 +2653168 +2653169 +2653170 +2653171 +2653172 +2653173 +2653174 +2653175 +2653176 +2653177 +2653178 +2653179 +2653180 +2653181 +2653182 +2653183 +2653184 +2653185 +2653186 +2653187 +2653188 +2653189 +2653190 +2653191 +2653192 +2653193 +2653194 +2653195 +2653196 +2653197 +2653198 +2653199 +2653200 +2653201 +2653202 +2653203 +2653204 +2653205 +2653206 +2653207 +2653208 +2653209 +2653210 +2653211 +2653212 +2653213 +2653214 +2653216 +2653217 +2653218 +2653219 +2653220 +2653221 +2653222 +2653223 +2653224 +2653225 +2653226 +2653227 +2653228 +2653229 +2653230 +2653231 +2653232 +2653233 +2653234 +2653235 +2653236 +2653237 +2653238 +2653239 +2653240 +2653241 +2653242 +2653243 +2653244 +2653245 +2653246 +2653247 +2653248 +2653249 +2653250 +2653251 +2653252 +2653253 +2653254 +2653255 +2653256 +2653257 +2653258 +2653259 +2653260 +2653261 +2653262 +2653263 +2653264 +2653265 +2653266 +2653267 +2653268 +2653269 +2653270 +2653271 +2653272 +2653273 +2653274 +2653275 +2653276 +2653277 +2653278 +2653279 +2653280 +2653281 +2653282 +2653283 +2653284 +2653285 +2653286 +2653287 +2653288 +2653289 +2653290 +2653291 +2653292 +2653293 +2653294 +2653295 +2653296 +2653297 +2653298 +2653299 +2653300 +2653301 +2653302 +2653303 +2653304 +2653305 +2653306 +2653307 +2653308 +2653309 +2653310 +2653311 +2653312 +2653313 +2653314 +2653315 +2653316 +2653317 +2653318 +2653319 +2653320 +2653321 +2653322 +2653323 +2653324 +2653325 +2653326 +2653327 +2653328 +2653329 +2653330 +2653331 +2653332 +2653333 +2653334 +2653335 +2653336 +2653337 +2653338 +2653339 +2653340 +2653341 +2653342 +2653343 +2653344 +2653345 +2653346 +2653347 +2653348 +2653349 +2653350 +2653351 +2653352 +2653353 +2653354 +2653355 +2653356 +2653357 +2653358 +2653359 +2653360 +2653361 +2653362 +2653363 +2653364 +2653365 +2653366 +2653367 +2653368 +2653369 +2653370 +2653371 +2653372 +2653373 +2653374 +2653375 +2653376 +2653377 +2653378 +2653379 +2653380 +2653381 +2653382 +2653383 +2653384 +2653385 +2653386 +2653387 +2653388 +2653389 +2653390 +2653391 +2653392 +2653393 +2653394 +2653395 +2653396 +2653397 +2653398 +2653399 +2653400 +2653401 +2653402 +2653403 +2653404 +2653405 +2653406 +2653407 +2653408 +2653409 +2653410 +2653411 +2653412 +2653413 +2653414 +2653415 +2653416 +2653417 +2653418 +2653419 +2653420 +2653421 +2653422 +2653423 +2653424 +2653425 +2653426 +2653427 +2653428 +2653429 +2653430 +2653431 +2653432 +2653433 +2653434 +2653435 +2653436 +2653437 +2653438 +2653439 +2653440 +2653441 +2653442 +2653443 +2653444 +2653445 +2653446 +2653447 +2653448 +2653449 +2653450 +2653451 +2653452 +2653453 +2653454 +2653455 +2653456 +2653457 +2653458 +2653459 +2653460 +2653461 +2653462 +2653463 +2653464 +2653465 +2653466 +2653467 +2653468 +2653469 +2653470 +2653471 +2653472 +2653473 +2653474 +2653475 +2653476 +2653477 +2653478 +2653479 +2653480 +2653481 +2653482 +2653483 +2653484 +2653485 +2653486 +2653487 +2653488 +2653489 +2653490 +2653491 +2653492 +2653493 +2653494 +2653495 +2653496 +2653497 +2653498 +2653499 +2653500 +2653501 +2653502 +2653503 +2653504 +2653505 +2653506 +2653507 +2653508 +2653509 +2653510 +2653511 +2653512 +2653513 +2653514 +2653515 +2653516 +2653517 +2653518 +2653519 +2653520 +2653521 +2653522 +2653523 +2653524 +2653525 +2653526 +2653527 +2653528 +2653529 +2653530 +2653531 +2653532 +2653533 +2653534 +2653535 +2653536 +2653537 +2653538 +2653539 +2653540 +2653541 +2653542 +2653543 +2653544 +2653545 +2653546 +2653547 +2653548 +2653549 +2653550 +2653551 +2653552 +2653553 +2653554 +2653555 +2653556 +2653557 +2653558 +2653559 +2653560 +2653561 +2653562 +2653563 +2653564 +2653565 +2653566 +2653567 +2653568 +2653569 +2653570 +2653571 +2653572 +2653573 +2653574 +2653575 +2653576 +2653577 +2653578 +2653579 +2653580 +2653581 +2653582 +2653583 +2653584 +2653585 +2653586 +2653587 +2653588 +2653589 +2653590 +2653591 +2653592 +2653593 +2653594 +2653595 +2653596 +2653597 +2653598 +2653599 +2653600 +2653601 +2653602 +2653603 +2653604 +2653605 +2653606 +2653607 +2653608 +2653609 +2653610 +2653611 +2653612 +2653613 +2653614 +2653615 +2653616 +2653617 +2653618 +2653619 +2653620 +2653621 +2653622 +2653623 +2653624 +2653625 +2653626 +2653627 +2653628 +2653629 +2653630 +2653631 +2653632 +2653633 +2653634 +2653635 +2653636 +2653637 +2653638 +2653639 +2653640 +2653641 +2653642 +2653643 +2653644 +2653645 +2653646 +2653647 +2653648 +2653649 +2653650 +2653651 +2653652 +2653653 +2653654 +2653655 +2653656 +2653657 +2653658 +2653659 +2653660 +2653661 +2653662 +2653663 +2653664 +2653665 +2653666 +2653667 +2653668 +2653669 +2653670 +2653671 +2653672 +2653673 +2653674 +2653675 +2653676 +2653677 +2653678 +2653679 +2653680 +2653681 +2653682 +2653683 +2653684 +2653685 +2653686 +2653687 +2653688 +2653689 +2653690 +2653691 +2653692 +2653693 +2653694 +2653695 +2653696 +2653697 +2653698 +2653699 +2653700 +2653701 +2653702 +2653703 +2653704 +2653705 +2653706 +2653707 +2653708 +2653709 +2653710 +2653711 +2653712 +2653713 +2653714 +2653715 +2653716 +2653717 +2653718 +2653719 +2653720 +2653721 +2653722 +2653724 +2653725 +2653726 +2653727 +2653728 +2653729 +2653730 +2653731 +2653732 +2653733 +2653734 +2653735 +2653736 +2653737 +2653738 +2653739 +2657480 +2657481 +2657482 +2657483 +2657484 +2657485 +2657486 +2657487 +2657488 +2657489 +2657490 +2657491 +2657492 +2657493 +2657494 +2657495 +2657496 +2657497 +2657498 +2657499 +2657500 +2657501 +2657502 +2657503 +2657504 +2657505 +2657506 +2657507 +2657508 +2657509 +2657510 +2657511 +2657512 +2657513 +2657514 +2657515 +2657516 +2657517 +2657518 +2657519 +2657520 +2657521 +2657522 +2657523 +2657524 +2657525 +2657526 +2657527 +2657528 +2657529 +2657530 +2657531 +2657532 +2657533 +2657534 +2657537 +2657538 +2657539 +2657540 +2657541 +2657542 +2657543 +2657544 +2657545 +2657546 +2657547 +2657548 +2657549 +2657550 +2657551 +2657552 +2657553 +2657554 +2657555 +2657556 +2657557 +2657558 +2657559 +2657560 +2657561 +2657562 +2657563 +2657564 +2657565 +2657566 +2657567 +2657568 +2657569 +2657570 +2657571 +2657572 +2657573 +2657574 +2657575 +2657576 +2657577 +2657578 +2657579 +2657580 +2657581 +2657582 +2657583 +2657584 +2657585 +2657586 +2657587 +2657588 +2657589 +2657590 +2657591 +2657592 +2657593 +2657594 +2657595 +2657596 +2657597 +2657598 +2657599 +2657600 +2657601 +2657602 +2657603 +2657604 +2657605 +2657606 +2657607 +2657608 +2657609 +2657610 +2657611 +2657612 +2657613 +2657614 +2657615 +2657616 +2657617 +2657618 +2657619 +2657620 +2657621 +2657622 +2657623 +2657624 +2657625 +2657626 +2657627 +2657628 +2657629 +2657630 +2657631 +2657632 +2657633 +2657634 +2657635 +2657636 +2657637 +2657638 +2657639 +2657640 +2657641 +2657642 +2657643 +2657644 +2657645 +2657646 +2657647 +2657648 +2657649 +2657650 +2657651 +2657652 +2657653 +2657654 +2657655 +2657656 +2657657 +2657658 +2657659 +2657660 +2657661 +2657662 +2657663 +2657664 +2657665 +2657666 +2657667 +2657668 +2657669 +2657670 +2657671 +2657672 +2657673 +2657674 +2657675 +2657676 +2657677 +2657678 +2657679 +2657680 +2657681 +2657682 +2657683 +2657684 +2657685 +2657686 +2657687 +2657688 +2657689 +2657690 +2657691 +2657692 +2657693 +2657694 +2657695 +2657696 +2657697 +2657698 +2657699 +2657700 +2657701 +2657702 +2657703 +2657704 +2657705 +2657706 +2657707 +2657708 +2657709 +2657710 +2657711 +2657712 +2657713 +2657714 +2657715 +2657716 +2657717 +2657718 +2657719 +2657720 +2657721 +2657722 +2657723 +2657724 +2657725 +2657726 +2657727 +2657728 +2657729 +2657730 +2657731 +2657732 +2657733 +2657734 +2657735 +2657736 +2657737 +2657738 +2657739 +2657740 +2657741 +2657742 +2657743 +2657744 +2657745 +2657746 +2657747 +2657748 +2657749 +2657750 +2657751 +2657752 +2657753 +2657754 +2657755 +2657756 +2657757 +2657758 +2657759 +2657760 +2657761 +2657762 +2657763 +2657764 +2657765 +2657766 +2657767 +2657768 +2657769 +2657770 +2657771 +2657772 +2657773 +2657774 +2657775 +2657776 +2657777 +2657778 +2657779 +2657780 +2657781 +2657782 +2657783 +2657784 +2657785 +2657786 +2657787 +2657788 +2657789 +2657790 +2657791 +2657792 +2657793 +2657794 +2657795 +2657796 +2657797 +2657798 +2657799 +2657800 +2657801 +2657802 +2657803 +2657804 +2657805 +2657806 +2657807 +2657808 +2657809 +2657810 +2657811 +2657812 +2657813 +2657814 +2657815 +2657816 +2657817 +2657818 +2657819 +2657820 +2657821 +2657822 +2657823 +2657824 +2657825 +2657826 +2657827 +2657828 +2657829 +2657830 +2657831 +2657832 +2657833 +2657834 +2657835 +2657836 +2657837 +2657838 +2657839 +2657840 +2657841 +2657842 +2657843 +2657844 +2657845 +2657846 +2657847 +2657848 +2657849 +2657850 +2657851 +2657852 +2657853 +2657854 +2657855 +2657856 +2657857 +2657858 +2657859 +2657860 +2657861 +2657862 +2657863 +2657864 +2657865 +2657866 +2657867 +2657868 +2657869 +2657870 +2657871 +2657872 +2657873 +2657874 +2657875 +2657876 +2657877 +2657878 +2657879 +2657880 +2657881 +2657882 +2657883 +2657884 +2657885 +2657886 +2657887 +2657888 +2657889 +2657890 +2657891 +2657892 +2657893 +2657894 +2657895 +2657896 +2657897 +2657898 +2657899 +2657900 +2657901 +2657902 +2657903 +2657904 +2657905 +2657906 +2657907 +2657908 +2657909 +2657910 +2657911 +2657912 +2657913 +2657914 +2657915 +2657916 +2657917 +2657918 +2657919 +2657920 +2657921 +2657922 +2657923 +2657924 +2657925 +2657926 +2657927 +2657928 +2657929 +2657930 +2657931 +2657932 +2657933 +2657934 +2657935 +2657936 +2657937 +2657938 +2657939 +2657940 +2657941 +2657942 +2657943 +2657944 +2657945 +2657946 +2657947 +2657948 +2657949 +2657950 +2657951 +2657952 +2657953 +2657954 +2657955 +2657956 +2657957 +2657958 +2657959 +2657960 +2657961 +2657962 +2657963 +2657964 +2657965 +2657966 +2657967 +2657968 +2657969 +2657970 +2657971 +2657972 +2657973 +2657974 +2657975 +2657976 +2657977 +2657978 +2657979 +2657980 +2657981 +2657982 +2657983 +2657984 +2657985 +2657986 +2657987 +2657988 +2657989 +2657990 +2657991 +2657992 +2657993 +2657994 +2657995 +2657996 +2657997 +2657998 +2657999 +2658000 +2658001 +2658002 +2658003 +2658004 +2658005 +2658006 +2658007 +2658008 +2658009 +2658010 +2658011 +2658012 +2658013 +2658014 +2658015 +2658016 +2658017 +2658018 +2658019 +2658020 +2658021 +2658022 +2658023 +2658024 +2658025 +2658026 +2658027 +2658028 +2658029 +2658030 +2658031 +2658032 +2658033 +2658034 +2658035 +2658036 +2658037 +2658038 +2658039 +2658040 +2658041 +2658042 +2658044 +2658046 +2658047 +2658048 +2658049 +2658050 +2658051 +2658052 +2658053 +2658054 +2658055 +2658056 +2658057 +2658058 +2658059 +2661800 +2661801 +2661802 +2661803 +2661804 +2661805 +2661806 +2661807 +2661808 +2661809 +2661810 +2661811 +2661812 +2661813 +2661814 +2661815 +2661816 +2661817 +2661818 +2661819 +2661820 +2661821 +2661822 +2661823 +2661824 +2661825 +2661826 +2661827 +2661828 +2661829 +2661830 +2661831 +2661832 +2661833 +2661834 +2661835 +2661836 +2661837 +2661838 +2661839 +2661840 +2661841 +2661842 +2661843 +2661844 +2661845 +2661846 +2661847 +2661848 +2661849 +2661850 +2661851 +2661852 +2661853 +2661854 +2661855 +2661857 +2661858 +2661859 +2661860 +2661861 +2661862 +2661863 +2661864 +2661865 +2661866 +2661867 +2661868 +2661869 +2661870 +2661871 +2661872 +2661873 +2661874 +2661875 +2661876 +2661877 +2661878 +2661879 +2661880 +2661881 +2661882 +2661883 +2661884 +2661885 +2661886 +2661887 +2661888 +2661889 +2661890 +2661891 +2661892 +2661893 +2661894 +2661895 +2661896 +2661897 +2661898 +2661899 +2661900 +2661901 +2661902 +2661903 +2661904 +2661905 +2661906 +2661907 +2661908 +2661909 +2661910 +2661911 +2661912 +2661913 +2661914 +2661915 +2661916 +2661917 +2661918 +2661919 +2661920 +2661921 +2661922 +2661923 +2661924 +2661925 +2661926 +2661927 +2661928 +2661929 +2661930 +2661931 +2661932 +2661933 +2661934 +2661935 +2661936 +2661937 +2661938 +2661939 +2661940 +2661941 +2661942 +2661943 +2661944 +2661945 +2661946 +2661947 +2661948 +2661949 +2661950 +2661951 +2661952 +2661953 +2661954 +2661955 +2661956 +2661957 +2661958 +2661959 +2661960 +2661961 +2661962 +2661963 +2661964 +2661965 +2661966 +2661967 +2661968 +2661969 +2661970 +2661971 +2661972 +2661973 +2661974 +2661975 +2661976 +2661977 +2661978 +2661979 +2661980 +2661981 +2661982 +2661983 +2661984 +2661985 +2661986 +2661987 +2661988 +2661989 +2661990 +2661991 +2661992 +2661993 +2661994 +2661995 +2661996 +2661997 +2661998 +2661999 +2662000 +2662001 +2662002 +2662003 +2662004 +2662005 +2662006 +2662007 +2662008 +2662009 +2662010 +2662011 +2662012 +2662013 +2662014 +2662015 +2662016 +2662017 +2662018 +2662019 +2662020 +2662021 +2662022 +2662023 +2662024 +2662025 +2662026 +2662027 +2662028 +2662029 +2662030 +2662031 +2662032 +2662033 +2662034 +2662035 +2662036 +2662037 +2662038 +2662039 +2662040 +2662041 +2662042 +2662043 +2662044 +2662045 +2662046 +2662047 +2662048 +2662049 +2662050 +2662051 +2662052 +2662053 +2662054 +2662055 +2662056 +2662057 +2662058 +2662059 +2662060 +2662061 +2662062 +2662063 +2662064 +2662065 +2662066 +2662067 +2662068 +2662069 +2662070 +2662071 +2662072 +2662073 +2662074 +2662075 +2662076 +2662077 +2662078 +2662079 +2662080 +2662081 +2662082 +2662083 +2662084 +2662085 +2662086 +2662087 +2662088 +2662089 +2662090 +2662091 +2662092 +2662093 +2662094 +2662095 +2662096 +2662097 +2662098 +2662099 +2662100 +2662101 +2662102 +2662103 +2662104 +2662105 +2662106 +2662107 +2662108 +2662109 +2662110 +2662111 +2662112 +2662113 +2662114 +2662115 +2662116 +2662117 +2662118 +2662119 +2662120 +2662121 +2662122 +2662123 +2662124 +2662125 +2662126 +2662127 +2662128 +2662129 +2662130 +2662131 +2662132 +2662133 +2662134 +2662135 +2662136 +2662137 +2662138 +2662139 +2662140 +2662141 +2662142 +2662143 +2662144 +2662145 +2662146 +2662147 +2662148 +2662149 +2662150 +2662151 +2662152 +2662153 +2662154 +2662155 +2662156 +2662157 +2662158 +2662159 +2662160 +2662161 +2662162 +2662163 +2662164 +2662165 +2662166 +2662167 +2662168 +2662169 +2662170 +2662171 +2662172 +2662173 +2662174 +2662175 +2662176 +2662177 +2662178 +2662179 +2662180 +2662181 +2662182 +2662183 +2662184 +2662185 +2662186 +2662187 +2662188 +2662189 +2662190 +2662191 +2662192 +2662193 +2662194 +2662195 +2662196 +2662197 +2662198 +2662199 +2662200 +2662201 +2662202 +2662203 +2662204 +2662205 +2662206 +2662207 +2662208 +2662209 +2662210 +2662211 +2662212 +2662213 +2662214 +2662215 +2662216 +2662217 +2662218 +2662219 +2662220 +2662221 +2662222 +2662223 +2662224 +2662225 +2662226 +2662227 +2662228 +2662229 +2662230 +2662231 +2662232 +2662233 +2662234 +2662235 +2662236 +2662237 +2662238 +2662239 +2662240 +2662241 +2662242 +2662243 +2662244 +2662245 +2662246 +2662247 +2662248 +2662249 +2662250 +2662251 +2662252 +2662253 +2662254 +2662255 +2662256 +2662257 +2662258 +2662259 +2662260 +2662261 +2662262 +2662263 +2662264 +2662265 +2662266 +2662267 +2662268 +2662269 +2662270 +2662271 +2662272 +2662273 +2662274 +2662275 +2662276 +2662277 +2662278 +2662279 +2662280 +2662281 +2662282 +2662283 +2662284 +2662285 +2662286 +2662287 +2662288 +2662289 +2662290 +2662291 +2662292 +2662293 +2662294 +2662295 +2662296 +2662297 +2662298 +2662299 +2662300 +2662301 +2662302 +2662303 +2662304 +2662305 +2662306 +2662307 +2662308 +2662309 +2662310 +2662311 +2662312 +2662313 +2662314 +2662315 +2662316 +2662317 +2662318 +2662319 +2662320 +2662321 +2662322 +2662323 +2662324 +2662325 +2662326 +2662327 +2662328 +2662329 +2662330 +2662331 +2662332 +2662333 +2662334 +2662335 +2662336 +2662337 +2662338 +2662339 +2662340 +2662341 +2662342 +2662343 +2662344 +2662345 +2662346 +2662347 +2662348 +2662349 +2662350 +2662351 +2662352 +2662353 +2662354 +2662355 +2662356 +2662357 +2662358 +2662359 +2662360 +2662361 +2662362 +2662365 +2662367 +2662368 +2662369 +2662370 +2662371 +2662372 +2662373 +2662374 +2662375 +2662376 +2662377 +2662378 +2662379 +2666123 +2666124 +2666125 +2666126 +2666127 +2666128 +2666129 +2666130 +2666131 +2666132 +2666133 +2666134 +2666135 +2666136 +2666137 +2666138 +2666139 +2666140 +2666141 +2666142 +2666143 +2666144 +2666145 +2666146 +2666147 +2666148 +2666149 +2666150 +2666151 +2666152 +2666153 +2666154 +2666155 +2666156 +2666157 +2666158 +2666159 +2666160 +2666161 +2666162 +2666163 +2666164 +2666165 +2666166 +2666167 +2666168 +2666169 +2666170 +2666171 +2666172 +2666173 +2666174 +2666175 +2666176 +2666177 +2666178 +2666179 +2666180 +2666181 +2666182 +2666183 +2666184 +2666185 +2666186 +2666187 +2666188 +2666189 +2666190 +2666191 +2666192 +2666193 +2666194 +2666195 +2666196 +2666197 +2666198 +2666199 +2666200 +2666201 +2666202 +2666203 +2666204 +2666205 +2666206 +2666207 +2666208 +2666209 +2666210 +2666211 +2666212 +2666213 +2666214 +2666215 +2666216 +2666217 +2666218 +2666219 +2666220 +2666221 +2666222 +2666223 +2666224 +2666225 +2666226 +2666227 +2666228 +2666229 +2666230 +2666231 +2666232 +2666233 +2666234 +2666235 +2666236 +2666237 +2666238 +2666239 +2666240 +2666241 +2666242 +2666243 +2666244 +2666245 +2666246 +2666247 +2666248 +2666249 +2666250 +2666251 +2666252 +2666253 +2666254 +2666255 +2666256 +2666257 +2666258 +2666259 +2666260 +2666261 +2666262 +2666263 +2666264 +2666265 +2666266 +2666267 +2666268 +2666269 +2666270 +2666271 +2666272 +2666273 +2666274 +2666275 +2666276 +2666277 +2666278 +2666279 +2666280 +2666281 +2666282 +2666283 +2666284 +2666285 +2666286 +2666287 +2666288 +2666289 +2666290 +2666291 +2666292 +2666293 +2666294 +2666295 +2666296 +2666297 +2666298 +2666299 +2666300 +2666301 +2666302 +2666303 +2666304 +2666305 +2666306 +2666307 +2666308 +2666309 +2666310 +2666311 +2666312 +2666313 +2666314 +2666315 +2666316 +2666317 +2666318 +2666319 +2666320 +2666321 +2666322 +2666323 +2666324 +2666325 +2666326 +2666327 +2666328 +2666329 +2666330 +2666331 +2666332 +2666333 +2666334 +2666335 +2666336 +2666337 +2666338 +2666339 +2666340 +2666341 +2666342 +2666343 +2666344 +2666345 +2666346 +2666347 +2666348 +2666349 +2666350 +2666351 +2666352 +2666353 +2666354 +2666355 +2666356 +2666357 +2666358 +2666359 +2666360 +2666361 +2666362 +2666363 +2666364 +2666365 +2666366 +2666367 +2666368 +2666369 +2666370 +2666371 +2666372 +2666373 +2666374 +2666375 +2666376 +2666377 +2666378 +2666379 +2666380 +2666381 +2666382 +2666383 +2666384 +2666385 +2666386 +2666387 +2666388 +2666389 +2666390 +2666391 +2666392 +2666393 +2666394 +2666395 +2666396 +2666397 +2666398 +2666399 +2666400 +2666401 +2666402 +2666403 +2666404 +2666405 +2666406 +2666407 +2666408 +2666409 +2666410 +2666411 +2666412 +2666413 +2666414 +2666415 +2666416 +2666417 +2666418 +2666419 +2666420 +2666421 +2666422 +2666423 +2666424 +2666425 +2666426 +2666427 +2666428 +2666429 +2666430 +2666431 +2666432 +2666433 +2666434 +2666435 +2666436 +2666437 +2666438 +2666439 +2666440 +2666441 +2666442 +2666443 +2666444 +2666445 +2666446 +2666447 +2666448 +2666449 +2666450 +2666451 +2666452 +2666453 +2666454 +2666455 +2666456 +2666457 +2666458 +2666459 +2666460 +2666461 +2666462 +2666463 +2666464 +2666465 +2666466 +2666467 +2666468 +2666469 +2666470 +2666471 +2666472 +2666473 +2666474 +2666475 +2666476 +2666477 +2666478 +2666479 +2666480 +2666481 +2666482 +2666483 +2666484 +2666485 +2666486 +2666487 +2666488 +2666489 +2666490 +2666491 +2666492 +2666493 +2666494 +2666495 +2666496 +2666497 +2666498 +2666499 +2666500 +2666501 +2666502 +2666503 +2666504 +2666505 +2666506 +2666507 +2666508 +2666509 +2666510 +2666511 +2666512 +2666513 +2666514 +2666515 +2666516 +2666517 +2666518 +2666519 +2666520 +2666521 +2666522 +2666523 +2666524 +2666525 +2666526 +2666527 +2666528 +2666529 +2666530 +2666531 +2666532 +2666533 +2666534 +2666535 +2666536 +2666537 +2666538 +2666539 +2666540 +2666541 +2666542 +2666543 +2666544 +2666545 +2666546 +2666547 +2666548 +2666549 +2666550 +2666551 +2666552 +2666553 +2666554 +2666555 +2666556 +2666557 +2666558 +2666559 +2666560 +2666561 +2666562 +2666563 +2666564 +2666565 +2666566 +2666567 +2666568 +2666569 +2666570 +2666571 +2666572 +2666573 +2666574 +2666575 +2666576 +2666577 +2666578 +2666579 +2666580 +2666581 +2666582 +2666583 +2666584 +2666585 +2666586 +2666587 +2666588 +2666589 +2666590 +2666591 +2666592 +2666593 +2666594 +2666595 +2666596 +2666597 +2666598 +2666599 +2666600 +2666601 +2666602 +2666603 +2666604 +2666605 +2666606 +2666607 +2666608 +2666609 +2666610 +2666611 +2666612 +2666613 +2666614 +2666615 +2666616 +2666617 +2666618 +2666619 +2666620 +2666621 +2666622 +2666623 +2666624 +2666625 +2666626 +2666627 +2666628 +2666629 +2666630 +2666631 +2666632 +2666633 +2666634 +2666635 +2666636 +2666637 +2666638 +2666639 +2666640 +2666641 +2666642 +2666643 +2666644 +2666645 +2666646 +2666647 +2666648 +2666649 +2666650 +2666651 +2666652 +2666653 +2666654 +2666655 +2666656 +2666657 +2666658 +2666659 +2666660 +2666661 +2666662 +2666663 +2666664 +2666665 +2666666 +2666667 +2666668 +2666669 +2666670 +2666671 +2666672 +2666673 +2666674 +2666675 +2666676 +2666677 +2666678 +2666679 +2666680 +2666681 +2666682 +2666685 +2666686 +2666687 +2666688 +2666689 +2666690 +2666691 +2666692 +2666693 +2666694 +2666695 +2666696 +2666697 +2666698 +2666699 +2670443 +2670444 +2670445 +2670446 +2670447 +2670448 +2670449 +2670450 +2670451 +2670452 +2670453 +2670454 +2670455 +2670456 +2670457 +2670458 +2670459 +2670460 +2670461 +2670462 +2670463 +2670464 +2670465 +2670466 +2670467 +2670468 +2670469 +2670470 +2670471 +2670472 +2670473 +2670474 +2670475 +2670476 +2670477 +2670478 +2670479 +2670480 +2670481 +2670482 +2670483 +2670484 +2670485 +2670486 +2670487 +2670488 +2670489 +2670490 +2670491 +2670492 +2670493 +2670494 +2670495 +2670496 +2670497 +2670498 +2670499 +2670500 +2670501 +2670502 +2670503 +2670504 +2670505 +2670506 +2670507 +2670508 +2670509 +2670510 +2670511 +2670512 +2670513 +2670514 +2670515 +2670516 +2670517 +2670518 +2670519 +2670520 +2670521 +2670522 +2670523 +2670524 +2670525 +2670526 +2670527 +2670528 +2670529 +2670530 +2670531 +2670532 +2670533 +2670534 +2670535 +2670536 +2670537 +2670538 +2670539 +2670540 +2670541 +2670542 +2670543 +2670544 +2670545 +2670546 +2670547 +2670548 +2670549 +2670550 +2670551 +2670552 +2670553 +2670554 +2670555 +2670556 +2670557 +2670558 +2670559 +2670560 +2670561 +2670562 +2670563 +2670564 +2670565 +2670566 +2670567 +2670568 +2670569 +2670570 +2670571 +2670572 +2670573 +2670574 +2670575 +2670576 +2670577 +2670578 +2670579 +2670580 +2670581 +2670582 +2670583 +2670584 +2670585 +2670586 +2670587 +2670588 +2670589 +2670590 +2670591 +2670592 +2670593 +2670594 +2670595 +2670596 +2670597 +2670598 +2670599 +2670600 +2670601 +2670602 +2670603 +2670604 +2670605 +2670606 +2670607 +2670608 +2670609 +2670610 +2670611 +2670612 +2670613 +2670614 +2670615 +2670616 +2670617 +2670618 +2670619 +2670620 +2670621 +2670622 +2670623 +2670624 +2670625 +2670626 +2670627 +2670628 +2670629 +2670630 +2670631 +2670632 +2670633 +2670634 +2670635 +2670636 +2670637 +2670638 +2670639 +2670640 +2670641 +2670642 +2670643 +2670644 +2670645 +2670646 +2670647 +2670648 +2670649 +2670650 +2670651 +2670652 +2670653 +2670654 +2670655 +2670656 +2670657 +2670658 +2670659 +2670660 +2670661 +2670662 +2670663 +2670664 +2670665 +2670666 +2670667 +2670668 +2670669 +2670670 +2670671 +2670672 +2670673 +2670674 +2670675 +2670676 +2670677 +2670678 +2670679 +2670680 +2670681 +2670682 +2670683 +2670684 +2670685 +2670686 +2670687 +2670688 +2670689 +2670690 +2670691 +2670692 +2670693 +2670694 +2670695 +2670696 +2670697 +2670698 +2670699 +2670700 +2670701 +2670702 +2670703 +2670704 +2670705 +2670706 +2670707 +2670708 +2670709 +2670710 +2670711 +2670712 +2670713 +2670714 +2670715 +2670716 +2670717 +2670718 +2670719 +2670720 +2670721 +2670722 +2670723 +2670724 +2670725 +2670726 +2670727 +2670728 +2670729 +2670730 +2670731 +2670732 +2670733 +2670734 +2670735 +2670736 +2670737 +2670738 +2670739 +2670740 +2670741 +2670742 +2670743 +2670744 +2670745 +2670746 +2670747 +2670748 +2670749 +2670750 +2670751 +2670752 +2670753 +2670754 +2670755 +2670756 +2670757 +2670758 +2670759 +2670760 +2670761 +2670762 +2670763 +2670764 +2670765 +2670766 +2670767 +2670768 +2670769 +2670770 +2670771 +2670772 +2670773 +2670774 +2670775 +2670776 +2670777 +2670778 +2670779 +2670780 +2670781 +2670782 +2670783 +2670784 +2670785 +2670786 +2670787 +2670788 +2670789 +2670790 +2670791 +2670792 +2670793 +2670794 +2670795 +2670796 +2670797 +2670798 +2670799 +2670800 +2670801 +2670802 +2670803 +2670804 +2670805 +2670806 +2670807 +2670808 +2670809 +2670810 +2670811 +2670812 +2670813 +2670814 +2670815 +2670816 +2670817 +2670818 +2670819 +2670820 +2670821 +2670822 +2670823 +2670824 +2670825 +2670826 +2670827 +2670828 +2670829 +2670830 +2670831 +2670832 +2670833 +2670834 +2670835 +2670836 +2670837 +2670838 +2670839 +2670840 +2670841 +2670842 +2670843 +2670844 +2670845 +2670846 +2670847 +2670848 +2670849 +2670850 +2670851 +2670852 +2670853 +2670854 +2670855 +2670856 +2670857 +2670858 +2670859 +2670860 +2670861 +2670862 +2670863 +2670864 +2670865 +2670866 +2670867 +2670868 +2670869 +2670870 +2670871 +2670872 +2670873 +2670874 +2670875 +2670876 +2670877 +2670878 +2670879 +2670880 +2670881 +2670882 +2670883 +2670884 +2670885 +2670886 +2670887 +2670888 +2670889 +2670890 +2670891 +2670892 +2670893 +2670894 +2670895 +2670896 +2670897 +2670898 +2670899 +2670900 +2670901 +2670902 +2670903 +2670904 +2670905 +2670906 +2670907 +2670908 +2670909 +2670910 +2670911 +2670912 +2670913 +2670914 +2670915 +2670916 +2670917 +2670918 +2670919 +2670920 +2670921 +2670922 +2670923 +2670924 +2670925 +2670926 +2670927 +2670928 +2670929 +2670930 +2670931 +2670932 +2670933 +2670934 +2670935 +2670936 +2670937 +2670938 +2670939 +2670940 +2670941 +2670942 +2670943 +2670944 +2670945 +2670946 +2670947 +2670948 +2670949 +2670950 +2670951 +2670952 +2670953 +2670954 +2670955 +2670956 +2670957 +2670958 +2670959 +2670960 +2670961 +2670962 +2670963 +2670964 +2670965 +2670966 +2670967 +2670968 +2670969 +2670970 +2670971 +2670972 +2670973 +2670974 +2670975 +2670976 +2670977 +2670978 +2670979 +2670980 +2670981 +2670982 +2670983 +2670984 +2670985 +2670986 +2670987 +2670988 +2670989 +2670990 +2670991 +2670992 +2670993 +2670994 +2670995 +2670996 +2670997 +2670998 +2670999 +2671000 +2671001 +2671002 +2671003 +2671005 +2671006 +2671007 +2671008 +2671009 +2671010 +2671011 +2671012 +2671013 +2671014 +2671015 +2671016 +2671017 +2671018 +2671019 +2674763 +2674764 +2674765 +2674766 +2674767 +2674768 +2674769 +2674770 +2674771 +2674772 +2674773 +2674774 +2674775 +2674776 +2674777 +2674778 +2674779 +2674780 +2674781 +2674782 +2674783 +2674784 +2674785 +2674786 +2674787 +2674788 +2674789 +2674790 +2674791 +2674792 +2674793 +2674794 +2674795 +2674796 +2674797 +2674798 +2674799 +2674800 +2674801 +2674802 +2674803 +2674804 +2674805 +2674806 +2674807 +2674808 +2674809 +2674810 +2674811 +2674812 +2674813 +2674814 +2674815 +2674816 +2674817 +2674818 +2674819 +2674820 +2674821 +2674822 +2674823 +2674824 +2674825 +2674826 +2674827 +2674828 +2674829 +2674830 +2674831 +2674832 +2674833 +2674834 +2674835 +2674836 +2674837 +2674838 +2674839 +2674840 +2674841 +2674842 +2674843 +2674844 +2674845 +2674846 +2674847 +2674848 +2674849 +2674850 +2674851 +2674852 +2674853 +2674854 +2674855 +2674856 +2674857 +2674858 +2674859 +2674860 +2674861 +2674862 +2674863 +2674864 +2674865 +2674866 +2674867 +2674868 +2674869 +2674870 +2674871 +2674872 +2674873 +2674874 +2674875 +2674876 +2674877 +2674878 +2674879 +2674880 +2674881 +2674882 +2674883 +2674884 +2674885 +2674886 +2674887 +2674888 +2674889 +2674890 +2674891 +2674892 +2674893 +2674894 +2674895 +2674896 +2674897 +2674898 +2674899 +2674900 +2674901 +2674902 +2674903 +2674904 +2674905 +2674906 +2674907 +2674908 +2674909 +2674910 +2674911 +2674912 +2674913 +2674914 +2674915 +2674916 +2674917 +2674918 +2674919 +2674920 +2674921 +2674922 +2674923 +2674924 +2674925 +2674926 +2674927 +2674928 +2674929 +2674930 +2674931 +2674932 +2674933 +2674934 +2674935 +2674936 +2674937 +2674938 +2674939 +2674940 +2674941 +2674942 +2674943 +2674944 +2674945 +2674946 +2674947 +2674948 +2674949 +2674950 +2674951 +2674952 +2674953 +2674954 +2674955 +2674956 +2674957 +2674958 +2674959 +2674960 +2674961 +2674962 +2674963 +2674964 +2674965 +2674966 +2674967 +2674968 +2674969 +2674970 +2674971 +2674972 +2674973 +2674974 +2674975 +2674976 +2674977 +2674978 +2674979 +2674980 +2674981 +2674982 +2674983 +2674984 +2674985 +2674986 +2674987 +2674988 +2674989 +2674990 +2674991 +2674992 +2674993 +2674994 +2674995 +2674996 +2674997 +2674998 +2674999 +2675000 +2675001 +2675002 +2675003 +2675004 +2675005 +2675006 +2675007 +2675008 +2675009 +2675010 +2675011 +2675012 +2675013 +2675014 +2675015 +2675016 +2675017 +2675018 +2675019 +2675020 +2675021 +2675022 +2675023 +2675024 +2675025 +2675026 +2675027 +2675028 +2675029 +2675030 +2675031 +2675032 +2675033 +2675034 +2675035 +2675036 +2675037 +2675038 +2675039 +2675040 +2675041 +2675042 +2675043 +2675044 +2675045 +2675046 +2675047 +2675048 +2675049 +2675050 +2675051 +2675052 +2675053 +2675054 +2675055 +2675056 +2675057 +2675058 +2675059 +2675060 +2675061 +2675062 +2675063 +2675064 +2675065 +2675066 +2675067 +2675068 +2675069 +2675070 +2675071 +2675072 +2675073 +2675074 +2675075 +2675076 +2675077 +2675078 +2675079 +2675080 +2675081 +2675082 +2675083 +2675084 +2675085 +2675086 +2675087 +2675088 +2675089 +2675090 +2675091 +2675092 +2675093 +2675094 +2675095 +2675096 +2675097 +2675098 +2675099 +2675100 +2675101 +2675102 +2675103 +2675104 +2675105 +2675106 +2675107 +2675108 +2675109 +2675110 +2675111 +2675112 +2675113 +2675114 +2675115 +2675116 +2675117 +2675118 +2675119 +2675120 +2675121 +2675122 +2675123 +2675124 +2675125 +2675126 +2675127 +2675128 +2675129 +2675130 +2675131 +2675132 +2675133 +2675134 +2675135 +2675136 +2675137 +2675138 +2675139 +2675140 +2675141 +2675142 +2675143 +2675144 +2675145 +2675146 +2675147 +2675148 +2675149 +2675150 +2675151 +2675152 +2675153 +2675154 +2675155 +2675156 +2675157 +2675158 +2675159 +2675160 +2675161 +2675162 +2675163 +2675164 +2675165 +2675166 +2675167 +2675168 +2675169 +2675170 +2675171 +2675172 +2675173 +2675174 +2675175 +2675176 +2675177 +2675178 +2675179 +2675180 +2675181 +2675182 +2675183 +2675184 +2675185 +2675186 +2675187 +2675188 +2675189 +2675190 +2675191 +2675192 +2675193 +2675194 +2675195 +2675196 +2675197 +2675198 +2675199 +2675200 +2675201 +2675202 +2675203 +2675204 +2675205 +2675206 +2675207 +2675208 +2675209 +2675210 +2675211 +2675212 +2675213 +2675214 +2675215 +2675216 +2675217 +2675218 +2675219 +2675220 +2675221 +2675222 +2675223 +2675224 +2675225 +2675226 +2675227 +2675228 +2675229 +2675230 +2675231 +2675232 +2675233 +2675234 +2675235 +2675236 +2675237 +2675238 +2675239 +2675240 +2675241 +2675242 +2675243 +2675244 +2675245 +2675246 +2675247 +2675248 +2675249 +2675250 +2675251 +2675252 +2675253 +2675254 +2675255 +2675256 +2675257 +2675258 +2675259 +2675260 +2675261 +2675262 +2675263 +2675264 +2675265 +2675266 +2675267 +2675268 +2675269 +2675270 +2675271 +2675272 +2675273 +2675274 +2675275 +2675276 +2675277 +2675278 +2675279 +2675280 +2675281 +2675282 +2675283 +2675284 +2675285 +2675286 +2675287 +2675288 +2675289 +2675290 +2675291 +2675292 +2675293 +2675294 +2675295 +2675296 +2675297 +2675298 +2675299 +2675300 +2675301 +2675302 +2675303 +2675304 +2675305 +2675306 +2675307 +2675308 +2675309 +2675310 +2675311 +2675312 +2675314 +2675315 +2675316 +2675317 +2675318 +2675319 +2675320 +2675321 +2675323 +2675325 +2675326 +2675327 +2675328 +2675329 +2675330 +2675331 +2675332 +2675333 +2675334 +2675335 +2675336 +2675337 +2675338 +2675339 +2679086 +2679087 +2679088 +2679089 +2679090 +2679091 +2679092 +2679093 +2679094 +2679095 +2679096 +2679097 +2679098 +2679099 +2679100 +2679101 +2679102 +2679103 +2679104 +2679105 +2679106 +2679107 +2679108 +2679109 +2679110 +2679111 +2679112 +2679113 +2679114 +2679115 +2679116 +2679117 +2679118 +2679119 +2679120 +2679121 +2679122 +2679123 +2679124 +2679125 +2679126 +2679127 +2679128 +2679129 +2679130 +2679131 +2679132 +2679133 +2679134 +2679135 +2679136 +2679137 +2679138 +2679139 +2679140 +2679141 +2679142 +2679143 +2679144 +2679145 +2679146 +2679147 +2679148 +2679149 +2679150 +2679151 +2679152 +2679153 +2679154 +2679155 +2679156 +2679157 +2679158 +2679159 +2679160 +2679161 +2679162 +2679163 +2679164 +2679165 +2679166 +2679167 +2679168 +2679169 +2679170 +2679171 +2679172 +2679173 +2679174 +2679175 +2679176 +2679177 +2679178 +2679179 +2679180 +2679181 +2679182 +2679183 +2679184 +2679185 +2679186 +2679187 +2679188 +2679189 +2679190 +2679191 +2679192 +2679193 +2679194 +2679195 +2679196 +2679197 +2679198 +2679199 +2679200 +2679201 +2679202 +2679203 +2679204 +2679205 +2679206 +2679207 +2679208 +2679209 +2679210 +2679211 +2679212 +2679213 +2679214 +2679215 +2679216 +2679217 +2679218 +2679219 +2679220 +2679221 +2679222 +2679223 +2679224 +2679225 +2679226 +2679227 +2679228 +2679229 +2679230 +2679231 +2679232 +2679233 +2679234 +2679235 +2679236 +2679237 +2679238 +2679239 +2679240 +2679241 +2679242 +2679243 +2679244 +2679245 +2679246 +2679247 +2679248 +2679249 +2679250 +2679251 +2679252 +2679253 +2679254 +2679255 +2679256 +2679257 +2679258 +2679259 +2679260 +2679261 +2679262 +2679263 +2679264 +2679265 +2679266 +2679267 +2679268 +2679269 +2679270 +2679271 +2679272 +2679273 +2679274 +2679275 +2679276 +2679277 +2679278 +2679279 +2679280 +2679281 +2679282 +2679283 +2679284 +2679285 +2679286 +2679287 +2679288 +2679289 +2679290 +2679291 +2679292 +2679293 +2679294 +2679295 +2679296 +2679297 +2679298 +2679299 +2679300 +2679301 +2679302 +2679303 +2679304 +2679305 +2679306 +2679307 +2679308 +2679309 +2679310 +2679311 +2679312 +2679313 +2679314 +2679315 +2679316 +2679317 +2679318 +2679319 +2679320 +2679321 +2679322 +2679323 +2679324 +2679325 +2679326 +2679327 +2679328 +2679329 +2679330 +2679331 +2679332 +2679333 +2679334 +2679335 +2679336 +2679337 +2679338 +2679339 +2679340 +2679341 +2679342 +2679343 +2679344 +2679345 +2679346 +2679347 +2679348 +2679349 +2679350 +2679351 +2679352 +2679353 +2679354 +2679355 +2679356 +2679357 +2679358 +2679359 +2679360 +2679361 +2679362 +2679363 +2679364 +2679365 +2679366 +2679367 +2679368 +2679369 +2679370 +2679371 +2679372 +2679373 +2679374 +2679375 +2679376 +2679377 +2679378 +2679379 +2679380 +2679381 +2679382 +2679383 +2679384 +2679385 +2679386 +2679387 +2679388 +2679389 +2679390 +2679391 +2679392 +2679393 +2679394 +2679395 +2679396 +2679397 +2679398 +2679399 +2679400 +2679401 +2679402 +2679403 +2679404 +2679405 +2679406 +2679407 +2679408 +2679409 +2679410 +2679411 +2679412 +2679413 +2679414 +2679415 +2679416 +2679417 +2679418 +2679419 +2679420 +2679421 +2679422 +2679423 +2679424 +2679425 +2679426 +2679427 +2679428 +2679429 +2679430 +2679431 +2679432 +2679433 +2679434 +2679435 +2679436 +2679437 +2679438 +2679439 +2679440 +2679441 +2679442 +2679443 +2679444 +2679445 +2679446 +2679447 +2679448 +2679449 +2679450 +2679451 +2679452 +2679453 +2679454 +2679455 +2679456 +2679457 +2679458 +2679459 +2679460 +2679461 +2679462 +2679463 +2679464 +2679465 +2679466 +2679467 +2679468 +2679469 +2679470 +2679471 +2679472 +2679473 +2679474 +2679475 +2679476 +2679477 +2679478 +2679479 +2679480 +2679481 +2679482 +2679483 +2679484 +2679485 +2679486 +2679487 +2679488 +2679489 +2679490 +2679491 +2679492 +2679493 +2679494 +2679495 +2679496 +2679497 +2679498 +2679499 +2679500 +2679501 +2679502 +2679503 +2679504 +2679505 +2679506 +2679507 +2679508 +2679509 +2679510 +2679511 +2679512 +2679513 +2679514 +2679515 +2679516 +2679517 +2679518 +2679519 +2679520 +2679521 +2679522 +2679523 +2679524 +2679525 +2679526 +2679527 +2679528 +2679529 +2679530 +2679531 +2679532 +2679533 +2679534 +2679535 +2679536 +2679537 +2679538 +2679539 +2679540 +2679541 +2679542 +2679543 +2679544 +2679545 +2679546 +2679547 +2679548 +2679549 +2679550 +2679551 +2679552 +2679553 +2679554 +2679555 +2679556 +2679557 +2679558 +2679559 +2679560 +2679561 +2679562 +2679563 +2679564 +2679565 +2679566 +2679567 +2679568 +2679569 +2679570 +2679571 +2679572 +2679573 +2679574 +2679575 +2679576 +2679577 +2679578 +2679579 +2679580 +2679581 +2679582 +2679583 +2679584 +2679585 +2679586 +2679587 +2679588 +2679589 +2679590 +2679591 +2679592 +2679593 +2679594 +2679595 +2679596 +2679597 +2679598 +2679599 +2679600 +2679601 +2679602 +2679603 +2679604 +2679605 +2679606 +2679607 +2679608 +2679609 +2679610 +2679611 +2679612 +2679613 +2679614 +2679615 +2679616 +2679617 +2679618 +2679619 +2679620 +2679621 +2679622 +2679623 +2679624 +2679625 +2679626 +2679627 +2679628 +2679629 +2679630 +2679631 +2679632 +2679633 +2679634 +2679635 +2679636 +2679638 +2679639 +2679640 +2679641 +2679642 +2679643 +2679650 +2679651 +2679652 +2679653 +2679654 +2679655 +2679656 +2679657 +2679658 +2679659 +2683406 +2683407 +2683408 +2683409 +2683410 +2683411 +2683412 +2683413 +2683414 +2683415 +2683416 +2683417 +2683418 +2683419 +2683420 +2683421 +2683422 +2683423 +2683424 +2683425 +2683426 +2683427 +2683428 +2683429 +2683430 +2683431 +2683432 +2683433 +2683434 +2683435 +2683436 +2683437 +2683438 +2683439 +2683440 +2683441 +2683442 +2683443 +2683444 +2683445 +2683446 +2683447 +2683448 +2683449 +2683450 +2683451 +2683452 +2683453 +2683454 +2683455 +2683456 +2683457 +2683458 +2683459 +2683460 +2683461 +2683462 +2683463 +2683464 +2683465 +2683466 +2683467 +2683468 +2683469 +2683470 +2683471 +2683472 +2683473 +2683474 +2683475 +2683476 +2683477 +2683478 +2683479 +2683480 +2683481 +2683482 +2683483 +2683484 +2683485 +2683486 +2683487 +2683488 +2683489 +2683490 +2683491 +2683492 +2683493 +2683494 +2683495 +2683496 +2683497 +2683498 +2683499 +2683500 +2683501 +2683502 +2683503 +2683504 +2683505 +2683506 +2683507 +2683508 +2683509 +2683510 +2683511 +2683512 +2683513 +2683514 +2683515 +2683516 +2683517 +2683518 +2683519 +2683520 +2683521 +2683522 +2683523 +2683524 +2683525 +2683526 +2683527 +2683528 +2683529 +2683530 +2683531 +2683532 +2683533 +2683534 +2683535 +2683536 +2683537 +2683538 +2683539 +2683540 +2683541 +2683542 +2683543 +2683544 +2683545 +2683546 +2683547 +2683548 +2683549 +2683550 +2683551 +2683552 +2683553 +2683554 +2683555 +2683556 +2683557 +2683558 +2683559 +2683560 +2683561 +2683562 +2683563 +2683564 +2683565 +2683566 +2683567 +2683568 +2683569 +2683570 +2683571 +2683572 +2683573 +2683574 +2683575 +2683576 +2683577 +2683578 +2683579 +2683580 +2683581 +2683582 +2683583 +2683584 +2683585 +2683586 +2683587 +2683588 +2683589 +2683590 +2683591 +2683592 +2683593 +2683594 +2683595 +2683596 +2683597 +2683598 +2683599 +2683600 +2683601 +2683602 +2683603 +2683604 +2683605 +2683606 +2683607 +2683608 +2683609 +2683610 +2683611 +2683612 +2683613 +2683614 +2683615 +2683616 +2683617 +2683618 +2683619 +2683620 +2683621 +2683622 +2683623 +2683624 +2683625 +2683626 +2683627 +2683628 +2683629 +2683630 +2683631 +2683632 +2683633 +2683634 +2683635 +2683636 +2683637 +2683638 +2683639 +2683640 +2683641 +2683642 +2683643 +2683644 +2683645 +2683646 +2683647 +2683648 +2683649 +2683650 +2683651 +2683652 +2683653 +2683654 +2683655 +2683656 +2683657 +2683658 +2683659 +2683660 +2683661 +2683662 +2683663 +2683664 +2683665 +2683666 +2683667 +2683668 +2683669 +2683670 +2683671 +2683672 +2683673 +2683674 +2683675 +2683676 +2683677 +2683678 +2683679 +2683680 +2683681 +2683682 +2683683 +2683684 +2683685 +2683686 +2683687 +2683688 +2683689 +2683690 +2683691 +2683692 +2683693 +2683694 +2683695 +2683696 +2683697 +2683698 +2683699 +2683700 +2683701 +2683702 +2683703 +2683704 +2683705 +2683706 +2683707 +2683708 +2683709 +2683710 +2683711 +2683712 +2683713 +2683714 +2683715 +2683716 +2683717 +2683718 +2683719 +2683720 +2683721 +2683722 +2683723 +2683724 +2683725 +2683726 +2683727 +2683728 +2683729 +2683730 +2683731 +2683732 +2683733 +2683734 +2683735 +2683736 +2683737 +2683738 +2683739 +2683740 +2683741 +2683742 +2683743 +2683744 +2683745 +2683746 +2683747 +2683748 +2683749 +2683750 +2683751 +2683752 +2683753 +2683754 +2683755 +2683756 +2683757 +2683758 +2683759 +2683760 +2683761 +2683762 +2683763 +2683764 +2683765 +2683766 +2683767 +2683768 +2683769 +2683770 +2683771 +2683772 +2683773 +2683774 +2683775 +2683776 +2683777 +2683778 +2683779 +2683780 +2683781 +2683782 +2683783 +2683784 +2683785 +2683786 +2683787 +2683788 +2683789 +2683790 +2683791 +2683792 +2683793 +2683794 +2683795 +2683796 +2683797 +2683798 +2683799 +2683800 +2683801 +2683802 +2683803 +2683804 +2683805 +2683806 +2683807 +2683808 +2683809 +2683810 +2683811 +2683812 +2683813 +2683814 +2683815 +2683816 +2683817 +2683818 +2683819 +2683820 +2683821 +2683822 +2683823 +2683824 +2683825 +2683826 +2683827 +2683828 +2683829 +2683830 +2683831 +2683832 +2683833 +2683834 +2683835 +2683836 +2683837 +2683838 +2683839 +2683840 +2683841 +2683842 +2683843 +2683844 +2683845 +2683846 +2683847 +2683848 +2683849 +2683850 +2683851 +2683852 +2683853 +2683854 +2683855 +2683856 +2683857 +2683858 +2683859 +2683860 +2683861 +2683862 +2683863 +2683864 +2683865 +2683866 +2683867 +2683868 +2683869 +2683870 +2683871 +2683872 +2683873 +2683874 +2683875 +2683876 +2683877 +2683878 +2683879 +2683880 +2683881 +2683882 +2683883 +2683884 +2683885 +2683886 +2683887 +2683888 +2683889 +2683890 +2683891 +2683892 +2683893 +2683894 +2683895 +2683896 +2683897 +2683898 +2683899 +2683900 +2683901 +2683902 +2683903 +2683904 +2683905 +2683906 +2683907 +2683908 +2683909 +2683910 +2683911 +2683912 +2683913 +2683914 +2683915 +2683916 +2683917 +2683918 +2683919 +2683920 +2683921 +2683922 +2683923 +2683924 +2683925 +2683926 +2683927 +2683928 +2683929 +2683930 +2683931 +2683932 +2683933 +2683934 +2683935 +2683936 +2683937 +2683938 +2683939 +2683940 +2683941 +2683942 +2683943 +2683944 +2683945 +2683946 +2683947 +2683948 +2683949 +2683950 +2683951 +2683952 +2683953 +2683954 +2683955 +2683956 +2683957 +2683958 +2683963 +2683964 +2683970 +2683971 +2683972 +2683973 +2683974 +2683975 +2683976 +2683977 +2683978 +2683979 +2687726 +2687727 +2687728 +2687729 +2687730 +2687731 +2687732 +2687733 +2687734 +2687735 +2687736 +2687737 +2687738 +2687739 +2687740 +2687741 +2687742 +2687743 +2687744 +2687745 +2687746 +2687747 +2687748 +2687749 +2687750 +2687751 +2687752 +2687753 +2687754 +2687755 +2687756 +2687757 +2687758 +2687759 +2687760 +2687761 +2687762 +2687763 +2687764 +2687765 +2687766 +2687767 +2687768 +2687769 +2687770 +2687771 +2687772 +2687773 +2687774 +2687775 +2687776 +2687777 +2687778 +2687779 +2687780 +2687781 +2687782 +2687783 +2687784 +2687785 +2687786 +2687787 +2687788 +2687789 +2687790 +2687791 +2687792 +2687793 +2687794 +2687795 +2687796 +2687797 +2687798 +2687799 +2687800 +2687801 +2687802 +2687803 +2687804 +2687805 +2687806 +2687807 +2687808 +2687809 +2687810 +2687811 +2687812 +2687813 +2687814 +2687815 +2687816 +2687817 +2687818 +2687819 +2687820 +2687821 +2687822 +2687823 +2687824 +2687825 +2687826 +2687827 +2687828 +2687829 +2687830 +2687831 +2687832 +2687833 +2687834 +2687835 +2687836 +2687837 +2687838 +2687839 +2687840 +2687841 +2687842 +2687843 +2687844 +2687845 +2687846 +2687847 +2687848 +2687849 +2687850 +2687851 +2687852 +2687853 +2687854 +2687855 +2687856 +2687857 +2687858 +2687859 +2687860 +2687861 +2687862 +2687863 +2687864 +2687865 +2687866 +2687867 +2687868 +2687869 +2687870 +2687871 +2687872 +2687873 +2687874 +2687875 +2687876 +2687877 +2687878 +2687879 +2687880 +2687881 +2687882 +2687883 +2687884 +2687885 +2687886 +2687887 +2687888 +2687889 +2687890 +2687891 +2687892 +2687893 +2687894 +2687895 +2687896 +2687897 +2687898 +2687899 +2687900 +2687901 +2687902 +2687903 +2687904 +2687905 +2687906 +2687907 +2687908 +2687909 +2687910 +2687911 +2687912 +2687913 +2687914 +2687915 +2687916 +2687917 +2687918 +2687919 +2687920 +2687921 +2687922 +2687923 +2687924 +2687925 +2687926 +2687927 +2687928 +2687929 +2687930 +2687931 +2687932 +2687933 +2687934 +2687935 +2687936 +2687937 +2687938 +2687939 +2687940 +2687941 +2687942 +2687943 +2687944 +2687945 +2687946 +2687947 +2687948 +2687949 +2687950 +2687951 +2687952 +2687953 +2687954 +2687955 +2687956 +2687957 +2687958 +2687959 +2687960 +2687961 +2687962 +2687963 +2687964 +2687965 +2687966 +2687967 +2687968 +2687969 +2687970 +2687971 +2687972 +2687973 +2687974 +2687975 +2687976 +2687977 +2687978 +2687979 +2687980 +2687981 +2687982 +2687983 +2687984 +2687985 +2687986 +2687987 +2687988 +2687989 +2687990 +2687991 +2687992 +2687993 +2687994 +2687995 +2687996 +2687997 +2687998 +2687999 +2688000 +2688001 +2688002 +2688003 +2688004 +2688005 +2688006 +2688007 +2688008 +2688009 +2688010 +2688011 +2688012 +2688013 +2688014 +2688015 +2688016 +2688017 +2688018 +2688019 +2688020 +2688021 +2688022 +2688023 +2688024 +2688025 +2688026 +2688027 +2688028 +2688029 +2688030 +2688031 +2688032 +2688033 +2688034 +2688035 +2688036 +2688037 +2688038 +2688039 +2688040 +2688041 +2688042 +2688043 +2688044 +2688045 +2688046 +2688047 +2688048 +2688049 +2688050 +2688051 +2688052 +2688053 +2688054 +2688055 +2688056 +2688057 +2688058 +2688059 +2688060 +2688061 +2688062 +2688063 +2688064 +2688065 +2688066 +2688067 +2688068 +2688069 +2688070 +2688071 +2688072 +2688073 +2688074 +2688075 +2688076 +2688077 +2688078 +2688079 +2688080 +2688081 +2688082 +2688083 +2688084 +2688085 +2688086 +2688087 +2688089 +2688090 +2688091 +2688092 +2688093 +2688094 +2688095 +2688096 +2688097 +2688098 +2688099 +2688100 +2688101 +2688102 +2688103 +2688104 +2688105 +2688106 +2688107 +2688108 +2688109 +2688110 +2688111 +2688112 +2688113 +2688114 +2688115 +2688116 +2688117 +2688118 +2688119 +2688120 +2688121 +2688122 +2688123 +2688124 +2688125 +2688126 +2688127 +2688128 +2688129 +2688130 +2688131 +2688132 +2688133 +2688134 +2688135 +2688136 +2688137 +2688138 +2688139 +2688140 +2688141 +2688142 +2688143 +2688144 +2688145 +2688146 +2688147 +2688148 +2688149 +2688150 +2688151 +2688152 +2688153 +2688154 +2688155 +2688156 +2688157 +2688158 +2688159 +2688160 +2688161 +2688162 +2688163 +2688164 +2688165 +2688166 +2688167 +2688168 +2688169 +2688170 +2688171 +2688172 +2688173 +2688174 +2688175 +2688176 +2688177 +2688178 +2688179 +2688180 +2688181 +2688182 +2688183 +2688184 +2688185 +2688186 +2688187 +2688188 +2688189 +2688190 +2688191 +2688192 +2688193 +2688194 +2688195 +2688196 +2688197 +2688198 +2688199 +2688200 +2688201 +2688202 +2688203 +2688204 +2688205 +2688206 +2688207 +2688208 +2688209 +2688210 +2688211 +2688212 +2688213 +2688214 +2688215 +2688216 +2688217 +2688218 +2688219 +2688220 +2688221 +2688222 +2688223 +2688224 +2688225 +2688226 +2688227 +2688228 +2688229 +2688230 +2688231 +2688232 +2688233 +2688234 +2688235 +2688236 +2688237 +2688238 +2688239 +2688240 +2688241 +2688242 +2688243 +2688244 +2688245 +2688246 +2688247 +2688248 +2688249 +2688250 +2688251 +2688252 +2688253 +2688254 +2688255 +2688256 +2688257 +2688258 +2688259 +2688260 +2688261 +2688262 +2688263 +2688264 +2688265 +2688266 +2688267 +2688268 +2688269 +2688270 +2688271 +2688272 +2688273 +2688274 +2688275 +2688276 +2688277 +2688278 +2688279 +2688280 +2688281 +2688284 +2688290 +2688291 +2688292 +2688293 +2688294 +2688295 +2688296 +2688297 +2688298 +2692049 +2692052 +2692053 +2692054 +2692056 +2692057 +2692058 +2692059 +2692060 +2692061 +2692062 +2692063 +2692064 +2692065 +2692066 +2692067 +2692068 +2692069 +2692070 +2692071 +2692072 +2692073 +2692074 +2692075 +2692076 +2692077 +2692078 +2692079 +2692080 +2692081 +2692082 +2692083 +2692084 +2692085 +2692086 +2692087 +2692088 +2692089 +2692090 +2692091 +2692094 +2692095 +2692096 +2692097 +2692098 +2692099 +2692100 +2692101 +2692102 +2692103 +2692104 +2692105 +2692106 +2692107 +2692108 +2692109 +2692110 +2692111 +2692112 +2692113 +2692114 +2692115 +2692116 +2692117 +2692118 +2692119 +2692120 +2692121 +2692122 +2692123 +2692124 +2692125 +2692126 +2692127 +2692128 +2692129 +2692130 +2692131 +2692132 +2692133 +2692134 +2692135 +2692136 +2692137 +2692138 +2692139 +2692140 +2692141 +2692142 +2692143 +2692144 +2692145 +2692146 +2692147 +2692148 +2692149 +2692150 +2692151 +2692152 +2692153 +2692154 +2692155 +2692156 +2692157 +2692158 +2692159 +2692160 +2692161 +2692162 +2692163 +2692164 +2692165 +2692166 +2692167 +2692168 +2692169 +2692170 +2692171 +2692172 +2692173 +2692174 +2692175 +2692176 +2692177 +2692178 +2692179 +2692180 +2692181 +2692182 +2692183 +2692184 +2692185 +2692186 +2692187 +2692188 +2692189 +2692190 +2692191 +2692192 +2692193 +2692194 +2692195 +2692196 +2692197 +2692198 +2692199 +2692200 +2692201 +2692202 +2692203 +2692204 +2692205 +2692206 +2692207 +2692208 +2692209 +2692210 +2692211 +2692212 +2692213 +2692214 +2692215 +2692216 +2692217 +2692218 +2692219 +2692220 +2692221 +2692222 +2692223 +2692224 +2692225 +2692226 +2692227 +2692228 +2692229 +2692230 +2692231 +2692232 +2692233 +2692234 +2692235 +2692236 +2692237 +2692238 +2692239 +2692240 +2692241 +2692242 +2692243 +2692244 +2692245 +2692246 +2692247 +2692248 +2692249 +2692250 +2692251 +2692252 +2692253 +2692254 +2692255 +2692256 +2692257 +2692258 +2692259 +2692260 +2692261 +2692262 +2692263 +2692264 +2692265 +2692266 +2692267 +2692268 +2692269 +2692270 +2692271 +2692272 +2692273 +2692274 +2692275 +2692276 +2692277 +2692278 +2692279 +2692280 +2692281 +2692282 +2692283 +2692284 +2692285 +2692286 +2692287 +2692288 +2692289 +2692290 +2692291 +2692292 +2692293 +2692294 +2692295 +2692296 +2692297 +2692298 +2692299 +2692300 +2692301 +2692302 +2692303 +2692304 +2692305 +2692306 +2692307 +2692308 +2692309 +2692310 +2692311 +2692312 +2692313 +2692314 +2692315 +2692316 +2692317 +2692318 +2692319 +2692320 +2692321 +2692322 +2692323 +2692324 +2692325 +2692326 +2692327 +2692328 +2692329 +2692330 +2692331 +2692332 +2692333 +2692334 +2692335 +2692336 +2692337 +2692338 +2692339 +2692340 +2692341 +2692342 +2692343 +2692344 +2692345 +2692346 +2692347 +2692348 +2692349 +2692350 +2692351 +2692352 +2692353 +2692354 +2692355 +2692356 +2692357 +2692358 +2692359 +2692360 +2692361 +2692362 +2692363 +2692364 +2692365 +2692366 +2692367 +2692368 +2692369 +2692370 +2692371 +2692372 +2692373 +2692374 +2692375 +2692376 +2692377 +2692378 +2692379 +2692380 +2692381 +2692382 +2692383 +2692384 +2692385 +2692386 +2692387 +2692388 +2692389 +2692390 +2692391 +2692392 +2692393 +2692394 +2692395 +2692396 +2692397 +2692398 +2692399 +2692400 +2692401 +2692402 +2692403 +2692404 +2692405 +2692406 +2692407 +2692408 +2692409 +2692410 +2692411 +2692412 +2692413 +2692414 +2692415 +2692416 +2692417 +2692418 +2692419 +2692420 +2692421 +2692422 +2692423 +2692424 +2692425 +2692426 +2692427 +2692428 +2692429 +2692430 +2692431 +2692432 +2692433 +2692434 +2692435 +2692436 +2692437 +2692438 +2692439 +2692440 +2692441 +2692442 +2692443 +2692444 +2692445 +2692446 +2692447 +2692448 +2692449 +2692450 +2692451 +2692452 +2692453 +2692454 +2692455 +2692456 +2692457 +2692458 +2692459 +2692460 +2692461 +2692462 +2692463 +2692464 +2692465 +2692466 +2692467 +2692468 +2692469 +2692470 +2692471 +2692472 +2692473 +2692474 +2692475 +2692476 +2692477 +2692478 +2692479 +2692480 +2692481 +2692482 +2692483 +2692484 +2692485 +2692486 +2692487 +2692488 +2692489 +2692490 +2692491 +2692492 +2692493 +2692494 +2692495 +2692496 +2692497 +2692498 +2692499 +2692500 +2692501 +2692502 +2692503 +2692504 +2692505 +2692506 +2692507 +2692508 +2692509 +2692510 +2692511 +2692512 +2692513 +2692514 +2692515 +2692516 +2692517 +2692518 +2692519 +2692520 +2692521 +2692522 +2692523 +2692524 +2692525 +2692526 +2692527 +2692528 +2692529 +2692530 +2692531 +2692532 +2692533 +2692534 +2692535 +2692536 +2692537 +2692538 +2692539 +2692540 +2692541 +2692542 +2692543 +2692544 +2692545 +2692546 +2692547 +2692548 +2692549 +2692550 +2692551 +2692552 +2692553 +2692554 +2692555 +2692556 +2692557 +2692558 +2692559 +2692560 +2692561 +2692562 +2692563 +2692564 +2692565 +2692566 +2692567 +2692568 +2692569 +2692570 +2692571 +2692572 +2692573 +2692574 +2692575 +2692576 +2692577 +2692578 +2692579 +2692580 +2692581 +2692582 +2692583 +2692584 +2692585 +2692586 +2692587 +2692588 +2692589 +2692590 +2692591 +2692592 +2692593 +2692594 +2692595 +2692596 +2692597 +2692598 +2692599 +2692600 +2692601 +2692610 +2692611 +2692612 +2692613 +2692614 +2692615 +2692616 +2696369 +2696370 +2696372 +2696373 +2696374 +2696375 +2696376 +2696377 +2696378 +2696379 +2696380 +2696381 +2696384 +2696385 +2696386 +2696387 +2696388 +2696389 +2696390 +2696391 +2696392 +2696393 +2696394 +2696395 +2696396 +2696397 +2696398 +2696399 +2696400 +2696401 +2696402 +2696403 +2696404 +2696405 +2696406 +2696407 +2696408 +2696409 +2696410 +2696414 +2696415 +2696416 +2696417 +2696418 +2696419 +2696420 +2696421 +2696422 +2696423 +2696424 +2696425 +2696426 +2696427 +2696428 +2696429 +2696430 +2696431 +2696432 +2696433 +2696434 +2696435 +2696436 +2696437 +2696438 +2696439 +2696440 +2696441 +2696442 +2696443 +2696444 +2696445 +2696446 +2696447 +2696448 +2696449 +2696450 +2696451 +2696452 +2696453 +2696454 +2696455 +2696456 +2696457 +2696458 +2696459 +2696460 +2696461 +2696462 +2696463 +2696464 +2696465 +2696466 +2696467 +2696468 +2696469 +2696470 +2696471 +2696472 +2696473 +2696474 +2696475 +2696476 +2696477 +2696478 +2696479 +2696480 +2696481 +2696482 +2696483 +2696484 +2696485 +2696486 +2696487 +2696488 +2696489 +2696490 +2696491 +2696492 +2696493 +2696494 +2696495 +2696496 +2696497 +2696498 +2696499 +2696500 +2696501 +2696502 +2696503 +2696504 +2696505 +2696506 +2696507 +2696508 +2696509 +2696510 +2696511 +2696512 +2696513 +2696514 +2696515 +2696516 +2696517 +2696518 +2696519 +2696520 +2696521 +2696522 +2696523 +2696524 +2696525 +2696526 +2696527 +2696528 +2696529 +2696530 +2696531 +2696532 +2696533 +2696534 +2696535 +2696536 +2696537 +2696538 +2696539 +2696540 +2696541 +2696542 +2696543 +2696544 +2696545 +2696546 +2696547 +2696548 +2696549 +2696550 +2696551 +2696552 +2696553 +2696554 +2696555 +2696556 +2696557 +2696558 +2696559 +2696560 +2696561 +2696562 +2696563 +2696564 +2696565 +2696566 +2696567 +2696568 +2696569 +2696570 +2696571 +2696572 +2696573 +2696574 +2696575 +2696576 +2696577 +2696578 +2696579 +2696580 +2696581 +2696582 +2696583 +2696584 +2696585 +2696586 +2696587 +2696588 +2696589 +2696590 +2696591 +2696592 +2696593 +2696594 +2696595 +2696596 +2696597 +2696598 +2696599 +2696600 +2696601 +2696602 +2696603 +2696604 +2696605 +2696606 +2696607 +2696608 +2696609 +2696610 +2696611 +2696612 +2696613 +2696614 +2696615 +2696616 +2696617 +2696618 +2696619 +2696620 +2696621 +2696622 +2696623 +2696624 +2696625 +2696626 +2696627 +2696628 +2696629 +2696630 +2696631 +2696632 +2696633 +2696634 +2696635 +2696636 +2696637 +2696638 +2696639 +2696640 +2696641 +2696642 +2696643 +2696644 +2696645 +2696646 +2696647 +2696648 +2696649 +2696650 +2696651 +2696652 +2696653 +2696654 +2696655 +2696656 +2696657 +2696658 +2696659 +2696660 +2696661 +2696662 +2696663 +2696664 +2696665 +2696666 +2696667 +2696668 +2696669 +2696670 +2696671 +2696672 +2696673 +2696674 +2696675 +2696676 +2696677 +2696678 +2696679 +2696680 +2696681 +2696682 +2696683 +2696684 +2696685 +2696686 +2696687 +2696688 +2696689 +2696690 +2696691 +2696692 +2696693 +2696694 +2696695 +2696696 +2696697 +2696698 +2696699 +2696700 +2696701 +2696702 +2696703 +2696704 +2696705 +2696706 +2696707 +2696708 +2696709 +2696710 +2696711 +2696712 +2696713 +2696714 +2696715 +2696716 +2696717 +2696718 +2696719 +2696720 +2696721 +2696722 +2696723 +2696724 +2696725 +2696726 +2696727 +2696728 +2696729 +2696730 +2696731 +2696732 +2696733 +2696734 +2696735 +2696736 +2696737 +2696738 +2696739 +2696740 +2696741 +2696742 +2696743 +2696744 +2696745 +2696746 +2696747 +2696748 +2696749 +2696750 +2696751 +2696752 +2696753 +2696754 +2696755 +2696756 +2696757 +2696758 +2696759 +2696760 +2696761 +2696762 +2696763 +2696764 +2696765 +2696766 +2696767 +2696768 +2696769 +2696770 +2696771 +2696772 +2696773 +2696774 +2696775 +2696776 +2696777 +2696778 +2696779 +2696780 +2696781 +2696782 +2696783 +2696784 +2696785 +2696786 +2696787 +2696788 +2696789 +2696790 +2696791 +2696792 +2696793 +2696794 +2696795 +2696796 +2696797 +2696798 +2696799 +2696800 +2696801 +2696802 +2696803 +2696804 +2696805 +2696806 +2696807 +2696808 +2696809 +2696810 +2696811 +2696812 +2696813 +2696814 +2696815 +2696816 +2696817 +2696818 +2696819 +2696820 +2696821 +2696822 +2696823 +2696824 +2696825 +2696826 +2696827 +2696828 +2696829 +2696830 +2696831 +2696832 +2696833 +2696834 +2696835 +2696836 +2696837 +2696838 +2696839 +2696840 +2696841 +2696842 +2696843 +2696844 +2696845 +2696846 +2696847 +2696848 +2696849 +2696850 +2696851 +2696852 +2696853 +2696854 +2696855 +2696856 +2696857 +2696858 +2696859 +2696860 +2696861 +2696862 +2696863 +2696864 +2696865 +2696866 +2696867 +2696868 +2696869 +2696870 +2696871 +2696872 +2696873 +2696874 +2696875 +2696876 +2696877 +2696878 +2696879 +2696880 +2696881 +2696882 +2696883 +2696884 +2696885 +2696886 +2696887 +2696888 +2696889 +2696890 +2696891 +2696892 +2696893 +2696894 +2696895 +2696896 +2696897 +2696898 +2696899 +2696900 +2696901 +2696902 +2696903 +2696904 +2696905 +2696906 +2696907 +2696908 +2696909 +2696910 +2696911 +2696912 +2696913 +2696914 +2696915 +2696916 +2696917 +2696919 +2696920 +2696921 +2696922 +2696923 +2696930 +2696931 +2696932 +2696933 +2696934 +2696935 +2696936 +2700689 +2700690 +2700692 +2700693 +2700694 +2700695 +2700696 +2700697 +2700698 +2700699 +2700700 +2700701 +2700705 +2700706 +2700707 +2700708 +2700709 +2700710 +2700711 +2700712 +2700713 +2700714 +2700715 +2700716 +2700717 +2700718 +2700719 +2700720 +2700721 +2700722 +2700723 +2700724 +2700725 +2700726 +2700727 +2700728 +2700729 +2700730 +2700731 +2700732 +2700733 +2700734 +2700735 +2700736 +2700737 +2700738 +2700739 +2700740 +2700741 +2700742 +2700743 +2700744 +2700745 +2700746 +2700747 +2700748 +2700749 +2700750 +2700751 +2700752 +2700753 +2700754 +2700755 +2700756 +2700757 +2700758 +2700759 +2700760 +2700761 +2700762 +2700763 +2700764 +2700765 +2700766 +2700767 +2700768 +2700769 +2700770 +2700771 +2700772 +2700773 +2700774 +2700775 +2700776 +2700777 +2700778 +2700779 +2700780 +2700781 +2700782 +2700783 +2700784 +2700785 +2700786 +2700787 +2700788 +2700789 +2700790 +2700791 +2700792 +2700793 +2700794 +2700795 +2700796 +2700797 +2700798 +2700799 +2700800 +2700801 +2700802 +2700803 +2700804 +2700805 +2700806 +2700807 +2700808 +2700809 +2700810 +2700811 +2700812 +2700813 +2700814 +2700815 +2700816 +2700817 +2700818 +2700819 +2700820 +2700821 +2700822 +2700823 +2700824 +2700825 +2700826 +2700827 +2700828 +2700829 +2700830 +2700831 +2700832 +2700833 +2700834 +2700835 +2700836 +2700837 +2700838 +2700839 +2700840 +2700841 +2700842 +2700843 +2700844 +2700845 +2700846 +2700847 +2700848 +2700849 +2700850 +2700851 +2700852 +2700853 +2700854 +2700855 +2700856 +2700857 +2700858 +2700859 +2700860 +2700861 +2700862 +2700863 +2700864 +2700865 +2700866 +2700867 +2700868 +2700869 +2700870 +2700871 +2700872 +2700873 +2700874 +2700875 +2700876 +2700877 +2700878 +2700879 +2700880 +2700881 +2700882 +2700883 +2700884 +2700885 +2700886 +2700887 +2700888 +2700889 +2700890 +2700891 +2700892 +2700893 +2700894 +2700895 +2700896 +2700897 +2700898 +2700899 +2700900 +2700901 +2700902 +2700903 +2700904 +2700905 +2700906 +2700907 +2700908 +2700909 +2700910 +2700911 +2700912 +2700913 +2700914 +2700915 +2700916 +2700917 +2700918 +2700919 +2700920 +2700921 +2700922 +2700923 +2700924 +2700925 +2700926 +2700927 +2700928 +2700929 +2700930 +2700931 +2700932 +2700933 +2700934 +2700935 +2700936 +2700937 +2700938 +2700939 +2700940 +2700941 +2700942 +2700943 +2700944 +2700945 +2700946 +2700947 +2700948 +2700949 +2700950 +2700951 +2700952 +2700953 +2700954 +2700955 +2700956 +2700957 +2700958 +2700959 +2700960 +2700961 +2700962 +2700963 +2700964 +2700965 +2700966 +2700967 +2700968 +2700969 +2700970 +2700971 +2700972 +2700973 +2700974 +2700975 +2700976 +2700977 +2700978 +2700979 +2700980 +2700981 +2700982 +2700983 +2700984 +2700985 +2700986 +2700987 +2700988 +2700989 +2700990 +2700991 +2700992 +2700993 +2700994 +2700995 +2700996 +2700997 +2700998 +2700999 +2701000 +2701001 +2701002 +2701003 +2701004 +2701005 +2701006 +2701007 +2701008 +2701009 +2701010 +2701011 +2701012 +2701013 +2701014 +2701015 +2701016 +2701017 +2701018 +2701019 +2701020 +2701021 +2701022 +2701023 +2701024 +2701025 +2701026 +2701027 +2701028 +2701029 +2701030 +2701031 +2701032 +2701033 +2701034 +2701035 +2701036 +2701037 +2701038 +2701039 +2701040 +2701041 +2701042 +2701043 +2701044 +2701045 +2701046 +2701047 +2701048 +2701049 +2701050 +2701051 +2701052 +2701053 +2701054 +2701055 +2701056 +2701057 +2701058 +2701059 +2701060 +2701061 +2701062 +2701063 +2701064 +2701065 +2701066 +2701067 +2701068 +2701069 +2701070 +2701071 +2701072 +2701073 +2701074 +2701075 +2701076 +2701077 +2701078 +2701079 +2701080 +2701081 +2701082 +2701083 +2701084 +2701085 +2701086 +2701087 +2701088 +2701089 +2701090 +2701091 +2701092 +2701093 +2701094 +2701095 +2701096 +2701097 +2701098 +2701099 +2701100 +2701101 +2701102 +2701103 +2701104 +2701105 +2701106 +2701107 +2701108 +2701109 +2701110 +2701111 +2701112 +2701113 +2701114 +2701115 +2701116 +2701117 +2701118 +2701119 +2701120 +2701121 +2701122 +2701123 +2701124 +2701125 +2701126 +2701127 +2701128 +2701129 +2701130 +2701131 +2701132 +2701133 +2701134 +2701135 +2701136 +2701137 +2701138 +2701139 +2701140 +2701141 +2701142 +2701143 +2701144 +2701145 +2701146 +2701147 +2701148 +2701149 +2701150 +2701151 +2701152 +2701153 +2701154 +2701155 +2701156 +2701157 +2701158 +2701159 +2701160 +2701161 +2701162 +2701163 +2701164 +2701165 +2701166 +2701167 +2701168 +2701169 +2701170 +2701171 +2701172 +2701173 +2701174 +2701175 +2701176 +2701177 +2701178 +2701179 +2701180 +2701181 +2701182 +2701183 +2701184 +2701185 +2701186 +2701187 +2701188 +2701189 +2701190 +2701191 +2701192 +2701193 +2701194 +2701195 +2701196 +2701197 +2701198 +2701199 +2701200 +2701201 +2701202 +2701203 +2701204 +2701205 +2701206 +2701207 +2701208 +2701209 +2701210 +2701211 +2701212 +2701213 +2701214 +2701215 +2701216 +2701217 +2701218 +2701219 +2701220 +2701221 +2701222 +2701223 +2701224 +2701225 +2701226 +2701227 +2701228 +2701229 +2701230 +2701231 +2701232 +2701233 +2701234 +2701235 +2701236 +2701237 +2701238 +2701239 +2701240 +2701241 +2701242 +2701243 +2701244 +2701252 +2701253 +2701254 +2701255 +2701256 +2705013 +2705014 +2705015 +2705016 +2705017 +2705018 +2705019 +2705020 +2705021 +2705023 +2705024 +2705025 +2705026 +2705027 +2705028 +2705029 +2705030 +2705031 +2705032 +2705033 +2705034 +2705035 +2705036 +2705037 +2705038 +2705039 +2705040 +2705041 +2705042 +2705043 +2705044 +2705045 +2705046 +2705047 +2705048 +2705049 +2705050 +2705051 +2705052 +2705053 +2705054 +2705055 +2705056 +2705057 +2705058 +2705059 +2705060 +2705061 +2705062 +2705063 +2705064 +2705065 +2705066 +2705067 +2705068 +2705069 +2705070 +2705071 +2705072 +2705073 +2705074 +2705075 +2705076 +2705077 +2705078 +2705079 +2705080 +2705081 +2705082 +2705083 +2705084 +2705085 +2705086 +2705087 +2705088 +2705089 +2705090 +2705091 +2705092 +2705093 +2705094 +2705095 +2705096 +2705097 +2705098 +2705099 +2705100 +2705101 +2705102 +2705103 +2705104 +2705105 +2705106 +2705107 +2705108 +2705109 +2705110 +2705111 +2705112 +2705113 +2705114 +2705115 +2705116 +2705117 +2705118 +2705119 +2705120 +2705121 +2705122 +2705123 +2705124 +2705125 +2705126 +2705127 +2705128 +2705129 +2705130 +2705131 +2705132 +2705133 +2705134 +2705135 +2705136 +2705137 +2705138 +2705139 +2705140 +2705141 +2705142 +2705143 +2705144 +2705145 +2705146 +2705147 +2705148 +2705149 +2705150 +2705151 +2705152 +2705153 +2705154 +2705155 +2705156 +2705157 +2705158 +2705159 +2705160 +2705161 +2705162 +2705163 +2705164 +2705165 +2705166 +2705167 +2705168 +2705169 +2705170 +2705171 +2705172 +2705173 +2705174 +2705175 +2705176 +2705177 +2705178 +2705179 +2705180 +2705181 +2705182 +2705183 +2705184 +2705185 +2705186 +2705187 +2705188 +2705189 +2705190 +2705191 +2705192 +2705193 +2705194 +2705195 +2705196 +2705197 +2705198 +2705199 +2705200 +2705201 +2705202 +2705203 +2705204 +2705205 +2705206 +2705207 +2705208 +2705209 +2705210 +2705211 +2705212 +2705213 +2705214 +2705215 +2705216 +2705217 +2705218 +2705219 +2705220 +2705221 +2705222 +2705223 +2705224 +2705225 +2705226 +2705227 +2705228 +2705229 +2705230 +2705231 +2705232 +2705233 +2705234 +2705235 +2705236 +2705237 +2705238 +2705239 +2705240 +2705241 +2705242 +2705243 +2705244 +2705245 +2705246 +2705247 +2705248 +2705249 +2705250 +2705251 +2705252 +2705253 +2705254 +2705255 +2705256 +2705257 +2705258 +2705259 +2705260 +2705261 +2705262 +2705263 +2705264 +2705265 +2705266 +2705267 +2705268 +2705269 +2705270 +2705271 +2705272 +2705273 +2705274 +2705275 +2705276 +2705277 +2705278 +2705279 +2705280 +2705281 +2705282 +2705283 +2705284 +2705285 +2705286 +2705287 +2705288 +2705289 +2705290 +2705291 +2705292 +2705293 +2705294 +2705295 +2705296 +2705297 +2705298 +2705299 +2705300 +2705301 +2705302 +2705303 +2705304 +2705305 +2705306 +2705307 +2705308 +2705309 +2705310 +2705311 +2705312 +2705313 +2705314 +2705315 +2705316 +2705317 +2705318 +2705319 +2705320 +2705321 +2705322 +2705323 +2705324 +2705325 +2705326 +2705327 +2705328 +2705329 +2705330 +2705331 +2705332 +2705333 +2705334 +2705335 +2705336 +2705337 +2705338 +2705339 +2705340 +2705341 +2705342 +2705343 +2705344 +2705345 +2705346 +2705347 +2705348 +2705349 +2705350 +2705351 +2705352 +2705353 +2705354 +2705355 +2705356 +2705357 +2705358 +2705359 +2705360 +2705361 +2705362 +2705363 +2705364 +2705365 +2705366 +2705367 +2705368 +2705369 +2705370 +2705371 +2705372 +2705373 +2705374 +2705375 +2705376 +2705377 +2705378 +2705379 +2705380 +2705381 +2705382 +2705383 +2705384 +2705385 +2705386 +2705387 +2705388 +2705389 +2705390 +2705391 +2705392 +2705393 +2705394 +2705395 +2705396 +2705397 +2705398 +2705399 +2705400 +2705401 +2705402 +2705403 +2705404 +2705405 +2705406 +2705407 +2705408 +2705409 +2705410 +2705411 +2705412 +2705413 +2705414 +2705415 +2705416 +2705417 +2705418 +2705419 +2705420 +2705421 +2705422 +2705423 +2705424 +2705425 +2705426 +2705427 +2705428 +2705429 +2705430 +2705431 +2705432 +2705433 +2705434 +2705435 +2705436 +2705437 +2705438 +2705439 +2705440 +2705441 +2705442 +2705443 +2705444 +2705445 +2705446 +2705447 +2705448 +2705449 +2705450 +2705451 +2705452 +2705453 +2705454 +2705455 +2705456 +2705457 +2705458 +2705459 +2705460 +2705461 +2705462 +2705463 +2705464 +2705465 +2705466 +2705467 +2705468 +2705469 +2705470 +2705471 +2705472 +2705473 +2705474 +2705475 +2705476 +2705477 +2705478 +2705479 +2705480 +2705481 +2705482 +2705483 +2705484 +2705485 +2705486 +2705487 +2705488 +2705489 +2705490 +2705491 +2705492 +2705493 +2705494 +2705495 +2705496 +2705497 +2705498 +2705499 +2705500 +2705501 +2705502 +2705503 +2705504 +2705505 +2705506 +2705507 +2705508 +2705509 +2705510 +2705511 +2705512 +2705513 +2705514 +2705515 +2705516 +2705517 +2705518 +2705519 +2705520 +2705521 +2705522 +2705523 +2705524 +2705525 +2705526 +2705527 +2705528 +2705529 +2705530 +2705531 +2705532 +2705533 +2705534 +2705535 +2705536 +2705537 +2705538 +2705539 +2705540 +2705541 +2705542 +2705543 +2705544 +2705545 +2705546 +2705547 +2705548 +2705549 +2705550 +2705551 +2705552 +2705553 +2705554 +2705555 +2705556 +2705557 +2705558 +2705559 +2705560 +2705561 +2705562 +2705563 +2705564 +2705572 +2705573 +2709334 +2709335 +2709336 +2709337 +2709338 +2709339 +2709340 +2709341 +2709342 +2709343 +2709344 +2709345 +2709346 +2709347 +2709348 +2709349 +2709350 +2709351 +2709352 +2709353 +2709354 +2709355 +2709356 +2709357 +2709358 +2709359 +2709360 +2709361 +2709362 +2709363 +2709364 +2709365 +2709366 +2709367 +2709368 +2709369 +2709370 +2709371 +2709372 +2709373 +2709374 +2709375 +2709376 +2709377 +2709378 +2709379 +2709380 +2709381 +2709382 +2709383 +2709384 +2709385 +2709386 +2709387 +2709388 +2709389 +2709390 +2709391 +2709392 +2709393 +2709394 +2709395 +2709396 +2709397 +2709398 +2709399 +2709400 +2709401 +2709402 +2709403 +2709404 +2709405 +2709406 +2709407 +2709408 +2709409 +2709410 +2709411 +2709412 +2709413 +2709414 +2709415 +2709416 +2709417 +2709418 +2709419 +2709420 +2709421 +2709422 +2709423 +2709424 +2709425 +2709426 +2709427 +2709428 +2709429 +2709430 +2709431 +2709432 +2709433 +2709434 +2709435 +2709436 +2709437 +2709438 +2709439 +2709440 +2709441 +2709442 +2709443 +2709444 +2709445 +2709446 +2709447 +2709448 +2709449 +2709450 +2709451 +2709452 +2709453 +2709454 +2709455 +2709456 +2709457 +2709458 +2709459 +2709460 +2709461 +2709462 +2709463 +2709464 +2709465 +2709466 +2709467 +2709468 +2709469 +2709470 +2709471 +2709472 +2709473 +2709474 +2709475 +2709476 +2709477 +2709478 +2709479 +2709480 +2709481 +2709482 +2709483 +2709484 +2709485 +2709486 +2709487 +2709488 +2709489 +2709490 +2709491 +2709492 +2709493 +2709494 +2709495 +2709496 +2709497 +2709498 +2709499 +2709500 +2709501 +2709502 +2709503 +2709504 +2709505 +2709506 +2709507 +2709508 +2709509 +2709510 +2709511 +2709512 +2709513 +2709514 +2709515 +2709516 +2709517 +2709518 +2709519 +2709520 +2709521 +2709522 +2709523 +2709524 +2709525 +2709526 +2709527 +2709528 +2709529 +2709530 +2709531 +2709532 +2709533 +2709534 +2709535 +2709536 +2709537 +2709538 +2709539 +2709540 +2709541 +2709542 +2709543 +2709544 +2709545 +2709546 +2709547 +2709548 +2709549 +2709550 +2709551 +2709552 +2709553 +2709554 +2709555 +2709556 +2709557 +2709558 +2709559 +2709560 +2709561 +2709562 +2709563 +2709564 +2709565 +2709566 +2709567 +2709568 +2709569 +2709570 +2709571 +2709572 +2709573 +2709574 +2709575 +2709576 +2709577 +2709578 +2709579 +2709580 +2709581 +2709582 +2709583 +2709584 +2709585 +2709586 +2709587 +2709588 +2709589 +2709590 +2709591 +2709592 +2709593 +2709594 +2709595 +2709596 +2709597 +2709598 +2709599 +2709600 +2709601 +2709602 +2709603 +2709604 +2709605 +2709606 +2709607 +2709608 +2709609 +2709610 +2709611 +2709612 +2709613 +2709614 +2709615 +2709616 +2709617 +2709618 +2709619 +2709620 +2709621 +2709622 +2709623 +2709624 +2709625 +2709626 +2709627 +2709628 +2709629 +2709630 +2709631 +2709632 +2709633 +2709634 +2709635 +2709636 +2709637 +2709638 +2709639 +2709640 +2709641 +2709642 +2709643 +2709644 +2709645 +2709646 +2709647 +2709648 +2709649 +2709650 +2709651 +2709652 +2709653 +2709654 +2709655 +2709656 +2709657 +2709658 +2709659 +2709660 +2709661 +2709662 +2709663 +2709664 +2709665 +2709666 +2709667 +2709668 +2709669 +2709670 +2709671 +2709672 +2709673 +2709674 +2709675 +2709676 +2709677 +2709678 +2709679 +2709680 +2709681 +2709682 +2709683 +2709684 +2709685 +2709686 +2709687 +2709688 +2709689 +2709690 +2709691 +2709692 +2709693 +2709694 +2709695 +2709696 +2709697 +2709698 +2709699 +2709700 +2709701 +2709702 +2709703 +2709704 +2709705 +2709706 +2709707 +2709708 +2709709 +2709710 +2709711 +2709712 +2709713 +2709714 +2709715 +2709716 +2709717 +2709718 +2709719 +2709720 +2709721 +2709722 +2709723 +2709724 +2709725 +2709726 +2709727 +2709728 +2709729 +2709730 +2709731 +2709732 +2709733 +2709734 +2709735 +2709736 +2709737 +2709738 +2709739 +2709740 +2709741 +2709742 +2709743 +2709744 +2709745 +2709746 +2709747 +2709748 +2709749 +2709750 +2709751 +2709752 +2709753 +2709754 +2709755 +2709756 +2709757 +2709758 +2709759 +2709760 +2709761 +2709762 +2709763 +2709764 +2709765 +2709766 +2709767 +2709768 +2709769 +2709770 +2709771 +2709772 +2709773 +2709774 +2709775 +2709776 +2709777 +2709778 +2709779 +2709780 +2709781 +2709782 +2709783 +2709784 +2709785 +2709786 +2709787 +2709788 +2709789 +2709790 +2709791 +2709792 +2709793 +2709794 +2709795 +2709796 +2709797 +2709798 +2709799 +2709800 +2709801 +2709802 +2709803 +2709804 +2709805 +2709806 +2709807 +2709808 +2709809 +2709810 +2709811 +2709812 +2709813 +2709814 +2709815 +2709816 +2709817 +2709818 +2709819 +2709820 +2709821 +2709822 +2709823 +2709824 +2709825 +2709826 +2709827 +2709828 +2709829 +2709830 +2709831 +2709832 +2709833 +2709834 +2709835 +2709836 +2709837 +2709838 +2709839 +2709840 +2709841 +2709842 +2709843 +2709844 +2709845 +2709846 +2709847 +2709848 +2709849 +2709850 +2709851 +2709852 +2709853 +2709854 +2709855 +2709856 +2709857 +2709858 +2709859 +2709860 +2709861 +2709862 +2709863 +2709864 +2709865 +2709866 +2709867 +2709868 +2709869 +2709870 +2709871 +2709872 +2709873 +2709874 +2709875 +2709876 +2709877 +2709878 +2709879 +2709880 +2709881 +2709882 +2709883 +2709884 +2709890 +2709891 +2709892 +2709893 +2713655 +2713656 +2713657 +2713658 +2713659 +2713660 +2713661 +2713662 +2713663 +2713664 +2713665 +2713666 +2713667 +2713668 +2713669 +2713670 +2713671 +2713672 +2713673 +2713674 +2713675 +2713676 +2713677 +2713678 +2713679 +2713680 +2713681 +2713682 +2713683 +2713684 +2713685 +2713686 +2713687 +2713688 +2713689 +2713690 +2713691 +2713692 +2713693 +2713694 +2713695 +2713696 +2713697 +2713698 +2713699 +2713700 +2713701 +2713702 +2713703 +2713704 +2713705 +2713706 +2713707 +2713708 +2713709 +2713710 +2713711 +2713712 +2713713 +2713714 +2713715 +2713716 +2713717 +2713718 +2713719 +2713720 +2713721 +2713722 +2713723 +2713724 +2713725 +2713726 +2713727 +2713728 +2713729 +2713730 +2713731 +2713732 +2713733 +2713734 +2713735 +2713736 +2713737 +2713738 +2713739 +2713740 +2713741 +2713742 +2713743 +2713744 +2713745 +2713746 +2713747 +2713748 +2713749 +2713750 +2713751 +2713752 +2713753 +2713754 +2713755 +2713756 +2713757 +2713758 +2713759 +2713760 +2713761 +2713762 +2713763 +2713764 +2713765 +2713766 +2713767 +2713768 +2713769 +2713770 +2713771 +2713772 +2713773 +2713774 +2713775 +2713776 +2713777 +2713778 +2713779 +2713780 +2713781 +2713782 +2713783 +2713784 +2713785 +2713786 +2713787 +2713788 +2713789 +2713790 +2713791 +2713792 +2713793 +2713794 +2713795 +2713796 +2713797 +2713798 +2713799 +2713800 +2713801 +2713802 +2713803 +2713804 +2713805 +2713806 +2713807 +2713808 +2713809 +2713810 +2713811 +2713812 +2713813 +2713814 +2713815 +2713816 +2713817 +2713818 +2713819 +2713820 +2713821 +2713822 +2713823 +2713824 +2713825 +2713826 +2713827 +2713828 +2713829 +2713830 +2713831 +2713832 +2713833 +2713834 +2713835 +2713836 +2713837 +2713838 +2713839 +2713840 +2713841 +2713842 +2713843 +2713844 +2713845 +2713846 +2713847 +2713848 +2713849 +2713850 +2713851 +2713852 +2713853 +2713854 +2713855 +2713856 +2713857 +2713858 +2713859 +2713860 +2713861 +2713862 +2713863 +2713864 +2713865 +2713866 +2713867 +2713868 +2713869 +2713870 +2713871 +2713872 +2713873 +2713874 +2713875 +2713876 +2713877 +2713878 +2713879 +2713880 +2713881 +2713882 +2713883 +2713884 +2713885 +2713886 +2713887 +2713888 +2713889 +2713890 +2713891 +2713892 +2713893 +2713894 +2713895 +2713896 +2713897 +2713898 +2713899 +2713900 +2713901 +2713902 +2713903 +2713904 +2713905 +2713906 +2713907 +2713908 +2713909 +2713910 +2713911 +2713912 +2713913 +2713914 +2713915 +2713916 +2713917 +2713918 +2713919 +2713920 +2713921 +2713922 +2713923 +2713924 +2713925 +2713926 +2713927 +2713928 +2713929 +2713930 +2713931 +2713932 +2713933 +2713934 +2713935 +2713936 +2713937 +2713938 +2713939 +2713940 +2713941 +2713942 +2713943 +2713944 +2713945 +2713946 +2713947 +2713948 +2713949 +2713950 +2713951 +2713952 +2713953 +2713954 +2713955 +2713956 +2713957 +2713958 +2713959 +2713960 +2713961 +2713962 +2713963 +2713964 +2713965 +2713966 +2713967 +2713968 +2713969 +2713970 +2713971 +2713972 +2713973 +2713974 +2713975 +2713976 +2713977 +2713978 +2713979 +2713980 +2713981 +2713982 +2713983 +2713984 +2713985 +2713986 +2713987 +2713988 +2713989 +2713990 +2713991 +2713992 +2713993 +2713994 +2713995 +2713996 +2713997 +2713998 +2713999 +2714000 +2714001 +2714002 +2714003 +2714004 +2714005 +2714006 +2714007 +2714008 +2714009 +2714010 +2714011 +2714012 +2714013 +2714014 +2714015 +2714016 +2714017 +2714018 +2714019 +2714020 +2714021 +2714022 +2714023 +2714024 +2714025 +2714026 +2714027 +2714028 +2714029 +2714030 +2714031 +2714032 +2714033 +2714034 +2714035 +2714036 +2714037 +2714038 +2714039 +2714040 +2714041 +2714042 +2714043 +2714044 +2714045 +2714046 +2714047 +2714048 +2714049 +2714050 +2714051 +2714052 +2714053 +2714054 +2714055 +2714056 +2714057 +2714058 +2714059 +2714060 +2714061 +2714062 +2714063 +2714064 +2714065 +2714066 +2714067 +2714068 +2714069 +2714070 +2714071 +2714072 +2714073 +2714074 +2714075 +2714076 +2714077 +2714078 +2714079 +2714080 +2714081 +2714082 +2714083 +2714084 +2714085 +2714086 +2714087 +2714088 +2714089 +2714090 +2714091 +2714092 +2714093 +2714094 +2714095 +2714096 +2714097 +2714098 +2714099 +2714100 +2714101 +2714102 +2714103 +2714104 +2714105 +2714106 +2714107 +2714108 +2714109 +2714110 +2714111 +2714112 +2714113 +2714114 +2714115 +2714116 +2714117 +2714118 +2714119 +2714120 +2714121 +2714122 +2714123 +2714124 +2714125 +2714126 +2714127 +2714128 +2714129 +2714130 +2714131 +2714132 +2714133 +2714134 +2714135 +2714136 +2714137 +2714138 +2714139 +2714140 +2714141 +2714142 +2714143 +2714144 +2714145 +2714146 +2714147 +2714148 +2714149 +2714150 +2714151 +2714152 +2714153 +2714154 +2714155 +2714156 +2714157 +2714158 +2714159 +2714160 +2714161 +2714162 +2714163 +2714164 +2714165 +2714166 +2714167 +2714168 +2714169 +2714170 +2714171 +2714172 +2714173 +2714174 +2714175 +2714176 +2714177 +2714178 +2714179 +2714180 +2714181 +2714182 +2714183 +2714184 +2714185 +2714186 +2714187 +2714188 +2714189 +2714190 +2714191 +2714192 +2714193 +2714194 +2714195 +2714196 +2714197 +2714198 +2714199 +2714200 +2714201 +2714202 +2714203 +2714204 +2714210 +2714211 +2714212 +2714213 +2717972 +2717973 +2717975 +2717976 +2717977 +2717978 +2717979 +2717980 +2717981 +2717982 +2717983 +2717984 +2717985 +2717986 +2717987 +2717988 +2717989 +2717990 +2717991 +2717992 +2717993 +2717994 +2717995 +2717996 +2717997 +2717998 +2717999 +2718000 +2718001 +2718002 +2718003 +2718004 +2718005 +2718006 +2718007 +2718008 +2718009 +2718010 +2718011 +2718012 +2718013 +2718014 +2718015 +2718016 +2718017 +2718018 +2718019 +2718020 +2718021 +2718022 +2718023 +2718024 +2718025 +2718026 +2718027 +2718028 +2718029 +2718030 +2718031 +2718032 +2718033 +2718034 +2718035 +2718036 +2718037 +2718038 +2718039 +2718040 +2718041 +2718042 +2718043 +2718044 +2718045 +2718046 +2718047 +2718048 +2718049 +2718050 +2718051 +2718052 +2718053 +2718054 +2718055 +2718056 +2718057 +2718058 +2718059 +2718060 +2718061 +2718062 +2718063 +2718064 +2718065 +2718066 +2718067 +2718068 +2718069 +2718070 +2718071 +2718072 +2718073 +2718074 +2718075 +2718076 +2718077 +2718078 +2718079 +2718080 +2718081 +2718082 +2718083 +2718084 +2718085 +2718086 +2718087 +2718088 +2718089 +2718090 +2718091 +2718092 +2718093 +2718094 +2718095 +2718096 +2718097 +2718098 +2718099 +2718100 +2718101 +2718102 +2718103 +2718104 +2718105 +2718106 +2718107 +2718108 +2718109 +2718110 +2718111 +2718112 +2718113 +2718114 +2718115 +2718116 +2718117 +2718118 +2718119 +2718120 +2718121 +2718122 +2718123 +2718124 +2718125 +2718126 +2718127 +2718128 +2718129 +2718130 +2718131 +2718132 +2718133 +2718134 +2718135 +2718136 +2718137 +2718138 +2718139 +2718140 +2718141 +2718142 +2718143 +2718144 +2718145 +2718146 +2718147 +2718148 +2718149 +2718150 +2718151 +2718152 +2718153 +2718154 +2718155 +2718156 +2718157 +2718158 +2718159 +2718160 +2718161 +2718162 +2718163 +2718164 +2718165 +2718166 +2718167 +2718168 +2718169 +2718170 +2718171 +2718172 +2718173 +2718174 +2718175 +2718176 +2718177 +2718178 +2718179 +2718180 +2718181 +2718182 +2718183 +2718184 +2718185 +2718186 +2718187 +2718188 +2718189 +2718190 +2718191 +2718192 +2718193 +2718194 +2718195 +2718196 +2718197 +2718198 +2718199 +2718200 +2718201 +2718202 +2718203 +2718204 +2718205 +2718206 +2718207 +2718208 +2718209 +2718210 +2718211 +2718212 +2718213 +2718214 +2718215 +2718216 +2718217 +2718218 +2718219 +2718220 +2718221 +2718222 +2718223 +2718224 +2718225 +2718226 +2718227 +2718228 +2718229 +2718230 +2718231 +2718232 +2718233 +2718234 +2718235 +2718236 +2718237 +2718238 +2718239 +2718240 +2718241 +2718242 +2718243 +2718244 +2718245 +2718246 +2718247 +2718248 +2718249 +2718250 +2718251 +2718252 +2718253 +2718254 +2718255 +2718256 +2718257 +2718258 +2718259 +2718260 +2718261 +2718262 +2718263 +2718264 +2718265 +2718266 +2718267 +2718268 +2718269 +2718270 +2718271 +2718272 +2718273 +2718274 +2718275 +2718276 +2718277 +2718278 +2718279 +2718280 +2718281 +2718282 +2718283 +2718284 +2718285 +2718286 +2718287 +2718288 +2718289 +2718290 +2718291 +2718292 +2718293 +2718294 +2718295 +2718296 +2718297 +2718298 +2718299 +2718300 +2718301 +2718302 +2718303 +2718304 +2718305 +2718306 +2718307 +2718308 +2718309 +2718310 +2718311 +2718312 +2718313 +2718314 +2718315 +2718316 +2718317 +2718318 +2718319 +2718320 +2718321 +2718322 +2718323 +2718324 +2718325 +2718326 +2718327 +2718328 +2718329 +2718330 +2718331 +2718332 +2718333 +2718334 +2718335 +2718336 +2718337 +2718338 +2718339 +2718340 +2718341 +2718342 +2718343 +2718344 +2718345 +2718346 +2718347 +2718348 +2718349 +2718350 +2718351 +2718352 +2718353 +2718354 +2718355 +2718356 +2718357 +2718358 +2718359 +2718360 +2718361 +2718362 +2718363 +2718364 +2718365 +2718366 +2718367 +2718368 +2718369 +2718370 +2718371 +2718372 +2718373 +2718374 +2718375 +2718376 +2718377 +2718378 +2718379 +2718380 +2718381 +2718382 +2718383 +2718384 +2718385 +2718386 +2718387 +2718388 +2718389 +2718390 +2718391 +2718392 +2718393 +2718394 +2718395 +2718396 +2718397 +2718398 +2718399 +2718400 +2718401 +2718402 +2718403 +2718404 +2718405 +2718406 +2718407 +2718408 +2718409 +2718410 +2718411 +2718412 +2718413 +2718414 +2718415 +2718416 +2718417 +2718418 +2718419 +2718420 +2718421 +2718422 +2718423 +2718424 +2718425 +2718426 +2718427 +2718428 +2718429 +2718430 +2718431 +2718432 +2718433 +2718434 +2718435 +2718436 +2718437 +2718438 +2718439 +2718440 +2718441 +2718442 +2718443 +2718444 +2718445 +2718446 +2718447 +2718448 +2718449 +2718450 +2718451 +2718452 +2718453 +2718454 +2718455 +2718456 +2718457 +2718458 +2718459 +2718460 +2718461 +2718462 +2718463 +2718464 +2718465 +2718466 +2718467 +2718468 +2718469 +2718470 +2718471 +2718472 +2718473 +2718474 +2718475 +2718476 +2718477 +2718478 +2718479 +2718480 +2718481 +2718482 +2718483 +2718484 +2718485 +2718486 +2718487 +2718488 +2718489 +2718490 +2718491 +2718492 +2718493 +2718494 +2718495 +2718496 +2718497 +2718498 +2718499 +2718500 +2718501 +2718502 +2718503 +2718504 +2718505 +2718506 +2718507 +2718508 +2718509 +2718510 +2718511 +2718512 +2718513 +2718514 +2718515 +2718516 +2718517 +2718518 +2718519 +2718520 +2718521 +2718522 +2718523 +2718524 +2718530 +2722292 +2722293 +2722294 +2722296 +2722297 +2722298 +2722299 +2722300 +2722301 +2722302 +2722303 +2722304 +2722305 +2722306 +2722307 +2722308 +2722309 +2722310 +2722311 +2722312 +2722313 +2722314 +2722315 +2722316 +2722317 +2722318 +2722319 +2722320 +2722321 +2722322 +2722323 +2722324 +2722325 +2722326 +2722327 +2722328 +2722329 +2722330 +2722331 +2722332 +2722333 +2722334 +2722335 +2722336 +2722337 +2722338 +2722339 +2722340 +2722341 +2722342 +2722343 +2722344 +2722345 +2722346 +2722347 +2722348 +2722349 +2722350 +2722351 +2722352 +2722353 +2722354 +2722355 +2722356 +2722357 +2722358 +2722359 +2722360 +2722361 +2722362 +2722363 +2722364 +2722365 +2722366 +2722367 +2722368 +2722369 +2722370 +2722371 +2722372 +2722373 +2722374 +2722375 +2722376 +2722377 +2722378 +2722379 +2722380 +2722381 +2722382 +2722383 +2722384 +2722385 +2722386 +2722387 +2722388 +2722389 +2722390 +2722391 +2722392 +2722393 +2722394 +2722395 +2722396 +2722397 +2722398 +2722399 +2722400 +2722401 +2722402 +2722403 +2722404 +2722405 +2722406 +2722407 +2722408 +2722409 +2722410 +2722411 +2722412 +2722413 +2722414 +2722415 +2722416 +2722417 +2722418 +2722419 +2722420 +2722421 +2722422 +2722423 +2722424 +2722425 +2722426 +2722427 +2722428 +2722429 +2722430 +2722431 +2722432 +2722433 +2722434 +2722435 +2722436 +2722437 +2722438 +2722439 +2722440 +2722441 +2722442 +2722443 +2722444 +2722445 +2722446 +2722447 +2722448 +2722449 +2722450 +2722451 +2722452 +2722453 +2722454 +2722455 +2722456 +2722457 +2722458 +2722459 +2722460 +2722461 +2722462 +2722463 +2722464 +2722465 +2722466 +2722467 +2722468 +2722469 +2722470 +2722471 +2722472 +2722473 +2722474 +2722475 +2722476 +2722477 +2722478 +2722479 +2722480 +2722481 +2722482 +2722483 +2722484 +2722485 +2722486 +2722487 +2722488 +2722489 +2722490 +2722491 +2722492 +2722493 +2722494 +2722495 +2722496 +2722497 +2722498 +2722499 +2722500 +2722501 +2722502 +2722503 +2722504 +2722505 +2722506 +2722507 +2722508 +2722509 +2722510 +2722511 +2722512 +2722513 +2722514 +2722515 +2722516 +2722517 +2722518 +2722519 +2722520 +2722521 +2722522 +2722523 +2722524 +2722525 +2722526 +2722527 +2722528 +2722529 +2722530 +2722531 +2722532 +2722533 +2722534 +2722535 +2722536 +2722537 +2722538 +2722539 +2722540 +2722541 +2722542 +2722543 +2722544 +2722545 +2722546 +2722547 +2722548 +2722549 +2722550 +2722551 +2722552 +2722553 +2722554 +2722555 +2722556 +2722557 +2722558 +2722559 +2722560 +2722561 +2722562 +2722563 +2722564 +2722565 +2722566 +2722567 +2722568 +2722569 +2722570 +2722571 +2722572 +2722573 +2722574 +2722575 +2722576 +2722577 +2722578 +2722579 +2722580 +2722581 +2722582 +2722583 +2722584 +2722585 +2722586 +2722587 +2722588 +2722589 +2722590 +2722591 +2722592 +2722593 +2722594 +2722595 +2722596 +2722597 +2722598 +2722599 +2722600 +2722601 +2722602 +2722603 +2722604 +2722605 +2722606 +2722607 +2722608 +2722609 +2722610 +2722611 +2722612 +2722613 +2722614 +2722615 +2722616 +2722617 +2722618 +2722619 +2722620 +2722621 +2722622 +2722623 +2722624 +2722625 +2722626 +2722627 +2722628 +2722629 +2722630 +2722631 +2722632 +2722633 +2722634 +2722635 +2722636 +2722637 +2722638 +2722639 +2722640 +2722641 +2722642 +2722643 +2722644 +2722645 +2722646 +2722647 +2722648 +2722649 +2722650 +2722651 +2722652 +2722653 +2722654 +2722655 +2722656 +2722657 +2722658 +2722659 +2722660 +2722661 +2722662 +2722663 +2722664 +2722665 +2722666 +2722667 +2722668 +2722669 +2722670 +2722671 +2722672 +2722673 +2722674 +2722675 +2722676 +2722677 +2722678 +2722679 +2722680 +2722681 +2722682 +2722683 +2722684 +2722685 +2722686 +2722687 +2722688 +2722689 +2722690 +2722691 +2722692 +2722693 +2722694 +2722695 +2722696 +2722697 +2722698 +2722699 +2722700 +2722701 +2722702 +2722703 +2722704 +2722705 +2722706 +2722707 +2722708 +2722709 +2722710 +2722711 +2722712 +2722713 +2722714 +2722715 +2722716 +2722717 +2722718 +2722719 +2722720 +2722721 +2722722 +2722723 +2722724 +2722725 +2722726 +2722727 +2722728 +2722729 +2722730 +2722731 +2722732 +2722733 +2722734 +2722735 +2722736 +2722737 +2722738 +2722739 +2722740 +2722741 +2722742 +2722743 +2722744 +2722745 +2722746 +2722747 +2722748 +2722749 +2722750 +2722751 +2722752 +2722753 +2722754 +2722755 +2722756 +2722757 +2722758 +2722759 +2722760 +2722761 +2722762 +2722763 +2722764 +2722765 +2722766 +2722767 +2722768 +2722769 +2722770 +2722771 +2722772 +2722773 +2722774 +2722775 +2722776 +2722777 +2722778 +2722779 +2722780 +2722781 +2722782 +2722783 +2722784 +2722785 +2722786 +2722787 +2722788 +2722789 +2722790 +2722791 +2722792 +2722793 +2722794 +2722795 +2722796 +2722797 +2722798 +2722799 +2722800 +2722801 +2722802 +2722803 +2722804 +2722805 +2722806 +2722807 +2722808 +2722809 +2722810 +2722811 +2722812 +2722813 +2722814 +2722815 +2722816 +2722817 +2722818 +2722819 +2722820 +2722821 +2722822 +2722823 +2722824 +2722825 +2722826 +2722827 +2722828 +2722829 +2722830 +2722831 +2722832 +2722833 +2722834 +2722835 +2722836 +2722837 +2722838 +2722839 +2722840 +2722841 +2722842 +2722843 +2722844 +2722850 +2726612 +2726613 +2726614 +2726615 +2726616 +2726617 +2726618 +2726619 +2726620 +2726621 +2726622 +2726623 +2726624 +2726625 +2726626 +2726627 +2726628 +2726629 +2726630 +2726631 +2726632 +2726633 +2726634 +2726635 +2726636 +2726637 +2726638 +2726639 +2726640 +2726641 +2726642 +2726643 +2726644 +2726645 +2726646 +2726647 +2726648 +2726649 +2726650 +2726651 +2726652 +2726653 +2726654 +2726655 +2726656 +2726657 +2726658 +2726659 +2726660 +2726661 +2726662 +2726663 +2726664 +2726665 +2726666 +2726667 +2726668 +2726669 +2726670 +2726671 +2726672 +2726673 +2726674 +2726675 +2726676 +2726677 +2726678 +2726679 +2726680 +2726681 +2726682 +2726683 +2726684 +2726685 +2726686 +2726687 +2726688 +2726689 +2726690 +2726691 +2726692 +2726693 +2726694 +2726695 +2726696 +2726697 +2726698 +2726699 +2726700 +2726701 +2726702 +2726703 +2726704 +2726705 +2726706 +2726707 +2726708 +2726709 +2726710 +2726711 +2726712 +2726713 +2726714 +2726715 +2726716 +2726717 +2726718 +2726719 +2726720 +2726721 +2726722 +2726723 +2726724 +2726725 +2726726 +2726727 +2726728 +2726729 +2726730 +2726731 +2726732 +2726733 +2726734 +2726735 +2726736 +2726737 +2726738 +2726739 +2726740 +2726741 +2726742 +2726743 +2726744 +2726745 +2726746 +2726747 +2726748 +2726749 +2726750 +2726751 +2726752 +2726753 +2726754 +2726755 +2726756 +2726757 +2726758 +2726759 +2726760 +2726761 +2726762 +2726763 +2726764 +2726765 +2726766 +2726767 +2726768 +2726769 +2726770 +2726771 +2726772 +2726773 +2726774 +2726775 +2726776 +2726777 +2726778 +2726779 +2726780 +2726781 +2726782 +2726783 +2726784 +2726785 +2726786 +2726787 +2726788 +2726789 +2726790 +2726791 +2726792 +2726793 +2726794 +2726795 +2726796 +2726797 +2726798 +2726799 +2726800 +2726801 +2726802 +2726803 +2726804 +2726805 +2726806 +2726807 +2726808 +2726809 +2726810 +2726811 +2726812 +2726813 +2726814 +2726815 +2726816 +2726817 +2726818 +2726819 +2726820 +2726821 +2726822 +2726823 +2726824 +2726825 +2726826 +2726827 +2726828 +2726829 +2726830 +2726831 +2726832 +2726833 +2726834 +2726835 +2726836 +2726837 +2726838 +2726839 +2726840 +2726841 +2726842 +2726843 +2726844 +2726845 +2726846 +2726847 +2726848 +2726849 +2726850 +2726851 +2726852 +2726853 +2726854 +2726855 +2726856 +2726857 +2726858 +2726859 +2726860 +2726861 +2726862 +2726863 +2726864 +2726865 +2726866 +2726867 +2726868 +2726869 +2726870 +2726871 +2726872 +2726873 +2726874 +2726875 +2726876 +2726877 +2726878 +2726879 +2726880 +2726881 +2726882 +2726883 +2726884 +2726885 +2726886 +2726887 +2726888 +2726889 +2726890 +2726891 +2726892 +2726893 +2726894 +2726895 +2726896 +2726897 +2726898 +2726899 +2726900 +2726901 +2726902 +2726903 +2726904 +2726905 +2726906 +2726907 +2726908 +2726909 +2726910 +2726911 +2726912 +2726913 +2726914 +2726915 +2726916 +2726917 +2726918 +2726919 +2726920 +2726921 +2726922 +2726923 +2726924 +2726925 +2726926 +2726927 +2726928 +2726929 +2726930 +2726931 +2726932 +2726933 +2726934 +2726935 +2726936 +2726937 +2726938 +2726939 +2726940 +2726941 +2726942 +2726943 +2726944 +2726945 +2726946 +2726947 +2726948 +2726949 +2726950 +2726951 +2726952 +2726953 +2726954 +2726955 +2726956 +2726957 +2726958 +2726959 +2726960 +2726961 +2726962 +2726963 +2726964 +2726965 +2726966 +2726967 +2726968 +2726969 +2726970 +2726971 +2726972 +2726973 +2726974 +2726975 +2726976 +2726977 +2726978 +2726979 +2726980 +2726981 +2726982 +2726983 +2726984 +2726985 +2726986 +2726987 +2726988 +2726989 +2726990 +2726991 +2726992 +2726993 +2726994 +2726995 +2726996 +2726997 +2726998 +2726999 +2727000 +2727001 +2727002 +2727003 +2727004 +2727005 +2727006 +2727007 +2727008 +2727009 +2727010 +2727011 +2727012 +2727013 +2727014 +2727015 +2727016 +2727017 +2727018 +2727019 +2727020 +2727021 +2727022 +2727023 +2727024 +2727025 +2727026 +2727027 +2727028 +2727029 +2727030 +2727031 +2727032 +2727033 +2727034 +2727035 +2727036 +2727037 +2727038 +2727039 +2727040 +2727041 +2727042 +2727043 +2727044 +2727045 +2727046 +2727047 +2727048 +2727049 +2727050 +2727051 +2727052 +2727053 +2727054 +2727055 +2727056 +2727057 +2727058 +2727059 +2727060 +2727061 +2727062 +2727063 +2727064 +2727065 +2727066 +2727067 +2727068 +2727069 +2727070 +2727071 +2727072 +2727073 +2727074 +2727075 +2727076 +2727077 +2727078 +2727079 +2727080 +2727081 +2727082 +2727083 +2727084 +2727085 +2727086 +2727087 +2727088 +2727089 +2727090 +2727091 +2727092 +2727093 +2727094 +2727095 +2727096 +2727097 +2727098 +2727099 +2727100 +2727101 +2727102 +2727103 +2727104 +2727105 +2727106 +2727107 +2727108 +2727109 +2727110 +2727111 +2727112 +2727113 +2727114 +2727115 +2727116 +2727117 +2727118 +2727119 +2727120 +2727121 +2727122 +2727123 +2727124 +2727125 +2727126 +2727127 +2727128 +2727129 +2727130 +2727131 +2727132 +2727133 +2727134 +2727135 +2727136 +2727137 +2727138 +2727139 +2727140 +2727141 +2727142 +2727143 +2727144 +2727145 +2727146 +2727147 +2727148 +2727149 +2727150 +2727151 +2727152 +2727153 +2727154 +2727155 +2727156 +2727157 +2727158 +2727159 +2727160 +2727161 +2727162 +2727163 +2727164 +2727170 +2730932 +2730933 +2730934 +2730935 +2730936 +2730937 +2730938 +2730939 +2730940 +2730941 +2730942 +2730943 +2730944 +2730945 +2730946 +2730947 +2730948 +2730949 +2730950 +2730951 +2730952 +2730953 +2730954 +2730955 +2730956 +2730957 +2730958 +2730959 +2730960 +2730961 +2730962 +2730963 +2730964 +2730965 +2730966 +2730967 +2730968 +2730969 +2730970 +2730971 +2730972 +2730973 +2730974 +2730975 +2730976 +2730977 +2730978 +2730979 +2730980 +2730981 +2730982 +2730983 +2730984 +2730985 +2730986 +2730987 +2730988 +2730989 +2730990 +2730991 +2730992 +2730993 +2730994 +2730995 +2730996 +2730997 +2730998 +2730999 +2731000 +2731001 +2731002 +2731003 +2731004 +2731005 +2731006 +2731007 +2731008 +2731009 +2731010 +2731011 +2731012 +2731013 +2731014 +2731015 +2731016 +2731017 +2731018 +2731019 +2731020 +2731021 +2731022 +2731023 +2731024 +2731025 +2731026 +2731027 +2731028 +2731029 +2731030 +2731031 +2731032 +2731033 +2731034 +2731035 +2731036 +2731037 +2731038 +2731039 +2731040 +2731041 +2731042 +2731043 +2731044 +2731045 +2731046 +2731047 +2731048 +2731049 +2731050 +2731051 +2731052 +2731053 +2731054 +2731055 +2731056 +2731057 +2731058 +2731059 +2731060 +2731061 +2731062 +2731063 +2731064 +2731065 +2731066 +2731067 +2731068 +2731069 +2731070 +2731071 +2731072 +2731073 +2731074 +2731075 +2731076 +2731077 +2731078 +2731079 +2731080 +2731081 +2731082 +2731083 +2731084 +2731085 +2731086 +2731087 +2731088 +2731089 +2731090 +2731091 +2731092 +2731093 +2731094 +2731095 +2731096 +2731097 +2731098 +2731099 +2731100 +2731101 +2731102 +2731103 +2731104 +2731105 +2731106 +2731107 +2731108 +2731109 +2731110 +2731111 +2731112 +2731113 +2731114 +2731115 +2731116 +2731117 +2731118 +2731119 +2731120 +2731121 +2731122 +2731123 +2731124 +2731125 +2731126 +2731127 +2731128 +2731129 +2731130 +2731131 +2731132 +2731133 +2731134 +2731135 +2731136 +2731137 +2731138 +2731139 +2731140 +2731141 +2731142 +2731143 +2731144 +2731145 +2731146 +2731147 +2731148 +2731149 +2731150 +2731151 +2731152 +2731153 +2731154 +2731155 +2731156 +2731157 +2731158 +2731159 +2731160 +2731161 +2731162 +2731163 +2731164 +2731165 +2731166 +2731167 +2731168 +2731169 +2731170 +2731171 +2731172 +2731173 +2731174 +2731175 +2731176 +2731177 +2731178 +2731179 +2731180 +2731181 +2731182 +2731183 +2731184 +2731185 +2731186 +2731187 +2731188 +2731189 +2731190 +2731191 +2731192 +2731193 +2731194 +2731195 +2731196 +2731197 +2731198 +2731199 +2731200 +2731201 +2731202 +2731203 +2731204 +2731205 +2731206 +2731207 +2731208 +2731209 +2731210 +2731211 +2731212 +2731213 +2731214 +2731215 +2731216 +2731217 +2731218 +2731219 +2731220 +2731221 +2731222 +2731223 +2731224 +2731225 +2731226 +2731227 +2731228 +2731229 +2731230 +2731231 +2731232 +2731233 +2731234 +2731235 +2731236 +2731237 +2731238 +2731239 +2731240 +2731241 +2731242 +2731243 +2731244 +2731245 +2731246 +2731247 +2731248 +2731249 +2731250 +2731251 +2731252 +2731253 +2731254 +2731255 +2731256 +2731257 +2731258 +2731259 +2731260 +2731261 +2731262 +2731263 +2731264 +2731265 +2731266 +2731267 +2731268 +2731269 +2731270 +2731271 +2731272 +2731273 +2731274 +2731275 +2731276 +2731277 +2731278 +2731279 +2731280 +2731281 +2731282 +2731283 +2731284 +2731285 +2731286 +2731287 +2731288 +2731289 +2731290 +2731291 +2731292 +2731293 +2731294 +2731295 +2731296 +2731297 +2731298 +2731299 +2731300 +2731301 +2731302 +2731303 +2731304 +2731305 +2731306 +2731307 +2731308 +2731309 +2731310 +2731311 +2731312 +2731313 +2731314 +2731315 +2731316 +2731317 +2731318 +2731319 +2731320 +2731321 +2731322 +2731323 +2731324 +2731325 +2731326 +2731327 +2731328 +2731329 +2731330 +2731331 +2731332 +2731333 +2731334 +2731335 +2731336 +2731337 +2731338 +2731339 +2731340 +2731341 +2731342 +2731343 +2731344 +2731345 +2731346 +2731347 +2731348 +2731349 +2731350 +2731351 +2731352 +2731353 +2731354 +2731355 +2731356 +2731357 +2731358 +2731359 +2731360 +2731361 +2731362 +2731363 +2731364 +2731365 +2731366 +2731367 +2731368 +2731369 +2731370 +2731371 +2731372 +2731373 +2731374 +2731375 +2731376 +2731377 +2731378 +2731379 +2731380 +2731381 +2731382 +2731383 +2731384 +2731385 +2731386 +2731387 +2731388 +2731389 +2731390 +2731391 +2731392 +2731393 +2731394 +2731395 +2731396 +2731397 +2731398 +2731399 +2731400 +2731401 +2731402 +2731403 +2731404 +2731405 +2731406 +2731407 +2731408 +2731409 +2731410 +2731411 +2731412 +2731413 +2731414 +2731415 +2731416 +2731417 +2731418 +2731419 +2731420 +2731421 +2731422 +2731423 +2731424 +2731425 +2731426 +2731427 +2731428 +2731429 +2731430 +2731431 +2731432 +2731433 +2731434 +2731435 +2731436 +2731437 +2731438 +2731439 +2731440 +2731441 +2731442 +2731443 +2731444 +2731445 +2731446 +2731447 +2731448 +2731449 +2731450 +2731451 +2731452 +2731453 +2731454 +2731455 +2731456 +2731457 +2731458 +2731459 +2731460 +2731461 +2731462 +2731463 +2731464 +2731465 +2731466 +2731467 +2731468 +2731469 +2731470 +2731471 +2731472 +2731473 +2731474 +2731475 +2731476 +2731477 +2731478 +2731479 +2731480 +2731481 +2731482 +2731483 +2731490 +2735252 +2735253 +2735254 +2735255 +2735256 +2735257 +2735258 +2735259 +2735260 +2735261 +2735262 +2735263 +2735264 +2735265 +2735266 +2735267 +2735268 +2735269 +2735270 +2735271 +2735272 +2735273 +2735274 +2735275 +2735276 +2735277 +2735278 +2735279 +2735280 +2735281 +2735282 +2735283 +2735284 +2735285 +2735286 +2735287 +2735288 +2735289 +2735290 +2735291 +2735292 +2735293 +2735294 +2735295 +2735296 +2735297 +2735298 +2735299 +2735300 +2735301 +2735302 +2735303 +2735304 +2735305 +2735306 +2735307 +2735308 +2735309 +2735310 +2735311 +2735312 +2735313 +2735314 +2735315 +2735316 +2735317 +2735318 +2735319 +2735320 +2735321 +2735322 +2735323 +2735324 +2735325 +2735326 +2735327 +2735328 +2735329 +2735330 +2735331 +2735332 +2735333 +2735334 +2735335 +2735336 +2735337 +2735338 +2735339 +2735340 +2735341 +2735342 +2735343 +2735344 +2735345 +2735346 +2735347 +2735348 +2735349 +2735350 +2735351 +2735352 +2735353 +2735354 +2735355 +2735356 +2735357 +2735358 +2735359 +2735360 +2735361 +2735362 +2735363 +2735364 +2735365 +2735366 +2735367 +2735368 +2735369 +2735370 +2735371 +2735372 +2735373 +2735374 +2735375 +2735376 +2735377 +2735378 +2735379 +2735380 +2735381 +2735382 +2735383 +2735384 +2735385 +2735386 +2735387 +2735388 +2735389 +2735390 +2735391 +2735392 +2735393 +2735394 +2735395 +2735396 +2735397 +2735398 +2735399 +2735400 +2735401 +2735402 +2735403 +2735404 +2735405 +2735406 +2735407 +2735408 +2735409 +2735410 +2735411 +2735412 +2735413 +2735414 +2735415 +2735416 +2735417 +2735418 +2735419 +2735420 +2735421 +2735422 +2735423 +2735424 +2735425 +2735426 +2735427 +2735428 +2735429 +2735430 +2735431 +2735432 +2735433 +2735434 +2735435 +2735436 +2735437 +2735438 +2735439 +2735440 +2735441 +2735442 +2735443 +2735444 +2735445 +2735446 +2735447 +2735448 +2735449 +2735450 +2735451 +2735452 +2735453 +2735454 +2735455 +2735456 +2735457 +2735458 +2735459 +2735460 +2735461 +2735462 +2735463 +2735464 +2735465 +2735466 +2735467 +2735468 +2735469 +2735470 +2735471 +2735472 +2735473 +2735474 +2735475 +2735476 +2735477 +2735478 +2735479 +2735480 +2735481 +2735482 +2735483 +2735484 +2735485 +2735486 +2735487 +2735488 +2735489 +2735490 +2735491 +2735492 +2735493 +2735494 +2735495 +2735496 +2735497 +2735498 +2735499 +2735500 +2735501 +2735502 +2735503 +2735504 +2735505 +2735506 +2735507 +2735508 +2735509 +2735510 +2735511 +2735512 +2735513 +2735514 +2735515 +2735516 +2735517 +2735518 +2735519 +2735520 +2735521 +2735522 +2735523 +2735524 +2735525 +2735526 +2735527 +2735528 +2735529 +2735530 +2735531 +2735532 +2735533 +2735534 +2735535 +2735536 +2735537 +2735538 +2735539 +2735540 +2735541 +2735542 +2735543 +2735544 +2735545 +2735546 +2735547 +2735548 +2735549 +2735550 +2735551 +2735552 +2735553 +2735554 +2735555 +2735556 +2735557 +2735558 +2735559 +2735560 +2735561 +2735562 +2735563 +2735564 +2735565 +2735566 +2735567 +2735568 +2735569 +2735570 +2735571 +2735572 +2735573 +2735574 +2735575 +2735576 +2735577 +2735578 +2735579 +2735580 +2735581 +2735582 +2735583 +2735584 +2735585 +2735586 +2735587 +2735588 +2735589 +2735590 +2735591 +2735592 +2735593 +2735594 +2735595 +2735596 +2735597 +2735598 +2735599 +2735600 +2735601 +2735602 +2735603 +2735604 +2735605 +2735606 +2735607 +2735608 +2735609 +2735610 +2735611 +2735612 +2735613 +2735614 +2735615 +2735616 +2735617 +2735618 +2735619 +2735620 +2735621 +2735622 +2735623 +2735624 +2735625 +2735626 +2735627 +2735628 +2735629 +2735630 +2735631 +2735632 +2735633 +2735634 +2735635 +2735636 +2735637 +2735638 +2735639 +2735640 +2735641 +2735642 +2735643 +2735644 +2735645 +2735646 +2735647 +2735648 +2735649 +2735650 +2735651 +2735652 +2735653 +2735654 +2735655 +2735656 +2735657 +2735658 +2735659 +2735660 +2735661 +2735662 +2735663 +2735664 +2735665 +2735666 +2735667 +2735668 +2735669 +2735670 +2735671 +2735672 +2735673 +2735674 +2735675 +2735676 +2735677 +2735678 +2735679 +2735680 +2735681 +2735682 +2735683 +2735684 +2735685 +2735686 +2735687 +2735688 +2735689 +2735690 +2735691 +2735692 +2735693 +2735694 +2735695 +2735696 +2735697 +2735698 +2735699 +2735700 +2735701 +2735702 +2735703 +2735704 +2735705 +2735706 +2735707 +2735708 +2735709 +2735710 +2735711 +2735712 +2735713 +2735714 +2735715 +2735716 +2735717 +2735718 +2735719 +2735720 +2735721 +2735722 +2735723 +2735724 +2735725 +2735726 +2735727 +2735728 +2735729 +2735730 +2735731 +2735732 +2735733 +2735734 +2735735 +2735736 +2735737 +2735738 +2735739 +2735740 +2735741 +2735742 +2735743 +2735744 +2735745 +2735746 +2735747 +2735748 +2735749 +2735750 +2735751 +2735752 +2735753 +2735754 +2735755 +2735756 +2735757 +2735758 +2735759 +2735760 +2735761 +2735762 +2735763 +2735764 +2735765 +2735766 +2735767 +2735768 +2735769 +2735770 +2735771 +2735772 +2735773 +2735774 +2735775 +2735776 +2735777 +2735778 +2735779 +2735780 +2735781 +2735782 +2735783 +2735784 +2735785 +2735786 +2735787 +2735788 +2735789 +2735790 +2735791 +2735792 +2735793 +2735794 +2735795 +2735796 +2735797 +2735798 +2735799 +2735800 +2735801 +2735802 +2735803 +2735810 +2739572 +2739573 +2739574 +2739575 +2739576 +2739577 +2739578 +2739579 +2739580 +2739581 +2739582 +2739583 +2739584 +2739585 +2739586 +2739587 +2739588 +2739589 +2739590 +2739591 +2739592 +2739593 +2739594 +2739595 +2739596 +2739597 +2739598 +2739599 +2739600 +2739601 +2739602 +2739603 +2739604 +2739605 +2739606 +2739607 +2739608 +2739609 +2739610 +2739611 +2739612 +2739613 +2739614 +2739615 +2739616 +2739617 +2739618 +2739619 +2739620 +2739621 +2739622 +2739623 +2739624 +2739625 +2739626 +2739627 +2739628 +2739629 +2739630 +2739631 +2739632 +2739633 +2739634 +2739635 +2739636 +2739637 +2739638 +2739639 +2739640 +2739641 +2739642 +2739643 +2739644 +2739645 +2739646 +2739647 +2739648 +2739649 +2739650 +2739651 +2739652 +2739653 +2739654 +2739655 +2739656 +2739657 +2739658 +2739659 +2739660 +2739661 +2739662 +2739663 +2739664 +2739665 +2739666 +2739667 +2739668 +2739669 +2739670 +2739671 +2739672 +2739673 +2739674 +2739675 +2739676 +2739677 +2739678 +2739679 +2739680 +2739681 +2739682 +2739683 +2739684 +2739685 +2739686 +2739687 +2739688 +2739689 +2739690 +2739691 +2739692 +2739693 +2739694 +2739695 +2739696 +2739697 +2739698 +2739699 +2739700 +2739701 +2739702 +2739703 +2739704 +2739705 +2739706 +2739707 +2739708 +2739709 +2739710 +2739711 +2739712 +2739713 +2739714 +2739715 +2739716 +2739717 +2739718 +2739719 +2739720 +2739721 +2739722 +2739723 +2739724 +2739725 +2739726 +2739727 +2739728 +2739729 +2739730 +2739731 +2739732 +2739733 +2739734 +2739735 +2739736 +2739737 +2739738 +2739739 +2739740 +2739741 +2739742 +2739743 +2739744 +2739745 +2739746 +2739747 +2739748 +2739749 +2739750 +2739751 +2739752 +2739753 +2739754 +2739755 +2739756 +2739757 +2739758 +2739759 +2739760 +2739761 +2739762 +2739763 +2739764 +2739765 +2739766 +2739767 +2739768 +2739769 +2739770 +2739771 +2739772 +2739773 +2739774 +2739775 +2739776 +2739777 +2739778 +2739779 +2739780 +2739781 +2739782 +2739783 +2739784 +2739785 +2739786 +2739787 +2739788 +2739789 +2739790 +2739791 +2739792 +2739793 +2739794 +2739795 +2739796 +2739797 +2739798 +2739799 +2739800 +2739801 +2739802 +2739803 +2739804 +2739805 +2739806 +2739807 +2739808 +2739809 +2739810 +2739811 +2739812 +2739813 +2739814 +2739815 +2739816 +2739817 +2739818 +2739819 +2739820 +2739821 +2739822 +2739823 +2739824 +2739825 +2739826 +2739827 +2739828 +2739829 +2739830 +2739831 +2739832 +2739833 +2739834 +2739835 +2739836 +2739837 +2739838 +2739839 +2739840 +2739841 +2739842 +2739843 +2739844 +2739845 +2739846 +2739847 +2739848 +2739849 +2739850 +2739851 +2739852 +2739853 +2739854 +2739855 +2739856 +2739857 +2739858 +2739859 +2739860 +2739861 +2739862 +2739863 +2739864 +2739865 +2739866 +2739867 +2739868 +2739869 +2739870 +2739871 +2739872 +2739873 +2739874 +2739875 +2739876 +2739877 +2739878 +2739879 +2739880 +2739881 +2739882 +2739883 +2739884 +2739885 +2739886 +2739887 +2739888 +2739889 +2739890 +2739891 +2739892 +2739893 +2739894 +2739895 +2739896 +2739897 +2739898 +2739899 +2739900 +2739901 +2739902 +2739903 +2739904 +2739905 +2739906 +2739907 +2739908 +2739909 +2739910 +2739911 +2739912 +2739913 +2739914 +2739915 +2739916 +2739917 +2739918 +2739919 +2739920 +2739921 +2739922 +2739923 +2739924 +2739925 +2739926 +2739927 +2739928 +2739929 +2739930 +2739931 +2739932 +2739933 +2739934 +2739935 +2739936 +2739937 +2739938 +2739939 +2739940 +2739941 +2739942 +2739943 +2739944 +2739945 +2739946 +2739947 +2739948 +2739949 +2739950 +2739951 +2739952 +2739953 +2739954 +2739955 +2739956 +2739957 +2739958 +2739959 +2739960 +2739961 +2739962 +2739963 +2739964 +2739965 +2739966 +2739967 +2739968 +2739969 +2739970 +2739971 +2739972 +2739973 +2739974 +2739975 +2739976 +2739977 +2739978 +2739979 +2739980 +2739981 +2739982 +2739983 +2739984 +2739985 +2739986 +2739987 +2739988 +2739989 +2739990 +2739991 +2739992 +2739993 +2739994 +2739995 +2739996 +2739997 +2739998 +2739999 +2740000 +2740001 +2740002 +2740003 +2740004 +2740005 +2740006 +2740007 +2740008 +2740009 +2740010 +2740011 +2740012 +2740013 +2740014 +2740015 +2740016 +2740017 +2740018 +2740019 +2740020 +2740021 +2740022 +2740023 +2740024 +2740025 +2740026 +2740027 +2740028 +2740029 +2740030 +2740031 +2740032 +2740033 +2740034 +2740035 +2740036 +2740037 +2740038 +2740039 +2740040 +2740041 +2740042 +2740043 +2740044 +2740045 +2740046 +2740047 +2740048 +2740049 +2740050 +2740051 +2740052 +2740053 +2740054 +2740055 +2740056 +2740057 +2740058 +2740059 +2740060 +2740061 +2740062 +2740063 +2740064 +2740065 +2740066 +2740067 +2740068 +2740069 +2740070 +2740071 +2740072 +2740073 +2740074 +2740075 +2740076 +2740077 +2740078 +2740079 +2740080 +2740081 +2740082 +2740083 +2740084 +2740085 +2740086 +2740087 +2740088 +2740089 +2740090 +2740091 +2740092 +2740093 +2740094 +2740095 +2740096 +2740097 +2740098 +2740099 +2740100 +2740101 +2740102 +2740103 +2740104 +2740105 +2740106 +2740107 +2740108 +2740109 +2740110 +2740111 +2740112 +2740113 +2740114 +2740115 +2740116 +2740117 +2740118 +2740119 +2740120 +2740121 +2740122 +2740123 +2740124 +2740130 +2743895 +2743896 +2743897 +2743898 +2743899 +2743900 +2743901 +2743902 +2743903 +2743904 +2743905 +2743906 +2743907 +2743908 +2743909 +2743910 +2743911 +2743912 +2743913 +2743914 +2743915 +2743916 +2743917 +2743918 +2743919 +2743920 +2743921 +2743922 +2743923 +2743924 +2743925 +2743926 +2743927 +2743928 +2743929 +2743930 +2743931 +2743932 +2743933 +2743934 +2743935 +2743936 +2743937 +2743938 +2743939 +2743940 +2743941 +2743942 +2743943 +2743944 +2743945 +2743946 +2743947 +2743948 +2743949 +2743950 +2743951 +2743952 +2743953 +2743954 +2743955 +2743956 +2743957 +2743958 +2743959 +2743960 +2743961 +2743962 +2743963 +2743964 +2743965 +2743966 +2743967 +2743968 +2743969 +2743970 +2743971 +2743972 +2743973 +2743974 +2743975 +2743976 +2743977 +2743978 +2743979 +2743980 +2743981 +2743982 +2743983 +2743984 +2743985 +2743986 +2743987 +2743988 +2743989 +2743990 +2743991 +2743992 +2743993 +2743994 +2743995 +2743996 +2743997 +2743998 +2743999 +2744000 +2744001 +2744002 +2744003 +2744004 +2744005 +2744006 +2744007 +2744008 +2744009 +2744010 +2744011 +2744012 +2744013 +2744014 +2744015 +2744016 +2744017 +2744018 +2744019 +2744020 +2744021 +2744022 +2744023 +2744024 +2744025 +2744026 +2744027 +2744028 +2744029 +2744030 +2744031 +2744032 +2744033 +2744034 +2744035 +2744036 +2744037 +2744038 +2744039 +2744040 +2744041 +2744042 +2744043 +2744044 +2744045 +2744046 +2744047 +2744048 +2744049 +2744050 +2744051 +2744052 +2744053 +2744054 +2744055 +2744056 +2744057 +2744058 +2744059 +2744060 +2744061 +2744062 +2744063 +2744064 +2744065 +2744066 +2744067 +2744068 +2744069 +2744070 +2744071 +2744072 +2744073 +2744074 +2744075 +2744076 +2744077 +2744078 +2744079 +2744080 +2744081 +2744082 +2744083 +2744084 +2744085 +2744086 +2744087 +2744088 +2744089 +2744090 +2744091 +2744092 +2744093 +2744094 +2744095 +2744096 +2744097 +2744098 +2744099 +2744100 +2744101 +2744102 +2744103 +2744104 +2744105 +2744106 +2744107 +2744108 +2744109 +2744110 +2744111 +2744112 +2744113 +2744114 +2744115 +2744116 +2744117 +2744118 +2744119 +2744120 +2744121 +2744122 +2744123 +2744124 +2744125 +2744126 +2744127 +2744128 +2744129 +2744130 +2744131 +2744132 +2744133 +2744134 +2744135 +2744136 +2744137 +2744138 +2744139 +2744140 +2744141 +2744142 +2744143 +2744144 +2744145 +2744146 +2744147 +2744148 +2744149 +2744150 +2744151 +2744152 +2744153 +2744154 +2744155 +2744156 +2744157 +2744158 +2744159 +2744160 +2744161 +2744162 +2744163 +2744164 +2744165 +2744166 +2744167 +2744168 +2744169 +2744170 +2744171 +2744172 +2744173 +2744174 +2744175 +2744176 +2744177 +2744178 +2744179 +2744180 +2744181 +2744182 +2744183 +2744184 +2744185 +2744186 +2744187 +2744188 +2744189 +2744190 +2744191 +2744192 +2744193 +2744194 +2744195 +2744196 +2744197 +2744198 +2744199 +2744200 +2744201 +2744202 +2744203 +2744204 +2744205 +2744206 +2744207 +2744208 +2744209 +2744210 +2744211 +2744212 +2744213 +2744214 +2744215 +2744216 +2744217 +2744218 +2744219 +2744220 +2744221 +2744222 +2744223 +2744224 +2744225 +2744226 +2744227 +2744228 +2744229 +2744230 +2744231 +2744232 +2744233 +2744234 +2744235 +2744236 +2744237 +2744238 +2744239 +2744240 +2744241 +2744242 +2744243 +2744244 +2744245 +2744246 +2744247 +2744248 +2744249 +2744250 +2744251 +2744252 +2744253 +2744254 +2744255 +2744256 +2744257 +2744258 +2744259 +2744260 +2744261 +2744262 +2744263 +2744264 +2744265 +2744266 +2744267 +2744268 +2744269 +2744270 +2744271 +2744272 +2744273 +2744274 +2744275 +2744276 +2744277 +2744278 +2744279 +2744280 +2744281 +2744282 +2744283 +2744284 +2744285 +2744286 +2744287 +2744288 +2744289 +2744290 +2744291 +2744292 +2744293 +2744294 +2744295 +2744296 +2744297 +2744298 +2744299 +2744300 +2744301 +2744302 +2744303 +2744304 +2744305 +2744306 +2744307 +2744308 +2744309 +2744310 +2744311 +2744312 +2744313 +2744314 +2744315 +2744316 +2744317 +2744318 +2744319 +2744320 +2744321 +2744322 +2744323 +2744324 +2744325 +2744326 +2744327 +2744328 +2744329 +2744330 +2744331 +2744332 +2744333 +2744334 +2744335 +2744336 +2744337 +2744338 +2744339 +2744340 +2744341 +2744342 +2744343 +2744344 +2744345 +2744346 +2744347 +2744348 +2744349 +2744350 +2744351 +2744352 +2744353 +2744354 +2744355 +2744356 +2744357 +2744358 +2744359 +2744360 +2744361 +2744362 +2744363 +2744364 +2744365 +2744366 +2744367 +2744368 +2744369 +2744370 +2744371 +2744372 +2744373 +2744374 +2744375 +2744376 +2744377 +2744378 +2744379 +2744380 +2744381 +2744382 +2744383 +2744384 +2744385 +2744386 +2744387 +2744388 +2744389 +2744390 +2744391 +2744392 +2744393 +2744394 +2744395 +2744396 +2744397 +2744398 +2744399 +2744400 +2744401 +2744402 +2744403 +2744404 +2744405 +2744406 +2744407 +2744408 +2744409 +2744410 +2744411 +2744412 +2744413 +2744414 +2744415 +2744416 +2744417 +2744418 +2744419 +2744420 +2744421 +2744422 +2744423 +2744424 +2744425 +2744426 +2744427 +2744428 +2744429 +2744430 +2744431 +2744432 +2744433 +2744434 +2744435 +2744436 +2744437 +2744438 +2744439 +2744440 +2744442 +2744443 +2744444 +2748215 +2748216 +2748217 +2748218 +2748219 +2748220 +2748221 +2748222 +2748223 +2748224 +2748225 +2748226 +2748227 +2748228 +2748229 +2748230 +2748231 +2748232 +2748233 +2748234 +2748235 +2748236 +2748237 +2748238 +2748239 +2748240 +2748241 +2748242 +2748243 +2748244 +2748245 +2748246 +2748247 +2748248 +2748249 +2748250 +2748251 +2748252 +2748253 +2748254 +2748255 +2748256 +2748257 +2748258 +2748259 +2748260 +2748261 +2748262 +2748263 +2748264 +2748265 +2748266 +2748267 +2748268 +2748269 +2748270 +2748271 +2748272 +2748273 +2748274 +2748275 +2748276 +2748277 +2748278 +2748279 +2748280 +2748281 +2748282 +2748283 +2748284 +2748285 +2748286 +2748287 +2748288 +2748289 +2748290 +2748291 +2748292 +2748293 +2748294 +2748295 +2748296 +2748297 +2748298 +2748299 +2748300 +2748301 +2748302 +2748303 +2748304 +2748305 +2748306 +2748307 +2748308 +2748309 +2748310 +2748311 +2748312 +2748313 +2748314 +2748315 +2748316 +2748317 +2748318 +2748319 +2748320 +2748321 +2748322 +2748323 +2748324 +2748325 +2748326 +2748327 +2748328 +2748329 +2748330 +2748331 +2748332 +2748333 +2748334 +2748335 +2748336 +2748337 +2748338 +2748339 +2748340 +2748341 +2748342 +2748343 +2748344 +2748345 +2748346 +2748347 +2748348 +2748349 +2748350 +2748351 +2748352 +2748353 +2748354 +2748355 +2748356 +2748357 +2748358 +2748359 +2748360 +2748361 +2748362 +2748363 +2748364 +2748365 +2748366 +2748367 +2748368 +2748369 +2748370 +2748371 +2748372 +2748373 +2748374 +2748375 +2748376 +2748377 +2748378 +2748379 +2748380 +2748381 +2748382 +2748383 +2748384 +2748385 +2748386 +2748387 +2748388 +2748389 +2748390 +2748391 +2748392 +2748393 +2748394 +2748395 +2748396 +2748397 +2748398 +2748399 +2748400 +2748401 +2748402 +2748403 +2748404 +2748405 +2748406 +2748407 +2748408 +2748409 +2748410 +2748411 +2748412 +2748413 +2748414 +2748415 +2748416 +2748417 +2748418 +2748419 +2748420 +2748421 +2748422 +2748423 +2748424 +2748425 +2748426 +2748427 +2748428 +2748429 +2748430 +2748431 +2748432 +2748433 +2748434 +2748435 +2748436 +2748437 +2748438 +2748439 +2748440 +2748441 +2748442 +2748443 +2748444 +2748445 +2748446 +2748447 +2748448 +2748449 +2748450 +2748451 +2748452 +2748453 +2748454 +2748455 +2748456 +2748457 +2748458 +2748459 +2748460 +2748461 +2748462 +2748463 +2748464 +2748465 +2748466 +2748467 +2748468 +2748469 +2748470 +2748471 +2748472 +2748473 +2748474 +2748475 +2748476 +2748477 +2748478 +2748479 +2748480 +2748481 +2748482 +2748483 +2748484 +2748485 +2748486 +2748487 +2748488 +2748489 +2748490 +2748491 +2748492 +2748493 +2748494 +2748495 +2748496 +2748497 +2748498 +2748499 +2748500 +2748501 +2748502 +2748503 +2748504 +2748505 +2748506 +2748507 +2748508 +2748509 +2748510 +2748511 +2748512 +2748513 +2748514 +2748515 +2748516 +2748517 +2748518 +2748519 +2748520 +2748521 +2748522 +2748523 +2748524 +2748525 +2748526 +2748527 +2748528 +2748529 +2748530 +2748531 +2748532 +2748533 +2748534 +2748535 +2748536 +2748537 +2748538 +2748539 +2748540 +2748541 +2748542 +2748543 +2748544 +2748545 +2748546 +2748547 +2748548 +2748549 +2748550 +2748551 +2748552 +2748553 +2748554 +2748555 +2748556 +2748557 +2748558 +2748559 +2748560 +2748561 +2748562 +2748563 +2748564 +2748565 +2748566 +2748567 +2748568 +2748569 +2748570 +2748571 +2748572 +2748573 +2748574 +2748575 +2748576 +2748577 +2748578 +2748579 +2748580 +2748581 +2748582 +2748583 +2748584 +2748585 +2748586 +2748587 +2748588 +2748589 +2748590 +2748591 +2748592 +2748593 +2748594 +2748595 +2748596 +2748597 +2748598 +2748599 +2748600 +2748601 +2748602 +2748603 +2748604 +2748605 +2748606 +2748607 +2748608 +2748609 +2748610 +2748611 +2748612 +2748613 +2748614 +2748615 +2748616 +2748617 +2748618 +2748619 +2748620 +2748621 +2748622 +2748623 +2748624 +2748625 +2748626 +2748627 +2748628 +2748629 +2748630 +2748631 +2748632 +2748633 +2748634 +2748635 +2748636 +2748637 +2748638 +2748639 +2748640 +2748641 +2748642 +2748643 +2748644 +2748645 +2748646 +2748647 +2748648 +2748649 +2748650 +2748651 +2748652 +2748653 +2748654 +2748655 +2748656 +2748657 +2748658 +2748659 +2748660 +2748661 +2748662 +2748663 +2748664 +2748665 +2748666 +2748667 +2748668 +2748669 +2748670 +2748671 +2748672 +2748673 +2748674 +2748675 +2748676 +2748677 +2748678 +2748679 +2748680 +2748681 +2748682 +2748683 +2748684 +2748685 +2748686 +2748687 +2748688 +2748689 +2748690 +2748691 +2748692 +2748693 +2748694 +2748695 +2748696 +2748697 +2748698 +2748699 +2748700 +2748701 +2748702 +2748703 +2748704 +2748705 +2748706 +2748707 +2748708 +2748709 +2748710 +2748711 +2748712 +2748713 +2748714 +2748715 +2748716 +2748717 +2748718 +2748719 +2748720 +2748721 +2748722 +2748723 +2748724 +2748725 +2748726 +2748727 +2748728 +2748729 +2748730 +2748731 +2748732 +2748733 +2748734 +2748735 +2748736 +2748737 +2748738 +2748739 +2748740 +2748741 +2748742 +2748743 +2748744 +2748745 +2748746 +2748747 +2748748 +2748749 +2748750 +2748751 +2748752 +2748753 +2748754 +2748755 +2748756 +2748757 +2748758 +2748759 +2748760 +2748761 +2748762 +2748763 +2748764 +2752538 +2752539 +2752540 +2752541 +2752542 +2752543 +2752544 +2752545 +2752546 +2752547 +2752548 +2752549 +2752550 +2752551 +2752552 +2752553 +2752554 +2752555 +2752556 +2752557 +2752558 +2752559 +2752560 +2752561 +2752562 +2752563 +2752564 +2752565 +2752566 +2752567 +2752568 +2752569 +2752570 +2752571 +2752572 +2752573 +2752574 +2752575 +2752576 +2752577 +2752578 +2752579 +2752580 +2752581 +2752582 +2752583 +2752584 +2752585 +2752586 +2752587 +2752588 +2752589 +2752590 +2752591 +2752592 +2752593 +2752594 +2752595 +2752596 +2752597 +2752598 +2752599 +2752600 +2752601 +2752602 +2752603 +2752604 +2752605 +2752606 +2752607 +2752608 +2752609 +2752610 +2752611 +2752612 +2752613 +2752614 +2752615 +2752616 +2752617 +2752618 +2752619 +2752620 +2752621 +2752622 +2752623 +2752624 +2752625 +2752626 +2752627 +2752628 +2752629 +2752630 +2752631 +2752632 +2752633 +2752634 +2752635 +2752636 +2752637 +2752638 +2752639 +2752640 +2752641 +2752642 +2752643 +2752644 +2752645 +2752646 +2752647 +2752648 +2752649 +2752650 +2752651 +2752652 +2752653 +2752654 +2752655 +2752656 +2752657 +2752658 +2752659 +2752660 +2752661 +2752662 +2752663 +2752664 +2752665 +2752666 +2752667 +2752668 +2752669 +2752670 +2752671 +2752672 +2752673 +2752674 +2752675 +2752676 +2752677 +2752678 +2752679 +2752680 +2752681 +2752682 +2752683 +2752684 +2752685 +2752686 +2752687 +2752688 +2752689 +2752690 +2752691 +2752692 +2752693 +2752694 +2752695 +2752696 +2752697 +2752698 +2752699 +2752700 +2752701 +2752702 +2752703 +2752704 +2752705 +2752706 +2752707 +2752708 +2752709 +2752710 +2752711 +2752712 +2752713 +2752714 +2752715 +2752716 +2752717 +2752718 +2752719 +2752720 +2752721 +2752722 +2752723 +2752724 +2752725 +2752726 +2752727 +2752728 +2752729 +2752730 +2752731 +2752732 +2752733 +2752734 +2752735 +2752736 +2752737 +2752738 +2752739 +2752740 +2752741 +2752742 +2752743 +2752744 +2752745 +2752746 +2752747 +2752748 +2752749 +2752750 +2752751 +2752752 +2752753 +2752754 +2752755 +2752756 +2752757 +2752758 +2752759 +2752760 +2752761 +2752762 +2752763 +2752764 +2752765 +2752766 +2752767 +2752768 +2752769 +2752770 +2752771 +2752772 +2752773 +2752774 +2752775 +2752776 +2752777 +2752778 +2752779 +2752780 +2752781 +2752782 +2752783 +2752784 +2752785 +2752786 +2752787 +2752788 +2752789 +2752790 +2752791 +2752792 +2752793 +2752794 +2752795 +2752796 +2752797 +2752798 +2752799 +2752800 +2752801 +2752802 +2752803 +2752804 +2752805 +2752806 +2752807 +2752808 +2752809 +2752810 +2752811 +2752812 +2752813 +2752814 +2752815 +2752816 +2752817 +2752818 +2752819 +2752820 +2752821 +2752822 +2752823 +2752824 +2752825 +2752826 +2752827 +2752828 +2752829 +2752830 +2752831 +2752832 +2752833 +2752834 +2752835 +2752836 +2752837 +2752838 +2752839 +2752840 +2752841 +2752842 +2752843 +2752844 +2752845 +2752846 +2752847 +2752848 +2752849 +2752850 +2752851 +2752852 +2752853 +2752854 +2752855 +2752856 +2752857 +2752858 +2752859 +2752860 +2752861 +2752862 +2752863 +2752864 +2752865 +2752866 +2752867 +2752868 +2752869 +2752870 +2752871 +2752872 +2752873 +2752874 +2752875 +2752876 +2752877 +2752878 +2752879 +2752880 +2752881 +2752882 +2752883 +2752884 +2752885 +2752886 +2752887 +2752888 +2752889 +2752890 +2752891 +2752892 +2752893 +2752894 +2752895 +2752896 +2752897 +2752898 +2752899 +2752900 +2752901 +2752902 +2752903 +2752904 +2752905 +2752906 +2752907 +2752908 +2752909 +2752910 +2752911 +2752912 +2752913 +2752914 +2752915 +2752916 +2752917 +2752918 +2752919 +2752920 +2752921 +2752922 +2752923 +2752924 +2752925 +2752926 +2752927 +2752928 +2752929 +2752930 +2752931 +2752932 +2752933 +2752934 +2752935 +2752936 +2752937 +2752938 +2752939 +2752940 +2752941 +2752943 +2752944 +2752945 +2752946 +2752947 +2752948 +2752949 +2752950 +2752951 +2752952 +2752953 +2752954 +2752955 +2752956 +2752957 +2752958 +2752959 +2752960 +2752961 +2752962 +2752963 +2752964 +2752965 +2752966 +2752967 +2752968 +2752969 +2752970 +2752971 +2752972 +2752973 +2752974 +2752975 +2752976 +2752977 +2752978 +2752979 +2752980 +2752981 +2752982 +2752983 +2752984 +2752985 +2752986 +2752987 +2752988 +2752989 +2752990 +2752991 +2752992 +2752993 +2752994 +2752995 +2752996 +2752997 +2752998 +2752999 +2753000 +2753001 +2753002 +2753003 +2753004 +2753005 +2753006 +2753007 +2753008 +2753009 +2753010 +2753011 +2753012 +2753013 +2753014 +2753015 +2753016 +2753017 +2753018 +2753019 +2753020 +2753021 +2753022 +2753023 +2753024 +2753025 +2753026 +2753027 +2753028 +2753029 +2753030 +2753031 +2753032 +2753033 +2753034 +2753035 +2753036 +2753037 +2753038 +2753039 +2753040 +2753041 +2753042 +2753043 +2753044 +2753045 +2753046 +2753047 +2753048 +2753049 +2753050 +2753051 +2753052 +2753053 +2753054 +2753055 +2753056 +2753057 +2753058 +2753059 +2753060 +2753061 +2753062 +2753063 +2753064 +2753065 +2753066 +2753067 +2753068 +2753069 +2753070 +2753071 +2753072 +2753073 +2753074 +2753075 +2753076 +2753077 +2753078 +2753079 +2753080 +2753081 +2753082 +2753083 +2753084 +2753085 +2753086 +2753087 +2753088 +2753089 +2756859 +2756860 +2756861 +2756862 +2756863 +2756864 +2756865 +2756866 +2756867 +2756868 +2756869 +2756870 +2756871 +2756872 +2756873 +2756874 +2756875 +2756876 +2756877 +2756878 +2756879 +2756880 +2756881 +2756882 +2756883 +2756884 +2756885 +2756886 +2756887 +2756888 +2756889 +2756890 +2756891 +2756892 +2756893 +2756894 +2756895 +2756896 +2756897 +2756898 +2756899 +2756900 +2756901 +2756902 +2756903 +2756904 +2756905 +2756906 +2756907 +2756908 +2756909 +2756910 +2756911 +2756912 +2756913 +2756914 +2756915 +2756916 +2756917 +2756918 +2756919 +2756920 +2756921 +2756922 +2756923 +2756924 +2756925 +2756926 +2756927 +2756928 +2756929 +2756930 +2756931 +2756932 +2756933 +2756934 +2756935 +2756936 +2756937 +2756938 +2756939 +2756940 +2756941 +2756942 +2756943 +2756944 +2756945 +2756946 +2756947 +2756948 +2756949 +2756950 +2756951 +2756952 +2756953 +2756954 +2756955 +2756956 +2756957 +2756958 +2756959 +2756960 +2756961 +2756962 +2756963 +2756964 +2756965 +2756966 +2756967 +2756968 +2756969 +2756970 +2756971 +2756972 +2756973 +2756974 +2756975 +2756976 +2756977 +2756978 +2756979 +2756980 +2756981 +2756982 +2756983 +2756984 +2756985 +2756986 +2756987 +2756988 +2756989 +2756990 +2756991 +2756992 +2756993 +2756994 +2756995 +2756996 +2756997 +2756998 +2756999 +2757000 +2757001 +2757002 +2757003 +2757004 +2757005 +2757006 +2757007 +2757008 +2757009 +2757010 +2757011 +2757012 +2757013 +2757014 +2757015 +2757016 +2757017 +2757018 +2757019 +2757020 +2757021 +2757022 +2757023 +2757024 +2757025 +2757026 +2757027 +2757028 +2757029 +2757030 +2757031 +2757032 +2757033 +2757034 +2757035 +2757036 +2757037 +2757038 +2757039 +2757040 +2757041 +2757042 +2757043 +2757044 +2757045 +2757046 +2757047 +2757048 +2757049 +2757050 +2757051 +2757052 +2757053 +2757054 +2757055 +2757056 +2757057 +2757058 +2757059 +2757060 +2757061 +2757062 +2757063 +2757064 +2757065 +2757066 +2757067 +2757068 +2757069 +2757070 +2757071 +2757072 +2757073 +2757074 +2757075 +2757076 +2757077 +2757078 +2757079 +2757080 +2757081 +2757082 +2757083 +2757084 +2757085 +2757086 +2757087 +2757088 +2757089 +2757090 +2757091 +2757092 +2757093 +2757094 +2757095 +2757096 +2757097 +2757098 +2757099 +2757100 +2757101 +2757102 +2757103 +2757104 +2757105 +2757106 +2757107 +2757108 +2757109 +2757110 +2757111 +2757112 +2757113 +2757114 +2757115 +2757116 +2757117 +2757118 +2757119 +2757120 +2757121 +2757122 +2757123 +2757124 +2757125 +2757126 +2757127 +2757128 +2757129 +2757130 +2757131 +2757132 +2757133 +2757134 +2757135 +2757136 +2757137 +2757138 +2757139 +2757140 +2757141 +2757142 +2757143 +2757144 +2757145 +2757146 +2757147 +2757148 +2757149 +2757150 +2757151 +2757152 +2757153 +2757154 +2757155 +2757156 +2757157 +2757158 +2757159 +2757160 +2757161 +2757162 +2757163 +2757164 +2757165 +2757166 +2757167 +2757168 +2757169 +2757170 +2757171 +2757172 +2757173 +2757174 +2757175 +2757176 +2757177 +2757178 +2757179 +2757180 +2757181 +2757182 +2757183 +2757184 +2757185 +2757186 +2757187 +2757188 +2757189 +2757190 +2757191 +2757192 +2757193 +2757194 +2757195 +2757196 +2757197 +2757198 +2757199 +2757200 +2757201 +2757202 +2757203 +2757204 +2757205 +2757206 +2757207 +2757208 +2757209 +2757210 +2757211 +2757212 +2757213 +2757214 +2757215 +2757216 +2757217 +2757218 +2757219 +2757220 +2757221 +2757222 +2757223 +2757224 +2757225 +2757226 +2757227 +2757228 +2757229 +2757230 +2757231 +2757232 +2757233 +2757234 +2757235 +2757236 +2757237 +2757238 +2757239 +2757240 +2757241 +2757242 +2757243 +2757244 +2757245 +2757246 +2757247 +2757248 +2757249 +2757250 +2757251 +2757252 +2757253 +2757254 +2757255 +2757256 +2757257 +2757258 +2757259 +2757260 +2757261 +2757262 +2757263 +2757264 +2757265 +2757266 +2757267 +2757268 +2757269 +2757270 +2757271 +2757272 +2757273 +2757274 +2757275 +2757276 +2757277 +2757278 +2757279 +2757280 +2757281 +2757282 +2757283 +2757284 +2757285 +2757286 +2757287 +2757288 +2757289 +2757290 +2757291 +2757292 +2757293 +2757294 +2757295 +2757296 +2757297 +2757298 +2757299 +2757300 +2757301 +2757302 +2757303 +2757304 +2757305 +2757306 +2757307 +2757308 +2757309 +2757310 +2757311 +2757312 +2757313 +2757314 +2757315 +2757316 +2757317 +2757318 +2757319 +2757320 +2757321 +2757322 +2757323 +2757324 +2757325 +2757326 +2757327 +2757328 +2757329 +2757330 +2757331 +2757332 +2757333 +2757334 +2757335 +2757336 +2757337 +2757338 +2757339 +2757340 +2757341 +2757342 +2757343 +2757344 +2757345 +2757346 +2757347 +2757348 +2757349 +2757350 +2757351 +2757352 +2757353 +2757354 +2757355 +2757356 +2757357 +2757358 +2757359 +2757360 +2757361 +2757362 +2757363 +2757364 +2757365 +2757366 +2757367 +2757368 +2757369 +2757370 +2757371 +2757372 +2757373 +2757374 +2757375 +2757376 +2757377 +2757378 +2757379 +2757380 +2757381 +2757382 +2757383 +2757384 +2757385 +2757386 +2757387 +2757388 +2757389 +2757390 +2757391 +2757392 +2757393 +2757394 +2757395 +2757396 +2757397 +2757398 +2757399 +2757400 +2757401 +2757402 +2757403 +2757404 +2757405 +2757406 +2757407 +2757408 +2757409 +2761179 +2761180 +2761181 +2761182 +2761183 +2761184 +2761185 +2761186 +2761187 +2761188 +2761189 +2761190 +2761191 +2761192 +2761193 +2761194 +2761195 +2761196 +2761197 +2761198 +2761199 +2761200 +2761201 +2761202 +2761203 +2761204 +2761205 +2761206 +2761207 +2761208 +2761209 +2761210 +2761211 +2761212 +2761213 +2761214 +2761215 +2761216 +2761217 +2761218 +2761219 +2761220 +2761221 +2761222 +2761223 +2761224 +2761225 +2761226 +2761227 +2761228 +2761229 +2761230 +2761231 +2761232 +2761233 +2761234 +2761235 +2761236 +2761237 +2761238 +2761239 +2761240 +2761241 +2761242 +2761243 +2761244 +2761245 +2761246 +2761247 +2761248 +2761249 +2761250 +2761251 +2761252 +2761253 +2761254 +2761255 +2761256 +2761257 +2761258 +2761259 +2761260 +2761261 +2761262 +2761263 +2761264 +2761265 +2761266 +2761267 +2761268 +2761269 +2761270 +2761271 +2761272 +2761273 +2761274 +2761275 +2761276 +2761277 +2761278 +2761279 +2761280 +2761281 +2761282 +2761283 +2761284 +2761285 +2761286 +2761287 +2761288 +2761289 +2761290 +2761291 +2761292 +2761293 +2761294 +2761295 +2761296 +2761297 +2761298 +2761299 +2761300 +2761301 +2761302 +2761303 +2761304 +2761305 +2761306 +2761307 +2761308 +2761309 +2761310 +2761311 +2761312 +2761313 +2761314 +2761315 +2761316 +2761317 +2761318 +2761319 +2761320 +2761321 +2761322 +2761323 +2761324 +2761325 +2761326 +2761327 +2761328 +2761329 +2761330 +2761331 +2761332 +2761333 +2761334 +2761335 +2761336 +2761337 +2761338 +2761339 +2761340 +2761341 +2761342 +2761343 +2761344 +2761345 +2761346 +2761347 +2761348 +2761349 +2761350 +2761351 +2761352 +2761353 +2761354 +2761355 +2761356 +2761357 +2761358 +2761359 +2761360 +2761361 +2761362 +2761363 +2761364 +2761365 +2761366 +2761367 +2761368 +2761369 +2761370 +2761371 +2761372 +2761373 +2761374 +2761375 +2761376 +2761377 +2761378 +2761379 +2761380 +2761381 +2761382 +2761383 +2761384 +2761385 +2761386 +2761387 +2761388 +2761389 +2761390 +2761391 +2761392 +2761393 +2761394 +2761395 +2761396 +2761397 +2761398 +2761399 +2761400 +2761401 +2761402 +2761403 +2761404 +2761405 +2761406 +2761407 +2761408 +2761409 +2761410 +2761411 +2761412 +2761413 +2761414 +2761415 +2761416 +2761417 +2761418 +2761419 +2761420 +2761421 +2761422 +2761423 +2761424 +2761425 +2761426 +2761427 +2761428 +2761429 +2761430 +2761431 +2761432 +2761433 +2761434 +2761435 +2761436 +2761437 +2761438 +2761439 +2761440 +2761441 +2761442 +2761443 +2761444 +2761445 +2761446 +2761447 +2761448 +2761449 +2761450 +2761451 +2761452 +2761453 +2761454 +2761455 +2761456 +2761457 +2761458 +2761459 +2761460 +2761461 +2761462 +2761463 +2761464 +2761465 +2761466 +2761467 +2761468 +2761469 +2761470 +2761471 +2761472 +2761473 +2761474 +2761475 +2761476 +2761477 +2761478 +2761479 +2761480 +2761481 +2761482 +2761483 +2761484 +2761485 +2761486 +2761487 +2761488 +2761489 +2761490 +2761491 +2761492 +2761493 +2761494 +2761495 +2761496 +2761497 +2761498 +2761499 +2761500 +2761501 +2761502 +2761503 +2761504 +2761505 +2761506 +2761507 +2761508 +2761509 +2761510 +2761511 +2761512 +2761513 +2761514 +2761515 +2761516 +2761517 +2761518 +2761519 +2761520 +2761521 +2761522 +2761523 +2761524 +2761525 +2761526 +2761527 +2761528 +2761529 +2761530 +2761531 +2761532 +2761533 +2761534 +2761535 +2761536 +2761537 +2761538 +2761539 +2761540 +2761541 +2761542 +2761543 +2761544 +2761545 +2761546 +2761547 +2761548 +2761549 +2761550 +2761551 +2761552 +2761553 +2761554 +2761555 +2761556 +2761557 +2761558 +2761559 +2761560 +2761561 +2761562 +2761563 +2761564 +2761565 +2761566 +2761567 +2761568 +2761569 +2761570 +2761571 +2761572 +2761573 +2761574 +2761575 +2761576 +2761577 +2761578 +2761579 +2761580 +2761581 +2761582 +2761584 +2761585 +2761586 +2761587 +2761588 +2761589 +2761590 +2761591 +2761592 +2761593 +2761594 +2761595 +2761596 +2761597 +2761598 +2761599 +2761600 +2761601 +2761602 +2761603 +2761604 +2761605 +2761606 +2761607 +2761608 +2761609 +2761610 +2761611 +2761612 +2761613 +2761614 +2761615 +2761616 +2761617 +2761618 +2761619 +2761620 +2761621 +2761622 +2761623 +2761624 +2761625 +2761626 +2761627 +2761628 +2761629 +2761630 +2761631 +2761632 +2761633 +2761634 +2761635 +2761636 +2761637 +2761638 +2761639 +2761640 +2761641 +2761642 +2761643 +2761644 +2761645 +2761646 +2761647 +2761648 +2761649 +2761650 +2761651 +2761652 +2761653 +2761654 +2761655 +2761656 +2761657 +2761658 +2761659 +2761660 +2761661 +2761662 +2761663 +2761664 +2761665 +2761666 +2761667 +2761668 +2761669 +2761670 +2761671 +2761672 +2761673 +2761674 +2761675 +2761676 +2761677 +2761678 +2761679 +2761680 +2761681 +2761682 +2761683 +2761684 +2761685 +2761686 +2761687 +2761688 +2761689 +2761690 +2761691 +2761692 +2761693 +2761694 +2761695 +2761696 +2761697 +2761698 +2761699 +2761700 +2761701 +2761702 +2761703 +2761704 +2761705 +2761706 +2761707 +2761708 +2761709 +2761710 +2761711 +2761712 +2761713 +2761714 +2761715 +2761716 +2761717 +2761718 +2761719 +2761720 +2761721 +2761722 +2761723 +2761724 +2761725 +2761726 +2761727 +2761728 +2761729 +2761730 +2765498 +2765499 +2765500 +2765501 +2765502 +2765503 +2765504 +2765505 +2765506 +2765507 +2765508 +2765509 +2765510 +2765511 +2765512 +2765513 +2765514 +2765515 +2765516 +2765517 +2765518 +2765519 +2765520 +2765521 +2765522 +2765523 +2765524 +2765525 +2765526 +2765527 +2765528 +2765529 +2765530 +2765531 +2765532 +2765533 +2765534 +2765535 +2765536 +2765537 +2765538 +2765539 +2765540 +2765541 +2765542 +2765543 +2765544 +2765545 +2765546 +2765547 +2765548 +2765549 +2765550 +2765551 +2765552 +2765553 +2765554 +2765555 +2765556 +2765557 +2765558 +2765559 +2765560 +2765561 +2765562 +2765563 +2765564 +2765565 +2765566 +2765567 +2765568 +2765569 +2765570 +2765571 +2765572 +2765573 +2765574 +2765575 +2765576 +2765577 +2765578 +2765579 +2765580 +2765581 +2765582 +2765583 +2765584 +2765585 +2765586 +2765587 +2765588 +2765589 +2765590 +2765591 +2765592 +2765593 +2765594 +2765595 +2765596 +2765597 +2765598 +2765599 +2765600 +2765601 +2765602 +2765603 +2765604 +2765605 +2765606 +2765607 +2765608 +2765609 +2765610 +2765611 +2765612 +2765613 +2765614 +2765615 +2765616 +2765617 +2765618 +2765619 +2765620 +2765621 +2765622 +2765623 +2765624 +2765625 +2765626 +2765627 +2765628 +2765629 +2765630 +2765631 +2765632 +2765633 +2765634 +2765635 +2765636 +2765637 +2765638 +2765639 +2765640 +2765641 +2765642 +2765643 +2765644 +2765645 +2765646 +2765647 +2765648 +2765649 +2765650 +2765651 +2765652 +2765653 +2765654 +2765655 +2765656 +2765657 +2765658 +2765659 +2765660 +2765661 +2765662 +2765663 +2765664 +2765665 +2765666 +2765667 +2765668 +2765669 +2765670 +2765671 +2765672 +2765673 +2765674 +2765675 +2765676 +2765677 +2765678 +2765679 +2765680 +2765681 +2765682 +2765683 +2765684 +2765685 +2765686 +2765687 +2765688 +2765689 +2765690 +2765691 +2765692 +2765693 +2765694 +2765695 +2765696 +2765697 +2765698 +2765699 +2765700 +2765701 +2765702 +2765703 +2765704 +2765705 +2765706 +2765707 +2765708 +2765709 +2765710 +2765711 +2765712 +2765713 +2765714 +2765715 +2765716 +2765717 +2765718 +2765719 +2765720 +2765721 +2765722 +2765723 +2765724 +2765725 +2765726 +2765727 +2765728 +2765729 +2765730 +2765731 +2765732 +2765733 +2765734 +2765735 +2765736 +2765737 +2765738 +2765739 +2765740 +2765741 +2765742 +2765743 +2765744 +2765745 +2765746 +2765747 +2765748 +2765749 +2765750 +2765751 +2765752 +2765753 +2765754 +2765755 +2765756 +2765757 +2765758 +2765759 +2765760 +2765761 +2765762 +2765763 +2765764 +2765765 +2765766 +2765767 +2765768 +2765769 +2765770 +2765771 +2765772 +2765773 +2765774 +2765775 +2765776 +2765777 +2765778 +2765779 +2765780 +2765781 +2765782 +2765783 +2765784 +2765785 +2765786 +2765787 +2765788 +2765789 +2765790 +2765791 +2765792 +2765793 +2765794 +2765795 +2765796 +2765797 +2765798 +2765799 +2765800 +2765801 +2765802 +2765803 +2765804 +2765805 +2765806 +2765807 +2765808 +2765809 +2765810 +2765811 +2765812 +2765813 +2765814 +2765815 +2765816 +2765817 +2765818 +2765819 +2765820 +2765821 +2765822 +2765824 +2765825 +2765826 +2765827 +2765828 +2765829 +2765830 +2765831 +2765832 +2765833 +2765834 +2765835 +2765836 +2765837 +2765838 +2765839 +2765840 +2765841 +2765842 +2765843 +2765844 +2765845 +2765846 +2765847 +2765848 +2765849 +2765850 +2765851 +2765852 +2765853 +2765854 +2765855 +2765856 +2765857 +2765858 +2765859 +2765860 +2765861 +2765862 +2765863 +2765864 +2765865 +2765866 +2765867 +2765868 +2765869 +2765870 +2765871 +2765872 +2765873 +2765874 +2765875 +2765876 +2765877 +2765878 +2765879 +2765880 +2765881 +2765882 +2765883 +2765884 +2765885 +2765886 +2765887 +2765888 +2765889 +2765890 +2765891 +2765892 +2765893 +2765894 +2765895 +2765896 +2765897 +2765898 +2765899 +2765900 +2765901 +2765902 +2765904 +2765905 +2765906 +2765907 +2765908 +2765909 +2765910 +2765911 +2765912 +2765913 +2765914 +2765915 +2765916 +2765917 +2765918 +2765919 +2765920 +2765921 +2765922 +2765923 +2765924 +2765925 +2765926 +2765927 +2765928 +2765929 +2765930 +2765931 +2765932 +2765933 +2765934 +2765935 +2765936 +2765938 +2765939 +2765940 +2765941 +2765942 +2765943 +2765944 +2765945 +2765946 +2765947 +2765948 +2765949 +2765950 +2765951 +2765952 +2765953 +2765954 +2765955 +2765956 +2765957 +2765958 +2765959 +2765960 +2765961 +2765962 +2765963 +2765964 +2765965 +2765966 +2765967 +2765968 +2765969 +2765970 +2765971 +2765972 +2765973 +2765974 +2765975 +2765976 +2765977 +2765978 +2765979 +2765980 +2765981 +2765982 +2765983 +2765984 +2765985 +2765986 +2765987 +2765988 +2765989 +2765990 +2765991 +2765992 +2765993 +2765994 +2765995 +2765996 +2765997 +2765998 +2765999 +2766000 +2766001 +2766002 +2766003 +2766004 +2766005 +2766006 +2766007 +2766008 +2766009 +2766010 +2766011 +2766012 +2766013 +2766014 +2766015 +2766016 +2766017 +2766018 +2766019 +2766020 +2766021 +2766022 +2766023 +2766024 +2766025 +2766026 +2766027 +2766028 +2766029 +2766030 +2766031 +2766032 +2766033 +2766034 +2766035 +2766036 +2766037 +2766038 +2766039 +2766040 +2766041 +2766042 +2766043 +2766044 +2766045 +2766046 +2766047 +2766048 +2766049 +2766050 +2769818 +2769819 +2769820 +2769821 +2769822 +2769823 +2769824 +2769825 +2769826 +2769827 +2769828 +2769829 +2769830 +2769831 +2769832 +2769833 +2769834 +2769835 +2769836 +2769837 +2769838 +2769839 +2769840 +2769841 +2769842 +2769843 +2769844 +2769845 +2769846 +2769847 +2769848 +2769849 +2769850 +2769851 +2769852 +2769853 +2769854 +2769855 +2769856 +2769857 +2769858 +2769859 +2769860 +2769861 +2769862 +2769863 +2769864 +2769865 +2769866 +2769867 +2769868 +2769869 +2769870 +2769871 +2769872 +2769873 +2769874 +2769875 +2769876 +2769877 +2769878 +2769879 +2769880 +2769881 +2769882 +2769883 +2769884 +2769885 +2769886 +2769887 +2769888 +2769889 +2769890 +2769891 +2769892 +2769893 +2769894 +2769895 +2769896 +2769897 +2769898 +2769899 +2769900 +2769901 +2769902 +2769903 +2769904 +2769905 +2769906 +2769907 +2769908 +2769909 +2769910 +2769911 +2769912 +2769913 +2769914 +2769915 +2769916 +2769917 +2769918 +2769919 +2769920 +2769921 +2769922 +2769923 +2769924 +2769925 +2769926 +2769927 +2769928 +2769929 +2769930 +2769931 +2769932 +2769933 +2769934 +2769935 +2769936 +2769937 +2769938 +2769939 +2769940 +2769941 +2769942 +2769943 +2769944 +2769945 +2769946 +2769947 +2769948 +2769949 +2769950 +2769951 +2769952 +2769953 +2769954 +2769955 +2769956 +2769957 +2769958 +2769959 +2769960 +2769961 +2769962 +2769963 +2769964 +2769965 +2769966 +2769967 +2769968 +2769969 +2769970 +2769971 +2769972 +2769973 +2769974 +2769975 +2769976 +2769977 +2769978 +2769979 +2769980 +2769981 +2769982 +2769983 +2769984 +2769985 +2769986 +2769987 +2769988 +2769989 +2769990 +2769991 +2769992 +2769993 +2769994 +2769995 +2769996 +2769997 +2769998 +2769999 +2770000 +2770001 +2770002 +2770003 +2770004 +2770005 +2770006 +2770007 +2770008 +2770009 +2770010 +2770011 +2770012 +2770013 +2770014 +2770015 +2770016 +2770017 +2770018 +2770019 +2770020 +2770021 +2770022 +2770023 +2770024 +2770025 +2770026 +2770027 +2770028 +2770029 +2770030 +2770031 +2770032 +2770033 +2770034 +2770035 +2770036 +2770037 +2770038 +2770039 +2770040 +2770041 +2770042 +2770043 +2770044 +2770045 +2770046 +2770047 +2770048 +2770049 +2770050 +2770051 +2770052 +2770053 +2770054 +2770055 +2770056 +2770057 +2770058 +2770059 +2770060 +2770061 +2770062 +2770063 +2770064 +2770065 +2770066 +2770067 +2770068 +2770069 +2770070 +2770071 +2770072 +2770073 +2770074 +2770075 +2770076 +2770077 +2770078 +2770079 +2770080 +2770081 +2770082 +2770083 +2770084 +2770085 +2770086 +2770087 +2770088 +2770089 +2770090 +2770091 +2770092 +2770093 +2770094 +2770095 +2770096 +2770097 +2770098 +2770099 +2770100 +2770101 +2770102 +2770103 +2770104 +2770105 +2770106 +2770107 +2770108 +2770109 +2770110 +2770111 +2770112 +2770113 +2770114 +2770115 +2770116 +2770117 +2770118 +2770119 +2770120 +2770121 +2770122 +2770123 +2770124 +2770125 +2770126 +2770127 +2770128 +2770129 +2770130 +2770131 +2770132 +2770133 +2770134 +2770135 +2770136 +2770137 +2770138 +2770139 +2770140 +2770143 +2770144 +2770145 +2770146 +2770147 +2770148 +2770149 +2770150 +2770151 +2770152 +2770153 +2770154 +2770155 +2770156 +2770157 +2770158 +2770159 +2770160 +2770161 +2770162 +2770163 +2770164 +2770165 +2770166 +2770167 +2770168 +2770169 +2770170 +2770171 +2770172 +2770173 +2770174 +2770175 +2770176 +2770177 +2770178 +2770179 +2770180 +2770181 +2770182 +2770183 +2770184 +2770185 +2770186 +2770187 +2770188 +2770189 +2770190 +2770191 +2770192 +2770193 +2770194 +2770195 +2770196 +2770197 +2770198 +2770199 +2770200 +2770201 +2770202 +2770203 +2770204 +2770205 +2770206 +2770207 +2770208 +2770209 +2770210 +2770211 +2770212 +2770213 +2770214 +2770215 +2770216 +2770217 +2770218 +2770219 +2770220 +2770221 +2770222 +2770223 +2770225 +2770226 +2770227 +2770228 +2770229 +2770230 +2770231 +2770232 +2770233 +2770234 +2770235 +2770236 +2770237 +2770238 +2770239 +2770240 +2770241 +2770242 +2770243 +2770244 +2770245 +2770246 +2770247 +2770248 +2770249 +2770250 +2770251 +2770252 +2770253 +2770254 +2770255 +2770256 +2770257 +2770258 +2770259 +2770260 +2770261 +2770262 +2770263 +2770264 +2770265 +2770266 +2770267 +2770268 +2770269 +2770270 +2770271 +2770272 +2770273 +2770274 +2770275 +2770276 +2770277 +2770278 +2770279 +2770280 +2770281 +2770282 +2770283 +2770284 +2770285 +2770286 +2770287 +2770288 +2770289 +2770290 +2770291 +2770292 +2770293 +2770294 +2770295 +2770296 +2770297 +2770298 +2770299 +2770300 +2770301 +2770302 +2770303 +2770304 +2770305 +2770306 +2770307 +2770308 +2770309 +2770310 +2770311 +2770312 +2770313 +2770314 +2770315 +2770316 +2770317 +2770318 +2770319 +2770320 +2770321 +2770322 +2770323 +2770324 +2770325 +2770326 +2770327 +2770328 +2770329 +2770330 +2770331 +2770332 +2770333 +2770334 +2770335 +2770336 +2770337 +2770338 +2770339 +2770340 +2770341 +2770342 +2770343 +2770344 +2770345 +2770346 +2770347 +2770348 +2770349 +2770350 +2770351 +2770352 +2770353 +2770354 +2770355 +2770356 +2770357 +2770358 +2770359 +2770360 +2770361 +2770362 +2770363 +2770364 +2770365 +2770366 +2770367 +2770368 +2770369 +2770370 +2774138 +2774139 +2774140 +2774141 +2774142 +2774143 +2774144 +2774145 +2774146 +2774147 +2774148 +2774149 +2774150 +2774151 +2774152 +2774153 +2774154 +2774155 +2774156 +2774157 +2774158 +2774159 +2774160 +2774161 +2774162 +2774163 +2774164 +2774165 +2774166 +2774167 +2774168 +2774169 +2774170 +2774171 +2774172 +2774173 +2774174 +2774175 +2774176 +2774177 +2774178 +2774179 +2774180 +2774181 +2774182 +2774183 +2774184 +2774185 +2774186 +2774187 +2774188 +2774189 +2774190 +2774191 +2774192 +2774193 +2774194 +2774195 +2774196 +2774197 +2774198 +2774199 +2774200 +2774201 +2774202 +2774203 +2774204 +2774205 +2774206 +2774207 +2774208 +2774209 +2774210 +2774211 +2774212 +2774213 +2774214 +2774215 +2774216 +2774217 +2774218 +2774219 +2774220 +2774221 +2774222 +2774223 +2774224 +2774225 +2774226 +2774227 +2774228 +2774229 +2774230 +2774231 +2774232 +2774233 +2774234 +2774235 +2774236 +2774237 +2774238 +2774239 +2774240 +2774241 +2774242 +2774243 +2774244 +2774245 +2774246 +2774247 +2774248 +2774249 +2774250 +2774251 +2774252 +2774253 +2774254 +2774255 +2774256 +2774257 +2774258 +2774259 +2774260 +2774261 +2774262 +2774263 +2774264 +2774265 +2774266 +2774267 +2774268 +2774269 +2774270 +2774271 +2774272 +2774273 +2774274 +2774275 +2774276 +2774277 +2774278 +2774279 +2774280 +2774281 +2774282 +2774283 +2774284 +2774285 +2774286 +2774287 +2774288 +2774289 +2774290 +2774291 +2774292 +2774293 +2774294 +2774295 +2774296 +2774297 +2774298 +2774299 +2774300 +2774301 +2774302 +2774303 +2774304 +2774305 +2774306 +2774307 +2774308 +2774309 +2774310 +2774311 +2774312 +2774313 +2774314 +2774315 +2774316 +2774317 +2774318 +2774319 +2774320 +2774321 +2774322 +2774323 +2774324 +2774325 +2774326 +2774327 +2774328 +2774329 +2774330 +2774331 +2774332 +2774333 +2774334 +2774335 +2774336 +2774337 +2774338 +2774339 +2774340 +2774341 +2774342 +2774343 +2774344 +2774345 +2774346 +2774347 +2774348 +2774349 +2774350 +2774351 +2774352 +2774353 +2774354 +2774355 +2774356 +2774357 +2774358 +2774359 +2774360 +2774361 +2774362 +2774363 +2774364 +2774365 +2774366 +2774367 +2774368 +2774369 +2774370 +2774371 +2774372 +2774373 +2774374 +2774375 +2774376 +2774377 +2774378 +2774379 +2774380 +2774381 +2774382 +2774383 +2774384 +2774385 +2774386 +2774387 +2774388 +2774389 +2774390 +2774391 +2774392 +2774393 +2774394 +2774395 +2774396 +2774397 +2774398 +2774399 +2774400 +2774401 +2774402 +2774403 +2774404 +2774405 +2774406 +2774407 +2774408 +2774409 +2774410 +2774411 +2774412 +2774413 +2774414 +2774415 +2774416 +2774417 +2774418 +2774419 +2774420 +2774421 +2774422 +2774423 +2774424 +2774425 +2774426 +2774427 +2774428 +2774429 +2774430 +2774431 +2774432 +2774433 +2774434 +2774435 +2774436 +2774437 +2774438 +2774439 +2774440 +2774441 +2774442 +2774443 +2774444 +2774445 +2774446 +2774447 +2774448 +2774449 +2774450 +2774451 +2774452 +2774453 +2774454 +2774455 +2774456 +2774457 +2774458 +2774459 +2774460 +2774461 +2774462 +2774463 +2774464 +2774465 +2774466 +2774467 +2774468 +2774469 +2774470 +2774471 +2774472 +2774473 +2774474 +2774475 +2774476 +2774477 +2774478 +2774479 +2774480 +2774481 +2774482 +2774483 +2774484 +2774485 +2774486 +2774487 +2774488 +2774489 +2774490 +2774491 +2774492 +2774493 +2774494 +2774495 +2774496 +2774497 +2774498 +2774499 +2774500 +2774501 +2774502 +2774503 +2774504 +2774505 +2774506 +2774507 +2774508 +2774509 +2774510 +2774511 +2774512 +2774513 +2774514 +2774515 +2774516 +2774517 +2774518 +2774519 +2774520 +2774521 +2774522 +2774523 +2774524 +2774525 +2774526 +2774527 +2774528 +2774529 +2774530 +2774531 +2774532 +2774533 +2774534 +2774535 +2774536 +2774537 +2774538 +2774539 +2774540 +2774541 +2774542 +2774543 +2774545 +2774546 +2774547 +2774548 +2774549 +2774550 +2774551 +2774552 +2774553 +2774554 +2774555 +2774556 +2774557 +2774558 +2774559 +2774560 +2774561 +2774562 +2774563 +2774564 +2774565 +2774566 +2774567 +2774568 +2774569 +2774570 +2774571 +2774572 +2774573 +2774574 +2774575 +2774576 +2774577 +2774578 +2774579 +2774580 +2774581 +2774582 +2774583 +2774584 +2774585 +2774586 +2774587 +2774588 +2774589 +2774590 +2774591 +2774592 +2774593 +2774594 +2774595 +2774596 +2774597 +2774598 +2774599 +2774600 +2774601 +2774602 +2774603 +2774604 +2774605 +2774606 +2774607 +2774608 +2774609 +2774610 +2774611 +2774612 +2774613 +2774614 +2774615 +2774616 +2774617 +2774618 +2774619 +2774620 +2774621 +2774622 +2774623 +2774624 +2774625 +2774626 +2774627 +2774628 +2774629 +2774630 +2774631 +2774632 +2774633 +2774634 +2774635 +2774636 +2774637 +2774638 +2774639 +2774640 +2774641 +2774642 +2774643 +2774644 +2774645 +2774646 +2774647 +2774648 +2774649 +2774650 +2774651 +2774652 +2774653 +2774654 +2774655 +2774656 +2774657 +2774658 +2774659 +2774660 +2774661 +2774662 +2774663 +2774664 +2774665 +2774666 +2774667 +2774668 +2774669 +2774670 +2774671 +2774672 +2774673 +2774674 +2774675 +2774676 +2774677 +2774678 +2774679 +2774680 +2774681 +2774682 +2774683 +2774684 +2774685 +2774686 +2774687 +2774688 +2774689 +2774690 +2778458 +2778459 +2778460 +2778461 +2778462 +2778463 +2778464 +2778465 +2778466 +2778467 +2778468 +2778469 +2778470 +2778471 +2778472 +2778473 +2778474 +2778475 +2778476 +2778477 +2778478 +2778479 +2778480 +2778481 +2778482 +2778483 +2778484 +2778485 +2778486 +2778487 +2778488 +2778489 +2778490 +2778491 +2778492 +2778493 +2778494 +2778495 +2778496 +2778497 +2778498 +2778499 +2778500 +2778501 +2778502 +2778503 +2778504 +2778505 +2778506 +2778507 +2778508 +2778509 +2778510 +2778511 +2778512 +2778513 +2778514 +2778515 +2778516 +2778517 +2778518 +2778519 +2778520 +2778521 +2778522 +2778523 +2778524 +2778525 +2778526 +2778527 +2778528 +2778529 +2778530 +2778531 +2778532 +2778533 +2778534 +2778535 +2778536 +2778537 +2778538 +2778539 +2778540 +2778541 +2778542 +2778543 +2778544 +2778545 +2778546 +2778547 +2778548 +2778549 +2778550 +2778551 +2778552 +2778553 +2778554 +2778555 +2778556 +2778557 +2778558 +2778559 +2778560 +2778561 +2778562 +2778563 +2778564 +2778565 +2778566 +2778567 +2778568 +2778569 +2778570 +2778571 +2778572 +2778573 +2778574 +2778575 +2778576 +2778577 +2778578 +2778579 +2778580 +2778581 +2778582 +2778583 +2778584 +2778585 +2778586 +2778587 +2778588 +2778589 +2778590 +2778591 +2778592 +2778593 +2778594 +2778595 +2778596 +2778597 +2778598 +2778599 +2778600 +2778601 +2778602 +2778603 +2778604 +2778605 +2778606 +2778607 +2778608 +2778609 +2778610 +2778611 +2778612 +2778613 +2778614 +2778615 +2778616 +2778617 +2778618 +2778619 +2778620 +2778621 +2778622 +2778623 +2778624 +2778625 +2778626 +2778627 +2778628 +2778629 +2778630 +2778631 +2778632 +2778633 +2778634 +2778635 +2778636 +2778637 +2778638 +2778639 +2778640 +2778641 +2778642 +2778643 +2778644 +2778645 +2778646 +2778647 +2778648 +2778649 +2778650 +2778651 +2778652 +2778653 +2778654 +2778655 +2778656 +2778657 +2778658 +2778659 +2778660 +2778661 +2778662 +2778663 +2778664 +2778665 +2778666 +2778667 +2778668 +2778669 +2778670 +2778671 +2778672 +2778673 +2778674 +2778675 +2778676 +2778677 +2778678 +2778679 +2778680 +2778681 +2778682 +2778683 +2778684 +2778685 +2778686 +2778687 +2778688 +2778689 +2778690 +2778691 +2778692 +2778693 +2778694 +2778695 +2778696 +2778697 +2778698 +2778699 +2778700 +2778701 +2778702 +2778703 +2778704 +2778705 +2778706 +2778707 +2778708 +2778709 +2778710 +2778711 +2778712 +2778713 +2778714 +2778715 +2778716 +2778717 +2778718 +2778719 +2778720 +2778721 +2778722 +2778723 +2778724 +2778725 +2778726 +2778727 +2778728 +2778729 +2778730 +2778731 +2778732 +2778733 +2778734 +2778735 +2778736 +2778737 +2778738 +2778739 +2778740 +2778741 +2778742 +2778743 +2778744 +2778745 +2778746 +2778747 +2778748 +2778749 +2778750 +2778751 +2778752 +2778753 +2778754 +2778755 +2778756 +2778757 +2778758 +2778759 +2778760 +2778761 +2778762 +2778763 +2778764 +2778765 +2778766 +2778767 +2778768 +2778769 +2778770 +2778771 +2778772 +2778773 +2778774 +2778775 +2778776 +2778777 +2778778 +2778779 +2778780 +2778781 +2778782 +2778783 +2778784 +2778785 +2778786 +2778787 +2778788 +2778789 +2778790 +2778791 +2778792 +2778793 +2778794 +2778795 +2778796 +2778797 +2778798 +2778799 +2778800 +2778801 +2778802 +2778803 +2778804 +2778805 +2778806 +2778807 +2778808 +2778809 +2778810 +2778811 +2778812 +2778813 +2778814 +2778815 +2778816 +2778817 +2778818 +2778819 +2778820 +2778821 +2778822 +2778823 +2778824 +2778825 +2778826 +2778827 +2778828 +2778829 +2778830 +2778831 +2778832 +2778833 +2778834 +2778835 +2778836 +2778837 +2778838 +2778839 +2778840 +2778841 +2778842 +2778843 +2778844 +2778845 +2778846 +2778847 +2778848 +2778849 +2778850 +2778851 +2778852 +2778853 +2778854 +2778855 +2778856 +2778857 +2778858 +2778859 +2778860 +2778861 +2778862 +2778865 +2778866 +2778867 +2778868 +2778869 +2778870 +2778871 +2778872 +2778873 +2778874 +2778875 +2778876 +2778877 +2778878 +2778879 +2778880 +2778881 +2778882 +2778883 +2778884 +2778885 +2778886 +2778887 +2778888 +2778889 +2778890 +2778891 +2778892 +2778893 +2778894 +2778895 +2778896 +2778897 +2778898 +2778899 +2778900 +2778901 +2778902 +2778903 +2778904 +2778905 +2778906 +2778907 +2778908 +2778909 +2778910 +2778911 +2778912 +2778914 +2778915 +2778916 +2778917 +2778918 +2778919 +2778920 +2778921 +2778922 +2778923 +2778924 +2778925 +2778926 +2778927 +2778928 +2778929 +2778930 +2778931 +2778932 +2778933 +2778934 +2778935 +2778936 +2778937 +2778938 +2778939 +2778940 +2778941 +2778942 +2778943 +2778944 +2778945 +2778946 +2778947 +2778948 +2778949 +2778950 +2778951 +2778952 +2778953 +2778954 +2778955 +2778956 +2778957 +2778958 +2778959 +2778960 +2778961 +2778962 +2778963 +2778964 +2778965 +2778966 +2778967 +2778968 +2778969 +2778970 +2778971 +2778972 +2778973 +2778974 +2778975 +2778976 +2778977 +2778978 +2778979 +2778980 +2778981 +2778982 +2778983 +2778984 +2778985 +2778986 +2778987 +2778988 +2778989 +2778990 +2778991 +2778992 +2778993 +2778994 +2778995 +2778996 +2778997 +2778998 +2778999 +2779000 +2779001 +2779002 +2779003 +2779004 +2779005 +2779006 +2779007 +2779008 +2779009 +2779010 +2782781 +2782782 +2782783 +2782784 +2782785 +2782786 +2782787 +2782788 +2782789 +2782790 +2782791 +2782792 +2782793 +2782794 +2782795 +2782796 +2782797 +2782798 +2782799 +2782800 +2782801 +2782802 +2782803 +2782804 +2782805 +2782806 +2782807 +2782808 +2782809 +2782810 +2782811 +2782812 +2782813 +2782814 +2782815 +2782816 +2782817 +2782818 +2782819 +2782820 +2782821 +2782822 +2782823 +2782824 +2782825 +2782826 +2782827 +2782828 +2782829 +2782830 +2782831 +2782832 +2782833 +2782834 +2782835 +2782836 +2782837 +2782838 +2782839 +2782840 +2782841 +2782842 +2782843 +2782844 +2782845 +2782846 +2782847 +2782848 +2782849 +2782850 +2782851 +2782852 +2782853 +2782854 +2782855 +2782856 +2782857 +2782858 +2782859 +2782860 +2782861 +2782862 +2782863 +2782864 +2782865 +2782866 +2782867 +2782868 +2782869 +2782870 +2782871 +2782872 +2782873 +2782874 +2782875 +2782876 +2782877 +2782878 +2782879 +2782880 +2782881 +2782882 +2782883 +2782884 +2782885 +2782886 +2782887 +2782888 +2782889 +2782890 +2782891 +2782892 +2782893 +2782894 +2782895 +2782896 +2782897 +2782898 +2782899 +2782900 +2782901 +2782902 +2782903 +2782904 +2782905 +2782906 +2782907 +2782908 +2782909 +2782910 +2782911 +2782912 +2782913 +2782914 +2782915 +2782916 +2782917 +2782918 +2782919 +2782920 +2782921 +2782922 +2782923 +2782924 +2782925 +2782926 +2782927 +2782928 +2782929 +2782930 +2782931 +2782932 +2782933 +2782934 +2782935 +2782936 +2782937 +2782938 +2782939 +2782940 +2782941 +2782942 +2782943 +2782944 +2782945 +2782946 +2782947 +2782948 +2782949 +2782950 +2782951 +2782952 +2782953 +2782954 +2782955 +2782956 +2782957 +2782958 +2782959 +2782960 +2782961 +2782962 +2782963 +2782964 +2782965 +2782966 +2782967 +2782968 +2782969 +2782970 +2782971 +2782972 +2782973 +2782974 +2782975 +2782976 +2782977 +2782978 +2782979 +2782980 +2782981 +2782982 +2782983 +2782984 +2782985 +2782986 +2782987 +2782988 +2782989 +2782990 +2782991 +2782992 +2782993 +2782994 +2782995 +2782996 +2782997 +2782998 +2782999 +2783000 +2783001 +2783002 +2783003 +2783004 +2783005 +2783006 +2783007 +2783008 +2783009 +2783010 +2783011 +2783012 +2783013 +2783014 +2783015 +2783016 +2783017 +2783018 +2783019 +2783020 +2783021 +2783022 +2783023 +2783024 +2783025 +2783026 +2783027 +2783028 +2783029 +2783030 +2783031 +2783032 +2783033 +2783034 +2783035 +2783036 +2783037 +2783038 +2783039 +2783040 +2783041 +2783042 +2783043 +2783044 +2783045 +2783046 +2783047 +2783048 +2783049 +2783050 +2783051 +2783052 +2783053 +2783054 +2783055 +2783056 +2783057 +2783058 +2783059 +2783060 +2783061 +2783062 +2783063 +2783064 +2783065 +2783066 +2783067 +2783068 +2783069 +2783070 +2783071 +2783072 +2783073 +2783074 +2783075 +2783076 +2783077 +2783078 +2783079 +2783080 +2783081 +2783082 +2783083 +2783084 +2783085 +2783086 +2783087 +2783088 +2783089 +2783090 +2783091 +2783092 +2783093 +2783094 +2783095 +2783096 +2783097 +2783098 +2783099 +2783100 +2783101 +2783102 +2783103 +2783104 +2783105 +2783106 +2783107 +2783108 +2783109 +2783110 +2783111 +2783112 +2783113 +2783114 +2783115 +2783116 +2783117 +2783118 +2783119 +2783120 +2783121 +2783122 +2783123 +2783124 +2783125 +2783126 +2783127 +2783128 +2783129 +2783130 +2783131 +2783132 +2783133 +2783134 +2783135 +2783136 +2783137 +2783138 +2783139 +2783140 +2783141 +2783142 +2783143 +2783144 +2783145 +2783146 +2783147 +2783148 +2783149 +2783150 +2783151 +2783152 +2783153 +2783154 +2783155 +2783156 +2783157 +2783158 +2783159 +2783160 +2783161 +2783162 +2783163 +2783164 +2783165 +2783166 +2783167 +2783168 +2783169 +2783170 +2783171 +2783172 +2783173 +2783174 +2783175 +2783176 +2783177 +2783178 +2783179 +2783180 +2783181 +2783182 +2783184 +2783186 +2783187 +2783188 +2783189 +2783190 +2783191 +2783192 +2783193 +2783194 +2783195 +2783196 +2783197 +2783198 +2783199 +2783200 +2783201 +2783202 +2783203 +2783204 +2783205 +2783206 +2783207 +2783208 +2783209 +2783210 +2783211 +2783212 +2783213 +2783214 +2783215 +2783216 +2783217 +2783218 +2783219 +2783220 +2783221 +2783222 +2783223 +2783224 +2783225 +2783226 +2783227 +2783228 +2783229 +2783230 +2783231 +2783232 +2783233 +2783234 +2783235 +2783236 +2783237 +2783238 +2783239 +2783242 +2783243 +2783244 +2783245 +2783246 +2783247 +2783248 +2783249 +2783250 +2783251 +2783252 +2783253 +2783254 +2783255 +2783256 +2783257 +2783258 +2783259 +2783260 +2783261 +2783262 +2783263 +2783264 +2783265 +2783266 +2783267 +2783268 +2783269 +2783270 +2783271 +2783272 +2783273 +2783274 +2783275 +2783276 +2783277 +2783278 +2783279 +2783280 +2783281 +2783282 +2783283 +2783284 +2783285 +2783286 +2783287 +2783288 +2783289 +2783290 +2783291 +2783292 +2783293 +2783294 +2783295 +2783296 +2783297 +2783298 +2783299 +2783300 +2783301 +2783302 +2783303 +2783304 +2783305 +2783306 +2783307 +2783308 +2783309 +2783310 +2783311 +2783312 +2783313 +2783314 +2783315 +2783316 +2783317 +2783318 +2783319 +2783320 +2783321 +2783322 +2783323 +2783324 +2783325 +2783326 +2783327 +2783328 +2783329 +2783330 +2787101 +2787102 +2787103 +2787104 +2787105 +2787106 +2787107 +2787108 +2787109 +2787110 +2787111 +2787112 +2787113 +2787114 +2787115 +2787116 +2787117 +2787118 +2787119 +2787120 +2787121 +2787122 +2787123 +2787124 +2787125 +2787126 +2787127 +2787128 +2787129 +2787130 +2787131 +2787132 +2787133 +2787134 +2787135 +2787136 +2787137 +2787138 +2787139 +2787140 +2787141 +2787142 +2787143 +2787144 +2787145 +2787146 +2787147 +2787148 +2787149 +2787150 +2787151 +2787152 +2787153 +2787154 +2787155 +2787156 +2787157 +2787158 +2787159 +2787160 +2787161 +2787162 +2787163 +2787164 +2787165 +2787166 +2787167 +2787168 +2787169 +2787170 +2787171 +2787172 +2787173 +2787174 +2787175 +2787176 +2787177 +2787178 +2787179 +2787180 +2787181 +2787182 +2787183 +2787184 +2787185 +2787186 +2787187 +2787188 +2787189 +2787190 +2787191 +2787192 +2787193 +2787194 +2787195 +2787196 +2787197 +2787198 +2787199 +2787200 +2787201 +2787202 +2787203 +2787204 +2787205 +2787206 +2787207 +2787208 +2787209 +2787210 +2787211 +2787212 +2787213 +2787214 +2787215 +2787216 +2787217 +2787218 +2787219 +2787220 +2787221 +2787222 +2787223 +2787224 +2787225 +2787226 +2787227 +2787228 +2787229 +2787230 +2787231 +2787232 +2787233 +2787234 +2787235 +2787236 +2787237 +2787238 +2787239 +2787240 +2787241 +2787242 +2787243 +2787244 +2787245 +2787246 +2787247 +2787248 +2787249 +2787250 +2787251 +2787252 +2787253 +2787254 +2787255 +2787256 +2787257 +2787258 +2787259 +2787260 +2787261 +2787262 +2787263 +2787264 +2787265 +2787266 +2787267 +2787268 +2787269 +2787270 +2787271 +2787272 +2787273 +2787274 +2787275 +2787276 +2787277 +2787278 +2787279 +2787280 +2787281 +2787282 +2787283 +2787284 +2787285 +2787286 +2787287 +2787288 +2787289 +2787290 +2787291 +2787292 +2787293 +2787294 +2787295 +2787296 +2787297 +2787298 +2787299 +2787300 +2787301 +2787302 +2787303 +2787304 +2787305 +2787306 +2787307 +2787308 +2787309 +2787310 +2787311 +2787312 +2787313 +2787314 +2787315 +2787316 +2787317 +2787318 +2787319 +2787320 +2787321 +2787322 +2787323 +2787324 +2787325 +2787326 +2787327 +2787328 +2787329 +2787330 +2787331 +2787332 +2787333 +2787334 +2787335 +2787336 +2787337 +2787338 +2787339 +2787340 +2787341 +2787342 +2787343 +2787344 +2787345 +2787346 +2787347 +2787348 +2787349 +2787350 +2787351 +2787352 +2787353 +2787354 +2787355 +2787356 +2787357 +2787358 +2787359 +2787360 +2787361 +2787362 +2787363 +2787364 +2787365 +2787366 +2787367 +2787368 +2787369 +2787370 +2787371 +2787372 +2787373 +2787374 +2787375 +2787376 +2787377 +2787378 +2787379 +2787380 +2787381 +2787382 +2787383 +2787384 +2787385 +2787386 +2787387 +2787388 +2787389 +2787390 +2787391 +2787392 +2787393 +2787394 +2787395 +2787396 +2787397 +2787398 +2787399 +2787400 +2787401 +2787402 +2787403 +2787404 +2787405 +2787406 +2787407 +2787408 +2787409 +2787410 +2787411 +2787412 +2787413 +2787414 +2787415 +2787416 +2787417 +2787418 +2787419 +2787420 +2787421 +2787422 +2787423 +2787424 +2787425 +2787426 +2787427 +2787428 +2787429 +2787430 +2787431 +2787432 +2787433 +2787434 +2787435 +2787436 +2787437 +2787438 +2787439 +2787440 +2787441 +2787442 +2787443 +2787444 +2787445 +2787446 +2787447 +2787448 +2787449 +2787450 +2787451 +2787452 +2787453 +2787454 +2787455 +2787456 +2787457 +2787458 +2787459 +2787460 +2787461 +2787462 +2787463 +2787464 +2787465 +2787466 +2787467 +2787468 +2787469 +2787470 +2787471 +2787472 +2787473 +2787474 +2787475 +2787476 +2787477 +2787478 +2787479 +2787480 +2787481 +2787482 +2787483 +2787484 +2787485 +2787486 +2787487 +2787488 +2787489 +2787490 +2787491 +2787492 +2787493 +2787494 +2787495 +2787496 +2787497 +2787498 +2787499 +2787500 +2787501 +2787502 +2787503 +2787504 +2787506 +2787507 +2787508 +2787509 +2787510 +2787511 +2787512 +2787513 +2787514 +2787515 +2787516 +2787517 +2787518 +2787519 +2787520 +2787521 +2787522 +2787523 +2787524 +2787525 +2787526 +2787527 +2787528 +2787529 +2787530 +2787531 +2787532 +2787533 +2787534 +2787535 +2787536 +2787537 +2787538 +2787539 +2787540 +2787541 +2787542 +2787543 +2787544 +2787545 +2787546 +2787547 +2787548 +2787549 +2787550 +2787551 +2787552 +2787553 +2787554 +2787555 +2787556 +2787557 +2787558 +2787560 +2787561 +2787562 +2787563 +2787564 +2787565 +2787566 +2787567 +2787568 +2787569 +2787570 +2787571 +2787572 +2787573 +2787574 +2787575 +2787576 +2787577 +2787578 +2787579 +2787580 +2787581 +2787582 +2787583 +2787584 +2787585 +2787586 +2787587 +2787588 +2787589 +2787590 +2787591 +2787592 +2787593 +2787594 +2787595 +2787596 +2787597 +2787598 +2787599 +2787600 +2787601 +2787602 +2787603 +2787604 +2787605 +2787606 +2787607 +2787608 +2787609 +2787610 +2787611 +2787612 +2787613 +2787614 +2787615 +2787616 +2787617 +2787618 +2787619 +2787620 +2787621 +2787622 +2787623 +2787624 +2787625 +2787626 +2787627 +2787628 +2787629 +2787630 +2787631 +2787632 +2787633 +2787634 +2787635 +2787636 +2787637 +2787638 +2787639 +2787640 +2787641 +2787642 +2787643 +2787644 +2787645 +2787646 +2787647 +2787648 +2787649 +2787650 +2791421 +2791422 +2791423 +2791424 +2791425 +2791426 +2791427 +2791428 +2791429 +2791430 +2791431 +2791432 +2791433 +2791434 +2791435 +2791436 +2791437 +2791438 +2791439 +2791440 +2791441 +2791442 +2791443 +2791444 +2791445 +2791446 +2791447 +2791448 +2791449 +2791450 +2791451 +2791452 +2791453 +2791454 +2791455 +2791456 +2791457 +2791458 +2791459 +2791460 +2791461 +2791462 +2791463 +2791464 +2791465 +2791466 +2791467 +2791468 +2791469 +2791470 +2791471 +2791472 +2791473 +2791474 +2791475 +2791476 +2791477 +2791478 +2791479 +2791480 +2791481 +2791482 +2791483 +2791484 +2791485 +2791486 +2791487 +2791488 +2791489 +2791490 +2791491 +2791492 +2791493 +2791494 +2791495 +2791496 +2791497 +2791498 +2791499 +2791500 +2791501 +2791502 +2791503 +2791504 +2791505 +2791506 +2791508 +2791509 +2791510 +2791511 +2791512 +2791513 +2791514 +2791515 +2791516 +2791517 +2791518 +2791519 +2791520 +2791521 +2791522 +2791523 +2791524 +2791525 +2791526 +2791527 +2791528 +2791529 +2791530 +2791531 +2791532 +2791533 +2791534 +2791535 +2791536 +2791537 +2791538 +2791539 +2791540 +2791541 +2791542 +2791543 +2791544 +2791545 +2791546 +2791547 +2791548 +2791549 +2791550 +2791551 +2791552 +2791553 +2791554 +2791555 +2791556 +2791557 +2791558 +2791559 +2791560 +2791561 +2791562 +2791563 +2791564 +2791565 +2791566 +2791567 +2791568 +2791569 +2791570 +2791571 +2791572 +2791573 +2791574 +2791575 +2791576 +2791577 +2791578 +2791579 +2791580 +2791581 +2791582 +2791583 +2791584 +2791585 +2791586 +2791587 +2791588 +2791589 +2791590 +2791591 +2791592 +2791593 +2791594 +2791595 +2791596 +2791597 +2791598 +2791599 +2791600 +2791601 +2791602 +2791603 +2791604 +2791605 +2791606 +2791607 +2791608 +2791609 +2791610 +2791611 +2791612 +2791613 +2791614 +2791615 +2791616 +2791617 +2791618 +2791619 +2791620 +2791621 +2791622 +2791623 +2791624 +2791625 +2791626 +2791627 +2791628 +2791629 +2791630 +2791631 +2791632 +2791633 +2791634 +2791635 +2791636 +2791637 +2791638 +2791639 +2791640 +2791641 +2791642 +2791643 +2791644 +2791645 +2791646 +2791647 +2791648 +2791649 +2791650 +2791651 +2791652 +2791653 +2791654 +2791655 +2791656 +2791657 +2791658 +2791659 +2791660 +2791661 +2791662 +2791663 +2791664 +2791665 +2791666 +2791667 +2791668 +2791669 +2791670 +2791671 +2791672 +2791673 +2791674 +2791675 +2791676 +2791677 +2791678 +2791679 +2791680 +2791681 +2791682 +2791683 +2791684 +2791685 +2791686 +2791687 +2791688 +2791689 +2791690 +2791691 +2791692 +2791693 +2791694 +2791695 +2791696 +2791697 +2791698 +2791699 +2791700 +2791701 +2791702 +2791703 +2791704 +2791705 +2791706 +2791707 +2791708 +2791709 +2791710 +2791711 +2791712 +2791713 +2791714 +2791715 +2791716 +2791717 +2791718 +2791719 +2791720 +2791721 +2791722 +2791723 +2791724 +2791725 +2791726 +2791727 +2791728 +2791729 +2791730 +2791731 +2791732 +2791733 +2791734 +2791735 +2791736 +2791737 +2791738 +2791739 +2791740 +2791741 +2791742 +2791743 +2791744 +2791745 +2791746 +2791747 +2791748 +2791749 +2791750 +2791751 +2791752 +2791753 +2791754 +2791755 +2791756 +2791757 +2791758 +2791759 +2791760 +2791761 +2791762 +2791763 +2791764 +2791765 +2791766 +2791767 +2791768 +2791769 +2791770 +2791771 +2791772 +2791773 +2791774 +2791775 +2791776 +2791777 +2791778 +2791779 +2791780 +2791781 +2791782 +2791783 +2791784 +2791785 +2791786 +2791787 +2791788 +2791789 +2791790 +2791791 +2791792 +2791793 +2791794 +2791795 +2791796 +2791797 +2791798 +2791799 +2791800 +2791801 +2791802 +2791803 +2791804 +2791805 +2791806 +2791807 +2791808 +2791809 +2791810 +2791811 +2791812 +2791813 +2791814 +2791815 +2791816 +2791817 +2791818 +2791819 +2791820 +2791821 +2791822 +2791823 +2791824 +2791826 +2791827 +2791828 +2791829 +2791830 +2791831 +2791832 +2791833 +2791834 +2791835 +2791836 +2791837 +2791838 +2791839 +2791840 +2791841 +2791842 +2791843 +2791844 +2791845 +2791846 +2791847 +2791848 +2791849 +2791850 +2791851 +2791852 +2791853 +2791854 +2791855 +2791856 +2791857 +2791858 +2791859 +2791860 +2791861 +2791862 +2791863 +2791864 +2791865 +2791866 +2791867 +2791868 +2791869 +2791870 +2791871 +2791872 +2791873 +2791874 +2791875 +2791876 +2791877 +2791878 +2791879 +2791880 +2791881 +2791882 +2791883 +2791884 +2791885 +2791886 +2791887 +2791888 +2791889 +2791890 +2791891 +2791892 +2791893 +2791894 +2791895 +2791896 +2791897 +2791898 +2791899 +2791900 +2791901 +2791902 +2791903 +2791904 +2791905 +2791906 +2791907 +2791908 +2791909 +2791910 +2791911 +2791912 +2791913 +2791914 +2791915 +2791916 +2791917 +2791918 +2791919 +2791920 +2791921 +2791922 +2791923 +2791924 +2791925 +2791926 +2791927 +2791928 +2791929 +2791930 +2791931 +2791932 +2791933 +2791934 +2791935 +2791936 +2791937 +2791938 +2791939 +2791940 +2791941 +2791942 +2791943 +2791944 +2791945 +2791946 +2791947 +2791948 +2791949 +2791950 +2791951 +2791952 +2791953 +2791954 +2791955 +2791956 +2791957 +2791958 +2791959 +2791960 +2791961 +2791962 +2791963 +2791964 +2791965 +2791966 +2791967 +2791968 +2791969 +2791970 +2791971 +2791972 +2795744 +2795745 +2795746 +2795747 +2795748 +2795749 +2795750 +2795751 +2795752 +2795753 +2795754 +2795755 +2795756 +2795757 +2795758 +2795759 +2795760 +2795761 +2795762 +2795763 +2795764 +2795765 +2795766 +2795767 +2795768 +2795769 +2795770 +2795771 +2795772 +2795773 +2795774 +2795775 +2795776 +2795777 +2795778 +2795779 +2795780 +2795781 +2795782 +2795783 +2795784 +2795785 +2795786 +2795787 +2795788 +2795789 +2795790 +2795791 +2795792 +2795793 +2795794 +2795795 +2795796 +2795797 +2795798 +2795799 +2795800 +2795801 +2795802 +2795803 +2795804 +2795805 +2795806 +2795807 +2795808 +2795809 +2795810 +2795811 +2795812 +2795813 +2795814 +2795815 +2795816 +2795817 +2795818 +2795819 +2795820 +2795821 +2795822 +2795824 +2795825 +2795826 +2795827 +2795828 +2795829 +2795830 +2795831 +2795832 +2795833 +2795834 +2795835 +2795836 +2795837 +2795838 +2795839 +2795840 +2795841 +2795842 +2795843 +2795844 +2795845 +2795846 +2795847 +2795848 +2795849 +2795850 +2795851 +2795852 +2795853 +2795854 +2795855 +2795856 +2795857 +2795858 +2795859 +2795860 +2795861 +2795862 +2795863 +2795864 +2795865 +2795866 +2795867 +2795868 +2795869 +2795870 +2795871 +2795872 +2795873 +2795874 +2795875 +2795876 +2795877 +2795878 +2795879 +2795880 +2795881 +2795882 +2795883 +2795884 +2795885 +2795886 +2795887 +2795888 +2795889 +2795890 +2795891 +2795892 +2795893 +2795894 +2795895 +2795896 +2795897 +2795898 +2795899 +2795900 +2795901 +2795902 +2795903 +2795904 +2795905 +2795906 +2795907 +2795908 +2795909 +2795910 +2795911 +2795912 +2795913 +2795914 +2795915 +2795916 +2795917 +2795918 +2795919 +2795920 +2795921 +2795922 +2795923 +2795924 +2795925 +2795926 +2795927 +2795928 +2795929 +2795930 +2795931 +2795932 +2795933 +2795934 +2795935 +2795936 +2795937 +2795938 +2795939 +2795940 +2795941 +2795942 +2795943 +2795944 +2795945 +2795946 +2795947 +2795948 +2795949 +2795950 +2795951 +2795952 +2795953 +2795954 +2795955 +2795956 +2795957 +2795958 +2795959 +2795960 +2795961 +2795962 +2795963 +2795964 +2795965 +2795966 +2795967 +2795968 +2795969 +2795970 +2795971 +2795972 +2795973 +2795974 +2795975 +2795976 +2795977 +2795978 +2795979 +2795980 +2795981 +2795982 +2795983 +2795984 +2795985 +2795986 +2795987 +2795988 +2795989 +2795990 +2795991 +2795992 +2795993 +2795994 +2795995 +2795996 +2795997 +2795998 +2795999 +2796000 +2796001 +2796002 +2796003 +2796004 +2796005 +2796006 +2796007 +2796008 +2796009 +2796010 +2796011 +2796012 +2796013 +2796014 +2796015 +2796016 +2796017 +2796018 +2796019 +2796020 +2796021 +2796022 +2796023 +2796024 +2796025 +2796026 +2796027 +2796028 +2796029 +2796030 +2796031 +2796032 +2796033 +2796034 +2796035 +2796036 +2796037 +2796038 +2796039 +2796040 +2796041 +2796042 +2796043 +2796044 +2796045 +2796046 +2796047 +2796048 +2796049 +2796050 +2796051 +2796052 +2796053 +2796054 +2796055 +2796056 +2796057 +2796058 +2796059 +2796060 +2796061 +2796062 +2796063 +2796064 +2796065 +2796066 +2796067 +2796068 +2796069 +2796070 +2796071 +2796072 +2796073 +2796074 +2796075 +2796076 +2796077 +2796078 +2796079 +2796080 +2796081 +2796082 +2796083 +2796084 +2796085 +2796086 +2796087 +2796088 +2796089 +2796090 +2796091 +2796092 +2796093 +2796094 +2796095 +2796096 +2796097 +2796098 +2796099 +2796100 +2796101 +2796102 +2796103 +2796104 +2796105 +2796106 +2796107 +2796108 +2796109 +2796110 +2796111 +2796112 +2796113 +2796114 +2796115 +2796116 +2796117 +2796118 +2796119 +2796120 +2796121 +2796122 +2796123 +2796124 +2796125 +2796126 +2796127 +2796128 +2796129 +2796130 +2796131 +2796132 +2796133 +2796134 +2796135 +2796136 +2796137 +2796138 +2796139 +2796140 +2796141 +2796142 +2796143 +2796145 +2796146 +2796147 +2796148 +2796149 +2796150 +2796151 +2796152 +2796153 +2796154 +2796155 +2796156 +2796157 +2796158 +2796159 +2796160 +2796161 +2796162 +2796163 +2796164 +2796165 +2796166 +2796167 +2796168 +2796169 +2796170 +2796171 +2796172 +2796173 +2796174 +2796175 +2796176 +2796177 +2796178 +2796179 +2796180 +2796181 +2796182 +2796183 +2796184 +2796185 +2796186 +2796187 +2796188 +2796189 +2796190 +2796191 +2796192 +2796193 +2796194 +2796195 +2796196 +2796197 +2796198 +2796199 +2796200 +2796201 +2796202 +2796203 +2796204 +2796205 +2796206 +2796207 +2796208 +2796209 +2796210 +2796211 +2796212 +2796213 +2796214 +2796215 +2796216 +2796217 +2796218 +2796219 +2796220 +2796221 +2796222 +2796223 +2796224 +2796225 +2796226 +2796227 +2796228 +2796229 +2796230 +2796231 +2796232 +2796233 +2796234 +2796235 +2796236 +2796237 +2796238 +2796239 +2796240 +2796241 +2796242 +2796243 +2796244 +2796245 +2796246 +2796247 +2796248 +2796249 +2796250 +2796251 +2796252 +2796253 +2796254 +2796255 +2796256 +2796257 +2796258 +2796259 +2796260 +2796261 +2796262 +2796263 +2796264 +2796265 +2796266 +2796267 +2796268 +2796269 +2796270 +2796271 +2796272 +2796273 +2796274 +2796275 +2796276 +2796277 +2796278 +2796279 +2796280 +2796281 +2796282 +2796283 +2796284 +2796291 +2796292 +2796293 +2800064 +2800065 +2800066 +2800067 +2800068 +2800069 +2800070 +2800071 +2800072 +2800073 +2800074 +2800075 +2800076 +2800077 +2800078 +2800079 +2800080 +2800081 +2800082 +2800084 +2800085 +2800086 +2800087 +2800088 +2800089 +2800090 +2800091 +2800092 +2800093 +2800094 +2800095 +2800096 +2800097 +2800098 +2800099 +2800100 +2800101 +2800102 +2800103 +2800104 +2800105 +2800106 +2800107 +2800108 +2800109 +2800110 +2800111 +2800112 +2800113 +2800114 +2800115 +2800116 +2800117 +2800118 +2800119 +2800120 +2800121 +2800122 +2800123 +2800124 +2800125 +2800126 +2800127 +2800128 +2800129 +2800130 +2800131 +2800132 +2800133 +2800134 +2800135 +2800136 +2800137 +2800138 +2800139 +2800140 +2800141 +2800142 +2800143 +2800144 +2800145 +2800146 +2800147 +2800148 +2800149 +2800150 +2800151 +2800152 +2800153 +2800154 +2800155 +2800156 +2800157 +2800158 +2800159 +2800160 +2800161 +2800162 +2800163 +2800164 +2800165 +2800166 +2800167 +2800168 +2800169 +2800170 +2800171 +2800172 +2800173 +2800174 +2800175 +2800176 +2800177 +2800178 +2800179 +2800180 +2800181 +2800182 +2800183 +2800184 +2800185 +2800186 +2800187 +2800188 +2800189 +2800190 +2800191 +2800192 +2800193 +2800194 +2800195 +2800196 +2800197 +2800198 +2800199 +2800200 +2800201 +2800202 +2800203 +2800204 +2800205 +2800206 +2800207 +2800208 +2800209 +2800210 +2800211 +2800212 +2800213 +2800214 +2800215 +2800216 +2800217 +2800218 +2800219 +2800220 +2800221 +2800222 +2800223 +2800224 +2800225 +2800226 +2800227 +2800228 +2800229 +2800230 +2800231 +2800232 +2800233 +2800234 +2800235 +2800236 +2800237 +2800238 +2800239 +2800240 +2800241 +2800242 +2800243 +2800244 +2800245 +2800246 +2800247 +2800248 +2800249 +2800250 +2800251 +2800252 +2800253 +2800254 +2800255 +2800256 +2800257 +2800258 +2800259 +2800260 +2800261 +2800262 +2800263 +2800264 +2800265 +2800266 +2800267 +2800268 +2800269 +2800270 +2800271 +2800272 +2800273 +2800274 +2800275 +2800276 +2800277 +2800278 +2800279 +2800280 +2800281 +2800282 +2800283 +2800284 +2800285 +2800286 +2800287 +2800288 +2800289 +2800290 +2800291 +2800292 +2800293 +2800294 +2800295 +2800296 +2800297 +2800298 +2800299 +2800300 +2800301 +2800302 +2800303 +2800304 +2800305 +2800306 +2800307 +2800308 +2800309 +2800310 +2800311 +2800312 +2800313 +2800314 +2800315 +2800316 +2800317 +2800318 +2800319 +2800320 +2800321 +2800322 +2800323 +2800324 +2800325 +2800326 +2800327 +2800328 +2800329 +2800330 +2800331 +2800332 +2800333 +2800334 +2800335 +2800336 +2800337 +2800338 +2800339 +2800340 +2800341 +2800342 +2800343 +2800344 +2800345 +2800346 +2800347 +2800348 +2800349 +2800350 +2800351 +2800352 +2800353 +2800354 +2800355 +2800356 +2800357 +2800358 +2800359 +2800360 +2800361 +2800362 +2800363 +2800364 +2800365 +2800366 +2800367 +2800368 +2800369 +2800370 +2800371 +2800372 +2800373 +2800374 +2800375 +2800376 +2800377 +2800378 +2800379 +2800380 +2800381 +2800382 +2800383 +2800384 +2800385 +2800386 +2800387 +2800388 +2800389 +2800390 +2800391 +2800392 +2800393 +2800394 +2800395 +2800396 +2800397 +2800398 +2800399 +2800400 +2800401 +2800402 +2800403 +2800404 +2800405 +2800406 +2800407 +2800408 +2800409 +2800410 +2800411 +2800412 +2800413 +2800414 +2800415 +2800416 +2800417 +2800418 +2800419 +2800420 +2800421 +2800422 +2800423 +2800424 +2800425 +2800426 +2800427 +2800428 +2800429 +2800430 +2800431 +2800432 +2800433 +2800434 +2800435 +2800436 +2800437 +2800438 +2800439 +2800440 +2800441 +2800442 +2800443 +2800444 +2800445 +2800446 +2800447 +2800448 +2800449 +2800450 +2800451 +2800452 +2800453 +2800454 +2800455 +2800456 +2800457 +2800458 +2800459 +2800460 +2800461 +2800462 +2800463 +2800466 +2800467 +2800468 +2800469 +2800470 +2800471 +2800472 +2800473 +2800474 +2800475 +2800476 +2800477 +2800478 +2800479 +2800480 +2800481 +2800482 +2800483 +2800484 +2800485 +2800486 +2800487 +2800488 +2800489 +2800490 +2800491 +2800492 +2800493 +2800494 +2800495 +2800496 +2800497 +2800498 +2800499 +2800500 +2800501 +2800502 +2800503 +2800504 +2800505 +2800506 +2800507 +2800508 +2800509 +2800510 +2800511 +2800512 +2800513 +2800514 +2800515 +2800516 +2800517 +2800518 +2800520 +2800521 +2800522 +2800523 +2800524 +2800525 +2800526 +2800527 +2800528 +2800529 +2800530 +2800531 +2800532 +2800533 +2800534 +2800535 +2800536 +2800537 +2800538 +2800539 +2800540 +2800541 +2800542 +2800543 +2800544 +2800545 +2800546 +2800547 +2800548 +2800549 +2800550 +2800551 +2800552 +2800553 +2800554 +2800555 +2800556 +2800557 +2800558 +2800559 +2800560 +2800561 +2800562 +2800563 +2800564 +2800565 +2800566 +2800567 +2800568 +2800569 +2800570 +2800571 +2800572 +2800573 +2800574 +2800575 +2800576 +2800577 +2800578 +2800579 +2800580 +2800581 +2800582 +2800583 +2800584 +2800585 +2800586 +2800587 +2800588 +2800589 +2800590 +2800591 +2800592 +2800593 +2800594 +2800595 +2800596 +2800597 +2800598 +2800599 +2800600 +2800601 +2800602 +2800603 +2800604 +2800605 +2800606 +2800607 +2800608 +2800609 +2800610 +2800611 +2800612 +2800613 +2804384 +2804385 +2804386 +2804387 +2804388 +2804389 +2804390 +2804391 +2804392 +2804393 +2804394 +2804395 +2804396 +2804397 +2804398 +2804399 +2804400 +2804401 +2804402 +2804403 +2804404 +2804405 +2804406 +2804407 +2804408 +2804409 +2804410 +2804411 +2804412 +2804413 +2804414 +2804415 +2804416 +2804417 +2804418 +2804419 +2804420 +2804421 +2804422 +2804423 +2804424 +2804425 +2804426 +2804427 +2804428 +2804429 +2804430 +2804431 +2804432 +2804433 +2804434 +2804435 +2804436 +2804437 +2804438 +2804439 +2804440 +2804441 +2804442 +2804443 +2804444 +2804445 +2804446 +2804447 +2804448 +2804449 +2804450 +2804451 +2804452 +2804453 +2804454 +2804455 +2804456 +2804457 +2804458 +2804459 +2804460 +2804461 +2804462 +2804463 +2804464 +2804465 +2804466 +2804467 +2804468 +2804469 +2804470 +2804471 +2804472 +2804473 +2804474 +2804475 +2804476 +2804477 +2804478 +2804479 +2804480 +2804481 +2804482 +2804483 +2804484 +2804485 +2804486 +2804487 +2804488 +2804489 +2804490 +2804491 +2804492 +2804493 +2804494 +2804495 +2804496 +2804497 +2804498 +2804499 +2804500 +2804501 +2804502 +2804503 +2804504 +2804505 +2804506 +2804507 +2804508 +2804509 +2804510 +2804511 +2804512 +2804513 +2804514 +2804515 +2804516 +2804517 +2804518 +2804519 +2804520 +2804521 +2804522 +2804523 +2804524 +2804525 +2804526 +2804527 +2804528 +2804529 +2804530 +2804531 +2804532 +2804533 +2804534 +2804535 +2804536 +2804537 +2804538 +2804539 +2804540 +2804541 +2804542 +2804543 +2804544 +2804545 +2804546 +2804547 +2804548 +2804549 +2804550 +2804551 +2804552 +2804553 +2804554 +2804555 +2804556 +2804557 +2804558 +2804559 +2804560 +2804561 +2804562 +2804563 +2804564 +2804565 +2804566 +2804567 +2804568 +2804569 +2804570 +2804571 +2804572 +2804573 +2804574 +2804575 +2804576 +2804577 +2804578 +2804579 +2804580 +2804581 +2804582 +2804583 +2804584 +2804585 +2804586 +2804587 +2804588 +2804589 +2804590 +2804591 +2804592 +2804593 +2804594 +2804595 +2804596 +2804597 +2804598 +2804599 +2804600 +2804601 +2804602 +2804603 +2804604 +2804605 +2804606 +2804607 +2804608 +2804609 +2804610 +2804611 +2804612 +2804613 +2804614 +2804615 +2804616 +2804617 +2804618 +2804619 +2804620 +2804621 +2804622 +2804623 +2804624 +2804625 +2804626 +2804627 +2804628 +2804629 +2804630 +2804631 +2804632 +2804633 +2804634 +2804635 +2804636 +2804637 +2804638 +2804639 +2804640 +2804641 +2804642 +2804643 +2804644 +2804645 +2804646 +2804647 +2804648 +2804649 +2804650 +2804651 +2804652 +2804653 +2804654 +2804655 +2804656 +2804657 +2804658 +2804659 +2804660 +2804661 +2804662 +2804663 +2804664 +2804665 +2804666 +2804667 +2804668 +2804669 +2804670 +2804671 +2804672 +2804673 +2804674 +2804675 +2804676 +2804677 +2804678 +2804679 +2804680 +2804681 +2804682 +2804683 +2804684 +2804685 +2804686 +2804687 +2804688 +2804689 +2804690 +2804691 +2804692 +2804693 +2804694 +2804695 +2804696 +2804697 +2804698 +2804699 +2804700 +2804701 +2804702 +2804703 +2804704 +2804705 +2804706 +2804707 +2804708 +2804709 +2804710 +2804711 +2804712 +2804713 +2804714 +2804715 +2804716 +2804717 +2804718 +2804719 +2804720 +2804721 +2804722 +2804723 +2804724 +2804725 +2804726 +2804727 +2804728 +2804729 +2804730 +2804731 +2804732 +2804733 +2804734 +2804735 +2804736 +2804737 +2804738 +2804739 +2804740 +2804741 +2804742 +2804743 +2804744 +2804745 +2804746 +2804747 +2804748 +2804749 +2804750 +2804751 +2804752 +2804753 +2804754 +2804755 +2804756 +2804757 +2804758 +2804759 +2804760 +2804761 +2804762 +2804763 +2804764 +2804765 +2804766 +2804767 +2804768 +2804769 +2804770 +2804771 +2804772 +2804773 +2804774 +2804775 +2804776 +2804777 +2804778 +2804779 +2804780 +2804781 +2804782 +2804783 +2804784 +2804786 +2804787 +2804788 +2804789 +2804790 +2804791 +2804792 +2804793 +2804794 +2804795 +2804796 +2804797 +2804798 +2804799 +2804800 +2804801 +2804802 +2804803 +2804804 +2804805 +2804806 +2804807 +2804808 +2804809 +2804810 +2804811 +2804812 +2804813 +2804814 +2804815 +2804816 +2804817 +2804818 +2804819 +2804820 +2804821 +2804822 +2804823 +2804824 +2804825 +2804827 +2804828 +2804829 +2804830 +2804831 +2804832 +2804833 +2804834 +2804835 +2804836 +2804837 +2804838 +2804839 +2804840 +2804841 +2804842 +2804843 +2804844 +2804845 +2804846 +2804847 +2804848 +2804849 +2804850 +2804851 +2804852 +2804853 +2804854 +2804855 +2804856 +2804857 +2804858 +2804859 +2804860 +2804861 +2804862 +2804863 +2804864 +2804865 +2804866 +2804867 +2804868 +2804869 +2804870 +2804871 +2804872 +2804873 +2804874 +2804875 +2804876 +2804877 +2804878 +2804879 +2804880 +2804881 +2804882 +2804883 +2804884 +2804885 +2804886 +2804887 +2804888 +2804889 +2804890 +2804891 +2804892 +2804893 +2804894 +2804895 +2804896 +2804897 +2804898 +2804899 +2804900 +2804901 +2804902 +2804903 +2804904 +2804905 +2804906 +2804907 +2804908 +2804909 +2804910 +2804911 +2804912 +2804913 +2804914 +2804915 +2804916 +2804917 +2804918 +2804919 +2804920 +2804921 +2804922 +2804923 +2804924 +2804925 +2804926 +2804927 +2804928 +2804929 +2804930 +2804931 +2804932 +2804933 +2808704 +2808705 +2808706 +2808707 +2808708 +2808709 +2808710 +2808711 +2808712 +2808713 +2808714 +2808715 +2808716 +2808717 +2808718 +2808719 +2808720 +2808721 +2808722 +2808723 +2808724 +2808725 +2808726 +2808727 +2808728 +2808729 +2808730 +2808731 +2808732 +2808733 +2808734 +2808735 +2808736 +2808737 +2808738 +2808739 +2808740 +2808741 +2808742 +2808743 +2808744 +2808745 +2808746 +2808747 +2808748 +2808749 +2808750 +2808751 +2808752 +2808753 +2808754 +2808755 +2808756 +2808757 +2808758 +2808759 +2808760 +2808761 +2808762 +2808763 +2808764 +2808765 +2808766 +2808767 +2808768 +2808769 +2808770 +2808771 +2808772 +2808773 +2808774 +2808775 +2808776 +2808777 +2808778 +2808779 +2808780 +2808781 +2808782 +2808783 +2808784 +2808785 +2808786 +2808787 +2808788 +2808789 +2808790 +2808791 +2808792 +2808793 +2808794 +2808795 +2808796 +2808797 +2808798 +2808799 +2808800 +2808801 +2808802 +2808803 +2808804 +2808805 +2808806 +2808807 +2808808 +2808809 +2808810 +2808811 +2808812 +2808813 +2808814 +2808815 +2808816 +2808817 +2808818 +2808819 +2808820 +2808821 +2808822 +2808823 +2808824 +2808825 +2808826 +2808827 +2808828 +2808829 +2808830 +2808831 +2808832 +2808833 +2808834 +2808835 +2808836 +2808837 +2808838 +2808839 +2808840 +2808841 +2808842 +2808843 +2808844 +2808845 +2808846 +2808847 +2808848 +2808849 +2808850 +2808851 +2808852 +2808853 +2808854 +2808855 +2808856 +2808857 +2808858 +2808859 +2808860 +2808861 +2808862 +2808863 +2808864 +2808865 +2808866 +2808867 +2808868 +2808869 +2808870 +2808871 +2808872 +2808873 +2808874 +2808875 +2808876 +2808877 +2808878 +2808879 +2808880 +2808881 +2808882 +2808883 +2808884 +2808885 +2808886 +2808887 +2808888 +2808889 +2808890 +2808891 +2808892 +2808893 +2808894 +2808895 +2808896 +2808897 +2808898 +2808899 +2808900 +2808901 +2808902 +2808903 +2808904 +2808905 +2808906 +2808907 +2808908 +2808909 +2808910 +2808911 +2808912 +2808913 +2808914 +2808915 +2808916 +2808917 +2808918 +2808919 +2808920 +2808921 +2808922 +2808923 +2808924 +2808925 +2808926 +2808927 +2808928 +2808929 +2808930 +2808931 +2808932 +2808933 +2808934 +2808935 +2808936 +2808937 +2808938 +2808939 +2808940 +2808941 +2808942 +2808943 +2808944 +2808945 +2808946 +2808947 +2808948 +2808949 +2808950 +2808951 +2808952 +2808953 +2808954 +2808955 +2808956 +2808957 +2808958 +2808959 +2808960 +2808961 +2808962 +2808963 +2808964 +2808965 +2808966 +2808967 +2808968 +2808969 +2808970 +2808971 +2808972 +2808973 +2808974 +2808975 +2808976 +2808977 +2808978 +2808979 +2808980 +2808981 +2808982 +2808983 +2808984 +2808985 +2808986 +2808987 +2808988 +2808989 +2808990 +2808991 +2808992 +2808993 +2808994 +2808995 +2808996 +2808997 +2808998 +2808999 +2809000 +2809001 +2809002 +2809003 +2809004 +2809005 +2809006 +2809007 +2809008 +2809009 +2809010 +2809011 +2809012 +2809013 +2809014 +2809015 +2809016 +2809017 +2809018 +2809019 +2809020 +2809021 +2809022 +2809023 +2809024 +2809025 +2809026 +2809027 +2809028 +2809029 +2809030 +2809031 +2809032 +2809033 +2809034 +2809035 +2809036 +2809037 +2809038 +2809039 +2809040 +2809041 +2809042 +2809043 +2809044 +2809045 +2809046 +2809047 +2809048 +2809049 +2809050 +2809051 +2809052 +2809053 +2809054 +2809055 +2809056 +2809057 +2809058 +2809059 +2809060 +2809061 +2809062 +2809063 +2809064 +2809065 +2809066 +2809067 +2809068 +2809069 +2809070 +2809071 +2809072 +2809073 +2809074 +2809075 +2809076 +2809077 +2809078 +2809079 +2809080 +2809081 +2809082 +2809083 +2809084 +2809085 +2809086 +2809087 +2809088 +2809089 +2809090 +2809091 +2809092 +2809093 +2809094 +2809095 +2809096 +2809097 +2809098 +2809099 +2809100 +2809101 +2809102 +2809103 +2809104 +2809105 +2809106 +2809107 +2809108 +2809109 +2809110 +2809111 +2809112 +2809113 +2809114 +2809115 +2809116 +2809117 +2809118 +2809119 +2809120 +2809121 +2809122 +2809123 +2809124 +2809125 +2809126 +2809127 +2809128 +2809129 +2809130 +2809131 +2809132 +2809133 +2809134 +2809135 +2809136 +2809137 +2809138 +2809139 +2809140 +2809141 +2809142 +2809143 +2809145 +2809146 +2809147 +2809148 +2809149 +2809150 +2809151 +2809152 +2809153 +2809154 +2809155 +2809156 +2809157 +2809158 +2809159 +2809160 +2809161 +2809162 +2809163 +2809164 +2809165 +2809166 +2809167 +2809168 +2809169 +2809170 +2809171 +2809172 +2809173 +2809174 +2809175 +2809176 +2809177 +2809178 +2809179 +2809180 +2809181 +2809182 +2809183 +2809184 +2809185 +2809186 +2809187 +2809188 +2809189 +2809190 +2809191 +2809192 +2809193 +2809194 +2809195 +2809196 +2809197 +2809198 +2809199 +2809200 +2809201 +2809202 +2809203 +2809204 +2809205 +2809206 +2809207 +2809208 +2809209 +2809210 +2809211 +2809212 +2809213 +2809214 +2809215 +2809216 +2809217 +2809218 +2809219 +2809220 +2809221 +2809222 +2809223 +2809224 +2809225 +2809226 +2809227 +2809228 +2809229 +2809230 +2809231 +2809232 +2809233 +2809234 +2809235 +2809236 +2809237 +2809238 +2809239 +2809240 +2809241 +2809242 +2809243 +2809244 +2809245 +2809246 +2809247 +2809248 +2809249 +2809250 +2809251 +2809252 +2809253 +2813025 +2813026 +2813027 +2813028 +2813029 +2813030 +2813031 +2813032 +2813033 +2813034 +2813035 +2813036 +2813037 +2813038 +2813039 +2813040 +2813041 +2813042 +2813043 +2813044 +2813045 +2813046 +2813047 +2813048 +2813049 +2813050 +2813051 +2813052 +2813053 +2813054 +2813055 +2813056 +2813057 +2813058 +2813059 +2813060 +2813061 +2813062 +2813063 +2813064 +2813065 +2813066 +2813067 +2813068 +2813069 +2813070 +2813071 +2813072 +2813073 +2813074 +2813075 +2813076 +2813077 +2813078 +2813079 +2813080 +2813081 +2813082 +2813083 +2813084 +2813085 +2813086 +2813087 +2813088 +2813089 +2813090 +2813091 +2813092 +2813093 +2813094 +2813095 +2813096 +2813097 +2813098 +2813099 +2813100 +2813101 +2813102 +2813103 +2813104 +2813105 +2813106 +2813107 +2813108 +2813109 +2813110 +2813111 +2813112 +2813113 +2813114 +2813115 +2813116 +2813117 +2813118 +2813119 +2813120 +2813121 +2813122 +2813123 +2813124 +2813125 +2813126 +2813127 +2813128 +2813129 +2813130 +2813131 +2813132 +2813133 +2813134 +2813135 +2813136 +2813137 +2813138 +2813139 +2813140 +2813141 +2813142 +2813143 +2813144 +2813145 +2813146 +2813147 +2813148 +2813149 +2813150 +2813151 +2813152 +2813153 +2813154 +2813155 +2813156 +2813157 +2813158 +2813159 +2813160 +2813161 +2813162 +2813163 +2813164 +2813165 +2813166 +2813167 +2813168 +2813169 +2813170 +2813171 +2813172 +2813173 +2813174 +2813175 +2813176 +2813177 +2813178 +2813179 +2813180 +2813181 +2813182 +2813183 +2813184 +2813185 +2813186 +2813187 +2813188 +2813189 +2813190 +2813191 +2813192 +2813193 +2813194 +2813195 +2813196 +2813197 +2813198 +2813199 +2813200 +2813201 +2813202 +2813203 +2813204 +2813205 +2813206 +2813207 +2813208 +2813209 +2813210 +2813211 +2813212 +2813213 +2813214 +2813215 +2813216 +2813217 +2813218 +2813219 +2813220 +2813221 +2813222 +2813223 +2813224 +2813225 +2813226 +2813227 +2813228 +2813229 +2813230 +2813231 +2813232 +2813233 +2813234 +2813235 +2813236 +2813237 +2813238 +2813239 +2813240 +2813241 +2813242 +2813243 +2813244 +2813245 +2813246 +2813247 +2813248 +2813249 +2813250 +2813251 +2813252 +2813253 +2813254 +2813255 +2813256 +2813257 +2813258 +2813259 +2813260 +2813261 +2813262 +2813263 +2813264 +2813265 +2813266 +2813267 +2813268 +2813269 +2813270 +2813271 +2813272 +2813273 +2813274 +2813275 +2813276 +2813277 +2813278 +2813279 +2813280 +2813281 +2813282 +2813283 +2813284 +2813285 +2813286 +2813287 +2813288 +2813289 +2813290 +2813291 +2813292 +2813293 +2813294 +2813295 +2813296 +2813297 +2813298 +2813299 +2813300 +2813301 +2813302 +2813303 +2813304 +2813305 +2813306 +2813307 +2813308 +2813309 +2813310 +2813311 +2813312 +2813313 +2813314 +2813315 +2813316 +2813317 +2813318 +2813319 +2813320 +2813321 +2813322 +2813323 +2813324 +2813325 +2813326 +2813327 +2813328 +2813329 +2813330 +2813331 +2813332 +2813333 +2813334 +2813335 +2813336 +2813337 +2813338 +2813339 +2813340 +2813341 +2813342 +2813343 +2813344 +2813345 +2813346 +2813347 +2813348 +2813349 +2813350 +2813351 +2813352 +2813353 +2813354 +2813355 +2813356 +2813357 +2813358 +2813359 +2813360 +2813361 +2813362 +2813363 +2813364 +2813365 +2813366 +2813367 +2813368 +2813369 +2813370 +2813371 +2813372 +2813373 +2813374 +2813375 +2813376 +2813377 +2813378 +2813379 +2813380 +2813381 +2813382 +2813383 +2813384 +2813385 +2813386 +2813387 +2813388 +2813389 +2813390 +2813391 +2813392 +2813393 +2813394 +2813395 +2813396 +2813397 +2813398 +2813399 +2813400 +2813401 +2813402 +2813403 +2813404 +2813405 +2813406 +2813407 +2813408 +2813409 +2813410 +2813411 +2813412 +2813413 +2813414 +2813415 +2813416 +2813417 +2813418 +2813419 +2813420 +2813421 +2813422 +2813423 +2813425 +2813426 +2813427 +2813428 +2813429 +2813430 +2813431 +2813432 +2813433 +2813434 +2813435 +2813436 +2813437 +2813438 +2813439 +2813440 +2813441 +2813442 +2813443 +2813444 +2813445 +2813446 +2813447 +2813448 +2813449 +2813450 +2813451 +2813452 +2813453 +2813454 +2813455 +2813456 +2813457 +2813458 +2813459 +2813460 +2813461 +2813462 +2813463 +2813464 +2813465 +2813466 +2813467 +2813468 +2813469 +2813470 +2813471 +2813472 +2813473 +2813474 +2813475 +2813476 +2813477 +2813478 +2813479 +2813480 +2813481 +2813482 +2813483 +2813484 +2813485 +2813486 +2813487 +2813488 +2813489 +2813490 +2813491 +2813492 +2813493 +2813494 +2813495 +2813496 +2813497 +2813498 +2813499 +2813500 +2813501 +2813502 +2813503 +2813504 +2813505 +2813506 +2813507 +2813508 +2813509 +2813510 +2813511 +2813512 +2813513 +2813514 +2813515 +2813516 +2813517 +2813518 +2813519 +2813520 +2813521 +2813522 +2813523 +2813524 +2813525 +2813526 +2813527 +2813528 +2813529 +2813530 +2813531 +2813532 +2813533 +2813534 +2813535 +2813536 +2813537 +2813538 +2813539 +2813540 +2813541 +2813542 +2813543 +2813544 +2813545 +2813546 +2813547 +2813548 +2813549 +2813550 +2813551 +2813552 +2813553 +2813554 +2813555 +2813556 +2813557 +2813558 +2813559 +2813560 +2813561 +2813562 +2813563 +2813564 +2813565 +2813566 +2813567 +2813568 +2813569 +2813570 +2813571 +2813572 +2817346 +2817347 +2817348 +2817349 +2817350 +2817351 +2817352 +2817353 +2817354 +2817355 +2817356 +2817357 +2817358 +2817359 +2817360 +2817361 +2817362 +2817363 +2817364 +2817365 +2817366 +2817367 +2817368 +2817369 +2817370 +2817371 +2817372 +2817373 +2817374 +2817375 +2817376 +2817377 +2817378 +2817379 +2817380 +2817381 +2817382 +2817383 +2817384 +2817385 +2817386 +2817387 +2817388 +2817389 +2817390 +2817391 +2817392 +2817393 +2817394 +2817395 +2817396 +2817397 +2817398 +2817399 +2817400 +2817401 +2817402 +2817403 +2817404 +2817405 +2817406 +2817407 +2817408 +2817409 +2817410 +2817411 +2817412 +2817413 +2817414 +2817415 +2817416 +2817417 +2817418 +2817419 +2817420 +2817421 +2817422 +2817423 +2817424 +2817425 +2817426 +2817427 +2817428 +2817429 +2817430 +2817431 +2817432 +2817433 +2817434 +2817435 +2817436 +2817437 +2817438 +2817439 +2817440 +2817441 +2817442 +2817443 +2817444 +2817445 +2817446 +2817447 +2817448 +2817449 +2817450 +2817451 +2817452 +2817453 +2817454 +2817455 +2817456 +2817457 +2817458 +2817459 +2817460 +2817461 +2817462 +2817463 +2817464 +2817465 +2817466 +2817467 +2817468 +2817469 +2817470 +2817471 +2817472 +2817473 +2817474 +2817475 +2817476 +2817477 +2817478 +2817479 +2817480 +2817481 +2817482 +2817483 +2817484 +2817485 +2817486 +2817487 +2817488 +2817489 +2817490 +2817491 +2817492 +2817493 +2817494 +2817495 +2817496 +2817497 +2817498 +2817499 +2817500 +2817501 +2817502 +2817503 +2817504 +2817505 +2817506 +2817507 +2817508 +2817509 +2817510 +2817511 +2817512 +2817513 +2817514 +2817515 +2817516 +2817517 +2817518 +2817519 +2817520 +2817521 +2817522 +2817523 +2817524 +2817525 +2817526 +2817527 +2817528 +2817529 +2817530 +2817531 +2817532 +2817533 +2817534 +2817535 +2817536 +2817537 +2817538 +2817539 +2817540 +2817541 +2817542 +2817543 +2817544 +2817545 +2817546 +2817547 +2817548 +2817549 +2817550 +2817551 +2817552 +2817553 +2817554 +2817555 +2817556 +2817557 +2817558 +2817559 +2817560 +2817561 +2817562 +2817563 +2817564 +2817565 +2817566 +2817567 +2817568 +2817569 +2817570 +2817571 +2817572 +2817573 +2817574 +2817575 +2817576 +2817577 +2817578 +2817579 +2817580 +2817581 +2817582 +2817583 +2817584 +2817585 +2817586 +2817587 +2817588 +2817589 +2817590 +2817591 +2817592 +2817593 +2817594 +2817595 +2817596 +2817597 +2817598 +2817599 +2817600 +2817601 +2817602 +2817603 +2817604 +2817605 +2817606 +2817607 +2817608 +2817609 +2817610 +2817611 +2817612 +2817613 +2817614 +2817615 +2817616 +2817617 +2817618 +2817619 +2817620 +2817621 +2817622 +2817623 +2817624 +2817625 +2817626 +2817627 +2817628 +2817629 +2817630 +2817631 +2817632 +2817633 +2817634 +2817635 +2817636 +2817637 +2817638 +2817639 +2817640 +2817641 +2817642 +2817643 +2817644 +2817645 +2817646 +2817647 +2817648 +2817649 +2817650 +2817651 +2817652 +2817653 +2817654 +2817655 +2817656 +2817657 +2817658 +2817659 +2817660 +2817661 +2817662 +2817663 +2817664 +2817665 +2817666 +2817667 +2817668 +2817669 +2817670 +2817671 +2817672 +2817673 +2817674 +2817675 +2817676 +2817677 +2817678 +2817679 +2817680 +2817681 +2817682 +2817683 +2817684 +2817685 +2817686 +2817687 +2817688 +2817689 +2817690 +2817691 +2817692 +2817693 +2817694 +2817695 +2817696 +2817697 +2817698 +2817699 +2817700 +2817701 +2817702 +2817703 +2817704 +2817705 +2817706 +2817707 +2817708 +2817709 +2817710 +2817711 +2817712 +2817713 +2817714 +2817715 +2817716 +2817717 +2817718 +2817719 +2817720 +2817721 +2817722 +2817723 +2817724 +2817725 +2817726 +2817727 +2817728 +2817729 +2817730 +2817731 +2817732 +2817733 +2817734 +2817735 +2817736 +2817737 +2817738 +2817739 +2817740 +2817741 +2817742 +2817743 +2817745 +2817746 +2817747 +2817748 +2817749 +2817750 +2817751 +2817752 +2817753 +2817754 +2817755 +2817756 +2817757 +2817758 +2817759 +2817760 +2817761 +2817762 +2817763 +2817764 +2817765 +2817766 +2817767 +2817768 +2817769 +2817770 +2817771 +2817772 +2817773 +2817774 +2817775 +2817776 +2817777 +2817778 +2817779 +2817780 +2817781 +2817782 +2817783 +2817784 +2817785 +2817786 +2817787 +2817788 +2817789 +2817790 +2817791 +2817792 +2817793 +2817794 +2817795 +2817796 +2817797 +2817798 +2817799 +2817800 +2817801 +2817802 +2817803 +2817804 +2817805 +2817806 +2817807 +2817808 +2817809 +2817810 +2817811 +2817812 +2817813 +2817814 +2817815 +2817816 +2817817 +2817818 +2817819 +2817820 +2817821 +2817822 +2817823 +2817824 +2817825 +2817826 +2817827 +2817828 +2817829 +2817830 +2817831 +2817832 +2817833 +2817834 +2817835 +2817836 +2817838 +2817839 +2817840 +2817841 +2817842 +2817843 +2817844 +2817845 +2817846 +2817847 +2817848 +2817849 +2817850 +2817851 +2817852 +2817853 +2817854 +2817855 +2817856 +2817857 +2817858 +2817859 +2817860 +2817861 +2817862 +2817863 +2817864 +2817865 +2817866 +2817867 +2817868 +2817869 +2817870 +2817871 +2817872 +2817873 +2817874 +2817875 +2817876 +2817877 +2817878 +2817879 +2817880 +2817881 +2817882 +2817883 +2817884 +2817885 +2817886 +2817887 +2817888 +2817889 +2817890 +2817891 +2817892 +2817895 +2821670 +2821671 +2821672 +2821673 +2821674 +2821675 +2821676 +2821677 +2821678 +2821679 +2821680 +2821681 +2821682 +2821683 +2821684 +2821685 +2821686 +2821687 +2821688 +2821689 +2821690 +2821691 +2821692 +2821693 +2821694 +2821695 +2821696 +2821697 +2821698 +2821699 +2821700 +2821701 +2821702 +2821703 +2821704 +2821705 +2821706 +2821707 +2821708 +2821709 +2821710 +2821711 +2821712 +2821713 +2821714 +2821715 +2821716 +2821717 +2821718 +2821719 +2821720 +2821721 +2821722 +2821723 +2821724 +2821725 +2821726 +2821727 +2821728 +2821729 +2821730 +2821731 +2821732 +2821733 +2821734 +2821735 +2821736 +2821737 +2821738 +2821739 +2821740 +2821741 +2821742 +2821743 +2821744 +2821745 +2821746 +2821747 +2821748 +2821749 +2821750 +2821751 +2821752 +2821753 +2821754 +2821755 +2821756 +2821757 +2821758 +2821759 +2821760 +2821761 +2821762 +2821763 +2821764 +2821765 +2821766 +2821767 +2821768 +2821769 +2821770 +2821771 +2821772 +2821773 +2821774 +2821775 +2821776 +2821777 +2821778 +2821779 +2821780 +2821781 +2821782 +2821783 +2821784 +2821785 +2821786 +2821787 +2821788 +2821789 +2821790 +2821791 +2821792 +2821793 +2821794 +2821795 +2821796 +2821797 +2821798 +2821799 +2821800 +2821801 +2821802 +2821803 +2821804 +2821805 +2821806 +2821807 +2821808 +2821809 +2821810 +2821811 +2821812 +2821813 +2821814 +2821815 +2821816 +2821817 +2821818 +2821819 +2821820 +2821821 +2821822 +2821823 +2821824 +2821825 +2821826 +2821827 +2821828 +2821829 +2821830 +2821831 +2821832 +2821833 +2821834 +2821835 +2821836 +2821837 +2821838 +2821839 +2821840 +2821841 +2821842 +2821843 +2821844 +2821845 +2821846 +2821847 +2821848 +2821849 +2821850 +2821851 +2821852 +2821853 +2821854 +2821855 +2821856 +2821857 +2821858 +2821859 +2821860 +2821861 +2821862 +2821863 +2821864 +2821865 +2821866 +2821867 +2821868 +2821869 +2821870 +2821871 +2821872 +2821873 +2821874 +2821875 +2821876 +2821877 +2821878 +2821879 +2821880 +2821881 +2821882 +2821883 +2821884 +2821885 +2821886 +2821887 +2821888 +2821889 +2821890 +2821891 +2821892 +2821893 +2821894 +2821895 +2821896 +2821897 +2821898 +2821899 +2821900 +2821901 +2821902 +2821903 +2821904 +2821905 +2821906 +2821907 +2821908 +2821909 +2821910 +2821911 +2821912 +2821913 +2821914 +2821915 +2821916 +2821917 +2821918 +2821919 +2821920 +2821921 +2821922 +2821923 +2821924 +2821925 +2821926 +2821927 +2821928 +2821929 +2821930 +2821931 +2821932 +2821933 +2821934 +2821935 +2821936 +2821937 +2821938 +2821939 +2821940 +2821941 +2821942 +2821943 +2821944 +2821945 +2821946 +2821947 +2821948 +2821949 +2821950 +2821951 +2821952 +2821953 +2821954 +2821955 +2821956 +2821957 +2821958 +2821959 +2821960 +2821961 +2821962 +2821963 +2821964 +2821965 +2821966 +2821967 +2821968 +2821969 +2821970 +2821971 +2821972 +2821973 +2821974 +2821975 +2821976 +2821977 +2821978 +2821979 +2821980 +2821981 +2821982 +2821983 +2821984 +2821985 +2821986 +2821987 +2821988 +2821989 +2821990 +2821991 +2821992 +2821993 +2821994 +2821995 +2821996 +2821997 +2821998 +2821999 +2822000 +2822001 +2822002 +2822003 +2822004 +2822005 +2822006 +2822007 +2822008 +2822009 +2822010 +2822011 +2822012 +2822013 +2822014 +2822015 +2822016 +2822017 +2822018 +2822019 +2822020 +2822021 +2822022 +2822023 +2822024 +2822025 +2822026 +2822027 +2822028 +2822029 +2822030 +2822031 +2822032 +2822033 +2822034 +2822035 +2822036 +2822037 +2822038 +2822039 +2822040 +2822041 +2822042 +2822043 +2822044 +2822045 +2822046 +2822047 +2822048 +2822049 +2822050 +2822051 +2822052 +2822053 +2822054 +2822055 +2822056 +2822057 +2822058 +2822059 +2822060 +2822061 +2822062 +2822063 +2822065 +2822066 +2822067 +2822068 +2822069 +2822070 +2822071 +2822072 +2822073 +2822074 +2822075 +2822076 +2822077 +2822078 +2822079 +2822080 +2822081 +2822082 +2822083 +2822084 +2822085 +2822086 +2822087 +2822088 +2822089 +2822090 +2822091 +2822092 +2822093 +2822094 +2822095 +2822096 +2822097 +2822098 +2822099 +2822100 +2822101 +2822102 +2822103 +2822104 +2822105 +2822106 +2822107 +2822108 +2822109 +2822110 +2822111 +2822112 +2822113 +2822114 +2822115 +2822116 +2822117 +2822118 +2822119 +2822120 +2822121 +2822122 +2822123 +2822124 +2822125 +2822126 +2822127 +2822128 +2822129 +2822130 +2822131 +2822132 +2822133 +2822134 +2822135 +2822136 +2822137 +2822138 +2822139 +2822140 +2822141 +2822142 +2822143 +2822144 +2822145 +2822146 +2822147 +2822148 +2822149 +2822150 +2822151 +2822152 +2822153 +2822154 +2822155 +2822156 +2822157 +2822158 +2822159 +2822160 +2822161 +2822162 +2822163 +2822164 +2822165 +2822166 +2822167 +2822168 +2822169 +2822170 +2822171 +2822172 +2822173 +2822174 +2822175 +2822176 +2822177 +2822178 +2822179 +2822180 +2822181 +2822182 +2822183 +2822184 +2822185 +2822186 +2822187 +2822188 +2822189 +2822190 +2822191 +2822192 +2822193 +2822194 +2822195 +2822196 +2822197 +2822198 +2822199 +2822200 +2822201 +2822202 +2822203 +2822204 +2822205 +2822206 +2822215 +2825990 +2825991 +2825992 +2825993 +2825994 +2825995 +2825996 +2825997 +2825998 +2825999 +2826000 +2826001 +2826002 +2826003 +2826004 +2826005 +2826006 +2826007 +2826008 +2826009 +2826010 +2826011 +2826012 +2826013 +2826014 +2826015 +2826016 +2826017 +2826018 +2826019 +2826020 +2826021 +2826022 +2826023 +2826024 +2826025 +2826026 +2826027 +2826028 +2826029 +2826030 +2826031 +2826032 +2826033 +2826034 +2826035 +2826036 +2826037 +2826038 +2826039 +2826040 +2826041 +2826042 +2826043 +2826044 +2826045 +2826046 +2826047 +2826048 +2826049 +2826050 +2826051 +2826052 +2826053 +2826054 +2826055 +2826056 +2826057 +2826058 +2826059 +2826060 +2826061 +2826062 +2826063 +2826064 +2826065 +2826066 +2826067 +2826068 +2826069 +2826070 +2826071 +2826072 +2826073 +2826074 +2826075 +2826076 +2826077 +2826078 +2826079 +2826080 +2826081 +2826082 +2826083 +2826084 +2826085 +2826086 +2826087 +2826088 +2826089 +2826090 +2826091 +2826092 +2826093 +2826094 +2826095 +2826096 +2826097 +2826098 +2826099 +2826100 +2826101 +2826102 +2826103 +2826104 +2826105 +2826106 +2826107 +2826108 +2826109 +2826110 +2826111 +2826112 +2826113 +2826114 +2826115 +2826116 +2826117 +2826118 +2826119 +2826120 +2826121 +2826122 +2826123 +2826124 +2826125 +2826126 +2826127 +2826128 +2826129 +2826130 +2826131 +2826132 +2826133 +2826134 +2826135 +2826136 +2826137 +2826138 +2826139 +2826140 +2826141 +2826142 +2826143 +2826144 +2826145 +2826146 +2826147 +2826148 +2826149 +2826150 +2826151 +2826152 +2826153 +2826154 +2826155 +2826156 +2826157 +2826158 +2826159 +2826160 +2826161 +2826162 +2826163 +2826164 +2826165 +2826166 +2826167 +2826168 +2826169 +2826170 +2826171 +2826172 +2826173 +2826174 +2826175 +2826176 +2826177 +2826178 +2826179 +2826180 +2826181 +2826182 +2826183 +2826184 +2826185 +2826186 +2826187 +2826188 +2826189 +2826190 +2826191 +2826192 +2826193 +2826194 +2826195 +2826196 +2826197 +2826198 +2826199 +2826200 +2826201 +2826202 +2826203 +2826204 +2826205 +2826206 +2826207 +2826208 +2826209 +2826210 +2826211 +2826212 +2826213 +2826214 +2826215 +2826216 +2826217 +2826218 +2826219 +2826220 +2826221 +2826222 +2826223 +2826224 +2826225 +2826226 +2826227 +2826228 +2826229 +2826230 +2826231 +2826232 +2826233 +2826234 +2826235 +2826236 +2826237 +2826238 +2826239 +2826240 +2826241 +2826242 +2826243 +2826244 +2826245 +2826246 +2826247 +2826248 +2826249 +2826250 +2826251 +2826252 +2826253 +2826254 +2826255 +2826256 +2826257 +2826258 +2826259 +2826260 +2826261 +2826262 +2826263 +2826264 +2826265 +2826266 +2826267 +2826268 +2826269 +2826270 +2826271 +2826272 +2826273 +2826274 +2826275 +2826276 +2826277 +2826278 +2826279 +2826280 +2826281 +2826282 +2826283 +2826284 +2826285 +2826286 +2826287 +2826288 +2826289 +2826290 +2826291 +2826292 +2826293 +2826294 +2826295 +2826296 +2826297 +2826298 +2826299 +2826300 +2826301 +2826302 +2826303 +2826304 +2826305 +2826306 +2826307 +2826308 +2826309 +2826310 +2826311 +2826312 +2826313 +2826314 +2826315 +2826316 +2826317 +2826318 +2826319 +2826320 +2826321 +2826322 +2826323 +2826324 +2826325 +2826326 +2826327 +2826328 +2826329 +2826330 +2826331 +2826332 +2826333 +2826334 +2826335 +2826336 +2826337 +2826338 +2826339 +2826340 +2826341 +2826342 +2826343 +2826344 +2826345 +2826346 +2826347 +2826348 +2826349 +2826350 +2826351 +2826352 +2826353 +2826354 +2826355 +2826356 +2826357 +2826358 +2826359 +2826360 +2826361 +2826362 +2826363 +2826364 +2826365 +2826366 +2826367 +2826368 +2826369 +2826370 +2826371 +2826372 +2826373 +2826374 +2826375 +2826376 +2826377 +2826378 +2826379 +2826380 +2826381 +2826382 +2826383 +2826384 +2826385 +2826386 +2826387 +2826388 +2826389 +2826390 +2826391 +2826392 +2826393 +2826394 +2826395 +2826396 +2826397 +2826398 +2826399 +2826400 +2826401 +2826402 +2826403 +2826404 +2826405 +2826406 +2826407 +2826408 +2826409 +2826410 +2826411 +2826412 +2826413 +2826414 +2826415 +2826416 +2826417 +2826418 +2826419 +2826420 +2826422 +2826423 +2826424 +2826425 +2826426 +2826427 +2826428 +2826429 +2826430 +2826431 +2826432 +2826433 +2826434 +2826435 +2826436 +2826437 +2826438 +2826439 +2826440 +2826441 +2826442 +2826443 +2826444 +2826445 +2826446 +2826447 +2826448 +2826449 +2826450 +2826451 +2826452 +2826453 +2826454 +2826455 +2826456 +2826457 +2826458 +2826459 +2826460 +2826461 +2826462 +2826463 +2826464 +2826465 +2826466 +2826467 +2826468 +2826469 +2826470 +2826471 +2826472 +2826473 +2826474 +2826475 +2826476 +2826477 +2826478 +2826479 +2826480 +2826481 +2826482 +2826483 +2826484 +2826485 +2826486 +2826487 +2826488 +2826489 +2826490 +2826491 +2826492 +2826493 +2826494 +2826495 +2826496 +2826497 +2826498 +2826499 +2826500 +2826501 +2826502 +2826503 +2826504 +2826505 +2826506 +2826507 +2826508 +2826509 +2826510 +2826511 +2826512 +2826513 +2826514 +2826515 +2826516 +2826517 +2826518 +2826519 +2826520 +2826521 +2826522 +2826523 +2826524 +2826527 +2826535 +2830310 +2830311 +2830312 +2830313 +2830314 +2830315 +2830316 +2830317 +2830318 +2830319 +2830320 +2830321 +2830322 +2830323 +2830324 +2830325 +2830326 +2830327 +2830328 +2830329 +2830330 +2830331 +2830332 +2830333 +2830334 +2830335 +2830336 +2830337 +2830338 +2830339 +2830340 +2830341 +2830342 +2830343 +2830344 +2830345 +2830346 +2830347 +2830348 +2830349 +2830350 +2830351 +2830352 +2830353 +2830354 +2830355 +2830356 +2830357 +2830358 +2830359 +2830360 +2830361 +2830362 +2830363 +2830364 +2830365 +2830366 +2830367 +2830368 +2830369 +2830370 +2830371 +2830372 +2830373 +2830374 +2830375 +2830376 +2830377 +2830378 +2830379 +2830380 +2830381 +2830382 +2830383 +2830384 +2830385 +2830386 +2830387 +2830388 +2830389 +2830390 +2830391 +2830392 +2830393 +2830394 +2830395 +2830396 +2830397 +2830398 +2830399 +2830400 +2830401 +2830402 +2830403 +2830404 +2830405 +2830406 +2830407 +2830408 +2830409 +2830410 +2830411 +2830412 +2830413 +2830414 +2830415 +2830416 +2830417 +2830418 +2830419 +2830420 +2830421 +2830422 +2830423 +2830424 +2830425 +2830426 +2830427 +2830428 +2830429 +2830430 +2830431 +2830432 +2830433 +2830434 +2830435 +2830436 +2830437 +2830438 +2830439 +2830440 +2830441 +2830442 +2830443 +2830444 +2830445 +2830446 +2830447 +2830448 +2830449 +2830450 +2830451 +2830452 +2830453 +2830454 +2830455 +2830456 +2830457 +2830458 +2830459 +2830460 +2830461 +2830462 +2830463 +2830464 +2830465 +2830466 +2830467 +2830468 +2830469 +2830470 +2830471 +2830472 +2830473 +2830474 +2830475 +2830476 +2830477 +2830478 +2830479 +2830480 +2830481 +2830482 +2830483 +2830484 +2830485 +2830486 +2830487 +2830488 +2830489 +2830490 +2830491 +2830492 +2830493 +2830494 +2830495 +2830496 +2830497 +2830498 +2830499 +2830500 +2830501 +2830502 +2830503 +2830504 +2830505 +2830506 +2830507 +2830508 +2830509 +2830510 +2830511 +2830512 +2830513 +2830514 +2830515 +2830516 +2830517 +2830518 +2830519 +2830520 +2830521 +2830522 +2830523 +2830524 +2830525 +2830526 +2830527 +2830528 +2830529 +2830530 +2830531 +2830532 +2830533 +2830534 +2830535 +2830536 +2830537 +2830538 +2830539 +2830540 +2830541 +2830542 +2830543 +2830544 +2830545 +2830546 +2830547 +2830548 +2830549 +2830550 +2830551 +2830552 +2830553 +2830554 +2830555 +2830556 +2830557 +2830558 +2830559 +2830560 +2830561 +2830562 +2830563 +2830564 +2830565 +2830566 +2830567 +2830568 +2830569 +2830570 +2830571 +2830572 +2830573 +2830574 +2830575 +2830576 +2830577 +2830578 +2830579 +2830580 +2830581 +2830582 +2830583 +2830584 +2830585 +2830586 +2830587 +2830588 +2830589 +2830590 +2830591 +2830592 +2830593 +2830594 +2830595 +2830596 +2830597 +2830598 +2830599 +2830600 +2830601 +2830602 +2830603 +2830604 +2830605 +2830606 +2830607 +2830608 +2830609 +2830610 +2830611 +2830612 +2830613 +2830614 +2830615 +2830616 +2830617 +2830618 +2830619 +2830620 +2830621 +2830622 +2830623 +2830624 +2830625 +2830626 +2830627 +2830628 +2830629 +2830630 +2830631 +2830632 +2830633 +2830634 +2830635 +2830636 +2830637 +2830638 +2830639 +2830640 +2830641 +2830642 +2830643 +2830644 +2830645 +2830646 +2830647 +2830648 +2830649 +2830650 +2830651 +2830652 +2830653 +2830654 +2830655 +2830656 +2830657 +2830658 +2830659 +2830660 +2830661 +2830662 +2830663 +2830664 +2830665 +2830666 +2830667 +2830668 +2830669 +2830670 +2830671 +2830672 +2830673 +2830674 +2830675 +2830676 +2830677 +2830678 +2830679 +2830680 +2830681 +2830682 +2830683 +2830684 +2830685 +2830686 +2830687 +2830688 +2830689 +2830690 +2830691 +2830692 +2830693 +2830694 +2830695 +2830696 +2830697 +2830698 +2830699 +2830700 +2830701 +2830702 +2830703 +2830704 +2830705 +2830706 +2830707 +2830708 +2830709 +2830710 +2830711 +2830712 +2830713 +2830714 +2830715 +2830716 +2830717 +2830718 +2830719 +2830720 +2830721 +2830722 +2830723 +2830724 +2830725 +2830726 +2830727 +2830728 +2830729 +2830730 +2830731 +2830732 +2830733 +2830734 +2830735 +2830736 +2830737 +2830738 +2830739 +2830741 +2830742 +2830743 +2830744 +2830745 +2830746 +2830747 +2830748 +2830749 +2830750 +2830751 +2830752 +2830753 +2830754 +2830755 +2830756 +2830757 +2830758 +2830759 +2830760 +2830761 +2830762 +2830763 +2830764 +2830765 +2830766 +2830767 +2830768 +2830769 +2830770 +2830771 +2830772 +2830773 +2830774 +2830775 +2830776 +2830777 +2830778 +2830779 +2830780 +2830781 +2830782 +2830783 +2830784 +2830785 +2830786 +2830787 +2830788 +2830789 +2830790 +2830791 +2830792 +2830793 +2830794 +2830795 +2830796 +2830797 +2830798 +2830799 +2830800 +2830801 +2830802 +2830803 +2830804 +2830805 +2830806 +2830807 +2830808 +2830809 +2830810 +2830811 +2830812 +2830813 +2830814 +2830815 +2830816 +2830817 +2830818 +2830819 +2830820 +2830821 +2830822 +2830823 +2830824 +2830825 +2830826 +2830827 +2830828 +2830829 +2830830 +2830831 +2830832 +2830833 +2830834 +2830835 +2830836 +2830837 +2830838 +2830839 +2830840 +2830841 +2830842 +2830843 +2830844 +2830845 +2830846 +2830847 +2830854 +2830855 +2834630 +2834631 +2834632 +2834633 +2834634 +2834635 +2834636 +2834637 +2834638 +2834639 +2834640 +2834641 +2834642 +2834643 +2834644 +2834645 +2834646 +2834647 +2834648 +2834649 +2834650 +2834651 +2834652 +2834653 +2834654 +2834655 +2834656 +2834657 +2834658 +2834659 +2834660 +2834661 +2834662 +2834663 +2834664 +2834665 +2834666 +2834667 +2834668 +2834669 +2834670 +2834671 +2834672 +2834673 +2834674 +2834675 +2834676 +2834677 +2834678 +2834679 +2834680 +2834681 +2834682 +2834683 +2834684 +2834685 +2834686 +2834687 +2834688 +2834689 +2834690 +2834691 +2834692 +2834693 +2834694 +2834695 +2834696 +2834697 +2834698 +2834699 +2834700 +2834701 +2834702 +2834703 +2834704 +2834705 +2834706 +2834707 +2834708 +2834709 +2834710 +2834711 +2834712 +2834713 +2834714 +2834715 +2834716 +2834717 +2834718 +2834719 +2834720 +2834721 +2834722 +2834723 +2834724 +2834725 +2834726 +2834727 +2834728 +2834729 +2834730 +2834731 +2834732 +2834733 +2834734 +2834735 +2834736 +2834737 +2834738 +2834739 +2834740 +2834741 +2834742 +2834743 +2834744 +2834745 +2834746 +2834747 +2834748 +2834749 +2834750 +2834751 +2834752 +2834753 +2834754 +2834755 +2834756 +2834757 +2834758 +2834759 +2834760 +2834761 +2834762 +2834763 +2834764 +2834765 +2834766 +2834767 +2834768 +2834769 +2834770 +2834771 +2834772 +2834773 +2834774 +2834775 +2834776 +2834777 +2834778 +2834779 +2834780 +2834781 +2834782 +2834783 +2834784 +2834785 +2834786 +2834787 +2834788 +2834789 +2834790 +2834791 +2834792 +2834793 +2834794 +2834795 +2834796 +2834797 +2834798 +2834799 +2834800 +2834801 +2834802 +2834803 +2834804 +2834805 +2834806 +2834807 +2834808 +2834809 +2834810 +2834811 +2834812 +2834813 +2834814 +2834815 +2834816 +2834817 +2834818 +2834819 +2834820 +2834821 +2834822 +2834823 +2834824 +2834825 +2834826 +2834827 +2834828 +2834829 +2834830 +2834831 +2834832 +2834833 +2834834 +2834835 +2834836 +2834837 +2834838 +2834839 +2834840 +2834841 +2834842 +2834843 +2834844 +2834845 +2834846 +2834847 +2834848 +2834849 +2834850 +2834851 +2834852 +2834853 +2834854 +2834855 +2834856 +2834857 +2834858 +2834859 +2834860 +2834861 +2834862 +2834863 +2834864 +2834865 +2834866 +2834867 +2834868 +2834869 +2834870 +2834871 +2834872 +2834873 +2834874 +2834875 +2834876 +2834877 +2834878 +2834879 +2834880 +2834881 +2834882 +2834883 +2834884 +2834885 +2834886 +2834887 +2834888 +2834889 +2834890 +2834891 +2834892 +2834893 +2834894 +2834895 +2834896 +2834897 +2834898 +2834899 +2834900 +2834901 +2834902 +2834903 +2834904 +2834905 +2834906 +2834907 +2834908 +2834909 +2834910 +2834911 +2834912 +2834913 +2834914 +2834915 +2834916 +2834917 +2834918 +2834919 +2834920 +2834921 +2834922 +2834923 +2834924 +2834925 +2834926 +2834927 +2834928 +2834929 +2834930 +2834931 +2834932 +2834933 +2834934 +2834935 +2834936 +2834937 +2834938 +2834939 +2834940 +2834941 +2834942 +2834943 +2834944 +2834945 +2834946 +2834947 +2834948 +2834949 +2834950 +2834951 +2834952 +2834953 +2834954 +2834955 +2834956 +2834957 +2834958 +2834959 +2834960 +2834961 +2834962 +2834963 +2834964 +2834965 +2834966 +2834967 +2834968 +2834969 +2834970 +2834971 +2834972 +2834973 +2834974 +2834975 +2834976 +2834977 +2834978 +2834979 +2834980 +2834981 +2834982 +2834983 +2834984 +2834985 +2834986 +2834987 +2834988 +2834989 +2834990 +2834991 +2834992 +2834993 +2834994 +2834995 +2834996 +2834997 +2834998 +2834999 +2835000 +2835001 +2835002 +2835003 +2835004 +2835005 +2835006 +2835007 +2835008 +2835009 +2835010 +2835011 +2835012 +2835013 +2835014 +2835015 +2835016 +2835017 +2835018 +2835019 +2835020 +2835021 +2835022 +2835023 +2835024 +2835025 +2835026 +2835027 +2835028 +2835029 +2835030 +2835031 +2835032 +2835033 +2835034 +2835035 +2835036 +2835037 +2835038 +2835039 +2835040 +2835041 +2835042 +2835043 +2835044 +2835045 +2835046 +2835047 +2835048 +2835049 +2835050 +2835051 +2835052 +2835053 +2835054 +2835055 +2835056 +2835057 +2835058 +2835060 +2835061 +2835062 +2835063 +2835064 +2835065 +2835066 +2835067 +2835068 +2835069 +2835070 +2835071 +2835072 +2835073 +2835074 +2835075 +2835076 +2835077 +2835078 +2835079 +2835080 +2835081 +2835082 +2835083 +2835084 +2835085 +2835086 +2835087 +2835088 +2835089 +2835090 +2835091 +2835092 +2835093 +2835094 +2835095 +2835096 +2835097 +2835098 +2835099 +2835100 +2835101 +2835102 +2835103 +2835104 +2835105 +2835106 +2835107 +2835108 +2835109 +2835110 +2835111 +2835112 +2835113 +2835114 +2835115 +2835116 +2835117 +2835118 +2835119 +2835120 +2835121 +2835122 +2835123 +2835124 +2835125 +2835126 +2835127 +2835128 +2835129 +2835130 +2835131 +2835132 +2835133 +2835134 +2835135 +2835136 +2835137 +2835138 +2835139 +2835140 +2835141 +2835142 +2835143 +2835144 +2835145 +2835146 +2835147 +2835148 +2835149 +2835150 +2835151 +2835152 +2835153 +2835154 +2835155 +2835156 +2835157 +2835158 +2835159 +2835160 +2835161 +2835162 +2835163 +2835173 +2838950 +2838951 +2838952 +2838953 +2838954 +2838955 +2838956 +2838957 +2838958 +2838959 +2838960 +2838961 +2838962 +2838963 +2838964 +2838965 +2838966 +2838967 +2838968 +2838969 +2838970 +2838971 +2838972 +2838973 +2838974 +2838975 +2838976 +2838977 +2838978 +2838979 +2838980 +2838981 +2838982 +2838983 +2838984 +2838985 +2838986 +2838987 +2838988 +2838989 +2838990 +2838991 +2838992 +2838993 +2838994 +2838995 +2838996 +2838997 +2838998 +2838999 +2839000 +2839001 +2839002 +2839003 +2839004 +2839005 +2839006 +2839007 +2839008 +2839009 +2839010 +2839011 +2839012 +2839013 +2839014 +2839015 +2839016 +2839017 +2839018 +2839019 +2839020 +2839021 +2839022 +2839023 +2839024 +2839025 +2839026 +2839027 +2839028 +2839029 +2839030 +2839031 +2839032 +2839033 +2839034 +2839035 +2839036 +2839037 +2839038 +2839039 +2839040 +2839041 +2839042 +2839043 +2839044 +2839045 +2839046 +2839047 +2839048 +2839049 +2839050 +2839051 +2839052 +2839053 +2839054 +2839055 +2839056 +2839057 +2839058 +2839059 +2839060 +2839061 +2839062 +2839063 +2839064 +2839065 +2839066 +2839067 +2839068 +2839069 +2839070 +2839071 +2839072 +2839073 +2839074 +2839075 +2839076 +2839077 +2839078 +2839079 +2839080 +2839081 +2839082 +2839083 +2839084 +2839085 +2839086 +2839087 +2839088 +2839089 +2839090 +2839091 +2839092 +2839093 +2839094 +2839095 +2839096 +2839097 +2839098 +2839099 +2839100 +2839101 +2839102 +2839103 +2839104 +2839105 +2839106 +2839107 +2839108 +2839109 +2839110 +2839111 +2839112 +2839113 +2839114 +2839115 +2839116 +2839117 +2839118 +2839119 +2839120 +2839121 +2839122 +2839123 +2839124 +2839125 +2839126 +2839127 +2839128 +2839129 +2839130 +2839131 +2839132 +2839133 +2839134 +2839135 +2839136 +2839137 +2839138 +2839139 +2839140 +2839141 +2839142 +2839143 +2839144 +2839145 +2839146 +2839147 +2839148 +2839149 +2839150 +2839151 +2839152 +2839153 +2839154 +2839155 +2839156 +2839157 +2839158 +2839159 +2839160 +2839161 +2839162 +2839163 +2839164 +2839165 +2839166 +2839167 +2839168 +2839169 +2839170 +2839171 +2839172 +2839173 +2839174 +2839175 +2839176 +2839177 +2839178 +2839179 +2839180 +2839181 +2839182 +2839183 +2839184 +2839185 +2839186 +2839187 +2839188 +2839189 +2839190 +2839191 +2839192 +2839193 +2839194 +2839195 +2839196 +2839197 +2839198 +2839199 +2839200 +2839201 +2839202 +2839203 +2839204 +2839205 +2839206 +2839207 +2839208 +2839209 +2839210 +2839211 +2839212 +2839213 +2839214 +2839215 +2839216 +2839217 +2839218 +2839219 +2839220 +2839221 +2839222 +2839223 +2839224 +2839225 +2839226 +2839227 +2839228 +2839229 +2839230 +2839231 +2839232 +2839233 +2839234 +2839235 +2839236 +2839237 +2839238 +2839239 +2839240 +2839241 +2839242 +2839243 +2839244 +2839245 +2839246 +2839247 +2839248 +2839249 +2839250 +2839251 +2839252 +2839253 +2839254 +2839255 +2839256 +2839257 +2839258 +2839259 +2839260 +2839261 +2839262 +2839263 +2839264 +2839265 +2839266 +2839267 +2839268 +2839269 +2839270 +2839271 +2839272 +2839273 +2839274 +2839275 +2839276 +2839277 +2839278 +2839279 +2839280 +2839281 +2839282 +2839283 +2839284 +2839285 +2839286 +2839287 +2839288 +2839289 +2839290 +2839291 +2839292 +2839293 +2839294 +2839295 +2839296 +2839297 +2839298 +2839299 +2839300 +2839301 +2839302 +2839303 +2839304 +2839305 +2839306 +2839307 +2839308 +2839309 +2839310 +2839311 +2839312 +2839313 +2839314 +2839315 +2839316 +2839317 +2839318 +2839319 +2839320 +2839321 +2839322 +2839323 +2839324 +2839325 +2839326 +2839327 +2839328 +2839329 +2839330 +2839331 +2839332 +2839333 +2839334 +2839335 +2839336 +2839337 +2839338 +2839339 +2839340 +2839341 +2839342 +2839343 +2839344 +2839345 +2839346 +2839347 +2839348 +2839349 +2839350 +2839351 +2839352 +2839353 +2839354 +2839355 +2839356 +2839357 +2839358 +2839359 +2839360 +2839361 +2839362 +2839363 +2839364 +2839365 +2839366 +2839367 +2839368 +2839369 +2839370 +2839371 +2839372 +2839373 +2839374 +2839375 +2839376 +2839377 +2839378 +2839380 +2839381 +2839382 +2839383 +2839384 +2839385 +2839386 +2839387 +2839388 +2839389 +2839390 +2839391 +2839392 +2839393 +2839394 +2839395 +2839396 +2839397 +2839398 +2839399 +2839400 +2839401 +2839402 +2839403 +2839404 +2839405 +2839406 +2839407 +2839408 +2839409 +2839410 +2839411 +2839412 +2839413 +2839414 +2839415 +2839416 +2839417 +2839418 +2839419 +2839420 +2839421 +2839422 +2839423 +2839424 +2839425 +2839426 +2839427 +2839428 +2839429 +2839430 +2839431 +2839432 +2839433 +2839434 +2839435 +2839436 +2839437 +2839438 +2839439 +2839440 +2839441 +2839442 +2839443 +2839444 +2839445 +2839446 +2839447 +2839448 +2839449 +2839450 +2839451 +2839452 +2839453 +2839454 +2839455 +2839456 +2839457 +2839458 +2839459 +2839460 +2839461 +2839462 +2839463 +2839464 +2839465 +2839466 +2839467 +2839468 +2839469 +2839470 +2839471 +2839472 +2839473 +2839474 +2839475 +2839476 +2839477 +2839478 +2839479 +2839480 +2839481 +2839482 +2839483 +2839493 +2843271 +2843272 +2843273 +2843274 +2843275 +2843276 +2843277 +2843278 +2843279 +2843280 +2843281 +2843282 +2843283 +2843284 +2843285 +2843286 +2843287 +2843288 +2843290 +2843291 +2843292 +2843293 +2843294 +2843295 +2843296 +2843297 +2843298 +2843299 +2843300 +2843301 +2843302 +2843303 +2843304 +2843305 +2843306 +2843307 +2843308 +2843309 +2843310 +2843311 +2843312 +2843313 +2843314 +2843315 +2843316 +2843317 +2843318 +2843319 +2843320 +2843321 +2843322 +2843323 +2843324 +2843325 +2843326 +2843327 +2843328 +2843329 +2843330 +2843331 +2843332 +2843333 +2843334 +2843335 +2843336 +2843337 +2843338 +2843339 +2843340 +2843341 +2843342 +2843343 +2843344 +2843345 +2843346 +2843347 +2843348 +2843349 +2843350 +2843351 +2843352 +2843353 +2843354 +2843355 +2843356 +2843357 +2843358 +2843359 +2843360 +2843361 +2843362 +2843363 +2843364 +2843365 +2843366 +2843367 +2843368 +2843369 +2843370 +2843371 +2843372 +2843373 +2843374 +2843375 +2843376 +2843377 +2843378 +2843379 +2843380 +2843381 +2843382 +2843383 +2843384 +2843385 +2843386 +2843387 +2843388 +2843389 +2843390 +2843391 +2843392 +2843393 +2843394 +2843395 +2843396 +2843397 +2843398 +2843399 +2843400 +2843401 +2843402 +2843403 +2843404 +2843405 +2843406 +2843407 +2843408 +2843409 +2843410 +2843411 +2843412 +2843413 +2843414 +2843415 +2843416 +2843417 +2843418 +2843419 +2843420 +2843421 +2843422 +2843423 +2843424 +2843425 +2843426 +2843427 +2843428 +2843429 +2843430 +2843431 +2843432 +2843433 +2843434 +2843435 +2843436 +2843437 +2843438 +2843439 +2843440 +2843441 +2843442 +2843443 +2843444 +2843445 +2843446 +2843447 +2843448 +2843449 +2843450 +2843451 +2843452 +2843453 +2843454 +2843455 +2843456 +2843457 +2843458 +2843459 +2843460 +2843461 +2843462 +2843463 +2843464 +2843465 +2843466 +2843467 +2843468 +2843469 +2843470 +2843471 +2843472 +2843473 +2843474 +2843475 +2843476 +2843477 +2843478 +2843479 +2843480 +2843481 +2843482 +2843483 +2843484 +2843485 +2843486 +2843487 +2843488 +2843489 +2843490 +2843491 +2843492 +2843493 +2843494 +2843495 +2843496 +2843497 +2843498 +2843499 +2843500 +2843501 +2843502 +2843503 +2843504 +2843505 +2843506 +2843507 +2843508 +2843509 +2843510 +2843511 +2843512 +2843513 +2843514 +2843515 +2843516 +2843517 +2843518 +2843519 +2843520 +2843521 +2843522 +2843523 +2843524 +2843525 +2843526 +2843527 +2843528 +2843529 +2843530 +2843531 +2843532 +2843533 +2843534 +2843535 +2843536 +2843537 +2843538 +2843539 +2843540 +2843541 +2843542 +2843543 +2843544 +2843545 +2843546 +2843547 +2843548 +2843549 +2843550 +2843551 +2843552 +2843553 +2843554 +2843555 +2843556 +2843557 +2843558 +2843559 +2843560 +2843561 +2843562 +2843563 +2843564 +2843565 +2843566 +2843567 +2843568 +2843569 +2843570 +2843571 +2843572 +2843573 +2843574 +2843575 +2843576 +2843577 +2843578 +2843579 +2843580 +2843581 +2843582 +2843583 +2843584 +2843585 +2843586 +2843587 +2843588 +2843589 +2843590 +2843591 +2843592 +2843593 +2843594 +2843595 +2843596 +2843597 +2843598 +2843599 +2843600 +2843601 +2843602 +2843603 +2843604 +2843605 +2843606 +2843607 +2843608 +2843609 +2843610 +2843611 +2843612 +2843613 +2843614 +2843615 +2843616 +2843617 +2843618 +2843619 +2843620 +2843621 +2843622 +2843623 +2843624 +2843625 +2843626 +2843627 +2843628 +2843629 +2843630 +2843631 +2843632 +2843633 +2843634 +2843635 +2843636 +2843637 +2843638 +2843639 +2843640 +2843641 +2843642 +2843643 +2843644 +2843645 +2843646 +2843647 +2843648 +2843649 +2843650 +2843651 +2843652 +2843653 +2843654 +2843655 +2843656 +2843657 +2843658 +2843659 +2843660 +2843661 +2843662 +2843663 +2843664 +2843665 +2843666 +2843667 +2843668 +2843669 +2843670 +2843671 +2843672 +2843673 +2843674 +2843675 +2843676 +2843677 +2843678 +2843679 +2843680 +2843681 +2843682 +2843683 +2843684 +2843685 +2843686 +2843687 +2843688 +2843689 +2843690 +2843691 +2843692 +2843693 +2843694 +2843695 +2843696 +2843697 +2843698 +2843699 +2843700 +2843701 +2843702 +2843703 +2843704 +2843705 +2843706 +2843707 +2843708 +2843709 +2843710 +2843711 +2843712 +2843713 +2843714 +2843715 +2843716 +2843717 +2843718 +2843719 +2843720 +2843721 +2843722 +2843723 +2843724 +2843725 +2843726 +2843727 +2843728 +2843729 +2843730 +2843731 +2843732 +2843733 +2843734 +2843735 +2843736 +2843737 +2843738 +2843739 +2843740 +2843741 +2843742 +2843743 +2843744 +2843745 +2843746 +2843747 +2843749 +2843750 +2843751 +2843752 +2843753 +2843754 +2843755 +2843756 +2843757 +2843758 +2843759 +2843760 +2843761 +2843762 +2843763 +2843764 +2843765 +2843766 +2843767 +2843768 +2843769 +2843770 +2843771 +2843772 +2843773 +2843774 +2843775 +2843776 +2843777 +2843778 +2843779 +2843780 +2843781 +2843782 +2843783 +2843784 +2843785 +2843786 +2843787 +2843788 +2843789 +2843790 +2843791 +2843792 +2843793 +2843794 +2843795 +2843796 +2843797 +2843798 +2843799 +2843800 +2843801 +2843802 +2847593 +2847594 +2847595 +2847596 +2847597 +2847598 +2847599 +2847600 +2847601 +2847602 +2847603 +2847604 +2847605 +2847606 +2847607 +2847608 +2847609 +2847610 +2847611 +2847612 +2847613 +2847614 +2847615 +2847616 +2847617 +2847618 +2847619 +2847620 +2847621 +2847622 +2847623 +2847624 +2847625 +2847626 +2847627 +2847628 +2847629 +2847630 +2847631 +2847632 +2847633 +2847634 +2847635 +2847636 +2847637 +2847638 +2847639 +2847640 +2847641 +2847642 +2847643 +2847644 +2847645 +2847646 +2847647 +2847648 +2847649 +2847650 +2847651 +2847652 +2847653 +2847654 +2847655 +2847656 +2847657 +2847658 +2847659 +2847660 +2847661 +2847662 +2847663 +2847664 +2847665 +2847666 +2847667 +2847668 +2847669 +2847670 +2847671 +2847672 +2847673 +2847674 +2847675 +2847676 +2847677 +2847678 +2847679 +2847680 +2847681 +2847682 +2847683 +2847684 +2847685 +2847686 +2847687 +2847688 +2847689 +2847690 +2847691 +2847692 +2847693 +2847694 +2847695 +2847696 +2847697 +2847698 +2847699 +2847700 +2847701 +2847702 +2847703 +2847704 +2847705 +2847706 +2847707 +2847708 +2847709 +2847710 +2847711 +2847712 +2847713 +2847714 +2847715 +2847716 +2847717 +2847718 +2847719 +2847720 +2847721 +2847722 +2847723 +2847724 +2847725 +2847726 +2847727 +2847728 +2847729 +2847730 +2847731 +2847732 +2847733 +2847734 +2847735 +2847736 +2847737 +2847738 +2847739 +2847740 +2847741 +2847742 +2847743 +2847744 +2847745 +2847746 +2847747 +2847748 +2847749 +2847750 +2847751 +2847752 +2847753 +2847754 +2847755 +2847756 +2847757 +2847758 +2847759 +2847760 +2847761 +2847762 +2847763 +2847764 +2847765 +2847766 +2847767 +2847768 +2847769 +2847770 +2847771 +2847772 +2847773 +2847774 +2847775 +2847776 +2847777 +2847778 +2847779 +2847780 +2847781 +2847782 +2847783 +2847784 +2847785 +2847786 +2847787 +2847788 +2847789 +2847790 +2847791 +2847792 +2847793 +2847794 +2847795 +2847796 +2847797 +2847798 +2847799 +2847800 +2847801 +2847802 +2847803 +2847804 +2847805 +2847806 +2847807 +2847808 +2847809 +2847810 +2847811 +2847812 +2847813 +2847814 +2847815 +2847816 +2847817 +2847818 +2847819 +2847820 +2847821 +2847822 +2847823 +2847824 +2847825 +2847826 +2847827 +2847828 +2847829 +2847830 +2847831 +2847832 +2847833 +2847834 +2847835 +2847836 +2847837 +2847838 +2847839 +2847840 +2847841 +2847842 +2847843 +2847844 +2847845 +2847846 +2847847 +2847848 +2847849 +2847850 +2847851 +2847852 +2847853 +2847854 +2847855 +2847856 +2847857 +2847858 +2847859 +2847860 +2847861 +2847862 +2847863 +2847864 +2847865 +2847866 +2847867 +2847868 +2847869 +2847870 +2847871 +2847872 +2847873 +2847874 +2847875 +2847876 +2847877 +2847878 +2847879 +2847880 +2847881 +2847882 +2847883 +2847884 +2847885 +2847886 +2847887 +2847888 +2847889 +2847890 +2847891 +2847892 +2847893 +2847894 +2847895 +2847896 +2847897 +2847898 +2847899 +2847900 +2847901 +2847902 +2847903 +2847904 +2847905 +2847906 +2847907 +2847908 +2847909 +2847910 +2847911 +2847912 +2847913 +2847914 +2847915 +2847916 +2847917 +2847918 +2847919 +2847920 +2847921 +2847922 +2847923 +2847924 +2847925 +2847926 +2847927 +2847928 +2847929 +2847930 +2847931 +2847932 +2847933 +2847934 +2847935 +2847936 +2847937 +2847938 +2847939 +2847940 +2847941 +2847942 +2847943 +2847944 +2847945 +2847946 +2847947 +2847948 +2847949 +2847950 +2847951 +2847952 +2847953 +2847954 +2847955 +2847956 +2847957 +2847958 +2847959 +2847960 +2847961 +2847962 +2847963 +2847964 +2847965 +2847966 +2847967 +2847968 +2847969 +2847970 +2847971 +2847972 +2847973 +2847974 +2847975 +2847976 +2847977 +2847978 +2847979 +2847980 +2847981 +2847982 +2847983 +2847984 +2847985 +2847986 +2847987 +2847988 +2847989 +2847990 +2847991 +2847992 +2847993 +2847994 +2847995 +2847996 +2847997 +2847998 +2847999 +2848000 +2848001 +2848002 +2848003 +2848004 +2848005 +2848006 +2848007 +2848008 +2848009 +2848010 +2848011 +2848012 +2848013 +2848014 +2848015 +2848016 +2848017 +2848018 +2848019 +2848020 +2848021 +2848022 +2848023 +2848024 +2848025 +2848026 +2848027 +2848028 +2848029 +2848030 +2848031 +2848032 +2848033 +2848034 +2848035 +2848036 +2848037 +2848038 +2848039 +2848040 +2848041 +2848042 +2848043 +2848044 +2848045 +2848046 +2848047 +2848048 +2848049 +2848050 +2848051 +2848052 +2848053 +2848054 +2848055 +2848056 +2848057 +2848058 +2848059 +2848060 +2848061 +2848062 +2848063 +2848064 +2848065 +2848066 +2848067 +2848068 +2848069 +2848070 +2848071 +2848072 +2848073 +2848074 +2848075 +2848076 +2848077 +2848078 +2848079 +2848080 +2848081 +2848082 +2848083 +2848084 +2848085 +2848086 +2848087 +2848088 +2848089 +2848090 +2848091 +2848092 +2848093 +2848094 +2848095 +2848096 +2848097 +2848098 +2848099 +2848100 +2848101 +2848102 +2848103 +2848104 +2848105 +2848106 +2848107 +2848108 +2848109 +2848110 +2848111 +2848112 +2848113 +2848114 +2848115 +2848116 +2848117 +2848118 +2848119 +2848120 +2848121 +2848123 +2848124 +2851913 +2851914 +2851915 +2851916 +2851917 +2851918 +2851919 +2851920 +2851921 +2851922 +2851923 +2851924 +2851925 +2851926 +2851927 +2851928 +2851929 +2851930 +2851931 +2851932 +2851933 +2851934 +2851935 +2851936 +2851937 +2851938 +2851939 +2851940 +2851941 +2851942 +2851943 +2851944 +2851945 +2851946 +2851947 +2851948 +2851949 +2851950 +2851951 +2851952 +2851953 +2851954 +2851955 +2851956 +2851957 +2851958 +2851959 +2851960 +2851961 +2851962 +2851963 +2851964 +2851965 +2851966 +2851967 +2851968 +2851969 +2851970 +2851971 +2851972 +2851973 +2851974 +2851975 +2851976 +2851977 +2851978 +2851979 +2851980 +2851981 +2851982 +2851983 +2851984 +2851985 +2851986 +2851987 +2851988 +2851989 +2851990 +2851991 +2851992 +2851993 +2851994 +2851995 +2851996 +2851997 +2851998 +2851999 +2852000 +2852001 +2852002 +2852003 +2852004 +2852005 +2852006 +2852007 +2852008 +2852009 +2852010 +2852011 +2852012 +2852013 +2852014 +2852015 +2852016 +2852017 +2852018 +2852019 +2852020 +2852021 +2852022 +2852023 +2852024 +2852025 +2852026 +2852027 +2852028 +2852029 +2852030 +2852031 +2852032 +2852033 +2852034 +2852035 +2852036 +2852037 +2852038 +2852039 +2852040 +2852041 +2852042 +2852043 +2852044 +2852045 +2852046 +2852047 +2852048 +2852049 +2852050 +2852051 +2852052 +2852053 +2852054 +2852055 +2852056 +2852057 +2852058 +2852059 +2852060 +2852061 +2852062 +2852063 +2852064 +2852065 +2852066 +2852067 +2852068 +2852069 +2852070 +2852071 +2852072 +2852073 +2852074 +2852075 +2852076 +2852077 +2852078 +2852079 +2852080 +2852081 +2852082 +2852083 +2852084 +2852085 +2852086 +2852087 +2852088 +2852089 +2852090 +2852091 +2852092 +2852093 +2852094 +2852095 +2852096 +2852097 +2852098 +2852099 +2852100 +2852101 +2852102 +2852103 +2852104 +2852105 +2852106 +2852107 +2852108 +2852109 +2852110 +2852111 +2852112 +2852113 +2852114 +2852115 +2852116 +2852117 +2852118 +2852119 +2852120 +2852121 +2852122 +2852123 +2852124 +2852125 +2852126 +2852127 +2852128 +2852129 +2852130 +2852131 +2852132 +2852133 +2852134 +2852135 +2852136 +2852137 +2852138 +2852139 +2852140 +2852141 +2852142 +2852143 +2852144 +2852145 +2852146 +2852147 +2852148 +2852149 +2852150 +2852151 +2852152 +2852153 +2852154 +2852155 +2852156 +2852157 +2852158 +2852159 +2852160 +2852161 +2852162 +2852163 +2852164 +2852165 +2852166 +2852167 +2852168 +2852169 +2852170 +2852171 +2852172 +2852173 +2852174 +2852175 +2852176 +2852177 +2852178 +2852179 +2852180 +2852181 +2852182 +2852183 +2852184 +2852185 +2852186 +2852187 +2852188 +2852189 +2852190 +2852191 +2852192 +2852193 +2852194 +2852195 +2852196 +2852197 +2852198 +2852199 +2852200 +2852201 +2852202 +2852203 +2852204 +2852205 +2852206 +2852207 +2852208 +2852209 +2852210 +2852211 +2852212 +2852213 +2852214 +2852215 +2852216 +2852217 +2852218 +2852219 +2852220 +2852221 +2852222 +2852223 +2852224 +2852225 +2852226 +2852227 +2852228 +2852229 +2852230 +2852231 +2852232 +2852233 +2852234 +2852235 +2852236 +2852237 +2852238 +2852239 +2852240 +2852241 +2852242 +2852243 +2852244 +2852245 +2852246 +2852247 +2852248 +2852249 +2852250 +2852251 +2852252 +2852253 +2852254 +2852255 +2852256 +2852257 +2852258 +2852259 +2852260 +2852261 +2852262 +2852263 +2852264 +2852265 +2852266 +2852267 +2852268 +2852269 +2852270 +2852271 +2852272 +2852273 +2852274 +2852275 +2852276 +2852277 +2852278 +2852279 +2852280 +2852281 +2852282 +2852283 +2852284 +2852285 +2852286 +2852287 +2852288 +2852289 +2852290 +2852291 +2852292 +2852293 +2852294 +2852295 +2852296 +2852297 +2852298 +2852299 +2852300 +2852301 +2852303 +2852304 +2852305 +2852306 +2852307 +2852308 +2852309 +2852310 +2852311 +2852312 +2852313 +2852314 +2852315 +2852316 +2852317 +2852318 +2852319 +2852320 +2852321 +2852322 +2852323 +2852324 +2852325 +2852326 +2852327 +2852328 +2852329 +2852330 +2852331 +2852332 +2852333 +2852334 +2852335 +2852336 +2852337 +2852338 +2852339 +2852340 +2852341 +2852342 +2852343 +2852344 +2852345 +2852346 +2852347 +2852348 +2852349 +2852350 +2852351 +2852352 +2852353 +2852354 +2852355 +2852356 +2852357 +2852358 +2852359 +2852360 +2852361 +2852362 +2852363 +2852364 +2852365 +2852366 +2852367 +2852368 +2852369 +2852370 +2852371 +2852372 +2852373 +2852374 +2852375 +2852376 +2852377 +2852378 +2852379 +2852380 +2852381 +2852382 +2852383 +2852384 +2852385 +2852386 +2852387 +2852388 +2852389 +2852390 +2852391 +2852392 +2852393 +2852394 +2852395 +2852396 +2852397 +2852398 +2852399 +2852400 +2852401 +2852402 +2852403 +2852404 +2852405 +2852406 +2852407 +2852408 +2852409 +2852410 +2852411 +2852412 +2852413 +2852414 +2852415 +2852416 +2852417 +2852418 +2852419 +2852420 +2852421 +2852422 +2852423 +2852424 +2852425 +2852426 +2852427 +2852428 +2852429 +2852430 +2852431 +2852432 +2852433 +2852434 +2852435 +2852436 +2852437 +2852438 +2852439 +2852440 +2852441 +2852442 +2852443 +2852444 +2856233 +2856234 +2856235 +2856236 +2856237 +2856238 +2856239 +2856240 +2856241 +2856242 +2856243 +2856244 +2856245 +2856246 +2856247 +2856248 +2856249 +2856250 +2856251 +2856252 +2856253 +2856254 +2856255 +2856256 +2856257 +2856258 +2856259 +2856260 +2856261 +2856262 +2856263 +2856264 +2856265 +2856266 +2856267 +2856268 +2856269 +2856270 +2856271 +2856272 +2856273 +2856274 +2856275 +2856276 +2856277 +2856278 +2856279 +2856280 +2856281 +2856282 +2856283 +2856284 +2856285 +2856286 +2856287 +2856288 +2856289 +2856290 +2856291 +2856292 +2856293 +2856294 +2856295 +2856296 +2856297 +2856298 +2856299 +2856300 +2856301 +2856302 +2856303 +2856304 +2856305 +2856306 +2856307 +2856308 +2856309 +2856310 +2856311 +2856312 +2856313 +2856314 +2856315 +2856316 +2856317 +2856318 +2856319 +2856320 +2856321 +2856322 +2856323 +2856324 +2856325 +2856326 +2856327 +2856328 +2856329 +2856330 +2856331 +2856332 +2856333 +2856334 +2856335 +2856336 +2856337 +2856338 +2856339 +2856340 +2856341 +2856342 +2856343 +2856344 +2856345 +2856346 +2856347 +2856348 +2856349 +2856350 +2856351 +2856352 +2856353 +2856354 +2856355 +2856356 +2856357 +2856358 +2856359 +2856360 +2856361 +2856362 +2856363 +2856364 +2856365 +2856366 +2856367 +2856368 +2856369 +2856370 +2856371 +2856372 +2856373 +2856374 +2856375 +2856376 +2856377 +2856378 +2856379 +2856380 +2856381 +2856382 +2856383 +2856384 +2856385 +2856386 +2856387 +2856388 +2856389 +2856390 +2856391 +2856392 +2856393 +2856394 +2856395 +2856396 +2856397 +2856398 +2856399 +2856400 +2856401 +2856402 +2856403 +2856404 +2856405 +2856406 +2856407 +2856408 +2856409 +2856410 +2856411 +2856412 +2856413 +2856414 +2856415 +2856416 +2856417 +2856418 +2856419 +2856420 +2856421 +2856422 +2856423 +2856424 +2856425 +2856426 +2856427 +2856428 +2856429 +2856430 +2856431 +2856432 +2856433 +2856434 +2856435 +2856436 +2856437 +2856438 +2856439 +2856440 +2856441 +2856442 +2856443 +2856444 +2856445 +2856446 +2856447 +2856448 +2856449 +2856450 +2856451 +2856452 +2856453 +2856454 +2856455 +2856456 +2856457 +2856458 +2856459 +2856460 +2856461 +2856462 +2856463 +2856464 +2856465 +2856466 +2856467 +2856468 +2856469 +2856470 +2856471 +2856472 +2856473 +2856474 +2856475 +2856476 +2856477 +2856478 +2856479 +2856480 +2856481 +2856482 +2856483 +2856484 +2856485 +2856486 +2856487 +2856488 +2856489 +2856490 +2856491 +2856492 +2856493 +2856494 +2856495 +2856496 +2856497 +2856498 +2856499 +2856500 +2856501 +2856502 +2856503 +2856504 +2856505 +2856506 +2856507 +2856508 +2856509 +2856510 +2856511 +2856512 +2856513 +2856514 +2856515 +2856516 +2856517 +2856518 +2856519 +2856520 +2856521 +2856522 +2856523 +2856524 +2856525 +2856526 +2856527 +2856528 +2856529 +2856530 +2856531 +2856532 +2856533 +2856534 +2856535 +2856536 +2856537 +2856538 +2856539 +2856540 +2856541 +2856542 +2856543 +2856544 +2856545 +2856546 +2856547 +2856548 +2856549 +2856550 +2856551 +2856552 +2856553 +2856554 +2856555 +2856556 +2856557 +2856558 +2856559 +2856560 +2856561 +2856562 +2856563 +2856564 +2856565 +2856566 +2856567 +2856568 +2856569 +2856570 +2856571 +2856572 +2856573 +2856574 +2856575 +2856576 +2856577 +2856578 +2856579 +2856580 +2856581 +2856582 +2856583 +2856584 +2856585 +2856586 +2856587 +2856588 +2856589 +2856590 +2856591 +2856592 +2856593 +2856594 +2856595 +2856596 +2856597 +2856598 +2856599 +2856600 +2856601 +2856602 +2856603 +2856604 +2856605 +2856606 +2856607 +2856608 +2856609 +2856610 +2856611 +2856612 +2856613 +2856614 +2856615 +2856616 +2856617 +2856618 +2856619 +2856620 +2856621 +2856622 +2856624 +2856625 +2856626 +2856627 +2856628 +2856629 +2856630 +2856631 +2856632 +2856633 +2856634 +2856635 +2856636 +2856637 +2856638 +2856639 +2856640 +2856641 +2856642 +2856643 +2856644 +2856645 +2856646 +2856647 +2856648 +2856649 +2856650 +2856651 +2856652 +2856653 +2856654 +2856655 +2856656 +2856657 +2856658 +2856659 +2856660 +2856661 +2856662 +2856663 +2856664 +2856665 +2856666 +2856667 +2856668 +2856669 +2856670 +2856671 +2856672 +2856673 +2856674 +2856675 +2856676 +2856677 +2856678 +2856679 +2856680 +2856681 +2856682 +2856683 +2856684 +2856685 +2856686 +2856687 +2856688 +2856689 +2856690 +2856691 +2856692 +2856693 +2856694 +2856695 +2856696 +2856697 +2856698 +2856699 +2856700 +2856701 +2856702 +2856703 +2856704 +2856705 +2856706 +2856707 +2856708 +2856709 +2856710 +2856711 +2856712 +2856713 +2856714 +2856715 +2856716 +2856717 +2856718 +2856719 +2856720 +2856721 +2856722 +2856723 +2856724 +2856725 +2856726 +2856727 +2856728 +2856729 +2856730 +2856731 +2856732 +2856733 +2856734 +2856735 +2856736 +2856737 +2856738 +2856739 +2856740 +2856741 +2856742 +2856743 +2856744 +2856745 +2856746 +2856747 +2856748 +2856749 +2856750 +2856751 +2856752 +2856753 +2856754 +2856755 +2856756 +2856757 +2856758 +2856759 +2856760 +2856761 +2856762 +2856763 +2856764 +2860553 +2860554 +2860555 +2860556 +2860557 +2860558 +2860559 +2860560 +2860561 +2860562 +2860563 +2860564 +2860565 +2860566 +2860567 +2860568 +2860569 +2860570 +2860571 +2860572 +2860573 +2860574 +2860575 +2860576 +2860577 +2860578 +2860579 +2860580 +2860581 +2860582 +2860583 +2860584 +2860585 +2860586 +2860587 +2860588 +2860589 +2860590 +2860591 +2860592 +2860593 +2860594 +2860595 +2860596 +2860597 +2860598 +2860599 +2860600 +2860601 +2860602 +2860603 +2860604 +2860605 +2860606 +2860607 +2860608 +2860609 +2860610 +2860611 +2860612 +2860613 +2860614 +2860615 +2860616 +2860617 +2860618 +2860619 +2860620 +2860621 +2860622 +2860623 +2860624 +2860625 +2860626 +2860627 +2860628 +2860629 +2860630 +2860631 +2860632 +2860633 +2860634 +2860635 +2860636 +2860637 +2860638 +2860639 +2860640 +2860641 +2860642 +2860643 +2860644 +2860645 +2860646 +2860647 +2860648 +2860649 +2860650 +2860651 +2860652 +2860653 +2860654 +2860655 +2860656 +2860657 +2860658 +2860659 +2860660 +2860661 +2860662 +2860663 +2860664 +2860665 +2860666 +2860667 +2860668 +2860669 +2860670 +2860671 +2860672 +2860673 +2860674 +2860675 +2860676 +2860677 +2860678 +2860679 +2860680 +2860681 +2860682 +2860683 +2860684 +2860685 +2860686 +2860687 +2860688 +2860689 +2860690 +2860691 +2860692 +2860693 +2860694 +2860695 +2860696 +2860697 +2860698 +2860699 +2860700 +2860701 +2860702 +2860703 +2860704 +2860705 +2860706 +2860707 +2860708 +2860709 +2860710 +2860711 +2860712 +2860713 +2860714 +2860715 +2860716 +2860717 +2860718 +2860719 +2860720 +2860721 +2860722 +2860723 +2860724 +2860725 +2860726 +2860727 +2860728 +2860729 +2860730 +2860731 +2860732 +2860733 +2860734 +2860735 +2860736 +2860737 +2860738 +2860739 +2860740 +2860741 +2860742 +2860743 +2860744 +2860745 +2860746 +2860747 +2860748 +2860749 +2860750 +2860751 +2860752 +2860753 +2860754 +2860755 +2860756 +2860757 +2860758 +2860759 +2860760 +2860761 +2860762 +2860763 +2860764 +2860765 +2860766 +2860767 +2860768 +2860769 +2860770 +2860771 +2860772 +2860773 +2860774 +2860775 +2860776 +2860777 +2860778 +2860779 +2860780 +2860781 +2860782 +2860783 +2860784 +2860785 +2860786 +2860787 +2860788 +2860789 +2860790 +2860791 +2860792 +2860793 +2860794 +2860795 +2860796 +2860797 +2860798 +2860799 +2860800 +2860801 +2860802 +2860803 +2860804 +2860805 +2860806 +2860807 +2860808 +2860809 +2860810 +2860811 +2860812 +2860813 +2860814 +2860815 +2860816 +2860817 +2860818 +2860819 +2860820 +2860821 +2860822 +2860823 +2860824 +2860825 +2860826 +2860827 +2860828 +2860829 +2860830 +2860831 +2860832 +2860833 +2860834 +2860835 +2860836 +2860837 +2860838 +2860839 +2860840 +2860841 +2860842 +2860843 +2860844 +2860845 +2860846 +2860847 +2860848 +2860849 +2860850 +2860851 +2860852 +2860853 +2860854 +2860855 +2860856 +2860857 +2860858 +2860859 +2860860 +2860861 +2860862 +2860863 +2860864 +2860865 +2860866 +2860867 +2860868 +2860869 +2860870 +2860871 +2860872 +2860873 +2860874 +2860875 +2860876 +2860877 +2860878 +2860879 +2860880 +2860881 +2860882 +2860883 +2860884 +2860885 +2860886 +2860887 +2860888 +2860889 +2860890 +2860891 +2860892 +2860893 +2860894 +2860895 +2860896 +2860897 +2860898 +2860899 +2860900 +2860901 +2860902 +2860903 +2860904 +2860905 +2860906 +2860907 +2860908 +2860909 +2860910 +2860911 +2860912 +2860913 +2860914 +2860915 +2860916 +2860917 +2860918 +2860919 +2860920 +2860921 +2860922 +2860923 +2860924 +2860925 +2860926 +2860927 +2860928 +2860929 +2860930 +2860931 +2860932 +2860933 +2860934 +2860935 +2860936 +2860937 +2860938 +2860939 +2860940 +2860941 +2860942 +2860943 +2860944 +2860945 +2860946 +2860947 +2860948 +2860949 +2860950 +2860951 +2860952 +2860953 +2860954 +2860955 +2860956 +2860957 +2860958 +2860959 +2860960 +2860961 +2860962 +2860963 +2860964 +2860965 +2860966 +2860967 +2860968 +2860969 +2860970 +2860971 +2860972 +2860973 +2860974 +2860975 +2860976 +2860977 +2860978 +2860979 +2860980 +2860981 +2860982 +2860983 +2860984 +2860985 +2860986 +2860987 +2860988 +2860989 +2860990 +2860991 +2860992 +2860993 +2860994 +2860995 +2860996 +2860997 +2860998 +2860999 +2861000 +2861001 +2861002 +2861003 +2861004 +2861005 +2861006 +2861007 +2861008 +2861009 +2861010 +2861011 +2861012 +2861013 +2861014 +2861015 +2861016 +2861017 +2861018 +2861019 +2861020 +2861021 +2861022 +2861023 +2861024 +2861025 +2861026 +2861027 +2861028 +2861029 +2861030 +2861031 +2861032 +2861033 +2861034 +2861035 +2861036 +2861037 +2861038 +2861039 +2861040 +2861041 +2861042 +2861043 +2861044 +2861045 +2861046 +2861047 +2861048 +2861049 +2861050 +2861051 +2861052 +2861053 +2861054 +2861055 +2861056 +2861057 +2861058 +2861059 +2861060 +2861061 +2861062 +2861063 +2861064 +2861065 +2861066 +2861067 +2861068 +2861069 +2861070 +2861071 +2861072 +2861073 +2861074 +2861075 +2861076 +2861077 +2861078 +2861079 +2861080 +2861081 +2864873 +2864874 +2864875 +2864876 +2864877 +2864878 +2864879 +2864880 +2864881 +2864882 +2864883 +2864884 +2864885 +2864886 +2864887 +2864888 +2864889 +2864890 +2864891 +2864892 +2864893 +2864894 +2864895 +2864896 +2864897 +2864898 +2864899 +2864900 +2864901 +2864902 +2864903 +2864904 +2864905 +2864906 +2864907 +2864908 +2864909 +2864910 +2864911 +2864912 +2864913 +2864914 +2864915 +2864916 +2864917 +2864918 +2864919 +2864920 +2864921 +2864922 +2864923 +2864924 +2864925 +2864926 +2864927 +2864928 +2864929 +2864930 +2864931 +2864932 +2864933 +2864934 +2864935 +2864936 +2864937 +2864938 +2864939 +2864940 +2864941 +2864942 +2864943 +2864944 +2864945 +2864946 +2864947 +2864948 +2864949 +2864950 +2864951 +2864952 +2864953 +2864954 +2864955 +2864956 +2864957 +2864958 +2864959 +2864960 +2864961 +2864962 +2864963 +2864964 +2864965 +2864966 +2864967 +2864968 +2864969 +2864970 +2864971 +2864972 +2864973 +2864974 +2864975 +2864976 +2864977 +2864978 +2864979 +2864980 +2864981 +2864982 +2864983 +2864984 +2864985 +2864986 +2864987 +2864988 +2864989 +2864990 +2864991 +2864992 +2864993 +2864994 +2864995 +2864996 +2864997 +2864998 +2864999 +2865000 +2865001 +2865002 +2865003 +2865004 +2865005 +2865006 +2865007 +2865008 +2865009 +2865010 +2865011 +2865012 +2865013 +2865014 +2865015 +2865016 +2865017 +2865018 +2865019 +2865020 +2865021 +2865022 +2865023 +2865024 +2865025 +2865026 +2865027 +2865028 +2865029 +2865030 +2865031 +2865032 +2865033 +2865034 +2865035 +2865036 +2865037 +2865038 +2865039 +2865040 +2865041 +2865042 +2865043 +2865044 +2865045 +2865046 +2865047 +2865048 +2865049 +2865050 +2865051 +2865052 +2865053 +2865054 +2865055 +2865056 +2865057 +2865058 +2865059 +2865060 +2865061 +2865062 +2865063 +2865064 +2865065 +2865066 +2865067 +2865068 +2865069 +2865070 +2865071 +2865072 +2865073 +2865074 +2865075 +2865076 +2865077 +2865078 +2865079 +2865080 +2865081 +2865082 +2865083 +2865084 +2865085 +2865086 +2865087 +2865088 +2865089 +2865090 +2865091 +2865092 +2865093 +2865094 +2865095 +2865096 +2865097 +2865098 +2865099 +2865100 +2865101 +2865102 +2865103 +2865104 +2865105 +2865106 +2865107 +2865108 +2865109 +2865110 +2865111 +2865112 +2865113 +2865114 +2865115 +2865116 +2865117 +2865118 +2865119 +2865120 +2865121 +2865122 +2865123 +2865124 +2865125 +2865126 +2865127 +2865128 +2865129 +2865130 +2865131 +2865132 +2865133 +2865134 +2865135 +2865136 +2865137 +2865138 +2865139 +2865140 +2865141 +2865142 +2865143 +2865144 +2865145 +2865146 +2865147 +2865148 +2865149 +2865150 +2865151 +2865152 +2865153 +2865154 +2865155 +2865156 +2865157 +2865158 +2865159 +2865160 +2865161 +2865162 +2865163 +2865164 +2865165 +2865166 +2865167 +2865168 +2865169 +2865170 +2865171 +2865172 +2865173 +2865174 +2865175 +2865176 +2865177 +2865178 +2865179 +2865180 +2865181 +2865182 +2865183 +2865184 +2865185 +2865186 +2865187 +2865188 +2865189 +2865190 +2865191 +2865192 +2865193 +2865194 +2865195 +2865196 +2865197 +2865198 +2865199 +2865200 +2865201 +2865202 +2865203 +2865204 +2865205 +2865206 +2865207 +2865208 +2865209 +2865210 +2865211 +2865212 +2865213 +2865214 +2865215 +2865216 +2865217 +2865218 +2865219 +2865220 +2865221 +2865222 +2865223 +2865224 +2865225 +2865226 +2865227 +2865228 +2865229 +2865230 +2865231 +2865232 +2865233 +2865234 +2865235 +2865236 +2865237 +2865238 +2865239 +2865240 +2865241 +2865242 +2865243 +2865244 +2865245 +2865246 +2865247 +2865248 +2865249 +2865250 +2865251 +2865252 +2865253 +2865254 +2865255 +2865256 +2865257 +2865258 +2865259 +2865260 +2865261 +2865262 +2865263 +2865264 +2865265 +2865266 +2865267 +2865268 +2865269 +2865270 +2865271 +2865272 +2865273 +2865274 +2865275 +2865276 +2865277 +2865278 +2865279 +2865280 +2865281 +2865282 +2865283 +2865284 +2865285 +2865286 +2865287 +2865288 +2865289 +2865291 +2865292 +2865293 +2865294 +2865295 +2865296 +2865297 +2865298 +2865299 +2865300 +2865301 +2865302 +2865303 +2865304 +2865305 +2865306 +2865307 +2865308 +2865309 +2865310 +2865311 +2865312 +2865313 +2865314 +2865315 +2865316 +2865317 +2865318 +2865319 +2865320 +2865321 +2865322 +2865323 +2865324 +2865325 +2865326 +2865327 +2865328 +2865329 +2865330 +2865331 +2865332 +2865333 +2865334 +2865335 +2865336 +2865337 +2865338 +2865339 +2865340 +2865341 +2865342 +2865343 +2865344 +2865345 +2865346 +2865347 +2865348 +2865349 +2865350 +2865351 +2865352 +2865353 +2865354 +2865355 +2865356 +2865357 +2865358 +2865359 +2865360 +2865361 +2865362 +2865363 +2865364 +2865365 +2865366 +2865367 +2865368 +2865369 +2865370 +2865371 +2865372 +2865373 +2865374 +2865375 +2865376 +2865377 +2865378 +2865379 +2865380 +2865381 +2865382 +2865383 +2865384 +2865385 +2865386 +2865387 +2865388 +2865389 +2865390 +2865391 +2865392 +2865393 +2865394 +2865395 +2865396 +2865397 +2865398 +2865399 +2865400 +2865401 +2869193 +2869194 +2869195 +2869196 +2869197 +2869198 +2869199 +2869200 +2869201 +2869202 +2869203 +2869204 +2869205 +2869206 +2869207 +2869208 +2869209 +2869210 +2869211 +2869212 +2869213 +2869214 +2869215 +2869216 +2869217 +2869218 +2869219 +2869220 +2869221 +2869222 +2869223 +2869224 +2869225 +2869226 +2869227 +2869228 +2869229 +2869230 +2869231 +2869232 +2869233 +2869234 +2869235 +2869236 +2869237 +2869238 +2869239 +2869240 +2869241 +2869242 +2869243 +2869244 +2869245 +2869246 +2869247 +2869248 +2869249 +2869250 +2869251 +2869252 +2869253 +2869254 +2869255 +2869256 +2869257 +2869258 +2869259 +2869260 +2869261 +2869262 +2869263 +2869264 +2869265 +2869266 +2869267 +2869268 +2869269 +2869270 +2869271 +2869272 +2869273 +2869274 +2869275 +2869276 +2869277 +2869278 +2869279 +2869280 +2869281 +2869282 +2869283 +2869284 +2869285 +2869286 +2869287 +2869288 +2869289 +2869290 +2869291 +2869292 +2869293 +2869294 +2869295 +2869296 +2869297 +2869298 +2869299 +2869300 +2869301 +2869302 +2869303 +2869304 +2869305 +2869306 +2869307 +2869308 +2869309 +2869310 +2869311 +2869312 +2869313 +2869314 +2869315 +2869316 +2869317 +2869318 +2869319 +2869320 +2869321 +2869322 +2869323 +2869324 +2869325 +2869326 +2869327 +2869328 +2869329 +2869330 +2869331 +2869332 +2869333 +2869334 +2869335 +2869336 +2869337 +2869338 +2869339 +2869340 +2869341 +2869342 +2869343 +2869344 +2869345 +2869346 +2869347 +2869348 +2869349 +2869350 +2869351 +2869352 +2869353 +2869354 +2869355 +2869356 +2869357 +2869358 +2869359 +2869360 +2869361 +2869362 +2869363 +2869364 +2869365 +2869366 +2869367 +2869368 +2869369 +2869370 +2869371 +2869372 +2869373 +2869374 +2869375 +2869376 +2869377 +2869378 +2869379 +2869380 +2869381 +2869382 +2869383 +2869384 +2869385 +2869386 +2869387 +2869388 +2869389 +2869390 +2869391 +2869392 +2869393 +2869394 +2869395 +2869396 +2869397 +2869398 +2869399 +2869400 +2869401 +2869402 +2869403 +2869404 +2869405 +2869406 +2869407 +2869408 +2869409 +2869410 +2869411 +2869412 +2869413 +2869414 +2869415 +2869416 +2869417 +2869418 +2869419 +2869420 +2869421 +2869422 +2869423 +2869424 +2869425 +2869426 +2869427 +2869428 +2869429 +2869430 +2869431 +2869432 +2869433 +2869434 +2869435 +2869436 +2869437 +2869438 +2869439 +2869440 +2869441 +2869442 +2869443 +2869444 +2869445 +2869446 +2869447 +2869448 +2869449 +2869450 +2869451 +2869452 +2869453 +2869454 +2869455 +2869456 +2869457 +2869458 +2869459 +2869460 +2869461 +2869462 +2869463 +2869464 +2869465 +2869466 +2869467 +2869468 +2869469 +2869470 +2869471 +2869472 +2869473 +2869474 +2869475 +2869476 +2869477 +2869478 +2869479 +2869480 +2869481 +2869482 +2869483 +2869484 +2869485 +2869486 +2869487 +2869488 +2869489 +2869490 +2869491 +2869492 +2869493 +2869494 +2869495 +2869496 +2869497 +2869498 +2869499 +2869500 +2869501 +2869502 +2869503 +2869504 +2869505 +2869506 +2869507 +2869508 +2869509 +2869510 +2869511 +2869512 +2869513 +2869514 +2869515 +2869516 +2869517 +2869518 +2869519 +2869520 +2869521 +2869522 +2869523 +2869524 +2869525 +2869526 +2869527 +2869528 +2869529 +2869530 +2869531 +2869532 +2869533 +2869534 +2869535 +2869536 +2869537 +2869538 +2869539 +2869540 +2869541 +2869542 +2869543 +2869544 +2869545 +2869546 +2869547 +2869548 +2869549 +2869550 +2869551 +2869552 +2869553 +2869554 +2869555 +2869556 +2869557 +2869558 +2869559 +2869560 +2869561 +2869562 +2869563 +2869564 +2869565 +2869566 +2869567 +2869568 +2869569 +2869570 +2869571 +2869572 +2869573 +2869574 +2869575 +2869576 +2869577 +2869578 +2869579 +2869580 +2869581 +2869582 +2869583 +2869584 +2869585 +2869586 +2869587 +2869588 +2869589 +2869590 +2869591 +2869592 +2869593 +2869594 +2869595 +2869596 +2869597 +2869598 +2869599 +2869600 +2869601 +2869602 +2869603 +2869604 +2869605 +2869606 +2869607 +2869608 +2869609 +2869610 +2869611 +2869612 +2869613 +2869614 +2869615 +2869616 +2869617 +2869618 +2869619 +2869620 +2869621 +2869622 +2869623 +2869624 +2869625 +2869626 +2869627 +2869628 +2869629 +2869630 +2869631 +2869632 +2869633 +2869634 +2869635 +2869636 +2869637 +2869638 +2869639 +2869640 +2869641 +2869642 +2869643 +2869644 +2869645 +2869646 +2869647 +2869648 +2869649 +2869650 +2869651 +2869652 +2869653 +2869654 +2869655 +2869656 +2869657 +2869658 +2869659 +2869660 +2869661 +2869662 +2869663 +2869664 +2869665 +2869666 +2869667 +2869668 +2869669 +2869670 +2869671 +2869672 +2869673 +2869674 +2869675 +2869676 +2869677 +2869678 +2869679 +2869680 +2869681 +2869682 +2869683 +2869684 +2869685 +2869686 +2869687 +2869688 +2869689 +2869690 +2869691 +2869692 +2869693 +2869694 +2869695 +2869696 +2869697 +2869698 +2869699 +2869700 +2869701 +2869702 +2869703 +2869704 +2869705 +2869706 +2869707 +2869708 +2869709 +2869710 +2869711 +2869712 +2869713 +2869714 +2869715 +2869716 +2873516 +2873517 +2873518 +2873519 +2873520 +2873521 +2873522 +2873523 +2873524 +2873525 +2873526 +2873527 +2873528 +2873529 +2873530 +2873531 +2873532 +2873533 +2873534 +2873535 +2873536 +2873537 +2873538 +2873539 +2873540 +2873541 +2873542 +2873543 +2873544 +2873545 +2873546 +2873547 +2873548 +2873549 +2873550 +2873551 +2873552 +2873553 +2873554 +2873555 +2873556 +2873557 +2873558 +2873559 +2873560 +2873561 +2873562 +2873563 +2873564 +2873565 +2873566 +2873567 +2873568 +2873569 +2873570 +2873571 +2873572 +2873573 +2873574 +2873575 +2873576 +2873577 +2873578 +2873579 +2873580 +2873581 +2873582 +2873583 +2873584 +2873585 +2873586 +2873587 +2873588 +2873589 +2873590 +2873591 +2873592 +2873593 +2873594 +2873595 +2873596 +2873597 +2873598 +2873599 +2873600 +2873601 +2873602 +2873603 +2873604 +2873605 +2873606 +2873607 +2873608 +2873609 +2873610 +2873611 +2873612 +2873613 +2873614 +2873615 +2873616 +2873617 +2873618 +2873619 +2873620 +2873621 +2873622 +2873623 +2873624 +2873625 +2873626 +2873627 +2873628 +2873629 +2873630 +2873631 +2873632 +2873633 +2873634 +2873635 +2873636 +2873637 +2873638 +2873639 +2873640 +2873641 +2873642 +2873643 +2873644 +2873645 +2873646 +2873647 +2873648 +2873649 +2873650 +2873651 +2873652 +2873653 +2873654 +2873655 +2873656 +2873657 +2873658 +2873659 +2873660 +2873661 +2873662 +2873663 +2873664 +2873665 +2873666 +2873667 +2873668 +2873669 +2873670 +2873671 +2873672 +2873673 +2873674 +2873675 +2873676 +2873677 +2873678 +2873679 +2873680 +2873681 +2873682 +2873683 +2873684 +2873685 +2873686 +2873687 +2873688 +2873689 +2873690 +2873691 +2873692 +2873693 +2873694 +2873695 +2873696 +2873697 +2873698 +2873699 +2873700 +2873701 +2873702 +2873703 +2873704 +2873705 +2873706 +2873707 +2873708 +2873709 +2873710 +2873711 +2873712 +2873713 +2873714 +2873715 +2873716 +2873717 +2873718 +2873719 +2873720 +2873721 +2873722 +2873723 +2873724 +2873725 +2873726 +2873727 +2873728 +2873729 +2873730 +2873731 +2873732 +2873733 +2873734 +2873735 +2873736 +2873737 +2873738 +2873739 +2873740 +2873741 +2873742 +2873743 +2873744 +2873745 +2873746 +2873747 +2873748 +2873749 +2873750 +2873751 +2873752 +2873753 +2873754 +2873755 +2873756 +2873757 +2873758 +2873759 +2873760 +2873761 +2873762 +2873763 +2873764 +2873765 +2873766 +2873767 +2873768 +2873769 +2873770 +2873771 +2873772 +2873773 +2873774 +2873775 +2873776 +2873777 +2873778 +2873779 +2873780 +2873781 +2873782 +2873783 +2873784 +2873785 +2873786 +2873787 +2873788 +2873789 +2873790 +2873791 +2873792 +2873793 +2873794 +2873795 +2873796 +2873797 +2873798 +2873799 +2873800 +2873801 +2873802 +2873803 +2873804 +2873805 +2873806 +2873807 +2873808 +2873809 +2873810 +2873811 +2873812 +2873813 +2873814 +2873815 +2873816 +2873817 +2873818 +2873819 +2873820 +2873821 +2873822 +2873823 +2873824 +2873825 +2873826 +2873827 +2873828 +2873829 +2873830 +2873831 +2873832 +2873833 +2873834 +2873835 +2873836 +2873837 +2873838 +2873839 +2873840 +2873841 +2873842 +2873843 +2873844 +2873845 +2873846 +2873847 +2873848 +2873849 +2873850 +2873851 +2873852 +2873853 +2873854 +2873855 +2873856 +2873857 +2873858 +2873859 +2873860 +2873861 +2873862 +2873863 +2873864 +2873865 +2873866 +2873867 +2873868 +2873869 +2873870 +2873871 +2873872 +2873873 +2873874 +2873875 +2873876 +2873877 +2873878 +2873879 +2873880 +2873881 +2873882 +2873883 +2873884 +2873885 +2873886 +2873887 +2873888 +2873889 +2873890 +2873891 +2873892 +2873893 +2873894 +2873895 +2873896 +2873897 +2873898 +2873899 +2873900 +2873901 +2873902 +2873903 +2873904 +2873905 +2873906 +2873907 +2873908 +2873909 +2873910 +2873911 +2873912 +2873913 +2873914 +2873915 +2873916 +2873917 +2873918 +2873919 +2873920 +2873921 +2873922 +2873923 +2873924 +2873925 +2873926 +2873928 +2873929 +2873930 +2873931 +2873932 +2873933 +2873934 +2873935 +2873936 +2873937 +2873938 +2873939 +2873940 +2873941 +2873942 +2873943 +2873944 +2873945 +2873946 +2873947 +2873948 +2873949 +2873950 +2873951 +2873952 +2873953 +2873954 +2873955 +2873956 +2873957 +2873958 +2873959 +2873960 +2873961 +2873962 +2873963 +2873964 +2873965 +2873966 +2873967 +2873968 +2873969 +2873970 +2873971 +2873972 +2873973 +2873974 +2873975 +2873976 +2873977 +2873978 +2873979 +2873980 +2873981 +2873982 +2873983 +2873984 +2873985 +2873986 +2873987 +2873988 +2873989 +2873990 +2873991 +2873992 +2873993 +2873994 +2873995 +2873996 +2873997 +2873998 +2873999 +2874000 +2874001 +2874002 +2874003 +2874004 +2874005 +2874006 +2874007 +2874008 +2874009 +2874010 +2874011 +2874012 +2874013 +2874014 +2874015 +2874016 +2874017 +2874018 +2874019 +2874020 +2874021 +2874022 +2874023 +2874024 +2874025 +2874026 +2874027 +2874028 +2874029 +2877836 +2877837 +2877838 +2877839 +2877840 +2877841 +2877842 +2877843 +2877844 +2877845 +2877846 +2877847 +2877848 +2877849 +2877850 +2877851 +2877852 +2877853 +2877854 +2877855 +2877856 +2877857 +2877858 +2877859 +2877860 +2877861 +2877862 +2877863 +2877864 +2877865 +2877866 +2877867 +2877868 +2877869 +2877870 +2877871 +2877872 +2877873 +2877874 +2877875 +2877876 +2877877 +2877878 +2877879 +2877880 +2877881 +2877882 +2877883 +2877884 +2877885 +2877886 +2877887 +2877888 +2877889 +2877890 +2877891 +2877892 +2877893 +2877894 +2877895 +2877896 +2877897 +2877898 +2877899 +2877900 +2877901 +2877902 +2877903 +2877904 +2877905 +2877906 +2877907 +2877909 +2877910 +2877911 +2877912 +2877913 +2877914 +2877915 +2877916 +2877917 +2877918 +2877919 +2877920 +2877921 +2877922 +2877923 +2877924 +2877925 +2877926 +2877927 +2877928 +2877929 +2877930 +2877931 +2877932 +2877933 +2877934 +2877935 +2877936 +2877937 +2877938 +2877939 +2877940 +2877941 +2877942 +2877943 +2877944 +2877945 +2877946 +2877947 +2877948 +2877949 +2877950 +2877951 +2877952 +2877953 +2877954 +2877955 +2877956 +2877957 +2877958 +2877959 +2877960 +2877961 +2877962 +2877963 +2877964 +2877965 +2877966 +2877967 +2877968 +2877969 +2877970 +2877971 +2877972 +2877973 +2877974 +2877975 +2877976 +2877977 +2877978 +2877979 +2877980 +2877981 +2877982 +2877983 +2877984 +2877985 +2877986 +2877987 +2877988 +2877989 +2877990 +2877991 +2877992 +2877993 +2877994 +2877995 +2877996 +2877997 +2877998 +2877999 +2878000 +2878001 +2878002 +2878003 +2878004 +2878005 +2878006 +2878007 +2878008 +2878009 +2878010 +2878011 +2878012 +2878013 +2878014 +2878015 +2878016 +2878017 +2878018 +2878019 +2878020 +2878021 +2878022 +2878023 +2878024 +2878025 +2878026 +2878027 +2878028 +2878029 +2878030 +2878031 +2878032 +2878033 +2878034 +2878035 +2878036 +2878037 +2878038 +2878039 +2878040 +2878041 +2878042 +2878043 +2878044 +2878045 +2878046 +2878047 +2878048 +2878049 +2878050 +2878051 +2878052 +2878053 +2878054 +2878055 +2878056 +2878057 +2878058 +2878059 +2878060 +2878061 +2878062 +2878063 +2878064 +2878065 +2878066 +2878067 +2878068 +2878069 +2878070 +2878071 +2878072 +2878073 +2878074 +2878075 +2878076 +2878077 +2878078 +2878079 +2878080 +2878081 +2878082 +2878083 +2878084 +2878085 +2878086 +2878087 +2878088 +2878089 +2878090 +2878091 +2878092 +2878093 +2878094 +2878095 +2878096 +2878097 +2878098 +2878099 +2878100 +2878101 +2878102 +2878103 +2878104 +2878105 +2878106 +2878107 +2878108 +2878109 +2878110 +2878111 +2878112 +2878113 +2878114 +2878115 +2878116 +2878117 +2878118 +2878119 +2878120 +2878121 +2878122 +2878123 +2878124 +2878125 +2878126 +2878127 +2878128 +2878129 +2878130 +2878131 +2878132 +2878133 +2878134 +2878135 +2878136 +2878137 +2878138 +2878139 +2878140 +2878141 +2878142 +2878143 +2878144 +2878145 +2878146 +2878147 +2878148 +2878149 +2878150 +2878151 +2878152 +2878153 +2878154 +2878155 +2878156 +2878157 +2878158 +2878159 +2878160 +2878161 +2878162 +2878163 +2878164 +2878165 +2878166 +2878167 +2878168 +2878169 +2878170 +2878171 +2878172 +2878173 +2878174 +2878175 +2878176 +2878177 +2878178 +2878179 +2878180 +2878181 +2878182 +2878183 +2878184 +2878185 +2878186 +2878187 +2878188 +2878189 +2878190 +2878191 +2878192 +2878193 +2878194 +2878195 +2878196 +2878197 +2878198 +2878199 +2878200 +2878201 +2878202 +2878203 +2878206 +2878207 +2878208 +2878209 +2878210 +2878211 +2878212 +2878213 +2878214 +2878215 +2878216 +2878217 +2878218 +2878219 +2878220 +2878221 +2878222 +2878223 +2878224 +2878225 +2878226 +2878227 +2878228 +2878229 +2878230 +2878231 +2878232 +2878233 +2878234 +2878235 +2878236 +2878237 +2878238 +2878239 +2878240 +2878241 +2878242 +2878243 +2878244 +2878245 +2878246 +2878247 +2878248 +2878249 +2878250 +2878251 +2878252 +2878253 +2878254 +2878255 +2878256 +2878257 +2878258 +2878259 +2878260 +2878261 +2878262 +2878263 +2878264 +2878265 +2878266 +2878267 +2878268 +2878269 +2878270 +2878271 +2878272 +2878273 +2878274 +2878275 +2878276 +2878277 +2878278 +2878279 +2878280 +2878281 +2878282 +2878283 +2878284 +2878285 +2878286 +2878287 +2878288 +2878289 +2878290 +2878291 +2878292 +2878293 +2878294 +2878295 +2878296 +2878297 +2878298 +2878299 +2878300 +2878301 +2878302 +2878303 +2878304 +2878305 +2878306 +2878307 +2878308 +2878309 +2878310 +2878311 +2878312 +2878313 +2878314 +2878315 +2878316 +2878317 +2878318 +2878319 +2878320 +2878321 +2878322 +2878323 +2878324 +2878325 +2878326 +2878327 +2878328 +2878329 +2878330 +2878331 +2878332 +2878333 +2878334 +2878335 +2878336 +2878337 +2878338 +2878339 +2878340 +2878341 +2878342 +2878343 +2878344 +2878345 +2878346 +2878347 +2878348 +2878349 +2882162 +2882163 +2882164 +2882166 +2882167 +2882168 +2882169 +2882170 +2882171 +2882172 +2882173 +2882174 +2882175 +2882176 +2882177 +2882178 +2882179 +2882180 +2882181 +2882182 +2882183 +2882184 +2882185 +2882186 +2882187 +2882188 +2882189 +2882190 +2882191 +2882192 +2882193 +2882194 +2882195 +2882196 +2882197 +2882198 +2882199 +2882200 +2882201 +2882202 +2882203 +2882204 +2882205 +2882206 +2882207 +2882208 +2882209 +2882210 +2882211 +2882212 +2882213 +2882214 +2882215 +2882216 +2882217 +2882218 +2882219 +2882220 +2882221 +2882222 +2882223 +2882224 +2882225 +2882226 +2882227 +2882228 +2882229 +2882230 +2882231 +2882232 +2882233 +2882234 +2882235 +2882236 +2882237 +2882238 +2882239 +2882240 +2882241 +2882242 +2882243 +2882244 +2882245 +2882246 +2882247 +2882248 +2882249 +2882250 +2882251 +2882252 +2882253 +2882254 +2882255 +2882256 +2882257 +2882258 +2882259 +2882260 +2882261 +2882262 +2882263 +2882264 +2882265 +2882266 +2882267 +2882268 +2882269 +2882270 +2882271 +2882272 +2882273 +2882274 +2882275 +2882276 +2882277 +2882278 +2882279 +2882280 +2882281 +2882282 +2882283 +2882284 +2882285 +2882286 +2882287 +2882288 +2882289 +2882290 +2882291 +2882292 +2882293 +2882294 +2882295 +2882296 +2882297 +2882298 +2882299 +2882300 +2882301 +2882302 +2882303 +2882304 +2882305 +2882306 +2882307 +2882308 +2882309 +2882310 +2882311 +2882312 +2882313 +2882314 +2882315 +2882316 +2882317 +2882318 +2882319 +2882320 +2882321 +2882322 +2882323 +2882324 +2882325 +2882326 +2882327 +2882328 +2882329 +2882330 +2882331 +2882332 +2882333 +2882334 +2882335 +2882336 +2882337 +2882338 +2882339 +2882340 +2882341 +2882342 +2882343 +2882344 +2882345 +2882346 +2882347 +2882348 +2882349 +2882350 +2882351 +2882352 +2882353 +2882354 +2882355 +2882356 +2882357 +2882358 +2882359 +2882360 +2882361 +2882362 +2882363 +2882364 +2882365 +2882366 +2882367 +2882368 +2882369 +2882370 +2882371 +2882372 +2882373 +2882374 +2882375 +2882376 +2882377 +2882378 +2882379 +2882380 +2882381 +2882382 +2882383 +2882384 +2882385 +2882386 +2882387 +2882388 +2882389 +2882390 +2882391 +2882392 +2882393 +2882394 +2882395 +2882396 +2882397 +2882398 +2882399 +2882400 +2882401 +2882402 +2882403 +2882404 +2882405 +2882406 +2882407 +2882408 +2882409 +2882410 +2882411 +2882412 +2882413 +2882414 +2882415 +2882416 +2882417 +2882418 +2882419 +2882420 +2882421 +2882422 +2882423 +2882424 +2882425 +2882426 +2882427 +2882428 +2882429 +2882430 +2882431 +2882432 +2882433 +2882434 +2882435 +2882436 +2882437 +2882438 +2882439 +2882440 +2882441 +2882442 +2882443 +2882444 +2882445 +2882446 +2882447 +2882448 +2882449 +2882450 +2882451 +2882452 +2882453 +2882454 +2882455 +2882456 +2882457 +2882458 +2882459 +2882460 +2882461 +2882462 +2882463 +2882464 +2882465 +2882466 +2882467 +2882468 +2882469 +2882470 +2882471 +2882472 +2882473 +2882474 +2882475 +2882476 +2882477 +2882478 +2882479 +2882480 +2882481 +2882482 +2882483 +2882484 +2882485 +2882486 +2882487 +2882488 +2882489 +2882490 +2882491 +2882492 +2882493 +2882494 +2882495 +2882496 +2882497 +2882498 +2882499 +2882500 +2882501 +2882502 +2882503 +2882504 +2882505 +2882506 +2882507 +2882508 +2882509 +2882510 +2882511 +2882512 +2882513 +2882514 +2882515 +2882516 +2882517 +2882518 +2882519 +2882520 +2882521 +2882522 +2882524 +2882525 +2882526 +2882527 +2882528 +2882529 +2882530 +2882531 +2882532 +2882533 +2882534 +2882535 +2882536 +2882537 +2882538 +2882539 +2882540 +2882541 +2882542 +2882543 +2882544 +2882545 +2882546 +2882547 +2882548 +2882549 +2882550 +2882551 +2882552 +2882553 +2882554 +2882555 +2882556 +2882557 +2882558 +2882559 +2882560 +2882561 +2882562 +2882563 +2882564 +2882566 +2882567 +2882568 +2882569 +2882570 +2882571 +2882572 +2882573 +2882574 +2882575 +2882576 +2882577 +2882578 +2882579 +2882580 +2882581 +2882582 +2882583 +2882584 +2882585 +2882586 +2882587 +2882588 +2882589 +2882590 +2882591 +2882592 +2882593 +2882594 +2882595 +2882596 +2882597 +2882598 +2882599 +2882600 +2882601 +2882602 +2882603 +2882604 +2882605 +2882606 +2882607 +2882608 +2882609 +2882610 +2882611 +2882612 +2882613 +2882614 +2882615 +2882616 +2882617 +2882618 +2882619 +2882620 +2882621 +2882622 +2882623 +2882624 +2882625 +2882626 +2882627 +2882628 +2882629 +2882630 +2882631 +2882632 +2882633 +2882634 +2882635 +2882636 +2882637 +2882638 +2882639 +2882640 +2882641 +2882642 +2882643 +2882644 +2882645 +2882646 +2882647 +2882648 +2882649 +2882650 +2882651 +2882652 +2882653 +2882654 +2882655 +2882656 +2882657 +2882658 +2882659 +2882660 +2882661 +2882662 +2882663 +2882664 +2882665 +2882666 +2882667 +2882668 +2882669 +2886491 +2886492 +2886493 +2886494 +2886495 +2886496 +2886497 +2886498 +2886499 +2886500 +2886501 +2886502 +2886503 +2886504 +2886505 +2886506 +2886507 +2886508 +2886509 +2886510 +2886511 +2886512 +2886513 +2886514 +2886515 +2886516 +2886517 +2886518 +2886519 +2886520 +2886521 +2886522 +2886523 +2886524 +2886525 +2886526 +2886527 +2886528 +2886529 +2886530 +2886531 +2886532 +2886533 +2886534 +2886535 +2886536 +2886537 +2886538 +2886539 +2886540 +2886541 +2886542 +2886543 +2886544 +2886545 +2886546 +2886547 +2886548 +2886549 +2886550 +2886551 +2886552 +2886553 +2886554 +2886555 +2886556 +2886557 +2886558 +2886559 +2886560 +2886561 +2886562 +2886563 +2886564 +2886565 +2886566 +2886567 +2886568 +2886569 +2886570 +2886571 +2886572 +2886573 +2886574 +2886575 +2886576 +2886577 +2886578 +2886579 +2886580 +2886581 +2886582 +2886583 +2886584 +2886585 +2886586 +2886587 +2886588 +2886589 +2886590 +2886591 +2886592 +2886593 +2886594 +2886595 +2886596 +2886597 +2886598 +2886599 +2886600 +2886601 +2886602 +2886603 +2886604 +2886605 +2886606 +2886607 +2886608 +2886609 +2886610 +2886611 +2886612 +2886613 +2886614 +2886615 +2886616 +2886617 +2886618 +2886619 +2886620 +2886621 +2886622 +2886623 +2886624 +2886625 +2886626 +2886627 +2886628 +2886629 +2886630 +2886631 +2886632 +2886633 +2886634 +2886635 +2886636 +2886637 +2886638 +2886639 +2886640 +2886641 +2886642 +2886643 +2886644 +2886645 +2886646 +2886647 +2886648 +2886649 +2886650 +2886651 +2886652 +2886653 +2886654 +2886655 +2886656 +2886657 +2886658 +2886659 +2886660 +2886661 +2886662 +2886663 +2886664 +2886665 +2886666 +2886667 +2886668 +2886669 +2886670 +2886671 +2886672 +2886673 +2886674 +2886675 +2886676 +2886677 +2886678 +2886679 +2886680 +2886681 +2886682 +2886683 +2886684 +2886685 +2886686 +2886687 +2886688 +2886689 +2886690 +2886691 +2886692 +2886693 +2886694 +2886695 +2886696 +2886697 +2886698 +2886699 +2886700 +2886701 +2886702 +2886703 +2886704 +2886705 +2886706 +2886707 +2886708 +2886709 +2886710 +2886711 +2886712 +2886713 +2886714 +2886715 +2886716 +2886717 +2886718 +2886719 +2886720 +2886721 +2886722 +2886723 +2886724 +2886725 +2886726 +2886727 +2886728 +2886729 +2886730 +2886731 +2886732 +2886733 +2886734 +2886735 +2886736 +2886737 +2886738 +2886739 +2886740 +2886741 +2886742 +2886743 +2886744 +2886745 +2886746 +2886747 +2886748 +2886749 +2886750 +2886751 +2886752 +2886753 +2886754 +2886755 +2886756 +2886757 +2886758 +2886759 +2886760 +2886761 +2886762 +2886763 +2886764 +2886765 +2886766 +2886767 +2886768 +2886769 +2886770 +2886771 +2886772 +2886773 +2886774 +2886775 +2886776 +2886777 +2886778 +2886779 +2886780 +2886781 +2886782 +2886783 +2886784 +2886785 +2886786 +2886787 +2886788 +2886789 +2886790 +2886791 +2886792 +2886793 +2886794 +2886795 +2886796 +2886797 +2886798 +2886799 +2886800 +2886801 +2886802 +2886803 +2886804 +2886805 +2886806 +2886807 +2886808 +2886809 +2886810 +2886811 +2886812 +2886813 +2886814 +2886815 +2886816 +2886817 +2886818 +2886819 +2886820 +2886821 +2886822 +2886823 +2886824 +2886825 +2886826 +2886827 +2886828 +2886829 +2886830 +2886831 +2886832 +2886833 +2886834 +2886835 +2886836 +2886837 +2886838 +2886839 +2886840 +2886841 +2886842 +2886843 +2886844 +2886845 +2886846 +2886847 +2886848 +2886849 +2886850 +2886851 +2886852 +2886853 +2886854 +2886855 +2886856 +2886857 +2886858 +2886859 +2886860 +2886861 +2886862 +2886863 +2886864 +2886865 +2886866 +2886867 +2886868 +2886869 +2886870 +2886871 +2886872 +2886873 +2886874 +2886875 +2886876 +2886877 +2886878 +2886879 +2886880 +2886881 +2886882 +2886883 +2886884 +2886885 +2886886 +2886887 +2886888 +2886889 +2886890 +2886891 +2886892 +2886893 +2886894 +2886895 +2886896 +2886897 +2886898 +2886899 +2886900 +2886901 +2886902 +2886903 +2886904 +2886905 +2886906 +2886907 +2886908 +2886909 +2886910 +2886911 +2886912 +2886913 +2886914 +2886915 +2886916 +2886917 +2886918 +2886919 +2886920 +2886921 +2886922 +2886923 +2886924 +2886925 +2886926 +2886927 +2886928 +2886929 +2886930 +2886931 +2886932 +2886933 +2886934 +2886936 +2886937 +2886938 +2886939 +2886940 +2886941 +2886942 +2886943 +2886944 +2886945 +2886946 +2886947 +2886948 +2886949 +2886950 +2886951 +2886952 +2886953 +2886954 +2886955 +2886956 +2886957 +2886958 +2886959 +2886960 +2886961 +2886962 +2886963 +2886964 +2886965 +2886966 +2886967 +2886968 +2886969 +2886970 +2886971 +2886972 +2886973 +2886974 +2886975 +2886976 +2886977 +2886978 +2886979 +2886980 +2886981 +2886982 +2886983 +2886984 +2886985 +2886986 +2890811 +2890812 +2890813 +2890814 +2890815 +2890816 +2890817 +2890818 +2890819 +2890820 +2890821 +2890822 +2890823 +2890824 +2890825 +2890826 +2890827 +2890828 +2890829 +2890830 +2890831 +2890832 +2890833 +2890834 +2890835 +2890836 +2890837 +2890838 +2890839 +2890840 +2890841 +2890842 +2890843 +2890844 +2890845 +2890846 +2890847 +2890848 +2890849 +2890850 +2890851 +2890852 +2890853 +2890854 +2890855 +2890856 +2890857 +2890858 +2890859 +2890860 +2890861 +2890862 +2890863 +2890864 +2890865 +2890866 +2890867 +2890868 +2890869 +2890870 +2890871 +2890872 +2890873 +2890874 +2890875 +2890876 +2890877 +2890878 +2890879 +2890880 +2890881 +2890882 +2890883 +2890884 +2890885 +2890886 +2890887 +2890888 +2890889 +2890890 +2890891 +2890892 +2890893 +2890894 +2890895 +2890896 +2890897 +2890898 +2890899 +2890900 +2890901 +2890902 +2890903 +2890904 +2890905 +2890906 +2890907 +2890908 +2890909 +2890910 +2890911 +2890912 +2890913 +2890914 +2890915 +2890916 +2890917 +2890918 +2890919 +2890920 +2890921 +2890922 +2890923 +2890924 +2890925 +2890926 +2890927 +2890928 +2890929 +2890930 +2890931 +2890932 +2890933 +2890934 +2890935 +2890936 +2890937 +2890938 +2890939 +2890940 +2890941 +2890942 +2890943 +2890944 +2890945 +2890946 +2890947 +2890948 +2890949 +2890950 +2890951 +2890952 +2890953 +2890954 +2890955 +2890956 +2890957 +2890958 +2890959 +2890960 +2890961 +2890962 +2890963 +2890964 +2890965 +2890966 +2890967 +2890968 +2890969 +2890970 +2890971 +2890972 +2890973 +2890974 +2890975 +2890976 +2890977 +2890978 +2890979 +2890980 +2890981 +2890982 +2890983 +2890984 +2890985 +2890986 +2890987 +2890988 +2890989 +2890990 +2890991 +2890992 +2890993 +2890994 +2890995 +2890996 +2890997 +2890998 +2890999 +2891000 +2891001 +2891002 +2891003 +2891004 +2891005 +2891006 +2891007 +2891008 +2891009 +2891010 +2891011 +2891012 +2891013 +2891014 +2891015 +2891016 +2891017 +2891018 +2891019 +2891020 +2891021 +2891022 +2891023 +2891024 +2891025 +2891026 +2891027 +2891028 +2891029 +2891030 +2891031 +2891032 +2891033 +2891034 +2891035 +2891036 +2891037 +2891038 +2891039 +2891040 +2891041 +2891042 +2891043 +2891044 +2891045 +2891046 +2891047 +2891048 +2891049 +2891050 +2891051 +2891052 +2891053 +2891054 +2891055 +2891056 +2891057 +2891058 +2891059 +2891060 +2891061 +2891062 +2891063 +2891064 +2891065 +2891066 +2891067 +2891068 +2891069 +2891070 +2891071 +2891072 +2891073 +2891074 +2891075 +2891076 +2891077 +2891078 +2891079 +2891080 +2891081 +2891082 +2891083 +2891084 +2891085 +2891086 +2891087 +2891088 +2891089 +2891090 +2891091 +2891092 +2891093 +2891094 +2891095 +2891096 +2891097 +2891098 +2891099 +2891100 +2891101 +2891102 +2891103 +2891104 +2891105 +2891106 +2891107 +2891108 +2891109 +2891110 +2891111 +2891112 +2891113 +2891114 +2891115 +2891116 +2891117 +2891118 +2891119 +2891120 +2891121 +2891122 +2891123 +2891124 +2891125 +2891126 +2891127 +2891128 +2891129 +2891130 +2891131 +2891132 +2891133 +2891134 +2891135 +2891136 +2891137 +2891138 +2891139 +2891140 +2891141 +2891142 +2891143 +2891144 +2891145 +2891146 +2891147 +2891148 +2891149 +2891150 +2891151 +2891152 +2891153 +2891154 +2891155 +2891156 +2891157 +2891158 +2891159 +2891160 +2891161 +2891162 +2891163 +2891164 +2891165 +2891166 +2891167 +2891168 +2891169 +2891170 +2891171 +2891172 +2891173 +2891174 +2891175 +2891176 +2891177 +2891178 +2891179 +2891180 +2891181 +2891182 +2891183 +2891184 +2891185 +2891186 +2891187 +2891188 +2891189 +2891190 +2891191 +2891192 +2891193 +2891194 +2891195 +2891196 +2891197 +2891198 +2891199 +2891200 +2891201 +2891202 +2891203 +2891204 +2891205 +2891206 +2891207 +2891208 +2891209 +2891210 +2891211 +2891212 +2891213 +2891214 +2891215 +2891216 +2891217 +2891218 +2891219 +2891220 +2891221 +2891222 +2891223 +2891224 +2891225 +2891226 +2891227 +2891228 +2891229 +2891230 +2891231 +2891232 +2891233 +2891234 +2891235 +2891236 +2891237 +2891238 +2891239 +2891240 +2891241 +2891242 +2891243 +2891244 +2891245 +2891246 +2891247 +2891248 +2891249 +2891250 +2891251 +2891252 +2891253 +2891254 +2891255 +2891256 +2891258 +2891259 +2891260 +2891261 +2891262 +2891263 +2891264 +2891265 +2891266 +2891267 +2891268 +2891269 +2891270 +2891271 +2891272 +2891273 +2891274 +2891275 +2891276 +2891277 +2891278 +2891279 +2891280 +2891281 +2891282 +2891283 +2891284 +2891285 +2891286 +2891287 +2891288 +2891289 +2891290 +2891291 +2891292 +2891293 +2891294 +2891295 +2891296 +2891297 +2891298 +2891299 +2891300 +2891301 +2891302 +2891303 +2891304 +2891305 +2891306 +2895131 +2895132 +2895133 +2895134 +2895135 +2895136 +2895137 +2895138 +2895139 +2895140 +2895141 +2895142 +2895143 +2895144 +2895145 +2895146 +2895147 +2895148 +2895149 +2895150 +2895151 +2895152 +2895153 +2895154 +2895155 +2895156 +2895157 +2895158 +2895159 +2895160 +2895161 +2895162 +2895163 +2895164 +2895165 +2895166 +2895167 +2895168 +2895169 +2895170 +2895171 +2895172 +2895173 +2895174 +2895175 +2895176 +2895177 +2895178 +2895179 +2895180 +2895181 +2895182 +2895183 +2895184 +2895185 +2895186 +2895187 +2895188 +2895189 +2895190 +2895191 +2895192 +2895193 +2895194 +2895195 +2895196 +2895197 +2895198 +2895199 +2895200 +2895201 +2895202 +2895203 +2895204 +2895205 +2895206 +2895207 +2895208 +2895209 +2895210 +2895211 +2895212 +2895213 +2895214 +2895215 +2895216 +2895217 +2895218 +2895219 +2895220 +2895221 +2895222 +2895223 +2895224 +2895225 +2895226 +2895227 +2895228 +2895229 +2895230 +2895231 +2895232 +2895233 +2895234 +2895235 +2895236 +2895237 +2895238 +2895239 +2895240 +2895241 +2895242 +2895243 +2895244 +2895245 +2895246 +2895247 +2895248 +2895249 +2895250 +2895251 +2895252 +2895253 +2895254 +2895255 +2895256 +2895257 +2895258 +2895259 +2895260 +2895261 +2895262 +2895263 +2895264 +2895265 +2895266 +2895267 +2895268 +2895269 +2895270 +2895271 +2895272 +2895273 +2895274 +2895275 +2895276 +2895277 +2895278 +2895279 +2895280 +2895281 +2895282 +2895283 +2895284 +2895285 +2895286 +2895287 +2895288 +2895289 +2895290 +2895291 +2895292 +2895293 +2895294 +2895295 +2895296 +2895297 +2895298 +2895299 +2895300 +2895301 +2895302 +2895303 +2895304 +2895305 +2895306 +2895307 +2895308 +2895309 +2895310 +2895311 +2895312 +2895313 +2895314 +2895315 +2895316 +2895317 +2895318 +2895319 +2895320 +2895321 +2895322 +2895323 +2895324 +2895325 +2895326 +2895327 +2895328 +2895329 +2895330 +2895331 +2895332 +2895333 +2895334 +2895335 +2895336 +2895337 +2895338 +2895339 +2895340 +2895341 +2895342 +2895343 +2895344 +2895345 +2895346 +2895347 +2895348 +2895349 +2895350 +2895351 +2895352 +2895353 +2895354 +2895355 +2895356 +2895357 +2895358 +2895359 +2895360 +2895361 +2895362 +2895363 +2895364 +2895365 +2895366 +2895367 +2895368 +2895369 +2895370 +2895371 +2895372 +2895373 +2895374 +2895375 +2895376 +2895377 +2895378 +2895379 +2895380 +2895381 +2895382 +2895383 +2895384 +2895385 +2895386 +2895387 +2895388 +2895389 +2895390 +2895391 +2895392 +2895393 +2895394 +2895395 +2895396 +2895397 +2895398 +2895399 +2895400 +2895401 +2895402 +2895403 +2895404 +2895405 +2895406 +2895407 +2895408 +2895409 +2895410 +2895411 +2895412 +2895413 +2895414 +2895415 +2895416 +2895417 +2895418 +2895419 +2895420 +2895421 +2895422 +2895423 +2895424 +2895425 +2895426 +2895427 +2895428 +2895429 +2895430 +2895431 +2895432 +2895433 +2895434 +2895435 +2895436 +2895437 +2895438 +2895439 +2895440 +2895441 +2895442 +2895443 +2895444 +2895445 +2895446 +2895447 +2895448 +2895449 +2895450 +2895451 +2895452 +2895453 +2895454 +2895455 +2895456 +2895457 +2895458 +2895459 +2895460 +2895461 +2895462 +2895463 +2895464 +2895465 +2895466 +2895467 +2895468 +2895469 +2895470 +2895471 +2895472 +2895473 +2895474 +2895475 +2895476 +2895477 +2895478 +2895479 +2895480 +2895481 +2895482 +2895483 +2895484 +2895485 +2895486 +2895487 +2895488 +2895489 +2895490 +2895491 +2895492 +2895493 +2895494 +2895495 +2895496 +2895497 +2895498 +2895499 +2895500 +2895501 +2895502 +2895503 +2895504 +2895505 +2895506 +2895507 +2895508 +2895509 +2895510 +2895511 +2895512 +2895513 +2895514 +2895515 +2895516 +2895517 +2895518 +2895519 +2895520 +2895521 +2895522 +2895523 +2895524 +2895525 +2895526 +2895527 +2895528 +2895529 +2895530 +2895531 +2895532 +2895533 +2895534 +2895535 +2895536 +2895537 +2895538 +2895539 +2895540 +2895541 +2895542 +2895543 +2895544 +2895545 +2895546 +2895547 +2895548 +2895549 +2895550 +2895551 +2895552 +2895553 +2895554 +2895555 +2895556 +2895557 +2895558 +2895559 +2895560 +2895561 +2895562 +2895563 +2895564 +2895565 +2895566 +2895567 +2895568 +2895569 +2895570 +2895571 +2895572 +2895573 +2895574 +2895575 +2895576 +2895577 +2895578 +2895579 +2895580 +2895581 +2895582 +2895583 +2895584 +2895585 +2895586 +2895587 +2895588 +2895589 +2895590 +2895591 +2895592 +2895593 +2895594 +2895595 +2895596 +2895597 +2895598 +2895599 +2895600 +2895601 +2895602 +2895603 +2895604 +2895605 +2895606 +2895607 +2895608 +2895609 +2895610 +2895611 +2895612 +2895613 +2895614 +2895615 +2895616 +2895617 +2895618 +2895619 +2895620 +2895621 +2895622 +2895623 +2895624 +2895625 +2895626 +2899439 +2899440 +2899441 +2899442 +2899443 +2899444 +2899445 +2899460 +2899461 +2899462 +2899463 +2899464 +2899465 +2899466 +2899467 +2899468 +2899469 +2899470 +2899471 +2899472 +2899473 +2899474 +2899475 +2899476 +2899477 +2899478 +2899479 +2899480 +2899481 +2899482 +2899483 +2899484 +2899485 +2899486 +2899487 +2899488 +2899489 +2899490 +2899491 +2899492 +2899493 +2899494 +2899495 +2899496 +2899497 +2899498 +2899499 +2899500 +2899501 +2899502 +2899503 +2899504 +2899505 +2899506 +2899507 +2899508 +2899509 +2899510 +2899511 +2899512 +2899513 +2899514 +2899515 +2899516 +2899517 +2899518 +2899519 +2899520 +2899521 +2899522 +2899523 +2899524 +2899525 +2899526 +2899527 +2899528 +2899529 +2899530 +2899531 +2899532 +2899533 +2899534 +2899535 +2899536 +2899537 +2899538 +2899539 +2899540 +2899541 +2899542 +2899543 +2899544 +2899545 +2899546 +2899547 +2899548 +2899549 +2899550 +2899551 +2899552 +2899553 +2899554 +2899555 +2899556 +2899557 +2899558 +2899559 +2899560 +2899561 +2899562 +2899563 +2899564 +2899565 +2899566 +2899567 +2899568 +2899569 +2899570 +2899571 +2899572 +2899573 +2899574 +2899575 +2899576 +2899577 +2899578 +2899579 +2899580 +2899581 +2899582 +2899583 +2899584 +2899585 +2899586 +2899587 +2899588 +2899589 +2899590 +2899591 +2899592 +2899593 +2899594 +2899595 +2899596 +2899597 +2899598 +2899599 +2899600 +2899601 +2899602 +2899603 +2899604 +2899605 +2899606 +2899607 +2899608 +2899609 +2899610 +2899611 +2899612 +2899613 +2899614 +2899615 +2899616 +2899617 +2899618 +2899619 +2899620 +2899621 +2899622 +2899623 +2899624 +2899625 +2899626 +2899627 +2899628 +2899629 +2899630 +2899631 +2899632 +2899633 +2899634 +2899635 +2899636 +2899637 +2899638 +2899639 +2899640 +2899641 +2899642 +2899643 +2899644 +2899645 +2899646 +2899647 +2899648 +2899649 +2899650 +2899651 +2899652 +2899653 +2899654 +2899655 +2899656 +2899657 +2899658 +2899659 +2899660 +2899661 +2899662 +2899663 +2899664 +2899665 +2899666 +2899667 +2899668 +2899669 +2899670 +2899671 +2899672 +2899673 +2899674 +2899675 +2899676 +2899677 +2899678 +2899679 +2899680 +2899681 +2899682 +2899683 +2899684 +2899685 +2899686 +2899687 +2899688 +2899689 +2899690 +2899691 +2899692 +2899693 +2899694 +2899695 +2899696 +2899697 +2899698 +2899699 +2899700 +2899701 +2899702 +2899703 +2899704 +2899705 +2899706 +2899707 +2899708 +2899709 +2899710 +2899711 +2899712 +2899713 +2899714 +2899715 +2899716 +2899717 +2899718 +2899719 +2899720 +2899721 +2899722 +2899723 +2899724 +2899725 +2899726 +2899727 +2899728 +2899729 +2899730 +2899731 +2899732 +2899733 +2899734 +2899735 +2899736 +2899737 +2899738 +2899739 +2899740 +2899741 +2899742 +2899743 +2899744 +2899745 +2899746 +2899747 +2899748 +2899749 +2899750 +2899751 +2899752 +2899753 +2899754 +2899755 +2899756 +2899757 +2899758 +2899759 +2899760 +2899761 +2899762 +2899763 +2899764 +2899765 +2899766 +2899767 +2899768 +2899769 +2899770 +2899771 +2899772 +2899773 +2899774 +2899775 +2899776 +2899777 +2899778 +2899779 +2899780 +2899781 +2899782 +2899783 +2899784 +2899785 +2899786 +2899787 +2899788 +2899789 +2899790 +2899791 +2899792 +2899793 +2899794 +2899795 +2899796 +2899797 +2899798 +2899799 +2899800 +2899801 +2899802 +2899803 +2899804 +2899805 +2899806 +2899807 +2899808 +2899809 +2899810 +2899811 +2899812 +2899813 +2899814 +2899815 +2899816 +2899817 +2899818 +2899819 +2899820 +2899821 +2899822 +2899823 +2899824 +2899825 +2899826 +2899827 +2899828 +2899829 +2899830 +2899831 +2899832 +2899833 +2899834 +2899835 +2899836 +2899837 +2899838 +2899839 +2899840 +2899841 +2899842 +2899843 +2899844 +2899845 +2899846 +2899847 +2899848 +2899849 +2899850 +2899851 +2899852 +2899853 +2899854 +2899855 +2899856 +2899857 +2899858 +2899859 +2899860 +2899861 +2899862 +2899863 +2899864 +2899865 +2899866 +2899867 +2899868 +2899869 +2899870 +2899871 +2899872 +2899873 +2899874 +2899875 +2899876 +2899877 +2899878 +2899879 +2899880 +2899881 +2899882 +2899883 +2899884 +2899885 +2899886 +2899887 +2899888 +2899889 +2899890 +2899891 +2899892 +2899893 +2899894 +2899895 +2899896 +2899897 +2899898 +2899899 +2899900 +2899901 +2899902 +2899903 +2899906 +2899907 +2899908 +2899909 +2899910 +2899911 +2899912 +2899913 +2899914 +2899915 +2899916 +2899917 +2899918 +2899919 +2899920 +2899921 +2899922 +2899923 +2899924 +2899925 +2899926 +2899927 +2899928 +2899929 +2899930 +2899931 +2899932 +2899933 +2899934 +2899935 +2899936 +2899937 +2899938 +2899939 +2899940 +2899941 +2899942 +2899943 +2899944 +2899945 +2899946 +2903759 +2903760 +2903761 +2903762 +2903763 +2903764 +2903765 +2903780 +2903781 +2903782 +2903783 +2903784 +2903785 +2903786 +2903787 +2903788 +2903789 +2903790 +2903791 +2903792 +2903793 +2903794 +2903795 +2903796 +2903797 +2903798 +2903799 +2903800 +2903801 +2903802 +2903803 +2903804 +2903805 +2903806 +2903807 +2903808 +2903809 +2903810 +2903811 +2903812 +2903813 +2903814 +2903815 +2903816 +2903817 +2903818 +2903819 +2903820 +2903821 +2903822 +2903823 +2903824 +2903825 +2903826 +2903827 +2903828 +2903829 +2903830 +2903831 +2903832 +2903833 +2903834 +2903835 +2903836 +2903837 +2903838 +2903839 +2903840 +2903841 +2903842 +2903843 +2903844 +2903845 +2903846 +2903847 +2903848 +2903849 +2903850 +2903851 +2903852 +2903853 +2903854 +2903855 +2903856 +2903857 +2903858 +2903859 +2903860 +2903861 +2903862 +2903863 +2903864 +2903865 +2903866 +2903867 +2903868 +2903869 +2903870 +2903871 +2903872 +2903873 +2903874 +2903875 +2903876 +2903877 +2903878 +2903879 +2903880 +2903881 +2903882 +2903883 +2903884 +2903885 +2903886 +2903887 +2903888 +2903889 +2903890 +2903891 +2903892 +2903893 +2903894 +2903895 +2903896 +2903897 +2903898 +2903899 +2903900 +2903901 +2903902 +2903903 +2903904 +2903905 +2903906 +2903907 +2903908 +2903909 +2903910 +2903911 +2903912 +2903913 +2903914 +2903915 +2903916 +2903917 +2903918 +2903919 +2903920 +2903921 +2903922 +2903923 +2903924 +2903925 +2903926 +2903927 +2903928 +2903929 +2903930 +2903931 +2903932 +2903933 +2903934 +2903935 +2903936 +2903937 +2903938 +2903939 +2903940 +2903941 +2903942 +2903943 +2903944 +2903945 +2903946 +2903947 +2903948 +2903949 +2903950 +2903951 +2903952 +2903953 +2903954 +2903955 +2903956 +2903957 +2903958 +2903959 +2903960 +2903961 +2903962 +2903963 +2903964 +2903965 +2903966 +2903967 +2903968 +2903969 +2903970 +2903971 +2903972 +2903973 +2903974 +2903975 +2903976 +2903977 +2903978 +2903979 +2903980 +2903981 +2903982 +2903983 +2903984 +2903985 +2903986 +2903987 +2903988 +2903989 +2903990 +2903991 +2903992 +2903993 +2903994 +2903995 +2903996 +2903997 +2903998 +2903999 +2904000 +2904001 +2904002 +2904003 +2904004 +2904005 +2904006 +2904007 +2904008 +2904009 +2904010 +2904011 +2904012 +2904013 +2904014 +2904015 +2904016 +2904017 +2904018 +2904019 +2904020 +2904021 +2904022 +2904023 +2904024 +2904025 +2904026 +2904027 +2904028 +2904029 +2904030 +2904031 +2904032 +2904033 +2904034 +2904035 +2904036 +2904037 +2904038 +2904039 +2904040 +2904042 +2904043 +2904044 +2904045 +2904046 +2904047 +2904048 +2904049 +2904050 +2904051 +2904052 +2904053 +2904054 +2904055 +2904056 +2904057 +2904058 +2904059 +2904060 +2904061 +2904062 +2904063 +2904064 +2904065 +2904066 +2904067 +2904068 +2904069 +2904070 +2904071 +2904072 +2904073 +2904074 +2904075 +2904076 +2904077 +2904078 +2904079 +2904080 +2904081 +2904082 +2904083 +2904084 +2904085 +2904086 +2904087 +2904088 +2904089 +2904090 +2904091 +2904092 +2904093 +2904094 +2904095 +2904096 +2904097 +2904098 +2904099 +2904100 +2904101 +2904102 +2904103 +2904104 +2904105 +2904106 +2904107 +2904108 +2904109 +2904110 +2904111 +2904112 +2904113 +2904114 +2904115 +2904116 +2904117 +2904118 +2904119 +2904120 +2904121 +2904122 +2904123 +2904124 +2904125 +2904126 +2904127 +2904128 +2904129 +2904130 +2904131 +2904132 +2904133 +2904134 +2904135 +2904136 +2904137 +2904138 +2904139 +2904140 +2904141 +2904142 +2904143 +2904144 +2904145 +2904146 +2904147 +2904148 +2904149 +2904150 +2904151 +2904152 +2904153 +2904154 +2904155 +2904156 +2904157 +2904158 +2904159 +2904160 +2904161 +2904162 +2904163 +2904164 +2904165 +2904166 +2904167 +2904168 +2904169 +2904170 +2904171 +2904172 +2904173 +2904174 +2904175 +2904176 +2904177 +2904178 +2904179 +2904180 +2904181 +2904182 +2904183 +2904184 +2904185 +2904186 +2904187 +2904188 +2904189 +2904190 +2904191 +2904192 +2904193 +2904194 +2904195 +2904196 +2904197 +2904198 +2904199 +2904200 +2904201 +2904202 +2904203 +2904204 +2904205 +2904206 +2904207 +2904208 +2904209 +2904210 +2904211 +2904212 +2904213 +2904214 +2904215 +2904216 +2904217 +2904218 +2904219 +2904220 +2904221 +2904222 +2904223 +2904224 +2904225 +2904226 +2904227 +2904228 +2904229 +2904230 +2904231 +2904232 +2904233 +2904234 +2904235 +2904236 +2904237 +2904238 +2904239 +2904240 +2904241 +2904242 +2904243 +2904244 +2904245 +2904246 +2904247 +2904248 +2904249 +2904250 +2904251 +2904252 +2904253 +2904254 +2904255 +2904256 +2904257 +2904258 +2904259 +2904260 +2904261 +2904262 +2904263 +2904264 +2904265 +2904266 +2908079 +2908100 +2908101 +2908102 +2908103 +2908104 +2908105 +2908106 +2908107 +2908108 +2908109 +2908110 +2908111 +2908112 +2908113 +2908114 +2908115 +2908116 +2908117 +2908118 +2908119 +2908120 +2908121 +2908122 +2908123 +2908124 +2908125 +2908126 +2908127 +2908128 +2908129 +2908130 +2908131 +2908132 +2908133 +2908134 +2908135 +2908136 +2908137 +2908138 +2908139 +2908140 +2908141 +2908142 +2908143 +2908144 +2908145 +2908146 +2908147 +2908148 +2908149 +2908150 +2908151 +2908152 +2908153 +2908154 +2908155 +2908156 +2908157 +2908158 +2908159 +2908160 +2908161 +2908162 +2908163 +2908164 +2908165 +2908166 +2908167 +2908168 +2908169 +2908170 +2908171 +2908172 +2908173 +2908174 +2908175 +2908176 +2908177 +2908178 +2908179 +2908180 +2908181 +2908182 +2908183 +2908184 +2908185 +2908186 +2908187 +2908188 +2908189 +2908190 +2908191 +2908192 +2908193 +2908194 +2908195 +2908196 +2908197 +2908198 +2908199 +2908200 +2908201 +2908202 +2908203 +2908204 +2908205 +2908206 +2908207 +2908208 +2908209 +2908210 +2908211 +2908212 +2908213 +2908214 +2908215 +2908216 +2908217 +2908218 +2908219 +2908220 +2908221 +2908222 +2908223 +2908224 +2908225 +2908226 +2908227 +2908228 +2908229 +2908230 +2908231 +2908232 +2908233 +2908234 +2908235 +2908236 +2908237 +2908238 +2908239 +2908240 +2908241 +2908242 +2908243 +2908244 +2908245 +2908246 +2908247 +2908248 +2908249 +2908250 +2908251 +2908252 +2908253 +2908254 +2908255 +2908256 +2908257 +2908258 +2908259 +2908260 +2908261 +2908262 +2908263 +2908264 +2908265 +2908266 +2908267 +2908268 +2908269 +2908270 +2908271 +2908272 +2908273 +2908274 +2908275 +2908276 +2908277 +2908278 +2908279 +2908280 +2908281 +2908282 +2908283 +2908284 +2908285 +2908286 +2908287 +2908288 +2908289 +2908290 +2908291 +2908292 +2908293 +2908294 +2908295 +2908296 +2908297 +2908298 +2908299 +2908300 +2908301 +2908302 +2908303 +2908304 +2908305 +2908306 +2908307 +2908308 +2908309 +2908310 +2908311 +2908312 +2908313 +2908314 +2908315 +2908316 +2908317 +2908318 +2908319 +2908320 +2908321 +2908322 +2908323 +2908324 +2908325 +2908326 +2908327 +2908328 +2908329 +2908330 +2908331 +2908332 +2908333 +2908334 +2908335 +2908336 +2908337 +2908338 +2908339 +2908340 +2908341 +2908342 +2908343 +2908344 +2908345 +2908346 +2908347 +2908348 +2908349 +2908350 +2908351 +2908352 +2908353 +2908354 +2908355 +2908356 +2908357 +2908359 +2908362 +2908363 +2908364 +2908365 +2908366 +2908367 +2908368 +2908369 +2908370 +2908371 +2908372 +2908373 +2908374 +2908375 +2908376 +2908377 +2908378 +2908379 +2908380 +2908381 +2908382 +2908383 +2908384 +2908385 +2908386 +2908387 +2908388 +2908389 +2908390 +2908391 +2908392 +2908393 +2908394 +2908395 +2908396 +2908397 +2908398 +2908399 +2908400 +2908401 +2908402 +2908403 +2908404 +2908405 +2908406 +2908407 +2908408 +2908409 +2908410 +2908411 +2908412 +2908413 +2908414 +2908415 +2908416 +2908417 +2908418 +2908419 +2908420 +2908421 +2908422 +2908423 +2908424 +2908425 +2908426 +2908427 +2908428 +2908429 +2908430 +2908431 +2908432 +2908433 +2908434 +2908435 +2908436 +2908437 +2908438 +2908439 +2908440 +2908441 +2908442 +2908443 +2908444 +2908445 +2908446 +2908447 +2908448 +2908449 +2908450 +2908451 +2908452 +2908453 +2908454 +2908455 +2908456 +2908457 +2908458 +2908459 +2908460 +2908461 +2908462 +2908463 +2908464 +2908465 +2908466 +2908467 +2908468 +2908469 +2908470 +2908471 +2908472 +2908473 +2908474 +2908475 +2908476 +2908477 +2908478 +2908479 +2908480 +2908481 +2908482 +2908483 +2908484 +2908485 +2908486 +2908487 +2908488 +2908489 +2908490 +2908491 +2908492 +2908493 +2908494 +2908495 +2908496 +2908497 +2908498 +2908499 +2908500 +2908501 +2908502 +2908503 +2908504 +2908505 +2908506 +2908507 +2908508 +2908509 +2908510 +2908511 +2908512 +2908513 +2908514 +2908515 +2908516 +2908517 +2908518 +2908519 +2908520 +2908521 +2908522 +2908523 +2908524 +2908525 +2908526 +2908527 +2908528 +2908529 +2908530 +2908531 +2908532 +2908533 +2908534 +2908535 +2908536 +2908537 +2908538 +2908539 +2908540 +2908541 +2908542 +2908543 +2908544 +2908545 +2908546 +2908547 +2908548 +2908549 +2908550 +2908551 +2908552 +2908553 +2908554 +2908555 +2908556 +2908557 +2908558 +2908559 +2908560 +2908561 +2908562 +2908563 +2908564 +2908565 +2908566 +2908567 +2908568 +2908569 +2908570 +2908571 +2908572 +2908573 +2908574 +2908575 +2908576 +2908577 +2908578 +2908579 +2908580 +2908581 +2908582 +2908583 +2908584 +2908585 +2912420 +2912421 +2912422 +2912423 +2912424 +2912425 +2912426 +2912427 +2912428 +2912429 +2912430 +2912431 +2912432 +2912433 +2912434 +2912435 +2912436 +2912437 +2912438 +2912439 +2912440 +2912441 +2912442 +2912443 +2912444 +2912445 +2912446 +2912447 +2912448 +2912449 +2912450 +2912451 +2912452 +2912453 +2912454 +2912455 +2912456 +2912457 +2912458 +2912459 +2912460 +2912461 +2912462 +2912463 +2912464 +2912465 +2912466 +2912467 +2912468 +2912469 +2912470 +2912471 +2912472 +2912473 +2912474 +2912475 +2912476 +2912477 +2912478 +2912479 +2912480 +2912481 +2912482 +2912483 +2912484 +2912485 +2912486 +2912487 +2912488 +2912489 +2912490 +2912491 +2912492 +2912493 +2912494 +2912495 +2912496 +2912497 +2912498 +2912499 +2912500 +2912501 +2912502 +2912503 +2912504 +2912505 +2912506 +2912507 +2912508 +2912509 +2912510 +2912511 +2912512 +2912513 +2912514 +2912515 +2912516 +2912517 +2912518 +2912519 +2912520 +2912521 +2912522 +2912523 +2912524 +2912525 +2912526 +2912527 +2912528 +2912529 +2912530 +2912531 +2912532 +2912533 +2912534 +2912535 +2912536 +2912537 +2912538 +2912539 +2912540 +2912541 +2912542 +2912543 +2912544 +2912545 +2912546 +2912547 +2912548 +2912549 +2912550 +2912551 +2912552 +2912553 +2912554 +2912555 +2912556 +2912557 +2912558 +2912559 +2912560 +2912561 +2912562 +2912563 +2912564 +2912565 +2912566 +2912567 +2912568 +2912569 +2912570 +2912571 +2912572 +2912573 +2912574 +2912575 +2912576 +2912577 +2912578 +2912579 +2912580 +2912581 +2912582 +2912583 +2912584 +2912585 +2912586 +2912587 +2912588 +2912589 +2912590 +2912591 +2912592 +2912593 +2912594 +2912595 +2912596 +2912597 +2912598 +2912599 +2912600 +2912601 +2912602 +2912603 +2912604 +2912605 +2912606 +2912607 +2912608 +2912609 +2912610 +2912611 +2912612 +2912613 +2912614 +2912615 +2912616 +2912617 +2912618 +2912619 +2912620 +2912621 +2912622 +2912623 +2912624 +2912625 +2912626 +2912627 +2912628 +2912629 +2912630 +2912631 +2912632 +2912633 +2912634 +2912635 +2912636 +2912637 +2912638 +2912639 +2912640 +2912641 +2912642 +2912643 +2912644 +2912645 +2912646 +2912647 +2912648 +2912649 +2912650 +2912651 +2912652 +2912653 +2912654 +2912655 +2912656 +2912657 +2912658 +2912659 +2912660 +2912661 +2912662 +2912663 +2912664 +2912665 +2912666 +2912667 +2912668 +2912669 +2912670 +2912671 +2912672 +2912673 +2912674 +2912675 +2912676 +2912677 +2912678 +2912680 +2912681 +2912682 +2912683 +2912684 +2912685 +2912686 +2912687 +2912688 +2912689 +2912690 +2912691 +2912692 +2912693 +2912694 +2912695 +2912696 +2912697 +2912698 +2912699 +2912700 +2912701 +2912702 +2912703 +2912704 +2912705 +2912706 +2912707 +2912708 +2912709 +2912710 +2912711 +2912712 +2912713 +2912714 +2912715 +2912716 +2912717 +2912718 +2912719 +2912720 +2912721 +2912722 +2912723 +2912724 +2912725 +2912726 +2912727 +2912728 +2912729 +2912730 +2912731 +2912732 +2912733 +2912734 +2912735 +2912736 +2912737 +2912738 +2912739 +2912740 +2912741 +2912742 +2912743 +2912744 +2912745 +2912746 +2912747 +2912748 +2912749 +2912750 +2912751 +2912752 +2912753 +2912754 +2912755 +2912756 +2912757 +2912758 +2912759 +2912760 +2912761 +2912762 +2912763 +2912764 +2912765 +2912766 +2912767 +2912768 +2912769 +2912770 +2912771 +2912772 +2912773 +2912774 +2912775 +2912776 +2912777 +2912778 +2912779 +2912780 +2912781 +2912782 +2912783 +2912784 +2912785 +2912786 +2912787 +2912788 +2912789 +2912790 +2912791 +2912792 +2912793 +2912794 +2912795 +2912796 +2912797 +2912798 +2912799 +2912800 +2912801 +2912802 +2912803 +2912804 +2912805 +2912806 +2912807 +2912808 +2912809 +2912810 +2912811 +2912812 +2912813 +2912814 +2912815 +2912816 +2912817 +2912818 +2912819 +2912820 +2912821 +2912822 +2912823 +2912824 +2912825 +2912826 +2912827 +2912828 +2912829 +2912830 +2912831 +2912832 +2912833 +2912834 +2912835 +2912836 +2912837 +2912838 +2912839 +2912840 +2912841 +2912842 +2912843 +2912844 +2912845 +2912846 +2912847 +2912848 +2912849 +2912850 +2912851 +2912852 +2912853 +2912854 +2912855 +2912856 +2912857 +2912858 +2912859 +2912860 +2912861 +2912862 +2912863 +2912864 +2912865 +2912866 +2912867 +2912868 +2912869 +2912870 +2912871 +2912872 +2912873 +2912874 +2912875 +2912876 +2912877 +2912878 +2912879 +2912880 +2912881 +2912882 +2912883 +2912884 +2912885 +2912886 +2912887 +2912888 +2912889 +2912890 +2912891 +2912892 +2912893 +2912894 +2916740 +2916741 +2916742 +2916743 +2916744 +2916745 +2916746 +2916747 +2916748 +2916749 +2916750 +2916751 +2916752 +2916753 +2916754 +2916755 +2916756 +2916757 +2916758 +2916759 +2916760 +2916761 +2916762 +2916763 +2916764 +2916765 +2916766 +2916767 +2916768 +2916769 +2916770 +2916771 +2916772 +2916773 +2916774 +2916775 +2916776 +2916777 +2916778 +2916779 +2916780 +2916781 +2916782 +2916783 +2916784 +2916785 +2916786 +2916787 +2916788 +2916789 +2916790 +2916791 +2916792 +2916793 +2916794 +2916795 +2916796 +2916797 +2916798 +2916799 +2916800 +2916801 +2916802 +2916803 +2916804 +2916805 +2916806 +2916807 +2916808 +2916809 +2916810 +2916811 +2916812 +2916813 +2916814 +2916815 +2916816 +2916817 +2916818 +2916819 +2916820 +2916821 +2916822 +2916823 +2916824 +2916825 +2916826 +2916827 +2916828 +2916829 +2916830 +2916831 +2916832 +2916833 +2916834 +2916835 +2916836 +2916837 +2916838 +2916839 +2916840 +2916841 +2916842 +2916843 +2916844 +2916845 +2916846 +2916847 +2916848 +2916849 +2916850 +2916851 +2916852 +2916853 +2916854 +2916855 +2916856 +2916857 +2916858 +2916859 +2916860 +2916861 +2916862 +2916863 +2916864 +2916865 +2916866 +2916867 +2916868 +2916869 +2916870 +2916871 +2916872 +2916873 +2916874 +2916875 +2916876 +2916877 +2916878 +2916879 +2916880 +2916881 +2916882 +2916883 +2916884 +2916885 +2916886 +2916887 +2916888 +2916889 +2916890 +2916891 +2916892 +2916893 +2916894 +2916895 +2916896 +2916897 +2916898 +2916899 +2916900 +2916901 +2916902 +2916903 +2916904 +2916905 +2916906 +2916907 +2916908 +2916909 +2916910 +2916911 +2916912 +2916913 +2916914 +2916915 +2916916 +2916917 +2916918 +2916919 +2916920 +2916921 +2916922 +2916923 +2916924 +2916925 +2916926 +2916927 +2916928 +2916929 +2916930 +2916931 +2916932 +2916933 +2916934 +2916935 +2916936 +2916937 +2916938 +2916939 +2916940 +2916941 +2916942 +2916943 +2916944 +2916945 +2916946 +2916947 +2916948 +2916949 +2916950 +2916951 +2916952 +2916953 +2916954 +2916955 +2916956 +2916957 +2916958 +2916959 +2916960 +2916961 +2916962 +2916963 +2916964 +2916965 +2916966 +2916967 +2916968 +2916971 +2916972 +2916973 +2916974 +2916975 +2916976 +2916977 +2916978 +2916979 +2916980 +2916981 +2916982 +2916983 +2916984 +2916985 +2916986 +2916987 +2916988 +2916989 +2916990 +2916991 +2916992 +2916993 +2916994 +2916995 +2916996 +2916997 +2916998 +2916999 +2917000 +2917001 +2917002 +2917003 +2917004 +2917005 +2917006 +2917007 +2917008 +2917009 +2917010 +2917011 +2917012 +2917013 +2917014 +2917015 +2917016 +2917017 +2917018 +2917019 +2917020 +2917021 +2917022 +2917023 +2917024 +2917025 +2917026 +2917027 +2917028 +2917029 +2917030 +2917031 +2917032 +2917033 +2917034 +2917035 +2917036 +2917037 +2917038 +2917039 +2917040 +2917041 +2917042 +2917043 +2917044 +2917045 +2917046 +2917047 +2917048 +2917049 +2917050 +2917051 +2917052 +2917053 +2917054 +2917055 +2917056 +2917057 +2917058 +2917059 +2917060 +2917061 +2917062 +2917063 +2917064 +2917065 +2917066 +2917067 +2917068 +2917069 +2917070 +2917071 +2917072 +2917073 +2917074 +2917075 +2917076 +2917077 +2917078 +2917079 +2917080 +2917081 +2917082 +2917083 +2917084 +2917085 +2917086 +2917087 +2917088 +2917089 +2917090 +2917091 +2917092 +2917093 +2917094 +2917095 +2917096 +2917097 +2917098 +2917099 +2917100 +2917101 +2917102 +2917103 +2917104 +2917105 +2917106 +2917107 +2917108 +2917109 +2917110 +2917111 +2917112 +2917113 +2917114 +2917115 +2917116 +2917117 +2917118 +2917119 +2917120 +2917121 +2917122 +2917123 +2917124 +2917125 +2917126 +2917127 +2917128 +2917129 +2917130 +2917131 +2917132 +2917133 +2917134 +2917135 +2917136 +2917137 +2917138 +2917139 +2917140 +2917141 +2917142 +2917143 +2917144 +2917145 +2917146 +2917147 +2917148 +2917149 +2917150 +2917151 +2917152 +2917153 +2917154 +2917155 +2917156 +2917157 +2917158 +2917159 +2917160 +2917161 +2917162 +2917163 +2917164 +2917165 +2917166 +2917167 +2917168 +2917169 +2917170 +2917171 +2917172 +2917173 +2917174 +2917175 +2917176 +2917177 +2917178 +2917179 +2917180 +2917181 +2917182 +2917183 +2917184 +2917185 +2917186 +2917187 +2917188 +2917189 +2917190 +2917191 +2917192 +2917193 +2917194 +2917195 +2917196 +2917197 +2917198 +2917199 +2917200 +2917201 +2917202 +2917203 +2917204 +2917205 +2917206 +2917207 +2917208 +2917209 +2917210 +2917211 +2917212 +2917213 +2917214 +2921064 +2921065 +2921066 +2921067 +2921068 +2921069 +2921070 +2921071 +2921072 +2921073 +2921074 +2921075 +2921076 +2921077 +2921078 +2921079 +2921080 +2921081 +2921082 +2921083 +2921084 +2921085 +2921086 +2921087 +2921088 +2921089 +2921090 +2921091 +2921092 +2921093 +2921094 +2921095 +2921096 +2921097 +2921098 +2921099 +2921100 +2921101 +2921102 +2921103 +2921104 +2921105 +2921106 +2921107 +2921108 +2921109 +2921110 +2921111 +2921112 +2921113 +2921114 +2921115 +2921116 +2921117 +2921118 +2921119 +2921120 +2921121 +2921122 +2921123 +2921124 +2921125 +2921126 +2921127 +2921128 +2921129 +2921130 +2921131 +2921132 +2921133 +2921134 +2921135 +2921136 +2921137 +2921138 +2921139 +2921140 +2921141 +2921142 +2921143 +2921144 +2921145 +2921146 +2921147 +2921148 +2921149 +2921150 +2921151 +2921152 +2921153 +2921154 +2921155 +2921156 +2921157 +2921158 +2921159 +2921160 +2921161 +2921162 +2921163 +2921164 +2921165 +2921166 +2921167 +2921168 +2921169 +2921170 +2921171 +2921172 +2921173 +2921174 +2921175 +2921176 +2921177 +2921178 +2921179 +2921180 +2921181 +2921182 +2921183 +2921184 +2921185 +2921186 +2921187 +2921188 +2921189 +2921190 +2921191 +2921192 +2921193 +2921194 +2921195 +2921196 +2921197 +2921198 +2921199 +2921200 +2921201 +2921202 +2921203 +2921204 +2921205 +2921206 +2921207 +2921208 +2921209 +2921210 +2921211 +2921212 +2921213 +2921214 +2921215 +2921216 +2921217 +2921218 +2921219 +2921220 +2921221 +2921222 +2921223 +2921224 +2921225 +2921226 +2921227 +2921228 +2921229 +2921230 +2921231 +2921232 +2921233 +2921234 +2921235 +2921236 +2921237 +2921238 +2921239 +2921240 +2921241 +2921242 +2921243 +2921244 +2921245 +2921246 +2921247 +2921248 +2921249 +2921250 +2921251 +2921252 +2921253 +2921254 +2921255 +2921256 +2921257 +2921258 +2921259 +2921260 +2921261 +2921262 +2921263 +2921264 +2921265 +2921266 +2921267 +2921268 +2921269 +2921270 +2921271 +2921272 +2921273 +2921274 +2921275 +2921276 +2921277 +2921278 +2921279 +2921280 +2921281 +2921282 +2921283 +2921284 +2921285 +2921286 +2921287 +2921288 +2921289 +2921290 +2921291 +2921292 +2921293 +2921294 +2921295 +2921296 +2921297 +2921298 +2921299 +2921300 +2921301 +2921302 +2921303 +2921304 +2921305 +2921306 +2921307 +2921308 +2921309 +2921310 +2921311 +2921312 +2921313 +2921314 +2921315 +2921316 +2921317 +2921318 +2921319 +2921320 +2921321 +2921322 +2921323 +2921324 +2921325 +2921326 +2921327 +2921328 +2921329 +2921330 +2921331 +2921332 +2921333 +2921334 +2921335 +2921336 +2921337 +2921338 +2921339 +2921340 +2921341 +2921342 +2921343 +2921344 +2921345 +2921346 +2921347 +2921348 +2921349 +2921350 +2921351 +2921352 +2921353 +2921354 +2921355 +2921356 +2921357 +2921358 +2921359 +2921360 +2921361 +2921362 +2921363 +2921364 +2921365 +2921366 +2921367 +2921368 +2921369 +2921370 +2921371 +2921372 +2921373 +2921374 +2921375 +2921376 +2921377 +2921378 +2921379 +2921380 +2921381 +2921382 +2921383 +2921384 +2921385 +2921386 +2921387 +2921388 +2921389 +2921390 +2921391 +2921392 +2921393 +2921394 +2921395 +2921396 +2921397 +2921398 +2921399 +2921400 +2921401 +2921402 +2921403 +2921404 +2921405 +2921406 +2921407 +2921408 +2921409 +2921410 +2921411 +2921412 +2921413 +2921414 +2921415 +2921416 +2921417 +2921418 +2921419 +2921420 +2921421 +2921422 +2921423 +2921424 +2921425 +2921426 +2921427 +2921428 +2921429 +2921430 +2921431 +2921432 +2921433 +2921434 +2921435 +2921436 +2921437 +2921438 +2921439 +2921440 +2921441 +2921442 +2921443 +2921444 +2921445 +2921446 +2921447 +2921448 +2921449 +2921450 +2921451 +2921452 +2921453 +2921454 +2921455 +2921456 +2921457 +2921458 +2921459 +2921460 +2921461 +2921462 +2921463 +2921464 +2921465 +2921466 +2921467 +2921468 +2921469 +2921470 +2921471 +2921472 +2921473 +2921474 +2921475 +2921476 +2921477 +2921478 +2921479 +2921480 +2921481 +2921482 +2921483 +2921484 +2921485 +2921486 +2921487 +2921488 +2921489 +2921490 +2921491 +2921492 +2921493 +2921494 +2921495 +2921496 +2921497 +2921498 +2921499 +2921500 +2921501 +2921502 +2921503 +2921504 +2921505 +2921506 +2921507 +2921508 +2921509 +2921510 +2921511 +2921512 +2921513 +2921514 +2921515 +2921516 +2921517 +2921518 +2921519 +2921520 +2921521 +2921522 +2921523 +2921524 +2921525 +2921526 +2921527 +2921528 +2921529 +2921530 +2921531 +2921532 +2921533 +2925389 +2925390 +2925391 +2925392 +2925393 +2925394 +2925395 +2925396 +2925397 +2925398 +2925399 +2925400 +2925401 +2925402 +2925403 +2925404 +2925405 +2925406 +2925407 +2925408 +2925409 +2925410 +2925411 +2925412 +2925413 +2925414 +2925415 +2925416 +2925417 +2925418 +2925419 +2925420 +2925421 +2925422 +2925423 +2925424 +2925425 +2925426 +2925427 +2925428 +2925429 +2925430 +2925431 +2925432 +2925433 +2925434 +2925435 +2925436 +2925437 +2925438 +2925439 +2925440 +2925441 +2925442 +2925443 +2925444 +2925445 +2925446 +2925447 +2925448 +2925449 +2925450 +2925451 +2925452 +2925453 +2925454 +2925455 +2925456 +2925457 +2925458 +2925459 +2925460 +2925461 +2925462 +2925463 +2925464 +2925465 +2925466 +2925467 +2925468 +2925469 +2925470 +2925471 +2925472 +2925473 +2925474 +2925475 +2925476 +2925477 +2925478 +2925479 +2925480 +2925481 +2925482 +2925483 +2925484 +2925485 +2925486 +2925487 +2925488 +2925489 +2925490 +2925491 +2925492 +2925493 +2925494 +2925495 +2925496 +2925497 +2925498 +2925499 +2925500 +2925501 +2925502 +2925503 +2925504 +2925505 +2925506 +2925507 +2925508 +2925509 +2925510 +2925511 +2925512 +2925513 +2925514 +2925515 +2925516 +2925517 +2925518 +2925519 +2925520 +2925521 +2925522 +2925523 +2925524 +2925525 +2925526 +2925527 +2925528 +2925529 +2925530 +2925531 +2925532 +2925533 +2925534 +2925535 +2925536 +2925537 +2925538 +2925539 +2925540 +2925541 +2925542 +2925543 +2925544 +2925545 +2925546 +2925547 +2925548 +2925549 +2925550 +2925551 +2925552 +2925553 +2925554 +2925555 +2925556 +2925557 +2925558 +2925559 +2925560 +2925561 +2925562 +2925563 +2925564 +2925565 +2925566 +2925567 +2925568 +2925569 +2925570 +2925571 +2925572 +2925573 +2925574 +2925575 +2925576 +2925577 +2925578 +2925579 +2925580 +2925581 +2925582 +2925583 +2925584 +2925585 +2925586 +2925587 +2925588 +2925589 +2925590 +2925591 +2925592 +2925593 +2925594 +2925595 +2925596 +2925597 +2925598 +2925599 +2925600 +2925601 +2925602 +2925603 +2925604 +2925605 +2925606 +2925607 +2925608 +2925609 +2925610 +2925611 +2925612 +2925613 +2925614 +2925615 +2925616 +2925617 +2925618 +2925619 +2925620 +2925621 +2925622 +2925623 +2925624 +2925625 +2925626 +2925627 +2925628 +2925629 +2925630 +2925631 +2925632 +2925633 +2925634 +2925635 +2925636 +2925637 +2925638 +2925639 +2925640 +2925641 +2925642 +2925643 +2925644 +2925645 +2925646 +2925647 +2925648 +2925649 +2925650 +2925651 +2925652 +2925653 +2925654 +2925655 +2925656 +2925657 +2925658 +2925659 +2925660 +2925661 +2925662 +2925663 +2925664 +2925665 +2925666 +2925667 +2925668 +2925669 +2925670 +2925671 +2925672 +2925673 +2925674 +2925675 +2925676 +2925677 +2925678 +2925679 +2925680 +2925681 +2925682 +2925683 +2925684 +2925685 +2925686 +2925687 +2925688 +2925689 +2925690 +2925691 +2925692 +2925693 +2925694 +2925695 +2925696 +2925697 +2925698 +2925699 +2925700 +2925701 +2925702 +2925703 +2925704 +2925705 +2925706 +2925707 +2925708 +2925709 +2925710 +2925711 +2925712 +2925713 +2925714 +2925715 +2925716 +2925717 +2925718 +2925719 +2925720 +2925721 +2925722 +2925723 +2925724 +2925725 +2925726 +2925727 +2925728 +2925729 +2925730 +2925731 +2925732 +2925733 +2925734 +2925735 +2925736 +2925737 +2925738 +2925739 +2925740 +2925741 +2925742 +2925743 +2925744 +2925745 +2925746 +2925747 +2925748 +2925749 +2925750 +2925751 +2925752 +2925753 +2925754 +2925755 +2925756 +2925757 +2925758 +2925759 +2925760 +2925761 +2925762 +2925763 +2925764 +2925765 +2925766 +2925767 +2925768 +2925769 +2925770 +2925771 +2925772 +2925773 +2925774 +2925775 +2925776 +2925777 +2925778 +2925779 +2925780 +2925781 +2925782 +2925783 +2925784 +2925785 +2925786 +2925787 +2925788 +2925789 +2925790 +2925791 +2925792 +2925793 +2925794 +2925795 +2925796 +2925797 +2925798 +2925799 +2925800 +2925801 +2925802 +2925803 +2925804 +2925805 +2925806 +2925807 +2925808 +2925809 +2925810 +2925811 +2925812 +2925813 +2925814 +2925815 +2925816 +2925817 +2925818 +2925819 +2925820 +2925821 +2925822 +2925823 +2925824 +2925825 +2925826 +2925827 +2925828 +2925829 +2925830 +2925831 +2925832 +2925833 +2925834 +2925836 +2925837 +2925838 +2925839 +2925840 +2925841 +2925842 +2925843 +2925844 +2925845 +2925846 +2925847 +2925848 +2925849 +2925850 +2925851 +2929700 +2929709 +2929710 +2929711 +2929712 +2929713 +2929714 +2929715 +2929716 +2929717 +2929718 +2929719 +2929720 +2929721 +2929722 +2929723 +2929724 +2929725 +2929726 +2929727 +2929730 +2929731 +2929732 +2929733 +2929734 +2929735 +2929736 +2929737 +2929738 +2929739 +2929740 +2929741 +2929742 +2929743 +2929744 +2929745 +2929746 +2929747 +2929748 +2929749 +2929750 +2929751 +2929752 +2929753 +2929754 +2929755 +2929756 +2929757 +2929758 +2929759 +2929760 +2929761 +2929762 +2929763 +2929764 +2929765 +2929766 +2929767 +2929768 +2929769 +2929770 +2929771 +2929772 +2929773 +2929774 +2929775 +2929776 +2929777 +2929778 +2929779 +2929780 +2929781 +2929782 +2929783 +2929784 +2929785 +2929786 +2929787 +2929788 +2929789 +2929790 +2929791 +2929792 +2929793 +2929794 +2929795 +2929796 +2929797 +2929798 +2929799 +2929800 +2929801 +2929802 +2929803 +2929804 +2929805 +2929806 +2929807 +2929808 +2929809 +2929810 +2929811 +2929812 +2929813 +2929814 +2929815 +2929816 +2929817 +2929818 +2929819 +2929820 +2929821 +2929822 +2929823 +2929824 +2929825 +2929826 +2929827 +2929828 +2929829 +2929830 +2929831 +2929832 +2929833 +2929834 +2929835 +2929836 +2929837 +2929838 +2929839 +2929840 +2929841 +2929842 +2929843 +2929844 +2929845 +2929846 +2929847 +2929848 +2929849 +2929850 +2929851 +2929852 +2929853 +2929854 +2929855 +2929856 +2929857 +2929858 +2929859 +2929860 +2929861 +2929862 +2929863 +2929864 +2929865 +2929866 +2929867 +2929868 +2929869 +2929870 +2929871 +2929872 +2929873 +2929874 +2929875 +2929876 +2929877 +2929878 +2929879 +2929880 +2929881 +2929882 +2929883 +2929884 +2929885 +2929886 +2929887 +2929888 +2929889 +2929890 +2929891 +2929892 +2929893 +2929894 +2929895 +2929896 +2929897 +2929898 +2929899 +2929900 +2929901 +2929902 +2929903 +2929904 +2929905 +2929906 +2929907 +2929908 +2929909 +2929910 +2929911 +2929912 +2929913 +2929914 +2929915 +2929916 +2929917 +2929918 +2929919 +2929920 +2929921 +2929922 +2929923 +2929924 +2929925 +2929926 +2929927 +2929928 +2929929 +2929930 +2929931 +2929932 +2929933 +2929934 +2929935 +2929936 +2929937 +2929938 +2929939 +2929940 +2929941 +2929942 +2929943 +2929944 +2929945 +2929946 +2929947 +2929948 +2929949 +2929950 +2929951 +2929952 +2929953 +2929954 +2929955 +2929956 +2929957 +2929958 +2929959 +2929960 +2929961 +2929962 +2929963 +2929964 +2929965 +2929966 +2929967 +2929968 +2929969 +2929970 +2929971 +2929972 +2929973 +2929974 +2929975 +2929976 +2929977 +2929978 +2929979 +2929980 +2929981 +2929982 +2929983 +2929984 +2929985 +2929986 +2929987 +2929988 +2929989 +2929990 +2929991 +2929992 +2929993 +2929994 +2929995 +2929996 +2929997 +2929998 +2929999 +2930000 +2930001 +2930002 +2930003 +2930004 +2930005 +2930006 +2930007 +2930008 +2930009 +2930010 +2930011 +2930012 +2930013 +2930014 +2930015 +2930016 +2930017 +2930018 +2930019 +2930020 +2930021 +2930022 +2930023 +2930024 +2930025 +2930026 +2930027 +2930028 +2930029 +2930030 +2930031 +2930032 +2930033 +2930034 +2930035 +2930036 +2930037 +2930038 +2930039 +2930040 +2930041 +2930042 +2930043 +2930044 +2930045 +2930046 +2930047 +2930048 +2930049 +2930050 +2930051 +2930052 +2930053 +2930054 +2930055 +2930056 +2930057 +2930058 +2930059 +2930060 +2930061 +2930062 +2930063 +2930064 +2930065 +2930066 +2930067 +2930068 +2930069 +2930070 +2930071 +2930072 +2930073 +2930074 +2930075 +2930076 +2930077 +2930078 +2930079 +2930080 +2930081 +2930082 +2930083 +2930084 +2930085 +2930086 +2930087 +2930088 +2930089 +2930090 +2930091 +2930092 +2930093 +2930094 +2930095 +2930096 +2930097 +2930098 +2930099 +2930100 +2930101 +2930102 +2930103 +2930104 +2930105 +2930106 +2930107 +2930108 +2930109 +2930110 +2930111 +2930112 +2930113 +2930114 +2930115 +2930116 +2930117 +2930118 +2930119 +2930120 +2930121 +2930122 +2930123 +2930124 +2930125 +2930126 +2930127 +2930128 +2930129 +2930130 +2930131 +2930132 +2930133 +2930134 +2930135 +2930136 +2930137 +2930138 +2930139 +2930140 +2930141 +2930142 +2930143 +2930144 +2930145 +2930146 +2930147 +2930148 +2930149 +2930150 +2930151 +2930152 +2930153 +2930154 +2930155 +2930159 +2930160 +2930161 +2930162 +2930163 +2930164 +2930165 +2930166 +2930167 +2930168 +2930169 +2930170 +2930171 +2934019 +2934020 +2934029 +2934030 +2934031 +2934032 +2934033 +2934034 +2934035 +2934036 +2934037 +2934038 +2934039 +2934040 +2934041 +2934042 +2934043 +2934044 +2934045 +2934046 +2934047 +2934048 +2934051 +2934052 +2934053 +2934054 +2934055 +2934056 +2934057 +2934058 +2934059 +2934060 +2934061 +2934062 +2934063 +2934064 +2934065 +2934066 +2934067 +2934068 +2934069 +2934070 +2934071 +2934072 +2934073 +2934074 +2934075 +2934076 +2934077 +2934078 +2934079 +2934080 +2934081 +2934082 +2934083 +2934084 +2934085 +2934086 +2934087 +2934088 +2934089 +2934090 +2934091 +2934092 +2934093 +2934094 +2934095 +2934096 +2934097 +2934098 +2934099 +2934100 +2934101 +2934102 +2934103 +2934104 +2934105 +2934106 +2934107 +2934108 +2934109 +2934110 +2934111 +2934112 +2934113 +2934114 +2934115 +2934116 +2934117 +2934118 +2934119 +2934120 +2934121 +2934122 +2934123 +2934124 +2934125 +2934126 +2934127 +2934128 +2934129 +2934130 +2934131 +2934132 +2934133 +2934134 +2934135 +2934136 +2934137 +2934138 +2934139 +2934140 +2934141 +2934142 +2934143 +2934144 +2934145 +2934146 +2934147 +2934148 +2934149 +2934150 +2934151 +2934152 +2934153 +2934154 +2934155 +2934156 +2934157 +2934158 +2934159 +2934160 +2934161 +2934162 +2934163 +2934164 +2934165 +2934166 +2934167 +2934168 +2934169 +2934170 +2934171 +2934172 +2934173 +2934174 +2934175 +2934176 +2934177 +2934178 +2934179 +2934180 +2934181 +2934182 +2934183 +2934184 +2934185 +2934186 +2934187 +2934188 +2934189 +2934190 +2934191 +2934192 +2934193 +2934194 +2934195 +2934196 +2934197 +2934198 +2934199 +2934200 +2934201 +2934202 +2934203 +2934204 +2934205 +2934206 +2934207 +2934208 +2934209 +2934210 +2934211 +2934212 +2934213 +2934214 +2934215 +2934216 +2934217 +2934218 +2934219 +2934220 +2934221 +2934222 +2934223 +2934224 +2934225 +2934226 +2934227 +2934228 +2934229 +2934230 +2934231 +2934232 +2934233 +2934234 +2934235 +2934236 +2934237 +2934238 +2934239 +2934240 +2934241 +2934242 +2934243 +2934244 +2934245 +2934246 +2934247 +2934248 +2934249 +2934250 +2934251 +2934252 +2934253 +2934254 +2934255 +2934256 +2934257 +2934258 +2934259 +2934260 +2934261 +2934262 +2934263 +2934264 +2934265 +2934266 +2934267 +2934268 +2934269 +2934270 +2934271 +2934272 +2934273 +2934274 +2934275 +2934276 +2934277 +2934278 +2934279 +2934280 +2934281 +2934282 +2934283 +2934284 +2934285 +2934286 +2934287 +2934288 +2934289 +2934290 +2934291 +2934292 +2934293 +2934294 +2934295 +2934296 +2934297 +2934298 +2934299 +2934300 +2934301 +2934302 +2934303 +2934304 +2934305 +2934306 +2934307 +2934308 +2934309 +2934310 +2934311 +2934312 +2934313 +2934314 +2934315 +2934316 +2934317 +2934318 +2934319 +2934320 +2934321 +2934322 +2934323 +2934324 +2934325 +2934326 +2934327 +2934328 +2934329 +2934330 +2934331 +2934332 +2934333 +2934334 +2934335 +2934336 +2934337 +2934338 +2934339 +2934340 +2934341 +2934342 +2934343 +2934344 +2934345 +2934346 +2934347 +2934348 +2934349 +2934350 +2934351 +2934352 +2934353 +2934354 +2934355 +2934356 +2934357 +2934358 +2934359 +2934360 +2934361 +2934362 +2934363 +2934364 +2934365 +2934366 +2934367 +2934368 +2934369 +2934370 +2934371 +2934372 +2934373 +2934374 +2934375 +2934376 +2934377 +2934378 +2934379 +2934380 +2934381 +2934382 +2934383 +2934384 +2934385 +2934386 +2934387 +2934388 +2934389 +2934390 +2934391 +2934392 +2934393 +2934394 +2934395 +2934396 +2934397 +2934398 +2934399 +2934400 +2934401 +2934402 +2934403 +2934404 +2934405 +2934406 +2934407 +2934408 +2934409 +2934410 +2934411 +2934412 +2934413 +2934414 +2934415 +2934416 +2934417 +2934418 +2934419 +2934420 +2934421 +2934422 +2934423 +2934424 +2934425 +2934426 +2934427 +2934428 +2934429 +2934430 +2934431 +2934432 +2934433 +2934434 +2934435 +2934436 +2934437 +2934438 +2934439 +2934440 +2934441 +2934442 +2934443 +2934444 +2934445 +2934446 +2934447 +2934448 +2934449 +2934450 +2934451 +2934452 +2934453 +2934454 +2934455 +2934456 +2934457 +2934458 +2934459 +2934460 +2934461 +2934462 +2934463 +2934464 +2934465 +2934466 +2934467 +2934468 +2934469 +2934470 +2934471 +2934472 +2934473 +2934474 +2934475 +2934476 +2934477 +2934478 +2934479 +2934481 +2934482 +2934483 +2934484 +2934485 +2934486 +2934487 +2934488 +2934489 +2934490 +2934491 +2938352 +2938353 +2938354 +2938355 +2938356 +2938357 +2938358 +2938359 +2938360 +2938361 +2938362 +2938363 +2938364 +2938365 +2938366 +2938367 +2938368 +2938369 +2938373 +2938374 +2938375 +2938376 +2938377 +2938378 +2938379 +2938380 +2938381 +2938382 +2938383 +2938384 +2938385 +2938386 +2938387 +2938388 +2938389 +2938390 +2938391 +2938392 +2938393 +2938394 +2938395 +2938396 +2938397 +2938398 +2938399 +2938400 +2938401 +2938402 +2938403 +2938404 +2938405 +2938406 +2938407 +2938408 +2938409 +2938410 +2938411 +2938412 +2938413 +2938414 +2938415 +2938416 +2938417 +2938418 +2938419 +2938420 +2938421 +2938422 +2938423 +2938424 +2938425 +2938426 +2938427 +2938428 +2938429 +2938430 +2938431 +2938432 +2938433 +2938434 +2938435 +2938436 +2938437 +2938438 +2938439 +2938440 +2938441 +2938442 +2938443 +2938444 +2938445 +2938446 +2938447 +2938448 +2938449 +2938450 +2938451 +2938452 +2938453 +2938454 +2938455 +2938456 +2938457 +2938458 +2938459 +2938460 +2938461 +2938462 +2938463 +2938464 +2938465 +2938466 +2938467 +2938468 +2938469 +2938470 +2938471 +2938472 +2938473 +2938474 +2938475 +2938476 +2938477 +2938478 +2938479 +2938480 +2938481 +2938482 +2938483 +2938484 +2938485 +2938486 +2938487 +2938488 +2938489 +2938490 +2938491 +2938492 +2938493 +2938494 +2938495 +2938496 +2938497 +2938498 +2938499 +2938500 +2938501 +2938502 +2938503 +2938504 +2938505 +2938506 +2938507 +2938508 +2938509 +2938510 +2938511 +2938512 +2938513 +2938514 +2938515 +2938516 +2938517 +2938518 +2938519 +2938520 +2938521 +2938522 +2938523 +2938524 +2938525 +2938526 +2938527 +2938528 +2938529 +2938530 +2938531 +2938532 +2938533 +2938534 +2938535 +2938536 +2938537 +2938538 +2938539 +2938540 +2938541 +2938542 +2938543 +2938544 +2938545 +2938546 +2938547 +2938548 +2938549 +2938550 +2938551 +2938552 +2938553 +2938554 +2938555 +2938556 +2938557 +2938558 +2938559 +2938560 +2938561 +2938562 +2938563 +2938564 +2938565 +2938566 +2938567 +2938568 +2938569 +2938570 +2938571 +2938572 +2938573 +2938574 +2938575 +2938576 +2938577 +2938578 +2938579 +2938580 +2938581 +2938582 +2938583 +2938584 +2938585 +2938586 +2938587 +2938588 +2938589 +2938590 +2938591 +2938592 +2938593 +2938594 +2938595 +2938596 +2938597 +2938598 +2938599 +2938600 +2938601 +2938602 +2938603 +2938604 +2938605 +2938606 +2938607 +2938608 +2938609 +2938610 +2938611 +2938612 +2938613 +2938614 +2938615 +2938616 +2938617 +2938618 +2938619 +2938620 +2938621 +2938622 +2938623 +2938624 +2938625 +2938626 +2938627 +2938628 +2938629 +2938630 +2938631 +2938632 +2938633 +2938634 +2938635 +2938636 +2938637 +2938638 +2938639 +2938640 +2938641 +2938642 +2938643 +2938644 +2938645 +2938646 +2938647 +2938648 +2938649 +2938650 +2938651 +2938652 +2938653 +2938654 +2938655 +2938656 +2938657 +2938658 +2938659 +2938660 +2938661 +2938662 +2938663 +2938664 +2938665 +2938666 +2938667 +2938668 +2938669 +2938670 +2938671 +2938672 +2938673 +2938674 +2938675 +2938676 +2938677 +2938678 +2938679 +2938680 +2938681 +2938682 +2938683 +2938684 +2938685 +2938686 +2938687 +2938688 +2938689 +2938690 +2938691 +2938692 +2938693 +2938694 +2938695 +2938696 +2938697 +2938698 +2938699 +2938700 +2938701 +2938702 +2938703 +2938704 +2938705 +2938706 +2938707 +2938708 +2938709 +2938710 +2938711 +2938712 +2938713 +2938714 +2938715 +2938716 +2938717 +2938718 +2938719 +2938720 +2938721 +2938722 +2938723 +2938724 +2938725 +2938726 +2938727 +2938728 +2938729 +2938730 +2938731 +2938732 +2938733 +2938734 +2938735 +2938736 +2938737 +2938738 +2938739 +2938740 +2938741 +2938742 +2938743 +2938744 +2938745 +2938746 +2938747 +2938748 +2938749 +2938750 +2938751 +2938752 +2938753 +2938754 +2938755 +2938756 +2938757 +2938758 +2938759 +2938760 +2938761 +2938762 +2938763 +2938764 +2938765 +2938766 +2938767 +2938768 +2938769 +2938770 +2938771 +2938772 +2938773 +2938774 +2938775 +2938776 +2938777 +2938778 +2938779 +2938780 +2938781 +2938782 +2938783 +2938784 +2938785 +2938786 +2938787 +2938788 +2938789 +2938790 +2938791 +2938792 +2938793 +2938794 +2938795 +2938796 +2938797 +2938798 +2938801 +2938802 +2938803 +2938804 +2938805 +2938806 +2938807 +2938808 +2938809 +2938810 +2942672 +2942673 +2942674 +2942675 +2942676 +2942677 +2942678 +2942679 +2942680 +2942681 +2942682 +2942683 +2942684 +2942685 +2942686 +2942687 +2942688 +2942689 +2942690 +2942693 +2942694 +2942695 +2942696 +2942697 +2942698 +2942699 +2942700 +2942701 +2942702 +2942703 +2942704 +2942705 +2942706 +2942707 +2942708 +2942709 +2942710 +2942711 +2942712 +2942713 +2942714 +2942715 +2942716 +2942717 +2942718 +2942719 +2942720 +2942721 +2942722 +2942723 +2942724 +2942725 +2942726 +2942727 +2942728 +2942729 +2942730 +2942731 +2942732 +2942733 +2942734 +2942735 +2942736 +2942737 +2942738 +2942739 +2942740 +2942741 +2942742 +2942743 +2942744 +2942745 +2942746 +2942747 +2942748 +2942749 +2942750 +2942751 +2942752 +2942753 +2942754 +2942755 +2942756 +2942757 +2942758 +2942759 +2942760 +2942761 +2942762 +2942763 +2942764 +2942765 +2942766 +2942767 +2942768 +2942769 +2942770 +2942771 +2942772 +2942773 +2942774 +2942775 +2942776 +2942777 +2942778 +2942779 +2942780 +2942781 +2942782 +2942783 +2942784 +2942785 +2942786 +2942787 +2942788 +2942789 +2942790 +2942791 +2942792 +2942793 +2942795 +2942796 +2942797 +2942798 +2942799 +2942800 +2942801 +2942802 +2942803 +2942804 +2942805 +2942806 +2942807 +2942808 +2942809 +2942810 +2942811 +2942812 +2942813 +2942814 +2942815 +2942816 +2942817 +2942818 +2942819 +2942820 +2942821 +2942822 +2942823 +2942824 +2942825 +2942826 +2942827 +2942828 +2942829 +2942830 +2942831 +2942832 +2942833 +2942834 +2942835 +2942836 +2942837 +2942838 +2942839 +2942840 +2942841 +2942842 +2942843 +2942844 +2942845 +2942846 +2942847 +2942848 +2942849 +2942850 +2942851 +2942852 +2942853 +2942854 +2942855 +2942856 +2942857 +2942858 +2942859 +2942860 +2942861 +2942862 +2942863 +2942864 +2942865 +2942866 +2942867 +2942868 +2942869 +2942870 +2942871 +2942872 +2942873 +2942874 +2942875 +2942876 +2942877 +2942878 +2942879 +2942880 +2942881 +2942882 +2942883 +2942884 +2942885 +2942886 +2942887 +2942888 +2942889 +2942890 +2942891 +2942892 +2942893 +2942894 +2942895 +2942896 +2942897 +2942898 +2942899 +2942900 +2942901 +2942902 +2942903 +2942904 +2942905 +2942907 +2942908 +2942909 +2942910 +2942911 +2942912 +2942913 +2942914 +2942915 +2942916 +2942917 +2942918 +2942919 +2942920 +2942921 +2942922 +2942923 +2942924 +2942925 +2942926 +2942927 +2942928 +2942929 +2942930 +2942931 +2942932 +2942933 +2942934 +2942935 +2942936 +2942937 +2942938 +2942939 +2942940 +2942941 +2942942 +2942943 +2942944 +2942945 +2942946 +2942947 +2942948 +2942949 +2942950 +2942951 +2942952 +2942953 +2942954 +2942955 +2942956 +2942957 +2942958 +2942959 +2942960 +2942961 +2942962 +2942963 +2942964 +2942965 +2942966 +2942967 +2942968 +2942969 +2942970 +2942971 +2942972 +2942973 +2942974 +2942975 +2942976 +2942977 +2942978 +2942979 +2942980 +2942981 +2942982 +2942983 +2942984 +2942985 +2942986 +2942987 +2942988 +2942989 +2942990 +2942991 +2942992 +2942993 +2942994 +2942995 +2942996 +2942997 +2942998 +2942999 +2943000 +2943001 +2943002 +2943003 +2943004 +2943005 +2943006 +2943007 +2943008 +2943009 +2943010 +2943011 +2943012 +2943013 +2943014 +2943015 +2943016 +2943017 +2943018 +2943019 +2943020 +2943021 +2943022 +2943023 +2943024 +2943025 +2943026 +2943027 +2943028 +2943029 +2943030 +2943031 +2943032 +2943033 +2943034 +2943035 +2943036 +2943037 +2943038 +2943039 +2943040 +2943041 +2943042 +2943043 +2943044 +2943045 +2943046 +2943047 +2943048 +2943049 +2943050 +2943051 +2943052 +2943053 +2943054 +2943055 +2943056 +2943057 +2943058 +2943059 +2943060 +2943061 +2943062 +2943063 +2943064 +2943065 +2943066 +2943067 +2943068 +2943069 +2943070 +2943071 +2943072 +2943073 +2943074 +2943075 +2943076 +2943077 +2943078 +2943079 +2943080 +2943081 +2943082 +2943083 +2943084 +2943085 +2943086 +2943087 +2943088 +2943089 +2943090 +2943091 +2943092 +2943093 +2943094 +2943095 +2943096 +2943097 +2943098 +2943099 +2943100 +2943101 +2943102 +2943103 +2943104 +2943105 +2943106 +2943107 +2943108 +2943109 +2943110 +2943111 +2943112 +2943113 +2943114 +2943115 +2943116 +2943117 +2943118 +2943119 +2943120 +2943121 +2943122 +2943123 +2943124 +2943125 +2943126 +2943127 +2943128 +2943129 +2943130 +2946992 +2946993 +2946994 +2946995 +2946996 +2946997 +2946998 +2946999 +2947000 +2947001 +2947002 +2947003 +2947004 +2947005 +2947006 +2947007 +2947008 +2947009 +2947010 +2947011 +2947012 +2947013 +2947014 +2947015 +2947016 +2947017 +2947018 +2947019 +2947020 +2947021 +2947022 +2947023 +2947024 +2947025 +2947026 +2947027 +2947028 +2947029 +2947030 +2947031 +2947032 +2947033 +2947034 +2947035 +2947036 +2947037 +2947038 +2947039 +2947040 +2947041 +2947042 +2947043 +2947044 +2947045 +2947046 +2947047 +2947048 +2947049 +2947050 +2947051 +2947052 +2947053 +2947054 +2947055 +2947056 +2947057 +2947058 +2947059 +2947060 +2947061 +2947062 +2947063 +2947064 +2947065 +2947066 +2947067 +2947068 +2947069 +2947070 +2947071 +2947072 +2947073 +2947074 +2947075 +2947076 +2947077 +2947078 +2947079 +2947080 +2947081 +2947082 +2947083 +2947084 +2947085 +2947086 +2947087 +2947088 +2947089 +2947090 +2947091 +2947092 +2947093 +2947094 +2947095 +2947096 +2947097 +2947098 +2947099 +2947100 +2947101 +2947102 +2947103 +2947104 +2947105 +2947106 +2947107 +2947108 +2947109 +2947110 +2947111 +2947112 +2947113 +2947114 +2947115 +2947116 +2947117 +2947118 +2947119 +2947120 +2947121 +2947122 +2947123 +2947124 +2947125 +2947126 +2947127 +2947128 +2947129 +2947130 +2947131 +2947132 +2947133 +2947134 +2947135 +2947136 +2947137 +2947138 +2947139 +2947140 +2947141 +2947142 +2947143 +2947144 +2947145 +2947146 +2947147 +2947148 +2947149 +2947150 +2947151 +2947152 +2947153 +2947154 +2947155 +2947156 +2947157 +2947158 +2947159 +2947160 +2947161 +2947162 +2947163 +2947164 +2947165 +2947166 +2947167 +2947168 +2947169 +2947170 +2947171 +2947172 +2947173 +2947174 +2947175 +2947176 +2947177 +2947178 +2947179 +2947180 +2947181 +2947182 +2947183 +2947184 +2947185 +2947186 +2947187 +2947188 +2947189 +2947190 +2947191 +2947192 +2947193 +2947194 +2947195 +2947196 +2947197 +2947198 +2947199 +2947200 +2947201 +2947202 +2947203 +2947204 +2947205 +2947206 +2947207 +2947208 +2947209 +2947210 +2947211 +2947212 +2947213 +2947214 +2947215 +2947216 +2947217 +2947218 +2947219 +2947220 +2947221 +2947222 +2947223 +2947224 +2947225 +2947226 +2947227 +2947228 +2947229 +2947230 +2947231 +2947232 +2947233 +2947234 +2947235 +2947236 +2947237 +2947238 +2947239 +2947240 +2947241 +2947242 +2947243 +2947244 +2947245 +2947246 +2947247 +2947248 +2947249 +2947250 +2947251 +2947252 +2947253 +2947254 +2947255 +2947256 +2947257 +2947258 +2947259 +2947260 +2947261 +2947262 +2947263 +2947264 +2947265 +2947266 +2947267 +2947268 +2947269 +2947270 +2947271 +2947272 +2947273 +2947274 +2947275 +2947276 +2947277 +2947278 +2947279 +2947280 +2947281 +2947282 +2947283 +2947284 +2947285 +2947286 +2947287 +2947288 +2947289 +2947290 +2947291 +2947292 +2947293 +2947294 +2947295 +2947296 +2947297 +2947298 +2947299 +2947300 +2947301 +2947302 +2947303 +2947304 +2947305 +2947306 +2947307 +2947308 +2947309 +2947310 +2947311 +2947312 +2947313 +2947314 +2947315 +2947316 +2947317 +2947318 +2947319 +2947320 +2947321 +2947322 +2947323 +2947324 +2947325 +2947326 +2947327 +2947328 +2947329 +2947330 +2947331 +2947332 +2947333 +2947334 +2947335 +2947336 +2947337 +2947338 +2947339 +2947340 +2947341 +2947342 +2947343 +2947344 +2947345 +2947346 +2947347 +2947348 +2947349 +2947350 +2947351 +2947352 +2947353 +2947354 +2947355 +2947356 +2947357 +2947358 +2947359 +2947360 +2947361 +2947362 +2947363 +2947364 +2947365 +2947366 +2947367 +2947368 +2947369 +2947370 +2947371 +2947372 +2947373 +2947374 +2947375 +2947376 +2947377 +2947378 +2947379 +2947380 +2947381 +2947382 +2947383 +2947384 +2947385 +2947386 +2947387 +2947388 +2947389 +2947390 +2947391 +2947392 +2947393 +2947394 +2947395 +2947396 +2947397 +2947398 +2947399 +2947400 +2947401 +2947402 +2947403 +2947404 +2947405 +2947406 +2947407 +2947408 +2947409 +2947410 +2947411 +2947412 +2947413 +2947414 +2947415 +2947416 +2947417 +2947418 +2947419 +2947420 +2947421 +2947422 +2947423 +2947424 +2947425 +2947426 +2947427 +2947428 +2947429 +2947430 +2947431 +2947432 +2947433 +2947434 +2947435 +2947436 +2947437 +2947438 +2947439 +2947440 +2947441 +2947442 +2947443 +2947444 +2947445 +2947446 +2947447 +2947448 +2947449 +2947450 +2951297 +2951313 +2951314 +2951315 +2951316 +2951317 +2951318 +2951319 +2951320 +2951321 +2951322 +2951323 +2951324 +2951325 +2951326 +2951327 +2951328 +2951329 +2951330 +2951331 +2951332 +2951333 +2951334 +2951335 +2951336 +2951337 +2951338 +2951339 +2951340 +2951341 +2951342 +2951343 +2951344 +2951345 +2951346 +2951347 +2951348 +2951349 +2951350 +2951351 +2951352 +2951353 +2951354 +2951355 +2951356 +2951357 +2951358 +2951359 +2951360 +2951361 +2951362 +2951363 +2951364 +2951365 +2951366 +2951367 +2951368 +2951369 +2951370 +2951371 +2951372 +2951373 +2951374 +2951375 +2951376 +2951377 +2951378 +2951379 +2951380 +2951381 +2951382 +2951383 +2951384 +2951385 +2951386 +2951387 +2951388 +2951389 +2951390 +2951391 +2951392 +2951393 +2951394 +2951395 +2951396 +2951397 +2951398 +2951399 +2951400 +2951401 +2951402 +2951403 +2951404 +2951405 +2951406 +2951407 +2951408 +2951409 +2951410 +2951411 +2951412 +2951413 +2951414 +2951415 +2951416 +2951417 +2951418 +2951419 +2951420 +2951421 +2951422 +2951423 +2951424 +2951425 +2951426 +2951427 +2951428 +2951429 +2951430 +2951431 +2951432 +2951433 +2951434 +2951435 +2951436 +2951437 +2951438 +2951439 +2951440 +2951441 +2951442 +2951443 +2951444 +2951445 +2951446 +2951447 +2951448 +2951449 +2951450 +2951451 +2951452 +2951453 +2951454 +2951455 +2951456 +2951457 +2951458 +2951459 +2951460 +2951461 +2951462 +2951463 +2951464 +2951465 +2951466 +2951467 +2951468 +2951469 +2951470 +2951471 +2951472 +2951473 +2951474 +2951475 +2951476 +2951477 +2951478 +2951479 +2951480 +2951481 +2951482 +2951483 +2951484 +2951485 +2951486 +2951487 +2951488 +2951489 +2951490 +2951491 +2951492 +2951493 +2951494 +2951495 +2951496 +2951497 +2951498 +2951499 +2951500 +2951501 +2951502 +2951503 +2951504 +2951505 +2951506 +2951507 +2951508 +2951509 +2951510 +2951511 +2951512 +2951513 +2951514 +2951515 +2951516 +2951517 +2951518 +2951519 +2951520 +2951521 +2951522 +2951523 +2951524 +2951525 +2951526 +2951527 +2951528 +2951529 +2951530 +2951531 +2951532 +2951533 +2951534 +2951535 +2951536 +2951537 +2951538 +2951539 +2951540 +2951541 +2951542 +2951543 +2951544 +2951545 +2951546 +2951547 +2951548 +2951549 +2951550 +2951551 +2951552 +2951553 +2951554 +2951555 +2951556 +2951557 +2951558 +2951559 +2951560 +2951561 +2951562 +2951563 +2951564 +2951565 +2951566 +2951567 +2951568 +2951569 +2951570 +2951571 +2951572 +2951573 +2951574 +2951575 +2951576 +2951577 +2951578 +2951579 +2951580 +2951581 +2951582 +2951583 +2951584 +2951585 +2951586 +2951587 +2951588 +2951589 +2951590 +2951591 +2951592 +2951593 +2951594 +2951595 +2951596 +2951597 +2951598 +2951599 +2951600 +2951601 +2951602 +2951603 +2951604 +2951605 +2951606 +2951607 +2951608 +2951609 +2951610 +2951611 +2951612 +2951613 +2951614 +2951615 +2951616 +2951617 +2951618 +2951619 +2951620 +2951621 +2951622 +2951623 +2951624 +2951625 +2951626 +2951627 +2951628 +2951629 +2951630 +2951631 +2951632 +2951633 +2951634 +2951635 +2951636 +2951637 +2951638 +2951639 +2951640 +2951641 +2951642 +2951643 +2951644 +2951645 +2951646 +2951647 +2951648 +2951649 +2951650 +2951651 +2951652 +2951653 +2951654 +2951655 +2951656 +2951657 +2951658 +2951659 +2951660 +2951661 +2951662 +2951663 +2951664 +2951665 +2951666 +2951667 +2951668 +2951669 +2951670 +2951671 +2951672 +2951673 +2951674 +2951675 +2951676 +2951677 +2951678 +2951679 +2951680 +2951681 +2951682 +2951683 +2951684 +2951685 +2951686 +2951687 +2951688 +2951689 +2951690 +2951691 +2951692 +2951693 +2951694 +2951695 +2951696 +2951697 +2951698 +2951699 +2951700 +2951701 +2951702 +2951703 +2951704 +2951705 +2951706 +2951707 +2951708 +2951709 +2951710 +2951711 +2951712 +2951713 +2951714 +2951715 +2951716 +2951717 +2951718 +2951719 +2951720 +2951721 +2951722 +2951723 +2951724 +2951725 +2951726 +2951727 +2951728 +2951729 +2951730 +2951731 +2951732 +2951733 +2951734 +2951735 +2951736 +2951737 +2951738 +2951739 +2951740 +2951741 +2951742 +2951743 +2951744 +2951745 +2951746 +2951747 +2951748 +2951749 +2951750 +2951751 +2951752 +2951753 +2951754 +2951755 +2951756 +2951757 +2951758 +2951759 +2951760 +2951761 +2951762 +2951763 +2951764 +2951765 +2955633 +2955634 +2955635 +2955636 +2955637 +2955638 +2955639 +2955640 +2955641 +2955642 +2955643 +2955644 +2955645 +2955646 +2955647 +2955648 +2955649 +2955650 +2955651 +2955652 +2955653 +2955654 +2955655 +2955656 +2955657 +2955658 +2955659 +2955660 +2955661 +2955662 +2955663 +2955664 +2955665 +2955666 +2955667 +2955668 +2955669 +2955670 +2955671 +2955672 +2955673 +2955674 +2955675 +2955676 +2955677 +2955678 +2955679 +2955680 +2955681 +2955682 +2955683 +2955684 +2955685 +2955686 +2955687 +2955688 +2955689 +2955690 +2955691 +2955692 +2955693 +2955694 +2955695 +2955696 +2955697 +2955698 +2955699 +2955700 +2955701 +2955702 +2955703 +2955704 +2955705 +2955706 +2955707 +2955708 +2955709 +2955710 +2955711 +2955712 +2955713 +2955714 +2955715 +2955716 +2955717 +2955718 +2955719 +2955720 +2955721 +2955722 +2955723 +2955724 +2955725 +2955726 +2955727 +2955728 +2955729 +2955730 +2955731 +2955732 +2955733 +2955734 +2955735 +2955736 +2955737 +2955738 +2955739 +2955740 +2955741 +2955742 +2955743 +2955744 +2955745 +2955746 +2955747 +2955748 +2955749 +2955750 +2955751 +2955752 +2955753 +2955754 +2955755 +2955756 +2955757 +2955758 +2955759 +2955760 +2955761 +2955762 +2955763 +2955764 +2955765 +2955766 +2955767 +2955768 +2955769 +2955770 +2955771 +2955772 +2955773 +2955774 +2955775 +2955776 +2955777 +2955778 +2955779 +2955780 +2955781 +2955782 +2955783 +2955784 +2955785 +2955786 +2955787 +2955788 +2955789 +2955790 +2955791 +2955792 +2955793 +2955794 +2955795 +2955796 +2955797 +2955798 +2955799 +2955800 +2955801 +2955802 +2955803 +2955804 +2955805 +2955806 +2955807 +2955808 +2955809 +2955810 +2955811 +2955812 +2955813 +2955814 +2955815 +2955816 +2955817 +2955818 +2955819 +2955820 +2955821 +2955822 +2955823 +2955824 +2955825 +2955826 +2955827 +2955828 +2955829 +2955830 +2955831 +2955832 +2955833 +2955834 +2955835 +2955836 +2955837 +2955838 +2955839 +2955840 +2955841 +2955842 +2955843 +2955844 +2955845 +2955846 +2955847 +2955848 +2955849 +2955850 +2955851 +2955852 +2955853 +2955854 +2955855 +2955856 +2955857 +2955858 +2955859 +2955860 +2955861 +2955862 +2955863 +2955864 +2955865 +2955866 +2955867 +2955868 +2955869 +2955870 +2955871 +2955872 +2955873 +2955874 +2955875 +2955876 +2955877 +2955878 +2955879 +2955880 +2955881 +2955882 +2955883 +2955884 +2955885 +2955886 +2955887 +2955888 +2955889 +2955890 +2955891 +2955892 +2955893 +2955894 +2955895 +2955896 +2955897 +2955898 +2955899 +2955900 +2955901 +2955902 +2955903 +2955904 +2955905 +2955906 +2955907 +2955908 +2955909 +2955910 +2955911 +2955912 +2955913 +2955914 +2955915 +2955916 +2955917 +2955918 +2955919 +2955920 +2955921 +2955922 +2955923 +2955924 +2955925 +2955926 +2955927 +2955928 +2955929 +2955930 +2955931 +2955932 +2955933 +2955934 +2955935 +2955936 +2955937 +2955938 +2955939 +2955940 +2955941 +2955942 +2955943 +2955944 +2955945 +2955946 +2955947 +2955948 +2955949 +2955950 +2955951 +2955952 +2955953 +2955954 +2955955 +2955956 +2955957 +2955958 +2955959 +2955960 +2955961 +2955962 +2955963 +2955964 +2955965 +2955966 +2955967 +2955968 +2955969 +2955970 +2955971 +2955972 +2955973 +2955974 +2955975 +2955976 +2955977 +2955978 +2955979 +2955980 +2955981 +2955982 +2955983 +2955984 +2955985 +2955986 +2955987 +2955988 +2955989 +2955990 +2955991 +2955992 +2955993 +2955994 +2955995 +2955996 +2955997 +2955998 +2955999 +2956000 +2956001 +2956002 +2956003 +2956004 +2956005 +2956006 +2956007 +2956008 +2956009 +2956010 +2956011 +2956012 +2956013 +2956014 +2956015 +2956016 +2956017 +2956018 +2956019 +2956020 +2956021 +2956022 +2956023 +2956024 +2956025 +2956026 +2956027 +2956028 +2956029 +2956030 +2956031 +2956032 +2956033 +2956034 +2956035 +2956036 +2956037 +2956038 +2956039 +2956040 +2956041 +2956042 +2956043 +2956044 +2956045 +2956046 +2956047 +2956048 +2956049 +2956050 +2956051 +2956052 +2956053 +2956054 +2956055 +2956056 +2956057 +2956058 +2956059 +2956060 +2956061 +2956062 +2956063 +2956064 +2956065 +2956066 +2956067 +2956068 +2956069 +2956070 +2956071 +2956072 +2956073 +2956074 +2956075 +2956076 +2956077 +2956078 +2956079 +2956080 +2956081 +2956082 +2956083 +2956084 +2956085 +2959938 +2959939 +2959940 +2959953 +2959954 +2959955 +2959956 +2959957 +2959958 +2959959 +2959960 +2959961 +2959962 +2959963 +2959964 +2959965 +2959966 +2959967 +2959968 +2959969 +2959970 +2959971 +2959972 +2959973 +2959974 +2959975 +2959976 +2959977 +2959978 +2959979 +2959980 +2959981 +2959982 +2959983 +2959984 +2959985 +2959986 +2959987 +2959988 +2959989 +2959990 +2959991 +2959992 +2959993 +2959994 +2959995 +2959996 +2959997 +2959998 +2959999 +2960000 +2960001 +2960002 +2960003 +2960004 +2960005 +2960006 +2960007 +2960008 +2960009 +2960010 +2960011 +2960012 +2960013 +2960014 +2960015 +2960016 +2960017 +2960018 +2960019 +2960020 +2960021 +2960022 +2960023 +2960024 +2960025 +2960026 +2960027 +2960028 +2960029 +2960030 +2960031 +2960032 +2960033 +2960034 +2960035 +2960036 +2960037 +2960038 +2960039 +2960040 +2960041 +2960042 +2960043 +2960044 +2960045 +2960046 +2960047 +2960048 +2960049 +2960050 +2960051 +2960052 +2960053 +2960054 +2960055 +2960056 +2960057 +2960058 +2960059 +2960060 +2960061 +2960062 +2960063 +2960064 +2960065 +2960066 +2960067 +2960068 +2960069 +2960070 +2960071 +2960072 +2960073 +2960074 +2960075 +2960076 +2960077 +2960078 +2960079 +2960080 +2960081 +2960082 +2960083 +2960084 +2960085 +2960086 +2960087 +2960088 +2960089 +2960090 +2960091 +2960092 +2960093 +2960094 +2960095 +2960096 +2960097 +2960098 +2960099 +2960100 +2960101 +2960102 +2960103 +2960104 +2960105 +2960106 +2960107 +2960108 +2960109 +2960110 +2960111 +2960112 +2960113 +2960114 +2960115 +2960116 +2960117 +2960118 +2960119 +2960120 +2960121 +2960122 +2960123 +2960124 +2960125 +2960126 +2960127 +2960128 +2960129 +2960130 +2960131 +2960132 +2960133 +2960134 +2960135 +2960136 +2960137 +2960138 +2960139 +2960140 +2960141 +2960142 +2960143 +2960144 +2960145 +2960146 +2960147 +2960148 +2960149 +2960150 +2960151 +2960152 +2960153 +2960154 +2960155 +2960156 +2960157 +2960158 +2960159 +2960160 +2960161 +2960162 +2960163 +2960164 +2960165 +2960166 +2960167 +2960168 +2960169 +2960170 +2960171 +2960172 +2960173 +2960174 +2960175 +2960176 +2960177 +2960178 +2960179 +2960180 +2960181 +2960182 +2960183 +2960184 +2960185 +2960186 +2960187 +2960188 +2960189 +2960190 +2960191 +2960192 +2960193 +2960194 +2960195 +2960196 +2960197 +2960198 +2960199 +2960200 +2960201 +2960202 +2960203 +2960204 +2960205 +2960206 +2960207 +2960208 +2960209 +2960210 +2960211 +2960212 +2960213 +2960214 +2960215 +2960216 +2960217 +2960218 +2960219 +2960220 +2960221 +2960222 +2960223 +2960224 +2960225 +2960226 +2960227 +2960228 +2960229 +2960230 +2960231 +2960232 +2960233 +2960234 +2960235 +2960236 +2960237 +2960238 +2960239 +2960240 +2960241 +2960242 +2960243 +2960244 +2960245 +2960246 +2960247 +2960248 +2960249 +2960250 +2960251 +2960252 +2960253 +2960254 +2960255 +2960256 +2960257 +2960258 +2960259 +2960260 +2960261 +2960262 +2960263 +2960264 +2960265 +2960266 +2960267 +2960268 +2960269 +2960270 +2960271 +2960272 +2960273 +2960274 +2960275 +2960276 +2960277 +2960278 +2960279 +2960280 +2960281 +2960282 +2960283 +2960284 +2960285 +2960286 +2960287 +2960288 +2960289 +2960290 +2960291 +2960292 +2960293 +2960294 +2960295 +2960296 +2960297 +2960298 +2960299 +2960300 +2960301 +2960302 +2960303 +2960304 +2960305 +2960306 +2960307 +2960308 +2960309 +2960310 +2960311 +2960312 +2960313 +2960314 +2960315 +2960316 +2960317 +2960318 +2960319 +2960320 +2960321 +2960322 +2960323 +2960324 +2960325 +2960326 +2960327 +2960328 +2960329 +2960330 +2960331 +2960332 +2960333 +2960334 +2960335 +2960336 +2960337 +2960338 +2960339 +2960340 +2960341 +2960342 +2960343 +2960344 +2960345 +2960346 +2960347 +2960348 +2960349 +2960350 +2960351 +2960352 +2960353 +2960354 +2960355 +2960356 +2960357 +2960358 +2960359 +2960360 +2960361 +2960362 +2960363 +2960364 +2960365 +2960366 +2960367 +2960368 +2960369 +2960370 +2960371 +2960372 +2960373 +2960374 +2960375 +2960376 +2960377 +2960378 +2960379 +2960380 +2960381 +2960382 +2960383 +2960384 +2960385 +2960386 +2960387 +2960388 +2960389 +2960390 +2960391 +2960392 +2960393 +2960394 +2960395 +2960396 +2960397 +2960398 +2960399 +2960400 +2960401 +2960402 +2960403 +2960404 +2960405 +2964275 +2964276 +2964277 +2964278 +2964279 +2964280 +2964281 +2964282 +2964283 +2964284 +2964285 +2964286 +2964287 +2964305 +2964306 +2964307 +2964308 +2964309 +2964310 +2964311 +2964312 +2964313 +2964314 +2964315 +2964316 +2964317 +2964318 +2964319 +2964320 +2964321 +2964322 +2964323 +2964324 +2964325 +2964326 +2964327 +2964328 +2964329 +2964330 +2964331 +2964332 +2964333 +2964334 +2964335 +2964336 +2964337 +2964338 +2964339 +2964340 +2964341 +2964342 +2964343 +2964344 +2964345 +2964346 +2964347 +2964348 +2964349 +2964350 +2964351 +2964352 +2964353 +2964354 +2964355 +2964356 +2964357 +2964358 +2964359 +2964360 +2964361 +2964362 +2964363 +2964364 +2964365 +2964366 +2964367 +2964368 +2964369 +2964370 +2964371 +2964372 +2964373 +2964374 +2964375 +2964376 +2964377 +2964378 +2964379 +2964380 +2964381 +2964382 +2964383 +2964384 +2964385 +2964386 +2964387 +2964388 +2964389 +2964390 +2964391 +2964392 +2964393 +2964394 +2964395 +2964396 +2964397 +2964398 +2964399 +2964400 +2964401 +2964402 +2964403 +2964404 +2964405 +2964406 +2964407 +2964408 +2964409 +2964410 +2964411 +2964412 +2964413 +2964414 +2964415 +2964416 +2964417 +2964418 +2964419 +2964420 +2964421 +2964422 +2964423 +2964424 +2964425 +2964426 +2964427 +2964428 +2964429 +2964430 +2964431 +2964432 +2964433 +2964434 +2964435 +2964436 +2964437 +2964438 +2964439 +2964440 +2964441 +2964442 +2964443 +2964444 +2964445 +2964446 +2964447 +2964448 +2964449 +2964450 +2964451 +2964452 +2964453 +2964454 +2964455 +2964456 +2964457 +2964458 +2964459 +2964460 +2964461 +2964462 +2964463 +2964464 +2964465 +2964466 +2964467 +2964468 +2964469 +2964470 +2964471 +2964472 +2964473 +2964474 +2964475 +2964476 +2964477 +2964478 +2964479 +2964480 +2964481 +2964482 +2964483 +2964484 +2964485 +2964486 +2964487 +2964488 +2964489 +2964490 +2964491 +2964492 +2964493 +2964494 +2964495 +2964496 +2964497 +2964498 +2964499 +2964500 +2964501 +2964502 +2964503 +2964504 +2964505 +2964506 +2964507 +2964508 +2964509 +2964510 +2964511 +2964512 +2964513 +2964514 +2964515 +2964516 +2964517 +2964518 +2964519 +2964520 +2964521 +2964522 +2964523 +2964524 +2964525 +2964526 +2964527 +2964528 +2964529 +2964530 +2964531 +2964532 +2964533 +2964534 +2964535 +2964536 +2964537 +2964538 +2964539 +2964540 +2964541 +2964542 +2964543 +2964544 +2964545 +2964546 +2964547 +2964548 +2964549 +2964550 +2964551 +2964552 +2964553 +2964554 +2964555 +2964556 +2964557 +2964558 +2964559 +2964560 +2964561 +2964562 +2964563 +2964564 +2964565 +2964566 +2964567 +2964568 +2964569 +2964570 +2964571 +2964572 +2964573 +2964574 +2964575 +2964576 +2964577 +2964578 +2964579 +2964580 +2964581 +2964582 +2964583 +2964584 +2964585 +2964586 +2964587 +2964588 +2964589 +2964590 +2964591 +2964592 +2964593 +2964594 +2964595 +2964596 +2964597 +2964598 +2964599 +2964600 +2964601 +2964602 +2964603 +2964604 +2964605 +2964606 +2964607 +2964608 +2964609 +2964610 +2964611 +2964612 +2964613 +2964614 +2964615 +2964616 +2964617 +2964618 +2964619 +2964620 +2964621 +2964622 +2964623 +2964624 +2964625 +2964626 +2964627 +2964628 +2964629 +2964630 +2964631 +2964632 +2964633 +2964634 +2964635 +2964636 +2964637 +2964638 +2964639 +2964640 +2964641 +2964642 +2964643 +2964644 +2964645 +2964646 +2964647 +2964648 +2964649 +2964651 +2964652 +2964653 +2964654 +2964655 +2964656 +2964657 +2964658 +2964659 +2964660 +2964661 +2964662 +2964663 +2964664 +2964665 +2964666 +2964667 +2964668 +2964669 +2964670 +2964671 +2964672 +2964673 +2964674 +2964675 +2964676 +2964677 +2964678 +2964679 +2964680 +2964681 +2964682 +2964683 +2964684 +2964685 +2964686 +2964687 +2964688 +2964689 +2964690 +2964691 +2964692 +2964693 +2964694 +2964695 +2964696 +2964697 +2964698 +2964699 +2964700 +2964701 +2964702 +2964703 +2964704 +2964705 +2964706 +2964707 +2964708 +2964709 +2964710 +2964711 +2964712 +2964713 +2964714 +2964715 +2964716 +2964717 +2964718 +2964719 +2964720 +2964721 +2964722 +2968595 +2968596 +2968597 +2968598 +2968599 +2968600 +2968601 +2968602 +2968603 +2968604 +2968605 +2968606 +2968607 +2968625 +2968626 +2968627 +2968628 +2968629 +2968630 +2968631 +2968632 +2968633 +2968634 +2968635 +2968636 +2968637 +2968638 +2968639 +2968640 +2968641 +2968642 +2968643 +2968644 +2968645 +2968646 +2968647 +2968648 +2968649 +2968650 +2968651 +2968652 +2968653 +2968654 +2968655 +2968656 +2968657 +2968658 +2968659 +2968660 +2968661 +2968662 +2968663 +2968664 +2968665 +2968666 +2968667 +2968668 +2968669 +2968670 +2968671 +2968672 +2968673 +2968674 +2968675 +2968676 +2968677 +2968678 +2968679 +2968680 +2968681 +2968682 +2968683 +2968684 +2968685 +2968686 +2968687 +2968688 +2968689 +2968690 +2968691 +2968692 +2968693 +2968694 +2968695 +2968696 +2968697 +2968698 +2968699 +2968700 +2968701 +2968702 +2968703 +2968704 +2968705 +2968706 +2968707 +2968708 +2968709 +2968710 +2968711 +2968712 +2968713 +2968714 +2968715 +2968716 +2968717 +2968718 +2968719 +2968720 +2968721 +2968722 +2968723 +2968724 +2968725 +2968726 +2968727 +2968728 +2968729 +2968730 +2968731 +2968732 +2968733 +2968734 +2968735 +2968736 +2968737 +2968738 +2968739 +2968740 +2968741 +2968742 +2968743 +2968744 +2968745 +2968746 +2968747 +2968748 +2968749 +2968750 +2968751 +2968752 +2968753 +2968754 +2968755 +2968756 +2968757 +2968758 +2968759 +2968760 +2968761 +2968762 +2968763 +2968764 +2968765 +2968766 +2968767 +2968768 +2968769 +2968770 +2968771 +2968772 +2968773 +2968774 +2968775 +2968776 +2968777 +2968778 +2968779 +2968780 +2968781 +2968782 +2968783 +2968784 +2968785 +2968786 +2968787 +2968788 +2968789 +2968790 +2968791 +2968792 +2968793 +2968794 +2968795 +2968796 +2968797 +2968798 +2968799 +2968800 +2968801 +2968802 +2968803 +2968804 +2968805 +2968806 +2968807 +2968808 +2968809 +2968810 +2968811 +2968812 +2968813 +2968814 +2968815 +2968816 +2968817 +2968818 +2968819 +2968820 +2968821 +2968822 +2968823 +2968824 +2968825 +2968826 +2968827 +2968828 +2968829 +2968830 +2968831 +2968832 +2968833 +2968834 +2968835 +2968836 +2968837 +2968838 +2968839 +2968840 +2968841 +2968842 +2968843 +2968844 +2968845 +2968846 +2968847 +2968848 +2968849 +2968850 +2968851 +2968852 +2968853 +2968854 +2968855 +2968856 +2968857 +2968858 +2968859 +2968860 +2968861 +2968862 +2968863 +2968864 +2968865 +2968866 +2968867 +2968868 +2968869 +2968870 +2968873 +2968874 +2968875 +2968876 +2968877 +2968878 +2968879 +2968880 +2968881 +2968882 +2968883 +2968884 +2968885 +2968886 +2968887 +2968888 +2968889 +2968890 +2968891 +2968892 +2968893 +2968894 +2968895 +2968896 +2968897 +2968898 +2968899 +2968900 +2968901 +2968902 +2968903 +2968904 +2968905 +2968906 +2968907 +2968908 +2968909 +2968910 +2968911 +2968912 +2968913 +2968914 +2968915 +2968916 +2968917 +2968918 +2968919 +2968920 +2968921 +2968922 +2968923 +2968924 +2968925 +2968926 +2968927 +2968928 +2968929 +2968930 +2968931 +2968932 +2968933 +2968934 +2968935 +2968936 +2968937 +2968938 +2968939 +2968940 +2968941 +2968942 +2968943 +2968944 +2968945 +2968946 +2968947 +2968948 +2968949 +2968950 +2968951 +2968952 +2968953 +2968954 +2968955 +2968956 +2968957 +2968958 +2968959 +2968960 +2968961 +2968962 +2968963 +2968964 +2968965 +2968966 +2968967 +2968968 +2968970 +2968971 +2968972 +2968973 +2968974 +2968975 +2968976 +2968977 +2968978 +2968979 +2968980 +2968981 +2968982 +2968983 +2968984 +2968985 +2968986 +2968987 +2968988 +2968989 +2968990 +2968991 +2968992 +2968993 +2968994 +2968995 +2968996 +2968997 +2968998 +2968999 +2969000 +2969001 +2969002 +2969003 +2969004 +2969005 +2969006 +2969007 +2969008 +2969009 +2969010 +2969011 +2969012 +2969013 +2969014 +2969015 +2969016 +2969017 +2969018 +2969019 +2969020 +2969021 +2969022 +2969023 +2969024 +2969025 +2969026 +2969027 +2969028 +2969029 +2969030 +2969031 +2969032 +2969033 +2969034 +2969035 +2969036 +2969037 +2969038 +2969039 +2969040 +2969041 +2969042 +2972915 +2972916 +2972917 +2972918 +2972919 +2972920 +2972921 +2972922 +2972923 +2972924 +2972925 +2972926 +2972927 +2972945 +2972946 +2972947 +2972948 +2972949 +2972950 +2972951 +2972952 +2972953 +2972954 +2972955 +2972956 +2972957 +2972958 +2972959 +2972960 +2972961 +2972962 +2972963 +2972964 +2972965 +2972966 +2972967 +2972968 +2972969 +2972970 +2972971 +2972972 +2972973 +2972974 +2972975 +2972976 +2972977 +2972978 +2972979 +2972980 +2972981 +2972982 +2972983 +2972984 +2972985 +2972986 +2972987 +2972988 +2972989 +2972990 +2972991 +2972992 +2972993 +2972994 +2972995 +2972996 +2972997 +2972998 +2972999 +2973000 +2973001 +2973002 +2973003 +2973004 +2973005 +2973006 +2973007 +2973008 +2973009 +2973010 +2973011 +2973012 +2973013 +2973014 +2973015 +2973016 +2973017 +2973018 +2973019 +2973020 +2973021 +2973022 +2973023 +2973024 +2973025 +2973026 +2973027 +2973028 +2973029 +2973030 +2973031 +2973032 +2973033 +2973034 +2973035 +2973036 +2973037 +2973038 +2973039 +2973040 +2973041 +2973042 +2973043 +2973044 +2973045 +2973046 +2973047 +2973048 +2973049 +2973050 +2973051 +2973052 +2973053 +2973054 +2973055 +2973056 +2973057 +2973058 +2973059 +2973060 +2973061 +2973062 +2973063 +2973064 +2973065 +2973066 +2973067 +2973068 +2973069 +2973070 +2973071 +2973072 +2973073 +2973074 +2973075 +2973076 +2973077 +2973078 +2973079 +2973080 +2973081 +2973082 +2973083 +2973084 +2973085 +2973086 +2973087 +2973088 +2973089 +2973090 +2973091 +2973092 +2973093 +2973094 +2973095 +2973096 +2973097 +2973098 +2973099 +2973100 +2973101 +2973102 +2973103 +2973104 +2973105 +2973106 +2973107 +2973108 +2973109 +2973110 +2973111 +2973112 +2973113 +2973114 +2973115 +2973116 +2973117 +2973118 +2973119 +2973120 +2973121 +2973122 +2973123 +2973124 +2973125 +2973126 +2973127 +2973128 +2973129 +2973130 +2973131 +2973132 +2973133 +2973134 +2973135 +2973136 +2973137 +2973138 +2973139 +2973140 +2973141 +2973142 +2973143 +2973144 +2973145 +2973146 +2973147 +2973148 +2973149 +2973150 +2973151 +2973152 +2973153 +2973154 +2973155 +2973156 +2973157 +2973158 +2973159 +2973160 +2973161 +2973162 +2973163 +2973164 +2973165 +2973166 +2973167 +2973168 +2973169 +2973170 +2973171 +2973172 +2973173 +2973174 +2973175 +2973176 +2973177 +2973178 +2973179 +2973180 +2973181 +2973182 +2973183 +2973184 +2973185 +2973186 +2973187 +2973188 +2973189 +2973190 +2973191 +2973192 +2973193 +2973194 +2973195 +2973196 +2973197 +2973198 +2973199 +2973200 +2973201 +2973202 +2973203 +2973204 +2973205 +2973206 +2973207 +2973208 +2973209 +2973210 +2973211 +2973212 +2973213 +2973214 +2973215 +2973216 +2973217 +2973218 +2973219 +2973220 +2973221 +2973222 +2973223 +2973224 +2973225 +2973226 +2973227 +2973228 +2973229 +2973230 +2973231 +2973232 +2973233 +2973234 +2973235 +2973236 +2973237 +2973238 +2973239 +2973240 +2973241 +2973242 +2973243 +2973244 +2973245 +2973246 +2973247 +2973248 +2973249 +2973250 +2973251 +2973252 +2973253 +2973254 +2973255 +2973256 +2973257 +2973258 +2973259 +2973260 +2973261 +2973262 +2973263 +2973264 +2973265 +2973266 +2973267 +2973268 +2973269 +2973270 +2973271 +2973272 +2973273 +2973274 +2973275 +2973276 +2973277 +2973278 +2973279 +2973280 +2973281 +2973282 +2973283 +2973284 +2973285 +2973286 +2973287 +2973288 +2973289 +2973290 +2973291 +2973292 +2973293 +2973294 +2973295 +2973296 +2973297 +2973298 +2973299 +2973300 +2973301 +2973302 +2973303 +2973304 +2973305 +2973306 +2973307 +2973308 +2973309 +2973310 +2973311 +2973312 +2973313 +2973314 +2973315 +2973316 +2973317 +2973318 +2973319 +2973320 +2973321 +2973322 +2973323 +2973324 +2973325 +2973326 +2973327 +2973328 +2973329 +2973330 +2973331 +2973332 +2973333 +2973334 +2973335 +2973336 +2973337 +2973338 +2973339 +2973340 +2973341 +2973342 +2973343 +2973344 +2973345 +2973346 +2973347 +2973348 +2973349 +2973350 +2973351 +2973352 +2973353 +2973354 +2973355 +2973356 +2973357 +2973358 +2973359 +2973360 +2973361 +2977268 +2977269 +2977270 +2977271 +2977272 +2977273 +2977274 +2977275 +2977276 +2977277 +2977278 +2977279 +2977280 +2977281 +2977282 +2977283 +2977284 +2977285 +2977286 +2977287 +2977288 +2977289 +2977290 +2977291 +2977292 +2977293 +2977294 +2977295 +2977296 +2977297 +2977298 +2977299 +2977300 +2977301 +2977302 +2977303 +2977304 +2977305 +2977306 +2977307 +2977308 +2977309 +2977310 +2977311 +2977312 +2977313 +2977314 +2977315 +2977316 +2977317 +2977318 +2977319 +2977320 +2977321 +2977322 +2977323 +2977324 +2977325 +2977326 +2977327 +2977328 +2977329 +2977330 +2977331 +2977332 +2977333 +2977334 +2977335 +2977336 +2977337 +2977338 +2977339 +2977340 +2977341 +2977342 +2977343 +2977344 +2977345 +2977346 +2977347 +2977348 +2977349 +2977350 +2977351 +2977352 +2977353 +2977354 +2977355 +2977356 +2977357 +2977358 +2977359 +2977360 +2977361 +2977362 +2977363 +2977364 +2977365 +2977366 +2977367 +2977368 +2977369 +2977370 +2977371 +2977372 +2977373 +2977374 +2977375 +2977376 +2977377 +2977378 +2977379 +2977380 +2977381 +2977382 +2977383 +2977384 +2977385 +2977386 +2977387 +2977388 +2977389 +2977390 +2977391 +2977392 +2977393 +2977394 +2977395 +2977396 +2977397 +2977398 +2977399 +2977400 +2977401 +2977402 +2977403 +2977404 +2977405 +2977406 +2977407 +2977408 +2977409 +2977410 +2977411 +2977412 +2977413 +2977414 +2977415 +2977416 +2977417 +2977418 +2977419 +2977420 +2977421 +2977422 +2977423 +2977424 +2977425 +2977426 +2977427 +2977428 +2977429 +2977430 +2977431 +2977432 +2977433 +2977434 +2977435 +2977436 +2977437 +2977438 +2977439 +2977440 +2977441 +2977442 +2977443 +2977444 +2977445 +2977446 +2977447 +2977448 +2977449 +2977450 +2977451 +2977452 +2977453 +2977454 +2977455 +2977456 +2977457 +2977458 +2977459 +2977460 +2977461 +2977462 +2977463 +2977464 +2977465 +2977466 +2977467 +2977468 +2977469 +2977470 +2977471 +2977472 +2977473 +2977474 +2977475 +2977476 +2977477 +2977478 +2977479 +2977480 +2977481 +2977482 +2977483 +2977484 +2977485 +2977486 +2977487 +2977488 +2977489 +2977490 +2977491 +2977492 +2977493 +2977494 +2977495 +2977496 +2977497 +2977498 +2977499 +2977500 +2977501 +2977502 +2977503 +2977504 +2977505 +2977506 +2977507 +2977508 +2977509 +2977510 +2977511 +2977512 +2977513 +2977514 +2977515 +2977516 +2977517 +2977518 +2977519 +2977520 +2977521 +2977522 +2977523 +2977524 +2977525 +2977526 +2977527 +2977528 +2977529 +2977530 +2977531 +2977532 +2977533 +2977534 +2977535 +2977536 +2977537 +2977538 +2977539 +2977540 +2977541 +2977542 +2977543 +2977544 +2977545 +2977546 +2977547 +2977548 +2977549 +2977550 +2977551 +2977552 +2977553 +2977554 +2977555 +2977556 +2977557 +2977558 +2977559 +2977560 +2977561 +2977562 +2977563 +2977564 +2977565 +2977566 +2977567 +2977568 +2977569 +2977570 +2977571 +2977572 +2977573 +2977574 +2977575 +2977576 +2977577 +2977578 +2977579 +2977580 +2977581 +2977582 +2977583 +2977584 +2977585 +2977586 +2977587 +2977588 +2977589 +2977590 +2977591 +2977592 +2977593 +2977594 +2977595 +2977596 +2977597 +2977598 +2977599 +2977600 +2977601 +2977602 +2977603 +2977604 +2977605 +2977606 +2977607 +2977608 +2977609 +2977610 +2977611 +2977612 +2977613 +2977614 +2977615 +2977616 +2977617 +2977618 +2977619 +2977620 +2977621 +2977622 +2977623 +2977624 +2977625 +2977626 +2977627 +2977628 +2977629 +2977630 +2977631 +2977632 +2977633 +2977634 +2977635 +2977636 +2977637 +2977638 +2977639 +2977640 +2977641 +2977642 +2977643 +2977644 +2977645 +2977646 +2977647 +2977648 +2977649 +2977650 +2977651 +2977652 +2977653 +2977654 +2977655 +2977656 +2977657 +2977658 +2977659 +2977660 +2977661 +2977662 +2977663 +2977664 +2977665 +2977666 +2977667 +2977668 +2977669 +2977670 +2977671 +2977672 +2977673 +2977674 +2977675 +2977676 +2981588 +2981589 +2981590 +2981591 +2981592 +2981593 +2981594 +2981595 +2981596 +2981597 +2981598 +2981599 +2981600 +2981601 +2981602 +2981603 +2981604 +2981605 +2981606 +2981607 +2981608 +2981609 +2981610 +2981611 +2981612 +2981613 +2981614 +2981615 +2981616 +2981617 +2981618 +2981619 +2981620 +2981621 +2981622 +2981623 +2981624 +2981625 +2981626 +2981627 +2981628 +2981629 +2981630 +2981631 +2981632 +2981633 +2981634 +2981635 +2981636 +2981637 +2981638 +2981639 +2981640 +2981641 +2981642 +2981643 +2981644 +2981645 +2981646 +2981647 +2981648 +2981649 +2981650 +2981651 +2981652 +2981653 +2981654 +2981655 +2981656 +2981657 +2981658 +2981659 +2981660 +2981661 +2981662 +2981663 +2981664 +2981665 +2981666 +2981667 +2981668 +2981669 +2981670 +2981671 +2981672 +2981673 +2981674 +2981675 +2981676 +2981677 +2981678 +2981679 +2981680 +2981681 +2981682 +2981683 +2981684 +2981685 +2981686 +2981687 +2981688 +2981689 +2981690 +2981691 +2981692 +2981693 +2981694 +2981695 +2981696 +2981697 +2981698 +2981699 +2981700 +2981701 +2981702 +2981703 +2981704 +2981705 +2981706 +2981707 +2981708 +2981709 +2981710 +2981711 +2981712 +2981713 +2981714 +2981715 +2981716 +2981717 +2981718 +2981719 +2981720 +2981721 +2981722 +2981723 +2981724 +2981725 +2981726 +2981727 +2981728 +2981729 +2981730 +2981731 +2981732 +2981733 +2981734 +2981735 +2981736 +2981737 +2981738 +2981739 +2981740 +2981741 +2981742 +2981743 +2981744 +2981745 +2981746 +2981747 +2981748 +2981749 +2981750 +2981751 +2981752 +2981753 +2981754 +2981755 +2981756 +2981757 +2981758 +2981759 +2981760 +2981761 +2981762 +2981763 +2981764 +2981765 +2981766 +2981767 +2981768 +2981769 +2981770 +2981771 +2981772 +2981773 +2981774 +2981775 +2981776 +2981777 +2981778 +2981779 +2981780 +2981781 +2981782 +2981783 +2981784 +2981785 +2981786 +2981787 +2981788 +2981789 +2981790 +2981791 +2981792 +2981793 +2981794 +2981795 +2981796 +2981797 +2981798 +2981799 +2981800 +2981801 +2981802 +2981803 +2981804 +2981805 +2981806 +2981807 +2981808 +2981809 +2981810 +2981811 +2981812 +2981813 +2981814 +2981815 +2981816 +2981817 +2981818 +2981819 +2981820 +2981821 +2981822 +2981823 +2981824 +2981825 +2981826 +2981827 +2981828 +2981829 +2981830 +2981831 +2981832 +2981833 +2981834 +2981835 +2981836 +2981837 +2981838 +2981839 +2981840 +2981841 +2981842 +2981843 +2981844 +2981845 +2981846 +2981847 +2981848 +2981849 +2981850 +2981851 +2981852 +2981853 +2981854 +2981855 +2981856 +2981857 +2981858 +2981859 +2981860 +2981861 +2981862 +2981863 +2981864 +2981865 +2981866 +2981867 +2981868 +2981869 +2981870 +2981871 +2981872 +2981873 +2981874 +2981875 +2981876 +2981877 +2981878 +2981879 +2981880 +2981881 +2981882 +2981883 +2981884 +2981885 +2981886 +2981887 +2981888 +2981889 +2981890 +2981891 +2981892 +2981893 +2981894 +2981895 +2981896 +2981897 +2981898 +2981899 +2981900 +2981901 +2981902 +2981903 +2981904 +2981905 +2981906 +2981907 +2981908 +2981909 +2981910 +2981911 +2981912 +2981913 +2981914 +2981915 +2981916 +2981917 +2981918 +2981919 +2981920 +2981921 +2981922 +2981923 +2981924 +2981925 +2981926 +2981927 +2981928 +2981929 +2981930 +2981931 +2981932 +2981933 +2981934 +2981935 +2981936 +2981937 +2981938 +2981939 +2981940 +2981941 +2981942 +2981943 +2981944 +2981945 +2981946 +2981947 +2981948 +2981949 +2981950 +2981951 +2981952 +2981953 +2981954 +2981955 +2981956 +2981957 +2981958 +2981959 +2981960 +2981961 +2981962 +2981963 +2981964 +2981965 +2981966 +2981967 +2981968 +2981969 +2981970 +2981971 +2981972 +2981973 +2981974 +2981975 +2981976 +2981977 +2981978 +2981979 +2981980 +2981981 +2981982 +2981983 +2981984 +2981985 +2981986 +2981987 +2981988 +2981989 +2981990 +2981991 +2981992 +2981993 +2981994 +2981995 +2981996 +2985908 +2985909 +2985910 +2985911 +2985912 +2985913 +2985914 +2985915 +2985916 +2985917 +2985918 +2985919 +2985920 +2985921 +2985922 +2985923 +2985924 +2985925 +2985926 +2985927 +2985928 +2985929 +2985930 +2985931 +2985932 +2985933 +2985934 +2985935 +2985936 +2985937 +2985938 +2985939 +2985940 +2985941 +2985942 +2985943 +2985944 +2985945 +2985946 +2985947 +2985948 +2985949 +2985950 +2985951 +2985952 +2985953 +2985954 +2985955 +2985956 +2985957 +2985958 +2985959 +2985960 +2985961 +2985962 +2985963 +2985964 +2985965 +2985966 +2985967 +2985968 +2985969 +2985970 +2985971 +2985972 +2985973 +2985974 +2985975 +2985976 +2985977 +2985978 +2985979 +2985980 +2985981 +2985982 +2985983 +2985984 +2985985 +2985986 +2985987 +2985988 +2985989 +2985990 +2985991 +2985992 +2985993 +2985994 +2985995 +2985996 +2985997 +2985998 +2985999 +2986000 +2986001 +2986002 +2986003 +2986004 +2986005 +2986006 +2986007 +2986008 +2986009 +2986010 +2986011 +2986012 +2986013 +2986014 +2986015 +2986016 +2986017 +2986018 +2986019 +2986020 +2986021 +2986022 +2986023 +2986024 +2986025 +2986026 +2986027 +2986028 +2986029 +2986030 +2986031 +2986032 +2986033 +2986034 +2986035 +2986036 +2986037 +2986038 +2986039 +2986040 +2986041 +2986042 +2986043 +2986044 +2986045 +2986046 +2986047 +2986048 +2986049 +2986050 +2986051 +2986052 +2986053 +2986054 +2986055 +2986056 +2986057 +2986058 +2986059 +2986060 +2986061 +2986062 +2986063 +2986064 +2986065 +2986066 +2986067 +2986068 +2986069 +2986070 +2986071 +2986072 +2986073 +2986074 +2986075 +2986076 +2986077 +2986078 +2986079 +2986080 +2986081 +2986082 +2986083 +2986084 +2986085 +2986086 +2986087 +2986088 +2986089 +2986090 +2986091 +2986092 +2986093 +2986094 +2986095 +2986096 +2986097 +2986098 +2986099 +2986100 +2986101 +2986102 +2986103 +2986104 +2986105 +2986106 +2986107 +2986108 +2986109 +2986110 +2986111 +2986112 +2986113 +2986114 +2986115 +2986116 +2986117 +2986118 +2986119 +2986120 +2986121 +2986122 +2986123 +2986124 +2986125 +2986126 +2986127 +2986128 +2986129 +2986130 +2986131 +2986132 +2986133 +2986134 +2986135 +2986136 +2986137 +2986138 +2986139 +2986140 +2986141 +2986142 +2986143 +2986144 +2986145 +2986146 +2986147 +2986148 +2986149 +2986150 +2986151 +2986152 +2986153 +2986154 +2986155 +2986156 +2986157 +2986158 +2986159 +2986160 +2986161 +2986162 +2986163 +2986164 +2986165 +2986166 +2986167 +2986168 +2986169 +2986170 +2986171 +2986172 +2986173 +2986174 +2986175 +2986176 +2986177 +2986178 +2986179 +2986180 +2986181 +2986182 +2986183 +2986184 +2986185 +2986186 +2986187 +2986188 +2986189 +2986190 +2986191 +2986192 +2986193 +2986194 +2986195 +2986196 +2986197 +2986198 +2986199 +2986200 +2986201 +2986202 +2986203 +2986204 +2986205 +2986206 +2986207 +2986208 +2986209 +2986210 +2986211 +2986212 +2986213 +2986214 +2986215 +2986216 +2986217 +2986218 +2986219 +2986220 +2986221 +2986222 +2986223 +2986224 +2986225 +2986226 +2986227 +2986228 +2986229 +2986230 +2986231 +2986232 +2986233 +2986234 +2986235 +2986236 +2986237 +2986238 +2986239 +2986240 +2986241 +2986242 +2986243 +2986244 +2986245 +2986246 +2986247 +2986248 +2986249 +2986250 +2986251 +2986252 +2986253 +2986254 +2986255 +2986256 +2986257 +2986258 +2986259 +2986260 +2986261 +2986262 +2986263 +2986264 +2986265 +2986266 +2986267 +2986268 +2986269 +2986270 +2986271 +2986272 +2986273 +2986274 +2986275 +2986276 +2986277 +2986278 +2986279 +2986280 +2986281 +2986282 +2986283 +2986284 +2986285 +2986286 +2986287 +2986288 +2986289 +2986290 +2986291 +2986292 +2986293 +2986294 +2986295 +2986296 +2986297 +2986298 +2986299 +2986300 +2986301 +2986302 +2986303 +2986304 +2986305 +2986306 +2986307 +2986308 +2986309 +2986310 +2986311 +2986312 +2986313 +2986314 +2986315 +2990240 +2990241 +2990242 +2990243 +2990244 +2990245 +2990246 +2990247 +2990248 +2990249 +2990250 +2990251 +2990252 +2990253 +2990254 +2990255 +2990256 +2990257 +2990258 +2990259 +2990260 +2990261 +2990262 +2990263 +2990264 +2990265 +2990266 +2990267 +2990268 +2990269 +2990270 +2990271 +2990272 +2990273 +2990274 +2990275 +2990276 +2990277 +2990278 +2990279 +2990280 +2990281 +2990282 +2990283 +2990284 +2990285 +2990286 +2990287 +2990288 +2990289 +2990290 +2990291 +2990292 +2990293 +2990294 +2990295 +2990296 +2990297 +2990298 +2990299 +2990300 +2990301 +2990302 +2990303 +2990304 +2990305 +2990306 +2990307 +2990308 +2990309 +2990310 +2990311 +2990312 +2990313 +2990314 +2990315 +2990316 +2990317 +2990318 +2990319 +2990320 +2990321 +2990322 +2990323 +2990324 +2990325 +2990326 +2990327 +2990328 +2990329 +2990330 +2990331 +2990332 +2990333 +2990334 +2990335 +2990336 +2990337 +2990338 +2990339 +2990340 +2990341 +2990342 +2990343 +2990344 +2990345 +2990346 +2990347 +2990348 +2990349 +2990350 +2990351 +2990352 +2990353 +2990354 +2990355 +2990356 +2990357 +2990358 +2990359 +2990360 +2990361 +2990362 +2990363 +2990364 +2990365 +2990366 +2990367 +2990368 +2990369 +2990370 +2990371 +2990372 +2990373 +2990374 +2990375 +2990376 +2990377 +2990378 +2990379 +2990380 +2990381 +2990382 +2990383 +2990384 +2990385 +2990386 +2990387 +2990388 +2990389 +2990390 +2990391 +2990392 +2990393 +2990394 +2990395 +2990396 +2990397 +2990398 +2990399 +2990400 +2990401 +2990402 +2990403 +2990404 +2990405 +2990406 +2990407 +2990408 +2990409 +2990410 +2990411 +2990412 +2990413 +2990414 +2990415 +2990416 +2990417 +2990418 +2990419 +2990420 +2990421 +2990422 +2990423 +2990424 +2990425 +2990426 +2990427 +2990428 +2990429 +2990430 +2990431 +2990432 +2990433 +2990434 +2990435 +2990436 +2990437 +2990438 +2990439 +2990440 +2990441 +2990442 +2990443 +2990444 +2990445 +2990446 +2990447 +2990448 +2990449 +2990450 +2990451 +2990452 +2990453 +2990454 +2990455 +2990456 +2990457 +2990458 +2990459 +2990460 +2990461 +2990462 +2990463 +2990464 +2990465 +2990466 +2990467 +2990468 +2990469 +2990470 +2990471 +2990472 +2990473 +2990474 +2990475 +2990476 +2990477 +2990478 +2990479 +2990480 +2990481 +2990482 +2990483 +2990484 +2990485 +2990486 +2990487 +2990488 +2990489 +2990490 +2990491 +2990492 +2990493 +2990494 +2990495 +2990496 +2990497 +2990498 +2990499 +2990500 +2990501 +2990502 +2990503 +2990504 +2990505 +2990506 +2990507 +2990508 +2990509 +2990510 +2990511 +2990512 +2990513 +2990514 +2990515 +2990516 +2990517 +2990518 +2990519 +2990520 +2990521 +2990522 +2990523 +2990524 +2990525 +2990526 +2990527 +2990528 +2990529 +2990530 +2990531 +2990532 +2990533 +2990534 +2990535 +2990536 +2990537 +2990538 +2990539 +2990540 +2990541 +2990542 +2990543 +2990544 +2990545 +2990546 +2990547 +2990548 +2990549 +2990550 +2990551 +2990552 +2990553 +2990554 +2990555 +2990556 +2990557 +2990558 +2990559 +2990560 +2990561 +2990562 +2990563 +2990564 +2990565 +2990566 +2990567 +2990568 +2990569 +2990570 +2990571 +2990572 +2990573 +2990574 +2990575 +2990576 +2990577 +2990578 +2990579 +2990580 +2990581 +2990582 +2990583 +2990584 +2990585 +2990586 +2990587 +2990588 +2990589 +2990590 +2990591 +2990592 +2990593 +2990594 +2990595 +2990596 +2990597 +2990598 +2990599 +2990600 +2990601 +2990602 +2990603 +2990604 +2990605 +2990606 +2990607 +2990608 +2990609 +2990610 +2990611 +2990612 +2990613 +2990614 +2990615 +2990616 +2990617 +2990618 +2990619 +2990620 +2990621 +2990622 +2990623 +2990624 +2990625 +2990626 +2990627 +2990628 +2990629 +2990630 +2990631 +2990632 +2990633 +2994560 +2994561 +2994562 +2994563 +2994564 +2994565 +2994566 +2994567 +2994568 +2994569 +2994570 +2994571 +2994572 +2994573 +2994574 +2994575 +2994576 +2994577 +2994578 +2994579 +2994580 +2994581 +2994582 +2994583 +2994584 +2994585 +2994586 +2994587 +2994588 +2994589 +2994590 +2994591 +2994592 +2994593 +2994594 +2994595 +2994596 +2994597 +2994598 +2994599 +2994600 +2994601 +2994602 +2994603 +2994604 +2994605 +2994606 +2994607 +2994608 +2994609 +2994610 +2994611 +2994612 +2994613 +2994614 +2994615 +2994616 +2994617 +2994618 +2994619 +2994620 +2994621 +2994622 +2994623 +2994624 +2994625 +2994626 +2994627 +2994628 +2994629 +2994630 +2994631 +2994632 +2994633 +2994634 +2994635 +2994636 +2994637 +2994638 +2994639 +2994640 +2994641 +2994642 +2994643 +2994644 +2994645 +2994646 +2994647 +2994648 +2994649 +2994650 +2994651 +2994652 +2994653 +2994654 +2994655 +2994656 +2994657 +2994658 +2994659 +2994660 +2994661 +2994662 +2994663 +2994664 +2994665 +2994666 +2994667 +2994668 +2994669 +2994670 +2994671 +2994672 +2994673 +2994674 +2994675 +2994676 +2994677 +2994678 +2994679 +2994680 +2994681 +2994682 +2994683 +2994684 +2994685 +2994686 +2994687 +2994688 +2994689 +2994690 +2994691 +2994692 +2994693 +2994694 +2994695 +2994696 +2994697 +2994698 +2994699 +2994700 +2994701 +2994702 +2994703 +2994704 +2994705 +2994706 +2994707 +2994708 +2994709 +2994710 +2994711 +2994712 +2994713 +2994714 +2994715 +2994716 +2994717 +2994718 +2994719 +2994720 +2994721 +2994722 +2994723 +2994724 +2994725 +2994726 +2994727 +2994728 +2994729 +2994730 +2994731 +2994732 +2994733 +2994734 +2994735 +2994736 +2994737 +2994738 +2994739 +2994740 +2994741 +2994742 +2994743 +2994744 +2994745 +2994746 +2994747 +2994748 +2994749 +2994750 +2994751 +2994752 +2994753 +2994754 +2994755 +2994756 +2994757 +2994758 +2994759 +2994760 +2994761 +2994762 +2994763 +2994764 +2994765 +2994766 +2994767 +2994768 +2994769 +2994770 +2994771 +2994772 +2994773 +2994774 +2994775 +2994776 +2994777 +2994778 +2994779 +2994780 +2994781 +2994782 +2994783 +2994784 +2994785 +2994786 +2994787 +2994788 +2994789 +2994790 +2994791 +2994792 +2994793 +2994794 +2994795 +2994796 +2994797 +2994798 +2994799 +2994800 +2994801 +2994802 +2994803 +2994804 +2994805 +2994806 +2994807 +2994808 +2994809 +2994810 +2994811 +2994812 +2994813 +2994814 +2994815 +2994816 +2994817 +2994818 +2994819 +2994820 +2994821 +2994822 +2994823 +2994824 +2994825 +2994826 +2994827 +2994828 +2994829 +2994830 +2994831 +2994832 +2994833 +2994834 +2994835 +2994836 +2994837 +2994838 +2994839 +2994840 +2994841 +2994842 +2994843 +2994844 +2994845 +2994846 +2994847 +2994848 +2994849 +2994850 +2994851 +2994852 +2994853 +2994854 +2994855 +2994856 +2994857 +2994858 +2994859 +2994860 +2994861 +2994862 +2994863 +2994864 +2994865 +2994866 +2994867 +2994868 +2994869 +2994870 +2994871 +2994872 +2994873 +2994874 +2994875 +2994876 +2994877 +2994878 +2994879 +2994880 +2994881 +2994882 +2994883 +2994884 +2994885 +2994886 +2994887 +2994888 +2994889 +2994890 +2994891 +2994892 +2994893 +2994894 +2994895 +2994896 +2994897 +2994898 +2994899 +2994900 +2994901 +2994902 +2994903 +2994904 +2994905 +2994906 +2994907 +2994908 +2994909 +2994910 +2994911 +2994912 +2994913 +2994914 +2994915 +2994916 +2994917 +2994918 +2994919 +2994920 +2994921 +2994922 +2994923 +2994924 +2994925 +2994926 +2994927 +2994928 +2994929 +2994930 +2994931 +2994932 +2994933 +2994934 +2994935 +2994936 +2994937 +2994938 +2994939 +2994940 +2994941 +2994942 +2994943 +2994944 +2994945 +2994946 +2994947 +2994948 +2994949 +2994950 +2994951 +2994952 +2998880 +2998881 +2998882 +2998883 +2998884 +2998885 +2998886 +2998887 +2998888 +2998889 +2998890 +2998891 +2998892 +2998893 +2998894 +2998895 +2998896 +2998897 +2998898 +2998899 +2998900 +2998901 +2998902 +2998903 +2998904 +2998905 +2998906 +2998907 +2998908 +2998909 +2998910 +2998911 +2998912 +2998913 +2998914 +2998915 +2998916 +2998917 +2998918 +2998919 +2998920 +2998921 +2998922 +2998923 +2998924 +2998925 +2998926 +2998927 +2998928 +2998929 +2998930 +2998931 +2998932 +2998933 +2998934 +2998935 +2998936 +2998937 +2998938 +2998939 +2998940 +2998941 +2998942 +2998943 +2998944 +2998945 +2998946 +2998947 +2998948 +2998949 +2998950 +2998951 +2998952 +2998953 +2998954 +2998955 +2998956 +2998957 +2998958 +2998959 +2998960 +2998961 +2998962 +2998963 +2998964 +2998965 +2998966 +2998967 +2998968 +2998969 +2998970 +2998971 +2998972 +2998973 +2998974 +2998975 +2998976 +2998977 +2998978 +2998979 +2998980 +2998981 +2998982 +2998983 +2998984 +2998985 +2998986 +2998987 +2998988 +2998989 +2998990 +2998991 +2998992 +2998993 +2998994 +2998995 +2998996 +2998997 +2998998 +2998999 +2999000 +2999001 +2999002 +2999003 +2999004 +2999005 +2999006 +2999007 +2999008 +2999009 +2999010 +2999011 +2999012 +2999013 +2999014 +2999015 +2999016 +2999017 +2999018 +2999019 +2999020 +2999021 +2999022 +2999023 +2999024 +2999025 +2999026 +2999027 +2999028 +2999029 +2999030 +2999031 +2999032 +2999033 +2999034 +2999035 +2999036 +2999037 +2999038 +2999039 +2999040 +2999041 +2999042 +2999043 +2999044 +2999045 +2999046 +2999047 +2999048 +2999049 +2999050 +2999051 +2999052 +2999053 +2999054 +2999055 +2999056 +2999057 +2999058 +2999059 +2999060 +2999061 +2999062 +2999063 +2999064 +2999065 +2999066 +2999067 +2999068 +2999069 +2999070 +2999071 +2999072 +2999073 +2999074 +2999075 +2999076 +2999077 +2999078 +2999079 +2999080 +2999081 +2999082 +2999083 +2999084 +2999085 +2999086 +2999087 +2999088 +2999089 +2999090 +2999091 +2999092 +2999093 +2999094 +2999095 +2999096 +2999097 +2999098 +2999099 +2999100 +2999101 +2999102 +2999103 +2999104 +2999105 +2999106 +2999107 +2999108 +2999109 +2999110 +2999111 +2999112 +2999113 +2999114 +2999115 +2999116 +2999117 +2999118 +2999119 +2999120 +2999121 +2999122 +2999123 +2999124 +2999125 +2999126 +2999127 +2999128 +2999129 +2999130 +2999131 +2999132 +2999133 +2999134 +2999135 +2999136 +2999137 +2999138 +2999139 +2999140 +2999141 +2999142 +2999143 +2999144 +2999145 +2999146 +2999147 +2999148 +2999149 +2999150 +2999151 +2999152 +2999153 +2999154 +2999155 +2999156 +2999157 +2999158 +2999159 +2999160 +2999161 +2999162 +2999163 +2999164 +2999165 +2999166 +2999167 +2999168 +2999169 +2999170 +2999171 +2999172 +2999173 +2999174 +2999175 +2999176 +2999177 +2999178 +2999179 +2999180 +2999181 +2999182 +2999183 +2999184 +2999185 +2999186 +2999187 +2999188 +2999189 +2999190 +2999191 +2999192 +2999193 +2999194 +2999195 +2999196 +2999197 +2999198 +2999199 +2999200 +2999201 +2999202 +2999203 +2999204 +2999205 +2999206 +2999207 +2999208 +2999209 +2999210 +2999211 +2999212 +2999213 +2999214 +2999215 +2999216 +2999217 +2999218 +2999219 +2999220 +2999221 +2999222 +2999223 +2999224 +2999225 +2999226 +2999227 +2999228 +2999229 +2999230 +2999231 +2999232 +2999233 +2999234 +2999235 +2999236 +2999237 +2999238 +2999239 +2999240 +2999241 +2999242 +2999243 +2999244 +2999245 +2999246 +2999247 +2999248 +2999249 +2999250 +2999251 +2999252 +2999253 +2999254 +2999255 +2999256 +2999257 +2999258 +2999259 +2999260 +2999261 +2999262 +2999263 +2999264 +2999265 +2999266 +2999267 +2999268 +2999269 +2999270 +2999271 +2999272 +3003209 +3003210 +3003211 +3003212 +3003213 +3003214 +3003215 +3003216 +3003217 +3003218 +3003219 +3003220 +3003221 +3003222 +3003223 +3003224 +3003225 +3003226 +3003227 +3003228 +3003229 +3003230 +3003231 +3003232 +3003233 +3003234 +3003235 +3003236 +3003237 +3003238 +3003239 +3003240 +3003241 +3003242 +3003243 +3003244 +3003245 +3003246 +3003247 +3003248 +3003249 +3003250 +3003251 +3003252 +3003253 +3003254 +3003255 +3003256 +3003257 +3003258 +3003259 +3003260 +3003261 +3003262 +3003263 +3003264 +3003265 +3003266 +3003267 +3003268 +3003269 +3003270 +3003271 +3003272 +3003273 +3003274 +3003275 +3003276 +3003277 +3003278 +3003279 +3003280 +3003281 +3003282 +3003283 +3003284 +3003285 +3003286 +3003287 +3003288 +3003289 +3003290 +3003291 +3003292 +3003293 +3003294 +3003295 +3003296 +3003297 +3003298 +3003299 +3003300 +3003301 +3003302 +3003303 +3003304 +3003305 +3003306 +3003307 +3003308 +3003309 +3003310 +3003311 +3003312 +3003313 +3003314 +3003315 +3003316 +3003317 +3003318 +3003319 +3003320 +3003321 +3003322 +3003323 +3003324 +3003325 +3003326 +3003327 +3003328 +3003329 +3003330 +3003331 +3003332 +3003333 +3003334 +3003335 +3003336 +3003337 +3003338 +3003339 +3003340 +3003341 +3003342 +3003343 +3003344 +3003345 +3003346 +3003347 +3003348 +3003349 +3003350 +3003351 +3003352 +3003353 +3003354 +3003355 +3003356 +3003357 +3003358 +3003359 +3003360 +3003361 +3003362 +3003363 +3003364 +3003365 +3003366 +3003367 +3003368 +3003369 +3003370 +3003371 +3003372 +3003373 +3003374 +3003375 +3003376 +3003377 +3003378 +3003379 +3003380 +3003381 +3003382 +3003383 +3003384 +3003385 +3003386 +3003387 +3003388 +3003389 +3003390 +3003391 +3003392 +3003393 +3003394 +3003395 +3003396 +3003397 +3003398 +3003399 +3003400 +3003401 +3003402 +3003403 +3003404 +3003405 +3003406 +3003407 +3003408 +3003409 +3003410 +3003411 +3003412 +3003413 +3003414 +3003415 +3003416 +3003417 +3003418 +3003419 +3003420 +3003421 +3003422 +3003423 +3003424 +3003425 +3003426 +3003427 +3003428 +3003429 +3003430 +3003431 +3003432 +3003433 +3003434 +3003435 +3003436 +3003437 +3003438 +3003439 +3003440 +3003441 +3003442 +3003443 +3003444 +3003445 +3003446 +3003447 +3003448 +3003449 +3003450 +3003451 +3003452 +3003453 +3003454 +3003455 +3003456 +3003457 +3003458 +3003459 +3003460 +3003461 +3003462 +3003463 +3003464 +3003465 +3003466 +3003467 +3003468 +3003469 +3003470 +3003471 +3003472 +3003473 +3003474 +3003475 +3003476 +3003477 +3003478 +3003479 +3003480 +3003481 +3003482 +3003483 +3003484 +3003485 +3003486 +3003487 +3003488 +3003489 +3003490 +3003491 +3003492 +3003493 +3003494 +3003495 +3003496 +3003497 +3003498 +3003499 +3003500 +3003501 +3003502 +3003503 +3003504 +3003505 +3003506 +3003507 +3003508 +3003509 +3003510 +3003511 +3003512 +3003513 +3003514 +3003515 +3003516 +3003517 +3003518 +3003519 +3003520 +3003521 +3003522 +3003523 +3003524 +3003525 +3003526 +3003527 +3003528 +3003529 +3003530 +3003531 +3003532 +3003533 +3003534 +3003535 +3003536 +3003537 +3003538 +3003539 +3003540 +3003541 +3003542 +3003543 +3003544 +3003545 +3003546 +3003547 +3003548 +3003549 +3003550 +3003551 +3003552 +3003553 +3003554 +3003555 +3003556 +3003557 +3003558 +3003559 +3003560 +3003561 +3003562 +3003563 +3003564 +3003565 +3003566 +3003567 +3003568 +3003569 +3003570 +3003571 +3003572 +3003573 +3003574 +3003575 +3003576 +3003577 +3003578 +3003579 +3003580 +3003581 +3003582 +3003583 +3003584 +3003585 +3003586 +3003587 +3003588 +3003589 +3003590 +3007529 +3007530 +3007531 +3007532 +3007533 +3007534 +3007535 +3007536 +3007537 +3007538 +3007539 +3007540 +3007541 +3007542 +3007543 +3007544 +3007545 +3007546 +3007547 +3007548 +3007549 +3007550 +3007551 +3007552 +3007553 +3007554 +3007555 +3007556 +3007557 +3007558 +3007559 +3007560 +3007561 +3007562 +3007563 +3007564 +3007565 +3007566 +3007567 +3007568 +3007569 +3007570 +3007571 +3007572 +3007573 +3007574 +3007575 +3007576 +3007577 +3007578 +3007579 +3007580 +3007581 +3007582 +3007583 +3007584 +3007585 +3007586 +3007587 +3007588 +3007589 +3007590 +3007591 +3007592 +3007593 +3007594 +3007595 +3007596 +3007597 +3007598 +3007599 +3007600 +3007601 +3007602 +3007603 +3007604 +3007605 +3007606 +3007607 +3007608 +3007609 +3007610 +3007611 +3007612 +3007613 +3007614 +3007615 +3007616 +3007617 +3007618 +3007619 +3007620 +3007621 +3007622 +3007623 +3007624 +3007625 +3007626 +3007627 +3007628 +3007629 +3007630 +3007631 +3007632 +3007633 +3007634 +3007635 +3007636 +3007637 +3007638 +3007639 +3007640 +3007641 +3007642 +3007643 +3007644 +3007645 +3007646 +3007647 +3007648 +3007649 +3007650 +3007651 +3007652 +3007653 +3007654 +3007655 +3007656 +3007657 +3007658 +3007659 +3007660 +3007661 +3007662 +3007663 +3007664 +3007665 +3007666 +3007667 +3007668 +3007669 +3007670 +3007671 +3007672 +3007673 +3007674 +3007675 +3007676 +3007677 +3007678 +3007679 +3007680 +3007681 +3007682 +3007683 +3007684 +3007685 +3007686 +3007687 +3007688 +3007689 +3007690 +3007691 +3007692 +3007693 +3007694 +3007695 +3007696 +3007697 +3007698 +3007699 +3007700 +3007701 +3007702 +3007703 +3007704 +3007705 +3007706 +3007707 +3007708 +3007709 +3007710 +3007711 +3007712 +3007713 +3007714 +3007715 +3007716 +3007717 +3007718 +3007719 +3007720 +3007721 +3007722 +3007723 +3007724 +3007725 +3007726 +3007727 +3007728 +3007729 +3007730 +3007731 +3007732 +3007733 +3007734 +3007735 +3007736 +3007737 +3007738 +3007739 +3007740 +3007741 +3007742 +3007743 +3007744 +3007745 +3007746 +3007747 +3007748 +3007749 +3007750 +3007751 +3007752 +3007753 +3007754 +3007755 +3007756 +3007757 +3007758 +3007759 +3007760 +3007761 +3007762 +3007763 +3007764 +3007765 +3007766 +3007767 +3007768 +3007769 +3007770 +3007771 +3007772 +3007773 +3007774 +3007775 +3007776 +3007777 +3007778 +3007779 +3007780 +3007781 +3007782 +3007783 +3007784 +3007785 +3007786 +3007787 +3007788 +3007789 +3007790 +3007791 +3007792 +3007793 +3007794 +3007795 +3007796 +3007797 +3007798 +3007799 +3007800 +3007801 +3007802 +3007803 +3007804 +3007805 +3007806 +3007807 +3007808 +3007809 +3007810 +3007811 +3007812 +3007813 +3007814 +3007815 +3007816 +3007817 +3007818 +3007819 +3007820 +3007821 +3007822 +3007823 +3007824 +3007825 +3007826 +3007827 +3007828 +3007829 +3007830 +3007831 +3007832 +3007833 +3007834 +3007835 +3007836 +3007837 +3007838 +3007839 +3007840 +3007841 +3007842 +3007843 +3007844 +3007845 +3007846 +3007847 +3007848 +3007849 +3007850 +3007851 +3007852 +3007853 +3007854 +3007855 +3007856 +3007857 +3007858 +3007859 +3007860 +3007861 +3007862 +3007863 +3007864 +3007865 +3007866 +3007867 +3007868 +3007869 +3007870 +3007871 +3007872 +3007873 +3007874 +3007875 +3007876 +3007877 +3007878 +3007879 +3007880 +3007881 +3007882 +3007883 +3007884 +3007885 +3007886 +3007887 +3007888 +3007889 +3007890 +3007891 +3007892 +3007893 +3007894 +3007895 +3007896 +3007897 +3007898 +3007899 +3007900 +3007901 +3007902 +3007903 +3007904 +3007905 +3007906 +3007907 +3007908 +3007909 +3007910 +3011849 +3011850 +3011851 +3011852 +3011853 +3011854 +3011855 +3011856 +3011857 +3011858 +3011859 +3011860 +3011861 +3011862 +3011863 +3011864 +3011865 +3011866 +3011867 +3011868 +3011869 +3011870 +3011871 +3011872 +3011873 +3011874 +3011875 +3011876 +3011877 +3011878 +3011879 +3011880 +3011881 +3011882 +3011883 +3011884 +3011885 +3011886 +3011887 +3011888 +3011889 +3011890 +3011891 +3011892 +3011893 +3011894 +3011895 +3011896 +3011897 +3011898 +3011899 +3011900 +3011901 +3011902 +3011903 +3011904 +3011905 +3011906 +3011907 +3011908 +3011909 +3011910 +3011911 +3011912 +3011913 +3011914 +3011915 +3011916 +3011917 +3011918 +3011919 +3011920 +3011921 +3011922 +3011923 +3011924 +3011925 +3011926 +3011927 +3011928 +3011929 +3011930 +3011931 +3011932 +3011933 +3011934 +3011935 +3011936 +3011937 +3011938 +3011939 +3011940 +3011941 +3011942 +3011943 +3011944 +3011945 +3011946 +3011947 +3011948 +3011949 +3011950 +3011951 +3011952 +3011953 +3011954 +3011955 +3011956 +3011957 +3011958 +3011959 +3011960 +3011961 +3011962 +3011963 +3011964 +3011965 +3011966 +3011967 +3011968 +3011969 +3011970 +3011971 +3011972 +3011973 +3011974 +3011975 +3011976 +3011977 +3011978 +3011979 +3011980 +3011981 +3011982 +3011983 +3011984 +3011985 +3011986 +3011987 +3011988 +3011989 +3011990 +3011991 +3011992 +3011993 +3011994 +3011995 +3011996 +3011997 +3011998 +3011999 +3012000 +3012001 +3012002 +3012003 +3012004 +3012005 +3012006 +3012007 +3012008 +3012009 +3012010 +3012011 +3012012 +3012013 +3012014 +3012015 +3012016 +3012017 +3012018 +3012019 +3012020 +3012021 +3012022 +3012023 +3012024 +3012025 +3012026 +3012027 +3012028 +3012029 +3012030 +3012031 +3012032 +3012033 +3012034 +3012035 +3012036 +3012037 +3012038 +3012039 +3012040 +3012041 +3012042 +3012043 +3012044 +3012045 +3012046 +3012047 +3012048 +3012049 +3012050 +3012051 +3012052 +3012053 +3012054 +3012055 +3012056 +3012057 +3012058 +3012059 +3012060 +3012061 +3012062 +3012063 +3012064 +3012065 +3012066 +3012067 +3012068 +3012069 +3012070 +3012071 +3012072 +3012073 +3012074 +3012075 +3012076 +3012077 +3012078 +3012079 +3012080 +3012081 +3012082 +3012083 +3012084 +3012085 +3012086 +3012087 +3012088 +3012089 +3012090 +3012091 +3012092 +3012093 +3012094 +3012095 +3012096 +3012097 +3012098 +3012099 +3012100 +3012101 +3012102 +3012103 +3012104 +3012105 +3012106 +3012107 +3012108 +3012109 +3012110 +3012111 +3012112 +3012113 +3012114 +3012115 +3012116 +3012117 +3012118 +3012119 +3012120 +3012121 +3012122 +3012123 +3012124 +3012125 +3012126 +3012127 +3012128 +3012129 +3012130 +3012131 +3012132 +3012133 +3012134 +3012135 +3012136 +3012137 +3012138 +3012139 +3012140 +3012141 +3012142 +3012143 +3012144 +3012145 +3012146 +3012147 +3012148 +3012149 +3012150 +3012151 +3012152 +3012153 +3012154 +3012155 +3012156 +3012157 +3012158 +3012159 +3012160 +3012161 +3012162 +3012163 +3012164 +3012165 +3012166 +3012167 +3012168 +3012169 +3012170 +3012171 +3012172 +3012173 +3012174 +3012175 +3012176 +3012177 +3012178 +3012179 +3012180 +3012181 +3012182 +3012183 +3012184 +3012185 +3012186 +3012187 +3012188 +3012189 +3012190 +3012191 +3012192 +3012193 +3012194 +3012195 +3012196 +3012197 +3012198 +3012199 +3012200 +3012201 +3012202 +3012203 +3012204 +3012205 +3012206 +3012207 +3012208 +3012209 +3012210 +3012211 +3012212 +3012213 +3012214 +3012215 +3012216 +3012217 +3012218 +3012219 +3012220 +3012221 +3012222 +3012223 +3012224 +3012225 +3012226 +3012227 +3012228 +3012229 +3016178 +3016179 +3016180 +3016181 +3016182 +3016183 +3016184 +3016185 +3016186 +3016187 +3016188 +3016189 +3016190 +3016191 +3016192 +3016193 +3016194 +3016195 +3016196 +3016197 +3016198 +3016199 +3016200 +3016201 +3016202 +3016203 +3016204 +3016205 +3016206 +3016207 +3016208 +3016209 +3016210 +3016211 +3016212 +3016213 +3016214 +3016215 +3016216 +3016217 +3016218 +3016219 +3016220 +3016247 +3016248 +3016249 +3016250 +3016251 +3016252 +3016253 +3016254 +3016255 +3016256 +3016257 +3016258 +3016259 +3016260 +3016261 +3016262 +3016263 +3016264 +3016265 +3016266 +3016267 +3016268 +3016269 +3016270 +3016271 +3016272 +3016273 +3016274 +3016275 +3016276 +3016277 +3016278 +3016279 +3016280 +3016281 +3016282 +3016283 +3016284 +3016285 +3016286 +3016287 +3016288 +3016289 +3016290 +3016291 +3016292 +3016293 +3016294 +3016295 +3016296 +3016297 +3016298 +3016299 +3016300 +3016301 +3016302 +3016303 +3016304 +3016305 +3016306 +3016307 +3016308 +3016309 +3016310 +3016311 +3016312 +3016313 +3016314 +3016315 +3016316 +3016317 +3016318 +3016319 +3016320 +3016321 +3016322 +3016323 +3016324 +3016325 +3016326 +3016327 +3016328 +3016329 +3016330 +3016331 +3016332 +3016333 +3016334 +3016335 +3016336 +3016337 +3016338 +3016339 +3016340 +3016341 +3016342 +3016343 +3016344 +3016345 +3016346 +3016347 +3016348 +3016349 +3016350 +3016351 +3016352 +3016353 +3016354 +3016355 +3016356 +3016357 +3016358 +3016359 +3016360 +3016361 +3016362 +3016363 +3016364 +3016365 +3016366 +3016367 +3016368 +3016369 +3016370 +3016371 +3016372 +3016373 +3016374 +3016375 +3016376 +3016377 +3016378 +3016379 +3016380 +3016381 +3016382 +3016383 +3016384 +3016385 +3016386 +3016387 +3016388 +3016389 +3016390 +3016391 +3016392 +3016393 +3016394 +3016395 +3016396 +3016397 +3016398 +3016399 +3016400 +3016401 +3016402 +3016403 +3016404 +3016405 +3016406 +3016407 +3016408 +3016409 +3016410 +3016411 +3016412 +3016413 +3016414 +3016415 +3016416 +3016417 +3016418 +3016419 +3016420 +3016421 +3016422 +3016423 +3016424 +3016425 +3016426 +3016427 +3016428 +3016429 +3016430 +3016431 +3016432 +3016433 +3016434 +3016435 +3016436 +3016437 +3016438 +3016439 +3016440 +3016441 +3016442 +3016443 +3016444 +3016445 +3016446 +3016447 +3016448 +3016449 +3016450 +3016451 +3016452 +3016453 +3016454 +3016455 +3016456 +3016457 +3016458 +3016459 +3016460 +3016461 +3016462 +3016463 +3016464 +3016465 +3016466 +3016467 +3016468 +3016469 +3016470 +3016471 +3016472 +3016473 +3016474 +3016475 +3016476 +3016477 +3016478 +3016479 +3016480 +3016481 +3016482 +3016483 +3016484 +3016485 +3016486 +3016487 +3016488 +3016489 +3016490 +3016491 +3016492 +3016493 +3016494 +3016495 +3016496 +3016497 +3016498 +3016499 +3016500 +3016501 +3016502 +3016503 +3016504 +3016505 +3016506 +3016507 +3016508 +3016509 +3016510 +3016511 +3016512 +3016513 +3016514 +3016515 +3016516 +3016517 +3016518 +3016519 +3016520 +3016521 +3016522 +3016523 +3016524 +3016525 +3016526 +3016527 +3016528 +3016529 +3016530 +3016531 +3016532 +3016533 +3016534 +3016535 +3016536 +3016537 +3016538 +3016539 +3016540 +3016541 +3016542 +3016543 +3016544 +3016545 +3016546 +3016547 +3020498 +3020499 +3020500 +3020501 +3020502 +3020503 +3020504 +3020505 +3020506 +3020507 +3020508 +3020509 +3020510 +3020511 +3020512 +3020513 +3020514 +3020515 +3020516 +3020517 +3020518 +3020519 +3020520 +3020521 +3020522 +3020523 +3020524 +3020525 +3020526 +3020527 +3020528 +3020529 +3020530 +3020531 +3020532 +3020533 +3020534 +3020535 +3020536 +3020537 +3020538 +3020539 +3020540 +3020567 +3020568 +3020569 +3020570 +3020571 +3020572 +3020573 +3020574 +3020575 +3020576 +3020577 +3020578 +3020579 +3020580 +3020581 +3020582 +3020583 +3020584 +3020585 +3020586 +3020587 +3020588 +3020589 +3020590 +3020591 +3020592 +3020593 +3020594 +3020595 +3020596 +3020597 +3020598 +3020599 +3020600 +3020601 +3020602 +3020603 +3020604 +3020605 +3020606 +3020607 +3020608 +3020609 +3020610 +3020611 +3020612 +3020613 +3020614 +3020615 +3020616 +3020617 +3020618 +3020619 +3020620 +3020621 +3020622 +3020623 +3020624 +3020625 +3020626 +3020627 +3020628 +3020629 +3020630 +3020631 +3020632 +3020633 +3020634 +3020635 +3020636 +3020637 +3020638 +3020639 +3020640 +3020641 +3020642 +3020643 +3020644 +3020645 +3020646 +3020647 +3020648 +3020649 +3020650 +3020651 +3020652 +3020653 +3020654 +3020655 +3020656 +3020657 +3020658 +3020659 +3020660 +3020661 +3020662 +3020663 +3020664 +3020665 +3020666 +3020667 +3020668 +3020669 +3020670 +3020671 +3020672 +3020673 +3020674 +3020675 +3020676 +3020677 +3020678 +3020679 +3020680 +3020681 +3020682 +3020683 +3020684 +3020685 +3020686 +3020687 +3020688 +3020689 +3020690 +3020691 +3020692 +3020693 +3020694 +3020695 +3020696 +3020697 +3020698 +3020699 +3020700 +3020701 +3020702 +3020703 +3020704 +3020705 +3020706 +3020707 +3020708 +3020709 +3020710 +3020711 +3020712 +3020713 +3020714 +3020715 +3020716 +3020717 +3020718 +3020719 +3020720 +3020721 +3020722 +3020723 +3020724 +3020725 +3020726 +3020727 +3020728 +3020729 +3020730 +3020731 +3020732 +3020733 +3020734 +3020735 +3020736 +3020737 +3020738 +3020739 +3020740 +3020741 +3020742 +3020743 +3020744 +3020745 +3020746 +3020747 +3020748 +3020749 +3020750 +3020751 +3020752 +3020753 +3020754 +3020755 +3020756 +3020757 +3020758 +3020759 +3020760 +3020761 +3020762 +3020763 +3020764 +3020765 +3020766 +3020767 +3020768 +3020769 +3020770 +3020771 +3020772 +3020773 +3020774 +3020775 +3020776 +3020777 +3020778 +3020779 +3020780 +3020781 +3020782 +3020783 +3020784 +3020785 +3020786 +3020787 +3020788 +3020789 +3020790 +3020791 +3020792 +3020793 +3020794 +3020795 +3020796 +3020797 +3020798 +3020799 +3020800 +3020801 +3020802 +3020803 +3020804 +3020805 +3020806 +3020807 +3020808 +3020809 +3020810 +3020811 +3020812 +3020813 +3020814 +3020815 +3020816 +3020817 +3020818 +3020819 +3020820 +3020821 +3020822 +3020823 +3020824 +3020825 +3020826 +3020827 +3020828 +3020829 +3020830 +3020831 +3020832 +3020833 +3020834 +3020835 +3020836 +3020837 +3020838 +3020839 +3020840 +3020841 +3020842 +3020843 +3020844 +3020845 +3020846 +3020847 +3020848 +3020849 +3020850 +3020851 +3020852 +3020853 +3020854 +3020855 +3020856 +3020857 +3020858 +3020859 +3020860 +3020861 +3020862 +3020863 +3020864 +3020865 +3020866 +3020867 +3024818 +3024819 +3024820 +3024821 +3024822 +3024823 +3024824 +3024825 +3024826 +3024827 +3024828 +3024829 +3024830 +3024831 +3024832 +3024833 +3024834 +3024835 +3024836 +3024837 +3024838 +3024839 +3024840 +3024841 +3024842 +3024843 +3024844 +3024845 +3024846 +3024847 +3024848 +3024849 +3024850 +3024851 +3024852 +3024853 +3024854 +3024855 +3024856 +3024857 +3024858 +3024859 +3024860 +3024887 +3024888 +3024889 +3024890 +3024891 +3024892 +3024893 +3024894 +3024895 +3024896 +3024897 +3024898 +3024899 +3024900 +3024901 +3024902 +3024903 +3024904 +3024905 +3024906 +3024907 +3024908 +3024909 +3024910 +3024911 +3024912 +3024913 +3024914 +3024915 +3024916 +3024917 +3024918 +3024919 +3024920 +3024921 +3024922 +3024923 +3024924 +3024925 +3024926 +3024927 +3024928 +3024929 +3024930 +3024931 +3024932 +3024933 +3024934 +3024935 +3024936 +3024937 +3024938 +3024939 +3024940 +3024941 +3024942 +3024943 +3024944 +3024945 +3024946 +3024947 +3024948 +3024949 +3024950 +3024951 +3024952 +3024953 +3024954 +3024955 +3024956 +3024957 +3024958 +3024959 +3024960 +3024961 +3024962 +3024963 +3024964 +3024965 +3024966 +3024967 +3024968 +3024969 +3024970 +3024971 +3024972 +3024973 +3024974 +3024975 +3024976 +3024977 +3024978 +3024979 +3024980 +3024981 +3024982 +3024983 +3024984 +3024985 +3024986 +3024987 +3024988 +3024989 +3024990 +3024991 +3024992 +3024993 +3024994 +3024995 +3024996 +3024997 +3024998 +3024999 +3025000 +3025001 +3025002 +3025003 +3025004 +3025005 +3025006 +3025007 +3025008 +3025009 +3025010 +3025011 +3025012 +3025013 +3025014 +3025015 +3025016 +3025017 +3025018 +3025019 +3025020 +3025021 +3025022 +3025023 +3025024 +3025025 +3025026 +3025027 +3025028 +3025029 +3025030 +3025031 +3025032 +3025033 +3025034 +3025035 +3025036 +3025037 +3025038 +3025039 +3025040 +3025041 +3025042 +3025043 +3025044 +3025045 +3025046 +3025047 +3025048 +3025049 +3025050 +3025051 +3025052 +3025053 +3025054 +3025055 +3025056 +3025057 +3025058 +3025059 +3025060 +3025061 +3025062 +3025063 +3025064 +3025065 +3025066 +3025067 +3025068 +3025069 +3025070 +3025071 +3025072 +3025073 +3025074 +3025075 +3025076 +3025077 +3025078 +3025079 +3025080 +3025081 +3025082 +3025083 +3025084 +3025085 +3025086 +3025087 +3025088 +3025089 +3025090 +3025091 +3025092 +3025093 +3025094 +3025095 +3025096 +3025097 +3025098 +3025099 +3025100 +3025101 +3025102 +3025103 +3025104 +3025105 +3025106 +3025107 +3025108 +3025109 +3025110 +3025111 +3025112 +3025113 +3025114 +3025115 +3025116 +3025117 +3025118 +3025119 +3025120 +3025121 +3025122 +3025123 +3025124 +3025125 +3025126 +3025127 +3025128 +3025129 +3025130 +3025131 +3025132 +3025133 +3025134 +3025135 +3025136 +3025137 +3025138 +3025139 +3025140 +3025141 +3025142 +3025143 +3025144 +3025145 +3025146 +3025147 +3025148 +3025149 +3025150 +3025151 +3025152 +3025153 +3025154 +3025155 +3025156 +3025157 +3025158 +3025159 +3025160 +3025161 +3025162 +3025163 +3025164 +3025165 +3025166 +3025167 +3025168 +3025169 +3025170 +3025171 +3025172 +3025173 +3025174 +3025175 +3025176 +3025177 +3025178 +3025179 +3025180 +3025181 +3025182 +3025183 +3025184 +3025185 +3025186 +3025187 +3029147 +3029148 +3029149 +3029150 +3029151 +3029152 +3029153 +3029154 +3029155 +3029156 +3029157 +3029158 +3029159 +3029160 +3029161 +3029162 +3029163 +3029164 +3029165 +3029166 +3029167 +3029168 +3029169 +3029170 +3029171 +3029172 +3029173 +3029174 +3029175 +3029176 +3029177 +3029178 +3029179 +3029180 +3029210 +3029211 +3029212 +3029213 +3029214 +3029215 +3029216 +3029217 +3029218 +3029219 +3029220 +3029221 +3029222 +3029223 +3029224 +3029225 +3029226 +3029227 +3029228 +3029229 +3029230 +3029231 +3029232 +3029233 +3029234 +3029235 +3029236 +3029237 +3029238 +3029239 +3029240 +3029241 +3029242 +3029243 +3029244 +3029245 +3029246 +3029247 +3029248 +3029249 +3029250 +3029251 +3029252 +3029253 +3029254 +3029255 +3029256 +3029257 +3029258 +3029259 +3029260 +3029261 +3029262 +3029263 +3029264 +3029265 +3029266 +3029267 +3029268 +3029269 +3029270 +3029271 +3029272 +3029273 +3029274 +3029275 +3029276 +3029277 +3029278 +3029279 +3029280 +3029281 +3029282 +3029283 +3029284 +3029285 +3029286 +3029287 +3029288 +3029289 +3029290 +3029291 +3029292 +3029293 +3029294 +3029295 +3029296 +3029297 +3029298 +3029299 +3029300 +3029301 +3029302 +3029303 +3029304 +3029305 +3029306 +3029307 +3029308 +3029309 +3029310 +3029311 +3029312 +3029313 +3029314 +3029315 +3029316 +3029317 +3029318 +3029319 +3029320 +3029321 +3029322 +3029323 +3029324 +3029325 +3029326 +3029327 +3029328 +3029329 +3029330 +3029331 +3029332 +3029333 +3029334 +3029335 +3029336 +3029337 +3029338 +3029339 +3029340 +3029341 +3029342 +3029343 +3029344 +3029345 +3029346 +3029347 +3029348 +3029349 +3029350 +3029351 +3029352 +3029353 +3029354 +3029355 +3029356 +3029357 +3029358 +3029359 +3029360 +3029361 +3029362 +3029363 +3029364 +3029365 +3029366 +3029367 +3029368 +3029369 +3029370 +3029371 +3029372 +3029373 +3029374 +3029375 +3029376 +3029377 +3029378 +3029379 +3029380 +3029381 +3029382 +3029383 +3029384 +3029385 +3029386 +3029387 +3029388 +3029389 +3029390 +3029391 +3029392 +3029393 +3029394 +3029395 +3029396 +3029397 +3029398 +3029399 +3029400 +3029401 +3029402 +3029403 +3029404 +3029405 +3029406 +3029407 +3029408 +3029409 +3029410 +3029411 +3029412 +3029413 +3029414 +3029415 +3029416 +3029417 +3029418 +3029419 +3029420 +3029421 +3029422 +3029423 +3029424 +3029425 +3029426 +3029427 +3029428 +3029429 +3029430 +3029431 +3029432 +3029433 +3029434 +3029435 +3029436 +3029437 +3029438 +3029439 +3029440 +3029441 +3029442 +3029443 +3029444 +3029445 +3029446 +3029447 +3029448 +3029449 +3029450 +3029451 +3029452 +3029453 +3029454 +3029455 +3029456 +3029457 +3029458 +3029459 +3029460 +3029461 +3029462 +3029463 +3029464 +3029465 +3029466 +3029467 +3029468 +3029469 +3029470 +3029471 +3029472 +3029473 +3029474 +3029475 +3029476 +3029477 +3029478 +3029479 +3029480 +3029481 +3029482 +3029483 +3029484 +3029485 +3029486 +3029487 +3029488 +3029489 +3029490 +3029491 +3029492 +3029493 +3029494 +3029495 +3029496 +3029497 +3029498 +3029499 +3029500 +3029501 +3029502 +3029503 +3029504 +3029505 +3029506 +3029507 +3033467 +3033468 +3033469 +3033470 +3033471 +3033472 +3033473 +3033474 +3033475 +3033476 +3033477 +3033478 +3033479 +3033480 +3033481 +3033482 +3033483 +3033484 +3033485 +3033486 +3033487 +3033488 +3033489 +3033490 +3033491 +3033492 +3033493 +3033494 +3033495 +3033496 +3033497 +3033498 +3033499 +3033500 +3033530 +3033531 +3033532 +3033533 +3033534 +3033535 +3033536 +3033537 +3033538 +3033539 +3033540 +3033541 +3033542 +3033543 +3033544 +3033545 +3033546 +3033547 +3033548 +3033549 +3033550 +3033551 +3033552 +3033553 +3033554 +3033555 +3033556 +3033557 +3033558 +3033559 +3033560 +3033561 +3033562 +3033563 +3033564 +3033565 +3033566 +3033567 +3033568 +3033569 +3033570 +3033571 +3033572 +3033573 +3033574 +3033575 +3033576 +3033577 +3033578 +3033579 +3033580 +3033581 +3033582 +3033583 +3033584 +3033585 +3033586 +3033587 +3033588 +3033589 +3033590 +3033591 +3033592 +3033593 +3033594 +3033595 +3033596 +3033597 +3033598 +3033599 +3033600 +3033601 +3033602 +3033603 +3033604 +3033605 +3033606 +3033607 +3033608 +3033609 +3033610 +3033611 +3033612 +3033613 +3033614 +3033615 +3033616 +3033617 +3033618 +3033619 +3033620 +3033621 +3033622 +3033623 +3033624 +3033625 +3033626 +3033627 +3033628 +3033629 +3033630 +3033631 +3033632 +3033633 +3033634 +3033635 +3033636 +3033637 +3033638 +3033639 +3033640 +3033641 +3033642 +3033643 +3033644 +3033645 +3033646 +3033647 +3033648 +3033649 +3033650 +3033651 +3033652 +3033653 +3033654 +3033655 +3033656 +3033657 +3033658 +3033659 +3033660 +3033661 +3033662 +3033663 +3033664 +3033665 +3033666 +3033667 +3033668 +3033669 +3033670 +3033671 +3033672 +3033673 +3033674 +3033675 +3033676 +3033677 +3033678 +3033679 +3033680 +3033681 +3033682 +3033683 +3033684 +3033685 +3033686 +3033687 +3033688 +3033689 +3033690 +3033691 +3033692 +3033693 +3033694 +3033695 +3033696 +3033697 +3033698 +3033699 +3033700 +3033701 +3033702 +3033703 +3033704 +3033705 +3033706 +3033707 +3033708 +3033709 +3033710 +3033711 +3033712 +3033713 +3033714 +3033715 +3033716 +3033717 +3033718 +3033719 +3033720 +3033721 +3033722 +3033723 +3033724 +3033725 +3033726 +3033727 +3033728 +3033729 +3033730 +3033731 +3033732 +3033733 +3033734 +3033735 +3033736 +3033737 +3033738 +3033739 +3033740 +3033741 +3033742 +3033743 +3033744 +3033745 +3033746 +3033747 +3033748 +3033749 +3033750 +3033751 +3033752 +3033753 +3033754 +3033755 +3033756 +3033757 +3033758 +3033759 +3033760 +3033761 +3033762 +3033763 +3033764 +3033765 +3033766 +3033767 +3033768 +3033769 +3033770 +3033771 +3033772 +3033773 +3033774 +3033775 +3033776 +3033777 +3033778 +3033779 +3033780 +3033781 +3033782 +3033783 +3033784 +3033785 +3033786 +3033787 +3033788 +3033789 +3033790 +3033791 +3033792 +3033793 +3033794 +3033795 +3033796 +3033797 +3033798 +3033799 +3033800 +3033801 +3033802 +3033803 +3033804 +3033805 +3033806 +3033807 +3033808 +3033809 +3033810 +3033811 +3033812 +3033813 +3033814 +3033815 +3033816 +3033817 +3033818 +3033819 +3033820 +3033821 +3033822 +3033823 +3033824 +3033825 +3033826 +3037787 +3037788 +3037789 +3037790 +3037791 +3037792 +3037793 +3037794 +3037795 +3037796 +3037797 +3037798 +3037799 +3037800 +3037801 +3037802 +3037803 +3037804 +3037805 +3037806 +3037807 +3037808 +3037809 +3037810 +3037811 +3037812 +3037813 +3037814 +3037815 +3037816 +3037817 +3037818 +3037819 +3037820 +3037850 +3037851 +3037852 +3037853 +3037854 +3037855 +3037856 +3037857 +3037858 +3037859 +3037860 +3037861 +3037862 +3037863 +3037864 +3037865 +3037866 +3037867 +3037868 +3037869 +3037870 +3037871 +3037872 +3037873 +3037874 +3037875 +3037876 +3037877 +3037878 +3037879 +3037880 +3037881 +3037882 +3037883 +3037884 +3037885 +3037886 +3037887 +3037888 +3037889 +3037890 +3037891 +3037892 +3037893 +3037894 +3037895 +3037896 +3037897 +3037898 +3037899 +3037900 +3037901 +3037902 +3037903 +3037904 +3037905 +3037906 +3037907 +3037908 +3037909 +3037910 +3037911 +3037912 +3037913 +3037914 +3037915 +3037916 +3037917 +3037918 +3037919 +3037920 +3037921 +3037922 +3037923 +3037924 +3037925 +3037926 +3037927 +3037928 +3037929 +3037930 +3037931 +3037932 +3037933 +3037934 +3037935 +3037936 +3037937 +3037938 +3037939 +3037940 +3037941 +3037942 +3037943 +3037944 +3037945 +3037946 +3037947 +3037948 +3037949 +3037950 +3037951 +3037952 +3037953 +3037954 +3037955 +3037956 +3037957 +3037958 +3037959 +3037960 +3037961 +3037962 +3037963 +3037964 +3037965 +3037966 +3037967 +3037968 +3037969 +3037970 +3037971 +3037972 +3037973 +3037974 +3037975 +3037976 +3037977 +3037978 +3037979 +3037980 +3037981 +3037982 +3037983 +3037984 +3037985 +3037986 +3037987 +3037988 +3037989 +3037990 +3037991 +3037992 +3037993 +3037994 +3037995 +3037996 +3037997 +3037998 +3037999 +3038000 +3038001 +3038002 +3038003 +3038004 +3038005 +3038006 +3038007 +3038008 +3038009 +3038010 +3038011 +3038012 +3038013 +3038014 +3038015 +3038016 +3038017 +3038018 +3038019 +3038020 +3038021 +3038022 +3038023 +3038024 +3038025 +3038026 +3038027 +3038028 +3038029 +3038030 +3038031 +3038032 +3038033 +3038034 +3038035 +3038036 +3038037 +3038038 +3038039 +3038040 +3038041 +3038042 +3038043 +3038044 +3038045 +3038046 +3038047 +3038048 +3038049 +3038050 +3038051 +3038052 +3038053 +3038054 +3038055 +3038056 +3038057 +3038058 +3038059 +3038060 +3038061 +3038062 +3038063 +3038064 +3038065 +3038066 +3038067 +3038068 +3038069 +3038070 +3038071 +3038072 +3038073 +3038074 +3038075 +3038076 +3038077 +3038078 +3038079 +3038080 +3038081 +3038082 +3038083 +3038084 +3038085 +3038086 +3038087 +3038088 +3038089 +3038090 +3038091 +3038092 +3038093 +3038094 +3038095 +3038096 +3038097 +3038098 +3038099 +3038100 +3038101 +3038102 +3038103 +3038104 +3038105 +3038106 +3038107 +3038108 +3038109 +3038110 +3038111 +3038112 +3038113 +3038114 +3038115 +3038116 +3038117 +3038118 +3038119 +3038120 +3038121 +3038122 +3038123 +3038124 +3038125 +3038126 +3038127 +3038128 +3038129 +3038130 +3038131 +3038132 +3038133 +3038134 +3038135 +3038136 +3038137 +3038138 +3038139 +3038140 +3038141 +3038142 +3038143 +3038144 +3038145 +3042173 +3042174 +3042175 +3042176 +3042177 +3042178 +3042179 +3042180 +3042181 +3042182 +3042183 +3042184 +3042185 +3042186 +3042187 +3042188 +3042189 +3042190 +3042191 +3042192 +3042193 +3042194 +3042195 +3042196 +3042197 +3042198 +3042199 +3042200 +3042201 +3042202 +3042203 +3042204 +3042205 +3042206 +3042207 +3042208 +3042209 +3042210 +3042211 +3042212 +3042213 +3042214 +3042215 +3042216 +3042217 +3042218 +3042219 +3042220 +3042221 +3042222 +3042223 +3042224 +3042225 +3042226 +3042227 +3042228 +3042229 +3042230 +3042231 +3042232 +3042233 +3042234 +3042235 +3042236 +3042237 +3042238 +3042239 +3042240 +3042241 +3042242 +3042243 +3042244 +3042245 +3042246 +3042247 +3042248 +3042249 +3042250 +3042251 +3042252 +3042253 +3042254 +3042255 +3042256 +3042257 +3042258 +3042259 +3042260 +3042261 +3042262 +3042263 +3042264 +3042265 +3042266 +3042267 +3042268 +3042269 +3042270 +3042271 +3042272 +3042273 +3042274 +3042275 +3042276 +3042277 +3042278 +3042279 +3042280 +3042281 +3042282 +3042283 +3042284 +3042285 +3042286 +3042287 +3042288 +3042289 +3042290 +3042291 +3042292 +3042293 +3042294 +3042295 +3042296 +3042297 +3042298 +3042299 +3042300 +3042301 +3042302 +3042303 +3042304 +3042305 +3042306 +3042307 +3042308 +3042309 +3042310 +3042311 +3042312 +3042313 +3042314 +3042315 +3042316 +3042317 +3042318 +3042319 +3042320 +3042321 +3042322 +3042323 +3042324 +3042325 +3042326 +3042327 +3042328 +3042329 +3042330 +3042331 +3042332 +3042333 +3042334 +3042335 +3042336 +3042337 +3042338 +3042339 +3042340 +3042341 +3042342 +3042343 +3042344 +3042345 +3042346 +3042347 +3042348 +3042349 +3042350 +3042351 +3042352 +3042353 +3042354 +3042355 +3042356 +3042357 +3042358 +3042359 +3042360 +3042361 +3042362 +3042363 +3042364 +3042365 +3042366 +3042367 +3042368 +3042369 +3042370 +3042371 +3042372 +3042373 +3042374 +3042375 +3042376 +3042377 +3042378 +3042379 +3042380 +3042381 +3042382 +3042383 +3042384 +3042385 +3042386 +3042387 +3042388 +3042389 +3042390 +3042391 +3042392 +3042393 +3042394 +3042395 +3042396 +3042397 +3042398 +3042399 +3042400 +3042401 +3042402 +3042403 +3042404 +3042405 +3042406 +3042407 +3042408 +3042409 +3042410 +3042411 +3042412 +3042413 +3042414 +3042415 +3042416 +3042417 +3042418 +3042419 +3042420 +3042421 +3042422 +3042423 +3042424 +3042425 +3042426 +3042427 +3042428 +3042429 +3042430 +3042431 +3042432 +3042433 +3042434 +3042435 +3042436 +3042437 +3042438 +3042439 +3042440 +3042441 +3042442 +3042443 +3042444 +3042445 +3042446 +3042447 +3042448 +3042449 +3042450 +3042451 +3042452 +3042453 +3042454 +3042455 +3042456 +3042457 +3042458 +3042459 +3042460 +3042461 +3042462 +3042463 +3042464 +3046493 +3046494 +3046495 +3046496 +3046497 +3046498 +3046499 +3046500 +3046501 +3046502 +3046503 +3046504 +3046505 +3046506 +3046507 +3046508 +3046509 +3046510 +3046511 +3046512 +3046513 +3046514 +3046515 +3046516 +3046517 +3046518 +3046519 +3046520 +3046521 +3046522 +3046523 +3046524 +3046525 +3046526 +3046527 +3046528 +3046529 +3046530 +3046531 +3046532 +3046533 +3046534 +3046535 +3046536 +3046537 +3046538 +3046539 +3046540 +3046541 +3046542 +3046543 +3046544 +3046545 +3046546 +3046547 +3046548 +3046549 +3046550 +3046551 +3046552 +3046553 +3046554 +3046555 +3046556 +3046557 +3046558 +3046559 +3046560 +3046561 +3046562 +3046563 +3046564 +3046565 +3046566 +3046567 +3046568 +3046569 +3046570 +3046571 +3046572 +3046573 +3046574 +3046575 +3046576 +3046577 +3046578 +3046579 +3046580 +3046581 +3046582 +3046583 +3046584 +3046585 +3046586 +3046587 +3046588 +3046589 +3046590 +3046591 +3046592 +3046593 +3046594 +3046595 +3046596 +3046597 +3046598 +3046599 +3046600 +3046601 +3046602 +3046603 +3046604 +3046605 +3046606 +3046607 +3046608 +3046609 +3046610 +3046611 +3046612 +3046613 +3046614 +3046615 +3046616 +3046617 +3046618 +3046619 +3046620 +3046621 +3046622 +3046623 +3046624 +3046625 +3046626 +3046627 +3046628 +3046629 +3046630 +3046631 +3046632 +3046633 +3046634 +3046635 +3046636 +3046637 +3046638 +3046639 +3046640 +3046641 +3046642 +3046643 +3046644 +3046645 +3046646 +3046647 +3046648 +3046649 +3046650 +3046651 +3046652 +3046653 +3046654 +3046655 +3046656 +3046657 +3046658 +3046659 +3046660 +3046661 +3046662 +3046663 +3046664 +3046665 +3046666 +3046667 +3046668 +3046669 +3046670 +3046671 +3046672 +3046673 +3046674 +3046675 +3046676 +3046677 +3046678 +3046679 +3046680 +3046681 +3046682 +3046683 +3046684 +3046685 +3046686 +3046687 +3046688 +3046689 +3046690 +3046691 +3046692 +3046693 +3046694 +3046695 +3046696 +3046697 +3046698 +3046699 +3046700 +3046701 +3046702 +3046703 +3046704 +3046705 +3046706 +3046707 +3046708 +3046709 +3046710 +3046711 +3046712 +3046713 +3046714 +3046715 +3046716 +3046717 +3046718 +3046719 +3046720 +3046721 +3046722 +3046723 +3046724 +3046725 +3046726 +3046727 +3046728 +3046729 +3046730 +3046731 +3046732 +3046733 +3046734 +3046735 +3046736 +3046737 +3046738 +3046739 +3046740 +3046741 +3046742 +3046743 +3046744 +3046745 +3046746 +3046747 +3046748 +3046749 +3046750 +3046751 +3046752 +3046753 +3046754 +3046755 +3046756 +3046757 +3046758 +3046759 +3046760 +3046761 +3046762 +3046763 +3046764 +3046765 +3046766 +3046767 +3046768 +3046769 +3046770 +3046771 +3046772 +3046773 +3046774 +3046775 +3046776 +3046777 +3046778 +3046779 +3046780 +3046781 +3046782 +3046783 +3046784 +3050813 +3050814 +3050815 +3050816 +3050817 +3050818 +3050819 +3050820 +3050821 +3050822 +3050823 +3050824 +3050825 +3050826 +3050827 +3050828 +3050829 +3050830 +3050831 +3050832 +3050833 +3050834 +3050835 +3050836 +3050837 +3050838 +3050839 +3050840 +3050841 +3050842 +3050843 +3050844 +3050845 +3050846 +3050847 +3050848 +3050849 +3050850 +3050851 +3050852 +3050853 +3050854 +3050855 +3050856 +3050857 +3050858 +3050859 +3050860 +3050861 +3050862 +3050863 +3050864 +3050865 +3050866 +3050867 +3050868 +3050869 +3050870 +3050871 +3050872 +3050873 +3050874 +3050875 +3050876 +3050877 +3050878 +3050879 +3050880 +3050881 +3050882 +3050883 +3050884 +3050885 +3050886 +3050887 +3050888 +3050889 +3050890 +3050891 +3050892 +3050893 +3050894 +3050895 +3050896 +3050897 +3050898 +3050899 +3050900 +3050901 +3050902 +3050903 +3050904 +3050905 +3050906 +3050907 +3050908 +3050909 +3050910 +3050911 +3050912 +3050913 +3050914 +3050915 +3050916 +3050917 +3050918 +3050919 +3050920 +3050921 +3050922 +3050923 +3050924 +3050925 +3050926 +3050927 +3050928 +3050929 +3050930 +3050931 +3050932 +3050933 +3050934 +3050935 +3050936 +3050937 +3050938 +3050939 +3050940 +3050941 +3050942 +3050943 +3050944 +3050945 +3050946 +3050947 +3050948 +3050949 +3050950 +3050951 +3050952 +3050953 +3050954 +3050955 +3050956 +3050957 +3050958 +3050959 +3050960 +3050961 +3050962 +3050963 +3050964 +3050965 +3050966 +3050967 +3050968 +3050969 +3050970 +3050971 +3050972 +3050973 +3050974 +3050975 +3050976 +3050977 +3050978 +3050979 +3050980 +3050981 +3050982 +3050983 +3050984 +3050985 +3050986 +3050987 +3050988 +3050989 +3050990 +3050991 +3050992 +3050993 +3050994 +3050995 +3050996 +3050997 +3050998 +3050999 +3051000 +3051001 +3051002 +3051003 +3051004 +3051005 +3051006 +3051007 +3051008 +3051009 +3051010 +3051011 +3051012 +3051013 +3051014 +3051015 +3051016 +3051017 +3051018 +3051019 +3051020 +3051021 +3051022 +3051023 +3051024 +3051025 +3051026 +3051027 +3051028 +3051029 +3051030 +3051031 +3051032 +3051033 +3051034 +3051035 +3051036 +3051037 +3051038 +3051039 +3051040 +3051041 +3051042 +3051043 +3051044 +3051045 +3051046 +3051047 +3051048 +3051049 +3051050 +3051051 +3051052 +3051053 +3051054 +3051055 +3051056 +3051057 +3051058 +3051059 +3051060 +3051061 +3051062 +3051063 +3051064 +3051065 +3051066 +3051067 +3051068 +3051069 +3051070 +3051071 +3051072 +3051073 +3051074 +3051075 +3051076 +3051077 +3051078 +3051079 +3051080 +3051081 +3051082 +3051083 +3051084 +3051085 +3051086 +3051087 +3051088 +3051089 +3051090 +3051091 +3051092 +3051093 +3051094 +3051095 +3051096 +3051097 +3051098 +3051099 +3051100 +3051101 +3051102 +3051103 +3051104 +3055136 +3055137 +3055138 +3055139 +3055140 +3055141 +3055142 +3055143 +3055144 +3055145 +3055146 +3055147 +3055148 +3055149 +3055150 +3055151 +3055152 +3055153 +3055154 +3055155 +3055156 +3055157 +3055158 +3055159 +3055160 +3055161 +3055162 +3055163 +3055164 +3055165 +3055166 +3055167 +3055168 +3055169 +3055170 +3055171 +3055172 +3055173 +3055174 +3055175 +3055176 +3055177 +3055178 +3055179 +3055180 +3055181 +3055182 +3055183 +3055184 +3055185 +3055186 +3055187 +3055188 +3055189 +3055190 +3055191 +3055192 +3055193 +3055194 +3055195 +3055196 +3055197 +3055198 +3055199 +3055200 +3055201 +3055202 +3055203 +3055204 +3055205 +3055206 +3055207 +3055208 +3055209 +3055210 +3055211 +3055212 +3055213 +3055214 +3055215 +3055216 +3055217 +3055218 +3055219 +3055220 +3055221 +3055222 +3055223 +3055224 +3055225 +3055226 +3055227 +3055228 +3055229 +3055230 +3055231 +3055232 +3055233 +3055234 +3055235 +3055236 +3055237 +3055238 +3055239 +3055240 +3055241 +3055242 +3055243 +3055244 +3055245 +3055246 +3055247 +3055248 +3055249 +3055250 +3055251 +3055252 +3055253 +3055254 +3055255 +3055256 +3055257 +3055258 +3055259 +3055260 +3055261 +3055262 +3055263 +3055264 +3055265 +3055266 +3055267 +3055268 +3055269 +3055270 +3055271 +3055272 +3055273 +3055274 +3055275 +3055276 +3055277 +3055278 +3055279 +3055280 +3055281 +3055282 +3055283 +3055284 +3055285 +3055286 +3055287 +3055288 +3055289 +3055290 +3055291 +3055292 +3055293 +3055294 +3055295 +3055296 +3055297 +3055298 +3055299 +3055300 +3055301 +3055302 +3055303 +3055304 +3055305 +3055306 +3055307 +3055308 +3055309 +3055310 +3055311 +3055312 +3055313 +3055314 +3055315 +3055316 +3055317 +3055318 +3055319 +3055320 +3055321 +3055322 +3055323 +3055324 +3055325 +3055326 +3055327 +3055328 +3055329 +3055330 +3055331 +3055332 +3055333 +3055334 +3055335 +3055336 +3055337 +3055338 +3055339 +3055340 +3055341 +3055342 +3055343 +3055344 +3055345 +3055346 +3055347 +3055348 +3055349 +3055350 +3055351 +3055352 +3055353 +3055354 +3055355 +3055356 +3055357 +3055358 +3055359 +3055360 +3055361 +3055362 +3055363 +3055364 +3055365 +3055366 +3055367 +3055368 +3055369 +3055370 +3055371 +3055372 +3055373 +3055374 +3055375 +3055376 +3055377 +3055378 +3055379 +3055380 +3055381 +3055382 +3055383 +3055384 +3055385 +3055386 +3055387 +3055388 +3055389 +3055390 +3055391 +3055392 +3055393 +3055394 +3055395 +3055396 +3055397 +3055398 +3055399 +3055400 +3055401 +3055402 +3055403 +3055404 +3055405 +3055406 +3055407 +3055408 +3055409 +3055410 +3055411 +3055412 +3055413 +3055414 +3055415 +3055416 +3055417 +3055418 +3055419 +3055420 +3055421 +3055422 +3055423 +3055424 +3059456 +3059457 +3059458 +3059459 +3059460 +3059461 +3059462 +3059463 +3059464 +3059465 +3059466 +3059467 +3059468 +3059469 +3059470 +3059471 +3059472 +3059473 +3059474 +3059475 +3059476 +3059477 +3059478 +3059479 +3059480 +3059481 +3059482 +3059483 +3059484 +3059485 +3059486 +3059487 +3059488 +3059489 +3059490 +3059491 +3059492 +3059493 +3059494 +3059495 +3059496 +3059497 +3059498 +3059499 +3059500 +3059501 +3059502 +3059503 +3059504 +3059505 +3059506 +3059507 +3059508 +3059509 +3059510 +3059511 +3059512 +3059513 +3059514 +3059515 +3059516 +3059517 +3059518 +3059519 +3059520 +3059521 +3059522 +3059523 +3059524 +3059525 +3059526 +3059527 +3059528 +3059529 +3059530 +3059531 +3059532 +3059533 +3059534 +3059535 +3059536 +3059537 +3059538 +3059539 +3059540 +3059541 +3059542 +3059543 +3059544 +3059545 +3059546 +3059547 +3059548 +3059549 +3059550 +3059551 +3059552 +3059553 +3059554 +3059555 +3059556 +3059557 +3059558 +3059559 +3059560 +3059561 +3059562 +3059563 +3059564 +3059565 +3059566 +3059567 +3059568 +3059569 +3059570 +3059571 +3059572 +3059573 +3059574 +3059575 +3059576 +3059577 +3059578 +3059579 +3059580 +3059581 +3059582 +3059583 +3059584 +3059585 +3059586 +3059587 +3059588 +3059589 +3059590 +3059591 +3059592 +3059593 +3059594 +3059595 +3059596 +3059597 +3059598 +3059599 +3059600 +3059601 +3059602 +3059603 +3059604 +3059605 +3059606 +3059607 +3059608 +3059609 +3059610 +3059611 +3059612 +3059613 +3059614 +3059615 +3059616 +3059617 +3059618 +3059619 +3059620 +3059621 +3059622 +3059623 +3059624 +3059625 +3059626 +3059627 +3059628 +3059629 +3059630 +3059631 +3059632 +3059633 +3059634 +3059635 +3059636 +3059637 +3059638 +3059639 +3059640 +3059641 +3059642 +3059643 +3059644 +3059645 +3059646 +3059647 +3059648 +3059649 +3059650 +3059651 +3059652 +3059653 +3059654 +3059655 +3059656 +3059657 +3059658 +3059659 +3059660 +3059661 +3059662 +3059663 +3059664 +3059665 +3059666 +3059667 +3059668 +3059669 +3059670 +3059671 +3059672 +3059673 +3059674 +3059675 +3059676 +3059677 +3059678 +3059679 +3059680 +3059681 +3059682 +3059683 +3059684 +3059685 +3059686 +3059687 +3059688 +3059689 +3059690 +3059691 +3059692 +3059693 +3059694 +3059695 +3059696 +3059697 +3059698 +3059699 +3059700 +3059701 +3059702 +3059703 +3059704 +3059705 +3059706 +3059707 +3059708 +3059709 +3059710 +3059711 +3059712 +3059713 +3059714 +3059715 +3059716 +3059717 +3059718 +3059719 +3059720 +3059721 +3059722 +3059723 +3059724 +3059725 +3059726 +3059727 +3059728 +3059729 +3059730 +3059731 +3059732 +3059733 +3059734 +3059735 +3059736 +3059737 +3059738 +3059739 +3059740 +3059741 +3059742 +3059743 +3059744 +3063776 +3063777 +3063778 +3063779 +3063780 +3063781 +3063782 +3063783 +3063784 +3063785 +3063786 +3063787 +3063788 +3063789 +3063790 +3063791 +3063792 +3063793 +3063794 +3063795 +3063796 +3063797 +3063798 +3063799 +3063800 +3063801 +3063802 +3063803 +3063804 +3063805 +3063806 +3063807 +3063808 +3063809 +3063810 +3063811 +3063812 +3063813 +3063814 +3063815 +3063816 +3063817 +3063818 +3063819 +3063820 +3063821 +3063822 +3063823 +3063824 +3063825 +3063826 +3063827 +3063828 +3063829 +3063830 +3063831 +3063832 +3063833 +3063834 +3063835 +3063836 +3063837 +3063838 +3063839 +3063840 +3063841 +3063842 +3063843 +3063844 +3063845 +3063846 +3063847 +3063848 +3063849 +3063850 +3063851 +3063852 +3063853 +3063854 +3063855 +3063856 +3063857 +3063858 +3063859 +3063860 +3063861 +3063862 +3063863 +3063864 +3063865 +3063866 +3063867 +3063868 +3063869 +3063870 +3063871 +3063872 +3063873 +3063874 +3063875 +3063876 +3063877 +3063878 +3063879 +3063880 +3063881 +3063882 +3063883 +3063884 +3063885 +3063886 +3063887 +3063888 +3063889 +3063890 +3063891 +3063892 +3063893 +3063894 +3063895 +3063896 +3063897 +3063898 +3063899 +3063900 +3063901 +3063902 +3063903 +3063904 +3063905 +3063906 +3063907 +3063908 +3063909 +3063910 +3063911 +3063912 +3063913 +3063914 +3063915 +3063916 +3063917 +3063918 +3063919 +3063920 +3063921 +3063922 +3063923 +3063924 +3063925 +3063926 +3063927 +3063928 +3063929 +3063930 +3063931 +3063932 +3063933 +3063934 +3063935 +3063936 +3063937 +3063938 +3063939 +3063940 +3063941 +3063942 +3063943 +3063944 +3063945 +3063946 +3063947 +3063948 +3063949 +3063950 +3063951 +3063952 +3063953 +3063954 +3063955 +3063956 +3063957 +3063958 +3063959 +3063960 +3063961 +3063962 +3063963 +3063964 +3063965 +3063966 +3063967 +3063968 +3063969 +3063970 +3063971 +3063972 +3063973 +3063974 +3063975 +3063976 +3063977 +3063978 +3063979 +3063980 +3063981 +3063982 +3063983 +3063984 +3063985 +3063986 +3063987 +3063988 +3063989 +3063990 +3063991 +3063992 +3063993 +3063994 +3063995 +3063996 +3063997 +3063998 +3063999 +3064000 +3064001 +3064002 +3064003 +3064004 +3064005 +3064006 +3064007 +3064008 +3064009 +3064010 +3064011 +3064012 +3064013 +3064014 +3064015 +3064016 +3064017 +3064018 +3064019 +3064020 +3064021 +3064022 +3064023 +3064024 +3064025 +3064026 +3064027 +3064028 +3064029 +3064030 +3064031 +3064032 +3064033 +3064034 +3064035 +3064036 +3064037 +3064038 +3064039 +3064040 +3064041 +3064042 +3064043 +3064044 +3064045 +3064046 +3064047 +3064048 +3064049 +3064050 +3064051 +3064052 +3064053 +3064054 +3064055 +3064056 +3064057 +3064058 +3064059 +3064060 +3064061 +3064062 +3064063 +3064064 +3068102 +3068103 +3068104 +3068105 +3068106 +3068107 +3068108 +3068109 +3068110 +3068111 +3068112 +3068113 +3068114 +3068115 +3068116 +3068117 +3068118 +3068119 +3068120 +3068121 +3068122 +3068123 +3068124 +3068125 +3068126 +3068127 +3068128 +3068129 +3068130 +3068131 +3068132 +3068133 +3068134 +3068135 +3068136 +3068137 +3068138 +3068139 +3068140 +3068141 +3068142 +3068143 +3068144 +3068145 +3068146 +3068147 +3068148 +3068149 +3068150 +3068151 +3068152 +3068153 +3068154 +3068155 +3068156 +3068157 +3068158 +3068159 +3068160 +3068161 +3068162 +3068163 +3068164 +3068165 +3068166 +3068167 +3068168 +3068169 +3068170 +3068171 +3068172 +3068173 +3068174 +3068175 +3068176 +3068177 +3068178 +3068180 +3068181 +3068182 +3068183 +3068184 +3068185 +3068186 +3068187 +3068188 +3068189 +3068190 +3068191 +3068192 +3068193 +3068194 +3068195 +3068196 +3068197 +3068198 +3068199 +3068200 +3068201 +3068202 +3068203 +3068204 +3068205 +3068206 +3068207 +3068208 +3068209 +3068210 +3068211 +3068212 +3068213 +3068214 +3068215 +3068216 +3068217 +3068218 +3068219 +3068220 +3068221 +3068222 +3068223 +3068224 +3068225 +3068226 +3068227 +3068228 +3068229 +3068230 +3068231 +3068232 +3068233 +3068234 +3068235 +3068236 +3068237 +3068238 +3068239 +3068240 +3068241 +3068242 +3068243 +3068244 +3068245 +3068246 +3068247 +3068248 +3068249 +3068250 +3068251 +3068252 +3068253 +3068254 +3068255 +3068256 +3068257 +3068258 +3068259 +3068260 +3068261 +3068262 +3068263 +3068264 +3068265 +3068266 +3068267 +3068268 +3068269 +3068270 +3068271 +3068272 +3068273 +3068274 +3068275 +3068276 +3068277 +3068278 +3068279 +3068280 +3068281 +3068282 +3068283 +3068284 +3068285 +3068286 +3068287 +3068288 +3068289 +3068290 +3068291 +3068292 +3068293 +3068294 +3068295 +3068296 +3068297 +3068298 +3068299 +3068300 +3068301 +3068302 +3068303 +3068304 +3068305 +3068306 +3068307 +3068308 +3068309 +3068310 +3068311 +3068312 +3068313 +3068314 +3068315 +3068316 +3068317 +3068318 +3068319 +3068320 +3068321 +3068322 +3068323 +3068324 +3068325 +3068326 +3068327 +3068328 +3068329 +3068330 +3068331 +3068332 +3068333 +3068334 +3068335 +3068336 +3068337 +3068338 +3068339 +3068340 +3068341 +3068342 +3068343 +3068344 +3068345 +3068346 +3068347 +3068348 +3068349 +3068350 +3068351 +3068352 +3068353 +3068354 +3068355 +3068356 +3068357 +3068358 +3068359 +3068360 +3068361 +3068362 +3068363 +3068364 +3068365 +3068366 +3068367 +3068368 +3068369 +3068370 +3068371 +3068372 +3068373 +3068374 +3068375 +3068376 +3068377 +3068378 +3068379 +3068380 +3068381 +3068382 +3068383 +3072422 +3072423 +3072424 +3072425 +3072426 +3072427 +3072428 +3072429 +3072430 +3072431 +3072432 +3072433 +3072434 +3072435 +3072436 +3072437 +3072438 +3072439 +3072440 +3072441 +3072442 +3072443 +3072444 +3072445 +3072446 +3072447 +3072448 +3072449 +3072450 +3072451 +3072452 +3072453 +3072454 +3072455 +3072456 +3072457 +3072458 +3072459 +3072460 +3072461 +3072462 +3072463 +3072464 +3072465 +3072466 +3072467 +3072468 +3072469 +3072470 +3072471 +3072472 +3072473 +3072474 +3072475 +3072476 +3072477 +3072478 +3072479 +3072480 +3072481 +3072482 +3072483 +3072484 +3072485 +3072486 +3072487 +3072488 +3072489 +3072490 +3072491 +3072492 +3072493 +3072494 +3072495 +3072496 +3072497 +3072498 +3072499 +3072500 +3072501 +3072502 +3072503 +3072504 +3072505 +3072506 +3072507 +3072508 +3072509 +3072510 +3072511 +3072512 +3072513 +3072514 +3072515 +3072516 +3072517 +3072518 +3072519 +3072520 +3072521 +3072522 +3072523 +3072524 +3072525 +3072526 +3072527 +3072528 +3072529 +3072530 +3072531 +3072532 +3072533 +3072534 +3072535 +3072536 +3072537 +3072538 +3072539 +3072540 +3072541 +3072542 +3072543 +3072544 +3072545 +3072546 +3072547 +3072548 +3072549 +3072550 +3072551 +3072552 +3072553 +3072554 +3072555 +3072556 +3072557 +3072558 +3072559 +3072560 +3072561 +3072562 +3072563 +3072564 +3072565 +3072566 +3072567 +3072568 +3072569 +3072570 +3072571 +3072572 +3072573 +3072574 +3072575 +3072576 +3072577 +3072578 +3072579 +3072580 +3072581 +3072582 +3072583 +3072584 +3072585 +3072586 +3072587 +3072588 +3072589 +3072590 +3072591 +3072592 +3072593 +3072594 +3072595 +3072596 +3072597 +3072598 +3072599 +3072600 +3072601 +3072602 +3072603 +3072604 +3072605 +3072606 +3072607 +3072608 +3072609 +3072610 +3072611 +3072612 +3072613 +3072614 +3072615 +3072616 +3072617 +3072618 +3072619 +3072620 +3072621 +3072622 +3072623 +3072624 +3072625 +3072626 +3072627 +3072628 +3072629 +3072630 +3072631 +3072632 +3072633 +3072634 +3072635 +3072636 +3072637 +3072638 +3072639 +3072640 +3072641 +3072642 +3072643 +3072644 +3072645 +3072646 +3072647 +3072648 +3072649 +3072650 +3072651 +3072652 +3072653 +3072654 +3072655 +3072656 +3072657 +3072658 +3072659 +3072660 +3072661 +3072662 +3072663 +3072664 +3072665 +3072666 +3072667 +3072668 +3072669 +3072670 +3072671 +3072672 +3072673 +3072674 +3072675 +3072676 +3072677 +3072678 +3072679 +3072680 +3072681 +3072682 +3072683 +3072684 +3072685 +3072686 +3072687 +3072688 +3072689 +3072690 +3072691 +3072692 +3072693 +3072694 +3072695 +3072696 +3072697 +3072698 +3072699 +3072700 +3072701 +3072702 +3072703 +3076742 +3076743 +3076744 +3076745 +3076746 +3076747 +3076748 +3076749 +3076750 +3076751 +3076752 +3076753 +3076754 +3076755 +3076756 +3076757 +3076758 +3076759 +3076760 +3076761 +3076762 +3076763 +3076764 +3076765 +3076766 +3076767 +3076768 +3076769 +3076770 +3076771 +3076772 +3076773 +3076774 +3076775 +3076776 +3076777 +3076778 +3076779 +3076780 +3076781 +3076782 +3076783 +3076784 +3076785 +3076786 +3076787 +3076788 +3076789 +3076790 +3076791 +3076792 +3076793 +3076794 +3076795 +3076796 +3076797 +3076798 +3076799 +3076800 +3076801 +3076802 +3076803 +3076804 +3076805 +3076806 +3076807 +3076808 +3076809 +3076810 +3076811 +3076812 +3076813 +3076814 +3076815 +3076816 +3076817 +3076818 +3076819 +3076820 +3076821 +3076822 +3076823 +3076824 +3076825 +3076826 +3076827 +3076828 +3076829 +3076830 +3076831 +3076832 +3076833 +3076834 +3076835 +3076836 +3076837 +3076838 +3076839 +3076840 +3076841 +3076842 +3076843 +3076844 +3076845 +3076846 +3076847 +3076848 +3076849 +3076850 +3076851 +3076852 +3076853 +3076854 +3076855 +3076856 +3076857 +3076858 +3076859 +3076860 +3076861 +3076862 +3076863 +3076864 +3076865 +3076866 +3076867 +3076868 +3076869 +3076870 +3076871 +3076872 +3076873 +3076874 +3076875 +3076876 +3076877 +3076878 +3076879 +3076880 +3076881 +3076882 +3076883 +3076884 +3076885 +3076886 +3076887 +3076888 +3076889 +3076890 +3076891 +3076892 +3076893 +3076894 +3076895 +3076896 +3076897 +3076898 +3076899 +3076900 +3076901 +3076902 +3076903 +3076904 +3076905 +3076906 +3076907 +3076908 +3076909 +3076910 +3076911 +3076912 +3076913 +3076914 +3076915 +3076916 +3076917 +3076918 +3076919 +3076920 +3076921 +3076922 +3076923 +3076924 +3076925 +3076926 +3076927 +3076928 +3076929 +3076930 +3076931 +3076932 +3076933 +3076934 +3076935 +3076936 +3076937 +3076938 +3076939 +3076940 +3076941 +3076942 +3076943 +3076944 +3076945 +3076946 +3076947 +3076948 +3076949 +3076950 +3076951 +3076952 +3076953 +3076954 +3076955 +3076956 +3076957 +3076958 +3076959 +3076960 +3076961 +3076962 +3076963 +3076964 +3076965 +3076966 +3076967 +3076968 +3076969 +3076970 +3076971 +3076972 +3076973 +3076974 +3076975 +3076976 +3076977 +3076978 +3076979 +3076980 +3076981 +3076982 +3076983 +3076984 +3076985 +3076986 +3076987 +3076988 +3076989 +3076990 +3076991 +3076992 +3076993 +3076994 +3076995 +3076996 +3076997 +3076998 +3076999 +3077000 +3077001 +3077002 +3077003 +3077004 +3077005 +3077006 +3077007 +3077008 +3077009 +3077010 +3077011 +3077012 +3077013 +3077014 +3077015 +3077016 +3077017 +3077018 +3077019 +3077020 +3077021 +3077022 +3077023 +3081065 +3081066 +3081067 +3081068 +3081069 +3081070 +3081071 +3081072 +3081073 +3081074 +3081075 +3081076 +3081077 +3081078 +3081079 +3081080 +3081081 +3081082 +3081083 +3081084 +3081085 +3081086 +3081087 +3081088 +3081089 +3081090 +3081091 +3081092 +3081093 +3081094 +3081095 +3081096 +3081097 +3081098 +3081099 +3081100 +3081101 +3081102 +3081103 +3081104 +3081105 +3081106 +3081107 +3081108 +3081109 +3081110 +3081111 +3081112 +3081113 +3081114 +3081115 +3081116 +3081117 +3081118 +3081119 +3081120 +3081121 +3081122 +3081123 +3081124 +3081125 +3081126 +3081127 +3081128 +3081129 +3081130 +3081131 +3081132 +3081133 +3081134 +3081135 +3081136 +3081137 +3081138 +3081139 +3081140 +3081141 +3081142 +3081143 +3081144 +3081145 +3081146 +3081147 +3081148 +3081149 +3081150 +3081151 +3081152 +3081153 +3081154 +3081155 +3081156 +3081157 +3081158 +3081159 +3081160 +3081161 +3081162 +3081163 +3081164 +3081165 +3081166 +3081167 +3081168 +3081169 +3081170 +3081171 +3081172 +3081173 +3081174 +3081175 +3081176 +3081177 +3081178 +3081179 +3081180 +3081181 +3081182 +3081183 +3081184 +3081185 +3081186 +3081187 +3081188 +3081189 +3081190 +3081191 +3081192 +3081193 +3081194 +3081195 +3081196 +3081197 +3081198 +3081199 +3081200 +3081201 +3081202 +3081203 +3081204 +3081205 +3081206 +3081207 +3081208 +3081209 +3081210 +3081211 +3081212 +3081213 +3081214 +3081215 +3081216 +3081217 +3081218 +3081219 +3081220 +3081221 +3081222 +3081223 +3081224 +3081225 +3081226 +3081227 +3081228 +3081229 +3081230 +3081231 +3081232 +3081233 +3081234 +3081235 +3081236 +3081237 +3081238 +3081239 +3081240 +3081241 +3081242 +3081243 +3081244 +3081245 +3081246 +3081247 +3081248 +3081249 +3081250 +3081251 +3081252 +3081253 +3081254 +3081255 +3081256 +3081257 +3081258 +3081259 +3081260 +3081261 +3081262 +3081263 +3081264 +3081266 +3081267 +3081268 +3081269 +3081270 +3081271 +3081272 +3081273 +3081274 +3081275 +3081276 +3081277 +3081278 +3081279 +3081280 +3081281 +3081282 +3081283 +3081284 +3081285 +3081286 +3081287 +3081288 +3081289 +3081290 +3081291 +3081292 +3081293 +3081294 +3081295 +3081296 +3081297 +3081298 +3081299 +3081300 +3081301 +3081302 +3081303 +3081304 +3081305 +3081306 +3081307 +3081308 +3081309 +3081310 +3081311 +3081312 +3081313 +3081314 +3081315 +3081316 +3081317 +3081318 +3081319 +3081320 +3081321 +3081322 +3081323 +3081324 +3081325 +3081326 +3081327 +3081328 +3081329 +3081330 +3081331 +3081332 +3081333 +3081334 +3081335 +3081336 +3081337 +3081338 +3081339 +3081340 +3081341 +3081342 +3081343 +3085385 +3085386 +3085387 +3085388 +3085389 +3085390 +3085391 +3085392 +3085393 +3085394 +3085395 +3085396 +3085397 +3085398 +3085399 +3085400 +3085401 +3085402 +3085403 +3085404 +3085405 +3085406 +3085407 +3085408 +3085409 +3085410 +3085411 +3085412 +3085413 +3085414 +3085415 +3085416 +3085417 +3085418 +3085419 +3085420 +3085421 +3085422 +3085423 +3085424 +3085425 +3085426 +3085427 +3085428 +3085429 +3085430 +3085431 +3085432 +3085433 +3085434 +3085435 +3085436 +3085437 +3085438 +3085439 +3085440 +3085441 +3085442 +3085443 +3085444 +3085445 +3085446 +3085447 +3085448 +3085449 +3085450 +3085451 +3085452 +3085453 +3085454 +3085455 +3085456 +3085457 +3085458 +3085459 +3085460 +3085461 +3085462 +3085463 +3085464 +3085465 +3085466 +3085467 +3085468 +3085469 +3085470 +3085471 +3085472 +3085473 +3085474 +3085475 +3085476 +3085477 +3085478 +3085479 +3085480 +3085481 +3085482 +3085483 +3085484 +3085485 +3085486 +3085487 +3085488 +3085489 +3085490 +3085491 +3085492 +3085493 +3085494 +3085495 +3085496 +3085497 +3085498 +3085499 +3085500 +3085501 +3085502 +3085503 +3085504 +3085505 +3085506 +3085507 +3085508 +3085509 +3085510 +3085511 +3085512 +3085513 +3085514 +3085515 +3085516 +3085517 +3085518 +3085519 +3085520 +3085521 +3085522 +3085523 +3085524 +3085527 +3085528 +3085529 +3085530 +3085531 +3085532 +3085533 +3085534 +3085535 +3085536 +3085537 +3085538 +3085539 +3085540 +3085541 +3085542 +3085543 +3085544 +3085545 +3085546 +3085547 +3085548 +3085549 +3085550 +3085551 +3085552 +3085553 +3085554 +3085555 +3085556 +3085557 +3085558 +3085559 +3085560 +3085561 +3085562 +3085563 +3085564 +3085565 +3085566 +3085567 +3085568 +3085569 +3085570 +3085571 +3085572 +3085573 +3085574 +3085575 +3085576 +3085577 +3085578 +3085579 +3085580 +3085581 +3085582 +3085583 +3085585 +3085586 +3085587 +3085588 +3085589 +3085590 +3085591 +3085592 +3085593 +3085594 +3085595 +3085596 +3085597 +3085598 +3085599 +3085600 +3085601 +3085602 +3085603 +3085604 +3085605 +3085606 +3085607 +3085608 +3085609 +3085610 +3085611 +3085612 +3085613 +3085614 +3085615 +3085616 +3085617 +3085618 +3085619 +3085620 +3085621 +3085622 +3085623 +3085624 +3085625 +3085626 +3085627 +3085628 +3085629 +3085630 +3085631 +3085632 +3085633 +3085634 +3085635 +3085636 +3085637 +3085638 +3085639 +3085640 +3085641 +3085642 +3085643 +3085644 +3085645 +3085646 +3085647 +3085648 +3085649 +3085650 +3085651 +3085652 +3085653 +3085654 +3085655 +3085656 +3085657 +3085658 +3085659 +3085660 +3085661 +3085662 +3085663 +3085664 +3089705 +3089706 +3089707 +3089708 +3089709 +3089710 +3089711 +3089712 +3089713 +3089714 +3089715 +3089716 +3089717 +3089718 +3089719 +3089720 +3089721 +3089722 +3089723 +3089724 +3089725 +3089726 +3089727 +3089728 +3089729 +3089730 +3089731 +3089732 +3089733 +3089734 +3089735 +3089736 +3089737 +3089738 +3089739 +3089740 +3089741 +3089742 +3089743 +3089744 +3089745 +3089746 +3089747 +3089748 +3089749 +3089750 +3089751 +3089752 +3089753 +3089754 +3089755 +3089756 +3089757 +3089758 +3089759 +3089760 +3089761 +3089762 +3089763 +3089764 +3089765 +3089766 +3089767 +3089768 +3089769 +3089770 +3089771 +3089772 +3089773 +3089774 +3089775 +3089776 +3089777 +3089778 +3089779 +3089780 +3089781 +3089782 +3089783 +3089784 +3089785 +3089786 +3089787 +3089788 +3089789 +3089790 +3089791 +3089792 +3089793 +3089794 +3089795 +3089796 +3089797 +3089798 +3089799 +3089800 +3089801 +3089802 +3089803 +3089804 +3089805 +3089806 +3089807 +3089808 +3089809 +3089810 +3089811 +3089812 +3089813 +3089814 +3089815 +3089816 +3089817 +3089818 +3089819 +3089820 +3089821 +3089822 +3089823 +3089824 +3089825 +3089826 +3089827 +3089828 +3089829 +3089830 +3089831 +3089832 +3089833 +3089834 +3089835 +3089836 +3089837 +3089838 +3089839 +3089840 +3089841 +3089842 +3089843 +3089845 +3089846 +3089847 +3089848 +3089849 +3089850 +3089851 +3089852 +3089853 +3089854 +3089855 +3089856 +3089857 +3089858 +3089859 +3089860 +3089861 +3089862 +3089863 +3089864 +3089865 +3089866 +3089867 +3089868 +3089869 +3089870 +3089871 +3089872 +3089873 +3089874 +3089875 +3089876 +3089877 +3089878 +3089879 +3089880 +3089881 +3089882 +3089883 +3089884 +3089885 +3089886 +3089887 +3089888 +3089889 +3089890 +3089891 +3089892 +3089893 +3089894 +3089895 +3089896 +3089897 +3089898 +3089899 +3089900 +3089901 +3089902 +3089903 +3089906 +3089907 +3089908 +3089909 +3089910 +3089911 +3089912 +3089913 +3089914 +3089915 +3089916 +3089917 +3089918 +3089919 +3089920 +3089921 +3089922 +3089923 +3089924 +3089925 +3089926 +3089927 +3089928 +3089929 +3089930 +3089931 +3089932 +3089933 +3089934 +3089935 +3089936 +3089937 +3089938 +3089939 +3089940 +3089941 +3089942 +3089943 +3089944 +3089945 +3089946 +3089947 +3089948 +3089949 +3089950 +3089951 +3089952 +3089953 +3089954 +3089955 +3089956 +3089957 +3089958 +3089959 +3089960 +3089961 +3089962 +3089963 +3089964 +3089965 +3089966 +3089967 +3089968 +3089969 +3089970 +3089971 +3089972 +3089973 +3089974 +3089975 +3089976 +3089977 +3089978 +3089979 +3089980 +3089982 +3089983 +3089984 +3094025 +3094026 +3094027 +3094028 +3094029 +3094030 +3094031 +3094032 +3094033 +3094034 +3094035 +3094036 +3094037 +3094038 +3094039 +3094040 +3094041 +3094042 +3094043 +3094044 +3094045 +3094046 +3094047 +3094048 +3094049 +3094050 +3094051 +3094052 +3094053 +3094054 +3094055 +3094056 +3094057 +3094058 +3094059 +3094060 +3094061 +3094062 +3094063 +3094064 +3094065 +3094066 +3094067 +3094068 +3094069 +3094070 +3094071 +3094072 +3094073 +3094074 +3094075 +3094076 +3094077 +3094078 +3094079 +3094080 +3094081 +3094082 +3094083 +3094084 +3094085 +3094086 +3094087 +3094088 +3094089 +3094090 +3094091 +3094092 +3094093 +3094094 +3094095 +3094096 +3094097 +3094098 +3094099 +3094100 +3094101 +3094102 +3094103 +3094104 +3094105 +3094106 +3094107 +3094108 +3094109 +3094110 +3094111 +3094112 +3094113 +3094114 +3094115 +3094116 +3094117 +3094118 +3094119 +3094120 +3094121 +3094122 +3094123 +3094124 +3094125 +3094126 +3094127 +3094128 +3094129 +3094130 +3094131 +3094132 +3094133 +3094134 +3094135 +3094136 +3094137 +3094138 +3094139 +3094140 +3094141 +3094142 +3094143 +3094144 +3094145 +3094146 +3094147 +3094148 +3094149 +3094150 +3094151 +3094152 +3094153 +3094154 +3094155 +3094156 +3094157 +3094158 +3094159 +3094160 +3094161 +3094162 +3094163 +3094164 +3094165 +3094166 +3094167 +3094168 +3094169 +3094170 +3094171 +3094172 +3094173 +3094174 +3094175 +3094176 +3094177 +3094178 +3094179 +3094180 +3094181 +3094182 +3094183 +3094184 +3094185 +3094186 +3094187 +3094188 +3094189 +3094190 +3094191 +3094192 +3094193 +3094194 +3094195 +3094196 +3094197 +3094200 +3094201 +3094202 +3094203 +3094204 +3094205 +3094206 +3094207 +3094208 +3094250 +3094251 +3094252 +3094253 +3094254 +3094255 +3094256 +3094257 +3094258 +3094259 +3094260 +3094261 +3094262 +3094263 +3094264 +3094265 +3094266 +3094267 +3094268 +3094269 +3094270 +3094271 +3094272 +3094273 +3094274 +3094275 +3094276 +3094277 +3094278 +3094279 +3094280 +3094281 +3094282 +3094283 +3094284 +3094285 +3094286 +3094287 +3094288 +3094289 +3094290 +3094291 +3094292 +3094293 +3094294 +3094295 +3094296 +3094297 +3094298 +3094299 +3094300 +3094301 +3094302 +3094303 +3094304 +3098345 +3098346 +3098347 +3098348 +3098349 +3098350 +3098351 +3098352 +3098353 +3098354 +3098355 +3098356 +3098357 +3098358 +3098359 +3098360 +3098361 +3098362 +3098363 +3098364 +3098365 +3098366 +3098367 +3098368 +3098369 +3098370 +3098371 +3098372 +3098373 +3098374 +3098375 +3098376 +3098377 +3098378 +3098379 +3098380 +3098381 +3098382 +3098383 +3098384 +3098385 +3098386 +3098387 +3098388 +3098389 +3098390 +3098391 +3098392 +3098393 +3098394 +3098395 +3098396 +3098397 +3098398 +3098399 +3098400 +3098401 +3098402 +3098403 +3098404 +3098405 +3098406 +3098407 +3098408 +3098409 +3098410 +3098411 +3098412 +3098413 +3098414 +3098415 +3098416 +3098417 +3098418 +3098419 +3098420 +3098421 +3098422 +3098423 +3098424 +3098425 +3098426 +3098427 +3098428 +3098429 +3098430 +3098431 +3098432 +3098433 +3098434 +3098435 +3098436 +3098437 +3098438 +3098439 +3098440 +3098441 +3098442 +3098443 +3098444 +3098445 +3098446 +3098447 +3098448 +3098449 +3098450 +3098451 +3098452 +3098453 +3098454 +3098455 +3098456 +3098457 +3098458 +3098459 +3098460 +3098461 +3098462 +3098463 +3098464 +3098465 +3098466 +3098467 +3098468 +3098469 +3098470 +3098471 +3098472 +3098473 +3098474 +3098475 +3098476 +3098477 +3098478 +3098479 +3098480 +3098481 +3098482 +3098483 +3098484 +3098485 +3098486 +3098487 +3098488 +3098489 +3098490 +3098491 +3098492 +3098493 +3098494 +3098495 +3098496 +3098497 +3098498 +3098499 +3098500 +3098501 +3098502 +3098503 +3098504 +3098505 +3098506 +3098507 +3098508 +3098509 +3098510 +3098511 +3098512 +3098513 +3098514 +3098515 +3098516 +3098522 +3098523 +3098524 +3098525 +3098526 +3098527 +3098570 +3098571 +3098572 +3098573 +3098574 +3098575 +3098576 +3098577 +3098578 +3098579 +3098580 +3098581 +3098582 +3098583 +3098584 +3098585 +3098586 +3098587 +3098588 +3098589 +3098590 +3098591 +3098592 +3098593 +3098594 +3098595 +3098596 +3098597 +3098598 +3098599 +3098600 +3098601 +3098602 +3098603 +3098604 +3098605 +3098606 +3098607 +3098608 +3098609 +3098610 +3098611 +3098612 +3098613 +3098614 +3098615 +3098616 +3098617 +3098618 +3098619 +3098620 +3098621 +3098622 +3098623 +3098624 +3102665 +3102666 +3102667 +3102668 +3102669 +3102670 +3102671 +3102672 +3102673 +3102674 +3102675 +3102676 +3102677 +3102678 +3102679 +3102680 +3102681 +3102682 +3102683 +3102684 +3102685 +3102686 +3102687 +3102688 +3102689 +3102690 +3102691 +3102692 +3102693 +3102694 +3102695 +3102696 +3102697 +3102698 +3102699 +3102700 +3102701 +3102702 +3102703 +3102704 +3102705 +3102706 +3102707 +3102708 +3102709 +3102710 +3102711 +3102712 +3102713 +3102714 +3102715 +3102716 +3102717 +3102718 +3102719 +3102720 +3102721 +3102722 +3102723 +3102724 +3102725 +3102726 +3102727 +3102728 +3102729 +3102730 +3102731 +3102732 +3102733 +3102734 +3102735 +3102736 +3102737 +3102738 +3102739 +3102740 +3102741 +3102742 +3102743 +3102744 +3102745 +3102746 +3102747 +3102748 +3102749 +3102750 +3102751 +3102752 +3102753 +3102754 +3102755 +3102756 +3102757 +3102758 +3102759 +3102760 +3102761 +3102762 +3102763 +3102764 +3102765 +3102766 +3102767 +3102768 +3102769 +3102770 +3102771 +3102772 +3102773 +3102774 +3102775 +3102776 +3102777 +3102778 +3102779 +3102780 +3102781 +3102782 +3102783 +3102784 +3102785 +3102786 +3102787 +3102788 +3102789 +3102790 +3102791 +3102792 +3102793 +3102794 +3102795 +3102796 +3102797 +3102798 +3102799 +3102800 +3102801 +3102802 +3102803 +3102804 +3102805 +3102806 +3102807 +3102808 +3102809 +3102810 +3102811 +3102812 +3102813 +3102814 +3102815 +3102816 +3102817 +3102818 +3102819 +3102820 +3102821 +3102822 +3102823 +3102824 +3102825 +3102826 +3102827 +3102828 +3102829 +3102830 +3102831 +3102832 +3102833 +3102834 +3102835 +3102836 +3102841 +3102842 +3102843 +3102844 +3102845 +3102846 +3102847 +3102891 +3102892 +3102893 +3102894 +3102895 +3102896 +3102897 +3102898 +3102899 +3102900 +3102901 +3102902 +3102903 +3102904 +3102905 +3102906 +3102907 +3102908 +3102909 +3102910 +3102911 +3102912 +3102913 +3102914 +3102915 +3102916 +3102917 +3102918 +3102919 +3102920 +3102921 +3102922 +3102923 +3102924 +3102925 +3102926 +3102927 +3102928 +3102929 +3102930 +3102931 +3102932 +3102933 +3102934 +3102935 +3102936 +3102937 +3102938 +3102939 +3102941 +3102942 +3102943 +3102944 +3106985 +3106986 +3106987 +3106988 +3106989 +3106990 +3106991 +3106992 +3106993 +3106994 +3106995 +3106996 +3106997 +3106998 +3106999 +3107000 +3107001 +3107002 +3107003 +3107004 +3107005 +3107006 +3107007 +3107008 +3107009 +3107010 +3107011 +3107012 +3107013 +3107014 +3107015 +3107016 +3107017 +3107018 +3107019 +3107020 +3107021 +3107022 +3107023 +3107024 +3107025 +3107026 +3107027 +3107028 +3107029 +3107030 +3107031 +3107032 +3107033 +3107034 +3107035 +3107036 +3107037 +3107038 +3107039 +3107040 +3107041 +3107042 +3107043 +3107044 +3107045 +3107046 +3107047 +3107048 +3107049 +3107050 +3107051 +3107052 +3107053 +3107054 +3107055 +3107056 +3107057 +3107058 +3107059 +3107060 +3107061 +3107062 +3107063 +3107064 +3107065 +3107066 +3107067 +3107068 +3107069 +3107070 +3107071 +3107072 +3107073 +3107074 +3107075 +3107076 +3107077 +3107078 +3107079 +3107080 +3107081 +3107082 +3107083 +3107084 +3107085 +3107086 +3107087 +3107088 +3107089 +3107090 +3107091 +3107092 +3107093 +3107094 +3107095 +3107096 +3107097 +3107098 +3107099 +3107100 +3107101 +3107102 +3107103 +3107104 +3107105 +3107106 +3107107 +3107108 +3107109 +3107110 +3107111 +3107112 +3107113 +3107114 +3107115 +3107116 +3107117 +3107118 +3107119 +3107120 +3107121 +3107122 +3107123 +3107124 +3107125 +3107126 +3107127 +3107128 +3107129 +3107130 +3107131 +3107132 +3107133 +3107134 +3107135 +3107136 +3107137 +3107138 +3107139 +3107140 +3107141 +3107142 +3107143 +3107144 +3107145 +3107146 +3107147 +3107148 +3107149 +3107150 +3107151 +3107152 +3107153 +3107154 +3107155 +3107156 +3107157 +3107158 +3107159 +3107160 +3107161 +3107162 +3107163 +3107164 +3107166 +3107167 +3107168 +3107216 +3107217 +3107218 +3107219 +3107220 +3107221 +3107222 +3107223 +3107224 +3107225 +3107226 +3107227 +3107228 +3107234 +3107235 +3107236 +3107237 +3107238 +3107239 +3107240 +3107241 +3107242 +3107243 +3107244 +3107245 +3107246 +3107247 +3107248 +3107249 +3107250 +3107251 +3107252 +3107253 +3107254 +3107255 +3107256 +3107257 +3107258 +3107259 +3107261 +3107262 +3107263 +3107264 +3111305 +3111306 +3111307 +3111308 +3111309 +3111310 +3111311 +3111312 +3111313 +3111314 +3111315 +3111316 +3111317 +3111318 +3111319 +3111320 +3111321 +3111322 +3111323 +3111324 +3111325 +3111326 +3111327 +3111328 +3111329 +3111330 +3111331 +3111332 +3111333 +3111334 +3111335 +3111336 +3111337 +3111338 +3111339 +3111340 +3111341 +3111342 +3111343 +3111344 +3111345 +3111346 +3111347 +3111348 +3111349 +3111350 +3111351 +3111352 +3111353 +3111354 +3111355 +3111356 +3111357 +3111358 +3111359 +3111360 +3111361 +3111362 +3111363 +3111364 +3111365 +3111366 +3111367 +3111368 +3111369 +3111370 +3111371 +3111372 +3111373 +3111374 +3111375 +3111376 +3111377 +3111378 +3111379 +3111380 +3111381 +3111382 +3111383 +3111384 +3111385 +3111386 +3111387 +3111388 +3111389 +3111390 +3111391 +3111392 +3111393 +3111394 +3111395 +3111396 +3111397 +3111398 +3111399 +3111400 +3111401 +3111402 +3111403 +3111404 +3111405 +3111406 +3111407 +3111408 +3111409 +3111410 +3111411 +3111412 +3111413 +3111414 +3111415 +3111416 +3111417 +3111418 +3111419 +3111420 +3111421 +3111422 +3111423 +3111424 +3111425 +3111426 +3111427 +3111428 +3111429 +3111430 +3111431 +3111432 +3111433 +3111434 +3111435 +3111436 +3111437 +3111438 +3111439 +3111440 +3111441 +3111442 +3111443 +3111444 +3111445 +3111446 +3111447 +3111448 +3111449 +3111450 +3111451 +3111452 +3111453 +3111454 +3111455 +3111456 +3111457 +3111458 +3111459 +3111460 +3111461 +3111462 +3111463 +3111464 +3111465 +3111466 +3111467 +3111468 +3111469 +3111470 +3111471 +3111472 +3111473 +3111474 +3111475 +3111476 +3111477 +3111478 +3111479 +3111480 +3111481 +3111482 +3111483 +3111484 +3111486 +3111487 +3111488 +3111536 +3111537 +3111538 +3111539 +3111540 +3111541 +3111542 +3111543 +3111544 +3111545 +3111546 +3111547 +3111548 +3111554 +3111555 +3111556 +3111557 +3111558 +3111559 +3111560 +3111561 +3111562 +3111563 +3111564 +3111565 +3111566 +3111567 +3111568 +3111569 +3111570 +3111571 +3111572 +3111573 +3111574 +3111575 +3111576 +3111577 +3111578 +3111579 +3111580 +3111582 +3111583 +3111584 +3115625 +3115626 +3115627 +3115628 +3115629 +3115630 +3115631 +3115632 +3115633 +3115634 +3115635 +3115636 +3115637 +3115638 +3115639 +3115640 +3115641 +3115642 +3115643 +3115644 +3115645 +3115646 +3115647 +3115648 +3115649 +3115650 +3115651 +3115652 +3115653 +3115654 +3115655 +3115656 +3115657 +3115658 +3115659 +3115660 +3115661 +3115662 +3115663 +3115664 +3115665 +3115666 +3115667 +3115668 +3115669 +3115670 +3115671 +3115672 +3115673 +3115674 +3115675 +3115676 +3115677 +3115678 +3115679 +3115680 +3115681 +3115682 +3115683 +3115684 +3115685 +3115686 +3115687 +3115688 +3115689 +3115690 +3115691 +3115692 +3115693 +3115694 +3115695 +3115696 +3115697 +3115698 +3115699 +3115700 +3115701 +3115702 +3115703 +3115704 +3115705 +3115706 +3115707 +3115708 +3115709 +3115710 +3115711 +3115712 +3115713 +3115714 +3115715 +3115716 +3115717 +3115718 +3115719 +3115720 +3115721 +3115722 +3115723 +3115724 +3115725 +3115726 +3115727 +3115728 +3115729 +3115730 +3115731 +3115732 +3115733 +3115734 +3115735 +3115736 +3115737 +3115738 +3115739 +3115740 +3115741 +3115742 +3115743 +3115744 +3115745 +3115746 +3115747 +3115748 +3115749 +3115750 +3115751 +3115752 +3115753 +3115754 +3115755 +3115756 +3115757 +3115758 +3115759 +3115760 +3115761 +3115762 +3115763 +3115764 +3115765 +3115766 +3115768 +3115769 +3115770 +3115771 +3115772 +3115773 +3115774 +3115775 +3115776 +3115777 +3115778 +3115779 +3115780 +3115781 +3115782 +3115783 +3115784 +3115785 +3115786 +3115787 +3115788 +3115789 +3115790 +3115791 +3115792 +3115793 +3115794 +3115795 +3115796 +3115797 +3115798 +3115799 +3115800 +3115801 +3115802 +3115803 +3115804 +3115805 +3115806 +3115807 +3115808 +3115856 +3115857 +3115858 +3115859 +3115860 +3115861 +3115862 +3115863 +3115864 +3115865 +3115866 +3115867 +3115868 +3115876 +3115877 +3115878 +3115879 +3115880 +3115881 +3115882 +3115883 +3115884 +3115885 +3115886 +3115887 +3115888 +3115889 +3115890 +3115891 +3115892 +3115893 +3115894 +3115895 +3115896 +3115897 +3115898 +3115899 +3115900 +3115901 +3115902 +3115903 +3115904 +3119948 +3119949 +3119950 +3119951 +3119952 +3119953 +3119954 +3119955 +3119956 +3119957 +3119958 +3119959 +3119960 +3119961 +3119962 +3119963 +3119964 +3119965 +3119966 +3119987 +3119988 +3119989 +3119990 +3119991 +3119992 +3119993 +3119994 +3119995 +3119996 +3119997 +3119998 +3119999 +3120000 +3120001 +3120002 +3120003 +3120004 +3120005 +3120006 +3120007 +3120008 +3120009 +3120010 +3120011 +3120012 +3120013 +3120014 +3120015 +3120016 +3120017 +3120018 +3120019 +3120020 +3120021 +3120022 +3120023 +3120024 +3120025 +3120026 +3120027 +3120028 +3120029 +3120030 +3120031 +3120032 +3120033 +3120034 +3120035 +3120036 +3120037 +3120038 +3120039 +3120040 +3120041 +3120042 +3120043 +3120044 +3120045 +3120046 +3120047 +3120048 +3120049 +3120050 +3120051 +3120052 +3120053 +3120054 +3120055 +3120056 +3120057 +3120058 +3120059 +3120060 +3120061 +3120062 +3120063 +3120064 +3120065 +3120066 +3120067 +3120068 +3120069 +3120070 +3120071 +3120072 +3120073 +3120074 +3120086 +3120087 +3120088 +3120089 +3120090 +3120091 +3120092 +3120093 +3120094 +3120095 +3120096 +3120097 +3120098 +3120099 +3120100 +3120101 +3120102 +3120103 +3120104 +3120105 +3120106 +3120107 +3120108 +3120109 +3120110 +3120111 +3120112 +3120113 +3120114 +3120115 +3120116 +3120117 +3120118 +3120119 +3120120 +3120121 +3120122 +3120123 +3120124 +3120125 +3120176 +3120177 +3120178 +3120179 +3120197 +3120198 +3120199 +3120200 +3120201 +3120202 +3120203 +3120204 +3120205 +3120206 +3120207 +3120208 +3120209 +3120210 +3120211 +3120212 +3120213 +3120214 +3120215 +3120216 +3120217 +3120218 +3120219 +3120220 +3120221 +3120222 +3120223 +3120224 +3124268 +3124269 +3124270 +3124271 +3124272 +3124273 +3124274 +3124275 +3124276 +3124277 +3124278 +3124279 +3124280 +3124281 +3124282 +3124283 +3124284 +3124285 +3124286 +3124307 +3124308 +3124309 +3124310 +3124311 +3124312 +3124313 +3124314 +3124315 +3124316 +3124317 +3124318 +3124319 +3124320 +3124321 +3124322 +3124323 +3124324 +3124325 +3124326 +3124327 +3124328 +3124329 +3124330 +3124331 +3124332 +3124333 +3124334 +3124335 +3124336 +3124337 +3124338 +3124339 +3124340 +3124341 +3124342 +3124343 +3124344 +3124345 +3124346 +3124347 +3124348 +3124349 +3124350 +3124351 +3124352 +3124353 +3124354 +3124355 +3124356 +3124357 +3124358 +3124359 +3124360 +3124361 +3124362 +3124363 +3124364 +3124365 +3124366 +3124367 +3124368 +3124369 +3124370 +3124371 +3124372 +3124373 +3124374 +3124375 +3124376 +3124377 +3124378 +3124379 +3124380 +3124381 +3124382 +3124383 +3124384 +3124385 +3124386 +3124387 +3124388 +3124389 +3124390 +3124391 +3124392 +3124393 +3124394 +3124406 +3124407 +3124408 +3124409 +3124412 +3124413 +3124414 +3124415 +3124418 +3124419 +3124420 +3124421 +3124422 +3124423 +3124424 +3124425 +3124426 +3124427 +3124428 +3124429 +3124430 +3124431 +3124432 +3124433 +3124434 +3124435 +3124436 +3124437 +3124438 +3124439 +3124440 +3124441 +3124442 +3124443 +3124444 +3124445 +3124496 +3124497 +3124498 +3124499 +3124518 +3124519 +3124520 +3124521 +3124522 +3124523 +3124524 +3124525 +3124526 +3124527 +3124528 +3124529 +3124530 +3124531 +3124532 +3124533 +3124534 +3124535 +3124536 +3124537 +3124538 +3124539 +3124540 +3124541 +3124542 +3124543 +3124544 +3128588 +3128589 +3128590 +3128591 +3128592 +3128593 +3128594 +3128595 +3128596 +3128597 +3128598 +3128599 +3128600 +3128601 +3128602 +3128603 +3128604 +3128605 +3128606 +3128627 +3128628 +3128629 +3128630 +3128631 +3128632 +3128633 +3128634 +3128635 +3128636 +3128637 +3128638 +3128639 +3128640 +3128641 +3128642 +3128643 +3128644 +3128645 +3128646 +3128647 +3128648 +3128649 +3128650 +3128651 +3128652 +3128653 +3128654 +3128655 +3128656 +3128657 +3128658 +3128659 +3128660 +3128661 +3128662 +3128663 +3128664 +3128665 +3128666 +3128667 +3128668 +3128669 +3128670 +3128671 +3128672 +3128673 +3128674 +3128675 +3128676 +3128677 +3128678 +3128679 +3128680 +3128681 +3128682 +3128683 +3128684 +3128685 +3128686 +3128687 +3128688 +3128689 +3128690 +3128691 +3128692 +3128693 +3128694 +3128695 +3128696 +3128697 +3128698 +3128699 +3128700 +3128701 +3128702 +3128704 +3128705 +3128706 +3128707 +3128708 +3128709 +3128710 +3128711 +3128726 +3128727 +3128728 +3128729 +3128730 +3128731 +3128732 +3128733 +3128734 +3128735 +3128736 +3128737 +3128738 +3128739 +3128741 +3128742 +3128743 +3128744 +3128745 +3128746 +3128747 +3128748 +3128749 +3128750 +3128751 +3128752 +3128753 +3128754 +3128755 +3128756 +3128757 +3128758 +3128759 +3128760 +3128761 +3128762 +3128763 +3128764 +3128765 +3128818 +3128819 +3128840 +3128841 +3128842 +3128843 +3128844 +3128845 +3128846 +3128847 +3128848 +3128849 +3128850 +3128851 +3128852 +3128853 +3128854 +3128855 +3128856 +3128857 +3128858 +3128859 +3128860 +3128861 +3128862 +3128863 +3128864 +3128865 +3128866 +3132914 +3132915 +3132916 +3132917 +3132918 +3132919 +3132920 +3132921 +3132922 +3132923 +3132924 +3132925 +3132926 +3132950 +3132951 +3132952 +3132953 +3132954 +3132955 +3132956 +3132957 +3132958 +3132959 +3132960 +3132961 +3132962 +3132963 +3132964 +3132965 +3132966 +3132967 +3132968 +3132969 +3132970 +3132971 +3132972 +3132974 +3132975 +3132976 +3132977 +3132978 +3132979 +3132980 +3132981 +3132982 +3132983 +3132984 +3132985 +3132986 +3132987 +3132988 +3132989 +3132990 +3132991 +3132992 +3132993 +3132994 +3132995 +3132996 +3132997 +3132998 +3132999 +3133000 +3133001 +3133002 +3133003 +3133004 +3133005 +3133006 +3133007 +3133008 +3133009 +3133010 +3133011 +3133012 +3133013 +3133014 +3133015 +3133016 +3133017 +3133018 +3133019 +3133020 +3133021 +3133023 +3133024 +3133025 +3133064 +3133065 +3133066 +3133067 +3133068 +3133069 +3133070 +3133071 +3133072 +3133073 +3133074 +3133075 +3133076 +3133077 +3133078 +3133079 +3133080 +3133081 +3133082 +3133083 +3133084 +3133085 +3133160 +3133161 +3133162 +3133163 +3133164 +3133165 +3133166 +3133167 +3133168 +3133169 +3133170 +3133171 +3133172 +3133173 +3133174 +3133175 +3133176 +3133177 +3133178 +3133179 +3133180 +3133181 +3133182 +3133183 +3133184 +3133185 +3133186 +3133187 +3137234 +3137235 +3137236 +3137237 +3137238 +3137239 +3137240 +3137241 +3137242 +3137243 +3137244 +3137245 +3137246 +3137270 +3137271 +3137272 +3137273 +3137274 +3137275 +3137276 +3137277 +3137278 +3137279 +3137280 +3137281 +3137282 +3137283 +3137284 +3137285 +3137286 +3137287 +3137288 +3137289 +3137290 +3137291 +3137292 +3137293 +3137294 +3137295 +3137296 +3137297 +3137298 +3137299 +3137300 +3137301 +3137302 +3137303 +3137304 +3137305 +3137306 +3137307 +3137308 +3137309 +3137310 +3137311 +3137312 +3137313 +3137314 +3137315 +3137316 +3137317 +3137318 +3137319 +3137320 +3137321 +3137322 +3137323 +3137324 +3137325 +3137326 +3137327 +3137328 +3137329 +3137330 +3137331 +3137332 +3137333 +3137334 +3137335 +3137336 +3137337 +3137338 +3137339 +3137340 +3137341 +3137342 +3137344 +3137345 +3137384 +3137385 +3137386 +3137387 +3137388 +3137389 +3137390 +3137391 +3137392 +3137393 +3137394 +3137395 +3137396 +3137397 +3137398 +3137399 +3137400 +3137401 +3137402 +3137403 +3137404 +3137405 +3137480 +3137481 +3137482 +3137483 +3137484 +3137485 +3137486 +3137487 +3137488 +3137489 +3137490 +3137491 +3137492 +3137493 +3137494 +3137495 +3137496 +3137497 +3137498 +3137499 +3137500 +3137501 +3137503 +3137504 +3137505 +3137506 +3137507 +3141554 +3141555 +3141556 +3141557 +3141558 +3141559 +3141560 +3141561 +3141562 +3141563 +3141564 +3141565 +3141566 +3141590 +3141591 +3141592 +3141593 +3141594 +3141595 +3141596 +3141597 +3141598 +3141599 +3141600 +3141601 +3141602 +3141603 +3141604 +3141605 +3141606 +3141607 +3141608 +3141609 +3141610 +3141611 +3141612 +3141613 +3141614 +3141615 +3141616 +3141617 +3141618 +3141619 +3141620 +3141621 +3141622 +3141623 +3141624 +3141625 +3141626 +3141627 +3141628 +3141629 +3141630 +3141631 +3141632 +3141633 +3141634 +3141635 +3141636 +3141637 +3141638 +3141639 +3141640 +3141641 +3141642 +3141643 +3141644 +3141645 +3141646 +3141647 +3141648 +3141649 +3141650 +3141651 +3141652 +3141653 +3141654 +3141655 +3141656 +3141657 +3141658 +3141659 +3141660 +3141661 +3141662 +3141663 +3141664 +3141705 +3141706 +3141707 +3141708 +3141709 +3141710 +3141711 +3141712 +3141713 +3141714 +3141715 +3141716 +3141717 +3141718 +3141719 +3141720 +3141721 +3141722 +3141723 +3141724 +3141725 +3141726 +3141727 +3141728 +3141729 +3141730 +3141802 +3141803 +3141804 +3141805 +3141806 +3141807 +3141808 +3141809 +3141810 +3141811 +3141812 +3141813 +3141814 +3141815 +3141816 +3141817 +3141818 +3141819 +3141820 +3141821 +3141822 +3141823 +3141824 +3141825 +3141826 +3141827 +3145880 +3145881 +3145882 +3145883 +3145913 +3145914 +3145915 +3145916 +3145917 +3145918 +3145919 +3145920 +3145921 +3145922 +3145923 +3145924 +3145925 +3145926 +3145927 +3145928 +3145929 +3145930 +3145931 +3145932 +3145933 +3145934 +3145935 +3145936 +3145937 +3145938 +3145939 +3145940 +3145941 +3145942 +3145943 +3145944 +3145945 +3145946 +3145947 +3145948 +3145949 +3145950 +3145951 +3145952 +3145953 +3145954 +3145955 +3145956 +3145957 +3145958 +3145959 +3145960 +3145961 +3145962 +3145963 +3145964 +3145965 +3145966 +3145967 +3145968 +3145969 +3145970 +3145971 +3145972 +3145973 +3145974 +3145975 +3145976 +3145977 +3145978 +3145979 +3145980 +3145981 +3145982 +3146027 +3146028 +3146029 +3146030 +3146031 +3146032 +3146033 +3146039 +3146048 +3146049 +3146050 +3146051 +3146123 +3146124 +3146125 +3146126 +3146127 +3146128 +3146129 +3146130 +3146131 +3146132 +3146133 +3146134 +3146135 +3146136 +3146137 +3146138 +3146139 +3146140 +3146142 +3146143 +3146144 +3146145 +3146146 +3146147 +3150200 +3150201 +3150202 +3150203 +3150233 +3150234 +3150235 +3150236 +3150237 +3150238 +3150239 +3150240 +3150241 +3150242 +3150243 +3150244 +3150245 +3150246 +3150247 +3150248 +3150249 +3150250 +3150251 +3150252 +3150253 +3150254 +3150255 +3150256 +3150257 +3150258 +3150259 +3150260 +3150261 +3150262 +3150263 +3150264 +3150265 +3150266 +3150267 +3150268 +3150269 +3150270 +3150271 +3150272 +3150273 +3150274 +3150275 +3150276 +3150277 +3150278 +3150279 +3150280 +3150281 +3150282 +3150283 +3150284 +3150285 +3150286 +3150287 +3150288 +3150289 +3150290 +3150291 +3150292 +3150293 +3150294 +3150295 +3150296 +3150297 +3150298 +3150299 +3150300 +3150301 +3150302 +3150347 +3150348 +3150349 +3150350 +3150351 +3150352 +3150353 +3150359 +3150368 +3150369 +3150370 +3150371 +3150444 +3150445 +3150446 +3150447 +3150448 +3150449 +3150450 +3150451 +3150452 +3150453 +3150454 +3150455 +3150456 +3150457 +3150458 +3150459 +3150460 +3150461 +3150462 +3150463 +3150464 +3150465 +3150466 +3150467 +3154520 +3154521 +3154522 +3154523 +3154553 +3154554 +3154555 +3154556 +3154557 +3154558 +3154559 +3154560 +3154561 +3154562 +3154563 +3154564 +3154565 +3154566 +3154567 +3154568 +3154569 +3154570 +3154571 +3154572 +3154573 +3154574 +3154575 +3154576 +3154577 +3154578 +3154579 +3154580 +3154581 +3154582 +3154583 +3154584 +3154585 +3154586 +3154587 +3154588 +3154589 +3154590 +3154591 +3154592 +3154593 +3154594 +3154595 +3154596 +3154597 +3154598 +3154599 +3154600 +3154601 +3154602 +3154603 +3154604 +3154605 +3154606 +3154607 +3154608 +3154609 +3154610 +3154611 +3154612 +3154613 +3154614 +3154615 +3154616 +3154617 +3154618 +3154619 +3154620 +3154669 +3154670 +3154671 +3154672 +3154673 +3154679 +3154688 +3154689 +3154690 +3154691 +3154764 +3154766 +3154767 +3154768 +3154769 +3154770 +3154771 +3154772 +3154773 +3154774 +3154775 +3154776 +3154777 +3154778 +3154779 +3154780 +3154781 +3154782 +3154783 +3154784 +3154785 +3154786 +3154787 +3154788 +3154789 +3158876 +3158877 +3158878 +3158879 +3158880 +3158881 +3158882 +3158883 +3158884 +3158885 +3158886 +3158887 +3158888 +3158889 +3158890 +3158891 +3158892 +3158893 +3158894 +3158895 +3158896 +3158897 +3158898 +3158899 +3158900 +3158901 +3158902 +3158903 +3158904 +3158905 +3158906 +3158907 +3158908 +3158909 +3158910 +3158911 +3158912 +3158913 +3158914 +3158915 +3158916 +3158917 +3158918 +3158919 +3158920 +3158921 +3158922 +3158923 +3158924 +3158925 +3158926 +3158927 +3158928 +3158929 +3158930 +3158931 +3158932 +3158933 +3158934 +3158935 +3158936 +3159008 +3159089 +3159090 +3159091 +3159092 +3159093 +3159094 +3159095 +3159096 +3159097 +3159098 +3159099 +3159100 +3159101 +3159102 +3159103 +3159104 +3159105 +3159106 +3159107 +3159108 +3159109 +3159110 +3163196 +3163197 +3163198 +3163199 +3163200 +3163201 +3163202 +3163203 +3163204 +3163205 +3163206 +3163207 +3163208 +3163209 +3163210 +3163211 +3163212 +3163213 +3163214 +3163215 +3163216 +3163217 +3163218 +3163219 +3163220 +3163221 +3163222 +3163223 +3163224 +3163225 +3163226 +3163227 +3163228 +3163229 +3163230 +3163231 +3163232 +3163233 +3163234 +3163235 +3163236 +3163237 +3163238 +3163239 +3163240 +3163241 +3163242 +3163243 +3163244 +3163245 +3163246 +3163247 +3163248 +3163249 +3163250 +3163251 +3163252 +3163253 +3163254 +3163255 +3163256 +3163328 +3163409 +3163410 +3163411 +3163412 +3163413 +3163414 +3163415 +3163416 +3163417 +3163418 +3163419 +3163420 +3163421 +3163422 +3163423 +3163424 +3163425 +3163426 +3163427 +3163428 +3163429 +3163430 +3167516 +3167517 +3167518 +3167519 +3167520 +3167521 +3167522 +3167523 +3167524 +3167525 +3167526 +3167527 +3167528 +3167529 +3167530 +3167531 +3167532 +3167533 +3167534 +3167535 +3167536 +3167537 +3167538 +3167539 +3167540 +3167541 +3167542 +3167543 +3167544 +3167545 +3167546 +3167547 +3167548 +3167549 +3167550 +3167551 +3167552 +3167553 +3167554 +3167555 +3167556 +3167557 +3167558 +3167559 +3167560 +3167561 +3167562 +3167563 +3167564 +3167565 +3167566 +3167567 +3167568 +3167569 +3167570 +3167571 +3167572 +3167573 +3167574 +3167575 +3167576 +3167729 +3167730 +3167731 +3167732 +3167733 +3167734 +3167735 +3167736 +3167737 +3167738 +3167739 +3167740 +3167741 +3167742 +3167743 +3167744 +3167745 +3167746 +3167747 +3167748 +3167749 +3167750 +3167751 +3171836 +3171837 +3171838 +3171839 +3171840 +3171841 +3171842 +3171843 +3171844 +3171845 +3171846 +3171847 +3171848 +3171849 +3171850 +3171851 +3171852 +3171853 +3171854 +3171855 +3171856 +3171857 +3171858 +3171859 +3171860 +3171861 +3171862 +3171863 +3171864 +3171865 +3171866 +3171867 +3171868 +3171869 +3171870 +3171871 +3171872 +3171873 +3171874 +3171875 +3171876 +3171877 +3171878 +3171879 +3171880 +3171881 +3171882 +3171883 +3171884 +3171885 +3171886 +3171887 +3171888 +3171889 +3171890 +3172049 +3172050 +3172051 +3172052 +3172054 +3172055 +3172056 +3172057 +3172058 +3172059 +3172060 +3172061 +3172062 +3172063 +3172064 +3172065 +3172066 +3172067 +3172068 +3172069 +3172070 +3172071 +3172072 +3176156 +3176157 +3176158 +3176159 +3176160 +3176161 +3176162 +3176163 +3176164 +3176165 +3176166 +3176167 +3176168 +3176169 +3176170 +3176171 +3176172 +3176173 +3176174 +3176175 +3176176 +3176177 +3176178 +3176179 +3176180 +3176181 +3176182 +3176183 +3176184 +3176185 +3176186 +3176187 +3176188 +3176189 +3176190 +3176191 +3176192 +3176193 +3176194 +3176195 +3176196 +3176197 +3176198 +3176199 +3176200 +3176201 +3176202 +3176203 +3176204 +3176205 +3176206 +3176207 +3176208 +3176209 +3176210 +3176369 +3176370 +3176371 +3176372 +3176373 +3176374 +3176375 +3176376 +3176377 +3176378 +3176379 +3176380 +3176381 +3176382 +3176383 +3176384 +3176385 +3176386 +3176387 +3176388 +3176389 +3176390 +3176391 +3176392 +3176393 +3180476 +3180477 +3180478 +3180479 +3180480 +3180481 +3180482 +3180483 +3180484 +3180485 +3180486 +3180487 +3180488 +3180489 +3180490 +3180491 +3180492 +3180493 +3180494 +3180495 +3180496 +3180497 +3180498 +3180499 +3180500 +3180501 +3180502 +3180503 +3180504 +3180505 +3180506 +3180507 +3180508 +3180509 +3180510 +3180511 +3180512 +3180513 +3180514 +3180515 +3180516 +3180517 +3180518 +3180519 +3180520 +3180521 +3180522 +3180523 +3180524 +3180525 +3180527 +3180528 +3180689 +3180690 +3180691 +3180692 +3180693 +3180694 +3180695 +3180696 +3180697 +3180698 +3180699 +3180700 +3180702 +3180703 +3180704 +3180705 +3180706 +3180707 +3180708 +3180709 +3180710 +3180711 +3180712 +3180713 +3184799 +3184800 +3184801 +3184802 +3184803 +3184804 +3184805 +3184806 +3184807 +3184808 +3184809 +3184810 +3184811 +3184812 +3184813 +3184814 +3184815 +3184816 +3184817 +3184818 +3184819 +3184820 +3184821 +3184822 +3184823 +3184824 +3184825 +3184826 +3184827 +3184828 +3184829 +3184830 +3184831 +3184832 +3184833 +3184834 +3184835 +3184836 +3184837 +3184838 +3184839 +3184840 +3184841 +3184842 +3185009 +3185010 +3185011 +3185012 +3185013 +3185014 +3185015 +3185016 +3185017 +3185018 +3185019 +3185020 +3185021 +3185022 +3185023 +3185024 +3185025 +3185026 +3185027 +3185028 +3185029 +3185030 +3185031 +3185032 +3185033 +3189119 +3189120 +3189121 +3189122 +3189123 +3189124 +3189125 +3189126 +3189127 +3189128 +3189129 +3189130 +3189131 +3189132 +3189133 +3189134 +3189135 +3189136 +3189137 +3189138 +3189139 +3189140 +3189141 +3189142 +3189143 +3189144 +3189145 +3189146 +3189147 +3189148 +3189149 +3189150 +3189151 +3189152 +3189153 +3189154 +3189155 +3189156 +3189157 +3189158 +3189159 +3189160 +3189161 +3189162 +3189163 +3189329 +3189330 +3189331 +3189332 +3189333 +3189334 +3189335 +3189336 +3189337 +3189338 +3189339 +3189340 +3189341 +3189342 +3189343 +3189344 +3189345 +3189346 +3189347 +3189348 +3189349 +3189350 +3189351 +3189352 +3189353 +3193439 +3193440 +3193441 +3193442 +3193443 +3193444 +3193445 +3193446 +3193447 +3193448 +3193449 +3193450 +3193451 +3193452 +3193453 +3193454 +3193455 +3193456 +3193457 +3193458 +3193459 +3193460 +3193461 +3193462 +3193463 +3193464 +3193465 +3193466 +3193467 +3193468 +3193469 +3193470 +3193471 +3193472 +3193473 +3193474 +3193475 +3193476 +3193477 +3193478 +3193479 +3193480 +3193481 +3193482 +3193483 +3193484 +3193649 +3193650 +3193651 +3193652 +3193653 +3193654 +3193655 +3193656 +3193657 +3193658 +3193659 +3193660 +3193661 +3193662 +3193663 +3193664 +3193665 +3193666 +3193667 +3193668 +3193669 +3193670 +3193671 +3193672 +3193673 +3197762 +3197763 +3197764 +3197765 +3197766 +3197767 +3197768 +3197769 +3197770 +3197771 +3197772 +3197773 +3197774 +3197775 +3197776 +3197777 +3197778 +3197779 +3197780 +3197781 +3197782 +3197783 +3197784 +3197785 +3197786 +3197787 +3197788 +3197789 +3197790 +3197791 +3197792 +3197793 +3197794 +3197795 +3197796 +3197797 +3197798 +3197799 +3197800 +3197801 +3197969 +3197970 +3197971 +3197972 +3197973 +3197974 +3197975 +3197976 +3197977 +3197978 +3197979 +3197980 +3197981 +3197982 +3197983 +3197984 +3197986 +3197987 +3197988 +3197989 +3197990 +3197991 +3197992 +3197993 +3202082 +3202083 +3202084 +3202085 +3202086 +3202087 +3202088 +3202089 +3202090 +3202091 +3202092 +3202093 +3202094 +3202095 +3202096 +3202097 +3202098 +3202099 +3202100 +3202101 +3202102 +3202103 +3202104 +3202105 +3202106 +3202107 +3202108 +3202109 +3202110 +3202111 +3202112 +3202113 +3202114 +3202115 +3202116 +3202117 +3202118 +3202119 +3202120 +3202121 +3202289 +3202290 +3202291 +3202292 +3202293 +3202294 +3202295 +3202296 +3202297 +3202298 +3202299 +3202300 +3202301 +3202302 +3202303 +3202305 +3202306 +3202307 +3202308 +3202309 +3202310 +3202311 +3202312 +3202313 +3206402 +3206403 +3206404 +3206405 +3206406 +3206407 +3206408 +3206409 +3206410 +3206411 +3206412 +3206413 +3206414 +3206415 +3206416 +3206417 +3206418 +3206419 +3206420 +3206421 +3206422 +3206423 +3206424 +3206425 +3206426 +3206427 +3206428 +3206429 +3206430 +3206431 +3206432 +3206433 +3206434 +3206435 +3206436 +3206437 +3206438 +3206439 +3206440 +3206607 +3206608 +3206609 +3206610 +3206611 +3206612 +3206613 +3206614 +3206615 +3206616 +3206617 +3206618 +3206619 +3206620 +3206621 +3206622 +3206623 +3206624 +3206625 +3206626 +3206627 +3206628 +3206629 +3206630 +3206631 +3206632 +3206633 +3210722 +3210723 +3210724 +3210725 +3210726 +3210727 +3210728 +3210729 +3210730 +3210731 +3210732 +3210733 +3210734 +3210735 +3210736 +3210737 +3210738 +3210739 +3210740 +3210741 +3210742 +3210743 +3210744 +3210745 +3210746 +3210747 +3210748 +3210749 +3210750 +3210751 +3210752 +3210753 +3210754 +3210755 +3210756 +3210757 +3210758 +3210927 +3210928 +3210929 +3210930 +3210931 +3210932 +3210933 +3210934 +3210935 +3210936 +3210937 +3210938 +3210939 +3210940 +3210941 +3210942 +3210943 +3210944 +3210945 +3210946 +3210947 +3210948 +3210949 +3210950 +3210951 +3210952 +3210953 +3215042 +3215043 +3215044 +3215045 +3215046 +3215047 +3215048 +3215049 +3215050 +3215051 +3215052 +3215053 +3215054 +3215055 +3215056 +3215057 +3215058 +3215059 +3215060 +3215061 +3215062 +3215063 +3215064 +3215065 +3215066 +3215067 +3215068 +3215069 +3215070 +3215071 +3215072 +3215073 +3215074 +3215075 +3215076 +3215077 +3215246 +3215247 +3215248 +3215249 +3215250 +3215251 +3215252 +3215253 +3215254 +3215255 +3215256 +3215257 +3215258 +3215259 +3215260 +3215261 +3215262 +3215263 +3215264 +3215265 +3215266 +3215267 +3215268 +3215269 +3215270 +3215271 +3215272 +3215273 +3219362 +3219363 +3219364 +3219365 +3219366 +3219367 +3219368 +3219369 +3219370 +3219371 +3219372 +3219373 +3219374 +3219375 +3219376 +3219377 +3219378 +3219379 +3219380 +3219381 +3219382 +3219383 +3219384 +3219385 +3219386 +3219387 +3219388 +3219389 +3219390 +3219391 +3219392 +3219393 +3219394 +3219395 +3219396 +3219566 +3219567 +3219568 +3219569 +3219570 +3219571 +3219572 +3219573 +3219574 +3219575 +3219576 +3219577 +3219578 +3219579 +3219580 +3219581 +3219582 +3219583 +3219584 +3219586 +3219587 +3219588 +3219589 +3219590 +3219591 +3219592 +3219593 +3219594 +3219595 +3223688 +3223689 +3223690 +3223691 +3223692 +3223693 +3223694 +3223695 +3223696 +3223697 +3223698 +3223699 +3223700 +3223701 +3223702 +3223703 +3223704 +3223705 +3223706 +3223707 +3223708 +3223709 +3223710 +3223711 +3223712 +3223714 +3223715 +3223887 +3223888 +3223889 +3223891 +3223892 +3223893 +3223894 +3223895 +3223896 +3223897 +3223898 +3223899 +3223900 +3223901 +3223902 +3223903 +3223904 +3223905 +3223906 +3223907 +3223908 +3223909 +3223910 +3223911 +3223912 +3223913 +3223914 +3223915 +3223916 +3228008 +3228009 +3228010 +3228011 +3228012 +3228013 +3228014 +3228015 +3228016 +3228017 +3228018 +3228019 +3228020 +3228021 +3228022 +3228023 +3228024 +3228025 +3228026 +3228027 +3228028 +3228029 +3228030 +3228031 +3228032 +3228033 +3228034 +3228035 +3228207 +3228208 +3228209 +3228210 +3228211 +3228212 +3228213 +3228214 +3228215 +3228216 +3228217 +3228218 +3228219 +3228220 +3228221 +3228222 +3228223 +3228224 +3228225 +3228226 +3228227 +3228228 +3228229 +3228230 +3228231 +3228232 +3228233 +3228234 +3228235 +3228236 +3232328 +3232329 +3232330 +3232331 +3232332 +3232333 +3232334 +3232335 +3232336 +3232337 +3232338 +3232339 +3232340 +3232341 +3232342 +3232343 +3232344 +3232345 +3232346 +3232347 +3232348 +3232349 +3232350 +3232351 +3232352 +3232353 +3232354 +3232527 +3232528 +3232529 +3232530 +3232531 +3232532 +3232533 +3232534 +3232535 +3232536 +3232537 +3232538 +3232539 +3232540 +3232541 +3232542 +3232543 +3232544 +3232545 +3232546 +3232547 +3232548 +3232549 +3232550 +3232551 +3232552 +3232553 +3232554 +3232555 +3232556 +3236648 +3236649 +3236650 +3236651 +3236652 +3236653 +3236654 +3236655 +3236656 +3236657 +3236658 +3236659 +3236660 +3236661 +3236662 +3236663 +3236664 +3236665 +3236666 +3236667 +3236668 +3236669 +3236670 +3236671 +3236672 +3236849 +3236850 +3236851 +3236852 +3236853 +3236854 +3236855 +3236856 +3236857 +3236858 +3236859 +3236860 +3236861 +3236862 +3236863 +3236864 +3236865 +3236866 +3236867 +3236868 +3236869 +3236870 +3236871 +3236872 +3236873 +3236874 +3236875 +3236876 +3240968 +3240969 +3240970 +3240971 +3240972 +3240973 +3240974 +3240975 +3240976 +3240977 +3240978 +3240979 +3240980 +3240981 +3240982 +3240983 +3240984 +3240985 +3240986 +3240987 +3240988 +3240989 +3240990 +3240991 +3240992 +3241169 +3241170 +3241171 +3241172 +3241173 +3241174 +3241175 +3241176 +3241177 +3241178 +3241179 +3241180 +3241181 +3241182 +3241183 +3241184 +3241185 +3241186 +3241187 +3241188 +3241189 +3241190 +3241191 +3241192 +3241193 +3241194 +3241195 +3241196 +3245288 +3245289 +3245290 +3245291 +3245292 +3245293 +3245294 +3245295 +3245296 +3245297 +3245298 +3245299 +3245300 +3245301 +3245302 +3245303 +3245304 +3245305 +3245306 +3245307 +3245308 +3245309 +3245310 +3245311 +3245312 +3245489 +3245490 +3245491 +3245492 +3245493 +3245494 +3245495 +3245496 +3245497 +3245498 +3245499 +3245500 +3245501 +3245502 +3245503 +3245504 +3245506 +3245507 +3245508 +3245509 +3245510 +3245511 +3245512 +3245513 +3245514 +3245515 +3245516 +3245517 +3245518 +3249608 +3249609 +3249610 +3249611 +3249612 +3249613 +3249614 +3249615 +3249616 +3249617 +3249618 +3249619 +3249620 +3249621 +3249622 +3249623 +3249624 +3249625 +3249626 +3249627 +3249628 +3249629 +3249631 +3249632 +3249812 +3249813 +3249814 +3249815 +3249816 +3249817 +3249818 +3249819 +3249820 +3249821 +3249822 +3249823 +3249824 +3249825 +3249826 +3249827 +3249828 +3249829 +3249830 +3249831 +3249832 +3249833 +3249834 +3249835 +3249836 +3249837 +3249838 +3253928 +3253929 +3253930 +3253931 +3253932 +3253933 +3253934 +3253935 +3253936 +3253937 +3253938 +3253939 +3253940 +3253941 +3253942 +3253943 +3253944 +3253945 +3253946 +3253947 +3253948 +3253950 +3253951 +3253952 +3254132 +3254133 +3254134 +3254135 +3254136 +3254137 +3254138 +3254139 +3254140 +3254141 +3254142 +3254143 +3254144 +3254145 +3254146 +3254147 +3254148 +3254149 +3254150 +3254151 +3254152 +3254153 +3254154 +3254155 +3254156 +3254157 +3254158 +3254159 +3258248 +3258249 +3258250 +3258251 +3258252 +3258253 +3258254 +3258255 +3258256 +3258257 +3258258 +3258259 +3258260 +3258261 +3258262 +3258263 +3258264 +3258265 +3258266 +3258267 +3258268 +3258269 +3258270 +3258271 +3258272 +3258452 +3258453 +3258454 +3258455 +3258456 +3258457 +3258458 +3258459 +3258460 +3258461 +3258462 +3258463 +3258464 +3258465 +3258466 +3258467 +3258468 +3258469 +3258472 +3258473 +3258474 +3258475 +3258476 +3258477 +3258478 +3258479 +3262571 +3262572 +3262573 +3262574 +3262575 +3262576 +3262577 +3262578 +3262579 +3262580 +3262581 +3262582 +3262583 +3262584 +3262585 +3262586 +3262587 +3262588 +3262589 +3262590 +3262591 +3262592 +3262772 +3262773 +3262774 +3262775 +3262776 +3262777 +3262778 +3262779 +3262780 +3262781 +3262782 +3262783 +3262784 +3262785 +3262786 +3262787 +3262788 +3262789 +3262793 +3262794 +3262795 +3262796 +3262797 +3262798 +3262799 +3266891 +3266892 +3266893 +3266894 +3266895 +3266896 +3266897 +3266898 +3266899 +3266900 +3266901 +3266902 +3266903 +3266904 +3266905 +3266906 +3266907 +3266908 +3266909 +3266910 +3266912 +3267092 +3267093 +3267094 +3267095 +3267096 +3267097 +3267098 +3267099 +3267100 +3267101 +3267102 +3267103 +3267104 +3267105 +3267106 +3267107 +3267113 +3267114 +3267115 +3267116 +3267117 +3267118 +3267119 +3271211 +3271212 +3271213 +3271214 +3271215 +3271216 +3271217 +3271218 +3271219 +3271220 +3271221 +3271222 +3271223 +3271224 +3271225 +3271226 +3271227 +3271228 +3271229 +3271230 +3271232 +3271412 +3271413 +3271414 +3271415 +3271416 +3271417 +3271418 +3271419 +3271420 +3271421 +3271422 +3271423 +3271424 +3271425 +3271426 +3271427 +3271433 +3271434 +3271435 +3271436 +3271437 +3271438 +3271439 +3275531 +3275532 +3275533 +3275534 +3275535 +3275536 +3275537 +3275538 +3275539 +3275540 +3275541 +3275542 +3275543 +3275544 +3275545 +3275546 +3275547 +3275548 +3275549 +3275550 +3275551 +3275552 +3275735 +3275736 +3275737 +3275738 +3275739 +3275740 +3275741 +3275742 +3275743 +3275744 +3275745 +3275746 +3275747 +3275748 +3275753 +3275754 +3275755 +3275756 +3275757 +3275758 +3275759 +3279851 +3279852 +3279853 +3279854 +3279855 +3279856 +3279857 +3279858 +3279859 +3279860 +3279861 +3279862 +3279863 +3279864 +3279865 +3279866 +3279867 +3279868 +3279869 +3279870 +3279871 +3279872 +3280055 +3280056 +3280057 +3280058 +3280059 +3280060 +3280061 +3280062 +3280063 +3280064 +3280065 +3280066 +3280067 +3280068 +3280069 +3280072 +3280073 +3280074 +3280075 +3280076 +3280077 +3280078 +3280079 +3284171 +3284172 +3284173 +3284174 +3284175 +3284176 +3284177 +3284178 +3284179 +3284180 +3284181 +3284182 +3284183 +3284184 +3284185 +3284186 +3284187 +3284188 +3284189 +3284190 +3284191 +3284375 +3284376 +3284377 +3284378 +3284379 +3284380 +3284381 +3284382 +3284383 +3284384 +3284385 +3284386 +3284387 +3284388 +3284389 +3284390 +3284391 +3284392 +3284393 +3284394 +3284395 +3284396 +3284397 +3284398 +3284399 +3288497 +3288498 +3288499 +3288500 +3288501 +3288502 +3288503 +3288504 +3288505 +3288506 +3288507 +3288508 +3288509 +3288510 +3288511 +3288698 +3288699 +3288700 +3288701 +3288702 +3288703 +3288704 +3288705 +3288706 +3288707 +3288708 +3288709 +3288710 +3288711 +3288712 +3288713 +3288714 +3288715 +3288716 +3288717 +3288718 +3288719 +3292817 +3292818 +3292819 +3292820 +3292821 +3292822 +3292823 +3292824 +3292825 +3292826 +3292827 +3292828 +3292829 +3292830 +3292831 +3293018 +3293019 +3293020 +3293021 +3293022 +3293023 +3293024 +3293025 +3293026 +3293027 +3293028 +3293029 +3293030 +3293031 +3293032 +3293033 +3293034 +3293035 +3293036 +3293037 +3293038 +3293039 +3297137 +3297138 +3297139 +3297140 +3297141 +3297142 +3297143 +3297144 +3297145 +3297146 +3297147 +3297148 +3297149 +3297150 +3297151 +3297154 +3297338 +3297339 +3297340 +3297341 +3297342 +3297343 +3297344 +3297345 +3297346 +3297347 +3297348 +3297349 +3297350 +3297351 +3297352 +3297353 +3297354 +3297355 +3297356 +3297357 +3297358 +3297359 +3301463 +3301464 +3301465 +3301466 +3301467 +3301468 +3301469 +3301470 +3301471 +3301472 +3301474 +3301658 +3301659 +3301660 +3301661 +3301662 +3301663 +3301664 +3301665 +3301666 +3301667 +3301668 +3301669 +3301670 +3301671 +3301672 +3301673 +3301674 +3301675 +3301676 +3301677 +3301678 +3301679 +3305783 +3305784 +3305785 +3305786 +3305787 +3305788 +3305789 +3305790 +3305791 +3305792 +3305793 +3305794 +3305979 +3305980 +3305981 +3305982 +3305983 +3305984 +3305985 +3305986 +3305987 +3305988 +3305989 +3305990 +3305991 +3305992 +3305993 +3305994 +3305995 +3305996 +3305997 +3305998 +3305999 +3310103 +3310104 +3310105 +3310106 +3310107 +3310108 +3310109 +3310110 +3310111 +3310112 +3310113 +3310115 +3310299 +3310300 +3310301 +3310302 +3310303 +3310304 +3310305 +3310306 +3310307 +3310308 +3310309 +3310310 +3310311 +3310312 +3310313 +3310314 +3310315 +3310316 +3310317 +3310318 +3310319 +3314621 +3314622 +3314623 +3314624 +3314625 +3314626 +3314627 +3314628 +3314629 +3314630 +3314631 +3314632 +3314633 +3314634 +3314635 +3314636 +3314637 +3314638 +3314639 +3318941 +3318942 +3318943 +3318944 +3318945 +3318946 +3318947 +3318948 +3318949 +3318950 +3318951 +3318952 +3318953 +3318954 +3318955 +3318956 +3318957 +3318958 +3318959 +3323261 +3323262 +3323263 +3323264 +3323265 +3323266 +3323267 +3323268 +3323269 +3323270 +3323271 +3323272 +3323273 +3323274 +3323275 +3323276 +3323277 +3323278 +3323279 +3327584 +3327585 +3327586 +3327587 +3327588 +3327589 +3327590 +3327591 +3327592 +3327593 +3327594 +3327595 +3327596 +3327597 +3327598 +3327599 +3331904 +3331905 +3331906 +3331907 +3331908 +3331909 +3331910 +3331911 +3331912 +3331913 +3331914 +3331915 +3331916 +3331917 +3331918 +3331919 +3336225 +3336226 +3336227 +3336228 +3336229 +3336230 +3336231 +3336232 +3336233 +3336234 +3336235 +3336236 +3336237 +3340547 +3340548 +3340549 +3340550 +3340551 +3340552 +3340553 +3340554 +3340555 +3340556 +3344867 +3344868 +3344869 +3344870 +3344871 +3344872 +3344873 +3344874 +3344875 +3344876 +3349187 +3349188 +3349189 +3349190 +3349191 +3349192 +3349193 +3349194 +3349195 +3349196 +3353507 +3353508 +3353509 +3353510 +3353511 +3353512 +3353513 +3353514 +3353515 +3353516 +3357827 +3357828 +3357829 +3357830 +3357831 +3357832 +3357833 +3357834 +3357835 +3357836 +3362147 +3362148 +3362149 +3362150 +3362151 +3362152 +3362153 +3362155 +3362156 Added: SwiftApps/DSSAT/beagle/bin/run/DSSAT040.EXE =================================================================== (Binary files differ) Property changes on: SwiftApps/DSSAT/beagle/bin/run/DSSAT040.EXE ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: SwiftApps/DSSAT/beagle/bin/run/MINPT040.EXE =================================================================== (Binary files differ) Property changes on: SwiftApps/DSSAT/beagle/bin/run/MINPT040.EXE ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + application/octet-stream Added: SwiftApps/DSSAT/beagle/bin/run/data/DATA.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/DATA.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/DATA.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,725 @@ +*Codes for Field and Simulated Data +! DSSAT Version 4.0.2; 08/31/2005 + +! Codes currently used for both simulated and field data are listed in sections +! relating to specific model output files. Codes currently only used for field +! data are listed in a section headed Expdata. +! Codes are assigned as far as possible in accord with the following convention: +! 1st letter: Plant component (eg. C for canopy; H for harvest product) +! 2nd letter: Measurement aspect (eg. W for dry weight; N for nitrogen weight) +! 3rd letter: Basis of measurement (eg. A for unit area; P for plant) +! 4th letter: Time or stage of measurement (eg. D for specific day) +! For some aspects, however, this convention has been modified by dropping one +! of the letters and using the first 2 letters for the specific component(s).eg +! SU for sucrose. +! Codes for dates have letters for the stage first and then a D or DAT. +! +! Codes added for use with models other than those from DSSAT (eg.the ORYZA1 +! model of the SARP network) are listed in the OTHER MODELS section. +! +! The fields in the file are as follows: +! CDE The 'universal' code used to facilitate data interchange. +! LABEL A short description used when labelling graphs. +! DESCRIPTION A 55 character description of the aspect. +! SYNONYMS Additional codes that may be used locally (eg. YIELD for HWAM) + +*SUMMARY + at CDE LABEL DESCRIPTION............................................ SYNONYMS +ADAT Anthesis date Anthesis date (YrDoy) . +ADAP Anthesis day Anthesis day (dap) . +BWAH Byproduct kg/ha By-product removed during harvest (kg [dm]/ha) . +BWAM Byproduct kg/ha By-product produced (stalk) at maturity (kg[dm]/ha) . +CFAH F cane yl kg/ha Fresh cane yield (kg/ha) . +CHTA Canopy height m Canopy height (m) . +CNAA Tops N,anthesis Tops N at anthesis (kg/ha) . +CNAM Tops N kg/ha Tops N at maturity (kg/ha) . +CPAM Tops P kg/ha Tops P at maturity (kg/ha) . +CWAA Tops wt,anthsis Tops weight at anthesis (kg [dm]/ha) . +CWAM Tops wt kg/ha Tops weight at maturity (kg [dm]/ha) . +DRCM Drainage mm Season water drainage (mm) . +DWAP Sowing wt kg/ha Planting material weight (kg [dm]/ha) . +E#AM Number #/m2 Eye number at maturity (no/m2) . +E#UM Number #/unit Eye number at maturity (no/fruit) . +EPCM EP total mm Total season transpiration (mm) . +ESCM ES total mm Total season soil evaporation (mm) . +ETCM ET total mm Total season evapotranspiration (mm) . +EWUM Eye wt. (g) Eye weight (g) . +FDAT Forcing date Forcing date (YrDoy) . +FNAM Field name Field name . +FWAH Fresh wt. harv Fresh weight at harvest (t/ha) . +GL%M Grain oil%,matu Grain oil at maturity (%) . +GN%M Grain N%,mature Grain N at maturity (%) . +GNAM Grain N kg/ha Grain N at maturity (kg/ha) . +H#AM Number #/m2 Number at maturity (no/m2) . +H#GM Number #/m2 Number at maturity (no/m2) . +H#UM Number #/unit Number at maturity (no/unit) . +HDAT Harvest date Harvest date (YRDOY) . +HDAP Harvest day Harvest day (dap) . +HIAM Harvest index Harvest index at maturity . +HIPM Pod index Pod harvest index at maturity . +HPRH Purity % Purity immediately after harvest (%) . +HWAH Harvested yield Harvested yield (kg [dm]/ha) . +HWAM Mat Yield kg/ha Yield at harvest maturity (kg [dm]/ha) . +HWUM Weight g/unit Unit wt at maturity (g [dm]/unit) . +HYAH Field wt Mg/ha Field weight at harvest (Mg [fm]/ha) . +IDAT Panicle in date Panicle Initiation date (YrDoy) . +IDAP Panicle in day Panicle Initiation day (dap) . +IR#M Irrig apps # Irrigation applications (no) . +IRCM Irrig mm Season irrigation (mm) . +L#SM Leaf number # Leaf number per stem at maturity . +L#SX Leaf number # Leaf number per stem, maximum . +LAIX LAI maximum Leaf area index, maximum . +LIWAM Lint Yld kg/ha Lint Yield at maturity (kg [dm]/ha) . +MDAT Maturity date Physiological maturity date (YrDoy) . +MDAP Maturity day Physiological maturity day (dap) . +NFXM N fixed kg/h N fixed during season (kg/ha) . +NI#M N application # N applications (no) . +NIAM Soil N kg/ha Inorganic N at maturity (kg [N]/ha) . +NICM Tot N app kg/ha Inorganic N applied (kg [N]/ha) . +NLCM N leached kg/ha N leached during season (kg [N]/ha) . +NUCM N uptake kg/ha N uptake during season (kg [N]/ha) . +OCAM Organic C kg/ha Organic soil C at maturity (kg/ha) . +ONAM Organic N kg/ha Organic soil N at maturity (kg/ha) . +OCTAM Tot Org C kg/ha Total Organic C at maturity, soil and surface (kg/ha) . +ONTAM Tot Org N kg/ha Total Organic N at maturity, soil and surface (kg/ha) . +P#AM Pod/Panicle#/m2 Pod/Panicle (no/m2) . +PD1T 1st pod date yd First pod date (YrDoy) . +PD1P 1st pod day yd First pod day (dap) . +PDAT Planting date Planting date (YrDoy) . +PDFT 1st seed date First seed date (YrDoy) . +PDFP 1st seed day First seed day (dap) . +PI#M P application # Number of P applications (no) . +PICM P applied kg/ha Inorganic P applied (kg/ha) . +PM%M Mature pods % Mature Pods (%) . +PRCM Precip mm Total season precipitation (mm) . +PUPC P uptake kg/ha Seasonal cumulative P uptake (kg[P]/ha) . +PWAM Pod/Ear w kg/ha Pod/Ear/Panicle weight at maturity (kg [dm]/ha) . +RECM Residue kg/ha Residue applied (kg/ha) . +RNAH Rt N upt kg/ha Root N uptake (kg/ha) . +ROCM Runoff mm Season surface runoff (mm) . +R1AT First bloom Beginning Bloom Stage . +R2AT First peg Beginning Peg Stage . +R3AT First pod Beginning Pod Stage . +R4AT Full pod Full Pod Stage . +R5AT First seed Beginning Seed Stage . +R6AT Full seed Full Seed Stage . +R7AT First maturity Beginning Maturity Stage . +R8AT Harv maturity Date of Harvest Maturity Stage (YrDoy) . +R8AP Harv maturity Harvest maturity day (dap) . +R9AT Over-mature Over-Mature Pod Stage . +SDAT Simulation date Simulation start date (YrDoy) . +SNAM Stem n,maturity Stem N at maturity (kg/ha) . +SPAM Soil P kg/ha Soil P at maturity (kg/ha) . +SWXM Extr water mm Extractable water at maturity (mm) . +T#AM Tiller no #/m2 Tiller number at maturity (no/m2) . +TDAT Tuber init date Tuber initiation date (YrDoy) . +TDAP Tuber init day Tuber initiation day (dap) . +THAM Threshing % Threshing % at maturity . +TNAH Biomass N kg/ha Tuber+stem+leaf N at harvest (kg/ha) . +TNAM Treatment name Treatment title . +TN%H Tuber N % Tuber N at harvest (%) . +TWAH Total wt kg/ha Total wt, harvest (kg [dm]/ha) . +UNAM Tuber N kg/ha Tuber N at harvest (kg/ha) . +UN%H Tuber N % Tuber N at harvest (%) . +UWAH Tuber kg dm/ha Tuber dry weight (kg [dm]/ha) harvest . +UYAH Tuber Mg fm/ha Tuber fresh weight (Mg [fm]/ha) harvest . +WSTA Weather station Weather station . + +*GROWTH + at CDE LABEL DESCRIPTION............................................ SYNONYMS +A#PD Apex number Apex number per plant (#) . +BWAD Basal weight Basal weight (kg [dm]/ha) . +CDAD Dead canopy Dead canopy weight (kg [dm]/ha) . +CDAY Crop age days Crop age (days from planting) . +CDVD Crop age vdays Crop age (Vegetative days) . +CFAD F cane yl kg/ha Fresh cane yield (kg [fm]/ha) . +CHTD Canopy height m Canopy height (m) . +CRAD Crown weight Crown weight (kg [dm]/ha) . +CWAD Tops wt kg/ha Tops weight (kg [dm]/ha) . +CWPD Tops wt g/pl Tops weight (g [dm]/pl) . +CWID Canopy width m Canopy width (m;for 1 row) . +EAID Ear area index Ear area index (ha [ear]/ha [ground]) . +E#AD Ear no./m2 Ear number (no/m2) . +EWAD Ear wt. kg/ha Ear (grain+chaff) weight (kg [dm]/ha) . +EWSD Excess H20 str Excess Water Stress - (0-1) . +FWAD Fruit weight Fresh Fruit Weight (kg/ha) . +G#AD Grain no #/m2 Grain number (no/m2) . +GL%D Grain oil % Grain oil (%) . +GSTD Growth stage Growth stage . +GWAD Grain wt kg/ha Grain weight (kg [dm]/ha) . +GWGD Grain wt mg Unit grain weight (mg [dm]/grain) . +HCRD Comm cane sugar Commercial cane sugar . +HIAD Harvest index Harvest index (grain/top) . +HIPD Pod index Pod harvest index (pod/top) . +HWAD Harvest wt Harvest product wt (kg [dm]/ha . +HYAD Field wt Mg/ha Field weight (Mg [fm]/ha) . +L#SD Leaf number Leaf number per stem . +LAID LAI Leaf area index . +LAWD SLA cm2/g Specific leaf area (cm2/g) . +LDAD Dead leaf kg/ha Dead leaf weight (kg [dm]/ha) . +LN%D Leaf N % Leaf nitrogen concentration (%) . +LNUM Leaf number Leaf number (Haun stage) . +LRSD Leaf app rate Leaf appearance rate (#/bday) . +LWAD Leaf wt kg/ha Leaf weight (kg [dm]/ha) . +NFTID N factor till N factor for tillering (0-1) . +NSPAV N stress (av) Nitrogen stress (av) - photosynthesis (0-1, 0=none) . +NSTD N stress factor Nitrogen stress factor (0-1) . +NUPR N upt demand N uptake to demand ratio (#) . +NWAD Nodule wt kg/ha Nodule weight (kg [dm]/ha) . +O#AD Corm no #/m2 Corm (no/m2) . +OWAD Corm kg dm/ha Corm dry weight (kg/ha) . +OWGD Corm wt g Unit corm weight (g [dm]/corm) . +P#AD Pod no #/m2 Pod number (no/m2) . +PMWD Planting wt Planting material wt (kg/ha) . +PRSD Shoot fraction Partitioning of wt to shoot (ratio) . +PWAD Pod wt kg/ha Pod weight (kg [dm]/ha) . +PWDD Detached pod wt Detached pod weight (kg [dm]/ha) . +PWTD Pod wt kg/ha Total pod weight (kg [dm]/ha) . +RDAD Dead root kg/ha Dead root weight (kg [dm]/ha) . +RGRD Relative gr (%) Relative growth rate (g/100g.day) . +RDPD Root depth m Root depth (m) . +RL10 RLD layer 10 Root density, 180-210 cm (cm/cm3) . +RL1D RLD layer 1 Root density, 0-5 cm (cm/cm3) . +RL2D RLD layer 2 Root density, 5-15 cm (cm/cm3) . +RL3D RLD layer 3 Root density, 15-30 cm (cm/cm3) . +RL4D RLD layer 4 Root density, 30-45 cm (cm/cm3) . +RL5D RLD layer 5 Root density, 45-60 cm (cm/cm3) . +RL6D RLD layer 6 Root density, 60-90 cm (cm/cm3) . +RL7D RLD layer 7 Root density, 90-120 cm (cm/cm3) . +RL8D RLD layer 8 Root density, 120-150 cm (cm/cm3) . +RL9D RLD layer 9 Root density, 150-180 cm (cm/cm3) . +RN%D Root N % Root N concentration (%) . +RWAD Root wt kg/ha Root weight (kg [dm]/ha) . +RSPD Rt senesce g/pl Root senescence (g [dm]/pl) . +SDAD Dead stem kg/ha Dead stem weight (kg [dm]/ha) . +SEAD Senesce kg/ha.d Senescence,tops (kg [dm]/(ha.day)) . +SH%D Shelling % Shelling % (seed wt/pod wt*100) . +SHAD Shell wt kg/ha Shell weight (kg [dm]/ha) . +SHND Shell N % Shell N concentration (%) . +SLAD SLA cm2/g Specific leaf area (cm2/g) . +SN%D Stem N % Stem N concentration (%) . +SUAD Sucrose kg/ha Sucrose weight (kg [dm]/ha) . +SUGD Sucker weight Sucker weight (kg [dm]/ha) . +SUID Sucrose index Sucrose harvest index (sucrose/top) . +SWAD Stem wt kg/ha Stem weight (kg [dm]/ha) . +T#AD Tiller no #/m2 Tiller number (no/m2) . +T#SD Leaf tip no Leaf tip number per stem . +TAID Total LAI Total leaf area index (live+dead) . +TDRW Total biomass Total crop biomass (kg [dm]/ha) . +TKILL Pl death tmp ?C Temperature for plant death (?C) . +TRAD Trash DM kg/ha Trash weight (kg [dm]/ha) . +UYAD Tuber Mg fm/ha Tuber fresh weight (Mg [fm]/ha) . +UWAD Tuber kg dm/ha Tuber dry weight (kg [dm]/ha) . +WAVR H2O av to dm Water available to demand ratio (#) . +WFGD H20 factor,gr Water factor for growth (0-1) . +WFTID H2O factor, til Water factor tillering (0-1) . +WFPD H20 factor,ph Water factor for photosynthesis (0-1) . +WLVG Green lf kg/ha Dry weight of green leaves (kg/ha) . +WSGD H20 stress,gr Water stress - growth (0-1) . +WSPD H20 stress,ph Water stress - photosynthesis (0-1) . +WSPAV H2O stress (av) Water stress (avg) - photosynthesis (0-1,0=none) . +WUPR H2O upt to dem Water uptake to demand ratio (#) . + +*NITROGEN + at CDE LABEL DESCRIPTION............................................ SYNONYMS +AMLS NH3vol kgN/ha/d Ammonia Volatilization (kg [N]/ha/day) . +AMLC NH3vol kgN/ha Cumulative Ammonia Volatilization (kg [N]/ha) . +CNAD Crop N kg/ha Tops N (kg/ha) . +GN%D Grain N % Grain N concentration (%) . +GNAD Grain N kg/ha Grain N (kg/ha) . +LCNF Leaf Crit N Fac Leaf critical N factor (ratio) . +LN%D Leaf N % Leaf N concentration (%) . +LNAD Leaf N kg/ha Leaf N (kg/ha) . +NAPC N Applied kg/ha Inorganic N applied (kg/ha) . +NDNC Denitrification Cumulative denitrification (kg [N]/ha) . +NFXC N Fixed kg/ha N fixed (kg/ha) . +NFXD N Fixed kg/ha.d N fixation rate (kg/(ha.day)) . +NH10 NH4 layer 10 NH4, 180-210 cm (ug [N]/g [soil]) . +NH1D NH4 layer 1 NH4, 0-5 cm (ug [N]/g [soil]) . +NH2D NH4 layer 2 NH4, 5-15 cm (ug [N]/g [soil]) . +NH3D NH4 layer 3 NH4, 15-30 cm (ug [N]/g [soil]) . +NH4D NH4 layer 4 NH4, 30-45 cm (ug [N]/g [soil]) . +NH5D NH4 layer 5 NH4, 45-60 cm (ug [N]/g [soil]) . +NH6D NH4 layer 6 NH4, 60-90 cm (ug [N]/g [soil]) . +NH7D NH4 layer 7 NH4, 90-120 cm (ug [N]/g [soil]) . +NH8D NH4 layer 8 NH4, 120-150 cm (ug [N]/g [soil]) . +NH9D NH4 layer 9 NH4, 150-180 cm (ug [N]/g [soil]) . +NHTD Total NH4 kg/ha Total soil NH4 (kg [N]/ha) . +NI10 NO3 layer 10 NO3, 180-210 cm (ug [N]/g [soil]) . +NI1D NO3 layer 1 NO3, 0-5 cm (ug [N]/g [soil]) . +NI2D NO3 layer 2 NO3, 5-15 cm (ug [N]/g [soil]) . +NI3D NO3 layer 3 NO3, 15-30 cm (ug [N]/g [soil]) . +NI4D NO3 layer 4 NO3, 30-45 cm (ug [N]/g [soil]) . +NI5D NO3 layer 5 NO3, 45-60 cm (ug [N]/g [soil]) . +NI6D NO3 layer 6 NO3, 60-90 cm (ug [N]/g [soil]) . +NI7D NO3 layer 7 NO3, 90-120 cm (ug [N]/g [soil]) . +NI8D NO3 layer 8 NO3, 120-150 cm(ug [N]/g [soil]) . +NI9D NO3 layer 9 NO3, 150-180 cm (ug [N]/g [soil]) . +NIAD Tot soil N kg/haTotal soil NO3+NH4 (kg [N]/ha) . +NIMC N Immobilize Cumulative N immobilization (kg [N]/ha) . +NITC Nitrification Cumulative nitrification (kg [N]/ha) . +NITD Total NO3 kg/ha Total soil NO3 (kg [N]/ha) . +NLCC N Leached kg/ha N leached (kg [N]/ha) . +NMNC N Mineralize Cumulative N mineralization (kg [N]/ha) . +NOAD Organic N kg/ha Organic N in soil (kg [N]/ha) . +NUAC N Uptake kg/ha N uptake (kg [N]/ha) . +NUAD N Uptake kg/ha N uptake, cumulative (kg [N]/ha) . +NUPC N Uptake kg/ha N uptake (kg [N]/ha) . +OXRN Oxnitr kgN/ha/d Ox Layer Nitrif Rt (kg [N]/ha/d) . +RCNF Roots Crit N Fc Roots critical [N] factor (ratio) . +RN%D Root N % Root N concentration (%) . +RNUA NUptake kg/ha.d N uptake (kg [N]/(ha.d)) . +RSVN Reserve N g/p Reserve N (g/p) . +RSNAD Reserve N kg/ha Reserve N (kg/ha) . +SCNF Stem Crit N Fac Stem critical N factor (ratio) . +SENC0 Sen C to lit Senesced C added to litter (kg/(ha.d)) . +SENCS Sen C to soil Senesced C added to soil (kg/(ha.d)) . +SENL0 Sen lign to lit Senesced lignin added to litter (kg/(ha.d)) . +SENLS Sen lign to sl Senesced lignin added to soil (kg/(ha.d)) . +SENNT Sen N kg/ha.d Senesced N added to litter+soil (kg/(ha.d)) . +SENN0 Sen N to litter Senesced N added to litter (kg/(ha.d)) . +SENNS Sen N to soil Senesced N added to soil (kg/(ha.d)) . +SENWT Sen wt kg/ha.d Senesced wt added to litter+soil (kg/(ha.d)) . +SHND Shell N % Shell N concentration (%) . +SN%D Stem N % Stem N concentration (%) . +SNAD Stem N kg/ha Stem N (kg/ha) . +TUNA Total N kg/ha Tuber+stem+leaf N (kg/ha) . +UNAD Tuber N kg/ha Tuber N (kg/ha) . +UN%D Tuber N % Tuber N concentration (%) . +VN%D Veg N % Veg (stem+leaf) N concentration (%) . +VNAD Vege N kg/ha Veg (stem+leaf) N (kg/ha) . + +*WATER + at CDE LABEL DESCRIPTION............................................ SYNONYMS +DA3D Daylength h Daylength (h;3 deg basis) . +DAYD Daylength h Daylength (h;sunrise to sunset) . +DRNC Drainage Mm Cumulative drainage (mm) . +DTR Shortwave RAD Daily shortwave radiation (J/(m2.d)) . +DTWT Water table cm Water table depth (cm) . +EOAA Pot ET mm/d Avg pot.evapotranspiration (mm/d) . +EOAD Pot ET mm/d Potential evapotranspiration (mm/d) . +EPAA Transpir mm/d Avg plant transpiration (mm/d) . +EPAC Transpiration Cumulative transpiration (mm) . +EPAD Transpir mm/d Plant transpiration (mm/d) . +ESAA Soil EVAP mm/d Avg soil evaporation (mm/d) . +ESAC Soil EVAP mm Cumulative soil evaporation (mm) . +ESAD Soil EVAP mm/d Soil evaporation (mm/d) . +ETAA Evapotrans mm/d Avg evapotranspiration (mm/d) . +ETAC Evapotrans mm Cumulative evapotranspiration (mm) . +ETAD Evapotrans mm/d Evapotranspiration (mm/d) . +H2OA H2O in root zn Water available in root zone (mm) . +IR#C Irrigation # Irrigation applications (no) . +IRRC Irrigation mm Cumulative irrigation (mm) . +PREC Precipitation Cumulative precipitation (mm) . +ROFC Runoff mm Cumulative runoff (mm) . +SEDM Sediment LOSS Sediment loss . +SRAA SRAD MJ/m2.day Avg solar radiation (MJ/(m2.day)) . +SW10 SWC layer 10 Soil water, 180-210 cm (cm3/cm3) . +SW1D SWC layer 1 Soil water,0-5 cm (cm3/cm3) . +SW2D SWC layer 2 Soil water,5-15 cm (cm3/cm3) . +SW3D SWC layer 3 Soil water,15-30 cm (cm3/cm3) . +SW4D SWC layer 4 Soil water,30-45 cm (cm3/cm3) . +SW5D SWC layer 5 Soil water,45-60 cm (cm3/cm3) . +SW6D SWC layer 6 Soil water,60-90 cm (cm3/cm3) . +SW7D SWC layer 7 Soil water,90-120 cm (cm3/cm3) . +SW8D SWC layer 8 Soil water,120-150 cm (cm3/cm3) . +SW9D SWC layer 9 Soil water,150-180 cm (cm3/cm3) . +SWXD Extr water mm Extractable water (mm) . +TMNA Minimum temp ?C Avg minimum temperature (?C) . +TMXA Maximum temp ?C Avg maximum temperature (?C) . +TS10 S-TMP layer 10 Soil temperature, 180-210 cm (?C) . +TS1D S-TMP layer 1 Soil temperature, 0-5 cm (?C) . +TS2D S-TMP layer 2 Soil temperature, 5-15 cm (?C) . +TS3D S-TMP layer 3 Soil temperature, 15-30 cm (?C) . +TS4D S-TMP layer 4 Soil temperature, 30-45 cm (?C) . +TS5D S-TMP layer 5 Soil temperature, 45-60 cm (?C) . +TS6D S-TMP layer 6 Soil temperature, 60-90 cm (?C) . +TS7D S-TMP layer 7 Soil temperature, 90-120 cm (?C) . +TS8D S-TMP layer 8 Soil temperature, 120-150 cm (?C) . +TS9D S-TMP layer 9 Soil temperature, 150-180 cm (?C) . + +*CARBON + at CDE LABEL DESCRIPTION............................................ SYNONYMS +CGRD CGR g/m2.d Crop growth rate (g [top+store]/(m2.d)) . +CHAD CH2O g/m2.d Carbohydrate accumulation (g [CH2O]/(m2.d)) . +CL%D LEAF CH2O % Carbohydrate in leaf (%) . +CMAD CH2O MOB g/m2.d Carbohydrate mobilization (g [CH2O]/(m2.d)) . +CS%D STEM C % Carbohydrate in stem (%) . +GC%D GRAIN CH2O % Seed carbohydrate concentration (%) . +GL%D SEED OIL % Seed oil concentration (%) . +GN%D SEED N % Seed N concentration (%) . +GRAD GR RESP g/m2.d Growth respiration (g [CH2O]/(m2.d)) . +HUM1 SOIL C1 kg/ha Soil carbon in layer 1 (kg/ha) . +HUM2 SOIL C2 kg/ha Soil carbon in layer 2 (kg/ha) . +HUM3 SOIL C3 kg/ha Soil carbon in layer 3 (kg/ha) . +HUM4 SOIL C4 kg/ha Soil carbon in layer 4 (kg/ha) . +HUM5 SOIL C5 kg/ha Soil carbon in layer 5 (kg/ha) . +LI%D LIGHT INTER % Light (PAR) interception (%) . +LI%N NOON LIGHT IN % Noon light (PAR) interception (%) . +LMHN NOON PMAX,SHADE Noon Pmax shaded leaves (mg/(m2.s)) . +LMLN NOON PMAX,LIGHT Noon Pmax sunlit leaves (mg/(m2.s)) . +MRAD M RESP g/m2.d Maintenance resp (g [CH2O]/(m2.d)) . +N%HN NOON N,SHADE % Noon N shaded leaves (%) . +N%LN NOON N,LIGHT % Noon N sunlit leaves (%) . +NHU1 SOIL N1 kg/ha Soil nitrogen in layer 1 (kg/ha) . +NHU2 SOIL N2 kg/ha Soil nitrogen in layer 2 (kg/ha) . +NHU3 SOIL N3 kg/ha Soil nitrogen in layer 3 (kg/ha) . +NHU4 SOIL N4 kg/ha Soil nitrogen in layer 4 (kg/ha) . +NHU5 SOIL N5 kg/ha Soil nitrogen in layer 5 (kg/ha) . +OMAC OM APPL kg/ha Cumulative organic matter applied (kg [dm]/ha) . +ONAC ON APPL kg/ha Cumulative N in applied organic matter (kg [dm]/ha) . +PHAD P GROSS g/m2.d Gross photosynthesis (g [CH2O]/(m2.d)) . +PHAN PG,NOON mg/m2.s Gross photosyn.,noon (mg CO2/(m2.s)) . +SCDD SOIL ORG C Stable soil org. C @ user depth (kg/ha) . +SLHN NOON SLW,SHADE SLW in shaded leaves,noon (mg [dm]/cm2) . +SLLN NOON SLW,Light SLW in sunlit leaves,noon (mg [dm]/cm2) . +SNDD SOIL ORG N Stable soil org. N @ user depth (kg/ha) . +SOCD SOIL OC kg/ha Soil plus surface organic carbon (kg/ha) . +SOND SOIL ON kg/ha Soil plus surface organic nitrogen (kg/ha) . +TGAV AVG CAN TMP ?C Daily average canopy temp (?C) . +TGNN NOON CAN TMP ?C Noon canopy temperature (?C) . +TWAD TOTAL WT kg/ha Tops+roots+storage wt (kg [dm]/ha) . +TFOM RESIDUE kg/ha Plant residue remaining (kg [dm]/ha) . +TFON RESIDUE N kg/ha Plant residue N remaining (kg/ha) . + +*PESTS + at CDE LABEL DESCRIPTION............................................ SYNONYMS +CASM ASSIM g CH2O Cumulative assimilate reduction . +CEW CEW #/row-m Corn Earworm . +CLAI DIS LAI m2/m2 Cumulative leaf area consumed . +CLFM DIS LEAF kg/ha Cumulative leaf mass consumed . +CPO% DIS PLTPOP % Cumulative pl population reduction . +CRLF DIS ROOT cm/cm2 Cumulative root length consumed . +CRLV DIS ROOT cm/cm2 Cumulative root ln density consumed . +CRTM DIS ROOT kg/ha Cumulative root mass consumed . +CSD# DIS SEED #/m2 Cumulative seed number consumed . +CSDM DIS SEED kg/ha Cumulative seed mass consumed . +CSH# DIS SHELL #/m2 Cumulative shell number consumed . +CSHM DIS SHELL kg/ha Cumulative shell mass consumed . +CSTM DIS STEM kg/ha Cumulative stem mass consumed . +DASM ASSIM g CH2O/d Daily carbohydrate pool reduction . +DLA DIS. LAI cm2/m2 Daily diseased leaf area increase . +DLA% DIS. LAI %/d Daily % diseased leaf area increase . +DLAI DIS LAI m2/m2.d Daily leaf area consumed . +DLFM DIS. LF kg/ha.d Daily leaf mass consumed . +DPO% DIS PLPOP %/day Daily plant population reduction . +DRLF DIS RT cm/cm2.d Daily total root length consumed . +DRLV DIS RT cm/cm3.d Daily root length density consumed . +DRTM DIS RT kg/ha.d Daily root mass consumed . +DSD# DIS SEED #/m2.d Daily seed number consumed . +DSDM DIS SEED kg/ha Daily seed mass consumed . +DSH# DIS SHL #/m2.d Daily shell number consumed . +DSHM DIS SHL kg/ha.d Daily shell mass consumed . +DSTM DIS STEM kg/ha Daily stem mass consumed . +FAW FAW #/m Fall armyworm . +RTWM RTWM #/m Root worm . +SGSB SGSB #/m Southern green stinkbug . +SL SB LOOPER #/m Soybean looper . +VBC5 VBC5 #/m 5 instar velvetbean caterpillar . +VBC6 VBC6 #/m 6 instar velvetbean caterpillar . + +*EXPERIMENTAL DATA + at CDE LABEL DESCRIPTION............................................ SYNONYMS +AP1D APEX 1cm day Apex 1cm date (YrDoy) . +BR1D BRANCH 1 YrDoy Branch 1 date (YrDoy) . +BR2D BRANCH 2 YrDoy Branch 1 date (YrDoy) . +BR3D BRANCH 3 YrDoy Branch 1 date (YrDoy) . +BR4D BRANCH 4 YrDoy Branch 1 date (YrDoy) . +CDWA CANOPY+D kg/ha Tops+dead wt (kg [dm]/ha . +CHN% CHAFF N % Chaff N (%) . +CHWA CHAFF WT kg/ha Chaff weight (kg [dm]/ha) . +DRID DOUBLE RIDGES d Double ridges date (YrDoy) . +DWAD DEAD WT kg/ha Dead material weight (kg [dm]/ha) . +EDAT EMERGENCE day Emergence date (YrDoy) . +EEMD EAR EMERGENCE d Ear emergence date (YrDoy) . +EGWA EAR+GRAIN kg/ha Ear plus grain weight (kg [dm]/ha) . +EGWS EAR+GRAIN g/s Ear+grain weight (g [dm]/shoot . +G#PD GRAIN NO #/pl Grain number (no/plant) . +G#SD GRAIN NO #shoot Grain number (no/shoot) . +GW%M GRAIN H20 % Grain moisture at maturity (%) . +GWAM GRAIN WT kg/ha Grain wt at maturity (kg [dm]/ha) . +GWGM GRAIN WT mg Unit wt at maturity (mg [dm]/grain) . +GWPM GRAIN WT g/pl Grain wt at maturity (g [dm]/plan . +GYAM GRAIN YLD kg/ha Grain yield at maturity (kg [fm]/ha) . +GYPM GRAIN YLD g/pl Grain yld at maturity (g [fm]/plan . +GYVM TEST WT kg/hl Test weight at maturity (kg [fm]/hl) . +HWAC COR YIELD kg/ha Corrected yield (kg [dm]/ha) . +HWAD YIELD kg/ha Yield on specified day (kg [dm]/ha) . +HYAM HARVEST kg/ha Harvest yld at maturity (kg [fm]/ha) . +LAFD FLAG AREA cm2 Flag leaf area (cm2/leaf) . +LALD LEAF AREA cm2 Leaf area (cm2/leaf) . +LALN LEAF AREA,NEW Leaf area,new leaves (cm2/[leaf]) . +LAPD LEAF AREA cm2/p Leaf area (cm2/plant) . +LARD LEAF APPEARANCE Leaf appearance rate (#/day) . +L#IR LEAF # INCREASE Leaf number increase rate (#/day) . +LF3D LEAF 3 FULL day Full expansion, leaf 3 (Yrdoy) . +LF5D LEAF 5 FULL day Full expansion, leaf 5 (Yrdoy) . +LLFD LAST LEAF day Last leaf date (YrDoy) . +LWAM LEAF WT kg/ha Leaf weight (kg/ha) . +LWPD LEAF WT g/plant Leaf weight (g/plant) . +PARI PAR INTERCEPT % PAR interception (%) . +RLAD ROOT LN cm/cm2 Root length (cm/cm2) . +RLWD ROOT L/W cm/g Root length/weight (cm/g) . +RWLD ROOT W/L g/cm Root weight/length (g/cm) . +S#PD SHOOT NO #/pl Shoot (apex) number (no/plant) . +S#AD SHOOT NO #/m2 Shoot (apex) number (no/m2) . +SCWA STM+CHAFF kg/ha Stem plus chaff (kg/ha) . +SDWT SEED WT g/pl Seed weight (g/plant) . +SP#P SPIKELETS #/pl Spikelet number (no/plant) . +SWPD STEM WT g/plant Stem weight (g [dm]/plant) . +T#PD TILLER NO.#/pl Tiller number (no/plant) . +T#AD TILLER NO.#/m2 Tiller number (no/m2) . +TDWA TOTAL+D kg/ha Tops+roots+storage+dead (kg [dm]/ha) . +TNIM TOTAL N kg/ha Total N at maturity (kg [N]/ha) . +TSPD TERMINAL SPKL d Terminal spikelet date (YrDoy) . +TWAM TOTAL WT kg/ha Total wt, maturity (kg [dm]/ha) . +VWAM VEG WT kg/ha Veg (leaf+stemt) wt,maturity (kg [dm]/ha) . +Z21D ZADOKS 21 day Zadoks 21 date (YrDoy) . +Z30D ZADOKS 30 day Zadoks 30 date (YrDoy) . +Z31D ZADOKS 31 day Zadoks 31 date (YrDoy) . +Z37D ZADOKS 37 day Zadoks 37 date (YrDoy) . +Z39D ZADOKS 39 day Zadoks 39 date (YrDoy) . + +*USER + at CDE LABEL DESCRIPTION............................................ SYNONYMS +ABUND BUND HT mm Bund height (mm) . +AMLS NH3VOL kgN/ha/d Ammonia Volatilization Rate (kg [N]/(ha.day)) . +EFAC CUM FLD EVAP mm Cumulative floodwater evaporation (mm) . +EFAD FLD EVAP mm/d Floodwater evaporation rate (mm/d) . +FALG ALGAL ACTIVITY Floodwater Photosynth. Act. Index (0 to 1) . +FALI FLOOD LT INDX Floodwater Light Index (0 to 1) . +FDEN DNITRF kgN/ha/d Floodwater Denitrification Rate (kg [N]/(ha.day)) . +FLBD Puddle BD g/cc Puddled Soil Surface Layer Bulk Density (g/cc) . +FL3C FLD NH3 mg N/l Floodwater Aqueous Ammonia (NH3) Conc. (mg [N]/l) . +FL3N FLD NO3 mg N/l Floodwater Nitrate N (NO3) Conc. (mg [N]/l) . +FL4N FLD NH4 kgN/ha Floodwater Ammoniacal N (kg [N]/ha) . +FL4C FLD NH4 mg N/l Floodwater Ammonium N (NH4) Conc. (mg [N]/l) . +FLDD FLOOD DEPTH mm Flood water depth (mm) . +FLNI FLOOD NIT INDX Floodwater Nitrogen Index (0 to 1) . +FLPH FLOOD pH Maximum Daytime Floodwater pH . +FLTI FLOOD TMP INDX Floodwater Temperature Index (0 to 1) . +FLUR FLD UREA kgN/ha Floodwater Urea N (kg N/Ha) . +FROD FLOOD RO mm/d Flood water runoff over bund (mm/d) . +FUHY UREA HYD kgN/ha Urea Hydrolysis Rate in Floodwater (kg [N]/(ha.day)) . +INFD INFILT mm/d Infiltration rate (mm/d) . +IRRD IRRIG mm/d Irrigation (mm/d) . +OXRN OXNITR kgN/ha/d Oxidized Layer Nitrificaton Rate (kg [N]/(ha.day)) . +ROFD SRF RNOFF mm/d Surface Runoff (mm/d) . +TL#C TILLAGE # Number of tillage operations . +TLDD TILL DEP cm Depth of last tillage operation (cm) . + +*WEATHER + at CDE LABEL DESCRIPTION............................................ SYNONYMS +PRED PRECIP mm/d Precipitation depth (mm/d) . +DYLD DAYLENGTH hr Day length sunrise to sunset (hr) . +SRAD SRAD MJ/m2.d Solar radiation (MJ/(m2.d)) . +PARD PAR Daily PAR or photon flux density (moles[quanta]/(m2.d)) . +CLDD CLOUD FRAC Relative cloudiness factor (0-1) . +TMXD MAX TEMP ?C Maximum daily temperature (?C) . +TMND MIN TEMP ?C Minimum daily temperature (?C) . +TAVD AVG TEMP ?C Average daily temperature (?C) . +TDYD AV DAY TMP ?C Average temperature during daylight hours (?C) . +TDWD DEWPOINT ?C Dewpoint temperature (?C) . +TGAD AV GRWTH TMP ?C Average daily air temperature for growth (?C) . +TGRD AV GRWTH TMP ?C Average air temp. daylight hours for growth (?C) . +TWLD TWILIGHT hr Twilight to twilight day length (hr) . +WDSD WIND SPEED km/d Wind speed (km/d) . +CO2D CO2 ppm Atmospheric CO2 concentration (ppm) . + +*OTHER MODELS + at CDE LABEL DESCRIPTION............................................ SYNONYMS +TRRD TRANSLOC RESP Translocation respiration (g/(m2.d) or kg/(ha.d)) . +LA%D ABSORBED PAR Absorbed PAR (%) . +ACO2 AMBIENT CO2 Ambient CO2 level (ppm) . +TMEN MEAN TEMP ?C Daily mean temperature (?C) . +P#AM PANICLE #/m2 Panicle number (#/m2) . +PMAD PANICLE WT g/m2 Panicle weight (grain+structural;g/m2 or kg/ha) . +SLND SPECIFIC LF N Specific leaf N (g [N]/cm2 [leaf]) . +SSAD STRUCTURAL STEM Structural stem weight (g/m2 or kg/ha) . +RSAD STEM RESERVES Stem reserves weight (g/m2 or kg/ha) . +AWAG ASSIM kg/ha.d Assimilate production (kg/(ha.d)) . +CHNAD CHAFF N kh/ha Chaff N (kg/ha) . +CHWAD CHAFF WT kg/ha Chaff weight (kg/ha) . +CN%D TOPS N % Tops (ie.canopy) N (%) . +CNAD CROP N kg/ha Tops N (kg/ha) . +CO2FP CO2 FACTOR CO2 factor for photosynthesis (0-10) . +CWAD TOPS WT kg/ha Tops weight (kg [dm]/ha) . +DAP DAYS>PLANTING Days after planting . +DAS DAYS>START Days after start of simulation . +DAYLF DAYLENGTH FAC Daylength factor (0-1) . +DNAG DEAD N kg/ha.d Dead N increment (kg/(ha.d)) . +DOY DAY OF YEAR Day of year . +DWAD DEAD WT kg/ha Dead material weight (kg [dm]/ha) . +DWAG DEAD WT kg/ha.d Dead material increase (kg [dm]/(ha.d)) . +G#AD GRAIN NO #/m2 Grain number (no/m2) . +GN%D GRAIN N % Grain N concentration (%) . +GNAD GRAIN N kg/ha Grain N (kg/ha) . +GSTD GROWTH STAGE Growth stage . +GWAD GRAIN WT kg/ha Grain weight (kg [dm]/ha) . +GWGD GRAIN WT mg Unit grain weight (mg [dm]/gin) . +HIAD HARVEST INDEX Harvest index (grain/top) . +HIND HARVEST N INDEX Harvest index fo N (grain [N]/tops [N]) . +L#SD LEAF NUMBER Leaf number per stem . +LAID LAI Leaf area index . +LN%D LEAF N % Leaf N concentration (%) . +LNAD LEAF N kg/ha Leaf N (kg/ha) . +LWAD LEAF WT kg/ha Leaf weight (kg [dm]/ha) . +NFGD N FACTOR,GROWTH N factor for leaf growth (0-1) . +NFPD N FACTOR,PHOTSN N factor for photosynthesis (0-1) . +NFSD N FACTOR,SENES N factor for senescence (0-1) . +NFTD N FACTOR,TILLER N factor for tillering (0-1) . +NFUD N FACTOR,UPTAKE N factor for N uptake (fr) . +NSTD N STRESS FACTOR Nitrogen stress factor (0-1) . +PARI PAR INTERCEPT % PAR interception (%) . +PARUE PAR UTIZATION PAR utilization efficiency (g/MJ) . +PTF SHOOT FRACTION Partitioning of wt to shoot (ratio) . +RDPD ROOT DEPTH m Root depth (m) . +RL10D RLD layer 10 Root density in layer 10 (cm/cm3) . +RL1D RLD layer 1 Root density in layer 1 (cm/cm3) . +RL2D RLD layer 2 Root density in layer 2 (cm/cm3) . +RL3D RLD layer 3 Root density in layer 3 (cm/cm3) . +RL4D RLD layer 4 Root density in layer 4 (cm/cm3) . +RL5D RLD layer 5 Root density in layer 5 (cm/cm3) . +RL6D RLD layer 6 Root density in layer 6 (cm/cm3) . +RL7D RLD layer 7 Root density in layer 7 (cm/cm3) . +RL8D RLD layer 8 Root density in layer 8 (cm/cm3) . +RL9D RLD layer 9 Root density in layer 9 (cm/cm3) . +RN%D ROOT N % Root N concentration (%) . +RNAD ROOT N kg/ha Root N (kg/ha) . +RS%D RESERVES % Reserves concentration (%) . +RSFP RESERVES FACTOR Reserves factor for photosynthesis (0-1) . +RSWAD RESERVES kg/ha Reserves weight (kg/ha) . +RWAD ROOT WT kg/ha Root weight (kg [dm]/ha) . +S#AD SHOOT NO #/m2 Shoot (apex) number (no/m2) . +SAID STEM AREA INDEX Stem area index (m2/m2) . +SDN%D SEED N % Seed (ie.what sown) N (%) . +SDNAD SEED N kg/ha Seed (ie.what sown) N (kg/ha) . +SDWAD SEED WT kg/ha Seed (ie.what sown) weight (kg/ha) . +SNW0C Senes Surf Wt. Senesced dry matter to surface (kg/ha) . +SNW1C Senes Soil Wt. Senesced dry matter to soil (kg/ha) . +SNN0C Senes Surf N Senesced N to surface (kg[N]/ha) . +SNN1C Senes Soil N Senesced N to soil (kg[N]/ha) . +SLAD SLA cm2/g Specific leaf area (cm2/g) . +SN%D STEM N % Stem N concentration (%) . +SNAD STEM N kg/ha Stem N (kg/ha) . +SWAD STEM WT kg/ha Stem weight (kg (dm)/ha) . +TFGD TEMP FAC GROWTH Temperature factor for leaf growth (0-1) . +TFPD TEMP FAC PHS Temperature factor for photosynthesis (0-1) . +TNAD TOPS N kg/ha Tops (ie canopy) N (kg/ha) . +TWAD TOTAL WT kg/ha Tops+roots+storage wt (kg (dm)/ha) . +VN%D VEG N % Veg (stem+leaf) N concentration (%) . +VRNF VERNALIZE FAC Vernalization factor (0-1) . +WFSD WATER FAC SENES Water factor for senescence (0-1) . +WFTD WATER FAC TRANS Water factor for transpiration (0-1) . +WSGD H20 STRESS,GR Water stress - growth (0-1) . +WSPD H20 STRESS,PHS Water stress - photosynthesis (0-1) . +WSTD H2O STRESS,TILR Water stress - tillering (0-1) . +YEAR YEAR Year (4 digits) . + +*SOIL ORGANIC MATTER + at CDE LABEL DESCRIPTION............................................ SYNONYMS +CO20C SurfCO2 (kg/ha) Accumulated surface CO2 (kg/ha) . +CO2SC SoilCO2 (kg/ha) Accumulated soil CO2 (kg/ha) . +LCTD LitC (kg/ha) Total soil litter carbon (kg/ha) . +LC0D LitC L0 (kg/ha) Litter C on surface (kg/ha) . +LC1D LitC L1 (kg/ha) Litter C - soil layer 1 (kg/ha) . +LC2D LitC L2 (kg/ha) Litter C - soil layer 2 (kg/ha) . +LC3D LitC L3 (kg/ha) Litter C - soil layer 3 (kg/ha) . +LC4D LitC L4 (kg/ha) Litter C - soil layer 4 (kg/ha) . +LC5+D LitC L5+(kg/ha) Litter C - soil layer 5 thru bottom of profile (kg/ha) . +LNTD LitN (kg/ha) Total soil litter N (kg/ha) . +LN0D LitN L0 (kg/ha) Litter N on surface (kg/ha) . +LN1D LitN L1 (kg/ha) Litter N - soil layer 1 (kg/ha) . +LN2D LitN L2 (kg/ha) Litter N - soil layer 2 (kg/ha) . +LN3D LitN L3 (kg/ha) Litter N - soil layer 3 (kg/ha) . +LN4D LitN L4 (kg/ha) Litter N - soil layer 4 (kg/ha) . +LN5+D LitN L5+(kg/ha) Litter N - soil layer 5 thru bottom of profile(kg/ha) . +MECTD MetLitC (kg/ha) Total soil metabolic litter C (kg/ha) . +MEC0D MLitC-0 (kg/ha) Metabolic litter C surface (kg/ha) . +MEC1D MLitC-1 (kg/ha) Metabolic litter C layer 1 (kg/ha) . +MEC2D MLitC-2 (kg/ha) Metabolic litter C layer 2 (kg/ha) . +MEC3D MLitC-3 (kg/ha) Metabolic litter C layer 3 (kg/ha) . +MEC4D MLitC-4 (kg/ha) Metabolic litter C layer 4 (kg/ha) . +MEC5+D MLitC-5+(kg/ha) Metabolic litter C layer 5 thru bottom of profile(kg/ha) . +MENTD MetLitN (kg/ha) Total soil metabolic litter N (kg/ha) . +MEN0D MLitN-0 (kg/ha) Metabolic litter N surface (kg/ha) . +MEN1D MLitN-1 (kg/ha) Metabolic litter N layer 1 (kg/ha) . +MEN2D MLitN-2 (kg/ha) Metabolic litter N layer 2 (kg/ha) . +MEN3D MLitN-3 (kg/ha) Metabolic litter N layer 3 (kg/ha) . +MEN4D MLitN-4 (kg/ha) Metabolic litter N layer 4 (kg/ha) . +MEN5+D MLitN-5+(kg/ha) Metabolic litter N layer 5 thru bottom of profile(kg/ha) . +RESC CumRes (kg/ha) Cumulative residue added (kg/ha) . +RESNC CumResN (kg/ha) Cumulative residue N added (kg/ha) . +S1CTD SOC1 (kg/ha) Total active soil organic C (kg/ha) . +S1C0D SOC1 L0 (kg/ha) Active organic C on surface (kg/ha) . +S1C1D SOC1 L1 (kg/ha) Active organic C - layer 1 (kg/ha) . +S1C2D SOC1 L2 (kg/ha) Active organic C - layer 2 (kg/ha) . +S1C3D SOC1 L3 (kg/ha) Active organic C - layer 3 (kg/ha) . +S1C4D SOC1 L4 (kg/ha) Active organic C - layer 4 (kg/ha) . +S1C5+D SOC1 L5+(kg/ha) Active organic C - layer 5 thru bottom of profile(kg/ha) . +S1NTD SON1 (kg/ha) Total active soil organic N (kg/ha) . +S1N0D SON1 L0 (kg/ha) Active organic N on surface (kg/ha) . +S1N1D SON1 L1 (kg/ha) Active organic N - layer 1 (kg/ha) . +S1N2D SON1 L2 (kg/ha) Active organic N - layer 2 (kg/ha) . +S1N3D SON1 L3 (kg/ha) Active organic N - layer 3 (kg/ha) . +S1N4D SON1 L4 (kg/ha) Active organic N - layer 4 (kg/ha) . +S1N5+D SON1 L5+(kg/ha) Active organic N - layer 5 thru bottom of profile(kg/ha) . +S2CTD SOC2 (kg/ha) Total intermed. soil organic C (kg/ha) . +S2C1D SOC2 L1 (kg/ha) Intermed. org. C - layer 1 (kg/ha) . +S2C2D SOC2 L2 (kg/ha) Intermed. org. C - layer 2 (kg/ha) . +S2C3D SOC2 L3 (kg/ha) Intermed. org. C - layer 3 (kg/ha) . +S2C4D SOC2 L4 (kg/ha) Intermed. org. C - layer 4 (kg/ha) . +S2C5+D SOC2 L5+(kg/ha) Intermed. org. C - layer 5 thru bottom of profile(kg/ha) . +S2NTD SON2 (kg/ha) Total intermed. soil organic N (kg/ha) . +S2N1D SON2 L1 (kg/ha) Intermed. org. N - layer 1 (kg/ha) . +S2N2D SON2 L2 (kg/ha) Intermed. org. N - layer 2 (kg/ha) . +S2N3D SON2 L3 (kg/ha) Intermed. org. N - layer 3 (kg/ha) . +S2N4D SON2 L4 (kg/ha) Intermed. org. N - layer 4 (kg/ha) . +S2N5+D SON2 L5+(kg/ha) Intermed. org. N - layer 5 thru bottom of profile(kg/ha) . +S3CTD SOC3 (kg/ha) Total passive soil organic C (kg/ha) . +S3C1D SOC3 L1 (kg/ha) Passive organic C - layer 1 (kg/ha) . +S3C2D SOC3 L2 (kg/ha) Passive organic C - layer 2 (kg/ha) . +S3C3D SOC3 L3 (kg/ha) Passive organic C - layer 3 (kg/ha) . +S3C4D SOC3 L4 (kg/ha) Passive organic C - layer 4 (kg/ha) . +S3C5+D SOC3 L5+(kg/ha) Passive organic C - layer 5 thru bottom of profile(kg/ha). +S3NTD SON3 (kg/ha) Total passive soil organic N (kg/ha) . +S3N1D SON3 L1 (kg/ha) Passive organic N layer 1 (kg/ha) . +S3N2D SON3 L2 (kg/ha) Passive organic N layer 2 (kg/ha) . +S3N3D SON3 L3 (kg/ha) Passive organic N layer 3 (kg/ha) . +S3N4D SON3 L4 (kg/ha) Passive organic N layer 4 (kg/ha) . +S3N5+D SON3 L5+(kg/ha) Passive organic N layer 5 thru bottom of profile(kg/ha) . +SCTD SOC (kg/ha) Total soil organic carbon (kg/ha) . +SC0D SOC L1 (kg/ha) Organic C on surface (kg/ha) . +SC1D SOC L1 (kg/ha) Organic C in soil layer 1 (kg/ha) . +SC2D SOC L2 (kg/ha) Organic C in soil layer 2 (kg/ha) . +SC3D SOC L3 (kg/ha) Organic C in soil layer 3 (kg/ha) . +SC4D SOC L4 (kg/ha) Organic C in soil layer 4 (kg/ha) . +SC5+D SOC L5+(kg/ha) Organic C in soil layer 5 thru bottom of profile(kg/ha) . +SC%20D SOC 0-20cm (%) Organic C (SOM) in top 20 cm (%) . +SC%40D SOC 20-40cm (%) Organic C (SOM) between 20 and 40 cm depth (%) . +SCS20D SOC 0-20cm kg/h Organic C (SOM) in top 20 cm (kg/ha) . +SCS40D SOC20-40cm kg/h Organic C (SOM) between 20 and 40 cm depth (kg/ha) . +SNTD SON (kg/ha) Soil plus surface organic N (kg/ha) . +SN0D SON L0 (kg/ha) Organic N on surface (kg/ha) . +SN1D SON L1 (kg/ha) Organic N in soil layer 1 (kg/ha) . +SN2D SON L2 (kg/ha) Organic N in soil layer 2 (kg/ha) . +SN3D SON L3 (kg/ha) Organic N in soil layer 3 (kg/ha) . +SN4D SON L4 (kg/ha) Organic N in soil layer 4 (kg/ha) . +SN5+D SON L5+(kg/ha) Organic N in soil layer 5 thru bottom of profile(kg/ha) . +SOMCT Soil SOMC kg/ha C in stable organic matter in soil profile (kg/ha) . +SOMNT Soil SOMN kg/ha N in stable organic matter in soil profile (kg/ha) . +STCTD StrLitC (kg/ha) Total soil structural litter C (kg/ha) . +STC0D SLitC-0 (kg/ha) Structural litter C surface (kg/ha) . +STC1D SLitC-1 (kg/ha) Structural litter C layer 1 (kg/ha) . +STC2D SLitC-2 (kg/ha) Structural litter C layer 2 (kg/ha) . +STC3D SLitC-3 (kg/ha) Structural litter C layer 3 (kg/ha) . +STC4D SLitC-4 (kg/ha) Structural litter C layer 4 (kg/ha) . +STC5+D SLitC-5+(kg/ha) Structural litter C layer 5 thru bottom of profile(kg/ha). +STNTD StrLitN (kg/ha) Total soil structural litter N (kg/ha) . +STN0D SLitN-0 (kg/ha) Structural litter N surface (kg/ha) . +STN1D SLitN-1 (kg/ha) Structural litter N layer 1 (kg/ha) . +STN2D SLitN-2 (kg/ha) Structural litter N layer 2 (kg/ha) . +STN3D SLitN-3 (kg/ha) Structural litter N layer 3 (kg/ha) . +STN4D SLitN-4 (kg/ha) Structural litter N layer 4 (kg/ha) . +STN5+D SLitN-5+(kg/ha) Structural litter N layer 5 thru bottom of profile(kg/ha). + Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/DATA.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/DETAIL.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/DETAIL.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/DETAIL.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,454 @@ +*EXPERIMENTAL DETAILS CODES +! DSSAT v4.0; 08/31/2005 + +! Headers used in the @ line to identify variables are listed first, codes to +! identify methods, chemicals, etc. are listed next in sections that relate to +! specific aspects (Chemicals;Crop and weed species;Diseases and pests;Drainage; +! Environment modification factors;Fertilizers,inoculants and amendments; +! Harvest components;Harvest size categories;Methods-fertilizer and chemical +! applications;Methods-irrigation and water management;Methods-soil analysis; +! Planting materials;Plant distribution;Residues and organic fertilizers; +! Rotations;Soil texture;and Tillage implements). +! +! The fields in the file are as follows: +! CDE The 'universal' code used to facilitate data interchange. +! DESCRIPTION A description of the code, with units. +! SO The source of the codes (IB=IBSNAT). Codes added by a user should be +! referenced in this field and the name and address of the person adding +! the code should be entered as a comment (ie.with a '!' in column 1) +! below this note. This is important to ensure that information from +! different workers can be easily integrated. Users adding codes should +! also ensure that those constructed by adding a number to a section +! code (eg.FE001,CH001) are clearly identified with a letter in the third +! position (eg.FEK01 for a fertilizer code added by someone with a family +! name beginning with K). + +*Headers + at CDE DESCRIPTION SO +ADDRESS Contact address of principal scientist IB +C Crop component number (default = 1) IB +CDATE Application date, year + day or days from planting IB +CHAMT Chemical application amount, kg ha-1 IB +CHCOD Chemical material, code IB +CHDEP Chemical application depth, cm IB +CHME Chemical application method, code IB +CHNOTES Chemical notes (Targets, chemical name, etc.) IB +CNAME Cultivar name IB +CNOTES Cultivar details (Type, pedigree, etc.) IB +CR Crop code IB +CU Cultivar level IB +ECO2 CO2 adjustment, A,S,M,R + vpm IB +EDATE Emergence date, earliest treatment IB +EDAY Daylength adjustment, A,S,M,R+h (Add;Subtract;Multiply;Replace) IB +EDEW Humidity adjustment, A,S,M,R+oC (Add;Subtract;Multiply;Replace) IB +EMAX Temp (max) adjustment, A,S,M,R+oC (Add;Subtract;Multiply;Replace) IB +EMIN Temp (min) adjustment, A,S,M,R+oC (Add;Subtract;Multiply;Replace) IB +ERAD Radn adjustment, A,S,M,R+MJ m-2day-1 (Add;Subtract;Multiply;Replace) IB +ERAIN Precipitation adjustment, A,S,M,R+mm (Add;Subtract;Multiply;Replace) IB +EWIND Wind adjustment, A,S,M,R + km day-1 (Add;Subtract;Multiply;Replace) IB +FACD Fertilizer application/placement, code IB +FAMC Ca in applied fertilizer, kg ha-1 IB +FAMK K in applied fertilizer, kg ha-1 IB +FAMN N in applied fertilizer, kg ha-1 IB +FAMO Other elements in applied fertilizer, kg ha-1 IB +FAMP P in applied fertilizer, kg ha-1 IB +FDATE Fertilization date, year + day or days from planting IB +FDEP Fertilizer incorporation/application depth, cm IB +FL Field level IB +FLDD Drain depth, cm IB +FLDS Drain spacing, m IB +FLDT Drainage type, code IB +FLOB Obstruction to sun, degrees IB +FLSA Slope and aspect, degrees from horizontal plus direction (W, NW, etc.IB +FLST Surface stones (Abundance, % + Size, S,M,L) IB +FMCD Fertilizer material, code IB +FOCD Other element code, e.g.,. MG IB +HAREA Harvest area, m-2 IB +HARM Harvest method IB +HCOM Harvest component, code IB +HDATE Harvest date, year + day or days from planting IB +HL Harvest level IB +HLEN Harvest row length, m IB +HPC Harvest percentage, % IB +HRNO Harvest row number IB +HSIZ Harvest size group, code IB +HSTG Harvest stage IB +IAME Method for automatic applications, code IB +IAMT Amount per automatic irrigation if fixed, mm IB +IC Initial conditions level IB +ICBL Depth, base of layer, cm IB +ICDAT Initial conditions measurement date, year + days IB +ICND Nodule weight from previous crop, kg ha-1 IB +ICRE Rhizobia effectiveness, 0 to 1 scale IB +ICRN Rhizobia number, 0 to 1 scale IB +ICRT Root weight from previous crop, kg ha-1 IB +IDATE Irrigation date, year + day or days from planting IB +IDEP Management depth for automatic application, cm IB +ID_FIELD Field ID (Institute + Site + Field) IB +ID_SOIL Soil ID (Institute + Site + Year + Soil) IB +IEFF Irrigation application efficiency, fraction IB +IEPT End point for automatic appl., % of max. available IB +INGENO Cultivar identifier IB +IOFF End of automatic applications, growth stage IB +IROP Irrigation operation, code IB +IRVAL Irrigation amount, depth of water/watertable, etc., mm IB +ITHR Threshold for automatic appl., % of max. available IB +MC Chemical applications level IB +ME Environment modifications level IB +MF Fertilizer applications level IB +MH Harvest level IB +MI Irrigation level IB +MP Planting level IB +MR Residue level IB +MT Tillage level IB +NOTES Notes IB +O Rotation component - option (default = 1) IB +ODATE Environmental modification date, year + day or days from planting IB +PAGE Transplant age, days IB +PAREA Gross plot area per rep, m-2 IB +PCR Previous crop code IB +PDATE Planting date, year + days from Jan. 1 IB +PENV Transplant environment, oC IB +PEOPLE Names of scientists IB +PLAY Plot layout IB +PLDP Planting depth, cm IB +PLDR Plots relative to drains, degrees IB +PLDS Planting distribution, row R, broadcast B, hill H IB +PLEN Plot length, m IB +PLME Planting method, code IB +PLOR Plot orientation, degrees from N IB +PLPH Plants per hill (if appropriate) IB +PLRD Row direction, degrees from N IB +PLRS Row spacing, cm IB +PLSP Plot spacing, cm IB +PLWT Planting material dry weight, kg ha-1 IB +PPOE Plant population at emergence, m-2 IB +PPOP Plant population at seeding, m-2 IB +PRNO Rows per plot IB +R Rotation component - number (default = 1) IB +RACD Residue application/placement, code IB +RAMT Residue amount, kg ha-1 IB +RCOD Residue material, code IB +RDATE Incorporation date, year + days IB +RDEP Residue incorporation depth, cm IB +RDMC Residue dry matter content, % IB +RESK Residue potassium concentration, % IB +RESN Residue nitrogen concentration, % IB +RESP Residue phosphorus concentration, % IB +RINP Residue incorporation percentage, % IB +SA Soil analysis level IB +SABD Bulk density, moist, g cm-3 IB +SABL Depth, base of layer, cm IB +SADAT Analysis date, year + days from Jan. 1 IB +SAHB pH in buffer IB +SAHW pH in water IB +SAKE Potassium, exchangeable, cmol kg-1 IB +SANI Total nitrogen, % IB +SAOC Organic carbon, % IB +SAPX Phosphorus, extractable, mg kg-1 IB +SH20 Water, cm3 cm-3 IB +SITE(S) Name and location of experimental site(s) IB +SLDP Soil depth, cm IB +SLTX Soil texture IB +SM Simulation control level IB +SMHB pH in buffer determination method, code IB +SMKE Potassium determination method, code IB +SMPX Phosphorus determination method, code IB +SNH4 Ammonium, KCl, g elemental N Mg-1 soil IB +SNO3 Nitrate, KCl, g elemental N Mg-1 soil IB +TDATE Tillage date, year + day IB +TDEP Tillage depth, cm IB +TDETAIL Tillage details IB +TIMPL Tillage implement, code IB +TL Tillage level IB +TN Treatment number IB +TNAME Treatment name IB +WSTA Weather station code (Institute + Site) IB + +*Chemicals (Herbicides, Insecticides, Fungicides, etc.) + at CDE DESCRIPTION SO +CH001 Alachlor (Lasso), Metolachlor (Dual) [Herbicide] IB +CH002 Propanil [Herbicide] IB +CH003 Trifluralin [Herbicide] IB +CH004 Dalapon [Herbicide] IB +CH005 MCPA [Herbicide] IB +CH006 2,4-D [Herbicide] IB +CH007 2,4,5-T [Herbicide] IB +CH008 Pendimethalin [Herbicide] IB +CH009 Atrazine [Herbicide] IB +CH010 Diquat [Herbicide] IB +CH011 Paraquat [Herbicide] IB +CH021 Carbaryl, Sevin, Septene [Insecticide] IB +CH022 Malathion, Mercaptothion [Insecticide] IB +CH023 Naled [Insecticide] IB +CH024 Dimethoate [Insecticide] IB +CH025 Fention [Insecticide] IB +CH026 Diazinon, Basudin [Insecticide] IB +CH027 Ethion, Diethion [Insecticide] IB +CH028 Oxydemeton-Methyl [Insecticide] IB +CH029 Azinphos-Methyl [Insecticide] IB +CH030 Phosphamidon [Insecticide] IB +CH031 Mevinphosl [Insecticide] IB +CH032 Methyl Parathion [Insecticide] IB +CH033 Parathion [Insecticide] IB +CH034 DDT [Insecticide] IB +CH035 BHC, HCH [Insecticide] IB +CH036 Chlordane [Insecticide] IB +CH037 Heptachlor [Insecticide] IB +CH038 Toxaphene [Insecticide] IB +CH039 Aldrin [Insecticide] IB +CH040 Dieldrin [Insecticide] IB +CH041 Endrin, Nendrin [Insecticide] IB +CH042 Methomyl, Lannat [Insecticide] IB +CH043 Thiotex [Insecticide] IB +CH044 Furadan [Insecticide] IB +CH045 Endosulfan [Insecticide] IB +CH051 Captan [Fungicide] IB +CH052 Benomyl [Fungicide] IB +CH053 Zineb [Fungicide] IB +CH054 Maneb [Fungicide] IB +CH055 Mancozeb [Fungicide] IB +CH056 Tilt [Fungicide] IB +CH057 Rhizobium (for legume crops) IB +CH100 Pix [Mepiquat Chloride; Growth Regulator] IB + +*Crop and Weed Species + at CDE DESCRIPTION SO +AL Alfalfa/Lucerne IB +AR Aroid IB +BA Barley IB +BN Dry bean IB +BR Brachiaria IB +BS Beet sugar IB +BW Broad leaf weeds IB +CB Cabbage IB +CH Chickpea IB +CT Citrus IB +CN Canola IB +CO Cotton IB +CP Cowpea IB +CS Cassava IB +CV Clover IB +FA Fallow IB +FB Faba bean IB +G0 Bahia grass IB +GW Grass weeds IB +ML Pearl millet IB +MZ Maize IB +NN Banana IB +NP Napier grass IB +OA Oats IB +PE Pea IB +PI Pineapple IB +PN Peanut IB +PO Perennial peanut IB +PP Pigeonpea IB +PR Pepper IB +PT Potato IB +RI Rice IB +RP Rhizoma peanut IB +SB Soybean IB +SC Sugarcane IB +SG Grain sorghum IB +SS Sesame IB +ST Shrubs/trees IB +SU Sunflower IB +TM Tomato IB +TN Tanier IB +TR Taro IB +VB Velvet bean IB +VI Vine IB +WH Wheat IB + +*Disease and Pest Organisms + at CDE DESCRIPTION SO +!Examples of codes that have been used are given below. IB +CEW Corn earworm (Heliothis zea), no. m-2 IB +VBC Velvetbean caterpillar (Anticarsia gemmatalis), no. m-2 IB +SBL Soybean looper (Pseudoplusia includens), no. m-2 IB +SKB Southern green stinkbug (Mezara viridula), no. m-2 IB +RKN Root-knot nematode (Meloidogyne spp.), no. cm-3 soil IB +CUT Cutworm, no. m-2 IB + +*Drainage + at CDE DESCRIPTION SO +DR000 No drainage IB +DR001 Ditches IB +DR002 Sub-surface tiles IB +DR003 Surface furrows IB + +*Environment Modification Factors + at CDE DESCRIPTION SO +A Add IB +S Subtract IB +M Multiply IB +R Replace IB + +*Fertilizers, Inoculants and Amendments + at CDE DESCRIPTION SO +FE001 Ammonium nitrate IB +FE002 Ammonium sulfate IB +FE003 Ammonium nitrate sulfate IB +FE004 Anhydrous ammonia IB +FE005 Urea IB +FE006 Diammnoium phosphate IB +FE007 Monoammonium phosphate IB +FE008 Calcium nitrate IB +FE009 Aqua ammonia IB +FE010 Urea ammonium nitrate solution IB +FE011 Calcium ammonium nitrate solution IB +FE012 Ammonium polyphosphate IB +FE013 Single super phosphate IB +FE014 Triple super phosphate IB +FE015 Liquid phosphoric acid IB +FE016 Potassium chloride IB +FE017 Potassium nitrate IB +FE018 Potassium sulfate IB +FE019 Urea super granules IB +FE020 Dolomitic limestone IB +FE021 Rock phosphate IB +FE022 Calcitic limestone IB +FE024 Rhizobium IB +FE026 Calcium hydroxide IB +FE051 Urea super granules IB + +*Harvest components + at CDE DESCRIPTION SO +C Canopy IB +L Leaves IB +H Harvest product IB + +*Harvest size categories + at CDE DESCRIPTION SO +A All IB +S Small - less than 1/3 full size IB +M Medium - from 1/3 to 2/3 full size IB +L Large - greater than 2/3 full size IB + +*Methods - Fertilizer and Chemical Applications + at CDE DESCRIPTION SO +AP001 Broadcast, not incorporated IB +AP002 Broadcast, incorporated IB +AP003 Banded on surface IB +AP004 Banded beneath surface IB +AP005 Applied in irrigation water IB +AP006 Foliar spray IB +AP007 Bottom of hole IB +AP008 On the seed IB +AP009 Injected IB +AP011 Broadcast on flooded/saturated soil, none in soil IB +AP012 Broadcast on flooded/saturated soil, 15% in soil IB +AP013 Broadcast on flooded/saturated soil, 30% in soil IB +AP014 Broadcast on flooded/saturated soil, 45% in soil IB +AP015 Broadcast on flooded/saturated soil, 60% in soil IB +AP016 Broadcast on flooded/saturated soil, 75% in soil IB +AP017 Broadcast on flooded/saturated soil, 90% in soil IB +AP018 Band on saturated soil,2cm flood, 92% in soil IB +AP019 Deeply placed urea super granules/pellets, 95% in soil IB +AP020 Deeply placed urea super granules/pellets, 100% in soil IB + +*Methods - Irrigation and Water Management (Units for associated data) + at CDE DESCRIPTION SO +IR001 Furrow, mm IB +IR002 Alternating furrows, mm IB +IR003 Flood, mm IB +IR004 Sprinkler, mm IB +IR005 Drip or trickle, mm IB +IR006 Flood depth, mm IB +IR007 Water table depth, mm IB +IR008 Percolation rate, mm day-1 IB +IR009 Bund height, mm IB +IR010 Puddling (for Rice only) IB +IR011 Constant flood depth, mm IB + +*Methods - Soil Analysis + at CDE DESCRIPTION SO +SA001 Olsen IB +SA002 Bray No. 1 IB +SA003 Bray No. 2 IB +SA004 Mehlich I (double acid, 1:5) IB +SA005 Anion exchange resin IB +SA006 Truog IB +SA007 Mehlich I (double acid, 1:10) IB +SA008 Colwell IB +SA009 Water IB +SA010 IFDC Pi strip IB +SA011 pH in Water IB +SA012 pH in KCl IB +SA013 Mehlich 3 IB +SA014 Morgan's solution IB +SA015 NH4OAc IB +! +! K extraction methods +! NH4OaAc +! Mehlich I (1:5) +! Mehlich I (1:10) +! Mehlich 3 + +*Planting Material/Method + at CDE DESCRIPTION SO +S Dry seed IB +T Transplants IB +N Nursery IB +P Pregerminated seed IB +R Ratoon IB + +*Plant Distribution + at CDE DESCRIPTION SO +R Rows IB +H Hills IB +U Uniform/Broadcast IB + +*Residues and Organic Fertilizer + at CDE DESCRIPTION SO +RE001 Crop residue IB +RE002 Green Manure IB +RE003 Barnyard Manure IB +RE004 Liquid Manure IB +RE005 Compost IB + +*Rotation + at CDE DESCRIPTION SO +RO001 Continuous arable crops IB +RO002 Rotation with forages IB + +*Soil Texture + at CDE DESCRIPTION SO +C Clay IB +CL Clay loam IB +L Loam IB +LS Loamy sand IB +S Sand IB +SC Silty clay IB +SCL Silty clay loam IB +SI Silt IB +SIC Silty clay IB +SICL Silty clay loam IB +SIL Silty loam IB +SL Sandy loam IB + +*Tillage Implements + at CDE DESCRIPTION SO +TI002 Tandem disk IB +TI003 Offset disk IB +TI004 Oneway disk IB +TI005 Moldboard plow IB +TI006 Chisel plow IB +TI007 Disk plow IB +TI008 Subsoiler IB +TI009 Beeder/lister IB +TI010 Field cultivator IB +TI011 Row crop cultivator IB +TI012 Harrow-springtooth IB +TI013 Harrow-spike IB +TI014 Rotary hoe IB +TI015 Roto-tiller IB +TI016 Row crop planter IB +TI017 Drill IB +TI018 Shredder IB +TI019 Hoe IB +TI020 Planting stick IB +TI021 Animal-drawn implement IB +TI022 Hand IB +TI023 Manual hoeing IB + Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/DETAIL.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/DSSATPRO.FLE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/DSSATPRO.FLE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/DSSATPRO.FLE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,23 @@ +*** * DSSAT PROFILE * *** +WED +WGD +CLD +SLD +CRD +ASD +AQD +PSD +ECD +C-------- +C Data folders where the raw data is stored; for now, I will direct +C all files to the sim folder to keep everything together. +C-------- +C WEATHER +C WEATHER/gen +C WEATHER/climate +C SOIL +C GENOTYPE +C SEASONAL +C SEQUENCE +C PEST +C ECONOMIC \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/DSSATPRO.FLE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/GCOEFF.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/GCOEFF.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/GCOEFF.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,79 @@ +*GENOTYPE COEFFICIENT CODES +! DSSAT v3.5; 08/31/2005 + +! The fields in the file are as follows: +! CDE The genotype coeff code as used in the particular model +! DESCRIPTION A description of the code, with units. + +*WHSIM940 + at CDE DESCRIPTION +AWNL Awn length (0-1.0;0=none,1=long and active) +BIOM Biomass accumulation factor (g MJ-1 PAR) +DESP Photoperiod sensitivity (100*Reduction in rel.rate per hunifoliate . + V3 50% plants w 3 nodes on main stem above unifoliated node . + Vn 50% plants w n nodes on main stem above the unifoliated node . +GS005 R1 50% plants w one flower at any node . + R2 50% plants w flower at node immediately below last unrolled leaf . +GS006 R3 50% plants w 0.5cm pod at one of the 4 upper nodes with unrolled lf . +GS007 R4 50% plants w 2.0cm pod at one of the 4 upper nodes with unrolled lf . +GS008 R5 50% plants w beans beginning to develope . +GS009 R6 50% plants w pod w full-size green beans at 1 of 4 upper ur lf nodes . +GS010 R7 50% plants w pods yellowing . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Cotton (CROPGRO Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% plants w some part visible at soil surface . +GS002 V1 50% plants w 1 developed node on the main axis . + V2 50% plants w 2 developed nodes on the main axis . + V3 50% plants w 3 developed nodes on the main axis . + Vn 50% plants w n developed nodes on the main axis . +GS005 R1 50% plants beginning flower . + R2 50% plants beggining boll . +GS006 R3 50% plants boll > 6 mm or 1/4 inch . +GS007 R4 100% plants boll > 6 mm or 1/4 inch . +GS008 R5 Beginning seed . +GS009 R6 50% of bolls have attained 0.5 final size . +GS010 R7 First cracked boll (beginning maturity) . +GS011 R8 90% of the bolls open (Beginning maturity) . + R9 Senenscence (>50% of the leaves abscised) . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Cowpea (CROPGRO Version 4.0) +! Fehr et al.,1971 + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% plants w some part visible at soil surface . +GS002 V1 50% plants w completely unrolled leaf at unifoliated node . + V2 50% plants w completely unrolled leaf at 1st node>unifoliate . + V3 50% plants w 3 nodes on main stem above unifoliated node . + Vn 50% plants w n nodes on main stem above the unifoliated node . +GS005 R1 50% plants w one flower at any node . + R2 50% plants w flower at node immediately below last unrolled leaf . +GS006 R3 50% plants w 0.5cm pod at one of the 4 upper nodes with unrolled lf . +GS007 R4 50% plants w 2.0cm pod at one of the 4 upper nodes with unrolled lf . +GS008 R5 50% plants w beans beginning to develope . +GS009 R6 50% plants w pod w full-size green beans at 1 of 4 upper ur lf nodes . +GS010 R7 50% plants w pods yellowing . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Dry Bean (CROPGRO Version 4.0) +! Fehr et al.,1971 + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% plants w some part visible at soil surface . +GS002 V1 50% plants w completely unrolled leaf at unifoliated node . + V2 50% plants w completely unrolled leaf at 1st node>unifoliate . + V3 50% plants w 3 nodes on main stem above unifoliated node . + Vn 50% plants w n nodes on main stem above the unifoliated node . +GS005 R1 50% plants w one flower at any node . + R2 50% plants w flower at node immediately below last unrolled leaf . +GS006 R3 50% plants w 0.5cm pod at one of the 4 upper nodes with unrolled lf . +GS007 R4 50% plants w 2.0cm pod at one of the 4 upper nodes with unrolled lf . +GS008 R5 50% plants w beans beginning to develope . +GS009 R6 50% plants w pod w full-size green beans at 1 of 4 upper ur lf nodes . +GS010 R7 50% plants w pods yellowing . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Faba Bean (CROPGRO Version 4.0) +! Fehr et al.,1971 + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% plants w some part visible at soil surface . +GS002 V1 50% plants w completely unrolled leaf at unifoliated node . + V2 50% plants w completely unrolled leaf at 1st node>unifoliate . + V3 50% plants w 3 nodes on main stem above unifoliated node . + Vn 50% plants w n nodes on main stem above the unifoliated node . +GS005 R1 50% plants w one flower at any node . + R2 50% plants w flower at node immediately below last unrolled leaf . +GS006 R3 50% plants w 0.5cm pod at one of the 4 upper nodes with unrolled lf . +GS007 R4 50% plants w 2.0cm pod at one of the 4 upper nodes with unrolled lf . +GS008 R5 50% plants w beans beginning to develope . +GS009 R6 50% plants w pod w full-size green beans at 1 of 4 upper ur lf nodes . +GS010 R7 50% plants w pods yellowing . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Soybean (CROPGRO Version 4.0) +! Fehr et al.,1971 + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% plants w some part visible at soil surface . +GS002 V1 50% plants w completely unrolled leaf at unifoliated node . + V2 50% plants w completely unrolled leaf at 1st node>unifoliate . + V3 50% plants w 3 nodes on main stem above unifoliated node . + Vn 50% plants w n nodes on main stem above the unifoliated node . +GS005 R1 50% plants w one flower at any node . + R2 50% plants w flower at node immediately below last unrolled leaf . +GS006 R3 50% plants w 0.5cm pod at one of the 4 upper nodes with unrolled lf . +GS007 R4 50% plants w 2.0cm pod at one of the 4 upper nodes with unrolled lf . +GS008 R5 50% plants w beans beginning to develope . +GS009 R6 50% plants w pod w full-size green beans at 1 of 4 upper ur lf nodes . +GS010 R7 50% plants w pods yellowing . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest + +*Growth and Development Codes - Peanut (CROPGRO Version 4.0) +! Boote,1982 + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% of plants with some part visible at soil surface . +GS002 V1 50% of plants with 1 developed node on the main axis . + V2 50% of plants with 2 developed node on the main axis . + V3 50% of plants with 3 developed node on the main axis . + Vn 50% of plants with n developed node on the main axis . +GS005 R1 50% of plants beginning bloom . + R2 50% of plants beginning peg . +GS006 R3 50% of plants beginning pod . +GS007 R4 Full pod . +GS008 R5 Beginning seed . +GS009 R6 Full seed . +GS010 R7 Beginning maturity . +GS011 R8 Harvest maturity . + R9 Over-mature pod . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Tanier(AROID Version 3.5) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . + V0 50% of plants have 1 visible leaf tip . +GS009 V1 50% of plants have 1 fully opened leaf . + V2 50% of plants have 2 fully opened leaves . + V3 50% of plants have 3 fully opened leaves . + V4 50% of plants have 4 fully opened leaves . + Vn 50% of plants have n fully opened leaves . + S 50% of plants have suckers above ground . +GS000 V7 50% of plants have only 2 or 3 active leaves remaining on plant . +GS001 End Juvenile . +GS002 End Maximum Growth . +GS003 End Maximum Growth . +GS004 End Maximum Growth . +GS005 Harvestable Corm . +GS006 End Corm Growth . +GS007 Planting . +GS008 Root Formation . +GS010 Pregemerminated Planting . +GS011 End Cormel . +GS015 Start Simulation . +GS015 End Simulation . +GS020 Time of harvest . + +*Growth and Development Codes - Taro (AROID Version 3.5) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . + V0 50% of plants have 1 visible leaf tip . +GS009 V1 50% of plants have 1 fully opened leaf . + V2 50% of plants have 2 fully opened leaves . + V3 50% of plants have 3 fully opened leaves . + V4 50% of plants have 4 fully opened leaves . + Vn 50% of plants have n fully opened leaves . + S 50% of plants have suckers above ground . +GS000 V7 50% of plants have only 2 or 3 active leaves remaining on plant . +GS001 End Juvenile . +GS002 End Maximum Growth . +GS003 End Maximum Growth . +GS004 End Maximum Growth . +GS005 Harvestable Corm . +GS006 End Corm Growth . +GS007 Planting . +GS008 Root Formation . +GS010 Pregemerminated Planting . +GS011 End Cormel . +GS015 Start Simulation . +GS015 End Simulation . +GS020 Time of harvest . + +*Growth and Development Codes - Cassava (CSSIM Version 3.5) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS012 VE 50% of plants with at least 1 shoot >1cm on the planting stick . +GS001 V1 50% of plants with at least 1 apical meristem . +GS002 V2 50% of plants with at least 2 apical meristem . +GS003 V3 50% of plants with at least 3 apical meristem . +GS004 V4 50% of plants with at least 4 apical meristem . +GS005 V5 50% of plants with at least 5 apical meristem . +GS006 V6 50% of plants with at least 6 apical meristem . +GS007 V7 50% of plants with at least 7 apical meristem . +GS008 V8 50% of plants with at least 8 apical meristem . + Vn 50% of plants with at least n apical meristem . + R1 50% of plants flowering . +GS009 R7 50% of plants at harvest maturity . +GS014 Start Simulation . +GS010 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Codes - Potato (SUBSTOR Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS007 VE 50% of plants with some part visible at soil surface . + V1 50% of plants with 1 developed node on the main axis . + V2 50% of plants with 2 developed node on the main axis . + Vn 50% of plants with n developed node on the main axis . +GS001 T1 Tuber initiation . + T2 T1 + 20 days . + T3 T1 + 40 days . +GS002 T4 Harvest maturity. Green canopy cover 20% of the maximum achieved . +GS005 Sowing Date . +GS006 Germination . +GS014 Start Simulation . +GS020 Time of harvest . + +*Growth and Development Codes - Cereal Crops - Zadoks,1974 + at CDE NAME DESCRIPTION......................................................... SYNONYMS + 00-09 Germination . + 10-19 Seedling growth . + 20-29 Tillering, no. of tillers + 20 . + 21 Main shoot plus 1 tiller . + 22 Main shoot plus 2 tillers . + 30-39 Stem elongation, no. nodes + 30 . + 31 1st node detectable . + 32 2nd node detectable . + 40-49 Booting . + 50-59 Reproductive organ emergence . + 60-69 Flowering . + 65 50% flowering (anthesis) . + 70-79 Milk development . + 80-89 Dough development . + 85 Physiological maturity (soft dough) . + 90-99 Ripening . + 93 Harvest maturity . + +*Growth and Development Codes - Barley (CERES Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 Maximum Primordial . +GS002 End of vegetative phase . +GS003 End ear growth . +GS004 Ear Emergence . +GS005 End of grain filling phase . +GS006 50% of plants harvest maturity . +GS007 Sowing date . +GS008 50% of plants germinated . +GS009 50% of plants with some part visible at soil surface . + +*Growth and Development Codes - Millet (CERES Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 End Juvenile phase . +GS002 Floral initiation . +GS003 End of leaf growth . +GS004 Anthesis . +GS005 End tiller flowering . +GS006 Harvest maturity . +GS007 Sowing date . +GS008 Germination . +GS009 Emergence . + +*Growth and Development Codes - Rice (CERES Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 End Juvenile phase . +GS002 Panicle initiation . +GS003 Heading . +GS004 Begin grain filling . +GS005 End of grain filling phase, main plant . +GS006 Maturity . +GS007 Sowing date . +GS008 Germination . +GS009 Emergence . +GS010 Pre-germination sowing . +GS011 Transplant . +GS012 End grain filling, tillers . +GS013 Start simulation . +GS014 Harvest . + +*Growth and Development Codes - Sorghum (CERES Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 End juvenile phase . +GS002 Floral initiation . +GS003 End leaf growth . +GS004 End panicle growth . +GS005 End grain filling, main plant . +GS006 Maturity . +GS007 Sowing date . +GS008 Germination . +GS009 Emergence . + +*Growth and Development Codes - Wheat (CERES Version 4.0) + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 Terminal spiklet . +GS002 End of vegetative phase . +GS003 End ear growth . +GS004 Ear Emergence . +GS005 End grain filling phase . +GS006 Maturity . +GS007 Sowing date . +GS008 Germination . +GS009 Emergence . + +*Growth and Development Codes - Velvet Bean (CROPGRO Version 4.0) +! Fehr et al.,1971 + at CDE NAME DESCRIPTION......................................................... SYNONYMS +GS000 None . +GS001 VE 50% plants w some part visible at soil surface . +GS002 V1 50% plants w completely unrolled leaf at unifoliated node . + V2 50% plants w completely unrolled leaf at 1st node>unifoliate . + V3 50% plants w 3 nodes on main stem above unifoliated node . + Vn 50% plants w n nodes on main stem above the unifoliated node . +GS005 R1 50% plants w one flower at any node . + R2 50% plants w flower at node immediately below last unrolled leaf . +GS006 R3 50% plants w 0.5cm pod at one of the 4 upper nodes with unrolled lf . +GS007 R4 50% plants w 2.0cm pod at one of the 4 upper nodes with unrolled lf . +GS008 R5 50% plants w beans beginning to develope . +GS009 R6 50% plants w pod w full-size green beans at 1 of 4 upper ur lf nodes . +GS010 R7 50% plants w pods yellowing . +GS003 50% plants completed juvenile phase . +GS004 50% plants completed floral induction . +GS012 50% plants w last mainstem node . +GS013 Time of last leaf area expansion . +GS014 Start Simulation . +GS015 Sowing Date . +GS016 Time of harvest . + +*Growth and Development Stage References +Boote, K.J. 1982. Growth stages of peanut (Arachis hypogaea L.). + Peanut Sci. 9:35-40. +Fehr, W.R., C.E. Caviness, D.T. Burmood and J.S. Pennington. 1971. Stage of + development descriptions for soybeans, Glycine max (L.) Merrill. + Crop Sci. 11:929-931. +Groot, J.J.R., M.K. Kropff, F.J.H. Vossen, C.J.T. Spitters and R. Rabbinge.1986. + A decimal code for the developmental stages of maize and its relation + to accumulated heat units. Netherlands J. of Ag. Sci. 34:67-73. +International Benchmark Sites Network for Agrotechnology Transfer 1988 + Technical Report 1. Experimental design and data collection procedures + for IBSNAT. 3rd.edition revised. Dept.of Agronomy and Soil Science, + College of Tropical Agriculture and Human Resources, University of + Hawaii, Honolulu, Hawaii 96822, USA +Regel, P.A. and P.J. Sands. 1983. A model of the development and bulking of + potatoes (Solanum tuberosum L.). IV. Day length, plant density and + cultivar effects. Field Crops Res. 6:1-23. +Ritchie, S.W. and J.J. Hanway. 1982. How a Corn Plant Develops. Special + Report No. 48, Revised February 1982. Iowa State Univ. of Science and + Technology. Ames, Iowa: Coop Ext. Serv. +Tottman, D.R. and R.J. Makepeace. 1979. An explanation of the decimal code + for the growth stages of cereals, with illustrations. Ann. Appl. Biol. + 93:221-234. +Zadoks, J.C., T.T. Chang and C.F. Konzak. 1974 A decimal code for the growth + stages of cereals. Eucarpia Bulletin 7. +Zadoks, J.C., T.T. Chang and C.F. Konzak 1974 A decimal code for the growth + stages of cereals. Weed Res.14,415-421. + \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/GRSTAGE.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/H1234567.MZX =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/H1234567.MZX (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/H1234567.MZX 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,150 @@ +*EXP.DETAILS: Adaptation template, A1B CO2 + +*GENERAL + at PEOPLE +Joshua Elliott + at ADDRESS +Computation Institute, University of Chicago + at SITE +-99 +@ PAREA PRNO PLEN PLDR PLSP PLAY HAREA HRNO HLEN HARM......... + -99 -99 -99 -99 -99 -99 -99 -99 -99 -99 + +*TREATMENTS -------------FACTOR LEVELS------------ + at N R O C TNAME.................... CU FL SA IC MP MI MF MR MC MT ME MH SM + 1 1 0 0 350p, Full N, full H2O 1 1 0 0 1 0 1 1 0 0 1 0 1 + 2 1 0 0 350p, 2/3 N, full H20 1 1 0 0 1 0 2 1 0 0 1 0 1 + 3 1 0 0 350p, 1/3 N, full H20 1 1 0 0 1 0 3 1 0 0 1 0 1 + 4 1 0 0 350p, No N, full H20 1 1 0 0 1 0 4 1 0 0 1 0 1 + 5 1 0 0 350p, Full N, no H20 1 1 0 0 1 0 1 1 0 0 1 0 2 + 6 1 0 0 350p, 2/3 N, no H20 1 1 0 0 1 0 2 1 0 0 1 0 2 + 7 1 0 0 350p, 1/3 N, no H20 1 1 0 0 1 0 3 1 0 0 1 0 2 + 8 1 0 0 350p, No N, no H2O 1 1 0 0 1 0 4 1 0 0 1 0 2 + +*CULTIVARS + at C CR INGENO CNAME + 1 MZ 990002 TEST + +*FIELDS + at L ID_FIELD WSTA.... FLSA FLOB FLDT FLDD FLDS FLST SLTX SLDP ID_SOIL FLNAME + 1 GENERIC GENERIC1 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 1980-2009 + 2 GENERIC GENERIC2 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 2010-2039 + 3 GENERIC GENERIC3 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 2040-2069 + 4 GENERIC GENERIC4 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 2070-2099 + at L ...........XCRD ...........YCRD .....ELEV .............AREA .SLEN .FLWR .SLAS FLHST FHDUR + 1 -99 -99 -99 -99 -99 -99 -99 -99 -99 + 2 -99 -99 -99 -99 -99 -99 -99 -99 -99 + 3 -99 -99 -99 -99 -99 -99 -99 -99 -99 + 4 -99 -99 -99 -99 -99 -99 -99 -99 -99 + +*SOIL ANALYSIS + at A SADAT SMHB SMPX SMKE SANAME + 1 00100 -99 -99 -99 TEST + at A SABL SADM SAOC SANI SAPHW SAPHB SAPX SAKE SASC + 1 15 -99 -99 -99 -99 -99 -99 -99 -99 + +*INITIAL CONDITIONS + at C PCR ICDAT ICRT ICND ICRN ICRE ICWD ICRES ICREN ICREP ICRIP ICRID ICNAME + 1 MZ 00100 -99 -99 1 1 -99 1000 1 0 100 10 1000kg Residue + at C ICBL SH2O SNH4 SNO3 + 1 5 .198 .1 .7 + 1 15 .198 .1 .7 + 1 25 .198 .1 .7 + 1 34 .226 .1 .7 + 1 43 .226 .1 .7 + 1 53 .25 .1 .7 + 1 64 .25 .1 .7 + 1 102 .200 .1 .7 + 1 145 .291 .1 .7 + 1 175 .272 .1 .7 + 1 203 .263 .1 .7 + +*PLANTING DETAILS + at P PDATE EDATE PPOP PPOE PLME PLDS PLRS PLRD PLDP PLWT PAGE PENV PLPH SPRL PLNAME + 1 00120 -99 6.5 -99 S R 91 -99 5 -99 -99 -99 -99 -99 Apr 30 Rainfed + +*IRRIGATION AND WATER MANAGEMENT + at I EFIR IDEP ITHR IEPT IOFF IAME IAMT IRNAME + 1 1.00 30 50 100 GS000 IR001 10 -99 + at I IDATE IROP IRVAL + 1 00165 IR001 79.0 + +*FERTILIZERS (INORGANIC) + at F FDATE FMCD FACD FDEP FAMN FAMP FAMK FAMC FAMO FOCD FERNAME + 1 1 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 1 40 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 1 80 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 2 1 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 2 40 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 3 1 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 4 1 FE001 AP002 15 0 -99 -99 -99 -99 -99 TEST + +*RESIDUES AND ORGANIC FERTILIZER + at R RDATE RCOD RAMT RESN RESP RESK RINP RDEP RMET RENAME + 1 00001 RE001 1000 1 0 0 100 10 AP003 1000 kg residue + +*CHEMICAL APPLICATIONS + at C CDATE CHCOD CHAMT CHME CHDEP CHT..CHNAME + 1 00126 CH009 100 AP002 10 -99 TEST + +*TILLAGE AND ROTATIONS + at T TDATE TIMPL TDEP TNAME + 1 00126 TI007 20 TEST + +*ENVIRONMENT MODIFICATIONS + at E ODATE EDAY ERAD EMAX EMIN ERAIN ECO2 EDEW EWIND ENVNAME + 1 00001 A 0 A 0 A 0 A 0 A 0.0 R 350 A 0 A 0 350 ppm + 2 00001 A 0 A 0 A 0 A 0 A 0.0 R 450 A 0 A 0 450 ppm + 3 00001 A 0 A 0 A 0 A 0 A 0.0 R 550 A 0 A 0 550 ppm + 4 00001 A 0 A 0 A 0 A 0 A 0.0 R 650 A 0 A 0 650 ppm + +*HARVEST DETAILS + at H HDATE HSTG HCOM HSIZE HPC HBPC HNAME + 1 00270 GS000 -99 -99 -99 -99 Maize + +*SIMULATION CONTROLS + at N GENERAL NYERS NREPS START SDATE RSEED SNAME.................... SMODEL + 1 GE 30 1 S 00001 2150 Rainfed MZCER + at N OPTIONS WATER NITRO SYMBI PHOSP POTAS DISES CHEM TILL CO2 + 1 OP Y Y Y N N N N N R + at N METHODS WTHER INCON LIGHT EVAPO INFIL PHOTO HYDRO NSWIT MESOM MESEV MESOL + 1 ME M M E F S L R 1 G S 2 + at N MANAGEMENT PLANT IRRIG FERTI RESID HARVS + 1 MA A A D A A + at N OUTPUTS FNAME OVVEW SUMRY FROPT GROUT CAOUT WAOUT NIOUT MIOUT DIOUT VBOSE CHOUT OPOUT + 1 OU N Y Y 14 N Y Y Y N N Y N Y + +@ AUTOMATIC MANAGEMENT + at N PLANTING PFRST PLAST PH2OL PH2OU PH2OD PSTMX PSTMN + 1 PL 00050 00200 40 100 30 40 10 + at N IRRIGATION IMDEP ITHRL ITHRU IROFF IMETH IRAMT IREFF + 1 IR 40 80 100 GS000 IR001 10 .75 + at N NITROGEN NMDEP NMTHR NAMNT NCODE NAOFF + 1 NI 30 10 50 FE001 GS000 + at N RESIDUES RIPCN RTIME RIDEP + 1 RE 100 1 20 + at N HARVEST HFRST HLAST HPCNP HPCNR + 1 HA 0 01125 100 0 + + at N GENERAL NYERS NREPS START SDATE RSEED SNAME.................... SMODEL + 2 GE 30 1 S 00001 2150 Rainfed MZCER + at N OPTIONS WATER NITRO SYMBI PHOSP POTAS DISES CHEM TILL CO2 + 2 OP Y Y Y N N N N N R + at N METHODS WTHER INCON LIGHT EVAPO INFIL PHOTO HYDRO NSWIT MESOM MESEV MESOL + 2 ME M M E F S L R 1 G S 2 + at N MANAGEMENT PLANT IRRIG FERTI RESID HARVS + 2 MA A N D A A + at N OUTPUTS FNAME OVVEW SUMRY FROPT GROUT CAOUT WAOUT NIOUT MIOUT DIOUT VBOSE CHOUT OPOUT + 2 OU N Y Y 14 N Y Y Y N N Y N Y + +@ AUTOMATIC MANAGEMENT + at N PLANTING PFRST PLAST PH2OL PH2OU PH2OD PSTMX PSTMN + 2 PL 00050 00200 40 100 30 40 10 + at N IRRIGATION IMDEP ITHRL ITHRU IROFF IMETH IRAMT IREFF + 2 IR 40 70 90 GS000 IR001 10 .75 + at N NITROGEN NMDEP NMTHR NAMNT NCODE NAOFF + 2 NI 30 20 100 FE001 GS000 + at N RESIDUES RIPCN RTIME RIDEP + 2 RE 100 1 20 + at N HARVEST HFRST HLAST HPCNP HPCNR + 2 HA 0 01125 100 0 Added: SwiftApps/DSSAT/beagle/bin/run/data/JDATE.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/JDATE.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/JDATE.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,77 @@ +*JULIAN DATES +! DSSAT v4.0; 08/31/2005 + +*STANDARD YEARS + + DAY OF -------- DAY OF YEAR (JULIAN DATE) ------------ + MONTH JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC + 1 2 3 4 5 6 7 8 9 10 11 12 + 1 1 32 60 91 121 152 182 213 244 274 305 335 + 2 2 33 61 92 122 153 183 214 245 275 306 336 + 3 3 34 62 93 123 154 184 215 246 276 307 337 + 4 4 35 63 94 124 155 185 216 247 277 308 338 + 5 5 36 64 95 125 156 186 217 248 278 309 339 + 6 6 37 65 96 126 157 187 218 249 279 310 340 + 7 7 38 66 97 127 158 188 219 250 280 311 341 + 8 8 39 67 98 128 159 189 220 251 281 312 342 + 9 9 40 68 99 129 160 190 221 252 282 313 343 + 10 10 41 69 100 130 161 191 222 253 283 314 344 + 11 11 42 70 101 131 162 192 223 254 284 315 345 + 12 12 43 71 102 132 163 193 224 255 285 316 346 + 13 13 44 72 103 133 164 194 225 256 286 317 347 + 14 14 45 73 104 134 165 195 226 257 287 318 348 + 15 15 46 74 105 135 166 196 227 258 288 319 349 + 16 16 46 75 106 136 167 197 228 259 289 320 350 + 17 17 48 76 107 137 168 198 229 260 290 321 351 + 18 18 49 77 108 138 169 199 230 261 291 322 352 + 19 19 50 78 109 139 170 200 231 262 292 323 353 + 20 20 51 79 110 140 171 201 232 263 293 324 354 + 21 21 52 80 111 141 172 202 233 264 294 325 355 + 22 22 53 81 112 142 173 203 234 265 295 326 356 + 23 23 54 82 113 143 174 204 235 266 296 327 357 + 24 24 55 83 114 144 175 205 236 267 297 328 358 + 25 25 56 84 115 145 176 206 237 268 298 329 359 + 26 26 57 85 116 146 177 207 238 269 299 330 360 + 27 27 58 86 117 147 178 208 239 270 300 331 361 + 28 28 59 87 118 148 179 209 240 271 301 332 362 + 29 29 88 119 149 180 210 241 272 302 333 363 + 30 30 89 120 150 181 211 242 273 303 334 364 + 31 31 90 151 212 243 304 365 + +*LEAP YEARS + + DAY OF -------- DAY OF YEAR (JULIAN DATE) ------------ + MONTH JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC + 1 2 3 4 5 6 7 8 9 10 11 12 + 1 1 32 61 92 122 153 183 214 245 275 306 336 + 2 2 33 62 93 123 154 184 215 246 276 307 337 + 3 3 34 63 94 124 155 185 216 247 277 308 338 + 4 4 35 64 95 125 156 186 217 248 278 309 339 + 5 5 36 65 96 126 157 187 218 249 279 310 340 + 6 6 37 66 97 127 158 188 219 250 280 311 341 + 7 7 38 67 98 128 159 189 220 251 281 312 342 + 8 8 39 68 99 129 160 190 221 252 282 313 343 + 9 9 40 69 100 130 161 191 222 253 283 314 344 + 10 10 41 70 101 131 162 192 223 254 284 315 345 + 11 11 42 71 102 132 163 193 224 255 285 316 346 + 12 12 43 72 103 133 164 194 225 256 286 317 347 + 13 13 44 73 104 134 165 195 226 257 287 318 348 + 14 14 45 74 105 135 166 196 227 258 288 319 349 + 15 15 46 75 106 136 167 197 228 259 289 320 350 + 16 16 47 76 107 137 168 198 229 260 290 321 351 + 17 17 48 77 108 138 169 199 230 261 291 322 352 + 18 18 49 78 109 139 170 200 231 262 292 323 353 + 19 19 50 79 110 140 171 201 232 263 293 324 354 + 20 20 51 80 111 141 172 202 233 264 294 325 355 + 21 21 52 81 112 142 173 203 234 265 295 326 356 + 22 22 53 82 113 143 174 204 235 266 296 327 357 + 23 23 54 83 114 144 175 205 236 267 297 328 358 + 24 24 55 84 115 145 176 206 237 268 298 329 359 + 25 25 56 85 116 146 177 207 238 269 299 330 360 + 26 26 57 86 117 147 178 208 239 270 300 331 361 + 27 27 58 87 118 148 179 209 240 271 301 332 362 + 28 28 59 88 119 149 180 210 241 272 302 333 363 + 29 29 60 89 120 150 181 211 242 273 303 334 364 + 30 30 90 121 151 182 212 243 274 304 335 365 + 31 31 91 152 213 244 305 366 + \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/JDATE.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/MODEL.ERR =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/MODEL.ERR (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/MODEL.ERR 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,754 @@ +!AUTOM 42 +AUTOMATIC MANAGEMENT section missing. + +*CHEMI 42 +CHEMICALS section missing. + +*CULTI 42 +CULTIVARS section missing. + +*ENVIR 42 +ENVIRONMENT section missing. + +*EXP.D 42 +EXP.DETAILS section missing. + +*FERTI 42 +FERTILIZERS section missing. + +*FIELD 42 +FIELDS section missing. + +*HARVE 42 +HARVEST section missing. + +*INITI 42 +INITIAL CONDITIONS section missing. + +*IRRIG 42 +IRRIGATION section missing. + +*PLANT 42 +PLANTING DETAILS section missing. + +*RESID 42 +RESIDUES section missing. + +*SIMUL 42 +SIMULATION CONTROL section missing. + +*SOIL 42 +SOIL section missing. + +*TILLA 42 +TILLAGE section missing. + +*TREAT 42 +TREATMENTS section missing. + +!*CANO 42 +CANOPY HEIGHT AND WIDTH GROWTH PARAMETERS section missing. + +!*CARB 42 +CARBON AND NITROGEN MINING PARAMETERS section missing. + +*EMERG 42 +EMERGENCE INITIAL CONDITIONS section missing. + +!*EVAP 42 +EVAPOTRANSPIRATION section missing. + +!*LEAF 42 +LEAF PARAMETERS section missing. + +!*NITR 42 +NITROGEN FIXATION PARAMETERS section missing. + +*NITRO 42 +NITROGEN PARAMETERS section missing. + +!*PHEN 42 +PHENOLOGY PARAMETERS section missing. + +!*PHOT 42 +PHOTOSYNTHESIS PARAMETERS section missing. + +*PHOTO 42 +PHOTOSYNTHESIS PARAMETERS section missing. + +!*PLAN 42 +PLANT COMPOSITION VALUES section missing. + +!*POD 42 +POD LOSS PARAMETERS section missing. + +!*ROOT 42 +ROOT PARAMETERS section missing. + +!*SEED 42 +SEED parameters section missing. + +*SEED 42 +SEED GROWTH PARAMETERS section missing. + +*STRES 42 +STRESS RESPONSE section missing. + +*TEMPE 42 +TEMPERATURE EFFECTS section missing. + +!*VEGE 42 +VEGETATIVE PARTITIONING PARAMETERS section missing. + +AUTFER 1 +Error in Fertilizer Sensitivity Analysis Selection. Fix entry or batch file. + +AUTHAR 10 +Invalid harvest code specified. + +AUTIRR 1 +Error in Irrigation Sensitivity Analysis Selection. Fix entry or batch file. + +CROPD 29 +Detail.CDE file not found. Program will stop. + +CSM -1 +End of file encountered. + +CSM 1 +Error in the format of the input file. Please fix the file. + +CSM 2 +Input file does not exist. + +CSM 3 +Error in DSSAT Configuration file. Please fix the file. + +CSM 4 +Your configuration file is incompatible with the current version. Please update the file. + +CSM 26 +Error in the format of the batch file. Please fix the file. + +CSM 27 +Input module not found. Please locate input module. + +CSM 28 +Batch file not found. Please check file name or create file. + +CSM 29 +File not found. Please check file name or create file. + +CSM 33 +End of file encountered. + +CSM 64 +Invalid format in file. + +GETDSC 29 +Detail.CDE file not found. Program will stop. + +IDWTH 1 +Error in Weather Sensitivity Selection entry. Fix entry or batch file. + +IDWTH 2 +End of File in Weather Sensitivity Selection entry. Fix entry or batch file. + +INPUT 1 +Error in Selection entry. Fix entry or batch file. + +INPUT 2 +Planting Date is Before Start of Simulation. Please Fix Input File. + +INPUTX 0 +Input module failed. Program execution halted. + +IPFERT 2 +Fertilizer input section not found. Please correct input file. + +IPCHEM 2 +Chemical input level not found. Please correct input file. + +IPCHEM 3 +First chemical application date is defined prior to the start of simulation. + +IPCHEM 11 +No input amount defined for chemical applications. + +IPCUL 2 +Cultivar input level not found. Please correct input file. + +IPECO 1 +Error in Ecotype entry. Fix entry or batch file. + +IPECO 2 +Error in Ecotype entry. Fix ecotype input file. + +IPECO 2 +Error in Ecotype entry. Fix ecotype input file. + +IPECO 3 +DEFAULT Ecotype not found. Fix ecotype input file. + +IPECO 21 +Ecotype input section not found. Please correct file. + +IPECO 29 +File not found. Please check file name or create file. + +IPENV 1 +Environmental modification input level not found. Please correct input file. + +IPENV 2 +Environmental modification input level not found. Please correct input file. + +IPEXP 1 +Treatment input section not found. Please add to input file. + +IPEXP 2 +Error in Experiment Selection entry. Fix entry or batch file. + +IPEXP 3 +Error in Treatment Selection entry. Fix entry or batch file. + +IPEXP 4 +Simulation must begin on or before the planting date. Correct dates. + +IPEXP 10 +Error in crop input. Correct input file. + +IPEXP 11 +Error in cultivar input. Correct input file. + +IPEXP 20 +You selected a crop which can not be simulated by this model. Please ReExecute + +IPEXP 21 +Experiment list input section not found. Please correct file. + +IPEXP 22 +Incorrect weather method option selected. Please correct file. + +IPEXP 29 +File not found. Please check file name or create file. + +IPEXP 64 +Treatment not found. Please check inputs or input file. + +IPEXP 99 +This file can only be run for spatial analysis applications. + +IPFERT 1 +Fertilizer input section not found. Please add to input file. + +IPFERT 2 +Fertilizer input level not found. Please correct input file. + +IPFERT 3 +First fertilizer application date is defined prior to the start of simulation. + +IPFERT 10 +Error in date of fertilizer application input. Correct input file. + +IPFERT 11 +Error in depth of fertilizer application input. Correct input file. + +IPFERT 12 +Error in amount of N-fertilizer input. Correct input file. + +IPFERT 13 +Error in amount of P-fertilizer input. Correct input file. + +IPFERT 14 +Error in fertilizer code. Correct input file. + +IPFLD 1 +Field input section not found. Please add to input file. + +IPFLD 2 +Field input level not found. Please correct input file. + +IPFLD 10 +Error in weather station input. Correct input file. + +IPFLD 11 +Error in soil identification input. Correct input file. + +IPHAR 1 +Harvest input section not found. Please add to input file. + +IPHAR 2 +Harvest input level not found. Please correct input file. + +IPHAR 3 +Harvest growth stage not found. Please add to input file. + +IPHAR 4 +Reported harvest date not found. Please add to input file. + +IPHAR 5 +Reported harvest date after planting not found. Please add to input file. + +IPHAR 10 +Error in date of harvest input. Correct input file. + +IPHAR 11 +Error in harvest input. Correct input file. + +IPHAR 12 +Error in harvest stage code. Correct input file. + +IPHAR 13 +Error in date of harvest input. Please define date of harvest. + +IPHAR 14 +Automatic harvest option not available for this crop. Correct input file. + +IPIRR 1 +Irrigation input section not found. Please add to input file. + +IPIRR 2 +Irrigation input level not found. Please correct input file. + +IPIRR 3 +First irrigation application date is defined prior to the start of simulation. + +IPIRR 10 +Error in date of irrigation input. Correct input file. + +IPIRR 11 +Error in amount of irrigation input. Correct input file. + +IPIRR 12 +Error in irrigation code. Correct input file. + +IPPARM 21 +Pest parameter input section not found. Please correct file. + +IPPARM 29 +File not found. Please check file name or create file. + +IPPARM 30 +Maximum number of pests is 100. Please reduce your number of pests. + +IPPHEN 7 +Ecotype input section not found. Please correct file. + +IPPLNT 1 +Planting input section not found. Please add to input file. + +IPPLNT 2 +Error in planting inputs. Check format. + +IPPLNT 10 +Error in planting date input. Check format. + +IPPLNT 11 +Error in plant population input. Check format. + +IPPLNT 12 +Error in row spacing input. Check format. + +IPPLNT 13 +Error in row orientation input. Check format. + +IPPLNT 14 +Error in planting depth input. Check format. + +IPPLNT 15 +Error in emergence date input. Please check format or add information. + +IPPLNT 16 +Error in sprout length input. Please define sprout length in seed age column. + +IPPLNT 17 +Error in initial seed potato weight input. Please check format. + +IPPLNT 18 +Error in initial weight of transplants. Please check format. + +IPPLNT 19 +Invalid planting method. Please check input data. + +IPPLNT 64 +Invalid format in input file. Please check format. + +IPRES 1 +Residue input section not found. Please add to input file. + +IPRES 2 +Residue input level not found. Please correct input file. + +IPRES 3 +First residue application date is defined prior to the start of simulation. + +IPRES 10 +Error in date of residue application input. Correct input file. + +IPRES 11 +Error in amount of residue input. Correct input file. + +IPRES 12 +Error in amount of residue N input. Correct input file. + +IPRES 13 +Error in amount of residue P input. Correct input file. + +IPRES 14 +Error in amount of residue K input. Correct input file. + +IPRICE 10 +Nursery temperature can not be less than zero. Correct input file. + +IPSIM 1 +Simulation control section not found. Please add to input file. + +IPSIM 2 +Incorrect number of lines in simulation control section. Check format. + +IPSIM 3 +Impossible combination--for MEEVP='Z', MEPHO must be 'L' + +IPSIM 4 +Automatic harvest option not available for this crop. Correct input file. + +IPSIM 5 +Automatic planting option not available for this crop. Correct input file. + +IPSLAN 1 +Initial soil analysis section not found. Please add to input file. + +IPSLAN 2 +Soil analysis input level not found. Please correct input file. + +IPSLAN 10 +Error in initial bulk density inputs. Please check data. + +IPSLAN 11 +Error in initial organic carbon inputs. Please check data. + +IPSLAN 12 +Error in initial nitrogen inputs. Please check data. + +IPSLIN 1 +Initial soil input section not found. Please add to input file. + +IPSLIN 2 +Initial soil conditions input level not found. Please correct input file. + +IPSLIN 10 +Error in initial soil water inputs. Please check data. + +IPSLIN 11 +Error in initial NH4 inputs. Please check data. + +IPSLIN 12 +Error in initial NO3 inputs. Please check data. + +IPSLIN 13 +Error in initial residue weight inputs. Please check data. + +IPSLIN 14 +Error in initial residue nodule weight inputs. Please check data. + +IPSLIN 15 +Error in inoculation efficiency data. Please check data. + +IPSLIN 16 +Error in fixation efficiency data. Please check data. + +IPSOIL 1 +Error in Soil Selection entry. Fix entry or batch file. + +IPSOIL 2 +More than 19 layers in the soil profile. Correct input file. + +IPSOIL 3 +Error in Soil Selection entry. Fix soil input file. + +IPSOIL 4 +End of soil file. Please add missing information to input file. + +IPSOIL 5 +Depth of second tier does not match the one of the first tier. Fix input file. + +IPSOIL 6 +Number of layers in second tier does not match the number in the first tier. + +IPSOIL 7 +Saturated water content (SAT) is LESS than drained upper limit. Fix input file. + +IPSOIL 8 +Drained upper limit (DUL) is LESS than lower limit (LL). Fix input file. + +IPSOIL 9 +SLU1 is missing or defined as 0. Please define as a value > 0.0. + +IPSOIL 10 +SLDR is missing or defined as 0. Please define as a value > 0.0. + +IPSOIL 11 +SLRO is missing or defined as 0. Please define as a value > 0.0. + +IPSOIL 12 +SALB is missing or defined as 0. Please define as a value > 0.0. + +IPSOIL 13 +DUL is missing or defined as 0. Please define as a value > 0.0. + +IPSOIL 21 +Soil input section not found. Please correct file. + +IPSOIL 29 +File not found. Please check soil profile name or create file. + +IPTILL 2 +Tillage input level not found. Please correct input file. + +IPTILL 3 +First tillage application date is defined prior to the start of simulation. + +IPVAR 1 +Error in Cultivar entry. Fix entry or batch file. + +IPVAR 2 +Error in Cultivar entry. Fix cultivar input file. + +IPVAR 21 +Genetics input section not found. Please correct file. + +IPVAR 22 +LFMAX is less than or equal 0. Please correct file. + +IPVAR 23 +SLAVAR is less than or equal 0. Please correct file. + +IPVAR 24 +XFRUIT is less than or equal 0. Please correct file. + +IPVAR 25 +WTPSD is less than or equal 0. Please correct file. + +IPVAR 26 +SDPDVR is less than or equal 0. Please correct file. + +IPVAR 27 +SFDUR is less than or equal 0. Please correct file. + +IPVAR 28 +PODUR is less than or equal 0. Please correct file. + +IPVAR 29 +File not found. Please check file name or create file. + +IPWTH 1 +Simulation date must be AFTER first available weather day. Correct dates. + +IPWTH 2 +Missing day in weather data file. + +IPWTH 3 +Missing or negative data in weather data file. + +IPWTH 4 +Tmax and Tmin are both set to 0 in weather data file. + +IPWTH 5 +Tmax and Tmin have identical values in weather data file. + +IPWTH 6 +Tmax is less than Tmin in weather data file. + +IPWTH 29 +File not found. Please check file name or create file. + +IRRIG 10 +Incompatibility between Century SOM method and flooded field management. + +LAND 2 +Planting date is before start of simulation date. Please fix input file. + +MODELN 1 +Error opening file. Please check file. + +MODELN 2 +File not find. Please create or copy file to working directory. + +MODELN 3 +Code not found. Please fix configuration file. + +MODELN 4 +This model does not exist. Please contact the CSM team for further information. + +MODELN 5 +This crop module does not exist. Please contact the CSM team for further information. + +MODELN 6 +Your configuration file is incompatible with the current version. Please update the file. + +PATH 1 +Code not found in profile file DSSATPRO.FLE. Please correct file. + +PPLANT 10 +Review P parameters in species file. + +READA 1 +Error in experimental data (averages) file. Could not find @TRNO header line. + +READA 2 +Error in experimental data (averages) file. + +SEDLYR 1 +Error in Soil Sensitivity Analysis Selection entry. Fix entry or batch file. + +SEFERT 1 +Error in Fertilizer Sensitivity Analysis Selection. Fix entry or batch file. + +SEFIX 1 +Error in Fixation Sensitivity Analysis Selection. Fix entry or batch file. + +SEFREQ 1 +Error in Output Frequency Selection entry. Fix entry or batch file. + +SEFREQ 2 +Error in Output Frequency Selection entry. Fix entry or batch file. + +SEPEST 1 +Error in Pest Sensitivity Analysis Selection entry. Fix entry or batch file. + +SEINIT 1 +Error in Initialization Sensitivity Analysis Selection. Fix entry or batch file. + +SEIRR 1 +Error in Irrigation Sensitivity Analysis Selection. Fix entry or batch file. + +SEPROF 1 +Error in Soil Sensitivity Analysis Selection entry. Fix entry or batch file. + +SESOIL 1 +Error in Soil Sensitivity Analysis Selection entry. Fix entry or batch file. + +SEVAR 1 +Error in Variety Sensitivity Analysis Selection entry. Fix entry or batch file. + +SEWTH 1 +Error in Weather Sensitivity Analysis Selection entry. Fix entry or batch file. + +SENS 1 +Error in Sensitivity Selection entry. Fix entry or batch file. + +SOILDY 10 +Error in soil organic carbon data. Please check file. + +SOILDY 11 +Missing data in soil file. Please check file. + +SOILDY 29 +File not found. Please check file name or create file. + +SOILDY 33 +End of file encountered. + +SOILDY 64 +Invalid format in file. + +SOMFIX 1 +File does not exist. Please copy file from the appropriate directory. + +SOMINI 1 +File does not exist. Please copy file from the appropriate directory. + +SWCROP 1 +Error in Crop entry. Fix entry or batch file. + +SWFERT 1 +Error in Fertilizer Sensitivity Analysis Selection. Fix entry or batch file. + +SWFIX 1 +Error in Fertilizer Sensitivity Analysis Selection. Fix entry or batch file. + +SWINSC 1 +Error in Initial Soil Sensitivity Analysis Selection. Fix entry or batch file. + +SWIRR 1 +Error in Irrigation Sensitivity Analysis Selection. Fix entry or batch file. + +SWWTH 1 +Error in Weather Sensitivity Analysis Selection. Fix entry or batch file. + +WEATHR 1 +Weather method selected not available. Please fix input file. + +WTHMOD 1 +Environmental modification section not found. + +WTHMOD 10 +Weather modification created negative data in minimum data set. Check changes. + +WGENIN 4 +Missing WGEN data in climate file. Program will stop. + +SIMMIN 4 +Missing MONTHLY AVERAGES data in climate file. Program will stop. + +MISC -1 +End-of-file encountered in input file. + +MISC 6100 +Integer overflow in input file. Check format. + +MISC 6101 +Invalid integer in input file. Check format. + +MISC 6103 +Invalid real in input file. Check format. + +MISC 6205 +A Edit descriptor expexted for Character. Check format. + +MISC 6206 +Invalid format in input file. Check format. + +MISC 6416 +File not found. Create input file. + +GENERI 1 +Section not found in input file. Check file. + +GENERI 29 +File not found. Please check file name or create file. + +GENERI 33 +End of file encountered. + +GENERI 35 +Error in ECOTYPE entry. + +GENERI 36 +Error in cultivar entry. + +GENERI 42 +Input section not found. + +GENERI 59 +Syntax error. + +GENERI 64 +Invalid format in file. + +*Messages that are no longer used: + +CROPGR 1 +Incompatible input file format. + +MRUN 1 +Specified weather data files not available. Please create files. + +IPCROP 1 +Error in Crop Parameter Input File. End of file reached. + +PLANT 1 +Error in photosynthesis process option. Please correct input file. + + + Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/MODEL.ERR ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.CUL =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.CUL (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.CUL 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,179 @@ +*MAIZE CULTIVAR COEFFICIENTS: GECER040 MODEL +! +!The P1 values for the varieties used in experiments IBWA8301 and +!UFGA8201 were recalibrated to obtain a better fit for version 3 +!of the model. After converting from 2.1 to 3.0 the varieties +!IB0035, IB0060, and IB0063 showed an earlier simulated flowering +!date. To correct this, the P1 values were recalibrated. +!The reason for this is that there was an error in PHASEI in +!version 2.1 that had TLNO=IFIX(CUMDTT/21.+6.) rather than +!TLNO=IFIX(SUMDTT/21.+6.); see p. 74 of Jones & Kiniry. +!-Walter Bowen, 22 DEC 1994. +! +!All G2 values were increased by a factor of 1.1 for Ritchie's +!change to RUE -Walter, 28 DEC 1994 +! +! COEFF DEFINITIONS +! ======== =========== +! VAR# Identification code or number for a specific cultivar +! VAR-NAME Name of cultivar +! ECO# Ecotype code or this cultivar, points to the Ecotype in the +! ECO file (currently not used). +! P1 Thermal time from seedling emergence to the end of the juvenile +! phase (expressed in degree days above a base temperature of 8?C) +! during which the plant is not responsive to changes in +! photoperiod. +! P2 Extent to which development (expressed as days) is delayed for +! each hour increase in photoperiod above the longest photoperiod +! at which development proceeds at a maximum rate (which is +! considered to be 12.5 hours). +! P5 Thermal time from silking to physiological maturity (expressed +! in degree days above a base temperature of 8?C). +! G2 Maximum possible number of kernels per plant. +! G3 Kernel filling rate during the linear grain filling stage and +! under optimum conditions (mg/day). +! PHINT Phylochron interval; the interval in thermal time (degree days) +! between successive leaf tip appearances. +! +! PIO Pioneer +! AS Asgrow (Monsanto) +! DK Dekalb (Monsanto) +! LH Holden (Monsanto) +! C/LOL Land of Lakes +! + at VAR# VRNAME.......... ECO# P1 P2 P5 G2 G3 PHINT +! 1 2 3 4 5 6 + +PC0001 2500-2600 GDD IB0001 160.0 0.750 780.0 750.0 8.50 38.90 +PC0002 2600-2650 GDD IB0001 185.0 0.750 850.0 800.0 8.50 38.90 +PC0003 2650-2700 GDD IB0001 212.0 0.750 850.0 800.0 8.50 38.90 +PC0004 2700-2750 GDD IB0001 240.0 0.750 850.0 800.0 8.50 38.90 +PC0005 2750-2800 GDD IB0001 260.0 0.750 850.0 800.0 8.50 38.90 + +990001 LONG SEASON IB0001 320.0 0.520 940.0 620.0 6.00 38.90 +990002 MEDIUM SEASON IB0001 200.0 0.300 800.0 700.0 8.50 38.90 +990003 SHORT SEASON IB0001 110.0 0.300 680.0 820.4 6.60 38.90 +990004 V.SHORT SEASON IB0001 5.0 0.300 680.0 820.4 6.60 38.90 +! +IB0001 CORNL281 IB0001 110.0 0.300 685.0 907.9 6.60 38.90 +IB0002 CP170 IB0001 120.0 0.000 685.0 907.9 10.00 38.90 +IB0003 LG11 IB0001 125.0 0.000 685.0 907.9 10.00 38.90 +IB0004 F7 X F2 IB0001 125.0 0.000 685.0 907.9 10.00 38.90 +IB0005 PIO 3995 IB0001 130.0 0.300 685.0 907.9 8.60 38.90 +IB0006 INRA IB0001 135.0 0.000 685.0 907.9 10.00 38.90 +IB0007 EDO IB0001 135.0 0.300 685.0 907.9 10.40 38.90 +IB0008 A654 X F2 IB0001 135.0 0.000 685.0 907.9 10.00 38.90 +IB0009 DEKALB XL71 IB0001 140.0 0.300 685.0 907.9 10.50 38.90 +IB0010 F478 X W705A IB0001 140.0 0.000 685.0 907.9 10.00 38.90 +IB0011 DEKALBXL45 IB0001 150.0 0.400 685.0 907.9 10.15 38.90 +IB0012 PIO 3382 IB0001 160.0 0.700 890.0 825.0 8.50 38.90 +IB0013 B59*OH43 IB0001 162.0 0.800 685.0 862.4 6.90 38.90 +IB0014 F16 X F19 IB0001 165.0 0.000 685.0 907.9 10.00 38.90 +IB0015 WASHINGTON IB0001 165.0 0.400 715.0 825.0 11.00 38.90 +IB0016 B14XOH43 IB0001 172.0 0.300 685.0 907.9 8.50 38.90 +IB0017 R1*(N32*B14) IB0001 172.0 0.800 685.0 907.9 10.15 38.90 +IB0018 B60*R71 IB0001 172.0 0.800 685.0 781.4 7.70 38.90 +IB0019 WF9*B37 IB0001 172.0 0.800 685.0 907.9 10.15 38.90 +IB0020 B59*C103 IB0001 172.0 0.800 685.0 907.9 10.15 38.90 +IB0021 Garst 8702 IB0001 175.0 0.200 960.0 855.8 6.00 38.90 +IB0022 B14*C103 IB0001 180.0 0.500 685.0 907.9 10.15 38.90 +IB0023 B14*C131A IB0001 180.0 0.500 685.0 907.9 10.15 38.90 +IB0024 PIO 3720 IB0001 180.0 0.800 685.0 907.9 10.00 38.90 +IB0025 WASH/GRAIN-1 IB0001 185.0 0.400 775.0 836.0 12.00 38.90 +IB0026 A632 X W117 IB0001 187.0 0.000 685.0 907.9 10.00 38.90 +IB0027 Garst 8750 IB0001 190.0 0.200 930.0 891.0 6.30 38.90 +IB0028 TAINAN-11 IB0001 200.0 0.800 670.0 803.0 6.80 38.90 +IB0029 PIO 3541 IB0001 200.0 0.300 800.0 770.0 8.50 38.90 +IB0030 PIO 3707 IB0001 200.0 0.700 800.0 649.0 6.30 38.90 +IB0031 PIO 3475 IB0001 200.0 0.700 800.0 797.5 8.60 38.90 +IB0032 PIO 3382 IB0001 200.0 0.700 800.0 715.0 8.50 38.90 +IB0033 PIO 3780 IB0001 200.0 0.760 685.0 660.0 9.60 38.90 +IB0034 PIO 3780* IB0001 200.0 0.760 685.0 797.5 9.60 38.90 +! DSSAT 3.5 version of McCurdy 84aa +!IB0035 McCurdy 84aa IB0001 265.0 0.300 940.0 770.0 8.00 38.90 !P1 was 200 +! DSSAT 4.0 version of McCurdy 84aa +IB0035 McCurdy 84aa IB0002 265.0 0.300 920.0 990.0 8.50 39.00 !P1 was 200 + +IB0036 C281 IB0001 202.0 0.300 685.0 907.9 5.80 38.90 +IB0037 SWEET CORN IB0001 210.0 0.520 625.0 907.5 10.00 38.90 +IB0038 Garst 8555 IB0001 215.0 0.400 890.0 880.0 9.00 38.90 +IB0039 PIO 3901 IB0001 215.0 0.760 600.0 616.0 9.00 38.90 +IB0040 B8*153R IB0001 218.0 0.300 760.0 632.5 8.80 38.90 +IB0041 Garst 8808 IB0001 220.0 0.400 780.0 858.0 8.50 38.90 +IB0042 B73 X MO17 IB0001 220.0 0.520 880.0 803.0 10.00 38.90 +IB0043 PIO 511A IB0001 220.0 0.300 685.0 709.5 10.50 38.90 +IB0044 W69A X F546 IB0001 240.0 0.300 685.0 907.9 10.00 38.90 +IB0045 A632 X VA26 IB0001 240.0 0.300 685.0 907.9 10.00 38.90 +IB0046 W64A X W117 IB0001 245.0 0.000 685.0 907.9 8.00 38.90 +IB0047 PIO 3147 IB0001 255.0 0.760 685.0 917.4 10.00 38.90 +IB0048 WF9*B37 IB0001 260.0 0.800 710.0 907.9 6.50 38.90 +IB0049 NEB 611 IB0001 260.0 0.300 720.0 907.5 9.00 38.90 +IB0050 PV82S IB0001 260.0 0.500 750.0 660.0 8.50 38.90 +IB0051 PV76S IB0001 260.0 0.500 750.0 660.0 8.50 38.90 +IB0052 PIO 3183 IB0001 260.0 0.500 750.0 660.0 8.50 38.90 +IB0053 CESDA-28 IB0001 260.0 0.500 669.0 858.0 7.10 38.90 +IB0054 B14*OH43 IB0001 265.0 0.800 665.0 858.0 6.90 38.90 +IB0055 MCCURDY 6714 IB0001 265.0 0.300 825.0 907.9 9.80 38.90 +IB0056 FM 6 IB0001 276.0 0.520 867.0 677.6 10.70 38.90 +IB0057 TOCORON-3 IB0001 276.0 0.520 867.0 660.0 8.12 38.90 +IB0058 NC+59 IB0001 280.0 0.300 750.0 907.5 10.00 38.90 +IB0059 H6 IB0001 310.0 0.300 685.0 907.9 10.00 38.90 +IB0060 H610(UH) IB0001 345.0 0.520 920.0 638.0 6.40 38.90 !P1 was 300 +IB0061 PB 8 IB0001 300.0 0.520 990.0 440.0 7.00 38.90 +IB0062 B56*C131A IB0001 318.0 0.500 700.0 885.5 6.40 38.90 +IB0063 PIO X 304C IB0001 385.0 0.520 940.0 687.5 6.00 38.90 !P1 was 320 +IB0064 H.OBREGON IB0001 360.0 0.800 685.0 907.9 10.15 38.90 +IB0065 SUWAN-1 IB0001 380.0 0.600 780.0 825.0 7.00 38.90 +IB0066 PIO 3165 IB0001 320.0 0.520 940.0 625.0 6.00 38.90 +IB0067 PIO 3324 IB0001 320.0 0.520 940.0 625.0 6.00 38.90 +IB0068 PIO 3475 IB0001 200.0 0.700 750.0 907.0 9.00 38.90 !P1 was 320 G2 was 625 G3 was 6 P5 was 940 +IB0168 PIO 3475 orig IB0001 220.0 0.700 850.0 907.0 9.90 38.90 +IB0069 PIO 3790 IB0001 212.4 0.520 792.8 625.0 6.00 38.90 +IB0070 CARGILL 111S IB0001 340.0 0.000 1000. 780.0 5.30 38.90 +IB0071 PIO 31G98 IB0003 165.0 0.750 680.0 820.4 6.60 30.00 !Envirotron/2002 Experiment +IB0089 GL 582 IB0001 200.0 0.700 750.0 750.0 8.60 38.90 +IB0090 GL 482 IB0001 240.0 0.700 990.0 907.0 8.80 38.90 +IB0091 GL 450 IB0001 200.0 0.700 850.0 700.0 7.00 38.90 +IB0092 LAURENT 3733 IB0001 200.0 0.700 680.0 725.0 9.00 38.90 !LAURENT estimation +IB0099 AGETI76 IB0001 325.0 2.000 625.0 580.0 7.30 50.00 +IB0100 PARTAP1 IB0001 450.0 2.000 580.0 600.0 16.50 50.00 +IB1051 AS 740 IB0001 215.0 0.750 850.0 700.0 5.00 48.00 +IB1052 DK 611 IB0001 260.0 0.100 800.0 850.0 6.00 48.00 +IB1053 LH198XLH185 IB0001 205.0 0.750 850.0 731.0 5.00 48.00 +IB1065 PIO 33Y09 IB0001 245.0 0.500 905.0 780.0 6.00 48.00 +IB1066 PIO 3489 . IB0001 225.0 0.600 895.0 875.0 8.80 48.00 +IB1067 PIO 3394 IB0001 240.0 0.500 900.0 820.0 8.50 48.00 +IB1069 PIO 3563 IB0001 216.0 0.600 830.0 860.0 8.80 48.00 +IB1072 DEKALB 485 IB0001 215.0 0.600 785.0 750.0 8.70 45.00 +IB1068 DEKALB 521 IB0001 215.0 0.400 795.0 890.0 8.00 48.00 +IB1168 DEKALB 591 IB0001 225.0 0.400 895.0 880.0 8.00 48.00 + +LL0499 C/LOL 499 IB0001 182.0 0.500 650.0 750.0 8.70 46.00 +LL0564 C/LOL 564 IB0001 210.0 0.500 670.0 880.0 11.25 46.00 +LL0581 C/LOL 581 IB0001 200.0 0.500 668.0 850.0 8.80 45.00 +LL0599 C/LOL 599 IB0001 200.0 0.500 670.0 850.0 8.80 45.00 +LL0542 C/LOL 542 IB0001 185.0 0.500 700.0 835.0 8.70 46.00 +LL0661 C/LOL 661 IB0001 200.0 0.500 670.0 850.0 9.00 45.00 +LL0674 C/LOL 674 IB0001 200.0 0.500 670.0 800.0 8.90 45.00 + +ZA0001 Prisma (FAO 700) IB0001 280.0 0.400 850.0 750.0 6.80 38.90 +ZA0002 Prisma GC Avg IB0001 280.0 0.776 789.0 650.0 6.03 38.90 + +IF0001 OBA SUPER 2 IB0001 270.0 0.600 780.0 840.0 7.80 45.00 +IF0002 EV8728-SR IB0001 265.0 0.600 800.0 900.0 7.20 45.00 +IF0003 Mokwa 87TZPB-SR IB0001 305.0 0.600 765.0 810.0 8.00 45.00 +IF0004 SPL (semi-prol) IB0001 270.0 0.600 740.0 920.0 7.40 41.00 +IF0005 TZB-SR (open p) IB0001 290.0 0.600 775.0 990.0 6.80 45.00 +IF0006 EV 8449-SR IB0001 385.0 0.600 860.0 700.0 8.00 50.00 +IF0007 EV 8449-SRx IB0001 385.0 0.600 860.0 945.4 7.20 50.00 +IF0008 AG-KADUNA IB0001 220.0 0.600 780.0 845.0 8.00 40.00 +IF0009 OBA S2 Benin IB0001 170.0 0.600 760.0 800.0 8.00 50.00 +IF0010 EV-8449_TG IB0001 260.0 0.600 630.0 900.0 9.00 45.00 +IF0011 EV-8443_TG IB0001 300.0 0.600 850.0 850.0 8.80 45.00 + +AC0001 TOHONO O'odham IB0001 200.0 0.100 610.0 248.0 9.80 38.90 !Michael Pool, Austin Comm College + +! Vietnam sequencing +VI0001 LVN 10 IB0001 350.0 1.000 980.0 760.0 9.20 38.90 + + Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.CUL ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.ECO =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.ECO (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.ECO 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,19 @@ +*MAIZE ECOTYPE COEFFICIENTS: GECER040 MODEL + +! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 + at ECO# ECONAME......... TBASE TOPT ROPT P20 DJTI GDDE DSGFT RUE KCAN +IB0001 GENERIC MIDWEST1 8.0 34.0 34.0 12.5 4.0 6.0 170. 4.2 0.85 +IB0002 GENERIC MIDWEST1 8.0 34.0 34.0 12.5 4.0 6.0 170. 4.5 0.85 +IB0003 GENERIC MIDWEST1 8.0 34.0 34.0 12.5 4.0 6.0 170. 2.0 0.85 +DFAULT DEFAULT 8.0 34.0 34.0 12.5 4.0 6.0 170. 4.2 0.85 + +!TBASE - base temperature below which no development occurs, C +!TOPT - temperature at which maximum development rate occurs during vegetative stages, C +!ROPT - temperature at which maximum development rate occurs for reproductive stages, C +!P2O - Daylength below which daylength does not affect development rate, hours +!DJTI - Minimum days from end of juvenile stage to tassel initiation if the cultivar +! is not photoperiod sensitive, days +!GDDE - Growing degree days per cm seed depth required for emergence, GDD/cm +!DSGFT - GDD from silking to effective grain filling period, C +!RUE - Radiation use efficiency, g plant dry matter/MJ PAR +!KCAN - Canopy light extinction coefficient for daily PAR. \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.ECO ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.SPE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.SPE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.SPE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,52 @@ +*MAIZE SPECIES COEFFICIENTS: GECER040 MODEL + +*TEMPERATURE EFFECTS +! TBASE TOP1 TOP2 TMAX + PRFTC 6.2 16.5 33.0 44.0 !Effect of temperature on photosynthesis + RGFIL 5.5 16.0 39.0 48.5 !Effect of temperature on relative grain filling rate + +*PHOTOSYNTHESIS PARAMETERS + PARSR 0.50 !Conversion of solar radiation to PAR + CO2X 0 220 330 440 550 660 770 880 990 9999 + CO2Y 0.00 0.81 1.00 1.03 1.06 1.10 1.13 1.16 1.18 1.25 + +*STRESS RESPONSE + FSLFW 0.050 !Fraction of leaf area senesced under 100% water stress, 1/day + FSLFN 0.050 !Fraction of leaf area senesced under 100% nitrogen stress, 1/day + +*SEED GROWTH PARAMETERS + SDSZ .2750 !Maximum potential seed size, mg/sd + RSGR 0.1 !Relative seed growth rate below which plant may mature early + RSGRT 5.0 !Number of consecutive days relative seed growth rate is below RSGR that triggers early maturity + CARBOT 7.0 !Number of consecutive days CARBO is less than .001 before plant matures due to temperature, water or nitrogen stress + DSGT 21.0 !Maximum days from sowing to germination before seed dies. + DGET 150.0 !Growing degree days between germination and emergence after which the seed dies due to drought + SWCG 0.02 !Minimimum available soil water required for seed germination, cm3/cm3 + +*EMERGENCE INITIAL CONDITIONS + STMWTE 0.20 !Stem weight at emergence, g/plant + RTWTE 0.20 !Root weight at emergence, g/plant + LFWTE 0.20 !Leaf weight at emergence, g/plant + SEEDRVE 0.20 !Carbohydrate reserve in seed at emergence, g/plant + LEAFNOE 1.0 !Leaf number at emergence, #/plant + PLAE 1.0 !Leaf area at emergence, cm2/plant + +*NITROGEN PARAMETERS + TMNC 0.00450 !Plant top minimum N concentration g N/g dry matter + TANCE 0.0440 !Nitrogen content in above ground biomass at emergence, g N/g dry matter + RCNP 0.01060 !Root critical nitrogen concentration, g N/g root dry weight + RANCE 0.0220 !Root N content at emergence g N/g root + +*ROOT PARAMETERS + PORM 0.05 !Minimum volume required for supplying oxygen to roots for optimum growth (1-1.0) + RWMX 0.03 !Not used in ceres, but passed through AltPlant for use elsewhere + RLWR 0.98 !mz_roots.for + RWUEP1 1.50 + + + + + + + + Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/MZCER040.SPE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/PEST.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/PEST.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/PEST.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,17 @@ +*PEST CODES +! DSSAT v4.0; 08/31/200 + +*Diseases and Pest Organisms +!Examples of codes that have been used are given below. +UFCEW Corn earworm (Heliothis zea), no. m-2 +UFVBC Velvetbean caterpillar (Anticarsia gemmatalis), no. m-2 +UFSBL Soybean looper (Pseudoplusia includens), no. m-2 +UFSKB Southern green stinkbug (Mezara viridula), no. m-2 +UFRKN Root-knot nematode (Meloidogyne spp.), no. cm-3 soil +IBCUT Cutworm, no. m-2 +LFMIN Leafminer (Aproaerema Modicella-Deventer) no.m-2, m2 m-2 leaf damage +MOW Top weight left, kg/ha +PSTDS General pest and diseases losses due to rot, tikka, leafminer, etc. +PCLA Defoliation, % +PDLA Diseased leaf area, % +PRP Reduction in photosynthetic rate, % \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/PEST.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/SOIL.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/SOIL.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/SOIL.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,93 @@ +*CODES FOR SOIL DATA +! DSSAT v4.0; 08/31/2005 +! +! Codes currently used for both detailed profile analysis and occasional +! analysis of the surface layers are listed. The soil analysis codes are +! also listed in the DATA.CDE file. +! +! The fields in the file are as follows: +! CDE The 'universal' code used to facilitate data interchange. +! DESCRIPTION A description of the code, with units. +! SO The source of the codes (IB=IBSNAT). Codes added by a user should be +! referenced in this field and the name and address of the person adding +! the code should be entered as a comment (ie.with a '!' in column 1) +! below this note. This is important to ensure that information from +! different workers can be easily integrated. + + at CDE DESCRIPTION SO +C Clay IB +CL Clay loam IB +L Loam IB +LAT Latitude, degrees (decimals;+ve north) IB +LONG Longitude, degrees (decimals;+ve east) IB +LS Loamy sand IB +S Sand IB +SABD Bulk density, moist, g cm-3 IB +SABL Depth, base of layer, cm IB +SADAT Analysis date, year + days from Jan. 1 IB +SAHB pH in buffer IB +SAHW pH in water IB +SAKE Potassium, exchangeable, cmol kg-1 IB +SALB Albedo, fraction IB +SANI Total nitrogen, % IB +SAOC Organic carbon, % IB +SAPX Phosphorus, extractable, mg kg-1 IB +SBDM Bulk density, moist, g cm-3 IB +SC Silty clay IB +SCEC Cation exchange capacity, cmol kg-1 IB +SCL Silty clay loam IB +SCOM Color, moist, Munsell hue IB +SCSFAM Family, SCS system IB +SDUL Upper limit, drained, cm3 cm-3 IB +SH20 Water, cm3 cm-3 IB +SI Silt IB +SIC Silty clay IB +SICL Silty clay loam IB +SIL Silty loam IB +SITE Site name IB +SL Sandy loam IB +SLAL Aluminum IB +SLB Depth, base of layer, cm IB +SLBS Base saturation, cmol kg-1 IB +SLCA CaCO3 content, g kg-1 IB +SLCF Coarse fraction (>2 mm), % IB +SLCL Clay (<0.002 mm), % IB +SLDP Soil depth, cm IB +SLDR Drainage rate, fraction day-1 IB +SLEC Electric conductivity, seimen IB +SLFE Iron IB +SLHB pH in buffer IB +SLHW pH in water IB +SLKE Potassium, exchangeable, cmol kg-1 IB +SLLL Lower limit, cm3 cm-3 IB +SLMG Magnesium, cmol kg-1 IB +SLMH Master horizon IB +SLMN Manganese IB +SLNA Sodium, cmol kg-1 IB +SLNF Mineralization factor, 0 to 1 scale IB +SLNI Total nitrogen, % IB +SLOC Organic carbon, % IB +SLPA Phosphorus isotherm A, mmol kg-1 IB +SLPB Phosphorus iostherm B, mmol l-1 IB +SLPF Photosynthesis factor, 0 to 1 scale IB +SLPO Phosphorus, organic, mg kg-1 IB +SLPT Phosphorus, total, mg kg-1 IB +SLPX Phosphorus, extractable, mg kg-1 IB +SLRF Root growth factor, soil+plant, 0.0 to 1.0 IB +SLRO Runoff curve no. (Soil Conservation Service) IB +SLSI Silt (0.05 to 0.002 mm), % IB +SLSU Sulphur IB +SLTX Soil texture IB +SLU1 Evaporation limit, mm IB +SMHB pH in buffer determination method, code IB +SMKE Potassium determination method, code IB +SMPX Phosphorus determination code IB +SNH4 Ammonium, KCl, g elemental N Mg-1 soil IB +SNO3 Nitrate, KCl, g elemental N Mg-1 soil IB +SRGF Root growth factor, soil only, 0.0 to 1.0 IB +SSAT Upper limit, saturated, cm3 cm-3 IB +SSKS Sat. hydraulic conductivity, macropore, cm h-1 IB + + + + \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/SOIL.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/WEATHER.CDE =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/WEATHER.CDE (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/WEATHER.CDE 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,91 @@ +*WEATHER DATA CODES +! DSSAT v4.0; 08/31/2005 + +! Headers used in the @ line to identify variables are listed first; codes +! ('flags') used to designate data types are listed next. +! +! The fields in the file are as follows: +! CDE The 'universal' code used to facilitate data interchange. +! DESCRIPTION A description of the code, with units. +! SO The source of the codes (IB=IBSNAT). Codes added by a user should be +! referenced in this field and the name and address of the person adding +! the code should be entered as a comment (ie.with a '!' in column 1) +! below this note. This is important to ensure that information from +! different workers can be easily integrated. + +*Headers + at CDE DESCRIPTION SO +ALPHA Rainfall distribution scale parameter, monthly, mm-2 IB +AMTH Angstrom 'a' coefficient, monthly, unitless IB +ANGA Angstrom 'a' coefficient, yearly, unitless IB +ANGB Angstrom 'b' coefficient, yearly, unitless IB +BMTH Angstrom 'b' coefficient, monthly, unitless IB +DATE Date, year + days from Jan. 1 IB +DEWP Daily dewpoint temperature, C IB +DURN Duration of summarization period for climate files, Yr IB +ELEV Elevation, m IB +EVAP Daily pan evaporation (mm d-1) IB +GSDU Growing season duration, Day IB +GSST Growing season start day, Doy IB +INSI Institute and site code IB +LAT Latitude, degrees (decimals) IB +LONG Longitude, degrees (decimals) IB +MTH Month, # IB +NAMN Temperature minimum,all days,monthly average, C IB +NASD Temperature minimum,all days,monthly standard deviation, C IB +PAR Daily photosynthetic radiation, moles m-2 day-1 IB +PDW Probability of a dry-wet sequence IB +RAIN Daily rainfall (incl.snow), mm day-1 IB +RAIY Rainfall, yearly total, mm IB +REFHT Reference height for weather measurements, m IB +RNUM Rainy days, # month-1 IB +RTOT Rainfall total, mm month-1 IB +SAMN Solar radiation,all days,monthly average, MJ m-2 d-1 IB +SDMN Solar radiation,dry days,monthly average, MJ m-2 d-1 IB +SDSD Solar radiation,dry days,monthly standard deviation, MJ m-2 d-1 IB +SHMN Daily sunshine duration, monthly average, percent IB +SOURCE Source of daily weather data, text IB +SRAD Daily solar radiation, MJ m-2 day-1 IB +SRAY Solar radiation,yearly average, MJ m-2 day-1 IB +START Start of summary period for climate (CLI) files, Year IB +SUNH Daily sunshine duration, percent IB +SWMN Solar radiation,wet days,monthly average, MJ m-2 d-1 IB +SWSD Solar radiation,wet days,monthly standard deviation, MJ m-2 d-1 IB +TAMP Temperature amplitude, monthly averages, C IB +TAV Temperature average for whole year, C IB +TDRY Daily dry-bulb temperature, C IB +TMAX Daily temperature maximum, C IB +TMIN Daily temperature minimum, C IB +TMNY Temperature minimum, yearly average, C IB +TMXY Temperature maximum, yearly average, C IB +TWET Daily wet-bulb temperature, C IB +WIND Daily wind speed (km d-1) IB +WNDHT Reference height for windspeed measurements, m IB +XAMN Temperature maximum,all days,monthly average, C IB +XDMN Temperature maximum,dry days,monthly average, C IB +XDSD Temperature maximum,dry days,standard deviation, C IB +XWMN Temperature maximum,wet days,monthly average, C IB +XWSD Temperature maximum,wet days,standard deviation, C IB + +*Flags +! Flags attached to data to indicate the nature of the original data. Upper +! case flags = original data replaced; lower-case flags = original data. + + at CDE DESCRIPTION SO +A Above maximum - data replaced IB +a Above maximum - but original data left IB +B Below minimum - data replaced IB +b Below minimum - - but original data left IB +D Decadal averages only in original file - data replaced IB +d Decadal averages only in original file - but original data left IB +E Format error in original file - data replaced IB +e Format error in original file - but original data left IB +H Solar radiation as sunshine hours - data replaced IB +h Solar radiation as sunshine hours - but original data left IB +M Monthly averages only in original file - data replaced IB +m Monthly averages only in original file - but original data left IB +N No data in original file - data replaced IB +n No data in original file - but original data left IB +R Rate of change exceeded - data replaced IB +r Rate of change exceeded - but original data left IB + \ No newline at end of file Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/WEATHER.CDE ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/data/X1234567.MZX =================================================================== --- SwiftApps/DSSAT/beagle/bin/run/data/X1234567.MZX (rev 0) +++ SwiftApps/DSSAT/beagle/bin/run/data/X1234567.MZX 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,174 @@ +*EXP.DETAILS: Adaptation template, A1B CO2 + +*GENERAL + at PEOPLE +Joshua Elliott + at ADDRESS +Computation Institute, University of Chicago + at SITE +-99 +@ PAREA PRNO PLEN PLDR PLSP PLAY HAREA HRNO HLEN HARM......... + -99 -99 -99 -99 -99 -99 -99 -99 -99 -99 + +*TREATMENTS -------------FACTOR LEVELS------------ + at N R O C TNAME.................... CU FL SA IC MP MI MF MR MC MT ME MH SM + 1 1 0 0 350p, Full N, full H2O 1 1 0 0 1 0 1 1 0 0 1 0 1 + 2 1 0 0 350p, 2/3 N, full H20 1 1 0 0 1 0 2 1 0 0 1 0 1 + 3 1 0 0 350p, 1/3 N, full H20 1 1 0 0 1 0 3 1 0 0 1 0 1 + 4 1 0 0 350p, No N, full H20 1 1 0 0 1 0 4 1 0 0 1 0 1 + 5 1 0 0 350p, Full N, no H20 1 1 0 0 1 0 1 1 0 0 1 0 2 + 6 1 0 0 350p, 2/3 N, no H20 1 1 0 0 1 0 2 1 0 0 1 0 2 + 7 1 0 0 350p, 1/3 N, no H20 1 1 0 0 1 0 3 1 0 0 1 0 2 + 8 1 0 0 350p, No N, no H2O 1 1 0 0 1 0 4 1 0 0 1 0 2 + 9 1 0 0 450p, Full N, full H2O 1 2 0 0 1 0 1 1 0 0 2 0 1 +10 1 0 0 450p, 2/3 N, full H20 1 2 0 0 1 0 2 1 0 0 2 0 1 +11 1 0 0 450p, 1/3 N, full H20 1 2 0 0 1 0 3 1 0 0 2 0 1 +12 1 0 0 450p, No N, full H20 1 2 0 0 1 0 4 1 0 0 2 0 1 +13 1 0 0 450p, Full N, no H20 1 2 0 0 1 0 1 1 0 0 2 0 2 +14 1 0 0 450p, 2/3 N, no H20 1 2 0 0 1 0 2 1 0 0 2 0 2 +15 1 0 0 450p, 1/3 N, no H20 1 2 0 0 1 0 3 1 0 0 2 0 2 +16 1 0 0 450p, No N, no H2O 1 2 0 0 1 0 4 1 0 0 2 0 2 +17 1 0 0 550p, Full N, full H2O 1 3 0 0 1 0 1 1 0 0 3 0 1 +18 1 0 0 550p, 2/3 N, full H20 1 3 0 0 1 0 2 1 0 0 3 0 1 +19 1 0 0 550p, 1/3 N, full H20 1 3 0 0 1 0 3 1 0 0 3 0 1 +20 1 0 0 550p, No N, full H20 1 3 0 0 1 0 4 1 0 0 3 0 1 +21 1 0 0 550p, Full N, no H20 1 3 0 0 1 0 1 1 0 0 3 0 2 +22 1 0 0 550p, 2/3 N, no H20 1 3 0 0 1 0 2 1 0 0 3 0 2 +23 1 0 0 550p, 1/3 N, no H20 1 3 0 0 1 0 3 1 0 0 3 0 2 +24 1 0 0 550p, No N, no H2O 1 3 0 0 1 0 4 1 0 0 3 0 2 +25 1 0 0 650p, Full N, full H2O 1 4 0 0 1 0 1 1 0 0 4 0 1 +26 1 0 0 650p, 2/3 N, full H20 1 4 0 0 1 0 2 1 0 0 4 0 1 +27 1 0 0 650p, 1/3 N, full H20 1 4 0 0 1 0 3 1 0 0 4 0 1 +28 1 0 0 650p, No N, full H20 1 4 0 0 1 0 4 1 0 0 4 0 1 +29 1 0 0 650p, Full N, no H20 1 4 0 0 1 0 1 1 0 0 4 0 2 +30 1 0 0 650p, 2/3 N, no H20 1 4 0 0 1 0 2 1 0 0 4 0 2 +31 1 0 0 650p, 1/3 N, no H20 1 4 0 0 1 0 3 1 0 0 4 0 2 +32 1 0 0 650p, No N, no H2O 1 4 0 0 1 0 4 1 0 0 4 0 2 + +*CULTIVARS + at C CR INGENO CNAME + 1 MZ 990002 TEST + +*FIELDS + at L ID_FIELD WSTA.... FLSA FLOB FLDT FLDD FLDS FLST SLTX SLDP ID_SOIL FLNAME + 1 GENERIC GENERIC1 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 1980-2009 + 2 GENERIC GENERIC2 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 2010-2039 + 3 GENERIC GENERIC3 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 2040-2069 + 4 GENERIC GENERIC4 -99 -99 -99 -99 -99 -99 -99 -99 XY01234567 Weather 2070-2099 + at L ...........XCRD ...........YCRD .....ELEV .............AREA .SLEN .FLWR .SLAS FLHST FHDUR + 1 -99 -99 -99 -99 -99 -99 -99 -99 -99 + 2 -99 -99 -99 -99 -99 -99 -99 -99 -99 + 3 -99 -99 -99 -99 -99 -99 -99 -99 -99 + 4 -99 -99 -99 -99 -99 -99 -99 -99 -99 + +*SOIL ANALYSIS + at A SADAT SMHB SMPX SMKE SANAME + 1 00100 -99 -99 -99 TEST + at A SABL SADM SAOC SANI SAPHW SAPHB SAPX SAKE SASC + 1 15 -99 -99 -99 -99 -99 -99 -99 -99 + +*INITIAL CONDITIONS + at C PCR ICDAT ICRT ICND ICRN ICRE ICWD ICRES ICREN ICREP ICRIP ICRID ICNAME + 1 MZ 00100 -99 -99 1 1 -99 1000 1 0 100 10 1000kg Residue + at C ICBL SH2O SNH4 SNO3 + 1 5 .198 .1 .7 + 1 15 .198 .1 .7 + 1 25 .198 .1 .7 + 1 34 .226 .1 .7 + 1 43 .226 .1 .7 + 1 53 .25 .1 .7 + 1 64 .25 .1 .7 + 1 102 .200 .1 .7 + 1 145 .291 .1 .7 + 1 175 .272 .1 .7 + 1 203 .263 .1 .7 + +*PLANTING DETAILS + at P PDATE EDATE PPOP PPOE PLME PLDS PLRS PLRD PLDP PLWT PAGE PENV PLPH SPRL PLNAME + 1 00120 -99 6.5 -99 S R 91 -99 5 -99 -99 -99 -99 -99 Apr 30 Rainfed + +*IRRIGATION AND WATER MANAGEMENT + at I EFIR IDEP ITHR IEPT IOFF IAME IAMT IRNAME + 1 1.00 30 50 100 GS000 IR001 10 -99 + at I IDATE IROP IRVAL + 1 00165 IR001 79.0 + +*FERTILIZERS (INORGANIC) + at F FDATE FMCD FACD FDEP FAMN FAMP FAMK FAMC FAMO FOCD FERNAME + 1 1 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 1 40 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 1 80 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 2 1 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 2 40 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 3 1 FE001 AP002 15 50 -99 -99 -99 -99 -99 TEST + 4 1 FE001 AP002 15 0 -99 -99 -99 -99 -99 TEST + +*RESIDUES AND ORGANIC FERTILIZER + at R RDATE RCOD RAMT RESN RESP RESK RINP RDEP RMET RENAME + 1 00001 RE001 1000 1 0 0 100 10 AP003 1000 kg residue + +*CHEMICAL APPLICATIONS + at C CDATE CHCOD CHAMT CHME CHDEP CHT..CHNAME + 1 00126 CH009 100 AP002 10 -99 TEST + +*TILLAGE AND ROTATIONS + at T TDATE TIMPL TDEP TNAME + 1 00126 TI007 20 TEST + +*ENVIRONMENT MODIFICATIONS + at E ODATE EDAY ERAD EMAX EMIN ERAIN ECO2 EDEW EWIND ENVNAME + 1 00001 A 0 A 0 A 0 A 0 A 0.0 R 350 A 0 A 0 350 ppm + 2 00001 A 0 A 0 A 0 A 0 A 0.0 R 450 A 0 A 0 450 ppm + 3 00001 A 0 A 0 A 0 A 0 A 0.0 R 550 A 0 A 0 550 ppm + 4 00001 A 0 A 0 A 0 A 0 A 0.0 R 650 A 0 A 0 650 ppm + +*HARVEST DETAILS + at H HDATE HSTG HCOM HSIZE HPC HBPC HNAME + 1 00270 GS000 -99 -99 -99 -99 Maize + +*SIMULATION CONTROLS + at N GENERAL NYERS NREPS START SDATE RSEED SNAME.................... SMODEL + 1 GE 30 1 S 00001 2150 Rainfed MZCER + at N OPTIONS WATER NITRO SYMBI PHOSP POTAS DISES CHEM TILL CO2 + 1 OP Y Y Y N N N N N R + at N METHODS WTHER INCON LIGHT EVAPO INFIL PHOTO HYDRO NSWIT MESOM MESEV MESOL + 1 ME M M E F S L R 1 G S 2 + at N MANAGEMENT PLANT IRRIG FERTI RESID HARVS + 1 MA A A D A A + at N OUTPUTS FNAME OVVEW SUMRY FROPT GROUT CAOUT WAOUT NIOUT MIOUT DIOUT VBOSE CHOUT OPOUT + 1 OU N Y Y 14 N Y Y Y N N Y N Y + +@ AUTOMATIC MANAGEMENT + at N PLANTING PFRST PLAST PH2OL PH2OU PH2OD PSTMX PSTMN + 1 PL 00050 00200 40 100 30 40 10 + at N IRRIGATION IMDEP ITHRL ITHRU IROFF IMETH IRAMT IREFF + 1 IR 40 80 100 GS000 IR001 10 .75 + at N NITROGEN NMDEP NMTHR NAMNT NCODE NAOFF + 1 NI 30 10 50 FE001 GS000 + at N RESIDUES RIPCN RTIME RIDEP + 1 RE 100 1 20 + at N HARVEST HFRST HLAST HPCNP HPCNR + 1 HA 0 01125 100 0 + + at N GENERAL NYERS NREPS START SDATE RSEED SNAME.................... SMODEL + 2 GE 30 1 S 00001 2150 Rainfed MZCER + at N OPTIONS WATER NITRO SYMBI PHOSP POTAS DISES CHEM TILL CO2 + 2 OP Y Y Y N N N N N R + at N METHODS WTHER INCON LIGHT EVAPO INFIL PHOTO HYDRO NSWIT MESOM MESEV MESOL + 2 ME M M E F S L R 1 G S 2 + at N MANAGEMENT PLANT IRRIG FERTI RESID HARVS + 2 MA A N D A A + at N OUTPUTS FNAME OVVEW SUMRY FROPT GROUT CAOUT WAOUT NIOUT MIOUT DIOUT VBOSE CHOUT OPOUT + 2 OU N Y Y 14 N Y Y Y N N Y N Y + +@ AUTOMATIC MANAGEMENT + at N PLANTING PFRST PLAST PH2OL PH2OU PH2OD PSTMX PSTMN + 2 PL 00050 00200 40 100 30 40 10 + at N IRRIGATION IMDEP ITHRL ITHRU IROFF IMETH IRAMT IREFF + 2 IR 40 70 90 GS000 IR001 10 .75 + at N NITROGEN NMDEP NMTHR NAMNT NCODE NAOFF + 2 NI 30 20 100 FE001 GS000 + at N RESIDUES RIPCN RTIME RIDEP + 2 RE 100 1 20 + at N HARVEST HFRST HLAST HPCNP HPCNR + 2 HA 0 01125 100 0 Property changes on: SwiftApps/DSSAT/beagle/bin/run/data/X1234567.MZX ___________________________________________________________________ Added: svn:executable + * Added: SwiftApps/DSSAT/beagle/bin/run/output/RESULT.OUT =================================================================== Added: SwiftApps/DSSAT/beagle/sites.beagle.xml =================================================================== --- SwiftApps/DSSAT/beagle/sites.beagle.xml (rev 0) +++ SwiftApps/DSSAT/beagle/sites.beagle.xml 2011-09-14 16:25:03 UTC (rev 5109) @@ -0,0 +1,21 @@ + + + + CI-CCR000013 + + + KEEP + + 24 + pbs.aprun;pbs.mpp;depth=24 + 1300 + 00:20:00 + 1 + 1 + 1 + 10.00 + 10000 + + /lustre/beagle/ketan/labs/swift.workdir + + From davidk at ci.uchicago.edu Wed Sep 7 11:32:34 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 07 Sep 2011 16:32:34 -0000 Subject: [Swift-commit] r5079 - in trunk/docs: . cookbook documentation quickstart siteguide stylesheets tutorial tutorial/images tutorial/images/icons userguide utils Message-ID: <20110907163224.2C0949CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-07 11:32:23 -0500 (Wed, 07 Sep 2011) New Revision: 5079 Added: trunk/docs/README trunk/docs/cookbook/cookbook.txt trunk/docs/documentation/ trunk/docs/documentation/automation trunk/docs/documentation/building trunk/docs/documentation/building.html trunk/docs/documentation/documentation.txt trunk/docs/documentation/overview trunk/docs/documentation/structure trunk/docs/print_link.sh trunk/docs/quickstart/ trunk/docs/quickstart/quickstart.txt trunk/docs/siteguide/ trunk/docs/siteguide/beagle trunk/docs/siteguide/futuregrid trunk/docs/siteguide/images trunk/docs/siteguide/intrepid trunk/docs/siteguide/pads trunk/docs/siteguide/prereqs trunk/docs/siteguide/siteguide.txt trunk/docs/stylesheets/ trunk/docs/stylesheets/asciidoc.css trunk/docs/tutorial/abstract trunk/docs/tutorial/bits trunk/docs/tutorial/hello_world trunk/docs/tutorial/images/ trunk/docs/tutorial/images/icons/ trunk/docs/tutorial/images/icons/caution.png trunk/docs/tutorial/images/icons/example.png trunk/docs/tutorial/images/icons/home.png trunk/docs/tutorial/images/icons/important.png trunk/docs/tutorial/images/icons/next.png trunk/docs/tutorial/images/icons/note.png trunk/docs/tutorial/images/icons/prev.png trunk/docs/tutorial/images/icons/tip.png trunk/docs/tutorial/images/icons/up.png trunk/docs/tutorial/images/icons/warning.png trunk/docs/tutorial/introduction trunk/docs/tutorial/language_features trunk/docs/tutorial/runtime_features trunk/docs/tutorial/tutorial.txt trunk/docs/userguide/log-processing trunk/docs/utils/ trunk/docs/utils/gensites.txt Removed: trunk/docs/README trunk/docs/cookbook/cookbook-asciidoc.txt trunk/docs/documentation/automation trunk/docs/documentation/building trunk/docs/documentation/building.html trunk/docs/documentation/documentation.txt trunk/docs/documentation/overview trunk/docs/documentation/structure trunk/docs/print_link.sh trunk/docs/quickstart/quickstart.txt trunk/docs/siteguide/ trunk/docs/siteguide/beagle trunk/docs/siteguide/futuregrid trunk/docs/siteguide/images trunk/docs/siteguide/intrepid trunk/docs/siteguide/pads trunk/docs/siteguide/prereqs trunk/docs/siteguide/siteguide.txt trunk/docs/stylesheets/ trunk/docs/stylesheets/asciidoc.css trunk/docs/tutorial/abstract trunk/docs/tutorial/bits trunk/docs/tutorial/hello_world trunk/docs/tutorial/images/ trunk/docs/tutorial/images/icons/ trunk/docs/tutorial/images/icons/caution.png trunk/docs/tutorial/images/icons/example.png trunk/docs/tutorial/images/icons/home.png trunk/docs/tutorial/images/icons/important.png trunk/docs/tutorial/images/icons/next.png trunk/docs/tutorial/images/icons/note.png trunk/docs/tutorial/images/icons/prev.png trunk/docs/tutorial/images/icons/tip.png trunk/docs/tutorial/images/icons/up.png trunk/docs/tutorial/images/icons/warning.png trunk/docs/tutorial/introduction trunk/docs/tutorial/language_features trunk/docs/tutorial/runtime_features trunk/docs/tutorial/tutorial.txt trunk/docs/utils/ trunk/docs/utils/gensites.txt Modified: trunk/docs/ trunk/docs/cookbook/ trunk/docs/tutorial/ trunk/docs/userguide/cdm trunk/docs/userguide/coasters trunk/docs/userguide/userguide.txt Log: Merge 0.93 docs with trunk Property changes on: trunk/docs ___________________________________________________________________ Added: svn:mergeinfo + /branches/release-0.93/docs:4761-5078 Deleted: trunk/docs/README =================================================================== --- trunk/docs/README 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/README 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,11 +0,0 @@ -Prerequisites to building documentation: - -* asciidoc and a2x (http://www.methods.co.nz/asciidoc) -* dblatex (http://dblatex.sourceforge.net) -* source-highlight (http://www.gnu.org/software/src-highlite) - -For CI users, compiled versions of these packages can be found in ~davidk. - -To build, run: - -build_docs.sh Copied: trunk/docs/README (from rev 5078, branches/release-0.93/docs/README) =================================================================== --- trunk/docs/README (rev 0) +++ trunk/docs/README 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,11 @@ +Prerequisites to building documentation: + +* asciidoc and a2x (http://www.methods.co.nz/asciidoc) +* dblatex (http://dblatex.sourceforge.net) +* source-highlight (http://www.gnu.org/software/src-highlite) + +For CI users, compiled versions of these packages can be found in ~davidk. + +To build, run: + +build_docs.sh Property changes on: trunk/docs/cookbook ___________________________________________________________________ Deleted: svn:ignore - cookbook-asciidoc.html cookbook-asciidoc.pdf Deleted: trunk/docs/cookbook/cookbook-asciidoc.txt =================================================================== --- trunk/docs/cookbook/cookbook-asciidoc.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/cookbook/cookbook-asciidoc.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,20 +0,0 @@ -// To compile use: asciidoc -a toc -n cookbook-asciidoc.txt - -:numbered: - -Swift Cookbook -============== -Swift team -v0.92, March 2011 - -include::overview[] - -include::swift_basics[] - -include::coasters[] - -include::diverse_infrastructures[] - -include::debugging_swift[] - -include::log_processing[] Copied: trunk/docs/cookbook/cookbook.txt (from rev 5078, branches/release-0.93/docs/cookbook/cookbook.txt) =================================================================== --- trunk/docs/cookbook/cookbook.txt (rev 0) +++ trunk/docs/cookbook/cookbook.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,16 @@ +Swift Cookbook +============== +Swift team +v0.92, March 2011 + +include::overview[] + +include::swift_basics[] + +include::coasters[] + +include::diverse_infrastructures[] + +include::debugging_swift[] + +include::log_processing[] Deleted: trunk/docs/documentation/automation =================================================================== --- branches/release-0.93/docs/documentation/automation 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/documentation/automation 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,26 +0,0 @@ -Document Automation -------------------- -All .txt files in the docs directory get converted to HTML and PDF on a nightly -basis. These documents then get copied to the Swift web site. - -Cron Job -~~~~~~~~ -The job that processes these documents runs on Bridled at 7pm nightly. The script is -/home/davidk/docscripts/update_and_build.sh. The script calls svn update on several -different swift directories in ~davidk, and then builds the the documents. The -documents should be built for each Swift branch later than 0.93, including trunk. As -new versions of Swift are created, this script will need to be updated. - -Website -------- -Once the cron job runs, documents can be accessed at: - -\http://www.ci.uchicago.edu/swift/guides/release-/documentname/documentname.html -\http://www.ci.uchicago.edu/swift/guides/release-/documentname/documentname.pdf - -For example, assume that you create a document called docs/newdoc. You check this -guide into Swift 0.93. The AsciiDoc .txt file is called newdoc.txt. The URLs -that would be generated would be: - -\http://www.ci.uchicago.edu/swift/guides/release-0.93/newdoc/newdoc.html -\http://www.ci.uchicago.edu/swift/guides/release-0.93/newdoc/newdoc.pdf Copied: trunk/docs/documentation/automation (from rev 5078, branches/release-0.93/docs/documentation/automation) =================================================================== --- trunk/docs/documentation/automation (rev 0) +++ trunk/docs/documentation/automation 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,26 @@ +Document Automation +------------------- +All .txt files in the docs directory get converted to HTML and PDF on a nightly +basis. These documents then get copied to the Swift web site. + +Cron Job +~~~~~~~~ +The job that processes these documents runs on Bridled at 7pm nightly. The script is +/home/davidk/docscripts/update_and_build.sh. The script calls svn update on several +different swift directories in ~davidk, and then builds the the documents. The +documents should be built for each Swift branch later than 0.93, including trunk. As +new versions of Swift are created, this script will need to be updated. + +Website +------- +Once the cron job runs, documents can be accessed at: + +\http://www.ci.uchicago.edu/swift/guides/release-/documentname/documentname.html +\http://www.ci.uchicago.edu/swift/guides/release-/documentname/documentname.pdf + +For example, assume that you create a document called docs/newdoc. You check this +guide into Swift 0.93. The AsciiDoc .txt file is called newdoc.txt. The URLs +that would be generated would be: + +\http://www.ci.uchicago.edu/swift/guides/release-0.93/newdoc/newdoc.html +\http://www.ci.uchicago.edu/swift/guides/release-0.93/newdoc/newdoc.pdf Deleted: trunk/docs/documentation/building =================================================================== --- branches/release-0.93/docs/documentation/building 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/documentation/building 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,26 +0,0 @@ -Building Documentation Manually -------------------------------- -Before committing anything to SVN, it is a good idea manually -build the documentation for testing purposes. - -Prerequisites -~~~~~~~~~~~~~ -There are several prerequisites for building documentation: - -* asciidoc and a2x (http://www.methods.co.nz/asciidoc) -* dblatex (http://dblatex.sourceforge.net) -* source-highlight (http://www.gnu.org/software/src-highlite) - -For CI users, compiled versions of these packages can be found in ~davidk. - -build_docs.sh -~~~~~~~~~~~~~ - -The script to build the documentation is docs/build_docs.sh. This script -will convert the documents into HTML and PDF, and then copy the -files to a given output directory. - -.Usage ------ -./build_docs.sh /path/to/copy/output ------ Copied: trunk/docs/documentation/building (from rev 5078, branches/release-0.93/docs/documentation/building) =================================================================== --- trunk/docs/documentation/building (rev 0) +++ trunk/docs/documentation/building 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,26 @@ +Building Documentation Manually +------------------------------- +Before committing anything to SVN, it is a good idea manually +build the documentation for testing purposes. + +Prerequisites +~~~~~~~~~~~~~ +There are several prerequisites for building documentation: + +* asciidoc and a2x (http://www.methods.co.nz/asciidoc) +* dblatex (http://dblatex.sourceforge.net) +* source-highlight (http://www.gnu.org/software/src-highlite) + +For CI users, compiled versions of these packages can be found in ~davidk. + +build_docs.sh +~~~~~~~~~~~~~ + +The script to build the documentation is docs/build_docs.sh. This script +will convert the documents into HTML and PDF, and then copy the +files to a given output directory. + +.Usage +----- +./build_docs.sh /path/to/copy/output +----- Deleted: trunk/docs/documentation/building.html =================================================================== --- branches/release-0.93/docs/documentation/building.html 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/documentation/building.html 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,576 +0,0 @@ - - - - - - - - - - - -
-
-

Prerequisites

-
-

There are several prerequisites for building documentation:

-
-

For CI users, compiled versions of these packages can be found in ~davidk.

-
-

Build Docs Script

-

Before committing any changes to documentation, it is a good idea manually -build the documentation. The script to build the documentation is -docs/build_docs.sh.

-

This script will convert the documents into HTML and PDF, and then copy the -files to a given output directory.

-
-
-
-
-

- - - Copied: trunk/docs/documentation/building.html (from rev 5078, branches/release-0.93/docs/documentation/building.html) =================================================================== --- trunk/docs/documentation/building.html (rev 0) +++ trunk/docs/documentation/building.html 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,576 @@ + + + + + + + + + + + +
+
+

Prerequisites

+
+

There are several prerequisites for building documentation:

+
+

For CI users, compiled versions of these packages can be found in ~davidk.

+
+

Build Docs Script

+

Before committing any changes to documentation, it is a good idea manually +build the documentation. The script to build the documentation is +docs/build_docs.sh.

+

This script will convert the documents into HTML and PDF, and then copy the +files to a given output directory.

+
+
+
+
+

+ + + Deleted: trunk/docs/documentation/documentation.txt =================================================================== --- branches/release-0.93/docs/documentation/documentation.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/documentation/documentation.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,11 +0,0 @@ -Swift Document Generation -========================= - -include::overview[] - -include::structure[] - -include::building[] - -include::automation[] - Copied: trunk/docs/documentation/documentation.txt (from rev 5078, branches/release-0.93/docs/documentation/documentation.txt) =================================================================== --- trunk/docs/documentation/documentation.txt (rev 0) +++ trunk/docs/documentation/documentation.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,11 @@ +Swift Document Generation +========================= + +include::overview[] + +include::structure[] + +include::building[] + +include::automation[] + Deleted: trunk/docs/documentation/overview =================================================================== --- branches/release-0.93/docs/documentation/overview 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/documentation/overview 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,5 +0,0 @@ -Overview --------- -This guide provides a brief overview of how Swift Document Generation works. It -should explain the structure of a docs directory, how to manually build documentation, -and explain how document automation works. Copied: trunk/docs/documentation/overview (from rev 5078, branches/release-0.93/docs/documentation/overview) =================================================================== --- trunk/docs/documentation/overview (rev 0) +++ trunk/docs/documentation/overview 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,5 @@ +Overview +-------- +This guide provides a brief overview of how Swift Document Generation works. It +should explain the structure of a docs directory, how to manually build documentation, +and explain how document automation works. Deleted: trunk/docs/documentation/structure =================================================================== --- branches/release-0.93/docs/documentation/structure 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/documentation/structure 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,60 +0,0 @@ -Structure ---------- -A specific file and directory structure is required for each document in order to ease the -process of automation, conversion, and copying. - -Directories -~~~~~~~~~~~ -Each subdirectory within docs/ should correspond to the name of the document. -This name will also later be used in the URL used to point to the -document. - -.Example Directory Names ------ -docs/userguide -docs/tutorial ------ - -AsciiDoc File -~~~~~~~~~~~~~ -Every document directory should contain one file with a .txt -extension. This .txt file is the AsciiDoc document that later gets converted -to various formats. - -.Example AsciiDoc Documents ------ -docs/userguide/userguide.txt -docs/tutorial/tutorial.txt ------ - -Chapters -~~~~~~~~ -Each document directory should contain individual chapters -that make up the document. These chapters should not have any -file extensions. - -.Example Chapters ------ -docs/userguide/overview -docs/userguide/language -docs/userguide/mappers -docs/userguide/commands ------ - -Including Chapters in a Document -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The .txt file should then include the individual chapters -with the AsciiDoc include command. - -.userguide.txt ------ -\include::overview[] - -\include::language[] - -\include::mappers[] - -\include::commands[] ------ - -WARNING: Be sure to include spaces between includes. Putting them together with no spaces can cause formatting/compilation errors. Copied: trunk/docs/documentation/structure (from rev 5078, branches/release-0.93/docs/documentation/structure) =================================================================== --- trunk/docs/documentation/structure (rev 0) +++ trunk/docs/documentation/structure 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,60 @@ +Structure +--------- +A specific file and directory structure is required for each document in order to ease the +process of automation, conversion, and copying. + +Directories +~~~~~~~~~~~ +Each subdirectory within docs/ should correspond to the name of the document. +This name will also later be used in the URL used to point to the +document. + +.Example Directory Names +----- +docs/userguide +docs/tutorial +----- + +AsciiDoc File +~~~~~~~~~~~~~ +Every document directory should contain one file with a .txt +extension. This .txt file is the AsciiDoc document that later gets converted +to various formats. + +.Example AsciiDoc Documents +----- +docs/userguide/userguide.txt +docs/tutorial/tutorial.txt +----- + +Chapters +~~~~~~~~ +Each document directory should contain individual chapters +that make up the document. These chapters should not have any +file extensions. + +.Example Chapters +----- +docs/userguide/overview +docs/userguide/language +docs/userguide/mappers +docs/userguide/commands +----- + +Including Chapters in a Document +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The .txt file should then include the individual chapters +with the AsciiDoc include command. + +.userguide.txt +----- +\include::overview[] + +\include::language[] + +\include::mappers[] + +\include::commands[] +----- + +WARNING: Be sure to include spaces between includes. Putting them together with no spaces can cause formatting/compilation errors. Deleted: trunk/docs/print_link.sh =================================================================== --- trunk/docs/print_link.sh 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/print_link.sh 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,21 +0,0 @@ -#!/bin/bash - -# This script is referenced by asciidoc to point to the correct versions of documentation based on version information -# print_info.sh -# This will print the correct URL based on SVN version info - -pushd ../.. > /dev/null 2>&1 -VERSION=`svn info |grep URL|awk -F / '{print $NF}'` -popd > /dev/null 2>&1 - -# Parse command line arguments -case "$1" in - userguide) - echo http://www.ci.uchicago.edu/swift/guides/$VERSION/userguide/userguide.html[Swift User Guide] - ;; - tutorial) - echo http://www.ci.uchicago.edu/swift/guides/$VERSION/tutorial/tutorial.html[Swift Tutorial] - ;; - *) echo http://www.ci.uchicago.edu/swift/docs/index.php[Swift Documentation] - ;; -esac Copied: trunk/docs/print_link.sh (from rev 5078, branches/release-0.93/docs/print_link.sh) =================================================================== --- trunk/docs/print_link.sh (rev 0) +++ trunk/docs/print_link.sh 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,21 @@ +#!/bin/bash + +# This script is referenced by asciidoc to point to the correct versions of documentation based on version information +# print_info.sh +# This will print the correct URL based on SVN version info + +pushd ../.. > /dev/null 2>&1 +VERSION=`svn info |grep URL|awk -F / '{print $NF}'` +popd > /dev/null 2>&1 + +# Parse command line arguments +case "$1" in + userguide) + echo http://www.ci.uchicago.edu/swift/guides/$VERSION/userguide/userguide.html[Swift User Guide] + ;; + tutorial) + echo http://www.ci.uchicago.edu/swift/guides/$VERSION/tutorial/tutorial.html[Swift Tutorial] + ;; + *) echo http://www.ci.uchicago.edu/swift/docs/index.php[Swift Documentation] + ;; +esac Deleted: trunk/docs/quickstart/quickstart.txt =================================================================== --- branches/release-0.93/docs/quickstart/quickstart.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/quickstart/quickstart.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,101 +0,0 @@ -Swift Quickstart -================ - -[abstract] -Abstract --------- -This guide describes the steps needed to download, install, configure, -and run the basic examples for Swift. If you are using a pre-installed -version of Swift, you can skip directly to the configuration section. - -Stable Releases vs. Development Releases ----------------------------------------- -Stable releases of Swift have undergone more extensive testing than development releases. -In general, they are more stable, have fewer bugs, and have been tested on a variety of -systems. - -The development version of Swift is aimed at developers and testers. The development -code has the highest chance of containing buggy and untested code. If you need stability -please use the latest stable release. - -Downloading a Swift Distribution --------------------------------- -There are two main ways of getting the Swift implementation: binary -releases and the source repository. - -Binary Releases -~~~~~~~~~~~~~~~ -For the majority of users, downloading and installing binary releases is recommended. -Since Swift is written in Java, the binary packages will run on all supported platforms with -Java Runtime Environment 1.5 or greater. Binary releases can be obtained from the -http://www.ci.uchicago.edu/swift/downloads/index.php[Swift downloads page]. - -Once downloaded, simply unpack the downloaded package (swift-.tar.gz) into a -directory of your choice: - ------ -tar -xzvf swift-.tar.gz ------ - -This will create a swift- directory containing the build. - -Source Repository -~~~~~~~~~~~~~~~~~ -The source code for Swift is available to developers who have an interest in contributing -new features. To build Swift from source code, you will need http://ant.apache.org/[Apache Ant] -and http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java JDK]. Once -built, the dist/swift-svn directory will contain your build. - -To download and build Swift 0.93, follow these instructions: ------ -$ mkdir swift-0.93 -$ cd swift-0.93 -$ svn co https://cogkit.svn.sourceforge.net/svnroot/cogkit/branches/4.1.9/src/cog -$ cd cog/modules -$ svn co https://svn.ci.uchicago.edu/svn/vdl2/branches/release-0.93 swift -$ cd swift -$ ant redist ------ - -Setting your PATH ------------------ -Once Swift is installed, it is useful to add the swift binary to your PATH -environment variable. To do this, first determine where the Swift bin -directory is located. If you installed Swift from a binary release, it will -be in the swift-0.93/bin directory where you installed it. If you followed -the instructions above for installing Swift from a source repository, it -will be located in swift-0.93/cog/modules/swift/dist/swift-svn/bin. - -Add the following line to the bottom of ~/.bashrc: - ------ -export PATH=$PATH:/full/path/to/swift ------ - -When you login, test this out by typing the command ------ -$ which swift ------ - -This should point you to the path of the Swift binary. - -Running Swift Examples ----------------------- -The Swift examples can be found in the examples directory in the Swift -distribution. The examples are written in the SwiftScript language, and -have .swift as a file extension. - -Execution of a Swift workflow is done using the swift command, which -takes the Swift workflow file name as an argument: - ------ -cd examples/tutorial -swift hello.swift ------ - -When you run this application, it should create a file called hello.txt. -If this file gets created, you have successfully ran your first -Swift script! - -More documentation on how to run Swift can be found at -http://www.ci.uchicago.edu/swift/docs/index.php, Copied: trunk/docs/quickstart/quickstart.txt (from rev 5078, branches/release-0.93/docs/quickstart/quickstart.txt) =================================================================== --- trunk/docs/quickstart/quickstart.txt (rev 0) +++ trunk/docs/quickstart/quickstart.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,101 @@ +Swift Quickstart +================ + +[abstract] +Abstract +-------- +This guide describes the steps needed to download, install, configure, +and run the basic examples for Swift. If you are using a pre-installed +version of Swift, you can skip directly to the configuration section. + +Stable Releases vs. Development Releases +---------------------------------------- +Stable releases of Swift have undergone more extensive testing than development releases. +In general, they are more stable, have fewer bugs, and have been tested on a variety of +systems. + +The development version of Swift is aimed at developers and testers. The development +code has the highest chance of containing buggy and untested code. If you need stability +please use the latest stable release. + +Downloading a Swift Distribution +-------------------------------- +There are two main ways of getting the Swift implementation: binary +releases and the source repository. + +Binary Releases +~~~~~~~~~~~~~~~ +For the majority of users, downloading and installing binary releases is recommended. +Since Swift is written in Java, the binary packages will run on all supported platforms with +Java Runtime Environment 1.5 or greater. Binary releases can be obtained from the +http://www.ci.uchicago.edu/swift/downloads/index.php[Swift downloads page]. + +Once downloaded, simply unpack the downloaded package (swift-.tar.gz) into a +directory of your choice: + +----- +tar -xzvf swift-.tar.gz +----- + +This will create a swift- directory containing the build. + +Source Repository +~~~~~~~~~~~~~~~~~ +The source code for Swift is available to developers who have an interest in contributing +new features. To build Swift from source code, you will need http://ant.apache.org/[Apache Ant] +and http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java JDK]. Once +built, the dist/swift-svn directory will contain your build. + +To download and build Swift 0.93, follow these instructions: +----- +$ mkdir swift-0.93 +$ cd swift-0.93 +$ svn co https://cogkit.svn.sourceforge.net/svnroot/cogkit/branches/4.1.9/src/cog +$ cd cog/modules +$ svn co https://svn.ci.uchicago.edu/svn/vdl2/branches/release-0.93 swift +$ cd swift +$ ant redist +----- + +Setting your PATH +----------------- +Once Swift is installed, it is useful to add the swift binary to your PATH +environment variable. To do this, first determine where the Swift bin +directory is located. If you installed Swift from a binary release, it will +be in the swift-0.93/bin directory where you installed it. If you followed +the instructions above for installing Swift from a source repository, it +will be located in swift-0.93/cog/modules/swift/dist/swift-svn/bin. + +Add the following line to the bottom of ~/.bashrc: + +----- +export PATH=$PATH:/full/path/to/swift +----- + +When you login, test this out by typing the command +----- +$ which swift +----- + +This should point you to the path of the Swift binary. + +Running Swift Examples +---------------------- +The Swift examples can be found in the examples directory in the Swift +distribution. The examples are written in the SwiftScript language, and +have .swift as a file extension. + +Execution of a Swift workflow is done using the swift command, which +takes the Swift workflow file name as an argument: + +----- +cd examples/tutorial +swift hello.swift +----- + +When you run this application, it should create a file called hello.txt. +If this file gets created, you have successfully ran your first +Swift script! + +More documentation on how to run Swift can be found at +http://www.ci.uchicago.edu/swift/docs/index.php, Deleted: trunk/docs/siteguide/beagle =================================================================== --- branches/release-0.93/docs/siteguide/beagle 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/beagle 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,49 +0,0 @@ -Beagle ------- - -Requesting Access -~~~~~~~~~~~~~~~~~ -If you do not already have a Computation Institute account, you can request -one at https://www.ci.uchicago.edu/accounts/. This page will give you a list -of resources you can request access to. -You already have an existing CI account, but do not have access to Beagle, -send an email to support at ci.uchicago.edu to request access. - -Connecting to a login node -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have account, you should be able to access a Beagle login -node with the following command: - ------ -ssh yourusername at login.beagle.ci.uchicago.edu ------ - -Follow the steps outlined below to get started with Swift on Beagle: - -*step 1.* Load the Swift module on Beagle as follows: +module load swift+ - -*step 2.* Create and change to a directory where your Swift related work will -stay. (say, +mkdir swift-lab+, followed by, +cd swift-lab+) - -*step 3.* To get started with a simple example running +/bin/cat+ to read an -input file +data.txt+ and write to an output file +f.nnn.out+, copy the folder -at +/home/ketan/catsn+ to the above directory. (+cp -r /home/ketan/catsn -.+ followed by +cd catsn+). - -*step 4.* In the sites file: +beagle-coaster.xml+, make the following two -changes: *1)* change the path of +workdirectory+ to your preferred location -(say to +/lustre/beagle/$USER/swift-lab/swift.workdir+) and *2)* Change the -project name to your project (+CI-CCR000013+) . The workdirectory will contain -execution data related to each run, e.g. wrapper scripts, system information, -inputs and outputs. - -*step 5.* Run the example using following commandline (also found in run.sh): -+swift -config cf -tc.file tc -sites.file beagle-coaster.xml catsn.swift -n=1+ -. You can further change the value of +-n+ to any arbitrary number to run that -many number of concurrent +cat+ - -*step 6.* Check the output in the generated +outdir+ directory (+ls outdir+) - -Note: Running from sandbox node or requesting 1 hour walltime for upto 3 nodes -will get fast prioritized execution. Good for small tests. - Copied: trunk/docs/siteguide/beagle (from rev 5078, branches/release-0.93/docs/siteguide/beagle) =================================================================== --- trunk/docs/siteguide/beagle (rev 0) +++ trunk/docs/siteguide/beagle 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,49 @@ +Beagle +------ + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have a Computation Institute account, you can request +one at https://www.ci.uchicago.edu/accounts/. This page will give you a list +of resources you can request access to. +You already have an existing CI account, but do not have access to Beagle, +send an email to support at ci.uchicago.edu to request access. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have account, you should be able to access a Beagle login +node with the following command: + +----- +ssh yourusername at login.beagle.ci.uchicago.edu +----- + +Follow the steps outlined below to get started with Swift on Beagle: + +*step 1.* Load the Swift module on Beagle as follows: +module load swift+ + +*step 2.* Create and change to a directory where your Swift related work will +stay. (say, +mkdir swift-lab+, followed by, +cd swift-lab+) + +*step 3.* To get started with a simple example running +/bin/cat+ to read an +input file +data.txt+ and write to an output file +f.nnn.out+, copy the folder +at +/home/ketan/catsn+ to the above directory. (+cp -r /home/ketan/catsn +.+ followed by +cd catsn+). + +*step 4.* In the sites file: +beagle-coaster.xml+, make the following two +changes: *1)* change the path of +workdirectory+ to your preferred location +(say to +/lustre/beagle/$USER/swift-lab/swift.workdir+) and *2)* Change the +project name to your project (+CI-CCR000013+) . The workdirectory will contain +execution data related to each run, e.g. wrapper scripts, system information, +inputs and outputs. + +*step 5.* Run the example using following commandline (also found in run.sh): ++swift -config cf -tc.file tc -sites.file beagle-coaster.xml catsn.swift -n=1+ +. You can further change the value of +-n+ to any arbitrary number to run that +many number of concurrent +cat+ + +*step 6.* Check the output in the generated +outdir+ directory (+ls outdir+) + +Note: Running from sandbox node or requesting 1 hour walltime for upto 3 nodes +will get fast prioritized execution. Good for small tests. + Deleted: trunk/docs/siteguide/futuregrid =================================================================== --- branches/release-0.93/docs/siteguide/futuregrid 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/futuregrid 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,134 +0,0 @@ -Futuregrid Quickstart Guide ---------------------------- - -Downloading and Building Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The most recent versions of Swift can be found at -http://www.ci.uchicago.edu/swift/downloads/index.php. To run on futuregrid, -you will need to download the development/trunk version from SVN. - -Adding Swift to your PATH -~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have installed Swift, add the Swift binary to your PATH so you can -easily run it from any directory. - -In your home directory, edit the file ".bashrc". - -If you have installed Swift via a source repository, add the following line -at the bottom of .bashrc. - ------ -export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin ------ - -Requesting Futuregrid Access -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you do not already have a futuregrid account, you can follow the -instructions at https://portal.futuregrid.org/gettingstarted to get started. -This page provides information on how to create an account, how to join -a project, how to set up your SSH keys, and how to create a new project. - -Downloading Swift VM Tools -~~~~~~~~~~~~~~~~~~~~~~~~~~ -A set of scripts based around cloudinitd are used to easily start virtual -machines. To download, change to your home directory and run the -following command: - ------ -$ svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/swift-vm-boot ------ - -Download your Credentials -~~~~~~~~~~~~~~~~~~~~~~~~~ -Run the following commands to retrieve your credentials: ------ -$ scp yourusername at hotel.futuregrid.org:nimbus_creds.tar.gz . -$ tar xvfz nimbus_creds.tar.gz ------ -When you extract your credential file, look at the file called -hotel.conf. Near the bottom of this file will be two settings -called vws.repository.s3id and vws.repository.s3key. Copy these -values for the next step. - -Configuring Swift VM Tools -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Change directories into the swift-vm-boot directory. Edit the file -called env.sh. There are two settings here that you will need to -modify: FUTUREGRID_IAAS_ACCESS_KEY and FUTUREGRID_IAAS_SECRET_KEY. -Paste your access key (s3id) and secret key (s3key) here and save -the file. By default, env.sh requests 2 nodes on hotel and 2 nodes -on sierra. Change these values as needed. Run install.sh from the -swift-vm-boot directory to complete the installation of Swift VM -Tools. The Swift VM Tools may require a fairly recent version of -Python. If you run into problems while running the install.sh -script, please try a more recent version of Python and associated -libraries. - -Configuring coaster-service.conf -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Within your swift distribution's etc directory is a file called -coaster-service.conf. There are many options here you can modify -as needed, but these are the settings that will be required -to run on futuregrid: - ------ -export WORKER_WORK=/tmp -export WORKER_MODE=futuregrid -export SHARED_FILESYSTEM=no -export WORKER_USERNAME=root -export SSH_TUNNELING=yes -export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot -export WORK=/tmp ------ - -These is a brief description of these settings in the coaster-service.conf file. -Tunneling should be used when you are restricted by a firewall. If your local -machine has multiple network interfaces, you should also manually set the IP -address of your machine with export IPADDR=your.ip.address.here. - -Starting the Coaster Service Script -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now that everything is configured, change to a temporary directory -and run this command to start the coaster service: - ------ -$ start-coaster-service ------ - -This command will start the VMs, start the required processes on the worker nodes, -and generate Swift configuration files for you to use. The configuration files -will be generated in your current directory. These files are sites.xml, tc.data, -and cf. - -Running Swift -~~~~~~~~~~~~~ -Now that you have all of your configuration files generated, run the following command: - ------ -$ swift -sites.file sites.xml -tc.file tc.data -config cf ------ - -If you would like to create a custom tc file for repeated use, rename it to something other -than tc.data to prevent it from being overwritten. The sites.xml however will need to be -regenerated every time you start the coaster service. If you need to repeatedly modify some -sites.xml options, you may edit the template in Swift's etc/sites/persistent-coasters. You -may also create your own custom tc files with the hostname of persistent-coasters. More -information about this can be found in the Swift userguide at -http://www.ci.uchicago.edu/swift/guides/trunk/userguide/userguide.html. - -Stopping the Coaster Service Script -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To stop the coaster service, run the following command: ------ -$ stop-coaster-service ------ - -This will kill the coaster service, kill the worker scripts on remote systems and terminate -the virtual machines that were created during start-coaster-service. - -More Help -~~~~~~~~~ -The best place for additional help is the Swift user mailing list. You can subscribe to this list at -http://mail.ci.uchicago.edu/mailman/listinfo/swift-user. When submitting information, please send -your sites.xml file, your tc.data, and any error messages you run into. - Copied: trunk/docs/siteguide/futuregrid (from rev 5078, branches/release-0.93/docs/siteguide/futuregrid) =================================================================== --- trunk/docs/siteguide/futuregrid (rev 0) +++ trunk/docs/siteguide/futuregrid 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,134 @@ +Futuregrid Quickstart Guide +--------------------------- + +Downloading and Building Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The most recent versions of Swift can be found at +http://www.ci.uchicago.edu/swift/downloads/index.php. To run on futuregrid, +you will need to download the development/trunk version from SVN. + +Adding Swift to your PATH +~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have installed Swift, add the Swift binary to your PATH so you can +easily run it from any directory. + +In your home directory, edit the file ".bashrc". + +If you have installed Swift via a source repository, add the following line +at the bottom of .bashrc. + +----- +export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin +----- + +Requesting Futuregrid Access +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +If you do not already have a futuregrid account, you can follow the +instructions at https://portal.futuregrid.org/gettingstarted to get started. +This page provides information on how to create an account, how to join +a project, how to set up your SSH keys, and how to create a new project. + +Downloading Swift VM Tools +~~~~~~~~~~~~~~~~~~~~~~~~~~ +A set of scripts based around cloudinitd are used to easily start virtual +machines. To download, change to your home directory and run the +following command: + +----- +$ svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/swift-vm-boot +----- + +Download your Credentials +~~~~~~~~~~~~~~~~~~~~~~~~~ +Run the following commands to retrieve your credentials: +----- +$ scp yourusername at hotel.futuregrid.org:nimbus_creds.tar.gz . +$ tar xvfz nimbus_creds.tar.gz +----- +When you extract your credential file, look at the file called +hotel.conf. Near the bottom of this file will be two settings +called vws.repository.s3id and vws.repository.s3key. Copy these +values for the next step. + +Configuring Swift VM Tools +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Change directories into the swift-vm-boot directory. Edit the file +called env.sh. There are two settings here that you will need to +modify: FUTUREGRID_IAAS_ACCESS_KEY and FUTUREGRID_IAAS_SECRET_KEY. +Paste your access key (s3id) and secret key (s3key) here and save +the file. By default, env.sh requests 2 nodes on hotel and 2 nodes +on sierra. Change these values as needed. Run install.sh from the +swift-vm-boot directory to complete the installation of Swift VM +Tools. The Swift VM Tools may require a fairly recent version of +Python. If you run into problems while running the install.sh +script, please try a more recent version of Python and associated +libraries. + +Configuring coaster-service.conf +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Within your swift distribution's etc directory is a file called +coaster-service.conf. There are many options here you can modify +as needed, but these are the settings that will be required +to run on futuregrid: + +----- +export WORKER_WORK=/tmp +export WORKER_MODE=futuregrid +export SHARED_FILESYSTEM=no +export WORKER_USERNAME=root +export SSH_TUNNELING=yes +export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot +export WORK=/tmp +----- + +These is a brief description of these settings in the coaster-service.conf file. +Tunneling should be used when you are restricted by a firewall. If your local +machine has multiple network interfaces, you should also manually set the IP +address of your machine with export IPADDR=your.ip.address.here. + +Starting the Coaster Service Script +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now that everything is configured, change to a temporary directory +and run this command to start the coaster service: + +----- +$ start-coaster-service +----- + +This command will start the VMs, start the required processes on the worker nodes, +and generate Swift configuration files for you to use. The configuration files +will be generated in your current directory. These files are sites.xml, tc.data, +and cf. + +Running Swift +~~~~~~~~~~~~~ +Now that you have all of your configuration files generated, run the following command: + +----- +$ swift -sites.file sites.xml -tc.file tc.data -config cf +----- + +If you would like to create a custom tc file for repeated use, rename it to something other +than tc.data to prevent it from being overwritten. The sites.xml however will need to be +regenerated every time you start the coaster service. If you need to repeatedly modify some +sites.xml options, you may edit the template in Swift's etc/sites/persistent-coasters. You +may also create your own custom tc files with the hostname of persistent-coasters. More +information about this can be found in the Swift userguide at +http://www.ci.uchicago.edu/swift/guides/trunk/userguide/userguide.html. + +Stopping the Coaster Service Script +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To stop the coaster service, run the following command: +----- +$ stop-coaster-service +----- + +This will kill the coaster service, kill the worker scripts on remote systems and terminate +the virtual machines that were created during start-coaster-service. + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +http://mail.ci.uchicago.edu/mailman/listinfo/swift-user. When submitting information, please send +your sites.xml file, your tc.data, and any error messages you run into. + Deleted: trunk/docs/siteguide/images =================================================================== --- branches/release-0.93/docs/siteguide/images 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/images 2011-09-07 16:32:23 UTC (rev 5079) @@ -1 +0,0 @@ -link ../tutorial/images \ No newline at end of file Copied: trunk/docs/siteguide/images (from rev 5078, branches/release-0.93/docs/siteguide/images) =================================================================== --- trunk/docs/siteguide/images (rev 0) +++ trunk/docs/siteguide/images 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1 @@ +link ../tutorial/images \ No newline at end of file Deleted: trunk/docs/siteguide/intrepid =================================================================== --- branches/release-0.93/docs/siteguide/intrepid 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/intrepid 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,168 +0,0 @@ -Intrepid --------- - -Requesting Access -~~~~~~~~~~~~~~~~~ -If you do not already have an account on Intrepid, you can request -one at https://accounts.alcf.anl.gov/accounts/request.php. More information about -this process and requesting allocations for your project can be found at -http://www.alcf.anl.gov/support/gettingstarted/index.php. - -SSH Keys -~~~~~~~~ -Accessing the Intrepid via SSH can be done with any SSH software package. -Before logging in, you will need to generate an SSH public key and send it to -support at alcf.anl.gov for verification and installation. - -Cryptocard -~~~~~~~~~~ -This security token uses one-time passwords for controlled access to the BG/P login systems. - -Connecting to a login node -~~~~~~~~~~~~~~~~~~~~~~~~~~ -When you gain access to Intrepid, you should receive a cryptocard and a temporary PIN. -You must have a working cryptocard, know your PIN, and have your SSH key in place before -you may login. - -You can connect to Intrepid with the following command: - ------ -ssh yourusername at intrepid.alcf.anl.gov ------ - -You will be presented with a password prompt. The first part of your password is your PIN. Enter you PIN, -press the Cryptocard button, and then enter the password your crypocard generates. If this is the first -time you are logging in, you will be prompted to change your PIN. - -Downloading and building Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The most recent versions of Swift can be found at -http://www.ci.uchicago.edu/swift/downloads/index.php. Follow the instructions -provided on that site to download and build Swift. - -Adding Swift to your PATH -~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have installed Swift, add the Swift binary to your PATH so you can -easily run it from any directory. - -In your home directory, edit the file ".bashrc". - -If you have installed Swift via a source repository, add the following line -at the bottom of .bashrc. - ------ -export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin ------ - -If you have installed Swift via a binary package, add this line: - ------ -export PATH=$PATH:$HOME/swift-/bin ------ - -Replace with the actual name of the swift directory in the example above. - -What You Need To Know Before Running Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Before you can create a Swift configuration file, there are some things -you will need to know. - -Swift Work Directory -^^^^^^^^^^^^^^^^^^^^ -The Swift work directory is a directory which Swift uses for processing work. -This directory needs to be writable. Common options for this are: - ------ -/home/username/swiftwork -/home/username/work -/tmp ------ - -Which project(s) are you a member of? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Intrepid requires that you are a member of a project. You can determine this by -running the following command: - ------ -$ projects -HTCScienceApps ------ - -If you are not a member of a project, you must first request access -to a project. More information on this process can be found at -https://wiki.alcf.anl.gov/index.php/Discretionary_Allocations - -Determine your Queue -^^^^^^^^^^^^^^^^^^^^ - -Intrepid has several different queues you can submit jobs to depending on -the type of work you will be doing. The command "qstat -q" will print -the most up to date list of this information. - -.Intrepid Queues -[options="header"] -|========================================================= -|User Queue|Queue|Nodes|Time (hours)|User Maxrun|Project maxrun -|prod-devel|prod-devel|64-512|0-1|5|20 -|prod|prod-short|512-4096|0-6|5|20 -|prod|prod-long|512-4096|6-12|5|20 -|prod|prod-capability|4097-32768|0-12|2|20 -|prod|prod-24k|16385-24576|0-12|2|20 -|prod|prod-bigrun|32769-40960|0-12|2|20 -|prod|backfill|512-8192|0-6|5|10 -|============================================================ - -Generating Configuration Files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now that you know what queue to use, your project, and your work directory, it is time to -set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. -There are two methods you can use for creating this file. You can manually edit -the configuration file, or generate it with a utility called gensites. - -Manually Editing sites.xml -^^^^^^^^^^^^^^^^^^^^^^^^^^ -Below is the template that is used by Swift's test suite for running on Intrepid. -TODO: Update the rest below here - ------ -include::../../tests/providers/intrepid/sites.template.xml[] ------ - -The values to note here are the ones that are listed between underscores. In the example above, they are \_QUEUE_, and \_WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. - -Manually Editing tc.data -~~~~~~~~~~~~~~~~~~~~~~~~ -Below is the tc.data file used by Swift's test suite for running on PADS. - ------ -include::../../tests/providers/intrepid/tc.template.data[] ------- - -Copy these commands and save it as tc.data. - -Catsn.swift -~~~~~~~~~~~ -The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. - ------ -include::../../examples/misc/catsn.swift[] ------ - -Running Swift -~~~~~~~~~~~~~ -Now that everything is in place, run Swift with the following command: - ------ -swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 ------ - -You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these -files should contain the contents of what you placed into data.txt. If this happens, your job has run -successfully on PADS! - -More Help -~~~~~~~~~ -The best place for additional help is the Swift user mailing list. You can subscribe to this list at -https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. - - Copied: trunk/docs/siteguide/intrepid (from rev 5078, branches/release-0.93/docs/siteguide/intrepid) =================================================================== --- trunk/docs/siteguide/intrepid (rev 0) +++ trunk/docs/siteguide/intrepid 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,168 @@ +Intrepid +-------- + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have an account on Intrepid, you can request +one at https://accounts.alcf.anl.gov/accounts/request.php. More information about +this process and requesting allocations for your project can be found at +http://www.alcf.anl.gov/support/gettingstarted/index.php. + +SSH Keys +~~~~~~~~ +Accessing the Intrepid via SSH can be done with any SSH software package. +Before logging in, you will need to generate an SSH public key and send it to +support at alcf.anl.gov for verification and installation. + +Cryptocard +~~~~~~~~~~ +This security token uses one-time passwords for controlled access to the BG/P login systems. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +When you gain access to Intrepid, you should receive a cryptocard and a temporary PIN. +You must have a working cryptocard, know your PIN, and have your SSH key in place before +you may login. + +You can connect to Intrepid with the following command: + +----- +ssh yourusername at intrepid.alcf.anl.gov +----- + +You will be presented with a password prompt. The first part of your password is your PIN. Enter you PIN, +press the Cryptocard button, and then enter the password your crypocard generates. If this is the first +time you are logging in, you will be prompted to change your PIN. + +Downloading and building Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The most recent versions of Swift can be found at +http://www.ci.uchicago.edu/swift/downloads/index.php. Follow the instructions +provided on that site to download and build Swift. + +Adding Swift to your PATH +~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have installed Swift, add the Swift binary to your PATH so you can +easily run it from any directory. + +In your home directory, edit the file ".bashrc". + +If you have installed Swift via a source repository, add the following line +at the bottom of .bashrc. + +----- +export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin +----- + +If you have installed Swift via a binary package, add this line: + +----- +export PATH=$PATH:$HOME/swift-/bin +----- + +Replace with the actual name of the swift directory in the example above. + +What You Need To Know Before Running Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Before you can create a Swift configuration file, there are some things +you will need to know. + +Swift Work Directory +^^^^^^^^^^^^^^^^^^^^ +The Swift work directory is a directory which Swift uses for processing work. +This directory needs to be writable. Common options for this are: + +----- +/home/username/swiftwork +/home/username/work +/tmp +----- + +Which project(s) are you a member of? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Intrepid requires that you are a member of a project. You can determine this by +running the following command: + +----- +$ projects +HTCScienceApps +----- + +If you are not a member of a project, you must first request access +to a project. More information on this process can be found at +https://wiki.alcf.anl.gov/index.php/Discretionary_Allocations + +Determine your Queue +^^^^^^^^^^^^^^^^^^^^ + +Intrepid has several different queues you can submit jobs to depending on +the type of work you will be doing. The command "qstat -q" will print +the most up to date list of this information. + +.Intrepid Queues +[options="header"] +|========================================================= +|User Queue|Queue|Nodes|Time (hours)|User Maxrun|Project maxrun +|prod-devel|prod-devel|64-512|0-1|5|20 +|prod|prod-short|512-4096|0-6|5|20 +|prod|prod-long|512-4096|6-12|5|20 +|prod|prod-capability|4097-32768|0-12|2|20 +|prod|prod-24k|16385-24576|0-12|2|20 +|prod|prod-bigrun|32769-40960|0-12|2|20 +|prod|backfill|512-8192|0-6|5|10 +|============================================================ + +Generating Configuration Files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now that you know what queue to use, your project, and your work directory, it is time to +set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. +There are two methods you can use for creating this file. You can manually edit +the configuration file, or generate it with a utility called gensites. + +Manually Editing sites.xml +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Below is the template that is used by Swift's test suite for running on Intrepid. +TODO: Update the rest below here + +----- +include::../../tests/providers/intrepid/sites.template.xml[] +----- + +The values to note here are the ones that are listed between underscores. In the example above, they are \_QUEUE_, and \_WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. + +Manually Editing tc.data +~~~~~~~~~~~~~~~~~~~~~~~~ +Below is the tc.data file used by Swift's test suite for running on PADS. + +----- +include::../../tests/providers/intrepid/tc.template.data[] +------ + +Copy these commands and save it as tc.data. + +Catsn.swift +~~~~~~~~~~~ +The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. + +----- +include::../../examples/misc/catsn.swift[] +----- + +Running Swift +~~~~~~~~~~~~~ +Now that everything is in place, run Swift with the following command: + +----- +swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 +----- + +You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these +files should contain the contents of what you placed into data.txt. If this happens, your job has run +successfully on PADS! + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. + + Deleted: trunk/docs/siteguide/pads =================================================================== --- branches/release-0.93/docs/siteguide/pads 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/pads 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,246 +0,0 @@ -PADS ----- - -PADS Quickstart -~~~~~~~~~~~~~~~ -This section will walk you through running a simple Swift script -on PADS. It will explain how to setup software packages, how -to create the required Swift configuration files, and finally -how to run Swift. - -Adding Software Packages -^^^^^^^^^^^^^^^^^^^^^^^^ -In your home directory, edit a file called .soft and add these -lines (in this order): ------ -+java-sun -+maui -+torque - at default ------ - -Log out of PADS, and log back in for these changes to take effect. - -Creating sites.xml -^^^^^^^^^^^^^^^^^^ -Swift relies on various configuration files to determine how to -run. This section will provide a working configuration file which -you can copy and paste to get running quickly. The sites.xml file -tells Swift how to submit jobs, where working directories are -located, and various other configuration information. More -information on sites.xml can be found in the Swift User's Guide. - -The first step is to paste the text below into a file named sites.xml. - ------ -include::../../tests/providers/PADS/coasters/sites.template.xml[] ------ - -This file will require just a few customizations. First, create a -directory called swiftwork. Modify \_WORK_ in sites.xml -to point to this new directory. For example ------ -/home/myhome/swiftwork ------ - -Creating tc.data -^^^^^^^^^^^^^^^^ -The tc.data configuration file gives information about the applications -that will be called by Swift. More information about the format -of tc.data can be found in the Swift User's guide. - -Paste the following example into a file named tc.data - ------ -include::../../tests/providers/PADS/coasters/tc.template.data[] ------ - -Copy a Swift Script -^^^^^^^^^^^^^^^^^^^ - -Within the Swift directory is an examples directory which contains -several introductory Swift scripts. The example we will use in this -section is called catsn.swift. Copy this script to the same directory -that your sites.xml and tc.data files are located. - ------ -$ cp ~/swift-0.93/examples/misc/catsn.swift . -$ cp ~/swift-0.93/examples/misc/data.txt . ------ -TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. - -Run Swift -^^^^^^^^^ - -Finally, run the script ------ -$ swift -sites.file sites.xml -tc.file tc.data catsn.swift ------ - -You should see 10 new text files get created, named catsn*.out. If -you see these files, then you have succesfully run Swift on PADS! - -TIP: Make sure your default project is defined. Read on for more information. - -Read on for more detailed information about running Swift on PADS. - -Requesting Access -~~~~~~~~~~~~~~~~~ -If you do not already have a Computation Institute account, you can request -one at https://www.ci.uchicago.edu/accounts. This page will give you a list -of resources you can request access to. Be sure that PADS is selected. If -you already have an existing CI account, but do not have access to PADS, -send an email to support at ci.uchicago.edu to request access. - -SSH Keys -~~~~~~~~ -Before accessing PADS, be sure to have your SSH keys configured correctly. -There is some basic information about SSH and how to generate your key at -http://www.ci.uchicago.edu/wiki/bin/view/Resources/SshKeys. Once you have -followed those instructions, you can add your key at -https://www.ci.uchicago.edu/support/sshkeys/. - -Connecting to a login node -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Once your keys are configured, you should be able to access a PADS login -node with the following command: - ------ -ssh yourusername at login.pads.ci.uchicago.edu ------ - -Configuring softenv -~~~~~~~~~~~~~~~~~~~ -Softenv is a system used for managing applications. In order to run Swift, -the softenv environment will have to be modified slightly. Softenv is -configured by a file in your home directory called .soft. Edit this file -to look like this: ------ -+java-sun -+maui -+torque - at default ------ - -Swift Work Directory -^^^^^^^^^^^^^^^^^^^^ -The Swift work directory is a directory which Swift uses for processing work. -This directory needs to be writable and available to all worker nodes on -a shared filesystem. - -.Examples ------ -/home/username/swiftwork -/home/username/work -/autonfs/gpfs-pads/projects/CI-CCR000013/myusername ------ - -Which project(s) are you a member of? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -PADS requires that you are a member of a project. You can determine this by -running the following command: - ------ -$ projects --available - -The following projects are available for your use - -Project PI Title - -CI-CCR000013 Michael Wilde The Swift Parallel Scripting System ------ - -If you are not a member of a project, you must first request access -to a project at http://www.ci.uchicago.edu/hpc/projects. - -You should make sure that you have a project set as default. Run -the projects command with no arguments to determine if you have a default. - ------- -$ projects -You have no default project set. ------ - -To set your default project, use projects --set ------- -$ projects --set CI-CCR000013 --all -Your default project for all CI clusters has been set to CI-CCR000013. ------ - -Determine your Queue -^^^^^^^^^^^^^^^^^^^^ - -PADS has several different queues you can submit jobs to depending on -the type of work you will be doing. The command "qstat -q" will print -the most up to date list of this information. - -.PADS Queues -[options="header"] -|========================================================= -|Queue |Memory|CPU Time|Walltime|Node|Run|Que|Lm |State -|route |-- |-- |-- |-- | 0| 0|-- | E R -|short |-- |-- |04:00:00|-- | 64| 0|-- | E R -|extended|-- |-- |-- |-- | 0| 0|-- | E R -|fast |-- |-- |01:00:00|1 | 0|152|-- | E R -|long |-- |-- |24:00:00|-- |232|130|-- | E R -|========================================================= - -Generating Configuration Files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now that you know what queue to use, your project, and your work directory, it is time to -set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. -There are two methods you can use for creating this file. You can manually edit -the configuration file, or generate it with a utility called gensites. - -Manually Editing sites.xml -^^^^^^^^^^^^^^^^^^^^^^^^^^ -Below is the template that is used by Swift's test suite for running on PADS. - ------ -include::../../tests/providers/PADS/coasters/sites.template.xml[] ------ - -Before you can use this configuration file, you will need to modify \_WORK_ to a directory writable by you, -and have your default project defined. Copy this template, replace \_WORK_, and then save as sites.xml. - -If you wanted to use a different queue, replace "fast" with the desired queue name. - -Manually Editing tc.data -~~~~~~~~~~~~~~~~~~~~~~~~ -Below is the tc.data file used by Swift's test suite for running on PADS. - ------ -include::../../tests/providers/PADS/coasters/tc.template.data[] ------- - -Copy these commands and save it as tc.data. - -Catsn.swift -~~~~~~~~~~~ -The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is -a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains -some simple input - a "hello world" will do the trick. - ------ -include::../../examples/misc/catsn.swift[] ------ - - -Running Swift -~~~~~~~~~~~~~ -Now that everything is in place, run Swift with the following command: - ------ -swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 ------ - -You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these -files should contain the contents of what you placed into data.txt. If this happens, your job has run -successfully on PADS! - -More Help -~~~~~~~~~ -The best place for additional help is the Swift user mailing list. You can subscribe to this list at -https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. - - Copied: trunk/docs/siteguide/pads (from rev 5078, branches/release-0.93/docs/siteguide/pads) =================================================================== --- trunk/docs/siteguide/pads (rev 0) +++ trunk/docs/siteguide/pads 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,246 @@ +PADS +---- + +PADS Quickstart +~~~~~~~~~~~~~~~ +This section will walk you through running a simple Swift script +on PADS. It will explain how to setup software packages, how +to create the required Swift configuration files, and finally +how to run Swift. + +Adding Software Packages +^^^^^^^^^^^^^^^^^^^^^^^^ +In your home directory, edit a file called .soft and add these +lines (in this order): +----- ++java-sun ++maui ++torque + at default +----- + +Log out of PADS, and log back in for these changes to take effect. + +Creating sites.xml +^^^^^^^^^^^^^^^^^^ +Swift relies on various configuration files to determine how to +run. This section will provide a working configuration file which +you can copy and paste to get running quickly. The sites.xml file +tells Swift how to submit jobs, where working directories are +located, and various other configuration information. More +information on sites.xml can be found in the Swift User's Guide. + +The first step is to paste the text below into a file named sites.xml. + +----- +include::../../tests/providers/PADS/coasters/sites.template.xml[] +----- + +This file will require just a few customizations. First, create a +directory called swiftwork. Modify \_WORK_ in sites.xml +to point to this new directory. For example +----- +/home/myhome/swiftwork +----- + +Creating tc.data +^^^^^^^^^^^^^^^^ +The tc.data configuration file gives information about the applications +that will be called by Swift. More information about the format +of tc.data can be found in the Swift User's guide. + +Paste the following example into a file named tc.data + +----- +include::../../tests/providers/PADS/coasters/tc.template.data[] +----- + +Copy a Swift Script +^^^^^^^^^^^^^^^^^^^ + +Within the Swift directory is an examples directory which contains +several introductory Swift scripts. The example we will use in this +section is called catsn.swift. Copy this script to the same directory +that your sites.xml and tc.data files are located. + +----- +$ cp ~/swift-0.93/examples/misc/catsn.swift . +$ cp ~/swift-0.93/examples/misc/data.txt . +----- +TIP: The location of your swift directory may vary depending on how you installed it. Change this to the examples/misc directory of your installation as needed. + +Run Swift +^^^^^^^^^ + +Finally, run the script +----- +$ swift -sites.file sites.xml -tc.file tc.data catsn.swift +----- + +You should see 10 new text files get created, named catsn*.out. If +you see these files, then you have succesfully run Swift on PADS! + +TIP: Make sure your default project is defined. Read on for more information. + +Read on for more detailed information about running Swift on PADS. + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have a Computation Institute account, you can request +one at https://www.ci.uchicago.edu/accounts. This page will give you a list +of resources you can request access to. Be sure that PADS is selected. If +you already have an existing CI account, but do not have access to PADS, +send an email to support at ci.uchicago.edu to request access. + +SSH Keys +~~~~~~~~ +Before accessing PADS, be sure to have your SSH keys configured correctly. +There is some basic information about SSH and how to generate your key at +http://www.ci.uchicago.edu/wiki/bin/view/Resources/SshKeys. Once you have +followed those instructions, you can add your key at +https://www.ci.uchicago.edu/support/sshkeys/. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Once your keys are configured, you should be able to access a PADS login +node with the following command: + +----- +ssh yourusername at login.pads.ci.uchicago.edu +----- + +Configuring softenv +~~~~~~~~~~~~~~~~~~~ +Softenv is a system used for managing applications. In order to run Swift, +the softenv environment will have to be modified slightly. Softenv is +configured by a file in your home directory called .soft. Edit this file +to look like this: +----- ++java-sun ++maui ++torque + at default +----- + +Swift Work Directory +^^^^^^^^^^^^^^^^^^^^ +The Swift work directory is a directory which Swift uses for processing work. +This directory needs to be writable and available to all worker nodes on +a shared filesystem. + +.Examples +----- +/home/username/swiftwork +/home/username/work +/autonfs/gpfs-pads/projects/CI-CCR000013/myusername +----- + +Which project(s) are you a member of? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +PADS requires that you are a member of a project. You can determine this by +running the following command: + +----- +$ projects --available + +The following projects are available for your use + +Project PI Title + +CI-CCR000013 Michael Wilde The Swift Parallel Scripting System +----- + +If you are not a member of a project, you must first request access +to a project at http://www.ci.uchicago.edu/hpc/projects. + +You should make sure that you have a project set as default. Run +the projects command with no arguments to determine if you have a default. + +------ +$ projects +You have no default project set. +----- + +To set your default project, use projects --set +------ +$ projects --set CI-CCR000013 --all +Your default project for all CI clusters has been set to CI-CCR000013. +----- + +Determine your Queue +^^^^^^^^^^^^^^^^^^^^ + +PADS has several different queues you can submit jobs to depending on +the type of work you will be doing. The command "qstat -q" will print +the most up to date list of this information. + +.PADS Queues +[options="header"] +|========================================================= +|Queue |Memory|CPU Time|Walltime|Node|Run|Que|Lm |State +|route |-- |-- |-- |-- | 0| 0|-- | E R +|short |-- |-- |04:00:00|-- | 64| 0|-- | E R +|extended|-- |-- |-- |-- | 0| 0|-- | E R +|fast |-- |-- |01:00:00|1 | 0|152|-- | E R +|long |-- |-- |24:00:00|-- |232|130|-- | E R +|========================================================= + +Generating Configuration Files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now that you know what queue to use, your project, and your work directory, it is time to +set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. +There are two methods you can use for creating this file. You can manually edit +the configuration file, or generate it with a utility called gensites. + +Manually Editing sites.xml +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Below is the template that is used by Swift's test suite for running on PADS. + +----- +include::../../tests/providers/PADS/coasters/sites.template.xml[] +----- + +Before you can use this configuration file, you will need to modify \_WORK_ to a directory writable by you, +and have your default project defined. Copy this template, replace \_WORK_, and then save as sites.xml. + +If you wanted to use a different queue, replace "fast" with the desired queue name. + +Manually Editing tc.data +~~~~~~~~~~~~~~~~~~~~~~~~ +Below is the tc.data file used by Swift's test suite for running on PADS. + +----- +include::../../tests/providers/PADS/coasters/tc.template.data[] +------ + +Copy these commands and save it as tc.data. + +Catsn.swift +~~~~~~~~~~~ +The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is +a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains +some simple input - a "hello world" will do the trick. + +----- +include::../../examples/misc/catsn.swift[] +----- + + +Running Swift +~~~~~~~~~~~~~ +Now that everything is in place, run Swift with the following command: + +----- +swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 +----- + +You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these +files should contain the contents of what you placed into data.txt. If this happens, your job has run +successfully on PADS! + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. + + Deleted: trunk/docs/siteguide/prereqs =================================================================== --- branches/release-0.93/docs/siteguide/prereqs 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/prereqs 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,8 +0,0 @@ -Prerequisites -------------- - -This guide assumes that you have already downloaded and installed Swift. -It assumes that Swift is in your PATH and that you have a working -version of Sun Java 1.5+. For more information on downloading and -installing Swift, please see the -http://www.ci.uchicago.edu/swift/guides/release-0.93/quickstart/quickstart.html[Swift Quickstart Guide]. Copied: trunk/docs/siteguide/prereqs (from rev 5078, branches/release-0.93/docs/siteguide/prereqs) =================================================================== --- trunk/docs/siteguide/prereqs (rev 0) +++ trunk/docs/siteguide/prereqs 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,8 @@ +Prerequisites +------------- + +This guide assumes that you have already downloaded and installed Swift. +It assumes that Swift is in your PATH and that you have a working +version of Sun Java 1.5+. For more information on downloading and +installing Swift, please see the +http://www.ci.uchicago.edu/swift/guides/release-0.93/quickstart/quickstart.html[Swift Quickstart Guide]. Deleted: trunk/docs/siteguide/siteguide.txt =================================================================== --- branches/release-0.93/docs/siteguide/siteguide.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/siteguide.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,17 +0,0 @@ -Site Configuration Guide -======================== - -:toc: -:icons: -:website: http://www.ci.uchicago.edu/swift/guides/siteguide.php -:numbered: - -include::prereqs[] - -include::pads[] - -include::beagle[] - -include::futuregrid[] - -include::intrepid[] Copied: trunk/docs/siteguide/siteguide.txt (from rev 5078, branches/release-0.93/docs/siteguide/siteguide.txt) =================================================================== --- trunk/docs/siteguide/siteguide.txt (rev 0) +++ trunk/docs/siteguide/siteguide.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,17 @@ +Site Configuration Guide +======================== + +:toc: +:icons: +:website: http://www.ci.uchicago.edu/swift/guides/siteguide.php +:numbered: + +include::prereqs[] + +include::pads[] + +include::beagle[] + +include::futuregrid[] + +include::intrepid[] Deleted: trunk/docs/stylesheets/asciidoc.css =================================================================== --- branches/release-0.93/docs/stylesheets/asciidoc.css 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/stylesheets/asciidoc.css 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,2 +0,0 @@ -a:link { color:navy; } -a:visited { color:navy; } Copied: trunk/docs/stylesheets/asciidoc.css (from rev 5078, branches/release-0.93/docs/stylesheets/asciidoc.css) =================================================================== --- trunk/docs/stylesheets/asciidoc.css (rev 0) +++ trunk/docs/stylesheets/asciidoc.css 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,2 @@ +a:link { color:navy; } +a:visited { color:navy; } Property changes on: trunk/docs/tutorial ___________________________________________________________________ Deleted: svn:ignore - tutorial.html tutorial.pdf Deleted: trunk/docs/tutorial/abstract =================================================================== --- trunk/docs/tutorial/abstract 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/abstract 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,7 +0,0 @@ -[abstract] -Abstract --------- -This is an introductory tutorial on the use of Swift and its programming -language SwiftScript. - -note: merge with intro? Copied: trunk/docs/tutorial/abstract (from rev 5078, branches/release-0.93/docs/tutorial/abstract) =================================================================== --- trunk/docs/tutorial/abstract (rev 0) +++ trunk/docs/tutorial/abstract 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,7 @@ +[abstract] +Abstract +-------- +This is an introductory tutorial on the use of Swift and its programming +language SwiftScript. + +note: merge with intro? Deleted: trunk/docs/tutorial/bits =================================================================== --- trunk/docs/tutorial/bits 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/bits 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,15 +0,0 @@ -Bits ----- - -Named and optional parameters -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In addition to specifying parameters positionally, parameters can be -named, and if desired a default value can be specified: - -.default.swift -************** ----- -include::../../examples/tutorial/default.swift[] ----- -************** Copied: trunk/docs/tutorial/bits (from rev 5078, branches/release-0.93/docs/tutorial/bits) =================================================================== --- trunk/docs/tutorial/bits (rev 0) +++ trunk/docs/tutorial/bits 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,15 @@ +Bits +---- + +Named and optional parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to specifying parameters positionally, parameters can be +named, and if desired a default value can be specified: + +.default.swift +************** +---- +include::../../examples/tutorial/default.swift[] +---- +************** Deleted: trunk/docs/tutorial/hello_world =================================================================== --- trunk/docs/tutorial/hello_world 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/hello_world 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,69 +0,0 @@ -Hello World ------------ -The first example program, hello.swift, outputs a hello world message -into a file called hello.txt. - -.hello.swift -************ - ----- -include::../../examples/tutorial/hello.swift[] ----- -************ - -To run hello.swift, change directories to the location of the script -and run the swift command as follows. - -TIP: Make sure the bin directory of your swift installation is in your PATH. ----- -$ cd examples/tutorial -$ swift hello.swift -Swift svn swift-r3334 (swift modified locally) cog-r2752 - -RunID: 20100526-1925-8zjupq1b -Progress: -Final status: Finished successfully:1 -$ cat hello.txt -Hello, world! ----- - -The basic structure of this program is a type definition, an -application procedure definition, a variable definition and then a -call to the procedure. - -First we define a new type, called messagefile. In this example, we will -use this messagefile type for our output message. - ----- -sys::[sed -n '1p' ../../examples/tutorial/hello.swift] ----- - -All data in SwiftScript must be typed, whether it is stored in memory or -on disk. This example defines a very simple type. Later on we will see -more complex type examples. - ----- -sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] ----- - -Next we define a procedure called greeting. This procedure will write -out the "hello world" message to a file. To achieve this, it executes -the unix utility 'echo' with a parameter "Hello, world!" and directs -the standard output into the output file. - -The actual file to use is specified by the return parameter, t. ------ -sys::[sed -n '7p' ../../examples/tutorial/hello.swift] ------ -Here we define a variable called outfile. The type of this variable is -messagefile, and we specify that the contents of this variable will be -stored on disk in a file called hello.txt - ------ -sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] ------ -Now we call the greeting procedure, with its output going to the outfile -variable and therefore to hello.txt on disk. - -Over the following exercises, we'll extend this simple hello world -program to demonstrate various features of Swift. Copied: trunk/docs/tutorial/hello_world (from rev 5078, branches/release-0.93/docs/tutorial/hello_world) =================================================================== --- trunk/docs/tutorial/hello_world (rev 0) +++ trunk/docs/tutorial/hello_world 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,69 @@ +Hello World +----------- +The first example program, hello.swift, outputs a hello world message +into a file called hello.txt. + +.hello.swift +************ + +---- +include::../../examples/tutorial/hello.swift[] +---- +************ + +To run hello.swift, change directories to the location of the script +and run the swift command as follows. + +TIP: Make sure the bin directory of your swift installation is in your PATH. +---- +$ cd examples/tutorial +$ swift hello.swift +Swift svn swift-r3334 (swift modified locally) cog-r2752 + +RunID: 20100526-1925-8zjupq1b +Progress: +Final status: Finished successfully:1 +$ cat hello.txt +Hello, world! +---- + +The basic structure of this program is a type definition, an +application procedure definition, a variable definition and then a +call to the procedure. + +First we define a new type, called messagefile. In this example, we will +use this messagefile type for our output message. + +---- +sys::[sed -n '1p' ../../examples/tutorial/hello.swift] +---- + +All data in SwiftScript must be typed, whether it is stored in memory or +on disk. This example defines a very simple type. Later on we will see +more complex type examples. + +---- +sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] +---- + +Next we define a procedure called greeting. This procedure will write +out the "hello world" message to a file. To achieve this, it executes +the unix utility 'echo' with a parameter "Hello, world!" and directs +the standard output into the output file. + +The actual file to use is specified by the return parameter, t. +----- +sys::[sed -n '7p' ../../examples/tutorial/hello.swift] +----- +Here we define a variable called outfile. The type of this variable is +messagefile, and we specify that the contents of this variable will be +stored on disk in a file called hello.txt + +----- +sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] +----- +Now we call the greeting procedure, with its output going to the outfile +variable and therefore to hello.txt on disk. + +Over the following exercises, we'll extend this simple hello world +program to demonstrate various features of Swift. Deleted: trunk/docs/tutorial/images/icons/caution.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/caution.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/caution.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/example.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/example.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/example.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/home.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/home.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/home.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/important.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/important.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/important.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/next.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/next.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/next.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/note.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/note.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/note.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/prev.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/prev.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/prev.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/tip.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/tip.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/tip.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/up.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/up.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/up.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/images/icons/warning.png =================================================================== (Binary files differ) Copied: trunk/docs/tutorial/images/icons/warning.png (from rev 5078, branches/release-0.93/docs/tutorial/images/icons/warning.png) =================================================================== (Binary files differ) Deleted: trunk/docs/tutorial/introduction =================================================================== --- trunk/docs/tutorial/introduction 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/introduction 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,16 +0,0 @@ -Introduction ------------- -This is an introductory tutorial describing the use of Swift and its programming -language SwiftScript. It is intended to introduce new users to the basics of Swift. -It is structured as a series of simple exercises/examples which you can -try for yourself as you read along. - -For information on getting an installation of Swift running, consult the -http://www.ci.uchicago.edu/swift/guides/quickstartguide.php[Swift Quickstart Guide]. We advise you to install the latest stable release of Swift. -Return to this document when you have successfully run the test SwiftScript program mentioned there. - -There is also a -sys::[../print_link.sh userguide] -which contains a more detailed reference material on topics covered in this manual. All -of the programs included in this tutorial can be found in your Swift -distribution in the examples/tutorial directory. Copied: trunk/docs/tutorial/introduction (from rev 5078, branches/release-0.93/docs/tutorial/introduction) =================================================================== --- trunk/docs/tutorial/introduction (rev 0) +++ trunk/docs/tutorial/introduction 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,16 @@ +Introduction +------------ +This is an introductory tutorial describing the use of Swift and its programming +language SwiftScript. It is intended to introduce new users to the basics of Swift. +It is structured as a series of simple exercises/examples which you can +try for yourself as you read along. + +For information on getting an installation of Swift running, consult the +http://www.ci.uchicago.edu/swift/guides/quickstartguide.php[Swift Quickstart Guide]. We advise you to install the latest stable release of Swift. +Return to this document when you have successfully run the test SwiftScript program mentioned there. + +There is also a +sys::[../print_link.sh userguide] +which contains a more detailed reference material on topics covered in this manual. All +of the programs included in this tutorial can be found in your Swift +distribution in the examples/tutorial directory. Deleted: trunk/docs/tutorial/language_features =================================================================== --- trunk/docs/tutorial/language_features 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/language_features 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,390 +0,0 @@ -Language features ------------------ - -Parameters -~~~~~~~~~~ - -Procedures can have parameters. Input parameters specify inputs to the -procedure and output parameters specify outputs. Our hello world greeting -procedure already uses an output parameter, t, which indicates where the -greeting output will go. In this section, we will modify the previous -script to add an input parameter to the greeting function. - -.parameter.swift -**************** ----- -include::../../examples/tutorial/parameter.swift[] ----- -**************** - -We have modified the signature of the greeting procedure to indicate -that it takes a single parameter, s, of type 'string'. - -We have modified the invocation of the 'echo' utility so that it takes -the value of s as a parameter, instead of the string literal "Hello, -world!". - -We have modified the output file definition to point to a different file -on disk. - -We have modified the invocation of greeting so that a greeting string is -supplied. - -The code for this section can be found in parameter.swift. It can be -invoked using the swift command, with output appearing in parameter.hello.txt: - - ----- -$ swift parameter.swift ----- - -Now that we can choose our greeting text, we can call the same procedure -with different parameters to generate several output files with -different greetings. The code is in manyparam.swift and can be run as -before using the swift command. - -.manyparam.swift -**************** ----- -include::../../examples/tutorial/manyparam.swift[] ----- -**************** - -Note that we can intermingle definitions of variables with invocations -of procedures. - -When this program runs, there should be three new files in the -working directory (manyparam.english.txt, manyparam.francais.txt -and manyparam.nihongo.txt) each containing a greeting in a different -language. - -In addition to specifying parameters positionally, parameters can be -named, and if desired a default value can be specified. - -Adding another application -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now we'll define a new application procedure. The procedure we define -will capitalise all the words in the input file. - -To do this, we'll use the unix tr (translate) utility. Here is an -example of using tr on the unix command line, not using Swift: - ----- -$ echo hello | tr '[a-z]' '[A-Z]' -HELLO ----- - -There are two main steps - updating the transformation catalog, and -updating the application block. - -The transformation catalog lists where application executables are located on -remote sites. We need to modify the transformation catalog to define a logical -transformation for the tr utility. The transformation catalog can be found -in etc/tc.data. There are already several entries specifying -where executables can be found. Add a new line to the file, specifying -where tr can be found (usually in /usr/bin/tr but it may differ on -your system), like this: - ----- -localhost tr /usr/bin/tr INSTALLED INTEL32::LINUX null ----- - -For now, ignore all of the fields except the second and the third. The -second field tr specifies a logical application name and the third -specifies the location of the application executable. - -Now that we have defined where to find tr, we can use it in SwiftScript. - -We can define a new procedure, capitalise, which calls tr. - ----- -sys::[sed -n '7,9p' ../../examples/tutorial/capitalise.swift] ----- -We can call capitalise like this: - ----- -sys::[sed -n '12,14p' ../../examples/tutorial/capitalise.swift] ----- - -Here is the full program based on this exercise: - -.capitalise.swift -*********************** ----- -include::../../examples/tutorial/capitalise.swift[] ----- -*********************** - -Next, run swift and verify the output is correct. - ----- -$ swift capitalise.swift -... -$ cat capitalise.2.txt -HELLO FROM SWIFT ----- - -Anonymous files -~~~~~~~~~~~~~~~ -In the previous section, the file hello.txt is used only to store -an intermediate result. We don't really care about which name is used -for the file, and we can let Swift choose the name. - -To do that, omit the mapping entirely when declaring hellofile: - ----- -sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] ----- - -Swift will choose a filename, which in the present version will be in a -subdirectory called _concurrent. - - -Datatypes -~~~~~~~~~ -All data in variables and files has a data type. So far, we've seen two -types: - - - string - this is a built-in type for storing strings of text in - memory, much like in other programming languages - - messagefile - this is a user-defined type used to mark disc resident files as - containing messages - -SwiftScript has the additional built-in types: boolean, integer and -float that function much like their counterparts in other programming -languages. - -It is also possible to create user defined types with more structure, -for example: - - ----- -sys::[sed -n '3,6p' ../../examples/tutorial/types.swift] ----- - -Each element of the structured type can be accessed using a . like this: - ----- -sys::[sed -n '14p' ../../examples/tutorial/types.swift] ----- - -The following complete program, types.swift, outputs a greeting using a -user-defined structure type to hold parameters for the message: - -.types.swift -************ ----- -include::../../examples/tutorial/types.swift[] ----- -************ - -Structured types can be comprised of marker types for files. See the -later section on mappers for more information about this. - - -Arrays -~~~~~~ - -We can define arrays using the [] suffix in a variable declaration: - ----- -sys::[sed -n '9p' ../../examples/tutorial/arrays.swift] ----- - -This program, arrays.swift, will declare an array of message files. - -.arrays.swift -************* ----- -include::../../examples/tutorial/arrays.swift[] ----- -************* - -Observe that the type of the parameter to greeting is now an array of -strings, string s[], instead of a single string, string s, that -elements of the array can be referenced numerically, for example s[0], -and that the array is initialised using an array literal, -["how","are","you"]. - - -Mappers -~~~~~~~ - -A significant difference between SwiftScript and other languages is that -data can be referred to on disk through variables in a very similar -fashion to data in memory. For example, in the above examples we have -seen a variable definition like this: - ----- -sys::[sed -n '7p' ../../examples/tutorial/arrays.swift] ----- - -This means that outfile is a dataset variable, which is mapped to a -file on disk called arrays.txt. This variable can be assigned to -using = in a similar fashion to an in-memory variable. We can say that -outfile is mapped onto the disk file arrays.txt by a mapper. - -There are various ways of mapping in SwiftScript. Two forms of mapping, -simple named mapping and anonymous mapping, have already -been seen in this tutorial. Later exercises will introduce more forms. - -In simple named mapping, the name of the file that a variable is mapped to -is explictly listed. - ----- -sys::[sed -n '7p' ../../examples/tutorial/hello.swift] ----- - -This is useful when you want to explicitly name input and output files -for your program. An example of this can be seen with 'outfile' in the -hello world exercise. - -With anonymous mapping no name is specified in the source code. A name is -automatically generated for the file. This is useful for intermediate -files that are only referenced through SwiftScript. -A variable declaration is mapped anonymously by ommitting any mapper -definition. - ----- -sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] ----- - -Later exercises will introduce other ways of mapping from disk files to -SwiftScript variables. - - -The Regexp Mapper -^^^^^^^^^^^^^^^^^ -In this exercise, we introduce the regexp mapper. This mapper -transforms a string expression using a regular expression, and uses the -result of that transformation as the filename to map. - -regexp.swift demonstrates the use of this by placing output into a -file that is based on the name of the input file. Our input file is -mapped to the inputfile variable using the simple named mapper, then -we use the regular expression mapper to map the output file. We then use -the countwords() procedure to count the words in the input file and -store the result in the output file. In order for the countwords() -procedure to work correctly, add the wc utility (usually found in -/usr/bin/wc) to tc.data. - -The following program replaces the suffix of the input file (regexp_mapper.words.txt) -with a new suffix (.count) to create regexp_mapper.words.count. - -.regexp_mapper.swift -************* ----- -include::../../examples/tutorial/regexp_mapper.swift[] ----- -************** - -fixed_array_mapper -^^^^^^^^^^^^^^^^^^ -The fixed array mapper maps a list of files into an array. Each -element of the array is mapped into one file in the specified directory. -See fixed_array_mapper.swift below. - -.fixed_array_mapper.swift -************************* ----- -include::../../examples/tutorial/fixed_array_mapper.swift[] ----- -************************* - -foreach -~~~~~~~ -SwiftScript provides a control structure, foreach, to operate on each -element of an array in parallel. - -In this example, we will run the previous word counting example over -each file in an array without having to explicitly list the array -elements. The source code for this example is in foreach.swift. This -program uses three input files: foreach.1.txt, foreach.2.txt, and -foreach.3.txt. After you have run the workflow, you should see that there are three -output files: foreach.1.count, foreach.2.count and foreach.3.count, each -containing the word count for the corresponding input file. We combine -the use of the fixed_array_mapper and the regexp_mapper. - -.foreach.swift -************** ----- -include::../../examples/tutorial/foreach.swift[] ----- -************** - -If -~~ -Decisions can be made using 'if', like this: - ----- -sys::[sed -n '11,15p' ../../examples/tutorial/if.swift] ----- - -if.swift contains a simple example of this. Compile and run if.swift -and see that it outputs "good morning". Changing the morning variable -from true to false will cause the program to output "good afternoon". -Here is the contents of the full script: - -.if.swift -********* ------ -include::../../examples/tutorial/if.swift[] ------ -********* - -Sequential iteration -~~~~~~~~~~~~~~~~~~~~ - -A serial execution of instructions can be carried out using the sequential iteration construct. - -The following example demonstrates a simple application. Each step of -the iteration is a string representation of the byte count of the -previous step's output, with iteration terminating when the byte count -reaches zero. - -Here's the program: - -.sequential_iteration.swift -*************************** ----- -include::../../examples/tutorial/sequential_iteration.swift[] ----- -*************************** - -Echo is the standard unix echo utility. - -_wcl_ is our application code. It counts the number of bytes in the one -file and writes that count out to another, like this: - ----- -$ cat ../wcl -#!/bin/bash -echo -n $(wc -c < $1) > $2 - -$ echo -n hello > a -$ wcl a b -$ cat b -5 ----- - -Install the above wcl script somewhere and add a transformation catalog -(tc) entry for it (see an example below, note that you will need to change the path in third column to the path where wcl is located on your localhost). - ----- -localhost wcl /home/ketan/bin/wcl INSTALLED INTEL32::LINUX null ----- - -Then run the example program like this: - - ----- -$ swift iterate.swift -Swift svn swift-r3334 cog-r2752 - -RunID: 20100526-2259-gtlz8zf4 -Progress: -SwiftScript trace: extract int value , 16.0 -SwiftScript trace: extract int value , 2.0 -SwiftScript trace: extract int value , 1.0 -Final status: Finished successfully:4 ----- Copied: trunk/docs/tutorial/language_features (from rev 5078, branches/release-0.93/docs/tutorial/language_features) =================================================================== --- trunk/docs/tutorial/language_features (rev 0) +++ trunk/docs/tutorial/language_features 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,390 @@ +Language features +----------------- + +Parameters +~~~~~~~~~~ + +Procedures can have parameters. Input parameters specify inputs to the +procedure and output parameters specify outputs. Our hello world greeting +procedure already uses an output parameter, t, which indicates where the +greeting output will go. In this section, we will modify the previous +script to add an input parameter to the greeting function. + +.parameter.swift +**************** +---- +include::../../examples/tutorial/parameter.swift[] +---- +**************** + +We have modified the signature of the greeting procedure to indicate +that it takes a single parameter, s, of type 'string'. + +We have modified the invocation of the 'echo' utility so that it takes +the value of s as a parameter, instead of the string literal "Hello, +world!". + +We have modified the output file definition to point to a different file +on disk. + +We have modified the invocation of greeting so that a greeting string is +supplied. + +The code for this section can be found in parameter.swift. It can be +invoked using the swift command, with output appearing in parameter.hello.txt: + + +---- +$ swift parameter.swift +---- + +Now that we can choose our greeting text, we can call the same procedure +with different parameters to generate several output files with +different greetings. The code is in manyparam.swift and can be run as +before using the swift command. + +.manyparam.swift +**************** +---- +include::../../examples/tutorial/manyparam.swift[] +---- +**************** + +Note that we can intermingle definitions of variables with invocations +of procedures. + +When this program runs, there should be three new files in the +working directory (manyparam.english.txt, manyparam.francais.txt +and manyparam.nihongo.txt) each containing a greeting in a different +language. + +In addition to specifying parameters positionally, parameters can be +named, and if desired a default value can be specified. + +Adding another application +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now we'll define a new application procedure. The procedure we define +will capitalise all the words in the input file. + +To do this, we'll use the unix tr (translate) utility. Here is an +example of using tr on the unix command line, not using Swift: + +---- +$ echo hello | tr '[a-z]' '[A-Z]' +HELLO +---- + +There are two main steps - updating the transformation catalog, and +updating the application block. + +The transformation catalog lists where application executables are located on +remote sites. We need to modify the transformation catalog to define a logical +transformation for the tr utility. The transformation catalog can be found +in etc/tc.data. There are already several entries specifying +where executables can be found. Add a new line to the file, specifying +where tr can be found (usually in /usr/bin/tr but it may differ on +your system), like this: + +---- +localhost tr /usr/bin/tr INSTALLED INTEL32::LINUX null +---- + +For now, ignore all of the fields except the second and the third. The +second field tr specifies a logical application name and the third +specifies the location of the application executable. + +Now that we have defined where to find tr, we can use it in SwiftScript. + +We can define a new procedure, capitalise, which calls tr. + +---- +sys::[sed -n '7,9p' ../../examples/tutorial/capitalise.swift] +---- +We can call capitalise like this: + +---- +sys::[sed -n '12,14p' ../../examples/tutorial/capitalise.swift] +---- + +Here is the full program based on this exercise: + +.capitalise.swift +*********************** +---- +include::../../examples/tutorial/capitalise.swift[] +---- +*********************** + +Next, run swift and verify the output is correct. + +---- +$ swift capitalise.swift +... +$ cat capitalise.2.txt +HELLO FROM SWIFT +---- + +Anonymous files +~~~~~~~~~~~~~~~ +In the previous section, the file hello.txt is used only to store +an intermediate result. We don't really care about which name is used +for the file, and we can let Swift choose the name. + +To do that, omit the mapping entirely when declaring hellofile: + +---- +sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] +---- + +Swift will choose a filename, which in the present version will be in a +subdirectory called _concurrent. + + +Datatypes +~~~~~~~~~ +All data in variables and files has a data type. So far, we've seen two +types: + + - string - this is a built-in type for storing strings of text in + memory, much like in other programming languages + - messagefile - this is a user-defined type used to mark disc resident files as + containing messages + +SwiftScript has the additional built-in types: boolean, integer and +float that function much like their counterparts in other programming +languages. + +It is also possible to create user defined types with more structure, +for example: + + +---- +sys::[sed -n '3,6p' ../../examples/tutorial/types.swift] +---- + +Each element of the structured type can be accessed using a . like this: + +---- +sys::[sed -n '14p' ../../examples/tutorial/types.swift] +---- + +The following complete program, types.swift, outputs a greeting using a +user-defined structure type to hold parameters for the message: + +.types.swift +************ +---- +include::../../examples/tutorial/types.swift[] +---- +************ + +Structured types can be comprised of marker types for files. See the +later section on mappers for more information about this. + + +Arrays +~~~~~~ + +We can define arrays using the [] suffix in a variable declaration: + +---- +sys::[sed -n '9p' ../../examples/tutorial/arrays.swift] +---- + +This program, arrays.swift, will declare an array of message files. + +.arrays.swift +************* +---- +include::../../examples/tutorial/arrays.swift[] +---- +************* + +Observe that the type of the parameter to greeting is now an array of +strings, string s[], instead of a single string, string s, that +elements of the array can be referenced numerically, for example s[0], +and that the array is initialised using an array literal, +["how","are","you"]. + + +Mappers +~~~~~~~ + +A significant difference between SwiftScript and other languages is that +data can be referred to on disk through variables in a very similar +fashion to data in memory. For example, in the above examples we have +seen a variable definition like this: + +---- +sys::[sed -n '7p' ../../examples/tutorial/arrays.swift] +---- + +This means that outfile is a dataset variable, which is mapped to a +file on disk called arrays.txt. This variable can be assigned to +using = in a similar fashion to an in-memory variable. We can say that +outfile is mapped onto the disk file arrays.txt by a mapper. + +There are various ways of mapping in SwiftScript. Two forms of mapping, +simple named mapping and anonymous mapping, have already +been seen in this tutorial. Later exercises will introduce more forms. + +In simple named mapping, the name of the file that a variable is mapped to +is explictly listed. + +---- +sys::[sed -n '7p' ../../examples/tutorial/hello.swift] +---- + +This is useful when you want to explicitly name input and output files +for your program. An example of this can be seen with 'outfile' in the +hello world exercise. + +With anonymous mapping no name is specified in the source code. A name is +automatically generated for the file. This is useful for intermediate +files that are only referenced through SwiftScript. +A variable declaration is mapped anonymously by ommitting any mapper +definition. + +---- +sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] +---- + +Later exercises will introduce other ways of mapping from disk files to +SwiftScript variables. + + +The Regexp Mapper +^^^^^^^^^^^^^^^^^ +In this exercise, we introduce the regexp mapper. This mapper +transforms a string expression using a regular expression, and uses the +result of that transformation as the filename to map. + +regexp.swift demonstrates the use of this by placing output into a +file that is based on the name of the input file. Our input file is +mapped to the inputfile variable using the simple named mapper, then +we use the regular expression mapper to map the output file. We then use +the countwords() procedure to count the words in the input file and +store the result in the output file. In order for the countwords() +procedure to work correctly, add the wc utility (usually found in +/usr/bin/wc) to tc.data. + +The following program replaces the suffix of the input file (regexp_mapper.words.txt) +with a new suffix (.count) to create regexp_mapper.words.count. + +.regexp_mapper.swift +************* +---- +include::../../examples/tutorial/regexp_mapper.swift[] +---- +************** + +fixed_array_mapper +^^^^^^^^^^^^^^^^^^ +The fixed array mapper maps a list of files into an array. Each +element of the array is mapped into one file in the specified directory. +See fixed_array_mapper.swift below. + +.fixed_array_mapper.swift +************************* +---- +include::../../examples/tutorial/fixed_array_mapper.swift[] +---- +************************* + +foreach +~~~~~~~ +SwiftScript provides a control structure, foreach, to operate on each +element of an array in parallel. + +In this example, we will run the previous word counting example over +each file in an array without having to explicitly list the array +elements. The source code for this example is in foreach.swift. This +program uses three input files: foreach.1.txt, foreach.2.txt, and +foreach.3.txt. After you have run the workflow, you should see that there are three +output files: foreach.1.count, foreach.2.count and foreach.3.count, each +containing the word count for the corresponding input file. We combine +the use of the fixed_array_mapper and the regexp_mapper. + +.foreach.swift +************** +---- +include::../../examples/tutorial/foreach.swift[] +---- +************** + +If +~~ +Decisions can be made using 'if', like this: + +---- +sys::[sed -n '11,15p' ../../examples/tutorial/if.swift] +---- + +if.swift contains a simple example of this. Compile and run if.swift +and see that it outputs "good morning". Changing the morning variable +from true to false will cause the program to output "good afternoon". +Here is the contents of the full script: + +.if.swift +********* +----- +include::../../examples/tutorial/if.swift[] +----- +********* + +Sequential iteration +~~~~~~~~~~~~~~~~~~~~ + +A serial execution of instructions can be carried out using the sequential iteration construct. + +The following example demonstrates a simple application. Each step of +the iteration is a string representation of the byte count of the +previous step's output, with iteration terminating when the byte count +reaches zero. + +Here's the program: + +.sequential_iteration.swift +*************************** +---- +include::../../examples/tutorial/sequential_iteration.swift[] +---- +*************************** + +Echo is the standard unix echo utility. + +_wcl_ is our application code. It counts the number of bytes in the one +file and writes that count out to another, like this: + +---- +$ cat ../wcl +#!/bin/bash +echo -n $(wc -c < $1) > $2 + +$ echo -n hello > a +$ wcl a b +$ cat b +5 +---- + +Install the above wcl script somewhere and add a transformation catalog +(tc) entry for it (see an example below, note that you will need to change the path in third column to the path where wcl is located on your localhost). + +---- +localhost wcl /home/ketan/bin/wcl INSTALLED INTEL32::LINUX null +---- + +Then run the example program like this: + + +---- +$ swift iterate.swift +Swift svn swift-r3334 cog-r2752 + +RunID: 20100526-2259-gtlz8zf4 +Progress: +SwiftScript trace: extract int value , 16.0 +SwiftScript trace: extract int value , 2.0 +SwiftScript trace: extract int value , 1.0 +Final status: Finished successfully:4 +---- Deleted: trunk/docs/tutorial/runtime_features =================================================================== --- trunk/docs/tutorial/runtime_features 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/runtime_features 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,317 +0,0 @@ -Runtime features ----------------- - -Visualizing the workflow as a graph -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -When running a workflow, its possible to generate a provenance graph at -the same time: - - ------ -$ swift -pgraph graph.dot first.swift -$ dot -ograph.png -Tpng graph.dot ----- - -graph.png can then be viewed using your favourite image viewer. The dot application is part of the graphViz project. More information can be found at http://www.graphviz.org. - -Running on a remote site -~~~~~~~~~~~~~~~~~~~~~~~~ - -As configured by default, all jobs are run locally. In the previous -examples, we've invoked echo and tr executables from our SwiftScript -program. These have been run on the local system (the same computer on -which you ran swift). We can also make our computations run on a -remote resource. - -WARNING: This example is necessarily more vague than previous ones, -because it requires access to remote resources. You should ensure that -you can submit a job using the globus-job-run (or globusrun-ws) -command(s). - -We do not need to modify any SwiftScript code to run on another -resource. Instead, we must modify another catalog, the site catalog. -This catalog provides details of the location that applications will be -run, with the default settings referring to the local machine. We will -modify it to refer to a remote resource - the UC Teraport cluster. If -you are not a UC Teraport user, you should use details of a different -resource that you do have access to. - -The site catalog is located in etc/sites.xml and is a relatively -straightforward XML format file. We must modify each of the following -three settings: gridftp (which indicates how and where data can be -transferred to the remote resource), jobmanager (which indicates how -applications can be run on the remote resource) and workdirectory (which -indicates where working storage can be found on the remote resource). - - -Writing a mapper -~~~~~~~~~~~~~~~~ - -This section will introduce writing a custom mapper so that Swift is -able to access data files laid out in application-specific ways. - -An application-specific mapper must take the form of a Java class that -implements the http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/Mapper.html[Mapper -interface]. - -Usually you don't need to implement this interface directly, because -Swift provides a number of more concrete classes with some functionality -already implemented. - -The hierarchy of helper classes is: - -http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/Mapper.html[Mapper] - -This is the abstract interface for mappers in Swift. You must -implement methods to provide access to mapper properties, to map from a -SwiftScript dataset path (such as foo[1].bar) to a file name, to check -whether a file exists. None of the default Swift mappers implement this -interface directly - instead they use one of the following helper classes. - -http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/AbstractMapper.html[Abstract Mapper] - -This provides helper methods to manage mapper properties and to handle -existance checking. Examples of mappers which use this class are: -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.array_mapper[Array Mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.csv_mapper[CSV Mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.fixed_array_mapper[Fixed Array Mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.regexp_mapper[Regexp Mapper], -and http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.single_file_mapper[Single File Mapper]. - -http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/file/AbstractFileMapper.html[AbstractFileMapper] -This provides a helper class for mappers which select files based on -selecting files from a directory listing. It is necessary to write some -helper methods that are different from the above mapper methods. -Examples of mappers which use this class are: -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.simple_mapper[simple_mapper], -http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.filesys_mapper[filesys_mapper], -and the StructuredRegularExpressionMapper. - -In general, to write a mapper, choose either the AbstractMapper or the -AbstractFileMapper and extend those. If your mapper will generally -select the files it returns based on a directory listing and will -convert paths to filenames using some regular conversion (for example, -in the way that simple_mapper maps files in a directory that match a -particular pattern), then you should probably use the -AbstractFileMapper. If your mapper will produce a list of files in some -other way (for example, in the way that csv_mapper maps based on -filenames given in a CSV file rather than looking at which files are in -a directory), then you should probably use the AbstractMapper. - - -Writing a very basic mapper -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In this section, we will write a very basic (almost useless) mapper that -will map a SwiftScript dataset into a hardcoded file called -myfile.txt, like this: - - - Swift variable Filename - - var <-----------------------------> myfile.txt - -We should be able to use the mapper we write in a SwiftScript program -like this: - - ----- -type file; -file f ; ----- - -First we must choose a base class - AbstractMapper or -AbstractFileMapper. We aren't going to use a directory listing to decide -on our mapping - we are getting the mapping from some other source (in -fact, it will be hard coded). So we will use AbstractMapper. - -So now onto the source code. We must define a subclass of AbstractMapper -and implement several mapper methods: isStatic, existing, and map. These -methods are documented in the javadoc for the Mapper interface. - -Here is the code implementing this mapper. Put this in your source -vdsk directory, make a directory src/tutorial/|and put this file in -src/tutorial/MyFirstMapper.java. - -.MyFirstMapper.java -******************* ----- -include::../../examples/tutorial/MyFirstMapper.java[] ----- -******************* - -Now we need to inform the Swift engine about the existence of this -mapper. We do that by editing the MapperFactory class definition, in -src/org/griphyn/vdl/mapping/MapperFactory.java and adding a -registerMapper call alongside the existing registerMapper calls, like this: - - ----- -registerMapper("my_first_mapper", tutorial.MyFirstMapper.class); ----- - -The first parameter is the name of the mapper that will be used in -SwiftScript program. The second parameter is the new Mapper class that -we just wrote. - -Now rebuild Swift using the "ant redist" target. - -This new Swift build will be aware of your new mapper. We can test it -out with a hello world program: - -.my_first_mapper.swift -********************** ------ -include::../../examples/tutorial/my_first_mapper.swift[] ------ -********************** - -Run this program, and hopefully you will find the "hello" string has -been output into the hard coded output file myfile.txt: - - ----- -$ cat myfile.txt -hello ----- - -So that's a first very simple mapper implemented. Compare the source -code to the single_file_mapper in -http://www.ci.uchicago.edu/trac/swift/browser/trunk/src/org/griphyn/vdl/mapping/file/SingleFileMapper.java[SingleFileMapper.java]. -There is not much more code to the single_file_mapper - mostly code to -deal with the file parameter. - - -Starting and restarting -~~~~~~~~~~~~~~~~~~~~~~~ - -Now we're going to try out the restart capabilities of Swift. We will -make a workflow that will deliberately fail, and then we will fix the -problem so that Swift can continue with the workflow. - -First we have the program in working form, restart.swift. - -.restart.swift -************** ----- -include::../../examples/tutorial/restart.swift[] ----- -************** - -We must define some transformation catalog entries: - ----- -localhost touch /usr/bin/touch INSTALLED INTEL32::LINUX null -localhost broken /bin/true INSTALLED INTEL32::LINUX null ----- - -Now we can run the program: - ----- -$ swift restart.swift -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1119-3kgzzi15 -Progress: -Final status: Finished successfully:4 ----- - -Four jobs run - touch, echo, broken and a final echo. (note that broken -isn't actually broken yet). - -Now we will break the broken job and see what happens. Replace the -definition in tc.data for broken with this: - ----- -localhost broken /bin/false INSTALLED INTEL32::LINUX null ----- - -Now when we run the workflow, the broken task fails: - ----- -$ swift restart.swift - -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1121-tssdcljg -Progress: -Progress: Stage in:1 Finished successfully:2 -Execution failed: - Exception in broken: -Arguments: [process] -Host: localhost -Directory: restart-20100526-1121-tssdcljg/jobs/1/broken-1i6ufisj -stderr.txt: -stdout.txt: ----- - -From the output we can see that touch and the first echo completed, but -then broken failed and so swift did not attempt to execute the final echo. - -There will be a restart log with the same name as the RunID: - - ----- -$ ls *20100526-1121-tssdcljg*rlog -restart-20100526-1121-tssdcljg.0.rlog ----- - -This restart log contains enough information for swift to know which -parts of the workflow were executed successfully. - -We can try to rerun it immediately, like this: - - ----- -$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift - -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1125-7yx0zi6d -Progress: -Execution failed: - Exception in broken: -Arguments: [process] -Host: localhost -Directory: restart-20100526-1125-7yx0zi6d/jobs/m/broken-msn1gisj -stderr.txt: -stdout.txt: - -Caused by: - Exit code 1 ----- - -Swift tried to resume the workflow by executing "broken" again. It did -not try to run the touch or first echo jobs, because the restart log -says that they do not need to be executed again. - -Broken failed again, leaving the original restart log in place. - -Now we will fix the problem with "broken" by restoring the original -tc.data line that works. - -Remove the existing "broken" line and replace it with the successful -tc.data entry above: - - ----- -localhost broken /bin/true INSTALLED INTEL32::LINUX null ----- - -Now run again: - - ----- -$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift - -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1128-a2gfuxhg -Progress: -Final status: Initializing:2 Finished successfully:2 ----- - -Swift tries to run "broken" again. This time it works, and so Swift -continues on to execute the final piece of the workflow as if nothing -had ever gone wrong. Copied: trunk/docs/tutorial/runtime_features (from rev 5078, branches/release-0.93/docs/tutorial/runtime_features) =================================================================== --- trunk/docs/tutorial/runtime_features (rev 0) +++ trunk/docs/tutorial/runtime_features 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,160 @@ +Runtime features +---------------- + +Visualizing the workflow as a graph +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When running a workflow, its possible to generate a provenance graph at +the same time: + + +----- +$ swift -pgraph graph.dot first.swift +$ dot -ograph.png -Tpng graph.dot +---- + +graph.png can then be viewed using your favourite image viewer. The dot application is part of the graphViz project. More information can be found at http://www.graphviz.org. + +Running on a remote site +~~~~~~~~~~~~~~~~~~~~~~~~ + +As configured by default, all jobs are run locally. In the previous +examples, we've invoked echo and tr executables from our SwiftScript +program. These have been run on the local system (the same computer on +which you ran swift). We can also make our computations run on a +remote resource. For more information on running Swift on a remote site +please see the http://www.ci.uchicago.edu/swift/guides/release-0.93/siteguide/siteguide.html[Site Configuration Guide]. + + +Starting and restarting +~~~~~~~~~~~~~~~~~~~~~~~ + +Now we're going to try out the restart capabilities of Swift. We will +make a workflow that will deliberately fail, and then we will fix the +problem so that Swift can continue with the workflow. + +First we have the program in working form, restart.swift. + +.restart.swift +************** +---- +include::../../examples/tutorial/restart.swift[] +---- +************** + +We must define some transformation catalog entries: + +---- +localhost touch /usr/bin/touch INSTALLED INTEL32::LINUX null +localhost broken /bin/true INSTALLED INTEL32::LINUX null +---- + +Now we can run the program: + +---- +$ swift restart.swift +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1119-3kgzzi15 +Progress: +Final status: Finished successfully:4 +---- + +Four jobs run - touch, echo, broken and a final echo. (note that broken +isn't actually broken yet). + +Now we will break the broken job and see what happens. Replace the +definition in tc.data for broken with this: + +---- +localhost broken /bin/false INSTALLED INTEL32::LINUX null +---- + +Now when we run the workflow, the broken task fails: + +---- +$ swift restart.swift + +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1121-tssdcljg +Progress: +Progress: Stage in:1 Finished successfully:2 +Execution failed: + Exception in broken: +Arguments: [process] +Host: localhost +Directory: restart-20100526-1121-tssdcljg/jobs/1/broken-1i6ufisj +stderr.txt: +stdout.txt: +---- + +From the output we can see that touch and the first echo completed, but +then broken failed and so swift did not attempt to execute the final echo. + +There will be a restart log with the same name as the RunID: + + +---- +$ ls *20100526-1121-tssdcljg*rlog +restart-20100526-1121-tssdcljg.0.rlog +---- + +This restart log contains enough information for swift to know which +parts of the workflow were executed successfully. + +We can try to rerun it immediately, like this: + + +---- +$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift + +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1125-7yx0zi6d +Progress: +Execution failed: + Exception in broken: +Arguments: [process] +Host: localhost +Directory: restart-20100526-1125-7yx0zi6d/jobs/m/broken-msn1gisj +stderr.txt: +stdout.txt: + +Caused by: + Exit code 1 +---- + +Swift tried to resume the workflow by executing "broken" again. It did +not try to run the touch or first echo jobs, because the restart log +says that they do not need to be executed again. + +Broken failed again, leaving the original restart log in place. + +Now we will fix the problem with "broken" by restoring the original +tc.data line that works. + +Remove the existing "broken" line and replace it with the successful +tc.data entry above: + + +---- +localhost broken /bin/true INSTALLED INTEL32::LINUX null +---- + +Now run again: + + +---- +$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift + +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1128-a2gfuxhg +Progress: +Final status: Initializing:2 Finished successfully:2 +---- + +Swift tries to run "broken" again. This time it works, and so Swift +continues on to execute the final piece of the workflow as if nothing +had ever gone wrong. Deleted: trunk/docs/tutorial/tutorial.txt =================================================================== --- trunk/docs/tutorial/tutorial.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/tutorial/tutorial.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,17 +0,0 @@ -A Swift Tutorial -================ - -:toc: -:icons: -:website: http://www.ci.uchicago.edu/swift/guides/tutorial.php -:numbered: - -include::introduction[] - -include::hello_world[] - -include::language_features[] - -include::runtime_features[] - -include::bits[] Copied: trunk/docs/tutorial/tutorial.txt (from rev 5078, branches/release-0.93/docs/tutorial/tutorial.txt) =================================================================== --- trunk/docs/tutorial/tutorial.txt (rev 0) +++ trunk/docs/tutorial/tutorial.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,17 @@ +A Swift Tutorial +================ + +:toc: +:icons: +:website: http://www.ci.uchicago.edu/swift/guides/tutorial.php +:numbered: + +include::introduction[] + +include::hello_world[] + +include::language_features[] + +include::runtime_features[] + +include::bits[] Modified: trunk/docs/userguide/cdm =================================================================== --- trunk/docs/userguide/cdm 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/userguide/cdm 2011-09-07 16:32:23 UTC (rev 5079) @@ -2,202 +2,202 @@ -------------------------- Overview -~~~~~~~~ -. The user specifies a CDM policy in a file, customarily fs.data. -. fs.data is given to Swift on the command line. -. The Swift data module (org.globus.swift.data) is informed of the CDM policy. -. At job launch time, the VDL Karajan code queries the CDM policy, - .. altering the file staging phase, and - .. sending fs.data to the compute site. -. At job run time, the Swift wrapper script - .. consults a Perl script to obtain policy, and - .. uses wrapper extensions to modify data movement. -. Similarly, stage out can be changed. - - +~~~~~~~~ +. The user specifies a CDM policy in a file, customarily fs.data. +. fs.data is given to Swift on the command line. +. The Swift data module (org.globus.swift.data) is informed of the CDM policy. +. At job launch time, the VDL Karajan code queries the CDM policy, + .. altering the file staging phase, and + .. sending fs.data to the compute site. +. At job run time, the Swift wrapper script + .. consults a Perl script to obtain policy, and + .. uses wrapper extensions to modify data movement. +. Similarly, stage out can be changed. + + .Command line +----- +$ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift ----- -$ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift ------ - + CDM policy file format ~~~~~~~~~~~~~~~~~~~~~~ .Example +----- +# Describe CDM for my job +property GATHER_LIMIT 1 +rule .*input.txt DIRECT /gpfs/homes/wozniak/data +rule .*xfile*.data BROADCAST /dev/shm +rule .* DEFAULT ----- -# Describe CDM for my job -property GATHER_LIMIT 1 -rule .*input.txt DIRECT /gpfs/homes/wozniak/data -rule .*xfile*.data BROADCAST /dev/shm -rule .* DEFAULT ------ - -The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. - - + +The lines contain: + +. A directive, either rule or property +. A rule has: + .. A regular expression + .. A policy token + .. Additional policy-specific arguments +. A property has + .. A policy property token + .. The token value +. Comments with # . +. Blank lines are ignored. + + .Notes - -. The policy file is used as a lookup database by Swift and Perl methods. -. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. -. If the lookup does not succeed, the result is DEFAULT. - . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . - - + +. The policy file is used as a lookup database by Swift and Perl methods. +. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. +. If the lookup does not succeed, the result is DEFAULT. + . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . + + Policy Descriptions ~~~~~~~~~~~~~~~~~~~ -.Default - -* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. - - +.Default + +* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. + + .Broadcast ------ -rule .*xfile*.data BROADCAST /dev/shm ------ -* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. -* On the BG/P, this will make use of the f2cn tool. -* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. - - +----- +rule .*xfile*.data BROADCAST /dev/shm +----- +* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. +* On the BG/P, this will make use of the f2cn tool. +* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. + + .Direct ------ -rule .*input.txt DIRECT /gpfs/scratch/wozniak/ ------ -* Allows for direct I/O to the parallel FS without staging. -* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. -* The output files matching the pattern will be stored in the given directory, with links in the job directory. -* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . - - -.Local ------ -rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K ------ -* Allows for client-directed input copy to the compute node. -* The user may specify cp or dd as the input transfer program. -* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. -* Argument list: [tool] [GFS directory] [tool arguments]* - - +----- +rule .*input.txt DIRECT /gpfs/scratch/wozniak/ +----- +* Allows for direct I/O to the parallel FS without staging. +* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. +* The output files matching the pattern will be stored in the given directory, with links in the job directory. +* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . + + +.Local +----- +rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K +----- +* Allows for client-directed input copy to the compute node. +* The user may specify cp or dd as the input transfer program. +* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. +* Argument list: [tool] [GFS directory] [tool arguments]* + + .Gather +----- +property GATHER_LIMIT 500000000 # 500 MB +property GATHER_DIR /dev/shm/gather +property GATHER_TARGET /gpfs/wozniak/data/gather_target +rule .*.output.txt GATHER ----- -property GATHER_LIMIT 500000000 # 500 MB -property GATHER_DIR /dev/shm/gather -property GATHER_TARGET /gpfs/wozniak/data/gather_target -rule .*.output.txt GATHER ------ - -* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. -* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. -* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. -* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. -* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . -* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. - + +* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. +* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. +* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. +* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. +* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . +* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. + .Summary - -. Files created by application -. Acquire lock -. Move files to cache -. Check cache size -. If limit exceeded, move all cache files to outbox -. Release lock -. If limit was exceeded, stream outbox as tarball to target - + +. Files created by application +. Acquire lock +. Move files to cache +. Check cache size +. If limit exceeded, move all cache files to outbox +. Release lock +. If limit was exceeded, stream outbox as tarball to target + .Notes - -* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . -* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . - - + +* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . +* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . + + VDL/Karajan processing ~~~~~~~~~~~~~~~~~~~~~~ -. CDM functions are available in Karajan via the cdm namespace. -. These functions are defined in org.globus.swift.data.Query . -. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. - - -Swift wrapper CDM routines +. CDM functions are available in Karajan via the cdm namespace. +. These functions are defined in org.globus.swift.data.Query . +. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. + + +Swift wrapper CDM routines ~~~~~~~~~~~~~~~~~~~~~~~~~~ -. The cdm.pl script is shipped to the compute node if CDM is enabled. -. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). -. The cdm_action() shell function handles CDM methods, typically just producing a link. - - -Test cases +. The cdm.pl script is shipped to the compute node if CDM is enabled. +. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). +. The cdm_action() shell function handles CDM methods, typically just producing a link. + + +Test cases ~~~~~~~~~~ - -. Simple test cases are in: - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs -. Do a: - mkdir cdm - cd cdm - svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts -. In cdm-direct, run: - source ./setup.sh local local local -. Run workflow: - swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift -. Note that staging is skipped for input.txt - policy: file://localhost/input.txt : DIRECT - FILE_STAGE_IN_START file=input.txt ... - FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT - FILE_STAGE_IN_END file=input.txt ... -. In the wrapper output, the input file is handled by CDM functionality: - Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS - CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt - Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE -. all-pairs is quite similar but uses more policies. - - + +. Simple test cases are in: + https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and + https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs +. Do a: + mkdir cdm + cd cdm + svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts +. In cdm-direct, run: + source ./setup.sh local local local +. Run workflow: + swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift +. Note that staging is skipped for input.txt + policy: file://localhost/input.txt : DIRECT + FILE_STAGE_IN_START file=input.txt ... + FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT + FILE_STAGE_IN_END file=input.txt ... +. In the wrapper output, the input file is handled by CDM functionality: + Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS + CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct + CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct + CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt + Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE +. all-pairs is quite similar but uses more policies. + + PTMap case -^^^^^^^^^^ -. Start with vanilla PTMap: - .. cd cdm - .. mkdir apps - .. cd apps - .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap -. Source setup.sh -. Use start.sh, which - .. applies CDM policy from fs.local.data - - +^^^^^^^^^^ +. Start with vanilla PTMap: + .. cd cdm + .. mkdir apps + .. cd apps + .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap +. Source setup.sh +. Use start.sh, which + .. applies CDM policy from fs.local.data + + CDM site-aware policy file format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + Example ----- -#Describe CDM for my job -#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior -property GATHER_LIMIT 1 -rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data -rule cluster1 .*xfile*.data BROADCAST /dev/shm -rule ANYWHERE .* DEFAULT +#Describe CDM for my job +#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior +property GATHER_LIMIT 1 +rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data +rule cluster1 .*xfile*.data BROADCAST /dev/shm +rule ANYWHERE .* DEFAULT ----- - + The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression for site matchin - .. A regular expression for filename matching - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. + +. A directive, either rule or property +. A rule has: + .. A regular expression for site matchin + .. A regular expression for filename matching + .. A policy token + .. Additional policy-specific arguments +. A property has + .. A policy property token + .. The token value +. Comments with # . +. Blank lines are ignored. Modified: trunk/docs/userguide/coasters =================================================================== --- trunk/docs/userguide/coasters 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/userguide/coasters 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,7 +1,5 @@ Coasters -------- -Coasters were introduced in Swift v0.6 as an experimental feature. - In many applications, Swift performance can be greatly enhanced by the use of CoG coasters. CoG coasters provide a low-overhead job submission and file transfer mechanism suited for the execution of short jobs (on Copied: trunk/docs/userguide/log-processing (from rev 5078, branches/release-0.93/docs/userguide/log-processing) =================================================================== --- trunk/docs/userguide/log-processing (rev 0) +++ trunk/docs/userguide/log-processing 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,104 @@ + +Log Processing +-------------- + +To properly generate log plots, you must enable VDL/Karajan logging. +TODO:How? + + +You should check the scripts that you intend to use to determine +what log lines they require and ensure that you are generating +those lines via log4j.properties + +Make sure log4.properties contains: +-------------------------------------- +log4j.logger.swift=DEBUG +log4j.logger.org.globus.cog.abstraction.coaster.service.job.manager.Cpu=DEBUG +log4j.logger.org.globus.cog.abstraction.coaster.service.job.manager.Block=DEBUG +-------------------------------------- +TODO: Does it work for coasters-based runs only? + +Normalize event times in the log to the run start time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Generate the log, assuming the log is titled +swift-run.log+ + +------------------------------------------ +./normalize-log.pl file.contains.start.time swift-run.log > swift-run.norm +------------------------------------------ +TODO:In what format does the start time be in 'file.contains.start.time' + + +Make a basic load plot from Coasters Cpu log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. +. Build up a load data file: ++ +------------------------------------------ +./cpu-job-load.pl < swift-run.norm > load.data +------------------------------------------ +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s load.cfg load.eps load.data +------------------------------------------ +Note: Th load.cfg is available from swift/libexec/log-processing/ + + +Make a basic job completion plot from Coasters Cpu log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. + +. Build up a completed data file: ++ +------------------------------------------ +./cpu-job-completed.pl < swift-run.norm > completed.data +------------------------------------------ + +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s completed.cfg completed.eps completed.data +------------------------------------------ + +Make a basic Block allocation plot from Coasters Block log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. + +. Build up a block allocation data file: ++ +------------------------------------------ +./block-level.pl < swift-run.norm > blocks.data +------------------------------------------ + +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s blocks.{cfg,eps,data} +------------------------------------------ + +Make a job runtime distribution plot from Coasters Cpu log lines +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +. Normalize the log. + +. Build up a job runtime file: ++ +------------------------------------------ +./extract-times.pl < swift-run.norm > times.data +------------------------------------------ + +. Put the job runtimes into 1-second buckets: ++ +------------------------------------------ +./ buckets.pl 1 times.data > buckets.data +------------------------------------------ + +. Plot with the JFreeChart-based plotter in usertools/plotter: ++ +------------------------------------------ +swift_plotter.zsh -s buckets.cfg buckets.eps buckets.data +------------------------------------------ Modified: trunk/docs/userguide/userguide.txt =================================================================== --- trunk/docs/userguide/userguide.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/userguide/userguide.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -37,3 +37,5 @@ include::howto_tips[] include::cdm[] + +include::log-processing[] Deleted: trunk/docs/utils/gensites.txt =================================================================== --- branches/release-0.93/docs/utils/gensites.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/utils/gensites.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -1,235 +0,0 @@ -Gensites -========== -:toc: -:icons: -:website: http://www.ci.uchicago.edu/swift -:numbered: - -Overview --------- -To simplify this configuration process, versions of Swift starting with -0.92 include a utility called gensites. The gensites command is used -to generate a sites.xml file for running a swift workflow on a given -site. It accomplishes this by using a series of templates. The templates -used by gensites are the same templates used for internal testing, so -they are likely up to date and known to work on a given site. - - -Viewing All Available Site Templates ------------------------------------- -To view a list of all available templates, run the following command: - ------ -$ gensites -T ------ - -You should see output similar to this: ------ -intrepid -local -local-pbs-coasters -pads -queenbee -sge-local -ssh -ssh-pbs-coasters -surveyor ------ - -You will notice that the templates can be specific to a particular set -of machines like Intrepid and Queenbee, or they may be more general and -aim to work across a variety of machines, as in the case of -local-pbs-coasters. Gensites will look in three directories for available -templates: your current directory, $SWIFT_HOME/etc/sites and $HOME/.swift/sites. - -Listing the Template --------------------- -To view the contents of a template, type: - ------ -$ gensites -l templatename ------ - -Running this command will print some information about the template and give -you an idea of what settings you will need to specify. You should see -something like this: - ------ -Description: Template for Intrepid. More information about this system can be found at http://www.alcf.anl.gov/support/gettingstarted/index.php -Required Tokens: host work project queue ------ - -The required tokens are required to properly use the templates. These are placeholder -values you will need to specify in the -following steps. - -Providing Site Specific Values ------------------------------- - -The gensites script needs to know how to replace the placeholder values -in the template. This is done by configuring the swift.properties file. -Gensites will first look for a swift.properties file in the current -directory. If it does not exist, it will next look in $HOME/.swift. - -To add site specific values to swift.properties, add a line in the -follow format: - ------ -#site templatename setting=value ------ - -Continuing the previous example, here is what you could add to -swift.properties to replace the values of project, queue and work for -the surveyor template: - ------ -#site surveyor project=MyProject -#site surveyor queue=MyQueue -#site surveyor work=/path/to/workdir ------ - -Now, running the command 'gensites surveyor' will produce the following -valid configuration file: - ------ - - - - - MyProject - MyQueue - zeptoos - true - 21 - 10000 - 1 - DEBUG - 1 - 900 - 64 - 64 - /path/to/workdir - - ------ - -Generating Application Configurations with Gensites ---------------------------------------------------- -Gensites can also be used to create a valid application catalog, commonly -called tc.data. Here are some examples of how to specify applications within -your swift.properties file: - ------ -#app intrepid echo=/usr/bin/echo ------ - -This first example shows a site specific application. The #app definition -tells gensites this is related to an application rather than a #site -definition. In the second part, echo=/usr/bin/echo, the left hand side -is the name of the application that will be called from within swift. The -right hand site is the path name which points to the binary. - ------ -#app intrepid echo=$HOME/bin/echo ------ - -Environment variables will be interpreted and converted to full path names -for Swift. - ------ -#app intrepid echo=bin/echo ------ - -Gensites can take relative paths (relative to your current directory) and -translate them to full path names for Swift. - -WARNING: Running gensites with #app definitions will replace any file -called tc.data in your current directory. If a file called tc.data exists, -it will be renamed to tc.data.old. If you run gensites twice, the original -contents of your tc.data will be lost. Please either rename your tc file -or copy to a different location. - -Running Swift With the New Configuration ----------------------------------------- - -Now that the gensites is configured and producing a valid configuration -file, Swift needs to know to use it. The first step is to create a -unique config file based on the preferences you specified. - ------ -$ gensites surveyor > myconfig.xml ------ - -This will send the output of gensites to myconfig.xml. This example will -use a swift.properties location in the default directories (your current -directory, ~/.swift/swift.properties). To specify a different location -to the swift.properties, use: - ------ -$ gensites surveyor -p myswift.properties > myconfig.xml ------ - -Next, provide the configuration filename to swift: ------ -$ swift -sites.file myconfig.xml myscript.swift ------ - -Alternatively, if you have specified applications, be sure to load that into -Swift ------ -$ swift -sites.file myconfig.xml -tc.file tc.data mycript.swift ------ - -Providing Default Values for All Templates ------------------------------------------- -It is also possible to specify a default value for a setting, regardless -of template you use. If you want to set your queue to default to "fast" -across all templates, you can do this by omitting the template name. -Consider the following swift.properties: - ------ -#site queue=fast -#site surveyor project=MyProject -#site surveyor work=/path/to/workdir ------ -By omitting the template name, the default value for queue on surveyor -(and any other template you use) will be set to "fast". One thing to -keep in mind when setting default values is that order matters. Be sure -to set your default values first before setting template specific values. - -Just like the #site definitions, when a site name is not specified, an app -will be created for every site that is defined in your template. ------ -#app echo=/bin/echo ------ - -More Help ---------- -The gensites script provides additional options not discussed here, such -as using templates and swift.properties in non-standard directories. For -more information, run gensites -h. Here is a full list of all options -available. - ------ -$ gensites -help - - usage: gensites template [-p properties.file] [-L template_directory] [-h] [-T] [-l] - - template Name of template to use - -p properties.file Specify a swift.properties to use - -L template_directory Specify a non-standard template directory - -T List all templates available - -h Help / usage information - -l List the contents of a specific template - - Examples: - - Create a site configuration file for sites.xml using default properties.file in current directory - $ gensites pads > sites.xml - - Use a specific properties file for a site - $ gensites -p sites.properties pads > sites.xml - - Specify a non-standard directory where templates are located - $ gensites -L template.dir pads > sites.xml ------ Copied: trunk/docs/utils/gensites.txt (from rev 5078, branches/release-0.93/docs/utils/gensites.txt) =================================================================== --- trunk/docs/utils/gensites.txt (rev 0) +++ trunk/docs/utils/gensites.txt 2011-09-07 16:32:23 UTC (rev 5079) @@ -0,0 +1,235 @@ +Gensites +========== +:toc: +:icons: +:website: http://www.ci.uchicago.edu/swift +:numbered: + +Overview +-------- +To simplify this configuration process, versions of Swift starting with +0.92 include a utility called gensites. The gensites command is used +to generate a sites.xml file for running a swift workflow on a given +site. It accomplishes this by using a series of templates. The templates +used by gensites are the same templates used for internal testing, so +they are likely up to date and known to work on a given site. + + +Viewing All Available Site Templates +------------------------------------ +To view a list of all available templates, run the following command: + +----- +$ gensites -T +----- + +You should see output similar to this: +----- +intrepid +local +local-pbs-coasters +pads +queenbee +sge-local +ssh +ssh-pbs-coasters +surveyor +----- + +You will notice that the templates can be specific to a particular set +of machines like Intrepid and Queenbee, or they may be more general and +aim to work across a variety of machines, as in the case of +local-pbs-coasters. Gensites will look in three directories for available +templates: your current directory, $SWIFT_HOME/etc/sites and $HOME/.swift/sites. + +Listing the Template +-------------------- +To view the contents of a template, type: + +----- +$ gensites -l templatename +----- + +Running this command will print some information about the template and give +you an idea of what settings you will need to specify. You should see +something like this: + +----- +Description: Template for Intrepid. More information about this system can be found at http://www.alcf.anl.gov/support/gettingstarted/index.php +Required Tokens: host work project queue +----- + +The required tokens are required to properly use the templates. These are placeholder +values you will need to specify in the +following steps. + +Providing Site Specific Values +------------------------------ + +The gensites script needs to know how to replace the placeholder values +in the template. This is done by configuring the swift.properties file. +Gensites will first look for a swift.properties file in the current +directory. If it does not exist, it will next look in $HOME/.swift. + +To add site specific values to swift.properties, add a line in the +follow format: + +----- +#site templatename setting=value +----- + +Continuing the previous example, here is what you could add to +swift.properties to replace the values of project, queue and work for +the surveyor template: + +----- +#site surveyor project=MyProject +#site surveyor queue=MyQueue +#site surveyor work=/path/to/workdir +----- + +Now, running the command 'gensites surveyor' will produce the following +valid configuration file: + +----- + + + + + MyProject + MyQueue + zeptoos + true + 21 + 10000 + 1 + DEBUG + 1 + 900 + 64 + 64 + /path/to/workdir + + +----- + +Generating Application Configurations with Gensites +--------------------------------------------------- +Gensites can also be used to create a valid application catalog, commonly +called tc.data. Here are some examples of how to specify applications within +your swift.properties file: + +----- +#app intrepid echo=/usr/bin/echo +----- + +This first example shows a site specific application. The #app definition +tells gensites this is related to an application rather than a #site +definition. In the second part, echo=/usr/bin/echo, the left hand side +is the name of the application that will be called from within swift. The +right hand site is the path name which points to the binary. + +----- +#app intrepid echo=$HOME/bin/echo +----- + +Environment variables will be interpreted and converted to full path names +for Swift. + +----- +#app intrepid echo=bin/echo +----- + +Gensites can take relative paths (relative to your current directory) and +translate them to full path names for Swift. + +WARNING: Running gensites with #app definitions will replace any file +called tc.data in your current directory. If a file called tc.data exists, +it will be renamed to tc.data.old. If you run gensites twice, the original +contents of your tc.data will be lost. Please either rename your tc file +or copy to a different location. + +Running Swift With the New Configuration +---------------------------------------- + +Now that the gensites is configured and producing a valid configuration +file, Swift needs to know to use it. The first step is to create a +unique config file based on the preferences you specified. + +----- +$ gensites surveyor > myconfig.xml +----- + +This will send the output of gensites to myconfig.xml. This example will +use a swift.properties location in the default directories (your current +directory, ~/.swift/swift.properties). To specify a different location +to the swift.properties, use: + +----- +$ gensites surveyor -p myswift.properties > myconfig.xml +----- + +Next, provide the configuration filename to swift: +----- +$ swift -sites.file myconfig.xml myscript.swift +----- + +Alternatively, if you have specified applications, be sure to load that into +Swift +----- +$ swift -sites.file myconfig.xml -tc.file tc.data mycript.swift +----- + +Providing Default Values for All Templates +------------------------------------------ +It is also possible to specify a default value for a setting, regardless +of template you use. If you want to set your queue to default to "fast" +across all templates, you can do this by omitting the template name. +Consider the following swift.properties: + +----- +#site queue=fast +#site surveyor project=MyProject +#site surveyor work=/path/to/workdir +----- +By omitting the template name, the default value for queue on surveyor +(and any other template you use) will be set to "fast". One thing to +keep in mind when setting default values is that order matters. Be sure +to set your default values first before setting template specific values. + +Just like the #site definitions, when a site name is not specified, an app +will be created for every site that is defined in your template. +----- +#app echo=/bin/echo +----- + +More Help +--------- +The gensites script provides additional options not discussed here, such +as using templates and swift.properties in non-standard directories. For +more information, run gensites -h. Here is a full list of all options +available. + +----- +$ gensites -help + + usage: gensites template [-p properties.file] [-L template_directory] [-h] [-T] [-l] + + template Name of template to use + -p properties.file Specify a swift.properties to use + -L template_directory Specify a non-standard template directory + -T List all templates available + -h Help / usage information + -l List the contents of a specific template + + Examples: + + Create a site configuration file for sites.xml using default properties.file in current directory + $ gensites pads > sites.xml + + Use a specific properties file for a site + $ gensites -p sites.properties pads > sites.xml + + Specify a non-standard directory where templates are located + $ gensites -L template.dir pads > sites.xml +----- From davidk at ci.uchicago.edu Wed Sep 7 19:53:13 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Thu, 08 Sep 2011 00:53:13 -0000 Subject: [Swift-commit] r5086 - in trunk/docs: . cookbook siteguide stylesheets tutorial userguide utils Message-ID: <20110908005306.AA1039CC9F@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-07 19:53:06 -0500 (Wed, 07 Sep 2011) New Revision: 5086 Added: trunk/docs/README trunk/docs/cookbook/cookbook-asciidoc.txt trunk/docs/print_link.sh trunk/docs/siteguide/ trunk/docs/siteguide/beagle trunk/docs/siteguide/futuregrid trunk/docs/siteguide/grid trunk/docs/siteguide/images trunk/docs/siteguide/pads trunk/docs/siteguide/siteguide.txt trunk/docs/stylesheets/ trunk/docs/stylesheets/asciidoc.css trunk/docs/tutorial/abstract trunk/docs/tutorial/bits trunk/docs/tutorial/hello_world trunk/docs/tutorial/images/ trunk/docs/tutorial/introduction trunk/docs/tutorial/language_features trunk/docs/tutorial/runtime_features trunk/docs/tutorial/tutorial.txt trunk/docs/utils/ trunk/docs/utils/gensites.txt Removed: trunk/docs/README trunk/docs/cookbook/cookbook.txt trunk/docs/documentation/ trunk/docs/print_link.sh trunk/docs/quickstart/ trunk/docs/siteguide/ trunk/docs/siteguide/beagle trunk/docs/siteguide/futuregrid trunk/docs/siteguide/grid trunk/docs/siteguide/images trunk/docs/siteguide/pads trunk/docs/siteguide/siteguide.txt trunk/docs/stylesheets/ trunk/docs/stylesheets/asciidoc.css trunk/docs/tutorial/abstract trunk/docs/tutorial/bits trunk/docs/tutorial/hello_world trunk/docs/tutorial/images/ trunk/docs/tutorial/introduction trunk/docs/tutorial/language_features trunk/docs/tutorial/runtime_features trunk/docs/tutorial/tutorial.txt trunk/docs/userguide/log-processing trunk/docs/utils/ trunk/docs/utils/gensites.txt Modified: trunk/docs/ trunk/docs/cookbook/ trunk/docs/tutorial/ trunk/docs/userguide/cdm trunk/docs/userguide/coasters trunk/docs/userguide/userguide.txt Log: Doc merge fixes Property changes on: trunk/docs ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/release-0.93/docs:4761-5078 Deleted: trunk/docs/README =================================================================== --- trunk/docs/README 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/README 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,11 +0,0 @@ -Prerequisites to building documentation: - -* asciidoc and a2x (http://www.methods.co.nz/asciidoc) -* dblatex (http://dblatex.sourceforge.net) -* source-highlight (http://www.gnu.org/software/src-highlite) - -For CI users, compiled versions of these packages can be found in ~davidk. - -To build, run: - -build_docs.sh Copied: trunk/docs/README (from rev 5078, trunk/docs/README) =================================================================== --- trunk/docs/README (rev 0) +++ trunk/docs/README 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,11 @@ +Prerequisites to building documentation: + +* asciidoc and a2x (http://www.methods.co.nz/asciidoc) +* dblatex (http://dblatex.sourceforge.net) +* source-highlight (http://www.gnu.org/software/src-highlite) + +For CI users, compiled versions of these packages can be found in ~davidk. + +To build, run: + +build_docs.sh Property changes on: trunk/docs/cookbook ___________________________________________________________________ Added: svn:ignore + cookbook-asciidoc.html cookbook-asciidoc.pdf Copied: trunk/docs/cookbook/cookbook-asciidoc.txt (from rev 5078, trunk/docs/cookbook/cookbook-asciidoc.txt) =================================================================== --- trunk/docs/cookbook/cookbook-asciidoc.txt (rev 0) +++ trunk/docs/cookbook/cookbook-asciidoc.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,20 @@ +// To compile use: asciidoc -a toc -n cookbook-asciidoc.txt + +:numbered: + +Swift Cookbook +============== +Swift team +v0.92, March 2011 + +include::overview[] + +include::swift_basics[] + +include::coasters[] + +include::diverse_infrastructures[] + +include::debugging_swift[] + +include::log_processing[] Deleted: trunk/docs/cookbook/cookbook.txt =================================================================== --- trunk/docs/cookbook/cookbook.txt 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/cookbook/cookbook.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,16 +0,0 @@ -Swift Cookbook -============== -Swift team -v0.92, March 2011 - -include::overview[] - -include::swift_basics[] - -include::coasters[] - -include::diverse_infrastructures[] - -include::debugging_swift[] - -include::log_processing[] Deleted: trunk/docs/print_link.sh =================================================================== --- trunk/docs/print_link.sh 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/print_link.sh 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,21 +0,0 @@ -#!/bin/bash - -# This script is referenced by asciidoc to point to the correct versions of documentation based on version information -# print_info.sh -# This will print the correct URL based on SVN version info - -pushd ../.. > /dev/null 2>&1 -VERSION=`svn info |grep URL|awk -F / '{print $NF}'` -popd > /dev/null 2>&1 - -# Parse command line arguments -case "$1" in - userguide) - echo http://www.ci.uchicago.edu/swift/guides/$VERSION/userguide/userguide.html[Swift User Guide] - ;; - tutorial) - echo http://www.ci.uchicago.edu/swift/guides/$VERSION/tutorial/tutorial.html[Swift Tutorial] - ;; - *) echo http://www.ci.uchicago.edu/swift/docs/index.php[Swift Documentation] - ;; -esac Copied: trunk/docs/print_link.sh (from rev 5078, trunk/docs/print_link.sh) =================================================================== --- trunk/docs/print_link.sh (rev 0) +++ trunk/docs/print_link.sh 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,21 @@ +#!/bin/bash + +# This script is referenced by asciidoc to point to the correct versions of documentation based on version information +# print_info.sh +# This will print the correct URL based on SVN version info + +pushd ../.. > /dev/null 2>&1 +VERSION=`svn info |grep URL|awk -F / '{print $NF}'` +popd > /dev/null 2>&1 + +# Parse command line arguments +case "$1" in + userguide) + echo http://www.ci.uchicago.edu/swift/guides/$VERSION/userguide/userguide.html[Swift User Guide] + ;; + tutorial) + echo http://www.ci.uchicago.edu/swift/guides/$VERSION/tutorial/tutorial.html[Swift Tutorial] + ;; + *) echo http://www.ci.uchicago.edu/swift/docs/index.php[Swift Documentation] + ;; +esac Property changes on: trunk/docs/siteguide ___________________________________________________________________ Added: svn:ignore + siteguide.html siteguide.pdf Deleted: trunk/docs/siteguide/beagle =================================================================== --- trunk/docs/siteguide/beagle 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/beagle 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,49 +0,0 @@ -Beagle ------- - -Requesting Access -~~~~~~~~~~~~~~~~~ -If you do not already have a Computation Institute account, you can request -one at https://www.ci.uchicago.edu/accounts/. This page will give you a list -of resources you can request access to. -You already have an existing CI account, but do not have access to Beagle, -send an email to support at ci.uchicago.edu to request access. - -Connecting to a login node -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have account, you should be able to access a Beagle login -node with the following command: - ------ -ssh yourusername at login.beagle.ci.uchicago.edu ------ - -Follow the steps outlined below to get started with Swift on Beagle: - -*step 1.* Load the Swift module on Beagle as follows: +module load swift+ - -*step 2.* Create and change to a directory where your Swift related work will -stay. (say, +mkdir swift-lab+, followed by, +cd swift-lab+) - -*step 3.* To get started with a simple example running +/bin/cat+ to read an -input file +data.txt+ and write to an output file +f.nnn.out+, copy the folder -at +/home/ketan/catsn+ to the above directory. (+cp -r /home/ketan/catsn -.+ followed by +cd catsn+). - -*step 4.* In the sites file: +beagle-coaster.xml+, make the following two -changes: *1)* change the path of +workdirectory+ to your preferred location -(say to +/lustre/beagle/$USER/swift-lab/swift.workdir+) and *2)* Change the -project name to your project (+CI-CCR000013+) . The workdirectory will contain -execution data related to each run, e.g. wrapper scripts, system information, -inputs and outputs. - -*step 5.* Run the example using following commandline (also found in run.sh): -+swift -config cf -tc.file tc -sites.file beagle-coaster.xml catsn.swift -n=1+ -. You can further change the value of +-n+ to any arbitrary number to run that -many number of concurrent +cat+ - -*step 6.* Check the output in the generated +outdir+ directory (+ls outdir+) - -Note: Running from sandbox node or requesting 1 hour walltime for upto 3 nodes -will get fast prioritized execution. Good for small tests. - Copied: trunk/docs/siteguide/beagle (from rev 5078, trunk/docs/siteguide/beagle) =================================================================== --- trunk/docs/siteguide/beagle (rev 0) +++ trunk/docs/siteguide/beagle 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,49 @@ +Beagle +------ + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have a Computation Institute account, you can request +one at https://www.ci.uchicago.edu/accounts/. This page will give you a list +of resources you can request access to. +You already have an existing CI account, but do not have access to Beagle, +send an email to support at ci.uchicago.edu to request access. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have account, you should be able to access a Beagle login +node with the following command: + +----- +ssh yourusername at login.beagle.ci.uchicago.edu +----- + +Follow the steps outlined below to get started with Swift on Beagle: + +*step 1.* Load the Swift module on Beagle as follows: +module load swift+ + +*step 2.* Create and change to a directory where your Swift related work will +stay. (say, +mkdir swift-lab+, followed by, +cd swift-lab+) + +*step 3.* To get started with a simple example running +/bin/cat+ to read an +input file +data.txt+ and write to an output file +f.nnn.out+, copy the folder +at +/home/ketan/catsn+ to the above directory. (+cp -r /home/ketan/catsn +.+ followed by +cd catsn+). + +*step 4.* In the sites file: +beagle-coaster.xml+, make the following two +changes: *1)* change the path of +workdirectory+ to your preferred location +(say to +/lustre/beagle/$USER/swift-lab/swift.workdir+) and *2)* Change the +project name to your project (+CI-CCR000013+) . The workdirectory will contain +execution data related to each run, e.g. wrapper scripts, system information, +inputs and outputs. + +*step 5.* Run the example using following commandline (also found in run.sh): ++swift -config cf -tc.file tc -sites.file beagle-coaster.xml catsn.swift -n=1+ +. You can further change the value of +-n+ to any arbitrary number to run that +many number of concurrent +cat+ + +*step 6.* Check the output in the generated +outdir+ directory (+ls outdir+) + +Note: Running from sandbox node or requesting 1 hour walltime for upto 3 nodes +will get fast prioritized execution. Good for small tests. + Deleted: trunk/docs/siteguide/futuregrid =================================================================== --- trunk/docs/siteguide/futuregrid 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/futuregrid 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,134 +0,0 @@ -FutureGrid ----------- - -Downloading and Building Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The most recent versions of Swift can be found at -http://www.ci.uchicago.edu/swift/downloads/index.php. To run on futuregrid, -you will need to download the development/trunk version from SVN. - -Adding Swift to your PATH -~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have installed Swift, add the Swift binary to your PATH so you can -easily run it from any directory. - -In your home directory, edit the file ".bashrc". - -If you have installed Swift via a source repository, add the following line -at the bottom of .bashrc. - ------ -export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin ------ - -Requesting Futuregrid Access -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you do not already have a futuregrid account, you can follow the -instructions at https://portal.futuregrid.org/gettingstarted to get started. -This page provides information on how to create an account, how to join -a project, how to set up your SSH keys, and how to create a new project. - -Downloading Swift VM Tools -~~~~~~~~~~~~~~~~~~~~~~~~~~ -A set of scripts based around cloudinitd are used to easily start virtual -machines. To download, change to your home directory and run the -following command: - ------ -$ svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/swift-vm-boot ------ - -Download your Credentials -~~~~~~~~~~~~~~~~~~~~~~~~~ -Run the following commands to retrieve your credentials: ------ -$ scp yourusername at hotel.futuregrid.org:nimbus_creds.tar.gz . -$ tar xvfz nimbus_creds.tar.gz ------ -When you extract your credential file, look at the file called -hotel.conf. Near the bottom of this file will be two settings -called vws.repository.s3id and vws.repository.s3key. Copy these -values for the next step. - -Configuring Swift VM Tools -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Change directories into the swift-vm-boot directory. Edit the file -called env.sh. There are two settings here that you will need to -modify: FUTUREGRID_IAAS_ACCESS_KEY and FUTUREGRID_IAAS_SECRET_KEY. -Paste your access key (s3id) and secret key (s3key) here and save -the file. By default, env.sh requests 2 nodes on hotel and 2 nodes -on sierra. Change these values as needed. Run install.sh from the -swift-vm-boot directory to complete the installation of Swift VM -Tools. The Swift VM Tools may require a fairly recent version of -Python. If you run into problems while running the install.sh -script, please try a more recent version of Python and associated -libraries. - -Configuring coaster-service.conf -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Within your swift distribution's etc directory is a file called -coaster-service.conf. There are many options here you can modify -as needed, but these are the settings that will be required -to run on futuregrid: - ------ -export WORKER_WORK=/tmp -export WORKER_MODE=futuregrid -export SHARED_FILESYSTEM=no -export WORKER_USERNAME=root -export SSH_TUNNELING=yes -export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot -export WORK=/tmp ------ - -These is a brief description of these settings in the coaster-service.conf file. -Tunneling should be used when you are restricted by a firewall. If your local -machine has multiple network interfaces, you should also manually set the IP -address of your machine with export IPADDR=your.ip.address.here. - -Starting the Coaster Service Script -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now that everything is configured, change to a temporary directory -and run this command to start the coaster service: - ------ -$ start-coaster-service ------ - -This command will start the VMs, start the required processes on the worker nodes, -and generate Swift configuration files for you to use. The configuration files -will be generated in your current directory. These files are sites.xml, tc.data, -and cf. - -Running Swift -~~~~~~~~~~~~~ -Now that you have all of your configuration files generated, run the following command: - ------ -$ swift -sites.file sites.xml -tc.file tc.data -config cf ------ - -If you would like to create a custom tc file for repeated use, rename it to something other -than tc.data to prevent it from being overwritten. The sites.xml however will need to be -regenerated every time you start the coaster service. If you need to repeatedly modify some -sites.xml options, you may edit the template in Swift's etc/sites/persistent-coasters. You -may also create your own custom tc files with the hostname of persistent-coasters. More -information about this can be found in the Swift userguide at -http://www.ci.uchicago.edu/swift/guides/trunk/userguide/userguide.html. - -Stopping the Coaster Service Script -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To stop the coaster service, run the following command: ------ -$ stop-coaster-service ------ - -This will kill the coaster service, kill the worker scripts on remote systems and terminate -the virtual machines that were created during start-coaster-service. - -More Help -~~~~~~~~~ -The best place for additional help is the Swift user mailing list. You can subscribe to this list at -http://mail.ci.uchicago.edu/mailman/listinfo/swift-user. When submitting information, please send -your sites.xml file, your tc.data, and any error messages you run into. - Copied: trunk/docs/siteguide/futuregrid (from rev 5078, trunk/docs/siteguide/futuregrid) =================================================================== --- trunk/docs/siteguide/futuregrid (rev 0) +++ trunk/docs/siteguide/futuregrid 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,134 @@ +FutureGrid +---------- + +Downloading and Building Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The most recent versions of Swift can be found at +http://www.ci.uchicago.edu/swift/downloads/index.php. To run on futuregrid, +you will need to download the development/trunk version from SVN. + +Adding Swift to your PATH +~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have installed Swift, add the Swift binary to your PATH so you can +easily run it from any directory. + +In your home directory, edit the file ".bashrc". + +If you have installed Swift via a source repository, add the following line +at the bottom of .bashrc. + +----- +export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin +----- + +Requesting Futuregrid Access +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +If you do not already have a futuregrid account, you can follow the +instructions at https://portal.futuregrid.org/gettingstarted to get started. +This page provides information on how to create an account, how to join +a project, how to set up your SSH keys, and how to create a new project. + +Downloading Swift VM Tools +~~~~~~~~~~~~~~~~~~~~~~~~~~ +A set of scripts based around cloudinitd are used to easily start virtual +machines. To download, change to your home directory and run the +following command: + +----- +$ svn co https://svn.ci.uchicago.edu/svn/vdl2/usertools/swift-vm-boot +----- + +Download your Credentials +~~~~~~~~~~~~~~~~~~~~~~~~~ +Run the following commands to retrieve your credentials: +----- +$ scp yourusername at hotel.futuregrid.org:nimbus_creds.tar.gz . +$ tar xvfz nimbus_creds.tar.gz +----- +When you extract your credential file, look at the file called +hotel.conf. Near the bottom of this file will be two settings +called vws.repository.s3id and vws.repository.s3key. Copy these +values for the next step. + +Configuring Swift VM Tools +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Change directories into the swift-vm-boot directory. Edit the file +called env.sh. There are two settings here that you will need to +modify: FUTUREGRID_IAAS_ACCESS_KEY and FUTUREGRID_IAAS_SECRET_KEY. +Paste your access key (s3id) and secret key (s3key) here and save +the file. By default, env.sh requests 2 nodes on hotel and 2 nodes +on sierra. Change these values as needed. Run install.sh from the +swift-vm-boot directory to complete the installation of Swift VM +Tools. The Swift VM Tools may require a fairly recent version of +Python. If you run into problems while running the install.sh +script, please try a more recent version of Python and associated +libraries. + +Configuring coaster-service.conf +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Within your swift distribution's etc directory is a file called +coaster-service.conf. There are many options here you can modify +as needed, but these are the settings that will be required +to run on futuregrid: + +----- +export WORKER_WORK=/tmp +export WORKER_MODE=futuregrid +export SHARED_FILESYSTEM=no +export WORKER_USERNAME=root +export SSH_TUNNELING=yes +export SWIFTVMBOOT_DIR=$HOME/swift-vm-boot +export WORK=/tmp +----- + +These is a brief description of these settings in the coaster-service.conf file. +Tunneling should be used when you are restricted by a firewall. If your local +machine has multiple network interfaces, you should also manually set the IP +address of your machine with export IPADDR=your.ip.address.here. + +Starting the Coaster Service Script +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now that everything is configured, change to a temporary directory +and run this command to start the coaster service: + +----- +$ start-coaster-service +----- + +This command will start the VMs, start the required processes on the worker nodes, +and generate Swift configuration files for you to use. The configuration files +will be generated in your current directory. These files are sites.xml, tc.data, +and cf. + +Running Swift +~~~~~~~~~~~~~ +Now that you have all of your configuration files generated, run the following command: + +----- +$ swift -sites.file sites.xml -tc.file tc.data -config cf +----- + +If you would like to create a custom tc file for repeated use, rename it to something other +than tc.data to prevent it from being overwritten. The sites.xml however will need to be +regenerated every time you start the coaster service. If you need to repeatedly modify some +sites.xml options, you may edit the template in Swift's etc/sites/persistent-coasters. You +may also create your own custom tc files with the hostname of persistent-coasters. More +information about this can be found in the Swift userguide at +http://www.ci.uchicago.edu/swift/guides/trunk/userguide/userguide.html. + +Stopping the Coaster Service Script +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To stop the coaster service, run the following command: +----- +$ stop-coaster-service +----- + +This will kill the coaster service, kill the worker scripts on remote systems and terminate +the virtual machines that were created during start-coaster-service. + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +http://mail.ci.uchicago.edu/mailman/listinfo/swift-user. When submitting information, please send +your sites.xml file, your tc.data, and any error messages you run into. + Deleted: trunk/docs/siteguide/grid =================================================================== --- trunk/docs/siteguide/grid 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/grid 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,245 +0,0 @@ -Grids, including OSG and TeraGrid ---------------------------------- - -Overview of running on grid sites -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* Get a DOEGrids cert. Then register it in the *OSG Engage VO*, and/or -map it using +gx-request+ on TeraGrid sites. - -* Run +GridSetup+ to configure Swift to use the grid sites. This tests -for correct operation and creates a "green list" of good sites. - -* Prepare an installation package for the programs you want to run on -grid sites via Swift, and install that package using +foreachsite+. - -* Run +swift-workers+ to start and maintain a pool of Swift workers on -each site. - -* Run Swift scripts that use the grid site resources. - -NOTE: This revision only supports a single-entry sites file which uses -provider staging and assumes that the necessary apps are locatable -through the same tc entries (ie either absolute or PATH-relative -paths) on all sites. - -NOTE: This revision has been testing using the bin/grid code from -trunk (which gets installed into trunk's bin/ directory, and the base -swift code from the 0.93 branch. No other configurations have been -tested at the moment. I intend to put this code in bin/grid in 0.93, -as it should have no ill affects on other Swift usage. - -Requesting Access -~~~~~~~~~~~~~~~~~ - -*For OSG*: Obtain a DOEGrids certificate and register the certificate in -the OSG "Engage" VO following the procedures at: - -https://twiki.grid.iu.edu/bin/view/Engagement/EngageNewUserGuide - -[red]*FIXME*: access to OSG wiki pages may request the user to present -a certificate. Is this a problem from users without one? If so, make a -copy of the page on the Swift web. - -*For TeraGrid*: Obtain a DOEGrids certifcate using the OSG ENgage -instructions above. Ask a TeraGrid PI to add you to a TeraGrid -project. Once you obtain a login and project access (via US Mail), use -gx-request to add your certificate - -To run jobs using the procedures documented here you need to be logged -in to a "submit host" on which you will run Swift and other -grid-related utilities. This can be any host with the OSG client stack -or equivalent tools installed. Such hosts include the OSG Engage -submit host, and the two Swift lab servers -{bridled,communicado}.ci.uchicago.edu. - -Obtain a login on engage-submit.renci.org following instructions on -the OSG URL above. - -Obtain a CI login with access to the Swift lab servers by requesting -"OSG Gridlab" access at: - -http://accounts.ci.uchicago.edu - - -Connecting to a submit host -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ------ -ssh yourusername at bridled.ci.uchicago.edu -ssh yourusername at communicado.ci.uchicago.edu -ssh yourusername at engage-submit.renci.org ------ - -Downloading and install Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The current version of Swift can be downloaded from -http://www.ci.uchicago.edu/swift/downloads/index.php. - -Fetch and untar the latest release. -Then add the Swift bin/ directory to your PATH. For example: - ------ -cd $HOME -wget http://www.ci.uchicago.edu/swift/packages/swift-0.92.1.tar.gz -tar txf swift-0.92.1.tar.gz -export PATH=$PATH:$HOME/swift-0.92.1/bin ------ - -Set up OSG environment -~~~~~~~~~~~~~~~~~~~~~~ - -Depending on your shell type, run: - ------ -source /opt/osg/setup.sh -or -source /opt/osg/setup.csh ------ - -Create a VOMS Grid proxy -~~~~~~~~~~~~~~~~~~~~~~~~ - ------ -$ voms-proxy-init -voms Engage -valid 12:00 ------ - -Generating Configuration Files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ------ -cd $HOME -mkdir swiftgrid -cd swiftgrid -gen_gridsites -# Wait a few minutes to a few hours for Swift to validate grid sites -get_greensites >greensites ------ - -You can repeatedly try the get_greensites command, which simply -concatenates all the site names that sucessfully resturned an output -file from site tests. - -Installing software on OSG sites -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The command "foreachsite" will execute a local shell script passed to -it as an argument, on each OSG site in the Engage VO ReSS site -catalog. The user's installscript will execute on either the head node -(as a GRAM "fork" job) or on a worker node, as controlled by the --resource option. Its syntax is: - ------ -$ ./foreachsite -help -./foreachsite foreachsite [-resource fork|worker ] [-sites alt-sites-file] scriptname -$ ------ - -To install your software, create a script similar to "myapp.sh", -below, which (in this example) reads a tar file of a pre-compiled -application "myapp-2.12" and executes a test script for that -application. The test script should print some reconizable indication -of its success or failure: - ------ -$ cat myinstall.sh -renice 2 -p $$ -IDIR=OSG_APP/extenci/myname/myapp -mkdir -p $IDIR -cd $IDIR -wget http://my.url.edu/~mydir/myapp-2.12.tar.tgz -tar zxf myapp-2.12.tar.tgz -myapp-2.12/bin/test_myapp.sh -if [ $? = 0 ]; then - echo INSTALL SUCCEEDED -else - echo INSTALL FAILED -fi -$ -$ foreachsite -resource fork myinstall.sh -$ -$ # Wait a file here, then poll for successfully installed apps... -$ -$ grep SUCCEEDED run.89/*/*.stdout -$ - - -Starting a single coaster service -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This single coaster service will service all grid sites: - -start-grid-service --loglevel INFO --throttle 3.99 --jobspernode 1 \ - >& start-grid-service.out - -Starting workers on OSG sites -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Make sure that your "greensites" file is in the current working -directory. - -The swiftDemand file should be set to contain the number of workers -you want to start across all OSG sites. Eventually this will be set -dynamically by watching your Swift script execute. (Note that this -number only includes jobs started by the swift-workers factory -command, not by any workers added manually from the TeraGrid - see -below. - -The condor directory must be pre-created and will be used by Condor to -return stdout and stderr files from the Condor jobs, which will -execute the wrapper script "run-workers.sh". - -NOTE: this script is current built manually, and wraps around and -transports the worker.pl script. This needs to be automated. - ------ -echo 250 >swiftDemand mkdir -p condor - -swift-workers greensites extenci \ - http://communicado.ci.uchicago.edu:$(cat service-0.wport) \ - >& swift-workers.out & ------ - -Adding workers from TeraGrid sites -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The job below can be used to submit jobs to TareGrid (Ranger only at -the moment) to add more workers to the execution pool. The same -requirements hold there as for OSG sites, namely, that the app tools -listed in tc for the single execution site need to be locatable on the -TeraGrid site(s). - ------ -start-ranger-service --nodes 1 --walltime 00:10:00 --project TG-DBS123456N \ - --queue development --user tg12345 --startservice no \ - >& start-ranger-service.out ------ - -NOTE: Change the project and user names to match your TeraGrid -parameters. - -Running Swift -~~~~~~~~~~~~~ -Now that everything is in place, run Swift with the following command: - ------ -export SWIFT_HEAP_MAX=6000m # Add this for very large scripts - -swift -config cf.ps -tc.file tc -sites.file sites.grid-ps.xml \ - catsn.swift -n=10000 >& swift.out & ------ - -You should see several new files being created, called catsn.0001.out, -catsn.0002.out, etc. Each of these files should contain the contents -of what you placed into data.txt. If this happens, your job has run -successfully on the grid sites. - -More Help -~~~~~~~~~ - -The best place for additional help is the Swift user mailing list. You -can subscribe to this list at -http://mail.ci.uchicago.edu/mailman/listinfo/swift-user. When -submitting information, please send your sites.xml file, your tc.data, -and any Swift log files that were created during your attempt. Copied: trunk/docs/siteguide/grid (from rev 5078, trunk/docs/siteguide/grid) =================================================================== --- trunk/docs/siteguide/grid (rev 0) +++ trunk/docs/siteguide/grid 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,245 @@ +Grids, including OSG and TeraGrid +--------------------------------- + +Overview of running on grid sites +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Get a DOEGrids cert. Then register it in the *OSG Engage VO*, and/or +map it using +gx-request+ on TeraGrid sites. + +* Run +GridSetup+ to configure Swift to use the grid sites. This tests +for correct operation and creates a "green list" of good sites. + +* Prepare an installation package for the programs you want to run on +grid sites via Swift, and install that package using +foreachsite+. + +* Run +swift-workers+ to start and maintain a pool of Swift workers on +each site. + +* Run Swift scripts that use the grid site resources. + +NOTE: This revision only supports a single-entry sites file which uses +provider staging and assumes that the necessary apps are locatable +through the same tc entries (ie either absolute or PATH-relative +paths) on all sites. + +NOTE: This revision has been testing using the bin/grid code from +trunk (which gets installed into trunk's bin/ directory, and the base +swift code from the 0.93 branch. No other configurations have been +tested at the moment. I intend to put this code in bin/grid in 0.93, +as it should have no ill affects on other Swift usage. + +Requesting Access +~~~~~~~~~~~~~~~~~ + +*For OSG*: Obtain a DOEGrids certificate and register the certificate in +the OSG "Engage" VO following the procedures at: + +https://twiki.grid.iu.edu/bin/view/Engagement/EngageNewUserGuide + +[red]*FIXME*: access to OSG wiki pages may request the user to present +a certificate. Is this a problem from users without one? If so, make a +copy of the page on the Swift web. + +*For TeraGrid*: Obtain a DOEGrids certifcate using the OSG ENgage +instructions above. Ask a TeraGrid PI to add you to a TeraGrid +project. Once you obtain a login and project access (via US Mail), use +gx-request to add your certificate + +To run jobs using the procedures documented here you need to be logged +in to a "submit host" on which you will run Swift and other +grid-related utilities. This can be any host with the OSG client stack +or equivalent tools installed. Such hosts include the OSG Engage +submit host, and the two Swift lab servers +{bridled,communicado}.ci.uchicago.edu. + +Obtain a login on engage-submit.renci.org following instructions on +the OSG URL above. + +Obtain a CI login with access to the Swift lab servers by requesting +"OSG Gridlab" access at: + +http://accounts.ci.uchicago.edu + + +Connecting to a submit host +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +----- +ssh yourusername at bridled.ci.uchicago.edu +ssh yourusername at communicado.ci.uchicago.edu +ssh yourusername at engage-submit.renci.org +----- + +Downloading and install Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The current version of Swift can be downloaded from +http://www.ci.uchicago.edu/swift/downloads/index.php. + +Fetch and untar the latest release. +Then add the Swift bin/ directory to your PATH. For example: + +----- +cd $HOME +wget http://www.ci.uchicago.edu/swift/packages/swift-0.92.1.tar.gz +tar txf swift-0.92.1.tar.gz +export PATH=$PATH:$HOME/swift-0.92.1/bin +----- + +Set up OSG environment +~~~~~~~~~~~~~~~~~~~~~~ + +Depending on your shell type, run: + +----- +source /opt/osg/setup.sh +or +source /opt/osg/setup.csh +----- + +Create a VOMS Grid proxy +~~~~~~~~~~~~~~~~~~~~~~~~ + +----- +$ voms-proxy-init -voms Engage -valid 12:00 +----- + +Generating Configuration Files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +----- +cd $HOME +mkdir swiftgrid +cd swiftgrid +gen_gridsites +# Wait a few minutes to a few hours for Swift to validate grid sites +get_greensites >greensites +----- + +You can repeatedly try the get_greensites command, which simply +concatenates all the site names that sucessfully resturned an output +file from site tests. + +Installing software on OSG sites +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The command "foreachsite" will execute a local shell script passed to +it as an argument, on each OSG site in the Engage VO ReSS site +catalog. The user's installscript will execute on either the head node +(as a GRAM "fork" job) or on a worker node, as controlled by the +-resource option. Its syntax is: + +----- +$ ./foreachsite -help +./foreachsite foreachsite [-resource fork|worker ] [-sites alt-sites-file] scriptname +$ +----- + +To install your software, create a script similar to "myapp.sh", +below, which (in this example) reads a tar file of a pre-compiled +application "myapp-2.12" and executes a test script for that +application. The test script should print some reconizable indication +of its success or failure: + +----- +$ cat myinstall.sh +renice 2 -p $$ +IDIR=OSG_APP/extenci/myname/myapp +mkdir -p $IDIR +cd $IDIR +wget http://my.url.edu/~mydir/myapp-2.12.tar.tgz +tar zxf myapp-2.12.tar.tgz +myapp-2.12/bin/test_myapp.sh +if [ $? = 0 ]; then + echo INSTALL SUCCEEDED +else + echo INSTALL FAILED +fi +$ +$ foreachsite -resource fork myinstall.sh +$ +$ # Wait a file here, then poll for successfully installed apps... +$ +$ grep SUCCEEDED run.89/*/*.stdout +$ + + +Starting a single coaster service +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This single coaster service will service all grid sites: + +start-grid-service --loglevel INFO --throttle 3.99 --jobspernode 1 \ + >& start-grid-service.out + +Starting workers on OSG sites +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Make sure that your "greensites" file is in the current working +directory. + +The swiftDemand file should be set to contain the number of workers +you want to start across all OSG sites. Eventually this will be set +dynamically by watching your Swift script execute. (Note that this +number only includes jobs started by the swift-workers factory +command, not by any workers added manually from the TeraGrid - see +below. + +The condor directory must be pre-created and will be used by Condor to +return stdout and stderr files from the Condor jobs, which will +execute the wrapper script "run-workers.sh". + +NOTE: this script is current built manually, and wraps around and +transports the worker.pl script. This needs to be automated. + +----- +echo 250 >swiftDemand mkdir -p condor + +swift-workers greensites extenci \ + http://communicado.ci.uchicago.edu:$(cat service-0.wport) \ + >& swift-workers.out & +----- + +Adding workers from TeraGrid sites +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The job below can be used to submit jobs to TareGrid (Ranger only at +the moment) to add more workers to the execution pool. The same +requirements hold there as for OSG sites, namely, that the app tools +listed in tc for the single execution site need to be locatable on the +TeraGrid site(s). + +----- +start-ranger-service --nodes 1 --walltime 00:10:00 --project TG-DBS123456N \ + --queue development --user tg12345 --startservice no \ + >& start-ranger-service.out +----- + +NOTE: Change the project and user names to match your TeraGrid +parameters. + +Running Swift +~~~~~~~~~~~~~ +Now that everything is in place, run Swift with the following command: + +----- +export SWIFT_HEAP_MAX=6000m # Add this for very large scripts + +swift -config cf.ps -tc.file tc -sites.file sites.grid-ps.xml \ + catsn.swift -n=10000 >& swift.out & +----- + +You should see several new files being created, called catsn.0001.out, +catsn.0002.out, etc. Each of these files should contain the contents +of what you placed into data.txt. If this happens, your job has run +successfully on the grid sites. + +More Help +~~~~~~~~~ + +The best place for additional help is the Swift user mailing list. You +can subscribe to this list at +http://mail.ci.uchicago.edu/mailman/listinfo/swift-user. When +submitting information, please send your sites.xml file, your tc.data, +and any Swift log files that were created during your attempt. Deleted: trunk/docs/siteguide/images =================================================================== --- trunk/docs/siteguide/images 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/images 2011-09-08 00:53:06 UTC (rev 5086) @@ -1 +0,0 @@ -link ../tutorial/images \ No newline at end of file Copied: trunk/docs/siteguide/images (from rev 5078, trunk/docs/siteguide/images) =================================================================== --- trunk/docs/siteguide/images (rev 0) +++ trunk/docs/siteguide/images 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1 @@ +link ../tutorial/images \ No newline at end of file Deleted: trunk/docs/siteguide/pads =================================================================== --- trunk/docs/siteguide/pads 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/pads 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,188 +0,0 @@ -PADS ----- - -Requesting Access -~~~~~~~~~~~~~~~~~ -If you do not already have a Computation Institute account, you can request -one at https://www.ci.uchicago.edu/accounts/. This page will give you a list -of resources you can request access to. Be sure that PADS is selected. If -you already have an existing CI account, but do not have access to PADS, -send an email to support at ci.uchicago.edu to request access. - -SSH Keys -~~~~~~~~ -Before accessing PADS, be sure to have your SSH keys configured correctly. -There is some basic information about SSH and how to generate your key at -http://www.ci.uchicago.edu/wiki/bin/view/Resources/SshKeys. Once you have -followed those instructions, you can add your key at -https://www.ci.uchicago.edu/support/sshkeys/. - -Connecting to a login node -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Once your keys are configured, you should be able to access a PADS login -node with the following command: - ------ -ssh yourusername at login.pads.ci.uchicago.edu ------ - -Configuring softenv -~~~~~~~~~~~~~~~~~~~ -Softenv is a system used for managing applications. In order to run Swift, -the softenv environment will have to be modified slightly. Softenv is -configured by a file in your home directory called .soft. Edit this file -to look like this: ------ -+java-sun -+maui -+torque - at default ------ - -Downloading and building Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The most recent versions of Swift can be found at -http://www.ci.uchicago.edu/swift/downloads/index.php. Follow the instructions -provided on that site to download and build Swift. - -Adding Swift to your PATH -~~~~~~~~~~~~~~~~~~~~~~~~~ -Once you have installed Swift, add the Swift binary to your PATH so you can -easily run it from any directory. - -In your home directory, edit the file ".bashrc". - -If you have installed Swift via a source repository, add the following line -at the bottom of .bashrc. - ------ -export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin ------ - -If you have installed Swift via a binary package, add this line: - ------ -export PATH=$PATH:$HOME/swift-/bin ------ - -Replace with the actual name of the swift directory in the example above. - -What You Need To Know Before Running Swift -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Before you can create a Swift configuration file, there are some things -you will need to know. - -Swift Work Directory -^^^^^^^^^^^^^^^^^^^^ -The Swift work directory is a directory which Swift uses for processing work. -This directory needs to be writable. Common options for this are: - ------ -/home/username/swiftwork -/home/username/work -/tmp ------ - -Which project(s) are you a member of? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -PADS requires that you are a member of a project. You can determine this by -running the following command: - ------ -$ projects --available - -The following projects are available for your use - -Project PI Title - -CI-CCR000013 Michael Wilde The Swift Parallel Scripting System ------ - -If you are not a member of a project, you must first request access -to a project at http://www.ci.uchicago.edu/hpc/projects. - -You should make sure that you have a project set as default. Run -the projects command with no arguments to determine if you have a default. - ------- -$ projects -You have no default project set. ------ - -To set your default project, use projects --set ------- -$ projects --set CI-CCR000013 --all -Your default project for all CI clusters has been set to CI-CCR000013. ------ - -Determine your Queue -^^^^^^^^^^^^^^^^^^^^ - -PADS has several different queues you can submit jobs to depending on -the type of work you will be doing. The command "qstat -q" will print -the most up to date list of this information. - -.PADS Queues -[options="header"] -|========================================================= -|Queue |Memory|CPU Time|Walltime|Node|Run|Que|Lm |State -|route |-- |-- |-- |-- | 0| 0|-- | E R -|short |-- |-- |04:00:00|-- | 64| 0|-- | E R -|extended|-- |-- |-- |-- | 0| 0|-- | E R -|fast |-- |-- |01:00:00|1 | 0|152|-- | E R -|long |-- |-- |24:00:00|-- |232|130|-- | E R -|========================================================= - -Generating Configuration Files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now that you know what queue to use, your project, and your work directory, it is time to -set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. -There are two methods you can use for creating this file. You can manually edit -the configuration file, or generate it with a utility called gensites. - -Manually Editing sites.xml -^^^^^^^^^^^^^^^^^^^^^^^^^^ -Below is the template that is used by Swift's test suite for running on PADS. - ------ -include::../../tests/providers/local-pbs/pads/sites.template.xml[] ------ - -The values to note here are the ones that are listed between underscores. In the example above, they are _QUEUE_, and _WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. - -Manually Editing tc.data -~~~~~~~~~~~~~~~~~~~~~~~~ -Below is the tc.data file used by Swift's test suite for running on PADS. - ------ -include::../../tests/providers/local-pbs/pads/tc.template.data[] ------- - -Copy these commands and save it as tc.data. - -Catsn.swift -~~~~~~~~~~~ -The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. - ------ -include::../../examples/misc/catsn.swift[] ------ - -Running Swift -~~~~~~~~~~~~~ -Now that everything is in place, run Swift with the following command: - ------ -swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 ------ - -You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these -files should contain the contents of what you placed into data.txt. If this happens, your job has run -successfully on PADS! - -More Help -~~~~~~~~~ -The best place for additional help is the Swift user mailing list. You can subscribe to this list at -https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. - - Copied: trunk/docs/siteguide/pads (from rev 5078, trunk/docs/siteguide/pads) =================================================================== --- trunk/docs/siteguide/pads (rev 0) +++ trunk/docs/siteguide/pads 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,188 @@ +PADS +---- + +Requesting Access +~~~~~~~~~~~~~~~~~ +If you do not already have a Computation Institute account, you can request +one at https://www.ci.uchicago.edu/accounts/. This page will give you a list +of resources you can request access to. Be sure that PADS is selected. If +you already have an existing CI account, but do not have access to PADS, +send an email to support at ci.uchicago.edu to request access. + +SSH Keys +~~~~~~~~ +Before accessing PADS, be sure to have your SSH keys configured correctly. +There is some basic information about SSH and how to generate your key at +http://www.ci.uchicago.edu/wiki/bin/view/Resources/SshKeys. Once you have +followed those instructions, you can add your key at +https://www.ci.uchicago.edu/support/sshkeys/. + +Connecting to a login node +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Once your keys are configured, you should be able to access a PADS login +node with the following command: + +----- +ssh yourusername at login.pads.ci.uchicago.edu +----- + +Configuring softenv +~~~~~~~~~~~~~~~~~~~ +Softenv is a system used for managing applications. In order to run Swift, +the softenv environment will have to be modified slightly. Softenv is +configured by a file in your home directory called .soft. Edit this file +to look like this: +----- ++java-sun ++maui ++torque + at default +----- + +Downloading and building Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The most recent versions of Swift can be found at +http://www.ci.uchicago.edu/swift/downloads/index.php. Follow the instructions +provided on that site to download and build Swift. + +Adding Swift to your PATH +~~~~~~~~~~~~~~~~~~~~~~~~~ +Once you have installed Swift, add the Swift binary to your PATH so you can +easily run it from any directory. + +In your home directory, edit the file ".bashrc". + +If you have installed Swift via a source repository, add the following line +at the bottom of .bashrc. + +----- +export PATH=$PATH:$HOME/cog/modules/swift/dist/swift-svn/bin +----- + +If you have installed Swift via a binary package, add this line: + +----- +export PATH=$PATH:$HOME/swift-/bin +----- + +Replace with the actual name of the swift directory in the example above. + +What You Need To Know Before Running Swift +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Before you can create a Swift configuration file, there are some things +you will need to know. + +Swift Work Directory +^^^^^^^^^^^^^^^^^^^^ +The Swift work directory is a directory which Swift uses for processing work. +This directory needs to be writable. Common options for this are: + +----- +/home/username/swiftwork +/home/username/work +/tmp +----- + +Which project(s) are you a member of? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +PADS requires that you are a member of a project. You can determine this by +running the following command: + +----- +$ projects --available + +The following projects are available for your use + +Project PI Title + +CI-CCR000013 Michael Wilde The Swift Parallel Scripting System +----- + +If you are not a member of a project, you must first request access +to a project at http://www.ci.uchicago.edu/hpc/projects. + +You should make sure that you have a project set as default. Run +the projects command with no arguments to determine if you have a default. + +------ +$ projects +You have no default project set. +----- + +To set your default project, use projects --set +------ +$ projects --set CI-CCR000013 --all +Your default project for all CI clusters has been set to CI-CCR000013. +----- + +Determine your Queue +^^^^^^^^^^^^^^^^^^^^ + +PADS has several different queues you can submit jobs to depending on +the type of work you will be doing. The command "qstat -q" will print +the most up to date list of this information. + +.PADS Queues +[options="header"] +|========================================================= +|Queue |Memory|CPU Time|Walltime|Node|Run|Que|Lm |State +|route |-- |-- |-- |-- | 0| 0|-- | E R +|short |-- |-- |04:00:00|-- | 64| 0|-- | E R +|extended|-- |-- |-- |-- | 0| 0|-- | E R +|fast |-- |-- |01:00:00|1 | 0|152|-- | E R +|long |-- |-- |24:00:00|-- |232|130|-- | E R +|========================================================= + +Generating Configuration Files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now that you know what queue to use, your project, and your work directory, it is time to +set up Swift. Swift uses a configuration file called sites.xml to determine how it should run. +There are two methods you can use for creating this file. You can manually edit +the configuration file, or generate it with a utility called gensites. + +Manually Editing sites.xml +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Below is the template that is used by Swift's test suite for running on PADS. + +----- +include::../../tests/providers/local-pbs/pads/sites.template.xml[] +----- + +The values to note here are the ones that are listed between underscores. In the example above, they are _QUEUE_, and _WORK_. Queue is the PADS queue to use and WORK is the swift work directory. These are placeholder values you will need to modify to fit your needs. Copy and paste this template, replace the values, and call it sites.xml. + +Manually Editing tc.data +~~~~~~~~~~~~~~~~~~~~~~~~ +Below is the tc.data file used by Swift's test suite for running on PADS. + +----- +include::../../tests/providers/local-pbs/pads/tc.template.data[] +------ + +Copy these commands and save it as tc.data. + +Catsn.swift +~~~~~~~~~~~ +The swift script we will run is called catsn.swift. It simply cats a file and saves the result. This is a nice simple test to ensure jobs are running correctly. Create a file called data.txt which contains some simple input - a "hello world" will do the trick. + +----- +include::../../examples/misc/catsn.swift[] +----- + +Running Swift +~~~~~~~~~~~~~ +Now that everything is in place, run Swift with the following command: + +----- +swift -sites.file sites.xml -tc.file tc.data catsn.swift -n=10 +----- + +You should see several new files being created, called catsn.0001.out, catsn.0002.out, etc. Each of these +files should contain the contents of what you placed into data.txt. If this happens, your job has run +successfully on PADS! + +More Help +~~~~~~~~~ +The best place for additional help is the Swift user mailing list. You can subscribe to this list at +https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user. When submitting information, please send your sites.xml file, your tc.data, and any Swift log files that were created during your attempt. + + Deleted: trunk/docs/siteguide/siteguide.txt =================================================================== --- trunk/docs/siteguide/siteguide.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/siteguide/siteguide.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,15 +0,0 @@ -Site Configuration Guide -======================== - -:toc: -:icons: -:website: http://www.ci.uchicago.edu/swift/guides/siteguide.php -:numbered: - -include::pads[] - -include::beagle[] - -include::futuregrid[] - -include::grid[] Copied: trunk/docs/siteguide/siteguide.txt (from rev 5078, trunk/docs/siteguide/siteguide.txt) =================================================================== --- trunk/docs/siteguide/siteguide.txt (rev 0) +++ trunk/docs/siteguide/siteguide.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,15 @@ +Site Configuration Guide +======================== + +:toc: +:icons: +:website: http://www.ci.uchicago.edu/swift/guides/siteguide.php +:numbered: + +include::pads[] + +include::beagle[] + +include::futuregrid[] + +include::grid[] Deleted: trunk/docs/stylesheets/asciidoc.css =================================================================== --- trunk/docs/stylesheets/asciidoc.css 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/stylesheets/asciidoc.css 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,2 +0,0 @@ -a:link { color:navy; } -a:visited { color:navy; } Copied: trunk/docs/stylesheets/asciidoc.css (from rev 5078, trunk/docs/stylesheets/asciidoc.css) =================================================================== --- trunk/docs/stylesheets/asciidoc.css (rev 0) +++ trunk/docs/stylesheets/asciidoc.css 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,2 @@ +a:link { color:navy; } +a:visited { color:navy; } Property changes on: trunk/docs/tutorial ___________________________________________________________________ Added: svn:ignore + tutorial.html tutorial.pdf Deleted: trunk/docs/tutorial/abstract =================================================================== --- trunk/docs/tutorial/abstract 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/abstract 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,7 +0,0 @@ -[abstract] -Abstract --------- -This is an introductory tutorial on the use of Swift and its programming -language SwiftScript. - -note: merge with intro? Copied: trunk/docs/tutorial/abstract (from rev 5078, trunk/docs/tutorial/abstract) =================================================================== --- trunk/docs/tutorial/abstract (rev 0) +++ trunk/docs/tutorial/abstract 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,7 @@ +[abstract] +Abstract +-------- +This is an introductory tutorial on the use of Swift and its programming +language SwiftScript. + +note: merge with intro? Deleted: trunk/docs/tutorial/bits =================================================================== --- trunk/docs/tutorial/bits 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/bits 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,15 +0,0 @@ -Bits ----- - -Named and optional parameters -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In addition to specifying parameters positionally, parameters can be -named, and if desired a default value can be specified: - -.default.swift -************** ----- -include::../../examples/tutorial/default.swift[] ----- -************** Copied: trunk/docs/tutorial/bits (from rev 5078, trunk/docs/tutorial/bits) =================================================================== --- trunk/docs/tutorial/bits (rev 0) +++ trunk/docs/tutorial/bits 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,15 @@ +Bits +---- + +Named and optional parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to specifying parameters positionally, parameters can be +named, and if desired a default value can be specified: + +.default.swift +************** +---- +include::../../examples/tutorial/default.swift[] +---- +************** Deleted: trunk/docs/tutorial/hello_world =================================================================== --- trunk/docs/tutorial/hello_world 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/hello_world 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,69 +0,0 @@ -Hello World ------------ -The first example program, hello.swift, outputs a hello world message -into a file called hello.txt. - -.hello.swift -************ - ----- -include::../../examples/tutorial/hello.swift[] ----- -************ - -To run hello.swift, change directories to the location of the script -and run the swift command as follows. - -TIP: Make sure the bin directory of your swift installation is in your PATH. ----- -$ cd examples/tutorial -$ swift hello.swift -Swift svn swift-r3334 (swift modified locally) cog-r2752 - -RunID: 20100526-1925-8zjupq1b -Progress: -Final status: Finished successfully:1 -$ cat hello.txt -Hello, world! ----- - -The basic structure of this program is a type definition, an -application procedure definition, a variable definition and then a -call to the procedure. - -First we define a new type, called messagefile. In this example, we will -use this messagefile type for our output message. - ----- -sys::[sed -n '1p' ../../examples/tutorial/hello.swift] ----- - -All data in SwiftScript must be typed, whether it is stored in memory or -on disk. This example defines a very simple type. Later on we will see -more complex type examples. - ----- -sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] ----- - -Next we define a procedure called greeting. This procedure will write -out the "hello world" message to a file. To achieve this, it executes -the unix utility 'echo' with a parameter "Hello, world!" and directs -the standard output into the output file. - -The actual file to use is specified by the return parameter, t. ------ -sys::[sed -n '7p' ../../examples/tutorial/hello.swift] ------ -Here we define a variable called outfile. The type of this variable is -messagefile, and we specify that the contents of this variable will be -stored on disk in a file called hello.txt - ------ -sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] ------ -Now we call the greeting procedure, with its output going to the outfile -variable and therefore to hello.txt on disk. - -Over the following exercises, we'll extend this simple hello world -program to demonstrate various features of Swift. Copied: trunk/docs/tutorial/hello_world (from rev 5078, trunk/docs/tutorial/hello_world) =================================================================== --- trunk/docs/tutorial/hello_world (rev 0) +++ trunk/docs/tutorial/hello_world 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,69 @@ +Hello World +----------- +The first example program, hello.swift, outputs a hello world message +into a file called hello.txt. + +.hello.swift +************ + +---- +include::../../examples/tutorial/hello.swift[] +---- +************ + +To run hello.swift, change directories to the location of the script +and run the swift command as follows. + +TIP: Make sure the bin directory of your swift installation is in your PATH. +---- +$ cd examples/tutorial +$ swift hello.swift +Swift svn swift-r3334 (swift modified locally) cog-r2752 + +RunID: 20100526-1925-8zjupq1b +Progress: +Final status: Finished successfully:1 +$ cat hello.txt +Hello, world! +---- + +The basic structure of this program is a type definition, an +application procedure definition, a variable definition and then a +call to the procedure. + +First we define a new type, called messagefile. In this example, we will +use this messagefile type for our output message. + +---- +sys::[sed -n '1p' ../../examples/tutorial/hello.swift] +---- + +All data in SwiftScript must be typed, whether it is stored in memory or +on disk. This example defines a very simple type. Later on we will see +more complex type examples. + +---- +sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] +---- + +Next we define a procedure called greeting. This procedure will write +out the "hello world" message to a file. To achieve this, it executes +the unix utility 'echo' with a parameter "Hello, world!" and directs +the standard output into the output file. + +The actual file to use is specified by the return parameter, t. +----- +sys::[sed -n '7p' ../../examples/tutorial/hello.swift] +----- +Here we define a variable called outfile. The type of this variable is +messagefile, and we specify that the contents of this variable will be +stored on disk in a file called hello.txt + +----- +sys::[sed -n '3,5p' ../../examples/tutorial/hello.swift] +----- +Now we call the greeting procedure, with its output going to the outfile +variable and therefore to hello.txt on disk. + +Over the following exercises, we'll extend this simple hello world +program to demonstrate various features of Swift. Deleted: trunk/docs/tutorial/introduction =================================================================== --- trunk/docs/tutorial/introduction 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/introduction 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,16 +0,0 @@ -Introduction ------------- -This is an introductory tutorial describing the use of Swift and its programming -language SwiftScript. It is intended to introduce new users to the basics of Swift. -It is structured as a series of simple exercises/examples which you can -try for yourself as you read along. - -For information on getting an installation of Swift running, consult the -http://www.ci.uchicago.edu/swift/guides/quickstartguide.php[Swift Quickstart Guide]. We advise you to install the latest stable release of Swift. -Return to this document when you have successfully run the test SwiftScript program mentioned there. - -There is also a -sys::[../print_link.sh userguide] -which contains a more detailed reference material on topics covered in this manual. All -of the programs included in this tutorial can be found in your Swift -distribution in the examples/tutorial directory. Copied: trunk/docs/tutorial/introduction (from rev 5078, trunk/docs/tutorial/introduction) =================================================================== --- trunk/docs/tutorial/introduction (rev 0) +++ trunk/docs/tutorial/introduction 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,16 @@ +Introduction +------------ +This is an introductory tutorial describing the use of Swift and its programming +language SwiftScript. It is intended to introduce new users to the basics of Swift. +It is structured as a series of simple exercises/examples which you can +try for yourself as you read along. + +For information on getting an installation of Swift running, consult the +http://www.ci.uchicago.edu/swift/guides/quickstartguide.php[Swift Quickstart Guide]. We advise you to install the latest stable release of Swift. +Return to this document when you have successfully run the test SwiftScript program mentioned there. + +There is also a +sys::[../print_link.sh userguide] +which contains a more detailed reference material on topics covered in this manual. All +of the programs included in this tutorial can be found in your Swift +distribution in the examples/tutorial directory. Deleted: trunk/docs/tutorial/language_features =================================================================== --- trunk/docs/tutorial/language_features 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/language_features 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,390 +0,0 @@ -Language features ------------------ - -Parameters -~~~~~~~~~~ - -Procedures can have parameters. Input parameters specify inputs to the -procedure and output parameters specify outputs. Our hello world greeting -procedure already uses an output parameter, t, which indicates where the -greeting output will go. In this section, we will modify the previous -script to add an input parameter to the greeting function. - -.parameter.swift -**************** ----- -include::../../examples/tutorial/parameter.swift[] ----- -**************** - -We have modified the signature of the greeting procedure to indicate -that it takes a single parameter, s, of type 'string'. - -We have modified the invocation of the 'echo' utility so that it takes -the value of s as a parameter, instead of the string literal "Hello, -world!". - -We have modified the output file definition to point to a different file -on disk. - -We have modified the invocation of greeting so that a greeting string is -supplied. - -The code for this section can be found in parameter.swift. It can be -invoked using the swift command, with output appearing in parameter.hello.txt: - - ----- -$ swift parameter.swift ----- - -Now that we can choose our greeting text, we can call the same procedure -with different parameters to generate several output files with -different greetings. The code is in manyparam.swift and can be run as -before using the swift command. - -.manyparam.swift -**************** ----- -include::../../examples/tutorial/manyparam.swift[] ----- -**************** - -Note that we can intermingle definitions of variables with invocations -of procedures. - -When this program runs, there should be three new files in the -working directory (manyparam.english.txt, manyparam.francais.txt -and manyparam.nihongo.txt) each containing a greeting in a different -language. - -In addition to specifying parameters positionally, parameters can be -named, and if desired a default value can be specified. - -Adding another application -~~~~~~~~~~~~~~~~~~~~~~~~~~ -Now we'll define a new application procedure. The procedure we define -will capitalise all the words in the input file. - -To do this, we'll use the unix tr (translate) utility. Here is an -example of using tr on the unix command line, not using Swift: - ----- -$ echo hello | tr '[a-z]' '[A-Z]' -HELLO ----- - -There are two main steps - updating the transformation catalog, and -updating the application block. - -The transformation catalog lists where application executables are located on -remote sites. We need to modify the transformation catalog to define a logical -transformation for the tr utility. The transformation catalog can be found -in etc/tc.data. There are already several entries specifying -where executables can be found. Add a new line to the file, specifying -where tr can be found (usually in /usr/bin/tr but it may differ on -your system), like this: - ----- -localhost tr /usr/bin/tr INSTALLED INTEL32::LINUX null ----- - -For now, ignore all of the fields except the second and the third. The -second field tr specifies a logical application name and the third -specifies the location of the application executable. - -Now that we have defined where to find tr, we can use it in SwiftScript. - -We can define a new procedure, capitalise, which calls tr. - ----- -sys::[sed -n '7,9p' ../../examples/tutorial/capitalise.swift] ----- -We can call capitalise like this: - ----- -sys::[sed -n '12,14p' ../../examples/tutorial/capitalise.swift] ----- - -Here is the full program based on this exercise: - -.capitalise.swift -*********************** ----- -include::../../examples/tutorial/capitalise.swift[] ----- -*********************** - -Next, run swift and verify the output is correct. - ----- -$ swift capitalise.swift -... -$ cat capitalise.2.txt -HELLO FROM SWIFT ----- - -Anonymous files -~~~~~~~~~~~~~~~ -In the previous section, the file hello.txt is used only to store -an intermediate result. We don't really care about which name is used -for the file, and we can let Swift choose the name. - -To do that, omit the mapping entirely when declaring hellofile: - ----- -sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] ----- - -Swift will choose a filename, which in the present version will be in a -subdirectory called _concurrent. - - -Datatypes -~~~~~~~~~ -All data in variables and files has a data type. So far, we've seen two -types: - - - string - this is a built-in type for storing strings of text in - memory, much like in other programming languages - - messagefile - this is a user-defined type used to mark disc resident files as - containing messages - -SwiftScript has the additional built-in types: boolean, integer and -float that function much like their counterparts in other programming -languages. - -It is also possible to create user defined types with more structure, -for example: - - ----- -sys::[sed -n '3,6p' ../../examples/tutorial/types.swift] ----- - -Each element of the structured type can be accessed using a . like this: - ----- -sys::[sed -n '14p' ../../examples/tutorial/types.swift] ----- - -The following complete program, types.swift, outputs a greeting using a -user-defined structure type to hold parameters for the message: - -.types.swift -************ ----- -include::../../examples/tutorial/types.swift[] ----- -************ - -Structured types can be comprised of marker types for files. See the -later section on mappers for more information about this. - - -Arrays -~~~~~~ - -We can define arrays using the [] suffix in a variable declaration: - ----- -sys::[sed -n '9p' ../../examples/tutorial/arrays.swift] ----- - -This program, arrays.swift, will declare an array of message files. - -.arrays.swift -************* ----- -include::../../examples/tutorial/arrays.swift[] ----- -************* - -Observe that the type of the parameter to greeting is now an array of -strings, string s[], instead of a single string, string s, that -elements of the array can be referenced numerically, for example s[0], -and that the array is initialised using an array literal, -["how","are","you"]. - - -Mappers -~~~~~~~ - -A significant difference between SwiftScript and other languages is that -data can be referred to on disk through variables in a very similar -fashion to data in memory. For example, in the above examples we have -seen a variable definition like this: - ----- -sys::[sed -n '7p' ../../examples/tutorial/arrays.swift] ----- - -This means that outfile is a dataset variable, which is mapped to a -file on disk called arrays.txt. This variable can be assigned to -using = in a similar fashion to an in-memory variable. We can say that -outfile is mapped onto the disk file arrays.txt by a mapper. - -There are various ways of mapping in SwiftScript. Two forms of mapping, -simple named mapping and anonymous mapping, have already -been seen in this tutorial. Later exercises will introduce more forms. - -In simple named mapping, the name of the file that a variable is mapped to -is explictly listed. - ----- -sys::[sed -n '7p' ../../examples/tutorial/hello.swift] ----- - -This is useful when you want to explicitly name input and output files -for your program. An example of this can be seen with 'outfile' in the -hello world exercise. - -With anonymous mapping no name is specified in the source code. A name is -automatically generated for the file. This is useful for intermediate -files that are only referenced through SwiftScript. -A variable declaration is mapped anonymously by ommitting any mapper -definition. - ----- -sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] ----- - -Later exercises will introduce other ways of mapping from disk files to -SwiftScript variables. - - -The Regexp Mapper -^^^^^^^^^^^^^^^^^ -In this exercise, we introduce the regexp mapper. This mapper -transforms a string expression using a regular expression, and uses the -result of that transformation as the filename to map. - -regexp.swift demonstrates the use of this by placing output into a -file that is based on the name of the input file. Our input file is -mapped to the inputfile variable using the simple named mapper, then -we use the regular expression mapper to map the output file. We then use -the countwords() procedure to count the words in the input file and -store the result in the output file. In order for the countwords() -procedure to work correctly, add the wc utility (usually found in -/usr/bin/wc) to tc.data. - -The following program replaces the suffix of the input file (regexp_mapper.words.txt) -with a new suffix (.count) to create regexp_mapper.words.count. - -.regexp_mapper.swift -************* ----- -include::../../examples/tutorial/regexp_mapper.swift[] ----- -************** - -fixed_array_mapper -^^^^^^^^^^^^^^^^^^ -The fixed array mapper maps a list of files into an array. Each -element of the array is mapped into one file in the specified directory. -See fixed_array_mapper.swift below. - -.fixed_array_mapper.swift -************************* ----- -include::../../examples/tutorial/fixed_array_mapper.swift[] ----- -************************* - -foreach -~~~~~~~ -SwiftScript provides a control structure, foreach, to operate on each -element of an array in parallel. - -In this example, we will run the previous word counting example over -each file in an array without having to explicitly list the array -elements. The source code for this example is in foreach.swift. This -program uses three input files: foreach.1.txt, foreach.2.txt, and -foreach.3.txt. After you have run the workflow, you should see that there are three -output files: foreach.1.count, foreach.2.count and foreach.3.count, each -containing the word count for the corresponding input file. We combine -the use of the fixed_array_mapper and the regexp_mapper. - -.foreach.swift -************** ----- -include::../../examples/tutorial/foreach.swift[] ----- -************** - -If -~~ -Decisions can be made using 'if', like this: - ----- -sys::[sed -n '11,15p' ../../examples/tutorial/if.swift] ----- - -if.swift contains a simple example of this. Compile and run if.swift -and see that it outputs "good morning". Changing the morning variable -from true to false will cause the program to output "good afternoon". -Here is the contents of the full script: - -.if.swift -********* ------ -include::../../examples/tutorial/if.swift[] ------ -********* - -Sequential iteration -~~~~~~~~~~~~~~~~~~~~ - -A serial execution of instructions can be carried out using the sequential iteration construct. - -The following example demonstrates a simple application. Each step of -the iteration is a string representation of the byte count of the -previous step's output, with iteration terminating when the byte count -reaches zero. - -Here's the program: - -.sequential_iteration.swift -*************************** ----- -include::../../examples/tutorial/sequential_iteration.swift[] ----- -*************************** - -Echo is the standard unix echo utility. - -_wcl_ is our application code. It counts the number of bytes in the one -file and writes that count out to another, like this: - ----- -$ cat ../wcl -#!/bin/bash -echo -n $(wc -c < $1) > $2 - -$ echo -n hello > a -$ wcl a b -$ cat b -5 ----- - -Install the above wcl script somewhere and add a transformation catalog -(tc) entry for it (see an example below, note that you will need to change the path in third column to the path where wcl is located on your localhost). - ----- -localhost wcl /home/ketan/bin/wcl INSTALLED INTEL32::LINUX null ----- - -Then run the example program like this: - - ----- -$ swift iterate.swift -Swift svn swift-r3334 cog-r2752 - -RunID: 20100526-2259-gtlz8zf4 -Progress: -SwiftScript trace: extract int value , 16.0 -SwiftScript trace: extract int value , 2.0 -SwiftScript trace: extract int value , 1.0 -Final status: Finished successfully:4 ----- Copied: trunk/docs/tutorial/language_features (from rev 5078, trunk/docs/tutorial/language_features) =================================================================== --- trunk/docs/tutorial/language_features (rev 0) +++ trunk/docs/tutorial/language_features 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,390 @@ +Language features +----------------- + +Parameters +~~~~~~~~~~ + +Procedures can have parameters. Input parameters specify inputs to the +procedure and output parameters specify outputs. Our hello world greeting +procedure already uses an output parameter, t, which indicates where the +greeting output will go. In this section, we will modify the previous +script to add an input parameter to the greeting function. + +.parameter.swift +**************** +---- +include::../../examples/tutorial/parameter.swift[] +---- +**************** + +We have modified the signature of the greeting procedure to indicate +that it takes a single parameter, s, of type 'string'. + +We have modified the invocation of the 'echo' utility so that it takes +the value of s as a parameter, instead of the string literal "Hello, +world!". + +We have modified the output file definition to point to a different file +on disk. + +We have modified the invocation of greeting so that a greeting string is +supplied. + +The code for this section can be found in parameter.swift. It can be +invoked using the swift command, with output appearing in parameter.hello.txt: + + +---- +$ swift parameter.swift +---- + +Now that we can choose our greeting text, we can call the same procedure +with different parameters to generate several output files with +different greetings. The code is in manyparam.swift and can be run as +before using the swift command. + +.manyparam.swift +**************** +---- +include::../../examples/tutorial/manyparam.swift[] +---- +**************** + +Note that we can intermingle definitions of variables with invocations +of procedures. + +When this program runs, there should be three new files in the +working directory (manyparam.english.txt, manyparam.francais.txt +and manyparam.nihongo.txt) each containing a greeting in a different +language. + +In addition to specifying parameters positionally, parameters can be +named, and if desired a default value can be specified. + +Adding another application +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Now we'll define a new application procedure. The procedure we define +will capitalise all the words in the input file. + +To do this, we'll use the unix tr (translate) utility. Here is an +example of using tr on the unix command line, not using Swift: + +---- +$ echo hello | tr '[a-z]' '[A-Z]' +HELLO +---- + +There are two main steps - updating the transformation catalog, and +updating the application block. + +The transformation catalog lists where application executables are located on +remote sites. We need to modify the transformation catalog to define a logical +transformation for the tr utility. The transformation catalog can be found +in etc/tc.data. There are already several entries specifying +where executables can be found. Add a new line to the file, specifying +where tr can be found (usually in /usr/bin/tr but it may differ on +your system), like this: + +---- +localhost tr /usr/bin/tr INSTALLED INTEL32::LINUX null +---- + +For now, ignore all of the fields except the second and the third. The +second field tr specifies a logical application name and the third +specifies the location of the application executable. + +Now that we have defined where to find tr, we can use it in SwiftScript. + +We can define a new procedure, capitalise, which calls tr. + +---- +sys::[sed -n '7,9p' ../../examples/tutorial/capitalise.swift] +---- +We can call capitalise like this: + +---- +sys::[sed -n '12,14p' ../../examples/tutorial/capitalise.swift] +---- + +Here is the full program based on this exercise: + +.capitalise.swift +*********************** +---- +include::../../examples/tutorial/capitalise.swift[] +---- +*********************** + +Next, run swift and verify the output is correct. + +---- +$ swift capitalise.swift +... +$ cat capitalise.2.txt +HELLO FROM SWIFT +---- + +Anonymous files +~~~~~~~~~~~~~~~ +In the previous section, the file hello.txt is used only to store +an intermediate result. We don't really care about which name is used +for the file, and we can let Swift choose the name. + +To do that, omit the mapping entirely when declaring hellofile: + +---- +sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] +---- + +Swift will choose a filename, which in the present version will be in a +subdirectory called _concurrent. + + +Datatypes +~~~~~~~~~ +All data in variables and files has a data type. So far, we've seen two +types: + + - string - this is a built-in type for storing strings of text in + memory, much like in other programming languages + - messagefile - this is a user-defined type used to mark disc resident files as + containing messages + +SwiftScript has the additional built-in types: boolean, integer and +float that function much like their counterparts in other programming +languages. + +It is also possible to create user defined types with more structure, +for example: + + +---- +sys::[sed -n '3,6p' ../../examples/tutorial/types.swift] +---- + +Each element of the structured type can be accessed using a . like this: + +---- +sys::[sed -n '14p' ../../examples/tutorial/types.swift] +---- + +The following complete program, types.swift, outputs a greeting using a +user-defined structure type to hold parameters for the message: + +.types.swift +************ +---- +include::../../examples/tutorial/types.swift[] +---- +************ + +Structured types can be comprised of marker types for files. See the +later section on mappers for more information about this. + + +Arrays +~~~~~~ + +We can define arrays using the [] suffix in a variable declaration: + +---- +sys::[sed -n '9p' ../../examples/tutorial/arrays.swift] +---- + +This program, arrays.swift, will declare an array of message files. + +.arrays.swift +************* +---- +include::../../examples/tutorial/arrays.swift[] +---- +************* + +Observe that the type of the parameter to greeting is now an array of +strings, string s[], instead of a single string, string s, that +elements of the array can be referenced numerically, for example s[0], +and that the array is initialised using an array literal, +["how","are","you"]. + + +Mappers +~~~~~~~ + +A significant difference between SwiftScript and other languages is that +data can be referred to on disk through variables in a very similar +fashion to data in memory. For example, in the above examples we have +seen a variable definition like this: + +---- +sys::[sed -n '7p' ../../examples/tutorial/arrays.swift] +---- + +This means that outfile is a dataset variable, which is mapped to a +file on disk called arrays.txt. This variable can be assigned to +using = in a similar fashion to an in-memory variable. We can say that +outfile is mapped onto the disk file arrays.txt by a mapper. + +There are various ways of mapping in SwiftScript. Two forms of mapping, +simple named mapping and anonymous mapping, have already +been seen in this tutorial. Later exercises will introduce more forms. + +In simple named mapping, the name of the file that a variable is mapped to +is explictly listed. + +---- +sys::[sed -n '7p' ../../examples/tutorial/hello.swift] +---- + +This is useful when you want to explicitly name input and output files +for your program. An example of this can be seen with 'outfile' in the +hello world exercise. + +With anonymous mapping no name is specified in the source code. A name is +automatically generated for the file. This is useful for intermediate +files that are only referenced through SwiftScript. +A variable declaration is mapped anonymously by ommitting any mapper +definition. + +---- +sys::[sed -n '11p' ../../examples/tutorial/capitalise_anonymous.swift] +---- + +Later exercises will introduce other ways of mapping from disk files to +SwiftScript variables. + + +The Regexp Mapper +^^^^^^^^^^^^^^^^^ +In this exercise, we introduce the regexp mapper. This mapper +transforms a string expression using a regular expression, and uses the +result of that transformation as the filename to map. + +regexp.swift demonstrates the use of this by placing output into a +file that is based on the name of the input file. Our input file is +mapped to the inputfile variable using the simple named mapper, then +we use the regular expression mapper to map the output file. We then use +the countwords() procedure to count the words in the input file and +store the result in the output file. In order for the countwords() +procedure to work correctly, add the wc utility (usually found in +/usr/bin/wc) to tc.data. + +The following program replaces the suffix of the input file (regexp_mapper.words.txt) +with a new suffix (.count) to create regexp_mapper.words.count. + +.regexp_mapper.swift +************* +---- +include::../../examples/tutorial/regexp_mapper.swift[] +---- +************** + +fixed_array_mapper +^^^^^^^^^^^^^^^^^^ +The fixed array mapper maps a list of files into an array. Each +element of the array is mapped into one file in the specified directory. +See fixed_array_mapper.swift below. + +.fixed_array_mapper.swift +************************* +---- +include::../../examples/tutorial/fixed_array_mapper.swift[] +---- +************************* + +foreach +~~~~~~~ +SwiftScript provides a control structure, foreach, to operate on each +element of an array in parallel. + +In this example, we will run the previous word counting example over +each file in an array without having to explicitly list the array +elements. The source code for this example is in foreach.swift. This +program uses three input files: foreach.1.txt, foreach.2.txt, and +foreach.3.txt. After you have run the workflow, you should see that there are three +output files: foreach.1.count, foreach.2.count and foreach.3.count, each +containing the word count for the corresponding input file. We combine +the use of the fixed_array_mapper and the regexp_mapper. + +.foreach.swift +************** +---- +include::../../examples/tutorial/foreach.swift[] +---- +************** + +If +~~ +Decisions can be made using 'if', like this: + +---- +sys::[sed -n '11,15p' ../../examples/tutorial/if.swift] +---- + +if.swift contains a simple example of this. Compile and run if.swift +and see that it outputs "good morning". Changing the morning variable +from true to false will cause the program to output "good afternoon". +Here is the contents of the full script: + +.if.swift +********* +----- +include::../../examples/tutorial/if.swift[] +----- +********* + +Sequential iteration +~~~~~~~~~~~~~~~~~~~~ + +A serial execution of instructions can be carried out using the sequential iteration construct. + +The following example demonstrates a simple application. Each step of +the iteration is a string representation of the byte count of the +previous step's output, with iteration terminating when the byte count +reaches zero. + +Here's the program: + +.sequential_iteration.swift +*************************** +---- +include::../../examples/tutorial/sequential_iteration.swift[] +---- +*************************** + +Echo is the standard unix echo utility. + +_wcl_ is our application code. It counts the number of bytes in the one +file and writes that count out to another, like this: + +---- +$ cat ../wcl +#!/bin/bash +echo -n $(wc -c < $1) > $2 + +$ echo -n hello > a +$ wcl a b +$ cat b +5 +---- + +Install the above wcl script somewhere and add a transformation catalog +(tc) entry for it (see an example below, note that you will need to change the path in third column to the path where wcl is located on your localhost). + +---- +localhost wcl /home/ketan/bin/wcl INSTALLED INTEL32::LINUX null +---- + +Then run the example program like this: + + +---- +$ swift iterate.swift +Swift svn swift-r3334 cog-r2752 + +RunID: 20100526-2259-gtlz8zf4 +Progress: +SwiftScript trace: extract int value , 16.0 +SwiftScript trace: extract int value , 2.0 +SwiftScript trace: extract int value , 1.0 +Final status: Finished successfully:4 +---- Deleted: trunk/docs/tutorial/runtime_features =================================================================== --- trunk/docs/tutorial/runtime_features 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/runtime_features 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,160 +0,0 @@ -Runtime features ----------------- - -Visualizing the workflow as a graph -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -When running a workflow, its possible to generate a provenance graph at -the same time: - - ------ -$ swift -pgraph graph.dot first.swift -$ dot -ograph.png -Tpng graph.dot ----- - -graph.png can then be viewed using your favourite image viewer. The dot application is part of the graphViz project. More information can be found at http://www.graphviz.org. - -Running on a remote site -~~~~~~~~~~~~~~~~~~~~~~~~ - -As configured by default, all jobs are run locally. In the previous -examples, we've invoked echo and tr executables from our SwiftScript -program. These have been run on the local system (the same computer on -which you ran swift). We can also make our computations run on a -remote resource. For more information on running Swift on a remote site -please see the http://www.ci.uchicago.edu/swift/guides/release-0.93/siteguide/siteguide.html[Site Configuration Guide]. - - -Starting and restarting -~~~~~~~~~~~~~~~~~~~~~~~ - -Now we're going to try out the restart capabilities of Swift. We will -make a workflow that will deliberately fail, and then we will fix the -problem so that Swift can continue with the workflow. - -First we have the program in working form, restart.swift. - -.restart.swift -************** ----- -include::../../examples/tutorial/restart.swift[] ----- -************** - -We must define some transformation catalog entries: - ----- -localhost touch /usr/bin/touch INSTALLED INTEL32::LINUX null -localhost broken /bin/true INSTALLED INTEL32::LINUX null ----- - -Now we can run the program: - ----- -$ swift restart.swift -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1119-3kgzzi15 -Progress: -Final status: Finished successfully:4 ----- - -Four jobs run - touch, echo, broken and a final echo. (note that broken -isn't actually broken yet). - -Now we will break the broken job and see what happens. Replace the -definition in tc.data for broken with this: - ----- -localhost broken /bin/false INSTALLED INTEL32::LINUX null ----- - -Now when we run the workflow, the broken task fails: - ----- -$ swift restart.swift - -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1121-tssdcljg -Progress: -Progress: Stage in:1 Finished successfully:2 -Execution failed: - Exception in broken: -Arguments: [process] -Host: localhost -Directory: restart-20100526-1121-tssdcljg/jobs/1/broken-1i6ufisj -stderr.txt: -stdout.txt: ----- - -From the output we can see that touch and the first echo completed, but -then broken failed and so swift did not attempt to execute the final echo. - -There will be a restart log with the same name as the RunID: - - ----- -$ ls *20100526-1121-tssdcljg*rlog -restart-20100526-1121-tssdcljg.0.rlog ----- - -This restart log contains enough information for swift to know which -parts of the workflow were executed successfully. - -We can try to rerun it immediately, like this: - - ----- -$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift - -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1125-7yx0zi6d -Progress: -Execution failed: - Exception in broken: -Arguments: [process] -Host: localhost -Directory: restart-20100526-1125-7yx0zi6d/jobs/m/broken-msn1gisj -stderr.txt: -stdout.txt: - -Caused by: - Exit code 1 ----- - -Swift tried to resume the workflow by executing "broken" again. It did -not try to run the touch or first echo jobs, because the restart log -says that they do not need to be executed again. - -Broken failed again, leaving the original restart log in place. - -Now we will fix the problem with "broken" by restoring the original -tc.data line that works. - -Remove the existing "broken" line and replace it with the successful -tc.data entry above: - - ----- -localhost broken /bin/true INSTALLED INTEL32::LINUX null ----- - -Now run again: - - ----- -$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift - -Swift 0.9 swift-r2860 cog-r2388 - -RunID: 20100526-1128-a2gfuxhg -Progress: -Final status: Initializing:2 Finished successfully:2 ----- - -Swift tries to run "broken" again. This time it works, and so Swift -continues on to execute the final piece of the workflow as if nothing -had ever gone wrong. Copied: trunk/docs/tutorial/runtime_features (from rev 5078, trunk/docs/tutorial/runtime_features) =================================================================== --- trunk/docs/tutorial/runtime_features (rev 0) +++ trunk/docs/tutorial/runtime_features 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,317 @@ +Runtime features +---------------- + +Visualizing the workflow as a graph +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When running a workflow, its possible to generate a provenance graph at +the same time: + + +----- +$ swift -pgraph graph.dot first.swift +$ dot -ograph.png -Tpng graph.dot +---- + +graph.png can then be viewed using your favourite image viewer. The dot application is part of the graphViz project. More information can be found at http://www.graphviz.org. + +Running on a remote site +~~~~~~~~~~~~~~~~~~~~~~~~ + +As configured by default, all jobs are run locally. In the previous +examples, we've invoked echo and tr executables from our SwiftScript +program. These have been run on the local system (the same computer on +which you ran swift). We can also make our computations run on a +remote resource. + +WARNING: This example is necessarily more vague than previous ones, +because it requires access to remote resources. You should ensure that +you can submit a job using the globus-job-run (or globusrun-ws) +command(s). + +We do not need to modify any SwiftScript code to run on another +resource. Instead, we must modify another catalog, the site catalog. +This catalog provides details of the location that applications will be +run, with the default settings referring to the local machine. We will +modify it to refer to a remote resource - the UC Teraport cluster. If +you are not a UC Teraport user, you should use details of a different +resource that you do have access to. + +The site catalog is located in etc/sites.xml and is a relatively +straightforward XML format file. We must modify each of the following +three settings: gridftp (which indicates how and where data can be +transferred to the remote resource), jobmanager (which indicates how +applications can be run on the remote resource) and workdirectory (which +indicates where working storage can be found on the remote resource). + + +Writing a mapper +~~~~~~~~~~~~~~~~ + +This section will introduce writing a custom mapper so that Swift is +able to access data files laid out in application-specific ways. + +An application-specific mapper must take the form of a Java class that +implements the http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/Mapper.html[Mapper +interface]. + +Usually you don't need to implement this interface directly, because +Swift provides a number of more concrete classes with some functionality +already implemented. + +The hierarchy of helper classes is: + +http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/Mapper.html[Mapper] + +This is the abstract interface for mappers in Swift. You must +implement methods to provide access to mapper properties, to map from a +SwiftScript dataset path (such as foo[1].bar) to a file name, to check +whether a file exists. None of the default Swift mappers implement this +interface directly - instead they use one of the following helper classes. + +http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/AbstractMapper.html[Abstract Mapper] + +This provides helper methods to manage mapper properties and to handle +existance checking. Examples of mappers which use this class are: +http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.array_mapper[Array Mapper], +http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.csv_mapper[CSV Mapper], +http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.fixed_array_mapper[Fixed Array Mapper], +http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.regexp_mapper[Regexp Mapper], +and http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.single_file_mapper[Single File Mapper]. + +http://www.ci.uchicago.edu/swift/javadoc/vdsk/org/griphyn/vdl/mapping/file/AbstractFileMapper.html[AbstractFileMapper] +This provides a helper class for mappers which select files based on +selecting files from a directory listing. It is necessary to write some +helper methods that are different from the above mapper methods. +Examples of mappers which use this class are: +http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.simple_mapper[simple_mapper], +http://www.ci.uchicago.edu/swift/guides/userguide.php#mapper.filesys_mapper[filesys_mapper], +and the StructuredRegularExpressionMapper. + +In general, to write a mapper, choose either the AbstractMapper or the +AbstractFileMapper and extend those. If your mapper will generally +select the files it returns based on a directory listing and will +convert paths to filenames using some regular conversion (for example, +in the way that simple_mapper maps files in a directory that match a +particular pattern), then you should probably use the +AbstractFileMapper. If your mapper will produce a list of files in some +other way (for example, in the way that csv_mapper maps based on +filenames given in a CSV file rather than looking at which files are in +a directory), then you should probably use the AbstractMapper. + + +Writing a very basic mapper +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this section, we will write a very basic (almost useless) mapper that +will map a SwiftScript dataset into a hardcoded file called +myfile.txt, like this: + + + Swift variable Filename + + var <-----------------------------> myfile.txt + +We should be able to use the mapper we write in a SwiftScript program +like this: + + +---- +type file; +file f ; +---- + +First we must choose a base class - AbstractMapper or +AbstractFileMapper. We aren't going to use a directory listing to decide +on our mapping - we are getting the mapping from some other source (in +fact, it will be hard coded). So we will use AbstractMapper. + +So now onto the source code. We must define a subclass of AbstractMapper +and implement several mapper methods: isStatic, existing, and map. These +methods are documented in the javadoc for the Mapper interface. + +Here is the code implementing this mapper. Put this in your source +vdsk directory, make a directory src/tutorial/|and put this file in +src/tutorial/MyFirstMapper.java. + +.MyFirstMapper.java +******************* +---- +include::../../examples/tutorial/MyFirstMapper.java[] +---- +******************* + +Now we need to inform the Swift engine about the existence of this +mapper. We do that by editing the MapperFactory class definition, in +src/org/griphyn/vdl/mapping/MapperFactory.java and adding a +registerMapper call alongside the existing registerMapper calls, like this: + + +---- +registerMapper("my_first_mapper", tutorial.MyFirstMapper.class); +---- + +The first parameter is the name of the mapper that will be used in +SwiftScript program. The second parameter is the new Mapper class that +we just wrote. + +Now rebuild Swift using the "ant redist" target. + +This new Swift build will be aware of your new mapper. We can test it +out with a hello world program: + +.my_first_mapper.swift +********************** +----- +include::../../examples/tutorial/my_first_mapper.swift[] +----- +********************** + +Run this program, and hopefully you will find the "hello" string has +been output into the hard coded output file myfile.txt: + + +---- +$ cat myfile.txt +hello +---- + +So that's a first very simple mapper implemented. Compare the source +code to the single_file_mapper in +http://www.ci.uchicago.edu/trac/swift/browser/trunk/src/org/griphyn/vdl/mapping/file/SingleFileMapper.java[SingleFileMapper.java]. +There is not much more code to the single_file_mapper - mostly code to +deal with the file parameter. + + +Starting and restarting +~~~~~~~~~~~~~~~~~~~~~~~ + +Now we're going to try out the restart capabilities of Swift. We will +make a workflow that will deliberately fail, and then we will fix the +problem so that Swift can continue with the workflow. + +First we have the program in working form, restart.swift. + +.restart.swift +************** +---- +include::../../examples/tutorial/restart.swift[] +---- +************** + +We must define some transformation catalog entries: + +---- +localhost touch /usr/bin/touch INSTALLED INTEL32::LINUX null +localhost broken /bin/true INSTALLED INTEL32::LINUX null +---- + +Now we can run the program: + +---- +$ swift restart.swift +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1119-3kgzzi15 +Progress: +Final status: Finished successfully:4 +---- + +Four jobs run - touch, echo, broken and a final echo. (note that broken +isn't actually broken yet). + +Now we will break the broken job and see what happens. Replace the +definition in tc.data for broken with this: + +---- +localhost broken /bin/false INSTALLED INTEL32::LINUX null +---- + +Now when we run the workflow, the broken task fails: + +---- +$ swift restart.swift + +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1121-tssdcljg +Progress: +Progress: Stage in:1 Finished successfully:2 +Execution failed: + Exception in broken: +Arguments: [process] +Host: localhost +Directory: restart-20100526-1121-tssdcljg/jobs/1/broken-1i6ufisj +stderr.txt: +stdout.txt: +---- + +From the output we can see that touch and the first echo completed, but +then broken failed and so swift did not attempt to execute the final echo. + +There will be a restart log with the same name as the RunID: + + +---- +$ ls *20100526-1121-tssdcljg*rlog +restart-20100526-1121-tssdcljg.0.rlog +---- + +This restart log contains enough information for swift to know which +parts of the workflow were executed successfully. + +We can try to rerun it immediately, like this: + + +---- +$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift + +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1125-7yx0zi6d +Progress: +Execution failed: + Exception in broken: +Arguments: [process] +Host: localhost +Directory: restart-20100526-1125-7yx0zi6d/jobs/m/broken-msn1gisj +stderr.txt: +stdout.txt: + +Caused by: + Exit code 1 +---- + +Swift tried to resume the workflow by executing "broken" again. It did +not try to run the touch or first echo jobs, because the restart log +says that they do not need to be executed again. + +Broken failed again, leaving the original restart log in place. + +Now we will fix the problem with "broken" by restoring the original +tc.data line that works. + +Remove the existing "broken" line and replace it with the successful +tc.data entry above: + + +---- +localhost broken /bin/true INSTALLED INTEL32::LINUX null +---- + +Now run again: + + +---- +$ swift -resume restart-20100526-1121-tssdcljg.0.rlog restart.swift + +Swift 0.9 swift-r2860 cog-r2388 + +RunID: 20100526-1128-a2gfuxhg +Progress: +Final status: Initializing:2 Finished successfully:2 +---- + +Swift tries to run "broken" again. This time it works, and so Swift +continues on to execute the final piece of the workflow as if nothing +had ever gone wrong. Deleted: trunk/docs/tutorial/tutorial.txt =================================================================== --- trunk/docs/tutorial/tutorial.txt 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/tutorial/tutorial.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,17 +0,0 @@ -A Swift Tutorial -================ - -:toc: -:icons: -:website: http://www.ci.uchicago.edu/swift/guides/tutorial.php -:numbered: - -include::introduction[] - -include::hello_world[] - -include::language_features[] - -include::runtime_features[] - -include::bits[] Copied: trunk/docs/tutorial/tutorial.txt (from rev 5078, trunk/docs/tutorial/tutorial.txt) =================================================================== --- trunk/docs/tutorial/tutorial.txt (rev 0) +++ trunk/docs/tutorial/tutorial.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,17 @@ +A Swift Tutorial +================ + +:toc: +:icons: +:website: http://www.ci.uchicago.edu/swift/guides/tutorial.php +:numbered: + +include::introduction[] + +include::hello_world[] + +include::language_features[] + +include::runtime_features[] + +include::bits[] Modified: trunk/docs/userguide/cdm =================================================================== --- trunk/docs/userguide/cdm 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/userguide/cdm 2011-09-08 00:53:06 UTC (rev 5086) @@ -2,202 +2,202 @@ -------------------------- Overview -~~~~~~~~ -. The user specifies a CDM policy in a file, customarily fs.data. -. fs.data is given to Swift on the command line. -. The Swift data module (org.globus.swift.data) is informed of the CDM policy. -. At job launch time, the VDL Karajan code queries the CDM policy, - .. altering the file staging phase, and - .. sending fs.data to the compute site. -. At job run time, the Swift wrapper script - .. consults a Perl script to obtain policy, and - .. uses wrapper extensions to modify data movement. -. Similarly, stage out can be changed. - - +~~~~~~~~ +. The user specifies a CDM policy in a file, customarily fs.data. +. fs.data is given to Swift on the command line. +. The Swift data module (org.globus.swift.data) is informed of the CDM policy. +. At job launch time, the VDL Karajan code queries the CDM policy, + .. altering the file staging phase, and + .. sending fs.data to the compute site. +. At job run time, the Swift wrapper script + .. consults a Perl script to obtain policy, and + .. uses wrapper extensions to modify data movement. +. Similarly, stage out can be changed. + + .Command line ------ -$ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift ----- - +$ swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift +----- + CDM policy file format ~~~~~~~~~~~~~~~~~~~~~~ .Example ------ -# Describe CDM for my job -property GATHER_LIMIT 1 -rule .*input.txt DIRECT /gpfs/homes/wozniak/data -rule .*xfile*.data BROADCAST /dev/shm -rule .* DEFAULT ----- - -The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. - - +# Describe CDM for my job +property GATHER_LIMIT 1 +rule .*input.txt DIRECT /gpfs/homes/wozniak/data +rule .*xfile*.data BROADCAST /dev/shm +rule .* DEFAULT +----- + +The lines contain: + +. A directive, either rule or property +. A rule has: + .. A regular expression + .. A policy token + .. Additional policy-specific arguments +. A property has + .. A policy property token + .. The token value +. Comments with # . +. Blank lines are ignored. + + .Notes - -. The policy file is used as a lookup database by Swift and Perl methods. -. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. -. If the lookup does not succeed, the result is DEFAULT. - . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . - - + +. The policy file is used as a lookup database by Swift and Perl methods. +. For example, a lookup with the database above given the argument input.txt would result in the Direct policy. +. If the lookup does not succeed, the result is DEFAULT. + . Policies are listed as subclasses of org.globus.swift.data.policy.Policy . + + Policy Descriptions ~~~~~~~~~~~~~~~~~~~ -.Default - -* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. - - +.Default + +* Just use file staging as provided by Swift/CoG. Identical to behavior if no CDM file is given. + + .Broadcast ------ -rule .*xfile*.data BROADCAST /dev/shm ------ -* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. -* On the BG/P, this will make use of the f2cn tool. -* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. - - +----- +rule .*xfile*.data BROADCAST /dev/shm +----- +* The input files matching the pattern will be stored in the given directory, an LFS location, with links in the job directory. +* On the BG/P, this will make use of the f2cn tool. +* On machines not implementing an efficient broadcast, we will just ensure correctness. For example, on a workstation, the location could be in a /tmp RAM FS. + + .Direct ------ -rule .*input.txt DIRECT /gpfs/scratch/wozniak/ ------ -* Allows for direct I/O to the parallel FS without staging. -* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. -* The output files matching the pattern will be stored in the given directory, with links in the job directory. -* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . - - -.Local ------ -rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K ------ -* Allows for client-directed input copy to the compute node. -* The user may specify cp or dd as the input transfer program. -* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. -* Argument list: [tool] [GFS directory] [tool arguments]* - - +----- +rule .*input.txt DIRECT /gpfs/scratch/wozniak/ +----- +* Allows for direct I/O to the parallel FS without staging. +* The input files matching the pattern must already exist in the given directory, a GFS location. Links will be placed in the job directory. +* The output files matching the pattern will be stored in the given directory, with links in the job directory. +* Example: In the rule above, the Swift-generated file name ./data/input.txt would be accessed by the user job in /gpfs/homes/wozniak/data/input.txt . + + +.Local +----- +rule .*input.txt LOCAL dd /gpfs/homes/wozniak/data obs=64K +----- +* Allows for client-directed input copy to the compute node. +* The user may specify cp or dd as the input transfer program. +* The input files matching the pattern must already exist in the given directory, a GFS location. Copies will be placed in the job directory. +* Argument list: [tool] [GFS directory] [tool arguments]* + + .Gather ------ -property GATHER_LIMIT 500000000 # 500 MB -property GATHER_DIR /dev/shm/gather -property GATHER_TARGET /gpfs/wozniak/data/gather_target -rule .*.output.txt GATHER ----- - -* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. -* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. -* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. -* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. -* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . -* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. - +property GATHER_LIMIT 500000000 # 500 MB +property GATHER_DIR /dev/shm/gather +property GATHER_TARGET /gpfs/wozniak/data/gather_target +rule .*.output.txt GATHER +----- + +* The output files matching the pattern will be present to tasks in the job directory as usual but noted in a _swiftwrap shell array GATHER_OUTPUT. +* The GATHER_OUTPUT files will be cached in the GATHER_DIR, an LFS location. +* The cache will be flushed when a job ends if a du on GATHER_DIR exceeds GATHER_LIMIT. +* As the cache fills or on stage out, the files will be bundled into randomly named tarballs in GATHER_TARGET, a GFS location. +* If the compute node is an SMP, GATHER_DIR is a shared resource. It is protected by the link file GATHER_DIR/.cdm.lock . +* Unpacking the tarballs in GATHER_TARGET will produce the user-specified filenames. + .Summary - -. Files created by application -. Acquire lock -. Move files to cache -. Check cache size -. If limit exceeded, move all cache files to outbox -. Release lock -. If limit was exceeded, stream outbox as tarball to target - + +. Files created by application +. Acquire lock +. Move files to cache +. Check cache size +. If limit exceeded, move all cache files to outbox +. Release lock +. If limit was exceeded, stream outbox as tarball to target + .Notes - -* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . -* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . - - + +* Gather required quite a bit of shell functionality to manage the lock, etc. This is placed in cdm_lib.sh . +* vdl_int.k needed an additional task submission (cdm_cleanup.sh) to perform the final flush at workflow completion time . This task also uses cdm_lib.sh . + + VDL/Karajan processing ~~~~~~~~~~~~~~~~~~~~~~ -. CDM functions are available in Karajan via the cdm namespace. -. These functions are defined in org.globus.swift.data.Query . -. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. - - -Swift wrapper CDM routines +. CDM functions are available in Karajan via the cdm namespace. +. These functions are defined in org.globus.swift.data.Query . +. If CDM is enabled, VDL skips file staging for files unless the policy is DEFAULT. + + +Swift wrapper CDM routines ~~~~~~~~~~~~~~~~~~~~~~~~~~ -. The cdm.pl script is shipped to the compute node if CDM is enabled. -. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). -. The cdm_action() shell function handles CDM methods, typically just producing a link. - - -Test cases +. The cdm.pl script is shipped to the compute node if CDM is enabled. +. When linking in inputs, CDM is consulted by _swiftwrap:cdm_lookup(). +. The cdm_action() shell function handles CDM methods, typically just producing a link. + + +Test cases ~~~~~~~~~~ - -. Simple test cases are in: - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and - https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs -. Do a: - mkdir cdm - cd cdm - svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts -. In cdm-direct, run: - source ./setup.sh local local local -. Run workflow: - swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift -. Note that staging is skipped for input.txt - policy: file://localhost/input.txt : DIRECT - FILE_STAGE_IN_START file=input.txt ... - FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT - FILE_STAGE_IN_END file=input.txt ... -. In the wrapper output, the input file is handled by CDM functionality: - Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS - CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct - CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt - Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE -. all-pairs is quite similar but uses more policies. - - + +. Simple test cases are in: + https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/cdm-direct and + https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts/all-pairs +. Do a: + mkdir cdm + cd cdm + svn co https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/scripts +. In cdm-direct, run: + source ./setup.sh local local local +. Run workflow: + swift -sites.file sites.xml -tc.file tc.data -cdm.file fs.data stream.swift +. Note that staging is skipped for input.txt + policy: file://localhost/input.txt : DIRECT + FILE_STAGE_IN_START file=input.txt ... + FILE_STAGE_IN_SKIP file=input.txt policy=DIRECT + FILE_STAGE_IN_END file=input.txt ... +. In the wrapper output, the input file is handled by CDM functionality: + Progress 2010-01-21 13:50:32.466572727-0600 LINK_INPUTS + CDM_POLICY: DIRECT /homes/wozniak/cdm/scripts/cdm-direct + CDM: jobs/t/cp_sh-tkul4nmj input.txt DIRECT /homes/wozniak/cdm/scripts/cdm-direct + CDM[DIRECT]: Linking jobs/t/cp_sh-tkul4nmj/input.txt to /homes/wozniak/cdm/scripts/cdm-direct/input.txt + Progress 2010-01-21 13:50:32.486016708-0600 EXECUTE +. all-pairs is quite similar but uses more policies. + + PTMap case -^^^^^^^^^^ -. Start with vanilla PTMap: - .. cd cdm - .. mkdir apps - .. cd apps - .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap -. Source setup.sh -. Use start.sh, which - .. applies CDM policy from fs.local.data - - +^^^^^^^^^^ +. Start with vanilla PTMap: + .. cd cdm + .. mkdir apps + .. cd apps + .. https://svn.mcs.anl.gov/repos/wozniak/collab/cdm/apps/ptmap +. Source setup.sh +. Use start.sh, which + .. applies CDM policy from fs.local.data + + CDM site-aware policy file format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + Example ----- -#Describe CDM for my job -#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior -property GATHER_LIMIT 1 -rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data -rule cluster1 .*xfile*.data BROADCAST /dev/shm -rule ANYWHERE .* DEFAULT +#Describe CDM for my job +#Use DIRECT and BROADCAST if on cluster1, else use DEFAULT behavior +property GATHER_LIMIT 1 +rule cluster1 .*input.txt DIRECT /gpfs/homes/wozniak/data +rule cluster1 .*xfile*.data BROADCAST /dev/shm +rule ANYWHERE .* DEFAULT ----- - + The lines contain: - -. A directive, either rule or property -. A rule has: - .. A regular expression for site matchin - .. A regular expression for filename matching - .. A policy token - .. Additional policy-specific arguments -. A property has - .. A policy property token - .. The token value -. Comments with # . -. Blank lines are ignored. + +. A directive, either rule or property +. A rule has: + .. A regular expression for site matchin + .. A regular expression for filename matching + .. A policy token + .. Additional policy-specific arguments +. A property has + .. A policy property token + .. The token value +. Comments with # . +. Blank lines are ignored. Modified: trunk/docs/userguide/coasters =================================================================== --- trunk/docs/userguide/coasters 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/userguide/coasters 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,5 +1,7 @@ Coasters -------- +Coasters were introduced in Swift v0.6 as an experimental feature. + In many applications, Swift performance can be greatly enhanced by the use of CoG coasters. CoG coasters provide a low-overhead job submission and file transfer mechanism suited for the execution of short jobs (on Deleted: trunk/docs/userguide/log-processing =================================================================== --- trunk/docs/userguide/log-processing 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/userguide/log-processing 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,104 +0,0 @@ - -Log Processing --------------- - -To properly generate log plots, you must enable VDL/Karajan logging. -TODO:How? - - -You should check the scripts that you intend to use to determine -what log lines they require and ensure that you are generating -those lines via log4j.properties - -Make sure log4.properties contains: --------------------------------------- -log4j.logger.swift=DEBUG -log4j.logger.org.globus.cog.abstraction.coaster.service.job.manager.Cpu=DEBUG -log4j.logger.org.globus.cog.abstraction.coaster.service.job.manager.Block=DEBUG --------------------------------------- -TODO: Does it work for coasters-based runs only? - -Normalize event times in the log to the run start time -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* Generate the log, assuming the log is titled +swift-run.log+ - ------------------------------------------- -./normalize-log.pl file.contains.start.time swift-run.log > swift-run.norm ------------------------------------------- -TODO:In what format does the start time be in 'file.contains.start.time' - - -Make a basic load plot from Coasters Cpu log lines -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -. Normalize the log. -. Build up a load data file: -+ ------------------------------------------- -./cpu-job-load.pl < swift-run.norm > load.data ------------------------------------------- -. Plot with the JFreeChart-based plotter in usertools/plotter: -+ ------------------------------------------- -swift_plotter.zsh -s load.cfg load.eps load.data ------------------------------------------- -Note: Th load.cfg is available from swift/libexec/log-processing/ - - -Make a basic job completion plot from Coasters Cpu log lines -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -. Normalize the log. - -. Build up a completed data file: -+ ------------------------------------------- -./cpu-job-completed.pl < swift-run.norm > completed.data ------------------------------------------- - -. Plot with the JFreeChart-based plotter in usertools/plotter: -+ ------------------------------------------- -swift_plotter.zsh -s completed.cfg completed.eps completed.data ------------------------------------------- - -Make a basic Block allocation plot from Coasters Block log lines -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -. Normalize the log. - -. Build up a block allocation data file: -+ ------------------------------------------- -./block-level.pl < swift-run.norm > blocks.data ------------------------------------------- - -. Plot with the JFreeChart-based plotter in usertools/plotter: -+ ------------------------------------------- -swift_plotter.zsh -s blocks.{cfg,eps,data} ------------------------------------------- - -Make a job runtime distribution plot from Coasters Cpu log lines -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -. Normalize the log. - -. Build up a job runtime file: -+ ------------------------------------------- -./extract-times.pl < swift-run.norm > times.data ------------------------------------------- - -. Put the job runtimes into 1-second buckets: -+ ------------------------------------------- -./ buckets.pl 1 times.data > buckets.data ------------------------------------------- - -. Plot with the JFreeChart-based plotter in usertools/plotter: -+ ------------------------------------------- -swift_plotter.zsh -s buckets.cfg buckets.eps buckets.data ------------------------------------------- Modified: trunk/docs/userguide/userguide.txt =================================================================== --- trunk/docs/userguide/userguide.txt 2011-09-07 21:09:21 UTC (rev 5085) +++ trunk/docs/userguide/userguide.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -37,5 +37,3 @@ include::howto_tips[] include::cdm[] - -include::log-processing[] Property changes on: trunk/docs/utils ___________________________________________________________________ Added: svn:ignore + gensites.html gensites.pdf Deleted: trunk/docs/utils/gensites.txt =================================================================== --- trunk/docs/utils/gensites.txt 2011-09-06 19:12:14 UTC (rev 5078) +++ trunk/docs/utils/gensites.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -1,235 +0,0 @@ -Gensites -========== -:toc: -:icons: -:website: http://www.ci.uchicago.edu/swift -:numbered: - -Overview --------- -To simplify this configuration process, versions of Swift starting with -0.92 include a utility called gensites. The gensites command is used -to generate a sites.xml file for running a swift workflow on a given -site. It accomplishes this by using a series of templates. The templates -used by gensites are the same templates used for internal testing, so -they are likely up to date and known to work on a given site. - - -Viewing All Available Site Templates ------------------------------------- -To view a list of all available templates, run the following command: - ------ -$ gensites -T ------ - -You should see output similar to this: ------ -intrepid -local -local-pbs-coasters -pads -queenbee -sge-local -ssh -ssh-pbs-coasters -surveyor ------ - -You will notice that the templates can be specific to a particular set -of machines like Intrepid and Queenbee, or they may be more general and -aim to work across a variety of machines, as in the case of -local-pbs-coasters. Gensites will look in three directories for available -templates: your current directory, $SWIFT_HOME/etc/sites and $HOME/.swift/sites. - -Listing the Template --------------------- -To view the contents of a template, type: - ------ -$ gensites -l templatename ------ - -Running this command will print some information about the template and give -you an idea of what settings you will need to specify. You should see -something like this: - ------ -Description: Template for Intrepid. More information about this system can be found at http://www.alcf.anl.gov/support/gettingstarted/index.php -Required Tokens: host work project queue ------ - -The required tokens are required to properly use the templates. These are placeholder -values you will need to specify in the -following steps. - -Providing Site Specific Values ------------------------------- - -The gensites script needs to know how to replace the placeholder values -in the template. This is done by configuring the swift.properties file. -Gensites will first look for a swift.properties file in the current -directory. If it does not exist, it will next look in $HOME/.swift. - -To add site specific values to swift.properties, add a line in the -follow format: - ------ -#site templatename setting=value ------ - -Continuing the previous example, here is what you could add to -swift.properties to replace the values of project, queue and work for -the surveyor template: - ------ -#site surveyor project=MyProject -#site surveyor queue=MyQueue -#site surveyor work=/path/to/workdir ------ - -Now, running the command 'gensites surveyor' will produce the following -valid configuration file: - ------ - - - - - MyProject - MyQueue - zeptoos - true - 21 - 10000 - 1 - DEBUG - 1 - 900 - 64 - 64 - /path/to/workdir - - ------ - -Generating Application Configurations with Gensites ---------------------------------------------------- -Gensites can also be used to create a valid application catalog, commonly -called tc.data. Here are some examples of how to specify applications within -your swift.properties file: - ------ -#app intrepid echo=/usr/bin/echo ------ - -This first example shows a site specific application. The #app definition -tells gensites this is related to an application rather than a #site -definition. In the second part, echo=/usr/bin/echo, the left hand side -is the name of the application that will be called from within swift. The -right hand site is the path name which points to the binary. - ------ -#app intrepid echo=$HOME/bin/echo ------ - -Environment variables will be interpreted and converted to full path names -for Swift. - ------ -#app intrepid echo=bin/echo ------ - -Gensites can take relative paths (relative to your current directory) and -translate them to full path names for Swift. - -WARNING: Running gensites with #app definitions will replace any file -called tc.data in your current directory. If a file called tc.data exists, -it will be renamed to tc.data.old. If you run gensites twice, the original -contents of your tc.data will be lost. Please either rename your tc file -or copy to a different location. - -Running Swift With the New Configuration ----------------------------------------- - -Now that the gensites is configured and producing a valid configuration -file, Swift needs to know to use it. The first step is to create a -unique config file based on the preferences you specified. - ------ -$ gensites surveyor > myconfig.xml ------ - -This will send the output of gensites to myconfig.xml. This example will -use a swift.properties location in the default directories (your current -directory, ~/.swift/swift.properties). To specify a different location -to the swift.properties, use: - ------ -$ gensites surveyor -p myswift.properties > myconfig.xml ------ - -Next, provide the configuration filename to swift: ------ -$ swift -sites.file myconfig.xml myscript.swift ------ - -Alternatively, if you have specified applications, be sure to load that into -Swift ------ -$ swift -sites.file myconfig.xml -tc.file tc.data mycript.swift ------ - -Providing Default Values for All Templates ------------------------------------------- -It is also possible to specify a default value for a setting, regardless -of template you use. If you want to set your queue to default to "fast" -across all templates, you can do this by omitting the template name. -Consider the following swift.properties: - ------ -#site queue=fast -#site surveyor project=MyProject -#site surveyor work=/path/to/workdir ------ -By omitting the template name, the default value for queue on surveyor -(and any other template you use) will be set to "fast". One thing to -keep in mind when setting default values is that order matters. Be sure -to set your default values first before setting template specific values. - -Just like the #site definitions, when a site name is not specified, an app -will be created for every site that is defined in your template. ------ -#app echo=/bin/echo ------ - -More Help ---------- -The gensites script provides additional options not discussed here, such -as using templates and swift.properties in non-standard directories. For -more information, run gensites -h. Here is a full list of all options -available. - ------ -$ gensites -help - - usage: gensites template [-p properties.file] [-L template_directory] [-h] [-T] [-l] - - template Name of template to use - -p properties.file Specify a swift.properties to use - -L template_directory Specify a non-standard template directory - -T List all templates available - -h Help / usage information - -l List the contents of a specific template - - Examples: - - Create a site configuration file for sites.xml using default properties.file in current directory - $ gensites pads > sites.xml - - Use a specific properties file for a site - $ gensites -p sites.properties pads > sites.xml - - Specify a non-standard directory where templates are located - $ gensites -L template.dir pads > sites.xml ------ Copied: trunk/docs/utils/gensites.txt (from rev 5078, trunk/docs/utils/gensites.txt) =================================================================== --- trunk/docs/utils/gensites.txt (rev 0) +++ trunk/docs/utils/gensites.txt 2011-09-08 00:53:06 UTC (rev 5086) @@ -0,0 +1,235 @@ +Gensites +========== +:toc: +:icons: +:website: http://www.ci.uchicago.edu/swift +:numbered: + +Overview +-------- +To simplify this configuration process, versions of Swift starting with +0.92 include a utility called gensites. The gensites command is used +to generate a sites.xml file for running a swift workflow on a given +site. It accomplishes this by using a series of templates. The templates +used by gensites are the same templates used for internal testing, so +they are likely up to date and known to work on a given site. + + +Viewing All Available Site Templates +------------------------------------ +To view a list of all available templates, run the following command: + +----- +$ gensites -T +----- + +You should see output similar to this: +----- +intrepid +local +local-pbs-coasters +pads +queenbee +sge-local +ssh +ssh-pbs-coasters +surveyor +----- + +You will notice that the templates can be specific to a particular set +of machines like Intrepid and Queenbee, or they may be more general and +aim to work across a variety of machines, as in the case of +local-pbs-coasters. Gensites will look in three directories for available +templates: your current directory, $SWIFT_HOME/etc/sites and $HOME/.swift/sites. + +Listing the Template +-------------------- +To view the contents of a template, type: + +----- +$ gensites -l templatename +----- + +Running this command will print some information about the template and give +you an idea of what settings you will need to specify. You should see +something like this: + +----- +Description: Template for Intrepid. More information about this system can be found at http://www.alcf.anl.gov/support/gettingstarted/index.php +Required Tokens: host work project queue +----- + +The required tokens are required to properly use the templates. These are placeholder +values you will need to specify in the +following steps. + +Providing Site Specific Values +------------------------------ + +The gensites script needs to know how to replace the placeholder values +in the template. This is done by configuring the swift.properties file. +Gensites will first look for a swift.properties file in the current +directory. If it does not exist, it will next look in $HOME/.swift. + +To add site specific values to swift.properties, add a line in the +follow format: + +----- +#site templatename setting=value +----- + +Continuing the previous example, here is what you could add to +swift.properties to replace the values of project, queue and work for +the surveyor template: + +----- +#site surveyor project=MyProject +#site surveyor queue=MyQueue +#site surveyor work=/path/to/workdir +----- + +Now, running the command 'gensites surveyor' will produce the following +valid configuration file: + +----- + + + + + MyProject + MyQueue + zeptoos + true + 21 + 10000 + 1 + DEBUG + 1 + 900 + 64 + 64 + /path/to/workdir + + +----- + +Generating Application Configurations with Gensites +--------------------------------------------------- +Gensites can also be used to create a valid application catalog, commonly +called tc.data. Here are some examples of how to specify applications within +your swift.properties file: + +----- +#app intrepid echo=/usr/bin/echo +----- + +This first example shows a site specific application. The #app definition +tells gensites this is related to an application rather than a #site +definition. In the second part, echo=/usr/bin/echo, the left hand side +is the name of the application that will be called from within swift. The +right hand site is the path name which points to the binary. + +----- +#app intrepid echo=$HOME/bin/echo +----- + +Environment variables will be interpreted and converted to full path names +for Swift. + +----- +#app intrepid echo=bin/echo +----- + +Gensites can take relative paths (relative to your current directory) and +translate them to full path names for Swift. + +WARNING: Running gensites with #app definitions will replace any file +called tc.data in your current directory. If a file called tc.data exists, +it will be renamed to tc.data.old. If you run gensites twice, the original +contents of your tc.data will be lost. Please either rename your tc file +or copy to a different location. + +Running Swift With the New Configuration +---------------------------------------- + +Now that the gensites is configured and producing a valid configuration +file, Swift needs to know to use it. The first step is to create a +unique config file based on the preferences you specified. + +----- +$ gensites surveyor > myconfig.xml +----- + +This will send the output of gensites to myconfig.xml. This example will +use a swift.properties location in the default directories (your current +directory, ~/.swift/swift.properties). To specify a different location +to the swift.properties, use: + +----- +$ gensites surveyor -p myswift.properties > myconfig.xml +----- + +Next, provide the configuration filename to swift: +----- +$ swift -sites.file myconfig.xml myscript.swift +----- + +Alternatively, if you have specified applications, be sure to load that into +Swift +----- +$ swift -sites.file myconfig.xml -tc.file tc.data mycript.swift +----- + +Providing Default Values for All Templates +------------------------------------------ +It is also possible to specify a default value for a setting, regardless +of template you use. If you want to set your queue to default to "fast" +across all templates, you can do this by omitting the template name. +Consider the following swift.properties: + +----- +#site queue=fast +#site surveyor project=MyProject +#site surveyor work=/path/to/workdir +----- +By omitting the template name, the default value for queue on surveyor +(and any other template you use) will be set to "fast". One thing to +keep in mind when setting default values is that order matters. Be sure +to set your default values first before setting template specific values. + +Just like the #site definitions, when a site name is not specified, an app +will be created for every site that is defined in your template. +----- +#app echo=/bin/echo +----- + +More Help +--------- +The gensites script provides additional options not discussed here, such +as using templates and swift.properties in non-standard directories. For +more information, run gensites -h. Here is a full list of all options +available. + +----- +$ gensites -help + + usage: gensites template [-p properties.file] [-L template_directory] [-h] [-T] [-l] + + template Name of template to use + -p properties.file Specify a swift.properties to use + -L template_directory Specify a non-standard template directory + -T List all templates available + -h Help / usage information + -l List the contents of a specific template + + Examples: + + Create a site configuration file for sites.xml using default properties.file in current directory + $ gensites pads > sites.xml + + Use a specific properties file for a site + $ gensites -p sites.properties pads > sites.xml + + Specify a non-standard directory where templates are located + $ gensites -L template.dir pads > sites.xml +----- From davidk at ci.uchicago.edu Wed Sep 14 14:21:14 2011 From: davidk at ci.uchicago.edu (davidk at ci.uchicago.edu) Date: Wed, 14 Sep 2011 19:21:14 -0000 Subject: [Swift-commit] r5116 - in branches/release-0.93/tests/providers: . beagle beagle/coasters beagle/pbs crow crow/big intrepid mcs pads pads/coasters pads/pbs queenbee queenbee/pbs surveyor Message-ID: <20110914192110.DC79E9CCBF@svn.ci.uchicago.edu> Author: davidk Date: 2011-09-14 14:21:10 -0500 (Wed, 14 Sep 2011) New Revision: 5116 Added: branches/release-0.93/tests/providers/beagle/ branches/release-0.93/tests/providers/beagle/coasters/ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout branches/release-0.93/tests/providers/beagle/coasters/data.txt branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml branches/release-0.93/tests/providers/beagle/coasters/tc.template.data branches/release-0.93/tests/providers/beagle/coasters/title.txt branches/release-0.93/tests/providers/beagle/pbs/ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected branches/release-0.93/tests/providers/beagle/pbs/data.txt branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml branches/release-0.93/tests/providers/beagle/pbs/tc.template.data branches/release-0.93/tests/providers/crow/ branches/release-0.93/tests/providers/crow/001-catsn.check.sh branches/release-0.93/tests/providers/crow/001-catsn.clean.sh branches/release-0.93/tests/providers/crow/001-catsn.setup.sh branches/release-0.93/tests/providers/crow/001-catsn.swift branches/release-0.93/tests/providers/crow/001-catsn.timeout branches/release-0.93/tests/providers/crow/big/ branches/release-0.93/tests/providers/crow/big/201-cps.check.sh branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh branches/release-0.93/tests/providers/crow/big/201-cps.swift branches/release-0.93/tests/providers/crow/big/201-cps.timeout branches/release-0.93/tests/providers/crow/big/cps.sh branches/release-0.93/tests/providers/crow/big/data.txt branches/release-0.93/tests/providers/crow/big/sites.template.xml branches/release-0.93/tests/providers/crow/big/title.txt branches/release-0.93/tests/providers/crow/data.txt branches/release-0.93/tests/providers/crow/sites.template.xml branches/release-0.93/tests/providers/crow/tc.template.data branches/release-0.93/tests/providers/crow/title.txt branches/release-0.93/tests/providers/intrepid/ branches/release-0.93/tests/providers/intrepid/100-cp.check.sh branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh branches/release-0.93/tests/providers/intrepid/100-cp.swift branches/release-0.93/tests/providers/intrepid/100-cp.timeout branches/release-0.93/tests/providers/intrepid/sites.template.xml branches/release-0.93/tests/providers/intrepid/tc.template.data branches/release-0.93/tests/providers/intrepid/title.txt branches/release-0.93/tests/providers/mcs/ branches/release-0.93/tests/providers/mcs/001-catsn.check.sh branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh branches/release-0.93/tests/providers/mcs/001-catsn.swift branches/release-0.93/tests/providers/mcs/001-catsn.timeout branches/release-0.93/tests/providers/mcs/README branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected branches/release-0.93/tests/providers/mcs/coaster-service.conf branches/release-0.93/tests/providers/mcs/data.txt branches/release-0.93/tests/providers/mcs/title.txt branches/release-0.93/tests/providers/pads/ branches/release-0.93/tests/providers/pads/coasters/ branches/release-0.93/tests/providers/pads/coasters/README branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh branches/release-0.93/tests/providers/pads/coasters/catsn.swift branches/release-0.93/tests/providers/pads/coasters/catsn.timeout branches/release-0.93/tests/providers/pads/coasters/data.txt branches/release-0.93/tests/providers/pads/coasters/sites.template.xml branches/release-0.93/tests/providers/pads/coasters/tc.template.data branches/release-0.93/tests/providers/pads/pbs/ branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh branches/release-0.93/tests/providers/pads/pbs/catsn.swift branches/release-0.93/tests/providers/pads/pbs/catsn.timeout branches/release-0.93/tests/providers/pads/pbs/data.txt branches/release-0.93/tests/providers/pads/pbs/sites.template.xml branches/release-0.93/tests/providers/pads/pbs/tc.template.data branches/release-0.93/tests/providers/queenbee/ branches/release-0.93/tests/providers/queenbee/pbs/ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout branches/release-0.93/tests/providers/queenbee/pbs/README branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected branches/release-0.93/tests/providers/queenbee/pbs/data.txt branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data branches/release-0.93/tests/providers/queenbee/pbs/title.txt branches/release-0.93/tests/providers/surveyor/ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout branches/release-0.93/tests/providers/surveyor/README branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected branches/release-0.93/tests/providers/surveyor/data.txt branches/release-0.93/tests/providers/surveyor/sites.template.xml branches/release-0.93/tests/providers/surveyor/tc.template.data branches/release-0.93/tests/providers/surveyor/title.txt Removed: branches/release-0.93/tests/providers/beagle/coasters/ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout branches/release-0.93/tests/providers/beagle/coasters/data.txt branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml branches/release-0.93/tests/providers/beagle/coasters/tc.template.data branches/release-0.93/tests/providers/beagle/coasters/title.txt branches/release-0.93/tests/providers/beagle/pbs/ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected branches/release-0.93/tests/providers/beagle/pbs/data.txt branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml branches/release-0.93/tests/providers/beagle/pbs/tc.template.data branches/release-0.93/tests/providers/crow/001-catsn.check.sh branches/release-0.93/tests/providers/crow/001-catsn.clean.sh branches/release-0.93/tests/providers/crow/001-catsn.setup.sh branches/release-0.93/tests/providers/crow/001-catsn.swift branches/release-0.93/tests/providers/crow/001-catsn.timeout branches/release-0.93/tests/providers/crow/big/ branches/release-0.93/tests/providers/crow/big/201-cps.check.sh branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh branches/release-0.93/tests/providers/crow/big/201-cps.swift branches/release-0.93/tests/providers/crow/big/201-cps.timeout branches/release-0.93/tests/providers/crow/big/cps.sh branches/release-0.93/tests/providers/crow/big/data.txt branches/release-0.93/tests/providers/crow/big/sites.template.xml branches/release-0.93/tests/providers/crow/big/title.txt branches/release-0.93/tests/providers/crow/data.txt branches/release-0.93/tests/providers/crow/sites.template.xml branches/release-0.93/tests/providers/crow/tc.template.data branches/release-0.93/tests/providers/crow/title.txt branches/release-0.93/tests/providers/intrepid/100-cp.check.sh branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh branches/release-0.93/tests/providers/intrepid/100-cp.swift branches/release-0.93/tests/providers/intrepid/100-cp.timeout branches/release-0.93/tests/providers/intrepid/sites.template.xml branches/release-0.93/tests/providers/intrepid/tc.template.data branches/release-0.93/tests/providers/intrepid/title.txt branches/release-0.93/tests/providers/local-cobalt/ branches/release-0.93/tests/providers/local-pbs-coasters/ branches/release-0.93/tests/providers/local-pbs/ branches/release-0.93/tests/providers/local-sge-coasters/ branches/release-0.93/tests/providers/mcs/001-catsn.check.sh branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh branches/release-0.93/tests/providers/mcs/001-catsn.swift branches/release-0.93/tests/providers/mcs/001-catsn.timeout branches/release-0.93/tests/providers/mcs/README branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected branches/release-0.93/tests/providers/mcs/coaster-service.conf branches/release-0.93/tests/providers/mcs/data.txt branches/release-0.93/tests/providers/mcs/title.txt branches/release-0.93/tests/providers/pads/coasters/ branches/release-0.93/tests/providers/pads/coasters/README branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh branches/release-0.93/tests/providers/pads/coasters/catsn.swift branches/release-0.93/tests/providers/pads/coasters/catsn.timeout branches/release-0.93/tests/providers/pads/coasters/data.txt branches/release-0.93/tests/providers/pads/coasters/sites.template.xml branches/release-0.93/tests/providers/pads/coasters/tc.template.data branches/release-0.93/tests/providers/pads/pbs/ branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh branches/release-0.93/tests/providers/pads/pbs/catsn.swift branches/release-0.93/tests/providers/pads/pbs/catsn.timeout branches/release-0.93/tests/providers/pads/pbs/data.txt branches/release-0.93/tests/providers/pads/pbs/sites.template.xml branches/release-0.93/tests/providers/pads/pbs/tc.template.data branches/release-0.93/tests/providers/persistent-coasters/ branches/release-0.93/tests/providers/queenbee/pbs/ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout branches/release-0.93/tests/providers/queenbee/pbs/README branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected branches/release-0.93/tests/providers/queenbee/pbs/data.txt branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data branches/release-0.93/tests/providers/queenbee/pbs/title.txt branches/release-0.93/tests/providers/sge-local/ branches/release-0.93/tests/providers/ssh-pbs-coasters/ branches/release-0.93/tests/providers/ssh/ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout branches/release-0.93/tests/providers/surveyor/README branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected branches/release-0.93/tests/providers/surveyor/data.txt branches/release-0.93/tests/providers/surveyor/sites.template.xml branches/release-0.93/tests/providers/surveyor/tc.template.data branches/release-0.93/tests/providers/surveyor/title.txt Modified: branches/release-0.93/tests/providers/ Log: Provider test renaming from trunk Property changes on: branches/release-0.93/tests/providers ___________________________________________________________________ Added: svn:mergeinfo + /trunk/tests/providers:4761-5115 Deleted: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh =================================================================== --- trunk/tests/providers/beagle/coasters/001-catsn.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,9 +0,0 @@ -#!/bin/bash - -# Pseudo-code for now - -# for f in *.out.expected -# do -# assert *.out exists -# assert *.out == data.txt -# done Copied: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh (from rev 5115, trunk/tests/providers/beagle/coasters/001-catsn.check.sh) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,9 @@ +#!/bin/bash + +# Pseudo-code for now + +# for f in *.out.expected +# do +# assert *.out exists +# assert *.out == data.txt +# done Deleted: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/beagle/coasters/001-catsn.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,3 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 Copied: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh (from rev 5115, trunk/tests/providers/beagle/coasters/001-catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 Deleted: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift =================================================================== --- trunk/tests/providers/beagle/coasters/001-catsn.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -// string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -// string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift (from rev 5115, trunk/tests/providers/beagle/coasters/001-catsn.swift) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +// string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +// string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout =================================================================== --- trunk/tests/providers/beagle/coasters/001-catsn.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -180 Copied: branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout (from rev 5115, trunk/tests/providers/beagle/coasters/001-catsn.timeout) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +180 Deleted: branches/release-0.93/tests/providers/beagle/coasters/data.txt =================================================================== --- trunk/tests/providers/beagle/coasters/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -HELLO Copied: branches/release-0.93/tests/providers/beagle/coasters/data.txt (from rev 5115, trunk/tests/providers/beagle/coasters/data.txt) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/data.txt (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +HELLO Deleted: branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml =================================================================== --- trunk/tests/providers/beagle/coasters/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,33 +0,0 @@ - - - - - - - - - - 1 - 7200 - - - pbs.aprun;pbs.mpp;depth=24 - - 24 - 1 - 1 - 1 - batch - DEBUG - {wdir} - 5.99 - 10000 - _PROJECT_ - _QUEUE_ - {wdir} - - - - Copied: branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml (from rev 5115, trunk/tests/providers/beagle/coasters/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,33 @@ + + + + + + + + + + 1 + 7200 + + + pbs.aprun;pbs.mpp;depth=24 + + 24 + 1 + 1 + 1 + batch + DEBUG + {wdir} + 5.99 + 10000 + _PROJECT_ + _QUEUE_ + {wdir} + + + + Deleted: branches/release-0.93/tests/providers/beagle/coasters/tc.template.data =================================================================== --- trunk/tests/providers/beagle/coasters/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -beagle-pbs echo /bin/echo INSTALLED INTEL32::LINUX -beagle-pbs cat /bin/cat INSTALLED INTEL32::LINUX -beagle-pbs ls /bin/ls INSTALLED INTEL32::LINUX -beagle-pbs grep /bin/grep INSTALLED INTEL32::LINUX -beagle-pbs sort /bin/sort INSTALLED INTEL32::LINUX -beagle-pbs paste /bin/paste INSTALLED INTEL32::LINUX -beagle-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: branches/release-0.93/tests/providers/beagle/coasters/tc.template.data (from rev 5115, trunk/tests/providers/beagle/coasters/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +beagle-pbs echo /bin/echo INSTALLED INTEL32::LINUX +beagle-pbs cat /bin/cat INSTALLED INTEL32::LINUX +beagle-pbs ls /bin/ls INSTALLED INTEL32::LINUX +beagle-pbs grep /bin/grep INSTALLED INTEL32::LINUX +beagle-pbs sort /bin/sort INSTALLED INTEL32::LINUX +beagle-pbs paste /bin/paste INSTALLED INTEL32::LINUX +beagle-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: branches/release-0.93/tests/providers/beagle/coasters/title.txt =================================================================== --- trunk/tests/providers/beagle/coasters/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/coasters/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Local PBS Coasters: Beagle Copied: branches/release-0.93/tests/providers/beagle/coasters/title.txt (from rev 5115, trunk/tests/providers/beagle/coasters/title.txt) =================================================================== --- branches/release-0.93/tests/providers/beagle/coasters/title.txt (rev 0) +++ branches/release-0.93/tests/providers/beagle/coasters/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Local PBS Coasters: Beagle Deleted: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,9 +0,0 @@ -#!/bin/bash - -# Pseudo-code for now - -# for f in *.out.expected -# do -# assert *.out exists -# assert *.out.expected == *.out -# done Copied: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh (from rev 5115, trunk/tests/providers/beagle/pbs/001-catsn.check.sh) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,9 @@ +#!/bin/bash + +# Pseudo-code for now + +# for f in *.out.expected +# do +# assert *.out exists +# assert *.out.expected == *.out +# done Deleted: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Copied: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh (from rev 5115, trunk/tests/providers/beagle/pbs/001-catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Deleted: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -// string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -// string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift (from rev 5115, trunk/tests/providers/beagle/pbs/001-catsn.swift) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +// string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +// string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout =================================================================== --- trunk/tests/providers/beagle/pbs/001-catsn.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -180 Copied: branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout (from rev 5115, trunk/tests/providers/beagle/pbs/001-catsn.timeout) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +180 Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0001.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0002.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0002.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0003.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0003.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0004.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0004.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0005.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0005.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0006.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0006.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0007.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0007.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0008.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0008.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0009.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0009.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/beagle/pbs/catsn.0010.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected (from rev 5115, trunk/tests/providers/beagle/pbs/catsn.0010.out.expected) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/data.txt =================================================================== --- trunk/tests/providers/beagle/pbs/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/beagle/pbs/data.txt (from rev 5115, trunk/tests/providers/beagle/pbs/data.txt) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/data.txt (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml =================================================================== --- trunk/tests/providers/beagle/pbs/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,18 +0,0 @@ - - - - - - - - - - - - {wdir} - - - - Copied: branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml (from rev 5115, trunk/tests/providers/beagle/pbs/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,18 @@ + + + + + + + + + + + + {wdir} + + + + Deleted: branches/release-0.93/tests/providers/beagle/pbs/tc.template.data =================================================================== --- trunk/tests/providers/beagle/pbs/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/beagle/pbs/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -beagle-pbs echo /bin/echo INSTALLED INTEL32::LINUX -beagle-pbs cat /bin/cat INSTALLED INTEL32::LINUX -beagle-pbs ls /bin/ls INSTALLED INTEL32::LINUX -beagle-pbs grep /bin/grep INSTALLED INTEL32::LINUX -beagle-pbs sort /bin/sort INSTALLED INTEL32::LINUX -beagle-pbs paste /bin/paste INSTALLED INTEL32::LINUX -beagle-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: branches/release-0.93/tests/providers/beagle/pbs/tc.template.data (from rev 5115, trunk/tests/providers/beagle/pbs/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/beagle/pbs/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/beagle/pbs/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +beagle-pbs echo /bin/echo INSTALLED INTEL32::LINUX +beagle-pbs cat /bin/cat INSTALLED INTEL32::LINUX +beagle-pbs ls /bin/ls INSTALLED INTEL32::LINUX +beagle-pbs grep /bin/grep INSTALLED INTEL32::LINUX +beagle-pbs sort /bin/sort INSTALLED INTEL32::LINUX +beagle-pbs paste /bin/paste INSTALLED INTEL32::LINUX +beagle-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: branches/release-0.93/tests/providers/crow/001-catsn.check.sh =================================================================== --- trunk/tests/providers/crow/001-catsn.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,8 +0,0 @@ -#!/bin/bash - -set -x - -COUNT=$( ls catsn.*.out | wc -l ) -[[ $COUNT == 10 ]] || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/crow/001-catsn.check.sh (from rev 5115, trunk/tests/providers/crow/001-catsn.check.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/001-catsn.check.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,8 @@ +#!/bin/bash + +set -x + +COUNT=$( ls catsn.*.out | wc -l ) +[[ $COUNT == 10 ]] || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/crow/001-catsn.clean.sh =================================================================== --- trunk/tests/providers/crow/001-catsn.clean.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/001-catsn.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -#!/bin/bash - -set -x - -rm -v catsn.*.out || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/crow/001-catsn.clean.sh (from rev 5115, trunk/tests/providers/crow/001-catsn.clean.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/001-catsn.clean.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/001-catsn.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x + +rm -v catsn.*.out || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/crow/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/crow/001-catsn.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,3 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 Copied: branches/release-0.93/tests/providers/crow/001-catsn.setup.sh (from rev 5115, trunk/tests/providers/crow/001-catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/001-catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 Deleted: branches/release-0.93/tests/providers/crow/001-catsn.swift =================================================================== --- trunk/tests/providers/crow/001-catsn.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,12 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/crow/001-catsn.swift (from rev 5115, trunk/tests/providers/crow/001-catsn.swift) =================================================================== --- branches/release-0.93/tests/providers/crow/001-catsn.swift (rev 0) +++ branches/release-0.93/tests/providers/crow/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/crow/001-catsn.timeout =================================================================== --- trunk/tests/providers/crow/001-catsn.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -1000 Copied: branches/release-0.93/tests/providers/crow/001-catsn.timeout (from rev 5115, trunk/tests/providers/crow/001-catsn.timeout) =================================================================== --- branches/release-0.93/tests/providers/crow/001-catsn.timeout (rev 0) +++ branches/release-0.93/tests/providers/crow/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +1000 Deleted: branches/release-0.93/tests/providers/crow/big/201-cps.check.sh =================================================================== --- trunk/tests/providers/crow/big/201-cps.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/201-cps.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,9 +0,0 @@ -#!/bin/sh - -set -x - -COUNT=$( ls 201-output* | wc -l ) - -[[ $COUNT == 40 ]] || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/crow/big/201-cps.check.sh (from rev 5115, trunk/tests/providers/crow/big/201-cps.check.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/big/201-cps.check.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/big/201-cps.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,9 @@ +#!/bin/sh + +set -x + +COUNT=$( ls 201-output* | wc -l ) + +[[ $COUNT == 40 ]] || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh =================================================================== --- trunk/tests/providers/crow/big/201-cps.clean.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -#!/bin/sh - -set -x - -rm -rv 201-output-[12]-*.txt || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh (from rev 5115, trunk/tests/providers/crow/big/201-cps.clean.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/big/201-cps.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +#!/bin/sh + +set -x + +rm -rv 201-output-[12]-*.txt || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh =================================================================== --- trunk/tests/providers/crow/big/201-cps.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,12 +0,0 @@ -#!/bin/sh - -set -x - -{ - uname -a - date -} > 201-input-1.txt - -cp -v 201-input-1.txt 201-input-2.txt - -exit 0 Copied: branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh (from rev 5115, trunk/tests/providers/crow/big/201-cps.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/big/201-cps.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,12 @@ +#!/bin/sh + +set -x + +{ + uname -a + date +} > 201-input-1.txt + +cp -v 201-input-1.txt 201-input-2.txt + +exit 0 Deleted: branches/release-0.93/tests/providers/crow/big/201-cps.swift =================================================================== --- trunk/tests/providers/crow/big/201-cps.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/201-cps.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,24 +0,0 @@ - -type file; - -app (file o) cps(file i, int s) -{ - cps @o @i s; -} - -file input1<"201-input-1.txt">; -file input2<"201-input-2.txt">; - -foreach i in [1:20] -{ - string s = @strcat("201-output-1-", i, ".txt"); - file output; - output = cps(input1, i); -} - -foreach j in [1:20] -{ - string s = @strcat("201-output-2-", j, ".txt"); - file output; - output = cps(input2, 10+j); -} Copied: branches/release-0.93/tests/providers/crow/big/201-cps.swift (from rev 5115, trunk/tests/providers/crow/big/201-cps.swift) =================================================================== --- branches/release-0.93/tests/providers/crow/big/201-cps.swift (rev 0) +++ branches/release-0.93/tests/providers/crow/big/201-cps.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,24 @@ + +type file; + +app (file o) cps(file i, int s) +{ + cps @o @i s; +} + +file input1<"201-input-1.txt">; +file input2<"201-input-2.txt">; + +foreach i in [1:20] +{ + string s = @strcat("201-output-1-", i, ".txt"); + file output; + output = cps(input1, i); +} + +foreach j in [1:20] +{ + string s = @strcat("201-output-2-", j, ".txt"); + file output; + output = cps(input2, 10+j); +} Deleted: branches/release-0.93/tests/providers/crow/big/201-cps.timeout =================================================================== --- trunk/tests/providers/crow/big/201-cps.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/201-cps.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -1000 Copied: branches/release-0.93/tests/providers/crow/big/201-cps.timeout (from rev 5115, trunk/tests/providers/crow/big/201-cps.timeout) =================================================================== --- branches/release-0.93/tests/providers/crow/big/201-cps.timeout (rev 0) +++ branches/release-0.93/tests/providers/crow/big/201-cps.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +1000 Deleted: branches/release-0.93/tests/providers/crow/big/cps.sh =================================================================== --- trunk/tests/providers/crow/big/cps.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/cps.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,9 +0,0 @@ -#!/bin/sh - -DEST=$1 -SRC=$2 -DURATION=$3 - -sleep $DURATION -cp -v $SRC $DEST - Copied: branches/release-0.93/tests/providers/crow/big/cps.sh (from rev 5115, trunk/tests/providers/crow/big/cps.sh) =================================================================== --- branches/release-0.93/tests/providers/crow/big/cps.sh (rev 0) +++ branches/release-0.93/tests/providers/crow/big/cps.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,9 @@ +#!/bin/sh + +DEST=$1 +SRC=$2 +DURATION=$3 + +sleep $DURATION +cp -v $SRC $DEST + Deleted: branches/release-0.93/tests/providers/crow/big/data.txt =================================================================== --- trunk/tests/providers/crow/big/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -HELLO Copied: branches/release-0.93/tests/providers/crow/big/data.txt (from rev 5115, trunk/tests/providers/crow/big/data.txt) =================================================================== --- branches/release-0.93/tests/providers/crow/big/data.txt (rev 0) +++ branches/release-0.93/tests/providers/crow/big/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +HELLO Deleted: branches/release-0.93/tests/providers/crow/big/sites.template.xml =================================================================== --- trunk/tests/providers/crow/big/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,29 +0,0 @@ - - - - - - - - - 1 - 7200 - - - pbs.aprun;pbs.mpp;depth=6 - - 6 - 2 - 4 - 16 - DEBUG - {wdir} - 5.99 - 10000 - {wdir} - - - - Copied: branches/release-0.93/tests/providers/crow/big/sites.template.xml (from rev 5115, trunk/tests/providers/crow/big/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/crow/big/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/crow/big/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,29 @@ + + + + + + + + + 1 + 7200 + + + pbs.aprun;pbs.mpp;depth=6 + + 6 + 2 + 4 + 16 + DEBUG + {wdir} + 5.99 + 10000 + {wdir} + + + + Deleted: branches/release-0.93/tests/providers/crow/big/title.txt =================================================================== --- trunk/tests/providers/crow/big/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/big/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Local PBS Coasters: Crow big Copied: branches/release-0.93/tests/providers/crow/big/title.txt (from rev 5115, trunk/tests/providers/crow/big/title.txt) =================================================================== --- branches/release-0.93/tests/providers/crow/big/title.txt (rev 0) +++ branches/release-0.93/tests/providers/crow/big/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Local PBS Coasters: Crow big Deleted: branches/release-0.93/tests/providers/crow/data.txt =================================================================== --- trunk/tests/providers/crow/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -HELLO Copied: branches/release-0.93/tests/providers/crow/data.txt (from rev 5115, trunk/tests/providers/crow/data.txt) =================================================================== --- branches/release-0.93/tests/providers/crow/data.txt (rev 0) +++ branches/release-0.93/tests/providers/crow/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +HELLO Deleted: branches/release-0.93/tests/providers/crow/sites.template.xml =================================================================== --- trunk/tests/providers/crow/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,31 +0,0 @@ - - - - - - - - - - - 1 - 7200 - - - pbs.aprun;pbs.mpp;depth=6 - - 6 - 1 - 1 - 1 - DEBUG - {wdir} - 5.99 - 10000 - {wdir} - - - - Copied: branches/release-0.93/tests/providers/crow/sites.template.xml (from rev 5115, trunk/tests/providers/crow/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/crow/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/crow/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,31 @@ + + + + + + + + + + + 1 + 7200 + + + pbs.aprun;pbs.mpp;depth=6 + + 6 + 1 + 1 + 1 + DEBUG + {wdir} + 5.99 + 10000 + {wdir} + + + + Deleted: branches/release-0.93/tests/providers/crow/tc.template.data =================================================================== --- trunk/tests/providers/crow/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -crow echo /bin/echo INSTALLED INTEL32::LINUX -crow cat /bin/cat INSTALLED INTEL32::LINUX -crow ls /bin/ls INSTALLED INTEL32::LINUX -crow grep /bin/grep INSTALLED INTEL32::LINUX -crow sort /bin/sort INSTALLED INTEL32::LINUX -crow paste /bin/paste INSTALLED INTEL32::LINUX -crow wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: branches/release-0.93/tests/providers/crow/tc.template.data (from rev 5115, trunk/tests/providers/crow/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/crow/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/crow/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +crow echo /bin/echo INSTALLED INTEL32::LINUX +crow cat /bin/cat INSTALLED INTEL32::LINUX +crow ls /bin/ls INSTALLED INTEL32::LINUX +crow grep /bin/grep INSTALLED INTEL32::LINUX +crow sort /bin/sort INSTALLED INTEL32::LINUX +crow paste /bin/paste INSTALLED INTEL32::LINUX +crow wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: branches/release-0.93/tests/providers/crow/title.txt =================================================================== --- trunk/tests/providers/crow/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/crow/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Local PBS Coasters: Crow Copied: branches/release-0.93/tests/providers/crow/title.txt (from rev 5115, trunk/tests/providers/crow/title.txt) =================================================================== --- branches/release-0.93/tests/providers/crow/title.txt (rev 0) +++ branches/release-0.93/tests/providers/crow/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Local PBS Coasters: Crow Deleted: branches/release-0.93/tests/providers/intrepid/100-cp.check.sh =================================================================== --- trunk/tests/providers/intrepid/100-cp.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/100-cp.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -#!/bin/sh - -set -x - -grep $( uname -m ) 100-cp-output.txt || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/intrepid/100-cp.check.sh (from rev 5115, trunk/tests/providers/intrepid/100-cp.check.sh) =================================================================== --- branches/release-0.93/tests/providers/intrepid/100-cp.check.sh (rev 0) +++ branches/release-0.93/tests/providers/intrepid/100-cp.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +#!/bin/sh + +set -x + +grep $( uname -m ) 100-cp-output.txt || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh =================================================================== --- trunk/tests/providers/intrepid/100-cp.clean.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -#!/bin/sh - -set -x - -rm -v 100-cp-input.txt 100-cp-output.txt || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh (from rev 5115, trunk/tests/providers/intrepid/100-cp.clean.sh) =================================================================== --- branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh (rev 0) +++ branches/release-0.93/tests/providers/intrepid/100-cp.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +#!/bin/sh + +set -x + +rm -v 100-cp-input.txt 100-cp-output.txt || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh =================================================================== --- trunk/tests/providers/intrepid/100-cp.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -#!/bin/sh - -set -x - -uname -a > 100-cp-input.txt || exit 1 - -exit 0 Copied: branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh (from rev 5115, trunk/tests/providers/intrepid/100-cp.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/intrepid/100-cp.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +#!/bin/sh + +set -x + +uname -a > 100-cp-input.txt || exit 1 + +exit 0 Deleted: branches/release-0.93/tests/providers/intrepid/100-cp.swift =================================================================== --- trunk/tests/providers/intrepid/100-cp.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/100-cp.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,13 +0,0 @@ - -type file; - -app (file o) cp(file i) -{ - cp @i @o; -} - -file input<"100-cp-input.txt">; -file output<"100-cp-output.txt">; - -output = cp(input); - Copied: branches/release-0.93/tests/providers/intrepid/100-cp.swift (from rev 5115, trunk/tests/providers/intrepid/100-cp.swift) =================================================================== --- branches/release-0.93/tests/providers/intrepid/100-cp.swift (rev 0) +++ branches/release-0.93/tests/providers/intrepid/100-cp.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,13 @@ + +type file; + +app (file o) cp(file i) +{ + cp @i @o; +} + +file input<"100-cp-input.txt">; +file output<"100-cp-output.txt">; + +output = cp(input); + Deleted: branches/release-0.93/tests/providers/intrepid/100-cp.timeout =================================================================== --- trunk/tests/providers/intrepid/100-cp.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/100-cp.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -3000 Copied: branches/release-0.93/tests/providers/intrepid/100-cp.timeout (from rev 5115, trunk/tests/providers/intrepid/100-cp.timeout) =================================================================== --- branches/release-0.93/tests/providers/intrepid/100-cp.timeout (rev 0) +++ branches/release-0.93/tests/providers/intrepid/100-cp.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +3000 Deleted: branches/release-0.93/tests/providers/intrepid/sites.template.xml =================================================================== --- trunk/tests/providers/intrepid/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,32 +0,0 @@ - - - - - - /scratch/wozniak/work - - 0.04 - file - - - - - - - _HOST_ - _PROJECT_ - _QUEUE_ - zeptoos - true - 21 - 10000 - 1 - DEBUG - 1 - 900 - 64 - 64 - _WORK_ - - - Copied: branches/release-0.93/tests/providers/intrepid/sites.template.xml (from rev 5115, trunk/tests/providers/intrepid/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/intrepid/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/intrepid/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,32 @@ + + + + + + /scratch/wozniak/work + + 0.04 + file + + + + + + + _HOST_ + _PROJECT_ + _QUEUE_ + zeptoos + true + 21 + 10000 + 1 + DEBUG + 1 + 900 + 64 + 64 + _WORK_ + + + Deleted: branches/release-0.93/tests/providers/intrepid/tc.template.data =================================================================== --- trunk/tests/providers/intrepid/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -coasters_alcfbgp cp /bin/cp INSTALLED INTEL32::LINUX null Copied: branches/release-0.93/tests/providers/intrepid/tc.template.data (from rev 5115, trunk/tests/providers/intrepid/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/intrepid/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/intrepid/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +coasters_alcfbgp cp /bin/cp INSTALLED INTEL32::LINUX null Deleted: branches/release-0.93/tests/providers/intrepid/title.txt =================================================================== --- trunk/tests/providers/intrepid/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/intrepid/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Site Test: BG/P: Intrepid Copied: branches/release-0.93/tests/providers/intrepid/title.txt (from rev 5115, trunk/tests/providers/intrepid/title.txt) =================================================================== --- branches/release-0.93/tests/providers/intrepid/title.txt (rev 0) +++ branches/release-0.93/tests/providers/intrepid/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Site Test: BG/P: Intrepid Deleted: branches/release-0.93/tests/providers/mcs/001-catsn.check.sh =================================================================== --- trunk/tests/providers/mcs/001-catsn.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,12 +0,0 @@ -#!/bin/bash - -set -x - -for count in `seq --format "%04.f" 1 1 10` -do - [ -f catsn.$count.out ] || exit 1 - CONTENTS1=$( cat catsn.$count.out.expected ) - CONTENTS2=$( cat catsn.$count.out ) - [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 -done -exit 0 Copied: branches/release-0.93/tests/providers/mcs/001-catsn.check.sh (from rev 5115, trunk/tests/providers/mcs/001-catsn.check.sh) =================================================================== --- branches/release-0.93/tests/providers/mcs/001-catsn.check.sh (rev 0) +++ branches/release-0.93/tests/providers/mcs/001-catsn.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,12 @@ +#!/bin/bash + +set -x + +for count in `seq --format "%04.f" 1 1 10` +do + [ -f catsn.$count.out ] || exit 1 + CONTENTS1=$( cat catsn.$count.out.expected ) + CONTENTS2=$( cat catsn.$count.out ) + [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 +done +exit 0 Deleted: branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh =================================================================== --- trunk/tests/providers/mcs/001-catsn.clean.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,3 +0,0 @@ -#!/bin/bash - -stop-coaster-service Copied: branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh (from rev 5115, trunk/tests/providers/mcs/001-catsn.clean.sh) =================================================================== --- branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh (rev 0) +++ branches/release-0.93/tests/providers/mcs/001-catsn.clean.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,3 @@ +#!/bin/bash + +stop-coaster-service Deleted: branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh =================================================================== --- trunk/tests/providers/mcs/001-catsn.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -#!/bin/bash - -mkdir -p ~/work -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 -export WORK=$HOME/work -start-coaster-service || exit 1 Copied: branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh (from rev 5115, trunk/tests/providers/mcs/001-catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/mcs/001-catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +#!/bin/bash + +mkdir -p ~/work +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 +export WORK=$HOME/work +start-coaster-service || exit 1 Deleted: branches/release-0.93/tests/providers/mcs/001-catsn.swift =================================================================== --- trunk/tests/providers/mcs/001-catsn.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,12 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/mcs/001-catsn.swift (from rev 5115, trunk/tests/providers/mcs/001-catsn.swift) =================================================================== --- branches/release-0.93/tests/providers/mcs/001-catsn.swift (rev 0) +++ branches/release-0.93/tests/providers/mcs/001-catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,12 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/mcs/001-catsn.timeout =================================================================== --- trunk/tests/providers/mcs/001-catsn.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -180 Copied: branches/release-0.93/tests/providers/mcs/001-catsn.timeout (from rev 5115, trunk/tests/providers/mcs/001-catsn.timeout) =================================================================== --- branches/release-0.93/tests/providers/mcs/001-catsn.timeout (rev 0) +++ branches/release-0.93/tests/providers/mcs/001-catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +180 Deleted: branches/release-0.93/tests/providers/mcs/README =================================================================== --- trunk/tests/providers/mcs/README 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,58 +0,0 @@ -Before running this test, be sure to copy coaster-service.conf to your swift etc directory - -There are no templates in this directory. start-coaster-service generates sites.xml from the persistent-coasters template - -Be sure that you have all the hosts properly configured in ~/.ssh/auth.defaults. You can use the example below as a template. - -crush.mcs.anl.gov.type=key -crush.mcs.anl.gov.username=davidk -crush.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -crush.mcs.anl.gov.passphrase=your passphrase here - -thwomp.mcs.anl.gov.type=key -thwomp.mcs.anl.gov.username=davidk -thwomp.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -thwomp.mcs.anl.gov.passphrase=your passphrase here - -stomp.mcs.anl.gov.type=key -stomp.mcs.anl.gov.username=davidk -stomp.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -stomp.mcs.anl.gov.passphrase=your passphrase here - -crank.mcs.anl.gov.type=key -crank.mcs.anl.gov.username=davidk -crank.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -crank.mcs.anl.gov.passphrase=your passphrase here - -steamroller.mcs.anl.gov.type=key -steamroller.mcs.anl.gov.username=davidk -steamroller.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -steamroller.mcs.anl.gov.passphrase=your passphrase here - -grind.mcs.anl.gov.type=key -grind.mcs.anl.gov.username=davidk -grind.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -grind.mcs.anl.gov.passphrase=your passphrase here - -churn.mcs.anl.gov.type=key -churn.mcs.anl.gov.username=davidk -churn.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -churn.mcs.anl.gov.passphrase=your passphrase here - -trounce.mcs.anl.gov.type=key -trounce.mcs.anl.gov.username=davidk -trounce.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -trounce.mcs.anl.gov.passphrase=your passphrase here - -thrash.mcs.anl.gov.type=key -thrash.mcs.anl.gov.username=davidk -thrash.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -thrash.mcs.anl.gov.passphrase=your passphrase here - -vanquish.mcs.anl.gov.type=key -vanquish.mcs.anl.gov.username=davidk -vanquish.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa -vanquish.mcs.anl.gov.passphrase=your passphrase here - - - Copied: branches/release-0.93/tests/providers/mcs/README (from rev 5115, trunk/tests/providers/mcs/README) =================================================================== --- branches/release-0.93/tests/providers/mcs/README (rev 0) +++ branches/release-0.93/tests/providers/mcs/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,58 @@ +Before running this test, be sure to copy coaster-service.conf to your swift etc directory + +There are no templates in this directory. start-coaster-service generates sites.xml from the persistent-coasters template + +Be sure that you have all the hosts properly configured in ~/.ssh/auth.defaults. You can use the example below as a template. + +crush.mcs.anl.gov.type=key +crush.mcs.anl.gov.username=davidk +crush.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +crush.mcs.anl.gov.passphrase=your passphrase here + +thwomp.mcs.anl.gov.type=key +thwomp.mcs.anl.gov.username=davidk +thwomp.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +thwomp.mcs.anl.gov.passphrase=your passphrase here + +stomp.mcs.anl.gov.type=key +stomp.mcs.anl.gov.username=davidk +stomp.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +stomp.mcs.anl.gov.passphrase=your passphrase here + +crank.mcs.anl.gov.type=key +crank.mcs.anl.gov.username=davidk +crank.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +crank.mcs.anl.gov.passphrase=your passphrase here + +steamroller.mcs.anl.gov.type=key +steamroller.mcs.anl.gov.username=davidk +steamroller.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +steamroller.mcs.anl.gov.passphrase=your passphrase here + +grind.mcs.anl.gov.type=key +grind.mcs.anl.gov.username=davidk +grind.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +grind.mcs.anl.gov.passphrase=your passphrase here + +churn.mcs.anl.gov.type=key +churn.mcs.anl.gov.username=davidk +churn.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +churn.mcs.anl.gov.passphrase=your passphrase here + +trounce.mcs.anl.gov.type=key +trounce.mcs.anl.gov.username=davidk +trounce.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +trounce.mcs.anl.gov.passphrase=your passphrase here + +thrash.mcs.anl.gov.type=key +thrash.mcs.anl.gov.username=davidk +thrash.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +thrash.mcs.anl.gov.passphrase=your passphrase here + +vanquish.mcs.anl.gov.type=key +vanquish.mcs.anl.gov.username=davidk +vanquish.mcs.anl.gov.key=/home/davidk/.ssh/id_rsa +vanquish.mcs.anl.gov.passphrase=your passphrase here + + + Deleted: branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0001.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0002.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0002.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0003.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0003.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0004.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0004.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0005.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0005.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0006.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0006.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0007.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0007.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0008.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0008.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0009.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0009.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/mcs/catsn.0010.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected (from rev 5115, trunk/tests/providers/mcs/catsn.0010.out.expected) =================================================================== --- branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected (rev 0) +++ branches/release-0.93/tests/providers/mcs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/coaster-service.conf =================================================================== --- trunk/tests/providers/mcs/coaster-service.conf 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/coaster-service.conf 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,36 +0,0 @@ -# Keep all interesting settings in one place -# User should modify this to fit environment - -# Location of SWIFT. If empty, PATH is referenced -export SWIFT= - -# Where to place/launch worker.pl on the remote machine for sites.xml -export WORKER_WORK=/home/${USER}/work - -# How to launch workers: local, ssh, or cobalt -export WORKER_MODE=ssh - -# Worker logging setting passed to worker.pl for sites.xml -export WORKER_LOGGING=INFO - -# Worker host names for ssh -export WORKER_HOSTS="crush.mcs.anl.gov thwomp.mcs.anl.gov stomp.mcs.anl.gov crank.mcs.anl.gov -steamroller.mcs.anl.gov grind.mcs.anl.gov churn.mcs.anl.gov trounce.mcs.anl.gov -thrash.mcs.anl.gov vanquish.mcs.anl.gov" - -# Directory to keep log files, relative to working directory when launching start-coaster-service -export LOG_DIR=logs - -# Manually define ports. If not specified, ports will be automatically generated -export LOCAL_PORT= -export SERVICE_PORT= - -# start-coaster-service tries to automatically detect IP address. -# Specify here if auto detection is not working correctly -export IPADDR= - -# Below are various settings to give information about how to create sites.xml -export work=$HOME/work -export queue=prod-devel -export maxtime=20 -export nodes=64 Copied: branches/release-0.93/tests/providers/mcs/coaster-service.conf (from rev 5115, trunk/tests/providers/mcs/coaster-service.conf) =================================================================== --- branches/release-0.93/tests/providers/mcs/coaster-service.conf (rev 0) +++ branches/release-0.93/tests/providers/mcs/coaster-service.conf 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,36 @@ +# Keep all interesting settings in one place +# User should modify this to fit environment + +# Location of SWIFT. If empty, PATH is referenced +export SWIFT= + +# Where to place/launch worker.pl on the remote machine for sites.xml +export WORKER_WORK=/home/${USER}/work + +# How to launch workers: local, ssh, or cobalt +export WORKER_MODE=ssh + +# Worker logging setting passed to worker.pl for sites.xml +export WORKER_LOGGING=INFO + +# Worker host names for ssh +export WORKER_HOSTS="crush.mcs.anl.gov thwomp.mcs.anl.gov stomp.mcs.anl.gov crank.mcs.anl.gov +steamroller.mcs.anl.gov grind.mcs.anl.gov churn.mcs.anl.gov trounce.mcs.anl.gov +thrash.mcs.anl.gov vanquish.mcs.anl.gov" + +# Directory to keep log files, relative to working directory when launching start-coaster-service +export LOG_DIR=logs + +# Manually define ports. If not specified, ports will be automatically generated +export LOCAL_PORT= +export SERVICE_PORT= + +# start-coaster-service tries to automatically detect IP address. +# Specify here if auto detection is not working correctly +export IPADDR= + +# Below are various settings to give information about how to create sites.xml +export work=$HOME/work +export queue=prod-devel +export maxtime=20 +export nodes=64 Deleted: branches/release-0.93/tests/providers/mcs/data.txt =================================================================== --- trunk/tests/providers/mcs/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/mcs/data.txt (from rev 5115, trunk/tests/providers/mcs/data.txt) =================================================================== --- branches/release-0.93/tests/providers/mcs/data.txt (rev 0) +++ branches/release-0.93/tests/providers/mcs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/mcs/title.txt =================================================================== --- trunk/tests/providers/mcs/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/mcs/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -MCS Machines with Persistent Coasters and SSH Copied: branches/release-0.93/tests/providers/mcs/title.txt (from rev 5115, trunk/tests/providers/mcs/title.txt) =================================================================== --- branches/release-0.93/tests/providers/mcs/title.txt (rev 0) +++ branches/release-0.93/tests/providers/mcs/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +MCS Machines with Persistent Coasters and SSH Deleted: branches/release-0.93/tests/providers/pads/coasters/README =================================================================== --- trunk/tests/providers/pads/coasters/README 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,2 +0,0 @@ -Provider test for PADS with coasters and pbs -Make sure you have your default project set up (run 'projects' or 'projects -h' for more info) Copied: branches/release-0.93/tests/providers/pads/coasters/README (from rev 5115, trunk/tests/providers/pads/coasters/README) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/README (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,2 @@ +Provider test for PADS with coasters and pbs +Make sure you have your default project set up (run 'projects' or 'projects -h' for more info) Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0001.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0002.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0002.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0003.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0003.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0004.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0004.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0005.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0005.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0006.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0006.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0007.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0007.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0008.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0008.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0009.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0009.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/pads/coasters/catsn.0010.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected (from rev 5115, trunk/tests/providers/pads/coasters/catsn.0010.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh =================================================================== --- trunk/tests/providers/pads/coasters/catsn.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,3 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh (from rev 5115, trunk/tests/providers/pads/coasters/catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.swift =================================================================== --- trunk/tests/providers/pads/coasters/catsn.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.swift (from rev 5115, trunk/tests/providers/pads/coasters/catsn.swift) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.swift (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/pads/coasters/catsn.timeout =================================================================== --- trunk/tests/providers/pads/coasters/catsn.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,2 +0,0 @@ -7200 - Copied: branches/release-0.93/tests/providers/pads/coasters/catsn.timeout (from rev 5115, trunk/tests/providers/pads/coasters/catsn.timeout) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/catsn.timeout (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,2 @@ +7200 + Deleted: branches/release-0.93/tests/providers/pads/coasters/data.txt =================================================================== --- trunk/tests/providers/pads/coasters/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/coasters/data.txt (from rev 5115, trunk/tests/providers/pads/coasters/data.txt) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/data.txt (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/coasters/sites.template.xml =================================================================== --- trunk/tests/providers/pads/coasters/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,16 +0,0 @@ - - - - - 2 - 300 - 1 - 1 - 1 - 1 - fast - 5.99 - 10000 - _WORK_ - - Copied: branches/release-0.93/tests/providers/pads/coasters/sites.template.xml (from rev 5115, trunk/tests/providers/pads/coasters/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,16 @@ + + + + + 2 + 300 + 1 + 1 + 1 + 1 + fast + 5.99 + 10000 + _WORK_ + + Deleted: branches/release-0.93/tests/providers/pads/coasters/tc.template.data =================================================================== --- trunk/tests/providers/pads/coasters/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/coasters/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -PADS-coasters echo /bin/echo INSTALLED INTEL32::LINUX null -PADS-coasters cat /bin/cat INSTALLED INTEL32::LINUX null -PADS-coasters ls /bin/ls INSTALLED INTEL32::LINUX null -PADS-coasters grep /bin/grep INSTALLED INTEL32::LINUX null -PADS-coasters sort /bin/sort INSTALLED INTEL32::LINUX null -PADS-coasters paste /bin/paste INSTALLED INTEL32::LINUX null -PADS-coasters wc /usr/bin/wc INSTALLED INTEL32::LINUX null Copied: branches/release-0.93/tests/providers/pads/coasters/tc.template.data (from rev 5115, trunk/tests/providers/pads/coasters/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/pads/coasters/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/pads/coasters/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +PADS-coasters echo /bin/echo INSTALLED INTEL32::LINUX null +PADS-coasters cat /bin/cat INSTALLED INTEL32::LINUX null +PADS-coasters ls /bin/ls INSTALLED INTEL32::LINUX null +PADS-coasters grep /bin/grep INSTALLED INTEL32::LINUX null +PADS-coasters sort /bin/sort INSTALLED INTEL32::LINUX null +PADS-coasters paste /bin/paste INSTALLED INTEL32::LINUX null +PADS-coasters wc /usr/bin/wc INSTALLED INTEL32::LINUX null Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0002.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0003.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0004.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0005.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0006.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0007.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0008.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0009.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected (from rev 5115, trunk/tests/providers/pads/pbs/catsn.0010.out.expected) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh =================================================================== --- trunk/tests/providers/pads/pbs/catsn.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,3 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh (from rev 5115, trunk/tests/providers/pads/pbs/catsn.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,3 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.swift =================================================================== --- trunk/tests/providers/pads/pbs/catsn.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.swift (from rev 5115, trunk/tests/providers/pads/pbs/catsn.swift) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.swift (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/pads/pbs/catsn.timeout =================================================================== --- trunk/tests/providers/pads/pbs/catsn.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,2 +0,0 @@ -7200 - Copied: branches/release-0.93/tests/providers/pads/pbs/catsn.timeout (from rev 5115, trunk/tests/providers/pads/pbs/catsn.timeout) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/catsn.timeout (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/catsn.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,2 @@ +7200 + Deleted: branches/release-0.93/tests/providers/pads/pbs/data.txt =================================================================== --- trunk/tests/providers/pads/pbs/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/pads/pbs/data.txt (from rev 5115, trunk/tests/providers/pads/pbs/data.txt) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/data.txt (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/pads/pbs/sites.template.xml =================================================================== --- trunk/tests/providers/pads/pbs/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,16 +0,0 @@ - - - - - 2 - 300 - 1 - 1 - 1 - 1 - fast - 5.99 - 10000 - _WORK_ - - Copied: branches/release-0.93/tests/providers/pads/pbs/sites.template.xml (from rev 5115, trunk/tests/providers/pads/pbs/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,16 @@ + + + + + 2 + 300 + 1 + 1 + 1 + 1 + fast + 5.99 + 10000 + _WORK_ + + Deleted: branches/release-0.93/tests/providers/pads/pbs/tc.template.data =================================================================== --- trunk/tests/providers/pads/pbs/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/pads/pbs/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -PADS-pbs echo /bin/echo INSTALLED INTEL32::LINUX null -PADS-pbs cat /bin/cat INSTALLED INTEL32::LINUX null -PADS-pbs ls /bin/ls INSTALLED INTEL32::LINUX null -PADS-pbs grep /bin/grep INSTALLED INTEL32::LINUX null -PADS-pbs sort /bin/sort INSTALLED INTEL32::LINUX null -PADS-pbs paste /bin/paste INSTALLED INTEL32::LINUX null -PADS-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX null Copied: branches/release-0.93/tests/providers/pads/pbs/tc.template.data (from rev 5115, trunk/tests/providers/pads/pbs/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/pads/pbs/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/pads/pbs/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +PADS-pbs echo /bin/echo INSTALLED INTEL32::LINUX null +PADS-pbs cat /bin/cat INSTALLED INTEL32::LINUX null +PADS-pbs ls /bin/ls INSTALLED INTEL32::LINUX null +PADS-pbs grep /bin/grep INSTALLED INTEL32::LINUX null +PADS-pbs sort /bin/sort INSTALLED INTEL32::LINUX null +PADS-pbs paste /bin/paste INSTALLED INTEL32::LINUX null +PADS-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX null Deleted: branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh =================================================================== --- trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Copied: branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh (from rev 5115, trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Deleted: branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift =================================================================== --- trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift (from rev 5115, trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout =================================================================== --- trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -180 Copied: branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout (from rev 5115, trunk/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/001-catsn-queenbee-pbs.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +180 Deleted: branches/release-0.93/tests/providers/queenbee/pbs/README =================================================================== --- trunk/tests/providers/queenbee/pbs/README 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,2 +0,0 @@ -Queenbee uses an older version of bash which does not work with the nightly.sh by default -In order to run these tests, download and compile a newer version of bash from ftp.gnu.org/pub/bash Copied: branches/release-0.93/tests/providers/queenbee/pbs/README (from rev 5115, trunk/tests/providers/queenbee/pbs/README) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/README (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,2 @@ +Queenbee uses an older version of bash which does not work with the nightly.sh by default +In order to run these tests, download and compile a newer version of bash from ftp.gnu.org/pub/bash Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0001.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0002.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0002.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0003.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0003.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0004.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0004.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0005.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0005.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0006.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0006.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0007.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0007.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0008.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0008.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0009.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0009.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/queenbee/pbs/catsn.0010.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected (from rev 5115, trunk/tests/providers/queenbee/pbs/catsn.0010.out.expected) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/data.txt =================================================================== --- trunk/tests/providers/queenbee/pbs/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/queenbee/pbs/data.txt (from rev 5115, trunk/tests/providers/queenbee/pbs/data.txt) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/data.txt (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml =================================================================== --- trunk/tests/providers/queenbee/pbs/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,8 +0,0 @@ - - - - - 0 - _WORK_ - - Copied: branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml (from rev 5115, trunk/tests/providers/queenbee/pbs/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,8 @@ + + + + + 0 + _WORK_ + + Deleted: branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data =================================================================== --- trunk/tests/providers/queenbee/pbs/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -queenbee-pbs echo /bin/echo INSTALLED INTEL32::LINUX -queenbee-pbs cat /bin/cat INSTALLED INTEL32::LINUX -queenbee-pbs ls /bin/ls INSTALLED INTEL32::LINUX -queenbee-pbs grep /bin/grep INSTALLED INTEL32::LINUX -queenbee-pbs sort /bin/sort INSTALLED INTEL32::LINUX -queenbee-pbs paste /bin/paste INSTALLED INTEL32::LINUX -queenbee-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data (from rev 5115, trunk/tests/providers/queenbee/pbs/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +queenbee-pbs echo /bin/echo INSTALLED INTEL32::LINUX +queenbee-pbs cat /bin/cat INSTALLED INTEL32::LINUX +queenbee-pbs ls /bin/ls INSTALLED INTEL32::LINUX +queenbee-pbs grep /bin/grep INSTALLED INTEL32::LINUX +queenbee-pbs sort /bin/sort INSTALLED INTEL32::LINUX +queenbee-pbs paste /bin/paste INSTALLED INTEL32::LINUX +queenbee-pbs wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: branches/release-0.93/tests/providers/queenbee/pbs/title.txt =================================================================== --- trunk/tests/providers/queenbee/pbs/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/queenbee/pbs/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -QueenBee PBS Configuration Test Copied: branches/release-0.93/tests/providers/queenbee/pbs/title.txt (from rev 5115, trunk/tests/providers/queenbee/pbs/title.txt) =================================================================== --- branches/release-0.93/tests/providers/queenbee/pbs/title.txt (rev 0) +++ branches/release-0.93/tests/providers/queenbee/pbs/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +QueenBee PBS Configuration Test Deleted: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,12 +0,0 @@ -#!/bin/bash - -set -x - -for count in `seq --format "%04.f" 1 1 10` -do - [ -f catsn.$count.out ] || exit 1 - CONTENTS1=$( cat catsn.$count.out.expected ) - CONTENTS2=$( cat catsn.$count.out ) - [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 -done -exit 0 Copied: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh (from rev 5115, trunk/tests/providers/surveyor/001-catsn-surveyor.check.sh) =================================================================== --- branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh (rev 0) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.check.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,12 @@ +#!/bin/bash + +set -x + +for count in `seq --format "%04.f" 1 1 10` +do + [ -f catsn.$count.out ] || exit 1 + CONTENTS1=$( cat catsn.$count.out.expected ) + CONTENTS2=$( cat catsn.$count.out ) + [[ $CONTENTS1 == $CONTENTS2 ]] || exit 1 +done +exit 0 Deleted: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,4 +0,0 @@ -#!/bin/bash - -cp -v $GROUP/data.txt . || exit 1 -cp -v $GROUP/*expected . || exit 1 Copied: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh (from rev 5115, trunk/tests/providers/surveyor/001-catsn-surveyor.setup.sh) =================================================================== --- branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh (rev 0) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.setup.sh 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,4 @@ +#!/bin/bash + +cp -v $GROUP/data.txt . || exit 1 +cp -v $GROUP/*expected . || exit 1 Deleted: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.swift 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,15 +0,0 @@ -type file; - -app (file o) cat (file i) -{ - cat @i stdout=@o; -} - -string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; -string char[] = @strsplit(t, ""); - -file out[]; -foreach j in [1:@toint(@arg("n","10"))] { - file data<"data.txt">; - out[j] = cat(data); -} Copied: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift (from rev 5115, trunk/tests/providers/surveyor/001-catsn-surveyor.swift) =================================================================== --- branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift (rev 0) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.swift 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,15 @@ +type file; + +app (file o) cat (file i) +{ + cat @i stdout=@o; +} + +string t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +string char[] = @strsplit(t, ""); + +file out[]; +foreach j in [1:@toint(@arg("n","10"))] { + file data<"data.txt">; + out[j] = cat(data); +} Deleted: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout =================================================================== --- trunk/tests/providers/surveyor/001-catsn-surveyor.timeout 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -1000 Copied: branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout (from rev 5115, trunk/tests/providers/surveyor/001-catsn-surveyor.timeout) =================================================================== --- branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout (rev 0) +++ branches/release-0.93/tests/providers/surveyor/001-catsn-surveyor.timeout 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +1000 Deleted: branches/release-0.93/tests/providers/surveyor/README =================================================================== --- trunk/tests/providers/surveyor/README 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,3 +0,0 @@ -Be sure to set PROJECT and QUEUE. These settings worked for me, but unsure if they are universal -export PROJECT=HTCScienceApps -export QUEUE=default Copied: branches/release-0.93/tests/providers/surveyor/README (from rev 5115, trunk/tests/providers/surveyor/README) =================================================================== --- branches/release-0.93/tests/providers/surveyor/README (rev 0) +++ branches/release-0.93/tests/providers/surveyor/README 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,3 @@ +Be sure to set PROJECT and QUEUE. These settings worked for me, but unsure if they are universal +export PROJECT=HTCScienceApps +export QUEUE=default Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0001.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0001.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0001.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0002.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0002.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0002.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0003.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0003.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0003.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0004.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0004.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0004.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0005.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0005.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0005.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0006.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0006.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0006.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0007.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0007.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0007.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0008.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0008.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0008.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0009.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0009.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0009.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected =================================================================== --- trunk/tests/providers/surveyor/catsn.0010.out.expected 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected (from rev 5115, trunk/tests/providers/surveyor/catsn.0010.out.expected) =================================================================== --- branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected (rev 0) +++ branches/release-0.93/tests/providers/surveyor/catsn.0010.out.expected 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/data.txt =================================================================== --- trunk/tests/providers/surveyor/data.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Hello world Copied: branches/release-0.93/tests/providers/surveyor/data.txt (from rev 5115, trunk/tests/providers/surveyor/data.txt) =================================================================== --- branches/release-0.93/tests/providers/surveyor/data.txt (rev 0) +++ branches/release-0.93/tests/providers/surveyor/data.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Hello world Deleted: branches/release-0.93/tests/providers/surveyor/sites.template.xml =================================================================== --- trunk/tests/providers/surveyor/sites.template.xml 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,22 +0,0 @@ - - - - - - _HOST_ - _PROJECT_ - _QUEUE_ - zeptoos - true - 21 - 10000 - 1 - DEBUG - 1 - 900 - 64 - 64 - _WORK_ - - - Copied: branches/release-0.93/tests/providers/surveyor/sites.template.xml (from rev 5115, trunk/tests/providers/surveyor/sites.template.xml) =================================================================== --- branches/release-0.93/tests/providers/surveyor/sites.template.xml (rev 0) +++ branches/release-0.93/tests/providers/surveyor/sites.template.xml 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,22 @@ + + + + + + _HOST_ + _PROJECT_ + _QUEUE_ + zeptoos + true + 21 + 10000 + 1 + DEBUG + 1 + 900 + 64 + 64 + _WORK_ + + + Deleted: branches/release-0.93/tests/providers/surveyor/tc.template.data =================================================================== --- trunk/tests/providers/surveyor/tc.template.data 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -1,7 +0,0 @@ -surveyor echo /bin/echo INSTALLED INTEL32::LINUX -surveyor cat /bin/cat INSTALLED INTEL32::LINUX -surveyor ls /bin/ls INSTALLED INTEL32::LINUX -surveyor grep /bin/grep INSTALLED INTEL32::LINUX -surveyor sort /bin/sort INSTALLED INTEL32::LINUX -surveyor paste /bin/paste INSTALLED INTEL32::LINUX -surveyor wc /usr/bin/wc INSTALLED INTEL32::LINUX Copied: branches/release-0.93/tests/providers/surveyor/tc.template.data (from rev 5115, trunk/tests/providers/surveyor/tc.template.data) =================================================================== --- branches/release-0.93/tests/providers/surveyor/tc.template.data (rev 0) +++ branches/release-0.93/tests/providers/surveyor/tc.template.data 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1,7 @@ +surveyor echo /bin/echo INSTALLED INTEL32::LINUX +surveyor cat /bin/cat INSTALLED INTEL32::LINUX +surveyor ls /bin/ls INSTALLED INTEL32::LINUX +surveyor grep /bin/grep INSTALLED INTEL32::LINUX +surveyor sort /bin/sort INSTALLED INTEL32::LINUX +surveyor paste /bin/paste INSTALLED INTEL32::LINUX +surveyor wc /usr/bin/wc INSTALLED INTEL32::LINUX Deleted: branches/release-0.93/tests/providers/surveyor/title.txt =================================================================== --- trunk/tests/providers/surveyor/title.txt 2011-09-14 18:27:36 UTC (rev 5115) +++ branches/release-0.93/tests/providers/surveyor/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -1 +0,0 @@ -Surveyor Site Configuration Test Copied: branches/release-0.93/tests/providers/surveyor/title.txt (from rev 5115, trunk/tests/providers/surveyor/title.txt) =================================================================== --- branches/release-0.93/tests/providers/surveyor/title.txt (rev 0) +++ branches/release-0.93/tests/providers/surveyor/title.txt 2011-09-14 19:21:10 UTC (rev 5116) @@ -0,0 +1 @@ +Surveyor Site Configuration Test